ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4ZDkxN2EyLi5lYzMzOTVhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDkgKzEsMzkwNiBAQAotPT09IHJlbGVhc2UgMS42LjMgPT09Cis9PT0gcmVsZWFzZSAxLjcuOTEgPT09CiAKLTIwMTYtMDEtMjAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNvYXhpb24ubmV0PgorMjAxNi0wMy0xNSAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY29heGlvbi5uZXQ+CiAKIAkqIGNvbmZpZ3VyZS5hYzoKLQkgIHJlbGVhc2luZyAxLjYuMworCSAgcmVsZWFzaW5nIDEuNy45MQorCisyMDE2LTAzLTEyIDE1OjQ0OjU0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5jOgorCSAgdHNkZW11eDogYWRkIHZpZGVvL3gtaDI2NSB0byB0ZW1wbGF0ZSBjYXBzCisKKzIwMTYtMDMtMTIgMDM6MDA6MTQgKzExMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jOgorCSogZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYzoKKwkgIG1wZWd0czogRG9uJ3QgbGVhdmUgZnJlZWQgcHJvZ3JhbXMgaW4gdGhlIGhhc2ggdGFibGUKKwkgIFdoZW4gdGhlIHN1Yi1jbGFzcyBjbGFpbXMgYSBwcm9ncmFtIGZvciBsYXRlciBmcmVlaW5nLCBtYWtlCisJICBzdXJlIGl0J3Mgbm90IGxlZnQgaW4gdGhlIGhhc2ggdGFibGUsIG9yIGl0IGNhbiBjYXVzZSBjcmFzaGVzIG9uIHNodXRkb3duLgorCSAgTWFrZSBzdXJlIHRzZGVtdXggZnJlZXMgYW55IHByb2dyYW0gaXQgaGFzIGtlcHQgYXJvdW5kIGF0IHNodXRkb3duCisJICBpZiBpdCB3YXNuJ3QgZnJlZWQgYWxyZWFkeS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM1MDMKKworMjAxNi0wMy0xMSAxNzozNDowMyArMDIwMCAgU3JlZXJlbmogQmFsYWNoYW5kcmFuIDxzcmVlcmVuai5iYWxhY2hhbmRyYW5AaW50ZWwuY29tPgorCisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjVwYXJzZS5jOgorCSAgdmlkZW9wYXJzZXJzOiBoMjY1OiBGaXggc2VnZmF1bHQgd2hpbGUgdHJhbnNmb3JtaW5nIGhldmMgdG8gbmFsIGFsaWduZWQgYnl0ZXN0cmVhbQorCSAgQ3JlYXRlIHRlbXBvcmFyeSBQYXJzZUZyYW1lIGFuZCBjb3B5IHRoZSBuYWwgc2l6ZSBidWZmZXIgcmVnaW9uCisJICBmb3IgZWFjaCBuYWwgdW5pdCBsaWtlIHdlIGRpZCBmb3IgaDI2NC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM0OTQKKworMjAxNi0wMy0xMSAxMDowODoyOCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jYXVkaW9kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9lbmMuYzoKKwkgIGFtYzogQ29ycmVjdGx5IGhhbmRsZSBOVUxMIGlucHV0IGJ1ZmZlcnMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM0MDEKKworMjAxNi0wMy0xMSAxMDowMDozOSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0am5pdXRpbHMuYzoKKwkgIGFtY3ZpZGVvZGVjOiBnZXRPdXRwdXRCdWZmZXJzKCkgcmV0dXJucyBhIE5VTEwgYXJyYXkgd2hlbiBhIHN1cmZhY2Ugd2FzIGNvbmZpZ3VyZWQKKwkgIFNvIGRvbid0IGVycm9yIG91dCBpZiBpdCBkb2VzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzQwMQorCisyMDE2LTAzLTExIDAxOjQwOjM5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGVmZmVjdHMuYzoKKwkqIGV4dC9nbC9nc3RnbGVmZmVjdHMuaDoKKwkgIGdsZWZmZWN0czsgZ2l2ZSBlYWNoIGVmZmVjdCBhIHVuaXF1ZSBsb25nIG5hbWUgYW5kIGRlc2NyaXB0aW9uCisJICBHaXZlcyBhcHBsaWNhdGlvbnMgdGhhdCBzY3JhcGUgdGhlIGZhY3RvcnkgZGV0YWlscyBtb3JlIGRldGFpbGVkIGFuZCB1bmlxdWUKKwkgIGRldGFpbHMgb24gdGhlIGV4YWN0IGVsZW1lbnQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNTY2CisKKzIwMTYtMDMtMTAgMTc6NDY6MDUgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmM6CisJICBnbHNoYWRlcjogc29tZSBjb21wYXRpYmlsaXR5IGNoYW5nZXMgZm9yIEdMIDEuNAorCSAgR0wgMS40ICh3aXRoIEdMX0FSQl9zaGFkZXJfb2JqZWN0cykgZG9lc24ndCBoYXZlIGdsSXNQcm9ncmFtIG9yIGdsSXNTaGFkZXIKKwkgIGVxdWl2YWxlbnRzLiAgQXMgdGhleSBhcmUgc2ltcGx5IGFzc2VydGlvbnMsIHNraXAgdGhlbSB3aGVuIHRoZXJlIGlzbid0IGEKKwkgIHZhbGlkIGZ1bmN0aW9uIHBvaW50ZXIuCisKKzIwMTYtMDMtMTAgMDA6Mjk6NDEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsZmlsdGVyYXBwLmM6CisJICBnbGZpbHRlcmFwcDogdXBkYXRlIGZvciB0aGUgdXNlIG9mIHNoYWRlcnMKKwkgIEZpeGVzIGJsYWNrIG91dHB1dCB3aGVuIHBsYWNlZCBpbiBwaXBlbGluZXMgKHVzaW5nIHRoZSBkZWZhdWx0IGRyYXdpbmcpLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzM2NQorCisyMDE2LTAzLTEwIDAwOjI3OjUzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmlsdGVyLmg6CisJICBnbGZpbHRlcjogcmV0cmlldmUgdGhlIHNoYWRlciBhdHRyaWJ1dGVzIGZyb20gdGhlIEdMIHRocmVhZAorCSAgT3RoZXJ3aXNlIHdlIHdpbGwgcmVjZWl2ZSBib2d1cyB2YWx1ZXMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMzNjUKKworMjAxNi0wMy0xMCAwMDoyNDo0OCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmUvbWFpbi5jcHA6CisJKiB0ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmV5dXYvbWFpbi5jcHA6CisJICBnbC9leGFtcGxlcy9jdWJlKjogY2hvb3NlIG9wZW5nbCBieSBkZWZhdWx0CisJICBUaGUgZXhhbXBsZXMgZG9uJ3Qgd29yayB3aXRoIGFueSBvdGhlciBHTCBBUEkuCisJICBBbHNvIGZpeCB0aGUgeXV2IGV4YW1wbGUgdG8gbm90IHRyYW5zbGF0ZSB0aGUgY3ViZSBvdXQgb2YgdGhlIGNsaXBwaW5nIGFyZWEuCisKKzIwMTYtMDMtMTAgMDA6MjM6MTQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2Z4dGVzdC9meHRlc3QuYzoKKwkgIGdsL2V4YW1wbGVzL2Z4dGVzdDogYWRkIG5lZWRlZCBnbHVwbG9hZCB0byB0aGUgcGlwZWxpbmUKKwkgIEZpeGVzIGEgbmVnb3RpYXRpb24gZmFpbHVyZSBpbiB0aGUgZXhhbXBsZQorCisyMDE2LTAzLTA3IDEzOjA0OjA4ICswMTAwICBFZHdhcmQgSGVydmV5IDxlZHdhcmRAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdG1wZWd2aWRlb3BhcnNlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZXIuaDoKKwkqIGdzdC92aWRlb3BhcnNlcnMvZ3N0bXBlZ3ZpZGVvcGFyc2UuYzoKKwkgIG1wZWd2aWRlb3BhcnNlcjogSGFuZGxlIG5vbi1oaWVyYXJjaGljYWwgcHJvZmlsZXMgYWdhaW4KKwkgIFRoaXMgaXMgYSByZWdyZXNzaW9uIGZyb20gc2luY2UgbXBlZ3ZpZGVvcGFyc2VyIHdhcyBzd2l0Y2hlZCB0bworCSAgdXNlIHRoZSBjb2RlY3BhcnNpbmcgbGlicmFyeS4KKwkgIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIGhpZ2ggYml0IG9mIHRoZSBwcm9maWxlX2FuZF9sZXZlbCBpcyB1c2VkCisJICB0byBzcGVjaWZ5IG5vbi1oaWVyYXJjaGljYWwgcHJvZmlsZXMgYW5kIGxldmVscy4gVW5mb3J0dW5hdGVseSB3ZQorCSAgd2VyZSBkaXNjYXJkaW5nIHRoYXQgaW5mb3JtYXRpb24uCisJICBFeHBvc2UgdGhhdCBlc2NhcGUgYml0LCBhbmQgdXNlIGl0IGluIHRoZSBlbGVtZW50CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzMjIwCisKKzIwMTYtMDMtMDkgMTE6NTg6NDMgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSAgZ2xpbWFnZXNpbms6IEZpeCB3aW5kb3cgbWVtb3J5IGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMzNTYKKworMjAxNi0wMy0wOCAxMTo0MTo0OSArMDEwMCAgRWR3YXJkIEhlcnZleSA8ZWR3YXJkQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYzoKKwkgIHRzZGVtdXg6IERvbid0IHJlc2V0L3JlY2FsY3VsYXRlIHNlZ21lbnRzIHdpdGggYWNjdXJhdGUgc2Vla3MKKwkgIFdoZW4gZGVhbGluZyB3aXRoIGFjY3VyYXRlIHNlZWtzLCB3ZSBtdXN0IHNlbmQgb3V0IGEgc2VnbWVudCB3aGljaAorCSAgaXMgZXhhY3RseSB3aGF0IGlzIHJlcXVlc3RlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMyNjIKKworMjAxNi0wMy0wOCAwMjowNjo0NiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmM6CisJICBnbHZpZGVvbWl4ZXI6IHNpZ25hbCBjb250aW51YXRpb24gaW4gcmVzZXQKKwkgIFdlIHdhbnQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgcGFkcywgbm90IGp1c3QgdGhlIGZpcnN0IG9uZS4gIEZpeCBieSByZXR1cm5pbmcKKwkgIFRSVUUgaW4gdGhlIEdzdEFnZ3JlZ2F0b3JQYWRGb3JlYWNoRnVuYy4KKwkgIFJlbW92ZXMgYSBHU1RfSVNfR0xfQ09OVEVYVCgpIGFzc2VydGlvbiBvbiBzaHV0ZG93biB3aXRoID4yIGlucHV0cworCSAgdXNpbmcgZ3N0LWxhdW5jaC4KKworMjAxNi0wMy0wOCAwMDozNToyMiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkaXNwbGF5LmM6CisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsY29udGV4dC5jOgorCSAgZ2xkaXNwbGF5OiBtYWtlIHJlYWRkaW5nIHRoZSBzYW1lIGNvbnRleHQgYSBuby1vcAorCSAgV2l0aCBlMzhhZjIzMDQ0MjdkYjkwOGExNmJiYWUwZTYwYWE2OGJlMWJhNWI1IHJldHVybmluZyB0aGUgY29ycmVjdCBjb250ZXh0cywKKwkgIGdzdF9nbF9kaXNwbGF5X2FkZF9jb250ZXh0KCkgd2FzIHN1c2NlcHRpYmxlIHRvIGNhdXNpbmcgaW5maW50ZSBsb29wcyB3aGVuCisJICBhZGRpbmcgdGhlIHNhbWUgR3N0R0xDb250ZXh0IG1vcmUgdGhhbiBvbmNlLiAgRml4IGFuZCBhZGQgYSB0ZXN0IGZvcgorCSAgZ3N0X2dsX2Rpc3BsYXlfYWRkX2NvbnRleHQoKS4KKwkgIEZpeGVzIGdsdmlkZW9taXhlciBnc3QtdmFsaWRhdGUgdGVzdHMuCisKKzIwMTYtMDMtMDcgMDg6NTI6NTQgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbF9jb2NvYV9wcml2YXRlLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjb250ZXh0X2NvY29hLm06CisJKiBnc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2x3aW5kb3dfY29jb2EubToKKwkqIGdzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsY29udGV4dF9lYWdsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbGNvbnRleHRfZWFnbC5tOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2x3aW5kb3dfZWFnbC5tOgorCSAgUmV2ZXJ0ICJsaWJnc3RnbDogY29jb2EsIGVhZ2w6IGRvbid0IG1hcnNoYWwgR0wgY2FsbHMgdG8gdGhlIGNvbnRleHQgdGhyZWFkIgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCA3OTdkNjQxNWRmZDZlMTExZWZiMmNhYjU0NDk1OGE2N2NiZjIyYjE3LgorCSAgV2UncmUgZnJvemVuIGZvciAxLjguMCByZWxlYXNlIGFuZCB0aGlzIGNoYW5nZSBtaWdodCBoYXZlIGJpZ2dlciBpbXBhY3QuCisKKzIwMTYtMDMtMDcgMTY6MDM6MjUgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xfY29jb2FfcHJpdmF0ZS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY29udGV4dF9jb2NvYS5tOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsd2luZG93X2NvY29hLm06CisJKiBnc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbGNvbnRleHRfZWFnbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2xjb250ZXh0X2VhZ2wubToKKwkqIGdzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsd2luZG93X2VhZ2wubToKKwkgIGxpYmdzdGdsOiBjb2NvYSwgZWFnbDogZG9uJ3QgbWFyc2hhbCBHTCBjYWxscyB0byB0aGUgY29udGV4dCB0aHJlYWQKKwkgIEV4ZWN1dGUgR0wgY2FsbHMgd2l0aG91dCBtYXJzaGFsbGluZyB0aGVtIHRvIHRoZSBjb250ZXh0IHRocmVhZC4gSW4gdGhlIGNvY29hCisJICBhbmQgZWFnbCBiYWNrZW5kcyBjYWxsaW5nIGdzdF9nbF9jb250ZXh0X2FjdGl2YXRlIGlzIGNoZWFwIGFuZCB0aGVyZWZvcmUgY2FsbGluZworCSAgaXQgb24gdGhlIGN1cnJlbnQgdGhyZWFkIGFuZCBzZXJpYWxpemluZyBHTCBjYWxscyB3aXRoIGEgcGVyLWNvbnRleHQgbG9jayBpcworCSAgbW9yZSBlZmZpY2llbnQgKGZhc3RlciBhbmQgaGFzIGxlc3Mgb3ZlcmhlYWQpIHRoYW4gbWFyc2hhbGxpbmcgZXZlcnl0aGluZyB0byB0aGUKKwkgIGNvbnRleHQgdGhyZWFkLgorCSAgVGhpcyBvcHRpbWl6YXRpb24gY3V0cyBhIGxhcmdlIG92ZXJoZWFkIGluIGdfcG9sbCAoY29udGludW91c2x5IHdha2luZyB1cCB0aGUKKwkgIGNvbnRleHQgdGhyZWFkKSBhbmQgaW4gZ19tdXRleF8qL2dfY29uZF8qICh3YWl0aW5nIGZvciByZXN1bHRzIGZyb20gdGhlIGNvbnRleHQKKwkgIHRocmVhZCkuCisKKzIwMTYtMDMtMDUgMTc6MTY6MjQgKzAxMDAgIE1hcmsgTmF1d2VsYWVydHMgPG1uYXV3QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5jOgorCSAgZ2xkaXNwbGF5OiByZWFsbHkgcmV0cmlldmUgZ2xjb250ZXh0IGZvciBhIHNwZWNpZmljIHRocmVhZAorCSAgV2hlbiByZXF1ZXN0aW5nIGEgZ2xjb250ZXh0IChyZWdhcmRsZXNzIG9mIHRocmVhZCksIHRoZSByZXN1bHQgd2FzIGNvcnJlY3QuCisJICBIb3dldmVyLCB3aGVuIHJlcXVlc3RpbmcgY3VycmVudCBnbGNvbnRleHQgb24gYSBzcGVjaWZpYyB0aHJlYWQsIGl0IGNvdWxkCisJICBjb21lIHVwIHdpdGggYSBnbGNvbnRleHQgYWN0aXZlIG9uIGFub3RoZXIgdGhyZWFkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzE2OAorCisyMDE2LTAzLTA2IDE5OjM1OjM4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGFwaS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYXBpLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkZWJ1Zy5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5jOgorCSAgZ2w6IG1pc2MgZG9jcyBmaXhlcy9hZGRpdGlvbnMKKworMjAxNi0wMy0wNiAxOTozMjoyMSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZW51bXMuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmb3JtYXQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZvcm1hdC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jOgorCSAgZ2wqbWVtb3J5OiBkb2N1bWVudCBuZXcgZnVuY3Rpb25hbGl0eSBhbmQgb2JqZWN0cworCisyMDE2LTAzLTA2IDE5OjIzOjA2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlczoKKwkgIGRvY3M6IGFkZCBuZXcgR0wgYXBpIHRvIC50eXBlcyBmaWxlIGZvciB0eXBlL3NpZ25hbCBpbnRyb3NwZWN0aW9uCisKKzIwMTYtMDMtMDYgMTk6MjI6MzEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZG9jcy9saWJzL01ha2VmaWxlLmFtOgorCSAgZG9jczogaWdub3JlIHNvbWUgcHJpdmF0ZSBHTCBoZWFkZXJzCisKKzIwMTYtMDMtMDYgMTk6MTg6NTQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLWRvY3Muc2dtbDoKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy1zZWN0aW9ucy50eHQ6CisJICBkb2NzL2dsOiBhZGQgZ2wgZnVuY3Rpb25zL3N0cnVjdHMgZnJvbSAtdW51c2VkIGludG8gdGhlIGRvY3MKKworMjAxNi0wMy0wNSAxOTo0ODo0NSArMDEwMCAgTWFyayBOYXV3ZWxhZXJ0cyA8bW5hdXdAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmaWx0ZXIuYzoKKwkgIGdsZmlsdGVyOiBoYW5kbGUgc29tZSBtb3JlIHVuZml4ZWQgZmllbGRzIHdoZW4gZml4YXRpbmcgY2FwcworCisyMDE2LTAzLTA1IDExOjM4OjQ2ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9leGFtcGxlcy9ndGsvTWFrZWZpbGUuYW06CisJICBndGs6IGV4YW1wbGVzOiAjZGVmaW5lIEdTVF9VU0VfVU5TVEFCTEVfQVBJIGFuZCBsaW5rIHdpdGggWDExX0xJQlMKKwkgIFgxMV9MSUJTIGlzIG5lZWRlZCBmb3IgWEluaXRUaHJlYWRzKCkgYW5kIHdpdGhvdXQgdGhlICNkZWZpbmUgd2UgZ2V0CisJICB3YXJuaW5ncyBhYm91dCB0aGUgR0wgQVBJIGJlaW5nIHN0aWxsIHVuc3RhYmxlLgorCisyMDE2LTAzLTAyIDE5OjMyOjEzICswOTAwICBKdXN0aW4gS2ltIDxqdXN0aW4ua2ltQGNvbGxhYm9yYS5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWRjYW1lcmEuYzoKKwkgIGFuZHJvaWRtZWRpYTogUmVtb3ZlIHVudXNlZCBmaWxlCisJICBhaGNzcmMgaXMgcmVnaXN0ZXJlZCBieSBnc3RhbWMuYworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzA5OAorCisyMDE2LTAyLTE3IDA5OjM2OjE1IC0wODAwICBNYXJ0aW4gS2VsbHkgPG1hcnRpbkBzdXJyb3VuZC5pbz4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuYzoKKwkgIGFtYzogcHJvcGVybHkgZGVpbml0IHdoZW4gYWhjc3JjIHJlZ2lzdGVyIGZhaWxzCisJICBJbiB0aGUgYW5kcm9pZG1lZGlhIHBsdWdpbl9pbml0LCB3ZSBpbml0aWFsaXplIHZhcmlvdXMgcmVzb3VyY2VzIG9uIHRoZQorCSAgQW5kcm9pZCBkZXZpY2UuIElmIGFueXRoaW5nIGZhaWxzIGR1cmluZyB0aGlzIHNlcmllcyBvZiBpbml0aWFsaXphdGlvbnMsCisJICB3ZSBuZWVkIHRvIGRlaW5pdGlhbGl6ZSBhbnkgaW5pdGlhbGl6YXRpb25zIHRoYXQgYWxyZWFkeSBvY2N1cnJlZC4KKwkgIEhvd2V2ZXIsIHdlIGRvbid0IGRvIHNvIGlmIHdlIGZhaWwgdG8gcmVnaXN0ZXIgdGhlIGFoY3NyYyBlbGVtZW50LiBGaXgKKwkgIHRoaXMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzMDY1CisKKzIwMTYtMDItMTggMTE6MDA6NTAgLTA4MDAgIE1hcnRpbiBLZWxseSA8bWFydGluQHN1cnJvdW5kLmlvPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jOgorCSAgYWhjOiBjb3JyZWN0IGVycm9yIG1lc3NhZ2UKKwkgIFRoZSBlcnJvciBtZXNzYWdlIGlzIHNwZWNpZmljIHRvIG9ubHkgb25lIG9mIHRoZSBmYWlsdXJlIGNhc2VzIGFuZCBpcworCSAgbWlzbGVhZGluZyBpbiB0aGUgb3RoZXJzLiBDb3JyZWN0IGl0IHRvIGJlIG1vcmUgZ2VuZXJpYyBhbmQgY292ZXIgYWxsCisJICB0aGUgZmFpbHVyZSBjYXNlcy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMwNjUKKworMjAxNi0wMi0xNiAxMTo0NTowMSAtMDgwMCAgTWFydGluIEtlbGx5IDxtYXJ0aW5Ac3Vycm91bmQuaW8+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJICBhaGM6IHJlbW92ZSB1bm5lZWRlZCAjaW5jbHVkZSA8c3RkaW8uaD4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMwNjUKKworMjAxNi0wMi0xOCAxNjowMDoxOCAtMDgwMCAgTWFydGluIEtlbGx5IDxtYXJ0aW5Ac3Vycm91bmQuaW8+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YWhjc3JjLmM6CisJICBhaGM6IHR5cG8gZml4CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzMDY1CisKKzIwMTYtMDMtMDMgMjI6MTU6MDcgLTA1MDAgIEpvZSBHb3JzZSA8amhnb3JzZUBnbWFpbC5jb20+CisKKwkqIGV4dC9obHMvTWFrZWZpbGUuYW06CisJICBobHM6IEFkZCBPUEVOU1NMX0NGTEFHUyB0byBDRkxBR1MKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMwNzkKKworMjAxNi0wMy0wMyAxOTo0NTo0MyAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5LmM6CisJICBnbGJhc2VtZW1vcnk6IERvbid0IGNoYW5nZSBtYXhzaXplIGF0IHJ1bi10aW1lCisJICBNYXhzaXplIGlzIGluaXRpYWxpemVkIG9uY2UgYW5kIHNob3VsZCBuZXZlciBjaGFuZ2UuIEFsbG9jYXRpbmcgZGF0YQorCSAgc2hvdWxkIGhhdmUgbm8gaW1wYWN0IG9uIHRoZSBzZWxlY3RlZCBtYXggc2l6ZSBmb3IgdGhpcyBtZW1vcnkuIFRoaXMKKwkgIGNhdXNpbmcgbWVtb3J5IG1hcCBmYWlsdXJlIGFzIHRoZSBtYXhzaXplIHdvdWxkIGJlY29tZSBzbWFsbGVyIHRoZW4KKwkgIHNpemUuIFRoaXMgaGFwcGVuZWQgd2hlbiB1c2luZyBkaXJlY3QgcmVuZGVyaW5nIGluIGF2dmlkZGVjIG9uIEdMIHRoYXQKKwkgIGRvZXMgbm90IHN1cHBvcnQgUEJPIHRyYW5zZmVyLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzA0NQorCisyMDE2LTAzLTAxIDE4OjIyOjM3ICswMzAwICBTZXJnZXkgQm9yb3Zrb3YgPHNlcmdleS5ib3JvdmtvdkB3aXJlbG9hZC5uZXQ+CisKKwkqIGV4dC9xdC9xdGl0ZW0uY2M6CisJICBxbWw6IEZpeCBsZWFrIG9mIHRoZSBPcGVuR0wgY29udGV4dHMKKwkgIFtNYXR0aGV3IFdhdGVyc106IGFkZCBOVUxMIGNoZWNrcyBiZWZvcmUgdW5yZWZmaW5nCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyOTk5CisKKzIwMTYtMDItMjkgMTQ6MjQ6NDYgLTA4MDAgIFJleW5hbGRvIEguIFZlcmRlam8gUGlub2NoZXQgPHJleW5hbGRvQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3NpbmsuYzoKKwkgIHZrc2luazogZml4IHNwZWxsaW5nIG9uIGZhaWxlZCBfZW5zdXJlX2RhdGEoKSBlcnJvciBtZXNzYWdlCisKKzIwMTYtMDMtMDIgMjE6NDY6NDQgKzAyMDAgIFZpdmlhIE5pa29sYWlkb3UgPHZpdmlhQGFoaXJ1LmV1PgorCisJKiBleHQvbXBlZzJlbmMvZ3N0bXBlZzJlbmMuY2M6CisJICBtcGVnMmVuYzogUHJvdmlkZSBmb3JtYXQgYXMgYSBzdHJpbmcgaW5zdGVhZCBvZiBhIGNoYXIgdG8gZ3N0X3N0cnVjdHVyZV9uZXcKKwkgIFRoZSBmb3JtYXQgd2FzIHByb3ZpZGVkIGFzICdJNDIwJyBpbnN0ZWFkIG9mICJJNDIwIiwgY2F1c2luZyBhIGNyYXNoLgorCisyMDE1LTAxLTIwIDE2OjIwOjEwICswMTAwICBBdXLDqWxpZW4gWmFuZWxsaSA8YXVyZWxpZW4uemFuZWxsaUBwYXJyb3QuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFja2V0aXplci5jOgorCSAgbXBlZ3RzcGFja2V0aXplcjogaGFuZGxlIGVhcmx5IFBUUyBjb252ZXJzaW9uIHdoZW4gYSBncm91cCBoYXMgYmVlbiBmb3VuZAorCSAgSW4gc29tZSBjYXNlcywgdGhlIFBUUyBtaWdodCBiZSBzbWFsbGVyIHRoYW4gdGhlIGZpcnN0IG9ic2VydmVkIFBDUgorCSAgdmFsdWUgd2hpY2ggY2F1c2VzIGVsZW1lbnQgdG8gYXBwbHkgd3JhcGFyb3VuZCBsZWFkaW5nIHRvIGJvZ3VzCisJICB0aW1lc3RhbXAuIFRvIHNvbHZlIHRoaXMsIHdlIG9ubHkgYXBwbHkgaXQgaWYgdGhlIFBUUy1QQ1IgZGlmZmVyZW5jZSBpcworCSAgZ3JlYXRlciB0aGF0IDEgc2Vjb25kIHRvIGJlIHN1cmUgdGhhdCBpdCdzIGEgcmVhbCB3cmFwYXJvdW5kLgorCSAgTW9yZW92ZXIsIHVzaW5nIHVuc2lnbmVkIDMyIGJpdHMgdmFsdWVzIHRvIGhhbmRsZSB3cmFwb3ZlciBjb3VsZCBlbmQgdXAKKwkgIHdpdGggYm9ndXMgdmFsdWUsIHNvIGl0IHVzZSBwdHMgdmFsdWUgdG8gaGFuZGxlIGl0LgorCSAgQWxzbywgY29udmVydCBwY3IgdGltZSB0byBnc3QgdGltZSBiZWZvcmUgY29tcGFyaW5nIGl0IHRvIHB0cy4KKwkgIFNpbmNlIHJlZnBjciBpcyBleHByZXNzZWQgaW4gUENSIHRpbWUgYmFzZSB3aGlsZSBwdHMgaXMgZXhwcmVzc2VkIGluIEdTdHJlYW1lcgorCSAgdGltZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMyNTkKKworMjAxNi0wMy0wMiAxMDo0MToxNyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogRml4IFJFTU9WRV9TTkFQX0ZMQUdTKCkgbWFjcm8KKwkgICEoZmxhZzEgfCBmbGFnMiB8IGZsYWczKSBpcyBhbHdheXMgZXZhbHVhdGlvbiB0byAwLiB+IHdhcyBtZWFudCBoZXJlCisJICBpbnN0ZWFkIG9mICEuCisJICBDSUQgMTM1MjAzMi4KKworPT09IHJlbGVhc2UgMS43LjkwID09PQorCisyMDE2LTAzLTAxIDE4OjIzOjM2ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBDaGFuZ2VMb2c6CisJKiBORVdTOgorCSogUkVMRUFTRToKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5oaWVyYXJjaHk6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWNjdXJpcC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWRwY21kZWMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFkcGNtZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1haWZmLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hc2ZtdXgueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzc3JlbmRlci54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW9taXhlci54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW92aXN1YWxpemVycy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXV0b2NvbnZlcnQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJheWVyLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1iejIueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNhbWVyYWJpbi54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY2hyb21hcHJpbnQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvbG9yZWZmZWN0cy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY3VybC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGF0YXVyaXNyYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGVidWd1dGlsc2JhZC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHRzZGVjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmIueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2YnN1Ym92ZXJsYXkueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2ZHNwdS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmFhZC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmVzdGl2YWwueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZpZWxkYW5hbHlzaXMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZsaXRlLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVpMHIueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdhdWRpZWZmZWN0cy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2RwLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdtZWRlYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3NtLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RzaXJlbi54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taGxzLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pZDN0YWcueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWludGVyLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlcmxhY2UueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWpwZWdmb3JtYXQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1pbWljLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tbXMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1vZHBsdWcueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWcyZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVncHNkZW11eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzbXV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNkZW11eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzbXV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGxleC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb2ZhLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuYWwueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBjYXBwYXJzZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcG5tLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yYXdwYXJzZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVtb3Zlc2lsZW5jZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVzaW5kdmQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJmYnNyYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnRtcC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2Nocm8ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNkcC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2VnbWVudGNsaXAueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNobS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc21vb3RoLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zb3VuZHRvdWNoLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGFuZHNwLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGVlZC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3ViZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb3BhcnNlcnNiYWQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZvYWFjZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FtcndiZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13YXlsYW5kc2luay54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4teTRtZGVjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi16YmFyLnhtbDoKKwkqIGdzdC1wbHVnaW5zLWJhZC5kb2FwOgorCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgorCSAgUmVsZWFzZSAxLjcuOTAKKworMjAxNi0wMy0wMSAxNzoxMDoyOCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogcG8vYWYucG86CisJKiBwby9hei5wbzoKKwkqIHBvL2NhLnBvOgorCSogcG8vY3MucG86CisJKiBwby9kYS5wbzoKKwkqIHBvL2RlLnBvOgorCSogcG8vZWwucG86CisJKiBwby9lbl9HQi5wbzoKKwkqIHBvL2VvLnBvOgorCSogcG8vZXMucG86CisJKiBwby9ldS5wbzoKKwkqIHBvL2ZpLnBvOgorCSogcG8vZ2wucG86CisJKiBwby9oci5wbzoKKwkqIHBvL2h1LnBvOgorCSogcG8vaWQucG86CisJKiBwby9pdC5wbzoKKwkqIHBvL2phLnBvOgorCSogcG8va3kucG86CisJKiBwby9sdC5wbzoKKwkqIHBvL2x2LnBvOgorCSogcG8vbXQucG86CisJKiBwby9uYi5wbzoKKwkqIHBvL29yLnBvOgorCSogcG8vcGwucG86CisJKiBwby9wdF9CUi5wbzoKKwkqIHBvL3JvLnBvOgorCSogcG8vcnUucG86CisJKiBwby9zay5wbzoKKwkqIHBvL3NsLnBvOgorCSogcG8vc3EucG86CisJKiBwby9zci5wbzoKKwkqIHBvL3N2LnBvOgorCSogcG8vdHIucG86CisJKiBwby91ay5wbzoKKwkqIHBvL3ZpLnBvOgorCSogcG8vemhfQ04ucG86CisJICBVcGRhdGUgLnBvIGZpbGVzCisKKzIwMTYtMDMtMDEgMTY6NTM6NTAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHBvL2JnLnBvOgorCSogcG8vZnIucG86CisJKiBwby9ubC5wbzoKKwkgIHBvOiBVcGRhdGUgdHJhbnNsYXRpb25zCisKKzIwMTYtMDItMjkgMTI6MzU6NTggKzAyMDAgIFNyZWVyZW5qIEJhbGFjaGFuZHJhbiA8c3JlZXJlbmouYmFsYWNoYW5kcmFuQGludGVsLmNvbT4KKworCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY0cGFyc2UuYzoKKwkgIHZpZGVvcGFyc2VyczogaDI2NDogRGlzYWJsZSBwYXNzdGhvcnVnaCBtb2RlIGVuYWJsaW5nCisJICBFbmFibGluZyBwYXNzdGhvcnVnaCBtb2RlIGlzIGNhdXNpbmcgbXVsdGlwbGUgaXNzdWU6CisJICBGb3IgbmFsIGFsaWduZWQgbXVsdGlyZXNvbHV0b24gc3RyZWFtcywgcGFzc3Rocm91Z2ggbW9kZQorCSAgbWFrZSBoMjY0cGFyc2UgdW5hYmxlIHRvIGFkdmVydGlzZSB0aGUgbmV3IHJlc291bHRpb25zLgorCSAgQWxzbyBjYXVzaW5nIGlzc3VlcyB3aGlsZSBwYXJzaW5nIE1WQyBzdHJlYW1zIHdoaWNoIGhhdmUgdHdvCisJICBzZXBhcmF0ZSBsYXllcnMgKGJhc2UtdmlldyBhbmQgbm9uLWJhc2UtdmlldykuCisJICBUaGlzIGZpeCBpcyBvbmx5IGEgdGVtcG9yYXJ5IHdvcmthcm91bmQuCisJICBGb3IgTVZDLCBwcm9wZXIgZml4ZXMgbmVlZGVkIGluIG1hbnkgcGxhY2VzOgorCSAgKGhhbmRsZSBwcmVmaXggbmFsIHVuaXQsIGhhbmRsZSBub24tYmFzZS12aWV3IHNsaWNlIG5hbCBleHRlbnNpb24sCisJICBmaXggdGhlIHBpY3R1cmVfc3RhcnQgZGV0ZWN0aW9uIGZvciBtdWx0aS1sYXllci1tdmMgc3RyZWFtcyBldGMpCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4NjU2CisKKzIwMTYtMDItMjkgMTE6NTM6MTkgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9zZHAvZ3N0c2RwZGVtdXguYzoKKwkgIHNkcGRlbXV4OiBTZXQgY2FwcyB0byBhcHBsaWNhdGlvbi94LXJ0cCBpbnN0ZWFkIG9mIGFwcGxpY2F0aW9uL3gtdW5rbm93biBhcyByZXR1cm5lZCBieSB0aGUgU0RQIGhlbHBlcnMKKwkgIFRoZSBTRFAgaGVscGVycyBjYW4ndCBrbm93IGlmIHRoaXMgaXMgZ29pbmcgdG8gYmUgUlRQLCBTUlRQLCBvciAuLi4uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyODYwCisKKzIwMTYtMDItMjkgMTE6NTE6MjggKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9zZHAvZ3N0c2RwZGVtdXguYzoKKwkgIHNkcGRlbXV4OiBBZGQgcGFkcyB3aXRoIHRoZSBjb3JyZWN0IG5hbWVzIGluIGNhc2UgYW4gcnRwYmluIGlzIHVzZWQKKwkgIFRoZXkncmUgc3VwcG9zZWQgdG8gYmUgc3RyZWFtXyV1IGFuZCBub3QgcmVjdl9ydHBfc3JjXyV1XyV1XyV1LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2Mjg2MAorCisyMDE2LTAyLTI5IDEwOjM4OjMyICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5jOgorCSogZXh0L3Z1bGthbi92a3V0aWxzLmM6CisJICB2a3N3YXBwZXIvdmt1dGlsczogRml4IGdlcnJvciBtZW1vcnkgbGVhaworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2Mjg0MgorCisyMDE2LTAyLTI5IDEwOjM3OjExICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmM6CisJICB2a2RldmljZTogRml4IGR1cGxpY2F0ZSBhc3NpZ25tZW50IG9mIHF1ZXVlIHZhcmlhYmxlCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyODQyCisKKzIwMTYtMDItMjkgMTA6MzM6NDUgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtzaW5rLmM6CisJICB2a3Npbms6IEZpeCBHRXJyb3IgbWVtb3J5IGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI4NDIKKworMjAxNi0wMi0yOCAxNDowNjoxNCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogd2luMzIvY29tbW9uL2xpYmdzdGdsLmRlZjoKKwkgIHdpbjMyOiB1cGRhdGUgZXhwb3J0cyBmb3IgbmV3IGxpYmdzdGdsIGZ1bmN0aW9uCisKKzIwMTYtMDItMjggMTA6MTI6MDEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkgIGFtY3ZpZGVvZGVjOiBXaGVuIG91dHB1dHRpbmcgb24gYSBzdXJmYWNlLCBhY2NlcHQgYWxsIGNvbG9yIGZvcm1hdHMKKwkgIFdlIGRvbid0IGhhdmUgdG8gdW5kZXJzdGFuZCB0aGVtLCB3ZSBoYW5kbGUgdGhlbSBhcyBhIEdMIHRleHR1cmUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNzkyCisKKzIwMTYtMDItMjYgMTg6MTc6MzcgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogaGFuZGxlIHNuYXAgc2Vla2luZyB3aXRob3V0IHNldHRpbmcgYW55IHBvc2l0aW9uCisJICBXaGVuIHRoZSBzdGFydF90eXBlIGlzIEdTVF9TRUVLX1RZUEVfTk9ORSBmb3IgYSBmb3J3YXJkIHNlZWsKKwkgIChvciBzdG9wX3R5cGUgZm9yIGEgcmV2ZXJzZSkgaXMgbm90IHNldCBvbiBhIHNuYXAgc2Vla2luZyBvcGVyYXRpb24sCisJICB0aGUgZWxlbWVudCBzaG91bGQgdXNlIHRoZSBjdXJyZW50IHBvc2l0aW9uIGFuZCB0aGVuIHNuYXAgYXMgcmVxdWVzdGVkLgorCSAgQWxzbyBmaXhlcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGNvbXBsYWludCBieSBjbGFuZyBhYm91dAorCSAgJ3RzJyB2YXJpYWJsZS4KKworMjAxNi0wMi0yNiAxNzozMTo0NCAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIGRhc2hkZW11eDogc3luYyBpbmRleCBhbmQgdGhlIHNlbGVjdGVkIGNodW5rIHdoZW4gc2Vla2luZworCSAgT3RoZXJ3aXNlIHRoZSBjaHVuayBzZWxlY3RlZCBpc24ndCBtYXRjaGVkIHRvIHRoZSBpbmRleCBhbmQKKwkgIHRoZSB0aW1pbmcgd2lsbCBiZSBkaWZmZXJlbnQsIGNhdXNpbmcgaXQgdG8gYWN0dWFsbHkgc3RhcnQKKwkgIGZyb20gYSBkaWZmZXJlbnQgcG9zaXRpb24KKworMjAxNi0wMi0yNiAxMjo0MToxMyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogY29tbW9uOgorCSAgQXV0b21hdGljIHVwZGF0ZSBvZiBjb21tb24gc3VibW9kdWxlCisJICBGcm9tIGEyNTM5NzQgdG8gNmYyZDIwOQorCisyMDE2LTAyLTE3IDIwOjEzOjIxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuYzoKKwkgIGVnbGltYWdlbWVtb3J5OiBhZGQgY29tcGF0aWJpbGl0eSBkZWZpbml0aW9ucyBmb3IgRUdMIGRtYWJ1ZgorCSAgZS5nLiB0aGUgUlBpIGRvZXNuJ3QgaGF2ZSB0aGVtIGRlZmluZWQKKworMjAxNi0wMi0yNiAwMDozNTozMCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogTWFrZWZpbGUuYW06CisJKiBleHQvb3B1cy9NYWtlZmlsZS5hbToKKwkqIGV4dC9vcHVzL2dzdG9wdXMuYzoKKwkgIG9wdXM6IHJlbmFtZSBwbHVnaW4gdG8gb3B1c3BhcnNlIGZvciB0aGUgdGltZSBiZWluZworCSAgVW50aWwgd2UgZml4IGl0IHVwIGFuZCBnZXQgcmlkIG9mIHRoZSBvcHVzIGRlcGVuZGVuY3kgYW5kCisJICBtb3ZlIGl0IGVsc2V3aGVyZSB0b28uCisKKzIwMTYtMDItMTkgMDA6Mzg6MzMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kb2NzLnNnbWw6CisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2VjdGlvbnMudHh0OgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXMueG1sOgorCSogZXh0L29wdXMvTWFrZWZpbGUuYW06CisJKiBleHQvb3B1cy9nc3RvcHVzLmM6CisJKiBleHQvb3B1cy9nc3RvcHVzY29tbW9uLmM6CisJKiBleHQvb3B1cy9nc3RvcHVzY29tbW9uLmg6CisJKiBleHQvb3B1cy9nc3RvcHVzZGVjLmM6CisJKiBleHQvb3B1cy9nc3RvcHVzZGVjLmg6CisJKiBleHQvb3B1cy9nc3RvcHVzZW5jLmM6CisJKiBleHQvb3B1cy9nc3RvcHVzZW5jLmg6CisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzLy5naXRpZ25vcmU6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9vcHVzLmM6CisJICBvcHVzOiByZW1vdmUgT3B1cyBlbmNvZGVyL2RlY29kZXIsIG1vdmVkIHRvIC1iYXNlCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2MjgyCisKKzIwMTYtMDItMjYgMDg6MzQ6MTEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY2FvcGVuZ2xsYXllci5tOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5oOgorCSAgZ2xjb250ZXh0OiBhZGQgYSBtZXRob2QgdG8gYWRkIGEgY29udGV4dCB0byBhbm90aGVyIHNoYXJlIGdyb3VwCisJICBJbnRlbmRlZCBmb3IgdXNlIHdpdGggd3JhcHBlZCBjb250ZXh0cyB0aGF0IGFyZSBjcmVhdGVkIHNoYXJlZCB3aXRoIGdzdCdzCisJICBnbCBjb250ZXh0cyBpbiBvcmRlciB0byBtYW5hZ2UgdGhlIGludGVybmFsIHNoYXJlZ3JvdXAgc3RhdGUgY29ycmVjdGx5LgorCSAgZS5nLiB3aXRoIGNhb3BlbmdsbGF5ZXIgKHdoaWNoIGlzIHVzZWQgaW4gZ2xpbWFnZXNpbmsgYW5kIGNhb3BlbmdsbGF5ZXJzaW5rCisJICBvbiBPUyBYKSwgd2UgY3JlYXRlIGEgQ0dMIGNvbnRleHQgZnJvbSB0aGUgZ3N0IGNvbnRleHQgYW5kIHRoZSBzaGFyaW5nIHN0YXRlCisJICB3YXMgbm90IGJlaW5nIGNvcnJlY3RseSBzZXQgb24gZWl0aGVyIEdMIGNvbnRleHQgYW5kIGdzdF9nbF9jb250ZXh0X2lzX3NoYXJlZCgpCisJICB3YXMgYWx3YXlzIHJldHVybmluZyBGQUxTRS4KKwkgIFdpdGggMTFmYjRmZmY4MGI2M2I5ZDY3YTczMWQ0YmIyMzhiNmMwYTI5ZDc3NCBvbmx5IGZsdXNoaW5nIHdpdGggbXVsdGlwbGUKKwkgIHNoYXJlZCBjb250ZXh0cywgdGhlIHJlcXVpcmVkIGZsdXNoIHdhcyBub3Qgb2NjdXJpbmcgY2F1c2luZyBzY3JlZW4KKwkgIGNvcnJ1cHRpb24gb3Igc3R1dHRlcmluZy4KKwkgIE5vdGU6IHRoaXMgZGlkbid0IGFmZmVjdCBHU1RfR0xfQVBJPW9wZW5nbCBwaXBlbGluZXMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI2MjAKKworMjAxNi0wMi0xNyAxNToyMDo0NyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRvY3Muc2dtbDoKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zZWN0aW9ucy50eHQ6CisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuaGllcmFyY2h5OgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXMueG1sOgorCSogZXh0L29wdXMvTWFrZWZpbGUuYW06CisJKiBleHQvb3B1cy9nc3RvcHVzLmM6CisJKiBleHQvb3B1cy9nc3RydHBvcHVzZGVwYXkuYzoKKwkqIGV4dC9vcHVzL2dzdHJ0cG9wdXNkZXBheS5oOgorCSogZXh0L29wdXMvZ3N0cnRwb3B1c3BheS5jOgorCSogZXh0L29wdXMvZ3N0cnRwb3B1c3BheS5oOgorCSAgb3B1czogcmVtb3ZlIE9wdXMgUlRQIGVsZW1lbnRzLCB0aGV5IGhhdmUgbW92ZWQgdG8gLWdvb2QKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYyODIKKworMjAxNi0wMS0xOCAwODo1MDozNCArMDAwMCAgQWxleCBBc2hsZXkgPGFsZXguYXNobGV5QHlvdXZpZXcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9obHNfZGVtdXguYzoKKwkgIGhsc2RlbXV4OiB0ZXN0czogcGFzcyB0ZXN0IG5hbWUgaW50byB0ZXN0IHNldHVwIGZ1bmN0aW9uCisJICBBbGwgaGxzZGVtdXggdGVzdHMgY3JlYXRlIGEgR3N0U3RydWN0dXJlIGNhbGxlZCAic3RhdGUiIHRoYXQgY2FuIGJlIHVzZWQKKwkgIGJ5IHRlc3QgY2FzZXMgdG8gc3RvcmUgaW5mb3JtYXRpb24gZHVyaW5nIGEgdGVzdC4gVGhlIG5hbWUgb2YgdGhpcworCSAgc3RydWN0dXJlIGlzIGFyYml0cmFyeS4gV2hlbiB0aGUgY29kZSB3YXMgd3JpdHRlbiwgdGhlIGludGVudGlvbiB3YXMKKwkgIHRvIHVzZSB0aGUgbmFtZSBvZiB0aGUgdGVzdCwgdG8gYWlkIGRlYnVnZ2luZy4gSG93ZXZlciwgZHVyaW5nCisJICBkZXZlbG9wbWVudCB0aGlzIHdhcyBsb3N0LCBzbyB0aGF0IHRoZSBzdGF0ZSBHc3RTdHJ1Y3R1cmUgaXMgYWx3YXlzCisJICBnaXZlbiB0aGUgbmFtZSAic2V0dXBfdGVzdF92YXJpYWJsZXMiLgorCSAgVGhpcyBjb21taXQgY2hhbmdlcyB0aGlzIHNvIHRoYXQgdGhlIG5hbWUgb2YgdGhlIHRlc3QgaXMgdXNlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI2ODQKKworMjAxNi0wMi0yMyAxMjo0MjoxOSAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9jb21wb3NpdG9yLmM6CisJICB0ZXN0czogY29tcG9zaXRvcjogZHJvcCBzcGVjaWFsIGNhc2UgZm9yIHZhbGdyaW5kIHRpbWVvdXQKKwkgIFRoZSBkZWZhdWx0IG9uZSBpcyA2IG1pbnV0ZXMsIHRoZSB0ZXN0IHdhcyB1c2luZyA1IG1pbnV0ZXMgc28ganVzdAorCSAgcmVzb3J0IHRvIHVzaW5nIHRoZSBkZWZhdWx0LgorCSAgRm9yIHRoZSBub24tdmFsZ3JpbmQgdGVzdCBhbHNvIHVzZSB0aGUgZGVmYXVsdCAyMCBzZWNzIGluc3RlYWQgb2YKKwkgIHJlZHVjaW5nIGl0IHRvIDZzLiBObyByZWFsIHJlYXNvbiB0byBzZXQgYSBjdXN0b20gdmFsdWUgaGVyZS4KKworMjAxNi0wMi0yMyAxMjoxNzo1OSAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9jb21wb3NpdG9yLmM6CisJICB0ZXN0czogY29tcG9zaXRvcjogYWRkIHRlc3RzIGZvciBjYXBzIHF1ZXJpZXMKKwkgIFZlcmlmaWVzIHRoYXQgcHJvcGVyIGNhcHMgYXJlIHJldHVybmVkIGJhc2VkIG9uIHdoYXQgZG93bnN0cmVhbQorCSAgcmVzdHJpY3RzLgorCisyMDE2LTAyLTE4IDEwOjU3OjUxIC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2FnZ3JlZ2F0b3IuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2NvbXBvc2l0b3IuYzoKKwkgIHZpZGVvYWdncmVnYXRvcjogZml4IGNhcHMgcXVlcmllcyB0byBhbGxvdyBwcm9wZXIgcmVuZWdvdGlhdGlvbgorCSAgV2hlbiBjYXBzIGFyZSBhbHJlYWR5IG5lZ290aWF0ZWQgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvCisJICBzZWxlY3QgZm9ybWF0cyBvdGhlciB0aGFuIHRoZSBvbmUgdGhhdCB3YXMgbmVnb3RpYXRlZC4gSWYgZG93bnN0cmVhbQorCSAgYWxsb3dzIGFscGhhIHZpZGVvIGNhcHMgYW5kIGl0IGhhcyBhbHJlYWR5IG5lZ290aWF0ZWQgdG8gYSBub24tYWxwaGEKKwkgIGZvcm1hdCwgY2FwcyBxdWVyaWVzIHNob3VsZCBzdGlsbCByZXR1cm4gdGhlIGFscGhhIGNhcHMgYXMgYSBwb3NzaWJsZQorCSAgZm9ybWF0IGFzIGNhcHMgcmVuZWdvdGlhdGlvbiBjYW4gaGFwcGVuLgorCSAgSW5jbHVkZXMgdGVzdHMgKGZvciBjb21wb3NpdG9yKSB0byBjaGVjayB0aGF0IGNhcHMgcXVlcmllcyBkb25lIGFmdGVyCisJICBhIGNhcHMgaGFzIGJlZW4gbmVnb3RpYXRlZCByZXR1cm5zIGNvbXBsZXRlIHJlc3VsdHMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2MTAKKworMjAxNi0wMi0yNCAxNzowNzoxNyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkgIHZ0ZGVjOiBOZWdvdGlhdGUgdGhlIGRlY29kZXIgaW4gc2V0X2Zvcm1hdCgpIGFscmVhZHkKKwkgIERvbid0IHdhaXQgdW50aWwgbGF0ZXIsIHdlIHdhbnQgdG8ga25vdyBoZXJlIGlmIHRoZSBjb2RlYyBjYW4gYmUgb3BlbmVkIG9yIG5vdAorCSAgZm9yIHRoZSByZXF1ZXN0ZWQgZm9ybWF0LiBUaGlzIHdhcyByZW1vdmVkIChhY2NpZGVudGlhbGx5PykgYnkKKwkgIDExOWUwOWVhYzMxNWY3OWFjMmNmNDViNDQ0MWFkMWQ5MzIxMzA2MTQKKwkgIFdpdGhvdXQgdGhpcyBkZWNvZGViaW4gaGFzIG5vIHdheSB0byBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgZGVjb2RlciBpZiB0aGlzIG9uZQorCSAgZG9lcyBub3Qgd29yay4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI2MTMKKworMjAxNi0wMi0yNSAxMTozNDo0MCArMDIwMCAgSm9lIEdvcnNlIDxqaGdvcnNlQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvYXZmdmlkZW9zcmMubToKKwkgIGF2ZnZpZGVvc3JjOiBGcmFtZSBkdXJhdGlvbnMgYXMgQ1RpbWUgdG8gdGhlIEFQSSwgbm90IGRvdWJsZQorCSAgTmV3ZXIgaU9TIHNlZW1zIHRvIGF1dG9tYXRpY2FsbHkgY29udmVydCwgb2xkZXIgaU9TL09TWCBqdXN0IGNyYXNoZXMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNTc1CisKKzIwMTYtMDItMjQgMjM6NDg6MTkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL252ZW5jL2dzdG52YmFzZWVuYy5jOgorCSAgbnZlbmM6IHJlbGVhc2UgdGhlIGZyYW1lcyBhbmQgIGxpc3Qgd2hlbiBzZWFyY2hpbmcgZm9yIGFuIG91dHB1dCBidWZmZXIKKwkgIEZpeGVzIGEgbWFzc2l2ZSBsZWFrIGluOgorCSAgdmlkZW90ZXN0c3JjICEgbnZoMjY0ZW5jICEgZmFrZXNpbmsKKworMjAxNi0wMi0yMyAyMzoxMDoyMCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvcXQvZ3N0cXRzaW5rLmNjOgorCSogZXh0L3F0L3F0aXRlbS5jYzoKKwkgIHF0OiB1c2UgYSBzdGF0aWNfY2FzdCBpbnN0ZWFkIG9mIGR5bmFtaWMgb25lCisJICBUaGUgZHluYW1pY19jYXN0IGlzIGEgbGl0dGxlIGJ1dCBvZiBvdmVya2lsbCBhcyB0aGUgYXBwIHdpbGwgc3RpbGwgY3Jhc2ggaWYgaXQKKwkgIGZhaWxzIGluIHRoZSBsYXRlciBnX2Fzc2VydC4KKwkgIEFsbG93cyBjb21waWxhdGlvbiB3aXRoIC1mbm8tcnR0aQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjUyNgorCisyMDE2LTAyLTI0IDEwOjQ1OjE3ICswODAwICBXYW5nIFhpbi15dSAo546L5piV5a6HKSA8Y29taWNmYW5zNDRAZ21haWwuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xtb3NhaWMuYzoKKwkqIGV4dC9nbC9nc3RnbHN0ZXJlb21peC5jOgorCSogZXh0L2dsL2dzdGdsdmlkZW9taXhlci5jOgorCSAgZ2xtaXhlcjogaXRlcmF0b3IgZGlkbid0IGFkdmFuY2UgaW4gY29udGludWUgc3RhdGVtZW50CisJICBMZWFkaW5nIHRvIGEgZGVhZGxvY2suCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwODczCisKKzIwMTYtMDItMjMgMTg6MTc6NDIgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9kYXRhdXJpc3JjL2dzdGRhdGF1cmlzcmMuYzoKKwkgIGRhdGF1cmlzcmM6IERvbid0IGFzc3VtZSB0aGF0IGdldF9jdXJyZW50X2NhcHMoKSByZXR1cm5zIG5vbi1OVUxMIGNhcHMgYWZ0ZXIgaGFzX2N1cnJlbnRfY2FwcygpCisJICBSZW1vdmUgY2FsbHMgdG8gZ3N0X3BhZF9oYXNfY3VycmVudF9jYXBzKCkgd2hpY2ggdGhlbiBnbyBvbiB0byBjYWxsCisJICBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMoKSBhcyB0aGUgY2FwcyBjYW4gZ28gdG8gTlVMTCBpbiBiZXR3ZWVuLiBJbnN0ZWFkIGp1c3QKKwkgIHVzZSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMoKSBhbmQgY2hlY2sgZm9yIE5VTEwuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NTM5CisKKzIwMTYtMDItMjMgMTg6MTM6MzcgKzAyMDAgIERhdmUgQ3JhaWcgPGRjcmFpZ0BicmlnaHRzaWduLmJpej4KKworCSogZXh0L29wZW5jdi9nc3RkaXNwYXJpdHkuY3BwOgorCSAgZGlzcGFyaXR5OiBEb24ndCBhc3N1bWUgdGhhdCBnZXRfY3VycmVudF9jYXBzKCkgcmV0dXJucyBub24tTlVMTCBjYXBzIGFmdGVyIGhhc19jdXJyZW50X2NhcHMoKQorCSAgUmVtb3ZlIGNhbGxzIHRvIGdzdF9wYWRfaGFzX2N1cnJlbnRfY2FwcygpIHdoaWNoIHRoZW4gZ28gb24gdG8gY2FsbAorCSAgZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzKCkgYXMgdGhlIGNhcHMgY2FuIGdvIHRvIE5VTEwgaW4gYmV0d2Vlbi4gSW5zdGVhZCBqdXN0CisJICB1c2UgZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzKCkgYW5kIGNoZWNrIGZvciBOVUxMLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTUzOQorCisyMDE2LTAyLTIzIDEwOjQ5OjQwICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IGNvcnJlY3RseSBoYW5kbGUgYW4gSFRUUC1YU0RBVEUgdGhhdCBpcyBleGFjdGx5IHRoZSBzaXplIG9mIHRoZSBkYXRlIHN0cmluZworCSAgVGhlIGNvZGUgaW4gdGhlIGdzdF9kYXNoX2RlbXV4X3BhcnNlX2h0dHBfeHNkYXRlKCkgd2FzIHRyeWluZyB0bworCSAgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBzdHJpbmcgaXMgbm90IG51bGwgdGVybWluYXRlZCBieSByZXNpemluZworCSAgdGhlIGJ1ZmZlciBhbmQgYXBwZW5kaW5nIGEgemVybyBieXRlLiBUaGlzIGRvZXMgbm90IHdvcmsgaWYgdGhlIGJ1ZmZlcgorCSAgaXMgZXhhY3RseSB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgYmVjYXVzZSB0aGUgZ3N0X2J1ZmZlcl9yZXNpemUoKQorCSAgZnVuY3Rpb24gZG9lcyBub3QgcmUtYWxsb2NhdGUgdGhlIGJ1ZmZlciwgaXQganVzdCBjaGFuZ2VzIGl0cyBzaXplLgorCSAgSWYgYSBidWZmZXIgaXMgcGFzc2VkIHRvIGdzdF9kYXNoX2RlbXV4X3BhcnNlX2h0dHBfeHNkYXRlKCkgdGhhdCBpcworCSAgZXhhY3RseSB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcsIHRoZSBmdW5jdGlvbiBmYWlscyB3aXRoIGFuIGFzc2VydAorCSAgZmFpbHVyZSBpbiBnc3RfYnVmZmVyX3Jlc2l6ZSgpLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjE0OAorCisyMDE2LTAyLTIzIDExOjU5OjUyICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9jcy5zZ21sOgorCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNlY3Rpb25zLnR4dDoKKwkgIGRvY3M6IEFkZCBhdWRpb2ludGVybGVhdmUKKworMjAxNi0wMi0yMiAxMDoyMTo0NyArMDEwMCAgUGV0ZXIgU2VpZGVyZXIgPHBzLnJlcG9ydEBnbXgubmV0PgorCisJKiBzeXMvZmJkZXYvZ3N0ZmJkZXZzaW5rLmM6CisJICBmYmRldnNpbms6IGZpeCBieXRlcyBwZXIgcGl4ZWwgY2FsY3VsYXRpb24KKwkgIFNpbXBsZSBwaXBlbGluZQorCSAgJCBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBmYmRldnNpbmsKKwkgIGNyYXNoZXMgd2l0aCBTSUdTRUdWIGluIGNhc2UgdGhlIGZyYW1idWZmZXIgeHJlcyBpcyBzbWFsbGVyCisJICB0aGFuIHRoZSB2aXJ0dWFsIHhyZXMgcmVzb2x1dGlvbiwgZS5nLjoKKwkgICQgZmJzZXQKKwkgIG1vZGUgIjgwMHg0ODAtMCIKKwkgICMgRDogMC4wMDAgTUh6LCBIOiAwLjAwMCBrSHosIFY6IDAuMDAwIEh6CisJICBnZW9tZXRyeSA4MDAgNDgwIDE5MjAgMTIwMCAxNgorCSAgdGltaW5ncyAwIDAgMCAwIDAgMCAwCisJICBhY2NlbCB0cnVlCisJICByZ2JhIDUvMTEsNi81LDUvMCwwLzAKKwkgIGVuZG1vZGUKKwkgIERlYnVnOgorCSAgJCBnZGIgZ3N0LWxhdW5jaC0xLjAKKwkgIChnZGIpIHJ1biB2aWRlb3Rlc3RzcmMgISBmYmRldnNpbmsKKwkgIChnZGIpIHdoZXJlCisJICAjMCAgMHhiNmJkMmQyNCBpbiBfX21lbWNweV9uZW9uICgpCisJICBhdCAuLi9zeXNkZXBzL2FybS9hcm12Ny9tdWx0aWFyY2gvbWVtY3B5X2ltcGwuUzo1OTEKKwkgICMxICAweGI2OWIwNGU4IGluIGdzdF9mYmRldnNpbmtfc2hvd19mcmFtZSAodmlkZW9zaW5rPTB4MTBhMzM3OCwKKwkgIGJ1Zj0weGI1YzA4ODM4KSBhdCBnc3RmYmRldnNpbmsuYzoyNjkKKwkgICMyICAweGI2OWU4OGM0IGluIGdzdF9iYXNlX3NpbmtfZG9fcHJlcm9sbCAoc2luaz1zaW5rQGVudHJ5PTB4MTBhMzM3OCwKKwkgIG9iaj0weGI1YzA4ODM4LCBvYmpAZW50cnk9MHhhMCkgYXQgZ3N0YmFzZXNpbmsuYzoyMjgxCisJICAjMyAgMHhiNjllOTJiYyBpbiBnc3RfYmFzZV9zaW5rX2RvX3N5bmMgKGJhc2VzaW5rPWJhc2VzaW5rQGVudHJ5PTB4MTBhMzM3OCwKKwkgIG9iaj0weGEwLCBvYmpAZW50cnk9MHhiNWMwODgzOCwgbGF0ZT0weDAsIGxhdGVAZW50cnk9MHhiNjU0OGJhMCwKKwkgIHN0ZXBfZW5kPTB4MTQwLCBzdGVwX2VuZEBlbnRyeT0weGI2NTQ4YmE0KSBhdCBnc3RiYXNlc2luay5jOjI1MDAKKwkgICM0ICAweGI2OWVhNjdjIGluIGdzdF9iYXNlX3NpbmtfY2hhaW5fdW5sb2NrZWQgKAorCSAgYmFzZXNpbms9YmFzZXNpbmtAZW50cnk9MHgxMGEzMzc4LCBvYmo9MHgwLCBvYmpAZW50cnk9MHhiNWMwODgzOCwKKwkgIGlzX2xpc3Q9aXNfbGlzdEBlbnRyeT0wLCBwYWQ9PG9wdGltaXplZCBvdXQ+KSBhdCBnc3RiYXNlc2luay5jOjM0ODYKKwkgICM1ICAweGI2OWVjMWMwIGluIGdzdF9iYXNlX3NpbmtfY2hhaW5fbWFpbiAoYmFzZXNpbms9MHgxMGEzMzc4LAorCSAgcGFkPTxvcHRpbWl6ZWQgb3V0Piwgb2JqPTB4YjVjMDg4MzgsIGlzX2xpc3Q9MCkgYXQgZ3N0YmFzZXNpbmsuYzozNjQ3CisJICAjNiAgMHhiNmViNWIxMCBpbiBnc3RfcGFkX2NoYWluX2RhdGFfdW5jaGVja2VkIChwYWQ9MHgxMGE2MTcwLAorCSAgdHlwZT08b3B0aW1pemVkIG91dD4sIGRhdGE9MHhiNWMwODgzOCkgYXQgZ3N0cGFkLmM6NDA4NgorCSAgIzcgIDB4YjZlYjdhMzQgaW4gZ3N0X3BhZF9wdXNoX2RhdGEgKHBhZD1wYWRAZW50cnk9MHgxMGE2MDIwLAorCSAgdHlwZT10eXBlQGVudHJ5PTQxMTIsIGRhdGE9MHhiNWMwODgzOCkgYXQgZ3N0cGFkLmM6NDMzOAorCSAgIzggIDB4YjZlYmYzNDQgaW4gZ3N0X3BhZF9wdXNoIChwYWQ9cGFkQGVudHJ5PTB4MTBhNjAyMCwKKwkgIGJ1ZmZlcj08b3B0aW1pemVkIG91dD4pIGF0IGdzdHBhZC5jOjQ0NTQKKwkgICM5ICAweGI2OWYyMmYwIGluIGdzdF9iYXNlX3NyY19sb29wIChwYWQ9MHgxMGE2MDIwKSBhdCBnc3RiYXNlc3JjLmM6Mjg0NQorCSAgIzEwIDB4YjZlZWRkZmMgaW4gZ3N0X3Rhc2tfZnVuYyAodGFzaz0weDEwYTg4MjgpIGF0IGdzdHRhc2suYzozMzEKKwkgICMxMSAweGI2ZDQ4NWEwIGluIGdfdGhyZWFkX3Bvb2xfdGhyZWFkX3Byb3h5IChkYXRhPTxvcHRpbWl6ZWQgb3V0PikKKwkgIGF0IGd0aHJlYWRwb1F1aXQKKwkgIChnZGIpIGZyYW1lIDEKKwkgICMxICAweGI2OWIwNGU4IGluIGdzdF9mYmRldnNpbmtfc2hvd19mcmFtZSAodmlkZW9zaW5rPTB4MTBhMzM3OCwKKwkgIGJ1Zj0weGI1YzA4ODM4KSBhdCBnc3RmYmRldnNpbmsuYzoyNjkKKwkgIDI2OSAgICAgZ3N0ZmJkZXZzaW5rLmM6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkuCisJICAoZ2RiKSBwIGZiZGV2c2luaworCSAgJDEgPSAoR3N0RkJERVZTaW5rICopIDB4MTBhMzM3OAorCSAgKGdkYikgcCAqZmJkZXZzaW5rCisJICAkMiA9IHt2aWRlb3NpbmsgPSB7ZWxlbWVudCA9IHtlbGVtZW50ID0ge29iamVjdCA9IHtvYmplY3QgPSB7CisJICBnX3R5cGVfaW5zdGFuY2UgPSB7Z19jbGFzcyA9IDB4MTBhMmQ2MH0sIHJlZl9jb3VudCA9IDMsCisJICBxZGF0YSA9IDB4MH0sIGxvY2sgPSB7cCA9IDB4MCwgaSA9IHswLCAwfX0sCisJICBuYW1lID0gMHgxMGEyZjMwICJmYmRldnNpbmswIiwgcGFyZW50ID0gMHgxMGE3MGEwLCBmbGFncyA9IDMyLAorCSAgY29udHJvbF9iaW5kaW5ncyA9IDB4MCwgY29udHJvbF9yYXRlID0gMTAwMDAwMDAwLAorCSAgbGFzdF9zeW5jID0gMTg0NDY3NDQwNzM3MDk1NTE2MTUsIF9nc3RfcmVzZXJ2ZWQgPSAweDB9LAorCSAgc3RhdGVfbG9jayA9IHtwID0gMHgxMDlmOWE4LCBpID0gezAsIDB9fSwgc3RhdGVfY29uZCA9IHtwID0gMHgwLCBpID0geworCSAgMywgMH19LCBzdGF0ZV9jb29raWUgPSAyLCB0YXJnZXRfc3RhdGUgPSBHU1RfU1RBVEVfUEFVU0VELAorCSAgY3VycmVudF9zdGF0ZSA9IEdTVF9TVEFURV9SRUFEWSwgbmV4dF9zdGF0ZSA9IEdTVF9TVEFURV9QQVVTRUQsCisJICBwZW5kaW5nX3N0YXRlID0gR1NUX1NUQVRFX1BBVVNFRCwKKwkgIGxhc3RfcmV0dXJuID0gR1NUX1NUQVRFX0NIQU5HRV9BU1lOQywgYnVzID0gMHgxMDhiY2I4LCBjbG9jayA9IDB4MCwKKwkgIGJhc2VfdGltZSA9IDAsIHN0YXJ0X3RpbWUgPSAwLCBudW1wYWRzID0gMSwgcGFkcyA9IDB4MTA5Y2MyMCwKKwkgIG51bXNyY3BhZHMgPSAwLCBzcmNwYWRzID0gMHgwLCBudW1zaW5rcGFkcyA9IDEsIHNpbmtwYWRzID0gMHgxMDljYzMwLAorCSAgcGFkc19jb29raWUgPSAxLCBfZ3N0X3Jlc2VydmVkID0gezB4MCwgMHgwLCAweDAsIDB4MH19LAorCSAgc2lua3BhZCA9IDB4MTBhNjE3MCwgcGFkX21vZGUgPSBHU1RfUEFEX01PREVfUFVTSCwgb2Zmc2V0ID0gMCwKKwkgIGNhbl9hY3RpdmF0ZV9wdWxsID0gMCwgY2FuX2FjdGl2YXRlX3B1c2ggPSAxLCBwcmVyb2xsX2xvY2sgPSB7cCA9IDB4MSwKKwkgIGkgPSB7MSwgMH19LCBwcmVyb2xsX2NvbmQgPSB7cCA9IDB4MCwgaSA9IHswLCAwfX0sIGVvcyA9IDAsCisJICBuZWVkX3ByZXJvbGwgPSAxLCBoYXZlX3ByZXJvbGwgPSAwLCBwbGF5aW5nX2FzeW5jID0gMSwKKwkgIGhhdmVfbmV3c2VnbWVudCA9IDEsIHNlZ21lbnQgPSB7ZmxhZ3MgPSBHU1RfU0VHTUVOVF9GTEFHX05PTkUsIHJhdGUgPSAxLAorCSAgYXBwbGllZF9yYXRlID0gMSwgZm9ybWF0ID0gR1NUX0ZPUk1BVF9USU1FLCBiYXNlID0gMCwgb2Zmc2V0ID0gMCwKKwkgIHN0YXJ0ID0gMCwgc3RvcCA9IDE4NDQ2NzQ0MDczNzA5NTUxNjE1LCB0aW1lID0gMCwgcG9zaXRpb24gPSAzMzMzMzMzMywKKwkgIGR1cmF0aW9uID0gMTg0NDY3NDQwNzM3MDk1NTE2MTUsIF9nc3RfcmVzZXJ2ZWQgPSB7MHgwLCAweDAsIDB4MCwKKwkgIDB4MH19LCBjbG9ja19pZCA9IDB4MCwgc3luYyA9IDEsIGZsdXNoaW5nID0gMCwgcnVubmluZyA9IDAsCisJICBtYXhfbGF0ZW5lc3MgPSAyMDAwMDAwMCwgcHJpdiA9IDB4MTBhMzE4OCwgX2dzdF9yZXNlcnZlZCA9IHsKKwkgIDB4MCA8cmVwZWF0cyAyMCB0aW1lcz59fSwgd2lkdGggPSAwLCBoZWlnaHQgPSAwLCBwcml2ID0gMHgxMGEzMTgwLAorCSAgX2dzdF9yZXNlcnZlZCA9IHsweDAsIDB4MCwgMHgwLCAweDB9fSwgZml4aW5mbyA9IHsKKwkgIGlkID0gJ1wwMDAnIDxyZXBlYXRzIDE1IHRpbWVzPiwgc21lbV9zdGFydCA9IDEwNzg5ODQ3MDQsCisJICBzbWVtX2xlbiA9IDQ2MDgwMDAsIHR5cGUgPSAwLCB0eXBlX2F1eCA9IDAsIHZpc3VhbCA9IDIsIHhwYW5zdGVwID0gMSwKKwkgIHlwYW5zdGVwID0gMSwgeXdyYXBzdGVwID0gMCwgbGluZV9sZW5ndGggPSAzODQwLCBtbWlvX3N0YXJ0ID0gMCwKKwkgIG1taW9fbGVuID0gMCwgYWNjZWwgPSAwLCBjYXBhYmlsaXRpZXMgPSAwLCByZXNlcnZlZCA9IHswLCAwfX0sIHZhcmluZm8gPSB7CisJICB4cmVzID0gODAwLCB5cmVzID0gNDgwLCB4cmVzX3ZpcnR1YWwgPSAxOTIwLCB5cmVzX3ZpcnR1YWwgPSAxMjAwLAorCSAgeG9mZnNldCA9IDAsIHlvZmZzZXQgPSAwLCBiaXRzX3Blcl9waXhlbCA9IDE2LCBncmF5c2NhbGUgPSAwLCByZWQgPSB7CisJICBvZmZzZXQgPSAxMSwgbGVuZ3RoID0gNSwgbXNiX3JpZ2h0ID0gMH0sIGdyZWVuID0ge29mZnNldCA9IDUsCisJICBsZW5ndGggPSA2LCBtc2JfcmlnaHQgPSAwfSwgYmx1ZSA9IHtvZmZzZXQgPSAwLCBsZW5ndGggPSA1LAorCSAgbXNiX3JpZ2h0ID0gMH0sIHRyYW5zcCA9IHtvZmZzZXQgPSAwLCBsZW5ndGggPSAwLCBtc2JfcmlnaHQgPSAwfSwKKwkgIG5vbnN0ZCA9IDAsIGFjdGl2YXRlID0gMCwgaGVpZ2h0ID0gNDI5NDk2NzI5NSwgd2lkdGggPSA0Mjk0OTY3Mjk1LAorCSAgYWNjZWxfZmxhZ3MgPSAxLCBwaXhjbG9jayA9IDAsIGxlZnRfbWFyZ2luID0gMCwgcmlnaHRfbWFyZ2luID0gMCwKKwkgIHVwcGVyX21hcmdpbiA9IDAsIGxvd2VyX21hcmdpbiA9IDAsIGhzeW5jX2xlbiA9IDAsIHZzeW5jX2xlbiA9IDAsCisJICBzeW5jID0gMCwgdm1vZGUgPSAwLCByb3RhdGUgPSAwLCBjb2xvcnNwYWNlID0gMCwgcmVzZXJ2ZWQgPSB7MCwgMCwgMCwgMH19LAorCSAgZmQgPSA1LAorCSAgZnJhbWVidWZmZXIgPSAweGI2NTRhMDAwIDxlcnJvcjogQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweGI2NTRhMDAwPiwgZGV2aWNlID0gMHgxMGEzOGQ4ICIvZGV2L2ZiMCIsIHdpZHRoID0gMzIwLCBoZWlnaHQgPSAyNDAsIGN4ID0gMjQwLCBjeSA9IDEyMCwKKwkgIGxpbmVsZW4gPSAxMjgwLCBsaW5lcyA9IDI0MCwgYnl0ZXNwcCA9IDQsIGZwc19uID0gMzAsIGZwc19kID0gMX0KKwkgIChnZGIpIHAgbWFwCisJICAkMyA9IHttZW1vcnkgPSAweGI1ZDI0MDA4LCBmbGFncyA9IEdTVF9NQVBfUkVBRCwKKwkgIGRhdGEgPSAweGI1ZDI0MDU4ICdcMzc3JyA8cmVwZWF0cyA5MCB0aW1lcz4sICJcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNzdcYVwzNzdcYVwzNzdcYVwzNzdcYVwzNzdcYVwzNzdcYVwzNzdcYVwzNzdcYVwzNzdcYSIuLi4sCisJICBzaXplID0gMTUzNjAwLCBtYXhzaXplID0gMTUzNjAzLCB1c2VyX2RhdGEgPSB7MHgwLAorCSAgMHhiNjllM2JhNCA8Z3N0X2Jhc2Vfc2lua19zZXRfbGFzdF9idWZmZXJfdW5sb2NrZWQrOTI+LCAweDEwYTMzNzgsIDB4MH0sCisJICBfZ3N0X3Jlc2VydmVkID0gezB4MSwgMHgxMGEzMzc4LCAweGI2ZjUwZGQ4IDxfZ3N0X2RlYnVnX21pbj4sIDB4YjVjMDg4Mzh9fQorCSAgKGdkYikgcCBpCisJICAkNCA9IDEyMQorCSAgRml4IHRoaXMgYnkgY2hhbmdpbmcgdGhlIGZiZGV2c2luay0+Ynl0ZXNwcCBjYWxjdWxhdGlvbiB1c2luZworCSAgdGhlIGZyYW1lIGJ1ZmZlciB4cmVzX3ZpcnR1YWwgc2l6ZSBpbnN0ZWFkIG9mIHhyZXMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNDgyCisKKzIwMTYtMDItMjIgMTI6NTM6MDAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy1zZWN0aW9ucy50eHQ6CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmM6CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmg6CisJKiB3aW4zMi9jb21tb24vbGliZ3N0cGxheWVyLmRlZjoKKwkgIHBsYXllcjogRXhwb3NlIG1vcmUgR3N0VmlkZW9PdmVybGF5IEFQSSBpbiB0aGUgR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlcgorCSAgRXhwb3NlIHRoZSBleHBvc2UoKSBhbmQgc2V0X3JlbmRlcl9yZWN0YW5nbGUoKSBtZXRob2RzLiBUaGVzZSBhcmUgdXNlZnVsIGZvcgorCSAgcHJvcGVyIGZ1bmN0aW9uaW5nIG9mIHRoZSB2aWRlbyBvdmVybGF5IGluIHZhcmlvdXMgc2l0dWF0aW9ucyBhbmQgdG9vbGtpdHMuCisKKzIwMTYtMDItMjIgMjE6MDM6MTQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsc3RlcmVvc3BsaXQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuYzoKKwkgIGdsOiBmaXggdGhlIGJ1aWxkCisJICAyZDI4NzgxMiB3YXMgaW5jb21wbGV0ZQorCisyMDE2LTAyLTIyIDIwOjQ5OjUyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGJhc2VtaXhlci5jOgorCSogZXh0L2dsL2dzdGdsc3RlcmVvc3BsaXQuYzoKKwkqIGV4dC9nbC9nc3RnbHRlc3RzcmMuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuYzoKKwkgIGdsOiBlcnJvciBvdXQgaWYgdGhlIGNvbmZpZ3VyZWQgR0wgQVBJIGlzIHVuc3VwcG9ydGVkIGJ5IG91ciBlbGVtZW50CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5ODAxCisKKzIwMTYtMDEtMjQgMTc6NDA6MzcgKzAzMDAgIFNlcmdleSBCb3JvdmtvdiA8c2VyZ2V5LmJvcm92a292QHdpcmVsb2FkLm5ldD4KKworCSogZXh0L3F0L3F0aXRlbS5jYzoKKwkqIGV4dC9xdC9xdGl0ZW0uaDoKKwkgIHFtbGdsc2luazogU2NoZWR1bGUgb25TY2VuZUdycGFoSW5pdGlhbGl6ZWQgdG8gZXhlY3V0ZSBvbiByZW5kZXIgdGhyZWFkCisJICBvblNjZW5lR3JhcGhJbml0aWFsaXplZCgpIGlzIGNhbGxlZCBmcm9tIG5vbiByZW5kZXIgdGhyZWFkIGN1cnJlbnRseSB3aGVuCisJICBzY2VuZSBncmFwaCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTAwMworCisyMDE2LTAxLTA3IDE4OjI2OjI2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvYWlmZi9haWZmcGFyc2UuYzoKKwkgIGFpZmZwYXJzZTogZml4IG5lZ290aWF0aW9uIGVycm9ycyB3aXRoIG11bHRpLWNoYW5uZWwgZmlsZXMKKwkgIFNldCBmYWxsYmFjayBjaGFubmVsIGxheW91dCBvbiBmaWxlcyB3aXRoIG1vcmUgdGhhbiB0d28KKwkgIGNoYW5uZWxzLiBOb3QgY2xlYXIgd2hlcmUgdG8gcmV0cmlldmUgdGhlIHJlYWwgbGF5b3V0IGZyb20KKwkgIG9yIHdoYXQgdGhlIGRlZmF1bHQgbGF5b3V0IGlzIGZvciBBSUZGIGZpbGVzLCB0aGUgc3BlYworCSAgb25seSBzZWVtcyB0byBzcGVjaWZ5IHNvbWUgbGF5b3V0IGZvciB1cCB0byA2IGNoYW5uZWxzCisJICBhbmQgdGhlIGZpbGUgaW4gcXVlc3Rpb24gZG9lc24ndCBoYXZlIGEgQ0hBTiBjaHVuay4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02NzY0MjUKKworMjAxNi0wMi0yMSAxMDozNDo1NiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2NkeGFwYXJzZS9jZHhhcGFyc2UudmNwcm9qOgorCSogZ3N0L21peG1hdHJpeC9taXhtYXRyaXgudmNwcm9qOgorCSogZ3N0L292ZXJsYXkvb3ZlcmxheS52Y3Byb2o6CisJKiBnc3QvcnRqcGVnL3J0anBlZy52Y3Byb2o6CisJKiBnc3Qvc21vb3RoL3Ntb290aC52Y3Byb2o6CisJKiBnc3Qvc3BlZWQvc3BlZWQudmNwcm9qOgorCSogZ3N0L3N0ZXJlby9zdGVyZW8udmNwcm9qOgorCSogd2luMzIvTUFOSUZFU1Q6CisJKiB3aW4zMi9nc3Quc2xuOgorCSogd2luMzIvdnM2L2dzdF9wbHVnaW5zX2JhZC5kc3c6CisJKiB3aW4zMi92czYvbGliZ3N0ZHNob3cuZHNwOgorCSogd2luMzIvdnM2L2xpYmdzdGRzaG93ZGVjd3JhcHBlci5kc3A6CisJKiB3aW4zMi92czYvbGliZ3N0Zmx2LmRzcDoKKwkqIHdpbjMyL3ZzNi9saWJnc3RtcGVndmlkZW9wYXJzZS5kc3A6CisJKiB3aW4zMi92czYvbGliZ3N0bmVvbi5kc3A6CisJKiB3aW4zMi92czgvZ3N0LXBsdWdpbnMtYmFkLnNsbjoKKwkqIHdpbjMyL3ZzOC9saWJnc3RkaXJlY3Rzb3VuZC52Y3Byb2o6CisJKiB3aW4zMi92czkvZ3N0LXBsdWdpbnMtYmFkLnNsbjoKKwkqIHdpbjMyL3ZzOS9saWJnc3Rkc2hvd3NyY3dyYXBwZXIudmNwcm9qOgorCSAgd2luMzI6IHJlbW92ZSBvdXRkYXRlZCBidWlsZCBjcnVmdAorCSAgVGhpcyBoYXNuJ3QgYmVlbiB0b3VjaGVkIGZvciBnZW5lcmF0aW9ucywgZG9lc24ndCB3b3JrLAorCSAgYW5kIGlzIGp1c3QgY2F1c2luZyBjb25mdXNpb24uIFdlIGFsc28gZG9uJ3Qgd2FudCB0bworCSAgbWFpbnRhaW4gdGhlc2UgZmlsZXMgbWFudWFsbHkuCisKKzIwMTYtMDItMjAgMTI6NTU6MDggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9kYWFsYS9nc3RkYWFsYWRlYy5jOgorCSAgZGFhbGE6IGRvbid0IHVzZSBleHBvcnRlZCBidXQgdW5kZWNsYXJlZCBjb3JlIGRlYnVnIGNhdGVnb3J5IHN5bWJvbHMKKwkgIEl0J3Mgbm90IHJpZ2h0IGFuZCB3b24ndCB3b3JrIG9uIFdpbmRvd3Mgd2l0aCBNU1ZDLgorCisyMDE2LTAyLTE5IDE0OjI3OjU5IC0wODAwICBTY290dCBEIFBoaWxsaXBzIDxzY290dC5kLnBoaWxsaXBzQGludGVsLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RoMjY1cGFyc2VyLmM6CisJICBjb2RlY3BhcnNlcnM6IGgyNjU6IEZpeCBpbml0aWFsaXphdGlvbiBvZiBzbGljZV9kZWJsb2NraW5nX2ZpbHRlcl9kaXNhYmxlZF9mbGFnCisJICBILjI2NSA3LjQuNy4xIHNheXM6CisJICA+IFdoZW4gc2xpY2VfZGVibG9ja2luZ19maWx0ZXJfZGlzYWJsZWRfZmxhZyBpcyBub3QgcHJlc2VudCwgaXQgaXMKKwkgID4gaW5mZXJyZWQgdG8gYmUgZXF1YWwgdG8gcHBzX2RlYmxvY2tpbmdfZmlsdGVyX2Rpc2FibGVkX2ZsYWcuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyMzUxCisKKzIwMTYtMDItMTkgMTY6NDA6NTQgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RtcGVnNHBhcnNlci5jOgorCSAgbXBlZzRwYXJzZXI6IHByZXZlbnQgYXNzZXJ0aW9uIHdoZW4gc2Nhbm5pbmcgZm9yIHN5bmMgY29kZQorCSAgT25seSBzZWFyY2ggaWYgdGhlcmUgaXMgaW5kZWVkIGVub3VnaCBkYXRhIHRvIGJlIHNlYXJjaGVkIG90aGVyd2lzZQorCSAgYW4gYXNzZXJ0aW9uIGlzIHJhaXNlZAorCisyMDE2LTAyLTE5IDE3OjQ4OjU1ICswMTAwICBFZHdhcmQgSGVydmV5IDxlZHdhcmRAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFyc2UuYzoKKwkgIHRzcGFyc2U6IEZpeCBwZXItcHJvZ3JhbS1wYWQgcHVzaGluZworCSAgVGhpcyBmaXhlcyBhIGNvdXBsZSBvZiBpc3N1ZXMgcmVnYXJkaW5nIHRoZSBvdXRwdXQgb2YgKHJlcXVlc3QpCisJICBwZXItcHJvZ3JhbSBwYWRzIG91dHB1dDoKKwkgIFdlIHdvdWxkIG5ldmVyIHB1c2ggb3V0IFBBVCBzZWN0aW9ucyAob2ssIHRoYXQgd2FzIG9uZSByZWFsbGx5IHN0dXBpZAorCSAgbWlzdGFrZS4gSSBndWVzcyBub2JvZHkgZXZlciB1c2VzIHRoaXMgZmVhdHVyZSAuLi4pLgorCSAgSW4gdGhlIGNhc2Ugd2hlcmUgdGhlIFBNVCBzZWN0aW9uIG9mIGEgcHJvZ3JhbSB3YXMgYmlnZ2VyIHRoYW4gb25lCisJICBwYWNrZXQsIHdlIHdvdWxkIG9ubHkgZW5kIHVwIHB1c2hpbmcgdGhlIGxhc3QgcGFja2V0IG9mIHRoYXQgUE1ULiBXaGljaAorCSAgb2J2aW91c2x5IHJlc3VsdHMgaW4gdGhlIHJlc3VsdGluZyBzdHJlYW0gbmV2ZXIgY29udGFpbmluZyB0aGUgcHJvcGVyCisJICAoY29tcGxldGUpIFBNVC4KKwkgIFRoZSBwcm9ibGVtIHdhcyB0aGF0IHRoZSBwcm9ncmFtIGlzIG9ubHkgc3RhcnRlZCAoaW4gdGhlIGJhc2UgY2xhc3MpCisJICBhZnRlciB0aGUgUE1UIHNlY3Rpb24gaXMgY29tcGxldGVseSBwYXJzZWQuIFdoZW4gZGVhbGluZyB3aXRoIHNpbmdsZS1wcm9ncmFtCisJICBwYWRzLCB0c3BhcnNlIG9ubHkgd2FudHMgdG8gcHVzaCB0aGUgUE1UIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJlcXVlc3RlZAorCSAgcHJvZ3JhbSAoYW5kIG5vdCB0aGUgb3RoZXIgb25lcykuIHRzcGFyc2UgZGlkIHRoYXQgY2hlY2sgYnkgbG9va2luZworCSAgYXQgdGhlIHN0cmVhbXMgb2YgdGhlIHByb2dyYW0uLi4KKwkgIC4uLiBidXQgdGhhdCBwcm9ncmFtIGRvZXNuJ3QgZXhpc3QgZm9yIHRoZSBmaXJzdCBwYWNrZXRzIG9mIHRoZSBpbml0aWFsCisJICBQTVQuCisJICBUaGUgZml4IGlzIHRvIHVzZSB0aGUgYmFzZSBjbGFzcyBwcm9ncmFtIGluZm9ybWF0aW9uIChpZiBpdCBwYXJzZWQgdGhlCisJICBQQVQgaXQgYWxyZWFkeSBoYXMgc29tZSBpbmZvcm1hdGlvbiwgbGlrZSB0aGUgUE1UIFBJRCBmb3IgYSBnaXZlbiBwcm9ncmFtKQorCSAgaWYgdGhlIHByb2dyYW0gaGFzbid0IHN0YXJ0ZWQgeWV0LgorCisyMDE2LTAyLTE5IDE3OjQ1OjI2ICswMTAwICBFZHdhcmQgSGVydmV5IDxlZHdhcmRAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFyc2UuYzoKKwkqIGdzdC9tcGVndHNkZW11eC9tcGVndHNwYXJzZS5oOgorCSAgdHNwYXJzZTogVXNlIEdzdEZsb3dDb21iaW5lcgorCSAgSW4gYWRkaXRpb24gdG8gdGhlIGZhY3QgdGhhdCBpdCdzIGEgc2FuZSB0aGluZyB0byBkbyBmb3IgbXVsdGktc291cmNlCisJICBwYWQgZWxlbWVudHMsIGl0IGFsc28gYXZvaWRzIHRoZSBzaXR1YXRpb24gd2hlcmUganVzdCB1c2luZyBhIHJlcXVlc3QKKwkgIHBhZCAoYW5kIG5vdCB0aGUgbWFpbiBzdGF0aWMgcGFkKSB3b3VsZCByZXN1bHQgaW4gdGhlIHByb2Nlc3NpbmcKKwkgIHN0b3BwaW5nLgorCisyMDE2LTAyLTE5IDEyOjM4OjMxICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJICBCYWNrIHRvIGRldmVsb3BtZW50CisKKz09PSByZWxlYXNlIDEuNy4yID09PQorCisyMDE2LTAyLTE5IDExOjUwOjI1ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBDaGFuZ2VMb2c6CisJKiBORVdTOgorCSogUkVMRUFTRToKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5hcmdzOgorCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmhpZXJhcmNoeToKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5pbnRlcmZhY2VzOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFjY3VyaXAueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFkcGNtZGVjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hZHBjbWVuYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWlmZi54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXNmbXV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hc3NyZW5kZXIueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1ZGlvbWl4ZXIueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1ZGlvdmlzdWFsaXplcnMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1dG9jb252ZXJ0LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1iYXllci54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYnoyLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jYW1lcmFiaW4ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNocm9tYXByaW50LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb2xvcmVmZmVjdHMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWN1cmwueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRhdGF1cmlzcmMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRlYnVndXRpbHNiYWQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR0c2RlYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHZiLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmJzdWJvdmVybGF5LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmRzcHUueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZhYWQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZlc3RpdmFsLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1maWVsZGFuYWx5c2lzLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mbGl0ZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZnJlaTByLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nYXVkaWVmZmVjdHMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdkcC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2VvbWV0cmljdHJhbnNmb3JtLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nbWVkZWMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzbS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3N0c2lyZW4ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWhscy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taWQzdGFnLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlci54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taW50ZXJsYWNlLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1qcGVnZm9ybWF0LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1taW1pYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbW1zLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tb2RwbHVnLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVnMmVuYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzZGVtdXgueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWdwc211eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzZGVtdXgueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWd0c211eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBsZXgueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9mYS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmFsLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuY3YueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBjYXBwYXJzZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcG5tLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yYXdwYXJzZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVtb3Zlc2lsZW5jZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVzaW5kdmQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJmYnNyYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnRtcC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2Nocm8ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNkcC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2VnbWVudGNsaXAueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNobS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc21vb3RoLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zb3VuZHRvdWNoLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGFuZHNwLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGVlZC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3ViZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb3BhcnNlcnNiYWQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZvYWFjZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FtcndiZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13YXlsYW5kc2luay54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4teTRtZGVjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi16YmFyLnhtbDoKKwkqIGdzdC1wbHVnaW5zLWJhZC5kb2FwOgorCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgorCSAgUmVsZWFzZSAxLjcuMgorCisyMDE2LTAyLTE5IDEwOjMyOjI4ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBwby9hZi5wbzoKKwkqIHBvL2F6LnBvOgorCSogcG8vYmcucG86CisJKiBwby9jYS5wbzoKKwkqIHBvL2NzLnBvOgorCSogcG8vZGEucG86CisJKiBwby9kZS5wbzoKKwkqIHBvL2VsLnBvOgorCSogcG8vZW5fR0IucG86CisJKiBwby9lby5wbzoKKwkqIHBvL2VzLnBvOgorCSogcG8vZXUucG86CisJKiBwby9maS5wbzoKKwkqIHBvL2ZyLnBvOgorCSogcG8vZ2wucG86CisJKiBwby9oci5wbzoKKwkqIHBvL2h1LnBvOgorCSogcG8vaWQucG86CisJKiBwby9pdC5wbzoKKwkqIHBvL2phLnBvOgorCSogcG8va3kucG86CisJKiBwby9sdC5wbzoKKwkqIHBvL2x2LnBvOgorCSogcG8vbXQucG86CisJKiBwby9uYi5wbzoKKwkqIHBvL25sLnBvOgorCSogcG8vb3IucG86CisJKiBwby9wbC5wbzoKKwkqIHBvL3B0X0JSLnBvOgorCSogcG8vcm8ucG86CisJKiBwby9ydS5wbzoKKwkqIHBvL3NrLnBvOgorCSogcG8vc2wucG86CisJKiBwby9zcS5wbzoKKwkqIHBvL3NyLnBvOgorCSogcG8vc3YucG86CisJKiBwby90ci5wbzoKKwkqIHBvL3VrLnBvOgorCSogcG8vdmkucG86CisJKiBwby96aF9DTi5wbzoKKwkgIHBvOiBVcGRhdGUgdHJhbnNsYXRpb25zCisKKzIwMTYtMDItMTggMTQ6MzI6MjMgKzAwMDAgIEp1bGllbiBJc29yY2UgPGouaXNvcmNlQHNhbXN1bmcuY29tPgorCisJKiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UtdW5pbnN0YWxsZWQucGMuaW46CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjLmluOgorCSogcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItaW5zZXJ0YmluLXVuaW5zdGFsbGVkLnBjLmluOgorCSogcGtnY29uZmlnL2dzdHJlYW1lci1tcGVndHMtdW5pbnN0YWxsZWQucGMuaW46CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItcGx1Z2lucy1iYWQtdW5pbnN0YWxsZWQucGMuaW46CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLXdheWxhbmQtdW5pbnN0YWxsZWQucGMuaW46CisJICB1bmluc3RhbGxlZC5wYzogYWRkIHN1cHBvcnQgZm9yIG5vbiBsaWJ0b29sIGJ1aWxkIHN5c3RlbXMKKwkgIEN1cnJlbnRseSB0aGUgLmxhIHBhdGggaXMgcHJvdmlkZWQgd2hpY2ggcmVxdWlyZXMgdG8gdXNlIGxpYnRvb2wgYXMKKwkgIG1lbnRpb25lZCBpbiB0aGUgR1N0cmVhbWVyIG1hbnVhbCBzZWN0aW9uLWhlbGxvd29ybGQtY29tcGlsZXJ1bi5odG1sLgorCSAgSXQgaXMgZmluZSBhcyBsb25nIGFzIHRoZSBhcHBsaWNhdGlvbiBpcyBidWlsdCB1c2luZyBsaWJ0b29sLgorCSAgU28gY3VycmVudGx5IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBjb21waWxlIGEgR1N0cmVhbWVyIGFwcGxpY2F0aW9uCisJICB3aXRoaW4gZ3N0LXVuaW5zdGFsbGVkIHdpdGggQ01ha2Ugb3Igb3RoZXIgYnVpbGQgc3lzdGVtIGRpZmZlcmVudAorCSAgdGhhbiBhdXRvdG9vbHMuCisJICBUaGlzIHBhdGNoIGFsbG93cyB0byBkbyB0aGUgZm9sbG93aW5nIGluIGdzdC11bmluc3RhbGxlZCBlbnY6CisJICBnY2MgdGVzdC5jIC1vIHRlc3QgJChwa2ctY29uZmlnIC0tY2ZsYWdzIC0tbGlicyBnc3RyZWFtZXItMS4wIFwKKwkgIGdzdHJlYW1lci1nbC0xLjApCisJICBQcmV2aW91c2x5IGl0IHJlcXVpcmVkIHRvIHByZXBlbmQgbGlidG9vbCAtLW1vZGU9bGluaworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDc3OAorCisyMDE2LTAyLTE4IDE2OjIxOjM4ICswMDAwICBKdWxpZW4gSXNvcmNlIDxqLmlzb3JjZUBzYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuYzoKKwkgIGdsZGVidWc6IG1ha2Ugc3VyZSBkZWJ1ZyBpcyBpbml0aWFsaXplZCB3aGVuIGNhbGxpbmcgZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIKKwkgIFVzdWFsbHkgZ2wgZGVidWcgaXMgaW5pdGlhbGl6ZWQgaW4gZ3N0X2dsX2NvbnRleHRfY3JlYXRlX3RocmVhZC4KKwkgIEJ1dCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB1c2VkIHdoZW4gdXNpbmcgdGhlIEdzdEdMQ29udGV4dEdQVVByb2Nlc3MKKwkgIGZyb20gQ2hyb21pdW1HU3RyZWFtZXJCYWNrZW5kLgorCSAgUmVjZWl2ZWQgc2lnbmFsIDExIFNFR1ZfTUFQRVJSIDAwMDAwMDAwMDAwMAorCSAgZ3N0X2RlYnVnX2NhdGVnb3J5X2dldF90aHJlc2hvbGQKKwkgIGdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyCisJICBnc3RfZ2xfYmFzZV9maWx0ZXJfZ2xfc3RhcnQKKworMjAxNi0wMi0xOCAxMDozMzoyMCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGNvbnRleHRfZWdsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvdXRpbHMvZ2xlc192ZXJzaW9ucy5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL3V0aWxzL29wZW5nbF92ZXJzaW9ucy5oOgorCSAgZ2w6IEZpeCBjb21waWxlciB3YXJuaW5nIGFib3V0IHVudXNlZCBjb25zdCB2YXJpYWJsZSB3aXRoIGdjYyA2CisJICBDQyAgICAgICBsaWJnc3RnbF94MTFfbGEtZ3N0Z2xjb250ZXh0X2dseC5sbworCSAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGdzdGdsY29udGV4dF9nbHguYzozOTowOgorCSAgLi4vdXRpbHMvb3BlbmdsX3ZlcnNpb25zLmg6NTI6NDM6IGVycm9yOiDigJhnbGVzMl92ZXJzaW9uc+KAmSBkZWZpbmVkIGJ1dCBub3QgdXNlZCBbLVdlcnJvcj11bnVzZWQtY29uc3QtdmFyaWFibGVdCisJICBzdGF0aWMgY29uc3Qgc3RydWN0IHsgaW50IG1ham9yLCBtaW5vcjsgfSBnbGVzMl92ZXJzaW9uc1tdID0geworCSAgXn5+fn5+fn5+fn5+fn4KKworMjAxNi0wMi0xOCAxMDoyOToyMSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSAgZ2w6IE1vdmUgcHJpdmF0ZSBoZWFkZXJzIGZyb20gU09VUkNFUyB0byBub2luc3RfSEVBREVSUworCisyMDE2LTAyLTE4IDAwOjI0OjA0ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvbW9kcGx1Zy9nc3Rtb2RwbHVnLmNjOgorCSAgbW9kcGx1ZzogRml4IGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgQysrMTEgY29tcGF0aWJpbGl0eQorCSAgZ3N0bW9kcGx1Zy5jYzo5NDoxNzogZXJyb3I6IGludmFsaWQgc3VmZml4IG9uIGxpdGVyYWw7IEMrKzExIHJlcXVpcmVzIGEgc3BhY2UgYmV0d2VlbiBsaXRlcmFsIGFuZCBzdHJpbmcgbWFjcm8gWy1XZXJyb3I9bGl0ZXJhbC1zdWZmaXhdCisJICAjZGVmaW5lIEZPUk1BVFMgInsgIkdTVF9BVURJT19ORSAoUzMyKSIsICJHU1RfQVVESU9fTkUgKFMxNikiLCBVOCB9IgorCSAgXgorCSAgZ3N0bW9kcGx1Zy5jYzo5NDozOTogZXJyb3I6IGludmFsaWQgc3VmZml4IG9uIGxpdGVyYWw7IEMrKzExIHJlcXVpcmVzIGEgc3BhY2UgYmV0d2VlbiBsaXRlcmFsIGFuZCBzdHJpbmcgbWFjcm8gWy1XZXJyb3I9bGl0ZXJhbC1zdWZmaXhdCisJICAjZGVmaW5lIEZPUk1BVFMgInsgIkdTVF9BVURJT19ORSAoUzMyKSIsICJHU1RfQVVESU9fTkUgKFMxNikiLCBVOCB9IgorCSAgXgorCisyMDE2LTAyLTE2IDE1OjEwOjM0ICswMTAwICBEYXZpZCBGZXJuYW5kZXogPGQuZmVybmFuZGV6bG9wQGdtYWlsLmNvbT4KKworCSogZXh0L2N1cmwvZ3N0Y3VybGJhc2VzaW5rLmM6CisJICBjdXJsYmFzZXNpbms6IGRvbid0IHNlbmQgZW1wdHkgYnVmZmVycworCSAgRml4ZXMgcHJvYmxlbSBpbiBjdXJsaHR0cHNpbmsgd2hlbiBxdG11eCB1c2VzIGZhc3RzdGFydC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjIwMTMKKworMjAxNi0wMi0xNyAxMToxNjo1MyArMDEwMCAgVGhpYmF1bHQgU2F1bmllciA8dHNhdW5pZXJAZ25vbWUub3JnPgorCisJKiBleHQvbGFkc3BhL2dzdGxhZHNwYWZpbHRlci5jOgorCSAgbGFkc3BhOiBGaXggc29tZSBkZWJ1Z3MKKworMjAxNi0wMS0yNiAwOTozNDowMCArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogc3lzL3V2Y2gyNjQvZ3N0dXZjaDI2NF9zcmMuYzoKKwkgIHV2Y2gyNjRfc3JjOiBGaXggY2FwcyBtZW1vcnkgbGVhaworCSAgdjRsX2NhcHMgYW5kIG5ld19jYXBzIGFyZSBiZWluZyBhbGxvY2F0ZWQgbmV3IG1lbW9yeSBiZWZvcmUgZnJlZWluZyB0aGUKKwkgIG9sZCBhbGxvY2F0aW9uLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTEwOAorCisyMDE1LTEyLTI0IDE1OjM2OjU0ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jOgorCSAgbXBlZ3RzYmFzZTogUmVmYWN0b3IgY29kZSB0byBjaGVjayBmb3Igc3ViY2xhc3Mgc2VlayBoYW5kbGluZworCSAgSWYgc3ViY2xhc3MgaXMgbm90IGFibGUgdG8gaGFuZGxlIHNlZWsgZXZlbnQsIHRoZW4gdGhlcmUgaXMgbm8gbmVlZCB0bworCSAgc3RvcCBzdHJlYW1pbmcgYW5kIHNlbmQgZmx1c2ggZXZlbnRzLiBXZSBzaG91bGQgc2ltcGx5IHJldHVybiBGQUxTRQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODUxNgorCisyMDE1LTEyLTI0IDE1OjEwOjE2ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jOgorCSAgbXBlZ3RzYmFzZTogQWRkIGNvbmRpdGlvbiB0byBjaGVjayBmb3Igbm9uIHdvcmtpbmcgbmVnYXRpdmUgcmF0ZQorCSAgdHNkZW11eCBpcyBub3QgYWJsZSB0byBoYW5kbGUgbmVnYXRpdmUgcGxheWJhY2sgcmF0ZXMuCisJICBCdXQgaW4gbXBlZ3RzYmFzZSwgdGhlIHNhbWUgY2hlY2sgaXMgbm90IGJlaW5nIGRvbmUuCisJICBhZGRlZCBhIGNoZWNrIHRvIG5vdCBoYW5kbGUgbmVnYXRpdmUgcmF0ZSB3aGlsZSBzZWVraW5nIHVubGVzcworCSAgdGhlIHNhbWUgaXMgaGFuZGxlZCB1cHN0cmVhbS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg1MTYKKworMjAxNi0wMi0xNyAxMzowMDo0NiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmaWx0ZXIuYzoKKwkgIGdsZmlsdGVyOiBpbnNlcnQgdGhlIGRlYnVnIG1hcmtlciBmcm9tIHRoZSBHTCB0aHJlYWQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE1MzgKKworMjAxNi0wMi0xNyAxMTo0MjoyMyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuYzoKKwkgIGdsaW1hZ2VzaW5rOiByZW1vdmUgdW5zZWQgcmVjb25maWd1cmUgdmFyaWFibGUKKworMjAxNi0wMS0xMyAxMzoxNzo1NiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuYzoKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5oOgorCSAgZ2xpbWFnZXNpbms6IGRvbid0IHB1c2ggYSByZWNvbmZpZ3VyZSBldmVudCBmcm9tIHRoZSBHTCB0aHJlYWQKKwkgIERvaW5nIHNvIG1heSBjYXVzZSBkZWFkbG9ja3Mgd2hlbiBvdGhlciBlbGVtZW50cyBhdHRlbXB0IGRlc3Ryb3kgb3IgY3JlYXRlZAorCSAgR0wgcmVzb3VyY2VzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDU1OQorCisyMDE2LTAxLTIxIDEwOjQwOjM2ICswODAwICBXYW5nIFhpbi15dSAo546L5piV5a6HKSA8Y29taWNmYW5zNDRAZ21haWwuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmM6CisJICBnbHZpZGVvbWl4ZXI6IGRvbid0IGxlYWsgcGFkJ3MgdmVydGV4IGJ1ZmZlciBvbiByZWxlYXNlX3BhZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDg3MworCisyMDE2LTAyLTE3IDAxOjA4OjE4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbG1peGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2xtaXhlci5oOgorCSogZXh0L2dsL2dzdGdsbW9zYWljLmM6CisJKiBleHQvZ2wvZ3N0Z2xtb3NhaWMuaDoKKwkqIGV4dC9nbC9nc3RnbHN0ZXJlb21peC5jOgorCSogZXh0L2dsL2dzdGdsc3RlcmVvbWl4Lmg6CisJKiBleHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmg6CisJICBnbG1peGVyOiBSZW1vdmUgdXNhZ2Ugb2YgR3N0R0xNaXhlckZyYW1lRGF0YQorCSAgU3ViY2xhc3NlcyBjYW4ganVzdCBpdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgcGFkcyB0aGVtc2VsdmVzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwODczCisKKzIwMTYtMDEtMTMgMTQ6NDE6MjIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsbWl4ZXIuYzoKKwkgIGdsbWl4ZXI6IGRvbid0IGhvbGQgdGhlIG9iamVjdCBsb2NrIHdoaWxlIGNhbGxpbmcgaW50byBHTAorCSAgRG9pbmcgc28gY2FuIGRlYWRsb2NrIGJldHdlZW4gdGhlIEdMIHRocmVhZCBhbmQgdGhlIG9iamVjdCBsb2NrIGUuZy4KKwkgIHdoZW4gcGVyZm9ybWluZyByZWNvbmZpZ3VyZSBldmVudHMgaW4gZ2xpbWFnZXNpbmsgb24gYSByZXNpemUgZXZlbnQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNTU5CisKKzIwMTYtMDItMTYgMjI6MzQ6NDMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbW1vbjoKKwkgIFVwZGF0ZSBjb21tb246IG1ha2UgY2hlY2stZXhwb3J0cyBub3QgZmFpbCBmb3IgbGliZ3N0Z2wuZGVmCisJICBTaG91bGQgZml4IGRpc3RjaGVjayBvbiBzb21lIGJ1aWxkIGJvdHMuCisKKzIwMTYtMDEtMjYgMDk6Mzc6MDQgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIHN5cy9hY21lbmMvYWNtZW5jLmM6CisJKiBzeXMvYWNtbXAzZGVjL2FjbW1wM2RlYy5jOgorCSAgYWNtZW5jL2FjbW1wM2RlYzogcmVtb3ZlIHVubmVjZXNzYXJ5IGJyZWFrIGFmdGVyIHJldHVybgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTEwOQorCisyMDE1LTA3LTIxIDE4OjAyOjM4IC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkgIGNvbmZpZ3VyZTogaW1wcm92ZSBjaGVjayBmb3Igd2F5bGFuZC1zY2FubmVyIGJpbmFyeQorCSAgVGhlIHBsdWdpbiBkb2Vzbid0IG5lZWQgdGhlIHdheWxhbmQtc2Nhbm5lciBwYWNrYWdlIHRvIGJlIGJ1aWx0CisJICBvciBydW4sIGl0IG9ubHkgbmVlZHMgdGhlIHdheWxhbmQtc2Nhbm5lciBwcm9ncmFtIGR1cmluZyBjb21waWxlIHRpbWUuCisJICBXaGVuIGNyb3NzLWNvbXBpbGluZywgYnVpbGQgc3lzdGVtcyBtaWdodCBub3QgaGF2ZSB0aGUgd2F5bGFuZC1zY2FubmVyCisJICBwYWNrYWdlIGZvciB0aGUgdGFyZ2V0IHN5c3RlbSBhcyBpdCBpcyBhIGRldmVsb3BlcidzIHRvb2wsIHdoaWxlIGl0IHNob3VsZAorCSAgc3RpbGwgYmUgcG9zc2libGUgdG8gdXNlIHdheWxhbmQtc2Nhbm5lciBmcm9tIHRoZSBob3N0IHN5c3RlbS4KKwkgIFRoaXMgcGF0Y2ggZml4ZXMgaXQgYnkgbm90IHJlcXVpcmluZyB0aGUgd2F5bGFuZC1zY2FubmVyIHBhY2thZ2UgYnV0CisJICBqdXN0IHRoZSBiaW5hcnkgaXRzZWxmLgorCSAgTm90ZSB0aGF0IHRoZSBjaGVjayBpcyBkb25lIG91dHNpZGUgb2YgdGhlIFBLR19DSEVDS19NT0RVTEVTCisJICBhcyBpdCBkb2Vzbid0IHdvcmsgaW5zaWRlIG9mIGl0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MjY4OAorCisyMDE2LTAxLTIxIDExOjUzOjMzICswMTAwICBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4Lmg6CisJICBhZGFwdGl2ZWRlbXV4OiByZXN0b3JlIGJpdHJhdGUgYXZlcmFnaW5nIHN1cHBvcnQKKwkgIFRoaXMgd2FzIGFjY2lkZW50YWxseSByZW1vdmVkIGluIGNvbW1pdCBjY2ZmM2JlMy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MzM5NTkKKworMjAxNi0wMS0yMCAxNTozMzoyOCArMDEwMCAgUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogcmVtb3ZlIHF1ZXVlMiBvdmVycnVuIG5vdGlmaWNhdGlvbgorCSAgRHVlIHRvIHBlcmZvcm1hbmNlIGltcGFjdCBjb25jZXJucyB0aGlzIGlzIHJlbW92ZWQuIEFuIGFsdGVybmF0aXZlCisJICBhcHByb2FjaCB3b3VsZCBiZSB0byByZWx5IG9uIGJ1ZmZlcmluZyBtZXNzYWdlcyBtb25pdG9yaW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTczMzk1OQorCisyMDE2LTAyLTE2IDE2OjE4OjIxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkgIHZrZGV2aWNlOiBhZGQgdGhlIG5lY2Vzc2FyeSBidXQgYXJiaXRyYXJ5IHF1ZXVlIHByaW9yaXR5CisJICBTaWxlbmNlcyBhbiBlcnJvciBpbiB0aGUgdmFsaWRhdGlvbiBsYXllcnMuCisKKzIwMTYtMDItMTYgMTY6MTI6MDcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZrc3dhcHBlcjogYWRkIHRoZSBuZWNlc3NhcnkgY2FsbCB0byBjaGVjayBpZiB0aGUgcGh5c2ljYWwgZGV2aWNlIHN1cHBvcnRzIHRoZSBzdXJmYWNlCisJICBTaWxlbmNlcyBhbiBlcnJvciBpbiB0aGUgdmFsaWRhdGlvbiBsYXllcnMuCisKKzIwMTYtMDItMTYgMTU6NTM6NTYgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a2FwaS5oOgorCSogZXh0L3Z1bGthbi92a2luc3RhbmNlLmM6CisJICB2dWxrYW46IHVwZGF0ZSB0byBTREsgMS4wLjMuMQorCisyMDE2LTAyLTE2IDE1OjM2OjQxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkgIHZ1bGthbi9idWlsZDogc2VhcmNoIGZvciB0aGUgY29ycmVjdCBsaWJyYXJ5CisJICBTREsgMS4wLjEgdXNlZCBsaWJ2dWxrYW4tMS5zbywgMS4wLjIgdXNlcyBsaWJ2dWxrYW4uc28KKworMjAxNi0wMi0xNiAxMTo1MToyOCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5jOgorCSAgdmtzd2FwcGVyOiBpdGVyYXRlIG92ZXIgdGhlIGRldmljZSBxdWV1ZSdzIHVzaW5nIHRoZSBuZXcgaXRlcmF0aW9uIEFQSQorCisyMDE2LTAyLTE2IDExOjQ5OjI0ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuaDoKKwkgIHZrZGV2aWNlOiBhZGQgY2FsbGJhY2sgaXRlcmF0aW9uIG92ZXIgdGhlIGRldmljZSBxdWV1ZSdzCisKKzIwMTYtMDItMTYgMTE6MjI6MzcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3F1ZXVlLmM6CisJKiBleHQvdnVsa2FuL3ZrcXVldWUuaDoKKwkgIHZrcXVldWU6IGFkZCBjb250ZXh0IGhlbHBlcnMKKworMjAxNi0wMi0xMSAwMTozMToxNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmM6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmg6CisJKiBleHQvdnVsa2FuL3ZrZGlzcGxheS5jOgorCSogZXh0L3Z1bGthbi92a2Rpc3BsYXkuaDoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5jOgorCSogZXh0L3Z1bGthbi92a2luc3RhbmNlLmg6CisJKiBleHQvdnVsa2FuL3Zrc2luay5jOgorCSogZXh0L3Z1bGthbi92a3VwbG9hZC5jOgorCSogZXh0L3Z1bGthbi92a3V0aWxzLmM6CisJKiBleHQvdnVsa2FuL3ZrdXRpbHMuaDoKKwkgIHZrdXRpbHM6IG1vdmUgb2JqZWN0LXNwZWNpZmljIGNvbnRleHQgcXVlcmllcyB0byB0aGVpciByZXNwZWN0aXZlIGZpbGVzCisJICB2a3V0aWxzIG5vdyBqdXN0IGNvbnRhaW5zIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdG8gZnVydGhlciBzaW1wbGlmeSByZXRyaWV2aW5nCisJICBtdWx0aXBsZSBvYmplY3RzLgorCisyMDE2LTAyLTExIDAwOjUwOjUzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuaDoKKwkgIHZrZGV2aWNlOiByZW1vdmUgdW5uZWVkZWQgZXJyb3IgcGFyYW1ldGVyIGZyb20gZ2V0X3F1ZXVlKCkKKworMjAxNi0wMi0xMCAxODowNjo0NiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrdXBsb2FkLmM6CisJKiBleHQvdnVsa2FuL3ZrdXBsb2FkLmg6CisJICB2a3VwbG9hZDogaW1wbGVtZW50IGFuIHVwbG9hZGVyIGFic3RyYWN0aW9uCisKKzIwMTYtMDItMTAgMTk6NTA6MjcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a2Rpc3BsYXkuYzoKKwkgIHZrZGlzcGxheTogdW5yZWYgdGhlIGluc3RhbmNlCisJICBmaXhlcyBtZW1vcnkgbGVhaworCisyMDE2LTAyLTEwIDE5OjM0OjU1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5jOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZ1bGthbjogY2hhaW4gdXAgaW4gZmluYWxpemUKKwkgIFRoZXkgd2VyZSBtaXNzaW5nIGluIHNvbWUgY2FzZXMKKworMjAxNi0wMi0xMCAxODo1ODozMiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3Zrc2luay5jOgorCSAgdmtzaW5rOiBvbmx5IHVucmVmIGlmIHRoZSBwb2ludGVycyBhcmUgbm9uLU5VTEwKKworMjAxNi0wMi0xMCAxODowNTo0NyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYzoKKwkgIHZraW1hZ2VtZW1vcnk6IGZyZWUgdGhlIG1hbmFnaW5nIHN0cnVjdCBvbiBfZnJlZQorCSAgZml4ZXMgYSBtZW1vcnkgbGVhaworCisyMDE2LTAyLTA5IDE4OjI2OjQwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkgIHZrZGV2aWNlOiBwZXJmb3JtIGEgd2FpdElkbGUgYmVmb3JlIGRlc3Ryb3lpbmcgdGhlIGRldmljZQorCisyMDE2LTAyLTA5IDE3OjQ2OjUzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtidWZmZXJtZW1vcnkuYzoKKwkqIGV4dC92dWxrYW4vdmtidWZmZXJtZW1vcnkuaDoKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5jOgorCSogZXh0L3Z1bGthbi92a2ltYWdlbWVtb3J5Lmg6CisJICBSZXZlcnQgInZ1bGthbjogcmVtb3ZlIHZpZXdzIGZyb20gdGhlIG1lbW9yeSBvYmplY3RzLiIKKwkgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMWVhODE3Mjk4ZWU0ZDVlZjliMDBmODg4ZjhlYmUxNmE4ODhiMTE1MC4KKworMjAxNi0wMi0wOSAxNzozMToyNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5Lmg6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVycG9vbC5jOgorCSogZXh0L3Z1bGthbi92a2ltYWdlbWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuaDoKKwkgIHZ1bGthbm1lbW9yeTogcmVtb3ZlIGJpbmQgdmFyaWFudHMKKworMjAxNi0wMi0wOSAxNjoyMTowMCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5Lmg6CisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYzoKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5oOgorCSAgdnVsa2FuOiByZW1vdmUgdmlld3MgZnJvbSB0aGUgbWVtb3J5IG9iamVjdHMuCisJICBUaGV5IGFyZSBub3QgdXNlZCBhbmQgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIHRoZSB2aWV3IGJlZm9yZSBiaW5kaW5nIHRoZQorCSAgVmtEZXZpY2VNZW1vcnkgb2JqZWN0IHRvIHRoZW0uCisKKzIwMTYtMDItMDkgMTE6MzQ6NTcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZrc3dhcHBlcjogYWxwaGEgZmxhZ3MgYXJlIG5vdyBzdXBwb3J0ZWQgYnkgTHVuYXJHJ3MgZHJpdmVyCisKKzIwMTYtMDItMDkgMDA6MDc6MzggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi9NYWtlZmlsZS5hbToKKwkqIGV4dC92dWxrYW4vdmsuaDoKKwkqIGV4dC92dWxrYW4vdmtfZndkLmg6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVycG9vbC5jOgorCSogZXh0L3Z1bGthbi92a2J1ZmZlcnBvb2wuaDoKKwkqIGV4dC92dWxrYW4vdmt1cGxvYWQuYzoKKwkgIHZ1bGthbjogYWRkIGEgdnVsa2FuYnVmZmVyIGJ1ZmZlcnBvb2wKKworMjAxNi0wMi0wOCAyMjo0OToxNSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL01ha2VmaWxlLmFtOgorCSogZXh0L3Z1bGthbi9nc3R2dWxrYW4uYzoKKwkqIGV4dC92dWxrYW4vdmtzaW5rLmM6CisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5jOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuaDoKKwkqIGV4dC92dWxrYW4vdmt1cGxvYWQuYzoKKwkqIGV4dC92dWxrYW4vdmt1cGxvYWQuaDoKKwkgIHZ1bGthbjogYWRkIHVwbG9hZCBlbGVtZW50CisKKzIwMTYtMDItMDggMTg6Mjg6MjkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3V0aWxzLmM6CisJICB2a3V0aWxzOiBmaXggYXNzZXJ0IGludmVyc2lvbgorCisyMDE2LTAyLTA4IDE4OjI3OjE2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtidWZmZXJtZW1vcnkuaDoKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5oOgorCSAgdnVsa2FuOiBhZGQgY2FwcyBmZWF0dXJlIG5hbWVzIGZvciB0aGUgYnVmZmVyIGFuZCBpbWFnZSBtZW1vcmllcworCisyMDE2LTAyLTA4IDE0OjQ0OjIwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtzaW5rLmM6CisJKiBleHQvdnVsa2FuL3ZrdXRpbHMuYzoKKwkqIGV4dC92dWxrYW4vdmt1dGlscy5oOgorCSAgdnVsa2FuOiBhZGQgZGV2aWNlIHRvIGhhbmRsZV9jb250ZXh0X3F1ZXJ5CisKKzIwMTYtMDItMDggMTQ6MzI6MTAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3NpbmsuYzoKKwkqIGV4dC92dWxrYW4vdmt1dGlscy5jOgorCSAgdnVsa2FuOiBtb3ZlIGluc3RhbmNlX29wZW4gaW50byB0aGUgdXRpbGl0eSBlbnN1cmVfZWxlbWVudF9kYXRhCisJICBTbyBjYWxsZXJzIGRvbid0IGhhdmUgdG8gcGVyZm9ybSBpdCB0aGVtc2VsdmVzLgorCisyMDE2LTAyLTA4IDE0OjI1OjQ5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5jOgorCSogZXh0L3Z1bGthbi92a2luc3RhbmNlLmg6CisJKiBleHQvdnVsa2FuL3Zrc2luay5jOgorCSAgdmtpbnN0YW5jZTogYWRkIHNpZ25hbCBmb3Igb3ZlcnJpZGluZyBkZXZpY2UgY3JlYXRpb24KKworMjAxNi0wMi0wOCAxMjoyMjoxMSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5Lmg6CisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYzoKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5oOgorCSogZXh0L3Z1bGthbi92a21hY3Jvcy5oOgorCSogZXh0L3Z1bGthbi92a21lbW9yeS5jOgorCSogZXh0L3Z1bGthbi92a21lbW9yeS5oOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZ1bGthbjogc2VwYXJhdGUgYWxsb2NhdGlvbiBhbmQgYmluZGluZyBvZiBtZW1vcnkKKworMjAxNi0wMi0wOCAxMjoxNDo0NCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmM6CisJICB2a2J1ZmZlcm1lbW9yeTogZm9sbG93IHRoZSByZXN0IG9mIHRoZSBzdHJ1Y3QgbWFjcm9zCisKKzIwMTYtMDItMDUgMTk6MzE6NDkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZrc3dhcHBlcjogdXNlIGJ1ZmZlciBtZW1vcnkgdG8gdXBsb2FkIHZpZGVvIGZyYW1lcyB0byB0aGUgR1BVCisKKzIwMTYtMDItMDUgMTk6MTg6NDAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi9NYWtlZmlsZS5hbToKKwkqIGV4dC92dWxrYW4vdmsuaDoKKwkqIGV4dC92dWxrYW4vdmtfZndkLmg6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5Lmg6CisJKiBleHQvdnVsa2FuL3ZraW5zdGFuY2UuYzoKKwkgIHZ1bGthbjogYWRkIGEgYnVmZmVyIG1lbW9yeSBhbGxvY2F0b3IKKwkgIFdyYXBzIHRoZSBWa0J1ZmZlciBpbiBhIEdzdE1lbW9yeSBzdWJjbGFzcy4KKworMjAxNi0wMi0wNSAxOToxMTo1MSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrbWVtb3J5Lmg6CisJICB2a21lbW9yeTogYWxpZ24gc3RydWN0IG1lbWJlcnMgaW4gdGhlIGhlYWRlcgorCisyMDE2LTAyLTA1IDE5OjEwOjQzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmttYWNyb3MuaDoKKwkgIHZrbWFjcm9zOiB1c2Ugc3BlY2lmaWMgX0lOSVQgbWFjcm9zIHRvIGluaXRpYWxpemUgc3RydWN0dXJlcworCisyMDE2LTAyLTA1IDE5OjA5OjQxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5jOgorCSogZXh0L3Z1bGthbi92a2ltYWdlbWVtb3J5Lmg6CisJICB2a2ltYWdlbWVtb3J5OiBhZGQgZ2V0X3t3aWR0aCxoZWlnaHQpIGZ1bmN0aW9ucworCisyMDE2LTAxLTI3IDE1OjIwOjQ5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGV4dC92dWxrYW4vdmthcGkuaDoKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5jOgorCSogZXh0L3Z1bGthbi92a2luc3RhbmNlLmg6CisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5jOgorCSogZXh0L3Z1bGthbi94Y2Ivdmt3aW5kb3dfeGNiLmM6CisJICB2dWxrYW46IHVwZGF0ZSB0byByZWxlYXNlIDEuMC4xLjEKKworMjAxNi0wMS0yMiAxNDozNDowNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3hjYi92a3dpbmRvd194Y2IuYzoKKwkgIHZ1bGthbi94Y2I6IGZsdXNoIGFmdGVyIG1hcHBpbmcgdGhlIHdpbmRvdworCSAgT3RoZXJ3aXNlIHRoZSBtYXAgbWF5IG5vdCByZWFjaCB0aGUgc2VydmVyIGFuZCBub3QgYXBwZWFyLgorCisyMDE2LTAxLTA0IDE2OjUxOjI2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtzd2FwcGVyLmM6CisJICB2a3N3YXBwZXI6IGZpeCBzZW1hcGhvcmUgdXNhZ2UKKworMjAxNS0xMi0zMSAxNjozNDoyNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmM6CisJKiBleHQvdnVsa2FuL3ZraW5zdGFuY2UuYzoKKwkgIHZ1bGthbjogYWRkIHNvbWUgZGVidWdnaW5nIGFib3V0IHRoZSBzdXBwb3J0ZWQgZXh0ZW5zaW9ucworCisyMDE1LTEyLTMxIDE1OjU4OjM3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtzd2FwcGVyLmM6CisJICB2a3N3YXBwZXI6IGdldCB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgZnJvbSB0aGUgY29ycmVjdCBvYmplY3QKKwkgIEdldFBoeXNpY2FsRGV2aWNlKiBmdW5jdGlvbnMgYXJlIGluc3RhbmNlIGZ1bmN0aW9ucyByYXRoZXIgdGhhbiBkZXZpY2UKKwkgIGZ1bmN0aW9ucy4KKworMjAxNS0xMi0zMSAxNTozODozNyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZraW5zdGFuY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5oOgorCSAgdmtpbnN0YW5jZTogYWRkIHRoZSBuZWNlc3Nhcnkgd2luc3lzIGV4dGVuc2lvbgorCisyMDE1LTEyLTMxIDE1OjM0OjQ1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtfZndkLmg6CisJKiBleHQvdnVsa2FuL3ZrZGlzcGxheS5oOgorCSAgdmtkaXNwbGF5OiBmb3J3YXJkIGRlY2xhcmUgR3N0VnVsa2FuRGlzcGxheVR5cGUKKworMjAxNS0xMi0zMSAxNTozMjoxNSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrYXBpLmg6CisJICB2a2FwaTogcmVtb3ZlIHVubmVlZGVkIGhlYWRlcnMKKwkgIHZrYXBpIGlzIGZvciBhY2Nlc3NpbmcgdGhlIHZ1bGthbiBoZWFkZXJzIHdpdGggdGhlIGNvcnJlY3QgZGVmaW5lcyBhcHBsaWVkIHNvCisJICBkb2Vzbid0IG5lZWQgYW55IGludGVyYWwgaGVhZGVycy4KKworMjAxNS0xMi0zMCAxNToxNTo0MCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYzoKKwkgIHZraW1hZ2VtZW1vcnk6IGZpeCB0aGUgbWVtb3J5IGJhcnJpZXIgYWNjZXNzIG1hc2tzCisJICBzaWxlbmNlcyB0aGUgZm9sbG93aW5nIHdhcm5pbmdzIGZyb20gdGhlIHZhbGlkYXRpb24gbGF5ZXIKKwkgIEFjY2Vzc01hc2sgeHh4IG11c3QgaGF2ZSByZXF1aXJlZCBhY2Nlc3MgYml0IHh4eCBhbmQgbWF5IGhhdmUgb3B0aW9uYWwgYml0cyAwCisJICB3aGVuIGxheW91dCBpcyBWS19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfe1NSQyxEU1R9X09QVElNQUwKKworMjAxNS0xMi0zMCAxNToxNDoyMyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5jOgorCSAgdmtzd2FwcGVyOiBvbmx5IHdhaXQgb24gdGhlIHNlbWFwaG9yZSBvbmNlCisJICBJdCdzIGludmFsaWQgdXNhZ2UgYW5kIHdlIG1heSBkZWFkbG9jaworCisyMDE1LTEyLTMxIDAxOjI3OjU0ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5jOgorCSAgdmtpbWFnZW1lbW9yeTogaW5pdGlhbGl6ZSBmbGFncyBhbmQgZG9uJ3QgY3Jhc2ggb24gZXJyb3JzCisKKzIwMTUtMTItMzAgMTQ6MDY6MDEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a2RldmljZS5jOgorCSogZXh0L3Z1bGthbi92a2Vycm9yLmM6CisJKiBleHQvdnVsa2FuL3ZrZXJyb3IuaDoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5jOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZ1bGthbjogdXBkYXRlIGVycm9yIGRiIGZvciAwLjEwLjIKKworMjAxNS0xMi0yOSAxNjowNToxNyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrLmg6CisJKiBleHQvdnVsa2FuL3ZrYXBpLmg6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmM6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmg6CisJKiBleHQvdnVsa2FuL3ZrZGlzcGxheS5jOgorCSogZXh0L3Z1bGthbi92a2Rpc3BsYXkuaDoKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5jOgorCSogZXh0L3Z1bGthbi92a2luc3RhbmNlLmM6CisJKiBleHQvdnVsa2FuL3ZrbWFjcm9zLmg6CisJKiBleHQvdnVsa2FuL3ZrbWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZrbWVtb3J5Lmg6CisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5jOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuaDoKKwkqIGV4dC92dWxrYW4vdmt1dGlscy5jOgorCSogZXh0L3Z1bGthbi92a3dpbmRvdy5jOgorCSogZXh0L3Z1bGthbi92a3dpbmRvdy5oOgorCSogZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5jOgorCSogZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5oOgorCSogZXh0L3Z1bGthbi94Y2Ivdmt3aW5kb3dfeGNiLmM6CisJKiBleHQvdnVsa2FuL3hjYi92a3dpbmRvd194Y2IuaDoKKwkgIHZ1bGthbjogdXBkYXRlIHRvIFNESyAwLjEwLjIKKworMjAxNS0xMi0wNyAxNzozMzo0MyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL01ha2VmaWxlLmFtOgorCSogZXh0L3Z1bGthbi92ay5oOgorCSogZXh0L3Z1bGthbi92a2RldmljZS5jOgorCSogZXh0L3Z1bGthbi92a2Rpc3BsYXkuYzoKKwkqIGV4dC92dWxrYW4vdmtkaXNwbGF5Lmg6CisJKiBleHQvdnVsa2FuL3ZraW5zdGFuY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5oOgorCSogZXh0L3Z1bGthbi92a3NpbmsuYzoKKwkqIGV4dC92dWxrYW4vdmt1dGlscy5jOgorCSogZXh0L3Z1bGthbi92a3V0aWxzLmg6CisJKiBleHQvdnVsa2FuL3ZrdXRpbHNfcHJpdmF0ZS5oOgorCSAgdnVsa2FuOiBpbXBsZW1lbnQgR3N0Q29udGV4dCBoZWxwZXJzCisJICBCYXNlZCBvZmYgbGliZ3N0Z2wncyBpbXBsZW1lbnRhdGlvbgorCisyMDE1LTEyLTA3IDE3OjIxOjEyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtfZndkLmg6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmM6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmg6CisJKiBleHQvdnVsa2FuL3Zrc2luay5jOgorCSAgdmtkZXZpY2U6IHJlbW92ZSBnc3RfdnVsa2FuX2RldmljZV9jbG9zZSgpCisJICBXaGVuIHNoYXJpbmcgdGhlIGRldmljZSBiZXR3ZWVuIG11bHRpcGxlIGVsZW1lbnRzL2FwcGxpY2F0aW9uLCB3ZSBuZWVkCisJICB0byB1c2UgdGggZXJlZmNvdW50IHRvIGtub3cgd2hlbiB0byBjbG9zZSB0aGUgZGV2aWNlLgorCisyMDE1LTEyLTA3IDE3OjAwOjM3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtfZndkLmg6CisJKiBleHQvdnVsa2FuL3ZraW5zdGFuY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5oOgorCSogZXh0L3Z1bGthbi92a3NpbmsuYzoKKwkgIHZraW5zdGFuY2U6IHJlbW92ZSBnc3RfdnVsa2FuX2luc3RhbmNlX2Nsb3NlCisJICBTaGFyaW5nIHRoZSBpbnN0YW5jZSBhY3Jvc3MgbXVsdGlwbGUgZWxlbWVudHMvYXBwbGljYXRpb24gd2lsbCByZXF1aXJlCisJICB1c2luZyB0aGUgcmVmY291bnQgaW5zdGVhZCB0byBrbm93IHdoZW4gdG8gY2xvc2UgYW5kIGRlc3Ryb3kgdGhlIGluc3RhbmNlLgorCisyMDE1LTEyLTA3IDE2OjQ2OjI4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtzd2FwcGVyLmM6CisJICB2a3N3YXBwZXI6IHJlbW92ZSBvdXRkYXRlZCBjb21tZW50CisKKzIwMTUtMTItMDcgMTY6Mzk6NTMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZrc3dhcHBlcjogYWx3YXlzIG1hdGNoIGxvY2svdW5sb2NrIG9mIHRoZSByZW5kZXIgbG9jaworCSAgSWYgYSBkcmF3IGV2ZW50IGNvbWVzIGZyb20gdGhlIHdpbnN5cyBiZWZvcmUgd2UndmUgcmVuZGVyZWQgYSBidWZmZXIgd2Ugd2VyZQorCSAgZGVhZGxvY2tpbmcuCisKKzIwMTUtMTItMDIgMTc6NTQ6MzAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a2ltYWdlbWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZrbWVtb3J5LmM6CisJICB2a21lbW9yeTogZGVidWcgb3V0cHV0IHRoZSBtZW1vcnkgcHJvcGVydGllcyByZXF1ZXN0ZWQKKworMjAxNS0xMi0wMiAxNzoxNDo0OSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYzoKKwkgIHZraW1hZ2VtZW1vcnk6IGRvbid0IGxlYWsgR3N0TWFwSW5mbyBpbiBmYWlsdXJlIGNhc2VzIG9uIF9tYXAoKQorCisyMDE1LTEyLTAyIDE3OjEwOjM5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5jOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZ1bGthbjogZGUtQzk5IHN0cnVjdCBkZWNsYXJhdGlvbnMKKworMjAxNS0xMi0wMSAxODozNzozNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrX2Z3ZC5oOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkqIGV4dC92dWxrYW4vdmtzd2FwcGVyLmg6CisJKiBleHQvdnVsa2FuL3Zrd2luZG93LmM6CisJKiBleHQvdnVsa2FuL3Zrd2luZG93Lmg6CisJKiBleHQvdnVsa2FuL3hjYi94Y2JfZXZlbnRfc291cmNlLmM6CisJICB2a3dpbmRvdy9zd2FwcGVyOiBpbXBsZW1lbnQgcmVkcmF3IGhhbmRsaW5nCisJICBvbmx5IHhjYiBoYXMgYmVlbiBpbXBsZW1lbnRlZAorCisyMDE1LTEyLTAxIDE2OjI4OjI4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkaXNwbGF5LmM6CisJKiBleHQvdnVsa2FuL3ZrZGlzcGxheS5oOgorCSogZXh0L3Z1bGthbi92a3NpbmsuaDoKKwkqIGV4dC92dWxrYW4vdmtzd2FwcGVyLmM6CisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5oOgorCSogZXh0L3Z1bGthbi92a3dpbmRvdy5jOgorCSogZXh0L3Z1bGthbi92a3dpbmRvdy5oOgorCSogZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5jOgorCSogZXh0L3Z1bGthbi94Y2Ivdmt3aW5kb3dfeGNiLmM6CisJKiBleHQvdnVsa2FuL3hjYi94Y2JfZXZlbnRfc291cmNlLmM6CisJICB2dWxrYW46IGltcGxlbWVudCBxdWl0dGluZyBhbmQgcmVzaXppbmcgdGhlIHdpbmRvdworCSAgQXMgYmVmb3JlLCBvbmx5IHhjYiBoYXMgYmVlbiBpbXBsZW1lbnRlZC4KKworMjAxNS0xMC0yNCAxNzoyOTowNSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJKiBleHQvTWFrZWZpbGUuYW06CisJKiBleHQvdnVsa2FuLy5naXRpZ25vcmU6CisJKiBleHQvdnVsa2FuL01ha2VmaWxlLmFtOgorCSogZXh0L3Z1bGthbi9nc3R2dWxrYW4uYzoKKwkqIGV4dC92dWxrYW4vdmsuaDoKKwkqIGV4dC92dWxrYW4vdmtfZndkLmg6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmM6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmg6CisJKiBleHQvdnVsa2FuL3ZrZGlzcGxheS5jOgorCSogZXh0L3Z1bGthbi92a2Rpc3BsYXkuaDoKKwkqIGV4dC92dWxrYW4vdmtlcnJvci5jOgorCSogZXh0L3Z1bGthbi92a2Vycm9yLmg6CisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYzoKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5oOgorCSogZXh0L3Z1bGthbi92a2luc3RhbmNlLmM6CisJKiBleHQvdnVsa2FuL3ZraW5zdGFuY2UuaDoKKwkqIGV4dC92dWxrYW4vdmttZW1vcnkuYzoKKwkqIGV4dC92dWxrYW4vdmttZW1vcnkuaDoKKwkqIGV4dC92dWxrYW4vdmtxdWV1ZS5jOgorCSogZXh0L3Z1bGthbi92a3F1ZXVlLmg6CisJKiBleHQvdnVsa2FuL3Zrc2luay5jOgorCSogZXh0L3Z1bGthbi92a3NpbmsuaDoKKwkqIGV4dC92dWxrYW4vdmtzd2FwcGVyLmM6CisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5oOgorCSogZXh0L3Z1bGthbi92a3V0aWxzLmM6CisJKiBleHQvdnVsa2FuL3ZrdXRpbHMuaDoKKwkqIGV4dC92dWxrYW4vdmt3aW5kb3cuYzoKKwkqIGV4dC92dWxrYW4vdmt3aW5kb3cuaDoKKwkqIGV4dC92dWxrYW4veGNiL01ha2VmaWxlLmFtOgorCSogZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5jOgorCSogZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5oOgorCSogZXh0L3Z1bGthbi94Y2Ivdmt3aW5kb3dfeGNiLmM6CisJKiBleHQvdnVsa2FuL3hjYi92a3dpbmRvd194Y2IuaDoKKwkqIGV4dC92dWxrYW4veGNiL3hjYl9ldmVudF9zb3VyY2UuYzoKKwkqIGV4dC92dWxrYW4veGNiL3hjYl9ldmVudF9zb3VyY2UuaDoKKwkgIG5ldyB2dWxrYW4gYmFzZWQgdmlkZW8gc2luaworCSAgQ3VycmVudGx5IHhjYiBpcyB0aGUgb25seSB3aW5zeXMgdGhhdCBpcyBpbXBsZW1lbnRlZCBhbmQgdGhlcmUncyBubyByZWRyYXdzIGV0CisJICBhbAorCisyMDE2LTAyLTE2IDEyOjM4OjIxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9maWxlcy9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2ZpbGVzL2Nicl9zdHJlYW0ubXAzOgorCSogdGVzdHMvZmlsZXMvc3RyZWFtLm1wMjoKKwkqIHRlc3RzL2ZpbGVzL3Zicl9zdHJlYW0ubXAzOgorCSAgdGVzdHM6IHJlbW92ZSB0ZXN0IGZpbGVzIG5vIGxvbmdlciBuZWVkZWQKKworMjAxNi0wMi0xNiAxMDo0NDozMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogTWFrZWZpbGUuYW06CisJKiBjb25maWd1cmUuYWM6CisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9jcy5zZ21sOgorCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNlY3Rpb25zLnR4dDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGcxMjMueG1sOgorCSogZXh0L01ha2VmaWxlLmFtOgorCSogZXh0L21wZzEyMy9NYWtlZmlsZS5hbToKKwkqIGV4dC9tcGcxMjMvZ3N0bXBnMTIzYXVkaW9kZWMuYzoKKwkqIGV4dC9tcGcxMjMvZ3N0bXBnMTIzYXVkaW9kZWMuaDoKKwkqIGdzdC1wbHVnaW5zLWJhZC5zcGVjLmluOgorCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy8uZ2l0aWdub3JlOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMuYzoKKwkgIG1wZzEyMzogbW92ZSBwbHVnaW4gZnJvbSAtYmFkIHRvIC11Z2x5CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE5ODQ5CisKKzIwMTYtMDItMTYgMTk6NTk6MTMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2d0ay9nc3RndGtiYXNlc2luay5jOgorCSogZXh0L2d0ay9nc3RndGtiYXNlc2luay5oOgorCSAgZ3RrKGdsKXNpbms6IHJlbW92ZSB0aGUgc2lnbmFsIGhhbmRsZXJzIG9uIGZpbmFsaXplCisJICBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHNpbmsgZWxlbWVudCB3aWxsIGJlIGZyZWVkIGJlZm9yZSB0aGUgd2lkZ2V0IGlzCisJICBkZXN0cm95ZWQuICBXaGVuIHRoZSB3aWRnZXQgd2FzIGV2ZW50dWFsbHkgZGVzdHJveWVkLCBpdCB3YXMgYXR0ZW1wdGluZyB0bworCSAgYWNjZXNzIG1lbWJlciB2YXJpYWJsZXMgb2YgdGhlIGZyZWVkIHNpbmsgc3RydWN0IHdoaWNoIHJlc3VsdGVkIGluIHVuZGVmaW5lZAorCSAgYmVoYXZpb3VyLgorCSAgRml4IGJ5IGRpc2Nvbm5lY3Rpbmcgb3VyIHNpZ25hbCBvbiBmaW5hbGl6ZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjIwOTgKKworMjAxNi0wMi0xNiAwODo0ODoyMyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmM6CisJICBnbDogUmVtb3ZlIGxlZnRvdmVyIGdfcHJpbnRzCisJICBPbmUgd2FzIGNvbW1lbnRlZCBvdXQsIGJ1dCB3ZSBhbHNvIGRvbid0IHVzZSAvLyBjb21tZW50cyA6KQorCisyMDE2LTAyLTE2IDE0OjQxOjM3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmM6CisJICBnbGRlYnVnOiB1c2UgdGhlIGNvcnJlY3Qgc3BlbGxpbmcgZm9yIGJlaGF2aW9yCisJICBUaGUgaGVhZGVycyB1c2UgdGhlIGFtZXJpY2FuIHNwZWxsaW5nIG9mIGJlaGF2aW9yIG5vdCB0aGUgVUsvQVVTIHZlcnNpb24gd2l0aAorCSAgdGhlIGV4dHJhIFUuCisKKzIwMTYtMDItMTYgMTM6NTg6NDIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuYzoKKwkgIGdsY29udGV4dDogZG9uJ3QgZW5hYmxlIEdMIGRlYnVnIGZvciBtZXNzYWdlcyB0aGF0IHdvbid0IGJlIGxvZ2dlZAorCSAgVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gdG8gYXZvaWQgcG9pbnRsZXNzIHN0cmluZyBwcm9jZXNzaW5nLgorCisyMDE2LTAyLTE2IDEzOjAxOjIwICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogZXh0L2dsL2dzdGdsdmlkZW9mbGlwLmM6CisJICBnbHZpZGVvZmxpcDogZG9uJ3QgaWdub3JlIG1ldGhvZCBjaGFuZ2VzIHdoZW4gY2FwcyBhcmVuJ3Qgc2V0ICh5ZXQpCisKKzIwMTYtMDItMTYgMDA6MzM6NTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIE1ha2VmaWxlLmFtOgorCSogY29uZmlndXJlLmFjOgorCSogZ3N0L3J0cC9NYWtlZmlsZS5hbToKKwkqIGdzdC9ydHAvZ3N0cnRwLmM6CisJKiBnc3QvcnRwL2dzdHJ0cGgyNjVkZXBheS5jOgorCSogZ3N0L3J0cC9nc3RydHBoMjY1ZGVwYXkuaDoKKwkqIGdzdC9ydHAvZ3N0cnRwaDI2NXBheS5jOgorCSogZ3N0L3J0cC9nc3RydHBoMjY1cGF5Lmg6CisJICBydHA6IG1vdmUgUlRQIEguMjY1IHBheWxvYWRlci9kZXBheWxvYWRlciB0byAtZ29vZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTYwNgorCisyMDE1LTEwLTA3IDIzOjQ5OjU4ICswMjAwICBTdGlhbiBTZWxuZXMgPHN0aWFuQHBleGlwLmNvbT4KKworCSogY29uZmlndXJlLmFjOgorCSogZ3N0L25ldHNpbS9NYWtlZmlsZS5hbToKKwkqIGdzdC9uZXRzaW0vZ3N0bmV0c2ltLmM6CisJKiBnc3QvbmV0c2ltL2dzdG5ldHNpbS5oOgorCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9uZXRzaW0uYzoKKwkgIG5ldHNpbTogQWRkIG5ldHNpbSBlbGVtZW50CisJICBSZXN1cnJlY3RlZCBmcm9tIHRoZSBGYXJzdHJlYW0gcmVwb3NpdG9yeSBhbmQgZ2l2ZW4gYW4KKwkgIG92ZXJoYXVsIHRvIGZpeCByYWNlcywgZGVhZGxvY2tzIGV0Yy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYyNTIKKworMjAxNS0xMS0yMCAxOTozODowMyArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdGRhc2hkZW11eC5jOgorCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgZGFzaGRlbXV4OiBnc3RfZGFzaF9kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlIHJldHVybnMgcG9zaXRpdmUgdmFsdWVzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyMzc0CisKKzIwMTYtMDItMTAgMTA6MzE6MTkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmM6CisJICBnbDogc3luY21ldGE6IGRlZmluZSBHTF9USU1FT1VUX0lHTk9SRUQgaW4gbW9yZSBwb3J0YWJsZSB3YXkKKworMjAxNi0wMi0xMCAxNjozNzoyMiArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5jOgorCSAgZ3N0Z2xzaGFkZXI6IGNhY2hlIHVuaWZvcm0gbG9jYXRpb25zCisJICBBdm9pZCByZWR1bmRhbnQgY2FsbHMgdG8gZ2xHZXRVbmlmb3JtTG9jYXRpb24uIFRoZSByZXN1bHRzIGNhbiBiZSBjYWNoZWQgb25jZQorCSAgdGhlIHNoYWRlciBoYXMgYmVlbiBsaW5rZWQuCisKKzIwMTYtMDItMTAgMTU6NDA6MDIgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5tOgorCSAgYXBwbGVtZWRpYTogdmlkZW90ZXN0dXJlY2FjaGU6IGxldCBDVk9wZW5HTEVTVGV4dHVyZUNhY2hlIGZsdXNoIGV2ZXJ5IDFzCisJICBMZWF2ZSBrQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZU1heGltdW1UZXh0dXJlQWdlS2V5IHRvIHRoZSBkZWZhdWx0ICgxcykuIFdlIHVzZWQKKwkgIHRvIHNldCBpdCB0byAwIGFuZCBmbHVzaCBtYW51YWxseSwgYnV0IGFwcGFyZW50bHkgKGxvb2tpbmcgYXQgdGhlIEdMRVMgcHJvZmlsZXIpCisJICAwIG1lYW5zICJkaXNhYmxlIHRoZSBjYWNoZSBlbnRpcmVseSIuCisKKzIwMTYtMDItMTAgMTM6MDg6NDMgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250ZXh0LmM6CisJICBnc3RnbGNvbnRleHQ6IG1pY3JvIG9wdGltaXphdGlvbiB0byBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkCisJICBJbnZva2UgdGhlIGNhbGxiYWNrIHJpZ2h0IGF3YXkgd2hlbiBjYWxsZWQgb24gdGhlIGNvbnRleHQgdGhyZWFkLiBSZW1vdmVzCisJICBvdmVyaGVhZCB3aGVuIG5lc3RpbmcgbGliZ3N0Z2wgY2FsbHMgKGZvciBleGFtcGxlIHdoZW4gd29ya2luZyB3aXRoIHRoZSBzeW5jCisJICBtZXRhKS4KKworMjAxNi0wMS0wNiAyMTozOTowMCArMDAwMCAgSnVsaWVuIE1PVVRURSA8anVsaWVuQG1vdXR0ZS5uZXQ+CisKKwkqIGV4dC9ydG1wL2dzdHJ0bXBzaW5rLmM6CisJKiBleHQvcnRtcC9nc3RydG1wc2luay5oOgorCSAgcnRwbXNpbms6IEltcGxlbWVudCBzZXRjYXBzIHRoYXQgdXNlcyBzdHJlYW1oZWFkZXIKKwkgIFRoaXMgYWxsb3cgYWRkaW5nIHJ0bXBzaW5rIGFmdGVyIHRoZSBmbHYgc3RyZWFtaW5nIGhhdmUgc3RhcnRlZC4gT3RoZXJ3aXNlLAorCSAgRkxWIHN0cmVhbWhlYWRlciBpcyBuZXZlciBzZW50IHRvIHRoZSBzZXJ2ZXIsIHdoaWNoIGNhbm5vdCBmaWd1cmUtb3V0CisJICB3aGF0IGlzIHRoaXMgc3RyZWFtIGFib3V0LiBJdCBzaG91bGQgYWxzbyBoZWxwIGluIGNlcnRhaW4gcmVuZWdvdGlhdGlvbgorCSAgZmlndXJlcy4gVGhlIHNpbmsgd2lsbCBubyBsb25nZXIgd29yayB3aXRob3V0IGFuIHN0cmVhbWhlYWRlciBpbiBjYXBzLAorCSAgdGhvdWdoIHRoZXJlIGlzIG5vIGtub3duIGltcGxlbWVudGF0aW9uIG9mIGZsdmRlbXV4IHRoYXQgZG9lcyBub3QKKwkgIHN1cHBvcnQgdGhpcy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAyNDIKKworMjAxNi0wMi0wOSAyMTozNToxOSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jOgorCSAgbXNzZGVtdXg6IHJlbW92ZSB1bm5lY2Vzc2FyeSBjaGVjaworCSAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50IGhhcyB0aGUgdmFsdWUgb2YgZ19saXN0X3ByZXZpb3VzIChpdGVyKSB3aGljaCBoYXMKKwkgIGp1c3QgYmVlbiBjaGVja2VkLiBObyBuZWVkIHRvIGNoZWNrIGl0IGFnYWluLgorCSAgSnVzdCB0byBiZSBzYWZlLCB1c2UgYSBnX2Fzc2VydCgpIHRvIGNoZWNrIGZyYWdtZW50IGJlZm9yZSBkZXJlZmVyZW5jaW5nLgorCSAgQ0lEICMxMzUyMDQxCisKKzIwMTYtMDItMDkgMTc6MjQ6NTAgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IHBsdWcgbXBkIGNsaWVudCBsZWFrCisJICBPbiBwYXJzaW5nIGVycm9yLCBmcmVlIHRoZSBtcGQgY2xpZW50IG9iamVjdAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDEyMAorCisyMDE2LTAxLTA0IDEyOjEyOjQ1ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IGZpeCBtZW1vcnkgbGVhayBpbiBnc3RfZGFzaF9kZW11eF91cGRhdGVfbWFuaWZlc3RfZGF0YQorCSAgbmV3X2NsaWVudCBsb2NhbCB2YXJpYWJsZSB3YXMgbm90IGZyZWVkIGluIGNhc2Ugb2YgZXJyb3JzLgorCSAgQWxzbywgdGhlIGJ1ZmZlciBpcyBub3QgdW5tYXBwZWQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTIwCisKKzIwMTUtMTEtMTAgMjI6MDE6MzggKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RkYXNoZGVtdXguYzoKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgbXBkcGFyc2VyOiByZW5hbWVkIGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X3NlZ21lbnRfYXZhaWxhYmlsaXR5X2VuZF90aW1lIHRvIGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X3NlZ21lbnRfYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUKKwkgIFRoZSBmdW5jdGlvbiBhY3R1YWxseSByZXR1cm5zIHRoZSBzZWdtZW50IGF2YWlsYWJpbGl0eSBzdGFydCB0aW1lIChhcyBkZWZpbmVkIGJ5IHRoZSBzdGFuZGFyZCkuCisJICBUaGF0IGlzIGF0IHRoZSBlbmQgb2YgdGhlIHNlZ21lbnQsIGJ1dCBpdCBpcyBjYWxsZWQgYXZhaWxhYmlsaXR5IHN0YXJ0IHRpbWUuCisJICBBdmFpbGFiaWxpdHkgZW5kIHRpbWUgaXMgc29tZXRoaW5nIGVsc2UgKHRoZSB0aW1lIHdoZW4gdGhlIHNlZ21lbnQgaXMgbm8gbG9uZ2VyCisJICBhdmFpbGFibGUgb24gdGhlIHNlcnZlcikuIFRoZSBmdW5jdGlvbiBuYW1lIHdhcyBtaXNsZWFkaW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzY1NQorCisyMDE1LTExLTEwIDIyOjAwOjU4ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJICBtcGRwYXJzZXI6IGNvcnJlY3RlZCBnZXR0aW5nIHNlZ21lbnQgYXZhaWxhYmlsaXR5CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NjU1CisKKzIwMTUtMTEtMTkgMTU6MzA6MzQgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgbXBkcGFyc2VyOiB0ZXN0czogYWRkZWQgdW5pdCB0ZXN0IGZvciBnZXR0aW5nIHNlZ21lbnQgYXZhaWxhYmlsaXR5IHdoZW4gc2VnbWVudCB0aW1lbGluZSBpcyB1c2VkCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NjU1CisKKzIwMTYtMDEtMDcgMTI6NTA6MDYgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYzoKKwkgIGFkYXB0aXZlX2RlbXV4OiB0ZXN0czogaW1wcm92ZWQgdmFsaWRhdGlvbiBvZiBwYWRzCisJICBXaGVuIHJlbW92aW5nIGEgcGFkLCB0aGUgb25fZGVtdXhQYWRSZW1vdmVkIGZ1bmN0aW9uIG11c3QgZmluZCBhIHN0cmVhbQorCSAgZm9yIHRoYXQgcGFkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDMyOAorCisyMDE2LTAxLTA3IDEyOjQ4OjEyICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmM6CisJICBhZGFwdGl2ZV9kZW11eDogdGVzdHM6IGZpeCBwYWQgdXNlZCBmb3IgQXBwU2luayBldmVudAorCSAgb25fZGVtdXhOZXdQYWQgcmVnaXN0ZXJlZCB0aGUgb25fYXBwc2lua19ldmVudCBjYWxsYmFjayBvbiBhIHdyb25nIHBhZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAzMjgKKworMjAxNi0wMS0wOCAxNjoyNToxMiArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmg6CisJICBhZGFwdGl2ZWRlbXV4OiB0ZXN0czogcmVtb3ZlIHVudXNlZCBkZW11eF9zZW50X2VvcyBjYWxsYmFjaworCSAgVGhlIGRlbXV4X3NlbnRfZW9zIGNhbGxiYWNrIGlzIHVudXNlZCBpbiB0ZXN0cy4gSXQgd2FzIGFsc28gcmVnaXN0ZXJlZCBvbgorCSAgYSB3cm9uZyBwYWQsIHNvIGl0IGFjdHVhbGx5IHRyaWdnZXJlZCB3aGVuIGRlbXV4IHJlY2VpdmVkIGVvcyBmcm9tIGEKKwkgIGZyYWdtZW50IGRvd25sb2FkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDMyOAorCisyMDE2LTAxLTA4IDE4OjE3OjIxICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogdGVzdHM6IHJlbW92ZSB1bm5lZWRlZCB5b3V0dWJlIHhtbG5zIGZyb20gbWFuaWZlc3RzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMzI4CisKKzIwMTYtMDItMDkgMTQ6MDc6NTQgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92dGRlYy5jOgorCSAgYXBwbGVtZWRpYTogdnRkZWM6IGltcGxlbWVudCBHc3RFbGVtZW50OjpzZXRfY29udGV4dAorCisyMDE2LTAyLTA5IDE0OjA0OjA5ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkgIGFwcGxlbWVkaWE6IHZ0ZGVjOiB1cGRhdGUgY29weXJpZ2h0CisKKzIwMTYtMDItMDkgMTM6NDI6NDggKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tOgorCSAgYXBwbGVtZWRpYTogYXZmdmlkZW9zcmM6IGltcGxlbWVudCBHc3RFbGVtZW50OjpzZXRfY29udGV4dAorCSAgTmVlZGVkIHRvIHByb3Blcmx5IGhhbmRsZSBnc3QuZ2wuYXBwX2NvbnRleHQocykuCisKKzIwMTYtMDItMDkgMTM6Mzk6MTggKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tOgorCSAgYXBwbGVtZWRpYTogYXZmdmlkZW9zcmM6IGFkZCBteXNlbGYgdG8gdGhlIGNvcHlyaWdodCBob2xkZXJzCisKKzIwMTYtMDItMDkgMTM6NTY6MzIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogd2luMzIvY29tbW9uL2xpYmdzdGdsLmRlZjoKKwkgIGdsOiB1cGRhdGUgd2luMzIgLmRlZiBmaWxlCisKKzIwMTYtMDItMDkgMTM6MDg6MjEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc3luY21ldGEuYzoKKwkgIGdsc3luY21ldGE6IGFkZCBjb21wYXRpYmlsaXR5IGRlZmluaXRpb24gZm9yIEdMX1RJTUVPVVRfSUdOT1JFRAorCisyMDE2LTAyLTA5IDEyOjE0OjA0ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9ndGsvZ3RrZ3N0Z2x3aWRnZXQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzeW5jbWV0YS5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSAgZ2xzeW5jbWV0YTogc2VwYXJhdGUgb3V0IGdwdS9jcHUgd2FpdHMuCisJICBDUFUgd2FpdHMgYXJlIG1vcmUgZXhwZW5zaXZlIGFuZCBhcmUgb25seSByZXF1aXJlZCBpZiB0aGUgQ1BVIGlzIGV2ZXIgZ29pbmcgdG8KKwkgIGFjY2VzcyB0aGUgZGF0YS4gR1BVIHdhaXRzIHBlcmZvcm0gaW50ZXItY29udGV4dCBzeW5jaHJvbmlzYXRpb24gYW5kIGFyZSBjaGVhcGVyCisJICBhcyB0aGV5IGRvbid0IHJlcXVpcmUgQ1BVIGludGVydmVudGlvbi4KKworMjAxNi0wMi0wOCAyMzoxNzozNCArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogcmVtb3ZlIG92ZXJ3cml0dGVuIHZhbHVlCisJICByZXQgaXMgb3ZlcndpdHRlbiBiZWZvcmUgdXNlZCB3aXRoIHRoZSByZXR1cm4gb2YgdGhlIHN1YmNsYXNzIHNlZWsuCisJICBDSUQgIzEzNTIwNDQKKworMjAxNi0wMi0wOCAxNTowMDozNSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Jlc2luZHZkL3Jlc2luZHZkYmluLmM6CisJICByZXNpbmR2ZDogcmVtb3ZlIGNvbW1lbnRlZCBvdXQgaW5jbHVkZQorCSAgQ29tbWl0IDIxMTgyODk3OWI4YzEwYWJmM2M3NGQ5NjRiYzY5OGRiZGE0ZDQ5N2QgcmVtb3ZlZCByc25hdWRpb211bmdlLAorCSAgbm8gbmVlZCBmb3IgdGhpcyBjb21tZW50ZWQgb3V0IGluY2x1ZGUgZm9yIGEgZmlsZSB0aGF0IGRvZXNuJ3QgZXhpc3QKKwkgIGFueW1vcmUuCisKKzIwMTYtMDItMDggMTQ6MjY6NDYgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5jOgorCSogZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmg6CisJICBSZXZlcnQgInJlc2luZHZkOiBnZXQgcmlkIG9mIF9zdGRpbnQuaCBpbmNsdWRlIgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCAwZWZmNmUxOTkxY2IyNGNiNjVmMDdjNDgxNzQyNzgyYWNhYThlYzYyLgorCSAgQnJlYWtzIHRoZSBidWlsZCB3aGVuIGxpbmtpbmcgd2l0aCBkdmRuYXYuaAorCisyMDE2LTAyLTA4IDEzOjQzOjIyICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQveDI2NS9nc3R4MjY1ZW5jLmg6CisJICB4MjY1ZW5jOiBnZXQgcmlkIG9mIF9zdGRpbnQuaCBpbmNsdWRlCisJICBJdCB3YXMgbmV2ZXIgbmVlZGVkIHNpbmNlIGl0IGRvZXNuJ3QgdXNlIGFueSBzdGFuZGFyZCBpbnRlZ2VyIGZpeGVkIHdpZHRoCisJICB0eXBlcy4gT25seSB0aGUgR2xpYiB0eXBlcy4KKworMjAxNi0wMi0wOCAxMzozMjo0NiArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmM6CisJKiBleHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuaDoKKwkgIHJlc2luZHZkOiBnZXQgcmlkIG9mIF9zdGRpbnQuaCBpbmNsdWRlCisKKzIwMTYtMDItMDggMTI6NDQ6NTMgKzAxMDAgIFBpb3RyIERyxIVnIDxwaW90cmRyYWdAZ21haWwuY29tPgorCisJKiBwby9QT1RGSUxFUy5za2lwOgorCSAgcG86IHVwZGF0ZSBQT1RGSUxFUworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTcwNAorCisyMDE2LTAyLTA4IDEyOjIzOjEyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0aWRlbnRpdHkuYzoKKwkgIGdsZWZmZWN0czogaWRlbnRpdHk6IGFkZCB0aGUgc2hhZGVyIHRvIHRoZSBoYXNoIHRhYmxlCisJICBTbyB0aGF0IHdlIGRvbid0IHJlY3JlYXRlIGl0IGV2ZXJ5IGZyYW1lIGFuZCBsZWFrIG1lbW9yeS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE1NzgKKworMjAxNi0wMi0wNSAyMDowMjoyMiAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkgIHRlc3RzOiBleHRlbmQgdGhlIEFNX1RFU1RTX0VOVklST05NRU5UIGZyb20gY2hlY2subWFrCisJICBUbyBnZXQgdGhlIENLX0RFRkFVTFRfVElNRU9VVCBkZWZpbmVkIGZvciBhbGwgdGVzdHMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE0NzIKKworMjAxNi0wMi0wNSAxODowNjozMiAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBSRUFETUU6CisJKiBjb21tb246CisJICBBdXRvbWF0aWMgdXBkYXRlIG9mIGNvbW1vbiBzdWJtb2R1bGUKKwkgIEZyb20gZTk3YzliYiB0byBiNjRmMDNmCisKKzIwMTYtMDItMDUgMTU6MzQ6NTEgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC9ydHAvZ3N0cnRwaDI2NWRlcGF5LmM6CisJKiBnc3QvcnRwL2dzdHJ0cGgyNjVkZXBheS5oOgorCSAgZ3N0cnRwaDI2NWRlcGF5OiBrZWVwIGNvbnNpc3RlbmN5IHdpdGggcnRwaDI2NGRlcGF5CisJICBVc2UgZ3N0X3J0cF9kcm9wX21ldGEoKSBhbmQgdGhlIHNhbWUgZnVuY3Rpb24gcHJvdG90eXBlIGZvcgorCSAgZ3N0X3J0cF9jb3B5X21ldGEoKSB0byBrZWVwIGNvbnNpc3RlbmN5IHdpdGggdGhlIFJUUCBlbGVtZW50cyBpbgorCSAgZ3N0LXBsdWdpbnMtZ29vZAorCisyMDE2LTAyLTA1IDIxOjMzOjM4ICswNTMwICBBcnVuIFJhZ2hhdmFuIDxhcnVuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5jOgorCSAgdGlueWFsc2FzaW5rOiBVc2UgZ2xpYiBDTEFNUCgpIGluc3RlYWQgb2Ygb3VyIG93biBtYWNybworCisyMDE2LTAyLTA1IDEzOjU2OjM0ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBnc3QvcnRwL2dzdHJ0cGgyNjVkZXBheS5jOgorCSAgcnRwaDI2NWRlcGF5OiBmaXggdGVybWluYXRpb24gb2YgYWNjZXNzIHVuaXQKKwkgIE9ubHkgY29uc2lkZXIgdGhlIGFjY2VzcyB1bml0IGNvbXBsZXRlIHdoZW4gdGhlIG5leHQtb2NjdXJyaW5nIFZDTCBOQUwgdW5pdAorCSAgaGFzIHRoZSBmaXJzdCBiaXQgYWZ0ZXIgaXRzIE5BTCB1bml0IGhlYWRlciBlcXVhbCB0byAxLgorCisyMDE2LTAyLTAyIDEzOjUwOjI1ICswMDAwICBEYXZpZCBXYXJpbmcgPGRhdmlkLndhcmluZ0ByZC5iYmMuY28udWs+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IFVwZGF0ZSBwb3NpdGlvbiBpbiBzdHJlYW0tPnNlZ21lbnQgZm9yIG5ldyBzdHJlYW0gc2VnbWVudCBtZXNzYWdlLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTQ1OAorCisyMDE2LTAyLTA1IDE1OjQzOjIyICswNTMwICBBcnVuIFJhZ2hhdmFuIDxhcnVuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5jOgorCSAgdGlueWFsc2FzaW5rOiBMaW1pdCBwZXJpb2Qgc2l6ZSBhbmQgY291bnQgdG8gd2hhdCB0aGUgaC93IHBlcm1pdHMKKworMjAxNi0wMi0wNSAxMDo0Mzo0OSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkZWJ1Zy5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmVhdHVyZS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xfcHJpdmF0ZS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL3dheWxhbmQvd2F5bGFuZF9ldmVudF9zb3VyY2UuaDoKKwkqIHdpbjMyL2NvbW1vbi9saWJnc3RnbC5kZWY6CisJICBnbDogYWRkIC5kZWYgZmlsZSBmb3IgbXN2YyBidWlsZHMKKwkgIEFsc28gaW50ZXJuYWxpemUgc29tZSBBUEkgZnJvbSBiZWluZyBleHBvcnRlZC4KKworMjAxNi0wMi0wMiAxNzowMjo0MSAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzLy5naXRpZ25vcmU6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9tc3NkZW11eC5jOgorCSAgdGVzdHM6IG1zc2RlbXV4OiBhZGQgdW5pdCB0ZXN0cworCSAgQWRkcyB1bml0IHRlc3RzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdGhhdCB3ZSBoYXZlIGZvciBEQVNIIGFuZCBITFMuCisJICBUZXN0czoKKwkgICogbWFuaWZlc3QgcGFyc2luZyBmaW5pc2hlcyBzdWNjZXNzZnVsbHkKKwkgICogc29tZSBxdWVyaWVzIChkdXJhdGlvbiwgc2Vla2FibGUsIGxhdGVuY3kpCisJICAqIHNlZWtpbmcgd2l0aCB2YXJpb3VzIHZhbHVlcyBhbmQgZmxhZ3MKKworMjAxNi0wMi0wMiAxNjo1NDoxMCAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmM6CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmM6CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0Lmg6CisJICBtc3NkZW11eDogaW1wbGVtZW50IHNuYXAgc2Vla2luZworCSAgSW1wbGVtZW50IHNuYXAgc2VlayBmbGFncyBoYW5kbGluZyBpbiBzdHJlYW1fc2VlayB0byBhbGxvdyB0aGUKKwkgIHBhcmVudCBjbGFzcyB0byBoYW5kbGUgaXQgZm9yIHVzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5MTU4CisKKzIwMTYtMDItMDIgMTY6NTE6MjIgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jOgorCSAgbXNzZGVtdXg6IHVzZSBjb3JyZWN0IHNlZWsgcG9zaXRpb24gb24gcmV2ZXJzZSBzZWVrcworCSAgT3RoZXJ3aXNlIGl0IHdhcyBhbHdheXMgdXNpbmcgdGhlICdzdGFydCcgdmFsdWUsIGxlYWRpbmcgdG8gd3JvbmcKKwkgIGJlaGF2aW9yCisKKzIwMTYtMDItMDIgMTE6MzA6MzEgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jOgorCSAgbXNzZGVtdXg6IG9ubHkgdXBkYXRlIGRvd25sb2FkIHBvc2l0aW9uIGlmIHRoZSBzZWVrIHJlcXVlc3RzIHRvCisJICBTb21lIHNlZWtzIGFyZSBvbmx5IHVwZGF0aW5nIHRoZSBzdG9wIHBvc2l0aW9uLCB0aGVyZSBpcyBubyBuZWVkCisJICB0byBjaGFuZ2UgdGhlIGN1cnJlbnQgZG93bmxvYWRpbmcgcG9zaXRpb24uCisKKzIwMTYtMDItMDIgMDk6NTI6MTcgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jOgorCSAgbXNzZGVtdXg6IGRvIG5vdCBhc3NlcnQgb24gZnJhZ21lbnQgcmVsb2FkcyBmb3Igbm9uLWxpdmUKKwkgIEl0IGNhbiBiZSB1c2VkIGFzIGEgcmVzb3VyY2UgdG8gdmVyaWZ5IGlmIHRoZSBzZXJ2ZXIgaGFzIHVwZGF0ZWQKKwkgIHNvbWV0aGluZyBpbiB0aGUgTWFuaWZlc3Qgd2hlbiBkb3dubG9hZHMgYXJlIGZhaWxpbmcKKworMjAxNi0wMS0yNyAxMDo0ODo1MyAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJICB0ZXN0czogZGFzaGRlbXV4OiBhZGQgdGVzdHMgZm9yIHNuYXAgZmxhZ3Mgc2Vla2luZworCSAgU2ltaWxhciB0byBITFMgYnV0IERBU0ggaGFzIHRoZSBleHRyYSBpc3N1ZSB0aGF0IGl0IGNhbiBoYXZlCisJICBtdWx0aXBsZSBzdHJlYW1zIHNvIHNuYXBwaW5nIGNhbiBiZSB0cmlja3kgYXMgc3RyZWFtcyB1c3VhbGx5CisJICB3b24ndCBiZSBhbGlnbmVkLgorCSAgRm9yIG5vdywgdGhvc2UgdGVzdHMgaGFuZGxlIHRoZSBjYXNlIG9mIG9ubHkgaGF2aW5nIGEgc2luZ2xlCisJICBzdHJlYW0uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5MTU4CisKKzIwMTYtMDItMDEgMTA6NDk6MjMgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIGRhc2hkZW11eDogaW1wbGVtZW50IHNuYXAgc2VlayBoYW5kbGluZworCSAgSGFuZGxlIHNuYXAgc2Vla2luZyBhdCB0aGUgc3RyZWFtX3NlZWsgbWV0aG9kIGFuZCBsZXQgc3VwZXJjbGFzcworCSAgZG8gdGhlIHJlc3QgdG8gc3VwcG9ydCBzbmFwIHNlZWtpbmcKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTkxNTgKKworMjAxNi0wMS0yNyAxMzozMToxMCAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvZGFzaC9nc3RkYXNoZGVtdXguYzoKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmg6CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmM6CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmM6CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0Lmg6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4Lmg6CisJICBhZGFwdGl2ZWRlbXV4OiBoYW5kbGUgc25hcCBzZWVrcworCSAgQWRhcHRpdmUgZGVtdXhlcnMgbmVlZCB0byBzdGFydCBkb3dubG9hZGluZyBmcm9tIHNwZWNpZmljIHBvc2l0aW9ucworCSAgKGZyYWdtZW50cykgZm9yIGV2ZXJ5IHN0cmVhbSwgdGhpcyBtZWFucyB0aGF0IGFsbCBzdHJlYW1zIGNhbiBzbmFwLXNlZWsKKwkgIHRvIGEgZGlmZmVyZW50IHBvc2l0aW9uIHdoZW4gcmVxdWVzdGVkLiBTbmFwIHNlZWtpbmcgaW4gdGhpcyBjYXNlIHdpbGwKKwkgIGJlIGRvbmUgaW4gMiBzdGVwczoKKwkgIDEpIGRvIHRoZSBzbmFwIHNlZWtpbmcgb24gdGhlIHBhZCB0aGF0IHJlY2VpdmVkIHRoZSBzZWVrIGV2ZW50IGFuZAorCSAgZ2V0IHRoZSBmaW5hbCBwb3NpdGlvbgorCSAgMikgdXNlIHRoaXMgcG9zaXRpb24gdG8gZG8gYSByZWd1bGFyIHNlZWsgb24gdGhlIG90aGVyIHN0cmVhbXMgdG8KKwkgIG1ha2Ugc3VyZSB0aGV5IGFsbCBzdGFydCBmcm9tIHRoZSBzYW1lIHBvc2l0aW9uCisJICBNb3JlIGFyZ3VtZW50cyB3ZXJlIGFkZGVkIHRvIHRoZSBzdHJlYW1fc2VlayBmdW5jdGlvbiwgYWxsb3dpbmcgYmV0dGVyIGNvbnRyb2wKKwkgIG9mIGhvdyBzZWVraW5nIGlzIGRvbmUuIEtub3dpbmcgdGhlIGZsYWdzIGFuZCB0aGUgcGxheWJhY2sgZGlyZWN0aW9uIGFsbG93cworCSAgc3ViY2xhc3NlcyB0byBoYW5kbGUgc25hcC1zZWVraW5nLgorCSAgQW5kIGFsc28gYWRkcyBhIG5ldyByZXR1cm4gcGFyYW1ldGVyIHRvIGluZm9ybSBvZiB0aGUgZmluYWwKKwkgIHNlbGVjdGVkIHNlZWtpbmcgcG9zaXRpb24gdGhhdCBpcyB1c2VkIHRvIGFsaWduIHRoZSBvdGhlciBzdHJlYW1zLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTE1OAorCisyMDE2LTAxLTI2IDIzOjQzOjI0IC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaDoKKwkgIGFkYXB0aXZlZGVtdXg6IGFkZCB1dGlsaXR5IGZ1bmN0aW9uIHRvIGdldCBzdHJlYW0gZnJvbSBwYWQKKwkgIFNpbXBsaWZpZXMgdGhlIGNvZGUgYSBiaXQgYW5kIGF2b2lkIHJlcGVhdGluZyB0aGlzCisJICBjb21tb24gb3BlcmF0aW9uCisKKzIwMTYtMDItMDQgMTI6NTA6NDMgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NHBhcnNlLmM6CisJICBoMjY0cGFyc2U6IHJlbW92ZSB1bnVzZWQgbXZpZXdfbW9kZSB2YWx1ZQorCSAgU2luY2UgY29tbWl0IGI3N2Y4ZTE3MmEzZjBiZTZiZTVjYjRhNzJlNjU0MjUzNDA0ZTY5NGYgdGhlIG5ldyB2YWx1ZQorCSAgYXNzaWduZWQgdG8gbXZpZXdfbW9kZSBoYXNuJ3QgYmVlbiB1c2VkLiBUaGF0IGNvbW1pdCBjaGFuZ2VkIHRoZSBmb2xsb3dpbmcKKwkgICJpZiIgY2hlY2sgdG8gYW4gImVsc2UgaWYiLCB3aGljaCBtZWFucyB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgbXZpZXdfbW9kZQorCSAgaXMgdXNlZC4KKworMjAxNi0wMi0wNCAxMjoxNzozMSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdscXVlcnkuYzoKKwkgIGdscXVlcnk6IHJlbW92ZSB1bm5lY2Vzc2FyeSBwb2ludGVyIGNoZWNrCisJICBBbGwgdXNlcyBvZiBxdWVyeS0+Y29udGV4dCBpbiBnc3RnbHF1ZXJ5LmMgYXNzdW1lIGl0IGV4aXN0cy4gV2UgY2FuIGFzc3VtZQorCSAgdGhpcyBhcyB3ZWxsIGJlZm9yZSB1bnJlZmluZyBpdC4gRnVydGhlcm1vcmUsIGdzdF9vYmplY3RfdW5yZWYoKSB3aWxsIGp1c3QKKwkgIHNpbGVudGx5IHJldHVybiBpZiBpdCBldmVyIHdlcmUgdG8gbm90IGV4aXN0LgorCisyMDE2LTAyLTA0IDE4OjE1OjU2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NXBhcnNlLmM6CisJICBoMjY1cGFyc2U6IGF2b2lkIHNlbmRpbmcgdW5uZWNlc3NhcnkgZG93bnN0cmVhbSBjYXBzIHF1ZXJpZXMvZXZlbnRzCisJICBoMjY1IHZlcnNpb25zIG9mIHRoZSBmb2xsb3dpbmcgY29tbWl0czoKKwkgIGYzNTI2OTFhMDQ4OTZkMGRlMzM4MWZlOGVlODVhZGE5NDhiZDYzMzcKKwkgIHRyeSB0aGUgY3VycmVudCBjYXBzIGJlZm9yZSBxdWVyeWluZyBkb3duc3RyZWFtCisJICA3MmJjN2Q3ZjczNmExMDExN2ZlZGI4ZTFkNDAxM2E0OTQ2Y2ZlZmJjCisJICBpbmNyZWFzZSBjYXBzIGVxdWFsaXR5IGNoZWNrIGZvciBubyBjb2RlY19kYXRhCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMDE0CisKKzIwMTYtMDItMDQgMTY6MzY6MjggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY0cGFyc2UuYzoKKwkgIGgyNjRwYXJzZTogaW5jcmVhc2UgY2FwcyBlcXVhbGl0eSBjaGVjayBmb3Igbm8gY29kZWNfZGF0YQorCSAgV2hlbiBjb252ZXJ0aW5nIGZyb20gYXZjIHRvIGJ5dGUtc3RyZWFtLCB0aGVyZSB3aWxsIG5vdCBiZSBhbnkgY29kZWNfZGF0YQorCSAgaW4gdGhlIHNyYyBjYXBzLiAgUmVtb3ZlIGl0IGJlZm9yZSB0aGUgZXF1YWxpdHkgY2hlY2sgdG8gYXZvaWQgc2VuZGluZyBjYXBzCisJICBldmVudHMgZG93bnN0cmVhbSBvbiBldmVyeSBTUFMvUFBTIGNoYW5nZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjEwMTQKKworMjAxNi0wMi0wNCAxNTozNDowNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjRwYXJzZS5jOgorCSAgaDI2NHBhcnNlOiB0cnkgdGhlIGN1cnJlbnQgY2FwcyBiZWZvcmUgcXVlcnlpbmcgZG93bnN0cmVhbQorCSAgSWYgd2UgaGF2ZSBhIHN0cmVhbSB0aGF0IGNvbnRhaW5zIGFuIHVuY2hhbmdpbmcgU1BTL1BQUyBmb3IgZXZlcnkgdmlkZW8gZnJhbWUsCisJICB3ZSBkb24ndCBuZWVkIHRvIHRvIGNvbnN0YW50bHkgcXVlcnkgZG93bnN0cmVhbSBmb3IgaXQncyBzdXBwb3J0ZWQgY2FwcyBpZiB0aGUKKwkgIGN1cnJlbnQgY2FwcyBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZSBuZWdvdGlhdGVkIGNhcHMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMDE0CisKKzIwMTYtMDItMDQgMTc6MzE6MDMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZWZpbHRlci5jOgorCSAgZ2xiYXNlZmlsdGVyOiBlbmFibGUgcW9zIGJ5IGRlZmF1bHQKKwkgIEltcHJvdmVzIHRoZSByZXNwb25zaXZlbmVzcyBvZiB0aGUgcGlwZWxpbmUgd2hlbiByZXNvdXJjZXMgYXJlIGNsb3NlL2Fib3ZlIHRoZQorCSAgbGltaXRhdGlvbnMgb2YgdGhlIGhhcmR3YXJlLgorCSAgQW55IHN1YmNsYXNzIHRoYXQgd2lzaGVzIG5vdCB0byBlbmFibGUgcW9zIGNhbiBkbyBzbyB0aGVtc2VsdmVzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTUxOQorCisyMDE2LTAyLTA0IDE1OjExOjE1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkgIGFtY3ZpZGVvZGVjOiBwYXNzIHRoZSBjb3JyZWN0IHRpbWUgdmFsdWUgdG8gd2FpdF9mb3Jfc3luYworCSAgV2hlbiB3ZSBhcmUgbm90IHdhaXRpbmcsIHdlIG5lZWQgdG8gcGFzcyAtMSB0byBzaWduYWwgdGhhdCB3ZSBqdXN0IHdhbnQgdG8gY2hlY2sKKwkgIHRoYXQgdGhlIGZyYW1lIHdhcy9uJ3QgcmVuZGVyZWQuICBBdm9pZHMgd2FpdGluZyBmb3IgZnJhbWVzIHRoYXQgd2lsbCBuZXZlciBiZQorCSAgcmVuZGVyZWQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMDE0CisKKzIwMTYtMDItMDQgMTU6MDc6NDQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSAgYW1jdmlkZW9kZWM6IGFkdmFuY2UgdGhlIHJlYWR5IGNvdW50ZXIgb3Vyc2VsdmVzIHdoZW4gcmVuZGVyPUZBTFNFCisJICBXaGVuIG5vdCByZW5kZXJpbmcgdGhlIHZpZGVvIGZyYW1lLCBlLmcuIHdoZW4gZnJlZWluZyBhbiB1bnJlbGVhc2VkIHN5bmMgZnJhbWUsCisJICB3ZSB3aWxsIG5vdCByZWNlaXZlIGEgZnJhbWUgbGlzdGVuZXIgY2FsbGJhY2suCisJICBSZWR1Y2VzIHRoZSBhbW91bnQgb2YgJ29uX2ZyYW1lX2F2YWlsYWJsZSBtaXNzIGRldGVjdGVkJyBtZXNzYWdlcyB3aGVuIGRyb3BwaW5nCisJICBmcmFtZXMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMDE0CisKKzIwMTYtMDItMDQgMTQ6MjU6MTIgKzExMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmthdWRpb3NyYy5jcHA6CisJICBkZWNrbGlua2F1ZGlvc3JjOiBGaXggZGlzY29udCB0cmFja2luZworCSAgRG9uJ3QgcmVzZXQgdGhlIG1hcmtlciB0aGF0J3MgdHJhY2tpbmcgZGlzY29udHMgdW50aWwKKwkgIGVpdGhlciB0aGUgZGlzY29udCBkaXNhcHBlYXJzIG9yIHdlIHJlc3luYy4KKworMjAxNi0wMi0wMyAyMToyMjoyOCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL01ha2VmaWxlLmFtOgorCSogc3lzL2Nkcm9tL01ha2VmaWxlLmFtOgorCSogc3lzL2Nkcm9tL2dzdGNkcGxheWVyLmM6CisJKiBzeXMvY2Ryb20vZ3N0Y2RwbGF5ZXIuaDoKKwkqIHN5cy9jZHJvbS9nc3RjZHBsYXllcl9pb2N0bC5jOgorCSogc3lzL2Nkcm9tL2dzdGNkcGxheWVyX2lvY3RsLmg6CisJKiBzeXMvY2Ryb20vZ3N0Y2RwbGF5ZXJfaW9jdGxfYnNkLmg6CisJKiBzeXMvY2Ryb20vZ3N0Y2RwbGF5ZXJfaW9jdGxfaXJpeC5oOgorCSogc3lzL2Nkcm9tL2dzdGNkcGxheWVyX2lvY3RsX3NvbGFyaXMuaDoKKwkgIFJlbW92ZSBhbmNpZW50IGFuZCBkZWFkIGNkcm9tIGNvbnRyb2wgcGx1Z2luCisJICBUaGlzIHdhcyBuZXZlciBldmVuIHBvcnRlZCB0byAwLjEwLCBhbmQgSSBkb24ndCB0aGluaworCSAgaXQncyBwYXJ0aWN1bGFybHkgdXNlZnVsLCBzaW5jZSBpdCdzIGp1c3QgYSBjb250cm9sCisJICBpbnRlcmZhY2UgcmVhbGx5LiBMZXQncyByZW1vdmUgaXQuCisKKzIwMTYtMDItMDMgMjE6MTY6MTggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9pbnRlcmZhY2VzL3Bob3RvZ3JhcGh5LmM6CisJKiBnc3QtbGlicy9nc3QvaW50ZXJmYWNlcy9waG90b2dyYXBoeS5oOgorCSogZ3N0L2NvbG9yZWZmZWN0cy9nc3Rjb2xvcmVmZmVjdHMuaDoKKwkqIGdzdC9kZWJ1Z3V0aWxzL2Zwc2Rpc3BsYXlzaW5rLmM6CisJICBkb2NzOiByZW1vdmUgc29tZSBsZWZ0b3ZlciAnU2luY2UgMC4xMC54JyBtYXJrZXJzCisKKzIwMTYtMDItMDMgMjE6MTM6NTggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9kZWJ1Z3V0aWxzLy5naXRpZ25vcmU6CisJKiBnc3QvZGVidWd1dGlscy9NYWtlZmlsZS5hbToKKwkqIGdzdC9kZWJ1Z3V0aWxzL2RlYnVndXRpbHMtbWFyc2hhbC5saXN0OgorCSogZ3N0L2RlYnVndXRpbHMvZnBzZGlzcGxheXNpbmsuYzoKKwkgIGRlYnVndXRpbHM6IHVzZSBnZW5lcmljIG1hcnNoYWxsZXIKKworMjAxNi0wMi0wMyAxNjoyODo0MiArMDAwMCAgVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWs+CisKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuYzoKKwkgIG9wdXM6IGZpeCBGRUMKKwkgIEZFQyBtYXkgb25seSBiZSB1c2VkIHdoZW4gUExDIGlzIGVuYWJsZWQgb24gdGhlIGF1ZGlvIGRlY29kZXIsCisJICBhcyBpdCByZWxpZXMgb24gZW1wdHkgYnVmZmVycyB0byBnZW5lcmF0ZSBhdWRpbyBmcm9tIHRoZSBuZXh0CisJICBidWZmZXIuIEhvb2tpbmcgdG8gdGhlIGdhcCBldmVudHMgZG9lc24ndCB3b3JrIGFzIHRoZSBhdWRpbworCSAgZGVjb2RlciBkb2VzIG5vdCBsaWtlIG1vcmUgYnVmZmVycyBvdXRwdXQgdGhhbiBpdCBzZW5kcy4KKwkgIFRoZSBsZW5ndGggb2YgZGF0YSB0byBnZW5lcmF0ZSB1c2luZyBGRUMgZnJvbSB0aGUgbmV4dCBwYWNrZXQKKwkgIGlzIGRldGVybWluZWQgYnkgcm91bmRpbmcgdGhlIGdhcCBkdXJhdGlvbiB0byBuZWFyZXN0LiBUaGlzCisJICBlbnN1cmVzIHRoYXQgZHVyYXRpb24gaW1wcmVjaXNpb24gZG9lcyBub3QgY2F1c2UgcXVhbnRpemF0aW9uCisJICB0byAyLjUgbWlsbGlzZWNvbmRzIGxlc3MgdGhhbiBhdmFpbGFibGUuIERvaW5nIHNvIGNhdXNlcyB0aGUKKwkgIE9wdXMgQVBJIHRvIGZhaWwgZGVjb2RpbmcuIFN1Y2ggZHVyYXRpb24gaW1wcmVjaXNpb24gaXMgY29tbW9uCisJICBpbiBsaXZlIGNhc2VzLgorCSAgVGhlIGJ1ZmZlciB0byBjb25zaWRlciB3aGVuIGRldGVybWluaW5nIHRoZSBsZW5ndGggb2YgYXVkaW8KKwkgIHRvIGJlIGRlY29kZWQgaXMgdGhlIHByZXZpb3VzIGJ1ZmZlciB3aGVuIHVzaW5nIEZFQywgYW5kIHRoZQorCSAgbmV3IGJ1ZmZlciBvdGhlcndpc2UuIEluIHRoZSBGRUMgY2FzZSwgdGhpcyBtZWFucyB3ZSBkZXRlcm1pbmUKKwkgIHRoZSBhbW91bnQgb2YgYXVkaW8gZnJvbSB0aGUgcHJldmlvdXMgYnVmZmVyLCB3aGV0aGVyIGl0IHdhcworCSAgbWlzc2luZyBvciBub3QgKGFuZCBnZXQgdGhlIGRhdGEgZWl0aGVyIGZyb20gdGhpcyBidWZmZXIsIG9yCisJICB0aGUgY3VycmVudCBvbmUgaWYgdGhlIHByZXZpb3VzIG9uZSB3YXMgbWlzc2luZykuCisKKzIwMTYtMDItMDMgMTA6NTk6MjMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uYzoKKwkgIGdsdHJhbnNmb3JtYXRpb246IHJlY29uZmlndXJlIHRoZSBzcmMgd2hlbiBjaGFuZ2luZyB0by9mcm9tIHBhc3N0aHJvdWdoCisJICBPdGhlcndpc2UgaXQncyB2ZXJ5IHBvc3NpYmxlIHRoYXQgYW55IEdMIHJlc291cmNlcyBoYXZlIG5vdCBiZWVuIGNyZWF0ZWQgeWV0LgorCisyMDE2LTAyLTAzIDEwOjUyOjA4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbHZpZGVvZmxpcC5jOgorCSogZXh0L2dsL2dzdGdsdmlkZW9mbGlwLmg6CisJICBnbHZpZGVvZmxpcDogY29ycmVjdGx5IHVwZGF0ZSB0aGUgb3V0cHV0IGNhcHMgb24gbWV0aG9kIGNoYW5nZXMKKwkgIFdoZW4gY2hhbmdpbmcgbWV0aG9kcyB3ZSBtYXkgbmVlZCBkaWZmZXJlbnQgb3V0cHV0IGNhcHMuCisKKzIwMTYtMDItMDIgMTE6MjA6MTcgLTA4MDAgIFJleW5hbGRvIEguIFZlcmRlam8gUGlub2NoZXQgPHJleW5hbGRvQG9zZy5zYW1zdW5nLmNvbT4KKworCSogc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5jOgorCSAgdGlueWFsc2FzaW5rOiBmaXggdGluYWxzYSB0eXBvCisKKzIwMTYtMDItMDIgMTE6MDY6NTIgLTA4MDAgIFJleW5hbGRvIEguIFZlcmRlam8gUGlub2NoZXQgPHJleW5hbGRvQG9zZy5zYW1zdW5nLmNvbT4KKworCSogc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5jOgorCSAgdGlueWFsc2FzaW5rOiBmaXggc2FtcGxlIGxhdW5jaCBsaW5lCisKKzIwMTYtMDItMDIgMTQ6NDY6MzAgKzAwMDAgIERhdmlkIFdhcmluZyA8ZGF2aWQud2FyaW5nQHJkLmJiYy5jby51az4KKworCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9NYWtlZmlsZS5hbToKKwkgIGxpYnM6IHBsYXllcjogdXNlIGNvbmZpZ3VyZWQgR1NUX1BLR19DT05GSUdfUEFUSCB3aGVuIGludm9raW5nIHRoZSBpbnRyb3NwZWN0aW9uIHNjYW5uZXIKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE0NjAKKworMjAxNi0wMi0wMiAxNToyMDo0OCArMDAwMCAgVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWs+CisKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuYzoKKwkgIG9wdXNkZWM6IGZpeCB3cm9uZyBidWZmZXIgYmVpbmcgY2hlY2tlZCBmb3IgbWlzc2luZyBkYXRhCisJICBUaGlzIGNhdXNlZCBhIGRlY29kaW5nIGVycm9yIGlmIHRoZSByZXN1bHRpbmcgKHdyb25nKSBidWZmZXIgc2l6ZQorCSAgd2FzIHBhc3NlZCB0byB0aGUgT3B1cyBkZWNvZGluZyBBUEkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTU4CisKKzIwMTYtMDItMDIgMTY6MjY6MDkgKzA1MzAgIEFydW4gUmFnaGF2YW4gPGFydW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvdGlueWFsc2EvdGlueWFsc2FzaW5rLmM6CisJICB0aW55YWxzYXNpbms6IFVzZSBpbnQgdHlwZSBpZiB3ZSBzdXBwb3J0IGEgc2luZ2xlIHJhdGUvY2hhbm5lbCBjb3VudAorCSAgQXZvaWRzIHVzaW5nIGFuIGludCByYW5nZSBpZiB0aGUgZmllbGQgd2UncmUgc2V0dGluZyBpcyBub3QgYWN0dWFsbHkgYQorCSAgcmFuZ2UuCisKKzIwMTYtMDItMDIgMTg6MzY6MzQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2xjb250ZXh0X2VhZ2wubToKKwkgIFJldmVydCAiZ2wvZWFnbDogdHJ5IGdldHRpbmcgYSBnbGVzMyBjb250ZXh0IgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCA5NmI5NjY2ZDU5NmJlMTE1ZmQ0YjQ0NmVmODQ2NTA4YjdmZDA1YzI0LgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCBkMTEzODVkMTY3ZDg4NDM2MDRlYTIzYTA1ZTJkZWE0MGI4YmJhYzM1LgorCSAgVGhpcyBicmVha3MgdGhlIHRleHR1cmUgc2hhcmluZyB3aXRoIHRoZSBhcHBsZW1lZGlhIGVsZW1lbnRzIGFzCisJICBDVk9wZW5HTEVTVGV4dHVyZUNhY2hlIHNlZW1zIHRvIGhhdmUgYW4gYXJiaXRyYXJ5IHJlc3RyaWN0aW9uIG9uIEdMRVMyIG9ubHkuCisKKzIwMTYtMDItMDIgMTY6MjE6MTQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogZG9uJ3Qgc2tpcCBzdWJzZXQgc3RydWN0dXJlcworCSAgV2UgbWF5IG5lZWQgdGhlbSB0byB0cmFuc2Zvcm0gaW50byBhIGRpZmZlcmVudCBzZXQgb2YgZm9ybWF0cy4KKwkgIEZpeGVzIFlVVi0+WVVWIHdpdGggdHdvIGdsY29sb3Jjb252ZXJ0cywgZS5nOgorCSAgZm9ybWF0PUk0MjAgISBnbGNvbG9yY29udmVydCAhIGdsY29sb3Jjb252ZXJ0ICEgZm9ybWF0PU5WMTIKKworMjAxNi0wMi0wMiAxNjoxOTo1NCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmM6CisJICBnbGJhc2VmaWx0ZXI6IGFsd2F5cyBjYWxsIGdsX3N0YXJ0IHdoZW4gbm90IGNhbGxlZCBhbHJlYWR5CisJICBGaXhlcyBlbGVtZW50cyB0cmFuc2l0aW9uaW5nIG91dCBvZiBwYXNzdGhyb3VnaCBtb2RlIHVzaW5nIEdMIHJlc291cmNlcyB0aGF0CisJICBoYWRuJ2UgYmVlbiBhbGxvY2F0ZWQgeWV0LgorCisyMDE2LTAyLTAyIDE1OjE0OjI1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jOgorCSAgZ2xjb2xvcmNvbnZlcnQ6IGZpeCBSR0IscmVjdGFuZ2xlLT5wbGFuYXIgWVVWIGNvbnZlcnNpb24KKwkgIENvbnZlcnRpbmcgdG8gR1JBWSBpcyBubyBmdW4uICBBbm90aGVyIGNhc2Ugb2Ygbm9ybWFsaXplZCB2cyB1bm5vcm1hbGl6ZWQKKwkgIHRleHR1cmUgY29vcmRpbmF0ZXMuCisKKzIwMTYtMDItMDIgMTM6NTE6MTggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogZml4IFlVWTIvVVlWWSxyZWN0YW5nbGUtPlJHQiBjb252ZXJzaW9uCisJICAxLjAgLyB3aWR0aCBkb2VzIG5vdCBvZmZzZXQgYnkgb25lIHBpeGVsIGluIHJlY3Rhbmd1bGFyIHRleHR1cmVzICh3aGljaCB1c2UKKwkgIHVubm9ybWFsaXplZCBjb29yZGluYXRlcykuCisJICBQcm92aWRlIHRoZSBhY3R1YWwgcGl4ZWwgb2Zmc2V0IGFzIGEgdW5pZm9ybSB0byB0aGUgc2hhZGVyLgorCisyMDE2LTAxLTI3IDE2OjQyOjA5ICswNTMwICBBcnVuIFJhZ2hhdmFuIDxhcnVuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogY29uZmlndXJlLmFjOgorCSogc3lzL01ha2VmaWxlLmFtOgorCSogc3lzL3RpbnlhbHNhL01ha2VmaWxlLmFtOgorCSogc3lzL3RpbnlhbHNhL3RpbnlhbHNhLmM6CisJKiBzeXMvdGlueWFsc2EvdGlueWFsc2FzaW5rLmM6CisJKiBzeXMvdGlueWFsc2EvdGlueWFsc2FzaW5rLmg6CisJICB0aW55YWxzYTogQWRkIGEgbmV3IHNpbmsgcGx1Z2luIHVzaW5nIHRpbnlhbHNhCisJICBUaGlzIHVzZXMgdGhlIHRpbnlhbHNhIGxpYnJhcnkgdG8gcGxheWJhY2sgdG8gYW4gQUxTQSBkZXZpY2UuIEZ1dHVyZQorCSAgd29yayBjYW4gaW5jbHVkZSB1c2luZyB0aGUgbW1hcCBpbnRlcmZhY2UuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMjMwCisKKzIwMTYtMDItMDIgMTI6NTA6MjYgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogcGVyZm9ybSBiZXR0ZXIgbmVnb3RpYXRpb24KKwkgIDEuIENvcnJlY3RseSBkZXNjcmliZSB3aGF0IHdlIGNhbiBjYXBzIHdlIGNhbiB0cmFuc2Zvcm0gdG8vZnJvbS4KKwkgIGkuZS4gbm8gWVVWLT5ZVVYgb3IgR1JBWS0+WVVWIG9yIFlVVi0+R1JBWSAoZXhjZXB0IGZvciBwYXNzdGhyb3VnaCkuCisJICAyLiBQcmVmZXIgc2ltaWxhciBmb3JtYXRzIGFuZCBpZ25vcmUgaW5jb21wYXRpYmxlIGZvcm1hdHMgb24gZml4YXRpb24uCisKKzIwMTYtMDEtMjYgMjM6MTU6MTAgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jOgorCSAgdGVzdHM6IGRhc2hkZW11eDogYWRkIHRlc3QgZm9yIHVwZGF0aW5nIHN0b3AgcG9zaXRpb24KKwkgIFRlc3QgdGhhdCBhIHNlZWsgdGhhdCBvbmx5IHVwZGF0ZXMgdGhlIHN0b3AgcG9zaXRpb24gd29ya3MKKwkgIGFzIGV4cGVjdGVkCisKKzIwMTYtMDItMDEgMDk6NDg6MzMgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IG9ubHkgdXBkYXRlIGN1cnJlbnQgcmVhZGluZyBwb3NpdGlvbiB3aGVuIG5lZWRlZAorCSAgSWYgdGhlIHNlZWsgZG9lc24ndCBzZXQgdGhlIHN0YXJ0L3N0b3AgcG9zaXRpb24sIG5vIG5lZWQgdG8KKwkgIHJlcG9zaXRpb24gdGhlIGRvd25sb2FkIGluZGV4LgorCisyMDE2LTAxLTI5IDIwOjM0OjQyIC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9kYXNoL2dzdGRhc2hkZW11eC5jOgorCSAgZGFzaGRlbXV4OiByZXNwZWN0IHNlZWtpbmcgcGFyYW1ldGVyCisJICBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBzZWdtZW50IHZhbHVlcywgdXNlIHRoZSBwYXJhbWV0ZXIKKwkgIHJlcXVlc3RlZCBpbiB0aGUgc2Vla2luZyBhcmd1bWVudAorCisyMDE2LTAyLTAxIDE0OjI1OjQyIC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICB0ZXN0czogZGFzaDogZml4IGRhc2ggdGVzdHMgYWZ0ZXIgaW5kZXggZml4CisJICA4ZTc4OGYyODQ1MDg2MTI5ODJlOGUzODMzNmVlZDY3NmMyZWVjMzVhIGJyb2tlIG9uZSBvZiB0aGUKKwkgIGRhc2ggbXBkIHRlc3RzLiBUaGlzIHVwZGF0ZXMgYW5kIGZpeGVzIGl0LgorCisyMDE2LTAyLTAxIDEyOjIzOjMyICswMDAwICBKdWxpZW4gSXNvcmNlIDxqLmlzb3JjZUBzYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmM6CisJICBnc3RnbHdpbmRvdzogaW5pdGlhbGl6ZSBuYXZpZ2F0aW9uX2xvb3AgdG8gTlVMTAorCSAgVXNlZnVsIHdoZW4gZ3N0X2dsX3dpbmRvdy5jOjpnc3RfZ2xfd2luZG93X25ldyBpcyBub3QgdXNlZC4KKwkgIFRoaXMgaXMgdGhlIGNhc2Ugd2hlbiB1c2luZyBhIGN1c3RvbSBHc3RHTFdpbmRvdy4KKwkgIChleDogR3N0R0xXaW5kb3dHUFVQcm9jZXNzIGZyb20gQ2hyb21pdW0pCisKKzIwMTYtMDItMDEgMDk6MjY6MzcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsY29udGV4dF9lYWdsLm06CisJICBnbDogZWFnbDogZml4IGJ1aWxkCisJICBnc3RnbGNvbnRleHRfZWFnbC5tOjIzODo0NTogZXJyb3I6IHRvbyBmZXcgYXJndW1lbnRzIHRvIGZ1bmN0aW9uIGNhbGwsCisJICBleHBlY3RlZCBhdCBsZWFzdCA0LCBoYXZlIDMKKworMjAxNi0wMi0wMSAxNToxMzowMyArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGRvd25sb2FkZWxlbWVudC5jOgorCSAgZ2xkb3dubG9hZDogYWxsb3cgdmlkZW8veC1yYXcgYXMgaW5wdXQKKwkgIC4uLmFuZCBqdXN0IHBhc3N0aHJvdWdoLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcGlwZWxpbmVzIHdoZXJlIGRvd25zdHJlYW0gbXVzdCBiZQorCSAgbm9uLUdMIGJ1dCB1cHN0cmVhbSBjYW4gb3B0aW9uYWxseSBiZSBHTC4KKworMjAxNi0wMi0wMSAxMjo1NzozMiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbGNvbnRleHRfZWFnbC5tOgorCSAgZ2wvZWFnbDogdHJ5IGdldHRpbmcgYSBnbGVzMyBjb250ZXh0CisJICBGYWxsYmFjayB0byBhIGdsZXMyIGNvbnRleHQgaWYgdGhhdCBmYWlscworCisyMDE2LTAxLTIxIDE2OjEwOjQ4ICswODAwICBXYW5nIFhpbi15dSAo546L5piV5a6HKSA8Y29taWNmYW5zNDRAZ21haWwuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmM6CisJICBnbHZpZGVvbWl4ZXI6IGZpeCBjaGVja2VyIHZibyBsZWFrCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwOTI1CisKKzIwMTYtMDEtMjQgMTU6NDc6MTIgKzAxMDAgIEhvbGdlciBLYWVsYmVyZXIgPGhvbGdlci5rQGVsYmVyZXIuZGU+CisKKwkqIHRlc3RzL2V4YW1wbGVzL3F0L3FtbC9tYWluLnFtbDoKKwkgIHRlc3RzOiBmaXggd2FybmluZyBpbiBxbWwgZXhhbXBsZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjA4MgorCisyMDE2LTAxLTI0IDE1OjQyOjMyICswMTAwICBIb2xnZXIgS2FlbGJlcmVyIDxob2xnZXIua0BlbGJlcmVyLmRlPgorCisJKiBjb25maWd1cmUuYWM6CisJICBxdDogRml4IGJ1aWxkIGZvciBhbmRyb2lkCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2MDgyCisKKzIwMTYtMDItMDEgMDE6MDE6MTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9zbmFwc2hvdC9NYWtlZmlsZS5hbToKKwkqIGV4dC9zbmFwc2hvdC9nc3RzbmFwc2hvdC5jOgorCSogZXh0L3NuYXBzaG90L2dzdHNuYXBzaG90Lmg6CisJICBSZW1vdmUgZGVhZCBzbmFwc2hvdCBwbHVnaW4KKwkgIFdhcyBuZXZlciBwb3J0ZWQgYW5kIGRvZXNuJ3QgbG9vayBsaWtlCisJICB3ZSB3YW50IGl0IG9yIG5lZWQgaXQgaW4gdGhpcyBmb3JtLCBjYW4KKwkgIGRvIHRoZSBzYW1lIHdpdGggdGhlIGxpYmdzdHZpZGVvIHNhbXBsZQorCSAgY29udmVyc2lvbiB1dGlsaXR5IEFQSSBub3csIGJ1dCBiZXR0ZXIKKwkgIGFuZCBpbiBhIG1vcmUgZmxleGlibGUgd2F5LgorCisyMDE2LTAyLTAxIDAwOjQ5OjQ4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJKiBleHQvcnN2Zy9nc3Ryc3ZnZGVjLmg6CisJKiBleHQvcnN2Zy9nc3Ryc3Znb3ZlcmxheS5oOgorCSAgcnN2ZzogYnVtcCByZXF1aXJlbWVudCB0byAyLjM2LjIKKwkgIFdoaWNoIGFsbG93cyB1cyB0byBzaW1wbGlmeSB0aGUgY29uZmlndXJlIGNoZWNrIGFuZAorCSAgc29tZSBzcGVjaWFsLWNhc2luZyBpbiB0aGUgY29kZSwgYW5kIGlzIHBsZW50eSBvbGQKKwkgIGluIGFueSBjYXNlLgorCisyMDE2LTAyLTAxIDAwOjI5OjM3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvTWFrZWZpbGUuYW06CisJKiBleHQvbGliZmFtZS9NYWtlZmlsZS5hbToKKwkqIGV4dC9saWJmYW1lL1JFQURNRToKKwkqIGV4dC9saWJmYW1lL2dzdGxpYmZhbWUuYzoKKwkqIGV4dC9saWJmYW1lL2dzdGxpYmZhbWUuaDoKKwkqIG00L01ha2VmaWxlLmFtOgorCSogbTQvbGliZmFtZS5tNDoKKwkgIFJlbW92ZSBkZWFkIGxpYmZhbWUgcGx1Z2luCisJICBXYXMgbmV2ZXIgZXZlbiBwb3J0ZWQgdG8gMC4xMCwgYW5kIHRoZSBsaWIKKwkgIGhhcyBiZWVuIHVubWFpbnRhaW5lZCBmb3IgZXZlciBhbmQgZG9lc24ndAorCSAgZXZlbiBzZWVtIHRvIGJlIHBhY2thZ2VkIGFueSBtb3JlLgorCisyMDE2LTAxLTMxIDE5OjA5OjU3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvTWFrZWZpbGUuYW06CisJKiBleHQvYXVkaW9maWxlL01ha2VmaWxlLmFtOgorCSogZXh0L2F1ZGlvZmlsZS9SRUFETUU6CisJKiBleHQvYXVkaW9maWxlL2dzdGFmLmM6CisJKiBleHQvYXVkaW9maWxlL2dzdGFmcGFyc2UuYzoKKwkqIGV4dC9hdWRpb2ZpbGUvZ3N0YWZwYXJzZS5oOgorCSogZXh0L2F1ZGlvZmlsZS9nc3RhZnNpbmsuYzoKKwkqIGV4dC9hdWRpb2ZpbGUvZ3N0YWZzaW5rLmg6CisJKiBleHQvYXVkaW9maWxlL2dzdGFmc3JjLmM6CisJKiBleHQvYXVkaW9maWxlL2dzdGFmc3JjLmg6CisJKiBwby9QT1RGSUxFUy5za2lwOgorCSAgUmVtb3ZlIGRlYWQgYXVkaW9maWxlIHBsdWdpbgorCSAgVGhpcyB3YXMgbmV2ZXIgZXZlbiBwb3J0ZWQgdG8gMC4xMC4KKworMjAxNi0wMS0zMSAxOTowNDoyMCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogLmdpdGlnbm9yZToKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5hcmdzOgorCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmludGVyZmFjZXM6CisJKiBleHQvTWFrZWZpbGUuYW06CisJKiBleHQvZ3NldHRpbmdzL01ha2VmaWxlLmFtOgorCSogZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3MuaDoKKwkqIGV4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmM6CisJKiBleHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc2F1ZGlvc2luay5oOgorCSogZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3NhdWRpb3NyYy5jOgorCSogZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3NhdWRpb3NyYy5oOgorCSogZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3N2aWRlb3NpbmsuYzoKKwkqIGV4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmg6CisJKiBleHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc3JjLmM6CisJKiBleHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc3JjLmg6CisJKiBleHQvZ3NldHRpbmdzL2dzdHN3aXRjaHNpbmsuYzoKKwkqIGV4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc2luay5oOgorCSogZXh0L2dzZXR0aW5ncy9nc3Rzd2l0Y2hzcmMuYzoKKwkqIGV4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc3JjLmg6CisJKiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjoKKwkqIGV4dC9nc2V0dGluZ3MvcGx1Z2luLmM6CisJKiBtNC9nc2V0dGluZ3MubTQ6CisJKiBwby9QT1RGSUxFUy5pbjoKKwkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgorCSAgUmVtb3ZlIGdzZXR0aW5ncyBwbHVnaW4gd2hpY2ggd2FzIG5ldmVyIHBvcnRlZAorCSAgRG9uJ3QgdGhpbmsgd2UgbmVlZCB0aGlzIGFueSBsb25nZXIgb3Igd2FudCB0bworCSAgc3VwcG9ydCBpdCwgYW5kIGNsZWFybHkgbm8gb25lIGhhcyBiZWVuIG1pc3NpbmcKKwkgIGl0IGFsbCB0aGVzZSB5ZWFycyBlaXRoZXIsIHNvIGxldCdzIGp1c3QgZ2V0IHJpZAorCSAgb2YgaXQuCisKKzIwMTYtMDEtMzEgMTY6MDI6MzMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUuYW06CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4Lmg6CisJICBzbW9vdGhzdHJlYW1pbmc6IHJlbW92ZSB1bnVzZWQgZGVwZW5kZW5jeSBvbiB1cmlkb3dubG9hZGVyCisKKzIwMTYtMDEtMzEgMTQ6NDI6MjEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGV4dC9mYWFkL01ha2VmaWxlLmFtOgorCSogZXh0L2ZhYWQvZ3N0ZmFhZC5jOgorCSogZXh0L2ZhYWQvZ3N0ZmFhZC5oOgorCSAgZmFhZDogc2ltcGxpZnkgY29uZmlndXJlIGNoZWNrIGFuZCByZXF1aXJlIGZhYWQgPj0gMi43CisJICBKdXN0IGNoZWNrIHdoZXRoZXIgTEFUTSBpcyBkZWZpbmVkIHdoaWNoIGlzIG9ubHkgYXZhaWxhYmxlCisJICBpbiAyLjcgYW5kIGxhdGVyLiBBbGxvd3MgdXMgdG8gc2ltcGxpZnkgdGhlIGNvbmZpZ3VyZSBjaGVjaworCSAgYSBsaXR0bGUgYW5kIHdlIGNhbiBnZXQgcmlkIG9mIHNvbWUgaGFja2lzaCB3b3JrYXJvdW5kcyBmb3IKKwkgIHByb2JsZW1zIHdpdGggZWFybGllciB2ZXJzaW9uIGhlYWRlcnMuCisKKzIwMTYtMDEtMzAgMTc6MzE6NDEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9kdmIvZ3N0ZHZic3JjLmM6CisJICBkdmJzcmM6IGRyb3AgdW5uZWNlc3NhcnkgdXNlIG9mIF9zdGRpbnQuaAorCisyMDE2LTAxLTI5IDIzOjM5OjI2ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214ZnR5cGVzLmM6CisJICBteGZ0eXBlczogR2VuZXJhdGUgVVVJRHMgYWNjb3JkaW5nIHRvIFJGQzQxMjIgdmVyc2lvbiA0IChha2EgcmFuZG9tKQorCSAgSW5zdGVhZCBvZiBmdWxseSByYW5kb20gVVVJRHMsIHRoZXNlIHNob3VsZCBmb2xsb3cgYSBzY2hlbWUuCisKKzIwMTYtMDEtMjkgMjE6MDk6NDQgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbWV0YWRhdGEuYzoKKwkgIG14Zm1ldGFkYXRhOiBQcm9wZXJseSB3cml0ZSB2aWRlbyBsaW5lIG1hcCBkYXRhIGFzIGFuIGFycmF5IG9mIDMyIGJpdCBpbnRlZ2VycworCisyMDE2LTAxLTI5IDIwOjU4OjI3ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214Zm1ldGFkYXRhLmM6CisJICBteGZtZXRhZGF0YTogRE1TY2hlbWVzIGluIHRoZSBQcmVmYWNlIGlzIGEgcmVxdWlyZWQgZmllbGQKKwkgIEV2ZW4gaWYgaXQgaGFzIDAgZW50cmllcy4KKworMjAxNi0wMS0yOSAxODo0MTo1MiArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZ1bC5jOgorCSAgbXhmdWw6IEZpeCBDb250ZW50IFN0b3JhZ2UgVUwKKworMjAxNi0wMS0yOSAxODoyODowMyArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtZXRhZGF0YS5jOgorCSAgbXhmbWV0YWRhdGE6IEJlc3QgZWZmb3J0IHZhbHVlcyBtdXN0IGJlIHdyaXR0ZW4gYW5kIGlmIHVuc2V0IG11c3QgY29udGFpbiB0aGUgZGlzdGluZ3Vpc2hlZCB2YWx1ZQorCSAgSXQncyBpbnZhbGlkIHRvIG5vdCB3cml0ZSB0aGVtIGF0IGFsbC4KKworMjAxNi0wMS0yOSAxNzozNjoxMSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZ1bC5jOgorCSAgbXhmdWw6IEFkZCBtaXNzaW5nIE9wZXJhdGlvbmFsUGF0dGVybiBVTCwgd2hpY2ggZml4ZXMgYW4gb2ZmLWJ5LW9uZSB3aXRoIHRoZSBvdGhlcnMKKworMjAxNi0wMS0yOSAxNzowNzowOCArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtdXguYzoKKwkgIG14Zm11eDogT3VyIGJvZHkgcGFydGl0aW9uIGlzIGFsd2F5cyBjb21wbGV0ZSBhbmQgY2xvc2VkCisJICBXZSBoYXZlIG5vIG1ldGFkYXRhIGluIGl0LgorCisyMDE2LTAxLTI5IDE3OjAyOjAxICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214Zm11eC5jOgorCSAgbXhmbXV4OiBVc2UgSW5kZXhTSUQgb2YgMiBpbnN0ZWFkIG9mIDEKKwkgIFNvbWUgdG9vbHMgY29tcGxhaW4gaWYgZXNzZW5jZSBhbmQgaW5kZXggaGF2ZSB0aGUgc2FtZSBTSUQuCisKKzIwMTYtMDEtMjkgMTY6Mzg6MjMgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IFJld3JpdGUgYm9keSBwYXJ0aXRpb24gcGFjayBvbiBFT1MgYW5kIG1hcmsgaXQgYXMgY29tcGxldGUvY2xvc2VkCisKKzIwMTYtMDEtMjkgMjM6Mjg6NTkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSAgYW1jdmlkZW9kZWM6IGd1YXJkIGFnYWluc3Qgbm90IGZpbmRpbmcgYSB2YWxpZCBmcmFtZSBpbiBsb29wCisJICBGaXhlcyBzcG9yYWRpYyBjcmFzaGVzIG9uIGZpbmlzaGluZyBkZWNvZGluZyBhIHZpZGVvLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTAxNAorCisyMDE2LTAxLTI5IDE1OjI0OjM2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvb3JnL2ZyZWVkZXNrdG9wL2dzdHJlYW1lci9hbmRyb2lkbWVkaWEvR3N0QW1jT25GcmFtZUF2YWlsYWJsZUxpc3RlbmVyLmphdmE6CisJICBhbWN2aWRlb2RlYzogc2V0IG91ciBkYXRhIHBvaW50ZXIgaW4gamF2YSB0byBOVUxMIG9uIGNsb3NlCisJICBUaGUgZnJhbWUgYXZhaWxhYmxlIGNhbGxiYWNrIGNhbiBiZSBjYWxsZWQgYWZ0ZXIgZGVjb25maWd1cmluZyB0aGUgYW1jIGNvZGVjLgorCSAgR3VhcmQgYWdhaW5zdCB0aGlzIGJ5IHNldHRpbmcgdGhlIGJhY2sgcG9pbnRlciB0byBOVUxMIG9uIGNsb3NlKCkgYW5kIGlnbm9yaW5nCisJICBhbnkgTlVMTCBkYXRhIHBvaW50ZXIuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMDE0CisKKzIwMTYtMDEtMjkgMTU6MDc6NTkgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hcHBsZW1lZGlhL2F2ZnZpZGVvc3JjLm06CisJKiBzeXMvYXBwbGVtZWRpYS9nbGNvbnRleHRoZWxwZXIuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL2dsY29udGV4dGhlbHBlci5oOgorCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmg6CisJICBhcHBsZW1lZGlhOiByZWZhY3RvciBHTCBjb250ZXh0IGNvZGUKKwkgIFJld29yayB0aGUgR0wgY29udGV4dCBjb2RlLiBOb3cgYm90aCBhdmZ2aWRlb3NyYyBhbmQgdnRkZWMgY2FuIGNyZWF0ZSBhbgorCSAgaW50ZXJuYWwgR0wgY29udGV4dCBmb3IgcHVzaGluZyB0ZXh0dXJlcy4gQm90aCBlbGVtZW50cyB3aWxsIHN0aWxsIHRyeSB0bworCSAgdXNlL3N3aXRjaCB0byBhIGxvY2FsIGNvbnRleHQgd2hlcmUgYXZhaWxhYmxlIChpbmNsdWRpbmcgYWZ0ZXIgUkVDT05GSUdVUkUKKwkgIGV2ZW50cykuCisKKzIwMTYtMDEtMjkgMTA6MzU6MTUgKzA4MDAgIFdhbmcgWGluLXl1ICjnjovmmJXlrocpIDxjb21pY2ZhbnM0NEBnbWFpbC5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvYmFzZS5oOgorCSAgZ2xwcm90b3R5cGVzOiBmaXggcGFyYW1ldGVyIHR5cGUgb2YgZ2xHZW5CdWZmZXJzCisJICBUaGUgbnVtYmVyIG9mIGJ1ZmZlcnMgc2hvdWxkIGJlIEdMc2l6ZWkgaW5zdGVhZCBvZiBHTHVpbnQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMjcyCisKKzIwMTUtMTItMDggMTQ6MDk6NTggKzA4MDAgIEhhaWh1YSBIdSA8YjU1NTk3QGZyZWVzY2FsZS5jb20+CisKKwkqIGV4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0c3NvdXJjZXMuYzoKKwkgIGdsZWZmZWN0czogZml4IGdsZWZmZWN0cyBmaXNoZXllIHNoYWRlciBjb21waWxlIGVycm9yCisJICBPbiBzb21lIGVtYmVkZGVkIHN5c3RlbXMsIHNxcnQoKSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBzaGFkZXIsCisJICB1c2UgdGhlIGFjdHVhbCB2YWx1ZSBvZiBzcXJ0KDIpIGluc3RlYWQuCisJICBTaWduZWQtb2ZmLWJ5OiBIYWlodWEgSHUgPGI1NTU5N0BmcmVlc2NhbGUuY29tPgorCSAgQnVnemlsbGE6IGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjEyNzEKKworMjAxNi0wMS0yOSAxNDowMzoyNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmM6CisJICBnbHZpZGVvbWl4ZXI6IHBhciBtYXkgbm90IGV4aXN0IGluIHRoZSBjYXBzCisJICBGaXhlcyBhIGNyaXRpY2FsIGluIHRoZSBnc3QtdmFsaWRhdGUgdGVzdHM6CisJICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ZyYWN0aW9uOiBhc3NlcnRpb24gJ2dzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkCisJICAoc3RydWN0dXJlLCBmaWVsZF9uYW1lKQorCisyMDE2LTAxLTI5IDEyOjQ1OjU3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jOgorCSAgZ2xjb250ZXh0OiBiYWNrIG91dCB1bmludGVuZGVkIGxvc3RfY29udGV4dCBjaGFuZ2VzCisKKzIwMTYtMDEtMjggMTY6Mzk6MDcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGNvbnRleHRfZWdsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsY29udGV4dF9lZ2wuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC91dGlscy9vcGVuZ2xfdmVyc2lvbnMuaDoKKwkgIGVnbDogaW1wbGVtZW50IHNlbGVjdGluZyBvcGVuZ2wzIGNvbnRleHRzCisKKzIwMTYtMDEtMjggMTQ6MzE6MzMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RlZ2xpbWFnZW1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGNvbnRleHRfZWdsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsY29udGV4dF9lZ2wuaDoKKwkgIGdsL2VnbDogcGFzcyB0aGUgZXJyb3IgdmFsdWUgdG8gZ2V0X2Vycm9yX3N0cmluZygpCisKKzIwMTYtMDEtMjggMTg6MjA6NDQgKzAxMDAgIEF1csOpbGllbiBaYW5lbGxpIDxhdXJlbGllbi56YW5lbGxpQHBhcnJvdC5jb20+CisKKwkqIGdzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmM6CisJICB2aWRlb3BhcnNlOiBpbml0aWFsaXplIHVwZGF0ZV9zaXplIHRvIEZBTFNFIHdoZW4gdXBkYXRpbmcgaW5mbworCSAgT3RoZXJ3aXNlLCBiZWhhdmlvciB3aWxsIGJlIHVuZGVmaW5lZCB3aGVuIG5vIHN0cmlkZXMvb2Zmc2V0cyBhcmUgc2V0CisJICBhbmQgaXQgd2lsbCBsaWtlbHkgZ28gd3JvbmcuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMjcwCisKKzIwMTYtMDEtMjggMTE6NTY6MzYgLTA1MDAgIE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KKworCSogZ3N0L3Jhd3BhcnNlL2dzdHZpZGVvcGFyc2UuYzoKKwkgIHZpZGVvcGFyc2U6IEZpeCBmcmFtZXNpemUgY2FsY3VsYXRpb24KKwkgIFdoZW4gdGhlIGZyYW1lc2l6ZSBpcyBub3Qgc3BlY2lmaWVkLCB3ZSB0cnkgYW5kIGNhbGN1bGF0ZSBhIHNpemUgZnJvbQorCSAgdGhlIHN0cmlkZXMgYW5kIG9mZnNldCBpbmZvcm1hdGlvbi4gVGhpcyB3YXMgZG9uZSB3aXRoIHRoZSBzdW0gb2YKKwkgIG9mZnNldHMgKyB0aGUgc2l6ZSBvZiB0aGUgbGFzdCBmcmFtZS4gVGhhdCBpcyBqdXN0IHdyb25nIG1ldGhvZC4gV2UgYWxzbworCSAgbmVlZCB0byBhY2NvdW50IGZvciB2aWRlbyBtZXRhIHRoYXQgbWF5IGJlIGZsaXBwaW5nIHR3byBwbGFuZXMuIEFuCisJICBleGFtcGxlIGlzIGlmIHlvdSBjb252ZXJ0IEk0MjAgdG8gWVYxMiBieSBmbGlwcGluZyB0aGUgdHdvIGxhc3Qgb2Zmc2V0cy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAyNzAKKworMjAxNi0wMS0yOCAxOTozNjo0NyArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2dkcC9nc3RnZHBkZXBheS5jOgorCSogZ3N0L2dkcC9nc3RnZHBkZXBheS5oOgorCSAgZ2RwZGVwYXk6IEFkZCB0cy1vZmZzZXQgcHJvcGVydHkgdG8gYWRqdXN0IGJ1ZmZlciB0aW1lc3RhbXBzCisKKzIwMTYtMDEtMjkgMDQ6NTA6NDIgKzExMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjLmluOgorCSogcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UucGMuaW46CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLXZpZGVvLnBjLmluOgorCSogcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW46CisJICBwa2ctY29uZmlnOiBEb24ndCBnZW5lcmF0ZSBhbmQgaW5zdGFsbCBwa2ctY29uZmlnIHdpdGggcmVsYXRpdmUgcGF0aHMKKwkgIERvbid0IHB1dCByZWxhdGl2ZSBwYXRocyBpbiBwa2ctY29uZmlnIGZpbGVzLCBpbmNsdWRpbmcgdW5pbnN0YWxsZWQKKwkgIG9uZXMuIEZvciB0aG9zZSwgdXNlIEBhYnNfdG9wYnVpbGRkaXJAIGFuZCBAYWJzX3RvcHNyY2RpckAgYXMgd2UKKwkgIGRvIGVsc2V3aGVyZS4KKwkgIFJlbW92ZSBsaWJyYXJpZXM9IGRpcmVjdGl2ZXMsIHdoaWNoIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHBrZy1jb25maWcKKwkgIHZhcmlhYmxlIHRoYXQgYWN0dWFsbHkgZXhpc3RzLCBidXQgaGFzIGJlZW4gaW4gYWxsIG91ciBwa2ctY29uZmlnCisJICBmaWxlcyBmb3IgYXMgbG9uZyBhcyB0aGV5J3ZlIGV4aXN0ZWQuCisKKzIwMTYtMDEtMjggMTY6NDk6NTMgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXBlZy5jOgorCSAgbXhmbXBlZzogV3JpdGUgdGhlIGNvcnJlY3QgZXNzZW5jZSBjb250YWluZXIgVUwgZm9yIGFsbCBjb2RlY3MKKworMjAxNi0wMS0yOCAxNjo0MTozMSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtcGVnLmM6CisJICBteGZtcGVnOiBXcml0ZSB2ZXJzaW9uIG51bWJlciBpbnRvIHRoZSBwaWN0dXJlIGVzc2VuY2UgY29kaW5nIFVMCisKKzIwMTYtMDEtMjggMTY6MzI6MzQgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IFdyaXRlIGEgdGltZWNvZGUgdHJhY2sgaW50byB0aGUgc291cmNlIHBhY2thZ2UgdG9vCisKKzIwMTYtMDEtMTEgMTU6NDc6MjQgKzAxMDAgIEF1csOpbGllbiBaYW5lbGxpIDxhdXJlbGllbi56YW5lbGxpQHBhcnJvdC5jb20+CisKKwkqIGdzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmM6CisJKiBnc3QvcmF3cGFyc2UvZ3N0dmlkZW9wYXJzZS5oOgorCSAgdmlkZW9wYXJzZTogdXNlIGRlY2lkZV9hbGxvY2F0aW9uIHRvIGNoZWNrIGlmIGRvd25zdHJlYW0gc3VwcG9ydHMgdmlkZW9tZXRhCisJICBJZiB5ZXMsIHdlIGFkZCB0aGVtIHRvIGVhY2ggb3V0cHV0IGJ1ZmZlcnMgYW5kIHdlIGF2b2lkIGZyYW1lIGNvcHkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMjcwCisKKzIwMTYtMDEtMTEgMTU6NDY6MTYgKzAxMDAgIEF1csOpbGllbiBaYW5lbGxpIDxhdXJlbGllbi56YW5lbGxpQHBhcnJvdC5jb20+CisKKwkqIGdzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5jOgorCSogZ3N0L3Jhd3BhcnNlL2dzdHJhd3BhcnNlLmg6CisJICByYXdwYXJzZTogYWRkICdkZWNpZGVfYWxsb2NhdGlvbicgdmZ1bmMgdG8gbGV0IHN1YmNsYXNzIHBhcnNlIGFuIGFsbG9jYXRpb24gcXVlcnkKKwkgIEFuZCBzbyBzZW5kIGFuIGFsbG9jYXRpb24gcXVlcnkuIFRoaXMgY291bGQgYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyCisJICBkb3duc3RyZWFtIGVsZW1lbnQgc3VwcG9ydHMgc29tZSBtZXRhcyBvciBub3QuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMjcwCisKKzIwMTYtMDEtMDggMTc6MTc6MDEgKzAxMDAgIEF1csOpbGllbiBaYW5lbGxpIDxhdXJlbGllbi56YW5lbGxpQHBhcnJvdC5jb20+CisKKwkqIGdzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5jOgorCSAgcmF3cGFyc2U6IHVzZSBzaXplIG9mIGJ1ZmZlciB3ZSBnb3QgZnJvbSBhZGFwdGVyCisJICBPdGhlcndpc2UgcG9zaXRpb24gaW4gc3RyZWFtIGNvdWxkIGJlIHdyb25nIGlmIHN1YmNsYXNzICdwcmVfcHVzaF9mcmFtZScKKwkgIG1ldGhvZCBjaGFuZ2VzIHRoZSBidWZmZXIgc2l6ZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAyNzAKKworMjAxNi0wMS0wNyAxNDoyNzoyNyArMDEwMCAgQXVyw6lsaWVuIFphbmVsbGkgPGF1cmVsaWVuLnphbmVsbGlAcGFycm90LmNvbT4KKworCSogZ3N0L3Jhd3BhcnNlL2dzdHZpZGVvcGFyc2UuYzoKKwkqIGdzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmg6CisJICB2aWRlb3BhcnNlOiBhZGQgcHJvcGVydGllcyB0byBzZXQgZnJhbWVzaXplLCBzdHJpZGVzIGFuZCBwbGFuZXMgb2Zmc2V0cworCSAgVG8gbWFrZSBwYXJzZXIgd29yayB3aXRoIGltYWdlIGhhdmluZyBub24tc3RhbmRhcmQgc3RyaWRlcywgcGxhbmUKKwkgIG9mZnNldHMgb3Igd2l0aCBwYWRkaW5nIGJldHdlZW4gaW1hZ2VzLgorCSAgRm9yIG5vdywgc2luY2UgZWxlbWVudCBkb2Vzbid0IGNoZWNrIGZvciB2aWRlb21ldGEsIHdlIGNhbid0IGRpcmVjdGx5CisJICBwdXNoIGJ1ZmZlcnMgd2hlbiB0aGVzZSBwcm9wZXJ0aWVzIGFyZSBzZXQgc28gaXQgY29udmVydCB0aGUgZnJhbWUKKwkgIGluIHRoZSBwcmVfcHVzaF9idWZmZXIgbWV0aG9kIHRvIHJlbW92ZSBhbnkgY3VzdG9tIHBhZGRpbmcuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMjcwCisKKzIwMTYtMDEtMDggMTU6MjE6MjggKzAxMDAgIEF1csOpbGllbiBaYW5lbGxpIDxhdXJlbGllbi56YW5lbGxpQHBhcnJvdC5jb20+CisKKwkqIGdzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5jOgorCSogZ3N0L3Jhd3BhcnNlL2dzdHJhd3BhcnNlLmg6CisJKiBnc3QvcmF3cGFyc2UvZ3N0dmlkZW9wYXJzZS5jOgorCSAgcmF3cGFyc2U6IHJlbmFtZSAnc2V0X2J1ZmZlcl9mbGFncycgdmZ1bmMgdG8gJ3ByZV9wdXNoX2J1ZmZlcicKKwkgIHRvIGFsbG93IHN1YmNsYXNzIHRvIGNoYW5nZSBvdGhlciBmaWVsZHMgb2YgdGhlIGJ1ZmZlci4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAyNzAKKworMjAxNi0wMS0wNyAxNDoxODowOCArMDEwMCAgQXVyw6lsaWVuIFphbmVsbGkgPGF1cmVsaWVuLnphbmVsbGlAcGFycm90LmNvbT4KKworCSogZ3N0L3Jhd3BhcnNlL2dzdHZpZGVvcGFyc2UuYzoKKwkqIGdzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmg6CisJICB2aWRlb3BhcnNlOiBjYWNoZSB2aWRlbyBpbmZvIGluIGluc3RhbmNlCisJICBUbyBhdm9pZCBpbml0aWFsaXppbmcgYW5kIGZpbGxpbmcgdmlkZW8gaW5mbyBlYWNoIHRpbWUgd2UgbmVlZCBpdC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAyNzAKKworMjAxNi0wMS0yOCAxNTozODo0NSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtZXRhZGF0YS5jOgorCSogZ3N0L214Zi9teGZ1bC5jOgorCSogZ3N0L214Zi9teGZ1bC5oOgorCSAgbXhmbXV4OiBXcml0ZSBUaGlzIEdlbmVyYXRpb24gVUlEIGludG8gdGhlIElkZW50aWZpY2F0aW9uIG1ldGFkYXRhCisJICBJdCdzIHJlcXVpcmVkIGFjY29yZGluZyB0byB0aGUgc3RhbmRhcmQgYW5kIHdlIGZvcmdvdCB0byBhY3R1YWxseSB3cml0ZSBpdCB0bworCSAgdGhlIGZpbGUgYWx0aG91Z2ggd2Ugc3RvcmVkIGl0IGluIHRoZSBkYXRhIHN0cnVjdHVyZXMuCisKKzIwMTYtMDEtMjggMTU6Mjk6MDEgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbWV0YWRhdGEuYzoKKwkgIG14Zm1ldGFkYXRhOiBBZGQgd29ya2Fyb3VuZCBmb3IgZmZtcGVnIG9ubHkgd3JpdGluZyBvbmUgVmlkZW8gTGluZSBNYXAgdmFsdWUKKwkgIGh0dHBzOi8vZmZtcGVnLm9yZy9waXBlcm1haWwvZmZtcGVnLWRldmVsLzIwMTYtSmFudWFyeS8xODgyMDIuaHRtbAorCisyMDE1LTEwLTE0IDIxOjEzOjU3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbG1peGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2xzdGVyZW9taXguYzoKKwkqIGV4dC9nbC9nc3RnbHZpZGVvbWl4ZXIuYzoKKwkqIGdzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2FnZ3JlZ2F0b3IuYzoKKwkqIGdzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2FnZ3JlZ2F0b3IuaDoKKwkqIGdzdC9jb21wb3NpdG9yL2NvbXBvc2l0b3IuYzoKKwkgIHZpZGVvYWdncmVnYXRvcjogZG9uJ3QgZG8gY2FwcyBwcm9jZXNzaW5nIHRoYXQgaXMgbm90IG92ZXJyaWRhYmxlCisJICBBbGxvd3MgdGhlIHN1YmNsYXNzIHRvIGNvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIGNob3NlbiBzcmMgY2Fwcy4KKwkgIFRoaXMgaXMgbmVlZGVkIGFzIHZpZGVvYWdncmVnYXRvciBnZW5lcmFsbHkgaGFzIG5vIGlkZWEgZXhhY3RseQorCSAgd2hhdCBvcGVyYXRpb24gaXMgYmVpbmcgcGVyZm9ybWVkLgorCSAgLSBBZGRzIGEgZml4YXRlX2NhcHMgdmZ1bmMgZm9yIGZpeGF0aW9uCisJICAtIE1lcmdlcyBnc3RfdmlkZW9fYWdncmVnYXRvcl91cGRhdGVfY29udmVydGVycygpIGludG8KKwkgIGdzdF92aWRlb2FnZ3JlZ2F0b3JfdXBkYXRlX3NyY19jYXBzKCkgYXMgd2UgbmVlZCBzb21lIG9mIGl0cyBpbmZvCisJICBmb3IgcHJvcGVyIGNhcHMgaGFuZGxpbmcuCisJICAtIFBhc3MgdGhlIGRvd25zdHJlYW0gY2FwcyB0byB0aGUgdXBkYXRlX2NhcHMgdmZ1bmMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYyMDcKKworMjAxNi0wMS0yNyAyMDoyMzoyMSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xjb2xvcmJhbGFuY2UuYzoKKwkgIGdsY29sb3JiYWxhbmNlOiByZXR1cm4gSEFSRFdBUkUgZnJvbSBnZXRfYmFsYW5jZV90eXBlCisKKzIwMTYtMDEtMjcgMjA6MDQ6MDAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsc2lua2Jpbi5jOgorCSogZXh0L2dsL2dzdGdsc2lua2Jpbi5oOgorCSAgZ2xzaW5rYmluOiBhZGQgZ2xjb2xvcmJhbGFuY2UgZWxlbWVudAorCSAgVGhpcyBtYWtlcyBwbGF5YmluIG5vdCBwbHVnIHZpZGVvYmFsYW5jZSBhcyBnbGNvbG9yYmFsYW5jZSBhbHJlYWR5IGV4aXN0cyBhbmQKKwkgIGltcGxlbWVudHMgdGhlIEdzdENvbG9yQmFsYW5jZSBpbnRlcmZhY2UuCisKKzIwMTYtMDEtMjcgMTk6NTY6MzYgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsdmlkZW9taXhlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5Lmg6CisJICBnbDogbW92ZSBjb250cm9sIGJpbmRpbmcgcHJveHkgaW1wbGVtZW50YXRpb24gZnJvbSBnbHZpZGVvbWl4ZXIKKwkgIE90aGVyIGVsZW1lbnRzIG1heSBuZWVkIHRvIHVzZSBpdCdzIGZ1bmN0aW9uYWxpdHkKKworMjAxNi0wMS0yNyAxODoxNzowNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xjb2xvcmJhbGFuY2UuYzoKKwkgIGdsY29sb3JiYWxhbmNlOiBjcmVhdGUgdGhlIHNoYWRlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHRoZSByZW5kZXIgY2FsbGJhY2sKKwkgIENoYW5naW5nIHRoZSBwcm9wZXJ0aWVzIG1heSByZXN1bHQgaW4gZ2xjb2xvcmJhbGFuY2UgbW92aW5nIGZyb20gcGFzc3Rocm91Z2ggdG8KKwkgIG5vbi1wYXNzdGhyb3VnaCBhbmQgd2Ugd2VyZW4ndCBjcmVhdGluZyB0aGUgc2hhZGVyIGluIHRoYXQgY2FzZS4KKworMjAxNi0wMS0yNSAxNjoyOTo0NiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvcXQvZ3N0cXRzaW5rLmNjOgorCSAgcXQ6IHNwZWNpZnkgdGhhdCB3ZSBjdXJyZW50bHkgb25seSB0YWtlIDJEIHRleHR1cmVzCisJICBGaXhlcyBibGFjayBzY3JlZW4gdmlkZW8gcGxheWJhY2sgb24gYW5kcm9pZCB3aXRob3V0IGEgY2FwcyBmaWx0ZXIuCisKKzIwMTYtMDEtMjUgMTk6MTE6MzggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsdmlkZW9mbGlwLmM6CisJKiBleHQvZ2wvZ3N0Z2x2aWRlb2ZsaXAuaDoKKwkgIGdsdmlkZW9mbGlwOiBpbmNvcnBvcmF0ZSB0aGUgYXNwZWN0IHJhdGlvIGludG8gdGhlIHNjYWxlX3ggY2FsY3VsYXRpb25zCisJICAxLiBPdGhlcndpc2Ugcm90YXRpbmcgdGhlIHZpZGVvIHdpbGwgY2xpcCBhbmQgc2hvdyBibGFjayBiYXJzIGR1ZSB0bworCSAgZ2x0cmFuc2Zvcm1hdGlvbidzIGltcGxlbWVudGF0aW9uLgorCSAgMi4gVGhlIG90aGVyIG9wdGlvbiBvZiBtYWtlIGdsdHJhbnNmb3JtYXRpb24gYXNwZWN0LWFnbm9zdGljIHByb2R1Y2VzCisJICBpbmNvcnJlY3Qgb3V0cHV0IHdpdGggcGVyc3BlY3RpdmUgdHJhbnNmb3JtYXRpb25zLgorCisyMDE2LTAxLTI3IDE0OjM2OjM2ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvYXZmdmlkZW9zcmMubToKKwkgIGFwcGxlbWVkaWE6IGF2ZnZpZGVvc3JjOiBhY3R1YWxseSBzZXQgdGhlIGNvbmZpZ3VyZWQgZnJhbWVyYXRlCisJICBBY3R1YWxseSBzZXQgdGhlIGNvbmZpZ3VyZWQgZnJhbWVyYXRlLiBCZWZvcmUgd2Ugb25seSB1c2VkIHRvIHNldCB0aGUgZmlyc3QKKwkgIG1hdGNoaW5nIGZyYW1lcmF0ZSByYW5nZS4gT24gaU9TIHdoZXJlIHRoZSBjYW1lcmEgcmVwb3J0cyByYW5nZXMgWzIsIDYwXSwgd2UKKwkgIHVzZWQgdG8gY29uZmlndXJlIHRoZSBjYW1lcmEgdG8gb3V0cHV0IGFueXRoaW5nIGJldHdlZW4gMiBhbmQgNjBmcHMuCisKKzIwMTYtMDEtMjUgMjI6MzA6MjkgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmg6CisJICBvcGVuY3Y6IGFkZCBtYXNrIHByb3BlcnR5IHRvIGN2bGFwbGFjZQorCSAgQWRkIGEgIm1hc2siIHByb3BlcnR5IHRoYXQgc2V0cyB3aGV0aGVyIHRoZSBlZGdlcyBieSBjdkxhcGxhY2Ugc2hvdWxkIGJlCisJICB1c2VkIGFzIGEgbWFzayBvbiB0aGUgb3JpZ2luYWwgaW5wdXQgb3Igbm90LiBUaGUgc2FtZSB3YXkgdGhlIG9yaWdpbmFsCisJICBpbWFnZSBpcyBjb3BpZWQgdG8gdGhlIGVkZ2VzIGluIGVkZ2VkZXRlY3QuCisKKzIwMTYtMDEtMjUgMjE6NDI6NTIgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGN2c29iZWwuaDoKKwkgIG9wZW5jdjogYWRkIG1hc2sgcHJvcGVydHkgdG8gY3Zzb2JlbAorCSAgQWRkIGEgIm1hc2siIHByb3BlcnR5IHRoYXQgc2V0cyB3aGV0aGVyIHRoZSBkZXRlY3RlZCBkZXJpdmF0aXZlIGVkZ2VzCisJICBzaG91bGQgYmUgdXNlZCBhcyBhIG1hc2sgb24gdGhlIG9yaWdpbmFsIGlucHV0IG9yIG5vdC4gVGhlIHNhbWUgd2F5CisJICB0aGUgb3JpZ2luYWwgaW1hZ2UgaXMgYWRkZWQgdG8gdGhlIGVkZ2VzIGluIGVkZ2VkZXRlY3QuCisKKzIwMTYtMDEtMjUgMTU6MTk6MzcgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0c2tpbmRldGVjdC5jcHA6CisJICBvcGVuY3Y6IHVwZGF0ZSBkZXByZWNhdGVkIGZ1bmN0aW9uIGluIHNraW5kZXRlY3QKKwkgIGN2Q3Z0UGl4VG9QbGFuZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gT3BlbkNWIDMuMCwgYW5kIGN2U3BsaXQoKSBpcyB0aGUKKwkgIHN1Z2dlc3RlZCByZXBsYWNlbWVudC4gU2luY2UgY3ZTcGxpdCgpIGlzIGF2YWlsYWJsZSBpbiBPcGVuQ1YgMi40LCBpdCBpcworCSAgc2FmZSBhbmQgY2F1dGlvdXMgdG8gdXBkYXRlIHRoZSBmdW5jdGlvbiB1c2FnZSBiZWZvcmUgaXQgYmVjb21lcyBhbiBpc3N1ZS4KKworMjAxNi0wMS0yNSAxMTo0Mzo1OSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RjdmxhcGxhY2UuY3BwOgorCSogZXh0L29wZW5jdi9nc3RjdmxhcGxhY2UuaDoKKwkgIG9wZW5jdjogZml4IGN2bGFwbGFjZQorCSAgY3ZsYXBsYWNlIHdhcyBhbHNvIGFmZmVjdGVkIGJ5IHRoZSBzaWxlbnQgY2hhbmdlIGluIE9wZW5DViBBUEksIHNhbWUgYXMKKwkgIGN2c29iZWwuIEl0IGhhc24ndCBiZWVuIHdvcmtpbmcgZm9yIGEgd2hpbGUuIEl0IHdvdWxkIHJldHVybiBhIHBsYWluIGJsYWNrCisJICBpbWFnZS4gVGhpcyBjb21taXQgdXBkYXRlcyB0aGUgdXNhZ2Ugb2YgY3ZMYXBsYWNlIGJ5IHVzaW5nIGN2Q3Z0Q29sb3IgdG8KKwkgIGNyZWF0ZSB0aGUgZ3JheXNjYWxlIGludGVybWVkaWF0ZSBpbWFnZSB0byBwcm9jZXNzLiBUaGlzIGFsc28gbWVhbnMgdGhlcmUKKwkgIGlzIG5vIG5lZWQgYW55bW9yZSB0byB1c2UgR3N0QmFzZVRyYW5zZm9ybSdzIHRyYW5zZm9ybV9jYXBzLCBzaW5jZSB0aGUgcGFkcworCSAgYXJlIFJHQi4KKworMjAxNi0wMS0yNSAxMzozMzowOSArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY1cGFyc2UuYzoKKwkgIGgyNjVwYXJzZTogRml4IGJ1ZmZlciBsZWFrIHdoZW4gc3BzIGlzIG5vdCBwcmVzZW50CisJICBXaGVuIHNwcyBkYXRhIGlzIE5VTEwsIHRoZSBidWZmZXIgYWxsb2NhdGVkIGFuZCBtYXBwZWQgaXMgbm90IGJlaW5nIGZyZWVkLgorCSAgSW4gdGhpcyBzY2VuYXJpbyB0aGVyZSBpcyBubyBuZWVkIHRvIGFsbG9jYXRlIHRoZSBidWZmZXIgYXMgd2UgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBOVUxMLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTA3MAorCisyMDE2LTAxLTI1IDEyOjA1OjEyICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjVwYXJzZS5jOgorCSAgaDI2NXBhcnNlOiBGaXggYnVmZmVyIG1lbW9yeSBsZWFrLgorCSAgV2hpbGUgc2V0dGluZyBjYXBzLCBjb2RlY19kYXRhIGJ1ZmZlciBpcyBtYXBwZWQsIGJ1dCBub3QgYmVpbmcgdW5tYXBwZWQKKwkgIGxlYWRpbmcgdG8gbWVtb3J5IGxlYWtzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTA3MAorCisyMDE2LTAxLTIzIDE3OjEwOjUxICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2c29iZWwuY3BwOgorCSogZXh0L29wZW5jdi9nc3RjdnNvYmVsLmg6CisJICBvcGVuY3Y6IGZpeCBjdnNvYmVsCisJICBjdnNvYmVsIGhhbid0IGJlZW4gd29ya2luZyBmb3IgYSB3aGlsZSBkdWUgdG8gYSBzaWxlbnQgY2hhbmdlIGluIE9wZW5DVgorCSAgQVBJLiBJdCB3b3VsZCByZXR1cm4gYSBwbGFpbiBibGFjayBpbWFnZS4gVGhpcyBjb21taXQgdXBkYXRlcyB0aGUgdXNhZ2UKKwkgIG9mIGN2U29iZWwgYnkgdXNpbmcgY3ZDdnRDb2xvciB0byBjcmVhdGUgdGhlIGdyYXlzY2FsZSBpbWFnZSB0byBwcm9jZXNzLgorCSAgVGhpcyBhbHNvIG1lYW5zIHRoZXJlIGlzIG5vIG5lZWQgdG8gdXNlIEdzdEJhc2VUcmFuc2Zvcm0ncyB0cmFuc2Zvcm1fY2FwcworCSAgYW55bW9yZSwgc2luY2UgdGhlIHBhZHMgY2FuIGJlIFJHQi4KKworMjAxNi0wMS0yMyAwNTozMDowNSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogcGtnY29uZmlnL01ha2VmaWxlLmFtOgorCSAgcGtnLWNvbmZpZzogUHJvcGVybHkgdmVyc2lvbiBhbmQgaW5zdGFsbCBiYXNlL2F1ZGlvL3ZpZGVvIC5wYyBmaWxlcworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDczMyNjMTcKKworMjAxNi0wMS0yMiAxNjo0MzowMyArMDAwMCAgQWxleCBBc2hsZXkgPGFsZXguYXNobGV5QHlvdXZpZXcuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiBmaXggbGVhayBvZiBzdHJlYW0tPmludGVybmFsX3BhZAorCSAgVGhlIGZ1bmN0aW9uIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fdXBkYXRlX3NvdXJjZSgpIGZ1bmN0aW9uIGNyZWF0ZXMKKwkgIGEgbmV3IEdzdFBhZCBjYWxsZWQgaW50ZXJuYWxfcGFkLiBUaGlzIHBhZCBpcyBub3QgZnJlZWQgd2hlbiByZWxlYXNpbmcKKwkgIHRoZSBzdHJlYW0uCisJICBUaGUgc29sdXRpb24gaXMgdG8gc2V0IEdTVF9QQURfRkxBR19ORUVEX1BBUkVOVCBzbyB0aGF0IHRoZSBjaGFpbgorCSAgZnVuY3Rpb25zIGRvIG5vdCBnZXQgY2FsbGVkIHdoZW4gdGhlIHBhZCBoYXMgbm8gcGFyZW50IGFuZCB0aGVuCisJICByZW1vdmUgdGhlIHBhcmVudCBpbiB0aGUgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9mcmVlKCkgZnVuY3Rpb24uIFRoaXMKKwkgIGNhdXNlcyB0aGUgcmVmY291bnQgb2YgdGhlIHBhZCB0byBiZSBzZXQgdG8gemVyby4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA5ODIKKworMjAxNi0wMS0yMSAyMjowMDo0NCArMDgwMCAgSm9obiBDaGFuZyA8cjk3OTIyMTUzQGdtYWlsLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJICBtcGRwYXJzZXI6IFVzZSBSZXByZXNlbnRhdGlvbkluZGV4IGluc3RlYWQgb2YgSW5pdGlhbGl6YXRpb24gdG8gZ2V0IHRoZSBVUkwgb2YgdGhlIFJlcHJlc2VudGF0aW9uSW5kZXgKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA5MzYKKworMjAxNi0wMS0yMiAxNzoyNToyOCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkgIGFoYzogRmFpbCBncmFjZWZ1bGx5IGlmIG91ciBjYWxsYmFjayBjbGFzcyBjYW4ndCBiZSBmb3VuZAorCSAgSW5zdGVhZCBvZiBqdXN0IGlnbm9yaW5nIHRoYXQgZXJyb3IgYW5kIHRoZW4gY2FsbGluZyBKTkkgZnVuY3Rpb25zIHdpdGggTlVMTCwKKwkgIHdoaWNoIHdpbGwga2lsbCB0aGUgdmlydHVhbCBtYWNoaW5lLgorCSAgVGhlIGVycm9yIGhhbmRsaW5nIGhlcmUgbmVlZHMgc29tZSBmdXJ0aGVyIGltcHJvdmVtZW50cyB0aG91Z2gsIGVycm9ycyBpbiBtb3JlCisJICBwbGFjZXMgYXJlIGp1c3QgaWdub3JlZC4KKworMjAxNi0wMS0yMiAxNzoyMjo0NyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkgIGFoYzogSW5pdGlhbGl6ZSBHRXJyb3IgcG9pbnRlciB3aXRoIE5VTEwKKwkgIE90aGVyd2lzZSB0aGVyZSB3aWxsIGJlIGFzc2VydGlvbnMuCisKKzIwMTYtMDEtMjIgMTc6MTg6NTggKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkgIGFtY3ZpZGVvZGVjOiBPbmx5IGZyZWUgR3N0QW1jQnVmZmVyIGlmIGl0J3Mgbm90IE5VTEwKKwkgIEFuZCBhbHNvIGZyZWUgaXQgb24gR0wgZXJyb3JzLgorCisyMDE2LTAxLTEzIDIyOjA1OjQ5ICswMTAwICBKdWxpZW4gTW91dHRlIDxqdWxpZW5AY3RvbmRlbWFuZC5jb20+CisKKwkqIHN5cy9kZWNrbGluay9nc3RkZWNrbGluay5jcHA6CisJKiBzeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmsuaDoKKwkqIHN5cy9kZWNrbGluay9nc3RkZWNrbGlua3ZpZGVvc2luay5jcHA6CisJKiBzeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmt2aWRlb3NyYy5jcHA6CisJKiBzeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmt2aWRlb3NyYy5oOgorCSAgZGVja2xpbmt2aWRlb3NyYzogaW1wbGVtZW50IFJHQiBjYXB0dXJlIHN1cHBvcnQKKwkgIENvbWJpbmUgbW9kZSBhbmQgZm9ybWF0IHRvIGdlbmVyYXRlIGNhcHMgYW5kIHN1cHBvcnQgdGhlIGZsYWdzIGZyb20gVmlkZW9DaGFuZ2VkIGNhbGxiYWNrIHRvIHN1cHBvcnQgUkdCIGNhcHR1cmUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNTk0CisKKzIwMTYtMDEtMjIgMTY6MjI6MDcgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmg6CisJICBhbWM6IEFkZCBhbiBhc3NlcnRpb24gZm9yIE5VTEwgR0Vycm9ycworCSAgU2hvdWxkIG5ldmVyIGhhcHBlbiEgQnV0IGFuIGFzc2VydGlvbiBpcyBiZXR0ZXIgdGhhbiBhIE5VTEwgcG9pbnRlcgorCSAgZGVyZWZlcmVuY2UuCisKKzIwMTYtMDEtMjIgMTY6MTQ6NDYgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJICBhaGM6IEZpeCBpbmRlbnRhdGlvbgorCisyMDE2LTAxLTIyIDE2OjEzOjQ1ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNhdWRpb2RlYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2VuYy5jOgorCSAgYW1jOiBNZWRpYUNvZGVjOjpnZXRPdXRwdXRCdWZmZXIoKSBjYW4gcmV0dXJuIE5VTEwgd2l0aG91dCBleGNlcHRpb24KKwkgIEhhcHBlbnMgd2hlbiBkb2luZyB6ZXJvY29weSByZW5kZXJpbmcsIG9yIHdoZW4gcGFzc2luZyBhIHdyb25nIGluZGV4IHRvIGl0LgorCSAgSGFuZGxlIHRoaXMgcHJvcGVybHkgZm9yIHplcm9jb3B5IHJlbmRlcmluZywgZmFpbCBwcm9wZXJseSBmb3IgdGhlIG90aGVyCisJICBjYXNlcy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA5NjEKKworMjAxNi0wMS0xNiAxODo1OTo0MyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW06CisJKiBwa2djb25maWcvTWFrZWZpbGUuYW06CisJICBiYXNlL2F1ZGlvL3ZpZGVvOiBJbnN0YWxsIGhlYWRlcnMgYW5kIHBrZy1jb25maWcgZmlsZXMKKwkgIFRoZXkgYXJlIHN0aWxsIGNvbnNpZGVyZWQgdW5zdGFibGUgQVBJIGJ1dCBpdCB3b3VsZCBiZSBnb29kIHRvIGdpdmUgdGhlbSBzb21lCisJICB3aWRlciB0ZXN0aW5nIGFscmVhZHkgdG8gbWFrZSBzdXJlIHRoZSBBUEkgaXMgdXNlZnVsLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDczMworCisyMDE2LTAxLTE2IDE4OjU2OjI2ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJKiBnc3QtbGlicy9nc3QvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvYXVkaW8vZ3N0YXVkaW9hZ2dyZWdhdG9yLmM6CisJKiBnc3QtbGlicy9nc3QvYXVkaW8vZ3N0YXVkaW9hZ2dyZWdhdG9yLmg6CisJKiBnc3QvYXVkaW9taXhlci9NYWtlZmlsZS5hbToKKwkqIGdzdC9hdWRpb21peGVyL2dzdGF1ZGlvYWdncmVnYXRvci5jOgorCSogZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9hZ2dyZWdhdG9yLmg6CisJKiBnc3QvYXVkaW9taXhlci9nc3RhdWRpb2ludGVybGVhdmUuaDoKKwkqIGdzdC9hdWRpb21peGVyL2dzdGF1ZGlvbWl4ZXIuaDoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLXVuaW5zdGFsbGVkLnBjLmluOgorCSogcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYXVkaW8ucGMuaW46CisJICBhdWRpbzogTW92ZSBhdWRpb2FnZ3JlZ2F0b3IgYmFzZSBjbGFzcyB0byBhIGxpYnJhcnkKKwkgIEl0J3MgdXNlZnVsIGVub3VnaCBhbHJlYWR5IHRvIGJlIHVzZWQgaW4gb3RoZXIgZWxlbWVudHMgZm9yIGF1ZGlvIGFnZ3JlZ2F0aW9uLAorCSAgbGV0J3MgZ2l2ZSBwZW9wbGUgdGhlIG9wcG9ydHVuaXR5IHRvIHVzZSBpdCBhbmQgZ2l2ZSBpdCBzb21lIEFQSSB0ZXN0aW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDczMworCisyMDE2LTAxLTIxIDIzOjEzOjM2ICswMTAwICBIb2xnZXIgS2FlbGJlcmVyIDxob2xnZXIua0BlbGJlcmVyLmRlPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9nc3RnbHdpbmRvd19hbmRyb2lkX2VnbC5jOgorCSAgZ2x3aW5kb3c6IEZpeCBhbmRyb2lkIGJ1aWxkCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwOTcyCisKKzIwMTYtMDEtMjIgMTM6NTE6NDkgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5tOgorCSAgYXBwbGVtZWRpYTogdGV4dHVyZSBjYWNoZTogY29weSB0aGUgaW5wdXQgbWV0YXMKKwkgIENvcHkgdGhlIGlucHV0IG1ldGFzIHNvIGF2ZnZpZGVvc3JjIGFuZCB2dGVuYyBjYW4gZmFzdCBwYXRoIHRvIHVzaW5nCisJICBDVlBpeGVsQnVmZmVyKHMpIGV2ZW4gd2hlbiB1c2luZyBHTE1lbW9yeS4KKworMjAxNi0wMS0yMSAxMzo1MDo0NCAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJICBNZXJnZSBicmFuY2ggJ2FuZHJvaWQtaGFyZHdhcmUtY2FtZXJhJworCSAgVGhpcyBicmFuY2ggYWRkcyBzdXBwb3J0IGZvciBBbmRyb2lkIEhhcmR3YXJlIENhbWVyYSBBUEkgdGhyb3VnaCBhIG5ldworCSAgZWxlbWVudCBjYWxsZWQgYWhjc3JjLiBUaGlzIGlzIHRoZSAib2xkIiBBbmRyb2lkIENhbWVyYSBBUEksIHRoZW4gb25seQorCSAgQVBJIGF2YWlsYWJsZSBvbiBBbmRyb2lkIDQuWC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVmLmNnaT9pZD03Mzc3ODYKKworMjAxNi0wMS0wOCAxNjoxNjowOSAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFoY3NyYy5jOgorCSAgYWhjc3JjOiBGaXggbGF0ZW5jeSByZXBvcnRpbmcKKwkgIEN1cnJlbnRseSBpdCB3YXMgd3JvbmdseSByZXBvcnRpbmcgbWluL21heCBhcyBiZWluZyB0aGUgc2hvcnRlc3QgYW5kCisJICBsb25nZXN0IHBvc3NpYmxlIGZyYW1lIGR1cmF0aW9uLiBUaGlzIGlzIG5vdCBob3cgbGF0ZW5jeSB3b3JrcyBpbgorCSAgR1N0cmVhbWVyLgorCSAgRml4IGJ5IHJlcG9ydGluZyBtaW4gbGF0ZW5jeSBhcyBiZWluZyB0aGUgbG9uZ2VzdCBwb3NzaWJsZSBkdXJhdGlvbiBvZgorCSAgb25lIGZyYW1lLiBBcyB3ZSBkb24ndCBrbm93IGhvdyBtYW55IGJ1ZmZlcnMgdGhlIHN0YWNrIGNhbiBhY2N1bXVsYXRlLCB3ZQorCSAgc2ltcGx5IGFzc3VtZSB0aGF0IG1heCBsYXRlbmN5IGlzIHRoZSBzYW1lICh0aGUgdXN1YWwgZGVmYXVsdCBiZWhhdmlvdXIpLgorCisyMDE1LTEyLTA3IDE0OjMxOjQwICswMTAwICBHZW9yZ2UgS2lhZ2lhZGFraXMgPGdlb3JnZS5raWFnaWFkYWtpc0Bjb2xsYWJvcmEuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFoY3NyYy5jOgorCSAgYWhjc3JjOiBmaXggZGVhZGxvY2sgd2hlbiBmbHVzaGluZworCSAgX2RhdGFfcXVldWVfaXRlbV9mcmVlKCkgY2FsbHMgZ3N0X2J1ZmZlcl91bnJlZigpLCB3aGljaAorCSAgY2FsbHMgZ3N0X2FoY19zcmNfYnVmZmVyX2ZyZWVfZnVuYygpLCB3aGljaCBjYWxscworCSAgZ19tdXRleF9sb2NrKCkgb24gc2VsZi0+bXV0ZXggYW5kIHRoZXJlIHlvdSBnby4uLiBkZWFkbG9jayEKKworMjAxNS0xMi0yNCAxMjo1MToxMyArMDkwMCAgSnVzdGluIEtpbSA8anVzdGluLmtpbUBjb2xsYWJvcmEuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL01ha2VmaWxlLmFtOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFjb2RlYy5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjaW5mby5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjaW5mby5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjbGlzdC5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjbGlzdC5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWZvcm1hdC5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWZvcm1hdC5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhaGNzcmMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YWhjc3JjLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9vcmcvZnJlZWRlc2t0b3AvZ3N0cmVhbWVyL2FuZHJvaWRtZWRpYS9Hc3RBaGNDYWxsYmFjay5qYXZhOgorCSAgYWhjc3JjOiBwb3J0aW5nIGZyb20gMC4xMCB0byAxLjAKKworMjAxNS0xMi0yNCAxMjoxNDoyNCArMDkwMCAgSnVzdGluIEtpbSA8anVzdGluLmtpbUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZHZtL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2R2bS9nc3Rkdm0uYzoKKwkqIGdzdC1saWJzL2dzdC9kdm0vZ3N0ZHZtLmg6CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLWR2bS11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItZHZtLnBjLmluOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvTWFrZWZpbGUuYW06CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9jb20vZ3N0cmVhbWVyL0dzdEFoY0NhbGxiYWNrLmphdmE6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuaDoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuaDoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNjYWxsYmFjay5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZGNhbWVyYS5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhaGNzcmMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YWhjc3JjLmg6CisJICBtb3ZlIGFuZHJvaWRjYW1lcmEgaW50byBhbmRyb2lkbWVkaWEKKwkgIFRoaXMgY29tbWl0IGlzIGEgcGFydCBvZiBwb3J0bmcgYW5kcm9pZCBoYXJkd2FyZSBjYW1lcmEgZnJvbSAwLjEwIGltcGxlbWVudGF0aW9uLgorCSAgVG8gcHJlc2VydmUgaGlzdG9yeSBhbmQgZ2V0IGRpZmYgY2xlYXJseSwgdGhlIGludGVyZXN0aW5nIGZpbGVzIGFyZSBtb3ZlZCB0bworCSAgZGVwbG95bWVudCBkaXJlY3RvcnkgYW5kIHRoZSByZW1haW5pbmcgZmlsZXMgYXJlIHJlbW92ZWQuCisKKzIwMTMtMDEtMDcgMTg6Mjc6NDAgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuaDoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogU2VwYXJhdGUgcmVsZWFzZSBhbmQgZnJlZSBBUElzCisKKzIwMTMtMDEtMDcgMTg6MjA6NDcgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFjb2RlY2luZm8uYzoKKwkgIGFuZHJvaWRtZWRpYTogRml4IGdldF9sZXZlbCBhbmQgZ2V0X3Byb2ZpbGUgZXhjZXB0aW9uIGNoZWNraW5nIGJ5IG5vdCB1c2luZyByZXR1cm4KKworMjAxMy0wMS0wNyAxODoxOToyOCAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFjb2RlY2luZm8uYzoKKwkgIGFuZHJvaWRtZWRpYTogQWRkIGV4dGVybiBnaW50IGRlY2xhcmF0aW9ucworCisyMDEzLTAxLTA3IDE4OjE4OjE4IC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBnc3QtbGlicy9nc3QvZHZtL2dzdGR2bS5oOgorCSAgZ3N0ZHZtOiBGaXggR1NUX0RWTV9HRVRfU1RBVElDX0ZJRUxECisKKzIwMTItMTEtMjkgMjA6MTA6MTkgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jOgorCSAgYW5kcm9pZGNhbWVyYTogU21hbGwgcmVmYWN0b3IgaW4gY2FzZSBvcGVuIGRvZXNuJ3QgdGhyb3cgYW4gZXhjZXB0aW9uIGJ1dCByZXR1cm5zIG51bGwKKworMjAxMi0xMi0xMyAxNzo1Nzo1OCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jOgorCSAgYW5kcm9pZGNhbWVyYTogRml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MKKworMjAxMi0xMi0xMyAxNzo1NjowMSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CisKKwkqIGdzdC1saWJzL2dzdC9kdm0vTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvZHZtL2dzdC1kdm0uYzoKKwkqIGdzdC1saWJzL2dzdC9kdm0vZ3N0LWR2bS5oOgorCSogZ3N0LWxpYnMvZ3N0L2R2bS9nc3Rkdm0uYzoKKwkqIGdzdC1saWJzL2dzdC9kdm0vZ3N0ZHZtLmg6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZGNhbWVyYS5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFjb2RlY2luZm8uYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFjb2RlY2xpc3QuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFmb3JtYXQuYzoKKwkgIGR2bTogUmVuYW1lIGdzdC1kdm0uW2NoXSB0byBnc3Rkdm0uW2NoXSBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBHU3RyZWFtZXIgY29kZQorCisyMDEyLTEyLTEzIDE3OjQwOjIyICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKworCSogZ3N0LWxpYnMvZ3N0L2R2bS9nc3QtZHZtLmM6CisJKiBnc3QtbGlicy9nc3QvZHZtL2dzdC1kdm0uaDoKKwkgIGR2bTogQWRkIG5ldyBmdW5jdGlvbiB0byBjaGVjayBpZiB3ZSBzdGFydGVkIGEgVk0gb3Igb25seSB1c2VkIGFuIGV4aXN0aW5nIG9uZQorCisyMDEyLTEyLTEzIDE3OjQwOjA0ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuaDoKKwkgIGFuZHJvaWRtZWRpYTogTWFrZSBldmVyeXRoaW5nIGNvbXBpbGUgd2l0aCB0aGUgbmV3IHdyYXBwZXJzCisKKzIwMTItMTItMTMgMTI6MTM6MjcgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFjb2RlYy5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjaW5mby5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjaW5mby5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjbGlzdC5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjbGlzdC5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWZvcm1hdC5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWZvcm1hdC5oOgorCSAgYW5kcm9pZG1lZGlhOiBBZGQgcmVtYWluaW5nIGJpdHMgb2YgdGhlIEphdmEgd3JhcHBlcnMgdXNpbmcgbGliZ3N0ZHZtCisKKzIwMTItMTItMTMgMTI6MTM6MTIgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisJKiBnc3QtbGlicy9nc3QvZHZtL2dzdC1kdm0uaDoKKwkgIGR2bTogQWRkIHNvbWUgbW9yZSBoZWxwZXIgbWFjcm9zCisKKzIwMTItMTItMTIgMTg6MTA6MTMgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFmb3JtYXQuYzoKKwkgIGFuZHJvaWRtZWRpYTogUmVtb3ZlIGdfcmV0dXJuX2lmX2ZhaWxzKCkKKwkgIFRoaXMgaXMgbm90IHB1YmxpYyBBUEkgc28gaXQgaGFzIG5vIGFkdmFudGFnZSB0byBoYXZlIHRoZW0gaGVyZS4KKworMjAxMi0xMS0yOCAyMDo1Mzo1MSAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFmb3JtYXQuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFmb3JtYXQuaDoKKwkgIGFuZHJvaWRtZWRpYTogVXNlIGdzdC1kdm0gYW5kIHJlZmFjdG9yIGphdmEgd3JhcHBlcnMgKFdJUCkKKwkgIE1vdmVkIHRoZSBqYXZhIHdyYXBwZXIgQVBJIGludG8gaXRzIG93biBmaWxlcyBhbmQgbWFkZSB1c2Ugb2YgdGhlCisJICBnc3QtZHZtIG1hY3Jvcy4gQWxzbyByZW5hbWVkIHRoZSBBUEkgdG8gaGF2ZSB0aGUgcHJvcGVyIG5hbWluZworCSAgY29udmVudGlvbiBhbmQgY29kaW5nIHN0eWxlIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBvbmUgaW4gYW5kcm9pZGNhbWVyYS4KKwkgIFRoaXMgaXMgYSB3b3JrIGluIHByb2dyZXNzISAiYW5kcm9pZC9tZWRpYS9NZWRpYUNvZGVjTGlzdCIgaXMgc3RpbGwgbWlzc2luZworCSAgYW5kIHRoZSBhY3R1YWwgZWxlbWVudHMgaGF2ZSBub3QgYmVlbiBwb3J0ZWQgdG8gdXNlIHRoZSBuZXcgZnVuY3Rpb24gbmFtZXMuCisKKzIwMTItMTEtMjggMTU6MjY6NDkgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0Lmg6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmg6CisJICBhbmRyb2lkY2FtZXJhOiBBZGQgR19CRUdJTi9FTkRfREVDTFMgdG8gdGhlIC5oCisKKzIwMTItMTEtMjcgMTk6MjU6MDYgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIGdzdC1saWJzL2dzdC9kdm0vTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvZHZtL2dzdC1kdm0uYzoKKwkqIGdzdC1saWJzL2dzdC9kdm0vZ3N0LWR2bS5oOgorCSogcGtnY29uZmlnL2dzdHJlYW1lci1kdm0tdW5pbnN0YWxsZWQucGMuaW46CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLWR2bS5wYy5pbjoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL01ha2VmaWxlLmFtOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtZHZtLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtZHZtLmg6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGdzdC1kdm06IENyZWF0ZSBhIGdzdC1kdm0gbGlicmFyeSB1c2luZyBwYXJ0IG9mIGFuZHJvaWRjYW1lcmEKKworMjAxMi0xMS0yNyAxNzoyNDozNSAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBBZGRpbmcgYSBkZXZpY2UtbmFtZSBwcm9wZXJ0eQorCisyMDEyLTExLTIwIDE5OjU2OjIyIC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYW5kcm9pZGNhbWVyYS54bWw6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5oOgorCSAgYW5kcm9pZGNhbWVyYTogQWRkIGVsZW1lbnQgZG9jdW1lbnRhdGlvbgorCisyMDEyLTExLTE5IDE4OjI1OjEyIC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9NYWtlZmlsZS5hbToKKwkgIGFuZHJvaWRjYW1lcmE6IFByZXR0aWZ5IHRoZSBnc3RhaGNjYWxsYmFjay5jIGdlbmVyYXRpb24gbGluZSBpbiB0aGUgbWFrZWZpbGUKKworMjAxMi0xMS0xNSAxMjozMzoyNiAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJICBhbmRyb2ljYW1lcmE6IE1ha2Ugc3VyZSB0aGUgVE1QIGVudiB2YXIgZXhpc3RzIGFuZCBjaGVjayBmb3IgREVYIHZhciB0b28KKworMjAxMi0xMS0xNCAxMTozODo1MSAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJICBhbmRyb2lkY2FtZXJhOiBEbyBub3QgdXNlIGdzdF9saXN0X2ZyZWVfZnVsbCBzaW5jZSBpdCByZXF1aXJlcyBnbGliIDIuMjgKKworMjAxMi0xMS0xMiAxODo1OTo1NyAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuaDoKKwkgIGFuZHJvaWRjYW1lcmE6IEFkZCBzbW9vdGgtem9vbSBwcm9wZXJ0eSBmb3Igc21vb3RoIHpvb21pbmcgZmVhdHVyZQorCisyMDEyLTExLTEyIDE4OjE5OjIwIC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IEFkZCBmb2NhbC1sZW5ndGgsIHZpZXctYW5nbGUgYW5kIHZpZGVvLXN0YWJpbGl6YXRpb24gcHJvcGVydGllcworCisyMDEyLTExLTEyIDE4OjE4OjExIC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oOgorCSAgYW5kcm9pZGNhbWVyYTogQWRkIHZpZGVvIHN0YWJpbGl6YXRpb24gQVBJCisKKzIwMTItMTEtMTIgMTY6Mzg6NDAgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogQWRkIHByb3BlcnR5IHByb2JlIGZvciB0aGUgcGhvdG9ncmFwaHkgcHJvcGVydGllcworCisyMDEyLTExLTA5IDE4OjIxOjIxIC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IFNtYWxsIHJlZmFjdG9yCisKKzIwMTItMTEtMDkgMTY6NTc6MzAgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogRml4IHNtYWxsIG1lbWxlYWsKKworMjAxMi0xMS0wOSAxNjo1NTo1NyAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBTdG9yZSBHUGFyYW1TcGVjIGZvciBwcm9wZXJ0aWVzIGFuZCB1c2UgdGhhdCBmb3IgdGhlIFByb3BlcnR5UHJvYmUgY29tcGFyaXNvbgorCisyMDEyLTExLTA5IDEyOjIzOjM3IC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IEhhbmRsZSB6b29tIGNvbXBhcmlzb24gYmV0dGVyLCBhbmQgYXZvaWQgZmxvYXQgcHJlY2lzaW9uIGlzc3VlCisKKzIwMTItMTEtMDkgMTI6MjI6MTIgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogRml4IEVWIGNvbXBlbnNhdGlvbiBzdXBwb3J0CisKKzIwMTItMTEtMDcgMTk6MTY6MDUgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogSW1wbGVtZW50IG5ldyBHc3RQaG90b2dyYXBoeSBlbnVtcworCisyMDEyLTExLTA3IDE1OjM4OjE5IC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IERvIG5vdCBhZHZlcnRpc2Ugem9vbSBjYXBhYmlsaXRpZXMgaWYgY2FtZXJhIGRvZXNuJ3Qgc3VwcG9ydCB6b29tCisKKzIwMTItMTEtMDcgMTU6Mzc6NDMgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jOgorCSAgYW5kcm9pZGNhbWVyYTogQmUgTlVMTC1zYWZlIHdoZW4gYSBKTkkgbGlzdCBpcyByZXR1cm5lZAorCisyMDEyLTExLTAyIDE4OjA3OjI0IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IFVzZSBzdHJjbXAgb24gdGhlIEdQYXJhbVNwZWMgcHJvcGVydHkgbmFtZQorCSAgVXNlIHN0cmNtcCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBwcm9wZXJ0eV9pZCBiZWNhdXNlIGl0J3Mgb3ZlcnJpZGVuCisKKzIwMTItMTEtMDIgMTg6MDA6NTUgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZG1lZGlhOiBJbXBsZW1lbnQgcHJvcGVydHkgcHJvYmUgZm9yIHpvb20gYW5kIGV2X2NvbXBlbnNhdGlvbgorCisyMDEyLTExLTAyIDE3OjAwOjQ1IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9jb20vZ3N0cmVhbWVyL0dzdEFoY0NhbGxiYWNrLmphdmE6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBBZGQgYXV0b2ZvY3VzIHN1cHBvcnQKKworMjAxMi0xMS0wMiAxNjo1OTo0MiAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBPdmVycmlkZSBwcm9wZXJ0aWVzCisKKzIwMTItMTEtMDEgMTU6MjQ6MTIgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5yb2lkY2FtZXJhOiBBZGQgc3VwcG9ydCBmb3IgdGhlIEdzdFBob3RvZ3JhcGh5IGludGVyZmFjZQorCisyMDEyLTExLTAxIDExOjU4OjMzIC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oOgorCSAgYW5kcm9pZGNhbWVyYTogQWRkIG1vcmUgd3JhcHBlcnMgZm9yIHRoZSBDYW1lcmEuUGFyYW1ldGVycyBjbGFzcworCisyMDEyLTEwLTMxIDE0OjIxOjQ3IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IFNlbmQgcHJvcGVyIGVycm9yIHdoZW4gdW5hYmxlIHRvIG9wZW4gY2FtZXJhCisKKzIwMTItMTAtMzAgMTI6MTM6MTIgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogQWRkaW5nIGRldmljZS1vcmllbnRhdGlvbiBhbmQgZGV2aWNlLWZhY2luZyBwcm9wZXJ0aWVzCisKKzIwMTItMTAtMzAgMTE6MzU6MzYgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmg6CisJICBhbmRyb2lkY2FtZXJhOiBBZGQgZGV2aWNlIHByb3BlcnR5IGFuZCBwcm9wZXJ0eSBwcm9iZSBpdAorCisyMDEyLTEwLTMwIDEwOjEyOjA2IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IEZpeCBtZW1sZWFrIGFuZCBsb3NlIG9mIGJ1ZmZlciBpZiB0aGUgZGF0YSBxdWV1ZSBpcyBmbHVzaGluZworCisyMDEyLTEwLTMwIDA5OjQ5OjM5IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IENhbGxpbmcgc2V0X3ByZXZpZXdfY2FsbGJhY2sgd2l0aCBOVUxMIGZyZWVzIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgcXVldWUuCisJICBXZSBtdXN0IG5vdCBkbyBpdCBhdCB0aGUgc3RvcCBvdGhlcndpc2Ugd2UgbG9zZSBhbGwgb3VyIGJ1ZmZlcnMuIEl0J3MgYmVzdCB0byBkbworCSAgaXQgZHVyaW5nIHRoZSBjbG9zZSwgc28gd2UgZnJlZSB1cCB0aGUgcmVzb3VyY2VzLgorCisyMDEyLTEwLTMwIDA5OjQ5OjAzIC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IERyb3AgZnJhbWVzIGlmIHdlIGRvbid0IGhhdmUgYSBjbG9jayBhbmQgdmFyIHJlbmFtZQorCisyMDEyLTEwLTMwIDA5OjQ1OjU1IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWNhbWVyYTogaWYgYnVmZmVyIHNpemUgaW5jcmVhc2VzLCB0aGVuIHJlYWRkIG5ldyBidWZmZXJzIHRvIHRoZSBxdWV1ZSBhbmQgZHJvcCBvbGQgb25lcworCSAgVGhlIG9uX3ByZXZpZXcgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgd2l0aCBOVUxMIGlmIHRoZSBidWZmZXIgaW4gdGhlIHF1ZXVlIGlzCisJICB0b28gc21hbGwsIHNvIHdlIG5lZWQgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBhcnJheSBpcyBOVUxMLiBBbHNvCisJICB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgYW5kcm9pZCBzb3VyY2Ugd2hpY2ggbWFrZXMgaXQgZHJvcCBvbmUgb2YgdGhlIGJ1ZmZlcnMKKwkgIHNvIGlmIHdlIGhhZCA1IGJ1ZmZlcnMsIGFuZCB3ZSByZW5lZ290aWF0ZSB0byBhIGhpZ2hlciByZXNvbHV0aW9uLCB0aGVuIHdlJ2QKKwkgIG9ubHkgZ2V0IDQgY2FsbHMgdG8gb25fcHJldmlld19mcmFtZSB3aXRoIE5VTEwsIHdpdGggb25lIGJlaW5nIGRyb3BwZWQuCisJICBUaGlzIG1lYW5zIHdlIGNhbid0IHJlYWxsb2NhdGUgdGhlIGJ1ZmZlcnMgaW4gdGhlIGlmIChkYXRhID09IE5VTEwpIGNhc2UKKwkgIGJlY2F1c2Ugd2UgbWlnaHQgZW5kIHVwIHdpdGggMCBidWZmZXJzIGluIHRoZSBlbmQuCisKKzIwMTItMTAtMzAgMDk6NDQ6MzEgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jOgorCSAgYW5kcm9pZGNhbWVyYTogSWYgY2FsbGJhY2sgaXMgTlVMTCB0aGVuIHNldCBpdCB0byBOVUxMIGluIGpuaQorCisyMDE2LTAxLTIxIDEzOjQ2OjUyIC0wNTAwICBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jb20+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogRml4IGRlYnVnIG91dHB1dAorCisyMDEyLTEwLTI2IDEyOjU3OjUwICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBDaG9zZSB0aGUgc21hbGxlc3QgcmFuZ2UgdGhhdCBjb250YWlucyB0aGUgdGFyZ2V0IGZyYW1lcmF0ZQorCisyMDEyLTEwLTI2IDEyOjQzOjA5ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBJbXByb3ZlIG5lZ290aWF0aW9uCisJICBBbmQgbWFrZSBzdXJlIHdlIHNldCBhbiBGUFMgcmFuZ2UgZnJvbSB0aGUgc3VwcG9ydGVkIG9uZXMKKwkgIG5vdyBpbnN0ZWFkIG9mIGEgcG90ZW50aWFsbHkgdW5zdXBwb3J0ZWQgcmFuZ2UuCisKKzIwMTItMTAtMjYgMTI6MTk6NTUgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IEltcGxlbWVudCBMQVRFTkNZIHF1ZXJ5CisKKzIwMTItMTAtMjYgMTE6NTc6NDcgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IE1ha2Ugc3VyZSB3ZSBhbHdheXMgaGF2ZSBhIHZhbGlkIGNhbWVyYSBzb3VyY2UgaW5zdGFuY2UgaW4gdGhlIGJ1ZmZlciBmcmVlIGZ1bmN0aW9uCisKKzIwMTItMTAtMjYgMTE6NDY6MjMgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogTWFrZSBzdXJlIHRvIG5vdCBjYWxsIGFueSBjYWxsYmFja3MgYWZ0ZXIgc3RvcHBpbmcgdGhlIGNhbWVyYQorCSAgRml4ZXMgc2VnZmF1bHRzIHdoZW4gcm90YXRpbmcgdGhlIGRldmljZSBmb3IgZXhhbXBsZS4KKworMjAxMi0xMC0yNCAxNToyNTo1NCAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBGaXggdGltZXN0YW1waW5nIGlzc3VlCisKKzIwMTItMTAtMjQgMTM6NTk6NTkgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmg6CisJICBhbmRyb2lkY2FtZXJhOiBBZGQgY2FwcyBuZWdvdGlhdGlvbiBzdXBwb3J0CisKKzIwMTItMTAtMjQgMTA6NTU6NTIgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgQWRkIHN1cHBvcnQgZm9yIGdldGNhcHMgdGhhdCBwcm9iZXMgdGhlIGNhbWVyYSBmb3IgY2FwYWJpbGl0aWVzCisKKzIwMTItMTAtMjMgMTM6NTQ6NDYgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZG1lZGlhOiBEcm9wIHRoZSBmaXJzdCBidWZmZXIgdG8gaGF2ZSBwcm9wZXIgdGltZXN0YW1waW5nCisKKzIwMTItMTAtMjMgMTE6MTQ6MDAgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZG1lZGlhOiBGbHVzaCB0aGUgcXVldWUgd2hlbiB0aGUgc291cmNlIGlzIHN0b3BwZWQKKworMjAxMi0xMC0yMyAxMToxMzozNyAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkbWVkaWE6IEFsbG9jYXRlL2ZyZWUgdGV4dHVyZSB3aGVuIGNhbWVyYSBpcyBvcGVuL2Nsb3NlZAorCisyMDEyLTEwLTIzIDExOjEzOjEyIC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRtZWRpYTogYWRkIGEgZ3N0X2FoY19zcmNfY2xvc2UgZnVuY3Rpb24KKworMjAxMi0xMC0yMyAxMToxMjoxOSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkbWVkaWE6IEZpeCBzbWFsbCBpbmRlbnRhdGlvbiBpc3N1ZXMKKworMjAxMi0xMC0yMyAxMDoxMjo1MiAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvTWFrZWZpbGUuYW06CisJICBhbmRyb2lkbWVkaWE6IERpc2FibGUgcGx1Z2luIGlmIGFuZHJvaWQtc2RrIGlzbid0IGZvdW5kIGFuZCBkeW5hbWljYWxseSBzZWFyY2ggZm9yIHBsYXRmb3JtIHZlcnNpb24KKworMjAxMi0xMC0yMyAwOTowMTo1MCAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvTWFrZWZpbGUuYW06CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9jb20vZ3N0cmVhbWVyL0dzdEFoY0NhbGxiYWNrLmphdmE6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY2NhbGxiYWNrLmg6CisJICBhbmRyb2lkY2FtZXJhOiBBZGQgc3VwcG9ydCBmb3IgdXNpbmcgRGV4TG9hZGVyIHdpdGggRW1iZWRlZCBHc3RBaGNDYWxsYmFjay5qYXIKKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IEZpeCBjb21waWxhdGlvbiBpc3N1ZXMKKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvTWFrZWZpbGUuYW06CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZGNhbWVyYS5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWRtZWRpYS5jOgorCSAgUmVtb3ZlIHByZXZpb3VzIGNydWZ0IGFuZCBjcmVhdGUgYW5kcm9pZGNhbWVyYSBwbHVnaW4KKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBGcmVlIHRoZSBidWZmZXJzIGFuZCByZWFkZCB0aGUgYXJyYXlzIHdoZW4gdGhlIHF1ZXVlIGlzIGNsZWFyZWQKKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1kdm0uaDoKKwkgIEFkZCBhIEdTVF9EVk1fQ0FMTCBtYWNybyB0byBlYXNlIGZ1bmN0aW9uIGNhbGxpbmcgd2l0aCBleGNlcHRpb24gY2hlY2sKKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuaDoKKwkgIENhbGN1bGF0ZSB0aW1lc3RhbXAgYXQgcmVjZXB0aW9uIG9mIHRoZSBidWZmZXIsIG5vdCB3aGVuIHB1c2hpbmcgaXQgb3V0CisKKzIwMTItMTAtMTcgMTk6NDI6NTkgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgTWFrZSB0aGUgbnVtYmVyIG9mIGNhbGxiYWNrIGJ1ZmZlcnMgY29uZmlndXJhYmxlLCBhbmQgZGVsZXRlIHRoZWlyIGxvY2FsIHJlZgorCisyMDEyLTEwLTE3IDE5OjQyOjU5IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5oOgorCSAgVXNlIEdzdERhdGFRdWV1ZSBpbnN0ZWFkIG9mIEdBc3luY1F1ZXVlIGZvciBzdG9yaW5nIGJ1ZmZlcnMKKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBVc2UgdGhlIGJ1ZmZlcidzIGZyZWVfZnVuYyB0byBtYXAgYnl0ZUFycmF5IGRhdGEgd2l0aG91dCBtYWtpbmcgYSBjb3B5CisKKzIwMTItMTAtMTcgMTk6NDI6NTkgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgUmVtb3ZlIG9wZW4gZmFpbHVyZSB0ZXN0IGNvZGUgYW5kIGRlYnVnIGxvZworCisyMDEyLTEwLTE3IDE5OjQyOjU5IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIFVzZSBZVjEyIGFzIHRoZSBkZWZhdWx0IGZvcm1hdAorCisyMDEyLTEwLTE3IDE5OjQyOjU5IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuaDoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuaDoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkbWVkaWEuYzoKKwkgIEFkZCBhIGRlaW5pdCBmdW5jdGlvbiBhbmQgcmVtb3ZlIGpjbGFzcyByZWZlcmVuY2VzIGluIGNhc2Ugb2YgZXJyb3IKKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuYzoKKwkgIFN1cmZhY2VUZXh0dXJlIGNvbnN0cnVjdHVyZSBuZWVkcyB0ZXh0dXJlX2lkCisKKzIwMTItMTAtMTcgMTk6NDI6NTkgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL01ha2VmaWxlLmFtOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWRtZWRpYS5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuaDoKKwkgIEFkZCBhaGNzcmMgQ2FtZXJhIHNvdXJjZSBlbGVtZW50IHByb3RvdHlwZQorCisyMDEyLTEwLTE3IDE5OjQyOjU5IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmg6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oOgorCSAgQWRkIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhIChhbmQgZGVwcykgSk5JIHdyYXBwZXJzCisKKzIwMTItMTAtMTcgMTk6NDI6NTkgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL01ha2VmaWxlLmFtOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWR2bS5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWR2bS5oOgorCSAgQWRkaW5nIERhbHZpayBWaXJ0dWFsIE1hY2hpbmUgcm91dGluZXMgYW5kIG1hY3JvcworCisyMDEyLTEwLTE3IDE3OjU2OjMzIC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkbWVkaWEuYzoKKwkgIGFuZHJvaWRtZWRpYTogQWRkIGFuZHJvaWRtZWRpYSBwbHVnaW4KKworMjAxNi0wMS0xNSAxNDozMTo1NCArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3NwYW5kc3AvTWFrZWZpbGUuYW06CisJKiBleHQvc3BhbmRzcC9nc3RzcGFuZHNwLmM6CisJKiBleHQvc3BhbmRzcC9nc3R0b25lZ2VuZXJhdGVzcmMuYzoKKwkqIGV4dC9zcGFuZHNwL2dzdHRvbmVnZW5lcmF0ZXNyYy5oOgorCSAgc3BhbmRzcDogQWRkIHRvbmUgZ2VuZXJhdG9yCisKKzIwMTUtMDctMTQgMTM6NDA6NDYgKzA5MDAgIEh5dW5qdW4gS28gPHp6b29uLmtvQHNhbXN1bmcuY29tPgorCisJKiBnc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4c3RyZWFtLmM6CisJICBtcGVndHNtdXg6IHNldCBub24tMCBwYXlsb2FkIGxlbmd0aCBpbiBQRVMgaGVhZGVyIGlmIHZpZGVvIEVTIHBhY2tldCBpcyBzbWFsbCBlbm91Z2gKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDg1MDcKKworMjAxNS0wNy0xNCAxMzo0Mjo1NCArMDkwMCAgSHl1bmp1biBLbyA8enpvb24ua29Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uYzoKKwkgIG1wZWd0c211eDogcmVzZXQgcGVzX2J5dGVzX3dyaXR0ZW4gd2hlbiBzdGFydGluZyB0byB3cml0ZSBuZXcgUEVTIHBhY2tldAorCSAgSW4gY2FzZSBvZiBhbiB1bmJvdW5kZWQgcGFja2V0ICh2aWRlbyB1c3VhbGx5KSwgcGVzX2J5dGVzX3dyaXR0ZW4gd2FzCisJICBubyByZXNldC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDg1MDcKKworMjAxNi0wMS0xOSAxNzowODo1MCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c211eC9tcGVndHNtdXguYzoKKwkqIGdzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uYzoKKwkqIGdzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uaDoKKwkgIG1wZWd0c211eDogYWRkIHN1cHBvcnQgZm9yIEguMjY1L0hFVkMgdmlkZW8KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQzNjcKKworMjAxNi0wMS0xOSAxMzoyMDoyMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL01ha2VmaWxlLmFtOgorCSogZXh0L2dsL2VmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmM6CisJKiBleHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuaDoKKwkgIGdsOiBmaXggY29tcGlsZXIgd2FybmluZ3Mgd2l0aCBnY2MtNgorCSAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGVmZmVjdHMvZ3N0Z2xlZmZlY3RyZ2J0b2N1cnZlLmM6MjU6MDoKKwkgIGVmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmg6MTc0OjMyOiBlcnJvcjogJ3hyYXlfY3VydmUnIGRlZmluZWQgYnV0IG5vdCB1c2VkCisJICBzdGF0aWMgY29uc3QgR3N0R0xFZmZlY3RzQ3VydmUgeHJheV9jdXJ2ZSA9IHsKKwkgIC4uLgorCisyMDE2LTAxLTE5IDA4OjM5OjU4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUuYW06CisJICBsaWJzOiBnLWk6IGZpeCBpbml0IHNlY3Rpb24gdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MKKwkgIC4uR3N0UGxheWVyLTEuMC5jOiBJbiBmdW5jdGlvbiDigJhtYWlu4oCZOgorCSAgLi5Hc3RQbGF5ZXItMS4wLmM6NTg3OjM6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uIOKAmGdzdF9pbml04oCZCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMDkwCisKKzIwMTYtMDEtMTkgMTk6MTg6NDMgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92dGVuYy5jOgorCSAgYXBwbGVtZWRpYTogdnRlbmM6IGZpeCBidWlsZCBvbiBpT1MKKworMjAxNi0wMS0xOSAxNTo1MDoyMiArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL2F2ZmFzc2V0c3JjLm06CisJKiBzeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tOgorCSogc3lzL2FwcGxlbWVkaWEvY29yZW1lZGlhYnVmZmVyLmM6CisJKiBzeXMvYXBwbGVtZWRpYS9jb3JlbWVkaWFidWZmZXIuaDoKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb2J1ZmZlci5jOgorCSogc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvYnVmZmVyLmg6CisJKiBzeXMvYXBwbGVtZWRpYS9xdGtpdHZpZGVvc3JjLm06CisJKiBzeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5tOgorCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZW5jLmM6CisJICBhcHBsZW1lZGlhOiBhbHdheXMgZmlsbCBHc3RCdWZmZXJzIHdpdGggR3N0TWVtb3J5CisJICBBbHdheXMgZmlsbCBidWZmZXJzIHdpdGggb3VyIGN1c3RvbSBtZW1vcnkuIFRoZSBjdXN0b20gbWVtb3J5IHdpbGwgYXZvaWQKKwkgIG1hcHBpbmcgQ1YvQ00gYnVmZmVycyB1bmxlc3MgbmVjZXNzYXJ5LgorCisyMDE1LTA0LTE5IDAwOjMwOjQ4ICswMzAwICBJbHlhIEtvbnN0YW50aW5vdiA8aWx5YS5rb25zdGFudGlub3ZAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9jb3JlbWVkaWFidWZmZXIuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb2J1ZmZlci5jOgorCSAgYXBwbGVtZWRpYTogaW1wbGVtZW50IGNvcHlpbmcgb2YgbWV0YQorCSAgQmVmb3JlIHRoaXMsIGJ1ZmZlcnMgd291bGQgbG9zZSB0aGVpciBDb3JlIFZpZGVvIC8gQ29yZSBNZWRpYSBtZXRhCisJICBvdmVyIGludGVydmlkZW8qIGJvdW5kYXJ5LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0NzIxNgorCisyMDE1LTA0LTAyIDIwOjA0OjE4ICswMzAwICBJbHlhIEtvbnN0YW50aW5vdiA8aWx5YS5rb25zdGFudGlub3ZAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmVtZWRpYWJ1ZmZlci5jOgorCSogc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvYnVmZmVyLmM6CisJKiBzeXMvYXBwbGVtZWRpYS9jb3JldmlkZW9idWZmZXIuaDoKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb21lbW9yeS5jOgorCSogc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvbWVtb3J5Lmg6CisJKiBzeXMvYXBwbGVtZWRpYS9wbHVnaW4ubToKKwkgIGFwcGxlbWVkaWE6IGltcGxlbWVudCBHc3RBcHBsZUNvcmVWaWRlb01lbW9yeQorCSAgSW1wbGVtZW50IGEgbmV3IG1lbW9yeSB0eXBlIHdyYXBwaW5nIENWUGl4ZWxCdWZmZXIuCisJICBUaGVyZSBhcmUgdHdvIGltbWVkaWF0ZSBhZHZhbnRhZ2VzOgorCSAgYSkgTWFrZSB0aGUgR3N0TWVtb3J5IGl0c2VsZiByZXRhaW4gdGhlIENWUGl4ZWxCdWZmZXIuIFByZXZpb3VzbHksCisJICB0aGUgY29udGFpbmluZyBHc3RCdWZmZXIgd2FzIHNvbGVseSByZXNwb25zaWJsZSBmb3IgdGhlIGxpZmV0aW1lIG9mCisJICB0aGUgYmFja2luZyBDVlBpeGVsQnVmZmVyLgorCSAgV2l0aCB0aGlzIGNoYW5nZSwgd2UgcmVtb3ZlIHRoZSBHU1RfTUVNT1JZX0ZMQUdfTk9fU0hBUkUgc28gdGhhdAorCSAgR3N0TWVtb3J5IG9iamVjdHMgYmUgcmVmZXJlbmNlZCBieSBtdWx0aXBsZSBHc3RCdWZmZXJzIChkb2luZyBhd2F5CisJICB3aXRoIHRoZSBuZWVkIHRvIGNvcHkuKQorCSAgYikgRGVsYXkgbG9ja2luZyBDVlBpeGVsQnVmZmVyIGludG8gQ1BVIG1lbW9yeSB1bnRpbCBpdCdzIGFjdHVhbGx5CisJICBtYXBwZWQgLS0gcG9zc2libHkgbmV2ZXIuCisJICBUaGUgQ1ZQaXhlbEJ1ZmZlciBvYmplY3QgaXMgc2hhcmVkIGFtb25nIHJlZmVyZW5jZXMsIHNoYXJlcyBhbmQKKwkgIChpbiBwbGFuYXIgZm9ybWF0cykgcGxhbmVzLCBzbyBhIHdyYXBwZXIgR3N0QXBwbGVDb3JlVmlkZW9QaXhlbEJ1ZmZlcgorCSAgc3RydWN0dXJlIHdhcyBpbnRyb2R1Y2VkIHRvIG1hbmFnZSBsb2NraW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0NzIxNgorCisyMDE2LTAxLTE5IDEyOjU2OjQwICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvaW9zdXJmYWNlbWVtb3J5LmM6CisJICBhcHBsZW1lZGlhOiBpb3N1cmZhY2VtZW1vcnk6IGFsbG9jIHdpdGggZ19uZXcwCisJICAuLi5zaW5jZSB0aGUgYmFzZSBjbGFzcyBkb2Vzbid0IHVzZSBnX3NsaWNlIGFueW1vcmUKKworMjAxNi0wMS0wOCAxMTowNDoxMyArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdGRhc2hkZW11eC5jOgorCSAgZGFzaGRlbXV4OiBhZGRlZCBjaGVjayB0aGF0IGF2YWlsYWJpbGl0eVN0YXJ0VGltZSBpcyBwcmVzZW50IGZvciBsaXZlIHN0cmVhbXMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2MDIKKworMjAxNS0xMS0wNCAxODoxNToyNCArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSAgYWRhcHRpdmVkZW11eDogaW1wcm92ZWQgZXJyb3IgbWVzc2FnZSBpZiBhdmFpbGFiaWxpdHlTdGFydFRpbWUgaXMgbWlzc2luZyBmb3IgYSBsaXZlIHN0cmVhbQorCSAgRm9yIGEgbGl2ZSBtcGQsIGlmIGF2YWlsYWJpbGl0eVN0YXJ0VGltZSBpcyBtaXNzaW5nLCBhZGFwdGl2ZSBkZW11eCBhc3NlcnRzCisJICB3aXRoOiBVbmV4cGVjdGVkIGNyaXRpY2FsL3dhcm5pbmc6IGdzdF9kYXRlX3RpbWVfdG9fZ19kYXRlX3RpbWU6IGFzc2VydGlvbgorCSAgJ2RhdGV0aW1lICE9IE5VTEwnIGZhaWxlZC4KKwkgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIGVycm9yIG1lc3NhZ2UgdG86CisJICBVbmV4cGVjdGVkIGNyaXRpY2FsL3dhcm5pbmc6IGdzdF9tcGRfY2xpZW50X3NlZWtfdG9fdGltZTogYXNzZXJ0aW9uCisJICAnY2xpZW50LT5tcGRfbm9kZS0+YXZhaWxhYmlsaXR5U3RhcnRUaW1lICE9IE5VTEwnIGZhaWxlZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYwMgorCisyMDE2LTAxLTE0IDE4OjI3OjUwICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jOgorCSAgdGVzdHM6IGFkYXB0aXZlLXN0cmVtYWluZzogZml4IG1lbW9yeSBsZWFrIGluIHRlc3RfaHR0cF9zcmMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2MDAKIAogMjAxNi0wMS0xNSAxMDo0OToxMiAtMDUwMCAgTWF0dCBDcmFuZSA8bWF0dGNyYW5lQHR5Y29pbnQuY29tPgogCkBAIC0xNCw2ICszOTExLDI3NSBAQAogCSAgZGVhZGxvY2suCiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNTUxCiAKKzIwMTYtMDEtMTYgMTc6MTQ6NTQgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5jOgorCSAgZ2xmaWx0ZXI6IEZpcnN0IG1ha2UgY2FwcyB3cml0YWJsZSBpbiBmaXhhdGVfY2FwcygpLCB0aGVuIHRydW5jYXRlIHRoZW0KKwkgIFRydW5jYXRpbmcgcmVxdWlyZXMgd3JpdGFibGUgY2Fwcy4KKworMjAxNi0wMS0xNiAxNzoxMjoyOSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogQ2FwcyBwYXNzZWQgdG8gZml4YXRlX2NhcHMoKSBhcmUgbm90IG93bmVkIGJ5IHVzIGFuZCBndWFyYW50ZWVkIHRvIGJlIGZpeGVkCisJICBTbyBkb24ndCB0cnkgdG8gZml4YXRlIHRoZW0sIHdoaWNoIHRha2VzIG93bmVyc2hpcCBhbmQgc3RlYWxzIHRoZW0gZnJvbQorCSAgYmFzZXRyYW5zZm9ybS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2OTYKKworMjAxNi0wMS0xNiAxNjo1NTo0MiArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5jOgorCSAgUmV2ZXJ0ICJnbHBvb2w6IGZpeCBjYXBzIHJlZmNvdW50IGlzc3VlIgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCAzYmRjZGVkZmEwMGI4N2YxZGI1MDUyMTg3ODkxNzgzMThhMTZjNzQzLgorCSAgZ3N0X2NhcHNfcmVwbGFjZSgpIHRha2VzIGEgbmV3IHJlZmVyZW5jZSBhbHJlYWR5LCBpZiB0aGVyZSBpcyBhIHByb2JsZW0gdGhlbgorCSAgaXQgaXMgZWxzZXdoZXJlLiBBbmQgdGhlcmUgYXJlIGEgZmV3IHByb2JsZW1zLCBzZWUKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2OTYKKworMjAxNi0wMS0xNSAxNjoxMDowMiArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0L3J0cC9nc3RydHBoMjY1ZGVwYXkuYzoKKwkgIHJ0cGgyNjVkZXBheTogZml4IHVubmVlZGVkIHN1Yi1idWZmZXIgY3JlYXRpb24KKwkgIFdlIGNyZWF0ZSBhIHN1Yi1idWZmZXIganVzdCB0byBjb3B5IG92ZXIgaXRzIG1ldGFzIGFuZCB0aGVuIHRocm93IGl0CisJICBhd2F5IGltbWVkaWF0ZWx5LCBqdXN0IHVzZSB0aGUgb3JpZ2luYWwgaW5wdXQgYnVmZmVyIGRpcmVjdGx5LgorCisyMDE2LTAxLTE1IDE1OjU2OjU5ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBnc3QvcnRwL2dzdHJ0cGgyNjVwYXkuYzoKKwkgIHJ0cGgyNjVwYXk6IGFkZCAic2VuZCBWUFMvU1BTL1BQUyB3aXRoIGV2ZXJ5IGtleSBmcmFtZSIgbW9kZQorCSAgSXQncyBub3QgZW5vdWdoIHRvIGhhdmUgdGltZW91dCBvciBldmVudCBiYXNlZCBWUFMvU1BTL1BQUyBpbmZvcm1hdGlvbgorCSAgc2VudCBpbiBSVFAgcGFja2V0cy4gVGhlcmUgYXJlIHNvbWUgc2NlbmFyaW9zIHdoZW4ga2V5IGZyYW1lcyBtYXkgYXBwZWFyCisJICBtb3JlIGZyZXF1ZW50bHkgdGhhbiBvbmNlIGEgc2Vjb25kLCBpbiB3aGljaCBjYXNlIHRoZSBtaW5pbXVtIHRpbWVvdXQKKwkgIGZvciAiY29uZmlnLWludGVydmFsIiBvZiAxIHNlY29uZCBmb3Igc2VuZGluZyBWUFMvU1BTL1BQUyBpc24ndCBlbm91Z2guCisJICBJdCBtaWdodCBhbHNvIGJlIGRlc2lyYWJsZSBpbiBnZW5lcmFsIHRvIG1ha2Ugc3VyZSB0aGUgVlBTL1NQUy9QUFMgaXMKKwkgIGF2YWlsYWJsZSB3aXRoIGV2ZXJ5IGtleWZyYW1lIChwYWNrZXQgbG9zcyBhc2lkZSksIHNvIHJlY2VpdmVycyBjYW4KKwkgIGFjdHVhbGx5IHBpY2sgdXAgZGVjb2RpbmcgaW1tZWRpYXRlbHkgZnJvbSB0aGUgZmlyc3Qga2V5ZnJhbWUgaWYKKwkgIFZQUy9TUFMvUFBTIGlzIG5vdCBzaWduYWxlZCBvdXQgb2YgYmFuZC4KKwkgIFRoaXMgY29tbWl0IGFkZHMgdGhlIHBvc3NpYmlsaXR5IHRvIHNlbmQgVlBTL1NQUy9QUFMgd2l0aCBldmVyeSBrZXkgZnJhbWUuCisJICBUaGlzIG1vZGUgY2FuIGJlIGVuYWJsZWQgYnkgc2V0dGluZyAiY29uZmlnLWludGVydmFsIiBwcm9wZXJ0eSB0byAtMS4gSW4KKwkgIHRoaXMgY2FzZSB0aGUgcGF5bG9hZGVyIHdpbGwgYWRkIFZQUywgU1BTIGFuZCBQUFMgYmVmb3JlIGV2ZXJ5IGtleSAoSURSKQorCSAgZnJhbWUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODkyCisKKzIwMTYtMDEtMTUgMTU6MTk6NDEgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC9ydHAvZ3N0cnRwaDI2NXBheS5jOgorCSogZ3N0L3J0cC9nc3RydHBoMjY1cGF5Lmg6CisJICBydHBoMjY1cGF5OiBjaGFuZ2UgY29uZmlnLWludGVydmFsIHByb3BlcnR5IHR5cGUgZnJvbSB1aW50IHRvIGludAorCSAgVGhpcyB3YXkgd2UgY2FuIHVzZSAtMSBhcyBzcGVjaWFsIHZhbHVlLCB3aGljaCBpcyBuaWNlciB0aGFuIE1BWFVJTlQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODkyCisKKzIwMTYtMDEtMTMgMDk6NTE6MjAgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJKiBleHQvaGxzL2dzdGhsc2RlbXV4LmM6CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmM6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4Lmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmg6CisJICBhZGFwdGl2ZWRlbXV4OiByZXBsYWNlIGdob3N0cGFkIHdpdGggYSBzdGFuZGFyZCBwYWQKKwkgIEhhbmRsaW5nIHRoZSBnaG9zdHBhZCBhbmQgaXRzIGludGVybmFsIHBhZCB3YXMgY2F1c2luZyBtb3JlIGlzc3VlcworCSAgdGhhbiBoZWxwaW5nIGJlY2F1c2Ugb2YgdGhlaXIgY291cGxlZCBhY3RpdmF0aW9uL2RlYWN0aXZhdGlvbgorCSAgYWN0aW9ucy4KKwkgIEFzIHdlIGhhdmUgdG8gaW5zdGFsbCBjdXN0b20gY2hhaW4sZXZlbnQgYW5kIHF1ZXJ5IGZ1bmN0aW9ucyBpdCBpcworCSAgYmV0dGVyIHRvIHVzZSBhIGZsb2F0aW5nIHNpbmsgcGFkIGludGVybmFsbHkgaW4gdGhlIGRlbXV4ZXIgYW5kIGp1c3QKKwkgIHVzZSB0aG9zZSBwYWQgZnVuY3Rpb25zIHRvIHB1c2ggdGhyb3VnaCBhIHN0YW5kYXJkIHBhZCBpbiB0aGUgZGVtdXhlcgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzk1MQorCisyMDE1LTExLTExIDE3OjI0OjMzICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogZG8gbm90IGZsdXNoIHRoZSBpbnB1dCBwYWQKKwkgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fY2xlYXJfZW9zX2FuZF9mbHVzaF9zdGF0ZSgpIGZ1bmN0aW9uIHdpbGwgZG8KKwkgIGFsbCB0aGUgbmVjZXNzYXJ5IGNsZWFuaW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzk1MQorCisyMDE2LTAxLTE1IDExOjQ0OjUyICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBnc3Qvc2VnbWVudGNsaXAvZ3N0dmlkZW9zZWdtZW50Y2xpcC5jOgorCSAgdmlkZW9zZWdtZW50Y2xpcDogZmFpbCB0byBzZXRfY2FwcyBpZiBwcm9ibGVtIGluIGNhcHMgc3RydWN0dXJlCisJICBnc3RfdmlkZW9fc2VnbWVudF9jbGlwX3NldF9jYXBzICgpIHNob3VsZCByZXR1cm4gRkFMU0UgaWYgdGhlcmUgd2FzIGEKKwkgIHByb2JsZW0gcmVhZGluZyB0aGUgZnJhbWVyYXRlIHZhbHVlcyBmcm9tIHRoZSBjYXBzIHN0cnVjdHVyZS4KKworMjAxNi0wMS0xNSAxNzowMDo1NSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xxdWVyeS5jOgorCSAgZ2xxdWVyeTogcHJvdmlkZSBjb21wYXQgZGVmaW5pdGlvbiBmb3IgR0xfUVVFUllfUkVTVUxUCisJICBlLmcuIGFuZHJvaWQgZG9lc24ndCBoYXZlIGl0CisJICBXaGlsZSB3ZSdyZSBoZXJlIG1vdmUgYSBzdGF0ZSBzcGVjaWZpYyBhc3NlcnRpb24gYWZ0ZXIgdGhlIHN1cHBvcnRlZCBjaGVjay4KKwkgIFJlbW92ZXMgYW4gYXNzZXJ0aW9uIG9uIEdMRVMKKworMjAxNi0wMS0xNSAxNjowNzoyNyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2dzdGdsX2NvbXBhdC5oOgorCSAgZ2w6IGFkZCBjb21wYXRpYmlsaXR5IGRlZmluaXRpb24gb2YgR0xpbnQ2NAorCSAgZS5nLiBhbnJkb2lkIGRvZXNuJ3QgaGF2ZSBpdAorCisyMDE2LTAxLTA4IDIyOjE5OjA2ICswMzAwICBTZXJnZXkgQm9yb3Zrb3YgPHNlcmdlLmJvcm92a292QGdtYWlsLmNvbT4KKworCSogZXh0L3F0L3F0aXRlbS5jYzoKKwkgIHFtbDogTWFyayBtYXRlcmlhbCBkaXJ0eSB3aGVuIHRleHR1cmUgYnVmZmVyIGlzIHVwZGF0ZWQKKwkgIFF0IG1pZ2h0IG5vdCByZWRyYXcgdGhlIHNjZW5lIG90aGVyd2lzZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgyODYKKworMjAxNi0wMS0xNSAxNDowMDo1NiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJICBnbHBvb2w6IGZpeCBjYXBzIHJlZmNvdW50IGlzc3VlCisJICBUaGUgY2FwcyBhcmUgZnJvbSBhbiBhbGxvY2F0aW9uIHF1ZXJ5IHdoaWNoIGFyZSB0cmFuc2ZlciBub25lIGJ1dCB3ZXJlIGJlaW5nCisJICB0cmVhdGVkIGFzIHRyYW5zZmVyIGZ1bGwuCisKKzIwMTYtMDEtMTEgMTM6MzA6MDUgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmM6CisJICBnbG1lbW9yeTogbG9nIHRoZSB0aW1lIGZvciBnbFRleFN1YkltYWdlL2dsUmVhZFBpeGVscworCisyMDE2LTAxLTA4IDE4OjM2OjU0ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9nbC9nbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvYWxsX2Z1bmN0aW9ucy5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9xdWVyeS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdscXVlcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHF1ZXJ5Lmg6CisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2NoZWNrL2xpYnMvLmdpdGlnbm9yZToKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xxdWVyeS5jOgorCSAgZ2w6IGFkZCBhIGdzdGdscXVlcnkgb2JqZWN0IGZvciBhcmJpdHJhcnkgR0wgcXVlcmllcworCSAgQ3VycmVudGx5IG9ubHkgR0xfVElNRV9FTEFQU0VEIGFuZCBHTF9USU1FU1RBTVAgYXJlIHN1cHBvcnRlZAorCisyMDE2LTAxLTExIDE3OjIyOjI2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkZWJ1Zy5oOgorCSAgZ2xkZWJ1ZzogaW1wbGVtZW50IGEgZGVsYXllZCBkZWJ1ZyBzeXN0ZW0KKwkgIFRoZSBtZXNzYWdlcyBhcmUgc3RvcmVkIGJ5IGdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnKCkgYW5kIG91dHB1dCBsYXRlcgorCSAgYnkgYSBjb3JyZXNwb25kaW5nIHN0b3JlKCksIG91dHB1dCgpIG9yIGFuIHVuc2V0KCkvZnJlZSgpLgorCSAgU29tZSB3cmFwcGVyIG1hY3JvcyBhcmUgcHJvdmlkZWQgdG8gYXZvaWQgY2FsbGVycyBleHBsaWNpdGx5IHVzaW5nIF9fRklMRV9fLAorCSAgR1NUX0ZVTkNUSU9OIGFuZCBfX0xJTkVfXworCisyMDE2LTAxLTExIDE3OjI2OjA4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmM6CisJICBnbGRlYnVnOiB1c2UgZ3N0X2luZm9fdmFzcHJpbnRmIGluIGluc2VydF9kZWJ1Z19tYXJrZXIoKQorCSAgQWxsb3dzIGV4cGFuc2lvbiBvZiBHU1RfUFRSX0ZPUk1BVCBhbmQgR1NUX1NFR01FTlRfRk9STUFUIGFyZ3VtZW50cy4KKworMjAxNi0wMS0xNSAxMToyMjo0MCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvTWFrZWZpbGUuYW06CisJKiBleHQvZ2wvZ3N0Z2x2aWRlb2ZsaXAuYzoKKwkqIGV4dC9nbC9nc3RnbHZpZGVvZmxpcC5oOgorCSogZXh0L2dsL2dzdG9wZW5nbC5jOgorCSAgZ2w6IGFkZCBhIHZpZGVvZmxpcCBlbGVtZW50CisJICBCZWhhdmVzIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIG5vbi1HTCB2aWRlb2ZsaXAgZWxlbWVudAorCisyMDE2LTAxLTE1IDAwOjA0OjIwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5jOgorCSAgZ2xmaWx0ZXI6IHJlY3JlYXRlIHRoZSBmYm8gb24gY2FwcyBjaGFuZ2VzCisJICBUaGUgd2lkdGgvaGVpZ2h0IG1heSBjaGFuZ2Ugd2hpY2ggcmVxdWlyZXMgcmVjcmVhdGluZyB0aGUgZGVwdGggYnVmZmVyLgorCisyMDE2LTAxLTE1IDAwOjAyOjQzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuaDoKKwkgIGdsYmFzZWZpbHRlcjogYWRkIGEgY2xhc3MgZnVuY3Rpb24gb24gc2V0X2NhcHMgKGZyb20gR0wpCisJICBUaGlzIGlzIHNpbXBseSBhIGNvbnZlbmllbmNlIHRvIGF2b2lkIGR1cGxpY2F0aW5nIHRoZSB0aHJlYWQgbWFyc2hhbGxpbmcgb24KKwkgIHNldF9jYXBzLgorCisyMDE2LTAxLTE1IDAwOjAwOjI5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbHRyYW5zZm9ybWF0aW9uLmM6CisJICBnbHRyYW5zZm9ybWF0aW9uOiBhbHdheXMgYnVpbGQgYSB2YWxpZCBtdnAgbWF0cml4CisJICBUaGUgZGVmYXVsdCBjYXNlIGlzIHRvIGJ1aWxkIGFuIGlkZW50aXR5IG1hdHJpeC4KKworMjAxNi0wMS0xNCAxOTowMzowNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5jOgorCSAgZ2x0cmFuc2Zvcm1hdGlvbjogc3VwcG9ydCBuZWdhdGl2ZSBzY2FsZXMKKwkgIEEgc2NhbGUgb2YgLTEuMCBtZWFucyB0byBmbGlwIHRoZSB2aWRlby4KKworMjAxNi0wMS0xNCAxODo0MjowNSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5jOgorCSAgZ2x0cmFuc2Zvcm1hdGlvbjogaW1wbGVtZW50IHBhc3N0aHJvdWdoIGhhbmRsaW5nCisKKzIwMTYtMDEtMTQgMTc6NDU6MDMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uYzoKKwkqIGV4dC9nbC9nc3RnbHRyYW5zZm9ybWF0aW9uLmg6CisJICBnbHRyYW5zZm9ybWF0aW9uOiBpbXBsZW1lbnQgbmF2aWdhdGlvbiBldmVudHMKKwkgIFJldmVyc2VzIHRoZSB0cmFuc2Zvcm1hdGlvbiBhcHBsaWVkIHRocm91Z2ggdGhlIHByb3BlcnRpZXMgYW5kIGZvcndhcmRzIHRoZQorCSAgZXZlbnQuCisJICBUaGUgcHJvY2VzcyBmb3IgZmluZGluZyB0aGUgY29vcmRpbmF0ZXMgb24gdGhlIHZpZGVvIGFyZSBhcyBmb2xsb3dzOgorCSAgMS4gQ29udmVydCB0aGUgZ2l2ZW4gcG9pbnRlcl94IGFuZCBwb2ludGVyX3kgdG8gbW9kZWwgc3BhY2UgYXQgdGhlIG5lYXIgYW5kIGZhciBwbGFuZXMKKwkgIDIuIEdldCB0aGUgZXF1YXRpb24gb2YgdGhlIHZpZGVvIHBsYW5lCisJICAzLiBGaW5kIHdoZXJlIHRoZSByYXkgaW4gMSBpbnRlcnNlY3RzIHRoZSBwbGFuZQorCSAgNC4gUHJvZml0IQorCisyMDE2LTAxLTE0IDE2OjU5OjEyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSAgZ2xpbWFnZXNpbms6IHJlbW92ZSByZWR1bnRhbnQgZ2xpbWFnZXNpbmsgZnJvbSBkZWJ1ZyBsb2dnaW5nCisKKzIwMTYtMDEtMTQgMTY6NTc6NDAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbHdpbmRvd194MTEuYzoKKwkgIGdsL3gxMS9uYXZpZ2F0aW9uOiBhZGQgYnV0dG9uIHByZXNzIHRvIHRoZSBzZWxlY3RlZCBldmVudCBtYXNrCisJICBPdGhlcndpc2Ugd2Ugd29uJ3QgZ2V0IHRoZSBidXR0b24gcHJlc3MgZXZlbnRzIGFuZCBHc3ROYXZpZ2F0aW9uIGZhaWxzLgorCisyMDE2LTAxLTE0IDE2OjAwOjAwICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogdHJ5IGhhcmRlciB0byBwYXNzdGhyb3VnaAorCSAgVGhpcyBtYWtlcyBhIHBpcGVsaW5lIGxpa2U6CisJICAuLi4gISB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLGZvcm1hdD1VWVZZICEgZ2xjb2xvcmNvbnZlcnQgIQorCSAgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSxmb3JtYXQ9e1VZVlksIE5WMTJ9ICEgLi4uCisJICBwYXNzdGhyb3VnaCBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgVVlWWSA9PiBOVjEyLiBUaGUgY29udmVyc2lvbiB3b3VsZCBoYXBwZW4KKwkgIGJlZm9yZSB0aGlzIGNoYW5nZSBzaW5jZSB0aGUgZWxlbWVudCAoYW5kIGJhc2V0cmFuc2Zvcm0pIHRyYW5zZm9ybSB0aGUgc3JjIGNhcHMKKwkgIHRvIGZvcm1hdD17TlYxMiwgVVlWWX0gKHNpbmNlIE5WMTIgY29tZXMgZmlyc3QgaW4gdGhlIGdsY29sb3Jjb252ZXJ0OnNyYworCSAgdGVtcGxhdGUpIGFuZCB0aGVuIHRoZSBkZWZhdWx0IGNhcHMgZml4YXRlIGZ1bmMgd291bGQgZml4YXRlIHRvIE5WMTIuIEJsYWguCisJICBBbHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBpbnRlcnNlY3QgYWdhaW5zdCB0aGUgdGVtcGxhdGUgY2FwcyBpbiA6OnRyYW5zZm9ybV9jYXBzCisJICBzaW5jZSBiYXNldHJhbnNmb3JtIGRvZXMgdGhhdCByaWdodCBhZnRlciBjYWxsaW5nIHRoZSB2ZnVuYy4KKworMjAxNi0wMS0xMiAxODozMToyOSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvTWFrZWZpbGUuYW06CisJKiBleHQvZ2wvZ3N0Z2xjb2xvcmJhbGFuY2UuYzoKKwkqIGV4dC9nbC9nc3RnbGNvbG9yYmFsYW5jZS5oOgorCSogZXh0L2dsL2dzdG9wZW5nbC5jOgorCSAgZ2w6IGltcGxlbWVudCBhIGNvbG9yYmFsYW5jZSBlbGVtZW50CisJICBJdCBwZXJmb3JtcyB0aGUgZXhhY3Qgc2FtZSBvcGVyYXRpb24gYXMgdmlkZW9iYWxhbmNlIGJ1dCB3aXRoIG9wZW5nbCBzaGFkZXJzIGFuZAorCSAgd2FzIHRlc3RlZCB3aXRoIGdsdmlkZW9taXhlciBieSBjb21wYXJpbmcgZnJhbWVzIGZyb20gdmlkZW9iYWxhbmNlIGFuZAorCSAgZ2xjb2xvcmJhbGFuY2UuCisKKzIwMTYtMDEtMTIgMTg6MjE6NTAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsdmlkZW9taXhlci5jOgorCSogZXh0L2dsL2dzdGdsdmlkZW9taXhlci5oOgorCSAgZ2x2aWRlb21peGVyOiBpbXBsZW1lbnQgZ2xCbGVuZEZ1bmMgYW5kIGdsQmxlbmRFcXVhdGlvbgorCSAgQWxsb3dzIG1vcmUgYmxlbmRpbmcgb3B0aW9ucyB0aGFuIGp1c3QgQSBvdmVyIEIKKwkgIGUuZy4gZnJhbWUgY29tcGFyaXNvbnMgYXJlIG5vdyBwb3NzaWJsZS4KKwkgIGdsdmlkZW9taXhlciBuYW1lPW0KKwkgIHNpbmtfMDo6em9yZGVyPTAKKwkgIHNpbmtfMTo6em9yZGVyPTEKKwkgIHNpbmtfMTo6YmxlbmQtZXF1YXRpb24tcmdiPXtzdWJ0cmFjdCxyZXZlcnNlLXN1YnRyYWN0fQorCSAgc2lua18xOjpibGVuZC1mdW5jdGlvbi1zcmMtcmdiPXNyYy1jb2xvcgorCSAgc2lua18xOjpibGVuZC1mdW5jdGlvbi1kc3QtcmdiPWRzdC1jb2xvcgorCSAgISBnbGltYWdlc2lua2VsZW1lbnQKKwkgIHZpZGVvdGVzdHNyYyBwYXR0ZXJuPWNoZWNrZXJzLTQgISBtLnNpbmtfMAorCSAgdmlkZW90ZXN0c3JjIHBhdHRlcm49Y2hlY2tlcnMtOCAhIG0uc2lua18xCisKKzIwMTYtMDEtMDggMTg6Mzg6NDYgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuYzoKKwkgIGdsZGVidWc6IGFkZCBhIHNwZWNpZmljIGNhdGVnb3J5IGZvciB0aGUgZGVidWcgc3BhbSBmcm9tIHRoZSBkcml2ZXIKKwogMjAxNi0wMS0xMiAxNDo1NDoyMyArMDAwMCAgVGltIFNoZXJpZGFuIDx0aW0uc2hlcmlkYW5AaW1ndGVjLmNvbT4KIAogCSogZXh0L3NiYy9nc3RzYmNkZWMuYzoKQEAgLTI0LDEyICs0MTkwLDYzIEBACiAJICBjYWxjdWxhdGVkIGZyYW1lIGxlbmd0aHMuCiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQyNDQ2CiAKLTIwMTYtMDEtMDggMjI6MTk6MDYgKzAzMDAgIFNlcmdleSBCb3JvdmtvdiA8c2VyZ2UuYm9yb3Zrb3ZAZ21haWwuY29tPgorMjAxNi0wMS0xMiAyMzozNDozMSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgogCi0JKiBleHQvcXQvcXRpdGVtLmNjOgotCSAgcW1sOiBNYXJrIG1hdGVyaWFsIGRpcnR5IHdoZW4gdGV4dHVyZSBidWZmZXIgaXMgdXBkYXRlZAotCSAgUXQgbWlnaHQgbm90IHJlZHJhdyB0aGUgc2NlbmUgb3RoZXJ3aXNlLgotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODI4NgorCSogc3lzL252ZW5jL2dzdG52YmFzZWVuYy5jOgorCSAgbnZlbmM6IHVwZGF0ZSBmb3IgcmVjZW50IEdMIGFwaSBjaGFuZ2VzCisJICBTcGVjaWZpY2FsbHkgdGhlIEdzdEdMTWVtb3J5UEJPIGFkZGl0aW9uICh3aGljaCB3YXMgdGhlIHVuYWRvcm5lZCBHc3RHTE1lbW9yeSkuCisKKzIwMTYtMDEtMTIgMTQ6MzY6MDIgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tOgorCSAgYXBwbGVtZWRpYTogYXZmdmlkZW9zcmM6IG9wdGlvbmFsbHkgZ2V0IHRoZSBHTCBjb250ZXh0IGZyb20gZ3N0X2VsZW1lbnRfc2V0X2NvbnRleHQKKwkgIEFsbG93IHNldHRpbmcgdGhlIEdMIGNvbnRleHQgd2l0aCBnc3RfZWxlbWVudF9zZXRfY29udGV4dC4gV2hlbiBhdmFpbGFibGUsIHRoZQorCSAgbG9jYWwgY29udGV4dCBvYnRhaW5lZCB2aWEgdGhlIGNvbnRleHQgcXVlcnkgc3RpbGwgaGFzIHRoZSBwcmVjZWRlbmNlLgorCisyMDE2LTAxLTEyIDE0OjAyOjQ2ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvaW9zdXJmYWNlbWVtb3J5LmM6CisJICBhcHBsZW1lZGlhOiBpb3N1cmZhY2VtZW1vcnk6IHJlbW92ZSBOT19TSEFSRSBmbGFnCisJICBUaGUgZnVsbCBtZW1vcnkgY2FuIGJlIHNhZmVseSBzaGFyZWQuIFNoYXJpbmcgYSBzdWIgcmVnaW9uIGNhbid0IGJlIGRvbmUgYW5kCisJICB3aWxsIGZhaWwgaW4gdGhlIGJhc2UgYWxsb2NhdG9yLCB0cmlnZ2VyaW5nIGEgY29weS4KKworMjAxNi0wMS0xMSAxMzozMzo0NiAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBnc3QvZnJlaTByL2dzdGZyZWkwcm1peGVyLmM6CisJICBmcmVpMHJtaXhlcjogcmVwbGFjZSBhY2NlcHQtY2FwcyB3aXRoIGNhcHMgcXVlcnkKKwkgIEl0IHdhbnRzIHRvIGNoZWNrIGlmIHVwc3RyZWFtIGNhbiBwcm9kdWNlIGEgY2VydGFpbiBmb3JtYXQsCisJICBhY2NlcHQtY2FwcyBtaWdodCBvbmx5IGNoZWNrIGlmIHRoZSBuZXh0IGVsZW1lbnQgY2FuIHByb2R1Y2UgaXQuCisKKzIwMTYtMDEtMDcgMjA6NTY6NTQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmM6CisJICBnbGJhc2VtZW1vcnk6IEZyZWUgdGhlIGFjdHVhbCBtZW1vcnkgb2JqZWN0IHdoZW4gcmVxdWVzdGVkCisJICBPdGhlcndpc2Ugd2UgYXJlIGxlYWtpbmcgfjQwMEIgb24gZWFjaCBHc3RNZW1vcnkgYWxsb2NhdGlvbi4KKwkgIEZyZWVpbmcgaW4gdGhlIGJhc2UgY2xhc3MgbWF0Y2hlcyB0aGUgR09iamVjdCBzZW1hbnRpY3MuCisKKzIwMTYtMDEtMDcgMjA6NTQ6NDEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmM6CisJICBnbG1lbW9yeXBibzogZG9uJ3QgZG91YmxlIHJlYWQgcGl4ZWxzCisJICBUaGUgb3B0aW1pc3RpYyBkb3dubG9hZF90cmFuc2ZlciB3YXMgbm90IHNldHRpbmcgdGhlIHJlcXVpcmVkIGZsYWcgdG8gbm90CisJICBwZXJmb3JtIGdsUmVhZFBpeGVscyBvbiBzdWJzZXF1ZW50IG1hcCAoUkVBRCkuIHJlc3VsdGluZyBpbiBnbFJlYWRQaXhlbHMKKwkgIGhhcHBlbmluZyB0d2ljZS4KKworMjAxNi0wMS0wNyAxODo0NzozNyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmM6CisJICBnbG1lbW9yeTogZXhwb3NlIGdzdF9nbF9tZW1vcnlfdGV4c3ViaW1hZ2UKKwkgIFJlbW92ZXMgZXh0cmVtZWx5IHNpbWlsYXIgY29kZSBmcm9tIGdsbWVtb3J5cGJvLgorCisyMDE2LTAxLTA3IDE4OjA1OjIzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZlYXR1cmUuYzoKKwkgIGdsZmVhdHVyZSBhZGQgYSBzcGVjaWZpYyBkZWJ1ZyBjYXRlZ29yeQorCSAgU2F2ZXMgaGF2aW5nIHRvIHRyYXdsIHRocm91Z2ggdGhlICdkZWZhdWx0JyBjYXRlZ29yeSB3aGVuIGZ1bmN0aW9uIHJldHJpZXZhbAorCSAgZ29lcyB3cm9uZy4KIAogMjAxNi0wMS0wNSAxNDozNToxMSAtMDUwMCAgQm9iIEhvbGNvbWIgPGJob2xjb21iQG1hay5jb20+CiAKQEAgLTQwLDYgKzQyNTcsNjEgQEAKIAkgIG9uIHNvbWUgc3lzdGVtcy4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxMjcKIAorMjAxNi0wMS0wOCAxNzoxMTowOSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5oOgorCSAgb3BlbmN2OiByZW1vdmUgY2hlY2sgZm9yIE9wZW5DViB2ZXJzaW9uCisJICBBZnRlciBjb21taXQgNjQwODBlNjMyLCBjb25maWd1cmUgY2hlY2tzIGZvciBhbGwgdGhlIGhlYWRlciBmaWxlcyB0aGF0CisJICBzaG91bGQgYmUgYXZhaWxhYmxlIGluIE9wZW5DViAyLjMgYW5kIGxhdGVyLiBJZiBhbnkgb2YgdGhlc2UgZmlsZXMgaXNuJ3QKKwkgIHRoZXJlIHRoZSBPcGVuQ1YgZWxlbWVudHMgd29uJ3QgYmUgcGFydCBvZiB0aGUgYnVpbGQuCisJICBObyBuZWVkIHRvIHJlY2hlY2sgZm9yIG9wZW5jdjIvbGVnYWN5L2xlZ2FjeS5ocHAgYWdhaW4gaW4KKwkgIGdzdHB5cmFtaWRzZWdtZW50LmguIE1pbmltdW0gc3VwcG9ydGVkIE9wZW5DViB2ZXJzaW9uIG11c3QgaGF2ZSB0aGlzIGhlYWRlcgorCSAgYW5kIGNvbmZpZ3VyZSBhbHJlYWR5IGNoZWNrcyBmb3IgaXQuIFJlbW92aW5nIGNoZWNrLgorCisyMDE2LTAxLTA4IDE1OjAxOjQ3ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcDoKKwkgIG9wZW5jdjogYWx3YXlzIGRvIGN2c21vb3RoIGluIHBsYWNlCisJICBBZnRlciB0aGUgdXBkYXRlIHRvIG5ldyBPcGVuQ1YgQVBJIHRoZSB0cmFuc2Zvcm0gZnVuY3Rpb24gdXNpbmcgYW4gb3V0CisJICBidWZmZXIgaXMgbm90IG5lY2Vzc2FyeS4gV2UgY2FuIGFsd2F5cyBkbyB0aGUgdHJhbnNmb3JtYXRpb24gaW4gcGxhY2UuCisKKzIwMTYtMDEtMDggMTI6Mzk6MjkgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0cHlyYW1pZHNlZ21lbnQuY3BwOgorCSogZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5oOgorCSAgb3BlbmN2OiBkbyBweXJhbWlkc2VnbWVudCdzIHRyYW5zZm9ybWF0aW9uIGluIHBsYWNlCisJICBSdW4gdGhlIHRyYW5zZm9ybSBmdW5jdGlvbiBvZiBweXJhbWlkc2VnbWVudCBpbiBwbGFjZSwgcmV1c2luZyB0aGUgaW1hZ2UKKwkgIGRhdGEgYXMgYm90aCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGluIGN2UHlyU2VnbWVudGF0aW9uLiBUaGlzIGF2b2lkcworCSAgY29weWluZyB0aGUgaW1hZ2UgYmFjayBhbmQgZm9ydGggYW5kIHRoZSBleHRyYSBtZW1vcnkuCisKKzIwMTYtMDEtMDcgMTU6MjE6NDAgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9obHNfZGVtdXguYzoKKwkgIHRlc3RzOiBobHNkZW11eDogYWRkIHRlc3QgZm9yIHVwZGF0aW5nIHNlZ21lbnQgc3RvcAorCSAgQWRkIGEgdGVzdCBmb3Igc2Vla2luZyB0aGF0IG9ubHkgdXBkYXRlcyBzdG9wIHBvc2l0aW9uIGFuZCB2ZXJpZmllcworCSAgdGhhdCBzdGFydCBpcyB1bm1vZGlmaWVkCisKKzIwMTYtMDEtMDcgMTU6MjE6MjIgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogZml4IHNlZWtpbmcgdGhhdCBqdXN0IHVwZGF0ZXMgc3RvcCBwb3NpdGlvbgorCSAgRml4ZWQgYWRhcHRpdmVkZW11eCBzZWVraW5nIHdpdGhvdXQgZmx1c2hpbmcgdGhhdCBqdXN0IHdhbnRzCisJICB0byB1cGRhdGUgc3RvcCBwb3NpdGlvbi4gVGhpcyByZXF1aXJlZCBwcm90ZWN0aW5nIHRoZSBzZWdtZW50CisJICB2YXJpYWJsZXMgd2l0aCBhIG5ldyBtdXRleCBzbyB0aGF0IHRoZSBzZWVraW5nIHRocmVhZCBhbmQgdGhlCisJICBkb3dubG9hZCB0aHJlYWRzIGNvdWxkIHNhZmVseSBtYW5pcHVsYXRlIHRoZSBzZWdtZW50IGFuZAorCSAgZXZlbnRzIHJlbGF0ZWQgdG8gaXQuCisJICBUaGlzIGNvbnRlbnRpb24gaXMgb25seSBsb2NrZWQvdW5sb2NrZWQgd2hlbiBzdGFydGluZyBhIG5ldworCSAgZG93bmxvYWQsIHdoZW4gdGhlIGZpcnN0IGZyYWdtZW50IG9mIGEgc2VnbWVudCBpcyByZWNlaXZlZCBhbmQKKwkgIHdoZW4gc2Vla2luZyBzbywgaG9wZWZ1bGx5LCBpdCB3b24ndCBkYW1hZ2UgcGVyZm9ybWFuY2UuCisKKzIwMTYtMDEtMDYgMTY6NTE6MDggLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogZml4IHNlZ21lbnQgdXBkYXRlIG9uIHNlZWtzCisJICBGaXhlcyB0eXBvIG9uIHJldmVyc2UgcmF0ZSBjaGVjayBhbmQgYWxzbyBvbmx5IHVwZGF0ZSB0aGUKKwkgIHBvc2l0aW9uIHdoZW4gdGhlIHN0YXJ0L3N0b3Agd2FzIGFjdHVhbGx5IGNoYW5nZWQuCisKIDIwMTYtMDEtMDcgMTg6MTA6NDkgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKIAkqIGdzdC9teGYvbXhmdHlwZXMuYzoKQEAgLTUwLDI3ICs0MzIyLDQ5NCBAQAogCSAgYSBiaXQgbW9yZSBhbmQgY2F1c2VzIHdyaXRpbmcgdG8gdGhlIGd1aW50IGFzIHBvaW50ZXIgdG8gb3ZlcndyaXRlIG1hcC5tZW1vcnksCiAJICB3aGljaCB0aGVuIGxhdGVyIGNyYXNoZXMgZHVyaW5nIHVubWFwcGluZyBvZiB0aGUgbWVtb3J5LgogCisyMDE2LTAxLTA3IDE4OjAyOjMzICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214Zm1ldGFkYXRhLmM6CisJICBteGZtZXRhZGF0YTogSW5pdGlhbGl6ZSBib29sZWFuIHRvIEZBTFNFIHRvIGZpeCB2YWxncmluZCB3YXJuaW5nCisJICBTZWVtcyB0byBiZSBhIGZhbHNlIHdhcm5pbmcgdGhvdWdoLgorCisyMDE2LTAxLTA3IDE0OjA4OjM5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmM6CisJICBnbHN5bmNtZXRhOiBvbmx5IGZsdXNoIHdpdGggYSBzaGFyZWQgY29udGV4dAorCSAgVGhlIHdhaXQgY29kZSB3aWxsIGZsdXNoIGZvciB1cyBmb3Igc2luZ2xlIGNvbnRleHQgcGlwZWxpbmVzLgorCisyMDE2LTAxLTA3IDE0OjAyOjUyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuaDoKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb250ZXh0LmM6CisJICBnbGNvbnRleHQ6IGltcGxlbWVudCBjaGVja2luZyB3aGV0aGVyIGEgY29udGV4dCBoYXMgYmVlbiBzaGFyZWQKKwkgIFNvbWUgb3BlcmF0aW9ucyBhcmUgdW5uZWNlc3Nhcnkgd2hlbiBydW5uaW5nIHdpdGggb25seSBhIHNpbmdsZSBHTAorCSAgY29udGV4dC4KKwkgIGUuZy4gZ2xGbHVzaCB3aGVuIHNldHRpbmcgYSBmZW5jZSBvYmplY3QgYXMgdGhlIGZsdXNoIGhhcHBlbnMgb24gd2FpdC4KKwkgIEFQSTogZ3N0X2dsX2NvbnRleHRfaXNfc2hhcmVkCisKKzIwMTYtMDEtMDYgMTQ6NTQ6MzAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkgIGhsc2RlbXV4OiBwdXQgYm9vbGVhbiB2YWx1ZXMgaW50byBnYm9vbGVhbiB2YXJpYWJsZXMKKwkgIEFuZCByZW1vdmUgc3VwZXJmbHVvdXMgYXNzaWdubWVudHMuCisKKzIwMTYtMDEtMDYgMTY6NTQ6NDkgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmM6CisJICBwbGF5ZXI6IE9ubHkgc2V0IHRoZSBwaXBlbGluZSB0byBQTEFZSU5HIGluIHBsYXkoKSBpZiBidWZmZXJpbmc+PTEwMCUKKwkgIE90aGVyd2lzZSB0aGUgYXBwbGljYXRpb24gY2FuIGJyZWFrIHRoZSBidWZmZXJpbmcgbG9naWMgYnkgc2V0dGluZyB0aGUKKwkgIHBpcGVsaW5lIHRvIFBMQVlJTkcgYmVmb3JlIHdlIGJ1ZmZlcmVkIGVub3VnaC4KKworMjAxNi0wMS0wNSAxNzo0MToyMyAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJICB0ZXN0czogZGFzaGRlbXV4OiBhZGQgdGVzdHMgZm9yIHBvc3Qtc2VlayBzZWdtZW50IGJvdW5kYXJpZXMgY2hlY2sKKwkgIENoZWNrcyBpZiB0aGUgcG9zdCBzZWVrIHNlZ21lbnQgaXMgd2hhdCBpcyBleHBlY3RlZC4KKwkgIEFsc28gbWFrZXMgaXQgZWFzeSB0byBhZGQgbW9yZSB0ZXN0cyB3aXRoIGRpZmZlcmVudCBzZWVraW5nIGZsYWdzIHVzaW5nIHRoZQorCSAgc2FtZSBmdW5jdGlvbnMuCisKKzIwMTYtMDEtMDUgMTA6NDE6MjcgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzX2RlbXV4LmM6CisJICB0ZXN0czogaGxzZGVtdXg6IGFkZCB0ZXN0cyBmb3Igc2VlayB3aXRoIHJldmVyc2UgcmF0ZSBhbmQgc25hcCBmbGFncworCSAgQWRkIHRlc3RzIHRvIGVuc3VyZSBzbmFwIGZsYWdzIHdvcmsgYXMgZXhwZWN0ZWQgZm9yIHJldmVyc2UKKwkgIHJhdGVzCisKKzIwMTYtMDEtMDUgMTA6Mzk6MTEgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogc3RvcCByZXZlcnNlIHBsYXliYWNrIHdoZW4gd2UgcmVhY2ggdGhlIGxpbWl0CisJICBBdm9pZHMgZG93bmxvYWRpbmcgYW5kIHB1c2hpbmcgYSBmdWxsIHNlZ21lbnQganVzdCB0byBnZXQgMSBuYW5vc2Vjb25kCisJICBvZiBkYXRhLiBUaGlzIGhhcHBlbnMgZnJlcXVlbnRseSB3aGVuIHNlZWtpbmcgaXMgZG9uZSB3aXRoIGZsYWdzCisJICB0aGF0IGFkanVzdCB0byBib3VuZGFyaWVzIG9yIHdoZW4gdGhlIHN0YXJ0IGlzIGFsaWduZWQgd2l0aCBzZWdtZW50CisJICBzdGFydHMuIFRoZSBsYXRlciBpcyBjb21tb24gd2hlbiBzZWdtZW50IGR1cmF0aW9ucyBpcyBhIG11bHRpcGxlIG9mCisJICBhIHNlY29uZC4KKworMjAxNi0wMS0wNSAwOToxNjo0NSAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvaGxzL2dzdGhsc2RlbXV4LmM6CisJICBobHNkZW11eDogZml4IHJldmVyc2UgcGxheWJhY2sgc2VlayB3aXRoIHNuYXAgZmxhZ3MKKwkgIFByb3Blcmx5IGhhbmRsZSBzbmFwIGZsYWdzIGR1cmluZyByZXZlcnNlIHNlZWtpbmcuIEluIHRoaXMgY2FzZQorCSAgdGhlIGJlZm9yZS9hZnRlciBhcmUgYWxzbyByZXZlcnNlZCwgc28gaGFuZGxlIHRob3NlIGFzIHN1Y2guCisJICBGb3IgZXhhbXBsZTogd2l0aCBhIHNlcXVlbmNlIG9mIDFzIGZyYWdtZW50czoKKwkgIHwtLSAwIC0tfC0tIDEgLS18LS0gMiAtLXwtLSAzIC0tfAorCSAgSWYgeW91IHNlZWsgdG8gMS41cyBpdCBpcyBpbnNpZGUgZnJhZ21lbnQgMS4gV2l0aCByZXZlcnNlIGFuZAorCSAgc25hcC1iZWZvcmU6IHNob3VsZCBwbGF5IGZyb20gdGhlIGVuZCBvZiBmcmFnbWVudCAxCisJICBzbmFwLWFmdGVyOiBzaG91bGQgcGxheSBmcm9tIHRoZSBlbmQgb2YgZnJhZ21lbnQgMAorCisyMDE2LTAxLTA1IDA5OjAxOjEwIC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IGNvcnJlY3RseSB0cmFjayBzZWdtZW50LnBvc2l0aW9uIGluIHJldmVyc2UgcGxheWJhY2sKKwkgIEZvciByZXZlcnNlLCBzZXQgcG9zaXRpb24gdG8gc2VnbWVudC5zdG9wIHdoZW4gc3RhcnRpbmcgYW5kIGFsc28KKwkgIGRvbid0IHNldCB0aGUgcG9zaXRpb24gdG8gZnJhZ21lbnQgZW5kIHRpbWVzdGFtcCB3aGVuIGl0IGZpbmlzaGVzLAorCSAganVzdCBsZWF2ZSBpdCBhdCB0aGUgZnJhZ21lbnQgc3RhcnQuCisKKzIwMTYtMDEtMDUgMDg6NTk6MjYgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IHNpbXBsaWZ5IHNuYXAgZmxhZ3MgY2hlY2tpbmcKKwkgIFJlcGxhY2U6CisJICBpZiAoYm9vbGVhbikgdmFyID0gdHJ1ZTsKKwkgIHdpdGg6CisJICB2YXIgPSAoYm9vbGVhbik7CisKKzIwMTUtMTItMjggMDI6MTg6MDYgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IHJlc3BlY3Qga2V5dW5pdCBmbGFnIGZvciBwb3NpdGlvbgorCSAgU2V0IHRoZSBzZWdtZW50IHN0YXJ0IHBvc2l0aW9uIHdoZW4ga2V5dW5pdCBmbGFnIGlzIGFjdGl2ZQorCisyMDE1LTEyLTI0IDE4OjQ5OjM5IC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzX2RlbXV4LmM6CisJICB0ZXN0czogaGxzX2RlbXV4OiBhZGQgdGVzdHMgZm9yIHNlZWtpbmcgc2VnbWVudAorCSAgVGVzdHMgdGhhdCBjaGVjayB0aGF0IHRoZSBzZWdtZW50IHNlbnQgYWZ0ZXIgYSBzZWVrIGlzIGNvcnJlY3QuCisJICBBbGxvd3MgdGVzdGluZyB0aGF0IG11bHRpcGxlIHNlZWtpbmcgZmxhZ3Mgd29yayBhcyBleHBlY3RlZAorCisyMDE1LTEyLTI0IDA5OjI3OjMzIC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5oOgorCSAgdGVzdHM6IGFkYXB0aXZlX2RlbXV4OiBhZGQgZnVuY3Rpb24gdG8gYmUgYWJsZSB0byBjaGVjayBkZW11eGVyIGV2ZW50cworCSAgQWxsb3dzIHdyaXRpbmcgdGVzdHMgdGhhdCB2ZXJpZnkgdGhhdCBldmVudHMgYXJlIGNvcnJlY3QuCisJICBVc2VmdWwgdG8gbW9uaXRvciBhbmQgY2hlY2sgc2VnbWVudHMgYWZ0ZXIgc2Vla3MsIGZvciBleGFtcGxlLgorCisyMDE1LTEyLTIzIDE1OjI1OjI5IC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9obHNfZGVtdXguYzoKKwkgIHRlc3RzOiBhZGFwdGl2ZTogdXBkYXRlIHRvIGFsbG93IG1vcmUgZmxleGlibGUgc2Vla2luZyB0ZXN0cworCSAgQWxsb3dzIGRlZmluaW5nIGEgc2VlayBldmVudCB0byBiZSBhYmxlIHRvIGNoYW5nZSBzZWVraW5nIHBhcmFtZXRlcnMKKwkgIGFuZCBjcmVhdGUgbW9yZSBzZWVraW5nIHRlc3Qgc2NlbmFyaW9zCisKKzIwMTUtMTItMjMgMTU6MjM6MjcgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJICB0ZXN0czogaGxzZGVtdXg6IGZpeCBtYWtlZmlsZSB2YXJpYWJsZSB0eXBvCisKKzIwMTYtMDEtMDYgMTY6NTA6MDAgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tOgorCSAgYXBwbGVtZWRpYTogYXZmdmlkZW9zcmM6IGVuYWJsZSByZW5lZ290aWF0aW9uCisJICBXZSBjYW4gYWN0dWFsbHkgcmVuZWdvdGlhdGUgbm93LCBzbyByZW1vdmUgb2xkIGNoZWNrIHdoaWNoIGRpc2FibGVkIGl0LgorCisyMDE2LTAxLTA2IDE2OjI1OjM4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGNvbG9yY29udmVydGVsZW1lbnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0Lmg6CisJICBnbGNvbG9yY29udmVydDogaW1wbGVtZW50IHVzYWdlIG9mIGEgYnVmZmVyIHBvb2wKKwkgIFNhdmVzIHVubmVjZXNzYXJ5IGdsR2VuVGV4dHVyZXMgYW5kIGdsRGVsZXRlVGV4dHVyZXMgd2hpY2ggbWF5IGhhdmUgYQorCSAgbm9uLXRyaXZpYWwgY29zdC4KKworMjAxNi0wMS0wNiAxNTo1MDowNyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5LmM6CisJICBnbGJhc2VtZW1vcnk6IGZpeCBjb3B5aW5nIEdzdEdMQWxsb2NhdGlvblBhcmFtcworCSAgRml4ZXMgYSBHU1RfSVNfR0xfQ09OVEVYVCBjcml0aWNhbAorCisyMDE2LTAxLTA2IDE1OjQ0OjUyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jOgorCSAgZ2xtZW1vcnlwYm86IHJlbW92ZSB1bnVzZWQgY29kZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTY3OQorCisyMDE2LTAxLTA2IDEzOjIwOjE3ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvYXZmdmlkZW9zcmMubToKKwkgIGFwcGxlbWVkaWE6IGF2ZnZpZGVvc3JjOiBzbWFsbCBuZWdvdGlhdGlvbiBmaXgKKwkgIEZpeCBuZWdvdGlhdGlvbiB3aGVuIEdMTWVtb3J5IGlzIHJlcXVlc3RlZCBidXQgYSBjb250ZXh0IGlzIG5vdCBhdmFpbGFibGUKKworMjAxNi0wMS0wNiAxMTo0MDozOCArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZW5jLmM6CisJICBhcHBsZW1lZGlhOiB2dGVuYzogYWNjZXB0IFVZVlkgb24gTWFjCisJICBXaGVuIGRvaW5nIEdMTWVtb3J5IGF2ZnZpZGVvc3JjIG5lZ290aWF0ZXMgVVlWWS4gVGhpcyBjaGFuZ2UgYWxsb3dzIGF2ZnZpZGVvc3JjCisJICAhIHRlZSBuYW1lPXQgISAuLi4gISBnbGltYWdlc2luayB0LiAhIC4uLiAhIGdsZG93bmxvYWQgISB2dGVuY19oMjY0ICEgLi4uCisJICB0byBkbyBHTE1lbW9yeSBhbmQgMC1jb3B5IHdpdGggdGhlIGVuY29kZXIgKHdpdGggdGhlIENWIG1ldGEpLgorCisyMDE2LTAxLTA2IDExOjI5OjE1ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvYXZmdmlkZW9zcmMubToKKwkgIGFwcGxlbWVkaWE6IGF2ZnZpZGVvc3JjOiBjaGFuZ2UgdGV4dHVyZSBmb3JtYXQgZnJvbSBCR1JBIHRvIE5WMTIgb24gaU9TCisJICBDaGFuZ2UgdGV4dHVyZSBmb3JtYXQgZnJvbSBCR1JBIHRvIE5WMTIuIFRoaXMgYWxsb3dzIGEgcGlwZWxpbmUgbGlrZSBhdmZ2aWRlb3NyYworCSAgISB0ZWUgbmFtZT10ICEgLi4uICEgZ2xpbWFnZXNpbmsgdC4gISAuLi4gISBnbGRvd25sb2FkICEgdnRlbmNfaDI2NCAhIC4uLiAgdG8KKwkgIG5lZ290aWF0ZSBHTE1lbW9yeS4gVGhpcyBtYWtlcyB0aGUgZ2xpbWFnZXNpbmsgYnJhbmNoIG11Y2ggZmFzdGVyIChvYnZpb3VzbHkpCisJICBhbmQgdHJpZ2dlcnMgdGhlIDAtY29weSBwYXRoIGJldHdlZW4gYXZmdmlkZW9zcmMgYW5kIHZ0ZW5jICh1c2luZyB0aGUgQ1YgbWV0YSkuCisJICBDb21iaW5lZCB0aGlzIHJlc3VsdHMgaW4gYSBodWdlIHBlcmYgaW1wcm92ZW1lbnQgb24gaU9TICgyNS0zMCUgb2YgQ1BVIHRpbWUgaW4gYQorCSAgcGlwZWxpbmUgbGlrZSB0aGUgb25lIGFib3ZlKS4KKwkgIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIGEgbmV3IHNoYWRlciBjb252ZXJzaW9uIGluIHRoZSBzaW5rLCBzaW5jZSBCR1JBCisJICB0ZXh0dXJlcyBoYWQgdG8gYmUgY29waWVkL2NvbnZlcnRlZCBmcm9tIGZvcm1hdD1CR1JBLHRleHR1cmUtdGFyZ2V0PVJFQ1RBTkdMRSB0bworCSAgZm9ybWF0PVJHQkEsdGV4dHVyZS10YXJnZXQ9MkQgYW55d2F5LgorCisyMDE2LTAxLTA0IDIwOjI2OjA5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuaDoKKwkgIGdsdXBsb2FkOiBhbHdheXMgYWRkIHRleHR1cmUtdGFyZ2V0IGZpZWxkIHRvIEdMIGNhcHMKKwkgIDEuIFZhcmlvdXMgZWxlbWVudHMvYmFzZSBjbGFzc2VzIG9ubHkgcGVyZm9ybSBhIHN1YnNldCBjaGVjayBvbiBhY2NlcHQtY2FwcworCSAgMi4gU29tZSBHTCBlbGVtZW50cyBoYXZlIHRleHR1cmUtdGFyZ2V0IGluIHRoZWlyIHBhZCB0ZW1wbGF0ZQorCSAgMy4gV2hlbiBjaGVja2luZyBzdWJzZXRzLCBvbmx5IHRoZSBjYXBzIHRvIGNoZWNrIGFyZSBhbGxvd2VkIHRvIGNvbnRhaW4gZXh0cmEKKwkgIGZpZWxkcy4gIElmIHRoZSAndGVtcGxhdGUnIGNhcHMgaGF2ZSBleHRyYSBmaWVsZHMsIHRoZSBzdWJzZXQgZmFpbHMuCisJICBUaHVzIHdpdGhvdXQgdGV4dHVyZS10YXJnZXQgb24gdGhlIGNhcHMsIHZhcmlvdXMgYWNjZXB0LWNhcHMgaW1wbGVtZW50YXRpb25zCisJICB3ZXJlIGZhaWxpbmcuCisJICBBbHNvLCBhZGQgc29tZSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIHNldHRpbmcgYW5kIHJldHJpZXZpbmcKKwkgIHRleHR1cmUgdGFyZ2V0cyB0by9mcm9tIEdWYWx1ZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk4NjAKKworMjAxNS0xMi0yOSAxODoxNjowNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYzoKKwkgIGdsdXBsb2FkOiBwYXNzdGhyb3VnaCBjb21wb3NpdGlvbiBjYXBzIGZlYXR1cmVzCisJICBEb24ndCB1bmNvbmRpdGlvbmFsbHkgYWRkIGl0IHRvIGFueSBhbmQgYWxsIGNhcHMgdHJhbnNmb3JtYXRpb25zLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTg2MAorCisyMDE2LTAxLTA0IDA5OjUyOjQ3ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtc2VjdGlvbnMudHh0OgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYzoKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmg6CisJKiB0ZXN0cy9jaGVjay9saWJzL3BsYXllci5jOgorCSogd2luMzIvY29tbW9uL2xpYmdzdHBsYXllci5kZWY6CisJICBwbGF5ZXI6IFJlbW92ZSBnc3RfcGxheWVyX25ldygpIGFuZCBtYWtlIGdzdF9wbGF5ZXJfbmV3X2Z1bGwoKSB0aGUgbm9ybWFsIGNvbnN0cnVjdG9yCisJICBJbiB2ZXJ5IGZldyBjYXNlcyB0aGUgc2ltcGxlIHZlcnNpb24gd2FzIGFjdHVhbGx5IG5lZWRlZCBhbmQgaGF2aW5nIHRoZQorCSAgcGFyYW1ldGVycyBoaWRkZW4gYnkgYSBfZnVsbCgpIHZlcnNpb24gY2F1c2VkIGFwcGxpY2F0aW9uIHRoYXQgYWN0dWFsbHkgbmVlZGVkCisJICBpdCB0byBub3QgdXNlIGl0LgorCisyMDE2LTAxLTA0IDAxOjAzOjA4ICsxMTAwICBKYW4gU2NobWlkdCA8amFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0Lmg6CisJICBnbHZpZXdjb252ZXJ0OiBGaXggc3RlcmVvc2NvcGljIGhhbmRsaW5nIHcvIHRleHR1cmUtdGFyZ2V0CisJICBUaGUgYWRkaXRpb24gb2YgdGV4dHVyZS10YXJnZXQgbmVnb3RpYXRpb24gYnJva2Ugc3RlcmVvc2NvcGljCisJICBoYW5kbGluZyB3aGVuIG5vdCBpbiBwYXNzdGhyb3VnaCBtb2RlLCBzbyBmaXggdGhhdC4KKworMjAxNS0xMC0wNyAxODo1Mzo0MyArMDkwMCAgSHl1bmp1biBLbyA8enpvb24ua29Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC9zZHAvZ3N0c2RwZGVtdXguYzoKKwkgIHNkcGRlbXV4OiByZXBsYWNlIGR1cGxpY2F0ZWQgY29kZXMgdG8gY2FsbCBuZXcgYmFzZSBzZHAgYXBpcworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0NTg4MAorCisyMDE1LTEyLTMwIDE4OjAwOjQ3IC0wODAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9ydG1wL1JFQURNRToKKwkgIHJ0bXA6IHJlZmVyIHRvIGJvdGggZWxlbWVudHMgaW4gdGhlIFJFQURNRQorCisyMDE1LTEyLTI5IDE0OjM1OjE0IC0wODAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9ydG1wL2dzdHJ0bXBzcmMuYzoKKwkgIHJ0bXBzcmM6IGNoZWNrIGZvciBmYWlsZWQgUlRNUCBjb250ZXh0IGFsbG9jCisJICBBdm9pZHMgYW4gdW5saWtlbHkgY3Jhc2guCisJICBBcmd1YWJseSwgaWYgYWxsb2NhdGlvbiBmYWlscyB3ZSBoYXZlIG5vIGNoYW5jZSBvZgorCSAgcmVjb3ZlcmluZyBidXQgbm9uZXRoZWxlc3MsIFJUTVBfQWxsb2MgY2FuIGZhaWwgYW5kCisJICBsaWJydG1wJ3MgUlRNUF9pbml0KCkgKGNhbGxlZCBuZXh0KSBhc3N1bWVzIGEgbm9uLU5VTEwKKwkgIHBvaW50ZXIgaXMgcGFzc2VkIHdpdGhvdXQgY2hlY2tpbmcuCisJICBBZGRpdGlvbmFsbHksIHVuaWZ5IGV4aXQgcGF0aCBvbiBlcnJvci4KKworMjAxNS0xMi0yOSAxNDoxNjo1OCAtMDgwMCAgUmV5bmFsZG8gSC4gVmVyZGVqbyBQaW5vY2hldCA8cmV5bmFsZG9Ab3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvcnRtcC9nc3RydG1wc2luay5jOgorCSAgcnRtcHNpbms6IGNoZWNrIGZvciBmYWlsZWQgUlRNUCBjb250ZXh0IGFsbG9jCisJICBBdm9pZHMgYW4gdW5saWtlbHkgY3Jhc2guCisJICBBcmd1YWJseSwgaWYgYWxsb2NhdGlvbiBmYWlscyB3ZSBoYXZlIG5vIGNoYW5jZSBvZgorCSAgcmVjb3ZlcmluZyBidXQgbm9uZXRoZWxlc3MsIFJUTVBfQWxsb2MgY2FuIGZhaWwgYW5kCisJICBsaWJydG1wJ3MgUlRNUF9pbml0KCkgKGNhbGxlZCBuZXh0KSBhc3N1bWVzIGEgbm9uLU5VTEwKKwkgIHBvaW50ZXIgaXMgcGFzc2VkIHdpdGhvdXQgY2hlY2tpbmcuCisJICBBZGRpdGlvbmFsbHksIHVuaWZ5IGV4aXQgcGF0aCBvbiBlcnJvci4KKworMjAxNS0xMi0yOSAxMTo1ODozMSAtMDgwMCAgUmV5bmFsZG8gSC4gVmVyZGVqbyBQaW5vY2hldCA8cmV5bmFsZG9Ab3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvcnRtcC9nc3RydG1wLmM6CisJICBydG1wOiBjb3JyZWN0IGxpYnJ0bXAgbG9nLWxldmVsIG1hcHBpbmdzCisJICBBZGRpdGlvbmFsbHksIG1vdmUgdG8gYSBzd2l0Y2ggaW4gX3NldF9kZWJ1Z19sZXZlbCgpCisJICB0byBtYWtlIGVhc2llciB0byBmb2xsb3cgYW5kIGNvbXBhcmUgd2l0aCB0aGUKKwkgIG1hcHBpbmdzIGluIF9sb2dfY2FsbGJhY2soKQorCisyMDE1LTEyLTMwIDEzOjE2OjQwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5jOgorCSAgY29kZWNwYXJzZXJzOiB2cDk6IG1pbm9yIGNsZWFuLXVwCisJICBSZW1vdmUgc2V0dGluZyBvZiBwYXJzZXIgdmFyaWFibGUgdG8gTlVMTCBhZnRlciBmcmVlLAorCSAgdGhhdCBtYWtlcyBubyBzZW5zZSAoYW5kIGNvdmVyaXR5IGlzIG5vIGRvdWJ0IGdvaW5nCisJICB0byBjb21wbGFpbiBhYm91dCBpdCkuCisKKzIwMTUtMTItMzAgMTM6MTI6MTMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0dnA5cGFyc2VyLmM6CisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5oOgorCSAgY29kZWNwYXJzZXJzOiB2cDk6IGZpeCBtYWNybyBuYW1lc3BhY2luZyBhbmQgcmVuYW1lIEdzdFZwOUludGVycEZpbHRlcgorCisyMDE1LTEyLTMwIDEzOjA4OjMwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3R2cDlwYXJzZXIuaDoKKwkgIGNvZGVjcGFyc2VyczogdnA5OiBmaXggZG9jIHR5cG9zIGFuZCBzcHJpbmtsZSBzb21lIFNpbmNlIG1hcmtlcnMKKworMjAxNS0xMi0zMCAxMTowMzowNCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuQVVUSE9SUzoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuTElDRU5TRToKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuUEFURU5UUzoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuYzoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuaDoKKwkgIGNvZGVjcGFyc2VyczogdnA5OiBtb3ZlIGxpY2Vuc2UgYmx1cmIgaW50byBoZWFkZXIgYW5kIHJlbW92ZSBhdXggZmlsZXMKKwkgIFRoaXMgaXMganVzdCBhIGJ1bmNoIG9mIGxvb2t1cCB0YWJsZXMuLgorCisyMDE1LTEyLTMwIDExOjU0OjI1ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB3aW4zMi9jb21tb24vbGliZ3N0Y29kZWNwYXJzZXJzLmRlZjoKKwkgIHdpbjMyOiBVcGRhdGUgbGliZ3N0Y29kZWNwYXJzZXJzLmRlZiB3aXRoIHRoZSBuZXcgc3ltYm9scworCisyMDE1LTEyLTMwIDExOjU0OjE0ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2Rib29saHVmZi5oOgorCSAgY29kZWNwYXJzZXJzOiBBZGQgYW5vdGhlciBHX0dOVUNfSU5URVJOQUwKKworMjAxNS0xMi0zMCAxMTo0MDo1OSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9kYm9vbGh1ZmYuaDoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvbmFsdXRpbHMuaDoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvcGFyc2VydXRpbHMuaDoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA4dXRpbHMuaDoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuaDoKKwkgIGNvZGVjcGFyc2VyczogU3ByZWFkIHNvbWUgR19HTlVDX0lOVEVSTkFMIGluIHZhcmlvdXMgcGxhY2VzCisKKzIwMTUtMTItMzAgMTE6Mzg6MTQgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuYzoKKwkgIHZwOXBhcnNlcjogRml4IGluZGVudGF0aW9uIHRvIG1ha2UgZ3N0LWluZGVudCBoYXBwaWVyCisKKzIwMTUtMTItMzAgMTE6MzY6NDUgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy92cDl1dGlscy5jOgorCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy92cDl1dGlscy5oOgorCSAgdnA5cGFyc2VyOiBSZW5hbWUgc3ltYm9scyB0byBwcmV2ZW50IHN5bWJvbCBjb25mbGljdHMKKwkgIEFsc28gbWFrZSBjbGFtcCgpIGEgc3RhdGljIGZ1bmN0aW9uIGZvciB0aGUgc2FtZSByZWFzb24gYW5kIHVzZSBDTEFNUCAoYXMKKwkgIGRlZmluZWQgYnkgR0xpYikgaW4gdGhlIEdTdHJlYW1lciBjb2RlLgorCisyMDE1LTEyLTMwIDExOjE5OjMzICswMjAwICBTcmVlcmVuaiBCYWxhY2hhbmRyYW4gPHNyZWVyZW5qLmJhbGFjaGFuZHJhbkBpbnRlbC5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3R2cDlwYXJzZXIuaDoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuQVVUSE9SUzoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuTElDRU5TRToKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuUEFURU5UUzoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuYzoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuaDoKKwkgIGNvZGVjcGFyc2VyczogQWRkIFZQOSBjb2RlYyBwYXJzZXIKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc1OTcKKworMjAxNS0xMi0zMCAxMjoxMjoxNyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uYzoKKwkgIGdsbWVtb3J5cGJvOiBmaXggd3JhcHBpbmcgZGF0YSBvbiBHTCAyLjEKKwkgIEdMIDIuMSBvbmx5IHN1cHBvcnRzIHBibyB1cGxvYWQuCisJICBUaGUgd3JhcHBlZCBkYXRhIHBvaW50ZXIgd2FzIG9ubHkgYmVpbmcgc2V0IG9uIHRoZSBwYm8gbWVtb3J5IGFuZCBvbiB0aGUKKwkgIGdsbWVtb3J5IHNvIHdoZW4gYSBkb3dubG9hZCB3YXMgcmVxdWVzdGVkIChpbiBHTCAyLjEpLCBnbG1lbW9yeSB3YXMKKwkgIGFsbG9jYXRpbmcgYSBuZXcgZGF0YSBwb2ludGVyIGFuZCB0aHVzIG5vdCByZXR1cm5pbmcgdGhlIHdyYXBwZWQgZGF0YS4KKworMjAxNS0xMi0zMCAxMjoxMTowOSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uYzoKKwkgIGdsbWVtb3J5cGJvOiBvbmx5IGNyZWF0ZSBhIHBibyBtZW1vcnkgaWYgdGhlIGNvbnRleHQgYWN0dWFsbHkgc3VwcG9ydHMgaXQKKwkgIGUuZy4gR0wgPD0gMi4wIGRvZXMgbm90IHN1cHBvcnQgcGJvIHVzYWdlIGFuZCBHTCAyLjEgb25seSBzdXBwb3J0cyBwYm8gdXBsb2FkLgorCisyMDE1LTEyLTMwIDEyOjA5OjI5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmM6CisJICBnbG1lbW9yeTogc21hbGwgY29kZSByZWZvcm1hdAorCSAgbWFrZXMgdGhlIGFsbG9jX3BhcmFtcyBzZWxlY3Rpb25zIGZpdCBvbiBhIHNpbmdsZSBsaW5lLgorCisyMDE1LTEyLTMwIDEyOjA2OjE3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xtZW1vcnkuYzoKKwkgIHRlc3RzL2dsbWVtb3J5OiBvdXRwdXQgZGF0YSBwb2ludGVyIHZhbHVlcyBvbiBmYWlsdXJlCisJICBBbGxvd3MgcXVpY2tlciBpbnNwZWN0aW9uIG9mIHdoYXQgZmFpbGVkLgorCisyMDE1LTEyLTI5IDE3OjA0OjU3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGVmZmVjdHMuYzoKKwkgIGdsZWZmZWN0czogZml4IHNoYWRlciBjb21waWxhdGlvbiB3aXRoIGxlZ2FjeSBvcGVuZ2wKKwkgIEFsbCB0aGUgZ2xlZmZlY3RzIHNoYWRlcnMgY2FuIGJlIHJ1biBhZ2FpbnN0IGEgZ2xlczIgb3IgYSBsZWdhY3kgb3BlbmdsIGdsc2wKKwkgIGNvbXBpbGVyIGJ1dCB3ZXJlbid0IGJlaW5nIGFkdmVydGlzZWQgYXMgc3VjaC4KKwkgIEZpeGVzIGdsZWZmZWN0cyB1bmRlciBkZXNrdG9wIG9wZW5nbCA8IDMuMi4KKworMjAxNS0xMi0yOSAxODowMTozMCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5jOgorCSAgZ2xiYXNlbWVtb3J5OiBSZW1vdmUgYm9ndXMgTlVMTCBjaGVjaworCSAgQ0lEIDEzNDY1MzQKKworMjAxNS0xMi0yOSAxMDo1NzozNiArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL2F2ZnZpZGVvc3JjLm06CisJICBhcHBsZW1lZGlhOiBhdmZ2aWRlb3NyYzogb3V0cHV0IGF0IGhpZ2hlc3QgZnBzL3Jlc29sdXRpb24gYnkgZGVmYXVsdAorCSAgRml4YXRlIHRvIHRoZSBoaWdoZXN0IHBvc3NpYmxlIHJlc29sdXRpb24gYW5kIGZwcy4gT3RoZXJ3aXNlIGJ5IGRlZmF1bHQgd2UgZW5kCisJICB1cCBmaXhhdGluZyBhdCAyZnBzIGFuZCB0aGUgbG93ZXN0IHN1cHBvcnRlZCByZXNvbHV0aW9uLCB3aGljaCBpcyBoYXJkbHkgd2hhdAorCSAgc29tZW9uZSB3aG8gYm91Z2h0IGFuIG92ZXJwcmljZWQgc21hcnRwaG9uZSB3YW50cy4KKwogMjAxNS0xMi0yOCAxNTo1Mzo1OSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KIAogCSogZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9zeW5jLmg6CiAJICBnbDogQWRkIFwwIHRlcm1pbmF0b3JzIGZvciB0aGUgQXBwbGUgc3luYyBleHRlbnNpb24KIAkgIE90aGVyd2lzZSBHTCBpbml0aWFsaXphdGlvbiBtaWdodCBjaGVjayBmb3IgZXh0ZW5zaW9ucyBmb3JldmVyIGFuZCBuZXZlciBmaW5pc2hlcy4KIAotMjAxNS0xMi0yMyAyMDoyNDo0NiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKzIwMTUtMTItMjggMTQ6NDE6NTkgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKLQkqIGdzdC9wY2FwcGFyc2UvZ3N0cGNhcHBhcnNlLmM6Ci0JICBwY2FwcGFyc2U6IGRvbid0IGNyYXNoIG9uIDAtc2l6ZWQgcGFja2V0cwotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjU3MworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jOgorCSAgZ2xjb250ZXh0OiBBZGQgc29tZSBkZWJ1ZyBvdXRwdXQgd2hlbiB0aGUgR0wgdGhyZWFkIGlzIGFjdHVhbGx5IHJ1bm5pbmcKIAotMjAxNS0xMi0xNyAxNTo1Njo1NyArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKzIwMTUtMTItMjIgMTE6MjM6MTkgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgogCi0JKiBleHQvb3BlbmpwZWcvZ3N0b3BlbmpwZWdkZWMuYzoKLQkgIG9wZW5qcGVnZGVjOiBEb24ndCBjcmFzaCB3aGVuIGRlY29kaW5nIHJldHVybnMgTlVMTCBkYXRhIGZvciBhbnkgY29tcG9uZW50Ci0JICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4OTQzCisJKiBleHQvZGFzaC9nc3RkYXNoZGVtdXguYzoKKwkgIGRhc2hkZW11eDogcmVtb3ZlZCB1bm5lY2Vzc2FyeSBzcGFjZSB0cmltbWluZyBpbiBnc3RfZGFzaF9kZW11eF9wYXJzZV9odHRwX2hlYWQKKwkgIHNzY2FuZiBoYXMgcmVtb3ZlZCBhbGwgc3BhY2VzIHdoZW4gaXQgaGFzIGNvbnN0cnVjdGVkIHpvbmUgc3RyaW5nLiBUaGVyZSBpcworCSAgbm8gbmVlZCB0byBzZWFyY2ggZm9yIGxlYWRpbmcgc3BhY2VzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTc0MwogCi09PT0gcmVsZWFzZSAxLjYuMiA9PT0KKzIwMTUtMTItMjEgMTQ6NTA6MTUgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgogCi0yMDE1LTEyLTE0IDE5OjUxOjU3ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IGFjY2VwdCAyIG9yIDQgZGlnaXQgeWVhciB3aGVuIHVzaW5nIEhUVFAgSEVBRCBmb3IgY2FsY3VsYXRpbmcgY2xvY2sgY29tcGVuc2F0aW9uCisJICBDb252ZXJ0IHllYXIgZnJvbSAyIGRpZ2l0cyB0byA0IGRpZ2l0cyBpbiBnc3RfZGFzaF9kZW11eF9wYXJzZV9odHRwX2hlYWQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk3NDMKKwkgIEFsc28gdXBkYXRlZCByZWZlcmVuY2VzIHRvIFJmYzgyMiB0byBSZmM1MzIyCisKKzIwMTUtMTItMjcgMTE6Mzc6MDkgKzAxMDAgIEZsb3JlbnQgVGhpw6lyeSA8ZmxvcmVudC50aGllcnlAdWJpY2FzdC5ldT4KKworCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmM6CisJICBnbHNoYWRlcjogZml4IHVzYWdlIGRvYworCSAgVGhlIHByb3BlcnR5IGxvY2F0aW9uIGhhcyBiZWVuIGNoYW5nZWQgaW4gZmF2b3Igb2YgdmVydGV4L2ZyYWdtZW50CisJICBzdHJpbmcgcHJvcGVydGllczsgdGhlIGRvYyBoYWQgbm90IGJlZW4gdXBkYXRlZCBhbmQgd2FzIHN0aWxsIHJlZmVycmluZworCSAgdG8gdGhlIHByZXZpb3VzIHByb3BlcnR5OyBhbHNvLCBub3cgdGhlICN2ZXJzaW9uIGhlYWRlciBoYXMgYmVjb21lIG1hbmRhdG9yeQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTkwMgorCisyMDE1LTEyLTI2IDIyOjM0OjI5ICswMTAwICBGbG9yZW50IFRoacOpcnkgPGZsb3JlbnQudGhpZXJ5QHViaWNhc3QuZXU+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSAgZ2xpbWFnZXNpbms6IFBvc3QgdW5oYW5kbGVkIG5hdmlnYXRpb24gZXZlbnRzIG9uIHRoZSBidXMKKwkgIEJhc2VkIG9mZiB4dmltYWdlc2luayBpbXBsZW1lbnRhdGlvbgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTg2OQorCisyMDE1LTEyLTI3IDIyOjMyOjIyIC0wODAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuY3BwOgorCSAgbW90aW9uY2VsbHM6IGZpeCBzcGxpdHRpbmcgb2YgUkdCIGNvbG9yIHN0cmluZworCSAgTm8gbmVlZCB0byBhdHRlbXB0IHNwbGl0dGluZyB0aGUgUkdCIHN0cmluZyBpbiAyNTUgdG9rZW5zCisJICBpZiB3ZSBvbmx5IGV4cGVjdCAzLgorCSAgTGVmdCBtYXhfdG9rZW5zIGF0IDQgdG8gcHJlc2VydmUgdGhlIGN1cnJlbnQgbG9naWMgKHdoaWNoCisJICBhbGxvd3MgZm9yIGV4dHJhIHN0dWZmIGF0IHRoZSBlbmQpIGFuZCBhZGRlZCBhIHdhcm5pbmcgb24KKwkgIHBhcnNpbmcgZmFpbHVyZSBpbnN0ZWFkIG9mIHNpbGVudGx5IGRpc2NhcmRpbmcgdGhlIHZhbHVlLgorCisyMDE1LTEyLTI3IDIxOjIzOjM3IC0wODAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuY3BwOgorCSAgbW90aW9uY2VsbHM6IGZpeCB0eXBvIGluIGhlYWRlcgorCisyMDE1LTEyLTI3IDIxOjE5OjE5IC0wODAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuY3BwOgorCSAgbW90aW9uY2VsbHM6IGZpeCBtaXNsZWFkaW5nIHdhcm5pbmcgbWVzc2FnZQorCSAgY2FsY3VsYXRlX21vdGlvbiAhPSBGQUxTRSBtZWFucyB0aGUgbW90aW9uIGNvbXB1dGF0aW9uCisJICBsb2dpYyBpcyBkaXNhYmxlZCwgbm90IGEgbWFwcGluZyBlcnJvci4KKworMjAxNS0xMi0yNyAyMToxMToxOCAtMDgwMCAgUmV5bmFsZG8gSC4gVmVyZGVqbyBQaW5vY2hldCA8cmV5bmFsZG9Ab3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmNwcDoKKwkgIG1vdGlvbmNlbGxzOiByZXdvcmsgcHJvcGVydHkgZGVzY3JpcHRpb25zCisKKzIwMTUtMTItMjcgMDE6MTE6NDIgLTA4MDAgIFJleW5hbGRvIEguIFZlcmRlam8gUGlub2NoZXQgPHJleW5hbGRvQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3Rtb3Rpb25jZWxscy5jcHA6CisJICBtb3Rpb25jZWxsczogdXNlIE5VTEwgaW5zdGVhZCBvZiBnX3N0cmR1cChOVUxMKQorCisyMDE1LTEyLTI4IDA5OjA0OjEyICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJICBnbGJ1ZmZlcnBvb2w6IEZpeCBidWlsZCBlcnJvcgorCSAgV2hlbiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wgaXMgbm90IGRlZmluZWQsIHRoZW4gaW5mbyB2YXJpYWJsZQorCSAgd2lsbCBub3QgYmUgdXNlZCBhbmQgdGhpcyByZXN1bHRzIGluIGJ1aWxkIGVycm9yCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5OTEzCisKKzIwMTUtMTItMjQgMTU6Mjg6MjYgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkgIEJhY2sgdG8gZGV2ZWxvcG1lbnQKKworPT09IHJlbGVhc2UgMS43LjEgPT09CisKKzIwMTUtMTItMjQgMTQ6Mjg6NDIgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKIAkqIENoYW5nZUxvZzoKIAkqIE5FV1M6CkBAIC0xMDMsNyArNDg0Miw2IEBACiAJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmVzdGl2YWwueG1sOgogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZpZWxkYW5hbHlzaXMueG1sOgogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZsaXRlLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmFnbWVudGVkLnhtbDoKIAkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVpMHIueG1sOgogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdhdWRpZWZmZWN0cy54bWw6CiAJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2RwLnhtbDoKQEAgLTExMSwxMSArNDg0OSwxMSBAQAogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdtZWRlYy54bWw6CiAJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3NtLnhtbDoKIAkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RzaXJlbi54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taGxzLnhtbDoKIAkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pZDN0YWcueG1sOgogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWludGVyLnhtbDoKIAkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlcmxhY2UueG1sOgogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWpwZWdmb3JtYXQueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWxpdmVhZGRlci54bWw6CiAJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbWltaWMueG1sOgogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1tcy54bWw6CiAJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbW9kcGx1Zy54bWw6CkBAIC0xNTQsOSArNDg5Miw5IEBACiAJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4teTRtZGVjLnhtbDoKIAkqIGdzdC1wbHVnaW5zLWJhZC5kb2FwOgogCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgotCSAgUmVsZWFzZSAxLjYuMgorCSAgUmVsZWFzZSAxLjcuMQogCi0yMDE1LTEyLTE0IDE5OjI3OjU5ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorMjAxNS0xMi0yNCAxNDowMDo1NCArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KIAogCSogcG8vYWYucG86CiAJKiBwby9hei5wbzoKQEAgLTIwMCwyOCArNDkzOCwxMzk3IEBACiAJKiBwby96aF9DTi5wbzoKIAkgIFVwZGF0ZSAucG8gZmlsZXMKIAotMjAxNS0xMi0xNCAxOToxNjoxMiArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKzIwMTUtMTItMjQgMTI6MjM6MDAgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKKwkqIHBvL2NzLnBvOgogCSogcG8vZGEucG86CisJKiBwby9kZS5wbzoKIAkqIHBvL2h1LnBvOgogCSogcG8va3kucG86CisJKiBwby9uYi5wbzoKKwkqIHBvL25sLnBvOgorCSogcG8vcGwucG86CisJKiBwby9ydS5wbzoKKwkqIHBvL3NyLnBvOgogCSogcG8vc3YucG86CisJKiBwby91ay5wbzoKKwkqIHBvL3ZpLnBvOgorCSogcG8vemhfQ04ucG86CiAJICBwbzogVXBkYXRlIHRyYW5zbGF0aW9ucwogCi0yMDE1LTEyLTEyIDEwOjA3OjQ2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisyMDE1LTEyLTIzIDIzOjEzOjIxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgogCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9jdXJsZnRwc2luay5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvY3VybGh0dHBzaW5rLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9jdXJsc210cHNpbmsuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3BjYXBwYXJzZS5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYzoKKwkgIHRlc3RzOiBmaXggaW5kZW50YXRpb24KKworMjAxNS0xMi0yMyAyMzoxMDo1MCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvcGNhcHBhcnNlLmM6CisJICB0ZXN0czogcGNhcHBhcnNlOiBhZGQgY2hlY2sgZm9yIDAtc2l6ZWQgcGFja2V0cworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjU3MworCisyMDE1LTEyLTIzIDIwOjI0OjQ2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvcGNhcHBhcnNlL2dzdHBjYXBwYXJzZS5jOgorCSAgcGNhcHBhcnNlOiBkb24ndCBjcmFzaCBvbiAwLXNpemVkIHBhY2tldHMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY1NzMKKworMjAxNS0xMi0yMyAxMzowNjo0NSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogY29tbW9uOgorCSAgVXBkYXRlIGNvbW1vbgorCisyMDE1LTEyLTIzIDEzOjA0OjIzICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJKiBwa2djb25maWcvTWFrZWZpbGUuYW06CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItcGxheWVyLnBjLmluOgorCSAgcGxheWVyOiBBZGQgcGtnLWNvbmZpZyBmaWxlcworCisyMDE1LTEyLTIzIDEyOjE2OjU0ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBhdXRvZ2VuLnNoOgorCSAgYXV0b2dlbi5zaDogRW5hYmxlIHBsYXllciB0ZXN0cyBieSBkZWZhdWx0CisJICBUaGlzIHdpbGwgYmUgYXV0b21hdGljYWxseSBiZSB1cGRhdGVkIHRvZ2V0aGVyIHdpdGggdGhlIG5leHQgY29tbW9uIHVwZGF0ZQorCSAgYWdhaW4uCisKKzIwMTUtMTItMjMgMDk6NTU6MjYgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgorCSogdGVzdHMvY2hlY2svbGlicy9wbGF5ZXIuYzoKKwkgIHBsYXllcjogQWRkIHVuaXQgdGVzdCB0aGF0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKKwkgIFRoZSB1bml0IHRlc3QgaXMgZG93bmxvYWRpbmcgYSBmZXcgc21hbGwgbWVkaWEgZmlsZXMgZnJvbSB0aGUgSW50ZXJuZXQsCisJICB3aGljaCBhcmUgdGhlbiB1c2VkIGR1cmluZyB0aGUgdGVzdC4gIm1ha2UgY2xlYW4iIHJlbW92ZXMgdGhlIGZpbGVzIGFnYWluLgorCisyMDE1LTEyLTIyIDE0OjQ0OjI4ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL2xpYnMvTWFrZWZpbGUuYW06CisJKiBkb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZG9jcy5zZ21sOgorCSogZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dDoKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlczoKKwkgIHBsYXllcjogSW50ZWdyYXRlIGludG8gdGhlIGRvY3VtZW50YXRpb24gYnVpbGQgc3lzdGVtCisKKzIwMTUtMTItMjIgMTQ6MjQ6MDAgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGdzdC1saWJzL2dzdC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5jOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuaDoKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLW1lZGlhLWluZm8tcHJpdmF0ZS5oOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItbWVkaWEtaW5mby5jOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItbWVkaWEtaW5mby5oOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXItcHJpdmF0ZS5oOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuYzoKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmg6CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci10eXBlcy5oOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5jOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5oOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXItcHJpdmF0ZS5oOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuYzoKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmg6CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aXN1YWxpemF0aW9uLmM6CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aXN1YWxpemF0aW9uLmg6CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci5jOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaDoKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvcGxheWVyLmg6CisJKiB3aW4zMi9jb21tb24vbGliZ3N0cGxheWVyLmRlZjoKKwkgIHBsYXllcjogSW1wb3J0IEdzdFBsYXllciBwbGF5YmFjayBjb252ZW5pZW5jZSBBUEkKKwkgIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9zZHJvZWdlL2dzdC1wbGF5ZXIKKwkgIGNvbW1pdCA5Y2U2YWUwZGJiOGVlZWVmYWY3OTRjZmFlODBlMjc5YTAzY2M1OThkCisKKzIwMTUtMTItMjMgMDk6NTA6MTMgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jOgorCSAgZ2xtZW1vcnlwYm86IENvbW1lbnQgb3V0IHVudXNlZCBmdW5jdGlvbnMgdG8gZml4IGNvbXBpbGF0aW9uIHdpdGggY2xhbmcKKwkgIEl0J3Mgbm90IGNsZWFyIGlmIHRoZXNlIGFyZSBpbnRlbnRpb25hbGx5IHVudXNlZCBvciB0aGUgY29kZSBzaG91bGQgYmUKKwkgIGNoYW5nZWQsIGJ1dCB0aGlzIGZpeGVzIGNvbXBpbGF0aW9uIGZvciB0aGUgdGltZSBiZWluZyBhdCBsZWFzdC4KKwkgIFNlZSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5Njc5CisKKzIwMTUtMTEtMTAgMTY6MjU6NTMgKzAwMDAgIEFsZXggQXNobGV5IDxidWd6aWxsYUBhc2hsZXktZmFtaWx5Lm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jOgorCSAgaGxzZGVtdXg6IHRlc3RzOiBjaGVjayBVUkwgam9pbmluZyBpZiBtZWRpYSBVUkwgY29udGFpbnMgYSAnLycgY2hhcmFjdGVyCisJICBJZiB0aGUgcXVlcnkgcGFyYW1ldGVyIChmb3IgZXhhbXBsZQorCSAgaHR0cDovL2V4YW1wbGUubmV0LzEwNTQ1NTlfMTUwMGsubXA0L21hc3Rlci5tM3U4P2FjbD0vKjEwNTQ1NTlfMTUwMGsubXA0KSwKKwkgIGNoZWNrIHRoYXQgbTN1OC5jIGNvcnJlY3RseSBjb252ZXJ0cyB0aGUgcmVsYXRpdmUgVVJMcyBvZiB0aGUgbWVkaWEKKwkgIHBsYXlsaXN0cyBpbiB0byBhYnNvbHV0ZSBVUkxzLiBJdCBtdXN0IG5vdCB1c2UgdGhlIGxhc3QgJy8nIGl0IGZpbmRzIGluCisJICB0aGUgVVJMLCBhcyBhY2NvcmRpbmcgdG8gUkZDMzk4NiB0aGUgJy8nIGNoYXJhY3RlciBpcyBhbGxvd2VkIGluCisJICB0aGUgcXVlcnkgcGFydCBvZiB0aGUgVVJMLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODM4NAorCisyMDE1LTExLTEwIDE2OjIzOjU5ICswMDAwICBBbGV4IEFzaGxleSA8YnVnemlsbGFAYXNobGV5LWZhbWlseS5uZXQ+CisKKwkqIGV4dC9obHMvbTN1OC5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jOgorCSAgaGxzZGVtdXg6IHVucXVvdGUgYWxsIHRoZSBxdW90ZWQtc3RyaW5nIGF0dHJpYnV0ZXMKKwkgIFRoZSBVUkkgYXR0cmlidXRlIGZyb20gdGhlIEVYVC1YLUtFWSB0YWcgYW5kIHRoZSBVUkkgYXR0cmlidXRlIGZyb20gdGhlCisJICBFWFQtWC1JLUZSQU1FUy1PTkxZIHRhZyBhcmUgYm90aCBxdW90ZWQtc3RyaW5nIGF0dGlidXRlcyB0aGF0IGhhdmUgdGhlaXIKKwkgIHF1b3RhdGlvbiBtYXJrcyByZW1vdmVkIGR1cmluZyBwYXJzaW5nLiBUaGUgQ09ERUNTIGF0dHJpYnV0ZSBvZiB0aGUKKwkgIEVYVC1YLVNUUkVBTS1JTkYgaXMgYWxzbyBhIHF1b3RlZC1zdHJpbmcgYXR0cmlidXRlLCBidXQgdGhpcyBhdHRyaWJ1dGUKKwkgIHdhcyBub3QgYmVpbmcgdW4tcXVvdGVkLgorCSAgVGhpcyBjb21taXQgY2hhbmdlcyB0aGUgcGFyc2VyIHRvIGFsd2F5cyB1bnF1b3RlIGFsbCBxdW90ZWQtc3RyaW5nCisJICBhdHRyaWJ1dGVzIGFuZCBhZGp1c3RzIHRoZSB1bml0IHRlc3RzIHRvIHRoaXMgbmV3IGJldmFoaW91ciBmb3IgdGhlCisJICBDT0RFQ1MgYXR0cmlidXRlLgorCSAgQW4gYWRkaXRpb25hbCB0ZXN0IGlzIGFkZGVkIHRvIGNoZWNrIHRoYXQgcGFyc2luZyBvZiBhbGwgb2YgdGhlIGZpZWxkcworCSAgaW4gdGhlIEVYVC1YLVNUUkVBTSB0YWcgaXMgY29ycmVjdCwgaW5jbHVkaW5nIHRob3NlIHRoYXQgY29udGFpbiBjb21tYQorCSAgY2hhcmFjdGVycy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgzODQKKworMjAxNS0xMS0xMCAxNjo0MTowMiArMDAwMCAgQWxleCBBc2hsZXkgPGJ1Z3ppbGxhQGFzaGxleS1mYW1pbHkubmV0PgorCisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzLy5naXRpZ25vcmU6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9obHNfZGVtdXguYzoKKwkgIGhsc2RlbXV4OiB0ZXN0czogYWRkIHVuaXQgdGVzdHMgZm9yIGhsc2RlbXV4CisJICBVc2luZyB0aGUgbmV3IEdzdEFkYXB0aXZlRGVtdXggdGVzdCBmcmFtZXdvcmssIGFkZCB0ZXN0cyB0aGF0CisJICBleGVyY2lzZSBobHNkZW11eC4gVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgYWRkZWQ6CisJICBzaW1wbGVUZXN0CisJICBBIHNpbXBsZSBwbGF5bGlzdCB0aGF0IGNvbnRhaW5zIHNvbWUgbWVkaWEgVVJMcworCSAgdGVzdE1lZGlhUGxheWxpc3QKKwkgIEEgbWFzdGVyIHBsYXlsaXN0IHdpdGggYSB2YXJpYW50IHBsYXlsaXN0IHRoYXQgY29udGFpbnMgbWVkaWEgVVJMcworCSAgdGVzdE1lZGlhUGxheWxpc3ROb3RGb3VuZAorCSAgQSBtYXN0ZXIgcGxheWxpc3QgdGhhdCBwb2ludHMgdG8gYSBtaXNzaW5nIHZhcmlhbnQgcGxheWxpc3QKKwkgIHRlc3RGcmFnbWVudE5vdEZvdW5kCisJICBBIG1hc3RlciBwbGF5bGlzdCB3aXRoIGEgdmFyaWFudCBwbGF5bGlzdCB0aGF0IGNvbnRhaW5zIG1lZGlhIFVSTHMKKwkgIFRoZXJlIGlzIGEgbWlzc2luZyBtZWRpYSBmaWxlIHJlZmVyZW5jZWQgZnJvbSB0aGUgdmFyaWFudCBwbGF5bGlzdC4KKwkgIHRlc3RGcmFnbWVudERvd25sb2FkRXJyb3IKKwkgIEEgbWFzdGVyIHBsYXlsaXN0IHdpdGggYSB2YXJpYW50IHBsYXlsaXN0IHRoYXQgY29udGFpbnMgbWVkaWEgVVJMcworCSAgRHVyaW5nIHRoZSBkb3dubG9hZCBvZiBvbmUgbWVkaWEgZmlsZSwgdGhlIHRlc3Qgc2ltdWxhdGVzIHRoZSBuZXR3b3JrCisJICBjb25uZWN0aW9uIGJlaW5nIGRyb3BwZWQuCisJICB0ZXN0U2VlaworCSAgQSBzaW1wbGUgdGVzdCBvZiB0cnlpbmcgdG8gcGVyZm9ybSBhIHNlZWsgb24gYW4gSExTIHN0cmVhbS4KKworMjAxNS0xMS0xMCAxMzoxMzozNSArMDAwMCAgQWxleCBBc2hsZXkgPGJ1Z3ppbGxhQGFzaGxleS1mYW1pbHkubmV0PgorCisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5oOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZmFrZV9odHRwX3NyYy5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZmFrZV9odHRwX3NyYy5oOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvdGVzdF9odHRwX3NyYy5oOgorCSAgZGFzaGRlbXV4OiB0ZXN0czogUmVmYWN0b3IgaW50byBhZGFwdGl2ZV9lbmdpbmUgY29tcG9uZW50cworCSAgVG8gYWxsb3cgY29kZSBmcm9tIGRhc2hfZGVtdXguYyB0byBiZSB1c2VkIGJ5IG90aGVyIGVsZW1lbnRzCisJICB0aGF0IGFyZSBiYXNlZCB1cG9uIEdzdEFkYXB0aXZlRGVtdXgsIHRoZSBjb2RlIGhhcyBiZWVuCisJICByZWZhY3RvcmVkIGludG8gZm91ciBuZXcgZmlsZXM6CisJICBhZGFwdGl2ZV9kZW11eF9lbmdpbmUuW2NoXQorCSAgYWRhcHRpdmVfZGVtdXhfY29tbW9uLltjaF0KKwkgIFRoZSBjb2RlIGluIGFkYXB0aXZlX2RlbXV4X2VuZ2luZS5jIHByb3ZpZGVzIGEgZ2VuZXJpYworCSAgdGVzdCBlbmdpbmUgZm9yIGVsZW1lbnRzIGJhc2VkIHVwb24gR3N0QWRhcHRpdmVEZW11eC4KKwkgIFRoZSBjb2RlIGluIGFkYXB0aXZlX2RlbXV4X2NvbW1vbi5jIHByb3ZpZGVzIGEgc2V0CisJICBvZiB1dGlsaXR5IGZ1bmN0aW9ucyB0aGF0IGFyZSBjb21tb24gYmV0d2VlbiB0aGUgdGVzdHMKKwkgIGZvciBobHNkZW11eCBhbmQgZGFzaGRlbXV4LgorCSAgQXMgcGFydCBvZiB0aGUgcmVmYWN0b3JpbmcsIHZhcmlhYmxlcyBpbiBzdHJ1Y3R1cmVzIHdlcmUKKwkgIHJlbmFtZWQgZnJvbSB1c2luZyBjYW1lbENhc2UgdG8gdW5kZXJzY29yZV9jYXNlIHRvIG1hdGNoIG90aGVyCisJICBHU3RyZWFtZXIgc291cmNlIGNvZGUuCisJICBUaGUgZmFrZV9odHRwX3NyYyB3YXMgcmVuYW1lZCB0ZXN0X2h0dHBfc3JjIGFuZCBjaGFuZ2VkIHRvIHVzZQorCSAgY2FsbGJhY2tzIHRvIHByb3ZpZGUgaW5wdXQgZGF0YSBhbmQgZXJyb3IgY29uZGl0aW9ucy4gUmF0aGVyIHRoYW4KKwkgIHVzaW5nIGFuIGFycmF5IG9mIGlucHV0IGRhdGEgdGhhdCB0cmllcyB0byBlbmNvZGUgYWxsIHRoZQorCSAgcG9zc2libGUgdXNlIGNhc2VzIGZvciB0aGUgR3N0VGVzdEhUVFBTcmMgZWxlbWVudCwgdXNlIGEgc3RydWN0IG9mCisJICBjYWxsYmFja3MuCisJICBVc2VycyBvZiB0aGlzIGVsZW1lbnQgYXJlIG9ibGlnZWQgdG8gaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBzcmNfc3RhcnQKKwkgIGNhbGxiYWNrLCB3aGljaCBwcm92aWRlcyBhIHdheSB0byBsaW5rIGZyb20gYSBVUkkgdG8gdGhlIHNldHRpbmdzCisJICBmb3IgdGhhdCBVUkkuCisKKzIwMTUtMTItMjIgMTE6MTA6MzEgKzAyMDAgIE1hdHRoZXcgTWFyc2ggPG1hdHRAc3RvbmV0aHJlZS5jb20+CisKKwkqIHN5cy9udmVuYy9nc3RudmJhc2VlbmMuYzoKKwkgIG52ZW5jOiBmaXggaGlnaCBDUFUgdXNlIG9uIGluaXRpYWxpemF0aW9uIG9mIG11bHRpcGxlIGVuY29kZXJzIGF0IHRoZSBzYW1lIHRpbWUKKwkgIFdlIG5lZWQgYSBzdGF0aWMgbG9jayB0byBwcm90ZWN0IHZhcmlvdXMgTlZFTkMgbWV0aG9kcyBpbiBfc2V0X2Zvcm1hdCgpLiBXaXRob3V0CisJICB0aGlzIHRoZSBDUFUgdXNlIGluY3JlYXNlcyBkcmFtYXRpY2FsbHkgb24gaW5pdGlhbGlzYXRpb24gb2YgdGhlIGVsZW1lbnQgd2hlbgorCSAgdGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzIGJlaW5nIGluaXRpYWxpc2VkIGF0IHRoZSBzYW1lIHRpbWUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NzQyCisKKzIwMTUtMTItMjIgMTA6MTU6MzkgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IG1ha2Ugc3VyZSBldmVyeSBiYWQgdXBkYXRlX3BsYXlsaXN0IHJldHVybiBzZXRzIGFuIGVycm9yCisJICBPdGhlcndpc2UgaXQgc2VnZmF1bHRzIHdoZW4gcmVwb3J0aW5nIHRoZSBlcnJvciBpbiB0aGUgYnVzCisKKzIwMTUtMTItMjEgMTM6NTc6MDQgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC90ZWxldGV4dGRlYy9nc3R0ZWxldGV4dGRlYy5jOgorCSAgdGVsZXRleHRkZWM6IFVzZSBOVUxMIGluc3RlYWQgb2YgZ19zdHJkdXAoJ1wwJykKKwkgIFdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gZ19zdHJkdXAoTlVMTCkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NzI4CisKKzIwMTUtMTItMjEgMTI6MzM6MjUgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbW1vbjoKKwkqIGNvbmZpZ3VyZS5hYzoKKwkgIGNvbmZpZ3VyZTogVXNlIC1Cc3ltYm9saWMtZnVuY3Rpb25zIGlmIGF2YWlsYWJsZQorCSAgV2hpbGUgdGhpcyBpcyBtb3JlIHVzZWZ1bCBmb3IgbGlicmFyaWVzLCBzb21lIG9mIG91ciBwbHVnaW5zIHdpdGggbXVsdGlwbGUKKwkgIGZpbGVzIGFuZCBzb21lIGludGVybmFsIEFQSSBjYW4gYWxzbyBiZW5lZml0IGZyb20gdGhpcy4KKworMjAxNS0xMi0yMSAxMjoxOToxMSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogdGVzdHMvY2hlY2svbGlicy9nc3RnbGNvbG9yY29udmVydC5jOgorCSAgZ2xjb2xvcmNvbnZlcnQ6IEZpeCBuYW1lIG9mIHRlc3RzdWl0ZQorCisyMDE1LTEyLTIxIDEyOjEzOjE1ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250ZXh0LmM6CisJICBnbGNvbnRleHQ6IFNpZ25hbCBjb250ZXh0IGNyZWF0aW9uIGZyb20gaW5zaWRlIHRoZSBjb250ZXh0IGxvb3AgYW5kIHVzZSBnX3RocmVhZF9qb2luKCkgaW5zdGVhZCBvZiBhIGN1c3RvbSBjb25kaXRpb24gdmFyaWFibGUKKwkgIEFsc28gcHJvdGVjdCBhZ2FpbnN0IHNwdXJpb3VzIGNvbmRpdGlvbiB2YXJpYWJsZSB3YWtldXBzIGR1cmluZyBjb250ZXh0CisJICBjcmVhdGlvbi4KKworMjAxNS0xMi0yMSAxMToyNzowOSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x3aW5kb3cuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2x3aW5kb3dfeDExLmM6CisJICBnbHdpbmRvdzogSGlkZSBuYXZpZ2F0aW9uIHNwZWNpZmljIGludGVybmFsIEFQSSBhbmQgYWRkIEFQSSB0byBhc3luY2hyb25vdXNseSBzZW5kIG5hdmlnYXRpb24gZXZlbnRzCisJICBFeHBvc2luZyB0aGUgbmF2aWdhdGlvbiB0aHJlYWQncyBtYWluIGNvbnRleHQsIEdTb3VyY2VGdW5jcyBhbmQgc3RydWN0cyBjYWxsZWQKKwkgIGtleV9ldmVudCBhbmQgbW91c2VfZXZlbnQgaXMgZXhwb3NpbmcgYSBiaXQgdG9vIG11Y2ggb2YgdGhlIGludGVybmFscy4gTGV0J3MKKwkgIGp1c3QgZ28gd2l0aCB0d28gZnVuY3Rpb25zIHRvIGFzeW5jaHJvbm91c2x5IHNlbmQgbmF2aWdhdGlvbiBldmVudHMgb24gdGhlCisJICB3aW5kb3cgd2l0aCB0aGUgc2FtZSBBUEkgYXMgdGhlIHN5bmNocm9ub3VzIG9uZXMuCisKKzIwMTUtMTItMjEgMTA6NDY6NTIgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93Lmg6CisJICBnbHdpbmRvdzogVXNlIGdfdGhyZWFkX2pvaW4oKSBpbnN0ZWFkIG9mIGEgY3VzdG9tIGNvbmRpdGlvbiB2YXJpYWJsZSBmb3Igd2FpdGluZyBmb3IgdGhlIG5hdmlnYXRpb24gdGhyZWFkIHRvIGZpbmlzaAorCSAgQWxzbyBoaWRlIHNvbWUgaW50ZXJuYWwgZnVuY3Rpb25zIGFuZCBmaWVsZHMgd2hpbGUgd2UncmUgYXQgaXQgYW5kIGZpeAorCSAgYSByYWNlIGNvbmRpdGlvbiB3aXRoIHRoZSBzdGFydHVwIGNvbmRpdGlvbiB2YXJpYWJsZS4KKworMjAxNS0xMS0zMCAwOTozNjowOSArMDgwMCAgSGFpaHVhIEh1IDxiNTU1OTdAZnJlZXNjYWxlLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmM6CisJICBnbHdpbmRvdzogRml4IG1lbW9yeSBsZWFrIG9mIG5hdmlnYXRpb24gdGhyZWFkCisJICBXaGVuIHN0b3BwaW5nIHRoZSBuYXZpZ2F0aW9uIHRocmVhZCwgY2FsbCBnX3RocmVhZF9qb2luKCkgdG8gcmVsZWFzZQorCSAgdGhlIHJlc291cmNlcyBob2xkIGJ5IGl0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODgyMAorCisyMDE1LTEyLTE5IDIxOjI1OjQ5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvYXNzcmVuZGVyL2dzdGFzc3JlbmRlci5jOgorCSogZ3N0L2R2YnN1Ym92ZXJsYXkvZ3N0ZHZic3Vib3ZlcmxheS5jOgorCSAgYXNzcmVuZGVyLCBkdmJzdWJvdmVybGF5OiBmaXggZXhhbXBsZSBwaXBlbGluZXMgaW4gZG9jcworCisyMDE1LTEyLTE5IDIxOjEwOjU2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvaGxzL2dzdGhsc2RlbXV4LmM6CisJICBobHNkZW11eDogcmVmbG93IHVwZGF0ZV9wbGF5bGlzdCBhIGJpdAorCSAgUmVkdWNlIGluZGVudGF0aW9uIGJ5IGVycm9yaW5nIG91dCBkaXJlY3RseSBvbiBmYWlsdXJlLgorCisyMDE1LTEyLTE5IDIwOjU5OjEyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvaGxzL2dzdGhsc2RlbXV4LmM6CisJICBobHNkZW11eDogZml4IHBvdGVudGlhbCBlcnJvciBsZWFrCisJICBDbGVhciBlcnJvciBhcyBzb29uIGFzIHdlIGRldGVybWluZSB0aGF0IHRoZSBkb3dubG9hZCBmYWlsZWQsCisJICBvdGhlcndpc2UgdGhlcmUgYXJlIGNvZGUgcGF0aHMgd2hlcmUgd2UgbWlnaHQgcmV0dXJuIHdpdGhvdXQKKwkgIGNsZWFyaW5nIGl0IGV2ZXIsIHdoaWNoIHdvdWxkIGxlYWsgdGhlIEdFcnJvciB0aGVuLiBBbHNvLCB3ZQorCSAgY2FuIHBhc3MgYSBOVUxMIEdFcnJvciBwb2ludGVyIHRvIF9mZXRjaF91cmkoKSwgc28ganVzdCBkbyB0aGF0CisJICBpbnN0ZWFkIG9mIHBhc3Npbmcgb25lIHRoYXQgd2UncmUgZ29pbmcgdG8ganVzdCBmcmVlIGFnYWluCisJICByaWdodCBhd2F5IGFueXdheS4KKworMjAxNS0xMi0xOSAxMjowNTo1OSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5jcHA6CisJICBvcGVuY3Y6IHJlbW92ZSB1bm5lZWRlZCBzaW5rX2V2ZW50IGZ1bmN0aW9uIGluIHB5cmFtaWRzZWdtZW50CisKKzIwMTUtMTItMTkgMTI6MDQ6MDEgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0dGV4dG92ZXJsYXkuY3BwOgorCSAgb3BlbmN2OiByZW1vdmUgdW5uZWVkZWQgc2lua19ldmVudCBmdW5jdGlvbiBpbiB0ZXh0b3ZlcmxheQorCisyMDE1LTEyLTE4IDE4OjUxOjQ5IC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jcHA6CisJICB0ZW1wbGF0ZW1hdGNoOiByZW1vdmUgdXNlbGVzcyBmdW5jdGlvbgorCisyMDE1LTEyLTE4IDExOjU2OjE3IC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkgIGhsc2RlbXV4OiBhbHdheXMgc2V0IHRpbWVzdGFtcCBvbiByZXZlcnNlIHBsYXliYWNrCisJICBEb3duc3RyZWFtIG5lZWRzIHRvIGJlIGFibGUgdG8gcmVzdG9yZSB0aGUgdGltZXN0YW1wcyBhZnRlciBhIGRpc2NvbnQKKwkgIHRvIGRvIHJldmVyc2UgcGxheWJhY2sKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk1OTIKKworMjAxNS0xMi0xOCAxNTozNjo0MCAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkgIGdsY29udmVydDogRml4IGNvbXBpbGF0aW9uIG9mIEdSQVkxNl9MRS9CRSBzaGFkZXIKKworMjAxNS0xMS0xMyAxNzoyNDozMCArMDEwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYzoKKwkgIGdsdXBsb2FkOiBBZGQgZG1hYnVmIHVwbG9hZCBtZXRob2QuCisJICBUaGlzIHVwbG9hZCBtZXRob2QgZGV0ZWN0IGFuZCBvcHRpbWl6ZSB1cGxvYWRzIG9mIERNQUJ1ZiBtZW1vcnkuIFRoaXMgaXMKKwkgIGRvbmUgYnkgY3JlYXRpbmcgYW5kIGNhY2hpbmcgRUdMSW1hZ2VzIHdyYXBwZXIgYXJvdW5kIERNQUJ1Zi4gVGhlCisJICBFR0xJbWFnZXMgYXJlIHRoZW4gYmluZGVkIHRvIGEgdGV4dHVyZSB3aGljaCBnZXQgY29udmVydGVyIHVzaW5nCisJICBzdGFuZGFyZCBzaGFkZXIuCisJICBFeGFtcGxlIHBpcGVsaW5lOgorCSAgR1NUX0dMX1BMQVRGT1JNPWVnbCBcCisJICBnc3QtbGF1bmNoLTEuMCB2NGwyc3JjIGRldmljZT0vZGV2L3ZpZGVvMSBpby1tb2RlPTQgISBcCisJICB2aWRlby94LXJhdyxmb3JtYXQ9TlYxMiAhIGdsaW1hZ2VzaW5rCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzQ1CisKKzIwMTUtMTItMTggMTU6NTI6NDYgLTA1MDAgIE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RlZ2xpbWFnZW1lbW9yeS5jOgorCSAgZWdsaW1hZ2VtZW1vcnk6IEFsc28gaW1wb3J0IEJHUjE2LCBBQkdSLCB4QkdSLCBBWVVWLCBHUkFZMTZfTEUvQkUgYW5kIFk0NDQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzNDUKKworMjAxNS0xMi0xOCAxMTowODoyOSAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGVnbGltYWdlbWVtb3J5LmM6CisJICBlZ2xpbWFnZW1lbW9yeTogQWRkIFJHQi9CR1IgRE1BQnVmIGltcG9ydGF0aW9uIHN1cHBvcnQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzNDUKKworMjAxNS0xMS0xMyAxNzo0MDowOCArMDEwMCAgTHVib3N6IFNhcm5lY2tpIDxsdWJvc3ouc2FybmVja2lAY29sbGFib3JhLmNvLnVrPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGVnbGltYWdlbWVtb3J5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGVnbGltYWdlbWVtb3J5Lmg6CisJICBlZ2xpbWFnZW1lbW9yeTogTWV0aG9kcyB0byBjcmVhdGUgR3N0R0xNZW1vcnkgZnJvbSBkbWFidWZzCisJICBNYXBzIEdzdFZpZGVvRm9ybWF0cyB0byBzdWl0YWJsZSBEUk0gZm91cmNjcyB3aGljaCB3b3JrIHdpdGgKKwkgIGdsY29sb3Jjb252ZXJ0LCB1c2luZyBnc3RfZ2xfbWVtb3J5X2FsbG9jKCkuIFdlIHJlcXVpcmUgbW9zdGx5CisJICBvbmx5IDQgZm9ybWF0cyB0byBiZSBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlci4gV2UgcmVxdWlyZSBEUk0KKwkgIGVxdWl2YWxlbnQgdG8gUkdCMTYsIFJHQkEsIFI4IGFuZCBSRzg4LiBUaGlzIHdheSBpdCdzIGNvbXBhdGlibGUgd2l0aAorCSAgRGVza3RvcEdMLCBzaW5jZSBHTF9URVhUVVJFXzJEIGlzIHVzZWQgYW5kIGxpbWl0IGRyaXZlciByZXF1aXJlbWVudHMuCisJICBXaXRoIHRoaXMgd2UgY2FuIHZpcnR1YWxseSBzdXBwb3J0IGFsbCBmb3JtYXRzIHRoZSBnbGNvbG9yY29udmVydAorCSAgc3VwcG9ydHMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzQ1CisKKzIwMTUtMTAtMDIgMTM6MzE6MzkgKzAyMDAgIEx1Ym9zeiBTYXJuZWNraSA8bHVib3N6LnNhcm5lY2tpQGNvbGxhYm9yYS5jby51az4KKworCSogY29uZmlndXJlLmFjOgorCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSAgYnVpbGQ6IEFkZCBkbWFidWYgYnVpbGQgY29uZGl0aW9uLgorCSAgY29uZmlndXJlLmFjOiBCdWlsZCBkbWFidWYgd2hlbiBFR0wgYW5kIGRybV9mb3VyY2MuaCBpcyBhdmFpbGFibGUuCisJICBnbDogTGluayBnc3QtYWxsb2NhdG9ycy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzNDUKKworMjAxNS0xMS0xMyAxNzowOToxMyArMDEwMCAgTHVib3N6IFNhcm5lY2tpIDxsdWJvc3ouc2FybmVja2lAY29sbGFib3JhLmNvLnVrPgorCisJKiBleHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuYzoKKwkgIGdsaW1hZ2VzaW5rOiBTaG93IGVycm9yIHdoZW4gdmlkZW8gZnJhbWUgaXMgbm90IG1hcHBlZC4KKwkgIEFkZHMgbW9yZSBtZWFuaW5nZnVsIGVycm9yIHRoYW4KKwkgICJGYWlsZWQgdG8gY29udmVydCBtdWx0aXZpZXcgdmlkZW8gYnVmZmVyIiwgd2hpY2ggaXMgYWx3YXlzIHVzZWQKKwkgIHdoZW4gcHJlcGFyZV9uZXh0X2J1ZmZlcigpIGZhaWxzIGluIGdzdF9nbGltYWdlX3NpbmtfcHJlcGFyZSgpLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0MzM0NQorCisyMDE1LTExLTEzIDE3OjA1OjExICswMTAwICBMdWJvc3ogU2FybmVja2kgPGx1Ym9zei5zYXJuZWNraUBjb2xsYWJvcmEuY28udWs+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGNvbnRleHRfZWdsLmg6CisJICBnc3RnbGNvbnRleHRfZWdsOiBFeHBvc2UgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzQ1CisKKzIwMTUtMTItMTggMTY6NTY6MDQgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0dGV4dG92ZXJsYXkuY3BwOgorCSogZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5oOgorCSAgb3BlbmN2OiB1cGRhdGUgb3BlbmN2dGV4dG92ZXJsYXkgdG8gR3N0T3BlbmN2VmlkZW9GaWx0ZXIKKwkgIFVwZGF0ZSBvcGVuY3Z0ZXh0b3ZlcmxheSB0byBpbmhlcml0IGZyb20gR3N0T3BlbmN2VmlkZW9GaWx0ZXIgaW5zdGVhZCBvZgorCSAgZnJvbSBHc3RFbGVtZW50LiBUaGlzIG1lYW5zIGxlc3MgY29kZSBhbmQgbW9yZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgT3BlbkNWCisJICBlbGVtZW50cy4gVGhlIGNoYWluL3RyYW5zZm9ybSBmdW5jdGlvbiBpcyBub3cgYSB0aGlyZCBvZiB0aGUgc2l6ZSB0aGFuCisJICBiZWZvcmUuCisKKzIwMTUtMTItMTggMTY6MTg6NTIgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdHRlbXBsYXRlbWF0Y2guaDoKKwkgIG9wZW5jdjogdXBkYXRlIHRlbXBsYXRlbWF0Y2ggdG8gR3N0T3BlbmN2VmlkZW9GaWx0ZXIKKwkgIFVwZGF0ZSBweXJhbWlkc2VnbWVudCB0byBpbmhlcml0IGZyb20gR3N0T3BlbmN2VmlkZW9GaWx0ZXIgaW5zdGVhZCBvZiBmcm9tCisJICBHc3RFbGVtZW50LiBUaGlzIG1lYW5zIGxlc3MgY29kZSBhbmQgbW9yZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgT3BlbkNWCisJICBlbGVtZW50cy4KKworMjAxNS0xMi0xOCAxNTo0ODoxNiArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50Lmg6CisJICBvcGVuY3Y6IHVwZGF0ZSBweXJhbWlkc2VnbWVudCB0byBHc3RPcGVuY3ZWaWRlb0ZpbHRlcgorCSAgVXBkYXRlIHB5cmFtaWRzZWdtZW50IHRvIGluaGVyaXQgZnJvbSBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBpbnN0ZWFkIG9mIGZyb20KKwkgIEdzdEVsZW1lbnQuIFRoaXMgbWVhbnMgbGVzcyBjb2RlIGFuZCBtb3JlIHVuaWZvcm1pdHkgd2l0aCBvdGhlciBPcGVuQ1YKKwkgIGVsZW1lbnRzLgorCisyMDE1LTEyLTE3IDE3OjI2OjI5ICswMjAwICBWaXZpYSBOaWtvbGFpZG91IDx2aXZpYUBhaGlydS5ldT4KKworCSogc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rLmNwcDoKKwkqIHN5cy9kZWNrbGluay9nc3RkZWNrbGluay5oOgorCSogc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rYXVkaW9zcmMuY3BwOgorCSogc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rdmlkZW9zaW5rLmNwcDoKKwkgIGRlY2tsaW5rdmlkZW9zaW5rOiBNYWRlICJhdXRvIiBtb2RlIHdvcmsgYWNjb3JkaW5nIHRvIGNhcHMKKwkgIFdoZW4gdGhlIG1vZGUgb2YgZGVja2xpbmt2aWRlb3NpbmsgaXMgc2V0IHRvICJhdXRvIiwgdGhlIHNpbmsgY2xhaW1zIHRvCisJICBzdXBwb3J0IHRoZSBmdWxsIHNldCBvZiBjYXBzIHRoYXQgaXQgY2FuIHN1cHBvcnQgZm9yIGFsbCBtb2Rlcy4gVGhlbiwgZXZlcnkKKwkgIHRpbWUgbmV3IGNhcHMgYXJlIHNldCwgdGhlIHNpbmsgd2lsbCBhdXRvbWF0aWNhbGx5IGZpbmQgdGhlIGNvcnJlY3QgbW9kZSBmb3IKKwkgIHRoZXNlIGNhcHMgYW5kIHNldCBpdC4KKwkgIENhdmVhdDogV2UgaGF2ZSBubyB3YXkgdG8ga25vdyB3aGV0aGVyIGEgc3BlY2lmaWMgbW9kZSB3aWxsIGFjdHVhbGx5IHdvcmsgZm9yCisJICB5b3VyIGhhcmR3YXJlLiBUaGVyZWZvcmUsIGlmIHlvdSB0cnkgc2VuZGluZyA0SyB2aWRlbyB0byBhIDEwODAgc2NyZWVuLCBpdAorCSAgd2lsbCBzaWxlbnRseSBmYWlsLCB3ZSBoYXZlIG5vIHdheSB0byBrbm93IHRoYXQgaW4gYWR2YW5jZS4gTWFudWFsbHkgc2V0dGluZworCSAgdGhhdCBtb2RlIGF0IGxlYXN0IGdhdmUgdGhlIHVzZXIgYSB3YXkgdG8gZG91YmxlLWNoZWNrIHdoYXQgdGhleSBhcmUgZG9pbmcuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NjAwCisKKzIwMTUtMTItMTggMTI6Mjg6MjMgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuY3BwOgorCSogZXh0L29wZW5jdi9nc3Rtb3Rpb25jZWxscy5oOgorCSAgb3BlbmN2OiB1cGRhdGUgbW90aW9uY2VsbHMgdG8gR3N0T3BlbmN2VmlkZW9GaWx0ZXIKKwkgIFVwZGF0ZSBtb3Rpb25jZWxscyB0byBpbmhlcml0IGZyb20gR3N0T3BlbmN2VmlkZW9GaWx0ZXIgaW5zdGVhZCBvZiBmcm9tCisJICBHc3RFbGVtZW50LiBUaGlzIG1lYW5zIGxlc3MgY29kZSBhbmQgbW9yZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgT3BlbkNWCisJICBlbGVtZW50cy4KKworMjAxNS0xMi0xOCAxMjoyNjoxNiArMDEwMCAgVGhvbWFzIFJvb3MgPHRob21hcy5yb29zQGluZHVzdHJvbmljLmRlPgorCisJKiBzeXMvZGlyZWN0c291bmQvZ3N0ZGlyZWN0c291bmRzcmMuYzoKKwkqIHN5cy9kaXJlY3Rzb3VuZC9nc3RkaXJlY3Rzb3VuZHNyYy5oOgorCSAgZGlyZWN0c291bmRzcmM6IGFkZCBkZXZpY2UgcHJvcGVydHkgYXMgaXQgaXMgZG9uZSBpbiBkaXJlY3Rzb3VuZHNpbmsKKwkgIFRoaXMgYWxsb3dzIHNlbGVjdGlvbiBvZiB0aGUgZGV2aWNlIGJ5IEdVSUQgaW5zdGVhZCBvZiB0aGUgbmFtZS4gVGhlIG5hbWUgaXMKKwkgIHVzZXItZ2l2ZW4gYW5kIG11bHRpcGxlIGRldmljZXMgY2FuIGhhdmUgdGhlIHNhbWUgbmFtZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk0ODQKKworMjAxNS0xMi0xOCAxMjozNjoyNiArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2RpcmVjdHNvdW5kL2dzdGRpcmVjdHNvdW5kc3JjLmg6CisJICBkaXJlY3Rzb3VuZHNyYzogQ29udmVydCBoZWFkZXIgZnJvbSAoc29tZSkgRE9TIGxpbmUgZW5kaW5ncyB0byBVTklYCisJICBBIG1peCBiZXR3ZWVuIGRpZmZlcmVudCBsaW5lIGVuZGluZ3MgaW4gdGhlIHNhbWUgZmlsZSBpcyBub3QgYSBnb29kIGlkZWEsCisJICBhbmQgdGhlIC5jIGZpbGVzIGFyZSBib3RoIHdpdGggVU5JWCBsaW5lIGVuZGluZ3Mgc28gbGV0J3MgdXNlIHRoYXQuCisKKzIwMTUtMTItMTggMTA6MzA6MjUgKzAwMDAgIEp1bGllbiBJc29yY2UgPGouaXNvcmNlQHNhbXN1bmcuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbToKKwkgIGFwcGxlbWVkaWE6IHNldCAtbW1hY29zeC12ZXJzaW9uLW1pbiB0byAxMC44CisJICBPdGhlcndpc2UgcXRraXR2aWRlb3NyYyBmYWlscyB0byBidWlsZCBvbiBPU1ggMTAuMTAuNAorCSAgYmVjYXVzZSBRVEtpdCBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIE9TIFggMTAuOS4KKwkgIEFsc28gc2V0IC1tbWFjb3N4LXZlcnNpb24tbWluPTEwLjggaW4gZnJvbnQgdG8gYWxsb3cKKwkgIHRoZSB1c2VyIG9yIGNlcmJlcm8gdG8gb3ZlcnJpZGUgdGhlIHZlcnNpb24uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ1NTY0CisKKzIwMTUtMTItMTggMTM6MTc6MzQgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xvdmVybGF5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsb3ZlcmxheWNvbXBvc2l0b3IuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL3ZpZGVvdGV4dHVyZWNhY2hlLm06CisJICBnbG1lbW9yeTogYWRkIGdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0CisJICBBZGQgZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHQgdG8gZ2V0IHRoZSBkZWZhdWx0IGFsbG9jYXRvciBiYXNlZCBvbgorCSAgdGhlIG9wZW5nbCB2ZXJzaW9uLiBBbGxvd3MgdXMgdG8gc3RvcCBoYXJkY29kaW5nIHRoZSBQQk8gYWxsb2NhdG9yIHdoaWNoIGlzbid0CisJICBzdXBwb3J0ZWQgb24gZ2xlczIuCisJICBGaXhlcyBHTCB1cGxvYWQgb24gaU9TOSBhbW9uZyBvdGhlciB0aGluZ3MuCisKKzIwMTUtMTItMTggMTE6NDk6MjUgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmM6CisJICBnbGltYWdlc2luazogZG9uJ3QgZGVhZGxvY2sgb24gcmVzaXplCisJICBQZXJmb3JtaW5nIGFueSBHTCBmdW5jdGlvbiBtYXJzaGFsbGluZyBvZmYgdGhlIEdMIHRocmVhZCB3aXRoIGdsaW1hZ2VzaW5rJ3MKKwkgIHJlbmRlciBsb2NrIGlzIHByb25lIHRvIGRlYWRsb2NrcyBiZXR3ZWVuIHRoZSBHTCB0aHJlYWQgYW5kIHRoZSBub24tR0wgdGhyZWFkLgorCSAgV2hhdCBjYW4gaGFwcGVuIGlzIHRoaXM6CisJICAxLiBub24tR0wgdGhyZWFkIGF0dGVtcHRzIHRvIGZ1bmN0aW9uIG1hcnNoYWwgdG8gdGhlIEdMIHRocmVhZC4KKwkgIDIuIHdoaWxlIDEgaXMgaGFwcGVuaW5nLCB0aGUgd2luc3lzIGdpdmVzIGFuIGV2ZW50IChzYXkgcmVzaXplKQorCSAgMy4gVGhpcyBjYWxscyBiYWNrIGludG8gZ2xpbWFnZXNpbmsgd2hpY2ggdGFrcyB0aGUgcmVuZGVyIGxvY2suCisJICA0LiBBcyB0aGUgR0wgZnVuY3Rpb24gbWFyc2hhbGxpbmcgaXMgYXR0ZW1wdGluZyB0byBydW4gb24gdGhlIEdMCisJICBhbmQgYWxyZWFkeSBoYXMgZ2xpbWFnZXNpbmsncyByZW5kZXIgbG9jayBsb2NrZWQuICBUaGlzIGRlYWRsb2NrcworCSAgYXMgdGhlIHRocmVhZHMgYXJlIHdhaXRpbmcgZm9yIGVhY2ggb3RoZXIuCisKKzIwMTUtMTItMTcgMTg6MTY6NDQgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0ZWRnZWRldGVjdC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGVkZ2VkZXRlY3QuaDoKKwkgIG9wZW5jdjogdXBkYXRlIGVkZ2VkZXRlY3QgdG8gR3N0T3BlbmN2VmlkZW9GaWx0ZXIKKwkgIFVwZGF0ZSBlZGdlZGV0ZWN0IHRvIGluaGVyaXQgZnJvbSBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBpbnN0ZWFkIG9mIGZyb20KKwkgIEdzdEVsZW1lbnQuIFRoaXMgbWVhbnMgbGVzcyBjb2RlIGFuZCBtb3JlIHVuaWZvcm1pdHkgd2l0aCBvdGhlciBPcGVuQ1YKKwkgIGVsZW1lbnRzLgorCisyMDE1LTEyLTE3IDE1OjU2OjU3ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvb3BlbmpwZWcvZ3N0b3BlbmpwZWdkZWMuYzoKKwkgIG9wZW5qcGVnZGVjOiBEb24ndCBjcmFzaCB3aGVuIGRlY29kaW5nIHJldHVybnMgTlVMTCBkYXRhIGZvciBhbnkgY29tcG9uZW50CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4OTQzCisKKzIwMTUtMTItMTUgMTQ6MTQ6MzYgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5oOgorCSAgZ2xiYXNlbWVtb3J5OiBkb24ndCB1bmNvbmRpdGlvbmFsbHkgYWRkIHRoZSBhbGlnbm1lbnQgYnl0ZXMgdG8gdGhlIHNpemUKKwkgIGUuZyB3aGVuIHdyYXBwaW5nIGEgZGF0YSBwb2ludGVyIHdlIGRvbid0IHdhbnQgdG8gbWFwL3VubWFwIG9mZiB0aGUgZW5kIG9mCisJICBwb2ludGVyIHdpdGggdGhlIGFsaWdubWVudCBieXRlcy4KKwkgIEluc3RlYWQgdHJhY2sgdGhhdCBpbmZvcm1hdGlvbiBzZXBhcmF0ZWx5IGFzIG1heHNpemUgaXMgdXNlZCBmb3IgbWFwcGluZyBieQorCSAgR3N0TWVtb3J5IGFuZCB0aHVzIHJlcHJlc2VudHMgYSBzaXplIHdpdGhvdXQgYW55IGFsaWdubWVudCBwYWRkaW5nIGJ5dGVzLgorCisyMDE1LTEyLTE3IDEwOjUxOjMxICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZzbW9vdGguaDoKKwkgIG9wZW5jdjogYWRkIGJsdXIgYW5kIGJpbGF0ZXJhbCBzdXBwb3J0IGluIGN2c21vb3RoCisJICBBZGRpbmcgdGhlIHN1cHBvcnQgZm9yIHRoZSB0d28gb3RoZXIgT3BlbkNWIGxpbmVhciBmaWx0ZXJzIHRvIHNtb290aAorCSAgaW1hZ2VzLiBUaGUgbmV3IEFQSSBkb2VzIHN1cHBvcnQgc3BhdGlhbCBzaWdtYSBpbiB0aGUgYmlsYXRlcmFsIGZpbHRlciwKKwkgIGhlbmNlIGJyaW5naW5nIHRoYXQgcHJvcGVydHkgYmFjay4KKwkgIEFkZGluZyByZWZlcmVuY2UgdG8gbmV3IGRvY3VtZW50YXRpb24uCisKKzIwMTUtMTItMTcgMDg6NTE6NDggKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC9wbm0vZ3N0cG5tZW5jLmM6CisJICBwbm1lbmM6IEZpeCB3cm9uZyBsb2dpYyBsZWFkaW5nIHRvIG1lbW9yeSBtaXNoYW5kbGluZworCSAgV2hpbGUgZW5jb2RpbmcgdGhlIGZyYW1lIGluIEFTQ0lJIG1vZGUsIHBlciBjb21wb25lbnQgZm91ciBieXRlcyBhcmUgbmVlZGVkCisJICBhbmQgYWZ0ZXIgZXZlcnkgMjAgYnl0ZXMsIGEgXG4gd2lsbCBiZSBhZGRlZC4gU28gdGhlIGNhbGN1bGF0aW9uIHNob3VsZCBiZQorCSAgc2l6ZSA9IHNpemUgKiAoNCArIDEgLyAyMCkuIFRoaXMgc2hvdWxkIGV4Y2x1ZGUgdGhlIGhlYWRlciBiZWluZyB3cml0dGVuLgorCSAgU2luY2UgaGVhZGVyIGlzIGFsc28gYmVpbmcgaW5jbHVkZWQgaW4gdGhlIGNhbGN1bGF0aW9ucywgbWVtb3J5IG1pc2hhbmRsaW5ncworCSAgYXJlIGhhcHBlbmluZy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk1MjAKKworMjAxNS0xMi0xNyAxNTo1MDo0MCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuYzoKKwkgIGdsYnVmZmVyOiBhZGQgYSBuYW1lIHRvIHRoZSBhbGxvY2F0b3IKKworMjAxNS0xMi0xNyAxNToyMzoxMyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5Lmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5Lmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG92ZXJsYXljb21wb3NpdG9yLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL2lvc3VyZmFjZW1lbW9yeS5jOgorCSogc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUubToKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkgIGdsKm1lbW9yeSo6IHJldmVyc2UgdGhlIHBhcmFtZXRlciBvcmRlciBvZiB1c2VyX2RhdGEgYW5kIGRlc3Ryb3kgbm90aWZ5CisJICBUaGUgY29udmVudGlvbiBpcyB0byBoYXZlIHRoZSBkZXN0cm95IG5vdGlmeSBsYXN0IGFmdGVyIGFueSB1c2VyIGRhdGEKKworMjAxNS0xMi0xNyAxNTowNzozMyArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3ZpZGVvdGV4dHVyZWNhY2hlLm06CisJICBhcHBsZW1lZGlhOiBmaXggYnVpbGQgb24gaU9TCisJICBGaXggYnVpbGQgYWZ0ZXIgNzc5ZGMzMTMyYzhmNmRkNTYwY2IwN2NjMmUyYzNjNzJhZWFhNzg0NQorCisyMDE1LTEyLTE3IDE0OjQ5OjEzICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvYXZmdmlkZW9zcmMubToKKwkgIGFwcGxlbWVkaWE6IGF2ZnZpZGVvc3JjOiBkbyBmaXhhdGUKKworMjAxNS0xMi0xNiAxODo0MTowNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xvdmVybGF5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xvdmVybGF5Y29tcG9zaXRvci5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5jOgorCSogc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUubToKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xtZW1vcnkuYzoKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2x1cGxvYWQuYzoKKwkgIGdsbWVtb3J5cGJvOiByZW1vdmUgb3VyIG93biBhbGxvYygpL3dyYXBwZWQoKS9ldGMgZnVuY3Rpb25zCisJICByZXBsYWNlZCBieSBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgd2l0aGluIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYygpCisKKzIwMTUtMTItMTYgMTg6Mzk6MzIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmM6CisJICBnbG1lbW9yeTogZG9jdW1lbnQgZ3N0X2dsX21lbW9yeV9pbml0CisKKzIwMTUtMTItMTYgMTg6Mzg6MTkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uYzoKKwkgIGdsYnVmZmVyOiByZW1vdmUgdW5uZWVkZWQgZ3N0X2dsX2J1ZmZlcl9hbGxvYygpCisJICBSZXBsYWNlZCBieSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MoKQorCisyMDE1LTEyLTE2IDE4OjM3OjExICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuYzoKKwkgIGdsYmFzZW1lbW9yeTogZG9jdW1lbnQgc29tZSBmdW5jdGlvbnMKKworMjAxNS0xMi0xNiAxODozNjoxMyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYzoKKwkgIGdsbWVtb3J5OiBhZGQgYSBkZWZhdWx0IGNvcHkgaW1wbGVtZW50YXRpb24KKwkgIFN1YmNsYXNzZXMgc3RpbGwgbmVlZCB0byBvdmVycmlkZSB0aGlzIHRvIGNvcHkgaW50byB0aGUgY29ycmVjdCBtZW1vcnkgdHlwZS4KKworMjAxNS0xMi0xNiAxODozMjo0MCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmg6CisJICBnbGJ1ZmZlcnBvb2w6IHVzZSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgYXMgYSBnZW5lcmljIEdMIGFsbG9jYXRpb24gZnJhbWV3b3JrCisJICBSZXF1aXJlcyB0aGUgdXNhZ2Ugb2YgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgaG93ZXZlciBhbnkgdXNlciBjYW4gc2V0IHRoZWlyCisJICBvd24gcGFyYW1ldGVycyBhbG9uZyB3aXRoIGFuIGFsbG9jYXRvciB3aGljaCB3aWxsIGJlIHVzZWQgdG8gYWxsb2NhdGUgdGhlCisJICBjb3JyZWN0IG1lbW9yeSB0eXBlLgorCisyMDE1LTEyLTE2IDE4OjMwOjU5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmg6CisJICBnbG1lbW9yeXBibzogaW1wbGVtZW50IEdzdEdMQmFzZU1lbW9yeTphbGxvYworCSAgVXNlcyB0aGUgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgcGFyYW1ldGVycworCisyMDE1LTEyLTE2IDE4OjIzOjMxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmg6CisJICBnbGJ1ZmZlcjogaW1wbGVtZW50cyBHc3RHTEJhc2VNZW1vcnk6OmFsbG9jCisJICBDcmVhdGUgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIHdoaWNoIGlzIHN1YmNsYXNzIG9mIEdzdEdMQWxsb2NhdGlvblBhcmFtcworCisyMDE1LTEyLTE2IDE4OjIwOjE3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5Lmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBnbG1lbW9yeTogaW1wbGVtZW50IEdzdEdMQmFzZU1lbW9yeTo6YWxsb2MKKwkgIC0gQ3JlYXRlIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIHdoaWNoIGlzIGEgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIHN1YmNsYXNzLgorCSAgLSBNYWtlIGl0IHBvc3NpYmxlIHRvIGFsbG9jYXRlIGdsbWVtb3J5IG9iamVjdHMgZGlyZWN0bHkgaWYgbm8gZnJpbGxzIGFyZQorCSAgbmVlZGVkLgorCisyMDE1LTEyLTE2IDE4OjEzOjIxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaDoKKwkgIGdsYmFzZW1lbW9yeTogYWRkIGEgZ2VuZXJpYyBpbnRlcmZhY2UgZm9yIGFsbG9jYXRpbmcgR0wgbWVtb3JpZXMKKwkgIFRoaXMgaXMgbWFkZSBwb3NzaWJsZSBieSBhIHN1YmNsYXNzYWJsZSBHc3RHTEFsbG9jYXRpb25QYXJhbXMgdGhhdCBob2xkcworCSAgdGhlIGFsbG9jYXRpb24gcGFyYW1ldGVycworCSAgRXZlcnkgYWxsb2NhdGlvbiB3b3VsZCBub3cgZ28gdGhyb3VnaCBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2Mgd2l0aCB0aGUKKwkgIGFsbG9jYXRpb24gcGFyYW1ldGVycyBub3cgYmVpbmcgc3BlY2lmaWVkIGluIGEgc2luZ2xlIHN0cnVjdCB0byBhbGxvdworCSAgZXh0ZW5zaW9uIGJ5IGRpZmZlcmVudCBhbGxvY2F0b3JzLgorCisyMDE1LTEyLTE3IDEyOjMwOjA1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGNvbW1vbjoKKwkgIHJldmVydCBjb21tb24gc3VibW9kdWxlIGNoYW5nZQorCSAgOGFlMDAzMzI2MTU3NDM4YzEyYzQ1NTg5ZTA1MGM1ZjQ0NjcyM2Y2MSBjb250YWluZWQgYSBlcnJvbmVvdXMgY29tbW9uIGNoYW5nZQorCisyMDE1LTEyLTE3IDExOjA2OjM0ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlci5jOgorCSAgUmV2ZXJ0ICJnbGJ1ZmZlcjogRG9uJ3QgcGFzcyBhbGxvY2F0aW9uIHBhcmFtcyIKKwkgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMDUyZjQxZTVjMjkzZWMxN2MwMzg0NjdlZDFlN2I5MmIwNGQ0OTRiMC4KKwkgIFRoaXMgaXMgaW5jb3JyZWN0IGFuZCB3aWxsIGFmZmVjdCBhbnkgb3RoZXIgZ2xidWZmZXIgdXNlciB0aGF0IG5lZWRzL3dhbnRzIHRvCisJICBwZXJmb3JtIGRhdGEgYWxpZ25tZW50LgorCisyMDE1LTEyLTE2IDE5OjIxOjI0ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcDoKKwkgIG9wZW5jdjogYWRkIG1lZGlhbkJsdXIgc3VwcG9ydCBpbiBjdnNtb290aAorCSAgV2l0aCB0aGUgZGVwcmVjYXRpb24gb2YgY3ZTbW9vdGggd2UgaGF2ZSB0byBoYW5kbGUgdGhlIG90aGVyIHNtb290aGluZworCSAgZnVuY3Rpb25zIG1hbnVhbGx5LgorCisyMDE1LTEyLTE2IDE4OjM3OjM3ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZzbW9vdGguaDoKKwkgIG9wZW5jdjogc3dpdGNoIGRlcHJlY2F0ZWQgY3ZTbW9vdGggZm9yIEdhdXNzaWFuQmx1cgorCSAgVGhlIE9wZW5DViBjdlNtb290aCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIFswXSBhbmQgdGhlIGRvY3VtZW50YXRpb24KKwkgIHJlY29tbWVuZHMgdG8gdXNlIEdhdXNzaWFuQmx1ciAoKS4gVGhpcyBtYWtlcyB0aGUgc3BhdGlhbCBwcm9wZXJ0eSBnbworCSAgdW51c2VkLiBNYXJraW5nIGl0IGFzIGRlcHJlY2F0ZWQsIG1ha2luZyBpdCBub24tZnVuY3Rpb25hbCBhbmQgd2lsbCByZW1vdmUKKwkgIGluIHRoZSBuZXh0IGN5Y2xlLgorCSAgWzBdIGh0dHA6Ly9kb2NzLm9wZW5jdi5vcmcvMi40L21vZHVsZXMvaW1ncHJvYy9kb2MvZmlsdGVyaW5nLmh0bWwKKworMjAxNS0xMi0xNiAxMTo1NjowOCAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuYzoKKwkgIGdsYnVmZmVyOiBEb24ndCBwYXNzIGFsbG9jYXRpb24gcGFyYW1zCisJICBUaGUgaW1wb3J0ZWQgbWVtb3J5IGhhcyBhbHJlYWR5IGJlZW4gYWxsb2NhdGVkLCBwYXNzaW5nIGFsbG9jYXRpb24KKwkgIHBhcmFtZXRlcnMgd2l0aCBhbGlnbm1lbnQgY29uZnVzZXMgdGhlIG1lbW9yeSB3aGljaCBlbmR1cCB3aXRoIGEKKwkgIHNpemUgZGlmZmVyZW50IGZyb20gbWF4c2l6ZSBhbmQgbGVhZCB0byBvdmVycnVuIHdoZW4gdGhlIG1lbW9yeQorCSAgaXMgYmVpbmcgY29waWVkLgorCisyMDE1LTEyLTE2IDEzOjU5OjE4ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgZGFzaGRlbXV4OiBpbXByb3ZlIHZhbGlkYXRpb24gb2YgVVRDdGltaW5nIGVsZW1lbnQKKwkgIGdzdF9tcGRwYXJzZXJfcGFyc2VfdXRjdGltaW5nX25vZGUgZG9lcyBub3QgdmFsaWRhdGUgdGhlIHBhcnNlZCB2YWx1ZXMgY29tcGxldGVseS4gVGhlIGZvbGxvd2luZyBzY2VuYXJpb3MgYXJlIGluY29ycmVjdGx5IGFjY2VwdGVkOgorCSAgLSBlbGVtZW50cyB3aXRoIG5vIHNjaGVtZUlkVXJpIHByb3BlcnR5IHNob3VsZCBiZSByZWplY3RlZAorCSAgLSBlbGVtZW50cyB3aXRoIHVucmVjb2duaXplZCBVVENUaW1pbmcgc2NoZW1lIHNob3VsZCBiZSByZWplY3RlZAorCSAgLSBlbGVtZW50cyB3aXRoIGVtcHR5IHZhbHVlcyBzaG91bGQgYmUgcmVqZWN0ZWQKKwkgIFRoZSBsYXN0IG9uZSB0cmlnZ2VycyBhIGRpdmlzaW9uIGJ5IDAgaW4gZ3N0X2Rhc2hfZGVtdXhfcG9sbF9jbG9ja19kcmlmdDoKKwkgIGNsb2NrX2RyaWZ0LT5zZWxlY3RlZF91cmwgPSBjbG9ja19kcmlmdC0+c2VsZWN0ZWRfdXJsICUgZ19zdHJ2X2xlbmd0aCAodXJscyk7CisJICBiZWNhdXNlIGl0IHVybHMgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGFuIGVtcHR5IGFycmF5LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTU0NworCisyMDE1LTEyLTE2IDEwOjQxOjQ3ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IGNsb2NrX2NvbmQgaXMgbm90IHVzZWQgYW5kIHNob3VsZCBiZSByZW1vdmVkCisJICBUaGVyZSBhcmUgbm8gdGhyZWFkcyB3YWl0aW5nIG9uIGNsb2NrX2NvbmQuIEl0IGlzIGp1c3QgaW5pdGlhbGlzZWQgYW5kCisJICBzaWduYWxsZWQuIEl0IHNob3VsZCBiZSByZW1vdmVkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTUzNworCisyMDE1LTEyLTE2IDEwOjIzOjIzICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiBmaXhlZCBjbG9jayBjb21wZW5zYXRpb24gaW4gZ2V0X2ZyYWdtZW50X3dhaXRpbmdfdGltZQorCSAgQ2xvY2sgY29tcGVuc2F0aW9uIGlzIGNhbGN1bGF0ZWQgaW4gdXNlYyBidXQgaXMgYWRkZWQgdG8gYSBHc3RDbG9ja1RpbWUgdmFsdWUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NTM0CisKKzIwMTUtMTItMTYgMTA6MjE6NTkgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmFtOgorCSAgYXBwbGVtZWRpYTogTGluayB0byBJT1N1cmZhY2UuZnJhbWV3b3JrIGZvciB0aGUgSU9TdXJmYWNlIEFQSQorCisyMDE1LTEyLTE1IDE3OjEwOjAwICswMDAwICBEYXZlIENyYWlnIDxkYXZlY3JhaWdAdW5iYWxhbmNlZGF1ZGlvLmNvbT4KKworCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RkaXJhY3BhcnNlLmM6CisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjNwYXJzZS5jOgorCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY0cGFyc2UuYzoKKwkqIGdzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NXBhcnNlLmM6CisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdG1wZWc0dmlkZW9wYXJzZS5jOgorCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZS5jOgorCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RwbmdwYXJzZS5jOgorCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3R2YzFwYXJzZS5jOgorCSAgdmlkZW9wYXJzZXJzOiBDaGVjayBmb3IgTlVMTCByZXR1cm4gdmFsdWUgb2YgZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzKCkKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk1MDMKKworMjAxNS0xMi0xNiAxNDozMjoyMCArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogZ3N0L2l2dGMvZ3N0aXZ0Yy5jOgorCSAgaXZ0YzogRml4IHZhbHVlIG1lbW9yeSBsZWFrCisJICBndmFsdWUgdmFyaWFibGUgc2hvdWxkIGJlIHVuc2V0IGluc3RlYWQgb2YgcmVzZXQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NTI1CisKKzIwMTUtMTItMTYgMTQ6Mjk6MjAgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC9pdnRjL2dzdGNvbWJkZXRlY3QuYzoKKwkgIGNvbWJkZXRlY3Q6IEZpeCB2YWx1ZSBtZW1vcnkgbGVhaworCSAgZ3ZhbHVlIHZhcmlhYmxlIHNob3VsZCBiZSB1bnNldCBpbnN0ZWFkIG9mIHJlc2V0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTUyMworCisyMDE1LTEyLTE2IDEzOjA4OjIyICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvcG5tL2dzdHBubWRlYy5jOgorCSAgcG5tZGVjOiBGaXggc2Nhbm5lciBtZW1vcnkgbGVhaworCSAgRm9yIGNvcnJ1cHRlZCBmaWxlcywgc2Nhbm5lciBtZW1vcnkgaXMgYmVpbmcgbGVha2VkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTUyMgorCisyMDE1LTEyLTE2IDEzOjA2OjQ1ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvcG5tL2dzdHBubWRlYy5jOgorCSAgcG5tZGVjOiBGaXggYnVmZmVyIG1lbW9yeSBsZWFrCisJICBJbiBjYXNlIG9mIGNvcnJ1cHRlZCBmaWxlLCBzLT5idWYgYWxsb2NhdGVkIGlzIG5vdCBiZWluZyBmcmVlZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTUyMgorCisyMDE1LTEyLTE2IDA5OjA1OjQyICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvcG5tL2dzdHBubWVuYy5jOgorCSAgcG5tZW5jOiBGaXggc3RyaW5nIG1lbW9yeSBsZWFrCisJICBoZWFkZXIgYmVpbmcgYWxsb2NhdGVkIGlzIG5vdCBmcmVlZCByZXN1bHRpbmcgaW4gbGVhaworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTUyMAorCisyMDE1LTEyLTE2IDA4OjUyOjEyICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvZ2RwL2dzdGdkcHBheS5jOgorCSAgZ2RwcGF5OiBGaXggYnVmZmVyIG1lbW9yeSBsZWFrCisJICBvdXRidWZmZXIgYmVpbmcgYWxsb2NhdGVkIGlzIG5vdCBiZWluZyBwdXNoZWQgdG8gcXVldWUgZm9yIEVPUyBldmVudCBhbmQgaGVuY2UKKwkgIHNob3VsZCBiZSBmcmVlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk1MTkKKworMjAxNS0xMi0xNiAwOTozOTowMyArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvTWFrZWZpbGUuYW06CisJICBhcHBsZW1lZGlhOiBMaW5rIHRvIElPS2l0LmZyYW1ld29yayBmb3IgSU9TdXJmYWNlIHJlbGF0ZWQgZnVuY3Rpb25zCisKKzIwMTUtMTItMTYgMDk6MzM6MTIgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5hcmdzOgorCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmhpZXJhcmNoeToKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5zaWduYWxzOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWN1cmwueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWd0c2RlbXV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNtdXgueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNwYW5kc3AueG1sOgorCSAgZG9jczogdXBkYXRlIHRvIGdpdAorCisyMDE1LTEyLTE2IDA4OjI1OjE5ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QveWFkaWYvdmZfeWFkaWYuYzoKKwkgIHlhZGlmOiBGaXggaWxsZWdhbCBtZW1vcnkgYWNjZXNzCisJICBXaGVuIGFwcGx5aW5nIHRoZSBzcGF0aWFsIHByZWRpY3Rpb24sIHRoZXJlIGlzIGFuIGlsbGVnYWwgYWNjZXNzIG9mIC0xIGluZGV4IG9mIGFycmF5LgorCSAgSGVuY2UgYWRkaW5nIGEgY29uZGl0aW9uIHRvIGF2b2lkIHRoaXMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NTE4CisKKzIwMTUtMTItMTYgMDg6MjI6MDAgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC95YWRpZi9nc3R5YWRpZi5jOgorCSAgeWFkaWY6IEZpeCBndmFsdWUgbWVtb3J5IGxlYWsKKwkgIGd2YWx1ZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQgaW5zdGVhZCBvZiByZXNldC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk1MTgKKworMjAxNS0xMi0xNiAxNzowMjoyNyArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJICBhcHBsZW1lZGlhOiB2dGRlYzogZml4IHRleHR1cmUtdGFyZ2V0IG9uIGlPUworCisyMDE1LTEyLTE2IDE1OjIwOjMwICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkgIGFwcGxlbWVkaWE6IHZ0ZGVjOiByZW1vdmUgb2Jzb2xldGUgRklYTUUKKworMjAxNS0xMi0xNiAxNDozODo0NCArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL2F2ZnZpZGVvc3JjLm06CisJICBhcHBsZW1lZGlhOiBhdmZ2aWRlb3NyYzogcmV3b3JrIEdMTWVtb3J5IG5lZ290aWF0aW9uCisJICBPbmx5IGRvIEdMTWVtb3J5IHdoZW4gYSBHc3RHTENvbnRleHQgaXMgYXZhaWxhYmxlIEFORCBHTE1lbW9yeSBpcyBhY3R1YWxseQorCSAgbmVnb3RpYXRlZCB3aXRoIGRvd25zdHJlYW0uCisKKzIwMTUtMTItMTYgMTM6NDc6MDAgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tOgorCSAgYXBwbGVtZWRpYTogYXZmdmlkZW9zcmM6IHVwZGF0ZSBhZnRlciBJT1N1cmZhY2UgY2hhbmdlcworCSAgUHJlZmVyIEdMTWVtb3J5IG92ZXIgc3lzbWVtLiBBbHNvIG5vdyB3aGVuIHB1c2hpbmcgR0xNZW1vcnkgd2UgcHVzaCB0aGUKKwkgIG9yaWdpbmFsIGZvcm1hdHMgKFVZVlkgaW4gT1NYLCBCR1JBIGluIGlPUykgYW5kIGxlYXZlIGl0IHRvIGRvd25zdHJlYW0gdG8KKwkgIGNvbnZlcnQuCisKKzIwMTUtMTItMTQgMTY6MTA6MDEgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5oOgorCSogc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUubToKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJICBhcHBsZW1lZGlhOiB2dGRlYzogcmVtb3ZlIHRoZSBpbnRlcm5hbCBHc3RHTENvbG9yQ29udmVydAorCSAgSXQgd2FzIGFkZGVkIGJhY2sgaW4gdGhlIGRheSB0byBtYWtlIHRleHR1cmUgc2hhcmluZyB3b3JrIGJ5IGRlZmF1bHQgd2l0aAorCSAgZ2xpbWFnZXNpbmsgaW5zaWRlIHBsYXliaW4uIFRoZXNlIGRheXMgZ2xpbWFnZXNpbmsgYWNjZXB0cyAoYW5kIGNvbnZlcnRzKSBZVVYKKwkgIGludGVybmFsbHkgc28gaXQncyBubyBsb25nZXIgbmVlZGVkLgorCisyMDE1LTEyLTE0IDE0OjIzOjIwICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkgIGFwcGxlbWVkaWE6IHZ0ZGVjOiBkZWNvdXBsZSBvdXRwdXR0aW5nIHRleHR1cmVzIGZyb20gb3V0cHV0dGluZyBSR0JBCisJICBXZSdyZSBnb2luZyB0byBiZSBhYmxlIHRvIG91dHB1dCBOVjEyIHRleHR1cmVzIHNvb24uCisKKzIwMTUtMTItMTEgMTM6MjA6MDUgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBjb21tb246CisJKiBzeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hcHBsZW1lZGlhL2lvc3VyZmFjZW1lbW9yeS5jOgorCSogc3lzL2FwcGxlbWVkaWEvaW9zdXJmYWNlbWVtb3J5Lmg6CisJKiBzeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5oOgorCSogc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUubToKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJICBhcHBsZW1lZGlhOiB2dGRlYzogc3dpdGNoIHRvIElPU3VyZmFjZSBvbiBNYWMKKwkgIFN3aXRjaCB0byB1c2luZyBJT1N1cmZhY2UgaW5zdGVhZCBvZiBDVk9wZW5HTFRleHR1cmVDYWNoZSBvbiBPU1guIFRoZSBsYXR0ZXIgY2FuJ3QgYmUKKwkgIHVzZWQgYW55bW9yZSB0byBkbyBZVVYgPT4gUkdCIHdpdGggb3BlbmdsMyBvbiBFbCBDYXBpdGFuIGFzIEdMX1lDQkNSXzQyMl9BUFBMRQorCSAgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBvcGVuZ2wzIGRyaXZlci4gQWxzbyBzd2l0Y2ggdG8gTlYxMiBmcm9tIFVZVlksIHdoaWNoCisJICB3YXMgdGhlIG9ubHkgWVVWIGZvcm1hdCBzdXBwb3J0ZWQgYnkgQ1ZPcGVuR0xUZXh0dXJlQ2FjaGUuCisKKzIwMTUtMTItMTAgMTY6MjI6MDggKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hcHBsZW1lZGlhL2F2ZnZpZGVvc3JjLm06CisJKiBzeXMvYXBwbGVtZWRpYS9jb3JldmlkZW90ZXh0dXJlY2FjaGUuaDoKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb3RleHR1cmVjYWNoZS5tOgorCSogc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUuaDoKKwkqIHN5cy9hcHBsZW1lZGlhL3ZpZGVvdGV4dHVyZWNhY2hlLm06CisJKiBzeXMvYXBwbGVtZWRpYS92dGRlYy5jOgorCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuaDoKKwkgIGFwcGxlbWVkaWE6IHJlbmFtZSBHc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGUgdG8gR3N0VmlkZW9UZXh0dXJlQ2FjaGUKKwkgIEZpcnN0IG9mIGEgZmV3IGNvbW1pdHMgdG8gc3RvcCB1c2luZyBDVk9wZW5HTFRleHR1cmVDYWNoZSBvbiBPU1ggYW5kIHVzZQorCSAgSU9TdXJmYWNlcyBkaXJlY3RseSBpbnN0ZWFkLiBDVk9wZW5HTFRleHR1cmVDYWNoZSBoYXNuJ3QgYmVlbiB1cGRhdGVkIGZvciBPcGVuR0wKKwkgIDMgd2hpY2ggaXMgd2h5IHRleHR1cmUgc2hhcmluZyBpcyBjdXJyZW50bHkgZGlzYWJsZWQgb24gT1NYLgorCisyMDE1LTExLTE3IDE5OjMxOjUzICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkgIFJldmVydCAidnRkZWM6IGRpc2FibGUgdGhlIHRleHR1cmUgY2FjaGUgb24gT1NYIgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCBmMDI0MjVjNGFmY2Q4NTI2MGExYjM4N2FlZGRmODYzNzc0MjU3OTE3LgorCisyMDE1LTEyLTE1IDE0OjE3OjE2ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmM6CisJICBnbHVwbG9hZDogZml4IGFsbG9jYXRvciBuYW1lIGFmdGVyIEdMTWVtb3J5IEFQSSBjaGFuZ2VzCisKKzIwMTUtMTItMTUgMTk6Mjg6MDUgLTA1MDAgIE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KKworCSogZXh0L3F0L01ha2VmaWxlLmFtOgorCSAgcXRzaW5rOiBBZGQgY29uZmlndXJlZCBHTCBjZmxhZ3MgdG8gdGhlIGJ1aWxkCisJICBXZSBkb24ndCBkaXJlY3RseSBsaW5rIHRvIEdMIGluIHRoZSBlbGVtZW50LCB0aG91Z2ggd2UgdXNlIEdMIGhlYWRlcnMuCisJICBGb3IgdGhpcyByZWFzb24gd2UgbmVlZCB0byBpbmNsdWRlIHRoZSBwcm9wZXIgR0wgaGVhZGVycyBwYXRoLiBUaGlzCisJICBwcmV2ZW50IHRoaXMgZWxlbWVudCBmcm9tIHVzaW5nIGEgZGlmZmVyZW50IEdMIGhlYWRlciB0aGVuIGxpYmdzdGdsLgorCisyMDE1LTEyLTE1IDE5OjI1OjE2IC0wNTAwICBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGFwaS5oOgorCSAgZ2w6IEFsbG93IHVzaW5nIG5vbi1zeXN0ZW0gbWVzYSB3aXRoIGJvdGggR0wgYW5kIEdMRVMKKwkgIEdDQyBhdXRvbWF0aWNhbGx5IGRpc2FibGUgcmVkdW5kYW5jZSB3YXJuaW5ncyBmb3Igc3lzdGVtIGhlYWRlcnMuIEFzCisJICBzb29uIGFzIHdlIHN0YXJ0IHVzaW5nIGEgbm9uLXN5c3RlbSBpbnN0YWxsZWQgbWVzYSwgd2Ugd291bGQgc3RhcnQKKwkgIGhhdmluZyBpc3N1ZXMuIFRoZSB0ZXN0IGZvciBib3RoIHdhc24ndCBzZXR0aW5nIGFueSBmbGFncywgc28gaXQgd291bGQKKwkgIHdvcmsgYnV0IHRoZW4gZmFpbCBhdCBydW50aW1lLgorCSAgVGhpcyBpcyBiZWluZyBmaXhlZCBieSBkaXNhYmxpbmcgaW4gdGhlIGNvZGUgKHdoZXJlIG5lZWRlZCBvbmx5KSB0aGF0CisJICBHQ0Mgd2FybmluZy4gVGhlIHRlc3QgaXMgYWxzbyBmaXhlZCB0byBhdm9pZCB0aGUgZmFsc2UgcG9zaXRpdmUgd2UgaGFkLgorCisyMDE1LTEyLTE1IDE1OjU5OjMwICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmNwcDoKKwkgIG9wZW5jdjogcHlyYW1pZHNlZ21lbnQ6IGZpeCBleGFtcGxlIGxhdW5jaCBsaW5lCisJICBVc2UgdmlkZW90ZXN0c3JjIGFuZCBhdXRvdmlkZW9zaW5rIGluIHRoZSBleGFtcGxlIGdzdC1sYXVuY2gtMS4wIGxpbmUgYW5kCisJICBub3QgYSB1c2VsZXNzIGZha2VzcmMtZmFrZXNpbmsgZXhhbXBsZS4KKworMjAxNS0xMi0xNSAxNTo1NjoxOSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RjdmRpbGF0ZS5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3Zlcm9kZS5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5jcHA6CisJICBvcGVuY3Y6IGFkZCBoZWFkZXJzIHdpdGggZXhhbXBsZSBsYXVuY2ggbGluZXMKKwkgIEFkZCBkZXNjcmlwdGlvbiBoZWFkZXJzIGZvciBhbGwgdGhlIE9wZW5DViBwbHVnaW5zIG1pc3NpbmcgdGhlbSwgc28gd2UgY2FuCisJICBoYXZlIGdzdC1sYXVuY2gtMS4wIGV4YW1wbGUgbGF1bmNoIGxpbmVzIGZvciBhbGwgb2YgdGhlbS4KKworMjAxNS0xMi0xNCAxNjo0ODo0NSAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJICBvcGVuZ2w6IFVzZSBwa2ctY29uZmlnIGlmIGF2YWlsYWJsZQorCSAgbGliTWVzYSBzaGlwcyAucGMgZmlsZXMgbm93IGZvciBnbC9lZ2wvZ2xlc3YyLiBUaGlzIHBhdGNoIG1ha2VzIHVzZQorCSAgb2YgaXQgd2hpbGUga2VlcGluZyBzdXBwb3J0IGZvciBzeXN0ZW0gd2l0aG91dC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTEwNjgKKworMjAxNS0xMi0xNSAxMTo1OTowMCArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RidWxnZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RjaXJjbGUuYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0ZGlmZnVzZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RmaXNoZXllLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGthbGVpZG9zY29wZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtYXJibGUuYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWlycm9yLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHBlcnNwZWN0aXZlLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHBpbmNoLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHJvdGF0ZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RzcGhlcmUuYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0c3F1YXJlLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHN0cmV0Y2guYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0dHVubmVsLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHR3aXJsLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHdhdGVycmlwcGxlLmM6CisJICBnZW9tZXRyaWN0cmFuc2Zvcm06IGFkZCBoZWFkZXJzIHdpdGggZXhhbXBsZSBsYXVuY2ggbGluZXMKKwkgIEFkZCBkZXNjcmlwdGlvbiBoZWFkZXJzIGZvciBhbGwgZ2VvbWV0cmljdHJhbnNmb3JtIGVsZW1lbnRzIHNvIHdlIGNhbiBoYXZlCisJICBnc3QtbGF1bmNoLTEuMCBleGFtcGxlIGxhdW5jaCBsaW5lcyBmb3IgYWxsIG9mIHRoZW0uCisKKzIwMTUtMTItMTQgMTE6MDk6NDYgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIFJFQURNRToKKwkqIGV4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmM6CisJKiBleHQvY2hyb21hcHJpbnQvZ3N0Y2hyb21hcHJpbnQuYzoKKwkqIGV4dC9jdXJsL2dzdGN1cmxiYXNlc2luay5jOgorCSogZXh0L2N1cmwvZ3N0Y3VybGZpbGVzaW5rLmM6CisJKiBleHQvY3VybC9nc3RjdXJsZnRwc2luay5jOgorCSogZXh0L2N1cmwvZ3N0Y3VybGh0dHBzaW5rLmM6CisJKiBleHQvY3VybC9nc3RjdXJsc2Z0cHNpbmsuYzoKKwkqIGV4dC9jdXJsL2dzdGN1cmxzbXRwc2luay5jOgorCSogZXh0L2RhYWxhL2dzdGRhYWxhZGVjLmM6CisJKiBleHQvZGFhbGEvZ3N0ZGFhbGFlbmMuYzoKKwkqIGV4dC9kaXJlY3RmYi9kZmJ2aWRlb3NpbmsuYzoKKwkqIGV4dC9kdHMvZ3N0ZHRzZGVjLmM6CisJKiBleHQvZmFhYy9nc3RmYWFjLmM6CisJKiBleHQvZmFhZC9nc3RmYWFkLmM6CisJKiBleHQvZ2wvZ3N0Z2xidW1wZXIuYzoKKwkqIGV4dC9nbC9nc3RnbGRlaW50ZXJsYWNlLmM6CisJKiBleHQvZ2wvZ3N0Z2xkaWZmZXJlbmNlbWF0dGUuYzoKKwkqIGV4dC9nbC9nc3RnbGVmZmVjdHMuYzoKKwkqIGV4dC9nbC9nc3RnbGZpbHRlcnJlZmxlY3RlZHNjcmVlbi5jOgorCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2xzdGVyZW9zcGxpdC5jOgorCSogZXh0L2dsL2dzdGdsdGVzdHNyYy5jOgorCSogZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uYzoKKwkqIGV4dC9rYXRlL2dzdGthdGVkZWMuYzoKKwkqIGV4dC9rYXRlL2dzdGthdGVlbmMuYzoKKwkqIGV4dC9rYXRlL2dzdGthdGVwYXJzZS5jOgorCSogZXh0L2thdGUvZ3N0a2F0ZXRhZy5jOgorCSogZXh0L2thdGUvZ3N0a2F0ZXRpZ2VyLmM6CisJKiBleHQvbGFkc3BhL2dzdGxhZHNwYS5jOgorCSogZXh0L2xpYnZpc3VhbC92aXN1YWwtZ2wuYzoKKwkqIGV4dC9tcGcxMjMvZ3N0bXBnMTIzYXVkaW9kZWMuYzoKKwkqIGV4dC9tcGxleC9nc3RtcGxleC5jYzoKKwkqIGV4dC9vcGVuYWwvZ3N0b3BlbmFsc2luay5jOgorCSogZXh0L29wZW5hbC9nc3RvcGVuYWxzcmMuYzoKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuYzoKKwkqIGV4dC9vcHVzL2dzdG9wdXNlbmMuYzoKKwkqIGV4dC9vcHVzL2dzdG9wdXNwYXJzZS5jOgorCSogZXh0L3Jlc2luZHZkL3Jlc2luLXBsYXk6CisJKiBleHQvcmVzaW5kdmQvcmVzaW4tcGxheTI6CisJKiBleHQvcnN2Zy9nc3Ryc3ZnZGVjLmM6CisJKiBleHQvcnN2Zy9nc3Ryc3Znb3ZlcmxheS5jOgorCSogZXh0L3J0bXAvZ3N0cnRtcHNpbmsuYzoKKwkqIGV4dC9ydG1wL2dzdHJ0bXBzcmMuYzoKKwkqIGV4dC9zbmRpby9zbmRpb3NpbmsuYzoKKwkqIGV4dC9zbmRpby9zbmRpb3NyYy5jOgorCSogZXh0L3RlbGV0ZXh0ZGVjL2dzdHRlbGV0ZXh0ZGVjLmM6CisJKiBleHQvd2F5bGFuZC9nc3R3YXlsYW5kc2luay5jOgorCSogZXh0L3piYXIvZ3N0emJhci5jOgorCSogZ3N0L2FpZmYvYWlmZnBhcnNlLmM6CisJKiBnc3QvYXNmbXV4L2dzdGFzZm11eC5jOgorCSogZ3N0L2F1ZGlvZnhiYWQvZ3N0YXVkaW9jaGFubmVsbWl4LmM6CisJKiBnc3QvYXVkaW9taXhlci9nc3RhdWRpb21peGVyLmM6CisJKiBnc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGFjZXNjb3BlLmM6CisJKiBnc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGVjdHJhc2NvcGUuYzoKKwkqIGdzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHN5bmFlc2NvcGUuYzoKKwkqIGdzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHdhdmVzY29wZS5jOgorCSogZ3N0L2F1dG9jb252ZXJ0L2dzdGF1dG92aWRlb2NvbnZlcnQuYzoKKwkqIGdzdC9jYW1lcmFiaW4yL2dzdGNhbWVyYWJpbjIuYzoKKwkqIGdzdC9jYW1lcmFiaW4yL2dzdHZpZXdmaW5kZXJiaW4uYzoKKwkqIGdzdC9jb2xvcmVmZmVjdHMvZ3N0Y2hyb21haG9sZC5jOgorCSogZ3N0L2NvbG9yZWZmZWN0cy9nc3Rjb2xvcmVmZmVjdHMuYzoKKwkqIGdzdC9kYXRhdXJpc3JjL2dzdGRhdGF1cmlzcmMuYzoKKwkqIGdzdC9kZWJ1Z3V0aWxzL2Zwc2Rpc3BsYXlzaW5rLmM6CisJKiBnc3QvZGVidWd1dGlscy9nc3RjaG9wbXlkYXRhLmM6CisJKiBnc3QvZGVidWd1dGlscy9nc3RkZWJ1Z3NweS5jOgorCSogZ3N0L2RlYnVndXRpbHMvZ3N0d2F0Y2hkb2cuYzoKKwkqIGdzdC9kdmJzdWJvdmVybGF5L2dzdGR2YnN1Ym92ZXJsYXkuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1LmM6CisJKiBnc3QvZmVzdGl2YWwvZ3N0ZmVzdGl2YWwuYzoKKwkqIGdzdC9maWVsZGFuYWx5c2lzL2dzdGZpZWxkYW5hbHlzaXMuYzoKKwkqIGdzdC9mcmVldmVyYi9nc3RmcmVldmVyYi5jOgorCSogZ3N0L2dhdWRpZWZmZWN0cy9nc3RidXJuLmM6CisJKiBnc3QvZ2F1ZGllZmZlY3RzL2dzdGNocm9taXVtLmM6CisJKiBnc3QvZ2F1ZGllZmZlY3RzL2dzdGRpbGF0ZS5jOgorCSogZ3N0L2dhdWRpZWZmZWN0cy9nc3Rkb2RnZS5jOgorCSogZ3N0L2dhdWRpZWZmZWN0cy9nc3RleGNsdXNpb24uYzoKKwkqIGdzdC9nYXVkaWVmZmVjdHMvZ3N0Z2F1c3NibHVyLmM6CisJKiBnc3QvZ2F1ZGllZmZlY3RzL2dzdHNvbGFyaXplLmM6CisJKiBnc3QvZ2RwL1JFQURNRToKKwkqIGdzdC9nZHAvZ3N0Z2RwZGVwYXkuYzoKKwkqIGdzdC9nZHAvZ3N0Z2RwcGF5LmM6CisJKiBnc3QvaWQzdGFnL2dzdGlkM211eC5jOgorCSogZ3N0L2ludGVyL2dzdGludGVyYXVkaW9zaW5rLmM6CisJKiBnc3QvaW50ZXIvZ3N0aW50ZXJhdWRpb3NyYy5jOgorCSogZ3N0L2ludGVyL2dzdGludGVyc3Vic2luay5jOgorCSogZ3N0L2ludGVyL2dzdGludGVyc3Vic3JjLmM6CisJKiBnc3QvaW50ZXIvZ3N0aW50ZXJ2aWRlb3NpbmsuYzoKKwkqIGdzdC9pbnRlci9nc3RpbnRlcnZpZGVvc3JjLmM6CisJKiBnc3QvaW50ZXJsYWNlL2dzdGludGVybGFjZS5jOgorCSogZ3N0L2l2dGMvZ3N0Y29tYmRldGVjdC5jOgorCSogZ3N0L2l2dGMvZ3N0aXZ0Yy5jOgorCSogZ3N0L2pwMmtkZWNpbWF0b3IvZ3N0anAya2RlY2ltYXRvci5jOgorCSogZ3N0L2pwZWdmb3JtYXQvZ3N0amlmbXV4LmM6CisJKiBnc3QvanBlZ2Zvcm1hdC9nc3RqcGVncGFyc2UuYzoKKwkqIGdzdC9teGYvbXhmZGVtdXguYzoKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJKiBnc3QvbnV2ZGVtdXgvZ3N0bnV2ZGVtdXguYzoKKwkqIGdzdC9wbm0vZ3N0cG5tZGVjLmM6CisJKiBnc3QvcG5tL2dzdHBubWVuYy5jOgorCSogZ3N0L3Jhd3BhcnNlL1JFQURNRToKKwkqIGdzdC9yZW1vdmVzaWxlbmNlL2dzdHJlbW92ZXNpbGVuY2UuYzoKKwkqIGdzdC9zZHAvZ3N0c2RwZGVtdXguYzoKKwkqIGdzdC9zcGVlZC9nc3RzcGVlZC5jOgorCSogZ3N0L3N0ZXJlby9nc3RzdGVyZW8uYzoKKwkqIGdzdC92aWRlb2ZpbHRlcnMvZ3N0c2NlbmVjaGFuZ2UuYzoKKwkqIGdzdC92aWRlb2ZpbHRlcnMvZ3N0dmlkZW9kaWZmLmM6CisJKiBnc3QvdmlkZW9maWx0ZXJzL2dzdHplYnJhc3RyaXBlLmM6CisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdGRpcmFjcGFyc2UuYzoKKwkqIGdzdC92aWRlb3NpZ25hbC9nc3RzaW1wbGV2aWRlb21hcmsuYzoKKwkqIGdzdC92aWRlb3NpZ25hbC9nc3RzaW1wbGV2aWRlb21hcmtkZXRlY3QuYzoKKwkqIGdzdC92aWRlb3NpZ25hbC9nc3R2aWRlb2FuYWx5c2UuYzoKKwkqIGdzdC95NG0vZ3N0eTRtZGVjLmM6CisJKiBnc3QveWFkaWYvZ3N0eWFkaWYuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL2F0ZGVjLmM6CisJKiBzeXMvYXBwbGVtZWRpYS9hdmZhc3NldHNyYy5tOgorCSogc3lzL2FwcGxlbWVkaWEvaW9zYXNzZXRzcmMubToKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJKiBzeXMvZGlyZWN0c291bmQvZ3N0ZGlyZWN0c291bmRzcmMuYzoKKwkqIHN5cy9kdmIvUkVBRE1FOgorCSogc3lzL2R2Yi9nc3RkdmJzcmMuYzoKKwkqIHN5cy9vcGVuc2xlcy9vcGVuc2xlc3NpbmsuYzoKKwkqIHN5cy9vcGVuc2xlcy9vcGVuc2xlc3NyYy5jOgorCSogc3lzL3NobS9nc3RzaG1zaW5rLmM6CisJKiBzeXMvc2htL2dzdHNobXNyYy5jOgorCSogc3lzL3ZkcGF1L2dzdHZkcHZpZGVvcG9zdHByb2Nlc3MuYzoKKwkqIHN5cy92ZHBhdS9tcGVnL2dzdHZkcG1wZWdkZWMuYzoKKwkqIHN5cy92ZHBhdS9tcGVnNC9nc3R2ZHBtcGVnNGRlYy5jOgorCSogc3lzL3dpbmtzL2dzdGtzdmlkZW9zcmMuYzoKKwkqIHN5cy93aW5zY3JlZW5jYXAvZ3N0ZHg5c2NyZWVuY2Fwc3JjLmM6CisJKiBzeXMvd2luc2NyZWVuY2FwL2dzdGdkaXNjcmVlbmNhcHNyYy5jOgorCSogdG9vbHMvZ3N0LWVsZW1lbnQtbWFrZXI6CisJICBwbHVnaW5zLWJhZDogRml4IGV4YW1wbGUgcGlwZWxpbmVzCisJICByZW5hbWUgZ3N0LWxhdW5jaCAtLT4gZ3N0LWxhdW5jaC0xLjAKKwkgIHJlcGxhY2Ugb2xkIGVsZW1lbnRzIHdpdGggbmV3IGVsZW1lbnRzKGZmbXBlZ2NvbG9yc3BhY2UgLT4gdmlkZW9jb252ZXJ0LCBmZmVuY18qKiAtPiBhdmVuY18qKikKKwkgIGZpeCBjYXBzIGluIGV4YW1wbGVzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NDMyCisKKzIwMTUtMTItMTQgMTU6MDE6MDkgLTA1MDAgIE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KKworCSogLmdpdGlnbm9yZToKKwkgIGlnbm9yZTogdmlkZW9mcmFtZS1hdWRpb2xldmVsIHRlc3QKKworMjAxNS0xMi0xNCAxNDo0NDozMSAtMDUwMCAgWGF2aWVyIENsYWVzc2VucyA8eGF2aWVyLmNsYWVzc2Vuc0Bjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmcmFtZWJ1ZmZlci5oOgorCSogZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9nc3RpbnNlcnRiaW4uaDoKKwkgIGJhZDogQWRkIGdfYXV0b3B0cigpIHN1cHBvcnQgdG8gYWxsIHR5cGVzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0NDY0CisKKzIwMTUtMTItMTQgMTI6MzE6NTIgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmM6CisJICBnbHZpZXdjb252ZXJ0OiBjaGVjayBwb2ludGVyIGJlZm9yZSBkZXJlZmVyZW5jaW5nCisJICBwcml2LT5wcmltYXJ5X291dCBjb3VsZCBiZSBOVUxMLCBjaGVjayBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdCBpbgorCSAgR1NUX0JVRkZFUl9GTEFHX1NFVCAoKQorCSAgQ0lEIDEzMDg5NDUKKworMjAxNS0xMi0xNCAxMzo0MzoxMCArMDIwMCAgVml2aWEgTmlrb2xhaWRvdSA8dml2aWFAYWhpcnUuZXU+CisKKwkqIGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmM6CisJICB2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWw6IEZpeCBwb3NzaWJsZSBkaXZpc2lvbiBieSB6ZXJvCisJICBJbiB1cGRhdGVfcm1zX2Zyb21fYnVmZmVyKCksIGRpdmlzaW9uIGJ5ICJmcmFtZXMiIHdhc24ndCBjaGVja2luZyB3aGV0aGVyCisJICAiZnJhbWVzIiBpcyB6ZXJvLgorCSAgQ0lEIDEzNDE1MTkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NDQzCisKKzIwMTUtMTItMTQgMDk6Mzg6NDEgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHRlc3RzL2V4YW1wbGVzL2dsL2NsdXR0ZXIvY2x1dHRlcnNoYXJlLmM6CisJICBjbHV0dGVyOiBGaXggY29tcGlsYXRpb24gZXJyb3IgaW4gR0wgZXhhbXBsZXMKKwkgIEluY2x1ZGUgZ3N0L2dsLmggaW5zdGVhZCBvZiBzcGVjaWZpYyBoZWFkZXJzIHRvIHByZXZlbnQgc3VjaCBwcm9ibGVtcyBhbHNvIGluCisJICB0aGUgZnV0dXJlLgorCSAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uLy4uLy4uLy4uL2dzdC1saWJzL2dzdC9nbC9nbC5oOjQ3OjAsCisJICBmcm9tIC4uLy4uLy4uLy4uL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaDoxMzcsCisJICBmcm9tIC4uLy4uLy4uLy4uL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOjI5LAorCSAgZnJvbSBjbHV0dGVyc2hhcmUuYzozOToKKwkgIC4uLy4uLy4uLy4uL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5oOjUxOjIwOiBlcnJvcjogZmllbGQg4oCYbWVt4oCZIGhhcyBpbmNvbXBsZXRlIHR5cGUKKwkgIEdzdEdMTWVtb3J5ICAgICAgbWVtOworCSAgXgorCSAgLi4vLi4vLi4vLi4vZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmg6MTI0OjI0OiBlcnJvcjogZmllbGQg4oCYcGFyZW504oCZIGhhcyBpbmNvbXBsZXRlIHR5cGUKKwkgIEdzdEdMTWVtb3J5QWxsb2NhdG9yIHBhcmVudDsKKwkgIF4KKwkgIC4uLy4uLy4uLy4uL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5oOjEzNDoyOTogZXJyb3I6IGZpZWxkIOKAmHBhcmVudF9jbGFzc+KAmSBoYXMgaW5jb21wbGV0ZSB0eXBlCisJICBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzIHBhcmVudF9jbGFzczsKKwkgIF4KKworMjAxNS0xMi0xNCAxOToxODoxNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9jb3JldmlkZW90ZXh0dXJlY2FjaGUubToKKwkgIGFwcGxlbWVkaWE6IHVwZGF0ZSBmb3IgR0xNZW1vcnkgQVBJIGNoYW5nZXMKKworMjAxNS0xMi0xNCAxOToxNToxNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBhbWN2aWRlb2RlYzogdXBkYXRlIGZvciBHTE1lbW9yeSBBUEkgY2hhbmdlcworCisyMDE1LTEyLTE0IDE4OjQxOjMwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2x1cGxvYWQuYzoKKwkgIHRlc3RzOiB1cGRhdGUgZm9yIGdsbWVtb3J5IGFwaSBjaGFuZ2VzCisKKzIwMTUtMTItMTQgMTg6MjA6MjMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmM6CisJICBnbGJ1ZmZlcjogYmluZC91bmJpbmQgb24gbWFwL3VubWFwIGZvciBHTCBtYXBwaW5ncworCSAgQmluZCB0aGUgaGFuZGxlIHRvIHRoZSBHTCB0YXJnZXQgb24gbWFwL3VubWFwIHRvIHNhdmUgdGhlIGNhbGxlciBmcm9tCisJICBoYW5kbGluZyB0aGlzIHRoZW1zZWx2ZXMuCisKKzIwMTUtMTItMTQgMTg6MTk6MzcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuaDoKKwkgIGdsYnVmZmVyOiByZW1vdmUgYnVmZmVyIHNwZWNpZmljIHRyYW5zZmVyIGZsYWdzCisJICBJbnN0ZWFkIHJlbHkgb24gR3N0R0xCYXNlTWVtb3J5J3MgdHJhbnNmZXIgaGFuZGxpbmcKKworMjAxNS0xMi0xNCAxODoxODoyMCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uYzoKKwkgIGdsbWVtb3J5cGJvOiBtYXAvdW5tYXAgcGJvIG1lbW9yeSBjb3JyZWN0bHkgZm9yIHN0YXRlIHRyYWNraW5nCisJICBPdGhlcndpc2Ugc29tZSBkb3dubG9hZHMgd2lsbCBmYWlsIHRvIG9jY3VyIGZyb20gdGhlIFBCTy4KKworMjAxNS0xMi0xNCAxODoxNTo0MiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsbWVtb3J5LmM6CisJICB0ZXN0cy9nbG1lbW9yeTogaW5jbHVkZSB0aGUgZ2VuZXJpYyBnbCBoZWFkZXIKKwkgIEluY2x1ZGluZyBnc3RnbG1lbW9yeS5oIGRpcmVjdGx5IHJlc3VsdHMgaW4gdGhlIGNvbXBpbGVyIGNvbXBsYWluaW5nCisJICBhYm91dCBpbmNvbXBsZXRlIHR5cGVzLgorCisyMDE1LTEyLTE0IDE3OjA1OjMxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZvcm1hdC5jOgorCSAgZ2xmb3JtYXQ6IGFkZCBjb21wYXRpYmlsaXR5IGRlZmluaXRpb25zIGZvciBPRVMvcmVjdGFuZ2xlIHRleHR1cmVzCisKKzIwMTUtMTItMTQgMTM6NDk6MTggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlYnVmZmVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlYnVmZmVyLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkaXNwbGF5LmM6CisJICBnbGJhc2VidWZmZXI6IHJlbW92ZSB1bnNlZCBtZW1vcnkgc3ViY2xhc3MKKwkgIFRoZSBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHNwbGl0IGludG8gR3N0R0xCYXNlTWVtb3J5IGFuZCBHc3RHTEJ1ZmZlci4KKworMjAxNS0xMi0xNCAxMzo0Mzo1OSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMudHlwZXM6CisJKiBleHQvZ2wvZ3N0Z2xkb3dubG9hZGVsZW1lbnQuYzoKKwkqIGV4dC9nbC9nc3RnbG92ZXJsYXkuYzoKKwkqIGV4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjOgorCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRpc3BsYXkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZvcm1hdC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZm9ybWF0Lmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG92ZXJsYXljb21wb3NpdG9yLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmM6CisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsbWVtb3J5LmM6CisJICBnbG1lbW9yeTogYmFzZSBjbGFzc2lmeSBhbmQgYWRkIHRoZSBwYm8gbWVtb3J5IG9uIHRvcAorCSAgVGhlIGJhc2UgY2xhc3MgaXMgdXNlZnVsIGZvciBoYXZpbmcgbXVsdGlwbGUgYmFja2luZyBtZW1vcnkgdHlwZXMgb3RoZXIKKwkgIHRoYW4gdGhlIGRlZmF1bHQuICBlLmcuIElPU3VyZmFjZSwgRUdMSW1hZ2UsIGRtYWJ1Zj8KKwkgIFRoZSBQQk8gdHJhbnNmZXIgbG9naWMgaXMgbm93IGluc2lkZSBHc3RHTE1lbW9yeVBCTyB3aGljaCB1c2VzIEdzdEdMQnVmZmVyCisJICB0byBtYW5hZ2UgdGhlIFBCTyBtZW1vcnkuCisJICBUaGlzIGFsc28gbW92ZXMgdGhlIGZvcm1hdCB1dGlsaXR5IGZ1bmN0aW9ucyBpbnRvIHRoZWlyIG93biBmaWxlLgorCisyMDE1LTEyLTE0IDEzOjA4OjEwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlczoKKwkqIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9nbC9nbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRpc3BsYXkuYzoKKwkgIGdsOiBhZGQgYSBHTCBidWZmZXIgYmFzZWQgR3N0TWVtb3J5CisJICBIZWF2aWx5IGJhc2VkIG9uIEdzdEdMQmFzZUJ1ZmZlciB0aGF0IGlzIGEgc3ViY2xhc3Mgb2YgR3N0R0xCYXNlTWVtb3J5LgorCSAgUHJvdmlkZXMgR1BVIGFuZCBDUFUgYWNjZXNzaWJsZSBHTCBidWZmZXIgb2JqZWN0cyBieSBHTCBoYW5kbGUgb3IgYnkKKwkgIHN5c21lbSBkYXRhIHBvaW50ZXIuCisKKzIwMTUtMTItMTQgMTI6NTk6MDIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5Lmg6CisJICBnbDogYWRkIGEgYmFzZSBtZW1vcnkgb2JqZWN0CisJICBJdCBoYW5kbGVzIHRoZSBmb2xsb3dpbmcKKwkgIC0gR3N0QWxsb2NhdGlvblBhcmFtcyAtPiBnc3RfbWVtb3J5X2luaXQgdHJhbnNmb3JtYXRpb24KKwkgIC0gTWFrZXMgc3VyZSB0aGF0IG1hcC91bm1hcC9jcmVhdGUvZGVzdHJveSBoYXBwZW4gb24gdGhlIEdMIHRocmVhZCB3aXRoCisJICBhIEdMIGNvbnRleHQgY3VycmVudC4KKwkgIC0gSG9sZHMgYSBwb3NzaWJsZSBzeXNtZW0gYWNjZXNzaWJsZSBkYXRhIHBvaW50ZXIgd2l0aCBhbGlnbm1lbnQuCisJICAtIEhvbGRzIHRoZSBuZWVkIHVwbG9hZC9kb3dubG9hZCB0cmFuc2ZlciBzdGF0ZQorCisyMDE1LTEyLTE0IDEyOjI2OjAxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5oOgorCSAgZ2w6IGFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgdGhlIHN0YXJ0IG9mIGEgdmlkZW8gZnJhbWUKKwkgIEdldCdzIHRoZSBzdGFydCBvZiB0aGUgdmlkZW8gZnJhbWUgYmFzZWQgb24gYSBHc3RWaWRlb0luZm8gYW5kCisJICBHc3RWaWRlb0FsaWdubWVudC4KKworMjAxNS0xMi0xMSAxNjowNzozNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZG9jcy5zZ21sOgorCSogZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dDoKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlczoKKwkqIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9nbC9nbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkbWV0YS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkbWV0YS5oOgorCSogdGVzdHMvY2hlY2svbGlicy9nc3RnbHVwbG9hZC5jOgorCSAgZ2x1cGxvYWRtZXRhOyByZW1vdmUgY29udmVuaWVuY2UgaGVscGVyIEFQSQorCSAgSXQgd2FzIG5vdCByZWFsbHkgdXNlZnVsIGFzIGlmIG9uZSBrbm93cyBhYm91dCBsaWJnc3RnbCwgb25lIGNhbiBqdXN0IHVzZQorCSAgR0xNZW1vcnkgb2JqZWN0cyBkaXJlY3RseS4KKworMjAxNS0xMi0xMSAxNTozOTo1NyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZG9jcy5zZ21sOgorCSogZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dDoKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlczoKKwkqIGV4dC9nbC9nc3RnbHN0ZXJlb21peC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkb3dubG9hZC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZG93bmxvYWQuaDoKKwkgIGdsZG93bmxvYWQ6IHJlbW92ZSBoZWxwZXIgYXBpIGZyb20gdGhlIGxpYnJhcnkKKwkgIEl0IHdhcyBuZXZlciB1c2VkIGJ5IGFueW9uZSBhbmQgaXMgbm90IG5lZWRlZCBhbnltb3JlIHdpdGggdGhlIGVsZW1lbnQKKwkgIGFuZCBHc3RHTE1lbW9yeSdzIHRyYW5zcGFyZW50IHN1cHBvcnQgZm9yIGRvd25sb2FkaW5nIHRleHR1cmVzLgorCisyMDE1LTEyLTEyIDIwOjA3OjMyICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2ZGlsYXRlLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZkaWxhdGVlcm9kZS5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGN2ZGlsYXRlZXJvZGUuaDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZlcXVhbGl6ZWhpc3QuY3BwOgorCSogZXh0L29wZW5jdi9nc3RjdmVxdWFsaXplaGlzdC5oOgorCSogZXh0L29wZW5jdi9nc3RjdmVyb2RlLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmg6CisJKiBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZzbW9vdGguaDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGN2c29iZWwuaDoKKwkqIGV4dC9vcGVuY3YvZ3N0ZGlzcGFyaXR5LmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0ZGlzcGFyaXR5Lmg6CisJKiBleHQvb3BlbmN2L2dzdGVkZ2VkZXRlY3QuY3BwOgorCSogZXh0L29wZW5jdi9nc3RlZGdlZGV0ZWN0Lmg6CisJKiBleHQvb3BlbmN2L2dzdGZhY2VibHVyLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0ZmFjZWJsdXIuaDoKKwkqIGV4dC9vcGVuY3YvZ3N0ZmFjZWRldGVjdC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGdyYWJjdXQuY3BwOgorCSogZXh0L29wZW5jdi9nc3RoYW5kZGV0ZWN0LmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5oOgorCSogZXh0L29wZW5jdi9nc3Rtb3Rpb25jZWxscy5jcHA6CisJKiBleHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmg6CisJKiBleHQvb3BlbmN2L2dzdG9wZW5jdnZpZGVvZmlsdGVyLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0cHlyYW1pZHNlZ21lbnQuY3BwOgorCSogZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5oOgorCSogZXh0L29wZW5jdi9nc3RyZXRpbmV4LmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0cmV0aW5leC5oOgorCSogZXh0L29wZW5jdi9nc3RzZWdtZW50YXRpb24uY3BwOgorCSogZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0c2tpbmRldGVjdC5oOgorCSogZXh0L29wZW5jdi9nc3R0ZW1wbGF0ZW1hdGNoLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5oOgorCSogZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5jcHA6CisJKiBleHQvb3BlbmN2L2dzdHRleHRvdmVybGF5Lmg6CisJICBvcGVuY3Y6IGNsZWFuIGluY2x1ZGVzCisJICBUaGUgb3BlbmN2IGVsZW1lbnQgaW5jbHVkZXMgd2VyZSBmdWxsIG9mIGR1cGxpY2F0ZXMgYW5kIHVuZWVkZWQgaGVhZGVycy4KKwkgIEZvciBleGFtcGxlIGEgZmV3IGVsZW1lbnRzIHRoYXQgc3RvcHBlZCB1c2luZyBnc3Rjdm9wZW5jdnV0aWxzIHN0aWxsCisJICBpbmNsdWRlZCB0aGF0IGhlYWRlciBmaWxlLgorCisyMDE1LTEyLTEyIDE5OjMxOjU1ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdG9wZW5jdnV0aWxzLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0b3BlbmN2dXRpbHMuaDoKKwkgIG9wZW5jdjogcmVtb3ZlIHVudXNlZCBmdW5jdGlvbnMgaW4gZ3N0b3BlbmN2dXRpbHMKKwkgIFNpbmNlIGNvbW1pdCA0NWNhODg3NmIyZjUyNjdmN2VkYjg0MmI2ZDU2ZDdhNmMyNzFjY2IzIG5vYm9keSBpcyB1c2luZworCSAgZ3N0X29wZW5jdl9nZXRfaXBsX2RlcHRoX2FuZF9jaGFubmVscygpIG9yCisJICBnc3Rfb3BlbmN2X3BhcnNlX2lwbGltYWdlX3BhcmFtc19mcm9tX3N0cnVjdHVyZSgpLiBSZW1vdmUgdGhpcyBkZWFkCisJICBjb2RlLgorCisyMDE1LTEyLTEyIDE5OjEzOjQyICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L01vdGlvbkNlbGxzLmNwcDoKKwkqIGV4dC9vcGVuY3YvTW90aW9uQ2VsbHMuaDoKKwkgIG1vdGlvbmNlbGxzOiBSZW1vdmUgdW51c2VkIGluY2x1ZGVzCisKKzIwMTUtMTItMTIgMTA6MDY6NTUgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogY29tbW9uOgorCSAgcmV2ZXJ0IGNvbW1vbiBzdWJtb2R1bGUgY2hhbmdlCisKKzIwMTUtMTItMTIgMDk6MzM6MzggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogY29tbW9uOgogCSogZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uYzoKIAkgIGdsdHJhbnNmb3JtYXRpb246IGNsZWFyIHRvIHRyYW5zcGFyZW50CiAJICBPdGhlcndpc2UgY29tcG9zaXRpb24gd2lsbCByZXN1bHQgaW4gYSBibGFjayBmcmFtZSBvdXRzaWRlIHRoZSB0cmFuc2Zvcm1lZAogCSAgdmlkZW8uCiAKLTIwMTUtMTItMDggMTY6MzU6NDUgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KLQotCSogZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9zeW5jLmg6Ci0JICBnbHByb3RvOiBpbmNsdWRlIGZ1bmN0aW9uIGRlZmluaXRpb25zIGZvciBHTF9BUFBMRV9zeW5jCi0JICBQcm92aWRlcyBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IG9uIGlPUyB3aGVyZSB3ZSB3ZXJlIGZhbGxpbmcgYmFjayB0byBnbEZpbmlzaAotCSAgb24gc2V0dHRpbmcgc3luYyBwb2ludHMuCi0KIDIwMTUtMTItMTEgMTE6Mzk6MDggKzAxMDAgIFRob21hcyBSb29zIDx0aG9tYXMucm9vc0BpbmR1c3Ryb25pYy5kZT4KIAogCSogc3lzL2RpcmVjdHNvdW5kL2dzdGRpcmVjdHNvdW5kc3JjLmM6CkBAIC0yMzAsMTcgKzYzMzcsNTAyIEBACiAJICBBbHNvIHRha2UgdGhlIGVsZW1lbnQncyBtdXRleCBpbiB1bnByZXBhcmUoKS4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MzgyOTIKIAorMjAxNS0xMi0xMCAxMjo0NzoxNyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZkZW11eC5jOgorCSAgbXhmZGVtdXg6IE9ubHkgcHJlLXNldCBwb3NpdGlvbiBmb3IgZXhhY3RseSB0aGUgc2FtZSBlc3NlbmNlIHRyYWNrCisJICBUaGUgZWRpdCByYXRlIGlzIG9ubHkgc3VwcG9zZWQgdG8gYmUgdGhlIHNhbWUgaW4gYSBzb3VyY2UgcGFja2FnZSwgYnV0IHRoZXJlCisJICBtaWdodCBiZSBtdWx0aXBsZSBzb3VyY2UgcGFja2FnZXMgd2l0aCB0aGUgc2FtZSBlc3NlbmNlIGNvbnRhaW5lci4gQXMgc3VjaAorCSAganVzdCBjb21wYXJpbmcgdGhlIGJvZHkvaW5kZXggU0lEIGlzIG5vdCBzdWZmaWNpZW50LgorCisyMDE1LTEyLTEwIDEyOjI1OjU0ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214ZmRlbXV4LmM6CisJICBteGZkZW11eDogT25seSBwcmUtc2V0IHRoZSB0cmFjayBwb3NpdGlvbiBpZiBpdCdzIGZvciB0aGUgc2FtZSBib2R5L2luZGV4IFNJRAorCisyMDE1LTEyLTEwIDE0OjQxOjQ0ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY29udGV4dF9jb2NvYS5tOgorCSAgbGliZ3N0Z2w6IGdzdGdsY29udGV4dF9jb2NvYToga0NHTFBGQVN0ZXJlbyBoYXMgYmVlbiBkZXByZWNhdGVkIGluIDEwLjExCisJICBBbHNvIHNpbmNlIHRoZSB2ZXJzaW9uIHNjaGVtZSBoYXMgY2hhbmdlZCAodG8gaW5jbHVkZSB0aGUgbWljcm8gbnVtYmVyKSBzaW5jZQorCSAgMTAuMTAsIHVzZSB0aGUgTUFDX09TX1hfVkVSU0lPTl8qIG1hY3JvIHRvIGF2b2lkIGNvbmZ1c2lvbi4KKworMjAxNS0xMi0xMCAxMjo0MTowMCArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlcnBvb2wuYzoKKwkgIGdsYnVmZmVycG9vbDogcmVsYXggY2hlY2sgZm9yIG11bHRpcGxlIHRleHR1cmUgdGFyZ2V0cworCSAgT25seSBjb21wbGFpbiBhYm91dCBtdWx0aXBsZSB0ZXh0dXJlIHRhcmdldHMgd2hlbiBfZGlmZmVyZW50XyB0ZXh0dXJlIHRhcmdldHMKKwkgIGFyZSBjb25maWd1cmVkLgorCisyMDE1LTEyLTEwIDEyOjMzOjUyICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmM6CisJICBnbG1lbW9yeTogdGFrZSBzdWJzYW1wbGluZyBpbnRvIGFjY291bnQgZm9yIHJlY3RhbmdsZSB0ZXh0dXJlcworCSAgUmVjdGFuZ2xlIHRleHR1cmVzIGRvbid0IHVzZSBub3JtYWxpemVkIGNvb3JkaW5hdGVzIHNvIHN1YnNhbXBsaW5nIG5lZWRzIHRvIGJlCisJICBmYWN0b3JlZCBpbiBleHBsaWNpdGx5LgorCSAgRml4ZXMgWVVWID0+IFJHQiBjb252ZXJzaW9uIGZvciByZWN0YW5nbGUgdGV4dHVyZXMuCisKKzIwMTUtMTItMDkgMTY6NTU6MDAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmZGVtdXguYzoKKwkgIG14ZmRlbXV4OiBPbmx5IGFjY2VzcyB0aGUgaW5kZXggdGFibGUgaWYgaXQgaGFzIGVub3VnaCBlbGVtZW50cworCisyMDE1LTEyLTA5IDE2OjI4OjUzICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214ZmRlbXV4LmM6CisJICBteGZkZW11eDogVXNlIGtleWZyYW1lIGluZm9ybWF0aW9uIGZyb20gaW5kZXggdGFibGUgc2VnbWVudHMgaWYgYXZhaWxhYmxlCisJICBXZSBkb24ndCBpbXBsZW1lbnQga2V5ZnJhbWUgZGV0ZWN0aW9uIGZvciBhbGwgY29kZWNzIGFuZCB0aGlzIHdpbGwgYWxsb3cgdXMgdG8KKwkgIGltcGxlbWVudCBiZXR0ZXIgc2Vla2luZy4KKworMjAxNS0xMi0wOSAxNjozMToxOSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZkZW11eC5jOgorCSAgbXhmZGVtdXg6IENvbGxlY3QgYWxsIGluZGV4IHRhYmxlIHNlZ21lbnRzIGFmdGVyIGZpbmRpbmcgdGhlIHJhbmRvbSBpbmRleCBwYWNrCisJICBUaGF0IHdheSB3ZSBhbHdheXMgaGF2ZSB0aGUgaW5kZXggdGFibGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlLCBlc3BlY2lhbGx5IHRoZQorCSAga2V5ZnJhbWUtbmVzcyBvZiBhbGwgYnVmZmVycy4KKworMjAxNS0xMi0wOCAxODoxNTo1NSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZkZW11eC5jOgorCSogZ3N0L214Zi9teGZkZW11eC5oOgorCSogZ3N0L214Zi9teGZ0eXBlcy5oOgorCSAgbXhmZGVtdXg6IEZpeCBoYW5kbGluZyBvZiBJbmRleFRhYmxlU2VnbWVudHMKKwkgIFRoaXMgd2FzIGNvbXBsZXRlbHkgYnJva2VuIGJlZm9yZSBhbmQgY291bGQgb25seSB3b3JrIG9uIGEgdmVyeSBjb25zdHJhaW5lZAorCSAgc2V0IG9mIGZpbGVzLiBBZnRlciB0aGVzZSBjaGFuZ2VzIGl0IHNob3VsZCB3b3JrIGV4Y2VwdCBmb3Igc2l0dWF0aW9ucyB3aGVyZQorCSAgUFRTICE9IERUUywgd2hpY2ggaXMgbm90IGhhbmRsZWQgYXQgYWxsIGluIG14ZmRlbXV4IGN1cnJlbnRseS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTkxMTgKKworMjAxNS0xMi0wOCAxNDowNjoyMSAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiBhdm9pZCBwdXNoaW5nIGV2ZW50cyB3aXRoIG1hbmlmZXN0IGxvY2sKKwkgIEl0IGNhbiBiZSBhbiBlYXN5IHNvdXJjZSBvZiBkZWFkbG9ja3MuIFJlcHJvZHVjaWJsZSB3aXRoIHZlcnkKKwkgIGZhc3QgY29ubmVjdGlvbnMgKGxvY2FsIHNlcnZlcikuCisKKzIwMTUtMTItMDggMjA6MjQ6NDUgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmdHlwZXMuYzoKKwkgIG14ZnR5cGVzOiBGaXggcGFyc2luZyBvZiBpbmRleCB0YWJsZSBzZWdtZW50cworCisyMDE1LTEyLTA4IDE4OjIzOjAyICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214Zm11eC5jOgorCSAgbXhmbXV4OiBIYW5kbGUgYWdncmVnYXRpb24gd2l0aCBOVUxMIGJ1ZmZlcnMgd2l0aG91dCBjcmFzaGluZworCisyMDE1LTEyLTA4IDE2OjQ1OjMzICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214Zm11eC5jOgorCSAgbXhmbXV4OiBBZGQgRklYTUUgYWJvdXQgZW5mb3JjaW5nIHRoYXQgYWxsIHRyYWNrcyBpbiBhIHNvdXJjZSBwYWNrYWdlIGhhdmUgdGhlIHNhbWUgZWRpdCByYXRlCisJICBUaGUgc3RhbmRhcmQgcmVxdWlyZXMgdGhpcyBhbmQgYWxzbyB0aGUgaW5kZXggdGFibGUgc2VnbWVudHMgYXJlIG5vdCBnb2luZyB0bworCSAgd29yayBvdGhlcndpc2UuCisKKzIwMTUtMTItMDcgMjA6Mjc6MjMgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJKiBnc3QvbXhmL214Zm11eC5oOgorCSAgbXhmbXV4OiBXcml0ZSBpbmRleCB0YWJsZSBzZWdtZW50cworCSAgQnV0IG9ubHkgZm9yIHRoZSBmaXJzdCBlc3NlbmNlIHRyYWNrLCBhbmQgb25jZSBmb3IgZXZlcnkga2V5ZnJhbWUgZXZlcnkgMgorCSAgc2Vjb25kcy4KKworMjAxNS0xMi0wNyAyMDoyNjoxNyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtZXRhZGF0YS5jOgorCSAgbXhmbWV0YWRhdGE6IEZpeCBzdGF0aWMgbG9jYWwgdGFnIGZvciBpbmRleCBzaWQKKworMjAxNS0xMi0wNyAxOTozNDoyNSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZ0eXBlcy5jOgorCSogZ3N0L214Zi9teGZ0eXBlcy5oOgorCSAgbXhmdHlwZXM6IEFkZCBmdW5jdGlvbiB0byBzZXJpYWxpemUgYW4gaW5kZXggdGFibGUgc2VnbWVudCB0byBhIGJ1ZmZlcgorCisyMDE1LTEyLTA3IDE4OjU5OjM2ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214ZmRlbXV4LmM6CisJKiBnc3QvbXhmL214ZnR5cGVzLmM6CisJKiBnc3QvbXhmL214ZnR5cGVzLmg6CisJICBteGZtdXg6IEluZGV4IHRhYmxlIHNlZ21lbnRzIG11c3Qgbm90IHVzZSB0aGUgcHJpbWVyIHBhY2sKKwkgIEFjY29yZGluZyB0byBTMzc3LTEtMjAwOWMgOS4yIHRoZSBsb2NhbCB0YWdzIG11c3Qgbm90IGJlIHJlc29sdmVkIGZyb20gdGhlCisJICBwcmltZXIgcGFjaywgd2hpY2ggYXMgYSByZXN1bHQgbWVhbnMgdGhhdCB0aGVyZSBjYW4ndCBiZSBhbnkgb3RoZXIgdGFncyB0aGFuCisJICBzdGF0aWNhbGx5IGFzc2lnbmVkIG9uZXMuCisKKzIwMTUtMTItMDcgMTQ6MTA6MzAgKzEwMDAgIER1bmNhbiBQYWxtZXIgPGRwYWxtZXJAZGlnaXNvZnQudHY+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkgIGhsc2RlbXV4OiBhZGQgc3VwcG9ydCBmb3Igc2Vla2luZyB0byBmcmFnbWVudCBib3VuZGFyaWVzCisJICBTZXR0aW5nIHRoZSBzZWVrIGZsYWdzIHRvIEdTVF9TRUVLX0ZMQUdfU05BUF8qIHdpbGwgY2hhbmdlIHRoZSBzZWVrCisJICB0YXJnZXQgdGltZSB0byBhIHNlZ21lbnQgYm91bmRhcnkuCisJICBCYXNlZCBvbiBvcmlnaW5hbCB3b3JrIGJ5IEJlbiBXaWxsZXJzIDxid2lsbGVyc0BkaWdpc29mdC50dj4uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5MTA4CisKKzIwMTUtMTItMDggMDk6NTM6MTEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoOiBGaXggdW5pdCB0ZXN0IGFmdGVyIG1vdmluZyBvZiBmcmFtZXJhdGVzIHRvIFJlcHJlc2VudGF0aW9uQmFzZVR5cGUKKworMjAxNS0xMi0wOCAwOTozMzozOSArMDkwMCAgc3Vod2FuZy5raW0gPHN1aHdhbmcua2ltQGxnZS5jb20+CisKKwkqIGV4dC9kYXNoL2dzdGRhc2hkZW11eC5jOgorCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuaDoKKwkgIGRhc2hkZW11eDogU3VnZ2VzdGlvbiBmb3Igc2V0dGluZyB0aGUgZnJhbWVyYXRlIGluZm9ybWF0aW9uLgorCSAgRGFzaGRlbXV4IGhhcyBzZXQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgaW5mb3JtYXRpb24gZnJvbSBNUEQgbWFuaWZlc3QuCisJICBTb21lIGVtYmVkZGVkIGRldmljZXMgd2hpY2ggYXJlIG5vdCBpbnN1ZmZpY2llbnQgSC9XIHJlc291cmNlcyBuZWVkIG1vcmUgaW5mb3JtYXRpb24gc3VjaCBhcyBmcmFtZXJhdGUKKwkgIHRvIGFzc2lnbiBIL1cgcmVzb3VyY2VzLiBTbyBJIHN1Z2dlc3RlZCB0aGF0IGRhc2hkZW11eCBhbHNvIG5lZWRzIHRvIHNldCB0aGUgZnJhbWVyYXRlIGluZm9ybWF0aW9uIGZyb20gTURQIG1hbmlmZXN0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODUxNQorCisyMDE1LTEyLTA4IDA5OjIzOjIyICswOTAwICBzdWh3YW5nLmtpbSA8c3Vod2FuZy5raW1AbGdlLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuaDoKKwkgIGRhc2hkZW11eDogbWF4RnJhbWVSYXRlICYgbWluRnJhbWVSYXRlIHNob3VsZCBiZSBpbiBSZXByZXNlbnRhdGlvbkJhc2UuCisJICBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHRoZXkgY2FuIGJlIGluIEFkYXB0YXRpb25TZXQsIFJlcHJlc2VudGF0aW9uIGFuZCBTdWJSZXByZXNlbnRhdGlvbi4KKwkgIFNvIFRoZXkgc2hvdWxkIGJlIGluIFJlcHJlc2VudGF0aW9uQmFzZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg1MTUKKworMjAxNS0xMi0wOCAxNjozNTo0NSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL3N5bmMuaDoKKwkgIGdscHJvdG86IGluY2x1ZGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgZm9yIEdMX0FQUExFX3N5bmMKKwkgIFByb3ZpZGVzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgb24gaU9TIHdoZXJlIHdlIHdlcmUgZmFsbGluZyBiYWNrIHRvIGdsRmluaXNoCisJICBvbiBzZXR0dGluZyBzeW5jIHBvaW50cy4KKwogMjAxNS0xMi0wNyAyMDozNDoxMCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KIAogCSogZXh0L29wZW5qcGVnL2dzdG9wZW5qcGVnZW5jLmM6CiAJICBvcGVuanBlZ2VuYzogQWxsIGZyYW1lcyBpbiBKUEVHMjAwMCBhcmUga2V5ZnJhbWVzLCBtYXJrIHRoZW0gYXMgc3VjaAogCisyMDE1LTEyLTA3IDA5OjA4OjE1IC0wNTAwICBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jby51az4KKworCSogYXV0b2dlbi5zaDoKKwkqIGNvbW1vbjoKKwkgIEF1dG9tYXRpYyB1cGRhdGUgb2YgY29tbW9uIHN1Ym1vZHVsZQorCSAgRnJvbSBiMzE5OTA5IHRvIDg2ZTQ2NjMKKworMjAxNS0xMi0wNyAxMzo0ODoxMiArMDEwMCAgRWR3YXJkIEhlcnZleSA8ZWR3YXJkQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtdXguYzoKKwkgIG14Zm11eDogUmVtb3ZlIG1vcmUgZGVhZCBjb2RlCisJICBDb3Zlcml0eSBDSUQgIzEzMjg4MTgKKworMjAxNS0xMi0wNyAxMzozNjoyOSArMDEwMCAgRWR3YXJkIEhlcnZleSA8ZWR3YXJkQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3RlbGV0ZXh0ZGVjL2dzdHRlbGV0ZXh0ZGVjLmM6CisJICB0ZWxldGV4dGRlYzogRml4IGxlYWsgYW5kIE5VTEwgcG9pbnRlciB1c2FnZQorCSAgQ292ZXJpdHkgQ0lEICMxMzQxNzQ0CisKKzIwMTUtMTItMDcgMTE6NTY6MDkgKzAxMDAgIEVkd2FyZCBIZXJ2ZXkgPGVkd2FyZEBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC90ZWxldGV4dGRlYy9nc3R0ZWxldGV4dGRlYy5jOgorCSAgdGVsZXRleHRkZWM6IFJlbW92ZSBkZWFkIGNvZGUKKwkgICsraSBpbiBhIGZvcigpIGxvb3AgcmVzdWx0cyBpbiB0aGUgbG9vcCBuZXZlciBiZWluZyBleGVjdXRlZCBtb3JlIHRoYW4gb25jZQorCSAgQ292ZXJpdHkgQ0lEICMxMzQxNzQ4CisJICBDb3Zlcml0eSBDSUQgIzEzNDE3NDMKKworMjAxNS0wMy0xMiAxMToyOTowMCArMDAwMCAgRnLDqWTDqXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KKworCSogY29uZmlndXJlLmFjOgorCSogc3lzL2FjbWVuYy9hY21lbmMuYzoKKwkqIHN5cy9hY21tcDNkZWMvYWNtbXAzZGVjLmM6CisJICBhY206IFBvcnQgQUNNIE1QMyBkZWNvZGVyIGFuZCBlbmNvZGVycyB0byBHU3RyZWFtZXIgMS54CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MDQ3CisKKzIwMTUtMDktMjQgMTc6NDA6MDIgKzAyMDAgIERhbmllbCBLYW1pbCBLb3phciA8ZGtrMDg5QGdtYWlsLmNvbT4KKworCSogY29uZmlndXJlLmFjOgorCSogZXh0L3RlbGV0ZXh0ZGVjL01ha2VmaWxlLmFtOgorCSogZXh0L3RlbGV0ZXh0ZGVjL2dzdHRlbGV0ZXh0ZGVjLmM6CisJKiBleHQvdGVsZXRleHRkZWMvZ3N0dGVsZXRleHRkZWMuaDoKKwkqIGV4dC90ZWxldGV4dGRlYy90ZWxldGV4dC5jOgorCSAgcG9ydCB0ZWxldGV4dGRlYyB0byAxLjAKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MzM4MTkKKworMjAxNS0xMi0wMiAxODoyODoxNSAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY28udWs+CisKKwkqIGdzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NHBhcnNlLmM6CisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjVwYXJzZS5jOgorCSAgaDI2eHBhcnNlOiBSZXNlbmQgUFBTL1NQUyBhZnRlciBzZWVrCisJICBUaGlzIGlzIHRvIHN1cHBvcnQgYnl0ZS1zdHJlYW0gZGVjb2RlciB0aGF0IGRvZXMgbm90IHJlbWVtYmVyIHRoZQorCSAgUFBTL1NQUyBhZnRlciBhIGZsdXNoLiBUaGlzIGlzIG5vdCBuZWVkZWQgYnkgYWxsIGRlY29kZXJzLCBidXQgaXMKKwkgIGhhcm1sZXNzIGZvciB0aG9zZSB0aGF0IGRvIHJlbWVtYmVyLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODQwNQorCisyMDE1LTEyLTAxIDE4OjA5OjI1IC0wNTAwICBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jOgorCSAgZ2x1cGxvYWQ6IE9ubHkgb2ZmZXIgY3VzdG9tIGFsbG9jYXRvciB3aXRoIGNhcHMgZmVhdHVyZXMKKwkgIFRvIHVzZSBHTE1lbW9yeSBhbmQgRUdMSW1hZ2UgYWxsb2NhdG9ycywgb25lIG5lZWQgdG8ga25vdyB0aGUKKwkgIGxpYmdzdGdsIEFQSS4gVGhpcyBpcyBvbmx5IGV4cGVjdGVkIGlmIHRoZSBhc3NvY2lhdGVkIGNhcHMgZmVhdHVyZXMKKwkgIGhhdmUgYmVlbiBuZWdvdGlhdGVkLiBHZW5lcmljIGVsZW1lbnQgdGhhdCBvdGhlcndpc2UgcmVjZWl2ZSB0aG9zZQorCSAgYWxsb2NhdG9ycyBtYXkgZmFpbCwgcmVzdWx0aW5nIGluIGJyb2tlbiBwaWVsaW5lLiBXZSBkb24ndCB3YW50IHRvCisJICBmb3JjZSBhbGwgZ2VuZXJpYyBlbGVtZW50IHRvIGNoZWNrIGlmIHRoZSBhbGxvY2F0b3IgaXMgYSBjdXN0b20KKwkgIGFsbG9jYXRvciBvciBhIG5vcm1hbCBhbGxvY2F0b3IgKHdoaWNoIGltcGxlbWVudCB0aGUgX2FsbG9jIG1ldGhvZCkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4ODc3CisKKzIwMTUtMTItMDQgMTg6MDU6NTggKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IERvbid0IGNvcHkgaW5wdXQgYnVmZmVycywganVzdCBhcHBlbmQgdGhlbSB0byB0aGUgaGVhZGVyCisKKzIwMTUtMTItMDMgMTE6NDY6MTAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvbTN1OC5jOgorCSAgaGxzZGVtdXg6IFJlc3luYyBsaXZlIHBsYXlsaXN0cyB0byB0aGUgM3JkIG5ld2VzdCBmcmFnbWVudCBpZiB3ZSBmYWxsIG9mZiB0aGUgcGxheWxpc3QKKwkgIEFzIEhMUyBkb2VzIG5vdCBwcm92aWRlIGFueSB3YXkgb2Yga25vd2luZyB0aGUgc2VydmVyJ3MgY2xvY2ssIGFuZCB3ZSBkbworCSAgYnVmZmVyaW5nIG9mICJsaXZlIiBzdHJlYW1zLCBhdCBzb21lIHBvaW50IHdlIHdpbGwgZmFsbCBiZWhpbmQgdGhlIHNlcnZlciBpbgorCSAgbWFueSBjYXNlcyBhbmQgd291bGQgaGF2ZSB0byBhZHZhbmNlIHRvIGEgZnJhZ21lbnQgdGhhdCBpcyBub3QgaW4gdGhlIHBsYXlsaXN0CisJICBhbnltb3JlLgorCSAgUHJldmlvdXNseSB3ZSB3b3VsZCd2ZSBqdXN0IHJlc3luY2VkIHRvIHRoZSBuZXh0IG9sZGVzdCBmcmFnbWVudCB0aGF0IGlzIHN0aWxsCisJICB0aGVyZSwgYnV0IHRoaXMgY2F1c2VzIHByb2JsZW1zIGFzIGZyb20gdGhpcyBwb2ludCBvbndhcmRzIHdlIHdvdWxkIGFsd2F5cworCSAgZmFsbCBvZmYgdGhlIHBsYXlsaXN0IGFnYWluIGFsbCB0aGUgdGltZS4KKwkgIEluc3RlYWQgd2Ugbm93IHJlc3luYyBhbmQgbW92ZSB0byB0aGUgM3JkIG5ld2VzdCBmcmFnbWVudCBsaWtlIHdlIHdvdWxkIGRvCisJICB3aGVuIHN0YXJ0aW5nIHBsYXliYWNrIG9mIGEgbGl2ZSBzdHJlYW0uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4OTg3CisKKzIwMTUtMTItMDMgMTg6MjE6NTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvbTN1OC5jOgorCSAgaGxzOiBtM3U4OiByZW1vdmUgc3VwZXJmbHVvdXMgZ3N0X20zdThfY29weSgpIGltcGxlbWVudGF0aW9uCisJICBObyBuZWVkIHRvIGltcGxlbWVudCBfY29weSgpIHdoZW4gd2UganVzdCBjb3B5IGEgbGlzdCB0aGF0CisJICB3ZSdyZSBmcmVlaW5nIHRocmVlIGxpbmVzIGxhdGVyIGFueXdheS4gSW5zdGVhZCBqdXN0IHN0ZWFsCisJICB0aGUgbmV3IG1haW4gbGlzdC4KKworMjAxNS0xMi0wMyAxMDowODowNSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogTG9nIFBUUyBvZiBidWZmZXJzIHRoYXQgYXJlIHB1c2hlZCBkb3duc3RyZWFtCisKKzIwMTUtMTAtMjAgMDk6NDk6MTYgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGVkd2FyZEBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9tcGVndHNkZW11eC90c2RlbXV4LmM6CisJICB0c2RlbXV4OiBFeHBvc2UgRFZCIFN1YnBpY3R1cmUgYXMgc3VicGljdHVyZXMKKwkgIEZvciBzb21lIHJlYXNvbiB3ZSB3ZXJlIGNvbnNpZGVyaW5nIHRoZW0gYXMgcHJpdmF0ZSBkYXRhLgorCisyMDE1LTEwLTIwIDE3OjIyOjIzICswMjAwICBFZHdhcmQgSGVydmV5IDxlZHdhcmRAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5jOgorCSAgdHNkZW11eDogUHVzaCBHQVAgZXZlbnRzICphZnRlciogZGVhY3RpdmF0aW5nIG9sZCBwcm9ncmFtcworCSAgVGhlIG9yZGVyIGluIHdoaWNoIHByb2dyYW0gc3dpdGNoIG11c3QgaGFwcGVuIGlzOgorCSAgMSkgZHJhaW4gYWxsIGRhdGEgb24gb2xkIHBhZHMgKGJ1dCBkb24ndCBwdXNoIEVPUykKKwkgIDIpIGFkZCBuZXcgcGFkcyAoYnV0IGRvbid0IHB1c2ggYW55IGRhdGEgb24gdGhlbSkKKwkgIDMpIFB1c2ggRU9TIGFuZCByZW1vdmUgb2xkIHBhZHMKKwkgIDQpIFN0YXJ0IHB1c2hpbmcgZGF0YSBvbiBuZXcgcGFkcworCSAgVGhlcmUgd2FzIG9uZSBjYXZlYXQgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgdGhhdCB3aGVuCisJICB3ZSBhY3RpdmF0ZSBhIHNwYXJzZSBwYWQgKHN0ZXAgMikgd2Ugd291bGQgcHVzaCBhIEdBUCBldmVudC4gVGhlIHByb2JsZW0KKwkgIGlzIHRoYXQsIHdoaWxlIGJlaW5nIGFuIGV2ZW50LCBpdCBpcyBhY3R1YWxseSAqZGF0YSouCisJICBXZSB0aGVyZWZvcmUgbmVlZCB0byBtYWtlIHN1cmUgcHVzaGluZyB0aG9zZSBHQVAgZXZlbnQgaXMgZG9uZSBhdCB0aGUgc3RlcAorCSAgd2Ugc3RhcnQgcHVzaGluZyBkYXRhLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDQwMgorCisyMDE1LTA5LTE1IDE4OjIwOjM4ICswMjAwICBFZHdhcmQgSGVydmV5IDxlZHdhcmRAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5jOgorCSAgdHNkZW11eDogTWFrZSBzdXJlIG9sZCBzdHJlYW1zIGFyZSBkcmFpbmVkIGJlZm9yZSBzd2l0Y2hpbmcKKwkgIEJlZm9yZSB3ZSBhZGQgYW55IHN0cmVhbXMsIG1ha2Ugc3VyZSB3ZSBkcmFpbiBhbGwgc3RyZWFtcy4gVGhpcyBlbnN1cmVzCisJICB0aGVyZSdzIGNvbnNpc3RlbmN5IHRoYXQgb25seSAibmV3IiBkYXRhIHdpbGwgYmUgcHVzaGVkIG9uIGJ1ZmZlcnMgb25jZQorCSAgdGhlIG5ldyBwYWRzIGFyZSBhZGRlZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDQwMgorCisyMDE1LTA5LTEwIDE0OjU1OjA1ICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jOgorCSogZ3N0L21wZWd0c2RlbXV4L21wZWd0c2Jhc2UuaDoKKwkqIGdzdC9tcGVndHNkZW11eC90c2RlbXV4LmM6CisJKiBnc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5oOgorCSAgbXBlZ3RzZGVtdXg6IEFsbG93IGRlYWN0aXZhdGlvbiBvZiBwcm9ncmFtcyB0byBiZSBkZWxheWVkCisJICBXaGVuIGNoYW5naW5nIHByb2dyYW1zLCB0aGUgb3JkZXIgb2YgZXZlbnRzIG5lZWRzIHRvIGJlIHRoZSBmb2xsb3dpbmc6CisJICAqIGFkZCBwYWRzIGZyb20gbmV3IHByb2dyYW0KKwkgICogc2VuZCBFT1Mgb24gb2xkIHBhZHMKKwkgICogcmVtb3ZlIG9sZCBwYWRzCisJICAqIGVtaXQgJ25vLW1vcmUtcGFkcycKKwkgIFByZXZpb3VzbHkgdHNkZW11eCB3YXMgbm90IGRvaW5nIHRoYXQsIGFuZCB3YXMgZmlyc3QgZGVhY3RpdmF0aW5nIGFuZAorCSAgcmVtb3Zpbmcgb2xkIHBhZHMgYmVmb3JlIGFkZGluZyBuZXcgb25lcy4KKwkgIFdlIGZpeCB0aGlzIGJ5IGFsbG93aW5nIHN1YmNsYXNzZXMgb2YgbXBlZ3RzYmFzZSB0byBiZSBhYmxlIHRvIGhhbmRsZQorCSAgdGhlbXNlbHZlcyB0aGUgZGVhY3RpdmF0aW9uIG9mIHByb2dyYW1zLiBJbiB0aGlzIGNhc2UgdHNkZW11eCB3aWxsCisJICBwcm9wZXJseSBkZWFjdGl2YXRlIGl0IG9uY2UgaXQgaGFzIGFjdGl2YXRlZCB0aGUgbmV3IHByb2dyYW0uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNDAyCisKKzIwMTUtMTItMDIgMTE6MDE6NTMgKzAxMDAgIE1hcm/FoSBPbmRyw6HFoWVrIDxteDNsZGV2QGdtYWlsLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IHVwZGF0ZSBjdXJyZW50IHZhcmlhbnQgaWYgY29ubmVjdGlvbiBzcGVlZCBpcyBzZXQKKwkgIElmIGNvbm5lY3Rpb24gc3BlZWQgaXMgc2V0LCBwbGF5bGlzdCBhY2NvcmRpbmcKKwkgIHRvIGNvbm5lY3Rpb24gc3BlZWQgaXMgc2VsZWN0ZWQgYXMgY3VycmVudCBwbGF5bGlzdC4KKwkgIFByb2JsZW0gaXMgdGhhdCB0aGUgY3VycmVudCB2YXJpYW50IG9mIG1haW4gcGxheWxpc3Qgc3RpbGwKKwkgIHBvaW50cyB0byBwcmV2aW91c2x5IHNldCB2YXJpYW50LgorCSAgSWYgcHJldmlvdXNseSBzZXQgdmFyaWFudCBkb2Vzbid0IGNvcnJlc3BvbmQgdG8gY3VycmVudAorCSAgcGxheWxpc3QsIHRoZW4gaXQgY2F1c2VzIHVubmVjZXNzYXJ5IGNoYW5nZSBvZiBwbGF5bGlzdAorCSAgdG8gdGhlIHNhbWUgcGxheWxpc3QgYWZ0ZXIgZmlyc3QgZnJhZ21lbnQgaXMgZG93bmxvYWRlZCwKKwkgIGJlY2F1c2Ugb2Ygbm90IHVwZGF0ZWQgY3VycmVudCB2YXJpYW50LgorCSAgVG8gZml4IHRoaXMsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgY3VycmVudCB2YXJpYW50CisJICBvZiBtYWluIHBsYXlsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IHBsYXlsaXN0CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4OTQ2CisKKzIwMTUtMTItMDIgMTQ6MzU6MjIgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmM6CisJICB2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWw6IEZpeCBjb21waWxhdGlvbiBvZiBzdGF0aWMgcGx1Z2luIGFuZCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzCisJICBVc2UgR19HU0laRV9GT1JNQVQgZm9yIGdzaXplIGluc3RlYWQgb2YgJWxkIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGUgcGx1Z2luIG5hbWUKKwkgIGlzIGEgdmFsaWQgQyBpZGVudGlmaWVyLCBpLmUuIGNvbnRhaW5zIG5vIHNwYWNlcyBvciBkYXNoZXMuCisKKzIwMTUtMTItMDIgMjI6NDI6MzkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogaW1wcm92ZSB0aGUgWVVZMi9VWVZZLT5SR0JBIGNvbnZlcnNpb24gc2hhZGVyCisJICBEb24ndCBvZmZzZXQgdGhlIHktYXhpcy4gIFdlIG9ubHkgbmVlZCB0byBvZmZzZXQgb24gdGhlIHgtYXhpcy4KKwkgIFJlbW92ZXMgYSBzYXd0b290aCBwYXR0ZXJuIG9uIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGVkZ2VzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTQ4NgorCisyMDE1LTEyLTAyIDIyOjQwOjA2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jOgorCSAgZ2xjb2xvcmNvbnZlcnQ6IGltcHJvdmUgUkdCQS0+WVVZMi9VWVZZIGNvbnZlcnNpb24gc2hhZGVyCisJICBXZSBzaG91bGQgb25seSBhdmVyYWdlIHRoZSBjaHJvbWEgc2FtcGxlcyBub3QgdGhlIGx1bWEgc2FtcGxlLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODkwNAorCisyMDE1LTExLTExIDAzOjU1OjI3ICsxMTAwICBKYW4gU2NobWlkdCA8amFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IFRlbGwgdGhlIGJhc2UgY2xhc3MgdGhlIGZyYWdtZW50IGR1cmF0aW9uCisJICBhZGFwdGl2ZWRlbXV4IHVzZXMgdGhlIGZyYWdtZW50IGR1cmF0aW9uIGFzIGEgZGVsYXkKKwkgIGluIHNvbWUgY2FzZXMsIHNvIG1ha2Ugc3VyZSB0byBzZXQgaXQuCisKKzIwMTUtMTEtMTEgMDM6NTQ6NTEgKzExMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4Lmg6CisJICBhZGFwdGl2ZWRlbXV4OiBTZW5kIHRoZSBiaXRyYXRlIG9mIHRoZSBzdHJlYW0gYXMgYSB0YWcKKwkgIElmIHdlIGtub3cgb3IgY2FuIG1lYXN1cmUgdGhlIG5vbWluYWwgYml0cmF0ZSBvZiBhIHN0cmVhbSwKKwkgIHNlbmQgdGhhdCBpbmZvIGFzIGEgdGFnIGRvd25zdHJlYW0KKworMjAxNS0xMS0wOCAwMTozNDozMCArMTEwMCAgSmFuIFNjaG1pZHQgPGphbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkgIGhsc2RlbXV4OiBXaGVuIHN3aXRjaGluZyBiaXRyYXRlIHZhcmlhbnRzLCBkb24ndCBqdW1wIGJhY2sKKwkgIERvbid0IGp1bXAgYmFja3dhcmQgdG8gMyBmaWxlcyBmcm9tIHRoZSBlbmQgb2YgdGhlIHBsYXlsaXN0CisJICB3aGVuIHN3aXRjaGluZyB2YXJpYW50cyAtIGl0IGp1c3QgbWVhbnMgd2UgZG93bmxvYWRlZAorCSAgZnJhZ21lbnRzIGZhc3QgYW5kIGNhdWdodCB1cCB0byB0aGUgZW5kIG9mIHRoZSBwbGF5bGlzdC4KKwkgIERpc2FibGUgdGhhdCBieSB0cmVhdGluZyBhIHZhcmlhbnQgc3dpdGNoIGFzIGEgcGxheWxpc3QKKwkgIHVwZGF0ZSwgbm90IGEgcmVzdGFydCBkdWUgdG8gYSBzZWVrIG9yIHNvLgorCisyMDE1LTA0LTIxIDIxOjA5OjE5ICswMzAwICBWaXZpYSBOaWtvbGFpZG91IDx2aXZpYUB0b29sc29uYWlyLmNvbT4KKworCSogY29uZmlndXJlLmFjOgorCSogZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC9NYWtlZmlsZS5hbToKKwkqIGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmM6CisJKiBnc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL2dzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5oOgorCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYzoKKwkgIGFsZXZlbDogTmV3IGF1ZGlvL3ZpZGVvIGxldmVsIGVsZW1lbnQKKwkgIFRoZSB2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwgZWxlbWVudCBhY3RzIGxpa2UgYSBzeW5jaHJvbml6ZWQgYXVkaW8vdmlkZW8gImxldmVsIgorCSAgZWxlbWVudC4gRm9yIGVhY2ggdmlkZW8gZnJhbWUsIGl0IHBvc3RzIGEgbGV2ZWwtc3R5bGUgbWVzc2FnZSBjb250YWluaW5nIHRoZQorCSAgUk1TIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGF1ZGlvIGZyYW1lcy4gVGhpcyBlbGVtZW50IG5lZWRzIGJvdGggdmlkZW8gYW5kCisJICBhdWRpbyB0byBwYXNzIHRocm91Z2ggaXQuIEZ1cnRoZXJtb3JlLCBpdCBuZWVkcyBhIHF1ZXVlIGFmdGVyIGl0cyB2aWRlbworCSAgc291cmNlLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODI1OQorCisyMDE1LTEyLTAxIDIzOjIwOjQ1IC0wODAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW06CisJICBEcm9wIHVzYWdlIG9mIGRlcHJlY2F0ZWQgZy1pci1zY2FubmVyIC0tc3RyaXAtcHJlZml4IGZsYWcKKworMjAxNS0xMS0xMCAxNjoxOTozNCArMDAwMCAgQWxleCBBc2hsZXkgPGJ1Z3ppbGxhQGFzaGxleS1mYW1pbHkubmV0PgorCisJKiBleHQvaGxzL20zdTguYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2hsc2RlbXV4X20zdTguYzoKKwkgIGhsc2RlbXV4OiBjb3JyZWN0IHRoZSBjYWxjdWxhdGlvbiBvZiBzZWVrIHJhbmdlIG9mIG5vbi1saXZlIHN0cmVhbXMKKwkgIFRoZSBzZWVrIHJhbmdlIGNhbGN1bGF0aW9uIGZvciBvbi1kZW1hbmQgc3RyZWFtcyB3YXMgaW5jb3JyZWN0bHkKKwkgIGV4Y2x1ZGluZyB0aGUgbGFzdCB0aHJlZSBzZWdtZW50cyBvZiB0aGUgc3RyZWFtLiBUaGlzIHRocmVlIHNlZ21lbnQKKwkgIHJ1bGUgc2hvdWxkIG9ubHkgYmUgYXBwbGllZCB0byBsaXZlIHN0cmVhbXMgWzFdLgorCSAgWzFdIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1wYW50b3MtaHR0cC1saXZlLXN0cmVhbWluZy0xNyNzZWN0aW9uLTYuMy4zCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4Mzg2CisKIDIwMTUtMTItMDEgMTc6NTI6MDMgKzAwMDAgIFBhb2xvIFBldHRpbmF0byA8cHBldHRpbmFAY2lzY28uY29tPgogCiAJKiBnc3QvcGNhcHBhcnNlL2dzdHBjYXBwYXJzZS5jOgogCSAgcGNhcHBhcnNlOiBGb3J3YXJkIEZMVVNIX1NUT1AgZXZlbnRzIGRvd25zdHJlYW0gdG9vCiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4OTEzCiAKKzIwMTUtMTEtMjkgMDE6MDI6MTUgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGhsc2RlbXV4OiBmaXggY3Jhc2ggd2hlbiBkZWNyeXB0aW9uIGtleSBjYW4ndCBiZSBkb3dubG9hZGVkCisJICBIYXBwZW5lZCB3aXRoCisJICBodHRwOi8vc3NsaGxzLm02dHYuY2RuLnNmci5uZXQvaGxzLWxpdmUvbGl2ZXBrZ3IvX2RlZmluc3RfL202X2hsc19hZXMvbTZfaGxzX2Flc184NTYubTN1OAorCSAgaWYgZ2xpYi1uZXR3b3JraW5nIHdhcyBub3QgaW5zdGFsbGVkIChzaW5jZSBrZXkgaGFzIGh0dHBzIHVyaSkuCisKKzIwMTUtMTEtMzAgMTE6MDU6MzggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkqIGV4dC9obHMvbTN1OC5jOgorCSogZXh0L2hscy9tM3U4Lmg6CisJICBobHM6IG0zdTg6IHJlbW92ZSBwb2ludGxlc3MgY2xpZW50X2hhc19tYWluKCkgZnVuY3Rpb24KKwkgIFdlIGFsd2F5cyBoYXZlIGEgbWFpbiBsaXN0LgorCisyMDE1LTExLTI4IDAwOjEyOjA0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvaGxzL20zdTguYzoKKwkqIGV4dC9obHMvbTN1OC5oOgorCSAgaGxzOiBtM3U4OiByZW1vdmUgdW51c2VkIF9nZXRfY3VycmVudF9mcmFnbWVudF9kdXJhdGlvbigpIGZ1bmN0aW9uCisKKzIwMTUtMTEtMjcgMTk6MjE6MjIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvbTN1OC5jOgorCSogZXh0L2hscy9tM3U4Lmg6CisJICBobHM6IG0zdTg6IHJlbW92ZSB1bnVzZWQgbTN1OCBjbGllbnQgdXBkYXRlX2ZhaWxlZF9jb3VudCBmaWVsZAorCisyMDE1LTExLTE1IDE3OjMxOjA1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvaGxzL20zdTguYzoKKwkqIGV4dC9obHMvbTN1OC5oOgorCSAgaGxzOiBtM3U4OiByZW1vdmUgaGVscGVyIHZhciB0aGF0J3Mgb25seSB1c2VkIGR1cmluZyBwYXJzaW5nIGZyb20gc3RydWN0dXJlCisJICBKdXN0IGtlZXAgdGhhdCBsb2NhbCB0byB0aGUgcGFyc2luZyBmdW5jdGlvbi4KKworMjAxNS0xMS0wMSAxMzoyMTo0NSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogTWFrZWZpbGUuYW06CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZnJhZ21lbnRlZC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taGxzLnhtbDoKKwkqIGV4dC9obHMvTWFrZWZpbGUuYW06CisJKiBleHQvaGxzL2dzdGZyYWdtZW50ZWQuaDoKKwkqIGV4dC9obHMvZ3N0ZnJhZ21lbnRlZHBsdWdpbi5jOgorCSogZXh0L2hscy9nc3RobHMuaDoKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguaDoKKwkqIGV4dC9obHMvZ3N0aGxzcGx1Z2luLmM6CisJKiBleHQvaGxzL2dzdG0zdThwbGF5bGlzdC5jOgorCSogZXh0L2hscy9tM3U4LmM6CisJKiBnc3QtcGx1Z2lucy1iYWQuc3BlYy5pbjoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2hsc2RlbXV4X20zdTguYzoKKwkgIGhsczogcmVuYW1lIHBsdWdpbiBmcm9tIGZyYWdtZW50ZWQgdG8gaGxzCisKKzIwMTUtMTItMDEgMTk6NDQ6MzYgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkgIGhsc2RlbXV4OiBBbHdheXMgZ2l2ZSB0aW1lc3RhbXBzIGlmIHdlJ3JlIGRpc2NvbnQgYW5kIGRvbid0IG1hcmsgc3RyZWFtIGRpc2NvbnQgaWYgYSBwbGF5bGlzdCBjaGFuZ2Ugd2FzIG5vdCBzdWNjZXNzZnVsCisJICBJZiB0aGUgc3RyZWFtIGlzIGRpc2NvbnQsIHdlIG11c3QgcHJvdmlkZSBhIHRpbWVzdGFtcCBpbiBhbnkgY2FzZS4gRWxlbWVudHMKKwkgIGxpa2UgdHNkZW11eCBhcmUgbm90IGdvaW5nIHRvIG91dHB1dCBhbnl0aGluZyBpZiB3ZSBnaXZlIGEgTk9ORSB0aW1lc3RhbXAKKwkgIGFmdGVyIGEgZGlzY29udC4KKwkgIEFsc28gbWFya2luZyBhIHN0cmVhbSBhcyBkaXNjb250IGlmIGEgcGxheWxpc3QgY2hhbmdlIHdhcyBub3Qgc3VjY2Vzc2Z1bCB3b3VsZAorCSAgbGVhZCB0byB0aGUgYWJvdmUgc2l0dWF0aW9uLCBidXQgaW4gdGhhdCBjYXNlIHdlIGFyZSBub3QgcmVxdWlyZWQgYXQgYWxsIHRvCisJICBtYXJrIHRoZSBzdHJlYW0gZGlzY29udCBhcyB3ZSdyZSBzdGlsbCBhdCB0aGUgb2xkIHBsYXlsaXN0LgorCisyMDE1LTEyLTAxIDE3OjA2OjMzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4c3RyZWFtLmM6CisJICB0c211eDogZml4IHdyb25nIGxvZyBtZXNzYWdlIGxldmVsCisJICBFUlJPUiBsZXZlbCBpcyBkZWJ1Z2dpbmcgbGVmdC1vdmVyLgorCisyMDE1LTExLTA5IDE2OjA4OjMwICswOTAwICBIeXVuanVuIEtvIDx6em9vbi5rb0BzYW1zdW5nLmNvbT4KKworCSogdGVzdHMvY2hlY2svbGlicy9hZ2dyZWdhdG9yLmM6CisJICB0ZXN0czphZ2dyZWdhdG9yOiBmaXggdGMgZmFpbHVyZSBhbmQgY29ycmVjdCBjaGVjayB2YWx1ZQorCSAgRmFpbHVyZSBieSB0aGlzIGNvbW1pdCAyZGZhNTQ4ZjM2NDU4NDQwODJjM2RiNjVkOTZkODcyNTU3MDFiM2FkLCB3aGljaCBpcworCSAgdG8gYXBwZW5kIGhvb2tzIGluc3RlYWQgb2YgcHJlcGVuZC4KKwkgIEJlY2F1c2Ugb2YgdGhpcyBjaGFuZ2UsIGFnZ3JldGF0ZWRfY2IgaXMgbm90IGNhbGxlZCBhbmQgbGVhZHMgdG8gZmFpbHVyZS4KKwkgIEFuZCBjb3JyZWN0IHRvIGNoZWNrIGZsdXNoIHN0b3AgdmFsdWUgaW5zdGVhZCBvZiBmbHVzaCBzdGFydCB2YWx1ZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzgwMQorCiAyMDE1LTExLTMwIDE5OjUzOjI4ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgogCiAJKiBzeXMvZDNkdmlkZW9zaW5rL2QzZGhlbHBlcnMuYzoKQEAgLTI0OSw2ICs2ODQxLDE0NyBAQAogCSAgdmlzaWJsZSBhZ2FpbiBiZWZvcmUgY2hlY2tpbmcgaWYgdGhlIHN3YXBjaGFpbiByZWFsbHkgaGFzIHRvIGJlIHJlY3JlYXRlZC4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDE2MDgKIAorMjAxNS0xMS0yNyAxODo0Njo1NiArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmM6CisJICBvcHVzcGFyc2U6IHJlbW92ZSB1bm5lZWRlZCBzdGF0ZW1lbnQKKwkgIGNvbW1pdCBkYTVjNDE5MzBjNDA4Mzk3OWIxNzQ1ZjRkODg0OGQ5N2ZlMDNkOGViIHJlbW92ZWQgdGhlIHR3byB1c2VzIG9mIHRoZQorCSAgbmV3IHZhbHVlIG9mIGRhdGE6CisJICBjaGFubmVscyA9IG9wdXNfcGFja2V0X2dldF9uYl9jaGFubmVscyAoZGF0YSk7CisJICBiYW5kd2lkdGggPSBvcHVzX3BhY2tldF9nZXRfYmFuZHdpZHRoIChkYXRhKTsKKwkgIFNpbmNlIHRoZW4sIGRhdGEgaXNuJ3QgYmVpbmcgdXNlZCBiZXR3ZWVuIGluY3JlbWVudGluZyBpdCBieSBwYWNrZXRfb2Zmc2V0CisJICBhbmQgZ29pbmcgb3V0IG9mIHNjb3BlLiBSZW1vdmluZyB0aGlzIHVuZWVkZWQgc3RhdGVtZW50LgorCisyMDE1LTExLTI3IDEyOjQ0OjU3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9pZDNtdXguYzoKKwkgIHRlc3RzOiBpZDNtdXg6IGFkZCB1bml0IHRlc3QgZm9yIEdTVF9UQUdfUFJJVkFURV9EQVRBIHdyaXRpbmcKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg3MjgKKworMjAxNS0xMS0yNyAxMTozMzowNyArMDUzMCAgUmF2aSBLaXJhbiBLIE4gPHJhdmkua2lyYW5Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC9pZDN0YWcvaWQzdGFnLmM6CisJICBpZDNtdXg6IHdyaXRlIHByaXZhdGUgZGF0YSB0YWcKKwkgIEhhbmRsZSAiUFJJViIgdGFnIGluIGlkM211eC4gV3JpdGUgb3duZXIKKwkgIGlkZW50aWZpZXIgYW5kIHByaXZhdGUgZGF0YSBhbmQgYWRkIHRvIHRoZQorCSAgaWQzdjIgZnJhbWUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4NzI4CisKKzIwMTUtMTEtMjYgMTA6MTU6MzYgKzAxMDAgIE1hdGhpYXMgSGFzc2VsbWFubiA8bWF0aGlhcy5oYXNzZWxtYW5uQGtkYWIuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBhbmRyb2lkbWVkaWE6IERvbid0IGFkZCBtZXRhZGF0YSB0byBsb2NrZWQgYnVmZmVyCisJICBUaGUgdmlkZW8gZGVjb2RlcnMgdHJpZWQgY2FsbGluZyBnc3RfYnVmZmVyX2FkZF8qbWV0YSgpIG9uIG5vbi13cml0YWJsZQorCSAgYnVmZmVyIHJlc3VsdGluZyBpbiB3YXJuaW5ncyBvZiB0aGlzIGtpbmQ6CisJICBnc3RhbWN2aWRlb2RlYy5jOjkyMSAoX2dsX3N5bmNfcmVuZGVyX3VubG9ja2VkKTogV0FSTklORzogYW1jdmlkZW9kZWMKKwkgIEZhaWxlZCB0byBjcmVhdGUgdGhlIHRyYW5zZm9ybWF0aW9uIG1ldGEgZm9yIHRoZSBnbF9zeW5jIDB4YWJjMDM4NDgKKwkgIGJ1ZmZlciAweGFiYjAxYjQwICgwKQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODY5NAorCisyMDE1LTExLTA5IDE4OjA3OjMwICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogdGVzdHM6IGRpc2FibGVkIHRlc3RGcmFnbWVudERvd25sb2FkRXJyb3IgdGVzdAorCSAgVW50aWwgd2Ugd2lsbCBoYXZlIHN1cHBvcnQgdG8gY29udHJvbCB0aGUgZ2VuZXJhdGluZyB0aHJlYWQgZnJvbQorCSAgZmFrZUhUVFBzcmMgZWxlbWVudCwgdGhlIHRlc3QgdGVzdEZyYWdtZW50RG93bmxvYWRFcnJvciBpcyBkaXNhYmxlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc3NzYKKworMjAxNS0xMS0wOSAxNDoxNDozNCArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHRlc3RzOiBjb3JyZWN0ZWQgYWNjZXNzIHRvIGZha2VIVFRQc3JjIGVsZW1lbnQKKwkgIFRoZSBzcmMgZWxlbWVudCBmb3IgYWRhcHRpdmVkZW11eCBpcyBub3cgYSBiaW4uIFVwZGF0ZWQgdGhlIHRlc3RzIHRvCisJICBjb3JyZWN0bHkgcmVhY2ggaW50byB0aGUgYmluIGFuZCBnZXQgdGhlIGZha2VIVFRQc3JjIGVsZW1lbnQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc3NzYKKworMjAxNS0xMS0wOSAxNDoxMzowNCArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zha2VfaHR0cF9zcmMuYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHRlc3RzOiBtYWRlIGZha2VIVFRQc3JjIGVsZW1lbnQgTVQgc2FmZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzc3NgorCisyMDE1LTExLTIzIDExOjMyOjEzICswOTAwICBWaW5lZXRoIFQgTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6CisJICBzcHUtcGdzOiBGaXggYXJyYXkgbWVtb3J5IGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg1MTcKKworMjAxNS0xMS0yNCAwMDoyMDozNiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9hZ2dyZWdhdG9yLmM6CisJICBhdWRpb21peGVyOiByZWdpc3RlciBmdW5jdGlvbiBuYW1lIGZvciBkZWJ1Z2dpbmcganVzdCBvbmNlCisJICBOb3QgZXZlcnkgdGltZSBhZ2dyZWdhdGUgaXMgY2FsbGVkLi4uCisKKzIwMTUtMTEtMjQgMTI6NDI6NDUgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5oOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIG1wZHBhcnNlcjogcmVtb3ZlIGdzdF9tcGRfY2xpZW50X2NoZWNrX3RpbWVfcG9zaXRpb24KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg1OTMKKworMjAxNS0xMS0yNCAxMTo1MDo1MSArMDEwMCAgTWFyb8WhIE9uZHLDocWhZWsgPG14M2xkZXZAZ21haWwuY29tPgorCisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmM6CisJICBtc3NkZW11eDogYWRkIGRlcHRoIGZpZWxkIHRvIGF1ZGlvIGNhcHMgaWYgYXZhaWxhYmxlCisJICBkZXB0aCBmaWVsZCBjYW4gYmUgcmV0cmlldmVkIGZyb20gIkJpdHNQZXJTYW1wbGUiIG9yCisJICBmcm9tICJXYXZlRm9ybWF0RXgiIHN0cnVjdHVyZSwgaWYgcHJvdmlkZWQgaW4gTWFuaWZlc3QKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg1ODYKKworMjAxNS0xMS0yMCAxNjozNTo0MyArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBtcGRwYXJzZXI6IHRlc3RzOiBhZGRlZCB0ZXN0IGZvciBmcmFjdGlvbiBvZiBzZWNvbmRzIGluIGF2YWlsYWJpbGl0eVN0YXJ0VGltZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODQxMAorCisyMDE1LTExLTIwIDE2OjM2OjAwICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJICBtcGRwYXJzZXI6IGFkZGVkIHN1cHBvcnQgZm9yIHBhcnNpbmcgZnJhY3Rpb24gb2Ygc2Vjb25kcyBpbiBkYXRlVGltZSBmaWVsZHMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg0MTAKKworMjAxNS0xMS0yMiAxMzoxMTo0OCArMDEwMCAgR2VvcmdlIEtpYWdpYWRha2lzIDxnZW9yZ2Uua2lhZ2lhZGFraXNAY29sbGFib3JhLmNvbT4KKworCSogdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvTWFrZWZpbGUuYW06CisJICB0ZXN0czogcHV0IHRoZSB3YXlsYW5kc2luayBleGFtcGxlIHdpbmRvdy51aSBmaWxlIGluIEVYVFJBX0RJU1QKKworMjAxNS0xMS0yMiAxMzowODozNSArMDEwMCAgR2VvcmdlIEtpYWdpYWRha2lzIDxnZW9yZ2Uua2lhZ2lhZGFraXNAY29sbGFib3JhLmNvbT4KKworCSogdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvTWFrZWZpbGUuYW06CisJICB0ZXN0czogZml4IGxpbmtpbmcgd2F5bGFuZHNpbmsgZXhhbXBsZSB3aXRoIHRoZSBnc3R3YXlsYW5kIGxpYnJhcnkKKwkgIEZpcnN0LCB1c2UgdG9wX2J1aWxkZGlyLCBvdGhlcndpc2UgaXQgZmFpbHMgaW4gb3V0LW9mLXNvdXJjZSBidWlsZHMuCisJICBTZWNvbmQsIGxpbmsgdG8gdGhlIGxpYnRvb2wgYXJjaGl2ZSBkaXJlY3RseSB0byBsZXQgbWFrZSB1bmRlcnN0YW5kCisJICB0aGUgZGVwZW5kZW5jeS4KKworMjAxNS0xMS0yMCAyMDo1OToxNiAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIGRhc2hkZW11eDogYWx3YXlzIHNldCBwcmVzZW50YXRpb25UaW1lT2Zmc2V0CisJICBTZXQgaXQgZm9yIGFsbCB0eXBlcyBvZiBzZWdtZW50IGxpc3RzICh0ZW1wbGF0ZXMgLyBsaXN0cyAvIGJhc2UpCisJICBhbmQgbm90IG9ubHkgZm9yIHRlbXBsYXRlcy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTE1MjkKKworMjAxNS0xMS0yMCAxNzo1MDozMCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtdXguYzoKKwkgIG14Zm11eDogRXJyb3Igb3V0IGlmIHdlIGdldCBhIHRpbWVvdXQgZHVyaW5nIGxpdmUgbWl4aW5nCisJICBXZSBjYW4ndCBoYW5kbGUgdGhhdCBidXQgbmVlZCBjb21wbGV0ZSBzdHJlYW1zIHdpdGhvdXQgZ2Fwcy4KKworMjAxNS0xMS0yMCAxNzo0Njo1MyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtcGVnLmM6CisJICBteGZtcGVnOiBVc2UgdGhlIGNvcnJlY3Qgc291bmQgZXNzZW5jZSBjb21wcmVzc2lvbiBVTCBmb3IgTVAzCisJICBUaGVyZSdzIG9uZSBmb3IgTVBFRyAxIExheWVyIDEgYW5kIG9uZSBmb3IgTGF5ZXIgMiBhbmQgMy4gV2UgcHJldmlvdXNseQorCSAgaGFkIHRoZSBzZWNvbmQgZm9yIExheWVyIDEgYW5kIDIgYW5kIG5vdGhpbmcgZm9yIExheWVyIDMsIHdoaWNoIHdhcyB3cm9uZy4KKworMjAxNS0xMS0yMCAxNzozNDoyMiArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtcGVnLmM6CisJICBteGZtcGVnOiBTZXQgdGhlIGVzc2VuY2UgY29udGFpbmVyIFVMIGJ5dGUgMTMgdG8gMHgxMCBmb3IgaDI2NAorCSAgMHgwNCBzaWduaWZpZXMgYSBNUEVHIGVsZW1lbnRhcnkgc3RyZWFtIGJ1dCBhY2NvcmRpbmcgdG8gUlAyMDA4LCAweDEwIHNob3VsZAorCSAgYmUgdXNlZCBmb3IgYSBoMjY0IGJ5dGUtc3RyZWFtLiBUaGlzIGFsc28gZml4ZXMgY29tcGF0aWJpbGl0eSBvZiBvdXIgZmlsZXMKKwkgIHdpdGggZmZtcGVnLgorCiAyMDE1LTExLTIwIDExOjE4OjQzICsxMTAwICBSb21hbiBOb3dpY2tpIDxybm93aWNraUBzaW1zLnBsPgogCiAJKiBleHQvcXQvcXRpdGVtLmNjOgpAQCAtMjcyLDEyICs3MDA1LDQ1OSBAQAogCSAgbm90aWZpY2F0aW9uLiAgSW5pdGlhbGl6ZSBvdXJzZWxmIGluIHRoaXMgY2FzZS4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgzMzcKIAorMjAxNS0wNy0yOSAyMjozMTozMCArMDkwMCAgSmltbXkgT2huIDx5b25namluLm9obkBsZ2UuY29tPgorCisJKiBleHQvZGFzaC9nc3RkYXNoZGVtdXguYzoKKwkgIGRhc2hkZW11eDogQWRkIGJpbmFyeSBzZWFyY2ggZm9yIHN0cmVhbV9zaWR4X3NlZWsKKwkgIEFkZCBiaW5hcnkgc2VhcmNoIHRvIG9wdGltaXplIGluIHN0cmVhbV9zaWR4X3NlZWsuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NjUzCisKKzIwMTUtMTEtMTkgMTU6NTk6NTYgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5oOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIG1wZHBhcnNlcjogcmVtb3ZlIHVudXNlZCBmdW5jdGlvbnMgZ3N0X21wZHBhcnNlcl9nZXRfY2h1bmtfYnlfaW5kZXggYW5kIGdzdF9tcGRwYXJzZXJfZmluZF9zZWdtZW50X2J5X2luZGV4CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MjMzCisKKzIwMTUtMTEtMTkgMTc6MjQ6NTMgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9tcGVnMmVuYy9nc3RtcGVnMmVuYy5jYzoKKwkqIGV4dC9vcGVuY3YvZ3N0ZWRnZWRldGVjdC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jcHA6CisJKiBnc3QvZGF0YXVyaXNyYy9nc3RkYXRhdXJpc3JjLmM6CisJKiBnc3QvbXZlL2dzdG12ZW11eC5jOgorCSogZ3N0L3BjYXBwYXJzZS9nc3RpcnRzcHBhcnNlLmM6CisJKiBnc3QvcGNhcHBhcnNlL2dzdHBjYXBwYXJzZS5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGF0YXVyaXNyYy5jOgorCSAgZG9jczogdXBkYXRlIGdzdC1sYXVuY2gtMC4xMCBsaW5lcworCSAgVXBkYXRlIHJlZmVyZW5jZXMgdG8gZ3N0LWxhdW5jaC0wLjEwIHRvIGdzdC1sYXVuY2gtMS4wCisKKzIwMTUtMTEtMTkgMTA6MzI6MDMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5oOgorCSAgYW1jdmlkZW9kZWM6IG1vdmUgcmVsZWFzZV9vdXRwdXRfYnVmZmVyIGludG8gdGhlIHN5bmMgbWV0YQorCSAgU29tZSBkZXZpY2VzIG9ubHkgZXZlciBrZWVwIG9uZSBidWZmZXIgYXZhaWxhYmxlIGluIHRoZSBHTCBxdWV1ZSByZXN1bHRpbmcgaW4KKwkgIG11bHRpcGxlIGNhbGxzIHRvIHJlbGVhc2Vfb3V0cHV0X2J1ZmZlciBvbmx5IGNhdXNpbmcgb25lIGZyYW1lIHRvIGJlIHJlbmRlcmVkLgorCSAgSWYgdGhlcmUgaXMgYSBxdWV1ZSBhZnRlciBhbWN2aWRlb2RlYyAoZXZlbiBwbGF5c2luaydzIHNtYWxsIG9uZSksIHRoZW4KKwkgIG11bHRpcGxlIGJ1ZmZlcnMgYXJlIHB1c2hlZCBidXQgb25seSBhIHNtYWxsIGZyYWN0aW9uIG9mIHRoZW0gYXJlIGFjdHVhbGx5CisJICByZW5kZXJlZCBvbiB0aW1lLiAgVGhlIHJlc3Qgd2lsbCBlaXRoZXIgcmVuZGVyIHNvbWUgbnVtYmVyIG9mIGZyYW1lcyBhaGVhZCBvZgorCSAgd2hlcmUgdGhleSBhcmUgbWVhbnQgdG8gYmUgb3IgdGltZW91dCB3YWl0aW5nIGZvciBhIGZyYW1lIHRoYXQncyBhbHJlYWR5IGJlZW4KKwkgIHJlbmRlcmVkLgorCSAgU29sdmVkIGJ5IG1vdmluZyB0aGUgcmVsZWFzZV9vdXRwdXRfYnVmZmVyIGludG8gdGhlIHN5bmNfbWV0YSB0aGUgaXMgcHVzaGVkCisJICBkb3duc3RyZWFtLiAgV2hlbiBkb3duc3RyZWFtIHJlbmRlcnMsIHRoZSBjdXN0b20gc3luYyBpbXBsZW1lbnRhdGlvbiBhdHRlbXB0cworCSAgdG8gcmVsZWFzZSB0aGUgY3VycmVudCBidWZmZXIgKGlmIG5vdCBhbHJlYWR5IHJlbGVhc2VkKSBhbmQgcmVuZGVyLiBPbmNlIHRoZQorCSAgZnJhbWUgaGFzIGJlZW4gcmVuZGVyZWQgdG8gdGhlIHNjcmVlbiwgdGhlIG5leHQgZnJhbWUgaXMgcmVsZWFzZWQgYW5kIGlzCisJICBob3BlZnVsbHkgYXZhaWxhYmxlIGJ5IHRoZSB0aW1lIHRoZSBuZXh0IGZyYW1lIGlzIHRvIGJlIHJlbmRlcmVkLgorCSAgVGhpcyBmaXhlcyBhIHBlcmNlaXZlZCBmcmFtZSBqaXR0ZXIgaW4gdGhlIG91dHB1dC4KKworMjAxNS0xMS0xNyAxNToyMzoxNyAtMDgwMCAgUmV5bmFsZG8gSC4gVmVyZGVqbyBQaW5vY2hldCA8cmV5bmFsZG9Ab3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvYXVkaW9maWxlL2dzdGFmc2luay5jOgorCSogZXh0L2F1ZGlvZmlsZS9nc3RhZnNyYy5jOgorCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiBleHQvZ2wvZ3N0Z2xidW1wZXIuYzoKKwkqIGV4dC9nbC9nc3RnbGRpZmZlcmVuY2VtYXR0ZS5jOgorCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2xvdmVybGF5LmM6CisJKiBleHQvaGxzL2dzdGhsc2RlbXV4LmM6CisJKiBleHQva2F0ZS9nc3RrYXRlZW5jLmM6CisJKiBleHQva2F0ZS9nc3RrYXRlc3B1LmM6CisJKiBleHQva2F0ZS9nc3RrYXRldXRpbC5jOgorCSogZXh0L2xpYm1tcy9nc3RtbXMuYzoKKwkqIGV4dC9uZW9uL2dzdG5lb25odHRwc3JjLmM6CisJKiBleHQvb3B1cy9nc3RvcHVzZW5jLmM6CisJKiBleHQvc25kZmlsZS9nc3RzZnNpbmsuYzoKKwkqIGV4dC9zbmRmaWxlL2dzdHNmc3JjLmM6CisJKiBleHQvc3BjL3RhZy5jOgorCSogZXh0L3RpbWlkaXR5L2dzdHRpbWlkaXR5LmM6CisJKiBleHQvd2F5bGFuZC9nc3R3YXlsYW5kc2luay5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmVhdHVyZS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2xkaXNwbGF5X3gxMS5jOgorCSogZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0d2F2ZXNjb3BlLmM6CisJKiBnc3QvZHZic3Vib3ZlcmxheS9kdmItc3ViLmM6CisJKiBnc3QvbGlicmZiL3JmYmRlY29kZXIuYzoKKwkqIGdzdC9tcGVndHNkZW11eC9tcGVndHNwYWNrZXRpemVyLmM6CisJKiBnc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5jOgorCSogZ3N0L21wZWd0c211eC90c211eC90c211eC5jOgorCSogc3lzL2FjbWVuYy9hY21lbmMuYzoKKwkqIHN5cy9hY21tcDNkZWMvYWNtbXAzZGVjLmM6CisJKiBzeXMvYXBwbGVtZWRpYS9hdmZhc3NldHNyYy5tOgorCSogc3lzL2JsdWV6L2dzdGEyZHBzaW5rLmM6CisJKiBzeXMvYmx1ZXovZ3N0YXZkdHBzaW5rLmM6CisJKiBzeXMvYmx1ZXovZ3N0YXZkdHB1dGlsLmM6CisJKiBzeXMvZHNob3dkZWN3cmFwcGVyL2dzdGRzaG93YXVkaW9kZWMuY3BwOgorCSogc3lzL2RzaG93ZGVjd3JhcHBlci9nc3Rkc2hvd3ZpZGVvZGVjLmNwcDoKKwkqIHN5cy9kc2hvd3NyY3dyYXBwZXIvZ3N0ZHNob3cuY3BwOgorCSogc3lzL2RzaG93c3Jjd3JhcHBlci9nc3Rkc2hvd3ZpZGVvc3JjLmNwcDoKKwkqIHN5cy9kc2hvd3ZpZGVvc2luay9kc2hvd3ZpZGVvc2luay5jcHA6CisJKiBzeXMvZHZiL2NhbXN3Y2xpZW50LmM6CisJKiBzeXMvZHZiL2R2YmJhc2ViaW4uYzoKKwkqIHN5cy9kdmIvcGFyc2VjaGFubmVscy5jOgorCSogc3lzL3B2cjJkL2dzdHB2cnZpZGVvc2luay5jOgorCSogc3lzL3V2Y2gyNjQvZ3N0dXZjaDI2NF9tanBnZGVtdXguYzoKKwkqIHN5cy92ZHBhdS9nc3R2ZHB2aWRlb21lbW9yeS5jOgorCSogdGVzdHMvZXhhbXBsZXMvZ3RrL2dsbGl2ZXNoYWRlci5jOgorCSogdGVzdHMvaWNsZXMvbWV0YWRhdGFfZWRpdG9yLmM6CisJICBSZW1vdmUgdW5uZWNlc3NhcnkgTlVMTCBjaGVja3MgYmVmb3JlIGdfZnJlZSgpCisJICBnX2ZyZWUoKSBpcyBOVUxMLXNhZmUKKworMjAxNS0xMS0xMSAxNjoxMToxNCArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgbXBkcGFyc2VyOiBBbHNvIGFsbG93ICcvJyBpbiBSZXByZXNlbnRhdGlvbklECisJICBVc2VkIGJ5IGh0dHA6Ly93d3cuYm9rLm5ldC9kYXNoL3RlYXJzX29mX3N0ZWVsL2NsZWFydGV4dC9zdHJlYW0ubXBkCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3OTAzCisKKzIwMTUtMTAtMjYgMTY6MjQ6NDAgKzAxMDAgIEdlb3JnZSBLaWFnaWFkYWtpcyA8Z2VvcmdlLmtpYWdpYWRha2lzQGNvbGxhYm9yYS5jb20+CisKKwkqIC5naXRpZ25vcmU6CisJKiBjb25maWd1cmUuYWM6CisJKiB0ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL01ha2VmaWxlLmFtOgorCSogdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvbWFpbi5jOgorCSogdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvd2luZG93LnVpOgorCSAgdGVzdHMvZXhhbXBsZXM6IGFkZCBhIHdheWxhbmRzaW5rIGV4YW1wbGUKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDgzMjIKKworMjAxNS0xMS0xOCAxMjo1NjowNiArMDEwMCAgR2VvcmdlIEtpYWdpYWRha2lzIDxnZW9yZ2Uua2lhZ2lhZGFraXNAY29sbGFib3JhLmNvbT4KKworCSogZXh0L3dheWxhbmQvd2x3aW5kb3cuYzoKKwkgIHdheWxhbmRzaW5rOiBjYWxsIGdzdF92aWRlb19zaW5rX2NlbnRlcl9yZWN0IHdpdGggYSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgdGhhdCBzdGFydHMgZnJvbSAoMCwwKQorCSAgVGhlIGludGVudGlvbiBvZiB0aGlzIGNvZGUgaXMgdG8gZmluZCB0aGUgY2VudGVyIHJlY3RhbmdsZSByZWxhdGl2ZQorCSAgdG8gKDAsMCksIHNpbmNlIHN1YnN1cmZhY2UgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQKKwkgIHN1cmZhY2UuCisJICBUaGUgb2xkIGNvZGUgdXNlZCB0byB3b3JrIGJ1dCB3YXMgd3JvbmcgYW5kIGJyb2tlbiBieQorCSAgaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1iYXNlL2NvbW1pdC9nc3QtbGlicy9nc3QvdmlkZW8vZ3N0dmlkZW9zaW5rLmM/aWQ9ZmY1N2Y2OTEzNDU2ZWMxOTkxZTU1NTE3Y2YxZjIzOWU4MGVlZGRlZgorCisyMDE1LTExLTE2IDE3OjI1OjM0ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJICBkYXNoZGVtdXg6IGZpeGVkIGlsbGVnYWwgbWVtb3J5IGFjY2VzcyBpbiBnc3RfbXBkX2NsaWVudF9nZXRfbGFzdF9mcmFnbWVudF90aW1lc3RhbXBfZW5kCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTg4CisKKzIwMTUtMTEtMTYgMTc6MjU6MjEgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgbXBkcGFyc2VyOiB0ZXN0czogYWRkZWQgdGVzdCBmb3IgZ3N0X21wZF9jbGllbnRfZ2V0X2xhc3RfZnJhZ21lbnRfdGltZXN0YW1wX2VuZAorCSAgVGhlIHRpbWVzdGFtcCBmb3IgbGFzdCBmcmFnbWVudCBpcyBpbmNvcnJlY3RseSByZXRyaWV2ZWQgaWYgc2VnbWVudCB0ZW1wbGF0ZXMKKwkgIGFyZSB1c2VkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODE4OAorCisyMDE1LTExLTE3IDE2OjIxOjQ0ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBhbWN2aWRlb2RlYzogRG9uJ3QgcmVxdWlyZSBhIG5vbi16ZXJvIGJ1ZmZlciBzaXplIHdoZW4gZG9pbmcgZGVjb2RpbmcgdG8gYSBzdXJmYWNlCisJICBBdCBsZWFzdCBvbiBzb21lIGRldmljZXMvQW5kcm9pZCB2ZXJzaW9ucyB0aGUgYnVmZmVyIHNpemUgd2lsbCBhbHdheXMgYmUgemVybworCSAgaW4gdGhlc2UgY2FzZXMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MjI4CisKKzIwMTUtMTEtMTcgMTc6MTc6NTAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSAgZ2xpbWFnZXNpbms6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKKwkgIGdzdGdsaW1hZ2VzaW5rLmM6IEluIGZ1bmN0aW9uICdnc3RfZ2xpbWFnZV9zaW5rX29uX2RyYXcnOgorCSAgZ3N0Z2xpbWFnZXNpbmsuYzoxOTU5OjE4OiBlcnJvcjogdW51c2VkIHZhcmlhYmxlICdzeW5jX21ldGEnIFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KKwkgIEdzdEdMU3luY01ldGEgKnN5bmNfbWV0YSA9IE5VTEw7CisJICBeCisKKzIwMTUtMTEtMTcgMTc6MDk6NTEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmM6CisJICBnbHZpZXdjb252ZXJ0OiBTdHJpbmcgbGl0ZXJhbHMgYXJlIGNvbnN0CisJICBnc3RnbHZpZXdjb252ZXJ0LmM6IEluIGZ1bmN0aW9uICdfbWFuZ2xlX2V4dGVuc2lvbnMnOgorCSAgZ3N0Z2x2aWV3Y29udmVydC5jOjE1MTE6MTM6IGVycm9yOiBhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSBbLVdlcnJvcj1kaXNjYXJkZWQtcXVhbGlmaWVyc10KKwkgIGV4dF9zdHIgPSAiI2V4dGVuc2lvbiBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIDogcmVxdWlyZVxuIjsKKwkgIF4KKworMjAxNS0xMS0xNyAxNzowODoxNCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc3luY21ldGEuYzoKKwkgIGdsc3luY21ldGE6IEFjdHVhbGx5IHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBtZXRhIGZyb20gZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhKCkKKwkgIGdzdGdsc3luY21ldGEuYyAgLWZQSUMgLURQSUMgLW8gLmxpYnMvbGliZ3N0Z2xfMS4wX2xhLWdzdGdsc3luY21ldGEubworCSAgZ3N0Z2xzeW5jbWV0YS5jOiBJbiBmdW5jdGlvbiAnZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhJzoKKwkgIGdzdGdsc3luY21ldGEuYzoxMzE6MTogZXJyb3I6IGNvbnRyb2wgcmVhY2hlcyBlbmQgb2Ygbm9uLXZvaWQgZnVuY3Rpb24gWy1XZXJyb3I9cmV0dXJuLXR5cGVdCisJICB9CisJICBeCisKKzIwMTUtMTEtMTcgMTY6MjE6MTAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkgIGFtY3ZpZGVvZGVjOiBGaXggaW5kZW50YXRpb24KKworMjAxNS0xMS0xNyAxNjowODoxNyArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJICBhcHBsZW1lZGlhOiB2dGRlYzogZml4IG5lZ290aWF0aW9uIG1vcmUKKwkgIFllYXIgMTI6IEkgc3RpbGwgZG9uJ3QgdW5kZXJzdGFuZCBob3cgbmVnb3RpYXRpb24gd29ya3MuCisJICBBcHBhcmVudGx5IGdzdF9wYWRfcXVlcnlfY2FwcyBkb2Vzbid0IGRvIHdoYXQgSSB0aG91Z2h0IGl0IGRpZC4gVG8gZ2V0IHRoZQorCSAgYWN0dWFsIGNhcHMgdGhhdCBjYW4gZmxvdyB0aHJvdWdoIHZ0ZGVjOnNyYyB3ZSBtdXN0IGNhbGwgZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMKKwkgIHdpdGggdGhlIHRlbXBsYXRlIGNhcHMgYXMgZmlsdGVyLgorCSAgRml4ZXMgbmVnb3RpYXRpb24gd2l0aCBzdHVmZiB0aGF0IGRvZXNuJ3QgdW5kZXJzdGFuZCBHTE1lbW9yeSAoaGVsbG8gdmlkZW9zY2FsZSkuCisKKzIwMTUtMTEtMTcgMTY6MTQ6MTEgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92dGRlYy5jOgorCSAgYXBwbGVtZWRpYTogdnRkZWM6IG1pbm9yIHRleHR1cmUgY2FjaGUgZml4ZXMKKwkgIFNtYWxsIGZpeCBvbiBob3cgdGhlIHRleHR1cmUgY2FjaGUgaXMgY2xlYW5lZCB1cCAvIHNldHVwIGluIGNhc2Ugb2YgcmVuZWdvdGlhdGlvbgorCisyMDE1LTExLTE3IDE2OjEzOjAwICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvdGV4dHVyZWNhY2hlLm06CisJICBhcHBsZW1lZGlhOiBjb3JldmlkZW90ZXh0dXJlY2FjaGU6IHN0b3AgY29uZmlndXJpbmcgY2FjaGUtPmNvbnZlcnQgb3ZlciBhbmQgb3ZlcgorCisyMDE1LTExLTE2IDE1OjQ2OjQxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBnbGltYWdlc2luazogd2FpdCBvbiB0aGUgY29ycmVjdCBzeW5jIG1ldGEgd2hlbiByZW5kZXJpbmcKKworMjAxNS0xMS0wMyAxMzoxOTo0MSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL01ha2VmaWxlLmFtOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMyZHRleHR1cmVyZW5kZXJlci5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMyZHRleHR1cmVyZW5kZXJlci5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5oOgorCSAgYW1jdmlkZGVjOiBvdXRwdXQgZXh0ZXJuYWwtb2VzIHRleHR1cmVzCisJICBUaGlzIHByb3ZpZGVzIGEgcGVyZm9ybWFuY2UgYW5kIHBvd2VyIHVzYWdlIGltcHJvdmVtZW50IGJ5IHJlbW92aW5nCisJICB0aGUgdGV4dHVyZSBjb3B5IGZyb20gYW4gT0VTIHRleHR1cmUgdG8gMkQgdGV4dHVyZS4KKwkgIFRoZSBmbG93IGlzIGFzIGZvbGxvd3MKKwkgIDEuIEdlbmVyYXRlIHRoZSBvdXRwdXQgYnVmZmVyIHdpdGggdGhlIHJlcXVpcmVkIHN5bmMgbWV0YSB3aXRoIHRoZSBpbmNyZW1lbnRpbmcKKwkgIHB1c2ggY291bnRlciBhbmQgT0VTIEdMIG1lbW9yeQorCSAgMS4xIHJlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoYnVmLCByZW5kZXI9dHJ1ZSkgYW5kIHB1c2ggZG93bnN0cmVhbQorCSAgMi4gRG93bnN0cmVhbSB3YWl0cyBmb3Igb24gdGhlIHN5bmMgbWV0YSAodGltZWQgd2FpdCkgb3IgZHJvcHMgdGhlIGZyYW1lIChubyB3YWl0KQorCSAgMi4xIFRpbWVkIHdhaXQgZm9yIHRoZSBmcmFtZSBudW1iZXIgdG8gcmVhY2ggdGhlIG51bWJlciBvZiBmcmFtZSBjYWxsYmFja3MgZmlyZWQKKwkgIDIuMiBVbmNvbmRpdGlvbmFsbHkgdXBkYXRlIHRoZSBpbWFnZSB3aGVuIHRoZSB3YWl0IGNvbXBsZXRlcyAoc3VjY2VzcyBvciBmYWlsKS4KKwkgIFNldHMgdGhlIGFmZmluZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggbWV0YSBvbiB0aGUgYnVmZmVyLgorCSAgMy4gRG93bnN0cmVhbSByZW5kZXJzIGFzIHVzdWFsLgorCSAgQXQgKnNvbWUqIHBvaW50IHRocm91Z2ggdGhpcyB0aGUgb25fZnJhbWVfY2FsbGJhY2sgbWF5IG9yIG1heSBub3QgZmlyZS4gIElmIGl0CisJICBkb2VzIGZpcmUsIHdlIGNhbiBmaW5pc2ggd2FpdGluZyBlYXJseSBhbmQgcmVuZGVyLiBPdGhlcndpc2Ugd2UgaGF2ZSB0bworCSAgd2FpdCBmb3IgYSB0aW1lb3V0IHRvIG9jY3VyIHdoaWNoIG1heSBjYXVzZSBtb3JlIGJ1ZmZlcnMgdG8gYmUgcHVzZWQgaW50byB0aGUKKwkgIGludGVybmFsIEdMIHF1ZXVlIHdoaWNoIHNpZ2luaWZpY2FudGx5IGRlY3JlYXNlcyB0aGUgY2hhbmNlcyBvZiB0aGUKKwkgIG9uX2ZyYW1lX2NhbGxiYWNrIHRvIGZpcmUgYWdhaW4uICBUaGlzIGlzIGJlY2F1c2UgdGhlIGZyYW1lIGNhbGxiYWNrIG9ubHkgb2NjdXJzCisJICB3aGVuIHRoZSBpbnRlcm5hbCBHTCBxdWV1ZSBjaGFuZ2VzIHN0YXRlIGZyb20gZW1wdHkgdG8gbm9uLWVtcHR5LgorCSAgQmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdG8gcmVsaWFibHkgY29ycmVsYXRlIGJldHdlZW4gdGhlIG51bWJlciBvZiBidWZmZXJzCisJICBwdXNoZWQgYW5kIHRoZSBudW1iZXIgb2YgZnJhbWUgY2FsbGJhY2tzIHJlY2VpdmVkLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YKKwkgIHdvcmthcm91bmRzIGluIHBsYWNlLgorCSAgMS4gV2Ugc2VsZi1pbmNyZW1lbnQgdGhlIHJlYWR5IGNvdW50ZXIgd2hlbiBpdCBmYWxscyBiZWhpbmQgdGhlIHB1c2ggY291bnRlcgorCSAgMi4gVGltZSBiYXNlZCB3YWl0cyBhcyB0aGUgZnJhbWUgY2FsbGJhY2sgbWF5IG5vdCBiZSBmaXJlZCBmb3IgYSBjZXJ0YWluIGZyYW1lLgorCSAgMy4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBkZXZpY2UgY2FuIHJlbmRlciBhdCBzcGVlZCBvciBwZXJmb3JtcyBzb21lIFFvUyBvZgorCSAgdGhlIGludGVyYWwgR0wgcXVldWUgKHdoaWNoIG1heSBub3QgbWF0Y2ggdGhlIEdTdHJlYW1lciBRb1MpLgorCSAgSXQgaG9sZHMgdGhhdCB3ZSBjYWxsIFN1cmZhY2VUZXh0dXJlOjp1cGRhdGVUZXhJbWFnZSBmb3IgZWFjaCBidWZmZXIgcHVzaGVkCisJICBkb3duc3RyZWFtIGhvd2V2ZXIgdGhlcmUncyBubyBndWFyZW50ZWUgdGhhdCB1cGRhdGVUZXhJbWFnZSB3aWxsIHJlc3VsdCBpbgorCSAgdGhlIGV4YWN0IG5leHQgZnJhbWUgKGl0IGNvdWxkIHNraXAgb3IgZHVwbGljYXRlKSBzbyBzeW5jaHJvbml6YXRpb24gaXMgbm90CisJICBndWFyYW50ZWVkIHRvIGJlIGFjY3VyYXRlIGFsdGhvdWdoIGl0IHNlZW1zIHRvIGJlIGNsb3NlIGVub3VnaCB0byBiZSB1bmFibGUKKwkgIHRvIGRpc2Nlcm4gdmlzdWFsbHkuICBUaGlzIGhhcyBub3QgY2hhbmdlZCBmcm9tIGJlZm9yZSB0aGlzIHBhdGNoLiAgVGhlIGN1cnJlbnQKKwkgIHJlcXVpcmVtZW50IGZvciBzeW5jaHJvbml6YXRpb24gaXMgdGhhdCB1cGRhdGVUZXhJbWFnZSBpcyBjYWxsZWQgYXQgdGhlIHBvaW50IGluCisJICB0aW1lIHdoZW4gdGhlIGJ1ZmZlcnMgaXMgdG8gYmUgcmVuZGVyZWQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3Mjg1CisKKzIwMTUtMTEtMDIgMTc6NTc6MjkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc3luY21ldGEuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmg6CisJICBnbHN5bmNtZXRhOiBhZGQgdmZ1bmNzIGZvciBhbGwgb3BlcmF0aW9ucworCSAgdGhlcmUgY291bGQgYmUgb3RoZXIgd2F5cy9yZXF1aXJlbWVudHMgZm9yIHN5bmNocm9uaXNpbmcgdHdvIEdQVSBjb21tYW5kCisJICBzdHJlYW1zICh3aGV0aGVyIEdMIG9yIHBsYXRmb3JtIHNwZWNpZmljKS4KKwkgIGUuZy4gZ2xmZW5jZXN5bmMvZWdsd2FpdG5hdGl2ZS9jb25kL2V0YworCisyMDE1LTExLTEwIDE1OjM3OjA1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmg6CisJICBnbGltYWdlc2luazogYWRkIHN1cHBvcnQgZm9yIHJlbmRlcmluZyBleHRlcm5hbC1vZXMgdGV4dHVyZXMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcyODUKKworMjAxNS0xMS0xMCAxNDo1NDowMiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuaDoKKwkgIGdsdmlld2NvbnZlcnQ6IGFkZCBzdXBwb3J0IHJlY3RhbmdsZS9leHRlcm5hbC1vZXMgdGV4dHVyZXMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcyODUKKworMjAxNS0xMS0xNyAxNToxODoyOCArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJICBhcHBsZW1lZGlhOiB2dGRlYzogZml4IHNldHRpbmcgaW50ZXJuYWwgU0tJUCAvIERST1AgZmxhZ3MKKwogMjAxNS0xMS0xNyAwOTowODo1MiArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KIAogCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmM6CiAJICBnbGltYWdlc2luazogRml4IHN0cnVjdHVyZSBtZW1vcnkgbGVhawogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODIwNQogCisyMDE1LTExLTE2IDIxOjUyOjA3IC0wNTAwICBPbGl2aWVyIENyw6p0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QvYXV0b2NvbnZlcnQvZ3N0YXV0b2NvbnZlcnQuYzoKKwkgIGF1dG9jb252ZXJ0OiBBZGQgc3VwcG9ydCBmb3IgYnVmZmVybGlzdHMKKworMjAxNS0xMS0xNyAxMToyMToyNyArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJKiBzeXMvYXBwbGVtZWRpYS92dGRlYy5oOgorCSAgYXBwbGVtZWRpYTogdnRkZWM6IGltcHJvdmUgbmVnb3RpYXRpb24KKwkgIFJld29yayBuZWdvdGlhdGlvbiBpbXBsZW1lbnRpbmcgR3N0VmlkZW9EZWNvZGVyOjpuZWdvdGlhdGUuIE1ha2UgaXQgcG9zc2libGUgdG8KKwkgIHN3aXRjaCB0ZXh0dXJlIHNoYXJpbmcgb24gYW5kIG9mZiBhdCBydW50aW1lLiBVc2VmdWwgdG8gKGV2ZW50dWFsbHkpIHR1cm4KKwkgIHRleHR1cmUgc2hhcmluZyBvbiBpbiBwaXBlbGluZXMgd2hlcmUgZ2xpbWFnZXNpbmsgaXMgbGlua2VkIG9ubHkgYWZ0ZXIKKwkgIGRlY29kaW5nIGhhcyBhbHJlYWR5IHN0YXJ0ZWQgKGZvciBleGFtcGxlIE9XUikuCisKKzIwMTUtMTEtMTcgMTE6MTk6NTcgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92dGRlYy5jOgorCSAgYXBwbGVtZWRpYTogdnRkZWM6IGltcHJvdmUgaGFuZGluZyBvZiBkZWNvZGUgZXJyb3JzL2ZyYW1lIGRyb3BzCisJICBJbXByb3ZlIGRlY29kZSBlcnJvciBoYW5kbGluZyBieSBhdm9pZGluZyBjYWxsaW5nIGludG8gR3N0VmlkZW9EZWNvZGVyIGZyb20gdGhlCisJICBWVCBkZWNvZGUgY2FsbGJhY2suIFRoaXMgcmVtb3ZlcyBjb250ZW50aW9uIG9uIHRoZSBHU1RfVklERU9fREVDT0RFUl9TVFJFQU1fTE9DSworCSAgd2hpY2ggdXNlZCB0byBtYWtlIHRoZSBkZWNvZGUgY2FsbGJhY2sgc2xvdyBlbm91Z2ggZm9yIFZUIHRvIHN0YXJ0IGRyb3BwaW5nIGxvdHMKKwkgIG9mIGZyYW1lcyBvbmNlIHRoZSBmaXJzdCBmcmFtZSB3YXMgZHJvcHBlZC4KKworMjAxNS0xMS0xNyAxMToyMjoxNSArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJICBhcHBsZW1lZGlhOiB2dGRlYzogZml4IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZworCisyMDE1LTExLTE0IDIwOjIxOjE3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4Lmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiByZW1vdmUgbm93LWRlZnVuY3QgIm51bS1sb29rYmFjay1mcmFnbWVudHMiIHByb3BlcnR5CisJICBUaGlzIG5vIGxvbmdlciBkb2VzIGFueXRoaW5nLCBhbmQgaXQgd2FzIG1hcmtlZCBhcyBDT05TVFJVQ1RfT05MWQorCSAgd2hpY2ggbWVhbnMgc29tZW9uZSB3b3VsZCByZWFsbHkgaGF2ZSB0byBnbyBvdXQgb2YgdGhlaXIgd2F5IHRvCisJICBiZSBhYmxlIHRvIHNldCB0aGlzLCB3aGljaCB3b3VsZCBvbmx5IGJlIGRvbmUgaW4gdmVyeSBjdXN0b20KKwkgIHNjZW5hcmlvcywgaWYgZXZlciwgYW5kIHRob3NlIHdpbGwgbGlrZWx5IHRhcmdldCBhIHNwZWNpZmljCisJICB2ZXJzaW9uIG9mIEdTdHJlYW1lciB0aGVuLCBzbyBwcm9iYWJseSBub3QgbXVjaCBwb2ludCBrZWVwaW5nCisJICBpdCBkZXByZWNhdGVkIGZvciBhIHdoaWxlIGJlZm9yZSByZW1vdmluZyBpdC4KKworMjAxNS0xMS0xMyAxNzoxNDoxNCAtMDUwMCAgT2xpdmllciBDcsOqdGUgPG9saXZpZXIuY3JldGVAY29sbGFib3JhLmNvbT4KKworCSogZ3N0L2F1dG9jb252ZXJ0L2dzdGF1dG9jb252ZXJ0LmM6CisJICBhdXRvY29udmVydDogQWx3YXlzIGdpdmUgYSB2YWxpZCByZXBseSB0byBpbnRlcm5hbCBjYXBzIHF1ZXJpZXMKKwkgIENhcHMgcXVlcmllcyBjYW4gYWx3YXlzIGhhdmUgYSB2YWxpZCByZXBseSwgZWl0aGVyIHRoZSBmaWx0ZXIgb3IgQU5ZLgorCSAgSWYgdGhlIGNhcHMgYXJlIEFOWSwgdGhlbiBhY2NlcHQtY2FwcyBhbHdheXMgcmV0dXJucyBUUlVFLgorCisyMDE1LTExLTEyIDE2OjM1OjEyICswMTAwICBOaWNvbGFzIEh1ZXQgPG5pY29sYXMuaHVldEBwYXJyb3QuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFja2V0aXplci5jOgorCSAgbXBlZ3RzZGVtdXg6IGZpeCBzZWN0aW9uX2RhdGEgbGVhaworCSAgSWYgcGFja2V0LT5wYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yIGlzIHRydWUgYW5kIHBvaW50ZXIgMCwgdGhlcmUgaXMgbm8KKwkgIGRpc2NvbnRpbnVpdHkgY2hlY2suIFRoZXJlZm9yZSB0aGVyZSBjb3VsZCBiZSBhIHByZXZpb3VzIHNlY3Rpb24gbm90IGNvbXBsZXRlCisJICB0aGF0IG5lZWQgdG8gYmUgY2xlYXJlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgwMTAKKworMjAxNS0xMS0xMyAxMDo0MTo1OCArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2wuYzoKKwkgIGdsc2w6IGZpeCBwb3NzaWJsZSBzdHJpbmcgb3ZlcnJ1biBpbiBnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmcKKwkgIGdpdmVuIGEgTlVMTC10ZXJtaW5hdGVkIHN0cmluZywgcy4KKwkgIHNbaV0gPSAnXDAnOworCSAgaSsrOworCSAgZG9lcyBub3QgZ3VhcmVudGVlIHRoYXQgc1tpXSBpcyBOVUxMIHRlcm1pbmF0ZWQgYW5kIHRodXMgc3RyaW5nIG9wZXJhdGlvbnMKKwkgIGNvdWxkIHJlYWQgb2ZmIHRoZSBlbmQgb2YgdGhlIGFycmF5LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODAzOQorCisyMDE1LTExLTEzIDE2OjUwOjIyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5jOgorCSAgZ2xzaGFkZXI6IGRvbid0IHJlYWQgaW52YWxpZCBsaXN0IHBvaW50ZXJzICh1c2UgYWZ0ZXIgZnJlZSkKKwkgIGdzdF9nbF9zaGFkZXJfZGV0YWNoX3VubG9ja2VkIGFscmVhZHkgcmVtb3ZlcyB0aGUgbGlzdCBlbnRyeSBzbyBhdHRlbXB0aW5nIHRvCisJICB1c2UgdGhlIGVsZW1lbnQgdG8gaXRlcmF0ZSB0byB0aGUgbmV4dCBzdGFnZSBjb3VsZCByZWFkIGludmFsaWQgZGF0YS4KKwkgIEJhc2VkIG9uIHBhdGNoIGJ5IFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MDM5CisKKzIwMTUtMTEtMTMgMTA6NDQ6MjYgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xzbC5jOgorCSAgdGVzdHM6Z2xzbDogdmVyc2lvbl9wcm9maWxlX3Mgc3RyaW5nIGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgwMzkKKworMjAxNS0xMS0xMyAxMDo1NjoxMCArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2wuYzoKKwkgIGdsc2w6IGZyZWUgc3RyIHdoaWxlIHJldHVybmluZyBlcnJvcgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODAzOQorCisyMDE1LTExLTEzIDExOjA0OjM0ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsdXBsb2FkLmM6CisJICB0ZXN0czpnbHVwbG9hZDogZml4IGNhcHMgbWVtb3J5IGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgwMzkKKworMjAxNS0xMS0xMiAxMjoyMTo1NCArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c2VuYy5jOgorCSAgb3B1c2VuYzogYXZvaWQgcG90ZW50aWFsIG92ZXJmbG93IGV4cHJlc3Npb24KKwkgIFRoZSByZXN1bHQgb2YgdGhlIHR3byBleHByZXNzaW9ucyB3aWxsIGJlIHByb21vdGVkIHRvIGd1aW50NjQgYW55d2F5LAorCSAgcGVyZm9ybSBhbGwgdGhlIGFyaXRobWV0aWMgaW4gNjQgYml0cyB0byBhdm9pZCBwb3RlbnRpYWwgb3ZlcmZsb3dzLgorCSAgQ0lEIDEzMzg2OTAsIENJRCAxMzM4NjkxCisKKzIwMTUtMTEtMTIgMTI6MDA6MDcgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC9tcGVndHNkZW11eC90c2RlbXV4LmM6CisJICB0c2RlbXV4OiByZW1vdmUgbWVtb3J5IGxlYWsKKwkgIFRoZSB2YWx1ZXMgb2YgY2hhbm5lbF9tYXBwaW5nIGFyZSBjb3BpZWQgYnkgZ3N0X2NvZGVjX3V0aWxzX29wdXNfY3JlYXRlX2NhcHMgKCkKKwkgIGJ1dCBpdCBkb2Vzbid0IGZyZWUgb3IgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGdfbmV3MCBhbGxvY2F0ZWQgbWVtb3J5LiBUaGlzCisJICBuZWVkcyB0byBiZSBmcmVlZCBiZWZvcmUgZ29pbmcgb3V0IG9mIHNjb3BlLgorCSAgQ0lEIDEzMzg2OTIKKworMjAxNS0xMS0xMiAxMTo0MjozNiArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0L21wZWd0c211eC9tcGVndHNtdXguYzoKKwkgIG1wZWd0c211eDogcmVtb3ZlIHVubmVjZXNzYXJ5IGJ1ZmZlciBjaGVjaworCSAgYnVmIHN1cmVseSBpc24ndCBOVUxMIGluc2lkZSB0aGUgYmxvY2sgY29uZGl0aW9uYWwgdG8gYSBidWZmZXIgc2l6ZSBiaWdnZXIKKwkgIHRoYW4gKEdfTUFYVUlOVDE2IC0gMykuIFBsdXMgZ3N0X2J1ZmZlcl91bnJlZigpIGNoZWNrcyBpZiB0aGUgYnVmZmVyIGlzCisJICBOVUxMIGFuZCBkb2VzIG5vdGhpbmcgaWYgaXQgaXMuCisJICBDSUQgMTMzODY5MworCisyMDE1LTExLTEyIDExOjIzOjMxICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3B1cy9nc3RvcHVzcGFyc2UuYzoKKwkgIG9wdXNwYXJzZTogaW5pdGlhbGl6ZSBzYW1wbGUgcmF0ZSB0byBhIGRlZmF1bHQKKwkgIHNhbXBsZV9yYXRlIG1pZ2h0IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpZiAhc2lua19jYXBzIGlzIFRSVUUuIEluaXRpYWxpemUKKwkgIGl0IHRvIHRoZSBkZWZhdWx0IHVzZWQgaW4gZ3N0X2NvZGVjX3V0aWxzX29wdXNfcGFyc2VfY2FwcyAoKSB3aGVuIHRoZXJlIGlzCisJICBubyByYXRlIGRlZmluZWQgaW4gdGhlIGNhcHMuCisJICBDSUQgMTMzODY5NQorCisyMDE1LTExLTEyIDE2OjM2OjAzICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmM6CisJICBnbHNsc3RhZ2U6IEZpeCB2ZXJ0ZXhfc291cmNlcyBtZW1vcnkgbGVhaworCSAgdmVydGV4X3NvdXJjZXMgaXMgYmVpbmcgYWxsb2NhdGVkIGJ1dCBub3QgZnJlZWQgcmVzdWx0aW5nIGluIGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5NzQKKworMjAxNS0xMS0xMiAxNjoyNjowMCArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogcmVtb3ZlIHVubmVjZXNzYXJ5IGZyZWUKKwkgIHZlcnNpb25fc3RyIGlzIGFscmVhZHkgYmVpbmcgZnJlZWQuIFNvIG5vIG5lZWQgdG8gY2FsbCBhZ2FpbgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzk3NAorCisyMDE1LTExLTEyIDE2OjE4OjM1ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkgIGdsY29sb3Jjb252ZXJ0OiBGaXggc3RyaW5nIGxlYWsKKwkgIFN0cmluZyBnb3QgdXNpbmcgZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX3RvX3N0cmluZywgaXMgYWxsb2NhdGVkCisJICBtZW1vcnkgYW5kIHNob3VsZCBiZSBmcmVlZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzk3NAorCisyMDE1LTExLTEyIDE2OjAyOjQ1ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkgIGdsY29sb3Jjb252ZXJ0OiBGaXggZnJhZ19wcm9nIGFuZCBmcmFnX2JvZHkgbWVtb3J5IGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5NzQKKworMjAxNS0xMS0xMSAxNjo1MToyMyArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IGZpeGVkIGhhbmRsaW5nIGVycm9ycyBlbWl0dGVkIGJ5IHVyaSBoYW5kbGVyCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3OTQ3CisKIDIwMTUtMTEtMTAgMTY6MzI6MzcgKzAxMDAgIE5pY29sYXMgSHVldCA8bmljb2xhcy5odWV0QHBhcnJvdC5jb20+CiAKIAkqIGdzdC9tcGVndHNkZW11eC90c2RlbXV4LmM6CkBAIC0yOTMsNiArNzQ3MywxNiBAQAogCSAgcGFkIHdpbGwgbm90IGJlIHVucmVmZmVkIGFuZCB3aWxsIGJlIGxlYWtlZC4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc4NzMKIAorMjAxNS0xMS0wOSAxNzo0NToyOSArMDIwMCAgU3JlZXJlbmogQmFsYWNoYW5kcmFuIDxzcmVlcmVuai5iYWxhY2hhbmRyYW5AaW50ZWwuY29tPgorCisJKiBnc3QvaXZmcGFyc2UvZ3N0aXZmcGFyc2UuYzoKKwkgIGl2ZnBhcnNlOiBGaXggdGhlIHdyb25nIHdpZHRoICYgaGVpZ2h0IHBhcnNpbmcgb2YgdnA5IGJpdHN0cmVhbQorCSAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZm9yIGRldGVjdGluZyB0aGUgcmVzb2x1dGlvbiBjaGFuZ2VzCisJICBvbiBrZXkgZnJhbWVzIGlzIGJhc2VkIG9uIHZwOCBiaXRzdHJlYW0gYWxpZ25tZW50LiBBdm9pZCB0aGlzCisJICB3aWR0aCBhbmQgaGVpZ2h0IHBhcnNpbmcgZm9yIHZwOSBiaXRzdHJlYW0sIHdoaWNoIHJlcXVpcmVzIHByb3BlcgorCSAgZnJhbWUgaGVhZGVyIHBhcnNpbmcgaW5vcmRlciB0byBkZXRlY3QgdGhlIHJlc29sdXRpb24gY2hhbmdlIChGaXhtZSkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODI1CisKIDIwMTUtMTEtMTEgMTE6NDA6NTIgKzAxMDAgIEhlaW5yaWNoIEZpbmsgPGhmaW5rQHRvb2xzb25haXIuY29tPgogCiAJKiBzeXMvYXBwbGVtZWRpYS92dGVuYy5jOgpAQCAtMzAyLDYgKzc0OTIsMTQgQEAKIAkgIHZ0ZW5jIGluc3RhbmNlIGlzIHN0b3BwZWQgYW5kIHRoZW4gcmVzdGFydGVkLgogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzkzNQogCisyMDE1LTExLTExIDIzOjM5OjM1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jOgorCSAgZ2xjb2xvcmNvbnZlcnQ6IG1hbmdsZSBnbF9GcmFnQ29sb3IgZm9yIEdMMworCSAgU29tZSBkcml2ZXJzIGRvbid0IHByb3ZpZGUgdGhlIGNvbXBhdGliaWxpdHkgZGVmaW5pdGlvbiBhbmQgd2UgbmVlZCB0byBwcm92aWRlCisJICBvdXIgb3duICdvdXQgdmVjNCcgdmFyaWFibGUgdG8gcHV0IHRoZSByZXN1bHRzIG9mIHRoZSBmcmFnbWVudCBzaGFkZXIgaW50by4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5MzgKKwogMjAxNS0xMS0xMSAxNjowNjoyNSArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KIAogCSogdGVzdHMvY2hlY2svbGlicy9nc3RnbGNvbG9yY29udmVydC5jOgpAQCAtMzA5LDYgKzc1MDcsMTM2IEBACiAJICBPdXRwdXQgY2FwcyBiZWluZyBnb3QgZnJvbSB2aWRlbyBpbmZvIGlzIG5vdCBnZXR0aW5nIGZyZWVkCiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3OTI5CiAKKzIwMTUtMTEtMTAgMTc6NTg6NTggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYzoKKwkgIHRzZGVtdXg6IHByb3ZpZGUgb3VyIG93biBkZWZpbml0aW9uIG9mIGxvZzIoKQorCSAgVGhlIGxvZzIgZnVuY3Rpb24vbWFjcm8gZG9lc24ndCBleGlzdCB3aGVuIHRhcmdldHRpbmcgYW5kcm9pZCBBUEkgPCAxOCAob3IgTVNWQworCSAgPCAyMDEzKSB3aGVyZWFzIG91ciBjdXJyZW50IGJhc2VsaW5lIGlzIEFQSSA5LgorCisyMDE1LTExLTEwIDEzOjUyOjMwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmg6CisJKiBleHQvZ2wvZ3N0Z2xzdGVyZW9taXguYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5oOgorCSAgZ2x2aWV3Y29udmVydDogcmVtb3ZlIHNldF9mb3JtYXQKKwkgIFdlIG5lZWQgdGhlIGNhcHMgdG8gYmUgYWJsZSB0bworCSAgMS4gY2hlY2sgdGhlIGNhcHMgZmVhdHVyZXMKKwkgIDIuIGdldCB0aGUgcmVxdWVzdGVkIHRleHR1cmUtdGFyZ2V0IG9uIGlucHV0L291dHB1dAorCisyMDE1LTExLTExIDEwOjMxOjA3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSAgZ2xpbWFnZXNpbms6IGZpeCBhIG1lbW9yeSBsZWFrIGlmIHRoZSB2aWV3IGNvbnZlcnNpb24gZmFpbHMKKworMjAxNS0xMS0xMSAxMzozNzo1OSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuYzoKKwkgIGdsaW1hZ2VzaW5rOiBiYWxhbmNlIHRoZSBjcmVhdGlvbi9kZXN0cnVjdGlvbiBvZiB0aGUgb3ZlcmxheSBjb21wb3NpdG9yCisJICBGaXhlcyBzb21lIGxlYWtzL3Bvc3NpYmxlIHNlZ2ZhdWx0IG9uIHdoZW4gZmFpbGluZyB0byBjcmVhdGUgdGhlIGNvbXBvc2l0b3IuCisKKzIwMTUtMTEtMTEgMTI6MjM6MzAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5jOgorCSAgZ2xzaGFkZXI6IHByb3Blcmx5IHVucmVmIHRoZSBzdGFnZXMgb24gZmFpbHVyZQorCSAgV2hlbiBmYWlsaW5nIGluIHRoZSB2YXJhcmdzIGZ1bmN0aW9ucywgYWxsIHRoZSBzdGFnZSBvYmplY3RzIG5vdCBoYW5kbGVkIG5lZWQgdG8KKwkgIGJlIHVucmVmZmVkIHRvIHByZXZlbnQgYSBsZWFrLgorCisyMDE1LTExLTExIDExOjI5OjM1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNsc3RhZ2UuYzoKKwkgIGdsc2xzdGFnZTogcHJvcGVybHkgcmV0dXJuIGFuIGVycm9yIHdoZW4gd2UgY291bGQgbm90IGNyZWF0ZSB0aGUgc2hhZGVyIHN0YWdlCisJICBXaGlsZSBpdCB3YXMgZXJyb3Jpbmcgb3V0IGNvcnJlY3RseSBsYXRlciwgdGhlcmUgd2VyZSBHTGliIHdhcm5pbmdzIGFib3V0CisJICBzZXR0aW5nIGEgR0Vycm9yIG92ZXIgdGhlIHRvcCBvZiBhbm90aGVyIEdFcnJvci4KKworMjAxNS0xMS0xMSAwMTowNToyMCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJzdHJpbmdzLmM6CisJICBnbHNoYWRlcnN0cmluZ3M6IGZpeHVwIHRoZSBleHRlcm5hbC1vZXMgZnJhZ21lbnQgc2hhZGVyCisJICBUaGUgd3Jvbmcgc2FtcGxlciB0eXBlIHdhcyB1c2VkCisJICBzL3NhbXBsZXIyREV4dGVybmFsT0VTL3NhbXBsZXJFeHRlcm5hbE9FUy8KKworMjAxNS0xMS0xMCAyMzo0MToyNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkgIGdsY29sb3Jjb252ZXJ0OiB0cnkgdG8ga2VlcCB0aGUgc2FtZSB0ZXh0dXJlLXRhcmdldCBpZiBwb3NzaWJsZQorCSAgRml4ZXMgaXNzdWVzIGF0dGVtcHRpbmcgdG8gcGFzc3Rocm91Z2ggZXh0ZXJuYWwtb2VzIHRleHR1cmVzCisKKzIwMTUtMTEtMTAgMjI6NDE6NTcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogZml4IHJlbmRlcmluZyByZWN0YW5ndWxhciB0ZXh0dXJlcyB3aXRoIEdMMworCSAgUmVjdGFuZ3VsYXIgdGV4dHVyZXMgYXJlIHVuYXZhaWxhYmxlIGluIHVuZXh0ZW5kZWQKKwkgIEdMRVMyICN2ZXJzaW9uIDEwMCBzaGFkZXJzLgorCSAgRml4ZXMKKwkgIHRleHR1cmUtdGFyZ2V0PXJlY3RhbmdsZSAhIGdsY29sb3Jjb252ZXJ0ICEgdGV4dHVyZS10YXJnZXQ9MkQKKwkgIFRoZXJlJ3MgYSBjb3VwbGUgb2YgZGlmZmVyZW5jZXMgYmV0d2VlbiBHTDMgYW5kIEdMRVMyL0dMCisJICAtIHZhcnlpbmcgLT4gaW4gb3Igb3V0IGRlcGVuZGluZyBvbiB0aGUgc3RhZ2UgKHZlcnRleC9mcmFnbWVudCkKKwkgIC0gYXR0cmlidXRlIC0+IGluCisJICAtIGZpbHRlcmVkIHRleHR1cmUgYWNjZXNzIGlzIGEgc2luZ2xlIGZ1bmN0aW9uLCB0ZXh0dXJlKCkKKworMjAxNS0xMS0xMCAyMDoyMDoyOSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkgIGdsY29sb3Jjb252ZXJ0OiBwcm9wZXJseSB1c2UgdGhlIG90aGVyIHRleHR1cmUtdGFyZ2V0IG9uIGZpeGF0aW9uCisKKzIwMTUtMTEtMTAgMjA6MTU6NTYgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5jOgorCSAgZ2xzbHN0YWdlOiBhZGQgZGVidWcgYXMgdG8gd2h5IF9zZXRfc3RyaW5ncygpIGZhaWxlZAorCisyMDE1LTExLTEwIDIwOjEzOjUzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNsLmM6CisJICBnbHNsOiBmaXggY2hlY2sgZm9yIGdsc2wgdmVyc2lvbiBhZ2FpbnN0IEdMIGNvbnRleHQgaW52ZXJzaW9uCisJICBBbnkgR0xTTCB2ZXJzaW9uIHRoYXQgd2FzIGxlc3MgdGhhbiB0aGUgcHJvdmlkZWQgR0wgdmVyc2lvbiB3b3VsZCBmYWlsCisKKzIwMTUtMTEtMTAgMTA6MDI6MzggKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IEZpeCBwYWQgbWVtb3J5IGxlYWsuCisJICBUaGUgc3RhdGljIHBhZHMgZ290IGZyb20gcXVldWUgYW5kIHVyaV9oYW5kbGVyIGFyZSBub3QgYmVpbmcgZnJlZWQKKwkgIHJlc3VsdGluZyBpbiBtZW1vcnkgbGVha3MuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODU5CisKKzIwMTUtMTEtMTAgMTM6MTM6NTAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZW51bXMuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOgorCSAgZ2w6IGZvcndhcmQgZGVjbGFyZSBzb21lIGVudW1zCisJICBTcGVjaWZpY2FsbHkgdGhlIEdzdEdMVGV4dHVyZVRhcmdldCBlbnVtCisKKzIwMTUtMTEtMTAgMTM6MTE6MzcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJzdHJpbmdzLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJzdHJpbmdzLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmM6CisJICBnbHNsc3RhZ2U6IGV4cG9zZSB0aGUgZGVmYXVsdCBzaGFkZXIgc3RyaW5ncyBhcyBwdWJsaWMKKwkgIEFkZCBzb21lIG90aGVyIHNpbXBsZSBzdHJpbmdzIGZvciBleHRlcm5hbC1vZXMgdGV4dHVyZXMgb3IgdHJhbnNmb3JtaW5nCisJICB0aGUgdGV4dHVyZSBjb29yZGluYXRlcyB3aXRoIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4CisKKzIwMTUtMTEtMDYgMDM6MDU6MzEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogd2FpdCBvbiB0aGUgc3luYyBtZXRhIGZvciBpbnB1dCBidWZmZXJzCisKKzIwMTUtMTEtMDUgMDA6MTM6MDEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmM6CisJICBnbGltYWdlc2luazogd2FpdCBvbiB0aGUgcHJvdmlkZWQgc3luYyBtZXRhIHByb3ZpZGVkIHRvIGdsaW1hZ2VzaW5rCisKKzIwMTUtMTEtMDggMjI6MTQ6MDEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0Lmg6CisJICBnbGNvbG9yY29udmVydDogdXNlIHRoZSBjb3JyZWN0IG9lcyB0YXJnZXQgc3RyaW5nIGluIHRoZSB0ZW1wbGF0ZSBjYXBzCisKIDIwMTUtMTEtMTAgMTI6MzI6MzkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KIAogCSogZXh0L2d0ay9nc3RndGtnbHNpbmsuYzoKQEAgLTMxOCwxMyArNzY0NiwyNiBAQAogCSAgd2lsbCByZXR1cm4gRU1QVFkgYW5kIHRoZXJlZm9yZSBmYWlsIG5lZ290aWF0aW9uLgogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzg1NAogCi0yMDE1LTExLTA2IDE2OjE2OjMyICswMTAwICBFZHdhcmQgSGVydmV5IDxlZHdhcmRAY2VudHJpY3VsYXIuY29tPgorMjAxNS0xMS0xMCAxNDoyMTozMyArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CiAKLQkqIGdzdC9kdmJzdWJvdmVybGF5L2dzdGR2YnN1Ym92ZXJsYXkuYzoKLQkgIGR2YnN1Ym92ZXJsYXk6IERvbid0IHNlbmQgZmx1c2ggZXZlbnRzCi0JICBJdCBpcyB1cCB0byB0aGUgZWxlbWVudCBoYW5kbGluZyB0aGUgc2VlayB0byBzZW5kIGZsdXNoIGV2ZW50cwotCSAgZG93bnN0cmVhbSwgb3RoZXJ3aXNlIHdlIGVuZCB1cCB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIHVwc3RyZWFtCi0JICB3b3VsZCBnZXQgdW5leHBlY3RlZCBHU1RfRkxPV19GTFVTSElORworCSogc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvdGV4dHVyZWNhY2hlLm06CisJICBhcHBsZW1lZGlhOiBmaXggdnRkZWMgdGV4dHVyZSBzaGFyaW5nIG9uIGlvcyA5LjEKKwkgIFVzZSBnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGUgdG8gZ2V0IHRoZSBmb3JtYXQgcGFzc2VkIHRvCisJICBDVk9wZW5HTEVTVGV4dHVyZUNhY2hlQ3JlYXRlVGV4dHVyZUZyb21JbWFnZS4gQmVmb3JlIHRoaXMgY2hhbmdlIGV4dHJhY3RpbmcgdGhlCisJICBzZWNvbmQgdGV4dHVyZSBmcm9tIHRoZSBwaXhlbCBidWZmZXIgd2FzIGZhaWxpbmcgb24gaW9zIDkuMS4KKworMjAxNS0xMS0wNiAxNzoyNDo1MiAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy90ZW1wbGF0ZW1hdGNoLmM6CisJICB0ZW1wbGF0ZW1hdGNoOiBhZGQgYSBmcmFtZXJhdGUgdG8gdGVzdCBjYXBzCisJICBUaGUgcGFkIHRlbXBsYXRlIHJlcXVpcmVzIGEgZnJhbWVyYXRlLCBzbyB1c2UgaXQgdG8gcHJldmVudAorCSAgY2FwcyBuZWdvdGlhdGlvbiBmYWlsdXJlcy4KKwkgIEZpeGVzIHRoZSB1bml0IHRlc3QKKworMjAxNS0xMS0wNiAyMDozODo1NiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvLmdpdGlnbm9yZToKKwkgIHRlc3RzOiB1cGRhdGUgLmdpdGlnbm9yZSBmb3IgbmV3IHRlc3QgYmluYXJpZXMKIAogMjAxNS0xMS0wNiAxOToyNjoyMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KIApAQCAtMzM4LDYgKzc2NzksNDU1IEBACiAJICBvZiBHU1RfRkxPV19GTFVTSElORyB3aGVuIHRyeWluZyB0byBmb3J3YXJkIHN0aWNreQogCSAgZXZlbnRzIGF0IGp1c3QgdGhlIHdyb25nIG1vbWVudC4KIAorMjAxNS0xMS0wNiAxNjoxNjozMiArMDEwMCAgRWR3YXJkIEhlcnZleSA8ZWR3YXJkQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2R2YnN1Ym92ZXJsYXkvZ3N0ZHZic3Vib3ZlcmxheS5jOgorCSAgZHZic3Vib3ZlcmxheTogRG9uJ3Qgc2VuZCBmbHVzaCBldmVudHMKKwkgIEl0IGlzIHVwIHRvIHRoZSBlbGVtZW50IGhhbmRsaW5nIHRoZSBzZWVrIHRvIHNlbmQgZmx1c2ggZXZlbnRzCisJICBkb3duc3RyZWFtLCBvdGhlcndpc2Ugd2UgZW5kIHVwIHdpdGggYSBzaXR1YXRpb24gd2hlcmUgdXBzdHJlYW0KKwkgIHdvdWxkIGdldCB1bmV4cGVjdGVkIEdTVF9GTE9XX0ZMVVNISU5HCisKKzIwMTUtMTEtMDYgMTk6MjM6MDkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmM6CisJKiBleHQvY3VybC9nc3RjdXJsZnRwc2luay5jOgorCSogZXh0L2R0bHMvZ3N0ZHRsc2RlYy5jOgorCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtaXJyb3IuYzoKKwkqIGdzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5jOgorCSAgRml4IGNvZGUgaW5kZW50YXRpb24KKworMjAxNS0xMC0yMiAxMzo0MDozNiArMDIwMCAgQnJhbmtvIFN1YmFzaWMgPGJyYW5rb0BheGlzLmNvbT4KKworCSogZ3N0L29udmlmL2dzdHJ0cG9udmlmdGltZXN0YW1wLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jOgorCSAgcnRwb252aWZ0aW1lc3RhbXA6IHVzZSBzdHJlYW0gdGltZSBmb3IgdGltZXN0YW1wCisJICBUaGUgT252aWYgU3RyZWFtaW5nIFNwZWNpZmljYXRpb24gc3BlY2lmaWVzIHRoYXQgdGhlIE5UUCB0aW1lc3RhbXBzCisJICBpbiB0aGUgT252aWYgZXh0ZW5zaW9uIGhlYWRlciBpbmRpY2FlcyB0aGUgYWJzb2x1dGUgVVRDIHRpbWUgYXNzb2NpYXRlZAorCSAgd2l0aCB0aGUgYWNjZXNzIHVuaXQuIEJ1dCBieSB1c2luZyBydW5uaW5nIHRpbWUgd2UgY2FuIG5vdCBhY2hpZXZlIHRoYXQsCisJICBzaW5jZSBhIGZyYW1lJ3MgcnVubmluZyB0aW1lIGRlcGVuZHMgb24gdGhlIHBsYXllZCBpbnRlcnZhbCwgd2hldGhlciBhCisJICBub24tZmx1c2hpbmcgaXMgZG9uZSwgZXRjLiBJbnN0ZWFkIHdlIGhhdmUgdG8gdXNlIHRoZSBzdHJlYW0gdGltZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2ODgKKworMjAxNS0xMS0wNiAwOTo0NDo1NyArMDEwMCAgTGludXMgU3ZlbnNzb24gPGxpbnVzc25AYXhpcy5jb20+CisKKwkqIGdzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5jOgorCSogZ3N0L29udmlmL2dzdHJ0cG9udmlmdGltZXN0YW1wLmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jOgorCSAgcnRwb252aWZ0aW1lc3RhbXA6IFVwZGF0ZSBudHAtb2Zmc2V0IGFuZCBkL2UtYml0cyB3aXRoIGEgR3N0RXZlbnQKKwkgIEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1cGRhdGUgdGhlIGN1cnJlbnRseSB1c2VkIG50cC1vZmZzZXQgd2l0aCBhCisJICBjdXN0b20gc2VyaWFsaXplZCBkb3duc3RyZWFtIGV2ZW50LiBUaGUgZWxlbWVudCB3aWxsIHJlYWQgdGhlIG50cC1vZmZzZXQKKwkgIHByb3BlcnR5IHdoZW4gZG9pbmcgdGhlIHN0YXRlIHRyYW5zaXRpb24gZnJvbSBSRUFEWSB0byBQQVVTRUQgYW5kCisJICB1c2UgdGhhdCBvZmZzZXQgdW50aWwgaXQgcmVjZWl2ZXMgYSAiR3N0TnRwT2Zmc2V0IiBldmVudCwgd2hpY2ggYWxzbworCSAgaGFzIGEgIm50cC1vZmZzZXQiIGF0dHJpYnV0ZSBpbiB0aGF0IGl0J3Mgc3RydWN0dXJlLiBJbiBjYXNlIHRoZQorCSAgcHJvcGVydHkgaXMgbm90IHNldCBhbmQgbm8gZXZlbnQgaGFzIGJlZW4gcmVjZWl2ZWQsIHRoZSBlbGVtZW50IHdpbGwKKwkgIGd1ZXNzIHRoZSBucHQtb2Zmc2V0IHdpdGggaGVscCBvZiB0aGUgY2xvY2suIElmIG5vIGNsb2NrIGNhbiBiZQorCSAgcmV0cmlldmVkLCB0aGUgZWxlbWVudCB3aWxsIGVycm9yIG91dCBhbmQgc3RvcCB0aGUgZGF0YSBmbG93LgorCSAgVGhlIHNhbWUgZXZlbnQgaXMgYWxzbyB1c2VkIGZvciB1cGRhdGluZyB0aGUgRC9FLWJpdHMgaW4gdGhlIFJUUAorCSAgZXh0ZW5zaW9uIGhlYWRlci4gVGhlIGRpc2NvbnQgZmxhZyBpbiBhIGJ1ZmZlciBjYW4gYmUgc2V0IHdoZW52ZXIgYQorCSAgbGl2ZS9uZXR3b3JrIHNvdXJjZSBsb29zZXMgYSBmcmFtZSwgYnV0IHRoYXQgaXMgbm90IHRoZSB0eXBlIG9mCisJICBkaXNjb250aW51aXR5IHRoYXQgdGhlIG9udmlmIGV4dGVuc2lvbiBoZWFkZXIgc2hvdWxkIHJlZmxlY3QuIFRoZQorCSAgaGVhZGVyIGlzIG1haW5seSB1c2VkIGZvciBwbGF5YmFjayBvZiBhIHRyYWNrIGNvbmNlcHQsIGluIHdoaWNoCisJICBnYXBzIGNhbiBiZSBwcmVzZW50LCBhbmQgaXQncyB0aG9zZSBraW5kIG9mIGdhcHMgdGhhdCBzaG91bGQgYmUKKwkgIGhpZ2hsaWdodGVkIHdpdGggdGhlIEQtIGFuZCBFLWJpdHMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3Njg4CisKKzIwMTUtMTEtMDYgMDk6NDQ6MTYgKzAxMDAgIExpbnVzIFN2ZW5zc29uIDxsaW51c3NuQGF4aXMuY29tPgorCisJKiBnc3Qvb252aWYvZ3N0cnRwb252aWZ0aW1lc3RhbXAuYzoKKwkqIGdzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5oOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYzoKKwkgIHJ0cG9udmlmdGltZXN0YW1wOiBEbyBub3QgcmVhcmFuZ2Ugb3JkZXIgb2YgZGF0YQorCSAgSWYgYSBidWZmZXIgb3IgYSBidWZmZXIgbGlzdCBpcyBjYWNoZWQsIG5vIGV2ZW50cyBzZXJpYWxpemVkIHdpdGggdGhlCisJICBkYXRhIHN0cmVhbSBzaG91bGQgZ2V0IHRocm91Z2guIFRoZSBjYWNoZWQgYnVmZmVycyBhbmQgZXZlbnRzIHNob3VsZAorCSAgYmUgcHVyZ2VkIHdoZW4gd2Ugc3RvcCBmbHVzaGluZy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2ODgKKworMjAxNS0xMC0xMyAxNDoyMTo0NyArMDIwMCAgQnJhbmtvIFN1YmFzaWMgPGJyYW5rb0BheGlzLmNvbT4KKworCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9ydHBvbnZpZi5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwb252aWZwYXJzZS5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYzoKKwkgIHJ0cG9udmlmOiBzcGxpdCB1bml0IHRlc3RzIGluIHNldmVyYWwgZmlsZXMKKwkgIFNwbGl0IHRoZSB1bml0IHRlc3RzIGZvciBydHBvbnZpZnRpbWVzdGFtcCBhbmQgcnRwb252aWZwYXJzZQorCSAgZWxlbWVudHMgaW4gc2VwYXJhdGUgZmlsZXMuCisJICBTZXR1cCBhbmQgY2xlYW51cCB0aGUgZWxlbWVudCBhbmQgcGFkcyBpbiBmaXh1cmVzLiBNYWtlIHRoZSB0ZXN0cyB3b3JrCisJICB3aXRoIENLX0ZPUks9bm8gYXMgd2VsbCwgYnkgY2xlYW5pbmcgdXAgdGhlICdidWZmZXJzJyBsaXN0IHdoZW4gbmVlZGVkLgorCSAgTWFrZSB1bml0IHRlc3RzIHdvcmsgd2hlbiBydW4gaW4gdmFsZ3JpbmQgYnkgdW5yZWZmaW5nIGFsbCBidWZmZXJzLAorCSAgYW5kIGJ5IG5vdCBhbGxvY2F0aW5nIGFueSBwYXlsb2FkIGluIFJUUCBidWZmZXJzLiBTaW5jZSB3ZSdyZSBub3QKKwkgIGRvaW5nIGFueXRoaW5nIHdpdGggdGhlIHBheWxvYWQgcGFydCwgYnV0IHdlJ3JlIG1lbWNtcC1hcmluZyB0aGUKKwkgIGNvbXBsZXRlIGJ1ZmZlciBtZW1vcnksIHZhbGdyaW5kIGNvbXBsYWluZWQgYWJvdXQgbm9uLWluaXRpYWxpemVkCisJICBtZW1vcnkgYmVpbmcgdXNlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2ODgKKworMjAxNS0wOS0wNCAwOTo1OTowNiArMDIwMCAgUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5oOgorCSAgYWRhcHRpdmVkZW11eDogaW1wcm92ZWQgYml0cmF0ZSBlc3RpbWF0aW9ucworCSAgQml0cmF0ZSBlc3RpbWF0aW9uIGlzIG5vdyBoYW5kbGVkIHRocm91Z2ggYSBxdWV1ZTIgZWxlbWVudCBhZGRlZCBhZnRlcgorCSAgdGhlIHNvdXJjZSBlbGVtZW50IHVzZWQgdG8gZG93bmxvYWQgZnJhZ21lbnRzLgorCSAgT3JpZ2luYWwgaGxzZGVtdXggcGF0Y2ggYnkgRHVuY2FuIFBhbG1lciA8ZHBhbG1lckBkaWdpc29mdC50dj4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MzM5NTkKKworMjAxNS0xMS0wNiAxMjo1OTo1MSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2RzaG93c3Jjd3JhcHBlci9nc3Rkc2hvdy5jcHA6CisJICBkc2hvdzogZml4IEdMaXN0IGxlYWsKKwkgIF9yZW1vdmVfbGluaygpIHdvdWxkIG5vdCBmcmVlIHRoZSBhY3R1YWwgbGlzdCBub2Rlcy4KKworMjAxNS0xMS0wNiAxMjozMTowOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmM6CisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFyc2UuYzoKKwkgIGdsc2hhZGVyLCB0c2RlbXV4OiBzaW1wbGlmeSBjb2RlCisJICBKdXMgdXNlIF9kZWxldGVfbGluaygpIGluc3RlYWQgb2YgX3JlbW92ZV9saW5rKCkgKyBfZnJlZTEoKQorCisyMDE1LTExLTA2IDEyOjMwOjEyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xtaXhlcmJpbi5jOgorCSAgZ2xtaXhlcmJpbjogZml4IG1pbm9yIGxlYWsKKwkgIERvbid0IGxlYWsgcmVtb3ZlZCBsaXN0IG5vZGUuCisKKzIwMTUtMTEtMDYgMTA6MjI6NDIgKzAxMDAgIFRoaWJhdWx0IFNhdW5pZXIgPHRzYXVuaWVyQGdub21lLm9yZz4KKworCSogZXh0L2ZhYWMvZ3N0ZmFhYy5jOgorCSAgZmFhYzogSW5pdGlhbGl6ZSBkZWJ1ZyBjYXRlZ29yeSBzb29uIGVub3VnaAorCSAgQXZvaWRpbmcgYXNzZXJ0aW9ucworCisyMDE1LTExLTA1IDEwOjEyOjQxICswMDAwICBKdWxpYW4gQm91emFzIDxqdWxpYW4uYm91emFzQHZjYXRlY2hub2xvZ3kuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJICBjb25maWd1cmUuYWM6IEFkZGVkIC0td2l0aC1obHMtY3J5cHRvPWF1dG98bmV0dGxlfGxpYmdjcnlwdHxvcGVuc3NsIG9wdGlvbiB0byBidWlsZCB0aGUgc291cmNlIHVzaW5nIHRoZSBkZXNpcmVkIGNyeXB0b2dyYXBoaWMgbGlicmFyeSBmb3IgSExTCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1MzE5CisKKzIwMTUtMTEtMDYgMDA6NDg6NDIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvbTN1OC5jOgorCSAgaGxzOiBtM3U4OiBkb24ndCBsZWFrIEdMaXN0IG5vZGVzIHdoZW4gbWF0Y2hpbmcgdXAgdmFyaWFudCBsaXN0cyBhZnRlciBtYXN0ZXIgbGlzdCB1cGRhdGUKKworMjAxNS0xMS0wNSAxMjozNjo0OCArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5jOgorCSAgYWdncmVnYXRvcjogdXNlIEdTVF9TVElNRV9GT1JNQVQgZm9yIEdzdENsb2NrVGltZURpZmYKKwkgIE5vIG5lZWQgdG8gbWFudWFsbHkgaGFuZGxlIG5lZ2F0aXZlIHZhbHVlIG9mIGRlYWRsaW5lLCBHU1RfU1RJTUVfRk9STUFUIGRvZXMKKwkgIGV4YWN0bHkgdGhpcy4KKworMjAxNS0xMS0wNSAxMjoxNzowMCArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmM6CisJICByZXNpbmR2ZDogdXNlIEdTVF9TVElNRV9GT1JNQVQgZm9yIEdzdENsb2NrVGltZURpZmYKKwkgIE5vIG5lZWQgdG8gdXNlIEdfR0lOVDY0X0ZPUk1BVCBmb3IgcG90ZW50aWFsbHkgbmVnYXRpdmUgdmFsdWVzIG9mCisJICBHc3RDbG9ja1RpbWVEaWZmLiBTaW5jZSAxLjYgdGhlc2UgY2FuIGJlIGhhbmRsZWQgd2l0aCBHU1RfU1RJTUVfRk9STUFULgorCSAgUGx1cyBpdCBjcmVhdGVzIG1vcmUgcmVhZGFibGUgdmFsdWVzIGluIHRoZSBsb2dzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzQ4MAorCisyMDE1LTExLTA1IDEyOjExOjE5ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvb3B1cy9nc3RvcHVzZGVjLmM6CisJICBvcHVzZGVjOiBVcGRhdGUgc2luayBwYWQgdGVtcGxhdGVzCisJICBXZSBhbHdheXMgcmVxdWlyZSB0aGUgY2hhbm5lbC1tYXBwaW5nLWZpZWxkLiBJZiBpdCdzIDAgd2UgcmVxdWlyZSBub3RoaW5nCisJICBlbHNlLCBvdGhlcndpc2Ugd2UgbmVlZCBjaGFubmVscywgc3RyZWFtLWNvdW50IGFuZCBjb3VwbGVkIGNvdW50IHRvIGJlCisJICBhdmFpbGFibGUuCisKKzIwMTUtMTEtMDMgMTk6MDk6MzMgLTA4MDAgIFN0ZWZhbiBTYXVlciA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuYzoKKwkgIGFnZ3JlZ2F0b3I6IGRvbid0IGNvbXBhcmUgdGVtcGwgaW5zdGFuY2UgcG9pbnRlcnMKKwkgIE9uZSBjYW4gcGFzcyB0aGUgUGFkVGVtcGxhdGUgZnJvbSB0aGUgZWxlbWVudF9jbGFzcyBvciB0aGUgb25lIGZyb20gdGhlIGZhY3RvcnkuCisJICBXaGlsZSB0aGV5IGhhdmUgdGhlIHNhbWUgY29udGVudCwgdGhlIGFkZHJlc3NlcyBhcmUgZGlmZmVyZW50LgorCisyMDE1LTExLTA0IDAwOjEyOjUyICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9vcHVzLmM6CisJICBvcHVzOiBSZW1vdmUgaW52YWxpZCB1bml0IHRlc3QKKwkgIE9wdXMgaGVhZGVycyBzaG91bGQgbmV2ZXIgYmUgaW4tYmFuZCwgc28gZG9uJ3QgdGVzdCBmb3IgY29ycmVjdAorCSAgaGFuZGxpbmcgb2YgdGhhdC4KKworMjAxNS0xMS0wNCAwMDoxMjoyMiArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c2VuYy5jOgorCSAgb3B1c2VuYzogQ3JlYXRlIGFuIGVtcHR5IHRhZ2xpc3QgaWYgdGhlcmUgaXMgbm9uZQorCSAgVGhlcmUgYWx3YXlzIGhhdmUgdG8gYmUgMiBidWZmZXJzIGluIHRoZSBzdHJlYW1oZWFkZXJzLCBldmVuIGlmCisJICB0aGUgY29tbWVudCBidWZmZXIgaXMgYmFzaWNhbGx5IGVtcHR5LgorCisyMDE1LTExLTAzIDE0OjQxOjU3IC0wNTAwICBPbGl2aWVyIENyw6p0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYmFzZS9nc3RhZ2dyZWdhdG9yLmM6CisJICBhZ2dyZWdhdG9yOiBTZXQgdG8gcnVubmluZyBpbiBhIHNpbmdsZSBwbGFjZQorCSAgT25seSBzZXQgdG8gcnVubmluZyB3aGVuIHRoZSB0aHJlYWQgaXMgYWN0dWFsbHkgc3RhcnRlZC4KKworMjAxNS0xMS0wMyAxNDozNzoyNiAtMDUwMCAgT2xpdmllciBDcsOqdGUgPG9saXZpZXIuY3JldGVAY29sbGFib3JhLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5jOgorCSAgYWdncmVnYXRvcjogRG9jdW1lbnQgbW9yZSBsb2NraW5nCisKKzIwMTUtMTEtMDMgMTk6NTM6MDAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9tcGVndHNkZW11eC90c2RlbXV4LmM6CisJICB0c2RlbXV4OiBEb24ndCBjcmVhdGUgYW4gaW5jb21wbGV0ZSBPcHVzSGVhZCBidXQgc2V0IGFsbCB0aGUgb3RoZXIgY2FwcyBmaWVsZHMgaW5zdGVhZAorCSAgT3B1c0hlYWQgaXMgb3B0aW9uYWwsIHRoZSBvdGhlciBmaWVsZHMgYXJlIG5vdC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcxNTIKKworMjAxNS0xMS0wMyAxOTo1MTowMyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYzoKKwkqIGdzdC9tcGVndHNtdXgvTWFrZWZpbGUuYW06CisJKiBnc3QvbXBlZ3RzbXV4L21wZWd0c211eC5jOgorCSAgdHNtdXg6IFNpbXBsaWZ5IE9wdXMgY2FwcyBwYXJzaW5nIGJ5IHVzaW5nIGNvZGVjdXRpbHMgaGVscGVycworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzE1MgorCisyMDE1LTExLTAzIDE0OjUwOjUzICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvb3B1cy9NYWtlZmlsZS5hbToKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuYzoKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuaDoKKwkqIGV4dC9vcHVzL2dzdG9wdXNlbmMuYzoKKwkqIGV4dC9vcHVzL2dzdG9wdXNoZWFkZXIuYzoKKwkqIGV4dC9vcHVzL2dzdG9wdXNoZWFkZXIuaDoKKwkqIGV4dC9vcHVzL2dzdG9wdXNwYXJzZS5jOgorCSogZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmg6CisJKiBleHQvb3B1cy9nc3RydHBvcHVzZGVwYXkuYzoKKwkqIGV4dC9vcHVzL2dzdHJ0cG9wdXNwYXkuYzoKKwkgIG9wdXM6IEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgbXVsdGljaGFubmVsIGF1ZGlvCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MTUyCisKKzIwMTUtMTEtMDMgMTE6NDE6MDcgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9vcHVzL2dzdG9wdXNwYXJzZS5jOgorCSogZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmg6CisJICBvcHVzcGFyc2U6IEZpeCB1cCBwcmUtc2tpcCBpbiBPcHVzSGVhZCBpZiB1cHN0cmVhbSB1c2luZyBHc3RBdWRpb0NsaXBwaW5nTWV0YQorCSAgTWFrZXMgdHJhbnNtdXhpbmcgZnJvbSBlLmcuIE1QRUctVFMgdG8gT2dnIHNhbXBsZSBhY2N1cmF0ZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcxNTMKKworMjAxNS0xMS0wMiAxODowMjo1NSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c2RlbXV4L01ha2VmaWxlLmFtOgorCSogZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYzoKKwkqIGdzdC9tcGVndHNtdXgvTWFrZWZpbGUuYW06CisJKiBnc3QvbXBlZ3RzbXV4L21wZWd0c211eF9vcHVzLmM6CisJICB0c2RlbXV4L211eDogQWRkIHN1cHBvcnQgZm9yIEdzdEF1ZGlvQ2xpcHBpbmdNZXRhIGZvciBPcHVzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MTUzCisKKzIwMTUtMTEtMDIgMTc6MzM6NTMgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuYzoKKwkgIG9wdXNkZWM6IEhhbmRsZSBHc3RBdWRpb0NsaXBwaW5nTWV0YSBpbnN0ZWFkIG9mIHRoZSBwcmUtc2tpcCBmaWVsZCBpbiB0aGUgT3B1c0hlYWQKKwkgIG9nZ2RlbXV4IGlzIG91dHB1dHRpbmcgdGhlIG1ldGEgbm93LCBhbmQgb25seSBvdXRwdXRzIGlmIGl0IHNob3VsZCByZWFsbHkKKwkgIGFwcGx5IHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4gUHJldmlvdXNseSB3ZSB3b3VsZCBza2lwIE4gc2FtcGxlcyBhbHNvIGlmIHdlCisJICBzdGFydGVkIHRoZSBkZWNvZGVyIGluIHRoZSBtaWRkbGUgb2YgdGhlIHN0cmVhbS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcxNTMKKworMjAxNS0xMS0wMiAxNjo1MjoyOCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c2VuYy5jOgorCSAgb3B1c2VuYzogQWRkIEdzdEF1ZGlvQ2xpcHBpbmdNZXRhIHRvIGJ1ZmZlcnMgdGhhdCBuZWVkIHRvIGJlIGNsaXBwZWQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcxNTMKKworMjAxNS0xMS0wMiAxMDozMDo1MiArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c2VuYy5jOgorCSAgb3B1c2VuYzogRGlzYWJsZSBncmFudWxlIHBvc2l0aW9uIGNhbGN1bGF0aW9ucyBieSB0aGUgYmFzZSBjbGFzcworCSAgSXQgaXMgZG9pbmcgdGhlIHdyb25nIHRoaW5nIGJlY2F1c2Ugb2YgdGhlIE9wdXMgcHJlLXNraXA6IHdoaWxlIHRoZSB0aW1lc3RhbXBzCisJICBhcmUgc2hpZnRlZCBieSB0aGUgcHJlLXNraXAsIHRoZSBncmFudWxlIHBvc2l0aW9ucyBhcmUgbm90IHNoaWZ0ZWQuCisJICBvZ2dtdXggaXMgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nIGhlcmUgYWxyZWFkeS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcxNTMKKworMjAxNS0xMC0zMSAxNTowMjo1MCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c2VuYy5jOgorCSAgb3B1c2VuYzogQWRkIHNvbWUgRklYTUUgY29tbWVudHMgYWJvdXQgY2FsY3VsYXRpbmcgcGFkZGluZyB3aXRoIExQQworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzE1MworCisyMDE1LTEwLTMwIDIwOjU3OjM3ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvb3B1cy9nc3RvcHVzZW5jLmM6CisJKiBleHQvb3B1cy9nc3RvcHVzZW5jLmg6CisJICBvcHVzZW5jOiBFbmNvZGUgZXhhY3RseSB0aGUgYW1vdW50IG9mIHNhbXBsZXMgd2UgZ290IGFzIGlucHV0IGFuZCBwdXQgY29ycmVjdCB0aW1lc3RhbXBzIG9uIGl0CisJICBUaGUgZmlyc3QgZnJhbWUgaGFzIGxvb2thaGVhZCBsZXNzIHNhbXBsZXMsIHRoZSBsYXN0IGZyYW1lIG1pZ2h0IGhhdmUgc29tZQorCSAgcGFkZGluZyBvciB3ZSBtaWdodCBoYXZlIHRvIGVuY29kZSBhbm90aGVyIGZyYW1lIG9mIHNpbGVuY2UgdG8gZ2V0IGFsbCBvdXIKKwkgIGlucHV0IGludG8gdGhlIGVuY29kZWQgZGF0YS4KKwkgIFRoaXMgaXMgYmVjYXVzZSBvZiBhKSB0aGUgbG9va2FoZWFkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGVuY29kaW5nLCB3aGljaAorCSAgc2hpZnRzIGFsbCBkYXRhIGJ5IHRoYXQgYW1vdW50IG9mIHNhbXBsZXMgYW5kIGIpIHRoZSBwYWRkaW5nIG5lZWRlZCB0byBmaWxsCisJICB0aGUgdmVyeSBsYXN0IGZyYW1lIGNvbXBsZXRlbHkuCisJICBJZGVhbGx5IHdlIHdvdWxkIHVzZSBMUEMgdG8gY2FsY3VsYXRlIHNvbWV0aGluZyBiZXR0ZXIgdGhhbiBzaWxlbmNlIGZvciB0aGUKKwkgIHBhZGRpbmcgdG8gbWFrZSB0aGUgZW5jb2RpbmcgYXMgc21vb3RoIGFzIHBvc3NpYmxlLgorCSAgV2l0aCB0aGlzIHdlIGdldCBleGFjdGx5IHRoZSBzYW1lIGFtb3VudCBvZiBzYW1wbGVzIGFnYWluIGluIGFuCisJICBvcHVzZW5jICEgb3B1c2RlYyBwaXBlbGluZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcxNTMKKworMjAxNS0xMC0zMCAyMDo0NzoyMCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c2VuYy5jOgorCSogZXh0L29wdXMvZ3N0b3B1c2hlYWRlci5jOgorCSogZXh0L29wdXMvZ3N0b3B1c2hlYWRlci5oOgorCSogZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmM6CisJICBvcHVzZW5jOiBQdXQgbG9va2FoZWFkL3ByZS1za2lwIGludG8gdGhlIE9wdXNIZWFkIGhlYWRlcgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzE1MworCisyMDE1LTEwLTI1IDE3OjI3OjM5ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzbXV4L01ha2VmaWxlLmFtOgorCSogZ3N0L21wZWd0c211eC9tcGVndHNtdXguYzoKKwkqIGdzdC9tcGVndHNtdXgvbXBlZ3RzbXV4X29wdXMuYzoKKwkqIGdzdC9tcGVndHNtdXgvbXBlZ3RzbXV4X29wdXMuaDoKKwkqIGdzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uYzoKKwkqIGdzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uaDoKKwkgIHRzbXV4OiBBZGQgc3VwcG9ydCBmb3IgT3B1cworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzA0OQorCisyMDE1LTEwLTI0IDE0OjI3OjQzICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUuYW06CisJKiBnc3QvbXBlZ3RzZGVtdXgvZ3N0bXBlZ2Rlc2MuaDoKKwkqIGdzdC9tcGVndHNkZW11eC90c2RlbXV4LmM6CisJICB0c2RlbXV4OiBBZGQgc3VwcG9ydCBmb3IgT3B1cworCSAgQ29kZSBwYXJ0aWFsbHkgYmFzZWQgb24KKwkgIGh0dHBzOi8vZ2l0LnZpZGVvbGFuLm9yZy8/cD1mZm1wZWcuZ2l0O2E9Y29tbWl0O2g9NzQxNDFmNjkzZGVkMmZiZjc1YWY1NmZmZjMwOWQyZGIzNTE4MzYzNQorCSAgYW5kIGJhc2VkIG9uIHRoZSBzcGVjIGRyYWZ0IGF0CisJICBodHRwczovL3dpa2kueGlwaC5vcmcvT3B1c1RTCisJICBNYWtlcyBpdCBwb3NzaWJsZSB0byBkZW11eAorCSAgaHR0cDovL3d3dy5vYmUudHYvRG93bmxvYWRzL29wdXMudHMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcwNDkKKworMjAxNS0xMC0yNSAxOTozMTo1MSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c211eC9tcGVndHNtdXguYzoKKwkgIHRzbXV4OiBEb24ndCBsZWFrIGJ1ZmZlciBpbiBlcnJvciBjYXNlcworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzA0OQorCisyMDE1LTEwLTI1IDE5OjI5OjUzICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzbXV4L21wZWd0c211eC5jOgorCSAgdHNtdXg6IENhbGwgcHJlcGFyZSBmdW5jdGlvbiBmb3IgZWFjaCBjb2xsZWN0ZWQgYnVmZmVyCisJICBOb3Qgd2hlbiBjbGlwcGluZyBidWZmZXJzLCBhcyB0aGF0IGRvZXNuJ3QgaGFwcGVuIGZvciBldmVyeSBidWZmZXIuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MDQ5CisKKzIwMTUtMTAtMjUgMTg6MDk6MjQgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9tcGVndHMvZ3N0bXBlZ3RzZGVzY3JpcHRvci5jOgorCSogZ3N0LWxpYnMvZ3N0L21wZWd0cy9nc3RtcGVndHNkZXNjcmlwdG9yLmg6CisJICBtcGVndHNkZXNjcmlwdG9yOiBBZGQgQVBJIGZvciBjcmVhdGluZyBleHRlbmRlZCBkZXNjcmlwdG9ycyBhbmQgZml4IHdyaXRpbmcgdGhlbQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzA0OQorCisyMDE1LTExLTAyIDIxOjE2OjE1IC0wODAwICBTdGVmYW4gU2F1ZXIgPGVuc29uaWNAdXNlcnMuc2YubmV0PgorCisJKiBleHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuY3BwOgorCSAgb3BlbmN2OiBjYXN0IHBhcmFtc3BlYyBmbGFncyB0byBmaXggdGhlIGJ1aWxkIGZvciBjKysKKwkgIEFsbCB0aGUgb3RoZXIgZWxlbWVudHMgaW4gdGhpcyBwbHVnaW4gZG8gdGhpcyBhbHJlYWR5LgorCisyMDE1LTExLTAzIDE1OjA1OjIwICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBzeXMvZHZiL2dzdGR2YnNyYy5jOgorCSAgZHZic3JjOiB1c2UgR1NUX1NUSU1FX0FSR1MgZm9yIEdzdENsb2NrVGltZURpZmYKKwkgIE5vIG5lZWQgdG8gdXNlIEdfR0lOVDY0X0ZPUk1BVCBmb3IgcG90ZW50aWFsbHkgbmVnYXRpdmUgdmFsdWVzIG9mCisJICBHc3RDbG9ja1RpbWVEaWZmLiBTaW5jZSAxLjYgdGhlc2UgY2FuIGJlIGhhbmRsZWQgd2l0aCBHU1RfU1RJTUVfQVJHUy4KKwkgIFBsdXMgaXQgY3JlYXRlcyBtb3JlIHJlYWRhYmxlIHZhbHVlcyBpbiB0aGUgbG9ncy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc0ODAKKworMjAxNS0xMS0wMyAxNTowMDowMSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSAgYW1jdmlkZW9kZWM6IHVzZSBHU1RfU1RJTUVfQVJHUyBmb3IgR3N0Q2xvY2tUaW1lRGlmZgorCSAgTm8gbmVlZCB0byBtYW51YWxseSBoYW5kbGUgbmVnYXRpdmUgdmFsdWUgb2YgZGVhZGxpbmUsIEdTVF9TVElNRV9BUkdTIGRvZXMKKwkgIGV4YWN0bHkgdGhpcy4KKworMjAxNS0xMS0wMyAxMDo0Mjo0MCArMDAwMCAgSHl1bmlsIFBhcmsgPGh5dW5pbDQ2LnBhcmtAc2Ftc3VuZy5jb20+CisKKwkqIGV4dC93YXlsYW5kL2dzdHdheWxhbmRzaW5rLmM6CisJICB3YXlsYW5kc2luazogQWRkIGV4Y2VwdGlvbiBjb2RlIGZvciBzZXR0aW5nIHdsX3N1cmZhY2UKKwkgIFdheWxhbmRzaW5rIG5lZWRzIGV4Y2VwdGlvbiBjb2RlIGluIGdzdF93YXlsYW5kX3Npbmtfc2V0X3dpbmRvd19oYW5kbGUoKS4KKwkgIEFmdGVyIG1ha2luZyBzaW5rLT53aW5kb3csIFVzZXIgY2FuIGNhbGwKKwkgIGdzdF93YXlsYW5kX3Npbmtfc2V0X3dpbmRvd19oYW5kbGUoKS4gSXQgaXMgdGhlIHVzZXIncyBmYXVsdCwgYnV0CisJICBXYXlsYW5kc2luayBuZWVkcyB0byBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgaWYgbm90IHRoZW4gc2luay0+d2luZG93IGlzCisJICBjaGFuZ2VkIGFuZCByZW5kZXJpbmcgZmFpbHMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NDgyCisKKzIwMTUtMDQtMDkgMTM6MTc6MDEgKzA5MDAgIEh5dW5pbCBQYXJrIDxoeXVuaWw0Ni5wYXJrQHNhbXN1bmcuY29tPgorCisJKiBleHQvd2F5bGFuZC9nc3R3YXlsYW5kc2luay5jOgorCSAgd2F5bGFuZHNpbms6IEFkZCBleGNlcHRpb24gY29kZSBmb3Igc2V0dGluZyB3bF9kaXNwbGF5CisJICBXYXlsYW5kc2luayBuZWVkcyBleGNlcHRpb24gY29kZSBpbiBnc3Rfd2F5bGFuZF9zaW5rX3NldF9jb250ZXh0KCkuIEFmdGVyCisJICBjYWxsaW5nIGdzdF93YXlsYW5kX3Npbmtfc2V0X2NvbnRleHQoKSwgYmVsb3cgY29kZSBpcyBzZXQuCisJICBHU1RfRUxFTUVOVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+c2V0X2NvbnRleHQgKGVsZW1lbnQsIGNvbnRleHQpOyBidXQsIElmCisJICB1c2VyIGNhbiBjYWxsIG9uZW1vcmUuIEl0IGlzIHVzZXIncyBmYXVsdC4gYnV0IHdheWxhbmRzaW5rIG5lZWQgdG8KKwkgIGV4Y2VwdGlvbi4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDc0ODIKKworMjAxNS0xMS0wMiAyMDoxMDozNSAtMDUwMCAgT2xpdmllciBDcsOqdGUgPG9saXZpZXIuY3JldGVAY29sbGFib3JhLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5jOgorCSAgYWdncmVnYXRvcjogSG9sZCBvYmplY3QgbG9jayB3aGlsZSBtYW5pcHVsYXRpbmcgdGhlIHNlZ21lbnQKKwkgIE1ha2Ugc3VyZSB0aGUgb2JqZWN0IGxvY2sgaXMgaGVsZCB3aGVuIGFnZ3JlZ2F0b3ItPnNlZ21lbnQgaXMKKwkgIG1vZGlmaWVkLgorCisyMDE1LTExLTAyIDE5OjQwOjI4IC0wNTAwICBPbGl2aWVyIENyw6p0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QvYXVkaW9taXhlci9nc3RhdWRpb2FnZ3JlZ2F0b3IuYzoKKwkgIGF1ZGlvYWdncmVnYXRvcjogSW1wcm92ZSBsb2cgbWVzc2FnZXMKKwkgIE1ha2UgdGhlIGxldmVsIG9mIGxvZyBtZXNzYWdlcyBzYW5lciBhbmQgaW1wcm92ZSBzb21lLgorCisyMDE1LTExLTAyIDE5OjA1OjAxIC0wNTAwICBPbGl2aWVyIENyw6p0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYmFzZS9nc3RhZ2dyZWdhdG9yLmM6CisJICBhZ2dyZWdhdG9yOiBSZW1vdmUgZGVhZCBjb2RlCisJICBUaGlzIGNvZGUgd2lsbCBuZXZlciBiZSBjYWxsZWQgYXMgbWF4Pj1taW4gaW4gYWxsIGNhc2VzLiBJZiB0aGUgdXBzdHJlYW0KKwkgIGxhdGVuY3kgcXVlcnkgcmV0dXJuZWQgbWluPm1heCwgdGhlIGZ1bmN0aW9uIGFscmVhZHkgcmV0dXJuZWQgYW5kIGFsbAorCSAgdmFsdWVzIHRoYXQgYXJlIGFkZGVkIHRvIHRob3NlIGhhdmUgbWF4Pj0gbWluLgorCisyMDE1LTExLTAyIDE3OjAyOjQ3ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBnc3QvbXBlZ3RzbXV4L21wZWd0c211eC5jOgorCSAgbXBlZ3RzbXV4OiB1c2UgR1NUX1NUSU1FX0FSR1MgZm9yIEdzdENsb2NrVGltZURpZmYKKwkgIE5vIG5lZWQgdG8gbWFudWFsbHkgaGFuZGxlIG5lZ2F0aXZlIHZhbHVlcyBvZiBiZXN0LT5kdHMgaW4KKwkgIEdTVF9ERUJVR19PQkpFQ1QuIFVzZSBHU1RfU1RJTUVfQVJHUyBmb3IgdGhpcy4KKworMjAxNS0xMS0wMiAxNjo1ODo1NyArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvYWdncmVnYXRvci5jOgorCSAgdmlkZW9hZ2dyZWdhdG9yOiB1c2UgR1NUX1NUSU1FX0FSR1MgZm9yIEdzdENsb2NrVGltZURpZmYKKwkgIE5vIG5lZWQgdG8gbWFudWFsbHkgaGFuZGxlIG5lZ2F0aXZlIHZhbHVlcyBvZiBkaWZmLCBHU1RfU1RJTUVfQVJHUyBkb2VzCisJICBleGFjdGx5IHRoaXMuCisKKzIwMTUtMTEtMDIgMTE6MTc6MjkgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIGRhc2hkZW11eDogcmVtb3ZlIHVucmVhY2hhYmxlIGNvZGUKKwkgIFRoZSBzdHJlYW0tPmN1cl9zZWdfdGVtcGxhdGUgaXMgc2V0IHRvIHRoZSBsb3dlc3QgYXZhaWxhYmxlIHNlZ21lbnQKKwkgIHRlbXBsYXRlIChyZXByZXNlbnRhdGlvbiBvciBhZGFwdGF0aW9uIG9yIHBlcmlvZCwgaW4gdGhpcyBvcmRlcikuCisJICBCZWNhdXNlIHRoZSB0ZW1wbGF0ZSBlbGVtZW50cyBhcmUgaW5oZXJpdGVkLCB0aGUgbG93ZXN0IHRlbXBsYXRlIHdpbGwKKwkgIGhhdmUgYWxsIHRoZSBlbGVtZW50cyB0aGUgcGFyZW50cyBoYWQsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sgdGhlCisJICBwYXJlbnQgZm9yIGFuIGVsZW1lbnQgdGhhdCBpcyBub3QgZm91bmQgaW4gdGhlIGNoaWxkIChlZyBpbml0aWFsaXNhdGlvbgorCSAgb3IgaW5kZXgpLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MjcxNAorCisyMDE1LTExLTAyIDEwOjQ4OjExICswMDAwICBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIHRlc3RzOiBhZGQgYSB0ZXN0IGZvciBNUEQgZmlsZSBkdXJhdGlvbiBwYXJzaW5nCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyMzM2CisKKzIwMTUtMTEtMDIgMTA6MjU6MzggKzAwMDAgIFZpbmNlbnQgUGVucXVlcmMnaCA8dmluY2VudC5wZW5xdWVyY2hAY29sbGFib3JhLmNvLnVrPgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIG1wZHBhcnNlcjogYWRkIHNvbWUgY2hlY2tzIHRvIGR1cmF0aW9uIHBhcnNpbmcKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTIzMzYKKworMjAxNS0wOS0yOSAwOTozMjowMiArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSAgZGFzaGRlbXV4OiBhZGRlZCBkdXJhdGlvbiBmb3JtYXQgdmFsaWRhdGlvbgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MjMzNgorCisyMDE1LTExLTAyIDExOjIxOjE0ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIGRhc2hkZW11eDogZml4IG1lbW9yeSBsZWFrCisJICBGcmVlIG5ld19tcGQsIGFsbG9jYXRlZCB3aXRoIGdfc2xpY2VfbmV3KCksIGJlZm9yZSBnb2luZyBvdXQgb2Ygc2NvcGUgaW4KKwkgIGdvdG8gZXJyb3IuCisJICBDSUQgMTMzODA1MAorCiAyMDE1LTExLTAyIDIwOjE0OjExICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KIAogCSogc3lzL2FwcGxlbWVkaWEvdnRlbmMuYzoKQEAgLTM0NiwxNTEgKzgxMzYsMzUwIEBACiAJICBHc3RWaWRlb0VuY29kZXIgYXNzdW1lcyB0aGF0IHRoZSBpbnB1dCBidWZmZXIgaXMgYXZhaWxhYmxlIHVudGlsIF9maW5pc2hfZnJhbWUuCiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2OTUxCiAKKzIwMTUtMTEtMDEgMjM6MzQ6MzIgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuYzoKKwkgIG9wdXNkZWM6IEFzc3VtZSA0OGtIeiBpZiBubyBzYW1wbGUgcmF0ZSBpcyBnaXZlbiBpbiB0aGUgaGVhZGVyCisKIDIwMTUtMTAtMzAgMjA6NTk6NDEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKIAkqIGV4dC9vcHVzL2dzdG9wdXNlbmMuYzoKIAkgIG9wdXNlbmM6IFBsYWNlIDQ4a0h6IGZpcnN0IGluIHRoZSBjYXBzCiAJICBGb3IgYWxsIHRoZSBvdGhlciBzYW1wbGUgcmF0ZXMgdGhlIGVuY29kZXIgd2lsbCBoYXZlIHRvIHJlc2FtcGxlIGludGVybmFsbHkuCiAKLTIwMTUtMTEtMDEgMjM6MzQ6MzIgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisyMDE1LTExLTAyIDEyOjEwOjQ0ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KIAotCSogZXh0L29wdXMvZ3N0b3B1c2RlYy5jOgotCSAgb3B1c2RlYzogQXNzdW1lIDQ4a0h6IGlmIG5vIHNhbXBsZSByYXRlIGlzIGdpdmVuIGluIHRoZSBoZWFkZXIKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmM6CisJICBnc3RnbHV0aWxzOiBmaXggc2hhZGVyIGNvbXBpbGF0aW9uIG9uIE1vdW50YWluIExpb24KKwkgIE1ha2UgZ3N0X2dsX2NvbnRleHRfZ2VuX3NoYWRlci9fY29tcGlsZV9zaGFkZXIgYXNzdW1lIEdTVF9HTFNMX1BST0ZJTEVfRVMgfAorCSAgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZIGFzIHRoZSBwcm9maWxlLiBXaXRob3V0IHRoaXMsIHRoZSBzaGFkZXIgY29tcGlsZXIKKwkgIGRvZXNuJ3QgaW5qZWN0IHRoZSAjdmVyc2lvbiB0YWcgcmVzdWx0aW5nIGluIGEgY29tcGlsYXRpb24gZXJyb3Igb24gTW91bnRhaW4KKwkgIExpb24uCisJICBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3Igb2xkIGNvZGUgdXNpbmcgZ3N0X2dsX2NvbnRleHRfZ2VuX3NoYWRlci4gTmV3IGNvZGUKKwkgIHNob3VsZCB1c2UgdGhlIGdzdF9nbHNsX3N0YWdlXyogQVBJIGRpcmVjdGx5IHdoaWNoIGFsbG93cyB0aGUgY2FsbGVyIHRvCisJICBleHBsaWNpdGx5IHNwZWNpZnkgdmVyc2lvbi9wcm9maWxlLgogCi09PT0gcmVsZWFzZSAxLjYuMSA9PT0KKzIwMTUtMTAtMzEgMTg6NDc6MzkgKzAxMDAgIFBoaWxpcHBlIFJlbm9uIDxwaGlsaXBwZV9yZW5vbkB5YWhvby5mcj4KIAotMjAxNS0xMC0zMCAxNjo0NDo0NSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKwkqIHN5cy93aW5rcy9nc3Rrc3ZpZGVvc3JjLmM6CisJICBrc3ZpZGVvc3JjOiBkb24ndCB0cnkgdG8gYWxpZ24gY3VycmVudCB0aW1lc3RhbXAgb24gcHJldmlvdXMgdGltZXN0YW1wCisJICB0aGlzIGNhdXNlcyBmcmFtZXMgdG8gYmUgZHJvcHBlZC4KKwkgIEJhc2VkIG9uIGEgcGF0Y2ggYnkgU2ViYXN0aWFuIERyw7ZnZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODMzNwogCi0JKiBDaGFuZ2VMb2c6Ci0JKiBORVdTOgotCSogUkVMRUFTRToKLQkqIGNvbmZpZ3VyZS5hYzoKLQkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5oaWVyYXJjaHk6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWNjdXJpcC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWRwY21kZWMueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFkcGNtZW5jLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1haWZmLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hc2ZtdXgueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzc3JlbmRlci54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW9taXhlci54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW92aXN1YWxpemVycy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXV0b2NvbnZlcnQueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJheWVyLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1iejIueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNhbWVyYWJpbi54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY2hyb21hcHJpbnQueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvbG9yZWZmZWN0cy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY3VybC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGF0YXVyaXNyYy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGVidWd1dGlsc2JhZC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHRzZGVjLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmIueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2YnN1Ym92ZXJsYXkueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2ZHNwdS54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmFhZC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmVzdGl2YWwueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZpZWxkYW5hbHlzaXMueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZsaXRlLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmFnbWVudGVkLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVpMHIueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdhdWRpZWZmZWN0cy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2RwLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0ueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdtZWRlYy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3NtLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RzaXJlbi54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taWQzdGFnLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlci54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taW50ZXJsYWNlLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1qcGVnZm9ybWF0LnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1saXZlYWRkZXIueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1pbWljLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tbXMueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1vZHBsdWcueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWcyZW5jLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVncHNkZW11eC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzbXV4LnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNkZW11eC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzbXV4LnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGcxMjMueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wbGV4LnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vZmEueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5hbC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmN2LnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcHVzLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1wY2FwcGFyc2UueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBubS54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmF3cGFyc2UueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlbW92ZXNpbGVuY2UueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlc2luZHZkLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yZmJzcmMueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJ0bXAueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNjaHJvLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zZHAueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNlZ21lbnRjbGlwLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zaG0ueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNtb290aC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc291bmR0b3VjaC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3BhbmRzcC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3BlZWQueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXN1YmVuYy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9wYXJzZXJzYmFkLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FhY2VuYy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdm9hbXJ3YmVuYy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4td2F5bGFuZHNpbmsueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXk0bWRlYy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4temJhci54bWw6Ci0JKiBnc3QtcGx1Z2lucy1iYWQuZG9hcDoKLQkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKLQkgIFJlbGVhc2UgMS42LjEKKzIwMTUtMTAtMzEgMjM6Mjg6MjAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KIAotMjAxNS0xMC0zMCAxNjoyOTo1NyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlcnBvb2wuYzoKKwkgIGdsYnVmZmVycG9vbDogZXhwbGljaXRseSBpbml0aWFsaXplIGEgcG9zc2libHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZQorCSAgVGhlIHJldCB2YXJpYWJsZSBtYXkgYmUgdW5pbml0aWFsaXplZCBhbmQgc28gaXRzIGNvbnRlbnRzIHdlcmUgdW5kZWZpbmVkIGFuZAorCSAgdGhlIHJlc3VsdHMgd2VyZSBlcnJhdGljIChmYWlsaW5nIHdpdGggZ2x2aWRlb21peGVyLCBzdWNjZWVkaW5nIGluIG90aGVyIGNhc2VzKQorCSAgUC5TLiBObyBpZGVhIHdoeSBnY2MvY2xhbmcgZXQgYWwgbmV2ZXIgcGlja2VkIHVwIG9uIHRoaXMgbGlrZSB0aGV5IG5vcm1hbGx5IGRvCisJICAocHJvYmFibHkgZHVlIHRvIHNvbWUgb3B0aW1pc2F0aW9uIHBhc3MgZmlndXJpbmcgb3V0IGl0J3Mgb25seSBzZXQgb25jZS4uLikKIAotCSogcG8vYWYucG86Ci0JKiBwby9hei5wbzoKLQkqIHBvL2JnLnBvOgotCSogcG8vY2EucG86Ci0JKiBwby9kYS5wbzoKLQkqIHBvL2VsLnBvOgotCSogcG8vZW5fR0IucG86Ci0JKiBwby9lby5wbzoKLQkqIHBvL2VzLnBvOgotCSogcG8vZXUucG86Ci0JKiBwby9maS5wbzoKLQkqIHBvL2ZyLnBvOgotCSogcG8vZ2wucG86Ci0JKiBwby9oci5wbzoKLQkqIHBvL2h1LnBvOgotCSogcG8vaWQucG86Ci0JKiBwby9pdC5wbzoKLQkqIHBvL2phLnBvOgotCSogcG8va3kucG86Ci0JKiBwby9sdC5wbzoKLQkqIHBvL2x2LnBvOgotCSogcG8vbXQucG86Ci0JKiBwby9uYi5wbzoKLQkqIHBvL29yLnBvOgotCSogcG8vcHRfQlIucG86Ci0JKiBwby9yby5wbzoKLQkqIHBvL3NrLnBvOgotCSogcG8vc2wucG86Ci0JKiBwby9zcS5wbzoKLQkqIHBvL3NyLnBvOgotCSogcG8vc3YucG86Ci0JKiBwby90ci5wbzoKLQkgIFVwZGF0ZSAucG8gZmlsZXMKKzIwMTUtMTAtMjkgMTE6Mzg6MzUgKzAwMDAgIFZpbmNlbnQgUGVucXVlcmMnaCA8dmluY2VudC5wZW5xdWVyY2hAY29sbGFib3JhLmNvLnVrPgogCi0yMDE1LTEwLTMwIDE0OjMwOjE3ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuaDoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBtcGRwYXJzZXI6IG1ha2UgZHVyYXRpb25zIHVuc2lnbmVkIHdoZXJlIGFwcHJvcHJpYXRlCisJICBUaGUgc3RhbmRhcmQgZG9lcyBub3Qgc2VlbSB0byBtYWtlIGFueSBwYXJ0aWN1bGFyIGV4cGxpY2l0IG5vdAorCSAgaW1wbGljaXQgcmVmZXJlbmNlIHRvIHRoZSBzaWduZWRuZXNzIG9mIGR1cmF0aW9ucywgYW5kIHRoZSBjb2RlCisJICBkb2VzIG5vdCByZWx5IG9uIHN1Y2gsIG5vciBvbiB0aGUgbmVnYXRpdml0eSBvZiB0aGUgLTEgdmFsdWUKKwkgIHRoYXQncyB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIGR1cmF0aW9uIHByb3BlcnR5IGlzIG5vdAorCSAgcHJlc2VudCBpbiB0aGUgWE1MLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDg0NwogCi0JKiBwby9jcy5wbzoKLQkqIHBvL2RlLnBvOgotCSogcG8vbmwucG86Ci0JKiBwby9wbC5wbzoKLQkqIHBvL3J1LnBvOgotCSogcG8vdWsucG86Ci0JKiBwby92aS5wbzoKLQkqIHBvL3poX0NOLnBvOgotCSAgcG86IFVwZGF0ZSB0cmFuc2xhdGlvbnMKKzIwMTUtMTAtMzAgMTU6NTU6MTkgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IGluaGVyaXQgYml0c3RyZWFtU3dpdGNoaW5nIGZyb20gUGVyaW9kIHRvIEFkYXB0YXRpb25TZXQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTIzNDAKKworMjAxNS0wOC0yMCAxODoxNDozNiArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdGRhc2hkZW11eC5jOgorCSAgZGFzaGRlbXV4OiBtYXJrZWQgUFJPUF9CQU5EV0lEVEhfVVNBR0UgcHJvcGVydHkgYXMgZGVwcmVjYXRlZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Mzg5MAorCisyMDE1LTEwLTMwIDE1OjAyOjM1ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2hkZW11eDogdW5pdCB0ZXN0aW5nIHJlcHJvZHVjaW5nIGluaGVyaXRlZCBzZWdtZW50IGR1cmF0aW9uIG92ZXJmbG93CisJICB1bml0IHRlc3QgcmVwcm9kdWNpbmcgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MTgzMgorCisyMDE1LTEwLTMwIDE0OjMxOjIxICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgZGFzaGRlbXV4OiBpbmhlcml0ZWQgc2VnbWVudCBVUkxzIGFyZSBpZ25vcmVkIGlmIHRoZXkgYXJlIGRlZmluZWQgYWdhaW4gaW4gYSBsb3dlciBTZWdtZW50TGlzdAorCSAgQWNjb3JkaW5nIHRvIHRoZSBzdGFuZGFyZDoKKwkgICJTZWdtZW50QmFzZSwgU2VnbWVudFRlbXBsYXRlIGFuZCBTZWdtZW50TGlzdCBzaGFsbCBpbmhlcml0CisJICBhdHRyaWJ1dGVzIGFuZCBlbGVtZW50cyBmcm9tIHRoZSBzYW1lIGVsZW1lbnQgb24gYSBoaWdoZXIgbGV2ZWwuCisJICBJZiB0aGUgc2FtZSBhdHRyaWJ1dGUgb3IgZWxlbWVudCBpcyBwcmVzZW50IG9uIGJvdGggbGV2ZWxzLAorCSAgdGhlIG9uZSBvbiB0aGUgbG93ZXIgbGV2ZWwgc2hhbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIG9uZQorCSAgb24gdGhlIGhpZ2hlciBsZXZlbC4iCisJICBnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ21lbnRfbGlzdF9ub2RlIHdpbGwgbm93IGRpc2NhcmQgYW55IGluaGVyaXRlZAorCSAgc2VnbWVudCBVUkxzIGlmIHRoZSBwYXJzZWQgZWxlbWVudCBkZWZpbmVzIHNvbWUgdG9vLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MTgzMgorCisyMDE1LTEwLTIwIDE3OjIxOjAwICswMTAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZmFrZV9odHRwX3NyYy5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZmFrZV9odHRwX3NyYy5oOgorCSAgYWRhcHRpdmVkZW11eDogdGVzdHM6IGFkZGVkIHRlc3QgZm9yIGZyYWdtZW50IGRvd25sb2FkIGVycm9yCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MzYxCisKKzIwMTUtMTAtMjAgMTU6NDY6MzYgKzAxMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiB0ZXN0czogbWFkZSBhZGFwdGl2ZSBkZW11eCB0ZXN0IHRocmVhZCBzYWZlCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MzYxCisKKzIwMTUtMTAtMTYgMTY6MjA6MzQgKzAxMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiB0ZXN0czogYWRkZWQgcXVlcnkgdGVzdAorCSAgVGVzdGluZyBpZiBhZGFwdGl2ZSBkZW11eCByZXNwb25kcyB0byBxdWVyaWVzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzM2MQorCisyMDE1LTEwLTI4IDExOjIxOjE0ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2hkZW11eDogdGVzdHM6IGFkZGVkIHRlc3QgZm9yIG11bHRpcGxlIEJhc2VVUkwgZW50cmllcworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzI0NQorCisyMDE1LTA5LTE2IDEwOjQwOjMzICswMTAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2hkZW11eDogdGVzdHM6IGFkZGVkIHVuaXQgdGVzdCBmb3IgNmQxZWRhOTM5MWQzMTQzYjVmYzYzM2VkZmQ5NGI4OWRiYmEyMDlhYgorCSAgQ29tbWl0IDZkMWVkYTkzOTFkMzE0M2I1ZmM2MzNlZGZkOTRiODlkYmJhMjA5YWIgZml4ZWQgdGhlIHBlcmlvZCBzdGFydAorCSAgdGltZSBzY2FsaW5nLiBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIHVuaXQgdGVzdHMgdG8gY292ZXIgdGhhdCBzY2VuYXJpby4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTUxMDUKKworMjAxNS0xMC0xNiAxNzoxMDoxMSArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHRlc3RzOiBhZGRlZCBkb3dubG9hZCBlcnJvciB0ZXN0CisJICBUZXN0cyBhZGFwdGl2ZSBkZW11eCBiZWhhdmlvdXIgd2hlbiB0aGUgdXJpIGlzIHdyb25nIGFuZCBkb3dubG9hZCBkb2VzCisJICBub3QgaGFwcGVuLgorCisyMDE1LTEwLTMwIDEyOjQ5OjIwICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogc3RvcCB0YXNrIG9uIG11bHRpcGxlIGRvd25sb2FkIGVycm9ycworCSAgT24gbXVsdGlwbGUgZG93bmxvYWQgZXJyb3JzLCB3ZSBzdG9wIHRoZSBkb3dubG9hZCB0YXNrIGFuZCBjaGFuZ2UgdGhlIHNyYworCSAgZWxlbWVudCBzdGF0ZSB0byBOVUxMLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjI0MAorCisyMDE1LTEwLTMwIDEyOjI0OjIyICswMDAwICBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogZml4IGEgbWlzc2luZyBsb2NrIGluIHdyaXRlIHRvIHN0cmVhbS0+bGFzdF9yZXQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTczNTkKKworMjAxNS0xMC0wNyAyMzoyMDo1MSArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHJldHVybiBlcnJvciBpZiBzcmMgZWxlbWVudCBjYW5ub3Qgc3RhcnQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYyMDkKKworMjAxNS0xMC0wOCAxMTo0NToyNSArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IGZpeGVkIHdhaXRpbmcgZm9yIGZyYWdtZW50IHVwZGF0ZXMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYyMzcKKworMjAxNS0xMC0wOCAxMjozNTo0NCArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IGZpeCBoZWFkZXIgcmVkb3dubG9hZCBpbiBjYXNlIG9mIGVycm9ycworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjIzOQorCisyMDE1LTEwLTMwIDAwOjA0OjEyICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogcmVsZWFzZSBtYW5pZmVzdCBsb2NrIGJlZm9yZSBzZW5kaW5nIGZsdXNoIHN0b3AgZXZlbnQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTczMzcKKworMjAxNS0xMC0yOSAyMzo0MTo0NiArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHJlc2V0IGRvd25sb2FkX2ZpbmlzaGVkIGJlZm9yZSBzdGFydGluZyB0aGUgc3JjIGVsZW1lbnQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTczMzYKKworMjAxNS0xMC0yOSAyMzoyMzowNSArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHJlbGVhc2UgbWFuaWZlc3QgbG9jayBiZWZvcmUgY2hhbmdpbmcgZWxlbWVudCBzdGF0ZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzMzNQorCisyMDE1LTEwLTMwIDE2OjM4OjE3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb3RleHR1cmVjYWNoZS5tOgorCSAgdnRkZWM6IGZpeCBjb21waWxhdGlvbiBlcnJvcgorCSAgVW5kZWZpbmVkIHN5bWJvbHMgZm9yIGFyY2hpdGVjdHVyZSB4ODZfNjQ6CisJICAiX19nbF90YXJnZXRfdG9fZ3N0IiwgcmVmZXJlbmNlZCBmcm9tOgorCSAgX19kb19nZXRfZ2xfYnVmZmVyIGluIGxpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvdGV4dHVyZWNhY2hlLm8KKworMjAxNS0xMC0zMCAxNTowMDoyMyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsbWVtb3J5LmM6CisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsdXBsb2FkLmM6CisJICBnbC90ZXN0czogdXBkYXRlIGZvciBnbG1lbW9yeSBhcGkgY2hhbmdlcworCisyMDE1LTEwLTMwIDE0OjQzOjIzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGNvbG9yY29udmVydGVsZW1lbnQuYzoKKwkgIGdsY29sb3Jjb252ZXJ0OiByZW1vdmUgdW51c2VkIHJldCB2YXJpYWJsZQorCisyMDE1LTEwLTMwIDE0OjQwOjM1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNsc3RhZ2UuaDoKKwkgIGdsc2xzdGFnZTogcmVtb3ZlIHR5cGVkZWZzIGZyb20gdGhlIGhlYWRlcgorCSAgVGhleSBhcmUgYWxyZWFkeSBkZWZpbmVkIGluIHRoZSBmb3J3YXJkIGRlY2xlcmF0aW9uIGhlYWRlciBhbmQgZGVmaW5pbmcgdGhlbQorCSAgbW9yZSB0aGFuIG9uY2Ugd2lsbCBnaXZlIGFuIGVycm9yIHdpdGggT1NYJ3MgY2xhbmcgYWJvdXQgdHlwZWRlZiByZWRlZmluaXRpb24KKwkgIGJlaW5nIGEgQzExIGZlYXR1cmUuCisKKzIwMTUtMTAtMzAgMTQ6Mzg6MDUgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogZm9sbG93IHRoZSBjb3JyZWN0IHRleHR1cmUgdGFyZ2V0IG5hbWVzCisKKzIwMTUtMTAtMzAgMDE6NDI6NDIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmM6CisJICBnbHVwbG9hZDogZXhwbGljaXRseSBjb25maWd1cmUgdGhlIHRleHR1cmUgdGFyZ2V0IG9uIHRoZSBnbCBidWZmZXIgcG9vbAorCSAgSWYgd2UgZG9uJ3QsIHRoZW4gdGhlIHBvb2wgY291bGQgZW5kIHVwIGFsbG9jYXRpbmcgMkQgdGV4dHVyZXMgd2hlbiB0aGUKKwkgIGNhcHMgZXhwbGljdGx5IHN0YXRlIHRoZXkgc2hvdWxkIGJlIHJlY3RhbmdsZSB0ZXh0dXJlcy4KKworMjAxNS0xMC0zMCAwMToyNzozNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOgorCSAgZ2xidWZmZXJwb29sOiBhZGQgYnVmZmVycG9vbCBvcHRpb25zIGZvciB0aGUgdmFyaW91cyB0ZXh0dXJlIHRhcmdldHMKKwkgIFRoaXMgd2FzIGNob3NlbiBvdmVyIHJlbHlpbmcgc29sZWx5IG9uIHRoZSBjYXBzIGFzIGdsdXBsb2FkIG5lZWRzIHRvIHByb3Bvc2UgYW4KKwkgIGFsbG9jYXRpb24gYW5kIHNldCB0aGUgdGV4dHVyZSB0YXJnZXQgYmFzZWQgb24gdGhlIG91dHB1dCBjYXBzLiAgU2V0dGluZyB0aGUKKwkgIGNhcHMgaW4gdGhlIGNvbmZpZyBpcyBjdXJyZW50bHkgcG9pbnRsZXNzIGFzIHRoZXkgYXJlIG92ZXJ3cml0dGVuIGluIGEgbG90IG9mCisJICBlbGVtZW50J3MgZGVjaWRlX2FsbG9jYXRpb24gZnVuY3Rpb25zLgorCSAgVGhpcyBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgdGhlIGJ1ZmZlciBwb29sIHRvIGJlIGNvbmZpZ3VyZWQgZm9yIGEgY2VydGFpbgorCSAgdGV4dHVyZSB0YXJnZXQgd2hlbiBub25lIGhhcyBiZWVuIGNvbmZpZ3VyZWQuCisKKzIwMTUtMTAtMjkgMTM6MDQ6MzEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsY29sb3Jjb252ZXJ0ZWxlbWVudC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuaDoKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb3RleHR1cmVjYWNoZS5oOgorCSogc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvdGV4dHVyZWNhY2hlLm06CisJKiBzeXMvYXBwbGVtZWRpYS92dGRlYy5jOgorCSAgZ2xjb2xvcmNvbnZlcnQ6IGFkZCBzdXBwb3J0IGZvciBjb252ZXJ0aW5nIHRleHR1cmUgdGFyZ2V0cworCSAgU29sdmVkIHdpdGggYSBzaW1wbGUgc2hhZGVyIHRlbXBsYXRpbmcgbWVjaGFuaXNtIGFuZCBzdHJpbmcgcmVwbGFjZW1lbnRzCisJICBvZiB0aGUgbmVjZXNzYXJ5IHNhbXBsZXIgdHlwZXMvdGV4dHVyZSBhY2Nlc3NlcyBhbmQgdGV4dHVyZSBjb29yZGluYXRlCisJICBtYW5nbGluZyBmb3IgcmVjdGFuZ3VsYXIgYW5kIGV4dGVybmFsLW9lcyB0ZXh0dXJlcy4KKworMjAxNS0xMC0yOSAwMDo0NDoyNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvY2FvcGVuZ2xsYXllcnNpbmsubToKKwkqIGV4dC9nbC9nc3RnbGNvbG9yY29udmVydGVsZW1lbnQuYzoKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSogZXh0L2dsL2dzdGdsb3ZlcmxheS5jOgorCSogZXh0L2dsL2dzdGdsc3RlcmVvbWl4LmM6CisJKiBleHQvZ2wvZ3N0Z2x0ZXN0c3JjLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmlsdGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsb3ZlcmxheWNvbXBvc2l0b3IuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkbWV0YS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb3RleHR1cmVjYWNoZS5tOgorCSogdGVzdHMvY2hlY2svbGlicy9nc3RnbG1lbW9yeS5jOgorCSAgZ2xtZW1vcnk6IGFkZCBzdXBwb3J0IGZvciByZWN0YW5nbGUgdGV4dHVyZXMKKwkgIEFkZCB0aGUgdmFyaW91cyB0b2tlbnMvc3RyaW5ncyBmb3IgdGhlIGRpZmZlcm5ldCB0ZXh0dXJlIHR5cGVzICgyRCwgcmVjdCwgb2VzKQorCSAgQ2hhbmdlcyB0aGUgR0xtZW1vcnkgYXBpIHRvIGluY2x1ZGUgdGhlIEdzdEdMVGV4dHVyZVRhcmdldCBpbiBhbGwgcmVsZXZhbnQKKwkgIGZ1bmN0aW9ucy4KKwkgIFVwZGF0ZSB0aGUgcmVsZXZhbnQgY2Fwcy90ZW1wbGF0ZXMgZm9yIDJEIG9ubHkgdGV4dHVyZXMuCisKKzIwMTUtMTAtMzAgMDE6NDU6MTMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0Lmg6CisJICBnbGNvbG9yY29udmVydDogb3JkZXIgdGhlIGNhcHMgdGVtcGxhdGUgc28gdGhhdCBSR0JBIGlzIGZpcnN0CisJICBnbGNvbG9yY29udmVydCAhIGdsY29sb3Jjb252ZXJ0IHdvdWxkIHNvbWV0aW1lcyBuZWdvdGlhdGVkIFJHQgorCSAgKHRoZSBmaXJzdCBsaXN0IGVudHJ5KSBvdGhlcndpc2UuCisKKzIwMTUtMTAtMzAgMDE6MTY6MDIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5oOgorCSAgZ2xidWZmZXJwb29sOiBtb3ZlIHR5cGVkZWYncyBpbnRvIHRoZSBmb3J3YXJkIGRlY2xlcmF0aW9uIGZpbGUKKwkgIE90aGVyd2lzZSwgZm9yIGV4YW1wbGUsIGNsYW5nIHdpbGwgd2FybiBhYm91dCB0eXBlZGVmIHJlZGVmaW5pdGlvbnMKKwkgIGJlaW5nIGEgQzExIGZlYXR1cmUuCisKKzIwMTUtMTAtMTYgMTg6MzY6MjAgKzAxMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9mYWtlX2h0dHBfc3JjLmM6CisJICB0ZXN0czogZml4ZWQgZmFrZSBzb3VwIGh0dHAgc3JjIHBsdWdpbgorCSAgVGhlIHNvdXAgaHR0cCBzcmMgY2hhbmdlZCB0aGUgd2F5IGl0IGludGVycHJldHMgdGhlIHNlZWsgc2VnbWVudCBzdG9wIHZhbHVlLgorCSAgUHJldmlvdXNseSBpdCB3YXMgaW5jbHVzaXZlLCBub3cgaXQgaXMgbm90IChzZWUgY29tbWl0CisJICAyMWM2ZGE2NzY0YzBjZDAxNWU5ZjNjNWVlY2JhMzZlMjk3MTg3ZGViLAorCSAgYnVnIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDgzMTYpCisJICBVcGRhdGVkIGZha2Ugc291cCBodHRwIHNyYyB0byBhbHNvIGNvbnNpZGVyIHNlZ21lbnQgc3RvcCBub3QgaW5jbHVzaXZlLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjMyMgorCisyMDE1LTEwLTA5IDE0OjEwOjUyICswMTAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiB0ZXN0czogYWRkZWQgdW5pdCB0ZXN0IGZvciBhZGFwdGl2ZWRlbXV4CisJICBDcmVhdGVkIGEgdW5pdCB0ZXN0IGZvciBkYXNoZGVtdXguIEl0IHJlbGllcyBvbiBhIGZha2UgU09VUCBIVFRQIHNyYyBwbHVnaW4KKwkgIHRoYXQgd2lsbCBmZWVkIGRhdGEgdG8gZGFzaGRlbXV4LiBUaGUgdGVzdCBjb250cm9scyB0aGUgZGF0YSB0byBiZQorCSAgZ2VuZXJhdGVkIGFuZCBjaGVja3MgdGhlIGNvcnJlY3QgZGF0YSB3YXMgcmVjZWl2ZWQgZm9yIGVhY2ggZXhwZWN0ZWQKKwkgIHN0cmVhbS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYzMjIKKworMjAxNS0xMC0wOSAyMToyMzoyMCArMDEwMCAgQWxleCBBc2hsZXkgPGJ1Z3ppbGxhQGFzaGxleS1mYW1pbHkubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9mYWtlX2h0dHBfc3JjLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9mYWtlX2h0dHBfc3JjLmg6CisJICB0ZXN0czogYWRkZWQgZmFrZSBodHRwIHNyYyBwbHVnaW4KKwkgIEFkZGVkIGEgZmFrZSBodHRwIHNyYyBwbHVnaW4gY2FwYWJsZSBvZiBnZW5lcmF0aW5nIGRhdGEgYnVmZmVycyBmb3IgYQorCSAgcmVxdWVzdCBvZiBhIGh0dHAgdXJsLiBDYW4gYmUgdXNlZCBpbiB0ZXN0cyB0byBzaW11bGF0ZSBodHRwIGFjY2Vzc2VzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjMyMgorCisyMDE1LTA3LTA3IDE1OjM4OjA4ICswMTAwICBBbGV4IEFzaGxleSA8YnVnemlsbGFAYXNobGV5LWZhbWlseS5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdGRhc2hkZW11eC5jOgorCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4Lmg6CisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5oOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2hkZW11eDogcHJvdmlkZSBhIGRlZmF1bHQgc3VnZ2VzdGVkUHJlc2VudGF0aW9uRGVsYXkKKwkgIElmIE1QREBzdWdnZXN0ZWRQcmVzZW50YXRpb25EZWxheSBpcyBub3QgcHJlc2VudCBpbiB0aGUgbWFuaWZlc3QsCisJICBkYXNoZGVtdXggc2VsZWN0cyB0aGUgZnJhZ21lbnQgY2xvc2VzdCB0byB0aGUgbW9zdCByZWNlbnRseSBnZW5lcmF0ZWQKKwkgIGZyYWdtZW50LiBUaGlzIGNhdXNlcyBhIHBsYXliYWNrIGlzc3VlIGJlY2F1c2UgdGhpcyBjaG9pY2UgZG9lcyBub3QgYWxsb3cKKwkgIHRoZSBEQVNIIGNsaWVudCB0byBidWlsZCB1cCBhbnkgYnVmZmVyIG9mIGRvd25sb2FkZWQgZnJhZ21lbnRzIHdpdGhvdXQKKwkgIHBhdXNpbmcgcGxheWJhY2suIFRoaXMgaXMgYmVjYXVzZSBieSBkZWZpbml0aW9uIG5ldyBmcmFnbWVudHMgYXBwZWFyIG9uCisJICB0aGUgc2VydmVyIGluIHJlYWwtdGltZSAoZS5nLiBpZiBzZWdtZW50IGR1cmF0aW9uIGlzIDQgc2Vjb25kcywgYSBuZXcKKwkgIGZyYWdtZW50IHdpbGwgYXBwZWFyIG9uIHRoZSBzZXJ2ZXIgZXZlcnkgNCBzZWNvbmRzKS4gSWYgdGhlIHN0YXJ0aW5nCisJICBwbGF5YmFjayBwb3NpdGlvbiB3YXMgbipzZWdtZW50RHVyYXRpb24gc2Vjb25kcyBiZWhpbmQgIm5vdyIsIHRoZSBEQVNICisJICBjbGllbnQgY291bGQgZG93bmxvYWQgdXAgdG8gJ24nIGZyYWdtZW50cyBmYXN0ZXIgdGhhbiByZWFsdGltZSBiZWZvcmUgaXQKKwkgIHJlYWNoZWQgdGhlIHBvaW50IHdoZXJlIGl0IG5lZWRlZCB0byB3YWl0IGZvciBmcmFnbWVudHMgdG8gYXBwZWFyIG9uIHRoZQorCSAgc2VydmVyLgorCSAgVGhlIE1QREBzdWdnZXN0ZWRQcmVzZW50YXRpb25EZWxheSBhdHRyaWJ1dGUgYWxsb3dzIGEgY29udGVudCBwdWJsaXNoZXIKKwkgIHRvIHByb3ZpZGUgYSBzdWdnZXN0ZWQgc3RhcnRpbmcgcG9zaXRpb24gdGhhdCBpcyBiZWhpbmQgdGhlIGN1cnJlbnQKKwkgICJsaXZlIiBwb3NpdGlvbi4KKwkgIElmIHRoZSBNUERAc3VnZ2VzdGVkUHJlc2VudGF0aW9uRGVsYXkgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LCBwcm92aWRlCisJICBhIHN1aXRhYmxlIGRlZmF1bHQgdmFsdWUgYXMgYSBwcm9wZXJ0eSBvZiB0aGUgZGFzaGRlbXV4IGVsZW1lbnQuIFRvCisJICBhbGxvdyB0aGUgZGVmYXVsdCBwcmVzZW50YXRpb24gZGVsYXkgdG8gYmUgc3BlY2lmaWVkIGVpdGhlciB1c2luZworCSAgZnJhZ21lbnRzIG9yIHNlY29uZHMsIHRoZSBwcm9wZXJ0eSBpcyBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgbnVtYmVyCisJICBhbmQgYSB1bml0IChlLmcuICIxMCBzZWNvbmRzIiwgIjQgZnJhZ21lbnRzIiwgIjI1MDBtcyIpLgogCiAyMDE1LTEwLTI5IDE1OjAyOjM4ICswMjAwICBTcmVlcmVuaiBCYWxhY2hhbmRyYW4gPHNyZWVyZW5qLmJhbGFjaGFuZHJhbkBpbnRlbC5jb20+CiAKQEAgLTUwMCw2ICs4NDg5LDE5NiBAQAogCSAgRGlmZmVyZW50aWF0ZSB0aGUgdnA4L3ZwOSBiaXRzdHJlYW0gYmFzZWQgb24gZm91cmNjLgogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzI1MQogCisyMDE1LTA5LTA5IDE0OjA5OjQzICswMTAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IGltcHJvdmUgZGV0ZWN0aW9uIG9mIHN0cmVhbSBsYW5ndWFnZQorCSAgSW1wcm92ZWQgdGhlIGRldGVjdGlvbiBvZiBzdHJlYW0ncyBsYW5ndWFnZSBpZiB0aGUgQWRhcHRhdGlvblNldAorCSAgY29udGFpbnMgbW9yZSB0aGFuIDEgQ29udGVudENvbXBvbmVudAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MjM2NworCisyMDE1LTEwLTI5IDEyOjA0OjMxICswMDAwICBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgZGFzaF9tcGQ6IHJlc3RyaWN0IHNlZ21lbnQgdGVtcGxhdGUgZm9ybWF0IHN0cmluZ3MgdG8gJTBbMC05XSpkIGFzIHBlciBzcGVjCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUxNzM1CisKKzIwMTUtMDktMDkgMTI6MzY6MTAgKzAxMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IHNlZ21lbnQgdGVtcGxhdGUgcGFyc2luZzogYWRkZWQgc3VwcG9ydCBmb3IgJWQKKwkgIEFkZGVkIHN1cHBvcnQgZm9yICVkIGluIHRlbXBsYXRlIGlkZW50aWZpZXIuCisJICBBZGRlZCB0ZXN0Y2FzZXMgZm9yICVkLCAlM2QsICUwLTRkIGlkZW50aWZpZXIgZm9ybWF0cy4KKworMjAxNS0xMC0yOSAxMTo1NDozNCArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2hkZW11eDogY29ycmVjdGVkIHBhcnNpbmcgb2Ygc2VnbWVudCB0ZW1wbGF0ZXMKKwkgIENvcnJlY3RlZCB0aGUgcGFyc2luZyBvZiBhIHNlZ21lbnQgdGVtcGxhdGUgc3RyaW5nLgorCSAgQWRkZWQgdW5pdCB0ZXN0cyB0byB0ZXN0IHRoZSBzZWdtZW50IHRlbXBsYXRlIHBhcnNpbmcuCisJICBBbGwgcmVwb3J0ZWQgcHJvYmxlbXMgYXJlIG5vdyBjb3JyZWN0bHkgaGFuZGxlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTE3MzUKKworMjAxNS0xMC0yOSAxMToxNzo0OCArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGRhaHNkZW11eDogdGFzayBpcyBzaWduYWxlZCB0byBzdG9wIHdpdGhvdXQgc3RvcCBjb25kaXRpb24gYmVpbmcgc2V0CisJICBUaGUgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9mcmVlIGZ1bmN0aW9uIGlzIHRyeWluZyB0byBzdG9wIHRoZSBzdHJlYW0ncworCSAgZG93bmxvYWQgdGFzay4gRm9yIHRoaXMsIGl0IHNpZ25hbHMgdGhlIHRhc2suIEJ1dCBpdCBmYWlscyB0byBhbHNvIHNldCB0aGUKKwkgIHN0cmVhbS0+ZG93bmxvYWRfZmluaXNoZWQgPSBUUlVFLCBzbyB0aGUgdGFzayB3aWxsIGdvIGJhY2sgdG8gc2xlZXAgYW5kCisJICBvbmx5IGV4aXQgd2hlbiB0aGUgZG93bmxvYWQgaXMgZmluaXNoZWQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1MTIxCisKKzIwMTUtMTAtMjggMTc6MDI6NTEgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IGZpeGVkIGNyYXNoIHdoZW4gc2VnbWVudCB0aW1lbGluZSBsaXN0IGlzIGdyZWF0ZXIgdGhhbiBzZWdtZW50IHVybCBsaXN0CisJICBXaGVuIGJ1aWxkaW5nIHRoZSBtZWRpYSBzZWdtZW50IGxpc3QgdXNpbmcgYSBTZWdtZW50TGlzdCBub2RlLCB0aGUKKwkgIGdzdF9tcGRfY2xpZW50X3NldHVwX3JlcHJlc2VudGF0aW9uIGZ1bmN0aW9uIHdpbGwgaXRlcmF0ZSB0aHJvdWdoIHRoZQorCSAgbGlzdCBvZiBTIG5vZGVzIGFuZCB3aWxsIGV4cGVjdCB0byBmaW5kIGEgbWF0Y2hpbmcgU2VnbWVudFVybCBub2RlLiBJZgorCSAgb25lIGRvZXMgbm90IGV4aXN0LCB0aGUgY29kZSBtYWRlIGFuIGlsbGVnYWwgbWVtb3J5IGFjY2Vzcy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI0OTYKKworMjAxNS0wOS0xMSAxMDo1OToxNSArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IHVuaXQgdGVzdCBmb3IgbWlzc2luZyBwcm9maWxlcworCisyMDE1LTA5LTExIDEwOjU3OjI2ICswMTAwICBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJICBtcGRwYXJzZXI6IGRvIG5vdCBkZXJlZmVyZW5jZSBwcm9maWxlcyBpcyBhYnNlbnQKKwkgIFRoZXNlIGFyZSB1c2VkIHRvIGFwcGx5IHJlc3RyaWN0aW9ucyBvbiB3aGF0IHRoZSBNUEQgZmlsZSBtYXkKKwkgIHVzZSwgc28gbm8gcHJvZmlsZSBtZWFucyBubyByZXN0cmljdGlvbnMuCisJICBCZXNpZGVzLCBub3RoaW5nIGFjdHVhbGx5IHVzZXMgdGhlIHByb2ZpbGVzICh5ZXQpIGFueXdheS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTA4NjkKKworMjAxNS0wOS0xNiAxNjo0NjoyOSArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaDoKKwkgIGFkYXB0aXZlZGVtdXg6IGZpeGVkIG11bHRpdGhyZWFkIHN1cHBvcnQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTUxNjkKKworMjAxNS0xMC0yOCAxNjozMTozOSArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2hkZW11eDogcGFyc2VyIHJlamVjdHMgbmVnYXRpdmUgdmFsdWVzIGZvciBtZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyMzI2CisKKzIwMTUtMTAtMjggMTY6MjQ6MDEgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IGNvcnJlY3RlZCBwYXJzaW5nIG9mIG5lZ2F0aXZlIHZhbHVlcyBpbnRvIHVuc2lnbmVkIGRhdGEKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI0MjkKKworMjAxNS0wOS0xNyAyMDoxODo1MiArMDIwMCAgVsOtY3RvciBNYW51ZWwgSsOhcXVleiBMZWFsIDx2amFxdWV6QGlnYWxpYS5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0aDI2NHBhcnNlci5jOgorCSAgY29kZWNwYXJzZXI6IGgyNjQ6IGluaXRpYWxpemUgcGFyc2luZyBzdHJ1Y3R1cmVzCisJICBJbml0aWFsaXplIHRvIDAgdGhlc2UgcGFyc2Ugc3RydWN0dXJlcyBiZWZvcmUgZmlsbGluZyB0aGVtOiBHc3RIMjY0U0VJTWVzc2FnZSwKKwkgIEdzdEgyNjROYWxVbml0LCBHc3RIMjY0UFBTLCBHc3RIMjY0U1BTIGFuZCBHc3RIMjY0U2xpY2VIZHIuCisJICBXaGVuIGNhbGxpbmcgdGhlIGZ1bmN0aW9ucyB3aGljaCBmaWxsIHRob3NlIHN0cnVjdHVyZXMsIHRoZXkgbWF5IGZhaWwsIGxlYXZpbmcKKwkgIHVuaXRpYWxpemVkIHRob3NlIHN0cnVjdHVyZXMuIFRoaXMgc2l0dWF0aW9uIG1heSBsZWFkIHRvIGZ1dHVyZSBwcm9ibGVtcywgc3VjaAorCSAgYXMgYSBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBmcmVlaW5nLCBmb3IgZXhhbXBsZS4KKwkgIFRoaXMgcGF0Y2ggaW5pdGlhbGl6ZXMgdG8gemVybyB0aGVzZSBzdHJ1Y3R1cmVzLCBiZWZvcmUgZmlsbGluZyB0aGVtLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTE2MQorCisyMDE1LTA5LTE4IDEwOjA5OjI2ICswMjAwICBWw61jdG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgPHZqYXF1ZXpAaWdhbGlhLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RoMjY1cGFyc2VyLmM6CisJICBjb2RlY3BhcnNlcjogaDI2NTogaW5pdGlhbGl6ZSBwYXJzaW5nIHN0cnVjdHVyZXMKKwkgIEluaXRpYWxpemUgdG8gMCB0aGVzZSBwYXJzZSBzdHJ1Y3R1cmVzIGJlZm9yZSBmaWxsaW5nIHRoZW06IEdzdEgyNjVTRUlNZXNzYWdlLAorCSAgR3N0SDI2NU5hbFVuaXQsIEdzdEgyNjVWUFMsIEdzdEgyNjVQUFMsIEdzdEgyNjVTUFMgYW5kIEdzdEgyNjVTbGljZUhkci4KKwkgIFdoZW4gY2FsbGluZyB0aGUgZnVuY3Rpb25zIHdoaWNoIGZpbGwgdGhvc2Ugc3RydWN0dXJlcywgdGhleSBtYXkgZmFpbCwgbGVhdmluZworCSAgdW5pdGlhbGl6ZWQgdGhvc2Ugc3RydWN0dXJlcy4gVGhpcyBzaXR1YXRpb24gbWF5IGxlYWQgdG8gZnV0dXJlIHByb2JsZW1zLCBzdWNoCisJICBhcyBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGZyZWVpbmcsIGZvciBleGFtcGxlLgorCSAgVGhpcyBwYXRjaCBpbml0aWFsaXplcyB0byB6ZXJvIHRoZXNlIHN0cnVjdHVyZXMsIGJlZm9yZSBmaWxsaW5nIHRoZW0uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1MTYxCisKKzIwMTUtMTAtMjYgMTk6NTg6MDQgLTA0MDAgIE9saXZpZXIgQ3LDqnRlIDxvbGl2aWVyLmNyZXRlQGNvbGxhYm9yYS5jb20+CisKKwkqIGdzdC9hdWRpb21peGVyL2dzdGF1ZGlvbWl4ZXIuYzoKKwkgIGxpdmVhZGRlcjogTWFrZSBsYXRlbmN5IHByb3BlcnR5IGJlIGEgdWludCBpbiBtaWxsaXNlY3MKKwkgIFRoaXMgcmVzdG9yZXMgcm91Z2hseSB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgdGhlIG9sZCBsaXZlYWRkZXIgZWxlbWVudC4KKwkgIEV4Y2VwdCB0aGF0IHRoZSBsYXRlbmN5IG5vdyBhbHNvIGluY2x1ZGVzIHRoZSBvdXRwdXQtYnVmZmVyLWR1cmF0aW9uLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzA1MAorCisyMDE1LTA5LTA4IDE0OjAwOjU0ICswMTAwICBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJICBtcGRwYXJzZXI6IGZvcmJpZCBuZWdhdGl2ZSB2YWx1ZXMgZm9yIGR1cmF0aW9uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyNDkyCisKKzIwMTUtMTAtMjggMTU6Mzk6MDcgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IHBhcnNlciByZWplY3RzIFhNTHMgd2l0aCBuZWdhdGl2ZSBwZXJpb2QgZHVyYXRpb24KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTIzMjkKKworMjAxNS0xMC0yOCAxNTozNDoyOSArMDAwMCAgVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWs+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIG1wZHBhcnNlcjogY2hlY2sgc2VnbWVudCBsaXN0cyBoYXZlIGVpdGhlciBkdXJhdGlvbiBvciB0aW1lbGluZQorCSAgQW5kIGFkZCBlcnJvciBjaGVja2luZyBhbG9uZyB0aGUgd2F5LgorCSAgQWRkIGR1cmF0aW9uIHdoZXJlIGFwcHJvcHJpYXRlIHNvIHVuaXQgdGVzdHMgc3RpbGwgcGFzcy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTE2NTAKKworMjAxNS0wOS0yOSAxNjoxNzowMyArMDEwMCAgVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWs+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIG1wZHBhcnNlcjogdmFsaWRhdGUgcmVwcmVzZW50YXRpb24gc2V0IGlkZW50aWZpZXIKKwkgIEl0IG11c3QgaGF2ZSBubyB3aGl0ZXNwYWNlLCBhbmQgbXVzdCBjb21wbHkgd2l0aCBSRkMgMTczOCB3aGVuCisJICB1c2VkIHRvIGJ1aWxkIGEgVVJMLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDg1MgorCisyMDE1LTEwLTI4IDE0OjQxOjU0ICswMDAwICBKdWxpZW4gSXNvcmNlIDxqLmlzb3JjZUBzYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5jOgorCSAgZ2xzbHN0YWdlOiBpbml0aWFsaXplIG91dHB1dCBwYXJhbXMgdG8gMCBiZWZvcmUgY2FsbGluZyBnbCBmdW5jdGlvbnMKKwkgIFRoZSBjbGllbnQgc2lkZSBBUEkgb2YgdGhlIENocm9taXVtJ3MgR1BVIFByb2Nlc3MgaGFzIGFzc2VydHMKKwkgIGluIGRlYnVnIG1vZGUgdGhhdCBjaGVjayB0aGF0IG91dHB1dCBwYXJhbXMgYXJlIGluaXRpYWxpemVkIHRvIDAuCisKKzIwMTUtMTAtMjcgMTY6MzI6NDggKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IFJlbW92ZSBzb21lIGRlYWQgY29kZSB0aGF0IGNvdWxkIG5ldmVyIGJlIGNhbGxlZAorCSAgQ292ZXJpdHkgQ0lEcyAjMTMyODgxOCwgIzEzMjg4MTksICMxMzI4ODIwLgorCisyMDE1LTEwLTI3IDAwOjM2OjQxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9NYWtlZmlsZS5hbToKKwkqIGV4dC9nbC9nc3RvcGVuZ2wuYzoKKwkgIG9wZW5nbDogYnVpbGQvcHJvdmlkZSBnbHN0ZXJlb21peC9zcGxpdCBvbiBnbGVzIG9ubHkgc3lzdGVtcworCisyMDE1LTEwLTI2IDE2OjUxOjA2ICswMTAwICBHZW9yZ2UgS2lhZ2lhZGFraXMgPGdlb3JnZS5raWFnaWFkYWtpc0Bjb2xsYWJvcmEuY29tPgorCisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dlb21ldHJpY21hdGguYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ2VvbWV0cmljbWF0aC5oOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RidWxnZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RjaXJjbGUuYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0Z2VvbWV0cmljdHJhbnNmb3JtLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGthbGVpZG9zY29wZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtYXJibGUuYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWFyYmxlLmg6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHNxdWFyZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RzdHJldGNoLmM6CisJICBnZW9tZXRyaWN0cmFuc2Zvcm06IHJlbmFtZSBnZW1ldHJpYyBtYXRoIGZ1bmN0aW9ucyB0byBoYXZlIHRoZWlyIHN5bWJvbHMgbmFtZXNwYWNlZAorCSAgT3RoZXJ3aXNlIHRob3NlIHN5bWJvbHMgY2FuIGNvbmZsaWN0IHdpdGggZXh0ZXJuYWwgbGlicmFyaWVzIHdoZW4KKwkgIGxpbmtpbmcgZXZlcnl0aGluZyBzdGF0aWNhbGx5IGZvciBtb2JpbGUgdGFyZ2V0cy4KKwkgIFVzZSB0aGUgZ3N0X2dtXyBwcmVmaXgsIHNob3J0IGZvciBnc3QgZ2VvbWV0cmljIG1hdGguCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2ODgyCisKIDIwMTUtMTAtMjYgMTU6MzA6MDggKzAxMDAgIEdlb3JnZSBLaWFnaWFkYWtpcyA8Z2VvcmdlLmtpYWdpYWRha2lzQGNvbGxhYm9yYS5jb20+CiAKIAkqIGV4dC93YXlsYW5kL2dzdHdheWxhbmRzaW5rLmM6CkBAIC01MTYsNiArODY5NSwyOCBAQAogCSAgSXQncyBwcm9iYWJseSBiZXR0ZXIgdG8gYXZvaWQgY2hhc2luZyBoaWRkZW4gcmVmY291bnRzLgogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjU2NwogCisyMDE1LTEwLTI2IDE4OjI2OjE4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jOgorCSAgZ2xjb2xvcmNvbnZlcnQ6IGFsbG93IG91dHB1dHRpbmcgbXVsdGlwbGUgdGV4dHVyZXMgZm9yIGdsZXMzIGNvbnRleHRzCisJICB0aGUgVVNJTkdfR0xFUzIgaW5jbHVkZXMgYWxsIEdMRVMzIGNvbnRleHRzIGFzIHdlbGwgd2hpY2ggZG9lcyBzdXBwb3J0CisJICBkcmF3aW5nIHRvIG11bHRpcGxlIGJ1ZmZlcnMuICBJbnN0ZWFkIG1ha2Ugb3IgZGVjaXNpb24gc29sZWx5IGJhc2VkIG9uCisJICB3aGV0aGVyIGdsRHJhd0J1ZmZlcnMgaXMgYXZhaWxhYmxlIG9yIG5vdC4KKworMjAxNS0xMC0yNiAxNzozNjoyMSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0b3BlbmdsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5jOgorCSAgZ2x2aWV3Y29udmVydDogZXhwb3NlIHRoZSBlbGVtZW50IG9uIGdsZXMyIHBsYXRmb3JtcworCSAgV2UgY2FuIGRvIGV2ZXJ5dGhpbmcgd2l0aCBnbGVzMyBob3dldmVyIGdsZXMyIHJlc3RyaWN0cyB1cyBub3QgYWxsb3dpbmcKKwkgIHNlcGFyYXRlZCBvciBmcmFtZS1ieS1mcmFtZSBtdWx0aXZpZXcgbW9kZXMgZHVlIHRvIG11bHRpcGxlIGRyYXcgYnVmZmVycy4KKworMjAxNS0xMC0yNSAwMToxOTozMyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jOgorCSAgdGVzdHM6IGhsc2RlbXV4X20zdTogYWRkIHRlc3QgZm9yIG1hc3RlciBwbGF5bGlzdCB3aXRoIG1pc3NpbmcgdmFyaWFudCBsaXN0IHVyaQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njg2MQorCiAyMDE1LTEwLTIwIDA5OjEzOjA0ICswMTAwICBBbmRyw6kgRHJhc3ppayA8Z2l0QGFuZHJlZC5uZXQ+CiAKIAkqIGV4dC9obHMvbTN1OC5jOgpAQCAtNTMyLDQ2ICs4NzMzLDMzMSBAQAogCSAgYXMgbmVlZGVkLgogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njg2MQogCisyMDE1LTA5LTA0IDExOjI5OjA4ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvaGxzL2dzdGhsc2RlbXV4LmM6CisJICBobHNkZW11eDogY2hhbmdlIGRpc3Bvc2UgZnVuY3Rpb24gdG8gZmluYWxpemUKKworMjAxNS0wOC0zMCAyMTozNTowMiArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IHJlbW92ZSBoZWxwZXIgZnVuY3Rpb24gb25seSB1c2VkIG9uY2UKKworMjAxNS0wOC0zMCAxNzo0MToyMyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IHJlbW92ZSBkZXByZWNhdGVkICdmcmFnbWVudHMtY2FjaGUnIHByb3BlcnR5CisJICBJdCdzIGJlZW4gbm9uLWZ1bmN0aW9uYWwgZm9yIHR3byBjeWNsZXMgbm93LCBsZXQncworCSAgZ2V0IHJpZCBvZiBpdC4KKworMjAxNS0wOS0wMiAxNjo0MDoxNyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9tM3U4LmM6CisJICBobHNkZW11eDogbTN1ODogbW92ZSBmaWxlIGxvb2t1cCBieSBzZXF1ZW5jZSBkaXJlY3RseSBpbnRvIGNvZGUKKwkgIE5pY2VyIHRvIHJlYWQsIHR3byBsaW5lcyBvZiBjb2RlIGxlc3MsIGFuZCBhbHNvIHRoZSBjYWxsYmFjaworCSAgZnVuY3Rpb24gc2hvdWxkJ3ZlIGJlZW4gYSBHQ29tcGFyZUZ1bmMgdGhhdCByZXR1cm5zIGEgZ2ludAorCSAgYW5kIG5vdCBhIGJvb2xlYW4gKGl0IGRpZCB3b3JrIGNvcnJlY3RseSwgd2FzIGp1c3QgY29uZnVzaW5nKS4KKworMjAxNS0wOS0wMSAxMjo0ODozOCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9tM3U4LmM6CisJKiBleHQvaGxzL20zdTguaDoKKwkgIGhsc2RlbXV4OiBtM3U4OiBjbGVhbi11cDogcmVtb3ZlIHVudXNlZCBhcmd1bWVudCBpbiBmdW5jdGlvbiBjYWxsCisKKzIwMTUtMDgtMzAgMTc6MjI6MTkgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvbTN1OC5oOgorCSAgaGxzZGVtdXg6IG0zdTg6IGNsZWFuLXVwOiByZWluZGVudCBoZWFkZXIgZm9yIGJldHRlciByZWFkYWJpbGl0eQorCSAgQW5kIHJlbW92ZSBkdXBsaWNhdGUgZGVmaW5lLgorCisyMDE1LTEwLTIzIDE4OjU4OjQxICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214Zm11eC5jOgorCSAgbXhmbXV4OiBSZW1vdmUgZW1wdHkgc2V0L2dldF9wcm9wZXJ0eSgpCisJICBXZSBjYW4gYWRkIHRoZW0gYWdhaW4gaWYgd2UgZXZlciBhZGQgcHJvcGVydGllcy4KKworMjAxNS0xMC0yMyAxODozODozMyArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9NYWtlZmlsZS5hbToKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJKiBnc3QvbXhmL214Zm11eC5oOgorCSAgbXhmbXV4OiBQb3J0IHRvIEdzdEFnZ3JlZ2F0b3IKKworMjAxNS0xMC0yMiAxOToyMDoyNCArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtdXguYzoKKwkgIG14Zm11eDogU2V0IEdDIGVzc2VuY2UgZWxlbWVudCBVTCB2ZXJzaW9uIHRvIDB4MDEKKwkgIGZmbXBlZyBvdGhlcndpc2UgcmVqZWN0cyBpdCBhbmQgdGhlIHNwZWMgaXMgbm90IDEwMCUgY2xlYXIgYWJvdXQgdGhhdC4KKwogMjAxNS0xMC0yMCAxNzowOToyMiArMDIwMCAgU2FudGlhZ28gQ2Fyb3QtTmVtZXNpbyA8c2FuY2FuZUBnbWFpbC5jb20+CiAKIAkqIGV4dC9zcnRwL2dzdHNydHAuYzoKIAkgIHNydHA6IEZpeCBjcml0aWNhbCB3YXJuaW5nIHRyeWluZyB0byByZXRyaWV2ZSBTU1JDIGZyb20gYSBub24gZmIgbWVzc2FnZQogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njg3NgogCi0yMDE1LTEwLTE2IDAwOjIzOjU2ICswMjAwICBNaWd1ZWwgUGFyw61zIETDrWF6IDxtcGFyaXNkaWF6QGdtYWlsLmNvbT4KKzIwMTUtMTAtMjIgMTk6MjQ6MzQgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKLQkqIGV4dC9zcnRwL2dzdHNydHBkZWMuYzoKLQkgIHNydHBkZWM6IHNraXAgcGFkZGluZyB3aGVuIG1hcHBpbmcgUlRQIHBhY2tldHMKLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY2NTMKKwkqIGdzdC9teGYvTWFrZWZpbGUuYW06CisJICBteGY6IFJlb3JkZXIgQ0ZMQUdTIGFuZCBMSUJTCiAKLTIwMTUtMTAtMTQgMTA6MzE6MjMgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisyMDE1LTEwLTIzIDE1OjQyOjI0ICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgogCi0JKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKLQkgIG1wZHBhcnNlcjogU2V0IGRlZmF1bHQgbGFzdF9ieXRlX3BvcyB0byAtMQotCSAgVGhlIHZhbHVlIGlzIG9wdGlvbmFsIGluIHRoZSByYW5nZSwgYW5kIGlmIGl0IGlzIGFic2VudCBpdCBtZWFucyB3ZSBzaG91bGQKLQkgIGRvd25sb2FkIHVudGlsIHRoZSBlbmQgb2Ygc3RyZWFtLiBOb3QgdW50aWwgcG9zaXRpb24gMC4KLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDgzMTYKKwkqIGdzdC1saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuYzoKKwkqIGdzdC1saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuaDoKKwkgIGFnZ3JlZ2F0b3I6IEFkZCBjcmVhdGVfbmV3X3BhZCgpIHZmdW5jIHRvIGFsbG93IHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3VyCisJICBOb3QgYWxsIGFnZ3JlZ2F0b3Igc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSBzaW5nbGUgcGFkIHRlbXBsYXRlIGNhbGxlZCBzaW5rXyV1CisJICBhbmQgbWlnaHQgZG8gc29tZXRoaW5nIHNwZWNpYWwgZGVwZW5kaW5nIG9uIHdoYXQgdGhlIGFwcGxpY2F0aW9uIHJlcXVlc3RzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzAxOAogCi0yMDE1LTEwLTE0IDE5OjMyOjA3ICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorMjAxNS0xMC0yMSAxOTowMDo0MSArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtdXguYzoKKwkgIG14Zm11eDogU2V0IEtBRyBzaXplIHRvIDEKKwkgIFdlJ3JlIG5vdCBhbGlnbmluZyBvdXIgb3V0cHV0IGluIGFueSB3YXksIGFuZCAwIGlzIGludmFsaWQuCisKKzIwMTUtMTAtMjEgMTg6NTg6MDYgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IERvbid0IGxldCB0aGUgaGVhZGVyIHBhcnRpdGlvbidzIHByZXZfcGFydGl0aW9uIHBvaW50IGZvcndhcmQgdG8gdGhlIGZvb3RlcgorCisyMDE1LTEwLTIxIDE4OjMyOjA5ICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214ZnR5cGVzLmM6CisJICBteGZ0eXBlczogRml4IGdlbmVyYXRpb24gb2Ygb3BlcmF0aW9uYWwgcGF0dGVybiBVTAorCisyMDE1LTEwLTIxIDE4OjMxOjQzICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9leGFtcGxlcy9teGYvbXhmZGVtdXgtc3RydWN0dXJlLmM6CisJICBteGZkZW11eC1zdHJ1Y3R1cmU6IFN5bmMgZmFrZXNpbmsgc3RhdGUgd2l0aCB0aGUgYmluIHRvIG1ha2UgdGhlIGFwcGxpY2F0aW9uIHdvcmsgYXQgYWxsCisKKzIwMTUtMTAtMjEgMTg6MjA6MTYgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXBlZy5jOgorCSAgbXhmbXBlZzogaDI2NCBpcyBhbHdheXMgYnl0ZS1zdHJlYW0gaW5zaWRlIE1YRgorCisyMDE1LTEwLTIxIDE4OjA2OjExICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9teGZtdXguYzoKKwkqIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9teGYuYzoKKwkgIG14ZjogQWRkIHVuaXQgdGVzdHMgZm9yIEgyNjQvUENNCisKKzIwMTUtMTAtMjEgMTc6NDc6MDAgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IERvbid0IGxlYWsgU0VFSyBldmVudHMgd2hlbiBkcm9wcGluZyB0aGVtCisKKzIwMTUtMTAtMjEgMTc6MjE6MDkgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmdmMzLmM6CisJICBteGZ2YzM6IFRoZSB3cmFwcGluZyBpcyB0aGUgMTV0aCBieXRlIG9mIHRoZSBlc3NlbmNlIGNvbnRhaW5lciBVTCwgbm90IHRoZSAxNnRoCisJICBJbiBvdGhlciBtYXBwaW5ncyBpdCBpcyB0aGUgMTZ0aCB0aG91Z2guCisKKzIwMTUtMTAtMjEgMTc6MTE6MDMgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmZGVtdXguYzoKKwkgIG14ZmRlbXV4OiBJZiBzZWVraW5nIHRvIHRoZSByZW1haW5pbmcgcGFydHMgb2YgdGhlIGZpbGUgZmFpbHMgb24gRU9TLCBjb25zaWRlciB0aGUgc3RyZWFtIGRvbmUKKwkgIFdpdGhvdXQgdGhpcyB3ZSB3b3VsZCBydW4gdGhpcyB3aGlsZSBsb29wIGZvcmV2ZXIsIGFsd2F5cyBzZWVraW5nIGFnYWluIGZvcgorCSAgdGhlIHNhbWUgc3RyZWFtLgorCisyMDE1LTEwLTIxIDE1OjA3OjIzICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9teGZtdXguYzoKKwkqIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9teGYuYzoKKwkgIG14ZjogUHJvcGVybHkgZW5hYmxlIHVuaXQgdGVzdHMgYWdhaW4KKworMjAxNS0xMC0yMSAwMToyMjoxMSArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGYuYzoKKwkgIG14ZjogUmUtZW5hYmxlIG14Zm11eCBlbGVtZW50CisKKzIwMTUtMTAtMjEgMDE6MjE6MzcgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmanBlZzIwMDAuYzoKKwkgIG14ZmpwZWcyMDAwOiBGaXggY2FwcworCSAgVGhlcmUgaXMgbm8gZmllbGRzIGZpZWxkIGFueW1vcmUuCisKKzIwMTUtMTAtMjEgMDE6MTc6MDQgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IERvbid0IGZhaWwgU0VHTUVOVCBldmVudHMKKworMjAxNS0xMC0yMSAwMTowMjo0NiArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtdXguYzoKKwkgIG14Zm11eDogUHVzaCBzdHJlYW0tc3RhcnQgYW5kIGNhcHMgZXZlbnQgYmVmb3JlIHNlZ21lbnQgZXZlbnQKKwkgIEFuZCBkb24ndCBwdXNoIHRoZSBjYXBzIGV2ZW50IGR1cmluZyBpbnN0YW5jZSBpbml0aWFsaXphdGlvbiBhbHJlYWR5LgorCisyMDE1LTEwLTIxIDAwOjQ1OjE5ICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214ZmFlcy1id2YuYzoKKwkgIG14ZmFlcy1id2Y6IEZvcm1hdCBpcyB1bnNpZ25lZCBpZiBpdCdzIDEgYnl0ZSBwZXIgY2hhbm5lbAorCSAgLi4uIG5vdCAxIGJ5dGUgcGVyIGJsb2NrLgorCisyMDE1LTEwLTIxIDE2OjUxOjEwICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuY3BwOgorCSAgb3BlbmN2OiBoYW5kZGV0ZWN0OiBubyBuZWVkIHRvIGdldCBhIHdyaXRhYmxlIGJ1ZmZlcgorCSAgTm8gbmVlZCB0byBnZXQgYSB3cml0YWJsZSBidWZmZXIgaW5zaWRlIGN2X3RyYW5zX2Z1bmMgb2Ygb3BlbmN2IHZpZGVvCisJICBmaWx0ZXIuIEdzdEJhc2VUcmFuc2Zvcm0gdGFrZXMgY2FyZSBvZiB0aGlzLgorCisyMDE1LTEwLTIxIDE0OjM1OjExICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBjb21tb246CisJICBBdXRvbWF0aWMgdXBkYXRlIG9mIGNvbW1vbiBzdWJtb2R1bGUKKwkgIEZyb20gYjk5ODAwYSB0byBiMzE5OTA5CisKKzIwMTUtMTAtMjAgMTc6Mjk6NDIgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkgIFVzZSBuZXcgR1NUX0VOQUJMRV9FWFRSQV9DSEVDS1MgI2RlZmluZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njg3MAorCisyMDE1LTEwLTIxIDE0OjI2OjAxICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBSRUFETUU6CisJKiBjb21tb246CisJICBBdXRvbWF0aWMgdXBkYXRlIG9mIGNvbW1vbiBzdWJtb2R1bGUKKwkgIEZyb20gOWFlZDFkNyB0byBiOTk4MDBhCisKKzIwMTUtMTAtMjEgMDU6MzQ6MTggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmM6CisJICBnbHNoYWRlcmVsZW1lbnQ6IGZyZWUgdGhlIHZlcnRleCBhbmQgZnJhZ21lbnQgc3RyaW5ncyBvbiBmaW5hbGl6ZQorCSAgRml4ZXMgYSBtZW1vcnkgbGVhayB3aGVuIHVzaW5nIHRoZSB2ZXJ0ZXgvZnJhZ21lbnQgcHJvcGVydGllcy4KKworMjAxNS0xMC0yMSAwNTozMzoxMyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgogCiAJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6Ci0JICBhbWN2aWRlb2RlYzogUHJvcGVybHkgZm9yd2FyZCB0aGUgcmV0dXJuIHZhbHVlIG9mIGdzdF92aWRlb19kZWNvZGVyX25lZ290aWF0ZSgpCi0JICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2NTc4CisJICBhbmRyb2lkbWVkaWE6IGZpeCBidWlsZCBlcnJvcnMKKwkgIHByaW50ZiAlbGxkIGluc3RlYWQgb2YgR19HSU5UNjRfRk9STUFULgorCSAgRG91YmxlIHJldCB2YXJpYWJsZSBkZWNsYXJhdGlvbi4KIAotMjAxNS0xMC0xNCAxOToyNDoyMiArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKzIwMTUtMTAtMjEgMDU6MDA6MTEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmM6CisJICBnbHNoYWRlcmVsZW1lbnQ6IHJlbW92ZSB1bm5lZWRlZCByZWZlcmVuY2UgdG8gPGdzdC9nbC9nc3RnbHNoYWRlcnZhcmlhYmxlcy5oPgorCisyMDE1LTEwLTIxIDA0OjQ0OjUwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250ZXh0LmM6CisJICBnbDogZml4IHVzYWdlIG9mIHN0cmluZy5oIGFuZCBzdGRpby5oIGZ1bmN0aW9ucyB3aXRob3V0IGluY2x1ZGluZyB0aGUgaGVhZGVycworCSAgZS5nOgorCSAgZ3N0Z2xjb250ZXh0X2VnbC5jOjYxMzo3OiBlcnJvcjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ3N0cmNtcCcKKwkgIFstV2Vycm9yPWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uXQorCSAgaWYgKHN0cmNtcCAoR19NT0RVTEVfU1VGRklYLCAic28iKSA9PSAwKQorCisyMDE1LTEwLTE2IDA3OjAzOjA2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSAgZ2xpbWFnZXNpbms6IGNyZWF0ZSBhIGNvbnRleHQgaW4gTlVMTF9SRUFEWQorCSAgU28gdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBkZWNvZGVycyBldCBhbC4gdG8gcmVxdWVzdCB0aGUgT3BlbkdMIGNvbnRleHQKKwkgIGluIHRoZWlyIFJFQURZX1BBVVNFRCB0cmFuc2l0aW9uIHdpdGggZGVjb2RlYmluL3BsYXliaW4uCisKKzIwMTUtMTAtMTYgMDA6MzQ6MjIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5oOgorCSAgYW1jdmlkZGVjOiB1c2UgZ3N0Y29udGV4dCB0byByZXRyZWl2ZSB0aGUgT3BlbkdMIGNvbnRleHQKKworMjAxNS0wNC0yMCAxMzo0Njo1OCArMDIwMCAgTWF0dGhpZXUgQm91cm9uIDxtYXR0aGlldS5ib3Vyb25AY29sbGFib3JhLmNvbT4KIAogCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmg6CiAJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6Ci0JICBhbWN2aWRlb2RlYzogSW1wbGVtZW50IHN1cHBvcnQgZm9yIENPTE9SX1FDT01fRm9ybWF0WVZVNDIwU2VtaVBsYW5hcjMybU11bHRpVmlldyBmb3IgZGVjb2RpbmcKLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY1NzgKKwkgIGFuZHJvaWRtZWRpYTogT25seSBhbGxvdyBHTCBvdXRwdXQgaWYgdGhlIGRlY29kZXIgaGFzIHVua25vd24gY29sb3IgZm9ybWF0cworCSAgSWYgR1NUX0FNQ19JR05PUkVfVU5LTk9XTl9DT0xPUl9GT1JNQVRTIGlzIHNldCB0byB5ZXMsIG5vbi1HTCBvdXRwdXQKKwkgIGlzIHN0aWxsIGFsbG93ZWQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMjA0CiAKLTIwMTUtMTAtMTQgMTg6MzU6MDAgKzAyMDAgIHBsYW1vdCA8cGllcnJlLmxhbW90QG9wZW53aWRlLmZyPgorMjAxNC0wNi0wNSAxMDozMzo1NiArMDIwMCAgTWF0dGhpZXUgQm91cm9uIDxtYXR0aGlldS5ib3Vyb25AY29sbGFib3JhLmNvbT4KIAotCSogc3lzL2RzaG93dmlkZW9zaW5rL2RzaG93dmlkZW9zaW5rLmNwcDoKLQkgIGRzaG93dmlkZW9zaW5rOiBGaXggNjRiaXQgY29tcGF0aWJpbGl0eSBpc3N1ZQotCSAgU2V0V2luZG93TG9uZyB3b3JrcyBvbmx5IGZvciAzMiBiaXQgc3lzdGVtcywgdGh1cyB3aW5kb3dzIGV2ZW50cyAobW92ZS9yZXNpemUpCi0JICB3aGVyZSBub3QgaW50ZXJwcmV0ZWQgb24gNjQgYml0IHN5c3RlbXMKLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY2MTcKKwkqIHN5cy9hbmRyb2lkbWVkaWEvTWFrZWZpbGUuYW06CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jMmR0ZXh0dXJlcmVuZGVyZXIuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jMmR0ZXh0dXJlcmVuZGVyZXIuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jYXVkaW9kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jc3VyZmFjZS5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNzdXJmYWNlLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2V0ZXh0dXJlLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZW5jLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGpuaXV0aWxzLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGpuaXV0aWxzLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL29yZy9mcmVlZGVza3RvcC9nc3RyZWFtZXIvYW5kcm9pZG1lZGlhL0dzdEFtY09uRnJhbWVBdmFpbGFibGVMaXN0ZW5lci5qYXZhOgorCSAgYW5kcm9pZG1lZGlhOiBBZGQgc3VwcG9ydCBmb3IgR0wgb3V0cHV0IGluIGFtY3ZpZGVvZGVjCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMjA0CisKKzIwMTUtMDQtMzAgMTI6MzM6NTggKzAyMDAgIE1hdHRoaWV1IEJvdXJvbiA8bWF0dGhpZXUuYm91cm9uQGNvbGxhYm9yYS5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkgIGFuZHJvaWRtZWRpYTogRG8gbm90IGZsdXNoIGNvZGVjIGlmIGl0IGlzIG5vdCBzdGFydGVkCisKKzIwMTUtMDQtMTMgMTM6MTA6MTAgKzAyMDAgIE1hdHRoaWV1IEJvdXJvbiA8bWF0dGhpZXUuYm91cm9uQGdtYWlsLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3Rqbml1dGlscy5jOgorCSAgYW5kcm9pZG1lZGlhOiBBbGxvdyBvYmplY3QgdG8gYmUgTlVMTCBpbiBnc3RfYW1jX2puaV8qdW5yZWYgZnVuY3Rpb25zCisKKzIwMTUtMDMtMTMgMTY6MTM6MDggKzAxMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZW5jLmM6CisJICBhbmRyb2lkbWVkaWE6IEZpeCBkZWJ1ZyBzdGF0ZW1lbnQgKCVkIGZvciBhIGdzaXplIGFyZ3VtZW50KQorCisyMDE1LTA0LTAyIDE2OjI4OjE0ICswMjAwICBNYXR0aGlldSBCb3Vyb24gPG1hdHRoaWV1LmJvdXJvbkBnbWFpbC5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkgIGFuZHJvaWRtZWRpYTogSW1wcm92ZSBjb2xvciBmb3JtYXQgZGVidWcgbWVzc2FnZXMKKworMjAxNS0wMy0zMSAxNjoyNDo0MCArMDIwMCAgTWF0dGhpZXUgQm91cm9uIDxtYXR0aGlldS5ib3Vyb25AZ21haWwuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5jOgorCSAgYW5kcm9pZG1lZGlhOiBJbXByb3ZlIGRlYnVnIG1lc3NhZ2VzCisKKzIwMTUtMDMtMzEgMTc6NDg6NTkgKzAyMDAgIE1hdHRoaWV1IEJvdXJvbiA8bWF0dGhpZXUuYm91cm9uQGdtYWlsLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuYzoKKwkgIGFuZHJvaWRtZWRpYTogRG8gbm90IHdhcm4gd2UgZG8gbm90IHN1cHBvcnQgQ09MT1JfRm9ybWF0U3VyZmFjZQorCisyMDE1LTEwLTIxIDAzOjU5OjMzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9nbC9nbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVydmFyaWFibGVzLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuaDoKKwkgIGdsOiByZW1vdmUgdW5uZWVkZWQgc2hhZGVyIHZhcmlhYmxlIHBhcnNpbmcgY29kZQorCisyMDE1LTEwLTIxIDAzOjIzOjMwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGZpbHRlcnNoYWRlci5jOgorCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmg6CisJICBnbHNoYWRlcmVsZW1lbnQ6IGltcGxlbWVudCBzZXR0aW5nIGFyYml0cmFyeSB1bmlmb3JtcworCSAgQ3VycmVudGx5IGZsb2F0IGFuZCBpbnQgYXJlIHN1cHBvcnRlZCBieSBkZWZhdWx0LiB2ZWMyLCB2ZWMzLCB2ZWM0CisJICBhbmQgbWF0NCBhcmUgc3VwcG9ydGVkIGlmIGdyYXBoZW5lIGlzIHVzZWQuICBPZiBjb3Vyc2UgaWYgb25lIHdhbnRzCisJICB0byBzZXQgY3VzdG9tIHVuaWZvcm1zIHRoZXkgY2FuIGFsc28gYmUgc2V0IHVzaW5nIHRoZSBjcmVhdGUtc2hhZGVyCisJICBzaWduYWwuCisKKzIwMTUtMTAtMjAgMTI6MjQ6MTEgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jcHA6CisJICBvcGVuY3Y6IGhhbmRkZXRlY3Q6IGZyZWUgYmVzdF9yIHdpdGggZGVsZXRlCisJICBiZXN0X3IgaXMgYSBjdjo6UmVjdCwgc28gaXQgc2hvdWxkIGJlIGZyZWVkIHdpdGggZGVsZXRlIGFuZCBub3Qgd2l0aAorCSAgZ19mcmVlKCkKKworMjAxNS0xMC0yMCAxMjowODo1OSArMDEwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3Rtb3Rpb25jZWxscy5jcHA6CisJICBvcGVuY3Y6IG1vdGlvbmNlbGxzOiByZW1vdmUgdW5uZWNlc3NhcnkgY2hlY2sKKwkgIFdlIGtub3cgdGhhdCB0aGUgZ2NoYXIgYXJyYXlzIGNvbnRhaW4gYXQgbGVhc3Qgb25lIHN0cmluZy4gRnVydGhlcm1vcmUsCisJICBnX3N0cmZyZWV2KCkgY2hlY2tzIGlmIHRoZSBhcnJheSBpcyBOVUxMIGFuZCBzaW1wbHkgcmV0dXJucyBpZiBpdCBpcy4KKwkgIEhlbmNlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIGlmIHRoZSBhcnJheSBpcyBlbXB0eSBiZWZvcmUgdXNpbmcKKwkgIGdfc3RyZnJlZXYoKS4KKwkgIENJRCAxMzI3NDEyLTEzMjc0MTUKIAogMjAxNS0wNy0wOCAxNzoxNzoxMiArMDIwMCAgRWR3YXJkIEhlcnZleSA8ZWR3YXJkQGNlbnRyaWN1bGFyLmNvbT4KIApAQCAtNTg0LDYgKzkwNzAsNTQgQEAKIAkgIHdhcyBwcmV2aW91c2x5IG91dHB1dHRlZC4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTIxMzIKIAorMjAxNS0xMC0xNCAxODozNTowMCArMDIwMCAgcGxhbW90IDxwaWVycmUubGFtb3RAb3BlbndpZGUuZnI+CisKKwkqIHN5cy9kc2hvd3ZpZGVvc2luay9kc2hvd3ZpZGVvc2luay5jcHA6CisJICBkc2hvd3ZpZGVvc2luazogRml4IDY0Yml0IGNvbXBhdGliaWxpdHkgaXNzdWUKKwkgIFNldFdpbmRvd0xvbmcgd29ya3Mgb25seSBmb3IgMzIgYml0IHN5c3RlbXMsIHRodXMgd2luZG93cyBldmVudHMgKG1vdmUvcmVzaXplKQorCSAgd2hlcmUgbm90IGludGVycHJldGVkIG9uIDY0IGJpdCBzeXN0ZW1zCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2NjE3CisKKzIwMTUtMTAtMTkgMTU6MTU6MzAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dDoKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSogZXh0L2d0ay9ndGtnc3RnbHdpZGdldC5jOgorCSogZXh0L3F0L3F0aXRlbS5jYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9hbmRyb2lkL2dzdGdsd2luZG93X2FuZHJvaWRfZWdsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjb250ZXh0X2NvY29hLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2x3aW5kb3dfY29jb2EuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9kaXNwbWFueC9nc3RnbHdpbmRvd19kaXNwbWFueF9lZ2wuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsY29udGV4dF9lYWdsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbHdpbmRvd19lYWdsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsY29udGV4dF9lZ2wuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXIuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzeW5jbWV0YS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93Lmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9nc3RnbHdpbmRvd193YXlsYW5kX2VnbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsY29udGV4dF93Z2wuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbHdpbmRvd193aW4zMi5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsd2luZG93X3dpbjMyX2VnbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbGNvbnRleHRfZ2x4Lmg6CisJKiBnc3QtbGlicy9nc3QvZ2wveDExL2dzdGdsd2luZG93X3gxMS5oOgorCSAgZ2w6IGJlIGNvbnNpc3RlbnQgaW4gZ29iamVjdCBib2lsZXJwYXRlCisJICBHU1RfR0xfSVNfKiB2cyBHU1RfSVNfR0xfKgorCSAgZ2l0IGdyZXAgLWwgJ0dTVF9HTF9JU18nIHwgeGFyZ3Mgc2VkIC1pICdzL0dTVF9HTF9JU18vR1NUX0lTX0dMXy9nJworCisyMDE1LTEwLTE5IDE1OjAyOjEwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIC5naXRpZ25vcmU6CisJICBhZGQgZ2xsaXZlc2hhZGVyIHByb2dyYW0gdG8gLmdpdGlnbm9yZQorCiAyMDE1LTEwLTE3IDEyOjQ4OjExIC0wNzAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CiAKIAkqIGdzdC9wbm0vZ3N0cG5tZGVjLmM6CkBAIC02MTEsNiArOTE0NSwyMyBAQAogCSAgZm9yIHRoZSBuZXh0IGZyYW1lLCBhdm9pZGluZyBmYWlsdXJlcyBsaWtlOgogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjU2MwogCisyMDE1LTEwLTE3IDE1OjI2OjQ2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGZpbHRlcnNoYWRlci5jOgorCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmg6CisJKiB0ZXN0cy9leGFtcGxlcy9ndGsvZ2xsaXZlc2hhZGVyLmM6CisJICBnbHNoYWRlcmVsZW1lbnQ6IGltcGxlbWVudCBvbi1kZW1hbmQgY3JlYXRlLXNoYWRlciBzaWduYWxsaW5nCisJICBPbmUgbWF5IG5vdCBoYXZlIGFuIEdzdEdMQ29udGV4dCBhdmFpbGFibGUgb3IgY3VycmVudCBpbiB0aGUgdGhyZWFkIHdoZXJlIG9uZQorCSAgd291bGQgbmVlZCB0byB1cGRhdGUgdGhlIHNoYWRlci4gIFN1cHBvcnQgdGhpcyBieSBzaWduYWxsaW5nIGNyZWF0ZS1zaGFkZXIKKwkgIHdoZW5ldmVyIHRoZSBvbmUtc2hvdCAndXBkYXRlLXNoYWRlcicgaXMgc2V0IHRvIFRSVUUuCisKKzIwMTUtMTAtMTcgMDI6NDI6NDcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2Nhb3BlbmdsbGF5ZXJzaW5rLm06CisJICBnbC9jYWxheWVyOiBkb24ndCBsZWFrIGEgZ2wgc2hhZGVyIG9iamVjdAorCSAgV2Ugd2lsbCBhbHdheXMgb3ZlcndyaXRlIHRoZSBjYV9zaW5rLT5yZWRpc3BsYXlfc2hhZGVyIHdpdGhvdXQgZnJlZWluZyB0aGUKKwkgIG9iamVjdC4KKwogMjAxNS0xMC0xNyAwMjo0MDo1MCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgogCiAJKiBleHQvZ3RrL2dzdGd0a2Jhc2VzaW5rLmM6CkBAIC02MTksMTIgKzkxNzAsMTY0IEBACiAJICBjYWxsYmFjay4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU5NjkKIAorMjAxNS0xMC0xNyAwMTowODoyOSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9leGFtcGxlcy9ndGsvTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9leGFtcGxlcy9ndGsvZ2xsaXZlc2hhZGVyLmM6CisJICBnbC9leGFtcGxlczogYWRkIGEgbGl2ZSBzaGFkZXIgZGVtbyB1c2luZyB0aGUgbmV3IEdzdEdMU0xTdGFnZQorCSAgSW1wbGVtZW50ZWQgd2l0aCB2aWRlb3Rlc3RzcmMgISBnbHNoYWRlciAhIGdsdXBsb2FkICEgZ3RrZ2xzaW5rCisJICBFcnJvcnMgb24gYW4gaW52YWxpZCBzaGFkZXIgY29tcGlsYXRpb24gYXJlIGlnbm9yZWQgaG93ZXZlciBhbnkgZXJyb3IKKwkgIHByb3ZpZGVkIGJ5IHRoZSBnbHNsIGNvbXBpbGVyIGlzIHByaW50ZWQgdG8gc3Rkb3V0LgorCisyMDE1LTEwLTE2IDAwOjIzOjU2ICswMjAwICBNaWd1ZWwgUGFyw61zIETDrWF6IDxtcGFyaXNkaWF6QGdtYWlsLmNvbT4KKworCSogZXh0L3NydHAvZ3N0c3J0cGRlYy5jOgorCSAgc3J0cGRlYzogc2tpcCBwYWRkaW5nIHdoZW4gbWFwcGluZyBSVFAgcGFja2V0cworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjY1MworCisyMDE1LTEwLTE0IDE5OjMyOjA3ICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBhbWN2aWRlb2RlYzogUHJvcGVybHkgZm9yd2FyZCB0aGUgcmV0dXJuIHZhbHVlIG9mIGdzdF92aWRlb19kZWNvZGVyX25lZ290aWF0ZSgpCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2NTc4CisKKzIwMTUtMTAtMTQgMTk6MjQ6MjIgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBhbWN2aWRlb2RlYzogSW1wbGVtZW50IHN1cHBvcnQgZm9yIENPTE9SX1FDT01fRm9ybWF0WVZVNDIwU2VtaVBsYW5hcjMybU11bHRpVmlldyBmb3IgZGVjb2RpbmcKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY1NzgKKworMjAxNS0xMC0xNiAwMjo1NzoxOSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmM6CisJICBnbHNsc3RhZ2U6IGFkZCBicmFja2V0cyBhcm91bmQgcG9pbnRlciBkZXJlZmVyZW5jZSByZWZlcmVuY2luZyBhbiBhcnJheQorCSAgV2hpbGUgdGVjaG5pY2FsbHksIGkgaXMgYWx3YXlzIDAgYW5kICp2ZXJ0ZXhfc291cmNlc1tpKytdIGlzIGVxdWl2YWxhbnQKKwkgIHRvICgqdmVydGV4X3NvdXJjZXMpW2krK10uICBCZSBmdXR1cmUtcHJvb2YgaW4gdGhlIGNhc2Ugb2YgY29kZQorCSAgbW92ZXMvY2hhbmdlcy9ldGMuCisJICBDSUQgMTMyNzQwNgorCisyMDE1LTEwLTE1IDIzOjQ3OjExICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9jYW9wZW5nbGxheWVyc2luay5tOgorCSAgZ2wvY2FvcGVuZ2xsYXllcnNpbms6IHBvcnQgdG8gbmV3IEdzdEdMU2hhZGVyIEFQSQorCSAgZml4ZXMgYnVpbGQgZXJyb3I6CisJICAidW5kZWZpbmVkIHN5bWJvbHMgZm9yIGFyY2hpdGVjdHVyZToKKwkgIGdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdmZfYW5kX2NoZWNrIgorCisyMDE1LTEwLTE1IDIyOjQyOjI2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb250ZXh0LmM6CisJICBnbC90ZXN0czogcG9ydCBnbGNvbnRleHQgdGVzdCB0byBvcGVuZ2wKKwkgIE5vdyB1c2VzIHZhbydzIGFuZCB2Ym8ncyB3aGVuIHBvc3NpYmxlIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIGdzdGdsIGxpYnJhcnkuCisKKzIwMTUtMDktMDQgMTY6MTY6NTEgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2xmaWx0ZXJzaGFkZXIuaDoKKwkgIGdsc2hhZGVyOiBwb3J0IGVsZW1lbnQgdG8gR3N0R0xTTFN0YWdlCisJICAtIFByb3ZpZGUgYSBzaGFkZXIgcHJvcGVydHkgdG8gc2V0IHRoZSBmdWxsIHNoYWRlciBwaXBlbGluZQorCSAgLSBQcm92aWRlIHZlcnRleCBhbmQgZnJhZ21lbnQgcHJvcGVydGllcyBmb3IganVzdCBwcm92aWRpbmcgc2ltcGxlCisJICBzaGFkZXIgc291cmNlcy4KKworMjAxNS0wOS0wNCAxNjowMjozMiArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdGlkZW50aXR5LmM6CisJKiBleHQvZ2wvZ3N0Z2xjb2xvcnNjYWxlLmM6CisJKiBleHQvZ2wvZ3N0Z2xkaWZmZXJlbmNlbWF0dGUuYzoKKwkqIGV4dC9nbC9nc3RnbGVmZmVjdHMuYzoKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSogZXh0L2d0ay9ndGtnc3RnbHdpZGdldC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsb3ZlcmxheWNvbXBvc2l0b3IuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5jOgorCSogdGVzdHMvY2hlY2svbGlicy9nc3RnbGNvbnRleHQuYzoKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2x1cGxvYWQuYzoKKwkgIGdsc2hhZGVyOiBwb3J0IHRvIHVzaW5nIEdzdEdMU0xTdGFnZSBvYmplY3RzIGZvciBzdHJpbmcgbWFuYWdlbWVudAorCSAgQSBHc3RHTFNoYWRlciBpcyBub3cgc2ltcGx5IGEgY29sbGVjdGlvbiBvZiBzdGFnZXMgdGhhdCBhcmUKKwkgIGNvbXBpbGVkIGFuZCBsaW5rZWQgdG9nZXRoZXIgaW50byBhIHByb2dyYW0uICBUaGUgdW5pZm9ybS9hdHRyaWJ1dGUKKwkgIGludGVyZmFjZSBoYXMgcmVtYWluZWQgdGhlIHNhbWUuCisKKzIwMTUtMDktMDQgMTQ6MzY6NDcgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmg6CisJICBnbHNsOiBhZGQgYSBzaGFkZXIgc3RhZ2Ugb2JqZWN0IEdzdEdMU0xTdGFnZQorCSAgUmVwcmVzZW50cyBhIHN0YWdlICh2ZXJ0ZXgsIGdlb21ldHJ5LCBmcmFnbWVudCwgZXRjKSBpbiB0aGUgc2hhZGVyCisJICBwaXBlbGluZS4KKworMjAxNS0wOS0wNCAwMDowOTowOSArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuaDoKKwkgIGdsL3NoYWRlci92YXJpYWJsZXM6IGluY2x1ZGUgZ2VuZXJpYyBnbC5oIGhlYWRlcgorCSAgT3RoZXJ3aXNlIHdlIG1heSBtaXNzIHNvbWUgZm9yd2FyZCBkZWNsYXJhdGlvbnMKKwkgIEZpeGVzIGJ1aWxkIGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIEdzdEdMU0xTdGFnZQorCisyMDE1LTA4LTIwIDE1OjExOjA2ICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xfcHJpdmF0ZS5oOgorCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9jaGVjay9saWJzLy5naXRpZ25vcmU6CisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsc2wuYzoKKwkgIGdsOiBhZGQgc29tZSBHTFNMIHV0aWxpdHkgZnVuY3Rpb25zCisJICBTcGVjaWZpY2FsbHkgcGFyc2luZy9zZXR0aW5nIEdMU0wgdmVyc2lvbnMgYW5kIHRoZSBzaGFkZXIgcmVsYXRlZAorCSAgZnVuY3Rpb24gdGFibGUuCisKIDIwMTUtMTAtMTQgMjI6NTE6MjkgKzAyMDAgIFBhdWwgQXJ6ZWxpZXIgPHBhdWwuYXJ6ZWxpZXJAZnJlZS5mcj4KIAogCSogZXh0L2R0bHMvZ3N0ZHRsc2NlcnRpZmljYXRlLmM6CiAJICBkdGxzOiBGaXggbmFtZSBjb25mbGljdCB3aXRoIG9wZW5zc2wgb24gd2luMzIKIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY1OTIKIAorMjAxNS0wOS0wNCAxODo0MDoxOCAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvaGxzL20zdTguYzoKKwkgIGhsczogaWYgbWVkaWEgc2VxdWVuY2UgaXMgbm90IHNwZWNpZmllZCwgdXNlIDAKKwkgIEFsbG93cyBwbGF5bGlzdHMgdGhhdCBhcmUgbWlzc2luZyB0aGUgbWVkaWFzZXF1ZW5jZSBpbmZvcm1hdGlvbiB0bworCSAgYmUgY29ycmVjdGx5IHBhcnNlZC4gSWYgdGhlIHBsYXlsaXN0IHdhcyB1cGRhdGVkIHdpdGhvdXQgcmVzZXRpbmcKKwkgIHRoZSBtZWRpYXNlcXVlbmNlIGl0IHdvdWxkIGNvbnN0YW50bHkgaW5jcmVhc2Ugb3ZlciBzdWJzZXF1ZW50IHVwZGF0ZXMsCisJICBsZWFkaW5nIHRvIGlzc3VlcyBkdXJpbmcgcGxheWJhY2suCisKKzIwMTUtMDgtMzAgMTQ6NTY6NTcgKzAyMDAgIEdlb3JnZSBLaWFnaWFkYWtpcyA8Z2VvcmdlLmtpYWdpYWRha2lzQGNvbGxhYm9yYS5jb20+CisKKwkqIGV4dC93YXlsYW5kL2dzdHdheWxhbmRzaW5rLmM6CisJICB3YXlsYW5kc2luazogZml4IGZhbGxiYWNrIGJ1ZmZlciBhbGxvY2F0aW9uCisJICBDb3B5LXBhc3RlIG1pc3Rha2U7IHRoZSB3bF9idWZmZXIgd2FzIGF0dGFjaGVkIG9uIHRoZSB3cm9uZyBidWZmZXIuLi4KKworMjAxNS0wOC0zMCAxNDo1NToxMSArMDIwMCAgR2VvcmdlIEtpYWdpYWRha2lzIDxnZW9yZ2Uua2lhZ2lhZGFraXNAY29sbGFib3JhLmNvbT4KKworCSogZXh0L3dheWxhbmQvZ3N0d2F5bGFuZHNpbmsuYzoKKwkqIGV4dC93YXlsYW5kL3dsZGlzcGxheS5jOgorCSogZXh0L3dheWxhbmQvd2xkaXNwbGF5Lmg6CisJICB3YXlsYW5kc2luazogcmVuYW1lIEdzdFdsRGlzcGxheTo6Zm9ybWF0cyBhcnJheSB0byBzaG1fZm9ybWF0cworCSAgVGhlc2UgZm9ybWF0cyBhcmUgc3BlY2lmaWMgdG8gdGhlIHdsX3NobSBpbnRlcmZhY2UuIFdlIGFyZSBnb2luZworCSAgdG8gYWRkIGRtYWJ1ZiBmb3JtYXRzIGxhdGVyIGFzIHdlbGwuCisKKzIwMTUtMDgtMjkgMjI6Mjk6MTcgKzAyMDAgIEdlb3JnZSBLaWFnaWFkYWtpcyA8Z2VvcmdlLmtpYWdpYWRha2lzQGNvbGxhYm9yYS5jb20+CisKKwkqIGV4dC93YXlsYW5kL01ha2VmaWxlLmFtOgorCSogZXh0L3dheWxhbmQvd2xzaG1hbGxvY2F0b3IuYzoKKwkqIGV4dC93YXlsYW5kL3dsc2htYWxsb2NhdG9yLmg6CisJICB3YXlsYW5kc2luazogcmVwbGFjZSB0aGUgY3VzdG9tIEdzdFdsU2htTWVtb3J5IHdpdGggR3N0RmRNZW1vcnkKKworMjAxNS0xMC0xNCAxOTo1MzozNCArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogcG8vUE9URklMRVMuaW46CisJICBwbzogVXBkYXRlIFBPVEZJTEVTLmluIGZvciBPcGVuQ1YgQysrIGZpbGUgcmVuYW1lCisKKzIwMTUtMTAtMTQgMTc6NDE6MDUgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGVkd2FyZEBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvbTN1OC5jOgorCSAgaGxzOiBBbGxvdyBkZWJ1Z2dpbmcgb2YgdGhlIHBsYXlsaXN0CisJICBIZWxwcyBkZWJ1Z2dpbmcgaXNzdWVzCisKIDIwMTUtMTAtMTQgMTc6Mzg6MzkgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGVkd2FyZEBjZW50cmljdWxhci5jb20+CiAKIAkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKQEAgLTY0MCw2ICs5MzQzLDE4OSBAQAogCSAgKiBlaXRoZXIgdGhlIGZpcnN0IHNlcXVlbmNlIG51bWJlciBvZiB0aGUgcGxheWxpc3QgKGZhbGxiYWNrKQogCSAgKiBvciAzIGZyYWdtZW50cyBmcm9tIHRoZSBsYXN0IG9uZSAoc3RhbmRhcmQgYmVoYXZpb3VyKQogCisyMDE1LTEwLTE0IDE1OjMwOjA1ICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L01ha2VmaWxlLmFtOgorCSogZXh0L29wZW5jdi9nc3RvcGVuY3Z1dGlscy5jOgorCSogZXh0L29wZW5jdi9nc3RvcGVuY3Z1dGlscy5jcHA6CisJKiBleHQvb3BlbmN2L2dzdG9wZW5jdnZpZGVvZmlsdGVyLmM6CisJKiBleHQvb3BlbmN2L2dzdG9wZW5jdnZpZGVvZmlsdGVyLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jOgorCSogZXh0L29wZW5jdi9nc3R0ZW1wbGF0ZW1hdGNoLmNwcDoKKwkgIG9wZW5jdjogc3dpdGNoIHJlbWFpbmluZyB0byBDKysKKwkgIFN3aXRjaCByZW1haW5pbmcgQyBmaWxlcyB0byBDKysgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgT3BlQ1YgZWxlbWVudHMsCisJICBhbmQgc3VwcG9ydCBvZiB0aGUgbmV3IDIuNC4xMSBBUEkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0MTQ4CisKKzIwMTUtMTAtMTQgMTA6MzE6MjMgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSAgbXBkcGFyc2VyOiBTZXQgZGVmYXVsdCBsYXN0X2J5dGVfcG9zIHRvIC0xCisJICBUaGUgdmFsdWUgaXMgb3B0aW9uYWwgaW4gdGhlIHJhbmdlLCBhbmQgaWYgaXQgaXMgYWJzZW50IGl0IG1lYW5zIHdlIHNob3VsZAorCSAgZG93bmxvYWQgdW50aWwgdGhlIGVuZCBvZiBzdHJlYW0uIE5vdCB1bnRpbCBwb3NpdGlvbiAwLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODMxNgorCisyMDE1LTEwLTE0IDEwOjM0OjU4ICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiBIVFRQIHJhbmdlcyBhcmUgaW5jbHVzaXZlLCBHU3RyZWFtZXIgc2VnbWVudC5zdG9wIGlzIGV4Y2x1c2l2ZQorCSAgVHJhbnNsYXRlIHRoZSB2YWx1ZXMgYWNjb3JkaW5nbHkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4MzE2CisKKzIwMTUtMTAtMTQgMTQ6MzQ6MzIgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvTWFrZWZpbGUuYW06CisJKiBleHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmM6CisJKiBleHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuaDoKKwkqIGV4dC9vcGVuY3YvbW90aW9uY2VsbHNfd3JhcHBlci5jcHA6CisJKiBleHQvb3BlbmN2L21vdGlvbmNlbGxzX3dyYXBwZXIuaDoKKwkgIG9wZW5jdjogbW90aW9uY2VsbHM6IFN3aXRjaCB0byBDKysKKwkgIFN3aXRjaCBnc3Rtb3Rpb25jZWxscyB0byBDKysgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgT3BlbkNWIGVsZW1lbnRzLAorCSAgYW5kIHN1cHBvcnQgb2YgdGhlIG5ldyAyLjQuMTEgQVBJLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDE0OAorCisyMDE1LTEwLTE0IDIyOjM1OjI2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIE1ha2VmaWxlLmFtOgorCSAgYnVpbGQ6IGFkZCBsaXZlYWRkZXIgZGlyZWN0b3J5IHRvIHRoZSBjcnVmdCBsaXN0CisJICBTbyB0aGF0IHdlIGNhbiByZW1vdmUgaXQgYW5kIGF2b2lkIGR1cGxpY2F0ZSBHc3RMaXZlQWRkZXIgR1R5cGUgcmVnaXN0cmF0aW9ucy4KKworMjAxNS0xMC0xMyAxMjo0MDowNCArMDIwMCAgR3VpbGxhdW1lIERlc21vdHRlcyA8Z3VpbGxhdW1lLmRlc21vdHRlc0Bjb2xsYWJvcmEuY28udWs+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmM6CisJICBnbDogZml4IGxlYWsgaW4gZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIoKQorCSAgVGhlIHN0cmluZyBhbGxvY2F0ZWQgYnkgZ192YXNwcmludGYoKSB3YXMgbGVha2VkLgorCSAgUmVwcm9kdWNlZCB1c2luZyB0aGUKKwkgIHZhbGlkYXRlLmZpbGUuY29tcG9zaXRvci5zaW1wbGUucGxheV8xNXMuc3luY2hyb25pemVkIHZhbGlkYXRlIHNjZW5hcmlvLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjQ5MgorCisyMDE1LTEwLTEyIDExOjA3OjMyICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuYXJnczoKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5oaWVyYXJjaHk6CisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuaW50ZXJmYWNlczoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hY2N1cmlwLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hZHBjbWRlYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWRwY21lbmMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFpZmYueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzZm11eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXNzcmVuZGVyLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdWRpb21peGVyLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdWRpb3Zpc3VhbGl6ZXJzLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdXRvY29udmVydC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYmF5ZXIueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJ6Mi54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY2FtZXJhYmluLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jaHJvbWFwcmludC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29sb3JlZmZlY3RzLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jdXJsLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kYXRhdXJpc3JjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kZWJ1Z3V0aWxzYmFkLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdHNkZWMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2Yi54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHZic3Vib3ZlcmxheS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHZkc3B1LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mYWFjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mYWFkLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mZXN0aXZhbC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmllbGRhbmFseXNpcy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmxpdGUueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZyYWdtZW50ZWQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZyZWkwci54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2F1ZGllZmZlY3RzLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZHAueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdlb21ldHJpY3RyYW5zZm9ybS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ21lZGVjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc20ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzdHNpcmVuLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pZDN0YWcueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWludGVyLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlcmxhY2UueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWpwZWdmb3JtYXQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1pbWljLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tbXMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1vZHBsdWcueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWcyZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVncHNkZW11eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzbXV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNkZW11eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzbXV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGcxMjMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wbGV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1uZW9uLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vZmEueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5hbC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmN2LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcHVzLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1wY2FwcGFyc2UueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBubS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmF3cGFyc2UueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlbW92ZXNpbGVuY2UueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlc2luZHZkLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yZmJzcmMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJ0bXAueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNjaHJvLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zZHAueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNlZ21lbnRjbGlwLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zaG0ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNtb290aC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc291bmR0b3VjaC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3BlZWQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXN1YmVuYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9wYXJzZXJzYmFkLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FhY2VuYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdm9hbXJ3YmVuYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4td2F5bGFuZHNpbmsueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXk0bWRlYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4temJhci54bWw6CisJICBkb2NzOiB1cGRhdGUgdG8gZ2l0CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2NDI0CisKKzIwMTUtMTAtMTIgMDk6MzY6MjkgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9hdWRpb21peGVyL2dzdGF1ZGlvbWl4ZXIuYzoKKwkgIGxpdmVhZGRlcjogbGF0ZW5jeSBwcm9wZXJ0eSBpcyBhbiB1aW50NjQgaW4gYXVkaW9taXhlcgorCisyMDE1LTEwLTExIDIzOjQ0OjI1ICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L01ha2VmaWxlLmFtOgorCSogZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5jOgorCSogZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5jcHA6CisJICB0ZXh0b3ZlcmxheTogU3dpdGNoIHRvIEMrKworCSAgU3dpdGNoIGdzdHRleHRvdmVybGF5IHRvIEMrKyBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBPcGVuQ1YgZWxlbWVudHMsCisJICBhbmQgc3VwcG9ydCBvZiB0aGUgbmV3IDIuNC4xMSBBUEkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0MTQ4CisKKzIwMTUtMTAtMTEgMjE6NTQ6MzAgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvTWFrZWZpbGUuYW06CisJKiBleHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmM6CisJKiBleHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmNwcDoKKwkgIG9wZW5jdjogcHlyYW1pZHNlZ21lbnQ6IFN3aXRjaCB0byBDKysKKwkgIFN3aXRjaCBnc3RweXJhbWlkc2VnbWVudCB0byBDKysgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgT3BlbkNWIGVsZW1lbnRzLAorCSAgYW5kIHN1cHBvcnQgb2YgdGhlIG5ldyAyLjQuMTEgQVBJLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDE0OAorCisyMDE1LTEwLTA1IDAwOjU1OjM2ICswMTAwICBPbGl2aWVyIENyw6p0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJKiBkb2NzL3BsdWdpbnMvTWFrZWZpbGUuYW06CisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9jcy5zZ21sOgorCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNlY3Rpb25zLnR4dDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1saXZlYWRkZXIueG1sOgorCSogZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9taXhlci5jOgorCSogZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5hbToKKwkqIGdzdC9saXZlYWRkZXIvbGl2ZWFkZGVyLmM6CisJKiBnc3QvbGl2ZWFkZGVyL2xpdmVhZGRlci5oOgorCSAgbGl2ZWFkZGVyOiBSZW1vdmUgcGx1Z2luLCByZXBsYWNlIGJ5IGNvbXBhdCBzdWJjbGFzcyBvZiBhdWRpb21peGVyCisJICBOZXcgc3ViY2xhc3Mgd2l0aCBhIHNpbWlsYXIgYmVoYXZpb3VyIGFzIHRoZSBvbGQgbGl2ZWFkZGVyLCBidXQKKwkgIGEgc2xpZ2h0bHkgZGlmZmVyZW50IEFQSSBhcyB0aGUgbGF0ZW5jeSBpcyBpbiBuYW5vc2Vjb25kcywgbm90CisJICBtaWxsaXNlY29uZHMuIEFsc28sIHRoZSBuZXcgbGl2ZWFkZGVyIGhhcyBhIGVmZmVjdGl2ZSBsYXRlbmN5IHRoYXQKKwkgIGlzIGxhdGVuY3kgKyBvdXRwdXQtYnVmZmVyLWR1cmF0aW9uLiBJbiBwcmFjdGljZSwganVzdCBzZXR0aW5nIGEgbm9uLXplcm8KKwkgIGxhdGVuY3kgd2l0aCB0aGUgbmV3IGF1ZGlvbWl4ZXIgZ2l2ZXMgeW91IHRoZSByaWdodCBiZWhhdmlvciBpbiA5OSUgb2YgdGhlCisJICBjYXNlcy4KKwogMjAxNS0xMC0xMSAxMDowMDo0MyArMDEwMCAgSnVsaWVuIElzb3JjZSA8ai5pc29yY2VAc2Ftc3VuZy5jb20+CiAKIAkqIGNvbmZpZ3VyZS5hYzoKQEAgLTY0OCwxOCArOTUzNCw2MSBAQAogCSAgRm91bmQgd2l0aCBnc3QtaW5zcGVjdC0xLjAgLWIgaW4gZ3N0LXVuaW5zdGFsbGVkIGVudi4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYzODMKIAotMjAxNS0xMC0wNSAxMToyMTowNyArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKzIwMTUtMTAtMTAgMTc6NTI6MjMgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CiAKLQkqIGdzdC9pZDN0YWcvaWQzdGFnLmM6Ci0JICBpZDN0YWc6IGZpeCBzYW1wbGUgbWVtb3J5IGxlYWsKLQkgIFdoZW4gZ2V0dGluZyBzYW1wbGUgZnJvbSB0YWdsaXN0LCB0aGUgbWVtb3J5IGlzIG5vdCBiZWluZyBmcmVlZCByZXN1bHRpbmcgaW4gbWVtb3J5IGxlYWsuCi0JICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2MDcwCisJKiBleHQvb3BlbmN2L01ha2VmaWxlLmFtOgorCSogZXh0L29wZW5jdi9nc3RjdnNvYmVsLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2c29iZWwuY3BwOgorCSAgY3Zzb2JlbDogU3dpdGNoIHRvIEMrKworCSAgU3dpdGNoIGdzdGN2bHNvYmVsIHRvIEMrKyBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBPcGVuQ1YgZWxlbWVudHMsIGFuZAorCSAgc3VwcG9ydCBvZiB0aGUgbmV3IDIuNC4xMSBBUEkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0MTQ4CiAKLTIwMTUtMTAtMDYgMjE6MjM6MTEgKzA1MzAgIE5pcmJoZWVrIENoYXVoYW4gPG5pcmJoZWVrQGNlbnRyaWN1bGFyLmNvbT4KKzIwMTUtMTAtMTAgMTc6MDA6NTUgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CiAKLQkqIGV4dC9nbC9nc3RnbHZpZGVvbWl4ZXIuYzoKLQkgIGdsdmlkZW9taXhlcjogUHJveHkgdGhlIGlnbm9yZS1lb3MgdmlkZW9hZ2dyZWdhdG9yIHByb3BlcnR5IGFzIHdlbGwKLQkgIElkZW50aWNhbCB0byBob3cgdGhlIHotb3JkZXIgcHJvcGVydHkgaXMgcHJveGllZAorCSogZXh0L29wZW5jdi9NYWtlZmlsZS5hbToKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5jcHA6CisJICBjdmxhcGxhY2U6IFN3aXRjaCB0byBDKysKKwkgIFN3aXRjaCBnc3RjdmxhcGxhY2UgdG8gQysrIGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIE9wZW5DViBlbGVtZW50cywgYW5kCisJICBzdXBwb3J0IG9mIHRoZSBuZXcgMi40LjExIEFQSS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQxNDgKKworMjAxNS0xMC0xMCAxNjo1NzozNiArMDEwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9NYWtlZmlsZS5hbToKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZlcXVhbGl6ZWhpc3QuYzoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZlcXVhbGl6ZWhpc3QuY3BwOgorCSAgY3ZlcXVhbGl6ZWhpc3Q6IFN3aXRjaCB0byBDKysKKwkgIFN3aXRjaCBnc3RjdmVxdWFsaXplaGlzdCB0byBDKysgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgT3BlbkNWIGVsZW1lbnRzLAorCSAgYW5kIHN1cHBvcnQgb2YgdGhlIG5ldyAyLjQuMTEgQVBJLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDE0OAorCisyMDE1LTEwLTEwIDE0OjEwOjMyICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L01ha2VmaWxlLmFtOgorCSogZXh0L29wZW5jdi9nc3RjdmRpbGF0ZWVyb2RlLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2ZGlsYXRlZXJvZGUuY3BwOgorCSogZXh0L29wZW5jdi9nc3RjdmVyb2RlLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2ZXJvZGUuY3BwOgorCSAgY3Zlcm9kZTogU3dpdGNoIHRvIEMrKworCSAgU3dpdGNoIGdzdGN2ZXJvZGUgdG8gQysrIGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIE9wZW5DViBlbGVtZW50cywgYW5kCisJICBzdXBwb3J0IG9mIHRoZSBuZXcgMi40LjExIEFQSS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQxNDgKKworMjAxNS0xMC0wOCAxNDo0NjoxMCAtMDcwMCAgUmV5bmFsZG8gSC4gVmVyZGVqbyBQaW5vY2hldCA8cmV5bmFsZG9Ab3NnLnNhbXN1bmcuY29tPgorCisJKiBzeXMvZHZiL3BhcnNlY2hhbm5lbHMuYzoKKwkgIGR2Yjogc2ltcGxpZnkgWkFQIGZpbGUgZm9ybWF0IHBhcnNlcgorCSAgU2ltcGxpZnkgc3RhdGUgaGFuZGluZywgZHJvcCB1bm5lZWRlZCBsb2NhbCB2YXJzLCBldGMuCisKKzIwMTUtMTAtMDcgMTQ6MjI6NDYgKzAxMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIGRhc2hkZW11eDogZml4ZWQgaGFzX25leHRfcGVyaW9kCisJICBnc3RfbXBkX2NsaWVudF9oYXNfbmV4dF9wZXJpb2Qgbm93IGNhbGxzIGdzdF9tcGRfY2xpZW50X3NldHVwX21lZGlhX3ByZXNlbnRhdGlvbgorCSAgdG8gcmVmcmVzaCB0aGUgcGVyaW9kIGluZm9ybWF0aW9uLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjE4NgogCiAyMDE1LTEwLTA3IDA4OjQ4OjE1ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgogCkBAIC02NzAsMTMgKzk1OTksMTggQEAKIAkgIGZvcm1hdHRlciBpcyBiZWluZyB1c2VkIGluIGxvZ3MuIENoYW5naW5nIGFsbCB0aG9zZSB0byBpbnQ2NAogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjA2NQogCi0yMDE1LTEwLTA3IDE0OjIyOjQ2ICswMTAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKzIwMTUtMTAtMDYgMjE6MjM6MTEgKzA1MzAgIE5pcmJoZWVrIENoYXVoYW4gPG5pcmJoZWVrQGNlbnRyaWN1bGFyLmNvbT4KIAotCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6Ci0JICBkYXNoZGVtdXg6IGZpeGVkIGhhc19uZXh0X3BlcmlvZAotCSAgZ3N0X21wZF9jbGllbnRfaGFzX25leHRfcGVyaW9kIG5vdyBjYWxscyBnc3RfbXBkX2NsaWVudF9zZXR1cF9tZWRpYV9wcmVzZW50YXRpb24KLQkgIHRvIHJlZnJlc2ggdGhlIHBlcmlvZCBpbmZvcm1hdGlvbi4KLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYxODYKKwkqIGV4dC9nbC9nc3RnbHZpZGVvbWl4ZXIuYzoKKwkgIGdsdmlkZW9taXhlcjogUHJveHkgdGhlIGlnbm9yZS1lb3MgdmlkZW9hZ2dyZWdhdG9yIHByb3BlcnR5IGFzIHdlbGwKKwkgIElkZW50aWNhbCB0byBob3cgdGhlIHotb3JkZXIgcHJvcGVydHkgaXMgcHJveGllZAorCisyMDE1LTEwLTA1IDExOjIxOjA3ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvaWQzdGFnL2lkM3RhZy5jOgorCSAgaWQzdGFnOiBmaXggc2FtcGxlIG1lbW9yeSBsZWFrCisJICBXaGVuIGdldHRpbmcgc2FtcGxlIGZyb20gdGFnbGlzdCwgdGhlIG1lbW9yeSBpcyBub3QgYmVpbmcgZnJlZWQgcmVzdWx0aW5nIGluIG1lbW9yeSBsZWFrLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjA3MAogCiAyMDE1LTEwLTAxIDExOjE4OjUyICswMjAwICBIYXZhcmQgR3JhZmYgPGhhdmFyZC5ncmFmZkBnbWFpbC5jb20+CiAKQEAgLTY4NCwxMSArOTYxOCwxOTEgQEAKIAkgIHJ0bXBzcmM6IHBsdWcgbWVtb3J5LWxlYWtzCiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2MDAxCiAKKzIwMTUtMTAtMDIgMjI6NTc6MjcgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9yZXNpbmR2ZC9yZXNpbmR2ZGJpbi5jOgorCSogZXh0L3Jlc2luZHZkL3Jlc2luZHZkYmluLmg6CisJKiBleHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuYzoKKwkqIGV4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5oOgorCSAgcmVzaW5kdmQ6IFBvcnQgdG8gbmV3IEdMaWIgbXV0ZXgvY29uZCBBUEkKKworMjAxNS0xMC0wMiAyMjoyNDoxOSArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogY29uZmlndXJlLmFjOgorCSogZXh0L2hscy9tM3U4LmM6CisJKiBleHQvbGliZGUyNjUvbGliZGUyNjUtZGVjLmM6CisJKiBnc3QtbGlicy9nc3QvZ2xpYi1jb21wYXQtcHJpdmF0ZS5oOgorCSogZ3N0L3ZpZGVvbWVhc3VyZS9nc3R2aWRlb21lYXN1cmVfc3NpbS5jOgorCSAgVXBkYXRlIEdMaWIgZGVwZW5kZW5jeSB0byAyLjQwLjAKKworMjAxNS0xMC0wMiAxOTowMjoyNiArMDEwMCAgVmFuZXNzYSBDaGlwaXJyw6FzIE5hdmFsw7NuIDx2Y2hpcGlycmFzNkBnbWFpbC5jb20+CisKKwkqIGV4dC9vcGVuY3YvTWFrZWZpbGUuYW06CisJKiBleHQvb3BlbmN2L2dzdGN2ZGlsYXRlLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2ZGlsYXRlLmNwcDoKKwkgIGN2ZGlsYXRlOiBDaGFuZ2UgZ3N0Y3ZkaWxhdGUgdG8gQysrCisJICBDaGFuZ2UgdGhlIGdzdGN2ZGlsYXRlLmMgZmlsZSBleHRlbnNpb24gdG8gY3BwIGFuZCBhZGQgaXQgaW50byBNYWtlZmlsZSBmb3IKKwkgIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgZWxlbWVudHMgb2Ygb3BlbmN2IGFuZCBiZWNhdXNlIE9wZW5jdiBub3Qgc3VwcG9ydCBDCisJICBsYW5ndWFnZSBpbiBuZXcgQVBJIDIuNC4xMS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQxNDgKKworMjAxNS0xMC0wMiAxODo1MDo0NSArMDEwMCAgVmFuZXNzYSBDaGlwaXJyw6FzIE5hdmFsw7NuIDx2Y2hpcGlycmFzNkBnbWFpbC5jb20+CisKKwkqIGV4dC9vcGVuY3YvTWFrZWZpbGUuYW06CisJKiBleHQvb3BlbmN2L2dzdHNraW5kZXRlY3QuYzoKKwkqIGV4dC9vcGVuY3YvZ3N0c2tpbmRldGVjdC5jcHA6CisJICBza2luZGV0ZWN0OiBDaGFuZ2UgZ3N0c2tpbmRldGVjdCB0byBDKysKKwkgIENoYW5nZSB0aGUgZmlsZSBleHRlbnNpb24gdG8gY3BwIGFuZCBhZGQgaXQgaW50byBNYWtlZmlsZSBmb3IgY29uc2lzdGVuY3kKKwkgIHdpdGggb3RoZXIgZWxlbWVudHMgb2Ygb3BlbmN2IGFuZCBiZWNhdXNlIE9wZW5jdiBub3Qgc3VwcG9ydCBDIGxhbmd1YWdlIGluCisJICBuZXcgQVBJIDIuNC4xMS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQxNDgKKworMjAxNS0wOC0zMSAxNzo0MzoyNiArMDIwMCAgVmFuZXNzYSBDaGlwaXJyw6FzIE5hdmFsw7NuIDx2Y2hpcGlycmFzNkBnbWFpbC5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0b3BlbmN2dXRpbHMuaDoKKwkgIG9wZW5jdnV0aWxzOiBhZGQgZXh0ZXJuIEMsIGZvciB0aGUgb3BlbmN2IGVsZW1lbnRzIHdvcmsuCisJICBBZGRpbmcgR19CRUdJTl9ERUNMUyBhbmQgR19FTkRfREVDTFMgdG8gZ3N0b3BlbmN2dXRpbHMuaAorCSAgdG8gYWxsb3cgQy1zdHlsZSBsaW5raW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDE0OAorCisyMDE1LTEwLTAyIDE4OjQwOjQzICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdHJldGluZXguY3BwOgorCSAgcmV0aW5leDogdXNlIE9wZW5DViBuYW1lc3BhY2UKKwkgIEFzIHBhcnQgb2YgdGhlIHN3aXRjaCB0byBDKyssIHVzZSB0aGUgbmV3IE9wZW5DViBmdW5jdGlvbnMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0MTQ4CisKKzIwMTUtMTAtMDIgMTg6MTA6MzIgKzAxMDAgIFZhbmVzc2EgQ2hpcGlycsOhcyBOYXZhbMOzbiA8dmNoaXBpcnJhczZAZ21haWwuY29tPgorCisJKiBleHQvb3BlbmN2L01ha2VmaWxlLmFtOgorCSogZXh0L29wZW5jdi9nc3RjdnNtb290aC5jOgorCSogZXh0L29wZW5jdi9nc3RjdnNtb290aC5jcHA6CisJICBjdnNtb290aDogcG9ydCB0byBDKysKKwkgIENoYW5nZSB0aGUgZmlsZSBleHRlbnNpb24gdG8gY3BwIGFuZCBhZGQgaXQgaW50byBNYWtlZmlsZSBmb3IgY29uc2lzdGVuY3kKKwkgIHdpdGggb3RoZXIgZWxlbWVudHMgb2Ygb3BlbmN2IGFuZCBiZWNhdXNlIE9wZW5jdiBub3Qgc3VwcG9ydCBDIGxhbmd1YWdlIGluCisJICBuZXcgQVBJIDIuNC4xMS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQxNDgKKworMjAxNS0xMC0wMiAxNzo0ODo0NyArMDEwMCAgVmFuZXNzYSBDaGlwaXJyw6FzIE5hdmFsw7NuIDx2Y2hpcGlycmFzNkBnbWFpbC5jb20+CisKKwkqIGV4dC9vcGVuY3YvTWFrZWZpbGUuYW06CisJKiBleHQvb3BlbmN2L2dzdHJldGluZXguYzoKKwkqIGV4dC9vcGVuY3YvZ3N0cmV0aW5leC5jcHA6CisJICByZXRpbmV4OiBDaGFuZ2UgcmV0aW5leCB0byBDKysKKwkgIENoYW5nZSB0aGUgZ3N0cmV0aW5leC5jIGZpbGUgdG8gY3BwIGFuZCBhZGQgaXQgaW50byBNYWtlZmlsZS4KKwkgIEl0IGlzIG5lY2Vzc2FyeSB0byBtaWdyYXRlIHRoZSByZXRpbmV4IGVsZW1lbnQgdG8gQysrLAorCSAgYmVjYXVzZSBuZXcgT3BlbmN2IEFQSSBsZWF2ZXMgb2Jzb2xldGUgZnVuY3Rpb25zIGxpa2UgY3ZTbW9vdGguCisJICBUaGlzIGVsZW1lbnQgdXNlcyB0aGlzIGZ1bmN0aW9uLgorCSAgWW91IGNhbiBzZWUgaW4gdGhpcyBsaW5rOgorCSAgaHR0cDovL2RvY3Mub3BlbmN2Lm9yZy9tb2R1bGVzL2ltZ3Byb2MvZG9jL2ZpbHRlcmluZy5odG1sPworCSAgaGlnaGxpZ2h0PWN2c21vb3RoI3ZvaWQgY3ZTbW9vdGgoY29uc3QgQ3ZBcnIqIHNyYywgQ3ZBcnIqIGRzdCwKKwkgIGludCBzbW9vdGh0eXBlLCBpbnQgc2l6ZTEsIGludCBzaXplMiwgZG91YmxlIHNpZ21hMSwgZG91YmxlIHNpZ21hMikKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQxNDgKKworMjAxNS0xMC0wMiAxNzoxODozMyArMDEwMCAgVmFuZXNzYSBDaGlwaXJyw6FzIE5hdmFsw7NuIDx2Y2hpcGlycmFzNkBnbWFpbC5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuaDoKKwkgIGhhbmRkZXRlY3Q6IHJlbW92ZSBhbm90aGVyIHVudXNlZCB2YXJpYWJsZQorCSAgTWVtb3J5IGlzIHJlc2VydmVkIGZvciB0aGlzIHZhcmlhYmxlIGFuZCB0aGVuIHJlbGVhc2VkIHdpdGhvdXQgbWFraW5nIGFueQorCSAgdXNlIG9mIGl0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MjUyOAorCisyMDE1LTEwLTAyIDE3OjAyOjQyICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuY3BwOgorCSogZXh0L29wZW5jdi9nc3RoYW5kZGV0ZWN0Lmg6CisJICBoYW5kZGV0ZWN0OiBDdlBvaW50IHZhbHVlcyBjaGFuZ2VkIGZyb20gdWludCB0byBpbnQKKwkgIFRoZSB4IGFuZCB5IHZhbHVlcyBvZiBDdlBvaW50IGNoYW5nZWQgZnJvbSB1bnNpZ25lZCB0byBzaWduZWQgaW50ZWdlcnMKKwkgIGluIE9wZW5DViAyLjQuMTEuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyNTI4CisKKzIwMTUtMTAtMDIgMTY6MjI6MzYgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuaDoKKwkgIGhhbmRkZXRlY3Q6IG5lZWQgdG8gbWlncmF0ZSB0byBDKysKKwkgIFRoZSBjYXNjYWRlIGNsYXNzaWZpZXIgY2hhbmdlcyBpdHMgc3RydWN0dXJlIG9uIG5ldyB2ZXJzaW9uIG9mIE9wZW5DViAyLjQuMTEuCisJICBJdCBpcyBuZWVkIHRvIG1pZ3JhdGUgdG8gQysrIHRvIHV0aWxpemUgdGhlIG5ldyBsb2FkIG1ldGhvZCBvZiBPcGVuQ1Ygd2hpY2gKKwkgIGFsbG93cyB0byBsb2FkIHRoZSBvbGQgYW5kIG5ldyBjbGFzc2lmaWVycy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI1MjgKKworMjAxNS0xMC0wMiAxNjowMToyOSArMDEwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9NYWtlZmlsZS5hbToKKwkqIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jOgorCSogZXh0L29wZW5jdi9nc3RoYW5kZGV0ZWN0LmNwcDoKKwkgIGhhbmRkZXRlY3Q6IENoYW5nZSBnc3RoYW5kZGV0ZWN0IHRvIEMrKworCSAgQ2hhbmdlIHRoZSBnc3RoYW5kZGV0ZWN0LmMgZmlsZSB0byBjcHAgYW5kIGFkZCBpdCBpbnRvIE1ha2VmaWxlLgorCSAgSXQgaXMgbmVjZXNzYXJ5IHRvIG1pZ3JhdGUgdGhlIGhhbmRkZXRlY3QgcGx1Z2luIHRvIEMrKywKKwkgIGluIG9yZGVyIHRvIGxvYWQgbmV3IGFuZCBvbGQgY2xhc3NpZmllcnMsIHRvIG1ha2UgaGFuZGRldGVjdCB3b3JrCisJICB3aXRoIG5ld2VyIHZlcnNpb25zIG9mIE9wZW5jdi4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI1MjgKKwogMjAxNS0xMC0wMiAxNzowNToxMSArMDIwMCAgUG9sb2Nob25fc3RyZWV0IDxwb2xvY2hvbnN0cmVldEBnbXguZnI+CiAKIAkqIGV4dC9kdGxzL2dzdGR0bHNkZWMuYzoKIAkgIGR0bHM6IGZpeCBwcmludGYgZm9ybWF0IG9uIHdpbjMyCiAKKzIwMTUtMDgtMjAgMTY6MDM6MjkgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC9pbnRlci9nc3RpbnRlcnRlc3QuYzoKKwkqIHRlc3RzL2V4YW1wbGVzL2NhbWVyYWJpbjIvZ3N0LWNhbWVyYWJpbjItdGVzdC5jOgorCSogdGVzdHMvZXhhbXBsZXMvY29kZWNwYXJzZXJzL3BhcnNlLWpwZWcuYzoKKwkqIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvZnh0ZXN0LmM6CisJKiB0ZXN0cy9leGFtcGxlcy9nbC9ndGsvZnh0ZXN0L3BpeGJ1ZmRyb3AuYzoKKwkqIHRlc3RzL2V4YW1wbGVzL29wZW5jdi9nc3RmYWNlZGV0ZWN0X3Rlc3QuYzoKKwkqIHRlc3RzL2V4YW1wbGVzL3BsYXlvdXQuYzoKKwkqIHRvb2xzL2dzdC1hcHAtbWFrZXI6CisJICBnc3RyZWFtZXI6IGJhZDogRml4IG1lbW9yeSBsZWFrcyB3aGVuIGNvbnRleHQgcGFyc2UgZmFpbHMKKwkgIFdoZW4gZ19vcHRpb25fY29udGV4dF9wYXJzZSBmYWlscywgY29udGV4dCBhbmQgZXJyb3IgdmFyaWFibGVzIGFyZSBub3QgZ2V0dGluZyBmcmVlJ2QKKwkgIHdoaWNoIHJlc3VsdHMgaW4gbWVtb3J5IGxlYWtzLiBGcmVlJ2luZyB0aGUgc2FtZS4KKwkgIEFuZCByZXBsYWNpbmcgZ19lcnJvcl9mcmVlIHdpdGggZ19jbGVhcl9lcnJvciwgd2hpY2ggY2hlY2tzIGlmIHRoZSBlcnJvciBiZWluZyBwYXNzZWQKKwkgIGlzIG5vdCBOVUxMIGFuZCBzZXRzIHRoZSB2YXJpYWJsZSB0byBOVUxMIG9uIGZyZWUnaW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Mzg1NAorCisyMDE1LTA2LTI1IDE5OjE3OjM2ICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZXh0L2Fzc3JlbmRlci9nc3Rhc3NyZW5kZXIuYzoKKwkgIGFzc3JlbmRlcjogb3B0aW1pemUgYmxlbmRpbmcKKwkgIFNraXAgZW1wdHkgc291cmNlIHBpeGVscyB3aGVuIGJsZW5kaW5nIGFuIGltYWdlLiBUaGVyZSBjYW4gYmUgaHVuZHJlZHMKKwkgIG9mIGltYWdlcyB0byBibGVuZCBhdCBlYWNoIGZyYW1lLCBzbyB0aGlzIGJyaW5ncyBhIG5pY2UgcGVyZm9ybWFuY2UKKwkgIGJvb3N0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MzgyMQorCisyMDE1LTA4LTE5IDE3OjE4OjMxICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZXh0L2Fzc3JlbmRlci9nc3Rhc3NyZW5kZXIuYzoKKwkqIGV4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmg6CisJICBhc3NyZW5kZXI6IFVzZSB0aGUgd2luZG93IHNpemUgZnJvbSBkb3duc3RyZWFtCisJICBUaGlzIGFsbG93cyByZW5kZXJpbmcgdGhlIG92ZXJsYXkgYXQgYSByZXNvbHV0aW9uIG1hdGNoaW5nIHRoZSB2aWRlbworCSAgcmVzb2x1dGlvbi4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTM4MjQKKworMjAxNC0wOS0wNCAxODoxNjowMCArMDIwMCAgQXJuYXVkIFZyYWMgPGF2cmFjQGZyZWVib3guZnI+CisKKwkqIGV4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmM6CisJKiBleHQvYXNzcmVuZGVyL2dzdGFzc3JlbmRlci5oOgorCSAgYXNzcmVuZGVyOiBJbXByb3ZlIG5lZ290aWF0aW9uCisJICBUaGlzIGlzIG1vc3RseSBhIGNvcHkvcGFzdGUgb2YgdGhlIG5lZ290aWF0aW9uIGZ1bmN0aW9uIGluCisJICBiYXNldGV4dG92ZXJsYXksIHdoaWNoIHdhcyBpbXByb3ZlZCByZWNlbnRseSB0byBoYW5kbGUgbWFueSBtb3JlIGNhc2VzLgorCSAgVGhpcyB3aWxsIGFsbG93IHVzIHRvIG5lZ290aWF0ZSBhIHdpbmRvdyBzaXplIHdpdGggZG93bnN0cmVhbS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTM4MjQKKworMjAxNS0wOC0xOSAxMzo0NDozNSArMDIwMCAgQXJuYXVkIFZyYWMgPGF2cmFjQGZyZWVib3guZnI+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGV4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmM6CisJICBhc3NyZW5kZXI6IHJlbmRlciB0aGUgc3VidGl0bGVzIHdpdGggdGhlIHByb3BlciBhc3BlY3QKKwkgIFRoaXMgYnVtcHMgdGhlIGxpYmFzcyB2ZXJzaW9uIHJlcXVpcmVtZW50IHRvIDAuMTAuMi4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTM4MjQKKworMjAxNS0wOS0wNyAxNjoyMDo0MiArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IHRlc3Q6IGFkZGVkIHVuaXQgdGVzdCBmb3IgcHJlc2VudGF0aW9uIHRpbWUgb2Zmc2V0CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyNDA5CisKIDIwMTUtMDktMzAgMTA6Mjc6MDYgLTA3MDAgIEFsZWl4IENvbmNoaWxsbyBGbGFxdcOpIDxhbGVpeEBvYmxvbmcuY29tPgogCiAJKiBjb25maWd1cmUuYWM6CkBAIC03MDcsMTMgKzk4MjEsMzggQEAKIAkgIGRhc2hkZW11eDogQ29ycmVjdGx5IGFzc2lnbiBlYXJsaWVzdCBwdHMgaW5zdGVhZCBvZiBvdmVycmlkaW5nIGl0IHdpdGggZmlyc3Qgb2Zmc2V0CiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1ODI0CiAKLTIwMTUtMDktMzAgMTk6MDE6MjEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisyMDE1LTA5LTE1IDAzOjE0OjM3ICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CiAKLQkqIGdzdC9hdWRpb21peGVyL2dzdGF1ZGlvYWdncmVnYXRvci5jOgotCSAgYXVkaW9hZ2dyZWdhdG9yOiBTZWxlY3QgdGhlIGluaXRpYWwgb2Zmc2V0IGJhc2VkIG9uIHRoZSBzdGFydCBzZWdtZW50IHBvc2l0aW9uCi0JICBpbnN0ZWFkIG9mIGFsd2F5cyB1c2luZyAwLiBPdGhlcndpc2Ugd2UgbWlnaHQgb3V0cHV0IGEgbG90IG9mIHNpbGVuY2UgaW4gdGhlCi0JICBiZWdpbm5pbmcgaW5zdGVhZCBvZiBvdXRwdXR0aW5nIGZyb20gdGhlIHJlbGV2YW50IHBvc2l0aW9uLgotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTYyMworCSogY29uZmlndXJlLmFjOgorCSogZXh0L3F0L2dzdHBsdWdpbi5jYzoKKwkqIGV4dC9xdC9nc3Rxc2d0ZXh0dXJlLmg6CisJKiBleHQvcXQvZ3N0cXRzaW5rLmNjOgorCSogZXh0L3F0L3F0aXRlbS5jYzoKKwkqIGV4dC9xdC9xdGl0ZW0uaDoKKwkgIHF0OiBhZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgb24gb3N4L2lvcworCSAgSW5jbHVkaW5nOgorCSAgLSBOZWNlc3NhcnkgY29uZmlndXJlIGNoZWNrcworCSAgLSBOZWNlc3NhcnkgY29tcGlsZSB0aW1lIHBsYXRmb3JtIGNoZWNrcworCSAgLSBOZWNlc3NhcnkgcnVudGltZSBxdCBpT1MvT1NYIHBsYXRmb3JtIGRldGVjdGlvbgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTEwMAorCisyMDE1LTA5LTI4IDExOjI5OjI5ICswMTAwICBKb2huIFNsYWRlIDxqb2huQGp0ZXMubmV0PgorCisJKiBleHQvcnRtcC9nc3RydG1wc3JjLmM6CisJICBydG1wc3JjOiBGaXggaW5kZW50YXRpb24gd2l0aCBnc3QtaW5kZW50CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzMyCisKKzIwMTUtMTAtMDIgMTE6MzE6NTAgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9hdWRpb3Zpc3VhbGl6ZXJzL01ha2VmaWxlLmFtOgorCSAgYXVkaW92aXN1YWxpemVyczogRml4IG5vZGlzdF9IRUFERVJTCisKKzIwMTUtMTAtMDIgMTQ6NTY6NDEgKzEwMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYzoKKwkgIFJlbW92ZSBiYXNlYXVkaW92aXN1YWxpemVyIHRlc3QuCisJICBUaGUgYmFzZSBjbGFzcyBoYXMgbW92ZWQgaW50byBnc3QtcGx1Z2lucy1iYXNlCiAKIDIwMTUtMDktMzAgMTk6MDU6MzUgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKQEAgLTcyOCw2ICs5ODY3LDYzMiBAQAogCSAgYmVmb3JlIGFueXdheSBiZWNhdXNlIG9mIGEgbWlzdGFrZS4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU2MjMKIAorMjAxNS0wOS0zMCAxOTowMToyMSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9hZ2dyZWdhdG9yLmM6CisJICBhdWRpb2FnZ3JlZ2F0b3I6IFNlbGVjdCB0aGUgaW5pdGlhbCBvZmZzZXQgYmFzZWQgb24gdGhlIHN0YXJ0IHNlZ21lbnQgcG9zaXRpb24KKwkgIGluc3RlYWQgb2YgYWx3YXlzIHVzaW5nIDAuIE90aGVyd2lzZSB3ZSBtaWdodCBvdXRwdXQgYSBsb3Qgb2Ygc2lsZW5jZSBpbiB0aGUKKwkgIGJlZ2lubmluZyBpbnN0ZWFkIG9mIG91dHB1dHRpbmcgZnJvbSB0aGUgcmVsZXZhbnQgcG9zaXRpb24uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NjIzCisKKzIwMTUtMTAtMDEgMTU6MzU6MzcgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGRvY3MvcGx1Z2lucy9NYWtlZmlsZS5hbToKKwkqIGdzdC9hdWRpb3Zpc3VhbGl6ZXJzL01ha2VmaWxlLmFtOgorCSogZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0YXVkaW92aXN1YWxpemVyLmM6CisJKiBnc3QvYXVkaW92aXN1YWxpemVycy9nc3RhdWRpb3Zpc3VhbGl6ZXIuaDoKKwkqIGdzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwYWNlc2NvcGUuaDoKKwkqIGdzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwZWN0cmFzY29wZS5oOgorCSogZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3luYWVzY29wZS5oOgorCSogZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0d2F2ZXNjb3BlLmg6CisJICBhdWRpb3Zpc3VhbGl6ZXJzOiBtZXJnZSBhdWRpb3Zpc3VhbGl6ZXIgYmFzZSBjbGFzc2VzCisJICBUaGVzZSBwbHVnaW5zIG5vdyB1c2UgdGhlIGF1ZGlvdmlzdWFsaXplciBiYXNlIGNsYXNzIGluIHBidXRpbHMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDI4NzUKKworMjAxNS0xMC0wMiAwMTowMTo0MiArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvZ2wvZ2wuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkZWJ1Zy5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmg6CisJICBnbDogbW92ZSBkZWJ1Z2dpbmcgcmVsYXRlZCBmdW5jdGlvbnMgdG8gdGhlaXIgb3duIGZpbGUKKworMjAxNS0xMC0wMSAyMzoyMDoxOSArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xjb2xvcnNjYWxlLmM6CisJICBnbGNvbG9yc2NhbGU6IHVzZSBnbGJhc2VmaWx0ZXIgdmZ1bmNzCisJICBVc2VzIGxlc3MgY29kZSBcby8KKwkgIEZpeGVzIGxlZ2FjeSBvcGVuZ2wgcmVuZGVyaW5nIFxvLworCisyMDE1LTA5LTE2IDEyOjUwOjQ2ICswMjAwICBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgorCisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmM6CisJICBtc3NkZW11eDogYWN0aXZhdGUgc3RyZWFtcyBiZWZvcmUgY29uZmlndXJpbmcgYml0cmF0ZQorCSAgRG9pbmcgdGhlIGNvbnRyYXJ5IGhhcyBubyBlZmZlY3QgYW5kIHRoZSBjb25zZXF1ZW5jZSBpcyB0aGF0IHBsYXliYWNrCisJICB3aWxsIHN0YXJ0IHdpdGggdGhlIGxvd2VzdCBiaXRyYXRlIGV2ZW4gaWYgd2UgY2FuIGFscmVhZHkgaGFuZGxlCisJICBoaWdoZXIgYml0cmF0ZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTUxMDgKKworMjAxNS0wNi0wOCAxNTozMzoyMiArMDIwMCAgUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KKworCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jOgorCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5oOgorCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jOgorCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5oOgorCSAgbXNzZGVtdXg6IFBsYXlSZWFkeSBXUk0gcGFyc2luZyBzdXBwb3J0CisJICBJZiB0aGUgbWFuaWZlc3QgaGFzIGEgUHJvdGVjdGlvbkhlYWRlciBub2RlIHRoZW4gcGFyc2UgaXQgYW5kIGVtaXQKKwkgIHByb3RlY3Rpb24gZXZlbnRzIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIHByb3RlY3Rpb24gU3lzdGVtSUQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzNjEzCisKKzIwMTUtMDktMDMgMTU6MTE6MDAgKzAyMDAgIFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+CisKKwkqIGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYzoKKwkgIG1zc2RlbXV4OiBhbHdheXMgdXNlIHRpbWVzY2FsZSBmb3IgZ3N0IHRpbWVzdGFtcCBjYWxjdWxhdGlvbgorCSAgTm90IGRvaW5nIHRoaXMgY2FuIGxlYWQgdGhlIGRlbXV4ZXIgdG8gYXR0ZW1wdCBkb3dubG9hZGluZyBmcmFnbWVudHMKKwkgIGZvciBhbiBpbnZhbGlkIHN0YXJ0IHRpbWUuIFRoZSBzZXJ2ZXIgd291bGQgdGhlbiBzZW5kIGEgSFRUUAorCSAgUHJlY29uZGl0aW9uIGZhaWxlZCBlcnJvciwgdGhlIGRlbXV4ZXIgd291bGQgdHJ5IHNvbWUgbW9yZSB0aW1lcyB0bworCSAgZG93bmxvYWQgdGhlIGludmFsaWQgZnJhZ21lbnQgYW5kIGV2ZW50dWFsbHkgZXJyb3Igb3V0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDUyMworCisyMDE1LTA5LTMwIDA4OjM2OjE1ICswMjAwICBBbnRvaW5lIEphY291dG90IDxhamFjb3V0b3RAZ25vbWUub3JnPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW06CisJICBnbDogUGFzcyBHTF9DRkxBR1MgdG8gZy1pci1zY2FubmVyCisJICBUaGlzIHVuYnJlYWtzIGJ1aWxkaW5nIHdoZW4gc29tZSBoZWFkZXJzIGFyZSB1bmRlciBhIG5vbi1zdGFuZGFyZCBwYXRoLgorCSAgZS5nLiAvdXNyL1gxMVI2L2luY2x1ZGUgYXMgb24gT3BlbkJTRC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU4NTAKKworMjAxNS0wOS0zMCAwMDo0NDoxNiAtMDcwMCAgQWxlaXggQ29uY2hpbGxvIEZsYXF1w6kgPGFsZWl4QG9ibG9uZy5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmFtOgorCSAgYXBwbGVtZWRpYTogZGlzdCBtaXNzaW5nIGhlYWRlciBmaWxlcworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTg1MgorCisyMDE1LTA5LTMwIDEzOjEzOjE5ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9hdWRpb2ludGVybGVhdmUuYzoKKwkgIGF1ZGlvaW50ZXJsZWF2ZTogdHlwZWNhc3QgYml0LW1hc2sgdG8gZ3VpbnQ2NCB0byBmaXggc2VnbWVudGF0aW9uIGZhdWx0CisJICBXaGlsZSBjcmVhdGluZyBjYXBzIGluIGF1ZGlvaW50ZXJsZWF2ZSB0ZXN0cywgYml0bWFzayBpcyBiZWluZyBzZXQgYXMgMHg5CisJICBUaGlzIGlzIHJlc3VsdGluZyBpbiBzZWdtZW50YXRpb24gZmF1bHQuIEZpeCB0aGUgc2FtZSBieSB0eXBlY2FzdGluZyB0byBndWludDY0CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1ODQwCisKKzIwMTUtMDktMzAgMTU6MTc6MzggKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jOgorCSAgZ2xjb250ZXh0OiBmaXh1cCBzdHJzdHIgbGVuZ3RocyBzbyB3ZSBkb24ndCBvdmVycnVuCisKKzIwMTUtMDktMzAgMTM6MzE6NTAgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dDoKKwkqIGV4dC9nbC9nc3RnbHVwbG9hZGVsZW1lbnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmg6CisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsdXBsb2FkLmM6CisJICBnbHVwbG9hZDogcmVtb3ZlIHVzZWxlc3MgcmVsZWFzZV9idWZmZXIKKwkgIEl0J3MgYSBsZWZ0b3ZlciBmcm9tIHdoZW4gd2Ugd2VyZW4ndCBvdXRwdXR0aW5nIEdzdEJ1ZmZlcidzIGFuZAorCSAgcmV0dXJuaW5nIHJhdyB0ZXh0dXJlIGlkJ3MuCisKKzIwMTUtMDktMzAgMDE6NTM6NTMgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuYzoKKwkgIGdsdXRpbHM6IHVzZSBnc3RfZWxlbWVudF9zZXRfY29udGV4dCBmb3Igc2V0dGluZyBkaXNwbGF5L290aGVyX2NvbnRleHQKKwkgIDEuIFNvIHdlIGdldCB0cmFja2luZyBpbnNpZGUgR3N0RWxlbWVudCBwcm9wZXJseSB3aGVuIGUuZy4gYWRkaW5nIHRvIGEgYmluCisJICAyLiBSZW1vdmVzIHJlZHVuZGFudCBjb2RlLiAgTm93IG9ubHkgb25lIHBsYWNlIHdoZXJlCisJICBHc3RDb250ZXh0LT5Hc3RHTERpc3BsYXkvR3N0R0xDb250ZXh0IHRyYW5zZm9ybWF0aW9uIG9jY3VycworCSAgMy4gRml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgcHJvY2VzcworCSAgNC4gTWFrZSB0aGUgcmV0cmlldmFsIG9mIGRlYnVnIGNhdGVnb3JpZXMgdGhyZWFkIHNhZmUKKworMjAxNS0wOS0yOSAyMjo1Nzo1MiArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ3RrL2d0a2dzdGdsd2lkZ2V0LmM6CisJICBndGs6IGFkZCBzb21lIEdMIGRlYnVnIHN0YXRlbWVudHMgdG8gc2hvdyB1cCBpbiBHTCB0cmFjZXMKKworMjAxNS0wOC0zMCAxNzoxMTozMSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuYzoKKwkqIGV4dC9obHMvZ3N0bTN1OHBsYXlsaXN0Lmg6CisJICBobHM6IG0zdThwbGF5bGlzdDogbW9yZSBjbGVhbi11cHMKKwkgIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb25zOyBtb3ZlIEdzdE0zVTggc3RydWN0IGludG8gLmMgZmlsZSwKKwkgIGFuZCBpbmRlbnQgdGhlIGhlYWRlciBzbyBpdCdzIG5pY2UgdG8gcmVhZC4KKworMjAxNS0wOC0zMCAxNzowMToxMyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuYzoKKwkgIGhsczogbTN1OHBsYXlsaXN0OiBmaXggc2lsbHkgcXVldWUgaXRlcmF0aW9uIGNvZGUKKworMjAxNS0wOC0zMCAxNjo0MDowMiArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuYzoKKwkgIGhsczogbTN1OHBsYXlsaXN0OiBtb3JlIG1pbm9yIHBsYXlsaXN0X3JlbmRlcigpIGNsZWFuLXVwcworCSAgTW92ZSB0aGUgVEFHIGRlZmluZXMgZGlyZWN0bHkgaW50byB0aGUgY29kZSwgbm90IHN1cmUgd2hhdAorCSAgdGhlaXIgcHVycG9zZXMgaXMsIHRoZXNlIGFyZSBwcmludGYgZm9ybWF0IHN0cmluZ3Mgc28gaGF2aW5nCisJICB0aGVtIGRpcmVjdGx5IGFzIGxpdGVyYWxzIGluIHRoZSBjb2RlIHdoZXJlIHRoZXkncmUgdXNlZAorCSAgbWFrZXMgdGhlIGNvZGUgZWFzaWVyIHRvIGZvbGxvdy4KKworMjAxNS0wOC0zMCAxNjozNDoyNiArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuYzoKKwkgIGhsczogbTN1OHBsYXlsaXN0OiBtb3ZlIGVudHJ5IHJlbmRlcmluZyBpbnRvIHJlbmRlcl9wbGF5bGlzdCgpCisJICBNYWtlcyB0aGUgY29kZSBlYXNpZXIgdG8gZm9sbG93IGFuZCBhdm9pZHMgdW5uZWNlc3NhcnkgdGVtcG9yYXJ5CisJICBzdHJpbmdzLCBzaW5jZSB3ZSBjYW4ganVzdCBhcHBlbmQgdG8gdGhlIHBsYXlsaXN0IEdTdHJpbmcgZGlyZWN0bHkuCisKKzIwMTUtMDgtMzAgMTY6MjQ6NDEgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvZ3N0bTN1OHBsYXlsaXN0LmM6CisJKiBleHQvaGxzL2dzdG0zdThwbGF5bGlzdC5oOgorCSAgaGxzOiBtM3U4cGxheWxpc3Q6IHNpbXBsaWZ5IGdzdF9tM3U4X3BsYXlsaXN0X3JlbmRlcigpCisJICBSZW1vdmUgcGxheWxpc3Rfc3RyIEdTdHJpbmcgdmFyaWFibGUgZnJvbSBHc3RNM1U4UGxheWxpc3Qgc3RydWN0LAorCSAgc2luY2UgaXQncyBvbmx5IHVzZWQgdGVtcG9yYXJpbHkgaW4gcGxheWxpc3RfcmVuZGVyKCkuIE1pZ2h0IGp1c3QKKwkgIGFzIHdlbGwga2VlcCBpdCBsb2NhbCB0aGVuLgorCisyMDE1LTA4LTMwIDE1OjU1OjUxICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvaGxzL01ha2VmaWxlLmFtOgorCSogZXh0L2hscy9nc3RmcmFnbWVudGVkLmg6CisJKiBleHQvaGxzL2dzdGhsc3NpbmsuYzoKKwkqIGV4dC9obHMvZ3N0bTN1OHBsYXlsaXN0Lmg6CisJICBobHM6IHJlbW92ZSB1bnVzZWQgbWFjcm8gYW5kIGRpcmVjdCBnaW8gdXNhZ2UKKworMjAxNS0wOS0zMCAwMDozNjoxNCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c211eC9tcGVndHNtdXguYzoKKwkgIG1wZWd0c211eDogZml4IGRvd25zdHJlYW0ga2V5IHVuaXQgZXZlbnRzIGhhbmRsaW5nIHdpdGggaGxzc2luaworCSAgVGhlIGJ1ZmZlciB0aW1lc3RhbXBzIGluIHRoZSBjb2xsZWN0IGZ1bmN0aW9uIHdpbGwgYWxyZWFkeSBiZQorCSAgcnVubmluZyB0aW1lLCBkb24ndCB0cnkgdG8gY29udmVydCB0aGVtIGFnYWluIHRvIHJ1bm5pbmcgdGltZSwKKwkgIHRoaXMgd291bGQgeWllbGQgQ0xPQ0tfVElNRV9OT05FIG5vdyB0aGF0IHRoZSBzZWdtZW50IGlzIHNoaWZ0ZWQKKwkgIHRvIGFjY291bnQgZm9yIG5lZ2F0aXZlIGR0cy4KKwkgIFRoaXMgZml4ZXMgeDI2NGVuYyAhIG1wZWd0c211eCAhIGhsc3NpbmssIHdoaWNoIHdhcyBicm9rZW4KKwkgIGJlY2F1c2UgbXBlZ3RzbXV4IHdvdWxkIHNlbmQgYSBkb3duc3RyZWFtIGtleSB1bml0IGV2ZW50IHdpdGgKKwkgIHJ1bm5pbmcgdGltZSBOT05FIGFuZCB0aGVuIGhsc3Npbmsgd291bGQgaW1tZWRpYXRlbHkgc2VuZAorCSAgYW5vdGhlciBvbmUgdXBzdHJlYW0gYW5kIGl0IHdvdWxkIGp1c3QgYmUgYSBmbG9vZCBvZiBmb3JjZQorCSAga2V5ZnJhbWUgZXZlbnRzIGluIGJvdGggZGlyZWN0aW9ucyBhZnRlciB0aGUgZmlyc3Qgb25lLiBUaGlzCisJICB3b3VsZCB0aGVuIGJyZWFrIGhsc3NpbmsgYmVjYXVzZSBpdCB1c2VzIG11bHRpZmlsZXNpbmsgaW4KKwkgIG5leHQtZmlsZT1rZXktdW5pdC1ldmVudCBtb2RlLCBhbmQgc3RhcnRpbmcgYSBuZXcgZmlsZSBhZnRlcgorCSAgZXZlcnkgZmV3IGtCIGRvZXMgbm90IHdvcmsgd2VsbCBmb3IgSExTLgorCisyMDE1LTA4LTIwIDE3OjM1OjA0ICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2ZXJvZGUuYzoKKwkgIG9wZW5jdjogZXJvZGU6IHJlbW92ZSBub24taXAgdHJhbnNmb3JtIGZ1bmMKKwkgIFRyYW5zZm9ybSBpcyBzZXQgdG8gYmUgZG9uZSBpbiBwbGFjZSBpbiBnc3RjdmRpbGF0ZWVyb2RlLmMsIHNvIHRoZSBpbi1wbGFjZQorCSAgdHJhbnNmb3JtIGZ1bmN0aW9uIGlzIGFsd2F5cyB1c2VkIGFuZCB0aGUgb3RoZXIgaXMgcmVkdW5kYW50LiBSZW1vdmluZyBpdC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTM4ODUKKworMjAxNS0wOC0yMCAxNzoyMzo0MCArMDEwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc0BkZWJldGhlbmNvdXJ0LmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RjdmRpbGF0ZS5jOgorCSAgb3BlbmN2OiBkaWxhdGU6IHJlbW92ZSBub24taXAgdHJhbnNmb3JtIGZ1bmMKKwkgIFRyYW5zZm9ybSBpcyBzZXQgdG8gYmUgZG9uZSBpbiBwbGFjZSBpbiBnc3RjdmRpbGF0ZWVyb2RlLmMsIHNvIHRoZSBpbi1wbGFjZQorCSAgdHJhbnNmb3JtIGZ1bmN0aW9uIGlzIGFsd2F5cyB1c2VkIGFuZCB0aGUgb3RoZXIgaXMgcmVkdW5kYW50LiBSZW1vdmluZyBpdC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTM4ODUKKworMjAxNS0wOS0yOSAyMDowMDowMiArMDEwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RjdmRpbGF0ZWVyb2RlLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmM6CisJKiBleHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5jOgorCSogZXh0L29wZW5jdi9nc3RjdnNtb290aC5jOgorCSogZXh0L29wZW5jdi9nc3RjdnNvYmVsLmM6CisJKiBleHQvb3BlbmN2L2dzdHJldGluZXguYzoKKwkqIGV4dC9vcGVuY3YvZ3N0cmV0aW5leC5oOgorCSogZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmM6CisJICBvcGVuY3Y6IHVzZSBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UoKQorCSAgVXNpbmcgdGhlIGdzdF9iYXNlX3RyYW5zZm9ybSBmdW5jdGlvbiBkaXJlY3RseSB3b24ndCB3b3JrLiBOZWVkIHRvIHVzZQorCSAgZ3N0X29wZW5jdl92aWRlb19maWx0ZXJfc2V0X2luX3BsYWNlKCkuCisKKzIwMTUtMDktMjkgMTc6MDA6MjIgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jOgorCSAgaGFuZGRldGVjdDogY2hlY2sgZm9yIGhhYXIgY2FzY2FkZSBmaWxlcyBwYXRoCisJICBXaGVuIHJ1bm5pbmcgR1N0cmVhbWVyIGZyb20gdW5pbnN0YWxsZWQgc291cmNlcywgdGhlIGxvY2F0aW9uIG9mIHRoZSBoYWFyCisJICBjYXNjYWRlIGZpbGVzIHdpbGwgYmUgbG9jYWwuIENoZWNrIGlmIHJ1bm5pbmcgaW4gdW5pbnN0YWxsZWQgYW5kIHNldCB0aGUKKwkgIGZpbGUgcGF0aHMgYWNjb3JkaW5nbHkuCisKKzIwMTUtMDktMjYgMTc6MDI6MDkgKzA4MDAgIEpvaG4gQ2hhbmcgPHI5NzkyMjE1M0BnbWFpbC5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHJlbW92ZSB1bnVzZWQgdmFyaWFibGUKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU2NTYKKworMjAxNS0wOS0yOSAxMzozMToxOCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvYWdncmVnYXRvci5jOgorCSAgdmlkZW9hZ2dyZWdhdG9yOiBmaXggY29tcGlsYXRpb24gd2l0aCBvbGRlciBnbGliIHZlcnNpb24KKwkgIFJlbW92ZSB3ZWlyZCB1c2Ugb2YgcHJpdmF0ZSBndHlwZSBkZWZpbmVzIGFuZCBmaXggY29tcGlsYXRpb24KKwkgIHdpdGggb2xkZXIgZ2xpYiB2ZXJzaW9ucyBzdWNoIGFzIDIuMzYuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzU0CisKKzIwMTUtMDktMjkgMTM6NTI6NDcgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5oOgorCSAgb3BlbmN2OiBjdmxhcGxhY2U6IGFkZCBzY2FsZSBhbmQgc2hpZnQgcHJvcGVydGllcworCSAgQWRkIHNjYWxlIGFuZCBzaGlmdCBwcm9wZXJ0aWVzIHNvIHRoZXNlIGNhbiBiZSB1c2VkIHRvIHR3ZWFrIHRoZSB2YWx1ZXMKKwkgIHVzZWQgaW4gY3ZDb252ZXJ0U2NhbGUoKSBpbnN0ZWFkIG9mIHVzaW5nIG9ubHkgZGVmYXVsdHMuCisKKzIwMTUtMDgtMjggMTY6MjQ6MjQgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNAZGViZXRoZW5jb3VydC5jb20+CisKKwkqIGV4dC9xdC9nc3RxdHNpbmsuY2M6CisJICBxdHNpbms6IGV4cGxpY2l0ZWx5IGZhbGx0aHJvdWdoIHN3aXRjaCBzdGF0ZW1lbnQKKwkgIEluIGNhc2UgcmV0IGlzIEZhbHNlLCBmYWxsdGhyb3VnaCB0byBkZWZhdWx0IGNhc2UuCisJICBDSUQgIzEzMjA3MDUKKworMjAxNS0wOC0yOCAxNjoxMzoxNiArMDEwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc0BkZWJldGhlbmNvdXJ0LmNvbT4KKworCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3R2YzFwYXJzZS5jOgorCSAgdmMxcGFyc2U6IGFkZCBicmVhayB0byBzd2l0Y2ggY2FzZQorCSAgRXZlbiB0aG91Z2ggYWxsIGNhc2VzIGluc2lkZSBWQzFfU1RSRUFNX0ZPUk1BVF9BU0YgYXJlIGdvdG8gb3IKKwkgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCksIGFkZCBhIGJyZWFrIGF0IHRoZSBlbmQgdG8gYXBwZWFzZSBDb3Zlcml0eS4KKwkgIENJRCAjMTMyMDcwNgorCisyMDE1LTA5LTI4IDIwOjU2OjU2ICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZXh0L2Fzc3JlbmRlci9nc3Rhc3NyZW5kZXIuYzoKKwkgIGFzc3JlbmRlcjogZml4IGxlYWsgb2YgdGFnIHNhbXBsZXMgaW4gdGhlIHRhZyBsaXN0CisJICBNb3ZlIGhhbmRsaW5nIG9mIGEgR3N0U2FtcGxlIGluIGEgc2VwYXJhdGUgZnVuY3Rpb24sIGFuZCB1bnJlZiB0aGUKKwkgIHNhbXBsZSBhZnRlciBjYWxsaW5nIGl0LiBsaWJhc3MgY29waWVzIHRoZSBmb250IGRhdGEgc28gd2UgZG9uJ3QgbmVlZCB0bworCSAga2VlcCBpdCBhcm91bmQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzU5CisKKzIwMTUtMDktMjggMjA6MzA6MTcgKzAyMDAgIEFybmF1ZCBWcmFjIDxhdnJhY0BmcmVlYm94LmZyPgorCisJKiBleHQvYXNzcmVuZGVyL2dzdGFzc3JlbmRlci5jOgorCSAgYXNzcmVuZGVyOiBmaXggZ2FwIGV2ZW50IGxlYWsgYW5kIGludmFsaWQgcmV0dXJuIHZhbHVlCisJICBXZSBkb24ndCB3YW50IHRoZSBnYXAgZXZlbnQgdG8gYmUgZm9yd2FyZGVkCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzU5CisKKzIwMTUtMDktMjkgMTY6MTc6MjIgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL252ZW5jL2dzdG52YmFzZWVuYy5jOgorCSAgbnZlbmM6IGNhbGwgdGhlIHBhcmVudCBjbGFzcyBvbiBHc3RFbGVtZW50OjpzZXRfY29udGV4dAorCisyMDE1LTA5LTE3IDE2OjU5OjE2ICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsY29udGV4dF9lYWdsLm06CisJICBnbC9lYWdsOiB1c2UgdGhlIGRlZmF1bHQgR0wgY29udGV4dCBkZWJ1ZyBjYXRlZ29yeQorCisyMDE1LTA3LTMwIDE2OjQyOjM4ICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIHN5cy9NYWtlZmlsZS5hbToKKwkqIHN5cy9udmVuYy9NYWtlZmlsZS5hbToKKwkqIHN5cy9udmVuYy9SRUFETUU6CisJKiBzeXMvbnZlbmMvVE9ETzoKKwkqIHN5cy9udmVuYy9nc3RudmJhc2VlbmMuYzoKKwkqIHN5cy9udmVuYy9nc3RudmJhc2VlbmMuaDoKKwkqIHN5cy9udmVuYy9nc3RudmVuYy5jOgorCSogc3lzL252ZW5jL2dzdG52ZW5jLmg6CisJKiBzeXMvbnZlbmMvZ3N0bnZoMjY0ZW5jLmM6CisJKiBzeXMvbnZlbmMvZ3N0bnZoMjY0ZW5jLmg6CisJICBBZGQgTnZpZGlhIGJhc2VkIGhhcmR3YXJlIGVuY29kZXIgZWxlbWVudAorCSAgQ3VycmVudGx5IG9ubHkgaDI2NCBpcyBzdXBwb3J0ZWQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTM0MDUKKworMjAxNS0wOS0yOSAwMDoyNTowMCArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ3RrL2dzdGd0a2Jhc2VzaW5rLmM6CisJICBndGs6IGZpeCBhc3NlcnRpb24gd2hlbiB0aGUgZWxlbWVudCBoYXMgbm8gcGVlcgorCSAgV2hlbiBwcm94eWluZyBrZXlib2FyZC9uYXZpZ2F0aW9uL21vdXNlIGV2ZW50cywgb25seSB1bnJlZiBhIHN1Y2Nlc3NmdWxseQorCSAgcmV0cmVpdmVkIHBlZXIgcGFkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTczOAorCisyMDE1LTA5LTI4IDE1OjMwOjMwICswMjAwICBTdGVmYW4gU2F1ZXIgPGVuc29uaWNAdXNlcnMuc2YubmV0PgorCisJKiBjb25maWd1cmUuYWM6CisJKiBnc3QvbWlkaS9NYWtlZmlsZS5hbToKKwkqIGdzdC9taWRpL2Fsc2FtaWRpc3JjLmM6CisJKiBnc3QvbWlkaS9hbHNhbWlkaXNyYy5oOgorCSogZ3N0L21pZGkvbWlkaS5jOgorCSAgUmV2ZXJ0ICJtaWRpOiBhZGQgYW4gQUxTQSBNSURJIHNlcXVlbmNlciBzb3VyY2UiCisJICBUaGlzIHJldmVydHMgY29tbWl0IGNkN2Y0ZTUyNDcxOGEyZjc1NDY3ODUyMjM1ZTRlMTNkNjRkMmFjODIuCisKKzIwMTUtMDktMjggMjI6MzE6MDkgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuYzoKKwkgIGdsOiBzZXQgdGhlIGNvbnRleHQgb24gdGhlIGVsZW1lbnQgb24gYSBjb250ZXh0IHF1ZXJ5CisJICBPdGhlcndpc2UgaXQncyBwb3NzaWJsZSB0byBsb3NlIHRoZSBjb250ZXh0IGluZm9ybWF0aW9uIGlmIHRoZQorCSAgY29udGV4dCBpcyBvbmx5IHByb3BhZ2F0ZWQgdGhyb3VnaCBxdWVyaWVzLgorCisyMDE1LTA5LTI4IDIyOjIwOjI5ICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9jYW9wZW5nbGxheWVyc2luay5tOgorCSogZXh0L2dsL2dzdGdsYmFzZW1peGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuYzoKKwkqIGV4dC9nbC9nc3RnbHN0ZXJlb3NwbGl0LmM6CisJKiBleHQvZ2wvZ3N0Z2x0ZXN0c3JjLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmM6CisJICBnbDogY2hhaW4gdXAgdG8gdGhlIHBhcmVudCBjbGFzcyBmb3IgR3N0RWxlbWVudDo6c2V0X2NvbnRleHQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MDU1NzkKKworMjAxNS0wOC0wNyAxNToyODo1NCArMDIwMCAgQW50b25pbyBPc3BpdGUgPGFvMkBhbzIuaXQ+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGdzdC9taWRpL01ha2VmaWxlLmFtOgorCSogZ3N0L21pZGkvYWxzYW1pZGlzcmMuYzoKKwkqIGdzdC9taWRpL2Fsc2FtaWRpc3JjLmg6CisJKiBnc3QvbWlkaS9taWRpLmM6CisJICBtaWRpOiBhZGQgYW4gQUxTQSBNSURJIHNlcXVlbmNlciBzb3VyY2UKKwkgIFRoZSBhbHNhbWlkaXNyYyBlbGVtZW50IGFsbG93cyB0byBnZXQgaW5wdXQgZXZlbnQgZnJvbSBBTFNBIE1JREkKKwkgIHNlcXVlbmNlciBkZXZpY2VzLCBhbmQgcG9zc2libHkgY29udmVydCB0aGVtIHRvIHNvdW5kIHVzaW5nIHNvbWUKKwkgIGRvd25zdHJlYW0gZWxlbWVudCBsaWtlIGZsdWlkZGVjLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTczODY4NworCisyMDE1LTA4LTI4IDE2OjM1OjM5ICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzQGRlYmV0aGVuY291cnQuY29tPgorCisJKiBleHQvcXQvcXRpdGVtLmNjOgorCSAgcW1sOiByZW1vdmUgb3ZlcndyaXR0ZW4gdmFsdWUKKwkgIFZhbHVlIGluIHRleCBpcyBvdmVyd3JpdHRlbiBiZWZvcmUgYmVpbmcgdXNlZC4gUmVtb3ZpbmcgaXQuCisJICBDSUQgMTMyMDcxNQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDI1MworCisyMDE1LTA5LTAyIDIzOjQ1OjA3ICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGV4dC9xdC9NYWtlZmlsZS5hbToKKwkqIGV4dC9xdC9nc3Rxc2d0ZXh0dXJlLmg6CisJKiBleHQvcXQvZ3N0cXRnbC5oOgorCSogZXh0L3F0L3F0aXRlbS5jYzoKKwkqIGV4dC9xdC9xdGl0ZW0uaDoKKwkgIHF0OiBhZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcvcnVubmluZyBvbiBhbmRyb2lkCisJICBJbmNsdWRpbmc6CisJICAtIE5lY2Vzc2FyeSBjb25maWd1cmUgY2hlY2tzCisJICAtIE5lY2Vzc2FyeSBjb21waWxlIHRpbWUgcGxhdGZvcm0gY2hlY2tzCisJICAtIE5lY2Vzc2FyeSBydW50aW1lIHF0IGFuZHJvaWQgcGxhdGZvcm0gZGV0ZWN0aW9uCisJICAtIEVzY2FwaW5nIEdMc3luYyBkZWZpbml0aW9uIHdpdGggUXQncyBHTEVTMiBpbXBsZW1lbnRhdGlvbgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDQ2NgorCisyMDE1LTA5LTAyIDIzOjQwOjMxICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9xdC9NYWtlZmlsZS5hbToKKwkgIHF0OiBkb24ndCB1c2UgQ1BQRkxBR1MgZm9yIHRvb2xzIHRoYXQgY2Fubm90IHVzZSB0aGVtCisJICBGb3IgZXhhbXBsZSBtb2Mgd2lsbCBiYWlsIG91dCB3aGVuIGdpdmVuIGFyZ3VtZW50cyBpdCBkb2VzIG5vdAorCSAga25vdyBhYm91dC4gIFRoZSBtb2Mgc3BlY2lmaWMgTU9DX0NQUEZMQUdTIGNhbiBzdGlsbCBiZSB1c2VkCisJICB0byBwYXNzIGZsYWdzIHRvIG1vYy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQ0NjYKKworMjAxNS0wOS0wMiAyMzozOTo1NCArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvcXQvTWFrZWZpbGUuYW06CisJICBxdDogcmVuYW1lIGxpYnJhcnkgdG8gaW5jbHVkZSBnc3QgcHJlZml4CisJICBsaWJxdHNpbmsgLT4gbGliZ3N0cXRzaW5rCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0NDY2CisKKzIwMTUtMDgtMzEgMTk6MjE6NTQgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5jOgorCSAgZ2w6IHNwcmlua2xlIHNvbWUgZGVidWcgbWFya2VycyB0byBlYXNlIGRlYnVnZ2luZworCisyMDE1LTA4LTMxIDE5OjE4OjIzICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5oOgorCSAgZ2wvdXRpbHM6IGFkZCBhIGZ1bmN0aW9uIHRvIGluc2VydCBhIGRlYnVnIG1hcmtlcgorCSAgVGhlc2UgbWFya2VycyBhcmUgdmlzaWJsZSBpbiB0b29scyB0aGF0IHJlY29yZCB0aGUgR0wgZnVuY3Rpb24gY2FsbHMKKwkgIHN1Y2ggYXMgYXBpdHJhY2UsIGV0IGFsLgorCSAgTWFrZXMgaXQgZWFzaWVyIHRvIG1hdGNoIHVwIEdMIGRyYXcgY29tbWFuZHMgd2l0aCBzcGVjaWZpYyBlbGVtZW50cy4KKworMjAxNS0wOC0zMSAxOToxNzoyMSArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2RlYnVnLmg6CisJICBnbDogYWRkIHNvbWUgZGVidWdnaW5nIHByb3RvdHlwZXMKKworMjAxNS0wOS0yNiAxOToxOTo1MCArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtc2VjdGlvbnMudHh0OgorCSogZ3N0LWxpYnMvZ3N0L2dsL2FuZHJvaWQvZ3N0Z2x3aW5kb3dfYW5kcm9pZF9lZ2wuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbHdpbmRvd19jb2NvYS5tOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2x3aW5kb3dfZWFnbC5tOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x3aW5kb3cuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC93YXlsYW5kL2dzdGdsd2luZG93X3dheWxhbmRfZWdsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvd2luMzIvZ3N0Z2x3aW5kb3dfd2luMzIuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2x3aW5kb3dfeDExLmM6CisJICBnbHdpbmRvdzogcmVtb3ZlIHVudXNlZCBkcmF3X3VubG9ja2VkIGZ1bmN0aW9uCisJICBUaGUgZnVuY3Rpb25hbGl0eSBpcyBwcm92aWRlZCBieSBkcmF3IGFueXdheSBhbmQgaXMgbGVmdG92ZXIgZnJvbQorCSAgWDExJ3Mgc3BlY2lmaWMgdGhyZWFkaW5nIHJlcXVpcmVtZW50cyB0aGF0IG5vIGxvbmdlciBhcHBseS4KKworMjAxNS0wOS0yNyAxMzowNzoxOSArMTAwMCAgSmFuIFNjaG1pZHQgPGphbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9yZXNpbmR2ZC9nc3RtcGVnZGVtdXguYzoKKwkgIHJlc2luZHZkOiBTZW5kIGdhcCB1cGRhdGVzIHRvIHRoZSBzZWdtZW50IHN0b3AgZHVyaW5nIHN0aWxscworCSAgSWdub3JlIHRoZSBub3JtYWwgZ2FwIHRocmVzaG9sZCBmb3IgbGFnZ3kgc3RyZWFtcyBhbmQKKwkgIGltbWVkaWF0ZWx5IGNhdGNoIGFsbCBzdHJlYW1zIHVwIHRvIHRoZSBlbmQgb2YgdGhlIHNlZ21lbnQKKwkgIHdoZW4gcHJvY2Vzc2luZyBnYXAgdXBkYXRlcyBmb3IgYSBzZWdtZW50IGR1cmluZyBhCisJICBzdGlsbCBmcmFtZSBzZXF1ZW5jZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU2ODAKKworMjAxNS0wOS0yNyAwMDoyNDoyNCArMTAwMCAgSmFuIFNjaG1pZHQgPGphbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9kdmRzcHUvTWFrZWZpbGUuYW06CisJKiBnc3QvZHZkc3B1L2dzdGR2ZHNwdS1yZW5kZXIuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1LmM6CisJKiBnc3QvZHZkc3B1L2dzdGR2ZHNwdS5oOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtY29tbW9uLmg6CisJKiBnc3QvZHZkc3B1L2dzdHNwdS1wZ3MuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LXBncy5oOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtdm9ic3ViLXJlbmRlci5jOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtdm9ic3ViLmM6CisJKiBnc3QvZHZkc3B1L2dzdHNwdS12b2JzdWIuaDoKKwkgIFJldmVydCAiZHZkc3B1OiByZW5kZXIgdG8gQVlVViBvdmVybGF5IgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCA1MDE2YTczMTkwNTk1NTA1ZGMzOGI1NGY4ZjlhMDhjNGYxODBmM2E2LgorCisyMDE1LTA5LTI3IDAwOjI0OjIzICsxMDAwICBKYW4gU2NobWlkdCA8amFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LWNvbW1vbi5oOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6CisJKiBnc3QvZHZkc3B1L2dzdHNwdS12b2JzdWItcmVuZGVyLmM6CisJICBSZXZlcnQgImR2ZHNwdTogcmVuZGVyIHRvIEFSR0Igb3ZlcmxheSBpbnN0ZWFkIG9mIEFZVVYiCisJICBUaGlzIHJldmVydHMgY29tbWl0IGRkM2U5ZGViMmFhNjk1YTM5MWI1OGYyNGQ4NmEzYzAwYmJjMTI1OGEuCisKKzIwMTUtMDktMjcgMDA6MjQ6MTcgKzEwMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvZHZkc3B1L2dzdHNwdS12b2JzdWIuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LXZvYnN1Yi5oOgorCSAgUmV2ZXJ0ICJkdmRzcHU6IGhhbmRsZSBmcmFtZSBzaXplIGV2ZW50IGZyb20gdXBzdHJlYW0iCisJICBUaGlzIHJldmVydHMgY29tbWl0IDQ2YWFhYTZjMzA5YjhhOGY2ZTIxODE0MmZkNTk0NGY1ZDI0ZjA5NWMuCisKKzIwMTUtMDktMjcgMDA6MjQ6MTcgKzEwMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvZHZkc3B1L2dzdGR2ZHNwdS5jOgorCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuaDoKKwkgIFJldmVydCAiZHZkc3B1OiBjYWNoZSBvdmVybGF5IGNvbXBvc2l0aW9uIgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCBhYWJiOGExYTY4MzcyZjc1MGM2M2I5YjY1ODZlMThlODI5NzQ1Nzc0LgorCisyMDE1LTA5LTI3IDAwOjI0OjE1ICsxMDAwICBKYW4gU2NobWlkdCA8amFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1Lmg6CisJICBSZXZlcnQgImR2ZHNwdTogaW1wcm92ZSBuZWdvdGlhdGlvbiBvZiBvdmVybGF5IGNvbXBvc2l0aW9uIgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCAxODk5ZTJhMDk5OTMyYTdhNzM0ZTc3ODRjMjBiNjI0NTE3MjM3ZTE4LgorCisyMDE1LTA5LTE4IDE5OjA3OjQ3ICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6CisJICBkdmRzcHU6IGZpeCBwZ3MgcGFsZXR0ZSBjb2xvcnMKKwkgIFUgYW5kIFYgd2VyZSBpbnZlcnRlZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTIzOQorCisyMDE0LTA4LTI3IDE2OjQ3OjIyICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1Lmg6CisJICBkdmRzcHU6IGltcHJvdmUgbmVnb3RpYXRpb24gb2Ygb3ZlcmxheSBjb21wb3NpdGlvbgorCSAgU3VwcG9ydCBuZWdvdGlhdGluZyBHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiBkb3duc3RyZWFtCisJICB3aGlsZSBub3QgcHJvdmlkaW5nIGl0IHVwc3RyZWFtLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTY2Mzc1MAorCisyMDEzLTA5LTAyIDE3OjQ4OjUwICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1Lmg6CisJICBkdmRzcHU6IGNhY2hlIG92ZXJsYXkgY29tcG9zaXRpb24KKwkgIFRoaXMgYXZvaWRzIHJlbmRlcmluZyB0aGUgb3ZlcmxheSBidWZmZXIgZm9yIGVhY2ggdmlkZW8gZnJhbWUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNzUwCisKKzIwMTMtMDgtMzAgMjI6MDg6MDEgKzAyMDAgIEFybmF1ZCBWcmFjIDxhdnJhY0BmcmVlYm94LmZyPgorCisJKiBnc3QvZHZkc3B1L2dzdHNwdS12b2JzdWIuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LXZvYnN1Yi5oOgorCSAgZHZkc3B1OiBoYW5kbGUgZnJhbWUgc2l6ZSBldmVudCBmcm9tIHVwc3RyZWFtCisJICBBbiBJRFggZmlsZSBvciBjb2RlY19kYXRhIG5vcm1hbGx5IGNvbnRhaW5zIHRoZSBvcmlnaW5hbCBmcmFtZSBzaXplIG9mCisJICB0aGUgdmlkZW8uIEFsbG93IHVwc3RyZWFtIHRvIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBieSBzZW5kaW5nIGEKKwkgIGN1c3RvbSBldmVudCwgd2hpY2ggd2lsbCBhbGxvdyBzY2FsaW5nIHRoZSBvdmVybGF5IGNvcnJlY3RseS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02NjM3NTAKKworMjAxMy0xMi0wNSAyMTo1OToxOCArMDEwMCAgQXJuYXVkIFZyYWMgPGF2cmFjQGZyZWVib3guZnI+CisKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1LmM6CisJICBkdmRzcHU6IGFsbG93IHN1ZmZpeCBpbiBkdmQgZXZlbnQgbmFtZSB0byBhbGxvdyBtdWx0aXBsZSBzdGlja3kgZHZkIGV2ZW50cworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTY2Mzc1MAorCisyMDE1LTA0LTA3IDE0OjM4OjA4ICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LWNvbW1vbi5oOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6CisJKiBnc3QvZHZkc3B1L2dzdHNwdS12b2JzdWItcmVuZGVyLmM6CisJICBkdmRzcHU6IHJlbmRlciB0byBBUkdCIG92ZXJsYXkgaW5zdGVhZCBvZiBBWVVWCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNzUwCisKKzIwMTMtMDEtMjMgMTc6NTk6MDEgKzAxMDAgIEFybmF1ZCBWcmFjIDxhdnJhY0BmcmVlYm94LmZyPgorCisJKiBnc3QvZHZkc3B1L01ha2VmaWxlLmFtOgorCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUtcmVuZGVyLmM6CisJKiBnc3QvZHZkc3B1L2dzdGR2ZHNwdS5jOgorCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuaDoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LWNvbW1vbi5oOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6CisJKiBnc3QvZHZkc3B1L2dzdHNwdS1wZ3MuaDoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LXZvYnN1Yi1yZW5kZXIuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LXZvYnN1Yi5jOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtdm9ic3ViLmg6CisJICBkdmRzcHU6IHJlbmRlciB0byBBWVVWIG92ZXJsYXkKKwkgIEluc3RlYWQgb2Ygb25seSBzdXBwb3J0aW5nIHdyaXRpbmcgU1BVIGRhdGEgZGlyZWN0bHkgdG8gWVVWIGZyYW1lcywKKwkgIHJlbmRlciB0aGUgU1BVIGRhdGEgdG8gYW4gaW50ZXJtZWRpYXRlIEFZVVYgb3ZlcmxheSBidWZmZXIuIFRoZSBvdmVybGF5CisJICBkYXRhIGlzIHRoZW4gYXR0YWNoZWQgdG8gdGhlIHZpZGVvIGZyYW1lIGlmIGRvd25zdHJlYW0gc3VwcG9ydHMgb3ZlcmxheQorCSAgY29tcG9zaXRpb24sIG90aGVyd2lzZSB0aGUgQVlVViBvdmVybGF5IGlzIGJsZW5kZWQgdG8gdGhlIHZpZGVvIGZyYW1lLgorCSAgRm9yIHRoZSBQR1MgZm9ybWF0LCB0aGUgb3ZlcmxheSBidWZmZXIgc2l6ZSBpcyBzZXQgdG8gdGhlIHNpemUgb2YgdGhlCisJICBDb21wb3NpdGlvbiBXaW5kb3csIGFuZCBpdHMgcG9zaXRpb24gaW4gdGhlIG92ZXJsYXkgY29tcG9zaXRpb24gaXMgc2V0CisJICB0byB0aGUgd2luZG93IHBvc2l0aW9uLiBUaGUgb2JqZWN0cyB0byByZW5kZXIgYXJlIG5vdyBjcm9wcGVkIHdoZW4gdGhlCisJICBjcm9wcGluZyBmbGFnIGlzIHNldC4KKwkgIEZvciB0aGUgVm9ic3ViIGZvcm1hdCwgdGhlIG92ZXJsYXkgYnVmZmVyIHNpemUgaXMgc2V0IHRvIHRoZSBzaXplIG9mIHRoZQorCSAgRGlzcGxheSBBcmVhLgorCSAgT25jZSByZW5kZXJlZCwgdGhlIG92ZXJsYXkgY29tcG9zaXRpb24gcmVjdGFuZ2xlIGlzIG5vdyBtb3ZlZCBhbmQgc2NhbGVkCisJICB0byBmaXQgdGhlIHZpZGVvIG91dHB1dCBzaXplLCB0byBhdm9pZCBjbGlwcGluZy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02NjM3NTAKKworMjAxMy0wOS0wMiAxNzowNzo0OSArMDIwMCAgQXJuYXVkIFZyYWMgPGF2cmFjQGZyZWVib3guZnI+CisKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1LmM6CisJICBkdmRzcHU6IHBhc3MgZHZkc3B1IGFyZ3VtZW50IHRvIHNldF9jYXBzIGZ1bmN0aW9ucworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTY2Mzc1MAorCisyMDE1LTA5LTE4IDE5OjE1OjQ1ICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6CisJICBkdmRzcHU6IHNraXAgdW5uZWVkZWQgcmVhZGluZyBvZiBSTEUgZGF0YQorCSAgVGhlIFJMRSBkYXRhIHdhcyBiZWluZyByZWFkIGZvciBkdW1waW5nIHRoZSBTUFUgaW1hZ2UgZXZlbiB3aGVuIHRoZQorCSAgRFVNUF9GVUxMX0lNQUdFIG1hY3JvIHdhcyBub3Qgc2V0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTY2Mzc1MAorCisyMDE1LTA4LTI5IDE5OjE2OjM4ICswNTMwICBOaXJiaGVlayBDaGF1aGFuIDxuaXJiaGVla0BjZW50cmljdWxhci5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2NvbXBvc2l0b3IuYzoKKwkgIGNoZWNrOiBBZGQgdGVzdCBmb3IgdmlkZW9hZ2dyZWdhdG9yIHNpbmtwYWRzIGJlaW5nIHNvcnRlZCBieSB6b3JkZXIKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQyODUKKworMjAxNS0wOS0yNiAxMDoyMTo0MSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9hZ2dyZWdhdG9yLmM6CisJICBhdWRpb21peGVyOiBmaXggZGVhZGxvY2sgd2hlbiBHX0RJU0FCTEVfQVNTRVJUIGlzIG5vdCBkZWZpbmVkCisJICBUaGlzIG1ha2VzIHRoZSBhdWRpb21peGVyIHVuaXQgdGVzdCB0aW1lIG91dCBpbiBtYXN0ZXIuCisJICBCcm9rZSB3aXRoIDU4N2U3YzQKKworMjAxNS0wOS0yNiAxMDo0OTozMSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2g6IEZpeCB1bml0IHRlc3QgYWZ0ZXIgaW50ZXJuYWwgQVBJIGNoYW5nZQorCisyMDE1LTA4LTI1IDE3OjM5OjMwICswOTAwICBKaW1teSBPaG4gPHlvbmdqaW4ub2huQGxnZS5jb20+CisKKwkqIGV4dC9zbmRmaWxlL2dzdHNmZGVjLmM6CisJICBzZmRlYzogRml4IHR5cG8gaW4gZ290byB2YXJpYWJsZSBuYW1lCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0MDU3CisKKzIwMTUtMDgtMTggMTQ6MTY6MTEgKzAxMDAgIENocmlzIEJhc3MgPGZsb29ibGVmbGFtQGdtYWlsLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJKiBleHQvZGFzaC9nc3RkYXNoZGVtdXguaDoKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmg6CisJICBkYXNoZGVtdXg6IGNyZWF0ZSBzcmMgcGFkcyBmb3Igc3VidGl0bGUgc3RyZWFtcy4KKwkgIENyZWF0ZSBzcmMgcGFkcyBmb3IgUmVwcmVzZW50YXRpb25zIHRoYXQgY29udGFpbiB0aW1lZC10ZXh0IHN1YnRpdGxlcywKKwkgIGJvdGggd2hlbiB0aGUgc3VidGl0bGVzIGFyZSBlbmNhcHN1bGF0ZWQgaW4gSVNPIEJNRkYgKGkuZS4sIHRoZQorCSAgUmVwcmVzZW50YXRpb24gaGFzIG1pbWVUeXBlICJhcHBsaWNhdGlvbi9tcDQiKSBhbmQgd2hlbiB0aGV5IGFyZQorCSAgdW5lbmNhcHN1bGF0ZWQgKGkuZS4sIHRoZSBSZXByZXNlbnRhdGlvbiBoYXMgbWltZVR5cGUKKwkgICJhcHBsaWNhdGlvbi90dG1sK3htbCIpLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0Nzc3NAorCisyMDE1LTA5LTI2IDAwOjE3OjU1ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvYXVkaW9taXhlci9nc3RhdWRpb2FnZ3JlZ2F0b3IuYzoKKwkgIGF1ZGlvYWdncmVnYXRvcjogU3RvcCB1c2luZyBkZXByZWNhdGVkIGdzdF9zZWdtZW50X3RvX3Bvc2l0aW9uKCkKKworMjAxNS0wOC0zMSAxNjoxMjo0MCArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5jOgorCSAgYWdncmVnYXRvcjogRG9uJ3QgZm9yd2FyZCBRT1MgZXZlbnRzIHRvIHNpbmtwYWRzIHRoYXQgaGFkIG5vIGJ1ZmZlciB5ZXQKKwkgIE90aGVyd2lzZSB0aGV5IHdpbGwgcmVjZWl2ZSBhIFFPUyBldmVudCB0aGF0IGhhcyBlYXJsaWVzdF90aW1lPTAgKGJlY2F1c2Ugd2UKKwkgIGNhbid0IGhhdmUgbmVnYXRpdmUgdGltZXN0YW1wcyksIGFuZCBjb25zaWRlciB0aGVpciBidWZmZXIgYXMgdG9vIGxhdGUKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQzNTYKKwogMjAxNS0wOS0yMiAxNjoxNzozOCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KIAogCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CkBAIC03OTgsMTI0ICsxMDU2MywxMCBAQAogCSAgbXBkcGFyc2VyOiBJZiBubyBJbml0aWFsaXphdGlvbiBpcyBwcmVzZW50IGluIHRoZSBTZWdtZW50QmFzZSwgYXNzdW1lIGl0IGlzIGJlZm9yZSB0aGUgaW5kZXhSYW5nZQogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTEzMgogCi0yMDE1LTA5LTE2IDEyOjUwOjQ2ICswMjAwICBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgorMjAxNS0wOS0yNSAyMzo1MToyMCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KIAotCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jOgotCSAgbXNzZGVtdXg6IGFjdGl2YXRlIHN0cmVhbXMgYmVmb3JlIGNvbmZpZ3VyaW5nIGJpdHJhdGUKLQkgIERvaW5nIHRoZSBjb250cmFyeSBoYXMgbm8gZWZmZWN0IGFuZCB0aGUgY29uc2VxdWVuY2UgaXMgdGhhdCBwbGF5YmFjawotCSAgd2lsbCBzdGFydCB3aXRoIHRoZSBsb3dlc3QgYml0cmF0ZSBldmVuIGlmIHdlIGNhbiBhbHJlYWR5IGhhbmRsZQotCSAgaGlnaGVyIGJpdHJhdGUuCi0JICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1MTA4Ci0KLTIwMTUtMDktMDMgMTU6MTE6MDAgKzAyMDAgIFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+Ci0KLQkqIGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYzoKLQkgIG1zc2RlbXV4OiBhbHdheXMgdXNlIHRpbWVzY2FsZSBmb3IgZ3N0IHRpbWVzdGFtcCBjYWxjdWxhdGlvbgotCSAgTm90IGRvaW5nIHRoaXMgY2FuIGxlYWQgdGhlIGRlbXV4ZXIgdG8gYXR0ZW1wdCBkb3dubG9hZGluZyBmcmFnbWVudHMKLQkgIGZvciBhbiBpbnZhbGlkIHN0YXJ0IHRpbWUuIFRoZSBzZXJ2ZXIgd291bGQgdGhlbiBzZW5kIGEgSFRUUAotCSAgUHJlY29uZGl0aW9uIGZhaWxlZCBlcnJvciwgdGhlIGRlbXV4ZXIgd291bGQgdHJ5IHNvbWUgbW9yZSB0aW1lcyB0bwotCSAgZG93bmxvYWQgdGhlIGludmFsaWQgZnJhZ21lbnQgYW5kIGV2ZW50dWFsbHkgZXJyb3Igb3V0LgotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDUyMwotCi0yMDE1LTA5LTMwIDA4OjM2OjE1ICswMjAwICBBbnRvaW5lIEphY291dG90IDxhamFjb3V0b3RAZ25vbWUub3JnPgotCi0JKiBnc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW06Ci0JICBnbDogUGFzcyBHTF9DRkxBR1MgdG8gZy1pci1zY2FubmVyCi0JICBUaGlzIHVuYnJlYWtzIGJ1aWxkaW5nIHdoZW4gc29tZSBoZWFkZXJzIGFyZSB1bmRlciBhIG5vbi1zdGFuZGFyZCBwYXRoLgotCSAgZS5nLiAvdXNyL1gxMVI2L2luY2x1ZGUgYXMgb24gT3BlbkJTRC4KLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU4NTAKLQotMjAxNS0wOS0zMCAwMDo0NDoxNiAtMDcwMCAgQWxlaXggQ29uY2hpbGxvIEZsYXF1w6kgPGFsZWl4QG9ibG9uZy5jb20+Ci0KLQkqIHN5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmFtOgotCSAgYXBwbGVtZWRpYTogZGlzdCBtaXNzaW5nIGhlYWRlciBmaWxlcwotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTg1MgotCi0yMDE1LTA5LTMwIDEzOjEzOjE5ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgotCi0JKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9hdWRpb2ludGVybGVhdmUuYzoKLQkgIGF1ZGlvaW50ZXJsZWF2ZTogdHlwZWNhc3QgYml0LW1hc2sgdG8gZ3VpbnQ2NCB0byBmaXggc2VnbWVudGF0aW9uIGZhdWx0Ci0JICBXaGlsZSBjcmVhdGluZyBjYXBzIGluIGF1ZGlvaW50ZXJsZWF2ZSB0ZXN0cywgYml0bWFzayBpcyBiZWluZyBzZXQgYXMgMHg5Ci0JICBUaGlzIGlzIHJlc3VsdGluZyBpbiBzZWdtZW50YXRpb24gZmF1bHQuIEZpeCB0aGUgc2FtZSBieSB0eXBlY2FzdGluZyB0byBndWludDY0Ci0JICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1ODQwCi0KLTIwMTUtMDktMzAgMDA6MzY6MTQgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+Ci0KLQkqIGdzdC9tcGVndHNtdXgvbXBlZ3RzbXV4LmM6Ci0JICBtcGVndHNtdXg6IGZpeCBkb3duc3RyZWFtIGtleSB1bml0IGV2ZW50cyBoYW5kbGluZyB3aXRoIGhsc3NpbmsKLQkgIFRoZSBidWZmZXIgdGltZXN0YW1wcyBpbiB0aGUgY29sbGVjdCBmdW5jdGlvbiB3aWxsIGFscmVhZHkgYmUKLQkgIHJ1bm5pbmcgdGltZSwgZG9uJ3QgdHJ5IHRvIGNvbnZlcnQgdGhlbSBhZ2FpbiB0byBydW5uaW5nIHRpbWUsCi0JICB0aGlzIHdvdWxkIHlpZWxkIENMT0NLX1RJTUVfTk9ORSBub3cgdGhhdCB0aGUgc2VnbWVudCBpcyBzaGlmdGVkCi0JICB0byBhY2NvdW50IGZvciBuZWdhdGl2ZSBkdHMuCi0JICBUaGlzIGZpeGVzIHgyNjRlbmMgISBtcGVndHNtdXggISBobHNzaW5rLCB3aGljaCB3YXMgYnJva2VuCi0JICBiZWNhdXNlIG1wZWd0c211eCB3b3VsZCBzZW5kIGEgZG93bnN0cmVhbSBrZXkgdW5pdCBldmVudCB3aXRoCi0JICBydW5uaW5nIHRpbWUgTk9ORSBhbmQgdGhlbiBobHNzaW5rIHdvdWxkIGltbWVkaWF0ZWx5IHNlbmQKLQkgIGFub3RoZXIgb25lIHVwc3RyZWFtIGFuZCBpdCB3b3VsZCBqdXN0IGJlIGEgZmxvb2Qgb2YgZm9yY2UKLQkgIGtleWZyYW1lIGV2ZW50cyBpbiBib3RoIGRpcmVjdGlvbnMgYWZ0ZXIgdGhlIGZpcnN0IG9uZS4gVGhpcwotCSAgd291bGQgdGhlbiBicmVhayBobHNzaW5rIGJlY2F1c2UgaXQgdXNlcyBtdWx0aWZpbGVzaW5rIGluCi0JICBuZXh0LWZpbGU9a2V5LXVuaXQtZXZlbnQgbW9kZSwgYW5kIHN0YXJ0aW5nIGEgbmV3IGZpbGUgYWZ0ZXIKLQkgIGV2ZXJ5IGZldyBrQiBkb2VzIG5vdCB3b3JrIHdlbGwgZm9yIEhMUy4KLQotMjAxNS0wOS0yOSAxMzozMToxOCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KLQotCSogZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvYWdncmVnYXRvci5jOgotCSAgdmlkZW9hZ2dyZWdhdG9yOiBmaXggY29tcGlsYXRpb24gd2l0aCBvbGRlciBnbGliIHZlcnNpb24KLQkgIFJlbW92ZSB3ZWlyZCB1c2Ugb2YgcHJpdmF0ZSBndHlwZSBkZWZpbmVzIGFuZCBmaXggY29tcGlsYXRpb24KLQkgIHdpdGggb2xkZXIgZ2xpYiB2ZXJzaW9ucyBzdWNoIGFzIDIuMzYuCi0JICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzU0Ci0KLTIwMTUtMDktMjggMjA6NTY6NTYgKzAyMDAgIEFybmF1ZCBWcmFjIDxhdnJhY0BmcmVlYm94LmZyPgotCi0JKiBleHQvYXNzcmVuZGVyL2dzdGFzc3JlbmRlci5jOgotCSAgYXNzcmVuZGVyOiBmaXggbGVhayBvZiB0YWcgc2FtcGxlcyBpbiB0aGUgdGFnIGxpc3QKLQkgIE1vdmUgaGFuZGxpbmcgb2YgYSBHc3RTYW1wbGUgaW4gYSBzZXBhcmF0ZSBmdW5jdGlvbiwgYW5kIHVucmVmIHRoZQotCSAgc2FtcGxlIGFmdGVyIGNhbGxpbmcgaXQuIGxpYmFzcyBjb3BpZXMgdGhlIGZvbnQgZGF0YSBzbyB3ZSBkb24ndCBuZWVkIHRvCi0JICBrZWVwIGl0IGFyb3VuZC4KLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU3NTkKLQotMjAxNS0wOS0yOCAyMDozMDoxNyArMDIwMCAgQXJuYXVkIFZyYWMgPGF2cmFjQGZyZWVib3guZnI+Ci0KLQkqIGV4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmM6Ci0JICBhc3NyZW5kZXI6IGZpeCBnYXAgZXZlbnQgbGVhayBhbmQgaW52YWxpZCByZXR1cm4gdmFsdWUKLQkgIFdlIGRvbid0IHdhbnQgdGhlIGdhcCBldmVudCB0byBiZSBmb3J3YXJkZWQKLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU3NTkKLQotMjAxNS0wOS0xNyAxNjo1OToxNiArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgotCi0JKiBnc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbGNvbnRleHRfZWFnbC5tOgotCSAgZ2wvZWFnbDogdXNlIHRoZSBkZWZhdWx0IEdMIGNvbnRleHQgZGVidWcgY2F0ZWdvcnkKLQotMjAxNS0wOS0yOSAwMDoyNTowMCArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgotCi0JKiBleHQvZ3RrL2dzdGd0a2Jhc2VzaW5rLmM6Ci0JICBndGs6IGZpeCBhc3NlcnRpb24gd2hlbiB0aGUgZWxlbWVudCBoYXMgbm8gcGVlcgotCSAgV2hlbiBwcm94eWluZyBrZXlib2FyZC9uYXZpZ2F0aW9uL21vdXNlIGV2ZW50cywgb25seSB1bnJlZiBhIHN1Y2Nlc3NmdWxseQotCSAgcmV0cmVpdmVkIHBlZXIgcGFkLgotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTczOAotCi0yMDE1LTA5LTI3IDEzOjA3OjE5ICsxMDAwICBKYW4gU2NobWlkdCA8amFuQGNlbnRyaWN1bGFyLmNvbT4KLQotCSogZXh0L3Jlc2luZHZkL2dzdG1wZWdkZW11eC5jOgotCSAgcmVzaW5kdmQ6IFNlbmQgZ2FwIHVwZGF0ZXMgdG8gdGhlIHNlZ21lbnQgc3RvcCBkdXJpbmcgc3RpbGxzCi0JICBJZ25vcmUgdGhlIG5vcm1hbCBnYXAgdGhyZXNob2xkIGZvciBsYWdneSBzdHJlYW1zIGFuZAotCSAgaW1tZWRpYXRlbHkgY2F0Y2ggYWxsIHN0cmVhbXMgdXAgdG8gdGhlIGVuZCBvZiB0aGUgc2VnbWVudAotCSAgd2hlbiBwcm9jZXNzaW5nIGdhcCB1cGRhdGVzIGZvciBhIHNlZ21lbnQgZHVyaW5nIGEKLQkgIHN0aWxsIGZyYW1lIHNlcXVlbmNlLgotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTY4MAotCi0yMDE1LTA5LTE4IDE5OjA3OjQ3ICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KLQotCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6Ci0JICBkdmRzcHU6IGZpeCBwZ3MgcGFsZXR0ZSBjb2xvcnMKLQkgIFUgYW5kIFYgd2VyZSBpbnZlcnRlZAotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTIzOQotCi0yMDE1LTA5LTI2IDEwOjIxOjQxICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgotCi0JKiBnc3QvYXVkaW9taXhlci9nc3RhdWRpb2FnZ3JlZ2F0b3IuYzoKLQkgIGF1ZGlvbWl4ZXI6IGZpeCBkZWFkbG9jayB3aGVuIEdfRElTQUJMRV9BU1NFUlQgaXMgbm90IGRlZmluZWQKLQkgIFRoaXMgbWFrZXMgdGhlIGF1ZGlvbWl4ZXIgdW5pdCB0ZXN0IHRpbWUgb3V0IGluIG1hc3Rlci4KLQkgIEJyb2tlIHdpdGggNTg3ZTdjNAorCSogY29uZmlndXJlLmFjOgorCSAgQmFjayB0byBkZXZlbG9wbWVudAogCiA9PT0gcmVsZWFzZSAxLjYuMCA9PT0KIApkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQppbmRleCBlOTNlYzFmLi42ZmEyMjVhIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5hbQorKysgYi9NYWtlZmlsZS5hbQpAQCAtNTMsOCArNTMsMTEgQEAKIAkkKHRvcF9idWlsZGRpcikvY29tbW9uL3NoYXZlIFwKIAkkKHRvcF9idWlsZGRpcikvY29tbW9uL3NoYXZlLWxpYnRvb2wgXAogCSQodG9wX2J1aWxkZGlyKS9leHQvYWxzYXNwZGlmLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKKwkkKHRvcF9idWlsZGRpcikvZXh0L2hscy8ubGlicy9saWJnc3RmcmFnbWVudGVkKiBcCiAJJCh0b3BfYnVpbGRkaXIpL2V4dC9pdm9yYmlzLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKIAkkKHRvcF9idWlsZGRpcikvZXh0L2phY2svLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3Qvb3B1cy8ubGlicy9saWJnc3RvcHVzLntzbyxkbGwsRExMLGR5bGlifSBcCisJJCh0b3BfYnVpbGRkaXIpL2V4dC9tcGcxMjMvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvYWFjcGFyc2UvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvYW1ycGFyc2UvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvYXVkaW9wYXJzZXJzLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKQEAgLTYyLDYgKzY1LDcgQEAKIAkkKHRvcF9idWlsZGRpcikvZ3N0L2ltYWdlZnJlZXplLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0L21wZWc0dmlkZW9wYXJzZS8ubGlicy8qLntzbyxkbGwsRExMLGR5bGlifSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC9xdG11eC8ubGlicy8qLntzbyxkbGwsRExMLGR5bGlifSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC9ydHAvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvcnRwbXV4Ly5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0L3J0cHZwOC8ubGlicy8qLntzbyxkbGwsRExMLGR5bGlifSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC9zY2FsZXRlbXBvLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKQEAgLTk2LDEwICsxMDAsMTIgQEAKIAkkKHRvcF9zcmNkaXIpL2dzdC9obHMgXAogCSQodG9wX3NyY2RpcikvZ3N0L2ltYWdlZnJlZXplIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9pbnZ0ZWxlY2luZSBcCisJJCh0b3Bfc3JjZGlyKS9nc3QvbGl2ZWFkZGVyIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9tcGVnNHZpZGVvcGFyc2UgXAogCSQodG9wX3NyY2RpcikvZ3N0L3F0bXV4IFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9ydHBtdXggXAogCSQodG9wX3NyY2RpcikvZ3N0L3J0cHZwOCBcCisJJCh0b3Bfc3JjZGlyKS9nc3QvcnRwIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9zY2FsZXRlbXBvIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9zZWxlY3RvciBcCiAJJCh0b3Bfc3JjZGlyKS9nc3Qvc2hhcGV3aXBlIFwKQEAgLTExOCw2ICsxMjQsNyBAQAogCSQodG9wX3NyY2RpcikvZXh0L2l2b3JiaXMgXAogCSQodG9wX3NyY2RpcikvZXh0L2phY2sgXAogCSQodG9wX3NyY2RpcikvZXh0L21ldGFkYXRhIFwKKwkkKHRvcF9zcmNkaXIpL2V4dC9tcGcxMjMgXAogCSQodG9wX3NyY2RpcikvZXh0L3N3ZmRlYyBcCiAJJCh0b3Bfc3JjZGlyKS9leHQvdGFya2luIFwKIAkkKHRvcF9zcmNkaXIpL2V4dC90aGVvcmEgXApkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgppbmRleCAxOWIwYjVhLi4zYzIyMzE2IDEwMDY0NAotLS0gYS9NYWtlZmlsZS5pbgorKysgYi9NYWtlZmlsZS5pbgpAQCAtMTI1LDE2ICsxMjUsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSBcCkBAIC0yMDgsNyArMjA3LDcgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9yZWxlYXNlLm1hayBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vd2luMzIubWFrIEFCT1VULU5MUyBBVVRIT1JTIENPUFlJTkcgXAogCUNPUFlJTkcuTElCIENoYW5nZUxvZyBJTlNUQUxMIE5FV1MgUkVBRE1FIGNvbXBpbGUgY29uZmlnLmd1ZXNzIFwKLQljb25maWcucnBhdGggY29uZmlnLnN1YiBkZXBjb21wIGluc3RhbGwtc2ggbHRtYWluLnNoIG1pc3NpbmcKKwljb25maWcucnBhdGggY29uZmlnLnN1YiBpbnN0YWxsLXNoIGx0bWFpbi5zaCBtaXNzaW5nCiBESVNURklMRVMgPSAkKERJU1RfQ09NTU9OKSAkKERJU1RfU09VUkNFUykgJChURVhJTkZPUykgJChFWFRSQV9ESVNUKQogZGlzdGRpciA9ICQoUEFDS0FHRSktJChWRVJTSU9OKQogdG9wX2Rpc3RkaXIgPSAkKGRpc3RkaXIpCkBAIC0yODYsNiArMjg1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMjMsNiArMzI0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMzEsNyArMzM0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzUwLDggKzM1Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjgsMTYgKzM3MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MDMsNiArNDA3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI4LDYgKzQzNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyOSw2ICs1MzcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTQyLDggKzU1MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1OSw2ICs1NjYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjE2LDE2ICs2MjUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzcsNiArNjg4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4Nyw2ICs2OTksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTYsNiArNzA5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTczMyw3ICs3NDgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTgwOCw4ICs4MjIsMTEgQEAKIAkkKHRvcF9idWlsZGRpcikvY29tbW9uL3NoYXZlIFwKIAkkKHRvcF9idWlsZGRpcikvY29tbW9uL3NoYXZlLWxpYnRvb2wgXAogCSQodG9wX2J1aWxkZGlyKS9leHQvYWxzYXNwZGlmLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKKwkkKHRvcF9idWlsZGRpcikvZXh0L2hscy8ubGlicy9saWJnc3RmcmFnbWVudGVkKiBcCiAJJCh0b3BfYnVpbGRkaXIpL2V4dC9pdm9yYmlzLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKIAkkKHRvcF9idWlsZGRpcikvZXh0L2phY2svLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3Qvb3B1cy8ubGlicy9saWJnc3RvcHVzLntzbyxkbGwsRExMLGR5bGlifSBcCisJJCh0b3BfYnVpbGRkaXIpL2V4dC9tcGcxMjMvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvYWFjcGFyc2UvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvYW1ycGFyc2UvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvYXVkaW9wYXJzZXJzLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKQEAgLTgxNyw2ICs4MzQsNyBAQAogCSQodG9wX2J1aWxkZGlyKS9nc3QvaW1hZ2VmcmVlemUvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvbXBlZzR2aWRlb3BhcnNlLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0L3F0bXV4Ly5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0L3J0cC8ubGlicy8qLntzbyxkbGwsRExMLGR5bGlifSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC9ydHBtdXgvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvcnRwdnA4Ly5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0L3NjYWxldGVtcG8vLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXApAQCAtODUxLDEwICs4NjksMTIgQEAKIAkkKHRvcF9zcmNkaXIpL2dzdC9obHMgXAogCSQodG9wX3NyY2RpcikvZ3N0L2ltYWdlZnJlZXplIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9pbnZ0ZWxlY2luZSBcCisJJCh0b3Bfc3JjZGlyKS9nc3QvbGl2ZWFkZGVyIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9tcGVnNHZpZGVvcGFyc2UgXAogCSQodG9wX3NyY2RpcikvZ3N0L3F0bXV4IFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9ydHBtdXggXAogCSQodG9wX3NyY2RpcikvZ3N0L3J0cHZwOCBcCisJJCh0b3Bfc3JjZGlyKS9nc3QvcnRwIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9zY2FsZXRlbXBvIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9zZWxlY3RvciBcCiAJJCh0b3Bfc3JjZGlyKS9nc3Qvc2hhcGV3aXBlIFwKQEAgLTg3Myw2ICs4OTMsNyBAQAogCSQodG9wX3NyY2RpcikvZXh0L2l2b3JiaXMgXAogCSQodG9wX3NyY2RpcikvZXh0L2phY2sgXAogCSQodG9wX3NyY2RpcikvZXh0L21ldGFkYXRhIFwKKwkkKHRvcF9zcmNkaXIpL2V4dC9tcGcxMjMgXAogCSQodG9wX3NyY2RpcikvZXh0L3N3ZmRlYyBcCiAJJCh0b3Bfc3JjZGlyKS9leHQvdGFya2luIFwKIAkkKHRvcF9zcmNkaXIpL2V4dC90aGVvcmEgXApAQCAtMTQwMiw3ICsxNDIzLDEwIEBACiAJICBpZiB0ZXN0ICJ4JCRsaWJzbyIgIT0gIngiOyB0aGVuIFwKIAkgICAgZWNobyBDaGVja2luZyBzeW1ib2xzIGluICQkbGlic287IFwKIAkgICAgaWYgISAoJCh0b3Bfc3JjZGlyKS9jb21tb24vY2hlY2stZXhwb3J0cyAkJGxpYmRlZiAkJGxpYnNvKSA7IHRoZW4gXAotCSAgICAgIGZhaWw9MTsgXAorCSAgICAgIGVjaG8gIiQkbGliZGVmIjsgXAorCSAgICAgIGlmIHRlc3QgIiQkbGliYmFzZSIgIT0gImxpYmdzdGdsIjsgdGhlbiBcCisJICAgICAgICBmYWlsPTE7IFwKKwkgICAgICBmaTsgXAogCSAgICBmaTsgXAogCSAgZmk7IFwKIAlkb25lIDsgXApAQCAtMTQ0Niw2ICsxNDcwLDkgQEAKIAlAaWYgWyAtZCAuLi93d3cvZGF0YS9zcmMgXTsgdGhlbiBcCiAJICBtdiAtdiAkKFBBQ0tBR0UpLSQoVkVSU0lPTikudGFyLnh6IC4uL3d3dy9kYXRhL3NyYy8kKFBBQ0tBR0UpLyA7IFwKIAkgIG12IC12ICQoUEFDS0FHRSktJChWRVJTSU9OKS50YXIueHouc2hhMjU2c3VtIC4uL3d3dy9kYXRhL3NyYy8kKFBBQ0tBR0UpLyA7IFwKKwllbGlmIFsgLWQgLi4vLi4vd3d3L2RhdGEvc3JjIF07IHRoZW4gXAorCSAgbXYgLXYgJChQQUNLQUdFKS0kKFZFUlNJT04pLnRhci54eiAuLi8uLi93d3cvZGF0YS9zcmMvJChQQUNLQUdFKS8gOyBcCisJICBtdiAtdiAkKFBBQ0tBR0UpLSQoVkVSU0lPTikudGFyLnh6LnNoYTI1NnN1bSAuLi8uLi93d3cvZGF0YS9zcmMvJChQQUNLQUdFKS8gOyBcCiAJZmkKIAlAZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKIApkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKaW5kZXggYWE3YzQ4ZS4uZGVjMTIyYiAxMDA2NDQKLS0tIGEvTkVXUworKysgYi9ORVdTCkBAIC0xLDQ0ICsxLDIgQEAKLVRoaXMgaXMgR1N0cmVhbWVyIDEuNi4zCi0KLVRoZSBHU3RyZWFtZXIgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUgdGhpcmQgYnVnZml4IHJlbGVhc2UgaW4gdGhlIHN0YWJsZQotMS42IHJlbGVhc2Ugc2VyaWVzIG9mIHlvdXIgZmF2b3VyaXRlIGNyb3NzLXBsYXRmb3JtIG11bHRpbWVkaWEgZnJhbWV3b3JrIQotCi1UaGlzIHJlbGVhc2Ugb25seSBjb250YWlucyBidWdmaXhlcyBhbmQgaXQgaXMgc2FmZSB0byB1cGRhdGUgZnJvbSAxLjYueC4gRm9yIGEKLWZ1bGwgbGlzdCBvZiBidWdmaXhlcyBzZWUgQnVnemlsbGE6Ci0gIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP2J1Z19zdGF0dXM9UkVTT0xWRUQmYnVnX3N0YXR1cz1WRVJJRklFRCZsaW1pdD0wJmxpc3RfaWQ9OTE1NjImb3JkZXI9YnVnX2lkJnByb2R1Y3Q9R1N0cmVhbWVyJnJlc29sdXRpb249RklYRUQmdGFyZ2V0X21pbGVzdG9uZT0xLjYuMwotCi1TZWUgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvMS42LyBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgZG9jdW1lbnQuCi0KLU1ham9yIGJ1Z2ZpeGVzCi0KLS0gRml4IHJlZ3Jlc3Npb24gaW4gR0wgbGlicmFyeSB0aGF0IG1hZGUgZ2xpbWFnZXNpbmsgdW5zYWJsZSBvbiBBbmRyb2lkCi0tIEludGVnZXIgYXJpdGhtZXRpYyBvdmVyZmxvdyBpbiBxdWV1ZTIgZWxlbWVudCB0aGF0IGNvdWxkIGJyZWFrIGJ1ZmZlcmluZyBvcgotICBjYXVzZSBjcmFzaGVzIGR1ZSB0byBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UKLS0gRml4IGNyYXNoIGluIEFBQy9BRFRTIHR5cGVmaW5kZXIgY2F1c2VkIGJ5IHJlYWRpbmcgbW9yZSBtZW1vcnkgdGhhbiBpcwotICBhdmFpbGFibGUKLS0gU3RvcCBpZ25vcmluZyBlbmNvZGVyIGVycm9ycyBpbiB0aGUgVlA4L1ZQOSBlbmNvZGVycwotLSBEZXByZWNhdGUgR3N0VmlkZW9FbmNvZGVyIEdTVF9WSURFT19FTkNPREVSX0ZMT1dfRFJPUFBFRC4gSXQncyByZWR1ZGFudCBhbmQKLSAgd2FzIG5ldmVyIGFjdHVhbGx5IGltcGxlbWVudGVkCi0tIEVuc3VyZSB0byBzdG9yZSB0aGUgY29ycmVjdCB2aWRlbyBpbmZvIGluIEdzdFZpZGVvQnVmZmVyUG9vbAotLSBGaXggY2FwcyBpbiBydHNwc3JjIHdoZW4gZG9pbmcgU1JUUCBvdmVyIGludGVybGVhdmVkIFRDUAotLSBGaXggY3Jhc2ggaW4gcGNhcCBwYXJzZXIgb24gMC1zaXplZCBwYWNrZXRzCi0tIENsZWFyIEVPUyBmbGFnIGluIGFwcHNyYyB0byBhbGxvdyByZXVzZSBhZnRlciBFT1MgYW5kIGZsdXNoaW5nCi0tIElnbm9yZSBmbHVzaGluZyBzdHJlYW1zIGluIHN0cmVhbXN5bmNocm9uaXplciBkdXJpbmcgc3RyZWFtIHN3aXRjaGVzIHRvIGZpeAotICBwcm9ibGVtcyBjYXVzZWQgYnkgdGhpcyBpbiBnc3QtZWRpdGluZy1zZXJ2aWNlcwotLSBJZ25vcmUgdGFncyBhbmQgb3RoZXIgbWV0YWRhdGEgaW4gV0FWIGZpbGVzIGFmdGVyIHRoZSAiZGF0YSIgY2h1bmsgaW4gUFVTSAotICBtb2RlIHRvIHByZXZlbnQgdGhlbSBmcm9tIGJlaW5nIGludGVycHJldGVkIGFzIGF1ZGlvCi0tIENvcnJlY3RseSB1c2UgY29sb3JpbWV0cnkgaW4gdjRsMiBvbmx5IGZvciBZVVYgY29sb3IgZm9ybWF0cwotLSBTZXQgcmVzZXJ2ZWQgYml0cyBpbiBNUEVHIFRTIG11eGVyIHRvIDFzCi0tIEZpeCBjYWxjdWxhdGlvbiBvZiBTQkMgZnJhbWUgbGVuZ3RocwotLSBGaXggb3V0cHV0IG9mIHRoZSBSVFAgSlBFRzIwMDAgZGVwYXlsb2FkZXIgdG8gaGF2ZSBvbmUgZnJhbWUgcGVyIGJ1ZmZlcgotICBhbmQgY3Jhc2ggaW4gdGhlIE9wZW5KUEVHIGRlY29kZXIgb24gaW5jb21wbGV0ZSBmcmFtZXMKLS0gVXBkYXRlIGZmbXBlZyBzbmFwc2hvdCBpbiBnc3QtbGliYXYgdG8gMi44LjUKLS0gTWVtb3J5IGxlYWsgZml4ZXMgaW4gc2NhbGV0ZW1wbywgdGhlIHJhdyB2aWRlbyBSVFAgZGVwYXlsb2FkZXIsCi0gIGFuZCBpbiBwbGF5c2luayByZWxhdGVkIHRvIGF1ZGlvL3ZpZGVvIGZpbHRlcnMKLS0gRml4ZXMgZm9yIGVycm9yIGhhbmRsaW5nIGluIHRoZSBPU1ggYXVkaW8gcGx1Z2luCi0tIFZhcmlvdXMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGFubm90YXRpb24gZml4ZXMgYW5kIGFkZGl0aW9ucwotLSBDb21waWxlciB3YXJuaW5nIGZpeGVzIGZvciBsYXRlc3QgY2xhbmcgY29tcGlsZXIKLS0gYW5kIG1hbnksIG1hbnkgbW9yZToKLSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/YnVnX3N0YXR1cz1SRVNPTFZFRCZidWdfc3RhdHVzPVZFUklGSUVEJmxpbWl0PTAmbGlzdF9pZD05MTU2MiZvcmRlcj1idWdfaWQmcHJvZHVjdD1HU3RyZWFtZXImcmVzb2x1dGlvbj1GSVhFRCZ0YXJnZXRfbWlsZXN0b25lPTEuNi4zCi0KK1RoaXMgaXMgR1N0cmVhbWVyIDEuNy45MQogCmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggZjE3NWIxYi4uZmE1M2Y5NSAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw0ICsxLDQgQEAKLUdTdHJlYW1lciAxLjUueCBkZXZlbG9wbWVudCBzZXJpZXMKK0dTdHJlYW1lciAxLjcueCBkZXZlbG9wbWVudCBzZXJpZXMKIAogV0hBVCBJVCBJUwogLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvUkVMRUFTRSBiL1JFTEVBU0UKaW5kZXggZDM2NmU3OS4uMTdjYzE5MyAxMDA2NDQKLS0tIGEvUkVMRUFTRQorKysgYi9SRUxFQVNFCkBAIC0xLDE5ICsxLDE0IEBACiAKLVJlbGVhc2Ugbm90ZXMgZm9yIEdTdHJlYW1lciBCYWQgUGx1Z2luc8KgMS42LjMKK1JlbGVhc2Ugbm90ZXMgZm9yIEdTdHJlYW1lciBCYWQgUGx1Z2luc8KgMS43LjkxCiAKLVRoZSBHU3RyZWFtZXIgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUgdGhpcmQgYnVnZml4IHJlbGVhc2UgaW4gdGhlIHN0YWJsZQotMS42IHJlbGVhc2Ugc2VyaWVzIG9mIHlvdXIgZmF2b3VyaXRlIGNyb3NzLXBsYXRmb3JtIG11bHRpbWVkaWEgZnJhbWV3b3JrIQorVGhlIEdTdHJlYW1lciB0ZWFtIGlzIHBsZWFzZWQgdG8gYW5ub3VuY2UgdGhlIHNlY29uZCByZWxlYXNlIGNhbmRpZGF0ZSBvZiB0aGUgc3RhYmxlCisxLjggcmVsZWFzZSBzZXJpZXMuIFRoZSAxLjggcmVsZWFzZSBzZXJpZXMgaXMgYWRkaW5nIG5ldyBmZWF0dXJlcyBvbiB0b3Agb2YKK3RoZSAxLjAsIDEuMiwgMS40IGFuZCAxLjYgc2VyaWVzIGFuZCBpcyBwYXJ0IG9mIHRoZSBBUEkgYW5kIEFCSS1zdGFibGUgMS54IHJlbGVhc2UKK3NlcmllcyBvZiB0aGUgR1N0cmVhbWVyIG11bHRpbWVkaWEgZnJhbWV3b3JrLgogCiAKLQotVGhpcyByZWxlYXNlIG9ubHkgY29udGFpbnMgYnVnZml4ZXMgYW5kIGl0IGlzIHNhZmUgdG8gdXBkYXRlIGZyb20gMS42LnguIEZvciBhCi1mdWxsIGxpc3Qgb2YgYnVnZml4ZXMgc2VlIEJ1Z3ppbGxhLgotCi0KLQotU2VlIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLzEuNi8KLWZvciB0aGUgZnVsbCByZWxlYXNlIG5vdGVzLgotCitCaW5hcmllcyBmb3IgQW5kcm9pZCwgaU9TLCBNYWMgT1MgWCBhbmQgV2luZG93cyB3aWxsIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkKK2R1cmluZyB0aGUgc3RhYmxlIDEuOCByZWxlYXNlIHNlcmllcy4KIAogCiAiVGhhdCBhbiBhY2N1c2F0aW9uPyIKQEAgLTY0LDIzICs1OSwzMiBAQAogCiBCdWdzIGZpeGVkIGluIHRoaXMgcmVsZWFzZQogICAgICAKLSAgICAgICogNzU2NTczIDogcGNhcHBhcnNlOiBDcmFzaCBpbiBwcmVzZW5jZSBvZiBlbXB0eSBwYWNrZXQKLSAgICAgICogNzU4Mjg2IDogcXRpdGVtOiBHc3RRU0dUZXh0dXJlIGxlYWtzIGluIHVwZGF0ZVBhaW50Tm9kZQotICAgICAgKiA3NjAxMjcgOiBtcGVndHNtdXg6IFJlc2VydmUgYml0cyBub3Qgc2V0IHRvIHRvIDEncwotICAgICAgKiA3NjA1NTEgOiBzaG1zaW5rOiBEZWFkbG9jayBpbiBtZW1vcnkgZnJlZQotICAgICAgKiA3NjA4ODMgOiBnbDogQmxhY2sgc2NyZWVuIG9uIEFuZHJvaWQgYWZ0ZXIgdXBkYXRlIGZyb20gMS42LjEgdG8gMS42LjIKKyAgICAgICogNzQzMjU5IDogdHNkZW11eDogIGJvZ3VzIHRpbWVzdGFtcCB3aGVuIFBUUyA8IFBDUgorICAgICAgKiA3NTYyODIgOiBbUExVR0lOLU1PVkVdIE1vdmUgb3B1cyB0byAtYmFzZQorICAgICAgKiA3NjA1NjYgOiBBbGwgdGhlIGdsZWZmZWN0cyBoYXZlIHRoZSBzYW1lIG5hbWUgYW5kIGRlc2NyaXB0aW9uCisgICAgICAqIDc2Mjk5OSA6IE1lbW9yeSBsZWFrIGluIHFtbGdsc2luaworICAgICAgKiA3NjMwNDUgOiBnbG1lbW9yeWFsbG9jYXRvcjogQnVmZmVyIHNpemUgbWlzcy1tYXRjaCB3aGVuIG1hcHBpbmcgR0xNZW1vcnkgd2l0aG91dCBQQk8KKyAgICAgICogNzYzMDc5IDogaGxzL01ha2VmaWxlLmFtIG1pc3NpbmcgT1BFTlNTTF9DRkxBR1MKKyAgICAgICogNzYzMDk4IDogYWhjc3JjOiByZW1vdmUgdW51c2VkIGZpbGUKKyAgICAgICogNzYzMTY4IDogZ2xkaXNwbGF5OiBfZ2V0X2dsX2NvbnRleHRfZm9yX3RocmVhZF91bmxvY2tlZCBsb29rcyBzdXNwaWNpb3VzCisgICAgICAqIDc2MzIyMCA6IG1wZWd2aWRlb3BhcnNlOiBTdXBwb3J0IG5vbi1oaWVyYXJjaGljYWwgcHJvZmlsZS9sZXZlbCBhZ2FpbiBbUkVHUkVTU0lPTl0KKyAgICAgICogNzYzMzU2IDogZ2xpbWFnZXNpbms6IEZpeCB3aW5kb3cgbWVtb3J5IGxlYWsKKyAgICAgICogNzYzMzY1IDogZ2xmaWx0ZXJhcHAgbm90IGNvcnJlY3RseSBkcmF3aW5nIHRoZSBkZWZhdWx0IHNjZW5lCisgICAgICAqIDc2MzQwMSA6IFplcm8tY29weSB2aWRlbyBwbGF5YmFjayBkb2Vzbid0IHdvcmsgb24gQW5kcm9pZCA0LnggKFFBIDEuNy45MCkKKyAgICAgICogNzYzNDk0IDogaDI2NXBhcnNlOiBTZWdmYXVsdCB3aGlsZSB0cmFuZm9ybWluZyBoZXZjIHBhY2tldGl6ZWQgIHN0cmVhbSB0byBuYWwgYWxpZ25lZCBieXRlc3RyZWFtCisgICAgICAqIDc2MzUwMyA6IHRzZGVtdXggY2FuIGNyYXNoIG9uIHNodXRkb3duCiAKID09PT0gRG93bmxvYWQgPT09PQogCiBZb3UgY2FuIGZpbmQgc291cmNlIHJlbGVhc2VzIG9mIGdzdC1wbHVnaW5zLWJhZCBpbiB0aGUgZG93bmxvYWQKLWRpcmVjdG9yeTogaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhZC8KK2RpcmVjdG9yeTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvCiAKIFRoZSBnaXQgcmVwb3NpdG9yeSBhbmQgZGV0YWlscyBob3cgdG8gY2xvbmUgaXQgY2FuIGJlIGZvdW5kIGF0CiBodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLWJhZC8KIAogPT09PSBIb21lcGFnZSA9PT09CiAKLVRoZSBwcm9qZWN0J3Mgd2Vic2l0ZSBpcyBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8KK1RoZSBwcm9qZWN0J3Mgd2Vic2l0ZSBpcyBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvCiAKID09PT0gU3VwcG9ydCBhbmQgQnVncyA9PT09CiAKQEAgLTEwNSwxMCArMTA5LDIxIEBACiAgICAgICAgIAogQ29udHJpYnV0b3JzIHRvIHRoaXMgcmVsZWFzZQogICAgIAotICAgICAgKiBCb2IgSG9sY29tYgotICAgICAgKiBNYXR0IENyYW5lCisgICAgICAqIEFsZXNzYW5kcm8gRGVjaW5hCisgICAgICAqIEF1csOpbGllbiBaYW5lbGxpCisgICAgICAqIEVkd2FyZCBIZXJ2ZXkKKyAgICAgICogSmFuIFNjaG1pZHQKKyAgICAgICogSm9lIEdvcnNlCisgICAgICAqIEp1c3RpbiBLaW0KKyAgICAgICogTWFyayBOYXV3ZWxhZXJ0cworICAgICAgKiBNYXJ0aW4gS2VsbHkKKyAgICAgICogTWF0dGhldyBXYXRlcnMKKyAgICAgICogTmljb2xhcyBEdWZyZXNuZQorICAgICAgKiBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0CiAgICAgICAqIFNlYmFzdGlhbiBEcsO2Z2UKICAgICAgICogU2VyZ2V5IEJvcm92a292Ci0gICAgICAqIFRpbSBTaGVyaWRhbgorICAgICAgKiBTcmVlcmVuaiBCYWxhY2hhbmRyYW4KICAgICAgICogVGltLVBoaWxpcHAgTcO8bGxlcgorICAgICAgKiBWaW5lZXRoIFRNCisgICAgICAqIFZpdmlhIE5pa29sYWlkb3UKIMKgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYWNsb2NhbC5tNCBiL2FjbG9jYWwubTQKaW5kZXggMjE0NDgxMS4uMjE2MmVmOCAxMDA2NDQKLS0tIGEvYWNsb2NhbC5tNAorKysgYi9hY2xvY2FsLm00CkBAIC0xNDc5LDcgKzE0NzksNiBAQAogbTRfaW5jbHVkZShbY29tbW9uL200L29yYy5tNF0pCiBtNF9pbmNsdWRlKFtjb21tb24vbTQvcGtnLm00XSkKIG00X2luY2x1ZGUoW200L2dldHRleHQubTRdKQotbTRfaW5jbHVkZShbbTQvZ3NldHRpbmdzLm00XSkKIG00X2luY2x1ZGUoW200L2dzdC1maW9ucmVhZC5tNF0pCiBtNF9pbmNsdWRlKFttNC9nc3Qtc2RsLm00XSkKIG00X2luY2x1ZGUoW200L2ljb252Lm00XSkKZGlmZiAtLWdpdCBhL2F1dG9nZW4uc2ggYi9hdXRvZ2VuLnNoCmluZGV4IDc5MTI2NTQuLmVlMmNlOTIgMTAwNzU1Ci0tLSBhL2F1dG9nZW4uc2gKKysrIGIvYXV0b2dlbi5zaApAQCAtMzcsNyArMzcsMTEgQEAKIGlmIHRlc3QgISBcKCAteCAuZ2l0L2hvb2tzL3ByZS1jb21taXQgLWEgLUwgLmdpdC9ob29rcy9wcmUtY29tbWl0IFwpOwogdGhlbgogICAgIHJtIC1mIC5naXQvaG9va3MvcHJlLWNvbW1pdAotICAgIGxuIC1zIC4uLy4uL2NvbW1vbi9ob29rcy9wcmUtY29tbWl0Lmhvb2sgLmdpdC9ob29rcy9wcmUtY29tbWl0CisgICAgaWYgISBsbiAtcyAuLi8uLi9jb21tb24vaG9va3MvcHJlLWNvbW1pdC5ob29rIC5naXQvaG9va3MvcHJlLWNvbW1pdCAyPiAvZGV2L251bGwKKyAgICB0aGVuCisgICAgICAgIGVjaG8gIkZhaWxlZCB0byBjcmVhdGUgY29tbWl0IGhvb2sgc3ltbGluaywgY29weWluZyBpbnN0ZWFkIC4uLiIKKyAgICAgICAgY3AgY29tbW9uL2hvb2tzL3ByZS1jb21taXQuaG9vayAuZ2l0L2hvb2tzL3ByZS1jb21taXQKKyAgICBmaQogZmkKIAogIyBHTlUgZ2V0dGV4dCBhdXRvbWFrZSBzdXBwb3J0IGRvZXNuJ3QgZ2V0IGFsb25nIHdpdGggZ2l0LgpAQCAtNTAsNiArNTQsOCBAQAogCiBpZiB0ZXN0ICJ4JHBhY2thZ2UiID0gInhnc3RyZWFtZXIiOyB0aGVuCiAgIENPTkZJR1VSRV9ERUZfT1BUPSIkQ09ORklHVVJFX0RFRl9PUFQgLS1lbmFibGUtZG9jYm9vayAtLWVuYWJsZS1mYWlsaW5nLXRlc3RzIC0tZW5hYmxlLXBvaXNvbmluZyIKK2VsaWYgdGVzdCAieCRwYWNrYWdlIiA9ICJ4Z3N0LXBsdWdpbnMtYmFkIjsgdGhlbgorICBDT05GSUdVUkVfREVGX09QVD0iJENPTkZJR1VSRV9ERUZfT1BUIC0td2l0aC1wbGF5ZXItdGVzdHMiCiBmaQogCiBhdXRvZ2VuX29wdGlvbnMgJEAKZGlmZiAtLWdpdCBhL2NvbW1vbi9NYWtlZmlsZS5pbiBiL2NvbW1vbi9NYWtlZmlsZS5pbgppbmRleCBkNzFiM2JhLi5hNGExZjk5IDEwMDY0NAotLS0gYS9jb21tb24vTWFrZWZpbGUuaW4KKysrIGIvY29tbW9uL01ha2VmaWxlLmluCkBAIC0xMTQsMTYgKzExNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQ4LDYgKzI0Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjg1LDYgKzI4Niw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkzLDcgKzI5Niw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxMiw4ICszMTQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzMwLDE2ICszMzMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzY1LDYgKzM2OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM5MCw2ICszOTYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTEsNiArNDk5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwNCw4ICs1MTMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjEsNiArNTI4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3OCwxNiArNTg3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM5LDYgKzY1MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDksNiArNjYxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU4LDYgKzY3MSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTUsNyArNzEwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9jb21tb24vY2hlY2subWFrIGIvY29tbW9uL2NoZWNrLm1hawppbmRleCA4YTkwYjVkLi42NjQ5N2ZmIDEwMDY0NAotLS0gYS9jb21tb24vY2hlY2subWFrCisrKyBiL2NvbW1vbi9jaGVjay5tYWsKQEAgLTEyLDM2ICsxMiwzMiBAQAogZW5kaWYKIAogTE9PUFMgPz0gMTAKK0FNX1RFU1RTX0VOVklST05NRU5UID0gQ0tfREVGQVVMVF9USU1FT1VUPTIwCiAKICMgcnVuIGFueSBnaXZlbiB0ZXN0IGJ5IHJ1bm5pbmcgbWFrZSB0ZXN0LmNoZWNrCiAjIGlmIHRoZSB0ZXN0IGZhaWxzLCBydW4gaXQgYWdhaW4gYXQgYXQgbGVhc3QgZGVidWcgbGV2ZWwgMgogJS5jaGVjazogJQogCUAkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqIHx8CQkJCQkJCVwKIAkkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAogCUdTVF9ERUJVRz0kJEdTVF9ERUJVRywqOjIJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqCiAKICMganVzdCBsaWtlICdjaGVjaycsIGJ1dCBkb24ndCBydW4gaXQgYWdhaW4gaWYgaXQgZmFpbHMgKHVzZWZ1bCBmb3IgZGVidWdnaW5nKQogJS5jaGVjay1ub3JlcGVhdDogJQogCUAkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqCiAKICMgcnVuIGFueSBnaXZlbiB0ZXN0IGluIGEgbG9vcAogJS50b3J0dXJlOiAlCiAJQGZvciBpIGluIGBzZXEgMSAkKExPT1BTKWA7IGRvCQkJCVwKIAkkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqOyBkb25lCiAKICMgcnVuIGFueSBnaXZlbiB0ZXN0IGluIGFuIGluZmluaXRlIGxvb3AKICUuZm9yZXZlcjogJQogCUB3aGlsZSB0cnVlOyBkbwkJCQkJCVwKIAkkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqIHx8IGJyZWFrOyBkb25lCiAKICMgdmFsZ3JpbmQgYW55IGdpdmVuIHRlc3QgYnkgcnVubmluZyBtYWtlIHRlc3QudmFsZ3JpbmQKQEAgLTU3LDcgKzUzLDcgQEAKIAktLXNob3ctcG9zc2libHktbG9zdD1ubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAktLWxlYWstcmVzb2x1dGlvbj1oaWdoIC0tbnVtLWNhbGxlcnM9MjAJCQlcCiAJLi8kKiAyPiYxIHwgdGVlICQkdmFsZ3JpbmRfbG9nIDsJCQlcCi0JaWYgZ3JlcCAiPT0iICQkdmFsZ3JpbmRfbG9nID4gL2Rldi9udWxsIDI+JjE7IHRoZW4JXAorCWlmIGdyZXAgIl49PSIgJCR2YWxncmluZF9sb2cgPiAvZGV2L251bGwgMj4mMTsgdGhlbglcCiAJICAgIHJtICQkdmFsZ3JpbmRfbG9nOwkJCQkJXAogCSAgICBleGl0IDE7CQkJCQkJXAogCWZpIDsJCQkJCQkJXApkaWZmIC0tZ2l0IGEvY29tbW9uL2dzdC5zdXBwIGIvY29tbW9uL2dzdC5zdXBwCmluZGV4IDgxZjk4YTkuLjI3NDBlOWEgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9nc3Quc3VwcAorKysgYi9jb21tb24vZ3N0LnN1cHAKQEAgLTM5NzYsNyArMzk3Niw2IEBACiB7CiAgICBjbG9zdXJlcyBhcmVuJ3QgdmFsZ3JpbmQgZnJpZW5kbHkgKGJnbyM3Mzk4NTApCiAgICBNZW1jaGVjazpMZWFrCi0gICBtYXRjaC1sZWFrLWtpbmRzOiBwb3NzaWJsZQogICAgZnVuOmNhbGxvYwogICAgLi4uCiAgICBmdW46Z19jY2xvc3VyZV9uZXcKQEAgLTM5ODUsNyArMzk4NCw2IEBACiB7CiAgICBjbG9zdXJlcyBhcmVuJ3QgdmFsZ3JpbmQgZnJpZW5kbHkgKGJnbyM3Mzk4NTApCiAgICBNZW1jaGVjazpMZWFrCi0gICBtYXRjaC1sZWFrLWtpbmRzOiBwb3NzaWJsZQogICAgZnVuOm1hbGxvYwogICAgLi4uCiAgICBmdW46Z19jbG9zdXJlX2FkZF9pbnZhbGlkYXRlX25vdGlmaWVyCkBAIC0zOTk0LDcgKzM5OTIsNiBAQAogewogICAgY2xvc3VyZXMgYXJlbid0IHZhbGdyaW5kIGZyaWVuZGx5IChiZ28jNzM5ODUwKQogICAgTWVtY2hlY2s6TGVhawotICAgbWF0Y2gtbGVhay1raW5kczogcG9zc2libGUKICAgIGZ1bjpjYWxsb2MKICAgIC4uLgogICAgZnVuOmdfY2xvc3VyZV9uZXdfc2ltcGxlCkBAIC00MDIwLDMgKzQwMTcsMTIgQEAKICAgIE1lbWNoZWNrOkFkZHI4CiAgICBmdW46ZG9fbG9va3VwX3gKIH0KKworeworICAgPHF1YXJrIHRhYmxlcyBhcmUgbGVha2VkIG9uIHB1cnBvc2Ugd2hlbiB0aGV5IGFyZSBleHBhbmRlZCwgb2JzZXJ2ZWQgd2l0aCBnbGliIDIuNDYgYW5kIGdzdC1ydHNwLXNlcnZlciB0ZXN0cz4KKyAgIE1lbWNoZWNrOkxlYWsKKyAgIGZ1bjptYWxsb2MKKyAgIC4uLgorICAgZnVuOmdfcXVhcmtfaW5pdAorICAgZnVuOmdsaWJfaW5pdF9jdG9yCit9CmRpZmYgLS1naXQgYS9jb21tb24vZ3RrLWRvYy1wbHVnaW5zLm1hayBiL2NvbW1vbi9ndGstZG9jLXBsdWdpbnMubWFrCmluZGV4IDk5N2E2NzIuLmZlMDk3N2MgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9ndGstZG9jLXBsdWdpbnMubWFrCisrKyBiL2NvbW1vbi9ndGstZG9jLXBsdWdpbnMubWFrCkBAIC0xNzQsNyArMTc0LDcgQEAKIHNnbWwtYnVpbGQuc3RhbXA6IHNjYW4tYnVpbGQuc3RhbXAgJChDRklMRV9HTE9CKSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9wbHVnaW5zLnhzbCAkKGV4cGFuZF9jb250ZW50X2ZpbGVzKQogCUBlY2hvICcgIERPQyAgIEJ1aWxkaW5nIFhNTCcKIAlALW1rZGlyIC1wIHhtbAotCUBmb3IgYSBpbiAkKHNyY2RpcikvJChJTlNQRUNUX0RJUikvKi54bWw7IGRvIFwKKwlAZm9yIGEgaW4gJChpbnNwZWN0X2ZpbGVzKTsgZG8gXAogCSAgICB4c2x0cHJvYyAtLXN0cmluZ3BhcmFtIG1vZHVsZSAkKE1PRFVMRSkgXAogCQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9wbHVnaW5zLnhzbCAkJGEgPiB4bWwvYGJhc2VuYW1lICQkYWA7IGRvbmUKIAlAZm9yIGYgaW4gJChFWEFNUExFX0NGSUxFUyk7IGRvIFwKZGlmZiAtLWdpdCBhL2NvbW1vbi9ndGstZG9jLm1hayBiL2NvbW1vbi9ndGstZG9jLm1hawppbmRleCBmOGVkZjQwLi4yYWFiM2E5IDEwMDY0NAotLS0gYS9jb21tb24vZ3RrLWRvYy5tYWsKKysrIGIvY29tbW9uL2d0ay1kb2MubWFrCkBAIC05NywxNyArOTcsMTggQEAKIAkgICAgICAgICAgICBzY2Fub2JqX29wdGlvbnM9Ii0tdmVyYm9zZSI7IFwKIAkgICAgICAgIGZpOyBcCiAJICAgIGZpOyBcCi0JICAgIEdTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wPWBjZCAkKHRvcF9idWlsZGRpcikgJiYgcHdkYAkJXAotCSAgICBHU1RfUExVR0lOX1BBVEhfMV8wPQkJCQkJCVwKKwkgICAgR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzA9YGNkICQodG9wX2J1aWxkZGlyKSAmJiBwd2RgCVwKKwkgICAgR1NUX1BMVUdJTl9QQVRIXzFfMD0JCQkJCVwKIAkgICAgR1NUX1JFR0lTVFJZXzFfMD1kb2MtcmVnaXN0cnkueG1sCQkJCVwKIAkgICAgJChHVEtET0NfRVhUUkFfRU5WSVJPTk1FTlQpCQkJCQlcCiAJICAgIENDPSIkKEdUS0RPQ19DQykiIExEPSIkKEdUS0RPQ19MRCkiIFJVTj0iJChHVEtET0NfUlVOKSIJXAogCSAgICBDRkxBR1M9IiQoR1RLRE9DX0NGTEFHUykgJChDRkxBR1MpIgkJCQlcCiAJICAgIExERkxBR1M9IiQoR1RLRE9DX0xJQlMpICQoTERGTEFHUykiCQkJCVwKIAkgICAgZ3RrZG9jLXNjYW5nb2JqIC0tdHlwZS1pbml0LWZ1bmM9ImdzdF9pbml0KE5VTEwsTlVMTCkiCVwKLQkgICAgICAgICQkc2Nhbm9ial9vcHRpb25zIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgOwkJCQlcCisJICAgICAgICAkJHNjYW5vYmpfb3B0aW9ucyAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIDsJCVwKIAllbHNlCQkJCQkJCQlcCiAJICAgIGZvciBpIGluICQoU0NBTk9CSl9GSUxFUykgOyBkbwkJCQlcCisJICAgICAgICQoTUtESVJfUCkgJChkaXJuYW1lICQkaSkgOwkJCQlcCiAJICAgICAgIHRlc3QgLWYgJCRpIHx8IHRvdWNoICQkaSA7CQkJCVwKIAkgICAgZG9uZQkJCQkJCQlcCiAJZmkKZGlmZiAtLWdpdCBhL2NvbW1vbi9tNC9NYWtlZmlsZS5pbiBiL2NvbW1vbi9tNC9NYWtlZmlsZS5pbgppbmRleCA0NDFkNmZjLi5kNGVjMjhjIDEwMDY0NAotLS0gYS9jb21tb24vbTQvTWFrZWZpbGUuaW4KKysrIGIvY29tbW9uL200L01ha2VmaWxlLmluCkBAIC0xMTQsMTYgKzExNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMTg4LDYgKzE4Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjI1LDYgKzIyNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjMzLDcgKzIzNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTI1Miw4ICsyNTQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMjcwLDE2ICsyNzMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzA1LDYgKzMwOSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTMzMCw2ICszMzYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00MzEsNiArNDM5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTQ0NCw4ICs0NTMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC00NjEsNiArNDY4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTUxOCwxNiArNTI3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNTc5LDYgKzU5MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC01ODksNiArNjAxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNTk4LDYgKzYxMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02MzUsNyArNjUwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9jb21tb24vbTQvZ3N0LWFyZ3MubTQgYi9jb21tb24vbTQvZ3N0LWFyZ3MubTQKaW5kZXggYjQ3OGM4Mi4uMDYyODEyMyAxMDA2NDQKLS0tIGEvY29tbW9uL200L2dzdC1hcmdzLm00CisrKyBiL2NvbW1vbi9tNC9nc3QtYXJncy5tNApAQCAtMzU4LDMgKzM1OCwyOSBAQAogICAgICAgZmkKICAgICBdKQogXSkKKworZG5sIEVuYWJsZSBleHRyYSBjaGVja3MgYnkgZGVmYXVsdCBvbmx5IGZvciBkZXZlbG9wbWVudCB2ZXJzaW9ucworQUNfREVGVU4oW0FHX0dTVF9BUkdfRU5BQkxFX0VYVFJBX0NIRUNLU10sCitbCisgIEFDX0FSR19FTkFCTEUoZXh0cmEtY2hlY2ssCisgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWV4dHJhLWNoZWNrc10sCisgICAgICAgICAgICAgICAgICAgW0VuYWJsZSBleHRyYSBydW50aW1lIGNoZWNrc10pLAorICAgIFsKKyAgICAgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKyAgICAgICAgeWVzKSBFWFRSQV9DSEVDS1M9eWVzIDs7CisgICAgICAgIG5vKSAgRVhUUkFfQ0hFQ0tTPW5vIDs7CisgICAgICAgICopICAgQUNfTVNHX0VSUk9SKGJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLWV4dHJhLWNoZWNrcykgOzsKKyAgICAgIGVzYWMKKyAgICBdLAorICAgIFsKKyAgICAgIGlmIHRlc3QgInhgZXhwciAkUEFDS0FHRV9WRVJTSU9OX01JTk9SICUgMmAiID0gIngxIiAtYSAieGBleHByICRQQUNLQUdFX1ZFUlNJT05fTUlDUk8gJzwnIDkwYCIgPSAieDEiOyB0aGVuCisgICAgICAgIEVYVFJBX0NIRUNLUz15ZXMKKyAgICAgIGVsc2UKKyAgICAgICAgRVhUUkFfQ0hFQ0tTPW5vCisgICAgICBmaQorICAgIF0pCisKKyAgICBpZiB0ZXN0ICJ4JEVYVFJBX0NIRUNLUyIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgQUNfREVGSU5FKEdTVF9FTkFCTEVfRVhUUkFfQ0hFQ0tTLCAxLCBbRGVmaW5lIGlmIGV4dHJhIHJ1bnRpbWUgY2hlY2tzIHNob3VsZCBiZSBlbmFibGVkXSkKKyAgICBmaQorXSkKZGlmZiAtLWdpdCBhL2NvbW1vbi9tNC9nc3QtZXJyb3IubTQgYi9jb21tb24vbTQvZ3N0LWVycm9yLm00CmluZGV4IGQ2NDg3Y2MuLjAwNjc1ODggMTAwNjQ0Ci0tLSBhL2NvbW1vbi9tNC9nc3QtZXJyb3IubTQKKysrIGIvY29tbW9uL200L2dzdC1lcnJvci5tNApAQCAtNTIsMzEgKzUyLDYgQEAKICAgaWYgdGVzdCAieCQxIiAhPSAieG5vIgogICB0aGVuCiAgICAgQVNfQ09NUElMRVJfRkxBRygtV2Vycm9yLCBFUlJPUl9DRkxBR1M9IiRFUlJPUl9DRkxBR1MgLVdlcnJvciIpCi0KLSAgICBkbmwgaWYgLVdlcnJvciBpc24ndCBzdXBvcnRlZCwgdHJ5IC1lcnJ3YXJuPSVhbGwgKFN1biBGb3J0ZSBjYXNlKQotICAgIGlmIHRlc3QgIngkRVJST1JfQ0ZMQUdTIiA9ICJ4IgotICAgIHRoZW4KLSAgICAgIEFTX0NPTVBJTEVSX0ZMQUcoWy1lcnJ3YXJuPSVhbGxdLCBbCi0gICAgICAgICAgRVJST1JfQ0ZMQUdTPSItZXJyd2Fybj0lYWxsIgotICAgICAgICAgIGRubCB0cnkgLWVycndhcm49JWFsbCxubyVFX0VNUFRZX0RFQ0xBUkFUSU9OLAotICAgICAgICAgIGRubCBubyVFX1NUQVRFTUVOVF9OT1RfUkVBQ0hFRCxubyVFX0FSR1VFTUVOVF9NSVNNQVRDSCwKLSAgICAgICAgICBkbmwgbm8lRV9NQUNST19SRURFRklORUQgKFN1biBGb3J0ZSBjYXNlKQotICAgICAgICAgIGRubCBGb3IgRm9ydGUgd2UgbmVlZCBkaXNhYmxlICJlbXB0eSBkZWNsYXJhdGlvbiIgd2FybmluZyBwcm9kdWNlZCBieSB1bi1uZWVkZWQgc2VtaWNvbG9uCi0gICAgICAgICAgZG5sICJzdGF0ZW1lbnQgbm90IHJlYWNoZWQiIGRpc2FibGVkIGJlY2F1c2UgdGhlcmUgaXMgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCkgaW4gc29tZSBwbGFjZXMKLSAgICAgICAgICBkbmwgIm1hY3JvIHJlZGVmaW5lZCIgYmVjYXVzZSBvZiBnc3QvZ2V0dGV4dC5oCi0gICAgICAgICAgZG5sIEZJWE1FOiBpcyBpdCByZWFsbHkgc3VwcG9zZWQgdG8gYmUgJ0FSR1VFTUVOVCcgYW5kIG5vdCAnQVJHVU1FTlQnPwotICAgICAgICAgIGZvciBmIGluICdubyVFX0VNUFRZX0RFQ0xBUkFUSU9OJyBcCi0gICAgICAgICAgICAgICAgICAgJ25vJUVfU1RBVEVNRU5UX05PVF9SRUFDSEVEJyBcCi0gICAgICAgICAgICAgICAgICAgJ25vJUVfQVJHVUVNRU5UX01JU01BVENIJyBcCi0gICAgICAgICAgICAgICAgICAgJ25vJUVfTUFDUk9fUkVERUZJTkVEJyBcCi0gICAgICAgICAgICAgICAgICAgJ25vJUVfTE9PUF9OT1RfRU5URVJFRF9BVF9UT1AnCi0gICAgICAgICAgZG8KLSAgICAgICAgICAgIEFTX0NPTVBJTEVSX0ZMQUcoWy1lcnJ3YXJuPSVhbGwsJGZdLCBbCi0gICAgICAgICAgICAgIEVSUk9SX0NGTEFHUz0iJEVSUk9SX0NGTEFHUywkZiIKLSAgICAgICAgICAgIF0pCi0gICAgICAgICAgZG9uZQotICAgICAgXSkKLSAgICBmaQogICBmaQogCiAgIGlmIHRlc3QgIngkMiIgIT0gIngiCkBAIC0xNDIsMjggKzExNyw2IEBACiAJICBBU19DWFhfQ09NUElMRVJfRkxBRyhbLWZuby1zdHJpY3QtYWxpYXNpbmddLAogCSAgICBFUlJPUl9DWFhGTEFHUz0iJEVSUk9SX0NYWEZMQUdTIC1mbm8tc3RyaWN0LWFsaWFzaW5nIikKIAkgIF0pCi0gICAgZWxzZQotICAgICAgZG5sIGlmIC1XZXJyb3IgaXNuJ3Qgc3Vwb3J0ZWQsIHRyeSAtZXJyd2Fybj0lYWxsCi0gICAgICBBU19DWFhfQ09NUElMRVJfRkxBRyhbLWVycndhcm49JWFsbF0sIEVSUk9SX0NYWEZMQUdTPSIkRVJST1JfQ1hYRkxBR1MgLWVycndhcm49JWFsbCIpCi0gICAgICBpZiB0ZXN0ICJ4JEVSUk9SX0NYWEZMQUdTIiAhPSAieCI7IHRoZW4KLSAgICAgICAgZG5sIHRyeSAtZXJyd2Fybj0lYWxsLG5vJUVfRU1QVFlfREVDTEFSQVRJT04sCi0gICAgICAgIGRubCBubyVFX1NUQVRFTUVOVF9OT1RfUkVBQ0hFRCxubyVFX0FSR1VFTUVOVF9NSVNNQVRDSCwKLSAgICAgICAgZG5sIG5vJUVfTUFDUk9fUkVERUZJTkVEIChTdW4gRm9ydGUgY2FzZSkKLSAgICAgICAgZG5sIEZvciBGb3J0ZSB3ZSBuZWVkIGRpc2FibGUgImVtcHR5IGRlY2xhcmF0aW9uIiB3YXJuaW5nIHByb2R1Y2VkIGJ5IHVuLW5lZWRlZCBzZW1pY29sb24KLSAgICAgICAgZG5sICJzdGF0ZW1lbnQgbm90IHJlYWNoZWQiIGRpc2FibGVkIGJlY2F1c2UgdGhlcmUgaXMgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCkgaW4gc29tZSBwbGFjZXMKLSAgICAgICAgZG5sICJtYWNybyByZWRlZmluZWQiIGJlY2F1c2Ugb2YgZ3N0L2dldHRleHQuaAotICAgICAgICBkbmwgRklYTUU6IGlzIGl0IHJlYWxseSBzdXBwb3NlZCB0byBiZSAnQVJHVUVNRU5UJyBhbmQgbm90ICdBUkdVTUVOVCc/Ci0gICAgICAgIGRubCBGSVhNRTogZG8gYW55IG9mIHRoZXNlIHdvcmsgd2l0aCB0aGUgYysrIGNvbXBpbGVyPyBpZiBub3QsIHdoeQotICAgICAgICBkbmwgZG8gd2UgY2hlY2sgYXQgYWxsPwotICAgICAgICBmb3IgZiBpbiAnbm8lRV9FTVBUWV9ERUNMQVJBVElPTicgXAotICAgICAgICAgICAgICAgICAnbm8lRV9TVEFURU1FTlRfTk9UX1JFQUNIRUQnIFwKLSAgICAgICAgICAgICAgICAgJ25vJUVfQVJHVUVNRU5UX01JU01BVENIJyBcCi0gICAgICAgICAgICAgICAgICdubyVFX01BQ1JPX1JFREVGSU5FRCcgXAotICAgICAgICAgICAgICAgICAnbm8lRV9MT09QX05PVF9FTlRFUkVEX0FUX1RPUCcKLSAgICAgICAgZG8KLSAgICAgICAgICBBU19DWFhfQ09NUElMRVJfRkxBRyhbLWVycndhcm49JWFsbCwkZl0sIFtFUlJPUl9DWFhGTEFHUz0iJEVSUk9SX0NYWEZMQUdTLCRmIl0pCi0gICAgICAgIGRvbmUKLSAgICAgIGZpCiAgICAgZmkKICAgZmkKIApAQCAtMjI3LDI4ICsxODAsNiBAQAogCSAgQVNfT0JKQ19DT01QSUxFUl9GTEFHKFstZm5vLXN0cmljdC1hbGlhc2luZ10sCiAJICAgIEVSUk9SX09CSkNGTEFHUz0iJEVSUk9SX09CSkNGTEFHUyAtZm5vLXN0cmljdC1hbGlhc2luZyIpCiAJICBdKQotICAgIGVsc2UKLSAgICAgIGRubCBpZiAtV2Vycm9yIGlzbid0IHN1cG9ydGVkLCB0cnkgLWVycndhcm49JWFsbAotICAgICAgQVNfT0JKQ19DT01QSUxFUl9GTEFHKFstZXJyd2Fybj0lYWxsXSwgRVJST1JfT0JKQ0ZMQUdTPSIkRVJST1JfT0JKQ0ZMQUdTIC1lcnJ3YXJuPSVhbGwiKQotICAgICAgaWYgdGVzdCAieCRFUlJPUl9PQkpDRkxBR1MiICE9ICJ4IjsgdGhlbgotICAgICAgICBkbmwgdHJ5IC1lcnJ3YXJuPSVhbGwsbm8lRV9FTVBUWV9ERUNMQVJBVElPTiwKLSAgICAgICAgZG5sIG5vJUVfU1RBVEVNRU5UX05PVF9SRUFDSEVELG5vJUVfQVJHVUVNRU5UX01JU01BVENILAotICAgICAgICBkbmwgbm8lRV9NQUNST19SRURFRklORUQgKFN1biBGb3J0ZSBjYXNlKQotICAgICAgICBkbmwgRm9yIEZvcnRlIHdlIG5lZWQgZGlzYWJsZSAiZW1wdHkgZGVjbGFyYXRpb24iIHdhcm5pbmcgcHJvZHVjZWQgYnkgdW4tbmVlZGVkIHNlbWljb2xvbgotICAgICAgICBkbmwgInN0YXRlbWVudCBub3QgcmVhY2hlZCIgZGlzYWJsZWQgYmVjYXVzZSB0aGVyZSBpcyBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKSBpbiBzb21lIHBsYWNlcwotICAgICAgICBkbmwgIm1hY3JvIHJlZGVmaW5lZCIgYmVjYXVzZSBvZiBnc3QvZ2V0dGV4dC5oCi0gICAgICAgIGRubCBGSVhNRTogaXMgaXQgcmVhbGx5IHN1cHBvc2VkIHRvIGJlICdBUkdVRU1FTlQnIGFuZCBub3QgJ0FSR1VNRU5UJz8KLSAgICAgICAgZG5sIEZJWE1FOiBkbyBhbnkgb2YgdGhlc2Ugd29yayB3aXRoIHRoZSBjKysgY29tcGlsZXI/IGlmIG5vdCwgd2h5Ci0gICAgICAgIGRubCBkbyB3ZSBjaGVjayBhdCBhbGw/Ci0gICAgICAgIGZvciBmIGluICdubyVFX0VNUFRZX0RFQ0xBUkFUSU9OJyBcCi0gICAgICAgICAgICAgICAgICdubyVFX1NUQVRFTUVOVF9OT1RfUkVBQ0hFRCcgXAotICAgICAgICAgICAgICAgICAnbm8lRV9BUkdVRU1FTlRfTUlTTUFUQ0gnIFwKLSAgICAgICAgICAgICAgICAgJ25vJUVfTUFDUk9fUkVERUZJTkVEJyBcCi0gICAgICAgICAgICAgICAgICdubyVFX0xPT1BfTk9UX0VOVEVSRURfQVRfVE9QJwotICAgICAgICBkbwotICAgICAgICAgIEFTX09CSkNfQ09NUElMRVJfRkxBRyhbLWVycndhcm49JWFsbCwkZl0sIFtFUlJPUl9PQkpDRkxBR1M9IiRFUlJPUl9PQkpDRkxBR1MsJGYiXSkKLSAgICAgICAgZG9uZQotICAgICAgZmkKICAgICBmaQogICBmaQogCmRpZmYgLS1naXQgYS9jb21tb24vbTQvZ3N0LWdsaWIyLm00IGIvY29tbW9uL200L2dzdC1nbGliMi5tNAppbmRleCA1YjljZDhiLi41YjcyNTA3IDEwMDY0NAotLS0gYS9jb21tb24vbTQvZ3N0LWdsaWIyLm00CisrKyBiL2NvbW1vbi9tNC9nc3QtZ2xpYjIubTQKQEAgLTUxLDE4ICs1MSw5IEBACiAgIGZpCiAKICAgQUNfQVJHX0VOQUJMRShnbGliLWFzc2VydHMsCi0gICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWdsaWItYXNzZXJ0c1s9QDw6QG5vL2F1dG8veWVzQDo+QF1dLAorICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbGliLWFzc2VydHNbPUA8OkBuby95ZXNAOj5AXV0sCiAgICAgICBbRW5hYmxlIEdMaWIgYXNzZXJ0aW9uXSksW2VuYWJsZV9nbGliX2Fzc2VydGlvbnM9JGVuYWJsZXZhbF0sCi0gICAgW2VuYWJsZV9nbGliX2Fzc2VydGlvbnM9YXV0b10pCi0KLSAgaWYgdGVzdCAieCRlbmFibGVfZ2xpYl9hc3NlcnRpb25zIiA9ICJ4YXV0byI7IHRoZW4KLSAgICBkbmwgRW5hYmxlIGFzc2VydGlvbnMgb25seSBmb3IgZGV2ZWxvcG1lbnQgdmVyc2lvbnMKLSAgICBpZiB0ZXN0ICJ4YGV4cHIgJFBBQ0tBR0VfVkVSU0lPTl9NSU5PUiAlIDJgIiA9ICJ4MSIgLWEgInhgZXhwciAkUEFDS0FHRV9WRVJTSU9OX01JQ1JPICc8JyA5MGAiID0gIngxIjsgdGhlbgotICAgICAgZW5hYmxlX2dsaWJfYXNzZXJ0aW9ucz15ZXMKLSAgICBlbHNlCi0gICAgICBlbmFibGVfZ2xpYl9hc3NlcnRpb25zPW5vCi0gICAgZmkKLSAgZmkKKyAgICBbZW5hYmxlX2dsaWJfYXNzZXJ0aW9ucz15ZXNdKQogCiAgIGlmIHRlc3QgIngkZW5hYmxlX2dsaWJfYXNzZXJ0aW9ucyIgPSAieG5vIjsgdGhlbgogICAgIEdMSUJfRVhUUkFfQ0ZMQUdTPSIkR0xJQl9FWFRSQV9DRkxBR1MgLURHX0RJU0FCTEVfQVNTRVJUIgpkaWZmIC0tZ2l0IGEvY29tbW9uL200L2dzdC1wYWNrYWdlLXJlbGVhc2UtZGF0ZXRpbWUubTQgYi9jb21tb24vbTQvZ3N0LXBhY2thZ2UtcmVsZWFzZS1kYXRldGltZS5tNAppbmRleCBiYzg4NWUzLi40Y2Y0NGU2IDEwMDY0NAotLS0gYS9jb21tb24vbTQvZ3N0LXBhY2thZ2UtcmVsZWFzZS1kYXRldGltZS5tNAorKysgYi9jb21tb24vbTQvZ3N0LXBhY2thZ2UtcmVsZWFzZS1kYXRldGltZS5tNApAQCAtMjcsMTQgKzI3LDE2IEBACiBBQ19ERUZVTihbQUdfR1NUX1NFVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUVdLAogWwogICBkbmwgQUdfR1NUX1NFVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUUoKQotICBkbmwgQUdfR1NUX1NFVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUUoW3llc10uLi4pCisgIGRubCBBR19HU1RfU0VUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRShbbm9dLi4uKQogICBpZiB0ZXN0ICJ4JDEiID0gInhubyIgLW8gIngkMSIgPSAieCI7IHRoZW4KICAgICBHU1RfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FPWBkYXRlIC11ICIrJVktJW0tJWRUJUg6JU1aImAKICAgZWxpZiB0ZXN0ICJ4JDEiID0gInh5ZXMiOyB0aGVuCi0gICAgZG5sIEFHX0dTVF9TRVRfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FKFtub10sIFsiWVlZWS1NTS1ERCJdKQotICAgIGRubCBBR19HU1RfU0VUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRShbbm9dLCBbRE9BUC1GSUxFXSwgW1JFTEVBU0UtVkVSU0lPTl0pCi0gICAgaWYgKCBlY2hvICQxIHwgZ3JlcCAnXjIwWzEtOV1bMC05XS1bMC0xXVswLTldLVswLTNdWzAtOV0nID4vZGV2L251bGwgKSA7IHRoZW4KLSAgICAgIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU9JDEKKyAgICBkbmwgQUdfR1NUX1NFVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUUoW3llc10sIFtZWVlZLU1NLUREXSkKKyAgICBkbmwgQUdfR1NUX1NFVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUUoW3llc10sIFtET0FQLUZJTEVdLCBbUkVMRUFTRS1WRVJTSU9OXSkKK2NoYW5nZXF1b3RlKDw8LCA+PilkbmwKKyAgICBpZiAoIGVjaG8gJDIgfCBncmVwICdeMjBbMS05XVswLTldLVswLTFdWzAtOV0tWzAtM11bMC05XScgPi9kZXYvbnVsbCApIDsgdGhlbgorY2hhbmdlcXVvdGUoWywgXSlkbmwKKyAgICAgIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU9JDIKICAgICBlbHNlCiAgICAgICBkbmwgd2UgYXNzdW1lIHRoZSAuZG9hcCBmaWxlIGNvbnRhaW5zIHRoZSBkYXRlIGFzIFlZWVktTU0tREQKICAgICAgIFlZWVlfTU1fREQ9YHNoICIke3NyY2Rpcn0vY29tbW9uL2V4dHJhY3QtcmVsZWFzZS1kYXRlLWZyb20tZG9hcC1maWxlIiAkMyAkMmA7CkBAIC00Nyw3ICs0OSw5IEBACiAgICAgICBmaQogICAgIGZpCiAgIGRubCBBR19HU1RfU0VUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRShbWVlZWS1NTS1ERF0pCitjaGFuZ2VxdW90ZSg8PCwgPj4pZG5sCiAgIGVsaWYgKCBlY2hvICQxIHwgZ3JlcCAnXjIwWzEtOV1bMC05XS1bMC0xXVswLTldLVswLTNdWzAtOV0nID4vZGV2L251bGwgKSA7IHRoZW4KK2NoYW5nZXF1b3RlKFssIF0pZG5sCiAgICAgR1NUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRT0kMQogICBlbHNlCiAgICAgQUNfTVNHX1dBUk4oW1NFVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU6IGludmFsaWQgZmlyc3QgYXJndW1lbnRdKQpkaWZmIC0tZ2l0IGEvY29tbW9uL3JlbGVhc2UubWFrIGIvY29tbW9uL3JlbGVhc2UubWFrCmluZGV4IDcxNTY1N2IuLmM4NGMyZjEgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9yZWxlYXNlLm1haworKysgYi9jb21tb24vcmVsZWFzZS5tYWsKQEAgLTE0LDYgKzE0LDkgQEAKIAlAaWYgWyAtZCAuLi93d3cvZGF0YS9zcmMgXTsgdGhlbiBcCiAJICBtdiAtdiAkKFBBQ0tBR0UpLSQoVkVSU0lPTikudGFyLnh6IC4uL3d3dy9kYXRhL3NyYy8kKFBBQ0tBR0UpLyA7IFwKIAkgIG12IC12ICQoUEFDS0FHRSktJChWRVJTSU9OKS50YXIueHouc2hhMjU2c3VtIC4uL3d3dy9kYXRhL3NyYy8kKFBBQ0tBR0UpLyA7IFwKKwllbGlmIFsgLWQgLi4vLi4vd3d3L2RhdGEvc3JjIF07IHRoZW4gXAorCSAgbXYgLXYgJChQQUNLQUdFKS0kKFZFUlNJT04pLnRhci54eiAuLi8uLi93d3cvZGF0YS9zcmMvJChQQUNLQUdFKS8gOyBcCisJICBtdiAtdiAkKFBBQ0tBR0UpLSQoVkVSU0lPTikudGFyLnh6LnNoYTI1NnN1bSAuLi8uLi93d3cvZGF0YS9zcmMvJChQQUNLQUdFKS8gOyBcCiAJZmkKIAlAZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKIApkaWZmIC0tZ2l0IGEvY29tbW9uL3dpbjMyLm1hayBiL2NvbW1vbi93aW4zMi5tYWsKaW5kZXggMzBlMzQ3ZS4uODdjZDM0NiAxMDA2NDQKLS0tIGEvY29tbW9uL3dpbjMyLm1haworKysgYi9jb21tb24vd2luMzIubWFrCkBAIC00NCw3ICs0NCwxMCBAQAogCSAgaWYgdGVzdCAieCQkbGlic28iICE9ICJ4IjsgdGhlbiBcCiAJICAgIGVjaG8gQ2hlY2tpbmcgc3ltYm9scyBpbiAkJGxpYnNvOyBcCiAJICAgIGlmICEgKCQodG9wX3NyY2RpcikvY29tbW9uL2NoZWNrLWV4cG9ydHMgJCRsaWJkZWYgJCRsaWJzbykgOyB0aGVuIFwKLQkgICAgICBmYWlsPTE7IFwKKwkgICAgICBlY2hvICIkJGxpYmRlZiI7IFwKKwkgICAgICBpZiB0ZXN0ICIkJGxpYmJhc2UiICE9ICJsaWJnc3RnbCI7IHRoZW4gXAorCSAgICAgICAgZmFpbD0xOyBcCisJICAgICAgZmk7IFwKIAkgICAgZmk7IFwKIAkgIGZpOyBcCiAJZG9uZSA7IFwKZGlmZiAtLWdpdCBhL2NvbmZpZy5oLmluIGIvY29uZmlnLmguaW4KaW5kZXggZTZmODRjYi4uM2U1YjNmNyAxMDA2NDQKLS0tIGEvY29uZmlnLmguaW4KKysrIGIvY29uZmlnLmguaW4KQEAgLTI4LDEyICsyOCw2IEBACiAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCiAjdW5kZWYgRU5BQkxFX05MUwogCi0vKiBUaGUgeCBpbiAyLnggKi8KLSN1bmRlZiBGQUFEMl9NSU5PUl9WRVJTSU9OCi0KLS8qIERlZmluZSBpZiBBQUMgaXMgdXNpbmcgbmV3IGFwaSBwcmVmaXggKi8KLSN1bmRlZiBGQUFEX0lTX05FQUFDCi0KIC8qIGdldHRleHQgcGFja2FnZSBuYW1lICovCiAjdW5kZWYgR0VUVEVYVF9QQUNLQUdFCiAKQEAgLTUyLDEyICs0NiwxOCBAQAogLyogR1N0cmVhbWVyIEFQSSBWZXJzaW9uICovCiAjdW5kZWYgR1NUX0FQSV9WRVJTSU9OCiAKKy8qIERlZmluZSBpZiBleHRyYSBydW50aW1lIGNoZWNrcyBzaG91bGQgYmUgZW5hYmxlZCAqLworI3VuZGVmIEdTVF9FTkFCTEVfRVhUUkFfQ0hFQ0tTCisKIC8qIEV4dHJhIHBsYXRmb3JtIHNwZWNpZmljIHBsdWdpbiBzdWZmaXggKi8KICN1bmRlZiBHU1RfRVhUUkFfTU9EVUxFX1NVRkZJWAogCiAvKiBEZWZpbmVkIGlmIGdjb3YgaXMgZW5hYmxlZCB0byBmb3JjZSBhIHJlYnVpbGQgZHVlIHRvIGNvbmZpZy5oIGNoYW5naW5nICovCiAjdW5kZWYgR1NUX0dDT1ZfRU5BQkxFRAogCisvKiBETUFCVUYgYXZhaWxhYmxlIGZvciBnbCBwbHVnaW5zICovCisjdW5kZWYgR1NUX0dMX0hBVkVfRE1BQlVGCisKIC8qIEVHTCBtb2R1bGUgbmFtZSAqLwogI3VuZGVmIEdTVF9HTF9MSUJFR0xfTU9EVUxFX05BTUUKIApAQCAtMjM1LDcgKzIzNSw3IEBACiAvKiBEZWZpbmUgdG8gZW5hYmxlIEFBQyBlbmNvZGVyIHBsdWctaW4gKHVzZWQgYnkgZmFhYykuICovCiAjdW5kZWYgSEFWRV9GQUFDCiAKLS8qIERlZmluZSB0byBlbmFibGUgQUFDIGRlY29kZXIgcGx1Zy1pbiAodXNlZCBieSBmYWFkKS4gKi8KKy8qIERlZmluZSB0byBlbmFibGUgRkFBRDIgQUFDIGRlY29kZXIgcGx1Zy1pbiAodXNlZCBieSBmYWFkKS4gKi8KICN1bmRlZiBIQVZFX0ZBQUQKIAogLyogRGVmaW5lIHRvIGVuYWJsZSBsaW51eCBmcmFtZWJ1ZmZlciAodXNlZCBieSBmYmRldnNpbmspLiAqLwpAQCAtMjcxLDYgKzI3MSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgR0xlZ2xJbWFnZU9FUycuICovCiAjdW5kZWYgSEFWRV9HTEVHTElNQUdFT0VTCiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBHTGludDY0Jy4gKi8KKyN1bmRlZiBIQVZFX0dMSU5UNjQKKwogLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYEdMaW50cHRyJy4gKi8KICN1bmRlZiBIQVZFX0dMSU5UUFRSCiAKQEAgLTI5Miw5ICsyOTUsNiBAQAogLyogVXNlIGdyYXBoZW5lICovCiAjdW5kZWYgSEFWRV9HUkFQSEVORQogCi0vKiBEZWZpbmUgdG8gZW5hYmxlIEdTZXR0aW5ncyBwbHVnaW4gKHVzZWQgYnkgZ3NldHRpbmdzKS4gKi8KLSN1bmRlZiBIQVZFX0dTRVRUSU5HUwotCiAvKiBEZWZpbmUgdG8gZW5hYmxlIEdTTSBsaWJyYXJ5ICh1c2VkIGJ5IGdzbWVuYyBnc21kZWMpLiAqLwogI3VuZGVmIEhBVkVfR1NNCiAKQEAgLTM3Niw5ICszNzYsNiBAQAogLyogRGVmaW5lIHRvIGVuYWJsZSBtcGVnMmVuYyAodXNlZCBieSBtcGVnMmVuYykuICovCiAjdW5kZWYgSEFWRV9NUEVHMkVOQwogCi0vKiBEZWZpbmUgdG8gZW5hYmxlIG1wZzEyMyBhdWRpbyBkZWNvZGVyICh1c2VkIGJ5IG1wZzEyMykuICovCi0jdW5kZWYgSEFWRV9NUEcxMjMKLQogLyogRGVmaW5lIHRvIGVuYWJsZSBtcGxleCAodXNlZCBieSBtcGxleCkuICovCiAjdW5kZWYgSEFWRV9NUExFWAogCkBAIC00MDYsNiArNDAzLDEyIEBACiAvKiBEZWZpbmUgaWYgbmV0dGxlIGlzIGF2YWlsYWJsZSAqLwogI3VuZGVmIEhBVkVfTkVUVExFCiAKKy8qIERlZmluZSB0byBlbmFibGUgTlZJRElBIEVuY29kZSBBUEkgKHVzZWQgYnkgbnZlbmMpLiAqLworI3VuZGVmIEhBVkVfTlZFTkMKKworLyogTlZFTkMgR1N0cmVhbWVyIE9wZW5HTCBzdXBwb3J0IGF2YWlsYWJsZSAqLworI3VuZGVmIEhBVkVfTlZFTkNfR1NUX0dMCisKIC8qIERlZmluZSB0byBlbmFibGUgb2ZhIHBsdWdpbnMgKHVzZWQgYnkgb2ZhKS4gKi8KICN1bmRlZiBIQVZFX09GQQogCkBAIC00OTgsNiArNTAxLDE1IEBACiAvKiBEZWZpbmUgdG8gZW5hYmxlIFF0IGVsZW1lbnRzICh1c2VkIGJ5IHF0KS4gKi8KICN1bmRlZiBIQVZFX1FUCiAKKy8qIERlZmluZSBpZiBRdCBBbmRyb2lkIGludGVncmF0aW9uIGlzIGluc3RhbGxlZCAqLworI3VuZGVmIEhBVkVfUVRfQU5EUk9JRAorCisvKiBEZWZpbmUgaWYgUXQgaU9TIGludGVncmF0aW9uIGlzIGluc3RhbGxlZCAqLworI3VuZGVmIEhBVkVfUVRfSU9TCisKKy8qIERlZmluZSBpZiBRdCBNYWMgaW50ZWdyYXRpb24gaXMgaW5zdGFsbGVkICovCisjdW5kZWYgSEFWRV9RVF9NQUMKKwogLyogRGVmaW5lIGlmIFF0IFdheWxhbmQgaW50ZWdyYXRpb24gaXMgaW5zdGFsbGVkICovCiAjdW5kZWYgSEFWRV9RVF9XQVlMQU5ECiAKQEAgLTUxMyw5ICs1MjUsNiBAQAogLyogRGVmaW5lIHRvIGVuYWJsZSByc3ZnIGRlY29kZXIgKHVzZWQgYnkgcnN2ZykuICovCiAjdW5kZWYgSEFWRV9SU1ZHCiAKLS8qIEhhdmUgUlNWRyAyLjM2LjIgb3IgbmV3ZXIgKi8KLSN1bmRlZiBIQVZFX1JTVkdfMl8zNl8yCi0KIC8qIERlZmluZSB0byBlbmFibGUgcnRtcCBsaWJyYXJ5ICh1c2VkIGJ5IHJ0bXApLiAqLwogI3VuZGVmIEhBVkVfUlRNUAogCkBAIC01OTcsNiArNjA2LDkgQEAKIC8qIERlZmluZSB0byBlbmFibGUgdGltaWRpdHkgbWlkaSBzb2Z0IHN5bnRoIHBsdWdpbiAodXNlZCBieSB0aW1pZGl0eSkuICovCiAjdW5kZWYgSEFWRV9USU1JRElUWQogCisvKiBEZWZpbmUgdG8gZW5hYmxlIHRpbnlhbHNhICh1c2VkIGJ5IHRpbnlhbHNhKS4gKi8KKyN1bmRlZiBIQVZFX1RJTllBTFNBCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVU5JU1REX0gKIApAQCAtNjI0LDYgKzYzNiw5IEBACiAvKiBEZWZpbmUgdG8gZW5hYmxlIHZvLWFtcndiZW5jIGxpYnJhcnkgKHVzZWQgYnkgdm8tYW1yd2JlbmMpLiAqLwogI3VuZGVmIEhBVkVfVk9BTVJXQkVOQwogCisvKiBEZWZpbmUgdG8gZW5hYmxlIFZ1bGthbiBlbGVtZW50cyAodXNlZCBieSB2dWxrYW4pLiAqLworI3VuZGVmIEhBVkVfVlVMS0FOCisKIC8qIERlZmluZSB0byBlbmFibGUgV0FTQVBJIHBsdWctaW4gKHVzZWQgYnkgd2FzYXBpKS4gKi8KICN1bmRlZiBIQVZFX1dBU0FQSQogCkBAIC02ODcsOCArNzAyLDcgQEAKIC8qIGdldHRleHQgbG9jYWxlIGRpciAqLwogI3VuZGVmIExPQ0FMRURJUgogCi0vKiBEZWZpbmUgdG8gdGhlIHN1Yi1kaXJlY3RvcnkgaW4gd2hpY2ggbGlidG9vbCBzdG9yZXMgdW5pbnN0YWxsZWQgbGlicmFyaWVzLgotICAgKi8KKy8qIERlZmluZSB0byB0aGUgc3ViLWRpcmVjdG9yeSB3aGVyZSBsaWJ0b29sIHN0b3JlcyB1bmluc3RhbGxlZCBsaWJyYXJpZXMuICovCiAjdW5kZWYgTFRfT0JKRElSCiAKIC8qIERlZmluZSBpZiB0aGUgb2xkIE11c2VQYWNrIEFQSSBpcyB1c2VkICovCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggNTk2OGYwNi4uOTYyNzAxNCAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMSw2ICsxLDYgQEAKICMhIC9iaW4vc2gKICMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KLSMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZvciBHU3RyZWFtZXIgQmFkIFBsdWctaW5zIDEuNi4zLgorIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIEdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgMS43LjkxLgogIwogIyBSZXBvcnQgYnVncyB0byA8aHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R1N0cmVhbWVyPi4KICMKQEAgLTU5MSw4ICs1OTEsOCBAQAogIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCiBQQUNLQUdFX05BTUU9J0dTdHJlYW1lciBCYWQgUGx1Zy1pbnMnCiBQQUNLQUdFX1RBUk5BTUU9J2dzdC1wbHVnaW5zLWJhZCcKLVBBQ0tBR0VfVkVSU0lPTj0nMS42LjMnCi1QQUNLQUdFX1NUUklORz0nR1N0cmVhbWVyIEJhZCBQbHVnLWlucyAxLjYuMycKK1BBQ0tBR0VfVkVSU0lPTj0nMS43LjkxJworUEFDS0FHRV9TVFJJTkc9J0dTdHJlYW1lciBCYWQgUGx1Zy1pbnMgMS43LjkxJwogUEFDS0FHRV9CVUdSRVBPUlQ9J2h0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUdTdHJlYW1lcicKIFBBQ0tBR0VfVVJMPScnCiAKQEAgLTY1OCwyNCArNjU4LDE2IEBACiBYMjY1X0NGTEFHUwogVVNFX0hMU19GQUxTRQogVVNFX0hMU19UUlVFCi1MSUJHQ1JZUFRfTElCUwotTElCR0NSWVBUX0NGTEFHUwogT1BFTlNTTF9MSUJTCiBPUEVOU1NMX0NGTEFHUworTElCR0NSWVBUX0xJQlMKK0xJQkdDUllQVF9DRkxBR1MKIExJQkdDUllQVF9DT05GSUcKIE5FVFRMRV9MSUJTCiBORVRUTEVfQ0ZMQUdTCiBVU0VfU05ESU9fRkFMU0UKIFVTRV9TTkRJT19UUlVFCiBTTkRJT19MSUJTCi1VU0VfR1NFVFRJTkdTX0ZBTFNFCi1VU0VfR1NFVFRJTkdTX1RSVUUKLUdTRVRUSU5HU19SVUxFUwotR0xJQl9DT01QSUxFX1NDSEVNQVMKLWdzZXR0aW5nc3NjaGVtYWRpcgotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFCi1HU0VUVElOR1NfTElCUwotR1NFVFRJTkdTX0NGTEFHUwogVVNFX1NQQU5EU1BfRkFMU0UKIFVTRV9TUEFORFNQX1RSVUUKIFNQQU5EU1BfTElCUwpAQCAtNzQ3LDggKzczOSwxNyBAQAogVVNFX0xJQlZJU1VBTF9UUlVFCiBMSUJWSVNVQUxfTElCUwogTElCVklTVUFMX0NGTEFHUworVVNFX1ZVTEtBTl9GQUxTRQorVVNFX1ZVTEtBTl9UUlVFCitWVUxLQU5fTElCUwogVVNFX1FUX0ZBTFNFCiBVU0VfUVRfVFJVRQorUVRfTUFDX0xJQlMKK1FUX01BQ19DRkxBR1MKK0dOVVNUTF9MSUJTCitHTlVTVExfQ0ZMQUdTCitRVF9BTkRST0lEX0xJQlMKK1FUX0FORFJPSURfQ0ZMQUdTCiBRVF9XQVlMQU5EX0xJQlMKIFFUX1dBWUxBTkRfQ0ZMQUdTCiBRVF9YMTFfTElCUwpAQCAtNzcyLDggKzc3Myw2IEBACiBVU0VfR0xfVFJVRQogVVNFX1JTVkdfRkFMU0UKIFVTRV9SU1ZHX1RSVUUKLVJTVkdfMl8zNl8yX0xJQlMKLVJTVkdfMl8zNl8yX0NGTEFHUwogUlNWR19MSUJTCiBSU1ZHX0NGTEFHUwogVVNFX1BWUl9GQUxTRQpAQCAtODMxLDEwICs4MzAsNiBAQAogTVBMRVhfTERGTEFHUwogTVBMRVhfTElCUwogTVBMRVhfQ0ZMQUdTCi1VU0VfTVBHMTIzX0ZBTFNFCi1VU0VfTVBHMTIzX1RSVUUKLU1QRzEyM19MSUJTCi1NUEcxMjNfQ0ZMQUdTCiBVU0VfTVBFRzJFTkNfRkFMU0UKIFVTRV9NUEVHMkVOQ19UUlVFCiBNUEVHMkVOQ19MSUJTCkBAIC05MDEsNyArODk2LDYgQEAKIFVTRV9GQkRFVl9UUlVFCiBVU0VfRkFBRF9GQUxTRQogVVNFX0ZBQURfVFJVRQotRkFBRF9JU19ORUFBQwogRkFBRF9MSUJTCiBIQVZFX0ZBQUQKIFVTRV9GQUFDX0ZBTFNFCkBAIC05MjQsMTEgKzkxOCwxMSBAQAogVVNFX1dFQlBfVFJVRQogV0VCUF9MSUJTCiBXRUJQX0NGTEFHUwotd2F5bGFuZF9zY2FubmVyCiBVU0VfV0FZTEFORF9GQUxTRQogVVNFX1dBWUxBTkRfVFJVRQogV0FZTEFORF9MSUJTCiBXQVlMQU5EX0NGTEFHUword2F5bGFuZF9zY2FubmVyCiBVU0VfRElSRUNURkJfRkFMU0UKIFVTRV9ESVJFQ1RGQl9UUlVFCiBESVJFQ1RGQl9MSUJTCkBAIC05ODIsNiArOTc2LDIwIEBACiBVU0VfQVNTUkVOREVSX1RSVUUKIEFTU1JFTkRFUl9MSUJTCiBBU1NSRU5ERVJfQ0ZMQUdTCitVU0VfVElOWUFMU0FfRkFMU0UKK1VTRV9USU5ZQUxTQV9UUlVFCitVU0VfTlZFTkNfR1NUX0dMX0ZBTFNFCitVU0VfTlZFTkNfR1NUX0dMX1RSVUUKK1VTRV9OVkVOQ19GQUxTRQorVVNFX05WRU5DX1RSVUUKK05WRU5DT0RFX0xJQlMKK05WRU5DT0RFX0NGTEFHUworQ1VEQV9MSUJTCitDVURBX0NGTEFHUworR1NUX1BCVVRJTFNfTElCUworR1NUX1BCVVRJTFNfQ0ZMQUdTCitHU1RfVklERU9fTElCUworR1NUX1ZJREVPX0NGTEFHUwogTElCVURFVl9MSUJTCiBMSUJVREVWX0NGTEFHUwogVVNFX1VWQ0gyNjRfRkFMU0UKQEAgLTEwMzIsNiArMTA0MCwxMCBAQAogRElSRUNUU09VTkRfTElCUwogRElSRUNUWF9MREZMQUdTCiBESVJFQ1RYX0NGTEFHUworVVNFX1hDQl9GQUxTRQorVVNFX1hDQl9UUlVFCitYQ0JfTElCUworWENCX0NGTEFHUwogSEFWRV9KUEVHX0ZBTFNFCiBIQVZFX0pQRUdfVFJVRQogSEFWRV9KUEVHCkBAIC0xMDc4LDEyICsxMDkwLDE4IEBACiBVU0VfR0xFUzIKIFVTRV9PUEVOR0wKIEdMX09CSkNGTEFHUwotR0xfQ0ZMQUdTCi1HTF9MSUJTCitHU1RfQUxMT0NBVE9SU19MSUJTCitHU1RfQUxMT0NBVE9SU19DRkxBR1MKIFdBWUxBTkRfRUdMX0xJQlMKIFdBWUxBTkRfRUdMX0NGTEFHUwogSEFWRV9FR0wKK0VHTF9MSUJTCitFR0xfQ0ZMQUdTCiBIQVZFX0dMRVMyCitHTEVTMl9MSUJTCitHTEVTMl9DRkxBR1MKK0dMX0xJQlMKK0dMX0NGTEFHUwogSEFWRV9HTAogWF9MSUJTCiBYX0NGTEFHUwpAQCAtMTEyNyw4ICsxMTQ1LDYgQEAKIFVTRV9QTFVHSU5fU0RQX1RSVUUKIFVTRV9QTFVHSU5fU0RJX0ZBTFNFCiBVU0VfUExVR0lOX1NESV9UUlVFCi1VU0VfUExVR0lOX1JUUF9GQUxTRQotVVNFX1BMVUdJTl9SVFBfVFJVRQogVVNFX1BMVUdJTl9SRU1PVkVTSUxFTkNFX0ZBTFNFCiBVU0VfUExVR0lOX1JFTU9WRVNJTEVOQ0VfVFJVRQogVVNFX1BMVUdJTl9SQVdQQVJTRV9GQUxTRQpAQCAtMTE0Myw2ICsxMTU5LDggQEAKIFVTRV9QTFVHSU5fT05WSUZfVFJVRQogVVNFX1BMVUdJTl9OVVZERU1VWF9GQUxTRQogVVNFX1BMVUdJTl9OVVZERU1VWF9UUlVFCitVU0VfUExVR0lOX05FVFNJTV9GQUxTRQorVVNFX1BMVUdJTl9ORVRTSU1fVFJVRQogVVNFX1BMVUdJTl9NWEZfRkFMU0UKIFVTRV9QTFVHSU5fTVhGX1RSVUUKIFVTRV9QTFVHSU5fTVZFX0ZBTFNFCkBAIC0xMTU3LDggKzExNzUsNiBAQAogVVNFX1BMVUdJTl9NUEVHREVNVVhfVFJVRQogVVNFX1BMVUdJTl9NSURJX0ZBTFNFCiBVU0VfUExVR0lOX01JRElfVFJVRQotVVNFX1BMVUdJTl9MSVZFQURERVJfRkFMU0UKLVVTRV9QTFVHSU5fTElWRUFEREVSX1RSVUUKIFVTRV9QTFVHSU5fTElCUkZCX0ZBTFNFCiBVU0VfUExVR0lOX0xJQlJGQl9UUlVFCiBVU0VfUExVR0lOX0pQRUdGT1JNQVRfRkFMU0UKQEAgLTEyMjMsNiArMTIzOSw4IEBACiBVU0VfUExVR0lOX0FVRElPRlhCQURfVFJVRQogVVNFX1BMVUdJTl9BU0ZNVVhfRkFMU0UKIFVTRV9QTFVHSU5fQVNGTVVYX1RSVUUKK1VTRV9QTFVHSU5fVklERU9GUkFNRV9BVURJT0xFVkVMX0ZBTFNFCitVU0VfUExVR0lOX1ZJREVPRlJBTUVfQVVESU9MRVZFTF9UUlVFCiBVU0VfUExVR0lOX0FJRkZfRkFMU0UKIFVTRV9QTFVHSU5fQUlGRl9UUlVFCiBVU0VfUExVR0lOX0FEUENNRU5DX0ZBTFNFCkBAIC0xMjQzLDYgKzEyNjEsOSBAQAogV0FSTklOR19DWFhGTEFHUwogRVJST1JfQ0ZMQUdTCiBXQVJOSU5HX0NGTEFHUworV0lUSF9HU1RfUExBWUVSX1RFU1RTX0ZBTFNFCitXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRQorV0dFVAogR1NUX1BMVUdJTl9CVUlMRF9TVEFUSUNfRkFMU0UKIEdTVF9QTFVHSU5fQlVJTERfU1RBVElDX1RSVUUKIEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTCkBAIC0xNDg5LDYgKzE1MTAsNyBAQAogVVNFX05MUwogQUNMT0NBTF9BTUZMQUdTCiBDUFAKK0xUX1NZU19MSUJSQVJZX1BBVEgKIE9UT09MNjQKIE9UT09MCiBMSVBPCkBAIC0xNjI5LDYgKzE2NTEsNyBAQAogZW5hYmxlX3NoYXJlZAogd2l0aF9waWMKIGVuYWJsZV9mYXN0X2luc3RhbGwKK3dpdGhfYWl4X3NvbmFtZQogZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKIHdpdGhfZ251X2xkCiB3aXRoX3N5c3Jvb3QKQEAgLTE2NDIsNiArMTY2NSw3IEBACiB3aXRoX2xpYmljb252X3ByZWZpeAogd2l0aF9saWJpbnRsX3ByZWZpeAogZW5hYmxlX2ZhdGFsX3dhcm5pbmdzCitlbmFibGVfZXh0cmFfY2hlY2sKIGVuYWJsZV9kZWJ1ZwogZW5hYmxlX3Byb2ZpbGluZwogZW5hYmxlX3ZhbGdyaW5kCkBAIC0xNjYxLDggKzE2ODUsMTAgQEAKIGVuYWJsZV9nb2JqZWN0X2Nhc3RfY2hlY2tzCiBlbmFibGVfZ2xpYl9hc3NlcnRzCiB3aXRoX2d0aworZW5hYmxlX0JzeW1ib2xpYwogZW5hYmxlX29yYwogZW5hYmxlX3N0YXRpY19wbHVnaW5zCit3aXRoX3BsYXllcl90ZXN0cwogd2l0aF9kZWZhdWx0X2F1ZGlvc2luawogd2l0aF9kZWZhdWx0X2F1ZGlvc3JjCiB3aXRoX2RlZmF1bHRfdmlkZW9zaW5rCkBAIC0xNjcyLDYgKzE2OTgsNyBAQAogZW5hYmxlX2FkcGNtZGVjCiBlbmFibGVfYWRwY21lbmMKIGVuYWJsZV9haWZmCitlbmFibGVfdmlkZW9mcmFtZV9hdWRpb2xldmVsCiBlbmFibGVfYXNmbXV4CiBlbmFibGVfYXVkaW9meGJhZAogZW5hYmxlX2F1ZGlvbWl4ZXIKQEAgLTE3MDQsNyArMTczMSw2IEBACiBlbmFibGVfanAya2RlY2ltYXRvcgogZW5hYmxlX2pwZWdmb3JtYXQKIGVuYWJsZV9saWJyZmIKLWVuYWJsZV9saXZlYWRkZXIKIGVuYWJsZV9taWRpCiBlbmFibGVfbXBlZ2RlbXV4CiBlbmFibGVfbXBlZ3RzZGVtdXgKQEAgLTE3MTIsNiArMTczOCw3IEBACiBlbmFibGVfbXBlZ3BzbXV4CiBlbmFibGVfbXZlCiBlbmFibGVfbXhmCitlbmFibGVfbmV0c2ltCiBlbmFibGVfbnV2ZGVtdXgKIGVuYWJsZV9vbnZpZgogZW5hYmxlX3BhdGNoZGV0ZWN0CkBAIC0xNzE5LDcgKzE3NDYsNiBAQAogZW5hYmxlX3BubQogZW5hYmxlX3Jhd3BhcnNlCiBlbmFibGVfcmVtb3Zlc2lsZW5jZQotZW5hYmxlX3J0cAogZW5hYmxlX3NkaQogZW5hYmxlX3NkcAogZW5hYmxlX3NlZ21lbnRjbGlwCkBAIC0xNzYyLDYgKzE3ODgsOSBAQAogZW5hYmxlX3ZjZAogZW5hYmxlX29wZW5zbGVzCiBlbmFibGVfdXZjaDI2NAorZW5hYmxlX252ZW5jCit3aXRoX2N1ZGFfcHJlZml4CitlbmFibGVfdGlueWFsc2EKIGVuYWJsZV9hc3NyZW5kZXIKIGVuYWJsZV92b2FtcndiZW5jCiBlbmFibGVfdm9hYWNlbmMKQEAgLTE3OTUsNyArMTgyNCw2IEBACiBlbmFibGVfbW9kcGx1ZwogZW5hYmxlX21pbWljCiBlbmFibGVfbXBlZzJlbmMKLWVuYWJsZV9tcGcxMjMKIGVuYWJsZV9tcGxleAogZW5hYmxlX211c2VwYWNrCiBlbmFibGVfbmFzCkBAIC0xODE0LDYgKzE4NDIsNyBAQAogZW5hYmxlX2dsCiBlbmFibGVfZ3RrMwogZW5hYmxlX3F0CitlbmFibGVfdnVsa2FuCiBlbmFibGVfbGlidmlzdWFsCiBlbmFibGVfdGltaWRpdHkKIGVuYWJsZV90ZWxldGV4dGRlYwpAQCAtMTgzNyw5ICsxODY2LDggQEAKIGVuYWJsZV96YmFyCiBlbmFibGVfcnRtcAogZW5hYmxlX3NwYW5kc3AKLWVuYWJsZV9nc2V0dGluZ3MKLWVuYWJsZV9zY2hlbWFzX2NvbXBpbGUKIGVuYWJsZV9zbmRpbword2l0aF9obHNfY3J5cHRvCiBlbmFibGVfaGxzCiB3aXRoX2xpYmdjcnlwdF9wcmVmaXgKIGVuYWJsZV94MjY1CkBAIC0xODUyLDYgKzE4ODAsNyBAQAogTERGTEFHUwogTElCUwogQ1BQRkxBR1MKK0xUX1NZU19MSUJSQVJZX1BBVEgKIENQUAogUEtHX0NPTkZJRwogVkFMR1JJTkRfQ0ZMQUdTCkBAIC0xOTE1LDEwICsxOTQ0LDIwIEBACiBPUkNfTElCUwogWF9DRkxBR1MKIFhfTElCUworR0xfQ0ZMQUdTCitHTF9MSUJTCitHTEVTMl9DRkxBR1MKK0dMRVMyX0xJQlMKK0VHTF9DRkxBR1MKK0VHTF9MSUJTCiBXQVlMQU5EX0VHTF9DRkxBR1MKIFdBWUxBTkRfRUdMX0xJQlMKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUworR1NUX0FMTE9DQVRPUlNfTElCUwogTElCUE5HX0NGTEFHUwogTElCUE5HX0xJQlMKK1hDQl9DRkxBR1MKK1hDQl9MSUJTCiBCTFVFWjVfQ0ZMQUdTCiBCTFVFWjVfTElCUwogR0lPX1VOSVhfQ0ZMQUdTCkBAIC0xOTI3LDYgKzE5NjYsMTQgQEAKIEdfVURFVl9MSUJTCiBMSUJVU0JfQ0ZMQUdTCiBMSUJVU0JfTElCUworR1NUX1ZJREVPX0NGTEFHUworR1NUX1ZJREVPX0xJQlMKK0dTVF9QQlVUSUxTX0NGTEFHUworR1NUX1BCVVRJTFNfTElCUworQ1VEQV9DRkxBR1MKK0NVREFfTElCUworTlZFTkNPREVfQ0ZMQUdTCitOVkVOQ09ERV9MSUJTCiBBU1NSRU5ERVJfQ0ZMQUdTCiBBU1NSRU5ERVJfTElCUwogVk9BTVJXQkVOQ19DRkxBR1MKQEAgLTE5ODMsOCArMjAzMCw2IEBACiBNSlBFR19MSUJTCiBNUEVHMkVOQ19DRkxBR1MKIE1QRUcyRU5DX0xJQlMKLU1QRzEyM19DRkxBR1MKLU1QRzEyM19MSUJTCiBNUExFWF9DRkxBR1MKIE1QTEVYX0xJQlMKIE5FT05fQ0ZMQUdTCkBAIC0yMDA5LDggKzIwNTQsNiBAQAogUFZSX0xJQlMKIFJTVkdfQ0ZMQUdTCiBSU1ZHX0xJQlMKLVJTVkdfMl8zNl8yX0NGTEFHUwotUlNWR18yXzM2XzJfTElCUwogR1RLM19HTF9DRkxBR1MKIEdUSzNfR0xfTElCUwogR1RLM19YMTFfQ0ZMQUdTCkBAIC0yMDIzLDYgKzIwNjYsMTIgQEAKIFFUX1gxMV9MSUJTCiBRVF9XQVlMQU5EX0NGTEFHUwogUVRfV0FZTEFORF9MSUJTCitRVF9BTkRST0lEX0NGTEFHUworUVRfQU5EUk9JRF9MSUJTCitHTlVTVExfQ0ZMQUdTCitHTlVTVExfTElCUworUVRfTUFDX0NGTEFHUworUVRfTUFDX0xJQlMKIExJQlZJU1VBTF9DRkxBR1MKIExJQlZJU1VBTF9MSUJTCiBUSU1JRElUWV9DRkxBR1MKQEAgLTIwNDUsOCArMjA5NCw2IEBACiBSVE1QX0xJQlMKIFNQQU5EU1BfQ0ZMQUdTCiBTUEFORFNQX0xJQlMKLUdTRVRUSU5HU19DRkxBR1MKLUdTRVRUSU5HU19MSUJTCiBORVRUTEVfQ0ZMQUdTCiBORVRUTEVfTElCUwogT1BFTlNTTF9DRkxBR1MKQEAgLTI2MDMsNyArMjY1MCw3IEBACiAgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgogICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCiAgIGNhdCA8PF9BQ0VPRgotXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgR1N0cmVhbWVyIEJhZCBQbHVnLWlucyAxLjYuMyB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCitcYGNvbmZpZ3VyZScgY29uZmlndXJlcyBHU3RyZWFtZXIgQmFkIFBsdWctaW5zIDEuNy45MSB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCiAKIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgogCkBAIC0yNjc1LDcgKzI3MjIsNyBAQAogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIEdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgMS42LjM6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBHU3RyZWFtZXIgQmFkIFBsdWctaW5zIDEuNy45MToiOzsKICAgIGVzYWMKICAgY2F0IDw8XF9BQ0VPRgogCkBAIC0yNzAxLDYgKzI3NDgsNyBAQAogICAtLWRpc2FibGUtcnBhdGggICAgICAgICBkbyBub3QgaGFyZGNvZGUgcnVudGltZSBsaWJyYXJ5IHBhdGhzCiAgIC0tZGlzYWJsZS1mYXRhbC13YXJuaW5ncwogICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCB0dXJuIGNvbXBpbGVyIHdhcm5pbmdzIGludG8gZmF0YWwgZXJyb3JzCisgIC0tZW5hYmxlLWV4dHJhLWNoZWNrcyAgIEVuYWJsZSBleHRyYSBydW50aW1lIGNoZWNrcwogICAtLWRpc2FibGUtZGVidWcgICAgICAgICBkaXNhYmxlIGFkZGl0aW9uIG9mIC1nIGRlYnVnZ2luZyBpbmZvCiAgIC0tZW5hYmxlLXByb2ZpbGluZyAgICAgIGFkZHMgLXBnIHRvIGNvbXBpbGVyIGNvbW1hbmRsaW5lLCBmb3IgcHJvZmlsaW5nCiAgIC0tZGlzYWJsZS12YWxncmluZCAgICAgIGRpc2FibGUgcnVuLXRpbWUgdmFsZ3JpbmQgZGV0ZWN0aW9uCkBAIC0yNzE2LDE0ICsyNzY0LDE3IEBACiAgIC0tZW5hYmxlLWd0ay1kb2MtcGRmICAgIGJ1aWxkIGRvY3VtZW50YXRpb24gaW4gcGRmIGZvcm1hdCBbW2RlZmF1bHQ9bm9dXQogICAtLWVuYWJsZS1nb2JqZWN0LWNhc3QtY2hlY2tzPVtuby9hdXRvL3llc10KICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlIEdPYmplY3QgY2FzdCBjaGVja3MKLSAgLS1lbmFibGUtZ2xpYi1hc3NlcnRzPVtuby9hdXRvL3llc10KKyAgLS1lbmFibGUtZ2xpYi1hc3NlcnRzPVtuby95ZXNdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZSBHTGliIGFzc2VydGlvbgorICAtLWRpc2FibGUtQnN5bWJvbGljICAgICBhdm9pZCBsaW5raW5nIHdpdGggLUJzeW1ib2xpYwogICAtLWVuYWJsZS1vcmMgICAgICAgICAgICB1c2UgT3JjIGlmIGluc3RhbGxlZAogICAtLWVuYWJsZS1zdGF0aWMtcGx1Z2lucyBidWlsZCBzdGF0aWMgcGx1Z2lucyBbZGVmYXVsdD1ub10KICAgLS1kaXNhYmxlLWFjY3VyaXAgICAgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgYWNjdXJpcCBwbHVnaW4KICAgLS1kaXNhYmxlLWFkcGNtZGVjICAgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgYWRwY21kZWMgcGx1Z2luCiAgIC0tZGlzYWJsZS1hZHBjbWVuYyAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIGFkcGNtZW5jIHBsdWdpbgogICAtLWRpc2FibGUtYWlmZiAgICAgICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBhaWZmIHBsdWdpbgorICAtLWRpc2FibGUtdmlkZW9mcmFtZV9hdWRpb2xldmVsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCBwbHVnaW4KICAgLS1kaXNhYmxlLWFzZm11eCAgICAgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgYXNmbXV4IHBsdWdpbgogICAtLWRpc2FibGUtYXVkaW9meGJhZCAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBhdWRpb2Z4YmFkIHBsdWdpbgogICAtLWRpc2FibGUtYXVkaW9taXhlciAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBhdWRpb21peGVyIHBsdWdpbgpAQCAtMjc1OCw3ICsyODA5LDYgQEAKICAgLS1kaXNhYmxlLWpwMmtkZWNpbWF0b3IgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MganAya2RlY2ltYXRvciBwbHVnaW4KICAgLS1kaXNhYmxlLWpwZWdmb3JtYXQgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MganBlZ2Zvcm1hdCBwbHVnaW4KICAgLS1kaXNhYmxlLWxpYnJmYiAgICAgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgbGlicmZiIHBsdWdpbgotICAtLWRpc2FibGUtbGl2ZWFkZGVyICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBsaXZlYWRkZXIgcGx1Z2luCiAgIC0tZGlzYWJsZS1taWRpICAgICAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIG1pZGkgcGx1Z2luCiAgIC0tZGlzYWJsZS1tcGVnZGVtdXggICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIG1wZWdkZW11eCBwbHVnaW4KICAgLS1kaXNhYmxlLW1wZWd0c2RlbXV4ICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgbXBlZ3RzZGVtdXggcGx1Z2luCkBAIC0yNzY2LDYgKzI4MTYsNyBAQAogICAtLWRpc2FibGUtbXBlZ3BzbXV4ICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBtcGVncHNtdXggcGx1Z2luCiAgIC0tZGlzYWJsZS1tdmUgICAgICAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIG12ZSBwbHVnaW4KICAgLS1kaXNhYmxlLW14ZiAgICAgICAgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgbXhmIHBsdWdpbgorICAtLWRpc2FibGUtbmV0c2ltICAgICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBuZXRzaW0gcGx1Z2luCiAgIC0tZGlzYWJsZS1udXZkZW11eCAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIG51dmRlbXV4IHBsdWdpbgogICAtLWRpc2FibGUtb252aWYgICAgICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBvbnZpZiBwbHVnaW4KICAgLS1kaXNhYmxlLXBhdGNoZGV0ZWN0ICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgcGF0Y2hkZXRlY3QgcGx1Z2luCkBAIC0yNzczLDcgKzI4MjQsNiBAQAogICAtLWRpc2FibGUtcG5tICAgICAgICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBwbm0gcGx1Z2luCiAgIC0tZGlzYWJsZS1yYXdwYXJzZSAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIHJhd3BhcnNlIHBsdWdpbgogICAtLWRpc2FibGUtcmVtb3Zlc2lsZW5jZSBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyByZW1vdmVzaWxlbmNlIHBsdWdpbgotICAtLWRpc2FibGUtcnRwICAgICAgICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBydHAgcGx1Z2luCiAgIC0tZGlzYWJsZS1zZGkgICAgICAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIHNkaSBwbHVnaW4KICAgLS1kaXNhYmxlLXNkcCAgICAgICAgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3Mgc2RwIHBsdWdpbgogICAtLWRpc2FibGUtc2VnbWVudGNsaXAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBzZWdtZW50Y2xpcCBwbHVnaW4KQEAgLTI4MTIsNiArMjg2Miw4IEBACiAgIC0tZGlzYWJsZS12Y2QgICAgICAgICAgICAgICAgZGlzYWJsZSBWaWRlbyBDRDogdmNkc3JjCiAgIC0tZGlzYWJsZS1vcGVuc2xlcyAgICAgICAgICAgZGlzYWJsZSBPcGVuU0wgRVM6IG9wZW5zbAogICAtLWRpc2FibGUtdXZjaDI2NCAgICAgICAgICAgIGRpc2FibGUgVVZDIEgyNjQ6IHV2Y2gyNjQKKyAgLS1kaXNhYmxlLW52ZW5jICAgICAgICAgICAgICBkaXNhYmxlIE5WSURJQSBFbmNvZGUgQVBJOiBudmVuYworICAtLWRpc2FibGUtdGlueWFsc2EgICAgICAgICAgIGRpc2FibGUgdGlueWFsc2E6IHRpbnlhbHNhCiAgIC0tZGlzYWJsZS1hc3NyZW5kZXIgICAgICAgICAgZGlzYWJsZSBBU1MvU1NBIHJlbmRlcmVyOiBhc3NyZW5kZXIKICAgLS1kaXNhYmxlLXZvYW1yd2JlbmMgICAgICAgICBkaXNhYmxlIHZvLWFtcndiZW5jIGxpYnJhcnk6IHZvLWFtcndiZW5jCiAgIC0tZGlzYWJsZS12b2FhY2VuYyAgICAgICAgICAgZGlzYWJsZSB2by1hYWNlbmMgbGlicmFyeTogdm8tYWFjZW5jCkBAIC0yODMwLDcgKzI4ODIsNyBAQAogICAtLWRpc2FibGUtZHRzICAgICAgICAgICAgICAgIGRpc2FibGUgZHRzIGxpYnJhcnk6IGR0c2RlYwogICAtLWRpc2FibGUtcmVzaW5kdmQgICAgICAgICAgIGRpc2FibGUgcmVzaW5kdmQgcGx1Z2luOiByZXNpbmR2ZAogICAtLWRpc2FibGUtZmFhYyAgICAgICAgICAgICAgIGRpc2FibGUgQUFDIGVuY29kZXIgcGx1Zy1pbjogZmFhYwotICAtLWRpc2FibGUtZmFhZCAgICAgICAgICAgICAgIGRpc2FibGUgQUFDIGRlY29kZXIgcGx1Zy1pbjogZmFhZAorICAtLWRpc2FibGUtZmFhZCAgICAgICAgICAgICAgIGRpc2FibGUgRkFBRDIgQUFDIGRlY29kZXIgcGx1Zy1pbjogZmFhZAogICAtLWRpc2FibGUtZmJkZXYgICAgICAgICAgICAgIGRpc2FibGUgbGludXggZnJhbWVidWZmZXI6IGZiZGV2c2luawogICAtLWRpc2FibGUtZmxpdGUgICAgICAgICAgICAgIGRpc2FibGUgRmxpdGUgcGx1Z2luOiBmbGl0ZQogICAtLWRpc2FibGUtZ3NtICAgICAgICAgICAgICAgIGRpc2FibGUgR1NNIGxpYnJhcnk6IGdzbWVuYyBnc21kZWMKQEAgLTI4NDYsNyArMjg5OCw2IEBACiAgIC0tZGlzYWJsZS1tb2RwbHVnICAgICAgICAgICAgZGlzYWJsZSBtb2RwbHVnOiBtb2RwbHVnCiAgIC0tZGlzYWJsZS1taW1pYyAgICAgICAgICAgICAgZGlzYWJsZSBsaWJtaW1pYyBsaWJyYXJ5OiBtaW1pYwogICAtLWRpc2FibGUtbXBlZzJlbmMgICAgICAgICAgIGRpc2FibGUgbXBlZzJlbmM6IG1wZWcyZW5jCi0gIC0tZGlzYWJsZS1tcGcxMjMgICAgICAgICAgICAgZGlzYWJsZSBtcGcxMjMgYXVkaW8gZGVjb2RlcjogbXBnMTIzCiAgIC0tZGlzYWJsZS1tcGxleCAgICAgICAgICAgICAgZGlzYWJsZSBtcGxleDogbXBsZXgKICAgLS1kaXNhYmxlLW11c2VwYWNrICAgICAgICAgICBkaXNhYmxlIG11c2VwYWNrZGVjOiBtdXNlcGFjawogICAtLWRpc2FibGUtbmFzICAgICAgICAgICAgICAgIGRpc2FibGUgbmFzIHBsdWctaW46IG5hc3NpbmsKQEAgLTI4NjQsNiArMjkxNSw3IEBACiAgIC0tZGlzYWJsZS1nbCAgICAgICAgICAgICAgICAgZGlzYWJsZSBnbCBlbGVtZW50czogZ2wKICAgLS1kaXNhYmxlLWd0azMgICAgICAgICAgICAgICBkaXNhYmxlIEd0aysgZWxlbWVudHM6IGd0awogICAtLWRpc2FibGUtcXQgICAgICAgICAgICAgICAgIGRpc2FibGUgUXQgZWxlbWVudHM6IHF0CisgIC0tZGlzYWJsZS12dWxrYW4gICAgICAgICAgICAgZGlzYWJsZSBWdWxrYW4gZWxlbWVudHM6IHZ1bGthbgogICAtLWRpc2FibGUtbGlidmlzdWFsICAgICAgICAgIGRpc2FibGUgbGlidmlzdWFsIHZpc3VhbGl6YXRpb24gbGlicmFyeTogbGlidmlzdWFsCiAgIC0tZGlzYWJsZS10aW1pZGl0eSAgICAgICAgICAgZGlzYWJsZSB0aW1pZGl0eSBtaWRpIHNvZnQgc3ludGggcGx1Z2luOiB0aW1pZGl0eQogICAtLWRpc2FibGUtdGVsZXRleHRkZWMgICAgICAgIGRpc2FibGUgVGVsZXRleHQgZGVjb2RlcjogdGVsZXRleHRkZWMKQEAgLTI4ODUsOSArMjkzNyw2IEBACiAgIC0tZGlzYWJsZS16YmFyICAgICAgICAgICAgICAgZGlzYWJsZSBaQmFyIGJhcmNvZGUgZGV0ZWN0b3I6IHpiYXIKICAgLS1kaXNhYmxlLXJ0bXAgICAgICAgICAgICAgICBkaXNhYmxlIHJ0bXAgbGlicmFyeTogcnRtcAogICAtLWRpc2FibGUtc3BhbmRzcCAgICAgICAgICAgIGRpc2FibGUgU3BhbmRzcDogc3BhbmRzcAotICAtLWRpc2FibGUtZ3NldHRpbmdzICAgICAgICAgIGRpc2FibGUgR1NldHRpbmdzIHBsdWdpbjogZ3NldHRpbmdzCi0gIC0tZGlzYWJsZS1zY2hlbWFzLWNvbXBpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZSByZWdlbmVyYXRpb24gb2YgZ3NjaGVtYXMuY29tcGlsZWQgb24gaW5zdGFsbAogICAtLWRpc2FibGUtc25kaW8gICAgICAgICAgICAgIGRpc2FibGUgc25kaW8gYXVkaW86IHNuZGlvCiAgIC0tZGlzYWJsZS1obHMgICAgICAgICAgICAgICAgZGlzYWJsZSBodHRwIGxpdmUgc3RyZWFtaW5nIHBsdWdpbjogaGxzCiAgIC0tZGlzYWJsZS14MjY1ICAgICAgICAgICAgICAgZGlzYWJsZSB4MjY1IHBsdWctaW46IHgyNjUKQEAgLTI4OTcsOSArMjk0NiwxMiBAQAogICAtLXdpdGhvdXQtUEFDS0FHRSAgICAgICBkbyBub3QgdXNlIFBBQ0tBR0UgKHNhbWUgYXMgLS13aXRoLVBBQ0tBR0U9bm8pCiAgIC0td2l0aC1waWNbPVBLR1NdICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAtLXdpdGgtYWl4LXNvbmFtZT1haXh8c3ZyNHxib3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBsaWJyYXJ5IHZlcnNpb25pbmcgKGFrYSAiU09OQU1FIikgdmFyaWFudCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlIG9uIEFJWCwgW2RlZmF1bHQ9YWl4XS4KICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotICAtLXdpdGgtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorICAtLXdpdGgtc3lzcm9vdFs9RElSXSAgICBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUiAob3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KICAgLS13aXRoLWF1dG9jb25mICAgICAgICAgdXNlIGEgZGlmZmVyZW50IGF1dG9jb25mIGZvciByZWdlbmVyYXRpb24gb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFrZWZpbGVzCiAgIC0td2l0aC1hdXRvaGVhZGVyICAgICAgIHVzZSBhIGRpZmZlcmVudCBhdXRvaGVhZGVyIGZvciByZWdlbmVyYXRpb24gb2YKQEAgLTI5MjAsNiArMjk3Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUKICAgLS13aXRoLWh0bWwtZGlyPVBBVEggICAgcGF0aCB0byBpbnN0YWxsZWQgZG9jcwogICAtLXdpdGgtZ3RrPTMuMHwyLjAgICAgICB3aGljaCBndGsrIHZlcnNpb24gdG8gY29tcGlsZSBhZ2FpbnN0IChkZWZhdWx0OiAyLjApCisgIC0td2l0aC1wbGF5ZXItdGVzdHMgICAgIEVuYWJsZSBHc3RQbGF5ZXIgdGVzdHMgdGhhdCBuZWVkIG5ldHdvcmsgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiBubykKICAgLS13aXRoLWRlZmF1bHQtYXVkaW9zaW5rCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgZGVmYXVsdCBhdWRpbyBzaW5rCiAgIC0td2l0aC1kZWZhdWx0LWF1ZGlvc3JjIHNwZWNpZnkgZGVmYXVsdCBhdWRpbyBzb3VyY2UKQEAgLTI5MzQsMTEgKzI5ODgsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSBtb2R1bGUgbmFtZSBmb3IgR0xFUzIgKGRlZmF1bHQ6IGxpYkdMRVN2MikKICAgLS13aXRoLWVnbC1tb2R1bGUtbmFtZSAgbGlicmFyeSBtb2R1bGUgbmFtZSBmb3IgRUdMIChkZWZhdWx0OiBsaWJFR0wpCiAgIC0td2l0aC1qcGVnLW1teCwgcGF0aCB0byBNTVgnaWZpZWQgSlBFRyBsaWJyYXJ5CisgIC0td2l0aC1jdWRhLXByZWZpeCAgICAgIFVzZSB0aGUgcHJvdmlkZWQgcHJlZml4IGZvciBkZXRlY3RpbmcgdGhlIGN1ZGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uCiAgIC0td2l0aC1wdnItZXh0ZXJuYWwtaGVhZGVycwogICAgICAgICAgICAgICAgICAgICAgICAgICBVc2Ugc3lzdGVtIGluc3RhbGxlZCBQVlIyRCBoZWFkZXJzCiAgIC0td2l0aC1zZGwtcHJlZml4PVBGWCAgIHByZWZpeCB3aGVyZSBTREwgaXMgaW5zdGFsbGVkIChvcHRpb25hbCkKICAgLS13aXRoLXNkbC1leGVjLXByZWZpeD1QRlgKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYyBwcmVmaXggd2hlcmUgU0RMIGlzIGluc3RhbGxlZCAob3B0aW9uYWwpCisgIC0td2l0aC1obHMtY3J5cHRvPWF1dG98bmV0dGxlfGxpYmdjcnlwdHxvcGVuc3NsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGNyeXB0b2dyYXBoaWMgbGlicmFyeSB2ZXJzaW9uIHRvIGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWdhaW5zdCBmb3IgaGxzIChkZWZhdWx0OiBhdXRvKQogICAtLXdpdGgtbGliZ2NyeXB0LXByZWZpeD1QRlgKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4IHdoZXJlIExJQkdDUllQVCBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKQogCkBAIC0yOTUwLDYgKzMwMDksOCBAQAogICBMSUJTICAgICAgICBsaWJyYXJpZXMgdG8gcGFzcyB0byB0aGUgbGlua2VyLCBlLmcuIC1sPGxpYnJhcnk+CiAgIENQUEZMQUdTICAgIChPYmplY3RpdmUpIEMvQysrIHByZXByb2Nlc3NvciBmbGFncywgZS5nLiAtSTxpbmNsdWRlIGRpcj4gaWYKICAgICAgICAgICAgICAgeW91IGhhdmUgaGVhZGVycyBpbiBhIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8aW5jbHVkZSBkaXI+CisgIExUX1NZU19MSUJSQVJZX1BBVEgKKyAgICAgICAgICAgICAgVXNlci1kZWZpbmVkIHJ1bi10aW1lIGxpYnJhcnkgc2VhcmNoIHBhdGguCiAgIENQUCAgICAgICAgIEMgcHJlcHJvY2Vzc29yCiAgIFBLR19DT05GSUcgIHBhdGggdG8gcGtnLWNvbmZpZyB1dGlsaXR5CiAgIFZBTEdSSU5EX0NGTEFHUwpAQCAtMzA0NiwxMyArMzEwNywyNiBAQAogICBPUkNfTElCUyAgICBsaW5rZXIgZmxhZ3MgZm9yIE9SQywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIFhfQ0ZMQUdTICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIFgsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBYX0xJQlMgICAgICBsaW5rZXIgZmxhZ3MgZm9yIFgsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBHTF9DRkxBR1MgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBHTCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCisgIEdMX0xJQlMgICAgIGxpbmtlciBmbGFncyBmb3IgR0wsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBHTEVTMl9DRkxBR1MKKyAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgR0xFUzIsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBHTEVTMl9MSUJTICBsaW5rZXIgZmxhZ3MgZm9yIEdMRVMyLCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgRUdMX0NGTEFHUyAgQyBjb21waWxlciBmbGFncyBmb3IgRUdMLCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgRUdMX0xJQlMgICAgbGlua2VyIGZsYWdzIGZvciBFR0wsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBXQVlMQU5EX0VHTF9DRkxBR1MKICAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgV0FZTEFORF9FR0wsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBXQVlMQU5EX0VHTF9MSUJTCiAgICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgV0FZTEFORF9FR0wsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBHU1RfQUxMT0NBVE9SU19DRkxBR1MKKyAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgR1NUX0FMTE9DQVRPUlMsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBHU1RfQUxMT0NBVE9SU19MSUJTCisgICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgR1NUX0FMTE9DQVRPUlMsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBMSUJQTkdfQ0ZMQUdTCiAgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIExJQlBORywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIExJQlBOR19MSUJTIGxpbmtlciBmbGFncyBmb3IgTElCUE5HLCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgWENCX0NGTEFHUyAgQyBjb21waWxlciBmbGFncyBmb3IgWENCLCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgWENCX0xJQlMgICAgbGlua2VyIGZsYWdzIGZvciBYQ0IsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBCTFVFWjVfQ0ZMQUdTCiAgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIEJMVUVaNSwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIEJMVUVaNV9MSUJTIGxpbmtlciBmbGFncyBmb3IgQkxVRVo1LCBvdmVycmlkaW5nIHBrZy1jb25maWcKQEAgLTMwNjYsNiArMzE0MCwyMCBAQAogICBMSUJVU0JfQ0ZMQUdTCiAgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIExJQlVTQiwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIExJQlVTQl9MSUJTIGxpbmtlciBmbGFncyBmb3IgTElCVVNCLCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgR1NUX1ZJREVPX0NGTEFHUworICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBHU1RfVklERU8sIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBHU1RfVklERU9fTElCUworICAgICAgICAgICAgICBsaW5rZXIgZmxhZ3MgZm9yIEdTVF9WSURFTywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCisgIEdTVF9QQlVUSUxTX0NGTEFHUworICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBHU1RfUEJVVElMUywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCisgIEdTVF9QQlVUSUxTX0xJQlMKKyAgICAgICAgICAgICAgbGlua2VyIGZsYWdzIGZvciBHU1RfUEJVVElMUywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCisgIENVREFfQ0ZMQUdTIEMgY29tcGlsZXIgZmxhZ3MgZm9yIENVREEsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBDVURBX0xJQlMgICBsaW5rZXIgZmxhZ3MgZm9yIENVREEsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBOVkVOQ09ERV9DRkxBR1MKKyAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgTnZFbmNvZGVBUEkuaAorICBOVkVOQ09ERV9MSUJTCisgICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgbnZpZGlhLWVuY29kZQogICBBU1NSRU5ERVJfQ0ZMQUdTCiAgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIEFTU1JFTkRFUiwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIEFTU1JFTkRFUl9MSUJTCkBAIC0zMTU0LDkgKzMyNDIsNiBAQAogICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBNUEVHMkVOQywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIE1QRUcyRU5DX0xJQlMKICAgICAgICAgICAgICAgbGlua2VyIGZsYWdzIGZvciBNUEVHMkVOQywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCi0gIE1QRzEyM19DRkxBR1MKLSAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgTVBHMTIzLCBvdmVycmlkaW5nIHBrZy1jb25maWcKLSAgTVBHMTIzX0xJQlMgbGlua2VyIGZsYWdzIGZvciBNUEcxMjMsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBNUExFWF9DRkxBR1MKICAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgTVBMRVgsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBNUExFWF9MSUJTICBsaW5rZXIgZmxhZ3MgZm9yIE1QTEVYLCBvdmVycmlkaW5nIHBrZy1jb25maWcKQEAgLTMxOTIsMTAgKzMyNzcsNiBAQAogICBQVlJfTElCUyAgICBsaW5rZXIgZmxhZ3MgZm9yIFBWUiwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIFJTVkdfQ0ZMQUdTIEMgY29tcGlsZXIgZmxhZ3MgZm9yIFJTVkcsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBSU1ZHX0xJQlMgICBsaW5rZXIgZmxhZ3MgZm9yIFJTVkcsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwotICBSU1ZHXzJfMzZfMl9DRkxBR1MKLSAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgUlNWR18yXzM2XzIsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwotICBSU1ZHXzJfMzZfMl9MSUJTCi0gICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgUlNWR18yXzM2XzIsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBHVEszX0dMX0NGTEFHUwogICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBHVEszX0dMLCBvdmVycmlkaW5nIHBrZy1jb25maWcKICAgR1RLM19HTF9MSUJTCkBAIC0zMjE3LDYgKzMyOTgsMTYgQEAKICAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgUVRfV0FZTEFORCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIFFUX1dBWUxBTkRfTElCUwogICAgICAgICAgICAgICBsaW5rZXIgZmxhZ3MgZm9yIFFUX1dBWUxBTkQsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBRVF9BTkRST0lEX0NGTEFHUworICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBRVF9BTkRST0lELCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgUVRfQU5EUk9JRF9MSUJTCisgICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgUVRfQU5EUk9JRCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCisgIEdOVVNUTF9DRkxBR1MKKyAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgR05VU1RMLCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgR05VU1RMX0xJQlMgbGlua2VyIGZsYWdzIGZvciBHTlVTVEwsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBRVF9NQUNfQ0ZMQUdTCisgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIFFUX01BQywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCisgIFFUX01BQ19MSUJTIGxpbmtlciBmbGFncyBmb3IgUVRfTUFDLCBvdmVycmlkaW5nIHBrZy1jb25maWcKICAgTElCVklTVUFMX0NGTEFHUwogICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBMSUJWSVNVQUwsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBMSUJWSVNVQUxfTElCUwpAQCAtMzI1MywxMCArMzM0NCw2IEBACiAgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIFNQQU5EU1AsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBTUEFORFNQX0xJQlMKICAgICAgICAgICAgICAgbGlua2VyIGZsYWdzIGZvciBTUEFORFNQLCBvdmVycmlkaW5nIHBrZy1jb25maWcKLSAgR1NFVFRJTkdTX0NGTEFHUwotICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBHU0VUVElOR1MsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwotICBHU0VUVElOR1NfTElCUwotICAgICAgICAgICAgICBsaW5rZXIgZmxhZ3MgZm9yIEdTRVRUSU5HUywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIE5FVFRMRV9DRkxBR1MKICAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgTkVUVExFLCBvdmVycmlkaW5nIHBrZy1jb25maWcKICAgTkVUVExFX0xJQlMgbGlua2VyIGZsYWdzIGZvciBORVRUTEUsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwpAQCAtMzMzMyw3ICszNDIwLDcgQEAKIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cwogaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgogICBjYXQgPDxcX0FDRU9GCi1HU3RyZWFtZXIgQmFkIFBsdWctaW5zIGNvbmZpZ3VyZSAxLjYuMworR1N0cmVhbWVyIEJhZCBQbHVnLWlucyBjb25maWd1cmUgMS43LjkxCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkKIAogQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtNDMwNiw3ICs0MzkzLDcgQEAKIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCiBydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgogCi1JdCB3YXMgY3JlYXRlZCBieSBHU3RyZWFtZXIgQmFkIFBsdWctaW5zICRhc19tZSAxLjYuMywgd2hpY2ggd2FzCitJdCB3YXMgY3JlYXRlZCBieSBHU3RyZWFtZXIgQmFkIFBsdWctaW5zICRhc19tZSAxLjcuOTEsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQApAQCAtNTI4OCw3ICs1Mzc1LDcgQEAKIAogIyBEZWZpbmUgdGhlIGlkZW50aXR5IG9mIHRoZSBwYWNrYWdlLgogIFBBQ0tBR0U9J2dzdC1wbHVnaW5zLWJhZCcKLSBWRVJTSU9OPScxLjYuMycKKyBWRVJTSU9OPScxLjcuOTEnCiAKIAogY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgpAQCAtNTQ5OSw5ICs1NTg2LDkgQEAKIAogCiAKLSAgUEFDS0FHRV9WRVJTSU9OX01BSk9SPSQoZWNobyAxLjYuMyB8IGN1dCAtZCcuJyAtZjEpCi0gIFBBQ0tBR0VfVkVSU0lPTl9NSU5PUj0kKGVjaG8gMS42LjMgfCBjdXQgLWQnLicgLWYyKQotICBQQUNLQUdFX1ZFUlNJT05fTUlDUk89JChlY2hvIDEuNi4zIHwgY3V0IC1kJy4nIC1mMykKKyAgUEFDS0FHRV9WRVJTSU9OX01BSk9SPSQoZWNobyAxLjcuOTEgfCBjdXQgLWQnLicgLWYxKQorICBQQUNLQUdFX1ZFUlNJT05fTUlOT1I9JChlY2hvIDEuNy45MSB8IGN1dCAtZCcuJyAtZjIpCisgIFBBQ0tBR0VfVkVSU0lPTl9NSUNSTz0kKGVjaG8gMS43LjkxIHwgY3V0IC1kJy4nIC1mMykKIAogCiAKQEAgLTU1MTIsNyArNTU5OSw3IEBACiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgbmFubyB2ZXJzaW9uIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIG5hbm8gdmVyc2lvbi4uLiAiID4mNjsgfQogCi0gIE5BTk89JChlY2hvIDEuNi4zIHwgY3V0IC1kJy4nIC1mNCkKKyAgTkFOTz0kKGVjaG8gMS43LjkxIHwgY3V0IC1kJy4nIC1mNCkKIAogICBpZiB0ZXN0IHgiJE5BTk8iID0geCB8fCB0ZXN0ICJ4JE5BTk8iID0gIngwIiA7IHRoZW4KICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogMCAocmVsZWFzZSkiID4mNQpAQCAtNTYzMiw4ICs1NzE5LDggQEAKIAogCiAKLW1hY3JvX3ZlcnNpb249JzIuNC4yJwotbWFjcm9fcmV2aXNpb249JzEuMzMzNycKK21hY3JvX3ZlcnNpb249JzIuNC42JworbWFjcm9fcmV2aXNpb249JzIuNC42JwogCiAKIApAQCAtNTY0Nyw3ICs1NzM0LDcgQEAKIAogCiAKLWx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorbHRtYWluPSRhY19hdXhfZGlyL2x0bWFpbi5zaAogCiAjIEJhY2tzbGFzaGlmeSBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluCiAjIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KQEAgLTU2OTYsNyArNTc4Myw3IEBACiAgICAgJEVDSE8gIiIKIH0KIAotY2FzZSAiJEVDSE8iIGluCitjYXNlICRFQ0hPIGluCiAgIHByaW50ZiopIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBwcmludGYiID4mNQogJGFzX2VjaG8gInByaW50ZiIgPiY2OyB9IDs7CiAgIHByaW50KikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHByaW50IC1yIiA+JjUKQEAgLTcwNTgsMTkgKzcxNDUsMTkgQEAKIAogIyBDaGVjayB3aGV0aGVyIC0td2l0aC1nbnUtbGQgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHt3aXRoX2dudV9sZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfZ251X2xkOyB0ZXN0ICIkd2l0aHZhbCIgPSBubyB8fCB3aXRoX2dudV9sZD15ZXMKKyAgd2l0aHZhbD0kd2l0aF9nbnVfbGQ7IHRlc3Qgbm8gPSAiJHdpdGh2YWwiIHx8IHdpdGhfZ251X2xkPXllcwogZWxzZQogICB3aXRoX2dudV9sZD1ubwogZmkKIAogYWNfcHJvZz1sZAotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAgICMgQ2hlY2sgaWYgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQgZ2l2ZXMgYSBwYXRoLgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsZCB1c2VkIGJ5ICRDQyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbGQgdXNlZCBieSAkQ0MuLi4gIiA+JjY7IH0KICAgY2FzZSAkaG9zdCBpbgogICAqLSotbWluZ3cqKQotICAgICMgZ2NjIGxlYXZlcyBhIHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiB3aGljaCB1cHNldHMgbWluZ3cKKyAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4sIHdoaWNoIHVwc2V0cyBtaW5ndwogICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNSB8IHRyIC1kICdcMDE1J2AgOzsKICAgKikKICAgICBhY19wcm9nPWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjVgIDs7CkBAIC03MDg0LDcgKzcxNzEsNyBAQAogICAgICAgd2hpbGUgJEVDSE8gIiRhY19wcm9nIiB8ICRHUkVQICIkcmVfZGlyZWx0IiA+IC9kZXYvbnVsbCAyPiYxOyBkbwogCWFjX3Byb2c9YCRFQ0hPICRhY19wcm9nfCAkU0VEICJzJSRyZV9kaXJlbHQlLyUiYAogICAgICAgZG9uZQotICAgICAgdGVzdCAteiAiJExEIiAmJiBMRD0iJGFjX3Byb2ciCisgICAgICB0ZXN0IC16ICIkTEQiICYmIExEPSRhY19wcm9nCiAgICAgICA7OwogICAiIikKICAgICAjIElmIGl0IGZhaWxzLCB0aGVuIHByZXRlbmQgd2UgYXJlbid0IHVzaW5nIEdDQy4KQEAgLTcwOTUsNyArNzE4Miw3IEBACiAgICAgd2l0aF9nbnVfbGQ9dW5rbm93bgogICAgIDs7CiAgIGVzYWMKLWVsaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorZWxpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEdOVSBsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgR05VIGxkLi4uICIgPiY2OyB9CiBlbHNlCkBAIC03MTA2LDMyICs3MTkzLDMyIEBACiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLXogIiRMRCI7IHRoZW4KLSAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKICAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICBJRlM9JGx0X3NhdmVfaWZzCiAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KICAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KLSAgICAgIGx0X2N2X3BhdGhfTEQ9IiRhY19kaXIvJGFjX3Byb2ciCisgICAgICBsdF9jdl9wYXRoX0xEPSRhY19kaXIvJGFjX3Byb2cKICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9ncmFtIGlzIEdOVSBsZC4gIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKICAgICAgICMgYnV0IGFwcGFyZW50bHkgc29tZSB2YXJpYW50cyBvZiBHTlUgbGQgb25seSBhY2NlcHQgLXYuCiAgICAgICAjIEJyZWFrIG9ubHkgaWYgaXQgd2FzIHRoZSBHTlUvbm9uLUdOVSBsZCB0aGF0IHdlIHByZWZlci4KICAgICAgIGNhc2UgYCIkbHRfY3ZfcGF0aF9MRCIgLXYgMj4mMSA8L2Rldi9udWxsYCBpbgogICAgICAgKkdOVSogfCAqJ3dpdGggQkZEJyopCi0JdGVzdCAiJHdpdGhfZ251X2xkIiAhPSBubyAmJiBicmVhaworCXRlc3Qgbm8gIT0gIiR3aXRoX2dudV9sZCIgJiYgYnJlYWsKIAk7OwogICAgICAgKikKLQl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHllcyAmJiBicmVhaworCXRlc3QgeWVzICE9ICIkd2l0aF9nbnVfbGQiICYmIGJyZWFrCiAJOzsKICAgICAgIGVzYWMKICAgICBmaQogICBkb25lCi0gIElGUz0iJGx0X3NhdmVfaWZzIgorICBJRlM9JGx0X3NhdmVfaWZzCiBlbHNlCi0gIGx0X2N2X3BhdGhfTEQ9IiRMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIGx0X2N2X3BhdGhfTEQ9JExEICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgogZmkKIGZpCiAKLUxEPSIkbHRfY3ZfcGF0aF9MRCIKK0xEPSRsdF9jdl9wYXRoX0xECiBpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTEQiID4mNQogJGFzX2VjaG8gIiRMRCIgPiY2OyB9CkBAIC03MTc0LDMzICs3MjYxLDM4IEBACiBlbHNlCiAgIGlmIHRlc3QgLW4gIiROTSI7IHRoZW4KICAgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0gIGx0X2N2X3BhdGhfTk09IiROTSIKKyAgbHRfY3ZfcGF0aF9OTT0kTk0KIGVsc2UKLSAgbHRfbm1fdG9fY2hlY2s9IiR7YWNfdG9vbF9wcmVmaXh9bm0iCisgIGx0X25tX3RvX2NoZWNrPSR7YWNfdG9vbF9wcmVmaXh9bm0KICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IiAmJiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgogICAgIGx0X25tX3RvX2NoZWNrPSIkbHRfbm1fdG9fY2hlY2sgbm0iCiAgIGZpCiAgIGZvciBsdF90bXBfbm0gaW4gJGx0X25tX3RvX2NoZWNrOyBkbwotICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICAgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKICAgICBmb3IgYWNfZGlyIGluICRQQVRIIC91c3IvY2NzL2Jpbi9lbGYgL3Vzci9jY3MvYmluIC91c3IvdWNiIC9iaW47IGRvCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKICAgICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICAgICB0bXBfbm09IiRhY19kaXIvJGx0X3RtcF9ubSIKLSAgICAgIGlmIHRlc3QgLWYgIiR0bXBfbm0iIHx8IHRlc3QgLWYgIiR0bXBfbm0kYWNfZXhlZXh0IiA7IHRoZW4KKyAgICAgIHRtcF9ubT0kYWNfZGlyLyRsdF90bXBfbm0KKyAgICAgIGlmIHRlc3QgLWYgIiR0bXBfbm0iIHx8IHRlc3QgLWYgIiR0bXBfbm0kYWNfZXhlZXh0IjsgdGhlbgogCSMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBubSBhY2NlcHRzIGEgQlNELWNvbXBhdCBmbGFnLgotCSMgQWRkaW5nIHRoZSBgc2VkIDFxJyBwcmV2ZW50cyBmYWxzZSBwb3NpdGl2ZXMgb24gSFAtVVgsIHdoaWNoIHNheXM6CisJIyBBZGRpbmcgdGhlICdzZWQgMXEnIHByZXZlbnRzIGZhbHNlIHBvc2l0aXZlcyBvbiBIUC1VWCwgd2hpY2ggc2F5czoKIAkjICAgbm06IHVua25vd24gb3B0aW9uICJCIiBpZ25vcmVkCiAJIyBUcnU2NCdzIG5tIGNvbXBsYWlucyB0aGF0IC9kZXYvbnVsbCBpcyBhbiBpbnZhbGlkIG9iamVjdCBmaWxlCi0JY2FzZSBgIiR0bXBfbm0iIC1CIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCi0JKi9kZXYvbnVsbCogfCAqJ0ludmFsaWQgZmlsZSBvciBvYmplY3QgdHlwZScqKQorCSMgTVNZUyBjb252ZXJ0cyAvZGV2L251bGwgdG8gTlVMLCBNaW5HVyBubSB0cmVhdHMgTlVMIGFzIGVtcHR5CisJY2FzZSAkYnVpbGRfb3MgaW4KKwltaW5ndyopIGx0X2JhZF9maWxlPWNvbmZ0ZXN0Lm5tL25vZmlsZSA7OworCSopIGx0X2JhZF9maWxlPS9kZXYvbnVsbCA7OworCWVzYWMKKwljYXNlIGAiJHRtcF9ubSIgLUIgJGx0X2JhZF9maWxlIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKwkqJGx0X2JhZF9maWxlKiB8IConSW52YWxpZCBmaWxlIG9yIG9iamVjdCB0eXBlJyopCiAJICBsdF9jdl9wYXRoX05NPSIkdG1wX25tIC1CIgotCSAgYnJlYWsKKwkgIGJyZWFrIDIKIAkgIDs7CiAJKikKIAkgIGNhc2UgYCIkdG1wX25tIiAtcCAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgogCSAgKi9kZXYvbnVsbCopCiAJICAgIGx0X2N2X3BhdGhfTk09IiR0bXBfbm0gLXAiCi0JICAgIGJyZWFrCisJICAgIGJyZWFrIDIKIAkgICAgOzsKIAkgICopCiAJICAgIGx0X2N2X3BhdGhfTk09JHtsdF9jdl9wYXRoX05NPSIkdG1wX25tIn0gIyBrZWVwIHRoZSBmaXJzdCBtYXRjaCwgYnV0CkBAIC03MjExLDE1ICs3MzAzLDE1IEBACiAJZXNhYwogICAgICAgZmkKICAgICBkb25lCi0gICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgSUZTPSRsdF9zYXZlX2lmcwogICBkb25lCiAgIDogJHtsdF9jdl9wYXRoX05NPW5vfQogZmkKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfTk0iID4mNQogJGFzX2VjaG8gIiRsdF9jdl9wYXRoX05NIiA+JjY7IH0KLWlmIHRlc3QgIiRsdF9jdl9wYXRoX05NIiAhPSAibm8iOyB0aGVuCi0gIE5NPSIkbHRfY3ZfcGF0aF9OTSIKK2lmIHRlc3Qgbm8gIT0gIiRsdF9jdl9wYXRoX05NIjsgdGhlbgorICBOTT0kbHRfY3ZfcGF0aF9OTQogZWxzZQogICAjIERpZG4ndCBmaW5kIGFueSBCU0QgY29tcGF0aWJsZSBuYW1lIGxpc3RlciwgbG9vayBmb3IgZHVtcGJpbi4KICAgaWYgdGVzdCAtbiAiJERVTVBCSU4iOyB0aGVuIDoKQEAgLTczMjUsOSArNzQxNyw5IEBACiAgIGZpCiBmaQogCi0gICAgY2FzZSBgJERVTVBCSU4gLXN5bWJvbHMgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKyAgICBjYXNlIGAkRFVNUEJJTiAtc3ltYm9scyAtaGVhZGVycyAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgogICAgICpDT0ZGKikKLSAgICAgIERVTVBCSU49IiREVU1QQklOIC1zeW1ib2xzIgorICAgICAgRFVNUEJJTj0iJERVTVBCSU4gLXN5bWJvbHMgLWhlYWRlcnMiCiAgICAgICA7OwogICAgICopCiAgICAgICBEVU1QQklOPToKQEAgLTczMzUsOCArNzQyNyw4IEBACiAgICAgZXNhYwogICBmaQogCi0gIGlmIHRlc3QgIiREVU1QQklOIiAhPSAiOiI7IHRoZW4KLSAgICBOTT0iJERVTVBCSU4iCisgIGlmIHRlc3QgOiAhPSAiJERVTVBCSU4iOyB0aGVuCisgICAgTk09JERVTVBCSU4KICAgZmkKIGZpCiB0ZXN0IC16ICIkTk0iICYmIE5NPW5tCkBAIC03Mzg3LDcgKzc0NzksNyBAQAogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAgIGk9MAotICB0ZXN0c3RyaW5nPSJBQkNEIgorICB0ZXN0c3RyaW5nPUFCQ0QKIAogICBjYXNlICRidWlsZF9vcyBpbgogICBtc2Rvc2RqZ3BwKikKQEAgLTc0MjcsNyArNzUxOSw3IEBACiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CiAgICAgOzsKIAotICBuZXRic2QqIHwgZnJlZWJzZCogfCBvcGVuYnNkKiB8IGRhcndpbiogfCBkcmFnb25mbHkqKQorICBiaXRyaWcqIHwgZGFyd2luKiB8IGRyYWdvbmZseSogfCBmcmVlYnNkKiB8IG5ldGJzZCogfCBvcGVuYnNkKikKICAgICAjIFRoaXMgaGFzIGJlZW4gYXJvdW5kIHNpbmNlIDM4NkJTRCwgYXQgbGVhc3QuICBMaWtlbHkgZnVydGhlci4KICAgICBpZiB0ZXN0IC14IC9zYmluL3N5c2N0bDsgdGhlbgogICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWAvc2Jpbi9zeXNjdGwgLW4ga2Vybi5hcmdtYXhgCkBAIC03NDc4LDIyICs3NTcwLDIyIEBACiAgICopCiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWAoZ2V0Y29uZiBBUkdfTUFYKSAyPiAvZGV2L251bGxgCiAgICAgaWYgdGVzdCAtbiAiJGx0X2N2X3N5c19tYXhfY21kX2xlbiIgJiYgXAotCXRlc3QgdW5kZWZpbmVkICE9ICIkbHRfY3Zfc3lzX21heF9jbWRfbGVuIjsgdGhlbgorICAgICAgIHRlc3QgdW5kZWZpbmVkICE9ICIkbHRfY3Zfc3lzX21heF9jbWRfbGVuIjsgdGhlbgogICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXC8gNGAKICAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gZXhwciAkbHRfY3Zfc3lzX21heF9jbWRfbGVuIFwqIDNgCiAgICAgZWxzZQogICAgICAgIyBNYWtlIHRlc3RzdHJpbmcgYSBsaXR0bGUgYmlnZ2VyIGJlZm9yZSB3ZSBkbyBhbnl0aGluZyB3aXRoIGl0LgogICAgICAgIyBhIDFLIHN0cmluZyBzaG91bGQgYmUgYSByZWFzb25hYmxlIHN0YXJ0LgotICAgICAgZm9yIGkgaW4gMSAyIDMgNCA1IDYgNyA4IDsgZG8KKyAgICAgIGZvciBpIGluIDEgMiAzIDQgNSA2IDcgODsgZG8KICAgICAgICAgdGVzdHN0cmluZz0kdGVzdHN0cmluZyR0ZXN0c3RyaW5nCiAgICAgICBkb25lCiAgICAgICBTSEVMTD0ke1NIRUxMLSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9fQogICAgICAgIyBJZiB0ZXN0IGlzIG5vdCBhIHNoZWxsIGJ1aWx0LWluLCB3ZSdsbCBwcm9iYWJseSBlbmQgdXAgY29tcHV0aW5nIGEKICAgICAgICMgbWF4aW11bSBsZW5ndGggdGhhdCBpcyBvbmx5IGhhbGYgb2YgdGhlIGFjdHVhbCBtYXhpbXVtIGxlbmd0aCwgYnV0CiAgICAgICAjIHdlIGNhbid0IHRlbGwuCi0gICAgICB3aGlsZSB7IHRlc3QgIlgiYGVudiBlY2hvICIkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAorICAgICAgd2hpbGUgeyB0ZXN0IFhgZW52IGVjaG8gIiR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCiAJICAgICAgICAgPSAiWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgotCSAgICAgIHRlc3QgJGkgIT0gMTcgIyAxLzIgTUIgc2hvdWxkIGJlIGVub3VnaAorCSAgICAgIHRlc3QgMTcgIT0gIiRpIiAjIDEvMiBNQiBzaG91bGQgYmUgZW5vdWdoCiAgICAgICBkbwogICAgICAgICBpPWBleHByICRpICsgMWAKICAgICAgICAgdGVzdHN0cmluZz0kdGVzdHN0cmluZyR0ZXN0c3RyaW5nCkBAIC03NTExLDcgKzc2MDMsNyBAQAogCiBmaQogCi1pZiB0ZXN0IC1uICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gOyB0aGVuCitpZiB0ZXN0IC1uICIkbHRfY3Zfc3lzX21heF9jbWRfbGVuIjsgdGhlbgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3N5c19tYXhfY21kX2xlbiIgPiY1CiAkYXNfZWNobyAiJGx0X2N2X3N5c19tYXhfY21kX2xlbiIgPiY2OyB9CiBlbHNlCkBAIC03NTI5LDMwICs3NjIxLDYgQEAKIDogJHtNVj0ibXYgLWYifQogOiAke1JNPSJybSAtZiJ9CiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OyB9Ci0jIFRyeSBzb21lIFhTSSBmZWF0dXJlcwoteHNpX3NoZWxsPW5vCi0oIF9sdF9kdW1teT0iYS9iL2MiCi0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0gICAgICA9IGMsYS9iLGIvYywgXAotICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAmJiB4c2lfc2hlbGw9eWVzCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHhzaV9zaGVsbCIgPiY1Ci0kYXNfZWNobyAiJHhzaV9zaGVsbCIgPiY2OyB9Ci0KLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBcIis9XCIiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgXCIrPVwiLi4uICIgPiY2OyB9Ci1sdF9zaGVsbF9hcHBlbmQ9bm8KLSggZm9vPWJhcjsgc2V0IGZvbyBiYXo7IGV2YWwgIiQxKz1cJDIiICYmIHRlc3QgIiRmb28iID0gYmFyYmF6ICkgXAotICAgID4vZGV2L251bGwgMj4mMSBcCi0gICYmIGx0X3NoZWxsX2FwcGVuZD15ZXMKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfc2hlbGxfYXBwZW5kIiA+JjUKLSRhc19lY2hvICIkbHRfc2hlbGxfYXBwZW5kIiA+JjY7IH0KLQotCiBpZiAoIChNQUlMPTYwOyB1bnNldCBNQUlMKSB8fCBleGl0KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgbHRfdW5zZXQ9dW5zZXQKIGVsc2UKQEAgLTc2NzUsMTMgKzc3NDMsMTMgQEAKIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKIGNhc2UgJGhvc3Rfb3MgaW4KICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzICE9ICIkR0NDIjsgdGhlbgogICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKICAgICBmaQogICAgIDs7CiAgIGRhcndpbiopCi0gICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyAgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHdsLXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICAgICBlbHNlCiAgICAgICByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiAgICAgZmkKQEAgLTc4MDYsMTMgKzc4NzQsMTMgQEAKICMgTmVlZCB0byBzZXQgdGhlIHByZWNlZGluZyB2YXJpYWJsZSBvbiBhbGwgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydAogIyBpbnRlcmxpYnJhcnkgZGVwZW5kZW5jaWVzLgogIyAnbm9uZScgLS0gZGVwZW5kZW5jaWVzIG5vdCBzdXBwb3J0ZWQuCi0jIGB1bmtub3duJyAtLSBzYW1lIGFzIG5vbmUsIGJ1dCBkb2N1bWVudHMgdGhhdCB3ZSByZWFsbHkgZG9uJ3Qga25vdy4KKyMgJ3Vua25vd24nIC0tIHNhbWUgYXMgbm9uZSwgYnV0IGRvY3VtZW50cyB0aGF0IHdlIHJlYWxseSBkb24ndCBrbm93LgogIyAncGFzc19hbGwnIC0tIGFsbCBkZXBlbmRlbmNpZXMgcGFzc2VkIHdpdGggbm8gY2hlY2tzLgogIyAndGVzdF9jb21waWxlJyAtLSBjaGVjayBieSBtYWtpbmcgdGVzdCBwcm9ncmFtLgogIyAnZmlsZV9tYWdpYyBbW3JlZ2V4XV0nIC0tIGNoZWNrIGJ5IGxvb2tpbmcgZm9yIGZpbGVzIGluIGxpYnJhcnkgcGF0aAotIyB3aGljaCByZXNwb25kcyB0byB0aGUgJGZpbGVfbWFnaWNfY21kIHdpdGggYSBnaXZlbiBleHRlbmRlZCByZWdleC4KLSMgSWYgeW91IGhhdmUgYGZpbGUnIG9yIGVxdWl2YWxlbnQgb24geW91ciBzeXN0ZW0gYW5kIHlvdSdyZSBub3Qgc3VyZQotIyB3aGV0aGVyIGBwYXNzX2FsbCcgd2lsbCAqYWx3YXlzKiB3b3JrLCB5b3UgcHJvYmFibHkgd2FudCB0aGlzIG9uZS4KKyMgdGhhdCByZXNwb25kcyB0byB0aGUgJGZpbGVfbWFnaWNfY21kIHdpdGggYSBnaXZlbiBleHRlbmRlZCByZWdleC4KKyMgSWYgeW91IGhhdmUgJ2ZpbGUnIG9yIGVxdWl2YWxlbnQgb24geW91ciBzeXN0ZW0gYW5kIHlvdSdyZSBub3Qgc3VyZQorIyB3aGV0aGVyICdwYXNzX2FsbCcgd2lsbCAqYWx3YXlzKiB3b3JrLCB5b3UgcHJvYmFibHkgd2FudCB0aGlzIG9uZS4KIAogY2FzZSAkaG9zdF9vcyBpbgogYWl4WzQtOV0qKQpAQCAtNzgzOSw4ICs3OTA3LDcgQEAKICAgIyBCYXNlIE1TWVMvTWluR1cgZG8gbm90IHByb3ZpZGUgdGhlICdmaWxlJyBjb21tYW5kIG5lZWRlZCBieQogICAjIGZ1bmNfd2luMzJfbGliaWQgc2hlbGwgZnVuY3Rpb24sIHNvIHVzZSBhIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJywKICAgIyB1bmxlc3Mgd2UgZmluZCAnZmlsZScsIGZvciBleGFtcGxlIGJlY2F1c2Ugd2UgYXJlIGNyb3NzLWNvbXBpbGluZy4KLSAgIyBmdW5jX3dpbjMyX2xpYmlkIGFzc3VtZXMgQlNEIG5tLCBzbyBkaXNhbGxvdyBpdCBpZiB1c2luZyBNUyBkdW1wYmluLgotICBpZiAoIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIkJTRCBubSIgJiYgZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIGlmICggZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgZWxzZQpAQCAtNzkzNiw4ICs4MDAzLDggQEAKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAotb3BlbmJzZCopCi0gIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KK29wZW5ic2QqIHwgYml0cmlnKikKKyAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiOyB0aGVuCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfFwuc298X3BpY1wuYSkkJwogICBlbHNlCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfF9waWNcLmEpJCcKQEAgLTc5OTAsNiArODA1Nyw5IEBACiB0cGYqKQogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7Oworb3MyKikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKIGVzYWMKIAogZmkKQEAgLTgxNDQsOCArODIxNCw4IEBACiAKIGNhc2UgJGhvc3Rfb3MgaW4KIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2g7CisgICMgZGVjaWRlIHdoaWNoIG9uZSB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCiAgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgogICAqLS1pZGVudGlmeS1zdHJpY3QqKQogICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgpAQCAtODE1Nyw3ICs4MjI3LDcgQEAKICAgOzsKICopCiAgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCiAgIDs7CiBlc2FjCiAKQEAgLTgzMTIsNyArODM4Miw3IEBACiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKyAgICAgIGlmIHRlc3QgMCAtZXEgIiRhY19zdGF0dXMiOyB0aGVuCiAJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KIAlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKIAl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQpAQCAtODMyMCw3ICs4MzkwLDcgQEAKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0JaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKwlpZiB0ZXN0IDAgLW5lICIkYWNfc3RhdHVzIjsgdGhlbgogICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAogICAgICAgICBmaQogICAgICAgZmkKQEAgLTgzMzMsNyArODQwMyw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KIAotaWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgoraWYgdGVzdCBubyA9ICIkbHRfY3ZfYXJfYXRfZmlsZSI7IHRoZW4KICAgYXJjaGl2ZXJfbGlzdF9zcGVjPQogZWxzZQogICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKQEAgLTg1NTAsNyArODYyMCw3IEBACiAKIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCiAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgb3BlbmJzZCopCisgIGJpdHJpZyogfCBvcGVuYnNkKikKICAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkdG9vbF9vbGRsaWIiCiAgICAgOzsKICAgKikKQEAgLTg2NDAsNyArODcxMCw3IEBACiAgIHN5bWNvZGU9J1tBQkNER0lTVFddJwogICA7OwogaHB1eCopCi0gIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAgICAgc3ltY29kZT0nW0FCQ0RFR1JTVF0nCiAgIGZpCiAgIDs7CkBAIC04NjczLDE0ICs4NzQzLDQ0IEBACiAgIHN5bWNvZGU9J1tBQkNER0lSU1RXXScgOzsKIGVzYWMKIAoraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKyAgIyBHZXRzIGxpc3Qgb2YgZGF0YSBzeW1ib2xzIHRvIGltcG9ydC4KKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9faW1wb3J0PSJzZWQgLW4gLWUgJ3MvXkkgLiogXCguKlwpJC9cMS9wJyIKKyAgIyBBZGp1c3QgdGhlIGJlbG93IGdsb2JhbCBzeW1ib2wgdHJhbnNmb3JtcyB0byBmaXh1cCBpbXBvcnRlZCB2YXJpYWJsZXMuCisgIGx0X2NkZWNsX2hvb2s9IiAtZSAncy9eSSAuKiBcKC4qXCkkL2V4dGVybiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhciBcMTsvcCciCisgIGx0X2NfbmFtZV9ob29rPSIgLWUgJ3MvXkkgLiogXCguKlwpJC8gIHtcIlwxXCIsICh2b2lkICopIDB9LC9wJyIKKyAgbHRfY19uYW1lX2xpYl9ob29rPSJcCisgIC1lICdzL15JIC4qIFwobGliLipcKSQvICB7XCJcMVwiLCAodm9pZCAqKSAwfSwvcCdcCisgIC1lICdzL15JIC4qIFwoLipcKSQvICB7XCJsaWJcMVwiLCAodm9pZCAqKSAwfSwvcCciCitlbHNlCisgICMgRGlzYWJsZSBob29rcyBieSBkZWZhdWx0LgorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19pbXBvcnQ9CisgIGx0X2NkZWNsX2hvb2s9CisgIGx0X2NfbmFtZV9ob29rPQorICBsdF9jX25hbWVfbGliX2hvb2s9CitmaQorCiAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBhIHByb3BlciBDIGRlY2xhcmF0aW9uLgogIyBTb21lIHN5c3RlbXMgKGVzcC4gb24gaWE2NCkgbGluayBkYXRhIGFuZCBjb2RlIHN5bWJvbHMgZGlmZmVyZW50bHksCiAjIHNvIHVzZSB0aGlzIGdlbmVyYWwgYXBwcm9hY2guCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiJcCiskbHRfY2RlY2xfaG9va1wKKyIgLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIlwKKyIgLWUgJ3MvXiRzeW1jb2RlJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogCiAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4iXAorJGx0X2NfbmFtZV9ob29rXAorIiAtZSAncy9eOiBcKC4qXCkgLiokLyAge1wiXDFcIiwgKHZvaWQgKikgMH0sL3AnIlwKKyIgLWUgJ3MvXiRzeW1jb2RlJHN5bWNvZGUqIC4qIFwoLipcKSQvICB7XCJcMVwiLCAodm9pZCAqKSBcJlwxfSwvcCciCisKKyMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIHdpdGggbGliIHByZWZpeCBhbmQKKyMgc3ltYm9sIGFkZHJlc3MuCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4iXAorJGx0X2NfbmFtZV9saWJfaG9va1wKKyIgLWUgJ3MvXjogXCguKlwpIC4qJC8gIHtcIlwxXCIsICh2b2lkICopIDB9LC9wJyJcCisiIC1lICdzL14kc3ltY29kZSRzeW1jb2RlKiAuKiBcKGxpYi4qXCkkLyAge1wiXDFcIiwgKHZvaWQgKikgXCZcMX0sL3AnIlwKKyIgLWUgJ3MvXiRzeW1jb2RlJHN5bWNvZGUqIC4qIFwoLipcKSQvICB7XCJsaWJcMVwiLCAodm9pZCAqKSBcJlwxfSwvcCciCiAKICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogb3B0X2NyPQpAQCAtODY5OCwyMSArODc5OCwyNCBAQAogCiAgICMgV3JpdGUgdGhlIHJhdyBhbmQgQyBpZGVudGlmaWVycy4KICAgaWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSAgICAjIEZha2UgaXQgZm9yIGR1bXBiaW4gYW5kIHNheSBUIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbgotICAgICMgYW5kIEQgZm9yIGFueSBnbG9iYWwgdmFyaWFibGUuCisgICAgIyBGYWtlIGl0IGZvciBkdW1wYmluIGFuZCBzYXkgVCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24sCisgICAgIyBEIGZvciBhbnkgZ2xvYmFsIHZhcmlhYmxlIGFuZCBJIGZvciBhbnkgaW1wb3J0ZWQgdmFyaWFibGUuCiAgICAgIyBBbHNvIGZpbmQgQysrIGFuZCBfX2Zhc3RjYWxsIHN5bWJvbHMgZnJvbSBNU1ZDKyssCiAgICAgIyB3aGljaCBzdGFydCB3aXRoIEAgb3IgPy4KICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkQVdLICciXAogIiAgICAge2xhc3Rfc2VjdGlvbj1zZWN0aW9uOyBzZWN0aW9uPVwkIDN9OyJcCiAiICAgICAvXkNPRkYgU1lNQk9MIFRBQkxFL3tmb3IoaSBpbiBoaWRlKSBkZWxldGUgaGlkZVtpXX07IlwKICIgICAgIC9TZWN0aW9uIGxlbmd0aCAuKiNyZWxvY3MuKihwaWNrIGFueSkve2hpZGVbbGFzdF9zZWN0aW9uXT0xfTsiXAorIiAgICAgL14gKlN5bWJvbCBuYW1lICo6IC97c3BsaXQoXCQgMCxzbixcIjpcIik7IHNpPXN1YnN0cihzblsyXSwyKX07IlwKKyIgICAgIC9eICpUeXBlICo6IGNvZGUve3ByaW50IFwiVFwiLHNpLHN1YnN0cihzaSxsZW5ndGgocHJmeCkpfTsiXAorIiAgICAgL14gKlR5cGUgKjogZGF0YS97cHJpbnQgXCJJXCIsc2ksc3Vic3RyKHNpLGxlbmd0aChwcmZ4KSl9OyJcCiAiICAgICBcJCAwIX4vRXh0ZXJuYWwgKlx8L3tuZXh0fTsiXAogIiAgICAgLyAwKyBVTkRFRiAve25leHR9OyAvIFVOREVGIFwoW158XVwpKigpL3tuZXh0fTsiXAogIiAgICAge2lmKGhpZGVbc2VjdGlvbl0pIG5leHR9OyJcCi0iICAgICB7Zj0wfTsgXCQgMH4vXChcKS4qXHwve2Y9MX07IHtwcmludGYgZiA/IFwiVCBcIiA6IFwiRCBcIn07IlwKLSIgICAgIHtzcGxpdChcJCAwLCBhLCAvXHx8XHIvKTsgc3BsaXQoYVsyXSwgcyl9OyJcCi0iICAgICBzWzFdfi9eW0A/XS97cHJpbnQgc1sxXSwgc1sxXTsgbmV4dH07IlwKLSIgICAgIHNbMV1+cHJmeCB7c3BsaXQoc1sxXSx0LFwiQFwiKTsgcHJpbnQgdFsxXSwgc3Vic3RyKHRbMV0sbGVuZ3RoKHByZngpKX0iXAorIiAgICAge2Y9XCJEXCJ9OyBcJCAwfi9cKFwpLipcfC97Zj1cIlRcIn07IlwKKyIgICAgIHtzcGxpdChcJCAwLGEsL1x8fFxyLyk7IHNwbGl0KGFbMl0scyl9OyJcCisiICAgICBzWzFdfi9eW0A/XS97cHJpbnQgZixzWzFdLHNbMV07IG5leHR9OyJcCisiICAgICBzWzFdfnByZngge3NwbGl0KHNbMV0sdCxcIkBcIik7IHByaW50IGYsdFsxXSxzdWJzdHIodFsxXSxsZW5ndGgocHJmeCkpfSJcCiAiICAgICAnIHByZng9XiRhY19zeW1wcmZ4IgogICBlbHNlCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKQEAgLTg3NjAsMTEgKzg4NjMsMTEgQEAKIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CiAvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fQ1lHV0lOX18gfHwgZGVmaW5lZCBfV0lOMzJfV0NFCisvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNhbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKICAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KICMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0jZWxpZiBkZWZpbmVkKF9fb3NmX18pCisjZWxpZiBkZWZpbmVkIF9fb3NmX18KIC8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwogIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKICNlbHNlCkBAIC04NzkwLDcgKzg4OTMsNyBAQAogewogICB7ICJAUFJPR1JBTUAiLCAodm9pZCAqKSAwIH0sCiBfTFRfRU9GCi0JICAkU0VEICJzL14kc3ltY29kZSRzeW1jb2RlKiBcKC4qXCkgXCguKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC8iIDwgIiRubGlzdCIgfCAkR1JFUCAtdiBtYWluID4+IGNvbmZ0ZXN0LiRhY19leHQKKwkgICRTRUQgInMvXiRzeW1jb2RlJHN5bWNvZGUqIC4qIFwoLipcKSQvICB7XCJcMVwiLCAodm9pZCAqKSBcJlwxfSwvIiA8ICIkbmxpc3QiIHwgJEdSRVAgLXYgbWFpbiA+PiBjb25mdGVzdC4kYWNfZXh0CiAJICBjYXQgPDxcX0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CiAgIHswLCAodm9pZCAqKSAwfQogfTsKQEAgLTg4MTAsMTMgKzg5MTMsMTMgQEAKIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAogCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKIAkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKwkgIExJQlM9Y29uZnRzdG0uJGFjX29iamV4dAogCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgogCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQ7IHRoZW4KIAkgICAgcGlwZV93b3Jrcz15ZXMKIAkgIGZpCiAJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwpAQCAtODgzNyw3ICs4OTQwLDcgQEAKICAgcm0gLXJmIGNvbmZ0ZXN0KiBjb25mdHN0KgogCiAgICMgRG8gbm90IHVzZSB0aGUgZ2xvYmFsX3N5bWJvbF9waXBlIHVubGVzcyBpdCB3b3Jrcy4KLSAgaWYgdGVzdCAiJHBpcGVfd29ya3MiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiRwaXBlX3dvcmtzIjsgdGhlbgogICAgIGJyZWFrCiAgIGVsc2UKICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPQpAQCAtODg5MCw2ICs4OTkzLDE2IEBACiAKIAogCisKKworCisKKworCisKKworCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KIApAQCAtODkwMiw5ICs5MDE1LDkgQEAKIAogCiBsdF9zeXNyb290PQotY2FzZSAke3dpdGhfc3lzcm9vdH0gaW4gIygKK2Nhc2UgJHdpdGhfc3lzcm9vdCBpbiAjKAogIHllcykKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAogICAgZmkKICAgIDs7ICMoCkBAIC04OTE0LDggKzkwMjcsOCBAQAogIG5vfCcnKQogICAgOzsgIygKICAqKQotICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9zeXNyb290fSIgPiY1Ci0kYXNfZWNobyAiJHt3aXRoX3N5c3Jvb3R9IiA+JjY7IH0KKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9zeXNyb290IiA+JjUKKyRhc19lY2hvICIkd2l0aF9zeXNyb290IiA+JjY7IH0KICAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQogICAgOzsKIGVzYWMKQEAgLTg5MjcsMTggKzkwNDAsOTkgQEAKIAogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgd29ya2luZyBkZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYSB3b3JraW5nIGRkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfbHRfREQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBwcmludGYgMDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWYgPmNvbmZ0ZXN0LmkKK2NhdCBjb25mdGVzdC5pIGNvbmZ0ZXN0LmkgPmNvbmZ0ZXN0Mi5pCis6ICR7bHRfREQ6PSRERH0KK2lmIHRlc3QgLXogIiRsdF9ERCI7IHRoZW4KKyAgYWNfcGF0aF9sdF9ERF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX3Byb2cgaW4gZGQ7IGRvCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICBhY19wYXRoX2x0X0REPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgYXNfZm5fZXhlY3V0YWJsZV9wICIkYWNfcGF0aF9sdF9ERCIgfHwgY29udGludWUKK2lmICIkYWNfcGF0aF9sdF9ERCIgYnM9MzIgY291bnQ9MSA8Y29uZnRlc3QyLmkgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBjbXAgLXMgY29uZnRlc3QuaSBjb25mdGVzdC5vdXQgXAorICAmJiBhY19jdl9wYXRoX2x0X0REPSIkYWNfcGF0aF9sdF9ERCIgYWNfcGF0aF9sdF9ERF9mb3VuZD06CitmaQorICAgICAgJGFjX3BhdGhfbHRfRERfZm91bmQgJiYgYnJlYWsgMworICAgIGRvbmUKKyAgZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX2x0X0REIjsgdGhlbgorICAgIDoKKyAgZmkKK2Vsc2UKKyAgYWNfY3ZfcGF0aF9sdF9ERD0kbHRfREQKK2ZpCisKK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QyLmkgY29uZnRlc3Qub3V0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wYXRoX2x0X0REIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfcGF0aF9sdF9ERCIgPiY2OyB9CisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gdHJ1bmNhdGUgYmluYXJ5IHBpcGVzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byB0cnVuY2F0ZSBiaW5hcnkgcGlwZXMuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfdHJ1bmNhdGVfYmluKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgcHJpbnRmIDAxMjM0NTY3ODlhYmNkZWYwMTIzNDU2Nzg5YWJjZGVmID5jb25mdGVzdC5pCitjYXQgY29uZnRlc3QuaSBjb25mdGVzdC5pID5jb25mdGVzdDIuaQorbHRfY3ZfdHJ1bmNhdGVfYmluPQoraWYgIiRhY19jdl9wYXRoX2x0X0REIiBicz0zMiBjb3VudD0xIDxjb25mdGVzdDIuaSA+Y29uZnRlc3Qub3V0IDI+L2Rldi9udWxsOyB0aGVuCisgIGNtcCAtcyBjb25mdGVzdC5pIGNvbmZ0ZXN0Lm91dCBcCisgICYmIGx0X2N2X3RydW5jYXRlX2Jpbj0iJGFjX2N2X3BhdGhfbHRfREQgYnM9NDA5NiBjb3VudD0xIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QyLmkgY29uZnRlc3Qub3V0Cit0ZXN0IC16ICIkbHRfY3ZfdHJ1bmNhdGVfYmluIiAmJiBsdF9jdl90cnVuY2F0ZV9iaW49IiRTRUQgLWUgNHEiCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90cnVuY2F0ZV9iaW4iID4mNQorJGFzX2VjaG8gIiRsdF9jdl90cnVuY2F0ZV9iaW4iID4mNjsgfQorCisKKworCisKKworCisjIENhbGN1bGF0ZSBjY19iYXNlbmFtZS4gIFNraXAga25vd24gY29tcGlsZXIgd3JhcHBlcnMgYW5kIGNyb3NzLXByZWZpeC4KK2Z1bmNfY2NfYmFzZW5hbWUgKCkKK3sKKyAgICBmb3IgY2NfdGVtcCBpbiAkKiIiOyBkbworICAgICAgY2FzZSAkY2NfdGVtcCBpbgorICAgICAgICBjb21waWxlIHwgKltcXC9dY29tcGlsZSB8IGNjYWNoZSB8ICpbXFwvXWNjYWNoZSApIDs7CisgICAgICAgIGRpc3RjYyB8ICpbXFwvXWRpc3RjYyB8IHB1cmlmeSB8ICpbXFwvXXB1cmlmeSApIDs7CisgICAgICAgIFwtKikgOzsKKyAgICAgICAgKikgYnJlYWs7OworICAgICAgZXNhYworICAgIGRvbmUKKyAgICBmdW5jX2NjX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiRjY190ZW1wIiB8ICRTRUQgInMlLiovJSU7IHMlXiRob3N0X2FsaWFzLSUlImAKK30KKwogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgogICBlbmFibGV2YWw9JGVuYWJsZV9saWJ0b29sX2xvY2s7CiBmaQogCi10ZXN0ICJ4JGVuYWJsZV9saWJ0b29sX2xvY2siICE9IHhubyAmJiBlbmFibGVfbGlidG9vbF9sb2NrPXllcwordGVzdCBubyA9ICIkZW5hYmxlX2xpYnRvb2xfbG9jayIgfHwgZW5hYmxlX2xpYnRvb2xfbG9jaz15ZXMKIAogIyBTb21lIGZsYWdzIG5lZWQgdG8gYmUgcHJvcGFnYXRlZCB0byB0aGUgY29tcGlsZXIgb3IgbGlua2VyIGZvciBnb29kCiAjIGxpYnRvb2wgc3VwcG9ydC4KIGNhc2UgJGhvc3QgaW4KIGlhNjQtKi1ocHV4KikKLSAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgorICAjIEZpbmQgb3V0IHdoYXQgQUJJIGlzIGJlaW5nIHByb2R1Y2VkIGJ5IGFjX2NvbXBpbGUsIGFuZCBzZXQgbW9kZQorICAjIG9wdGlvbnMgYWNjb3JkaW5nbHkuCiAgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQpAQCAtODk0NywyNCArOTE0MSwyNSBAQAogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCiAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC4kYWNfb2JqZXh0YCBpbgogICAgICAgKkVMRi0zMiopCi0JSFBVWF9JQTY0X01PREU9IjMyIgorCUhQVVhfSUE2NF9NT0RFPTMyCiAJOzsKICAgICAgICpFTEYtNjQqKQotCUhQVVhfSUE2NF9NT0RFPSI2NCIKKwlIUFVYX0lBNjRfTU9ERT02NAogCTs7CiAgICAgZXNhYwogICBmaQogICBybSAtcmYgY29uZnRlc3QqCiAgIDs7CiAqLSotaXJpeDYqKQotICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBsaW5rZXIKKyAgIyBvcHRpb25zIGFjY29yZGluZ2x5LgogICBlY2hvICcjbGluZSAnJExJTkVOTycgImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCi0gICAgaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9wcm9nX2dudV9sZCI7IHRoZW4KICAgICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KIAkqMzItYml0KikKIAkgIExEPSIke0xELWxkfSAtbWVsZjMyYnNtaXAiCkBAIC04OTkzLDkgKzkxODgsNTAgQEAKICAgcm0gLXJmIGNvbmZ0ZXN0KgogICA7OwogCittaXBzNjQqLSpsaW51eCopCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBsaW5rZXIKKyAgIyBvcHRpb25zIGFjY29yZGluZ2x5LgorICBlY2hvICcjbGluZSAnJExJTkVOTycgImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAorICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgICAgZW11bD1lbGYKKyAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCisgICAgICAqMzItYml0KikKKwllbXVsPSIke2VtdWx9MzIiCisJOzsKKyAgICAgICo2NC1iaXQqKQorCWVtdWw9IiR7ZW11bH02NCIKKwk7OworICAgIGVzYWMKKyAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCisgICAgICAqTVNCKikKKwllbXVsPSIke2VtdWx9YnRzbWlwIgorCTs7CisgICAgICAqTFNCKikKKwllbXVsPSIke2VtdWx9bHRzbWlwIgorCTs7CisgICAgZXNhYworICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KKyAgICAgICpOMzIqKQorCWVtdWw9IiR7ZW11bH1uMzIiCisJOzsKKyAgICBlc2FjCisgICAgTEQ9IiR7TEQtbGR9IC1tICRlbXVsIgorICBmaQorICBybSAtcmYgY29uZnRlc3QqCisgIDs7CisKIHg4Nl82NC0qa2ZyZWVic2QqLWdudXx4ODZfNjQtKmxpbnV4Knxwb3dlcnBjKi0qbGludXgqfCBcCiBzMzkwKi0qbGludXgqfHMzOTAqLSp0cGYqfHNwYXJjKi0qbGludXgqKQotICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBsaW5rZXIKKyAgIyBvcHRpb25zIGFjY29yZGluZ2x5LiAgTm90ZSB0aGF0IHRoZSBsaXN0ZWQgY2FzZXMgb25seSBjb3ZlciB0aGUKKyAgIyBzaXR1YXRpb25zIHdoZXJlIGFkZGl0aW9uYWwgbGlua2VyIG9wdGlvbnMgYXJlIG5lZWRlZCAoc3VjaCBhcyB3aGVuCisgICMgZG9pbmcgMzItYml0IGNvbXBpbGF0aW9uIGZvciBhIGhvc3Qgd2hlcmUgbGQgZGVmYXVsdHMgdG8gNjQtYml0LCBvcgorICAjIHZpY2UgdmVyc2EpOyB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIG5vIGxpbmtlciBvcHRpb25zIGFyZSBuZWVkZWQgZG8KKyAgIyBub3QgYXBwZWFyIGluIHRoZSBsaXN0LgogICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKQEAgLTkwMTgsMTAgKzkyNTQsMTAgQEAKIAkJOzsKIAkgICAgZXNhYwogCSAgICA7OwotCSAgcG93ZXJwYzY0bGUtKikKKwkgIHBvd2VycGM2NGxlLSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGYzMmxwcGNsaW51eCIKIAkgICAgOzsKLQkgIHBvd2VycGM2NC0qKQorCSAgcG93ZXJwYzY0LSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGYzMnBwY2xpbnV4IgogCSAgICA7OwogCSAgczM5MHgtKmxpbnV4KikKQEAgLTkwNDAsMTAgKzkyNzYsMTAgQEAKIAkgIHg4Nl82NC0qbGludXgqKQogCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKIAkgICAgOzsKLQkgIHBvd2VycGNsZS0qKQorCSAgcG93ZXJwY2xlLSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGY2NGxwcGMiCiAJICAgIDs7Ci0JICBwb3dlcnBjLSopCisJICBwb3dlcnBjLSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGY2NHBwYyIKIAkgICAgOzsKIAkgIHMzOTAqLSpsaW51eCp8czM5MCotKnRwZiopCkBAIC05MDYxLDcgKzkyOTcsNyBAQAogCiAqLSotc2NvMy4ydjUqKQogICAjIE9uIFNDTyBPcGVuU2VydmVyIDUsIHdlIG5lZWQgLWJlbGYgdG8gZ2V0IGZ1bGwtZmVhdHVyZWQgYmluYXJpZXMuCi0gIFNBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICBTQVZFX0NGTEFHUz0kQ0ZMQUdTCiAgIENGTEFHUz0iJENGTEFHUyAtYmVsZiIKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIG5lZWRzIC1iZWxmIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGYuLi4gIiA+JjY7IH0KQEAgLTkxMDEsMTMgKzkzMzcsMTQgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2NjX25lZWRzX2JlbGYiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9jY19uZWVkc19iZWxmIiA+JjY7IH0KLSAgaWYgdGVzdCB4IiRsdF9jdl9jY19uZWVkc19iZWxmIiAhPSB4InllcyI7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgIT0gIiRsdF9jdl9jY19uZWVkc19iZWxmIjsgdGhlbgogICAgICMgdGhpcyBpcyBwcm9iYWJseSBnY2MgMi44LjAsIGVnY3MgMS4wIG9yIG5ld2VyOyBubyBuZWVkIGZvciAtYmVsZgotICAgIENGTEFHUz0iJFNBVkVfQ0ZMQUdTIgorICAgIENGTEFHUz0kU0FWRV9DRkxBR1MKICAgZmkKICAgOzsKICotKnNvbGFyaXMqKQotICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBsaW5rZXIKKyAgIyBvcHRpb25zIGFjY29yZGluZ2x5LgogICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKQEAgLTkxMTksNyArOTM1Niw3IEBACiAgICAgICBjYXNlICRsdF9jdl9wcm9nX2dudV9sZCBpbgogICAgICAgeWVzKikKICAgICAgICAgY2FzZSAkaG9zdCBpbgotICAgICAgICBpPzg2LSotc29sYXJpcyopCisgICAgICAgIGk/ODYtKi1zb2xhcmlzKnx4ODZfNjQtKi1zb2xhcmlzKikKICAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKICAgICAgICAgICA7OwogICAgICAgICBzcGFyYyotKi1zb2xhcmlzKikKQEAgLTkxMjgsNyArOTM2NSw3IEBACiAgICAgICAgIGVzYWMKICAgICAgICAgIyBHTlUgbGQgMi4yMSBpbnRyb2R1Y2VkIF9zb2wyIGVtdWxhdGlvbnMuICBVc2UgdGhlbSBpZiBhdmFpbGFibGUuCiAgICAgICAgIGlmICR7TEQtbGR9IC1WIHwgZ3JlcCBfc29sMiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgICAgICBMRD0iJHtMRC1sZH1fc29sMiIKKyAgICAgICAgICBMRD0ke0xELWxkfV9zb2wyCiAgICAgICAgIGZpCiAgICAgICAgIDs7CiAgICAgICAqKQpAQCAtOTE0NCw3ICs5MzgxLDcgQEAKICAgOzsKIGVzYWMKIAotbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCituZWVkX2xvY2tzPSRlbmFibGVfbGlidG9vbF9sb2NrCiAKIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KQEAgLTkyNTUsNyArOTQ5Miw3IEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotaWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzICE9ICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIjsgdGhlbgogICBNQU5JRkVTVF9UT09MPToKIGZpCiAKQEAgLTk3NTgsNyArOTk5NSw3IEBACiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Q9bm8KLSAgICAgIGlmIHRlc3QgLXogIiR7TFRfTVVMVElfTU9EVUxFfSI7IHRoZW4KKyAgICAgIGlmIHRlc3QgLXogIiRMVF9NVUxUSV9NT0RVTEUiOyB0aGVuCiAJIyBCeSBkZWZhdWx0IHdlIHdpbGwgYWRkIHRoZSAtc2luZ2xlX21vZHVsZSBmbGFnLiBZb3UgY2FuIG92ZXJyaWRlCiAJIyBieSBlaXRoZXIgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTFRfTVVMVElfTU9EVUxFCiAJIyBub24tZW1wdHkgYXQgY29uZmlndXJlIHRpbWUsIG9yIGJ5IGFkZGluZyAtbXVsdGlfbW9kdWxlIHRvIHRoZQpAQCAtOTc3Niw3ICsxMDAxMyw3IEBACiAJICBjYXQgY29uZnRlc3QuZXJyID4mNQogCSMgT3RoZXJ3aXNlLCBpZiB0aGUgb3V0cHV0IHdhcyBjcmVhdGVkIHdpdGggYSAwIGV4aXQgY29kZSBmcm9tCiAJIyB0aGUgY29tcGlsZXIsIGl0IHdvcmtlZC4KLQllbGlmIHRlc3QgLWYgbGliY29uZnRlc3QuZHlsaWIgJiYgdGVzdCAkX2x0X3Jlc3VsdCAtZXEgMDsgdGhlbgorCWVsaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYiAmJiB0ZXN0IDAgPSAiJF9sdF9yZXN1bHQiOyB0aGVuCiAJICBsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPXllcwogCWVsc2UKIAkgIGNhdCBjb25mdGVzdC5lcnIgPiY1CkBAIC05ODE1LDcgKzEwMDUyLDcgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotCUxERkxBR1M9IiRzYXZlX0xERkxBR1MiCisJTERGTEFHUz0kc2F2ZV9MREZMQUdTCiAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdCIgPiY1CkBAIC05ODQ0LDcgKzEwMDgxLDcgQEAKICAgICAgIF9sdF9yZXN1bHQ9JD8KICAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyICYmICRHUkVQIGZvcmNlX2xvYWQgY29uZnRlc3QuZXJyOyB0aGVuCiAJY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgICAgIGVsaWYgdGVzdCAtZiBjb25mdGVzdCAmJiB0ZXN0ICRfbHRfcmVzdWx0IC1lcSAwICYmICRHUkVQIGZvcmNlZF9sb2FkIGNvbmZ0ZXN0ID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKyAgICAgIGVsaWYgdGVzdCAtZiBjb25mdGVzdCAmJiB0ZXN0IDAgPSAiJF9sdF9yZXN1bHQiICYmICRHUkVQIGZvcmNlZF9sb2FkIGNvbmZ0ZXN0ID4vZGV2L251bGwgMj4mMTsgdGhlbgogCWx0X2N2X2xkX2ZvcmNlX2xvYWQ9eWVzCiAgICAgICBlbHNlCiAJY2F0IGNvbmZ0ZXN0LmVyciA+JjUKQEAgLTk4NTcsMzIgKzEwMDk0LDMyIEBACiAkYXNfZWNobyAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID4mNjsgfQogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICByaGFwc29keSogfCBkYXJ3aW4xLlswMTJdKQotICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OworICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR3bC11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKICAgICBkYXJ3aW4xLiopCi0gICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tZmxhdF9uYW1lc3BhY2UgJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CisgICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHdsLWZsYXRfbmFtZXNwYWNlICR3bC11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKICAgICBkYXJ3aW4qKSAjIGRhcndpbiA1Lnggb24KICAgICAgICMgaWYgcnVubmluZyBvbiAxMC41IG9yIGxhdGVyLCB0aGUgZGVwbG95bWVudCB0YXJnZXQgZGVmYXVsdHMKICAgICAgICMgdG8gdGhlIE9TIHZlcnNpb24sIGlmIG9uIHg4NiwgYW5kIDEwLjQsIHRoZSBkZXBsb3ltZW50CiAgICAgICAjIHRhcmdldCBkZWZhdWx0cyB0byAxMC40LiBEb24ndCB5b3UgbG92ZSBpdD8KICAgICAgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0sJGhvc3QgaW4KIAkxMC4wLCo4NiotZGFyd2luOCp8MTAuMCwqLWRhcndpbls5MV0qKQotCSAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJyA7OwotCTEwLlswMTJdKikKLQkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS1mbGF0X25hbWVzcGFjZSAke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKKwkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPSckd2wtdW5kZWZpbmVkICR7d2x9ZHluYW1pY19sb29rdXAnIDs7CisJMTAuWzAxMl1bLC5dKikKKwkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPSckd2wtZmxhdF9uYW1lc3BhY2UgJHdsLXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OwogCTEwLiopCi0JICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9ZHluYW1pY19sb29rdXAnIDs7CisJICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHdsLXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJyA7OwogICAgICAgZXNhYwogICAgIDs7CiAgIGVzYWMKLSAgICBpZiB0ZXN0ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgPSAieWVzIjsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kIjsgdGhlbgogICAgICAgX2x0X2Rhcl9zaW5nbGVfbW9kPSckc2luZ2xlX21vZHVsZScKICAgICBmaQotICAgIGlmIHRlc3QgIiRsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QiID0gInllcyI7IHRoZW4KLSAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9JyAke3dsfS1leHBvcnRlZF9zeW1ib2xzX2xpc3QsJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bScKKyAgICBpZiB0ZXN0IHllcyA9ICIkbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0IjsgdGhlbgorICAgICAgX2x0X2Rhcl9leHBvcnRfc3ltcz0nICR3bC1leHBvcnRlZF9zeW1ib2xzX2xpc3QsJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUtc3ltYm9scy5leHBzeW0nCiAgICAgZWxzZQotICAgICAgX2x0X2Rhcl9leHBvcnRfc3ltcz0nfiROTUVESVQgLXMgJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bSAke2xpYn0nCisgICAgICBfbHRfZGFyX2V4cG9ydF9zeW1zPSd+JE5NRURJVCAtcyAkb3V0cHV0X29iamRpci8kbGlibmFtZS1zeW1ib2xzLmV4cHN5bSAkbGliJwogICAgIGZpCi0gICAgaWYgdGVzdCAiJERTWU1VVElMIiAhPSAiOiIgJiYgdGVzdCAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID0gIm5vIjsgdGhlbgorICAgIGlmIHRlc3QgOiAhPSAiJERTWU1VVElMIiAmJiB0ZXN0IG5vID0gIiRsdF9jdl9sZF9mb3JjZV9sb2FkIjsgdGhlbgogICAgICAgX2x0X2RzeW11dGlsPSd+JERTWU1VVElMICRsaWIgfHwgOicKICAgICBlbHNlCiAgICAgICBfbHRfZHN5bXV0aWw9CkBAIC05ODkwLDYgKzEwMTI3LDQxIEBACiAgICAgOzsKICAgZXNhYwogCisjIGZ1bmNfbXVuZ2VfcGF0aF9saXN0IFZBUklBQkxFIFBBVEgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVkFSSUFCTEUgaXMgbmFtZSBvZiB2YXJpYWJsZSBjb250YWluaW5nIF9zcGFjZV8gc2VwYXJhdGVkIGxpc3Qgb2YKKyMgZGlyZWN0b3JpZXMgdG8gYmUgbXVuZ2VkIGJ5IHRoZSBjb250ZW50cyBvZiBQQVRILCB3aGljaCBpcyBzdHJpbmcKKyMgaGF2aW5nIGEgZm9ybWF0OgorIyAiRElSWzpESVJdOiIKKyMgICAgICAgc3RyaW5nICJESVJbIERJUl0iIHdpbGwgYmUgcHJlcGVuZGVkIHRvIFZBUklBQkxFCisjICI6RElSWzpESVJdIgorIyAgICAgICBzdHJpbmcgIkRJUlsgRElSXSIgd2lsbCBiZSBhcHBlbmRlZCB0byBWQVJJQUJMRQorIyAiRElSUFs6RElSUF06OltESVJBOl1ESVJBIgorIyAgICAgICBzdHJpbmcgIkRJUlBbIERJUlBdIiB3aWxsIGJlIHByZXBlbmRlZCB0byBWQVJJQUJMRSBhbmQgc3RyaW5nCisjICAgICAgICJESVJBWyBESVJBXSIgd2lsbCBiZSBhcHBlbmRlZCB0byBWQVJJQUJMRQorIyAiRElSWzpESVJdIgorIyAgICAgICBWQVJJQUJMRSB3aWxsIGJlIHJlcGxhY2VkIGJ5ICJESVJbIERJUl0iCitmdW5jX211bmdlX3BhdGhfbGlzdCAoKQoreworICAgIGNhc2UgeCQyIGluCisgICAgeCkKKyAgICAgICAgOzsKKyAgICAqOikKKyAgICAgICAgZXZhbCAkMT1cImAkRUNITyAkMiB8ICRTRUQgJ3MvOi8gL2cnYCBcJCQxXCIKKyAgICAgICAgOzsKKyAgICB4OiopCisgICAgICAgIGV2YWwgJDE9XCJcJCQxIGAkRUNITyAkMiB8ICRTRUQgJ3MvOi8gL2cnYFwiCisgICAgICAgIDs7CisgICAgKjo6KikKKyAgICAgICAgZXZhbCAkMT1cIlwkJDFcIGAkRUNITyAkMiB8ICRTRUQgLWUgJ3MvLio6Oi8vJyAtZSAncy86LyAvZydgXCIKKyAgICAgICAgZXZhbCAkMT1cImAkRUNITyAkMiB8ICRTRUQgLWUgJ3MvOjouKi8vJyAtZSAncy86LyAvZydgXCBcJCQxXCIKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBldmFsICQxPVwiYCRFQ0hPICQyIHwgJFNFRCAncy86LyAvZydgXCIKKyAgICAgICAgOzsKKyAgICBlc2FjCit9CisKIGFjX2V4dD1jCiBhY19jcHA9JyRDUFAgJENQUEZMQUdTJwogYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwpAQCAtMTAxNzEsMTAgKzEwNDQzLDEwIEBACiBkb25lCiAKIAotICBHU1RfQ1VSUkVOVD02MDMKKyAgR1NUX0NVUlJFTlQ9NzkxCiAgIEdTVF9SRVZJU0lPTj0wCi0gIEdTVF9BR0U9NjAzCi0gIEdTVF9MSUJWRVJTSU9OPTYwMzowOjYwMworICBHU1RfQUdFPTc5MQorICBHU1RfTElCVkVSU0lPTj03OTE6MDo3OTEKIAogCiAKQEAgLTEwNTAzLDE0ICsxMDc3NSwxNCBAQAogICAgICopCiAgICAgIGVuYWJsZV9zdGF0aWM9bm8KICAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgbHRfc2F2ZV9pZnM9JElGUzsgSUZTPSRJRlMkUEFUSF9TRVBBUkFUT1IsCiAgICAgICBmb3IgcGtnIGluICRlbmFibGV2YWw7IGRvCi0JSUZTPSIkbHRfc2F2ZV9pZnMiCisJSUZTPSRsdF9zYXZlX2lmcwogCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCiAJICBlbmFibGVfc3RhdGljPXllcwogCWZpCiAgICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKICAgICAgIDs7CiAgICAgZXNhYwogZWxzZQpAQCAtMTA1MzcsMTQgKzEwODA5LDE0IEBACiAgICAgKikKICAgICAgIGVuYWJsZV9zaGFyZWQ9bm8KICAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgbHRfc2F2ZV9pZnM9JElGUzsgSUZTPSRJRlMkUEFUSF9TRVBBUkFUT1IsCiAgICAgICBmb3IgcGtnIGluICRlbmFibGV2YWw7IGRvCi0JSUZTPSIkbHRfc2F2ZV9pZnMiCisJSUZTPSRsdF9zYXZlX2lmcwogCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCiAJICBlbmFibGVfc2hhcmVkPXllcwogCWZpCiAgICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKICAgICAgIDs7CiAgICAgZXNhYwogZWxzZQpAQCAtMTA1NjksMTQgKzEwODQxLDE0IEBACiAgICAgKikKICAgICAgIHBpY19tb2RlPWRlZmF1bHQKICAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgbHRfc2F2ZV9pZnM9JElGUzsgSUZTPSRJRlMkUEFUSF9TRVBBUkFUT1IsCiAgICAgICBmb3IgbHRfcGtnIGluICR3aXRodmFsOyBkbwotCUlGUz0iJGx0X3NhdmVfaWZzIgorCUlGUz0kbHRfc2F2ZV9pZnMKIAlpZiB0ZXN0ICJYJGx0X3BrZyIgPSAiWCRsdF9wIjsgdGhlbgogCSAgcGljX21vZGU9eWVzCiAJZmkKICAgICAgIGRvbmUKLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgSUZTPSRsdF9zYXZlX2lmcwogICAgICAgOzsKICAgICBlc2FjCiBlbHNlCkBAIC0xMDU4NCw4ICsxMDg1Niw2IEBACiBmaQogCiAKLXRlc3QgLXogIiRwaWNfbW9kZSIgJiYgcGljX21vZGU9ZGVmYXVsdAotCiAKIAogCkBAIC0xMDYwMSwxNCArMTA4NzEsMTQgQEAKICAgICAqKQogICAgICAgZW5hYmxlX2Zhc3RfaW5zdGFsbD1ubwogICAgICAgIyBMb29rIGF0IHRoZSBhcmd1bWVudCB3ZSBnb3QuICBXZSB1c2UgYWxsIHRoZSBjb21tb24gbGlzdCBzZXBhcmF0b3JzLgotICAgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSRQQVRIX1NFUEFSQVRPUiwiCisgICAgICBsdF9zYXZlX2lmcz0kSUZTOyBJRlM9JElGUyRQQVRIX1NFUEFSQVRPUiwKICAgICAgIGZvciBwa2cgaW4gJGVuYWJsZXZhbDsgZG8KLQlJRlM9IiRsdF9zYXZlX2lmcyIKKwlJRlM9JGx0X3NhdmVfaWZzCiAJaWYgdGVzdCAiWCRwa2ciID0gIlgkcCI7IHRoZW4KIAkgIGVuYWJsZV9mYXN0X2luc3RhbGw9eWVzCiAJZmkKICAgICAgIGRvbmUKLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgSUZTPSRsdF9zYXZlX2lmcwogICAgICAgOzsKICAgICBlc2FjCiBlbHNlCkBAIC0xMDYyMiwxMSArMTA4OTIsNjMgQEAKIAogCiAKKyAgc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWM9CitjYXNlICRob3N0LCRlbmFibGVfc2hhcmVkIGluCitwb3dlciotKi1haXhbNS05XSoseWVzKQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoaWNoIHZhcmlhbnQgb2Ygc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyB0byBwcm92aWRlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoaWNoIHZhcmlhbnQgb2Ygc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyB0byBwcm92aWRlLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYWl4LXNvbmFtZSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfYWl4X3NvbmFtZStzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfYWl4X3NvbmFtZTsgY2FzZSAkd2l0aHZhbCBpbgorICAgIGFpeHxzdnI0fGJvdGgpCisgICAgICA7OworICAgICopCisgICAgICBhc19mbl9lcnJvciAkPyAiVW5rbm93biBhcmd1bWVudCB0byAtLXdpdGgtYWl4LXNvbmFtZSIgIiRMSU5FTk8iIDUKKyAgICAgIDs7CisgICAgZXNhYworICAgIGx0X2N2X3dpdGhfYWl4X3NvbmFtZT0kd2l0aF9haXhfc29uYW1lCitlbHNlCisgIGlmICR7bHRfY3Zfd2l0aF9haXhfc29uYW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3Zfd2l0aF9haXhfc29uYW1lPWFpeAorZmkKKworICAgIHdpdGhfYWl4X3NvbmFtZT0kbHRfY3Zfd2l0aF9haXhfc29uYW1lCitmaQorCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9haXhfc29uYW1lIiA+JjUKKyRhc19lY2hvICIkd2l0aF9haXhfc29uYW1lIiA+JjY7IH0KKyAgaWYgdGVzdCBhaXggIT0gIiR3aXRoX2FpeF9zb25hbWUiOyB0aGVuCisgICAgIyBGb3IgdGhlIEFJWCB3YXkgb2YgbXVsdGlsaWIsIHdlIG5hbWUgdGhlIHNoYXJlZCBhcmNoaXZlIG1lbWJlcgorICAgICMgYmFzZWQgb24gdGhlIGJpdHdpZHRoIHVzZWQsIHRyYWRpdGlvbmFsbHkgJ3Noci5vJyBvciAnc2hyXzY0Lm8nLAorICAgICMgYW5kICdzaHIuaW1wJyBvciAnc2hyXzY0LmltcCcsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBJbXBvcnQgRmlsZS4KKyAgICAjIEV2ZW4gd2hlbiBHTlUgY29tcGlsZXJzIGlnbm9yZSBPQkpFQ1RfTU9ERSBidXQgbmVlZCAnLW1haXg2NCcgZmxhZywKKyAgICAjIHRoZSBBSVggdG9vbGNoYWluIHdvcmtzIGJldHRlciB3aXRoIE9CSkVDVF9NT0RFIHNldCAoZGVmYXVsdCAzMikuCisgICAgaWYgdGVzdCA2NCA9ICIke09CSkVDVF9NT0RFLTMyfSI7IHRoZW4KKyAgICAgIHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjPXNocl82NAorICAgIGVsc2UKKyAgICAgIHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjPXNocgorICAgIGZpCisgIGZpCisgIDs7CisqKQorICB3aXRoX2FpeF9zb25hbWU9YWl4CisgIDs7Citlc2FjCisKKworCisKKworCisKIAogCiAKICMgVGhpcyBjYW4gYmUgdXNlZCB0byByZWJ1aWxkIGxpYnRvb2wgd2hlbiBuZWVkZWQKLUxJQlRPT0xfREVQUz0iJGx0bWFpbiIKK0xJQlRPT0xfREVQUz0kbHRtYWluCiAKICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCiBMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKQEAgLTEwNjc1LDcgKzEwOTk3LDcgQEAKIAogCiAKLWlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuCitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iOyB0aGVuCiAgICBzZXRvcHQgTk9fR0xPQl9TVUJTVAogZmkKIApAQCAtMTA3MTQsNyArMTEwMzYsNyBAQAogICAjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKICAgIyByZWFzb24sIGlmIHdlIHNldCB0aGUgQ09MTEVDVF9OQU1FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHByb2JsZW1zCiAgICMgdmFuaXNoIGluIGEgcHVmZiBvZiBzbW9rZS4KLSAgaWYgdGVzdCAiWCR7Q09MTEVDVF9OQU1FUytzZXR9IiAhPSBYc2V0OyB0aGVuCisgIGlmIHRlc3Qgc2V0ICE9ICIke0NPTExFQ1RfTkFNRVMrc2V0fSI7IHRoZW4KICAgICBDT0xMRUNUX05BTUVTPQogICAgIGV4cG9ydCBDT0xMRUNUX05BTUVTCiAgIGZpCkBAIC0xMDcyNSwxNCArMTEwNDcsMTQgQEAKIG9maWxlPWxpYnRvb2wKIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAKLSMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgJy5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCiAjIHdoaWNoIG5lZWRzICcubGliJykuCiBsaWJleHQ9YQogCi13aXRoX2dudV9sZD0iJGx0X2N2X3Byb2dfZ251X2xkIgord2l0aF9nbnVfbGQ9JGx0X2N2X3Byb2dfZ251X2xkCiAKLW9sZF9DQz0iJENDIgotb2xkX0NGTEFHUz0iJENGTEFHUyIKK29sZF9DQz0kQ0MKK29sZF9DRkxBR1M9JENGTEFHUwogCiAjIFNldCBzYW5lIGRlZmF1bHRzIGZvciB2YXJpb3VzIHZhcmlhYmxlcwogdGVzdCAteiAiJENDIiAmJiBDQz1jYwpAQCAtMTA3NDEsMTUgKzExMDYzLDggQEAKIHRlc3QgLXogIiRMRCIgJiYgTEQ9bGQKIHRlc3QgLXogIiRhY19vYmpleHQiICYmIGFjX29iamV4dD1vCiAKLWZvciBjY190ZW1wIGluICRjb21waWxlciIiOyBkbwotICBjYXNlICRjY190ZW1wIGluCi0gICAgY29tcGlsZSB8ICpbXFwvXWNvbXBpbGUgfCBjY2FjaGUgfCAqW1xcL11jY2FjaGUgKSA7OwotICAgIGRpc3RjYyB8ICpbXFwvXWRpc3RjYyB8IHB1cmlmeSB8ICpbXFwvXXB1cmlmeSApIDs7Ci0gICAgXC0qKSA7OwotICAgICopIGJyZWFrOzsKLSAgZXNhYwotZG9uZQotY2NfYmFzZW5hbWU9YCRFQ0hPICIkY2NfdGVtcCIgfCAkU0VEICJzJS4qLyUlOyBzJV4kaG9zdF9hbGlhcy0lJSJgCitmdW5jX2NjX2Jhc2VuYW1lICRjb21waWxlcgorY2NfYmFzZW5hbWU9JGZ1bmNfY2NfYmFzZW5hbWVfcmVzdWx0CiAKIAogIyBPbmx5IHBlcmZvcm0gdGhlIGNoZWNrIGZvciBmaWxlLCBpZiB0aGUgY2hlY2sgbWV0aG9kIHJlcXVpcmVzIGl0CkBAIC0xMDc2NCwyMiArMTEwNzksMjIgQEAKIGVsc2UKICAgY2FzZSAkTUFHSUNfQ01EIGluCiBbXFwvKl0gfCAgPzpbXFwvXSopCi0gIGx0X2N2X3BhdGhfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgbHRfY3ZfcGF0aF9NQUdJQ19DTUQ9JE1BR0lDX0NNRCAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KICAgOzsKICopCi0gIGx0X3NhdmVfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIgotICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgbHRfc2F2ZV9NQUdJQ19DTUQ9JE1BR0lDX0NNRAorICBsdF9zYXZlX2lmcz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCiAgIGFjX2R1bW15PSIvdXNyL2JpbiRQQVRIX1NFUEFSQVRPUiRQQVRIIgogICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICBJRlM9JGx0X3NhdmVfaWZzCiAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgICBpZiB0ZXN0IC1mICRhY19kaXIvJHthY190b29sX3ByZWZpeH1maWxlOyB0aGVuCi0gICAgICBsdF9jdl9wYXRoX01BR0lDX0NNRD0iJGFjX2Rpci8ke2FjX3Rvb2xfcHJlZml4fWZpbGUiCisgICAgaWYgdGVzdCAtZiAiJGFjX2Rpci8ke2FjX3Rvb2xfcHJlZml4fWZpbGUiOyB0aGVuCisgICAgICBsdF9jdl9wYXRoX01BR0lDX0NNRD0kYWNfZGlyLyIke2FjX3Rvb2xfcHJlZml4fWZpbGUiCiAgICAgICBpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY190ZXN0X2ZpbGUiOyB0aGVuCiAJY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KIAkiZmlsZV9tYWdpYyAiKikKIAkgIGZpbGVfbWFnaWNfcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiZmlsZV9tYWdpYyBcKC4qXCkiYAotCSAgTUFHSUNfQ01EPSIkbHRfY3ZfcGF0aF9NQUdJQ19DTUQiCisJICBNQUdJQ19DTUQ9JGx0X2N2X3BhdGhfTUFHSUNfQ01ECiAJICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcJGZpbGVfbWFnaWNfdGVzdF9maWxlIDI+IC9kZXYvbnVsbCB8CiAJICAgICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCiAJICAgIDoKQEAgLTEwODAyLDEzICsxMTExNywxMyBAQAogICAgICAgYnJlYWsKICAgICBmaQogICBkb25lCi0gIElGUz0iJGx0X3NhdmVfaWZzIgotICBNQUdJQ19DTUQ9IiRsdF9zYXZlX01BR0lDX0NNRCIKKyAgSUZTPSRsdF9zYXZlX2lmcworICBNQUdJQ19DTUQ9JGx0X3NhdmVfTUFHSUNfQ01ECiAgIDs7CiBlc2FjCiBmaQogCi1NQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKK01BR0lDX0NNRD0kbHRfY3ZfcGF0aF9NQUdJQ19DTUQKIGlmIHRlc3QgLW4gIiRNQUdJQ19DTUQiOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFHSUNfQ01EIiA+JjUKICRhc19lY2hvICIkTUFHSUNfQ01EIiA+JjY7IH0KQEAgLTEwODMwLDIyICsxMTE0NSwyMiBAQAogZWxzZQogICBjYXNlICRNQUdJQ19DTUQgaW4KIFtcXC8qXSB8ICA/OltcXC9dKikKLSAgbHRfY3ZfcGF0aF9NQUdJQ19DTUQ9IiRNQUdJQ19DTUQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICBsdF9jdl9wYXRoX01BR0lDX0NNRD0kTUFHSUNfQ01EICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgogICA7OwogKikKLSAgbHRfc2F2ZV9NQUdJQ19DTUQ9IiRNQUdJQ19DTUQiCi0gIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICBsdF9zYXZlX01BR0lDX0NNRD0kTUFHSUNfQ01ECisgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKICAgYWNfZHVtbXk9Ii91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgiCiAgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgIElGUz0kbHRfc2F2ZV9pZnMKICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotICAgIGlmIHRlc3QgLWYgJGFjX2Rpci9maWxlOyB0aGVuCi0gICAgICBsdF9jdl9wYXRoX01BR0lDX0NNRD0iJGFjX2Rpci9maWxlIgorICAgIGlmIHRlc3QgLWYgIiRhY19kaXIvZmlsZSI7IHRoZW4KKyAgICAgIGx0X2N2X3BhdGhfTUFHSUNfQ01EPSRhY19kaXIvImZpbGUiCiAgICAgICBpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY190ZXN0X2ZpbGUiOyB0aGVuCiAJY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KIAkiZmlsZV9tYWdpYyAiKikKIAkgIGZpbGVfbWFnaWNfcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiZmlsZV9tYWdpYyBcKC4qXCkiYAotCSAgTUFHSUNfQ01EPSIkbHRfY3ZfcGF0aF9NQUdJQ19DTUQiCisJICBNQUdJQ19DTUQ9JGx0X2N2X3BhdGhfTUFHSUNfQ01ECiAJICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcJGZpbGVfbWFnaWNfdGVzdF9maWxlIDI+IC9kZXYvbnVsbCB8CiAJICAgICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCiAJICAgIDoKQEAgLTEwODY4LDEzICsxMTE4MywxMyBAQAogICAgICAgYnJlYWsKICAgICBmaQogICBkb25lCi0gIElGUz0iJGx0X3NhdmVfaWZzIgotICBNQUdJQ19DTUQ9IiRsdF9zYXZlX01BR0lDX0NNRCIKKyAgSUZTPSRsdF9zYXZlX2lmcworICBNQUdJQ19DTUQ9JGx0X3NhdmVfTUFHSUNfQ01ECiAgIDs7CiBlc2FjCiBmaQogCi1NQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKK01BR0lDX0NNRD0kbHRfY3ZfcGF0aF9NQUdJQ19DTUQKIGlmIHRlc3QgLW4gIiRNQUdJQ19DTUQiOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFHSUNfQ01EIiA+JjUKICRhc19lY2hvICIkTUFHSUNfQ01EIiA+JjY7IH0KQEAgLTEwODk1LDcgKzExMjEwLDcgQEAKIAogIyBVc2UgQyBmb3IgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBpbiB0aGUgbGlidG9vbCBzY3JpcHQKIAotbHRfc2F2ZV9DQz0iJENDIgorbHRfc2F2ZV9DQz0kQ0MKIGFjX2V4dD1jCiBhY19jcHA9JyRDUFAgJENQUEZMQUdTJwogYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwpAQCAtMTA5NTcsNyArMTEyNzIsNyBAQAogCiBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0KIAotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgIG52Y2MqKQogICAgIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPScgLVhjb21waWxlciAtZm5vLWJ1aWx0aW4nIDs7CkBAIC0xMDk3Myw3ICsxMTI4OCw3IEBACiAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zPW5vCiAgICBhY19vdXRmaWxlPWNvbmZ0ZXN0LiRhY19vYmpleHQKICAgIGVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAotICAgbHRfY29tcGlsZXJfZmxhZz0iLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9ucyIKKyAgIGx0X2NvbXBpbGVyX2ZsYWc9Ii1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMiICAjIyBleGNsdWRlIGZyb20gc2NfdXNlbGVzc19xdW90ZXNfaW5fYXNzaWdubWVudAogICAgIyBJbnNlcnQgdGhlIG9wdGlvbiBlaXRoZXIgKDEpIGFmdGVyIHRoZSBsYXN0ICpGTEFHUyB2YXJpYWJsZSwgb3IKICAgICMgKDIpIGJlZm9yZSBhIHdvcmQgY29udGFpbmluZyAiY29uZnRlc3QuIiwgb3IgKDMpIGF0IHRoZSBlbmQuCiAgICAjIE5vdGUgdGhhdCAkYWNfY29tcGlsZSBpdHNlbGYgZG9lcyBub3QgY29udGFpbiBiYWNrc2xhc2hlcyBhbmQgYmVnaW5zCkBAIC0xMTAwMyw3ICsxMTMxOCw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnMiID4mNjsgfQogCi1pZiB0ZXN0IHgiJGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zIiA9IHh5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3J0dGlfZXhjZXB0aW9ucyI7IHRoZW4KICAgICBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0iJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMiCiBlbHNlCiAgICAgOgpAQCAtMTEwMjEsMTcgKzExMzM2LDE4IEBACiBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KIAogCi0gIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLXN0YXRpYycKIAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgIGFpeCopCiAgICAgICAjIEFsbCBBSVggY29kZSBpcyBQSUMuCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KIAkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgogCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgIGZpCisgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLWZQSUMnCiAgICAgICA7OwogCiAgICAgYW1pZ2FvcyopCkBAIC0xMTA0Miw4ICsxMTM1OCw4IEBACiAgICAgICAgIDs7CiAgICAgICBtNjhrKQogICAgICAgICAgICAgIyBGSVhNRTogd2UgbmVlZCBhdCBsZWFzdCA2ODAyMCBjb2RlIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMsIGJ1dAotICAgICAgICAgICAgIyBhZGRpbmcgdGhlIGAtbTY4MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBiZXR0ZXIsCi0gICAgICAgICAgICAjIGxpa2UgYC1tNjgwNDAnLgorICAgICAgICAgICAgIyBhZGRpbmcgdGhlICctbTY4MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBiZXR0ZXIsCisgICAgICAgICAgICAjIGxpa2UgJy1tNjgwNDAnLgogICAgICAgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1tNjgwMjAgLXJlc2lkZW50MzIgLW1hbHdheXMtcmVzdG9yZS1hNCcKICAgICAgICAgOzsKICAgICAgIGVzYWMKQEAgLTExMDU5LDYgKzExMzc1LDExIEBACiAgICAgICAjIEFsdGhvdWdoIHRoZSBjeWd3aW4gZ2NjIGlnbm9yZXMgLWZQSUMsIHN0aWxsIG5lZWQgdGhpcyBmb3Igb2xkLXN0eWxlCiAgICAgICAjICgtLWRpc2FibGUtYXV0by1pbXBvcnQpIGxpYnJhcmllcwogICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1ERExMX0VYUE9SVCcKKyAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIG9zMiopCisJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9JyR3bC1zdGF0aWMnCisJOzsKKyAgICAgIGVzYWMKICAgICAgIDs7CiAKICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQpAQCAtMTExMjksNyArMTE0NTAsNyBAQAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBhaXgqKQogICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgICAgICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogCSMgQUlYIDUgbm93IHN1cHBvcnRzIElBNjQgcHJvY2Vzc29yCiAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogICAgICAgZWxzZQpAQCAtMTExMzcsMTAgKzExNDU4LDI5IEBACiAgICAgICBmaQogICAgICAgOzsKIAorICAgIGRhcndpbiogfCByaGFwc29keSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBvbiB0aGlzIHBsYXRmb3JtCisgICAgICAjIENvbW1vbiBzeW1ib2xzIG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCisgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLWZuby1jb21tb24nCisgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgbmFnZm9yKikKKyAgICAgICAgIyBOQUcgRm9ydHJhbiBjb21waWxlcgorICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisgICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworCiAgICAgbWluZ3cqIHwgY3lnd2luKiB8IHB3MzIqIHwgb3MyKiB8IGNlZ2NjKikKICAgICAgICMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKICAgICAgICMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCiAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLURETExfRVhQT1JUJworICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgb3MyKikKKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nJHdsLXN0YXRpYycKKwk7OworICAgICAgZXNhYwogICAgICAgOzsKIAogICAgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQpAQCAtMTExNTYsNyArMTE0OTYsNyBAQAogCTs7CiAgICAgICBlc2FjCiAgICAgICAjIElzIHRoZXJlIGEgYmV0dGVyIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIHRoYXQgd29ya3Mgd2l0aCB0aGUgYnVuZGxlZCBDQz8KLSAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPScke3dsfS1hICR7d2x9YXJjaGl2ZScKKyAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSckd2wtYSAke3dsfWFyY2hpdmUnCiAgICAgICA7OwogCiAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKQEAgLTExMTY3LDcgKzExNTA3LDcgQEAKIAogICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSB8IGdudSopCiAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgIyBvbGQgSW50ZWwgZm9yIHg4Nl82NCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCisgICAgICAjIG9sZCBJbnRlbCBmb3IgeDg2XzY0LCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCiAgICAgICBlY2MqKQogCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCiAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwpAQCAtMTExOTIsNiArMTE1MzIsMTIgQEAKIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCiAJOzsKKyAgICAgIHRjYyopCisJIyBGYWJyaWNlIEJlbGxhcmQgZXQgYWwncyBUaW55IEMgQ29tcGlsZXIKKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworCWx0X3Byb2dfY29tcGlsZXJfcGljPSctZlBJQycKKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLXN0YXRpYycKKwk7OwogICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAogCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCkBAIC0xMTI4OSw3ICsxMTYzNSw3IEBACiAgICAgICA7OwogCiAgICAgc3lzdjQqTVAqKQotICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYyA7dGhlbgorICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgogCWx0X3Byb2dfY29tcGlsZXJfcGljPSctS2NvbmZvcm1fcGljJwogCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgIGZpCkBAIC0xMTMxOCw3ICsxMTY2NCw3IEBACiAgIGZpCiAKIGNhc2UgJGhvc3Rfb3MgaW4KLSAgIyBGb3IgcGxhdGZvcm1zIHdoaWNoIGRvIG5vdCBzdXBwb3J0IFBJQywgLURQSUMgaXMgbWVhbmluZ2xlc3M6CisgICMgRm9yIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IFBJQywgLURQSUMgaXMgbWVhbmluZ2xlc3M6CiAgICpkamdwcCopCiAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9CiAgICAgOzsKQEAgLTExMzUwLDcgKzExNjk2LDcgQEAKICAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3M9bm8KICAgIGFjX291dGZpbGU9Y29uZnRlc3QuJGFjX29iamV4dAogICAgZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0Ci0gICBsdF9jb21waWxlcl9mbGFnPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICBsdF9jb21waWxlcl9mbGFnPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiICAjIyBleGNsdWRlIGZyb20gc2NfdXNlbGVzc19xdW90ZXNfaW5fYXNzaWdubWVudAogICAgIyBJbnNlcnQgdGhlIG9wdGlvbiBlaXRoZXIgKDEpIGFmdGVyIHRoZSBsYXN0ICpGTEFHUyB2YXJpYWJsZSwgb3IKICAgICMgKDIpIGJlZm9yZSBhIHdvcmQgY29udGFpbmluZyAiY29uZnRlc3QuIiwgb3IgKDMpIGF0IHRoZSBlbmQuCiAgICAjIE5vdGUgdGhhdCAkYWNfY29tcGlsZSBpdHNlbGYgZG9lcyBub3QgY29udGFpbiBiYWNrc2xhc2hlcyBhbmQgYmVnaW5zCkBAIC0xMTM4MCw3ICsxMTcyNiw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3MiID4mNjsgfQogCi1pZiB0ZXN0IHgiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzIiA9IHh5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3JrcyI7IHRoZW4KICAgICBjYXNlICRsdF9wcm9nX2NvbXBpbGVyX3BpYyBpbgogICAgICAiIiB8ICIgIiopIDs7CiAgICAgICopIGx0X3Byb2dfY29tcGlsZXJfcGljPSIgJGx0X3Byb2dfY29tcGlsZXJfcGljIiA7OwpAQCAtMTE0MTIsNyArMTE3NTgsNyBAQAogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrcz1ubwotICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgIHNhdmVfTERGTEFHUz0kTERGTEFHUwogICAgTERGTEFHUz0iJExERkxBR1MgJGx0X3RtcF9zdGF0aWNfZmxhZyIKICAgIGVjaG8gIiRsdF9zaW1wbGVfbGlua190ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAogICAgaWYgKGV2YWwgJGFjX2xpbmsgMj5jb25mdGVzdC5lcnIpICYmIHRlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0OyB0aGVuCkBAIC0xMTQzMSwxMyArMTE3NzcsMTMgQEAKICAgICAgZmkKICAgIGZpCiAgICAkUk0gLXIgY29uZnRlc3QqCi0gICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCiAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3MiID4mNjsgfQogCi1pZiB0ZXN0IHgiJGx0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzIiA9IHh5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3JrcyI7IHRoZW4KICAgICA6CiBlbHNlCiAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CkBAIC0xMTU1Nyw4ICsxMTkwMyw4IEBACiAKIAogCi1oYXJkX2xpbmtzPSJub3R0ZXN0ZWQiCi1pZiB0ZXN0ICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iID0gbm8gJiYgdGVzdCAiJG5lZWRfbG9ja3MiICE9IG5vOyB0aGVuCitoYXJkX2xpbmtzPW5vdHRlc3RlZAoraWYgdGVzdCBubyA9ICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iICYmIHRlc3Qgbm8gIT0gIiRuZWVkX2xvY2tzIjsgdGhlbgogICAjIGRvIG5vdCBvdmVyd3JpdGUgdGhlIHZhbHVlIG9mIG5lZWRfbG9ja3MgcHJvdmlkZWQgYnkgdGhlIHVzZXIKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gbG9jayB3aXRoIGhhcmQgbGlua3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgd2UgY2FuIGxvY2sgd2l0aCBoYXJkIGxpbmtzLi4uICIgPiY2OyB9CkBAIC0xMTU3MCw5ICsxMTkxNiw5IEBACiAgIGxuIGNvbmZ0ZXN0LmEgY29uZnRlc3QuYiAyPi9kZXYvbnVsbCAmJiBoYXJkX2xpbmtzPW5vCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGFyZF9saW5rcyIgPiY1CiAkYXNfZWNobyAiJGhhcmRfbGlua3MiID4mNjsgfQotICBpZiB0ZXN0ICIkaGFyZF9saW5rcyIgPSBubzsgdGhlbgotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogXGAkQ0MnIGRvZXMgbm90IHN1cHBvcnQgXGAtYyAtbycsIHNvIFxgbWFrZSAtaicgbWF5IGJlIHVuc2FmZSIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBcYCRDQycgZG9lcyBub3Qgc3VwcG9ydCBcYC1jIC1vJywgc28gXGBtYWtlIC1qJyBtYXkgYmUgdW5zYWZlIiA+JjI7fQorICBpZiB0ZXN0IG5vID0gIiRoYXJkX2xpbmtzIjsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJyRDQycgZG9lcyBub3Qgc3VwcG9ydCAnLWMgLW8nLCBzbyAnbWFrZSAtaicgbWF5IGJlIHVuc2FmZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAnJENDJyBkb2VzIG5vdCBzdXBwb3J0ICctYyAtbycsIHNvICdtYWtlIC1qJyBtYXkgYmUgdW5zYWZlIiA+JjI7fQogICAgIG5lZWRfbG9ja3M9d2FybgogICBmaQogZWxzZQpAQCAtMTE2MTUsOSArMTE5NjEsOSBAQAogICAjIGluY2x1ZGVkIGluIHRoZSBzeW1ib2wgbGlzdAogICBpbmNsdWRlX2V4cHN5bXM9CiAgICMgZXhjbHVkZV9leHBzeW1zIGNhbiBiZSBhbiBleHRlbmRlZCByZWdleHAgb2Ygc3ltYm9scyB0byBleGNsdWRlCi0gICMgaXQgd2lsbCBiZSB3cmFwcGVkIGJ5IGAgKCcgYW5kIGApJCcsIHNvIG9uZSBtdXN0IG5vdCBtYXRjaCBiZWdpbm5pbmcgb3IKLSAgIyBlbmQgb2YgbGluZS4gIEV4YW1wbGU6IGBhfGJjfC4qZC4qJyB3aWxsIGV4Y2x1ZGUgdGhlIHN5bWJvbHMgYGEnIGFuZCBgYmMnLAotICAjIGFzIHdlbGwgYXMgYW55IHN5bWJvbCB0aGF0IGNvbnRhaW5zIGBkJy4KKyAgIyBpdCB3aWxsIGJlIHdyYXBwZWQgYnkgJyAoJyBhbmQgJykkJywgc28gb25lIG11c3Qgbm90IG1hdGNoIGJlZ2lubmluZyBvcgorICAjIGVuZCBvZiBsaW5lLiAgRXhhbXBsZTogJ2F8YmN8LipkLionIHdpbGwgZXhjbHVkZSB0aGUgc3ltYm9scyAnYScgYW5kICdiYycsCisgICMgYXMgd2VsbCBhcyBhbnkgc3ltYm9sIHRoYXQgY29udGFpbnMgJ2QnLgogICBleGNsdWRlX2V4cHN5bXM9J19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKicKICAgIyBBbHRob3VnaCBfR0xPQkFMX09GRlNFVF9UQUJMRV8gaXMgYSB2YWxpZCBzeW1ib2wgQyBuYW1lLCBtb3N0IGEub3V0CiAgICMgcGxhdGZvcm1zIChhYil1c2UgaXQgaW4gUElDIGNvZGUsIGJ1dCB0aGVpciBsaW5rZXJzIGdldCBjb25mdXNlZCBpZgpAQCAtMTE2MzIsNyArMTE5NzgsNyBAQAogICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwogICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgIT0gIiRHQ0MiOyB0aGVuCiAgICAgICB3aXRoX2dudV9sZD1ubwogICAgIGZpCiAgICAgOzsKQEAgLTExNjQwLDcgKzExOTg2LDcgQEAKICAgICAjIHdlIGp1c3QgaG9wZS9hc3N1bWUgdGhpcyBpcyBnY2MgYW5kIG5vdCBjODkgKD0gTVNWQysrKQogICAgIHdpdGhfZ251X2xkPXllcwogICAgIDs7Ci0gIG9wZW5ic2QqKQorICBvcGVuYnNkKiB8IGJpdHJpZyopCiAgICAgd2l0aF9nbnVfbGQ9bm8KICAgICA7OwogICBsaW51eCogfCBrKmJzZCotZ251IHwgZ251KikKQEAgLTExNjUzLDcgKzExOTk5LDcgQEAKICAgIyBPbiBzb21lIHRhcmdldHMsIEdOVSBsZCBpcyBjb21wYXRpYmxlIGVub3VnaCB3aXRoIHRoZSBuYXRpdmUgbGlua2VyCiAgICMgdGhhdCB3ZSdyZSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZSBuYXRpdmUgaW50ZXJmYWNlIGZvciBib3RoLgogICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT1ubwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KICAgICBjYXNlICRob3N0X29zIGluCiAgICAgICBhaXgqKQogCSMgVGhlIEFJWCBwb3J0IG9mIEdOVSBsZCBoYXMgYWx3YXlzIGFzcGlyZWQgdG8gY29tcGF0aWJpbGl0eQpAQCAtMTE2NzUsMjQgKzEyMDIxLDI0IEBACiAgICAgZXNhYwogICBmaQogCi0gIGlmIHRlc3QgIiRsdF91c2VfZ251X2xkX2ludGVyZmFjZSIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgPSAiJGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlIjsgdGhlbgogICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5Ci0gICAgd2xhcmM9JyR7d2x9JworICAgIHdsYXJjPSckd2wnCiAKICAgICAjIFNldCBzb21lIGRlZmF1bHRzIGZvciBHTlUgbGQgd2l0aCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0LiBUaGVzZQogICAgICMgYXJlIHJlc2V0IGxhdGVyIGlmIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIFB1dHRpbmcgdGhlbQogICAgICMgaGVyZSBhbGxvd3MgdGhlbSB0byBiZSBvdmVycmlkZGVuIGlmIG5lY2Vzc2FyeS4KICAgICBydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAotICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKyAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wtcnBhdGggJHdsJGxpYmRpcicKKyAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR3bC0tZXhwb3J0LWR5bmFtaWMnCiAgICAgIyBhbmNpZW50IEdOVSBsZCBkaWRuJ3Qgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUgZXQuIGFsLgogICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICduby13aG9sZS1hcmNoaXZlJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCisgICAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0kd2xhcmMnLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICckd2xhcmMnLS1uby13aG9sZS1hcmNoaXZlJwogICAgIGVsc2UKICAgICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPQogICAgIGZpCiAgICAgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPW5vCi0gICAgY2FzZSBgJExEIC12IDI+JjFgIGluCisgICAgY2FzZSBgJExEIC12IHwgJFNFRCAtZSAncy8oXilcKylcc1wrLy8nIDI+JjFgIGluCiAgICAgICAqR05VXCBnb2xkKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OwogICAgICAgKlwgWzAxXS4qIHwgKlwgMi5bMC05XS4qIHwgKlwgMi4xMC4qKSA7OyAjIGNhdGNoIHZlcnNpb25zIDwgMi4xMQogICAgICAgKlwgMi4xMS45My4wLjJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBSSDcuMyAuLi4KQEAgLTExNzA1LDcgKzEyMDUxLDcgQEAKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgYWl4WzMtOV0qKQogICAgICAgIyBPbiBBSVgvUFBDLCB0aGUgR05VIGxpbmtlciBpcyB2ZXJ5IGJyb2tlbgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCisgICAgICBpZiB0ZXN0IGlhNjQgIT0gIiRob3N0X2NwdSI7IHRoZW4KIAlsZF9zaGxpYnM9bm8KIAljYXQgPDxfTFRfRU9GIDE+JjIKIApAQCAtMTE3MjQsNyArMTIwNzAsNyBAQAogICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KICAgICAgIHBvd2VycGMpCiAgICAgICAgICAgICAjIHNlZSBjb21tZW50IGFib3V0IEFtaWdhT1M0IC5zbyBzdXBwb3J0Ci0gICAgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAgICAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPScnCiAgICAgICAgIDs7CiAgICAgICBtNjhrKQpAQCAtMTE3NDAsNyArMTIwODYsNyBAQAogCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCiAJIyBKb3NlcGggQmVja2VuYmFjaCA8anJiM0BiZXN0LmNvbT4gc2F5cyBzb21lIHJlbGVhc2VzIG9mIGdjYwogCSMgc3VwcG9ydCAtLXVuZGVmaW5lZC4gIFRoaXMgZGVzZXJ2ZXMgc29tZSBpbnZlc3RpZ2F0aW9uLiAgRklYTUUKLQlhcmNoaXZlX2NtZHM9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAgICAgICBlbHNlCiAJbGRfc2hsaWJzPW5vCiAgICAgICBmaQpAQCAtMTE3NTAsNyArMTIwOTYsNyBAQAogICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCiAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPSckd2wtLWV4cG9ydC1hbGwtc3ltYm9scycKICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCiAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC0xMTc1OCw2MSArMTIxMDQsODkgQEAKICAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwogCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0JIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotCSMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQkgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQllbHNlCi0JICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQkgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JZml+Ci0JJENDIC1zaGFyZWQgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHdsLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSwgdXNlIGl0IGFzCisJIyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kIEVYUE9SVFMuLi4KKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiAgIHRlc3QgREVGID0gImAkU0VEIC1uICAgICAtZSAnXCcncy9eWwkgXSovLydcJycgICAgIC1lICdcJycvXlwoOy4qXCkqJC9kJ1wnJyAgICAgLWUgJ1wnJ3MvXlwoRVhQT1JUU1x8TElCUkFSWVwpXChbCSBdLipcKSokL0RFRi9wJ1wnJyAgICAgLWUgcSAgICAgJGV4cG9ydF9zeW1ib2xzYCIgOyB0aGVuCisgICAgICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworICAgICAgICBlbHNlCisgICAgICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisgICAgICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKyAgICAgICAgZml+CisgICAgICAgICRDQyAtc2hhcmVkICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR3bC0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKICAgICAgIGVsc2UKIAlsZF9zaGxpYnM9bm8KICAgICAgIGZpCiAgICAgICA7OwogCiAgICAgaGFpa3UqKQotICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwogICAgICAgbGlua19hbGxfZGVwbGlicz15ZXMKICAgICAgIDs7CiAKKyAgICBvczIqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICBzaHJleHRfY21kcz0uZGxsCisgICAgICBhcmNoaXZlX2NtZHM9JyRFQ0hPICJMSUJSQVJZICR7c29uYW1lJSRzaGFyZWRfZXh0fSBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gIkRBVEEgTVVMVElQTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJZW14ZXhwICRsaWJvYmpzIHwgJFNFRCAvIl9ETExfSW5pdFRlcm0iL2QgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRDQyAtWmRsbCAtWmNydGRsbCAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJZW14aW1wIC1vICRsaWIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJEVDSE8gIkxJQlJBUlkgJHtzb25hbWUlJHNoYXJlZF9leHR9IElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyAiREFUQSBNVUxUSVBMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwlwcmVmaXhfY21kcz0iJFNFRCJ+CisJaWYgdGVzdCBFWFBPUlRTID0gImAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiOyB0aGVuCisJICBwcmVmaXhfY21kcz0iJHByZWZpeF9jbWRzIC1lIDFkIjsKKwlmaX4KKwlwcmVmaXhfY21kcz0iJHByZWZpeF9jbWRzIC1lIFwicy9eXCguKlwpJC9fXDEvZ1wiIn4KKwljYXQgJGV4cG9ydF9zeW1ib2xzIHwgJHByZWZpeF9jbWRzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCWVteGltcCAtbyAkbGliICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIG9sZF9hcmNoaXZlX0Zyb21fbmV3X2NtZHM9J2VteGltcCAtbyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9X2RsbC5hICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisgICAgICA7OworCiAgICAgaW50ZXJpeFszLTldKikKICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwogICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLSAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tRScKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR3bC1ycGF0aCwkbGliZGlyJworICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPSckd2wtRScKICAgICAgICMgSGFjazogT24gSW50ZXJpeCAzLngsIHdlIGNhbm5vdCBjb21waWxlIFBJQyBiZWNhdXNlIG9mIGEgYnJva2VuIGdjYy4KICAgICAgICMgSW5zdGVhZCwgc2hhcmVkIGxpYnJhcmllcyBhcmUgbG9hZGVkIGF0IGFuIGltYWdlIGJhc2UgKDB4MTAwMDAwMDAgYnkKICAgICAgICMgZGVmYXVsdCkgYW5kIHJlbG9jYXRlZCBpZiB0aGV5IGNvbmZsaWN0LCB3aGljaCBpcyBhIHNsb3cgdmVyeSBtZW1vcnkKICAgICAgICMgY29uc3VtaW5nIGFuZCBmcmFnbWVudGluZyBwcm9jZXNzLiAgVG8gYXZvaWQgdGhpcywgd2UgcGljayBhIHJhbmRvbSwKICAgICAgICMgMjU2IEtpQi1hbGlnbmVkIGltYWdlIGJhc2UgYmV0d2VlbiAweDUwMDAwMDAwIGFuZCAweDZGRkMwMDAwIGF0IGxpbmsKICAgICAgICMgdGltZS4gIE1vdmluZyB1cCBmcm9tIDB4MTAwMDAwMDAgYWxzbyBhbGxvd3MgbW9yZSBzYnJrKDIpIHNwYWNlLgotICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwotICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nc2VkICJzLF4sXywiICRleHBvcnRfc3ltYm9scyA+JG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW1+JENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1oLCRzb25hbWUgJHt3bH0tLXJldGFpbi1zeW1ib2xzLWZpbGUsJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW0gJHt3bH0tLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtaCwkc29uYW1lICR3bC0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJworICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nc2VkICJzfF58X3wiICRleHBvcnRfc3ltYm9scyA+JG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW1+JENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtaCwkc29uYW1lICR3bC0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAkd2wtLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKICAgICAgIDs7CiAKICAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgIHRtcF9kaWV0PW5vCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9vcyIgPSBsaW51eC1kaWV0bGliYzsgdGhlbgorICAgICAgaWYgdGVzdCBsaW51eC1kaWV0bGliYyA9ICIkaG9zdF9vcyI7IHRoZW4KIAljYXNlICRjY19iYXNlbmFtZSBpbgogCSAgZGlldFwgKikgdG1wX2RpZXQ9eWVzOzsJIyBsaW51eC1kaWV0bGliYyB3aXRoIHN0YXRpYyBsaW5raW5nICghZGlldC1keW4pCiAJZXNhYwogICAgICAgZmkKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRFR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsIFwKLQkgJiYgdGVzdCAiJHRtcF9kaWV0IiA9IG5vCisJICYmIHRlc3Qgbm8gPSAiJHRtcF9kaWV0IgogICAgICAgdGhlbgogCXRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCXRtcF9zaGFyZWRmbGFnPSctc2hhcmVkJwogCWNhc2UgJGNjX2Jhc2VuYW1lLCRob3N0X2NwdSBpbgogICAgICAgICBwZ2NjKikJCQkJIyBQb3J0bGFuZCBHcm91cCBDIGNvbXBpbGVyCi0JICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHdsLS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR3bC0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCSAgOzsKIAlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogCQkJCQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycwotCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR3bC0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZyAtTW5vbWFpbicgOzsKIAllY2MqLGlhNjQqIHwgaWNjKixpYTY0KikJIyBJbnRlbCBDIGNvbXBpbGVyIG9uIGlhNjQKIAkgIHRtcF9hZGRmbGFnPScgLWlfZHluYW1pYycgOzsKQEAgLTExODIzLDQyICsxMjE5Nyw0NyBAQAogCWxmOTUqKQkJCQkjIExhaGV5IEZvcnRyYW4gOC4xCiAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0KIAkgIHRtcF9zaGFyZWRmbGFnPSctLXNoYXJlZCcgOzsKKyAgICAgICAgbmFnZm9yKikgICAgICAgICAgICAgICAgICAgICAgICAjIE5BR0ZPUiA1LjMKKyAgICAgICAgICB0bXBfc2hhcmVkZmxhZz0nLVdsLC1zaGFyZWQnIDs7CiAJeGxbY0NdKiB8IGJneGxbY0NdKiB8IG1waXhsW2NDXSopICMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKIAkgIHRtcF9zaGFyZWRmbGFnPSctcW1rc2hyb2JqJwogCSAgdG1wX2FkZGZsYWc9IDs7CiAJbnZjYyopCSMgQ3VkYSBDb21waWxlciBEcml2ZXIgMi4yCi0JICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHdsLS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR3bC0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIGNvbXBpbGVyX25lZWRzX29iamVjdD15ZXMKIAkgIDs7CiAJZXNhYwogCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgogCSpTdW5cIEMqKQkJCSMgU3VuIEMgNS45Ci0JICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSckd2wtLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICBjb21waWxlcl9uZWVkc19vYmplY3Q9eWVzCiAJICB0bXBfc2hhcmVkZmxhZz0nLUcnIDs7CiAJKlN1blwgRiopCQkJIyBTdW4gRm9ydHJhbiA4LjMKIAkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKIAllc2FjCi0JYXJjaGl2ZV9jbWRzPSckQ0MgJyIkdG1wX3NoYXJlZGZsYWciIiR0bXBfYWRkZmxhZyInICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDICciJHRtcF9zaGFyZWRmbGFnIiIkdG1wX2FkZGZsYWciJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAKLSAgICAgICAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorICAgICAgICBpZiB0ZXN0IHllcyA9ICIkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIjsgdGhlbgogICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgICRDQyAnIiR0bXBfc2hhcmVkZmxhZyIiJHRtcF9hZGRmbGFnIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXZlcnNpb24tc2NyaXB0ICR7d2x9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgICAgICAgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgICAgICAgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgICAgICRDQyAnIiR0bXBfc2hhcmVkZmxhZyIiJHRtcF9hZGRmbGFnIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtdmVyc2lvbi1zY3JpcHQgJHdsJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCiAgICAgICAgIGZpCiAKIAljYXNlICRjY19iYXNlbmFtZSBpbgorCXRjYyopCisJICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9Jy1yZHluYW1pYycKKwkgIDs7CiAJeGxmKiB8IGJnZiogfCBiZ3hsZiogfCBtcGl4bGYqKQogCSAgIyBJQk0gWEwgRm9ydHJhbiAxMC4xIG9uIFBQQyBjYW5ub3QgY3JlYXRlIHNoYXJlZCBsaWJzIGl0c2VsZgogCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0JICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wtcnBhdGggJHdsJGxpYmRpcicKIAkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLQkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKwkgIGlmIHRlc3QgeWVzID0gIiRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciOyB0aGVuCiAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAgICAgICAgICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorICAgICAgICAgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwogCSAgZmkKIAkgIDs7CiAJZXNhYwpAQCAtMTE4NzIsOCArMTIyNTEsOCBAQAogCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKIAl3bGFyYz0KICAgICAgIGVsc2UKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIDs7CiAKQEAgLTExODkxLDggKzEyMjcwLDggQEAKIAogX0xUX0VPRgogICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlsZF9zaGxpYnM9bm8KICAgICAgIGZpCkBAIC0xMTkwNCw3ICsxMjI4Myw3IEBACiAJbGRfc2hsaWJzPW5vCiAJY2F0IDw8X0xUX0VPRiAxPiYyCiAKLSoqKiBXYXJuaW5nOiBSZWxlYXNlcyBvZiB0aGUgR05VIGxpbmtlciBwcmlvciB0byAyLjE2LjkxLjAuMyBjYW4gbm90CisqKiogV2FybmluZzogUmVsZWFzZXMgb2YgdGhlIEdOVSBsaW5rZXIgcHJpb3IgdG8gMi4xNi45MS4wLjMgY2Fubm90CiAqKiogcmVsaWFibHkgY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgb24gU0NPIHN5c3RlbXMuICBUaGVyZWZvcmUsIGxpYnRvb2wKICoqKiBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgV2UgdXJnZSB5b3UgdG8gdXBncmFkZSBHTlUKICoqKiBiaW51dGlscyB0byByZWxlYXNlIDIuMTYuOTEuMC4zIG9yIG5ld2VyLiAgQW5vdGhlciBvcHRpb24gaXMgdG8gbW9kaWZ5CkBAIC0xMTkxOSw5ICsxMjI5OCw5IEBACiAJICAjIERUX1JVTlBBVEggdGFnIGZyb20gZXhlY3V0YWJsZXMgYW5kIGxpYnJhcmllcy4gIEJ1dCBkb2luZyBzbwogCSAgIyByZXF1aXJlcyB0aGF0IHlvdSBjb21waWxlIGV2ZXJ5dGhpbmcgdHdpY2UsIHdoaWNoIGlzIGEgcGFpbi4KIAkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotCSAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHdsLXJwYXRoICR3bCRsaWJkaXInCisJICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCSAgZWxzZQogCSAgICBsZF9zaGxpYnM9bm8KIAkgIGZpCkBAIC0xMTkzOCwxNSArMTIzMTcsMTUgQEAKIAogICAgICopCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlsZF9zaGxpYnM9bm8KICAgICAgIGZpCiAgICAgICA7OwogICAgIGVzYWMKIAotICAgIGlmIHRlc3QgIiRsZF9zaGxpYnMiID0gbm87IHRoZW4KKyAgICBpZiB0ZXN0IG5vID0gIiRsZF9zaGxpYnMiOyB0aGVuCiAgICAgICBydW5wYXRoX3Zhcj0KICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CiAgICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9CkBAIC0xMTk2Miw3ICsxMjM0MSw3IEBACiAgICAgICAjIE5vdGU6IHRoaXMgbGlua2VyIGhhcmRjb2RlcyB0aGUgZGlyZWN0b3JpZXMgaW4gTElCUEFUSCBpZiB0aGVyZQogICAgICAgIyBhcmUgbm8gZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IC1MLgogICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgLXogIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiICYmIHRlc3QgLXogIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyI7IHRoZW4KIAkjIE5laXRoZXIgZGlyZWN0IGhhcmRjb2Rpbmcgbm9yIHN0YXRpYyBsaW5raW5nIGlzIHN1cHBvcnRlZCB3aXRoIGEKIAkjIGJyb2tlbiBjb2xsZWN0Mi4KIAloYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKQEAgLTExOTcwLDM0ICsxMjM0OSw1NyBAQAogICAgICAgOzsKIAogICAgIGFpeFs0LTldKikKLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgICAgICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogCSMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKIAkjIGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KIAlhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCiAJZXhwX3N5bV9mbGFnPSctQmV4cG9ydCcKLQlub19lbnRyeV9mbGFnPSIiCisJbm9fZW50cnlfZmxhZz0KICAgICAgIGVsc2UKIAkjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLQkjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCi0JIyBBbHNvLCBBSVggbm0gdHJlYXRzIHdlYWsgZGVmaW5lZCBzeW1ib2xzIGxpa2Ugb3RoZXIgZ2xvYmFsCi0JIyBkZWZpbmVkIHN5bWJvbHMsIHdoZXJlYXMgR05VIG5tIG1hcmtzIHRoZW0gYXMgIlciLgorCSMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gR05VIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgdG8gQUlYIG5tLgorCSMgV2l0aG91dCB0aGUgIi1sIiBvcHRpb24sIG9yIHdpdGggdGhlICItQiIgb3B0aW9uLCBBSVggbm0gdHJlYXRzCisJIyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbCBkZWZpbmVkIHN5bWJvbHMsIHdoZXJlYXMKKwkjIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KKwkjIFdoaWxlIHRoZSAnd2Vhaycga2V5d29yZCBpcyBpZ25vcmVkIGluIHRoZSBFeHBvcnQgRmlsZSwgd2UgbmVlZAorCSMgaXQgaW4gdGhlIEltcG9ydCBGaWxlIGZvciB0aGUgJ2FpeC1zb25hbWUnIGZlYXR1cmUsIHNvIHdlIGhhdmUKKwkjIHRvIHJlcGxhY2UgdGhlICItQiIgb3B0aW9uIHdpdGggIi1QIiBmb3IgQUlYIG5tLgogCWlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KLQkgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChzdWJzdHIoXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKwkgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChzdWJzdHIoXCQgMywxLDEpICE9ICIuIikpIHsgaWYgKFwkIDIgPT0gIlciKSB7IHByaW50IFwkIDMgIiB3ZWFrIiB9IGVsc2UgeyBwcmludCBcJCAzIH0gfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZWxzZQotCSAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NIC1CQ3BnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoc3Vic3RyKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJICBleHBvcnRfc3ltYm9sc19jbWRzPSdgZnVuY19lY2hvX2FsbCAkTk0gfCAkU0VEIC1lICdcJydzL0JcKFteQl0qXCkkL1BcMS8nXCcnYCAtUENwZ2wgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSB8fCAoXCQgMiA9PSAiViIpIHx8IChcJCAyID09ICJaIikpICYmIChzdWJzdHIoXCQgMSwxLDEpICE9ICIuIikpIHsgaWYgKChcJCAyID09ICJXIikgfHwgKFwkIDIgPT0gIlYiKSB8fCAoXCQgMiA9PSAiWiIpKSB7IHByaW50IFwkIDEgIiB3ZWFrIiB9IGVsc2UgeyBwcmludCBcJCAxIH0gfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZmkKIAlhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCiAKIAkjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKIAkjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKLQkjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorCSMgaGF2ZSBydW50aW1lIGxpbmtpbmcgZW5hYmxlZCwgYW5kIHVzZSBpdCBmb3IgZXhlY3V0YWJsZXMuCisJIyBGb3Igc2hhcmVkIGxpYnJhcmllcywgd2UgZW5hYmxlL2Rpc2FibGUgcnVudGltZSBsaW5raW5nCisJIyBkZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGNyZWF0ZWQgLQorCSMgd2hlbiAid2l0aF9haXhfc29uYW1lLGFpeF91c2VfcnVudGltZWxpbmtpbmciIGlzOgorCSMgImFpeCxubyIgICBsaWIuYShsaWIuc28uVikgc2hhcmVkLCBydGw6bm8sICBmb3IgZXhlY3V0YWJsZXMKKwkjICJhaXgseWVzIiAgbGliLnNvICAgICAgICAgIHNoYXJlZCwgcnRsOnllcywgZm9yIGV4ZWN1dGFibGVzCisJIyAgICAgICAgICAgIGxpYi5hICAgICAgICAgICBzdGF0aWMgYXJjaGl2ZQorCSMgImJvdGgsbm8iICBsaWIuc28uVihzaHIubykgc2hhcmVkLCBydGw6eWVzCisJIyAgICAgICAgICAgIGxpYi5hKGxpYi5zby5WKSBzaGFyZWQsIHJ0bDpubywgIGZvciBleGVjdXRhYmxlcworCSMgImJvdGgseWVzIiBsaWIuc28uVihzaHIubykgc2hhcmVkLCBydGw6eWVzLCBmb3IgZXhlY3V0YWJsZXMKKwkjICAgICAgICAgICAgbGliLmEobGliLnNvLlYpIHNoYXJlZCwgcnRsOm5vCisJIyAic3ZyNCwqIiAgIGxpYi5zby5WKHNoci5vKSBzaGFyZWQsIHJ0bDp5ZXMsIGZvciBleGVjdXRhYmxlcworCSMgICAgICAgICAgICBsaWIuYSAgICAgICAgICAgc3RhdGljIGFyY2hpdmUKIAljYXNlICRob3N0X29zIGluIGFpeDQuWzIzXXxhaXg0LlsyM10uKnxhaXhbNS05XSopCiAJICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KLQkgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCisJICBpZiAodGVzdCB4LWJydGwgPSAieCRsZF9mbGFnIiB8fCB0ZXN0IHgtV2wsLWJydGwgPSAieCRsZF9mbGFnIik7IHRoZW4KIAkgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKIAkgICAgYnJlYWsKIAkgIGZpCiAJICBkb25lCisJICBpZiB0ZXN0IHN2cjQsbm8gPSAiJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgIyBXaXRoIGFpeC1zb25hbWU9c3ZyNCwgd2UgY3JlYXRlIHRoZSBsaWIuc28uViBzaGFyZWQgYXJjaGl2ZXMgb25seSwKKwkgICAgIyBzbyB3ZSBkb24ndCBoYXZlIGxpYi5hIHNoYXJlZCBsaWJzIHRvIGxpbmsgb3VyIGV4ZWN1dGFibGVzLgorCSAgICAjIFdlIGhhdmUgdG8gZm9yY2UgcnVudGltZSBsaW5raW5nIGluIHRoaXMgY2FzZS4KKwkgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKKwkgICAgTERGTEFHUz0iJExERkxBR1MgLVdsLC1icnRsIgorCSAgZmkKIAkgIDs7CiAJZXNhYwogCkBAIC0xMjAxNiwxMyArMTI0MTgsMjEgQEAKICAgICAgIGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT15ZXMKICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCiAgICAgICBsaW5rX2FsbF9kZXBsaWJzPXllcwotICAgICAgZmlsZV9saXN0X3NwZWM9JyR7d2x9LWYsJworICAgICAgZmlsZV9saXN0X3NwZWM9JyR3bC1mLCcKKyAgICAgIGNhc2UgJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyBpbgorICAgICAgYWl4LCopIDs7ICMgdHJhZGl0aW9uYWwsIG5vIGltcG9ydCBmaWxlCisgICAgICBzdnI0LCogfCAqLHllcykgIyB1c2UgaW1wb3J0IGZpbGUKKwkjIFRoZSBJbXBvcnQgRmlsZSBkZWZpbmVzIHdoYXQgdG8gaGFyZGNvZGUuCisJaGFyZGNvZGVfZGlyZWN0PW5vCisJaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPW5vCisJOzsKKyAgICAgIGVzYWMKIAotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAJY2FzZSAkaG9zdF9vcyBpbiBhaXg0LlswMTJdfGFpeDQuWzAxMl0uKikKIAkjIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIEFJWCA0LjIgYW5kIGxvd2VyLCB0aGUgY2hlY2sKIAkjIGJlbG93IGZvciBicm9rZW4gY29sbGVjdDIgZG9lc24ndCB3b3JrIHVuZGVyIDQuMysKLQkgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKKwkgIGNvbGxlY3QybmFtZT1gJENDIC1wcmludC1wcm9nLW5hbWU9Y29sbGVjdDJgCiAJICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJgogCSAgIHN0cmluZ3MgIiRjb2xsZWN0Mm5hbWUiIHwgJEdSRVAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCiAJICB0aGVuCkBAIC0xMjA0MSwzNiArMTI0NTEsNDIgQEAKIAkgIDs7CiAJZXNhYwogCXNoYXJlZF9mbGFnPSctc2hhcmVkJwotCWlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotCSAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCisJaWYgdGVzdCB5ZXMgPSAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciOyB0aGVuCisJICBzaGFyZWRfZmxhZz0iJHNoYXJlZF9mbGFnICInJHdsLUcnCiAJZmkKLQlsaW5rX2FsbF9kZXBsaWJzPW5vCisJIyBOZWVkIHRvIGVuc3VyZSBydW50aW1lIGxpbmtpbmcgaXMgZGlzYWJsZWQgZm9yIHRoZSB0cmFkaXRpb25hbAorCSMgc2hhcmVkIGxpYnJhcnksIG9yIHRoZSBsaW5rZXIgbWF5IGV2ZW50dWFsbHkgZmluZCBzaGFyZWQgbGlicmFyaWVzCisJIyAvd2l0aC8gSW1wb3J0IEZpbGUgLSB3ZSBkbyBub3Qgd2FudCB0byBtaXggdGhlbS4KKwlzaGFyZWRfZmxhZ19haXg9Jy1zaGFyZWQnCisJc2hhcmVkX2ZsYWdfc3ZyND0nLXNoYXJlZCAkd2wtRycKICAgICAgIGVsc2UKIAkjIG5vdCB1c2luZyBnY2MKLQlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCWlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAJIyBWaXN1YWxBZ2UgQysrLCBWZXJzaW9uIDUuNSBmb3IgQUlYIDVMIGZvciBJQS02NCwgQmV0YSAzIFJlbGVhc2UKIAkjIGNob2tlcyBvbiAtV2wsLUcuIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBjb3JyZWN0OgogCSAgc2hhcmVkX2ZsYWc9Jy1HJwogCWVsc2UKLQkgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotCSAgICBzaGFyZWRfZmxhZz0nJHt3bH0tRycKKwkgIGlmIHRlc3QgeWVzID0gIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIjsgdGhlbgorCSAgICBzaGFyZWRfZmxhZz0nJHdsLUcnCiAJICBlbHNlCi0JICAgIHNoYXJlZF9mbGFnPScke3dsfS1iTTpTUkUnCisJICAgIHNoYXJlZF9mbGFnPSckd2wtYk06U1JFJwogCSAgZmkKKwkgIHNoYXJlZF9mbGFnX2FpeD0nJHdsLWJNOlNSRScKKwkgIHNoYXJlZF9mbGFnX3N2cjQ9JyR3bC1HJwogCWZpCiAgICAgICBmaQogCi0gICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR7d2x9LWJleHBhbGwnCisgICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR3bC1iZXhwYWxsJwogICAgICAgIyBJdCBzZWVtcyB0aGF0IC1iZXhwYWxsIGRvZXMgbm90IGV4cG9ydCBzeW1ib2xzIGJlZ2lubmluZyB3aXRoCiAgICAgICAjIHVuZGVyc2NvcmUgKF8pLCBzbyBpdCBpcyBiZXR0ZXIgdG8gZ2VuZXJhdGUgYSBsaXN0IG9mIHN5bWJvbHMgdG8gZXhwb3J0LgogICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisgICAgICBpZiB0ZXN0IGFpeCx5ZXMgPSAiJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KIAkjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW50aW1lIGxvYWRpbmcgZmxhZ3MgKC1icnRsKSwKIAkjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCiAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLSAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorICAgICAgICBpZiB0ZXN0IHNldCA9ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iOyB0aGVuCiAgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogZWxzZQogICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CkBAIC0xMjEwNSw3ICsxMjUyMSw3IEBACiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKyAgICBsdF9jdl9haXhfbGlicGF0aF89L3Vzci9saWI6L2xpYgogICBmaQogCiBmaQpAQCAtMTIxMTMsMTcgKzEyNTI5LDE3IEBACiAgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KIGZpCiAKLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHdsLWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR3bCckbm9fZW50cnlfZmxhZycgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0IC1uICIkYWxsb3dfdW5kZWZpbmVkX2ZsYWciOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR3bCRhbGxvd191bmRlZmluZWRfZmxhZyI7IGVsc2UgOjsgZmlgICR3bCckZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMnICckc2hhcmVkX2ZsYWcKICAgICAgIGVsc2UKLQlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCisJaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KKwkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR3bC1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKIAkgIGFsbG93X3VuZGVmaW5lZF9mbGFnPSIteiBub2RlZnMiCi0JICBhcmNoaXZlX2V4cHN5bV9jbWRzPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyAke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzIgorCSAgYXJjaGl2ZV9leHBzeW1fY21kcz0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR3bCRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzICR3bCRhbGxvd191bmRlZmluZWRfZmxhZyAnIlwkd2wkZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMiCiAJZWxzZQogCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisJIGlmIHRlc3Qgc2V0ID0gIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSI7IHRoZW4KICAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCiBlbHNlCiAgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKQEAgLTEyMTU4LDcgKzEyNTc0LDcgQEAKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0gICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorICAgIGx0X2N2X2FpeF9saWJwYXRoXz0vdXNyL2xpYjovbGliCiAgIGZpCiAKIGZpCkBAIC0xMjE2NiwyMSArMTI1ODIsMzMgQEAKICAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwogZmkKIAotCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wtYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCiAJICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi0JICBub191bmRlZmluZWRfZmxhZz0nICR7d2x9LWJlcm5vdG9rJwotCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1iZXJvaycKLQkgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkgIG5vX3VuZGVmaW5lZF9mbGFnPScgJHdsLWJlcm5vdG9rJworCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAkd2wtYmVyb2snCisJICBpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCiAJICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCi0JICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR3bC0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICBlbHNlCiAJICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcwogCSAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJGNvbnZlbmllbmNlJwogCSAgZmkKIAkgIGFyY2hpdmVfY21kc19uZWVkX2xjPXllcwotCSAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkIGxpYnJhcmllcy4KLQkgIGFyY2hpdmVfZXhwc3ltX2NtZHM9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAke3dsfS1ibm9lbnRyeSAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tYkU6JGV4cG9ydF9zeW1ib2xzJHthbGxvd191bmRlZmluZWRfZmxhZ31+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKKwkgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRSTSAtciAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZH4kTUtESVIgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQnCisJICAjIC1icnRsIGFmZmVjdHMgbXVsdGlwbGUgbGlua2VyIHNldHRpbmdzLCAtYmVyb2sgZG9lcyBub3QgYW5kIGlzIG92ZXJyaWRkZW4gbGF0ZXIKKwkgIGNvbXBpbGVyX2ZsYWdzX2ZpbHRlcmVkPSdgZnVuY19lY2hvX2FsbCAiJGNvbXBpbGVyX2ZsYWdzICIgfCAkU0VEIC1lICJzJS1icnRsXFwoWywgXVxcKSUtYmVyb2tcXDElZyJgJworCSAgaWYgdGVzdCBzdnI0ICE9ICIkd2l0aF9haXhfc29uYW1lIjsgdGhlbgorCSAgICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQgbGlicmFyaWVzLgorCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSIkYXJjaGl2ZV9leHBzeW1fY21kcyInfiRDQyAnJHNoYXJlZF9mbGFnX2FpeCcgLW8gJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkd2wtYm5vZW50cnkgJyRjb21waWxlcl9mbGFnc19maWx0ZXJlZCckd2wtYkU6JGV4cG9ydF9zeW1ib2xzJGFsbG93X3VuZGVmaW5lZF9mbGFnfiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzb25hbWUnCisJICBmaQorCSAgaWYgdGVzdCBhaXggIT0gIiR3aXRoX2FpeF9zb25hbWUiOyB0aGVuCisJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9IiRhcmNoaXZlX2V4cHN5bV9jbWRzIid+JENDICckc2hhcmVkX2ZsYWdfc3ZyNCcgLW8gJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm8gJGxpYm9ianMgJGRlcGxpYnMgJHdsLWJub2VudHJ5ICckY29tcGlsZXJfZmxhZ3NfZmlsdGVyZWQnJHdsLWJFOiRleHBvcnRfc3ltYm9scyRhbGxvd191bmRlZmluZWRfZmxhZ34kU1RSSVAgLWUgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm9+KCBmdW5jX2VjaG9fYWxsICIjISAkc29uYW1lKCRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vKSI7IGlmIHRlc3Qgc2hyXzY0ID0gIiRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYyI7IHRoZW4gZnVuY19lY2hvX2FsbCAiIyA2NCI7IGVsc2UgZnVuY19lY2hvX2FsbCAiIyAzMiI7IGZpOyBjYXQgJGV4cG9ydF9zeW1ib2xzICkgPiAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMuaW1wfiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubyAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMuaW1wJworCSAgZWxzZQorCSAgICAjIHVzZWQgYnkgLWRscHJlb3BlbiB0byBnZXQgdGhlIHN5bWJvbHMKKwkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0iJGFyY2hpdmVfZXhwc3ltX2NtZHMiJ34kTVYgICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzb25hbWUgJG91dHB1dF9vYmpkaXInCisJICBmaQorCSAgYXJjaGl2ZV9leHBzeW1fY21kcz0iJGFyY2hpdmVfZXhwc3ltX2NtZHMiJ34kUk0gLXIgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQnCiAJZmkKICAgICAgIGZpCiAgICAgICA7OwpAQCAtMTIxODksNyArMTI2MTcsNyBAQAogICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KICAgICAgIHBvd2VycGMpCiAgICAgICAgICAgICAjIHNlZSBjb21tZW50IGFib3V0IEFtaWdhT1M0IC5zbyBzdXBwb3J0Ci0gICAgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAgICAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPScnCiAgICAgICAgIDs7CiAgICAgICBtNjhrKQpAQCAtMTIyMTksMTYgKzEyNjQ3LDE3IEBACiAJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KIAlsaWJleHQ9bGliCiAJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0Jc2hyZXh0X2NtZHM9Ii5kbGwiCisJc2hyZXh0X2NtZHM9LmRsbAogCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLQlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0JICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0JICBlbHNlCi0JICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0JICBmaX4KLQkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLQkgIGxpbmtuYW1lcz0nCisJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifmxpbmtuYW1lcz0nCisJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgICB0ZXN0IERFRiA9ICJgJFNFRCAtbiAgICAgLWUgJ1wnJ3MvXlsJIF0qLy8nXCcnICAgICAtZSAnXCcnL15cKDsuKlwpKiQvZCdcJycgICAgIC1lICdcJydzL15cKEVYUE9SVFNcfExJQlJBUllcKVwoWwkgXS4qXCkqJC9ERUYvcCdcJycgICAgIC1lIHEgICAgICRleHBvcnRfc3ltYm9sc2AiIDsgdGhlbgorICAgICAgICAgICAgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmIjsKKyAgICAgICAgICAgIGVjaG8gIiR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmRlZiIgPiAiJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHAiOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRTRUQgLWUgJ1wnJ3MvXi8tbGluayAtRVhQT1JUOi8nXCcnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisgICAgICAgICAgZml+CisgICAgICAgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorICAgICAgICAgIGxpbmtuYW1lcz0nCiAJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgogCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwogCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC0xMjIzNywxOCArMTI2NjYsMTggQEAKIAkjIERvbid0IHVzZSByYW5saWIKIAlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCiAJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLQkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLQkgICAgKi5leGV8Ki5FWEUpIDs7Ci0JICAgICopCi0JICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0JICAgICAgOzsKLQkgIGVzYWN+Ci0JICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLQkgIGZpJworICAgICAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisgICAgICAgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorICAgICAgICAgICAgKi5leGV8Ki5FWEUpIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICBsdF9vdXRwdXRmaWxlPSRsdF9vdXRwdXRmaWxlLmV4ZQorICAgICAgICAgICAgICBsdF90b29sX291dHB1dGZpbGU9JGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICBlc2FjfgorICAgICAgICAgIGlmIHRlc3QgOiAhPSAiJE1BTklGRVNUX1RPT0wiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorICAgICAgICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKyAgICAgICAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworICAgICAgICAgIGZpJwogCTs7CiAgICAgICAqKQogCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgpAQCAtMTIyNTcsNyArMTI2ODYsNyBAQAogCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCiAJbGliZXh0PWxpYgogCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotCXNocmV4dF9jbWRzPSIuZGxsIgorCXNocmV4dF9jbWRzPS5kbGwKIAkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCiAJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKIAkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgpAQCAtMTIyNzYsMjQgKzEyNzA1LDI0IEBACiAgIGhhcmRjb2RlX2RpcmVjdD1ubwogICBoYXJkY29kZV9hdXRvbWF0aWM9eWVzCiAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9dW5zdXBwb3J0ZWQKLSAgaWYgdGVzdCAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID0gInllcyI7IHRoZW4KLSAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR7d2x9LWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCisgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9sZF9mb3JjZV9sb2FkIjsgdGhlbgorICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSdgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UgJHdsLWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCiAKICAgZWxzZQogICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScnCiAgIGZpCiAgIGxpbmtfYWxsX2RlcGxpYnM9eWVzCi0gIGFsbG93X3VuZGVmaW5lZF9mbGFnPSIkX2x0X2Rhcl9hbGxvd191bmRlZmluZWQiCisgIGFsbG93X3VuZGVmaW5lZF9mbGFnPSRfbHRfZGFyX2FsbG93X3VuZGVmaW5lZAogICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICBpZm9ydCopIF9sdF9kYXJfY2FuX3NoYXJlZD15ZXMgOzsKKyAgICAgaWZvcnQqfG5hZ2ZvciopIF9sdF9kYXJfY2FuX3NoYXJlZD15ZXMgOzsKICAgICAgKikgX2x0X2Rhcl9jYW5fc2hhcmVkPSRHQ0MgOzsKICAgZXNhYwotICBpZiB0ZXN0ICIkX2x0X2Rhcl9jYW5fc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiRfbHRfZGFyX2Nhbl9zaGFyZWQiOyB0aGVuCiAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZnVuY19lY2hvX2FsbAotICAgIGFyY2hpdmVfY21kcz0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKLSAgICBtb2R1bGVfY21kcz0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZHN5bXV0aWx9IgotICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9InNlZCAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJHtfbHRfZGFyX3NpbmdsZV9tb2R9JHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKLSAgICBtb2R1bGVfZXhwc3ltX2NtZHM9InNlZCAtZSAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKKyAgICBhcmNoaXZlX2NtZHM9IlwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2QkX2x0X2RzeW11dGlsIgorICAgIG1vZHVsZV9jbWRzPSJcJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MkX2x0X2RzeW11dGlsIgorICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9InNlZCAnc3xefF98JyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCRsaWJuYW1lLXN5bWJvbHMuZXhwc3ltflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2QkX2x0X2Rhcl9leHBvcnRfc3ltcyRfbHRfZHN5bXV0aWwiCisgICAgbW9kdWxlX2V4cHN5bV9jbWRzPSJzZWQgLWUgJ3N8XnxffCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wkbGlibmFtZS1zeW1ib2xzLmV4cHN5bX5cJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MkX2x0X2Rhcl9leHBvcnRfc3ltcyRfbHRfZHN5bXV0aWwiCiAKICAgZWxzZQogICBsZF9zaGxpYnM9bm8KQEAgLTEyMzM1LDMzICsxMjc2NCwzMyBAQAogICAgICAgOzsKIAogICAgIGhwdXg5KikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCisJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgIngkb3V0cHV0X29iamRpci8kc29uYW1lIiA9ICJ4JGxpYiIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZWxzZQotCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICJ4JG91dHB1dF9vYmpkaXIvJHNvbmFtZSIgPSAieCRsaWIiIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgIGZpCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR3bCtiICR3bCRsaWJkaXInCiAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKIAogICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgogICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tRScKKyAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHdsLUUnCiAgICAgICA7OwogCiAgICAgaHB1eDEwKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBpZiB0ZXN0IHllcyxubyA9ICIkR0NDLCR3aXRoX2dudV9sZCI7IHRoZW4KKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkd2wraCAkd2wkc29uYW1lICR3bCtiICR3bCRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIGVsc2UKIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBmaQotICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICBpZiB0ZXN0IG5vID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wrYiAkd2wkbGliZGlyJwogCWhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgogCWhhcmRjb2RlX2RpcmVjdD15ZXMKIAloYXJkY29kZV9kaXJlY3RfYWJzb2x1dGU9eWVzCi0JZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPScke3dsfS1FJworCWV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHdsLUUnCiAJIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKIAkjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KIAloYXJkY29kZV9taW51c19MPXllcwpAQCAtMTIzNjksMjUgKzEyNzk4LDI1IEBACiAgICAgICA7OwogCiAgICAgaHB1eDExKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorICAgICAgaWYgdGVzdCB5ZXMsbm8gPSAiJEdDQywkd2l0aF9nbnVfbGQiOyB0aGVuCiAJY2FzZSAkaG9zdF9jcHUgaW4KIAlocHBhKjY0KikKLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR3bCtoICR3bCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCWlhNjQqKQotCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkd2wraCAkd2wkc29uYW1lICR3bCtub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkd2wraCAkd2wkc29uYW1lICR3bCtiICR3bCRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJZXNhYwogICAgICAgZWxzZQogCWNhc2UgJGhvc3RfY3B1IGluCiAJaHBwYSo2NCopCi0JICBhcmNoaXZlX2NtZHM9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIGFyY2hpdmVfY21kcz0nJENDIC1iICR3bCtoICR3bCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCWlhNjQqKQotCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2NtZHM9JyRDQyAtYiAkd2wraCAkd2wkc29uYW1lICR3bCtub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKIApAQCAtMTIzOTksNyArMTI4MjgsNyBAQAogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX19iPW5vCi0gICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorICAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCiAgICBMREZMQUdTPSIkTERGTEFHUyAtYiIKICAgIGVjaG8gIiRsdF9zaW1wbGVfbGlua190ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAogICAgaWYgKGV2YWwgJGFjX2xpbmsgMj5jb25mdGVzdC5lcnIpICYmIHRlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0OyB0aGVuCkBAIC0xMjQxOCwxNCArMTI4NDcsMTQgQEAKICAgICAgZmkKICAgIGZpCiAgICAkUk0gLXIgY29uZnRlc3QqCi0gICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCiAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfX2IiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX19iIiA+JjY7IH0KIAotaWYgdGVzdCB4IiRsdF9jdl9wcm9nX2NvbXBpbGVyX19iIiA9IHh5ZXM7IHRoZW4KLSAgICBhcmNoaXZlX2NtZHM9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworaWYgdGVzdCB5ZXMgPSAiJGx0X2N2X3Byb2dfY29tcGlsZXJfX2IiOyB0aGVuCisgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLWIgJHdsK2ggJHdsJHNvbmFtZSAkd2wrYiAkd2wkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiBlbHNlCiAgICAgYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogZmkKQEAgLTEyNDMzLDggKzEyODYyLDggQEAKIAkgIDs7CiAJZXNhYwogICAgICAgZmkKLSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgaWYgdGVzdCBubyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCisJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHdsK2IgJHdsJGxpYmRpcicKIAloYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKIAogCWNhc2UgJGhvc3RfY3B1IGluCkBAIC0xMjQ0NSw3ICsxMjg3NCw3IEBACiAJKikKIAkgIGhhcmRjb2RlX2RpcmVjdD15ZXMKIAkgIGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT15ZXMKLQkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tRScKKwkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHdsLUUnCiAKIAkgICMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCiAJICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KQEAgLTEyNDU2LDggKzEyODg1LDggQEAKICAgICAgIDs7CiAKICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bCRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CiAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAogCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCkBAIC0xMjQ2Nyw4ICsxMjg5Niw4IEBACiBpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKLSAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLQkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisgIHNhdmVfTERGTEFHUz0kTERGTEFHUworCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHdsLWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bC9kZXYvbnVsbCIKIAkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiBpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CkBAIC0xMjQ4MCwyNCArMTI5MDksMzUgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgICAgICAgICBMREZMQUdTPSRzYXZlX0xERkxBR1MKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWlmIHRlc3QgeWVzID0gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCI7IHRoZW4KKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bCRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAkd2wtZXhwb3J0c19maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCWZpCisJbGlua19hbGxfZGVwbGlicz1ubwogICAgICAgZWxzZQotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIGFyY2hpdmVfY21kc19uZWVkX2xjPSdubycKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CiAgICAgICBpbmhlcml0X3JwYXRoPXllcwogICAgICAgbGlua19hbGxfZGVwbGlicz15ZXMKICAgICAgIDs7CiAKKyAgICBsaW51eCopCisgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgdGNjKikKKwkjIEZhYnJpY2UgQmVsbGFyZCBldCBhbCdzIFRpbnkgQyBDb21waWxlcgorCWxkX3NobGlicz15ZXMKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwk7OworICAgICAgZXNhYworICAgICAgOzsKKwogICAgIG5ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKICAgICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCiAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJyAgIyBhLm91dApAQCAtMTI1MTIsNyArMTI5NTIsNyBAQAogICAgIG5ld3NvczYpCiAgICAgICBhcmNoaXZlX2NtZHM9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CiAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCiAgICAgICA7OwpAQCAtMTI1MjAsMjcgKzEyOTYwLDE5IEBACiAgICAgKm50byogfCAqcW54KikKICAgICAgIDs7CiAKLSAgICBvcGVuYnNkKikKKyAgICBvcGVuYnNkKiB8IGJpdHJpZyopCiAgICAgICBpZiB0ZXN0IC1mIC91c3IvbGliZXhlYy9sZC5zbzsgdGhlbgogCWhhcmRjb2RlX2RpcmVjdD15ZXMKIAloYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCiAJaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPXllcwotCWlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KKwlpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fYCI7IHRoZW4KIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUsJGV4cG9ydF9zeW1ib2xzJwotCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLQkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tRScKKwkgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHMnCisJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wtcnBhdGgsJGxpYmRpcicKKwkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHdsLUUnCiAJZWxzZQotCSAgY2FzZSAkaG9zdF9vcyBpbgotCSAgIG9wZW5ic2RbMDFdLiogfCBvcGVuYnNkMi5bMC03XSB8IG9wZW5ic2QyLlswLTddLiopCi0JICAgICBhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0JICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0JICAgICA7OwotCSAgICopCi0JICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQkgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0JICAgICA7OwotCSAgZXNhYworCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wtcnBhdGgsJGxpYmRpcicKIAlmaQogICAgICAgZWxzZQogCWxkX3NobGlicz1ubwpAQCAtMTI1NTEsMzMgKzEyOTgzLDUzIEBACiAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCiAgICAgICBoYXJkY29kZV9taW51c19MPXllcwogICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgIGFyY2hpdmVfY21kcz0nJEVDSE8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBEQVRBID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvICIgU0lOR0xFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwotICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0nZW14aW1wIC1vICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmEgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgc2hyZXh0X2NtZHM9LmRsbAorICAgICAgYXJjaGl2ZV9jbWRzPSckRUNITyAiTElCUkFSWSAke3NvbmFtZSUkc2hhcmVkX2V4dH0gSU5JVElOU1RBTkNFIFRFUk1JTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPICJEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCWVteGV4cCAkbGlib2JqcyB8ICRTRUQgLyJfRExMX0luaXRUZXJtIi9kID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCWVteGltcCAtbyAkbGliICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRFQ0hPICJMSUJSQVJZICR7c29uYW1lJSRzaGFyZWRfZXh0fSBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gIkRBVEEgTVVMVElQTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJcHJlZml4X2NtZHM9IiRTRUQifgorCWlmIHRlc3QgRVhQT1JUUyA9ICJgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIjsgdGhlbgorCSAgcHJlZml4X2NtZHM9IiRwcmVmaXhfY21kcyAtZSAxZCI7CisJZml+CisJcHJlZml4X2NtZHM9IiRwcmVmaXhfY21kcyAtZSBcInMvXlwoLipcKSQvX1wxL2dcIiJ+CisJY2F0ICRleHBvcnRfc3ltYm9scyB8ICRwcmVmaXhfY21kcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJENDIC1aZGxsIC1aY3J0ZGxsIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwllbXhpbXAgLW8gJGxpYiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBvbGRfYXJjaGl2ZV9Gcm9tX25ld19jbWRzPSdlbXhpbXAgLW8gJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfV9kbGwuYSAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwogICAgICAgOzsKIAogICAgIG9zZjMqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KKwlhbGxvd191bmRlZmluZWRfZmxhZz0nICR3bC1leHBlY3RfdW5yZXNvbHZlZCAkd2xcKicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR3bC1zZXRfdmVyc2lvbiAkd2wkdmVyc3RyaW5nImAgJHdsLXVwZGF0ZV9yZWdpc3RyeSAkd2wkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBmaQogICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9J25vJwotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHdsLXJwYXRoICR3bCRsaWJkaXInCiAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKICAgICAgIDs7CiAKICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHdsLWV4cGVjdF91bnJlc29sdmVkICR3bFwqJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtbXN5bSAkd2wtc29uYW1lICR3bCRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR3bC1zZXRfdmVyc2lvbiAkd2wkdmVyc3RyaW5nImAgJHdsLXVwZGF0ZV9yZWdpc3RyeSAkd2wkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wtcnBhdGggJHdsJGxpYmRpcicKICAgICAgIGVsc2UKIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCiAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lOyBwcmludGYgIiVzXFxuIiAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKKyAgICAgICAgICAkQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkd2wtaW5wdXQgJHdsJGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCiAKIAkjIEJvdGggYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CiAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLXJwYXRoICRsaWJkaXInCkBAIC0xMjU4OCwyNCArMTMwNDAsMjQgQEAKIAogICAgIHNvbGFyaXMqKQogICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQl3bGFyYz0nJHt3bH0nCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorCXdsYXJjPSckd2wnCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHdsLXogJHt3bH10ZXh0ICR3bC1oICR3bCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR3bC16ICR7d2x9dGV4dCAkd2wtTSAkd2wkbGliLmV4cCAkd2wtaCAkd2wkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKICAgICAgIGVsc2UKIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KIAkqIkNvbXBpbGVycyA1LjAiKikKIAkgIHdsYXJjPScnCi0JICBhcmNoaXZlX2NtZHM9JyRMRCAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworCSAgYXJjaGl2ZV9jbWRzPSckTEQgLUckYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAJICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAkTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgICAkTEQgLUckYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLU0gJGxpYi5leHAgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogCSAgOzsKIAkqKQotCSAgd2xhcmM9JyR7d2x9JwotCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgd2xhcmM9JyR3bCcKKwkgIGFyY2hpdmVfY21kcz0nJENDIC1HJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAkQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICAgICAgICRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKIAkgIDs7CiAJZXNhYwogICAgICAgZmkKQEAgLTEyNjE1LDExICsxMzA2NywxMSBAQAogICAgICAgc29sYXJpczIuWzAtNV0gfCBzb2xhcmlzMi5bMC01XS4qKSA7OwogICAgICAgKikKIAkjIFRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBjb21iaW5lIGFuZCByZW9yZGVyIGxpbmtlciBvcHRpb25zLAotCSMgYnV0IHVuZGVyc3RhbmRzIGAteiBsaW5rZXJfZmxhZycuICBHQ0MgZGlzY2FyZHMgaXQgd2l0aG91dCBgJHdsJywKKwkjIGJ1dCB1bmRlcnN0YW5kcyAnLXogbGlua2VyX2ZsYWcnLiAgR0NDIGRpc2NhcmRzIGl0IHdpdGhvdXQgJyR3bCcsCiAJIyBidXQgaXMgY2FyZWZ1bCBlbm91Z2ggbm90IHRvIHJlb3JkZXIuCiAJIyBTdXBwb3J0ZWQgc2luY2UgU29sYXJpcyAyLjYgKG1heWJlIDIuNS4xPykKLQlpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LXogJHt3bH1hbGxleHRyYWN0JGNvbnZlbmllbmNlICR7d2x9LXogJHt3bH1kZWZhdWx0ZXh0cmFjdCcKKwlpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR3bC16ICR7d2x9YWxsZXh0cmFjdCRjb252ZW5pZW5jZSAkd2wteiAke3dsfWRlZmF1bHRleHRyYWN0JwogCWVsc2UKIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScteiBhbGxleHRyYWN0JGNvbnZlbmllbmNlIC16IGRlZmF1bHRleHRyYWN0JwogCWZpCkBAIC0xMjYyOSwxMCArMTMwODEsMTAgQEAKICAgICAgIDs7CiAKICAgICBzdW5vczQqKQotICAgICAgaWYgdGVzdCAieCRob3N0X3ZlbmRvciIgPSB4c2VxdWVudDsgdGhlbgorICAgICAgaWYgdGVzdCBzZXF1ZW50ID0gIiRob3N0X3ZlbmRvciI7IHRoZW4KIAkjIFVzZSAkQ0MgdG8gbGluayB1bmRlciBzZXF1ZW50LCBiZWNhdXNlIGl0IHRocm93cyBpbiBzb21lIGV4dHJhIC5vCiAJIyBmaWxlcyB0aGF0IG1ha2UgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zIHdvcmsuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLUcgJHt3bH0taCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCWFyY2hpdmVfY21kcz0nJENDIC1HICR3bC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCiAJYXJjaGl2ZV9jbWRzPSckTEQgLWFzc2VydCBwdXJlLXRleHQgLUJzdGF0aWMgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgZmkKQEAgLTEyNjgxLDQzICsxMzEzMyw0MyBAQAogICAgICAgOzsKIAogICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LlswMV0uWzEwXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bMDI0XSopCi0gICAgICBub191bmRlZmluZWRfZmxhZz0nJHt3bH0teix0ZXh0JworICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyR3bC16LHRleHQnCiAgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sYz1ubwogICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwogICAgICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJwogCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICR3bC1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgZWxzZQotCWFyY2hpdmVfY21kcz0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCWFyY2hpdmVfY21kcz0nJENDIC1HICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1HICR3bC1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgZmkKICAgICAgIDs7CiAKICAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqKQotICAgICAgIyBOb3RlOiBXZSBjYW4gTk9UIHVzZSAteiBkZWZzIGFzIHdlIG1pZ2h0IGRlc2lyZSwgYmVjYXVzZSB3ZSBkbyBub3QKKyAgICAgICMgTm90ZTogV2UgQ0FOTk9UIHVzZSAteiBkZWZzIGFzIHdlIG1pZ2h0IGRlc2lyZSwgYmVjYXVzZSB3ZSBkbyBub3QKICAgICAgICMgbGluayB3aXRoIC1sYywgYW5kIHRoYXQgd291bGQgY2F1c2UgYW55IHN5bWJvbHMgdXNlZCBmcm9tIGxpYmMgdG8KICAgICAgICMgYWx3YXlzIGJlIHVucmVzb2x2ZWQsIHdoaWNoIG1lYW5zIGp1c3QgYWJvdXQgbm8gbGlicmFyeSB3b3VsZAogICAgICAgIyBldmVyIGxpbmsgY29ycmVjdGx5LiAgSWYgd2UncmUgbm90IHVzaW5nIEdOVSBsZCB3ZSB1c2UgLXogdGV4dAogICAgICAgIyB0aG91Z2gsIHdoaWNoIGRvZXMgY2F0Y2ggc29tZSBiYWQgc3ltYm9scyBidXQgaXNuJ3QgYXMgaGVhdnktaGFuZGVkCiAgICAgICAjIGFzIC16IGRlZnMuCi0gICAgICBub191bmRlZmluZWRfZmxhZz0nJHt3bH0teix0ZXh0JwotICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyR7d2x9LXosbm9kZWZzJworICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyR3bC16LHRleHQnCisgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz0nJHdsLXosbm9kZWZzJwogICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9bm8KICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LVIsJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR3bC1SLCRsaWJkaXInCiAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSc6JwogICAgICAgbGlua19hbGxfZGVwbGlicz15ZXMKLSAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tQmV4cG9ydCcKKyAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHdsLUJleHBvcnQnCiAgICAgICBydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCiAKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJYXJjaGl2ZV9jbWRzPSckQ0MgLUcgJHdsLWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLUcgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBmaQogICAgICAgOzsKIApAQCAtMTI3MzIsMTAgKzEzMTg0LDEwIEBACiAgICAgICA7OwogICAgIGVzYWMKIAotICAgIGlmIHRlc3QgeCRob3N0X3ZlbmRvciA9IHhzbmk7IHRoZW4KKyAgICBpZiB0ZXN0IHNuaSA9ICIkaG9zdF92ZW5kb3IiOyB0aGVuCiAgICAgICBjYXNlICRob3N0IGluCiAgICAgICBzeXN2NCB8IHN5c3Y0LjJ1dzIqIHwgc3lzdjQuMyogfCBzeXN2NSopCi0JZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPScke3dsfS1CbGFyZ2VkeW5zeW0nCisJZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPSckd2wtQmxhcmdlZHluc3ltJwogCTs7CiAgICAgICBlc2FjCiAgICAgZmkKQEAgLTEyNzQzLDcgKzEzMTk1LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsZF9zaGxpYnMiID4mNQogJGFzX2VjaG8gIiRsZF9zaGxpYnMiID4mNjsgfQotdGVzdCAiJGxkX3NobGlicyIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCit0ZXN0IG5vID0gIiRsZF9zaGxpYnMiICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KIAogd2l0aF9nbnVfbGQ9JHdpdGhfZ251X2xkCiAKQEAgLTEyNzY5LDcgKzEzMjIxLDcgQEAKICAgIyBBc3N1bWUgLWxjIHNob3VsZCBiZSBhZGRlZAogICBhcmNoaXZlX2NtZHNfbmVlZF9sYz15ZXMKIAotICBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMseWVzID0gIiRHQ0MsJGVuYWJsZV9zaGFyZWQiOyB0aGVuCiAgICAgY2FzZSAkYXJjaGl2ZV9jbWRzIGluCiAgICAgKid+JyopCiAgICAgICAjIEZJWE1FOiB3ZSBtYXkgaGF2ZSB0byBkZWFsIHdpdGggbXVsdGktY29tbWFuZCBzZXF1ZW5jZXMuCkBAIC0xMjk4NCwxNCArMTM0MzYsMTQgQEAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzLi4uICIgPiY2OyB9CiAKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCitpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogICBjYXNlICRob3N0X29zIGluCi0gICAgZGFyd2luKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LywvTFIvIiA7OwotICAgICopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8iIDs7CisgICAgZGFyd2luKikgbHRfYXdrX2FyZz0nL15saWJyYXJpZXM6LywvTFIvJyA7OworICAgICopIGx0X2F3a19hcmc9Jy9ebGlicmFyaWVzOi8nIDs7CiAgIGVzYWMKICAgY2FzZSAkaG9zdF9vcyBpbgotICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VkX3N0cmlwX2VxPSJzLD1cKFtBLVphLXpdOlwpLFwxLGciIDs7Ci0gICAgKikgbHRfc2VkX3N0cmlwX2VxPSJzLD0vLC8sZyIgOzsKKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlZF9zdHJpcF9lcT0nc3w9XChbQS1aYS16XTpcKXxcMXxnJyA7OworICAgICopIGx0X3NlZF9zdHJpcF9lcT0nc3w9L3wvfGcnIDs7CiAgIGVzYWMKICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGF3ayAkbHRfYXdrX2FyZyB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgJGx0X3NlZF9zdHJpcF9lcWAKICAgY2FzZSAkbHRfc2VhcmNoX3BhdGhfc3BlYyBpbgpAQCAtMTMwMDcsMjggKzEzNDU5LDM1IEBACiAgICAgOzsKICAgZXNhYwogICAjIE9rLCBub3cgd2UgaGF2ZSB0aGUgcGF0aCwgc2VwYXJhdGVkIGJ5IHNwYWNlcywgd2UgY2FuIHN0ZXAgdGhyb3VnaCBpdAotICAjIGFuZCBhZGQgbXVsdGlsaWIgZGlyIGlmIG5lY2Vzc2FyeS4KKyAgIyBhbmQgYWRkIG11bHRpbGliIGRpciBpZiBuZWNlc3NhcnkuLi4KICAgbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9Ci0gIGx0X211bHRpX29zX2Rpcj1gJENDICRDUFBGTEFHUyAkQ0ZMQUdTICRMREZMQUdTIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnkgMj4vZGV2L251bGxgCisgIGx0X211bHRpX29zX2Rpcj0vYCRDQyAkQ1BQRkxBR1MgJENGTEFHUyAkTERGTEFHUyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5IDI+L2Rldi9udWxsYAorICAjIC4uLmJ1dCBpZiBzb21lIHBhdGggY29tcG9uZW50IGFscmVhZHkgZW5kcyB3aXRoIHRoZSBtdWx0aWxpYiBkaXIgd2UgYXNzdW1lCisgICMgdGhhdCBhbGwgaXMgZmluZSBhbmQgdHJ1c3QgLXByaW50LXNlYXJjaC1kaXJzIGFzIGlzIChHQ0MgNC4yPyBvciBuZXdlcikuCisgIGNhc2UgIiRsdF9tdWx0aV9vc19kaXI7ICRsdF9zZWFyY2hfcGF0aF9zcGVjICIgaW4KKyAgIi87ICIqIHwgIi8uOyAiKiB8ICIvLi87ICIqIHwgKiIkbHRfbXVsdGlfb3NfZGlyICIqIHwgKiIkbHRfbXVsdGlfb3NfZGlyLyAiKikKKyAgICBsdF9tdWx0aV9vc19kaXI9CisgICAgOzsKKyAgZXNhYwogICBmb3IgbHRfc3lzX3BhdGggaW4gJGx0X3NlYXJjaF9wYXRoX3NwZWM7IGRvCi0gICAgaWYgdGVzdCAtZCAiJGx0X3N5c19wYXRoLyRsdF9tdWx0aV9vc19kaXIiOyB0aGVuCi0gICAgICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aC8kbHRfbXVsdGlfb3NfZGlyIgotICAgIGVsc2UKKyAgICBpZiB0ZXN0IC1kICIkbHRfc3lzX3BhdGgkbHRfbXVsdGlfb3NfZGlyIjsgdGhlbgorICAgICAgbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9IiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyAkbHRfc3lzX3BhdGgkbHRfbXVsdGlfb3NfZGlyIgorICAgIGVsaWYgdGVzdCAtbiAiJGx0X211bHRpX29zX2RpciI7IHRoZW4KICAgICAgIHRlc3QgLWQgIiRsdF9zeXNfcGF0aCIgJiYgXAogCWx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPSIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgJGx0X3N5c19wYXRoIgogICAgIGZpCiAgIGRvbmUKICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCBhd2sgJwotQkVHSU4ge1JTPSIgIjsgRlM9Ii98XG4iO30gewotICBsdF9mb289IiI7Ci0gIGx0X2NvdW50PTA7CitCRUdJTiB7UlMgPSAiICI7IEZTID0gIi98XG4iO30geworICBsdF9mb28gPSAiIjsKKyAgbHRfY291bnQgPSAwOwogICBmb3IgKGx0X2kgPSBORjsgbHRfaSA+IDA7IGx0X2ktLSkgewogICAgIGlmICgkbHRfaSAhPSAiIiAmJiAkbHRfaSAhPSAiLiIpIHsKICAgICAgIGlmICgkbHRfaSA9PSAiLi4iKSB7CiAgICAgICAgIGx0X2NvdW50Kys7CiAgICAgICB9IGVsc2UgewogICAgICAgICBpZiAobHRfY291bnQgPT0gMCkgewotICAgICAgICAgIGx0X2Zvbz0iLyIgJGx0X2kgbHRfZm9vOworICAgICAgICAgIGx0X2ZvbyA9ICIvIiAkbHRfaSBsdF9mb287CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgbHRfY291bnQtLTsKICAgICAgICAgfQpAQCAtMTMwNDIsNyArMTM1MDEsNyBAQAogICAjIGZvciB0aGVzZSBob3N0cy4KICAgY2FzZSAkaG9zdF9vcyBpbgogICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8XAotICAgICAgJFNFRCAncywvXChbQS1aYS16XTpcKSxcMSxnJ2AgOzsKKyAgICAgICRTRUQgJ3N8L1woW0EtWmEtel06XCl8XDF8ZydgIDs7CiAgIGVzYWMKICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJGx0X05MMlNQYAogZWxzZQpAQCAtMTMwNTEsNyArMTM1MTAsNyBAQAogbGlicmFyeV9uYW1lc19zcGVjPQogbGlibmFtZV9zcGVjPSdsaWIkbmFtZScKIHNvbmFtZV9zcGVjPQotc2hyZXh0X2NtZHM9Ii5zbyIKK3NocmV4dF9jbWRzPS5zbwogcG9zdGluc3RhbGxfY21kcz0KIHBvc3R1bmluc3RhbGxfY21kcz0KIGZpbmlzaF9jbWRzPQpAQCAtMTMwNjgsMTQgKzEzNTI3LDE2IEBACiAjIGZsYWdzIHRvIGJlIGxlZnQgd2l0aG91dCBhcmd1bWVudHMKIG5lZWRfdmVyc2lvbj11bmtub3duCiAKKworCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUuYScKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lLmEnCiAgIHNobGlicGF0aF92YXI9TElCUEFUSAogCiAgICMgQUlYIDMgaGFzIG5vIHZlcnNpb25pbmcgc3VwcG9ydCwgc28gd2UgYXBwZW5kIGEgbWFqb3IgdmVyc2lvbiB0byB0aGUgbmFtZS4KLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgOzsKIAogYWl4WzQtOV0qKQpAQCAtMTMwODMsNDEgKzEzNTQ0LDkxIEBACiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogICAgICMgQUlYIDUgc3VwcG9ydHMgSUE2NAotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBlbHNlCiAgICAgIyBXaXRoIEdDQyB1cCB0byAyLjk1LngsIGNvbGxlY3QyIHdvdWxkIGNyZWF0ZSBhbiBpbXBvcnQgZmlsZQogICAgICMgZm9yIGRlcGVuZGVuY2UgbGlicmFyaWVzLiAgVGhlIGltcG9ydCBmaWxlIHdvdWxkIHN0YXJ0IHdpdGgKLSAgICAjIHRoZSBsaW5lIGAjISAuJy4gIFRoaXMgd291bGQgY2F1c2UgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5IHRvCi0gICAgIyBkZXBlbmQgb24gYC4nLCBhbHdheXMgYW4gaW52YWxpZCBsaWJyYXJ5LiAgVGhpcyB3YXMgZml4ZWQgaW4KKyAgICAjIHRoZSBsaW5lICcjISAuJy4gIFRoaXMgd291bGQgY2F1c2UgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5IHRvCisgICAgIyBkZXBlbmQgb24gJy4nLCBhbHdheXMgYW4gaW52YWxpZCBsaWJyYXJ5LiAgVGhpcyB3YXMgZml4ZWQgaW4KICAgICAjIGRldmVsb3BtZW50IHNuYXBzaG90cyBvZiBHQ0MgcHJpb3IgdG8gMy4wLgogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgIGFpeDQgfCBhaXg0LlswMV0gfCBhaXg0LlswMV0uKikKICAgICAgIGlmIHsgZWNobyAnI2lmIF9fR05VQ19fID4gMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA5NyknCiAJICAgZWNobyAnIHllcyAnCi0JICAgZWNobyAnI2VuZGlmJzsgfSB8ICR7Q0N9IC1FIC0gfCAkR1JFUCB5ZXMgPiAvZGV2L251bGw7IHRoZW4KKwkgICBlY2hvICcjZW5kaWYnOyB9IHwgJENDIC1FIC0gfCAkR1JFUCB5ZXMgPiAvZGV2L251bGw7IHRoZW4KIAk6CiAgICAgICBlbHNlCiAJY2FuX2J1aWxkX3NoYXJlZD1ubwogICAgICAgZmkKICAgICAgIDs7CiAgICAgZXNhYwotICAgICMgQUlYIChvbiBQb3dlciopIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIGN1cnJlbnRseSB3ZSBjYW4gbm90IGhhcmRjb2RlIGNvcnJlY3QKKyAgICAjIFVzaW5nIEltcG9ydCBGaWxlcyBhcyBhcmNoaXZlIG1lbWJlcnMsIGl0IGlzIHBvc3NpYmxlIHRvIHN1cHBvcnQKKyAgICAjIGZpbGVuYW1lLWJhc2VkIHZlcnNpb25pbmcgb2Ygc2hhcmVkIGxpYnJhcnkgYXJjaGl2ZXMgb24gQUlYLiBXaGlsZQorICAgICMgdGhpcyB3b3VsZCB3b3JrIGZvciBib3RoIHdpdGggYW5kIHdpdGhvdXQgcnVudGltZSBsaW5raW5nLCBpdCB3aWxsCisgICAgIyBwcmV2ZW50IHN0YXRpYyBsaW5raW5nIG9mIHN1Y2ggYXJjaGl2ZXMuIFNvIHdlIGRvIGZpbGVuYW1lLWJhc2VkCisgICAgIyBzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIHdpdGggLnNvIGV4dGVuc2lvbiBvbmx5LCB3aGljaCBpcyB1c2VkCisgICAgIyB3aGVuIGJvdGggcnVudGltZSBsaW5raW5nIGFuZCBzaGFyZWQgbGlua2luZyBpcyBlbmFibGVkLgorICAgICMgVW5mb3J0dW5hdGVseSwgcnVudGltZSBsaW5raW5nIG1heSBpbXBhY3QgcGVyZm9ybWFuY2UsIHNvIHdlIGRvCisgICAgIyBub3Qgd2FudCB0aGlzIHRvIGJlIHRoZSBkZWZhdWx0IGV2ZW50dWFsbHkuIEFsc28sIHdlIHVzZSB0aGUKKyAgICAjIHZlcnNpb25lZCAuc28gbGlicyBmb3IgZXhlY3V0YWJsZXMgb25seSBpZiB0aGVyZSBpcyB0aGUgLWJydGwKKyAgICAjIGxpbmtlciBmbGFnIGluIExERkxBR1MgYXMgd2VsbCwgb3IgLS13aXRoLWFpeC1zb25hbWU9c3ZyNCBvbmx5LgorICAgICMgVG8gYWxsb3cgZm9yIGZpbGVuYW1lLWJhc2VkIHZlcnNpb25pbmcgc3VwcG9ydCwgd2UgbmVlZCB0byBjcmVhdGUKKyAgICAjIGxpYk5BTUUuc28uViBhcyBhbiBhcmNoaXZlIGZpbGUsIGNvbnRhaW5pbmc6CisgICAgIyAqKSBhbiBJbXBvcnQgRmlsZSwgcmVmZXJyaW5nIHRvIHRoZSB2ZXJzaW9uZWQgZmlsZW5hbWUgb2YgdGhlCisgICAgIyAgICBhcmNoaXZlIGFzIHdlbGwgYXMgdGhlIHNoYXJlZCBhcmNoaXZlIG1lbWJlciwgdGVsbGluZyB0aGUKKyAgICAjICAgIGJpdHdpZHRoICgzMiBvciA2NCkgb2YgdGhhdCBzaGFyZWQgb2JqZWN0LCBhbmQgcHJvdmlkaW5nIHRoZQorICAgICMgICAgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzIG9mIHRoYXQgc2hhcmVkIG9iamVjdCwgZXZlbnR1YWxseQorICAgICMgICAgZGVjb3JhdGVkIHdpdGggdGhlICd3ZWFrJyBrZXl3b3JkCisgICAgIyAqKSB0aGUgc2hhcmVkIG9iamVjdCB3aXRoIHRoZSBGX0xPQURPTkxZIGZsYWcgc2V0LCB0byByZWFsbHkgYXZvaWQKKyAgICAjICAgIGl0IGJlaW5nIHNlZW4gYnkgdGhlIGxpbmtlci4KKyAgICAjIEF0IHJ1biB0aW1lIHdlIGJldHRlciB1c2UgdGhlIHJlYWwgZmlsZSByYXRoZXIgdGhhbiBhbm90aGVyIHN5bWxpbmssCisgICAgIyBidXQgZm9yIGxpbmsgdGltZSB3ZSBjcmVhdGUgdGhlIHN5bWxpbmsgbGliTkFNRS5zbyAtPiBsaWJOQU1FLnNvLlYKKworICAgIGNhc2UgJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyBpbgorICAgICMgQUlYIChvbiBQb3dlciopIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIGN1cnJlbnRseSB3ZSBjYW5ub3QgaGFyZGNvZGUgY29ycmVjdAogICAgICMgc29uYW1lIGludG8gZXhlY3V0YWJsZS4gUHJvYmFibHkgd2UgY2FuIGFkZCB2ZXJzaW9uaW5nIHN1cHBvcnQgdG8KICAgICAjIGNvbGxlY3QyLCBzbyBhZGRpdGlvbmFsIGxpbmtzIGNhbiBiZSB1c2VmdWwgaW4gZnV0dXJlLgotICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorICAgIGFpeCx5ZXMpICMgdHJhZGl0aW9uYWwgbGlidG9vbAorICAgICAgZHluYW1pY19saW5rZXI9J0FJWCB1bnZlcnNpb25hYmxlIGxpYi5zbycKICAgICAgICMgSWYgdXNpbmcgcnVuIHRpbWUgbGlua2luZyAob24gQUlYIDQuMiBvciBsYXRlcikgdXNlIGxpYjxuYW1lPi5zbwogICAgICAgIyBpbnN0ZWFkIG9mIGxpYjxuYW1lPi5hIHRvIGxldCBwZW9wbGUga25vdyB0aGF0IHRoZXNlIGFyZSBub3QKICAgICAgICMgdHlwaWNhbCBBSVggc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIGVsc2UKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICAgIDs7CisgICAgYWl4LG5vKSAjIHRyYWRpdGlvbmFsIEFJWCBvbmx5CisgICAgICBkeW5hbWljX2xpbmtlcj0nQUlYIGxpYi5hKGxpYi5zby5WKScKICAgICAgICMgV2UgcHJlc2VydmUgLmEgYXMgZXh0ZW5zaW9uIGZvciBzaGFyZWQgbGlicmFyaWVzIHRocm91Z2ggQUlYNC4yCiAgICAgICAjIGFuZCBsYXRlciB3aGVuIHdlIGFyZSBub3QgZG9pbmcgcnVuIHRpbWUgbGlua2luZy4KLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0uYSAkbGlibmFtZS5hJwotICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgICBmaQorICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlLmEgJGxpYm5hbWUuYScKKyAgICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCisgICAgICA7OworICAgIHN2cjQsKikgIyBmdWxsIHN2cjQgb25seQorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuc28uVigkc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubykiCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgICAgIyBXZSBkbyBub3Qgc3BlY2lmeSBhIHBhdGggaW4gSW1wb3J0IEZpbGVzLCBzbyBMSUJQQVRIIGZpcmVzLgorICAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgICAgOzsKKyAgICAqLHllcykgIyBib3RoLCBwcmVmZXIgc3ZyNAorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuc28uVigkc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubyksIGxpYi5hKGxpYi5zby5WKSIKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgICAjIHVucHJlZmVycmVkIHNoYXJlZGxpYiBsaWJOQU1FLmEgbmVlZHMgZXh0cmEgaGFuZGxpbmcKKyAgICAgIHBvc3RpbnN0YWxsX2NtZHM9J3Rlc3QgLW4gIiRsaW5rbmFtZSIgfHwgbGlua25hbWU9IiRyZWFsbmFtZSJ+ZnVuY19zdHJpcG5hbWUgIiIgIi5zbyIgIiRsaW5rbmFtZSJ+JGluc3RhbGxfc2hhcmVkX3Byb2cgIiRkaXIvJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC4kbGliZXh0IiAiJGRlc3RkaXIvJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC4kbGliZXh0In50ZXN0IC16ICIkdHN0cmlwbWUiIHx8IHRlc3QgLXogIiRzdHJpcGxpYiIgfHwgJHN0cmlwbGliICIkZGVzdGRpci8kZnVuY19zdHJpcG5hbWVfcmVzdWx0LiRsaWJleHQiJworICAgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdmb3IgbiBpbiAkbGlicmFyeV9uYW1lcyAkb2xkX2xpYnJhcnk7IGRvIDo7IGRvbmV+ZnVuY19zdHJpcG5hbWUgIiIgIi5zbyIgIiRuIn50ZXN0ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IiA9ICIkbiIgfHwgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuJGxpYmV4dCInCisgICAgICAjIFdlIGRvIG5vdCBzcGVjaWZ5IGEgcGF0aCBpbiBJbXBvcnQgRmlsZXMsIHNvIExJQlBBVEggZmlyZXMuCisgICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgICAgICA7OworICAgICosbm8pICMgYm90aCwgcHJlZmVyIGFpeAorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuYShsaWIuc28uViksIGxpYi5zby5WKCRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vKSIKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZS5hICRsaWJuYW1lLmEnCisgICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJworICAgICAgIyB1bnByZWZlcnJlZCBzaGFyZWRsaWIgbGliTkFNRS5zby5WIGFuZCBzeW1saW5rIGxpYk5BTUUuc28gbmVlZCBleHRyYSBoYW5kbGluZworICAgICAgcG9zdGluc3RhbGxfY21kcz0ndGVzdCAteiAiJGRsbmFtZSIgfHwgJGluc3RhbGxfc2hhcmVkX3Byb2cgJGRpci8kZGxuYW1lICRkZXN0ZGlyLyRkbG5hbWV+dGVzdCAteiAiJHRzdHJpcG1lIiB8fCB0ZXN0IC16ICIkc3RyaXBsaWIiIHx8ICRzdHJpcGxpYiAkZGVzdGRpci8kZGxuYW1lfnRlc3QgLW4gIiRsaW5rbmFtZSIgfHwgbGlua25hbWU9JHJlYWxuYW1lfmZ1bmNfc3RyaXBuYW1lICIiICIuYSIgIiRsaW5rbmFtZSJ+KGNkICIkZGVzdGRpciIgJiYgJExOX1MgLWYgJGRsbmFtZSAkZnVuY19zdHJpcG5hbWVfcmVzdWx0LnNvKScKKyAgICAgIHBvc3R1bmluc3RhbGxfY21kcz0ndGVzdCAteiAiJGRsbmFtZSIgfHwgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRkbG5hbWUifmZvciBuIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8gOjsgZG9uZX5mdW5jX3N0cmlwbmFtZSAiIiAiLmEiICIkbiJ+ZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuc28iJworICAgICAgOzsKKyAgICBlc2FjCiAgICAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICiAgIGZpCiAgIDs7CkBAIC0xMzEyNywxOCArMTM2MzgsMTggQEAKICAgcG93ZXJwYykKICAgICAjIFNpbmNlIEp1bHkgMjAwNyBBbWlnYU9TNCBvZmZpY2lhbGx5IHN1cHBvcnRzIC5zbyBsaWJyYXJpZXMuCiAgICAgIyBXaGVuIGNvbXBpbGluZyB0aGUgZXhlY3V0YWJsZSwgYWRkIC11c2UtZHlubGQgLUxzb2JqczogdG8gdGhlIGNvbXBpbGVsaW5lLgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgICA7OwogICBtNjhrKQogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuaXhsaWJyYXJ5ICRsaWJuYW1lLmEnCiAgICAgIyBDcmVhdGUgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSBlbnRyaWVzIGluIC9zeXMvbGlicy4KLSAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKKyAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCiAgICAgOzsKICAgZXNhYwogICA7OwogCiBiZW9zKikKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaGFyZWRfZXh0JwogICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgbGQuc28iCiAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgIDs7CkBAIC0xMzE0Niw4ICsxMzY1Nyw4IEBACiBic2RpWzQ1XSopCiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3NobGliIC91c3IvbGliIC91c3IvWDExL2xpYiAvdXNyL2NvbnRyaWIvbGliIC9saWIgL3Vzci9sb2NhbC9saWIiCkBAIC0xMzE1OSw3ICsxMzY3MCw3IEBACiAKIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgdmVyc2lvbl90eXBlPXdpbmRvd3MKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIHNocmV4dF9jbWRzPS5kbGwKICAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogCkBAIC0xMzE2OCw4ICsxMzY3OSw4IEBACiAgICAgIyBnY2MKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJGZpbGVgfgorICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJGJhc2VfZmlsZSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CiAgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CiAgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KICAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZX4KQEAgLTEzMTg1LDE3ICsxMzY5NiwxNyBAQAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBjeWd3aW4qKQogICAgICAgIyBDeWd3aW4gRExMcyB1c2UgJ2N5ZycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCi0gICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL2N5Zy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJGxpYm5hbWUgfCBzZWQgLWUgJ3MvXmxpYi9jeWcvJ2BgZWNobyAkcmVsZWFzZSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHZlcnN1ZmZpeCRzaGFyZWRfZXh0JwogCiAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgL3Vzci9saWIvdzMyYXBpIgogICAgICAgOzsKICAgICBtaW5ndyogfCBjZWdjYyopCiAgICAgICAjIE1pbkdXIERMTHMgdXNlIHRyYWRpdGlvbmFsICdsaWInIHByZWZpeAotICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lYGVjaG8gJHJlbGVhc2UgfCAkU0VEIC1lICdzL1suXS8tL2cnYCR2ZXJzdWZmaXgkc2hhcmVkX2V4dCcKICAgICAgIDs7CiAgICAgcHczMiopCiAgICAgICAjIHB3MzIgRExMcyB1c2UgJ3B3JyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJGxpYm5hbWUgfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICRyZWxlYXNlIHwgJFNFRCAtZSAncy9bLl0vLS9nJ2AkdmVyc3VmZml4JHNoYXJlZF9leHQnCiAgICAgICA7OwogICAgIGVzYWMKICAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwpAQCAtMTMyMDQsOCArMTM3MTUsOCBAQAogICAqLGNsKikKICAgICAjIE5hdGl2ZSBNU1ZDCiAgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lYGVjaG8gJHJlbGVhc2UgfCAkU0VEIC1lICdzL1suXS8tL2cnYCR2ZXJzdWZmaXgkc2hhcmVkX2V4dCcKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5saWInCiAKICAgICBjYXNlICRidWlsZF9vcyBpbgogICAgIG1pbmd3KikKQEAgLTEzMjMyLDcgKzEzNzQzLDcgQEAKICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCiAgICAgICA7OwogICAgICopCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9JExJQgogICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCiAgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCkBAIC0xMzI0NSw4ICsxMzc1Niw4IEBACiAgICAgZXNhYwogCiAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwkZmlsZWB+CisgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wkYmFzZV9maWxlJ1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KICAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KICAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgogICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwpAQCAtMTMyNTksNyArMTM3NzAsNyBAQAogCiAgICopCiAgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZWBlY2hvICRyZWxlYXNlIHwgJFNFRCAtZSAncy9bLl0vLS9nJ2AkdmVyc3VmZml4JHNoYXJlZF9leHQgJGxpYm5hbWUubGliJwogICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCiAgICAgOzsKICAgZXNhYwpAQCAtMTMyNzIsOCArMTM3ODMsOCBAQAogICB2ZXJzaW9uX3R5cGU9ZGFyd2luCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7bWFqb3J9JHNoYXJlZF9leHQgJHtsaWJuYW1lfSRzaGFyZWRfZXh0JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke21ham9yfSRzaGFyZWRfZXh0JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2UkbWFqb3Ikc2hhcmVkX2V4dCAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRtYWpvciRzaGFyZWRfZXh0JwogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiAgIHNobGlicGF0aF92YXI9RFlMRF9MSUJSQVJZX1BBVEgKICAgc2hyZXh0X2NtZHM9J2B0ZXN0IC4kbW9kdWxlID0gLnllcyAmJiBlY2hvIC5zbyB8fCBlY2hvIC5keWxpYmAnCkBAIC0xMzI4Niw4ICsxMzc5Nyw4IEBACiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgOzsKIApAQCAtMTMzMDUsMTIgKzEzODE2LDEzIEBACiAgIHZlcnNpb25fdHlwZT1mcmVlYnNkLSRvYmpmb3JtYXQKICAgY2FzZSAkdmVyc2lvbl90eXBlIGluCiAgICAgZnJlZWJzZC1lbGYqKQotICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICAgICAgbmVlZF92ZXJzaW9uPW5vCiAgICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgICAgIDs7CiAgICAgZnJlZWJzZC0qKQotICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCR2ZXJzdWZmaXgnCiAgICAgICBuZWVkX3ZlcnNpb249eWVzCiAgICAgICA7OwogICBlc2FjCkBAIC0xMzM0MCwxMCArMTM4NTIsMTAgQEAKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgcnVudGltZV9sb2FkZXIiCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0ke21ham9yfSAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubwogICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICA7OwpAQCAtMTMzNjEsMTQgKzEzODczLDE1IEBACiAgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbyIKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMgIyBVbmxlc3MgK25vZW52dmFyIGlzIHNwZWNpZmllZC4KLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgIGlmIHRlc3QgIlgkSFBVWF9JQTY0X01PREUiID0gWDMyOyB0aGVuCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCisgICAgaWYgdGVzdCAzMiA9ICIkSFBVWF9JQTY0X01PREUiOyB0aGVuCiAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL2hwdXgzMiAvdXNyL2xvY2FsL2xpYi9ocHV4MzIgL3Vzci9sb2NhbC9saWIiCisgICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0vdXNyL2xpYi9ocHV4MzIKICAgICBlbHNlCiAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL2hwdXg2NCAvdXNyL2xvY2FsL2xpYi9ocHV4NjQiCisgICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0vdXNyL2xpYi9ocHV4NjQKICAgICBmaQotICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMKICAgICA7OwogICBocHBhKjY0KikKICAgICBzaHJleHRfY21kcz0nLnNsJwpAQCAtMTMzNzYsOCArMTM4ODksOCBAQAogICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc2wiCiAgICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEggIyBIb3cgc2hvdWxkIHdlIGhhbmRsZSBTSExJQl9QQVRICiAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcyAjIFVubGVzcyArbm9lbnZ2YXIgaXMgc3BlY2lmaWVkLgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYi9wYTIwXzY0IC91c3IvY2NzL2xpYi9wYTIwXzY0IgogICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMKICAgICA7OwpAQCAtMTMzODYsOCArMTM4OTksOCBAQAogICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc2wiCiAgICAgc2hsaWJwYXRoX3Zhcj1TSExJQl9QQVRICiAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vICMgK3MgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFNITElCX1BBVEgKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICAgIDs7CiAgIGVzYWMKICAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUsIC4uLgpAQCAtMTM0MDAsOCArMTM5MTMsOCBAQAogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBkeW5hbWljX2xpbmtlcj0nSW50ZXJpeCAzLnggbGQuc28uMSAoUEUsIGxpa2UgRUxGKScKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCkBAIC0xMzQxMiw3ICsxMzkyNSw3IEBACiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBub25zdG9wdXgqKSB2ZXJzaW9uX3R5cGU9bm9uc3RvcHV4IDs7CiAgICAgKikKLQlpZiB0ZXN0ICIkbHRfY3ZfcHJvZ19nbnVfbGQiID0geWVzOyB0aGVuCisJaWYgdGVzdCB5ZXMgPSAiJGx0X2N2X3Byb2dfZ251X2xkIjsgdGhlbgogCQl2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAJZWxzZQogCQl2ZXJzaW9uX3R5cGU9aXJpeApAQCAtMTM0MjAsOCArMTM5MzMsOCBAQAogICBlc2FjCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCAkbGlibmFtZSRzaGFyZWRfZXh0JwogICBjYXNlICRob3N0X29zIGluCiAgIGlyaXg1KiB8IG5vbnN0b3B1eCopCiAgICAgbGlic3VmZj0gc2hsaWJzdWZmPQpAQCAtMTM0NDAsOCArMTM5NTMsOCBAQAogICBlc2FjCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWSR7c2hsaWJzdWZmfV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubwotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJHtsaWJzdWZmfSAvbGliJHtsaWJzdWZmfSAvdXNyL2xvY2FsL2xpYiR7bGlic3VmZn0iCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiR7bGlic3VmZn0gL2xpYiR7bGlic3VmZn0iCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIkbGlic3VmZiAvbGliJGxpYnN1ZmYgL3Vzci9sb2NhbC9saWIkbGlic3VmZiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJGxpYnN1ZmYgL2xpYiRsaWJzdWZmIgogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgIDs7CiAKQEAgLTEzNDUwLDEzICsxMzk2MywzMyBAQAogICBkeW5hbWljX2xpbmtlcj1ubwogICA7OwogCitsaW51eCphbmRyb2lkKikKKyAgdmVyc2lvbl90eXBlPW5vbmUgIyBBbmRyb2lkIGRvZXNuJ3Qgc3VwcG9ydCB2ZXJzaW9uZWQgbGlicmFyaWVzLgorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JworICBmaW5pc2hfY21kcz0KKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworCisgICMgVGhpcyBpbXBsaWVzIG5vIGZhc3RfaW5zdGFsbCwgd2hpY2ggaXMgdW5hY2NlcHRhYmxlLgorICAjIFNvbWUgcmV3b3JrIHdpbGwgYmUgbmVlZGVkIHRvIGFsbG93IGZvciBmYXN0X2luc3RhbGwKKyAgIyBiZWZvcmUgdGhpcyBjYW4gYmUgZW5hYmxlZC4KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworCisgIGR5bmFtaWNfbGlua2VyPSdBbmRyb2lkIGxpbmtlcicKKyAgIyBEb24ndCBlbWJlZCAtcnBhdGggZGlyZWN0b3JpZXMgc2luY2UgdGhlIGxpbmtlciBkb2Vzbid0IHN1cHBvcnQgdGhlbS4KKyAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICA7OworCiAjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCiBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUgfCBnbnUqKQogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCkBAIC0xMzUwMCw3ICsxNDAzMywxMiBAQAogICAjIGJlZm9yZSB0aGlzIGNhbiBiZSBlbmFibGVkLgogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAKLSAgIyBBcHBlbmQgbGQuc28uY29uZiBjb250ZW50cyB0byB0aGUgc2VhcmNoIHBhdGgKKyAgIyBJZGVhbGx5LCB3ZSBjb3VsZCB1c2UgbGRjb25maWcgdG8gcmVwb3J0ICphbGwqIGRpcmVjdG9yZXMgd2hpY2ggYXJlCisgICMgc2VhcmNoZWQgZm9yIGxpYnJhcmllcywgaG93ZXZlciB0aGlzIGlzIHN0aWxsIG5vdCBwb3NzaWJsZS4gIEFzaWRlIGZyb20gbm90CisgICMgYmVpbmcgY2VydGFpbiAvc2Jpbi9sZGNvbmZpZyBpcyBhdmFpbGFibGUsIGNvbW1hbmQKKyAgIyAnbGRjb25maWcgLU4gLVggLXYgfCBncmVwIF4vJyBvbiA2NGJpdCBGZWRvcmEgZG9lcyBub3QgcmVwb3J0IC91c3IvbGliNjQsCisgICMgZXZlbiB0aG91Z2ggaXQgaXMgc2VhcmNoZWQgYXQgcnVuLXRpbWUuICBUcnkgdG8gZG8gdGhlIGJlc3QgZ3Vlc3MgYnkKKyAgIyBhcHBlbmRpbmcgbGQuc28uY29uZiBjb250ZW50cyAoYW5kIGluY2x1ZGVzKSB0byB0aGUgc2VhcmNoIHBhdGguCiAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCiAgICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXCQyKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcJDA7IHNraXAgPSAwOyB9JyA8IC9ldGMvbGQuc28uY29uZiB8ICRTRUQgLWUgJ3MvIy4qLy87L15bCSBdKmh3Y2FwWwkgXS9kO3MvWzosCV0vIC9nO3MvPVtePV0qJC8vO3MvPVtePSBdKiAvIC9nO3MvIi8vZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAkbHRfbGRfZXh0cmEiCkBAIC0xMzUzMiwxMiArMTQwNzAsMTIgQEAKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQkdmVyc3VmZml4JwogICAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1tICRsaWJkaXInCiAgICAgZHluYW1pY19saW5rZXI9J05ldEJTRCAoYS5vdXQpIGxkLnNvJwogICBlbHNlCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICAgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0QgbGQuZWxmX3NvJwogICBmaQogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMTM1NDcsNyArMTQwODUsNyBAQAogCiBuZXdzb3M2KQogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgOzsKQEAgLTEzNTU2LDU4ICsxNDA5NCw2OCBAQAogICB2ZXJzaW9uX3R5cGU9cW54CiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgZHluYW1pY19saW5rZXI9J2xkcW54LnNvJwogICA7OwogCi1vcGVuYnNkKikKK29wZW5ic2QqIHwgYml0cmlnKikKICAgdmVyc2lvbl90eXBlPXN1bm9zCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9L3Vzci9saWIKICAgbmVlZF9saWJfcHJlZml4PW5vCi0gICMgU29tZSBvbGRlciB2ZXJzaW9ucyBvZiBPcGVuQlNEICgzLjMgYXQgbGVhc3QpICpkbyogbmVlZCB2ZXJzaW9uZWQgbGlicy4KLSAgY2FzZSAkaG9zdF9vcyBpbgotICAgIG9wZW5ic2QzLjMgfCBvcGVuYnNkMy4zLiopCW5lZWRfdmVyc2lvbj15ZXMgOzsKLSAgICAqKQkJCQluZWVkX3ZlcnNpb249bm8gIDs7Ci0gIGVzYWMKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiOyB0aGVuCisgICAgbmVlZF92ZXJzaW9uPW5vCisgIGVsc2UKKyAgICBuZWVkX3ZlcnNpb249eWVzCisgIGZpCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCcKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW0gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgotICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgIG9wZW5ic2QyLls4OV0gfCBvcGVuYnNkMi5bODldLiopCi0Jc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0JOzsKLSAgICAgICopCi0Jc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotCTs7Ci0gICAgICBlc2FjCi0gIGVsc2UKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0gIGZpCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgOzsKIAogb3MyKikKICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIHZlcnNpb25fdHlwZT13aW5kb3dzCisgIHNocmV4dF9jbWRzPS5kbGwKKyAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fSAkbGlibmFtZS5hJworICAjIE9TLzIgY2FuIG9ubHkgbG9hZCBhIERMTCB3aXRoIGEgYmFzZSBuYW1lIG9mIDggY2hhcmFjdGVycyBvciBsZXNzLgorICBzb25hbWVfc3BlYz0nYHRlc3QgLW4gIiRvczJkbGxuYW1lIiAmJiBsaWJuYW1lPSIkb3MyZGxsbmFtZSI7CisgICAgdj0kKCRFQ0hPICRyZWxlYXNlJHZlcnN1ZmZpeCB8IHRyIC1kIC4tKTsKKyAgICBuPSQoJEVDSE8gJGxpYm5hbWUgfCBjdXQgLWIgLSQoKDggLSAkeyN2fSkpIHwgdHIgLiBfKTsKKyAgICAkRUNITyAkbiR2YCRzaGFyZWRfZXh0JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1fZGxsLiRsaWJleHQnCiAgIGR5bmFtaWNfbGlua2VyPSdPUy8yIGxkLmV4ZScKLSAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICisgIHNobGlicGF0aF92YXI9QkVHSU5MSUJQQVRICisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYworICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwkZmlsZWB+CisgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJGJhc2VfZmlsZSdcJydpOyAkRUNITyBcJGRsbmFtZSdcJydgfgorICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKyAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWV+CisgICAgY2htb2QgYSt4IFwkZGxkaXIvJGRsbmFtZX4KKyAgICBpZiB0ZXN0IC1uICdcJyckc3RyaXBtZSdcJycgJiYgdGVzdCAtbiAnXCcnJHN0cmlwbGliJ1wnJzsgdGhlbgorICAgICAgZXZhbCAnXCcnJHN0cmlwbGliIFwkZGxkaXIvJGRsbmFtZSdcJycgfHwgZXhpdCBcJD87CisgICAgZmknCisgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyAkRUNITyBcJGRsbmFtZSdcJydgfgorICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisgICAgJFJNIFwkZGxwYXRoJwogICA7OwogCiBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCiAgIHZlcnNpb25fdHlwZT1vc2YKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3Ivc2hsaWIgL3Vzci9jY3MvbGliIC91c3IvbGliL2NtcGxycy9jYyAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiAvdmFyL3NobGliIgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwogICA7OwogCiByZG9zKikKQEAgLTEzNjE4LDggKzE0MTY2LDggQEAKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwpAQCAtMTM2MjksMTEgKzE0MTc3LDExIEBACiAKIHN1bm9zNCopCiAgIHZlcnNpb25fdHlwZT1zdW5vcwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCR2ZXJzdWZmaXgnCiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3Vzci9ldGMiIGxkY29uZmlnICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICBpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCiAgICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIGZpCiAgIG5lZWRfdmVyc2lvbj15ZXMKQEAgLTEzNjQxLDggKzE0MTg5LDggQEAKIAogc3lzdjQgfCBzeXN2NC4zKikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBjYXNlICRob3N0X3ZlbmRvciBpbgogICAgIHNuaSkKQEAgLTEzNjYzLDI0ICsxNDIxMSwyNCBAQAogICA7OwogCiBzeXN2NCpNUCopCi0gIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KKyAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgogICAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hhcmVkX2V4dC4kdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQuJG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHNoYXJlZF9leHQuJG1ham9yJwogICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIGZpCiAgIDs7CiAKIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQotICB2ZXJzaW9uX3R5cGU9ZnJlZWJzZC1lbGYKKyAgdmVyc2lvbl90eXBlPXNjbwogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0ICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy91c3IvbG9jYWwvbGliIC91c3IvZ251L2xpYiAvdXNyL2Njcy9saWIgL3Vzci9saWIgL2xpYicKICAgZWxzZQogICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0nL3Vzci9jY3MvbGliIC91c3IvbGliJwpAQCAtMTM2OTgsNyArMTQyNDYsNyBAQAogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKQEAgLTEzNzA2LDggKzE0MjU0LDggQEAKIAogdXRzNCopCiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgOzsKIApAQCAtMTM3MTcsMjAgKzE0MjY1LDM1IEBACiBlc2FjCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGR5bmFtaWNfbGlua2VyIiA+JjUKICRhc19lY2hvICIkZHluYW1pY19saW5rZXIiID4mNjsgfQotdGVzdCAiJGR5bmFtaWNfbGlua2VyIiA9IG5vICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KK3Rlc3Qgbm8gPSAiJGR5bmFtaWNfbGlua2VyIiAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCiAKIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSJQQVRIICRzaGxpYnBhdGhfdmFyICRydW5wYXRoX3ZhciIKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCitpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0iJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIEdDQ19FWEVDX1BSRUZJWCBDT01QSUxFUl9QQVRIIExJQlJBUllfUEFUSCIKIGZpCiAKLWlmIHRlc3QgIiR7bHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjK3NldH0iID0gc2V0OyB0aGVuCi0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKK2lmIHRlc3Qgc2V0ID0gIiR7bHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjK3NldH0iOyB0aGVuCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0kbHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCiBmaQotaWYgdGVzdCAiJHtsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYytzZXR9IiA9IHNldDsgdGhlbgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIgorCitpZiB0ZXN0IHNldCA9ICIke2x0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjK3NldH0iOyB0aGVuCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYwogZmkKIAorIyByZW1lbWJlciB1bmF1Z21lbnRlZCBzeXNfbGliX2Rsc2VhcmNoX3BhdGggY29udGVudCBmb3IgbGlidG9vbCBzY3JpcHQgZGVjbHMuLi4KK2NvbmZpZ3VyZV90aW1lX2Rsc2VhcmNoX3BhdGg9JHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjCisKKyMgLi4uIGJ1dCBpdCBuZWVkcyBMVF9TWVNfTElCUkFSWV9QQVRIIG11bmdpbmcgZm9yIG90aGVyIGNvbmZpZ3VyZS10aW1lIGNvZGUKK2Z1bmNfbXVuZ2VfcGF0aF9saXN0IHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjICIkTFRfU1lTX0xJQlJBUllfUEFUSCIKKworIyB0byBiZSB1c2VkIGFzIGRlZmF1bHQgTFRfU1lTX0xJQlJBUllfUEFUSCB2YWx1ZSBpbiBnZW5lcmF0ZWQgbGlidG9vbAorY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aD0kTFRfU1lTX0xJQlJBUllfUEFUSAorCisKKworCisKKwogCiAKIApAQCAtMTM4MjcsMTUgKzE0MzkwLDE1IEBACiBoYXJkY29kZV9hY3Rpb249CiBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgfHwKICAgIHRlc3QgLW4gIiRydW5wYXRoX3ZhciIgfHwKLSAgIHRlc3QgIlgkaGFyZGNvZGVfYXV0b21hdGljIiA9ICJYeWVzIiA7IHRoZW4KKyAgIHRlc3QgeWVzID0gIiRoYXJkY29kZV9hdXRvbWF0aWMiOyB0aGVuCiAKICAgIyBXZSBjYW4gaGFyZGNvZGUgbm9uLWV4aXN0ZW50IGRpcmVjdG9yaWVzLgotICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiAhPSBubyAmJgorICBpZiB0ZXN0IG5vICE9ICIkaGFyZGNvZGVfZGlyZWN0IiAmJgogICAgICAjIElmIHRoZSBvbmx5IG1lY2hhbmlzbSB0byBhdm9pZCBoYXJkY29kaW5nIGlzIHNobGlicGF0aF92YXIsIHdlCiAgICAgICMgaGF2ZSB0byByZWxpbmssIG90aGVyd2lzZSB3ZSBtaWdodCBsaW5rIHdpdGggYW4gaW5zdGFsbGVkIGxpYnJhcnkKICAgICAgIyB3aGVuIHdlIHNob3VsZCBiZSBsaW5raW5nIHdpdGggYSB5ZXQtdG8tYmUtaW5zdGFsbGVkIG9uZQotICAgICAjIyB0ZXN0ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCApIiAhPSBubyAmJgotICAgICB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgIT0gbm87IHRoZW4KKyAgICAgIyMgdGVzdCBubyAhPSAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgKSIgJiYKKyAgICAgdGVzdCBubyAhPSAiJGhhcmRjb2RlX21pbnVzX0wiOyB0aGVuCiAgICAgIyBMaW5raW5nIGFsd2F5cyBoYXJkY29kZXMgdGhlIHRlbXBvcmFyeSBsaWJyYXJ5IGRpcmVjdG9yeS4KICAgICBoYXJkY29kZV9hY3Rpb249cmVsaW5rCiAgIGVsc2UKQEAgLTEzODUwLDEyICsxNDQxMywxMiBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXJkY29kZV9hY3Rpb24iID4mNQogJGFzX2VjaG8gIiRoYXJkY29kZV9hY3Rpb24iID4mNjsgfQogCi1pZiB0ZXN0ICIkaGFyZGNvZGVfYWN0aW9uIiA9IHJlbGluayB8fAotICAgdGVzdCAiJGluaGVyaXRfcnBhdGgiID0geWVzOyB0aGVuCitpZiB0ZXN0IHJlbGluayA9ICIkaGFyZGNvZGVfYWN0aW9uIiB8fAorICAgdGVzdCB5ZXMgPSAiJGluaGVyaXRfcnBhdGgiOyB0aGVuCiAgICMgRmFzdCBpbnN0YWxsYXRpb24gaXMgbm90IHN1cHBvcnRlZAogICBlbmFibGVfZmFzdF9pbnN0YWxsPW5vCi1lbGlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzIHx8Ci0gICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IG5vOyB0aGVuCitlbGlmIHRlc3QgeWVzID0gIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiIHx8CisgICAgIHRlc3Qgbm8gPSAiJGVuYWJsZV9zaGFyZWQiOyB0aGVuCiAgICMgRmFzdCBpbnN0YWxsYXRpb24gaXMgbm90IG5lY2Vzc2FyeQogICBlbmFibGVfZmFzdF9pbnN0YWxsPW5lZWRsZXNzCiBmaQpAQCAtMTM4NjUsNyArMTQ0MjgsNyBAQAogCiAKIAotICBpZiB0ZXN0ICJ4JGVuYWJsZV9kbG9wZW4iICE9IHh5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgIT0gIiRlbmFibGVfZGxvcGVuIjsgdGhlbgogICBlbmFibGVfZGxvcGVuPXVua25vd24KICAgZW5hYmxlX2Rsb3Blbl9zZWxmPXVua25vd24KICAgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz11bmtub3duCkBAIC0xMzg3NSwyMyArMTQ0MzgsMjMgQEAKIAogICBjYXNlICRob3N0X29zIGluCiAgIGJlb3MqKQotICAgIGx0X2N2X2Rsb3Blbj0ibG9hZF9hZGRfb24iCisgICAgbHRfY3ZfZGxvcGVuPWxvYWRfYWRkX29uCiAgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CiAgICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCiAgICAgOzsKIAogICBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICBsdF9jdl9kbG9wZW49IkxvYWRMaWJyYXJ5IgorICAgIGx0X2N2X2Rsb3Blbj1Mb2FkTGlicmFyeQogICAgIGx0X2N2X2Rsb3Blbl9saWJzPQogICAgIDs7CiAKICAgY3lnd2luKikKLSAgICBsdF9jdl9kbG9wZW49ImRsb3BlbiIKKyAgICBsdF9jdl9kbG9wZW49ZGxvcGVuCiAgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CiAgICAgOzsKIAogICBkYXJ3aW4qKQotICAjIGlmIGxpYmRsIGlzIGluc3RhbGxlZCB3ZSBuZWVkIHRvIGxpbmsgYWdhaW5zdCBpdAorICAgICMgaWYgbGliZGwgaXMgaW5zdGFsbGVkIHdlIG5lZWQgdG8gbGluayBhZ2FpbnN0IGl0CiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X2xpYl9kbF9kbG9wZW4rOn0gZmFsc2U7IHRoZW4gOgpAQCAtMTM5MjksMTAgKzE0NDkyLDEwIEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9kbF9kbG9wZW4iID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfZGxfZGxvcGVuIiA+JjY7IH0KIGlmIHRlc3QgIngkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4eWVzOyB0aGVuIDoKLSAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsIgorICBsdF9jdl9kbG9wZW49ZGxvcGVuIGx0X2N2X2Rsb3Blbl9saWJzPS1sZGwKIGVsc2UKIAotICAgIGx0X2N2X2Rsb3Blbj0iZHlsZCIKKyAgICBsdF9jdl9kbG9wZW49ZHlsZAogICAgIGx0X2N2X2Rsb3Blbl9saWJzPQogICAgIGx0X2N2X2Rsb3Blbl9zZWxmPXllcwogCkBAIC0xMzk0MCwxMCArMTQ1MDMsMTggQEAKIAogICAgIDs7CiAKKyAgdHBmKikKKyAgICAjIERvbid0IHRyeSB0byBydW4gYW55IGxpbmsgdGVzdHMgZm9yIFRQRi4gIFdlIGtub3cgaXQncyBpbXBvc3NpYmxlCisgICAgIyBiZWNhdXNlIFRQRiBpcyBhIGNyb3NzLWNvbXBpbGVyLCBhbmQgd2Uga25vdyBob3cgd2Ugb3BlbiBEU09zLgorICAgIGx0X2N2X2Rsb3Blbj1kbG9wZW4KKyAgICBsdF9jdl9kbG9wZW5fbGlicz0KKyAgICBsdF9jdl9kbG9wZW5fc2VsZj1ubworICAgIDs7CisKICAgKikKICAgICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJzaGxfbG9hZCIgImFjX2N2X2Z1bmNfc2hsX2xvYWQiCiBpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfc2hsX2xvYWQiID0geHllczsgdGhlbiA6Ci0gIGx0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiCisgIGx0X2N2X2Rsb3Blbj1zaGxfbG9hZAogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzaGxfbG9hZCBpbiAtbGRsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Igc2hsX2xvYWQgaW4gLWxkbGQuLi4gIiA+JjY7IH0KQEAgLTEzOTgyLDExICsxNDU1MywxMSBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZGxkX3NobF9sb2FkIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX2RsZF9zaGxfbG9hZCIgPiY2OyB9CiBpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbGRfc2hsX2xvYWQiID0geHllczsgdGhlbiA6Ci0gIGx0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsZCIKKyAgbHRfY3ZfZGxvcGVuPXNobF9sb2FkIGx0X2N2X2Rsb3Blbl9saWJzPS1sZGxkCiBlbHNlCiAgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImRsb3BlbiIgImFjX2N2X2Z1bmNfZGxvcGVuIgogaWYgdGVzdCAieCRhY19jdl9mdW5jX2Rsb3BlbiIgPSB4eWVzOyB0aGVuIDoKLSAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iCisgIGx0X2N2X2Rsb3Blbj1kbG9wZW4KIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsLi4uICIgPiY2OyB9CkBAIC0xNDAyNSw3ICsxNDU5Niw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9kbF9kbG9wZW4iID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfZGxfZGxvcGVuIiA+JjY7IH0KIGlmIHRlc3QgIngkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4eWVzOyB0aGVuIDoKLSAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsIgorICBsdF9jdl9kbG9wZW49ZGxvcGVuIGx0X2N2X2Rsb3Blbl9saWJzPS1sZGwKIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sc3ZsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sc3ZsZC4uLiAiID4mNjsgfQpAQCAtMTQwNjQsNyArMTQ2MzUsNyBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID4mNjsgfQogaWYgdGVzdCAieCRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID0geHllczsgdGhlbiA6Ci0gIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxzdmxkIgorICBsdF9jdl9kbG9wZW49ZGxvcGVuIGx0X2N2X2Rsb3Blbl9saWJzPS1sc3ZsZAogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkbGRfbGluayBpbiAtbGRsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxkX2xpbmsgaW4gLWxkbGQuLi4gIiA+JjY7IH0KQEAgLTE0MTAzLDcgKzE0Njc0LDcgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2RsZF9kbGRfbGluayIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9kbGRfZGxkX2xpbmsiID4mNjsgfQogaWYgdGVzdCAieCRhY19jdl9saWJfZGxkX2RsZF9saW5rIiA9IHh5ZXM7IHRoZW4gOgotICBsdF9jdl9kbG9wZW49ImRsZF9saW5rIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbGQiCisgIGx0X2N2X2Rsb3Blbj1kbGRfbGluayBsdF9jdl9kbG9wZW5fbGlicz0tbGRsZAogZmkKIAogCkBAIC0xNDEyNCwyMSArMTQ2OTUsMjEgQEAKICAgICA7OwogICBlc2FjCiAKLSAgaWYgdGVzdCAieCRsdF9jdl9kbG9wZW4iICE9IHhubzsgdGhlbgotICAgIGVuYWJsZV9kbG9wZW49eWVzCi0gIGVsc2UKKyAgaWYgdGVzdCBubyA9ICIkbHRfY3ZfZGxvcGVuIjsgdGhlbgogICAgIGVuYWJsZV9kbG9wZW49bm8KKyAgZWxzZQorICAgIGVuYWJsZV9kbG9wZW49eWVzCiAgIGZpCiAKICAgY2FzZSAkbHRfY3ZfZGxvcGVuIGluCiAgIGRsb3BlbikKLSAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0gICAgdGVzdCAieCRhY19jdl9oZWFkZXJfZGxmY25faCIgPSB4eWVzICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURIQVZFX0RMRkNOX0giCisgICAgc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKKyAgICB0ZXN0IHllcyA9ICIkYWNfY3ZfaGVhZGVyX2RsZmNuX2giICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURIQVZFX0RMRkNOX0giCiAKLSAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorICAgIHNhdmVfTERGTEFHUz0kTERGTEFHUwogICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjXCIKIAotICAgIHNhdmVfTElCUz0iJExJQlMiCisgICAgc2F2ZV9MSUJTPSRMSUJTCiAgICAgTElCUz0iJGx0X2N2X2Rsb3Blbl9saWJzICRMSUJTIgogCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGEgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZiIgPiY1CkBAIC0xNDE0Niw3ICsxNDcxNyw3IEBACiBpZiAke2x0X2N2X2Rsb3Blbl9zZWxmKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKLSAgCSAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICAJICBpZiB0ZXN0IHllcyA9ICIkY3Jvc3NfY29tcGlsaW5nIjsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbl9zZWxmPWNyb3NzCiBlbHNlCiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKQEAgLTE0MTkzLDkgKzE0NzY0LDkgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAotLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorLyogV2hlbiAtZnZpc2liaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorI2lmIGRlZmluZWQgX19HTlVDX18gJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKIGludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKICNlbmRpZgogCkBAIC0xNDIyNSw3ICsxNDc5Niw3IEBACiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9IDI+L2Rldi9udWxsOyB0aGVuCisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyAiY29uZnRlc3QkYWNfZXhlZXh0IiAyPi9kZXYvbnVsbDsgdGhlbgogICAgICguL2NvbmZ0ZXN0OyBleGl0OyApID4mNSAyPi9kZXYvbnVsbAogICAgIGx0X3N0YXR1cz0kPwogICAgIGNhc2UgeCRsdF9zdGF0dXMgaW4KQEAgLTE0MjQ1LDE0ICsxNDgxNiwxNCBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kbG9wZW5fc2VsZiIgPiY1CiAkYXNfZWNobyAiJGx0X2N2X2Rsb3Blbl9zZWxmIiA+JjY7IH0KIAotICAgIGlmIHRlc3QgIngkbHRfY3ZfZGxvcGVuX3NlbGYiID0geHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9kbG9wZW5fc2VsZiI7IHRoZW4KICAgICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNcIgogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGEgc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGEgc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZi4uLiAiID4mNjsgfQogaWYgJHtsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICAJICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIAkgIGlmIHRlc3QgeWVzID0gIiRjcm9zc19jb21waWxpbmciOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljPWNyb3NzCiBlbHNlCiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKQEAgLTE0Mjk5LDkgKzE0ODcwLDkgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAotLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorLyogV2hlbiAtZnZpc2liaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorI2lmIGRlZmluZWQgX19HTlVDX18gJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKIGludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKICNlbmRpZgogCkBAIC0xNDMzMSw3ICsxNDkwMiw3IEBACiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9IDI+L2Rldi9udWxsOyB0aGVuCisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyAiY29uZnRlc3QkYWNfZXhlZXh0IiAyPi9kZXYvbnVsbDsgdGhlbgogICAgICguL2NvbmZ0ZXN0OyBleGl0OyApID4mNSAyPi9kZXYvbnVsbAogICAgIGx0X3N0YXR1cz0kPwogICAgIGNhc2UgeCRsdF9zdGF0dXMgaW4KQEAgLTE0MzUyLDkgKzE0OTIzLDkgQEAKICRhc19lY2hvICIkbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljIiA+JjY7IH0KICAgICBmaQogCi0gICAgQ1BQRkxBR1M9IiRzYXZlX0NQUEZMQUdTIgotICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0gICAgTElCUz0iJHNhdmVfTElCUyIKKyAgICBDUFBGTEFHUz0kc2F2ZV9DUFBGTEFHUworICAgIExERkxBR1M9JHNhdmVfTERGTEFHUworICAgIExJQlM9JHNhdmVfTElCUwogICAgIDs7CiAgIGVzYWMKIApAQCAtMTQzOTgsNyArMTQ5NjksNyBAQAogIyBGSVhNRSAtIGluc2VydCBzb21lIHJlYWwgdGVzdHMsIGhvc3Rfb3MgaXNuJ3QgcmVhbGx5IGdvb2QgZW5vdWdoCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgZGFyd2luKikKLSAgICBpZiB0ZXN0IC1uICIkU1RSSVAiIDsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4KICAgICAgIHN0cmlwbGliPSIkU1RSSVAgLXgiCiAgICAgICBvbGRfc3RyaXBsaWI9IiRTVFJJUCAtUyIKICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQpAQCAtMTQ0MjYsNyArMTQ5OTcsNyBAQAogCiAKIAotICAjIFJlcG9ydCB3aGljaCBsaWJyYXJ5IHR5cGVzIHdpbGwgYWN0dWFsbHkgYmUgYnVpbHQKKyAgIyBSZXBvcnQgd2hhdCBsaWJyYXJ5IHR5cGVzIHdpbGwgYWN0dWFsbHkgYmUgYnVpbHQKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgbGlidG9vbCBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzLi4uICIgPiY2OyB9CiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkY2FuX2J1aWxkX3NoYXJlZCIgPiY1CkBAIC0xNDQzNCwxMyArMTUwMDUsMTMgQEAKIAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLSAgdGVzdCAiJGNhbl9idWlsZF9zaGFyZWQiID0gIm5vIiAmJiBlbmFibGVfc2hhcmVkPW5vCisgIHRlc3Qgbm8gPSAiJGNhbl9idWlsZF9zaGFyZWQiICYmIGVuYWJsZV9zaGFyZWQ9bm8KIAogICAjIE9uIEFJWCwgc2hhcmVkIGxpYnJhcmllcyBhbmQgc3RhdGljIGxpYnJhcmllcyB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlLCBhbmQKICAgIyBhcmUgYWxsIGJ1aWx0IGZyb20gUElDLgogICBjYXNlICRob3N0X29zIGluCiAgIGFpeDMqKQotICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisgICAgdGVzdCB5ZXMgPSAiJGVuYWJsZV9zaGFyZWQiICYmIGVuYWJsZV9zdGF0aWM9bm8KICAgICBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgogICAgICAgYXJjaGl2ZV9jbWRzPSIkYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkbGliIgogICAgICAgcG9zdGluc3RhbGxfY21kcz0nJFJBTkxJQiAkbGliJwpAQCAtMTQ0NDgsOCArMTUwMTksMTIgQEAKICAgICA7OwogCiAgIGFpeFs0LTldKikKLSAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQgJiYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0gbm8gOyB0aGVuCi0gICAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworICAgIGlmIHRlc3QgaWE2NCAhPSAiJGhvc3RfY3B1IjsgdGhlbgorICAgICAgY2FzZSAkZW5hYmxlX3NoYXJlZCwkd2l0aF9haXhfc29uYW1lLCRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIGluCisgICAgICB5ZXMsYWl4LHllcykgOzsJCQkjIHNoYXJlZCBvYmplY3QgYXMgbGliLnNvIGZpbGUgb25seQorICAgICAgeWVzLHN2cjQsKikgOzsJCQkjIHNoYXJlZCBvYmplY3QgYXMgbGliLnNvIGFyY2hpdmUgbWVtYmVyIG9ubHkKKyAgICAgIHllcywqKSBlbmFibGVfc3RhdGljPW5vIDs7CSMgc2hhcmVkIG9iamVjdCBpbiBsaWIuYSBhcmNoaXZlIGFzIHdlbGwKKyAgICAgIGVzYWMKICAgICBmaQogICAgIDs7CiAgIGVzYWMKQEAgLTE0NDU5LDcgKzE1MDM0LDcgQEAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVzLi4uICIgPiY2OyB9CiAgICMgTWFrZSBzdXJlIGVpdGhlciBlbmFibGVfc2hhcmVkIG9yIGVuYWJsZV9zdGF0aWMgaXMgeWVzLgotICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgfHwgZW5hYmxlX3N0YXRpYz15ZXMKKyAgdGVzdCB5ZXMgPSAiJGVuYWJsZV9zaGFyZWQiIHx8IGVuYWJsZV9zdGF0aWM9eWVzCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZW5hYmxlX3N0YXRpYyIgPiY1CiAkYXNfZWNobyAiJGVuYWJsZV9zdGF0aWMiID4mNjsgfQogCkBAIC0xNDQ3Myw3ICsxNTA0OCw3IEBACiBhY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwogYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQogCi1DQz0iJGx0X3NhdmVfQ0MiCitDQz0kbHRfc2F2ZV9DQwogCiAKIApAQCAtMTQ0OTksOCArMTUwNzQsOCBAQAogCiAKIAotR1NUX1JFUT0xLjYuMwotR1NUUEJfUkVRPTEuNi4zCitHU1RfUkVRPTEuNy45MQorR1NUUEJfUkVRPTEuNy45MQogCiAKIApAQCAtMTY1NTIsNiArMTcxMjcsMzMgQEAKIAogCiAKKyAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWV4dHJhLWNoZWNrIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2V4dHJhX2NoZWNrK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfZXh0cmFfY2hlY2s7CisgICAgICBjYXNlICIke2VuYWJsZXZhbH0iIGluCisgICAgICAgIHllcykgRVhUUkFfQ0hFQ0tTPXllcyA7OworICAgICAgICBubykgIEVYVFJBX0NIRUNLUz1ubyA7OworICAgICAgICAqKSAgIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1leHRyYS1jaGVja3MiICIkTElORU5PIiA1IDs7CisgICAgICBlc2FjCisKK2Vsc2UKKworICAgICAgaWYgdGVzdCAieGBleHByICRQQUNLQUdFX1ZFUlNJT05fTUlOT1IgJSAyYCIgPSAieDEiIC1hICJ4YGV4cHIgJFBBQ0tBR0VfVkVSU0lPTl9NSUNSTyAnPCcgOTBgIiA9ICJ4MSI7IHRoZW4KKyAgICAgICAgRVhUUkFfQ0hFQ0tTPXllcworICAgICAgZWxzZQorICAgICAgICBFWFRSQV9DSEVDS1M9bm8KKyAgICAgIGZpCisKK2ZpCisKKworICAgIGlmIHRlc3QgIngkRVhUUkFfQ0hFQ0tTIiA9ICJ4eWVzIjsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBHU1RfRU5BQkxFX0VYVFJBX0NIRUNLUyAxIiA+PmNvbmZkZWZzLmgKKworICAgIGZpCisKKwogCiAgICAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRlYnVnIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX2RlYnVnK3NldH0iID0gc2V0OyB0aGVuIDoKQEAgLTE5NDY4LDE1ICsyMDA3MCwxNSBAQAogCiBmdW5jX3N0cmlwbmFtZV9jbmYgKCkKIHsKLSAgY2FzZSAkezJ9IGluCi0gIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0gICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKyAgY2FzZSAkMiBpbgorICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJDMiIHwgJFNFRCAicyVeJDElJTsgcyVcXFxcJDJcJCUlImA7OworICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJDMiIHwgJFNFRCAicyVeJDElJTsgcyUkMlwkJSUiYDs7CiAgIGVzYWMKIH0gIyBmdW5jX3N0cmlwbmFtZV9jbmYKIAotICAgICAgaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKLSAgICAoICh0ZXN0ICJYJENYWCIgPSAiWGcrKyIgJiYgYGcrKyAtdiA+L2Rldi9udWxsIDI+JjFgICkgfHwKLSAgICAodGVzdCAiWCRDWFgiICE9ICJYZysrIikpKSA7IHRoZW4KKyAgICAgIGlmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCBubyAhPSAiJENYWCIgJiYKKyAgICAoICh0ZXN0IGcrKyA9ICIkQ1hYIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAorICAgICh0ZXN0IGcrKyAhPSAiJENYWCIpKSk7IHRoZW4KICAgYWNfZXh0PWNwcAogYWNfY3BwPSckQ1hYQ1BQICRDUFBGTEFHUycKIGFjX2NvbXBpbGU9JyRDWFggLWMgJENYWEZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKQEAgLTE5NjU1LDcgKzIwMjU3LDcgQEAKICMgdGhlIENYWCBjb21waWxlciBpc24ndCB3b3JraW5nLiAgU29tZSB2YXJpYWJsZXMgKGxpa2UgZW5hYmxlX3NoYXJlZCkKICMgYXJlIGN1cnJlbnRseSBhc3N1bWVkIHRvIGFwcGx5IHRvIGFsbCBjb21waWxlcnMgb24gdGhpcyBwbGF0Zm9ybSwKICMgYW5kIHdpbGwgYmUgY29ycnVwdGVkIGJ5IHNldHRpbmcgdGhlbSBiYXNlZCBvbiBhIG5vbi13b3JraW5nIGNvbXBpbGVyLgotaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzICE9ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiOyB0aGVuCiAgICMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCiAgIGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0iaW50IHNvbWVfdmFyaWFibGUgPSAwOyIKIApAQCAtMTk3MTYsNDYgKzIwMzE4LDM5IEBACiAgIENGTEFHUz0kQ1hYRkxBR1MKICAgY29tcGlsZXI9JENDCiAgIGNvbXBpbGVyX0NYWD0kQ0MKLSAgZm9yIGNjX3RlbXAgaW4gJGNvbXBpbGVyIiI7IGRvCi0gIGNhc2UgJGNjX3RlbXAgaW4KLSAgICBjb21waWxlIHwgKltcXC9dY29tcGlsZSB8IGNjYWNoZSB8ICpbXFwvXWNjYWNoZSApIDs7Ci0gICAgZGlzdGNjIHwgKltcXC9dZGlzdGNjIHwgcHVyaWZ5IHwgKltcXC9dcHVyaWZ5ICkgOzsKLSAgICBcLSopIDs7Ci0gICAgKikgYnJlYWs7OwotICBlc2FjCi1kb25lCi1jY19iYXNlbmFtZT1gJEVDSE8gIiRjY190ZW1wIiB8ICRTRUQgInMlLiovJSU7IHMlXiRob3N0X2FsaWFzLSUlImAKKyAgZnVuY19jY19iYXNlbmFtZSAkY29tcGlsZXIKK2NjX2Jhc2VuYW1lPSRmdW5jX2NjX2Jhc2VuYW1lX3Jlc3VsdAogCiAKICAgaWYgdGVzdCAtbiAiJGNvbXBpbGVyIjsgdGhlbgogICAgICMgV2UgZG9uJ3Qgd2FudCAtZm5vLWV4Y2VwdGlvbiB3aGVuIGNvbXBpbGluZyBDKysgY29kZSwgc28gc2V0IHRoZQogICAgICMgbm9fYnVpbHRpbl9mbGFnIHNlcGFyYXRlbHkKLSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRHWFgiOyB0aGVuCiAgICAgICBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFg9JyAtZm5vLWJ1aWx0aW4nCiAgICAgZWxzZQogICAgICAgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYPQogICAgIGZpCiAKLSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRHWFgiOyB0aGVuCiAgICAgICAjIFNldCB1cCBkZWZhdWx0IEdOVSBDKysgY29uZmlndXJhdGlvbgogCiAKIAogIyBDaGVjayB3aGV0aGVyIC0td2l0aC1nbnUtbGQgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHt3aXRoX2dudV9sZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfZ251X2xkOyB0ZXN0ICIkd2l0aHZhbCIgPSBubyB8fCB3aXRoX2dudV9sZD15ZXMKKyAgd2l0aHZhbD0kd2l0aF9nbnVfbGQ7IHRlc3Qgbm8gPSAiJHdpdGh2YWwiIHx8IHdpdGhfZ251X2xkPXllcwogZWxzZQogICB3aXRoX2dudV9sZD1ubwogZmkKIAogYWNfcHJvZz1sZAotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAgICMgQ2hlY2sgaWYgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQgZ2l2ZXMgYSBwYXRoLgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsZCB1c2VkIGJ5ICRDQyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbGQgdXNlZCBieSAkQ0MuLi4gIiA+JjY7IH0KICAgY2FzZSAkaG9zdCBpbgogICAqLSotbWluZ3cqKQotICAgICMgZ2NjIGxlYXZlcyBhIHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiB3aGljaCB1cHNldHMgbWluZ3cKKyAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4sIHdoaWNoIHVwc2V0cyBtaW5ndwogICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNSB8IHRyIC1kICdcMDE1J2AgOzsKICAgKikKICAgICBhY19wcm9nPWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjVgIDs7CkBAIC0xOTc2OSw3ICsyMDM2NCw3IEBACiAgICAgICB3aGlsZSAkRUNITyAiJGFjX3Byb2ciIHwgJEdSRVAgIiRyZV9kaXJlbHQiID4gL2Rldi9udWxsIDI+JjE7IGRvCiAJYWNfcHJvZz1gJEVDSE8gJGFjX3Byb2d8ICRTRUQgInMlJHJlX2RpcmVsdCUvJSJgCiAgICAgICBkb25lCi0gICAgICB0ZXN0IC16ICIkTEQiICYmIExEPSIkYWNfcHJvZyIKKyAgICAgIHRlc3QgLXogIiRMRCIgJiYgTEQ9JGFjX3Byb2cKICAgICAgIDs7CiAgICIiKQogICAgICMgSWYgaXQgZmFpbHMsIHRoZW4gcHJldGVuZCB3ZSBhcmVuJ3QgdXNpbmcgR0NDLgpAQCAtMTk3ODAsNyArMjAzNzUsNyBAQAogICAgIHdpdGhfZ251X2xkPXVua25vd24KICAgICA7OwogICBlc2FjCi1lbGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KK2VsaWYgdGVzdCB5ZXMgPSAiJHdpdGhfZ251X2xkIjsgdGhlbgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTlUgbGQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdOVSBsZC4uLiAiID4mNjsgfQogZWxzZQpAQCAtMTk3OTEsMzIgKzIwMzg2LDMyIEBACiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLXogIiRMRCI7IHRoZW4KLSAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKICAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICBJRlM9JGx0X3NhdmVfaWZzCiAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KICAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KLSAgICAgIGx0X2N2X3BhdGhfTEQ9IiRhY19kaXIvJGFjX3Byb2ciCisgICAgICBsdF9jdl9wYXRoX0xEPSRhY19kaXIvJGFjX3Byb2cKICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9ncmFtIGlzIEdOVSBsZC4gIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKICAgICAgICMgYnV0IGFwcGFyZW50bHkgc29tZSB2YXJpYW50cyBvZiBHTlUgbGQgb25seSBhY2NlcHQgLXYuCiAgICAgICAjIEJyZWFrIG9ubHkgaWYgaXQgd2FzIHRoZSBHTlUvbm9uLUdOVSBsZCB0aGF0IHdlIHByZWZlci4KICAgICAgIGNhc2UgYCIkbHRfY3ZfcGF0aF9MRCIgLXYgMj4mMSA8L2Rldi9udWxsYCBpbgogICAgICAgKkdOVSogfCAqJ3dpdGggQkZEJyopCi0JdGVzdCAiJHdpdGhfZ251X2xkIiAhPSBubyAmJiBicmVhaworCXRlc3Qgbm8gIT0gIiR3aXRoX2dudV9sZCIgJiYgYnJlYWsKIAk7OwogICAgICAgKikKLQl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHllcyAmJiBicmVhaworCXRlc3QgeWVzICE9ICIkd2l0aF9nbnVfbGQiICYmIGJyZWFrCiAJOzsKICAgICAgIGVzYWMKICAgICBmaQogICBkb25lCi0gIElGUz0iJGx0X3NhdmVfaWZzIgorICBJRlM9JGx0X3NhdmVfaWZzCiBlbHNlCi0gIGx0X2N2X3BhdGhfTEQ9IiRMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIGx0X2N2X3BhdGhfTEQ9JExEICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgogZmkKIGZpCiAKLUxEPSIkbHRfY3ZfcGF0aF9MRCIKK0xEPSRsdF9jdl9wYXRoX0xECiBpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTEQiID4mNQogJGFzX2VjaG8gIiRMRCIgPiY2OyB9CkBAIC0xOTg1MiwyMiArMjA0NDcsMjIgQEAKIAogICAgICAgIyBDaGVjayBpZiBHTlUgQysrIHVzZXMgR05VIGxkIGFzIHRoZSB1bmRlcmx5aW5nIGxpbmtlciwgc2luY2UgdGhlCiAgICAgICAjIGFyY2hpdmluZyBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhhdCBHTlUgbGQgaXMgYmVpbmcgdXNlZC4KLSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAkcGljX2ZsYWcgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICBpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCisgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAkcGljX2ZsYWcgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCAkd2wkbGliZGlyJworICAgICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtLWV4cG9ydC1keW5hbWljJwogCiAgICAgICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5CiAgICAgICAgICMgWFhYIEkgdGhpbmsgd2xhcmMgY2FuIGJlIGVsaW1pbmF0ZWQgaW4gbHRjZi1jeHgsIGJ1dCBJIG5lZWQgdG8KICAgICAgICAgIyAgICAgaW52ZXN0aWdhdGUgaXQgYSBsaXR0bGUgYml0IG1vcmUuIChNTSkKLSAgICAgICAgd2xhcmM9JyR7d2x9JworICAgICAgICB3bGFyYz0nJHdsJwogCiAgICAgICAgICMgYW5jaWVudCBHTlUgbGQgZGlkbid0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlIGV0LiBhbC4KICAgICAgICAgaWYgZXZhbCAiYCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkYCAtLWhlbHAgMj4mMSIgfAogCSAgJEdSRVAgJ25vLXdob2xlLWFyY2hpdmUnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNfQ1hYPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJworICAgICAgICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0kd2xhcmMnLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICckd2xhcmMnLS1uby13aG9sZS1hcmNoaXZlJwogICAgICAgICBlbHNlCiAgICAgICAgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNfQ1hYPQogICAgICAgICBmaQpAQCAtMTk5MDQsMTggKzIwNDk5LDMwIEBACiAgICAgICAgIGxkX3NobGlic19DWFg9bm8KICAgICAgICAgOzsKICAgICAgIGFpeFs0LTldKikKLSAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgICAgaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KICAgICAgICAgICAjIE9uIElBNjQsIHRoZSBsaW5rZXIgZG9lcyBydW4gdGltZSBsaW5raW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0CiAgICAgICAgICAgIyBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCiAgICAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz1ubwogICAgICAgICAgIGV4cF9zeW1fZmxhZz0nLUJleHBvcnQnCi0gICAgICAgICAgbm9fZW50cnlfZmxhZz0iIgorICAgICAgICAgIG5vX2VudHJ5X2ZsYWc9CiAgICAgICAgIGVsc2UKICAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCiAKICAgICAgICAgICAjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKICAgICAgICAgICAjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKLSAgICAgICAgICAjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorICAgICAgICAgICMgaGF2ZSBydW50aW1lIGxpbmtpbmcgZW5hYmxlZCwgYW5kIHVzZSBpdCBmb3IgZXhlY3V0YWJsZXMuCisgICAgICAgICAgIyBGb3Igc2hhcmVkIGxpYnJhcmllcywgd2UgZW5hYmxlL2Rpc2FibGUgcnVudGltZSBsaW5raW5nCisgICAgICAgICAgIyBkZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGNyZWF0ZWQgLQorICAgICAgICAgICMgd2hlbiAid2l0aF9haXhfc29uYW1lLGFpeF91c2VfcnVudGltZWxpbmtpbmciIGlzOgorICAgICAgICAgICMgImFpeCxubyIgICBsaWIuYShsaWIuc28uVikgc2hhcmVkLCBydGw6bm8sICBmb3IgZXhlY3V0YWJsZXMKKyAgICAgICAgICAjICJhaXgseWVzIiAgbGliLnNvICAgICAgICAgIHNoYXJlZCwgcnRsOnllcywgZm9yIGV4ZWN1dGFibGVzCisgICAgICAgICAgIyAgICAgICAgICAgIGxpYi5hICAgICAgICAgICBzdGF0aWMgYXJjaGl2ZQorICAgICAgICAgICMgImJvdGgsbm8iICBsaWIuc28uVihzaHIubykgc2hhcmVkLCBydGw6eWVzCisgICAgICAgICAgIyAgICAgICAgICAgIGxpYi5hKGxpYi5zby5WKSBzaGFyZWQsIHJ0bDpubywgIGZvciBleGVjdXRhYmxlcworICAgICAgICAgICMgImJvdGgseWVzIiBsaWIuc28uVihzaHIubykgc2hhcmVkLCBydGw6eWVzLCBmb3IgZXhlY3V0YWJsZXMKKyAgICAgICAgICAjICAgICAgICAgICAgbGliLmEobGliLnNvLlYpIHNoYXJlZCwgcnRsOm5vCisgICAgICAgICAgIyAic3ZyNCwqIiAgIGxpYi5zby5WKHNoci5vKSBzaGFyZWQsIHJ0bDp5ZXMsIGZvciBleGVjdXRhYmxlcworICAgICAgICAgICMgICAgICAgICAgICBsaWIuYSAgICAgICAgICAgc3RhdGljIGFyY2hpdmUKICAgICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzIzXXxhaXg0LlsyM10uKnxhaXhbNS05XSopCiAJICAgIGZvciBsZF9mbGFnIGluICRMREZMQUdTOyBkbwogCSAgICAgIGNhc2UgJGxkX2ZsYWcgaW4KQEAgLTE5OTI1LDYgKzIwNTMyLDEzIEBACiAJICAgICAgICA7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQorCSAgICBpZiB0ZXN0IHN2cjQsbm8gPSAiJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgICAjIFdpdGggYWl4LXNvbmFtZT1zdnI0LCB3ZSBjcmVhdGUgdGhlIGxpYi5zby5WIHNoYXJlZCBhcmNoaXZlcyBvbmx5LAorCSAgICAgICMgc28gd2UgZG9uJ3QgaGF2ZSBsaWIuYSBzaGFyZWQgbGlicyB0byBsaW5rIG91ciBleGVjdXRhYmxlcy4KKwkgICAgICAjIFdlIGhhdmUgdG8gZm9yY2UgcnVudGltZSBsaW5raW5nIGluIHRoaXMgY2FzZS4KKwkgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcworCSAgICAgIExERkxBR1M9IiRMREZMQUdTIC1XbCwtYnJ0bCIKKwkgICAgZmkKIAkgICAgOzsKICAgICAgICAgICBlc2FjCiAKQEAgLTE5OTQzLDEzICsyMDU1NywyMSBAQAogICAgICAgICBoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGVfQ1hYPXllcwogICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWD0nOicKICAgICAgICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCi0gICAgICAgIGZpbGVfbGlzdF9zcGVjX0NYWD0nJHt3bH0tZiwnCisgICAgICAgIGZpbGVfbGlzdF9zcGVjX0NYWD0nJHdsLWYsJworICAgICAgICBjYXNlICR3aXRoX2FpeF9zb25hbWUsJGFpeF91c2VfcnVudGltZWxpbmtpbmcgaW4KKyAgICAgICAgYWl4LCopIDs7CSMgbm8gaW1wb3J0IGZpbGUKKyAgICAgICAgc3ZyNCwqIHwgKix5ZXMpICMgdXNlIGltcG9ydCBmaWxlCisgICAgICAgICAgIyBUaGUgSW1wb3J0IEZpbGUgZGVmaW5lcyB3aGF0IHRvIGhhcmRjb2RlLgorICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdF9DWFg9bm8KKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGVfQ1hYPW5vCisgICAgICAgICAgOzsKKyAgICAgICAgZXNhYwogCi0gICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgICAgICAgIGlmIHRlc3QgeWVzID0gIiRHWFgiOyB0aGVuCiAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbiBhaXg0LlswMTJdfGFpeDQuWzAxMl0uKikKICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIEFJWCA0LjIgYW5kIGxvd2VyLCB0aGUgY2hlY2sKICAgICAgICAgICAjIGJlbG93IGZvciBicm9rZW4gY29sbGVjdDIgZG9lc24ndCB3b3JrIHVuZGVyIDQuMysKLQkgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKKwkgIGNvbGxlY3QybmFtZT1gJENDIC1wcmludC1wcm9nLW5hbWU9Y29sbGVjdDJgCiAJICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJgogCSAgICAgc3RyaW5ncyAiJGNvbGxlY3QybmFtZSIgfCAkR1JFUCByZXNvbHZlX2xpYl9uYW1lID4vZGV2L251bGwKIAkgIHRoZW4KQEAgLTE5OTY3LDM2ICsyMDU4OSw0NCBAQAogCSAgZmkKICAgICAgICAgICBlc2FjCiAgICAgICAgICAgc2hhcmVkX2ZsYWc9Jy1zaGFyZWQnCi0JICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KLQkgICAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCisJICBpZiB0ZXN0IHllcyA9ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgc2hhcmVkX2ZsYWc9JHNoYXJlZF9mbGFnJyAkd2wtRycKIAkgIGZpCisJICAjIE5lZWQgdG8gZW5zdXJlIHJ1bnRpbWUgbGlua2luZyBpcyBkaXNhYmxlZCBmb3IgdGhlIHRyYWRpdGlvbmFsCisJICAjIHNoYXJlZCBsaWJyYXJ5LCBvciB0aGUgbGlua2VyIG1heSBldmVudHVhbGx5IGZpbmQgc2hhcmVkIGxpYnJhcmllcworCSAgIyAvd2l0aC8gSW1wb3J0IEZpbGUgLSB3ZSBkbyBub3Qgd2FudCB0byBtaXggdGhlbS4KKwkgIHNoYXJlZF9mbGFnX2FpeD0nLXNoYXJlZCcKKwkgIHNoYXJlZF9mbGFnX3N2cjQ9Jy1zaGFyZWQgJHdsLUcnCiAgICAgICAgIGVsc2UKICAgICAgICAgICAjIG5vdCB1c2luZyBnY2MKLSAgICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAJICAjIFZpc3VhbEFnZSBDKyssIFZlcnNpb24gNS41IGZvciBBSVggNUwgZm9yIElBLTY0LCBCZXRhIDMgUmVsZWFzZQogCSAgIyBjaG9rZXMgb24gLVdsLC1HLiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgY29ycmVjdDoKIAkgIHNoYXJlZF9mbGFnPSctRycKICAgICAgICAgICBlbHNlCi0JICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotCSAgICAgIHNoYXJlZF9mbGFnPScke3dsfS1HJworCSAgICBpZiB0ZXN0IHllcyA9ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgICBzaGFyZWRfZmxhZz0nJHdsLUcnCiAJICAgIGVsc2UKLQkgICAgICBzaGFyZWRfZmxhZz0nJHt3bH0tYk06U1JFJworCSAgICAgIHNoYXJlZF9mbGFnPSckd2wtYk06U1JFJwogCSAgICBmaQorCSAgICBzaGFyZWRfZmxhZ19haXg9JyR3bC1iTTpTUkUnCisJICAgIHNoYXJlZF9mbGFnX3N2cjQ9JyR3bC1HJwogICAgICAgICAgIGZpCiAgICAgICAgIGZpCiAKLSAgICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmV4cGFsbCcKKyAgICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHdsLWJleHBhbGwnCiAgICAgICAgICMgSXQgc2VlbXMgdGhhdCAtYmV4cGFsbCBkb2VzIG5vdCBleHBvcnQgc3ltYm9scyBiZWdpbm5pbmcgd2l0aAogICAgICAgICAjIHVuZGVyc2NvcmUgKF8pLCBzbyBpdCBpcyBiZXR0ZXIgdG8gZ2VuZXJhdGUgYSBsaXN0IG9mIHN5bWJvbHMgdG8KIAkjIGV4cG9ydC4KICAgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD15ZXMKLSAgICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisJaWYgdGVzdCBhaXgseWVzID0gIiR3aXRoX2FpeF9zb25hbWUsJGFpeF91c2VfcnVudGltZWxpbmtpbmciOyB0aGVuCiAgICAgICAgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVudGltZSBsb2FkaW5nIGZsYWdzICgtYnJ0bCksCiAgICAgICAgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgotICAgICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0nLWJlcm9rJworICAgICAgICAgICMgVGhlICItRyIgbGlua2VyIGZsYWcgYWxsb3dzIHVuZGVmaW5lZCBzeW1ib2xzLgorICAgICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nLWJlcm5vdG9rJwogICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQogICAgICAgICAgICMgZXhlY3V0YWJsZS4KLSAgICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisgICAgICAgICAgaWYgdGVzdCBzZXQgPSAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IjsgdGhlbgogICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKIGVsc2UKICAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYKzp9IGZhbHNlOyB0aGVuIDoKQEAgLTIwMDMxLDcgKzIwNjYxLDcgQEAKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgotICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9Ii91c3IvbGliOi9saWIiCisgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD0vdXNyL2xpYjovbGliCiAgIGZpCiAKIGZpCkBAIC0yMDAzOSwxOCArMjA2NjksMTggQEAKICAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKIGZpCiAKLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHdsLWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAKLSAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHdsJyRub19lbnRyeV9mbGFnJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgLW4gIiRhbGxvd191bmRlZmluZWRfZmxhZyI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHdsJGFsbG93X3VuZGVmaW5lZF9mbGFnIjsgZWxzZSA6OyBmaWAgJHdsJyRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scycgJyRzaGFyZWRfZmxhZwogICAgICAgICBlbHNlCi0gICAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJworICAgICAgICAgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCisJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wtUiAkbGliZGlyOi91c3IvbGliOi9saWInCiAJICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0iLXogbm9kZWZzIgotCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyIKKwkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwkd2wkbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyAkd2wkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJyJcJHdsJGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzIgogICAgICAgICAgIGVsc2UKIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLQkgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorCSAgICBpZiB0ZXN0IHNldCA9ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iOyB0aGVuCiAgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogZWxzZQogICBpZiAke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrOn0gZmFsc2U7IHRoZW4gOgpAQCAtMjAwODUsNyArMjA3MTUsNyBAQAogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCi0gICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD0iL3Vzci9saWI6L2xpYiIKKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPS91c3IvbGliOi9saWIKICAgZmkKIAogZmkKQEAgLTIwMDkzLDIyICsyMDcyMywzNCBAQAogICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWAogZmkKIAotCSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKwkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi0JICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nICR7d2x9LWJlcm5vdG9rJwotCSAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9JyAke3dsfS1iZXJvaycKLQkgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorCSAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAkd2wtYmVybm90b2snCisJICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0nICR3bC1iZXJvaycKKwkgICAgaWYgdGVzdCB5ZXMgPSAiJHdpdGhfZ251X2xkIjsgdGhlbgogCSAgICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCi0JICAgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNfQ1hYPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY19DWFg9JyR3bC0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICAgIGVsc2UKIAkgICAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKIAkgICAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY19DWFg9JyRjb252ZW5pZW5jZScKIAkgICAgZmkKIAkgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPXllcwotCSAgICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQKLQkgICAgIyBsaWJyYXJpZXMuCi0JICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHt3bH0tYm5vZW50cnkgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWJFOiRleHBvcnRfc3ltYm9scyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9fiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRzb25hbWUnCisJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckUk0gLXIgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmR+JE1LRElSICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kJworCSAgICAjIC1icnRsIGFmZmVjdHMgbXVsdGlwbGUgbGlua2VyIHNldHRpbmdzLCAtYmVyb2sgZG9lcyBub3QgYW5kIGlzIG92ZXJyaWRkZW4gbGF0ZXIKKwkgICAgY29tcGlsZXJfZmxhZ3NfZmlsdGVyZWQ9J2BmdW5jX2VjaG9fYWxsICIkY29tcGlsZXJfZmxhZ3MgIiB8ICRTRUQgLWUgInMlLWJydGxcXChbLCBdXFwpJS1iZXJva1xcMSVnImAnCisJICAgIGlmIHRlc3Qgc3ZyNCAhPSAiJHdpdGhfYWl4X3NvbmFtZSI7IHRoZW4KKwkgICAgICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQKKwkgICAgICAjIGxpYnJhcmllcy4gTmVlZCAtYm5vcnRsIGxhdGUsIHdlIG1heSBoYXZlIC1icnRsIGluIExERkxBR1MuCisJICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9IiRhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWCInfiRDQyAnJHNoYXJlZF9mbGFnX2FpeCcgLW8gJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkd2wtYm5vZW50cnkgJyRjb21waWxlcl9mbGFnc19maWx0ZXJlZCckd2wtYkU6JGV4cG9ydF9zeW1ib2xzJGFsbG93X3VuZGVmaW5lZF9mbGFnfiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzb25hbWUnCisJICAgIGZpCisJICAgIGlmIHRlc3QgYWl4ICE9ICIkd2l0aF9haXhfc29uYW1lIjsgdGhlbgorCSAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSIkYXJjaGl2ZV9leHBzeW1fY21kc19DWFgiJ34kQ0MgJyRzaGFyZWRfZmxhZ19zdnI0JyAtbyAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubyAkbGlib2JqcyAkZGVwbGlicyAkd2wtYm5vZW50cnkgJyRjb21waWxlcl9mbGFnc19maWx0ZXJlZCckd2wtYkU6JGV4cG9ydF9zeW1ib2xzJGFsbG93X3VuZGVmaW5lZF9mbGFnfiRTVFJJUCAtZSAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMub34oIGZ1bmNfZWNob19hbGwgIiMhICRzb25hbWUoJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm8pIjsgaWYgdGVzdCBzaHJfNjQgPSAiJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjIjsgdGhlbiBmdW5jX2VjaG9fYWxsICIjIDY0IjsgZWxzZSBmdW5jX2VjaG9fYWxsICIjIDMyIjsgZmk7IGNhdCAkZXhwb3J0X3N5bWJvbHMgKSA+ICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5pbXB+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kc29uYW1lICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5pbXAnCisJICAgIGVsc2UKKwkgICAgICAjIHVzZWQgYnkgLWRscHJlb3BlbiB0byBnZXQgdGhlIHN5bWJvbHMKKwkgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0iJGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYIid+JE1WICAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc29uYW1lICRvdXRwdXRfb2JqZGlyJworCSAgICBmaQorCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0iJGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYIid+JFJNIC1yICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kJwogICAgICAgICAgIGZpCiAgICAgICAgIGZpCiAgICAgICAgIDs7CkBAIC0yMDExOCw3ICsyMDc2MCw3IEBACiAJICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKIAkgICMgSm9zZXBoIEJlY2tlbmJhY2ggPGpyYjNAYmVzdC5jb20+IHNheXMgc29tZSByZWxlYXNlcyBvZiBnY2MKIAkgICMgc3VwcG9ydCAtLXVuZGVmaW5lZC4gIFRoaXMgZGVzZXJ2ZXMgc29tZSBpbnZlc3RpZ2F0aW9uLiAgRklYTUUKLQkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAJZWxzZQogCSAgbGRfc2hsaWJzX0NYWD1ubwogCWZpCkBAIC0yMDE0Niw1NyArMjA3ODgsNTggQEAKIAkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCiAJICBsaWJleHQ9bGliCiAJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLQkgIHNocmV4dF9jbWRzPSIuZGxsIgorCSAgc2hyZXh0X2NtZHM9LmRsbAogCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0JICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLQkgICAgZWxzZQotCSAgICAgICRTRUQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotCSAgICBmaX4KLQkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotCSAgICBsaW5rbmFtZXM9JworCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn5saW5rbmFtZXM9JworCSAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmICAgdGVzdCBERUYgPSAiYCRTRUQgLW4gICAgIC1lICdcJydzL15bCSBdKi8vJ1wnJyAgICAgLWUgJ1wnJy9eXCg7LipcKSokL2QnXCcnICAgICAtZSAnXCcncy9eXChFWFBPUlRTXHxMSUJSQVJZXClcKFsJIF0uKlwpKiQvREVGL3AnXCcnICAgICAtZSBxICAgICAkZXhwb3J0X3N5bWJvbHNgIiA7IHRoZW4KKyAgICAgICAgICAgICAgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmIjsKKyAgICAgICAgICAgICAgZWNobyAiJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZGVmIiA+ICIkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cCI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICRTRUQgLWUgJ1wnJ3MvXi8tbGluayAtRVhQT1JUOi8nXCcnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisgICAgICAgICAgICBmaX4KKyAgICAgICAgICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKyAgICAgICAgICAgIGxpbmtuYW1lcz0nCiAJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCiAJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgQ1hYKT0ndHJ1ZScKIAkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcwogCSAgIyBEb24ndCB1c2UgcmFubGliCiAJICBvbGRfcG9zdGluc3RhbGxfY21kc19DWFg9J2NobW9kIDY0NCAkb2xkbGliJwogCSAgcG9zdGxpbmtfY21kc19DWFg9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLQkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLQkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotCSAgICAgICouZXhlfCouRVhFKSA7OwotCSAgICAgICopCi0JCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLQkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLQkJOzsKLQkgICAgZXNhY34KLQkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KLQkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLQkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotCSAgICBmaScKKyAgICAgICAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisgICAgICAgICAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisgICAgICAgICAgICAgICouZXhlfCouRVhFKSA7OworICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgIGx0X291dHB1dGZpbGU9JGx0X291dHB1dGZpbGUuZXhlCisgICAgICAgICAgICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSRsdF90b29sX291dHB1dGZpbGUuZXhlCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIGVzYWN+CisgICAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgorICAgICAgICAgICAgaWYgdGVzdCA6ICE9ICIkTUFOSUZFU1RfVE9PTCIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisgICAgICAgICAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisgICAgICAgICAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworICAgICAgICAgICAgZmknCiAJICA7OwogCSopCiAJICAjIGcrKwogCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCiAJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKLQkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCisJICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtLWV4cG9ydC1hbGwtc3ltYm9scycKIAkgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAogCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubwogCSAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCiAKIAkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0JICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0JICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQkgICAgZWxzZQotCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JICAgIGZpfgotCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkd2wtLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSwgdXNlIGl0IGFzCisJICAgICMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZCBFWFBPUlRTLi4uCisJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiAgIHRlc3QgREVGID0gImAkU0VEIC1uICAgICAtZSAnXCcncy9eWwkgXSovLydcJycgICAgIC1lICdcJycvXlwoOy4qXCkqJC9kJ1wnJyAgICAgLWUgJ1wnJ3MvXlwoRVhQT1JUU1x8TElCUkFSWVwpXChbCSBdLipcKSokL0RFRi9wJ1wnJyAgICAgLWUgcSAgICAgJGV4cG9ydF9zeW1ib2xzYCIgOyB0aGVuCisgICAgICAgICAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisgICAgICAgICAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisgICAgICAgICAgICBmaX4KKyAgICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkd2wtLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCiAJICBlbHNlCiAJICAgIGxkX3NobGlic19DWFg9bm8KIAkgIGZpCkBAIC0yMDIxMCwyNyArMjA4NTMsMjcgQEAKICAgaGFyZGNvZGVfZGlyZWN0X0NYWD1ubwogICBoYXJkY29kZV9hdXRvbWF0aWNfQ1hYPXllcwogICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD11bnN1cHBvcnRlZAotICBpZiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAieWVzIjsgdGhlbgotICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR7d2x9LWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCisgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9sZF9mb3JjZV9sb2FkIjsgdGhlbgorICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR3bC1mb3JjZV9sb2FkLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgJwogCiAgIGVsc2UKICAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY19DWFg9JycKICAgZmkKICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCi0gIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0iJF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkIgorICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9JF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgIGlmb3J0KikgX2x0X2Rhcl9jYW5fc2hhcmVkPXllcyA7OworICAgICBpZm9ydCp8bmFnZm9yKikgX2x0X2Rhcl9jYW5fc2hhcmVkPXllcyA7OwogICAgICAqKSBfbHRfZGFyX2Nhbl9zaGFyZWQ9JEdDQyA7OwogICBlc2FjCi0gIGlmIHRlc3QgIiRfbHRfZGFyX2Nhbl9zaGFyZWQiID0gInllcyI7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgPSAiJF9sdF9kYXJfY2FuX3NoYXJlZCI7IHRoZW4KICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1mdW5jX2VjaG9fYWxsCi0gICAgYXJjaGl2ZV9jbWRzX0NYWD0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKLSAgICBtb2R1bGVfY21kc19DWFg9IlwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyR7X2x0X2RzeW11dGlsfSIKLSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAke19sdF9kYXJfc2luZ2xlX21vZH0ke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgotICAgIG1vZHVsZV9leHBzeW1fY21kc19DWFg9InNlZCAtZSAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKLSAgICAgICBpZiB0ZXN0ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgIT0gInllcyI7IHRoZW4KLSAgICAgIGFyY2hpdmVfY21kc19DWFg9IlwkQ0MgLXIgLWtlZXBfcHJpdmF0ZV9leHRlcm5zIC1ub3N0ZGxpYiAtbyBcJHtsaWJ9LW1hc3Rlci5vIFwkbGlib2Jqc35cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCR7bGlifS1tYXN0ZXIubyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcke19sdF9kc3ltdXRpbH0iCi0gICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1yIC1rZWVwX3ByaXZhdGVfZXh0ZXJucyAtbm9zdGRsaWIgLW8gXCR7bGlifS1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwke2xpYn0tbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKKyAgICBhcmNoaXZlX2NtZHNfQ1hYPSJcJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAkX2x0X2Rhcl9zaW5nbGVfbW9kJF9sdF9kc3ltdXRpbCIKKyAgICBtb2R1bGVfY21kc19DWFg9IlwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyRfbHRfZHN5bXV0aWwiCisgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9InNlZCAnc3xefF98JyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCRsaWJuYW1lLXN5bWJvbHMuZXhwc3ltflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2QkX2x0X2Rhcl9leHBvcnRfc3ltcyRfbHRfZHN5bXV0aWwiCisgICAgbW9kdWxlX2V4cHN5bV9jbWRzX0NYWD0ic2VkIC1lICdzfF58X3wnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJGxpYm5hbWUtc3ltYm9scy5leHBzeW1+XCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJF9sdF9kYXJfZXhwb3J0X3N5bXMkX2x0X2RzeW11dGlsIgorICAgICAgIGlmIHRlc3QgeWVzICE9ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCI7IHRoZW4KKyAgICAgIGFyY2hpdmVfY21kc19DWFg9IlwkQ0MgLXIgLWtlZXBfcHJpdmF0ZV9leHRlcm5zIC1ub3N0ZGxpYiAtbyBcJGxpYi1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGliLW1hc3Rlci5vIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyRfbHRfZHN5bXV0aWwiCisgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ic2VkICdzfF58X3wnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJGxpYm5hbWUtc3ltYm9scy5leHBzeW1+XCRDQyAtciAta2VlcF9wcml2YXRlX2V4dGVybnMgLW5vc3RkbGliIC1vIFwkbGliLW1hc3Rlci5vIFwkbGlib2Jqc35cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWItbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJF9sdF9kYXJfZXhwb3J0X3N5bXMkX2x0X2RzeW11dGlsIgogICAgIGZpCiAKICAgZWxzZQpAQCAtMjAyMzksNiArMjA4ODIsMzQgQEAKIAogCTs7CiAKKyAgICAgIG9zMiopCisJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKKwloYXJkY29kZV9taW51c19MX0NYWD15ZXMKKwlhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKKwlzaHJleHRfY21kcz0uZGxsCisJYXJjaGl2ZV9jbWRzX0NYWD0nJEVDSE8gIkxJQlJBUlkgJHtzb25hbWUlJHNoYXJlZF9leHR9IElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgJEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgJEVDSE8gIkRBVEEgTVVMVElQTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICAkRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgIGVteGV4cCAkbGlib2JqcyB8ICRTRUQgLyJfRExMX0luaXRUZXJtIi9kID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgICRDQyAtWmRsbCAtWmNydGRsbCAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICBlbXhpbXAgLW8gJGxpYiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisJYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRFQ0hPICJMSUJSQVJZICR7c29uYW1lJSRzaGFyZWRfZXh0fSBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgICRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgICRFQ0hPICJEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgJEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICBwcmVmaXhfY21kcz0iJFNFRCJ+CisJICBpZiB0ZXN0IEVYUE9SVFMgPSAiYCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCI7IHRoZW4KKwkgICAgcHJlZml4X2NtZHM9IiRwcmVmaXhfY21kcyAtZSAxZCI7CisJICBmaX4KKwkgIHByZWZpeF9jbWRzPSIkcHJlZml4X2NtZHMgLWUgXCJzL15cKC4qXCkkL19cMS9nXCIifgorCSAgY2F0ICRleHBvcnRfc3ltYm9scyB8ICRwcmVmaXhfY21kcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICAkQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgZW14aW1wIC1vICRsaWIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworCW9sZF9hcmNoaXZlX0Zyb21fbmV3X2NtZHNfQ1hYPSdlbXhpbXAgLW8gJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfV9kbGwuYSAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCisJOzsKKwogICAgICAgZGd1eCopCiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAgICAgZWMrKyopCkBAIC0yMDI3NCwxNCArMjA5NDUsMTQgQEAKICAgICAgICAgOzsKIAogICAgICAgaGFpa3UqKQotICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwogICAgICAgICBsaW5rX2FsbF9kZXBsaWJzX0NYWD15ZXMKICAgICAgICAgOzsKIAogICAgICAgaHB1eDkqKQotICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wrYiAkd2wkbGliZGlyJwogICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWD06Ci0gICAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LUUnCisgICAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR3bC1FJwogICAgICAgICBoYXJkY29kZV9kaXJlY3RfQ1hYPXllcwogICAgICAgICBoYXJkY29kZV9taW51c19MX0NYWD15ZXMgIyBOb3QgaW4gdGhlIHNlYXJjaCBQQVRILAogCQkJCSAgICAgICAgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdApAQCAtMjAyOTMsNyArMjA5NjQsNyBAQAogICAgICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubwogICAgICAgICAgICAgOzsKICAgICAgICAgICBhQ0MqKQotICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1iICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLWIgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgIngkb3V0cHV0X29iamRpci8kc29uYW1lIiA9ICJ4JGxpYiIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogICAgICAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAgICAgICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KQEAgLTIwMzAyLDExICsyMDk3MywxMSBAQAogICAgICAgICAgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KICAgICAgICAgICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKICAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzLgotICAgICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRFR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCisgICAgICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEVHUkVQICJcLUwiYDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogICAgICAgICAgICAgOzsKICAgICAgICAgICAqKQotICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdYWCI7IHRoZW4KKyAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAkd2wrYiAkd2wkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAieCRvdXRwdXRfb2JqZGlyLyRzb25hbWUiID0gIngkbGliIiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAogICAgICAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCkBAIC0yMDMxNiwxNSArMjA5ODcsMTUgQEAKICAgICAgICAgOzsKIAogICAgICAgaHB1eDEwKnxocHV4MTEqKQotICAgICAgICBpZiB0ZXN0ICR3aXRoX2dudV9sZCA9IG5vOyB0aGVuCi0JICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICAgIGlmIHRlc3Qgbm8gPSAiJHdpdGhfZ251X2xkIjsgdGhlbgorCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bCtiICR3bCRsaWJkaXInCiAJICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWD06CiAKICAgICAgICAgICBjYXNlICRob3N0X2NwdSBpbgogICAgICAgICAgICAgaHBwYSo2NCp8aWE2NCopCiAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAqKQotCSAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LUUnCisJICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHdsLUUnCiAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgZXNhYwogICAgICAgICBmaQpAQCAtMjAzNTAsMTMgKzIxMDIxLDEzIEBACiAgICAgICAgICAgYUNDKikKIAkgICAgY2FzZSAkaG9zdF9jcHUgaW4KIAkgICAgICBocHBhKjY0KikKLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtYiAkd2wraCAkd2wkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgOzsKIAkgICAgICBpYTY0KikKLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtYiAkd2wraCAkd2wkc29uYW1lICR3bCtub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgIDs7CiAJICAgICAgKikKLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1iICR3bCtoICR3bCRzb25hbWUgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgOzsKIAkgICAgZXNhYwogCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCkBAIC0yMDM2NywyMCArMjEwMzgsMjAgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCSAgICA7OwogICAgICAgICAgICopCi0JICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0JICAgICAgaWYgdGVzdCAkd2l0aF9nbnVfbGQgPSBubzsgdGhlbgorCSAgICBpZiB0ZXN0IHllcyA9ICIkR1hYIjsgdGhlbgorCSAgICAgIGlmIHRlc3Qgbm8gPSAiJHdpdGhfZ251X2xkIjsgdGhlbgogCSAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KIAkgICAgICAgICAgaHBwYSo2NCopCi0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAkd2wraCAkd2wkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgICAgIDs7CiAJICAgICAgICAgIGlhNjQqKQotCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAkd2wraCAkd2wkc29uYW1lICR3bCtub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgICAqKQotCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR3bCtoICR3bCRzb25hbWUgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgICAgIDs7CiAJICAgICAgICBlc2FjCiAJICAgICAgZmkKQEAgLTIwMzk1LDIyICsyMTA2NiwyMiBAQAogICAgICAgaW50ZXJpeFszLTldKikKIAloYXJkY29kZV9kaXJlY3RfQ1hYPW5vCiAJaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFg9bm8KLQloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLQlleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS1FJworCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wtcnBhdGgsJGxpYmRpcicKKwlleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtRScKIAkjIEhhY2s6IE9uIEludGVyaXggMy54LCB3ZSBjYW5ub3QgY29tcGlsZSBQSUMgYmVjYXVzZSBvZiBhIGJyb2tlbiBnY2MuCiAJIyBJbnN0ZWFkLCBzaGFyZWQgbGlicmFyaWVzIGFyZSBsb2FkZWQgYXQgYW4gaW1hZ2UgYmFzZSAoMHgxMDAwMDAwMCBieQogCSMgZGVmYXVsdCkgYW5kIHJlbG9jYXRlZCBpZiB0aGV5IGNvbmZsaWN0LCB3aGljaCBpcyBhIHNsb3cgdmVyeSBtZW1vcnkKIAkjIGNvbnN1bWluZyBhbmQgZnJhZ21lbnRpbmcgcHJvY2Vzcy4gIFRvIGF2b2lkIHRoaXMsIHdlIHBpY2sgYSByYW5kb20sCiAJIyAyNTYgS2lCLWFsaWduZWQgaW1hZ2UgYmFzZSBiZXR3ZWVuIDB4NTAwMDAwMDAgYW5kIDB4NkZGQzAwMDAgYXQgbGluawogCSMgdGltZS4gIE1vdmluZyB1cCBmcm9tIDB4MTAwMDAwMDAgYWxzbyBhbGxvd3MgbW9yZSBzYnJrKDIpIHNwYWNlLgotCWFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtaCwkc29uYW1lICR3bC0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJworCWFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdzZWQgInN8XnxffCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1oLCRzb25hbWUgJHdsLS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR3bC0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwogCTs7CiAgICAgICBpcml4NSogfCBpcml4NiopCiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAgICAgQ0MqKQogCSAgICAjIFNHSSBDKysKLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLWFsbCAtbXVsdGlnb3QgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAogCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgIyAiQ0MgLWFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgSVJJWCBDKysgY29tcGlsZXIuICBUaGlzIGlzCkBAIC0yMDQxOSwxNyArMjEwOTAsMTcgQEAKIAkgICAgb2xkX2FyY2hpdmVfY21kc19DWFg9JyRDQyAtYXIgLVdSLC11IC1vICRvbGRsaWIgJG9sZG9ianMnCiAJICAgIDs7CiAgICAgICAgICAgKikKLQkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLQkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgIGlmIHRlc3QgeWVzID0gIiRHWFgiOyB0aGVuCisJICAgICAgaWYgdGVzdCBubyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCisJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR3bC1zZXRfdmVyc2lvbiAkd2wkdmVyc3RyaW5nImAgJHdsLXVwZGF0ZV9yZWdpc3RyeSAkd2wkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkgICAgICBlbHNlCi0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJworCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIkd2wtc2V0X3ZlcnNpb24gJHdsJHZlcnN0cmluZyJgIC1vICRsaWInCiAJICAgICAgZmkKIAkgICAgZmkKIAkgICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCiAJICAgIDs7CiAgICAgICAgIGVzYWMKLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWD06CiAgICAgICAgIGluaGVyaXRfcnBhdGhfQ1hYPXllcwogICAgICAgICA7OwpAQCAtMjA0NDIsOCArMjExMTMsOCBAQAogCSAgICAjIEtDQyB3aWxsIG9ubHkgY3JlYXRlIGEgc2hhcmVkIGxpYnJhcnkgaWYgdGhlIG91dHB1dCBmaWxlCiAJICAgICMgZW5kcyB3aXRoICIuc28iIChvciAiLnNsIiBmb3IgSFAtVVgpLCBzbyByZW5hbWUgdGhlIGxpYnJhcnkKIAkgICAgIyB0byBpdHMgcHJvcGVyIG5hbWUgKHdpdGggdmVyc2lvbikgYWZ0ZXIgbGlua2luZy4KLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbXigpMC05QS1aYS16e31dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAkbGliIHwgJFNFRCAtZSAicy9cJHt0ZW1wZXh0fVwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKLQkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW14oKTAtOUEtWmEtent9XVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR7dGVtcGV4dH1cLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYiAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9sczsgbXYgXCR0ZW1wbGliICRsaWInCisJICAgIGFyY2hpdmVfY21kc19DWFg9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW14oKTAtOUEtWmEtent9XVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR0ZW1wZXh0XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWI7IG12IFwkdGVtcGxpYiAkbGliJworCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbXigpMC05QS1aYS16e31dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAkbGliIHwgJFNFRCAtZSAicy9cJHRlbXBleHRcLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYiAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHM7IG12IFwkdGVtcGxpYiAkbGliJwogCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAJICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogCSAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KQEAgLTIwNDUyLDEwICsyMTEyMywxMCBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxIHwgJEdSRVAgImxkImA7IHJtIC1mIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQ7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgcm0gLWYgbGliY29uZnRlc3Qkc2hhcmVkX2V4dDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCi0JICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ycGF0aCwkbGliZGlyJwotCSAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCisJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wtcnBhdGgsJGxpYmRpcicKKwkgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHdsLS1leHBvcnQtZHluYW1pYycKIAogCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgIyAiQ0MgLUJzdGF0aWMiLCB3aGVyZSAiQ0MiIGlzIHRoZSBLQUkgQysrIGNvbXBpbGVyLgpAQCAtMjA0NjksNTkgKzIxMTQwLDU5IEBACiAJICAgICMgZWFybGllciBkbyBub3QgYWRkIHRoZSBvYmplY3RzIHRoZW1zZWx2ZXMuCiAJICAgIGNhc2UgYCRDQyAtViAyPiYxYCBpbgogCSAgICAgICoiVmVyc2lvbiA3LiIqKQotCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JCWFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkJYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJCTs7CiAJICAgICAgKikgICMgVmVyc2lvbiA4LjAgb3IgbmV3ZXIKIAkgICAgICAgIHRtcF9pZHluPQogCSAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KIAkJICBpYTY0KikgdG1wX2lkeW49JyAtaV9keW5hbWljJzs7CiAJCWVzYWMKLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkJyIkdG1wX2lkeW4iJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQkJYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtc2hhcmVkJyIkdG1wX2lkeW4iJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkJyIkdG1wX2lkeW4iJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJCWFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCciJHRtcF9pZHluIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAkJOzsKIAkgICAgZXNhYwogCSAgICBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9bm8KLQkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0JICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLQkgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNfQ1hYPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCwkbGliZGlyJworCSAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtLWV4cG9ydC1keW5hbWljJworCSAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY19DWFg9JyR3bC0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICAgIDs7CiAgICAgICAgICAgcGdDQyogfCBwZ2NwcCopCiAgICAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIEMrKyBjb21waWxlcgogCSAgICBjYXNlIGAkQ0MgLVZgIGluCiAJICAgICpwZ0NDXCBbMS01XS4qIHwgKnBnY3BwXCBbMS01XS4qKQogCSAgICAgIHByZWxpbmtfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0JCXJtIC1yZiAkdHBsZGlyfgotCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+Ci0JCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCisgICAgICAgICAgICAgICBybSAtcmYgJHRwbGRpcn4KKyAgICAgICAgICAgICAgICRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KKyAgICAgICAgICAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCiAJICAgICAgb2xkX2FyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0JCXJtIC1yZiAkdHBsZGlyfgotCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgotCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KLQkJJFJBTkxJQiAkb2xkbGliJworICAgICAgICAgICAgICAgIHJtIC1yZiAkdHBsZGlyfgorICAgICAgICAgICAgICAgICRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+CisgICAgICAgICAgICAgICAgJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+CisgICAgICAgICAgICAgICAgJFJBTkxJQiAkb2xkbGliJwogCSAgICAgIGFyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0JCXJtIC1yZiAkdHBsZGlyfgotCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisgICAgICAgICAgICAgICAgcm0gLXJmICR0cGxkaXJ+CisgICAgICAgICAgICAgICAgJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CisgICAgICAgICAgICAgICAgJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKIAkgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLQkJcm0gLXJmICR0cGxkaXJ+Ci0JCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgICAgICAgICAgIHJtIC1yZiAkdHBsZGlyfgorICAgICAgICAgICAgICAgICRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgorICAgICAgICAgICAgICAgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCSAgICAgIDs7CiAJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCi0JICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0JICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJICAgICAgOzsKIAkgICAgZXNhYwogCi0JICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS0tcnBhdGggJHt3bH0kbGliZGlyJwotCSAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCi0JICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wtLXJwYXRoICR3bCRsaWJkaXInCisJICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR3bC0tZXhwb3J0LWR5bmFtaWMnCisJICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nJHdsLS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR3bC0tbm8td2hvbGUtYXJjaGl2ZScKICAgICAgICAgICAgIDs7CiAJICBjeHgqKQogCSAgICAjIENvbXBhcSBDKysKLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgIC1vICRsaWIgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMnCisJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgIC1vICRsaWIgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzJwogCiAJICAgIHJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRICiAJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSctcnBhdGggJGxpYmRpcicKQEAgLTIwNTM1LDE4ICsyMTIwNiwxOCBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQgLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgdGVtcGxpc3Q9YGZ1bmNfZWNob19hbGwgIiR0ZW1wbGlzdCIgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZCAuKiRcKS9cMS8iYDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiWCRsaXN0IiB8ICRYc2VkJwogCSAgICA7OwogCSAgeGwqIHwgbXBpeGwqIHwgYmd4bCopCiAJICAgICMgSUJNIFhMIDguMCBvbiBQUEMsIHdpdGggR05VIGxkCi0JICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0JICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1xbWtzaHJvYmogJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JICAgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKwkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCAkd2wkbGliZGlyJworCSAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtLWV4cG9ydC1keW5hbWljJworCSAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXFta3Nocm9iaiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJICAgIGlmIHRlc3QgeWVzID0gIiRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciOyB0aGVuCiAJICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JCWNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkJZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JCSRDQyAtcW1rc2hyb2JqICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS12ZXJzaW9uLXNjcmlwdCAke3dsfSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworICAgICAgICAgICAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgICAgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgICAgICAgICAkQ0MgLXFta3Nocm9iaiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC12ZXJzaW9uLXNjcmlwdCAkd2wkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKIAkgICAgZmkKIAkgICAgOzsKIAkgICopCkBAIC0yMDU1NCwxMCArMjEyMjUsMTAgQEAKIAkgICAgKlN1blwgQyopCiAJICAgICAgIyBTdW4gQysrIDUuOQogCSAgICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nIC16ZGVmcycKLQkgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzJworCSAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzJwogCSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSctUiRsaWJkaXInCi0JICAgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNfQ1hYPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nJHdsLS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHdsLS1uby13aG9sZS1hcmNoaXZlJwogCSAgICAgIGNvbXBpbGVyX25lZWRzX29iamVjdF9DWFg9eWVzCiAKIAkgICAgICAjIE5vdCBzdXJlIHdoZXRoZXIgc29tZXRoaW5nIGJhc2VkIG9uCkBAIC0yMDYxNSwyMiArMjEyODYsMTcgQEAKICAgICAgICAgbGRfc2hsaWJzX0NYWD15ZXMKIAk7OwogCi0gICAgICBvcGVuYnNkMiopCi0gICAgICAgICMgQysrIHNoYXJlZCBsaWJyYXJpZXMgYXJlIGZhaXJseSBicm9rZW4KLQlsZF9zaGxpYnNfQ1hYPW5vCi0JOzsKLQotICAgICAgb3BlbmJzZCopCisgICAgICBvcGVuYnNkKiB8IGJpdHJpZyopCiAJaWYgdGVzdCAtZiAvdXNyL2xpYmV4ZWMvbGQuc287IHRoZW4KIAkgIGhhcmRjb2RlX2RpcmVjdF9DWFg9eWVzCiAJICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD1ubwogCSAgaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlX0NYWD15ZXMKIAkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJGxpYicKLQkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ycGF0aCwkbGliZGlyJwotCSAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCi0JICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0JICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LUUnCi0JICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0iJHdsYXJjIictLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJyIkd2xhcmMiJy0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wtcnBhdGgsJGxpYmRpcicKKwkgIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfX2AiOyB0aGVuCisJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCSAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtRScKKwkgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNfQ1hYPSR3bGFyYyctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJyR3bGFyYyctLW5vLXdob2xlLWFyY2hpdmUnCiAJICBmaQogCSAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZnVuY19lY2hvX2FsbAogCWVsc2UKQEAgLTIwNjQ2LDkgKzIxMzEyLDkgQEAKIAkgICAgIyBLQ0Mgd2lsbCBvbmx5IGNyZWF0ZSBhIHNoYXJlZCBsaWJyYXJ5IGlmIHRoZSBvdXRwdXQgZmlsZQogCSAgICAjIGVuZHMgd2l0aCAiLnNvIiAob3IgIi5zbCIgZm9yIEhQLVVYKSwgc28gcmVuYW1lIHRoZSBsaWJyYXJ5CiAJICAgICMgdG8gaXRzIHByb3BlciBuYW1lICh3aXRoIHZlcnNpb24pIGFmdGVyIGxpbmtpbmcuCi0JICAgIGFyY2hpdmVfY21kc19DWFg9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW14oKTAtOUEtWmEtent9XVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gIiRsaWIiIHwgJFNFRCAtZSAicy9cJHt0ZW1wZXh0fVwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKKwkgICAgYXJjaGl2ZV9jbWRzX0NYWD0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbXigpMC05QS1aYS16e31dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAiJGxpYiIgfCAkU0VEIC1lICJzL1wkdGVtcGV4dFwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKIAotCSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCwkbGliZGlyJwogCSAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWD06CiAKIAkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCkBAIC0yMDY2NiwxNyArMjEzMzIsMTcgQEAKICAgICAgICAgICBjeHgqKQogCSAgICBjYXNlICRob3N0IGluCiAJICAgICAgb3NmMyopCi0JICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0JICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworCSAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHdsLWV4cGVjdF91bnJlc29sdmVkICR3bFwqJworCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogCQk7OwogCSAgICAgICopCiAJICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZX4KLQkgICAgICAgICAgZWNobyAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkgICAgICAgICAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifgotCSAgICAgICAgICAkUk0gJGxpYi5leHAnCisgICAgICAgICAgICAgICAgICBlY2hvICItaGlkZGVuIj4+ICRsaWIuZXhwfgorICAgICAgICAgICAgICAgICAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSAkd2wtaW5wdXQgJHdsJGxpYi5leHAgIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGlifgorICAgICAgICAgICAgICAgICAgJFJNICRsaWIuZXhwJwogCSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1ycGF0aCAkbGliZGlyJwogCQk7OwogCSAgICBlc2FjCkBAIC0yMDY5MSwyMSArMjEzNTcsMjEgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCSAgICA7OwogCSAgKikKLQkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKwkgICAgaWYgdGVzdCB5ZXMsbm8gPSAiJEdYWCwkd2l0aF9nbnVfbGQiOyB0aGVuCisJICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHdsLWV4cGVjdF91bnJlc29sdmVkICR3bFwqJwogCSAgICAgIGNhc2UgJGhvc3QgaW4KIAkgICAgICAgIG9zZjMqKQotCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bCRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCQkgIDs7CiAJICAgICAgICAqKQotCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtbXN5bSAkd2wtc29uYW1lICR3bCRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR3bC1zZXRfdmVyc2lvbiAkd2wkdmVyc3RyaW5nImAgJHdsLXVwZGF0ZV9yZWdpc3RyeSAkd2wkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkJICA7OwogCSAgICAgIGVzYWMKIAotCSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogCSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYPToKIAogCSAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKQEAgLTIwNzUxLDkgKzIxNDE3LDkgQEAKIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPXllcwogCSAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAtemRlZnMnCi0JICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAgICAgJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHt3bH0tTSAke3dsfSRsaWIuZXhwIC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgICAgICRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAkd2wtTSAkd2wkbGliLmV4cCAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogCiAJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSctUiRsaWJkaXInCiAJICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYPW5vCkBAIC0yMDc2MSw3ICsyMTQyNyw3IEBACiAJICAgICAgc29sYXJpczIuWzAtNV0gfCBzb2xhcmlzMi5bMC01XS4qKSA7OwogCSAgICAgICopCiAJCSMgVGhlIGNvbXBpbGVyIGRyaXZlciB3aWxsIGNvbWJpbmUgYW5kIHJlb3JkZXIgbGlua2VyIG9wdGlvbnMsCi0JCSMgYnV0IHVuZGVyc3RhbmRzIGAteiBsaW5rZXJfZmxhZycuCisJCSMgYnV0IHVuZGVyc3RhbmRzICcteiBsaW5rZXJfZmxhZycuCiAJICAgICAgICAjIFN1cHBvcnRlZCBzaW5jZSBTb2xhcmlzIDIuNiAobWF5YmUgMi41LjE/KQogCQl3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY19DWFg9Jy16IGFsbGV4dHJhY3QkY29udmVuaWVuY2UgLXogZGVmYXVsdGV4dHJhY3QnCiAJICAgICAgICA7OwpAQCAtMjA3NzgsMzAgKzIxNDQ0LDMwIEBACiAJICAgIDs7CiAgICAgICAgICAgZ2N4KikKIAkgICAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLWggJHdsJHNvbmFtZSAtbyAkbGliJwogCiAJICAgICMgVGhlIEMrKyBjb21waWxlciBtdXN0IGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBhcmNoaXZlLgogCSAgICBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0nJENDICRMREZMQUdTIC1hcmNoaXZlIC1vICRvbGRsaWIgJG9sZG9ianMnCiAJICAgIDs7CiAgICAgICAgICAgKikKIAkgICAgIyBHTlUgQysrIGNvbXBpbGVyIHdpdGggU29sYXJpcyBsaW5rZXIKLQkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JICAgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHt3bH0teiAke3dsfWRlZnMnCisJICAgIGlmIHRlc3QgeWVzLG5vID0gIiRHWFgsJHdpdGhfZ251X2xkIjsgdGhlbgorCSAgICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nICR3bC16ICR7d2x9ZGVmcycKIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgotCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtaCAkd2wkc29uYW1lIC1vICRsaWInCiAJICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgICAgICAgICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR3bC1NICR3bCRsaWIuZXhwICR3bC1oICR3bCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogCiAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KIAkgICAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgogCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCSAgICAgIGVsc2UKLQkgICAgICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgYC1HJyBOT1QgYC1zaGFyZWQnIG9uIHRoaXMKKwkgICAgICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgJy1HJyBOT1QgJy1zaGFyZWQnIG9uIHRoaXMKIAkgICAgICAgICMgcGxhdGZvcm0uCi0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLUcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtRyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1oICR3bCRzb25hbWUgLW8gJGxpYicKIAkgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JCSAgJENDIC1HIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICAgICAgICAgICAgICRDQyAtRyAtbm9zdGRsaWIgJHdsLU0gJHdsJGxpYi5leHAgJHdsLWggJHdsJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAKIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgpAQCAtMjA4MDksMTEgKzIxNDc1LDExIEBACiAJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1HICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCSAgICAgIGZpCiAKLQkgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tUiAkd2wkbGliZGlyJworCSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wtUiAkd2wkbGliZGlyJwogCSAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KIAkJc29sYXJpczIuWzAtNV0gfCBzb2xhcmlzMi5bMC01XS4qKSA7OwogCQkqKQotCQkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nJHt3bH0teiAke3dsfWFsbGV4dHJhY3QkY29udmVuaWVuY2UgJHt3bH0teiAke3dsfWRlZmF1bHRleHRyYWN0JworCQkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nJHdsLXogJHt3bH1hbGxleHRyYWN0JGNvbnZlbmllbmNlICR3bC16ICR7d2x9ZGVmYXVsdGV4dHJhY3QnCiAJCSAgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCkBAIC0yMDgyMiw1MiArMjE0ODgsNTIgQEAKICAgICAgICAgOzsKIAogICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LlswMV0uWzEwXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bMDI0XSopCi0gICAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyR7d2x9LXosdGV4dCcKKyAgICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nJHdsLXosdGV4dCcKICAgICAgIGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWD1ubwogICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFg9bm8KICAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKIAogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICAgQ0MqKQotCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQkgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1HICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1HICR3bC1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAkqKQotCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtc2hhcmVkICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogICAgICAgZXNhYwogICAgICAgOzsKIAogICAgICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KikKLQkjIE5vdGU6IFdlIGNhbiBOT1QgdXNlIC16IGRlZnMgYXMgd2UgbWlnaHQgZGVzaXJlLCBiZWNhdXNlIHdlIGRvIG5vdAorCSMgTm90ZTogV2UgQ0FOTk9UIHVzZSAteiBkZWZzIGFzIHdlIG1pZ2h0IGRlc2lyZSwgYmVjYXVzZSB3ZSBkbyBub3QKIAkjIGxpbmsgd2l0aCAtbGMsIGFuZCB0aGF0IHdvdWxkIGNhdXNlIGFueSBzeW1ib2xzIHVzZWQgZnJvbSBsaWJjIHRvCiAJIyBhbHdheXMgYmUgdW5yZXNvbHZlZCwgd2hpY2ggbWVhbnMganVzdCBhYm91dCBubyBsaWJyYXJ5IHdvdWxkCiAJIyBldmVyIGxpbmsgY29ycmVjdGx5LiAgSWYgd2UncmUgbm90IHVzaW5nIEdOVSBsZCB3ZSB1c2UgLXogdGV4dAogCSMgdGhvdWdoLCB3aGljaCBkb2VzIGNhdGNoIHNvbWUgYmFkIHN5bWJvbHMgYnV0IGlzbid0IGFzIGhlYXZ5LWhhbmRlZAogCSMgYXMgLXogZGVmcy4KLQlub191bmRlZmluZWRfZmxhZ19DWFg9JyR7d2x9LXosdGV4dCcKLQlhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9JyR7d2x9LXosbm9kZWZzJworCW5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nJHdsLXosdGV4dCcKKwlhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9JyR3bC16LG5vZGVmcycKIAlhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9bm8KIAloYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD1ubwotCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1SLCRsaWJkaXInCisJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1SLCRsaWJkaXInCiAJaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcl9DWFg9JzonCiAJbGlua19hbGxfZGVwbGlic19DWFg9eWVzCi0JZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tQmV4cG9ydCcKKwlleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtQmV4cG9ydCcKIAlydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCiAKIAljYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgICAgIENDKikKLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtRyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1HICR3bC1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1UcHJlbGlua19vYmplY3RzICRvbGRvYmpzfgotCSAgICAgICciJG9sZF9hcmNoaXZlX2NtZHNfQ1hYIgorICAgICAgICAgICAgICAnIiRvbGRfYXJjaGl2ZV9jbWRzX0NYWCIKIAkgICAgcmVsb2FkX2NtZHNfQ1hYPSckQ0MgLVRwcmVsaW5rX29iamVjdHMgJHJlbG9hZF9vYmpzfgotCSAgICAgICciJHJlbG9hZF9jbWRzX0NYWCIKKyAgICAgICAgICAgICAgJyIkcmVsb2FkX2NtZHNfQ1hYIgogCSAgICA7OwogCSAgKikKLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgIDs7CiAJZXNhYwogICAgICAgOzsKQEAgLTIwODk5LDEwICsyMTU2NSwxMCBAQAogCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsZF9zaGxpYnNfQ1hYIiA+JjUKICRhc19lY2hvICIkbGRfc2hsaWJzX0NYWCIgPiY2OyB9Ci0gICAgdGVzdCAiJGxkX3NobGlic19DWFgiID0gbm8gJiYgY2FuX2J1aWxkX3NoYXJlZD1ubworICAgIHRlc3Qgbm8gPSAiJGxkX3NobGlic19DWFgiICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KIAotICAgIEdDQ19DWFg9IiRHWFgiCi0gICAgTERfQ1hYPSIkTEQiCisgICAgR0NDX0NYWD0kR1hYCisgICAgTERfQ1hYPSRMRAogCiAgICAgIyMgQ0FWRUFUIEVNUFRPUjoKICAgICAjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQpAQCAtMjA5NDYsMTMgKzIxNjEyLDEzIEBACiAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KIAogICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCi0gICAgY2FzZSAke3ByZXZ9JHtwfSBpbgorICAgIGNhc2UgJHByZXYkcCBpbgogCiAgICAgLUwqIHwgLVIqIHwgLWwqKQogICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCiAgICAgICAgIyBSZW1vdmUgdGhlIHNwYWNlLgotICAgICAgIGlmIHRlc3QgJHAgPSAiLUwiIHx8Ci0gICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KKyAgICAgICBpZiB0ZXN0IHgtTCA9ICIkcCIgfHwKKyAgICAgICAgICB0ZXN0IHgtUiA9ICIkcCI7IHRoZW4KIAkgcHJldj0kcAogCSBjb250aW51ZQogICAgICAgIGZpCkBAIC0yMDk2OCwxNiArMjE2MzQsMTYgQEAKICAgICAgICBjYXNlICRwIGluCiAgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKICAgICAgICBlc2FjCi0gICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLQkgY2FzZSAke3ByZXZ9IGluCisgICAgICAgaWYgdGVzdCBubyA9ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSI7IHRoZW4KKwkgY2FzZSAkcHJldiBpbgogCSAtTCB8IC1SKQogCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQogCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQogCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgogCSAgIGlmIHRlc3QgLXogIiRjb21waWxlcl9saWJfc2VhcmNoX3BhdGhfQ1hYIjsgdGhlbgotCSAgICAgY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoX0NYWD0iJHtwcmV2fSR7cH0iCisJICAgICBjb21waWxlcl9saWJfc2VhcmNoX3BhdGhfQ1hYPSRwcmV2JHAKIAkgICBlbHNlCi0JICAgICBjb21waWxlcl9saWJfc2VhcmNoX3BhdGhfQ1hYPSIke2NvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aF9DWFh9ICR7cHJldn0ke3B9IgorCSAgICAgY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoX0NYWD0iJHtjb21waWxlcl9saWJfc2VhcmNoX3BhdGhfQ1hYfSAkcHJldiRwIgogCSAgIGZpCiAJICAgOzsKIAkgIyBUaGUgIi1sIiBjYXNlIHdvdWxkIG5ldmVyIGNvbWUgYmVmb3JlIHRoZSBvYmplY3QgYmVpbmcKQEAgLTIwOTg1LDkgKzIxNjUxLDkgQEAKIAkgZXNhYwogICAgICAgIGVsc2UKIAkgaWYgdGVzdCAteiAiJHBvc3RkZXBzX0NYWCI7IHRoZW4KLQkgICBwb3N0ZGVwc19DWFg9IiR7cHJldn0ke3B9IgorCSAgIHBvc3RkZXBzX0NYWD0kcHJldiRwCiAJIGVsc2UKLQkgICBwb3N0ZGVwc19DWFg9IiR7cG9zdGRlcHNfQ1hYfSAke3ByZXZ9JHtwfSIKKwkgICBwb3N0ZGVwc19DWFg9IiR7cG9zdGRlcHNfQ1hYfSAkcHJldiRwIgogCSBmaQogICAgICAgIGZpCiAgICAgICAgcHJldj0KQEAgLTIxMDAyLDE1ICsyMTY2OCwxNSBAQAogCSBjb250aW51ZQogICAgICAgIGZpCiAKLSAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgorICAgICAgIGlmIHRlc3Qgbm8gPSAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiOyB0aGVuCiAJIGlmIHRlc3QgLXogIiRwcmVkZXBfb2JqZWN0c19DWFgiOyB0aGVuCi0JICAgcHJlZGVwX29iamVjdHNfQ1hYPSIkcCIKKwkgICBwcmVkZXBfb2JqZWN0c19DWFg9JHAKIAkgZWxzZQogCSAgIHByZWRlcF9vYmplY3RzX0NYWD0iJHByZWRlcF9vYmplY3RzX0NYWCAkcCIKIAkgZmkKICAgICAgICBlbHNlCiAJIGlmIHRlc3QgLXogIiRwb3N0ZGVwX29iamVjdHNfQ1hYIjsgdGhlbgotCSAgIHBvc3RkZXBfb2JqZWN0c19DWFg9IiRwIgorCSAgIHBvc3RkZXBfb2JqZWN0c19DWFg9JHAKIAkgZWxzZQogCSAgIHBvc3RkZXBfb2JqZWN0c19DWFg9IiRwb3N0ZGVwX29iamVjdHNfQ1hYICRwIgogCSBmaQpAQCAtMjEwNDAsNTEgKzIxNzA2LDYgQEAKICAgcG9zdGRlcF9vYmplY3RzX0NYWD0KICAgcG9zdGRlcHNfQ1hYPQogICA7OwotCi1saW51eCopCi0gIGNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgotICAqU3VuXCBDKikKLSAgICAjIFN1biBDKysgNS45Ci0KLSAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKLSAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKLSAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCi0gICAgIyAtbGlicmFyeT1zdGxwb3J0NCBkZXBlbmRzIG9uIGl0LgotICAgIGNhc2UgIiAkQ1hYICRDWFhGTEFHUyAiIGluCi0gICAgKiIgLWxpYnJhcnk9c3RscG9ydDQgIiopCi0gICAgICBzb2xhcmlzX3VzZV9zdGxwb3J0ND15ZXMKLSAgICAgIDs7Ci0gICAgZXNhYwotCi0gICAgaWYgdGVzdCAiJHNvbGFyaXNfdXNlX3N0bHBvcnQ0IiAhPSB5ZXM7IHRoZW4KLSAgICAgIHBvc3RkZXBzX0NYWD0nLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJwotICAgIGZpCi0gICAgOzsKLSAgZXNhYwotICA7OwotCi1zb2xhcmlzKikKLSAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgQ0MqIHwgc3VuQ0MqKQotICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwotICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwotICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKLSAgICAjIC1saWJyYXJ5PXN0bHBvcnQ0IGRlcGVuZHMgb24gaXQuCi0gICAgY2FzZSAiICRDWFggJENYWEZMQUdTICIgaW4KLSAgICAqIiAtbGlicmFyeT1zdGxwb3J0NCAiKikKLSAgICAgIHNvbGFyaXNfdXNlX3N0bHBvcnQ0PXllcwotICAgICAgOzsKLSAgICBlc2FjCi0KLSAgICAjIEFkZGluZyB0aGlzIHJlcXVpcmVzIGEga25vd24tZ29vZCBzZXR1cCBvZiBzaGFyZWQgbGlicmFyaWVzIGZvcgotICAgICMgU3VuIGNvbXBpbGVyIHZlcnNpb25zIGJlZm9yZSA1LjYsIGVsc2UgUElDIG9iamVjdHMgZnJvbSBhbiBvbGQKLSAgICAjIGFyY2hpdmUgd2lsbCBiZSBsaW5rZWQgaW50byB0aGUgb3V0cHV0LCBsZWFkaW5nIHRvIHN1YnRsZSBidWdzLgotICAgIGlmIHRlc3QgIiRzb2xhcmlzX3VzZV9zdGxwb3J0NCIgIT0geWVzOyB0aGVuCi0gICAgICBwb3N0ZGVwc19DWFg9Jy1saWJyYXJ5PUNzdGQgLWxpYnJhcnk9Q3J1bicKLSAgICBmaQotICAgIDs7Ci0gIGVzYWMKLSAgOzsKIGVzYWMKIAogCkBAIC0yMTA5Myw3ICsyMTcxNCw3IEBACiBlc2FjCiAgY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWD0KIGlmIHRlc3QgLW4gIiR7Y29tcGlsZXJfbGliX3NlYXJjaF9wYXRoX0NYWH0iOyB0aGVuCi0gY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWD1gZWNobyAiICR7Y29tcGlsZXJfbGliX3NlYXJjaF9wYXRoX0NYWH0iIHwgJHtTRUR9IC1lICdzISAtTCEgIWcnIC1lICdzIV4gISEnYAorIGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlyc19DWFg9YGVjaG8gIiAke2NvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aF9DWFh9IiB8ICRTRUQgLWUgJ3MhIC1MISAhZycgLWUgJ3MhXiAhISdgCiBmaQogCiAKQEAgLTIxMTMyLDE3ICsyMTc1MywxOCBAQAogCiAKICAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgotICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICBpZiB0ZXN0IHllcyA9ICIkR1hYIjsgdGhlbgogICAgIGx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSctV2wsJwogICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nLXN0YXRpYycKIAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBhaXgqKQogICAgICAgIyBBbGwgQUlYIGNvZGUgaXMgUElDLgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAJIyBBSVggNSBub3cgc3VwcG9ydHMgSUE2NCBwcm9jZXNzb3IKIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Jy1Cc3RhdGljJwogICAgICAgZmkKKyAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLWZQSUMnCiAgICAgICA7OwogCiAgICAgYW1pZ2FvcyopCkBAIC0yMTE1Myw4ICsyMTc3NSw4IEBACiAgICAgICAgIDs7CiAgICAgICBtNjhrKQogICAgICAgICAgICAgIyBGSVhNRTogd2UgbmVlZCBhdCBsZWFzdCA2ODAyMCBjb2RlIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMsIGJ1dAotICAgICAgICAgICAgIyBhZGRpbmcgdGhlIGAtbTY4MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBiZXR0ZXIsCi0gICAgICAgICAgICAjIGxpa2UgYC1tNjgwNDAnLgorICAgICAgICAgICAgIyBhZGRpbmcgdGhlICctbTY4MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBiZXR0ZXIsCisgICAgICAgICAgICAjIGxpa2UgJy1tNjgwNDAnLgogICAgICAgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctbTY4MDIwIC1yZXNpZGVudDMyIC1tYWx3YXlzLXJlc3RvcmUtYTQnCiAgICAgICAgIDs7CiAgICAgICBlc2FjCkBAIC0yMTE2OSw2ICsyMTc5MSwxMSBAQAogICAgICAgIyBBbHRob3VnaCB0aGUgY3lnd2luIGdjYyBpZ25vcmVzIC1mUElDLCBzdGlsbCBuZWVkIHRoaXMgZm9yIG9sZC1zdHlsZQogICAgICAgIyAoLS1kaXNhYmxlLWF1dG8taW1wb3J0KSBsaWJyYXJpZXMKICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLURETExfRVhQT1JUJworICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgb3MyKikKKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9JyR3bC1zdGF0aWMnCisJOzsKKyAgICAgIGVzYWMKICAgICAgIDs7CiAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKICAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IG9uIHRoaXMgcGxhdGZvcm0KQEAgLTIxMjE4LDcgKzIxODQ1LDcgQEAKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgICBhaXhbNC05XSopCiAJIyBBbGwgQUlYIGNvZGUgaXMgUElDLgotCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KIAkgICMgQUlYIDUgbm93IHN1cHBvcnRzIElBNjQgcHJvY2Vzc29yCiAJICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Jy1Cc3RhdGljJwogCWVsc2UKQEAgLTIxMjU4LDE0ICsyMTg4NSwxNCBAQAogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCiAJICBDQyopCiAJICAgIGx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSctV2wsJwotCSAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9JyR7d2x9LWEgJHt3bH1hcmNoaXZlJwotCSAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQ7IHRoZW4KKwkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSckd2wtYSAke3dsfWFyY2hpdmUnCisJICAgIGlmIHRlc3QgaWE2NCAhPSAiJGhvc3RfY3B1IjsgdGhlbgogCSAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nK1onCiAJICAgIGZpCiAJICAgIDs7CiAJICBhQ0MqKQogCSAgICBsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nLVdsLCcKLQkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPScke3dsfS1hICR7d2x9YXJjaGl2ZScKKwkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSckd2wtYSAke3dsfWFyY2hpdmUnCiAJICAgIGNhc2UgJGhvc3RfY3B1IGluCiAJICAgIGhwcGEqNjQqfGlhNjQqKQogCSAgICAgICMgK1ogdGhlIGRlZmF1bHQKQEAgLTIxMzAyLDcgKzIxOTI5LDcgQEAKIAkgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctZlBJQycKIAkgICAgOzsKIAkgIGVjcGMqICkKLQkgICAgIyBvbGQgSW50ZWwgQysrIGZvciB4ODZfNjQgd2hpY2ggc3RpbGwgc3VwcG9ydGVkIC1LUElDLgorCSAgICAjIG9sZCBJbnRlbCBDKysgZm9yIHg4Nl82NCwgd2hpY2ggc3RpbGwgc3VwcG9ydGVkIC1LUElDLgogCSAgICBsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nLVdsLCcKIAkgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctS1BJQycKIAkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSctc3RhdGljJwpAQCAtMjE0NDcsNyArMjIwNzQsNyBAQAogICBmaQogCiBjYXNlICRob3N0X29zIGluCi0gICMgRm9yIHBsYXRmb3JtcyB3aGljaCBkbyBub3Qgc3VwcG9ydCBQSUMsIC1EUElDIGlzIG1lYW5pbmdsZXNzOgorICAjIEZvciBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBQSUMsIC1EUElDIGlzIG1lYW5pbmdsZXNzOgogICAqZGpncHAqKQogICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0KICAgICA7OwpAQCAtMjE0NzksNyArMjIxMDYsNyBAQAogICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3Jrc19DWFg9bm8KICAgIGFjX291dGZpbGU9Y29uZnRlc3QuJGFjX29iamV4dAogICAgZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0Ci0gICBsdF9jb21waWxlcl9mbGFnPSIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIC1EUElDIgorICAgbHRfY29tcGlsZXJfZmxhZz0iJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCAtRFBJQyIgICMjIGV4Y2x1ZGUgZnJvbSBzY191c2VsZXNzX3F1b3Rlc19pbl9hc3NpZ25tZW50CiAgICAjIEluc2VydCB0aGUgb3B0aW9uIGVpdGhlciAoMSkgYWZ0ZXIgdGhlIGxhc3QgKkZMQUdTIHZhcmlhYmxlLCBvcgogICAgIyAoMikgYmVmb3JlIGEgd29yZCBjb250YWluaW5nICJjb25mdGVzdC4iLCBvciAoMykgYXQgdGhlIGVuZC4KICAgICMgTm90ZSB0aGF0ICRhY19jb21waWxlIGl0c2VsZiBkb2VzIG5vdCBjb250YWluIGJhY2tzbGFzaGVzIGFuZCBiZWdpbnMKQEAgLTIxNTA5LDcgKzIyMTM2LDcgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3NfQ1hYIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3NfQ1hYIiA+JjY7IH0KIAotaWYgdGVzdCB4IiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3Jrc19DWFgiID0geHllczsgdGhlbgoraWYgdGVzdCB5ZXMgPSAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzX0NYWCI7IHRoZW4KICAgICBjYXNlICRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFggaW4KICAgICAgIiIgfCAiICIqKSA7OwogICAgICAqKSBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9IiAkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA7OwpAQCAtMjE1MzUsNyArMjIxNjIsNyBAQAogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrc19DWFg9bm8KLSAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisgICBzYXZlX0xERkxBR1M9JExERkxBR1MKICAgIExERkxBR1M9IiRMREZMQUdTICRsdF90bXBfc3RhdGljX2ZsYWciCiAgICBlY2hvICIkbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKICAgIGlmIChldmFsICRhY19saW5rIDI+Y29uZnRlc3QuZXJyKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dDsgdGhlbgpAQCAtMjE1NTQsMTMgKzIyMTgxLDEzIEBACiAgICAgIGZpCiAgICBmaQogICAgJFJNIC1yIGNvbmZ0ZXN0KgotICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKyAgIExERkxBR1M9JHNhdmVfTERGTEFHUwogCiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrc19DWFgiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrc19DWFgiID4mNjsgfQogCi1pZiB0ZXN0IHgiJGx0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzX0NYWCIgPSB4eWVzOyB0aGVuCitpZiB0ZXN0IHllcyA9ICIkbHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3NfQ1hYIjsgdGhlbgogICAgIDoKIGVsc2UKICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9CkBAIC0yMTY3NCw4ICsyMjMwMSw4IEBACiAKIAogCi1oYXJkX2xpbmtzPSJub3R0ZXN0ZWQiCi1pZiB0ZXN0ICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIiA9IG5vICYmIHRlc3QgIiRuZWVkX2xvY2tzIiAhPSBubzsgdGhlbgoraGFyZF9saW5rcz1ub3R0ZXN0ZWQKK2lmIHRlc3Qgbm8gPSAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCIgJiYgdGVzdCBubyAhPSAiJG5lZWRfbG9ja3MiOyB0aGVuCiAgICMgZG8gbm90IG92ZXJ3cml0ZSB0aGUgdmFsdWUgb2YgbmVlZF9sb2NrcyBwcm92aWRlZCBieSB0aGUgdXNlcgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiBsb2NrIHdpdGggaGFyZCBsaW5rcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gbG9jayB3aXRoIGhhcmQgbGlua3MuLi4gIiA+JjY7IH0KQEAgLTIxNjg3LDkgKzIyMzE0LDkgQEAKICAgbG4gY29uZnRlc3QuYSBjb25mdGVzdC5iIDI+L2Rldi9udWxsICYmIGhhcmRfbGlua3M9bm8KICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXJkX2xpbmtzIiA+JjUKICRhc19lY2hvICIkaGFyZF9saW5rcyIgPiY2OyB9Ci0gIGlmIHRlc3QgIiRoYXJkX2xpbmtzIiA9IG5vOyB0aGVuCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBcYCRDQycgZG9lcyBub3Qgc3VwcG9ydCBcYC1jIC1vJywgc28gXGBtYWtlIC1qJyBtYXkgYmUgdW5zYWZlIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFxgJENDJyBkb2VzIG5vdCBzdXBwb3J0IFxgLWMgLW8nLCBzbyBcYG1ha2UgLWonIG1heSBiZSB1bnNhZmUiID4mMjt9CisgIGlmIHRlc3Qgbm8gPSAiJGhhcmRfbGlua3MiOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAnJENDJyBkb2VzIG5vdCBzdXBwb3J0ICctYyAtbycsIHNvICdtYWtlIC1qJyBtYXkgYmUgdW5zYWZlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICckQ0MnIGRvZXMgbm90IHN1cHBvcnQgJy1jIC1vJywgc28gJ21ha2UgLWonIG1heSBiZSB1bnNhZmUiID4mMjt9CiAgICAgbmVlZF9sb2Nrcz13YXJuCiAgIGZpCiBlbHNlCkBAIC0yMTcwNiwxNyArMjIzMzMsMjEgQEAKICAgY2FzZSAkaG9zdF9vcyBpbgogICBhaXhbNC05XSopCiAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCi0gICAgIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQotICAgICMgQWxzbywgQUlYIG5tIHRyZWF0cyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbCBkZWZpbmVkCi0gICAgIyBzeW1ib2xzLCB3aGVyZWFzIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KKyAgICAjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEdOVSBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHRvIEFJWCBubS4KKyAgICAjIFdpdGhvdXQgdGhlICItbCIgb3B0aW9uLCBvciB3aXRoIHRoZSAiLUIiIG9wdGlvbiwgQUlYIG5tIHRyZWF0cworICAgICMgd2VhayBkZWZpbmVkIHN5bWJvbHMgbGlrZSBvdGhlciBnbG9iYWwgZGVmaW5lZCBzeW1ib2xzLCB3aGVyZWFzCisgICAgIyBHTlUgbm0gbWFya3MgdGhlbSBhcyAiVyIuCisgICAgIyBXaGlsZSB0aGUgJ3dlYWsnIGtleXdvcmQgaXMgaWdub3JlZCBpbiB0aGUgRXhwb3J0IEZpbGUsIHdlIG5lZWQKKyAgICAjIGl0IGluIHRoZSBJbXBvcnQgRmlsZSBmb3IgdGhlICdhaXgtc29uYW1lJyBmZWF0dXJlLCBzbyB3ZSBoYXZlCisgICAgIyB0byByZXBsYWNlIHRoZSAiLUIiIG9wdGlvbiB3aXRoICItUCIgZm9yIEFJWCBubS4KICAgICBpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSkgJiYgKHN1YnN0cihcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChzdWJzdHIoXCQgMywxLDEpICE9ICIuIikpIHsgaWYgKFwkIDIgPT0gIlciKSB7IHByaW50IFwkIDMgIiB3ZWFrIiB9IGVsc2UgeyBwcmludCBcJCAzIH0gfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAgICAgZWxzZQotICAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKHN1YnN0cihcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9J2BmdW5jX2VjaG9fYWxsICROTSB8ICRTRUQgLWUgJ1wnJ3MvQlwoW15CXSpcKSQvUFwxLydcJydgIC1QQ3BnbCAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpIHx8IChcJCAyID09ICJWIikgfHwgKFwkIDIgPT0gIloiKSkgJiYgKHN1YnN0cihcJCAxLDEsMSkgIT0gIi4iKSkgeyBpZiAoKFwkIDIgPT0gIlciKSB8fCAoXCQgMiA9PSAiViIpIHx8IChcJCAyID09ICJaIikpIHsgcHJpbnQgXCQgMSAiIHdlYWsiIH0gZWxzZSB7IHByaW50IFwkIDEgfSB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKICAgICBmaQogICAgIDs7CiAgIHB3MzIqKQotICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSIkbHRkbGxfY21kcyIKKyAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0kbHRkbGxfY21kcwogICAgIDs7CiAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCiAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTIxNzM5LDcgKzIyMzcwLDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsZF9zaGxpYnNfQ1hYIiA+JjUKICRhc19lY2hvICIkbGRfc2hsaWJzX0NYWCIgPiY2OyB9Ci10ZXN0ICIkbGRfc2hsaWJzX0NYWCIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCit0ZXN0IG5vID0gIiRsZF9zaGxpYnNfQ1hYIiAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCiAKIHdpdGhfZ251X2xkX0NYWD0kd2l0aF9nbnVfbGQKIApAQCAtMjE3NTYsNyArMjIzODcsNyBAQAogICAjIEFzc3VtZSAtbGMgc2hvdWxkIGJlIGFkZGVkCiAgIGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWD15ZXMKIAotICBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMseWVzID0gIiRHQ0MsJGVuYWJsZV9zaGFyZWQiOyB0aGVuCiAgICAgY2FzZSAkYXJjaGl2ZV9jbWRzX0NYWCBpbgogICAgIConficqKQogICAgICAgIyBGSVhNRTogd2UgbWF5IGhhdmUgdG8gZGVhbCB3aXRoIG11bHRpLWNvbW1hbmQgc2VxdWVuY2VzLgpAQCAtMjE4ODQsNyArMjI1MTUsNyBAQAogbGlicmFyeV9uYW1lc19zcGVjPQogbGlibmFtZV9zcGVjPSdsaWIkbmFtZScKIHNvbmFtZV9zcGVjPQotc2hyZXh0X2NtZHM9Ii5zbyIKK3NocmV4dF9jbWRzPS5zbwogcG9zdGluc3RhbGxfY21kcz0KIHBvc3R1bmluc3RhbGxfY21kcz0KIGZpbmlzaF9jbWRzPQpAQCAtMjE5MDEsMTQgKzIyNTMyLDE2IEBACiAjIGZsYWdzIHRvIGJlIGxlZnQgd2l0aG91dCBhcmd1bWVudHMKIG5lZWRfdmVyc2lvbj11bmtub3duCiAKKworCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUuYScKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lLmEnCiAgIHNobGlicGF0aF92YXI9TElCUEFUSAogCiAgICMgQUlYIDMgaGFzIG5vIHZlcnNpb25pbmcgc3VwcG9ydCwgc28gd2UgYXBwZW5kIGEgbWFqb3IgdmVyc2lvbiB0byB0aGUgbmFtZS4KLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgOzsKIAogYWl4WzQtOV0qKQpAQCAtMjE5MTYsNDEgKzIyNTQ5LDkxIEBACiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogICAgICMgQUlYIDUgc3VwcG9ydHMgSUE2NAotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBlbHNlCiAgICAgIyBXaXRoIEdDQyB1cCB0byAyLjk1LngsIGNvbGxlY3QyIHdvdWxkIGNyZWF0ZSBhbiBpbXBvcnQgZmlsZQogICAgICMgZm9yIGRlcGVuZGVuY2UgbGlicmFyaWVzLiAgVGhlIGltcG9ydCBmaWxlIHdvdWxkIHN0YXJ0IHdpdGgKLSAgICAjIHRoZSBsaW5lIGAjISAuJy4gIFRoaXMgd291bGQgY2F1c2UgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5IHRvCi0gICAgIyBkZXBlbmQgb24gYC4nLCBhbHdheXMgYW4gaW52YWxpZCBsaWJyYXJ5LiAgVGhpcyB3YXMgZml4ZWQgaW4KKyAgICAjIHRoZSBsaW5lICcjISAuJy4gIFRoaXMgd291bGQgY2F1c2UgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5IHRvCisgICAgIyBkZXBlbmQgb24gJy4nLCBhbHdheXMgYW4gaW52YWxpZCBsaWJyYXJ5LiAgVGhpcyB3YXMgZml4ZWQgaW4KICAgICAjIGRldmVsb3BtZW50IHNuYXBzaG90cyBvZiBHQ0MgcHJpb3IgdG8gMy4wLgogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgIGFpeDQgfCBhaXg0LlswMV0gfCBhaXg0LlswMV0uKikKICAgICAgIGlmIHsgZWNobyAnI2lmIF9fR05VQ19fID4gMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA5NyknCiAJICAgZWNobyAnIHllcyAnCi0JICAgZWNobyAnI2VuZGlmJzsgfSB8ICR7Q0N9IC1FIC0gfCAkR1JFUCB5ZXMgPiAvZGV2L251bGw7IHRoZW4KKwkgICBlY2hvICcjZW5kaWYnOyB9IHwgJENDIC1FIC0gfCAkR1JFUCB5ZXMgPiAvZGV2L251bGw7IHRoZW4KIAk6CiAgICAgICBlbHNlCiAJY2FuX2J1aWxkX3NoYXJlZD1ubwogICAgICAgZmkKICAgICAgIDs7CiAgICAgZXNhYwotICAgICMgQUlYIChvbiBQb3dlciopIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIGN1cnJlbnRseSB3ZSBjYW4gbm90IGhhcmRjb2RlIGNvcnJlY3QKKyAgICAjIFVzaW5nIEltcG9ydCBGaWxlcyBhcyBhcmNoaXZlIG1lbWJlcnMsIGl0IGlzIHBvc3NpYmxlIHRvIHN1cHBvcnQKKyAgICAjIGZpbGVuYW1lLWJhc2VkIHZlcnNpb25pbmcgb2Ygc2hhcmVkIGxpYnJhcnkgYXJjaGl2ZXMgb24gQUlYLiBXaGlsZQorICAgICMgdGhpcyB3b3VsZCB3b3JrIGZvciBib3RoIHdpdGggYW5kIHdpdGhvdXQgcnVudGltZSBsaW5raW5nLCBpdCB3aWxsCisgICAgIyBwcmV2ZW50IHN0YXRpYyBsaW5raW5nIG9mIHN1Y2ggYXJjaGl2ZXMuIFNvIHdlIGRvIGZpbGVuYW1lLWJhc2VkCisgICAgIyBzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIHdpdGggLnNvIGV4dGVuc2lvbiBvbmx5LCB3aGljaCBpcyB1c2VkCisgICAgIyB3aGVuIGJvdGggcnVudGltZSBsaW5raW5nIGFuZCBzaGFyZWQgbGlua2luZyBpcyBlbmFibGVkLgorICAgICMgVW5mb3J0dW5hdGVseSwgcnVudGltZSBsaW5raW5nIG1heSBpbXBhY3QgcGVyZm9ybWFuY2UsIHNvIHdlIGRvCisgICAgIyBub3Qgd2FudCB0aGlzIHRvIGJlIHRoZSBkZWZhdWx0IGV2ZW50dWFsbHkuIEFsc28sIHdlIHVzZSB0aGUKKyAgICAjIHZlcnNpb25lZCAuc28gbGlicyBmb3IgZXhlY3V0YWJsZXMgb25seSBpZiB0aGVyZSBpcyB0aGUgLWJydGwKKyAgICAjIGxpbmtlciBmbGFnIGluIExERkxBR1MgYXMgd2VsbCwgb3IgLS13aXRoLWFpeC1zb25hbWU9c3ZyNCBvbmx5LgorICAgICMgVG8gYWxsb3cgZm9yIGZpbGVuYW1lLWJhc2VkIHZlcnNpb25pbmcgc3VwcG9ydCwgd2UgbmVlZCB0byBjcmVhdGUKKyAgICAjIGxpYk5BTUUuc28uViBhcyBhbiBhcmNoaXZlIGZpbGUsIGNvbnRhaW5pbmc6CisgICAgIyAqKSBhbiBJbXBvcnQgRmlsZSwgcmVmZXJyaW5nIHRvIHRoZSB2ZXJzaW9uZWQgZmlsZW5hbWUgb2YgdGhlCisgICAgIyAgICBhcmNoaXZlIGFzIHdlbGwgYXMgdGhlIHNoYXJlZCBhcmNoaXZlIG1lbWJlciwgdGVsbGluZyB0aGUKKyAgICAjICAgIGJpdHdpZHRoICgzMiBvciA2NCkgb2YgdGhhdCBzaGFyZWQgb2JqZWN0LCBhbmQgcHJvdmlkaW5nIHRoZQorICAgICMgICAgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzIG9mIHRoYXQgc2hhcmVkIG9iamVjdCwgZXZlbnR1YWxseQorICAgICMgICAgZGVjb3JhdGVkIHdpdGggdGhlICd3ZWFrJyBrZXl3b3JkCisgICAgIyAqKSB0aGUgc2hhcmVkIG9iamVjdCB3aXRoIHRoZSBGX0xPQURPTkxZIGZsYWcgc2V0LCB0byByZWFsbHkgYXZvaWQKKyAgICAjICAgIGl0IGJlaW5nIHNlZW4gYnkgdGhlIGxpbmtlci4KKyAgICAjIEF0IHJ1biB0aW1lIHdlIGJldHRlciB1c2UgdGhlIHJlYWwgZmlsZSByYXRoZXIgdGhhbiBhbm90aGVyIHN5bWxpbmssCisgICAgIyBidXQgZm9yIGxpbmsgdGltZSB3ZSBjcmVhdGUgdGhlIHN5bWxpbmsgbGliTkFNRS5zbyAtPiBsaWJOQU1FLnNvLlYKKworICAgIGNhc2UgJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyBpbgorICAgICMgQUlYIChvbiBQb3dlciopIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIGN1cnJlbnRseSB3ZSBjYW5ub3QgaGFyZGNvZGUgY29ycmVjdAogICAgICMgc29uYW1lIGludG8gZXhlY3V0YWJsZS4gUHJvYmFibHkgd2UgY2FuIGFkZCB2ZXJzaW9uaW5nIHN1cHBvcnQgdG8KICAgICAjIGNvbGxlY3QyLCBzbyBhZGRpdGlvbmFsIGxpbmtzIGNhbiBiZSB1c2VmdWwgaW4gZnV0dXJlLgotICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorICAgIGFpeCx5ZXMpICMgdHJhZGl0aW9uYWwgbGlidG9vbAorICAgICAgZHluYW1pY19saW5rZXI9J0FJWCB1bnZlcnNpb25hYmxlIGxpYi5zbycKICAgICAgICMgSWYgdXNpbmcgcnVuIHRpbWUgbGlua2luZyAob24gQUlYIDQuMiBvciBsYXRlcikgdXNlIGxpYjxuYW1lPi5zbwogICAgICAgIyBpbnN0ZWFkIG9mIGxpYjxuYW1lPi5hIHRvIGxldCBwZW9wbGUga25vdyB0aGF0IHRoZXNlIGFyZSBub3QKICAgICAgICMgdHlwaWNhbCBBSVggc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIGVsc2UKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICAgIDs7CisgICAgYWl4LG5vKSAjIHRyYWRpdGlvbmFsIEFJWCBvbmx5CisgICAgICBkeW5hbWljX2xpbmtlcj0nQUlYIGxpYi5hKGxpYi5zby5WKScKICAgICAgICMgV2UgcHJlc2VydmUgLmEgYXMgZXh0ZW5zaW9uIGZvciBzaGFyZWQgbGlicmFyaWVzIHRocm91Z2ggQUlYNC4yCiAgICAgICAjIGFuZCBsYXRlciB3aGVuIHdlIGFyZSBub3QgZG9pbmcgcnVuIHRpbWUgbGlua2luZy4KLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0uYSAkbGlibmFtZS5hJwotICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgICBmaQorICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlLmEgJGxpYm5hbWUuYScKKyAgICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCisgICAgICA7OworICAgIHN2cjQsKikgIyBmdWxsIHN2cjQgb25seQorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuc28uVigkc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubykiCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgICAgIyBXZSBkbyBub3Qgc3BlY2lmeSBhIHBhdGggaW4gSW1wb3J0IEZpbGVzLCBzbyBMSUJQQVRIIGZpcmVzLgorICAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgICAgOzsKKyAgICAqLHllcykgIyBib3RoLCBwcmVmZXIgc3ZyNAorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuc28uVigkc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubyksIGxpYi5hKGxpYi5zby5WKSIKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgICAjIHVucHJlZmVycmVkIHNoYXJlZGxpYiBsaWJOQU1FLmEgbmVlZHMgZXh0cmEgaGFuZGxpbmcKKyAgICAgIHBvc3RpbnN0YWxsX2NtZHM9J3Rlc3QgLW4gIiRsaW5rbmFtZSIgfHwgbGlua25hbWU9IiRyZWFsbmFtZSJ+ZnVuY19zdHJpcG5hbWUgIiIgIi5zbyIgIiRsaW5rbmFtZSJ+JGluc3RhbGxfc2hhcmVkX3Byb2cgIiRkaXIvJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC4kbGliZXh0IiAiJGRlc3RkaXIvJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC4kbGliZXh0In50ZXN0IC16ICIkdHN0cmlwbWUiIHx8IHRlc3QgLXogIiRzdHJpcGxpYiIgfHwgJHN0cmlwbGliICIkZGVzdGRpci8kZnVuY19zdHJpcG5hbWVfcmVzdWx0LiRsaWJleHQiJworICAgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdmb3IgbiBpbiAkbGlicmFyeV9uYW1lcyAkb2xkX2xpYnJhcnk7IGRvIDo7IGRvbmV+ZnVuY19zdHJpcG5hbWUgIiIgIi5zbyIgIiRuIn50ZXN0ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IiA9ICIkbiIgfHwgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuJGxpYmV4dCInCisgICAgICAjIFdlIGRvIG5vdCBzcGVjaWZ5IGEgcGF0aCBpbiBJbXBvcnQgRmlsZXMsIHNvIExJQlBBVEggZmlyZXMuCisgICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgICAgICA7OworICAgICosbm8pICMgYm90aCwgcHJlZmVyIGFpeAorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuYShsaWIuc28uViksIGxpYi5zby5WKCRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vKSIKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZS5hICRsaWJuYW1lLmEnCisgICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJworICAgICAgIyB1bnByZWZlcnJlZCBzaGFyZWRsaWIgbGliTkFNRS5zby5WIGFuZCBzeW1saW5rIGxpYk5BTUUuc28gbmVlZCBleHRyYSBoYW5kbGluZworICAgICAgcG9zdGluc3RhbGxfY21kcz0ndGVzdCAteiAiJGRsbmFtZSIgfHwgJGluc3RhbGxfc2hhcmVkX3Byb2cgJGRpci8kZGxuYW1lICRkZXN0ZGlyLyRkbG5hbWV+dGVzdCAteiAiJHRzdHJpcG1lIiB8fCB0ZXN0IC16ICIkc3RyaXBsaWIiIHx8ICRzdHJpcGxpYiAkZGVzdGRpci8kZGxuYW1lfnRlc3QgLW4gIiRsaW5rbmFtZSIgfHwgbGlua25hbWU9JHJlYWxuYW1lfmZ1bmNfc3RyaXBuYW1lICIiICIuYSIgIiRsaW5rbmFtZSJ+KGNkICIkZGVzdGRpciIgJiYgJExOX1MgLWYgJGRsbmFtZSAkZnVuY19zdHJpcG5hbWVfcmVzdWx0LnNvKScKKyAgICAgIHBvc3R1bmluc3RhbGxfY21kcz0ndGVzdCAteiAiJGRsbmFtZSIgfHwgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRkbG5hbWUifmZvciBuIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8gOjsgZG9uZX5mdW5jX3N0cmlwbmFtZSAiIiAiLmEiICIkbiJ+ZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuc28iJworICAgICAgOzsKKyAgICBlc2FjCiAgICAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICiAgIGZpCiAgIDs7CkBAIC0yMTk2MCwxOCArMjI2NDMsMTggQEAKICAgcG93ZXJwYykKICAgICAjIFNpbmNlIEp1bHkgMjAwNyBBbWlnYU9TNCBvZmZpY2lhbGx5IHN1cHBvcnRzIC5zbyBsaWJyYXJpZXMuCiAgICAgIyBXaGVuIGNvbXBpbGluZyB0aGUgZXhlY3V0YWJsZSwgYWRkIC11c2UtZHlubGQgLUxzb2JqczogdG8gdGhlIGNvbXBpbGVsaW5lLgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgICA7OwogICBtNjhrKQogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuaXhsaWJyYXJ5ICRsaWJuYW1lLmEnCiAgICAgIyBDcmVhdGUgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSBlbnRyaWVzIGluIC9zeXMvbGlicy4KLSAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKKyAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCiAgICAgOzsKICAgZXNhYwogICA7OwogCiBiZW9zKikKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaGFyZWRfZXh0JwogICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgbGQuc28iCiAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgIDs7CkBAIC0yMTk3OSw4ICsyMjY2Miw4IEBACiBic2RpWzQ1XSopCiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3NobGliIC91c3IvbGliIC91c3IvWDExL2xpYiAvdXNyL2NvbnRyaWIvbGliIC9saWIgL3Vzci9sb2NhbC9saWIiCkBAIC0yMTk5Miw3ICsyMjY3NSw3IEBACiAKIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgdmVyc2lvbl90eXBlPXdpbmRvd3MKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIHNocmV4dF9jbWRzPS5kbGwKICAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogCkBAIC0yMjAwMSw4ICsyMjY4NCw4IEBACiAgICAgIyBnY2MKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJGZpbGVgfgorICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJGJhc2VfZmlsZSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CiAgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CiAgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KICAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZX4KQEAgLTIyMDE4LDE2ICsyMjcwMSwxNiBAQAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBjeWd3aW4qKQogICAgICAgIyBDeWd3aW4gRExMcyB1c2UgJ2N5ZycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCi0gICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL2N5Zy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJGxpYm5hbWUgfCBzZWQgLWUgJ3MvXmxpYi9jeWcvJ2BgZWNobyAkcmVsZWFzZSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHZlcnN1ZmZpeCRzaGFyZWRfZXh0JwogCiAgICAgICA7OwogICAgIG1pbmd3KiB8IGNlZ2NjKikKICAgICAgICMgTWluR1cgRExMcyB1c2UgdHJhZGl0aW9uYWwgJ2xpYicgcHJlZml4Ci0gICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWVgZWNobyAkcmVsZWFzZSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHZlcnN1ZmZpeCRzaGFyZWRfZXh0JwogICAgICAgOzsKICAgICBwdzMyKikKICAgICAgICMgcHczMiBETExzIHVzZSAncHcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwotICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAkbGlibmFtZSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHJlbGVhc2UgfCAkU0VEIC1lICdzL1suXS8tL2cnYCR2ZXJzdWZmaXgkc2hhcmVkX2V4dCcKICAgICAgIDs7CiAgICAgZXNhYwogICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCkBAIC0yMjAzNiw4ICsyMjcxOSw4IEBACiAgICosY2wqKQogICAgICMgTmF0aXZlIE1TVkMKICAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWVgZWNobyAkcmVsZWFzZSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHZlcnN1ZmZpeCRzaGFyZWRfZXh0JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmxpYicKIAogICAgIGNhc2UgJGJ1aWxkX29zIGluCiAgICAgbWluZ3cqKQpAQCAtMjIwNjQsNyArMjI3NDcsNyBAQAogICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKICAgICAgIDs7CiAgICAgKikKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0kTElCCiAgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KICAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KICAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKQEAgLTIyMDc3LDggKzIyNzYwLDggQEAKICAgICBlc2FjCiAKICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0gICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCRmaWxlYH4KKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCRiYXNlX2ZpbGUnXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgogICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgogICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CiAgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCkBAIC0yMjA5MSw3ICsyMjc3NCw3IEBACiAKICAgKikKICAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lYGVjaG8gJHJlbGVhc2UgfCAkU0VEIC1lICdzL1suXS8tL2cnYCR2ZXJzdWZmaXgkc2hhcmVkX2V4dCAkbGlibmFtZS5saWInCiAgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgICA7OwogICBlc2FjCkBAIC0yMjEwNCw4ICsyMjc4Nyw4IEBACiAgIHZlcnNpb25fdHlwZT1kYXJ3aW4KICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHttYWpvcn0kc2hhcmVkX2V4dCAke2xpYm5hbWV9JHNoYXJlZF9leHQnCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7bWFqb3J9JHNoYXJlZF9leHQnCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRtYWpvciRzaGFyZWRfZXh0ICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJG1ham9yJHNoYXJlZF9leHQnCiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgc2hsaWJwYXRoX3Zhcj1EWUxEX0xJQlJBUllfUEFUSAogICBzaHJleHRfY21kcz0nYHRlc3QgLiRtb2R1bGUgPSAueWVzICYmIGVjaG8gLnNvIHx8IGVjaG8gLmR5bGliYCcKQEAgLTIyMTE3LDggKzIyODAwLDggQEAKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICA7OwogCkBAIC0yMjEzNiwxMiArMjI4MTksMTMgQEAKICAgdmVyc2lvbl90eXBlPWZyZWVic2QtJG9iamZvcm1hdAogICBjYXNlICR2ZXJzaW9uX3R5cGUgaW4KICAgICBmcmVlYnNkLWVsZiopCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgICAgICBuZWVkX3ZlcnNpb249bm8KICAgICAgIG5lZWRfbGliX3ByZWZpeD1ubwogICAgICAgOzsKICAgICBmcmVlYnNkLSopCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCcKICAgICAgIG5lZWRfdmVyc2lvbj15ZXMKICAgICAgIDs7CiAgIGVzYWMKQEAgLTIyMTcxLDEwICsyMjg1NSwxMCBAQAogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBydW50aW1lX2xvYWRlciIKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR7bWFqb3J9ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCiAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgIDs7CkBAIC0yMjE5MiwxNCArMjI4NzYsMTUgQEAKICAgICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgZGxkLnNvIgogICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcyAjIFVubGVzcyArbm9lbnZ2YXIgaXMgc3BlY2lmaWVkLgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICAgaWYgdGVzdCAiWCRIUFVYX0lBNjRfTU9ERSIgPSBYMzI7IHRoZW4KKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKKyAgICBpZiB0ZXN0IDMyID0gIiRIUFVYX0lBNjRfTU9ERSI7IHRoZW4KICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvaHB1eDMyIC91c3IvbG9jYWwvbGliL2hwdXgzMiAvdXNyL2xvY2FsL2xpYiIKKyAgICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPS91c3IvbGliL2hwdXgzMgogICAgIGVsc2UKICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvaHB1eDY0IC91c3IvbG9jYWwvbGliL2hwdXg2NCIKKyAgICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPS91c3IvbGliL2hwdXg2NAogICAgIGZpCi0gICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwogICAgIDs7CiAgIGhwcGEqNjQqKQogICAgIHNocmV4dF9jbWRzPScuc2wnCkBAIC0yMjIwNyw4ICsyMjg5Miw4IEBACiAgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbCIKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSCAjIEhvdyBzaG91bGQgd2UgaGFuZGxlIFNITElCX1BBVEgKICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzICMgVW5sZXNzICtub2VudnZhciBpcyBzcGVjaWZpZWQuCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL3BhMjBfNjQgL3Vzci9jY3MvbGliL3BhMjBfNjQiCiAgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwogICAgIDs7CkBAIC0yMjIxNyw4ICsyMjkwMiw4IEBACiAgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbCIKICAgICBzaGxpYnBhdGhfdmFyPVNITElCX1BBVEgKICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8gIyArcyBpcyByZXF1aXJlZCB0byBlbmFibGUgU0hMSUJfUEFUSAotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgICAgOzsKICAgZXNhYwogICAjIEhQLVVYIHJ1bnMgKnJlYWxseSogc2xvd2x5IHVubGVzcyBzaGFyZWQgbGlicmFyaWVzIGFyZSBtb2RlIDU1NSwgLi4uCkBAIC0yMjIzMSw4ICsyMjkxNiw4IEBACiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIGR5bmFtaWNfbGlua2VyPSdJbnRlcml4IDMueCBsZC5zby4xIChQRSwgbGlrZSBFTEYpJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KQEAgLTIyMjQzLDcgKzIyOTI4LDcgQEAKICAgY2FzZSAkaG9zdF9vcyBpbgogICAgIG5vbnN0b3B1eCopIHZlcnNpb25fdHlwZT1ub25zdG9wdXggOzsKICAgICAqKQotCWlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwlpZiB0ZXN0IHllcyA9ICIkbHRfY3ZfcHJvZ19nbnVfbGQiOyB0aGVuCiAJCXZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKIAllbHNlCiAJCXZlcnNpb25fdHlwZT1pcml4CkBAIC0yMjI1MSw4ICsyMjkzNiw4IEBACiAgIGVzYWMKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0ICRsaWJuYW1lJHNoYXJlZF9leHQnCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgaXJpeDUqIHwgbm9uc3RvcHV4KikKICAgICBsaWJzdWZmPSBzaGxpYnN1ZmY9CkBAIC0yMjI3MSw4ICsyMjk1Niw4IEBACiAgIGVzYWMKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZJHtzaGxpYnN1ZmZ9X1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIke2xpYnN1ZmZ9IC9saWIke2xpYnN1ZmZ9IC91c3IvbG9jYWwvbGliJHtsaWJzdWZmfSIKLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJHtsaWJzdWZmfSAvbGliJHtsaWJzdWZmfSIKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiRsaWJzdWZmIC9saWIkbGlic3VmZiAvdXNyL2xvY2FsL2xpYiRsaWJzdWZmIgorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIkbGlic3VmZiAvbGliJGxpYnN1ZmYiCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgOzsKIApAQCAtMjIyODEsMTMgKzIyOTY2LDMzIEBACiAgIGR5bmFtaWNfbGlua2VyPW5vCiAgIDs7CiAKK2xpbnV4KmFuZHJvaWQqKQorICB2ZXJzaW9uX3R5cGU9bm9uZSAjIEFuZHJvaWQgZG9lc24ndCBzdXBwb3J0IHZlcnNpb25lZCBsaWJyYXJpZXMuCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQnCisgIGZpbmlzaF9jbWRzPQorICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisKKyAgIyBUaGlzIGltcGxpZXMgbm8gZmFzdF9pbnN0YWxsLCB3aGljaCBpcyB1bmFjY2VwdGFibGUuCisgICMgU29tZSByZXdvcmsgd2lsbCBiZSBuZWVkZWQgdG8gYWxsb3cgZm9yIGZhc3RfaW5zdGFsbAorICAjIGJlZm9yZSB0aGlzIGNhbiBiZSBlbmFibGVkLgorICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisKKyAgZHluYW1pY19saW5rZXI9J0FuZHJvaWQgbGlua2VyJworICAjIERvbid0IGVtYmVkIC1ycGF0aCBkaXJlY3RvcmllcyBzaW5jZSB0aGUgbGlua2VyIGRvZXNuJ3Qgc3VwcG9ydCB0aGVtLgorICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJworICA7OworCiAjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCiBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUgfCBnbnUqKQogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCkBAIC0yMjMzMSw3ICsyMzAzNiwxMiBAQAogICAjIGJlZm9yZSB0aGlzIGNhbiBiZSBlbmFibGVkLgogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAKLSAgIyBBcHBlbmQgbGQuc28uY29uZiBjb250ZW50cyB0byB0aGUgc2VhcmNoIHBhdGgKKyAgIyBJZGVhbGx5LCB3ZSBjb3VsZCB1c2UgbGRjb25maWcgdG8gcmVwb3J0ICphbGwqIGRpcmVjdG9yZXMgd2hpY2ggYXJlCisgICMgc2VhcmNoZWQgZm9yIGxpYnJhcmllcywgaG93ZXZlciB0aGlzIGlzIHN0aWxsIG5vdCBwb3NzaWJsZS4gIEFzaWRlIGZyb20gbm90CisgICMgYmVpbmcgY2VydGFpbiAvc2Jpbi9sZGNvbmZpZyBpcyBhdmFpbGFibGUsIGNvbW1hbmQKKyAgIyAnbGRjb25maWcgLU4gLVggLXYgfCBncmVwIF4vJyBvbiA2NGJpdCBGZWRvcmEgZG9lcyBub3QgcmVwb3J0IC91c3IvbGliNjQsCisgICMgZXZlbiB0aG91Z2ggaXQgaXMgc2VhcmNoZWQgYXQgcnVuLXRpbWUuICBUcnkgdG8gZG8gdGhlIGJlc3QgZ3Vlc3MgYnkKKyAgIyBhcHBlbmRpbmcgbGQuc28uY29uZiBjb250ZW50cyAoYW5kIGluY2x1ZGVzKSB0byB0aGUgc2VhcmNoIHBhdGguCiAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCiAgICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXCQyKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcJDA7IHNraXAgPSAwOyB9JyA8IC9ldGMvbGQuc28uY29uZiB8ICRTRUQgLWUgJ3MvIy4qLy87L15bCSBdKmh3Y2FwWwkgXS9kO3MvWzosCV0vIC9nO3MvPVtePV0qJC8vO3MvPVtePSBdKiAvIC9nO3MvIi8vZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAkbHRfbGRfZXh0cmEiCkBAIC0yMjM2MywxMiArMjMwNzMsMTIgQEAKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQkdmVyc3VmZml4JwogICAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1tICRsaWJkaXInCiAgICAgZHluYW1pY19saW5rZXI9J05ldEJTRCAoYS5vdXQpIGxkLnNvJwogICBlbHNlCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICAgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0QgbGQuZWxmX3NvJwogICBmaQogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMjIzNzgsNyArMjMwODgsNyBAQAogCiBuZXdzb3M2KQogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgOzsKQEAgLTIyMzg3LDU4ICsyMzA5Nyw2OCBAQAogICB2ZXJzaW9uX3R5cGU9cW54CiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgZHluYW1pY19saW5rZXI9J2xkcW54LnNvJwogICA7OwogCi1vcGVuYnNkKikKK29wZW5ic2QqIHwgYml0cmlnKikKICAgdmVyc2lvbl90eXBlPXN1bm9zCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9L3Vzci9saWIKICAgbmVlZF9saWJfcHJlZml4PW5vCi0gICMgU29tZSBvbGRlciB2ZXJzaW9ucyBvZiBPcGVuQlNEICgzLjMgYXQgbGVhc3QpICpkbyogbmVlZCB2ZXJzaW9uZWQgbGlicy4KLSAgY2FzZSAkaG9zdF9vcyBpbgotICAgIG9wZW5ic2QzLjMgfCBvcGVuYnNkMy4zLiopCW5lZWRfdmVyc2lvbj15ZXMgOzsKLSAgICAqKQkJCQluZWVkX3ZlcnNpb249bm8gIDs7Ci0gIGVzYWMKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiOyB0aGVuCisgICAgbmVlZF92ZXJzaW9uPW5vCisgIGVsc2UKKyAgICBuZWVkX3ZlcnNpb249eWVzCisgIGZpCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCcKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW0gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgotICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgIG9wZW5ic2QyLls4OV0gfCBvcGVuYnNkMi5bODldLiopCi0Jc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0JOzsKLSAgICAgICopCi0Jc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotCTs7Ci0gICAgICBlc2FjCi0gIGVsc2UKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0gIGZpCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgOzsKIAogb3MyKikKICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIHZlcnNpb25fdHlwZT13aW5kb3dzCisgIHNocmV4dF9jbWRzPS5kbGwKKyAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fSAkbGlibmFtZS5hJworICAjIE9TLzIgY2FuIG9ubHkgbG9hZCBhIERMTCB3aXRoIGEgYmFzZSBuYW1lIG9mIDggY2hhcmFjdGVycyBvciBsZXNzLgorICBzb25hbWVfc3BlYz0nYHRlc3QgLW4gIiRvczJkbGxuYW1lIiAmJiBsaWJuYW1lPSIkb3MyZGxsbmFtZSI7CisgICAgdj0kKCRFQ0hPICRyZWxlYXNlJHZlcnN1ZmZpeCB8IHRyIC1kIC4tKTsKKyAgICBuPSQoJEVDSE8gJGxpYm5hbWUgfCBjdXQgLWIgLSQoKDggLSAkeyN2fSkpIHwgdHIgLiBfKTsKKyAgICAkRUNITyAkbiR2YCRzaGFyZWRfZXh0JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1fZGxsLiRsaWJleHQnCiAgIGR5bmFtaWNfbGlua2VyPSdPUy8yIGxkLmV4ZScKLSAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICisgIHNobGlicGF0aF92YXI9QkVHSU5MSUJQQVRICisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYworICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwkZmlsZWB+CisgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJGJhc2VfZmlsZSdcJydpOyAkRUNITyBcJGRsbmFtZSdcJydgfgorICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKyAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWV+CisgICAgY2htb2QgYSt4IFwkZGxkaXIvJGRsbmFtZX4KKyAgICBpZiB0ZXN0IC1uICdcJyckc3RyaXBtZSdcJycgJiYgdGVzdCAtbiAnXCcnJHN0cmlwbGliJ1wnJzsgdGhlbgorICAgICAgZXZhbCAnXCcnJHN0cmlwbGliIFwkZGxkaXIvJGRsbmFtZSdcJycgfHwgZXhpdCBcJD87CisgICAgZmknCisgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyAkRUNITyBcJGRsbmFtZSdcJydgfgorICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisgICAgJFJNIFwkZGxwYXRoJwogICA7OwogCiBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCiAgIHZlcnNpb25fdHlwZT1vc2YKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3Ivc2hsaWIgL3Vzci9jY3MvbGliIC91c3IvbGliL2NtcGxycy9jYyAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiAvdmFyL3NobGliIgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwogICA7OwogCiByZG9zKikKQEAgLTIyNDQ5LDggKzIzMTY5LDggQEAKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwpAQCAtMjI0NjAsMTEgKzIzMTgwLDExIEBACiAKIHN1bm9zNCopCiAgIHZlcnNpb25fdHlwZT1zdW5vcwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCR2ZXJzdWZmaXgnCiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3Vzci9ldGMiIGxkY29uZmlnICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICBpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCiAgICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIGZpCiAgIG5lZWRfdmVyc2lvbj15ZXMKQEAgLTIyNDcyLDggKzIzMTkyLDggQEAKIAogc3lzdjQgfCBzeXN2NC4zKikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBjYXNlICRob3N0X3ZlbmRvciBpbgogICAgIHNuaSkKQEAgLTIyNDk0LDI0ICsyMzIxNCwyNCBAQAogICA7OwogCiBzeXN2NCpNUCopCi0gIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KKyAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgogICAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hhcmVkX2V4dC4kdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQuJG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHNoYXJlZF9leHQuJG1ham9yJwogICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIGZpCiAgIDs7CiAKIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQotICB2ZXJzaW9uX3R5cGU9ZnJlZWJzZC1lbGYKKyAgdmVyc2lvbl90eXBlPXNjbwogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0ICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy91c3IvbG9jYWwvbGliIC91c3IvZ251L2xpYiAvdXNyL2Njcy9saWIgL3Vzci9saWIgL2xpYicKICAgZWxzZQogICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0nL3Vzci9jY3MvbGliIC91c3IvbGliJwpAQCAtMjI1MjksNyArMjMyNDksNyBAQAogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKQEAgLTIyNTM3LDggKzIzMjU3LDggQEAKIAogdXRzNCopCiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgOzsKIApAQCAtMjI1NDgsMjAgKzIzMjY4LDMyIEBACiBlc2FjCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGR5bmFtaWNfbGlua2VyIiA+JjUKICRhc19lY2hvICIkZHluYW1pY19saW5rZXIiID4mNjsgfQotdGVzdCAiJGR5bmFtaWNfbGlua2VyIiA9IG5vICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KK3Rlc3Qgbm8gPSAiJGR5bmFtaWNfbGlua2VyIiAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCiAKIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSJQQVRIICRzaGxpYnBhdGhfdmFyICRydW5wYXRoX3ZhciIKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCitpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0iJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIEdDQ19FWEVDX1BSRUZJWCBDT01QSUxFUl9QQVRIIExJQlJBUllfUEFUSCIKIGZpCiAKLWlmIHRlc3QgIiR7bHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjK3NldH0iID0gc2V0OyB0aGVuCi0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKK2lmIHRlc3Qgc2V0ID0gIiR7bHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjK3NldH0iOyB0aGVuCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0kbHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCiBmaQotaWYgdGVzdCAiJHtsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYytzZXR9IiA9IHNldDsgdGhlbgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIgorCitpZiB0ZXN0IHNldCA9ICIke2x0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjK3NldH0iOyB0aGVuCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYwogZmkKIAorIyByZW1lbWJlciB1bmF1Z21lbnRlZCBzeXNfbGliX2Rsc2VhcmNoX3BhdGggY29udGVudCBmb3IgbGlidG9vbCBzY3JpcHQgZGVjbHMuLi4KK2NvbmZpZ3VyZV90aW1lX2Rsc2VhcmNoX3BhdGg9JHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjCisKKyMgLi4uIGJ1dCBpdCBuZWVkcyBMVF9TWVNfTElCUkFSWV9QQVRIIG11bmdpbmcgZm9yIG90aGVyIGNvbmZpZ3VyZS10aW1lIGNvZGUKK2Z1bmNfbXVuZ2VfcGF0aF9saXN0IHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjICIkTFRfU1lTX0xJQlJBUllfUEFUSCIKKworIyB0byBiZSB1c2VkIGFzIGRlZmF1bHQgTFRfU1lTX0xJQlJBUllfUEFUSCB2YWx1ZSBpbiBnZW5lcmF0ZWQgbGlidG9vbAorY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aD0kTFRfU1lTX0xJQlJBUllfUEFUSAorCisKKwogCiAKIApAQCAtMjI2MDQsMTUgKzIzMzM2LDE1IEBACiBoYXJkY29kZV9hY3Rpb25fQ1hYPQogaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYIiB8fAogICAgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyX0NYWCIgfHwKLSAgIHRlc3QgIlgkaGFyZGNvZGVfYXV0b21hdGljX0NYWCIgPSAiWHllcyIgOyB0aGVuCisgICB0ZXN0IHllcyA9ICIkaGFyZGNvZGVfYXV0b21hdGljX0NYWCI7IHRoZW4KIAogICAjIFdlIGNhbiBoYXJkY29kZSBub24tZXhpc3RlbnQgZGlyZWN0b3JpZXMuCi0gIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3RfQ1hYIiAhPSBubyAmJgorICBpZiB0ZXN0IG5vICE9ICIkaGFyZGNvZGVfZGlyZWN0X0NYWCIgJiYKICAgICAgIyBJZiB0aGUgb25seSBtZWNoYW5pc20gdG8gYXZvaWQgaGFyZGNvZGluZyBpcyBzaGxpYnBhdGhfdmFyLCB3ZQogICAgICAjIGhhdmUgdG8gcmVsaW5rLCBvdGhlcndpc2Ugd2UgbWlnaHQgbGluayB3aXRoIGFuIGluc3RhbGxlZCBsaWJyYXJ5CiAgICAgICMgd2hlbiB3ZSBzaG91bGQgYmUgbGlua2luZyB3aXRoIGEgeWV0LXRvLWJlLWluc3RhbGxlZCBvbmUKLSAgICAgIyMgdGVzdCAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgQ1hYKSIgIT0gbm8gJiYKLSAgICAgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0xfQ1hYIiAhPSBubzsgdGhlbgorICAgICAjIyB0ZXN0IG5vICE9ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCBDWFgpIiAmJgorICAgICB0ZXN0IG5vICE9ICIkaGFyZGNvZGVfbWludXNfTF9DWFgiOyB0aGVuCiAgICAgIyBMaW5raW5nIGFsd2F5cyBoYXJkY29kZXMgdGhlIHRlbXBvcmFyeSBsaWJyYXJ5IGRpcmVjdG9yeS4KICAgICBoYXJkY29kZV9hY3Rpb25fQ1hYPXJlbGluawogICBlbHNlCkBAIC0yMjYyNywxMiArMjMzNTksMTIgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGFyZGNvZGVfYWN0aW9uX0NYWCIgPiY1CiAkYXNfZWNobyAiJGhhcmRjb2RlX2FjdGlvbl9DWFgiID4mNjsgfQogCi1pZiB0ZXN0ICIkaGFyZGNvZGVfYWN0aW9uX0NYWCIgPSByZWxpbmsgfHwKLSAgIHRlc3QgIiRpbmhlcml0X3JwYXRoX0NYWCIgPSB5ZXM7IHRoZW4KK2lmIHRlc3QgcmVsaW5rID0gIiRoYXJkY29kZV9hY3Rpb25fQ1hYIiB8fAorICAgdGVzdCB5ZXMgPSAiJGluaGVyaXRfcnBhdGhfQ1hYIjsgdGhlbgogICAjIEZhc3QgaW5zdGFsbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKICAgZW5hYmxlX2Zhc3RfaW5zdGFsbD1ubwotZWxpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyB8fAotICAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSBubzsgdGhlbgorZWxpZiB0ZXN0IHllcyA9ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiB8fAorICAgICB0ZXN0IG5vID0gIiRlbmFibGVfc2hhcmVkIjsgdGhlbgogICAjIEZhc3QgaW5zdGFsbGF0aW9uIGlzIG5vdCBuZWNlc3NhcnkKICAgZW5hYmxlX2Zhc3RfaW5zdGFsbD1uZWVkbGVzcwogZmkKQEAgLTIyNjU1LDcgKzIzMzg3LDcgQEAKICAgbHRfY3ZfcGF0aF9MRD0kbHRfc2F2ZV9wYXRoX0xECiAgIGx0X2N2X3Byb2dfZ251X2xkY3h4PSRsdF9jdl9wcm9nX2dudV9sZAogICBsdF9jdl9wcm9nX2dudV9sZD0kbHRfc2F2ZV93aXRoX2dudV9sZAotZmkgIyB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllcworZmkgIyB0ZXN0IHllcyAhPSAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIgogCiBhY19leHQ9YwogYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKQEAgLTIzOTMyLDcgKzI0NjY0LDcgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX213X19td3ZhbGlkY2hlY2tsIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX213X19td3ZhbGlkY2hlY2tsIiA+JjY7IH0KIGlmIHRlc3QgIngkYWNfY3ZfbGliX213X19td3ZhbGlkY2hlY2tsIiA9IHh5ZXM7IHRoZW4gOgotICBMSUJNPSItbG13IgorICBMSUJNPS1sbXcKIGZpCiAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY29zIGluIC1sbSIgPiY1CkBAIC0yNDAxNCw3ICsyNDc0Niw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9tX2NvcyIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9tX2NvcyIgPiY2OyB9CiBpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9tX2NvcyIgPSB4eWVzOyB0aGVuIDoKLSAgTElCTT0iLWxtIgorICBMSUJNPS1sbQogZmkKIAogICA7OwpAQCAtMjU0MjAsNyArMjYxNTIsNyBAQAogZmkKIAogCi1HTElCX1JFUT0yLjMyLjAKK0dMSUJfUkVRPTIuNDAuMAogCiAKIApAQCAtMjU1NjEsMTggKzI2MjkzLDEwIEBACiBpZiB0ZXN0ICIke2VuYWJsZV9nbGliX2Fzc2VydHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgogICBlbmFibGV2YWw9JGVuYWJsZV9nbGliX2Fzc2VydHM7IGVuYWJsZV9nbGliX2Fzc2VydGlvbnM9JGVuYWJsZXZhbAogZWxzZQotICBlbmFibGVfZ2xpYl9hc3NlcnRpb25zPWF1dG8KKyAgZW5hYmxlX2dsaWJfYXNzZXJ0aW9ucz15ZXMKIGZpCiAKIAotICBpZiB0ZXN0ICJ4JGVuYWJsZV9nbGliX2Fzc2VydGlvbnMiID0gInhhdXRvIjsgdGhlbgotICAgICAgICBpZiB0ZXN0ICJ4YGV4cHIgJFBBQ0tBR0VfVkVSU0lPTl9NSU5PUiAlIDJgIiA9ICJ4MSIgLWEgInhgZXhwciAkUEFDS0FHRV9WRVJTSU9OX01JQ1JPICc8JyA5MGAiID0gIngxIjsgdGhlbgotICAgICAgZW5hYmxlX2dsaWJfYXNzZXJ0aW9ucz15ZXMKLSAgICBlbHNlCi0gICAgICBlbmFibGVfZ2xpYl9hc3NlcnRpb25zPW5vCi0gICAgZmkKLSAgZmkKLQogICBpZiB0ZXN0ICJ4JGVuYWJsZV9nbGliX2Fzc2VydGlvbnMiID0gInhubyI7IHRoZW4KICAgICBHTElCX0VYVFJBX0NGTEFHUz0iJEdMSUJfRVhUUkFfQ0ZMQUdTIC1ER19ESVNBQkxFX0FTU0VSVCIKICAgZmkKQEAgLTI2OTE3LDYgKzI3NjQxLDQxIEBACiBmaQogCiAKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1Cc3ltYm9saWMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfQnN5bWJvbGljK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfQnN5bWJvbGljOworZWxzZQorICBTQVZFRF9MREZMQUdTPSIke0xERkxBR1N9IiBTQVZFRF9MSUJTPSIke0xJQlN9IgorICAgICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLUJzeW1ib2xpYy1mdW5jdGlvbnMgbGlua2VyIGZsYWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC1Cc3ltYm9saWMtZnVuY3Rpb25zIGxpbmtlciBmbGFnLi4uICIgPiY2OyB9CisgICAgICAgICAgICAgICBMREZMQUdTPS1XbCwtQnN5bWJvbGljLWZ1bmN0aW9ucworICAgICAgICAgICAgICAgTElCUz0KKyAgICAgICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CityZXR1cm4gMAorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfQnN5bWJvbGljPXllcworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9Cc3ltYm9saWM9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorICAgICAgICAgICAgICAgTERGTEFHUz0iJHtTQVZFRF9MREZMQUdTfSIgTElCUz0iJHtTQVZFRF9MSUJTfSIKK2ZpCisKKwogCiBIQVZFX0dUSzM9Tk8KIGlmIHRlc3QgIngkQlVJTERfRVhBTVBMRVMiID0gInh5ZXMiOyB0aGVuCkBAIC0yODEwNiw4ICsyODg2NSw4IEBACiAgICAgICBpZiB0ZXN0ICJ4eWVzIiA9ICJ4bm8iIC1vICJ4eWVzIiA9ICJ4IjsgdGhlbgogICAgIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU9YGRhdGUgLXUgIislWS0lbS0lZFQlSDolTVoiYAogICBlbGlmIHRlc3QgInh5ZXMiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICBpZiAoIGVjaG8geWVzIHwgZ3JlcCAnXjIwMS05MC05LTAtMTAtOS0wLTMwLTknID4vZGV2L251bGwgKSA7IHRoZW4KLSAgICAgIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU9eWVzCisgICAgICAgICAgICBpZiAoIGVjaG8gICIke3NyY2Rpcn0vZ3N0LXBsdWdpbnMtYmFkLmRvYXAiICB8IGdyZXAgJ14yMFsxLTldWzAtOV0tWzAtMV1bMC05XS1bMC0zXVswLTldJyA+L2Rldi9udWxsICkgOyB0aGVuCisgICAgICBHU1RfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FPSAiJHtzcmNkaXJ9L2dzdC1wbHVnaW5zLWJhZC5kb2FwIgogICAgIGVsc2UKICAgICAgICAgICAgIFlZWVlfTU1fREQ9YHNoICIke3NyY2Rpcn0vY29tbW9uL2V4dHJhY3QtcmVsZWFzZS1kYXRlLWZyb20tZG9hcC1maWxlIiAgJFBBQ0tBR0VfVkVSU0lPTl9NQUpPUi4kUEFDS0FHRV9WRVJTSU9OX01JTk9SLiRQQUNLQUdFX1ZFUlNJT05fTUlDUk8gICAiJHtzcmNkaXJ9L2dzdC1wbHVnaW5zLWJhZC5kb2FwIiBgOwogICAgICAgaWYgdGVzdCAieCRZWVlZX01NX0REIiAhPSAieCI7IHRoZW4KQEAgLTI4MTE4LDcgKzI4ODc3LDcgQEAKICAgICAgICAgR1NUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRT0iIgogICAgICAgZmkKICAgICBmaQotICAgIGVsaWYgKCBlY2hvIHllcyB8IGdyZXAgJ14yMDEtOTAtOS0wLTEwLTktMC0zMC05JyA+L2Rldi9udWxsICkgOyB0aGVuCisgICAgZWxpZiAoIGVjaG8geWVzIHwgZ3JlcCAnXjIwWzEtOV1bMC05XS1bMC0xXVswLTldLVswLTNdWzAtOV0nID4vZGV2L251bGwgKSA7IHRoZW4KICAgICBHU1RfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FPXllcwogICBlbHNlCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBTRVRfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FOiBpbnZhbGlkIGZpcnN0IGFyZ3VtZW50IiA+JjUKQEAgLTI4MTQ1LDggKzI4OTA0LDggQEAKICAgICAgIGlmIHRlc3QgInhubyIgPSAieG5vIiAtbyAieG5vIiA9ICJ4IjsgdGhlbgogICAgIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU9YGRhdGUgLXUgIislWS0lbS0lZFQlSDolTVoiYAogICBlbGlmIHRlc3QgInhubyIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgICAgIGlmICggZWNobyBubyB8IGdyZXAgJ14yMDEtOTAtOS0wLTEwLTktMC0zMC05JyA+L2Rldi9udWxsICkgOyB0aGVuCi0gICAgICBHU1RfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FPW5vCisgICAgICAgICAgICBpZiAoIGVjaG8gIHwgZ3JlcCAnXjIwWzEtOV1bMC05XS1bMC0xXVswLTldLVswLTNdWzAtOV0nID4vZGV2L251bGwgKSA7IHRoZW4KKyAgICAgIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU9CiAgICAgZWxzZQogICAgICAgICAgICAgWVlZWV9NTV9ERD1gc2ggIiR7c3JjZGlyfS9jb21tb24vZXh0cmFjdC1yZWxlYXNlLWRhdGUtZnJvbS1kb2FwLWZpbGUiICBgOwogICAgICAgaWYgdGVzdCAieCRZWVlZX01NX0REIiAhPSAieCI7IHRoZW4KQEAgLTI4MTU3LDcgKzI4OTE2LDcgQEAKICAgICAgICAgR1NUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRT0iIgogICAgICAgZmkKICAgICBmaQotICAgIGVsaWYgKCBlY2hvIG5vIHwgZ3JlcCAnXjIwMS05MC05LTAtMTAtOS0wLTMwLTknID4vZGV2L251bGwgKSA7IHRoZW4KKyAgICBlbGlmICggZWNobyBubyB8IGdyZXAgJ14yMFsxLTldWzAtOV0tWzAtMV1bMC05XS1bMC0zXVswLTldJyA+L2Rldi9udWxsICkgOyB0aGVuCiAgICAgR1NUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRT1ubwogICBlbHNlCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBTRVRfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FOiBpbnZhbGlkIGZpcnN0IGFyZ3VtZW50IiA+JjUKQEAgLTI4MjE4LDYgKzI4OTc3LDY5IEBACiBmaQogCiAKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1wbGF5ZXItdGVzdHMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3BsYXllcl90ZXN0cytzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfcGxheWVyX3Rlc3RzOworZmkKKworaWYgdGVzdCB4JHdpdGhfcGxheWVyX3Rlc3RzID0geHllczsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIndnZXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHdnZXQ7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1dHRVQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRXR0VUIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX1dHRVQ9IiRXR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9XR0VUPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX1dHRVQiICYmIGFjX2N2X3BhdGhfV0dFVD0ibm8iCisgIDs7Citlc2FjCitmaQorV0dFVD0kYWNfY3ZfcGF0aF9XR0VUCitpZiB0ZXN0IC1uICIkV0dFVCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRXR0VUIiA+JjUKKyRhc19lY2hvICIkV0dFVCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIGlmIHRlc3QgeCRXR0VUID0geG5vOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB3Z2V0IHJlcXVpcmVkIGZvciBHc3RQbGF5ZXIgdGVzdHMgYnV0IG5vdCBmb3VuZCAtIGRpc2FibGluZyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB3Z2V0IHJlcXVpcmVkIGZvciBHc3RQbGF5ZXIgdGVzdHMgYnV0IG5vdCBmb3VuZCAtIGRpc2FibGluZyIgPiYyO30KKyAgICB3aXRoX3BsYXllcl90ZXN0cz1ubworICBmaQorZmkKKyBpZiB0ZXN0ICJ4JHdpdGhfcGxheWVyX3Rlc3RzIiA9ICJ4eWVzIjsgdGhlbgorICBXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRT0KKyAgV0lUSF9HU1RfUExBWUVSX1RFU1RTX0ZBTFNFPScjJworZWxzZQorICBXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRT0nIycKKyAgV0lUSF9HU1RfUExBWUVSX1RFU1RTX0ZBTFNFPQorZmkKKworCiAjIHNldCBieSBBR19HU1RfUEFSU0VfU1VCU1lTVEVNX0RJU0FCTEVTIGFib3ZlCiBOT19XQVJOSU5HUz0iIgogCkBAIC0yODQ2MSw5MyArMjkyODMsNiBAQAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGZsYWdfb2siID4mNQogJGFzX2VjaG8gIiRmbGFnX29rIiA+JjY7IH0KIAotCi0gICAgICAgIGlmIHRlc3QgIngkRVJST1JfQ0ZMQUdTIiA9ICJ4IgotICAgIHRoZW4KLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHRvIHNlZSBpZiBjb21waWxlciB1bmRlcnN0YW5kcyAtZXJyd2Fybj0lYWxsIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHRvIHNlZSBpZiBjb21waWxlciB1bmRlcnN0YW5kcyAtZXJyd2Fybj0lYWxsLi4uICIgPiY2OyB9Ci0KLSAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gIENGTEFHUz0iJENGTEFHUyAtZXJyd2Fybj0lYWxsIgotCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBmbGFnX29rPXllcwotZWxzZQotICBmbGFnX29rPW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgotCi0gIGlmIHRlc3QgIlgkZmxhZ19vayIgPSBYeWVzIDsgdGhlbgotCi0gICAgICAgICAgRVJST1JfQ0ZMQUdTPSItZXJyd2Fybj0lYWxsIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAnbm8lRV9FTVBUWV9ERUNMQVJBVElPTicgXAotICAgICAgICAgICAgICAgICAgICdubyVFX1NUQVRFTUVOVF9OT1RfUkVBQ0hFRCcgXAotICAgICAgICAgICAgICAgICAgICdubyVFX0FSR1VFTUVOVF9NSVNNQVRDSCcgXAotICAgICAgICAgICAgICAgICAgICdubyVFX01BQ1JPX1JFREVGSU5FRCcgXAotICAgICAgICAgICAgICAgICAgICdubyVFX0xPT1BfTk9UX0VOVEVSRURfQVRfVE9QJwotICAgICAgICAgIGRvCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB0byBzZWUgaWYgY29tcGlsZXIgdW5kZXJzdGFuZHMgLWVycndhcm49JWFsbCwkZiIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB0byBzZWUgaWYgY29tcGlsZXIgdW5kZXJzdGFuZHMgLWVycndhcm49JWFsbCwkZi4uLiAiID4mNjsgfQotCi0gIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotICBDRkxBR1M9IiRDRkxBR1MgLWVycndhcm49JWFsbCwkZiIKLQotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgZmxhZ19vaz15ZXMKLWVsc2UKLSAgZmxhZ19vaz1ubwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKLQotICBpZiB0ZXN0ICJYJGZsYWdfb2siID0gWHllcyA7IHRoZW4KLQotICAgICAgICAgICAgICBFUlJPUl9DRkxBR1M9IiRFUlJPUl9DRkxBR1MsJGYiCi0KLSAgICB0cnVlCi0gIGVsc2UKLQotICAgIHRydWUKLSAgZmkKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRmbGFnX29rIiA+JjUKLSRhc19lY2hvICIkZmxhZ19vayIgPiY2OyB9Ci0KLSAgICAgICAgICBkb25lCi0KLSAgICB0cnVlCi0gIGVsc2UKLQotICAgIHRydWUKLSAgZmkKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRmbGFnX29rIiA+JjUKLSRhc19lY2hvICIkZmxhZ19vayIgPiY2OyB9Ci0KLSAgICBmaQogICBmaQogCiAgIGlmIHRlc3QgIngKQEAgLTI4OTAzLDEyMiArMjk2MzgsNiBAQAogCiAKIGZpCi0gICAgZWxzZQotCi0KLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHRvIHNlZSBpZiBjKysgY29tcGlsZXIgdW5kZXJzdGFuZHMgLWVycndhcm49JWFsbCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB0byBzZWUgaWYgYysrIGNvbXBpbGVyIHVuZGVyc3RhbmRzIC1lcnJ3YXJuPSVhbGwuLi4gIiA+JjY7IH0KLQotICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0gIENQUEZMQUdTPSIkQ1BQRkxBR1MgLWVycndhcm49JWFsbCIKLQotICBhY19leHQ9Y3BwCi1hY19jcHA9JyRDWFhDUFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENYWCAtYyAkQ1hYRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENYWCAtbyBjb25mdGVzdCRhY19leGVleHQgJENYWEZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY3h4X2NvbXBpbGVyX2dudQotCi0KLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQKLW1haW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jeHhfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgZmxhZ19vaz15ZXMKLWVsc2UKLSAgZmxhZ19vaz1ubwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MiCi0KLSAgaWYgdGVzdCAiWCRmbGFnX29rIiA9IFh5ZXMgOyB0aGVuCi0gICAgRVJST1JfQ1hYRkxBR1M9IiRFUlJPUl9DWFhGTEFHUyAtZXJyd2Fybj0lYWxsIgotICAgIHRydWUKLSAgZWxzZQotCi0gICAgdHJ1ZQotICBmaQotCi0gIGFjX2V4dD1jCi1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLQotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZmxhZ19vayIgPiY1Ci0kYXNfZWNobyAiJGZsYWdfb2siID4mNjsgfQotCi0gICAgICBpZiB0ZXN0ICJ4JEVSUk9SX0NYWEZMQUdTIiAhPSAieCI7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gJ25vJUVfRU1QVFlfREVDTEFSQVRJT04nIFwKLSAgICAgICAgICAgICAgICAgJ25vJUVfU1RBVEVNRU5UX05PVF9SRUFDSEVEJyBcCi0gICAgICAgICAgICAgICAgICdubyVFX0FSR1VFTUVOVF9NSVNNQVRDSCcgXAotICAgICAgICAgICAgICAgICAnbm8lRV9NQUNST19SRURFRklORUQnIFwKLSAgICAgICAgICAgICAgICAgJ25vJUVfTE9PUF9OT1RfRU5URVJFRF9BVF9UT1AnCi0gICAgICAgIGRvCi0KLQotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgdG8gc2VlIGlmIGMrKyBjb21waWxlciB1bmRlcnN0YW5kcyAtZXJyd2Fybj0lYWxsLCRmIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHRvIHNlZSBpZiBjKysgY29tcGlsZXIgdW5kZXJzdGFuZHMgLWVycndhcm49JWFsbCwkZi4uLiAiID4mNjsgfQotCi0gIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtZXJyd2Fybj0lYWxsLCRmIgotCi0gIGFjX2V4dD1jcHAKLWFjX2NwcD0nJENYWENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckQ1hYIC1jICRDWFhGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ1hYIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ1hYRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9jeHhfY29tcGlsZXJfZ251Ci0KLQotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2N4eF90cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBmbGFnX29rPXllcwotZWxzZQotICBmbGFnX29rPW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKLQotICBpZiB0ZXN0ICJYJGZsYWdfb2siID0gWHllcyA7IHRoZW4KLSAgICBFUlJPUl9DWFhGTEFHUz0iJEVSUk9SX0NYWEZMQUdTLCRmIgotICAgIHRydWUKLSAgZWxzZQotCi0gICAgdHJ1ZQotICBmaQotCi0gIGFjX2V4dD1jCi1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLQotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZmxhZ19vayIgPiY1Ci0kYXNfZWNobyAiJGZsYWdfb2siID4mNjsgfQotCi0gICAgICAgIGRvbmUKLSAgICAgIGZpCiAgICAgZmkKICAgZmkKIApAQCAtMjkzMzcsMTIyICsyOTk1Niw2IEBACiAKIAogZmkKLSAgICBlbHNlCi0KLQotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgdG8gc2VlIGlmIE9iamVjdGl2ZSBDIGNvbXBpbGVyIHVuZGVyc3RhbmRzIC1lcnJ3YXJuPSVhbGwiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgdG8gc2VlIGlmIE9iamVjdGl2ZSBDIGNvbXBpbGVyIHVuZGVyc3RhbmRzIC1lcnJ3YXJuPSVhbGwuLi4gIiA+JjY7IH0KLQotICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0gIENQUEZMQUdTPSIkQ1BQRkxBR1MgLWVycndhcm49JWFsbCIKLQotICBhY19leHQ9bQotYWNfY3BwPSckT0JKQ1BQICRDUFBGTEFHUycKLWFjX2NvbXBpbGU9JyRPQkpDIC1jICRPQkpDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJE9CSkMgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRPQkpDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9vYmpjX2NvbXBpbGVyX2dudQotCi0KLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQKLW1haW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9vYmpjX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGZsYWdfb2s9eWVzCi1lbHNlCi0gIGZsYWdfb2s9bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgQ1BQRkxBR1M9IiRzYXZlX0NQUEZMQUdTIgotCi0gIGlmIHRlc3QgIlgkZmxhZ19vayIgPSBYeWVzIDsgdGhlbgotICAgIEVSUk9SX09CSkNGTEFHUz0iJEVSUk9SX09CSkNGTEFHUyAtZXJyd2Fybj0lYWxsIgotICAgIHRydWUKLSAgZWxzZQotCi0gICAgdHJ1ZQotICBmaQotCi0gIGFjX2V4dD1jCi1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLQotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZmxhZ19vayIgPiY1Ci0kYXNfZWNobyAiJGZsYWdfb2siID4mNjsgfQotCi0gICAgICBpZiB0ZXN0ICJ4JEVSUk9SX09CSkNGTEFHUyIgIT0gIngiOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluICdubyVFX0VNUFRZX0RFQ0xBUkFUSU9OJyBcCi0gICAgICAgICAgICAgICAgICdubyVFX1NUQVRFTUVOVF9OT1RfUkVBQ0hFRCcgXAotICAgICAgICAgICAgICAgICAnbm8lRV9BUkdVRU1FTlRfTUlTTUFUQ0gnIFwKLSAgICAgICAgICAgICAgICAgJ25vJUVfTUFDUk9fUkVERUZJTkVEJyBcCi0gICAgICAgICAgICAgICAgICdubyVFX0xPT1BfTk9UX0VOVEVSRURfQVRfVE9QJwotICAgICAgICBkbwotCi0KLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHRvIHNlZSBpZiBPYmplY3RpdmUgQyBjb21waWxlciB1bmRlcnN0YW5kcyAtZXJyd2Fybj0lYWxsLCRmIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHRvIHNlZSBpZiBPYmplY3RpdmUgQyBjb21waWxlciB1bmRlcnN0YW5kcyAtZXJyd2Fybj0lYWxsLCRmLi4uICIgPiY2OyB9Ci0KLSAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotICBDUFBGTEFHUz0iJENQUEZMQUdTIC1lcnJ3YXJuPSVhbGwsJGYiCi0KLSAgYWNfZXh0PW0KLWFjX2NwcD0nJE9CSkNQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckT0JKQyAtYyAkT0JKQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLWFjX2xpbms9JyRPQkpDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkT0JKQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3Zfb2JqY19jb21waWxlcl9nbnUKLQotCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fb2JqY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBmbGFnX29rPXllcwotZWxzZQotICBmbGFnX29rPW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKLQotICBpZiB0ZXN0ICJYJGZsYWdfb2siID0gWHllcyA7IHRoZW4KLSAgICBFUlJPUl9PQkpDRkxBR1M9IiRFUlJPUl9PQkpDRkxBR1MsJGYiCi0gICAgdHJ1ZQotICBlbHNlCi0KLSAgICB0cnVlCi0gIGZpCi0KLSAgYWNfZXh0PWMKLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRmbGFnX29rIiA+JjUKLSRhc19lY2hvICIkZmxhZ19vayIgPiY2OyB9Ci0KLSAgICAgICAgZG9uZQotICAgICAgZmkKICAgICBmaQogICBmaQogCkBAIC0yOTcwMCwxMCArMzAyMDMsOSBAQAogIHZpZGVvbWVhc3VyZSBcCiAgbGluc3lzIFwKICBhcGV4c2luayBkYzEzOTQgXAotIGdzZXR0aW5ncyBcCiAgbXVzZXBhY2sgbmFzIHNkbCB0aW1pZGl0eSBcCi0gYWNtIHdpbmluZXQgXAotIHh2aWQgbHYyIHRlbGV0ZXh0ZGVjIHNuZGlvIGxpYnZpc3VhbCIKKyB3aW5pbmV0IFwKKyB4dmlkIGx2MiBzbmRpbyBsaWJ2aXN1YWwiCiAKIAogCkBAIC0yOTg3OSw2ICszMDM4MSw0OSBAQAogCiAKIAorICBHU1RfUExVR0lOU19BTEw9IiRHU1RfUExVR0lOU19BTEwgdmlkZW9mcmFtZV9hdWRpb2xldmVsIgorCisKKworICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdmlkZW9mcmFtZV9hdWRpb2xldmVsIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbDsKKyAgICAgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKyAgICAgICAgeWVzKSBnc3RfdXNlX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbD15ZXMgOzsKKyAgICAgICAgbm8pIGdzdF91c2VfdmlkZW9mcmFtZV9hdWRpb2xldmVsPW5vIDs7CisgICAgICAgICopIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS12aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwiICIkTElORU5PIiA1IDs7CisgICAgICAgZXNhYworCitlbHNlCisgIGdzdF91c2VfdmlkZW9mcmFtZV9hdWRpb2xldmVsPXllcworZmkKKworICBpZiB0ZXN0IHgkZ3N0X3VzZV92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwgPSB4bm87IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGRpc2FibGluZyBkZXBlbmRlbmN5LWxlc3MgcGx1Z2luIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBkaXNhYmxpbmcgZGVwZW5kZW5jeS1sZXNzIHBsdWdpbiB2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwiID4mNjt9CisgICAgV0lUSE9VVF9QTFVHSU5TPSIkV0lUSE9VVF9QTFVHSU5TIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCIKKyAgZmkKKworCisgICAgaWYgWyAteiAiJFdJVEhfUExVR0lOUyIgXSB8fCBlY2hvICIgJFdJVEhfUExVR0lOUyAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgdmlkZW9mcmFtZV9hdWRpb2xldmVsICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICBHU1RfUExVR0lOU19TRUxFQ1RFRD0iJEdTVF9QTFVHSU5TX1NFTEVDVEVEIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCIKKyAgZmkKKyAgICBpZiBlY2hvICIgJFdJVEhPVVRfUExVR0lOUyAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgdmlkZW9mcmFtZV9hdWRpb2xldmVsICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICBHU1RfUExVR0lOU19TRUxFQ1RFRD1gZWNobyAiICRHU1RfUExVR0lOU19TRUxFQ1RFRCAiIHwgJFNFRCAtZSAncy8gdmlkZW9mcmFtZV9hdWRpb2xldmVsIC8gLydgCisgIGZpCisgICAgaWYgZWNobyAiICRHU1RfUExVR0lOU19OT05QT1JURUQgIiB8IHRyICwgJyAnIHwgZ3JlcCAtaSAiIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgR1NUX1BMVUdJTlNfU0VMRUNURUQ9YGVjaG8gIiAkR1NUX1BMVUdJTlNfU0VMRUNURUQgIiB8ICRTRUQgLWUgJ3MvIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCAvIC8nYAorICBmaQorICAgaWYgZWNobyAiICRHU1RfUExVR0lOU19TRUxFQ1RFRCAiIHwgZ3JlcCAtaSAiIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCAiID4gL2Rldi9udWxsOyB0aGVuCisgIFVTRV9QTFVHSU5fVklERU9GUkFNRV9BVURJT0xFVkVMX1RSVUU9CisgIFVTRV9QTFVHSU5fVklERU9GUkFNRV9BVURJT0xFVkVMX0ZBTFNFPScjJworZWxzZQorICBVU0VfUExVR0lOX1ZJREVPRlJBTUVfQVVESU9MRVZFTF9UUlVFPScjJworICBVU0VfUExVR0lOX1ZJREVPRlJBTUVfQVVESU9MRVZFTF9GQUxTRT0KK2ZpCisKKworCiAgIEdTVF9QTFVHSU5TX0FMTD0iJEdTVF9QTFVHSU5TX0FMTCBhc2ZtdXgiCiAKIApAQCAtMzEyNTUsNDkgKzMxODAwLDYgQEAKIAogCiAKLSAgR1NUX1BMVUdJTlNfQUxMPSIkR1NUX1BMVUdJTlNfQUxMIGxpdmVhZGRlciIKLQotCi0KLSAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpdmVhZGRlciB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9saXZlYWRkZXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9saXZlYWRkZXI7Ci0gICAgICBjYXNlICIke2VuYWJsZXZhbH0iIGluCi0gICAgICAgIHllcykgZ3N0X3VzZV9saXZlYWRkZXI9eWVzIDs7Ci0gICAgICAgIG5vKSBnc3RfdXNlX2xpdmVhZGRlcj1ubyA7OwotICAgICAgICAqKSBhc19mbl9lcnJvciAkPyAiYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgLS1lbmFibGUtbGl2ZWFkZGVyIiAiJExJTkVOTyIgNSA7OwotICAgICAgIGVzYWMKLQotZWxzZQotICBnc3RfdXNlX2xpdmVhZGRlcj15ZXMKLWZpCi0KLSAgaWYgdGVzdCB4JGdzdF91c2VfbGl2ZWFkZGVyID0geG5vOyB0aGVuCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBkaXNhYmxpbmcgZGVwZW5kZW5jeS1sZXNzIHBsdWdpbiBsaXZlYWRkZXIiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZGlzYWJsaW5nIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW4gbGl2ZWFkZGVyIiA+JjY7fQotICAgIFdJVEhPVVRfUExVR0lOUz0iJFdJVEhPVVRfUExVR0lOUyBsaXZlYWRkZXIiCi0gIGZpCi0KLQotICAgIGlmIFsgLXogIiRXSVRIX1BMVUdJTlMiIF0gfHwgZWNobyAiICRXSVRIX1BMVUdJTlMgIiB8IHRyICwgJyAnIHwgZ3JlcCAtaSAiIGxpdmVhZGRlciAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgR1NUX1BMVUdJTlNfU0VMRUNURUQ9IiRHU1RfUExVR0lOU19TRUxFQ1RFRCBsaXZlYWRkZXIiCi0gIGZpCi0gICAgaWYgZWNobyAiICRXSVRIT1VUX1BMVUdJTlMgIiB8IHRyICwgJyAnIHwgZ3JlcCAtaSAiIGxpdmVhZGRlciAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgR1NUX1BMVUdJTlNfU0VMRUNURUQ9YGVjaG8gIiAkR1NUX1BMVUdJTlNfU0VMRUNURUQgIiB8ICRTRUQgLWUgJ3MvIGxpdmVhZGRlciAvIC8nYAotICBmaQotICAgIGlmIGVjaG8gIiAkR1NUX1BMVUdJTlNfTk9OUE9SVEVEICIgfCB0ciAsICcgJyB8IGdyZXAgLWkgIiBsaXZlYWRkZXIgIiA+IC9kZXYvbnVsbDsgdGhlbgotICAgIEdTVF9QTFVHSU5TX1NFTEVDVEVEPWBlY2hvICIgJEdTVF9QTFVHSU5TX1NFTEVDVEVEICIgfCAkU0VEIC1lICdzLyBsaXZlYWRkZXIgLyAvJ2AKLSAgZmkKLSAgIGlmIGVjaG8gIiAkR1NUX1BMVUdJTlNfU0VMRUNURUQgIiB8IGdyZXAgLWkgIiBsaXZlYWRkZXIgIiA+IC9kZXYvbnVsbDsgdGhlbgotICBVU0VfUExVR0lOX0xJVkVBRERFUl9UUlVFPQotICBVU0VfUExVR0lOX0xJVkVBRERFUl9GQUxTRT0nIycKLWVsc2UKLSAgVVNFX1BMVUdJTl9MSVZFQURERVJfVFJVRT0nIycKLSAgVVNFX1BMVUdJTl9MSVZFQURERVJfRkFMU0U9Ci1maQotCi0KLQogICBHU1RfUExVR0lOU19BTEw9IiRHU1RfUExVR0lOU19BTEwgbWlkaSIKIAogCkBAIC0zMTU5OSw2ICszMjEwMSw0OSBAQAogCiAKIAorICBHU1RfUExVR0lOU19BTEw9IiRHU1RfUExVR0lOU19BTEwgbmV0c2ltIgorCisKKworICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbmV0c2ltIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX25ldHNpbStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX25ldHNpbTsKKyAgICAgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKyAgICAgICAgeWVzKSBnc3RfdXNlX25ldHNpbT15ZXMgOzsKKyAgICAgICAgbm8pIGdzdF91c2VfbmV0c2ltPW5vIDs7CisgICAgICAgICopIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1uZXRzaW0iICIkTElORU5PIiA1IDs7CisgICAgICAgZXNhYworCitlbHNlCisgIGdzdF91c2VfbmV0c2ltPXllcworZmkKKworICBpZiB0ZXN0IHgkZ3N0X3VzZV9uZXRzaW0gPSB4bm87IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGRpc2FibGluZyBkZXBlbmRlbmN5LWxlc3MgcGx1Z2luIG5ldHNpbSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBkaXNhYmxpbmcgZGVwZW5kZW5jeS1sZXNzIHBsdWdpbiBuZXRzaW0iID4mNjt9CisgICAgV0lUSE9VVF9QTFVHSU5TPSIkV0lUSE9VVF9QTFVHSU5TIG5ldHNpbSIKKyAgZmkKKworCisgICAgaWYgWyAteiAiJFdJVEhfUExVR0lOUyIgXSB8fCBlY2hvICIgJFdJVEhfUExVR0lOUyAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgbmV0c2ltICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICBHU1RfUExVR0lOU19TRUxFQ1RFRD0iJEdTVF9QTFVHSU5TX1NFTEVDVEVEIG5ldHNpbSIKKyAgZmkKKyAgICBpZiBlY2hvICIgJFdJVEhPVVRfUExVR0lOUyAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgbmV0c2ltICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICBHU1RfUExVR0lOU19TRUxFQ1RFRD1gZWNobyAiICRHU1RfUExVR0lOU19TRUxFQ1RFRCAiIHwgJFNFRCAtZSAncy8gbmV0c2ltIC8gLydgCisgIGZpCisgICAgaWYgZWNobyAiICRHU1RfUExVR0lOU19OT05QT1JURUQgIiB8IHRyICwgJyAnIHwgZ3JlcCAtaSAiIG5ldHNpbSAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgR1NUX1BMVUdJTlNfU0VMRUNURUQ9YGVjaG8gIiAkR1NUX1BMVUdJTlNfU0VMRUNURUQgIiB8ICRTRUQgLWUgJ3MvIG5ldHNpbSAvIC8nYAorICBmaQorICAgaWYgZWNobyAiICRHU1RfUExVR0lOU19TRUxFQ1RFRCAiIHwgZ3JlcCAtaSAiIG5ldHNpbSAiID4gL2Rldi9udWxsOyB0aGVuCisgIFVTRV9QTFVHSU5fTkVUU0lNX1RSVUU9CisgIFVTRV9QTFVHSU5fTkVUU0lNX0ZBTFNFPScjJworZWxzZQorICBVU0VfUExVR0lOX05FVFNJTV9UUlVFPScjJworICBVU0VfUExVR0lOX05FVFNJTV9GQUxTRT0KK2ZpCisKKworCiAgIEdTVF9QTFVHSU5TX0FMTD0iJEdTVF9QTFVHSU5TX0FMTCBudXZkZW11eCIKIAogCkBAIC0zMTkwMCw0OSArMzI0NDUsNiBAQAogCiAKIAotICBHU1RfUExVR0lOU19BTEw9IiRHU1RfUExVR0lOU19BTEwgcnRwIgotCi0KLQotICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcnRwIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX3J0cCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZhbD0kZW5hYmxlX3J0cDsKLSAgICAgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KLSAgICAgICAgeWVzKSBnc3RfdXNlX3J0cD15ZXMgOzsKLSAgICAgICAgbm8pIGdzdF91c2VfcnRwPW5vIDs7Ci0gICAgICAgICopIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1ydHAiICIkTElORU5PIiA1IDs7Ci0gICAgICAgZXNhYwotCi1lbHNlCi0gIGdzdF91c2VfcnRwPXllcwotZmkKLQotICBpZiB0ZXN0IHgkZ3N0X3VzZV9ydHAgPSB4bm87IHRoZW4KLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGRpc2FibGluZyBkZXBlbmRlbmN5LWxlc3MgcGx1Z2luIHJ0cCIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBkaXNhYmxpbmcgZGVwZW5kZW5jeS1sZXNzIHBsdWdpbiBydHAiID4mNjt9Ci0gICAgV0lUSE9VVF9QTFVHSU5TPSIkV0lUSE9VVF9QTFVHSU5TIHJ0cCIKLSAgZmkKLQotCi0gICAgaWYgWyAteiAiJFdJVEhfUExVR0lOUyIgXSB8fCBlY2hvICIgJFdJVEhfUExVR0lOUyAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgcnRwICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICBHU1RfUExVR0lOU19TRUxFQ1RFRD0iJEdTVF9QTFVHSU5TX1NFTEVDVEVEIHJ0cCIKLSAgZmkKLSAgICBpZiBlY2hvICIgJFdJVEhPVVRfUExVR0lOUyAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgcnRwICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICBHU1RfUExVR0lOU19TRUxFQ1RFRD1gZWNobyAiICRHU1RfUExVR0lOU19TRUxFQ1RFRCAiIHwgJFNFRCAtZSAncy8gcnRwIC8gLydgCi0gIGZpCi0gICAgaWYgZWNobyAiICRHU1RfUExVR0lOU19OT05QT1JURUQgIiB8IHRyICwgJyAnIHwgZ3JlcCAtaSAiIHJ0cCAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgR1NUX1BMVUdJTlNfU0VMRUNURUQ9YGVjaG8gIiAkR1NUX1BMVUdJTlNfU0VMRUNURUQgIiB8ICRTRUQgLWUgJ3MvIHJ0cCAvIC8nYAotICBmaQotICAgaWYgZWNobyAiICRHU1RfUExVR0lOU19TRUxFQ1RFRCAiIHwgZ3JlcCAtaSAiIHJ0cCAiID4gL2Rldi9udWxsOyB0aGVuCi0gIFVTRV9QTFVHSU5fUlRQX1RSVUU9Ci0gIFVTRV9QTFVHSU5fUlRQX0ZBTFNFPScjJwotZWxzZQotICBVU0VfUExVR0lOX1JUUF9UUlVFPScjJwotICBVU0VfUExVR0lOX1JUUF9GQUxTRT0KLWZpCi0KLQotCiAgIEdTVF9QTFVHSU5TX0FMTD0iJEdTVF9QTFVHSU5TX0FMTCBzZGkiCiAKIApAQCAtMzMxMDcsNiArMzM2MDksMTAyIEBACiAgICopCiAgICAgaWYgdGVzdCAieCRORUVEX0dMIiAhPSAieG5vIjsgdGhlbgogCisgIHdoaWNoPSJnbCIKKyAgICByZXF1aXJlZD0ibm8iCisKKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgR0wiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdMLi4uICIgPiY2OyB9CisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRHTF9DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9HTF9DRkxBR1M9IiRHTF9DRkxBR1MiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJcJHdoaWNoXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIiR3aGljaCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9HTF9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICIkd2hpY2giIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRHTF9MSUJTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfR0xfTElCUz0iJEdMX0xJQlMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJcJHdoaWNoXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIiR3aGljaCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9HTF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgIiR3aGljaCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBHTF9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgIiR3aGljaCJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIEdMX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiJHdoaWNoImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkR0xfUEtHX0VSUk9SUyIgPiY1CisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKworICAgICAgSEFWRV9HTD0ibm8iCisgICAgICBpZiB0ZXN0ICJ4JHJlcXVpcmVkIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiJEdMX1BLR19FUlJPUlMiICIkTElORU5PIiA1CisgICAgICBlbHNlCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJEdMX1BLR19FUlJPUlMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJEdMX1BLR19FUlJPUlMiID4mNjt9CisgICAgICBmaQorCitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisKKyAgICAgIEhBVkVfR0w9Im5vIgorICAgICAgaWYgdGVzdCAieCRyZXF1aXJlZCIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgYXNfZm5fZXJyb3IgJD8gIiRHTF9QS0dfRVJST1JTIiAiJExJTkVOTyIgNQorICAgICAgZWxzZQorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRHTF9QS0dfRVJST1JTIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICRHTF9QS0dfRVJST1JTIiA+JjY7fQorICAgICAgZmkKKworZWxzZQorCUdMX0NGTEFHUz0kcGtnX2N2X0dMX0NGTEFHUworCUdMX0xJQlM9JHBrZ19jdl9HTF9MSUJTCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisKKyAgICAgIEhBVkVfR0w9InllcyIKKworZmkKKworCisgICAgICBpZiB0ZXN0ICJ4JEhBVkVfR0wiICE9ICJ4eWVzIjsgdGhlbgorCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdsVGV4SW1hZ2UyRCBpbiAtbEdMIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBnbFRleEltYWdlMkQgaW4gLWxHTC4uLiAiID4mNjsgfQogaWYgJHthY19jdl9saWJfR0xfZ2xUZXhJbWFnZTJEKzp9IGZhbHNlOyB0aGVuIDoKQEAgLTMzMTY5LDkgKzMzNzY3LDEwNiBAQAogCiAKIAorICAgICAgZmkKICAgICBmaQogICAgIGlmIHRlc3QgIngkTkVFRF9HTEVTMiIgIT0gInhubyI7IHRoZW4KIAorICB3aGljaD0iZ2xlc3YyIgorICAgIHJlcXVpcmVkPSJubyIKKworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTEVTMiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgR0xFUzIuLi4gIiA+JjY7IH0KKworaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJEdMRVMyX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0dMRVMyX0NGTEFHUz0iJEdMRVMyX0NGTEFHUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0dMRVMyX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgIiR3aGljaCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJEdMRVMyX0xJQlMiOyB0aGVuCisgICAgICAgIHBrZ19jdl9HTEVTMl9MSUJTPSIkR0xFUzJfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0dMRVMyX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiJHdoaWNoIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIEdMRVMyX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiJHdoaWNoImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgR0xFUzJfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRHTEVTMl9QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCisgICAgICBIQVZFX0dMRVMyPSJubyIKKyAgICAgIGlmIHRlc3QgIngkcmVxdWlyZWQiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICIkR0xFUzJfUEtHX0VSUk9SUyIgIiRMSU5FTk8iIDUKKyAgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkR0xFUzJfUEtHX0VSUk9SUyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAkR0xFUzJfUEtHX0VSUk9SUyIgPiY2O30KKyAgICAgIGZpCisKK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworICAgICAgSEFWRV9HTEVTMj0ibm8iCisgICAgICBpZiB0ZXN0ICJ4JHJlcXVpcmVkIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiJEdMRVMyX1BLR19FUlJPUlMiICIkTElORU5PIiA1CisgICAgICBlbHNlCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJEdMRVMyX1BLR19FUlJPUlMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJEdMRVMyX1BLR19FUlJPUlMiID4mNjt9CisgICAgICBmaQorCitlbHNlCisJR0xFUzJfQ0ZMQUdTPSRwa2dfY3ZfR0xFUzJfQ0ZMQUdTCisJR0xFUzJfTElCUz0kcGtnX2N2X0dMRVMyX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKworICAgICAgSEFWRV9HTEVTMj0ieWVzIgorCitmaQorCisKKyAgICAgIGlmIHRlc3QgIngkSEFWRV9HTEVTMiIgIT0gInh5ZXMiOyB0aGVuCisKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ2xUZXhJbWFnZTJEIGluIC1sR0xFU3YyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBnbFRleEltYWdlMkQgaW4gLWxHTEVTdjIuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfbGliX0dMRVN2Ml9nbFRleEltYWdlMkQrOn0gZmFsc2U7IHRoZW4gOgpAQCAtMzMyMzQsOSArMzM5MjksMTA2IEBACiAKIAogCisgICAgICBmaQogICAgIGZpCiAgICAgaWYgdGVzdCAieCRORUVEX0VHTCIgIT0gInhubyI7IHRoZW4KIAorICB3aGljaD0iZWdsIgorICAgIHJlcXVpcmVkPSJubyIKKworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBFR0wiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEVHTC4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkRUdMX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0VHTF9DRkxBR1M9IiRFR0xfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiXCR3aGljaFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICIkd2hpY2giKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICBwa2dfY3ZfRUdMX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgIiR3aGljaCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJEVHTF9MSUJTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfRUdMX0xJQlM9IiRFR0xfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0VHTF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgIiR3aGljaCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBFR0xfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAorICAgICAgICBlbHNlCisJICAgICAgICBFR0xfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRFR0xfUEtHX0VSUk9SUyIgPiY1CisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKworICAgICAgSEFWRV9FR0w9Im5vIgorICAgICAgaWYgdGVzdCAieCRyZXF1aXJlZCIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgYXNfZm5fZXJyb3IgJD8gIiRFR0xfUEtHX0VSUk9SUyIgIiRMSU5FTk8iIDUKKyAgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkRUdMX1BLR19FUlJPUlMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJEVHTF9QS0dfRVJST1JTIiA+JjY7fQorICAgICAgZmkKKworZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorCisgICAgICBIQVZFX0VHTD0ibm8iCisgICAgICBpZiB0ZXN0ICJ4JHJlcXVpcmVkIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiJEVHTF9QS0dfRVJST1JTIiAiJExJTkVOTyIgNQorICAgICAgZWxzZQorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRFR0xfUEtHX0VSUk9SUyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAkRUdMX1BLR19FUlJPUlMiID4mNjt9CisgICAgICBmaQorCitlbHNlCisJRUdMX0NGTEFHUz0kcGtnX2N2X0VHTF9DRkxBR1MKKwlFR0xfTElCUz0kcGtnX2N2X0VHTF9MSUJTCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisKKyAgICAgIEhBVkVfRUdMPSJ5ZXMiCisKK2ZpCisKKworICAgICAgaWYgdGVzdCAieCRIQVZFX0VHTCIgIT0gInh5ZXMiOyB0aGVuCisKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZWdsR2V0RXJyb3IgaW4gLWxFR0wiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGVnbEdldEVycm9yIGluIC1sRUdMLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X2xpYl9FR0xfZWdsR2V0RXJyb3IrOn0gZmFsc2U7IHRoZW4gOgpAQCAtMzMyOTksNiArMzQwOTEsNyBAQAogCiAKIAorICAgICAgZmkKICAgICBmaQogCiAgICAgb2xkX0xJQlM9JExJQlMKQEAgLTMzNzQ1LDggKzM0NTM4LDEyMCBAQAogICBmaQogZmkKIAorSEFWRV9EUk1fRk9VUkNDX0hFQURFUj1ubworYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImxpYmRybS9kcm1fZm91cmNjLmgiICJhY19jdl9oZWFkZXJfbGliZHJtX2RybV9mb3VyY2NfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbGliZHJtX2RybV9mb3VyY2NfaCIgPSB4eWVzOyB0aGVuIDoKKyAgSEFWRV9EUk1fRk9VUkNDX0hFQURFUj15ZXMKK2ZpCisKKworCitIQVZFX0dTVF9BTExPQ0FUT1JTPW5vCisKK3BrZ19mYWlsZWQ9bm8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEdTVF9BTExPQ0FUT1JTIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBHU1RfQUxMT0NBVE9SUy4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTPSIkR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiZ3N0cmVhbWVyLWFsbG9jYXRvcnMtMS4wXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImdzdHJlYW1lci1hbGxvY2F0b3JzLTEuMCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9HU1RfQUxMT0NBVE9SU19DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJnc3RyZWFtZXItYWxsb2NhdG9ycy0xLjAiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRHU1RfQUxMT0NBVE9SU19MSUJTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfR1NUX0FMTE9DQVRPUlNfTElCUz0iJEdTVF9BTExPQ0FUT1JTX0xJQlMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJnc3RyZWFtZXItYWxsb2NhdG9ycy0xLjBcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiZ3N0cmVhbWVyLWFsbG9jYXRvcnMtMS4wIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0dTVF9BTExPQ0FUT1JTX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiZ3N0cmVhbWVyLWFsbG9jYXRvcnMtMS4wIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIEdTVF9BTExPQ0FUT1JTX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiZ3N0cmVhbWVyLWFsbG9jYXRvcnMtMS4wImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgR1NUX0FMTE9DQVRPUlNfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJnc3RyZWFtZXItYWxsb2NhdG9ycy0xLjAiYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRHU1RfQUxMT0NBVE9SU19QS0dfRVJST1JTIiA+JjUKKworCWFzX2ZuX2Vycm9yICQ/ICJQYWNrYWdlIHJlcXVpcmVtZW50cyAoZ3N0cmVhbWVyLWFsbG9jYXRvcnMtMS4wKSB3ZXJlIG5vdCBtZXQ6CisKKyRHU1RfQUxMT0NBVE9SU19QS0dfRVJST1JTCisKK0NvbnNpZGVyIGFkanVzdGluZyB0aGUgUEtHX0NPTkZJR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHlvdQoraW5zdGFsbGVkIHNvZnR3YXJlIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeC4KKworQWx0ZXJuYXRpdmVseSwgeW91IG1heSBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBHU1RfQUxMT0NBVE9SU19DRkxBR1MKK2FuZCBHU1RfQUxMT0NBVE9SU19MSUJTIHRvIGF2b2lkIHRoZSBuZWVkIHRvIGNhbGwgcGtnLWNvbmZpZy4KK1NlZSB0aGUgcGtnLWNvbmZpZyBtYW4gcGFnZSBmb3IgbW9yZSBkZXRhaWxzLgorIiAiJExJTkVOTyIgNQorZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorCXsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gIlRoZSBwa2ctY29uZmlnIHNjcmlwdCBjb3VsZCBub3QgYmUgZm91bmQgb3IgaXMgdG9vIG9sZC4gIE1ha2Ugc3VyZSBpdAoraXMgaW4geW91ciBQQVRIIG9yIHNldCB0aGUgUEtHX0NPTkZJRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgZnVsbAorcGF0aCB0byBwa2ctY29uZmlnLgorCitBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIEdTVF9BTExPQ0FUT1JTX0NGTEFHUworYW5kIEdTVF9BTExPQ0FUT1JTX0xJQlMgdG8gYXZvaWQgdGhlIG5lZWQgdG8gY2FsbCBwa2ctY29uZmlnLgorU2VlIHRoZSBwa2ctY29uZmlnIG1hbiBwYWdlIGZvciBtb3JlIGRldGFpbHMuCisKK1RvIGdldCBwa2ctY29uZmlnLCBzZWUgPGh0dHA6Ly9wa2ctY29uZmlnLmZyZWVkZXNrdG9wLm9yZy8+LgorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KK2Vsc2UKKwlHU1RfQUxMT0NBVE9SU19DRkxBR1M9JHBrZ19jdl9HU1RfQUxMT0NBVE9SU19DRkxBR1MKKwlHU1RfQUxMT0NBVE9SU19MSUJTPSRwa2dfY3ZfR1NUX0FMTE9DQVRPUlNfTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCUhBVkVfR1NUX0FMTE9DQVRPUlM9eWVzCitmaQorCitpZiB0ZXN0ICJ4JEhBVkVfRFJNX0ZPVVJDQ19IRUFERVIiID0gInh5ZXMiIC1hIFwKKyAgICAgICAgIngkSEFWRV9HU1RfQUxMT0NBVE9SUyIgPSAieHllcyIgLWEgXAorICAgICAgICAieCRIQVZFX0VHTCIgPSAieHllcyI7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgR1NUX0dMX0hBVkVfRE1BQlVGIDEgIiA+PmNvbmZkZWZzLmgKKworZmkKKwogaWYgdGVzdCAieCRIQVZFX0dMIiA9ICJ4eWVzIiAtYSAieCRIQVZFX0dMRVMyIiA9ICJ4eWVzIjsgdGhlbgogICBHTF9JTkNMVURFUz0iCisjaWZkZWYgX19HTlVDX18KKyMgIHByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjICBwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XcmVkdW5kYW50LWRlY2xzXCIKKyNlbmRpZgogI2lmbmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCiAjZGVmaW5lIEdMX0dMRVhUX1BST1RPVFlQRVMgMQogI2VuZGlmCkBAIC0zMzc3MCwyNSArMzQ2NzUsMTUgQEAKICMgICBpbmNsdWRlIDxHTC9nbGV4dC5oPgogIyAgZW5kaWYKICMgZW5kaWYKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsgcmV0dXJuIDA7IH0KICIKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGluY2x1ZGUgYm90aCBHTCBhbmQgR0xFUzIgaGVhZGVycyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGluY2x1ZGUgYm90aCBHTCBhbmQgR0xFUzIgaGVhZGVycy4uLiAiID4mNjsgfQotICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0gIENQUEZMQUdTPSIkQ1BQRkxBR1MgJEVSUk9SX0NGTEFHUyIKKyAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgIENGTEFHUz0iJENGTEFHUyAkR0xfQ0ZMQUdTICRHTEVTMl9DRkxBR1MgJFdBUk5JTkdfQ0ZMQUdTICRFUlJPUl9DRkxBR1MiCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICRHTF9JTkNMVURFUwotaW50Ci1tYWluICgpCi17Ci0KLSAgICAjaWYgIWRlZmluZWQoR0xfRkFMU0UpCi0gICAgI2Vycm9yIEZhaWxlZCB0byBpbmNsdWRlIEdMIGhlYWRlcnMKLSAgICAjZW5kaWYKLQotICA7Ci0gIHJldHVybiAwOwotfQogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKQEAgLTMzODEzLDcgKzM0NzA4LDcgQEAKIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MiCisgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgogZmkKIAogI2RubCBDaGVjayBmb3IgT3BlbkdMCkBAIC0zNDM1OSw2ICszNTI1NCw3IEBACiBHU1RfR0xfSEFWRV9HTElOVFBUUj0wCiBHU1RfR0xfSEFWRV9HTFNZTkM9MAogR1NUX0dMX0hBVkVfR0xVSU5UNjQ9MAorR1NUX0dMX0hBVkVfR0xJTlQ2ND0wCiAKIG9sZF9DRkxBR1M9JENGTEFHUwogQ0ZMQUdTPSIkR0xfQ0ZMQUdTICRDRkxBR1MiCkBAIC0zNDQ1Myw2ICszNTM0OSwyMSBAQAogICBHU1RfR0xfSEFWRV9HTFVJTlQ2ND0xCiBmaQogCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJHTGludDY0IiAiYWNfY3ZfdHlwZV9HTGludDY0IiAiJEdMX0lOQ0xVREVTCisiCitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfR0xpbnQ2NCIgPSB4eWVzOyB0aGVuIDoKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0dMSU5UNjQgMQorX0FDRU9GCisKKworZmkKKworaWYgdGVzdCAieCRhY19jdl90eXBlX0dMaW50NjQiID0gInh5ZXMiOyB0aGVuCisgIEdTVF9HTF9IQVZFX0dMSU5UNjQ9MQorZmkKKwogQ0ZMQUdTPSRvbGRfQ0ZMQUdTCiAKIEdMX0NPTkZJR19ERUZJTkVTPSIkR0xfQ09ORklHX0RFRklORVMKQEAgLTM0NDYyLDYgKzM1MzczLDcgQEAKICNkZWZpbmUgR1NUX0dMX0hBVkVfR0xJTlRQVFIgJEdTVF9HTF9IQVZFX0dMSU5UUFRSCiAjZGVmaW5lIEdTVF9HTF9IQVZFX0dMU1lOQyAkR1NUX0dMX0hBVkVfR0xTWU5DCiAjZGVmaW5lIEdTVF9HTF9IQVZFX0dMVUlOVDY0ICRHU1RfR0xfSEFWRV9HTFVJTlQ2NAorI2RlZmluZSBHU1RfR0xfSEFWRV9HTElOVDY0ICRHU1RfR0xfSEFWRV9HTElOVDY0CiAiCiAKIGFjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb25maWcuaCIKQEAgLTM0Njc2LDYgKzM1NTg4LDk1IEBACiBmaQogCiAKK1ZVTEtBTl9DT05GSUdfREVGSU5FUz0iIgorCisKK3BrZ19mYWlsZWQ9bm8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFhDQiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgWENCLi4uICIgPiY2OyB9CisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRYQ0JfQ0ZMQUdTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfWENCX0NGTEFHUz0iJFhDQl9DRkxBR1MiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJ4Y2IgPj0gMS4xMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJ4Y2IgPj0gMS4xMCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9YQ0JfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAieGNiID49IDEuMTAiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRYQ0JfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X1hDQl9MSUJTPSIkWENCX0xJQlMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJ4Y2IgPj0gMS4xMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJ4Y2IgPj0gMS4xMCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9YQ0JfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJ4Y2IgPj0gMS4xMCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBYQ0JfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJ4Y2IgPj0gMS4xMCJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIFhDQl9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgInhjYiA+PSAxLjEwImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkWENCX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisgICAgICAgICAgICAgICAgSEFWRV9YQ0I9bm8KK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKwlIQVZFX1hDQj1ubworZWxzZQorCVhDQl9DRkxBR1M9JHBrZ19jdl9YQ0JfQ0ZMQUdTCisJWENCX0xJQlM9JHBrZ19jdl9YQ0JfTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCUhBVkVfWENCPXllcworZmkKKworIGlmIHRlc3QgIngkSEFWRV9YQ0IiID0gInh5ZXMiOyB0aGVuCisgIFVTRV9YQ0JfVFJVRT0KKyAgVVNFX1hDQl9GQUxTRT0nIycKK2Vsc2UKKyAgVVNFX1hDQl9UUlVFPScjJworICBVU0VfWENCX0ZBTFNFPQorZmkKKworaWYgdGVzdCAieCRIQVZFX1hDQiIgPSAieHllcyI7IHRoZW4KKyAgVlVMS0FOX0NPTkZJR19ERUZJTkVTPSIkVlVMS0FOX0NPTkZJR19ERUZJTkVTCisgICNkZWZpbmUgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19YQ0IgMSIKK2ZpCisKK2FjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyBleHQvdnVsa2FuL3ZrY29uZmlnLmgiCisKIAogCiBlY2hvCkBAIC0zNjYwMSw2ICszNzYwMiwxMTUyIEBACiAKIAogCitlY2hvCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBjaGVja2luZyBmZWF0dXJlOiBOVklESUEgRW5jb2RlIEFQSSAqKioiID4mNQorJGFzX2VjaG8gIiRhc19tZTogKioqIGNoZWNraW5nIGZlYXR1cmU6IE5WSURJQSBFbmNvZGUgQVBJICoqKiIgPiY2O30KK2lmIHRlc3QgInhudmVuYyIgIT0gIngiCit0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGZvciBwbHVnLWluczogbnZlbmMgKioqIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICoqKiBmb3IgcGx1Zy1pbnM6IG52ZW5jICoqKiIgPiY2O30KK2ZpCitOT1VTRT0KK2lmIHRlc3QgIngkVVNFX05WRU5DIiA9ICJ4bm8iOyB0aGVuCisgIE5PVVNFPSJ5ZXMiCitmaQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW52ZW5jIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX252ZW5jK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfbnZlbmM7ICBjYXNlICIke2VuYWJsZXZhbH0iIGluCisgICAgICB5ZXMpIFVTRV9OVkVOQz15ZXM7OworICAgICAgbm8pIFVTRV9OVkVOQz1ubzs7CisgICAgICAqKSBhc19mbl9lcnJvciAkPyAiYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgLS1lbmFibGUtbnZlbmMiICIkTElORU5PIiA1IDs7CisgICAgZXNhYworZWxzZQorICAgVVNFX05WRU5DPXllcworZmkKKworaWYgdGVzdCAieCROT1VTRSIgPSAieHllcyI7IHRoZW4KKyAgVVNFX05WRU5DPSJubyIKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAqKiogbnZlbmMgcHJlLWNvbmZpZ3VyZWQgbm90IHRvIGJlIGJ1aWx0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICoqKiBudmVuYyBwcmUtY29uZmlndXJlZCBub3QgdG8gYmUgYnVpbHQiID4mMjt9CitmaQorTk9VU0U9CisKK2lmIGVjaG8gIiAkR1NUX1BMVUdJTlNfTk9OUE9SVEVEICIgfCB0ciAsICcgJyB8IGdyZXAgLWkgIiBOVkVOQyAiID4gL2Rldi9udWxsOyB0aGVuCisgIFVTRV9OVkVOQz0ibm8iCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogKioqIG52ZW5jIG5vdCBwb3J0ZWQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogKioqIG52ZW5jIG5vdCBwb3J0ZWQiID4mMjt9CitmaQorCisKK2lmIHRlc3QgeCRVU0VfTlZFTkMgPSB4eWVzOyB0aGVuCisKKyAgZ3N0X2NoZWNrX3NhdmVfTElCUz0kTElCUworICBnc3RfY2hlY2tfc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgIGdzdF9jaGVja19zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgIGdzdF9jaGVja19zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworICBnc3RfY2hlY2tfc2F2ZV9DWFhGTEFHUz0kQ1hYRkxBR1MKKworICBIQVZFX05WRU5DPW5vCisKKworICB3aGljaD0iZ3N0cmVhbWVyLXZpZGVvLTEuMCIKKyAgICByZXF1aXJlZD0ibm8iCisKKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgR1NUX1ZJREVPIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBHU1RfVklERU8uLi4gIiA+JjY7IH0KKworaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJEdTVF9WSURFT19DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9HU1RfVklERU9fQ0ZMQUdTPSIkR1NUX1ZJREVPX0NGTEFHUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0dTVF9WSURFT19DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICIkd2hpY2giIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRHU1RfVklERU9fTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0dTVF9WSURFT19MSUJTPSIkR1NUX1ZJREVPX0xJQlMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJcJHdoaWNoXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIiR3aGljaCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9HU1RfVklERU9fTElCUz1gJFBLR19DT05GSUcgLS1saWJzICIkd2hpY2giIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKKworCisKK2lmIHRlc3QgJHBrZ19mYWlsZWQgPSB5ZXM7IHRoZW4KKworaWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uIDAuMjA7IHRoZW4KKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcworZWxzZQorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KK2ZpCisgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhlbgorCSAgICAgICAgR1NUX1ZJREVPX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiJHdoaWNoImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgR1NUX1ZJREVPX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiJHdoaWNoImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkR1NUX1ZJREVPX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKKyAgICAgIEhBVkVfR1NUX1ZJREVPPSJubyIKKyAgICAgIGlmIHRlc3QgIngkcmVxdWlyZWQiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICIkR1NUX1ZJREVPX1BLR19FUlJPUlMiICIkTElORU5PIiA1CisgICAgICBlbHNlCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJEdTVF9WSURFT19QS0dfRVJST1JTIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICRHU1RfVklERU9fUEtHX0VSUk9SUyIgPiY2O30KKyAgICAgIGZpCisKK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworICAgICAgSEFWRV9HU1RfVklERU89Im5vIgorICAgICAgaWYgdGVzdCAieCRyZXF1aXJlZCIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgYXNfZm5fZXJyb3IgJD8gIiRHU1RfVklERU9fUEtHX0VSUk9SUyIgIiRMSU5FTk8iIDUKKyAgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkR1NUX1ZJREVPX1BLR19FUlJPUlMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJEdTVF9WSURFT19QS0dfRVJST1JTIiA+JjY7fQorICAgICAgZmkKKworZWxzZQorCUdTVF9WSURFT19DRkxBR1M9JHBrZ19jdl9HU1RfVklERU9fQ0ZMQUdTCisJR1NUX1ZJREVPX0xJQlM9JHBrZ19jdl9HU1RfVklERU9fTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCisgICAgICBIQVZFX0dTVF9WSURFTz0ieWVzIgorCitmaQorCisKKworICB3aGljaD0iZ3N0cmVhbWVyLXBidXRpbHMtMS4wIgorICAgIHJlcXVpcmVkPSJubyIKKworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHU1RfUEJVVElMUyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgR1NUX1BCVVRJTFMuLi4gIiA+JjY7IH0KKworaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJEdTVF9QQlVUSUxTX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0dTVF9QQlVUSUxTX0NGTEFHUz0iJEdTVF9QQlVUSUxTX0NGTEFHUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0dTVF9QQlVUSUxTX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgIiR3aGljaCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJEdTVF9QQlVUSUxTX0xJQlMiOyB0aGVuCisgICAgICAgIHBrZ19jdl9HU1RfUEJVVElMU19MSUJTPSIkR1NUX1BCVVRJTFNfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0dTVF9QQlVUSUxTX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiJHdoaWNoIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIEdTVF9QQlVUSUxTX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiJHdoaWNoImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgR1NUX1BCVVRJTFNfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRHU1RfUEJVVElMU19QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCisgICAgICBIQVZFX0dTVF9QQlVUSUxTPSJubyIKKyAgICAgIGlmIHRlc3QgIngkcmVxdWlyZWQiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICIkR1NUX1BCVVRJTFNfUEtHX0VSUk9SUyIgIiRMSU5FTk8iIDUKKyAgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkR1NUX1BCVVRJTFNfUEtHX0VSUk9SUyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAkR1NUX1BCVVRJTFNfUEtHX0VSUk9SUyIgPiY2O30KKyAgICAgIGZpCisKK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworICAgICAgSEFWRV9HU1RfUEJVVElMUz0ibm8iCisgICAgICBpZiB0ZXN0ICJ4JHJlcXVpcmVkIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiJEdTVF9QQlVUSUxTX1BLR19FUlJPUlMiICIkTElORU5PIiA1CisgICAgICBlbHNlCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJEdTVF9QQlVUSUxTX1BLR19FUlJPUlMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJEdTVF9QQlVUSUxTX1BLR19FUlJPUlMiID4mNjt9CisgICAgICBmaQorCitlbHNlCisJR1NUX1BCVVRJTFNfQ0ZMQUdTPSRwa2dfY3ZfR1NUX1BCVVRJTFNfQ0ZMQUdTCisJR1NUX1BCVVRJTFNfTElCUz0kcGtnX2N2X0dTVF9QQlVUSUxTX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKworICAgICAgSEFWRV9HU1RfUEJVVElMUz0ieWVzIgorCitmaQorCisKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1jdWRhLXByZWZpeCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfY3VkYV9wcmVmaXgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2N1ZGFfcHJlZml4OyBpZiB0ZXN0ICJ4JHdpdGhfY3VkYV9wcmVmaXgiICE9ICJ4IjsgdGhlbiA6CisgIENVREFfUFJFRklYPSIkd2l0aF9jdWRhX3ByZWZpeCIKK2ZpCitlbHNlCisgIENVREFfUFJFRklYPSIiCitmaQorCisKKyAgSEFWRV9DVURBPSJ5ZXMiCisgIGlmIHRlc3QgIngkQ1VEQV9QUkVGSVgiICE9ICJ4IjsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JENVREFfQ0ZMQUdTIiA9ICJ4IiAtYSAieCRDVURBX0xJQlMiID0gIngiOyB0aGVuCisgICAgICAgICAgICBDVURBX0NGTEFHUz0iLUkkQ1VEQV9QUkVGSVgvaW5jbHVkZSIKKyAgICAgIENVREFfTElCUz0iLUwkQ1VEQV9QUkVGSVgvbGliIC1MJENVREFfUFJFRklYL2xpYjY0IC1MJENVREFfUFJFRklYL2xpYi9zdHVicyAtTCRDVURBX1BSRUZJWC9saWI2NC9zdHVicyAtbGN1ZGEgLWxjdWRhcnQiCisgICAgZmkKKyAgZWxzZQorCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDVURBIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBDVURBLi4uICIgPiY2OyB9CisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRDVURBX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0NVREFfQ0ZMQUdTPSIkQ1VEQV9DRkxBR1MiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJjdWRhLTcuNSBjdWRhcnQtNy41XCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImN1ZGEtNy41IGN1ZGFydC03LjUiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICBwa2dfY3ZfQ1VEQV9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJjdWRhLTcuNSBjdWRhcnQtNy41IiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkQ1VEQV9MSUJTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfQ1VEQV9MSUJTPSIkQ1VEQV9MSUJTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiY3VkYS03LjUgY3VkYXJ0LTcuNVwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJjdWRhLTcuNSBjdWRhcnQtNy41IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0NVREFfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJjdWRhLTcuNSBjdWRhcnQtNy41IiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIENVREFfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJjdWRhLTcuNSBjdWRhcnQtNy41ImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgQ1VEQV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImN1ZGEtNy41IGN1ZGFydC03LjUiYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRDVURBX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQ1VEQSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQ1VEQS4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkQ1VEQV9DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9DVURBX0NGTEFHUz0iJENVREFfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiY3VkYS03LjAgY3VkYXJ0LTcuMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJjdWRhLTcuMCBjdWRhcnQtNy4wIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0NVREFfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiY3VkYS03LjAgY3VkYXJ0LTcuMCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJENVREFfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0NVREFfTElCUz0iJENVREFfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImN1ZGEtNy4wIGN1ZGFydC03LjBcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiY3VkYS03LjAgY3VkYXJ0LTcuMCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9DVURBX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiY3VkYS03LjAgY3VkYXJ0LTcuMCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBDVURBX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiY3VkYS03LjAgY3VkYXJ0LTcuMCJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIENVREFfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJjdWRhLTcuMCBjdWRhcnQtNy4wImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkQ1VEQV9QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCisKK3BrZ19mYWlsZWQ9bm8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIENVREEiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIENVREEuLi4gIiA+JjY7IH0KKworaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJENVREFfQ0ZMQUdTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfQ1VEQV9DRkxBR1M9IiRDVURBX0NGTEFHUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImN1ZGEtNi41IGN1ZGFydC02LjVcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9DVURBX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgImN1ZGEtNi41IGN1ZGFydC02LjUiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRDVURBX0xJQlMiOyB0aGVuCisgICAgICAgIHBrZ19jdl9DVURBX0xJQlM9IiRDVURBX0xJQlMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJjdWRhLTYuNSBjdWRhcnQtNi41XCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImN1ZGEtNi41IGN1ZGFydC02LjUiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICBwa2dfY3ZfQ1VEQV9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgImN1ZGEtNi41IGN1ZGFydC02LjUiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKKworCisKK2lmIHRlc3QgJHBrZ19mYWlsZWQgPSB5ZXM7IHRoZW4KKworaWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uIDAuMjA7IHRoZW4KKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcworZWxzZQorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KK2ZpCisgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhlbgorCSAgICAgICAgQ1VEQV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImN1ZGEtNi41IGN1ZGFydC02LjUiYAorICAgICAgICBlbHNlCisJICAgICAgICBDVURBX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiY3VkYS02LjUgY3VkYXJ0LTYuNSJgCisgICAgICAgIGZpCisJIyBQdXQgdGhlIG5hc3R5IGVycm9yIG1lc3NhZ2UgaW4gY29uZmlnLmxvZyB3aGVyZSBpdCBiZWxvbmdzCisJZWNobyAiJENVREFfUEtHX0VSUk9SUyIgPiY1CisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKworICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYSBoZWFkZXJzL2xpYnJhcmllcyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhIGhlYWRlcnMvbGlicmFyaWVzIiA+JjI7fQorZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorCisgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhIGhlYWRlcnMvbGlicmFyaWVzIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEgaGVhZGVycy9saWJyYXJpZXMiID4mMjt9CitlbHNlCisJQ1VEQV9DRkxBR1M9JHBrZ19jdl9DVURBX0NGTEFHUworCUNVREFfTElCUz0kcGtnX2N2X0NVREFfTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCToKK2ZpCitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisKKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQ1VEQSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQ1VEQS4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkQ1VEQV9DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9DVURBX0NGTEFHUz0iJENVREFfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiY3VkYS02LjUgY3VkYXJ0LTYuNVwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJjdWRhLTYuNSBjdWRhcnQtNi41IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0NVREFfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJENVREFfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0NVREFfTElCUz0iJENVREFfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImN1ZGEtNi41IGN1ZGFydC02LjVcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9DVURBX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBDVURBX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiY3VkYS02LjUgY3VkYXJ0LTYuNSJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIENVREFfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJjdWRhLTYuNSBjdWRhcnQtNi41ImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkQ1VEQV9QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCisgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhIGhlYWRlcnMvbGlicmFyaWVzIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEgaGVhZGVycy9saWJyYXJpZXMiID4mMjt9CitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisKKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEgaGVhZGVycy9saWJyYXJpZXMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYSBoZWFkZXJzL2xpYnJhcmllcyIgPiYyO30KK2Vsc2UKKwlDVURBX0NGTEFHUz0kcGtnX2N2X0NVREFfQ0ZMQUdTCisJQ1VEQV9MSUJTPSRwa2dfY3ZfQ1VEQV9MSUJTCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisJOgorZmkKK2Vsc2UKKwlDVURBX0NGTEFHUz0kcGtnX2N2X0NVREFfQ0ZMQUdTCisJQ1VEQV9MSUJTPSRwa2dfY3ZfQ1VEQV9MSUJTCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisJOgorZmkKK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDVURBIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBDVURBLi4uICIgPiY2OyB9CisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRDVURBX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0NVREFfQ0ZMQUdTPSIkQ1VEQV9DRkxBR1MiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJjdWRhLTcuMCBjdWRhcnQtNy4wXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImN1ZGEtNy4wIGN1ZGFydC03LjAiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICBwa2dfY3ZfQ1VEQV9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJjdWRhLTcuMCBjdWRhcnQtNy4wIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkQ1VEQV9MSUJTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfQ1VEQV9MSUJTPSIkQ1VEQV9MSUJTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiY3VkYS03LjAgY3VkYXJ0LTcuMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJjdWRhLTcuMCBjdWRhcnQtNy4wIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0NVREFfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJjdWRhLTcuMCBjdWRhcnQtNy4wIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIENVREFfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJjdWRhLTcuMCBjdWRhcnQtNy4wImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgQ1VEQV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImN1ZGEtNy4wIGN1ZGFydC03LjAiYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRDVURBX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQ1VEQSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQ1VEQS4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkQ1VEQV9DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9DVURBX0NGTEFHUz0iJENVREFfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiY3VkYS02LjUgY3VkYXJ0LTYuNVwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJjdWRhLTYuNSBjdWRhcnQtNi41IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0NVREFfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJENVREFfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0NVREFfTElCUz0iJENVREFfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImN1ZGEtNi41IGN1ZGFydC02LjVcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9DVURBX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBDVURBX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiY3VkYS02LjUgY3VkYXJ0LTYuNSJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIENVREFfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJjdWRhLTYuNSBjdWRhcnQtNi41ImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkQ1VEQV9QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCisgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhIGhlYWRlcnMvbGlicmFyaWVzIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEgaGVhZGVycy9saWJyYXJpZXMiID4mMjt9CitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisKKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEgaGVhZGVycy9saWJyYXJpZXMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYSBoZWFkZXJzL2xpYnJhcmllcyIgPiYyO30KK2Vsc2UKKwlDVURBX0NGTEFHUz0kcGtnX2N2X0NVREFfQ0ZMQUdTCisJQ1VEQV9MSUJTPSRwa2dfY3ZfQ1VEQV9MSUJTCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisJOgorZmkKK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDVURBIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBDVURBLi4uICIgPiY2OyB9CisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRDVURBX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0NVREFfQ0ZMQUdTPSIkQ1VEQV9DRkxBR1MiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJjdWRhLTYuNSBjdWRhcnQtNi41XCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImN1ZGEtNi41IGN1ZGFydC02LjUiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICBwa2dfY3ZfQ1VEQV9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJjdWRhLTYuNSBjdWRhcnQtNi41IiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkQ1VEQV9MSUJTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfQ1VEQV9MSUJTPSIkQ1VEQV9MSUJTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiY3VkYS02LjUgY3VkYXJ0LTYuNVwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJjdWRhLTYuNSBjdWRhcnQtNi41IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0NVREFfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJjdWRhLTYuNSBjdWRhcnQtNi41IiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIENVREFfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJjdWRhLTYuNSBjdWRhcnQtNi41ImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgQ1VEQV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImN1ZGEtNi41IGN1ZGFydC02LjUiYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRDVURBX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEgaGVhZGVycy9saWJyYXJpZXMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYSBoZWFkZXJzL2xpYnJhcmllcyIgPiYyO30KK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYSBoZWFkZXJzL2xpYnJhcmllcyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhIGhlYWRlcnMvbGlicmFyaWVzIiA+JjI7fQorZWxzZQorCUNVREFfQ0ZMQUdTPSRwa2dfY3ZfQ1VEQV9DRkxBR1MKKwlDVURBX0xJQlM9JHBrZ19jdl9DVURBX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKwk6CitmaQorZWxzZQorCUNVREFfQ0ZMQUdTPSRwa2dfY3ZfQ1VEQV9DRkxBR1MKKwlDVURBX0xJQlM9JHBrZ19jdl9DVURBX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKwk6CitmaQorZWxzZQorCUNVREFfQ0ZMQUdTPSRwa2dfY3ZfQ1VEQV9DRkxBR1MKKwlDVURBX0xJQlM9JHBrZ19jdl9DVURBX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKwk6CitmaQorICBmaQorCisgIEhBVkVfQ1VEQV9IPW5vCisgIEhBVkVfQ1VEQVJUX0g9bm8KKyAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICBDUFBGTEFHUz0iJENVREFfQ0ZMQUdTICRzYXZlX0NQUEZMQUdTICIKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImN1ZGEuaCIgImFjX2N2X2hlYWRlcl9jdWRhX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2N1ZGFfaCIgPSB4eWVzOyB0aGVuIDoKKyAgSEFWRV9DVURBX0g9eWVzCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYS5oIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEuaCIgPiYyO30KK2ZpCisKKworICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiY3VkYV9ydW50aW1lX2FwaS5oIiAiYWNfY3ZfaGVhZGVyX2N1ZGFfcnVudGltZV9hcGlfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfY3VkYV9ydW50aW1lX2FwaV9oIiA9IHh5ZXM7IHRoZW4gOgorICBIQVZFX0NVREFSVF9IPXllcworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGFfcnVudGltZV9hcGkuaCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhX3J1bnRpbWVfYXBpLmgiID4mMjt9CitmaQorCisKKyAgQ1BQRkxBR1M9JHNhdmVfQ1BQRkxBR1MKKworICAgIHNhdmVfTElCUz0iJExJQlMiCisgIExJQlM9IiRDVURBX0xJQlMgJHNhdmVfTElCUyIKKyAgSEFWRV9DVURBUlRfTElCPSJubyIKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY3VkYUdldEVycm9yU3RyaW5nIGluIC1sY3VkYXJ0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBjdWRhR2V0RXJyb3JTdHJpbmcgaW4gLWxjdWRhcnQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX2N1ZGFydF9jdWRhR2V0RXJyb3JTdHJpbmcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGN1ZGFydCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgY3VkYUdldEVycm9yU3RyaW5nICgpOworaW50CittYWluICgpCit7CityZXR1cm4gY3VkYUdldEVycm9yU3RyaW5nICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9jdWRhcnRfY3VkYUdldEVycm9yU3RyaW5nPXllcworZWxzZQorICBhY19jdl9saWJfY3VkYXJ0X2N1ZGFHZXRFcnJvclN0cmluZz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfY3VkYXJ0X2N1ZGFHZXRFcnJvclN0cmluZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9jdWRhcnRfY3VkYUdldEVycm9yU3RyaW5nIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX2N1ZGFydF9jdWRhR2V0RXJyb3JTdHJpbmciID0geHllczsgdGhlbiA6CisgIEhBVkVfQ1VEQVJUX0xJQj0ieWVzIgorZWxzZQorCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGFydCBsaWJyYXJ5IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGFydCBsaWJyYXJ5IiA+JjI7fQorZmkKKworICBIQVZFX0NVREFfTElCPSJubyIKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY3VJbml0IGluIC1sY3VkYSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgY3VJbml0IGluIC1sY3VkYS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfY3VkYV9jdUluaXQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGN1ZGEgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGN1SW5pdCAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGN1SW5pdCAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfY3VkYV9jdUluaXQ9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9jdWRhX2N1SW5pdD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfY3VkYV9jdUluaXQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfY3VkYV9jdUluaXQiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfY3VkYV9jdUluaXQiID0geHllczsgdGhlbiA6CisgIEhBVkVfQ1VEQV9MSUI9InllcyIKK2Vsc2UKKworICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhIGxpYnJhcnkiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYSBsaWJyYXJ5IiA+JjI7fQorZmkKKworICBMSUJTPSIkc2F2ZV9MSUJTIgorCisgICAgSEFWRV9OVkVOQ09ERUFQSV9IPW5vCisKKyAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICBDUFBGTEFHUz0iJE5WRU5DT0RFX0NGTEFHUyAkc2F2ZV9DUFBGTEFHUyIKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIm52RW5jb2RlQVBJLmgiICJhY19jdl9oZWFkZXJfbnZFbmNvZGVBUElfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbnZFbmNvZGVBUElfaCIgPSB4eWVzOyB0aGVuIDoKKworICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPG52RW5jb2RlQVBJLmg+CisgICAgICAgICAgI2lmIE5WRU5DQVBJX01BSk9SX1ZFUlNJT04gPCA1CisgICAgICAgICAgI2Vycm9yICJOZWVkIG52RW5jb2RlQVBJLmggPj0gNS4wIgorICAgICAgICAgICNlbmRpZgorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorCisgICAgICAgICAgSEFWRV9OVkVOQ09ERUFQSV9IPXllcworCitlbHNlCisKKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IG52RW5jb2RlQVBJLmggbXVzdCBiZSA+PSA1LjAiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogbnZFbmNvZGVBUEkuaCBtdXN0IGJlID49IDUuMCIgPiYyO30KKworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKKworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIG52RW5jb2RlQVBJLmgiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ291bGQgbm90IGZpbmQgbnZFbmNvZGVBUEkuaCIgPiYyO30KK2ZpCisKKworCisgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKKworICAgIEhBVkVfTlZFTkNPREVfTElCPW5vCisKKyAgc2F2ZWRfTElCUz0iJExJQlMiCisgIExJQlM9IiROVkVOQ09ERV9MSUJTICRzYXZlZF9MSUJTIgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBOdkVuY29kZUFQSUNyZWF0ZUluc3RhbmNlIGluIC1sbnZpZGlhLWVuY29kZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgTnZFbmNvZGVBUElDcmVhdGVJbnN0YW5jZSBpbiAtbG52aWRpYS1lbmNvZGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX252aWRpYV9lbmNvZGVfTnZFbmNvZGVBUElDcmVhdGVJbnN0YW5jZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sbnZpZGlhLWVuY29kZSAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgTnZFbmNvZGVBUElDcmVhdGVJbnN0YW5jZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIE52RW5jb2RlQVBJQ3JlYXRlSW5zdGFuY2UgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX252aWRpYV9lbmNvZGVfTnZFbmNvZGVBUElDcmVhdGVJbnN0YW5jZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX252aWRpYV9lbmNvZGVfTnZFbmNvZGVBUElDcmVhdGVJbnN0YW5jZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfbnZpZGlhX2VuY29kZV9OdkVuY29kZUFQSUNyZWF0ZUluc3RhbmNlIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX252aWRpYV9lbmNvZGVfTnZFbmNvZGVBUElDcmVhdGVJbnN0YW5jZSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9udmlkaWFfZW5jb2RlX052RW5jb2RlQVBJQ3JlYXRlSW5zdGFuY2UiID0geHllczsgdGhlbiA6CisgIEhBVkVfTlZFTkNPREVfTElCPSJ5ZXMiCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogQ291bGQgbm90IGZpbmQgbGlicmFyeSBudmlkaWEtZW5jb2RlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGxpYnJhcnkgbnZpZGlhLWVuY29kZSIgPiYyO30KK2ZpCisKKyAgTlZFTkNPREVfTElCUz0iJE5WRU5DT0RFX0xJQlMgLWxudmlkaWEtZW5jb2RlIgorCisgIExJQlM9IiRzYXZlZF9MSUJTIgorCisgIFVTRV9OVkVOQ19HU1RfR0w9bm8KKyAgaWYgdGVzdCAieCRIQVZFX0NVREFfSCIgPSAieHllcyIgXAorICAgICAgLWEgIngkSEFWRV9DVURBUlRfSCIgPSAieHllcyIgXAorICAgICAgLWEgIngkSEFWRV9DVURBX0xJQiIgPSAieHllcyIgXAorICAgICAgLWEgIngkSEFWRV9DVURBUlRfTElCIiA9ICJ4eWVzIiBcCisgICAgICAtYSAieCRIQVZFX05WRU5DT0RFQVBJX0giID0gInh5ZXMiIFwKKyAgICAgIC1hICJ4JEhBVkVfTlZFTkNPREVfTElCIiA9ICJ4eWVzIjsgdGhlbgorICAgIEhBVkVfTlZFTkM9InllcyIKKyAgICBpZiB0ZXN0IHgiJFVTRV9PUEVOR0wiID0geCJ5ZXMiOyB0aGVuCisgICAgICAgICAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgICAgICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MgJENVREFfQ0ZMQUdTIgorICAgICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImN1ZGFfZ2xfaW50ZXJvcC5oIiAiYWNfY3ZfaGVhZGVyX2N1ZGFfZ2xfaW50ZXJvcF9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9jdWRhX2dsX2ludGVyb3BfaCIgPSB4eWVzOyB0aGVuIDoKKworICAgICAgICBVU0VfTlZFTkNfR1NUX0dMPSJ5ZXMiCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfTlZFTkNfR1NUX0dMIDEgIiA+PmNvbmZkZWZzLmgKKworCitmaQorCisKKyAgICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKKyAgICBmaQorICBlbHNlCisgICAgSEFWRV9OVkVOQz0ibm8iCisgIGZpCisKKworICBMSUJTPSRnc3RfY2hlY2tfc2F2ZV9MSUJTCisgIExERkxBR1M9JGdzdF9jaGVja19zYXZlX0xERkxBR1MKKyAgQ0ZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DRkxBR1MKKyAgQ1BQRkxBR1M9JGdzdF9jaGVja19zYXZlX0NQUEZMQUdTCisgIENYWEZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DWFhGTEFHUworCisgICAgaWYgdGVzdCB4JEhBVkVfTlZFTkMgPSB4bm87IHRoZW4KKyAgICBVU0VfTlZFTkM9bm8KKyAgZWxzZQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBiZSBidWlsdDogbnZlbmMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBiZSBidWlsdDogbnZlbmMiID4mNjt9CisgIGZpCitmaQoraWYgdGVzdCB4JFVTRV9OVkVOQyA9IHh5ZXM7IHRoZW4KKyAgOgorICBpZiB0ZXN0ICJ4bnZlbmMiICE9ICJ4IjsgdGhlbgorICAgIEdTVF9QTFVHSU5TX1lFUz0iXHRudmVuY1xuJEdTVF9QTFVHSU5TX1lFUyIKKyAgZmkKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9OVkVOQyAvKiovIiA+PmNvbmZkZWZzLmgKKworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBUaGVzZSBwbHVnaW5zIHdpbGwgbm90IGJlIGJ1aWx0OiBudmVuYyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAqKiogVGhlc2UgcGx1Z2lucyB3aWxsIG5vdCBiZSBidWlsdDogbnZlbmMiID4mNjt9CisgIGlmIHRlc3QgInhudmVuYyIgIT0gIngiOyB0aGVuCisgICAgR1NUX1BMVUdJTlNfTk89Ilx0bnZlbmNcbiRHU1RfUExVR0lOU19OTyIKKyAgZmkKKyAgOgorZmkKKyBpZiB0ZXN0IHgkVVNFX05WRU5DID0geHllczsgdGhlbgorICBVU0VfTlZFTkNfVFJVRT0KKyAgVVNFX05WRU5DX0ZBTFNFPScjJworZWxzZQorICBVU0VfTlZFTkNfVFJVRT0nIycKKyAgVVNFX05WRU5DX0ZBTFNFPQorZmkKKworCisgaWYgdGVzdCAieCRVU0VfTlZFTkNfR1NUX0dMIiA9ICJ4eWVzIjsgdGhlbgorICBVU0VfTlZFTkNfR1NUX0dMX1RSVUU9CisgIFVTRV9OVkVOQ19HU1RfR0xfRkFMU0U9JyMnCitlbHNlCisgIFVTRV9OVkVOQ19HU1RfR0xfVFJVRT0nIycKKyAgVVNFX05WRU5DX0dTVF9HTF9GQUxTRT0KK2ZpCisKKworZWNobworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogdGlueWFsc2EgKioqIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICoqKiBjaGVja2luZyBmZWF0dXJlOiB0aW55YWxzYSAqKioiID4mNjt9CitpZiB0ZXN0ICJ4dGlueWFsc2EiICE9ICJ4IgordGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBmb3IgcGx1Zy1pbnM6IHRpbnlhbHNhICoqKiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAqKiogZm9yIHBsdWctaW5zOiB0aW55YWxzYSAqKioiID4mNjt9CitmaQorTk9VU0U9CitpZiB0ZXN0ICJ4JFVTRV9USU5ZQUxTQSIgPSAieG5vIjsgdGhlbgorICBOT1VTRT0ieWVzIgorZmkKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS10aW55YWxzYSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV90aW55YWxzYStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3RpbnlhbHNhOyAgY2FzZSAiJHtlbmFibGV2YWx9IiBpbgorICAgICAgeWVzKSBVU0VfVElOWUFMU0E9eWVzOzsKKyAgICAgIG5vKSBVU0VfVElOWUFMU0E9bm87OworICAgICAgKikgYXNfZm5fZXJyb3IgJD8gImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLXRpbnlhbHNhIiAiJExJTkVOTyIgNSA7OworICAgIGVzYWMKK2Vsc2UKKyAgIFVTRV9USU5ZQUxTQT15ZXMKK2ZpCisKK2lmIHRlc3QgIngkTk9VU0UiID0gInh5ZXMiOyB0aGVuCisgIFVTRV9USU5ZQUxTQT0ibm8iCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogKioqIHRpbnlhbHNhIHByZS1jb25maWd1cmVkIG5vdCB0byBiZSBidWlsdCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAqKiogdGlueWFsc2EgcHJlLWNvbmZpZ3VyZWQgbm90IHRvIGJlIGJ1aWx0IiA+JjI7fQorZmkKK05PVVNFPQorCitpZiBlY2hvICIgJEdTVF9QTFVHSU5TX05PTlBPUlRFRCAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgVElOWUFMU0EgIiA+IC9kZXYvbnVsbDsgdGhlbgorICBVU0VfVElOWUFMU0E9Im5vIgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICoqKiB0aW55YWxzYSBub3QgcG9ydGVkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICoqKiB0aW55YWxzYSBub3QgcG9ydGVkIiA+JjI7fQorZmkKKworCitpZiB0ZXN0IHgkVVNFX1RJTllBTFNBID0geHllczsgdGhlbgorCisgIGdzdF9jaGVja19zYXZlX0xJQlM9JExJQlMKKyAgZ3N0X2NoZWNrX3NhdmVfTERGTEFHUz0kTERGTEFHUworICBnc3RfY2hlY2tfc2F2ZV9DRkxBR1M9JENGTEFHUworICBnc3RfY2hlY2tfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKKyAgZ3N0X2NoZWNrX3NhdmVfQ1hYRkxBR1M9JENYWEZMQUdTCisKKyAgSEFWRV9USU5ZQUxTQT1ubworCisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJ0aW55YWxzYS9hc291bmRsaWIuaCIgImFjX2N2X2hlYWRlcl90aW55YWxzYV9hc291bmRsaWJfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfdGlueWFsc2FfYXNvdW5kbGliX2giID0geHllczsgdGhlbiA6CisgIEhBVkVfVElOWUFMU0E9InllcyIKK2Vsc2UKKyAgSEFWRV9USU5ZQUxTQT0ibm8iCitmaQorCisKKworCisgIExJQlM9JGdzdF9jaGVja19zYXZlX0xJQlMKKyAgTERGTEFHUz0kZ3N0X2NoZWNrX3NhdmVfTERGTEFHUworICBDRkxBR1M9JGdzdF9jaGVja19zYXZlX0NGTEFHUworICBDUFBGTEFHUz0kZ3N0X2NoZWNrX3NhdmVfQ1BQRkxBR1MKKyAgQ1hYRkxBR1M9JGdzdF9jaGVja19zYXZlX0NYWEZMQUdTCisKKyAgICBpZiB0ZXN0IHgkSEFWRV9USU5ZQUxTQSA9IHhubzsgdGhlbgorICAgIFVTRV9USU5ZQUxTQT1ubworICBlbHNlCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogVGhlc2UgcGx1Z2lucyB3aWxsIGJlIGJ1aWx0OiB0aW55YWxzYSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAqKiogVGhlc2UgcGx1Z2lucyB3aWxsIGJlIGJ1aWx0OiB0aW55YWxzYSIgPiY2O30KKyAgZmkKK2ZpCitpZiB0ZXN0IHgkVVNFX1RJTllBTFNBID0geHllczsgdGhlbgorICA6CisgIGlmIHRlc3QgInh0aW55YWxzYSIgIT0gIngiOyB0aGVuCisgICAgR1NUX1BMVUdJTlNfWUVTPSJcdHRpbnlhbHNhXG4kR1NUX1BMVUdJTlNfWUVTIgorICBmaQorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1RJTllBTFNBIC8qKi8iID4+Y29uZmRlZnMuaAorCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBub3QgYmUgYnVpbHQ6IHRpbnlhbHNhIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICoqKiBUaGVzZSBwbHVnaW5zIHdpbGwgbm90IGJlIGJ1aWx0OiB0aW55YWxzYSIgPiY2O30KKyAgaWYgdGVzdCAieHRpbnlhbHNhIiAhPSAieCI7IHRoZW4KKyAgICBHU1RfUExVR0lOU19OTz0iXHR0aW55YWxzYVxuJEdTVF9QTFVHSU5TX05PIgorICBmaQorICA6CitmaQorIGlmIHRlc3QgeCRVU0VfVElOWUFMU0EgPSB4eWVzOyB0aGVuCisgIFVTRV9USU5ZQUxTQV9UUlVFPQorICBVU0VfVElOWUFMU0FfRkFMU0U9JyMnCitlbHNlCisgIFVTRV9USU5ZQUxTQV9UUlVFPScjJworICBVU0VfVElOWUFMU0FfRkFMU0U9CitmaQorCisKIAogCiBpZiB0ZXN0ICJ4JEJVSUxEX0VYVEVSTkFMIiA9ICJ4eWVzIjsgdGhlbgpAQCAtMzY2NjIsMTIgKzM4ODA5LDEyIEBACiAgICAgICAgIHBrZ19jdl9BU1NSRU5ERVJfQ0ZMQUdTPSIkQVNTUkVOREVSX0NGTEFHUyIKICAgICBlbHNlCiAgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCi0gICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImxpYmFzcyA+PSAwLjkuNFwiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJsaWJhc3MgPj0gMC45LjQiKSAyPiY1CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImxpYmFzcyA+PSAwLjEwLjJcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGliYXNzID49IDAuMTAuMiIpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCi0gIHBrZ19jdl9BU1NSRU5ERVJfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAibGliYXNzID49IDAuOS40IiAyPi9kZXYvbnVsbGAKKyAgcGtnX2N2X0FTU1JFTkRFUl9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJsaWJhc3MgPj0gMC4xMC4yIiAyPi9kZXYvbnVsbGAKIGVsc2UKICAgcGtnX2ZhaWxlZD15ZXMKIGZpCkBAIC0zNjY4MCwxMiArMzg4MjcsMTIgQEAKICAgICAgICAgcGtnX2N2X0FTU1JFTkRFUl9MSUJTPSIkQVNTUkVOREVSX0xJQlMiCiAgICAgZWxzZQogICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJhc3MgPj0gMC45LjRcIiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGliYXNzID49IDAuOS40IikgMj4mNQorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJhc3MgPj0gMC4xMC4yXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImxpYmFzcyA+PSAwLjEwLjIiKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotICBwa2dfY3ZfQVNTUkVOREVSX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAibGliYXNzID49IDAuOS40IiAyPi9kZXYvbnVsbGAKKyAgcGtnX2N2X0FTU1JFTkRFUl9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgImxpYmFzcyA+PSAwLjEwLjIiIDI+L2Rldi9udWxsYAogZWxzZQogICBwa2dfZmFpbGVkPXllcwogZmkKQEAgLTM2NzA0LDkgKzM4ODUxLDkgQEAKICAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCiBmaQogICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KLQkgICAgICAgIEFTU1JFTkRFUl9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImxpYmFzcyA+PSAwLjkuNCJgCisJICAgICAgICBBU1NSRU5ERVJfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJsaWJhc3MgPj0gMC4xMC4yImAKICAgICAgICAgZWxzZQotCSAgICAgICAgQVNTUkVOREVSX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAibGliYXNzID49IDAuOS40ImAKKwkgICAgICAgIEFTU1JFTkRFUl9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImxpYmFzcyA+PSAwLjEwLjIiYAogICAgICAgICBmaQogCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwogCWVjaG8gIiRBU1NSRU5ERVJfUEtHX0VSUk9SUyIgPiY1CkBAIC0zODkwOSw2ICs0MTA1Niw0NiBAQAogCiAKIAorIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ3YXlsYW5kLXNjYW5uZXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHdheWxhbmQtc2Nhbm5lcjsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfd2F5bGFuZF9zY2FubmVyKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkd2F5bGFuZF9zY2FubmVyIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX3dheWxhbmRfc2Nhbm5lcj0iJHdheWxhbmRfc2Nhbm5lciIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfd2F5bGFuZF9zY2FubmVyPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQord2F5bGFuZF9zY2FubmVyPSRhY19jdl9wYXRoX3dheWxhbmRfc2Nhbm5lcgoraWYgdGVzdCAtbiAiJHdheWxhbmRfc2Nhbm5lciI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3YXlsYW5kX3NjYW5uZXIiID4mNQorJGFzX2VjaG8gIiR3YXlsYW5kX3NjYW5uZXIiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKwogZWNobwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogd2F5bGFuZCBzaW5rICoqKiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiAqKiogY2hlY2tpbmcgZmVhdHVyZTogd2F5bGFuZCBzaW5rICoqKiIgPiY2O30KQEAgLTM4OTY2LDEyICs0MTE1MywxMiBAQAogICAgICAgICBwa2dfY3ZfV0FZTEFORF9DRkxBR1M9IiRXQVlMQU5EX0NGTEFHUyIKICAgICBlbHNlCiAgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCi0gICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIndheWxhbmQtY2xpZW50ID49IDEuNC4wIHdheWxhbmQtc2Nhbm5lclwiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJ3YXlsYW5kLWNsaWVudCA+PSAxLjQuMCB3YXlsYW5kLXNjYW5uZXIiKSAyPiY1CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIndheWxhbmQtY2xpZW50ID49IDEuNC4wXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIndheWxhbmQtY2xpZW50ID49IDEuNC4wIikgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X1dBWUxBTkRfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAid2F5bGFuZC1jbGllbnQgPj0gMS40LjAgd2F5bGFuZC1zY2FubmVyIiAyPi9kZXYvbnVsbGAKKyAgcGtnX2N2X1dBWUxBTkRfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAid2F5bGFuZC1jbGllbnQgPj0gMS40LjAiIDI+L2Rldi9udWxsYAogZWxzZQogICBwa2dfZmFpbGVkPXllcwogZmkKQEAgLTM4OTg0LDEyICs0MTE3MSwxMiBAQAogICAgICAgICBwa2dfY3ZfV0FZTEFORF9MSUJTPSIkV0FZTEFORF9MSUJTIgogICAgIGVsc2UKICAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwid2F5bGFuZC1jbGllbnQgPj0gMS40LjAgd2F5bGFuZC1zY2FubmVyXCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIndheWxhbmQtY2xpZW50ID49IDEuNC4wIHdheWxhbmQtc2Nhbm5lciIpIDI+JjUKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwid2F5bGFuZC1jbGllbnQgPj0gMS40LjBcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAid2F5bGFuZC1jbGllbnQgPj0gMS40LjAiKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotICBwa2dfY3ZfV0FZTEFORF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgIndheWxhbmQtY2xpZW50ID49IDEuNC4wIHdheWxhbmQtc2Nhbm5lciIgMj4vZGV2L251bGxgCisgIHBrZ19jdl9XQVlMQU5EX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAid2F5bGFuZC1jbGllbnQgPj0gMS40LjAiIDI+L2Rldi9udWxsYAogZWxzZQogICBwa2dfZmFpbGVkPXllcwogZmkKQEAgLTM5MDA4LDkgKzQxMTk1LDkgQEAKICAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCiBmaQogICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KLQkgICAgICAgIFdBWUxBTkRfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJ3YXlsYW5kLWNsaWVudCA+PSAxLjQuMCB3YXlsYW5kLXNjYW5uZXIiYAorCSAgICAgICAgV0FZTEFORF9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgIndheWxhbmQtY2xpZW50ID49IDEuNC4wImAKICAgICAgICAgZWxzZQotCSAgICAgICAgV0FZTEFORF9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgIndheWxhbmQtY2xpZW50ID49IDEuNC4wIHdheWxhbmQtc2Nhbm5lciJgCisJICAgICAgICBXQVlMQU5EX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAid2F5bGFuZC1jbGllbnQgPj0gMS40LjAiYAogICAgICAgICBmaQogCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwogCWVjaG8gIiRXQVlMQU5EX1BLR19FUlJPUlMiID4mNQpAQCAtMzkwMjgsNyArNDEyMTUsMTQgQEAKICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiAkYXNfZWNobyAieWVzIiA+JjY7IH0KIAotICAgIEhBVkVfV0FZTEFORD0ieWVzIgorICAgIGlmIHRlc3QgIngkd2F5bGFuZF9zY2FubmVyIiAhPSAieCI7IHRoZW4KKyAgICAgIEhBVkVfV0FZTEFORD0ieWVzIgorICAgIGVsc2UKKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB3YXlsYW5kLXNjYW5uZXIgaXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIHdheWxhbmQgcGx1Z2luIiA+JjUKKyRhc19lY2hvICJ3YXlsYW5kLXNjYW5uZXIgaXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIHdheWxhbmQgcGx1Z2luIiA+JjY7IH0KKyAgICAgIEhBVkVfV0FZTEFORD0ibm8iCisgICAgZmkKKwogZmkKIAogCkBAIC0zOTA3MSw0NyArNDEyNjUsNiBAQAogCiAKIAotIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ3YXlsYW5kLXNjYW5uZXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IHdheWxhbmQtc2Nhbm5lcjsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfd2F5bGFuZF9zY2FubmVyKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2FzZSAkd2F5bGFuZF9zY2FubmVyIGluCi0gIFtcXC9dKiB8ID86W1xcL10qKQotICBhY19jdl9wYXRoX3dheWxhbmRfc2Nhbm5lcj0iJHdheWxhbmRfc2Nhbm5lciIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0gICopCi0gIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3BhdGhfd2F5bGFuZF9zY2FubmVyPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi0gIDs7Ci1lc2FjCi1maQotd2F5bGFuZF9zY2FubmVyPSRhY19jdl9wYXRoX3dheWxhbmRfc2Nhbm5lcgotaWYgdGVzdCAtbiAiJHdheWxhbmRfc2Nhbm5lciI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3YXlsYW5kX3NjYW5uZXIiID4mNQotJGFzX2VjaG8gIiR3YXlsYW5kX3NjYW5uZXIiID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotCiBlY2hvCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBjaGVja2luZyBmZWF0dXJlOiBXZWJQICoqKiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiAqKiogY2hlY2tpbmcgZmVhdHVyZTogV2ViUCAqKioiID4mNjt9CkBAIC0zOTk4Myw4ICs0MjEzNiw4IEBACiAKIAogZWNobwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogQUFDIGRlY29kZXIgcGx1Zy1pbiAqKioiID4mNQotJGFzX2VjaG8gIiRhc19tZTogKioqIGNoZWNraW5nIGZlYXR1cmU6IEFBQyBkZWNvZGVyIHBsdWctaW4gKioqIiA+JjY7fQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogRkFBRDIgQUFDIGRlY29kZXIgcGx1Zy1pbiAqKioiID4mNQorJGFzX2VjaG8gIiRhc19tZTogKioqIGNoZWNraW5nIGZlYXR1cmU6IEZBQUQyIEFBQyBkZWNvZGVyIHBsdWctaW4gKioqIiA+JjY7fQogaWYgdGVzdCAieGZhYWQiICE9ICJ4IgogdGhlbgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBmb3IgcGx1Zy1pbnM6IGZhYWQgKioqIiA+JjUKQEAgLTQwMDI5LDcyICs0MjE4Miw2IEBACiAKICAgSEFWRV9GQUFEPW5vCiAKLSAgSEFWRV9GQUFEPSJ5ZXMiCi0gIGZhYWRfaGRyPSIiCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZmFhY0RlY09wZW4gaW4gLWxmYWFkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBmYWFjRGVjT3BlbiBpbiAtbGZhYWQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfbGliX2ZhYWRfZmFhY0RlY09wZW4rOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCi1MSUJTPSItbGZhYWQgJExJQk0gJExJQlMiCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLS8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgotICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLWNoYXIgZmFhY0RlY09wZW4gKCk7Ci1pbnQKLW1haW4gKCkKLXsKLXJldHVybiBmYWFjRGVjT3BlbiAoKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9saWJfZmFhZF9mYWFjRGVjT3Blbj15ZXMKLWVsc2UKLSAgYWNfY3ZfbGliX2ZhYWRfZmFhY0RlY09wZW49bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2ZhYWRfZmFhY0RlY09wZW4iID4mNQotJGFzX2VjaG8gIiRhY19jdl9saWJfZmFhZF9mYWFjRGVjT3BlbiIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9mYWFkX2ZhYWNEZWNPcGVuIiA9IHh5ZXM7IHRoZW4gOgotICBIQVZFX0ZBQUQ9eWVzCi1lbHNlCi0gIEhBVkVfRkFBRD1ubwotZmkKLQotICBpZiB0ZXN0ICJ4JEhBVkVfRkFBRCIgPSAieHllcyI7IHRoZW4KLSAgICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiZmFhZC5oIiAiYWNfY3ZfaGVhZGVyX2ZhYWRfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfZmFhZF9oIiA9IHh5ZXM7IHRoZW4gOgotICA6Ci1lbHNlCi0gIEhBVkVfRkFBRD1ubwotZmkKLQotCi0gICAgaWYgdGVzdCAieCRIQVZFX0ZBQUQiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICBGQUFEX0xJQlM9Ii1sZmFhZCAkTElCTSIKLSAgICBlbHNlCi0gICAgICBIQVZFX0ZBQUQ9Im5vIgotICAgIGZpCi0gIGVsc2UKLSAgICBIQVZFX0ZBQUQ9Im5vIgotICBmaQotCi0KLQotICBpZiB0ZXN0ICRIQVZFX0ZBQUQgPSAibm8iOyB0aGVuCiAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgTmVBQUNEZWNPcGVuIGluIC1sZmFhZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgTmVBQUNEZWNPcGVuIGluIC1sZmFhZC4uLiAiID4mNjsgfQpAQCAtNDAxNDgsMzEgKzQyMjM1LDcgQEAKIAogCiAgICAgaWYgdGVzdCAieCRIQVZFX0ZBQUQiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICAgRkFBRF9MSUJTPSItbGZhYWQgJExJQk0iCiAKLSRhc19lY2hvICIjZGVmaW5lIEZBQURfSVNfTkVBQUMgMSIgPj5jb25mZGVmcy5oCi0KLSAgICAgICAgZmFhZF9oZHI9Im5lYWFjZGVjLmgiCi0KLSAgICBlbHNlCi0KLSAgICAgICAgSEFWRV9GQUFEPSJubyIKLQotICAgIGZpCi0gIGVsc2UKLQotICAgICAgICBIQVZFX0ZBQUQ9Im5vIgotCi0gIGZpCi0KLQotCi0gIGVsc2UKLSAgICBmYWFkX2hkcj0iZmFhZC5oIgotICBmaQotICBpZiB0ZXN0ICRIQVZFX0ZBQUQgPSAieWVzIjsgdGhlbgotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgQ2hlY2tpbmcgZm9yIEZBQUQgPj0gMi4wIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIENoZWNraW5nIGZvciBGQUFEID49IDIuMC4uLiAiID4mNjsgfQogICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICNpbmNsdWRlIDxmYWFkLmg+CkBAIC00MDE4MCwxMyArNDIyNDMsMTEgQEAKIG1haW4gKCkKIHsKIAotICAgICAgICAjaWYgIWRlZmluZWQoRkFBRDJfVkVSU0lPTikgfHwgIWRlZmluZWQoRkFBRF9GTVRfRE9VQkxFKQotICAgICAgICAjZXJyb3IgTm90IGZhYWQyCi0gICAgICAgICNlbHNlCi0gICAgICAgIC8qIFJlbGVhc2UgY2FuZGlkYXRlIG9mIDIuMCBpcyBub3QgZ29vZCBlbm91Z2ggZm9yIHVzLiBUaGlzIGZpZWxkCi0gICAgICAgICAqIHdhcyBhZGRlZCBvbmx5IGluIDIuMCBmaW5hbCBhbmQgZG9lcyBub3QgZXhpc3QgaW4gMi4wLVJDMyAqLwotICAgICAgICBmYWFjRGVjQ29uZmlndXJhdGlvbiBjb25mOyBjb25mLmRvbnRVcFNhbXBsZUltcGxpY2l0U0JSID0gMTsKLSAgICAgICAgI2VuZGlmCisgICAgICAjaWYgIWRlZmluZWQoRkFBRDJfVkVSU0lPTikgfHwgIWRlZmluZWQoRkFBRF9GTVRfRE9VQkxFKQorICAgICAgI2Vycm9yIE5vdCBmYWFkMgorICAgICAgI2VsaWYgIWRlZmluZWQoTEFUTSkKKyAgICAgICNlcnJvciBOb3QgZmFhZDIgPj0gMi43CisgICAgICAjZW5kaWYKIAogICA7CiAgIHJldHVybiAwOwpAQCAtNDAxOTUsNTIgKzQyMjU2LDMzIEBACiBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAKICAgICAgIEhBVkVfRkFBRD0ieWVzIgotCi0gICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIENoZWNraW5nIEZBQUQyIHZlcnNpb24gaW4gJGZhYWRfaGRyIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIENoZWNraW5nIEZBQUQyIHZlcnNpb24gaW4gJGZhYWRfaGRyLi4uICIgPiY2OyB9Ci0gICAgICBmb3IgbWlub3IgaW4gMTAgOSA4IDcgNiA1IDA7IGRvCi0gICAgICAgIGlmIHRlc3QgeCRmYWFkMl9taW5vcl92ZXJzaW9uID0gIngiOyB0aGVuCi0gICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi0gICAgICAgICAgICAgICNpbmNsdWRlIDwkZmFhZF9oZHI+Ci0gICAgICAgICAgICAgIEZBQUQyX1ZFUlNJT04KLQotX0FDRU9GCi1pZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0gICRFR1JFUCAiXCIyXC4kbWlub3JcIiQiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0KLSAgICAgICAgICAgICAgZmFhZDJfbWlub3JfdmVyc2lvbj0kbWlub3IKLQotZmkKLXJtIC1mIGNvbmZ0ZXN0KgotCi0gICAgICAgIGZpCi0gICAgICBkb25lCi0gICAgICBpZiB0ZXN0IHgkZmFhZDJfbWlub3JfdmVyc2lvbiA9ICJ4IjsgdGhlbgotICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8gaWRlYSIgPiY1Ci0kYXNfZWNobyAibm8gaWRlYSIgPiY2OyB9Ci0gICAgICBlbHNlCi0gICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAyLiRmYWFkMl9taW5vcl92ZXJzaW9uIiA+JjUKLSRhc19lY2hvICIyLiRmYWFkMl9taW5vcl92ZXJzaW9uIiA+JjY7IH0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBGQUFEMl9NSU5PUl9WRVJTSU9OICRmYWFkMl9taW5vcl92ZXJzaW9uCi1fQUNFT0YKLQotICAgICAgZmkKKyAgICAgIEZBQURfTElCUz0iLWxmYWFkIgogCiBlbHNlCiAKKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogRm91bmQgbGliZmFhZCwgYnV0IHZlcnNpb24gbm90IHJlY2VudCBlbm91Z2guIE5lZWQgZmFhZDIgPj0gMi43IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IEZvdW5kIGxpYmZhYWQsIGJ1dCB2ZXJzaW9uIG5vdCByZWNlbnQgZW5vdWdoLiBOZWVkIGZhYWQyID49IDIuNyIgPiYyO30KICAgICAgIEhBVkVfRkFBRD0ibm8iCiAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworICAgIGVsc2UKKworICAgICAgSEFWRV9GQUFEPSJubyIKKworICAgIGZpCisgIGVsc2UKKworICAgICAgSEFWRV9GQUFEPSJubyIKKwogICBmaQogCiAKIAogCisKKwogICBMSUJTPSRnc3RfY2hlY2tfc2F2ZV9MSUJTCiAgIExERkxBR1M9JGdzdF9jaGVja19zYXZlX0xERkxBR1MKICAgQ0ZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DRkxBR1MKQEAgLTQzMTIxLDE2NyArNDUxNjMsNiBAQAogCiAKIGVjaG8KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGNoZWNraW5nIGZlYXR1cmU6IG1wZzEyMyBhdWRpbyBkZWNvZGVyICoqKiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAqKiogY2hlY2tpbmcgZmVhdHVyZTogbXBnMTIzIGF1ZGlvIGRlY29kZXIgKioqIiA+JjY7fQotaWYgdGVzdCAieG1wZzEyMyIgIT0gIngiCi10aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGZvciBwbHVnLWluczogbXBnMTIzICoqKiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAqKiogZm9yIHBsdWctaW5zOiBtcGcxMjMgKioqIiA+JjY7fQotZmkKLU5PVVNFPQotaWYgdGVzdCAieCRVU0VfTVBHMTIzIiA9ICJ4bm8iOyB0aGVuCi0gIE5PVVNFPSJ5ZXMiCi1maQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1wZzEyMyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9tcGcxMjMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9tcGcxMjM7ICBjYXNlICIke2VuYWJsZXZhbH0iIGluCi0gICAgICB5ZXMpIFVTRV9NUEcxMjM9eWVzOzsKLSAgICAgIG5vKSBVU0VfTVBHMTIzPW5vOzsKLSAgICAgICopIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1tcGcxMjMiICIkTElORU5PIiA1IDs7Ci0gICAgZXNhYwotZWxzZQotICAgVVNFX01QRzEyMz15ZXMKLWZpCi0KLWlmIHRlc3QgIngkTk9VU0UiID0gInh5ZXMiOyB0aGVuCi0gIFVTRV9NUEcxMjM9Im5vIgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICoqKiBtcGcxMjMgcHJlLWNvbmZpZ3VyZWQgbm90IHRvIGJlIGJ1aWx0IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICoqKiBtcGcxMjMgcHJlLWNvbmZpZ3VyZWQgbm90IHRvIGJlIGJ1aWx0IiA+JjI7fQotZmkKLU5PVVNFPQotCi1pZiBlY2hvICIgJEdTVF9QTFVHSU5TX05PTlBPUlRFRCAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgTVBHMTIzICIgPiAvZGV2L251bGw7IHRoZW4KLSAgVVNFX01QRzEyMz0ibm8iCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogKioqIG1wZzEyMyBub3QgcG9ydGVkIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICoqKiBtcGcxMjMgbm90IHBvcnRlZCIgPiYyO30KLWZpCi0KLQotaWYgdGVzdCB4JFVTRV9NUEcxMjMgPSB4eWVzOyB0aGVuCi0KLSAgZ3N0X2NoZWNrX3NhdmVfTElCUz0kTElCUwotICBnc3RfY2hlY2tfc2F2ZV9MREZMQUdTPSRMREZMQUdTCi0gIGdzdF9jaGVja19zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gIGdzdF9jaGVja19zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUwotICBnc3RfY2hlY2tfc2F2ZV9DWFhGTEFHUz0kQ1hYRkxBR1MKLQotICBIQVZFX01QRzEyMz1ubwotCi0KLXBrZ19mYWlsZWQ9bm8KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIE1QRzEyMyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgTVBHMTIzLi4uICIgPiY2OyB9Ci0KLWlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotICAgIGlmIHRlc3QgLW4gIiRNUEcxMjNfQ0ZMQUdTIjsgdGhlbgotICAgICAgICBwa2dfY3ZfTVBHMTIzX0NGTEFHUz0iJE1QRzEyM19DRkxBR1MiCi0gICAgZWxzZQotICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJtcGcxMjMgPj0gMS4xM1wiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJsaWJtcGcxMjMgPj0gMS4xMyIpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCi0gIHBrZ19jdl9NUEcxMjNfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAibGlibXBnMTIzID49IDEuMTMiIDI+L2Rldi9udWxsYAotZWxzZQotICBwa2dfZmFpbGVkPXllcwotZmkKLSAgICBmaQotZWxzZQotCXBrZ19mYWlsZWQ9dW50cmllZAotZmkKLWlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotICAgIGlmIHRlc3QgLW4gIiRNUEcxMjNfTElCUyI7IHRoZW4KLSAgICAgICAgcGtnX2N2X01QRzEyM19MSUJTPSIkTVBHMTIzX0xJQlMiCi0gICAgZWxzZQotICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJtcGcxMjMgPj0gMS4xM1wiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJsaWJtcGcxMjMgPj0gMS4xMyIpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCi0gIHBrZ19jdl9NUEcxMjNfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJsaWJtcGcxMjMgPj0gMS4xMyIgMj4vZGV2L251bGxgCi1lbHNlCi0gIHBrZ19mYWlsZWQ9eWVzCi1maQotICAgIGZpCi1lbHNlCi0JcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotCi0KLQotaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgotCi1pZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgotICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCi1lbHNlCi0gICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubwotZmkKLSAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCi0JICAgICAgICBNUEcxMjNfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJsaWJtcGcxMjMgPj0gMS4xMyJgCi0gICAgICAgIGVsc2UKLQkgICAgICAgIE1QRzEyM19QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImxpYm1wZzEyMyA+PSAxLjEzImAKLSAgICAgICAgZmkKLQkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKLQllY2hvICIkTVBHMTIzX1BLR19FUlJPUlMiID4mNQotCi0JeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci0gICAgICAgICAgICAgICAgSEFWRV9NUEcxMjM9Im5vIgotZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgotCUhBVkVfTVBHMTIzPSJubyIKLWVsc2UKLQlNUEcxMjNfQ0ZMQUdTPSRwa2dfY3ZfTVBHMTIzX0NGTEFHUwotCU1QRzEyM19MSUJTPSRwa2dfY3ZfTVBHMTIzX0xJQlMKLSAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KLQlIQVZFX01QRzEyMz0ieWVzIgotZmkKLQotCi0KLQotICBMSUJTPSRnc3RfY2hlY2tfc2F2ZV9MSUJTCi0gIExERkxBR1M9JGdzdF9jaGVja19zYXZlX0xERkxBR1MKLSAgQ0ZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DRkxBR1MKLSAgQ1BQRkxBR1M9JGdzdF9jaGVja19zYXZlX0NQUEZMQUdTCi0gIENYWEZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DWFhGTEFHUwotCi0gICAgaWYgdGVzdCB4JEhBVkVfTVBHMTIzID0geG5vOyB0aGVuCi0gICAgVVNFX01QRzEyMz1ubwotICBlbHNlCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogVGhlc2UgcGx1Z2lucyB3aWxsIGJlIGJ1aWx0OiBtcGcxMjMiID4mNQotJGFzX2VjaG8gIiRhc19tZTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBiZSBidWlsdDogbXBnMTIzIiA+JjY7fQotICBmaQotZmkKLWlmIHRlc3QgeCRVU0VfTVBHMTIzID0geHllczsgdGhlbgotICA6Ci0gIGlmIHRlc3QgInhtcGcxMjMiICE9ICJ4IjsgdGhlbgotICAgIEdTVF9QTFVHSU5TX1lFUz0iXHRtcGcxMjNcbiRHU1RfUExVR0lOU19ZRVMiCi0gIGZpCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfTVBHMTIzIC8qKi8iID4+Y29uZmRlZnMuaAotCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBub3QgYmUgYnVpbHQ6IG1wZzEyMyIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAqKiogVGhlc2UgcGx1Z2lucyB3aWxsIG5vdCBiZSBidWlsdDogbXBnMTIzIiA+JjY7fQotICBpZiB0ZXN0ICJ4bXBnMTIzIiAhPSAieCI7IHRoZW4KLSAgICBHU1RfUExVR0lOU19OTz0iXHRtcGcxMjNcbiRHU1RfUExVR0lOU19OTyIKLSAgZmkKLSAgOgotZmkKLSBpZiB0ZXN0IHgkVVNFX01QRzEyMyA9IHh5ZXM7IHRoZW4KLSAgVVNFX01QRzEyM19UUlVFPQotICBVU0VfTVBHMTIzX0ZBTFNFPScjJwotZWxzZQotICBVU0VfTVBHMTIzX1RSVUU9JyMnCi0gIFVTRV9NUEcxMjNfRkFMU0U9Ci1maQotCi0KLQotZWNobwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogbXBsZXggKioqIiA+JjUKICRhc19lY2hvICIkYXNfbWU6ICoqKiBjaGVja2luZyBmZWF0dXJlOiBtcGxleCAqKioiID4mNjt9CiBpZiB0ZXN0ICJ4bXBsZXgiICE9ICJ4IgpAQCAtNDYxNjAsNiArNDgwNDEsMTAgQEAKICAgSEFWRV9SU1ZHPW5vCiAKIAorICB3aGljaD0ibGlicnN2Zy0yLjAgPj0gMi4zNi4yIgorICAgIHJlcXVpcmVkPSJubyIKKworCiBwa2dfZmFpbGVkPW5vCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBSU1ZHIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBSU1ZHLi4uICIgPiY2OyB9CkBAIC00NjE2OSwxMiArNDgwNTQsMTIgQEAKICAgICAgICAgcGtnX2N2X1JTVkdfQ0ZMQUdTPSIkUlNWR19DRkxBR1MiCiAgICAgZWxzZQogICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJyc3ZnLTIuMCA+PSAyLjM2IGNhaXJvXCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImxpYnJzdmctMi4wID49IDIuMzYgY2Fpcm8iKSAyPiY1CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X1JTVkdfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAibGlicnN2Zy0yLjAgPj0gMi4zNiBjYWlybyIgMj4vZGV2L251bGxgCisgIHBrZ19jdl9SU1ZHX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgIiR3aGljaCIgMj4vZGV2L251bGxgCiBlbHNlCiAgIHBrZ19mYWlsZWQ9eWVzCiBmaQpAQCAtNDYxODcsMTIgKzQ4MDcyLDEyIEBACiAgICAgICAgIHBrZ19jdl9SU1ZHX0xJQlM9IiRSU1ZHX0xJQlMiCiAgICAgZWxzZQogICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJyc3ZnLTIuMCA+PSAyLjM2IGNhaXJvXCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImxpYnJzdmctMi4wID49IDIuMzYgY2Fpcm8iKSAyPiY1CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X1JTVkdfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJsaWJyc3ZnLTIuMCA+PSAyLjM2IGNhaXJvIiAyPi9kZXYvbnVsbGAKKyAgcGtnX2N2X1JTVkdfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICIkd2hpY2giIDI+L2Rldi9udWxsYAogZWxzZQogICBwa2dfZmFpbGVkPXllcwogZmkKQEAgLTQ2MjExLDkgKzQ4MDk2LDkgQEAKICAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCiBmaQogICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KLQkgICAgICAgIFJTVkdfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJsaWJyc3ZnLTIuMCA+PSAyLjM2IGNhaXJvImAKKwkgICAgICAgIFJTVkdfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAogICAgICAgICBlbHNlCi0JICAgICAgICBSU1ZHX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAibGlicnN2Zy0yLjAgPj0gMi4zNiBjYWlybyJgCisJICAgICAgICBSU1ZHX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiJHdoaWNoImAKICAgICAgICAgZmkKIAkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKIAllY2hvICIkUlNWR19QS0dfRVJST1JTIiA+JjUKQEAgLTQ2MjIxLDExICs0ODEwNiwyMyBAQAogCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogCi0gICAgSEFWRV9SU1ZHPSJubyIKKyAgICAgIEhBVkVfUlNWRz0ibm8iCisgICAgICBpZiB0ZXN0ICJ4JHJlcXVpcmVkIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiJFJTVkdfUEtHX0VSUk9SUyIgIiRMSU5FTk8iIDUKKyAgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkUlNWR19QS0dfRVJST1JTIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICRSU1ZHX1BLR19FUlJPUlMiID4mNjt9CisgICAgICBmaQogCiBlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCiAKLSAgICBIQVZFX1JTVkc9Im5vIgorICAgICAgSEFWRV9SU1ZHPSJubyIKKyAgICAgIGlmIHRlc3QgIngkcmVxdWlyZWQiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICIkUlNWR19QS0dfRVJST1JTIiAiJExJTkVOTyIgNQorICAgICAgZWxzZQorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRSU1ZHX1BLR19FUlJPUlMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJFJTVkdfUEtHX0VSUk9SUyIgPiY2O30KKyAgICAgIGZpCiAKIGVsc2UKIAlSU1ZHX0NGTEFHUz0kcGtnX2N2X1JTVkdfQ0ZMQUdTCkBAIC00NjIzMyw4MyArNDgxMzAsNyBAQAogICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKICRhc19lY2hvICJ5ZXMiID4mNjsgfQogCi0gICAgSEFWRV9SU1ZHPSJ5ZXMiCi0KLXBrZ19mYWlsZWQ9bm8KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFJTVkdfMl8zNl8yIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBSU1ZHXzJfMzZfMi4uLiAiID4mNjsgfQotCi1pZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KLSAgICBpZiB0ZXN0IC1uICIkUlNWR18yXzM2XzJfQ0ZMQUdTIjsgdGhlbgotICAgICAgICBwa2dfY3ZfUlNWR18yXzM2XzJfQ0ZMQUdTPSIkUlNWR18yXzM2XzJfQ0ZMQUdTIgotICAgIGVsc2UKLSAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibGlicnN2Zy0yLjAgPj0gMi4zNi4yXCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImxpYnJzdmctMi4wID49IDIuMzYuMiIpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCi0gIHBrZ19jdl9SU1ZHXzJfMzZfMl9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJsaWJyc3ZnLTIuMCA+PSAyLjM2LjIiIDI+L2Rldi9udWxsYAotZWxzZQotICBwa2dfZmFpbGVkPXllcwotZmkKLSAgICBmaQotZWxzZQotCXBrZ19mYWlsZWQ9dW50cmllZAotZmkKLWlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotICAgIGlmIHRlc3QgLW4gIiRSU1ZHXzJfMzZfMl9MSUJTIjsgdGhlbgotICAgICAgICBwa2dfY3ZfUlNWR18yXzM2XzJfTElCUz0iJFJTVkdfMl8zNl8yX0xJQlMiCi0gICAgZWxzZQotICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJyc3ZnLTIuMCA+PSAyLjM2LjJcIiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGlicnN2Zy0yLjAgPj0gMi4zNi4yIikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X1JTVkdfMl8zNl8yX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAibGlicnN2Zy0yLjAgPj0gMi4zNi4yIiAyPi9kZXYvbnVsbGAKLWVsc2UKLSAgcGtnX2ZhaWxlZD15ZXMKLWZpCi0gICAgZmkKLWVsc2UKLQlwa2dfZmFpbGVkPXVudHJpZWQKLWZpCi0KLQotCi1pZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCi0KLWlmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCi0gICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKLWVsc2UKLSAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCi1maQotICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KLQkgICAgICAgIFJTVkdfMl8zNl8yX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAibGlicnN2Zy0yLjAgPj0gMi4zNi4yImAKLSAgICAgICAgZWxzZQotCSAgICAgICAgUlNWR18yXzM2XzJfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJsaWJyc3ZnLTIuMCA+PSAyLjM2LjIiYAotICAgICAgICBmaQotCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwotCWVjaG8gIiRSU1ZHXzJfMzZfMl9QS0dfRVJST1JTIiA+JjUKLQotCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotICAgICAgICAgICAgICAgIEhBVkVfUlNWR18yXzM2XzI9Im5vIgotZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgotCUhBVkVfUlNWR18yXzM2XzI9Im5vIgotZWxzZQotCVJTVkdfMl8zNl8yX0NGTEFHUz0kcGtnX2N2X1JTVkdfMl8zNl8yX0NGTEFHUwotCVJTVkdfMl8zNl8yX0xJQlM9JHBrZ19jdl9SU1ZHXzJfMzZfMl9MSUJTCi0gICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci0JSEFWRV9SU1ZHXzJfMzZfMj0ieWVzIgotZmkKLSAgICBpZiB0ZXN0ICJ4JEhBVkVfUlNWR18yXzM2XzIiID0gInh5ZXMiOyB0aGVuCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfUlNWR18yXzM2XzIgMSIgPj5jb25mZGVmcy5oCi0KLSAgICBmaQorICAgICAgSEFWRV9SU1ZHPSJ5ZXMiCiAKIGZpCiAKQEAgLTQ2OTIzLDEyICs0ODc0NCwxMiBAQAogICAgICAgICBwa2dfY3ZfUVRfQ0ZMQUdTPSIkUVRfQ0ZMQUdTIgogICAgIGVsc2UKICAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjBcIiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjAiKSAyPiY1CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlF0NUNvcmUgUXQ1R3VpIFF0NVFtbCBRdDVRdWljayA+PSA1LjQuMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJRdDVDb3JlIFF0NUd1aSBRdDVRbWwgUXQ1UXVpY2sgPj0gNS40LjAiKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotICBwa2dfY3ZfUVRfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjAiIDI+L2Rldi9udWxsYAorICBwa2dfY3ZfUVRfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiUXQ1Q29yZSBRdDVHdWkgUXQ1UW1sIFF0NVF1aWNrID49IDUuNC4wIiAyPi9kZXYvbnVsbGAKIGVsc2UKICAgcGtnX2ZhaWxlZD15ZXMKIGZpCkBAIC00Njk0MSwxMiArNDg3NjIsMTIgQEAKICAgICAgICAgcGtnX2N2X1FUX0xJQlM9IiRRVF9MSUJTIgogICAgIGVsc2UKICAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjBcIiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjAiKSAyPiY1CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlF0NUNvcmUgUXQ1R3VpIFF0NVFtbCBRdDVRdWljayA+PSA1LjQuMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJRdDVDb3JlIFF0NUd1aSBRdDVRbWwgUXQ1UXVpY2sgPj0gNS40LjAiKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotICBwa2dfY3ZfUVRfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJRdDVDb3JlIFF0NUd1aSBRdDVRdWljayA+PSA1LjQuMCIgMj4vZGV2L251bGxgCisgIHBrZ19jdl9RVF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgIlF0NUNvcmUgUXQ1R3VpIFF0NVFtbCBRdDVRdWljayA+PSA1LjQuMCIgMj4vZGV2L251bGxgCiBlbHNlCiAgIHBrZ19mYWlsZWQ9eWVzCiBmaQpAQCAtNDY5NjUsOSArNDg3ODYsOSBAQAogICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KIGZpCiAgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhlbgotCSAgICAgICAgUVRfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJRdDVDb3JlIFF0NUd1aSBRdDVRdWljayA+PSA1LjQuMCJgCisJICAgICAgICBRVF9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgIlF0NUNvcmUgUXQ1R3VpIFF0NVFtbCBRdDVRdWljayA+PSA1LjQuMCJgCiAgICAgICAgIGVsc2UKLQkgICAgICAgIFFUX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjAiYAorCSAgICAgICAgUVRfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJRdDVDb3JlIFF0NUd1aSBRdDVRbWwgUXQ1UXVpY2sgPj0gNS40LjAiYAogICAgICAgICBmaQogCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwogCWVjaG8gIiRRVF9QS0dfRVJST1JTIiA+JjUKQEAgLTQ3Mjk4LDYgKzQ5MTE5LDI2NCBAQAogCiBmaQogICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0ICJ4JEdTVF9HTF9IQVZFX1dJTkRPV19BTkRST0lEIiA9ICJ4MSIgLWEgIngkR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMIiA9ICJ4MSI7IHRoZW4KKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgUVRfQU5EUk9JRCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgUVRfQU5EUk9JRC4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkUVRfQU5EUk9JRF9DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9RVF9BTkRST0lEX0NGTEFHUz0iJFFUX0FORFJPSURfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiUXQ1QW5kcm9pZEV4dHJhc1wiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJRdDVBbmRyb2lkRXh0cmFzIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X1FUX0FORFJPSURfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiUXQ1QW5kcm9pZEV4dHJhcyIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJFFUX0FORFJPSURfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X1FUX0FORFJPSURfTElCUz0iJFFUX0FORFJPSURfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlF0NUFuZHJvaWRFeHRyYXNcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiUXQ1QW5kcm9pZEV4dHJhcyIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9RVF9BTkRST0lEX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiUXQ1QW5kcm9pZEV4dHJhcyIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBRVF9BTkRST0lEX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiUXQ1QW5kcm9pZEV4dHJhcyJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIFFUX0FORFJPSURfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJRdDVBbmRyb2lkRXh0cmFzImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkUVRfQU5EUk9JRF9QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorICAgICAgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogQ291bGQgbm90IGZpbmQgUXQgQW5kcm9pZCBpbnRlZ3JhdGlvbiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBDb3VsZCBub3QgZmluZCBRdCBBbmRyb2lkIGludGVncmF0aW9uIiA+JjY7fQorZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogQ291bGQgbm90IGZpbmQgUXQgQW5kcm9pZCBpbnRlZ3JhdGlvbiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBDb3VsZCBub3QgZmluZCBRdCBBbmRyb2lkIGludGVncmF0aW9uIiA+JjY7fQorZWxzZQorCVFUX0FORFJPSURfQ0ZMQUdTPSRwa2dfY3ZfUVRfQU5EUk9JRF9DRkxBR1MKKwlRVF9BTkRST0lEX0xJQlM9JHBrZ19jdl9RVF9BTkRST0lEX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKworICAgICAgICAgICAgIyBjKysgb24gYW5kcm9pZCByZXF1aXJlcyBhIHN0YW5kYXJkIGxpYnJhcnkgYW5kIHRoZXJlIGFyZSBtdWx0aXBsZQorICAgICAgICAgICAgIyBjaG9pY2VzLiAgY2VyYmVybyBwcm92aWRlcyBhIHBrZy1jb25maWcgZmlsZSB0aGUgZGVzY3JpYmVzIGEgY2hvaWNlCisgICAgICAgICAgICAjIHNvIHRyeSB0byB1c2UgdGhhdC4gIE91dHNpZGUgY2VyYmVybyBvbmUgaGFzIHRvIHBhc3MgdGhlc2UgZmxhZ3MKKyAgICAgICAgICAgICMgbWFudWFsbHkgZm9yIHRoZSBsaWJyYXJ5IG9uZSBpcyB1c2luZworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTlVTVEwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdOVVNUTC4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkR05VU1RMX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0dOVVNUTF9DRkxBR1M9IiRHTlVTVExfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiZ251c3RsXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImdudXN0bCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9HTlVTVExfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiZ251c3RsIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkR05VU1RMX0xJQlMiOyB0aGVuCisgICAgICAgIHBrZ19jdl9HTlVTVExfTElCUz0iJEdOVVNUTF9MSUJTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiZ251c3RsXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImdudXN0bCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9HTlVTVExfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJnbnVzdGwiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKKworCisKK2lmIHRlc3QgJHBrZ19mYWlsZWQgPSB5ZXM7IHRoZW4KKworaWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uIDAuMjA7IHRoZW4KKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcworZWxzZQorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KK2ZpCisgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhlbgorCSAgICAgICAgR05VU1RMX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiZ251c3RsImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgR05VU1RMX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiZ251c3RsImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkR05VU1RMX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKKyAgICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBDb3VsZCBub3QgZmluZCBTdGFuZGFyZCBDKysgbGlicmFyeSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBDb3VsZCBub3QgZmluZCBTdGFuZGFyZCBDKysgbGlicmFyeSIgPiY2O30KK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworICAgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IENvdWxkIG5vdCBmaW5kIFN0YW5kYXJkIEMrKyBsaWJyYXJ5IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IENvdWxkIG5vdCBmaW5kIFN0YW5kYXJkIEMrKyBsaWJyYXJ5IiA+JjY7fQorZWxzZQorCUdOVVNUTF9DRkxBR1M9JHBrZ19jdl9HTlVTVExfQ0ZMQUdTCisJR05VU1RMX0xJQlM9JHBrZ19jdl9HTlVTVExfTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCisgICAgICAgICAgICAgIFFUX0NGTEFHUz0iJFFUX0NGTEFHUyAkR05VU1RMX0NGTEFHUyIKKyAgICAgICAgICAgICAgUVRfTElCUz0iJFFUX0xJQlMgJEdOVVNUTF9MSUJTIgorCitmaQorCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUVRfQU5EUk9JRCAvKiovIiA+PmNvbmZkZWZzLmgKKworICAgICAgICAgICAgUVRfQ0ZMQUdTPSIkUVRfQ0ZMQUdTICRRVF9BTkRST0lEX0NGTEFHUyIKKyAgICAgICAgICAgIFFUX0xJQlM9IiRRVF9MSUJTICRRVF9BTkRST0lEX0xJQlMiCisgICAgICAgICAgICBIQVZFX1FUX1dJTkRPV0lORz0ieWVzIgorCitmaQorICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0ICJ4JEdTVF9HTF9IQVZFX1dJTkRPV19DT0NPQSIgPSAieDEiIC1hICJ4JEdTVF9HTF9IQVZFX1BMQVRGT1JNX0NHTCIgPSAieDEiOyB0aGVuCisKK3BrZ19mYWlsZWQ9bm8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFFUX01BQyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgUVRfTUFDLi4uICIgPiY2OyB9CisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRRVF9NQUNfQ0ZMQUdTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfUVRfTUFDX0NGTEFHUz0iJFFUX01BQ19DRkxBR1MiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJRdDVNYWNFeHRyYXNcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiUXQ1TWFjRXh0cmFzIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X1FUX01BQ19DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJRdDVNYWNFeHRyYXMiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRRVF9NQUNfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X1FUX01BQ19MSUJTPSIkUVRfTUFDX0xJQlMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJRdDVNYWNFeHRyYXNcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiUXQ1TWFjRXh0cmFzIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X1FUX01BQ19MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgIlF0NU1hY0V4dHJhcyIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBRVF9NQUNfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJRdDVNYWNFeHRyYXMiYAorICAgICAgICBlbHNlCisJICAgICAgICBRVF9NQUNfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJRdDVNYWNFeHRyYXMiYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRRVF9NQUNfUEtHX0VSUk9SUyIgPiY1CisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyAgICAgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IENvdWxkIG5vdCBmaW5kIFF0IE1hYyBpbnRlZ3JhdGlvbiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBDb3VsZCBub3QgZmluZCBRdCBNYWMgaW50ZWdyYXRpb24iID4mNjt9CitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBDb3VsZCBub3QgZmluZCBRdCBNYWMgaW50ZWdyYXRpb24iID4mNQorJGFzX2VjaG8gIiRhc19tZTogQ291bGQgbm90IGZpbmQgUXQgTWFjIGludGVncmF0aW9uIiA+JjY7fQorZWxzZQorCVFUX01BQ19DRkxBR1M9JHBrZ19jdl9RVF9NQUNfQ0ZMQUdTCisJUVRfTUFDX0xJQlM9JHBrZ19jdl9RVF9NQUNfTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUVRfTUFDIC8qKi8iID4+Y29uZmRlZnMuaAorCisgICAgICAgICAgICBRVF9MSUJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9bGliZGlyIFF0NUNvcmVgCisgICAgICAgICAgICBRVF9DRkxBR1M9IiRRVF9DRkxBR1MgJFFUX01BQ19DRkxBR1MgLUYkUVRfTElCRElSIC1mcmFtZXdvcmsgUXRDb3JlIC1mcmFtZXdvcmsgUXRHdWkgLWZyYW1ld29yayBRdFF1aWNrIC1mcmFtZXdvcmsgUXRRbWwgLWZyYW1ld29yayBRdE1hY0V4dHJhcyIKKyAgICAgICAgICAgIFFUX0xJQlM9IiRRVF9MSUJTICRRVF9NQUNfTElCUyIKKyAgICAgICAgICAgIEhBVkVfUVRfV0lORE9XSU5HPSJ5ZXMiCisKK2ZpCisgICAgICAgIGZpCisgICAgICAgIGlmIHRlc3QgIngkR1NUX0dMX0hBVkVfV0lORE9XX0VBR0wiID0gIngxIiAtYSAieCRHU1RfR0xfSEFWRV9QTEFURk9STV9FQUdMIiA9ICJ4MSI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0ICJ4JEhBVkVfSU9TIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICAgICAgIyBpT1MgZG9lc24ndCBoYXZlIGl0cyBvd24gZXh0cmFzIHBhY2thZ2Ugc28gaWYgd2UgaGF2ZSB0aGUgY29yZQorICAgICAgICAgICAgIyBtb2R1bGVzIHdlIGFyZSBnb29kIHRvIGdvCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUVRfSU9TIC8qKi8iID4+Y29uZmRlZnMuaAorCisgICAgICAgICAgICBIQVZFX1FUX1dJTkRPV0lORz0ieWVzIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCiAgICAgICAgIGlmIHRlc3QgIngkSEFWRV9RVF9XSU5ET1dJTkciID0gInhubyI7IHRoZW4KICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGFueSBRdCBXaW5kb3dpbmcgaW50ZWdyYXRpb24iID4mNQogJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ291bGQgbm90IGZpbmQgYW55IFF0IFdpbmRvd2luZyBpbnRlZ3JhdGlvbiIgPiYyO30KQEAgLTQ3MzUwLDYgKzQ5NDI5LDE0OCBAQAogCiAKIGVjaG8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGNoZWNraW5nIGZlYXR1cmU6IFZ1bGthbiBlbGVtZW50cyAqKioiID4mNQorJGFzX2VjaG8gIiRhc19tZTogKioqIGNoZWNraW5nIGZlYXR1cmU6IFZ1bGthbiBlbGVtZW50cyAqKioiID4mNjt9CitpZiB0ZXN0ICJ4dnVsa2FuIiAhPSAieCIKK3RoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogZm9yIHBsdWctaW5zOiB2dWxrYW4gKioqIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICoqKiBmb3IgcGx1Zy1pbnM6IHZ1bGthbiAqKioiID4mNjt9CitmaQorTk9VU0U9CitpZiB0ZXN0ICJ4JFVTRV9WVUxLQU4iID0gInhubyI7IHRoZW4KKyAgTk9VU0U9InllcyIKK2ZpCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdnVsa2FuIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3Z1bGthbitzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3Z1bGthbjsgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKyAgICAgIHllcykgVVNFX1ZVTEtBTj15ZXM7OworICAgICAgbm8pIFVTRV9WVUxLQU49bm87OworICAgICAgKikgYXNfZm5fZXJyb3IgJD8gImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLXZ1bGthbiIgIiRMSU5FTk8iIDUgOzsKKyAgICBlc2FjCitlbHNlCisgICBVU0VfVlVMS0FOPXllcworZmkKKworaWYgdGVzdCAieCROT1VTRSIgPSAieHllcyI7IHRoZW4KKyAgVVNFX1ZVTEtBTj0ibm8iCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogKioqIHZ1bGthbiBwcmUtY29uZmlndXJlZCBub3QgdG8gYmUgYnVpbHQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogKioqIHZ1bGthbiBwcmUtY29uZmlndXJlZCBub3QgdG8gYmUgYnVpbHQiID4mMjt9CitmaQorTk9VU0U9CisKK2lmIGVjaG8gIiAkR1NUX1BMVUdJTlNfTk9OUE9SVEVEICIgfCB0ciAsICcgJyB8IGdyZXAgLWkgIiBWVUxLQU4gIiA+IC9kZXYvbnVsbDsgdGhlbgorICBVU0VfVlVMS0FOPSJubyIKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAqKiogdnVsa2FuIG5vdCBwb3J0ZWQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogKioqIHZ1bGthbiBub3QgcG9ydGVkIiA+JjI7fQorZmkKKworCitpZiB0ZXN0IHgkVVNFX1ZVTEtBTiA9IHh5ZXM7IHRoZW4KKworICBnc3RfY2hlY2tfc2F2ZV9MSUJTPSRMSUJTCisgIGdzdF9jaGVja19zYXZlX0xERkxBR1M9JExERkxBR1MKKyAgZ3N0X2NoZWNrX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgZ3N0X2NoZWNrX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisgIGdzdF9jaGVja19zYXZlX0NYWEZMQUdTPSRDWFhGTEFHUworCisgIEhBVkVfVlVMS0FOPW5vCisKKyAgSEFWRV9WVUxLQU49bm8KKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInZ1bGthbi92dWxrYW4uaCIgImFjX2N2X2hlYWRlcl92dWxrYW5fdnVsa2FuX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3Z1bGthbl92dWxrYW5faCIgPSB4eWVzOyB0aGVuIDoKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHZrQ3JlYXRlRGV2aWNlIGluIC1sdnVsa2FuIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB2a0NyZWF0ZURldmljZSBpbiAtbHZ1bGthbi4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfdnVsa2FuX3ZrQ3JlYXRlRGV2aWNlKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWx2dWxrYW4gICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIHZrQ3JlYXRlRGV2aWNlICgpOworaW50CittYWluICgpCit7CityZXR1cm4gdmtDcmVhdGVEZXZpY2UgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3Z1bGthbl92a0NyZWF0ZURldmljZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3Z1bGthbl92a0NyZWF0ZURldmljZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfdnVsa2FuX3ZrQ3JlYXRlRGV2aWNlIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3Z1bGthbl92a0NyZWF0ZURldmljZSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl92dWxrYW5fdmtDcmVhdGVEZXZpY2UiID0geHllczsgdGhlbiA6CisKKyAgICAgIFZVTEtBTl9MSUJTPSItbHZ1bGthbiIKKworICAgICAgICAgICAgaWYgdGVzdCAieCRIQVZFX1hDQiIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgSEFWRV9WVUxLQU49eWVzCisgICAgICBmaQorCitmaQorCisKK2ZpCisKKworCisKKyAgTElCUz0kZ3N0X2NoZWNrX3NhdmVfTElCUworICBMREZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9MREZMQUdTCisgIENGTEFHUz0kZ3N0X2NoZWNrX3NhdmVfQ0ZMQUdTCisgIENQUEZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DUFBGTEFHUworICBDWFhGTEFHUz0kZ3N0X2NoZWNrX3NhdmVfQ1hYRkxBR1MKKworICAgIGlmIHRlc3QgeCRIQVZFX1ZVTEtBTiA9IHhubzsgdGhlbgorICAgIFVTRV9WVUxLQU49bm8KKyAgZWxzZQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBiZSBidWlsdDogdnVsa2FuIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICoqKiBUaGVzZSBwbHVnaW5zIHdpbGwgYmUgYnVpbHQ6IHZ1bGthbiIgPiY2O30KKyAgZmkKK2ZpCitpZiB0ZXN0IHgkVVNFX1ZVTEtBTiA9IHh5ZXM7IHRoZW4KKyAgOgorICBpZiB0ZXN0ICJ4dnVsa2FuIiAhPSAieCI7IHRoZW4KKyAgICBHU1RfUExVR0lOU19ZRVM9Ilx0dnVsa2FuXG4kR1NUX1BMVUdJTlNfWUVTIgorICBmaQorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1ZVTEtBTiAvKiovIiA+PmNvbmZkZWZzLmgKKworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBUaGVzZSBwbHVnaW5zIHdpbGwgbm90IGJlIGJ1aWx0OiB2dWxrYW4iID4mNQorJGFzX2VjaG8gIiRhc19tZTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBub3QgYmUgYnVpbHQ6IHZ1bGthbiIgPiY2O30KKyAgaWYgdGVzdCAieHZ1bGthbiIgIT0gIngiOyB0aGVuCisgICAgR1NUX1BMVUdJTlNfTk89Ilx0dnVsa2FuXG4kR1NUX1BMVUdJTlNfTk8iCisgIGZpCisgIDoKK2ZpCisgaWYgdGVzdCB4JFVTRV9WVUxLQU4gPSB4eWVzOyB0aGVuCisgIFVTRV9WVUxLQU5fVFJVRT0KKyAgVVNFX1ZVTEtBTl9GQUxTRT0nIycKK2Vsc2UKKyAgVVNFX1ZVTEtBTl9UUlVFPScjJworICBVU0VfVlVMS0FOX0ZBTFNFPQorZmkKKworCisKK2VjaG8KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGNoZWNraW5nIGZlYXR1cmU6IGxpYnZpc3VhbCB2aXN1YWxpemF0aW9uIGxpYnJhcnkgKioqIiA+JjUKICRhc19lY2hvICIkYXNfbWU6ICoqKiBjaGVja2luZyBmZWF0dXJlOiBsaWJ2aXN1YWwgdmlzdWFsaXphdGlvbiBsaWJyYXJ5ICoqKiIgPiY2O30KIGlmIHRlc3QgInhsaWJ2aXN1YWwiICE9ICJ4IgpAQCAtNTMyNzAsNDE5ICs1NTQ5MSw2IEBACiAKIAogZWNobwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogR1NldHRpbmdzIHBsdWdpbiAqKioiID4mNQotJGFzX2VjaG8gIiRhc19tZTogKioqIGNoZWNraW5nIGZlYXR1cmU6IEdTZXR0aW5ncyBwbHVnaW4gKioqIiA+JjY7fQotaWYgdGVzdCAieGdzZXR0aW5ncyIgIT0gIngiCi10aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGZvciBwbHVnLWluczogZ3NldHRpbmdzICoqKiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAqKiogZm9yIHBsdWctaW5zOiBnc2V0dGluZ3MgKioqIiA+JjY7fQotZmkKLU5PVVNFPQotaWYgdGVzdCAieCRVU0VfR1NFVFRJTkdTIiA9ICJ4bm8iOyB0aGVuCi0gIE5PVVNFPSJ5ZXMiCi1maQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWdzZXR0aW5ncyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9nc2V0dGluZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9nc2V0dGluZ3M7ICBjYXNlICIke2VuYWJsZXZhbH0iIGluCi0gICAgICB5ZXMpIFVTRV9HU0VUVElOR1M9eWVzOzsKLSAgICAgIG5vKSBVU0VfR1NFVFRJTkdTPW5vOzsKLSAgICAgICopIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1nc2V0dGluZ3MiICIkTElORU5PIiA1IDs7Ci0gICAgZXNhYwotZWxzZQotICAgVVNFX0dTRVRUSU5HUz15ZXMKLWZpCi0KLWlmIHRlc3QgIngkTk9VU0UiID0gInh5ZXMiOyB0aGVuCi0gIFVTRV9HU0VUVElOR1M9Im5vIgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICoqKiBnc2V0dGluZ3MgcHJlLWNvbmZpZ3VyZWQgbm90IHRvIGJlIGJ1aWx0IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICoqKiBnc2V0dGluZ3MgcHJlLWNvbmZpZ3VyZWQgbm90IHRvIGJlIGJ1aWx0IiA+JjI7fQotZmkKLU5PVVNFPQotCi1pZiBlY2hvICIgJEdTVF9QTFVHSU5TX05PTlBPUlRFRCAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgR1NFVFRJTkdTICIgPiAvZGV2L251bGw7IHRoZW4KLSAgVVNFX0dTRVRUSU5HUz0ibm8iCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogKioqIGdzZXR0aW5ncyBub3QgcG9ydGVkIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICoqKiBnc2V0dGluZ3Mgbm90IHBvcnRlZCIgPiYyO30KLWZpCi0KLQotaWYgdGVzdCB4JFVTRV9HU0VUVElOR1MgPSB4eWVzOyB0aGVuCi0KLSAgZ3N0X2NoZWNrX3NhdmVfTElCUz0kTElCUwotICBnc3RfY2hlY2tfc2F2ZV9MREZMQUdTPSRMREZMQUdTCi0gIGdzdF9jaGVja19zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gIGdzdF9jaGVja19zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUwotICBnc3RfY2hlY2tfc2F2ZV9DWFhGTEFHUz0kQ1hYRkxBR1MKLQotICBIQVZFX0dTRVRUSU5HUz1ubwotCi0KLSAgd2hpY2g9Imdpby0yLjAgPj0gMi4yNS4wIgotICAgIHJlcXVpcmVkPSJubyIKLQotCi1wa2dfZmFpbGVkPW5vCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHU0VUVElOR1MiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdTRVRUSU5HUy4uLiAiID4mNjsgfQotCi1pZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KLSAgICBpZiB0ZXN0IC1uICIkR1NFVFRJTkdTX0NGTEFHUyI7IHRoZW4KLSAgICAgICAgcGtnX2N2X0dTRVRUSU5HU19DRkxBR1M9IiRHU0VUVElOR1NfQ0ZMQUdTIgotICAgIGVsc2UKLSAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiXCR3aGljaFwiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICIkd2hpY2giKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotICBwa2dfY3ZfR1NFVFRJTkdTX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgIiR3aGljaCIgMj4vZGV2L251bGxgCi1lbHNlCi0gIHBrZ19mYWlsZWQ9eWVzCi1maQotICAgIGZpCi1lbHNlCi0JcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAiJEdTRVRUSU5HU19MSUJTIjsgdGhlbgotICAgICAgICBwa2dfY3ZfR1NFVFRJTkdTX0xJQlM9IiRHU0VUVElOR1NfTElCUyIKLSAgICBlbHNlCi0gICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCi0gICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X0dTRVRUSU5HU19MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgIiR3aGljaCIgMj4vZGV2L251bGxgCi1lbHNlCi0gIHBrZ19mYWlsZWQ9eWVzCi1maQotICAgIGZpCi1lbHNlCi0JcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotCi0KLQotaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgotCi1pZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgotICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCi1lbHNlCi0gICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubwotZmkKLSAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCi0JICAgICAgICBHU0VUVElOR1NfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAotICAgICAgICBlbHNlCi0JICAgICAgICBHU0VUVElOR1NfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAotICAgICAgICBmaQotCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwotCWVjaG8gIiRHU0VUVElOR1NfUEtHX0VSUk9SUyIgPiY1Ci0KLQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLQotICAgICAgSEFWRV9HU0VUVElOR1M9Im5vIgotICAgICAgaWYgdGVzdCAieCRyZXF1aXJlZCIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgYXNfZm5fZXJyb3IgJD8gIiRHU0VUVElOR1NfUEtHX0VSUk9SUyIgIiRMSU5FTk8iIDUKLSAgICAgIGVsc2UKLSAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkR1NFVFRJTkdTX1BLR19FUlJPUlMiID4mNQotJGFzX2VjaG8gIiRhc19tZTogJEdTRVRUSU5HU19QS0dfRVJST1JTIiA+JjY7fQotICAgICAgZmkKLQotZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgotCi0gICAgICBIQVZFX0dTRVRUSU5HUz0ibm8iCi0gICAgICBpZiB0ZXN0ICJ4JHJlcXVpcmVkIiA9ICJ4eWVzIjsgdGhlbgotICAgICAgICBhc19mbl9lcnJvciAkPyAiJEdTRVRUSU5HU19QS0dfRVJST1JTIiAiJExJTkVOTyIgNQotICAgICAgZWxzZQotICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRHU0VUVElOR1NfUEtHX0VSUk9SUyIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAkR1NFVFRJTkdTX1BLR19FUlJPUlMiID4mNjt9Ci0gICAgICBmaQotCi1lbHNlCi0JR1NFVFRJTkdTX0NGTEFHUz0kcGtnX2N2X0dTRVRUSU5HU19DRkxBR1MKLQlHU0VUVElOR1NfTElCUz0kcGtnX2N2X0dTRVRUSU5HU19MSUJTCi0gICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci0KLSAgICAgIEhBVkVfR1NFVFRJTkdTPSJ5ZXMiCi0KLWZpCi0KLQotICBpZiB0ZXN0ICJ4JEhBVkVfR1NFVFRJTkdTIiA9ICJ4eWVzIjsgdGhlbgotCi0KLSAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXNjaGVtYXMtY29tcGlsZSB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9zY2hlbWFzX2NvbXBpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9zY2hlbWFzX2NvbXBpbGU7IGNhc2UgJHtlbmFibGV2YWx9IGluCi0gICAgICAgICAgICAgICAgICB5ZXMpIEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRT0iIiAgOzsKLSAgICAgICAgICAgICAgICAgIG5vKSAgR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFPSIxIiA7OwotICAgICAgICAgICAgICAgICAgKikgYXNfZm5fZXJyb3IgJD8gImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLXNjaGVtYXMtY29tcGlsZSIgIiRMSU5FTk8iIDUgOzsKLSAgICAgICAgICAgICAgICAgZXNhYwotZmkKLQotCi0KLQotaWYgdGVzdCAieCRhY19jdl9lbnZfUEtHX0NPTkZJR19zZXQiICE9ICJ4c2V0IjsgdGhlbgotCWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXBrZy1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cGtnLWNvbmZpZzsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfUEtHX0NPTkZJRys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhc2UgJFBLR19DT05GSUcgaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhfUEtHX0NPTkZJRz0iJFBLR19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgotICA7OwotICAqKQotICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wYXRoX1BLR19DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLSAgOzsKLWVzYWMKLWZpCi1QS0dfQ09ORklHPSRhY19jdl9wYXRoX1BLR19DT05GSUcKLWlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBLR19DT05GSUciID4mNQotJGFzX2VjaG8gIiRQS0dfQ09ORklHIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLWZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9QS0dfQ09ORklHIjsgdGhlbgotICBhY19wdF9QS0dfQ09ORklHPSRQS0dfQ09ORklHCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgcGtnLWNvbmZpZzsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhc2UgJGFjX3B0X1BLR19DT05GSUcgaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0iJGFjX3B0X1BLR19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgotICA7OwotICAqKQotICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLSAgOzsKLWVzYWMKLWZpCi1hY19wdF9QS0dfQ09ORklHPSRhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUcKLWlmIHRlc3QgLW4gIiRhY19wdF9QS0dfQ09ORklHIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X1BLR19DT05GSUciID4mNQotJGFzX2VjaG8gIiRhY19wdF9QS0dfQ09ORklHIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0gIGlmIHRlc3QgIngkYWNfcHRfUEtHX0NPTkZJRyIgPSB4OyB0aGVuCi0gICAgUEtHX0NPTkZJRz0iIgotICBlbHNlCi0gICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoteWVzOikKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLWFjX3Rvb2xfd2FybmVkPXllcyA7OwotZXNhYwotICAgIFBLR19DT05GSUc9JGFjX3B0X1BLR19DT05GSUcKLSAgZmkKLWVsc2UKLSAgUEtHX0NPTkZJRz0iJGFjX2N2X3BhdGhfUEtHX0NPTkZJRyIKLWZpCi0KLWZpCi1pZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KLQlfcGtnX21pbl92ZXJzaW9uPTAuMTYKLQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHBrZy1jb25maWcgaXMgYXQgbGVhc3QgdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbiIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBwa2ctY29uZmlnIGlzIGF0IGxlYXN0IHZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb24uLi4gIiA+JjY7IH0KLQlpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb247IHRoZW4KLQkJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KLQllbHNlCi0JCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotCQlQS0dfQ09ORklHPSIiCi0JZmkKLQotZmkKLSAgZ3NldHRpbmdzc2NoZW1hZGlyPSR7ZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hcwotCi0gIGlmIHRlc3QgeCRjcm9zc19jb21waWxpbmcgIT0geHllczsgdGhlbgotICAgIEdMSUJfQ09NUElMRV9TQ0hFTUFTPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlIGdsaWJfY29tcGlsZV9zY2hlbWFzIGdpby0yLjBgCi0gIGVsc2UKLSAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdsaWItY29tcGlsZS1zY2hlbWFzIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBnbGliLWNvbXBpbGUtc2NoZW1hczsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfR0xJQl9DT01QSUxFX1NDSEVNQVMrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBjYXNlICRHTElCX0NPTVBJTEVfU0NIRU1BUyBpbgotICBbXFwvXSogfCA/OltcXC9dKikKLSAgYWNfY3ZfcGF0aF9HTElCX0NPTVBJTEVfU0NIRU1BUz0iJEdMSUJfQ09NUElMRV9TQ0hFTUFTIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLSAgOzsKLSAgKikKLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcGF0aF9HTElCX0NPTVBJTEVfU0NIRU1BUz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotICA7OwotZXNhYwotZmkKLUdMSUJfQ09NUElMRV9TQ0hFTUFTPSRhY19jdl9wYXRoX0dMSUJfQ09NUElMRV9TQ0hFTUFTCi1pZiB0ZXN0IC1uICIkR0xJQl9DT01QSUxFX1NDSEVNQVMiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkR0xJQl9DT01QSUxFX1NDSEVNQVMiID4mNQotJGFzX2VjaG8gIiRHTElCX0NPTVBJTEVfU0NIRU1BUyIgPiY2OyB9Ci1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCi0gIGZpCi0KLSAgaWYgdGVzdCAieCRHTElCX0NPTVBJTEVfU0NIRU1BUyIgPSAieCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAkPyAiZ2xpYi1jb21waWxlLXNjaGVtYXMgbm90IGZvdW5kLiIgIiRMSU5FTk8iIDUKLSAgZWxzZQotICAgIDoKLSAgZmkKLQotICBHU0VUVElOR1NfUlVMRVM9JwotLlBIT05ZIDogdW5pbnN0YWxsLWdzZXR0aW5ncy1zY2hlbWFzIGluc3RhbGwtZ3NldHRpbmdzLXNjaGVtYXMgY2xlYW4tZ3NldHRpbmdzLXNjaGVtYXMKLQotbW9zdGx5Y2xlYW4tYW06IGNsZWFuLWdzZXR0aW5ncy1zY2hlbWFzCi0KLWdzZXR0aW5nc19fZW51bV9maWxlID0gJChhZGRzdWZmaXggLmVudW1zLnhtbCwkKGdzZXR0aW5nc19FTlVNX05BTUVTUEFDRSkpCi0KLSUuZ3NjaGVtYS52YWxpZDogJS5nc2NoZW1hLnhtbCAkKGdzZXR0aW5nc19fZW51bV9maWxlKQotCSQoQU1fVl9HRU4pIGlmIHRlc3QgLWYgIiQ8IjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7ICQoR0xJQl9DT01QSUxFX1NDSEVNQVMpIC0tc3RyaWN0IC0tZHJ5LXJ1biAkKGFkZHByZWZpeCAtLXNjaGVtYS1maWxlPSwkKGdzZXR0aW5nc19fZW51bV9maWxlKSkgLS1zY2hlbWEtZmlsZT0kJHtkfSQ8ICYmIHRvdWNoICRACi0KLWFsbC1hbTogJChnc2V0dGluZ3NfU0NIRU1BUzoueG1sPS52YWxpZCkKLXVuaW5zdGFsbC1hbTogdW5pbnN0YWxsLWdzZXR0aW5ncy1zY2hlbWFzCi1pbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtZ3NldHRpbmdzLXNjaGVtYXMKLQotLlNFQ09OREFSWTogJChnc2V0dGluZ3NfU0NIRU1BUykKLQotaW5zdGFsbC1nc2V0dGluZ3Mtc2NoZW1hczogJChnc2V0dGluZ3NfU0NIRU1BUykgJChnc2V0dGluZ3NfX2VudW1fZmlsZSkKLQlAJChOT1JNQUxfSU5TVEFMTCkKLQlpZiB0ZXN0IC1uICIkXiI7IHRoZW4gXAotCQl0ZXN0IC16ICIkKGdzZXR0aW5nc3NjaGVtYWRpcikiIHx8ICQoTUtESVJfUCkgIiQoREVTVERJUikkKGdzZXR0aW5nc3NjaGVtYWRpcikiOyBcCi0JCSQoSU5TVEFMTF9EQVRBKSAkXiAiJChERVNURElSKSQoZ3NldHRpbmdzc2NoZW1hZGlyKSI7IFwKLQkJdGVzdCAtbiAiJChHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUpJChERVNURElSKSIgfHwgJChHTElCX0NPTVBJTEVfU0NIRU1BUykgJChnc2V0dGluZ3NzY2hlbWFkaXIpOyBcCi0JZmkKLQotdW5pbnN0YWxsLWdzZXR0aW5ncy1zY2hlbWFzOgotCUAkKE5PUk1BTF9VTklOU1RBTEwpCi0JQGxpc3Q9J1wnJyQoZ3NldHRpbmdzX1NDSEVNQVMpICQoZ3NldHRpbmdzX19lbnVtX2ZpbGUpJ1wnJzsgdGVzdCAtbiAiJChnc2V0dGluZ3NzY2hlbWFkaXIpIiB8fCBsaXN0PTsgXAotCWZpbGVzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRwOyBkb25lIHwgc2VkIC1lICdcJydzfF4uKi98fCdcJydgOyBcCi0JdGVzdCAtbiAiJCRmaWxlcyIgfHwgZXhpdCAwOyBcCi0JZWNobyAiICggY2QgJ1wnJyQoREVTVERJUikkKGdzZXR0aW5nc3NjaGVtYWRpciknXCcnICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAotCWNkICIkKERFU1RESVIpJChnc2V0dGluZ3NzY2hlbWFkaXIpIiAmJiBybSAtZiAkJGZpbGVzCi0JdGVzdCAtbiAiJChHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUpJChERVNURElSKSIgfHwgJChHTElCX0NPTVBJTEVfU0NIRU1BUykgJChnc2V0dGluZ3NzY2hlbWFkaXIpCi0KLWNsZWFuLWdzZXR0aW5ncy1zY2hlbWFzOgotCXJtIC1mICQoZ3NldHRpbmdzX1NDSEVNQVM6LnhtbD0udmFsaWQpICQoZ3NldHRpbmdzX19lbnVtX2ZpbGUpCi0KLWlmZGVmIGdzZXR0aW5nc19FTlVNX05BTUVTUEFDRQotJChnc2V0dGluZ3NfX2VudW1fZmlsZSk6ICQoZ3NldHRpbmdzX0VOVU1fRklMRVMpCi0JJChBTV9WX0dFTikgZ2xpYi1ta2VudW1zIC0tY29tbWVudHMgJ1wnJzwhLS0gQGNvbW1lbnRAIC0tPidcJycgLS1maGVhZCAiPHNjaGVtYWxpc3Q+IiAtLXZoZWFkICIgIDxAdHlwZUAgaWQ9J1wnJyQoZ3NldHRpbmdzX0VOVU1fTkFNRVNQQUNFKS5ARW51bU5hbWVAJ1wnJz4iIC0tdnByb2QgIiAgICA8dmFsdWUgbmljaz0nXCcnQHZhbHVlbmlja0AnXCcnIHZhbHVlPSdcJydAdmFsdWVudW1AJ1wnJy8+IiAtLXZ0YWlsICIgIDwvQHR5cGVAPiIgLS1mdGFpbCAiPC9zY2hlbWFsaXN0PiIgJF4gPiAkQC50bXAgJiYgbXYgJEAudG1wICRACi1lbmRpZgotJwotCi0KLQotCi0KLQotICBmaQotCi0KLSAgTElCUz0kZ3N0X2NoZWNrX3NhdmVfTElCUwotICBMREZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9MREZMQUdTCi0gIENGTEFHUz0kZ3N0X2NoZWNrX3NhdmVfQ0ZMQUdTCi0gIENQUEZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DUFBGTEFHUwotICBDWFhGTEFHUz0kZ3N0X2NoZWNrX3NhdmVfQ1hYRkxBR1MKLQotICAgIGlmIHRlc3QgeCRIQVZFX0dTRVRUSU5HUyA9IHhubzsgdGhlbgotICAgIFVTRV9HU0VUVElOR1M9bm8KLSAgZWxzZQotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBiZSBidWlsdDogZ3NldHRpbmdzIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6ICoqKiBUaGVzZSBwbHVnaW5zIHdpbGwgYmUgYnVpbHQ6IGdzZXR0aW5ncyIgPiY2O30KLSAgZmkKLWZpCi1pZiB0ZXN0IHgkVVNFX0dTRVRUSU5HUyA9IHh5ZXM7IHRoZW4KLSAgOgotICBpZiB0ZXN0ICJ4Z3NldHRpbmdzIiAhPSAieCI7IHRoZW4KLSAgICBHU1RfUExVR0lOU19ZRVM9Ilx0Z3NldHRpbmdzXG4kR1NUX1BMVUdJTlNfWUVTIgotICBmaQotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX0dTRVRUSU5HUyAvKiovIiA+PmNvbmZkZWZzLmgKLQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBUaGVzZSBwbHVnaW5zIHdpbGwgbm90IGJlIGJ1aWx0OiBnc2V0dGluZ3MiID4mNQotJGFzX2VjaG8gIiRhc19tZTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBub3QgYmUgYnVpbHQ6IGdzZXR0aW5ncyIgPiY2O30KLSAgaWYgdGVzdCAieGdzZXR0aW5ncyIgIT0gIngiOyB0aGVuCi0gICAgR1NUX1BMVUdJTlNfTk89Ilx0Z3NldHRpbmdzXG4kR1NUX1BMVUdJTlNfTk8iCi0gIGZpCi0gIDoKLWZpCi0gaWYgdGVzdCB4JFVTRV9HU0VUVElOR1MgPSB4eWVzOyB0aGVuCi0gIFVTRV9HU0VUVElOR1NfVFJVRT0KLSAgVVNFX0dTRVRUSU5HU19GQUxTRT0nIycKLWVsc2UKLSAgVVNFX0dTRVRUSU5HU19UUlVFPScjJwotICBVU0VfR1NFVFRJTkdTX0ZBTFNFPQotZmkKLQotCi0KLWVjaG8KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGNoZWNraW5nIGZlYXR1cmU6IHNuZGlvIGF1ZGlvICoqKiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiAqKiogY2hlY2tpbmcgZmVhdHVyZTogc25kaW8gYXVkaW8gKioqIiA+JjY7fQogaWYgdGVzdCAieHNuZGlvIiAhPSAieCIKQEAgLTUzODI2LDYgKzU1NjM0LDI2IEBACiAKIAogCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtaGxzLWNyeXB0byB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfaGxzX2NyeXB0bytzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfaGxzX2NyeXB0bzsKKyAgICBjYXNlICR3aXRoX2hsc19jcnlwdG8gaW4gIygKKyAgbmV0dGxlKSA6CisgICAgIDs7ICMoCisgIGxpYmdjcnlwdCkgOgorICAgICA7OyAjKAorICBvcGVuc3NsKSA6CisgICAgIDs7ICMoCisgICopIDoKKyAgICB3aXRoX2hsc19jcnlwdG89YXV0bworICAgICA7OworZXNhYworCisKK2ZpCisKKwogZWNobwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogaHR0cCBsaXZlIHN0cmVhbWluZyBwbHVnaW4gKioqIiA+JjUKICRhc19lY2hvICIkYXNfbWU6ICoqKiBjaGVja2luZyBmZWF0dXJlOiBodHRwIGxpdmUgc3RyZWFtaW5nIHBsdWdpbiAqKioiID4mNjt9CkBAIC01Mzg3Myw2ICs1NTcwMSwzODkgQEAKIAogICBIQVZFX0hMUz1ubwogCisgIGNhc2UgJHdpdGhfaGxzX2NyeXB0byBpbiAjKAorICBuZXR0bGUpIDoKKworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBORVRUTEUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIE5FVFRMRS4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkTkVUVExFX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X05FVFRMRV9DRkxBR1M9IiRORVRUTEVfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibmV0dGxlXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIm5ldHRsZSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9ORVRUTEVfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAibmV0dGxlIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkTkVUVExFX0xJQlMiOyB0aGVuCisgICAgICAgIHBrZ19jdl9ORVRUTEVfTElCUz0iJE5FVFRMRV9MSUJTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibmV0dGxlXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIm5ldHRsZSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9ORVRUTEVfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJuZXR0bGUiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKKworCisKK2lmIHRlc3QgJHBrZ19mYWlsZWQgPSB5ZXM7IHRoZW4KKworaWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uIDAuMjA7IHRoZW4KKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcworZWxzZQorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KK2ZpCisgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhlbgorCSAgICAgICAgTkVUVExFX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAibmV0dGxlImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgTkVUVExFX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAibmV0dGxlImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkTkVUVExFX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisgICAgICAgICAgICAgICAgYXNfZm5fZXJyb3IgJD8gIkNvdWxkIG5vdCBmaW5kIG5ldHRsZSBsaWJyYXJ5IiAiJExJTkVOTyIgNQorZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorCWFzX2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCBuZXR0bGUgbGlicmFyeSIgIiRMSU5FTk8iIDUKK2Vsc2UKKwlORVRUTEVfQ0ZMQUdTPSRwa2dfY3ZfTkVUVExFX0NGTEFHUworCU5FVFRMRV9MSUJTPSRwa2dfY3ZfTkVUVExFX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKworCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX05FVFRMRSAxIiA+PmNvbmZkZWZzLmgKKworICAgICAgICBIQVZFX0hMUz0ieWVzIgorCitmaQorICAgICA7OyAjKAorICBsaWJnY3J5cHQpIDoKKworCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGliZ2NyeXB0LXByZWZpeCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfbGliZ2NyeXB0X3ByZWZpeCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfbGliZ2NyeXB0X3ByZWZpeDsgbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXg9IiR3aXRodmFsIgorZWxzZQorICBsaWJnY3J5cHRfY29uZmlnX3ByZWZpeD0iIgorZmkKKworICBpZiB0ZXN0IHgkbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXggIT0geCA7IHRoZW4KKyAgICAgaWYgdGVzdCB4JHtMSUJHQ1JZUFRfQ09ORklHK3NldH0gIT0geHNldCA7IHRoZW4KKyAgICAgICAgTElCR0NSWVBUX0NPTkZJRz0kbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXgvYmluL2xpYmdjcnlwdC1jb25maWcKKyAgICAgZmkKKyAgZmkKKworICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1saWJnY3J5cHQtY29uZmlnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWxpYmdjcnlwdC1jb25maWc7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX0xJQkdDUllQVF9DT05GSUcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRMSUJHQ1JZUFRfQ09ORklHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0xJQkdDUllQVF9DT05GSUc9IiRMSUJHQ1JZUFRfQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9MSUJHQ1JZUFRfQ09ORklHPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorTElCR0NSWVBUX0NPTkZJRz0kYWNfY3ZfcGF0aF9MSUJHQ1JZUFRfQ09ORklHCitpZiB0ZXN0IC1uICIkTElCR0NSWVBUX0NPTkZJRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRMSUJHQ1JZUFRfQ09ORklHIiA+JjUKKyRhc19lY2hvICIkTElCR0NSWVBUX0NPTkZJRyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfTElCR0NSWVBUX0NPTkZJRyI7IHRoZW4KKyAgYWNfcHRfTElCR0NSWVBUX0NPTkZJRz0kTElCR0NSWVBUX0NPTkZJRworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImxpYmdjcnlwdC1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGxpYmdjcnlwdC1jb25maWc7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX2FjX3B0X0xJQkdDUllQVF9DT05GSUcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRhY19wdF9MSUJHQ1JZUFRfQ09ORklHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX2FjX3B0X0xJQkdDUllQVF9DT05GSUc9IiRhY19wdF9MSUJHQ1JZUFRfQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9hY19wdF9MSUJHQ1JZUFRfQ09ORklHPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorYWNfcHRfTElCR0NSWVBUX0NPTkZJRz0kYWNfY3ZfcGF0aF9hY19wdF9MSUJHQ1JZUFRfQ09ORklHCitpZiB0ZXN0IC1uICIkYWNfcHRfTElCR0NSWVBUX0NPTkZJRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19wdF9MSUJHQ1JZUFRfQ09ORklHIiA+JjUKKyRhc19lY2hvICIkYWNfcHRfTElCR0NSWVBUX0NPTkZJRyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX3B0X0xJQkdDUllQVF9DT05GSUciID0geDsgdGhlbgorICAgIExJQkdDUllQVF9DT05GSUc9Im5vIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIExJQkdDUllQVF9DT05GSUc9JGFjX3B0X0xJQkdDUllQVF9DT05GSUcKKyAgZmkKK2Vsc2UKKyAgTElCR0NSWVBUX0NPTkZJRz0iJGFjX2N2X3BhdGhfTElCR0NSWVBUX0NPTkZJRyIKK2ZpCisKKyAgdG1wPTEuMi4wCisgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgcmVxX2xpYmdjcnlwdF9hcGk9YGVjaG8gIiR0bXAiICAgICB8IHNlZCAncy9cKC4qXCk6XCguKlwpL1wxLydgCisgICAgIG1pbl9saWJnY3J5cHRfdmVyc2lvbj1gZWNobyAiJHRtcCIgfCBzZWQgJ3MvXCguKlwpOlwoLipcKS9cMi8nYAorICBlbHNlCisgICAgIHJlcV9saWJnY3J5cHRfYXBpPTAKKyAgICAgbWluX2xpYmdjcnlwdF92ZXJzaW9uPSIkdG1wIgorICBmaQorCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIExJQkdDUllQVCAtIHZlcnNpb24gPj0gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgTElCR0NSWVBUIC0gdmVyc2lvbiA+PSAkbWluX2xpYmdjcnlwdF92ZXJzaW9uLi4uICIgPiY2OyB9CisgIG9rPW5vCisgIGlmIHRlc3QgIiRMSUJHQ1JZUFRfQ09ORklHIiAhPSAibm8iIDsgdGhlbgorICAgIHJlcV9tYWpvcj1gZWNobyAkbWluX2xpYmdjcnlwdF92ZXJzaW9uIHwgXAorICAgICAgICAgICAgICAgc2VkICdzL1woWzAtOV0qXClcLlwoWzAtOV0qXClcLlwoWzAtOV0qXCkvXDEvJ2AKKyAgICByZXFfbWlub3I9YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKKyAgICAgICAgICAgICAgIHNlZCAncy9cKFswLTldKlwpXC5cKFswLTldKlwpXC5cKFswLTldKlwpL1wyLydgCisgICAgcmVxX21pY3JvPWBlY2hvICRtaW5fbGliZ2NyeXB0X3ZlcnNpb24gfCBcCisgICAgICAgICAgICAgICBzZWQgJ3MvXChbMC05XSpcKVwuXChbMC05XSpcKVwuXChbMC05XSpcKS9cMy8nYAorICAgIGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbj1gJExJQkdDUllQVF9DT05GSUcgLS12ZXJzaW9uYAorICAgIG1ham9yPWBlY2hvICRsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb24gfCBcCisgICAgICAgICAgICAgICBzZWQgJ3MvXChbMC05XSpcKVwuXChbMC05XSpcKVwuXChbMC05XSpcKS4qL1wxLydgCisgICAgbWlub3I9YGVjaG8gJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbiB8IFwKKyAgICAgICAgICAgICAgIHNlZCAncy9cKFswLTldKlwpXC5cKFswLTldKlwpXC5cKFswLTldKlwpLiovXDIvJ2AKKyAgICBtaWNybz1gZWNobyAkbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uIHwgXAorICAgICAgICAgICAgICAgc2VkICdzL1woWzAtOV0qXClcLlwoWzAtOV0qXClcLlwoWzAtOV0qXCkuKi9cMy8nYAorICAgIGlmIHRlc3QgIiRtYWpvciIgLWd0ICIkcmVxX21ham9yIjsgdGhlbgorICAgICAgICBvaz15ZXMKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgIiRtYWpvciIgLWVxICIkcmVxX21ham9yIjsgdGhlbgorICAgICAgICAgICAgaWYgdGVzdCAiJG1pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCisgICAgICAgICAgICAgICBvaz15ZXMKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgIGlmIHRlc3QgIiRtaW5vciIgLWVxICIkcmVxX21pbm9yIjsgdGhlbgorICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRtaWNybyIgLWdlICIkcmVxX21pY3JvIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgb2s9eWVzCisgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICBmaQorICAgIGZpCisgIGZpCisgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyAoJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbikiID4mNQorJGFzX2VjaG8gInllcyAoJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbikiID4mNjsgfQorICBlbHNlCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisgIGZpCisgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCisgICAgICMgSWYgd2UgaGF2ZSBhIHJlY2VudCBsaWJnY3J5cHQsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCisgICAgICMgQVBJIGlzIGNvbXBhdGlibGUKKyAgICAgaWYgdGVzdCAiJHJlcV9saWJnY3J5cHRfYXBpIiAtZ3QgMCA7IHRoZW4KKyAgICAgICAgdG1wPWAkTElCR0NSWVBUX0NPTkZJRyAtLWFwaS12ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKyAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCisgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgTElCR0NSWVBUIEFQSSB2ZXJzaW9uIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIExJQkdDUllQVCBBUEkgdmVyc2lvbi4uLiAiID4mNjsgfQorICAgICAgICAgICBpZiB0ZXN0ICIkcmVxX2xpYmdjcnlwdF9hcGkiIC1lcSAiJHRtcCIgOyB0aGVuCisgICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG9rYXkiID4mNQorJGFzX2VjaG8gIm9rYXkiID4mNjsgfQorICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgb2s9bm8KKyAgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogZG9lcyBub3QgbWF0Y2guIHdhbnQ9JHJlcV9saWJnY3J5cHRfYXBpIGdvdD0kdG1wIiA+JjUKKyRhc19lY2hvICJkb2VzIG5vdCBtYXRjaC4gd2FudD0kcmVxX2xpYmdjcnlwdF9hcGkgZ290PSR0bXAiID4mNjsgfQorICAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICBmaQorICBmaQorICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorICAgIExJQkdDUllQVF9DRkxBR1M9YCRMSUJHQ1JZUFRfQ09ORklHIC0tY2ZsYWdzYAorICAgIExJQkdDUllQVF9MSUJTPWAkTElCR0NSWVBUX0NPTkZJRyAtLWxpYnNgCisKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MSUJHQ1JZUFQgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgICAgSEFWRV9ITFM9InllcyIKKworICAgIGxpYmdjcnlwdF9jb25maWdfaG9zdD1gJExJQkdDUllQVF9DT05GSUcgLS1ob3N0IDI+L2Rldi9udWxsIHx8IGVjaG8gbm9uZWAKKyAgICBpZiB0ZXN0IHgiJGxpYmdjcnlwdF9jb25maWdfaG9zdCIgIT0geG5vbmUgOyB0aGVuCisgICAgICBpZiB0ZXN0IHgiJGxpYmdjcnlwdF9jb25maWdfaG9zdCIgIT0geCIkaG9zdCIgOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzoKKyoqKgorKioqIFRoZSBjb25maWcgc2NyaXB0ICRMSUJHQ1JZUFRfQ09ORklHIHdhcworKioqIGJ1aWx0IGZvciAkbGliZ2NyeXB0X2NvbmZpZ19ob3N0IGFuZCB0aHVzIG1heSBub3QgbWF0Y2ggdGhlCisqKiogdXNlZCBob3N0ICRob3N0LgorKioqIFlvdSBtYXkgd2FudCB0byB1c2UgdGhlIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWxpYmdjcnlwdC1wcmVmaXgKKyoqKiB0byBzcGVjaWZ5IGEgbWF0Y2hpbmcgY29uZmlnIHNjcmlwdC4KKyoqKiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOgorKioqCisqKiogVGhlIGNvbmZpZyBzY3JpcHQgJExJQkdDUllQVF9DT05GSUcgd2FzCisqKiogYnVpbHQgZm9yICRsaWJnY3J5cHRfY29uZmlnX2hvc3QgYW5kIHRodXMgbWF5IG5vdCBtYXRjaCB0aGUKKyoqKiB1c2VkIGhvc3QgJGhvc3QuCisqKiogWW91IG1heSB3YW50IHRvIHVzZSB0aGUgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtbGliZ2NyeXB0LXByZWZpeAorKioqIHRvIHNwZWNpZnkgYSBtYXRjaGluZyBjb25maWcgc2NyaXB0LgorKioqIiA+JjI7fQorICAgICAgZmkKKyAgICBmaQorICBlbHNlCisgICAgTElCR0NSWVBUX0NGTEFHUz0iIgorICAgIExJQkdDUllQVF9MSUJTPSIiCisgICAgYXNfZm5fZXJyb3IgJD8gIkNvdWxkIG5vdCBmaW5kIGxpYmdjcnlwdCBsaWJyYXJ5IiAiJExJTkVOTyIgNQorICBmaQorCisKKworICAgICA7OyAjKAorICBvcGVuc3NsKSA6CisKKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgT1BFTlNTTCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgT1BFTlNTTC4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkT1BFTlNTTF9DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9PUEVOU1NMX0NGTEFHUz0iJE9QRU5TU0xfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwib3BlbnNzbFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJvcGVuc3NsIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X09QRU5TU0xfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAib3BlbnNzbCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJE9QRU5TU0xfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X09QRU5TU0xfTElCUz0iJE9QRU5TU0xfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIm9wZW5zc2xcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAib3BlbnNzbCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9PUEVOU1NMX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAib3BlbnNzbCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBPUEVOU1NMX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAib3BlbnNzbCJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIE9QRU5TU0xfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJvcGVuc3NsImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkT1BFTlNTTF9QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorICAgICAgICAgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCBvcGVuc3NsIGxpYnJhcnkiICIkTElORU5PIiA1CitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisJYXNfZm5fZXJyb3IgJD8gIkNvdWxkIG5vdCBmaW5kIG9wZW5zc2wgbGlicmFyeSIgIiRMSU5FTk8iIDUKK2Vsc2UKKwlPUEVOU1NMX0NGTEFHUz0kcGtnX2N2X09QRU5TU0xfQ0ZMQUdTCisJT1BFTlNTTF9MSUJTPSRwa2dfY3ZfT1BFTlNTTF9MSUJTCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9PUEVOU1NMIDEiID4+Y29uZmRlZnMuaAorCisgICAgICAgIEhBVkVfSExTPSJ5ZXMiCisKK2ZpCisgICAgIDs7ICMoCisgICopIDoKKwogCiBwa2dfZmFpbGVkPW5vCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBORVRUTEUiID4mNQpAQCAtNTQxMjMsNyArNTYzMzQsNyBAQAogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0xJQkdDUllQVCAxIiA+PmNvbmZkZWZzLmgKIAotICAgICAgSEFWRV9ITFM9InllcyIKKyAgICAgICAgICBIQVZFX0hMUz0ieWVzIgogCiAgICAgbGliZ2NyeXB0X2NvbmZpZ19ob3N0PWAkTElCR0NSWVBUX0NPTkZJRyAtLWhvc3QgMj4vZGV2L251bGwgfHwgZWNobyBub25lYAogICAgIGlmIHRlc3QgeCIkbGliZ2NyeXB0X2NvbmZpZ19ob3N0IiAhPSB4bm9uZSA7IHRoZW4KQEAgLTU0MjEyLDExICs1NjQyMywxMSBAQAogCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogCi0gICAgICAgIEhBVkVfSExTPSJubyIKKyAgICAgICAgICAgIEhBVkVfSExTPSJubyIKIAogZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgogCi0gICAgICAgIEhBVkVfSExTPSJubyIKKyAgICAgICAgICAgIEhBVkVfSExTPSJubyIKIAogZWxzZQogCU9QRU5TU0xfQ0ZMQUdTPSRwa2dfY3ZfT1BFTlNTTF9DRkxBR1MKQEAgLTU0MjI3LDcgKzU2NDM4LDcgQEAKIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9PUEVOU1NMIDEiID4+Y29uZmRlZnMuaAogCi0gICAgICAgIEhBVkVfSExTPSJ5ZXMiCisgICAgICAgICAgICBIQVZFX0hMUz0ieWVzIgogCiBmaQogCkBAIC01NDQyNiw3ICs1NjYzNyw3IEBACiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfTElCR0NSWVBUIDEiID4+Y29uZmRlZnMuaAogCi0gICAgICBIQVZFX0hMUz0ieWVzIgorICAgICAgICAgIEhBVkVfSExTPSJ5ZXMiCiAKICAgICBsaWJnY3J5cHRfY29uZmlnX2hvc3Q9YCRMSUJHQ1JZUFRfQ09ORklHIC0taG9zdCAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vbmVgCiAgICAgaWYgdGVzdCB4IiRsaWJnY3J5cHRfY29uZmlnX2hvc3QiICE9IHhub25lIDsgdGhlbgpAQCAtNTQ1MTUsMTEgKzU2NzI2LDExIEBACiAJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKICRhc19lY2hvICJubyIgPiY2OyB9CiAKLSAgICAgICAgSEFWRV9ITFM9Im5vIgorICAgICAgICAgICAgSEFWRV9ITFM9Im5vIgogCiBlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCiAKLSAgICAgICAgSEFWRV9ITFM9Im5vIgorICAgICAgICAgICAgSEFWRV9ITFM9Im5vIgogCiBlbHNlCiAJT1BFTlNTTF9DRkxBR1M9JHBrZ19jdl9PUEVOU1NMX0NGTEFHUwpAQCAtNTQ1MzAsNyArNTY3NDEsNyBAQAogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX09QRU5TU0wgMSIgPj5jb25mZGVmcy5oCiAKLSAgICAgICAgSEFWRV9ITFM9InllcyIKKyAgICAgICAgICAgIEhBVkVfSExTPSJ5ZXMiCiAKIGZpCiAKQEAgLTU0NTQ4LDEwICs1Njc1OSwxMyBAQAogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX05FVFRMRSAxIiA+PmNvbmZkZWZzLmgKIAotICAgIEhBVkVfSExTPSJ5ZXMiCisgICAgICAgIEhBVkVfSExTPSJ5ZXMiCiAKIGZpCiAKKyAgIDs7Citlc2FjCisKIAogICBMSUJTPSRnc3RfY2hlY2tfc2F2ZV9MSUJTCiAgIExERkxBR1M9JGdzdF9jaGVja19zYXZlX0xERkxBR1MKQEAgLTU1MDkxLDE0ICs1NzMwNSw2IEBACiBmaQogCiAgaWYgZmFsc2U7IHRoZW4KLSAgVVNFX01QRzEyM19UUlVFPQotICBVU0VfTVBHMTIzX0ZBTFNFPScjJwotZWxzZQotICBVU0VfTVBHMTIzX1RSVUU9JyMnCi0gIFVTRV9NUEcxMjNfRkFMU0U9Ci1maQotCi0gaWYgZmFsc2U7IHRoZW4KICAgVVNFX01QTEVYX1RSVUU9CiAgIFVTRV9NUExFWF9GQUxTRT0nIycKIGVsc2UKQEAgLTU1MjkxLDE0ICs1NzQ5Nyw2IEBACiBmaQogCiAgaWYgZmFsc2U7IHRoZW4KLSAgVVNFX0dTRVRUSU5HU19UUlVFPQotICBVU0VfR1NFVFRJTkdTX0ZBTFNFPScjJwotZWxzZQotICBVU0VfR1NFVFRJTkdTX1RSVUU9JyMnCi0gIFVTRV9HU0VUVElOR1NfRkFMU0U9Ci1maQotCi0gaWYgZmFsc2U7IHRoZW4KICAgVVNFX1hWSURfVFJVRT0KICAgVVNFX1hWSURfRkFMU0U9JyMnCiBlbHNlCkBAIC01NTQ3Myw2ICs1NzY3MSw5IEBACiAKIAogR1NUX0FMTF9MREZMQUdTPSItbm8tdW5kZWZpbmVkIgoraWYgdGVzdCAieCR7ZW5hYmxlX0JzeW1ib2xpY30iID0gInh5ZXMiOyB0aGVuCisgIEdTVF9BTExfTERGTEFHUz0iJEdTVF9BTExfTERGTEFHUyAtV2wsLUJzeW1ib2xpYy1mdW5jdGlvbnMiCitmaQogCiAKIEdTVF9MSUJfTERGTEFHUz0iLWV4cG9ydC1zeW1ib2xzLXJlZ2V4IF5fP1woZ3N0X1x8R3N0XHxHU1RfXCkuKiIKQEAgLTU1NDg1LDcgKzU3Njg2LDcgQEAKICRNS0RJUl9QIHRlc3RzL2NoZWNrL29yYwogCiAKLWFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBjb21tb24vTWFrZWZpbGUgY29tbW9uL200L01ha2VmaWxlIGdzdC1wbHVnaW5zLWJhZC5zcGVjIGdzdC9NYWtlZmlsZSBnc3QvYWNjdXJpcC9NYWtlZmlsZSBnc3QvYWRwY21kZWMvTWFrZWZpbGUgZ3N0L2FkcGNtZW5jL01ha2VmaWxlIGdzdC9haWZmL01ha2VmaWxlIGdzdC9hc2ZtdXgvTWFrZWZpbGUgZ3N0L2F1ZGlvZnhiYWQvTWFrZWZpbGUgZ3N0L2F1ZGlvbWl4ZXIvTWFrZWZpbGUgZ3N0L2F1ZGlvdmlzdWFsaXplcnMvTWFrZWZpbGUgZ3N0L2F1dG9jb252ZXJ0L01ha2VmaWxlIGdzdC9iYXllci9NYWtlZmlsZSBnc3QvY2FtZXJhYmluMi9NYWtlZmlsZSBnc3QvY2R4YXBhcnNlL01ha2VmaWxlIGdzdC9jb2xvcmVmZmVjdHMvTWFrZWZpbGUgZ3N0L2RhdGF1cmlzcmMvTWFrZWZpbGUgZ3N0L2RjY3AvTWFrZWZpbGUgZ3N0L2RlYnVndXRpbHMvTWFrZWZpbGUgZ3N0L2R2YnN1Ym92ZXJsYXkvTWFrZWZpbGUgZ3N0L2R2ZHNwdS9NYWtlZmlsZSBnc3QvZmFjZW92ZXJsYXkvTWFrZWZpbGUgZ3N0L2Zlc3RpdmFsL01ha2VmaWxlIGdzdC9maWVsZGFuYWx5c2lzL01ha2VmaWxlIGdzdC9mcmVldmVyYi9NYWtlZmlsZSBnc3QvZnJlaTByL01ha2VmaWxlIGdzdC9nYXVkaWVmZmVjdHMvTWFrZWZpbGUgZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9NYWtlZmlsZSBnc3QvZ2RwL01ha2VmaWxlIGdzdC9oZHZwYXJzZS9NYWtlZmlsZSBnc3QvaWQzdGFnL01ha2VmaWxlIGdzdC9pbnRlci9NYWtlZmlsZSBnc3QvaW50ZXJsYWNlL01ha2VmaWxlIGdzdC9pdmZwYXJzZS9NYWtlZmlsZSBnc3QvaXZ0Yy9NYWtlZmlsZSBnc3QvanAya2RlY2ltYXRvci9NYWtlZmlsZSBnc3QvanBlZ2Zvcm1hdC9NYWtlZmlsZSBnc3QvbGlicmZiL01ha2VmaWxlIGdzdC9saXZlYWRkZXIvTWFrZWZpbGUgZ3N0L21pZGkvTWFrZWZpbGUgZ3N0L21wZWdkZW11eC9NYWtlZmlsZSBnc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUgZ3N0L21wZWd0c211eC9NYWtlZmlsZSBnc3QvbXBlZ3RzbXV4L3RzbXV4L01ha2VmaWxlIGdzdC9tcGVncHNtdXgvTWFrZWZpbGUgZ3N0L212ZS9NYWtlZmlsZSBnc3QvbXhmL01ha2VmaWxlIGdzdC9udXZkZW11eC9NYWtlZmlsZSBnc3Qvb252aWYvTWFrZWZpbGUgZ3N0L3BhdGNoZGV0ZWN0L01ha2VmaWxlIGdzdC9wY2FwcGFyc2UvTWFrZWZpbGUgZ3N0L3BubS9NYWtlZmlsZSBnc3QvcmF3cGFyc2UvTWFrZWZpbGUgZ3N0L3JlbW92ZXNpbGVuY2UvTWFrZWZpbGUgZ3N0L3J0cC9NYWtlZmlsZSBnc3Qvc2RpL01ha2VmaWxlIGdzdC9zZHAvTWFrZWZpbGUgZ3N0L3NlZ21lbnRjbGlwL01ha2VmaWxlIGdzdC9zaXJlbi9NYWtlZmlsZSBnc3Qvc21vb3RoL01ha2VmaWxlIGdzdC9zcGVlZC9NYWtlZmlsZSBnc3Qvc3ViZW5jL01ha2VmaWxlIGdzdC9zdGVyZW8vTWFrZWZpbGUgZ3N0L3R0YS9NYWtlZmlsZSBnc3QvdmlkZW9maWx0ZXJzL01ha2VmaWxlIGdzdC92aWRlb21lYXN1cmUvTWFrZWZpbGUgZ3N0L3ZpZGVvcGFyc2Vycy9NYWtlZmlsZSBnc3QvdmlkZW9zaWduYWwvTWFrZWZpbGUgZ3N0L3ZtbmMvTWFrZWZpbGUgZ3N0L3k0bS9NYWtlZmlsZSBnc3QveWFkaWYvTWFrZWZpbGUgZ3N0L2NvbXBvc2l0b3IvTWFrZWZpbGUgZ3N0LWxpYnMvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L01ha2VmaWxlIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L01ha2VmaWxlIGdzdC1saWJzL2dzdC9iYXNlY2FtZXJhYmluc3JjL01ha2VmaWxlIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvY29jb2EvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL2Rpc3BtYW54L01ha2VmaWxlIGdzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL2VnbC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvd2luMzIvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL3gxMS9NYWtlZmlsZSBnc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlIGdzdC1saWJzL2dzdC9pbnRlcmZhY2VzL01ha2VmaWxlIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZSBnc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9NYWtlZmlsZSBnc3QtbGlicy9nc3Qvd2F5bGFuZC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvYmFzZS9NYWtlZmlsZSBnc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUgc3lzL01ha2VmaWxlIHN5cy9kc2hvd2RlY3dyYXBwZXIvTWFrZWZpbGUgc3lzL2FjbWVuYy9NYWtlZmlsZSBzeXMvYWNtbXAzZGVjL01ha2VmaWxlIHN5cy9hbmRyb2lkbWVkaWEvTWFrZWZpbGUgc3lzL2FwcGxlbWVkaWEvTWFrZWZpbGUgc3lzL2FwcGxlbWVkaWEtbm9ucHVibGljL01ha2VmaWxlIHN5cy9hdmMvTWFrZWZpbGUgc3lzL2JsdWV6L01ha2VmaWxlIHN5cy9kM2R2aWRlb3NpbmsvTWFrZWZpbGUgc3lzL2RlY2tsaW5rL01ha2VmaWxlIHN5cy9kaXJlY3Rzb3VuZC9NYWtlZmlsZSBzeXMvZHNob3dzcmN3cmFwcGVyL01ha2VmaWxlIHN5cy9kc2hvd3ZpZGVvc2luay9NYWtlZmlsZSBzeXMvZHZiL01ha2VmaWxlIHN5cy9mYmRldi9NYWtlZmlsZSBzeXMvbGluc3lzL01ha2VmaWxlIHN5cy9vcGVuc2xlcy9NYWtlZmlsZSBzeXMvc2htL01ha2VmaWxlIHN5cy91dmNoMjY0L01ha2VmaWxlIHN5cy92Y2QvTWFrZWZpbGUgc3lzL3ZkcGF1L01ha2VmaWxlIHN5cy9wdnIyZC9NYWtlZmlsZSBzeXMvd2FzYXBpL01ha2VmaWxlIHN5cy93aW5pbmV0L01ha2VmaWxlIHN5cy93aW5rcy9NYWtlZmlsZSBzeXMvd2luc2NyZWVuY2FwL01ha2VmaWxlIHRlc3RzL01ha2VmaWxlIHRlc3RzL2NoZWNrL01ha2VmaWxlIHRlc3RzL2ZpbGVzL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2F2c2FtcGxlc2luay9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9jYW1lcmFiaW4yL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2NvZGVjcGFyc2Vycy9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9kaXJlY3RmYi9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9jb2NvYS9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9jbHV0dGVyL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJlL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvY3ViZXl1di9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2RvdWJsZWN1YmUvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9yZWNvcmRncmFwaGljL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9ndGsvZ3RrdmlkZW9vdmVybGF5L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay8zZHZpZGVvL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay9maWx0ZXJub3ZpZGVvb3ZlcmxheS9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9ndGsvZmlsdGVydmlkZW9vdmVybGF5L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL3N3aXRjaHZpZGVvb3ZlcmxheS9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9xdC9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9zZGwvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ3RrL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL21wZWd0cy9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9teGYvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvb3BlbmN2L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL3V2Y2gyNjQvTWFrZWZpbGUgdGVzdHMvaWNsZXMvTWFrZWZpbGUgZXh0L3ZvYW1yd2JlbmMvTWFrZWZpbGUgZXh0L3ZvYWFjZW5jL01ha2VmaWxlIGV4dC9hc3NyZW5kZXIvTWFrZWZpbGUgZXh0L2FwZXhzaW5rL01ha2VmaWxlIGV4dC9iczJiL01ha2VmaWxlIGV4dC9iejIvTWFrZWZpbGUgZXh0L2Nocm9tYXByaW50L01ha2VmaWxlIGV4dC9jdXJsL01ha2VmaWxlIGV4dC9kYXNoL01ha2VmaWxlIGV4dC9kYzEzOTQvTWFrZWZpbGUgZXh0L2RpcmVjdGZiL01ha2VmaWxlIGV4dC93YXlsYW5kL01ha2VmaWxlIGV4dC9kYWFsYS9NYWtlZmlsZSBleHQvZHRzL01ha2VmaWxlIGV4dC9nbC9NYWtlZmlsZSBleHQvZ3RrL01ha2VmaWxlIGV4dC9mYWFjL01ha2VmaWxlIGV4dC9mYWFkL01ha2VmaWxlIGV4dC9mbGl0ZS9NYWtlZmlsZSBleHQvZmx1aWRzeW50aC9NYWtlZmlsZSBleHQvZ3NtL01ha2VmaWxlIGV4dC9obHMvTWFrZWZpbGUgZXh0L2thdGUvTWFrZWZpbGUgZXh0L2xhZHNwYS9NYWtlZmlsZSBleHQvbHYyL01ha2VmaWxlIGV4dC9saWJkZTI2NS9NYWtlZmlsZSBleHQvbGlibW1zL01ha2VmaWxlIGV4dC9saWJ2aXN1YWwvTWFrZWZpbGUgZXh0L01ha2VmaWxlIGV4dC9tb2RwbHVnL01ha2VmaWxlIGV4dC9tcGVnMmVuYy9NYWtlZmlsZSBleHQvbXBnMTIzL01ha2VmaWxlIGV4dC9taW1pYy9NYWtlZmlsZSBleHQvbXBsZXgvTWFrZWZpbGUgZXh0L211c2VwYWNrL01ha2VmaWxlIGV4dC9uYXMvTWFrZWZpbGUgZXh0L25lb24vTWFrZWZpbGUgZXh0L29mYS9NYWtlZmlsZSBleHQvb3BlbmFsL01ha2VmaWxlIGV4dC9vcGVuY3YvTWFrZWZpbGUgZXh0L29wZW5leHIvTWFrZWZpbGUgZXh0L29wZW5oMjY0L01ha2VmaWxlIGV4dC9vcGVuanBlZy9NYWtlZmlsZSBleHQvb3Blbm5pMi9NYWtlZmlsZSBleHQvb3B1cy9NYWtlZmlsZSBleHQvcXQvTWFrZWZpbGUgZXh0L3JzdmcvTWFrZWZpbGUgZXh0L3Jlc2luZHZkL01ha2VmaWxlIGV4dC9ydG1wL01ha2VmaWxlIGV4dC9zYmMvTWFrZWZpbGUgZXh0L3NjaHJvZWRpbmdlci9NYWtlZmlsZSBleHQvc2RsL01ha2VmaWxlIGV4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUgZXh0L3NuZGZpbGUvTWFrZWZpbGUgZXh0L3NvdW5kdG91Y2gvTWFrZWZpbGUgZXh0L3NwYW5kc3AvTWFrZWZpbGUgZXh0L3NuZGlvL01ha2VmaWxlIGV4dC9zcnRwL01ha2VmaWxlIGV4dC90ZWxldGV4dGRlYy9NYWtlZmlsZSBleHQvZ21lL01ha2VmaWxlIGV4dC9nc2V0dGluZ3MvTWFrZWZpbGUgZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwgZXh0L3NwYy9NYWtlZmlsZSBleHQvdGltaWRpdHkvTWFrZWZpbGUgZXh0L3dlYnAvTWFrZWZpbGUgZXh0L3gyNjUvTWFrZWZpbGUgZXh0L3h2aWQvTWFrZWZpbGUgZXh0L3piYXIvTWFrZWZpbGUgZXh0L2R0bHMvTWFrZWZpbGUgcG8vTWFrZWZpbGUuaW4gZG9jcy9NYWtlZmlsZSBkb2NzL3BsdWdpbnMvTWFrZWZpbGUgZG9jcy9saWJzL01ha2VmaWxlIGRvY3MvdmVyc2lvbi5lbnRpdGllcyBwa2djb25maWcvTWFrZWZpbGUgcGtnY29uZmlnL2dzdHJlYW1lci1wbHVnaW5zLWJhZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItaW5zZXJ0YmluLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItaW5zZXJ0YmluLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMgcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLW1wZWd0cy5wYyBwa2djb25maWcvZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLXdheWxhbmQucGMgcGtnY29uZmlnL2dzdHJlYW1lci13YXlsYW5kLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UucGMgcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYyB0b29scy9NYWtlZmlsZSBtNC9NYWtlZmlsZSIKK2FjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBjb21tb24vTWFrZWZpbGUgY29tbW9uL200L01ha2VmaWxlIGdzdC1wbHVnaW5zLWJhZC5zcGVjIGdzdC9NYWtlZmlsZSBnc3QvYWNjdXJpcC9NYWtlZmlsZSBnc3QvYWRwY21kZWMvTWFrZWZpbGUgZ3N0L2FkcGNtZW5jL01ha2VmaWxlIGdzdC9haWZmL01ha2VmaWxlIGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvTWFrZWZpbGUgZ3N0L2FzZm11eC9NYWtlZmlsZSBnc3QvYXVkaW9meGJhZC9NYWtlZmlsZSBnc3QvYXVkaW9taXhlci9NYWtlZmlsZSBnc3QvYXVkaW92aXN1YWxpemVycy9NYWtlZmlsZSBnc3QvYXV0b2NvbnZlcnQvTWFrZWZpbGUgZ3N0L2JheWVyL01ha2VmaWxlIGdzdC9jYW1lcmFiaW4yL01ha2VmaWxlIGdzdC9jZHhhcGFyc2UvTWFrZWZpbGUgZ3N0L2NvbG9yZWZmZWN0cy9NYWtlZmlsZSBnc3QvZGF0YXVyaXNyYy9NYWtlZmlsZSBnc3QvZGNjcC9NYWtlZmlsZSBnc3QvZGVidWd1dGlscy9NYWtlZmlsZSBnc3QvZHZic3Vib3ZlcmxheS9NYWtlZmlsZSBnc3QvZHZkc3B1L01ha2VmaWxlIGdzdC9mYWNlb3ZlcmxheS9NYWtlZmlsZSBnc3QvZmVzdGl2YWwvTWFrZWZpbGUgZ3N0L2ZpZWxkYW5hbHlzaXMvTWFrZWZpbGUgZ3N0L2ZyZWV2ZXJiL01ha2VmaWxlIGdzdC9mcmVpMHIvTWFrZWZpbGUgZ3N0L2dhdWRpZWZmZWN0cy9NYWtlZmlsZSBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL01ha2VmaWxlIGdzdC9nZHAvTWFrZWZpbGUgZ3N0L2hkdnBhcnNlL01ha2VmaWxlIGdzdC9pZDN0YWcvTWFrZWZpbGUgZ3N0L2ludGVyL01ha2VmaWxlIGdzdC9pbnRlcmxhY2UvTWFrZWZpbGUgZ3N0L2l2ZnBhcnNlL01ha2VmaWxlIGdzdC9pdnRjL01ha2VmaWxlIGdzdC9qcDJrZGVjaW1hdG9yL01ha2VmaWxlIGdzdC9qcGVnZm9ybWF0L01ha2VmaWxlIGdzdC9saWJyZmIvTWFrZWZpbGUgZ3N0L21pZGkvTWFrZWZpbGUgZ3N0L21wZWdkZW11eC9NYWtlZmlsZSBnc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUgZ3N0L21wZWd0c211eC9NYWtlZmlsZSBnc3QvbXBlZ3RzbXV4L3RzbXV4L01ha2VmaWxlIGdzdC9tcGVncHNtdXgvTWFrZWZpbGUgZ3N0L212ZS9NYWtlZmlsZSBnc3QvbXhmL01ha2VmaWxlIGdzdC9uZXRzaW0vTWFrZWZpbGUgZ3N0L251dmRlbXV4L01ha2VmaWxlIGdzdC9vbnZpZi9NYWtlZmlsZSBnc3QvcGF0Y2hkZXRlY3QvTWFrZWZpbGUgZ3N0L3BjYXBwYXJzZS9NYWtlZmlsZSBnc3QvcG5tL01ha2VmaWxlIGdzdC9yYXdwYXJzZS9NYWtlZmlsZSBnc3QvcmVtb3Zlc2lsZW5jZS9NYWtlZmlsZSBnc3Qvc2RpL01ha2VmaWxlIGdzdC9zZHAvTWFrZWZpbGUgZ3N0L3NlZ21lbnRjbGlwL01ha2VmaWxlIGdzdC9zaXJlbi9NYWtlZmlsZSBnc3Qvc21vb3RoL01ha2VmaWxlIGdzdC9zcGVlZC9NYWtlZmlsZSBnc3Qvc3ViZW5jL01ha2VmaWxlIGdzdC9zdGVyZW8vTWFrZWZpbGUgZ3N0L3R0YS9NYWtlZmlsZSBnc3QvdmlkZW9maWx0ZXJzL01ha2VmaWxlIGdzdC92aWRlb21lYXN1cmUvTWFrZWZpbGUgZ3N0L3ZpZGVvcGFyc2Vycy9NYWtlZmlsZSBnc3QvdmlkZW9zaWduYWwvTWFrZWZpbGUgZ3N0L3ZtbmMvTWFrZWZpbGUgZ3N0L3k0bS9NYWtlZmlsZSBnc3QveWFkaWYvTWFrZWZpbGUgZ3N0L2NvbXBvc2l0b3IvTWFrZWZpbGUgZ3N0LWxpYnMvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L01ha2VmaWxlIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L01ha2VmaWxlIGdzdC1saWJzL2dzdC9iYXNlY2FtZXJhYmluc3JjL01ha2VmaWxlIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvY29jb2EvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL2Rpc3BtYW54L01ha2VmaWxlIGdzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL2VnbC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvd2luMzIvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL3gxMS9NYWtlZmlsZSBnc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlIGdzdC1saWJzL2dzdC9pbnRlcmZhY2VzL01ha2VmaWxlIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZSBnc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9NYWtlZmlsZSBnc3QtbGlicy9nc3Qvd2F5bGFuZC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvYmFzZS9NYWtlZmlsZSBnc3QtbGlicy9nc3QvcGxheWVyL01ha2VmaWxlIGdzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZSBnc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUgc3lzL01ha2VmaWxlIHN5cy9kc2hvd2RlY3dyYXBwZXIvTWFrZWZpbGUgc3lzL2FjbWVuYy9NYWtlZmlsZSBzeXMvYWNtbXAzZGVjL01ha2VmaWxlIHN5cy9hbmRyb2lkbWVkaWEvTWFrZWZpbGUgc3lzL2FwcGxlbWVkaWEvTWFrZWZpbGUgc3lzL2FwcGxlbWVkaWEtbm9ucHVibGljL01ha2VmaWxlIHN5cy9hdmMvTWFrZWZpbGUgc3lzL2JsdWV6L01ha2VmaWxlIHN5cy9kM2R2aWRlb3NpbmsvTWFrZWZpbGUgc3lzL2RlY2tsaW5rL01ha2VmaWxlIHN5cy9kaXJlY3Rzb3VuZC9NYWtlZmlsZSBzeXMvZHNob3dzcmN3cmFwcGVyL01ha2VmaWxlIHN5cy9kc2hvd3ZpZGVvc2luay9NYWtlZmlsZSBzeXMvZHZiL01ha2VmaWxlIHN5cy9mYmRldi9NYWtlZmlsZSBzeXMvbGluc3lzL01ha2VmaWxlIHN5cy9udmVuYy9NYWtlZmlsZSBzeXMvb3BlbnNsZXMvTWFrZWZpbGUgc3lzL3NobS9NYWtlZmlsZSBzeXMvdGlueWFsc2EvTWFrZWZpbGUgc3lzL3V2Y2gyNjQvTWFrZWZpbGUgc3lzL3ZjZC9NYWtlZmlsZSBzeXMvdmRwYXUvTWFrZWZpbGUgc3lzL3B2cjJkL01ha2VmaWxlIHN5cy93YXNhcGkvTWFrZWZpbGUgc3lzL3dpbmluZXQvTWFrZWZpbGUgc3lzL3dpbmtzL01ha2VmaWxlIHN5cy93aW5zY3JlZW5jYXAvTWFrZWZpbGUgdGVzdHMvTWFrZWZpbGUgdGVzdHMvY2hlY2svTWFrZWZpbGUgdGVzdHMvZmlsZXMvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvYXZzYW1wbGVzaW5rL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2NhbWVyYWJpbjIvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvY29kZWNwYXJzZXJzL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2RpcmVjdGZiL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2NvY29hL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2NsdXR0ZXIvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmUvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJleXV2L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvZG91YmxlY3ViZS9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL3JlY29yZGdyYXBoaWMvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay9ndGt2aWRlb292ZXJsYXkvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrLzNkdmlkZW8vTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2ZpbHRlcm5vdmlkZW9vdmVybGF5L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay9maWx0ZXJ2aWRlb292ZXJsYXkvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2Z4dGVzdC9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9ndGsvc3dpdGNodmlkZW9vdmVybGF5L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL3F0L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL3NkbC9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9ndGsvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvbXBlZ3RzL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL214Zi9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9vcGVuY3YvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvdXZjaDI2NC9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy93YXlsYW5kc2luay9NYWtlZmlsZSB0ZXN0cy9pY2xlcy9NYWtlZmlsZSBleHQvdm9hbXJ3YmVuYy9NYWtlZmlsZSBleHQvdm9hYWNlbmMvTWFrZWZpbGUgZXh0L2Fzc3JlbmRlci9NYWtlZmlsZSBleHQvYXBleHNpbmsvTWFrZWZpbGUgZXh0L2JzMmIvTWFrZWZpbGUgZXh0L2J6Mi9NYWtlZmlsZSBleHQvY2hyb21hcHJpbnQvTWFrZWZpbGUgZXh0L2N1cmwvTWFrZWZpbGUgZXh0L2Rhc2gvTWFrZWZpbGUgZXh0L2RjMTM5NC9NYWtlZmlsZSBleHQvZGlyZWN0ZmIvTWFrZWZpbGUgZXh0L3dheWxhbmQvTWFrZWZpbGUgZXh0L2RhYWxhL01ha2VmaWxlIGV4dC9kdHMvTWFrZWZpbGUgZXh0L2dsL01ha2VmaWxlIGV4dC9ndGsvTWFrZWZpbGUgZXh0L2ZhYWMvTWFrZWZpbGUgZXh0L2ZhYWQvTWFrZWZpbGUgZXh0L2ZsaXRlL01ha2VmaWxlIGV4dC9mbHVpZHN5bnRoL01ha2VmaWxlIGV4dC9nc20vTWFrZWZpbGUgZXh0L2hscy9NYWtlZmlsZSBleHQva2F0ZS9NYWtlZmlsZSBleHQvbGFkc3BhL01ha2VmaWxlIGV4dC9sdjIvTWFrZWZpbGUgZXh0L2xpYmRlMjY1L01ha2VmaWxlIGV4dC9saWJtbXMvTWFrZWZpbGUgZXh0L2xpYnZpc3VhbC9NYWtlZmlsZSBleHQvTWFrZWZpbGUgZXh0L21vZHBsdWcvTWFrZWZpbGUgZXh0L21wZWcyZW5jL01ha2VmaWxlIGV4dC9taW1pYy9NYWtlZmlsZSBleHQvbXBsZXgvTWFrZWZpbGUgZXh0L211c2VwYWNrL01ha2VmaWxlIGV4dC9uYXMvTWFrZWZpbGUgZXh0L25lb24vTWFrZWZpbGUgZXh0L29mYS9NYWtlZmlsZSBleHQvb3BlbmFsL01ha2VmaWxlIGV4dC9vcGVuY3YvTWFrZWZpbGUgZXh0L29wZW5leHIvTWFrZWZpbGUgZXh0L29wZW5oMjY0L01ha2VmaWxlIGV4dC9vcGVuanBlZy9NYWtlZmlsZSBleHQvb3Blbm5pMi9NYWtlZmlsZSBleHQvb3B1cy9NYWtlZmlsZSBleHQvcXQvTWFrZWZpbGUgZXh0L3JzdmcvTWFrZWZpbGUgZXh0L3Jlc2luZHZkL01ha2VmaWxlIGV4dC9ydG1wL01ha2VmaWxlIGV4dC9zYmMvTWFrZWZpbGUgZXh0L3NjaHJvZWRpbmdlci9NYWtlZmlsZSBleHQvc2RsL01ha2VmaWxlIGV4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUgZXh0L3NuZGZpbGUvTWFrZWZpbGUgZXh0L3NvdW5kdG91Y2gvTWFrZWZpbGUgZXh0L3NwYW5kc3AvTWFrZWZpbGUgZXh0L3NuZGlvL01ha2VmaWxlIGV4dC9zcnRwL01ha2VmaWxlIGV4dC90ZWxldGV4dGRlYy9NYWtlZmlsZSBleHQvZ21lL01ha2VmaWxlIGV4dC9zcGMvTWFrZWZpbGUgZXh0L3RpbWlkaXR5L01ha2VmaWxlIGV4dC92dWxrYW4vTWFrZWZpbGUgZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUgZXh0L3dlYnAvTWFrZWZpbGUgZXh0L3gyNjUvTWFrZWZpbGUgZXh0L3h2aWQvTWFrZWZpbGUgZXh0L3piYXIvTWFrZWZpbGUgZXh0L2R0bHMvTWFrZWZpbGUgcG8vTWFrZWZpbGUuaW4gZG9jcy9NYWtlZmlsZSBkb2NzL3BsdWdpbnMvTWFrZWZpbGUgZG9jcy9saWJzL01ha2VmaWxlIGRvY3MvdmVyc2lvbi5lbnRpdGllcyBwa2djb25maWcvTWFrZWZpbGUgcGtnY29uZmlnL2dzdHJlYW1lci1wbHVnaW5zLWJhZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItaW5zZXJ0YmluLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItaW5zZXJ0YmluLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMgcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLW1wZWd0cy5wYyBwa2djb25maWcvZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci5wYyBwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLXdheWxhbmQucGMgcGtnY29uZmlnL2dzdHJlYW1lci13YXlsYW5kLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UucGMgcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby5wYyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYyB0b29scy9NYWtlZmlsZSBtNC9NYWtlZmlsZSIKIAogCiBzZWQgXApAQCAtNTU4NTIsNiArNTgwNTMsMTAgQEAKICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiR1NUX1BMVUdJTl9CVUlMRF9TVEFUSUNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCitpZiB0ZXN0IC16ICIke1dJVEhfR1NUX1BMQVlFUl9URVNUU19UUlVFfSIgJiYgdGVzdCAteiAiJHtXSVRIX0dTVF9QTEFZRVJfVEVTVFNfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJXSVRIX0dTVF9QTEFZRVJfVEVTVFNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKK2ZpCiBpZiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fQUNDVVJJUF9UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfUExVR0lOX0FDQ1VSSVBfRkFMU0V9IjsgdGhlbgogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfUExVR0lOX0FDQ1VSSVBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKQEAgLTU1ODY4LDYgKzU4MDczLDEwIEBACiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9QTFVHSU5fQUlGRlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKK2lmIHRlc3QgLXogIiR7VVNFX1BMVUdJTl9WSURFT0ZSQU1FX0FVRElPTEVWRUxfVFJVRX0iICYmIHRlc3QgLXogIiR7VVNFX1BMVUdJTl9WSURFT0ZSQU1FX0FVRElPTEVWRUxfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfUExVR0lOX1ZJREVPRlJBTUVfQVVESU9MRVZFTFwiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQorZmkKIGlmIHRlc3QgLXogIiR7VVNFX1BMVUdJTl9BU0ZNVVhfVFJVRX0iICYmIHRlc3QgLXogIiR7VVNFX1BMVUdJTl9BU0ZNVVhfRkFMU0V9IjsgdGhlbgogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfUExVR0lOX0FTRk1VWFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpAQCAtNTU5OTYsMTAgKzU4MjA1LDYgQEAKICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1BMVUdJTl9MSUJSRkJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCi1pZiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fTElWRUFEREVSX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fTElWRUFEREVSX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1BMVUdJTl9MSVZFQURERVJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KLVVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKLWZpCiBpZiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fTUlESV9UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfUExVR0lOX01JRElfRkFMU0V9IjsgdGhlbgogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfUExVR0lOX01JRElcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKQEAgLTU2MDI4LDYgKzU4MjMzLDEwIEBACiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9QTFVHSU5fTVhGXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQoraWYgdGVzdCAteiAiJHtVU0VfUExVR0lOX05FVFNJTV9UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfUExVR0lOX05FVFNJTV9GQUxTRX0iOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9QTFVHSU5fTkVUU0lNXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQogaWYgdGVzdCAteiAiJHtVU0VfUExVR0lOX05VVkRFTVVYX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fTlVWREVNVVhfRkFMU0V9IjsgdGhlbgogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfUExVR0lOX05VVkRFTVVYXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CkBAIC01NjA1NiwxMCArNTgyNjUsNiBAQAogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfUExVR0lOX1JFTU9WRVNJTEVOQ0VcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCi1pZiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fUlRQX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fUlRQX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1BMVUdJTl9SVFBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KLVVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKLWZpCiBpZiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fU0RJX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fU0RJX0ZBTFNFfSI7IHRoZW4KICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1BMVUdJTl9TRElcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKQEAgLTU2MjE2LDYgKzU4NDIxLDEwIEBACiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkhBVkVfSlBFR1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKK2lmIHRlc3QgLXogIiR7VVNFX1hDQl9UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfWENCX0ZBTFNFfSI7IHRoZW4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1hDQlwiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQorZmkKIGlmIHRlc3QgLXogIiR7VVNFX0RJUkVDVFNPVU5EX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9ESVJFQ1RTT1VORF9GQUxTRX0iOyB0aGVuCiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9ESVJFQ1RTT1VORFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpAQCAtNTYyNjgsNiArNTg0NzcsMTggQEAKICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1VWQ0gyNjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCitpZiB0ZXN0IC16ICIke1VTRV9OVkVOQ19UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfTlZFTkNfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfTlZFTkNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKK2ZpCitpZiB0ZXN0IC16ICIke1VTRV9OVkVOQ19HU1RfR0xfVFJVRX0iICYmIHRlc3QgLXogIiR7VVNFX05WRU5DX0dTVF9HTF9GQUxTRX0iOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9OVkVOQ19HU1RfR0xcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKK2ZpCitpZiB0ZXN0IC16ICIke1VTRV9USU5ZQUxTQV9UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfVElOWUFMU0FfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfVElOWUFMU0FcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKK2ZpCiBpZiB0ZXN0IC16ICIke1VTRV9BU1NSRU5ERVJfVFJVRX0iICYmIHRlc3QgLXogIiR7VVNFX0FTU1JFTkRFUl9GQUxTRX0iOyB0aGVuCiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9BU1NSRU5ERVJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKQEAgLTU2NDI0LDEwICs1ODY0NSw2IEBACiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9NUEVHMkVOQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKLWlmIHRlc3QgLXogIiR7VVNFX01QRzEyM19UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfTVBHMTIzX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX01QRzEyM1wiIHdhcyBuZXZlciBkZWZpbmVkLgotVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQotZmkKIGlmIHRlc3QgLXogIiR7VVNFX01QTEVYX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9NUExFWF9GQUxTRX0iOyB0aGVuCiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9NUExFWFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpAQCAtNTY1MDQsNiArNTg3MjEsMTAgQEAKICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1FUXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQoraWYgdGVzdCAteiAiJHtVU0VfVlVMS0FOX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9WVUxLQU5fRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfVlVMS0FOXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQogaWYgdGVzdCAteiAiJHtVU0VfTElCVklTVUFMX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9MSUJWSVNVQUxfRkFMU0V9IjsgdGhlbgogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfTElCVklTVUFMXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CkBAIC01NjU4NCwxMCArNTg4MDUsNiBAQAogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfU1BBTkRTUFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKLWlmIHRlc3QgLXogIiR7VVNFX0dTRVRUSU5HU19UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfR1NFVFRJTkdTX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX0dTRVRUSU5HU1wiIHdhcyBuZXZlciBkZWZpbmVkLgotVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQotZmkKIGlmIHRlc3QgLXogIiR7VVNFX1NORElPX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9TTkRJT19GQUxTRX0iOyB0aGVuCiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9TTkRJT1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpAQCAtNTY3NTYsMTAgKzU4OTczLDYgQEAKICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX01QRUcyRU5DXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQotaWYgdGVzdCAteiAiJHtVU0VfTVBHMTIzX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9NUEcxMjNfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfTVBHMTIzXCIgd2FzIG5ldmVyIGRlZmluZWQuCi1Vc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1Ci1maQogaWYgdGVzdCAteiAiJHtVU0VfTVBMRVhfVFJVRX0iICYmIHRlc3QgLXogIiR7VVNFX01QTEVYX0ZBTFNFfSI7IHRoZW4KICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX01QTEVYXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CkBAIC01Njg1NiwxMCArNTkwNjksNiBAQAogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfR01FXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQotaWYgdGVzdCAteiAiJHtVU0VfR1NFVFRJTkdTX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9HU0VUVElOR1NfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfR1NFVFRJTkdTXCIgd2FzIG5ldmVyIGRlZmluZWQuCi1Vc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1Ci1maQogaWYgdGVzdCAteiAiJHtVU0VfWFZJRF9UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfWFZJRF9GQUxTRX0iOyB0aGVuCiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9YVklEXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CkBAIC01NzMyNSw3ICs1OTUzNCw3IEBACiAjIHJlcG9ydCBhY3R1YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQgb2YgdGhlaXIKICMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuCiBhY19sb2c9IgotVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBHU3RyZWFtZXIgQmFkIFBsdWctaW5zICRhc19tZSAxLjYuMywgd2hpY2ggd2FzCitUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IEdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgJGFzX21lIDEuNy45MSwgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCkBAIC01NzM5MSw3ICs1OTYwMCw3IEBACiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIGFjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCiBhY19jc192ZXJzaW9uPSJcXAotR1N0cmVhbWVyIEJhZCBQbHVnLWlucyBjb25maWcuc3RhdHVzIDEuNi4zCitHU3RyZWFtZXIgQmFkIFBsdWctaW5zIGNvbmZpZy5zdGF0dXMgMS43LjkxCiBjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjksCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgogCkBAIC01NzUyOSw2ICs1OTczOCw3IEBACiBlbmFibGVfc2hhcmVkPSdgJEVDSE8gIiRlbmFibGVfc2hhcmVkIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKIHBpY19tb2RlPSdgJEVDSE8gIiRwaWNfbW9kZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBlbmFibGVfZmFzdF9pbnN0YWxsPSdgJEVDSE8gIiRlbmFibGVfZmFzdF9pbnN0YWxsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3NoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjPSdgJEVDSE8gIiRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBTSEVMTD0nYCRFQ0hPICIkU0hFTEwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogRUNITz0nYCRFQ0hPICIkRUNITyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBQQVRIX1NFUEFSQVRPUj0nYCRFQ0hPICIkUEFUSF9TRVBBUkFUT1IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTc1NzYsMTAgKzU5Nzg2LDEzIEBACiBHQ0M9J2AkRUNITyAiJEdDQyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19pbXBvcnQ9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2ltcG9ydCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9ubV9pbnRlcmZhY2U9J2AkRUNITyAiJGx0X2N2X25tX2ludGVyZmFjZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl90cnVuY2F0ZV9iaW49J2AkRUNITyAiJGx0X2N2X3RydW5jYXRlX2JpbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTc2NDQsNyArNTk4NTcsOCBAQAogZmluaXNoX2V2YWw9J2AkRUNITyAiJGZpbmlzaF9ldmFsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKIGhhcmRjb2RlX2ludG9fbGlicz0nYCRFQ0hPICIkaGFyZGNvZGVfaW50b19saWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0nYCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSdgJEVDSE8gIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitjb25maWd1cmVfdGltZV9kbHNlYXJjaF9wYXRoPSdgJEVDSE8gIiRjb25maWd1cmVfdGltZV9kbHNlYXJjaF9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2NvbmZpZ3VyZV90aW1lX2x0X3N5c19saWJyYXJ5X3BhdGg9J2AkRUNITyAiJGNvbmZpZ3VyZV90aW1lX2x0X3N5c19saWJyYXJ5X3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogaGFyZGNvZGVfYWN0aW9uPSdgJEVDSE8gIiRoYXJkY29kZV9hY3Rpb24iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogZW5hYmxlX2Rsb3Blbj0nYCRFQ0hPICIkZW5hYmxlX2Rsb3BlbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBlbmFibGVfZGxvcGVuX3NlbGY9J2AkRUNITyAiJGVuYWJsZV9kbG9wZW5fc2VsZiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC01Nzc1MCw5ICs1OTk2NCwxMiBAQAogY29tcGlsZXIgXAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19pbXBvcnQgXAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCitsdF9jdl9ubV9pbnRlcmZhY2UgXAogbm1fZmlsZV9saXN0X3NwZWMgXAorbHRfY3ZfdHJ1bmNhdGVfYmluIFwKIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKIGx0X3Byb2dfY29tcGlsZXJfd2wgXApAQCAtNTc4MTgsNyArNjAwMzUsNyBAQAogY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoX0NYWDsgZG8KICAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiXFxcYFxcXFxcXCIiICMjIGV4Y2x1ZGUgZnJvbSBzY19wcm9oaWJpdF9uZXN0ZWRfcXVvdGVzCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTU3ODQ1LDcgKzYwMDYyLDggQEAKIHBvc3R1bmluc3RhbGxfY21kcyBcCiBmaW5pc2hfY21kcyBcCiBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgXAotc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMgXAorY29uZmlndXJlX3RpbWVfZGxzZWFyY2hfcGF0aCBcCitjb25maWd1cmVfdGltZV9sdF9zeXNfbGlicmFyeV9wYXRoIFwKIHJlbG9hZF9jbWRzX0NYWCBcCiBvbGRfYXJjaGl2ZV9jbWRzX0NYWCBcCiBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzX0NYWCBcCkBAIC01Nzg1OSw3ICs2MDA3Nyw3IEBACiBwb3N0bGlua19jbWRzX0NYWDsgZG8KICAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiICMjIGV4Y2x1ZGUgZnJvbSBzY19wcm9oaWJpdF9uZXN0ZWRfcXVvdGVzCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTU3ODY4LDE5ICs2MDA4NiwxNiBAQAogZG9uZQogCiBhY19hdXhfZGlyPSckYWNfYXV4X2RpcicKLXhzaV9zaGVsbD0nJHhzaV9zaGVsbCcKLWx0X3NoZWxsX2FwcGVuZD0nJGx0X3NoZWxsX2FwcGVuZCcKIAotIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgorIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHRoYXQgYWxsb3cgb3VyCiAjIGNvbW1hbmRzIHRocm91Z2ggd2l0aG91dCByZW1vdmFsIG9mIFwgZXNjYXBlcyBJTklULgotaWYgdGVzdCAtbiAiXCR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuCitpZiB0ZXN0IC1uICJcJHtaU0hfVkVSU0lPTitzZXR9IjsgdGhlbgogICAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKIGZpCiAKIAogICAgIFBBQ0tBR0U9JyRQQUNLQUdFJwogICAgIFZFUlNJT049JyRWRVJTSU9OJwotICAgIFRJTUVTVEFNUD0nJFRJTUVTVEFNUCcKICAgICBSTT0nJFJNJwogICAgIG9maWxlPSckb2ZpbGUnCiAKQEAgLTU3OTE3LDYgKzYwMTMyLDkgQEAKIGdsX2NvbmZpZ19kZWZpbmVzPSckR0xfQ09ORklHX0RFRklORVMnCiAKIAordnVsa2FuX2NvbmZpZ19kZWZpbmVzPSckVlVMS0FOX0NPTkZJR19ERUZJTkVTJworCisKIF9BQ0VPRgogCiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCkBAIC01NzkzMSw2ICs2MDE0OSw3IEBACiAgICAgInBvLWRpcmVjdG9yaWVzIikgQ09ORklHX0NPTU1BTkRTPSIkQ09ORklHX0NPTU1BTkRTIHBvLWRpcmVjdG9yaWVzIiA7OwogICAgICIkYWNfc3RkaW50X2giKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgJGFjX3N0ZGludF9oIiA7OwogICAgICJnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb25maWcuaCIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb25maWcuaCIgOzsKKyAgICAiZXh0L3Z1bGthbi92a2NvbmZpZy5oIikgQ09ORklHX0NPTU1BTkRTPSIkQ09ORklHX0NPTU1BTkRTIGV4dC92dWxrYW4vdmtjb25maWcuaCIgOzsKICAgICAiTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7CiAgICAgImNvbW1vbi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBjb21tb24vTWFrZWZpbGUiIDs7CiAgICAgImNvbW1vbi9tNC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBjb21tb24vbTQvTWFrZWZpbGUiIDs7CkBAIC01Nzk0MCw2ICs2MDE1OSw3IEBACiAgICAgImdzdC9hZHBjbWRlYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvYWRwY21kZWMvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9hZHBjbWVuYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvYWRwY21lbmMvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9haWZmL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC9haWZmL01ha2VmaWxlIiA7OworICAgICJnc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9hc2ZtdXgvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L2FzZm11eC9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L2F1ZGlvZnhiYWQvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L2F1ZGlvZnhiYWQvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9hdWRpb21peGVyL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC9hdWRpb21peGVyL01ha2VmaWxlIiA7OwpAQCAtNTc5NzEsNyArNjAxOTEsNiBAQAogICAgICJnc3QvanAya2RlY2ltYXRvci9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvanAya2RlY2ltYXRvci9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L2pwZWdmb3JtYXQvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L2pwZWdmb3JtYXQvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9saWJyZmIvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L2xpYnJmYi9NYWtlZmlsZSIgOzsKLSAgICAiZ3N0L2xpdmVhZGRlci9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvbGl2ZWFkZGVyL01ha2VmaWxlIiA7OwogICAgICJnc3QvbWlkaS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvbWlkaS9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L21wZWdkZW11eC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvbXBlZ2RlbXV4L01ha2VmaWxlIiA7OwogICAgICJnc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L21wZWd0c2RlbXV4L01ha2VmaWxlIiA7OwpAQCAtNTc5ODAsNiArNjAxOTksNyBAQAogICAgICJnc3QvbXBlZ3BzbXV4L01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC9tcGVncHNtdXgvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9tdmUvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L212ZS9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L214Zi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvbXhmL01ha2VmaWxlIiA7OworICAgICJnc3QvbmV0c2ltL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC9uZXRzaW0vTWFrZWZpbGUiIDs7CiAgICAgImdzdC9udXZkZW11eC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvbnV2ZGVtdXgvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9vbnZpZi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3Qvb252aWYvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9wYXRjaGRldGVjdC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvcGF0Y2hkZXRlY3QvTWFrZWZpbGUiIDs7CkBAIC01Nzk4Nyw3ICs2MDIwNyw2IEBACiAgICAgImdzdC9wbm0vTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L3BubS9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L3Jhd3BhcnNlL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC9yYXdwYXJzZS9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L3JlbW92ZXNpbGVuY2UvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L3JlbW92ZXNpbGVuY2UvTWFrZWZpbGUiIDs7Ci0gICAgImdzdC9ydHAvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L3J0cC9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L3NkaS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3Qvc2RpL01ha2VmaWxlIiA7OwogICAgICJnc3Qvc2RwL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC9zZHAvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9zZWdtZW50Y2xpcC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3Qvc2VnbWVudGNsaXAvTWFrZWZpbGUiIDs7CkBAIC01ODAyNiw3ICs2MDI0NSw5IEBACiAgICAgImdzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL01ha2VmaWxlIiA7OwogICAgICJnc3QtbGlicy9nc3Qvd2F5bGFuZC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QtbGlicy9nc3Qvd2F5bGFuZC9NYWtlZmlsZSIgOzsKICAgICAiZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUiIDs7CisgICAgImdzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0LWxpYnMvZ3N0L3BsYXllci9NYWtlZmlsZSIgOzsKICAgICAiZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZSIgOzsKKyAgICAiZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZSIgOzsKICAgICAic3lzL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHN5cy9NYWtlZmlsZSIgOzsKICAgICAic3lzL2RzaG93ZGVjd3JhcHBlci9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzeXMvZHNob3dkZWN3cmFwcGVyL01ha2VmaWxlIiA7OwogICAgICJzeXMvYWNtZW5jL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHN5cy9hY21lbmMvTWFrZWZpbGUiIDs7CkBAIC01ODA0NCw4ICs2MDI2NSwxMCBAQAogICAgICJzeXMvZHZiL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHN5cy9kdmIvTWFrZWZpbGUiIDs7CiAgICAgInN5cy9mYmRldi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzeXMvZmJkZXYvTWFrZWZpbGUiIDs7CiAgICAgInN5cy9saW5zeXMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgc3lzL2xpbnN5cy9NYWtlZmlsZSIgOzsKKyAgICAic3lzL252ZW5jL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHN5cy9udmVuYy9NYWtlZmlsZSIgOzsKICAgICAic3lzL29wZW5zbGVzL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHN5cy9vcGVuc2xlcy9NYWtlZmlsZSIgOzsKICAgICAic3lzL3NobS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzeXMvc2htL01ha2VmaWxlIiA7OworICAgICJzeXMvdGlueWFsc2EvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgc3lzL3RpbnlhbHNhL01ha2VmaWxlIiA7OwogICAgICJzeXMvdXZjaDI2NC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzeXMvdXZjaDI2NC9NYWtlZmlsZSIgOzsKICAgICAic3lzL3ZjZC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzeXMvdmNkL01ha2VmaWxlIiA7OwogICAgICJzeXMvdmRwYXUvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgc3lzL3ZkcGF1L01ha2VmaWxlIiA7OwpAQCAtNTgwODQsNiArNjAzMDcsNyBAQAogICAgICJ0ZXN0cy9leGFtcGxlcy9teGYvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgdGVzdHMvZXhhbXBsZXMvbXhmL01ha2VmaWxlIiA7OwogICAgICJ0ZXN0cy9leGFtcGxlcy9vcGVuY3YvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgdGVzdHMvZXhhbXBsZXMvb3BlbmN2L01ha2VmaWxlIiA7OwogICAgICJ0ZXN0cy9leGFtcGxlcy91dmNoMjY0L01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHRlc3RzL2V4YW1wbGVzL3V2Y2gyNjQvTWFrZWZpbGUiIDs7CisgICAgInRlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHRlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL01ha2VmaWxlIiA7OwogICAgICJ0ZXN0cy9pY2xlcy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyB0ZXN0cy9pY2xlcy9NYWtlZmlsZSIgOzsKICAgICAiZXh0L3ZvYW1yd2JlbmMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXh0L3ZvYW1yd2JlbmMvTWFrZWZpbGUiIDs7CiAgICAgImV4dC92b2FhY2VuYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvdm9hYWNlbmMvTWFrZWZpbGUiIDs7CkBAIC01ODExNiw3ICs2MDM0MCw2IEBACiAgICAgImV4dC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvTWFrZWZpbGUiIDs7CiAgICAgImV4dC9tb2RwbHVnL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGV4dC9tb2RwbHVnL01ha2VmaWxlIiA7OwogICAgICJleHQvbXBlZzJlbmMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXh0L21wZWcyZW5jL01ha2VmaWxlIiA7OwotICAgICJleHQvbXBnMTIzL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGV4dC9tcGcxMjMvTWFrZWZpbGUiIDs7CiAgICAgImV4dC9taW1pYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvbWltaWMvTWFrZWZpbGUiIDs7CiAgICAgImV4dC9tcGxleC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvbXBsZXgvTWFrZWZpbGUiIDs7CiAgICAgImV4dC9tdXNlcGFjay9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvbXVzZXBhY2svTWFrZWZpbGUiIDs7CkBAIC01ODE0NSwxMCArNjAzNjgsMTAgQEAKICAgICAiZXh0L3NydHAvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXh0L3NydHAvTWFrZWZpbGUiIDs7CiAgICAgImV4dC90ZWxldGV4dGRlYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvdGVsZXRleHRkZWMvTWFrZWZpbGUiIDs7CiAgICAgImV4dC9nbWUvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXh0L2dtZS9NYWtlZmlsZSIgOzsKLSAgICAiZXh0L2dzZXR0aW5ncy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvZ3NldHRpbmdzL01ha2VmaWxlIiA7OwotICAgICJleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbCIgOzsKICAgICAiZXh0L3NwYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvc3BjL01ha2VmaWxlIiA7OwogICAgICJleHQvdGltaWRpdHkvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXh0L3RpbWlkaXR5L01ha2VmaWxlIiA7OworICAgICJleHQvdnVsa2FuL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGV4dC92dWxrYW4vTWFrZWZpbGUiIDs7CisgICAgImV4dC92dWxrYW4veGNiL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGV4dC92dWxrYW4veGNiL01ha2VmaWxlIiA7OwogICAgICJleHQvd2VicC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvd2VicC9NYWtlZmlsZSIgOzsKICAgICAiZXh0L3gyNjUvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXh0L3gyNjUvTWFrZWZpbGUiIDs7CiAgICAgImV4dC94dmlkL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGV4dC94dmlkL01ha2VmaWxlIiA7OwpAQCAtNTgxNzAsMTIgKzYwMzkzLDE2IEBACiAgICAgInBrZ2NvbmZpZy9nc3RyZWFtZXItZ2wtdW5pbnN0YWxsZWQucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYyIgOzsKICAgICAicGtnY29uZmlnL2dzdHJlYW1lci1tcGVndHMucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcGtnY29uZmlnL2dzdHJlYW1lci1tcGVndHMucGMiIDs7CiAgICAgInBrZ2NvbmZpZy9nc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHBrZ2NvbmZpZy9nc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjIiA7OworICAgICJwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci5wYyIgOzsKKyAgICAicGtnY29uZmlnL2dzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcGtnY29uZmlnL2dzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMiIDs7CiAgICAgInBrZ2NvbmZpZy9nc3RyZWFtZXItd2F5bGFuZC5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwa2djb25maWcvZ3N0cmVhbWVyLXdheWxhbmQucGMiIDs7CiAgICAgInBrZ2NvbmZpZy9nc3RyZWFtZXItd2F5bGFuZC11bmluc3RhbGxlZC5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwa2djb25maWcvZ3N0cmVhbWVyLXdheWxhbmQtdW5pbnN0YWxsZWQucGMiIDs7CiAgICAgInBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS5wYyIgOzsKICAgICAicGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS11bmluc3RhbGxlZC5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1iYXNlLXVuaW5zdGFsbGVkLnBjIiA7OwogICAgICJwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYyIgOzsKICAgICAicGtnY29uZmlnL2dzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMiIDs7CisgICAgInBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjIiA7OworICAgICJwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYyIgOzsKICAgICAidG9vbHMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgdG9vbHMvTWFrZWZpbGUiIDs7CiAgICAgIm00L01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIG00L01ha2VmaWxlIiA7OwogCkBAIC01ODg2OCw1NSArNjEwOTUsNTMgQEAKICA7OwogICAgICJsaWJ0b29sIjpDKQogCi0gICAgIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgorICAgICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB0aGF0IGFsbG93IG91cgogICAgICMgY29tbWFuZHMgdGhyb3VnaCB3aXRob3V0IHJlbW92YWwgb2YgXCBlc2NhcGVzLgotICAgIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IjsgdGhlbgogICAgICAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKICAgICBmaQogCi0gICAgY2ZnZmlsZT0iJHtvZmlsZX1UIgorICAgIGNmZ2ZpbGU9JHtvZmlsZX1UCiAgICAgdHJhcCAiJFJNIFwiJGNmZ2ZpbGVcIjsgZXhpdCAxIiAxIDIgMTUKICAgICAkUk0gIiRjZmdmaWxlIgogCiAgICAgY2F0IDw8X0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCiAjISAkU0hFTEwKLQotIyBgJEVDSE8gIiRvZmlsZSIgfCBzZWQgJ3MlXi4qLyUlJ2AgLSBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KLSMgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgJGFzX21lICgkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OCisjIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5ICRhc19tZSAoJFBBQ0tBR0UpICRWRVJTSU9OCiAjIExpYnRvb2wgd2FzIGNvbmZpZ3VyZWQgb24gaG9zdCBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWA6CiAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKworIyBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KKyMgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorCisjIENvcHlyaWdodCAoQykgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KKyMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisKKyMgR05VIExpYnRvb2wgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogIwotIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQotIyAgICAgICAgICAgICAgICAgRm91bmRhdGlvbiwgSW5jLgotIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSBvciBsaWJyYXJ5IHRoYXQgaXMgYnVpbHQKKyMgdXNpbmcgR05VIExpYnRvb2wsIHlvdSBtYXkgaW5jbHVkZSB0aGlzIGZpbGUgdW5kZXIgdGhlICBzYW1lCisjIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KICMKLSMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLSMKLSMgR05VIExpYnRvb2wgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0jIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKLSMgaWYgeW91IGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIG9yIGxpYnJhcnkgdGhhdAotIyBpcyBidWlsdCB1c2luZyBHTlUgTGlidG9vbCwgeW91IG1heSBpbmNsdWRlIHRoaXMgZmlsZSB1bmRlciB0aGUKLSMgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0jCi0jIEdOVSBMaWJ0b29sIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIEdOVSBMaWJ0b29sIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICMKICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCBHTlUgTGlidG9vbDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIGEgY29weQotIyBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbCwgb3IKLSMgb2J0YWluZWQgYnkgd3JpdGluZyB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKIAogIyBUaGUgbmFtZXMgb2YgdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhpcyBzY3JpcHQuCi1hdmFpbGFibGVfdGFncz0iQ1hYICIKK2F2YWlsYWJsZV90YWdzPSdDWFggJworCisjIENvbmZpZ3VyZWQgZGVmYXVsdHMgZm9yIHN5c19saWJfZGxzZWFyY2hfcGF0aCBtdW5naW5nLgorOiBcJHtMVF9TWVNfTElCUkFSWV9QQVRIPSIkY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aCJ9CiAKICMgIyMjIEJFR0lOIExJQlRPT0wgQ09ORklHCiAKQEAgLTU4OTQ1LDYgKzYxMTcwLDkgQEAKICMgV2hldGhlciBvciBub3QgdG8gb3B0aW1pemUgZm9yIGZhc3QgaW5zdGFsbGF0aW9uLgogZmFzdF9pbnN0YWxsPSRlbmFibGVfZmFzdF9pbnN0YWxsCiAKKyMgU2hhcmVkIGFyY2hpdmUgbWVtYmVyIGJhc2VuYW1lLGZvciBmaWxlbmFtZSBiYXNlZCBzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIG9uIEFJWC4KK3NoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjPSRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYworCiAjIFNoZWxsIHRvIHVzZSB3aGVuIGludm9raW5nIHNoZWxsIHNjcmlwdHMuCiBTSEVMTD0kbHRfU0hFTEwKIApAQCAtNTkwNTYsMTggKzYxMjg0LDI3IEBACiAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgcHJvcGVyIEMgZGVjbGFyYXRpb24uCiBnbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbAogCisjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGludG8gYSBsaXN0IG9mIHN5bWJvbHMgdG8gbWFudWFsbHkgcmVsb2NhdGUuCitnbG9iYWxfc3ltYm9sX3RvX2ltcG9ydD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9faW1wb3J0CisKICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyLgogZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKIAogIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogCisjIFRoZSBuYW1lIGxpc3RlciBpbnRlcmZhY2UuCitubV9pbnRlcmZhY2U9JGx0X2x0X2N2X25tX2ludGVyZmFjZQorCiAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KIG5tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwogCi0jIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIHdoZXJlIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KIGx0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKIAorIyBDb21tYW5kIHRvIHRydW5jYXRlIGEgYmluYXJ5IHBpcGUuCitsdF90cnVuY2F0ZV9iaW49JGx0X2x0X2N2X3RydW5jYXRlX2JpbgorCiAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KIG9iamRpcj0kb2JqZGlyCiAKQEAgLTU5MTU4LDggKzYxMzk1LDExIEBACiAjIENvbXBpbGUtdGltZSBzeXN0ZW0gc2VhcmNoIHBhdGggZm9yIGxpYnJhcmllcy4KIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0kbHRfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCiAKLSMgUnVuLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXMuCi1zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kbHRfc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMKKyMgRGV0ZWN0ZWQgcnVuLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXMuCitzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kbHRfY29uZmlndXJlX3RpbWVfZGxzZWFyY2hfcGF0aAorCisjIEV4cGxpY2l0IExUX1NZU19MSUJSQVJZX1BBVEggc2V0IGR1cmluZyAuL2NvbmZpZ3VyZSB0aW1lLgorY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aD0kbHRfY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aAogCiAjIFdoZXRoZXIgZGxvcGVuIGlzIHN1cHBvcnRlZC4KIGRsb3Blbl9zdXBwb3J0PSRlbmFibGVfZGxvcGVuCkBAIC01OTI1MiwxMyArNjE0OTIsMTMgQEAKICMgV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlICItcnBhdGgiIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JGx0X2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IKIAotIyBTZXQgdG8gInllcyIgaWYgdXNpbmcgRElSL2xpYk5BTUVcJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKKyMgU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FXCRzaGFyZWRfZXh0IGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcwogIyBESVIgaW50byB0aGUgcmVzdWx0aW5nIGJpbmFyeS4KIGhhcmRjb2RlX2RpcmVjdD0kaGFyZGNvZGVfZGlyZWN0CiAKLSMgU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FXCR7c2hhcmVkX2V4dH0gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzCisjIFNldCB0byAieWVzIiBpZiB1c2luZyBESVIvbGliTkFNRVwkc2hhcmVkX2V4dCBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKICMgRElSIGludG8gdGhlIHJlc3VsdGluZyBiaW5hcnkgYW5kIHRoZSByZXN1bHRpbmcgbGlicmFyeSBkZXBlbmRlbmN5IGlzCi0jICJhYnNvbHV0ZSIsaS5lIGltcG9zc2libGUgdG8gY2hhbmdlIGJ5IHNldHRpbmcgXCR7c2hsaWJwYXRoX3Zhcn0gaWYgdGhlCisjICJhYnNvbHV0ZSIsaS5lIGltcG9zc2libGUgdG8gY2hhbmdlIGJ5IHNldHRpbmcgXCRzaGxpYnBhdGhfdmFyIGlmIHRoZQogIyBsaWJyYXJ5IGlzIHJlbG9jYXRlZC4KIGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT0kaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlCiAKQEAgLTU5MzI0LDEzICs2MTU2NCw3MiBAQAogCiBfTFRfRU9GCiAKKyAgICBjYXQgPDwnX0xUX0VPRicgPj4gIiRjZmdmaWxlIgorCisjICMjIyBCRUdJTiBGVU5DVElPTlMgU0hBUkVEIFdJVEggQ09ORklHVVJFCisKKyMgZnVuY19tdW5nZV9wYXRoX2xpc3QgVkFSSUFCTEUgUEFUSAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBWQVJJQUJMRSBpcyBuYW1lIG9mIHZhcmlhYmxlIGNvbnRhaW5pbmcgX3NwYWNlXyBzZXBhcmF0ZWQgbGlzdCBvZgorIyBkaXJlY3RvcmllcyB0byBiZSBtdW5nZWQgYnkgdGhlIGNvbnRlbnRzIG9mIFBBVEgsIHdoaWNoIGlzIHN0cmluZworIyBoYXZpbmcgYSBmb3JtYXQ6CisjICJESVJbOkRJUl06IgorIyAgICAgICBzdHJpbmcgIkRJUlsgRElSXSIgd2lsbCBiZSBwcmVwZW5kZWQgdG8gVkFSSUFCTEUKKyMgIjpESVJbOkRJUl0iCisjICAgICAgIHN0cmluZyAiRElSWyBESVJdIiB3aWxsIGJlIGFwcGVuZGVkIHRvIFZBUklBQkxFCisjICJESVJQWzpESVJQXTo6W0RJUkE6XURJUkEiCisjICAgICAgIHN0cmluZyAiRElSUFsgRElSUF0iIHdpbGwgYmUgcHJlcGVuZGVkIHRvIFZBUklBQkxFIGFuZCBzdHJpbmcKKyMgICAgICAgIkRJUkFbIERJUkFdIiB3aWxsIGJlIGFwcGVuZGVkIHRvIFZBUklBQkxFCisjICJESVJbOkRJUl0iCisjICAgICAgIFZBUklBQkxFIHdpbGwgYmUgcmVwbGFjZWQgYnkgIkRJUlsgRElSXSIKK2Z1bmNfbXVuZ2VfcGF0aF9saXN0ICgpCit7CisgICAgY2FzZSB4JDIgaW4KKyAgICB4KQorICAgICAgICA7OworICAgICo6KQorICAgICAgICBldmFsICQxPVwiYCRFQ0hPICQyIHwgJFNFRCAncy86LyAvZydgIFwkJDFcIgorICAgICAgICA7OworICAgIHg6KikKKyAgICAgICAgZXZhbCAkMT1cIlwkJDEgYCRFQ0hPICQyIHwgJFNFRCAncy86LyAvZydgXCIKKyAgICAgICAgOzsKKyAgICAqOjoqKQorICAgICAgICBldmFsICQxPVwiXCQkMVwgYCRFQ0hPICQyIHwgJFNFRCAtZSAncy8uKjo6Ly8nIC1lICdzLzovIC9nJ2BcIgorICAgICAgICBldmFsICQxPVwiYCRFQ0hPICQyIHwgJFNFRCAtZSAncy86Oi4qLy8nIC1lICdzLzovIC9nJ2BcIFwkJDFcIgorICAgICAgICA7OworICAgICopCisgICAgICAgIGV2YWwgJDE9XCJgJEVDSE8gJDIgfCAkU0VEICdzLzovIC9nJ2BcIgorICAgICAgICA7OworICAgIGVzYWMKK30KKworCisjIENhbGN1bGF0ZSBjY19iYXNlbmFtZS4gIFNraXAga25vd24gY29tcGlsZXIgd3JhcHBlcnMgYW5kIGNyb3NzLXByZWZpeC4KK2Z1bmNfY2NfYmFzZW5hbWUgKCkKK3sKKyAgICBmb3IgY2NfdGVtcCBpbiAkKiIiOyBkbworICAgICAgY2FzZSAkY2NfdGVtcCBpbgorICAgICAgICBjb21waWxlIHwgKltcXC9dY29tcGlsZSB8IGNjYWNoZSB8ICpbXFwvXWNjYWNoZSApIDs7CisgICAgICAgIGRpc3RjYyB8ICpbXFwvXWRpc3RjYyB8IHB1cmlmeSB8ICpbXFwvXXB1cmlmeSApIDs7CisgICAgICAgIFwtKikgOzsKKyAgICAgICAgKikgYnJlYWs7OworICAgICAgZXNhYworICAgIGRvbmUKKyAgICBmdW5jX2NjX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiRjY190ZW1wIiB8ICRTRUQgInMlLiovJSU7IHMlXiRob3N0X2FsaWFzLSUlImAKK30KKworCisjICMjIyBFTkQgRlVOQ1RJT05TIFNIQVJFRCBXSVRIIENPTkZJR1VSRQorCitfTFRfRU9GCisKICAgY2FzZSAkaG9zdF9vcyBpbgogICBhaXgzKikKICAgICBjYXQgPDxcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCiAjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKICMgcmVhc29uLCBpZiB3ZSBzZXQgdGhlIENPTExFQ1RfTkFNRVMgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBwcm9ibGVtcwogIyB2YW5pc2ggaW4gYSBwdWZmIG9mIHNtb2tlLgotaWYgdGVzdCAiWCR7Q09MTEVDVF9OQU1FUytzZXR9IiAhPSBYc2V0OyB0aGVuCitpZiB0ZXN0IHNldCAhPSAiJHtDT0xMRUNUX05BTUVTK3NldH0iOyB0aGVuCiAgIENPTExFQ1RfTkFNRVM9CiAgIGV4cG9ydCBDT0xMRUNUX05BTUVTCiBmaQpAQCAtNTkzMzksNyArNjE2MzgsNyBAQAogICBlc2FjCiAKIAotbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCitsdG1haW49JGFjX2F1eF9kaXIvbHRtYWluLnNoCiAKIAogICAjIFdlIHVzZSBzZWQgaW5zdGVhZCBvZiBjYXQgYmVjYXVzZSBiYXNoIG9uIERKR1BQIGdldHMgY29uZnVzZWQgaWYKQEAgLTU5MzQ5LDE2NSArNjE2NDgsNiBAQAogICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCiAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCiAKLSAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotZnVuY19kaXJuYW1lICgpXAote1wKLVwgICAgY2FzZSAkezF9IGluXAotXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi1cICAgIGVzYWNcCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLXRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0KLQotICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi1mdW5jX2Jhc2VuYW1lICgpXAote1wKLVwgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLX0gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLXRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0KLQotICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAote1wKLVwgICAgY2FzZSAkezF9IGluXAotXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi1cICAgIGVzYWNcCi1cICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0gICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi10ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotCi0KLSAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi1mdW5jX3N0cmlwbmFtZSAoKVwKLXtcCi1cICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi1cICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi1cICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLVwgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLQotCi0gIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLWZ1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi17XAotXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi1cICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0gICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi10ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotCi0KLSAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi1mdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLXtcCi1cICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLXRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0KLQotICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotZnVuY19sbzJvICgpXAote1wKLVwgICAgY2FzZSAkezF9IGluXAotXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLVwgICAgZXNhY1wKLX0gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLQotCi0gIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLWZ1bmNfeGZvcm0gKClcCi17XAotICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0gICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi10ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotCi0KLSAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotZnVuY19hcml0aCAoKVwKLXtcCi0gICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLQotCi0gIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotZnVuY19sZW4gKClcCi17XAotICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLX0gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0gICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi10ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotCi1maQotCi1pZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0gIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotZnVuY19hcHBlbmQgKClcCi17XAotICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLQotCi0gIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi1mdW5jX2FwcGVuZF9xdW90ZWQgKClcCi17XAotXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLVwgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLXRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0KLQotICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0gIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLWVsc2UKLSAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0gIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci1maQotCi1pZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLWZpCi0KLQogICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgIGNobW9kICt4ICIkb2ZpbGUiCkBAIC01OTU5NCwxMyArNjE3MzQsMTMgQEAKICMgV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlICItcnBhdGgiIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JGx0X2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYCiAKLSMgU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FXCR7c2hhcmVkX2V4dH0gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzCisjIFNldCB0byAieWVzIiBpZiB1c2luZyBESVIvbGliTkFNRVwkc2hhcmVkX2V4dCBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKICMgRElSIGludG8gdGhlIHJlc3VsdGluZyBiaW5hcnkuCiBoYXJkY29kZV9kaXJlY3Q9JGhhcmRjb2RlX2RpcmVjdF9DWFgKIAotIyBTZXQgdG8gInllcyIgaWYgdXNpbmcgRElSL2xpYk5BTUVcJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKKyMgU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FXCRzaGFyZWRfZXh0IGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcwogIyBESVIgaW50byB0aGUgcmVzdWx0aW5nIGJpbmFyeSBhbmQgdGhlIHJlc3VsdGluZyBsaWJyYXJ5IGRlcGVuZGVuY3kgaXMKLSMgImFic29sdXRlIixpLmUgaW1wb3NzaWJsZSB0byBjaGFuZ2UgYnkgc2V0dGluZyBcJHtzaGxpYnBhdGhfdmFyfSBpZiB0aGUKKyMgImFic29sdXRlIixpLmUgaW1wb3NzaWJsZSB0byBjaGFuZ2UgYnkgc2V0dGluZyBcJHNobGlicGF0aF92YXIgaWYgdGhlCiAjIGxpYnJhcnkgaXMgcmVsb2NhdGVkLgogaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPSRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGVfQ1hYCiAKQEAgLTYwMjgwLDYgKzYyNDIwLDQzIEBACiAJICBtdiAkb3V0ZmlsZSBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb25maWcuaAogCWZpCiAgOzsKKyAgICAiZXh0L3Z1bGthbi92a2NvbmZpZy5oIjpDKQorCW91dGZpbGU9dmtjb25maWcuaC10bXAKKwljYXQgPiAkb3V0ZmlsZSA8PFxfX19fX19fRU9GCisvKiB2a2NvbmZpZy5oCisgKgorICogVGhpcyBpcyBhIGdlbmVyYXRlZCBmaWxlLiAgUGxlYXNlIG1vZGlmeSBgY29uZmlndXJlLmFjJworICovCisKKyNpZm5kZWYgX19HU1RfVlVMS0FOX0NPTkZJR19IX18KKyNkZWZpbmUgX19HU1RfVlVMS0FOX0NPTkZJR19IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCitfX19fX19fRU9GCisKKwljYXQgPj4kb3V0ZmlsZSA8PF9fX19fX19FT0YKKyR2dWxrYW5fY29uZmlnX2RlZmluZXMKK19fX19fX19FT0YKKworCWNhdCA+PiRvdXRmaWxlIDw8X19fX19fX0VPRgorCitHX0VORF9ERUNMUworCisjZW5kaWYgIC8qIF9fR1NUX1ZVTEtBTl9DT05GSUdfSF9fICovCitfX19fX19fRU9GCisKKworCWlmIGNtcCAtcyAkb3V0ZmlsZSBleHQvdnVsa2FuL3ZrY29uZmlnLmg7IHRoZW4KKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGV4dC92dWxrYW4vdmtjb25maWcuaCBpcyB1bmNoYW5nZWQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXh0L3Z1bGthbi92a2NvbmZpZy5oIGlzIHVuY2hhbmdlZCIgPiY2O30KKwkgIHJtIC1mICRvdXRmaWxlCisJZWxzZQorCSAgbXYgJG91dGZpbGUgZXh0L3Z1bGthbi92a2NvbmZpZy5oCisJZmkKKyA7OwogCiAgIGVzYWMKIGRvbmUgIyBmb3IgYWNfdGFnCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggNWQ3ZTJiMi4uZDE5OTU0YSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMyw3ICszLDcgQEAKIGRubCBpbml0aWFsaXplIGF1dG9jb25mCiBkbmwgd2hlbiBnb2luZyB0by9mcm9tIHJlbGVhc2UgcGxlYXNlIHNldCB0aGUgbmFubyAoZm91cnRoIG51bWJlcikgcmlnaHQgIQogZG5sIHJlbGVhc2VzIG9ubHkgZG8gV2FsbCwgZ2l0IGFuZCBwcmVyZWxlYXNlIGRvZXMgV2Vycm9yIHRvbwotQUNfSU5JVChbR1N0cmVhbWVyIEJhZCBQbHVnLWluc10sWzEuNi4zXSxbaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R1N0cmVhbWVyXSxbZ3N0LXBsdWdpbnMtYmFkXSkKK0FDX0lOSVQoW0dTdHJlYW1lciBCYWQgUGx1Zy1pbnNdLFsxLjcuOTFdLFtodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1HU3RyZWFtZXJdLFtnc3QtcGx1Z2lucy1iYWRdKQogCiBBR19HU1RfSU5JVAogCkBAIC01MSwxMSArNTEsMTEgQEAKIGRubCAtIGludGVyZmFjZXMgYWRkZWQgLT4gaW5jcmVtZW50IEFHRQogZG5sIC0gaW50ZXJmYWNlcyByZW1vdmVkIC0+IEFHRSA9IDAKIGRubCBzZXRzIEdTVF9MVF9MREZMQUdTCi1BU19MSUJUT09MKEdTVCwgNjAzLCAwLCA2MDMpCitBU19MSUJUT09MKEdTVCwgNzkxLCAwLCA3OTEpCiAKIGRubCAqKiogcmVxdWlyZWQgdmVyc2lvbnMgb2YgR1N0cmVhbWVyIHN0dWZmICoqKgotR1NUX1JFUT0xLjYuMwotR1NUUEJfUkVRPTEuNi4zCitHU1RfUkVRPTEuNy45MQorR1NUUEJfUkVRPTEuNy45MQogCiBkbmwgKioqIGF1dG90b29scyBzdHVmZiAqKioqCiAKQEAgLTc0LDYgKzc0LDcgQEAKIGRubCAqKiogY2hlY2sgZm9yIGFyZ3VtZW50cyB0byBjb25maWd1cmUgKioqCiAKIEFHX0dTVF9BUkdfRElTQUJMRV9GQVRBTF9XQVJOSU5HUworQUdfR1NUX0FSR19FTkFCTEVfRVhUUkFfQ0hFQ0tTCiAKIEFHX0dTVF9BUkdfREVCVUcKIEFHX0dTVF9BUkdfUFJPRklMSU5HCkBAIC0xOTAsNyArMTkxLDcgQEAKIEFDX0NIRUNLX0ZVTkMoZ2V0aG9zdGJ5bmFtZSwsW0FDX0NIRUNLX0xJQihuc2wsZ2V0aG9zdGJ5bmFtZSldKQogCiBkbmwgR0xpYiBpcyByZXF1aXJlZAotR0xJQl9SRVE9Mi4zMi4wCitHTElCX1JFUT0yLjQwLjAKIEFHX0dTVF9HTElCX0NIRUNLKFskR0xJQl9SRVFdKQogCiBkbmwgY2hlY2tzIGZvciBnc3RyZWFtZXIKQEAgLTI0MSw2ICsyNDIsMjIgQEAKIGZpCiBBTV9DT05ESVRJT05BTChIQVZFX0dUSywgdGVzdCAieCRIQVZFX0dUSyIgPSAieHllcyIpCiAKK2RubCBDaGVjayBmb3IgLUJzeW1ib2xpYy1mdW5jdGlvbnMgbGlua2VyIGZsYWcgdXNlZCB0byBhdm9pZAorZG5sIGludHJhLWxpYnJhcnkgUExUIGp1bXBzLCBpZiBhdmFpbGFibGUuCitBQ19BUkdfRU5BQkxFKEJzeW1ib2xpYywKKyAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtQnN5bWJvbGljXSxbYXZvaWQgbGlua2luZyB3aXRoIC1Cc3ltYm9saWNdKV0sLAorICAgICAgICAgICAgICBbU0FWRURfTERGTEFHUz0iJHtMREZMQUdTfSIgU0FWRURfTElCUz0iJHtMSUJTfSIKKyAgICAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIC1Cc3ltYm9saWMtZnVuY3Rpb25zIGxpbmtlciBmbGFnXSkKKyAgICAgICAgICAgICAgIExERkxBR1M9LVdsLC1Cc3ltYm9saWMtZnVuY3Rpb25zCisgICAgICAgICAgICAgICBMSUJTPQorICAgICAgICAgICAgICAgQUNfVFJZX0xJTksoW10sIFtyZXR1cm4gMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKHllcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9Cc3ltYm9saWM9eWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChubykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9Cc3ltYm9saWM9bm8pCisgICAgICAgICAgICAgICBMREZMQUdTPSIke1NBVkVEX0xERkxBR1N9IiBMSUJTPSIke1NBVkVEX0xJQlN9Il0pCisKK2RubCAqKiogc2V0IHZhcmlhYmxlcyBiYXNlZCBvbiBjb25maWd1cmUgYXJndW1lbnRzICoqKgogCiBkbmwgR1RLIGlzIG9wdGlvbmFsIGFuZCB1c2VkIGluIGV4YW1wbGVzCiBIQVZFX0dUSzM9Tk8KQEAgLTM3OSw2ICszOTYsMTcgQEAKIEFDX1NVQlNUKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQogQU1fQ09ORElUSU9OQUwoR1NUX1BMVUdJTl9CVUlMRF9TVEFUSUMsIHRlc3QgIngkZW5hYmxlX3N0YXRpY19wbHVnaW5zIiA9ICJ4eWVzIikKIAorQUNfQVJHX1dJVEgoW3BsYXllci10ZXN0c10sCisgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGxheWVyLXRlc3RzXSxbRW5hYmxlIEdzdFBsYXllciB0ZXN0cyB0aGF0IG5lZWQgbmV0d29yayBhY2Nlc3MgKGRlZmF1bHQ6IG5vKV0pKQoraWYgdGVzdCB4JHdpdGhfcGxheWVyX3Rlc3RzID0geHllczsgdGhlbgorICBBQ19QQVRIX1BST0coW1dHRVRdLCBbd2dldF0sIG5vKQorICBpZiB0ZXN0IHgkV0dFVCA9IHhubzsgdGhlbgorICAgIEFDX01TR19XQVJOKFt3Z2V0IHJlcXVpcmVkIGZvciBHc3RQbGF5ZXIgdGVzdHMgYnV0IG5vdCBmb3VuZCAtIGRpc2FibGluZ10pCisgICAgd2l0aF9wbGF5ZXJfdGVzdHM9bm8KKyAgZmkKK2ZpCitBTV9DT05ESVRJT05BTChXSVRIX0dTVF9QTEFZRVJfVEVTVFMsIHRlc3QgIngkd2l0aF9wbGF5ZXJfdGVzdHMiID0gInh5ZXMiKQorCiAjIHNldCBieSBBR19HU1RfUEFSU0VfU1VCU1lTVEVNX0RJU0FCTEVTIGFib3ZlCiBkbmwgbWFrZSBzdXJlIGl0IGRvZXNuJ3QgY29tcGxhaW4gYWJvdXQgdW51c2VkIHZhcmlhYmxlcyBpZiBkZWJ1Z2dpbmcgaXMgZGlzYWJsZWQKIE5PX1dBUk5JTkdTPSIiCkBAIC00MjMsMTAgKzQ1MSw5IEBACiAgdmlkZW9tZWFzdXJlIFwKICBsaW5zeXMgXAogIGFwZXhzaW5rIGRjMTM5NCBcCi0gZ3NldHRpbmdzIFwKICBtdXNlcGFjayBuYXMgc2RsIHRpbWlkaXR5IFwKLSBhY20gd2luaW5ldCBcCi0geHZpZCBsdjIgdGVsZXRleHRkZWMgc25kaW8gbGlidmlzdWFsIgorIHdpbmluZXQgXAorIHh2aWQgbHYyIHNuZGlvIGxpYnZpc3VhbCIKIEFDX1NVQlNUKEdTVF9QTFVHSU5TX05PTlBPUlRFRCkKIAogZG5sIHRoZXNlIGFyZSBhbGwgdGhlIGdzdCBwbHVnLWlucywgY29tcGlsYWJsZSB3aXRob3V0IGFkZGl0aW9uYWwgbGlicwpAQCAtNDM0LDYgKzQ2MSw3IEBACiBBR19HU1RfQ0hFQ0tfUExVR0lOKGFkcGNtZGVjKQogQUdfR1NUX0NIRUNLX1BMVUdJTihhZHBjbWVuYykKIEFHX0dTVF9DSEVDS19QTFVHSU4oYWlmZikKK0FHX0dTVF9DSEVDS19QTFVHSU4odmlkZW9mcmFtZV9hdWRpb2xldmVsKQogQUdfR1NUX0NIRUNLX1BMVUdJTihhc2ZtdXgpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKGF1ZGlvZnhiYWQpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKGF1ZGlvbWl4ZXIpCkBAIC00NjYsNyArNDk0LDYgQEAKIEFHX0dTVF9DSEVDS19QTFVHSU4oanAya2RlY2ltYXRvcikKIEFHX0dTVF9DSEVDS19QTFVHSU4oanBlZ2Zvcm1hdCkKIEFHX0dTVF9DSEVDS19QTFVHSU4obGlicmZiKQotQUdfR1NUX0NIRUNLX1BMVUdJTihsaXZlYWRkZXIpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKG1pZGkpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKG1wZWdkZW11eCkKIEFHX0dTVF9DSEVDS19QTFVHSU4obXBlZ3RzZGVtdXgpCkBAIC00NzQsNiArNTAxLDcgQEAKIEFHX0dTVF9DSEVDS19QTFVHSU4obXBlZ3BzbXV4KQogQUdfR1NUX0NIRUNLX1BMVUdJTihtdmUpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKG14ZikKK0FHX0dTVF9DSEVDS19QTFVHSU4obmV0c2ltKQogQUdfR1NUX0NIRUNLX1BMVUdJTihudXZkZW11eCkKIEFHX0dTVF9DSEVDS19QTFVHSU4ob252aWYpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKHBhdGNoZGV0ZWN0KQpAQCAtNDgxLDcgKzUwOSw2IEBACiBBR19HU1RfQ0hFQ0tfUExVR0lOKHBubSkKIEFHX0dTVF9DSEVDS19QTFVHSU4ocmF3cGFyc2UpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKHJlbW92ZXNpbGVuY2UpCi1BR19HU1RfQ0hFQ0tfUExVR0lOKHJ0cCkKIEFHX0dTVF9DSEVDS19QTFVHSU4oc2RpKQogQUdfR1NUX0NIRUNLX1BMVUdJTihzZHApCiBBR19HU1RfQ0hFQ0tfUExVR0lOKHNlZ21lbnRjbGlwKQpAQCAtNjcwLDEzICs2OTcsMjIgQEAKICAgOzsKICAgKikKICAgICBpZiB0ZXN0ICJ4JE5FRURfR0wiICE9ICJ4bm8iOyB0aGVuCi0gICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEdMLCBHTCwgZ2xUZXhJbWFnZTJELCwgR0wvZ2wuaCkKKyAgICAgIEFHX0dTVF9QS0dfQ0hFQ0tfTU9EVUxFUyhHTCwgZ2wpCisgICAgICBpZiB0ZXN0ICJ4JEhBVkVfR0wiICE9ICJ4eWVzIjsgdGhlbgorICAgICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEdMLCBHTCwgZ2xUZXhJbWFnZTJELCwgR0wvZ2wuaCkKKyAgICAgIGZpCiAgICAgZmkKICAgICBpZiB0ZXN0ICJ4JE5FRURfR0xFUzIiICE9ICJ4bm8iOyB0aGVuCi0gICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEdMRVMyLCBHTEVTdjIsIGdsVGV4SW1hZ2UyRCwsIEdMRVMyL2dsMi5oKQorICAgICAgQUdfR1NUX1BLR19DSEVDS19NT0RVTEVTKEdMRVMyLCBnbGVzdjIpCisgICAgICBpZiB0ZXN0ICJ4JEhBVkVfR0xFUzIiICE9ICJ4eWVzIjsgdGhlbgorICAgICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEdMRVMyLCBHTEVTdjIsIGdsVGV4SW1hZ2UyRCwsIEdMRVMyL2dsMi5oKQorICAgICAgZmkKICAgICBmaQogICAgIGlmIHRlc3QgIngkTkVFRF9FR0wiICE9ICJ4bm8iOyB0aGVuCi0gICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEVHTCwgRUdMLCBlZ2xHZXRFcnJvciwsIEVHTC9lZ2wuaCkKKyAgICAgIEFHX0dTVF9QS0dfQ0hFQ0tfTU9EVUxFUyhFR0wsIGVnbCkKKyAgICAgIGlmIHRlc3QgIngkSEFWRV9FR0wiICE9ICJ4eWVzIjsgdGhlbgorICAgICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEVHTCwgRUdMLCBlZ2xHZXRFcnJvciwsIEVHTC9lZ2wuaCkKKyAgICAgIGZpCiAgICAgZmkKIAogICAgIG9sZF9MSUJTPSRMSUJTCkBAIC04MDMsOSArODM5LDI4IEBACiAgIGZpCiBmaQogCitkbmwgY2hlY2sgZm9yIERNQUJVRiBzdXBwb3J0CitIQVZFX0RSTV9GT1VSQ0NfSEVBREVSPW5vCitBQ19DSEVDS19IRUFERVIobGliZHJtL2RybV9mb3VyY2MuaCwKKyAgSEFWRV9EUk1fRk9VUkNDX0hFQURFUj15ZXMsICkKKworSEFWRV9HU1RfQUxMT0NBVE9SUz1ubworUEtHX0NIRUNLX01PRFVMRVMoR1NUX0FMTE9DQVRPUlMsIGdzdHJlYW1lci1hbGxvY2F0b3JzLTEuMCwKKyAgSEFWRV9HU1RfQUxMT0NBVE9SUz15ZXMsICkKKworaWYgdGVzdCAieCRIQVZFX0RSTV9GT1VSQ0NfSEVBREVSIiA9ICJ4eWVzIiAtYSBcCisgICAgICAgICJ4JEhBVkVfR1NUX0FMTE9DQVRPUlMiID0gInh5ZXMiIC1hIFwKKyAgICAgICAgIngkSEFWRV9FR0wiID0gInh5ZXMiOyB0aGVuCisgICAgICAgICAgQUNfREVGSU5FKEdTVF9HTF9IQVZFX0RNQUJVRiwgWzFdICwgW0RNQUJVRiBhdmFpbGFibGUgZm9yIGdsIHBsdWdpbnNdKQorZmkKKwogZG5sIGNoZWNrIGlmIHdlIGNhbiBpbmNsdWRlIGJvdGggR0wgYW5kIEdMRVMyIGF0IHRoZSBzYW1lIHRpbWUKIGlmIHRlc3QgIngkSEFWRV9HTCIgPSAieHllcyIgLWEgIngkSEFWRV9HTEVTMiIgPSAieHllcyI7IHRoZW4KICAgR0xfSU5DTFVERVM9IgorI2lmZGVmIF9fR05VQ19fCisjICBwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorIyAgcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3JlZHVuZGFudC1kZWNsc1wiCisjZW5kaWYKICNpZm5kZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwogI2RlZmluZSBHTF9HTEVYVF9QUk9UT1RZUEVTIDEKICNlbmRpZgpAQCAtODI5LDExICs4ODQsMTIgQEAKICMgICBpbmNsdWRlIDxHTC9nbGV4dC5oPgogIyAgZW5kaWYKICMgZW5kaWYKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsgcmV0dXJuIDA7IH0KICIKICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGluY2x1ZGUgYm90aCBHTCBhbmQgR0xFUzIgaGVhZGVyc10pCi0gIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkRVJST1JfQ0ZMQUdTIgotICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbJEdMX0lOQ0xVREVTXV0sIFtbCisgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICBDRkxBR1M9IiRDRkxBR1MgJEdMX0NGTEFHUyAkR0xFUzJfQ0ZMQUdTICRXQVJOSU5HX0NGTEFHUyAkRVJST1JfQ0ZMQUdTIgorICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1skR0xfSU5DTFVERVNdXSwgW1sKICAgICAjaWYgIWRlZmluZWQoR0xfRkFMU0UpCiAgICAgI2Vycm9yIEZhaWxlZCB0byBpbmNsdWRlIEdMIGhlYWRlcnMKICAgICAjZW5kaWYKQEAgLTg1MSw3ICs5MDcsNyBAQAogICAgICAgSEFWRV9HTEVTMj1ubwogICAgIGZpCiAgIF0pCi0gIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKKyAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCiBmaQogCiAjZG5sIENoZWNrIGZvciBPcGVuR0wKQEAgLTEyODMsNiArMTMzOSw3IEBACiBHU1RfR0xfSEFWRV9HTElOVFBUUj0wCiBHU1RfR0xfSEFWRV9HTFNZTkM9MAogR1NUX0dMX0hBVkVfR0xVSU5UNjQ9MAorR1NUX0dMX0hBVkVfR0xJTlQ2ND0wCiAKIG9sZF9DRkxBR1M9JENGTEFHUwogQ0ZMQUdTPSIkR0xfQ0ZMQUdTICRDRkxBR1MiCkBAIC0xMzE3LDYgKzEzNzQsMTEgQEAKICAgR1NUX0dMX0hBVkVfR0xVSU5UNjQ9MQogZmkKIAorQUNfQ0hFQ0tfVFlQRVMoR0xpbnQ2NCwgW10sIFtdLCBbWyRHTF9JTkNMVURFU11dKQoraWYgdGVzdCAieCRhY19jdl90eXBlX0dMaW50NjQiID0gInh5ZXMiOyB0aGVuCisgIEdTVF9HTF9IQVZFX0dMSU5UNjQ9MQorZmkKKwogQ0ZMQUdTPSRvbGRfQ0ZMQUdTCiAKIEdMX0NPTkZJR19ERUZJTkVTPSIkR0xfQ09ORklHX0RFRklORVMKQEAgLTEzMjYsNiArMTM4OCw3IEBACiAjZGVmaW5lIEdTVF9HTF9IQVZFX0dMSU5UUFRSICRHU1RfR0xfSEFWRV9HTElOVFBUUgogI2RlZmluZSBHU1RfR0xfSEFWRV9HTFNZTkMgJEdTVF9HTF9IQVZFX0dMU1lOQwogI2RlZmluZSBHU1RfR0xfSEFWRV9HTFVJTlQ2NCAkR1NUX0dMX0hBVkVfR0xVSU5UNjQKKyNkZWZpbmUgR1NUX0dMX0hBVkVfR0xJTlQ2NCAkR1NUX0dMX0hBVkVfR0xJTlQ2NAogIgogCiBBQ19DT05GSUdfQ09NTUFORFMoW2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbmZpZy5oXSwgWwpAQCAtMTQwMSw2ICsxNDY0LDU1IEBACiBBQ19TVUJTVChIQVZFX0pQRUcpCiBBTV9DT05ESVRJT05BTChIQVZFX0pQRUcsIHRlc3QgIngkSEFWRV9KUEVHIiA9ICJ4eWVzIikKIAorZG5sIFZ1bGthbgorVlVMS0FOX0NPTkZJR19ERUZJTkVTPSIiCisKK1BLR19DSEVDS19NT0RVTEVTKFhDQiwgeGNiID49IDEuMTAsIEhBVkVfWENCPXllcywgSEFWRV9YQ0I9bm8pCisKK0FNX0NPTkRJVElPTkFMKFVTRV9YQ0IsIHRlc3QgIngkSEFWRV9YQ0IiID0gInh5ZXMiKQoraWYgdGVzdCAieCRIQVZFX1hDQiIgPSAieHllcyI7IHRoZW4KKyAgVlVMS0FOX0NPTkZJR19ERUZJTkVTPSIkVlVMS0FOX0NPTkZJR19ERUZJTkVTCisgICNkZWZpbmUgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19YQ0IgMSIKK2ZpCisKK0FDX0NPTkZJR19DT01NQU5EUyhbZXh0L3Z1bGthbi92a2NvbmZpZy5oXSwgWworCW91dGZpbGU9dmtjb25maWcuaC10bXAKKwljYXQgPiAkb3V0ZmlsZSA8PFxfX19fX19fRU9GCisvKiB2a2NvbmZpZy5oCisgKgorICogVGhpcyBpcyBhIGdlbmVyYXRlZCBmaWxlLiAgUGxlYXNlIG1vZGlmeSBgY29uZmlndXJlLmFjJworICovCisKKyNpZm5kZWYgX19HU1RfVlVMS0FOX0NPTkZJR19IX18KKyNkZWZpbmUgX19HU1RfVlVMS0FOX0NPTkZJR19IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCitfX19fX19fRU9GCisKKwljYXQgPj4kb3V0ZmlsZSA8PF9fX19fX19FT0YKKyR2dWxrYW5fY29uZmlnX2RlZmluZXMKK19fX19fX19FT0YKKworCWNhdCA+PiRvdXRmaWxlIDw8X19fX19fX0VPRgorCitHX0VORF9ERUNMUworCisjZW5kaWYgIC8qIF9fR1NUX1ZVTEtBTl9DT05GSUdfSF9fICovCitfX19fX19fRU9GCisKKworCWlmIGNtcCAtcyAkb3V0ZmlsZSBleHQvdnVsa2FuL3ZrY29uZmlnLmg7IHRoZW4KKyAgICAgICAgICBBQ19NU0dfTk9USUNFKFtleHQvdnVsa2FuL3ZrY29uZmlnLmggaXMgdW5jaGFuZ2VkXSkKKwkgIHJtIC1mICRvdXRmaWxlCisJZWxzZQorCSAgbXYgJG91dGZpbGUgZXh0L3Z1bGthbi92a2NvbmZpZy5oCisJZmkKK10sWwordnVsa2FuX2NvbmZpZ19kZWZpbmVzPSckVlVMS0FOX0NPTkZJR19ERUZJTkVTJworXSkKIAogZG5sICoqKiBzeXMgcGx1Zy1pbnMgKioqCiAKQEAgLTE3MjcsNiArMTgzOSwxMTQgQEAKIEFDX1NVQlNUKExJQlVTQl9DRkxBR1MpCiBBQ19TVUJTVChMSUJVU0JfTElCUykKIAorZG5sICoqKiBOVkVOQyAqKioKK3RyYW5zbGl0KGRubSwgbSwgbCkgQU1fQ09ORElUSU9OQUwoVVNFX05WRU5DLCB0cnVlKQorQUdfR1NUX0NIRUNLX0ZFQVRVUkUoTlZFTkMsIFtOVklESUEgRW5jb2RlIEFQSV0sIG52ZW5jLCBbCisgIEFHX0dTVF9QS0dfQ0hFQ0tfTU9EVUxFUyhHU1RfVklERU8sIGdzdHJlYW1lci12aWRlby0xLjApCisgIEFHX0dTVF9QS0dfQ0hFQ0tfTU9EVUxFUyhHU1RfUEJVVElMUywgZ3N0cmVhbWVyLXBidXRpbHMtMS4wKQorICBBQ19BUkdfV0lUSChbY3VkYS1wcmVmaXhdLAorICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtY3VkYS1wcmVmaXhdLAorICAgICAgICAgIFtVc2UgdGhlIHByb3ZpZGVkIHByZWZpeCBmb3IgZGV0ZWN0aW5nIHRoZSBjdWRhIGluc3RhbGxhdGlvbl0pLAorICAgICAgICAgIFtBU19JRihbdGVzdCAieCR3aXRoX2N1ZGFfcHJlZml4IiAhPSAieCJdLAorICAgICAgICAgICAgICAgICBbQ1VEQV9QUkVGSVg9IiR3aXRoX2N1ZGFfcHJlZml4Il0pXSwKKyAgICAgICAgICBbQ1VEQV9QUkVGSVg9IiJdKQorCisgIEhBVkVfQ1VEQT0ieWVzIgorICBpZiB0ZXN0ICJ4JENVREFfUFJFRklYIiAhPSAieCI7IHRoZW4KKyAgICBkbmwgb25seSBvdmVycmlkZSBpZiBub3QgYWxyZWFkeSBzZXQKKyAgICBpZiB0ZXN0ICJ4JENVREFfQ0ZMQUdTIiA9ICJ4IiAtYSAieCRDVURBX0xJQlMiID0gIngiOyB0aGVuCisgICAgICBkbmwgdGhpcyBpcyBhbiBlZHVjYXRlZCBndWVzcywgdXNlciBjYW4gYWx3YXlzIG92ZXJyaWRlIHRoZXNlCisgICAgICBDVURBX0NGTEFHUz0iLUkkQ1VEQV9QUkVGSVgvaW5jbHVkZSIKKyAgICAgIENVREFfTElCUz0iLUwkQ1VEQV9QUkVGSVgvbGliIC1MJENVREFfUFJFRklYL2xpYjY0IC1MJENVREFfUFJFRklYL2xpYi9zdHVicyAtTCRDVURBX1BSRUZJWC9saWI2NC9zdHVicyAtbGN1ZGEgLWxjdWRhcnQiCisgICAgZmkKKyAgZWxzZQorICAgIFBLR19DSEVDS19NT0RVTEVTKFtDVURBXSwgW2N1ZGEtNy41IGN1ZGFydC03LjVdLCwgWworICAgICAgUEtHX0NIRUNLX01PRFVMRVMoW0NVREFdLCBbY3VkYS03LjAgY3VkYXJ0LTcuMF0sLCBbCisgICAgICAgIFBLR19DSEVDS19NT0RVTEVTKFtDVURBXSwgW2N1ZGEtNi41IGN1ZGFydC02LjVdLCwgWworICAgICAgICAgIEFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBjdWRhIGhlYWRlcnMvbGlicmFyaWVzXSldKV0pXSkKKyAgZmkKKworICBIQVZFX0NVREFfSD1ubworICBIQVZFX0NVREFSVF9IPW5vCisgIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKyAgQ1BQRkxBR1M9IiRDVURBX0NGTEFHUyAkc2F2ZV9DUFBGTEFHUyAiCisgIEFDX0NIRUNLX0hFQURFUihbY3VkYS5oXSwgW0hBVkVfQ1VEQV9IPXllc10sCisgICAgICBBQ19NU0dfV0FSTihbQ291bGQgbm90IGZpbmQgY3VkYS5oXSkpCisgIEFDX0NIRUNLX0hFQURFUihbY3VkYV9ydW50aW1lX2FwaS5oXSwgW0hBVkVfQ1VEQVJUX0g9eWVzXSwKKyAgICAgIEFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBjdWRhX3J1bnRpbWVfYXBpLmhdKSkKKyAgQ1BQRkxBR1M9JHNhdmVfQ1BQRkxBR1MKKworICBkbmwgbGliY3VkYSBhbmQgbGliY3VkYXJ0IGxpYnJhcmllcworICBzYXZlX0xJQlM9IiRMSUJTIgorICBMSUJTPSIkQ1VEQV9MSUJTICRzYXZlX0xJQlMiCisgIEhBVkVfQ1VEQVJUX0xJQj0ibm8iCisgIEFDX0NIRUNLX0xJQihjdWRhcnQsY3VkYUdldEVycm9yU3RyaW5nLFtIQVZFX0NVREFSVF9MSUI9InllcyJdLCBbCisgICAgICBBQ19NU0dfV0FSTihbQ291bGQgbm90IGZpbmQgY3VkYXJ0IGxpYnJhcnldKV0pCisgIEhBVkVfQ1VEQV9MSUI9Im5vIgorICBBQ19DSEVDS19MSUIoY3VkYSxjdUluaXQsW0hBVkVfQ1VEQV9MSUI9InllcyJdLCBbCisgICAgICBBQ19NU0dfV0FSTihbQ291bGQgbm90IGZpbmQgY3VkYSBsaWJyYXJ5XSldKQorICBMSUJTPSIkc2F2ZV9MSUJTIgorCisgIGRubCBudkVuY29kZUFQSS5oIGhlYWRlcgorICBIQVZFX05WRU5DT0RFQVBJX0g9bm8KKyAgQUNfQVJHX1ZBUihOVkVOQ09ERV9DRkxBR1MsIFtDIGNvbXBpbGVyIGZsYWdzIGZvciBOdkVuY29kZUFQSS5oXSkKKyAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICBDUFBGTEFHUz0iJE5WRU5DT0RFX0NGTEFHUyAkc2F2ZV9DUFBGTEFHUyIKKyAgQUNfQ0hFQ0tfSEVBREVSKFtudkVuY29kZUFQSS5oXSwgWworICAgICAgQUNfUFJFUFJPQ19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbI2luY2x1ZGUgPG52RW5jb2RlQVBJLmg+CisgICAgICAgICAgI2lmIE5WRU5DQVBJX01BSk9SX1ZFUlNJT04gPCA1CisgICAgICAgICAgI2Vycm9yICJOZWVkIG52RW5jb2RlQVBJLmggPj0gNS4wIgorICAgICAgICAgICNlbmRpZgorICAgICAgICAgIF1dKV0sIFsKKyAgICAgICAgICBIQVZFX05WRU5DT0RFQVBJX0g9eWVzCisgICAgICAgICAgXSwgWworICAgICAgICAgIEFDX01TR19XQVJOKFtudkVuY29kZUFQSS5oIG11c3QgYmUgPj0gNS4wXSkKKyAgICAgICAgICBdKQorICAgICAgXSwKKyAgICAgIEFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBudkVuY29kZUFQSS5oXSkpCisgIEFDX1NVQlNUKE5WRU5DT0RFX0NGTEFHUykKKyAgQ1BQRkxBR1M9IiRzYXZlX0NQUEZMQUdTIgorCisgIGRubCBsaWJudm5pZGlhLWVuY29kZSBsaWJyYXJ5CisgIEhBVkVfTlZFTkNPREVfTElCPW5vCisgIEFDX0FSR19WQVIoTlZFTkNPREVfTElCUywgW2xpbmtlciBmbGFncyBmb3IgbnZpZGlhLWVuY29kZV0pCisgIHNhdmVkX0xJQlM9IiRMSUJTIgorICBMSUJTPSIkTlZFTkNPREVfTElCUyAkc2F2ZWRfTElCUyIKKyAgQUNfQ0hFQ0tfTElCKG52aWRpYS1lbmNvZGUsIE52RW5jb2RlQVBJQ3JlYXRlSW5zdGFuY2UsIFtIQVZFX05WRU5DT0RFX0xJQj0ieWVzIl0sCisgICAgICBBQ19NU0dfV0FSTihbQ291bGQgbm90IGZpbmQgbGlicmFyeSBudmlkaWEtZW5jb2RlXSkpCisgIE5WRU5DT0RFX0xJQlM9IiROVkVOQ09ERV9MSUJTIC1sbnZpZGlhLWVuY29kZSIKKyAgQUNfU1VCU1QoTlZFTkNPREVfTElCUykKKyAgTElCUz0iJHNhdmVkX0xJQlMiCisKKyAgVVNFX05WRU5DX0dTVF9HTD1ubworICBpZiB0ZXN0ICJ4JEhBVkVfQ1VEQV9IIiA9ICJ4eWVzIiBcCisgICAgICAtYSAieCRIQVZFX0NVREFSVF9IIiA9ICJ4eWVzIiBcCisgICAgICAtYSAieCRIQVZFX0NVREFfTElCIiA9ICJ4eWVzIiBcCisgICAgICAtYSAieCRIQVZFX0NVREFSVF9MSUIiID0gInh5ZXMiIFwKKyAgICAgIC1hICJ4JEhBVkVfTlZFTkNPREVBUElfSCIgPSAieHllcyIgXAorICAgICAgLWEgIngkSEFWRV9OVkVOQ09ERV9MSUIiID0gInh5ZXMiOyB0aGVuCisgICAgSEFWRV9OVkVOQz0ieWVzIgorICAgIGlmIHRlc3QgeCIkVVNFX09QRU5HTCIgPSB4InllcyI7IHRoZW4KKyAgICAgIGRubCBjdWRhLWdsIGludGVyb3AgaGVhZGVyCisgICAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgICAgICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MgJENVREFfQ0ZMQUdTIgorICAgICAgQUNfQ0hFQ0tfSEVBREVSKFtjdWRhX2dsX2ludGVyb3AuaF0sIFsKKyAgICAgICAgVVNFX05WRU5DX0dTVF9HTD0ieWVzIgorICAgICAgICBBQ19ERUZJTkUoSEFWRV9OVkVOQ19HU1RfR0wsIFsxXSAsIFtOVkVOQyBHU3RyZWFtZXIgT3BlbkdMIHN1cHBvcnQgYXZhaWxhYmxlXSkKKyAgICAgICAgXSkKKyAgICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKKyAgICBmaQorICBlbHNlCisgICAgSEFWRV9OVkVOQz0ibm8iCisgIGZpCitdKQorQU1fQ09ORElUSU9OQUwoVVNFX05WRU5DX0dTVF9HTCwgdGVzdCAieCRVU0VfTlZFTkNfR1NUX0dMIiA9ICJ4eWVzIikKKworZG5sIGNoZWNrIGZvciB0aW55YWxzYQordHJhbnNsaXQoZG5tLCBtLCBsKSBBTV9DT05ESVRJT05BTChVU0VfVElOWUFMU0EsIHRydWUpCitBR19HU1RfQ0hFQ0tfRkVBVFVSRShUSU5ZQUxTQSwgW3RpbnlhbHNhXSwgdGlueWFsc2EsIFsKKyAgQUNfQ0hFQ0tfSEVBREVSKHRpbnlhbHNhL2Fzb3VuZGxpYi5oLCBIQVZFX1RJTllBTFNBPSJ5ZXMiLCBIQVZFX1RJTllBTFNBPSJubyIpCitdKQogCiBkbmwgKioqIGV4dCBwbHVnLWlucyAqKioKIGRubCBrZWVwIHRoaXMgbGlzdCBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgIQpAQCAtMTczNiw3ICsxOTU2LDcgQEAKIGRubCAqKiogYXNzcmVuZGVyICoqKgogdHJhbnNsaXQoZG5tLCBtLCBsKSBBTV9DT05ESVRJT05BTChVU0VfQVNTUkVOREVSLCB0cnVlKQogQUdfR1NUX0NIRUNLX0ZFQVRVUkUoQVNTUkVOREVSLCBbQVNTL1NTQSByZW5kZXJlcl0sIGFzc3JlbmRlciwgWwotICBQS0dfQ0hFQ0tfTU9EVUxFUyhBU1NSRU5ERVIsIGxpYmFzcyA+PSAwLjkuNCwgWworICBQS0dfQ0hFQ0tfTU9EVUxFUyhBU1NSRU5ERVIsIGxpYmFzcyA+PSAwLjEwLjIsIFsKICAgICBIQVZFX0FTU1JFTkRFUj0ieWVzIiBdLCBbCiAgICAgSEFWRV9BU1NSRU5ERVI9Im5vIgogICBdKQpAQCAtMTkzMCwxNCArMjE1MCwyMCBAQAogCiBkbmwgKioqKiBXYXlsYW5kICoqKioKIHRyYW5zbGl0KGRubSwgbSwgbCkgQU1fQ09ORElUSU9OQUwoVVNFX1dBWUxBTkQsIHRydWUpCitBQ19QQVRIX1BST0coW3dheWxhbmRfc2Nhbm5lcl0sIFt3YXlsYW5kLXNjYW5uZXJdKQogQUdfR1NUX0NIRUNLX0ZFQVRVUkUoV0FZTEFORCwgW3dheWxhbmQgc2lua10sIHdheWxhbmQgLCBbCi0gIFBLR19DSEVDS19NT0RVTEVTKFdBWUxBTkQsIHdheWxhbmQtY2xpZW50ID49IDEuNC4wIHdheWxhbmQtc2Nhbm5lciwgWwotICAgIEhBVkVfV0FZTEFORD0ieWVzIiBdLCBbIEhBVkVfV0FZTEFORD0ibm8iCisgIFBLR19DSEVDS19NT0RVTEVTKFdBWUxBTkQsIHdheWxhbmQtY2xpZW50ID49IDEuNC4wLCBbCisgICAgaWYgdGVzdCAieCR3YXlsYW5kX3NjYW5uZXIiICE9ICJ4IjsgdGhlbgorICAgICAgSEFWRV9XQVlMQU5EPSJ5ZXMiCisgICAgZWxzZQorICAgICAgQUNfTVNHX1JFU1VMVChbd2F5bGFuZC1zY2FubmVyIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSB3YXlsYW5kIHBsdWdpbl0pCisgICAgICBIQVZFX1dBWUxBTkQ9Im5vIgorICAgIGZpCisgICAgXSwKKyAgICBbIEhBVkVfV0FZTEFORD0ibm8iCiAgIF0pCiBdKQogCi1BQ19QQVRIX1BST0coW3dheWxhbmRfc2Nhbm5lcl0sIFt3YXlsYW5kLXNjYW5uZXJdKQotCiBkbmwgKioqKiBXZWJQICoqKioKIHRyYW5zbGl0KGRubSwgbSwgbCkgQU1fQ09ORElUSU9OQUwoVVNFX1dFQlAsIHRydWUpCiBBR19HU1RfQ0hFQ0tfRkVBVFVSRShXRUJQLCBbV2ViUF0sIHdlYnAgLCBbCkBAIC0xOTkzLDYwICsyMjE5LDI3IEBACiAgIEFDX1NVQlNUKEZBQUNfTElCUykKIF0pCiAKLWRubCAqKioqIEZyZWUgQUFDIERlY29kZXIgKEZBQUQpICoqKioKK2RubCAqKioqIEZyZWUgQUFDIERlY29kZXIgKEZBQUQyKSAqKioqCiB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9GQUFELCB0cnVlKQotQUdfR1NUX0NIRUNLX0ZFQVRVUkUoRkFBRCwgW0FBQyBkZWNvZGVyIHBsdWctaW5dLCBmYWFkLCBbCi0gIEhBVkVfRkFBRD0ieWVzIgotICBmYWFkX2hkcj0iIgotICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEZBQUQsIGZhYWQsIGZhYWNEZWNPcGVuLCAkTElCTSwgZmFhZC5oLAotICAgIEZBQURfTElCUz0iLWxmYWFkICRMSUJNIiwgSEFWRV9GQUFEPSJubyIpCi0gIGlmIHRlc3QgJEhBVkVfRkFBRCA9ICJubyI7IHRoZW4KLSAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEZBQUQsIGZhYWQsIE5lQUFDRGVjT3BlbiwgJExJQk0sIG5lYWFjZGVjLmgsCi0gICAgICBbIEZBQURfTElCUz0iLWxmYWFkICRMSUJNIgotICAgICAgICBBQ19ERUZJTkUoRkFBRF9JU19ORUFBQywgMSwgW0RlZmluZSBpZiBBQUMgaXMgdXNpbmcgbmV3IGFwaSBwcmVmaXhdKQotICAgICAgICBmYWFkX2hkcj0ibmVhYWNkZWMuaCIKLSAgICAgIF0sIFsKLSAgICAgICAgSEFWRV9GQUFEPSJubyIKLSAgICAgIF0sKQotICBlbHNlCi0gICAgZmFhZF9oZHI9ImZhYWQuaCIKLSAgZmkKLSAgaWYgdGVzdCAkSEFWRV9GQUFEID0gInllcyI7IHRoZW4KLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW0NoZWNraW5nIGZvciBGQUFEID49IDIuMF0pCitBR19HU1RfQ0hFQ0tfRkVBVFVSRShGQUFELCBbRkFBRDIgQUFDIGRlY29kZXIgcGx1Zy1pbl0sIGZhYWQsIFsKKyAgQUdfR1NUX0NIRUNLX0xJQkhFQURFUihGQUFELCBmYWFkLCBOZUFBQ0RlY09wZW4sICRMSUJNLCBuZWFhY2RlYy5oLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxmYWFkLmg+XV0sIFtbCi0gICAgICAgICNpZiAhZGVmaW5lZChGQUFEMl9WRVJTSU9OKSB8fCAhZGVmaW5lZChGQUFEX0ZNVF9ET1VCTEUpCi0gICAgICAgICNlcnJvciBOb3QgZmFhZDIKLSAgICAgICAgI2Vsc2UKLSAgICAgICAgLyogUmVsZWFzZSBjYW5kaWRhdGUgb2YgMi4wIGlzIG5vdCBnb29kIGVub3VnaCBmb3IgdXMuIFRoaXMgZmllbGQKLSAgICAgICAgICogd2FzIGFkZGVkIG9ubHkgaW4gMi4wIGZpbmFsIGFuZCBkb2VzIG5vdCBleGlzdCBpbiAyLjAtUkMzICovCi0gICAgICAgIGZhYWNEZWNDb25maWd1cmF0aW9uIGNvbmY7IGNvbmYuZG9udFVwU2FtcGxlSW1wbGljaXRTQlIgPSAxOwotICAgICAgICAjZW5kaWYKKyAgICAgICNpZiAhZGVmaW5lZChGQUFEMl9WRVJTSU9OKSB8fCAhZGVmaW5lZChGQUFEX0ZNVF9ET1VCTEUpCisgICAgICAjZXJyb3IgTm90IGZhYWQyCisgICAgICAjZWxpZiAhZGVmaW5lZChMQVRNKQorICAgICAgI2Vycm9yIE5vdCBmYWFkMiA+PSAyLjcKKyAgICAgICNlbmRpZgogICAgIF1dKV0sWwogICAgICAgSEFWRV9GQUFEPSJ5ZXMiCi0KLSAgICAgIEFDX01TR19DSEVDS0lORyhbQ2hlY2tpbmcgRkFBRDIgdmVyc2lvbiBpbiAkZmFhZF9oZHJdKQotICAgICAgZm9yIG1pbm9yIGluIDEwIDkgOCA3IDYgNSAwOyBkbwotICAgICAgICBpZiB0ZXN0IHgkZmFhZDJfbWlub3JfdmVyc2lvbiA9ICJ4IjsgdGhlbgotICAgICAgICAgIEFDX0VHUkVQX0NQUChbXCIyXC4kbWlub3JcIiRdLCBbCi0gICAgICAgICAgICAgICNpbmNsdWRlIDwkZmFhZF9oZHI+Ci0gICAgICAgICAgICAgIEZBQUQyX1ZFUlNJT04KLSAgICAgICAgICAgIF0sIFsKLSAgICAgICAgICAgICAgZmFhZDJfbWlub3JfdmVyc2lvbj0kbWlub3IKLSAgICAgICAgICAgIF0pCi0gICAgICAgIGZpCi0gICAgICBkb25lCi0gICAgICBpZiB0ZXN0IHgkZmFhZDJfbWlub3JfdmVyc2lvbiA9ICJ4IjsgdGhlbgotICAgICAgICBBQ19NU0dfUkVTVUxUKFtubyBpZGVhXSkKLSAgICAgIGVsc2UKLSAgICAgICAgQUNfTVNHX1JFU1VMVChbMi4kZmFhZDJfbWlub3JfdmVyc2lvbl0pCi0gICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChbRkFBRDJfTUlOT1JfVkVSU0lPTl0sIFskZmFhZDJfbWlub3JfdmVyc2lvbl0sIFtUaGUgeCBpbiAyLnhdKQotICAgICAgZmkKLSAgICBdLFsKKyAgICAgIEZBQURfTElCUz0iLWxmYWFkIgorICAgIF0sIFsKKyAgICAgIEFDX01TR19XQVJOKFtGb3VuZCBsaWJmYWFkLCBidXQgdmVyc2lvbiBub3QgcmVjZW50IGVub3VnaC4gTmVlZCBmYWFkMiA+PSAyLjddKQogICAgICAgSEFWRV9GQUFEPSJubyIKICAgICBdKQotICBmaQorICBdLCBbCisgICAgICBIQVZFX0ZBQUQ9Im5vIgorICBdKQogICBBQ19TVUJTVChGQUFEX0xJQlMpCi0gIEFDX1NVQlNUKEZBQURfSVNfTkVBQUMpCiBdKQogCiBkbmwgKioqIGZiZGV2ICoqKgpAQCAtMjMxNywxNCArMjUxMCw2IEBACiAgIGZpCiBdKQogCi1kbmwgKioqIG1wZzEyMyAqKioKLXRyYW5zbGl0KGRubSwgbSwgbCkgQU1fQ09ORElUSU9OQUwoVVNFX01QRzEyMywgdHJ1ZSkKLUFHX0dTVF9DSEVDS19GRUFUVVJFKE1QRzEyMywgW21wZzEyMyBhdWRpbyBkZWNvZGVyXSwgbXBnMTIzLCBbCi0gIFBLR19DSEVDS19NT0RVTEVTKE1QRzEyMywgbGlibXBnMTIzID49IDEuMTMsIEhBVkVfTVBHMTIzPSJ5ZXMiLCBIQVZFX01QRzEyMz0ibm8iKQotICBBQ19TVUJTVChNUEcxMjNfQ0ZMQUdTKQotICBBQ19TVUJTVChNUEcxMjNfTElCUykKLV0pCi0KIGRubCAqKiogbXBsZXggKioqCiB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9NUExFWCwgdHJ1ZSkKIEFHX0dTVF9DSEVDS19GRUFUVVJFKE1QTEVYLCBbbXBsZXhdLCBtcGxleCwgWwpAQCAtMjU5MCwxNyArMjc3NSw3IEBACiBkbmwgKioqIHJzdmcgKioqCiB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9SU1ZHLCB0cnVlKQogQUdfR1NUX0NIRUNLX0ZFQVRVUkUoUlNWRywgW3JzdmcgZGVjb2Rlcl0sIHJzdmcsIFsKLSAgUEtHX0NIRUNLX01PRFVMRVMoUlNWRywgbGlicnN2Zy0yLjAgPj0gMi4zNiBjYWlybywgWwotICAgIEhBVkVfUlNWRz0ieWVzIgotICAgIFBLR19DSEVDS19NT0RVTEVTKFJTVkdfMl8zNl8yLCBsaWJyc3ZnLTIuMCA+PSAyLjM2LjIsIEhBVkVfUlNWR18yXzM2XzI9InllcyIsIEhBVkVfUlNWR18yXzM2XzI9Im5vIikKLSAgICBpZiB0ZXN0ICJ4JEhBVkVfUlNWR18yXzM2XzIiID0gInh5ZXMiOyB0aGVuCi0gICAgICBBQ19ERUZJTkUoSEFWRV9SU1ZHXzJfMzZfMiwgWzFdLCBbSGF2ZSBSU1ZHIDIuMzYuMiBvciBuZXdlcl0pCi0gICAgZmkKLSAgXSwgWwotICAgIEhBVkVfUlNWRz0ibm8iCi0gIF0pCi0gIEFDX1NVQlNUKFJTVkdfQ0ZMQUdTKQotICBBQ19TVUJTVChSU1ZHX0xJQlMpCisgIEFHX0dTVF9QS0dfQ0hFQ0tfTU9EVUxFUyhSU1ZHLCBsaWJyc3ZnLTIuMCA+PSAyLjM2LjIpCiBdKQogCiBkbmwgKioqIGdsICoqKgpAQCAtMjY1Miw3ICsyODI3LDcgQEAKIGRubCAqKiogUXQgKioqCiB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9RVCwgdHJ1ZSkKIEFHX0dTVF9DSEVDS19GRUFUVVJFKFFULCBbUXQgZWxlbWVudHNdLCBxdCwgWwotICBQS0dfQ0hFQ0tfTU9EVUxFUyhRVCwgUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjAsIFsKKyAgUEtHX0NIRUNLX01PRFVMRVMoUVQsIFF0NUNvcmUgUXQ1R3VpIFF0NVFtbCBRdDVRdWljayA+PSA1LjQuMCwgWwogICAgICAgUVRfUEFUSD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1leGVjX3ByZWZpeCBRdDVDb3JlYAogICAgICAgUVRfSE9TVF9QQVRIPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWhvc3RfYmlucyBRdDVDb3JlYAogICAgICAgQUNfUEFUSF9QUk9HUyhNT0MsIFttb2MtcXQ1IG1vY10sIG1vYywgWyIke1FUX0hPU1RfUEFUSH0iICIke1FUX1BBVEh9L2JpbiJdKQpAQCAtMjY4MSw2ICsyODU2LDQ0IEBACiAgICAgICAgICAgICBIQVZFX1FUX1dJTkRPV0lORz0ieWVzIgogICAgICAgICAgIF0sIFtBQ19NU0dfTk9USUNFKFtDb3VsZCBub3QgZmluZCBRdCBXYXlsYW5kIGludGVncmF0aW9uXSldKQogICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0ICJ4JEdTVF9HTF9IQVZFX1dJTkRPV19BTkRST0lEIiA9ICJ4MSIgLWEgIngkR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMIiA9ICJ4MSI7IHRoZW4KKyAgICAgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhRVF9BTkRST0lELCBRdDVBbmRyb2lkRXh0cmFzLCBbCisgICAgICAgICAgICAjIGMrKyBvbiBhbmRyb2lkIHJlcXVpcmVzIGEgc3RhbmRhcmQgbGlicmFyeSBhbmQgdGhlcmUgYXJlIG11bHRpcGxlCisgICAgICAgICAgICAjIGNob2ljZXMuICBjZXJiZXJvIHByb3ZpZGVzIGEgcGtnLWNvbmZpZyBmaWxlIHRoZSBkZXNjcmliZXMgYSBjaG9pY2UKKyAgICAgICAgICAgICMgc28gdHJ5IHRvIHVzZSB0aGF0LiAgT3V0c2lkZSBjZXJiZXJvIG9uZSBoYXMgdG8gcGFzcyB0aGVzZSBmbGFncworICAgICAgICAgICAgIyBtYW51YWxseSBmb3IgdGhlIGxpYnJhcnkgb25lIGlzIHVzaW5nCisgICAgICAgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhHTlVTVEwsIGdudXN0bCwgWworICAgICAgICAgICAgICBRVF9DRkxBR1M9IiRRVF9DRkxBR1MgJEdOVVNUTF9DRkxBR1MiCisgICAgICAgICAgICAgIFFUX0xJQlM9IiRRVF9MSUJTICRHTlVTVExfTElCUyIKKyAgICAgICAgICAgICAgXSwgWworICAgICAgICAgICAgICBBQ19NU0dfTk9USUNFKFtDb3VsZCBub3QgZmluZCBTdGFuZGFyZCBDKysgbGlicmFyeV0pXSkKKworICAgICAgICAgICAgQUNfREVGSU5FKFtIQVZFX1FUX0FORFJPSURdLCBbXSwKKyAgICAgICAgICAgICAgICBbRGVmaW5lIGlmIFF0IEFuZHJvaWQgaW50ZWdyYXRpb24gaXMgaW5zdGFsbGVkXSkKKyAgICAgICAgICAgIFFUX0NGTEFHUz0iJFFUX0NGTEFHUyAkUVRfQU5EUk9JRF9DRkxBR1MiCisgICAgICAgICAgICBRVF9MSUJTPSIkUVRfTElCUyAkUVRfQU5EUk9JRF9MSUJTIgorICAgICAgICAgICAgSEFWRV9RVF9XSU5ET1dJTkc9InllcyIKKyAgICAgICAgICBdLCBbQUNfTVNHX05PVElDRShbQ291bGQgbm90IGZpbmQgUXQgQW5kcm9pZCBpbnRlZ3JhdGlvbl0pXSkKKyAgICAgICAgZmkKKyAgICAgICAgaWYgdGVzdCAieCRHU1RfR0xfSEFWRV9XSU5ET1dfQ09DT0EiID0gIngxIiAtYSAieCRHU1RfR0xfSEFWRV9QTEFURk9STV9DR0wiID0gIngxIjsgdGhlbgorICAgICAgICAgIFBLR19DSEVDS19NT0RVTEVTKFFUX01BQywgUXQ1TWFjRXh0cmFzLCBbCisgICAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfUVRfTUFDXSwgW10sCisgICAgICAgICAgICAgICAgW0RlZmluZSBpZiBRdCBNYWMgaW50ZWdyYXRpb24gaXMgaW5zdGFsbGVkXSkKKyAgICAgICAgICAgIFFUX0xJQkRJUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1saWJkaXIgUXQ1Q29yZWAKKyAgICAgICAgICAgIFFUX0NGTEFHUz0iJFFUX0NGTEFHUyAkUVRfTUFDX0NGTEFHUyAtRiRRVF9MSUJESVIgLWZyYW1ld29yayBRdENvcmUgLWZyYW1ld29yayBRdEd1aSAtZnJhbWV3b3JrIFF0UXVpY2sgLWZyYW1ld29yayBRdFFtbCAtZnJhbWV3b3JrIFF0TWFjRXh0cmFzIgorICAgICAgICAgICAgUVRfTElCUz0iJFFUX0xJQlMgJFFUX01BQ19MSUJTIgorICAgICAgICAgICAgSEFWRV9RVF9XSU5ET1dJTkc9InllcyIKKyAgICAgICAgICBdLCBbQUNfTVNHX05PVElDRShbQ291bGQgbm90IGZpbmQgUXQgTWFjIGludGVncmF0aW9uXSldKQorICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0ICJ4JEdTVF9HTF9IQVZFX1dJTkRPV19FQUdMIiA9ICJ4MSIgLWEgIngkR1NUX0dMX0hBVkVfUExBVEZPUk1fRUFHTCIgPSAieDEiOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAieCRIQVZFX0lPUyIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgICAgICMgaU9TIGRvZXNuJ3QgaGF2ZSBpdHMgb3duIGV4dHJhcyBwYWNrYWdlIHNvIGlmIHdlIGhhdmUgdGhlIGNvcmUKKyAgICAgICAgICAgICMgbW9kdWxlcyB3ZSBhcmUgZ29vZCB0byBnbworICAgICAgICAgICAgQUNfREVGSU5FKFtIQVZFX1FUX0lPU10sIFtdLAorICAgICAgICAgICAgICAgIFtEZWZpbmUgaWYgUXQgaU9TIGludGVncmF0aW9uIGlzIGluc3RhbGxlZF0pCisgICAgICAgICAgICBIQVZFX1FUX1dJTkRPV0lORz0ieWVzIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCiAgICAgICAgIGlmIHRlc3QgIngkSEFWRV9RVF9XSU5ET1dJTkciID0gInhubyI7IHRoZW4KICAgICAgICAgICBBQ19NU0dfV0FSTihbQ291bGQgbm90IGZpbmQgYW55IFF0IFdpbmRvd2luZyBpbnRlZ3JhdGlvbl0pCiAgICAgICAgICAgSEFWRV9RVD0ibm8iCkBAIC0yNjkzLDYgKzI5MDYsMjIgQEAKICAgXSkKIF0pCiAKK2RubCAqKiogVnVsa2FuICoqKgordHJhbnNsaXQoZG5tLCBtLCBsKSBBTV9DT05ESVRJT05BTChVU0VfVlVMS0FOLCB0cnVlKQorQUdfR1NUX0NIRUNLX0ZFQVRVUkUoVlVMS0FOLCBbVnVsa2FuIGVsZW1lbnRzXSwgdnVsa2FuLCBbCisgIEhBVkVfVlVMS0FOPW5vCisgIEFDX0NIRUNLX0hFQURFUih2dWxrYW4vdnVsa2FuLmgsIFsKKyAgICBBQ19DSEVDS19MSUIodnVsa2FuLCB2a0NyZWF0ZURldmljZSwgWworICAgICAgVlVMS0FOX0xJQlM9Ii1sdnVsa2FuIgorICAgICAgQUNfU1VCU1QoVlVMS0FOX0xJQlMpCisgICAgICBkbmwgVE9ETyBjaGVjayBwbGF0Zm9ybSBzdXBwb3J0ICh4MTEsIHdpbjMyLCB3YXlsYW5kLCBhbmRyb2lkLCBldGMpCisgICAgICBpZiB0ZXN0ICJ4JEhBVkVfWENCIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBIQVZFX1ZVTEtBTj15ZXMKKyAgICAgIGZpCisgICAgXSwgW10pCisgIF0sIFtdKQorXSkKKwogZG5sICoqKiBsaWJ2aXN1YWwgKioqCiB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9MSUJWSVNVQUwsIHRydWUpCiBBR19HU1RfQ0hFQ0tfRkVBVFVSRShMSUJWSVNVQUwsIFtsaWJ2aXN1YWwgdmlzdWFsaXphdGlvbiBsaWJyYXJ5XSwgbGlidmlzdWFsLCBbCkBAIC0zMDE0LDE1ICszMjQzLDYgQEAKIEFDX1NVQlNUKFNQQU5EU1BfQ0ZMQUdTKQogQUNfU1VCU1QoU1BBTkRTUF9MSUJTKQogCi1kbmwgKioqIEdTZXR0aW5ncyAqKioKLXRyYW5zbGl0KGRubSwgbSwgbCkgQU1fQ09ORElUSU9OQUwoVVNFX0dTRVRUSU5HUywgdHJ1ZSkKLUFHX0dTVF9DSEVDS19GRUFUVVJFKEdTRVRUSU5HUywgW0dTZXR0aW5ncyBwbHVnaW5dLCBnc2V0dGluZ3MsIFsKLSAgQUdfR1NUX1BLR19DSEVDS19NT0RVTEVTKEdTRVRUSU5HUywgZ2lvLTIuMCA+PSAyLjI1LjApCi0gIGlmIHRlc3QgIngkSEFWRV9HU0VUVElOR1MiID0gInh5ZXMiOyB0aGVuCi0gICAgR0xJQl9HU0VUVElOR1MKLSAgZmkKLV0pCi0KIGRubCAqKiogc25kaW8gKioqCiB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9TTkRJTywgdHJ1ZSkKIEFHX0dTVF9DSEVDS19GRUFUVVJFKFNORElPLCBbc25kaW8gYXVkaW9dLCBzbmRpbywgWwpAQCAtMzAzNiwyOCArMzI1Niw2MiBAQAogICBmaQogXSkKIAorZG5sICoqKiBobHMtY3J5cHRvICoqKgorQUNfQVJHX1dJVEgoW2hscy1jcnlwdG9dLAorICBBU19IRUxQX1NUUklORyhbLS13aXRoLWhscy1jcnlwdG89YXV0b3xuZXR0bGV8bGliZ2NyeXB0fG9wZW5zc2xdLCBbCisgICAgd2hpY2ggY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IHZlcnNpb24gdG8gY29tcGlsZSBhZ2FpbnN0IGZvciBobHMgKGRlZmF1bHQ6IGF1dG8pCisgIF0pLCBbCisgICAgQVNfQ0FTRShbJHdpdGhfaGxzX2NyeXB0b10sCisgICAgICBbbmV0dGxlXSxbXSwKKyAgICAgIFtsaWJnY3J5cHRdLFtdLAorICAgICAgW29wZW5zc2xdLFtdLAorICAgICAgW3dpdGhfaGxzX2NyeXB0bz1hdXRvXQorICAgICkKKyAgXQorKQorCiBkbmwgKioqIGhscyAqKioKIHRyYW5zbGl0KGRubSwgbSwgbCkgQU1fQ09ORElUSU9OQUwoVVNFX0hMUywgdHJ1ZSkKIEFHX0dTVF9DSEVDS19GRUFUVVJFKEhMUywgW2h0dHAgbGl2ZSBzdHJlYW1pbmcgcGx1Z2luXSwgaGxzLCBbCi0gIFBLR19DSEVDS19NT0RVTEVTKE5FVFRMRSwgbmV0dGxlLAotICBbCi0gICAgQUNfREVGSU5FKEhBVkVfTkVUVExFLCAxLCBbRGVmaW5lIGlmIG5ldHRsZSBpcyBhdmFpbGFibGVdKQotICAgIEhBVkVfSExTPSJ5ZXMiCi0gIF0sIFsKLSAgICBBTV9QQVRIX0xJQkdDUllQVChbMS4yLjBdLAotICAgIFsKLSAgICAgIEFDX0RFRklORShIQVZFX0xJQkdDUllQVCwgMSwgW0RlZmluZSBpZiBsaWJnY3J5cHQgaXMgYXZhaWxhYmxlXSkKLSAgICAgIEhBVkVfSExTPSJ5ZXMiCi0gICAgXSwgWwotICAgICAgUEtHX0NIRUNLX01PRFVMRVMoT1BFTlNTTCwgb3BlbnNzbCwKLSAgICAgIFsKKyAgQVNfQ0FTRShbJHdpdGhfaGxzX2NyeXB0b10sCisgICAgW25ldHRsZV0sIFsKKyAgICAgIFBLR19DSEVDS19NT0RVTEVTKE5FVFRMRSwgbmV0dGxlLCBbCisgICAgICAgIEFDX0RFRklORShIQVZFX05FVFRMRSwgMSwgW0RlZmluZSBpZiBuZXR0bGUgaXMgYXZhaWxhYmxlXSkKKyAgICAgICAgSEFWRV9ITFM9InllcyIKKyAgICAgIF0sW0FDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgbmV0dGxlIGxpYnJhcnldKV0pCisgICAgXSwKKyAgICBbbGliZ2NyeXB0XSwgWworICAgICAgQU1fUEFUSF9MSUJHQ1JZUFQoWzEuMi4wXSwgWworICAgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJHQ1JZUFQsIDEsIFtEZWZpbmUgaWYgbGliZ2NyeXB0IGlzIGF2YWlsYWJsZV0pCisgICAgICAgIEhBVkVfSExTPSJ5ZXMiCisgICAgICBdLFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxpYmdjcnlwdCBsaWJyYXJ5XSldKQorICAgIF0sCisgICAgW29wZW5zc2xdLCBbCisgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhPUEVOU1NMLCBvcGVuc3NsLCBbCiAgICAgICAgIEFDX0RFRklORShIQVZFX09QRU5TU0wsIDEsIFtEZWZpbmUgaWYgb3BlbnNzbCBpcyBhdmFpbGFibGVdKQogICAgICAgICBIQVZFX0hMUz0ieWVzIgotICAgICAgXSwgWwotICAgICAgICBIQVZFX0hMUz0ibm8iCisgICAgICBdLFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIG9wZW5zc2wgbGlicmFyeV0pXSkKKyAgICBdLAorICAgIFsKKyAgICAgIGRubCBUcnkgdG8gZmluZCBhIHZhbGlkIGNyeXB0byBsaWJyYXJ5CisgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhORVRUTEUsIG5ldHRsZSwgWworICAgICAgICBBQ19ERUZJTkUoSEFWRV9ORVRUTEUsIDEsIFtEZWZpbmUgaWYgbmV0dGxlIGlzIGF2YWlsYWJsZV0pCisgICAgICAgIEhBVkVfSExTPSJ5ZXMiCisgICAgICBdLFsKKyAgICAgICAgQU1fUEFUSF9MSUJHQ1JZUFQoWzEuMi4wXSwgWworICAgICAgICAgIEFDX0RFRklORShIQVZFX0xJQkdDUllQVCwgMSwgW0RlZmluZSBpZiBsaWJnY3J5cHQgaXMgYXZhaWxhYmxlXSkKKyAgICAgICAgICBIQVZFX0hMUz0ieWVzIgorICAgICAgICBdLFsKKyAgICAgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhPUEVOU1NMLCBvcGVuc3NsLCBbCisgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9PUEVOU1NMLCAxLCBbRGVmaW5lIGlmIG9wZW5zc2wgaXMgYXZhaWxhYmxlXSkKKyAgICAgICAgICAgIEhBVkVfSExTPSJ5ZXMiCisgICAgICAgICAgXSxbCisgICAgICAgICAgICBIQVZFX0hMUz0ibm8iCisgICAgICAgICAgXSkKKyAgICAgICAgXSkKICAgICAgIF0pCi0gICAgXSkKLSAgXSkKKyAgICBdCisgICkKIF0pCiAKIGRubCAqKiogeDI2NSAoSC4yNjUvSEVWQyBlbmNvZGVyKSAqKioKQEAgLTMxMTAsNyArMzM2NCw2IEBACiBBTV9DT05ESVRJT05BTChVU0VfTU9EUExVRywgZmFsc2UpCiBBTV9DT05ESVRJT05BTChVU0VfTUlNSUMsIGZhbHNlKQogQU1fQ09ORElUSU9OQUwoVVNFX01QRUcyRU5DLCBmYWxzZSkKLUFNX0NPTkRJVElPTkFMKFVTRV9NUEcxMjMsIGZhbHNlKQogQU1fQ09ORElUSU9OQUwoVVNFX01QTEVYLCBmYWxzZSkKIEFNX0NPTkRJVElPTkFMKFVTRV9NVVNFUEFDSywgZmFsc2UpCiBBTV9DT05ESVRJT05BTChVU0VfTkFTLCBmYWxzZSkKQEAgLTMxMzUsNyArMzM4OCw2IEBACiBBTV9DT05ESVRJT05BTChVU0VfU1BDLCBmYWxzZSkKIEFNX0NPTkRJVElPTkFMKFVTRV9TUlRQLCBmYWxzZSkKIEFNX0NPTkRJVElPTkFMKFVTRV9HTUUsIGZhbHNlKQotQU1fQ09ORElUSU9OQUwoVVNFX0dTRVRUSU5HUywgZmFsc2UpCiBBTV9DT05ESVRJT05BTChVU0VfWFZJRCwgZmFsc2UpCiBBTV9DT05ESVRJT05BTChVU0VfRFZCLCBmYWxzZSkKIEFNX0NPTkRJVElPTkFMKFVTRV9XSU5JTkVULCBmYWxzZSkKQEAgLTMyMTEsNiArMzQ2Myw5IEBACiBkbmwgTERGTEFHUyByZWFsbHkgc2hvdWxkIG9ubHkgY29udGFpbiBmbGFncywgbm90IGxpYnMgLSB0aGV5IGdldCBhZGRlZCBiZWZvcmUKIGRubCB3aGF0ZXZlcnRhcmdldF9MSUJTIGFuZCAtTCBmbGFncyBoZXJlIGFmZmVjdCB0aGUgcmVzdCBvZiB0aGUgbGlua2luZwogR1NUX0FMTF9MREZMQUdTPSItbm8tdW5kZWZpbmVkIgoraWYgdGVzdCAieCR7ZW5hYmxlX0JzeW1ib2xpY30iID0gInh5ZXMiOyB0aGVuCisgIEdTVF9BTExfTERGTEFHUz0iJEdTVF9BTExfTERGTEFHUyAtV2wsLUJzeW1ib2xpYy1mdW5jdGlvbnMiCitmaQogQUNfU1VCU1QoR1NUX0FMTF9MREZMQUdTKQogCiBkbmwgR1NUX0xJQl9MREZMQUdTCkBAIC0zMjQxLDYgKzM0OTYsNyBAQAogZ3N0L2FkcGNtZGVjL01ha2VmaWxlCiBnc3QvYWRwY21lbmMvTWFrZWZpbGUKIGdzdC9haWZmL01ha2VmaWxlCitnc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL01ha2VmaWxlCiBnc3QvYXNmbXV4L01ha2VmaWxlCiBnc3QvYXVkaW9meGJhZC9NYWtlZmlsZQogZ3N0L2F1ZGlvbWl4ZXIvTWFrZWZpbGUKQEAgLTMyNzIsNyArMzUyOCw2IEBACiBnc3QvanAya2RlY2ltYXRvci9NYWtlZmlsZQogZ3N0L2pwZWdmb3JtYXQvTWFrZWZpbGUKIGdzdC9saWJyZmIvTWFrZWZpbGUKLWdzdC9saXZlYWRkZXIvTWFrZWZpbGUKIGdzdC9taWRpL01ha2VmaWxlCiBnc3QvbXBlZ2RlbXV4L01ha2VmaWxlCiBnc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUKQEAgLTMyODEsNiArMzUzNiw3IEBACiBnc3QvbXBlZ3BzbXV4L01ha2VmaWxlCiBnc3QvbXZlL01ha2VmaWxlCiBnc3QvbXhmL01ha2VmaWxlCitnc3QvbmV0c2ltL01ha2VmaWxlCiBnc3QvbnV2ZGVtdXgvTWFrZWZpbGUKIGdzdC9vbnZpZi9NYWtlZmlsZQogZ3N0L3BhdGNoZGV0ZWN0L01ha2VmaWxlCkBAIC0zMjg4LDcgKzM1NDQsNiBAQAogZ3N0L3BubS9NYWtlZmlsZQogZ3N0L3Jhd3BhcnNlL01ha2VmaWxlCiBnc3QvcmVtb3Zlc2lsZW5jZS9NYWtlZmlsZQotZ3N0L3J0cC9NYWtlZmlsZQogZ3N0L3NkaS9NYWtlZmlsZQogZ3N0L3NkcC9NYWtlZmlsZQogZ3N0L3NlZ21lbnRjbGlwL01ha2VmaWxlCkBAIC0zMzI3LDcgKzM1ODIsOSBAQAogZ3N0LWxpYnMvZ3N0L3VyaWRvd25sb2FkZXIvTWFrZWZpbGUKIGdzdC1saWJzL2dzdC93YXlsYW5kL01ha2VmaWxlCiBnc3QtbGlicy9nc3QvYmFzZS9NYWtlZmlsZQorZ3N0LWxpYnMvZ3N0L3BsYXllci9NYWtlZmlsZQogZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlCitnc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUKIHN5cy9NYWtlZmlsZQogc3lzL2RzaG93ZGVjd3JhcHBlci9NYWtlZmlsZQogc3lzL2FjbWVuYy9NYWtlZmlsZQpAQCAtMzM0NSw4ICszNjAyLDEwIEBACiBzeXMvZHZiL01ha2VmaWxlCiBzeXMvZmJkZXYvTWFrZWZpbGUKIHN5cy9saW5zeXMvTWFrZWZpbGUKK3N5cy9udmVuYy9NYWtlZmlsZQogc3lzL29wZW5zbGVzL01ha2VmaWxlCiBzeXMvc2htL01ha2VmaWxlCitzeXMvdGlueWFsc2EvTWFrZWZpbGUKIHN5cy91dmNoMjY0L01ha2VmaWxlCiBzeXMvdmNkL01ha2VmaWxlCiBzeXMvdmRwYXUvTWFrZWZpbGUKQEAgLTMzODUsNiArMzY0NCw3IEBACiB0ZXN0cy9leGFtcGxlcy9teGYvTWFrZWZpbGUKIHRlc3RzL2V4YW1wbGVzL29wZW5jdi9NYWtlZmlsZQogdGVzdHMvZXhhbXBsZXMvdXZjaDI2NC9NYWtlZmlsZQordGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvTWFrZWZpbGUKIHRlc3RzL2ljbGVzL01ha2VmaWxlCiBleHQvdm9hbXJ3YmVuYy9NYWtlZmlsZQogZXh0L3ZvYWFjZW5jL01ha2VmaWxlCkBAIC0zNDE3LDcgKzM2NzcsNiBAQAogZXh0L01ha2VmaWxlCiBleHQvbW9kcGx1Zy9NYWtlZmlsZQogZXh0L21wZWcyZW5jL01ha2VmaWxlCi1leHQvbXBnMTIzL01ha2VmaWxlCiBleHQvbWltaWMvTWFrZWZpbGUKIGV4dC9tcGxleC9NYWtlZmlsZQogZXh0L211c2VwYWNrL01ha2VmaWxlCkBAIC0zNDQ2LDEwICszNzA1LDEwIEBACiBleHQvc3J0cC9NYWtlZmlsZQogZXh0L3RlbGV0ZXh0ZGVjL01ha2VmaWxlCiBleHQvZ21lL01ha2VmaWxlCi1leHQvZ3NldHRpbmdzL01ha2VmaWxlCi1leHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbAogZXh0L3NwYy9NYWtlZmlsZQogZXh0L3RpbWlkaXR5L01ha2VmaWxlCitleHQvdnVsa2FuL01ha2VmaWxlCitleHQvdnVsa2FuL3hjYi9NYWtlZmlsZQogZXh0L3dlYnAvTWFrZWZpbGUKIGV4dC94MjY1L01ha2VmaWxlCiBleHQveHZpZC9NYWtlZmlsZQpAQCAtMzQ3MSwxMiArMzczMCwxNiBAQAogcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYwogcGtnY29uZmlnL2dzdHJlYW1lci1tcGVndHMucGMKIHBrZ2NvbmZpZy9nc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjCitwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci5wYworcGtnY29uZmlnL2dzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMKIHBrZ2NvbmZpZy9nc3RyZWFtZXItd2F5bGFuZC5wYwogcGtnY29uZmlnL2dzdHJlYW1lci13YXlsYW5kLXVuaW5zdGFsbGVkLnBjCiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1iYXNlLnBjCiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1iYXNlLXVuaW5zdGFsbGVkLnBjCiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYwogcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMKK3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjCitwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYwogdG9vbHMvTWFrZWZpbGUKIG00L01ha2VmaWxlCiApCmRpZmYgLS1naXQgYS9kb2NzL01ha2VmaWxlLmluIGIvZG9jcy9NYWtlZmlsZS5pbgppbmRleCBhZDZiMGY3Li41YTgwZjVlIDEwMDY0NAotLS0gYS9kb2NzL01ha2VmaWxlLmluCisrKyBiL2RvY3MvTWFrZWZpbGUuaW4KQEAgLTExNCwxNiArMTE0LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNDcsNiArMjQ2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODQsNiArMjg1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTIsNyArMjk1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzExLDggKzMxMyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMjksMTYgKzMzMiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjQsNiArMzY4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzg5LDYgKzM5NSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ5MCw2ICs0OTgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTAzLDggKzUxMiw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUyMCw2ICs1MjcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTc3LDE2ICs1ODYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzgsNiArNjQ5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0OCw2ICs2NjAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTcsNiArNjcwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5NCw3ICs3MDksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9NYWtlZmlsZS5hbSBiL2RvY3MvbGlicy9NYWtlZmlsZS5hbQppbmRleCBmMzYwZGI5Li43OTE5ZDY2IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvTWFrZWZpbGUuYW0KKysrIGIvZG9jcy9saWJzL01ha2VmaWxlLmFtCkBAIC0zNiw3ICszNiwxMyBAQAogQ0ZJTEVfR0xPQj0kKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC8qLyouYwogCiAjIEhlYWRlciBmaWxlcyB0byBpZ25vcmUgd2hlbiBzY2FubmluZy4KLUlHTk9SRV9IRklMRVMgPSAkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC9tcGVndHMvZ3N0bXBlZ3RzLXByaXZhdGUuaAorSUdOT1JFX0hGSUxFUyA9IFwKKwkkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC9tcGVndHMvZ3N0bXBlZ3RzLXByaXZhdGUuaCBcCisJJCh0b3Bfc3JjZGlyKS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci1wcml2YXRlLmggXAorCSQodG9wX3NyY2RpcikvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXItcHJpdmF0ZS5oIFwKKwkkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLW1lZGlhLWluZm8tcHJpdmF0ZS5oIFwKKwkkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHRfcHJpdmF0ZS5oIFwKKwkkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsX3ByaXZhdGUuaAogCiAjIEltYWdlcyB0byBjb3B5IGludG8gSFRNTCBkaXJlY3RvcnkuCiBIVE1MX0lNQUdFUyA9CkBAIC01NSw2ICs2MSw3IEBACiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9nbC9saWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vbGliZ3N0aW5zZXJ0YmluLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L21wZWd0cy9saWJnc3RtcGVndHMtQEdTVF9BUElfVkVSU0lPTkAubGEgXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvcGxheWVyL2xpYmdzdHBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgICQoR1NUX0JBU0VfTElCUykKIAogIyBJZiB5b3UgbmVlZCB0byBvdmVycmlkZSBzb21lIG9mIHRoZSBkZWNsYXJhdGlvbnMsIHBsYWNlIHRoZW0gaW4gdGhpcyBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvTWFrZWZpbGUuaW4gYi9kb2NzL2xpYnMvTWFrZWZpbGUuaW4KaW5kZXggZDM1MjExNS4uNzY1YjMxMCAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL01ha2VmaWxlLmluCisrKyBiL2RvY3MvbGlicy9NYWtlZmlsZS5pbgpAQCAtMTMzLDE2ICsxMzMsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTIwOSw2ICsyMDgsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI0Niw2ICsyNDcsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI1NCw3ICsyNTcsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0yNzMsOCArMjc1LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTI5MSwxNiArMjk0LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTMyNiw2ICszMzAsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zNTEsNiArMzU3LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDUyLDYgKzQ2MCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC00NjUsOCArNDc0LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNDgyLDYgKzQ4OSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01MzksMTYgKzU0OCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYwMCw2ICs2MTEsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjEwLDYgKzYyMiw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTYxOSw2ICs2MzIsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjU2LDcgKzY3MSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzM3LDcgKzc1MSwxNCBAQAogQ0ZJTEVfR0xPQiA9ICQodG9wX3NyY2RpcikvZ3N0LWxpYnMvZ3N0LyovKi5jCiAKICMgSGVhZGVyIGZpbGVzIHRvIGlnbm9yZSB3aGVuIHNjYW5uaW5nLgotSUdOT1JFX0hGSUxFUyA9ICQodG9wX3NyY2RpcikvZ3N0LWxpYnMvZ3N0L21wZWd0cy9nc3RtcGVndHMtcHJpdmF0ZS5oCitJR05PUkVfSEZJTEVTID0gXAorCSQodG9wX3NyY2RpcikvZ3N0LWxpYnMvZ3N0L21wZWd0cy9nc3RtcGVndHMtcHJpdmF0ZS5oIFwKKwkkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLXByaXZhdGUuaCBcCisJJCh0b3Bfc3JjZGlyKS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1yZW5kZXJlci1wcml2YXRlLmggXAorCSQodG9wX3NyY2RpcikvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItbWVkaWEtaW5mby1wcml2YXRlLmggXAorCSQodG9wX3NyY2RpcikvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dF9wcml2YXRlLmggXAorCSQodG9wX3NyY2RpcikvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xfcHJpdmF0ZS5oCisKIAogIyBJbWFnZXMgdG8gY29weSBpbnRvIEhUTUwgZGlyZWN0b3J5LgogSFRNTF9JTUFHRVMgPSAKQEAgLTc1Niw2ICs3NzcsNyBAQAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL2xpYmdzdGluc2VydGJpbi1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9tcGVndHMvbGliZ3N0bXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3BsYXllci9saWJnc3RwbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAubGEgXAogICAkKEdTVF9CQVNFX0xJQlMpCiAKIApAQCAtMTA5NSwxNyArMTExNywxOCBAQAogQEVOQUJMRV9HVEtfRE9DX1RSVUVACSAgICAgICAgICAgIHNjYW5vYmpfb3B0aW9ucz0iLS12ZXJib3NlIjsgXAogQEVOQUJMRV9HVEtfRE9DX1RSVUVACSAgICAgICAgZmk7IFwKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgZmk7IFwKLUBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzA9YGNkICQodG9wX2J1aWxkZGlyKSAmJiBwd2RgCQlcCi1ARU5BQkxFX0dUS19ET0NfVFJVRUAJICAgIEdTVF9QTFVHSU5fUEFUSF8xXzA9CQkJCQkJXAorQEVOQUJMRV9HVEtfRE9DX1RSVUVACSAgICBHU1RfUExVR0lOX1NZU1RFTV9QQVRIXzFfMD1gY2QgJCh0b3BfYnVpbGRkaXIpICYmIHB3ZGAJXAorQEVOQUJMRV9HVEtfRE9DX1RSVUVACSAgICBHU1RfUExVR0lOX1BBVEhfMV8wPQkJCQkJXAogQEVOQUJMRV9HVEtfRE9DX1RSVUVACSAgICBHU1RfUkVHSVNUUllfMV8wPWRvYy1yZWdpc3RyeS54bWwJCQkJXAogQEVOQUJMRV9HVEtfRE9DX1RSVUVACSAgICAkKEdUS0RPQ19FWFRSQV9FTlZJUk9OTUVOVCkJCQkJCVwKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgQ0M9IiQoR1RLRE9DX0NDKSIgTEQ9IiQoR1RLRE9DX0xEKSIgUlVOPSIkKEdUS0RPQ19SVU4pIglcCiBARU5BQkxFX0dUS19ET0NfVFJVRUAJICAgIENGTEFHUz0iJChHVEtET0NfQ0ZMQUdTKSAkKENGTEFHUykiCQkJCVwKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgTERGTEFHUz0iJChHVEtET0NfTElCUykgJChMREZMQUdTKSIJCQkJXAogQEVOQUJMRV9HVEtfRE9DX1RSVUVACSAgICBndGtkb2Mtc2NhbmdvYmogLS10eXBlLWluaXQtZnVuYz0iZ3N0X2luaXQoTlVMTCxOVUxMKSIJXAotQEVOQUJMRV9HVEtfRE9DX1RSVUVACSAgICAgICAgJCRzY2Fub2JqX29wdGlvbnMgLS1tb2R1bGU9JChET0NfTU9EVUxFKSA7CQkJCVwKK0BFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgICAgICQkc2Nhbm9ial9vcHRpb25zIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgOwkJXAogQEVOQUJMRV9HVEtfRE9DX1RSVUVACWVsc2UJCQkJCQkJCVwKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgZm9yIGkgaW4gJChTQ0FOT0JKX0ZJTEVTKSA7IGRvCQkJCVwKK0BFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgICAgJChNS0RJUl9QKSAkKGRpcm5hbWUgJCRpKSA7CQkJCVwKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgICAgdGVzdCAtZiAkJGkgfHwgdG91Y2ggJCRpIDsJCQkJXAogQEVOQUJMRV9HVEtfRE9DX1RSVUVACSAgICBkb25lCQkJCQkJCVwKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAlmaQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLWRvY3Muc2dtbCBiL2RvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy1kb2NzLnNnbWwKaW5kZXggNzY2NTFiNy4uODhmZDExZCAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLWRvY3Muc2dtbAorKysgYi9kb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZG9jcy5zZ21sCkBAIC03Myw2ICs3Myw5IEBACiAgICAgPGNoYXB0ZXIgaWQ9ImdsIj4KICAgICAgIDx0aXRsZT5PcGVuR0wgSGVscGVyIExpYnJhcnk8L3RpdGxlPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsYXBpLnhtbCIvPgorICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsYmFzZW1lbW9yeS54bWwiLz4KKyAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbGJhc2VmaWx0ZXIueG1sIi8+CisgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xidWZmZXIueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xidWZmZXJwb29sLnhtbCIvPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsY29sb3Jjb252ZXJ0LnhtbCIvPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsY29udGV4dC54bWwiLz4KQEAgLTgyLDE3ICs4NSwxNiBAQAogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsY29udGV4dGdseC54bWwiLz4KICAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbGNvbnRleHR3Z2wueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xkaXNwbGF5LnhtbCIvPgotICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsZG93bmxvYWQueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0ZWdsaW1hZ2VtZW1vcnkueG1sIi8+Ci0gICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xiYXNlZmlsdGVyLnhtbCIvPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsZmlsdGVyLnhtbCIvPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsZnJhbWVidWZmZXIueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xtZW1vcnkueG1sIi8+CisgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xtZW1vcnlwYm8ueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xzaGFkZXIueG1sIi8+CisgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xzbC54bWwiLz4KKyAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbHNsc3RhZ2UueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xzeW5jbWV0YS54bWwiLz4KICAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbHVwbG9hZC54bWwiLz4KLSAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbHVwbG9hZG1ldGEueG1sIi8+Ci0gICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2x1dGlscy54bWwiLz4KICAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbHdpbmRvdy54bWwiLz4KICAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbHdpbmRvd2FuZHJvaWQueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2x3aW5kb3djb2NvYS54bWwiLz4KQEAgLTEwMCw2ICsxMDIsMTggQEAKICAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbHdpbmRvd3dheWxhbmQueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2x3aW5kb3d3aW4zMi54bWwiLz4KICAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbHdpbmRvd3gxMS54bWwiLz4KKyAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbGRlYnVnLnhtbCIvPgorICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsdXRpbHMueG1sIi8+CisgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xmb3JtYXQueG1sIi8+CisgICAgPC9jaGFwdGVyPgorCisgICAgPGNoYXB0ZXIgaWQ9InBsYXllciI+CisgICAgICA8dGl0bGU+UGxheWVyIExpYnJhcnk8L3RpdGxlPgorICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdHBsYXllci54bWwiLz4KKyAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RwbGF5ZXItbWVkaWFpbmZvLnhtbCIvPgorICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLnhtbCIvPgorICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLnhtbCIvPgorICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdHBsYXllci12aXN1YWxpemF0aW9uLnhtbCIvPgogICAgIDwvY2hhcHRlcj4KIAogICAgIDxjaGFwdGVyPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dCBiL2RvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy1zZWN0aW9ucy50eHQKaW5kZXggM2I3Y2MwNS4uOTIyZGEwZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dAorKysgYi9kb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtc2VjdGlvbnMudHh0CkBAIC03NjgsNyArNzY4LDYgQEAKIEdzdEdMUGxhdGZvcm0KIGdzdF9nbF9wbGF0Zm9ybV90b19zdHJpbmcKIGdzdF9nbF9wbGF0Zm9ybV9mcm9tX3N0cmluZwotZ3N0X2dsX2NoZWNrX2V4dGVuc2lvbgogR1NUX0dMX0FQSV9HTEVTMV9OQU1FCiBHU1RfR0xfQVBJX0dMRVMyX05BTUUKIEdTVF9HTF9BUElfT1BFTkdMM19OQU1FCkBAIC03ODQsMTEgKzc4MywzOSBAQAogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPmdzdGdsYnVmZmVyPC9GSUxFPgorPFRJVExFPkdzdEdMQnVmZmVyPC9USVRMRT4KK0dzdEdMQnVmZmVyCitnc3RfZ2xfYnVmZmVyX2luaXRfb25jZQorZ3N0X2lzX2dsX2J1ZmZlcgorZ3N0X2dsX2J1ZmZlcl9hbGxvYworR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zCitHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19CVUZGRVIKK2dzdF9nbF9idWZmZXJfYWxsb2NhdGlvbl9wYXJhbXNfbmV3CitHc3RHTEJ1ZmZlckFsbG9jYXRvcgorR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzcworR1NUX0dMX0JVRkZFUl9BTExPQ0FUT1JfTkFNRQorR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfQlVGRkVSCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK0dTVF9HTF9CVUZGRVJfQ0FTVAorR1NUX0dMX0JVRkZFUl9BTExPQ0FUT1IKK0dTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX0NBU1QKK0dTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX0NMQVNTCitHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9HRVRfQ0xBU1MKK2dzdF9nbF9idWZmZXJfYWxsb2NhdG9yX2dldF90eXBlCitHU1RfSVNfR0xfQlVGRkVSX0FMTE9DQVRPUgorR1NUX0lTX0dMX0JVRkZFUl9BTExPQ0FUT1JfQ0xBU1MKK0dTVF9UWVBFX0dMX0JVRkZFUl9BTExPQ0FUT1IKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5nc3RnbGJ1ZmZlcnBvb2w8L0ZJTEU+CiA8VElUTEU+R3N0R0xCdWZmZXJQb29sPC9USVRMRT4KIEdzdEdMQnVmZmVyUG9vbAogR3N0R0xCdWZmZXJQb29sQ2xhc3MKIGdzdF9nbF9idWZmZXJfcG9vbF9uZXcKK2dzdF9idWZmZXJfcG9vbF9jb25maWdfZ2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zCitnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9nbF9hbGxvY2F0aW9uX3BhcmFtcwogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBnc3RfZ2xfYnVmZmVyX3Bvb2xfcmVwbGFjZV9sYXN0X2J1ZmZlcgogR3N0R0xCdWZmZXJQb29sUHJpdmF0ZQpAQCAtODA5LDYgKzgzNiw4IEBACiBnc3RfZ2xfY29sb3JfY29udmVydF9uZXcKIGdzdF9nbF9jb2xvcl9jb252ZXJ0X3NldF9jYXBzCiBnc3RfZ2xfY29sb3JfY29udmVydF90cmFuc2Zvcm1fY2FwcworZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZml4YXRlX2NhcHMKK2dzdF9nbF9jb2xvcl9jb252ZXJ0X2RlY2lkZV9hbGxvY2F0aW9uCiBnc3RfZ2xfY29sb3JfY29udmVydF9wZXJmb3JtCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIEdzdEdMQ29sb3JDb252ZXJ0UHJpdmF0ZQpAQCAtODM2LDYgKzg2NSw3IEBACiBnc3RfZ2xfY29udGV4dF9hY3RpdmF0ZQogZ3N0X2dsX2NvbnRleHRfZGVmYXVsdF9nZXRfcHJvY19hZGRyZXNzCiBnc3RfZ2xfY29udGV4dF9nZXRfcHJvY19hZGRyZXNzCitnc3RfZ2xfY29udGV4dF9nZXRfcHJvY19hZGRyZXNzX3dpdGhfcGxhdGZvcm0KIGdzdF9nbF9jb250ZXh0X2dldF93aW5kb3cKIGdzdF9nbF9jb250ZXh0X3NldF93aW5kb3cKIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQKQEAgLTg0Nyw2ICs4NzcsOCBAQAogZ3N0X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnRfZ2xfYXBpCiBnc3RfZ2xfY29udGV4dF9nZXRfdGhyZWFkCiBnc3RfZ2xfY29udGV4dF9jYW5fc2hhcmUKK2dzdF9nbF9jb250ZXh0X2lzX3NoYXJlZAorZ3N0X2dsX2NvbnRleHRfc2V0X3NoYXJlZF93aXRoCiBnc3RfZ2xfY29udGV4dF9jaGVja19mZWF0dXJlCiBnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uCiBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfdmVyc2lvbgpAQCAtODU0LDExICs4ODYsMTEgQEAKIGdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50CiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIEdTVF9HTF9DT05URVhUCi1HU1RfR0xfSVNfQ09OVEVYVAorR1NUX0lTX0dMX0NPTlRFWFQKIEdTVF9HTF9UWVBFX0NPTlRFWFQKIEdTVF9HTF9DT05URVhUX0NMQVNTCiBHU1RfR0xfQ09OVEVYVF9HRVRfQ0xBU1MKLUdTVF9HTF9JU19DT05URVhUX0NMQVNTCitHU1RfSVNfR0xfQ09OVEVYVF9DTEFTUwogR1NUX0dMX0NPTlRFWFRfQ0FTVAogR3N0R0xDb250ZXh0UHJpdmF0ZQogZ3N0X2dsX2NvbnRleHRfZ2V0X3R5cGUKQEAgLTg3MywxMSArOTA1LDExIEBACiBnc3RfZ2xfY29udGV4dF9jb2NvYV9nZXRfcGl4ZWxfZm9ybWF0CiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIEdTVF9HTF9DT05URVhUX0NPQ09BCi1HU1RfR0xfSVNfQ09OVEVYVF9DT0NPQQorR1NUX0lTX0dMX0NPTlRFWFRfQ09DT0EKIEdTVF9HTF9UWVBFX0NPTlRFWFRfQ09DT0EKIEdTVF9HTF9DT05URVhUX0NPQ09BX0NMQVNTCiBHU1RfR0xfQ09OVEVYVF9DT0NPQV9HRVRfQ0xBU1MKLUdTVF9HTF9JU19DT05URVhUX0NPQ09BX0NMQVNTCitHU1RfSVNfR0xfQ09OVEVYVF9DT0NPQV9DTEFTUwogR1NUX0dMX0NPTlRFWFRfQ09DT0FfQ0FTVAogR3N0R0xDb250ZXh0Q29jb2FQcml2YXRlCiBnc3RfZ2xfY29udGV4dF9jb2NvYV9nZXRfdHlwZQpAQCAtODk0LDExICs5MjYsMTEgQEAKIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfcHJvY19hZGRyZXNzCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIEdTVF9HTF9DT05URVhUX0VHTAotR1NUX0dMX0lTX0NPTlRFWFRfRUdMCitHU1RfSVNfR0xfQ09OVEVYVF9FR0wKIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUdMCiBHU1RfR0xfQ09OVEVYVF9FR0xfQ0xBU1MKIEdTVF9HTF9DT05URVhUX0VHTF9HRVRfQ0xBU1MKLUdTVF9HTF9JU19DT05URVhUX0VHTF9DTEFTUworR1NUX0lTX0dMX0NPTlRFWFRfRUdMX0NMQVNTCiBHU1RfR0xfQ09OVEVYVF9FR0xfQ0FTVAogR3N0R0xDb250ZXh0RUdMUHJpdmF0ZQogZ3N0X2dsX2NvbnRleHRfZWdsX2dldF90eXBlCkBAIC05MTMsMTEgKzk0NSwxMSBAQAogZ3N0X2dsX2NvbnRleHRfZ2x4X2dldF9wcm9jX2FkZHJlc3MKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogR1NUX0dMX0NPTlRFWFRfR0xYCi1HU1RfR0xfSVNfQ09OVEVYVF9HTFgKK0dTVF9JU19HTF9DT05URVhUX0dMWAogR1NUX0dMX1RZUEVfQ09OVEVYVF9HTFgKIEdTVF9HTF9DT05URVhUX0dMWF9DTEFTUwogR1NUX0dMX0NPTlRFWFRfR0xYX0dFVF9DTEFTUwotR1NUX0dMX0lTX0NPTlRFWFRfR0xYX0NMQVNTCitHU1RfSVNfR0xfQ09OVEVYVF9HTFhfQ0xBU1MKIEdTVF9HTF9DT05URVhUX0dMWF9DQVNUCiBHc3RHTENvbnRleHRHTFhQcml2YXRlCiBnc3RfZ2xfY29udGV4dF9nbHhfZ2V0X3R5cGUKQEAgLTkzMiwxMSArOTY0LDExIEBACiBnc3RfZ2xfY29udGV4dF93Z2xfZ2V0X3Byb2NfYWRkcmVzcwogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBHU1RfR0xfQ09OVEVYVF9XR0wKLUdTVF9HTF9JU19DT05URVhUX1dHTAorR1NUX0lTX0dMX0NPTlRFWFRfV0dMCiBHU1RfR0xfVFlQRV9DT05URVhUX1dHTAogR1NUX0dMX0NPTlRFWFRfV0dMX0NMQVNTCiBHU1RfR0xfQ09OVEVYVF9XR0xfR0VUX0NMQVNTCi1HU1RfR0xfSVNfQ09OVEVYVF9XR0xfQ0xBU1MKK0dTVF9JU19HTF9DT05URVhUX1dHTF9DTEFTUwogR1NUX0dMX0NPTlRFWFRfV0dMX0NBU1QKIEdzdEdMQ29udGV4dFdHTFByaXZhdGUKIGdzdF9nbF9jb250ZXh0X3dnbF9nZXRfdHlwZQpAQCAtOTUwLDExICs5ODIsMTEgQEAKIGdzdF9nbF9jb250ZXh0X2VhZ2xfZ2V0X2N1cnJlbnRfY29udGV4dAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBHU1RfR0xfQ09OVEVYVF9FQUdMCi1HU1RfR0xfSVNfQ09OVEVYVF9FQUdMCitHU1RfSVNfR0xfQ09OVEVYVF9FQUdMCiBHU1RfR0xfVFlQRV9DT05URVhUX0VBR0wKIEdTVF9HTF9DT05URVhUX0VBR0xfQ0xBU1MKIEdTVF9HTF9DT05URVhUX0VBR0xfR0VUX0NMQVNTCi1HU1RfR0xfSVNfQ09OVEVYVF9FQUdMX0NMQVNTCitHU1RfSVNfR0xfQ09OVEVYVF9FQUdMX0NMQVNTCiBHU1RfR0xfQ09OVEVYVF9FQUdMX0NBU1QKIEdzdEdMQ29udGV4dEVhZ2xQcml2YXRlCiAKQEAgLTk2Myw2ICs5OTUsNyBAQAogZ3N0X2dsX2NvbnRleHRfZWFnbF9wcmVwYXJlX2RyYXcKIGdzdF9nbF9jb250ZXh0X2VhZ2xfZmluaXNoX2RyYXcKIGdzdF9nbF9jb250ZXh0X2VhZ2xfcmVzaXplCitnc3RfZ2xfY29udGV4dF9lYWdsX3VwZGF0ZV9sYXllcgogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KQEAgLTk3OCw2ICsxMDExLDcgQEAKIGdzdF9nbF9kaXNwbGF5X2FkZF9jb250ZXh0CiBnc3RfZ2xfZGlzcGxheV9nZXRfZ2xfY29udGV4dF9mb3JfdGhyZWFkCiBnc3RfZ2xfZGlzcGxheV9nZXRfaGFuZGxlCitnc3RfZ2xfZGlzcGxheV9jcmVhdGVfY29udGV4dAogZ3N0X2NvbnRleHRfZ2V0X2dsX2Rpc3BsYXkKIGdzdF9jb250ZXh0X3NldF9nbF9kaXNwbGF5CiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KQEAgLTk5MiwyMyArMTAyNiwyMiBAQAogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KLTxGSUxFPmdzdGdsZG93bmxvYWQ8L0ZJTEU+Ci08VElUTEU+R3N0R0xEb3dubG9hZDwvVElUTEU+Ci1Hc3RHTERvd25sb2FkCi1nc3RfZ2xfZG93bmxvYWRfbmV3Ci1nc3RfZ2xfZG93bmxvYWRfc2V0X2Zvcm1hdAotZ3N0X2dsX2Rvd25sb2FkX3RyYW5zZm9ybV9jYXBzCi1nc3RfZ2xfZG93bmxvYWRfcGVyZm9ybV93aXRoX2RhdGEKLTxTVUJTRUNUSU9OIFN0YW5kYXJkPgotR1NUX0dMX0RPV05MT0FECi1HU1RfR0xfRE9XTkxPQURfQ0FTVAotR1NUX0dMX0RPV05MT0FEX0NMQVNTCi1HU1RfR0xfRE9XTkxPQURfR0VUX0NMQVNTCi1nc3RfZ2xfZG93bmxvYWRfZ2V0X3R5cGUKLUdTVF9JU19HTF9ET1dOTE9BRAotR1NUX0lTX0dMX0RPV05MT0FEX0NMQVNTCi1HU1RfVFlQRV9HTF9ET1dOTE9BRAotR3N0R0xEb3dubG9hZFByaXZhdGUKKzxGSUxFPmdzdGdsZGVidWc8L0ZJTEU+CitHc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlCis8VElUTEU+T3BlbkdMIERlYnVnZ2luZzwvVElUTEU+CitHc3RHTEFzeW5jRGVidWcKK2dzdF9nbF9hc3luY19kZWJ1Z19uZXcKK2dzdF9nbF9hc3luY19kZWJ1Z19mcmVlCitnc3RfZ2xfYXN5bmNfZGVidWdfaW5pdAorZ3N0X2dsX2FzeW5jX2RlYnVnX3Vuc2V0Citnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplCitnc3RfZ2xfYXN5bmNfZGVidWdfdGhhdworZ3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnCitnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZworZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2dfdmFsaXN0CitHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPR192YWxpc3QKK0dTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HCitnc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlcgogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KQEAgLTEwMjIsNyArMTA1NSw3IEBACiBHU1RfVFlQRV9HTF9CQVNFX0ZJTFRFUgogZ3N0X2dsX2Jhc2VfZmlsdGVyX2dldF90eXBlCiBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MKLUdTVF9JU19HTF9GSUxURVJfQ0xBU1MKK0dTVF9JU19HTF9CQVNFX0ZJTFRFUl9DTEFTUwogR1NUX0dMX0JBU0VfRklMVEVSX0dFVF9DTEFTUwogR3N0R0xCYXNlRmlsdGVyUHJpdmF0ZQogPC9TRUNUSU9OPgpAQCAtMTA0Nyw2ICsxMDgwLDI5IEBACiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+Z3N0Z2xmb3JtYXQ8L0ZJTEU+Cis8VElUTEU+T3BlbkdMIEZvcm1hdHM8L1RJVExFPgorR3N0R0xUZXh0dXJlVGFyZ2V0CitHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSCitHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFX1NUUgorR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FU19TVFIKK0dTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfMkQKK0dTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFCitHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUworZ3N0X2dsX2Zvcm1hdF90eXBlX25fYnl0ZXMKK2dzdF9nbF90ZXh0dXJlX3R5cGVfbl9ieXRlcworZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZQorZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdAorZ3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlCitnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmcKK2dzdF9nbF90ZXh0dXJlX3RhcmdldF90b19zdHJpbmcKK2dzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbAorZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fZ2wKK2dzdF9nbF90ZXh0dXJlX3RhcmdldF90b19idWZmZXJfcG9vbF9vcHRpb24KKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxFPmdzdGdsZnJhbWVidWZmZXI8L0ZJTEU+CiA8VElUTEU+R3N0R0xGcmFtZWJ1ZmZlcjwvVElUTEU+CiBHc3RHTEZyYW1lYnVmZmVyCkBAIC0xMDU2LDYgKzExMTIsNyBAQAogZ3N0X2dsX2ZyYW1lYnVmZmVyX2RlbGV0ZQogZ3N0X2dsX2ZyYW1lYnVmZmVyX3VzZV92MgogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitHc3RHTEZyYW1lYnVmZmVyUHJpdmF0ZQogR1NUX0dMX0ZSQU1FQlVGRkVSCiBHU1RfR0xfRlJBTUVCVUZGRVJfQ0FTVAogR1NUX0lTX0dMX0ZSQU1FQlVGRkVSCkBAIC0xMDY3LDMwICsxMTI0LDExOSBAQAogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPmdzdGdsYmFzZW1lbW9yeTwvRklMRT4KK0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcgorR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MKK0dTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfTkFNRQorR1NUX01BUF9HTAorR3N0R0xCYXNlTWVtb3J5RXJyb3IKK0dTVF9HTF9CQVNFX01FTU9SWV9FUlJPUgorR3N0R0xCYXNlTWVtb3J5VHJhbnNmZXIKK0dzdEdMQWxsb2NhdGlvblBhcmFtcworR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMKK0dzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jCitHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19BTExPQworR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9TWVNNRU0KK0dTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRQorR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfVVNFUgorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2luaXQKK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5Citnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZQorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YQorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YQorPFRJVExFPkdzdEdMQmFzZU1lbW9yeTwvVElUTEU+CitHc3RHTEJhc2VNZW1vcnkKK2dzdF9nbF9iYXNlX21lbW9yeV9pbml0X29uY2UKK2dzdF9nbF9iYXNlX21lbW9yeV9pbml0Citnc3RfaXNfZ2xfYmFzZV9tZW1vcnkKK0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb24KK0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uCitHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbgorR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbgorR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uCitHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24KK2dzdF9nbF9iYXNlX21lbW9yeV9hbGxvYworZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jX2RhdGEKK2dzdF9nbF9iYXNlX21lbW9yeV9tZW1jcHkKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorR1NUX1RZUEVfR0xfQUxMT0NBVElPTl9QQVJBTVMKK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19nZXRfdHlwZQorZ3N0X2dsX2Jhc2VfbWVtb3J5X2Vycm9yX3F1YXJrCitHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVAorR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUgorR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9DQVNUCitHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX0NMQVNTCitHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUworZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jYXRvcl9nZXRfdHlwZQorR1NUX0lTX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUgorR1NUX0lTX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUworR1NUX1RZUEVfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+Z3N0Z2xtZW1vcnk8L0ZJTEU+Ci1Hc3RHTEFsbG9jYXRvcgotR3N0R0xBbGxvY2F0b3JDbGFzcwotR1NUX0dMX01FTU9SWV9BTExPQ0FUT1IKIDxUSVRMRT5Hc3RHTE1lbW9yeTwvVElUTEU+CitHU1RfR0xfTUVNT1JZX1ZJREVPX0ZPUk1BVFNfU1RSCitHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcworR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfVklERU8KK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGEKK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGEKK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19pbml0X2Z1bGwKK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXcKK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhCitnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfdGV4dHVyZQorR3N0R0xNZW1vcnlBbGxvY2F0b3IKK0dzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MKK2dzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0Citnc3RfZ2xfbWVtb3J5X2luaXRfb25jZQogR3N0R0xNZW1vcnkKIGdzdF9nbF9tZW1vcnlfaW5pdAotZ3N0X2dsX21lbW9yeV9hbGxvYwotZ3N0X2dsX21lbW9yeV93cmFwcGVkCi1nc3RfZ2xfbWVtb3J5X3dyYXBwZWRfdGV4dHVyZQotZ3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZQotZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIKLWdzdF9nbF9tZW1vcnlfc2V0dXBfd3JhcHBlZAotZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdAogZ3N0X2lzX2dsX21lbW9yeQorR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRQorZ3N0X2dsX21lbW9yeV9jb3B5X2ludG8KK2dzdF9nbF9tZW1vcnlfY29weV90ZXhpbWFnZQorZ3N0X2dsX21lbW9yeV9yZWFkX3BpeGVscworZ3N0X2dsX21lbW9yeV90ZXhzdWJpbWFnZQorZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9oZWlnaHQKK2dzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaWQKK2dzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdGFyZ2V0Citnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3R5cGUKK2dzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfd2lkdGgKK2dzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KLUdTVF9HTF9BTExPQ0FUT1IKLUdTVF9HTF9BTExPQ0FUT1JfQ0FTVAotR1NUX0dMX0FMTE9DQVRPUl9DTEFTUwotR1NUX0dMX0FMTE9DQVRPUl9HRVRfQ0xBU1MKLWdzdF9nbF9hbGxvY2F0b3JfZ2V0X3R5cGUKLUdTVF9JU19HTF9BTExPQ0FUT1IKLUdTVF9JU19HTF9BTExPQ0FUT1JfQ0xBU1MKLUdTVF9UWVBFX0dMX0FMTE9DQVRPUgorR1NUX0dMX01FTU9SWV9DQVNUCitHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUgorR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfQ0FTVAorR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1MKK0dTVF9HTF9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUworZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X3R5cGUKK0dTVF9JU19HTF9NRU1PUllfQUxMT0NBVE9SCitHU1RfSVNfR0xfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUworR1NUX1RZUEVfR0xfTUVNT1JZX0FMTE9DQVRPUgorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPmdzdGdsbWVtb3J5cGJvPC9GSUxFPgorR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3IKK0dzdEdMTWVtb3J5UEJPQWxsb2NhdG9yQ2xhc3MKK0dTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FCis8VElUTEU+R3N0R0xNZW1vcnlQQk88L1RJVExFPgorR3N0R0xNZW1vcnlQQk8KK2dzdF9pc19nbF9tZW1vcnlfcGJvCitnc3RfZ2xfbWVtb3J5X3Bib19jb3B5X2ludG9fdGV4dHVyZQorZ3N0X2dsX21lbW9yeV9wYm9fZG93bmxvYWRfdHJhbnNmZXIKK2dzdF9nbF9tZW1vcnlfcGJvX2luaXRfb25jZQorZ3N0X2dsX21lbW9yeV9wYm9fdXBsb2FkX3RyYW5zZmVyCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK0dTVF9HTF9NRU1PUllfUEJPX0NBU1QKK0dTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUgorR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX0NBU1QKK0dTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9DTEFTUworR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX0dFVF9DTEFTUworZ3N0X2dsX21lbW9yeV9wYm9fYWxsb2NhdG9yX2dldF90eXBlCitHU1RfSVNfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1IKK0dTVF9JU19HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9DTEFTUworR1NUX1RZUEVfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1IKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+CkBAIC0xMTEwLDMxICsxMjU2LDIzIEBACiAKIDxTRUNUSU9OPgogPEZJTEU+Z3N0Z2xzaGFkZXI8L0ZJTEU+Ci1nc3RfZ2xfc2hhZGVyX2Vycm9yX3F1YXJrCi1HU1RfR0xfU0hBREVSX0VSUk9SCi1Hc3RHTFNoYWRlckVycm9yCi1Hc3RHTFNoYWRlclNvdXJjZVR5cGUKLWdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjCi1nc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0Ci1nc3RfZ2xfc2hhZGVydmFyaWFibGVzX3BhcnNlCiA8VElUTEU+R3N0R0xTaGFkZXI8L1RJVExFPgogR3N0R0xTaGFkZXIKIGdzdF9nbF9zaGFkZXJfbmV3Ci1nc3RfZ2xfc2hhZGVyX3NldF92ZXJ0ZXhfc291cmNlCi1nc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2UKLWdzdF9nbF9zaGFkZXJfZ2V0X3ZlcnRleF9zb3VyY2UKLWdzdF9nbF9zaGFkZXJfZ2V0X2ZyYWdtZW50X3NvdXJjZQotZ3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGUKLWdzdF9nbF9zaGFkZXJfc2V0X2FjdGl2ZQotZ3N0X2dsX3NoYWRlcl9pc19jb21waWxlZAotZ3N0X2dsX3NoYWRlcl9jb21waWxlCi1nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYW5kX2NoZWNrCi1nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYWxsX3dpdGhfYXR0cmlic19hbmRfY2hlY2sKLWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfZl9hbmRfY2hlY2sKLWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdl9hbmRfY2hlY2sKLWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdmZfYW5kX2NoZWNrCi1nc3RfZ2xfc2hhZGVyX3JlbGVhc2UKK2dzdF9nbF9zaGFkZXJfbmV3X2RlZmF1bHQKK2dzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXMKK2dzdF9nbF9zaGFkZXJfbmV3X3dpdGhfc3RhZ2VzCiBnc3RfZ2xfc2hhZGVyX3VzZQorZ3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGUKK2dzdF9nbF9zaGFkZXJfcmVsZWFzZQorZ3N0X2dsX3NoYWRlcl9yZWxlYXNlX3VubG9ja2VkCitnc3RfZ2xfc2hhZGVyX2F0dGFjaAorZ3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWQKK2dzdF9nbF9zaGFkZXJfY29tcGlsZV9hdHRhY2hfc3RhZ2UKK2dzdF9nbF9zaGFkZXJfZGV0YWNoCitnc3RfZ2xfc2hhZGVyX2RldGFjaF91bmxvY2tlZAorZ3N0X2dsX3NoYWRlcl9pc19saW5rZWQKK2dzdF9nbF9zaGFkZXJfbGluawogZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaQogZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZgogZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZnYKQEAgLTExNjUsMjQgKzEzMDMsNzMgQEAKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogR3N0R0xTaGFkZXJQcml2YXRlCiBHU1RfR0xfU0hBREVSCi1HU1RfR0xfSVNfU0hBREVSCitHU1RfSVNfR0xfU0hBREVSCiBHU1RfR0xfVFlQRV9TSEFERVIKIGdzdF9nbF9zaGFkZXJfZ2V0X3R5cGUKIEdTVF9HTF9TSEFERVJfQ0xBU1MKLUdTVF9HTF9JU19TSEFERVJfQ0xBU1MKK0dTVF9JU19HTF9TSEFERVJfQ0xBU1MKIEdTVF9HTF9TSEFERVJfR0VUX0NMQVNTCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+Z3N0Z2xzbDwvRklMRT4KKzxUSVRMRT5Hc3RHTFNMPC9USVRMRT4KK0dTVF9HTFNMX0VSUk9SCitnc3RfZ2xzbF9lcnJvcl9xdWFyaworR3N0R0xTTEVycm9yCitHc3RHTFNMUHJvZmlsZQorR3N0R0xTTFZlcnNpb24KK2dzdF9nbHNsX3Byb2ZpbGVfZnJvbV9zdHJpbmcKK2dzdF9nbHNsX3Byb2ZpbGVfdG9fc3RyaW5nCitnc3RfZ2xzbF92ZXJzaW9uX2Zyb21fc3RyaW5nCitnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZworZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX2Zyb21fc3RyaW5nCitnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfdG9fc3RyaW5nCitnc3RfZ2xzbF9zdHJpbmdfZ2V0X3ZlcnNpb25fcHJvZmlsZQorZ3N0X2dsX2NvbnRleHRfc3VwcG9ydHNfZ2xzbF9wcm9maWxlX3ZlcnNpb24KK2dzdF9nbF92ZXJzaW9uX3RvX2dsc2xfdmVyc2lvbgorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPmdzdGdsc2xzdGFnZTwvRklMRT4KKzxUSVRMRT5Hc3RHTFNMU3RhZ2U8L1RJVExFPgorR3N0R0xTTFN0YWdlCitHc3RHTFNMU3RhZ2VDbGFzcworZ3N0X2dsc2xfc3RhZ2VfbmV3Citnc3RfZ2xzbF9zdGFnZV9uZXdfZGVmYXVsdF9mcmFnbWVudAorZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfdmVydGV4Citnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmcKK2dzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZ3MKK2dzdF9nbHNsX3N0YWdlX3NldF9zdHJpbmdzCitnc3RfZ2xzbF9zdGFnZV9jb21waWxlCitnc3RfZ2xzbF9zdGFnZV9nZXRfaGFuZGxlCitnc3RfZ2xzbF9zdGFnZV9nZXRfcHJvZmlsZQorZ3N0X2dsc2xfc3RhZ2VfZ2V0X3NoYWRlcl90eXBlCitnc3RfZ2xzbF9zdGFnZV9nZXRfdmVyc2lvbgorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitHc3RHTFNMU3RhZ2VQcml2YXRlCitnc3RfZ2xzbF9zdGFnZV9nZXRfdHlwZQorR1NUX1RZUEVfR0xTTF9TVEFHRQorR1NUX0lTX0dMU0xfU1RBR0UKK0dTVF9JU19HTFNMX1NUQUdFX0NMQVNTCitHU1RfR0xTTF9TVEFHRQorR1NUX0dMU0xfU1RBR0VfQ0xBU1MKK0dTVF9HTFNMX1NUQUdFX0dFVF9DTEFTUworPC9TRUNUSU9OPgorCis8L1NFQ1RJT04+Cis8U0VDVElPTj4KIDxGSUxFPmdzdGdsc3luY21ldGE8L0ZJTEU+CiA8VElUTEU+R3N0R0xTeW5jTWV0YTwvVElUTEU+CiBHc3RHTFN5bmNNZXRhCiBnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGEKK2dzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YV9mdWxsCiBnc3RfYnVmZmVyX2dldF9nbF9zeW5jX21ldGEKIGdzdF9nbF9zeW5jX21ldGFfYXBpX2dldF90eXBlCiBnc3RfZ2xfc3luY19tZXRhX2dldF9pbmZvCiBnc3RfZ2xfc3luY19tZXRhX3NldF9zeW5jX3BvaW50CiBnc3RfZ2xfc3luY19tZXRhX3dhaXQKK2dzdF9nbF9zeW5jX21ldGFfd2FpdF9jcHUKIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfU1lOQ19NRVRBCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIEdTVF9HTF9TWU5DX01FVEFfQVBJX1RZUEUKQEAgLTExOTksNyArMTM4Niw3IEBACiBnc3RfZ2xfdXBsb2FkX3Byb3Bvc2VfYWxsb2NhdGlvbgogZ3N0X2dsX3VwbG9hZF90cmFuc2Zvcm1fY2FwcwogZ3N0X2dsX3VwbG9hZF9wZXJmb3JtX3dpdGhfYnVmZmVyCi1nc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyCitnc3RfZ2xfdXBsb2FkX2dldF9pbnB1dF90ZW1wbGF0ZV9jYXBzCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIEdTVF9HTF9VUExPQUQKIEdTVF9HTF9VUExPQURfQ0FTVApAQCAtMTIxMywyOCArMTQwMCw4IEBACiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgotPEZJTEU+Z3N0Z2x1cGxvYWRtZXRhPC9GSUxFPgotPFRJVExFPkdzdEdMVXBsb2FkTWV0YTwvVElUTEU+Ci1Hc3RHTFVwbG9hZE1ldGEKLWdzdF9nbF91cGxvYWRfbWV0YV9uZXcKLWdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0Ci1nc3RfZ2xfdXBsb2FkX21ldGFfZ2V0X2Zvcm1hdAotZ3N0X2dsX3VwbG9hZF9tZXRhX2FkZF90b19idWZmZXIKLTxTVUJTRUNUSU9OIFN0YW5kYXJkPgotR1NUX0dMX1VQTE9BRF9NRVRBCi1HU1RfR0xfVVBMT0FEX01FVEFfQ0FTVAotR1NUX0dMX1VQTE9BRF9NRVRBX0NMQVNTCi1HU1RfR0xfVVBMT0FEX01FVEFfR0VUX0NMQVNTCi1nc3RfZ2xfdXBsb2FkX21ldGFfZ2V0X3R5cGUKLUdTVF9JU19HTF9VUExPQURfTUVUQQotR1NUX0lTX0dMX1VQTE9BRF9NRVRBX0NMQVNTCi1HU1RfVFlQRV9HTF9VUExPQURfTUVUQQotR3N0R0xVcGxvYWRNZXRhUHJpdmF0ZQotPC9TRUNUSU9OPgotCi08U0VDVElPTj4KIDxGSUxFPmdzdGdsdXRpbHM8L0ZJTEU+Ci08VElUTEU+VXRpbGl0aWVzPC9USVRMRT4KKzxUSVRMRT5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L1RJVExFPgogR0xDQgogR0xDQl9WMgogQ1JDQgpAQCAtMTI1Nyw3ICsxNDI0LDM4IEBACiBnc3RfZ2xfY2Fwc19yZXBsYWNlX2FsbF9jYXBzX2ZlYXR1cmVzCiBnc3RfZ2xfZW5zdXJlX2VsZW1lbnRfZGF0YQogZ3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemUKK2dzdF9nbF9nZXRfcGxhbmVfc3RhcnQKIGdzdF9nbF9ydW5fcXVlcnkKK2dzdF9nbF92YWx1ZV9nZXRfdGV4dHVyZV90YXJnZXRfbWFzaworZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldAorZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2sKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5nc3RnbHZpZXdjb252ZXJ0PC9GSUxFPgorPFRJVExFPkdzdEdMVmlld0NvbnZlcnQ8L1RJVExFPgorR3N0R0xTdGVyZW9Eb3dubWl4CitHc3RHTFZpZXdDb252ZXJ0CitHc3RHTFZpZXdDb252ZXJ0Q2xhc3MKK2dzdF9nbF92aWV3X2NvbnZlcnRfbmV3Citnc3RfZ2xfdmlld19jb252ZXJ0X3NldF9jYXBzCitnc3RfZ2xfdmlld19jb252ZXJ0X3RyYW5zZm9ybV9jYXBzCitnc3RfZ2xfdmlld19jb252ZXJ0X2ZpeGF0ZV9jYXBzCitnc3RfZ2xfdmlld19jb252ZXJ0X3N1Ym1pdF9pbnB1dF9idWZmZXIKK2dzdF9nbF92aWV3X2NvbnZlcnRfZ2V0X291dHB1dAorZ3N0X2dsX3ZpZXdfY29udmVydF9wZXJmb3JtCitnc3RfZ2xfdmlld19jb252ZXJ0X3Jlc2V0Citnc3RfZ2xfdmlld19jb252ZXJ0X3NldF9jb250ZXh0Cis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK2dzdF9nbF9zdGVyZW9fZG93bm1peF9tb2RlX2dldF90eXBlCitHU1RfSVNfR0xfVklFV19DT05WRVJUCitHU1RfSVNfR0xfVklFV19DT05WRVJUX0NMQVNTCitHU1RfR0xfVFlQRV9WSUVXX0NPTlZFUlQKK0dTVF9HTF9WSUVXX0NPTlZFUlQKK0dTVF9HTF9WSUVXX0NPTlZFUlRfQ0xBU1MKK0dTVF9HTF9WSUVXX0NPTlZFUlRfR0VUX0NMQVNTCitnc3RfZ2xfdmlld19jb252ZXJ0X2dldF90eXBlCitHc3RHTFZpZXdDb252ZXJ0UHJpdmF0ZQogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KQEAgLTEyNzQsNyArMTQ3Miw2IEBACiBHc3RHTFdpbmRvd0NsYXNzCiBnc3RfZ2xfd2luZG93X25ldwogZ3N0X2dsX3dpbmRvd19kcmF3Ci1nc3RfZ2xfd2luZG93X2RyYXdfdW5sb2NrZWQKIGdzdF9nbF93aW5kb3dfaXNfcnVubmluZwogZ3N0X2dsX3dpbmRvd19xdWl0CiBnc3RfZ2xfd2luZG93X3J1bgpAQCAtMTI5Miw4ICsxNDg5LDggQEAKIGdzdF9nbF93aW5kb3dfZ2V0X3N1cmZhY2VfZGltZW5zaW9ucwogZ3N0X2dsX3dpbmRvd19oYW5kbGVfZXZlbnRzCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KLUdTVF9HTF9JU19XSU5ET1cKLUdTVF9HTF9JU19XSU5ET1dfQ0xBU1MKK0dTVF9JU19HTF9XSU5ET1cKK0dTVF9JU19HTF9XSU5ET1dfQ0xBU1MKIEdTVF9HTF9UWVBFX1dJTkRPVwogR1NUX0dMX1dJTkRPVwogR1NUX0dMX1dJTkRPV19DTEFTUwpAQCAtMTMxNCw4ICsxNTExLDggQEAKIEdzdEdMV2luZG93QW5kcm9pZEVHTENsYXNzCiBnc3RfZ2xfd2luZG93X2FuZHJvaWRfZWdsX25ldwogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Ci1HU1RfR0xfSVNfV0lORE9XX0FORFJPSURfRUdMCi1HU1RfR0xfSVNfV0lORE9XX0FORFJPSURfRUdMX0NMQVNTCitHU1RfSVNfR0xfV0lORE9XX0FORFJPSURfRUdMCitHU1RfSVNfR0xfV0lORE9XX0FORFJPSURfRUdMX0NMQVNTCiBHU1RfR0xfVFlQRV9XSU5ET1dfQU5EUk9JRF9FR0wKIEdTVF9HTF9XSU5ET1dfQU5EUk9JRF9FR0wKIEdTVF9HTF9XSU5ET1dfQU5EUk9JRF9FR0xfQ0xBU1MKQEAgLTEzMzEsOCArMTUyOCw4IEBACiBnc3RfZ2xfd2luZG93X2NvY29hX25ldwogZ3N0X2dsX3dpbmRvd19jb2NvYV9jcmVhdGVfd2luZG93CiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KLUdTVF9HTF9JU19XSU5ET1dfQ09DT0EKLUdTVF9HTF9JU19XSU5ET1dfQ09DT0FfQ0xBU1MKK0dTVF9JU19HTF9XSU5ET1dfQ09DT0EKK0dTVF9JU19HTF9XSU5ET1dfQ09DT0FfQ0xBU1MKIEdTVF9HTF9UWVBFX1dJTkRPV19DT0NPQQogR1NUX0dMX1dJTkRPV19DT0NPQQogR1NUX0dMX1dJTkRPV19DT0NPQV9DTEFTUwpAQCAtMTM0OCw4ICsxNTQ1LDggQEAKIEdzdEdMV2luZG93RGlzcG1hbnhFR0xDbGFzcwogZ3N0X2dsX3dpbmRvd19kaXNwbWFueF9lZ2xfbmV3CiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KLUdTVF9HTF9JU19XSU5ET1dfRElTUE1BTlhfRUdMCi1HU1RfR0xfSVNfV0lORE9XX0RJU1BNQU5YX0VHTF9DTEFTUworR1NUX0lTX0dMX1dJTkRPV19ESVNQTUFOWF9FR0wKK0dTVF9JU19HTF9XSU5ET1dfRElTUE1BTlhfRUdMX0NMQVNTCiBHU1RfR0xfVFlQRV9XSU5ET1dfRElTUE1BTlhfRUdMCiBHU1RfR0xfV0lORE9XX0RJU1BNQU5YX0VHTAogR1NUX0dMX1dJTkRPV19ESVNQTUFOWF9FR0xfQ0xBU1MKQEAgLTEzNjQsOCArMTU2MSw4IEBACiBHc3RHTFdpbmRvd1dheWxhbmRFR0xDbGFzcwogZ3N0X2dsX3dpbmRvd193YXlsYW5kX2VnbF9uZXcKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgotR1NUX0dMX0lTX1dJTkRPV19XQVlMQU5EX0VHTAotR1NUX0dMX0lTX1dJTkRPV19XQVlMQU5EX0VHTF9DTEFTUworR1NUX0lTX0dMX1dJTkRPV19XQVlMQU5EX0VHTAorR1NUX0lTX0dMX1dJTkRPV19XQVlMQU5EX0VHTF9DTEFTUwogR1NUX0dMX1RZUEVfV0lORE9XX1dBWUxBTkRfRUdMCiBHU1RfR0xfV0lORE9XX1dBWUxBTkRfRUdMCiBHU1RfR0xfV0lORE9XX1dBWUxBTkRfRUdMX0NMQVNTCkBAIC0xMzgyLDggKzE1NzksOCBAQAogZ3N0X2dsX3dpbmRvd193aW4zMl9uZXcKIGdzdF9nbF93aW5kb3dfd2luMzJfY3JlYXRlX3dpbmRvdwogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Ci1HU1RfR0xfSVNfV0lORE9XX1dJTjMyCi1HU1RfR0xfSVNfV0lORE9XX1dJTjMyX0NMQVNTCitHU1RfSVNfR0xfV0lORE9XX1dJTjMyCitHU1RfSVNfR0xfV0lORE9XX1dJTjMyX0NMQVNTCiBHU1RfR0xfVFlQRV9XSU5ET1dfV0lOMzIKIEdTVF9HTF9XSU5ET1dfV0lOMzIKIEdTVF9HTF9XSU5ET1dfV0lOMzJfQ0xBU1MKQEAgLTE0MDIsOCArMTU5OSw4IEBACiBnc3RfZ2xfd2luZG93X3gxMV90cmFwX3hfZXJyb3JzCiBnc3RfZ2xfd2luZG93X3gxMV91bnRyYXBfeF9lcnJvcnMKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgotR1NUX0dMX0lTX1dJTkRPV19YMTEKLUdTVF9HTF9JU19XSU5ET1dfWDExX0NMQVNTCitHU1RfSVNfR0xfV0lORE9XX1gxMQorR1NUX0lTX0dMX1dJTkRPV19YMTFfQ0xBU1MKIEdTVF9HTF9UWVBFX1dJTkRPV19YMTEKIEdTVF9HTF9XSU5ET1dfWDExCiBHU1RfR0xfV0lORE9XX1gxMV9DTEFTUwpAQCAtMTQ4MSwzICsxNjc4LDI0OSBAQAogR1NUX1ZJREVPX0FHR1JFR0FUT1JfUEFEX0dFVF9DTEFTUwogZ3N0X3ZpZGVvYWdncmVnYXRvcl9wYWRfZ2V0X3R5cGUKIDwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5nc3RwbGF5ZXI8L0ZJTEU+CitHc3RQbGF5ZXIKKworZ3N0X3BsYXllcl9uZXcKKworZ3N0X3BsYXllcl9wbGF5Citnc3RfcGxheWVyX3BhdXNlCitnc3RfcGxheWVyX3N0b3AKKworZ3N0X3BsYXllcl9zZWVrCisKK2dzdF9wbGF5ZXJfc2V0X3VyaQorZ3N0X3BsYXllcl9nZXRfdXJpCisKK2dzdF9wbGF5ZXJfZ2V0X2R1cmF0aW9uCitnc3RfcGxheWVyX2dldF9wb3NpdGlvbgorCitnc3RfcGxheWVyX3NldF92b2x1bWUKK2dzdF9wbGF5ZXJfc2V0X211dGUKK2dzdF9wbGF5ZXJfZ2V0X3ZvbHVtZQorZ3N0X3BsYXllcl9nZXRfbXV0ZQorCitnc3RfcGxheWVyX2dldF9waXBlbGluZQorCitnc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWwKK2dzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbAorCitHc3RQbGF5ZXJTdGF0ZQorZ3N0X3BsYXllcl9zdGF0ZV9nZXRfbmFtZQorCitHU1RfUExBWUVSX0VSUk9SCitHc3RQbGF5ZXJFcnJvcgorZ3N0X3BsYXllcl9lcnJvcl9nZXRfbmFtZQorCitnc3RfcGxheWVyX2dldF9tZWRpYV9pbmZvCitnc3RfcGxheWVyX2dldF9hdWRpb19zdHJlYW1zCitnc3RfcGxheWVyX2dldF92aWRlb19zdHJlYW1zCitnc3RfcGxheWVyX2dldF9zdWJ0aXRsZV9zdHJlYW1zCisKK2dzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrCitnc3RfcGxheWVyX3NldF92aWRlb190cmFjaworZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2sKKworZ3N0X3BsYXllcl9nZXRfY3VycmVudF9hdWRpb190cmFjaworZ3N0X3BsYXllcl9nZXRfY3VycmVudF92aWRlb190cmFjaworZ3N0X3BsYXllcl9nZXRfY3VycmVudF9zdWJ0aXRsZV90cmFjaworCitnc3RfcGxheWVyX3NldF9hdWRpb190cmFja19lbmFibGVkCitnc3RfcGxheWVyX3NldF92aWRlb190cmFja19lbmFibGVkCitnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFja19lbmFibGVkCisKK2dzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3VyaQorZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfdXJpCisKK2dzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb24KK2dzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZAorZ3N0X3BsYXllcl9nZXRfY3VycmVudF92aXN1YWxpemF0aW9uCisKK0dzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUKK2dzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV90eXBlX2dldF9uYW1lCisKK2dzdF9wbGF5ZXJfaGFzX2NvbG9yX2JhbGFuY2UKK2dzdF9wbGF5ZXJfc2V0X2NvbG9yX2JhbGFuY2UKK2dzdF9wbGF5ZXJfZ2V0X2NvbG9yX2JhbGFuY2UKKworZ3N0X3BsYXllcl9nZXRfcmF0ZQorZ3N0X3BsYXllcl9zZXRfcmF0ZQorCitHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyCitHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlCisKK0dzdFBsYXllclZpZGVvUmVuZGVyZXIKK0dzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2UKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitHU1RfSVNfUExBWUVSCitHU1RfSVNfUExBWUVSX0NMQVNTCitHU1RfUExBWUVSCitHU1RfUExBWUVSX0NBU1QKK0dTVF9QTEFZRVJfQ0xBU1MKK0dTVF9QTEFZRVJfR0VUX0NMQVNTCitHU1RfVFlQRV9QTEFZRVIKK0dzdFBsYXllckNsYXNzCitnc3RfcGxheWVyX2dldF90eXBlCisKK2dzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9nZXRfdHlwZQorCitHU1RfVFlQRV9QTEFZRVJfRVJST1IKK2dzdF9wbGF5ZXJfZXJyb3JfcXVhcmsKK2dzdF9wbGF5ZXJfZXJyb3JfZ2V0X3R5cGUKKworR1NUX1RZUEVfUExBWUVSX1NUQVRFCitnc3RfcGxheWVyX3N0YXRlX2dldF90eXBlCisKK0dTVF9UWVBFX1BMQVlFUl9DT0xPUl9CQUxBTkNFX1RZUEUKK2dzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV90eXBlX2dldF90eXBlCisKK0dTVF9UWVBFX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUgorR1NUX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUgorR1NUX0lTX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUgorR1NUX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUl9HRVRfSU5URVJGQUNFCitnc3RfcGxheWVyX3NpZ25hbF9kaXNwYXRjaGVyX2dldF90eXBlCisKK0dTVF9UWVBFX1BMQVlFUl9WSURFT19SRU5ERVJFUgorR1NUX0lTX1BMQVlFUl9WSURFT19SRU5ERVJFUgorR1NUX1BMQVlFUl9WSURFT19SRU5ERVJFUgorR1NUX1BMQVlFUl9WSURFT19SRU5ERVJFUl9HRVRfSU5URVJGQUNFCitnc3RfcGxheWVyX3ZpZGVvX3JlbmRlcmVyX2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+Z3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXI8L0ZJTEU+Citnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX25ldworCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK0dTVF9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIKK0dTVF9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfQ0FTVAorR1NUX1BMQVlFUl9HX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9DTEFTUworR1NUX1BMQVlFUl9HX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9HRVRfQ0xBU1MKK0dTVF9JU19QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIKK0dTVF9JU19QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfQ0xBU1MKK0dTVF9UWVBFX1BMQVlFUl9HX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUgorCitnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+Z3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXI8L0ZJTEU+CitHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyCisKK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9uZXcKK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfd2luZG93X2hhbmRsZQorZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF93aW5kb3dfaGFuZGxlCisKK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9leHBvc2UKKworZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF9yZW5kZXJfcmVjdGFuZ2xlCitnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3JlbmRlcl9yZWN0YW5nbGUKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitHU1RfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIKK0dTVF9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9DQVNUCitHU1RfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVJfQ0xBU1MKK0dTVF9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9HRVRfQ0xBU1MKK0dTVF9JU19QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUgorR1NUX0lTX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX0NMQVNTCitHU1RfVFlQRV9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUgorCitnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3R5cGUKKworPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPmdzdHBsYXllci12aXN1YWxpemF0aW9uPC9GSUxFPgorR3N0UGxheWVyVmlzdWFsaXphdGlvbgorZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19nZXQKK2dzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZnJlZQorZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2NvcHkKK2dzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9mcmVlCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+Z3N0cGxheWVyLW1lZGlhaW5mbzwvRklMRT4KK0dzdFBsYXllck1lZGlhSW5mbworCitHc3RQbGF5ZXJTdHJlYW1JbmZvCitHc3RQbGF5ZXJBdWRpb0luZm8KK0dzdFBsYXllclZpZGVvSW5mbworR3N0UGxheWVyU3VidGl0bGVJbmZvCisKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdXJpCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2R1cmF0aW9uCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RpdGxlCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2NvbnRhaW5lcl9mb3JtYXQKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19pc19zZWVrYWJsZQorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9pbWFnZV9zYW1wbGUKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGFncworZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9zdHJlYW1fbGlzdAorCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9pbmRleAorZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY2FwcworZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFncworZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY29kZWMKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3N0cmVhbV90eXBlCisKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfYml0cmF0ZQorZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9jaGFubmVscworZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9sYW5ndWFnZQorZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9tYXhfYml0cmF0ZQorZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9zYW1wbGVfcmF0ZQorCitnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2JpdHJhdGUKK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfaGVpZ2h0Citnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3dpZHRoCitnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2ZyYW1lcmF0ZQorZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9tYXhfYml0cmF0ZQorZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9waXhlbF9hc3BlY3RfcmF0aW8KKworZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX2dldF9sYW5ndWFnZQorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitHU1RfUExBWUVSX01FRElBX0lORk8KK0dTVF9JU19QTEFZRVJfTUVESUFfSU5GTworR1NUX1BMQVlFUl9NRURJQV9JTkZPX0NMQVNTCitHU1RfSVNfUExBWUVSX01FRElBX0lORk9fQ0xBU1MKK0dTVF9UWVBFX1BMQVlFUl9NRURJQV9JTkZPCitHc3RQbGF5ZXJNZWRpYUluZm9DbGFzcworZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90eXBlCisKK0dTVF9QTEFZRVJfU1RSRUFNX0lORk8KK0dTVF9JU19QTEFZRVJfU1RSRUFNX0lORk8KK0dTVF9QTEFZRVJfU1RSRUFNX0lORk9fQ0xBU1MKK0dTVF9JU19QTEFZRVJfU1RSRUFNX0lORk9fQ0xBU1MKK0dTVF9UWVBFX1BMQVlFUl9TVFJFQU1fSU5GTworR3N0UGxheWVyU3RyZWFtSW5mb0NsYXNzCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF90eXBlCisKK0dTVF9QTEFZRVJfQVVESU9fSU5GTworR1NUX0lTX1BMQVlFUl9BVURJT19JTkZPCitHU1RfUExBWUVSX0FVRElPX0lORk9fQ0xBU1MKK0dTVF9JU19QTEFZRVJfQVVESU9fSU5GT19DTEFTUworR1NUX1RZUEVfUExBWUVSX0FVRElPX0lORk8KK0dzdFBsYXllckF1ZGlvSW5mb0NsYXNzCitnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X3R5cGUKKworR1NUX1BMQVlFUl9WSURFT19JTkZPCitHU1RfSVNfUExBWUVSX1ZJREVPX0lORk8KK0dTVF9QTEFZRVJfVklERU9fSU5GT19DTEFTUworR1NUX0lTX1BMQVlFUl9WSURFT19JTkZPX0NMQVNTCitHU1RfVFlQRV9QTEFZRVJfVklERU9fSU5GTworR3N0UGxheWVyVmlkZW9JbmZvQ2xhc3MKK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfdHlwZQorCitHU1RfSVNfUExBWUVSX1NVQlRJVExFX0lORk8KK0dTVF9QTEFZRVJfU1VCVElUTEVfSU5GTworR1NUX1BMQVlFUl9TVUJUSVRMRV9JTkZPX0NMQVNTCitHU1RfSVNfUExBWUVSX1NVQlRJVExFX0lORk9fQ0xBU1MKK0dTVF9UWVBFX1BMQVlFUl9TVUJUSVRMRV9JTkZPCitHc3RQbGF5ZXJTdWJ0aXRsZUluZm9DbGFzcworZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX2dldF90eXBlCis8L1NFQ1RJT04+CisKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlcyBiL2RvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlcwppbmRleCAyYmY4ODNlLi5mN2Y3NjFlIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMudHlwZXMKKysrIGIvZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLnR5cGVzCkBAIC01LDYgKzUsNyBAQAogI2luY2x1ZGUgPGdzdC9pbnNlcnRiaW4vZ3N0aW5zZXJ0YmluLmg+CiAjaW5jbHVkZSA8Z3N0L21wZWd0cy9tcGVndHMuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKyNpbmNsdWRlIDxnc3QvcGxheWVyL3BsYXllci5oPgogCiBnc3RfbXBlZ3RzX3NlY3Rpb25fZ2V0X3R5cGUKIGdzdF9tcGVndHNfc2VjdGlvbl90eXBlX2dldF90eXBlCkBAIC0yNiwxNyArMjcsMzQgQEAKIGdzdF9pbnNlcnRfYmluX2dldF90eXBlCiAKIAotZ3N0X2dsX2FsbG9jYXRvcl9nZXRfdHlwZQorZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0b3JfZ2V0X3R5cGUKK2dzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF90eXBlCitnc3RfZ2xfbWVtb3J5X3Bib19hbGxvY2F0b3JfZ2V0X3R5cGUKIGdzdF9nbF9iYXNlX2ZpbHRlcl9nZXRfdHlwZQogZ3N0X2dsX2J1ZmZlcl9wb29sX2dldF90eXBlCiBnc3RfZ2xfY29sb3JfY29udmVydF9nZXRfdHlwZQogZ3N0X2dsX2NvbnRleHRfZ2V0X3R5cGUKIGdzdF9nbF9kaXNwbGF5X2dldF90eXBlCi1nc3RfZ2xfZG93bmxvYWRfZ2V0X3R5cGUKIGdzdF9nbF9maWx0ZXJfZ2V0X3R5cGUKIGdzdF9nbF9mcmFtZWJ1ZmZlcl9nZXRfdHlwZQogZ3N0X2dsX3NoYWRlcl9nZXRfdHlwZQorZ3N0X2dsc2xfc3RhZ2VfZ2V0X3R5cGUKIGdzdF9nbF91cGxvYWRfZ2V0X3R5cGUKLWdzdF9nbF91cGxvYWRfbWV0YV9nZXRfdHlwZQorZ3N0X2dsX3ZpZXdfY29udmVydF9nZXRfdHlwZQogZ3N0X2dsX3dpbmRvd19nZXRfdHlwZQogCitnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X3R5cGUKK2dzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV90eXBlX2dldF90eXBlCitnc3RfcGxheWVyX2Vycm9yX2dldF90eXBlCitnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2dldF90eXBlCitnc3RfcGxheWVyX2dldF90eXBlCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3R5cGUKK2dzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZ2V0X3R5cGUKK2dzdF9wbGF5ZXJfc3RhdGVfZ2V0X3R5cGUKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3R5cGUKK2dzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19nZXRfdHlwZQorZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF90eXBlCitnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3R5cGUKK2dzdF9wbGF5ZXJfdmlkZW9fcmVuZGVyZXJfZ2V0X3R5cGUKK2dzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9nZXRfdHlwZQorCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCBiL2RvY3MvbGlicy9odG1sL0dzdEdMQmFzZUZpbHRlci5odG1sCmluZGV4IDhjYzQzMGIuLmVhNmZmNjEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL0dzdEdMQmFzZUZpbHRlci5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL0dzdEdMQmFzZUZpbHRlci5odG1sCkBAIC0zLDExICszLDExIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RHTEJhc2VGaWx0ZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RFR0xJbWFnZU1lbW9yeSI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9IkdzdEdMRmlsdGVyLmh0bWwiIHRpdGxlPSJHc3RHTEZpbHRlciI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyIj4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CiA8L2hlYWQ+CkBAIC0yMSwyMSArMjEsMjEgQEAKIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9IkdzdEdMRmlsdGVyLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KIDxhIG5hbWU9IkdzdEdMQmFzZUZpbHRlciI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KIDx0ZCB2YWxpZ249InRvcCI+CiA8aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9IkdzdEdMQmFzZUZpbHRlci50b3Bfb2ZfcGFnZSI+PC9hPkdzdEdMQmFzZUZpbHRlcjwvc3Bhbj48L2gyPgotPHA+R3N0R0xCYXNlRmlsdGVyPC9wPgorPHA+R3N0R0xCYXNlRmlsdGVyIOKAlCA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXItbGlicy9odG1sL0dzdEJhc2VUcmFuc2Zvcm0uaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJhc2VUcmFuc2Zvcm08L3NwYW4+PC9hPiBzdWJjbGFzcyBmb3IgdHJhbnNmb3JtaW4gT3BlbkdMIHJlc291cmNlczwvcD4KIDwvdGQ+CiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTEJhc2VGaWx0ZXIucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTEsNyArNTEsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTEJhc2VGaWx0ZXIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTgxLDYgKzgxLDEwIEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMQmFzZUZpbHRlci5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCYXNlRmlsdGVyLmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VGaWx0ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VGaWx0ZXI8L3NwYW4+PC9hPiBoYW5kbGVzIHRoZSBuaXR0eSBncml0dHkgZGV0YWlscyBvZiByZXRyaWV2aW5nIGFuIE9wZW5HTAorY29udGV4dC4gIEl0IGFsc28gcHJvdmlkZWQgc29tZSB3cmFwcGVycyBhcm91bmQgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyLWxpYnMvaHRtbC9Hc3RCYXNlVHJhbnNmb3JtLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCYXNlVHJhbnNmb3JtPC9zcGFuPjwvYT4ncworPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zdGFydCgpPC9jb2RlPiwgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zdG9wKCk8L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnNldF9jYXBzKCk8L2NvZGU+IHZpcnR1YWwgbWV0aG9kcyB0aGF0IGVuc3VyZSBhbiBPcGVuR0wgY29udGV4dAoraXMgYXZhaWxhYmxlIGFuZCBjdXJyZW50IGluIHRoZSBjYWxsaW5nIHRocmVhZC48L3A+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMQmFzZUZpbHRlci5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgpAQCAtOTEsMTEgKzk1LDkgQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdzdEdMQmFzZUZpbHRlci1zdHJ1Y3QiPjwvYT48aDM+R3N0R0xCYXNlRmlsdGVyPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0R0xCYXNlRmlsdGVyIEdzdEdMQmFzZUZpbHRlcjs8L3ByZT4KLTxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZUZpbHRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZUZpbHRlcjwvc3Bhbj48L2E+IGlzIGEgYmFzZSBjbGFzcyB0aGF0IHByb3ZpZGVzIHRoZSBsb2dpYyBvZiBnZXR0aW5nIHRoZQotR0wgY29udGV4dCBmcm9tIHRoZSBwaXBlbGluZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNC44LjIuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjQuOC4yLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTExNCwxMyArMTE2LDEyIEBACiAKICAgZ2Jvb2xlYW4gKCpnbF9zdGFydCkgICAgICAgICAgKEdzdEdMQmFzZUZpbHRlciAqZmlsdGVyKTsKICAgdm9pZCAgICAgKCpnbF9zdG9wKSAgICAgICAgICAgKEdzdEdMQmFzZUZpbHRlciAqZmlsdGVyKTsKLQotICBncG9pbnRlciBfcGFkZGluZ1tHU1RfUEFERElOR107CisgIGdib29sZWFuICgqZ2xfc2V0X2NhcHMpICAgICAgIChHc3RHTEJhc2VGaWx0ZXIgKmZpbHRlciwgR3N0Q2FwcyAqIGluY2FwcywgR3N0Q2FwcyAqIG91dGNhcHMpOwogfSBHc3RHTEJhc2VGaWx0ZXJDbGFzczsKIDwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC4zLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS40LjguMy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMjksMTMgKzEzMCwxMyBAQAogPHRib2R5PgogPHRyPgogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci1saWJzL2h0bWwvR3N0QmFzZVRyYW5zZm9ybS5odG1sI0dzdEJhc2VUcmFuc2Zvcm1DbGFzcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJhc2VUcmFuc2Zvcm1DbGFzczwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJhc2VGaWx0ZXJDbGFzcy5wYXJlbnQtY2xhc3MiPjwvYT5wYXJlbnRfY2xhc3M8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+cGFyZW50IGNsYXNzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR3N0R0xBUEkiIHRpdGxlPSJlbnVtIEdzdEdMQVBJIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBUEk8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlRmlsdGVyQ2xhc3Muc3VwcG9ydGVkLWdsLWFwaSI+PC9hPnN1cHBvcnRlZF9nbF9hcGk8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGxvZ2ljYWwtT1Igb2YgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR3N0R0xBUEkiIHRpdGxlPSJlbnVtIEdzdEdMQVBJIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBUEk8L3NwYW4+PC9hPidzIHN1cHBvcnRlZCBieSB0aGlzIGVsZW1lbnQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJhc2VGaWx0ZXJDbGFzcy5nbC1zdGFydCI+PC9hPmdsX3N0YXJ0PC9jb2RlPjwvZW0+wqAoKTwvcD48L3RkPgpAQCAtMTQ4LDkgKzE0OSwxMCBAQAogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQmFzZUZpbHRlckNsYXNzLi1wYWRkaW5nIj48L2E+X3BhZGRpbmc8L2NvZGU+PC9lbT5bR1NUX1BBRERJTkddOzwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlRmlsdGVyQ2xhc3MuZ2wtc2V0LWNhcHMiPjwvYT5nbF9zZXRfY2FwczwvY29kZT48L2VtPsKgKCk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+Y2FsbGVkIGluIHRoZSBHTCB0aHJlYWQgd2hlbiBjYXBzIGFyZSBzZXQgb24gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmZpbHRlcjwvY29kZT48L2VtPgorLjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CkBAIC0xNjYsNiArMTY4LDEwIEBACiA8cD5GbGFnczogUmVhZDwvcD4KIDwvZGl2PgogPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJHc3RHTEJhc2VGaWx0ZXIuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyLWxpYnMvaHRtbC9Hc3RCYXNlVHJhbnNmb3JtLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCYXNlVHJhbnNmb3JtPC9zcGFuPjwvYT48L3A+Cis8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KIDxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvR3N0R0xCdWZmZXJQb29sLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTEJ1ZmZlclBvb2wuaHRtbAppbmRleCA4NGE5NmYzLi45NWEzNzY1IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTEJ1ZmZlclBvb2wuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTEJ1ZmZlclBvb2wuaHRtbApAQCAtMywxMCArMywxMCBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xCdWZmZXJQb29sOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sIiB0aXRsZT0iR3N0R0xBUEkiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXIiPgogPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJHc3RHTENvbG9yQ29udmVydC5odG1sIiB0aXRsZT0iR3N0R0xDb2xvckNvbnZlcnQiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KQEAgLTIwLDcgKzIwLDcgQEAKIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJHc3RHTENvbG9yQ29udmVydC5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KQEAgLTI4LDQyICsyOCw2MCBAQAogPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiA8dGQgdmFsaWduPSJ0b3AiPgogPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJHc3RHTEJ1ZmZlclBvb2wudG9wX29mX3BhZ2UiPjwvYT5Hc3RHTEJ1ZmZlclBvb2w8L3NwYW4+PC9oMj4KLTxwPkdzdEdMQnVmZmVyUG9vbCDigJQgYnVmZmVyIHBvb2wgZm9yIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+IG9iamVjdHM8L3A+Cis8cD5Hc3RHTEJ1ZmZlclBvb2wg4oCUIGJ1ZmZlciBwb29sIGZvciA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPiBvYmplY3RzPC9wPgogPC90ZD4KIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMQnVmZmVyUG9vbC5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgogPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Cis8dGJvZHk+Cis8dHI+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgogPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyUG9vbC5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEJ1ZmZlclBvb2w8L3NwYW4+PC9hPsKgKgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwjZ3N0LWdsLWJ1ZmZlci1wb29sLW5ldyIgdGl0bGU9ImdzdF9nbF9idWZmZXJfcG9vbF9uZXfCoCgpIj5nc3RfZ2xfYnVmZmVyX3Bvb2xfbmV3PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KLTwvdHI+PC90Ym9keT4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI2dzdC1idWZmZXItcG9vbC1jb25maWctZ2V0LWdsLWFsbG9jYXRpb24tcGFyYW1zIiB0aXRsZT0iZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXPCoCgpIj5nc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF9nbF9hbGxvY2F0aW9uX3BhcmFtczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI2dzdC1idWZmZXItcG9vbC1jb25maWctc2V0LWdsLWFsbG9jYXRpb24tcGFyYW1zIiB0aXRsZT0iZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXPCoCgpIj5nc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9nbF9hbGxvY2F0aW9uX3BhcmFtczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMQnVmZmVyUG9vbC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgogPC9jb2xncm91cD4KIDx0Ym9keT4KIDx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbC1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xCdWZmZXJQb29sIj5Hc3RHTEJ1ZmZlclBvb2w8L2E+PC90ZD4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sLXN0cnVjdCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+R3N0R0xCdWZmZXJQb29sPC9hPjwvdGQ+CiA8L3RyPgogPHRyPgotPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sQ2xhc3MiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xCdWZmZXJQb29sQ2xhc3MiPkdzdEdMQnVmZmVyUG9vbENsYXNzPC9hPjwvdGQ+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbENsYXNzIiB0aXRsZT0iR3N0R0xCdWZmZXJQb29sQ2xhc3MiPkdzdEdMQnVmZmVyUG9vbENsYXNzPC9hPjwvdGQ+CiA8L3RyPgogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CkBAIC03OSw3ICs5Nyw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMQnVmZmVyUG9vbC5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Ci08cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyUG9vbDwvc3Bhbj48L2E+IGlzIGFuIG9iamVjdCB0aGF0IGFsbG9jYXRlcyBidWZmZXJzIHdpdGggPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+Cis8cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyUG9vbDwvc3Bhbj48L2E+IGlzIGFuIG9iamVjdCB0aGF0IGFsbG9jYXRlcyBidWZmZXJzIHdpdGggPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+CiA8cD5BIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyUG9vbDwvc3Bhbj48L2E+IGlzIGNyZWF0ZWQgd2l0aCA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwjZ3N0LWdsLWJ1ZmZlci1wb29sLW5ldyIgdGl0bGU9ImdzdF9nbF9idWZmZXJfcG9vbF9uZXfCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9idWZmZXJfcG9vbF9uZXcoKTwvY29kZT48L2E+PC9wPgogPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXJQb29sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCdWZmZXJQb29sPC9zcGFuPjwvYT4gaW1wbGVtZW50cyB0aGUgVmlkZW9NZXRhIGJ1ZmZlciBwb29sIG9wdGlvbiAKIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1Hc3RWaWRlb1Bvb2wuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLVZJREVPLU1FVEE6Q0FQUyI+PHNwYW4gY2xhc3M9InR5cGUiPkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fVklERU9fTUVUQTwvc3Bhbj48L2E+PC9wPgpAQCAtOTEsOCArMTA5LDggQEAKIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXJQb29sLmh0bWwiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0QnVmZmVyUG9vbDwvc3Bhbj48L2E+wqAqCiBnc3RfZ2xfYnVmZmVyX3Bvb2xfbmV3ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMy43LjIuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjYuNy4yLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDYsMzEgKzEyNCw5MSBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMy43LjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KLTxwPiBhIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlclBvb2wuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlclBvb2w8L3NwYW4+PC9hPiB0aGF0IGFsbG9jYXRlcyBidWZmZXJzIHdpdGggPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+Cis8YSBuYW1lPSJpZC0xLjIuOS42LjcuMi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyUG9vbC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QnVmZmVyUG9vbDwvc3Bhbj48L2E+IHRoYXQgYWxsb2NhdGVzIGJ1ZmZlcnMgd2l0aCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtYnVmZmVyLXBvb2wtY29uZmlnLWdldC1nbC1hbGxvY2F0aW9uLXBhcmFtcyI+PC9hPjxoMz5nc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF9nbF9hbGxvY2F0aW9uX3BhcmFtc8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+wqAqCitnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF9nbF9hbGxvY2F0aW9uX3BhcmFtcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0U3RydWN0dXJlLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RTdHJ1Y3R1cmU8L3NwYW4+PC9hPiAqY29uZmlnPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjYuNy4zLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb25maWc8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIGJ1ZmZlciBwb29sIGNvbmZpZzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjYuNy4zLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIGN1cnJlbnRseSBzZXQgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiBvciA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPi4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWJ1ZmZlci1wb29sLWNvbmZpZy1zZXQtZ2wtYWxsb2NhdGlvbi1wYXJhbXMiPjwvYT48aDM+Z3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9nbF9hbGxvY2F0aW9uX3BhcmFtcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0U3RydWN0dXJlLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RTdHJ1Y3R1cmU8L3NwYW4+PC9hPiAqY29uZmlnPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqcGFyYW1zPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlNldHMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnBhcmFtczwvY29kZT48L2VtPgorIG9uIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25maWc8L2NvZGU+PC9lbT4KKzwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjYuNy40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbmZpZzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgYnVmZmVyIHBvb2wgY29uZmlnPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBhcmFtczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4uIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMQnVmZmVyUG9vbC5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0R0xCdWZmZXJQb29sLXN0cnVjdCI+PC9hPjxoMz5zdHJ1Y3QgR3N0R0xCdWZmZXJQb29sPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0R0xCdWZmZXJQb29sOzwvcHJlPgorPGEgbmFtZT0iR3N0R0xCdWZmZXJQb29sLXN0cnVjdCI+PC9hPjxoMz5Hc3RHTEJ1ZmZlclBvb2w8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RHTEJ1ZmZlclBvb2wgR3N0R0xCdWZmZXJQb29sOzwvcHJlPgogPHA+T3BhcXVlIEdzdEdMQnVmZmVyUG9vbCBzdHJ1Y3Q8L3A+CiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEdMQnVmZmVyUG9vbENsYXNzIj48L2E+PGgzPnN0cnVjdCBHc3RHTEJ1ZmZlclBvb2xDbGFzczwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEdMQnVmZmVyUG9vbENsYXNzIHsKKzxhIG5hbWU9IkdzdEdMQnVmZmVyUG9vbENsYXNzIj48L2E+PGgzPkdzdEdMQnVmZmVyUG9vbENsYXNzPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCB7CiAgIEdzdEJ1ZmZlclBvb2xDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OworfSBHc3RHTEJ1ZmZlclBvb2xDbGFzczsKIDwvcHJlPgotPHA+VGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2xDbGFzcyIgdGl0bGU9InN0cnVjdCBHc3RHTEJ1ZmZlclBvb2xDbGFzcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyUG9vbENsYXNzPC9zcGFuPjwvYT4gc3RydWN0dXJlIGNvbnRhaW5zIG9ubHkgcHJpdmF0ZSBkYXRhPC9wPgorPHA+VGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2xDbGFzcyIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbENsYXNzIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCdWZmZXJQb29sQ2xhc3M8L3NwYW4+PC9hPiBzdHJ1Y3R1cmUgY29udGFpbnMgb25seSBwcml2YXRlIGRhdGE8L3A+CiA8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xCdWZmZXJQb29sLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KLTxwPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlclBvb2wuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlclBvb2w8L3NwYW4+PC9hPiwgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+Cis8cD48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXJQb29sLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXJQb29sPC9zcGFuPjwvYT4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPgogPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTENvbG9yQ29udmVydC5odG1sIGIvZG9jcy9saWJzL2h0bWwvR3N0R0xDb2xvckNvbnZlcnQuaHRtbAppbmRleCA5ZmQ2YWQwLi45MDgyNjJiIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTENvbG9yQ29udmVydC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL0dzdEdMQ29sb3JDb252ZXJ0Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RHTENvbG9yQ29udmVydDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xDb2xvckNvbnZlcnQuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTY2LDYgKzY2LDIyIEBACiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RDYXBzPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwjZ3N0LWdsLWNvbG9yLWNvbnZlcnQtZml4YXRlLWNhcHMiIHRpdGxlPSJnc3RfZ2xfY29sb3JfY29udmVydF9maXhhdGVfY2Fwc8KgKCkiPmdzdF9nbF9jb2xvcl9jb252ZXJ0X2ZpeGF0ZV9jYXBzPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwjZ3N0LWdsLWNvbG9yLWNvbnZlcnQtZGVjaWRlLWFsbG9jYXRpb24iIHRpdGxlPSJnc3RfZ2xfY29sb3JfY29udmVydF9kZWNpZGVfYWxsb2NhdGlvbsKgKCkiPmdzdF9nbF9jb2xvcl9jb252ZXJ0X2RlY2lkZV9hbGxvY2F0aW9uPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgogPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyLmh0bWwiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0QnVmZmVyPC9zcGFuPjwvYT7CoCoKIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgpAQCAtNzcsNyArOTMsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTENvbG9yQ29udmVydC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTE1LDggKzEzMSw2IEBACiA8cD48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCIgdGl0bGU9IkdzdEdMQ29sb3JDb252ZXJ0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb2xvckNvbnZlcnQ8L3NwYW4+PC9hPiBpcyBhbiBvYmplY3QgdGhhdCBjb252ZXJ0cyBiZXR3ZWVuIGNvbG9yIHNwYWNlcyBhbmQvb3IKIGZvcm1hdHMgdXNpbmcgT3BlbkdMIFNoYWRlcnMuPC9wPgogPHA+QSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCIgdGl0bGU9IkdzdEdMQ29sb3JDb252ZXJ0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb2xvckNvbnZlcnQ8L3NwYW4+PC9hPiBjYW4gYmUgY3JlYXRlZCB3aXRoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LW5ldyIgdGl0bGU9ImdzdF9nbF9jb2xvcl9jb252ZXJ0X25ld8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX2NvbG9yX2NvbnZlcnRfbmV3KCk8L2NvZGU+PC9hPi48L3A+Ci08cD5Gb3IgaGFuZGxpbmcgc3RyaWRlIHNjYWxpbmcgaW4gdGhlIHNoYWRlciwgc2VlCi08Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9jb2xvcl9jb252ZXJ0X3NldF90ZXh0dXJlX3NjYWxpbmcoKTwvY29kZT4uPC9wPgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTENvbG9yQ29udmVydC5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgpAQCAtMTI1LDggKzEzOSw4IEBACiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbG9yQ29udmVydCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTENvbG9yQ29udmVydDwvc3Bhbj48L2E+wqAqCiBnc3RfZ2xfY29sb3JfY29udmVydF9uZXcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS40LjcuMi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuNy43LjIuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE0MCw3ICsxNTQsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNC43LjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjcuNy4yLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gYSBuZXcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbG9yQ29udmVydCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29sb3JDb252ZXJ0PC9zcGFuPjwvYT4gb2JqZWN0PC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTE1NCw4ICsxNjgsOCBAQAogPHA+SW5pdGlhbGl6ZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnZlcnQ8L2NvZGU+PC9lbT4KICB3aXRoIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgY29udmVyc2lvbi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS40LjcuMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuNy43LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE5Miw2ICsyMDYsMjMgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWNvbG9yLWNvbnZlcnQtZml4YXRlLWNhcHMiPjwvYT48aDM+Z3N0X2dsX2NvbG9yX2NvbnZlcnRfZml4YXRlX2NhcHPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDYXBzLmh0bWwiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0Q2Fwczwvc3Bhbj48L2E+wqAqCitnc3RfZ2xfY29sb3JfY29udmVydF9maXhhdGVfY2FwcyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb252ZXJ0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RQYWQuaHRtbCNHc3RQYWREaXJlY3Rpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQYWREaXJlY3Rpb248L3NwYW4+PC9hPiBkaXJlY3Rpb248L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdENhcHM8L3NwYW4+PC9hPiAqY2FwczwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0Q2Fwczwvc3Bhbj48L2E+ICpvdGhlcjwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1jb2xvci1jb252ZXJ0LWRlY2lkZS1hbGxvY2F0aW9uIj48L2E+PGgzPmdzdF9nbF9jb2xvcl9jb252ZXJ0X2RlY2lkZV9hbGxvY2F0aW9uwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF9jb2xvcl9jb252ZXJ0X2RlY2lkZV9hbGxvY2F0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCIgdGl0bGU9IkdzdEdMQ29sb3JDb252ZXJ0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb2xvckNvbnZlcnQ8L3NwYW4+PC9hPiAqY29udmVydDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFF1ZXJ5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RRdWVyeTwvc3Bhbj48L2E+ICpxdWVyeTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9ImdzdC1nbC1jb2xvci1jb252ZXJ0LXBlcmZvcm0iPjwvYT48aDM+Z3N0X2dsX2NvbG9yX2NvbnZlcnRfcGVyZm9ybcKgKCk8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlci5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+wqAqCiBnc3RfZ2xfY29sb3JfY29udmVydF9wZXJmb3JtICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbG9yQ29udmVydCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29sb3JDb252ZXJ0PC9zcGFuPjwvYT4gKmNvbnZlcnQ8L2NvZGU+PC9lbT4sCkBAIC0yMDAsOCArMjMxLDggQEAKICB1c2luZyB0aGUgZm9ybWF0cyBzcGVjaWZpZWQgYnkgdGhlCiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPnMgcGFzc2VkIHRvIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LXNldC1jYXBzIiB0aXRsZT0iZ3N0X2dsX2NvbG9yX2NvbnZlcnRfc2V0X2NhcHPCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9jb2xvcl9jb252ZXJ0X3NldF9jYXBzKCk8L2NvZGU+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjQuNy41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS43LjcuNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjIyLDcgKzI1Myw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS40LjcuNS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuNy43LjcuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBhIGNvbnZlcnRlZCA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+IG9yIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+JTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC0yNTgsNyArMjg5LDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xDb2xvckNvbnZlcnQuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgotPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVXBsb2FkPC9zcGFuPjwvYT4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiIHRpdGxlPSJHc3RHTERvd25sb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEb3dubG9hZDwvc3Bhbj48L2E+LCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD4KKzxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZDwvc3Bhbj48L2E+LCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPiwgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+PC9wPgogPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTENvbnRleHQuaHRtbCBiL2RvY3MvbGlicy9odG1sL0dzdEdMQ29udGV4dC5odG1sCmluZGV4IDQ2Mzc3ZDIuLmJjYTY5ZDEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL0dzdEdMQ29udGV4dC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL0dzdEdMQ29udGV4dC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xDb250ZXh0OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJHc3RHTENvbG9yQ29udmVydC5odG1sIiB0aXRsZT0iR3N0R0xDb2xvckNvbnZlcnQiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xDb250ZXh0LmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC0xMTgsNiArMTE4LDE0IEBACiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ncG9pbnRlcjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtcHJvYy1hZGRyZXNzLXdpdGgtcGxhdGZvcm0iIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9nZXRfcHJvY19hZGRyZXNzX3dpdGhfcGxhdGZvcm3CoCgpIj5nc3RfZ2xfY29udGV4dF9nZXRfcHJvY19hZGRyZXNzX3dpdGhfcGxhdGZvcm08L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMV2luZG93PC9zcGFuPjwvYT7CoCoKIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgpAQCAtMjA5LDYgKzIxNywyMiBAQAogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWlzLXNoYXJlZCIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2lzX3NoYXJlZMKgKCkiPmdzdF9nbF9jb250ZXh0X2lzX3NoYXJlZDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LXNldC1zaGFyZWQtd2l0aCIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X3NldF9zaGFyZWRfd2l0aMKgKCkiPmdzdF9nbF9jb250ZXh0X3NldF9zaGFyZWRfd2l0aDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1jaGVjay1mZWF0dXJlIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfY2hlY2tfZmVhdHVyZcKgKCkiPmdzdF9nbF9jb250ZXh0X2NoZWNrX2ZlYXR1cmU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KQEAgLTI0OSw3ICsyNzMsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTENvbnRleHQub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTMwMyw4ICszMjcsOCBAQAogIGFuZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZGF0YTwvY29kZT48L2VtPgogPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMzMsOCArMzU3LDggQEAKIDxwPkNyZWF0ZSBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiB3aXRoIHRoZSBzcGVjaWZpZWQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmRpc3BsYXk8L2NvZGU+PC9lbT4KIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzQ4LDcgKzM3Miw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuNS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD4KIDwvZGl2PgogPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS40PC9wPgpAQCAtMzYzLDggKzM4Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMQVBJIiB0aXRsZT0iZW51bSBHc3RHTEFQSSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQVBJPC9zcGFuPjwvYT4gYXZhaWxhYmxlX2FwaXM8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+V3JhcHMgYW4gZXhpc3RpbmcgT3BlbkdMIGNvbnRleHQgaW50byBhIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy42LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzk3LDcgKzQyMSw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuNi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjYuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBhIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+IHdyYXBwaW5nIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5oYW5kbGU8L2NvZGU+PC9lbT4KIDwvcD4KIDwvZGl2PgpAQCAtNDE5LDggKzQ0Myw4IEBACiBvZiB0aGUgZXJyb3IgYW5kIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gd2lsbCBiZSByZXR1cm5lZC48L3A+CiA8cD5TaG91bGQgb25seSBiZSBjYWxsZWQgb25jZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuNy43Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjcuNyI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ0Niw3ICs0NzAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjcuOCI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy43LjgiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gd2hldGhlciB0aGUgY29udGV4dCBjb3VsZCBzdWNjZXNzZnVsbHkgYmUgY3JlYXRlZDwvcD4KIDwvZGl2PgogPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS40PC9wPgpAQCAtNDYwLDggKzQ4NCw4IEBACiA8cD5TaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWNyZWF0ZSIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2NyZWF0ZcKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX2NvbnRleHRfY3JlYXRlKCk8L2NvZGU+PC9hPiBoYXMgYmVlbiBzdWNjZXNzZnVsbHkKIGNhbGxlZCBmb3IgdGhpcyBjb250ZXh0LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy44LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuOC42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDg3LDggKzUxMSw4IEBACiA8cD5JbiBPcGVuR0wgdGVybXMsIGNhbGxzIGVnbE1ha2VDdXJyZW50IG9yIHNpbWlsYXIgd2l0aCB0aGlzIGNvbnRleHQgYW5kIHRoZQogY3VycmVudGx5IHNldCB3aW5kb3cuICBTZWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LXNldC13aW5kb3ciIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9zZXRfd2luZG93wqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfY29udGV4dF9zZXRfd2luZG93KCk8L2NvZGU+PC9hPiBmb3IgZGV0YWlscy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuOS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjkuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTUwOSw3ICs1MzMsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjkuNyI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy45LjciPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gV2hldGhlciB0aGUgYWN0aXZhdGlvbiBzdWNjZWVkZWQ8L3A+CiA8L2Rpdj4KIDxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuNDwvcD4KQEAgLTUzNCw4ICs1NTgsOCBAQAogPHA+UGxhdGZvcm0gc3BlY2ZpYyBmdW5jdGlvbnMgKG5hbWVzIHN0YXJ0aW5nICdlZ2wnLCAnZ2xYJywgJ3dnbCcsIGV0YykgY2FuIGFsc28KIGJlIHJldHJpZXZlZCB1c2luZyB0aGlzIG1ldGhvZC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTEuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4xMS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTU2LDE5ICs1ODAsMjggQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4xMS43Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjExLjciPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gYSBmdW5jdGlvbiBwb2ludGVyIG9yIE5VTEw8L3A+CiA8L2Rpdj4KIDxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuNDwvcD4KIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWNvbnRleHQtZ2V0LXByb2MtYWRkcmVzcy13aXRoLXBsYXRmb3JtIj48L2E+PGgzPmdzdF9nbF9jb250ZXh0X2dldF9wcm9jX2FkZHJlc3Nfd2l0aF9wbGF0Zm9ybcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ncG9pbnRlcjwvc3Bhbj48L2E+Citnc3RfZ2xfY29udGV4dF9nZXRfcHJvY19hZGRyZXNzX3dpdGhfcGxhdGZvcm0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMUGxhdGZvcm0iIHRpdGxlPSJlbnVtIEdzdEdMUGxhdGZvcm0iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFBsYXRmb3JtPC9zcGFuPjwvYT4gY29udGV4dF90eXBlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR3N0R0xBUEkiIHRpdGxlPSJlbnVtIEdzdEdMQVBJIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBUEk8L3NwYW4+PC9hPiBnbF9hcGk8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgogPGEgbmFtZT0iZ3N0LWdsLWNvbnRleHQtZ2V0LXdpbmRvdyI+PC9hPjxoMz5nc3RfZ2xfY29udGV4dF9nZXRfd2luZG93wqAoKTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvdyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFdpbmRvdzwvc3Bhbj48L2E+wqAqCiBnc3RfZ2xfY29udGV4dF9nZXRfd2luZG93ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjEyLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMTMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU4Miw3ICs2MTUsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjEyLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMTMuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiB0aGUgY3VycmVudGx5IHNldCB3aW5kb3c8L3A+CiA8L2Rpdj4KIDxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuNDwvcD4KQEAgLTYwMCw4ICs2MzMsOCBAQAogIGlzIG5vdAogYWxyZWFkeSBydW5uaW5nLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4xMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjE0LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02MjIsNyArNjU1LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4xMy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjE0LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gV2hldGhlciB0aGUgd2luZG93IHdhcyBzdWNjZXNzZnVsbHkgdXBkYXRlZDwvcD4KIDwvZGl2PgogPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS40PC9wPgpAQCAtNjQwLDggKzY3Myw4IEBACiA8L3A+CiA8cD5NVC1zYWZlPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjE0LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMTUuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTY3NSw4ICs3MDgsOCBAQAogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTERpc3BsYXk8L3NwYW4+PC9hPsKgKgogZ3N0X2dsX2NvbnRleHRfZ2V0X2Rpc3BsYXkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTUuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4xNi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjkwLDcgKzcyMyw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTUuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4xNi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwiIHRpdGxlPSJHc3RHTERpc3BsYXkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERpc3BsYXk8L3NwYW4+PC9hPiBhc3NvY2lhdGVkIHdpdGggdGhpcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29udGV4dDwvY29kZT48L2VtPgogPC9wPgogPC9kaXY+CkBAIC03MDUsOCArNzM4LDggQEAKIDxwPlRoZSBjdXJyZW50bHkgYXZhaWxhYmxlIEFQSSBtYXkgYmUgbGltaXRlZCBieSB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEaXNwbGF5PC9zcGFuPjwvYT4gaW4gdXNlIGFuZC9vcgogdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFdpbmRvdzwvc3Bhbj48L2E+IGNob3Nlbi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTYuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4xNy42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzIwLDcgKzc1Myw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTYuNyI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4xNy43Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHRoZSBhdmFpbGFibGUgT3BlbkdMIGFwaTwvcD4KIDwvZGl2PgogPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS40PC9wPgpAQCAtNzMzLDggKzc2Niw4IEBACiA8cD5HZXRzIHRoZSBiYWNraW5nIE9wZW5HTCBjb250ZXh0IHVzZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4xOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzQ4LDcgKzc4MSw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTcuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4xOC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IFRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBiYWNraW5nIE9wZW5HTCBjb250ZXh0PC9wPgogPC9kaXY+CiA8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjQ8L3A+CkBAIC03NjEsOCArNzk0LDggQEAKIDxwPkdldHMgdGhlIE9wZW5HTCBwbGF0Zm9ybSB0aGF0IHVzZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4xOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzc2LDcgKzgwOSw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTguNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4xOS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IFRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBiYWNraW5nIE9wZW5HTCBjb250ZXh0PC9wPgogPC9kaXY+CiA8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjQ8L3A+CkBAIC03ODUsMTAgKzgxOCwxMCBAQAogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgogPGEgbmFtZT0iZ3N0LWdsLWNvbnRleHQtZ2V0LWN1cnJlbnQtZ2wtY29udGV4dCI+PC9hPjxoMz5nc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudF9nbF9jb250ZXh0wqAoKTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50cHRyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50cHRyPC9zcGFuPjwvYT4KLWdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50X2dsX2NvbnRleHQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHc3RHTFBsYXRmb3JtIiB0aXRsZT0iZW51bSBHc3RHTFBsYXRmb3JtIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xQbGF0Zm9ybTwvc3Bhbj48L2E+IHBsYXRmb3JtPC9jb2RlPjwvZW0+KTs8L3ByZT4KK2dzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50X2dsX2NvbnRleHQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHc3RHTFBsYXRmb3JtIiB0aXRsZT0iZW51bSBHc3RHTFBsYXRmb3JtIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xQbGF0Zm9ybTwvc3Bhbj48L2E+IGNvbnRleHRfdHlwZTwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTkuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yMC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtODAyLDcgKzgzNSw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTkuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yMC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IFRoZSBPcGVuR0wgY29udGV4dCBoYW5kbGUgY3VycmVudCBpbiB0aGUgY2FsbGluZyB0aHJlYWQgb3IgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNOVUxMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5OVUxMPC9jb2RlPjwvYT48L3A+CiA8L2Rpdj4KIDxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuNjwvcD4KQEAgLTgxOSw4ICs4NTIsOCBAQAogIGFyZW4ndCBtb2RpZmllZCBhbmQgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR1NULUdMLUFQSS1OT05FOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HU1RfR0xfQVBJX05PTkU8L2NvZGU+PC9hPiBpcwogcmV0dXJuZWQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjIwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMjEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg0Niw3ICs4NzksNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjIwLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMjEuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBUaGUgdmVyc2lvbiBzdXBwb3J0ZWQgYnkgdGhlIE9wZW5HTCBjb250ZXh0IGN1cnJlbnQgaW4gdGhlIGNhbGxpbmcKIHRocmVhZCBvciA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHU1QtR0wtQVBJLU5PTkU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdTVF9HTF9BUElfTk9ORTwvY29kZT48L2E+PC9wPgogPC9kaXY+CkBAIC04NTgsOCArODkxLDggQEAKIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVRocmVhZHMuaHRtbCNHVGhyZWFkIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdUaHJlYWQ8L3NwYW4+PC9hPsKgKgogZ3N0X2dsX2NvbnRleHRfZ2V0X3RocmVhZCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4yMS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjIyLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC04NzMsNyArOTA2LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4yMS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjIyLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gVGhlIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItVGhyZWFkcy5odG1sI0dUaHJlYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HVGhyZWFkPC9zcGFuPjwvYT4sIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+CiBpcyBjdXJyZW50IGluIG9yIE5VTEwuIDwvcD4KIDxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgpAQCAtODg4LDggKzkyMSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqb3RoZXJfY29udGV4dDwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5Ob3RlOiBUaGlzIHdpbGwgYWx3YXlzIGZhaWwgZm9yIHR3byB3cmFwcGVkIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+J3M8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTEwLDcgKzk0Myw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMjIuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yMy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHdoZXRoZXIgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KIGFuZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+b3RoZXJfY29udGV4dDwvY29kZT48L2VtPgogYXJlIGFibGUgdG8gc2hhcmUgT3BlbkdMCkBAIC05MjAsNiArOTUzLDY1IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1jb250ZXh0LWlzLXNoYXJlZCI+PC9hPjxoMz5nc3RfZ2xfY29udGV4dF9pc19zaGFyZWTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX2NvbnRleHRfaXNfc2hhcmVkICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjI0LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yNC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IFdoZXRoZXIgdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+IGhhcyBiZWVuIHNoYXJlZCB3aXRoIGFub3RoZXIgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWNvbnRleHQtc2V0LXNoYXJlZC13aXRoIj48L2E+PGgzPmdzdF9nbF9jb250ZXh0X3NldF9zaGFyZWRfd2l0aMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9jb250ZXh0X3NldF9zaGFyZWRfd2l0aCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKnNoYXJlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPldpbGwgaW50ZXJuYWxseSBzZXQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KKyBhcyBzaGFyZWQgd2l0aCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhcmU8L2NvZGU+PC9lbT4KKzwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSB3cmFwcGVkIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNoYXJlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YW5vdGhlciA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJnc3QtZ2wtY29udGV4dC1jaGVjay1mZWF0dXJlIj48L2E+PGgzPmdzdF9nbF9jb250ZXh0X2NoZWNrX2ZlYXR1cmXCoCgpPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgogZ3N0X2dsX2NvbnRleHRfY2hlY2tfZmVhdHVyZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LApAQCAtOTI3LDggKzEwMTksOCBAQAogPHA+U29tZSBmZWF0dXJlcyByZXF1aXJlIHRoYXQgdGhlIGNvbnRleHQgYmUgY3JlYXRlZCBiZWZvcmUgaXQgaXMgcG9zc2libGUgdG8KIGRldGVybWluZSB0aGVpciBleGlzdGVuY2UgYW5kIHNvIHdpbGwgZmFpbCBpZiB0aGF0IGlzIG5vdCB0aGUgY2FzZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTQ5LDcgKzEwNDEsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjIzLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMjYuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBXaGV0aGVyIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5mZWF0dXJlPC9jb2RlPjwvZW0+CiBpcyBzdXBwb3J0ZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KIDwvcD4KQEAgLTk2NSw4ICsxMDU3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBtYWo8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gbWluPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4yNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjI3LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC05OTcsNyArMTA4OSw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMjQuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yNy41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHdoZXRoZXIgT3BlbkdMIGNvbnRleHQgaW1wbGVtZW50cyB0aGUgcmVxdWlyZWQgYXBpIGFuZCBzcGVjaWZpZWQKIHZlcnNpb24uPC9wPgogPC9kaXY+CkBAIC0xMDE2LDggKzExMDgsOCBAQAogPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTA1NSw4ICsxMTQ3LDggQEAKIGNvbnRleHQgaW4gdGhlIGN1cnJlbnQgdGhyZWFkLiAgVHlwaWNhbGx5IHVzZWQgd2l0aCB3cmFwcGVkIGNvbnRleHRzIHRvCiBhbGxvdyB3cmFwcGVkIGNvbnRleHRzIHRvIGJlIHVzZWQgYXMgcmVndWxhciA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPidzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4yNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjI5LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDc4LDcgKzExNzAsNyBAQAogZ3N0X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+dm9pZDwvc3Bhbj48L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2VlIGFsc28gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWFjdGl2YXRlIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfYWN0aXZhdGXCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9jb250ZXh0X2FjdGl2YXRlKCk8L2NvZGU+PC9hPi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMjcuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4zMC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiBhY3RpdmUgaW4gdGhlIGN1cnJlbnQgdGhyZWFkIG9yIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+PC9wPgogPC9kaXY+CiA8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjY8L3A+CkBAIC0xMDg5LDggKzExODEsOCBAQAogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgogPGEgbmFtZT0iR3N0R0xDb250ZXh0RXJyb3IiPjwvYT48aDM+ZW51bSBHc3RHTENvbnRleHRFcnJvcjwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjguMi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC44LjIuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTERpc3BsYXkuaHRtbCBiL2RvY3MvbGlicy9odG1sL0dzdEdMRGlzcGxheS5odG1sCmluZGV4IDNjYzkyZjIuLjZkNGJjMzkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL0dzdEdMRGlzcGxheS5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL0dzdEdMRGlzcGxheS5odG1sCkBAIC0zLDExICszLDExIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RHTERpc3BsYXk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dFdHTC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0V0dMIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RFR0xJbWFnZU1lbW9yeSI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPC9oZWFkPgpAQCAtMjIsNyArMjIsNyBAQAogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dFdHTC5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgogPGEgbmFtZT0iR3N0R0xEaXNwbGF5Ij48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMRGlzcGxheS5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtMTAyLDYgKzEwMiwxNCBAQAogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sI2dzdC1nbC1kaXNwbGF5LWNyZWF0ZS1jb250ZXh0IiB0aXRsZT0iZ3N0X2dsX2Rpc3BsYXlfY3JlYXRlX2NvbnRleHTCoCgpIj5nc3RfZ2xfZGlzcGxheV9jcmVhdGVfY29udGV4dDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCNnc3QtY29udGV4dC1nZXQtZ2wtZGlzcGxheSIgdGl0bGU9ImdzdF9jb250ZXh0X2dldF9nbF9kaXNwbGF5wqAoKSI+Z3N0X2NvbnRleHRfZ2V0X2dsX2Rpc3BsYXk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KQEAgLTExOCw3ICsxMjYsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTERpc3BsYXkuc2lnbmFscyI+PC9hPjxoMj5TaWduYWxzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJzaWduYWxzX3JldHVybiI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InNpZ25hbHNfbmFtZSI+CkBAIC0xMzQsNyArMTQyLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xEaXNwbGF5Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xOTMsNyArMjAxLDcgQEAKIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwiIHRpdGxlPSJHc3RHTERpc3BsYXkiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xEaXNwbGF5PC9zcGFuPjwvYT7CoCoKIGdzdF9nbF9kaXNwbGF5X25ldyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj52b2lkPC9zcGFuPjwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xMS44LjIuNCI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjE0LjguMi40Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IGEgbmV3IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRGlzcGxheTwvc3Bhbj48L2E+LiA8L3A+CiA8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJGcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBmdWxsPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KIDwvZGl2PgpAQCAtMjA1LDggKzIxMyw4IEBACiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sI0dzdEdMRGlzcGxheVR5cGUiIHRpdGxlPSJlbnVtIEdzdEdMRGlzcGxheVR5cGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xEaXNwbGF5VHlwZTwvc3Bhbj48L2E+CiBnc3RfZ2xfZGlzcGxheV9nZXRfaGFuZGxlX3R5cGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwiIHRpdGxlPSJHc3RHTERpc3BsYXkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERpc3BsYXk8L3NwYW4+PC9hPiAqZGlzcGxheTwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xMS44LjMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE0LjguMy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjIwLDcgKzIyOCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xMS44LjMuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjE0LjguMy41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwjR3N0R0xEaXNwbGF5VHlwZSIgdGl0bGU9ImVudW0gR3N0R0xEaXNwbGF5VHlwZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRGlzcGxheVR5cGU8L3NwYW4+PC9hPiBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZGlzcGxheTwvY29kZT48L2VtPgogPC9wPgogPC9kaXY+CkBAIC0yMzEsMTUgKzIzOSwxNSBAQAogPGEgbmFtZT0iZ3N0LWdsLWRpc3BsYXktZmlsdGVyLWdsLWFwaSI+PC9hPjxoMz5nc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpwqAoKTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgogZ3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwaSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRGlzcGxheTwvc3Bhbj48L2E+ICpkaXNwbGF5PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMQVBJIiB0aXRsZT0iZW51bSBHc3RHTEFQSSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQVBJPC9zcGFuPjwvYT4gYXBpPC9jb2RlPjwvZW0+KTs8L3ByZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHc3RHTEFQSSIgdGl0bGU9ImVudW0gR3N0R0xBUEkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFQSTwvc3Bhbj48L2E+IGdsX2FwaTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5saW1pdCB0aGUgdXNlIG9mIE9wZW5HTCB0byB0aGUgcmVxdWVzdGVkIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5nbF9hcGk8L2NvZGU+PC9lbT4KIC4gIFRoaXMgaXMgaW50ZW5kZWQgdG8gYWxsb3cKIGFwcGxpY2F0aW9uIGFuZCBlbGVtZW50cyB0byByZXF1ZXN0IGEgc3BlY2lmaWMgc2V0IG9mIE9wZW5HTCBBUEkncyBiYXNlZCBvbgogd2hhdCB0aGV5IHN1cHBvcnQuICBTZWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWdldC1nbC1hcGkiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpKCk8L2NvZGU+PC9hPiBmb3IgdGhlIHJldHJlaXZpbmcgdGhlCiBBUEkgc3VwcG9ydGVkIGJ5IGEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTEuOC40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC44LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI2Nyw4ICsyNzUsOCBAQAogZ3N0X2dsX2Rpc3BsYXlfZ2V0X2dsX2FwaSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRGlzcGxheTwvc3Bhbj48L2E+ICpkaXNwbGF5PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPnNlZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwjZ3N0LWdsLWRpc3BsYXktZmlsdGVyLWdsLWFwaSIgdGl0bGU9ImdzdF9nbF9kaXNwbGF5X2ZpbHRlcl9nbF9hcGnCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9kaXNwbGF5X2ZpbHRlcl9nbF9hcGkoKTwvY29kZT48L2E+IGZvciB3aGF0IHRoZSByZXR1cm5lZCB2YWx1ZSByZXByZXNlbnRzPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTEuOC41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC44LjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI4Miw3ICsyOTAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTEuOC41LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC44LjUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR3N0R0xBUEkiIHRpdGxlPSJlbnVtIEdzdEdMQVBJIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBUEk8L3NwYW4+PC9hPiBjb25maWd1cmVkIGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZGlzcGxheTwvY29kZT48L2VtPgogPC9wPgogPC9kaXY+CkBAIC0yOTQsOCArMzAyLDggQEAKIGdzdF9nbF9kaXNwbGF5X2FkZF9jb250ZXh0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEaXNwbGF5PC9zcGFuPjwvYT4gKmRpc3BsYXk8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjguNi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC42LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMTYsNyArMzI0LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjguNi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC42LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gd2hldGhlciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29udGV4dDwvY29kZT48L2VtPgogd2FzIHN1Y2Nlc3NmdWxseSBhZGRlZC4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBtYXkgYmUgcmV0dXJuZWQKIGlmIHRoZXJlIGFscmVhZHkgZXhpc3RzIGFub3RoZXIgY29udGV4dCBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KQEAgLTMzMyw4ICszNDEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEaXNwbGF5PC9zcGFuPjwvYT4gKmRpc3BsYXk8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVRocmVhZHMuaHRtbCNHVGhyZWFkIj48c3BhbiBjbGFzcz0idHlwZSI+R1RocmVhZDwvc3Bhbj48L2E+ICp0aHJlYWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTEuOC43LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC44LjcuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM1NSw3ICszNjMsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTEuOC43LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC44LjcuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gY3VycmVudCBvbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGhyZWFkPC9jb2RlPjwvZW0+CiBvciA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPjwvcD4KIDxwPk11c3QgYmUgY2FsbGVkIHdpdGggdGhlIG9iamVjdCBsb2NrIGhlbGQuIDwvcD4KQEAgLTM3MSwxMyArMzc5LDYwIEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1kaXNwbGF5LWNyZWF0ZS1jb250ZXh0Ij48L2E+PGgzPmdzdF9nbF9kaXNwbGF5X2NyZWF0ZV9jb250ZXh0wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF9kaXNwbGF5X2NyZWF0ZV9jb250ZXh0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEaXNwbGF5PC9zcGFuPjwvYT4gKmRpc3BsYXk8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpvdGhlcl9jb250ZXh0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqKnBfY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPiAqKmVycm9yPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkl0IHJlcXVpcmVzIHRoZSBkaXNwbGF5J3Mgb2JqZWN0IGxvY2sgdG8gYmUgaGVsZC48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC44LjkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZGlzcGxheTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEaXNwbGF5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+b3RoZXJfY29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPm90aGVyIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+IHRvIHNoYXJlIHJlc291cmNlcyB3aXRoLjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wX2NvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5yZXN1bHRpbmcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZXJyb3I8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5yZXN1bHRpbmcgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC45LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gd2hldGhlciBhIG5ldyBjb250ZXh0IGNvdWxkIGJlIGNyZWF0ZWQuPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjY8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9ImdzdC1jb250ZXh0LWdldC1nbC1kaXNwbGF5Ij48L2E+PGgzPmdzdF9jb250ZXh0X2dldF9nbF9kaXNwbGF5wqAoKTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KIGdzdF9jb250ZXh0X2dldF9nbF9kaXNwbGF5ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q29udGV4dC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0Q29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwiIHRpdGxlPSJHc3RHTERpc3BsYXkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERpc3BsYXk8L3NwYW4+PC9hPiAqKmRpc3BsYXk8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTEuOC45LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC44LjEwLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zOTgsNyArNDUzLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjguOS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC4xMC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IFdoZXRoZXIgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmRpc3BsYXk8L2NvZGU+PC9lbT4KIHdhcyBpbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29udGV4dDwvY29kZT48L2VtPgogPC9wPgpAQCAtNDE1LDggKzQ3MCw4IEBACiAgb24gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjguMTAuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE0LjguMTEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ1MCw4ICs1MDUsOCBAQAogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgogPGEgbmFtZT0iR3N0R0xEaXNwbGF5VHlwZSI+PC9hPjxoMz5lbnVtIEdzdEdMRGlzcGxheVR5cGU8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTEuOS4zLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC45LjMuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC00NjAsNDMgKzUxNSw1OSBAQAogPHRib2R5PgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtRElTUExBWS1UWVBFLU5PTkU6Q0FQUyI+PC9hPkdTVF9HTF9ESVNQTEFZX1RZUEVfTk9ORTwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPm5vIGRpc3BsYXkgdHlwZTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtRElTUExBWS1UWVBFLVgxMTpDQVBTIj48L2E+R1NUX0dMX0RJU1BMQVlfVFlQRV9YMTE8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5YMTEgZGlzcGxheTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtRElTUExBWS1UWVBFLVdBWUxBTkQ6Q0FQUyI+PC9hPkdTVF9HTF9ESVNQTEFZX1RZUEVfV0FZTEFORDwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPldheWxhbmQgZGlzcGxheTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtRElTUExBWS1UWVBFLUNPQ09BOkNBUFMiPjwvYT5HU1RfR0xfRElTUExBWV9UWVBFX0NPQ09BPC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+Q29jb2EgZGlzcGxheTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtRElTUExBWS1UWVBFLVdJTjMyOkNBUFMiPjwvYT5HU1RfR0xfRElTUExBWV9UWVBFX1dJTjMyPC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+V2luMzIgZGlzcGxheTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtRElTUExBWS1UWVBFLURJU1BNQU5YOkNBUFMiPjwvYT5HU1RfR0xfRElTUExBWV9UWVBFX0RJU1BNQU5YPC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+RGlzcG1hbnggZGlzcGxheTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtRElTUExBWS1UWVBFLUVHTDpDQVBTIj48L2E+R1NUX0dMX0RJU1BMQVlfVFlQRV9FR0w8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5FR0wgZGlzcGxheTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtRElTUExBWS1UWVBFLUFOWTpDQVBTIj48L2E+R1NUX0dMX0RJU1BMQVlfVFlQRV9BTlk8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5hbnkgZGlzcGxheSB0eXBlPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KQEAgLTUyMyw4ICs1OTQsOCBAQAogSXQgY2FuIGJlIGNhbGxlZCBpbiBhbnkgdGhyZWFkIGFuZCBpdCBpcyBlbWl0dGVkIHdpdGgKIGRpc3BsYXkncyBvYmplY3QgbG9jayBoZWxkLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjEwLjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE0LjEwLjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU1MCw3ICs2MjEsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTEuMTAuMi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuMTAuMi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHRoZSBuZXcgY29udGV4dC48L3A+CiA8L2Rpdj4KIDxwPkZsYWdzOiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1SVU4tTEFTVDpDQVBTIj5SdW4gTGFzdDwvYT48L3A+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTERvd25sb2FkLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTERvd25sb2FkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZGYzYzEuLjAwMDAwMDAKLS0tIGEvZG9jcy9saWJzL2h0bWwvR3N0R0xEb3dubG9hZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTx0aXRsZT5Hc3RHTERvd25sb2FkOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgotPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgotPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Ci08bGluayByZWw9InByZXYiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEVHTEltYWdlTWVtb3J5Ij4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+Ci08Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Ci08dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgotPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Ci08YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0dzdEdMRG93bmxvYWQuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0dzdEdMRG93bmxvYWQub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj4KLTwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KLTxhIG5hbWU9IkdzdEdMRG93bmxvYWQiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Ci08dGQgdmFsaWduPSJ0b3AiPgotPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJHc3RHTERvd25sb2FkLnRvcF9vZl9wYWdlIj48L2E+R3N0R0xEb3dubG9hZDwvc3Bhbj48L2gyPgotPHA+R3N0R0xEb3dubG9hZCDigJQgYW4gb2JqZWN0IHRoYXQgZG93bmxvYWRzIEdMIHRleHR1cmVzPC9wPgotPC90ZD4KLTx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KLTwvdHI+PC90YWJsZT48L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9IkdzdEdMRG93bmxvYWQuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgotPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTERvd25sb2FkPC9zcGFuPjwvYT7CoCoKLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCNnc3QtZ2wtZG93bmxvYWQtbmV3IiB0aXRsZT0iZ3N0X2dsX2Rvd25sb2FkX25ld8KgKCkiPmdzdF9nbF9kb3dubG9hZF9uZXc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLXNldC1mb3JtYXQiIHRpdGxlPSJnc3RfZ2xfZG93bmxvYWRfc2V0X2Zvcm1hdMKgKCkiPmdzdF9nbF9kb3dubG9hZF9zZXRfZm9ybWF0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdENhcHM8L3NwYW4+PC9hPsKgKgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sI2dzdC1nbC1kb3dubG9hZC10cmFuc2Zvcm0tY2FwcyIgdGl0bGU9ImdzdF9nbF9kb3dubG9hZF90cmFuc2Zvcm1fY2Fwc8KgKCkiPmdzdF9nbF9kb3dubG9hZF90cmFuc2Zvcm1fY2FwczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLXBlcmZvcm0td2l0aC1kYXRhIiB0aXRsZT0iZ3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fd2l0aF9kYXRhwqAoKSI+Z3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fd2l0aF9kYXRhPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iR3N0R0xEb3dubG9hZC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Ci08Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sI0dzdEdMRG93bmxvYWQtc3RydWN0IiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+R3N0R0xEb3dubG9hZDwvYT48L3RkPgotPC90cj48L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iR3N0R0xEb3dubG9hZC5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgotPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+Ci0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KLSAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KLSAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEdMRG93bmxvYWQKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJHc3RHTERvd25sb2FkLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KLTxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiIHRpdGxlPSJHc3RHTERvd25sb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEb3dubG9hZDwvc3Bhbj48L2E+IGlzIGFuIG9iamVjdCB0aGF0IGRvd25sb2FkcyBHTCB0ZXh0dXJlcyBpbnRvIHN5c3RlbSBtZW1vcnkuPC9wPgotPHA+QSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRG93bmxvYWQ8L3NwYW4+PC9hPiBjYW4gYmUgY3JlYXRlZCB3aXRoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLW5ldyIgdGl0bGU9ImdzdF9nbF9kb3dubG9hZF9uZXfCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9kb3dubG9hZF9uZXcoKTwvY29kZT48L2E+PC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJHc3RHTERvd25sb2FkLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtZG93bmxvYWQtbmV3Ij48L2E+PGgzPmdzdF9nbF9kb3dubG9hZF9uZXfCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTERvd25sb2FkPC9zcGFuPjwvYT7CoCoKLWdzdF9nbF9kb3dubG9hZF9uZXcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPik7PC9wcmU+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xMi43LjIuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KLTxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+PHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPjwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xMi43LjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KLTxwPiBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRG93bmxvYWQ8L3NwYW4+PC9hPiBvYmplY3Q8L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLWRvd25sb2FkLXNldC1mb3JtYXQiPjwvYT48aDM+Z3N0X2dsX2Rvd25sb2FkX3NldF9mb3JtYXTCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfZG93bmxvYWRfc2V0X2Zvcm1hdCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiIHRpdGxlPSJHc3RHTERvd25sb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEb3dubG9hZDwvc3Bhbj48L2E+ICpkb3dubG9hZDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gKm91dF9pbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxwPkluaXRpYWxpemVzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5kb3dubG9hZDwvY29kZT48L2VtPgotIHdpdGggdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciBkb3dubG9hZC48L3A+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xMi43LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KLTxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5kb3dubG9hZDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERvd25sb2FkPC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+b3V0X2luZm88L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1kb3dubG9hZC10cmFuc2Zvcm0tY2FwcyI+PC9hPjxoMz5nc3RfZ2xfZG93bmxvYWRfdHJhbnNmb3JtX2NhcHPCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDYXBzLmh0bWwiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0Q2Fwczwvc3Bhbj48L2E+wqAqCi1nc3RfZ2xfZG93bmxvYWRfdHJhbnNmb3JtX2NhcHMgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udmVydDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFBhZC5odG1sI0dzdFBhZERpcmVjdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBhZERpcmVjdGlvbjwvc3Bhbj48L2E+IGRpcmVjdGlvbjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdENhcHM8L3NwYW4+PC9hPiAqY2FwczwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdENhcHM8L3NwYW4+PC9hPiAqZmlsdGVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLWRvd25sb2FkLXBlcmZvcm0td2l0aC1kYXRhIj48L2E+PGgzPmdzdF9nbF9kb3dubG9hZF9wZXJmb3JtX3dpdGhfZGF0YcKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci1nc3RfZ2xfZG93bmxvYWRfcGVyZm9ybV93aXRoX2RhdGEgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRG93bmxvYWQ8L3NwYW4+PC9hPiAqZG93bmxvYWQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R0x1aW50PC9zcGFuPiB0ZXh0dXJlX2lkPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMdWludDwvc3Bhbj4gdGV4dHVyZV90YXJnZXQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IGRhdGFbR1NUX1ZJREVPX01BWF9QTEFORVNdPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxwPkRvd25sb2FkcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4dHVyZV9pZDwvY29kZT48L2VtPgotIGludG8gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmRhdGE8L2NvZGU+PC9lbT4KLS4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmRhdGE8L2NvZGU+PC9lbT4KLSBzaXplIGFuZCBmb3JtYXQgaXMgc3BlY2lmaWVkIGJ5Ci10aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9Gb3JtYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0Zvcm1hdDwvc3Bhbj48L2E+IHBhc3NlZCB0byA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sI2dzdC1nbC1kb3dubG9hZC1zZXQtZm9ybWF0IiB0aXRsZT0iZ3N0X2dsX2Rvd25sb2FkX3NldF9mb3JtYXTCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9kb3dubG9hZF9zZXRfZm9ybWF0KCk8L2NvZGU+PC9hPjwvcD4KLTxwPlRoaXMgbWV0aG9kIGNhbiBvbmx5IGJlIHVzZWQgZm9yIGRvd25sb2FkIGEgc2luZ2xlIHZpZXcuPC9wPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTIuNy41LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZG93bmxvYWQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiIHRpdGxlPSJHc3RHTERvd25sb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEb3dubG9hZDwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRleHR1cmVfaWQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgdGV4dHVyZSBpZCB0byBkb3dubG9hZDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50ZXh0dXJlX3RhcmdldDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBHTCB0ZXh0dXJlIHRhcmdldDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5kYXRhPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHdoZXJlIHRoZSBkb3dubG9hZGVkIGRhdGEgc2hvdWxkIGdvLiA8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJQYXJhbWV0ZXIgZm9yIHJldHVybmluZyByZXN1bHRzLiBEZWZhdWx0IGlzIHRyYW5zZmVyIGZ1bGwuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+b3V0PC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjEyLjcuNS43Ij48L2E+PGg0PlJldHVybnM8L2g0PgotPHA+IHdoZXRoZXIgdGhlIGRvd25sb2FkIHdhcyBzdWNjZXNzZnVsPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iR3N0R0xEb3dubG9hZC5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0R0xEb3dubG9hZC1zdHJ1Y3QiPjwvYT48aDM+R3N0R0xEb3dubG9hZDwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgX0dzdEdMRG93bmxvYWQgR3N0R0xEb3dubG9hZDs8L3ByZT4KLTxwPk9wYXF1ZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRG93bmxvYWQ8L3NwYW4+PC9hPiBvYmplY3Q8L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iR3N0R0xEb3dubG9hZC5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Ci08cD48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWQ8L3NwYW4+PC9hPiwgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZm9vdGVyIj4KLTxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL0dzdEdMRmlsdGVyLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTEZpbHRlci5odG1sCmluZGV4IDI5ZjMwMTguLmExYTIwYTEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL0dzdEdMRmlsdGVyLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvR3N0R0xGaWx0ZXIuaHRtbApAQCAtMywxMCArMywxMCBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xGaWx0ZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Ci08bGluayByZWw9InByZXYiIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIiB0aXRsZT0iR3N0R0xCYXNlRmlsdGVyIj4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEVHTEltYWdlTWVtb3J5Ij4KIDxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iR3N0R0xGcmFtZWJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xGcmFtZWJ1ZmZlciI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgpAQCAtMjAsNyArMjAsNyBAQAogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xGaWx0ZXIuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTc3LDcgKzc3LDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xGaWx0ZXIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTEyMiw4ICsxMjIsOCBAQAogIGFuZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aGVpZ2h0PC9jb2RlPjwvZW0+CiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTUuNy4yLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNi43LjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE2Myw3ICsxNjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiByZXNpemU8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R0x1aW50PC9zcGFuPiBpbnB1dDwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTHVpbnQ8L3NwYW4+IHRhcmdldDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNHTENCOkNBUFMiIHRpdGxlPSJHTENCwqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdMQ0I8L3NwYW4+PC9hPiBmdW5jPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dMQ0I6Q0FQUyIgdGl0bGU9IkdMQ0LCoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R0xDQjwvc3Bhbj48L2E+IGZ1bmM8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IGRhdGE8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+VHJhbnNmb3JtcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aW5wdXQ8L2NvZGU+PC9lbT4KICBpbnRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5vdXRwdXQ8L2NvZGU+PC9lbT4KQEAgLTE3NCw4ICsxNzQsOCBAQAogIGlzIHRoZSBpbnB1dCB0ZXh0dXJlIG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5maWx0ZXI8L2NvZGU+PC9lbT4KIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNS43LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE2LjcuMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjMwLDcgKzIzMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHJlc2l6ZTwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTHVpbnQ8L3NwYW4+IGlucHV0PC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMdWludDwvc3Bhbj4gdGFyZ2V0PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5UcmFuc2Zvcm1zIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5pbnB1dDwvY29kZT48L2VtPgogIGludG8gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm91dHB1dDwvY29kZT48L2VtPgogIHVzaW5nIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KQEAgLTI0MSw4ICsyNDEsOCBAQAogLjwvcD4KIDxwPlNlZSBhbHNvOiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xGaWx0ZXIuaHRtbCNnc3QtZ2wtZmlsdGVyLXJlbmRlci10by10YXJnZXQiIHRpdGxlPSJnc3RfZ2xfZmlsdGVyX3JlbmRlcl90b190YXJnZXTCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9maWx0ZXJfcmVuZGVyX3RvX3RhcmdldCgpPC9jb2RlPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNS43LjQuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE2LjcuNC42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjg5LDggKzI4OSw4IEBACiA8cD5QZXJmb3JtIGF1dG9tYXRpYyB1cGxvYWQgaWYgbmVlZGVkLCBjYWxsIGZpbHRlcl90ZXh0dXJlIHZmdW5jIGFuZCB0aGVuIGFuCiBhdXRvbWF0aWMgZG93bmxvYWQgaWYgbmVlZGVkLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE1LjcuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTYuNy41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMTYsNyArMzE2LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE1LjcuNS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMTYuNy41LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gd2hldGhlciB0aGUgdHJhbnNmb3JtYXRpb24gc3VjY2VlZGVkPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTMyNywxMSArMzI3LDExIEBACiA8YSBuYW1lPSJHc3RHTEZpbHRlci1zdHJ1Y3QiPjwvYT48aDM+R3N0R0xGaWx0ZXI8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RHTEZpbHRlciBHc3RHTEZpbHRlcjs8L3ByZT4KIDxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEZpbHRlci5odG1sIiB0aXRsZT0iR3N0R0xGaWx0ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEZpbHRlcjwvc3Bhbj48L2E+IGlzIGEgYmFzZSBjbGFzcyB0aGF0IHByb3ZpZGVzIHRoZSBsb2dpYyBvZiBnZXR0aW5nIHRoZSBHTCBjb250ZXh0Ci1mcm9tIGRvd25zdHJlYW0gYW5kIGF1dG9tYXRpYyB1cGxvYWQvZG93bmxvYWQgZm9yIG5vbi08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPgorZnJvbSBkb3duc3RyZWFtIGFuZCBhdXRvbWF0aWMgdXBsb2FkL2Rvd25sb2FkIGZvciBub24tPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4KIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QnVmZmVyPC9zcGFuPjwvYT5zLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE1LjguMi41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTYuOC4yLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM2MSw4ICszNjEsOCBAQAogfSBHc3RHTEZpbHRlckNsYXNzOwogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNS44LjMuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE2LjguMy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTEZyYW1lYnVmZmVyLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTEZyYW1lYnVmZmVyLmh0bWwKaW5kZXggNjA3YzhjNC4uZjI1ZjFkMCAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvR3N0R0xGcmFtZWJ1ZmZlci5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL0dzdEdMRnJhbWVidWZmZXIuaHRtbApAQCAtMywxMSArMywxMSBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xGcmFtZWJ1ZmZlcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iR3N0R0xGaWx0ZXIuaHRtbCIgdGl0bGU9IkdzdEdMRmlsdGVyIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CiA8L2hlYWQ+CkBAIC0yMSw3ICsyMSw3IEBACiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iR3N0R0xGaWx0ZXIuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CiA8YSBuYW1lPSJHc3RHTEZyYW1lYnVmZmVyIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMRnJhbWVidWZmZXIuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTc3LDcgKzc3LDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xGcmFtZWJ1ZmZlci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTM4LDcgKzEzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMdWludDwvc3Bhbj4gZmJvPC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTHVpbnQ8L3NwYW4+IGRlcHRoX2J1ZmZlcjwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R0x1aW50PC9zcGFuPiB0ZXh0dXJlX2ZibzwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR0xDQi1WMjpDQVBTIiB0aXRsZT0iR0xDQl9WMsKgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTENCX1YyPC9zcGFuPjwvYT4gY2I8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dMQ0ItVjI6Q0FQUyIgdGl0bGU9IkdMQ0JfVjLCoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R0xDQl9WMjwvc3Bhbj48L2E+IGNiPC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gc3R1ZmY8L2NvZGU+PC9lbT4pOzwvcHJlPgogPC9kaXY+CiA8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL0dzdEdMU2hhZGVyLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTFNoYWRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3OTdhNzEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTFNoYWRlci5odG1sCkBAIC0wLDAgKzEsMTIzNyBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPHRpdGxlPkdzdEdMU2hhZGVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeVBCTyI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCIgdGl0bGU9IkdzdEdMU0wiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KKzx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Cis8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KKzxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjR3N0R0xTaGFkZXIuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0dzdEdMU2hhZGVyLm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9wcm9wZXJ0aWVzIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0dzdEdMU2hhZGVyLnByb3BlcnRpZXMiIGNsYXNzPSJzaG9ydGN1dCI+UHJvcGVydGllczwvYT48L3NwYW4+Cis8L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPC90cj48L3RhYmxlPgorPGRpdiBjbGFzcz0icmVmZW50cnkiPgorPGEgbmFtZT0iR3N0R0xTaGFkZXIiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJHc3RHTFNoYWRlci50b3Bfb2ZfcGFnZSI+PC9hPkdzdEdMU2hhZGVyPC9zcGFuPjwvaDI+Cis8cD5Hc3RHTFNoYWRlciDigJQgb2JqZWN0IHJlcHJlc2VudGluZyBhbiBPcGVuR0wgc2hhZGVyIHByb2dyYW08L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgorPC90cj48L3RhYmxlPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iR3N0R0xTaGFkZXIuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KKzxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9uZXfCoCgpIj5nc3RfZ2xfc2hhZGVyX25ldzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLW5ldy1kZWZhdWx0IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9uZXdfZGVmYXVsdMKgKCkiPmdzdF9nbF9zaGFkZXJfbmV3X2RlZmF1bHQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXctbGluay13aXRoLXN0YWdlcyIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXPCoCgpIj5nc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3LXdpdGgtc3RhZ2VzIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9uZXdfd2l0aF9zdGFnZXPCoCgpIj5nc3RfZ2xfc2hhZGVyX25ld193aXRoX3N0YWdlczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci11c2UiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3VzZcKgKCkiPmdzdF9nbF9zaGFkZXJfdXNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5pbnQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LXByb2dyYW0taGFuZGxlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGXCoCgpIj5nc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1yZWxlYXNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9yZWxlYXNlwqAoKSI+Z3N0X2dsX3NoYWRlcl9yZWxlYXNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXJlbGVhc2UtdW5sb2NrZWQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3JlbGVhc2VfdW5sb2NrZWTCoCgpIj5nc3RfZ2xfc2hhZGVyX3JlbGVhc2VfdW5sb2NrZWQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWF0dGFjaCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfYXR0YWNowqAoKSI+Z3N0X2dsX3NoYWRlcl9hdHRhY2g8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWF0dGFjaC11bmxvY2tlZCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfYXR0YWNoX3VubG9ja2VkwqAoKSI+Z3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtYXR0YWNoLXN0YWdlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlX2F0dGFjaF9zdGFnZcKgKCkiPmdzdF9nbF9zaGFkZXJfY29tcGlsZV9hdHRhY2hfc3RhZ2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZGV0YWNoIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9kZXRhY2jCoCgpIj5nc3RfZ2xfc2hhZGVyX2RldGFjaDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1kZXRhY2gtdW5sb2NrZWQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2RldGFjaF91bmxvY2tlZMKgKCkiPmdzdF9nbF9zaGFkZXJfZGV0YWNoX3VubG9ja2VkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1pcy1saW5rZWQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2lzX2xpbmtlZMKgKCkiPmdzdF9nbF9zaGFkZXJfaXNfbGlua2VkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1saW5rIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9saW5rwqAoKSI+Z3N0X2dsX3NoYWRlcl9saW5rPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xacKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWZ2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWl2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaXY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmZ2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yacKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMml2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaXbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2bCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Z2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2kiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaXYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2l2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGnCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGl2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aXY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMngzZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDNmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4M2Z2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDRmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4NGZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMng0ZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTNmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzNmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzNmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3gyZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDJmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4MmZ2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDRmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3g0ZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTRmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgyZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDJmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4MmZ2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDNmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4M2Z2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgzZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtYXR0cmlidXRlLWxvY2F0aW9uIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uwqAoKSI+Z3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWJpbmQtYXR0cmlidXRlLWxvY2F0aW9uIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9iaW5kX2F0dHJpYnV0ZV9sb2NhdGlvbsKgKCkiPmdzdF9nbF9zaGFkZXJfYmluZF9hdHRyaWJ1dGVfbG9jYXRpb248L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJHc3RHTFNoYWRlci5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgorPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX2ZsYWdzIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLWxpbmtlZCIgdGl0bGU9IlRoZSDigJxsaW5rZWTigJ0gcHJvcGVydHkiPmxpbmtlZDwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJHc3RHTFNoYWRlci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgorPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItc3RydWN0IiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPjwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJHc3RHTFNoYWRlci5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgorPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEdMU2hhZGVyCis8L3ByZT4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iR3N0R0xTaGFkZXIuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJHc3RHTFNoYWRlci5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1uZXciPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9uZXfCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT7CoCoKK2dzdF9nbF9zaGFkZXJfbmV3ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Tm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjIuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIG5ldyBlbXB0eSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+CisuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItbmV3LWRlZmF1bHQiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9uZXdfZGVmYXVsdMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX3NoYWRlcl9uZXdfZGVmYXVsdCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRXJyb3ItUmVwb3J0aW5nLmh0bWwjR0Vycm9yIj48c3BhbiBjbGFzcz0idHlwZSI+R0Vycm9yPC9zcGFuPjwvYT4gKiplcnJvcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5Ob3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmVycm9yPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUVycm9yLVJlcG9ydGluZy5odG1sI0dFcnJvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdFcnJvcjwvc3Bhbj48L2E+IHRoYXQgaXMgZmlsbGVkIG9uIGZhaWx1cmU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguMy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgZGVmYXVsdCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+CitvciA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPiBvbiBmYWlsdXJlLiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJGcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBmdWxsPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLW5ldy1saW5rLXdpdGgtc3RhZ2VzIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT7CoCoKK2dzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXMgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUVycm9yLVJlcG9ydGluZy5odG1sI0dFcnJvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdFcnJvcjwvc3Bhbj48L2E+ICoqZXJyb3I8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Li4uPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkVhY2ggc3RhZ2Ugd2lsbCBhdHRlbXB0IHRvIGJlIGNvbXBpbGVkIGFuZCBhdHRhY2hlZCB0byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+CisuICBUaGVuCit0aGUgc2hhZGVyIHdpbGwgYmUgbGlua2VkLiBPbiBlcnJvciwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNOVUxMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5OVUxMPC9jb2RlPjwvYT4gd2lsbCBiZSByZXR1cm5lZCBhbmQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmVycm9yPC9jb2RlPjwvZW0+Cisgd2lsbAorY29udGFpbiB0aGUgZGV0YWlscyBvZiB0aGUgZXJyb3IuPC9wPgorPHA+Tm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguNC42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5lcnJvcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD4uLi48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIE5VTEwgdGVybWluYXRlZCBsaXN0IG9mIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMU3RhZ2U8L3NwYW4+PC9hPidzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjQuNyI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIG5ldyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+Cit3aXRoIHRoZSBzcGVjaWZpZWQgc3RhZ2VzLiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJGcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBmdWxsPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLW5ldy13aXRoLXN0YWdlcyI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX25ld193aXRoX3N0YWdlc8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX3NoYWRlcl9uZXdfd2l0aF9zdGFnZXMgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPiAqKmVycm9yPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT4uLi48L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RWFjaCBzdGFnZSB3aWxsIGF0dGVtcHQgdG8gYmUgY29tcGlsZWQgYW5kIGF0dGFjaGVkIHRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KKy4gIE9uIGVycm9yLAorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNOVUxMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5OVUxMPC9jb2RlPjwvYT4gd2lsbCBiZSByZXR1cm5lZCBhbmQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmVycm9yPC9jb2RlPjwvZW0+Cisgd2lsbCBjb250YWluIHRoZSBkZXRhaWxzIG9mIHRoZSBlcnJvci48L3A+Cis8cD5Ob3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC41LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmVycm9yPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUVycm9yLVJlcG9ydGluZy5odG1sI0dFcnJvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdFcnJvcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPi4uLjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgTlVMTCB0ZXJtaW5hdGVkIGxpc3Qgb2YgPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xTdGFnZTwvc3Bhbj48L2E+J3M8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguNS43Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgbmV3IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KK3dpdGggdGhlIHNwZWNpZmllZCBzdGFnZXMuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItdXNlIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfdXNlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl91c2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPk1hcmsncyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+CisgYXMgYmVpbmcgdXNlZCBmb3IgdGhlIG5leHQgR0wgZHJhdyBjb21tYW5kLjwvcD4KKzxwPk5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQgYW5kIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KKyBtdXN0IGhhdmUgYmVlbiBsaW5rZWQuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC42LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaGFkZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWdldC1wcm9ncmFtLWhhbmRsZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+aW50PC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguNy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2hhZGVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguNy41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBHTCBwcm9ncmFtIGhhbmRsZSBmb3IgdGhpcyBzaGFkZXI8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1yZWxlYXNlIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfcmVsZWFzZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfcmVsZWFzZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+UmVsZWFzZXMgdGhlIHNoYWRlciBhbmQgc3RhZ2VzLjwvcD4KKzxwPk5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQ8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjguNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNoYWRlcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItcmVsZWFzZS11bmxvY2tlZCI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3JlbGVhc2VfdW5sb2NrZWTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3JlbGVhc2VfdW5sb2NrZWQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlJlbGVhc2VzIHRoZSBzaGFkZXIgYW5kIHN0YWdlcy48L3A+Cis8cD5Ob3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC45LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaGFkZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWF0dGFjaCI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2F0dGFjaMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xfc2hhZGVyX2F0dGFjaCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMU3RhZ2U8L3NwYW4+PC9hPiAqc3RhZ2U8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+QXR0YWNoZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnN0YWdlPC9jb2RlPjwvZW0+CisgdG8gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNoYWRlcjwvY29kZT48L2VtPgorLiAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnN0YWdlPC9jb2RlPjwvZW0+CisgbXVzdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvbXBpbGVkCit3aXRoIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsc2xfc3RhZ2VfY29tcGlsZSgpPC9jb2RlPi48L3A+Cis8cD5Ob3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC4xMC42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaGFkZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnN0YWdlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFN0YWdlPC9zcGFuPjwvYT4gdG8gYXR0YWNoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjEwLjciPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gd2hldGhlciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c3RhZ2U8L2NvZGU+PC9lbT4KK2NvdWxkIGJlIGF0dGFjaGVkIHRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KKzwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWF0dGFjaC11bmxvY2tlZCI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMU3RhZ2U8L3NwYW4+PC9hPiAqc3RhZ2U8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+QXR0YWNoZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnN0YWdlPC9jb2RlPjwvZW0+CisgdG8gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNoYWRlcjwvY29kZT48L2VtPgorLiAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnN0YWdlPC9jb2RlPjwvZW0+CisgbXVzdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvbXBpbGVkCit3aXRoIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsc2xfc3RhZ2VfY29tcGlsZSgpPC9jb2RlPi48L3A+Cis8cD5Ob3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC4xMS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaGFkZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnN0YWdlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFN0YWdlPC9zcGFuPjwvYT4gdG8gYXR0YWNoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjExLjciPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gd2hldGhlciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c3RhZ2U8L2NvZGU+PC9lbT4KK2NvdWxkIGJlIGF0dGFjaGVkIHRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KKzwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtYXR0YWNoLXN0YWdlIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfY29tcGlsZV9hdHRhY2hfc3RhZ2XCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX3NoYWRlcl9jb21waWxlX2F0dGFjaF9zdGFnZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xTdGFnZTwvc3Bhbj48L2E+ICpzdGFnZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUVycm9yLVJlcG9ydGluZy5odG1sI0dFcnJvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdFcnJvcjwvc3Bhbj48L2E+ICoqZXJyb3I8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Q29tcGlsZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnN0YWdlPC9jb2RlPjwvZW0+CisgYW5kIGF0dGFjaGVzIGl0IHRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KKy48L3A+Cis8cD5Ob3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC4xMi42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaGFkZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnN0YWdlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFN0YWdlPC9zcGFuPjwvYT4gdG8gYXR0YWNoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmVycm9yPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUVycm9yLVJlcG9ydGluZy5odG1sI0dFcnJvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdFcnJvcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjEyLjciPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gd2hldGhlciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c3RhZ2U8L2NvZGU+PC9lbT4KK2NvdWxkIGJlIGNvbXBpbGVkIGFuZCBhdHRhY2hlZCB0byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1kZXRhY2giPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9kZXRhY2jCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX2RldGFjaCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMU3RhZ2U8L3NwYW4+PC9hPiAqc3RhZ2U8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RGV0YWNoZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnN0YWdlPC9jb2RlPjwvZW0+CisgZnJvbSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+CisuICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c3RhZ2U8L2NvZGU+PC9lbT4KKyBtdXN0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYXR0YWNoZWQKK3RvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KKyB3aXRoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItYXR0YWNoIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9hdHRhY2jCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9zaGFkZXJfYXR0YWNoKCk8L2NvZGU+PC9hPiBvciA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWF0dGFjaC11bmxvY2tlZCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfYXR0YWNoX3VubG9ja2VkwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZCgpPC9jb2RlPjwvYT4uPC9wPgorPHA+Tm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguMTMuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2hhZGVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdGFnZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xTdGFnZTwvc3Bhbj48L2E+IHRvIGF0dGFjaDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWRldGFjaC11bmxvY2tlZCI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2RldGFjaF91bmxvY2tlZMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfZGV0YWNoX3VubG9ja2VkICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xTdGFnZTwvc3Bhbj48L2E+ICpzdGFnZTwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5EZXRhY2hlcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c3RhZ2U8L2NvZGU+PC9lbT4KKyBmcm9tIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KKy4gIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zdGFnZTwvY29kZT48L2VtPgorIG11c3QgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBhdHRhY2hlZAordG8gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNoYWRlcjwvY29kZT48L2VtPgorIHdpdGggPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1hdHRhY2giIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2F0dGFjaMKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX3NoYWRlcl9hdHRhY2goKTwvY29kZT48L2E+IG9yIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItYXR0YWNoLXVubG9ja2VkIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWTCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9zaGFkZXJfYXR0YWNoX3VubG9ja2VkKCk8L2NvZGU+PC9hPi48L3A+Cis8cD5Ob3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC4xNC42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaGFkZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnN0YWdlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFN0YWdlPC9zcGFuPjwvYT4gdG8gYXR0YWNoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItaXMtbGlua2VkIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfaXNfbGlua2VkwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF9zaGFkZXJfaXNfbGlua2VkICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5Ob3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC4xNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2hhZGVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguMTUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB3aGV0aGVyIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KK2hhcyBiZWVuIHN1Y2Nlc3NmdWxseSBsaW5rZWQ8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1saW5rIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfbGlua8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xfc2hhZGVyX2xpbmsgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPiAqKmVycm9yPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkxpbmtzIHRoZSBjdXJyZW50IGxpc3Qgb2YgPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xTdGFnZTwvc3Bhbj48L2E+J3MgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNoYWRlcjwvY29kZT48L2VtPgorLjwvcD4KKzxwPk5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQ8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjE2LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNoYWRlcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZXJyb3I8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRXJyb3ItUmVwb3J0aW5nLmh0bWwjR0Vycm9yIj48c3BhbiBjbGFzcz0idHlwZSI+R0Vycm9yPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguMTYuNyI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB3aGV0aGVyIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KK2NvdWxkIGJlIGxpbmtlZCB0b2dldGhlci48L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZnbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWl2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdjA8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYxPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmnCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYwPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYxPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaXYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaXbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2YiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2YgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYwPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiB2MTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdjI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmdsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Z2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2kiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zacKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2kgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjA8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjE8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpdsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2l2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdjA8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYxPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiB2MjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdjM8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmdsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGZ2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGkiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80acKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjA8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjE8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjM8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpdsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGl2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMmZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJmdsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJmdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHRyYW5zcG9zZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDNmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDNmdsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4M2Z2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB0cmFuc3Bvc2U8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMng0ZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMng0ZnbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDRmdgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gdHJhbnNwb3NlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTNmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zZnbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zZnYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB0cmFuc3Bvc2U8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3gyZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3gyZnbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDJmdgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gdHJhbnNwb3NlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4NGZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3g0ZnYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHRyYW5zcG9zZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00ZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNGZ2wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNGZ2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gdHJhbnNwb3NlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4MmZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4MmZ2wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgyZnYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHRyYW5zcG9zZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDNmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4M2Z2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB0cmFuc3Bvc2U8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1nZXQtYXR0cmlidXRlLWxvY2F0aW9uIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWJpbmQtYXR0cmlidXRlLWxvY2F0aW9uIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfYmluZF9hdHRyaWJ1dGVfbG9jYXRpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX2JpbmRfYXR0cmlidXRlX2xvY2F0aW9uICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGluZGV4PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9IkdzdEdMU2hhZGVyLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTFNoYWRlci1zdHJ1Y3QiPjwvYT48aDM+R3N0R0xTaGFkZXI8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RHTFNoYWRlciBHc3RHTFNoYWRlcjs8L3ByZT4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJHc3RHTFNoYWRlci5wcm9wZXJ0eS1kZXRhaWxzIj48L2E+PGgyPlByb3BlcnR5IERldGFpbHM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xTaGFkZXItLWxpbmtlZCI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGxpbmtlZOKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcbGlua2Vk4oCdICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3ByZT4KKzxwPlNoYWRlciBsaW5rIHN0YXR1cy48L3A+Cis8cD5GbGFnczogUmVhZDwvcD4KKzxwPkRlZmF1bHQgdmFsdWU6IEZBTFNFPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9IkdzdEdMU2hhZGVyLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMU3RhZ2U8L3NwYW4+PC9hPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJmb290ZXIiPgorPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvR3N0R0xVcGxvYWQuaHRtbCBiL2RvY3MvbGlicy9odG1sL0dzdEdMVXBsb2FkLmh0bWwKaW5kZXggNDcwMGE1OC4uM2IxNTg4MyAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvR3N0R0xVcGxvYWQuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTFVwbG9hZC5odG1sCkBAIC0zLDExICszLDExIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RHTFVwbG9hZDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xTeW5jTWV0YSI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CiA8L2hlYWQ+CkBAIC0yMSw3ICsyMSw3IEBACiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CiA8YSBuYW1lPSJHc3RHTFVwbG9hZCI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTFVwbG9hZC5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtOTAsMTAgKzkwLDEwIEBACiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RDYXBzPC9zcGFuPjwvYT7CoCoKIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC1yZWxlYXNlLWJ1ZmZlciIgdGl0bGU9ImdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXLCoCgpIj5nc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC1nZXQtaW5wdXQtdGVtcGxhdGUtY2FwcyIgdGl0bGU9ImdzdF9nbF91cGxvYWRfZ2V0X2lucHV0X3RlbXBsYXRlX2NhcHPCoCgpIj5nc3RfZ2xfdXBsb2FkX2dldF9pbnB1dF90ZW1wbGF0ZV9jYXBzPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CiA8L3Rib2R5PgpAQCAtMTAxLDcgKzEwMSw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMVXBsb2FkLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xMzIsOCArMTMyLDggQEAKIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMVXBsb2FkPC9zcGFuPjwvYT7CoCoKIGdzdF9nbF91cGxvYWRfbmV3ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjAuNy4yLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNC43LjIuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE0Nyw3ICsxNDcsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjAuNy4yLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNC43LjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWQ8L3NwYW4+PC9hPiBvYmplY3Q8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtMTU5LDggKzE1OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0Q2Fwczwvc3Bhbj48L2E+ICoqaW5fY2FwczwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDYXBzLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RDYXBzPC9zcGFuPjwvYT4gKipvdXRfY2FwczwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMC43LjMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI0LjcuMy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTg2LDcgKzE4Niw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMC43LjMuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjI0LjcuMy41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IFRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDYXBzLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RDYXBzPC9zcGFuPjwvYT4gc2V0IGJ5IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtc2V0LWNhcHMiIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX3NldF9jYXBzwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfdXBsb2FkX3NldF9jYXBzKCk8L2NvZGU+PC9hPi4gPC9wPgogPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRG9uJ3QgZnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+CiA8L2Rpdj4KQEAgLTIwMSw4ICsyMDEsOCBAQAogPHA+SW5pdGlhbGl6ZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnVwbG9hZDwvY29kZT48L2VtPgogIHdpdGggdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciB1cGxvYWQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjAuNy40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNC43LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIyOCw3ICsyMjgsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjAuNy40LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNC43LjQuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiB3aGV0aGVyIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5pbl9jYXBzPC9jb2RlPjwvZW0+CiBhbmQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm91dF9jYXBzPC9jb2RlPjwvZW0+CiBjb3VsZCBiZSBzZXQgb24gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnVwbG9hZDwvY29kZT48L2VtPgpAQCAtMjQ0LDggKzI0NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFF1ZXJ5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RRdWVyeTwvc3Bhbj48L2E+ICpxdWVyeTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5BZGRzIHRoZSByZXF1aXJlZCBhbGxvY2F0aW9uIHBhcmFtZXRlcnMgdG8gc3VwcG9ydCB1cGxvYWRpbmcuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjAuNy41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNC43LjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI4NiwxNSArMjg2LDE0IEBACiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFVwbG9hZFJldHVybjwvc3Bhbj4KIGdzdF9nbF91cGxvYWRfcGVyZm9ybV93aXRoX2J1ZmZlciAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZDwvc3Bhbj48L2E+ICp1cGxvYWQ8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+ICpidWZmZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+ICoqb3V0YnVmPC9jb2RlPjwvZW0+KTs8L3ByZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QnVmZmVyPC9zcGFuPjwvYT4gKipvdXRidWZfcHRyPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlVwbG9hZHMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmJ1ZmZlcjwvY29kZT48L2VtPgotIHRvIHRoZSB0ZXh0dXJlIGdpdmVuIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KLS4gIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KLSBpcyB2YWxpZAotdW50aWwgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC1yZWxlYXNlLWJ1ZmZlciIgdGl0bGU9ImdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXLCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXIoKTwvY29kZT48L2E+IGlzIGNhbGxlZC48L3A+CisgdXNpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIHNwZWNpZmllZCBieQorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC1zZXQtY2FwcyIgdGl0bGU9ImdzdF9nbF91cGxvYWRfc2V0X2NhcHPCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF91cGxvYWRfc2V0X2NhcHMoKTwvY29kZT48L2E+IGNyZWF0aW5nIGEgbmV3IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QnVmZmVyPC9zcGFuPjwvYT4gaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm91dGJ1Zl9wdHI8L2NvZGU+PC9lbT4KKy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMC43LjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI0LjcuNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzA4LDQ0ICszMDcsMjcgQEAKIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5idWZmZXI8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QnVmZmVyPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5pbnB1dCA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+PC9wPjwvdGQ+CiA8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm91dGJ1Zl9wdHI8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gcmVzdWx0aW5nIGJ1ZmZlci4gPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+cmVzdWx0aW5nIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QnVmZmVyPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIwLjcuNy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMjQuNy43LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gd2hldGhlciB0aGUgdXBsb2FkIHdhcyBzdWNjZXNzZnVsPC9wPgogPC9kaXY+CiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC11cGxvYWQtcmVsZWFzZS1idWZmZXIiPjwvYT48aDM+Z3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlcsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXIgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWQ8L3NwYW4+PC9hPiAqdXBsb2FkPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxwPlJlbGVhc2VzIGFueSBidWZmZXJzIGN1cnJlbnRseSByZWZlcmVuY2VkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT51cGxvYWQ8L2NvZGU+PC9lbT4KLTwvcD4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIwLjcuOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgotPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgotPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD51cGxvYWQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZDwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj48L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgorPGEgbmFtZT0iZ3N0LWdsLXVwbG9hZC1nZXQtaW5wdXQtdGVtcGxhdGUtY2FwcyI+PC9hPjxoMz5nc3RfZ2xfdXBsb2FkX2dldF9pbnB1dF90ZW1wbGF0ZV9jYXBzwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdENhcHM8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX3VwbG9hZF9nZXRfaW5wdXRfdGVtcGxhdGVfY2FwcyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj52b2lkPC9zcGFuPjwvY29kZT48L2VtPik7PC9wcmU+CiA8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgpAQCAtMzU4LDcgKzM0MCw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMVXBsb2FkLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KLTxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiIHRpdGxlPSJHc3RHTERvd25sb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEb3dubG9hZDwvc3Bhbj48L2E+LCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD4KKzxwPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERvd25sb2FkPC9zcGFuPiwgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+CiA8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL0dzdEdMVXBsb2FkTWV0YS5odG1sIGIvZG9jcy9saWJzL2h0bWwvR3N0R0xVcGxvYWRNZXRhLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0MTJiMTAuLjAwMDAwMDAKLS0tIGEvZG9jcy9saWJzL2h0bWwvR3N0R0xVcGxvYWRNZXRhLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHRpdGxlPkdzdEdMVXBsb2FkTWV0YTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KLTxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KLTxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPgotPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9IlV0aWxpdGllcyI+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPgotPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgotPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KLTx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgotPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNHc3RHTFVwbG9hZE1ldGEuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0dzdEdMVXBsb2FkTWV0YS5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPgotPC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgotPC90cj48L3RhYmxlPgotPGRpdiBjbGFzcz0icmVmZW50cnkiPgotPGEgbmFtZT0iR3N0R0xVcGxvYWRNZXRhIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KLTxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgotPHRkIHZhbGlnbj0idG9wIj4KLTxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iR3N0R0xVcGxvYWRNZXRhLnRvcF9vZl9wYWdlIj48L2E+R3N0R0xVcGxvYWRNZXRhPC9zcGFuPjwvaDI+Ci08cD5Hc3RHTFVwbG9hZE1ldGEg4oCUIGFuIG9iamVjdCB0aGF0IHByb3ZpZGVzIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlb21ldGEuaHRtbCNHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGE8L3NwYW4+PC9hPjwvcD4KLTwvdGQ+Ci08dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Ci08L3RyPjwvdGFibGU+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJHc3RHTFVwbG9hZE1ldGEuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgotPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xVcGxvYWRNZXRhPC9zcGFuPjwvYT7CoCoKLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sI2dzdC1nbC11cGxvYWQtbWV0YS1uZXciIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX21ldGFfbmV3wqAoKSI+Z3N0X2dsX3VwbG9hZF9tZXRhX25ldzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sI2dzdC1nbC11cGxvYWQtbWV0YS1zZXQtZm9ybWF0IiB0aXRsZT0iZ3N0X2dsX3VwbG9hZF9tZXRhX3NldF9mb3JtYXTCoCgpIj5nc3RfZ2xfdXBsb2FkX21ldGFfc2V0X2Zvcm1hdDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPsKgKgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwjZ3N0LWdsLXVwbG9hZC1tZXRhLWdldC1mb3JtYXQiIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX21ldGFfZ2V0X2Zvcm1hdMKgKCkiPmdzdF9nbF91cGxvYWRfbWV0YV9nZXRfZm9ybWF0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sI2dzdC1nbC11cGxvYWQtbWV0YS1hZGQtdG8tYnVmZmVyIiB0aXRsZT0iZ3N0X2dsX3VwbG9hZF9tZXRhX2FkZF90b19idWZmZXLCoCgpIj5nc3RfZ2xfdXBsb2FkX21ldGFfYWRkX3RvX2J1ZmZlcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9IkdzdEdMVXBsb2FkTWV0YS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Ci08Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwjR3N0R0xVcGxvYWRNZXRhLXN0cnVjdCIgdGl0bGU9IkdzdEdMVXBsb2FkTWV0YSI+R3N0R0xVcGxvYWRNZXRhPC9hPjwvdGQ+Ci08L3RyPjwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJHc3RHTFVwbG9hZE1ldGEub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RHTFVwbG9hZE1ldGEKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJHc3RHTFVwbG9hZE1ldGEuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgotPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWRNZXRhPC9zcGFuPjwvYT4gaXMgYW4gb2JqZWN0IHRoYXQgdXBsb2FkcyBkYXRhIGZyb20gc3lzdGVtIG1lbW9yeSBpbnRvIEdMIHRleHR1cmVzLjwvcD4KLTxwPkEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVXBsb2FkPC9zcGFuPjwvYT4gY2FuIGJlIGNyZWF0ZWQgd2l0aCA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCNnc3QtZ2wtdXBsb2FkLW5ldyIgdGl0bGU9ImdzdF9nbF91cGxvYWRfbmV3wqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfdXBsb2FkX25ldygpPC9jb2RlPjwvYT48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9IkdzdEdMVXBsb2FkTWV0YS5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXVwbG9hZC1tZXRhLW5ldyI+PC9hPjxoMz5nc3RfZ2xfdXBsb2FkX21ldGFfbmV3wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMVXBsb2FkTWV0YTwvc3Bhbj48L2E+wqAqCi1nc3RfZ2xfdXBsb2FkX21ldGFfbmV3ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjEuNy4yLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj48L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjEuNy4yLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Ci08cD4gYSBuZXcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWRNZXRhPC9zcGFuPjwvYT4gb2JqZWN0PC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC11cGxvYWQtbWV0YS1zZXQtZm9ybWF0Ij48L2E+PGgzPmdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3VwbG9hZF9tZXRhX3NldF9mb3JtYXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZE1ldGE8L3NwYW4+PC9hPiAqdXBsb2FkPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Ci08cD5Jbml0aWFsaXplcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dXBsb2FkPC9jb2RlPjwvZW0+Ci0gd2l0aCB0aGUgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIHVwbG9hZC48L3A+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMS43LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KLTxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD51cGxvYWQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZDwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5pbnB1dCA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtdXBsb2FkLW1ldGEtZ2V0LWZvcm1hdCI+PC9hPjxoMz5nc3RfZ2xfdXBsb2FkX21ldGFfZ2V0X2Zvcm1hdMKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPsKgKgotZ3N0X2dsX3VwbG9hZF9tZXRhX2dldF9mb3JtYXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZE1ldGE8L3NwYW4+PC9hPiAqdXBsb2FkPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIxLjcuNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgotPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgotPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD51cGxvYWQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZDwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj48L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjEuNy40LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Ci08cD4gVGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+IHNldCBieQotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sI2dzdC1nbC11cGxvYWQtbWV0YS1zZXQtZm9ybWF0IiB0aXRsZT0iZ3N0X2dsX3VwbG9hZF9tZXRhX3NldF9mb3JtYXTCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0KCk8L2NvZGU+PC9hPi4gPC9wPgotPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRG9uJ3QgZnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXVwbG9hZC1tZXRhLWFkZC10by1idWZmZXIiPjwvYT48aDM+Z3N0X2dsX3VwbG9hZF9tZXRhX2FkZF90b19idWZmZXLCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgotZ3N0X2dsX3VwbG9hZF9tZXRhX2FkZF90b19idWZmZXIgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZE1ldGE8L3NwYW4+PC9hPiAqdXBsb2FkPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+ICpidWZmZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgotPHA+QWRkcyBhIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlb21ldGEuaHRtbCNHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGE8L3NwYW4+PC9hPiBvbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+YnVmZmVyPC9jb2RlPjwvZW0+Ci0gdXNpbmcgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnVwbG9hZDwvY29kZT48L2VtPgotPC9wPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjEuNy41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXBsb2FkPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZE1ldGE8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5idWZmZXI8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QnVmZmVyPC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIxLjcuNS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgotPHA+IHdoZXRoZXIgaXQgd2FzIHN1Y2Nlc3NmdWw8L3A+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJHc3RHTFVwbG9hZE1ldGEub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEdMVXBsb2FkTWV0YS1zdHJ1Y3QiPjwvYT48aDM+R3N0R0xVcGxvYWRNZXRhPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0R0xVcGxvYWRNZXRhIEdzdEdMVXBsb2FkTWV0YTs8L3ByZT4KLTxwPk9wYXF1ZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZE1ldGE8L3NwYW4+PC9hPiBvYmplY3Q8L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iR3N0R0xVcGxvYWRNZXRhLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KLTxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZDwvc3Bhbj48L2E+LCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJmb290ZXIiPgotPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvR3N0R0xXaW5kb3cuaHRtbCBiL2RvY3MvbGlicy9odG1sL0dzdEdMV2luZG93Lmh0bWwKaW5kZXggNTY1MjExZS4uMjRlYjRiMiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvR3N0R0xXaW5kb3cuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTFdpbmRvdy5odG1sCkBAIC0zLDEwICszLDEwIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RHTFdpbmRvdzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPgogPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0FuZHJvaWQuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93QW5kcm9pZCI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgpAQCAtMjEsNyArMjEsNyBAQAogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0FuZHJvaWQuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTFdpbmRvdy5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtOTksMTQgKzk5LDYgQEAKIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LWRyYXctdW5sb2NrZWQiIHRpdGxlPSJnc3RfZ2xfd2luZG93X2RyYXdfdW5sb2NrZWTCoCgpIj5nc3RfZ2xfd2luZG93X2RyYXdfdW5sb2NrZWQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+CiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+CkBAIC0yMzgsNyArMjMwLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xXaW5kb3cuc2lnbmFscyI+PC9hPjxoMj5TaWduYWxzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJzaWduYWxzX3JldHVybiI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InNpZ25hbHNfbmFtZSI+CkBAIC0yNjAsNyArMjUyLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xXaW5kb3cub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTMzOSw4ICszMzEsOCBAQAogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xXaW5kb3c8L3NwYW4+PC9hPsKgKgogZ3N0X2dsX3dpbmRvd19uZXcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwiIHRpdGxlPSJHc3RHTERpc3BsYXkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERpc3BsYXk8L3NwYW4+PC9hPiAqZGlzcGxheTwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjguNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjguOC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzU0LDcgKzM0Niw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjguNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjguOC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IGEgbmV3IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFdpbmRvdzwvc3Bhbj48L2E+IHVzaW5nIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5kaXNwbGF5PC9jb2RlPjwvZW0+CiAncyBjb25uZWN0aW9uLiA8L3A+CiA8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJGcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBmdWxsPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KQEAgLTM2OCwzMSArMzYwLDggQEAKIGdzdF9nbF93aW5kb3dfZHJhdyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFdpbmRvdzwvc3Bhbj48L2E+ICp3aW5kb3c8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+UmVkcmF3IHRoZSB3aW5kb3cgY29udGVudHMuICBJbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGludm9rZSB0aGUgZHJhdyBjYWxsYmFjay48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KLTxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+PHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+d2luZG93PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xXaW5kb3c8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuNDwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXdpbmRvdy1kcmF3LXVubG9ja2VkIj48L2E+PGgzPmdzdF9nbF93aW5kb3dfZHJhd191bmxvY2tlZMKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF93aW5kb3dfZHJhd191bmxvY2tlZCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFdpbmRvdzwvc3Bhbj48L2E+ICp3aW5kb3c8L2NvZGU+PC9lbT4pOzwvcHJlPgotPHA+UmVkcmF3IHRoZSB3aW5kb3cgY29udGVudHMuICBJbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGludm9rZSB0aGUgZHJhdyBjYWxsYmFjay48L3A+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjEwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQxNCw4ICszODMsOCBAQAogZ3N0X2dsX3dpbmRvd19pc19ydW5uaW5nICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvdyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMV2luZG93PC9zcGFuPjwvYT4gKndpbmRvdzwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5XaGV0aGVyIHRoZSBydW5sb29wIGlzIHJ1bm5pbmc8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjExLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjEwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00MzcsOCArNDA2LDggQEAKIGdzdF9nbF93aW5kb3dfcXVpdCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFdpbmRvdzwvc3Bhbj48L2E+ICp3aW5kb3c8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+UXVpdCB0aGUgcnVubG9vcCdzIGV4ZWN1dGlvbi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjEyLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjExLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00NjAsOCArNDI5LDggQEAKIGdzdF9nbF93aW5kb3dfcnVuICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvdyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMV2luZG93PC9zcGFuPjwvYT4gKndpbmRvdzwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5TdGFydCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBydW5sb29wLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjguMTMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjguMTIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ4Miw4ICs0NTEsOCBAQAogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPsKgKgogZ3N0X2dsX3dpbmRvd19nZXRfY29udGV4dCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFdpbmRvdzwvc3Bhbj48L2E+ICp3aW5kb3c8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4xNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4xMy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDk3LDcgKzQ2Niw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjE0LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjEzLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+IGFzc29jaWF0ZWQgd2l0aCB0aGlzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53aW5kb3c8L2NvZGU+PC9lbT4KIC4gPC9wPgogPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+CkBAIC01MTAsOCArNDc5LDggQEAKIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnRwdHIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3VpbnRwdHI8L3NwYW4+PC9hPgogZ3N0X2dsX3dpbmRvd19nZXRfZGlzcGxheSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFdpbmRvdzwvc3Bhbj48L2E+ICp3aW5kb3c8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4xNS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4xNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTI1LDcgKzQ5NCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjE1LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjE0LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gdGhlIHdpbmRvd2luZyBzeXN0ZW0gZGlzcGxheSBoYW5kbGUgZm9yIHRoaXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndpbmRvdzwvY29kZT48L2VtPgogPC9wPgogPC9kaXY+CkBAIC01NDMsOCArNTEyLDggQEAKICBpcyBndWFyZW50ZWVkIHRvCiBoYXZlIGV4ZWN1dGVkIHdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjguMTYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjguMTUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU4NSw4ICs1NTQsOCBAQAogIG9uIHRoZSB3aW5kb3cgdGhyZWFkLiAgVGhlIGNhbGxiYWNrIG1heSBub3QKIGhhdmUgYmVlbiBleGVjdXRlZCB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjE3LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjE2LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02MzAsOCArNTk5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1EYXRhc2V0cy5odG1sI0dEZXN0cm95Tm90aWZ5Ij48c3BhbiBjbGFzcz0idHlwZSI+R0Rlc3Ryb3lOb3RpZnk8L3NwYW4+PC9hPiBkZXN0cm95X25vdGlmeTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5TZXRzIHRoZSBjYWxsYmFjayBjYWxsZWQgd2hlbiB0aGUgd2luZG93IGlzIGFib3V0IHRvIGNsb3NlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjguMTguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjguMTcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTY3NSw4ICs2NDQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4gZGVzdHJveV9ub3RpZnk8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2V0cyB0aGUgZHJhdyBjYWxsYmFjayBjYWxsZWQgZXZlcnl0aW1lIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sI2dzdC1nbC13aW5kb3ctZHJhdyIgdGl0bGU9ImdzdF9nbF93aW5kb3dfZHJhd8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX3dpbmRvd19kcmF3KCk8L2NvZGU+PC9hPiBpcyBjYWxsZWQ8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjE5LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjE4LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC03MjAsOCArNjg5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4gZGVzdHJveV9ub3RpZnk8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2V0cyB0aGUgcmVzaXplIGNhbGxiYWNrIGNhbGxlZCBldmVyeXRpbWUgYSByZXNpemUgb2YgdGhlIHdpbmRvdyBvY2N1cnMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4yMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4xOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzY1LDggKzczNCw4IEBACiAgc2hvdWxkIHJlbmRlciBpbnRvLiAgU29tZSBpbXBsZW1lbnRhdGlvbnMKIHJlcXVpcmUgdGhpcyB0byBiZSBjYWxsZWQgd2l0aCBhIHZhbGlkIGhhbmRsZSBiZWZvcmUgZHJhd2luZyBjYW4gY29tbWVuY2UuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4yMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4yMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzk0LDggKzc2Myw4IEBACiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50cHRyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50cHRyPC9zcGFuPjwvYT4KIGdzdF9nbF93aW5kb3dfZ2V0X3dpbmRvd19oYW5kbGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xXaW5kb3c8L3NwYW4+PC9hPiAqd2luZG93PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjguMjIuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjguMjEuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTgwOSw3ICs3NzgsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4yMi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4yMS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHRoZSB3aW5kb3cgaGFuZGxlIHdlIGFyZSBjdXJyZW50bHkgcmVuZGVyaW5nIGludG88L3A+CiA8L2Rpdj4KIDxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuNDwvcD4KQEAgLTgyNCw4ICs3OTMsOCBAQAogPHA+U2V0IHRoZSBwcmVmZXJyZWQgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgd2luZG93LiAgSW1wbGVtZW50YXRpb25zIGFyZSBmcmVlCiB0byBpZ25vcmUgdGhpcyBpbmZvcm1hdGlvbi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjIzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjIyLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC04NTksOCArODI4LDggQEAKIGdzdF9nbF93aW5kb3dfc2hvdyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFdpbmRvdzwvc3Bhbj48L2E+ICp3aW5kb3c8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+UHJlc2VudCB0aGUgd2luZG93IHRvIHRoZSBzY3JlZW4uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4yNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4yMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtODgzLDggKzg1Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+ICp3aWR0aDwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gKmhlaWdodDwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjI1LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjI0LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC05MjUsOCArODk0LDggQEAKIGZyb20gdGhlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53aW5kb3c8L2NvZGU+PC9lbT4KIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjI2LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjI1LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC05NTMsOCArOTIyLDggQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdzdEdMV2luZG93RXJyb3IiPjwvYT48aDM+ZW51bSBHc3RHTFdpbmRvd0Vycm9yPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjkuMi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOS4yLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTk2LDcgKzk2NSw2IEBACiAgIGd1aW50cHRyICgqZ2V0X2Rpc3BsYXkpICAgICAgICAoR3N0R0xXaW5kb3cgKndpbmRvdyk7CiAgIHZvaWQgICAgICgqc2V0X3dpbmRvd19oYW5kbGUpICAoR3N0R0xXaW5kb3cgKndpbmRvdywgZ3VpbnRwdHIgaWQpOwogICBndWludHB0ciAoKmdldF93aW5kb3dfaGFuZGxlKSAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwotICB2b2lkICAgICAoKmRyYXdfdW5sb2NrZWQpICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwogICB2b2lkICAgICAoKmRyYXcpICAgICAgICAgICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwogICB2b2lkICAgICAoKnJ1bikgICAgICAgICAgICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwogICB2b2lkICAgICAoKnF1aXQpICAgICAgICAgICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwpAQCAtMTAxMyw4ICs5ODEsOCBAQAogfSBHc3RHTFdpbmRvd0NsYXNzOwogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy45LjQuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjkuNC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDQzLDExICsxMDExLDYgQEAKIDx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTFdpbmRvd0NsYXNzLmRyYXctdW5sb2NrZWQiPjwvYT5kcmF3X3VubG9ja2VkPC9jb2RlPjwvZW0+wqAoKTwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5yZWRyYXcgdGhlIHdpbmRvdyB3aXRoIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9uczwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMV2luZG93Q2xhc3MuZHJhdyI+PC9hPmRyYXc8L2NvZGU+PC9lbT7CoCgpPC9wPjwvdGQ+CiA8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnJlZHJhdyB0aGUgd2luZG93IHdpdGggdGhlIHNwZWNpZmllZCBkaW1lbnNpb25zPC9wPjwvdGQ+CiA8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KQEAgLTExMjgsOCArMTA5MSw4IEBACiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+ICAgICB1c2VyX2RhdGEpPC9wcmU+CiA8cD5XaWxsIGJlIGVtaXR0ZWQgd2hlbiBhIGtleSBldmVudCBpcyByZWNlaXZlZCBieSB0aGUgR3N0R0x3aW5kb3cuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuMTAuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuMTAuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTE3NCw4ICsxMTM3LDggQEAKICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gICAgIHVzZXJfZGF0YSk8L3ByZT4KIDxwPldpbGwgYmUgZW1pdHRlZCB3aGVuIGEgbW91c2UgZXZlbnQgaXMgcmVjZWl2ZWQgYnkgdGhlIEdzdEdMd2luZG93LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjEwLjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjEwLjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2Fubm90YXRpb24tZ2xvc3NhcnkuaHRtbCBiL2RvY3MvbGlicy9odG1sL2Fubm90YXRpb24tZ2xvc3NhcnkuaHRtbAppbmRleCBmNDlmYjI3Li45ZDhlY2JlIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5Lmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvYW5ub3RhdGlvbi1nbG9zc2FyeS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+QW5ub3RhdGlvbiBHbG9zc2FyeTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJhcGktaW5kZXgtZGVwcmVjYXRlZC5odG1sIiB0aXRsZT0iSW5kZXggb2YgZGVwcmVjYXRlZCBBUEkiPgpAQCAtMzgsNiArMzgsOCBAQAogPGEgbmFtZT0iZ2xzQSI+PC9hPjxoMyBjbGFzcz0idGl0bGUiPkE8L2gzPgogPGR0PjxzcGFuIGNsYXNzPSJnbG9zc3Rlcm0iPjxhIG5hbWU9ImFubm90YXRpb24tZ2xvc3N0ZXJtLWFsbG93LW5vbmUiPjwvYT5hbGxvdy1ub25lPC9zcGFuPjwvZHQ+CiA8ZGQgY2xhc3M9Imdsb3NzZGVmIj48cD5OVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLjwvcD48L2RkPgorPGR0PjxzcGFuIGNsYXNzPSJnbG9zc3Rlcm0iPjxhIG5hbWU9ImFubm90YXRpb24tZ2xvc3N0ZXJtLWFycmF5Ij48L2E+YXJyYXk8L3NwYW4+PC9kdD4KKzxkZCBjbGFzcz0iZ2xvc3NkZWYiPjxwPlBhcmFtZXRlciBwb2ludHMgdG8gYW4gYXJyYXkgb2YgaXRlbXMuPC9wPjwvZGQ+CiA8YSBuYW1lPSJnbHNDIj48L2E+PGgzIGNsYXNzPSJ0aXRsZSI+QzwvaDM+CiA8ZHQ+PHNwYW4gY2xhc3M9Imdsb3NzdGVybSI+PGEgbmFtZT0iYW5ub3RhdGlvbi1nbG9zc3Rlcm0tY2xvc3VyZSI+PC9hPmNsb3N1cmU8L3NwYW4+PC9kdD4KIDxkZCBjbGFzcz0iZ2xvc3NkZWYiPjxwPlRoaXMgcGFyYW1ldGVyIGlzIGEgJ3VzZXJfZGF0YScsIGZvciBjYWxsYmFja3M7IG1hbnkgYmluZGluZ3MgY2FuIHBhc3MgTlVMTCBoZXJlLjwvcD48L2RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvYXBpLWluZGV4LWRlcHJlY2F0ZWQuaHRtbCBiL2RvY3MvbGlicy9odG1sL2FwaS1pbmRleC1kZXByZWNhdGVkLmh0bWwKaW5kZXggMWJiMzU5YS4uZjRjZDg2NiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvYXBpLWluZGV4LWRlcHJlY2F0ZWQuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9hcGktaW5kZXgtZGVwcmVjYXRlZC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+SW5kZXggb2YgZGVwcmVjYXRlZCBBUEk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iYXBpLWluZGV4LWZ1bGwuaHRtbCIgdGl0bGU9IkluZGV4Ij4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2FwaS1pbmRleC1mdWxsLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9hcGktaW5kZXgtZnVsbC5odG1sCmluZGV4IGU3YzEzYjQuLmFhZjlmMDEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2FwaS1pbmRleC1mdWxsLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvYXBpLWluZGV4LWZ1bGwuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkluZGV4OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdHJlYW1lci1saWJzLWhpZXJhcmNoeS5odG1sIiB0aXRsZT0iUGFydMKgSUkuwqBPYmplY3QgSGllcmFyY2h5Ij4KQEAgLTE1MSw2ICsxNTEsMTAgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LWJ1ZmZlci1hZGQtZ2wtc3luYy1tZXRhLWZ1bGwiIHRpdGxlPSJnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGFfZnVsbMKgKCkiPmdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YV9mdWxsPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCIgdGl0bGU9IkdzdEdMU3luY01ldGEiPkdzdEdMU3luY01ldGE8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0bXBlZ3ZpZGVvbWV0YS5odG1sI2dzdC1idWZmZXItYWRkLW1wZWctdmlkZW8tbWV0YSIgdGl0bGU9ImdzdF9idWZmZXJfYWRkX21wZWdfdmlkZW9fbWV0YcKgKCkiPmdzdF9idWZmZXJfYWRkX21wZWdfdmlkZW9fbWV0YTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RtcGVndmlkZW9tZXRhLmh0bWwiIHRpdGxlPSJnc3RtcGVndmlkZW9tZXRhIj5nc3RtcGVndmlkZW9tZXRhPC9hPgogPC9kdD4KIDxkZD48L2RkPgpAQCAtMTYzLDkgKzE2NywyOSBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI2dzdC1idWZmZXItcG9vbC1jb25maWctZ2V0LWdsLWFsbG9jYXRpb24tcGFyYW1zIiB0aXRsZT0iZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXPCoCgpIj5nc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF9nbF9hbGxvY2F0aW9uX3BhcmFtczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+R3N0R0xCdWZmZXJQb29sPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI2dzdC1idWZmZXItcG9vbC1jb25maWctc2V0LWdsLWFsbG9jYXRpb24tcGFyYW1zIiB0aXRsZT0iZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXPCoCgpIj5nc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9nbF9hbGxvY2F0aW9uX3BhcmFtczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+R3N0R0xCdWZmZXJQb29sPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVNZTkMtTUVUQTpDQVBTIiB0aXRsZT0iR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9TWU5DX01FVEEiPkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfU1lOQ19NRVRBPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCIgdGl0bGU9IkdzdEdMU3luY01ldGEiPkdzdEdMU3luY01ldGE8L2E+CiA8L2R0PgogPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVRFWFRVUkUtVEFSR0VULTJEOkNBUFMiIHRpdGxlPSJHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUXzJEIj5HU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUXzJEPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiIHRpdGxlPSJPcGVuR0wgRm9ybWF0cyI+T3BlbkdMIEZvcm1hdHM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVRFWFRVUkUtVEFSR0VULUVYVEVSTkFMLU9FUzpDQVBTIiB0aXRsZT0iR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMiPkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiIHRpdGxlPSJPcGVuR0wgRm9ybWF0cyI+T3BlbkdMIEZvcm1hdHM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVRFWFRVUkUtVEFSR0VULVJFQ1RBTkdMRTpDQVBTIiB0aXRsZT0iR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUiPkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiIHRpdGxlPSJPcGVuR0wgRm9ybWF0cyI+T3BlbkdMIEZvcm1hdHM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+CiA8YSBuYW1lPSJpZHhDIj48L2E+PGgzIGNsYXNzPSJ0aXRsZSI+QzwvaDM+CiA8ZHQ+CiBHc3RDYW1lcmFCaW5Nb2RlLCBlbnVtIGluIGdzdGNhbWVyYWJpbi1lbnVtCkBAIC0xOTYsNyArMjIwLDExIEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjQ0RDQjpDQVBTIiB0aXRsZT0iQ0RDQsKgKCkiPkNEQ0I8L2E+LCB1c2VyX2Z1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9IlV0aWxpdGllcyI+VXRpbGl0aWVzPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR1NULUNBUFMtRkVBVFVSRS1NRU1PUlktR0wtQlVGRkVSOkNBUFMiIHRpdGxlPSJHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9CVUZGRVIiPkdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX0JVRkZFUjwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXIiPkdzdEdMQnVmZmVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0NEQ0I6Q0FQUyIgdGl0bGU9IkNEQ0LCoCgpIj5DRENCPC9hPiwgdXNlcl9mdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTI3MSwxMSArMjk5LDE1IEBACiA8ZGQ+PC9kZD4KIDxhIG5hbWU9ImlkeEciPjwvYT48aDMgY2xhc3M9InRpdGxlIj5HPC9oMz4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdG9yLXN0cnVjdCIgdGl0bGU9IkdzdEdMQWxsb2NhdG9yIj5Hc3RHTEFsbG9jYXRvcjwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5nc3RnbG1lbW9yeTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5nc3RnbGJhc2VtZW1vcnk8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRvckNsYXNzIiB0aXRsZT0iR3N0R0xBbGxvY2F0b3JDbGFzcyI+R3N0R0xBbGxvY2F0b3JDbGFzczwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5nc3RnbG1lbW9yeTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYyIgdGl0bGU9IkdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jwqAoKSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmM8L2E+LCB1c2VyX2Z1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jIiB0aXRsZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmPCoCgpIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYzwvYT4sIHVzZXJfZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5nc3RnbGJhc2VtZW1vcnk8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC0yODMsNiArMzE1LDE0IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPkdzdEdMQXN5bmNEZWJ1ZzwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIiB0aXRsZT0iT3BlbkdMIGRlYnVnZ2luZyI+T3BlbkdMIERlYnVnZ2luZzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnTG9nR2V0TWVzc2FnZSIgdGl0bGU9IkdzdEdMQXN5bmNEZWJ1Z0xvZ0dldE1lc3NhZ2XCoCgpIj5Hc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlPC9hPiwgdXNlcl9mdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIiB0aXRsZT0iT3BlbkdMIGRlYnVnZ2luZyI+T3BlbkdMIGRlYnVnZ2luZzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXItc3RydWN0IiB0aXRsZT0iR3N0R0xCYXNlRmlsdGVyIj5Hc3RHTEJhc2VGaWx0ZXI8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIiB0aXRsZT0iR3N0R0xCYXNlRmlsdGVyIj5Hc3RHTEJhc2VGaWx0ZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CkBAIC0yOTUsMTkgKzMzNSw3OSBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbC1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xCdWZmZXJQb29sIj5Hc3RHTEJ1ZmZlclBvb2w8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXJQb29sIj5Hc3RHTEJ1ZmZlclBvb2w8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5Hc3RHTEJhc2VNZW1vcnk8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5Hc3RHTEJhc2VNZW1vcnk8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sQ2xhc3MiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xCdWZmZXJQb29sQ2xhc3MiPkdzdEdMQnVmZmVyUG9vbENsYXNzPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+R3N0R0xCdWZmZXJQb29sPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvci1zdHJ1Y3QiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcjwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNHTENCOkNBUFMiIHRpdGxlPSJHTENCwqAoKSI+R0xDQjwvYT4sIHVzZXJfZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb27CoCgpIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uPC9hPiwgdXNlcl9mdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPkdzdEdMQmFzZU1lbW9yeTwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNHTENCLVYyOkNBUFMiIHRpdGxlPSJHTENCX1YywqAoKSI+R0xDQl9WMjwvYT4sIHVzZXJfZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3M8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5nc3RnbGJhc2VtZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uwqAoKSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uPC9hPiwgdXNlcl9mdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPkdzdEdMQmFzZU1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uwqAoKSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb248L2E+LCB1c2VyX2Z1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+R3N0R0xCYXNlTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbsKgKCkiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbjwvYT4sIHVzZXJfZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5Hc3RHTEJhc2VNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbsKgKCkiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uPC9hPiwgdXNlcl9mdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPkdzdEdMQmFzZU1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbsKgKCkiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb248L2E+LCB1c2VyX2Z1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+R3N0R0xCYXNlTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUVycm9yIiB0aXRsZT0iZW51bSBHc3RHTEJhc2VNZW1vcnlFcnJvciI+R3N0R0xCYXNlTWVtb3J5RXJyb3I8L2E+LCBlbnVtIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeVRyYW5zZmVyIiB0aXRsZT0iZW51bSBHc3RHTEJhc2VNZW1vcnlUcmFuc2ZlciI+R3N0R0xCYXNlTWVtb3J5VHJhbnNmZXI8L2E+LCBlbnVtIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXIiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+R3N0R0xCdWZmZXI8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+R3N0R0xCdWZmZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIj5Hc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXM8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+R3N0R0xCdWZmZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRvci1zdHJ1Y3QiIHRpdGxlPSJHc3RHTEJ1ZmZlckFsbG9jYXRvciI+R3N0R0xCdWZmZXJBbGxvY2F0b3I8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+R3N0R0xCdWZmZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzIiB0aXRsZT0iR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzcyI+R3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzczwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyIj5Hc3RHTEJ1ZmZlcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2wtc3RydWN0IiB0aXRsZT0iR3N0R0xCdWZmZXJQb29sIj5Hc3RHTEJ1ZmZlclBvb2w8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXJQb29sIj5Hc3RHTEJ1ZmZlclBvb2w8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sQ2xhc3MiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2xDbGFzcyI+R3N0R0xCdWZmZXJQb29sQ2xhc3M8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXJQb29sIj5Hc3RHTEJ1ZmZlclBvb2w8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjR0xDQjpDQVBTIiB0aXRsZT0iR0xDQsKgKCkiPkdMQ0I8L2E+LCB1c2VyX2Z1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dMQ0ItVjI6Q0FQUyIgdGl0bGU9IkdMQ0JfVjLCoCgpIj5HTENCX1YyPC9hPiwgdXNlcl9mdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTM1OSw3ICs0NTksNyBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dzdEdMRGlzcGxheVByb2plY3Rpb24iIHRpdGxlPSJlbnVtIEdzdEdMRGlzcGxheVByb2plY3Rpb24iPkdzdEdMRGlzcGxheVByb2plY3Rpb248L2E+LCBlbnVtIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9IlV0aWxpdGllcyI+VXRpbGl0aWVzPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dzdEdMRGlzcGxheVByb2plY3Rpb24iIHRpdGxlPSJlbnVtIEdzdEdMRGlzcGxheVByb2plY3Rpb24iPkdzdEdMRGlzcGxheVByb2plY3Rpb248L2E+LCBlbnVtIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgpAQCAtMzY3LDEwICs0NjcsNiBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCNHc3RHTERvd25sb2FkLXN0cnVjdCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPkdzdEdMRG93bmxvYWQ8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPkdzdEdMRG93bmxvYWQ8L2E+Ci08L2R0PgotPGRkPjwvZGQ+Ci08ZHQ+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xGaWx0ZXIuaHRtbCNHc3RHTEZpbHRlci1zdHJ1Y3QiIHRpdGxlPSJHc3RHTEZpbHRlciI+R3N0R0xGaWx0ZXI8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRmlsdGVyLmh0bWwiIHRpdGxlPSJHc3RHTEZpbHRlciI+R3N0R0xGaWx0ZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CkBAIC0zODcsNyArNDgzLDI3IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3Itc3RydWN0IiB0aXRsZT0iR3N0R0xNZW1vcnlBbGxvY2F0b3IiPkdzdEdMTWVtb3J5QWxsb2NhdG9yPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyIgdGl0bGU9IkdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MiPkdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3M8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCTyIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj5Hc3RHTE1lbW9yeVBCTzwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj5Hc3RHTE1lbW9yeVBCTzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPQWxsb2NhdG9yLXN0cnVjdCIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yIj5Hc3RHTE1lbW9yeVBCT0FsbG9jYXRvcjwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj5nc3RnbG1lbW9yeXBibzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPQWxsb2NhdG9yQ2xhc3MiIHRpdGxlPSJHc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzIj5Hc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPmdzdGdsbWVtb3J5cGJvPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgpAQCAtMzk1LDMxICs1MTEsMTE1IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci1zdHJ1Y3QiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNHc3RHTFNoYWRlci1zdHJ1Y3QiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci0tYWN0aXZlIiB0aXRsZT0iVGhlIOKAnGFjdGl2ZeKAnSBwcm9wZXJ0eSI+R3N0R0xTaGFkZXI6YWN0aXZlPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLWxpbmtlZCIgdGl0bGU9IlRoZSDigJxsaW5rZWTigJ0gcHJvcGVydHkiPkdzdEdMU2hhZGVyOmxpbmtlZDwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS1jb21waWxlZCIgdGl0bGU9IlRoZSDigJxjb21waWxlZOKAnSBwcm9wZXJ0eSI+R3N0R0xTaGFkZXI6Y29tcGlsZWQ8L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xFcnJvciIgdGl0bGU9ImVudW0gR3N0R0xTTEVycm9yIj5Hc3RHTFNMRXJyb3I8L2E+LCBlbnVtIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiIHRpdGxlPSJHc3RHTFNMIj5Hc3RHTFNMPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLWZyYWdtZW50LXNyYyIgdGl0bGU9IlRoZSDigJxmcmFnbWVudC1zcmPigJ0gcHJvcGVydHkiPkdzdEdMU2hhZGVyOmZyYWdtZW50LXNyYzwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFByb2ZpbGUiIHRpdGxlPSJlbnVtIEdzdEdMU0xQcm9maWxlIj5Hc3RHTFNMUHJvZmlsZTwvYT4sIGVudW0gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCIgdGl0bGU9IkdzdEdMU0wiPkdzdEdMU0w8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci0tdmVydGV4LXNyYyIgdGl0bGU9IlRoZSDigJx2ZXJ0ZXgtc3Jj4oCdIHByb3BlcnR5Ij5Hc3RHTFNoYWRlcjp2ZXJ0ZXgtc3JjPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorR3N0R0xTTFN0YWdlLCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+R3N0R0xTTFN0YWdlPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXJFcnJvciIgdGl0bGU9ImVudW0gR3N0R0xTaGFkZXJFcnJvciI+R3N0R0xTaGFkZXJFcnJvcjwvYT4sIGVudW0gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+Z3N0Z2xzaGFkZXI8L2E+CitHc3RHTFNMU3RhZ2VDbGFzcywgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPkdzdEdMU0xTdGFnZTwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyU291cmNlVHlwZSIgdGl0bGU9ImVudW0gR3N0R0xTaGFkZXJTb3VyY2VUeXBlIj5Hc3RHTFNoYWRlclNvdXJjZVR5cGU8L2E+LCBlbnVtIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPmdzdGdsc2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMVmVyc2lvbiIgdGl0bGU9ImVudW0gR3N0R0xTTFZlcnNpb24iPkdzdEdMU0xWZXJzaW9uPC9hPiwgZW51bSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIiB0aXRsZT0iR3N0R0xTTCI+R3N0R0xTTDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtRVJST1I6Q0FQUyIgdGl0bGU9IkdTVF9HTFNMX0VSUk9SIj5HU1RfR0xTTF9FUlJPUjwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiIHRpdGxlPSJHc3RHTFNMIj5Hc3RHTFNMPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC1lcnJvci1xdWFyayIgdGl0bGU9ImdzdF9nbHNsX2Vycm9yX3F1YXJrwqAoKSI+Z3N0X2dsc2xfZXJyb3JfcXVhcms8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIiB0aXRsZT0iR3N0R0xTTCI+R3N0R0xTTDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtcHJvZmlsZS1mcm9tLXN0cmluZyIgdGl0bGU9ImdzdF9nbHNsX3Byb2ZpbGVfZnJvbV9zdHJpbmfCoCgpIj5nc3RfZ2xzbF9wcm9maWxlX2Zyb21fc3RyaW5nPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCIgdGl0bGU9IkdzdEdMU0wiPkdzdEdMU0w8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXByb2ZpbGUtdG8tc3RyaW5nIiB0aXRsZT0iZ3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmfCoCgpIj5nc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiIHRpdGxlPSJHc3RHTFNMIj5Hc3RHTFNMPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsc2xfc3RhZ2VfY29tcGlsZSwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+R3N0R0xTTFN0YWdlPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsc2xfc3RhZ2VfZ2V0X2hhbmRsZSwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+R3N0R0xTTFN0YWdlPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsc2xfc3RhZ2VfZ2V0X3Byb2ZpbGUsIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPkdzdEdMU0xTdGFnZTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbHNsX3N0YWdlX2dldF9zaGFkZXJfdHlwZSwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+R3N0R0xTTFN0YWdlPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsc2xfc3RhZ2VfZ2V0X3ZlcnNpb24sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPkdzdEdMU0xTdGFnZTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbHNsX3N0YWdlX25ldywgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+R3N0R0xTTFN0YWdlPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfZnJhZ21lbnQsIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPkdzdEdMU0xTdGFnZTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X3ZlcnRleCwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+R3N0R0xTTFN0YWdlPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nLCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj5Hc3RHTFNMU3RhZ2U8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Citnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmdzLCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj5Hc3RHTFNMU3RhZ2U8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Citnc3RfZ2xzbF9zdGFnZV9zZXRfc3RyaW5ncywgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+R3N0R0xTTFN0YWdlPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC1zdHJpbmctZ2V0LXZlcnNpb24tcHJvZmlsZSIgdGl0bGU9ImdzdF9nbHNsX3N0cmluZ19nZXRfdmVyc2lvbl9wcm9maWxlwqAoKSI+Z3N0X2dsc2xfc3RyaW5nX2dldF92ZXJzaW9uX3Byb2ZpbGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIiB0aXRsZT0iR3N0R0xTTCI+R3N0R0xTTDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi1mcm9tLXN0cmluZyIgdGl0bGU9ImdzdF9nbHNsX3ZlcnNpb25fZnJvbV9zdHJpbmfCoCgpIj5nc3RfZ2xzbF92ZXJzaW9uX2Zyb21fc3RyaW5nPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCIgdGl0bGU9IkdzdEdMU0wiPkdzdEdMU0w8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXZlcnNpb24tcHJvZmlsZS1mcm9tLXN0cmluZyIgdGl0bGU9ImdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV9mcm9tX3N0cmluZ8KgKCkiPmdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV9mcm9tX3N0cmluZzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiIHRpdGxlPSJHc3RHTFNMIj5Hc3RHTFNMPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC12ZXJzaW9uLXByb2ZpbGUtdG8tc3RyaW5nIiB0aXRsZT0iZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX3RvX3N0cmluZ8KgKCkiPmdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV90b19zdHJpbmc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIiB0aXRsZT0iR3N0R0xTTCI+R3N0R0xTTDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi10by1zdHJpbmciIHRpdGxlPSJnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZ8KgKCkiPmdzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCIgdGl0bGU9IkdzdEdMU0wiPkdzdEdMU0w8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CitHc3RHTFN0ZXJlb0Rvd25taXgsIGVudW0gaW4gR3N0R0xWaWV3Q29udmVydAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgpAQCAtNDI3LDExICs2MjcsNDMgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij5Hc3RHTFRleHR1cmVUYXJnZXQ8L2E+LCBlbnVtIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPk9wZW5HTCBGb3JtYXRzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwjR3N0R0xVcGxvYWQtc3RydWN0IiB0aXRsZT0iR3N0R0xVcGxvYWQiPkdzdEdMVXBsb2FkPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPkdzdEdMVXBsb2FkPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sI0dzdEdMVXBsb2FkTWV0YS1zdHJ1Y3QiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPkdzdEdMVXBsb2FkTWV0YTwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPkdzdEdMVXBsb2FkTWV0YTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK0dzdEdMVmlld0NvbnZlcnQsIHN0cnVjdCBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CitHc3RHTFZpZXdDb252ZXJ0OmRvd25taXgtbW9kZSwgb2JqZWN0IHByb3BlcnR5IGluIEdzdEdMVmlld0NvbnZlcnQKKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK0dzdEdMVmlld0NvbnZlcnQ6aW5wdXQtZmxhZ3Mtb3ZlcnJpZGUsIG9iamVjdCBwcm9wZXJ0eSBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CitHc3RHTFZpZXdDb252ZXJ0OmlucHV0LW1vZGUtb3ZlcnJpZGUsIG9iamVjdCBwcm9wZXJ0eSBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CitHc3RHTFZpZXdDb252ZXJ0Om91dHB1dC1mbGFncy1vdmVycmlkZSwgb2JqZWN0IHByb3BlcnR5IGluIEdzdEdMVmlld0NvbnZlcnQKKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK0dzdEdMVmlld0NvbnZlcnQ6b3V0cHV0LW1vZGUtb3ZlcnJpZGUsIG9iamVjdCBwcm9wZXJ0eSBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CitHc3RHTFZpZXdDb252ZXJ0Q2xhc3MsIHN0cnVjdCBpbiBHc3RHTFZpZXdDb252ZXJ0CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC01MTEsNiArNzQzLDUwIEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctQUxMT0M6Q0FQUyIgdGl0bGU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0FMTE9DIj5HU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19BTExPQzwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctQlVGRkVSOkNBUFMiIHRpdGxlPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19CVUZGRVIiPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0JVRkZFUjwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXIiPkdzdEdMQnVmZmVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVVTRVI6Q0FQUyIgdGl0bGU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1VTRVIiPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1VTRVI8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVZJREVPOkNBUFMiIHRpdGxlPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19WSURFTyI+R1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfVklERU88L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1XUkFQLUdQVS1IQU5ETEU6Q0FQUyIgdGl0bGU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRSI+R1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9HUFVfSEFORExFPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5nc3RnbGJhc2VtZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctV1JBUC1TWVNNRU06Q0FQUyIgdGl0bGU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfU1lTTUVNIj5HU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX1NZU01FTTwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1jb3B5IiB0aXRsZT0iZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHnCoCgpIj5nc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfY29weTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1jb3B5LWRhdGEiIHRpdGxlPSJnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhwqAoKSI+Z3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1mcmVlIiB0aXRsZT0iZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWXCoCgpIj5nc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1mcmVlLWRhdGEiIHRpdGxlPSJnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhwqAoKSI+Z3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1pbml0IiB0aXRsZT0iZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2luaXTCoCgpIj5nc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjZ3N0LWdsLWFwaS1mcm9tLXN0cmluZyIgdGl0bGU9ImdzdF9nbF9hcGlfZnJvbV9zdHJpbmfCoCgpIj5nc3RfZ2xfYXBpX2Zyb21fc3RyaW5nPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwiIHRpdGxlPSJHc3RHTEFQSSI+R3N0R0xBUEk8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CkBAIC01MzUsMTUgKzgxMSwxMDcgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR1NULUdMLUFTWU5DLUNBVC1MRVZFTC1MT0c6Q0FQUyIgdGl0bGU9IkdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HKCkiPkdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIgdGl0bGU9Ik9wZW5HTCBkZWJ1Z2dpbmciPk9wZW5HTCBEZWJ1Z2dpbmc8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dTVC1HTC1BU1lOQy1DQVQtTEVWRUwtTE9HLXZhbGlzdCIgdGl0bGU9IkdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HX3ZhbGlzdCgpIj5HU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPR192YWxpc3Q8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIiB0aXRsZT0iT3BlbkdMIGRlYnVnZ2luZyI+T3BlbkdMIERlYnVnZ2luZzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLWZyZWUiIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZcKgKCkiPmdzdF9nbF9hc3luY19kZWJ1Z19mcmVlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIgdGl0bGU9Ik9wZW5HTCBkZWJ1Z2dpbmciPk9wZW5HTCBEZWJ1Z2dpbmc8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1mcmVlemUiIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplwqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiIHRpdGxlPSJPcGVuR0wgZGVidWdnaW5nIj5PcGVuR0wgRGVidWdnaW5nPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctaW5pdCIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19pbml0wqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX2luaXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIiB0aXRsZT0iT3BlbkdMIGRlYnVnZ2luZyI+T3BlbkdMIERlYnVnZ2luZzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLW5ldyIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19uZXfCoCgpIj5nc3RfZ2xfYXN5bmNfZGVidWdfbmV3PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIgdGl0bGU9Ik9wZW5HTCBkZWJ1Z2dpbmciPk9wZW5HTCBEZWJ1Z2dpbmc8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1vdXRwdXQtbG9nLW1zZyIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZ8KgKCkiPmdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiIHRpdGxlPSJPcGVuR0wgZGVidWdnaW5nIj5PcGVuR0wgRGVidWdnaW5nPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctc3RvcmUtbG9nLW1zZyIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnwqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2c8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIiB0aXRsZT0iT3BlbkdMIGRlYnVnZ2luZyI+T3BlbkdMIERlYnVnZ2luZzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLXN0b3JlLWxvZy1tc2ctdmFsaXN0IiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2dfdmFsaXN0wqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2dfdmFsaXN0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIgdGl0bGU9Ik9wZW5HTCBkZWJ1Z2dpbmciPk9wZW5HTCBEZWJ1Z2dpbmc8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy10aGF3IiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX3RoYXfCoCgpIj5nc3RfZ2xfYXN5bmNfZGVidWdfdGhhdzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiIHRpdGxlPSJPcGVuR0wgZGVidWdnaW5nIj5PcGVuR0wgRGVidWdnaW5nPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctdW5zZXQiIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfdW5zZXTCoCgpIj5nc3RfZ2xfYXN5bmNfZGVidWdfdW5zZXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIiB0aXRsZT0iT3BlbkdMIGRlYnVnZ2luZyI+T3BlbkdMIERlYnVnZ2luZzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktYWxsb2MiIHRpdGxlPSJnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2PCoCgpIj5nc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2M8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPkdzdEdMQmFzZU1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktQUxMT0NBVE9SLU5BTUU6Q0FQUyIgdGl0bGU9IkdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfTkFNRSI+R1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9OQU1FPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5nc3RnbGJhc2VtZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LWFsbG9jLWRhdGEiIHRpdGxlPSJnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NfZGF0YcKgKCkiPmdzdF9nbF9iYXNlX21lbW9yeV9hbGxvY19kYXRhPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5Hc3RHTEJhc2VNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SOkNBUFMiIHRpdGxlPSJHU1RfR0xfQkFTRV9NRU1PUllfRVJST1IiPkdTVF9HTF9CQVNFX01FTU9SWV9FUlJPUjwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1pbml0IiB0aXRsZT0iZ3N0X2dsX2Jhc2VfbWVtb3J5X2luaXTCoCgpIj5nc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+R3N0R0xCYXNlTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1pbml0LW9uY2UiIHRpdGxlPSJnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdF9vbmNlwqAoKSI+Z3N0X2dsX2Jhc2VfbWVtb3J5X2luaXRfb25jZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+R3N0R0xCYXNlTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1tZW1jcHkiIHRpdGxlPSJnc3RfZ2xfYmFzZV9tZW1vcnlfbWVtY3B5wqAoKSI+Z3N0X2dsX2Jhc2VfbWVtb3J5X21lbWNweTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+R3N0R0xCYXNlTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LWdsLWJ1ZmZlci1hbGxvYyIgdGl0bGU9ImdzdF9nbF9idWZmZXJfYWxsb2PCoCgpIj5nc3RfZ2xfYnVmZmVyX2FsbG9jPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+R3N0R0xCdWZmZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtZ2wtYnVmZmVyLWFsbG9jYXRpb24tcGFyYW1zLW5ldyIgdGl0bGU9ImdzdF9nbF9idWZmZXJfYWxsb2NhdGlvbl9wYXJhbXNfbmV3wqAoKSI+Z3N0X2dsX2J1ZmZlcl9hbGxvY2F0aW9uX3BhcmFtc19uZXc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyIj5Hc3RHTEJ1ZmZlcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dTVC1HTC1CVUZGRVItQUxMT0NBVE9SLU5BTUU6Q0FQUyIgdGl0bGU9IkdTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX05BTUUiPkdTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX05BTUU8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyIj5Hc3RHTEJ1ZmZlcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1nbC1idWZmZXItaW5pdC1vbmNlIiB0aXRsZT0iZ3N0X2dsX2J1ZmZlcl9pbml0X29uY2XCoCgpIj5nc3RfZ2xfYnVmZmVyX2luaXRfb25jZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXIiPkdzdEdMQnVmZmVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI2dzdC1nbC1idWZmZXItcG9vbC1uZXciIHRpdGxlPSJnc3RfZ2xfYnVmZmVyX3Bvb2xfbmV3wqAoKSI+Z3N0X2dsX2J1ZmZlcl9wb29sX25ldzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+R3N0R0xCdWZmZXJQb29sPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jYXBzLXJlcGxhY2UtYWxsLWNhcHMtZmVhdHVyZXMiIHRpdGxlPSJnc3RfZ2xfY2Fwc19yZXBsYWNlX2FsbF9jYXBzX2ZlYXR1cmVzwqAoKSI+Z3N0X2dsX2NhcHNfcmVwbGFjZV9hbGxfY2Fwc19mZWF0dXJlczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9IlV0aWxpdGllcyI+VXRpbGl0aWVzPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jYXBzLXJlcGxhY2UtYWxsLWNhcHMtZmVhdHVyZXMiIHRpdGxlPSJnc3RfZ2xfY2Fwc19yZXBsYWNlX2FsbF9jYXBzX2ZlYXR1cmVzwqAoKSI+Z3N0X2dsX2NhcHNfcmVwbGFjZV9hbGxfY2Fwc19mZWF0dXJlczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjZ3N0LWdsLWNoZWNrLWV4dGVuc2lvbiIgdGl0bGU9ImdzdF9nbF9jaGVja19leHRlbnNpb27CoCgpIj5nc3RfZ2xfY2hlY2tfZXh0ZW5zaW9uPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwiIHRpdGxlPSJHc3RHTEFQSSI+R3N0R0xBUEk8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC1kZWNpZGUtYWxsb2NhdGlvbiIgdGl0bGU9ImdzdF9nbF9jb2xvcl9jb252ZXJ0X2RlY2lkZV9hbGxvY2F0aW9uwqAoKSI+Z3N0X2dsX2NvbG9yX2NvbnZlcnRfZGVjaWRlX2FsbG9jYXRpb248L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCIgdGl0bGU9IkdzdEdMQ29sb3JDb252ZXJ0Ij5Hc3RHTENvbG9yQ29udmVydDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LWZpeGF0ZS1jYXBzIiB0aXRsZT0iZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZml4YXRlX2NhcHPCoCgpIj5nc3RfZ2xfY29sb3JfY29udmVydF9maXhhdGVfY2FwczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbG9yQ29udmVydC5odG1sIiB0aXRsZT0iR3N0R0xDb2xvckNvbnZlcnQiPkdzdEdMQ29sb3JDb252ZXJ0PC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgpAQCAtNTgzLDcgKzk1MSw3IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2hlY2stZnJhbWVidWZmZXItc3RhdHVzIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzwqAoKSI+Z3N0X2dsX2NvbnRleHRfY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2hlY2stZnJhbWVidWZmZXItc3RhdHVzIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzwqAoKSI+Z3N0X2dsX2NvbnRleHRfY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC01OTEsNyArOTU5LDcgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1jbGVhci1zaGFkZXIiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXLCoCgpIj5nc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXI8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1jbGVhci1zaGFkZXIiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXLCoCgpIj5nc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXI8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTYxNSwxNSArOTgzLDE1IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLWZibyIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2RlbF9mYm/CoCgpIj5nc3RfZ2xfY29udGV4dF9kZWxfZmJvPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLWZibyIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2RlbF9mYm/CoCgpIj5nc3RfZ2xfY29udGV4dF9kZWxfZmJvPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLXNoYWRlciIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2RlbF9zaGFkZXLCoCgpIj5nc3RfZ2xfY29udGV4dF9kZWxfc2hhZGVyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLXNoYWRlciIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2RlbF9zaGFkZXLCoCgpIj5nc3RfZ2xfY29udGV4dF9kZWxfc2hhZGVyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLXRleHR1cmUiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9kZWxfdGV4dHVyZcKgKCkiPmdzdF9nbF9jb250ZXh0X2RlbF90ZXh0dXJlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLXRleHR1cmUiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9kZWxfdGV4dHVyZcKgKCkiPmdzdF9nbF9jb250ZXh0X2RlbF90ZXh0dXJlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC02NjMsMTUgKzEwMzEsMTUgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tZmJvIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX2Zib8KgKCkiPmdzdF9nbF9jb250ZXh0X2dlbl9mYm88L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tZmJvIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX2Zib8KgKCkiPmdzdF9nbF9jb250ZXh0X2dlbl9mYm88L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tc2hhZGVyIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX3NoYWRlcsKgKCkiPmdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXI8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tc2hhZGVyIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX3NoYWRlcsKgKCkiPmdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXI8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tdGV4dHVyZSIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dlbl90ZXh0dXJlwqAoKSI+Z3N0X2dsX2NvbnRleHRfZ2VuX3RleHR1cmU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tdGV4dHVyZSIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dlbl90ZXh0dXJlwqAoKSI+Z3N0X2dsX2NvbnRleHRfZ2VuX3RleHR1cmU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTY5MSw3ICsxMDU5LDcgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtZXJyb3IiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3LCoCgpIj5nc3RfZ2xfY29udGV4dF9nZXRfZXJyb3I8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtZXJyb3IiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3LCoCgpIj5nc3RfZ2xfY29udGV4dF9nZXRfZXJyb3I8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTcxNSw2ICsxMDgzLDEwIEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LXByb2MtYWRkcmVzcy13aXRoLXBsYXRmb3JtIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzc193aXRoX3BsYXRmb3JtwqAoKSI+Z3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzc193aXRoX3BsYXRmb3JtPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij5Hc3RHTENvbnRleHQ8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LXRocmVhZCIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dldF90aHJlYWTCoCgpIj5nc3RfZ2xfY29udGV4dF9nZXRfdGhyZWFkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij5Hc3RHTENvbnRleHQ8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CkBAIC03MzUsNiArMTEwNywxMCBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWlzLXNoYXJlZCIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2lzX3NoYXJlZMKgKCkiPmdzdF9nbF9jb250ZXh0X2lzX3NoYXJlZDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+R3N0R0xDb250ZXh0PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LW5ldyIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X25ld8KgKCkiPmdzdF9nbF9jb250ZXh0X25ldzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+R3N0R0xDb250ZXh0PC9hPgogPC9kdD4KIDxkZD48L2RkPgpAQCAtNzQzLDcgKzExMTksMTEgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1zZXQtZXJyb3IiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3LCoCgpIj5nc3RfZ2xfY29udGV4dF9zZXRfZXJyb3I8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1zZXQtZXJyb3IiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3LCoCgpIj5nc3RfZ2xfY29udGV4dF9zZXRfZXJyb3I8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1zZXQtc2hhcmVkLXdpdGgiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9zZXRfc2hhcmVkX3dpdGjCoCgpIj5nc3RfZ2xfY29udGV4dF9zZXRfc2hhcmVkX3dpdGg8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPkdzdEdMQ29udGV4dDwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTc1MSwxMSArMTEzMSwxNSBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2wtY29udGV4dC1zdXBwb3J0cy1nbHNsLXByb2ZpbGUtdmVyc2lvbiIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X3N1cHBvcnRzX2dsc2xfcHJvZmlsZV92ZXJzaW9uwqAoKSI+Z3N0X2dsX2NvbnRleHRfc3VwcG9ydHNfZ2xzbF9wcm9maWxlX3ZlcnNpb248L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIiB0aXRsZT0iR3N0R0xTTCI+R3N0R0xTTDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC10aHJlYWQtYWRkIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZMKgKCkiPmdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPkdzdEdMQ29udGV4dDwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC11c2UtZmJvLXYyIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfdXNlX2Zib192MsKgKCkiPmdzdF9nbF9jb250ZXh0X3VzZV9mYm9fdjI8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC11c2UtZmJvLXYyIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfdXNlX2Zib192MsKgKCkiPmdzdF9nbF9jb250ZXh0X3VzZV9mYm9fdjI8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTc3OSw2ICsxMTYzLDEwIEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwjZ3N0LWdsLWRpc3BsYXktY3JlYXRlLWNvbnRleHQiIHRpdGxlPSJnc3RfZ2xfZGlzcGxheV9jcmVhdGVfY29udGV4dMKgKCkiPmdzdF9nbF9kaXNwbGF5X2NyZWF0ZV9jb250ZXh0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij5Hc3RHTERpc3BsYXk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwjZ3N0LWdsLWRpc3BsYXktZmlsdGVyLWdsLWFwaSIgdGl0bGU9ImdzdF9nbF9kaXNwbGF5X2ZpbHRlcl9nbF9hcGnCoCgpIj5nc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij5Hc3RHTERpc3BsYXk8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CkBAIC04MDMsMjMgKzExOTEsNyBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCNnc3QtZ2wtZG93bmxvYWQtbmV3IiB0aXRsZT0iZ3N0X2dsX2Rvd25sb2FkX25ld8KgKCkiPmdzdF9nbF9kb3dubG9hZF9uZXc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+R3N0R0xEb3dubG9hZDwvYT4KLTwvZHQ+Ci08ZGQ+PC9kZD4KLTxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLXBlcmZvcm0td2l0aC1kYXRhIiB0aXRsZT0iZ3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fd2l0aF9kYXRhwqAoKSI+Z3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fd2l0aF9kYXRhPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPkdzdEdMRG93bmxvYWQ8L2E+Ci08L2R0PgotPGRkPjwvZGQ+Ci08ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sI2dzdC1nbC1kb3dubG9hZC1zZXQtZm9ybWF0IiB0aXRsZT0iZ3N0X2dsX2Rvd25sb2FkX3NldF9mb3JtYXTCoCgpIj5nc3RfZ2xfZG93bmxvYWRfc2V0X2Zvcm1hdDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiIHRpdGxlPSJHc3RHTERvd25sb2FkIj5Hc3RHTERvd25sb2FkPC9hPgotPC9kdD4KLTxkZD48L2RkPgotPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCNnc3QtZ2wtZG93bmxvYWQtdHJhbnNmb3JtLWNhcHMiIHRpdGxlPSJnc3RfZ2xfZG93bmxvYWRfdHJhbnNmb3JtX2NhcHPCoCgpIj5nc3RfZ2xfZG93bmxvYWRfdHJhbnNmb3JtX2NhcHM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+R3N0R0xEb3dubG9hZDwvYT4KLTwvZHQ+Ci08ZGQ+PC9kZD4KLTxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZW5zdXJlLWVsZW1lbnQtZGF0YSIgdGl0bGU9ImdzdF9nbF9lbnN1cmVfZWxlbWVudF9kYXRhwqAoKSI+Z3N0X2dsX2Vuc3VyZV9lbGVtZW50X2RhdGE8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZW5zdXJlLWVsZW1lbnQtZGF0YSIgdGl0bGU9ImdzdF9nbF9lbnN1cmVfZWxlbWVudF9kYXRhwqAoKSI+Z3N0X2dsX2Vuc3VyZV9lbGVtZW50X2RhdGE8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTgzOSw2ICsxMjExLDE0IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtZm9ybWF0LWZyb20tZ2wtdGV4dHVyZS10eXBlIiB0aXRsZT0iZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZcKgKCkiPmdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj5PcGVuR0wgRm9ybWF0czwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC1mb3JtYXQtdHlwZS1uLWJ5dGVzIiB0aXRsZT0iZ3N0X2dsX2Zvcm1hdF90eXBlX25fYnl0ZXPCoCgpIj5nc3RfZ2xfZm9ybWF0X3R5cGVfbl9ieXRlczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPk9wZW5HTCBGb3JtYXRzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRnJhbWVidWZmZXIuaHRtbCNnc3QtZ2wtZnJhbWVidWZmZXItZGVsZXRlIiB0aXRsZT0iZ3N0X2dsX2ZyYW1lYnVmZmVyX2RlbGV0ZcKgKCkiPmdzdF9nbF9mcmFtZWJ1ZmZlcl9kZWxldGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xGcmFtZWJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xGcmFtZWJ1ZmZlciI+R3N0R0xGcmFtZWJ1ZmZlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KQEAgLTg1NSw1MSArMTIzNSwxMDcgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2VuZXJhdGUtdGV4dHVyZS1mdWxsIiB0aXRsZT0iZ3N0X2dsX2dlbmVyYXRlX3RleHR1cmVfZnVsbMKgKCkiPmdzdF9nbF9nZW5lcmF0ZV90ZXh0dXJlX2Z1bGw8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2VuZXJhdGUtdGV4dHVyZS1mdWxsIiB0aXRsZT0iZ3N0X2dsX2dlbmVyYXRlX3RleHR1cmVfZnVsbMKgKCkiPmdzdF9nbF9nZW5lcmF0ZV90ZXh0dXJlX2Z1bGw8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2V0LXBsYW5lLWRhdGEtc2l6ZSIgdGl0bGU9ImdzdF9nbF9nZXRfcGxhbmVfZGF0YV9zaXplwqAoKSI+Z3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2V0LXBsYW5lLWRhdGEtc2l6ZSIgdGl0bGU9ImdzdF9nbF9nZXRfcGxhbmVfZGF0YV9zaXplwqAoKSI+Z3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLWNvbnRleHQtcXVlcnkiIHRpdGxlPSJnc3RfZ2xfaGFuZGxlX2NvbnRleHRfcXVlcnnCoCgpIj5nc3RfZ2xfaGFuZGxlX2NvbnRleHRfcXVlcnk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2V0LXBsYW5lLXN0YXJ0IiB0aXRsZT0iZ3N0X2dsX2dldF9wbGFuZV9zdGFydMKgKCkiPmdzdF9nbF9nZXRfcGxhbmVfc3RhcnQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLXNldC1jb250ZXh0IiB0aXRsZT0iZ3N0X2dsX2hhbmRsZV9zZXRfY29udGV4dMKgKCkiPmdzdF9nbF9oYW5kbGVfc2V0X2NvbnRleHQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLWNvbnRleHQtcXVlcnkiIHRpdGxlPSJnc3RfZ2xfaGFuZGxlX2NvbnRleHRfcXVlcnnCoCgpIj5nc3RfZ2xfaGFuZGxlX2NvbnRleHRfcXVlcnk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktYWxsb2MiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2FsbG9jwqAoKSI+Z3N0X2dsX21lbW9yeV9hbGxvYzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1oYW5kbGUtc2V0LWNvbnRleHQiIHRpdGxlPSJnc3RfZ2xfaGFuZGxlX3NldF9jb250ZXh0wqAoKSI+Z3N0X2dsX2hhbmRsZV9zZXRfY29udGV4dDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR1NULUdMLU1FTU9SWS1BTExPQ0FUT1I6Q0FQUyIgdGl0bGU9IkdTVF9HTF9NRU1PUllfQUxMT0NBVE9SIj5HU1RfR0xfTUVNT1JZX0FMTE9DQVRPUjwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPmdzdGdsbWVtb3J5PC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtaW5zZXJ0LWRlYnVnLW1hcmtlciIgdGl0bGU9ImdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VywqAoKSI+Z3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXI8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIiB0aXRsZT0iT3BlbkdMIGRlYnVnZ2luZyI+T3BlbkdMIERlYnVnZ2luZzwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktY29weS1pbnRvLXRleHR1cmUiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2NvcHlfaW50b190ZXh0dXJlwqAoKSI+Z3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1hbGxvY2F0b3ItZ2V0LWRlZmF1bHQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdMKgKCkiPmdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWluaXQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2luaXTCoCgpIj5nc3RfZ2xfbWVtb3J5X2luaXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dTVC1HTC1NRU1PUlktQUxMT0NBVE9SLU5BTUU6Q0FQUyIgdGl0bGU9IkdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUUiPkdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUU8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktc2V0dXAtYnVmZmVyIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXLCoCgpIj5nc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlcjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1jb3B5LWludG8iIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2NvcHlfaW50b8KgKCkiPmdzdF9nbF9tZW1vcnlfY29weV9pbnRvPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXNldHVwLXdyYXBwZWQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X3NldHVwX3dyYXBwZWTCoCgpIj5nc3RfZ2xfbWVtb3J5X3NldHVwX3dyYXBwZWQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktY29weS10ZXhpbWFnZSIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfY29weV90ZXhpbWFnZcKgKCkiPmdzdF9nbF9tZW1vcnlfY29weV90ZXhpbWFnZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS13cmFwcGVkIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV93cmFwcGVkwqAoKSI+Z3N0X2dsX21lbW9yeV93cmFwcGVkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLWhlaWdodCIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaGVpZ2h0wqAoKSI+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9oZWlnaHQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktd3JhcHBlZC10ZXh0dXJlIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmXCoCgpIj5nc3RfZ2xfbWVtb3J5X3dyYXBwZWRfdGV4dHVyZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS1pZCIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaWTCoCgpIj5nc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2lkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXRhcmdldCIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdGFyZ2V0wqAoKSI+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90YXJnZXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtdHlwZSIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdHlwZcKgKCkiPmdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdHlwZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS13aWR0aCIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfd2lkdGjCoCgpIj5nc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3dpZHRoPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWluaXQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2luaXTCoCgpIj5nc3RfZ2xfbWVtb3J5X2luaXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktaW5pdC1vbmNlIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9pbml0X29uY2XCoCgpIj5nc3RfZ2xfbWVtb3J5X2luaXRfb25jZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR1NULUdMLU1FTU9SWS1QQk8tQUxMT0NBVE9SLU5BTUU6Q0FQUyIgdGl0bGU9IkdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FIj5HU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfTkFNRTwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPmdzdGdsbWVtb3J5cGJvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWdsLW1lbW9yeS1wYm8tY29weS1pbnRvLXRleHR1cmUiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X3Bib19jb3B5X2ludG9fdGV4dHVyZcKgKCkiPmdzdF9nbF9tZW1vcnlfcGJvX2NvcHlfaW50b190ZXh0dXJlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeVBCTyI+R3N0R0xNZW1vcnlQQk88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtZ2wtbWVtb3J5LXBiby1kb3dubG9hZC10cmFuc2ZlciIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfcGJvX2Rvd25sb2FkX3RyYW5zZmVywqAoKSI+Z3N0X2dsX21lbW9yeV9wYm9fZG93bmxvYWRfdHJhbnNmZXI8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj5Hc3RHTE1lbW9yeVBCTzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1nbC1tZW1vcnktcGJvLWluaXQtb25jZSIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfcGJvX2luaXRfb25jZcKgKCkiPmdzdF9nbF9tZW1vcnlfcGJvX2luaXRfb25jZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPkdzdEdMTWVtb3J5UEJPPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWdsLW1lbW9yeS1wYm8tdXBsb2FkLXRyYW5zZmVyIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9wYm9fdXBsb2FkX3RyYW5zZmVywqAoKSI+Z3N0X2dsX21lbW9yeV9wYm9fdXBsb2FkX3RyYW5zZmVyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeVBCTyI+R3N0R0xNZW1vcnlQQk88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXJlYWQtcGl4ZWxzIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9yZWFkX3BpeGVsc8KgKCkiPmdzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktc2V0dXAtYnVmZmVyIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXLCoCgpIj5nc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlcjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS10ZXhzdWJpbWFnZSIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfdGV4c3ViaW1hZ2XCoCgpIj5nc3RfZ2xfbWVtb3J5X3RleHN1YmltYWdlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHU1QtR0wtTUVNT1JZLVZJREVPLUZPUk1BVFMtU1RSOkNBUFMiIHRpdGxlPSJHU1RfR0xfTUVNT1JZX1ZJREVPX0ZPUk1BVFNfU1RSIj5HU1RfR0xfTUVNT1JZX1ZJREVPX0ZPUk1BVFNfU1RSPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC05MTEsMTk5ICsxMzQ3LDE3OSBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1ydW4tcXVlcnkiIHRpdGxlPSJnc3RfZ2xfcnVuX3F1ZXJ5wqAoKSI+Z3N0X2dsX3J1bl9xdWVyeTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9IlV0aWxpdGllcyI+VXRpbGl0aWVzPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1ydW4tcXVlcnkiIHRpdGxlPSJnc3RfZ2xfcnVuX3F1ZXJ5wqAoKSI+Z3N0X2dsX3J1bl9xdWVyeTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlcnZhcmlhYmxlcy1wYXJzZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJ2YXJpYWJsZXNfcGFyc2XCoCgpIj5nc3RfZ2xfc2hhZGVydmFyaWFibGVzX3BhcnNlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+Z3N0Z2xzaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWF0dGFjaCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfYXR0YWNowqAoKSI+Z3N0X2dsX3NoYWRlcl9hdHRhY2g8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXJ2YXJpYWJsZS1kZXNjIiB0aXRsZT0ic3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjIj5nc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYzwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5nc3RnbHNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItYXR0YWNoLXVubG9ja2VkIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWTCoCgpIj5nc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlcnZhcmlhYmxlLXNldCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9zZXTCoCgpIj5nc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+Z3N0Z2xzaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWJpbmQtYXR0cmlidXRlLWxvY2F0aW9uIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9iaW5kX2F0dHJpYnV0ZV9sb2NhdGlvbsKgKCkiPmdzdF9nbF9zaGFkZXJfYmluZF9hdHRyaWJ1dGVfbG9jYXRpb248L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItYmluZC1hdHRyaWJ1dGUtbG9jYXRpb24iIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2JpbmRfYXR0cmlidXRlX2xvY2F0aW9uwqAoKSI+Z3N0X2dsX3NoYWRlcl9iaW5kX2F0dHJpYnV0ZV9sb2NhdGlvbjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLWF0dGFjaC1zdGFnZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV9hdHRhY2hfc3RhZ2XCoCgpIj5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYXR0YWNoX3N0YWdlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGXCoCgpIj5nc3RfZ2xfc2hhZGVyX2NvbXBpbGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZGV0YWNoIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9kZXRhY2jCoCgpIj5nc3RfZ2xfc2hhZGVyX2RldGFjaDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLWFsbC13aXRoLWF0dHJpYnMtYW5kLWNoZWNrIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlX2FsbF93aXRoX2F0dHJpYnNfYW5kX2NoZWNrwqAoKSI+Z3N0X2dsX3NoYWRlcl9jb21waWxlX2FsbF93aXRoX2F0dHJpYnNfYW5kX2NoZWNrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWRldGFjaC11bmxvY2tlZCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZGV0YWNoX3VubG9ja2VkwqAoKSI+Z3N0X2dsX3NoYWRlcl9kZXRhY2hfdW5sb2NrZWQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS1hbmQtY2hlY2siIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYW5kX2NoZWNrwqAoKSI+Z3N0X2dsX3NoYWRlcl9jb21waWxlX2FuZF9jaGVjazwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtYXR0cmlidXRlLWxvY2F0aW9uIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uwqAoKSI+Z3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtd2l0aC1kZWZhdWx0LWYtYW5kLWNoZWNrIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF9mX2FuZF9jaGVja8KgKCkiPmdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfZl9hbmRfY2hlY2s8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LXByb2dyYW0taGFuZGxlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGXCoCgpIj5nc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC12Zi1hbmQtY2hlY2siIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVja8KgKCkiPmdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdmZfYW5kX2NoZWNrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWlzLWxpbmtlZCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfaXNfbGlua2VkwqAoKSI+Z3N0X2dsX3NoYWRlcl9pc19saW5rZWQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtdi1hbmQtY2hlY2siIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrwqAoKSI+Z3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92X2FuZF9jaGVjazwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1saW5rIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9saW5rwqAoKSI+Z3N0X2dsX3NoYWRlcl9saW5rPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHU1QtR0wtU0hBREVSLUVSUk9SOkNBUFMiIHRpdGxlPSJHU1RfR0xfU0hBREVSX0VSUk9SIj5HU1RfR0xfU0hBREVSX0VSUk9SPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+Z3N0Z2xzaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLW5ldyIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfbmV3wqAoKSI+Z3N0X2dsX3NoYWRlcl9uZXc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZXJyb3ItcXVhcmsiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2Vycm9yX3F1YXJrwqAoKSI+Z3N0X2dsX3NoYWRlcl9lcnJvcl9xdWFyazwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPmdzdGdsc2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXctZGVmYXVsdCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfbmV3X2RlZmF1bHTCoCgpIj5nc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1hdHRyaWJ1dGUtbG9jYXRpb24iIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb27CoCgpIj5nc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb248L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3LWxpbmstd2l0aC1zdGFnZXMiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzwqAoKSI+Z3N0X2dsX3NoYWRlcl9uZXdfbGlua193aXRoX3N0YWdlczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtZnJhZ21lbnQtc291cmNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9nZXRfZnJhZ21lbnRfc291cmNlwqAoKSI+Z3N0X2dsX3NoYWRlcl9nZXRfZnJhZ21lbnRfc291cmNlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLW5ldy13aXRoLXN0YWdlcyIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfbmV3X3dpdGhfc3RhZ2VzwqAoKSI+Z3N0X2dsX3NoYWRlcl9uZXdfd2l0aF9zdGFnZXM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LXByb2dyYW0taGFuZGxlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGXCoCgpIj5nc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1yZWxlYXNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9yZWxlYXNlwqAoKSI+Z3N0X2dsX3NoYWRlcl9yZWxlYXNlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC12ZXJ0ZXgtc291cmNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9nZXRfdmVydGV4X3NvdXJjZcKgKCkiPmdzdF9nbF9zaGFkZXJfZ2V0X3ZlcnRleF9zb3VyY2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItcmVsZWFzZS11bmxvY2tlZCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfcmVsZWFzZV91bmxvY2tlZMKgKCkiPmdzdF9nbF9zaGFkZXJfcmVsZWFzZV91bmxvY2tlZDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1pcy1jb21waWxlZCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfaXNfY29tcGlsZWTCoCgpIj5nc3RfZ2xfc2hhZGVyX2lzX2NvbXBpbGVkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9uZXfCoCgpIj5nc3RfZ2xfc2hhZGVyX25ldzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWZ2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXJlbGVhc2UiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3JlbGVhc2XCoCgpIj5nc3RfZ2xfc2hhZGVyX3JlbGVhc2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWkiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtYWN0aXZlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfYWN0aXZlwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfYWN0aXZlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWl2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaXY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LWZyYWdtZW50LXNvdXJjZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X2ZyYWdtZW50X3NvdXJjZcKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X2ZyYWdtZW50X3NvdXJjZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWZ2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yacKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWkiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaXYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMml2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWl2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaXY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2YiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Z2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2nCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yacKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2l2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaXbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaXYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMml2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2YiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGZ2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Z2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGkiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2nCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGl2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aXY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2l2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaXbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMmZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMmZ2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4M2Z2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMngzZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDNmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGZ2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDRmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4NGZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMng0ZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGkiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM2Z2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGl2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aXY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4MmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3gyZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDJmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMmZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMmZ2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDRmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3g0ZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4M2Z2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMngzZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDNmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNGZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNGZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNGZ2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDRmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4NGZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMng0ZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4MmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgyZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDJmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM2Z2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDNmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4M2Z2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgzZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4MmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3gyZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDJmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci11c2UiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3VzZcKgKCkiPmdzdF9nbF9zaGFkZXJfdXNlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDRmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3g0ZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KLTwvZHQ+Ci08ZGQ+PC9kZD4KLTxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTRmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgotPC9kdD4KLTxkZD48L2RkPgotPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgyZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDJmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4MmZ2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Ci08L2R0PgotPGRkPjwvZGQ+Ci08ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDNmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4M2Z2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgzZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KLTwvZHQ+Ci08ZGQ+PC9kZD4KLTxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXZlcnRleC1zb3VyY2UiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF92ZXJ0ZXhfc291cmNlwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdmVydGV4X3NvdXJjZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgotPC9kdD4KLTxkZD48L2RkPgotPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci11c2UiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3VzZcKgKCkiPmdzdF9nbF9zaGFkZXJfdXNlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtc2l6ZWQtZ2wtZm9ybWF0LWZyb20tZ2wtZm9ybWF0LXR5cGUiIHRpdGxlPSJnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGXCoCgpIj5nc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj5PcGVuR0wgRm9ybWF0czwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTExMjMsNyArMTUzOSw0NyBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLXRleHR1cmUtdHlwZS1mcm9tLWZvcm1hdCIgdGl0bGU9ImdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXTCoCgpIj5nc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1nbC1zeW5jLW1ldGEtd2FpdC1jcHUiIHRpdGxlPSJnc3RfZ2xfc3luY19tZXRhX3dhaXRfY3B1wqAoKSI+Z3N0X2dsX3N5bmNfbWV0YV93YWl0X2NwdTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFN5bmNNZXRhIj5Hc3RHTFN5bmNNZXRhPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULTJELVNUUjpDQVBTIiB0aXRsZT0iR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUiI+R1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUjwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPk9wZW5HTCBGb3JtYXRzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULUVYVEVSTkFMLU9FUy1TVFI6Q0FQUyIgdGl0bGU9IkdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVNfU1RSIj5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTX1NUUjwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPk9wZW5HTCBGb3JtYXRzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LWZyb20tZ2wiIHRpdGxlPSJnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9nbMKgKCkiPmdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX2dsPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiIHRpdGxlPSJPcGVuR0wgRm9ybWF0cyI+T3BlbkdMIEZvcm1hdHM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10YXJnZXQtZnJvbS1zdHJpbmciIHRpdGxlPSJnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmfCoCgpIj5nc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj5PcGVuR0wgRm9ybWF0czwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC1SRUNUQU5HTEUtU1RSOkNBUFMiIHRpdGxlPSJHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFX1NUUiI+R1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFI8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj5PcGVuR0wgRm9ybWF0czwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC10by1idWZmZXItcG9vbC1vcHRpb24iIHRpdGxlPSJnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fYnVmZmVyX3Bvb2xfb3B0aW9uwqAoKSI+Z3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2J1ZmZlcl9wb29sX29wdGlvbjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPk9wZW5HTCBGb3JtYXRzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LXRvLWdsIiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dswqAoKSI+Z3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dsPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiIHRpdGxlPSJPcGVuR0wgRm9ybWF0cyI+T3BlbkdMIEZvcm1hdHM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10YXJnZXQtdG8tc3RyaW5nIiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX3N0cmluZ8KgKCkiPmdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19zdHJpbmc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj5PcGVuR0wgRm9ybWF0czwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXR5cGUtZnJvbS1mb3JtYXQiIHRpdGxlPSJnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0wqAoKSI+Z3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPk9wZW5HTCBGb3JtYXRzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdHlwZS1uLWJ5dGVzIiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdHlwZV9uX2J5dGVzwqAoKSI+Z3N0X2dsX3RleHR1cmVfdHlwZV9uX2J5dGVzPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiIHRpdGxlPSJPcGVuR0wgRm9ybWF0cyI+T3BlbkdMIEZvcm1hdHM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC0xMTMxLDE5ICsxNTg3LDcgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtYWRkLXRvLWJ1ZmZlciIgdGl0bGU9ImdzdF9nbF91cGxvYWRfbWV0YV9hZGRfdG9fYnVmZmVywqAoKSI+Z3N0X2dsX3VwbG9hZF9tZXRhX2FkZF90b19idWZmZXI8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPkdzdEdMVXBsb2FkTWV0YTwvYT4KLTwvZHQ+Ci08ZGQ+PC9kZD4KLTxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtZ2V0LWZvcm1hdCIgdGl0bGU9ImdzdF9nbF91cGxvYWRfbWV0YV9nZXRfZm9ybWF0wqAoKSI+Z3N0X2dsX3VwbG9hZF9tZXRhX2dldF9mb3JtYXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPkdzdEdMVXBsb2FkTWV0YTwvYT4KLTwvZHQ+Ci08ZGQ+PC9kZD4KLTxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtbmV3IiB0aXRsZT0iZ3N0X2dsX3VwbG9hZF9tZXRhX25ld8KgKCkiPmdzdF9nbF91cGxvYWRfbWV0YV9uZXc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPkdzdEdMVXBsb2FkTWV0YTwvYT4KLTwvZHQ+Ci08ZGQ+PC9kZD4KLTxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtc2V0LWZvcm1hdCIgdGl0bGU9ImdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0wqAoKSI+Z3N0X2dsX3VwbG9hZF9tZXRhX3NldF9mb3JtYXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPkdzdEdMVXBsb2FkTWV0YTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtZ2V0LWlucHV0LXRlbXBsYXRlLWNhcHMiIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX2dldF9pbnB1dF90ZW1wbGF0ZV9jYXBzwqAoKSI+Z3N0X2dsX3VwbG9hZF9nZXRfaW5wdXRfdGVtcGxhdGVfY2FwczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPkdzdEdMVXBsb2FkPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgpAQCAtMTE1OSwxMCArMTYwMyw2IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCNnc3QtZ2wtdXBsb2FkLXJlbGVhc2UtYnVmZmVyIiB0aXRsZT0iZ3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlcsKgKCkiPmdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXI8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj5Hc3RHTFVwbG9hZDwvYT4KLTwvZHQ+Ci08ZGQ+PC9kZD4KLTxkdD4KIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtc2V0LWNhcHMiIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX3NldF9jYXBzwqAoKSI+Z3N0X2dsX3VwbG9hZF9zZXRfY2FwczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPkdzdEdMVXBsb2FkPC9hPgogPC9kdD4KIDxkZD48L2RkPgpAQCAtMTE3MSw2ICsxNjExLDgyIEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXZhbHVlLWdldC10ZXh0dXJlLXRhcmdldC1tYXNrIiB0aXRsZT0iZ3N0X2dsX3ZhbHVlX2dldF90ZXh0dXJlX3RhcmdldF9tYXNrwqAoKSI+Z3N0X2dsX3ZhbHVlX2dldF90ZXh0dXJlX3RhcmdldF9tYXNrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXZhbHVlLXNldC10ZXh0dXJlLXRhcmdldCIgdGl0bGU9ImdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXTCoCgpIj5nc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXZhbHVlLXNldC10ZXh0dXJlLXRhcmdldC1mcm9tLW1hc2siIHRpdGxlPSJnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0X2Zyb21fbWFza8KgKCkiPmdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXRfZnJvbV9tYXNrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbC12ZXJzaW9uLXRvLWdsc2wtdmVyc2lvbiIgdGl0bGU9ImdzdF9nbF92ZXJzaW9uX3RvX2dsc2xfdmVyc2lvbsKgKCkiPmdzdF9nbF92ZXJzaW9uX3RvX2dsc2xfdmVyc2lvbjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiIHRpdGxlPSJHc3RHTFNMIj5Hc3RHTFNMPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWNvcHktZGF0YSIgdGl0bGU9ImdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGHCoCgpIj5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtZnJlZS1kYXRhIiB0aXRsZT0iZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YcKgKCkiPmdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGE8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1pbml0LWZ1bGwiIHRpdGxlPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfaW5pdF9mdWxswqAoKSI+Z3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2luaXRfZnVsbDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldyIgdGl0bGU9ImdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXfCoCgpIj5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtbmV3LXdyYXBwZWQtZGF0YSIgdGl0bGU9ImdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhwqAoKSI+Z3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX2RhdGE8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1uZXctd3JhcHBlZC10ZXh0dXJlIiB0aXRsZT0iZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX3RleHR1cmXCoCgpIj5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfdGV4dHVyZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsX3ZpZXdfY29udmVydF9maXhhdGVfY2FwcywgZnVuY3Rpb24gaW4gR3N0R0xWaWV3Q29udmVydAorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsX3ZpZXdfY29udmVydF9nZXRfb3V0cHV0LCBmdW5jdGlvbiBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Citnc3RfZ2xfdmlld19jb252ZXJ0X25ldywgZnVuY3Rpb24gaW4gR3N0R0xWaWV3Q29udmVydAorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsX3ZpZXdfY29udmVydF9wZXJmb3JtLCBmdW5jdGlvbiBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Citnc3RfZ2xfdmlld19jb252ZXJ0X3Jlc2V0LCBmdW5jdGlvbiBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Citnc3RfZ2xfdmlld19jb252ZXJ0X3NldF9jYXBzLCBmdW5jdGlvbiBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Citnc3RfZ2xfdmlld19jb252ZXJ0X3NldF9jb250ZXh0LCBmdW5jdGlvbiBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Citnc3RfZ2xfdmlld19jb252ZXJ0X3N1Ym1pdF9pbnB1dF9idWZmZXIsIGZ1bmN0aW9uIGluIEdzdEdMVmlld0NvbnZlcnQKKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbF92aWV3X2NvbnZlcnRfdHJhbnNmb3JtX2NhcHMsIGZ1bmN0aW9uIGluIEdzdEdMVmlld0NvbnZlcnQKKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0FuZHJvaWQuaHRtbCNnc3QtZ2wtd2luZG93LWFuZHJvaWQtZWdsLW5ldyIgdGl0bGU9ImdzdF9nbF93aW5kb3dfYW5kcm9pZF9lZ2xfbmV3wqAoKSI+Z3N0X2dsX3dpbmRvd19hbmRyb2lkX2VnbF9uZXc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dBbmRyb2lkLmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvd0FuZHJvaWQiPkdzdEdMV2luZG93QW5kcm9pZDwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KQEAgLTExOTUsMTAgKzE3MTEsNiBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwjZ3N0LWdsLXdpbmRvdy1kcmF3LXVubG9ja2VkIiB0aXRsZT0iZ3N0X2dsX3dpbmRvd19kcmF3X3VubG9ja2VkwqAoKSI+Z3N0X2dsX3dpbmRvd19kcmF3X3VubG9ja2VkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvdyI+R3N0R0xXaW5kb3c8L2E+Ci08L2R0PgotPGRkPjwvZGQ+Ci08ZHQ+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCNHU1QtR0wtV0lORE9XLUVSUk9SOkNBUFMiIHRpdGxlPSJHU1RfR0xfV0lORE9XX0VSUk9SIj5HU1RfR0xfV0lORE9XX0VSUk9SPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvdyI+R3N0R0xXaW5kb3c8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CkBAIC0xNTQxLDcgKzIwNTMsMTkgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1pcy1nbC1tZW1vcnkiIHRpdGxlPSJnc3RfaXNfZ2xfbWVtb3J5wqAoKSI+Z3N0X2lzX2dsX21lbW9yeTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1pcy1nbC1iYXNlLW1lbW9yeSIgdGl0bGU9ImdzdF9pc19nbF9iYXNlX21lbW9yecKgKCkiPmdzdF9pc19nbF9iYXNlX21lbW9yeTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+R3N0R0xCYXNlTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LWlzLWdsLWJ1ZmZlciIgdGl0bGU9ImdzdF9pc19nbF9idWZmZXLCoCgpIj5nc3RfaXNfZ2xfYnVmZmVyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+R3N0R0xCdWZmZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtaXMtZ2wtbWVtb3J5IiB0aXRsZT0iZ3N0X2lzX2dsX21lbW9yecKgKCkiPmdzdF9pc19nbF9tZW1vcnk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1pcy1nbC1tZW1vcnktcGJvIiB0aXRsZT0iZ3N0X2lzX2dsX21lbW9yeV9wYm/CoCgpIj5nc3RfaXNfZ2xfbWVtb3J5X3BibzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPkdzdEdMTWVtb3J5UEJPPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGEgbmFtZT0iaWR4SiI+PC9hPjxoMyBjbGFzcz0idGl0bGUiPko8L2gzPgpAQCAtMTY1NSw2ICsyMTc5LDEwIEBACiA8ZGQ+PC9kZD4KIDxhIG5hbWU9ImlkeE0iPjwvYT48aDMgY2xhc3M9InRpdGxlIj5NPC9oMz4KIDxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtTUFQLUdMOkNBUFMiIHRpdGxlPSJHU1RfTUFQX0dMIj5HU1RfTUFQX0dMPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5nc3RnbGJhc2VtZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtdmMxcGFyc2VyLmh0bWwjTUFYLUhSRC1OVU0tTEVBS1ktQlVDS0VUUzpDQVBTIiB0aXRsZT0iTUFYX0hSRF9OVU1fTEVBS1lfQlVDS0VUUyI+TUFYX0hSRF9OVU1fTEVBS1lfQlVDS0VUUzwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy12YzFwYXJzZXIuaHRtbCIgdGl0bGU9InZjMXBhcnNlciI+dmMxcGFyc2VyPC9hPgogPC9kdD4KIDxkZD48L2RkPgpAQCAtMjc3MSw2ICszMjk5LDQ4NiBAQAogPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR1NULVBIT1RPR1JBUEhZLVNIQUtFLVJJU0s6Q0FQUyIgdGl0bGU9IkdTVF9QSE9UT0dSQVBIWV9TSEFLRV9SSVNLIj5HU1RfUEhPVE9HUkFQSFlfU0hBS0VfUklTSzwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sIiB0aXRsZT0iR3N0UGhvdG9ncmFwaHkiPkdzdFBob3RvZ3JhcGh5PC9hPgogPC9kdD4KIDxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1zdHJ1Y3QiIHRpdGxlPSJHc3RQbGF5ZXIiPkdzdFBsYXllcjwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItYnVmZmVyaW5nIiB0aXRsZT0iVGhlIOKAnGJ1ZmZlcmluZ+KAnSBzaWduYWwiPkdzdFBsYXllcjo6YnVmZmVyaW5nPC9hPiwgb2JqZWN0IHNpZ25hbCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItZHVyYXRpb24tY2hhbmdlZCIgdGl0bGU9IlRoZSDigJxkdXJhdGlvbi1jaGFuZ2Vk4oCdIHNpZ25hbCI+R3N0UGxheWVyOjpkdXJhdGlvbi1jaGFuZ2VkPC9hPiwgb2JqZWN0IHNpZ25hbCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItZW5kLW9mLXN0cmVhbSIgdGl0bGU9IlRoZSDigJxlbmQtb2Ytc3RyZWFt4oCdIHNpZ25hbCI+R3N0UGxheWVyOjplbmQtb2Ytc3RyZWFtPC9hPiwgb2JqZWN0IHNpZ25hbCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItZXJyb3IiIHRpdGxlPSJUaGUg4oCcZXJyb3LigJ0gc2lnbmFsIj5Hc3RQbGF5ZXI6OmVycm9yPC9hPiwgb2JqZWN0IHNpZ25hbCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItbWVkaWEtaW5mby11cGRhdGVkIiB0aXRsZT0iVGhlIOKAnG1lZGlhLWluZm8tdXBkYXRlZOKAnSBzaWduYWwiPkdzdFBsYXllcjo6bWVkaWEtaW5mby11cGRhdGVkPC9hPiwgb2JqZWN0IHNpZ25hbCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItbXV0ZS1jaGFuZ2VkIiB0aXRsZT0iVGhlIOKAnG11dGUtY2hhbmdlZOKAnSBzaWduYWwiPkdzdFBsYXllcjo6bXV0ZS1jaGFuZ2VkPC9hPiwgb2JqZWN0IHNpZ25hbCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItcG9zaXRpb24tdXBkYXRlZCIgdGl0bGU9IlRoZSDigJxwb3NpdGlvbi11cGRhdGVk4oCdIHNpZ25hbCI+R3N0UGxheWVyOjpwb3NpdGlvbi11cGRhdGVkPC9hPiwgb2JqZWN0IHNpZ25hbCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItc2Vlay1kb25lIiB0aXRsZT0iVGhlIOKAnHNlZWstZG9uZeKAnSBzaWduYWwiPkdzdFBsYXllcjo6c2Vlay1kb25lPC9hPiwgb2JqZWN0IHNpZ25hbCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItc3RhdGUtY2hhbmdlZCIgdGl0bGU9IlRoZSDigJxzdGF0ZS1jaGFuZ2Vk4oCdIHNpZ25hbCI+R3N0UGxheWVyOjpzdGF0ZS1jaGFuZ2VkPC9hPiwgb2JqZWN0IHNpZ25hbCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItdmlkZW8tZGltZW5zaW9ucy1jaGFuZ2VkIiB0aXRsZT0iVGhlIOKAnHZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZOKAnSBzaWduYWwiPkdzdFBsYXllcjo6dmlkZW8tZGltZW5zaW9ucy1jaGFuZ2VkPC9hPiwgb2JqZWN0IHNpZ25hbCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItdm9sdW1lLWNoYW5nZWQiIHRpdGxlPSJUaGUg4oCcdm9sdW1lLWNoYW5nZWTigJ0gc2lnbmFsIj5Hc3RQbGF5ZXI6OnZvbHVtZS1jaGFuZ2VkPC9hPiwgb2JqZWN0IHNpZ25hbCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItd2FybmluZyIgdGl0bGU9IlRoZSDigJx3YXJuaW5n4oCdIHNpZ25hbCI+R3N0UGxheWVyOjp3YXJuaW5nPC9hPiwgb2JqZWN0IHNpZ25hbCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLWN1cnJlbnQtYXVkaW8tdHJhY2siIHRpdGxlPSJUaGUg4oCcY3VycmVudC1hdWRpby10cmFja+KAnSBwcm9wZXJ0eSI+R3N0UGxheWVyOmN1cnJlbnQtYXVkaW8tdHJhY2s8L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1jdXJyZW50LXN1YnRpdGxlLXRyYWNrIiB0aXRsZT0iVGhlIOKAnGN1cnJlbnQtc3VidGl0bGUtdHJhY2vigJ0gcHJvcGVydHkiPkdzdFBsYXllcjpjdXJyZW50LXN1YnRpdGxlLXRyYWNrPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tY3VycmVudC12aWRlby10cmFjayIgdGl0bGU9IlRoZSDigJxjdXJyZW50LXZpZGVvLXRyYWNr4oCdIHByb3BlcnR5Ij5Hc3RQbGF5ZXI6Y3VycmVudC12aWRlby10cmFjazwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLWR1cmF0aW9uIiB0aXRsZT0iVGhlIOKAnGR1cmF0aW9u4oCdIHByb3BlcnR5Ij5Hc3RQbGF5ZXI6ZHVyYXRpb248L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1tZWRpYS1pbmZvIiB0aXRsZT0iVGhlIOKAnG1lZGlhLWluZm/igJ0gcHJvcGVydHkiPkdzdFBsYXllcjptZWRpYS1pbmZvPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tbXV0ZSIgdGl0bGU9IlRoZSDigJxtdXRl4oCdIHByb3BlcnR5Ij5Hc3RQbGF5ZXI6bXV0ZTwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXBpcGVsaW5lIiB0aXRsZT0iVGhlIOKAnHBpcGVsaW5l4oCdIHByb3BlcnR5Ij5Hc3RQbGF5ZXI6cGlwZWxpbmU8L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1wb3NpdGlvbiIgdGl0bGU9IlRoZSDigJxwb3NpdGlvbuKAnSBwcm9wZXJ0eSI+R3N0UGxheWVyOnBvc2l0aW9uPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tcG9zaXRpb24tdXBkYXRlLWludGVydmFsIiB0aXRsZT0iVGhlIOKAnHBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbOKAnSBwcm9wZXJ0eSI+R3N0UGxheWVyOnBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbDwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXJhdGUiIHRpdGxlPSJUaGUg4oCccmF0ZeKAnSBwcm9wZXJ0eSI+R3N0UGxheWVyOnJhdGU8L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1zaWduYWwtZGlzcGF0Y2hlciIgdGl0bGU9IlRoZSDigJxzaWduYWwtZGlzcGF0Y2hlcuKAnSBwcm9wZXJ0eSI+R3N0UGxheWVyOnNpZ25hbC1kaXNwYXRjaGVyPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tc3VidXJpIiB0aXRsZT0iVGhlIOKAnHN1YnVyaeKAnSBwcm9wZXJ0eSI+R3N0UGxheWVyOnN1YnVyaTwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXVyaSIgdGl0bGU9IlRoZSDigJx1cmnigJ0gcHJvcGVydHkiPkdzdFBsYXllcjp1cmk8L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS12aWRlby1yZW5kZXJlciIgdGl0bGU9IlRoZSDigJx2aWRlby1yZW5kZXJlcuKAnSBwcm9wZXJ0eSI+R3N0UGxheWVyOnZpZGVvLXJlbmRlcmVyPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tdm9sdW1lIiB0aXRsZT0iVGhlIOKAnHZvbHVtZeKAnSBwcm9wZXJ0eSI+R3N0UGxheWVyOnZvbHVtZTwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvLXN0cnVjdCIgdGl0bGU9IkdzdFBsYXllckF1ZGlvSW5mbyI+R3N0UGxheWVyQXVkaW9JbmZvPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiIHRpdGxlPSJlbnVtIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiPkdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGU8L2E+LCBlbnVtIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllckVycm9yIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJFcnJvciI+R3N0UGxheWVyRXJyb3I8L2E+LCBlbnVtIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8tc3RydWN0IiB0aXRsZT0iR3N0UGxheWVyTWVkaWFJbmZvIj5Hc3RQbGF5ZXJNZWRpYUluZm88L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlci1zdHJ1Y3QiIHRpdGxlPSJHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIj5Hc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2UiIHRpdGxlPSJzdHJ1Y3QgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZSI+R3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZTwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTdGF0ZSIgdGl0bGU9ImVudW0gR3N0UGxheWVyU3RhdGUiPkdzdFBsYXllclN0YXRlPC9hPiwgZW51bSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mby1zdHJ1Y3QiIHRpdGxlPSJHc3RQbGF5ZXJTdHJlYW1JbmZvIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdWJ0aXRsZUluZm8tc3RydWN0IiB0aXRsZT0iR3N0UGxheWVyU3VidGl0bGVJbmZvIj5Hc3RQbGF5ZXJTdWJ0aXRsZUluZm88L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mby1zdHJ1Y3QiIHRpdGxlPSJHc3RQbGF5ZXJWaWRlb0luZm8iPkdzdFBsYXllclZpZGVvSW5mbzwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyLXN0cnVjdCIgdGl0bGU9IkdzdFBsYXllclZpZGVvUmVuZGVyZXIiPkdzdFBsYXllclZpZGVvUmVuZGVyZXI8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSIgdGl0bGU9InN0cnVjdCBHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlIj5Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbi1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCIgdGl0bGU9ImdzdHBsYXllci12aXN1YWxpemF0aW9uIj5nc3RwbGF5ZXItdmlzdWFsaXphdGlvbjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1iaXRyYXRlIiB0aXRsZT0iZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9iaXRyYXRlwqAoKSI+Z3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9iaXRyYXRlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtY2hhbm5lbHMiIHRpdGxlPSJnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2NoYW5uZWxzwqAoKSI+Z3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9jaGFubmVsczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWxhbmd1YWdlIiB0aXRsZT0iZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9sYW5ndWFnZcKgKCkiPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbGFuZ3VhZ2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1tYXgtYml0cmF0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbWF4X2JpdHJhdGXCoCgpIj5nc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X21heF9iaXRyYXRlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtc2FtcGxlLXJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X3NhbXBsZV9yYXRlwqAoKSI+Z3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9zYW1wbGVfcmF0ZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItY29sb3ItYmFsYW5jZS10eXBlLWdldC1uYW1lIiB0aXRsZT0iZ3N0X3BsYXllcl9jb2xvcl9iYWxhbmNlX3R5cGVfZ2V0X25hbWXCoCgpIj5nc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfdHlwZV9nZXRfbmFtZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItRVJST1I6Q0FQUyIgdGl0bGU9IkdTVF9QTEFZRVJfRVJST1IiPkdTVF9QTEFZRVJfRVJST1I8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWVycm9yLWdldC1uYW1lIiB0aXRsZT0iZ3N0X3BsYXllcl9lcnJvcl9nZXRfbmFtZcKgKCkiPmdzdF9wbGF5ZXJfZXJyb3JfZ2V0X25hbWU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1hdWRpby1zdHJlYW1zIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfYXVkaW9fc3RyZWFtc8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X2F1ZGlvX3N0cmVhbXM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jb2xvci1iYWxhbmNlIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfY29sb3JfYmFsYW5jZcKgKCkiPmdzdF9wbGF5ZXJfZ2V0X2NvbG9yX2JhbGFuY2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LWF1ZGlvLXRyYWNrIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfY3VycmVudF9hdWRpb190cmFja8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfYXVkaW9fdHJhY2s8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LXN1YnRpdGxlLXRyYWNrIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfY3VycmVudF9zdWJ0aXRsZV90cmFja8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfc3VidGl0bGVfdHJhY2s8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LXZpZGVvLXRyYWNrIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfY3VycmVudF92aWRlb190cmFja8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlkZW9fdHJhY2s8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LXZpc3VhbGl6YXRpb24iIHRpdGxlPSJnc3RfcGxheWVyX2dldF9jdXJyZW50X3Zpc3VhbGl6YXRpb27CoCgpIj5nc3RfcGxheWVyX2dldF9jdXJyZW50X3Zpc3VhbGl6YXRpb248L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1kdXJhdGlvbiIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X2R1cmF0aW9uwqAoKSI+Z3N0X3BsYXllcl9nZXRfZHVyYXRpb248L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1tZWRpYS1pbmZvIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfbWVkaWFfaW5mb8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X21lZGlhX2luZm88L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1tdXRlIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfbXV0ZcKgKCkiPmdzdF9wbGF5ZXJfZ2V0X211dGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1waXBlbGluZSIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3BpcGVsaW5lwqAoKSI+Z3N0X3BsYXllcl9nZXRfcGlwZWxpbmU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1wb3NpdGlvbiIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uwqAoKSI+Z3N0X3BsYXllcl9nZXRfcG9zaXRpb248L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiIHRpdGxlPSJnc3RfcGxheWVyX2dldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWzCoCgpIj5nc3RfcGxheWVyX2dldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWw8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1yYXRlIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfcmF0ZcKgKCkiPmdzdF9wbGF5ZXJfZ2V0X3JhdGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1zdWJ0aXRsZS1zdHJlYW1zIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfc3RyZWFtc8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3N0cmVhbXM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1zdWJ0aXRsZS11cmkiIHRpdGxlPSJnc3RfcGxheWVyX2dldF9zdWJ0aXRsZV91cmnCoCgpIj5nc3RfcGxheWVyX2dldF9zdWJ0aXRsZV91cmk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC11cmkiIHRpdGxlPSJnc3RfcGxheWVyX2dldF91cmnCoCgpIj5nc3RfcGxheWVyX2dldF91cmk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC12aWRlby1zdHJlYW1zIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfdmlkZW9fc3RyZWFtc8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC12b2x1bWUiIHRpdGxlPSJnc3RfcGxheWVyX2dldF92b2x1bWXCoCgpIj5nc3RfcGxheWVyX2dldF92b2x1bWU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sI2dzdC1wbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXItbmV3IiB0aXRsZT0iZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9uZXfCoCgpIj5nc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX25ldzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIiPmdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItaGFzLWNvbG9yLWJhbGFuY2UiIHRpdGxlPSJnc3RfcGxheWVyX2hhc19jb2xvcl9iYWxhbmNlwqAoKSI+Z3N0X3BsYXllcl9oYXNfY29sb3JfYmFsYW5jZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LWNvbnRhaW5lci1mb3JtYXQiIHRpdGxlPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2NvbnRhaW5lcl9mb3JtYXTCoCgpIj5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2NvbnRhaW5lcl9mb3JtYXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1kdXJhdGlvbiIgdGl0bGU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfZHVyYXRpb27CoCgpIj5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2R1cmF0aW9uPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtaW1hZ2Utc2FtcGxlIiB0aXRsZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9pbWFnZV9zYW1wbGXCoCgpIj5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2ltYWdlX3NhbXBsZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXN0cmVhbS1saXN0IiB0aXRsZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9zdHJlYW1fbGlzdMKgKCkiPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfc3RyZWFtX2xpc3Q8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC10YWdzIiB0aXRsZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90YWdzwqAoKSI+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90YWdzPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdGl0bGUiIHRpdGxlPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RpdGxlwqAoKSI+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90aXRsZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXVyaSIgdGl0bGU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdXJpwqAoKSI+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF91cmk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWlzLXNlZWthYmxlIiB0aXRsZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2lzX3NlZWthYmxlwqAoKSI+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2lzX3NlZWthYmxlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1uZXciIHRpdGxlPSJnc3RfcGxheWVyX25ld8KgKCkiPmdzdF9wbGF5ZXJfbmV3PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1wYXVzZSIgdGl0bGU9ImdzdF9wbGF5ZXJfcGF1c2XCoCgpIj5nc3RfcGxheWVyX3BhdXNlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1wbGF5IiB0aXRsZT0iZ3N0X3BsYXllcl9wbGF5wqAoKSI+Z3N0X3BsYXllcl9wbGF5PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZWVrIiB0aXRsZT0iZ3N0X3BsYXllcl9zZWVrwqAoKSI+Z3N0X3BsYXllcl9zZWVrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtYXVkaW8tdHJhY2siIHRpdGxlPSJnc3RfcGxheWVyX3NldF9hdWRpb190cmFja8KgKCkiPmdzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtYXVkaW8tdHJhY2stZW5hYmxlZCIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrX2VuYWJsZWTCoCgpIj5nc3RfcGxheWVyX3NldF9hdWRpb190cmFja19lbmFibGVkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtY29sb3ItYmFsYW5jZSIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X2NvbG9yX2JhbGFuY2XCoCgpIj5nc3RfcGxheWVyX3NldF9jb2xvcl9iYWxhbmNlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtbXV0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X211dGXCoCgpIj5nc3RfcGxheWVyX3NldF9tdXRlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtcG9zaXRpb24tdXBkYXRlLWludGVydmFsIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFswqAoKSI+Z3N0X3BsYXllcl9zZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtcmF0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3JhdGXCoCgpIj5nc3RfcGxheWVyX3NldF9yYXRlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtc3VidGl0bGUtdHJhY2siIHRpdGxlPSJnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFja8KgKCkiPmdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtc3VidGl0bGUtdHJhY2stZW5hYmxlZCIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrX2VuYWJsZWTCoCgpIj5nc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFja19lbmFibGVkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtc3VidGl0bGUtdXJpIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdXJpwqAoKSI+Z3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdXJpPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdXJpIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfdXJpwqAoKSI+Z3N0X3BsYXllcl9zZXRfdXJpPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlkZW8tdHJhY2siIHRpdGxlPSJnc3RfcGxheWVyX3NldF92aWRlb190cmFja8KgKCkiPmdzdF9wbGF5ZXJfc2V0X3ZpZGVvX3RyYWNrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlkZW8tdHJhY2stZW5hYmxlZCIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3ZpZGVvX3RyYWNrX2VuYWJsZWTCoCgpIj5nc3RfcGxheWVyX3NldF92aWRlb190cmFja19lbmFibGVkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlzdWFsaXphdGlvbiIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb27CoCgpIj5nc3RfcGxheWVyX3NldF92aXN1YWxpemF0aW9uPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlzdWFsaXphdGlvbi1lbmFibGVkIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbl9lbmFibGVkwqAoKSI+Z3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbl9lbmFibGVkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdm9sdW1lIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfdm9sdW1lwqAoKSI+Z3N0X3BsYXllcl9zZXRfdm9sdW1lPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zdGF0ZS1nZXQtbmFtZSIgdGl0bGU9ImdzdF9wbGF5ZXJfc3RhdGVfZ2V0X25hbWXCoCgpIj5nc3RfcGxheWVyX3N0YXRlX2dldF9uYW1lPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zdG9wIiB0aXRsZT0iZ3N0X3BsYXllcl9zdG9wwqAoKSI+Z3N0X3BsYXllcl9zdG9wPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LWNhcHMiIHRpdGxlPSJnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jYXBzwqAoKSI+Z3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY2FwczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1jb2RlYyIgdGl0bGU9ImdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NvZGVjwqAoKSI+Z3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY29kZWM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtaW5kZXgiIHRpdGxlPSJnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9pbmRleMKgKCkiPmdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2luZGV4PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LXN0cmVhbS10eXBlIiB0aXRsZT0iZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfc3RyZWFtX3R5cGXCoCgpIj5nc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9zdHJlYW1fdHlwZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC10YWdzIiB0aXRsZT0iZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFnc8KgKCkiPmdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3RhZ3M8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdWJ0aXRsZS1pbmZvLWdldC1sYW5ndWFnZSIgdGl0bGU9ImdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19nZXRfbGFuZ3VhZ2XCoCgpIj5nc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZ2V0X2xhbmd1YWdlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtYml0cmF0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfYml0cmF0ZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfYml0cmF0ZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWZyYW1lcmF0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfZnJhbWVyYXRlwqAoKSI+Z3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9mcmFtZXJhdGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1oZWlnaHQiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2hlaWdodMKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfaGVpZ2h0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtbWF4LWJpdHJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X21heF9iaXRyYXRlwqAoKSI+Z3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9tYXhfYml0cmF0ZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LXBpeGVsLWFzcGVjdC1yYXRpbyIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfcGl4ZWxfYXNwZWN0X3JhdGlvwqAoKSI+Z3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9waXhlbF9hc3BlY3RfcmF0aW88L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC13aWR0aCIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfd2lkdGjCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3dpZHRoPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItZXhwb3NlIiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2V4cG9zZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9leHBvc2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyIj5nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1nZXQtcmVuZGVyLXJlY3RhbmdsZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfcmVuZGVyX3JlY3RhbmdsZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfcmVuZGVyX3JlY3RhbmdsZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIiPmdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWdldC13aW5kb3ctaGFuZGxlIiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF93aW5kb3dfaGFuZGxlwqAoKSI+Z3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF93aW5kb3dfaGFuZGxlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlciI+Z3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItbmV3IiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX25ld8KgKCkiPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9uZXc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyIj5nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1zZXQtcmVuZGVyLXJlY3RhbmdsZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfcmVuZGVyX3JlY3RhbmdsZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfcmVuZGVyX3JlY3RhbmdsZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIiPmdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLXNldC13aW5kb3ctaGFuZGxlIiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF93aW5kb3dfaGFuZGxlwqAoKSI+Z3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF93aW5kb3dfaGFuZGxlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlciI+Z3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGxheWVyLXZpc3VhbGl6YXRpb25zLWZyZWUiIHRpdGxlPSJnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2ZyZWXCoCgpIj5nc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2ZyZWU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCIgdGl0bGU9ImdzdHBsYXllci12aXN1YWxpemF0aW9uIj5nc3RwbGF5ZXItdmlzdWFsaXphdGlvbjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbnMtZ2V0IiB0aXRsZT0iZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19nZXTCoCgpIj5nc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2dldDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24iPmdzdHBsYXllci12aXN1YWxpemF0aW9uPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9uLWNvcHkiIHRpdGxlPSJnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fY29wecKgKCkiPmdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9jb3B5PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItdmlzdWFsaXphdGlvbiI+Z3N0cGxheWVyLXZpc3VhbGl6YXRpb248L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGxheWVyLXZpc3VhbGl6YXRpb24tZnJlZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9mcmVlwqAoKSI+Z3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2ZyZWU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCIgdGl0bGU9ImdzdHBsYXllci12aXN1YWxpemF0aW9uIj5nc3RwbGF5ZXItdmlzdWFsaXphdGlvbjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KIDxhIG5hbWU9ImlkeFQiPjwvYT48aDMgY2xhc3M9InRpdGxlIj5UPC9oMz4KIDxkdD4KIEdTVF9UWVBFX0NBTUVSQUJJTl9NT0RFLCBtYWNybyBpbiBnc3RjYW1lcmFiaW4tZW51bQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvYmFzZS5odG1sIGIvZG9jcy9saWJzL2h0bWwvYmFzZS5odG1sCmluZGV4IDRlNGY3NjguLmVlODI2YzAgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2Jhc2UuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9iYXNlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5HU3RyZWFtZXIgQmFzZSBjbGFzc2VzIGZyb20gZ3N0LXBsdWdpbnMtYmFkOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sIiB0aXRsZT0iUGFydMKgSS7CoEdTdHJlYW1lciBCYWQgUGx1Z2lucyBMaWJyYXJpZXMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbCIgdGl0bGU9IkdzdEluc2VydGJpbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9jaDA3Lmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9jaDA4Lmh0bWwKc2ltaWxhcml0eSBpbmRleCA4MSUKcmVuYW1lIGZyb20gZG9jcy9saWJzL2h0bWwvY2gwNy5odG1sCnJlbmFtZSB0byBkb2NzL2xpYnMvaHRtbC9jaDA4Lmh0bWwKaW5kZXggYjYxNzBhMC4uNWYxNDVlZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvY2gwNy5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2NoMDguaHRtbApAQCAtMywxMCArMywxMCBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+SW50ZXJmYWNlczogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnc3RyZWFtZXItcGx1Z2lucy1iYWQuaHRtbCIgdGl0bGU9IlBhcnTCoEkuwqBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgTGlicmFyaWVzIj4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dYMTEuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93WDExIj4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCIgdGl0bGU9ImdzdHBsYXllci12aXN1YWxpemF0aW9uIj4KIDxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCIgdGl0bGU9IkdzdFBob3RvZ3JhcGh5Ij4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CkBAIC0xNiwxMiArMTYsMTIgQEAKIDx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJjaGFwdGVyIj4KIDxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiPgotPGEgbmFtZT0iaWQtMS4yLjEwIj48L2E+SW50ZXJmYWNlczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+Cis8YSBuYW1lPSJpZC0xLjIuMTEiPjwvYT5JbnRlcmZhY2VzPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KIDxkaXYgY2xhc3M9InRvYyI+PGRsIGNsYXNzPSJ0b2MiPjxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sIj5Hc3RQaG90b2dyYXBoeTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgSW50ZXJmYWNlIGZvciBkaWdpdGFsIGltYWdlIGNhcHR1cmUgZWxlbWVudHM8L3NwYW4+CiA8L2R0PjwvZGw+PC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9jb2RlY3BhcnNlcnMuaHRtbCBiL2RvY3MvbGlicy9odG1sL2NvZGVjcGFyc2Vycy5odG1sCmluZGV4IGE3NzZkZWEuLjEyNTkwNzggMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2NvZGVjcGFyc2Vycy5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2NvZGVjcGFyc2Vycy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Qml0c3RyZWFtIHBhcnNpbmcgTGlicmFyeTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnc3RyZWFtZXItcGx1Z2lucy1iYWQuaHRtbCIgdGl0bGU9IlBhcnTCoEkuwqBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgTGlicmFyaWVzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iY29tcGlsaW5nLmh0bWwiIHRpdGxlPSJDb21waWxpbmciPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvY29tcGlsaW5nLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9jb21waWxpbmcuaHRtbAppbmRleCBiZTM2MTBmLi5jOWNhMzNiIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9jb21waWxpbmcuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9jb21waWxpbmcuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkNvbXBpbGluZzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnc3RyZWFtZXItcGx1Z2lucy1iYWQuaHRtbCIgdGl0bGU9IlBhcnTCoEkuwqBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgTGlicmFyaWVzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmh0bWwiIHRpdGxlPSJQYXJ0wqBJLsKgR1N0cmVhbWVyIEJhZCBQbHVnaW5zIExpYnJhcmllcyI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nbC5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ2wuaHRtbAppbmRleCAwMzk2MTZhLi5mYzc0ZWRjIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nbC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dsLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5PcGVuR0wgSGVscGVyIExpYnJhcnk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmh0bWwiIHRpdGxlPSJQYXJ0wqBJLsKgR1N0cmVhbWVyIEJhZCBQbHVnaW5zIExpYnJhcmllcyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFZpZGVvQWdncmVnYXRvclBhZC5odG1sIiB0aXRsZT0iR3N0VmlkZW9BZ2dyZWdhdG9yUGFkIj4KQEAgLTI3LDYgKzI3LDE1IEBACiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCI+R3N0R0xBUEk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIj5Hc3RHTEJhc2VNZW1vcnk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgYnVmZmVyczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xCYXNlRmlsdGVyLmh0bWwiPkdzdEdMQmFzZUZpbHRlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgPHNwYW4gY2xhc3M9InR5cGUiPkdzdEJhc2VUcmFuc2Zvcm08L3NwYW4+IHN1YmNsYXNzIGZvciB0cmFuc2Zvcm1pbiBPcGVuR0wgcmVzb3VyY2VzPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIj5Hc3RHTEJ1ZmZlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCBidWZmZXJzPC9zcGFuPgorPC9kdD4KKzxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCI+R3N0R0xCdWZmZXJQb29sPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBidWZmZXIgcG9vbCBmb3IgPHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPiBvYmplY3RzPC9zcGFuPgogPC9kdD4KIDxkdD4KQEAgLTU0LDI1ICs2MywyOCBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIj5Hc3RHTERpc3BsYXk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIHdpbmRvdyBzeXN0ZW0gZGlzcGxheSBjb25uZWN0aW9uIGFic3RyYWN0aW9uPC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiPkdzdEdMRG93bmxvYWQ8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGFuIG9iamVjdCB0aGF0IGRvd25sb2FkcyBHTCB0ZXh0dXJlczwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCI+R3N0RUdMSW1hZ2VNZW1vcnk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIj5Hc3RHTEJhc2VGaWx0ZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMRmlsdGVyLmh0bWwiPkdzdEdMRmlsdGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwiPkdzdEdMRnJhbWVidWZmZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiPkdzdEdMTWVtb3J5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIHRleHR1cmVzPC9zcGFuPgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiPkdzdEdMTWVtb3J5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIHRleHR1cmVzPC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIj5Hc3RHTFNoYWRlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIj5Hc3RHTE1lbW9yeVBCTzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCB0ZXh0dXJlczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCI+R3N0R0xTaGFkZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG9iamVjdCByZXByZXNlbnRpbmcgYW4gT3BlbkdMIHNoYWRlciBwcm9ncmFtPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiPkdzdEdMU0w8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGhlbHBlcnMgZm9yIGRlYWxpbmcgd2l0aCBPcGVuR0wgc2hhZGVyczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iLmh0bWwiPkdzdEdMU0xTdGFnZTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgb2JqZWN0IGZvciBkZWFsaW5nIHdpdGggT3BlbkdMIHNoYWRlciBzdGFnZXM8L3NwYW4+CiA8L2R0PgogPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCI+R3N0R0xTeW5jTWV0YTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KQEAgLTgxLDEyICs5Myw2IEBACiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCI+R3N0R0xVcGxvYWQ8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGFuIG9iamVjdCB0aGF0IHVwbG9hZHMgdG8gR0wgdGV4dHVyZXM8L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIj5Hc3RHTFVwbG9hZE1ldGE8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGFuIG9iamVjdCB0aGF0IHByb3ZpZGVzIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGE8L3NwYW4+PC9zcGFuPgotPC9kdD4KLTxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCI+VXRpbGl0aWVzPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTFdpbmRvdy5odG1sIj5Hc3RHTFdpbmRvdzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgd2luZG93L3N1cmZhY2UgYWJzdHJhY3Rpb248L3NwYW4+CiA8L2R0PgogPGR0PgpAQCAtMTA3LDYgKzExMywxNSBAQAogPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLmh0bWwiPkdzdEdMV2luZG93WDExPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiPk9wZW5HTCBkZWJ1Z2dpbmc8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGhlbHBlciByb3V0aW5lcyBmb3IgZGVhbGluZyB3aXRoIE9wZW5HTCBkZWJ1Z2dpbmc8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiPk9wZW5HTCBGb3JtYXRzPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgorPC9kdD4KIDwvZGw+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAuZGV2aGVscDIgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAuZGV2aGVscDIKaW5kZXggOGNiMGM4Yi4uYjkyZDFiZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wLmRldmhlbHAyCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC5kZXZoZWxwMgpAQCAtMzQsNiArMzQsOSBAQAogICAgICAgPC9zdWI+CiAgICAgICA8c3ViIG5hbWU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSIgbGluaz0iZ2wuaHRtbCI+CiAgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xBUEkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwiLz4KKyAgICAgICAgPHN1YiBuYW1lPSJHc3RHTEJhc2VNZW1vcnkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIi8+CisgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xCYXNlRmlsdGVyIiBsaW5rPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCIvPgorICAgICAgICA8c3ViIG5hbWU9IkdzdEdMQnVmZmVyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIi8+CiAgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xCdWZmZXJQb29sIiBsaW5rPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIvPgogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMQ29sb3JDb252ZXJ0IiBsaW5rPSJHc3RHTENvbG9yQ29udmVydC5odG1sIi8+CiAgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xDb250ZXh0IiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCIvPgpAQCAtNDMsMTcgKzQ2LDE2IEBACiAgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xDb250ZXh0R0xYIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRHTFguaHRtbCIvPgogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMQ29udGV4dFdHTCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0V0dMLmh0bWwiLz4KICAgICAgICAgPHN1YiBuYW1lPSJHc3RHTERpc3BsYXkiIGxpbms9IkdzdEdMRGlzcGxheS5odG1sIi8+Ci0gICAgICAgIDxzdWIgbmFtZT0iR3N0R0xEb3dubG9hZCIgbGluaz0iR3N0R0xEb3dubG9hZC5odG1sIi8+CiAgICAgICAgIDxzdWIgbmFtZT0iR3N0RUdMSW1hZ2VNZW1vcnkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwiLz4KLSAgICAgICAgPHN1YiBuYW1lPSJHc3RHTEJhc2VGaWx0ZXIiIGxpbms9IkdzdEdMQmFzZUZpbHRlci5odG1sIi8+CiAgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xGaWx0ZXIiIGxpbms9IkdzdEdMRmlsdGVyLmh0bWwiLz4KICAgICAgICAgPHN1YiBuYW1lPSJHc3RHTEZyYW1lYnVmZmVyIiBsaW5rPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwiLz4KLSAgICAgICAgPHN1YiBuYW1lPSJHc3RHTE1lbW9yeSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIvPgotICAgICAgICA8c3ViIG5hbWU9IkdzdEdMU2hhZGVyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIi8+CisgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xNZW1vcnkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiLz4KKyAgICAgICAgPHN1YiBuYW1lPSJHc3RHTE1lbW9yeVBCTyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCIvPgorICAgICAgICA8c3ViIG5hbWU9IkdzdEdMU2hhZGVyIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sIi8+CisgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xTTCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIi8+CisgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xTTFN0YWdlIiBsaW5rPSIuaHRtbCIvPgogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMU3luY01ldGEiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCIvPgogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMVXBsb2FkIiBsaW5rPSJHc3RHTFVwbG9hZC5odG1sIi8+Ci0gICAgICAgIDxzdWIgbmFtZT0iR3N0R0xVcGxvYWRNZXRhIiBsaW5rPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCIvPgotICAgICAgICA8c3ViIG5hbWU9IlV0aWxpdGllcyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiLz4KICAgICAgICAgPHN1YiBuYW1lPSJHc3RHTFdpbmRvdyIgbGluaz0iR3N0R0xXaW5kb3cuaHRtbCIvPgogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMV2luZG93QW5kcm9pZCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dBbmRyb2lkLmh0bWwiLz4KICAgICAgICAgPHN1YiBuYW1lPSJHc3RHTFdpbmRvd0NvY29hIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0NvY29hLmh0bWwiLz4KQEAgLTYxLDggKzYzLDE4IEBACiAgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xXaW5kb3dXYXlsYW5kIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dheWxhbmQuaHRtbCIvPgogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMV2luZG93V2luMzIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93V2luMzIuaHRtbCIvPgogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMV2luZG93WDExIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sIi8+CisgICAgICAgIDxzdWIgbmFtZT0iT3BlbkdMIGRlYnVnZ2luZyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIi8+CisgICAgICAgIDxzdWIgbmFtZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIvPgorICAgICAgICA8c3ViIG5hbWU9Ik9wZW5HTCBGb3JtYXRzIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIi8+CiAgICAgICA8L3N1Yj4KLSAgICAgIDxzdWIgbmFtZT0iSW50ZXJmYWNlcyIgbGluaz0iY2gwNy5odG1sIj4KKyAgICAgIDxzdWIgbmFtZT0iUGxheWVyIExpYnJhcnkiIGxpbms9InBsYXllci5odG1sIj4KKyAgICAgICAgPHN1YiBuYW1lPSJnc3RwbGF5ZXIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIi8+CisgICAgICAgIDxzdWIgbmFtZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIi8+CisgICAgICAgIDxzdWIgbmFtZT0iZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwiLz4KKyAgICAgICAgPHN1YiBuYW1lPSJnc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCIvPgorICAgICAgICA8c3ViIG5hbWU9ImdzdHBsYXllci12aXN1YWxpemF0aW9uIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sIi8+CisgICAgICA8L3N1Yj4KKyAgICAgIDxzdWIgbmFtZT0iSW50ZXJmYWNlcyIgbGluaz0iY2gwOC5odG1sIj4KICAgICAgICAgPHN1YiBuYW1lPSJHc3RQaG90b2dyYXBoeSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCIvPgogICAgICAgPC9zdWI+CiAgICAgPC9zdWI+CkBAIC00MzMsMTkgKzQ0NSw2OCBAQAogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYXBpX2Zyb21fc3RyaW5nwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNnc3QtZ2wtYXBpLWZyb20tc3RyaW5nIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9wbGF0Zm9ybV90b19zdHJpbmfCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI2dzdC1nbC1wbGF0Zm9ybS10by1zdHJpbmciLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3BsYXRmb3JtX2Zyb21fc3RyaW5nwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNnc3QtZ2wtcGxhdGZvcm0tZnJvbS1zdHJpbmciLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NoZWNrX2V4dGVuc2lvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjZ3N0LWdsLWNoZWNrLWV4dGVuc2lvbiIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0R0xBUEkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR3N0R0xBUEkiLz4KICAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdEdMUGxhdGZvcm0iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR3N0R0xQbGF0Zm9ybSIvPgogICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfQVBJX0dMRVMxX05BTUUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR1NULUdMLUFQSS1HTEVTMS1OQU1FOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX0FQSV9HTEVTMl9OQU1FIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1BUEktR0xFUzItTkFNRTpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9BUElfT1BFTkdMM19OQU1FIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1BUEktT1BFTkdMMy1OQU1FOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX0FQSV9PUEVOR0xfTkFNRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHU1QtR0wtQVBJLU9QRU5HTC1OQU1FOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX01BUF9HTCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULU1BUC1HTDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9CQVNFX01FTU9SWV9FUlJPUiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuY8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0FMTE9DIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1BTExPQzpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfU1lTTUVNIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1XUkFQLVNZU01FTTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctV1JBUC1HUFUtSEFORExFOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfVVNFUiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctVVNFUjpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19pbml0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWluaXQiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHnCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtY29weSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1mcmVlIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGHCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtZnJlZS1kYXRhIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGHCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtY29weS1kYXRhIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9iYXNlX21lbW9yeV9pbml0X29uY2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktaW5pdC1vbmNlIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9iYXNlX21lbW9yeV9pbml0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LWluaXQiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2lzX2dsX2Jhc2VfbWVtb3J5wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWlzLWdsLWJhc2UtbWVtb3J5IiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24iIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbiIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbiIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb24iIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9iYXNlX21lbW9yeV9hbGxvY8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1hbGxvYyIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NfZGF0YcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1hbGxvYy1kYXRhIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9iYXNlX21lbW9yeV9tZW1jcHnCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktbWVtY3B5IiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvci1zdHJ1Y3QiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX05BTUUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1CQVNFLU1FTU9SWS1BTExPQ0FUT1ItTkFNRTpDQVBTIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RHTEJhc2VNZW1vcnlFcnJvciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5RXJyb3IiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdEdMQmFzZU1lbW9yeVRyYW5zZmVyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlUcmFuc2ZlciIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTEJhc2VNZW1vcnkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xCYXNlRmlsdGVyIiBsaW5rPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXItc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTEJhc2VGaWx0ZXJDbGFzcyIgbGluaz0iR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyQ2xhc3MiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGNvbnRleHTigJ0gcHJvcGVydHkiIGxpbms9IkdzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci0tY29udGV4dCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYnVmZmVyX2luaXRfb25jZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LWdsLWJ1ZmZlci1pbml0LW9uY2UiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2lzX2dsX2J1ZmZlcsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LWlzLWdsLWJ1ZmZlciIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYnVmZmVyX2FsbG9jwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtZ2wtYnVmZmVyLWFsbG9jIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0JVRkZFUiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1CVUZGRVI6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYnVmZmVyX2FsbG9jYXRpb25fcGFyYW1zX25ld8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LWdsLWJ1ZmZlci1hbGxvY2F0aW9uLXBhcmFtcy1uZXciIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMQnVmZmVyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xCdWZmZXJBbGxvY2F0b3IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXJBbGxvY2F0b3Itc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3MiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX0JVRkZFUl9BTExPQ0FUT1JfTkFNRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHU1QtR0wtQlVGRkVSLUFMTE9DQVRPUi1OQU1FOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfQlVGRkVSIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dTVC1DQVBTLUZFQVRVUkUtTUVNT1JZLUdMLUJVRkZFUjpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9idWZmZXJfcG9vbF9uZXfCoCgpIiBsaW5rPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNnc3QtZ2wtYnVmZmVyLXBvb2wtbmV3Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0R0xCdWZmZXJQb29sIiBsaW5rPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2wtc3RydWN0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0R0xCdWZmZXJQb29sQ2xhc3MiIGxpbms9IkdzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbENsYXNzIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9idWZmZXJfcG9vbF9jb25maWdfZ2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zwqAoKSIgbGluaz0iR3N0R0xCdWZmZXJQb29sLmh0bWwjZ3N0LWJ1ZmZlci1wb29sLWNvbmZpZy1nZXQtZ2wtYWxsb2NhdGlvbi1wYXJhbXMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXPCoCgpIiBsaW5rPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNnc3QtYnVmZmVyLXBvb2wtY29uZmlnLXNldC1nbC1hbGxvY2F0aW9uLXBhcmFtcyIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xCdWZmZXJQb29sIiBsaW5rPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2wtc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTEJ1ZmZlclBvb2xDbGFzcyIgbGluaz0iR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sQ2xhc3MiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbG9yX2NvbnZlcnRfbmV3wqAoKSIgbGluaz0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC1uZXciLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbG9yX2NvbnZlcnRfc2V0X2NhcHPCoCgpIiBsaW5rPSJHc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LXNldC1jYXBzIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb2xvcl9jb252ZXJ0X3RyYW5zZm9ybV9jYXBzwqAoKSIgbGluaz0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC10cmFuc2Zvcm0tY2FwcyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29sb3JfY29udmVydF9maXhhdGVfY2Fwc8KgKCkiIGxpbms9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwjZ3N0LWdsLWNvbG9yLWNvbnZlcnQtZml4YXRlLWNhcHMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZGVjaWRlX2FsbG9jYXRpb27CoCgpIiBsaW5rPSJHc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LWRlY2lkZS1hbGxvY2F0aW9uIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb2xvcl9jb252ZXJ0X3BlcmZvcm3CoCgpIiBsaW5rPSJHc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LXBlcmZvcm0iLz4KICAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX0NPTE9SX0NPTlZFUlRfRk9STUFUUyIgbGluaz0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNHU1QtR0wtQ09MT1ItQ09OVkVSVC1GT1JNQVRTOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX0NPTE9SX0NPTlZFUlRfVklERU9fQ0FQUyIgbGluaz0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNHU1QtR0wtQ09MT1ItQ09OVkVSVC1WSURFTy1DQVBTIi8+CkBAIC00NjEsNiArNTIyLDcgQEAKICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfYWN0aXZhdGXCoCgpIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1hY3RpdmF0ZSIgc2luY2U9IjEuNCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9kZWZhdWx0X2dldF9wcm9jX2FkZHJlc3PCoCgpIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWZhdWx0LWdldC1wcm9jLWFkZHJlc3MiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzc8KgKCkiIGxpbms9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWdldC1wcm9jLWFkZHJlc3MiIHNpbmNlPSIxLjQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzc193aXRoX3BsYXRmb3JtwqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LXByb2MtYWRkcmVzcy13aXRoLXBsYXRmb3JtIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2dldF93aW5kb3fCoCgpIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtd2luZG93IiBzaW5jZT0iMS40Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X3NldF93aW5kb3fCoCgpIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1zZXQtd2luZG93IiBzaW5jZT0iMS40Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGTCoCgpIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC10aHJlYWQtYWRkIiBzaW5jZT0iMS40Ii8+CkBAIC00NzIsNiArNTM0LDggQEAKICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnRfZ2xfYXBpwqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LWN1cnJlbnQtZ2wtYXBpIiBzaW5jZT0iMS42Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2dldF90aHJlYWTCoCgpIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtdGhyZWFkIiBzaW5jZT0iMS42Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2Nhbl9zaGFyZcKgKCkiIGxpbms9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWNhbi1zaGFyZSIgc2luY2U9IjEuNiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9pc19zaGFyZWTCoCgpIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1pcy1zaGFyZWQiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfc2V0X3NoYXJlZF93aXRowqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtc2V0LXNoYXJlZC13aXRoIiBzaW5jZT0iMS44Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2NoZWNrX2ZlYXR1cmXCoCgpIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1jaGVjay1mZWF0dXJlIiBzaW5jZT0iMS40Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb27CoCgpIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1jaGVjay1nbC12ZXJzaW9uIiBzaW5jZT0iMS40Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2dldF9nbF92ZXJzaW9uwqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LWdsLXZlcnNpb24iIHNpbmNlPSIxLjQiLz4KQEAgLTUwNSwxNyArNTY5LDEzIEBACiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9kaXNwbGF5X2FkZF9jb250ZXh0wqAoKSIgbGluaz0iR3N0R0xEaXNwbGF5Lmh0bWwjZ3N0LWdsLWRpc3BsYXktYWRkLWNvbnRleHQiIHNpbmNlPSIxLjYiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2Rpc3BsYXlfZ2V0X2dsX2NvbnRleHRfZm9yX3RocmVhZMKgKCkiIGxpbms9IkdzdEdMRGlzcGxheS5odG1sI2dzdC1nbC1kaXNwbGF5LWdldC1nbC1jb250ZXh0LWZvci10aHJlYWQiIHNpbmNlPSIxLjYiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2Rpc3BsYXlfZ2V0X2hhbmRsZcKgKCkiIGxpbms9IkdzdEdMRGlzcGxheS5odG1sI2dzdC1nbC1kaXNwbGF5LWdldC1oYW5kbGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2Rpc3BsYXlfY3JlYXRlX2NvbnRleHTCoCgpIiBsaW5rPSJHc3RHTERpc3BsYXkuaHRtbCNnc3QtZ2wtZGlzcGxheS1jcmVhdGUtY29udGV4dCIgc2luY2U9IjEuNiIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfY29udGV4dF9nZXRfZ2xfZGlzcGxhecKgKCkiIGxpbms9IkdzdEdMRGlzcGxheS5odG1sI2dzdC1jb250ZXh0LWdldC1nbC1kaXNwbGF5IiBzaW5jZT0iMS40Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9jb250ZXh0X3NldF9nbF9kaXNwbGF5wqAoKSIgbGluaz0iR3N0R0xEaXNwbGF5Lmh0bWwjZ3N0LWNvbnRleHQtc2V0LWdsLWRpc3BsYXkiIHNpbmNlPSIxLjQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX0RJU1BMQVlfQ09OVEVYVF9UWVBFIiBsaW5rPSJHc3RHTERpc3BsYXkuaHRtbCNHU1QtR0wtRElTUExBWS1DT05URVhULVRZUEU6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0R0xEaXNwbGF5VHlwZSIgbGluaz0iR3N0R0xEaXNwbGF5Lmh0bWwjR3N0R0xEaXNwbGF5VHlwZSIvPgogICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xEaXNwbGF5IiBsaW5rPSJHc3RHTERpc3BsYXkuaHRtbCNHc3RHTERpc3BsYXktc3RydWN0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0ic2lnbmFsIiBuYW1lPSJUaGUg4oCcY3JlYXRlLWNvbnRleHTigJ0gc2lnbmFsIiBsaW5rPSJHc3RHTERpc3BsYXkuaHRtbCNHc3RHTERpc3BsYXktY3JlYXRlLWNvbnRleHQiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2Rvd25sb2FkX25ld8KgKCkiIGxpbms9IkdzdEdMRG93bmxvYWQuaHRtbCNnc3QtZ2wtZG93bmxvYWQtbmV3Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9kb3dubG9hZF9zZXRfZm9ybWF0wqAoKSIgbGluaz0iR3N0R0xEb3dubG9hZC5odG1sI2dzdC1nbC1kb3dubG9hZC1zZXQtZm9ybWF0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9kb3dubG9hZF90cmFuc2Zvcm1fY2Fwc8KgKCkiIGxpbms9IkdzdEdMRG93bmxvYWQuaHRtbCNnc3QtZ2wtZG93bmxvYWQtdHJhbnNmb3JtLWNhcHMiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fd2l0aF9kYXRhwqAoKSIgbGluaz0iR3N0R0xEb3dubG9hZC5odG1sI2dzdC1nbC1kb3dubG9hZC1wZXJmb3JtLXdpdGgtZGF0YSIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xEb3dubG9hZCIgbGluaz0iR3N0R0xEb3dubG9hZC5odG1sI0dzdEdMRG93bmxvYWQtc3RydWN0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9lZ2xfaW1hZ2VfbWVtb3J5X2luaXTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sI2dzdC1lZ2wtaW1hZ2UtbWVtb3J5LWluaXQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2VnbF9pbWFnZV9tZW1vcnlfZ2V0X2Rpc3BsYXnCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sI2dzdC1lZ2wtaW1hZ2UtbWVtb3J5LWdldC1kaXNwbGF5Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9lZ2xfaW1hZ2VfbWVtb3J5X2dldF9pbWFnZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwjZ3N0LWVnbC1pbWFnZS1tZW1vcnktZ2V0LWltYWdlIi8+CkBAIC01MjUsOSArNTg1LDYgQEAKICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2lzX2VnbF9pbWFnZV9tZW1vcnnCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sI2dzdC1pcy1lZ2wtaW1hZ2UtbWVtb3J5Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9FR0xfSU1BR0VfTUVNT1JZX1RZUEUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwjR1NULUVHTC1JTUFHRS1NRU1PUlktVFlQRTpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0VHTF9JTUFHRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCNHU1QtQ0FQUy1GRUFUVVJFLU1FTU9SWS1FR0wtSU1BR0U6Q0FQUyIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xCYXNlRmlsdGVyIiBsaW5rPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXItc3RydWN0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTEJhc2VGaWx0ZXJDbGFzcyIgbGluaz0iR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyQ2xhc3MiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGNvbnRleHTigJ0gcHJvcGVydHkiIGxpbms9IkdzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci0tY29udGV4dCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfZmlsdGVyX2RyYXdfdGV4dHVyZcKgKCkiIGxpbms9IkdzdEdMRmlsdGVyLmh0bWwjZ3N0LWdsLWZpbHRlci1kcmF3LXRleHR1cmUiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2ZpbHRlcl9yZW5kZXJfdG9fdGFyZ2V0wqAoKSIgbGluaz0iR3N0R0xGaWx0ZXIuaHRtbCNnc3QtZ2wtZmlsdGVyLXJlbmRlci10by10YXJnZXQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2ZpbHRlcl9yZW5kZXJfdG9fdGFyZ2V0X3dpdGhfc2hhZGVywqAoKSIgbGluaz0iR3N0R0xGaWx0ZXIuaHRtbCNnc3QtZ2wtZmlsdGVyLXJlbmRlci10by10YXJnZXQtd2l0aC1zaGFkZXIiLz4KQEAgLTU0MCw4MCArNTk3LDEwOCBAQAogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfZnJhbWVidWZmZXJfdXNlX3YywqAoKSIgbGluaz0iR3N0R0xGcmFtZWJ1ZmZlci5odG1sI2dzdC1nbC1mcmFtZWJ1ZmZlci11c2UtdjIiLz4KICAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RHTEZyYW1lYnVmZmVyIiBsaW5rPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwjR3N0R0xGcmFtZWJ1ZmZlci1zdHJ1Y3QiLz4KICAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RHTEZyYW1lYnVmZmVyQ2xhc3MiIGxpbms9IkdzdEdMRnJhbWVidWZmZXIuaHRtbCNHc3RHTEZyYW1lYnVmZmVyQ2xhc3MiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9pbml0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWluaXQiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9hbGxvY8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1hbGxvYyIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X3dyYXBwZWTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktd3JhcHBlZCIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X3dyYXBwZWRfdGV4dHVyZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS13cmFwcGVkLXRleHR1cmUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1jb3B5LWludG8tdGV4dHVyZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlcsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1zZXR1cC1idWZmZXIiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9zZXR1cF93cmFwcGVkwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXNldHVwLXdyYXBwZWQiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLXRleHR1cmUtdHlwZS1mcm9tLWZvcm1hdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfaXNfZ2xfbWVtb3J5wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtaXMtZ2wtbWVtb3J5Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTEFsbG9jYXRvciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRvci1zdHJ1Y3QiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMQWxsb2NhdG9yQ2xhc3MiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0b3JDbGFzcyIvPgotICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHU1QtR0wtTUVNT1JZLUFMTE9DQVRPUjpDQVBTIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTE1lbW9yeSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2Vycm9yX3F1YXJrwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWVycm9yLXF1YXJrIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9TSEFERVJfRVJST1IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR1NULUdMLVNIQURFUi1FUlJPUjpDQVBTIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9zZXTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXJ2YXJpYWJsZS1zZXQiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcnZhcmlhYmxlc19wYXJzZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlcnZhcmlhYmxlcy1wYXJzZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX25ld8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXciLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdmVydGV4X3NvdXJjZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdmVydGV4LXNvdXJjZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LWZyYWdtZW50LXNvdXJjZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2dldF92ZXJ0ZXhfc291cmNlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC12ZXJ0ZXgtc291cmNlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfZ2V0X2ZyYWdtZW50X3NvdXJjZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtZnJhZ21lbnQtc291cmNlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1wcm9ncmFtLWhhbmRsZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF9hY3RpdmXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LWFjdGl2ZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2lzX2NvbXBpbGVkwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWlzLWNvbXBpbGVkIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbmRfY2hlY2vCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS1hbmQtY2hlY2siLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlX2FsbF93aXRoX2F0dHJpYnNfYW5kX2NoZWNrwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtYWxsLXdpdGgtYXR0cmlicy1hbmQtY2hlY2siLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF9mX2FuZF9jaGVja8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC1mLWFuZC1jaGVjayIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtd2l0aC1kZWZhdWx0LXYtYW5kLWNoZWNrIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdmZfYW5kX2NoZWNrwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtd2l0aC1kZWZhdWx0LXZmLWFuZC1jaGVjayIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3JlbGVhc2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItcmVsZWFzZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3VzZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci11c2UiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xacKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWZ2wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmdiIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaXYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZiIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZnYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yacKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaXYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZiIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZnYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zacKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaXYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZiIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZnYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80acKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aXYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMmZ2wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yZnYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMngzZnbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4M2Z2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4NGZ2wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDRmdiIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zZnbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTNmdiIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDJmdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3gyZnYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3g0ZnbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4NGZ2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNGZ2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4MmZ2wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDJmdiIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgzZnYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1hdHRyaWJ1dGUtbG9jYXRpb24iLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9iaW5kX2F0dHJpYnV0ZV9sb2NhdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1iaW5kLWF0dHJpYnV0ZS1sb2NhdGlvbiIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0R0xTaGFkZXJFcnJvciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlckVycm9yIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RHTFNoYWRlclNvdXJjZVR5cGUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXJTb3VyY2VUeXBlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlcnZhcmlhYmxlLWRlc2MiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMU2hhZGVyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcYWN0aXZl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS1hY3RpdmUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGNvbXBpbGVk4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS1jb21waWxlZCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcZnJhZ21lbnQtc3Jj4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS1mcmFnbWVudC1zcmMiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHZlcnRleC1zcmPigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLXZlcnRleC1zcmMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfVklERU8iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctVklERU86Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtY29weS1kYXRhIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGHCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1mcmVlLWRhdGEiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2luaXRfZnVsbMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWluaXQtZnVsbCIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtbmV3IiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtbmV3LXdyYXBwZWQtZGF0YSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfdGV4dHVyZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldy13cmFwcGVkLXRleHR1cmUiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktYWxsb2NhdG9yLWdldC1kZWZhdWx0IiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfaW5pdF9vbmNlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWluaXQtb25jZSIgc2luY2U9IjEuNCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X2luaXTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktaW5pdCIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfaXNfZ2xfbWVtb3J5wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtaXMtZ2wtbWVtb3J5IiBzaW5jZT0iMS40Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfY29weV9pbnRvwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWNvcHktaW50byIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X2NvcHlfdGV4aW1hZ2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktY29weS10ZXhpbWFnZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X3JlYWRfcGl4ZWxzwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXJlYWQtcGl4ZWxzIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfdGV4c3ViaW1hZ2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktdGV4c3ViaW1hZ2UiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9oZWlnaHTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtaGVpZ2h0IiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaWTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtaWQiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90YXJnZXTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtdGFyZ2V0IiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdHlwZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS10eXBlIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfd2lkdGjCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtd2lkdGgiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXLCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktc2V0dXAtYnVmZmVyIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9NRU1PUllfVklERU9fRk9STUFUU19TVFIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR1NULUdMLU1FTU9SWS1WSURFTy1GT1JNQVRTLVNUUjpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMTWVtb3J5QWxsb2NhdG9yIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5QWxsb2NhdG9yLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTE1lbW9yeSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9OQU1FIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dTVC1HTC1NRU1PUlktQUxMT0NBVE9SLU5BTUU6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfaXNfZ2xfbWVtb3J5X3Bib8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWlzLWdsLW1lbW9yeS1wYm8iIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9wYm9fY29weV9pbnRvX3RleHR1cmXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1nbC1tZW1vcnktcGJvLWNvcHktaW50by10ZXh0dXJlIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfcGJvX2Rvd25sb2FkX3RyYW5zZmVywqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtZ2wtbWVtb3J5LXBiby1kb3dubG9hZC10cmFuc2ZlciIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X3Bib19pbml0X29uY2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1nbC1tZW1vcnktcGJvLWluaXQtb25jZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X3Bib191cGxvYWRfdHJhbnNmZXLCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1nbC1tZW1vcnktcGJvLXVwbG9hZC10cmFuc2ZlciIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3Itc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPQWxsb2NhdG9yQ2xhc3MiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX05BTUUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR1NULUdMLU1FTU9SWS1QQk8tQUxMT0NBVE9SLU5BTUU6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xNZW1vcnlQQk8iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR3N0R0xNZW1vcnlQQk8iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9uZXfCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfbmV3X2RlZmF1bHTCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3LWRlZmF1bHQiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9uZXdfbGlua193aXRoX3N0YWdlc8KgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXctbGluay13aXRoLXN0YWdlcyIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX25ld193aXRoX3N0YWdlc8KgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXctd2l0aC1zdGFnZXMiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl91c2XCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItdXNlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlwqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1wcm9ncmFtLWhhbmRsZSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3JlbGVhc2XCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItcmVsZWFzZSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3JlbGVhc2VfdW5sb2NrZWTCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItcmVsZWFzZS11bmxvY2tlZCIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2F0dGFjaMKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1hdHRhY2giIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWTCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItYXR0YWNoLXVubG9ja2VkIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV9hdHRhY2hfc3RhZ2XCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS1hdHRhY2gtc3RhZ2UiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9kZXRhY2jCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZGV0YWNoIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfZGV0YWNoX3VubG9ja2VkwqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWRldGFjaC11bmxvY2tlZCIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2lzX2xpbmtlZMKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1pcy1saW5rZWQiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9saW5rwqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWxpbmsiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xacKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmwqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWZ2wqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmdiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaXYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZnYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yacKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaXYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZnYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zacKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaXYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZnYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80acKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aXYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMmZ2wqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yZnYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMngzZnbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4M2Z2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4NGZ2wqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDRmdiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zZnbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTNmdiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDJmdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3gyZnYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3g0ZnbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4NGZ2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNGZ2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4MmZ2wqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDJmdiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgzZnYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uwqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1hdHRyaWJ1dGUtbG9jYXRpb24iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9iaW5kX2F0dHJpYnV0ZV9sb2NhdGlvbsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1iaW5kLWF0dHJpYnV0ZS1sb2NhdGlvbiIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xTaGFkZXIiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxsaW5rZWTigJ0gcHJvcGVydHkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLWxpbmtlZCIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xTTF9FUlJPUiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLUVSUk9SOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsc2xfZXJyb3JfcXVhcmvCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtZXJyb3ItcXVhcmsiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsc2xfcHJvZmlsZV9mcm9tX3N0cmluZ8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC1wcm9maWxlLWZyb20tc3RyaW5nIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbHNsX3Byb2ZpbGVfdG9fc3RyaW5nwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXByb2ZpbGUtdG8tc3RyaW5nIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbHNsX3ZlcnNpb25fZnJvbV9zdHJpbmfCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi1mcm9tLXN0cmluZyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZ8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC12ZXJzaW9uLXRvLXN0cmluZyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmfCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi1wcm9maWxlLWZyb20tc3RyaW5nIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV90b19zdHJpbmfCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi1wcm9maWxlLXRvLXN0cmluZyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xzbF9zdHJpbmdfZ2V0X3ZlcnNpb25fcHJvZmlsZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC1zdHJpbmctZ2V0LXZlcnNpb24tcHJvZmlsZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9zdXBwb3J0c19nbHNsX3Byb2ZpbGVfdmVyc2lvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2wtY29udGV4dC1zdXBwb3J0cy1nbHNsLXByb2ZpbGUtdmVyc2lvbiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdmVyc2lvbl90b19nbHNsX3ZlcnNpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsLXZlcnNpb24tdG8tZ2xzbC12ZXJzaW9uIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RHTFNMRXJyb3IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMRXJyb3IiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdEdMU0xQcm9maWxlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFByb2ZpbGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdEdMU0xWZXJzaW9uIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFZlcnNpb24iLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1idWZmZXItYWRkLWdsLXN5bmMtbWV0YSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGFfZnVsbMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtYnVmZmVyLWFkZC1nbC1zeW5jLW1ldGEtZnVsbCIvPgogICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJnc3RfYnVmZmVyX2dldF9nbF9zeW5jX21ldGEoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1idWZmZXItZ2V0LWdsLXN5bmMtbWV0YSIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc3luY19tZXRhX2FwaV9nZXRfdHlwZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtZ2wtc3luYy1tZXRhLWFwaS1nZXQtdHlwZSIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc3luY19tZXRhX2dldF9pbmZvwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1nbC1zeW5jLW1ldGEtZ2V0LWluZm8iLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3N5bmNfbWV0YV9zZXRfc3luY19wb2ludMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtZ2wtc3luYy1tZXRhLXNldC1zeW5jLXBvaW50Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zeW5jX21ldGFfd2FpdMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtZ2wtc3luYy1tZXRhLXdhaXQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3N5bmNfbWV0YV93YWl0X2NwdcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtZ2wtc3luYy1tZXRhLXdhaXQtY3B1Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0R0xTeW5jTWV0YSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI0dzdEdMU3luY01ldGEiLz4KICAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9TWU5DX01FVEEiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVNZTkMtTUVUQTpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF91cGxvYWRfbmV3wqAoKSIgbGluaz0iR3N0R0xVcGxvYWQuaHRtbCNnc3QtZ2wtdXBsb2FkLW5ldyIvPgpAQCAtNjIyLDM1ICs3MDcsOCBAQAogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdXBsb2FkX3Byb3Bvc2VfYWxsb2NhdGlvbsKgKCkiIGxpbms9IkdzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC1wcm9wb3NlLWFsbG9jYXRpb24iLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3VwbG9hZF90cmFuc2Zvcm1fY2Fwc8KgKCkiIGxpbms9IkdzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC10cmFuc2Zvcm0tY2FwcyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdXBsb2FkX3BlcmZvcm1fd2l0aF9idWZmZXLCoCgpIiBsaW5rPSJHc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtcGVyZm9ybS13aXRoLWJ1ZmZlciIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVywqAoKSIgbGluaz0iR3N0R0xVcGxvYWQuaHRtbCNnc3QtZ2wtdXBsb2FkLXJlbGVhc2UtYnVmZmVyIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF91cGxvYWRfZ2V0X2lucHV0X3RlbXBsYXRlX2NhcHPCoCgpIiBsaW5rPSJHc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtZ2V0LWlucHV0LXRlbXBsYXRlLWNhcHMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMVXBsb2FkIiBsaW5rPSJHc3RHTFVwbG9hZC5odG1sI0dzdEdMVXBsb2FkLXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdXBsb2FkX21ldGFfbmV3wqAoKSIgbGluaz0iR3N0R0xVcGxvYWRNZXRhLmh0bWwjZ3N0LWdsLXVwbG9hZC1tZXRhLW5ldyIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdXBsb2FkX21ldGFfc2V0X2Zvcm1hdMKgKCkiIGxpbms9IkdzdEdMVXBsb2FkTWV0YS5odG1sI2dzdC1nbC11cGxvYWQtbWV0YS1zZXQtZm9ybWF0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF91cGxvYWRfbWV0YV9nZXRfZm9ybWF0wqAoKSIgbGluaz0iR3N0R0xVcGxvYWRNZXRhLmh0bWwjZ3N0LWdsLXVwbG9hZC1tZXRhLWdldC1mb3JtYXQiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3VwbG9hZF9tZXRhX2FkZF90b19idWZmZXLCoCgpIiBsaW5rPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtYWRkLXRvLWJ1ZmZlciIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xVcGxvYWRNZXRhIiBsaW5rPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCNHc3RHTFVwbG9hZE1ldGEtc3RydWN0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9IkdMQ0LCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNHTENCOkNBUFMiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iR0xDQl9WMsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dMQ0ItVjI6Q0FQUyIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJDRENCwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjQ0RDQjpDQVBTIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9oYW5kbGVfc2V0X2NvbnRleHTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLXNldC1jb250ZXh0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9oYW5kbGVfY29udGV4dF9xdWVyecKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1oYW5kbGUtY29udGV4dC1xdWVyeSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9nZW5fdGV4dHVyZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi10ZXh0dXJlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2RlbF90ZXh0dXJlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLXRleHR1cmUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX2Zib8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi1mYm8iLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZGVsX2Zib8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1mYm8iLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfdXNlX2Zib192MsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LXVzZS1mYm8tdjIiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX3NoYWRlcsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi1zaGFkZXIiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZGVsX3NoYWRlcsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1zaGFkZXIiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2hlY2stZnJhbWVidWZmZXItc3RhdHVzIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X3NldF9lcnJvcsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LXNldC1lcnJvciIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3LCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtZXJyb3IiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVywqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2xlYXItc2hhZGVyIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9nZW5lcmF0ZV90ZXh0dXJlX2Z1bGzCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2VuZXJhdGUtdGV4dHVyZS1mdWxsIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jYXBzX3JlcGxhY2VfYWxsX2NhcHNfZmVhdHVyZXPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY2Fwcy1yZXBsYWNlLWFsbC1jYXBzLWZlYXR1cmVzIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9lbnN1cmVfZWxlbWVudF9kYXRhwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWVuc3VyZS1lbGVtZW50LWRhdGEiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2V0LXBsYW5lLWRhdGEtc2l6ZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfcnVuX3F1ZXJ5wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXJ1bi1xdWVyeSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0R0xEaXNwbGF5UHJvamVjdGlvbiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR3N0R0xEaXNwbGF5UHJvamVjdGlvbiIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfd2luZG93X2Vycm9yX3F1YXJrwqAoKSIgbGluaz0iR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LWVycm9yLXF1YXJrIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9XSU5ET1dfRVJST1IiIGxpbms9IkdzdEdMV2luZG93Lmh0bWwjR1NULUdMLVdJTkRPVy1FUlJPUjpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9IkdzdEdMV2luZG93UmVzaXplQ0LCoCgpIiBsaW5rPSJHc3RHTFdpbmRvdy5odG1sI0dzdEdMV2luZG93UmVzaXplQ0IiLz4KQEAgLTY1OSw3ICs3MTcsNiBAQAogICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfV0lORE9XX0NCKCkiIGxpbms9IkdzdEdMV2luZG93Lmh0bWwjR1NULUdMLVdJTkRPVy1DQjpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF93aW5kb3dfbmV3wqAoKSIgbGluaz0iR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LW5ldyIgc2luY2U9IjEuNCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfd2luZG93X2RyYXfCoCgpIiBsaW5rPSJHc3RHTFdpbmRvdy5odG1sI2dzdC1nbC13aW5kb3ctZHJhdyIgc2luY2U9IjEuNCIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfd2luZG93X2RyYXdfdW5sb2NrZWTCoCgpIiBsaW5rPSJHc3RHTFdpbmRvdy5odG1sI2dzdC1nbC13aW5kb3ctZHJhdy11bmxvY2tlZCIgc2luY2U9IjEuNCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfd2luZG93X2lzX3J1bm5pbmfCoCgpIiBsaW5rPSJHc3RHTFdpbmRvdy5odG1sI2dzdC1nbC13aW5kb3ctaXMtcnVubmluZyIgc2luY2U9IjEuNCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfd2luZG93X3F1aXTCoCgpIiBsaW5rPSJHc3RHTFdpbmRvdy5odG1sI2dzdC1nbC13aW5kb3ctcXVpdCIgc2luY2U9IjEuNCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfd2luZG93X3J1bsKgKCkiIGxpbms9IkdzdEdMV2luZG93Lmh0bWwjZ3N0LWdsLXdpbmRvdy1ydW4iIHNpbmNlPSIxLjQiLz4KQEAgLTcwNCw2ICs3NjEsMTgzIEBACiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF93aW5kb3dfeDExX3VudHJhcF94X2Vycm9yc8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLmh0bWwjZ3N0LWdsLXdpbmRvdy14MTEtdW50cmFwLXgtZXJyb3JzIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0R0xXaW5kb3dYMTEiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLmh0bWwjR3N0R0xXaW5kb3dYMTEiLz4KICAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RHTFdpbmRvd1gxMUNsYXNzIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sI0dzdEdMV2luZG93WDExQ2xhc3MiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iR3N0R0xBc3luY0RlYnVnTG9nR2V0TWVzc2FnZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9hc3luY19kZWJ1Z19uZXfCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLW5ldyIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctZnJlZSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYXN5bmNfZGVidWdfaW5pdMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctaW5pdCIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYXN5bmNfZGVidWdfdW5zZXTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLXVuc2V0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9hc3luY19kZWJ1Z19mcmVlemXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLWZyZWV6ZSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYXN5bmNfZGVidWdfdGhhd8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctdGhhdyIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2fCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLW91dHB1dC1sb2ctbXNnIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1zdG9yZS1sb2ctbXNnIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnX3ZhbGlzdMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctc3RvcmUtbG9nLW1zZy12YWxpc3QiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0dfdmFsaXN0KCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHU1QtR0wtQVNZTkMtQ0FULUxFVkVMLUxPRy12YWxpc3QiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0coKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dTVC1HTC1BU1lOQy1DQVQtTEVWRUwtTE9HOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXLCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWluc2VydC1kZWJ1Zy1tYXJrZXIiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iR0xDQsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dMQ0I6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJHTENCX1YywqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjR0xDQi1WMjpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9IkNEQ0LCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNDRENCOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2hhbmRsZV9zZXRfY29udGV4dMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1oYW5kbGUtc2V0LWNvbnRleHQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2hhbmRsZV9jb250ZXh0X3F1ZXJ5wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWhhbmRsZS1jb250ZXh0LXF1ZXJ5Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2dlbl90ZXh0dXJlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLXRleHR1cmUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZGVsX3RleHR1cmXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWwtdGV4dHVyZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9nZW5fZmJvwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLWZibyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9kZWxfZmJvwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLWZibyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF91c2VfZmJvX3YywqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtdXNlLWZiby12MiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9nZW5fc2hhZGVywqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLXNoYWRlciIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9kZWxfc2hhZGVywqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLXNoYWRlciIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9jaGVja19mcmFtZWJ1ZmZlcl9zdGF0dXPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1jaGVjay1mcmFtZWJ1ZmZlci1zdGF0dXMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9ywqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtc2V0LWVycm9yIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2dldF9lcnJvcsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdldC1lcnJvciIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXLCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1jbGVhci1zaGFkZXIiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2dlbmVyYXRlX3RleHR1cmVfZnVsbMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1nZW5lcmF0ZS10ZXh0dXJlLWZ1bGwiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NhcHNfcmVwbGFjZV9hbGxfY2Fwc19mZWF0dXJlc8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jYXBzLXJlcGxhY2UtYWxsLWNhcHMtZmVhdHVyZXMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2Vuc3VyZV9lbGVtZW50X2RhdGHCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZW5zdXJlLWVsZW1lbnQtZGF0YSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfZ2V0X3BsYW5lX2RhdGFfc2l6ZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1nZXQtcGxhbmUtZGF0YS1zaXplIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9nZXRfcGxhbmVfc3RhcnTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2V0LXBsYW5lLXN0YXJ0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9ydW5fcXVlcnnCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtcnVuLXF1ZXJ5Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF92YWx1ZV9nZXRfdGV4dHVyZV90YXJnZXRfbWFza8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC12YWx1ZS1nZXQtdGV4dHVyZS10YXJnZXQtbWFzayIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXZhbHVlLXNldC10ZXh0dXJlLXRhcmdldCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0X2Zyb21fbWFza8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC12YWx1ZS1zZXQtdGV4dHVyZS10YXJnZXQtZnJvbS1tYXNrIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RHTERpc3BsYXlQcm9qZWN0aW9uIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHc3RHTERpc3BsYXlQcm9qZWN0aW9uIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9mb3JtYXRfdHlwZV9uX2J5dGVzwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtZm9ybWF0LXR5cGUtbi1ieXRlcyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdGV4dHVyZV90eXBlX25fYnl0ZXPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXR5cGUtbi1ieXRlcyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtZm9ybWF0LWZyb20tZ2wtdGV4dHVyZS10eXBlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXR5cGUtZnJvbS1mb3JtYXQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtc2l6ZWQtZ2wtZm9ybWF0LWZyb20tZ2wtZm9ybWF0LXR5cGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10YXJnZXQtZnJvbS1zdHJpbmciLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX3N0cmluZ8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LXRvLXN0cmluZyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2zCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC10by1nbCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9nbMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LWZyb20tZ2wiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2J1ZmZlcl9wb29sX29wdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LXRvLWJ1ZmZlci1wb29sLW9wdGlvbiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC0yRC1TVFI6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFX1NUUiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFLVNUUjpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVNfU1RSIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVMtU1RSOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF8yRCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVRFWFRVUkUtVEFSR0VULTJEOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC1SRUNUQU5HTEU6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVRFWFRVUkUtVEFSR0VULUVYVEVSTkFMLU9FUzpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfbmV3wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1uZXciLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9wbGF5wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1wbGF5Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfcGF1c2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXBhdXNlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc3RvcMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc3RvcCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3NlZWvCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNlZWsiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9zZXRfdXJpwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdXJpIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X3VyacKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXVyaSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9kdXJhdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LWR1cmF0aW9uIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcG9zaXRpb24iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9zZXRfdm9sdW1lwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdm9sdW1lIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X211dGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1tdXRlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X3ZvbHVtZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXZvbHVtZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9tdXRlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtbXV0ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9waXBlbGluZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXBpcGVsaW5lIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWzCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9zdGF0ZV9nZXRfbmFtZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc3RhdGUtZ2V0LW5hbWUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX1BMQVlFUl9FUlJPUiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1FUlJPUjpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZXJyb3JfZ2V0X25hbWXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWVycm9yLWdldC1uYW1lIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X21lZGlhX2luZm/CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1tZWRpYS1pbmZvIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X2F1ZGlvX3N0cmVhbXPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1hdWRpby1zdHJlYW1zIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC12aWRlby1zdHJlYW1zIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3N0cmVhbXPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1zdWJ0aXRsZS1zdHJlYW1zIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtYXVkaW8tdHJhY2siLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2vCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC12aWRlby10cmFjayIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFja8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXN1YnRpdGxlLXRyYWNrIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfYXVkaW9fdHJhY2vCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LWF1ZGlvLXRyYWNrIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlkZW9fdHJhY2vCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LXZpZGVvLXRyYWNrIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfc3VidGl0bGVfdHJhY2vCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LXN1YnRpdGxlLXRyYWNrIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrX2VuYWJsZWTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1hdWRpby10cmFjay1lbmFibGVkIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X3ZpZGVvX3RyYWNrX2VuYWJsZWTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC12aWRlby10cmFjay1lbmFibGVkIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrX2VuYWJsZWTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1zdWJ0aXRsZS10cmFjay1lbmFibGVkIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3VyacKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXN1YnRpdGxlLXVyaSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9zdWJ0aXRsZV91cmnCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1zdWJ0aXRsZS11cmkiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXZpc3VhbGl6YXRpb24iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbl9lbmFibGVkwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlzdWFsaXphdGlvbi1lbmFibGVkIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlzdWFsaXphdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtdmlzdWFsaXphdGlvbiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfdHlwZV9nZXRfbmFtZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItY29sb3ItYmFsYW5jZS10eXBlLWdldC1uYW1lIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfaGFzX2NvbG9yX2JhbGFuY2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWhhcy1jb2xvci1iYWxhbmNlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X2NvbG9yX2JhbGFuY2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1jb2xvci1iYWxhbmNlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X2NvbG9yX2JhbGFuY2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jb2xvci1iYWxhbmNlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ2V0X3JhdGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1yYXRlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X3JhdGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1yYXRlIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RQbGF5ZXIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1zdHJ1Y3QiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdFBsYXllclN0YXRlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTdGF0ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0UGxheWVyRXJyb3IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllckVycm9yIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2UiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2UiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdFBsYXllclZpZGVvUmVuZGVyZXIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclZpZGVvUmVuZGVyZXItc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcY3VycmVudC1hdWRpby10cmFja+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1jdXJyZW50LWF1ZGlvLXRyYWNrIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxjdXJyZW50LXN1YnRpdGxlLXRyYWNr4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLWN1cnJlbnQtc3VidGl0bGUtdHJhY2siLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGN1cnJlbnQtdmlkZW8tdHJhY2vigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tY3VycmVudC12aWRlby10cmFjayIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcZHVyYXRpb27igJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tZHVyYXRpb24iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnG1lZGlhLWluZm/igJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tbWVkaWEtaW5mbyIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcbXV0ZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1tdXRlIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxwaXBlbGluZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1waXBlbGluZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCccG9zaXRpb27igJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tcG9zaXRpb24iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHJhdGXigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tcmF0ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcc2lnbmFsLWRpc3BhdGNoZXLigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tc2lnbmFsLWRpc3BhdGNoZXIiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHN1YnVyaeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1zdWJ1cmkiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHVyaeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS11cmkiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHZpZGVvLXJlbmRlcmVy4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXZpZGVvLXJlbmRlcmVyIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJx2b2x1bWXigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tdm9sdW1lIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic2lnbmFsIiBuYW1lPSJUaGUg4oCcYnVmZmVyaW5n4oCdIHNpZ25hbCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWJ1ZmZlcmluZyIvPgorICAgIDxrZXl3b3JkIHR5cGU9InNpZ25hbCIgbmFtZT0iVGhlIOKAnGR1cmF0aW9uLWNoYW5nZWTigJ0gc2lnbmFsIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItZHVyYXRpb24tY2hhbmdlZCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InNpZ25hbCIgbmFtZT0iVGhlIOKAnGVuZC1vZi1zdHJlYW3igJ0gc2lnbmFsIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItZW5kLW9mLXN0cmVhbSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InNpZ25hbCIgbmFtZT0iVGhlIOKAnGVycm9y4oCdIHNpZ25hbCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWVycm9yIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic2lnbmFsIiBuYW1lPSJUaGUg4oCcbWVkaWEtaW5mby11cGRhdGVk4oCdIHNpZ25hbCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLW1lZGlhLWluZm8tdXBkYXRlZCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InNpZ25hbCIgbmFtZT0iVGhlIOKAnG11dGUtY2hhbmdlZOKAnSBzaWduYWwiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1tdXRlLWNoYW5nZWQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzaWduYWwiIG5hbWU9IlRoZSDigJxwb3NpdGlvbi11cGRhdGVk4oCdIHNpZ25hbCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXBvc2l0aW9uLXVwZGF0ZWQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzaWduYWwiIG5hbWU9IlRoZSDigJxzZWVrLWRvbmXigJ0gc2lnbmFsIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItc2Vlay1kb25lIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic2lnbmFsIiBuYW1lPSJUaGUg4oCcc3RhdGUtY2hhbmdlZOKAnSBzaWduYWwiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1zdGF0ZS1jaGFuZ2VkIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic2lnbmFsIiBuYW1lPSJUaGUg4oCcdmlkZW8tZGltZW5zaW9ucy1jaGFuZ2Vk4oCdIHNpZ25hbCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InNpZ25hbCIgbmFtZT0iVGhlIOKAnHZvbHVtZS1jaGFuZ2Vk4oCdIHNpZ25hbCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXZvbHVtZS1jaGFuZ2VkIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic2lnbmFsIiBuYW1lPSJUaGUg4oCcd2FybmluZ+KAnSBzaWduYWwiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci13YXJuaW5nIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdXJpwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdXJpIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfZHVyYXRpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1kdXJhdGlvbiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RpdGxlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdGl0bGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9jb250YWluZXJfZm9ybWF0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtY29udGFpbmVyLWZvcm1hdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX21lZGlhX2luZm9faXNfc2Vla2FibGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWlzLXNlZWthYmxlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfaW1hZ2Vfc2FtcGxlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtaW1hZ2Utc2FtcGxlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGFnc8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXRhZ3MiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9zdHJlYW1fbGlzdMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXN0cmVhbS1saXN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2luZGV4wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LWluZGV4Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NhcHPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtY2FwcyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF90YWdzwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LXRhZ3MiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY29kZWPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtY29kZWMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfc3RyZWFtX3R5cGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtc3RyZWFtLXR5cGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9iaXRyYXRlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtYml0cmF0ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2NoYW5uZWxzwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtY2hhbm5lbHMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9sYW5ndWFnZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWxhbmd1YWdlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbWF4X2JpdHJhdGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1tYXgtYml0cmF0ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X3NhbXBsZV9yYXRlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtc2FtcGxlLXJhdGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9iaXRyYXRlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtYml0cmF0ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2hlaWdodMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWhlaWdodCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3dpZHRowqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtd2lkdGgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9mcmFtZXJhdGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1mcmFtZXJhdGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9tYXhfYml0cmF0ZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LW1heC1iaXRyYXRlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfcGl4ZWxfYXNwZWN0X3JhdGlvwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtcGl4ZWwtYXNwZWN0LXJhdGlvIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19nZXRfbGFuZ3VhZ2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdWJ0aXRsZS1pbmZvLWdldC1sYW5ndWFnZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0UGxheWVyTWVkaWFJbmZvIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0UGxheWVyU3RyZWFtSW5mbyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8tc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RQbGF5ZXJBdWRpb0luZm8iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8tc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RQbGF5ZXJWaWRlb0luZm8iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8tc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RQbGF5ZXJTdWJ0aXRsZUluZm8iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdWJ0aXRsZUluZm8tc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfbmV3wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCNnc3QtcGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLW5ldyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfbmV3wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItbmV3Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfd2luZG93X2hhbmRsZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWdldC13aW5kb3ctaGFuZGxlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLXNldC13aW5kb3ctaGFuZGxlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9leHBvc2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1leHBvc2UiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF9yZW5kZXJfcmVjdGFuZ2xlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItZ2V0LXJlbmRlci1yZWN0YW5nbGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF9yZW5kZXJfcmVjdGFuZ2xlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItc2V0LXJlbmRlci1yZWN0YW5nbGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19nZXTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbnMtZ2V0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZnJlZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9ucy1mcmVlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9jb3B5wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGxheWVyLXZpc3VhbGl6YXRpb24tY29weSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZnJlZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9uLWZyZWUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24tc3RydWN0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9IkdzdFBob3RvZ3JhcGh5Q2FwdHVyZVByZXBhcmVkwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeUNhcHR1cmVQcmVwYXJlZCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGhvdG9ncmFwaHlfZ2V0X2V2X2NvbXBlbnNhdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LWdldC1ldi1jb21wZW5zYXRpb24iLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X2dldF9pc29fc3BlZWTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1nZXQtaXNvLXNwZWVkIi8+CkBAIC03MTUsNyArOTQ5LDcgQEAKICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X2dldF9mbGFzaF9tb2RlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktZ2V0LWZsYXNoLW1vZGUiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X2dldF9mbGlja2VyX21vZGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1nZXQtZmxpY2tlci1tb2RlIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9nZXRfZm9jdXNfbW9kZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LWdldC1mb2N1cy1tb2RlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9nZXRfbm9pc2VfcmVkdWN0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktZ2V0LW5vaXNlLXJlZHVjdGlvbiIgc2luY2U9IjAuMTAuMjEiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X2dldF9ub2lzZV9yZWR1Y3Rpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1nZXQtbm9pc2UtcmVkdWN0aW9uIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9nZXRfem9vbcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LWdldC16b29tIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9zZXRfZXZfY29tcGVuc2F0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktc2V0LWV2LWNvbXBlbnNhdGlvbiIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGhvdG9ncmFwaHlfc2V0X2lzb19zcGVlZMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LXNldC1pc28tc3BlZWQiLz4KQEAgLTcyNyw3ICs5NjEsNyBAQAogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGhvdG9ncmFwaHlfc2V0X2ZsYXNoX21vZGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1zZXQtZmxhc2gtbW9kZSIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGhvdG9ncmFwaHlfc2V0X2ZsaWNrZXJfbW9kZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LXNldC1mbGlja2VyLW1vZGUiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X3NldF9mb2N1c19tb2RlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktc2V0LWZvY3VzLW1vZGUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X3NldF9ub2lzZV9yZWR1Y3Rpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1zZXQtbm9pc2UtcmVkdWN0aW9uIiBzaW5jZT0iMC4xMC4yMSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGhvdG9ncmFwaHlfc2V0X25vaXNlX3JlZHVjdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LXNldC1ub2lzZS1yZWR1Y3Rpb24iLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X3NldF96b29twqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktc2V0LXpvb20iLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X2dldF9jYXBhYmlsaXRpZXPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1nZXQtY2FwYWJpbGl0aWVzIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9wcmVwYXJlX2Zvcl9jYXB0dXJlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktcHJlcGFyZS1mb3ItY2FwdHVyZSIvPgpAQCAtNzM1LDcgKzk2OSw3IEBACiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9zZXRfY29uZmlnwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktc2V0LWNvbmZpZyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGhvdG9ncmFwaHlfZ2V0X2NvbmZpZ8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LWdldC1jb25maWciLz4KICAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdFBob3RvZ3JhcGh5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RQaG90b2dyYXBoeU5vaXNlUmVkdWN0aW9uIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5Tm9pc2VSZWR1Y3Rpb24iIHNpbmNlPSIwLjEwLjIxIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RQaG90b2dyYXBoeU5vaXNlUmVkdWN0aW9uIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5Tm9pc2VSZWR1Y3Rpb24iLz4KICAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdFBob3RvZ3JhcGh5V2hpdGVCYWxhbmNlTW9kZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGUiLz4KICAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdFBob3RvZ3JhcGh5Q29sb3JUb25lTW9kZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGUiLz4KICAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdFBob3RvZ3JhcGh5U2NlbmVNb2RlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5U2NlbmVNb2RlIi8+CkBAIC0xNDQ5LDYgKzE2ODMsMTEgQEAKICAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX1BMQVRGT1JNX0NHTCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHU1QtR0wtUExBVEZPUk0tQ0dMOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX1BMQVRGT1JNX0VBR0wiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR1NULUdMLVBMQVRGT1JNLUVBR0w6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfUExBVEZPUk1fQU5ZIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1QTEFURk9STS1BTlk6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfQkFTRV9NRU1PUllfRVJST1JfRkFJTEVEIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktRVJST1ItRkFJTEVEOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX09MRF9MSUJTIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktRVJST1ItT0xELUxJQlM6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfQkFTRV9NRU1PUllfRVJST1JfUkVTT1VSQ0VfVU5BVkFJTEFCTEUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1CQVNFLU1FTU9SWS1FUlJPUi1SRVNPVVJDRS1VTkFWQUlMQUJMRTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktVFJBTlNGRVItTkVFRC1ET1dOTE9BRDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLVRSQU5TRkVSLU5FRUQtVVBMT0FEOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX0NPTlRFWFRfRVJST1JfRkFJTEVEIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNHU1QtR0wtQ09OVEVYVC1FUlJPUi1GQUlMRUQ6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfQ09OVEVYVF9FUlJPUl9XUk9OR19DT05GSUciIGxpbms9IkdzdEdMQ29udGV4dC5odG1sI0dTVC1HTC1DT05URVhULUVSUk9SLVdST05HLUNPTkZJRzpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9DT05URVhUX0VSUk9SX1dST05HX0FQSSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjR1NULUdMLUNPTlRFWFQtRVJST1ItV1JPTkctQVBJOkNBUFMiLz4KQEAgLTE0NjMsMTYgKzE3MDIsNTAgQEAKICAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX0RJU1BMQVlfVFlQRV9ESVNQTUFOWCIgbGluaz0iR3N0R0xEaXNwbGF5Lmh0bWwjR1NULUdMLURJU1BMQVktVFlQRS1ESVNQTUFOWDpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9ESVNQTEFZX1RZUEVfRUdMIiBsaW5rPSJHc3RHTERpc3BsYXkuaHRtbCNHU1QtR0wtRElTUExBWS1UWVBFLUVHTDpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9ESVNQTEFZX1RZUEVfQU5ZIiBsaW5rPSJHc3RHTERpc3BsYXkuaHRtbCNHU1QtR0wtRElTUExBWS1UWVBFLUFOWTpDQVBTIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9TSEFERVJfRVJST1JfQ09NUElMRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHU1QtR0wtU0hBREVSLUVSUk9SLUNPTVBJTEU6Q0FQUyIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfU0hBREVSX0VSUk9SX0xJTksiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR1NULUdMLVNIQURFUi1FUlJPUi1MSU5LOkNBUFMiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX1NIQURFUl9FUlJPUl9QUk9HUkFNIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dTVC1HTC1TSEFERVItRVJST1ItUFJPR1JBTTpDQVBTIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9TSEFERVJfRlJBR01FTlRfU09VUkNFIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dTVC1HTC1TSEFERVItRlJBR01FTlQtU09VUkNFOkNBUFMiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX1NIQURFUl9WRVJURVhfU09VUkNFIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dTVC1HTC1TSEFERVItVkVSVEVYLVNPVVJDRTpDQVBTIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9ESVNQTEFZX1BST0pFQ1RJT05fT1JUSE8yRCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR1NULUdMLURJU1BMQVktUFJPSkVDVElPTi1PUlRITzJEOkNBUFMiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX0RJU1BMQVlfUFJPSkVDVElPTl9QRVJTUEVDVElWRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR1NULUdMLURJU1BMQVktUFJPSkVDVElPTi1QRVJTUEVDVElWRTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX0VSUk9SX0NPTVBJTEUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1FUlJPUi1DT01QSUxFOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfRVJST1JfTElOSyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLUVSUk9SLUxJTks6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9FUlJPUl9QUk9HUkFNIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtRVJST1ItUFJPR1JBTTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1BST0ZJTEVfTk9ORSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVBST0ZJTEUtTk9ORTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1BST0ZJTEVfRVMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1QUk9GSUxFLUVTOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfUFJPRklMRV9DT1JFIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtUFJPRklMRS1DT1JFOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtUFJPRklMRS1DT01QQVRJQklMSVRZOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfUFJPRklMRV9BTlkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1QUk9GSUxFLUFOWTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1ZFUlNJT05fTk9ORSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tTk9ORTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1ZFUlNJT05fMTAwIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0xMDA6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OXzExMCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMTEwOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfVkVSU0lPTl8xMjAiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTEyMDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1ZFUlNJT05fMTMwIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0xMzA6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OXzE0MCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMTQwOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfVkVSU0lPTl8xNTAiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTE1MDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1ZFUlNJT05fMzAwIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0zMDA6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OXzMxMCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMzEwOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfVkVSU0lPTl8zMjAiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTMyMDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1ZFUlNJT05fMzMwIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0zMzA6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OXzQwMCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tNDAwOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfVkVSU0lPTl80MTAiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTQxMDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1ZFUlNJT05fNDIwIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi00MjA6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OXzQzMCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tNDMwOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfVkVSU0lPTl80NDAiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTQ0MDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1ZFUlNJT05fNDUwIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi00NTA6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OX0FOWSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tQU5ZOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX1dJTkRPV19FUlJPUl9GQUlMRUQiIGxpbms9IkdzdEdMV2luZG93Lmh0bWwjR1NULUdMLVdJTkRPVy1FUlJPUi1GQUlMRUQ6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfV0lORE9XX0VSUk9SX09MRF9MSUJTIiBsaW5rPSJHc3RHTFdpbmRvdy5odG1sI0dTVC1HTC1XSU5ET1ctRVJST1ItT0xELUxJQlM6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfV0lORE9XX0VSUk9SX1JFU09VUkNFX1VOQVZBSUxBQkxFIiBsaW5rPSJHc3RHTFdpbmRvdy5odG1sI0dTVC1HTC1XSU5ET1ctRVJST1ItUkVTT1VSQ0UtVU5BVkFJTEFCTEU6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfRElTUExBWV9QUk9KRUNUSU9OX09SVEhPMkQiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dTVC1HTC1ESVNQTEFZLVBST0pFQ1RJT04tT1JUSE8yRDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9ESVNQTEFZX1BST0pFQ1RJT05fUEVSU1BFQ1RJVkUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dTVC1HTC1ESVNQTEFZLVBST0pFQ1RJT04tUEVSU1BFQ1RJVkU6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtTk9ORTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtMkQ6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC1SRUNUQU5HTEU6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVM6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItU1RBVEUtU1RPUFBFRDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9QTEFZRVJfU1RBVEVfQlVGRkVSSU5HIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLVNUQVRFLUJVRkZFUklORzpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9QTEFZRVJfU1RBVEVfUEFVU0VEIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLVNUQVRFLVBBVVNFRDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9QTEFZRVJfU1RBVEVfUExBWUlORyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1TVEFURS1QTEFZSU5HOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItRVJST1ItRkFJTEVEOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0JSSUdIVE5FU1MiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItQ09MT1ItQkFMQU5DRS1CUklHSFRORVNTOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0NPTlRSQVNUIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLUNPTE9SLUJBTEFOQ0UtQ09OVFJBU1Q6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfU0FUVVJBVElPTiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1DT0xPUi1CQUxBTkNFLVNBVFVSQVRJT046Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfSFVFIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLUNPTE9SLUJBTEFOQ0UtSFVFOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX1BIT1RPR1JBUEhZX05PSVNFX1JFRFVDVElPTl9CQVlFUiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHU1QtUEhPVE9HUkFQSFktTk9JU0UtUkVEVUNUSU9OLUJBWUVSOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX1BIT1RPR1JBUEhZX05PSVNFX1JFRFVDVElPTl9ZQ0MiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR1NULVBIT1RPR1JBUEhZLU5PSVNFLVJFRFVDVElPTi1ZQ0M6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfUEhPVE9HUkFQSFlfTk9JU0VfUkVEVUNUSU9OX1RFTVBPUkFMIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dTVC1QSE9UT0dSQVBIWS1OT0lTRS1SRURVQ1RJT04tVEVNUE9SQUw6Q0FQUyIvPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1BVFNDLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbAppbmRleCBjYjZiOTY5Li43YmIxMzFlIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1BVFNDLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1BVFNDLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkFUU0MgdmFyaWFudHMgb2YgTVBFRy1UUyBkZXNjcmlwdG9yczogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJtcGVndHMuaHRtbCIgdGl0bGU9Ik1wZWcgVFMgaGVscGVyIGxpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1zZWN0aW9ucy5odG1sIiB0aXRsZT0iRFZCIHZhcmlhbnRzIG9mIE1QRUctVFMgc2VjdGlvbnMiPgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC02NSw3ICs2NSw3IEBACiA8cD5Db25zdWx0IHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9ucyBmb3IgbW9yZSBkZXRhaWxzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjguNy4yLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLXNlY3Rpb25zLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1BVFNDLXZhcmlhbnRzLW9mLU1QRUctVFMtc2VjdGlvbnMuaHRtbAppbmRleCBlODc5MTE4Li4xYmI4MzFiIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1BVFNDLXZhcmlhbnRzLW9mLU1QRUctVFMtc2VjdGlvbnMuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1BVFNDLXZhcmlhbnRzLW9mLU1QRUctVFMtc2VjdGlvbnMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkFUU0MgdmFyaWFudHMgb2YgTVBFRy1UUyBzZWN0aW9uczogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJtcGVndHMuaHRtbCIgdGl0bGU9Ik1wZWcgVFMgaGVscGVyIGxpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCIgdGl0bGU9IkJhc2UgTVBFRy1UUyBkZXNjcmlwdG9ycyI+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1BVFNDLXZhcmlhbnRzLW9mLU1QRUctVFMtc2VjdGlvbnMuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTEwMSw3ICsxMDEsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1BVFNDLXZhcmlhbnRzLW9mLU1QRUctVFMtc2VjdGlvbnMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTE3Miw3ICsxNzIsNyBAQAogPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNi43LjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIwMCw3ICsyMDAsNyBAQAogPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNi43LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIyOCw3ICsyMjgsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuNy40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yNjMsNyArMjYzLDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS42LjcuNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjkxLDcgKzI5MSw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNi43LjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTMxOSw3ICszMTksNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuNy44LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zNTQsNyArMzU0LDcgQEAKIDxwPnNlZSBhbHNvOiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLmh0bWwjR3N0TXBlZ3RzU2VjdGlvblRhYmxlSUQiIHRpdGxlPSJlbnVtIEdzdE1wZWd0c1NlY3Rpb25UYWJsZUlEIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TXBlZ3RzU2VjdGlvblRhYmxlSUQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuOC4yLjYiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDc4LDcgKzQ3OCw3IEBACiAsIGNhbiBiZSB1c2VkIGJvdGggZm9yIFRWQ1QgYW5kIENWQ1QgdGFibGVzPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNi44LjMuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTg0LDcgKzU4NCw3IEBACiAgIENhYmxlIFZpcnR1YWwgQ2hhbm5lbCBUYWJsZSAoQTY1KTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuOC40LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTYyMCw3ICs2MjAsNyBAQAogPGEgbmFtZT0iR3N0TXBlZ3RzQXRzY01HVFRhYmxlVHlwZSI+PC9hPjxoMz5lbnVtIEdzdE1wZWd0c0F0c2NNR1RUYWJsZVR5cGU8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNi44LjUuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC02NjYsNyArNjY2LDcgQEAKIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuOC42LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTcxNSw3ICs3MTUsNyBAQAogPHA+TWFzdGVyIEd1aWRlIFRhYmxlIChBNjUpPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNi44LjcuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzU2LDcgKzc1Niw3IEBACiA8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuOC44LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc5Myw3ICs3OTMsNyBAQAogPHA+QW4gQVRTQyBFSVQgRXZlbnQ8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS42LjguOS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC04NDcsNyArODQ3LDcgQEAKIDxwPkV2ZW50IEluZm9ybWF0aW9uIFRhYmxlIChBVFNDKTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuOC4xMC41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC04ODcsNyArODg3LDcgQEAKIDxwPkV4dGVuZGVkIFRleHQgVGFibGUgKEFUU0MpPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNi44LjExLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTkzNiw3ICs5MzYsNyBAQAogPHA+U3lzdGVtIFRpbWUgVGFibGUgKEE2NSk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS42LjguMTIuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbAppbmRleCAzZjNlNjRlLi42NTExZDQ4IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkJhc2UgTVBFRy1UUyBkZXNjcmlwdG9yczogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJtcGVndHMuaHRtbCIgdGl0bGU9Ik1wZWcgVFMgaGVscGVyIGxpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbCIgdGl0bGU9IkJhc2UgTVBFRy1UUyBzZWN0aW9ucyI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtZGVzY3JpcHRvcnMuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTExNiw3ICsxMTYsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RNcGVndHNEZXNjcmlwdG9yIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLWRlc2NyaXB0b3JzLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xODYsNyArMTg2LDcgQEAKIGFycmF5IG9mIGRlc2NyaXB0b3JzLCBpdGVyYXRlIHRoZSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUFycmF5cy5odG1sI0dBcnJheSI+PHNwYW4gY2xhc3M9InR5cGUiPkdBcnJheTwvc3Bhbj48L2E+IG1hbnVhbGx5LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjUuOS4yLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yMjcsNyArMjI3LDcgQEAKICB3aWxsIG5vdCBiZSBjb3BpZWQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNS45LjMuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI2OCw3ICsyNjgsNyBAQAogPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNS45LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTMxMSw3ICszMTEsNyBAQAogPHA+UmV0dXJuOiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwjR3N0TXBlZ3RzRGVzY3JpcHRvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1wZWd0c0Rlc2NyaXB0b3I8L3NwYW4+PC9hPiwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNOVUxMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5OVUxMPC9jb2RlPjwvYT4gb24gZmFpbHVyZTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjUuOS41LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zNTEsNyArMzUxLDcgQEAKIElTTyA2MzktMSBsYW5ndWFnZSBjb2RlIGZyb20gdGhlIHJldHVybmVkIElTTyA2MzktMiBvbmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNS45LjYuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM5MSw3ICszOTEsNyBAQAogSVNPIDYzOS0xIGxhbmd1YWdlIGNvZGUgZnJvbSB0aGUgcmV0dXJuZWQgSVNPIDYzOS0yIG9uZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS41LjkuNy42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDM0LDcgKzQzNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwjR3N0TXBlZ3RzRGVzY3JpcHRvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1wZWd0c0Rlc2NyaXB0b3I8L3NwYW4+PC9hPiAqZGVzY3JpcHRvcjwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS41LjkuOC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDcxLDcgKzQ3MSw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNS45LjEwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01MTEsNyArNTExLDcgQEAKIDxwPk1wZWctVFMgZGVzY3JpcHRvciAoSVNPL0lFQyAxMzgxOC0xKS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS41LjEwLjIuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTU1LDcgKzU1NSw3IEBACiA8cD5Db25zdWx0IHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9ucyBmb3IgbW9yZSBkZXRhaWxzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjUuMTAuMy42Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg0NCw3ICs4NDQsNyBAQAogbm90IHlldCBpZGVudGlmaWVkIGZyb20ga25vd24gc3BlY2lmaWNhdGlvbnMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNS4xMC40LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtODgwLDcgKzg4MCw3IEBACiA8YSBuYW1lPSJHc3RNcGVndHNJc282MzlBdWRpb1R5cGUiPjwvYT48aDM+ZW51bSBHc3RNcGVndHNJc282MzlBdWRpb1R5cGU8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNS4xMC42LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbAppbmRleCBjNzc0MGM0Li40ZWU0OTA3IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkJhc2UgTVBFRy1UUyBzZWN0aW9uczogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJtcGVndHMuaHRtbCIgdGl0bGU9Ik1wZWcgVFMgaGVscGVyIGxpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1NcGVnLXRzLWhlbHBlci1saWJyYXJ5Lmh0bWwiIHRpdGxlPSJNcGVnLXRzIGhlbHBlciBsaWJyYXJ5Ij4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1zZWN0aW9ucy5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtMTkwLDcgKzE5MCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdE1wZWd0c1NlY3Rpb24iPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTI2NCw3ICsyNjQsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjQuOS4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yOTksNyArMjk5LDcgQEAKIDxwPlJldHVybnMgdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbCNHc3RNcGVndHNTZWN0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TXBlZ3RzU2VjdGlvbjwvc3Bhbj48L2E+IGNvbnRhaW5lZCBpbiBhIG1lc3NhZ2UuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNC45LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTMzMCw3ICszMzAsNyBAQAogIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjkuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzY0LDcgKzM2NCw3IEBACiAgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RXZlbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEV2ZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjkuNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzk0LDcgKzM5NCw3IEBACiBpbW1lZGlhdGVseS4gT3RoZXJ3aXNlLCB0aGUgZGF0YSBmaWVsZCBpcyBhbGxvY2F0ZWQgYW5kIHBvcHVsYXRlZC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjkuNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDM4LDcgKzQzOCw3IEBACiB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWN0aW9uLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjQuOS44LjciPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00OTYsNyArNDk2LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjkuMTEuNyI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU1MSw3ICs1NTEsNyBAQAogIGFycmF5IG9mIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhZC1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLmh0bWwjR3N0TXBlZ3RzUGF0UHJvZ3JhbSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1wZWd0c1BhdFByb2dyYW1zPC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjkuMTQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU4Niw3ICs1ODYsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjQuOS4xNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjQwLDcgKzY0MCw3IEBACiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjkuMTguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTY3NCw3ICs2NzQsNyBAQAogPHA+UmV0dXJucyB0aGUgYXJyYXkgb2YgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sI0dzdE1wZWd0c0Rlc2NyaXB0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNcGVndHNEZXNjcmlwdG9yPC9zcGFuPjwvYT4gY29udGFpbmVkIGluIHRoZSBzZWN0aW9uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNC45LjE5LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC03MDQsNyArNzA0LDcgQEAKIEFjY2VzcyBUYWJsZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjkuMjAuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc1MCw3ICs3NTAsNyBAQAogPHA+TXBlZy1UUyBTZWN0aW9uIEluZm9ybWF0aW9uIChTSSkgKElTTy9JRUMgMTM4MTgtMSk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjEwLjIuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtODE2LDcgKzgxNiw3IEBACiA8c3BhbiBjbGFzcz0idHlwZSI+R3N0TXBlZ3RzU2VjdGlvblNDVEVUYWJsZUlEPC9zcGFuPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjQuMTAuMy42Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTkwOCw3ICs5MDgsNyBAQAogPHA+VHlwZXMgb2YgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1zZWN0aW9ucy5odG1sI0dzdE1wZWd0c1NlY3Rpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNcGVndHNTZWN0aW9uPC9zcGFuPjwvYT4gdGhhdCB0aGUgbGlicmFyeSBoYW5kbGVzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjQuMTAuNC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEwNDksNyArMTA0OSw3IEBACiA8cD5BIHByb2dyYW0gZW50cnkgZnJvbSBhIFByb2dyYW0gQXNzb2NpYXRpb24gVGFibGUgKElUVSBILjIyMi4wLCBJU08vSUVDIDEzODE4LTEpLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjQuMTAuNS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDg2LDcgKzEwODYsNyBAQAogY29udGFpbmVyIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbCNHc3RNcGVndHNTZWN0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TXBlZ3RzU2VjdGlvbjwvc3Bhbj48L2E+LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjQuMTAuNi42Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMTMwLDcgKzExMzAsNyBAQAogPHA+QW4gaW5kaXZpZHVhbCBzdHJlYW0gZGVmaW5pdGlvbi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjEwLjcuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTE2Nyw3ICsxMTY3LDcgQEAKIDxwPkNvcnJlc3BvbmRzIHRvIHRhYmxlIDItMzQgb2YgSVRVIEguMjIyLjAgfCBJU08vSUVDIDEzODE4LTE8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjEwLjguNiI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbAppbmRleCBlZGVjYTRiLi4xMjAwOWI0IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLURWQi12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5EVkIgdmFyaWFudHMgb2YgTVBFRy1UUyBkZXNjcmlwdG9yczogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJtcGVndHMuaHRtbCIgdGl0bGU9Ik1wZWcgVFMgaGVscGVyIGxpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1BVFNDLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCIgdGl0bGU9IkFUU0MgdmFyaWFudHMgb2YgTVBFRy1UUyBkZXNjcmlwdG9ycyI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtMzcwLDcgKzM3MCw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLURWQi12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC01NTQsNyArNTU0LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTk3LDcgKzU5Nyw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTY0MCw3ICs2NDAsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC42LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02NzYsNyArNjc2LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzEyLDcgKzcxMiw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc0OCw3ICs3NDgsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC45LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC03OTEsNyArNzkxLDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMTEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTgyOSw3ICs4MjksNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4xMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtODc1LDcgKzg3NSw3IEBACiA6PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjEzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC05MTIsNyArOTEyLDcgQEAKIHdpbGwgYmUgYWxsb2NhdGVkLCBhbmQgdHJhbnNmZXJyZWQgdG8gdGhlIGNhbGxlci48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMTQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTk0NCw3ICs5NDQsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4xNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTkyLDcgKzk5Miw3IEBACiBhbmQgdHJhbnNmZXJyZWQgdG8gdGhlIGNhbGxlci48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMTYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEwMzksNyArMTAzOSw3IEBACiAuIFRoZSBsYW5ndWFnZSBpcyBpbiBJU082MzkgZm9ybWF0LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4xNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTA5NCw3ICsxMDk0LDcgQEAKIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4xOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTEyOSw3ICsxMTI5LDcgQEAKIElTTyA2MzktMSBsYW5ndWFnZSBjb2RlIGZyb20gdGhlIHJldHVybmVkIElTTyA2MzktMiBvbmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjE5LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMTgyLDcgKzExODIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sI0dzdE1wZWd0c0Rlc2NyaXB0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNcGVndHNEZXNjcmlwdG9yPC9zcGFuPjwvYT4gKmRlc2NyaXB0b3I8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjIwLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMjEyLDcgKzEyMTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50MTYiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDE2PC9zcGFuPjwvYT4gYW5jaWxsYXJ5PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4yMS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTI1OCw3ICsxMjU4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sI0dzdE1wZWd0c0RWQkxpbmthZ2VEZXNjcmlwdG9yIiB0aXRsZT0ic3RydWN0IEdzdE1wZWd0c0RWQkxpbmthZ2VEZXNjcmlwdG9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TXBlZ3RzRFZCTGlua2FnZURlc2NyaXB0b3I8L3NwYW4+PC9hPiAqZGVzYzwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMjMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEyODQsNyArMTI4NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCNHc3RNcGVndHNEVkJMaW5rYWdlRGVzY3JpcHRvciIgdGl0bGU9InN0cnVjdCBHc3RNcGVndHNEVkJMaW5rYWdlRGVzY3JpcHRvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1wZWd0c0RWQkxpbmthZ2VEZXNjcmlwdG9yPC9zcGFuPjwvYT4gKmRlc2M8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjI0LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMzEwLDcgKzEzMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLURWQi12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwjR3N0TXBlZ3RzRFZCTGlua2FnZURlc2NyaXB0b3IiIHRpdGxlPSJzdHJ1Y3QgR3N0TXBlZ3RzRFZCTGlua2FnZURlc2NyaXB0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNcGVndHNEVkJMaW5rYWdlRGVzY3JpcHRvcjwvc3Bhbj48L2E+ICpkZXNjPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4yNS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTM0MCw3ICsxMzQwLDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEzNzgsNyArMTM3OCw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjI3LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNDI2LDcgKzE0MjYsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4yOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTQ3NSw3ICsxNDc1LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMzAuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE1MTEsNyArMTUxMSw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjMxLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNTUzLDcgKzE1NTMsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4zMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTU5OSw3ICsxNTk5LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMzMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE2MzUsNyArMTYzNSw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjM0LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNjcxLDcgKzE2NzEsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4zNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTcwOSw3ICsxNzA5LDcgQEAKIDo8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMzYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE3NDUsNyArMTc0NSw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjM3LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNzgxLDcgKzE3ODEsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4zOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTgxMCw3ICsxODEwLDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMzkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE4NDcsNyArMTg0Nyw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjQwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xODg0LDcgKzE4ODQsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC40MS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTkyMiw3ICsxOTIyLDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguNDIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE5NjQsNyArMTk2NCw3IEBACiA8cD5Db25zdWx0IHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9ucyBmb3IgbW9yZSBkZXRhaWxzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4yLjYiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjMwNCw3ICsyMzA0LDcgQEAKIDxwPkNvbnN1bHQgdGhlIHJlbGV2YW50IHNwZWNpZmljYXRpb25zIGZvciBtb3JlIGRldGFpbHMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjMuNiI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yNDU1LDcgKzI0NTUsNyBAQAogPHA+RXh0ZW5kZWQgRXZlbnQgRGVzY3JpcHRvciAoRU4gMzAwIDQ2OCB2LjEuMTMuMSk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuNy41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yNTExLDcgKzI1MTEsNyBAQAogPHA+U2F0ZWxsaXRlIERlbGl2ZXJ5IFN5c3RlbSBEZXNjcmlwdG9yIChFTiAzMDAgNDY4IHYuMS4xMy4xKTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS44LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI1NzMsNyArMjU3Myw3IEBACiA8YSBuYW1lPSJHc3RNcGVndHNEVkJDb2RlUmF0ZSI+PC9hPjxoMz5lbnVtIEdzdE1wZWd0c0RWQkNvZGVSYXRlPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS45LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjY1NCw3ICsyNjU0LDcgQEAKIDxhIG5hbWU9IkdzdE1wZWd0c01vZHVsYXRpb25UeXBlIj48L2E+PGgzPmVudW0gR3N0TXBlZ3RzTW9kdWxhdGlvblR5cGU8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjEwLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjc0NSw3ICsyNzQ1LDcgQEAKIDxhIG5hbWU9IkdzdE1wZWd0c1NhdGVsbGl0ZVBvbGFyaXphdGlvblR5cGUiPjwvYT48aDM+ZW51bSBHc3RNcGVndHNTYXRlbGxpdGVQb2xhcml6YXRpb25UeXBlPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4xMS4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI3ODEsNyArMjc4MSw3IEBACiA8YSBuYW1lPSJHc3RNcGVndHNTYXRlbGxpdGVSb2xsb2ZmIj48L2E+PGgzPmVudW0gR3N0TXBlZ3RzU2F0ZWxsaXRlUm9sbG9mZjwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMTIuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yODMyLDcgKzI4MzIsNyBAQAogPHA+Q2FibGUgRGVsaXZlcnkgU3lzdGVtIERlc2NyaXB0b3IgKEVOIDMwMCA0Njggdi4xLjEzLjEpPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjEzLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI4NzMsNyArMjg3Myw3IEBACiA8YSBuYW1lPSJHc3RNcGVndHNDYWJsZU91dGVyRkVDU2NoZW1lIj48L2E+PGgzPmVudW0gR3N0TXBlZ3RzQ2FibGVPdXRlckZFQ1NjaGVtZTwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMTQuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yOTIwLDcgKzI5MjAsNyBAQAogPHA+VGVycmVzdHJpYWwgRGVsaXZlcnkgU3lzdGVtIERlc2NyaXB0b3IgKEVOIDMwMCA0Njggdi4xLjEzLjEpPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjE1LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI5OTYsNyArMjk5Niw3IEBACiA8YSBuYW1lPSJHc3RNcGVndHNUZXJyZXN0cmlhbFRyYW5zbWlzc2lvbk1vZGUiPjwvYT48aDM+ZW51bSBHc3RNcGVndHNUZXJyZXN0cmlhbFRyYW5zbWlzc2lvbk1vZGU8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjE2LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzA1Nyw3ICszMDU3LDcgQEAKIDxhIG5hbWU9IkdzdE1wZWd0c1RlcnJlc3RyaWFsR3VhcmRJbnRlcnZhbCI+PC9hPjxoMz5lbnVtIEdzdE1wZWd0c1RlcnJlc3RyaWFsR3VhcmRJbnRlcnZhbDwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMTcuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMTI4LDcgKzMxMjgsNyBAQAogPGEgbmFtZT0iR3N0TXBlZ3RzVGVycmVzdHJpYWxIaWVyYXJjaHkiPjwvYT48aDM+ZW51bSBHc3RNcGVndHNUZXJyZXN0cmlhbEhpZXJhcmNoeTwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMTguMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMTc0LDcgKzMxNzQsNyBAQAogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMTkuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzIwNiw3ICszMjA2LDcgQEAKIDwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjIwLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTMyNTEsNyArMzI1MSw3IEBACiA8cD5kZXNjcmliZSBEVkItVDIgdHJhbnNtaXNzaW9ucyBhY2NvcmRpbmcgdG8gRU4gMzAyIDc1NTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4yMS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMzE0LDcgKzMzMTQsNyBAQAogPHA+QXMgc3BlY2lmaWVkIGluIFRhYmxlIDg3IG9mIEVUU0kgRU4gMzAwIDQ2OCB2MS4xMy4xPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjIyLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzQ3Miw3ICszNDcyLDcgQEAKIDxwPkFzIHNwZWNpZmllZCBpbiBUYWJsZSAxMDAgb2YgRVRTSSBFTiAzMDAgNDY4IHYxLjEzLjE8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMjMuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0zNTE0LDcgKzM1MTQsNyBAQAogPHA+TGlua2FnZSBUeXBlIChFTiAzMDAgNDY4IHYuMS4xMy4xKTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4yNC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM2MDUsNyArMzYwNSw3IEBACiA8YSBuYW1lPSJHc3RNcGVndHNEVkJMaW5rYWdlSGFuZE92ZXJUeXBlIj48L2E+PGgzPmVudW0gR3N0TXBlZ3RzRFZCTGlua2FnZUhhbmRPdmVyVHlwZTwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMjUuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0zNjk0LDcgKzM2OTQsNyBAQAogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMjkuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzc0OSw3ICszNzQ5LDcgQEAKIDwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjMwLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM3OTYsNyArMzc5Niw3IEBACiA8YSBuYW1lPSJHc3RNcGVndHNEVkJTY3JhbWJsaW5nTW9kZVR5cGUiPjwvYT48aDM+ZW51bSBHc3RNcGVndHNEVkJTY3JhbWJsaW5nTW9kZVR5cGU8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjMxLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzg3MSw3ICszODcxLDcgQEAKIDwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjMzLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM5MDMsNyArMzkwMyw3IEBACiA8cD5hIG11bHRpbGluZ3VhbCBuZXR3b3JrIG5hbWUgZW50cnk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMzQuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzkzNSw3ICszOTM1LDcgQEAKIDxwPmEgbXVsdGlsaW5ndWFsIGJvdXF1ZXQgbmFtZSBlbnRyeTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4zNS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0zOTY4LDcgKzM5NjgsNyBAQAogPHA+YSBtdWx0aWxpbmd1YWwgc2VydmljZSBuYW1lIGVudHJ5PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjM2LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQwMDQsNyArNDAwNCw3IEBACiA8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4zNy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1zZWN0aW9ucy5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtc2VjdGlvbnMuaHRtbAppbmRleCA2MGNmYTdkLi5hZGQ1N2E1IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1zZWN0aW9ucy5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLURWQi12YXJpYW50cy1vZi1NUEVHLVRTLXNlY3Rpb25zLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5EVkIgdmFyaWFudHMgb2YgTVBFRy1UUyBzZWN0aW9uczogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJtcGVndHMuaHRtbCIgdGl0bGU9Ik1wZWcgVFMgaGVscGVyIGxpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1BVFNDLXZhcmlhbnRzLW9mLU1QRUctVFMtc2VjdGlvbnMuaHRtbCIgdGl0bGU9IkFUU0MgdmFyaWFudHMgb2YgTVBFRy1UUyBzZWN0aW9ucyI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1zZWN0aW9ucy5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtMTM2LDcgKzEzNiw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLURWQi12YXJpYW50cy1vZi1NUEVHLVRTLXNlY3Rpb25zLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0yMTMsNyArMjEzLDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS43LjguMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjY2LDcgKzI2Niw3IEBACiAgaXMgbWFuYWdlZCBieSB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1zZWN0aW9ucy5odG1sI0dzdE1wZWd0c1NlY3Rpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNcGVndHNTZWN0aW9uPC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS43LjguNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjk0LDcgKzI5NCw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNy44LjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTMyMiw3ICszMjIsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjcuOC43LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zNzUsNyArMzc1LDcgQEAKICBpcyBtYW5hZ2VkIGJ5IHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLmh0bWwjR3N0TXBlZ3RzU2VjdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1wZWd0c1NlY3Rpb248L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjcuOC4xMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDAzLDcgKzQwMyw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNy44LjExLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00MzAsNyArNDMwLDcgQEAKIDxwPlJldHVybnMgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdERhdGVUaW1lLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3REYXRlVGltZTwvc3Bhbj48L2E+IG9mIHRoZSBURFQ8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS43LjguMTIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ1OCw3ICs0NTgsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjcuOC4xMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDg3LDcgKzQ4Nyw3IEBACiA8cD5zZWUgYWxzbzogPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1zZWN0aW9ucy5odG1sI0dzdE1wZWd0c1NlY3Rpb25UYWJsZUlEIiB0aXRsZT0iZW51bSBHc3RNcGVndHNTZWN0aW9uVGFibGVJRCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1wZWd0c1NlY3Rpb25UYWJsZUlEPC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS43LjkuMi42Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTcwMyw3ICs3MDMsNyBAQAogPHA+TmV0d29yayBJbmZvcm1hdGlvbiBUYWJsZSAoSVNPL0lFQyAxMzgxOC0xIC8gRU4gMzAwIDQ2OCk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS43LjkuMy41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC03NDYsNyArNzQ2LDcgQEAKIDwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNy45LjQuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzg0LDcgKzc4NCw3IEBACiA8cD5EVkIgQm91cXVldCBBc3NvY2lhdGlvbiBUYWJsZSAoRU4gMzAwIDQ2OCk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS43LjkuNS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC04MzAsNyArODMwLDcgQEAKIDxwPlNlcnZpY2UgRGVzY3JpcHRpb24gVGFibGUgKEVOIDMwMCA0NjgpPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNy45LjcuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtODc3LDcgKzg3Nyw3IEBACiA8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjcuOS44LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTkzNiw3ICs5MzYsNyBAQAogPHA+RXZlbnQgSW5mb3JtYXRpb24gVGFibGUgKEVOIDMwMCA0NjgpPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNy45LjkuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTAwMSw3ICsxMDAxLDcgQEAKIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjcuOS4xMC41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDQ5LDcgKzEwNDksNyBAQAogPHA+Q29ycmVzcG9uZHMgdG8gdGFibGUgNiBvZiBFVFNJIEVOIDMwMCA0NjggKHYxLjEzLjApPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNy45LjExLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTEwMiw3ICsxMTAyLDcgQEAKIDxwPlRpbWUgT2Zmc2V0IFRhYmxlIChFTiAzMDAgNDY4KTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjcuOS4xMi41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yLmh0bWwKaW5kZXggODIwNDAzMy4uYzI3YjM5YyAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvci5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEFnZ3JlZ2F0b3IuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEFnZ3JlZ2F0b3I6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iYmFzZS5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhc2UgY2xhc3NlcyBmcm9tIGdzdC1wbHVnaW5zLWJhZCI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImJhc2UuaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYXNlIGNsYXNzZXMgZnJvbSBnc3QtcGx1Z2lucy1iYWQiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvci5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNzcsNyArNzcsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xNDUsNyArMTQ1LDcgQEAKIHNlbnQgYmVmb3JlIHB1c2hpbmcgdGhlIGJ1ZmZlci48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNy4yLjYuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTc1LDcgKzE3NSw3IEBACiA8cD5TZXRzIHRoZSBjYXBzIHRvIGJlIHVzZWQgb24gdGhlIHNyYyBwYWQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjcuMi42LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIwOSw3ICsyMDksNyBAQAogc2luayBwYWQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjcuMi42LjQuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI0OCw3ICsyNDgsNyBAQAogPHA+VHlwaWNhbGx5IG9ubHkgY2FsbGVkIGJ5IHN1YmNsYXNzZXMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjcuMi42LjUuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI4Myw3ICsyODMsNyBAQAogPHA+QWdncmVnYXRvciBiYXNlIGNsYXNzIG9iamVjdCBzdHJ1Y3R1cmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjcuMi43LjIuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzUyLDYgKzM1MiwxMSBAQAogICBnYm9vbGVhbiAgICAgICAgICAoKnN0YXJ0KSAgICAgICAgICAoR3N0QWdncmVnYXRvciAgICAqICBhZ2dyZWdhdG9yKTsKIAogICBHc3RDbG9ja1RpbWUgICAgICAoKmdldF9uZXh0X3RpbWUpICAoR3N0QWdncmVnYXRvciAgICAqICBhZ2dyZWdhdG9yKTsKKworICBHc3RBZ2dyZWdhdG9yUGFkICogKCpjcmVhdGVfbmV3X3BhZCkgKEdzdEFnZ3JlZ2F0b3IgICogc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICogcmVxX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR3N0Q2FwcyAgKiBjYXBzKTsKIH07CiA8L3ByZT4KIDxwPlRoZSBhZ2dyZWdhdG9yIGJhc2UgY2xhc3Mgd2lsbCBoYW5kbGUgaW4gYSB0aHJlYWQtc2FmZSB3YXkgYWxsIG1hbm5lcnMgb2YKQEAgLTM2NCw3ICszNjksNyBAQAogX2ZpbmlzaF9idWZmZXIgZnJvbSBpbnNpZGUgdGhhdCBmdW5jdGlvbi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNy4yLjcuMy43Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC00NzAsNiArNDc1LDExIEBACiBvbiBhbGwgc2luayBwYWRzIGJlZm9yZSBhZ2dyZWdhdGluZy48L3A+PC90ZD4KIDx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RBZ2dyZWdhdG9yQ2xhc3MuY3JlYXRlLW5ldy1wYWQiPjwvYT5jcmVhdGVfbmV3X3BhZDwvY29kZT48L2VtPsKgKCk8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yUGFkLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yUGFkLmh0bWwKaW5kZXggMTFkY2IzMy4uNTlmZTg0YSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvclBhZC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEFnZ3JlZ2F0b3JQYWQuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEFnZ3JlZ2F0b3JQYWQ6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iYmFzZS5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhc2UgY2xhc3NlcyBmcm9tIGdzdC1wbHVnaW5zLWJhZCI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEFnZ3JlZ2F0b3IuaHRtbCIgdGl0bGU9IkdzdEFnZ3JlZ2F0b3IiPgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvclBhZC5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNzYsNyArNzYsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yUGFkLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xMDYsNyArMTA2LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNy4zLjYuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTM0LDcgKzEzNCw3IEBACiBnc3RfYWdncmVnYXRvcl9wYWRfZ2V0X2J1ZmZlciAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yUGFkLmh0bWwjR3N0QWdncmVnYXRvclBhZCIgdGl0bGU9InN0cnVjdCBHc3RBZ2dyZWdhdG9yUGFkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWdncmVnYXRvclBhZDwvc3Bhbj48L2E+ICpwYWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjcuMy42LjMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE2NSw3ICsxNjUsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi43LjMuNi40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yMTIsNyArMjEyLDcgQEAKIDxwPlRoZSBpbXBsZW1lbnRhdGlvbiB0aGUgR3N0UGFkIHRvIHVzZSB3aXRoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yLmh0bWwjR3N0QWdncmVnYXRvciIgdGl0bGU9InN0cnVjdCBHc3RBZ2dyZWdhdG9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWdncmVnYXRvcjwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjcuMy43LjIuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjU5LDcgKzI1OSw3IEBACiA8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi43LjMuNy4zLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sCmluZGV4IDI0ZjhmMDMuLjQ0MTYzZmMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbApAQCAtMywxMSArMywxMSBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0RUdMSW1hZ2VNZW1vcnk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Ci08bGluayByZWw9InByZXYiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPgotPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZUZpbHRlciI+Cis8bGluayByZWw9InByZXYiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iR3N0R0xGaWx0ZXIuaHRtbCIgdGl0bGU9IkdzdEdMRmlsdGVyIj4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CiA8L2hlYWQ+CkBAIC0xOSw4ICsxOSw4IEBACiA8L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iR3N0R0xGaWx0ZXIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeSI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtMTAwLDcgKzEwMCw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbAppbmRleCA0MDM1ZWM1Li4yMDlhZDdiIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwKQEAgLTMsMTEgKzMsMTEgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMQVBJOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPC9oZWFkPgpAQCAtMjAsNyArMjAsNyBAQAogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSSI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNzEsMjAgKzcxLDEyIEBACiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNnc3QtZ2wtcGxhdGZvcm0tZnJvbS1zdHJpbmciIHRpdGxlPSJnc3RfZ2xfcGxhdGZvcm1fZnJvbV9zdHJpbmfCoCgpIj5nc3RfZ2xfcGxhdGZvcm1fZnJvbV9zdHJpbmc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNnc3QtZ2wtY2hlY2stZXh0ZW5zaW9uIiB0aXRsZT0iZ3N0X2dsX2NoZWNrX2V4dGVuc2lvbsKgKCkiPmdzdF9nbF9jaGVja19leHRlbnNpb248L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTI4LDcgKzEyMCw3IEBACiBnc3RfZ2xfYXBpX3RvX3N0cmluZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMQVBJIiB0aXRsZT0iZW51bSBHc3RHTEFQSSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQVBJPC9zcGFuPjwvYT4gYXBpPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi45LjIuNi4yLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNTQsNyArMTQ2LDcgQEAKIGdzdF9nbF9hcGlfZnJvbV9zdHJpbmcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICphcGlfczwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuOS4yLjYuMy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTc3LDE3ICsxNjksMTcgQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9ImdzdC1nbC1wbGF0Zm9ybS10by1zdHJpbmciPjwvYT48aDM+Z3N0X2dsX3BsYXRmb3JtX3RvX3N0cmluZ8KgKCk8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCi1nc3RfZ2xfcGxhdGZvcm1fdG9fc3RyaW5nICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR3N0R0xQbGF0Zm9ybSIgdGl0bGU9ImVudW0gR3N0R0xQbGF0Zm9ybSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMUGxhdGZvcm08L3NwYW4+PC9hPiBhcGk8L2NvZGU+PC9lbT4pOzwvcHJlPgorZ3N0X2dsX3BsYXRmb3JtX3RvX3N0cmluZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMUGxhdGZvcm0iIHRpdGxlPSJlbnVtIEdzdEdMUGxhdGZvcm0iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFBsYXRmb3JtPC9zcGFuPjwvYT4gcGxhdGZvcm08L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjkuMi42LjQuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KIDxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+CiA8L2NvbGdyb3VwPgogPHRib2R5Pjx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFwaTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxhdGZvcm08L3A+PC90ZD4KIDx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMUGxhdGZvcm0iIHRpdGxlPSJlbnVtIEdzdEdMUGxhdGZvcm0iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFBsYXRmb3JtPC9zcGFuPjwvYT4gdG8gc3RyaW5naWZ5PC9wPjwvdGQ+CiA8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj48L3Rib2R5PgpAQCAtMTk1LDcgKzE4Nyw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi45LjIuNi40LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Ci08cD4gQSBzcGFjZSBzZXBlcmF0ZWQgc3RyaW5nIG9mIHRoZSBPcGVuR0wgcGxhdGZvcm1zIGVuYWJsZWQgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmFwaTwvY29kZT48L2VtPgorPHA+IEEgc3BhY2Ugc2VwZXJhdGVkIHN0cmluZyBvZiB0aGUgT3BlbkdMIHBsYXRmb3JtcyBlbmFibGVkIGluIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5wbGF0Zm9ybTwvY29kZT48L2VtPgogPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTIwNiw3ICsxOTgsNyBAQAogZ3N0X2dsX3BsYXRmb3JtX2Zyb21fc3RyaW5nICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqcGxhdGZvcm1fczwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuOS4yLjYuNS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjI1LDEzICsyMTcsNiBAQAogPC9wPgogPC9kaXY+CiA8L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1jaGVjay1leHRlbnNpb24iPjwvYT48aDM+Z3N0X2dsX2NoZWNrX2V4dGVuc2lvbsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci1nc3RfZ2xfY2hlY2tfZXh0ZW5zaW9uICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPHNwYW4gY2xhc3M9InR5cGUiPmNoYXI8L3NwYW4+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKmV4dDwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KQEAgLTIzOSw3ICsyMjQsNyBAQAogPGEgbmFtZT0iR3N0R0xBUEkiPjwvYT48aDM+ZW51bSBHc3RHTEFQSTwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuOS4yLjcuMi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI0OCwzMyArMjMzLDQ2IEBACiA8dGJvZHk+CiA8dHI+CiA8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1BUEktTk9ORTpDQVBTIj48L2E+R1NUX0dMX0FQSV9OT05FPC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+bm8gQVBJPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1BUEktT1BFTkdMOkNBUFMiPjwvYT5HU1RfR0xfQVBJX09QRU5HTDwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPkRlc2t0b3AgT3BlbkdMIHVwIHRvIGFuZCBpbmNsdWRpbmcgMy4xLiAgVGhlCisgICAgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eSBwcm9maWxlIHdoZW4gdGhlIE9wZW5HTCB2ZXJzaW9uIGlzICZndDs9IDMuMjwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtQVBJLU9QRU5HTDM6Q0FQUyI+PC9hPkdTVF9HTF9BUElfT1BFTkdMMzwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPkRlc2t0b3AgT3BlbkdMICZndDs9IDMuMiBjb3JlIHByb2ZpbGU8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLUFQSS1HTEVTMTpDQVBTIj48L2E+R1NUX0dMX0FQSV9HTEVTMTwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPk9wZW5HTCBFUyAxLng8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLUFQSS1HTEVTMjpDQVBTIj48L2E+R1NUX0dMX0FQSV9HTEVTMjwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPk9wZW5HTCBFUyAyLnggYW5kIDMueDwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtQVBJLUFOWTpDQVBTIj48L2E+R1NUX0dMX0FQSV9BTlk8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5BbnkgT3BlbkdMIEFQSTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CkBAIC0yODUsNyArMjgzLDcgQEAKIDxhIG5hbWU9IkdzdEdMUGxhdGZvcm0iPjwvYT48aDM+ZW51bSBHc3RHTFBsYXRmb3JtPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi45LjIuNy4zLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjk0LDM4ICsyOTIsNTMgQEAKIDx0Ym9keT4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLVBMQVRGT1JNLU5PTkU6Q0FQUyI+PC9hPkdTVF9HTF9QTEFURk9STV9OT05FPC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+bm8gcGxhdGZvcm08L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLVBMQVRGT1JNLUVHTDpDQVBTIj48L2E+R1NUX0dMX1BMQVRGT1JNX0VHTDwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPnRoZSBFR0wgcGxhdGZvcm0gdXNlZCBwcmltYXJpbHkgd2l0aCB0aGUgWDExLCB3YXlsYW5kCisgICAgICAgICAgICAgICAgICAgICBhbmQgYW5kcm9pZCB3aW5kb3cgc3lzdGVtcyBhcyB3ZWxsIGFzIG9uIGVtYmVkZGVkIExpbnV4PC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1QTEFURk9STS1HTFg6Q0FQUyI+PC9hPkdTVF9HTF9QTEFURk9STV9HTFg8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD50aGUgR0xYIHBsYXRmb3JtIHVzZWQgcHJpbWFyaWx5IHdpdGggdGhlIFgxMSB3aW5kb3cgc3lzdGVtPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1QTEFURk9STS1XR0w6Q0FQUyI+PC9hPkdTVF9HTF9QTEFURk9STV9XR0w8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD50aGUgV0dMIHBsYXRmb3JtIHVzZWQgcHJpbWFyaWx5IG9uIFdpbmRvd3M8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLVBMQVRGT1JNLUNHTDpDQVBTIj48L2E+R1NUX0dMX1BMQVRGT1JNX0NHTDwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPnRoZSBDR0wgcGxhdGZvcm0gdXNlZCBwcmltYXJpbHkgb24gT1MgWDwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtUExBVEZPUk0tRUFHTDpDQVBTIj48L2E+R1NUX0dMX1BMQVRGT1JNX0VBR0w8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD50aGUgRUFHTCBwbGF0Zm9ybSB1c2VkIHByaW1hcmlseSBvbiBpT1M8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLVBMQVRGT1JNLUFOWTpDQVBTIj48L2E+R1NUX0dMX1BMQVRGT1JNX0FOWTwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPmFueSBPcGVuR0wgcGxhdGZvcm08L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgpAQCAtMzM2LDI0ICszNDksMjggQEAKIDxhIG5hbWU9IkdTVC1HTC1BUEktR0xFUzEtTkFNRTpDQVBTIj48L2E+PGgzPkdTVF9HTF9BUElfR0xFUzFfTkFNRTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xfQVBJX0dMRVMxX05BTUUgImdsZXMxIgogPC9wcmU+Cis8cD5UaGUgbmFtZSBmb3IgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR1NULUdMLUFQSS1HTEVTMTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R1NUX0dMX0FQSV9HTEVTMTwvY29kZT48L2E+IHVzZWQgaW4gdmFyaW91cyBwbGFjZXM8L3A+CiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdTVC1HTC1BUEktR0xFUzItTkFNRTpDQVBTIj48L2E+PGgzPkdTVF9HTF9BUElfR0xFUzJfTkFNRTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xfQVBJX0dMRVMyX05BTUUgImdsZXMyIgogPC9wcmU+Cis8cD5UaGUgbmFtZSBmb3IgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR1NULUdMLUFQSS1HTEVTMjpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R1NUX0dMX0FQSV9HTEVTMjwvY29kZT48L2E+IHVzZWQgaW4gdmFyaW91cyBwbGFjZXM8L3A+CiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdTVC1HTC1BUEktT1BFTkdMMy1OQU1FOkNBUFMiPjwvYT48aDM+R1NUX0dMX0FQSV9PUEVOR0wzX05BTUU8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0dMX0FQSV9PUEVOR0wzX05BTUUgIm9wZW5nbDMiCiA8L3ByZT4KKzxwPlRoZSBuYW1lIGZvciA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHU1QtR0wtQVBJLU9QRU5HTDM6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdTVF9HTF9BUElfT1BFTkdMMzwvY29kZT48L2E+IHVzZWQgaW4gdmFyaW91cyBwbGFjZXM8L3A+CiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdTVC1HTC1BUEktT1BFTkdMLU5BTUU6Q0FQUyI+PC9hPjxoMz5HU1RfR0xfQVBJX09QRU5HTF9OQU1FPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9BUElfT1BFTkdMX05BTUUgIm9wZW5nbCIKIDwvcHJlPgorPHA+VGhlIG5hbWUgZm9yIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1BUEktT1BFTkdMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HU1RfR0xfQVBJX09QRU5HTDwvY29kZT48L2E+IHVzZWQgaW4gdmFyaW91cyBwbGFjZXM8L3A+CiA8L2Rpdj4KIDwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWVjNjU3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbApAQCAtMCwwICsxLDM2MiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPHRpdGxlPkdzdEdMQnVmZmVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIiB0aXRsZT0iR3N0R0xCYXNlRmlsdGVyIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KKzx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Cis8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KKzxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+Cis8L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPC90cj48L3RhYmxlPgorPGRpdiBjbGFzcz0icmVmZW50cnkiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci50b3Bfb2ZfcGFnZSI+PC9hPkdzdEdMQnVmZmVyPC9zcGFuPjwvaDI+Cis8cD5Hc3RHTEJ1ZmZlciDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCBidWZmZXJzPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KKzwvdHI+PC90YWJsZT48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+Cis8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LWdsLWJ1ZmZlci1pbml0LW9uY2UiIHRpdGxlPSJnc3RfZ2xfYnVmZmVyX2luaXRfb25jZcKgKCkiPmdzdF9nbF9idWZmZXJfaW5pdF9vbmNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LWlzLWdsLWJ1ZmZlciIgdGl0bGU9ImdzdF9pc19nbF9idWZmZXLCoCgpIj5nc3RfaXNfZ2xfYnVmZmVyPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXIiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEJ1ZmZlcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1nbC1idWZmZXItYWxsb2MiIHRpdGxlPSJnc3RfZ2xfYnVmZmVyX2FsbG9jwqAoKSI+Z3N0X2dsX2J1ZmZlcl9hbGxvYzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLUJVRkZFUjpDQVBTIiB0aXRsZT0iR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQlVGRkVSIj5HU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19CVUZGRVI8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtZ2wtYnVmZmVyLWFsbG9jYXRpb24tcGFyYW1zLW5ldyIgdGl0bGU9ImdzdF9nbF9idWZmZXJfYWxsb2NhdGlvbl9wYXJhbXNfbmV3wqAoKSI+Z3N0X2dsX2J1ZmZlcl9hbGxvY2F0aW9uX3BhcmFtc19uZXc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8YSBuYW1lPSJHc3RHTEJ1ZmZlckFsbG9jYXRvciI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Cis8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyIiB0aXRsZT0iR3N0R0xCdWZmZXIiPkdzdEdMQnVmZmVyPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIj5Hc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXM8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXJBbGxvY2F0b3Itc3RydWN0IiB0aXRsZT0iR3N0R0xCdWZmZXJBbGxvY2F0b3IiPkdzdEdMQnVmZmVyQWxsb2NhdG9yPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3MiIHRpdGxlPSJHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzIj5Hc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dTVC1HTC1CVUZGRVItQUxMT0NBVE9SLU5BTUU6Q0FQUyIgdGl0bGU9IkdTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX05BTUUiPkdTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX05BTUU8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR1NULUNBUFMtRkVBVFVSRS1NRU1PUlktR0wtQlVGRkVSOkNBUFMiIHRpdGxlPSJHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9CVUZGRVIiPkdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX0JVRkZFUjwvYT48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgorPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj5Hc3RBbGxvY2F0b3I8L2E+CisgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yPC9hPgorICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RHTEJ1ZmZlckFsbG9jYXRvcgorPC9wcmU+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzxwPkdzdEdMQnVmZmVyIGlzIGEgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPiBzdWJjbGFzcyBwcm92aWRpbmcgc3VwcG9ydCBmb3IgdGhlIG1hcHBpbmcgb2YKK0dMIGJ1ZmZlcnMuICA8L3A+Cis8cD5EYXRhIGlzIHVwbG9hZGVkIG9yIGRvd25sb2FkZWQgZnJvbSB0aGUgR1BVIGFzIGlzIG5lY2Vzc2FyeS48L3A+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYnVmZmVyLWluaXQtb25jZSI+PC9hPjxoMz5nc3RfZ2xfYnVmZmVyX2luaXRfb25jZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9idWZmZXJfaW5pdF9vbmNlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPnZvaWQ8L3NwYW4+PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkluaXRpYWxpemVzIHRoZSBHTCBCdWZmZXIgYWxsb2NhdG9yLiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgorbXVsdGlwbGUgdGltZXMuICBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXIiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyPC9zcGFuPjwvYT4gb3BlcmF0aW9uLjwvcD4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWlzLWdsLWJ1ZmZlciI+PC9hPjxoMz5nc3RfaXNfZ2xfYnVmZmVywqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9pc19nbF9idWZmZXIgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+ICptZW08L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuNS44LjMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm1lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjUuOC4zLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gd2hldGhlciB0aGUgbWVtb3J5IGF0IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5tZW08L2NvZGU+PC9lbT4KK2lzIGEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXIiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyPC9zcGFuPjwvYT48L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWJ1ZmZlci1hbGxvYyI+PC9hPjxoMz5nc3RfZ2xfYnVmZmVyX2FsbG9jwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXIiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEJ1ZmZlcjwvc3Bhbj48L2E+wqAqCitnc3RfZ2xfYnVmZmVyX2FsbG9jICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBnbF90YXJnZXQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBnbF91c2FnZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpwYXJhbXM8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzaXplIj48c3BhbiBjbGFzcz0idHlwZSI+Z3NpemU8L3NwYW4+PC9hPiBtYXhzaXplPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctQlVGRkVSOkNBUFMiPjwvYT48aDM+R1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQlVGRkVSPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0JVRkZFUiAoMSAmbHQ7Jmx0OyA0KQorPC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1idWZmZXItYWxsb2NhdGlvbi1wYXJhbXMtbmV3Ij48L2E+PGgzPmdzdF9nbF9idWZmZXJfYWxsb2NhdGlvbl9wYXJhbXNfbmV3wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0aW9uX3BhcmFtc19uZXcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzaXplIj48c3BhbiBjbGFzcz0idHlwZSI+Z3NpemU8L3NwYW4+PC9hPiBhbGxvY19zaXplPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICphbGxvY19wYXJhbXM8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gZ2xfdGFyZ2V0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGdsX3VzYWdlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjUuOC42LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFsbG9jX3NpemU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgc2l6ZSBpbiBieXRlcyB0byBhbGxvY2F0ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hbGxvY19wYXJhbXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gZm9yIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KKy4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Z2xfdGFyZ2V0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIE9wZW5HTCB0YXJnZXQgdG8gYWxsb2NhdGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Z2xfdXNhZ2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgT3BlbkdMIHVzYWdlIGhpbnQgdG8gYWxsb2NhdGUgd2l0aDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuNS44LjYuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gZm9yIGFsbG9jYXRpbmcgT3BlbkdMIGJ1ZmZlcgorb2JqZWN0czwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTEJ1ZmZlciI+PC9hPjxoMz5Hc3RHTEJ1ZmZlcjwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgeworICBHc3RHTEJhc2VNZW1vcnkgICAgICAgbWVtOworCisgIGd1aW50ICAgICAgICAgICAgICAgICBpZDsKKyAgZ3VpbnQgICAgICAgICAgICAgICAgIHRhcmdldDsgICAgICAgICAvKiBYWFg6IHB1dCB0aGlzIGluIHRoZSBhbGxvY2F0b3I/ICovCisgIGd1aW50ICAgICAgICAgICAgICAgICB1c2FnZV9oaW50czsgICAgIC8qIFhYWDogcHV0IHRoaXMgaW4gdGhlIGFsbG9jYXRvcj8gKi8KK30gR3N0R0xCdWZmZXI7Cis8L3ByZT4KKzxwPlJlcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgYSBHTCBidWZmZXI8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS41LjkuMi41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJ1ZmZlci5tZW0iPjwvYT5tZW08L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBwYXJlbnQgb2JqZWN0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCdWZmZXIuaWQiPjwvYT5pZDwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGJ1ZmZlciBpZCBmb3IgdGhpcyBtZW1vcnk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJ1ZmZlci50YXJnZXQiPjwvYT50YXJnZXQ8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBPcGVuR0wgdGFyZ2V0IG9mIHRoaXMgdGV4dHVyZSBmb3IgYmluZGluZyBwdXJwb3NlczwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQnVmZmVyLnVzYWdlLWhpbnRzIj48L2E+dXNhZ2VfaGludHM8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBPcGVuR0wgdXNhZ2UgaGludHMgdGhpcyBidWZmZXIgd2FzIGNyZWF0ZWQgd2l0aDwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIj48L2E+PGgzPnN0cnVjdCBHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXM8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMgeworICBHc3RHTEFsbG9jYXRpb25QYXJhbXMgICAgIHBhcmVudDsKKworICBndWludCAgICAgICAgICAgICAgICAgICAgIGdsX3RhcmdldDsKKyAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICBnbF91c2FnZTsKK307Cis8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjUuOS4zLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMucGFyZW50Ij48L2E+cGFyZW50PC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5wYXJlbnQgb2JqZWN0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zLmdsLXRhcmdldCI+PC9hPmdsX3RhcmdldDwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIE9wZW5HTCB0YXJnZXQgdG8gYmluZCB0aGUgYnVmZmVyIHRvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zLmdsLXVzYWdlIj48L2E+Z2xfdXNhZ2U8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBPcGVuR0wgdXNhZ2UgaGludCB0byBjcmVhdGUgdGhlIGJ1ZmZlciB3aXRoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTEJ1ZmZlckFsbG9jYXRvci1zdHJ1Y3QiPjwvYT48aDM+R3N0R0xCdWZmZXJBbGxvY2F0b3I8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RHTEJ1ZmZlckFsbG9jYXRvciBHc3RHTEJ1ZmZlckFsbG9jYXRvcjs8L3ByZT4KKzxwPk9wYXF1ZSA8c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0b3I8L3NwYW4+IHN0cnVjdDwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzcyI+PC9hPjxoMz5Hc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCB7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzIHBhcmVudF9jbGFzczsKK30gR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzczsKKzwvcHJlPgorPHA+VGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3MiIHRpdGxlPSJHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzczwvc3Bhbj48L2E+IG9ubHkgY29udGFpbnMgcHJpdmF0ZSBkYXRhPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtR0wtQlVGRkVSLUFMTE9DQVRPUi1OQU1FOkNBUFMiPjwvYT48aDM+R1NUX0dMX0JVRkZFUl9BTExPQ0FUT1JfTkFNRTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9OQU1FICAgIkdMQnVmZmVyIgorPC9wcmU+Cis8cD5UaGUgbmFtZSBvZiB0aGUgR0wgYnVmZmVyIGFsbG9jYXRvcjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUNBUFMtRkVBVFVSRS1NRU1PUlktR0wtQlVGRkVSOkNBUFMiPjwvYT48aDM+R1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfQlVGRkVSPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX0JVRkZFUiAibWVtb3J5OkdMQnVmZmVyIgorPC9wcmU+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPiwgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0b3I8L3NwYW4+PC9hPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJmb290ZXIiPgorPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0Q29jb2EuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dENvY29hLmh0bWwKaW5kZXggNDlmYzhmZS4uMGY5M2VlMSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0Q29jb2EuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRDb2NvYS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xDb250ZXh0Q29jb2E6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dENvY29hLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC02OCw3ICs2OCw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dENvY29hLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRFR0wuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEVHTC5odG1sCmluZGV4IDU3MzZlOGUuLjk4OWQ0ZTQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEVHTC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEVHTC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xDb250ZXh0RUdMOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRDb2NvYS5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Q29jb2EiPgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0RUdMLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC02OCw3ICs2OCw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEVHTC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTE4LDYgKzExOCw4IEBACiAKICAgR3N0R0xBUEkgZ2xfYXBpOwogCisgIGNvbnN0IGdjaGFyICplZ2xfZXh0czsKKwogICBFR0xJbWFnZUtIUiAoKmVnbENyZWF0ZUltYWdlKSAoRUdMRGlzcGxheSBkcHksIEVHTENvbnRleHQgY3R4LCBFR0xlbnVtIHRhcmdldCwKICAgICAgIEVHTENsaWVudEJ1ZmZlciBidWZmZXIsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwogICBFR0xCb29sZWFuICgqZWdsRGVzdHJveUltYWdlKSAoRUdMRGlzcGxheSBkcHksIEVHTEltYWdlS0hSIGltYWdlKTsKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEVhZ2wuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEVhZ2wuaHRtbAppbmRleCAxMzdkZGVkLi4wNGZjM2NjIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRFYWdsLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0RWFnbC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xDb250ZXh0RWFnbDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0RUdMLmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHRFR0wiPgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0RWFnbC5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNjAsNyArNjAsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRFYWdsLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRHTFguaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEdMWC5odG1sCmluZGV4IDgwNzU2MWEuLjQyN2I0N2YgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEdMWC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEdMWC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xDb250ZXh0R0xYOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRFYWdsLmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHRFYWdsIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEdMWC5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNjgsNyArNjgsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRHTFgub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dFdHTC5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0V0dMLmh0bWwKaW5kZXggMGFmMjM3My4uNmEzMjUwMyAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0V0dMLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0V0dMLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RHTENvbnRleHRXR0w6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEdMWC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0R0xYIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dFdHTC5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNjgsNyArNjgsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRXR0wub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3YmI4NGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sCkBAIC0wLDAgKzEsMTI4OSBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPHRpdGxlPkdzdEdMTWVtb3J5OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9IkdzdEdMRnJhbWVidWZmZXIuaHRtbCIgdGl0bGU9IkdzdEdMRnJhbWVidWZmZXIiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KKzx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Cis8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KKzxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+Cis8L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9IkdzdEdMRnJhbWVidWZmZXIuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPC90cj48L3RhYmxlPgorPGRpdiBjbGFzcz0icmVmZW50cnkiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS50b3Bfb2ZfcGFnZSI+PC9hPkdzdEdMTWVtb3J5PC9zcGFuPjwvaDI+Cis8cD5Hc3RHTE1lbW9yeSDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCB0ZXh0dXJlczwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Cis8L3RyPjwvdGFibGU+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgorPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1WSURFTzpDQVBTIiB0aXRsZT0iR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfVklERU8iPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWNvcHktZGF0YSIgdGl0bGU9ImdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGHCoCgpIj5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtZnJlZS1kYXRhIiB0aXRsZT0iZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YcKgKCkiPmdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGE8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtaW5pdC1mdWxsIiB0aXRsZT0iZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2luaXRfZnVsbMKgKCkiPmdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19pbml0X2Z1bGw8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1uZXciIHRpdGxlPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3wqAoKSI+Z3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldy13cmFwcGVkLWRhdGEiIHRpdGxlPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfZGF0YcKgKCkiPmdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtbmV3LXdyYXBwZWQtdGV4dHVyZSIgdGl0bGU9ImdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF90ZXh0dXJlwqAoKSI+Z3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX3RleHR1cmU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTE1lbW9yeUFsbG9jYXRvcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktYWxsb2NhdG9yLWdldC1kZWZhdWx0IiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHTCoCgpIj5nc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1pbml0LW9uY2UiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2luaXRfb25jZcKgKCkiPmdzdF9nbF9tZW1vcnlfaW5pdF9vbmNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWluaXQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2luaXTCoCgpIj5nc3RfZ2xfbWVtb3J5X2luaXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtaXMtZ2wtbWVtb3J5IiB0aXRsZT0iZ3N0X2lzX2dsX21lbW9yecKgKCkiPmdzdF9pc19nbF9tZW1vcnk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWNvcHktaW50byIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfY29weV9pbnRvwqAoKSI+Z3N0X2dsX21lbW9yeV9jb3B5X2ludG88L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWNvcHktdGV4aW1hZ2UiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2NvcHlfdGV4aW1hZ2XCoCgpIj5nc3RfZ2xfbWVtb3J5X2NvcHlfdGV4aW1hZ2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXJlYWQtcGl4ZWxzIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9yZWFkX3BpeGVsc8KgKCkiPmdzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktdGV4c3ViaW1hZ2UiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X3RleHN1YmltYWdlwqAoKSI+Z3N0X2dsX21lbW9yeV90ZXhzdWJpbWFnZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLWhlaWdodCIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaGVpZ2h0wqAoKSI+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9oZWlnaHQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3VpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLWlkIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9pZMKgKCkiPmdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaWQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXRhcmdldCIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdGFyZ2V0wqAoKSI+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90YXJnZXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS10eXBlIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90eXBlwqAoKSI+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90eXBlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtd2lkdGgiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3dpZHRowqAoKSI+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV93aWR0aDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktc2V0dXAtYnVmZmVyIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXLCoCgpIj5nc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxhIG5hbWU9IkdzdEdMTWVtb3J5QWxsb2NhdG9yIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KKzxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR1NULUdMLU1FTU9SWS1WSURFTy1GT1JNQVRTLVNUUjpDQVBTIiB0aXRsZT0iR1NUX0dMX01FTU9SWV9WSURFT19GT1JNQVRTX1NUUiI+R1NUX0dMX01FTU9SWV9WSURFT19GT1JNQVRTX1NUUjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5QWxsb2NhdG9yLXN0cnVjdCIgdGl0bGU9IkdzdEdMTWVtb3J5QWxsb2NhdG9yIj5Hc3RHTE1lbW9yeUFsbG9jYXRvcjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzIiB0aXRsZT0iR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyI+R3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHU1QtR0wtTUVNT1JZLUFMTE9DQVRPUi1OQU1FOkNBUFMiIHRpdGxlPSJHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9OQU1FIj5HU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9OQU1FPC9hPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Cis8cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgorICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwiPkdzdEFsbG9jYXRvcjwvYT4KKyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3I8L2E+CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEdMTWVtb3J5QWxsb2NhdG9yCisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCT0FsbG9jYXRvciI+R3N0R0xNZW1vcnlQQk9BbGxvY2F0b3I8L2E+Cis8L3ByZT4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+R3N0R0xNZW1vcnkgaXMgYSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT4gc3ViY2xhc3MgcHJvdmlkaW5nIHN1cHBvcnQgZm9yIHRoZSBtYXBwaW5nIG9mCitPcGVuR0wgdGV4dHVyZXMuICA8L3A+Cis8cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPiBpcyBjcmVhdGVkIG9yIHdyYXBwZWQgdGhyb3VnaCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LWFsbG9jIiB0aXRsZT0iZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MoKTwvY29kZT48L2E+Cit3aXRoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPi48L3A+Cis8cD5EYXRhIGlzIHVwbG9hZGVkIG9yIGRvd25sb2FkZWQgZnJvbSB0aGUgR1BVIGFzIGlzIG5lY2Vzc2FyeS48L3A+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5LmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1WSURFTzpDQVBTIj48L2E+PGgzPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPICgxICZsdDsmbHQ7IDMpCis8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWNvcHktZGF0YSI+PC9hPjxoMz5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpzcmNfdmlkPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpkZXN0X3ZpZDwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5Db3B5IGFuZCBzZXQgYW55IGR5bmFtaWNhbGx5IGFsbG9jYXRlZCByZXNvdXJjZXMgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmRlc3RfdmlkPC9jb2RlPjwvZW0+CisuICBJbnRlbmRlZAorZm9yIHN1YmNsYXNzIHVzYWdlIG9ubHkgdG8gY2hhaW4gdXAgYXQgdGhlIGVuZCBvZiBhIHN1YmNsYXNzIGNvcHkgZnVuY3Rpb24uPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNyY192aWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5zb3VyY2UgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IHRvIGNvcHkgZnJvbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5kZXN0X3ZpZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmRlc3RpbmF0aW9uIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiB0byBjb3B5IGludG88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWZyZWUtZGF0YSI+PC9hPjxoMz5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpwYXJhbXM8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+VW5zZXQgYW5kIGZyZWUgYW55IGR5bmFtaWNhbGx5IGFsbG9jYXRlZCByZXNvdXJjZXMuICBJbnRlbmRlZCBmb3Igc3ViY2xhc3MKK3VzYWdlIG9ubHkgdG8gY2hhaW4gdXAgYXQgdGhlIGVuZCBvZiBhIHN1YmNsYXNzIGZyZWUgZnVuY3Rpb24uPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJhbXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWluaXQtZnVsbCI+PC9hPjxoMz5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfaW5pdF9mdWxswqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19pbml0X2Z1bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqcGFyYW1zPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzaXplIj48c3BhbiBjbGFzcz0idHlwZSI+Z3NpemU8L3NwYW4+PC9hPiBzdHJ1Y3Rfc2l6ZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gYWxsb2NfZmxhZ3M8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMiIHRpdGxlPSJHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuY8KgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYzwvc3Bhbj48L2E+IGNvcHk8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMiIHRpdGxlPSJHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuY8KgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYzwvc3Bhbj48L2E+IGZyZWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKmFsbG9jX3BhcmFtczwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+ICp2X2luZm88L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHBsYW5lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+ICp2YWxpZ248L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IHRhcmdldDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gd3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBnbF9oYW5kbGU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHVzZXJfZGF0YTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4gbm90aWZ5PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkludGVuZGVkIGZvciBzdWJjbGFzcyB1c2FnZTwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJhbXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiB0byBpbml0aWFsaXplPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnN0cnVjdF9zaXplPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHNpemUgb2YgdGhlIHN0cnVjdCBpbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cGFyYW1zPC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWxsb2NfZmxhZ3M8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5zb21lIGFsbG9jYXRpb24gZmxhZ3M8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29weTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgY29weSBmdW5jdGlvbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5mcmVlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSBmcmVlIGZ1bmN0aW9uPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFsbG9jX3BhcmFtczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndyYXBwZWRfZGF0YTwvY29kZT48L2VtPgorLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52X2luZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gZm9yIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53cmFwcGVkX2RhdGE8L2NvZGU+PC9lbT4KKzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGFuZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSB2aWRlbyBwbGFuZSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+CityZXByZXNlbnRzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhbGlnbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhbnkgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+IGFwcGxpZWQgdG8gc3ltZW0gbWFwcGluZ3Mgb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndyYXBwZWRfZGF0YTwvY29kZT48L2VtPgorLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50YXJnZXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD53cmFwcGVkX2RhdGE8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdGhlIG9wdGlvbmFsIGRhdGEgcG9pbnRlciB0byB3cmFwLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5nbF9oYW5kbGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgb3B0aW9uYWwgT3BlbkdMIGhhbmRsZSB0byB3cmFwIG9yIDA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXNlcl9kYXRhPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHVzZXIgZGF0YSB0byBjYWxsIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5ub3RpZnk8L2NvZGU+PC9lbT4KK3dpdGguIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm5vdGlmeTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4uIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBpbml0aWFsaXplcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cGFyYW1zPC9jb2RlPjwvZW0+Cit3aXRoIHRoZSBwYXJhbWV0ZXJzIHNwZWNpZmllZDwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtbmV3Ij48L2E+PGgzPmdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXfCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+wqAqCitnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqYWxsb2NfcGFyYW1zPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+ICp2X2luZm88L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBwbGFuZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gKnZhbGlnbjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IHRhcmdldDwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjYuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWxsb2NfcGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+CisuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZfaW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndyYXBwZWRfZGF0YTwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYW5lPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHZpZGVvIHBsYW5lIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53cmFwcGVkX2RhdGE8L2NvZGU+PC9lbT4KK3JlcHJlc2VudHM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmFsaWduPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGFueSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gYXBwbGllZCB0byBzeW1lbSBtYXBwaW5ncyBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+CisuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRhcmdldDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguNi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgbmV3IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiBmb3IgYWxsb2NhdGluZyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPidzPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1uZXctd3JhcHBlZC1kYXRhIj48L2E+PGgzPmdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX2RhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqYWxsb2NfcGFyYW1zPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gKnZfaW5mbzwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gcGxhbmU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gKnZhbGlnbjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4gdGFyZ2V0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiB3cmFwcGVkX2RhdGE8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHVzZXJfZGF0YTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4gbm90aWZ5PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguNy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hbGxvY19wYXJhbXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gZm9yIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53cmFwcGVkX2RhdGE8L2NvZGU+PC9lbT4KKy4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dl9pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+IGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxhbmU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgdmlkZW8gcGxhbmUgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndyYXBwZWRfZGF0YTwvY29kZT48L2VtPgorcmVwcmVzZW50czwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52YWxpZ248L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gYW55IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvQWxpZ25tZW50Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9BbGlnbm1lbnQ8L3NwYW4+PC9hPiBhcHBsaWVkIHRvIHN5bWVtIG1hcHBpbmdzIG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53cmFwcGVkX2RhdGE8L2NvZGU+PC9lbT4KKy4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGFyZ2V0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4gZm9yIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53cmFwcGVkX2RhdGE8L2NvZGU+PC9lbT4KKzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD53cmFwcGVkX2RhdGE8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgZGF0YSBwb2ludGVyIHRvIHdyYXA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXNlcl9kYXRhPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHVzZXIgZGF0YSB0byBjYWxsIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5ub3RpZnk8L2NvZGU+PC9lbT4KK3dpdGguIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm5vdGlmeTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4uIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjcuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gZm9yIHdyYXBwaW5nIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53cmFwcGVkX2RhdGE8L2NvZGU+PC9lbT4KKzwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtbmV3LXdyYXBwZWQtdGV4dHVyZSI+PC9hPjxoMz5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfdGV4dHVyZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT7CoCoKK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF90ZXh0dXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKmFsbG9jX3BhcmFtczwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+ICp2X2luZm88L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHBsYW5lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+ICp2YWxpZ248L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IHRhcmdldDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gdGV4X2lkPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiB1c2VyX2RhdGE8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURhdGFzZXRzLmh0bWwjR0Rlc3Ryb3lOb3RpZnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRGVzdHJveU5vdGlmeTwvc3Bhbj48L2E+IG5vdGlmeTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjguNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWxsb2NfcGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+CisuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZfaW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYW5lPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHZpZGVvIHBsYW5lIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KK3JlcHJlc2VudHM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmFsaWduPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGFueSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gYXBwbGllZCB0byBzeW1lbSBtYXBwaW5ncyBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+CisuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRhcmdldDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGV4X2lkPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIEdMIHRleHR1cmUgdG8gd3JhcDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD51c2VyX2RhdGE8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdXNlciBkYXRhIHRvIGNhbGwgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm5vdGlmeTwvY29kZT48L2VtPgord2l0aC4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bm90aWZ5PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1EYXRhc2V0cy5odG1sI0dEZXN0cm95Tm90aWZ5Ij48c3BhbiBjbGFzcz0idHlwZSI+R0Rlc3Ryb3lOb3RpZnk8L3NwYW4+PC9hPi4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguOC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgbmV3IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiBmb3Igd3JhcHBpbmcgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgorPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktYWxsb2NhdG9yLWdldC1kZWZhdWx0Ij48L2E+PGgzPmdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3IiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xNZW1vcnlBbGxvY2F0b3I8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjkuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC45LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIGRlZmF1bHQgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeUFsbG9jYXRvcjwvc3Bhbj48L2E+IHN1cHBvcnRlZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29udGV4dDwvY29kZT48L2VtPgorPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktaW5pdC1vbmNlIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfaW5pdF9vbmNlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX21lbW9yeV9pbml0X29uY2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+dm9pZDwvc3Bhbj48L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+SW5pdGlhbGl6ZXMgdGhlIEdMIEJhc2UgVGV4dHVyZSBhbGxvY2F0b3IuIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uCittdWx0aXBsZSB0aW1lcy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBHc3RHTE1lbW9yeSBvcGVyYXRpb24uPC9wPgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS40PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LWluaXQiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9pbml0wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX21lbW9yeV9pbml0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gKm1lbTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdG9yPC9zcGFuPjwvYT4gKmFsbG9jYXRvcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT4gKnBhcmVudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiB0YXJnZXQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpwYXJhbXM8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gcGxhbmU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gKnZhbGlnbjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gdXNlcl9kYXRhPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1EYXRhc2V0cy5odG1sI0dEZXN0cm95Tm90aWZ5Ij48c3BhbiBjbGFzcz0idHlwZSI+R0Rlc3Ryb3lOb3RpZnk8L3NwYW4+PC9hPiBub3RpZnk8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+SW5pdGlhbGl6ZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm1lbTwvY29kZT48L2VtPgorIHdpdGggdGhlIHJlcXVpcmVkIHBhcmFtZXRlcnMuICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aW5mbzwvY29kZT48L2VtPgorIGlzIGFzc3VtZWQgdG8gaGF2ZQorYWxyZWFkeSBoYXZlIGJlZW4gbW9kaWZpZWQgd2l0aCA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNnc3QtdmlkZW8taW5mby1hbGlnbiI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfdmlkZW9faW5mb19hbGlnbigpPC9jb2RlPjwvYT4uPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4xMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+IHRvIGluaXRpYWxpemU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWxsb2NhdG9yPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdG9yPC9zcGFuPjwvYT4gdG8gaW5pdGlhbGl6ZSB3aXRoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBhcmVudDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiB0aGUgcGFyZW50IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT4gdG8gaW5pdGlhbGl6ZSB3aXRoLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+IHRvIGluaXRpYWxpemUgd2l0aDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50YXJnZXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiBmb3IgdGhpcyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJhbXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdGhlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9jb2RlPjwvZW0+Cit0byBpbml0aWFsaXplIHdpdGguIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gZm9yIHRoaXMgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxhbmU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgcGxhbmUgbnVtYmVyIChzdGFydGluZyBmcm9tIDApIGZvciB0aGlzIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhbGlnbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBvcHRpb25hbCA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gcGFyYW1ldGVycy4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bm90aWZ5PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1EYXRhc2V0cy5odG1sI0dEZXN0cm95Tm90aWZ5Ij48c3BhbiBjbGFzcz0idHlwZSI+R0Rlc3Ryb3lOb3RpZnk8L3NwYW4+PC9hPi4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXNlcl9kYXRhPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHVzZXIgZGF0YSB0byBjYWxsIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5ub3RpZnk8L2NvZGU+PC9lbT4KK3dpdGguIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1pcy1nbC1tZW1vcnkiPjwvYT48aDM+Z3N0X2lzX2dsX21lbW9yecKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfaXNfZ2xfbWVtb3J5ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPiAqbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMTIuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm1lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMTIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB3aGV0aGVyIHRoZSBtZW1vcnkgYXQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm1lbTwvY29kZT48L2VtPgoraXMgYSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS40PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LWNvcHktaW50byI+PC9hPjxoMz5nc3RfZ2xfbWVtb3J5X2NvcHlfaW50b8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xfbWVtb3J5X2NvcHlfaW50byAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+ICpnbF9tZW08L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gdGV4X2lkPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IHRhcmdldDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4gdGV4X3R5cGU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHdpZHRoPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBoZWlnaHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Q29waWVzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5nbF9tZW08L2NvZGU+PC9lbT4KKyBpbnRvIHRoZSB0ZXh0dXJlIHNwZWNmaWZpZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgorLiAgVGhlIGZvcm1hdCBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+CisKK2lzIHNwZWNpZmllZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X3R5cGU8L2NvZGU+PC9lbT4KKywgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndpZHRoPC9jb2RlPjwvZW0+CisgYW5kIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5oZWlnaHQ8L2NvZGU+PC9lbT4KKy48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjEzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmdsX21lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGV4X2lkPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+T3BlbkdMIHRleHR1cmUgaWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGFyZ2V0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGV4X3R5cGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+d2lkdGg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD53aWR0aCBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aGVpZ2h0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+aGVpZ2h0IG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KKzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4xMy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IFdoZXRoZXIgdGhlIGNvcHkgc3VjZWVkZWQ8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1jb3B5LXRleGltYWdlIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfY29weV90ZXhpbWFnZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xfbWVtb3J5X2NvcHlfdGV4aW1hZ2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPiAqc3JjPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiB0ZXhfaWQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IG91dF90YXJnZXQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9HTFRleHR1cmVUeXBlPC9zcGFuPiBvdXRfdGV4X3R5cGU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB3aWR0aDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGhlaWdodDwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktcmVhZC1waXhlbHMiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9yZWFkX3BpeGVsc8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xfbWVtb3J5X3JlYWRfcGl4ZWxzICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gKmdsX21lbTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHJlYWRfcG9pbnRlcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5SZWFkcyB0aGUgdGV4dHVyZSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPiBpbnRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5yZWFkX3BvaW50ZXI8L2NvZGU+PC9lbT4KKyBpZiBubyBidWZmZXIgaXMgYm91bmQKK3RvIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HTF9QSVhFTF9QQUNLX0JVRkZFUjwvY29kZT4uICBPdGhlcndpc2UgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnJlYWRfcG9pbnRlcjwvY29kZT48L2VtPgorIGlzIHRoZSBieXRlIG9mZnNldCBpbnRvCit0aGUgY3VycmVudGx5IGJvdW5kIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HTF9QSVhFTF9QQUNLX0JVRkZFUjwvY29kZT4gYnVmZmVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YKK2dsUmVhZFBpeGVscy4gIFNlZSB0aGUgT3BlbkdMIHNwZWNpZmljYXRpb24gZm9yIGdsUmVhZFBpeGVscyBmb3IgbW9yZQorZGV0YWlscy48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjE1LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmdsX21lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cmVhZF9wb2ludGVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGRhdGEgcG9pbnRlciB0byBwYXNzIHRvIGdsUmVhZFBpeGVsczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4xNS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHdoZXRoZXIgdGhlcmVhZCBvcGVyYXRpb24gc3VjY2VlZGVkPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktdGV4c3ViaW1hZ2UiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV90ZXhzdWJpbWFnZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9tZW1vcnlfdGV4c3ViaW1hZ2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPiAqZ2xfbWVtPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gcmVhZF9wb2ludGVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlNlZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXJlYWQtcGl4ZWxzIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9yZWFkX3BpeGVsc8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX21lbW9yeV9yZWFkX3BpeGVscygpPC9jb2RlPjwvYT4gZm9yIHdoYXQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnJlYWRfcG9pbnRlcjwvY29kZT48L2VtPgorIHNpZ25pZmllcy48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjE2LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmdsX21lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cmVhZF9wb2ludGVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGRhdGEgcG9pbnRlciB0byBwYXNzIHRvIGdsVGV4U3ViSW1hZ2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS1oZWlnaHQiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9oZWlnaHTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KK2dzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaGVpZ2h0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gKmdsX21lbTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjE3LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5nbF9tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4xNy41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSB0ZXh0dXJlIGhlaWdodCBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Z2xfbWVtPC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS1pZCI+PC9hPjxoMz5nc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2lkwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50PC9zcGFuPjwvYT4KK2dzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaWQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPiAqZ2xfbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMTguNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmdsX21lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjE4LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIE9wZW5HTCB0ZXh0dXJlIGhhbmRsZSBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Z2xfbWVtPC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS10YXJnZXQiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90YXJnZXTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPgorZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90YXJnZXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPiAqZ2xfbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMTkuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmdsX21lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjE5LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4gb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmdsX21lbTwvY29kZT48L2VtPgorPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtdHlwZSI+PC9hPjxoMz5nc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3R5cGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4KK2dzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdHlwZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+ICpnbF9tZW08L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4yMC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Z2xfbWVtPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMjAuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgPHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4gb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmdsX21lbTwvY29kZT48L2VtPgorPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtd2lkdGgiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV93aWR0aMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV93aWR0aCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+ICpnbF9tZW08L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4yMS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Z2xfbWVtPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMjEuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgdGV4dHVyZSB3aWR0aCBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Z2xfbWVtPC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1zZXR1cC1idWZmZXIiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXLCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5QWxsb2NhdG9yPC9zcGFuPjwvYT4gKmFsbG9jYXRvcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXI8L3NwYW4+PC9hPiAqYnVmZmVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKnBhcmFtczwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjIyLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFsbG9jYXRvcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+R3N0R0xNZW1vcnlBbGxvY2F0b3I8L2NvZGU+PC9lbT4KK3RvIGFsbG9jYXRlIGZyb208L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YnVmZmVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+IHRvIHNldHVwPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBhcmFtczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gdG8gYWxsb2NhdGUgd2l0aDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4yMi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHdoZXRoZXIgdGhlIGJ1ZmZlciB3YXMgY29ycmVjdGx5IHNldHVwPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1HTC1NRU1PUlktVklERU8tRk9STUFUUy1TVFI6Q0FQUyI+PC9hPjxoMz5HU1RfR0xfTUVNT1JZX1ZJREVPX0ZPUk1BVFNfU1RSPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lICAgICAgICAgICAgIEdTVF9HTF9NRU1PUllfVklERU9fRk9STUFUU19TVFI8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjwvYT48aDM+c3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgeworICBHc3RHTEFsbG9jYXRpb25QYXJhbXMgIHBhcmVudDsKKworICBHc3RWaWRlb0luZm8gICAgICAgICAgKnZfaW5mbzsKKyAgZ3VpbnQgICAgICAgICAgICAgICAgICBwbGFuZTsKKyAgR3N0VmlkZW9BbGlnbm1lbnQgICAgICp2YWxpZ247CisgIEdzdEdMVGV4dHVyZVRhcmdldCAgICAgdGFyZ2V0OworfTsKKzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTE1lbW9yeUFsbG9jYXRvci1zdHJ1Y3QiPjwvYT48aDM+R3N0R0xNZW1vcnlBbGxvY2F0b3I8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RHTE1lbW9yeUFsbG9jYXRvciBHc3RHTE1lbW9yeUFsbG9jYXRvcjs8L3ByZT4KKzxwPk9wYXF1ZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5QWxsb2NhdG9yPC9zcGFuPjwvYT4gc3RydWN0PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzIj48L2E+PGgzPkdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3M8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IHsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgICAgICAgICAgICAgcGFyZW50X2NsYXNzOworCisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uICAgICAgIG1hcDsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uICAgICAgY29weTsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbiAgICAgdW5tYXA7Cit9IEdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3M7Cis8L3ByZT4KKzxwPlRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzIiB0aXRsZT0iR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3M8L3NwYW4+PC9hPiBvbmx5IGNvbnRhaW5zIHByaXZhdGUgZGF0YTwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xNZW1vcnkiPjwvYT48aDM+R3N0R0xNZW1vcnk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IHsKKyAgR3N0R0xCYXNlTWVtb3J5ICAgICAgICAgICBtZW07CisKKyAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICB0ZXhfaWQ7CisgIEdzdEdMVGV4dHVyZVRhcmdldCAgICAgICAgdGV4X3RhcmdldDsKKyAgR3N0VmlkZW9HTFRleHR1cmVUeXBlICAgICB0ZXhfdHlwZTsKKyAgR3N0VmlkZW9JbmZvICAgICAgICAgICAgICBpbmZvOworICBHc3RWaWRlb0FsaWdubWVudCAgICAgICAgIHZhbGlnbjsKKyAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICBwbGFuZTsKKyAgZ2Zsb2F0ICAgICAgICAgICAgICAgICAgICB0ZXhfc2NhbGluZ1syXTsKK30gR3N0R0xNZW1vcnk7Cis8L3ByZT4KKzxwPlJlcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgYSBHTCB0ZXh0dXJlPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOS42LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5Lm1lbSI+PC9hPm1lbTwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHBhcmVudCBvYmplY3Q8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTE1lbW9yeS50ZXgtaWQiPjwvYT50ZXhfaWQ8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBHTCB0ZXh0dXJlIGlkIGZvciB0aGlzIG1lbW9yeTwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5LnRleC10YXJnZXQiPjwvYT50ZXhfdGFyZ2V0PC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgR0wgdGV4dHVyZSB0YXJnZXQgZm9yIHRoaXMgbWVtb3J5PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5LnRleC10eXBlIj48L2E+dGV4X3R5cGU8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSB0ZXh0dXJlIHR5cGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xNZW1vcnkuaW5mbyI+PC9hPmluZm88L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSB0ZXh0dXJlJ3MgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5LnZhbGlnbiI+PC9hPnZhbGlnbjwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+ZGF0YSBhbGlnbm1lbnQgZm9yIHN5c3RlbSBtZW1vcnkgbWFwcGluZzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5LnBsYW5lIj48L2E+cGxhbmU8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmRhdGEgcGxhbmUgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmluZm88L2NvZGU+PC9lbT4KKzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xNZW1vcnkudGV4LXNjYWxpbmciPjwvYT50ZXhfc2NhbGluZzwvY29kZT48L2VtPlsyXTs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+R0wgc2hhZGVyIHNjYWxpbmcgcGFyYW1ldGVycyBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnZhbGlnbjwvY29kZT48L2VtPgorYW5kL29yIHdpZHRoL2hlaWdodDwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMLU1FTU9SWS1BTExPQ0FUT1ItTkFNRTpDQVBTIj48L2E+PGgzPkdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUU8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRSAgICJHTE1lbW9yeSIKKzwvcHJlPgorPHA+VGhlIG5hbWUgb2YgdGhlIEdMIG1lbW9yeSBhbGxvY2F0b3I8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPiwgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0b3I8L3NwYW4+PC9hPiwgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXJQb29sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCdWZmZXJQb29sPC9zcGFuPjwvYT48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iZm9vdGVyIj4KKzxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWZkZWRhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sCkBAIC0wLDAgKzEsNDE5IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8dGl0bGU+R3N0R0xTTDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KKzxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KKzxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSIuaHRtbCIgdGl0bGU9IkdzdEdMU0xTdGFnZSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgorPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KKzx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgorPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj4KKzwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9Ii5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzwvdHI+PC90YWJsZT4KKzxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLnRvcF9vZl9wYWdlIj48L2E+R3N0R0xTTDwvc3Bhbj48L2gyPgorPHA+R3N0R0xTTCDigJQgaGVscGVycyBmb3IgZGVhbGluZyB3aXRoIE9wZW5HTCBzaGFkZXJzPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KKzwvdHI+PC90YWJsZT48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KKzxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1FUlJPUjpDQVBTIiB0aXRsZT0iR1NUX0dMU0xfRVJST1IiPkdTVF9HTFNMX0VSUk9SPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItUXVhcmtzLmh0bWwjR1F1YXJrIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdRdWFyazwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtZXJyb3ItcXVhcmsiIHRpdGxlPSJnc3RfZ2xzbF9lcnJvcl9xdWFya8KgKCkiPmdzdF9nbHNsX2Vycm9yX3F1YXJrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMUHJvZmlsZSIgdGl0bGU9ImVudW0gR3N0R0xTTFByb2ZpbGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xTTFByb2ZpbGU8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXByb2ZpbGUtZnJvbS1zdHJpbmciIHRpdGxlPSJnc3RfZ2xzbF9wcm9maWxlX2Zyb21fc3RyaW5nwqAoKSI+Z3N0X2dsc2xfcHJvZmlsZV9mcm9tX3N0cmluZzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXByb2ZpbGUtdG8tc3RyaW5nIiB0aXRsZT0iZ3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmfCoCgpIj5nc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFZlcnNpb24iIHRpdGxlPSJlbnVtIEdzdEdMU0xWZXJzaW9uIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU0xWZXJzaW9uPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC12ZXJzaW9uLWZyb20tc3RyaW5nIiB0aXRsZT0iZ3N0X2dsc2xfdmVyc2lvbl9mcm9tX3N0cmluZ8KgKCkiPmdzdF9nbHNsX3ZlcnNpb25fZnJvbV9zdHJpbmc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC12ZXJzaW9uLXRvLXN0cmluZyIgdGl0bGU9ImdzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nwqAoKSI+Z3N0X2dsc2xfdmVyc2lvbl90b19zdHJpbmc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXZlcnNpb24tcHJvZmlsZS1mcm9tLXN0cmluZyIgdGl0bGU9ImdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV9mcm9tX3N0cmluZ8KgKCkiPmdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV9mcm9tX3N0cmluZzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi1wcm9maWxlLXRvLXN0cmluZyIgdGl0bGU9ImdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV90b19zdHJpbmfCoCgpIj5nc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfdG9fc3RyaW5nPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC1zdHJpbmctZ2V0LXZlcnNpb24tcHJvZmlsZSIgdGl0bGU9ImdzdF9nbHNsX3N0cmluZ19nZXRfdmVyc2lvbl9wcm9maWxlwqAoKSI+Z3N0X2dsc2xfc3RyaW5nX2dldF92ZXJzaW9uX3Byb2ZpbGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbC1jb250ZXh0LXN1cHBvcnRzLWdsc2wtcHJvZmlsZS12ZXJzaW9uIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfc3VwcG9ydHNfZ2xzbF9wcm9maWxlX3ZlcnNpb27CoCgpIj5nc3RfZ2xfY29udGV4dF9zdXBwb3J0c19nbHNsX3Byb2ZpbGVfdmVyc2lvbjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFZlcnNpb24iIHRpdGxlPSJlbnVtIEdzdEdMU0xWZXJzaW9uIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU0xWZXJzaW9uPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2wtdmVyc2lvbi10by1nbHNsLXZlcnNpb24iIHRpdGxlPSJnc3RfZ2xfdmVyc2lvbl90b19nbHNsX3ZlcnNpb27CoCgpIj5nc3RfZ2xfdmVyc2lvbl90b19nbHNsX3ZlcnNpb248L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Cis8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5lbnVtPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMRXJyb3IiIHRpdGxlPSJlbnVtIEdzdEdMU0xFcnJvciI+R3N0R0xTTEVycm9yPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5lbnVtPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMUHJvZmlsZSIgdGl0bGU9ImVudW0gR3N0R0xTTFByb2ZpbGUiPkdzdEdMU0xQcm9maWxlPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5lbnVtPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMVmVyc2lvbiIgdGl0bGU9ImVudW0gR3N0R0xTTFZlcnNpb24iPkdzdEdMU0xWZXJzaW9uPC9hPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtR0xTTC1FUlJPUjpDQVBTIj48L2E+PGgzPkdTVF9HTFNMX0VSUk9SPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTFNMX0VSUk9SIChnc3RfZ2xzbF9lcnJvcl9xdWFyayAoKSkKKzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2xzbC1lcnJvci1xdWFyayI+PC9hPjxoMz5nc3RfZ2xzbF9lcnJvcl9xdWFya8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItUXVhcmtzLmh0bWwjR1F1YXJrIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdRdWFyazwvc3Bhbj48L2E+Citnc3RfZ2xzbF9lcnJvcl9xdWFyayAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj52b2lkPC9zcGFuPjwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbHNsLXByb2ZpbGUtZnJvbS1zdHJpbmciPjwvYT48aDM+Z3N0X2dsc2xfcHJvZmlsZV9mcm9tX3N0cmluZ8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFByb2ZpbGUiIHRpdGxlPSJlbnVtIEdzdEdMU0xQcm9maWxlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU0xQcm9maWxlPC9zcGFuPjwvYT4KK2dzdF9nbHNsX3Byb2ZpbGVfZnJvbV9zdHJpbmcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpzdHJpbmc8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2xzbC1wcm9maWxlLXRvLXN0cmluZyI+PC9hPjxoMz5nc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZ8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFByb2ZpbGUiIHRpdGxlPSJlbnVtIEdzdEdMU0xQcm9maWxlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFByb2ZpbGU8L3NwYW4+PC9hPiBwcm9maWxlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsc2wtdmVyc2lvbi1mcm9tLXN0cmluZyI+PC9hPjxoMz5nc3RfZ2xzbF92ZXJzaW9uX2Zyb21fc3RyaW5nwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMVmVyc2lvbiIgdGl0bGU9ImVudW0gR3N0R0xTTFZlcnNpb24iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xTTFZlcnNpb248L3NwYW4+PC9hPgorZ3N0X2dsc2xfdmVyc2lvbl9mcm9tX3N0cmluZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKnN0cmluZzwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbHNsLXZlcnNpb24tdG8tc3RyaW5nIj48L2E+PGgzPmdzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKK2dzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMVmVyc2lvbiIgdGl0bGU9ImVudW0gR3N0R0xTTFZlcnNpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMVmVyc2lvbjwvc3Bhbj48L2E+IHZlcnNpb248L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2xzbC12ZXJzaW9uLXByb2ZpbGUtZnJvbS1zdHJpbmciPjwvYT48aDM+Z3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX2Zyb21fc3RyaW5nwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV9mcm9tX3N0cmluZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKnN0cmluZzwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFZlcnNpb24iIHRpdGxlPSJlbnVtIEdzdEdMU0xWZXJzaW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFZlcnNpb248L3NwYW4+PC9hPiAqdmVyc2lvbjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFByb2ZpbGUiIHRpdGxlPSJlbnVtIEdzdEdMU0xQcm9maWxlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFByb2ZpbGU8L3NwYW4+PC9hPiAqcHJvZmlsZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbHNsLXZlcnNpb24tcHJvZmlsZS10by1zdHJpbmciPjwvYT48aDM+Z3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX3RvX3N0cmluZ8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfdG9fc3RyaW5nICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMVmVyc2lvbiIgdGl0bGU9ImVudW0gR3N0R0xTTFZlcnNpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMVmVyc2lvbjwvc3Bhbj48L2E+IHZlcnNpb248L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMUHJvZmlsZSIgdGl0bGU9ImVudW0gR3N0R0xTTFByb2ZpbGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMUHJvZmlsZTwvc3Bhbj48L2E+IHByb2ZpbGU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2xzbC1zdHJpbmctZ2V0LXZlcnNpb24tcHJvZmlsZSI+PC9hPjxoMz5nc3RfZ2xzbF9zdHJpbmdfZ2V0X3ZlcnNpb25fcHJvZmlsZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xzbF9zdHJpbmdfZ2V0X3ZlcnNpb25fcHJvZmlsZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKnM8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFZlcnNpb24iIHRpdGxlPSJlbnVtIEdzdEdMU0xWZXJzaW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFZlcnNpb248L3NwYW4+PC9hPiAqdmVyc2lvbjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMUHJvZmlsZSIgdGl0bGU9ImVudW0gR3N0R0xTTFByb2ZpbGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMUHJvZmlsZTwvc3Bhbj48L2E+ICpwcm9maWxlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWNvbnRleHQtc3VwcG9ydHMtZ2xzbC1wcm9maWxlLXZlcnNpb24iPjwvYT48aDM+Z3N0X2dsX2NvbnRleHRfc3VwcG9ydHNfZ2xzbF9wcm9maWxlX3ZlcnNpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX2NvbnRleHRfc3VwcG9ydHNfZ2xzbF9wcm9maWxlX3ZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMVmVyc2lvbiIgdGl0bGU9ImVudW0gR3N0R0xTTFZlcnNpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMVmVyc2lvbjwvc3Bhbj48L2E+IHZlcnNpb248L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xQcm9maWxlIiB0aXRsZT0iZW51bSBHc3RHTFNMUHJvZmlsZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xQcm9maWxlPC9zcGFuPjwvYT4gcHJvZmlsZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC12ZXJzaW9uLXRvLWdsc2wtdmVyc2lvbiI+PC9hPjxoMz5nc3RfZ2xfdmVyc2lvbl90b19nbHNsX3ZlcnNpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xWZXJzaW9uIiB0aXRsZT0iZW51bSBHc3RHTFNMVmVyc2lvbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFNMVmVyc2lvbjwvc3Bhbj48L2E+Citnc3RfZ2xfdmVyc2lvbl90b19nbHNsX3ZlcnNpb24gKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHc3RHTEFQSSIgdGl0bGU9ImVudW0gR3N0R0xBUEkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFQSTwvc3Bhbj48L2E+IGdsX2FwaTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IG1hajwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IG1pbjwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xTTEVycm9yIj48L2E+PGgzPmVudW0gR3N0R0xTTEVycm9yPC9oMz4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIxLjcuMi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgorPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLUVSUk9SLUNPTVBJTEU6Q0FQUyI+PC9hPkdTVF9HTFNMX0VSUk9SX0NPTVBJTEU8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtRVJST1ItTElOSzpDQVBTIj48L2E+R1NUX0dMU0xfRVJST1JfTElOSzwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1FUlJPUi1QUk9HUkFNOkNBUFMiPjwvYT5HU1RfR0xTTF9FUlJPUl9QUk9HUkFNPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTFNMUHJvZmlsZSI+PC9hPjxoMz5lbnVtIEdzdEdMU0xQcm9maWxlPC9oMz4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIxLjcuMy4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgorPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVBST0ZJTEUtTk9ORTpDQVBTIj48L2E+R1NUX0dMU0xfUFJPRklMRV9OT05FPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVBST0ZJTEUtRVM6Q0FQUyI+PC9hPkdTVF9HTFNMX1BST0ZJTEVfRVM8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtUFJPRklMRS1DT1JFOkNBUFMiPjwvYT5HU1RfR0xTTF9QUk9GSUxFX0NPUkU8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtUFJPRklMRS1DT01QQVRJQklMSVRZOkNBUFMiPjwvYT5HU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFk8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtUFJPRklMRS1BTlk6Q0FQUyI+PC9hPkdTVF9HTFNMX1BST0ZJTEVfQU5ZPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTFNMVmVyc2lvbiI+PC9hPjxoMz5lbnVtIEdzdEdMU0xWZXJzaW9uPC9oMz4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIxLjcuNC4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgorPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVZFUlNJT04tTk9ORTpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl9OT05FPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVZFUlNJT04tMTAwOkNBUFMiPjwvYT5HU1RfR0xTTF9WRVJTSU9OXzEwMDwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLTExMDpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl8xMTA8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtVkVSU0lPTi0xMjA6Q0FQUyI+PC9hPkdTVF9HTFNMX1ZFUlNJT05fMTIwPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVZFUlNJT04tMTMwOkNBUFMiPjwvYT5HU1RfR0xTTF9WRVJTSU9OXzEzMDwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLTE0MDpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl8xNDA8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtVkVSU0lPTi0xNTA6Q0FQUyI+PC9hPkdTVF9HTFNMX1ZFUlNJT05fMTUwPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVZFUlNJT04tMzAwOkNBUFMiPjwvYT5HU1RfR0xTTF9WRVJTSU9OXzMwMDwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLTMxMDpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl8zMTA8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtVkVSU0lPTi0zMjA6Q0FQUyI+PC9hPkdTVF9HTFNMX1ZFUlNJT05fMzIwPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVZFUlNJT04tMzMwOkNBUFMiPjwvYT5HU1RfR0xTTF9WRVJTSU9OXzMzMDwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLTQwMDpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl80MDA8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtVkVSU0lPTi00MTA6Q0FQUyI+PC9hPkdTVF9HTFNMX1ZFUlNJT05fNDEwPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVZFUlNJT04tNDIwOkNBUFMiPjwvYT5HU1RfR0xTTF9WRVJTSU9OXzQyMDwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLTQzMDpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl80MzA8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtVkVSU0lPTi00NDA6Q0FQUyI+PC9hPkdTVF9HTFNMX1ZFUlNJT05fNDQwPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVZFUlNJT04tNDUwOkNBUFMiPjwvYT5HU1RfR0xTTF9WRVJTSU9OXzQ1MDwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLUFOWTpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl9BTlk8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD48YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFN0YWdlPC9zcGFuPjwvYT4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvb3RlciI+Cis8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwKaW5kZXggZWJlNGM3Yy4uNmQ1ODZjMSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbApAQCAtMywxMCArMywxMCBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xTeW5jTWV0YTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iLmh0bWwiIHRpdGxlPSJHc3RHTFNMU3RhZ2UiPgogPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KQEAgLTE5LDcgKzE5LDcgQEAKIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9Ii5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC00OCw2ICs0OCwxNCBAQAogPC90ZD4KIDwvdHI+CiA8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNHc3RHTFN5bmNNZXRhIiB0aXRsZT0ic3RydWN0IEdzdEdMU3luY01ldGEiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xTeW5jTWV0YTwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LWJ1ZmZlci1hZGQtZ2wtc3luYy1tZXRhLWZ1bGwiIHRpdGxlPSJnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGFfZnVsbMKgKCkiPmdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YV9mdWxsPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+CiA8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1idWZmZXItZ2V0LWdsLXN5bmMtbWV0YSIgdGl0bGU9ImdzdF9idWZmZXJfZ2V0X2dsX3N5bmNfbWV0YSgpIj5nc3RfYnVmZmVyX2dldF9nbF9zeW5jX21ldGE8L2E+PHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgpAQCAtODQsMTIgKzkyLDIwIEBACiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1nbC1zeW5jLW1ldGEtd2FpdCIgdGl0bGU9ImdzdF9nbF9zeW5jX21ldGFfd2FpdMKgKCkiPmdzdF9nbF9zeW5jX21ldGFfd2FpdDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtZ2wtc3luYy1tZXRhLXdhaXQtY3B1IiB0aXRsZT0iZ3N0X2dsX3N5bmNfbWV0YV93YWl0X2NwdcKgKCkiPmdzdF9nbF9zeW5jX21ldGFfd2FpdF9jcHU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xMTksNiArMTM1LDE0IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1idWZmZXItYWRkLWdsLXN5bmMtbWV0YS1mdWxsIj48L2E+PGgzPmdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YV9mdWxswqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNHc3RHTFN5bmNNZXRhIiB0aXRsZT0ic3RydWN0IEdzdEdMU3luY01ldGEiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xTeW5jTWV0YTwvc3Bhbj48L2E+wqAqCitnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGFfZnVsbCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+ICpidWZmZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gZGF0YTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9ImdzdC1idWZmZXItZ2V0LWdsLXN5bmMtbWV0YSI+PC9hPjxoMz5nc3RfYnVmZmVyX2dldF9nbF9zeW5jX21ldGEoKTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBnc3RfYnVmZmVyX2dldF9nbF9zeW5jX21ldGEoYikgKChHc3RHTFN5bmNNZXRhKilnc3RfYnVmZmVyX2dldF9tZXRhKChiKSxHU1RfR0xfU1lOQ19NRVRBX0FQSV9UWVBFKSkKIDwvcHJlPgpAQCAtMTQ5LDEyICsxNzMsMzQgQEAKIGdzdF9nbF9zeW5jX21ldGFfd2FpdCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjR3N0R0xTeW5jTWV0YSIgdGl0bGU9InN0cnVjdCBHc3RHTFN5bmNNZXRhIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTeW5jTWV0YTwvc3Bhbj48L2E+ICpzeW5jPC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgogPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc3luYy1tZXRhLXdhaXQtY3B1Ij48L2E+PGgzPmdzdF9nbF9zeW5jX21ldGFfd2FpdF9jcHXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc3luY19tZXRhX3dhaXRfY3B1ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNHc3RHTFN5bmNNZXRhIiB0aXRsZT0ic3RydWN0IEdzdEdMU3luY01ldGEiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFN5bmNNZXRhPC9zcGFuPjwvYT4gKnN5bmM8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdzdEdMU3luY01ldGEiPjwvYT48aDM+c3RydWN0IEdzdEdMU3luY01ldGE8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RHTFN5bmNNZXRhIHsKKyAgR3N0TWV0YSBwYXJlbnQ7CisKKyAgR3N0R0xDb250ZXh0ICpjb250ZXh0OworCisgIGdwb2ludGVyICAgICAgZGF0YTsKKworICB2b2lkICgqc2V0X3N5bmMpIChHc3RHTFN5bmNNZXRhICogc3luYywgR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisgIHZvaWQgKCpzZXRfc3luY19nbCkgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKKyAgdm9pZCAoKndhaXQpIChHc3RHTFN5bmNNZXRhICogc3luYywgR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisgIHZvaWQgKCp3YWl0X2dsKSAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworICB2b2lkICgqd2FpdF9jcHUpIChHc3RHTFN5bmNNZXRhICogc3luYywgR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisgIHZvaWQgKCp3YWl0X2NwdV9nbCkgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKKyAgdm9pZCAoKmNvcHkpIChHc3RHTFN5bmNNZXRhICogc3JjLCBHc3RCdWZmZXIgKiBzYnVmZmVyLCBHc3RHTFN5bmNNZXRhICogZGVzdCwgR3N0QnVmZmVyICogZGJ1ZmZlcik7CisgIHZvaWQgKCpmcmVlKSAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworICB2b2lkICgqZnJlZV9nbCkgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKIH07CiA8L3ByZT4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dBbmRyb2lkLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0FuZHJvaWQuaHRtbAppbmRleCAwYTg1OTJiLi4yM2U0YTkxIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0FuZHJvaWQuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0FuZHJvaWQuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMV2luZG93QW5kcm9pZDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93QW5kcm9pZC5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0FuZHJvaWQub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93Q29jb2EuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93Q29jb2EuaHRtbAppbmRleCBiMWUyZTgzLi4xYjk0YTYxIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0NvY29hLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dDb2NvYS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xXaW5kb3dDb2NvYTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dBbmRyb2lkLmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvd0FuZHJvaWQiPgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dDb2NvYS5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNjAsNyArNjAsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0NvY29hLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0Rpc3BtYW54Lmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0Rpc3BtYW54Lmh0bWwKaW5kZXggMTI0MDYxNy4uNTdlMDM5OCAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dEaXNwbWFueC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93RGlzcG1hbnguaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMV2luZG93RGlzcG1hbng6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93Q29jb2EuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Q29jb2EiPgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dEaXNwbWFueC5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0Rpc3BtYW54Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dheWxhbmQuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93V2F5bGFuZC5odG1sCmluZGV4IDdiMDkzNWMuLjNlOGE1NDkgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93V2F5bGFuZC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93V2F5bGFuZC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xXaW5kb3dXYXlsYW5kOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0Rpc3BtYW54Lmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvd0Rpc3BtYW54Ij4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93V2F5bGFuZC5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dheWxhbmQub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93V2luMzIuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93V2luMzIuaHRtbAppbmRleCBlY2FhMDI5Li5iYzVhNzEwIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dpbjMyLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dXaW4zMi5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xXaW5kb3dXaW4zMjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dXYXlsYW5kLmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvd1dheWxhbmQiPgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dXaW4zMi5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNjAsNyArNjAsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dpbjMyLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dYMTEuaHRtbAppbmRleCBjYzEyZjgwLi4xNGFmYmI0IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLmh0bWwKQEAgLTMsMTEgKzMsMTEgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMV2luZG93WDExOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dpbjMyLmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvd1dpbjMyIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iY2gwNy5odG1sIiB0aXRsZT0iSW50ZXJmYWNlcyI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIgdGl0bGU9Ik9wZW5HTCBkZWJ1Z2dpbmciPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KIDwvaGVhZD4KQEAgLTIwLDcgKzIwLDcgQEAKIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dpbjMyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJjaDA3Lmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC03Niw3ICs3Niw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xMjMsNyArMTIzLDcgQEAKIGdzdF9nbF93aW5kb3dfeDExX3VudHJhcF94X2Vycm9ycyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj52b2lkPC9zcGFuPjwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5SZW1vdmVzIHRoZSBYIGVycm9yIHRyYXAgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgc3RhdHVzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjI5LjYuNS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMzEuNi41LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gdGhlIHRyYXBwZWQgZXJyb3IgY29kZSwgb3IgMCBmb3Igc3VjY2VzczwvcD4KIDwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sCmluZGV4IDZjMGZiOWMuLjA4NTliZTYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0SW5zZXJ0YmluOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9InRvb2xzLmh0bWwiIHRpdGxlPSJVc2VmdWwgZWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJ0b29scy5odG1sIiB0aXRsZT0iVXNlZnVsIGVsZW1lbnRzIj4KQEAgLTM2LDcgKzM2LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtMTAzLDcgKzEwMyw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5zaWduYWxzIj48L2E+PGgyPlNpZ25hbHM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InNpZ25hbHNfcmV0dXJuIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic2lnbmFsc19uYW1lIj4KQEAgLTE0MCw3ICsxNDAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RJbnNlcnRCaW4iPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4ub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTIwMCw3ICsyMDAsNyBAQAogb3BlcmF0aW9uIGlzIHJlcXVlc3RlZC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNi4yLjEwLjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIzOSw3ICsyMzksNyBAQAogPHA+Q3JlYXRlcyBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0SW5zZXJ0YmluLmh0bWwjR3N0SW5zZXJ0QmluIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0SW5zZXJ0QmluPC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNi4yLjEwLjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI3MSw3ICsyNzEsNyBAQAogPHA+U2FtZSBhcyB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sI0dzdEluc2VydEJpbi1hcHBlbmQiIHRpdGxlPSJUaGUg4oCcYXBwZW5k4oCdIHNpZ25hbCI+PHNwYW4gY2xhc3M9InR5cGUiPuKAnGFwcGVuZOKAnTwvc3Bhbj48L2E+IHNpZ25hbC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNi4yLjEwLjQuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTMxMiw3ICszMTIsNyBAQAogPHA+U2FtZSBhcyB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sI0dzdEluc2VydEJpbi1wcmVwZW5kIiB0aXRsZT0iVGhlIOKAnHByZXBlbmTigJ0gc2lnbmFsIj48c3BhbiBjbGFzcz0idHlwZSI+4oCccHJlcGVuZOKAnTwvc3Bhbj48L2E+IHNpZ25hbC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNi4yLjEwLjUuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM1NSw3ICszNTUsNyBAQAogPHA+U2FtZSBhcyB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sI0dzdEluc2VydEJpbi1pbnNlcnQtYWZ0ZXIiIHRpdGxlPSJUaGUg4oCcaW5zZXJ0LWFmdGVy4oCdIHNpZ25hbCI+PHNwYW4gY2xhc3M9InR5cGUiPuKAnGluc2VydC1hZnRlcuKAnTwvc3Bhbj48L2E+IHNpZ25hbC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNi4yLjEwLjYuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQwNCw3ICs0MDQsNyBAQAogPHA+U2FtZSBhcyB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sI0dzdEluc2VydEJpbi1pbnNlcnQtYmVmb3JlIiB0aXRsZT0iVGhlIOKAnGluc2VydC1iZWZvcmXigJ0gc2lnbmFsIj48c3BhbiBjbGFzcz0idHlwZSI+4oCcaW5zZXJ0LWJlZm9yZeKAnTwvc3Bhbj48L2E+IHNpZ25hbC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNi4yLjEwLjcuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ1MCw3ICs0NTAsNyBAQAogPHA+U2FtZSBhcyB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sI0dzdEluc2VydEJpbi1yZW1vdmUiIHRpdGxlPSJUaGUg4oCccmVtb3Zl4oCdIHNpZ25hbCI+PHNwYW4gY2xhc3M9InR5cGUiPuKAnHJlbW92ZeKAnTwvc3Bhbj48L2E+IHNpZ25hbC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNi4yLjEwLjguNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTUxMSw3ICs1MTEsNyBAQAogPHA+U2FtZSBhcyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0SW5zZXJ0YmluLmh0bWwjZ3N0LWluc2VydC1iaW4tYXBwZW5kIiB0aXRsZT0iZ3N0X2luc2VydF9iaW5fYXBwZW5kwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfaW5zZXJ0X2Jpbl9hcHBlbmQoKTwvY29kZT48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjYuMi4xMi4yLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01NjYsNyArNTY2LDcgQEAKIDxwPlNhbWUgYXMgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sI2dzdC1pbnNlcnQtYmluLWluc2VydC1hZnRlciIgdGl0bGU9ImdzdF9pbnNlcnRfYmluX2luc2VydF9hZnRlcsKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2luc2VydF9iaW5faW5zZXJ0X2FmdGVyKCk8L2NvZGU+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi42LjIuMTIuMy42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjI2LDcgKzYyNiw3IEBACiA8cD5TYW1lIGFzIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbCNnc3QtaW5zZXJ0LWJpbi1pbnNlcnQtYmVmb3JlIiB0aXRsZT0iZ3N0X2luc2VydF9iaW5faW5zZXJ0X2JlZm9yZcKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2luc2VydF9iaW5faW5zZXJ0X2JlZm9yZSgpPC9jb2RlPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNi4yLjEyLjQuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTY4NCw3ICs2ODQsNyBAQAogPHA+U2FtZSBhcyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0SW5zZXJ0YmluLmh0bWwjZ3N0LWluc2VydC1iaW4tcHJlcGVuZCIgdGl0bGU9ImdzdF9pbnNlcnRfYmluX3ByZXBlbmTCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9pbnNlcnRfYmluX3ByZXBlbmQoKTwvY29kZT48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjYuMi4xMi41LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC03MzUsNyArNzM1LDcgQEAKIDxwPlNhbWUgYXMgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sI2dzdC1pbnNlcnQtYmluLXJlbW92ZSIgdGl0bGU9ImdzdF9pbnNlcnRfYmluX3JlbW92ZcKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2luc2VydF9iaW5fcmVtb3ZlKCk8L2NvZGU+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi42LjIuMTIuNi42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwKaW5kZXggM2NiMmJlNC4uZjEzODI3MyAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sCkBAIC0zLDEwICszLDEwIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RQaG90b2dyYXBoeTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+Ci08bGluayByZWw9InVwIiBocmVmPSJjaDA3Lmh0bWwiIHRpdGxlPSJJbnRlcmZhY2VzIj4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iY2gwNy5odG1sIiB0aXRsZT0iSW50ZXJmYWNlcyI+Cis8bGluayByZWw9InVwIiBocmVmPSJjaDA4Lmh0bWwiIHRpdGxlPSJJbnRlcmZhY2VzIj4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iY2gwOC5odG1sIiB0aXRsZT0iSW50ZXJmYWNlcyI+CiA8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdHJlYW1lci1saWJzLWhpZXJhcmNoeS5odG1sIiB0aXRsZT0iUGFydMKgSUkuwqBPYmplY3QgSGllcmFyY2h5Ij4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CkBAIC0xOCw4ICsxOCw4IEBACiAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPgogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDA3Lmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImNoMDcuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDguaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iY2gwOC5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0cmVhbWVyLWxpYnMtaGllcmFyY2h5Lmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtMzAxLDcgKzMwMSw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC00NDMsOCArNDQzLDggQEAKICBmb3JtYXQsIHNvIHRoaXMgY2FsbGJhY2sgYWxsb3dzIHRoZSBhcHBsaWNhdGlvbgogdG8gZS5nLiByZWNvbmZpZ3VyZSBjYXBzZmlsdGVycyBpbiBwaXBlbGluZSBpZiBhbnkuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ3NCw4ICs0NzQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKmV2X2NvbXA8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+R2V0IHRoZSBldiBjb21wZW5zYXRpb24gdmFsdWUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDk2LDcgKzQ5Niw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjMuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIGdldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtNTA4LDggKzUwOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gKmlzb19zcGVlZDwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5HZXQgdGhlIElTTyB2YWx1ZSAobGlnaHQgc2Vuc2l2aXR5KSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01MzAsNyArNTMwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuNC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy40LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgZ2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC01NDIsOCArNTQyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+ICphcGVydHVyZTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5HZXQgdGhlIGFwZXJ0dXJlIHZhbHVlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU2NCw3ICs1NjQsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy41LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBnZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTU3Niw4ICs1NzYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludDMyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQzMjwvc3Bhbj48L2E+ICpleHBvc3VyZTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5HZXQgdGhlIGZpeGVkIGV4cG9zdXJlIHRpbWUgKGluIHVzKSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy42LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01OTgsNyArNTk4LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuNi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy42LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgZ2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC02MTEsOCArNjExLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5V2hpdGVCYWxhbmNlTW9kZSIgdGl0bGU9ImVudW0gR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlPC9zcGFuPjwvYT4gKndiX21vZGU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+R2V0IHRoZSB3aGl0ZSBiYWxhbmNlIG1vZGUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjMzLDcgKzYzMyw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjcuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuNy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIGdldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtNjQ1LDggKzY0NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5Q29sb3JUb25lTW9kZSIgdGl0bGU9ImVudW0gR3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlPC9zcGFuPjwvYT4gKnRvbmVfbW9kZTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5HZXQgdGhlIGNvbG9yIHRvbmUgbW9kZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy44LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02NjcsNyArNjY3LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuOC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy44LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgZ2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC02NzksOCArNjc5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5U2NlbmVNb2RlIiB0aXRsZT0iZW51bSBHc3RQaG90b2dyYXBoeVNjZW5lTW9kZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5U2NlbmVNb2RlPC9zcGFuPjwvYT4gKnNjZW5lX21vZGU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+R2V0IHRoZSBzY2VuZSBtb2RlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy45LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTcwMSw3ICs3MDEsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy45LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjkuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBnZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTcxMyw4ICs3MTMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlGbGFzaE1vZGUiIHRpdGxlPSJlbnVtIEdzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGhvdG9ncmFwaHlGbGFzaE1vZGU8L3NwYW4+PC9hPiAqZmxhc2hfbW9kZTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5HZXQgdGhlIGZsYXNoIG1vZGUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjEwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjEwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC03MzUsNyArNzM1LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMTAuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMTAuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBnZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTc0Nyw4ICs3NDcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeUZsaWNrZXJSZWR1Y3Rpb25Nb2RlIiB0aXRsZT0iZW51bSBHc3RQaG90b2dyYXBoeUZsaWNrZXJSZWR1Y3Rpb25Nb2RlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZTwvc3Bhbj48L2E+ICptb2RlPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPkdldCB0aGUgZmxpY2tlciBtb2RlIHZhbHVlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzY5LDcgKzc2OSw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjExLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjExLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgZ2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC03ODEsOCArNzgxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlIiB0aXRsZT0iZW51bSBHc3RQaG90b2dyYXBoeUZvY3VzTW9kZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlPC9zcGFuPjwvYT4gKm1vZGU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+R2V0IHRoZSBmb2N1cyBtb2RlIHZhbHVlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtODAzLDcgKzgwMyw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjEyLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjEyLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgZ2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC04MTUsOCArODE1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlOb2lzZVJlZHVjdGlvbiIgdGl0bGU9ImVudW0gR3N0UGhvdG9ncmFwaHlOb2lzZVJlZHVjdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5Tm9pc2VSZWR1Y3Rpb248L3NwYW4+PC9hPiAqbm9pc2VfcmVkdWN0aW9uPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPkdldCB0aGUgbm9pc2UgcmVkdWN0aW9uIG1vZGUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjEzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjEzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC04MzcsMTAgKzgzNyw5IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjEzLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjEzLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgZ2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgotPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMC4xMC4yMTwvcD4KIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgpAQCAtODUwLDggKzg0OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnpvb208L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+R2V0IHRoZSB6b29tIHZhbHVlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtODcyLDcgKzg3MSw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjE0LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjE0LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgZ2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC04ODQsOCArODgzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IGV2X2NvbXA8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2V0IHRoZSBldiBjb21wZW5zYXRpb24gdmFsdWUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjE1LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjE1LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC05MDYsNyArOTA1LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMTUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMTUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBzZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTkxOCw4ICs5MTcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGlzb19zcGVlZDwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5TZXQgdGhlIElTTyB2YWx1ZSAobGlnaHQgc2Vuc2l2aXR5KSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMTYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMTYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTk0MCw3ICs5MzksNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xNi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xNi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHNldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtOTUyLDggKzk1MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBhcGVydHVyZTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5TZXQgdGhlIGFwZXJ0dXJlIHZhbHVlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTc0LDcgKzk3Myw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjE3LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjE3LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgc2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC05ODYsOCArOTg1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGV4cG9zdXJlPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlNldCB0aGUgZml4ZWQgZXhwb3N1cmUgdGltZSAoaW4gdXMpIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTAwOCw3ICsxMDA3LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMTguNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMTguNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBzZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTEwMjEsOCArMTAyMCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGUiIHRpdGxlPSJlbnVtIEdzdFBob3RvZ3JhcGh5V2hpdGVCYWxhbmNlTW9kZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5V2hpdGVCYWxhbmNlTW9kZTwvc3Bhbj48L2E+IHdiX21vZGU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2V0IHRoZSB3aGl0ZSBiYWxhbmNlIG1vZGUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjE5LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjE5LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDQzLDcgKzEwNDIsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xOS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xOS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHNldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtMTA1NSw4ICsxMDU0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlIiB0aXRsZT0iZW51bSBHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGU8L3NwYW4+PC9hPiB0b25lX21vZGU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2V0IHRoZSBjb2xvciB0b25lIG1vZGUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjIwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjIwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDc3LDcgKzEwNzYsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yMC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yMC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHNldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtMTA4OSw4ICsxMDg4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5U2NlbmVNb2RlIiB0aXRsZT0iZW51bSBHc3RQaG90b2dyYXBoeVNjZW5lTW9kZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5U2NlbmVNb2RlPC9zcGFuPjwvYT4gc2NlbmVfbW9kZTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5TZXQgdGhlIHNjZW5lIG1vZGUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjIxLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjIxLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMTExLDcgKzExMTAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yMS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yMS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHNldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtMTEyMyw4ICsxMTIyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlIiB0aXRsZT0iZW51bSBHc3RQaG90b2dyYXBoeUZsYXNoTW9kZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlPC9zcGFuPjwvYT4gZmxhc2hfbW9kZTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5TZXQgdGhlIGZsYXNoIG1vZGUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjIyLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjIyLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMTQ1LDcgKzExNDQsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yMi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yMi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHNldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtMTE1Nyw4ICsxMTU2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZSIgdGl0bGU9ImVudW0gR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5RmxpY2tlclJlZHVjdGlvbk1vZGU8L3NwYW4+PC9hPiBtb2RlPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlNldCB0aGUgZmxpY2tlciBtb2RlIHZhbHVlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTExNzksNyArMTE3OCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjIzLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjIzLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgc2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC0xMTkxLDggKzExOTAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlGb2N1c01vZGUiIHRpdGxlPSJlbnVtIEdzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGhvdG9ncmFwaHlGb2N1c01vZGU8L3NwYW4+PC9hPiBtb2RlPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlNldCB0aGUgZm9jdXMgbW9kZSB2YWx1ZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjI0LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjI0LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMjEzLDcgKzEyMTIsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yNC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yNC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHNldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtMTIyNSw4ICsxMjI0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlOb2lzZVJlZHVjdGlvbiIgdGl0bGU9ImVudW0gR3N0UGhvdG9ncmFwaHlOb2lzZVJlZHVjdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5Tm9pc2VSZWR1Y3Rpb248L3NwYW4+PC9hPiBub2lzZV9yZWR1Y3Rpb248L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2V0IHRoZSBub2lzZSByZWR1Y3Rpb24gbW9kZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEyNDcsMTAgKzEyNDYsOSBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yNS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yNS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHNldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KLTxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDAuMTAuMjE8L3A+CiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KQEAgLTEyNjEsOCArMTI1OSw4IEBACiA8cD5TZXQgdGhlIHpvb20gdmFsdWUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT4uCiBFLmcuIDEuMCB0byBnZXQgb3JpZ2luYWwgaW1hZ2UgYW5kIDMuMCBmb3IgM3ggem9vbSBhbmQgc28gb24uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTI4Myw3ICsxMjgxLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMjYuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMjYuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBzZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTEyOTUsOCArMTI5Myw4IEBACiA8cD5HZXQgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlDYXBzIiB0aXRsZT0iZW51bSBHc3RQaG90b2dyYXBoeUNhcHMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQaG90b2dyYXBoeUNhcHM8L3NwYW4+PC9hPiBiaXRtYXNrIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHdoYXQgcGhvdG9ncmFwaHkKIGludGVyZmFjZSBmZWF0dXJlcyB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+IHN1cHBvcnRzPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTMxMCw3ICsxMzA4LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMjcuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMjcuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeUNhcHMiIHRpdGxlPSJlbnVtIEdzdFBob3RvZ3JhcGh5Q2FwcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5Q2Fwczwvc3Bhbj48L2E+IHZhbHVlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTEzMjcsOCArMTMyNSw4IEBACiAgY2FsbGJhY2sgaXMgY2FsbGVkIGFmdGVyIHByZXBhcmF0aW9ucyBhcmUKIGRvbmUuIEltYWdlIGNhcHR1cmUgd2lsbCBiZWdpbiBhZnRlciBjYWxsYmFjayByZXR1cm5zLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEzNjAsNyArMTM1OCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjI4LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjI4LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgcHJlcGFyYXRpb25zIHdlcmUgc3RhcnRlZCAoY2FwcyB3ZXJlIE9LKSwgb3RoZXJ3aXNlIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4uPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTEzNzMsOCArMTM3MSw4IEBACiA8cD5TdGFydCBvciBzdG9wIGF1dG9mb2N1c2luZy4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR1NULVBIT1RPR1JBUEhZLUFVVE9GT0NVUy1ET05FOkNBUFMiIHRpdGxlPSJHU1RfUEhPVE9HUkFQSFlfQVVUT0ZPQ1VTX0RPTkUiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HU1RfUEhPVE9HUkFQSFlfQVVUT0ZPQ1VTX0RPTkU8L2NvZGU+PC9hPgogbWVzc2FnZSBpcyBwb3N0ZWQgdG8gYnVzIHdoZW4gYXV0b2ZvY3VzaW5nIGhhcyBmaW5pc2hlZC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjI5LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjI5LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNDAzLDggKzE0MDEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGhvdG9ncmFwaHlTZXR0aW5nczwvc3Bhbj4gKmNvbmZpZzwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5TZXQgYWxsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYXQgb25jZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjMwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjMwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNDI1LDcgKzE0MjMsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4zMC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4zMC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IFRSVUUgaWYgY29uZmlndXJhdGlvbiB3YXMgc2V0IHN1Y2Nlc3NmdWxseSwgb3RoZXJ3aXNlIEZBTFNFLjwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC0xNDM3LDggKzE0MzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGhvdG9ncmFwaHlTZXR0aW5nczwvc3Bhbj4gKmNvbmZpZzwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5HZXQgYWxsIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYXQgb25jZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjMxLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjMxLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNDU5LDcgKzE0NTcsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4zMS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4zMS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IFRSVUUgaWYgY29uZmlndXJhdGlvbiB3YXMgZ290IHN1Y2Nlc3NmdWxseSwgb3RoZXJ3aXNlIEZBTFNFLjwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC0xNDc2LDggKzE0NzQsOCBAQAogPGEgbmFtZT0iR3N0UGhvdG9ncmFwaHlOb2lzZVJlZHVjdGlvbiI+PC9hPjxoMz5lbnVtIEdzdFBob3RvZ3JhcGh5Tm9pc2VSZWR1Y3Rpb248L2gzPgogPHA+Tm9pc2UgUmVkdWN0aW9uIGZlYXR1cmVzIG9mIGEgcGhvdG9ncmFwaHkgY2FwdHVyZSBvciBmaWx0ZXIgZWxlbWVudC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi44LjMuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjguMy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE1MjksMTUgKzE1MjcsMTQgQEAKIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+Ci08cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAwLjEwLjIxPC9wPgogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGUiPjwvYT48aDM+ZW51bSBHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGU8L2gzPgogPHA+TW9kZXMgZm9yIHdoaXRlIGJhbGFuY2UgY29udHJvbC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi44LjQuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjguNC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE2MTcsOCArMTYxNCw4IEBACiA8YSBuYW1lPSJHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGUiPjwvYT48aDM+ZW51bSBHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGU8L2gzPgogPHA+TW9kZXMgZm9yIHNwZWNpYWwgY29sb3IgZWZmZWN0cy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi44LjUuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjguNS40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE3NDcsOCArMTc0NCw4IEBACiA8cD5FYWNoIG1vZGUgY29udGFpbnMgcHJlc2V0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5IiB0aXRsZT0iR3N0UGhvdG9ncmFwaHkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQaG90b2dyYXBoeTwvc3Bhbj48L2E+IG9wdGlvbnMgaW4gb3JkZXIgdG8gcHJvZHVjZQogZ29vZCBjYXB0dXJpbmcgcmVzdWx0IGluIGNlcnRhaW4gc2NlbmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuOC42LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi44LjYuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xODk2LDggKzE4OTMsOCBAQAogPGEgbmFtZT0iR3N0UGhvdG9ncmFwaHlGbGFzaE1vZGUiPjwvYT48aDM+ZW51bSBHc3RQaG90b2dyYXBoeUZsYXNoTW9kZTwvaDM+CiA8cD5Nb2RlcyBmb3IgZmxhc2ggY29udHJvbC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi44LjcuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjguNy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE5NTAsOCArMTk0Nyw4IEBACiA8YSBuYW1lPSJHc3RQaG90b2dyYXBoeUZsaWNrZXJSZWR1Y3Rpb25Nb2RlIj48L2E+PGgzPmVudW0gR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZTwvaDM+CiA8cD5SZWR1Y2UgZmxpY2tlciBpbiB2aWRlbyBjYXVzZWQgYnkgbGlnaHQgc291cmNlIGZsdWN0dWF0aW9uLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjguOC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuOC44LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTk5NSw4ICsxOTkyLDggQEAKIDxhIG5hbWU9IkdzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlIj48L2E+PGgzPmVudW0gR3N0UGhvdG9ncmFwaHlGb2N1c01vZGU8L2gzPgogPHA+Q2hvb3NlIG1vZGUgZm9yIGZvY3VzaW5nIGFsZ29yaXRobS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi44LjkuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjguOS40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIwODAsOCArMjA3Nyw4IEBACiA8cD5TdGF0dXMgb2YgdGhlIGZvY3VzaW5nIG9wZXJhdGlvbiwgdXNlZCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHU1QtUEhPVE9HUkFQSFktQVVUT0ZPQ1VTLURPTkU6Q0FQUyIgdGl0bGU9IkdTVF9QSE9UT0dSQVBIWV9BVVRPRk9DVVNfRE9ORSI+PHNwYW4gY2xhc3M9InR5cGUiPkdTVF9QSE9UT0dSQVBIWV9BVVRPRk9DVVNfRE9ORTwvc3Bhbj48L2E+CiBtZXNzYWdlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjguMTAuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjguMTAuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yMTI2LDggKzIxMjMsOCBAQAogPHA+Qml0bWFzayB0aGF0IGluZGljYXRlcyB3aGljaCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeSIgdGl0bGU9IkdzdFBob3RvZ3JhcGh5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGhvdG9ncmFwaHk8L3NwYW4+PC9hPiBpbnRlcmZhY2UgZmVhdHVyZXMgYW4gaW5zdGFuY2UKIHN1cHBvcnRzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjguMTEuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjguMTEuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yMjI0LDggKzIyMjEsOCBAQAogPHA+UmlzayBsZXZlbCBvZiBjYXB0dXJlZCBpbWFnZSBiZWNvbWluZyAic2hha2VuIiBkdWUgdG8gY2FtZXJhIG1vdmVtZW50IGFuZAogdG9vIGxvbmcgZXhwb3N1cmUgdGltZS4gVXNlZCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHU1QtUEhPVE9HUkFQSFktU0hBS0UtUklTSzpDQVBTIiB0aXRsZT0iR1NUX1BIT1RPR1JBUEhZX1NIQUtFX1JJU0siPjxzcGFuIGNsYXNzPSJ0eXBlIj5HU1RfUEhPVE9HUkFQSFlfU0hBS0VfUklTSzwvc3Bhbj48L2E+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lc3NhZ2UuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lc3NhZ2U8L3NwYW4+PC9hPi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi44LjEyLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi44LjEyLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0VmlkZW9BZ2dyZWdhdG9yLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RWaWRlb0FnZ3JlZ2F0b3IuaHRtbAppbmRleCBjOGVkNWY3Li42OTE4ZGFmIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RWaWRlb0FnZ3JlZ2F0b3IuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RWaWRlb0FnZ3JlZ2F0b3IuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdFZpZGVvQWdncmVnYXRvcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJ2aWRlby5odG1sIiB0aXRsZT0iVmlkZW8gaGVscGVycyBhbmQgYmFzZWNsYXNzZXMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJ2aWRlby5odG1sIiB0aXRsZT0iVmlkZW8gaGVscGVycyBhbmQgYmFzZWNsYXNzZXMiPgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0VmlkZW9BZ2dyZWdhdG9yLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC03Nyw3ICs3Nyw3IEBACiA8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi44LjIuNi4yLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEwNCw2ICsxMDQsOSBAQAogPGEgbmFtZT0iR3N0VmlkZW9BZ2dyZWdhdG9yQ2xhc3MiPjwvYT48aDM+c3RydWN0IEdzdFZpZGVvQWdncmVnYXRvckNsYXNzPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0VmlkZW9BZ2dyZWdhdG9yQ2xhc3MgewogICBHc3RDYXBzICogICAgICAgICAgKCp1cGRhdGVfY2FwcykgICAgICAgICAgICAgICAoR3N0VmlkZW9BZ2dyZWdhdG9yICogIHZpZGVvYWdncmVnYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENhcHMgICAgICAgICAgICAqICBjYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAgICAgICAgICAgICogIGZpbHRlcl9jYXBzKTsKKyAgR3N0Q2FwcyAqICAgICAgICAgICgqZml4YXRlX2NhcHMpICAgICAgICAgICAgICAgKEdzdFZpZGVvQWdncmVnYXRvciAqICB2aWRlb2FnZ3JlZ2F0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICAgICAgICAgICAgKiAgY2Fwcyk7CiAgIEdzdEZsb3dSZXR1cm4gICAgICAoKmFnZ3JlZ2F0ZV9mcmFtZXMpICAgICAgICAgIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiAgdmlkZW9hZ2dyZWdhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QnVmZmVyICAgICAgICAgICogIG91dGJ1ZmZlcik7CkBAIC0xMTYsMTQgKzExOSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9JbmZvICAgICAgICogIGJlc3RfaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAqICBhdF9sZWFzdF9vbmVfYWxwaGEpOwogCi0gIGdib29sZWFuICAgICAgICAgICBwcmVzZXJ2ZV91cGRhdGVfY2Fwc19yZXN1bHQ7Ci0KICAgR3N0Q2FwcyAgICAgICAgICAgKnNpbmtfbm9uX2FscGhhX2NhcHM7CiB9OwogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuOC4yLjYuMy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMzgsNiArMTM5LDE2IEBACiA8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0VmlkZW9BZ2dyZWdhdG9yQ2xhc3MuZml4YXRlLWNhcHMiPjwvYT5maXhhdGVfY2FwczwvY29kZT48L2VtPsKgKCk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+Rml4YXRlIGFuZCByZXR1cm4gdGhlIHNyYyBwYWQgY2FwcyBwcm92aWRlZC4gIFRoZSBmdW5jdGlvbiB0YWtlcworb3duZXJzaGlwIG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jYXBzPC9jb2RlPjwvZW0+CithbmQgcmV0dXJucyBhIGZpeGF0ZWQgdmVyc2lvbiBvZgorPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNhcHM8L2NvZGU+PC9lbT4KKy4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNhcHM8L2NvZGU+PC9lbT4KK2lzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHdyaXRhYmxlLjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdFZpZGVvQWdncmVnYXRvckNsYXNzLmFnZ3JlZ2F0ZS1mcmFtZXMiPjwvYT5hZ2dyZWdhdGVfZnJhbWVzPC9jb2RlPjwvZW0+wqAoKTwvcD48L3RkPgogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5MZXRzIHN1YmNsYXNzZXMgYWdncmVnYXRlIGZyYW1lcyB0aGF0IGFyZSByZWFkeS4gU3ViY2xhc3Nlcwogc2hvdWxkIGl0ZXJhdGUgdGhlIEdzdEVsZW1lbnQuc2lua3BhZHMgYW5kIHVzZSB0aGUgYWxyZWFkeQpAQCAtMTY5LDEzICsxODAsNiBAQAogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdFZpZGVvQWdncmVnYXRvckNsYXNzLnByZXNlcnZlLXVwZGF0ZS1jYXBzLXJlc3VsdCI+PC9hPnByZXNlcnZlX3VwZGF0ZV9jYXBzX3Jlc3VsdDwvY29kZT48L2VtPjs8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+U3ViLWNsYXNzZXMgc2hvdWxkIHNldCB0aGlzIHRvIHRydWUgaWYgdGhlIHJldHVybiByZXN1bHQKLW9mIHRoZSA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPnVwZGF0ZV9jYXBzKCk8L2NvZGU+IG1ldGhvZCBzaG91bGQgbm90IGJlIGZ1cnRoZXIgbW9kaWZpZWQKLWJ5IEdzdFZpZGVvQWdncmVnYXRvciBieSByZW1vdmluZyBmaWVsZHMuPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+CiA8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0Q2Fwczwvc3Bhbj48L2E+wqAqPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0VmlkZW9BZ2dyZWdhdG9yQ2xhc3Muc2luay1ub24tYWxwaGEtY2FwcyI+PC9hPnNpbmtfbm9uX2FscGhhX2NhcHM8L2NvZGU+PC9lbT47PC9wPjwvdGQ+CiA8dGQ+wqA8L3RkPgogPHRkPsKgPC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFZpZGVvQWdncmVnYXRvclBhZC5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0VmlkZW9BZ2dyZWdhdG9yUGFkLmh0bWwKaW5kZXggZmFiY2FlYy4uNWE0YjNlZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0VmlkZW9BZ2dyZWdhdG9yUGFkLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0VmlkZW9BZ2dyZWdhdG9yUGFkLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RWaWRlb0FnZ3JlZ2F0b3JQYWQ6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0idmlkZW8uaHRtbCIgdGl0bGU9IlZpZGVvIGhlbHBlcnMgYW5kIGJhc2VjbGFzc2VzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0VmlkZW9BZ2dyZWdhdG9yLmh0bWwiIHRpdGxlPSJHc3RWaWRlb0FnZ3JlZ2F0b3IiPgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0VmlkZW9BZ2dyZWdhdG9yUGFkLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC04NCw3ICs4NCw3IEBACiA8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi44LjMuNi4yLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUlTREItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtSVNEQi12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwKaW5kZXggMmUwYmZhZS4uNmNmNGM2YSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtSVNEQi12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtSVNEQi12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5JU0RCIHZhcmlhbnRzIG9mIE1QRUctVFMgZGVzY3JpcHRvcnM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0ibXBlZ3RzLmh0bWwiIHRpdGxlPSJNcGVnIFRTIGhlbHBlciBsaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCIgdGl0bGU9IkRWQiB2YXJpYW50cyBvZiBNUEVHLVRTIGRlc2NyaXB0b3JzIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUlTREItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNjUsNyArNjUsNyBAQAogPHA+Q29uc3VsdCB0aGUgcmVsZXZhbnQgc3BlY2lmaWNhdGlvbnMgZm9yIG1vcmUgZGV0YWlscy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS4xMC43LjIuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1NcGVnLXRzLWhlbHBlci1saWJyYXJ5Lmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1NcGVnLXRzLWhlbHBlci1saWJyYXJ5Lmh0bWwKaW5kZXggZjk2YjhiOS4uYjU0YTJkMSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtTXBlZy10cy1oZWxwZXItbGlicmFyeS5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLU1wZWctdHMtaGVscGVyLWxpYnJhcnkuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPk1wZWctdHMgaGVscGVyIGxpYnJhcnk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0ibXBlZ3RzLmh0bWwiIHRpdGxlPSJNcGVnIFRTIGhlbHBlciBsaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0ibXBlZ3RzLmh0bWwiIHRpdGxlPSJNcGVnIFRTIGhlbHBlciBsaWJyYXJ5Ij4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU1wZWctdHMtaGVscGVyLWxpYnJhcnkuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZDg0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sCkBAIC0wLDAgKzEsNTQ5IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8dGl0bGU+T3BlbkdMIEZvcm1hdHM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+Cis8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+Cis8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJwbGF5ZXIuaHRtbCIgdGl0bGU9IlBsYXllciBMaWJyYXJ5Ij4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cis8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgorPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Cis8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj4KKzwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJwbGF5ZXIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8L3RyPjwvdGFibGU+Cis8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cyI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KKzx0ZCB2YWxpZ249InRvcCI+Cis8aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLnRvcF9vZl9wYWdlIj48L2E+T3BlbkdMIEZvcm1hdHM8L3NwYW4+PC9oMj4KKzxwPk9wZW5HTCBGb3JtYXRzPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KKzwvdHI+PC90YWJsZT48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+Cis8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ndWludDwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC1mb3JtYXQtdHlwZS1uLWJ5dGVzIiB0aXRsZT0iZ3N0X2dsX2Zvcm1hdF90eXBlX25fYnl0ZXPCoCgpIj5nc3RfZ2xfZm9ybWF0X3R5cGVfbl9ieXRlczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ndWludDwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXR5cGUtbi1ieXRlcyIgdGl0bGU9ImdzdF9nbF90ZXh0dXJlX3R5cGVfbl9ieXRlc8KgKCkiPmdzdF9nbF90ZXh0dXJlX3R5cGVfbl9ieXRlczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ndWludDwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC1mb3JtYXQtZnJvbS1nbC10ZXh0dXJlLXR5cGUiIHRpdGxlPSJnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlwqAoKSI+Z3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0VmlkZW9HTFRleHR1cmVUeXBlPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10eXBlLWZyb20tZm9ybWF0IiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdMKgKCkiPmdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3VpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtc2l6ZWQtZ2wtZm9ybWF0LWZyb20tZ2wtZm9ybWF0LXR5cGUiIHRpdGxlPSJnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGXCoCgpIj5nc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10YXJnZXQtZnJvbS1zdHJpbmciIHRpdGxlPSJnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmfCoCgpIj5nc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LXRvLXN0cmluZyIgdGl0bGU9ImdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19zdHJpbmfCoCgpIj5nc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fc3RyaW5nPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LXRvLWdsIiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dswqAoKSI+Z3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dsPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LWZyb20tZ2wiIHRpdGxlPSJnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9nbMKgKCkiPmdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX2dsPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC10by1idWZmZXItcG9vbC1vcHRpb24iIHRpdGxlPSJnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fYnVmZmVyX3Bvb2xfb3B0aW9uwqAoKSI+Z3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2J1ZmZlcl9wb29sX29wdGlvbjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Cis8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5lbnVtPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPkdzdEdMVGV4dHVyZVRhcmdldDwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtMkQtU1RSOkNBUFMiIHRpdGxlPSJHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSIj5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC1SRUNUQU5HTEUtU1RSOkNBUFMiIHRpdGxlPSJHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFX1NUUiI+R1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFI8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULUVYVEVSTkFMLU9FUy1TVFI6Q0FQUyIgdGl0bGU9IkdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVNfU1RSIj5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTX1NUUjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVRFWFRVUkUtVEFSR0VULTJEOkNBUFMiIHRpdGxlPSJHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUXzJEIj5HU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUXzJEPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1CVUZGRVItUE9PTC1PUFRJT04tR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFOkNBUFMiIHRpdGxlPSJHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSI+R1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVM6Q0FQUyIgdGl0bGU9IkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTIj5HU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUzwvYT48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtZm9ybWF0LXR5cGUtbi1ieXRlcyI+PC9hPjxoMz5nc3RfZ2xfZm9ybWF0X3R5cGVfbl9ieXRlc8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ndWludDwvc3Bhbj48L2E+Citnc3RfZ2xfZm9ybWF0X3R5cGVfbl9ieXRlcyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gZm9ybWF0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHR5cGU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzQuNi4yLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmZvcm1hdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBPcGVuR0wgZm9ybWF0LCA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R0xfUkdCQTwvY29kZT4sIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HTF9MVU1JTkFOQ0U8L2NvZGU+LCBldGM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dHlwZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBPcGVuR0wgdHlwZSwgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdMX1VOU0lHTkVEX0JZVEU8L2NvZGU+LCA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R0xfRkxPQVQ8L2NvZGU+LCBldGM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuMi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhlIHNwZWNpZmllZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Zm9ybWF0PC9jb2RlPjwvZW0+CissIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50eXBlPC9jb2RlPjwvZW0+Citjb21iaW5hdGlvbiB0YWtlcworcGVyIHBpeGVsPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC10ZXh0dXJlLXR5cGUtbi1ieXRlcyI+PC9hPjxoMz5nc3RfZ2xfdGV4dHVyZV90eXBlX25fYnl0ZXPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3VpbnQ8L3NwYW4+PC9hPgorZ3N0X2dsX3RleHR1cmVfdHlwZV9uX2J5dGVzICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4gdGV4X2Zvcm1hdDwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zNC42LjMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRleF9mb3JtYXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzQuNi4zLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIG51bWJlciBvZiBieXRlcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2Zvcm1hdDwvY29kZT48L2VtPgordXNlZCBwZXIgcGl4ZWw8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWZvcm1hdC1mcm9tLWdsLXRleHR1cmUtdHlwZSI+PC9hPjxoMz5nc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50PC9zcGFuPjwvYT4KK2dzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9HTFRleHR1cmVUeXBlPC9zcGFuPiB0ZXhfZm9ybWF0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGV4X2Zvcm1hdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zNC42LjQuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgT3BlbkdMIGZvcm1hdCBzcGVjaWZpZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9mb3JtYXQ8L2NvZGU+PC9lbT4KKzwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtdGV4dHVyZS10eXBlLWZyb20tZm9ybWF0Ij48L2E+PGgzPmdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4KK2dzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0Zvcm1hdCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvRm9ybWF0PC9zcGFuPjwvYT4gdl9mb3JtYXQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBwbGFuZTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zNC42LjUuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dl9mb3JtYXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvRm9ybWF0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9Gb3JtYXQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGFuZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBwbGFuZSBudW1iZXIgKHN0YXJ0aW5nIGZyb20gMCk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuNS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSA8c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9HTFRleHR1cmVUeXBlPC9zcGFuPiBmb3IgdGhlIHNwZWNpZmllZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Zm9ybWF0PC9jb2RlPjwvZW0+CithbmQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnBsYW5lPC9jb2RlPjwvZW0+Cit0aGF0IGNhbiBiZSBhbGxvY2F0ZWQgdXNpbmcgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KKzwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2l6ZWQtZ2wtZm9ybWF0LWZyb20tZ2wtZm9ybWF0LXR5cGUiPjwvYT48aDM+Z3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50PC9zcGFuPjwvYT4KK2dzdF9nbF9zaXplZF9nbF9mb3JtYXRfZnJvbV9nbF9mb3JtYXRfdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGZvcm1hdDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gdHlwZTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zNC42LjYuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Zm9ybWF0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YW4gT3BlbkdMIGZvcm1hdCwgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdMX1JHQkE8L2NvZGU+LCA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R0xfTFVNSU5BTkNFPC9jb2RlPiwgZXRjPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnR5cGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hbiBPcGVuR0wgdHlwZSwgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdMX1VOU0lHTkVEX0JZVEU8L2NvZGU+LCA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R0xfRkxPQVQ8L2NvZGU+LCBldGM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuNi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBzaXplZCBpbnRlcm5hbCBmb3JtYXQgc3BlY2lmaWVkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5mb3JtYXQ8L2NvZGU+PC9lbT4KK2FuZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dHlwZTwvY29kZT48L2VtPgordGhhdCBjYW4KK2JlIHVzZWQgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KKzwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtdGV4dHVyZS10YXJnZXQtZnJvbS1zdHJpbmciPjwvYT48aDM+Z3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4KK2dzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKnN0cjwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC10ZXh0dXJlLXRhcmdldC10by1zdHJpbmciPjwvYT48aDM+Z3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX3N0cmluZ8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fc3RyaW5nICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiB0YXJnZXQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzQuNi44LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdHI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIHN0cmluZyBlcXVpdmFsYW50IHRvIG9uZSBvZiB0aGUgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXypfU1RSIHZhbHVlczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuOC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IHJlcHJlc2VudGVkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zdHI8L2NvZGU+PC9lbT4KK29yCis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtTk9ORTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkU8L2NvZGU+PC9hPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtdGV4dHVyZS10YXJnZXQtdG8tZ2wiPjwvYT48aDM+Z3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dswqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50PC9zcGFuPjwvYT4KK2dzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4gdGFyZ2V0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuOS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGFyZ2V0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzQuNi45LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIE9wZW5HTCB2YWx1ZSBmb3IgYmluZGluZyB0aGUgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRhcmdldDwvY29kZT48L2VtPgord2l0aCA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdsQmluZFRleHR1cmUoKTwvY29kZT4gYW5kCitzaW1pbGFyIGZ1bmN0aW9ucyBvciAwPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC10ZXh0dXJlLXRhcmdldC1mcm9tLWdsIj48L2E+PGgzPmdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX2dswqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4KK2dzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX2dsICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiB0YXJnZXQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzQuNi4xMC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGFyZ2V0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YW4gT3BlbkdMIHRleHR1cmUgYmluZGluZyB0YXJnZXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zNC42LjEwLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4gdGhhdCdzIGVxdWlhdmFsYW50IHRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50YXJnZXQ8L2NvZGU+PC9lbT4KK29yCis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtTk9ORTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkU8L2NvZGU+PC9hPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtdGV4dHVyZS10YXJnZXQtdG8tYnVmZmVyLXBvb2wtb3B0aW9uIj48L2E+PGgzPmdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19idWZmZXJfcG9vbF9vcHRpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2J1ZmZlcl9wb29sX29wdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiB0YXJnZXQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzQuNi4xMS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGFyZ2V0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzQuNi4xMS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPkdzdEJ1ZmZlclBvb2xPcHRpb248L2NvZGU+PC9lbT4KK3NwZWNpZmllZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGFyZ2V0PC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xUZXh0dXJlVGFyZ2V0Ij48L2E+PGgzPmVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0PC9oMz4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjcuMi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgorPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1URVhUVVJFLVRBUkdFVC1OT05FOkNBUFMiPjwvYT5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORTwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5ubyB0ZXh0dXJlIHRhcmdldDwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtMkQ6Q0FQUyI+PC9hPkdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD4yRCB0ZXh0dXJlIHRhcmdldDwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFOkNBUFMiPjwvYT5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFPC9wPjwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPnJlY3RhbmdsZSB0ZXh0dXJlIHRhcmdldDwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtRVhURVJOQUwtT0VTOkNBUFMiPjwvYT5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTPC9wPjwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPmV4dGVybmFsIG9lcyB0ZXh0dXJlIHRhcmdldDwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMLVRFWFRVUkUtVEFSR0VULTJELVNUUjpDQVBTIj48L2E+PGgzPkdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFI8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUiAiMkQiCis8L3ByZT4KKzxwPlN0cmluZyB1c2VkIGZvciA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtMkQ6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDwvY29kZT48L2E+IGluIHRoaW5ncyBsaWtlIGNhcHMgdmFsdWVzPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFLVNUUjpDQVBTIj48L2E+PGgzPkdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEVfU1RSPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEVfU1RSICJyZWN0YW5nbGUiCis8L3ByZT4KKzxwPlN0cmluZyB1c2VkIGZvciA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFPC9jb2RlPjwvYT4gaW4gdGhpbmdzIGxpa2UgY2FwcyB2YWx1ZXM8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVMtU1RSOkNBUFMiPjwvYT48aDM+R1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FU19TVFI8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FU19TVFIgImV4dGVybmFsLW9lcyIKKzwvcHJlPgorPHA+U3RyaW5nIHVzZWQgZm9yIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVM6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVM8L2NvZGU+PC9hPiBpbiB0aGluZ3MgbGlrZSBjYXBzIHZhbHVlczwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC0yRDpDQVBTIj48L2E+PGgzPkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfMkQ8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF8yRCAiR3N0QnVmZmVyUG9vbE9wdGlvbkdMVGV4dHVyZVRhcmdldDJEIgorPC9wcmU+Cis8cD5TdHJpbmcgdXNlZCBmb3IgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULTJEOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ8L2NvZGU+PC9hPiBhcyBhIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlclBvb2wuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlclBvb2w8L3NwYW4+PC9hPiBwb29sIG9wdGlvbjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC1SRUNUQU5HTEU6Q0FQUyI+PC9hPjxoMz5HU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSAiR3N0QnVmZmVyUG9vbE9wdGlvbkdMVGV4dHVyZVRhcmdldFJlY3RhbmdsZSIKKzwvcHJlPgorPHA+U3RyaW5nIHVzZWQgZm9yIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC1SRUNUQU5HTEU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU8L2NvZGU+PC9hPiBhcyBhIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlclBvb2wuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlclBvb2w8L3NwYW4+PC9hPiBwb29sIG9wdGlvbjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVM6Q0FQUyI+PC9hPjxoMz5HU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUzwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUyAiR3N0QnVmZmVyUG9vbE9wdGlvbkdMVGV4dHVyZVRhcmdldEV4dGVybmFsT0VTIgorPC9wcmU+Cis8cD5TdHJpbmcgdXNlZCBmb3IgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdTVF9HTF9URVhUVVJFX1RBUkdFVF9FU1RFUk5BTF9PRVM8L2NvZGU+IGFzIGEgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyUG9vbC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QnVmZmVyUG9vbDwvc3Bhbj48L2E+IHBvb2wgb3B0aW9uPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iZm9vdGVyIj4KKzxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwKc2ltaWxhcml0eSBpbmRleCA2MCUKcmVuYW1lIGZyb20gZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwKcmVuYW1lIHRvIGRvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sCmluZGV4IDU0YzcyNjAuLmNkNjRlZjQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sCkBAIC0yLDEyICsyLDEyIEBACiA8aHRtbD4KIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHRpdGxlPlV0aWxpdGllczogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzx0aXRsZT5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPgotPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiIHRpdGxlPSJPcGVuR0wgZGVidWdnaW5nIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CiA8L2hlYWQ+CkBAIC0xNSwyNSArMTUsMjUgQEAKIDx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+CiA8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KIDxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPgogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgogPHRkIHZhbGlnbj0idG9wIj4KLTxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLnRvcF9vZl9wYWdlIj48L2E+VXRpbGl0aWVzPC9zcGFuPjwvaDI+Ci08cD5VdGlsaXRpZXM8L3A+Cis8aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy50b3Bfb2ZfcGFnZSI+PC9hPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvc3Bhbj48L2gyPgorPHA+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9wPgogPC90ZD4KIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNDQsNyArNDQsNyBAQAogPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR0xDQjpDQVBTIiB0aXRsZT0iR0xDQsKgKCkiPipHTENCPC9hPjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dMQ0I6Q0FQUyIgdGl0bGU9IkdMQ0LCoCgpIj4qR0xDQjwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtNTIsNyArNTIsNyBAQAogPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR0xDQi1WMjpDQVBTIiB0aXRsZT0iR0xDQl9WMsKgKCkiPipHTENCX1YyPC9hPjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dMQ0ItVjI6Q0FQUyIgdGl0bGU9IkdMQ0JfVjLCoCgpIj4qR0xDQl9WMjwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtNjAsNyArNjAsNyBAQAogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0NEQ0I6Q0FQUyIgdGl0bGU9IkNEQ0LCoCgpIj4qQ0RDQjwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNDRENCOkNBUFMiIHRpdGxlPSJDRENCwqAoKSI+KkNEQ0I8L2E+PHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTY4LDcgKzY4LDcgQEAKIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLXNldC1jb250ZXh0IiB0aXRsZT0iZ3N0X2dsX2hhbmRsZV9zZXRfY29udGV4dMKgKCkiPmdzdF9nbF9oYW5kbGVfc2V0X2NvbnRleHQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWhhbmRsZS1zZXQtY29udGV4dCIgdGl0bGU9ImdzdF9nbF9oYW5kbGVfc2V0X2NvbnRleHTCoCgpIj5nc3RfZ2xfaGFuZGxlX3NldF9jb250ZXh0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CiA8dHI+CkBAIC03Niw3ICs3Niw3IEBACiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWhhbmRsZS1jb250ZXh0LXF1ZXJ5IiB0aXRsZT0iZ3N0X2dsX2hhbmRsZV9jb250ZXh0X3F1ZXJ5wqAoKSI+Z3N0X2dsX2hhbmRsZV9jb250ZXh0X3F1ZXJ5PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1oYW5kbGUtY29udGV4dC1xdWVyeSIgdGl0bGU9ImdzdF9nbF9oYW5kbGVfY29udGV4dF9xdWVyecKgKCkiPmdzdF9nbF9oYW5kbGVfY29udGV4dF9xdWVyeTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtODQsNyArODQsNyBAQAogPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLXRleHR1cmUiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9nZW5fdGV4dHVyZcKgKCkiPmdzdF9nbF9jb250ZXh0X2dlbl90ZXh0dXJlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi10ZXh0dXJlIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX3RleHR1cmXCoCgpIj5nc3RfZ2xfY29udGV4dF9nZW5fdGV4dHVyZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtOTIsNyArOTIsNyBAQAogPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLXRleHR1cmUiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9kZWxfdGV4dHVyZcKgKCkiPmdzdF9nbF9jb250ZXh0X2RlbF90ZXh0dXJlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC10ZXh0dXJlIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZGVsX3RleHR1cmXCoCgpIj5nc3RfZ2xfY29udGV4dF9kZWxfdGV4dHVyZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtMTAwLDcgKzEwMCw3IEBACiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLWZibyIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dlbl9mYm/CoCgpIj5nc3RfZ2xfY29udGV4dF9nZW5fZmJvPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi1mYm8iIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9nZW5fZmJvwqAoKSI+Z3N0X2dsX2NvbnRleHRfZ2VuX2ZibzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtMTA4LDcgKzEwOCw3IEBACiA8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWwtZmJvIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZGVsX2Zib8KgKCkiPmdzdF9nbF9jb250ZXh0X2RlbF9mYm88L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLWZibyIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2RlbF9mYm/CoCgpIj5nc3RfZ2xfY29udGV4dF9kZWxfZmJvPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CiA8dHI+CkBAIC0xMTYsNyArMTE2LDcgQEAKIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC11c2UtZmJvLXYyIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfdXNlX2Zib192MsKgKCkiPmdzdF9nbF9jb250ZXh0X3VzZV9mYm9fdjI8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtdXNlLWZiby12MiIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X3VzZV9mYm9fdjLCoCgpIj5nc3RfZ2xfY29udGV4dF91c2VfZmJvX3YyPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CiA8dHI+CkBAIC0xMjQsNyArMTI0LDcgQEAKIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tc2hhZGVyIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX3NoYWRlcsKgKCkiPmdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXI8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLXNoYWRlciIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXLCoCgpIj5nc3RfZ2xfY29udGV4dF9nZW5fc2hhZGVyPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CiA8dHI+CkBAIC0xMzIsNyArMTMyLDcgQEAKIDxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1zaGFkZXIiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9kZWxfc2hhZGVywqAoKSI+Z3N0X2dsX2NvbnRleHRfZGVsX3NoYWRlcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWwtc2hhZGVyIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZGVsX3NoYWRlcsKgKCkiPmdzdF9nbF9jb250ZXh0X2RlbF9zaGFkZXI8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTE0MCw3ICsxNDAsNyBAQAogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWNoZWNrLWZyYW1lYnVmZmVyLXN0YXR1cyIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2NoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1c8KgKCkiPmdzdF9nbF9jb250ZXh0X2NoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1czwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1jaGVjay1mcmFtZWJ1ZmZlci1zdGF0dXMiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9jaGVja19mcmFtZWJ1ZmZlcl9zdGF0dXPCoCgpIj5nc3RfZ2xfY29udGV4dF9jaGVja19mcmFtZWJ1ZmZlcl9zdGF0dXM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTE0OCw3ICsxNDgsNyBAQAogPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtc2V0LWVycm9yIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9ywqAoKSI+Z3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LXNldC1lcnJvciIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X3NldF9lcnJvcsKgKCkiPmdzdF9nbF9jb250ZXh0X3NldF9lcnJvcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtMTU2LDcgKzE1Niw3IEBACiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LWVycm9yIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2V0X2Vycm9ywqAoKSI+Z3N0X2dsX2NvbnRleHRfZ2V0X2Vycm9yPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdldC1lcnJvciIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dldF9lcnJvcsKgKCkiPmdzdF9nbF9jb250ZXh0X2dldF9lcnJvcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtMTY0LDcgKzE2NCw3IEBACiA8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1jbGVhci1zaGFkZXIiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXLCoCgpIj5nc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXI8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2xlYXItc2hhZGVyIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVywqAoKSI+Z3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVyPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CiA8dHI+CkBAIC0xNzIsNyArMTcyLDcgQEAKIDxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1nZW5lcmF0ZS10ZXh0dXJlLWZ1bGwiIHRpdGxlPSJnc3RfZ2xfZ2VuZXJhdGVfdGV4dHVyZV9mdWxswqAoKSI+Z3N0X2dsX2dlbmVyYXRlX3RleHR1cmVfZnVsbDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2VuZXJhdGUtdGV4dHVyZS1mdWxsIiB0aXRsZT0iZ3N0X2dsX2dlbmVyYXRlX3RleHR1cmVfZnVsbMKgKCkiPmdzdF9nbF9nZW5lcmF0ZV90ZXh0dXJlX2Z1bGw8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTE4MCw3ICsxODAsNyBAQAogPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdENhcHM8L3NwYW4+PC9hPsKgKgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNhcHMtcmVwbGFjZS1hbGwtY2Fwcy1mZWF0dXJlcyIgdGl0bGU9ImdzdF9nbF9jYXBzX3JlcGxhY2VfYWxsX2NhcHNfZmVhdHVyZXPCoCgpIj5nc3RfZ2xfY2Fwc19yZXBsYWNlX2FsbF9jYXBzX2ZlYXR1cmVzPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jYXBzLXJlcGxhY2UtYWxsLWNhcHMtZmVhdHVyZXMiIHRpdGxlPSJnc3RfZ2xfY2Fwc19yZXBsYWNlX2FsbF9jYXBzX2ZlYXR1cmVzwqAoKSI+Z3N0X2dsX2NhcHNfcmVwbGFjZV9hbGxfY2Fwc19mZWF0dXJlczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtMTg4LDcgKzE4OCw3IEBACiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWVuc3VyZS1lbGVtZW50LWRhdGEiIHRpdGxlPSJnc3RfZ2xfZW5zdXJlX2VsZW1lbnRfZGF0YcKgKCkiPmdzdF9nbF9lbnN1cmVfZWxlbWVudF9kYXRhPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1lbnN1cmUtZWxlbWVudC1kYXRhIiB0aXRsZT0iZ3N0X2dsX2Vuc3VyZV9lbGVtZW50X2RhdGHCoCgpIj5nc3RfZ2xfZW5zdXJlX2VsZW1lbnRfZGF0YTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtMTk2LDcgKzE5NiwxNSBAQAogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzaXplIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdzaXplPC9zcGFuPjwvYT4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1nZXQtcGxhbmUtZGF0YS1zaXplIiB0aXRsZT0iZ3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemXCoCgpIj5nc3RfZ2xfZ2V0X3BsYW5lX2RhdGFfc2l6ZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2V0LXBsYW5lLWRhdGEtc2l6ZSIgdGl0bGU9ImdzdF9nbF9nZXRfcGxhbmVfZGF0YV9zaXplwqAoKSI+Z3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3NpemUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3NpemU8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdldC1wbGFuZS1zdGFydCIgdGl0bGU9ImdzdF9nbF9nZXRfcGxhbmVfc3RhcnTCoCgpIj5nc3RfZ2xfZ2V0X3BsYW5lX3N0YXJ0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CiA8dHI+CkBAIC0yMDQsMzAgKzIxMiw1NCBAQAogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1ydW4tcXVlcnkiIHRpdGxlPSJnc3RfZ2xfcnVuX3F1ZXJ5wqAoKSI+Z3N0X2dsX3J1bl9xdWVyeTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtcnVuLXF1ZXJ5IiB0aXRsZT0iZ3N0X2dsX3J1bl9xdWVyecKgKCkiPmdzdF9nbF9ydW5fcXVlcnk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXZhbHVlLWdldC10ZXh0dXJlLXRhcmdldC1tYXNrIiB0aXRsZT0iZ3N0X2dsX3ZhbHVlX2dldF90ZXh0dXJlX3RhcmdldF9tYXNrwqAoKSI+Z3N0X2dsX3ZhbHVlX2dldF90ZXh0dXJlX3RhcmdldF9tYXNrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC12YWx1ZS1zZXQtdGV4dHVyZS10YXJnZXQiIHRpdGxlPSJnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0wqAoKSI+Z3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtdmFsdWUtc2V0LXRleHR1cmUtdGFyZ2V0LWZyb20tbWFzayIgdGl0bGU9ImdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXRfZnJvbV9tYXNrwqAoKSI+Z3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2s8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KIDwvY29sZ3JvdXA+CiA8dGJvZHk+PHRyPgogPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5lbnVtPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dzdEdMRGlzcGxheVByb2plY3Rpb24iIHRpdGxlPSJlbnVtIEdzdEdMRGlzcGxheVByb2plY3Rpb24iPkdzdEdMRGlzcGxheVByb2plY3Rpb248L2E+PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dzdEdMRGlzcGxheVByb2plY3Rpb24iIHRpdGxlPSJlbnVtIEdzdEdMRGlzcGxheVByb2plY3Rpb24iPkdzdEdMRGlzcGxheVByb2plY3Rpb248L2E+PC90ZD4KIDwvdHI+PC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgogPGEgbmFtZT0iR0xDQjpDQVBTIj48L2E+PGgzPkdMQ0LCoCgpPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+CkBAIC0yMzcsOCArMjY5LDggQEAKICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHN0dWZmPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPmNhbGxiYWNrIGRlZmluaXRpb24gZm9yIG9wZXJhdGluZyBvbiB0ZXh0dXJlczwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIyLjYuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzMuNi4yLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yNzYsOCArMzA4LDggQEAKIDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPipHTENCX1YyPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiBzdHVmZjwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5jYWxsYmFjayBkZWZpbml0aW9uIGZvciBvcGVyYXRpbmcgdGhyb3VnaCBhIEZyYW1lYnVmZmVyIG9iamVjdDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIyLjYuMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzMuNi4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMDEsOCArMzMzLDggQEAKICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IGRhdGE8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+Y2xpZW50IGRyYXcgY2FsbGJhY2s8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMi42LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMzLjYuNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzk2LDcgKzQyOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMdWludDwvc3Bhbj4gZmJvPC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTHVpbnQ8L3NwYW4+IGRlcHRoX2J1ZmZlcjwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R0x1aW50PC9zcGFuPiB0ZXh0dXJlX2ZibzwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR0xDQi1WMjpDQVBTIiB0aXRsZT0iR0xDQl9WMsKgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTENCX1YyPC9zcGFuPjwvYT4gY2I8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dMQ0ItVjI6Q0FQUyIgdGl0bGU9IkdMQ0JfVjLCoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R0xDQl9WMjwvc3Bhbj48L2E+IGNiPC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gc3R1ZmY8L2NvZGU+PC9lbT4pOzwvcHJlPgogPC9kaXY+CiA8aHI+CkBAIC00MDYsMTQgKzQzOCwxNCBAQAogZ3N0X2dsX2NvbnRleHRfZ2VuX3NoYWRlciAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKnNoYWRlcl92ZXJ0ZXhfc291cmNlPC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKnNoYWRlcl9mcmFnbWVudF9zb3VyY2U8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICoqc2hhZGVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+CiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9ImdzdC1nbC1jb250ZXh0LWRlbC1zaGFkZXIiPjwvYT48aDM+Z3N0X2dsX2NvbnRleHRfZGVsX3NoYWRlcsKgKCk8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KIGdzdF9nbF9jb250ZXh0X2RlbF9zaGFkZXIgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+CiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KQEAgLTQ0MSw2ICs0NzMsMjMgQEAKIDxhIG5hbWU9ImdzdC1nbC1jb250ZXh0LWNsZWFyLXNoYWRlciI+PC9hPjxoMz5nc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXLCoCgpPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+CiBnc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXIgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5DbGVhcidzIHRoZSBjdXJyZW50bHkgc2V0IHNoYWRlciBmcm9tIHRoZSBHTCBzdGF0ZSBtYWNoaW5lLjwvcD4KKzxwPk5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzMuNi4xNy42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+CiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KQEAgLTQ3OSwyMCArNTI4LDEyOCBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtZ2V0LXBsYW5lLXN0YXJ0Ij48L2E+PGgzPmdzdF9nbF9nZXRfcGxhbmVfc3RhcnTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3NpemUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3NpemU8L3NwYW4+PC9hPgorZ3N0X2dsX2dldF9wbGFuZV9zdGFydCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvQWxpZ25tZW50Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9BbGlnbm1lbnQ8L3NwYW4+PC9hPiAqdmFsaWduPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gcGxhbmU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJnc3QtZ2wtcnVuLXF1ZXJ5Ij48L2E+PGgzPmdzdF9nbF9ydW5fcXVlcnnCoCgpPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgogZ3N0X2dsX3J1bl9xdWVyeSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPiAqZWxlbWVudDwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RRdWVyeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UXVlcnk8L3NwYW4+PC9hPiAqcXVlcnk8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0UGFkLmh0bWwjR3N0UGFkRGlyZWN0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGFkRGlyZWN0aW9uPC9zcGFuPjwvYT4gZGlyZWN0aW9uPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXZhbHVlLWdldC10ZXh0dXJlLXRhcmdldC1tYXNrIj48L2E+PGgzPmdzdF9nbF92YWx1ZV9nZXRfdGV4dHVyZV90YXJnZXRfbWFza8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+Citnc3RfZ2xfdmFsdWVfZ2V0X3RleHR1cmVfdGFyZ2V0X21hc2sgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LUdlbmVyaWMtdmFsdWVzLmh0bWwjR1ZhbHVlIj48c3BhbiBjbGFzcz0idHlwZSI+R1ZhbHVlPC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlNlZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXZhbHVlLXNldC10ZXh0dXJlLXRhcmdldC1mcm9tLW1hc2siIHRpdGxlPSJnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0X2Zyb21fbWFza8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2soKTwvY29kZT48L2E+IGZvciB3aGF0IGVudGFpbHMgYSBtYXNrPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzMuNi4yNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmFsdWU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hbiBpbml0aWFsaXplZCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LUdlbmVyaWMtdmFsdWVzLmh0bWwjR1ZhbHVlIj48c3BhbiBjbGFzcz0idHlwZSI+R1ZhbHVlPC9zcGFuPjwvYT4gb2YgdHlwZSBHX1RZUEVfU1RSSU5HPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzMuNi4yNC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBtYXNrIG9mIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4ncyBpbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dmFsdWU8L2NvZGU+PC9lbT4KKzwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtdmFsdWUtc2V0LXRleHR1cmUtdGFyZ2V0Ij48L2E+PGgzPmdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtR2VuZXJpYy12YWx1ZXMuaHRtbCNHVmFsdWUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HVmFsdWU8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiB0YXJnZXQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzMuNi4yNS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52YWx1ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmFuIGluaXRpYWxpemVkIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtR2VuZXJpYy12YWx1ZXMuaHRtbCNHVmFsdWUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HVmFsdWU8L3NwYW4+PC9hPiBvZiB0eXBlIEdfVFlQRV9TVFJJTkc8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGFyZ2V0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+J3M8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMzLjYuMjUuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB3aGV0aGVyIHRoZSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGFyZ2V0PC9jb2RlPjwvZW0+Citjb3VsZCBiZSBzZXQgb24gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnZhbHVlPC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXZhbHVlLXNldC10ZXh0dXJlLXRhcmdldC1mcm9tLW1hc2siPjwvYT48aDM+Z3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2vCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtR2VuZXJpYy12YWx1ZXMuaHRtbCNHVmFsdWUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HVmFsdWU8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IHRhcmdldF9tYXNrPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkEgbWFzayBpcyBhIGJpdHdpc2UgT1Igb2YgKDEgJmx0OyZsdDsgdGFyZ2V0KSB3aGVyZSB0YXJnZXQgaXMgYSB2YWxpZAorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMzLjYuMjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmFsdWU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hbiB1bmluaXRpYWxpemVkIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtR2VuZXJpYy12YWx1ZXMuaHRtbCNHVmFsdWUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HVmFsdWU8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50YXJnZXRfbWFzazwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgYml0d2lzZSBtYXNrIG9mIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4nczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzMuNi4yNi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHdoZXRoZXIgdGhlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50YXJnZXRfbWFzazwvY29kZT48L2VtPgorY291bGQgYmUgc2V0IG9uIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT52YWx1ZTwvY29kZT48L2VtPgorPC9wPgorPC9kaXY+Cis8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdzdEdMRGlzcGxheVByb2plY3Rpb24iPjwvYT48aDM+ZW51bSBHc3RHTERpc3BsYXlQcm9qZWN0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIyLjcuMi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzMuNy4yLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MzdmMTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwKQEAgLTAsMCArMSw2NDggQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT5PcGVuR0wgZGVidWdnaW5nOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvd1gxMSI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cis8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgorPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Cis8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPgorPC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPC90cj48L3RhYmxlPgorPGRpdiBjbGFzcz0icmVmZW50cnkiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZyI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KKzx0ZCB2YWxpZ249InRvcCI+Cis8aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcudG9wX29mX3BhZ2UiPjwvYT5PcGVuR0wgZGVidWdnaW5nPC9zcGFuPjwvaDI+Cis8cD5PcGVuR0wgZGVidWdnaW5nIOKAlCBoZWxwZXIgcm91dGluZXMgZm9yIGRlYWxpbmcgd2l0aCBPcGVuR0wgZGVidWdnaW5nPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KKzwvdHI+PC90YWJsZT48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KKzxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlIiB0aXRsZT0iR3N0R0xBc3luY0RlYnVnTG9nR2V0TWVzc2FnZcKgKCkiPipHc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlPC9hPjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLW5ldyIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19uZXfCoCgpIj5nc3RfZ2xfYXN5bmNfZGVidWdfbmV3PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1mcmVlIiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWXCoCgpIj5nc3RfZ2xfYXN5bmNfZGVidWdfZnJlZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctaW5pdCIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19pbml0wqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX2luaXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLXVuc2V0IiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX3Vuc2V0wqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX3Vuc2V0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1mcmVlemUiIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplwqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctdGhhdyIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z190aGF3wqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX3RoYXc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLW91dHB1dC1sb2ctbXNnIiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnwqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1zdG9yZS1sb2ctbXNnIiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2fCoCgpIj5nc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctc3RvcmUtbG9nLW1zZy12YWxpc3QiIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZ192YWxpc3TCoCgpIj5nc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZ192YWxpc3Q8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR1NULUdMLUFTWU5DLUNBVC1MRVZFTC1MT0ctdmFsaXN0IiB0aXRsZT0iR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0dfdmFsaXN0KCkiPkdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HX3ZhbGlzdDwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR1NULUdMLUFTWU5DLUNBVC1MRVZFTC1MT0c6Q0FQUyIgdGl0bGU9IkdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HKCkiPkdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HPC9hPjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtaW5zZXJ0LWRlYnVnLW1hcmtlciIgdGl0bGU9ImdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VywqAoKSI+Z3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXI8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Cis8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj5Hc3RHTEFzeW5jRGVidWc8L2E+PC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlIj48L2E+PGgzPkdzdEdMQXN5bmNEZWJ1Z0xvZ0dldE1lc3NhZ2XCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+KkdzdEdMQXN5bmNEZWJ1Z0xvZ0dldE1lc3NhZ2U8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj4gKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHVzZXJfZGF0YTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1hc3luYy1kZWJ1Zy1uZXciPjwvYT48aDM+Z3N0X2dsX2FzeW5jX2RlYnVnX25ld8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX2FzeW5jX2RlYnVnX25ldyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj52b2lkPC9zcGFuPjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5GcmVlIHdpdGggPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctZnJlZSIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19mcmVlwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfYXN5bmNfZGVidWdfZnJlZSgpPC9jb2RlPjwvYT48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zMi42LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFkPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMyLjYuMy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgbmV3IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+PC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1hc3luYy1kZWJ1Zy1mcmVlIj48L2E+PGgzPmdzdF9nbF9hc3luY19kZWJ1Z19mcmVlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPiAqYWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RnJlZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmFkPC9jb2RlPjwvZW0+Cis8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zMi42LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFkPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWFzeW5jLWRlYnVnLWluaXQiPjwvYT48aDM+Z3N0X2dsX2FzeW5jX2RlYnVnX2luaXTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfYXN5bmNfZGVidWdfaW5pdCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+ICphZDwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5Jbml0aWFsaXplIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5hZDwvY29kZT48L2VtPgorLiAgSW50ZW5kZWQgZm9yIHVzZSB3aXRoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+J3MgdGhhdCBhcmUgZW1iZWRkZWQKK2luIG90aGVyIHN0cnVjdHMuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzIuNi41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1hc3luYy1kZWJ1Zy11bnNldCI+PC9hPjxoMz5nc3RfZ2xfYXN5bmNfZGVidWdfdW5zZXTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfYXN5bmNfZGVidWdfdW5zZXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPiAqYWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+VW5zZXQgYW55IGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBkYXRhLiAgSW50ZW5kZWQgZm9yIHVzZSB3aXRoCis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPidzIHRoYXQgYXJlIGVtYmVkZGVkIGluIG90aGVyIHN0cnVjdHMuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzIuNi42LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1hc3luYy1kZWJ1Zy1mcmVlemUiPjwvYT48aDM+Z3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9hc3luY19kZWJ1Z19mcmVlemUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPiAqYWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+ZnJlZXplIHRoZSBkZWJ1ZyBvdXRwdXQuICBXaGlsZSBmcm96ZW4sIGFueSBjYWxsIHRvCis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1vdXRwdXQtbG9nLW1zZyIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZ8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnKCk8L2NvZGU+PC9hPiB3aWxsIG5vdCBvdXRwdXQgYW55IG1lc3NhZ2VzIGJ1dAorc3Vic2VxdWVudCBjYWxscyB0byA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1zdG9yZS1sb2ctbXNnIiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2fCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnKCk8L2NvZGU+PC9hPiB3aWxsIG92ZXJ3cml0ZSBwcmV2aW91cworbWVzc2FnZXMuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzIuNi43LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1hc3luYy1kZWJ1Zy10aGF3Ij48L2E+PGgzPmdzdF9nbF9hc3luY19kZWJ1Z190aGF3wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX2FzeW5jX2RlYnVnX3RoYXcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPiAqYWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+dW5mcmVlemUgdGhlIGRlYnVnIG91dHB1dC4gIFNlZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1mcmVlemUiIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplKCk8L2NvZGU+PC9hPiBmb3Igd2hhdCBmcmVlemluZyBtZWFuczwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMyLjYuOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYXN5bmMtZGVidWctb3V0cHV0LWxvZy1tc2ciPjwvYT48aDM+Z3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4gKmFkPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPk91dHB1dHMgYSBwcmV2aW91c2x5IHN0b3JlZCBkZWJ1ZyBtZXNzYWdlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMyLjYuOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4gdG8gc3RvcmUgdGhlIG1lc3NhZ2UgaW48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1hc3luYy1kZWJ1Zy1zdG9yZS1sb2ctbXNnIj48L2E+PGgzPmdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2cgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPiAqYWQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL2dzdHJlYW1lci1Hc3RJbmZvLmh0bWwjR3N0RGVidWdDYXRlZ29yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdERlYnVnQ2F0ZWdvcnk8L3NwYW4+PC9hPiAqY2F0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9nc3RyZWFtZXItR3N0SW5mby5odG1sI0dzdERlYnVnTGV2ZWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3REZWJ1Z0xldmVsPC9zcGFuPjwvYT4gbGV2ZWw8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKmZpbGU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKmZ1bmN0aW9uPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBsaW5lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+PHNwYW4gY2xhc3M9InR5cGUiPkdPYmplY3Q8L3NwYW4+PC9hPiAqb2JqZWN0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpmb3JtYXQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPi4uLjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5TdG9yZXMgYSBkZWJ1ZyBtZXNzYWdlIGZvciBsYXRlciBvdXRwdXQgYnkgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctb3V0cHV0LWxvZy1tc2ciIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2fCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZygpPC9jb2RlPjwvYT48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zMi42LjEwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFkPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+IHRvIHN0b3JlIHRoZSBtZXNzYWdlIGluPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNhdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9nc3RyZWFtZXItR3N0SW5mby5odG1sI0dzdERlYnVnQ2F0ZWdvcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3REZWJ1Z0NhdGVnb3J5PC9zcGFuPjwvYT4gdG8gb3V0cHV0IHRoZSBtZXNzYWdlIGluPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmxldmVsPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWdvb2QvaHRtbC9nc3QtcGx1Z2lucy1nb29kLXBsdWdpbnMtbGV2ZWwuaHRtbCNHc3RMZXZlbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdExldmVsPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZmlsZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBmaWxlIHdoZXJlIHRoZSBkZWJ1ZyBtZXNzYWdlIG9yaWdpbmF0ZXMgZnJvbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5mdW5jdGlvbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBmdW5jdGlvbiB3aGVyZSB0aGUgZGVidWcgbWVzc2FnZSBvcmlnaW5hdGVzIGZyb208L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bGluZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBsaW5lIGluIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5maWxlPC9jb2RlPjwvZW0+Cit3aGVyZSB0aGUgZGVidWcgbWVzc2FnZSBvcmlnaW5hdGVzIGZyb208L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+b2JqZWN0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HT2JqZWN0PC9zcGFuPjwvYT4gdG8gYXNzb2NpYXRlIHdpdGggdGhlIGRlYnVnIG1lc3NhZ2UuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmZvcm1hdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgcHJpbnRmIHN0eWxlIGZvcm1hdCBzdHJpbmc8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Li4uPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGxpc3Qgb2YgYXJndW1lbnRzIGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Zm9ybWF0PC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWFzeW5jLWRlYnVnLXN0b3JlLWxvZy1tc2ctdmFsaXN0Ij48L2E+PGgzPmdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnX3ZhbGlzdMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnX3ZhbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4gKmFkPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvZ3N0cmVhbWVyLUdzdEluZm8uaHRtbCNHc3REZWJ1Z0NhdGVnb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0RGVidWdDYXRlZ29yeTwvc3Bhbj48L2E+ICpjYXQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9nc3RyZWFtZXItR3N0SW5mby5odG1sI0dzdERlYnVnTGV2ZWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3REZWJ1Z0xldmVsPC9zcGFuPjwvYT4gbGV2ZWw8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpmaWxlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqZnVuY3Rpb248L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBsaW5lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HT2JqZWN0PC9zcGFuPjwvYT4gKm9iamVjdDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKmZvcm1hdDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj52YV9saXN0PC9zcGFuPiB2YXJhcmdzPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlN0b3JlcyBhIGRlYnVnIG1lc3NhZ2UgZm9yIGxhdGVyIG91dHB1dCBieSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1vdXRwdXQtbG9nLW1zZyIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZ8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnKCk8L2NvZGU+PC9hPjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMyLjYuMTEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4gdG8gc3RvcmUgdGhlIG1lc3NhZ2UgaW48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y2F0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL2dzdHJlYW1lci1Hc3RJbmZvLmh0bWwjR3N0RGVidWdDYXRlZ29yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdERlYnVnQ2F0ZWdvcnk8L3NwYW4+PC9hPiB0byBvdXRwdXQgdGhlIG1lc3NhZ2UgaW48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bGV2ZWw8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtZ29vZC9odG1sL2dzdC1wbHVnaW5zLWdvb2QtcGx1Z2lucy1sZXZlbC5odG1sI0dzdExldmVsIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TGV2ZWw8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5maWxlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGZpbGUgd2hlcmUgdGhlIGRlYnVnIG1lc3NhZ2Ugb3JpZ2luYXRlcyBmcm9tPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmZ1bmN0aW9uPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGZ1bmN0aW9uIHdoZXJlIHRoZSBkZWJ1ZyBtZXNzYWdlIG9yaWdpbmF0ZXMgZnJvbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5saW5lPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGxpbmUgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmZpbGU8L2NvZGU+PC9lbT4KK3doZXJlIHRoZSBkZWJ1ZyBtZXNzYWdlIG9yaWdpbmF0ZXMgZnJvbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5vYmplY3Q8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gYSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+PHNwYW4gY2xhc3M9InR5cGUiPkdPYmplY3Q8L3NwYW4+PC9hPiB0byBhc3NvY2lhdGUgd2l0aCB0aGUgZGVidWcgbWVzc2FnZS4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Zm9ybWF0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSBwcmludGYgc3R5bGUgZm9ybWF0IHN0cmluZzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52YXJhcmdzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGxpc3Qgb2YgYXJndW1lbnRzIGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Zm9ybWF0PC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMLUFTWU5DLUNBVC1MRVZFTC1MT0ctdmFsaXN0Ij48L2E+PGgzPkdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HX3ZhbGlzdCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lICAgICAgICAgICAgIEdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HX3ZhbGlzdChhZCxjYXQsbGV2ZWwsb2JqZWN0LGZvcm1hdCx2YXJhcmdzKTwvcHJlPgorPHA+U3RvcmVzIGEgZGVidWcgbWVzc2FnZSBpbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+YWQ8L2NvZGU+PC9lbT4KKyBmb3IgbGF0ZXIgb3V0cHV0PC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzIuNi4xMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPiB0byBzdG9yZSB0aGUgbWVzc2FnZSBpbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jYXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvZ3N0cmVhbWVyLUdzdEluZm8uaHRtbCNHc3REZWJ1Z0NhdGVnb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0RGVidWdDYXRlZ29yeTwvc3Bhbj48L2E+IHRvIG91dHB1dCB0aGUgbWVzc2FnZSBpbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5sZXZlbDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1nb29kL2h0bWwvZ3N0LXBsdWdpbnMtZ29vZC1wbHVnaW5zLWxldmVsLmh0bWwjR3N0TGV2ZWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RMZXZlbDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm9iamVjdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij48c3BhbiBjbGFzcz0idHlwZSI+R09iamVjdDwvc3Bhbj48L2E+IHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBkZWJ1ZyBtZXNzYWdlLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5mb3JtYXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIHByaW50ZiBzdHlsZSBmb3JtYXQgc3RyaW5nPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhcmFyZ3M8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgbGlzdCBvZiBhcmd1bWVudHMgZm9yIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5mb3JtYXQ8L2NvZGU+PC9lbT4KKzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtR0wtQVNZTkMtQ0FULUxFVkVMLUxPRzpDQVBTIj48L2E+PGgzPkdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgICAgICAgICAgICAgR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0coYWQsY2F0LGxldmVsLG9iamVjdCxmb3JtYXQsLi4uKTwvcHJlPgorPHA+U3RvcmVzIGEgZGVidWcgbWVzc2FnZSBpbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+YWQ8L2NvZGU+PC9lbT4KKyBmb3IgbGF0ZXIgb3V0cHV0PC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzIuNi4xMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPiB0byBzdG9yZSB0aGUgbWVzc2FnZSBpbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jYXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvZ3N0cmVhbWVyLUdzdEluZm8uaHRtbCNHc3REZWJ1Z0NhdGVnb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0RGVidWdDYXRlZ29yeTwvc3Bhbj48L2E+IHRvIG91dHB1dCB0aGUgbWVzc2FnZSBpbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5sZXZlbDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1nb29kL2h0bWwvZ3N0LXBsdWdpbnMtZ29vZC1wbHVnaW5zLWxldmVsLmh0bWwjR3N0TGV2ZWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RMZXZlbDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm9iamVjdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij48c3BhbiBjbGFzcz0idHlwZSI+R09iamVjdDwvc3Bhbj48L2E+IHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBkZWJ1ZyBtZXNzYWdlLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5mb3JtYXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIHByaW50ZiBzdHlsZSBmb3JtYXQgc3RyaW5nPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPi4uLjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBsaXN0IG9mIGFyZ3VtZW50cyBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmZvcm1hdDwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1pbnNlcnQtZGVidWctbWFya2VyIj48L2E+PGgzPmdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VywqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqZm9ybWF0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT4uLi48L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+SW5zZXJ0cyBhIG1hcmtlciBpbnRvIGEgR0wgZGVidWcgc3RyZWFtLiAgUmVxdWlyZXMgdGhlICdnbGRlYnVnbWFya2VyJworZGVidWcgY2F0ZWdvcnkgdG8gYmUgYXQgbGVhc3QgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvZ3N0cmVhbWVyLUdzdEluZm8uaHRtbCNHU1QtTEVWRUwtRklYTUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdTVF9MRVZFTF9GSVhNRTwvY29kZT48L2E+LjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMyLjYuMTQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Zm9ybWF0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSBwcmludGYtc3R5bGUgZm9ybWF0IHN0cmluZzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD4uLi48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hcmd1bWVudHMgZm9ybSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Zm9ybWF0PC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTEFzeW5jRGVidWciPjwvYT48aDM+c3RydWN0IEdzdEdMQXN5bmNEZWJ1ZzwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyB7Cit9OworPC9wcmU+Cis8cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPiBhbiBvcGFxdWUgc3RydWN0dXJlIGFuZCBzaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZQorcHJvdmlkZWQgQVBJLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvb3RlciI+Cis8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MjZlYWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbApAQCAtMCwwICsxLDEyOTEgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT5Hc3RHTEJhc2VNZW1vcnk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+Cis8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+Cis8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCIgdGl0bGU9IkdzdEdMQVBJIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iR3N0R0xCYXNlRmlsdGVyLmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VGaWx0ZXIiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KKzx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Cis8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KKzxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5LmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj4KKzwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzwvdHI+PC90YWJsZT4KKzxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeSI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KKzx0ZCB2YWxpZ249InRvcCI+Cis8aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS50b3Bfb2ZfcGFnZSI+PC9hPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2gyPgorPHA+R3N0R0xCYXNlTWVtb3J5IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIGJ1ZmZlcnM8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgorPC90cj48L3RhYmxlPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5LmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+Cis8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtTUFQLUdMOkNBUFMiIHRpdGxlPSJHU1RfTUFQX0dMIj5HU1RfTUFQX0dMPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktRVJST1I6Q0FQUyIgdGl0bGU9IkdTVF9HTF9CQVNFX01FTU9SWV9FUlJPUiI+R1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jIiB0aXRsZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmPCoCgpIj4qR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmM8L2E+PHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYyIgdGl0bGU9IkdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jwqAoKSI+KkdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jPC9hPjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLUFMTE9DOkNBUFMiIHRpdGxlPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19BTExPQyI+R1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQUxMT0M8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVdSQVAtU1lTTUVNOkNBUFMiIHRpdGxlPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX1NZU01FTSI+R1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9TWVNNRU08L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVdSQVAtR1BVLUhBTkRMRTpDQVBTIiB0aXRsZT0iR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9HUFVfSEFORExFIj5HU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX0dQVV9IQU5ETEU8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVVTRVI6Q0FQUyIgdGl0bGU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1VTRVIiPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1VTRVI8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1pbml0IiB0aXRsZT0iZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2luaXTCoCgpIj5nc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtY29weSIgdGl0bGU9ImdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5wqAoKSI+Z3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtZnJlZSIgdGl0bGU9ImdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlwqAoKSI+Z3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtZnJlZS1kYXRhIiB0aXRsZT0iZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YcKgKCkiPmdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGE8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtY29weS1kYXRhIiB0aXRsZT0iZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YcKgKCkiPmdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGE8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktaW5pdC1vbmNlIiB0aXRsZT0iZ3N0X2dsX2Jhc2VfbWVtb3J5X2luaXRfb25jZcKgKCkiPmdzdF9nbF9iYXNlX21lbW9yeV9pbml0X29uY2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktaW5pdCIgdGl0bGU9ImdzdF9nbF9iYXNlX21lbW9yeV9pbml0wqAoKSI+Z3N0X2dsX2Jhc2VfbWVtb3J5X2luaXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWlzLWdsLWJhc2UtbWVtb3J5IiB0aXRsZT0iZ3N0X2lzX2dsX2Jhc2VfbWVtb3J5wqAoKSI+Z3N0X2lzX2dsX2Jhc2VfbWVtb3J5PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb27CoCgpIj4qR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbjwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uwqAoKSI+KkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uPC9hPjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdwb2ludGVyPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb27CoCgpIj4qR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb248L2E+PHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbsKgKCkiPipHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uPC9hPjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uwqAoKSI+KkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbjwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbsKgKCkiPipHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb248L2E+PHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktYWxsb2MiIHRpdGxlPSJnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2PCoCgpIj5nc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2M8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LWFsbG9jLWRhdGEiIHRpdGxlPSJnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NfZGF0YcKgKCkiPmdzdF9nbF9iYXNlX21lbW9yeV9hbGxvY19kYXRhPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1tZW1jcHkiIHRpdGxlPSJnc3RfZ2xfYmFzZV9tZW1vcnlfbWVtY3B5wqAoKSI+Z3N0X2dsX2Jhc2VfbWVtb3J5X21lbWNweTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxhIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgorPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yLXN0cnVjdCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLUFMTE9DQVRPUi1OQU1FOkNBUFMiIHRpdGxlPSJHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX05BTUUiPkdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfTkFNRTwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+ZW51bTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlFcnJvciIgdGl0bGU9ImVudW0gR3N0R0xCYXNlTWVtb3J5RXJyb3IiPkdzdEdMQmFzZU1lbW9yeUVycm9yPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5lbnVtPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeVRyYW5zZmVyIiB0aXRsZT0iZW51bSBHc3RHTEJhc2VNZW1vcnlUcmFuc2ZlciI+R3N0R0xCYXNlTWVtb3J5VHJhbnNmZXI8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+R3N0R0xCYXNlTWVtb3J5PC9hPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgorPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj5Hc3RBbGxvY2F0b3I8L2E+CisgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yCisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdG9yIj5Hc3RHTEJ1ZmZlckFsbG9jYXRvcjwvYT4KKyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3IiPkdzdEdMTWVtb3J5QWxsb2NhdG9yPC9hPgorPC9wcmU+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD5Hc3RHTEJhc2VNZW1vcnkgaXMgYSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+IHN1YmNsYXNzIHByb3ZpZGluZyB0aGUgYmFzaXMgb2Ygc3VwcG9ydAorZm9yIHRoZSBtYXBwaW5nIG9mIEdMIGJ1ZmZlcnMuPC9wPgorPHA+RGF0YSBpcyB1cGxvYWRlZCBvciBkb3dubG9hZGVkIGZyb20gdGhlIEdQVSBhcyBpcyBuZWNlc3NhcnkuPC9wPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1NQVAtR0w6Q0FQUyI+PC9hPjxoMz5HU1RfTUFQX0dMPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9NQVBfR0wgKEdTVF9NQVBfRkxBR19MQVNUICZsdDsmbHQ7IDEpCis8L3ByZT4KKzxwPkZsYWcgaW5kaWNhdGluZyB0aGF0IHdlIHNob3VsZCBtYXAgdGhlIEdMIG9iamVjdCBpbnN0ZWFkIG9mIHRvIHN5c3RlbSBtZW1vcnkuPC9wPgorPHA+Q29tYmluaW5nIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtTUFQLUdMOkNBUFMiIHRpdGxlPSJHU1RfTUFQX0dMIj48c3BhbiBjbGFzcz0idHlwZSI+R1NUX01BUF9HTDwvc3Bhbj48L2E+IHdpdGggPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwjR1NULU1BUC1XUklURTpDQVBTIj48c3BhbiBjbGFzcz0idHlwZSI+R1NUX01BUF9XUklURTwvc3Bhbj48L2E+IGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhvdWdoCit5b3UgYXJlIHdyaXRpbmcgdG8gT3BlbkdMLiBDb252ZXJzZWx5LCBjb21iaW5pbmcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1NQVAtR0w6Q0FQUyIgdGl0bGU9IkdTVF9NQVBfR0wiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HU1RfTUFQX0dMPC9zcGFuPjwvYT4gd2l0aAorPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwjR1NULU1BUC1SRUFEOkNBUFMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HU1RfTUFQX1JFQUQ8L3NwYW4+PC9hPiBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRob3VnaCB5b3UgYXJlIHJlYWRpbmcgZnJvbSBPcGVuR0wuPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtR0wtQkFTRS1NRU1PUlktRVJST1I6Q0FQUyI+PC9hPjxoMz5HU1RfR0xfQkFTRV9NRU1PUllfRVJST1I8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SIChnc3RfZ2xfYmFzZV9tZW1vcnlfZXJyb3JfcXVhcmsgKCkpCis8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMiPjwvYT48aDM+R3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj4qR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmM8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj4gKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpzcmM8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKmRlc3Q8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Q29waWVzIHRoZSBwYXJhbWV0ZXJzIGZyb20gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNyYzwvY29kZT48L2VtPgorIGludG8gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmRlc3Q8L2NvZGU+PC9lbT4KKy4gIFRoZSBzdWJjbGFzcyBtdXN0IGNvbXBvc2UgY29weQorZnVuY3Rpb25zIGZyb20gdGhlIHN1cGVyY2xhc3MuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy44LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c3JjPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHNvdXJjZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IHRvIGNvcHkgZnJvbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5kZXN0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHNvdXJjZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IHRvIGNvcHk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMiPjwvYT48aDM+R3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj4qR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmM8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj4gKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHBhcmFtczwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5GcmVlIGFueSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgZGF0YS4gIFRoZSBzdWJjbGFzcyBtdXN0IGNhbGwgdGhlIHN1cGVyY2xhc3MnCitmcmVlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJhbXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLUFMTE9DOkNBUFMiPjwvYT48aDM+R1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQUxMT0M8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQUxMT0MgKDEgJmx0OyZsdDsgMCkKKzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1XUkFQLVNZU01FTTpDQVBTIj48L2E+PGgzPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfU1lTTUVNPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfU1lTTUVNICgxICZsdDsmbHQ7IDEpCis8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctV1JBUC1HUFUtSEFORExFOkNBUFMiPjwvYT48aDM+R1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9HUFVfSEFORExFPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRSAoMSAmbHQ7Jmx0OyAyKQorPC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVVTRVI6Q0FQUyI+PC9hPjxoMz5HU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19VU0VSPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1VTRVIgKDEgJmx0OyZsdDsgMTYpCis8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWluaXQiPjwvYT48aDM+Z3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2luaXTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2luaXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpwYXJhbXM8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnc2l6ZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdzaXplPC9zcGFuPjwvYT4gc3RydWN0X3NpemU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gYWxsb2NfZmxhZ3M8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYyIgdGl0bGU9IkdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jwqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jPC9zcGFuPjwvYT4gY29weTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jIiB0aXRsZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmPCoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmM8L3NwYW4+PC9hPiBmcmVlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzaXplIj48c3BhbiBjbGFzcz0idHlwZSI+Z3NpemU8L3NwYW4+PC9hPiBhbGxvY19zaXplPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICphbGxvY19wYXJhbXM8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gd3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGdsX2hhbmRsZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiB1c2VyX2RhdGE8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4gbm90aWZ5PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPjxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5ub3RpZnk8L2NvZGU+PC9lbT4KKyB3aWxsIGJlIGNhbGxlZCBvbmNlIGZvciBlYWNoIGFsbG9jYXRlZCBtZW1vcnkgdXNpbmcgdGhlc2UgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnBhcmFtczwvY29kZT48L2VtPgorCit3aGVuIGZyZWVpbmcgdGhlIG1lbW9yeS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMTAuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gdG8gaW5pdGlhbGl6ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdHJ1Y3Rfc2l6ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBzdHJ1Y3Qgc2l6ZSBvZiB0aGUgaW1wbGVtZW50YXRpb248L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWxsb2NfZmxhZ3M8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5zb21lIGFsbG9jIGZsYWdzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvcHk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIGNvcHkgZnVuY3Rpb248L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZnJlZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgZnJlZSBmdW5jdGlvbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4uIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hbGxvY19zaXplPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIG51bWJlciBvZiBieXRlcyB0byBhbGxvY2F0ZS48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWxsb2NfcGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGEgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiB0byBhcHBseS4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRG9uJ3QgZnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XVs8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+d3JhcHBlZF9kYXRhPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGEgc3lzbWVtIGRhdGEgcG9pbnRlciB0byBpbml0aWFsaXplIHRoZSBhbGxvY2F0aW9uIHdpdGguIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl1bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmdsX2hhbmRsZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIEdMIGhhbmRsZSB0byBpbml0aWFsaXplIHRoZSBhbGxvY2F0aW9uIHdpdGguIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD51c2VyX2RhdGE8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdXNlciBkYXRhIHRvIGNhbGwgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm5vdGlmeTwvY29kZT48L2VtPgord2l0aC4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRG9uJ3QgZnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XVs8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bm90aWZ5PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1EYXRhc2V0cy5odG1sI0dEZXN0cm95Tm90aWZ5Ij48c3BhbiBjbGFzcz0idHlwZSI+R0Rlc3Ryb3lOb3RpZnk8L3NwYW4+PC9hPi4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4xMC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHdoZXRoZXIgdGhlIHBhcmFtYXRlcnMgY291bGQgYmUgaW5pdGlhbGl6ZWQ8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWNvcHkiPjwvYT48aDM+Z3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHnCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpzcmM8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy44LjExLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zcmM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiB0byBpbml0aWFsaXplPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy44LjExLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gYSBjb3B5IG9mIHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IHNwZWNpZmllZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c3JjPC9jb2RlPjwvZW0+CitvciA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPiBvbgorZmFpbHVyZTwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtZnJlZSI+PC9hPjxoMz5nc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqcGFyYW1zPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkZyZWVzIHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IGFuZCBhbGwgYXNzb2NpYXRlZCBkYXRhLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4xMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gdG8gaW5pdGlhbGl6ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWZyZWUtZGF0YSI+PC9hPjxoMz5nc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKnBhcmFtczwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5GcmVlcyB0aGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGRhdGEgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnBhcmFtczwvY29kZT48L2VtPgorLiAgRGlyZWN0IHN1YmNsYXNzZXMKK3Nob3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gdGhlaXIgb3duIG92ZXJyaWRlbiBmcmVlIGZ1bmN0aW9uLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4xMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHNvdXJjZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtY29weS1kYXRhIj48L2E+PGgzPmdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGHCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqc3JjPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKmRlc3Q8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Q29waWVzIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgZGF0YSBmcm9tIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zcmM8L2NvZGU+PC9lbT4KKyB0byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZGVzdDwvY29kZT48L2VtPgorLiAgRGlyZWN0IHN1YmNsYXNzZXMKK3Nob3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gdGhlaXIgb3duIG92ZXJyaWRlbiBjb3B5IGZ1bmN0aW9uLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4xNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zcmM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgc291cmNlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZGVzdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBkZXN0aW5hdGlvbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1iYXNlLW1lbW9yeS1pbml0LW9uY2UiPjwvYT48aDM+Z3N0X2dsX2Jhc2VfbWVtb3J5X2luaXRfb25jZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9iYXNlX21lbW9yeV9pbml0X29uY2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+dm9pZDwvc3Bhbj48L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+SW5pdGlhbGl6ZXMgdGhlIEdMIEJhc2UgTWVtb3J5IGFsbG9jYXRvci4gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgZnVuY3Rpb24KK211bHRpcGxlIHRpbWVzLiAgVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyIEdzdEdMQmFzZU1lbW9yeSBvcGVyYXRpb24uPC9wPgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYmFzZS1tZW1vcnktaW5pdCI+PC9hPjxoMz5nc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9iYXNlX21lbW9yeV9pbml0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+ICptZW08L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdG9yPC9zcGFuPjwvYT4gKmFsbG9jYXRvcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPiAqcGFyZW50PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqcGFyYW1zPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3NpemUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nc2l6ZTwvc3Bhbj48L2E+IHNpemU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gdXNlcl9kYXRhPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURhdGFzZXRzLmh0bWwjR0Rlc3Ryb3lOb3RpZnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRGVzdHJveU5vdGlmeTwvc3Bhbj48L2E+IG5vdGlmeTwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5Jbml0aWFsaXplcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+bWVtPC9jb2RlPjwvZW0+Cisgd2l0aCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyczwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4xNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+IHRvIGluaXRpYWxpemU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWxsb2NhdG9yPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdG9yPC9zcGFuPjwvYT4gdG8gaW5pdGlhbGl6ZSB3aXRoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBhcmVudDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiB0aGUgcGFyZW50IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT4gdG8gaW5pdGlhbGl6ZSB3aXRoLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+IHRvIGluaXRpYWxpemUgd2l0aDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJhbXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdGhlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9jb2RlPjwvZW0+Cit0byBpbml0aWFsaXplIHdpdGguIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNpemU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGJlIGFsbG9jYXRlZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD51c2VyX2RhdGE8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdXNlciBkYXRhIHRvIGNhbGwgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm5vdGlmeTwvY29kZT48L2VtPgord2l0aC4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bm90aWZ5PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1EYXRhc2V0cy5odG1sI0dEZXN0cm95Tm90aWZ5Ij48c3BhbiBjbGFzcz0idHlwZSI+R0Rlc3Ryb3lOb3RpZnk8L3NwYW4+PC9hPi4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWlzLWdsLWJhc2UtbWVtb3J5Ij48L2E+PGgzPmdzdF9pc19nbF9iYXNlX21lbW9yecKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfaXNfZ2xfYmFzZV9tZW1vcnkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+ICptZW08L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy44LjE3LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMTcuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB3aGV0aGVyIHRoZSBtZW1vcnkgYXQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm1lbTwvY29kZT48L2VtPgoraXMgYSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT48L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbiI+PC9hPjxoMz5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPsKgKgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+KkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb248c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3I8L3NwYW4+PC9hPiAqYWxsb2NhdG9yPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqcGFyYW1zPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPk5vdGU6IG5vdCBjYWxsZWQgd2l0aCBhIEdMIGNvbnRleHQgY3VycmVudDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4xOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hbGxvY2F0b3I8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3I8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJhbXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiB0byBhbGxvY2F0ZSB0aGUgbWVtb3J5IHdpdGg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4xOC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgbmV3bHkgYWxsb2NhdGVkIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPiBmcm9tIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5hbGxvY2F0b3I8L2NvZGU+PC9lbT4KK2FuZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cGFyYW1zPC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24iPjwvYT48aDM+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+KkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT4gKm1lbTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRXJyb3ItUmVwb3J0aW5nLmh0bWwjR0Vycm9yIj48c3BhbiBjbGFzcz0idHlwZSI+R0Vycm9yPC9zcGFuPjwvYT4gKiplcnJvcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5BcyB0aGlzIHZpcnR1YWwgbWV0aG9kIGlzIGNhbGxlZCB3aXRoIGFuIE9wZW5HTCBjb250ZXh0IGN1cnJlbnQsIHVzZSB0aGlzCitmdW5jdGlvbiB0byBhbGxvY2F0ZSBhbmQgT3BlbkdMIHJlc291cmNlcyBuZWVkZWQgZm9yIHlvdXIgYXBwbGljYXRpb248L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMTkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bWVtPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZXJyb3I8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRXJyb3ItUmVwb3J0aW5nLmh0bWwjR0Vycm9yIj48c3BhbiBjbGFzcz0idHlwZSI+R0Vycm9yPC9zcGFuPjwvYT4gdG8gdXNlIG9uIGZhaWx1cmU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4xOS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHdoZXRoZXIgdGhlIGNyZWF0aW9uIHN1Y2NlZWRlZDwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbiI+PC9hPjxoMz5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ncG9pbnRlcjwvc3Bhbj48L2E+Cis8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj4qR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb248c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPiAqbWVtPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwjR3N0TWFwSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1hcEluZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnc2l6ZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdzaXplPC9zcGFuPjwvYT4gbWF4c2l6ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5BbHNvIHNlZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCNnc3QtbWVtb3J5LW1hcCI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfbWVtb3J5X21hcCgpPC9jb2RlPjwvYT47PC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy44LjIwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm1lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sI0dzdE1hcEluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNYXBJbmZvPC9zcGFuPjwvYT4gdG8gbWFwIHdpdGg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bWF4c2l6ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBzaXplIHRvIG1hcDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy44LjIwLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIG1hcHBlZCBwb2ludGVyPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24iPjwvYT48aDM+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPipHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT4gKm1lbTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sI0dzdE1hcEluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNYXBJbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+QWxzbyBzZWUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwjZ3N0LW1lbW9yeS11bm1hcCI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfbWVtb3J5X3VubWFwKCk8L2NvZGU+PC9hPjs8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMjEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bWVtPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwjR3N0TWFwSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1hcEluZm88L3NwYW4+PC9hPiB0byBtYXAgd2l0aDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb24iPjwvYT48aDM+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPsKgKgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+KkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+ICptZW08L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3NzaXplIj48c3BhbiBjbGFzcz0idHlwZSI+Z3NzaXplPC9zcGFuPjwvYT4gb2Zmc2V0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzc2l6ZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdzc2l6ZTwvc3Bhbj48L2E+IHNpemU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+QWxzbyBzZWUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwjZ3N0LW1lbW9yeS1jb3B5Ij48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9tZW1vcnlfY29weSgpPC9jb2RlPjwvYT47PC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy44LjIyLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm1lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm9mZnNldDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBvZmZzZXQgdG8gY29weSBmcm9tPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNpemU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGNvcHk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4yMi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBuZXdseSBjb3BpZWQgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gb3IgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNOVUxMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5OVUxMPC9jb2RlPjwvYT48L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uIj48L2E+PGgzPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPipHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb248c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPiAqbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkRlc3Ryb3kgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgdGhyb3VnaG91dCB0aGUgbGlmZXRpbWUgb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm1lbTwvY29kZT48L2VtPgorPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy44LjIzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWJhc2UtbWVtb3J5LWFsbG9jIj48L2E+PGgzPmdzdF9nbF9iYXNlX21lbW9yeV9hbGxvY8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT7CoCoKK2dzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3I8L3NwYW4+PC9hPiAqYWxsb2NhdG9yPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqcGFyYW1zPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4yNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hbGxvY2F0b3I8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3I8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJhbXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiB0byBhbGxvY2F0ZSB0aGUgbWVtb3J5IHdpdGg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4yNC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgbmV3IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPiBmcm9tIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5hbGxvY2F0b3I8L2NvZGU+PC9lbT4KK3dpdGggdGhlIHJlcXVlc3RlZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cGFyYW1zPC9jb2RlPjwvZW0+CisuPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1iYXNlLW1lbW9yeS1hbGxvYy1kYXRhIj48L2E+PGgzPmdzdF9nbF9iYXNlX21lbW9yeV9hbGxvY19kYXRhwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF9iYXNlX21lbW9yeV9hbGxvY19kYXRhICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+ICpnbF9tZW08L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYmFzZS1tZW1vcnktbWVtY3B5Ij48L2E+PGgzPmdzdF9nbF9iYXNlX21lbW9yeV9tZW1jcHnCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX2Jhc2VfbWVtb3J5X21lbWNweSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPiAqc3JjPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPiAqZGVzdDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3NzaXplIj48c3BhbiBjbGFzcz0idHlwZSI+Z3NzaXplPC9zcGFuPjwvYT4gb2Zmc2V0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnc3NpemUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nc3NpemU8L3NwYW4+PC9hPiBzaXplPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4yNi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zcmM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgc291cmNlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5kZXN0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGRlc3RpbmF0aW9uIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5vZmZzZXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgb2Zmc2V0IHRvIHN0YXJ0IGF0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNpemU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGNvcHk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4yNi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHdoZXRoZXIgdGhlIGNvcHkgc3VjZWVkZWQuPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3Itc3RydWN0Ij48L2E+PGgzPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcjwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3I7PC9wcmU+Cis8cD5PcGFxdWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcjwvc3Bhbj48L2E+IHN0cnVjdDwvcD4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MiPjwvYT48aDM+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3M8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IHsKKyAgR3N0QWxsb2NhdG9yQ2xhc3MgcGFyZW50X2NsYXNzOworCisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb24gICAgICAgICBhbGxvYzsKKworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbiAgICAgICAgY3JlYXRlOworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbiAgICAgICAgICAgbWFwOworI2lmIDAKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRmx1c2hGdW5jdGlvbiAgICAgICAgIGZsdXNoOyAgICAgICAgLyogbWFrZSBDUFUgd3JpdGVzIHZpc2libGUgdG8gdGhlIEdQVSAqLworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JJbnZhbGlkYXRlRnVuY3Rpb24gICAgaW52YWxpZGF0ZTsgICAvKiBtYWtlIEdQVSB3cml0ZXMgdmlzaWJsZSB0byB0aGUgQ1BVICovCisjZW5kaWYKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbiAgICAgICAgIHVubWFwOworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb24gICAgICAgICAgY29weTsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uICAgICAgIGRlc3Ryb3k7Cit9IEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzOworPC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjkuMy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdG9yQ2xhc3MiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0b3JDbGFzczwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcy5wYXJlbnQtY2xhc3MiPjwvYT5wYXJlbnRfY2xhc3M8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBwYXJlbnQgY2xhc3M8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb27CoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbjwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcy5hbGxvYyI+PC9hPmFsbG9jPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhZC1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb25zPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbsKgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbjwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcy5jcmVhdGUiPjwvYT5jcmVhdGU8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb27CoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb248L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uwqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uPC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzLm1hcCI+PC9hPm1hcDwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbsKgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckZsdXNoRnVuY3Rpb248L3NwYW4+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcy5mbHVzaCI+PC9hPmZsdXNoPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JJbnZhbGlkYXRlRnVuY3Rpb248L3NwYW4+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcy5pbnZhbGlkYXRlIj48L2E+aW52YWxpZGF0ZTwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb27CoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbjwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcy51bm1hcCI+PC9hPnVubWFwPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbsKgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uwqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbjwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcy5jb3B5Ij48L2E+Y29weTwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uwqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbsKgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb248L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MuZGVzdHJveSI+PC9hPmRlc3Ryb3k8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbsKgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb248L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMLUJBU0UtTUVNT1JZLUFMTE9DQVRPUi1OQU1FOkNBUFMiPjwvYT48aDM+R1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9OQU1FPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfTkFNRSAgICJHTEJhc2VNZW1vcnkiCis8L3ByZT4KKzxwPlRoZSBuYW1lIG9mIHRoZSBHTCBidWZmZXIgYWxsb2NhdG9yPC9wPgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlFcnJvciI+PC9hPjxoMz5lbnVtIEdzdEdMQmFzZU1lbW9yeUVycm9yPC9oMz4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOS41LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SLUZBSUxFRDpDQVBTIj48L2E+R1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX0ZBSUxFRDwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5nZW5lcmljIGZhbGl1cmU8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SLU9MRC1MSUJTOkNBUFMiPjwvYT5HU1RfR0xfQkFTRV9NRU1PUllfRVJST1JfT0xEX0xJQlM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+dGhlIGltcGxlbWVudGF0aW9uIGlzIHRvbyBvbGQgYW5kIGRvZXNuJ3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudCBlbm91Z2ggZmVhdHVyZXM8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SLVJFU09VUkNFLVVOQVZBSUxBQkxFOkNBUFMiPjwvYT5HU1RfR0xfQkFTRV9NRU1PUllfRVJST1JfUkVTT1VSQ0VfVU5BVkFJTEFCTEU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+YSByZXNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQ8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMQmFzZU1lbW9yeVRyYW5zZmVyIj48L2E+PGgzPmVudW0gR3N0R0xCYXNlTWVtb3J5VHJhbnNmZXI8L2gzPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy45LjYuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KKzxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtQkFTRS1NRU1PUlktVFJBTlNGRVItTkVFRC1ET1dOTE9BRDpDQVBTIj48L2E+R1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+dGhlIHRleHR1cmUgbmVlZHMgZG93bmxvYWRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGRhdGEgcG9pbnRlcjwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtQkFTRS1NRU1PUlktVFJBTlNGRVItTkVFRC1VUExPQUQ6Q0FQUyI+PC9hPkdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRDwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD50aGUgZGF0YSBwb2ludGVyIG5lZWRzIHVwbG9hZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgdGV4dHVyZTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48L2E+PGgzPnN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXM8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMgeworICBnc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0X3NpemU7CisgIEdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jICAgICBjb3B5OworICBHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYyAgICAgZnJlZTsKKworICBndWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NfZmxhZ3M7CisgIGdzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY19zaXplOworICBHc3RBbGxvY2F0aW9uUGFyYW1zICAgICAgICAgICAgICAqYWxsb2NfcGFyYW1zOworICBHc3RHTENvbnRleHQgICAgICAgICAgICAgICAgICAgICAqY29udGV4dDsKKyAgR0Rlc3Ryb3lOb3RpZnkgICAgICAgICAgICAgICAgICAgIG5vdGlmeTsKKyAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfZGF0YTsKKworICAvKiBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX1NZU01FTSBvbmx5ICovCisgIGdwb2ludGVyICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVkX2RhdGE7CisgIC8qIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRSBvbmx5ICovCisgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9oYW5kbGU7Cit9OworPC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjkuNy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzaXplIj48c3BhbiBjbGFzcz0idHlwZSI+Z3NpemU8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zLnN0cnVjdC1zaXplIj48L2E+c3RydWN0X3NpemU8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBzaXplIG9mIHRoZSBzdHJ1Y3QgKGluY2x1ZGluZyBhbmQgc3ViY2xhc3MgZGF0YSk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMiIHRpdGxlPSJHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuY8KgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYzwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEFsbG9jYXRpb25QYXJhbXMuY29weSI+PC9hPmNvcHk8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jIiB0aXRsZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmPCoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmM8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYyIgdGl0bGU9IkdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jwqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jPC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtcy5mcmVlIj48L2E+ZnJlZTwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMiIHRpdGxlPSJHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuY8KgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zLmFsbG9jLWZsYWdzIj48L2E+YWxsb2NfZmxhZ3M8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmFsbG9jYXRpb24gZmxhZ3M8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3NpemUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nc2l6ZTwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEFsbG9jYXRpb25QYXJhbXMuYWxsb2Mtc2l6ZSI+PC9hPmFsbG9jX3NpemU8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBhbGxvY2F0aW9uIHNpemU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+wqAqPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zLmFsbG9jLXBhcmFtcyI+PC9hPmFsbG9jX3BhcmFtczwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPsKgKjxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtcy5jb250ZXh0Ij48L2E+Y29udGV4dDwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtcy5ub3RpZnkiPjwvYT5ub3RpZnk8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1EYXRhc2V0cy5odG1sI0dEZXN0cm95Tm90aWZ5Ij48c3BhbiBjbGFzcz0idHlwZSI+R0Rlc3Ryb3lOb3RpZnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtcy51c2VyLWRhdGEiPjwvYT51c2VyX2RhdGE8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmFyZ3VtZW50IHRvIGNhbGwgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm5vdGlmeTwvY29kZT48L2VtPgord2l0aDwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtcy53cmFwcGVkLWRhdGEiPjwvYT53cmFwcGVkX2RhdGE8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSB3cmFwcGVkIGRhdGEgcG9pbnRlcjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtcy5nbC1oYW5kbGUiPjwvYT5nbF9oYW5kbGU8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSB3cmFwcGVkIE9wZW5HTCBoYW5kbGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMQmFzZU1lbW9yeSI+PC9hPjxoMz5Hc3RHTEJhc2VNZW1vcnk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IHsKKyAgR3N0TWVtb3J5ICAgICAgICAgICAgIG1lbTsKKworICBHc3RHTENvbnRleHQgICAgICAgICAqY29udGV4dDsKK30gR3N0R0xCYXNlTWVtb3J5OworPC9wcmU+Cis8cD5SZXByZXNlbnRzIGluZm9ybWF0aW9uIGFib3V0IGEgR0wgbWVtb3J5IG9iamVjdDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOS44LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnkubWVtIj48L2E+bWVtPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgcGFyZW50IG9iamVjdDwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+wqAqPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5LmNvbnRleHQiPjwvYT5jb250ZXh0PC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gdG8gdXNlIGZvciBHTCBvcGVyYXRpb25zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+LCA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRvcjwvc3Bhbj48L2E+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvb3RlciI+Cis8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE2MDg1NS4uMDAwMDAwMAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzE2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTx0aXRsZT5Hc3RHTE1lbW9yeTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KLTxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KLTxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEZyYW1lYnVmZmVyIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+Ci08Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Ci08dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgotPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Ci08YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5LmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPgotPC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Ij48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KLTxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgotPHRkIHZhbGlnbj0idG9wIj4KLTxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkudG9wX29mX3BhZ2UiPjwvYT5Hc3RHTE1lbW9yeTwvc3Bhbj48L2gyPgotPHA+R3N0R0xNZW1vcnkg4oCUIG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgdGV4dHVyZXM8L3A+Ci08L3RkPgotPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgotPC90cj48L3RhYmxlPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgotPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktaW5pdCIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfaW5pdMKgKCkiPmdzdF9nbF9tZW1vcnlfaW5pdDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+wqAqCi08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktYWxsb2MiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2FsbG9jwqAoKSI+Z3N0X2dsX21lbW9yeV9hbGxvYzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPsKgKgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXdyYXBwZWQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X3dyYXBwZWTCoCgpIj5nc3RfZ2xfbWVtb3J5X3dyYXBwZWQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT7CoCoKLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS13cmFwcGVkLXRleHR1cmUiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X3dyYXBwZWRfdGV4dHVyZcKgKCkiPmdzdF9nbF9tZW1vcnlfd3JhcHBlZF90ZXh0dXJlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1jb3B5LWludG8tdGV4dHVyZSIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmXCoCgpIj5nc3RfZ2xfbWVtb3J5X2NvcHlfaW50b190ZXh0dXJlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1zZXR1cC1idWZmZXIiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlcsKgKCkiPmdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1zZXR1cC13cmFwcGVkIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9zZXR1cF93cmFwcGVkwqAoKSI+Z3N0X2dsX21lbW9yeV9zZXR1cF93cmFwcGVkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC10ZXh0dXJlLXR5cGUtZnJvbS1mb3JtYXQiIHRpdGxlPSJnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0wqAoKSI+Z3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1pcy1nbC1tZW1vcnkiIHRpdGxlPSJnc3RfaXNfZ2xfbWVtb3J5wqAoKSI+Z3N0X2lzX2dsX21lbW9yeTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxhIG5hbWU9IkdzdEdMQWxsb2NhdG9yIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgotPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRvci1zdHJ1Y3QiIHRpdGxlPSJHc3RHTEFsbG9jYXRvciI+R3N0R0xBbGxvY2F0b3I8L2E+PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0b3JDbGFzcyIgdGl0bGU9IkdzdEdMQWxsb2NhdG9yQ2xhc3MiPkdzdEdMQWxsb2NhdG9yQ2xhc3M8L2E+PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR1NULUdMLU1FTU9SWS1BTExPQ0FUT1I6Q0FQUyIgdGl0bGU9IkdTVF9HTF9NRU1PUllfQUxMT0NBVE9SIj5HU1RfR0xfTUVNT1JZX0FMTE9DQVRPUjwvYT48L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT48L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgotPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+Ci0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KLSAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KLSAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj5Hc3RBbGxvY2F0b3I8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yCi0gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEdMQWxsb2NhdG9yCi08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgotPHA+R3N0R0xNZW1vcnkgaXMgYSA8c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlQnVmZmVyPC9zcGFuPiBzdWJjbGFzcyBwcm92aWRpbmcgc3VwcG9ydCBmb3IgdGhlIG1hcHBpbmcgb2YKLUdMIHRleHR1cmVzLiAgPC9wPgotPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gaXMgY3JlYXRlZCB0aHJvdWdoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktYWxsb2MiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2FsbG9jwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfbWVtb3J5X2FsbG9jKCk8L2NvZGU+PC9hPiBvciBzeXN0ZW0gbWVtb3J5IGNhbgotYmUgd3JhcHBlZCB0aHJvdWdoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktd3JhcHBlZCIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfd3JhcHBlZMKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX21lbW9yeV93cmFwcGVkKCk8L2NvZGU+PC9hPi48L3A+Ci08cD5EYXRhIGlzIHVwbG9hZGVkIG9yIGRvd25sb2FkZWQgZnJvbSB0aGUgR1BVIGFzIGlzIG5lY2Vzc2FyeS48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5LmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LWluaXQiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9pbml0wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX21lbW9yeV9pbml0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPnZvaWQ8L3NwYW4+PC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxwPkluaXRpYWxpemVzIHRoZSBHTCBNZW1vcnkgYWxsb2NhdG9yLiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgotbXVsdGlwbGUgdGltZXMuICBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgR3N0R0xNZW1vcnkgb3BlcmF0aW9uLjwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1hbGxvYyI+PC9hPjxoMz5nc3RfZ2xfbWVtb3J5X2FsbG9jwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT7CoCoKLWdzdF9nbF9tZW1vcnlfYWxsb2MgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpwYXJhbXM8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBwbGFuZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gKnZhbGlnbjwvY29kZT48L2VtPik7PC9wcmU+Ci08cD5BbGxvY2F0ZWQgYSBuZXcgPHNwYW4gY2xhc3M9InR5cGUiPkdzdEdsTWVtb3J5PC9zcGFuPi48L3A+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNy44LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KLTxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJhbXM8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiBvZiB0aGUgbWVtb3J5PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYW5lPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHBsYW5lIHRoaXMgbWVtb3J5IHdpbGwgcmVwcmVzZW50PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhbGlnbjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gYXBwbGllZCB0byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aW5mbzwvY29kZT48L2VtPgotPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNy44LjMuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KLTxwPiBhIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT4gb2JqZWN0IHdpdGggYSBHTCB0ZXh0dXJlIHNwZWNpZmllZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dmluZm88L2NvZGU+PC9lbT4KLWZyb20gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KLTwvcD4KLTwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LXdyYXBwZWQiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV93cmFwcGVkwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+wqAqCi1nc3RfZ2xfbWVtb3J5X3dyYXBwZWQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBwbGFuZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvQWxpZ25tZW50Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9BbGlnbm1lbnQ8L3NwYW4+PC9hPiAqdmFsaWduPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiBkYXRhPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiB1c2VyX2RhdGE8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURhdGFzZXRzLmh0bWwjR0Rlc3Ryb3lOb3RpZnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRGVzdHJveU5vdGlmeTwvc3Bhbj48L2E+IG5vdGlmeTwvY29kZT48L2VtPik7PC9wcmU+Ci08cD5XcmFwcGVkIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5kYXRhPC9jb2RlPjwvZW0+Ci0gaW50byBhIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+LiBUaGlzIHZlcnNpb24gd2lsbCBhY2NvdW50IGZvciBwYWRkaW5nCi1hZGRlZCB0byB0aGUgYWxsb2NhdGlvbiBhbmQgZXhwcmVzc2VkIHRocm91Z2ggPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnZhbGlnbjwvY29kZT48L2VtPgotLjwvcD4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE3LjguNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgotPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gb2YgdGhlIG1lbW9yeSBhbmQgZGF0YTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGFuZTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBwbGFuZSB0aGlzIG1lbW9yeSB3aWxsIHJlcHJlc2VudDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52YWxpZ248L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+IGFwcGxpZWQgdG8gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmluZm88L2NvZGU+PC9lbT4KLTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5kYXRhPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGRhdGEgdG8gd3JhcDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD51c2VyX2RhdGE8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5kYXRhIGNhbGxlZCB3aXRoIGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+bm90aWZ5PC9jb2RlPjwvZW0+Ci08L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bm90aWZ5PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+ZnVuY3Rpb24gY2FsbGVkIHdpdGggPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnVzZXJfZGF0YTwvY29kZT48L2VtPgotd2hlbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZGF0YTwvY29kZT48L2VtPgotbmVlZHMgdG8gYmUgZnJlZWQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE3LjguNC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgotPHA+IGEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gb2JqZWN0IHdpdGggYSBHTCB0ZXh0dXJlIHNwZWNpZmllZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dl9pbmZvPC9jb2RlPjwvZW0+Ci1mcm9tIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+Ci1hbmQgY29udGVudHMgc3BlY2lmaWVkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5kYXRhPC9jb2RlPjwvZW0+Ci08L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS13cmFwcGVkLXRleHR1cmUiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmXCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT7CoCoKLWdzdF9nbF9tZW1vcnlfd3JhcHBlZF90ZXh0dXJlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gdGV4dHVyZV9pZDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiB0ZXh0dXJlX3RhcmdldDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gcGxhbmU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvQWxpZ25tZW50Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9BbGlnbm1lbnQ8L3NwYW4+PC9hPiAqdmFsaWduPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHVzZXJfZGF0YTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1EYXRhc2V0cy5odG1sI0dEZXN0cm95Tm90aWZ5Ij48c3BhbiBjbGFzcz0idHlwZSI+R0Rlc3Ryb3lOb3RpZnk8L3NwYW4+PC9hPiBub3RpZnk8L2NvZGU+PC9lbT4pOzwvcHJlPgotPHA+V3JhcHMgYSB0ZXh0dXJlIGhhbmRsZSBpbnRvIGEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4uPC9wPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTcuOC41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGV4dHVyZV9pZDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBHTCB0ZXh0dXJlIGhhbmRsZTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50ZXh0dXJlX3RhcmdldDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBHTCB0ZXh0dXJlIHRhcmdldDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+IG9mIHRoZSBtZW1vcnk8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxhbmU8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5UaGUgcGxhbmUgdGhpcyBtZW1vcnkgd2lsbCByZXByZXNlbnQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXNlcl9kYXRhPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dXNlciBkYXRhPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm5vdGlmeTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPkRlc3Ryb3kgY2FsbGJhY2sgZm9yIHRoZSB1c2VyIGRhdGE8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE3LjguNS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgotPHA+IGEgbmV3bHkgYWxsb2NhdGVkIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1tZW1vcnktY29weS1pbnRvLXRleHR1cmUiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZcKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci1nc3RfZ2xfbWVtb3J5X2NvcHlfaW50b190ZXh0dXJlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gKmdsX21lbTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHRleF9pZDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9HTFRleHR1cmVUeXBlPC9zcGFuPiB0ZXhfdHlwZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB3aWR0aDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBoZWlnaHQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gc3RyaWRlPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gcmVzcGVjaWZ5PC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxwPkNvcGllcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Z2xfbWVtPC9jb2RlPjwvZW0+Ci0gaW50byB0aGUgdGV4dHVyZSBzcGVjZmlmaWVkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KLS4gIFRoZSBmb3JtYXQgb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgotCi1pcyBzcGVjaWZpZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF90eXBlPC9jb2RlPjwvZW0+Ci0sIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53aWR0aDwvY29kZT48L2VtPgotIGFuZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aGVpZ2h0PC9jb2RlPjwvZW0+Ci0uPC9wPgotPHA+SWYgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnJlc3BlY2lmeTwvY29kZT48L2VtPgotIGlzIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+LCB0aGVuIHRoZSBjb3B5IGlzIHBlcmZvcm1lZCBpbiB0ZXJtcyBvZiB0aGUgdGV4dHVyZQotZGF0YS4gIFRoaXMgaXMgdXNlZnVsIGZvciBzcGxpdHRpbmcgUkdCQSB0ZXh0dXJlcyBpbnRvIFJHIG9yIFIgdGV4dHVyZXMgb3IKLXZpY2UgdmVyc2EuIFRoZSByZXF1aXJlbWVudCBmb3IgdGhpcyB0byBzdWNjZWVkIGlzIHRoYXQgdGhlIGJhY2tpbmcgdGV4dHVyZQotZGF0YSBtdXN0IGJlIHRoZSBzYW1lIHNpemUsIGkuZS4gc2F5IGEgUkdCQTggdGV4dHVyZSBpcyBjb252ZXJ0ZWQgaW50byBhIFJHOAotdGV4dHVyZSwgdGhlbiB0aGUgUkcgdGV4dHVyZSBtdXN0IGhhdmUgdHdpY2UgYXMgbWFueSBwaXhlbHMgYXZhaWxhYmxlIGZvcgotb3V0cHV0IGFzIHRoZSBSR0JBIHRleHR1cmUuPC9wPgotPHA+T3RoZXJ3aXNlLCBpZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cmVzcGVjaWZ5PC9jb2RlPjwvZW0+Ci0gaXMgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiwgdGhlbiB0aGUgY29weSBpcyBwZXJmb3JtZWQgcGVyIHRleGVsCi11c2luZyBnbENvcHlUZXhJbWFnZS4gIFNlZSB0aGUgT3BlbkdMIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb24gdGhlCi1tYXBwaW5ncyBiZXR3ZWVuIHRleHR1cmUgZm9ybWF0cy48L3A+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNy44LjYuNyI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KLTxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5nbF9tZW08L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRleF9pZDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPk9wZW5HTCB0ZXh0dXJlIGlkPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRleF90eXBlPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9HTFRleHR1cmVUeXBlPC9zcGFuPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD53aWR0aDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPndpZHRoIG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KLTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5oZWlnaHQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5oZWlnaHQgb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgotPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnN0cmlkZTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnN0cmlkZSBvZiB0aGUgYmFja2luZyB0ZXh0dXJlIGRhdGE8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cmVzcGVjaWZ5PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+d2hldGhlciB0byBjb3B5IHRoZSBkYXRhIG9yIGNvcHkgcGVyIHRleGVsPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNy44LjYuOCI+PC9hPjxoND5SZXR1cm5zPC9oND4KLTxwPiBXaGV0aGVyIHRoZSBjb3B5IHN1Y2VlZGVkPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1tZW1vcnktc2V0dXAtYnVmZmVyIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVywqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLWdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKnBhcmFtczwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvQWxpZ25tZW50Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9BbGlnbm1lbnQ8L3NwYW4+PC9hPiAqdmFsaWduPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+ICpidWZmZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgotPHA+QWRkcyB0aGUgcmVxdWlyZWQgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT5zIHdpdGggdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiB0bwotPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmJ1ZmZlcjwvY29kZT48L2VtPgotIGJhc2VkIG9uIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5pbmZvPC9jb2RlPjwvZW0+Ci0uIFRoaXMgdmVyc2lvbiBoYW5kbGVzIHBhZGRpbmcgdGhyb3VnaCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dmFsaWduPC9jb2RlPjwvZW0+Ci0uPC9wPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTcuOC43LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGFyYW1zPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhbGlnbjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gYXBwbGllZCB0byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aW5mbzwvY29kZT48L2VtPgotPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmJ1ZmZlcjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXI8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTcuOC43LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Ci08cD4gd2hldGhlciB0aGUgbWVtb3J5J3Mgd2VyZSBzdWNlc3NmdWxseSBhZGRlZC48L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1zZXR1cC13cmFwcGVkIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfc2V0dXBfd3JhcHBlZMKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci1nc3RfZ2xfbWVtb3J5X3NldHVwX3dyYXBwZWQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+ICp2YWxpZ248L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IGRhdGFbR1NUX1ZJREVPX01BWF9QTEFORVNdPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gKnRleHR1cmVzW0dTVF9WSURFT19NQVhfUExBTkVTXTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gdXNlcl9kYXRhPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1EYXRhc2V0cy5odG1sI0dEZXN0cm95Tm90aWZ5Ij48c3BhbiBjbGFzcz0idHlwZSI+R0Rlc3Ryb3lOb3RpZnk8L3NwYW4+PC9hPiBub3RpZnk8L2NvZGU+PC9lbT4pOzwvcHJlPgotPHA+V3JhcHMgcGVyIHBsYW5lIGRhdGEgcG9pbnRlciBpbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZGF0YTwvY29kZT48L2VtPgotIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgaW4KLTxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXh0dXJlczwvY29kZT48L2VtPgotIGJhc2VkIG9uIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5pbmZvPC9jb2RlPjwvZW0+Ci0gYW5kIHBhZGRpbmcgZnJvbSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dmFsaWduPC9jb2RlPjwvZW0+Ci0uIE5vdGUgdGhhdCB0aGUgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm5vdGlmeTwvY29kZT48L2VtPgotCi13aWxsIGJlIGNhbGxlZCBhcyBtYW55IHRpbWUgYXMgdGhlcmUgaXMgcGxhbmVzLjwvcD4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE3LjguOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgotPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhbGlnbjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZGF0YTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgbGlzdCBvZiBwZXIgcGxhbmUgZGF0YSBwb2ludGVyczwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50ZXh0dXJlczwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIGxpc3Qgb2YgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4uIDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bdHJhbnNmZXIgb3V0XTwvc3Bhbj48L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnVzZXJfZGF0YTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnVzZXIgZGF0YSBmb3IgdGhlIGRlc3Ryb3kgZnVuY3Rpb248L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bm90aWZ5PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+QSBmdW5jdGlvbiBjYWxsZWQgZWFjaCB0aW1lIGEgbWVtb3J5IGlzIGZyZWVkPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNy44LjguNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KLTxwPiB3aGV0aGVyIHRoZSBtZW1vcnkncyB3ZXJlIHN1Y2Vzc2Z1bGx5IGNyZWF0ZWQuPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC10ZXh0dXJlLXR5cGUtZnJvbS1mb3JtYXQiPjwvYT48aDM+Z3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdMKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0VmlkZW9HTFRleHR1cmVUeXBlPC9zcGFuPgotZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvRm9ybWF0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9Gb3JtYXQ8L3NwYW4+PC9hPiB2X2Zvcm1hdDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHBsYW5lPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWlzLWdsLW1lbW9yeSI+PC9hPjxoMz5nc3RfaXNfZ2xfbWVtb3J5wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLWdzdF9pc19nbF9tZW1vcnkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+ICptZW08L2NvZGU+PC9lbT4pOzwvcHJlPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTcuOC4xMC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgotPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgotPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5tZW08L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPjwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNy44LjEwLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Ci08cD4gd2hldGhlciB0aGUgbWVtb3J5IGF0IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5tZW08L2NvZGU+PC9lbT4KLWlzIGEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0R0xBbGxvY2F0b3Itc3RydWN0Ij48L2E+PGgzPkdzdEdMQWxsb2NhdG9yPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0R0xBbGxvY2F0b3IgR3N0R0xBbGxvY2F0b3I7PC9wcmU+Ci08cD5PcGFxdWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRvcjwvc3Bhbj48L2E+IHN0cnVjdDwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0R0xBbGxvY2F0b3JDbGFzcyI+PC9hPjxoMz5Hc3RHTEFsbG9jYXRvckNsYXNzPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCB7Ci0gIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzIHBhcmVudF9jbGFzczsKLX0gR3N0R0xBbGxvY2F0b3JDbGFzczsKLTwvcHJlPgotPHA+VGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdG9yQ2xhc3MiIHRpdGxlPSJHc3RHTEFsbG9jYXRvckNsYXNzIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0b3JDbGFzczwvc3Bhbj48L2E+IG9ubHkgY29udGFpbnMgcHJpdmF0ZSBkYXRhPC9wPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHU1QtR0wtTUVNT1JZLUFMTE9DQVRPUjpDQVBTIj48L2E+PGgzPkdTVF9HTF9NRU1PUllfQUxMT0NBVE9SPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SICAgIkdMTWVtb3J5IgotPC9wcmU+Ci08cD5UaGUgbmFtZSBvZiB0aGUgR0wgbWVtb3J5IGFsbG9jYXRvcjwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0R0xNZW1vcnkiPjwvYT48aDM+R3N0R0xNZW1vcnk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IHsKLSAgR3N0R0xCYXNlQnVmZmVyICAgICAgIG1lbTsKLQotICBndWludCAgICAgICAgICAgICAgICAgdGV4X2lkOwotICBndWludCAgICAgICAgICAgICAgICAgdGV4X3RhcmdldDsKLSAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF90eXBlOwotICBHc3RWaWRlb0luZm8gICAgICAgICAgaW5mbzsKLSAgR3N0VmlkZW9BbGlnbm1lbnQgICAgIHZhbGlnbjsKLSAgZ3VpbnQgICAgICAgICAgICAgICAgIHBsYW5lOwotICBnZmxvYXQgICAgICAgICAgICAgICAgdGV4X3NjYWxpbmdbMl07Ci19IEdzdEdMTWVtb3J5OwotPC9wcmU+Ci08cD5SZXByZXNlbnRzIGluZm9ybWF0aW9uIGFib3V0IGEgR0wgdGV4dHVyZTwvcD4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE3LjkuNS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KLTxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfYW5ub3RhdGlvbnMiPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlQnVmZmVyPC9zcGFuPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xNZW1vcnkubWVtIj48L2E+bWVtPC9jb2RlPjwvZW0+OzwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgcGFyZW50IG9iamVjdDwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5LnRleC1pZCI+PC9hPnRleF9pZDwvY29kZT48L2VtPjs8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIEdMIHRleHR1cmUgaWQgZm9yIHRoaXMgbWVtb3J5PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xNZW1vcnkudGV4LXRhcmdldCI+PC9hPnRleF90YXJnZXQ8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBHTCB0ZXh0dXJlIHRhcmdldCBmb3IgdGhpcyBtZW1vcnk8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9HTFRleHR1cmVUeXBlPC9zcGFuPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xNZW1vcnkudGV4LXR5cGUiPjwvYT50ZXhfdHlwZTwvY29kZT48L2VtPjs8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHRleHR1cmUgdHlwZTwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTE1lbW9yeS5pbmZvIj48L2E+aW5mbzwvY29kZT48L2VtPjs8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHRleHR1cmUncyA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvQWxpZ25tZW50Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9BbGlnbm1lbnQ8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xNZW1vcnkudmFsaWduIj48L2E+dmFsaWduPC9jb2RlPjwvZW0+OzwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5kYXRhIGFsaWdubWVudCBmb3Igc3lzdGVtIG1lbW9yeSBtYXBwaW5nPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xNZW1vcnkucGxhbmUiPjwvYT5wbGFuZTwvY29kZT48L2VtPjs8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+ZGF0YSBwbGFuZSBpbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aW5mbzwvY29kZT48L2VtPgotPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTE1lbW9yeS50ZXgtc2NhbGluZyI+PC9hPnRleF9zY2FsaW5nPC9jb2RlPjwvZW0+WzJdOzwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5HTCBzaGFkZXIgc2NhbGluZyBwYXJhbWV0ZXJzIGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dmFsaWduPC9jb2RlPjwvZW0+Ci1hbmQvb3Igd2lkdGgvaGVpZ2h0PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5LnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KLTxwPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT4sIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdG9yPC9zcGFuPjwvYT4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyUG9vbDwvc3Bhbj48L2E+PC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImZvb3RlciI+Ci08aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2JhNGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbApAQCAtMCwwICsxLDMyNSBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPHRpdGxlPkdzdEdMTWVtb3J5UEJPOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgorPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KKzx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgorPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8ub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj4KKzwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPC90cj48L3RhYmxlPgorPGRpdiBjbGFzcz0icmVmZW50cnkiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8iPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby50b3Bfb2ZfcGFnZSI+PC9hPkdzdEdMTWVtb3J5UEJPPC9zcGFuPjwvaDI+Cis8cD5Hc3RHTE1lbW9yeVBCTyDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCB0ZXh0dXJlczwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Cis8L3RyPjwvdGFibGU+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgorPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtaXMtZ2wtbWVtb3J5LXBibyIgdGl0bGU9ImdzdF9pc19nbF9tZW1vcnlfcGJvwqAoKSI+Z3N0X2lzX2dsX21lbW9yeV9wYm88L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtZ2wtbWVtb3J5LXBiby1jb3B5LWludG8tdGV4dHVyZSIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfcGJvX2NvcHlfaW50b190ZXh0dXJlwqAoKSI+Z3N0X2dsX21lbW9yeV9wYm9fY29weV9pbnRvX3RleHR1cmU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1nbC1tZW1vcnktcGJvLWRvd25sb2FkLXRyYW5zZmVyIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9wYm9fZG93bmxvYWRfdHJhbnNmZXLCoCgpIj5nc3RfZ2xfbWVtb3J5X3Bib19kb3dubG9hZF90cmFuc2ZlcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWdsLW1lbW9yeS1wYm8taW5pdC1vbmNlIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9wYm9faW5pdF9vbmNlwqAoKSI+Z3N0X2dsX21lbW9yeV9wYm9faW5pdF9vbmNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtZ2wtbWVtb3J5LXBiby11cGxvYWQtdHJhbnNmZXIiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X3Bib191cGxvYWRfdHJhbnNmZXLCoCgpIj5nc3RfZ2xfbWVtb3J5X3Bib191cGxvYWRfdHJhbnNmZXI8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8YSBuYW1lPSJHc3RHTE1lbW9yeVBCT0FsbG9jYXRvciI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Cis8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPQWxsb2NhdG9yLXN0cnVjdCIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yIj5Hc3RHTE1lbW9yeVBCT0FsbG9jYXRvcjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzcyI+R3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHU1QtR0wtTUVNT1JZLVBCTy1BTExPQ0FUT1ItTkFNRTpDQVBTIiB0aXRsZT0iR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX05BTUUiPkdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPkdzdEdMTWVtb3J5UEJPPC9hPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Cis8cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgorICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwiPkdzdEFsbG9jYXRvcjwvYT4KKyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3I8L2E+CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5QWxsb2NhdG9yIj5Hc3RHTE1lbW9yeUFsbG9jYXRvcjwvYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yCis8L3ByZT4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR3N0R0xNZW1vcnlQQk8iIHRpdGxlPSJHc3RHTE1lbW9yeVBCTyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5UEJPPC9zcGFuPjwvYT4gaXMgY3JlYXRlZCBvciB3cmFwcGVkIHRocm91Z2ggPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1hbGxvYyIgdGl0bGU9ImdzdF9nbF9iYXNlX21lbW9yeV9hbGxvY8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jKCk8L2NvZGU+PC9hPgord2l0aCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4uPC9wPgorPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR3N0R0xNZW1vcnlQQk8iIHRpdGxlPSJHc3RHTE1lbW9yeVBCTyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5UEJPPC9zcGFuPjwvYT4gaXMgY3JlYXRlZCB0aHJvdWdoIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX21lbW9yeV9wYm9fYWxsb2MoKTwvY29kZT4gb3Igc3lzdGVtIG1lbW9yeSBjYW4KK2JlIHdyYXBwZWQgdGhyb3VnaCA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9tZW1vcnlfcGJvX3dyYXBwZWQoKTwvY29kZT4uPC9wPgorPHA+RGF0YSBpcyB1cGxvYWRlZCBvciBkb3dubG9hZGVkIGZyb20gdGhlIEdQVSBhcyBpcyBuZWNlc3NhcnkuPC9wPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWlzLWdsLW1lbW9yeS1wYm8iPjwvYT48aDM+Z3N0X2lzX2dsX21lbW9yeV9wYm/CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2lzX2dsX21lbW9yeV9wYm8gKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+ICptZW08L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTkuOC4yLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOS44LjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB3aGV0aGVyIHRoZSBtZW1vcnkgYXQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm1lbTwvY29kZT48L2VtPgoraXMgYSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCTyIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnlQQk88L3NwYW4+PC9hPjwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LXBiby1jb3B5LWludG8tdGV4dHVyZSI+PC9hPjxoMz5nc3RfZ2xfbWVtb3J5X3Bib19jb3B5X2ludG9fdGV4dHVyZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xfbWVtb3J5X3Bib19jb3B5X2ludG9fdGV4dHVyZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeVBCTzwvc3Bhbj48L2E+ICpnbF9tZW08L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gdGV4X2lkPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IHRhcmdldDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4gdGV4X3R5cGU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHdpZHRoPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBoZWlnaHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHN0cmlkZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiByZXNwZWNpZnk8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Q29waWVzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5nbF9tZW08L2NvZGU+PC9lbT4KKyBpbnRvIHRoZSB0ZXh0dXJlIHNwZWNmaWZpZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgorLiAgVGhlIGZvcm1hdCBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+CisKK2lzIHNwZWNpZmllZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X3R5cGU8L2NvZGU+PC9lbT4KKywgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndpZHRoPC9jb2RlPjwvZW0+CisgYW5kIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5oZWlnaHQ8L2NvZGU+PC9lbT4KKy48L3A+Cis8cD5JZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cmVzcGVjaWZ5PC9jb2RlPjwvZW0+CisgaXMgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4sIHRoZW4gdGhlIGNvcHkgaXMgcGVyZm9ybWVkIGluIHRlcm1zIG9mIHRoZSB0ZXh0dXJlCitkYXRhLiAgVGhpcyBpcyB1c2VmdWwgZm9yIHNwbGl0dGluZyBSR0JBIHRleHR1cmVzIGludG8gUkcgb3IgUiB0ZXh0dXJlcyBvcgordmljZSB2ZXJzYS4gVGhlIHJlcXVpcmVtZW50IGZvciB0aGlzIHRvIHN1Y2NlZWQgaXMgdGhhdCB0aGUgYmFja2luZyB0ZXh0dXJlCitkYXRhIG11c3QgYmUgdGhlIHNhbWUgc2l6ZSwgaS5lLiBzYXkgYSBSR0JBOCB0ZXh0dXJlIGlzIGNvbnZlcnRlZCBpbnRvIGEgUkc4Cit0ZXh0dXJlLCB0aGVuIHRoZSBSRyB0ZXh0dXJlIG11c3QgaGF2ZSB0d2ljZSBhcyBtYW55IHBpeGVscyBhdmFpbGFibGUgZm9yCitvdXRwdXQgYXMgdGhlIFJHQkEgdGV4dHVyZS48L3A+Cis8cD5PdGhlcndpc2UsIGlmIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5yZXNwZWNpZnk8L2NvZGU+PC9lbT4KKyBpcyA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+LCB0aGVuIHRoZSBjb3B5IGlzIHBlcmZvcm1lZCBwZXIgdGV4ZWwKK3VzaW5nIGdsQ29weVRleEltYWdlLiAgU2VlIHRoZSBPcGVuR0wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscyBvbiB0aGUKK21hcHBpbmdzIGJldHdlZW4gdGV4dHVyZSBmb3JtYXRzLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE5LjguMy43Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5nbF9tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeVBCTzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRleF9pZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIGlkPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRhcmdldDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBkZXN0aW5hdGlvbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRleF90eXBlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGRlc3RpbmF0aW9uIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPndpZHRoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+d2lkdGggb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmhlaWdodDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmhlaWdodCBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c3RyaWRlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+c3RyaWRlIG9mIHRoZSBiYWNraW5nIHRleHR1cmUgZGF0YTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5yZXNwZWNpZnk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD53aGV0aGVyIHRvIGNvcHkgdGhlIGRhdGEgb3IgY29weSBwZXIgdGV4ZWw8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE5LjguMy44Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IFdoZXRoZXIgdGhlIGNvcHkgc3VjZWVkZWQ8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1wYm8tZG93bmxvYWQtdHJhbnNmZXIiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9wYm9fZG93bmxvYWRfdHJhbnNmZXLCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfbWVtb3J5X3Bib19kb3dubG9hZF90cmFuc2ZlciAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeVBCTzwvc3Bhbj48L2E+ICpnbF9tZW08L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+VHJhbnNmZXIgdGhlIHRleHR1cmUgZGF0YSBmcm9tIHRoZSBQQk8gaW50byB0aGUgdGV4dHVyZSBpZiBuZWNlc3NhcnkuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTkuOC40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5nbF9tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeVBCTzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LXBiby1pbml0LW9uY2UiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9wYm9faW5pdF9vbmNlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX21lbW9yeV9wYm9faW5pdF9vbmNlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPnZvaWQ8L3NwYW4+PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1wYm8tdXBsb2FkLXRyYW5zZmVyIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfcGJvX3VwbG9hZF90cmFuc2ZlcsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9tZW1vcnlfcGJvX3VwbG9hZF90cmFuc2ZlciAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeVBCTzwvc3Bhbj48L2E+ICpnbF9tZW08L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTE1lbW9yeVBCT0FsbG9jYXRvci1zdHJ1Y3QiPjwvYT48aDM+R3N0R0xNZW1vcnlQQk9BbGxvY2F0b3I8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RHTE1lbW9yeVBCT0FsbG9jYXRvciBHc3RHTE1lbW9yeVBCT0FsbG9jYXRvcjs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzcyI+PC9hPjxoMz5Hc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCB7CisgIEdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MgcGFyZW50X2NsYXNzOworfSBHc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzOworPC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1HTC1NRU1PUlktUEJPLUFMTE9DQVRPUi1OQU1FOkNBUFMiPjwvYT48aDM+R1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX05BTUU8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX05BTUUgICAiR0xNZW1vcnlQQk8iCis8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xNZW1vcnlQQk8iPjwvYT48aDM+R3N0R0xNZW1vcnlQQk88L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IHsKKyAgR3N0R0xNZW1vcnkgICAgICBtZW07Cit9IEdzdEdMTWVtb3J5UEJPOworPC9wcmU+Cis8cD5Qcml2YXRlIGluc3RhbmNlPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT4sIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdG9yPC9zcGFuPjwvYT4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyUG9vbDwvc3Bhbj48L2E+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvb3RlciI+Cis8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQyODNlZi4uMDAwMDAwMAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAwNSArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08dGl0bGU+R3N0R0xTaGFkZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Ci08bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+Ci08bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xTeW5jTWV0YSI+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPgotPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgotPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KLTx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgotPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIucHJvcGVydGllcyIgY2xhc3M9InNob3J0Y3V0Ij5Qcm9wZXJ0aWVzPC9hPjwvc3Bhbj4KLTwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlciI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KLTx0ZCB2YWxpZ249InRvcCI+Ci08aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLnRvcF9vZl9wYWdlIj48L2E+R3N0R0xTaGFkZXI8L3NwYW4+PC9oMj4KLTxwPkdzdEdMU2hhZGVyPC9wPgotPC90ZD4KLTx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KLTwvdHI+PC90YWJsZT48L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KLTxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1RdWFya3MuaHRtbCNHUXVhcmsiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R1F1YXJrPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1lcnJvci1xdWFyayIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZXJyb3JfcXVhcmvCoCgpIj5nc3RfZ2xfc2hhZGVyX2Vycm9yX3F1YXJrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR1NULUdMLVNIQURFUi1FUlJPUjpDQVBTIiB0aXRsZT0iR1NUX0dMX1NIQURFUl9FUlJPUiI+R1NUX0dMX1NIQURFUl9FUlJPUjwvYT48L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmludDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlcnZhcmlhYmxlLXNldCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9zZXTCoCgpIj5nc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5pbnQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXJ2YXJpYWJsZXMtcGFyc2UiIHRpdGxlPSJnc3RfZ2xfc2hhZGVydmFyaWFibGVzX3BhcnNlwqAoKSI+Z3N0X2dsX3NoYWRlcnZhcmlhYmxlc19wYXJzZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT7CoCoKLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXciIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX25ld8KgKCkiPmdzdF9nbF9zaGFkZXJfbmV3PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC12ZXJ0ZXgtc291cmNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdmVydGV4X3NvdXJjZcKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3ZlcnRleF9zb3VyY2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LWZyYWdtZW50LXNvdXJjZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X2ZyYWdtZW50X3NvdXJjZcKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X2ZyYWdtZW50X3NvdXJjZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC12ZXJ0ZXgtc291cmNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9nZXRfdmVydGV4X3NvdXJjZcKgKCkiPmdzdF9nbF9zaGFkZXJfZ2V0X3ZlcnRleF9zb3VyY2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtZnJhZ21lbnQtc291cmNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9nZXRfZnJhZ21lbnRfc291cmNlwqAoKSI+Z3N0X2dsX3NoYWRlcl9nZXRfZnJhZ21lbnRfc291cmNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5pbnQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LXByb2dyYW0taGFuZGxlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGXCoCgpIj5nc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtYWN0aXZlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfYWN0aXZlwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfYWN0aXZlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1pcy1jb21waWxlZCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfaXNfY29tcGlsZWTCoCgpIj5nc3RfZ2xfc2hhZGVyX2lzX2NvbXBpbGVkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlwqAoKSI+Z3N0X2dsX3NoYWRlcl9jb21waWxlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLWFuZC1jaGVjayIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbmRfY2hlY2vCoCgpIj5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYW5kX2NoZWNrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLWFsbC13aXRoLWF0dHJpYnMtYW5kLWNoZWNrIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlX2FsbF93aXRoX2F0dHJpYnNfYW5kX2NoZWNrwqAoKSI+Z3N0X2dsX3NoYWRlcl9jb21waWxlX2FsbF93aXRoX2F0dHJpYnNfYW5kX2NoZWNrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC1mLWFuZC1jaGVjayIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfZl9hbmRfY2hlY2vCoCgpIj5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X2ZfYW5kX2NoZWNrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC12LWFuZC1jaGVjayIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdl9hbmRfY2hlY2vCoCgpIj5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC12Zi1hbmQtY2hlY2siIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVja8KgKCkiPmdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdmZfYW5kX2NoZWNrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXJlbGVhc2UiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3JlbGVhc2XCoCgpIj5nc3RfZ2xfc2hhZGVyX3JlbGVhc2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItdXNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl91c2XCoCgpIj5nc3RfZ2xfc2hhZGVyX3VzZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWnCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaXYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWl2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmnCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMml2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaXY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2YiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Z2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zacKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2k8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2l2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaXbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGkiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aXYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGl2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4M2Z2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMngzZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDNmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMng0ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4NGZ2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4MmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3gyZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDJmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3g0ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4MmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgyZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDJmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgzZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4M2Z2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LWF0dHJpYnV0ZS1sb2NhdGlvbiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbsKgKCkiPmdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1iaW5kLWF0dHJpYnV0ZS1sb2NhdGlvbiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfYmluZF9hdHRyaWJ1dGVfbG9jYXRpb27CoCgpIj5nc3RfZ2xfc2hhZGVyX2JpbmRfYXR0cmlidXRlX2xvY2F0aW9uPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgotPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX2ZsYWdzIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS1hY3RpdmUiIHRpdGxlPSJUaGUg4oCcYWN0aXZl4oCdIHByb3BlcnR5Ij5hY3RpdmU8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLWNvbXBpbGVkIiB0aXRsZT0iVGhlIOKAnGNvbXBpbGVk4oCdIHByb3BlcnR5Ij5jb21waWxlZDwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci0tZnJhZ21lbnQtc3JjIiB0aXRsZT0iVGhlIOKAnGZyYWdtZW50LXNyY+KAnSBwcm9wZXJ0eSI+ZnJhZ21lbnQtc3JjPC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+Ci08YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+wqAqPC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLXZlcnRleC1zcmMiIHRpdGxlPSJUaGUg4oCcdmVydGV4LXNyY+KAnSBwcm9wZXJ0eSI+dmVydGV4LXNyYzwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGEgbmFtZT0iR3N0R0xTaGFkZXIiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Ci08Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5lbnVtPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXJFcnJvciIgdGl0bGU9ImVudW0gR3N0R0xTaGFkZXJFcnJvciI+R3N0R0xTaGFkZXJFcnJvcjwvYT48L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+ZW51bTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyU291cmNlVHlwZSIgdGl0bGU9ImVudW0gR3N0R0xTaGFkZXJTb3VyY2VUeXBlIj5Hc3RHTFNoYWRlclNvdXJjZVR5cGU8L2E+PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXJ2YXJpYWJsZS1kZXNjIiB0aXRsZT0ic3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjIj5nc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYzwvYT48L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci1zdHJ1Y3QiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+PC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RHTFNoYWRlcgotPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItZXJyb3ItcXVhcmsiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9lcnJvcl9xdWFya8KgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItUXVhcmtzLmh0bWwjR1F1YXJrIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdRdWFyazwvc3Bhbj48L2E+Ci1nc3RfZ2xfc2hhZGVyX2Vycm9yX3F1YXJrICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPnZvaWQ8L3NwYW4+PC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR1NULUdMLVNIQURFUi1FUlJPUjpDQVBTIj48L2E+PGgzPkdTVF9HTF9TSEFERVJfRVJST1I8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0dMX1NIQURFUl9FUlJPUiAoZ3N0X2dsX3NoYWRlcl9lcnJvcl9xdWFyayAoKSkKLTwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVydmFyaWFibGUtc2V0Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9zZXTCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmludDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9zZXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+c3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjPC9zcGFuPiAqcmV0PC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlcnZhcmlhYmxlcy1wYXJzZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVydmFyaWFibGVzX3BhcnNlwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5pbnQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVydmFyaWFibGVzX3BhcnNlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPmNoYXI8L3NwYW4+ICp2YXJpYWJsZXM8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPmludDwvc3Bhbj4gKCpfc2V0dmFyaWFibGUpIChHc3RHTFNoYWRlciAqIHNoYWRlciwgc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICogdik8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLW5ldyI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX25ld8KgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT7CoCoKLWdzdF9nbF9zaGFkZXJfbmV3ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC12ZXJ0ZXgtc291cmNlIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3ZlcnRleF9zb3VyY2XCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF92ZXJ0ZXhfc291cmNlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqc3JjPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtZnJhZ21lbnQtc291cmNlIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X2ZyYWdtZW50X3NvdXJjZcKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X2ZyYWdtZW50X3NvdXJjZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqc3JjPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1nZXQtdmVydGV4LXNvdXJjZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2dldF92ZXJ0ZXhfc291cmNlwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKLWdzdF9nbF9zaGFkZXJfZ2V0X3ZlcnRleF9zb3VyY2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItZ2V0LWZyYWdtZW50LXNvdXJjZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2dldF9mcmFnbWVudF9zb3VyY2XCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgotZ3N0X2dsX3NoYWRlcl9nZXRfZnJhZ21lbnRfc291cmNlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWdldC1wcm9ncmFtLWhhbmRsZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZcKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+aW50PC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LWFjdGl2ZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF9hY3RpdmXCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF9hY3RpdmUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gYWN0aXZlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1pcy1jb21waWxlZCI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2lzX2NvbXBpbGVkwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLWdzdF9nbF9zaGFkZXJfaXNfY29tcGlsZWQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItY29tcGlsZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2NvbXBpbGXCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgotZ3N0X2dsX3NoYWRlcl9jb21waWxlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUVycm9yLVJlcG9ydGluZy5odG1sI0dFcnJvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdFcnJvcjwvc3Bhbj48L2E+ICoqZXJyb3I8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtYW5kLWNoZWNrIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbmRfY2hlY2vCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgotZ3N0X2dsX3NoYWRlcl9jb21waWxlX2FuZF9jaGVjayAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKnNvdXJjZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlclNvdXJjZVR5cGUiIHRpdGxlPSJlbnVtIEdzdEdMU2hhZGVyU291cmNlVHlwZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyU291cmNlVHlwZTwvc3Bhbj48L2E+IHR5cGU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtYWxsLXdpdGgtYXR0cmlicy1hbmQtY2hlY2siPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9jb21waWxlX2FsbF93aXRoX2F0dHJpYnNfYW5kX2NoZWNrwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLWdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbGxfd2l0aF9hdHRyaWJzX2FuZF9jaGVjawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICp2X3NyYzwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKmZfc3JjPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gbl9hdHRyaWJzPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqYXR0cmliX25hbWVzW108L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R0xpbnQ8L3NwYW4+IGF0dHJpYl9sb2NzW108L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtd2l0aC1kZWZhdWx0LWYtYW5kLWNoZWNrIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfZl9hbmRfY2hlY2vCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgotZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF9mX2FuZF9jaGVjawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICp2X3NyYzwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IG5fYXR0cmliczwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKmF0dHJpYl9uYW1lc1tdPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMaW50PC9zcGFuPiBhdHRyaWJfbG9jc1tdPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC12LWFuZC1jaGVjayI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdl9hbmRfY2hlY2sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqZl9zcmM8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R0xpbnQ8L3NwYW4+ICpwb3NfbG9jPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMaW50PC9zcGFuPiAqdGV4X2xvYzwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtdmYtYW5kLWNoZWNrIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdmZfYW5kX2NoZWNrwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdmZfYW5kX2NoZWNrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTGludDwvc3Bhbj4gKnBvc19sb2M8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R0xpbnQ8L3NwYW4+ICp0ZXhfbG9jPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1yZWxlYXNlIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfcmVsZWFzZcKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfcmVsZWFzZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci11c2UiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl91c2XCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3VzZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWZ2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWl2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiB2MDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdjE8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmZ2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmnCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB2MDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB2MTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMml2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMml2wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaXYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYwPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiB2MTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdjI8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Z2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2nCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB2MDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB2MTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB2MjwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2l2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2l2wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaXYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYwPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiB2MTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdjI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYzPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZnbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjA8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjE8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjM8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGl2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yZnbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yZnYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gdHJhbnNwb3NlPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4M2Z2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4M2Z2wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMngzZnYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB0cmFuc3Bvc2U8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMng0ZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMng0ZnbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDRmdgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHRyYW5zcG9zZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHRyYW5zcG9zZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDJmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDJmdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4MmZ2Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gdHJhbnNwb3NlPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4NGZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3g0ZnYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB0cmFuc3Bvc2U8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNGZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB0cmFuc3Bvc2U8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgyZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgyZnbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDJmdgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHRyYW5zcG9zZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDNmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4M2Z2Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gdHJhbnNwb3NlPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItZ2V0LWF0dHJpYnV0ZS1sb2NhdGlvbiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb27CoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KLWdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItYmluZC1hdHRyaWJ1dGUtbG9jYXRpb24iPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9iaW5kX2F0dHJpYnV0ZV9sb2NhdGlvbsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfYmluZF9hdHRyaWJ1dGVfbG9jYXRpb24gKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGluZGV4PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RHTFNoYWRlckVycm9yIj48L2E+PGgzPmVudW0gR3N0R0xTaGFkZXJFcnJvcjwvaDM+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xOC4xMC4yLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KLTxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtU0hBREVSLUVSUk9SLUNPTVBJTEU6Q0FQUyI+PC9hPkdTVF9HTF9TSEFERVJfRVJST1JfQ09NUElMRTwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtU0hBREVSLUVSUk9SLUxJTks6Q0FQUyI+PC9hPkdTVF9HTF9TSEFERVJfRVJST1JfTElOSzwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtU0hBREVSLUVSUk9SLVBST0dSQU06Q0FQUyI+PC9hPkdTVF9HTF9TSEFERVJfRVJST1JfUFJPR1JBTTwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0R0xTaGFkZXJTb3VyY2VUeXBlIj48L2E+PGgzPmVudW0gR3N0R0xTaGFkZXJTb3VyY2VUeXBlPC9oMz4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE4LjEwLjMuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgotPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1TSEFERVItRlJBR01FTlQtU09VUkNFOkNBUFMiPjwvYT5HU1RfR0xfU0hBREVSX0ZSQUdNRU5UX1NPVVJDRTwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtU0hBREVSLVZFUlRFWC1TT1VSQ0U6Q0FQUyI+PC9hPkdTVF9HTF9TSEFERVJfVkVSVEVYX1NPVVJDRTwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlcnZhcmlhYmxlLWRlc2MiPjwvYT48aDM+c3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2M7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEdMU2hhZGVyLXN0cnVjdCI+PC9hPjxoMz5Hc3RHTFNoYWRlcjwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgX0dzdEdMU2hhZGVyIEdzdEdMU2hhZGVyOzwvcHJlPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLnByb3BlcnR5LWRldGFpbHMiPjwvYT48aDI+UHJvcGVydHkgRGV0YWlsczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RHTFNoYWRlci0tYWN0aXZlIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcYWN0aXZl4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxhY3RpdmXigJ0gICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKjwvcHJlPgotPHA+RW5hYmxlL0Rpc2FibGUgdGhlIHNoYWRlci48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogTlVMTDwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0R0xTaGFkZXItLWNvbXBpbGVkIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcY29tcGlsZWTigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGNvbXBpbGVk4oCdICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC9wcmU+Ci08cD5TaGFkZXIgY29tcGlsZSBhbmQgbGluayBzdGF0dXMuPC9wPgotPHA+RmxhZ3M6IFJlYWQ8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiBGQUxTRTwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0R0xTaGFkZXItLWZyYWdtZW50LXNyYyI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGZyYWdtZW50LXNyY+KAnTwvY29kZT4gcHJvcGVydHk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcZnJhZ21lbnQtc3Jj4oCdICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8L3ByZT4KLTxwPkdMU0wgRnJhZ21lbnQgU2hhZGVyIHNvdXJjZSBjb2RlLjwvcD4KLTxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiBOVUxMPC9wPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RHTFNoYWRlci0tdmVydGV4LXNyYyI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHZlcnRleC1zcmPigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnHZlcnRleC1zcmPigJ0gICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+wqAqPC9wcmU+Ci08cD5HTFNMIFZlcnRleCBTaGFkZXIgc291cmNlIGNvZGUuPC9wPgotPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KLTxwPkRlZmF1bHQgdmFsdWU6IE5VTEw8L3A+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJmb290ZXIiPgotPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0bXBlZ3ZpZGVvbWV0YS5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0bXBlZ3ZpZGVvbWV0YS5odG1sCmluZGV4IDRjMWVkZmQuLjBjNmJjOTAgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdG1wZWd2aWRlb21ldGEuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RtcGVndmlkZW9tZXRhLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5nc3RtcGVndmlkZW9tZXRhOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNvZGVjcGFyc2Vycy5odG1sIiB0aXRsZT0iQml0c3RyZWFtIHBhcnNpbmcgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLXZjMXBhcnNlci5odG1sIiB0aXRsZT0idmMxcGFyc2VyIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdG1wZWd2aWRlb21ldGEuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTczLDcgKzczLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0bXBlZ3ZpZGVvbWV0YS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTIxLDcgKzEyMSw3IEBACiA8cD5Qcm92aWRlZCBzdHJ1Y3R1cmVzIG11c3QgZWl0aGVyIGJlIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+IG9yIEdTbGljZS1hbGxvY2F0ZWQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuOC43LjQuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE3OSw3ICsxNzksNyBAQAogSWYgZWxlbWVudHMgd2lzaCB0byB1c2UgdGhvc2UgZm9yIGxvbmdlciwgdGhleSBhcmUgcmVxdWlyZWQgdG8gbWFrZSBhIGNvcHkuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuOC44LjIuNyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE4MGM5MAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwKQEAgLTAsMCArMSw5MyBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPHRpdGxlPmdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0icGxheWVyLmh0bWwiIHRpdGxlPSJQbGF5ZXIgTGlicmFyeSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KKzx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Cis8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KKzxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPgorPC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJwbGF5ZXIuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8L3RyPjwvdGFibGU+Cis8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlciI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KKzx0ZCB2YWxpZ249InRvcCI+Cis8aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLnRvcF9vZl9wYWdlIj48L2E+Z3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXI8L3NwYW4+PC9oMj4KKzxwPmdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyIOKAlCBQbGF5ZXIgR0xpYiBNYWluQ29udGV4dCBkaXNwYXRjaGVyPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KKzwvdHI+PC90YWJsZT48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+Cis8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwjZ3N0LXBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci1uZXciIHRpdGxlPSJnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX25ld8KgKCkiPmdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfbmV3PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXItbmV3Ij48L2E+PGgzPmdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfbmV3wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcjwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX25ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1UaGUtTWFpbi1FdmVudC1Mb29wLmh0bWwjR01haW5Db250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R01haW5Db250ZXh0PC9zcGFuPjwvYT4gKmFwcGxpY2F0aW9uX2NvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Q3JlYXRlcyBhIG5ldyBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIHRoYXQgdXNlcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+YXBwbGljYXRpb25fY29udGV4dDwvY29kZT48L2VtPgorLAorb3IgdGhlIHRocmVhZCBkZWZhdWx0IG9uZSBpZiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPiBpcyB1c2VkLiBTZWUgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfcGxheWVyX25ld19mdWxsKCk8L2NvZGU+LjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC40LjUuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YXBwbGljYXRpb25fY29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBHTWFpbkNvbnRleHQgdG8gdXNlIG9yIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+LiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC40LjUuMi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBuZXcgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlci4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvb3RlciI+Cis8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM3MDE0OQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbApAQCAtMCwwICsxLDk2MSBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPHRpdGxlPmdzdHBsYXllci1tZWRpYWluZm86IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+Cis8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+Cis8bGluayByZWw9InVwIiBocmVmPSJwbGF5ZXIuaHRtbCIgdGl0bGU9IlBsYXllciBMaWJyYXJ5Ij4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KKzx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Cis8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KKzxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPgorPC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJwbGF5ZXIuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzwvdHI+PC90YWJsZT4KKzxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8iPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLnRvcF9vZl9wYWdlIj48L2E+Z3N0cGxheWVyLW1lZGlhaW5mbzwvc3Bhbj48L2gyPgorPHA+Z3N0cGxheWVyLW1lZGlhaW5mbyDigJQgUGxheWVyIE1lZGlhIEluZm9ybWF0aW9uPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KKzwvdHI+PC90YWJsZT48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KKzxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC11cmkiIHRpdGxlPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3VyacKgKCkiPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdXJpPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2xvY2suaHRtbCNHc3RDbG9ja1RpbWUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0Q2xvY2tUaW1lPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LWR1cmF0aW9uIiB0aXRsZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9kdXJhdGlvbsKgKCkiPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfZHVyYXRpb248L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXRpdGxlIiB0aXRsZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90aXRsZcKgKCkiPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGl0bGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LWNvbnRhaW5lci1mb3JtYXQiIHRpdGxlPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2NvbnRhaW5lcl9mb3JtYXTCoCgpIj5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2NvbnRhaW5lcl9mb3JtYXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1pcy1zZWVrYWJsZSIgdGl0bGU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19pc19zZWVrYWJsZcKgKCkiPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19pc19zZWVrYWJsZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFNhbXBsZS5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFNhbXBsZTwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1pbWFnZS1zYW1wbGUiIHRpdGxlPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2ltYWdlX3NhbXBsZcKgKCkiPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfaW1hZ2Vfc2FtcGxlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0VGFnTGlzdC5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFRhZ0xpc3Q8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdGFncyIgdGl0bGU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGFnc8KgKCkiPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGFnczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRG91Ymx5LUxpbmtlZC1MaXN0cy5odG1sI0dMaXN0Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdMaXN0PC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXN0cmVhbS1saXN0IiB0aXRsZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9zdHJlYW1fbGlzdMKgKCkiPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfc3RyZWFtX2xpc3Q8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1pbmRleCIgdGl0bGU9ImdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2luZGV4wqAoKSI+Z3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfaW5kZXg8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDYXBzLmh0bWwiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0Q2Fwczwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtY2FwcyIgdGl0bGU9ImdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NhcHPCoCgpIj5nc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jYXBzPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0VGFnTGlzdC5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFRhZ0xpc3Q8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LXRhZ3MiIHRpdGxlPSJnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF90YWdzwqAoKSI+Z3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFnczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LWNvZGVjIiB0aXRsZT0iZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY29kZWPCoCgpIj5nc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jb2RlYzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LXN0cmVhbS10eXBlIiB0aXRsZT0iZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfc3RyZWFtX3R5cGXCoCgpIj5nc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9zdHJlYW1fdHlwZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtYml0cmF0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfYml0cmF0ZcKgKCkiPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfYml0cmF0ZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtY2hhbm5lbHMiIHRpdGxlPSJnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2NoYW5uZWxzwqAoKSI+Z3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9jaGFubmVsczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtbGFuZ3VhZ2UiIHRpdGxlPSJnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2xhbmd1YWdlwqAoKSI+Z3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9sYW5ndWFnZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtbWF4LWJpdHJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X21heF9iaXRyYXRlwqAoKSI+Z3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9tYXhfYml0cmF0ZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtc2FtcGxlLXJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X3NhbXBsZV9yYXRlwqAoKSI+Z3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9zYW1wbGVfcmF0ZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtYml0cmF0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfYml0cmF0ZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfYml0cmF0ZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtaGVpZ2h0IiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9oZWlnaHTCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2hlaWdodDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtd2lkdGgiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3dpZHRowqAoKSI+Z3N0X3BsYXllcl92aWRlb19pbmZvX2dldF93aWR0aDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWZyYW1lcmF0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfZnJhbWVyYXRlwqAoKSI+Z3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9mcmFtZXJhdGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LW1heC1iaXRyYXRlIiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9tYXhfYml0cmF0ZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfbWF4X2JpdHJhdGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1waXhlbC1hc3BlY3QtcmF0aW8iIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3BpeGVsX2FzcGVjdF9yYXRpb8KgKCkiPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfcGl4ZWxfYXNwZWN0X3JhdGlvPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdWJ0aXRsZS1pbmZvLWdldC1sYW5ndWFnZSIgdGl0bGU9ImdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19nZXRfbGFuZ3VhZ2XCoCgpIj5nc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZ2V0X2xhbmd1YWdlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGEgbmFtZT0iR3N0UGxheWVyTWVkaWFJbmZvIj48L2E+PGEgbmFtZT0iR3N0UGxheWVyU3RyZWFtSW5mbyI+PC9hPjxhIG5hbWU9IkdzdFBsYXllckF1ZGlvSW5mbyI+PC9hPjxhIG5hbWU9IkdzdFBsYXllclZpZGVvSW5mbyI+PC9hPjxhIG5hbWU9IkdzdFBsYXllclN1YnRpdGxlSW5mbyI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8ub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KKzxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8tc3RydWN0IiB0aXRsZT0iR3N0UGxheWVyTWVkaWFJbmZvIj5Hc3RQbGF5ZXJNZWRpYUluZm88L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvLXN0cnVjdCIgdGl0bGU9IkdzdFBsYXllclN0cmVhbUluZm8iPkdzdFBsYXllclN0cmVhbUluZm88L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8tc3RydWN0IiB0aXRsZT0iR3N0UGxheWVyQXVkaW9JbmZvIj5Hc3RQbGF5ZXJBdWRpb0luZm88L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8tc3RydWN0IiB0aXRsZT0iR3N0UGxheWVyVmlkZW9JbmZvIj5Hc3RQbGF5ZXJWaWRlb0luZm88L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdWJ0aXRsZUluZm8tc3RydWN0IiB0aXRsZT0iR3N0UGxheWVyU3VidGl0bGVJbmZvIj5Hc3RQbGF5ZXJTdWJ0aXRsZUluZm88L2E+PC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgorPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gR3N0UGxheWVyTWVkaWFJbmZvCisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0UGxheWVyU3RyZWFtSW5mbworICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiBHc3RQbGF5ZXJBdWRpb0luZm8KKyAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gR3N0UGxheWVyU3VidGl0bGVJbmZvCisgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdFBsYXllclZpZGVvSW5mbworPC9wcmU+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXVyaSI+PC9hPjxoMz5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3VyacKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3VyaSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgVVJJIGFzc29jaWF0ZWQgd2l0aCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+LjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LWR1cmF0aW9uIj48L2E+PGgzPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfZHVyYXRpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDbG9jay5odG1sI0dzdENsb2NrVGltZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RDbG9ja1RpbWU8L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9kdXJhdGlvbiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjMuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBkdXJhdGlvbiBvZiB0aGUgbWVkaWEuPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdGl0bGUiPjwvYT48aDM+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90aXRsZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RpdGxlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi40LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuNC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBtZWRpYSB0aXRsZS48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1jb250YWluZXItZm9ybWF0Ij48L2E+PGgzPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfY29udGFpbmVyX2Zvcm1hdMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2NvbnRhaW5lcl9mb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuNS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjUuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgY29udGFpbmVyIGZvcm1hdC48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1tZWRpYS1pbmZvLWlzLXNlZWthYmxlIj48L2E+PGgzPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19pc19zZWVrYWJsZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfcGxheWVyX21lZGlhX2luZm9faXNfc2Vla2FibGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjYuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi42LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgdGhlIG1lZGlhIGlzIHNlZWthYmxlLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LWltYWdlLXNhbXBsZSI+PC9hPjxoMz5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2ltYWdlX3NhbXBsZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFNhbXBsZS5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFNhbXBsZTwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2ltYWdlX3NhbXBsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5GdW5jdGlvbiB0byBnZXQgdGhlIGltYWdlIChvciBwcmV2aWV3LWltYWdlKSBzdG9yZWQgaW4gdGFnbGlzdC4KK0FwcGxpY2F0aW9uIGNhbiB1c2UgZ3N0X3NhbXBsZV8qXygpIEFQSSdzIHRvIGdldCBjYXBzLCBidWZmZXIgZXRjLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi43LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gR3N0U2FtcGxlIG9yIE5VTEwuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdGFncyI+PC9hPjxoMz5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RhZ3PCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RUYWdMaXN0Lmh0bWwiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0VGFnTGlzdDwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RhZ3MgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjguNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi44LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIHRhZ3MgY29udGFpbmVkIGluIG1lZGlhIGluZm8uIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtc3RyZWFtLWxpc3QiPjwvYT48aDM+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9zdHJlYW1fbGlzdMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRG91Ymx5LUxpbmtlZC1MaXN0cy5odG1sI0dMaXN0Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdMaXN0PC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfc3RyZWFtX2xpc3QgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjkuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi45LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gQSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURvdWJseS1MaW5rZWQtTGlzdHMuaHRtbCNHTGlzdCI+PHNwYW4gY2xhc3M9InR5cGUiPkdMaXN0PC9zcGFuPjwvYT4gb2YKK21hdGNoaW5nIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN0cmVhbUluZm88L3NwYW4+PC9hPi4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRG9uJ3QgZnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XVs8YWNyb255bSB0aXRsZT0iR2VuZXJpY3MgYW5kIGRlZmluaW5nIGVsZW1lbnRzIG9mIGNvbnRhaW5lcnMgYW5kIGFycmF5cy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5lbGVtZW50LXR5cGU8L3NwYW4+PC9hY3JvbnltPiBHc3RQbGF5ZXJTdHJlYW1JbmZvXTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtaW5kZXgiPjwvYT48aDM+Z3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfaW5kZXjCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2luZGV4ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RyZWFtSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkZ1bmN0aW9uIHRvIGdldCBzdHJlYW0gaW5kZXggZnJvbSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9zcGFuPjwvYT4gaW5zdGFuY2UuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMTAuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN0cmVhbUluZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjEwLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIHN0cmVhbSBpbmRleCBvZiB0aGlzIHN0cmVhbS48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtY2FwcyI+PC9hPjxoMz5nc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jYXBzwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdENhcHM8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY2FwcyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN0cmVhbUluZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xMS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RyZWFtSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMTEuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0Q2Fwczwvc3Bhbj48L2E+IG9mIHRoZSBzdHJlYW0uIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LXRhZ3MiPjwvYT48aDM+Z3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFnc8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFRhZ0xpc3QuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RUYWdMaXN0PC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3RhZ3MgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMTIuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN0cmVhbUluZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjEyLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIHRhZ3MgY29udGFpbmVkIGluIHRoaXMgc3RyZWFtLiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJEb24ndCBmcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1jb2RlYyI+PC9hPjxoMz5nc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jb2RlY8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jb2RlYyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN0cmVhbUluZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5BIHN0cmluZyBkZXNjcmliaW5nIGNvZGVjIHVzZWQgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RyZWFtSW5mbzwvc3Bhbj48L2E+LjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjEzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xMy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGNvZGVjIHN0cmluZyBvciBOVUxMIG9uIHVua25vd24uPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LXN0cmVhbS10eXBlIj48L2E+PGgzPmdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3N0cmVhbV90eXBlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3N0cmVhbV90eXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RnVuY3Rpb24gdG8gcmV0dXJuIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIHRoZSBzdHJlYW0gdHlwZQorb2YgdGhlIGdpdmVuIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5pbmZvPC9jb2RlPjwvZW0+CisgKGV4OiAiYXVkaW8iLCAidmlkZW8iLCAic3VidGl0bGUiKTwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjE0LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xNC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgaHVtYW4gcmVhZGFibGUgbmFtZTwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWJpdHJhdGUiPjwvYT48aDM+Z3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9iaXRyYXRlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Citnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2JpdHJhdGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjE1LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMTUuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgYXVkaW8gYml0cmF0ZSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+LjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWNoYW5uZWxzIj48L2E+PGgzPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfY2hhbm5lbHPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfY2hhbm5lbHMgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjE2LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMTYuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgbnVtYmVyIG9mIGF1ZGlvIGNoYW5uZWxzIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQXVkaW9JbmZvPC9zcGFuPjwvYT4uPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtbGFuZ3VhZ2UiPjwvYT48aDM+Z3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9sYW5ndWFnZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2xhbmd1YWdlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xNy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjE3LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIGxhbmd1YWdlIG9mIHRoZSBzdHJlYW0sIG9yIE5VTEwgaWYgdW5rbm93bi48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1tYXgtYml0cmF0ZSI+PC9hPjxoMz5nc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X21heF9iaXRyYXRlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Citnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X21heF9iaXRyYXRlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xOC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjE4LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIGF1ZGlvIG1heGltdW0gYml0cmF0ZSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+LjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LXNhbXBsZS1yYXRlIj48L2E+PGgzPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfc2FtcGxlX3JhdGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfc2FtcGxlX3JhdGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjE5LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMTkuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgYXVkaW8gc2FtcGxlIHJhdGUgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPi48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1iaXRyYXRlIj48L2E+PGgzPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfYml0cmF0ZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9iaXRyYXRlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4yMC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjIwLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIGN1cnJlbnQgYml0cmF0ZSBvZiB2aWRlbyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+LjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWhlaWdodCI+PC9hPjxoMz5nc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2hlaWdodMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9oZWlnaHQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjIxLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMjEuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgaGVpZ2h0IG9mIHZpZGVvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT4uPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtd2lkdGgiPjwvYT48aDM+Z3N0X3BsYXllcl92aWRlb19pbmZvX2dldF93aWR0aMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF93aWR0aCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMjIuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4yMi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSB3aWR0aCBvZiB2aWRlbyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+LjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWZyYW1lcmF0ZSI+PC9hPjxoMz5nc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2ZyYW1lcmF0ZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfZnJhbWVyYXRlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gKmZwc19uPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiAqZnBzX2Q8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LW1heC1iaXRyYXRlIj48L2E+PGgzPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfbWF4X2JpdHJhdGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfbWF4X2JpdHJhdGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjI0LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMjQuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgbWF4aW11bSBiaXRyYXRlIG9mIHZpZGVvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT4uPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtcGl4ZWwtYXNwZWN0LXJhdGlvIj48L2E+PGgzPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfcGl4ZWxfYXNwZWN0X3JhdGlvwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9waXhlbF9hc3BlY3RfcmF0aW8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+ICpwYXJfbjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gKnBhcl9kPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlJldHVybnMgdGhlIHBpeGVsIGFzcGVjdCByYXRpbyBpbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cGFyX248L2NvZGU+PC9lbT4KKyBhbmQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnBhcl9kPC9jb2RlPjwvZW0+Cis8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4yNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBhcl9uPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IG51bWVyYXRvci4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iUGFyYW1ldGVyIGZvciByZXR1cm5pbmcgcmVzdWx0cy4gRGVmYXVsdCBpcyB0cmFuc2ZlciBmdWxsLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPm91dDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBhcl9kPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGRlbm9taW5hdG9yLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJQYXJhbWV0ZXIgZm9yIHJldHVybmluZyByZXN1bHRzLiBEZWZhdWx0IGlzIHRyYW5zZmVyIGZ1bGwuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+b3V0PC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zdWJ0aXRsZS1pbmZvLWdldC1sYW5ndWFnZSI+PC9hPjxoMz5nc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZ2V0X2xhbmd1YWdlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19nZXRfbGFuZ3VhZ2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN1YnRpdGxlSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN1YnRpdGxlSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjI2LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN1YnRpdGxlSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN1YnRpdGxlSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMjYuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIHN0cmVhbSwgb3IgTlVMTCBpZiB1bmtub3duLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8ub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllck1lZGlhSW5mby1zdHJ1Y3QiPjwvYT48aDM+R3N0UGxheWVyTWVkaWFJbmZvPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyTWVkaWFJbmZvIEdzdFBsYXllck1lZGlhSW5mbzs8L3ByZT4KKzxwPlN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBtZWRpYSBpbmZvcm1hdGlvbiBvZiBhIFVSSS48L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllclN0cmVhbUluZm8tc3RydWN0Ij48L2E+PGgzPkdzdFBsYXllclN0cmVhbUluZm88L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJTdHJlYW1JbmZvIEdzdFBsYXllclN0cmVhbUluZm87PC9wcmU+Cis8cD5CYXNlIHN0cnVjdHVyZSBmb3IgaW5mb3JtYXRpb24gY29uY2VyaW5nIGEgbWVkaWEgc3RyZWFtLiBEZXBlbmRpbmcgb24KK3RoZSBzdHJlYW0gdHlwZSwgb25lIGNhbiBmaW5kIG1vcmUgbWVkaWEtc3BlY2lmaWMgaW5mb3JtYXRpb24gaW4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQXVkaW9JbmZvPC9zcGFuPjwvYT4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3VidGl0bGVJbmZvPC9zcGFuPjwvYT4uPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXJBdWRpb0luZm8tc3RydWN0Ij48L2E+PGgzPkdzdFBsYXllckF1ZGlvSW5mbzwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllckF1ZGlvSW5mbyBHc3RQbGF5ZXJBdWRpb0luZm87PC9wcmU+Cis8cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9zcGFuPjwvYT4gc3BlY2lmaWMgdG8gYXVkaW8gc3RyZWFtcy48L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllclZpZGVvSW5mby1zdHJ1Y3QiPjwvYT48aDM+R3N0UGxheWVyVmlkZW9JbmZvPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyVmlkZW9JbmZvIEdzdFBsYXllclZpZGVvSW5mbzs8L3ByZT4KKzxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN0cmVhbUluZm88L3NwYW4+PC9hPiBzcGVjaWZpYyB0byB2aWRlbyBzdHJlYW1zLjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyU3VidGl0bGVJbmZvLXN0cnVjdCI+PC9hPjxoMz5Hc3RQbGF5ZXJTdWJ0aXRsZUluZm88L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJTdWJ0aXRsZUluZm8gR3N0UGxheWVyU3VidGl0bGVJbmZvOzwvcHJlPgorPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RyZWFtSW5mbzwvc3Bhbj48L2E+IHNwZWNpZmljIHRvIHN1YnRpdGxlIHN0cmVhbXMuPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iZm9vdGVyIj4KKzxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3OGM0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sCkBAIC0wLDAgKzEsMzI1IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8dGl0bGU+Z3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+Cis8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+Cis8bGluayByZWw9InVwIiBocmVmPSJwbGF5ZXIuaHRtbCIgdGl0bGU9IlBsYXllciBMaWJyYXJ5Ij4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCIgdGl0bGU9ImdzdHBsYXllci12aXN1YWxpemF0aW9uIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cis8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgorPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Cis8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj4KKzwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0icGxheWVyLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzwvdHI+PC90YWJsZT4KKzxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgorPHRkIHZhbGlnbj0idG9wIj4KKzxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIudG9wX29mX3BhZ2UiPjwvYT5nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlcjwvc3Bhbj48L2gyPgorPHA+Z3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIg4oCUIFBsYXllciBWaWRlbyBPdmVybGF5IFZpZGVvIFJlbmRlcmVyPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KKzwvdHI+PC90YWJsZT48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+Cis8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllclZpZGVvUmVuZGVyZXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItbmV3IiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX25ld8KgKCkiPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9uZXc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItZ2V0LXdpbmRvdy1oYW5kbGUiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3dpbmRvd19oYW5kbGXCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3dpbmRvd19oYW5kbGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1zZXQtd2luZG93LWhhbmRsZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWV4cG9zZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9leHBvc2XCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZXhwb3NlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItZ2V0LXJlbmRlci1yZWN0YW5nbGUiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3JlbmRlcl9yZWN0YW5nbGXCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3JlbmRlcl9yZWN0YW5nbGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1zZXQtcmVuZGVyLXJlY3RhbmdsZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfcmVuZGVyX3JlY3RhbmdsZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfcmVuZGVyX3JlY3RhbmdsZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1uZXciPjwvYT48aDM+Z3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX25ld8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllclZpZGVvUmVuZGVyZXI8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX25ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiB3aW5kb3dfaGFuZGxlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC41LjUuMi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+d2luZG93X2hhbmRsZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBXaW5kb3cgaGFuZGxlIHRvIHVzZSBvciA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPi4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNS41LjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPi4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWdldC13aW5kb3ctaGFuZGxlIj48L2E+PGgzPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfd2luZG93X2hhbmRsZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ncG9pbnRlcjwvc3Bhbj48L2E+Citnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3dpbmRvd19oYW5kbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyPC9zcGFuPiAqc2VsZjwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNS41LjMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNlbGY8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyVmlkZW9SZW5kZXJlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvUmVuZGVyZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC41LjUuMy41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IFRoZSBjdXJyZW50bHkgc2V0LCBwbGF0Zm9ybSBzcGVjaWZpYyB3aW5kb3cKK2hhbmRsZS4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRG9uJ3QgZnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLXNldC13aW5kb3ctaGFuZGxlIj48L2E+PGgzPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXI8L3NwYW4+ICpzZWxmPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiB3aW5kb3dfaGFuZGxlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlNldHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIHdpbmRvdyBoYW5kbGUgaW50byB3aGljaCB0aGUgdmlkZW8KK3Nob3VsZCBiZSByZW5kZXJlZDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC41LjUuNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zZWxmPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclZpZGVvUmVuZGVyZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+d2luZG93X2hhbmRsZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmhhbmRsZSByZWZlcmVuY2luZyB0byB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgd2luZG93PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1leHBvc2UiPjwvYT48aDM+Z3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2V4cG9zZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9leHBvc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyPC9zcGFuPiAqc2VsZjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5UZWxsIGFuIG92ZXJsYXkgdGhhdCBpdCBoYXMgYmVlbiBleHBvc2VkLiBUaGlzIHdpbGwgcmVkcmF3IHRoZSBjdXJyZW50IGZyYW1lCitpbiB0aGUgZHJhd2FibGUgZXZlbiBpZiB0aGUgcGlwZWxpbmUgaXMgUEFVU0VELjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC41LjUuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2VsZjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXI8L3NwYW4+IGluc3RhbmNlLjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWdldC1yZW5kZXItcmVjdGFuZ2xlIj48L2E+PGgzPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfcmVuZGVyX3JlY3RhbmdsZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfcmVuZGVyX3JlY3RhbmdsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXI8L3NwYW4+ICpzZWxmPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gKng8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiAqeTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICp3aWR0aDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICpoZWlnaHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+UmV0dXJuIHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCByZW5kZXIgcmVjdGFuZ2xlLiBTZWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLXNldC1yZW5kZXItcmVjdGFuZ2xlIiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF9yZW5kZXJfcmVjdGFuZ2xlwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3JlbmRlcl9yZWN0YW5nbGUoKTwvY29kZT48L2E+Citmb3IgZGV0YWlscy48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNS41LjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2VsZjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXI8L3NwYW4+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPng8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdGhlIGhvcml6b250YWwgb2Zmc2V0IG9mIHRoZSByZW5kZXIgYXJlYSBpbnNpZGUgdGhlIHdpbmRvdy4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iUGFyYW1ldGVyIGZvciByZXR1cm5pbmcgcmVzdWx0cy4gRGVmYXVsdCBpcyB0cmFuc2ZlciBmdWxsLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPm91dDwvc3Bhbj48L2Fjcm9ueW0+XVs8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+eTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiB0aGUgdmVydGljYWwgb2Zmc2V0IG9mIHRoZSByZW5kZXIgYXJlYSBpbnNpZGUgdGhlIHdpbmRvdy4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iUGFyYW1ldGVyIGZvciByZXR1cm5pbmcgcmVzdWx0cy4gRGVmYXVsdCBpcyB0cmFuc2ZlciBmdWxsLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPm91dDwvc3Bhbj48L2Fjcm9ueW0+XVs8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+d2lkdGg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdGhlIHdpZHRoIG9mIHRoZSByZW5kZXIgYXJlYSBpbnNpZGUgdGhlIHdpbmRvdy4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iUGFyYW1ldGVyIGZvciByZXR1cm5pbmcgcmVzdWx0cy4gRGVmYXVsdCBpcyB0cmFuc2ZlciBmdWxsLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPm91dDwvc3Bhbj48L2Fjcm9ueW0+XVs8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aGVpZ2h0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHRoZSBoZWlnaHQgb2YgdGhlIHJlbmRlciBhcmVhIGluc2lkZSB0aGUgd2luZG93LiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJQYXJhbWV0ZXIgZm9yIHJldHVybmluZyByZXN1bHRzLiBEZWZhdWx0IGlzIHRyYW5zZmVyIGZ1bGwuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+b3V0PC9zcGFuPjwvYWNyb255bT5dWzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItc2V0LXJlbmRlci1yZWN0YW5nbGUiPjwvYT48aDM+Z3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF9yZW5kZXJfcmVjdGFuZ2xlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF9yZW5kZXJfcmVjdGFuZ2xlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlcjwvc3Bhbj4gKnNlbGY8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB4PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4geTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHdpZHRoPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gaGVpZ2h0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkNvbmZpZ3VyZSBhIHN1YnJlZ2lvbiBhcyBhIHZpZGVvIHRhcmdldCB3aXRoaW4gdGhlIHdpbmRvdyBzZXQgYnkKKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1zZXQtd2luZG93LWhhbmRsZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZcKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF93aW5kb3dfaGFuZGxlKCk8L2NvZGU+PC9hPi4gSWYgdGhpcyBpcyBub3QKK3VzZWQgb3Igbm90IHN1cHBvcnRlZCB0aGUgdmlkZW8gd2lsbCBmaWxsIHRoZSBhcmVhIG9mIHRoZSB3aW5kb3cgc2V0IGFzIHRoZQorb3ZlcmxheSB0byAxMDAlLiBCeSBzcGVjaWZ5aW5nIHRoZSByZWN0YW5nbGUsIHRoZSB2aWRlbyBjYW4gYmUgb3ZlcmxheWVkIHRvCithIHNwZWNpZmljIHJlZ2lvbiBvZiB0aGF0IHdpbmRvdyBvbmx5LiBBZnRlciBzZXR0aW5nIHRoZSBuZXcgcmVjdGFuZ2xlIG9uZQorc2hvdWxkIGNhbGwgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWV4cG9zZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9leHBvc2XCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9leHBvc2UoKTwvY29kZT48L2E+IHRvIGZvcmNlIGEKK3JlZHJhdy4gVG8gdW5zZXQgdGhlIHJlZ2lvbiBwYXNzIC0xIGZvciB0aGUgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndpZHRoPC9jb2RlPjwvZW0+CisgYW5kIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5oZWlnaHQ8L2NvZGU+PC9lbT4KKyBwYXJhbWV0ZXJzLjwvcD4KKzxwPlRoaXMgbWV0aG9kIGlzIG5lZWRlZCBmb3Igbm9uIGZ1bGxzY3JlZW4gdmlkZW8gb3ZlcmxheSBpbiBVSSB0b29sa2l0cyB0aGF0CitkbyBub3Qgc3VwcG9ydCBzdWJ3aW5kb3dzLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC41LjUuNy42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zZWxmPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlcjwvc3Bhbj4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+eDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBob3Jpem9udGFsIG9mZnNldCBvZiB0aGUgcmVuZGVyIGFyZWEgaW5zaWRlIHRoZSB3aW5kb3c8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+eTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSB2ZXJ0aWNhbCBvZmZzZXQgb2YgdGhlIHJlbmRlciBhcmVhIGluc2lkZSB0aGUgd2luZG93PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPndpZHRoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHdpZHRoIG9mIHRoZSByZW5kZXIgYXJlYSBpbnNpZGUgdGhlIHdpbmRvdzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5oZWlnaHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgaGVpZ2h0IG9mIHRoZSByZW5kZXIgYXJlYSBpbnNpZGUgdGhlIHdpbmRvdzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iZm9vdGVyIj4KKzxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmODM5ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sCkBAIC0wLDAgKzEsMjI2IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8dGl0bGU+Z3N0cGxheWVyLXZpc3VhbGl6YXRpb246IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+Cis8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+Cis8bGluayByZWw9InVwIiBocmVmPSJwbGF5ZXIuaHRtbCIgdGl0bGU9IlBsYXllciBMaWJyYXJ5Ij4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iY2gwOC5odG1sIiB0aXRsZT0iSW50ZXJmYWNlcyI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgorPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KKzx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgorPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj4KKzwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0icGxheWVyLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJjaDA4Lmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPC90cj48L3RhYmxlPgorPGRpdiBjbGFzcz0icmVmZW50cnkiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24iPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi50b3Bfb2ZfcGFnZSI+PC9hPmdzdHBsYXllci12aXN1YWxpemF0aW9uPC9zcGFuPjwvaDI+Cis8cD5nc3RwbGF5ZXItdmlzdWFsaXphdGlvbiDigJQgUGxheWVyIFZpc3VhbGl6YXRpb248L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgorPC90cj48L3RhYmxlPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KKzxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RQbGF5ZXJWaXN1YWxpemF0aW9uPC9zcGFuPjwvYT7CoCoqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbnMtZ2V0IiB0aXRsZT0iZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19nZXTCoCgpIj5nc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2dldDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9ucy1mcmVlIiB0aXRsZT0iZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19mcmVlwqAoKSI+Z3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19mcmVlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RQbGF5ZXJWaXN1YWxpemF0aW9uPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9uLWNvcHkiIHRpdGxlPSJnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fY29wecKgKCkiPmdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9jb3B5PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGxheWVyLXZpc3VhbGl6YXRpb24tZnJlZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9mcmVlwqAoKSI+Z3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2ZyZWU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8YSBuYW1lPSJHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KKzxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uLXN0cnVjdCIgdGl0bGU9InN0cnVjdCBHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIj5Hc3RQbGF5ZXJWaXN1YWxpemF0aW9uPC9hPjwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgorPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1Cb3hlZC1UeXBlcy5odG1sIj5HQm94ZWQ8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0UGxheWVyVmlzdWFsaXphdGlvbgorPC9wcmU+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItdmlzdWFsaXphdGlvbnMtZ2V0Ij48L2E+PGgzPmdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZ2V0wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RQbGF5ZXJWaXN1YWxpemF0aW9uPC9zcGFuPjwvYT7CoCoqCitnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2dldCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj52b2lkPC9zcGFuPjwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNi44LjIuNCI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+IHRlcm1pbmF0ZWQgYXJyYXkgY29udGFpbmluZyBhbGwgYXZhaWxhYmxlCit2aXN1YWxpemF0aW9ucy4gVXNlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbnMtZnJlZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZnJlZcKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19mcmVlKCk8L2NvZGU+PC9hPiBhZnRlcgordXNhZ2UuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl1bPGFjcm9ueW0gdGl0bGU9IlBhcmFtZXRlciBwb2ludHMgdG8gYW4gYXJyYXkgb2YgaXRlbXMuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YXJyYXk8L3NwYW4+PC9hY3JvbnltPiB6ZXJvLXRlcm1pbmF0ZWQ9MV1bPGFjcm9ueW0gdGl0bGU9IkdlbmVyaWNzIGFuZCBkZWZpbmluZyBlbGVtZW50cyBvZiBjb250YWluZXJzIGFuZCBhcnJheXMuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+ZWxlbWVudC10eXBlPC9zcGFuPjwvYWNyb255bT4gR3N0UGxheWVyVmlzdWFsaXphdGlvbl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItdmlzdWFsaXphdGlvbnMtZnJlZSI+PC9hPjxoMz5nc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2ZyZWXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2ZyZWUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvc3Bhbj48L2E+ICoqdmlzczwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5GcmVlcyBhIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+IHRlcm1pbmF0ZWQgYXJyYXkgb2YgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpc3VhbGl6YXRpb248L3NwYW4+PC9hPi48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNi44LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZpc3M8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+IHRlcm1pbmF0ZWQgYXJyYXkgb2YgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpc3VhbGl6YXRpb248L3NwYW4+PC9hPiB0byBmcmVlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXZpc3VhbGl6YXRpb24tY29weSI+PC9hPjxoMz5nc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fY29wecKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fY29weSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaXN1YWxpemF0aW9uPC9zcGFuPjwvYT4gKnZpczwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5NYWtlcyBhIGNvcHkgb2YgdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaXN1YWxpemF0aW9uPC9zcGFuPjwvYT4uIFRoZSByZXN1bHQgbXVzdCBiZQorZnJlZWQgdXNpbmcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9uLWZyZWUiIHRpdGxlPSJnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZnJlZcKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2ZyZWUoKTwvY29kZT48L2E+LjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC42LjguNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmlzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpc3VhbGl6YXRpb248L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC42LjguNC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGFuIGFsbG9jYXRlZCBjb3B5IG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT52aXM8L2NvZGU+PC9lbT4KKy4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci12aXN1YWxpemF0aW9uLWZyZWUiPjwvYT48aDM+Z3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2ZyZWXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZnJlZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaXN1YWxpemF0aW9uPC9zcGFuPjwvYT4gKnZpczwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5GcmVlcyBhIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaXN1YWxpemF0aW9uPC9zcGFuPjwvYT4uPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjYuOC41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52aXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXJWaXN1YWxpemF0aW9uLXN0cnVjdCI+PC9hPjxoMz5zdHJ1Y3QgR3N0UGxheWVyVmlzdWFsaXphdGlvbjwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdFBsYXllclZpc3VhbGl6YXRpb24geworICBnY2hhciAqbmFtZTsKKyAgZ2NoYXIgKmRlc2NyaXB0aW9uOworfTsKKzwvcHJlPgorPHA+QSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvc3Bhbj48L2E+IGRlc2NyaXB0b3IuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjYuOS4yLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+wqAqPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0UGxheWVyVmlzdWFsaXphdGlvbi1zdHJ1Y3QubmFtZSI+PC9hPm5hbWU8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPm5hbWUgb2YgdGhlIHZpc3VhbGl6YXRpb24uPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKjxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdFBsYXllclZpc3VhbGl6YXRpb24tc3RydWN0LmRlc2NyaXB0aW9uIj48L2E+ZGVzY3JpcHRpb248L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmRlc2NyaXB0aW9uIG9mIHRoZSB2aXN1YWxpemF0aW9uLjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvb3RlciI+Cis8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMTE2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbApAQCAtMCwwICsxLDIyNTIgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT5nc3RwbGF5ZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+Cis8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+Cis8bGluayByZWw9InVwIiBocmVmPSJwbGF5ZXIuaHRtbCIgdGl0bGU9IlBsYXllciBMaWJyYXJ5Ij4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0icGxheWVyLmh0bWwiIHRpdGxlPSJQbGF5ZXIgTGlicmFyeSI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KKzx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Cis8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KKzxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3ByZXJlcXVpc2l0ZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnByZXJlcXVpc2l0ZXMiIGNsYXNzPSJzaG9ydGN1dCI+UHJlcmVxdWlzaXRlczwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9pbXBsZW1lbnRhdGlvbnMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmltcGxlbWVudGF0aW9ucyIgY2xhc3M9InNob3J0Y3V0Ij5Lbm93biBJbXBsZW1lbnRhdGlvbnM8L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIucHJvcGVydGllcyIgY2xhc3M9InNob3J0Y3V0Ij5Qcm9wZXJ0aWVzPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3NpZ25hbHMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnNpZ25hbHMiIGNsYXNzPSJzaG9ydGN1dCI+U2lnbmFsczwvYT48L3NwYW4+Cis8L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9InBsYXllci5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJwbGF5ZXIuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8L3RyPjwvdGFibGU+Cis8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIudG9wX29mX3BhZ2UiPjwvYT5nc3RwbGF5ZXI8L3NwYW4+PC9oMj4KKzxwPmdzdHBsYXllciDigJQgUGxheWVyPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KKzwvdHI+PC90YWJsZT48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgorPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLW5ldyIgdGl0bGU9ImdzdF9wbGF5ZXJfbmV3wqAoKSI+Z3N0X3BsYXllcl9uZXc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXBsYXkiIHRpdGxlPSJnc3RfcGxheWVyX3BsYXnCoCgpIj5nc3RfcGxheWVyX3BsYXk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXBhdXNlIiB0aXRsZT0iZ3N0X3BsYXllcl9wYXVzZcKgKCkiPmdzdF9wbGF5ZXJfcGF1c2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXN0b3AiIHRpdGxlPSJnc3RfcGxheWVyX3N0b3DCoCgpIj5nc3RfcGxheWVyX3N0b3A8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNlZWsiIHRpdGxlPSJnc3RfcGxheWVyX3NlZWvCoCgpIj5nc3RfcGxheWVyX3NlZWs8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC11cmkiIHRpdGxlPSJnc3RfcGxheWVyX3NldF91cmnCoCgpIj5nc3RfcGxheWVyX3NldF91cmk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtdXJpIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfdXJpwqAoKSI+Z3N0X3BsYXllcl9nZXRfdXJpPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2xvY2suaHRtbCNHc3RDbG9ja1RpbWUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0Q2xvY2tUaW1lPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LWR1cmF0aW9uIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfZHVyYXRpb27CoCgpIj5nc3RfcGxheWVyX2dldF9kdXJhdGlvbjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENsb2NrLmh0bWwjR3N0Q2xvY2tUaW1lIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdENsb2NrVGltZTwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1wb3NpdGlvbiIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uwqAoKSI+Z3N0X3BsYXllcl9nZXRfcG9zaXRpb248L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC12b2x1bWUiIHRpdGxlPSJnc3RfcGxheWVyX3NldF92b2x1bWXCoCgpIj5nc3RfcGxheWVyX3NldF92b2x1bWU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1tdXRlIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfbXV0ZcKgKCkiPmdzdF9wbGF5ZXJfc2V0X211dGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2RvdWJsZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nZG91YmxlPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXZvbHVtZSIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3ZvbHVtZcKgKCkiPmdzdF9wbGF5ZXJfZ2V0X3ZvbHVtZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1tdXRlIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfbXV0ZcKgKCkiPmdzdF9wbGF5ZXJfZ2V0X211dGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1waXBlbGluZSIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3BpcGVsaW5lwqAoKSI+Z3N0X3BsYXllcl9nZXRfcGlwZWxpbmU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiIHRpdGxlPSJnc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWzCoCgpIj5nc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWw8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3VpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcG9zaXRpb24tdXBkYXRlLWludGVydmFsIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFswqAoKSI+Z3N0X3BsYXllcl9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXN0YXRlLWdldC1uYW1lIiB0aXRsZT0iZ3N0X3BsYXllcl9zdGF0ZV9nZXRfbmFtZcKgKCkiPmdzdF9wbGF5ZXJfc3RhdGVfZ2V0X25hbWU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1FUlJPUjpDQVBTIiB0aXRsZT0iR1NUX1BMQVlFUl9FUlJPUiI+R1NUX1BMQVlFUl9FUlJPUjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZXJyb3ItZ2V0LW5hbWUiIHRpdGxlPSJnc3RfcGxheWVyX2Vycm9yX2dldF9uYW1lwqAoKSI+Z3N0X3BsYXllcl9lcnJvcl9nZXRfbmFtZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1tZWRpYS1pbmZvIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfbWVkaWFfaW5mb8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X21lZGlhX2luZm88L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURvdWJseS1MaW5rZWQtTGlzdHMuaHRtbCNHTGlzdCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5HTGlzdDwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1hdWRpby1zdHJlYW1zIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfYXVkaW9fc3RyZWFtc8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X2F1ZGlvX3N0cmVhbXM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURvdWJseS1MaW5rZWQtTGlzdHMuaHRtbCNHTGlzdCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5HTGlzdDwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC12aWRlby1zdHJlYW1zIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfdmlkZW9fc3RyZWFtc8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURvdWJseS1MaW5rZWQtTGlzdHMuaHRtbCNHTGlzdCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5HTGlzdDwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1zdWJ0aXRsZS1zdHJlYW1zIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfc3RyZWFtc8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3N0cmVhbXM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtYXVkaW8tdHJhY2siIHRpdGxlPSJnc3RfcGxheWVyX3NldF9hdWRpb190cmFja8KgKCkiPmdzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXZpZGVvLXRyYWNrIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2vCoCgpIj5nc3RfcGxheWVyX3NldF92aWRlb190cmFjazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1zdWJ0aXRsZS10cmFjayIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrwqAoKSI+Z3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2s8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC1hdWRpby10cmFjayIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfYXVkaW9fdHJhY2vCoCgpIj5nc3RfcGxheWVyX2dldF9jdXJyZW50X2F1ZGlvX3RyYWNrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtdmlkZW8tdHJhY2siIHRpdGxlPSJnc3RfcGxheWVyX2dldF9jdXJyZW50X3ZpZGVvX3RyYWNrwqAoKSI+Z3N0X3BsYXllcl9nZXRfY3VycmVudF92aWRlb190cmFjazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllclN1YnRpdGxlSW5mbzwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LXN1YnRpdGxlLXRyYWNrIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfY3VycmVudF9zdWJ0aXRsZV90cmFja8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfc3VidGl0bGVfdHJhY2s8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1hdWRpby10cmFjay1lbmFibGVkIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2tfZW5hYmxlZMKgKCkiPmdzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrX2VuYWJsZWQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC12aWRlby10cmFjay1lbmFibGVkIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2tfZW5hYmxlZMKgKCkiPmdzdF9wbGF5ZXJfc2V0X3ZpZGVvX3RyYWNrX2VuYWJsZWQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1zdWJ0aXRsZS10cmFjay1lbmFibGVkIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2tfZW5hYmxlZMKgKCkiPmdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrX2VuYWJsZWQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtc3VidGl0bGUtdXJpIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdXJpwqAoKSI+Z3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdXJpPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXN1YnRpdGxlLXVyaSIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3VyacKgKCkiPmdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3VyaTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC12aXN1YWxpemF0aW9uIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbsKgKCkiPmdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb248L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC12aXN1YWxpemF0aW9uLWVuYWJsZWQiIHRpdGxlPSJnc3RfcGxheWVyX3NldF92aXN1YWxpemF0aW9uX2VuYWJsZWTCoCgpIj5nc3RfcGxheWVyX3NldF92aXN1YWxpemF0aW9uX2VuYWJsZWQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC12aXN1YWxpemF0aW9uIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfY3VycmVudF92aXN1YWxpemF0aW9uwqAoKSI+Z3N0X3BsYXllcl9nZXRfY3VycmVudF92aXN1YWxpemF0aW9uPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWNvbG9yLWJhbGFuY2UtdHlwZS1nZXQtbmFtZSIgdGl0bGU9ImdzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV90eXBlX2dldF9uYW1lwqAoKSI+Z3N0X3BsYXllcl9jb2xvcl9iYWxhbmNlX3R5cGVfZ2V0X25hbWU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1oYXMtY29sb3ItYmFsYW5jZSIgdGl0bGU9ImdzdF9wbGF5ZXJfaGFzX2NvbG9yX2JhbGFuY2XCoCgpIj5nc3RfcGxheWVyX2hhc19jb2xvcl9iYWxhbmNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtY29sb3ItYmFsYW5jZSIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X2NvbG9yX2JhbGFuY2XCoCgpIj5nc3RfcGxheWVyX3NldF9jb2xvcl9iYWxhbmNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2RvdWJsZTwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jb2xvci1iYWxhbmNlIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfY29sb3JfYmFsYW5jZcKgKCkiPmdzdF9wbGF5ZXJfZ2V0X2NvbG9yX2JhbGFuY2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2RvdWJsZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nZG91YmxlPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX2dldF9yYXRlwqAoKSI+Z3N0X3BsYXllcl9nZXRfcmF0ZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX3NldF9yYXRlwqAoKSI+Z3N0X3BsYXllcl9zZXRfcmF0ZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgorPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX2ZsYWdzIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPsKgKjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLWN1cnJlbnQtYXVkaW8tdHJhY2siIHRpdGxlPSJUaGUg4oCcY3VycmVudC1hdWRpby10cmFja+KAnSBwcm9wZXJ0eSI+Y3VycmVudC1hdWRpby10cmFjazwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3VidGl0bGVJbmZvPC9zcGFuPjwvYT7CoCo8L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1jdXJyZW50LXN1YnRpdGxlLXRyYWNrIiB0aXRsZT0iVGhlIOKAnGN1cnJlbnQtc3VidGl0bGUtdHJhY2vigJ0gcHJvcGVydHkiPmN1cnJlbnQtc3VidGl0bGUtdHJhY2s8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQ8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+wqAqPC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tY3VycmVudC12aWRlby10cmFjayIgdGl0bGU9IlRoZSDigJxjdXJyZW50LXZpZGVvLXRyYWNr4oCdIHByb3BlcnR5Ij5jdXJyZW50LXZpZGVvLXRyYWNrPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludDY0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ2NDwvc3Bhbj48L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tZHVyYXRpb24iIHRpdGxlPSJUaGUg4oCcZHVyYXRpb27igJ0gcHJvcGVydHkiPmR1cmF0aW9uPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPsKgKjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLW1lZGlhLWluZm8iIHRpdGxlPSJUaGUg4oCcbWVkaWEtaW5mb+KAnSBwcm9wZXJ0eSI+bWVkaWEtaW5mbzwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tbXV0ZSIgdGl0bGU9IlRoZSDigJxtdXRl4oCdIHByb3BlcnR5Ij5tdXRlPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+Cis8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT7CoCo8L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1waXBlbGluZSIgdGl0bGU9IlRoZSDigJxwaXBlbGluZeKAnSBwcm9wZXJ0eSI+cGlwZWxpbmU8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQ8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50NjQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDY0PC9zcGFuPjwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1wb3NpdGlvbiIgdGl0bGU9IlRoZSDigJxwb3NpdGlvbuKAnSBwcm9wZXJ0eSI+cG9zaXRpb248L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQ8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCIgdGl0bGU9IlRoZSDigJxwb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWzigJ0gcHJvcGVydHkiPnBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbDwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0idHlwZSI+Z2RvdWJsZTwvc3Bhbj48L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tcmF0ZSIgdGl0bGU9IlRoZSDigJxyYXRl4oCdIHByb3BlcnR5Ij5yYXRlPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclNpZ25hbERpc3BhdGNoZXI8L3NwYW4+PC9hPsKgKjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXNpZ25hbC1kaXNwYXRjaGVyIiB0aXRsZT0iVGhlIOKAnHNpZ25hbC1kaXNwYXRjaGVy4oCdIHByb3BlcnR5Ij5zaWduYWwtZGlzcGF0Y2hlcjwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+V3JpdGUgLyBDb25zdHJ1Y3QgT25seTwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1zdWJ1cmkiIHRpdGxlPSJUaGUg4oCcc3VidXJp4oCdIHByb3BlcnR5Ij5zdWJ1cmk8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS11cmkiIHRpdGxlPSJUaGUg4oCcdXJp4oCdIHByb3BlcnR5Ij51cmk8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9SZW5kZXJlcjwvc3Bhbj48L2E+wqAqPC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tdmlkZW8tcmVuZGVyZXIiIHRpdGxlPSJUaGUg4oCcdmlkZW8tcmVuZGVyZXLigJ0gcHJvcGVydHkiPnZpZGVvLXJlbmRlcmVyPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5Xcml0ZSAvIENvbnN0cnVjdCBPbmx5PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0idHlwZSI+Z2RvdWJsZTwvc3Bhbj48L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tdm9sdW1lIiB0aXRsZT0iVGhlIOKAnHZvbHVtZeKAnSBwcm9wZXJ0eSI+dm9sdW1lPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuc2lnbmFscyI+PC9hPjxoMj5TaWduYWxzPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ic2lnbmFsc19yZXR1cm4iPgorPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzaWduYWxzX25hbWUiPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJzaWduYWxzX2ZsYWdzIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InNpZ25hbF90eXBlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItYnVmZmVyaW5nIiB0aXRsZT0iVGhlIOKAnGJ1ZmZlcmluZ+KAnSBzaWduYWwiPmJ1ZmZlcmluZzwvYT48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfZmxhZ3MiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzaWduYWxfdHlwZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWR1cmF0aW9uLWNoYW5nZWQiIHRpdGxlPSJUaGUg4oCcZHVyYXRpb24tY2hhbmdlZOKAnSBzaWduYWwiPmR1cmF0aW9uLWNoYW5nZWQ8L2E+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX2ZsYWdzIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic2lnbmFsX3R5cGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1lbmQtb2Ytc3RyZWFtIiB0aXRsZT0iVGhlIOKAnGVuZC1vZi1zdHJlYW3igJ0gc2lnbmFsIj5lbmQtb2Ytc3RyZWFtPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9mbGFncyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InNpZ25hbF90eXBlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItZXJyb3IiIHRpdGxlPSJUaGUg4oCcZXJyb3LigJ0gc2lnbmFsIj5lcnJvcjwvYT48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfZmxhZ3MiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzaWduYWxfdHlwZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLW1lZGlhLWluZm8tdXBkYXRlZCIgdGl0bGU9IlRoZSDigJxtZWRpYS1pbmZvLXVwZGF0ZWTigJ0gc2lnbmFsIj5tZWRpYS1pbmZvLXVwZGF0ZWQ8L2E+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX2ZsYWdzIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic2lnbmFsX3R5cGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1tdXRlLWNoYW5nZWQiIHRpdGxlPSJUaGUg4oCcbXV0ZS1jaGFuZ2Vk4oCdIHNpZ25hbCI+bXV0ZS1jaGFuZ2VkPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9mbGFncyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InNpZ25hbF90eXBlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItcG9zaXRpb24tdXBkYXRlZCIgdGl0bGU9IlRoZSDigJxwb3NpdGlvbi11cGRhdGVk4oCdIHNpZ25hbCI+cG9zaXRpb24tdXBkYXRlZDwvYT48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfZmxhZ3MiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzaWduYWxfdHlwZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXNlZWstZG9uZSIgdGl0bGU9IlRoZSDigJxzZWVrLWRvbmXigJ0gc2lnbmFsIj5zZWVrLWRvbmU8L2E+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX2ZsYWdzIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic2lnbmFsX3R5cGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1zdGF0ZS1jaGFuZ2VkIiB0aXRsZT0iVGhlIOKAnHN0YXRlLWNoYW5nZWTigJ0gc2lnbmFsIj5zdGF0ZS1jaGFuZ2VkPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9mbGFncyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InNpZ25hbF90eXBlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItdmlkZW8tZGltZW5zaW9ucy1jaGFuZ2VkIiB0aXRsZT0iVGhlIOKAnHZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZOKAnSBzaWduYWwiPnZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZDwvYT48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfZmxhZ3MiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzaWduYWxfdHlwZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXZvbHVtZS1jaGFuZ2VkIiB0aXRsZT0iVGhlIOKAnHZvbHVtZS1jaGFuZ2Vk4oCdIHNpZ25hbCI+dm9sdW1lLWNoYW5nZWQ8L2E+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX2ZsYWdzIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic2lnbmFsX3R5cGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci13YXJuaW5nIiB0aXRsZT0iVGhlIOKAnHdhcm5pbmfigJ0gc2lnbmFsIj53YXJuaW5nPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9mbGFncyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGEgbmFtZT0iR3N0UGxheWVyIj48L2E+PGEgbmFtZT0iR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciI+PC9hPjxhIG5hbWU9IkdzdFBsYXllclZpZGVvUmVuZGVyZXIiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KKzxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1zdHJ1Y3QiIHRpdGxlPSJHc3RQbGF5ZXIiPkdzdFBsYXllcjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+ZW51bTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTdGF0ZSIgdGl0bGU9ImVudW0gR3N0UGxheWVyU3RhdGUiPkdzdFBsYXllclN0YXRlPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5lbnVtPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllckVycm9yIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJFcnJvciI+R3N0UGxheWVyRXJyb3I8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPmVudW08L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZSIgdGl0bGU9ImVudW0gR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZSI+R3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZTwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlci1zdHJ1Y3QiIHRpdGxlPSJHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIj5Hc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZSIgdGl0bGU9InN0cnVjdCBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlIj5Hc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyLXN0cnVjdCIgdGl0bGU9IkdzdFBsYXllclZpZGVvUmVuZGVyZXIiPkdzdFBsYXllclZpZGVvUmVuZGVyZXI8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlIiB0aXRsZT0ic3RydWN0IEdzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2UiPkdzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2U8L2E+PC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Cis8cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LUVudW1lcmF0aW9uLWFuZC1GbGFnLVR5cGVzLmh0bWwiPkdFbnVtPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUKKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiBHc3RQbGF5ZXJFcnJvcgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdFBsYXllclN0YXRlCisgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvR1R5cGVNb2R1bGUuaHRtbCI+R0ludGVyZmFjZTwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyCisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0UGxheWVyVmlkZW9SZW5kZXJlcgorICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+CisgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RQbGF5ZXIKKzwvcHJlPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIucHJlcmVxdWlzaXRlcyI+PC9hPjxoMj5QcmVyZXF1aXNpdGVzPC9oMj4KKzxwPgorR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciByZXF1aXJlcworIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPi48L3A+Cis8cD4KK0dzdFBsYXllclZpZGVvUmVuZGVyZXIgcmVxdWlyZXMKKyA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4uPC9wPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaW1wbGVtZW50YXRpb25zIj48L2E+PGgyPktub3duIEltcGxlbWVudGF0aW9uczwvaDI+Cis8cD4KK0dzdFBsYXllclZpZGVvUmVuZGVyZXIgaXMgaW1wbGVtZW50ZWQgYnkKKyBHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyLjwvcD4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLW5ldyI+PC9hPjxoMz5nc3RfcGxheWVyX25ld8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfbmV3ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclZpZGVvUmVuZGVyZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVyPC9zcGFuPjwvYT4gKnZpZGVvX3JlbmRlcmVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclNpZ25hbERpc3BhdGNoZXI8L3NwYW4+PC9hPiAqc2lnbmFsX2Rpc3BhdGNoZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Q3JlYXRlcyBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2UgdGhhdCB1c2VzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaWduYWxfZGlzcGF0Y2hlcjwvY29kZT48L2VtPgorIHRvIGRpc3BhdGNoCitzaWduYWxzIHRvIHNvbWUgZXZlbnQgbG9vcCBzeXN0ZW0sIG9yIGVtaXRzIHNpZ25hbHMgZGlyZWN0bHkgaWYgTlVMTCBpcworcGFzc2VkLiBTZWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwjZ3N0LXBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci1uZXciIHRpdGxlPSJnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX25ld8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9uZXcoKTwvY29kZT48L2E+LjwvcD4KKzxwPlZpZGVvIGlzIGdvaW5nIHRvIGJlIHJlbmRlcmVkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT52aWRlb19yZW5kZXJlcjwvY29kZT48L2VtPgorLCBvciBpZiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPiBpcyBwcm92aWRlZAorbm8gc3BlY2lhbCB2aWRlbyBzZXQgdXAgd2lsbCBiZSBkb25lIGFuZCBzb21lIGRlZmF1bHQgaGFuZGxpbmcgd2lsbCBiZQorcGVyZm9ybWVkLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjIuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmlkZW9fcmVuZGVyZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gR3N0UGxheWVyVmlkZW9SZW5kZXJlciB0byB1c2UuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl1bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNpZ25hbF9kaXNwYXRjaGVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIgdG8gdXNlLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJGcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBmdWxsPC9zcGFuPjwvYWNyb255bT5dWzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMi43Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgbmV3IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXBsYXkiPjwvYT48aDM+Z3N0X3BsYXllcl9wbGF5wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl9wbGF5ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+UmVxdWVzdCB0byBwbGF5IHRoZSBsb2FkZWQgc3RyZWFtLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1wYXVzZSI+PC9hPjxoMz5nc3RfcGxheWVyX3BhdXNlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl9wYXVzZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlBhdXNlcyB0aGUgY3VycmVudCBzdHJlYW0uPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXN0b3AiPjwvYT48aDM+Z3N0X3BsYXllcl9zdG9wwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl9zdG9wICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+U3RvcHMgcGxheWluZyB0aGUgY3VycmVudCBzdHJlYW0gYW5kIHJlc2V0cyB0byB0aGUgZmlyc3QgcG9zaXRpb24KK2luIHRoZSBzdHJlYW0uPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXNlZWsiPjwvYT48aDM+Z3N0X3BsYXllcl9zZWVrwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl9zZWVrICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDbG9jay5odG1sI0dzdENsb2NrVGltZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdENsb2NrVGltZTwvc3Bhbj48L2E+IHBvc2l0aW9uPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlNlZWtzIHRoZSBjdXJyZW50bHktcGxheWluZyBzdHJlYW0gdG8gdGhlIGFic29sdXRlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5wb3NpdGlvbjwvY29kZT48L2VtPgorIHRpbWUKK2luIG5hbm9zZWNvbmRzLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBvc2l0aW9uPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+cG9zaXRpb24gdG8gc2VlayBpbiBuYW5vc2Vjb25kczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXNldC11cmkiPjwvYT48aDM+Z3N0X3BsYXllcl9zZXRfdXJpwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl9zZXRfdXJpICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICp1cmk8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+U2V0cyB0aGUgbmV4dCBVUkkgdG8gcGxheS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC43LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD51cmk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5uZXh0IFVSSSB0byBwbGF5LjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWdldC11cmkiPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfdXJpwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfZ2V0X3VyaSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkdldHMgdGhlIFVSSSBvZiB0aGUgY3VycmVudGx5LXBsYXlpbmcgc3RyZWFtLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjguNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBVUkkgb2YgdGhlCitjdXJyZW50bHktcGxheWluZyBzdHJlYW0uIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItTWVtb3J5LUFsbG9jYXRpb24uaHRtbCNnLWZyZWUiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z19mcmVlKCk8L2NvZGU+PC9hPiBhZnRlciB1c2FnZS4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1nZXQtZHVyYXRpb24iPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfZHVyYXRpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDbG9jay5odG1sI0dzdENsb2NrVGltZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RDbG9ja1RpbWU8L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9nZXRfZHVyYXRpb24gKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5SZXRyaWV2ZXMgdGhlIGR1cmF0aW9uIG9mIHRoZSBtZWRpYSBzdHJlYW0gdGhhdCBzZWxmIHJlcHJlc2VudHMuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuOS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBkdXJhdGlvbiBvZiB0aGUgY3VycmVudGx5LXBsYXlpbmcgbWVkaWEgc3RyZWFtLCBpbgorbmFub3NlY29uZHMuPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LXBvc2l0aW9uIj48L2E+PGgzPmdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2xvY2suaHRtbCNHc3RDbG9ja1RpbWUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0Q2xvY2tUaW1lPC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMTAuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjEwLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIGFic29sdXRlIHBvc2l0aW9uIHRpbWUsIGluIG5hbm9zZWNvbmRzLCBvZiB0aGUKK2N1cnJlbnRseS1wbGF5aW5nIHN0cmVhbS48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtdm9sdW1lIj48L2E+PGgzPmdzdF9wbGF5ZXJfc2V0X3ZvbHVtZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfc2V0X3ZvbHVtZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZG91YmxlPC9zcGFuPjwvYT4gdmFsPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlNldHMgdGhlIHZvbHVtZSBsZXZlbCBvZiB0aGUgc3RyZWFtIGFzIGEgcGVyY2VudGFnZSBiZXR3ZWVuIDAgYW5kIDEuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMTEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhbDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBuZXcgdm9sdW1lIGxldmVsLCBhcyBhIHBlcmNlbnRhZ2UgYmV0d2VlbiAwIGFuZCAxPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc2V0LW11dGUiPjwvYT48aDM+Z3N0X3BsYXllcl9zZXRfbXV0ZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfc2V0X211dGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHZhbDwvY29kZT48L2VtPik7PC9wcmU+Cis8cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiB0aGUgY3VycmVudGx5LXBsYXlpbmcgc3RyZWFtIHNob3VsZCBiZSBtdXRlZC48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4xMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmFsPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+TXV0ZSBzdGF0ZSB0aGUgc2hvdWxkIGJlIHNldDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWdldC12b2x1bWUiPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfdm9sdW1lwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2RvdWJsZTwvc3Bhbj48L2E+Citnc3RfcGxheWVyX2dldF92b2x1bWUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5SZXR1cm5zIHRoZSBjdXJyZW50IHZvbHVtZSBsZXZlbCwgYXMgYSBwZXJjZW50YWdlIGJldHdlZW4gMCBhbmQgMS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4xMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMTMuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgdm9sdW1lIGFzIHBlcmNlbnRhZ2UgYmV0d2VlbiAwIGFuZCAxLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWdldC1tdXRlIj48L2E+PGgzPmdzdF9wbGF5ZXJfZ2V0X211dGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9nZXRfbXV0ZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjE0LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4xNC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHRoZSBjdXJyZW50bHktcGxheWluZyBzdHJlYW0gaXMgbXV0ZWQuPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LXBpcGVsaW5lIj48L2E+PGgzPmdzdF9wbGF5ZXJfZ2V0X3BpcGVsaW5lwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9nZXRfcGlwZWxpbmUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4xNS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMTUuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBUaGUgaW50ZXJuYWwgcGxheWJpbiBpbnN0YW5jZS4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtcG9zaXRpb24tdXBkYXRlLWludGVydmFsIj48L2E+PGgzPmdzdF9wbGF5ZXJfc2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfc2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGludGVydmFsPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlNldCBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgYmV0d2VlbiB0d28gcG9zaXRpb24tdXBkYXRlZCBzaWduYWxzLgorUGFzcyAwIHRvIHN0b3AgdXBkYXRpbmcgdGhlIHBvc2l0aW9uLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjE2LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbnRlcnZhbDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmludGVydmFsIGluIG1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LXBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCI+PC9hPjxoMz5nc3RfcGxheWVyX2dldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWzCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3VpbnQ8L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4xNy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMTcuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBjdXJyZW50IHBvc2l0aW9uIHVwZGF0ZSBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHM8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zdGF0ZS1nZXQtbmFtZSI+PC9hPjxoMz5nc3RfcGxheWVyX3N0YXRlX2dldF9uYW1lwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfc3RhdGVfZ2V0X25hbWUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU3RhdGUiIHRpdGxlPSJlbnVtIEdzdFBsYXllclN0YXRlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RhdGU8L3NwYW4+PC9hPiBzdGF0ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5HZXRzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gc3RhdGUuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMTguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnN0YXRlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU3RhdGUiIHRpdGxlPSJlbnVtIEdzdFBsYXllclN0YXRlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RhdGU8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjE4LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gYSBzdHJpbmcgd2l0aCB0aGUgbmFtZSBvZiB0aGUgc3RhdGUuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1QTEFZRVItRVJST1I6Q0FQUyI+PC9hPjxoMz5HU1RfUExBWUVSX0VSUk9SPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lICAgICAgR1NUX1BMQVlFUl9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAoZ3N0X3BsYXllcl9lcnJvcl9xdWFyayAoKSkKKzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWVycm9yLWdldC1uYW1lIj48L2E+PGgzPmdzdF9wbGF5ZXJfZXJyb3JfZ2V0X25hbWXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9lcnJvcl9nZXRfbmFtZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJFcnJvciIgdGl0bGU9ImVudW0gR3N0UGxheWVyRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJFcnJvcjwvc3Bhbj48L2E+IGVycm9yPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkdldHMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiBlcnJvci48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4yMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZXJyb3I8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJFcnJvciIgdGl0bGU9ImVudW0gR3N0UGxheWVyRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJFcnJvcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjAuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIHN0cmluZyB3aXRoIHRoZSBnaXZlbiBlcnJvci4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRG9uJ3QgZnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1nZXQtbWVkaWEtaW5mbyI+PC9hPjxoMz5nc3RfcGxheWVyX2dldF9tZWRpYV9pbmZvwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfZ2V0X21lZGlhX2luZm8gKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5BIEZ1bmN0aW9uIHRvIGdldCB0aGUgY3VycmVudCBtZWRpYSBpbmZvIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT4gaW5zdGFuY2UuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjIxLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gbWVkaWEgaW5mbyBpbnN0YW5jZS48L3A+Cis8cD5UaGUgY2FsbGVyIHNob3VsZCBmcmVlIGl0IHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI2ctb2JqZWN0LXVucmVmIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdfb2JqZWN0X3VucmVmKCk8L2NvZGU+PC9hPi4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1nZXQtYXVkaW8tc3RyZWFtcyI+PC9hPjxoMz5nc3RfcGxheWVyX2dldF9hdWRpb19zdHJlYW1zwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1Eb3VibHktTGlua2VkLUxpc3RzLmh0bWwjR0xpc3QiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R0xpc3Q8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9nZXRfYXVkaW9fc3RyZWFtcyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjIuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4yMi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IEEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1Eb3VibHktTGlua2VkLUxpc3RzLmh0bWwjR0xpc3QiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTGlzdDwvc3Bhbj48L2E+IG9mCittYXRjaGluZyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+LiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJEb24ndCBmcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBub25lPC9zcGFuPjwvYWNyb255bT5dWzxhY3JvbnltIHRpdGxlPSJHZW5lcmljcyBhbmQgZGVmaW5pbmcgZWxlbWVudHMgb2YgY29udGFpbmVycyBhbmQgYXJyYXlzLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmVsZW1lbnQtdHlwZTwvc3Bhbj48L2Fjcm9ueW0+IEdzdFBsYXllckF1ZGlvSW5mb108L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LXZpZGVvLXN0cmVhbXMiPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfdmlkZW9fc3RyZWFtc8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRG91Ymx5LUxpbmtlZC1MaXN0cy5odG1sI0dMaXN0Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdMaXN0PC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXMgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjIzLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjMuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBBIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRG91Ymx5LUxpbmtlZC1MaXN0cy5odG1sI0dMaXN0Ij48c3BhbiBjbGFzcz0idHlwZSI+R0xpc3Q8L3NwYW4+PC9hPiBvZgorbWF0Y2hpbmcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPi4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRG9uJ3QgZnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XVs8YWNyb255bSB0aXRsZT0iR2VuZXJpY3MgYW5kIGRlZmluaW5nIGVsZW1lbnRzIG9mIGNvbnRhaW5lcnMgYW5kIGFycmF5cy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5lbGVtZW50LXR5cGU8L3NwYW4+PC9hY3JvbnltPiBHc3RQbGF5ZXJWaWRlb0luZm9dPC9zcGFuPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWdldC1zdWJ0aXRsZS1zdHJlYW1zIj48L2E+PGgzPmdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3N0cmVhbXPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURvdWJseS1MaW5rZWQtTGlzdHMuaHRtbCNHTGlzdCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5HTGlzdDwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX2dldF9zdWJ0aXRsZV9zdHJlYW1zICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4yNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjI0LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gQSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURvdWJseS1MaW5rZWQtTGlzdHMuaHRtbCNHTGlzdCI+PHNwYW4gY2xhc3M9InR5cGUiPkdMaXN0PC9zcGFuPjwvYT4gb2YKK21hdGNoaW5nIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3VidGl0bGVJbmZvPC9zcGFuPjwvYT4uIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl1bPGFjcm9ueW0gdGl0bGU9IkdlbmVyaWNzIGFuZCBkZWZpbmluZyBlbGVtZW50cyBvZiBjb250YWluZXJzIGFuZCBhcnJheXMuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+ZWxlbWVudC10eXBlPC9zcGFuPjwvYWNyb255bT4gR3N0UGxheWVyU3VidGl0bGVJbmZvXTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtYXVkaW8tdHJhY2siPjwvYT48aDM+Z3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2vCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2sgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gc3RyZWFtX2luZGV4PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjI1LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdHJlYW1faW5kZXg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5zdHJlYW0gaW5kZXg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjI1LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gb3IgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPjwvcD4KKzxwPlNldHMgdGhlIGF1ZGlvIHRyYWNrIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zdHJlYW1faWRleDwvY29kZT48L2VtPgorLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXNldC12aWRlby10cmFjayI+PC9hPjxoMz5nc3RfcGxheWVyX3NldF92aWRlb190cmFja8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfcGxheWVyX3NldF92aWRlb190cmFjayAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBzdHJlYW1faW5kZXg8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjYuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnN0cmVhbV9pbmRleDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnN0cmVhbSBpbmRleDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjYuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBvciA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+PC9wPgorPHA+U2V0cyB0aGUgdmlkZW8gdHJhY2sgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnN0cmVhbV9pbmRleDwvY29kZT48L2VtPgorLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXNldC1zdWJ0aXRsZS10cmFjayI+PC9hPjxoMz5nc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFja8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFjayAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBzdHJlYW1faW5kZXg8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjcuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnN0cmVhbV9pbmRleDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnN0cmVhbSBpbmRleDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjcuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBvciA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+PC9wPgorPHA+U2V0cyB0aGUgc3VidGl0bGUgc3RyYWNrIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zdHJlYW1faW5kZXg8L2NvZGU+PC9lbT4KKy48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1nZXQtY3VycmVudC1hdWRpby10cmFjayI+PC9hPjxoMz5nc3RfcGxheWVyX2dldF9jdXJyZW50X2F1ZGlvX3RyYWNrwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyQXVkaW9JbmZvPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfYXVkaW9fdHJhY2sgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5BIEZ1bmN0aW9uIHRvIGdldCBjdXJyZW50IGF1ZGlvIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQXVkaW9JbmZvPC9zcGFuPjwvYT4gaW5zdGFuY2UuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjI4LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gY3VycmVudCBhdWRpbyB0cmFjay48L3A+Cis8cD5UaGUgY2FsbGVyIHNob3VsZCBmcmVlIGl0IHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI2ctb2JqZWN0LXVucmVmIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdfb2JqZWN0X3VucmVmKCk8L2NvZGU+PC9hPi4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1nZXQtY3VycmVudC12aWRlby10cmFjayI+PC9hPjxoMz5nc3RfcGxheWVyX2dldF9jdXJyZW50X3ZpZGVvX3RyYWNrwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlkZW9fdHJhY2sgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5BIEZ1bmN0aW9uIHRvIGdldCBjdXJyZW50IHZpZGVvIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT4gaW5zdGFuY2UuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjI5LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gY3VycmVudCB2aWRlbyB0cmFjay48L3A+Cis8cD5UaGUgY2FsbGVyIHNob3VsZCBmcmVlIGl0IHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI2ctb2JqZWN0LXVucmVmIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdfb2JqZWN0X3VucmVmKCk8L2NvZGU+PC9hPi4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1nZXQtY3VycmVudC1zdWJ0aXRsZS10cmFjayI+PC9hPjxoMz5nc3RfcGxheWVyX2dldF9jdXJyZW50X3N1YnRpdGxlX3RyYWNrwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdWJ0aXRsZUluZm8iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyU3VidGl0bGVJbmZvPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfc3VidGl0bGVfdHJhY2sgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5BIEZ1bmN0aW9uIHRvIGdldCBjdXJyZW50IHN1YnRpdGxlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3VidGl0bGVJbmZvPC9zcGFuPjwvYT4gaW5zdGFuY2UuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzAuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjMwLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gY3VycmVudCBzdWJ0aXRsZSB0cmFjay48L3A+Cis8cD5UaGUgY2FsbGVyIHNob3VsZCBmcmVlIGl0IHdpdGggPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI2ctb2JqZWN0LXVucmVmIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdfb2JqZWN0X3VucmVmKCk8L2NvZGU+PC9hPi4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRG9uJ3QgZnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtYXVkaW8tdHJhY2stZW5hYmxlZCI+PC9hPjxoMz5nc3RfcGxheWVyX3NldF9hdWRpb190cmFja19lbmFibGVkwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2tfZW5hYmxlZCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gZW5hYmxlZDwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5FbmFibGUgb3IgZGlzYWJsZSB0aGUgY3VycmVudCBhdWRpbyB0cmFjay48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZW5hYmxlZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPlRSVUUgb3IgRkFMU0U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtdmlkZW8tdHJhY2stZW5hYmxlZCI+PC9hPjxoMz5nc3RfcGxheWVyX3NldF92aWRlb190cmFja19lbmFibGVkwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2tfZW5hYmxlZCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gZW5hYmxlZDwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5FbmFibGUgb3IgZGlzYWJsZSB0aGUgY3VycmVudCB2aWRlbyB0cmFjay48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZW5hYmxlZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPlRSVUUgb3IgRkFMU0U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtc3VidGl0bGUtdHJhY2stZW5hYmxlZCI+PC9hPjxoMz5nc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFja19lbmFibGVkwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2tfZW5hYmxlZCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gZW5hYmxlZDwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5FbmFibGUgb3IgZGlzYWJsZSB0aGUgY3VycmVudCBzdWJ0aXRsZSB0cmFjay48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZW5hYmxlZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPlRSVUUgb3IgRkFMU0U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtc3VidGl0bGUtdXJpIj48L2E+PGgzPmdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3VyacKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV91cmkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKnVyaTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXJpPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+c3VidGl0bGUgVVJJPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zNC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IG9yIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT48L3A+Cis8cD5TZXRzIHRoZSBleHRlcm5hbCBzdWJ0aXRsZSBVUkkuPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LXN1YnRpdGxlLXVyaSI+PC9hPjxoMz5nc3RfcGxheWVyX2dldF9zdWJ0aXRsZV91cmnCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfdXJpICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Y3VycmVudCBzdWJ0aXRsZSBVUkk8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBVUkkgb2YgdGhlIGN1cnJlbnQgZXh0ZXJuYWwgc3VidGl0bGUuCis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLU1lbW9yeS1BbGxvY2F0aW9uLmh0bWwjZy1mcmVlIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdfZnJlZSgpPC9jb2RlPjwvYT4gYWZ0ZXIgdXNhZ2UuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc2V0LXZpc3VhbGl6YXRpb24iPjwvYT48aDM+Z3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfcGxheWVyX3NldF92aXN1YWxpemF0aW9uICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zNi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bmFtZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnZpc3VhbGl6YXRpb24gZWxlbWVudCBvYnRhaW5lZCBmcm9tCis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGxheWVyLXZpc3VhbGl6YXRpb25zLWdldCIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZ2V0wqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2dldCgpPC9jb2RlPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjM2LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgdGhlIHZpc3VhbGl6YXRpb25zIHdhcyBzZXQgY29ycmVjdGx5LiBPdGhlcndpc2UsCis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+LjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXNldC12aXN1YWxpemF0aW9uLWVuYWJsZWQiPjwvYT48aDM+Z3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbl9lbmFibGVkwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbl9lbmFibGVkICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IGVuYWJsZWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RW5hYmxlIG9yIGRpc2FibGUgdGhlIHZpc3VhbGl6YXRpb24uPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmVuYWJsZWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5UUlVFIG9yIEZBTFNFPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtdmlzdWFsaXphdGlvbiI+PC9hPjxoMz5nc3RfcGxheWVyX2dldF9jdXJyZW50X3Zpc3VhbGl6YXRpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9nZXRfY3VycmVudF92aXN1YWxpemF0aW9uICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzguNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjM4LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gTmFtZSBvZiB0aGUgY3VycmVudGx5IGVuYWJsZWQgdmlzdWFsaXphdGlvbi4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItTWVtb3J5LUFsbG9jYXRpb24uaHRtbCNnLWZyZWUiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z19mcmVlKCk8L2NvZGU+PC9hPiBhZnRlciB1c2FnZS4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1jb2xvci1iYWxhbmNlLXR5cGUtZ2V0LW5hbWUiPjwvYT48aDM+Z3N0X3BsYXllcl9jb2xvcl9iYWxhbmNlX3R5cGVfZ2V0X25hbWXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9jb2xvcl9iYWxhbmNlX3R5cGVfZ2V0X25hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZTwvc3Bhbj48L2E+IHR5cGU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+R2V0cyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGdpdmVuIGNvbG9yIGJhbGFuY2UgdHlwZS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dHlwZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiIHRpdGxlPSJlbnVtIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zOS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgc3RyaW5nIHdpdGggdGhlIG5hbWUgb2YgdGhlIGNvbG9yCitiYWxhbmNlIHR5cGUuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItaGFzLWNvbG9yLWJhbGFuY2UiPjwvYT48aDM+Z3N0X3BsYXllcl9oYXNfY29sb3JfYmFsYW5jZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfcGxheWVyX2hhc19jb2xvcl9iYWxhbmNlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Q2hlY2tzIHdoZXRoZXIgdGhlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5wbGF5ZXI8L2NvZGU+PC9lbT4KKyBoYXMgY29sb3IgYmFsYW5jZSBzdXBwb3J0IGF2YWlsYWJsZS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC40MC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuNDAuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cGxheWVyPC9jb2RlPjwvZW0+CitoYXMgY29sb3IgYmFsYW5jZSBzdXBwb3J0LiBPdGhlcndpc2UsCis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+LjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXNldC1jb2xvci1iYWxhbmNlIj48L2E+PGgzPmdzdF9wbGF5ZXJfc2V0X2NvbG9yX2JhbGFuY2XCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfcGxheWVyX3NldF9jb2xvcl9iYWxhbmNlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiIHRpdGxlPSJlbnVtIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlPC9zcGFuPjwvYT4gdHlwZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2RvdWJsZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdkb3VibGU8L3NwYW4+PC9hPiB2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5TZXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpbmRpY2F0ZWQgY2hhbm5lbCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dHlwZTwvY29kZT48L2VtPgorIHRvIHRoZSBwYXNzZWQKK3ZhbHVlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjQxLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50eXBlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiIHRpdGxlPSJlbnVtIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmFsdWU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5UaGUgbmV3IHZhbHVlIGZvciB0aGUgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnR5cGU8L2NvZGU+PC9lbT4KKywgcmFuZ2VkIFswLDFdPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LWNvbG9yLWJhbGFuY2UiPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfY29sb3JfYmFsYW5jZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdkb3VibGU8L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9nZXRfY29sb3JfYmFsYW5jZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZTwvc3Bhbj48L2E+IHR5cGU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+UmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGluZGljYXRlZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dHlwZTwvY29kZT48L2VtPgorLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjQyLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50eXBlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiIHRpdGxlPSJlbnVtIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjQyLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gVGhlIGN1cnJlbnQgdmFsdWUgb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnR5cGU8L2NvZGU+PC9lbT4KKywgYmV0d2VlbiBbMCwxXS4gSW4gY2FzZSBvZgorZXJyb3IgLTEgaXMgcmV0dXJuZWQuPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LXJhdGUiPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfcmF0ZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdkb3VibGU8L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9nZXRfcmF0ZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjQzLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC40My41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGN1cnJlbnQgcGxheWJhY2sgcmF0ZTwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXNldC1yYXRlIj48L2E+PGgzPmdzdF9wbGF5ZXJfc2V0X3JhdGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfcGxheWVyX3NldF9yYXRlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZG91YmxlPC9zcGFuPjwvYT4gcmF0ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5QbGF5YmFjayBhdCBzcGVjaWZpZWQgcmF0ZTwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjQ0LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5yYXRlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+cGxheWJhY2sgcmF0ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLXN0cnVjdCI+PC9hPjxoMz5Hc3RQbGF5ZXI8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXIgR3N0UGxheWVyOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXJTdGF0ZSI+PC9hPjxoMz5lbnVtIEdzdFBsYXllclN0YXRlPC9oMz4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE1LjMuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KKzxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtUExBWUVSLVNUQVRFLVNUT1BQRUQ6Q0FQUyI+PC9hPkdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRDwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD50aGUgcGxheWVyIGlzIHN0b3BwZWQuPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1QTEFZRVItU1RBVEUtQlVGRkVSSU5HOkNBUFMiPjwvYT5HU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORzwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD50aGUgcGxheWVyIGlzIGJ1ZmZlcmluZy48L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULVBMQVlFUi1TVEFURS1QQVVTRUQ6Q0FQUyI+PC9hPkdTVF9QTEFZRVJfU1RBVEVfUEFVU0VEPC9wPjwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPnRoZSBwbGF5ZXIgaXMgcGF1c2VkLjwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtUExBWUVSLVNUQVRFLVBMQVlJTkc6Q0FQUyI+PC9hPkdTVF9QTEFZRVJfU1RBVEVfUExBWUlORzwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD50aGUgcGxheWVyIGlzIGN1cnJlbnRseSBwbGF5aW5nIGEKK3N0cmVhbS48L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllckVycm9yIj48L2E+PGgzPmVudW0gR3N0UGxheWVyRXJyb3I8L2gzPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTUuNC4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgorPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtUExBWUVSLUVSUk9SLUZBSUxFRDpDQVBTIj48L2E+R1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+Z2VuZXJpYyBlcnJvci48L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIj48L2E+PGgzPmVudW0gR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZTwvaDM+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNS41LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULVBMQVlFUi1DT0xPUi1CQUxBTkNFLUJSSUdIVE5FU1M6Q0FQUyI+PC9hPkdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9CUklHSFRORVNTPC9wPjwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPmJyaWdodG5lc3Mgb3IgYmxhY2sgbGV2ZWwuPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1QTEFZRVItQ09MT1ItQkFMQU5DRS1DT05UUkFTVDpDQVBTIj48L2E+R1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0NPTlRSQVNUPC9wPjwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPmNvbnRyYXN0IG9yIGx1bWEgZ2Fpbi48L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULVBMQVlFUi1DT0xPUi1CQUxBTkNFLVNBVFVSQVRJT046Q0FQUyI+PC9hPkdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9TQVRVUkFUSU9OPC9wPjwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPmNvbG9yIHNhdHVyYXRpb24gb3IgY2hyb21hCitnYWluLjwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtUExBWUVSLUNPTE9SLUJBTEFOQ0UtSFVFOkNBUFMiPjwvYT5HU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfSFVFPC9wPjwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPmh1ZSBvciBjb2xvciBiYWxhbmNlLjwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlci1zdHJ1Y3QiPjwvYT48aDM+R3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcjwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXIgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcjs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZSI+PC9hPjxoMz5zdHJ1Y3QgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2UgeworICBHVHlwZUludGVyZmFjZSBwYXJlbnRfaWZhY2U7CisKKyAgdm9pZCAoKmRpc3BhdGNoKSAoR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciAqIHNlbGYsCisgICAgICAgICAgICAgICAgICAgIEdzdFBsYXllciAqIHBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckZ1bmMgZW1pdHRlciwKKyAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveSk7Cit9OworPC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllclZpZGVvUmVuZGVyZXItc3RydWN0Ij48L2E+PGgzPkdzdFBsYXllclZpZGVvUmVuZGVyZXI8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIEdzdFBsYXllclZpZGVvUmVuZGVyZXI7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2UiPjwvYT48aDM+c3RydWN0IEdzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2U8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlIHsKKyAgR1R5cGVJbnRlcmZhY2UgcGFyZW50X2lmYWNlOworCisgIEdzdEVsZW1lbnQgKiAoKmNyZWF0ZV92aWRlb19zaW5rKSAoR3N0UGxheWVyVmlkZW9SZW5kZXJlciAqIHNlbGYsIEdzdFBsYXllciAqIHBsYXllcik7Cit9OworPC9wcmU+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnByb3BlcnR5LWRldGFpbHMiPjwvYT48aDI+UHJvcGVydHkgRGV0YWlsczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItLWN1cnJlbnQtYXVkaW8tdHJhY2siPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxjdXJyZW50LWF1ZGlvLXRyYWNr4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxjdXJyZW50LWF1ZGlvLXRyYWNr4oCdICAgICAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPsKgKjwvcHJlPgorPHA+Q3VycmVudCBhdWRpbyB0cmFjayBpbmZvcm1hdGlvbi48L3A+Cis8cD5GbGFnczogUmVhZDwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLS1jdXJyZW50LXN1YnRpdGxlLXRyYWNrIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcY3VycmVudC1zdWJ0aXRsZS10cmFja+KAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcY3VycmVudC1zdWJ0aXRsZS10cmFja+KAnSAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3VidGl0bGVJbmZvPC9zcGFuPjwvYT7CoCo8L3ByZT4KKzxwPkN1cnJlbnQgYXVkaW8gc3VidGl0bGUgaW5mb3JtYXRpb24uPC9wPgorPHA+RmxhZ3M6IFJlYWQ8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci0tY3VycmVudC12aWRlby10cmFjayI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGN1cnJlbnQtdmlkZW8tdHJhY2vigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGN1cnJlbnQtdmlkZW8tdHJhY2vigJ0gICAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+wqAqPC9wcmU+Cis8cD5DdXJyZW50IHZpZGVvIHRyYWNrIGluZm9ybWF0aW9uLjwvcD4KKzxwPkZsYWdzOiBSZWFkPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItLWR1cmF0aW9uIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcZHVyYXRpb27igJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGR1cmF0aW9u4oCdICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQ2NCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50NjQ8L3NwYW4+PC9hPjwvcHJlPgorPHA+RHVyYXRpb24uPC9wPgorPHA+RmxhZ3M6IFJlYWQ8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNTwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLS1tZWRpYS1pbmZvIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcbWVkaWEtaW5mb+KAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcbWVkaWEtaW5mb+KAnSAgICAgICAgICAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT7CoCo8L3ByZT4KKzxwPkN1cnJlbnQgbWVkaWEgaW5mb3JtYXRpb24uPC9wPgorPHA+RmxhZ3M6IFJlYWQ8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci0tbXV0ZSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnG11dGXigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnG11dGXigJ0gICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC9wcmU+Cis8cD5NdXRlLjwvcD4KKzxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiBGQUxTRTwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLS1waXBlbGluZSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHBpcGVsaW5l4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxwaXBlbGluZeKAnSAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+wqAqPC9wcmU+Cis8cD5HU3RyZWFtZXIgcGlwZWxpbmUgdGhhdCBpcyB1c2VkLjwvcD4KKzxwPkZsYWdzOiBSZWFkPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItLXBvc2l0aW9uIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCccG9zaXRpb27igJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnHBvc2l0aW9u4oCdICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQ2NCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50NjQ8L3NwYW4+PC9hPjwvcHJlPgorPHA+Q3VycmVudCBQb3NpdGlvbi48L3A+Cis8cD5GbGFnczogUmVhZDwvcD4KKzxwPkRlZmF1bHQgdmFsdWU6IDE4NDQ2NzQ0MDczNzA5NTUxNjE1PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItLXBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbOKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCccG9zaXRpb24tdXBkYXRlLWludGVydmFs4oCdIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT48L3ByZT4KKzxwPkludGVydmFsIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHR3byBwb3NpdGlvbi11cGRhdGVkIHNpZ25hbHMuUGFzcyAwIHRvIHN0b3AgdXBkYXRpbmcgdGhlIHBvc2l0aW9uLjwvcD4KKzxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Cis8cD5BbGxvd2VkIHZhbHVlczogJmx0Oz0gMTAwMDA8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiAxMDA8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci0tcmF0ZSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHJhdGXigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnHJhdGXigJ0gICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2RvdWJsZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdkb3VibGU8L3NwYW4+PC9hPjwvcHJlPgorPHA+UGxheWJhY2sgcmF0ZS48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPHA+QWxsb3dlZCB2YWx1ZXM6IFstNjQsNjRdPC9wPgorPHA+RGVmYXVsdCB2YWx1ZTogMTwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLS1zaWduYWwtZGlzcGF0Y2hlciI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHNpZ25hbC1kaXNwYXRjaGVy4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxzaWduYWwtZGlzcGF0Y2hlcuKAnSAgICAgICAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyPC9zcGFuPjwvYT7CoCo8L3ByZT4KKzxwPkRpc3BhdGNoZXIgZm9yIHRoZSBzaWduYWxzIHRvIGUuZy4gZXZlbnQgbG9vcHMuPC9wPgorPHA+RmxhZ3M6IFdyaXRlIC8gQ29uc3RydWN0IE9ubHk8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci0tc3VidXJpIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcc3VidXJp4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxzdWJ1cmnigJ0gICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKjwvcHJlPgorPHA+Q3VycmVudCBTdWJ0aXRsZSBVUkkuPC9wPgorPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KKzxwPkRlZmF1bHQgdmFsdWU6IE5VTEw8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci0tdXJpIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcdXJp4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJx1cmnigJ0gICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKjwvcHJlPgorPHA+Q3VycmVudCBVUkkuPC9wPgorPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KKzxwPkRlZmF1bHQgdmFsdWU6IE5VTEw8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci0tdmlkZW8tcmVuZGVyZXIiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJx2aWRlby1yZW5kZXJlcuKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcdmlkZW8tcmVuZGVyZXLigJ0gICAgICAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9SZW5kZXJlcjwvc3Bhbj48L2E+wqAqPC9wcmU+Cis8cD5WaWRlbyByZW5kZXJlciB0byB1c2UgZm9yIHJlbmRlcmluZyB2aWRlb3MuPC9wPgorPHA+RmxhZ3M6IFdyaXRlIC8gQ29uc3RydWN0IE9ubHk8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci0tdm9sdW1lIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcdm9sdW1l4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJx2b2x1bWXigJ0gICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZG91YmxlPC9zcGFuPjwvYT48L3ByZT4KKzxwPlZvbHVtZS48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPHA+QWxsb3dlZCB2YWx1ZXM6IFswLDEwXTwvcD4KKzxwPkRlZmF1bHQgdmFsdWU6IDE8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnNpZ25hbC1kZXRhaWxzIj48L2E+PGgyPlNpZ25hbCBEZXRhaWxzPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci1idWZmZXJpbmciPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxidWZmZXJpbmfigJ08L2NvZGU+IHNpZ25hbDwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgordXNlcl9mdW5jdGlvbiAoPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpnc3RwbGF5ZXIsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiAgICAgICBhcmcxLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiAgIHVzZXJfZGF0YSk8L3ByZT4KKzxwPkZsYWdzOiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci1kdXJhdGlvbi1jaGFuZ2VkIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcZHVyYXRpb24tY2hhbmdlZOKAnTwvY29kZT4gc2lnbmFsPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cit1c2VyX2Z1bmN0aW9uICg8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKmdzdHBsYXllciwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludDY0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ2NDwvc3Bhbj48L2E+ICAgIGFyZzEsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+ICAgdXNlcl9kYXRhKTwvcHJlPgorPHA+RmxhZ3M6IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLWVuZC1vZi1zdHJlYW0iPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxlbmQtb2Ytc3RyZWFt4oCdPC9jb2RlPiBzaWduYWw8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK3VzZXJfZnVuY3Rpb24gKDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqZ3N0cGxheWVyLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiAgIHVzZXJfZGF0YSk8L3ByZT4KKzxwPkZsYWdzOiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci1lcnJvciI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGVycm9y4oCdPC9jb2RlPiBzaWduYWw8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK3VzZXJfZnVuY3Rpb24gKDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqZ3N0cGxheWVyLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPiAgICAqYXJnMSwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gICB1c2VyX2RhdGEpPC9wcmU+Cis8cD5GbGFnczogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItbWVkaWEtaW5mby11cGRhdGVkIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcbWVkaWEtaW5mby11cGRhdGVk4oCdPC9jb2RlPiBzaWduYWw8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK3VzZXJfZnVuY3Rpb24gKDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAgICAgICAgICAqZ3N0cGxheWVyLAorICAgICAgICAgICAgICAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPiAqYXJnMSwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gICAgICAgICAgICB1c2VyX2RhdGEpPC9wcmU+Cis8cD5GbGFnczogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItbXV0ZS1jaGFuZ2VkIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcbXV0ZS1jaGFuZ2Vk4oCdPC9jb2RlPiBzaWduYWw8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK3VzZXJfZnVuY3Rpb24gKDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqZ3N0cGxheWVyLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiAgIHVzZXJfZGF0YSk8L3ByZT4KKzxwPkZsYWdzOiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci1wb3NpdGlvbi11cGRhdGVkIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCccG9zaXRpb24tdXBkYXRlZOKAnTwvY29kZT4gc2lnbmFsPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cit1c2VyX2Z1bmN0aW9uICg8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKmdzdHBsYXllciwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludDY0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ2NDwvc3Bhbj48L2E+ICAgIGFyZzEsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+ICAgdXNlcl9kYXRhKTwvcHJlPgorPHA+RmxhZ3M6IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLXNlZWstZG9uZSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHNlZWstZG9uZeKAnTwvY29kZT4gc2lnbmFsPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cit1c2VyX2Z1bmN0aW9uICg8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKmdzdHBsYXllciwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludDY0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ2NDwvc3Bhbj48L2E+ICAgIGFyZzEsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+ICAgdXNlcl9kYXRhKTwvcHJlPgorPHA+RmxhZ3M6IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLXN0YXRlLWNoYW5nZWQiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxzdGF0ZS1jaGFuZ2Vk4oCdPC9jb2RlPiBzaWduYWw8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK3VzZXJfZnVuY3Rpb24gKDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAgICAgKmdzdHBsYXllciwKKyAgICAgICAgICAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTdGF0ZSIgdGl0bGU9ImVudW0gR3N0UGxheWVyU3RhdGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdGF0ZTwvc3Bhbj48L2E+IGFyZzEsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+ICAgICAgIHVzZXJfZGF0YSk8L3ByZT4KKzxwPkZsYWdzOiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci12aWRlby1kaW1lbnNpb25zLWNoYW5nZWQiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJx2aWRlby1kaW1lbnNpb25zLWNoYW5nZWTigJ08L2NvZGU+IHNpZ25hbDwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgordXNlcl9mdW5jdGlvbiAoPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpnc3RwbGF5ZXIsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiAgICAgICBhcmcxLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gICAgICAgYXJnMiwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gICB1c2VyX2RhdGEpPC9wcmU+Cis8cD5GbGFnczogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItdm9sdW1lLWNoYW5nZWQiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJx2b2x1bWUtY2hhbmdlZOKAnTwvY29kZT4gc2lnbmFsPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cit1c2VyX2Z1bmN0aW9uICg8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKmdzdHBsYXllciwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gICB1c2VyX2RhdGEpPC9wcmU+Cis8cD5GbGFnczogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItd2FybmluZyI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHdhcm5pbmfigJ08L2NvZGU+IHNpZ25hbDwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgordXNlcl9mdW5jdGlvbiAoPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpnc3RwbGF5ZXIsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUVycm9yLVJlcG9ydGluZy5odG1sI0dFcnJvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdFcnJvcjwvc3Bhbj48L2E+ICAgICphcmcxLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiAgIHVzZXJfZGF0YSk8L3ByZT4KKzxwPkZsYWdzOiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJmb290ZXIiPgorPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtaDI2NHBhcnNlci5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtaDI2NHBhcnNlci5odG1sCmluZGV4IDA2NmI0NDMuLmE1MDE2OTAgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWgyNjRwYXJzZXIuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1oMjY0cGFyc2VyLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5oMjY0cGFyc2VyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNvZGVjcGFyc2Vycy5odG1sIiB0aXRsZT0iQml0c3RyZWFtIHBhcnNpbmcgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImNvZGVjcGFyc2Vycy5odG1sIiB0aXRsZT0iQml0c3RyZWFtIHBhcnNpbmcgTGlicmFyeSI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1oMjY0cGFyc2VyLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC0yMTEsNyArMjExLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtaDI2NHBhcnNlci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNDAwLDcgKzQwMCw3IEBACiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC4zLjcuNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDU3LDcgKzQ1Nyw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy43LjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTUxNiw3ICs1MTYsNyBAQAogIGlzIHVwIHRvIGRhdGUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy43LjkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU1NSw3ICs1NTUsNyBAQAogIHN0cnVjdHVyZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC4zLjcuMTAuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTYwOCw3ICs2MDgsNyBAQAogIHN0cnVjdHVyZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC4zLjcuMTEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTY1OSw3ICs2NTksNyBAQAogdG8gcGFyc2luZyBhIG5ldyBQUFMgTkFMIHVuaXQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy43LjEyLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC03MDEsNyArNzAxLDcgQEAKICBhcnJheS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC4zLjcuMTMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc1Miw3ICs3NTIsNyBAQAogIGFuZCBzZXRzIGl0IHRvIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy43LjE1LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC03NzgsNyArNzc4LDcgQEAKICBzdHJ1Y3R1cmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy43LjE2LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC04MjQsNyArODI0LDcgQEAKIHRvIHBhcnNpbmcgYSBuZXcgUFBTIE5BTCB1bml0LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuNy4xNy42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtODYzLDcgKzg2Myw3IEBACiAgaW50ZXJuYWwgcmVzb3VyY2VzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuNy4xOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtODk1LDcgKzg5NSw3IEBACiAgYXJndW1lbnRzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuNy4xOS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTM0LDcgKzkzNCw3IEBACiAgYXJndW1lbnRzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuNy4yMC42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTczLDcgKzk3Myw3IEBACiAgYXJndW1lbnRzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuNy4yMS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTAxMiw3ICsxMDEyLDcgQEAKICBhcmd1bWVudHMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy43LjIyLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDU1LDcgKzEwNTUsNyBAQAogIHRvIDEuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy43LjIzLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMTEzLDcgKzExMTMsNyBAQAogPHA+SW5kaWNhdGVzIHRoZSB0eXBlIG9mIEgyNjQgTmFsIFVuaXRzPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy44LjQuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMjcwLDcgKzEyNzAsNyBAQAogPHA+VGhlIHJlc3VsdCBvZiBwYXJzaW5nIEgyNjQgZGF0YS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC4zLjguNS40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEzMjksNyArMTMyOSw3IEBACiA8cD5UaGUgdHlwZSBvZiBTRUkgbWVzc2FnZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC4zLjguNi40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEzODMsNyArMTM4Myw3IEBACiA8cD5TRUkgcGljX3N0cnVjdCB0eXBlPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy44LjcuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNDY1LDcgKzE0NjUsNyBAQAogPHA+VHlwZSBvZiBQaWN0dXJlIHNsaWNlPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy44LjguNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNTYwLDcgKzE1NjAsNyBAQAogPHA+U3RydWN0dXJlIGRlZmluaW5nIHRoZSBOYWwgdW5pdCBoZWFkZXJzPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy44LjEwLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE3MTAsNyArMTcxMCw3IEBACiA8cD5IMjY0IFNlcXVlbmNlIFBhcmFtZXRlciBTZXQgKFNQUyk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC4zLjguMTEuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjA0Nyw3ICsyMDQ3LDcgQEAKIDxwPkRlZmluZXMgdGhlIEhSRCBwYXJhbWV0ZXJzPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy44LjEzLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIxNzgsNyArMjE3OCw3IEBACiA8cD5UaGUgc3RydWN0dXJlIHJlcHJlc2VudGluZyB0aGUgVlVJIHBhcmFtZXRlcnMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy44LjE0LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWpwZWdwYXJzZXIuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWpwZWdwYXJzZXIuaHRtbAppbmRleCBiOGFhMjRlLi4zNGQyZjVjIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1qcGVncGFyc2VyLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtanBlZ3BhcnNlci5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+anBlZ3BhcnNlcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjb2RlY3BhcnNlcnMuaHRtbCIgdGl0bGU9IkJpdHN0cmVhbSBwYXJzaW5nIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1oMjY0cGFyc2VyLmh0bWwiIHRpdGxlPSJoMjY0cGFyc2VyIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWpwZWdwYXJzZXIuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTEwOCw3ICsxMDgsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1qcGVncGFyc2VyLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0yMjMsNyArMjIzLDcgQEAKIGRhdGEgYXZhaWxhYmxlIHdoZW4gcGFyc2luZyB0aGUgc2VnbWVudC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjcuMi42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjczLDcgKzI3Myw3IEBACiBhdmFpbGFibGUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNC43LjMuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTMxMiw3ICszMTIsNyBAQAogYXZhaWxhYmxlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjQuNy40LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zNTcsNyArMzU3LDcgQEAKIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+OzwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjQuNy41LjciPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00MDMsNyArNDAzLDcgQEAKIHRhYmxlIHdpbGwgYWxzbyBiZSBzZXQgdG8gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNC43LjYuNyI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ0MCw3ICs0NDAsNyBAQAogYXZhaWxhYmxlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjQuNy43LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00ODMsNyArNDgzLDcgQEAKIHNwZWNpZmllZCBieSB0aGUgSlBFRyBzdGFuZGFyZC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjcuOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTY2LDcgKzU2Niw3IEBACiA8cD5KUEVHIGVudHJvcHkgY29kaW5nIG1vZGUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNC44LjExLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTk4LDcgKzU5OCw3IEBACiA8cD5KUEVHIGVuY29kaW5nIHByb2Nlc3Nlcy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjguMTIuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC02NTEsNyArNjUxLDcgQEAKIDxwPkEgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgdGhlIHR5cGUgb2YgYSBzZWdtZW50LCBpdHMgb2Zmc2V0IGFuZCBpdHMgc2l6ZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjguMTMuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzAyLDcgKzcwMiw3IEBACiA8cD5GcmFtZSBoZWFkZXIuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNC44LjE0LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc1Miw3ICs3NTIsNyBAQAogPHA+Q29tcG9uZW50LXNwZWNpZmljYXRpb24gcGFyYW1ldGVycy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjguMTUuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzk1LDcgKzc5NSw3IEBACiA8cD5TY2FuIGhlYWRlci48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjguMTYuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtODI5LDcgKzgyOSw3IEBACiA8cD5Db21wb25lbnQtc3BlY2lmaWNhdGlvbiBwYXJhbWV0ZXJzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjQuOC4xNy41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC04NjgsNyArODY4LDcgQEAKIGRlY29kZSBhbiBpbWFnZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjguMTguNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTAyLDcgKzkwMiw3IEBACiA8cD5IdWZmbWFuIHRhYmxlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjQuOC4xOS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC05NDIsNyArOTQyLDcgQEAKIDxwPlF1YW50aXphdGlvbiB0YWJsZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjguMjAuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtbXBlZzRwYXJzZXIuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLW1wZWc0cGFyc2VyLmh0bWwKaW5kZXggMDRjNzZlOC4uNmQwOGRkNiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtbXBlZzRwYXJzZXIuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1tcGVnNHBhcnNlci5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bXBlZzRwYXJzZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY29kZWNwYXJzZXJzLmh0bWwiIHRpdGxlPSJCaXRzdHJlYW0gcGFyc2luZyBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtbXBlZ3ZpZGVvcGFyc2VyLmh0bWwiIHRpdGxlPSJtcGVndmlkZW9wYXJzZXIiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtbXBlZzRwYXJzZXIuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTEwMSw3ICsxMDEsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1tcGVnNHBhcnNlci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMjE3LDcgKzIxNyw3IEBACiBmb3VuZC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC42LjcuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjc5LDcgKzI3OSw3IEBACiBzdHJ1Y3R1cmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNi43LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTMzMyw3ICszMzMsNyBAQAogIHN0cnVjdHVyZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC42LjcuNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzc4LDcgKzM3OCw3IEBACiAgc3RydWN0dXJlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuNy41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00MjgsNyArNDI4LDcgQEAKICBzdHJ1Y3R1cmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNi43LjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ3OSw3ICs0NzksNyBAQAogIHN0cnVjdHVyZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC42LjcuNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTI3LDcgKzUyNyw3IEBACiAgc3RydWN0dXJlPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNi43LjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU4MCw3ICs1ODAsNyBAQAogZGVmaW5lZCBpbjogVGFibGUgNi0zIOKAlCBTdGFydCBjb2RlIHZhbHVlczwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuOC4yLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzE4LDcgKzcxOCw3IEBACiBkZWZpbmVkIGluOiBUYWJsZSA2LTUgLS0gTWVhbmluZyBvZiB2aXN1YWwgb2JqZWN0IHR5cGU8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC42LjguMy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc2MSw3ICs3NjEsNyBAQAogZGVmaW5lZCBpbjogVGFibGUgNi0xMiAtLSBNZWFuaW5nIG9mIHBpeGVsIGFzcGVjdCByYXRpbzwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuOC40LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtODIwLDcgKzgyMCw3IEBACiA8cD5SZXN1bHQgdHlwZSBvZiBhbnkgcGFyc2luZyBmdW5jdGlvbi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC42LjguNS40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg3MSw3ICs4NzEsNyBAQAogVGFibGUgNi0yMCAtLSBNZWFuaW5nIG9mIHZvcF9jb2RpbmdfdHlwZTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuOC42LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTE3LDcgKzkxNyw3IEBACiBkZWZpbmVkIGluOiBUYWJsZSA2LTEzIC0tIE1lYW5pbmcgb2YgY2hyb21hX2Zvcm1hdDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuOC43LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTM4LDcgKzkzOCw3IEBACiBUYWJsZSA2LTE2IOKAlCBWaWRlbyBPYmplY3QgTGF5ZXIgc2hhcGUgdHlwZTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuOC44LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTc3LDcgKzk3Nyw3IEBACiBUYWJsZSBWMiAtIDIgLS0gTWVhbmluZyBvZiBzcHJpdGVfZW5hYmxlIGNvZGV3b3JkczwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuOC45LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTAxMiw3ICsxMDEyLDcgQEAKIFRhYmxlIEcuMSDigJQgRkxDIHRhYmxlIGZvciBwcm9maWxlX2FuZF9sZXZlbF9pbmRpY2F0aW9uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNi44LjEwLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTEzMiw3ICsxMTMyLDcgQEAKIFRhYmxlIEcuMSDigJQgRkxDIHRhYmxlIGZvciBwcm9maWxlX2FuZF9sZXZlbF9pbmRpY2F0aW9uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNi44LjExLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTQ2Miw3ICsxNDYyLDcgQEAKIDxwPkEgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgdGhlIHR5cGUgb2YgYSBwYWNrZXQsIGl0cyBvZmZzZXQgYW5kIGl0cyBzaXplPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNi44LjIwLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE1MTUsNyArMTUxNSw3IEBACiA2LjIuNS4yIFZpZGVvIFBsYW5lIHdpdGggU2hvcnQgSGVhZGVyPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNi44LjIxLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLW1wZWd2aWRlb3BhcnNlci5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtbXBlZ3ZpZGVvcGFyc2VyLmh0bWwKaW5kZXggMTc0ODZlMC4uYTIzMjNkMSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtbXBlZ3ZpZGVvcGFyc2VyLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtbXBlZ3ZpZGVvcGFyc2VyLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5tcGVndmlkZW9wYXJzZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY29kZWNwYXJzZXJzLmh0bWwiIHRpdGxlPSJCaXRzdHJlYW0gcGFyc2luZyBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtanBlZ3BhcnNlci5odG1sIiB0aXRsZT0ianBlZ3BhcnNlciI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1tcGVndmlkZW9wYXJzZXIuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTEzMyw3ICsxMzMsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1tcGVndmlkZW9wYXJzZXIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTIxOSw3ICsyMTksNyBAQAogdGhlIGRhdGEgdG8gZmluZCB0aGUgbmV4dCBwYWNrZXQgaWYgbmVlZGVkLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuNy4yLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yNzMsNyArMjczLDcgQEAKIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuNy4zLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMjcsNyArMzI3LDcgQEAKIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuNy40LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zODIsNyArMzgyLDcgQEAKIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuNy41LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00MzYsNyArNDM2LDcgQEAKIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuNy42LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00OTAsNyArNDkwLDcgQEAKIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuNy43LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01NTcsNyArNTU3LDcgQEAKIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuNy45LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02MjAsNyArNjIwLDcgQEAKICBhcmd1bWVudHMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNS43LjExLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02NTksNyArNjU5LDcgQEAKICBhcmd1bWVudHMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNS43LjEyLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02ODksNyArNjg5LDcgQEAKIDxwPkluZGljYXRlcyB0aGUgdHlwZSBvZiBNUEVHIHBhY2tldDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuOC4yLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzcxLDcgKzc3MSw3IEBACiBQaWN0dXJlIG1heSBvY2N1ciB0b2dldGhlciBvciBzZXBhcmF0ZWx5LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuOC4zLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtODIzLDcgKzgyMyw3IEBACiA8cD5NcGVnLTIgTGV2ZWxzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuOC40LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtODY4LDcgKzg2OCw3IEBACiA8cD5NcGVnLTIgUHJvZmlsZXMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNS44LjUuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC05MjcsNyArOTI3LDcgQEAKIDxwPlBpY3R1cmUgdHlwZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjguNi40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTk3Miw3ICs5NzIsNyBAQAogPHA+UGljdHVyZSBzdHJ1Y3R1cmUgdHlwZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjguNy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEwMjgsNyArMTAyOCw3IEBACiA8cD5UaGUgTXBlZzIgVmlkZW8gU2VxdWVuY2UgSGVhZGVyIHN0cnVjdHVyZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjguOC41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMTI3LDEyICsxMTI3LDE1IEBACiAgIGd1aW50OCB2YnZfYnVmZmVyX3NpemVfZXh0ZW5zaW9uOwogICBndWludDggbG93X2RlbGF5OwogICBndWludDggZnBzX25fZXh0LCBmcHNfZF9leHQ7CisKKyAgLyogQWRkaXRpb25hbCBpbmZvcm1hdGlvbiAqLworICBndWludDggcHJvZmlsZV9sZXZlbF9lc2NhcGVfYml0OwogfTsKIDwvcHJlPgogPHA+VGhlIE1wZWcyIFZpZGVvIFNlcXVlbmNlIEV4dGVuc2lvbiBzdHJ1Y3R1cmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNS44LjkuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTE5NSw2ICsxMTk4LDE0IEBACiA8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPkZyYW1lcmF0ZSBkZW5vbWluYXRvciBjb2RlPC9wPjwvdGQ+CiA8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50OCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50ODwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RNcGVnVmlkZW9TZXF1ZW5jZUV4dC5wcm9maWxlLWxldmVsLWVzY2FwZS1iaXQiPjwvYT5wcm9maWxlX2xldmVsX2VzY2FwZV9iaXQ8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPkVzY2FwZSBiaXQuIElmIHNldCwgdGhlIG1lYW5pbmcgb2YgdGhlCis8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cHJvZmlsZTwvY29kZT48L2VtPgorYW5kIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5sZXZlbDwvY29kZT48L2VtPgorZmllbGRzIGlzIGRpZmZlcmVudC48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CkBAIC0xMjE0LDcgKzEyMjUsNyBAQAogPHA+VGhlIE1wZWcyIFZpZGVvIFBpY3R1cmUgSGVhZGVyIHN0cnVjdHVyZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjguMTAuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTI2Nyw3ICsxMjc4LDcgQEAKIDxwPlRoZSBNcGVnIFZpZGVvIEdyb3VwIG9mIFBpY3R1cmUgc3RydWN0dXJlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuOC4xMS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMzQxLDcgKzEzNTIsNyBAQAogPHA+VGhlIE1wZWcyIFZpZGVvIFBpY3R1cmUgRXh0ZW5zaW9uIHN0cnVjdHVyZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjguMTIuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtdmMxcGFyc2VyLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy12YzFwYXJzZXIuaHRtbAppbmRleCA4ZTU5YjJmLi5iZmNhMDcyIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy12YzFwYXJzZXIuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy12YzFwYXJzZXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnZjMXBhcnNlcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjb2RlY3BhcnNlcnMuaHRtbCIgdGl0bGU9IkJpdHN0cmVhbSBwYXJzaW5nIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1tcGVnNHBhcnNlci5odG1sIiB0aXRsZT0ibXBlZzRwYXJzZXIiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtdmMxcGFyc2VyLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC0xNDEsNyArMTQxLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtdmMxcGFyc2VyLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0yNzMsNyArMjczLDcgQEAKICBmaWVsZHM8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjcuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzE2LDcgKzMxNiw3IEBACiAgZmllbGRzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjcuNy4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zNTksNyArMzU5LDcgQEAKICBmaWVsZHMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy43LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQwMyw3ICs0MDMsNyBAQAogIGZpZWxkcy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjcuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDQ3LDcgKzQ0Nyw3IEBACiAgZmllbGRzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjcuNy42LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00OTEsNyArNDkxLDcgQEAKICBmaWVsZHMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy43LjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTUzNSw3ICs1MzUsNyBAQAogIGZpZWxkcy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjcuOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTg1LDcgKzU4NSw3IEBACiAgZmllbGRzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjcuNy45LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02NjQsNyArNjY0LDcgQEAKIGlmIGluIGFkdmFuY2VkIG1vZGUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy43LjEzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC03MDksNyArNzA5LDcgQEAKIDxhIG5hbWU9IkdzdFZDMVN0YXJ0Q29kZSI+PC9hPjxoMz5lbnVtIEdzdFZDMVN0YXJ0Q29kZTwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjguNC4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc4MCw3ICs3ODAsNyBAQAogPGEgbmFtZT0iR3N0VkMxUHJvZmlsZSI+PC9hPjxoMz5lbnVtIEdzdFZDMVByb2ZpbGU8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy44LjUuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC04MTYsNyArODE2LDcgQEAKIDxhIG5hbWU9IkdzdFZDMVBhcnNlclJlc3VsdCI+PC9hPjxoMz5lbnVtIEdzdFZDMVBhcnNlclJlc3VsdDwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjguNi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg1Nyw3ICs4NTcsNyBAQAogPGEgbmFtZT0iR3N0VkMxUGljdHVyZVR5cGUiPjwvYT48aDM+ZW51bSBHc3RWQzFQaWN0dXJlVHlwZTwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjguNy4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg5OCw3ICs4OTgsNyBAQAogPGEgbmFtZT0iR3N0VkMxTGV2ZWwiPjwvYT48aDM+ZW51bSBHc3RWQzFMZXZlbDwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjguOC4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTk1OSw3ICs5NTksNyBAQAogPGEgbmFtZT0iR3N0VkMxUXVhbnRpemVyU3BlYyI+PC9hPjxoMz5lbnVtIEdzdFZDMVF1YW50aXplclNwZWM8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy44LjkuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC05OTUsNyArOTk1LDcgQEAKIDxhIG5hbWU9IkdzdFZDMURRUHJvZmlsZSI+PC9hPjxoMz5lbnVtIEdzdFZDMURRUHJvZmlsZTwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjguMTAuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDMxLDcgKzEwMzEsNyBAQAogPGEgbmFtZT0iR3N0VkMxQ29uZG92ZXIiPjwvYT48aDM+ZW51bSBHc3RWQzFDb25kb3ZlcjwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjguMTEuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDYyLDcgKzEwNjIsNyBAQAogPGEgbmFtZT0iR3N0VkMxTXZNb2RlIj48L2E+PGgzPmVudW0gR3N0VkMxTXZNb2RlPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjcuOC4xMi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE0MDEsNyArMTQwMSw3IEBACiA8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjcuOC4yMi40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNjk0LDcgKzE2OTQsNyBAQAogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjguMjMuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0cmVhbWVyLWxpYnMtaGllcmFyY2h5Lmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3RyZWFtZXItbGlicy1oaWVyYXJjaHkuaHRtbAppbmRleCAyZGU5N2Q0Li5jODk4NjczIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3RyZWFtZXItbGlicy1oaWVyYXJjaHkuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3RyZWFtZXItbGlicy1oaWVyYXJjaHkuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPlBhcnTCoElJLsKgT2JqZWN0IEhpZXJhcmNoeTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sIiB0aXRsZT0iR3N0UGhvdG9ncmFwaHkiPgpAQCAtMjcsOCArMjcsMTAgQEAKICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgogICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCI+R3N0QWxsb2NhdG9yPC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yCi0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0b3IiPkdzdEdMQWxsb2NhdG9yPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdG9yIj5Hc3RHTEJ1ZmZlckFsbG9jYXRvcjwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvciI+R3N0R0xNZW1vcnlBbGxvY2F0b3I8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPQWxsb2NhdG9yIj5Hc3RHTE1lbW9yeVBCT0FsbG9jYXRvcjwvYT4KICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+CiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCaW4uaHRtbCI+R3N0QmluPC9hPgogICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0SW5zZXJ0YmluLmh0bWwjR3N0SW5zZXJ0QmluIj5Hc3RJbnNlcnRCaW48L2E+CkBAIC00MCwxNSArNDIsMjYgQEAKICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCIgdGl0bGU9IkdzdEdMQ29sb3JDb252ZXJ0Ij5Hc3RHTENvbG9yQ29udmVydDwvYT4KICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPkdzdEdMQ29udGV4dDwvYT4KICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwiIHRpdGxlPSJHc3RHTERpc3BsYXkiPkdzdEdMRGlzcGxheTwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+R3N0R0xEb3dubG9hZDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+R3N0R0xTTFN0YWdlPC9hPgogICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPkdzdEdMVXBsb2FkPC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkTWV0YSI+R3N0R0xVcGxvYWRNZXRhPC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPkdzdEdMV2luZG93PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEZyYW1lYnVmZmVyIj5Hc3RHTEZyYW1lYnVmZmVyPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IEdzdEdMVmlld0NvbnZlcnQKKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij5Hc3RHTFdpbmRvdzwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj5Hc3RQbGF5ZXI8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRnJhbWVidWZmZXIuaHRtbCIgdGl0bGU9IkdzdEdMRnJhbWVidWZmZXIiPkdzdEdMRnJhbWVidWZmZXI8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPkdzdFBsYXllckF1ZGlvSW5mbzwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvIj5Hc3RQbGF5ZXJTdWJ0aXRsZUluZm88L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+R3N0UGxheWVyVmlkZW9JbmZvPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj5Hc3RQbGF5ZXJNZWRpYUluZm88L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlcgorICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL0dUeXBlTW9kdWxlLmh0bWwiPkdJbnRlcmZhY2U8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXIiPkdzdFBsYXllclNpZ25hbERpc3BhdGNoZXI8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclZpZGVvUmVuZGVyZXIiPkdzdFBsYXllclZpZGVvUmVuZGVyZXI8L2E+CiAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1Cb3hlZC1UeXBlcy5odG1sIj5HQm94ZWQ8L2E+CiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1zZWN0aW9ucy5odG1sI0dzdE1wZWd0c1NlY3Rpb24iPkdzdE1wZWd0c1NlY3Rpb248L2E+Ci0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sI0dzdE1wZWd0c0Rlc2NyaXB0b3IiPkdzdE1wZWd0c0Rlc2NyaXB0b3I8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sI0dzdE1wZWd0c0Rlc2NyaXB0b3IiPkdzdE1wZWd0c0Rlc2NyaXB0b3I8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvYT4KICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LUVudW1lcmF0aW9uLWFuZC1GbGFnLVR5cGVzLmh0bWwiPkdFbnVtPC9hPgogICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbCNHc3RNcGVndHNTZWN0aW9uVHlwZSIgdGl0bGU9ImVudW0gR3N0TXBlZ3RzU2VjdGlvblR5cGUiPkdzdE1wZWd0c1NlY3Rpb25UeXBlPC9hPgogICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbCNHc3RNcGVndHNTZWN0aW9uVGFibGVJRCIgdGl0bGU9ImVudW0gR3N0TXBlZ3RzU2VjdGlvblRhYmxlSUQiPkdzdE1wZWd0c1NlY3Rpb25UYWJsZUlEPC9hPgpAQCAtNjEsNyArNzQsMTEgQEAKICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwjR3N0TXBlZ3RzSXNvNjM5QXVkaW9UeXBlIiB0aXRsZT0iZW51bSBHc3RNcGVndHNJc282MzlBdWRpb1R5cGUiPkdzdE1wZWd0c0lzbzYzOUF1ZGlvVHlwZTwvYT4KICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtc2VjdGlvbnMuaHRtbCNHc3RNcGVndHNSdW5uaW5nU3RhdHVzIiB0aXRsZT0iZW51bSBHc3RNcGVndHNSdW5uaW5nU3RhdHVzIj5Hc3RNcGVndHNSdW5uaW5nU3RhdHVzPC9hPgogICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sI0dzdE1wZWd0c0RWQlNlcnZpY2VUeXBlIiB0aXRsZT0iZW51bSBHc3RNcGVndHNEVkJTZXJ2aWNlVHlwZSI+R3N0TXBlZ3RzRFZCU2VydmljZVR5cGU8L2E+Ci0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1zZWN0aW9ucy5odG1sI0dzdE1wZWd0c1N0cmVhbVR5cGUiIHRpdGxlPSJlbnVtIEdzdE1wZWd0c1N0cmVhbVR5cGUiPkdzdE1wZWd0c1N0cmVhbVR5cGU8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1zZWN0aW9ucy5odG1sI0dzdE1wZWd0c1N0cmVhbVR5cGUiIHRpdGxlPSJlbnVtIEdzdE1wZWd0c1N0cmVhbVR5cGUiPkdzdE1wZWd0c1N0cmVhbVR5cGU8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiIHRpdGxlPSJlbnVtIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiPkdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGU8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllckVycm9yIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJFcnJvciI+R3N0UGxheWVyRXJyb3I8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclN0YXRlIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJTdGF0ZSI+R3N0UGxheWVyU3RhdGU8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0R0xTdGVyZW9Eb3dubWl4CiA8L3ByZT4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmh0bWwKaW5kZXggNDY3OTVmYS4uYzJmZmIyYyAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5QYXJ0wqBJLsKgR1N0cmVhbWVyIEJhZCBQbHVnaW5zIExpYnJhcmllczogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgpAQCAtMTExLDYgKzExMSwxNSBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwiPkdzdEdMQVBJPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCI+R3N0R0xCYXNlTWVtb3J5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIGJ1ZmZlcnM8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIj5Hc3RHTEJhc2VGaWx0ZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCYXNlVHJhbnNmb3JtPC9zcGFuPiBzdWJjbGFzcyBmb3IgdHJhbnNmb3JtaW4gT3BlbkdMIHJlc291cmNlczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCI+R3N0R0xCdWZmZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgYnVmZmVyczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiPkdzdEdMQnVmZmVyUG9vbDwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgYnVmZmVyIHBvb2wgZm9yIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj4gb2JqZWN0czwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CkBAIC0xMzgsMjUgKzE0NywyOCBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIj5Hc3RHTERpc3BsYXk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIHdpbmRvdyBzeXN0ZW0gZGlzcGxheSBjb25uZWN0aW9uIGFic3RyYWN0aW9uPC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiPkdzdEdMRG93bmxvYWQ8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGFuIG9iamVjdCB0aGF0IGRvd25sb2FkcyBHTCB0ZXh0dXJlczwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCI+R3N0RUdMSW1hZ2VNZW1vcnk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIj5Hc3RHTEJhc2VGaWx0ZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMRmlsdGVyLmh0bWwiPkdzdEdMRmlsdGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwiPkdzdEdMRnJhbWVidWZmZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiPkdzdEdMTWVtb3J5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIHRleHR1cmVzPC9zcGFuPgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiPkdzdEdMTWVtb3J5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIHRleHR1cmVzPC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIj5Hc3RHTFNoYWRlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIj5Hc3RHTE1lbW9yeVBCTzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCB0ZXh0dXJlczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCI+R3N0R0xTaGFkZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG9iamVjdCByZXByZXNlbnRpbmcgYW4gT3BlbkdMIHNoYWRlciBwcm9ncmFtPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiPkdzdEdMU0w8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGhlbHBlcnMgZm9yIGRlYWxpbmcgd2l0aCBPcGVuR0wgc2hhZGVyczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iLmh0bWwiPkdzdEdMU0xTdGFnZTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgb2JqZWN0IGZvciBkZWFsaW5nIHdpdGggT3BlbkdMIHNoYWRlciBzdGFnZXM8L3NwYW4+CiA8L2R0PgogPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCI+R3N0R0xTeW5jTWV0YTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KQEAgLTE2NSwxMiArMTc3LDYgQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTFVwbG9hZC5odG1sIj5Hc3RHTFVwbG9hZDwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgYW4gb2JqZWN0IHRoYXQgdXBsb2FkcyB0byBHTCB0ZXh0dXJlczwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiPkdzdEdMVXBsb2FkTWV0YTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgYW4gb2JqZWN0IHRoYXQgcHJvdmlkZXMgPHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YTwvc3Bhbj48L3NwYW4+Ci08L2R0PgotPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIj5VdGlsaXRpZXM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiPkdzdEdMV2luZG93PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCB3aW5kb3cvc3VyZmFjZSBhYnN0cmFjdGlvbjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CkBAIC0xOTEsOCArMTk3LDM1IEBACiA8ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dYMTEuaHRtbCI+R3N0R0xXaW5kb3dYMTE8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCI+T3BlbkdMIGRlYnVnZ2luZzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgaGVscGVyIHJvdXRpbmVzIGZvciBkZWFsaW5nIHdpdGggT3BlbkdMIGRlYnVnZ2luZzwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCI+T3BlbkdMIEZvcm1hdHM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Cis8L2R0PgogPC9kbD48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJjaGFwdGVyIj48YSBocmVmPSJjaDA3Lmh0bWwiPkludGVyZmFjZXM8L2E+PC9zcGFuPjwvZHQ+Cis8ZHQ+PHNwYW4gY2xhc3M9ImNoYXB0ZXIiPjxhIGhyZWY9InBsYXllci5odG1sIj5QbGF5ZXIgTGlicmFyeTwvYT48L3NwYW4+PC9kdD4KKzxkZD48ZGw+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiPmdzdHBsYXllcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgUGxheWVyPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiPmdzdHBsYXllci1tZWRpYWluZm88L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIFBsYXllciBNZWRpYSBJbmZvcm1hdGlvbjwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCI+Z3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIFBsYXllciBHTGliIE1haW5Db250ZXh0IGRpc3BhdGNoZXI8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwiPmdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBQbGF5ZXIgVmlkZW8gT3ZlcmxheSBWaWRlbyBSZW5kZXJlcjwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCI+Z3N0cGxheWVyLXZpc3VhbGl6YXRpb248L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIFBsYXllciBWaXN1YWxpemF0aW9uPC9zcGFuPgorPC9kdD4KKzwvZGw+PC9kZD4KKzxkdD48c3BhbiBjbGFzcz0iY2hhcHRlciI+PGEgaHJlZj0iY2gwOC5odG1sIj5JbnRlcmZhY2VzPC9hPjwvc3Bhbj48L2R0PgogPGRkPjxkbD48ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCI+R3N0UGhvdG9ncmFwaHk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIEludGVyZmFjZSBmb3IgZGlnaXRhbCBpbWFnZSBjYXB0dXJlIGVsZW1lbnRzPC9zcGFuPgogPC9kdD48L2RsPjwvZGQ+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9pbmRleC5odG1sIGIvZG9jcy9saWJzL2h0bWwvaW5kZXguaHRtbAppbmRleCBiNDZhY2I1Li40MjY5MGM0IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9pbmRleC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2luZGV4Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5HU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sIiB0aXRsZT0iUGFydMKgSS7CoEdTdHJlYW1lciBCYWQgUGx1Z2lucyBMaWJyYXJpZXMiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgpAQCAtMTUsNyArMTUsNyBAQAogPGRpdj4KIDxkaXY+PHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRoIHZhbGlnbj0ibWlkZGxlIj48cCBjbGFzcz0idGl0bGUiPkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC9wPjwvdGg+PC90cj48L3RhYmxlPjwvZGl2PgogPGRpdj48cCBjbGFzcz0icmVsZWFzZWluZm8iPgotICAgICAgZm9yIEdTdHJlYW1lciBCYWQgTGlicmFyeSAxLjAgKDEuNi4zKQorICAgICAgZm9yIEdTdHJlYW1lciBCYWQgTGlicmFyeSAxLjAgKDEuNy45MSkKICAgICAgIDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFkLWxpYnMvaHRtbC8iIHRhcmdldD0iX3RvcCI+aHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFkLWxpYnMvaHRtbC88L2E+LgogICAgIDwvcD48L2Rpdj4KIDwvZGl2PgpAQCAtMTEwLDYgKzExMCwxNSBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwiPkdzdEdMQVBJPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCI+R3N0R0xCYXNlTWVtb3J5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIGJ1ZmZlcnM8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIj5Hc3RHTEJhc2VGaWx0ZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCYXNlVHJhbnNmb3JtPC9zcGFuPiBzdWJjbGFzcyBmb3IgdHJhbnNmb3JtaW4gT3BlbkdMIHJlc291cmNlczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCI+R3N0R0xCdWZmZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgYnVmZmVyczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiPkdzdEdMQnVmZmVyUG9vbDwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgYnVmZmVyIHBvb2wgZm9yIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj4gb2JqZWN0czwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CkBAIC0xMzcsMjUgKzE0NiwyOCBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIj5Hc3RHTERpc3BsYXk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIHdpbmRvdyBzeXN0ZW0gZGlzcGxheSBjb25uZWN0aW9uIGFic3RyYWN0aW9uPC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiPkdzdEdMRG93bmxvYWQ8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGFuIG9iamVjdCB0aGF0IGRvd25sb2FkcyBHTCB0ZXh0dXJlczwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCI+R3N0RUdMSW1hZ2VNZW1vcnk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIj5Hc3RHTEJhc2VGaWx0ZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMRmlsdGVyLmh0bWwiPkdzdEdMRmlsdGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwiPkdzdEdMRnJhbWVidWZmZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiPkdzdEdMTWVtb3J5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIHRleHR1cmVzPC9zcGFuPgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiPkdzdEdMTWVtb3J5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIHRleHR1cmVzPC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIj5Hc3RHTFNoYWRlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIj5Hc3RHTE1lbW9yeVBCTzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCB0ZXh0dXJlczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCI+R3N0R0xTaGFkZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG9iamVjdCByZXByZXNlbnRpbmcgYW4gT3BlbkdMIHNoYWRlciBwcm9ncmFtPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiPkdzdEdMU0w8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGhlbHBlcnMgZm9yIGRlYWxpbmcgd2l0aCBPcGVuR0wgc2hhZGVyczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iLmh0bWwiPkdzdEdMU0xTdGFnZTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgb2JqZWN0IGZvciBkZWFsaW5nIHdpdGggT3BlbkdMIHNoYWRlciBzdGFnZXM8L3NwYW4+CiA8L2R0PgogPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCI+R3N0R0xTeW5jTWV0YTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KQEAgLTE2NCwxMiArMTc2LDYgQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTFVwbG9hZC5odG1sIj5Hc3RHTFVwbG9hZDwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgYW4gb2JqZWN0IHRoYXQgdXBsb2FkcyB0byBHTCB0ZXh0dXJlczwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiPkdzdEdMVXBsb2FkTWV0YTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgYW4gb2JqZWN0IHRoYXQgcHJvdmlkZXMgPHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YTwvc3Bhbj48L3NwYW4+Ci08L2R0PgotPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIj5VdGlsaXRpZXM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiPkdzdEdMV2luZG93PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCB3aW5kb3cvc3VyZmFjZSBhYnN0cmFjdGlvbjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CkBAIC0xOTAsOCArMTk2LDM1IEBACiA8ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dYMTEuaHRtbCI+R3N0R0xXaW5kb3dYMTE8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCI+T3BlbkdMIGRlYnVnZ2luZzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgaGVscGVyIHJvdXRpbmVzIGZvciBkZWFsaW5nIHdpdGggT3BlbkdMIGRlYnVnZ2luZzwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCI+T3BlbkdMIEZvcm1hdHM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Cis8L2R0PgogPC9kbD48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJjaGFwdGVyIj48YSBocmVmPSJjaDA3Lmh0bWwiPkludGVyZmFjZXM8L2E+PC9zcGFuPjwvZHQ+Cis8ZHQ+PHNwYW4gY2xhc3M9ImNoYXB0ZXIiPjxhIGhyZWY9InBsYXllci5odG1sIj5QbGF5ZXIgTGlicmFyeTwvYT48L3NwYW4+PC9kdD4KKzxkZD48ZGw+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiPmdzdHBsYXllcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgUGxheWVyPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiPmdzdHBsYXllci1tZWRpYWluZm88L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIFBsYXllciBNZWRpYSBJbmZvcm1hdGlvbjwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCI+Z3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIFBsYXllciBHTGliIE1haW5Db250ZXh0IGRpc3BhdGNoZXI8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwiPmdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBQbGF5ZXIgVmlkZW8gT3ZlcmxheSBWaWRlbyBSZW5kZXJlcjwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCI+Z3N0cGxheWVyLXZpc3VhbGl6YXRpb248L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIFBsYXllciBWaXN1YWxpemF0aW9uPC9zcGFuPgorPC9kdD4KKzwvZGw+PC9kZD4KKzxkdD48c3BhbiBjbGFzcz0iY2hhcHRlciI+PGEgaHJlZj0iY2gwOC5odG1sIj5JbnRlcmZhY2VzPC9hPjwvc3Bhbj48L2R0PgogPGRkPjxkbD48ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCI+R3N0UGhvdG9ncmFwaHk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIEludGVyZmFjZSBmb3IgZGlnaXRhbCBpbWFnZSBjYXB0dXJlIGVsZW1lbnRzPC9zcGFuPgogPC9kdD48L2RsPjwvZGQ+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9pbmRleC5zZ21sIGIvZG9jcy9saWJzL2h0bWwvaW5kZXguc2dtbAppbmRleCA2Y2IzODc0Li44ZjkwZTQyIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9pbmRleC5zZ21sCisrKyBiL2RvY3MvbGlicy9odG1sL2luZGV4LnNnbWwKQEAgLTExNzUsNyArMTE3NSw2IEBACiA8QU5DSE9SIGlkPSJnc3QtZ2wtYXBpLWZyb20tc3RyaW5nIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNnc3QtZ2wtYXBpLWZyb20tc3RyaW5nIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1wbGF0Zm9ybS10by1zdHJpbmciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI2dzdC1nbC1wbGF0Zm9ybS10by1zdHJpbmciPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLXBsYXRmb3JtLWZyb20tc3RyaW5nIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNnc3QtZ2wtcGxhdGZvcm0tZnJvbS1zdHJpbmciPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWNoZWNrLWV4dGVuc2lvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjZ3N0LWdsLWNoZWNrLWV4dGVuc2lvbiI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5vdGhlcl9kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdEdMQVBJIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHc3RHTEFQSSI+CiA8QU5DSE9SIGlkPSJHU1QtR0wtQVBJLU5PTkU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR1NULUdMLUFQSS1OT05FOkNBUFMiPgpAQCAtMTE5Niw2ICsxMTk1LDg0IEBACiA8QU5DSE9SIGlkPSJHU1QtR0wtQVBJLUdMRVMyLU5BTUU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR1NULUdMLUFQSS1HTEVTMi1OQU1FOkNBUFMiPgogPEFOQ0hPUiBpZD0iR1NULUdMLUFQSS1PUEVOR0wzLU5BTUU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR1NULUdMLUFQSS1PUEVOR0wzLU5BTUU6Q0FQUyI+CiA8QU5DSE9SIGlkPSJHU1QtR0wtQVBJLU9QRU5HTC1OQU1FOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1BUEktT1BFTkdMLU5BTUU6Q0FQUyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5LmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lm90aGVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lm9iamVjdC1oaWVyYXJjaHkiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5LmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5LmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHU1QtTUFQLUdMOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtTUFQLUdMOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktRVJST1I6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctQUxMT0M6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLUFMTE9DOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctV1JBUC1TWVNNRU06Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVdSQVAtU1lTTUVNOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctV1JBUC1HUFUtSEFORExFOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1XUkFQLUdQVS1IQU5ETEU6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1VU0VSOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1VU0VSOkNBUFMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWluaXQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtaW5pdCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtY29weSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1jb3B5Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1mcmVlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWZyZWUiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWZyZWUtZGF0YSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1mcmVlLWRhdGEiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWNvcHktZGF0YSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1jb3B5LWRhdGEiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWJhc2UtbWVtb3J5LWluaXQtb25jZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1pbml0LW9uY2UiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWJhc2UtbWVtb3J5LWluaXQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktaW5pdCI+Cis8QU5DSE9SIGlkPSJnc3QtaXMtZ2wtYmFzZS1tZW1vcnkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtaXMtZ2wtYmFzZS1tZW1vcnkiPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb24iPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbiI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbiI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWJhc2UtbWVtb3J5LWFsbG9jIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LWFsbG9jIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1iYXNlLW1lbW9yeS1hbGxvYy1kYXRhIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LWFsbG9jLWRhdGEiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWJhc2UtbWVtb3J5LW1lbWNweSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1tZW1jcHkiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkub3RoZXJfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3Itc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1CQVNFLU1FTU9SWS1BTExPQ0FUT1ItTkFNRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLUFMTE9DQVRPUi1OQU1FOkNBUFMiPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlTWVtb3J5RXJyb3IiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlFcnJvciI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtQkFTRS1NRU1PUlktRVJST1ItRkFJTEVEOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktRVJST1ItRkFJTEVEOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SLU9MRC1MSUJTOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktRVJST1ItT0xELUxJQlM6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtQkFTRS1NRU1PUlktRVJST1ItUkVTT1VSQ0UtVU5BVkFJTEFCTEU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1CQVNFLU1FTU9SWS1FUlJPUi1SRVNPVVJDRS1VTkFWQUlMQUJMRTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZU1lbW9yeVRyYW5zZmVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5VHJhbnNmZXIiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUJBU0UtTUVNT1JZLVRSQU5TRkVSLU5FRUQtRE9XTkxPQUQ6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1CQVNFLU1FTU9SWS1UUkFOU0ZFUi1ORUVELURPV05MT0FEOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUJBU0UtTUVNT1JZLVRSQU5TRkVSLU5FRUQtVVBMT0FEOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktVFJBTlNGRVItTkVFRC1VUExPQUQ6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHc3RHTEFsbG9jYXRpb25QYXJhbXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlTWVtb3J5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5zZWUtYWxzbyI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci5wcm9wZXJ0aWVzIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci5vdGhlciI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci5vYmplY3QtaGllcmFyY2h5Ij4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci5kZXNjcmlwdGlvbiI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXIuZnVuY3Rpb25zX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXIub3RoZXJfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXItc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXJDbGFzcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlckNsYXNzIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLnByb3BlcnR5LWRldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyLS1jb250ZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLS1jb250ZXh0Ij4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci5zZWUtYWxzbyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5mdW5jdGlvbnMiPgorPEFOQ0hPUiBpZD0iR3N0R0xCdWZmZXJBbGxvY2F0b3IiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdG9yIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5vdGhlciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5vYmplY3QtaGllcmFyY2h5Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5kZXNjcmlwdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuZnVuY3Rpb25zX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWJ1ZmZlci1pbml0LW9uY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1nbC1idWZmZXItaW5pdC1vbmNlIj4KKzxBTkNIT1IgaWQ9ImdzdC1pcy1nbC1idWZmZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1pcy1nbC1idWZmZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWJ1ZmZlci1hbGxvYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LWdsLWJ1ZmZlci1hbGxvYyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1CVUZGRVI6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctQlVGRkVSOkNBUFMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWJ1ZmZlci1hbGxvY2F0aW9uLXBhcmFtcy1uZXciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1nbC1idWZmZXItYWxsb2NhdGlvbi1wYXJhbXMtbmV3Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLm90aGVyX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0R0xCdWZmZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQnVmZmVyQWxsb2NhdG9yLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXJBbGxvY2F0b3Itc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3MiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3MiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUJVRkZFUi1BTExPQ0FUT1ItTkFNRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHU1QtR0wtQlVGRkVSLUFMTE9DQVRPUi1OQU1FOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUNBUFMtRkVBVFVSRS1NRU1PUlktR0wtQlVGRkVSOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dTVC1DQVBTLUZFQVRVUkUtTUVNT1JZLUdMLUJVRkZFUjpDQVBTIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5zZWUtYWxzbyI+CiA8QU5DSE9SIGlkPSJHc3RHTEJ1ZmZlclBvb2wiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJ1ZmZlclBvb2wuaHRtbCI+CiA8QU5DSE9SIGlkPSJHc3RHTEJ1ZmZlclBvb2wuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sLmZ1bmN0aW9ucyI+CiA8QU5DSE9SIGlkPSJHc3RHTEJ1ZmZlclBvb2wub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2wub3RoZXIiPgpAQCAtMTIwMyw2ICsxMjgwLDggQEAKIDxBTkNIT1IgaWQ9IkdzdEdMQnVmZmVyUG9vbC5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbC5kZXNjcmlwdGlvbiI+CiA8QU5DSE9SIGlkPSJHc3RHTEJ1ZmZlclBvb2wuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2wuZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLWJ1ZmZlci1wb29sLW5ldyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQnVmZmVyUG9vbC5odG1sI2dzdC1nbC1idWZmZXItcG9vbC1uZXciPgorPEFOQ0hPUiBpZD0iZ3N0LWJ1ZmZlci1wb29sLWNvbmZpZy1nZXQtZ2wtYWxsb2NhdGlvbi1wYXJhbXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJ1ZmZlclBvb2wuaHRtbCNnc3QtYnVmZmVyLXBvb2wtY29uZmlnLWdldC1nbC1hbGxvY2F0aW9uLXBhcmFtcyI+Cis8QU5DSE9SIGlkPSJnc3QtYnVmZmVyLXBvb2wtY29uZmlnLXNldC1nbC1hbGxvY2F0aW9uLXBhcmFtcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQnVmZmVyUG9vbC5odG1sI2dzdC1idWZmZXItcG9vbC1jb25maWctc2V0LWdsLWFsbG9jYXRpb24tcGFyYW1zIj4KIDxBTkNIT1IgaWQ9IkdzdEdMQnVmZmVyUG9vbC5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sLm90aGVyX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0R0xCdWZmZXJQb29sLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbC1zdHJ1Y3QiPgogPEFOQ0hPUiBpZD0iR3N0R0xCdWZmZXJQb29sQ2xhc3MiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2xDbGFzcyI+CkBAIC0xMjE2LDYgKzEyOTUsOCBAQAogPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbG9yLWNvbnZlcnQtbmV3IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC1uZXciPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbG9yLWNvbnZlcnQtc2V0LWNhcHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LXNldC1jYXBzIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb2xvci1jb252ZXJ0LXRyYW5zZm9ybS1jYXBzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC10cmFuc2Zvcm0tY2FwcyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtY29sb3ItY29udmVydC1maXhhdGUtY2FwcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQ29sb3JDb252ZXJ0Lmh0bWwjZ3N0LWdsLWNvbG9yLWNvbnZlcnQtZml4YXRlLWNhcHMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbG9yLWNvbnZlcnQtZGVjaWRlLWFsbG9jYXRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LWRlY2lkZS1hbGxvY2F0aW9uIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb2xvci1jb252ZXJ0LXBlcmZvcm0iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LXBlcmZvcm0iPgogPEFOQ0hPUiBpZD0iR3N0R0xDb2xvckNvbnZlcnQub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQ29sb3JDb252ZXJ0Lmh0bWwjR3N0R0xDb2xvckNvbnZlcnQub3RoZXJfZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHU1QtR0wtQ09MT1ItQ09OVkVSVC1GT1JNQVRTOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbG9yQ29udmVydC5odG1sI0dTVC1HTC1DT0xPUi1DT05WRVJULUZPUk1BVFM6Q0FQUyI+CkBAIC0xMjM5LDYgKzEzMjAsNyBAQAogPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtYWN0aXZhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1hY3RpdmF0ZSI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1kZWZhdWx0LWdldC1wcm9jLWFkZHJlc3MiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWZhdWx0LWdldC1wcm9jLWFkZHJlc3MiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2V0LXByb2MtYWRkcmVzcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWdldC1wcm9jLWFkZHJlc3MiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2V0LXByb2MtYWRkcmVzcy13aXRoLXBsYXRmb3JtIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LXByb2MtYWRkcmVzcy13aXRoLXBsYXRmb3JtIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWdldC13aW5kb3ciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtd2luZG93Ij4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LXNldC13aW5kb3ciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1zZXQtd2luZG93Ij4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LXRocmVhZC1hZGQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC10aHJlYWQtYWRkIj4KQEAgLTEyNTAsNiArMTMzMiw4IEBACiA8QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1nZXQtY3VycmVudC1nbC1hcGkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtY3VycmVudC1nbC1hcGkiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2V0LXRocmVhZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWdldC10aHJlYWQiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtY2FuLXNoYXJlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtY2FuLXNoYXJlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWlzLXNoYXJlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWlzLXNoYXJlZCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1zZXQtc2hhcmVkLXdpdGgiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1zZXQtc2hhcmVkLXdpdGgiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtY2hlY2stZmVhdHVyZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWNoZWNrLWZlYXR1cmUiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtY2hlY2stZ2wtdmVyc2lvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWNoZWNrLWdsLXZlcnNpb24iPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2V0LWdsLXZlcnNpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtZ2wtdmVyc2lvbiI+CkBAIC0xMzI4LDYgKzE0MTIsNyBAQAogPEFOQ0hPUiBpZD0iZ3N0LWdsLWRpc3BsYXktYWRkLWNvbnRleHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERpc3BsYXkuaHRtbCNnc3QtZ2wtZGlzcGxheS1hZGQtY29udGV4dCI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtZGlzcGxheS1nZXQtZ2wtY29udGV4dC1mb3ItdGhyZWFkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEaXNwbGF5Lmh0bWwjZ3N0LWdsLWRpc3BsYXktZ2V0LWdsLWNvbnRleHQtZm9yLXRocmVhZCI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtZGlzcGxheS1nZXQtaGFuZGxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEaXNwbGF5Lmh0bWwjZ3N0LWdsLWRpc3BsYXktZ2V0LWhhbmRsZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtZGlzcGxheS1jcmVhdGUtY29udGV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRGlzcGxheS5odG1sI2dzdC1nbC1kaXNwbGF5LWNyZWF0ZS1jb250ZXh0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1jb250ZXh0LWdldC1nbC1kaXNwbGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEaXNwbGF5Lmh0bWwjZ3N0LWNvbnRleHQtZ2V0LWdsLWRpc3BsYXkiPgogPEFOQ0hPUiBpZD0iZ3N0LWNvbnRleHQtc2V0LWdsLWRpc3BsYXkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERpc3BsYXkuaHRtbCNnc3QtY29udGV4dC1zZXQtZ2wtZGlzcGxheSI+CiA8QU5DSE9SIGlkPSJHc3RHTERpc3BsYXkub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRGlzcGxheS5odG1sI0dzdEdMRGlzcGxheS5vdGhlcl9kZXRhaWxzIj4KQEAgLTEzNDUsMTkgKzE0MzAsNiBAQAogPEFOQ0hPUiBpZD0iR3N0R0xEaXNwbGF5LnNpZ25hbC1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEaXNwbGF5Lmh0bWwjR3N0R0xEaXNwbGF5LnNpZ25hbC1kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdEdMRGlzcGxheS1jcmVhdGUtY29udGV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRGlzcGxheS5odG1sI0dzdEdMRGlzcGxheS1jcmVhdGUtY29udGV4dCI+CiA8QU5DSE9SIGlkPSJHc3RHTERpc3BsYXkuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERpc3BsYXkuaHRtbCNHc3RHTERpc3BsYXkuc2VlLWFsc28iPgotPEFOQ0hPUiBpZD0iR3N0R0xEb3dubG9hZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRG93bmxvYWQuaHRtbCI+Ci08QU5DSE9SIGlkPSJHc3RHTERvd25sb2FkLmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRG93bmxvYWQuaHRtbCNHc3RHTERvd25sb2FkLmZ1bmN0aW9ucyI+Ci08QU5DSE9SIGlkPSJHc3RHTERvd25sb2FkLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEb3dubG9hZC5odG1sI0dzdEdMRG93bmxvYWQub3RoZXIiPgotPEFOQ0hPUiBpZD0iR3N0R0xEb3dubG9hZC5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEb3dubG9hZC5odG1sI0dzdEdMRG93bmxvYWQub2JqZWN0LWhpZXJhcmNoeSI+Ci08QU5DSE9SIGlkPSJHc3RHTERvd25sb2FkLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEb3dubG9hZC5odG1sI0dzdEdMRG93bmxvYWQuZGVzY3JpcHRpb24iPgotPEFOQ0hPUiBpZD0iR3N0R0xEb3dubG9hZC5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRG93bmxvYWQuaHRtbCNHc3RHTERvd25sb2FkLmZ1bmN0aW9uc19kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1kb3dubG9hZC1uZXciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLW5ldyI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtZG93bmxvYWQtc2V0LWZvcm1hdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRG93bmxvYWQuaHRtbCNnc3QtZ2wtZG93bmxvYWQtc2V0LWZvcm1hdCI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtZG93bmxvYWQtdHJhbnNmb3JtLWNhcHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLXRyYW5zZm9ybS1jYXBzIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1kb3dubG9hZC1wZXJmb3JtLXdpdGgtZGF0YSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRG93bmxvYWQuaHRtbCNnc3QtZ2wtZG93bmxvYWQtcGVyZm9ybS13aXRoLWRhdGEiPgotPEFOQ0hPUiBpZD0iR3N0R0xEb3dubG9hZC5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEb3dubG9hZC5odG1sI0dzdEdMRG93bmxvYWQub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RHTERvd25sb2FkLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRG93bmxvYWQuaHRtbCNHc3RHTERvd25sb2FkLXN0cnVjdCI+Ci08QU5DSE9SIGlkPSJHc3RHTERvd25sb2FkLnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEb3dubG9hZC5odG1sI0dzdEdMRG93bmxvYWQuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5LmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuZnVuY3Rpb25zIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5vdGhlciI+CkBAIC0xMzczLDE3ICsxNDQ1LDYgQEAKIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lm90aGVyX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iR1NULUVHTC1JTUFHRS1NRU1PUlktVFlQRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCNHU1QtRUdMLUlNQUdFLU1FTU9SWS1UWVBFOkNBUFMiPgogPEFOQ0hPUiBpZD0iR1NULUNBUFMtRkVBVFVSRS1NRU1PUlktRUdMLUlNQUdFOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sI0dTVC1DQVBTLUZFQVRVUkUtTUVNT1JZLUVHTC1JTUFHRTpDQVBTIj4KLTxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sIj4KLTxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLnByb3BlcnRpZXMiPgotPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLm90aGVyIj4KLTxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLm9iamVjdC1oaWVyYXJjaHkiPgotPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLmRlc2NyaXB0aW9uIj4KLTxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci5mdW5jdGlvbnNfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXItc3RydWN0Ij4KLTxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlckNsYXNzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyQ2xhc3MiPgotPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXIucHJvcGVydHktZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXItLWNvbnRleHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXItLWNvbnRleHQiPgogPEFOQ0hPUiBpZD0iR3N0R0xGaWx0ZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEZpbHRlci5odG1sIj4KIDxBTkNIT1IgaWQ9IkdzdEdMRmlsdGVyLmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRmlsdGVyLmh0bWwjR3N0R0xGaWx0ZXIuZnVuY3Rpb25zIj4KIDxBTkNIT1IgaWQ9IkdzdEdMRmlsdGVyLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xGaWx0ZXIuaHRtbCNHc3RHTEZpbHRlci5vdGhlciI+CkBAIC0xNDEwLDEwOSArMTQ3MSwxODAgQEAKIDxBTkNIT1IgaWQ9IkdzdEdMRnJhbWVidWZmZXIub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRnJhbWVidWZmZXIuaHRtbCNHc3RHTEZyYW1lYnVmZmVyLm90aGVyX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0R0xGcmFtZWJ1ZmZlci1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEZyYW1lYnVmZmVyLmh0bWwjR3N0R0xGcmFtZWJ1ZmZlci1zdHJ1Y3QiPgogPEFOQ0hPUiBpZD0iR3N0R0xGcmFtZWJ1ZmZlckNsYXNzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xGcmFtZWJ1ZmZlci5odG1sI0dzdEdMRnJhbWVidWZmZXJDbGFzcyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5mdW5jdGlvbnMiPgotPEFOQ0hPUiBpZD0iR3N0R0xBbGxvY2F0b3IiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdG9yIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5vYmplY3QtaGllcmFyY2h5Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5LmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5kZXNjcmlwdGlvbiI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuZnVuY3Rpb25zX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1pbml0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWluaXQiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1hbGxvYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1hbGxvYyI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LXdyYXBwZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktd3JhcHBlZCI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LXdyYXBwZWQtdGV4dHVyZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS13cmFwcGVkLXRleHR1cmUiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1jb3B5LWludG8tdGV4dHVyZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1jb3B5LWludG8tdGV4dHVyZSI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LXNldHVwLWJ1ZmZlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1zZXR1cC1idWZmZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1zZXR1cC13cmFwcGVkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXNldHVwLXdyYXBwZWQiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXRleHR1cmUtdHlwZS1mcm9tLWZvcm1hdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLXRleHR1cmUtdHlwZS1mcm9tLWZvcm1hdCI+Ci08QU5DSE9SIGlkPSJnc3QtaXMtZ2wtbWVtb3J5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtaXMtZ2wtbWVtb3J5Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lm90aGVyX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0R0xBbGxvY2F0b3Itc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRvci1zdHJ1Y3QiPgotPEFOQ0hPUiBpZD0iR3N0R0xBbGxvY2F0b3JDbGFzcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0b3JDbGFzcyI+Ci08QU5DSE9SIGlkPSJHU1QtR0wtTUVNT1JZLUFMTE9DQVRPUjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHU1QtR0wtTUVNT1JZLUFMTE9DQVRPUjpDQVBTIj4KLTxBTkNIT1IgaWQ9IkdzdEdMTWVtb3J5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuc2VlLWFsc28iPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuZnVuY3Rpb25zIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLnByb3BlcnRpZXMiPgotPEFOQ0hPUiBpZD0iR3N0R0xTaGFkZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5vYmplY3QtaGllcmFyY2h5Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5kZXNjcmlwdGlvbiI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuZnVuY3Rpb25zX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1lcnJvci1xdWFyayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1lcnJvci1xdWFyayI+Ci08QU5DSE9SIGlkPSJHU1QtR0wtU0hBREVSLUVSUk9SOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dTVC1HTC1TSEFERVItRVJST1I6Q0FQUyI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVydmFyaWFibGUtc2V0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVydmFyaWFibGUtc2V0Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXJ2YXJpYWJsZXMtcGFyc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXJ2YXJpYWJsZXMtcGFyc2UiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1uZXciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXZlcnRleC1zb3VyY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXZlcnRleC1zb3VyY2UiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtZnJhZ21lbnQtc291cmNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC1mcmFnbWVudC1zb3VyY2UiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1nZXQtdmVydGV4LXNvdXJjZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtdmVydGV4LXNvdXJjZSI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWdldC1mcmFnbWVudC1zb3VyY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LWZyYWdtZW50LXNvdXJjZSI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWdldC1wcm9ncmFtLWhhbmRsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtcHJvZ3JhbS1oYW5kbGUiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtYWN0aXZlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC1hY3RpdmUiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1pcy1jb21waWxlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1pcy1jb21waWxlZCI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWNvbXBpbGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZSI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtYW5kLWNoZWNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtYW5kLWNoZWNrIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItY29tcGlsZS1hbGwtd2l0aC1hdHRyaWJzLWFuZC1jaGVjayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLWFsbC13aXRoLWF0dHJpYnMtYW5kLWNoZWNrIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtZi1hbmQtY2hlY2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtZi1hbmQtY2hlY2siPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC12LWFuZC1jaGVjayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC12LWFuZC1jaGVjayI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtd2l0aC1kZWZhdWx0LXZmLWFuZC1jaGVjayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC12Zi1hbmQtY2hlY2siPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1yZWxlYXNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXJlbGVhc2UiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci11c2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItdXNlIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWkiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZnYiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWl2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmYiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmZ2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmkiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMml2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2YiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2YiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2Z2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2kiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2kiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2l2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGYiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGZ2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGkiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGl2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMmZ2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4M2Z2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDNmdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDRmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMng0ZnYiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM2Z2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zZnYiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3gyZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4MmZ2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4NGZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDRmdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00ZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTRmdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDJmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgyZnYiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgzZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4M2Z2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItZ2V0LWF0dHJpYnV0ZS1sb2NhdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtYXR0cmlidXRlLWxvY2F0aW9uIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItYmluZC1hdHRyaWJ1dGUtbG9jYXRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItYmluZC1hdHRyaWJ1dGUtbG9jYXRpb24iPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RHTFNoYWRlckVycm9yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlckVycm9yIj4KLTxBTkNIT1IgaWQ9IkdTVC1HTC1TSEFERVItRVJST1ItQ09NUElMRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHU1QtR0wtU0hBREVSLUVSUk9SLUNPTVBJTEU6Q0FQUyI+Ci08QU5DSE9SIGlkPSJHU1QtR0wtU0hBREVSLUVSUk9SLUxJTks6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR1NULUdMLVNIQURFUi1FUlJPUi1MSU5LOkNBUFMiPgotPEFOQ0hPUiBpZD0iR1NULUdMLVNIQURFUi1FUlJPUi1QUk9HUkFNOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dTVC1HTC1TSEFERVItRVJST1ItUFJPR1JBTTpDQVBTIj4KLTxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyU291cmNlVHlwZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXJTb3VyY2VUeXBlIj4KLTxBTkNIT1IgaWQ9IkdTVC1HTC1TSEFERVItRlJBR01FTlQtU09VUkNFOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dTVC1HTC1TSEFERVItRlJBR01FTlQtU09VUkNFOkNBUFMiPgotPEFOQ0hPUiBpZD0iR1NULUdMLVNIQURFUi1WRVJURVgtU09VUkNFOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dTVC1HTC1TSEFERVItVkVSVEVYLVNPVVJDRTpDQVBTIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXJ2YXJpYWJsZS1kZXNjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVydmFyaWFibGUtZGVzYyI+Ci08QU5DSE9SIGlkPSJHc3RHTFNoYWRlci1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLXN0cnVjdCI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5wcm9wZXJ0eS1kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLS1hY3RpdmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS1hY3RpdmUiPgotPEFOQ0hPUiBpZD0iR3N0R0xTaGFkZXItLWNvbXBpbGVkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci0tY29tcGlsZWQiPgotPEFOQ0hPUiBpZD0iR3N0R0xTaGFkZXItLWZyYWdtZW50LXNyYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLWZyYWdtZW50LXNyYyI+Ci08QU5DSE9SIGlkPSJHc3RHTFNoYWRlci0tdmVydGV4LXNyYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLXZlcnRleC1zcmMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5LmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuZnVuY3Rpb25zIj4KKzxBTkNIT1IgaWQ9IkdzdEdMTWVtb3J5QWxsb2NhdG9yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkub3RoZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkub2JqZWN0LWhpZXJhcmNoeSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuZGVzY3JpcHRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5LmZ1bmN0aW9uc19kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVZJREVPOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVZJREVPOkNBUFMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWNvcHktZGF0YSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWNvcHktZGF0YSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtZnJlZS1kYXRhIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtZnJlZS1kYXRhIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1pbml0LWZ1bGwiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1pbml0LWZ1bGwiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtbmV3LXdyYXBwZWQtZGF0YSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldy13cmFwcGVkLWRhdGEiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldy13cmFwcGVkLXRleHR1cmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1uZXctd3JhcHBlZC10ZXh0dXJlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktYWxsb2NhdG9yLWdldC1kZWZhdWx0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWFsbG9jYXRvci1nZXQtZGVmYXVsdCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LWluaXQtb25jZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1pbml0LW9uY2UiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1pbml0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWluaXQiPgorPEFOQ0hPUiBpZD0iZ3N0LWlzLWdsLW1lbW9yeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWlzLWdsLW1lbW9yeSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LWNvcHktaW50byIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1jb3B5LWludG8iPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1jb3B5LXRleGltYWdlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWNvcHktdGV4aW1hZ2UiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1yZWFkLXBpeGVscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1yZWFkLXBpeGVscyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LXRleHN1YmltYWdlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXRleHN1YmltYWdlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtaGVpZ2h0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLWhlaWdodCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLWlkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLWlkIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtdGFyZ2V0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXRhcmdldCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXR5cGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtdHlwZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXdpZHRoIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXdpZHRoIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktc2V0dXAtYnVmZmVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXNldHVwLWJ1ZmZlciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5vdGhlcl9kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1NRU1PUlktVklERU8tRk9STUFUUy1TVFI6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR1NULUdMLU1FTU9SWS1WSURFTy1GT1JNQVRTLVNUUjpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+Cis8QU5DSE9SIGlkPSJHc3RHTE1lbW9yeUFsbG9jYXRvci1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5QWxsb2NhdG9yLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzIj4KKzxBTkNIT1IgaWQ9IkdzdEdMTWVtb3J5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtTUVNT1JZLUFMTE9DQVRPUi1OQU1FOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dTVC1HTC1NRU1PUlktQUxMT0NBVE9SLU5BTUU6Q0FQUyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuc2VlLWFsc28iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uZnVuY3Rpb25zIj4KKzxBTkNIT1IgaWQ9IkdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCT0FsbG9jYXRvciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8ub3RoZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8ub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8ub2JqZWN0LWhpZXJhcmNoeSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uZGVzY3JpcHRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmZ1bmN0aW9uc19kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9ImdzdC1pcy1nbC1tZW1vcnktcGJvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtaXMtZ2wtbWVtb3J5LXBibyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LXBiby1jb3B5LWludG8tdGV4dHVyZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWdsLW1lbW9yeS1wYm8tY29weS1pbnRvLXRleHR1cmUiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1wYm8tZG93bmxvYWQtdHJhbnNmZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1nbC1tZW1vcnktcGJvLWRvd25sb2FkLXRyYW5zZmVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktcGJvLWluaXQtb25jZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWdsLW1lbW9yeS1wYm8taW5pdC1vbmNlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktcGJvLXVwbG9hZC10cmFuc2ZlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWdsLW1lbW9yeS1wYm8tdXBsb2FkLXRyYW5zZmVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLm90aGVyX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3Itc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCT0FsbG9jYXRvci1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzcyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtTUVNT1JZLVBCTy1BTExPQ0FUT1ItTkFNRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHU1QtR0wtTUVNT1JZLVBCTy1BTExPQ0FUT1ItTkFNRTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdzdEdMTWVtb3J5UEJPIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCTyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uc2VlLWFsc28iPgorPEFOQ0hPUiBpZD0iR3N0R0xTaGFkZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sIj4KKzxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIuZnVuY3Rpb25zIj4KKzxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI0dzdEdMU2hhZGVyLnByb3BlcnRpZXMiPgorPEFOQ0hPUiBpZD0iR3N0R0xTaGFkZXIub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI0dzdEdMU2hhZGVyLm90aGVyIj4KKzxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI0dzdEdMU2hhZGVyLm9iamVjdC1oaWVyYXJjaHkiPgorPEFOQ0hPUiBpZD0iR3N0R0xTaGFkZXIuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI0dzdEdMU2hhZGVyLmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNHc3RHTFNoYWRlci5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLW5ldyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXciPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1uZXctZGVmYXVsdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXctZGVmYXVsdCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLW5ldy1saW5rLXdpdGgtc3RhZ2VzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLW5ldy1saW5rLXdpdGgtc3RhZ2VzIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItbmV3LXdpdGgtc3RhZ2VzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLW5ldy13aXRoLXN0YWdlcyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXVzZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci11c2UiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1nZXQtcHJvZ3JhbS1oYW5kbGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LXByb2dyYW0taGFuZGxlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItcmVsZWFzZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1yZWxlYXNlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItcmVsZWFzZS11bmxvY2tlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1yZWxlYXNlLXVubG9ja2VkIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItYXR0YWNoIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWF0dGFjaCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWF0dGFjaC11bmxvY2tlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1hdHRhY2gtdW5sb2NrZWQiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1jb21waWxlLWF0dGFjaC1zdGFnZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLWF0dGFjaC1zdGFnZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWRldGFjaCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1kZXRhY2giPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1kZXRhY2gtdW5sb2NrZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZGV0YWNoLXVubG9ja2VkIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItaXMtbGlua2VkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWlzLWxpbmtlZCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbGluayI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWZ2Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWl2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMml2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2Z2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2l2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGl2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJmdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDNmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMngzZnYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMng0ZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4NGZ2Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTNmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM2Z2Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4MmZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDJmdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDRmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3g0ZnYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNGZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00ZnYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgyZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4MmZ2Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4M2Z2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDNmdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWdldC1hdHRyaWJ1dGUtbG9jYXRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LWF0dHJpYnV0ZS1sb2NhdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWJpbmQtYXR0cmlidXRlLWxvY2F0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWJpbmQtYXR0cmlidXRlLWxvY2F0aW9uIj4KKzxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI0dzdEdMU2hhZGVyLm90aGVyX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0R0xTaGFkZXItc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNHc3RHTFNoYWRlci1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0R0xTaGFkZXIucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIucHJvcGVydHktZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHc3RHTFNoYWRlci0tbGlua2VkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNHc3RHTFNoYWRlci0tbGlua2VkIj4KKzxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNHc3RHTFNoYWRlci5zZWUtYWxzbyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuZnVuY3Rpb25zIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5vdGhlciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuZGVzY3JpcHRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmZ1bmN0aW9uc19kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLUVSUk9SOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtRVJST1I6Q0FQUyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2xzbC1lcnJvci1xdWFyayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC1lcnJvci1xdWFyayI+Cis8QU5DSE9SIGlkPSJnc3QtZ2xzbC1wcm9maWxlLWZyb20tc3RyaW5nIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXByb2ZpbGUtZnJvbS1zdHJpbmciPgorPEFOQ0hPUiBpZD0iZ3N0LWdsc2wtcHJvZmlsZS10by1zdHJpbmciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtcHJvZmlsZS10by1zdHJpbmciPgorPEFOQ0hPUiBpZD0iZ3N0LWdsc2wtdmVyc2lvbi1mcm9tLXN0cmluZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC12ZXJzaW9uLWZyb20tc3RyaW5nIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbHNsLXZlcnNpb24tdG8tc3RyaW5nIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXZlcnNpb24tdG8tc3RyaW5nIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbHNsLXZlcnNpb24tcHJvZmlsZS1mcm9tLXN0cmluZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC12ZXJzaW9uLXByb2ZpbGUtZnJvbS1zdHJpbmciPgorPEFOQ0hPUiBpZD0iZ3N0LWdsc2wtdmVyc2lvbi1wcm9maWxlLXRvLXN0cmluZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC12ZXJzaW9uLXByb2ZpbGUtdG8tc3RyaW5nIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbHNsLXN0cmluZy1nZXQtdmVyc2lvbi1wcm9maWxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXN0cmluZy1nZXQtdmVyc2lvbi1wcm9maWxlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LXN1cHBvcnRzLWdsc2wtcHJvZmlsZS12ZXJzaW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbC1jb250ZXh0LXN1cHBvcnRzLWdsc2wtcHJvZmlsZS12ZXJzaW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC12ZXJzaW9uLXRvLWdsc2wtdmVyc2lvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2wtdmVyc2lvbi10by1nbHNsLXZlcnNpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wub3RoZXJfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHc3RHTFNMRXJyb3IiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTEVycm9yIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLUVSUk9SLUNPTVBJTEU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1FUlJPUi1DT01QSUxFOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtRVJST1ItTElOSzpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLUVSUk9SLUxJTks6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1FUlJPUi1QUk9HUkFNOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtRVJST1ItUFJPR1JBTTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdzdEdMU0xQcm9maWxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xQcm9maWxlIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVBST0ZJTEUtTk9ORTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVBST0ZJTEUtTk9ORTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVBST0ZJTEUtRVM6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1QUk9GSUxFLUVTOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtUFJPRklMRS1DT1JFOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtUFJPRklMRS1DT1JFOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtUFJPRklMRS1DT01QQVRJQklMSVRZOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtUFJPRklMRS1DT01QQVRJQklMSVRZOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtUFJPRklMRS1BTlk6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1QUk9GSUxFLUFOWTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdzdEdMU0xWZXJzaW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xWZXJzaW9uIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVZFUlNJT04tTk9ORTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tTk9ORTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVZFUlNJT04tMTAwOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0xMDA6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLTExMDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMTEwOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtVkVSU0lPTi0xMjA6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTEyMDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVZFUlNJT04tMTMwOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0xMzA6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLTE0MDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMTQwOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtVkVSU0lPTi0xNTA6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTE1MDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVZFUlNJT04tMzAwOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0zMDA6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLTMxMDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMzEwOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtVkVSU0lPTi0zMjA6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTMyMDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVZFUlNJT04tMzMwOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0zMzA6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLTQwMDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tNDAwOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtVkVSU0lPTi00MTA6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTQxMDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVZFUlNJT04tNDIwOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi00MjA6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLTQzMDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tNDMwOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtVkVSU0lPTi00NDA6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTQ0MDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVZFUlNJT04tNDUwOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi00NTA6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLUFOWTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tQU5ZOkNBUFMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLnNlZS1hbHNvIj4KKzxBTkNIT1IgaWQ9IiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wLy5odG1sIj4KKzxBTkNIT1IgaWQ9IkdzdEdMU0xTdGFnZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wLy5odG1sI0dzdEdMU0xTdGFnZSI+Cis8QU5DSE9SIGlkPSIuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC8uaHRtbCMuZGVzY3JpcHRpb24iPgorPEFOQ0hPUiBpZD0iLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvLmh0bWwjLmZ1bmN0aW9uc19kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9Ii5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvLmh0bWwjLm90aGVyX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iLnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvLmh0bWwjLnNlZS1hbHNvIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5mdW5jdGlvbnMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLm90aGVyIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5kZXNjcmlwdGlvbiI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LWJ1ZmZlci1hZGQtZ2wtc3luYy1tZXRhIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1idWZmZXItYWRkLWdsLXN5bmMtbWV0YSI+Cis8QU5DSE9SIGlkPSJnc3QtYnVmZmVyLWFkZC1nbC1zeW5jLW1ldGEtZnVsbCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtYnVmZmVyLWFkZC1nbC1zeW5jLW1ldGEtZnVsbCI+CiA8QU5DSE9SIGlkPSJnc3QtYnVmZmVyLWdldC1nbC1zeW5jLW1ldGEiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LWJ1ZmZlci1nZXQtZ2wtc3luYy1tZXRhIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1zeW5jLW1ldGEtYXBpLWdldC10eXBlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1nbC1zeW5jLW1ldGEtYXBpLWdldC10eXBlIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1zeW5jLW1ldGEtZ2V0LWluZm8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LWdsLXN5bmMtbWV0YS1nZXQtaW5mbyI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtc3luYy1tZXRhLXNldC1zeW5jLXBvaW50IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1nbC1zeW5jLW1ldGEtc2V0LXN5bmMtcG9pbnQiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLXN5bmMtbWV0YS13YWl0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1nbC1zeW5jLW1ldGEtd2FpdCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc3luYy1tZXRhLXdhaXQtY3B1IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1nbC1zeW5jLW1ldGEtd2FpdC1jcHUiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEub3RoZXJfZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RHTFN5bmNNZXRhIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI0dzdEdMU3luY01ldGEiPgogPEFOQ0hPUiBpZD0iR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1TWU5DLU1FVEE6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVNZTkMtTUVUQTpDQVBTIj4KQEAgLTE1MjgsNTMgKzE2NjAsMTAgQEAKIDxBTkNIT1IgaWQ9ImdzdC1nbC11cGxvYWQtcHJvcG9zZS1hbGxvY2F0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWQuaHRtbCNnc3QtZ2wtdXBsb2FkLXByb3Bvc2UtYWxsb2NhdGlvbiI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtdXBsb2FkLXRyYW5zZm9ybS1jYXBzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWQuaHRtbCNnc3QtZ2wtdXBsb2FkLXRyYW5zZm9ybS1jYXBzIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC11cGxvYWQtcGVyZm9ybS13aXRoLWJ1ZmZlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC1wZXJmb3JtLXdpdGgtYnVmZmVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC11cGxvYWQtcmVsZWFzZS1idWZmZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtcmVsZWFzZS1idWZmZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXVwbG9hZC1nZXQtaW5wdXQtdGVtcGxhdGUtY2FwcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC1nZXQtaW5wdXQtdGVtcGxhdGUtY2FwcyI+CiA8QU5DSE9SIGlkPSJHc3RHTFVwbG9hZC5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWQuaHRtbCNHc3RHTFVwbG9hZC5vdGhlcl9kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdEdMVXBsb2FkLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkLmh0bWwjR3N0R0xVcGxvYWQtc3RydWN0Ij4KIDxBTkNIT1IgaWQ9IkdzdEdMVXBsb2FkLnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWQuaHRtbCNHc3RHTFVwbG9hZC5zZWUtYWxzbyI+Ci08QU5DSE9SIGlkPSJHc3RHTFVwbG9hZE1ldGEiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFVwbG9hZE1ldGEuaHRtbCI+Ci08QU5DSE9SIGlkPSJHc3RHTFVwbG9hZE1ldGEuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWRNZXRhLmh0bWwjR3N0R0xVcGxvYWRNZXRhLmZ1bmN0aW9ucyI+Ci08QU5DSE9SIGlkPSJHc3RHTFVwbG9hZE1ldGEub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFVwbG9hZE1ldGEuaHRtbCNHc3RHTFVwbG9hZE1ldGEub3RoZXIiPgotPEFOQ0hPUiBpZD0iR3N0R0xVcGxvYWRNZXRhLm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFVwbG9hZE1ldGEuaHRtbCNHc3RHTFVwbG9hZE1ldGEub2JqZWN0LWhpZXJhcmNoeSI+Ci08QU5DSE9SIGlkPSJHc3RHTFVwbG9hZE1ldGEuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFVwbG9hZE1ldGEuaHRtbCNHc3RHTFVwbG9hZE1ldGEuZGVzY3JpcHRpb24iPgotPEFOQ0hPUiBpZD0iR3N0R0xVcGxvYWRNZXRhLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWRNZXRhLmh0bWwjR3N0R0xVcGxvYWRNZXRhLmZ1bmN0aW9uc19kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC11cGxvYWQtbWV0YS1uZXciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtbmV3Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC11cGxvYWQtbWV0YS1zZXQtZm9ybWF0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWRNZXRhLmh0bWwjZ3N0LWdsLXVwbG9hZC1tZXRhLXNldC1mb3JtYXQiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXVwbG9hZC1tZXRhLWdldC1mb3JtYXQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtZ2V0LWZvcm1hdCI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtdXBsb2FkLW1ldGEtYWRkLXRvLWJ1ZmZlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkTWV0YS5odG1sI2dzdC1nbC11cGxvYWQtbWV0YS1hZGQtdG8tYnVmZmVyIj4KLTxBTkNIT1IgaWQ9IkdzdEdMVXBsb2FkTWV0YS5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWRNZXRhLmh0bWwjR3N0R0xVcGxvYWRNZXRhLm90aGVyX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0R0xVcGxvYWRNZXRhLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkTWV0YS5odG1sI0dzdEdMVXBsb2FkTWV0YS1zdHJ1Y3QiPgotPEFOQ0hPUiBpZD0iR3N0R0xVcGxvYWRNZXRhLnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWRNZXRhLmh0bWwjR3N0R0xVcGxvYWRNZXRhLnNlZS1hbHNvIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuZnVuY3Rpb25zIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuZGVzY3JpcHRpb24iPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmZ1bmN0aW9uc19kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdMQ0I6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dMQ0I6Q0FQUyI+Ci08QU5DSE9SIGlkPSJHTENCLVYyOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNHTENCLVYyOkNBUFMiPgotPEFOQ0hPUiBpZD0iQ0RDQjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjQ0RDQjpDQVBTIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1oYW5kbGUtc2V0LWNvbnRleHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLXNldC1jb250ZXh0Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1oYW5kbGUtY29udGV4dC1xdWVyeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1oYW5kbGUtY29udGV4dC1xdWVyeSI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1nZW4tdGV4dHVyZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi10ZXh0dXJlIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWRlbC10ZXh0dXJlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLXRleHR1cmUiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2VuLWZibyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi1mYm8iPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZGVsLWZibyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1mYm8iPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtdXNlLWZiby12MiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LXVzZS1mYm8tdjIiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2VuLXNoYWRlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi1zaGFkZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZGVsLXNoYWRlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1zaGFkZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtY2hlY2stZnJhbWVidWZmZXItc3RhdHVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2hlY2stZnJhbWVidWZmZXItc3RhdHVzIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LXNldC1lcnJvciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LXNldC1lcnJvciI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1nZXQtZXJyb3IiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtZXJyb3IiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtY2xlYXItc2hhZGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2xlYXItc2hhZGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1nZW5lcmF0ZS10ZXh0dXJlLWZ1bGwiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2VuZXJhdGUtdGV4dHVyZS1mdWxsIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1jYXBzLXJlcGxhY2UtYWxsLWNhcHMtZmVhdHVyZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY2Fwcy1yZXBsYWNlLWFsbC1jYXBzLWZlYXR1cmVzIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1lbnN1cmUtZWxlbWVudC1kYXRhIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWVuc3VyZS1lbGVtZW50LWRhdGEiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWdldC1wbGFuZS1kYXRhLXNpemUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2V0LXBsYW5lLWRhdGEtc2l6ZSI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtcnVuLXF1ZXJ5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXJ1bi1xdWVyeSI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdEdMRGlzcGxheVByb2plY3Rpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNHc3RHTERpc3BsYXlQcm9qZWN0aW9uIj4KLTxBTkNIT1IgaWQ9IkdTVC1HTC1ESVNQTEFZLVBST0pFQ1RJT04tT1JUSE8yRDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR1NULUdMLURJU1BMQVktUFJPSkVDVElPTi1PUlRITzJEOkNBUFMiPgotPEFOQ0hPUiBpZD0iR1NULUdMLURJU1BMQVktUFJPSkVDVElPTi1QRVJTUEVDVElWRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR1NULUdMLURJU1BMQVktUFJPSkVDVElPTi1QRVJTUEVDVElWRTpDQVBTIj4KIDxBTkNIT1IgaWQ9IkdzdEdMV2luZG93IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xXaW5kb3cuaHRtbCI+CiA8QU5DSE9SIGlkPSJHc3RHTFdpbmRvdy5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFdpbmRvdy5odG1sI0dzdEdMV2luZG93LmZ1bmN0aW9ucyI+CiA8QU5DSE9SIGlkPSJHc3RHTFdpbmRvdy5zaWduYWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xXaW5kb3cuaHRtbCNHc3RHTFdpbmRvdy5zaWduYWxzIj4KQEAgLTE1OTAsNyArMTY3OSw2IEBACiA8QU5DSE9SIGlkPSJHU1QtR0wtV0lORE9XLUNCOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFdpbmRvdy5odG1sI0dTVC1HTC1XSU5ET1ctQ0I6Q0FQUyI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtd2luZG93LW5ldyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMV2luZG93Lmh0bWwjZ3N0LWdsLXdpbmRvdy1uZXciPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLXdpbmRvdy1kcmF3IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LWRyYXciPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXdpbmRvdy1kcmF3LXVubG9ja2VkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LWRyYXctdW5sb2NrZWQiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLXdpbmRvdy1pcy1ydW5uaW5nIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LWlzLXJ1bm5pbmciPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLXdpbmRvdy1xdWl0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LXF1aXQiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLXdpbmRvdy1ydW4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFdpbmRvdy5odG1sI2dzdC1nbC13aW5kb3ctcnVuIj4KQEAgLTE2NzcsNiArMTc2NSwyNjMgQEAKIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLm90aGVyX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0R0xXaW5kb3dYMTEiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sI0dzdEdMV2luZG93WDExIj4KIDxBTkNIT1IgaWQ9IkdzdEdMV2luZG93WDExQ2xhc3MiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sI0dzdEdMV2luZG93WDExQ2xhc3MiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcub3RoZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1Z0xvZ0dldE1lc3NhZ2UiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWFzeW5jLWRlYnVnLW5ldyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctbmV3Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hc3luYy1kZWJ1Zy1mcmVlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1mcmVlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hc3luYy1kZWJ1Zy1pbml0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1pbml0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hc3luYy1kZWJ1Zy11bnNldCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctdW5zZXQiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWFzeW5jLWRlYnVnLWZyZWV6ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctZnJlZXplIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hc3luYy1kZWJ1Zy10aGF3IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy10aGF3Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hc3luYy1kZWJ1Zy1vdXRwdXQtbG9nLW1zZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctb3V0cHV0LWxvZy1tc2ciPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWFzeW5jLWRlYnVnLXN0b3JlLWxvZy1tc2ciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLXN0b3JlLWxvZy1tc2ciPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWFzeW5jLWRlYnVnLXN0b3JlLWxvZy1tc2ctdmFsaXN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1zdG9yZS1sb2ctbXNnLXZhbGlzdCI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtQVNZTkMtQ0FULUxFVkVMLUxPRy12YWxpc3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR1NULUdMLUFTWU5DLUNBVC1MRVZFTC1MT0ctdmFsaXN0Ij4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1BU1lOQy1DQVQtTEVWRUwtTE9HOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR1NULUdMLUFTWU5DLUNBVC1MRVZFTC1MT0c6Q0FQUyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtaW5zZXJ0LWRlYnVnLW1hcmtlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtaW5zZXJ0LWRlYnVnLW1hcmtlciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5vdGhlcl9kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQXN5bmNEZWJ1ZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLnNlZS1hbHNvIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuZnVuY3Rpb25zIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5vdGhlciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuZGVzY3JpcHRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmZ1bmN0aW9uc19kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdMQ0I6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dMQ0I6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHTENCLVYyOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHTENCLVYyOkNBUFMiPgorPEFOQ0hPUiBpZD0iQ0RDQjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjQ0RDQjpDQVBTIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1oYW5kbGUtc2V0LWNvbnRleHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLXNldC1jb250ZXh0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1oYW5kbGUtY29udGV4dC1xdWVyeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1oYW5kbGUtY29udGV4dC1xdWVyeSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1nZW4tdGV4dHVyZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi10ZXh0dXJlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWRlbC10ZXh0dXJlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLXRleHR1cmUiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2VuLWZibyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi1mYm8iPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZGVsLWZibyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1mYm8iPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtdXNlLWZiby12MiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LXVzZS1mYm8tdjIiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2VuLXNoYWRlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi1zaGFkZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZGVsLXNoYWRlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1zaGFkZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtY2hlY2stZnJhbWVidWZmZXItc3RhdHVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2hlY2stZnJhbWVidWZmZXItc3RhdHVzIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LXNldC1lcnJvciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LXNldC1lcnJvciI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1nZXQtZXJyb3IiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtZXJyb3IiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtY2xlYXItc2hhZGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2xlYXItc2hhZGVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1nZW5lcmF0ZS10ZXh0dXJlLWZ1bGwiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2VuZXJhdGUtdGV4dHVyZS1mdWxsIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jYXBzLXJlcGxhY2UtYWxsLWNhcHMtZmVhdHVyZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY2Fwcy1yZXBsYWNlLWFsbC1jYXBzLWZlYXR1cmVzIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1lbnN1cmUtZWxlbWVudC1kYXRhIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWVuc3VyZS1lbGVtZW50LWRhdGEiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWdldC1wbGFuZS1kYXRhLXNpemUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2V0LXBsYW5lLWRhdGEtc2l6ZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtZ2V0LXBsYW5lLXN0YXJ0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdldC1wbGFuZS1zdGFydCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtcnVuLXF1ZXJ5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXJ1bi1xdWVyeSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtdmFsdWUtZ2V0LXRleHR1cmUtdGFyZ2V0LW1hc2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtdmFsdWUtZ2V0LXRleHR1cmUtdGFyZ2V0LW1hc2siPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXZhbHVlLXNldC10ZXh0dXJlLXRhcmdldCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC12YWx1ZS1zZXQtdGV4dHVyZS10YXJnZXQiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXZhbHVlLXNldC10ZXh0dXJlLXRhcmdldC1mcm9tLW1hc2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtdmFsdWUtc2V0LXRleHR1cmUtdGFyZ2V0LWZyb20tbWFzayI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5vdGhlcl9kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdzdEdMRGlzcGxheVByb2plY3Rpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHc3RHTERpc3BsYXlQcm9qZWN0aW9uIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1ESVNQTEFZLVBST0pFQ1RJT04tT1JUSE8yRDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjR1NULUdMLURJU1BMQVktUFJPSkVDVElPTi1PUlRITzJEOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLURJU1BMQVktUFJPSkVDVElPTi1QRVJTUEVDVElWRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjR1NULUdMLURJU1BMQVktUFJPSkVDVElPTi1QRVJTUEVDVElWRTpDQVBTIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMub3RoZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtZm9ybWF0LXR5cGUtbi1ieXRlcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLWZvcm1hdC10eXBlLW4tYnl0ZXMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXRleHR1cmUtdHlwZS1uLWJ5dGVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10eXBlLW4tYnl0ZXMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWZvcm1hdC1mcm9tLWdsLXRleHR1cmUtdHlwZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLWZvcm1hdC1mcm9tLWdsLXRleHR1cmUtdHlwZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtdGV4dHVyZS10eXBlLWZyb20tZm9ybWF0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10eXBlLWZyb20tZm9ybWF0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaXplZC1nbC1mb3JtYXQtZnJvbS1nbC1mb3JtYXQtdHlwZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXNpemVkLWdsLWZvcm1hdC1mcm9tLWdsLWZvcm1hdC10eXBlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC10ZXh0dXJlLXRhcmdldC1mcm9tLXN0cmluZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LWZyb20tc3RyaW5nIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC10ZXh0dXJlLXRhcmdldC10by1zdHJpbmciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC10by1zdHJpbmciPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LXRvLWdsIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10YXJnZXQtdG8tZ2wiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LWZyb20tZ2wiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC1mcm9tLWdsIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC10ZXh0dXJlLXRhcmdldC10by1idWZmZXItcG9vbC1vcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC10by1idWZmZXItcG9vbC1vcHRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMub3RoZXJfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHc3RHTFRleHR1cmVUYXJnZXQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtTk9ORTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtTk9ORTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1URVhUVVJFLVRBUkdFVC0yRDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtMkQ6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC1SRUNUQU5HTEU6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtRVhURVJOQUwtT0VTOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVM6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtMkQtU1RSOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC0yRC1TVFI6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFLVNUUjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFLVNUUjpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVMtU1RSOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVMtU1RSOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC0yRDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVRFWFRVUkUtVEFSR0VULTJEOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC1SRUNUQU5HTEU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC1SRUNUQU5HTEU6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVRFWFRVUkUtVEFSR0VULUVYVEVSTkFMLU9FUzpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVRFWFRVUkUtVEFSR0VULUVYVEVSTkFMLU9FUzpDQVBTIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuZnVuY3Rpb25zIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnByb3BlcnRpZXMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnNpZ25hbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuc2lnbmFscyI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXIiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyVmlkZW9SZW5kZXJlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclZpZGVvUmVuZGVyZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLm90aGVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLm9iamVjdC1oaWVyYXJjaHkiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnByZXJlcXVpc2l0ZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIucHJlcmVxdWlzaXRlcyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaW1wbGVtZW50YXRpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmltcGxlbWVudGF0aW9ucyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuZGVzY3JpcHRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmZ1bmN0aW9uc19kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItbmV3IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1uZXciPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1wbGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1wbGF5Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItcGF1c2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXBhdXNlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc3RvcCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc3RvcCI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXNlZWsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNlZWsiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zZXQtdXJpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdXJpIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LXVyaSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXVyaSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1kdXJhdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LWR1cmF0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LXBvc2l0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcG9zaXRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zZXQtdm9sdW1lIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdm9sdW1lIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LW11dGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1tdXRlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LXZvbHVtZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXZvbHVtZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1tdXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtbXV0ZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1waXBlbGluZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXBpcGVsaW5lIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LXBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zdGF0ZS1nZXQtbmFtZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc3RhdGUtZ2V0LW5hbWUiPgorPEFOQ0hPUiBpZD0iR1NULVBMQVlFUi1FUlJPUjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1FUlJPUjpDQVBTIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZXJyb3ItZ2V0LW5hbWUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWVycm9yLWdldC1uYW1lIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LW1lZGlhLWluZm8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1tZWRpYS1pbmZvIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LWF1ZGlvLXN0cmVhbXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1hdWRpby1zdHJlYW1zIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LXZpZGVvLXN0cmVhbXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC12aWRlby1zdHJlYW1zIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LXN1YnRpdGxlLXN0cmVhbXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1zdWJ0aXRsZS1zdHJlYW1zIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LWF1ZGlvLXRyYWNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtYXVkaW8tdHJhY2siPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zZXQtdmlkZW8tdHJhY2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC12aWRlby10cmFjayI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXNldC1zdWJ0aXRsZS10cmFjayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXN1YnRpdGxlLXRyYWNrIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtYXVkaW8tdHJhY2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LWF1ZGlvLXRyYWNrIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtdmlkZW8tdHJhY2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LXZpZGVvLXRyYWNrIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtc3VidGl0bGUtdHJhY2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LXN1YnRpdGxlLXRyYWNrIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LWF1ZGlvLXRyYWNrLWVuYWJsZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1hdWRpby10cmFjay1lbmFibGVkIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LXZpZGVvLXRyYWNrLWVuYWJsZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC12aWRlby10cmFjay1lbmFibGVkIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LXN1YnRpdGxlLXRyYWNrLWVuYWJsZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1zdWJ0aXRsZS10cmFjay1lbmFibGVkIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LXN1YnRpdGxlLXVyaSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXN1YnRpdGxlLXVyaSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1zdWJ0aXRsZS11cmkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1zdWJ0aXRsZS11cmkiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zZXQtdmlzdWFsaXphdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXZpc3VhbGl6YXRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zZXQtdmlzdWFsaXphdGlvbi1lbmFibGVkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlzdWFsaXphdGlvbi1lbmFibGVkIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtdmlzdWFsaXphdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtdmlzdWFsaXphdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWNvbG9yLWJhbGFuY2UtdHlwZS1nZXQtbmFtZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItY29sb3ItYmFsYW5jZS10eXBlLWdldC1uYW1lIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItaGFzLWNvbG9yLWJhbGFuY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWhhcy1jb2xvci1iYWxhbmNlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LWNvbG9yLWJhbGFuY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1jb2xvci1iYWxhbmNlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LWNvbG9yLWJhbGFuY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jb2xvci1iYWxhbmNlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZ2V0LXJhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1yYXRlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LXJhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1yYXRlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLm90aGVyX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyU3RhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTdGF0ZSI+Cis8QU5DSE9SIGlkPSJHU1QtUExBWUVSLVNUQVRFLVNUT1BQRUQ6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItU1RBVEUtU1RPUFBFRDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1QTEFZRVItU1RBVEUtQlVGRkVSSU5HOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLVNUQVRFLUJVRkZFUklORzpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1QTEFZRVItU1RBVEUtUEFVU0VEOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLVNUQVRFLVBBVVNFRDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1QTEFZRVItU1RBVEUtUExBWUlORzpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1TVEFURS1QTEFZSU5HOkNBUFMiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyRXJyb3IiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJFcnJvciI+Cis8QU5DSE9SIGlkPSJHU1QtUExBWUVSLUVSUk9SLUZBSUxFRDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1FUlJPUi1GQUlMRUQ6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZSI+Cis8QU5DSE9SIGlkPSJHU1QtUExBWUVSLUNPTE9SLUJBTEFOQ0UtQlJJR0hUTkVTUzpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1DT0xPUi1CQUxBTkNFLUJSSUdIVE5FU1M6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtUExBWUVSLUNPTE9SLUJBTEFOQ0UtQ09OVFJBU1Q6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItQ09MT1ItQkFMQU5DRS1DT05UUkFTVDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1QTEFZRVItQ09MT1ItQkFMQU5DRS1TQVRVUkFUSU9OOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLUNPTE9SLUJBTEFOQ0UtU0FUVVJBVElPTjpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1QTEFZRVItQ09MT1ItQkFMQU5DRS1IVUU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItQ09MT1ItQkFMQU5DRS1IVUU6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXItc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllclZpZGVvUmVuZGVyZXItc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyVmlkZW9SZW5kZXJlci1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2UiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIucHJvcGVydHktZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItLWN1cnJlbnQtYXVkaW8tdHJhY2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLWN1cnJlbnQtYXVkaW8tdHJhY2siPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLS1jdXJyZW50LXN1YnRpdGxlLXRyYWNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1jdXJyZW50LXN1YnRpdGxlLXRyYWNrIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci0tY3VycmVudC12aWRlby10cmFjayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tY3VycmVudC12aWRlby10cmFjayI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItLWR1cmF0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1kdXJhdGlvbiI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItLW1lZGlhLWluZm8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLW1lZGlhLWluZm8iPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLS1tdXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1tdXRlIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci0tcGlwZWxpbmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXBpcGVsaW5lIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci0tcG9zaXRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXBvc2l0aW9uIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci0tcG9zaXRpb24tdXBkYXRlLWludGVydmFsIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLS1yYXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1yYXRlIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci0tc2lnbmFsLWRpc3BhdGNoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXNpZ25hbC1kaXNwYXRjaGVyIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci0tc3VidXJpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1zdWJ1cmkiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLS11cmkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXVyaSI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItLXZpZGVvLXJlbmRlcmVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS12aWRlby1yZW5kZXJlciI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItLXZvbHVtZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tdm9sdW1lIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5zaWduYWwtZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5zaWduYWwtZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItYnVmZmVyaW5nIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWJ1ZmZlcmluZyI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItZHVyYXRpb24tY2hhbmdlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1kdXJhdGlvbi1jaGFuZ2VkIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci1lbmQtb2Ytc3RyZWFtIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWVuZC1vZi1zdHJlYW0iPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLWVycm9yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWVycm9yIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci1tZWRpYS1pbmZvLXVwZGF0ZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItbWVkaWEtaW5mby11cGRhdGVkIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci1tdXRlLWNoYW5nZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItbXV0ZS1jaGFuZ2VkIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci1wb3NpdGlvbi11cGRhdGVkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXBvc2l0aW9uLXVwZGF0ZWQiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLXNlZWstZG9uZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1zZWVrLWRvbmUiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLXN0YXRlLWNoYW5nZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItc3RhdGUtY2hhbmdlZCI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItdmlkZW8tZGltZW5zaW9ucy1jaGFuZ2VkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZCI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItdm9sdW1lLWNoYW5nZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItdm9sdW1lLWNoYW5nZWQiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLXdhcm5pbmciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItd2FybmluZyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uZnVuY3Rpb25zIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllck1lZGlhSW5mbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyU3RyZWFtSW5mbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllckF1ZGlvSW5mbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyVmlkZW9JbmZvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXJTdWJ0aXRsZUluZm8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8ub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5vdGhlciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5vYmplY3QtaGllcmFyY2h5Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5kZXNjcmlwdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uZnVuY3Rpb25zX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC11cmkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC11cmkiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1kdXJhdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LWR1cmF0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdGl0bGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC10aXRsZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LWNvbnRhaW5lci1mb3JtYXQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1jb250YWluZXItZm9ybWF0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItbWVkaWEtaW5mby1pcy1zZWVrYWJsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8taXMtc2Vla2FibGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1pbWFnZS1zYW1wbGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1pbWFnZS1zYW1wbGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC10YWdzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdGFncyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXN0cmVhbS1saXN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtc3RyZWFtLWxpc3QiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtaW5kZXgiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtaW5kZXgiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtY2FwcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1jYXBzIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LXRhZ3MiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtdGFncyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1jb2RlYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1jb2RlYyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1zdHJlYW0tdHlwZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1zdHJlYW0tdHlwZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWJpdHJhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1iaXRyYXRlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtY2hhbm5lbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1jaGFubmVscyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWxhbmd1YWdlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtbGFuZ3VhZ2UiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1tYXgtYml0cmF0ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LW1heC1iaXRyYXRlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtc2FtcGxlLXJhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1zYW1wbGUtcmF0ZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWJpdHJhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1iaXRyYXRlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtaGVpZ2h0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtaGVpZ2h0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtd2lkdGgiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC13aWR0aCI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWZyYW1lcmF0ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWZyYW1lcmF0ZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LW1heC1iaXRyYXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtbWF4LWJpdHJhdGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1waXhlbC1hc3BlY3QtcmF0aW8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1waXhlbC1hc3BlY3QtcmF0aW8iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zdWJ0aXRsZS1pbmZvLWdldC1sYW5ndWFnZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN1YnRpdGxlLWluZm8tZ2V0LWxhbmd1YWdlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8ub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLm90aGVyX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyTWVkaWFJbmZvLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8tc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllclN0cmVhbUluZm8tc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8tc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllckF1ZGlvSW5mby1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXJWaWRlb0luZm8tc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mby1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyU3VidGl0bGVJbmZvLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdWJ0aXRsZUluZm8tc3RydWN0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuZGVzY3JpcHRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmZ1bmN0aW9uc19kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXItbmV3IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCNnc3QtcGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLW5ldyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5vdGhlcl9kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuZGVzY3JpcHRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmZ1bmN0aW9uc19kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1uZXciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1uZXciPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWdldC13aW5kb3ctaGFuZGxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItZ2V0LXdpbmRvdy1oYW5kbGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLXNldC13aW5kb3ctaGFuZGxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItc2V0LXdpbmRvdy1oYW5kbGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWV4cG9zZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWV4cG9zZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItZ2V0LXJlbmRlci1yZWN0YW5nbGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1nZXQtcmVuZGVyLXJlY3RhbmdsZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItc2V0LXJlbmRlci1yZWN0YW5nbGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1zZXQtcmVuZGVyLXJlY3RhbmdsZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5vdGhlcl9kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5vdGhlciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5vYmplY3QtaGllcmFyY2h5Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5kZXNjcmlwdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uZnVuY3Rpb25zX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci12aXN1YWxpemF0aW9ucy1nZXQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbnMtZ2V0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItdmlzdWFsaXphdGlvbnMtZnJlZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9ucy1mcmVlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItdmlzdWFsaXphdGlvbi1jb3B5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGxheWVyLXZpc3VhbGl6YXRpb24tY29weSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXZpc3VhbGl6YXRpb24tZnJlZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9uLWZyZWUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ub3RoZXJfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXJWaXN1YWxpemF0aW9uLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbi1zdHJ1Y3QiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5LnN0YWJpbGl0eS1sZXZlbCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuc3RhYmlsaXR5LWxldmVsIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5LmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuZnVuY3Rpb25zIj4KQEAgLTE4MzIsNiArMjE3Nyw3IEBACiA8QU5DSE9SIGlkPSJHU1QtUEhPVE9HUkFQSFktUFJPUC1GT0NVUy1NT0RFOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dTVC1QSE9UT0dSQVBIWS1QUk9QLUZPQ1VTLU1PREU6Q0FQUyI+CiA8QU5DSE9SIGlkPSJHU1QtUEhPVE9HUkFQSFktUFJPUC1aT09NOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dTVC1QSE9UT0dSQVBIWS1QUk9QLVpPT006Q0FQUyI+CiA8QU5DSE9SIGlkPSJhbm5vdGF0aW9uLWdsb3NzdGVybS1hbGxvdy1ub25lIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvYW5ub3RhdGlvbi1nbG9zc2FyeS5odG1sI2Fubm90YXRpb24tZ2xvc3N0ZXJtLWFsbG93LW5vbmUiPgorPEFOQ0hPUiBpZD0iYW5ub3RhdGlvbi1nbG9zc3Rlcm0tYXJyYXkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9hbm5vdGF0aW9uLWdsb3NzYXJ5Lmh0bWwjYW5ub3RhdGlvbi1nbG9zc3Rlcm0tYXJyYXkiPgogPEFOQ0hPUiBpZD0iYW5ub3RhdGlvbi1nbG9zc3Rlcm0tY2xvc3VyZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2Fubm90YXRpb24tZ2xvc3NhcnkuaHRtbCNhbm5vdGF0aW9uLWdsb3NzdGVybS1jbG9zdXJlIj4KIDxBTkNIT1IgaWQ9ImFubm90YXRpb24tZ2xvc3N0ZXJtLWRlc3Ryb3kiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9hbm5vdGF0aW9uLWdsb3NzYXJ5Lmh0bWwjYW5ub3RhdGlvbi1nbG9zc3Rlcm0tZGVzdHJveSI+CiA8QU5DSE9SIGlkPSJhbm5vdGF0aW9uLWdsb3NzdGVybS1lbGVtZW50LXR5cGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9hbm5vdGF0aW9uLWdsb3NzYXJ5Lmh0bWwjYW5ub3RhdGlvbi1nbG9zc3Rlcm0tZWxlbWVudC10eXBlIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL21wZWd0cy5odG1sIGIvZG9jcy9saWJzL2h0bWwvbXBlZ3RzLmh0bWwKaW5kZXggMjdkY2UxYi4uYTc2YTE5NiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvbXBlZ3RzLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvbXBlZ3RzLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5NcGVnIFRTIGhlbHBlciBsaWJyYXJ5OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sIiB0aXRsZT0iUGFydMKgSS7CoEdTdHJlYW1lciBCYWQgUGx1Z2lucyBMaWJyYXJpZXMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RtcGVndmlkZW9tZXRhLmh0bWwiIHRpdGxlPSJnc3RtcGVndmlkZW9tZXRhIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL3BsYXllci5odG1sIGIvZG9jcy9saWJzL2h0bWwvcGxheWVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ5ZDEyMgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGlicy9odG1sL3BsYXllci5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT5QbGF5ZXIgTGlicmFyeTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KKzxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KKzxsaW5rIHJlbD0idXAiIGhyZWY9ImdzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sIiB0aXRsZT0iUGFydMKgSS7CoEdTdHJlYW1lciBCYWQgUGx1Z2lucyBMaWJyYXJpZXMiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgorPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KKzx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8L3RyPjwvdGFibGU+Cis8ZGl2IGNsYXNzPSJjaGFwdGVyIj4KKzxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiPgorPGEgbmFtZT0icGxheWVyIj48L2E+UGxheWVyIExpYnJhcnk8L2gyPjwvZGl2PjwvZGl2PjwvZGl2PgorPGRpdiBjbGFzcz0idG9jIj48ZGwgY2xhc3M9InRvYyI+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiPmdzdHBsYXllcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgUGxheWVyPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiPmdzdHBsYXllci1tZWRpYWluZm88L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIFBsYXllciBNZWRpYSBJbmZvcm1hdGlvbjwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCI+Z3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIFBsYXllciBHTGliIE1haW5Db250ZXh0IGRpc3BhdGNoZXI8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwiPmdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBQbGF5ZXIgVmlkZW8gT3ZlcmxheSBWaWRlbyBSZW5kZXJlcjwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCI+Z3N0cGxheWVyLXZpc3VhbGl6YXRpb248L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIFBsYXllciBWaXN1YWxpemF0aW9uPC9zcGFuPgorPC9kdD4KKzwvZGw+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvb3RlciI+Cis8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC90b29scy5odG1sIGIvZG9jcy9saWJzL2h0bWwvdG9vbHMuaHRtbAppbmRleCA3ZTVhM2QwLi5lYjk3YTlmIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC90b29scy5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL3Rvb2xzLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Vc2VmdWwgZWxlbWVudHM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmh0bWwiIHRpdGxlPSJQYXJ0wqBJLsKgR1N0cmVhbWVyIEJhZCBQbHVnaW5zIExpYnJhcmllcyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUlTREItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sIiB0aXRsZT0iSVNEQiB2YXJpYW50cyBvZiBNUEVHLVRTIGRlc2NyaXB0b3JzIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL3ZpZGVvLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC92aWRlby5odG1sCmluZGV4IGQxMGQ3MDkuLjk3ODVkZWIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL3ZpZGVvLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvdmlkZW8uaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPlZpZGVvIGhlbHBlcnMgYW5kIGJhc2VjbGFzc2VzOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sIiB0aXRsZT0iUGFydMKgSS7CoEdTdHJlYW1lciBCYWQgUGx1Z2lucyBMaWJyYXJpZXMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yUGFkLmh0bWwiIHRpdGxlPSJHc3RBZ2dyZWdhdG9yUGFkIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9NYWtlZmlsZS5hbSBiL2RvY3MvcGx1Z2lucy9NYWtlZmlsZS5hbQppbmRleCBjNDMxZjc4Li43NjA3YjU1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvTWFrZWZpbGUuYW0KKysrIGIvZG9jcy9wbHVnaW5zL01ha2VmaWxlLmFtCkBAIC0xMTIsNyArMTEyLDYgQEAKIAkkKHRvcF9zcmNkaXIpL2dzdC9haWZmL2FpZmZwYXJzZS5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9haWZmL2FpZmZtdXguaCBcCiAJJCh0b3Bfc3JjZGlyKS9nc3QvYXV0b2NvbnZlcnQvZ3N0YXV0b2NvbnZlcnQuaCBcCi0JJCh0b3Bfc3JjZGlyKS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RhdWRpb3Zpc3VhbGl6ZXIuaCBcCiAJJCh0b3Bfc3JjZGlyKS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGFjZXNjb3BlLmggXAogCSQodG9wX3NyY2RpcikvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3BlY3RyYXNjb3BlLmggXAogCSQodG9wX3NyY2RpcikvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3luYWVzY29wZS5oIFwKQEAgLTE1MSw3ICsxNTAsNiBAQAogCSQodG9wX3NyY2RpcikvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3R3YXRlcnJpcHBsZS5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9pdmZwYXJzZS9nc3RpdmZwYXJzZS5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9qcGVnZm9ybWF0L2dzdGpwZWdwYXJzZS5oIFwKLQkkKHRvcF9zcmNkaXIpL2dzdC9saXZlYWRkZXIvbGl2ZWFkZGVyLmggXAogCSQodG9wX3NyY2RpcikvZ3N0L214Zi9teGZkZW11eC5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9teGYvbXhmbXV4LmggXAogCSQodG9wX3NyY2RpcikvZ3N0L251dmRlbXV4L2dzdG51dmRlbXV4LmggXApkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL01ha2VmaWxlLmluIGIvZG9jcy9wbHVnaW5zL01ha2VmaWxlLmluCmluZGV4IDExNzRhOTcuLmVkMWUzNmUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9NYWtlZmlsZS5pbgorKysgYi9kb2NzL3BsdWdpbnMvTWFrZWZpbGUuaW4KQEAgLTEzMSwxNiArMTMxLDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNjcsNiArMjY2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMDQsNiArMzA1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTIsNyArMzE1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzMxLDggKzMzMyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNDksMTYgKzM1MiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zODQsNiArMzg4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDA5LDYgKzQxNSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxMCw2ICs1MTgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTIzLDggKzUzMiw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0MCw2ICs1NDcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTk3LDE2ICs2MDYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NTgsNiArNjY5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY2OCw2ICs2ODAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NzcsNiArNjkwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcxNCw3ICs3MjksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTg3Miw3ICs4ODYsNiBAQAogCSQodG9wX3NyY2RpcikvZ3N0L2FpZmYvYWlmZnBhcnNlLmggXAogCSQodG9wX3NyY2RpcikvZ3N0L2FpZmYvYWlmZm11eC5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9hdXRvY29udmVydC9nc3RhdXRvY29udmVydC5oIFwKLQkkKHRvcF9zcmNkaXIpL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdGF1ZGlvdmlzdWFsaXplci5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwYWNlc2NvcGUuaCBcCiAJJCh0b3Bfc3JjZGlyKS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGVjdHJhc2NvcGUuaCBcCiAJJCh0b3Bfc3JjZGlyKS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzeW5hZXNjb3BlLmggXApAQCAtOTExLDcgKzkyNCw2IEBACiAJJCh0b3Bfc3JjZGlyKS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHdhdGVycmlwcGxlLmggXAogCSQodG9wX3NyY2RpcikvZ3N0L2l2ZnBhcnNlL2dzdGl2ZnBhcnNlLmggXAogCSQodG9wX3NyY2RpcikvZ3N0L2pwZWdmb3JtYXQvZ3N0anBlZ3BhcnNlLmggXAotCSQodG9wX3NyY2RpcikvZ3N0L2xpdmVhZGRlci9saXZlYWRkZXIuaCBcCiAJJCh0b3Bfc3JjZGlyKS9nc3QvbXhmL214ZmRlbXV4LmggXAogCSQodG9wX3NyY2RpcikvZ3N0L214Zi9teGZtdXguaCBcCiAJJCh0b3Bfc3JjZGlyKS9nc3QvbnV2ZGVtdXgvZ3N0bnV2ZGVtdXguaCBcCkBAIC0xNDg0LDcgKzE0OTYsNyBAQAogQEVOQUJMRV9HVEtfRE9DX1RSVUVAc2dtbC1idWlsZC5zdGFtcDogc2Nhbi1idWlsZC5zdGFtcCAkKENGSUxFX0dMT0IpICQodG9wX3NyY2RpcikvY29tbW9uL3BsdWdpbnMueHNsICQoZXhwYW5kX2NvbnRlbnRfZmlsZXMpCiBARU5BQkxFX0dUS19ET0NfVFJVRUAJQGVjaG8gJyAgRE9DICAgQnVpbGRpbmcgWE1MJwogQEVOQUJMRV9HVEtfRE9DX1RSVUVACUAtbWtkaXIgLXAgeG1sCi1ARU5BQkxFX0dUS19ET0NfVFJVRUAJQGZvciBhIGluICQoc3JjZGlyKS8kKElOU1BFQ1RfRElSKS8qLnhtbDsgZG8gXAorQEVOQUJMRV9HVEtfRE9DX1RSVUVACUBmb3IgYSBpbiAkKGluc3BlY3RfZmlsZXMpOyBkbyBcCiBARU5BQkxFX0dUS19ET0NfVFJVRUAJICAgIHhzbHRwcm9jIC0tc3RyaW5ncGFyYW0gbW9kdWxlICQoTU9EVUxFKSBcCiBARU5BQkxFX0dUS19ET0NfVFJVRUAJCSQodG9wX3NyY2RpcikvY29tbW9uL3BsdWdpbnMueHNsICQkYSA+IHhtbC9gYmFzZW5hbWUgJCRhYDsgZG9uZQogQEVOQUJMRV9HVEtfRE9DX1RSVUVACUBmb3IgZiBpbiAkKEVYQU1QTEVfQ0ZJTEVTKTsgZG8gXApkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRvY3Muc2dtbCBiL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kb2NzLnNnbWwKaW5kZXggNTEyNzhlOS4uNzEwY2VkNSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRvY3Muc2dtbAorKysgYi9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9jcy5zZ21sCkBAIC0yMSw2ICsyMSw3IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtYWlmZnBhcnNlLnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1haWZmbXV4LnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1hc3NyZW5kZXIueG1sIiAvPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LWF1ZGlvaW50ZXJsZWF2ZS54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtYXVkaW9taXhlci54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtYXV0b2NvbnZlcnQueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LWJzMmIueG1sIiAvPgpAQCAtNjgsMTYgKzY5LDEwIEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtbXBlZ3BzbXV4LnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1tcGVndHNtdXgueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LW1wbGV4LnhtbCIgLz4KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1tcGcxMjNhdWRpb2RlYy54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtbmVvbmh0dHBzcmMueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LW9mYS54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtb3BlbmFsc3JjLnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1vcGVuYWxzaW5rLnhtbCIgLz4KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1vcHVzZGVjLnhtbCIgLz4KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1vcHVzZW5jLnhtbCIgLz4KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1vcHVzcGFyc2UueG1sIiAvPgotICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LXJ0cG9wdXNwYXkueG1sIiAvPgotICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LXJ0cG9wdXNkZXBheS54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtcGNhcHBhcnNlLnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1waW5jaC54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtcHlyYW1pZHNlZ21lbnQueG1sIiAvPgpAQCAtMTMyLDcgKzEyNyw2IEBACiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3BsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0ueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9wbHVnaW4tZ3NtLnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvcGx1Z2luLWpwZWdmb3JtYXQueG1sIiAvPgotICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9wbHVnaW4tbGl2ZWFkZGVyLnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvcGx1Z2luLW1pbWljLnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvcGx1Z2luLW1tcy54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3BsdWdpbi1tb2RwbHVnLnhtbCIgLz4KQEAgLTE0NCw3ICsxMzgsNiBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9wbHVnaW4tb2ZhLnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvcGx1Z2luLW9wZW5hbC54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3BsdWdpbi1vcGVuY3YueG1sIiAvPgotICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9wbHVnaW4tb3B1cy54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3BsdWdpbi1wY2FwcGFyc2UueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9wbHVnaW4tcmF3cGFyc2UueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9wbHVnaW4tcmZic3JjLnhtbCIgLz4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zZWN0aW9ucy50eHQgYi9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2VjdGlvbnMudHh0CmluZGV4IDVlODY5YzguLjJjMTM2NWIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zZWN0aW9ucy50eHQKKysrIGIvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNlY3Rpb25zLnR4dApAQCAtNTYsNiArNTYsMjAgQEAKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5lbGVtZW50LWF1ZGlvaW50ZXJsZWF2ZTwvRklMRT4KKzxUSVRMRT5hdWRpb2ludGVybGVhdmU8L1RJVExFPgorR3N0QXVkaW9JbnRlcmxlYXZlCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK0dzdEF1ZGlvSW50ZXJsZWF2ZUNsYXNzCitHU1RfQVVESU9fSU5URVJMRUFWRQorR1NUX0FVRElPX0lOVEVSTEVBVkVfQ0xBU1MKK0dTVF9JU19BVURJT19JTlRFUkxFQVZFCitHU1RfSVNfQVVESU9fSU5URVJMRUFWRV9DTEFTUworR1NUX1RZUEVfQVVESU9fSU5URVJMRUFWRQorZ3N0X2F1ZGlvX2ludGVybGVhdmVfZ2V0X3R5cGUKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5lbGVtZW50LWF1ZGlvbWl4ZXI8L0ZJTEU+CiA8VElUTEU+YXVkaW9taXhlcjwvVElUTEU+CiBHc3RBdWRpb01peGVyCkBAIC03MjAsMTUgKzczNCw3IEBACiBHc3RMaXZlQWRkZXIKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogR3N0TGl2ZUFkZGVyQ2xhc3MKLUdTVF9JU19MSVZFX0FEREVSCi1HU1RfSVNfTElWRV9BRERFUl9DTEFTUwotR1NUX0lTX01YRl9ERU1VWF9QQUQKLUdTVF9MSVZFX0FEREVSCi1HU1RfTElWRV9BRERFUl9DTEFTUwotR1NUX0xJVkVfQURERVJfR0VUX0NMQVNTCiBHU1RfVFlQRV9MSVZFX0FEREVSCi1Hc3RMaXZlQWRkZXJGb3JtYXQKLUdzdExpdmVBZGRlckZ1bmN0aW9uCiBnc3RfbGl2ZV9hZGRlcl9nZXRfdHlwZQogPC9TRUNUSU9OPgogCkBAIC05ODMsMjAgKzk4OSw2IEBACiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgotPEZJTEU+ZWxlbWVudC1tcGcxMjNhdWRpb2RlYzwvRklMRT4KLTxUSVRMRT5tcGcxMjNhdWRpb2RlYzwvVElUTEU+Ci1Hc3RNcGcxMjNBdWRpb0RlYwotPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Ci1Hc3RNcGcxMjNBdWRpb0RlY0NsYXNzCi1HU1RfTVBHMTIzX0FVRElPX0RFQwotR1NUX01QRzEyM19BVURJT19ERUNfQ0xBU1MKLUdTVF9JU19NUEcxMjNfQVVESU9fREVDCi1HU1RfSVNfTVBHMTIzX0FVRElPX0RFQ19DTEFTUwotR1NUX1RZUEVfTVBHMTIzX0FVRElPX0RFQwotZ3N0X21wZzEyM19hdWRpb19kZWNfZ2V0X3R5cGUKLTwvU0VDVElPTj4KLQotPFNFQ1RJT04+CiA8RklMRT5lbGVtZW50LW14ZmRlbXV4PC9GSUxFPgogPFRJVExFPm14ZmRlbXV4PC9USVRMRT4KIEdzdE1YRkRlbXV4CkBAIC0xMDA4LDYgKzEwMDAsNyBAQAogR1NUX01YRl9ERU1VWF9DTEFTUwogR1NUX1RZUEVfTVhGX0RFTVVYCiBnc3RfbXhmX2RlbXV4X2dldF90eXBlCitHU1RfSVNfTVhGX0RFTVVYX1BBRAogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KQEAgLTExMDksNzEgKzExMDIsNiBAQAogZ3N0X29wZW5jdl90ZXh0X292ZXJsYXlfcGx1Z2luX2luaXQKIDwvU0VDVElPTj4KIAotPEZJTEU+ZWxlbWVudC1vcHVzZGVjPC9GSUxFPgotPFRJVExFPm9wdXNkZWM8L1RJVExFPgotR3N0T3B1c0RlYwotPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Ci1Hc3RPcHVzRGVjQ2xhc3MKLWdzdF9vcHVzX2RlY19nZXRfdHlwZQotR1NUX1RZUEVfT1BVU19ERUMKLUdTVF9PUFVTX0RFQwotR1NUX09QVVNfREVDX0NMQVNTCi1HU1RfSVNfT1BVU19ERUMKLUdTVF9JU19PUFVTX0RFQ19DTEFTUwotPC9TRUNUSU9OPgotCi08RklMRT5lbGVtZW50LW9wdXNlbmM8L0ZJTEU+Ci08VElUTEU+b3B1c2VuYzwvVElUTEU+Ci1Hc3RPcHVzRW5jCi08U1VCU0VDVElPTiBTdGFuZGFyZD4KLUdzdE9wdXNFbmNDbGFzcwotZ3N0X29wdXNfZW5jX2dldF90eXBlCi1HU1RfVFlQRV9PUFVTX0VOQwotR1NUX09QVVNfRU5DCi1HU1RfT1BVU19FTkNfQ0xBU1MKLUdTVF9JU19PUFVTX0VOQwotR1NUX0lTX09QVVNfRU5DX0NMQVNTCi08L1NFQ1RJT04+Ci0KLTxGSUxFPmVsZW1lbnQtb3B1c3BhcnNlPC9GSUxFPgotPFRJVExFPm9wdXNwYXJzZTwvVElUTEU+Ci1Hc3RPcHVzUGFyc2UKLTxTVUJTRUNUSU9OIFN0YW5kYXJkPgotR3N0T3B1c1BhcnNlQ2xhc3MKLWdzdF9vcHVzX3BhcnNlX2dldF90eXBlCi1HU1RfVFlQRV9PUFVTX1BBUlNFCi1HU1RfT1BVU19QQVJTRQotR1NUX09QVVNfUEFSU0VfQ0xBU1MKLUdTVF9JU19PUFVTX1BBUlNFCi1HU1RfSVNfT1BVU19QQVJTRV9DTEFTUwotPC9TRUNUSU9OPgotCi08RklMRT5lbGVtZW50LXJ0cG9wdXNkZXBheTwvRklMRT4KLTxUSVRMRT5ydHBvcHVzZGVwYXk8L1RJVExFPgotR3N0UlRQT3B1c0RlcGF5Ci08U1VCU0VDVElPTiBTdGFuZGFyZD4KLUdzdFJUUE9wdXNEZXBheUNsYXNzCi1nc3RfcnRwX29wdXNfZGVwYXlfZ2V0X3R5cGUKLUdTVF9UWVBFX1JUUF9PUFVTX0RFUEFZCi1HU1RfUlRQX09QVVNfREVQQVkKLUdTVF9SVFBfT1BVU19ERVBBWV9DTEFTUwotR1NUX0lTX1JUUF9PUFVTX0RFUEFZCi1HU1RfSVNfUlRQX09QVVNfREVQQVlfQ0xBU1MKLTwvU0VDVElPTj4KLQotPEZJTEU+ZWxlbWVudC1ydHBvcHVzcGF5PC9GSUxFPgotPFRJVExFPnJ0cG9wdXNwYXk8L1RJVExFPgotR3N0UnRwT1BVU1BheQotPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Ci1Hc3RSdHBPUFVTUGF5Q2xhc3MKLWdzdF9ydHBfb3B1c19wYXlfZ2V0X3R5cGUKLUdTVF9UWVBFX1JUUF9PUFVTX1BBWQotR1NUX1JUUF9PUFVTX1BBWQotR1NUX1JUUF9PUFVTX1BBWV9DTEFTUwotR1NUX0lTX1JUUF9PUFVTX1BBWQotR1NUX0lTX1JUUF9PUFVTX1BBWV9DTEFTUwotPC9TRUNUSU9OPgotCiA8U0VDVElPTj4KIDxGSUxFPmVsZW1lbnQtcGNhcHBhcnNlPC9GSUxFPgogPFRJVExFPnBjYXBwYXJzZTwvVElUTEU+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuYXJncyBiL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5hcmdzCmluZGV4IDgwMmE1NmYuLjBiZGJmYmQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5hcmdzCisrKyBiL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5hcmdzCkBAIC0xODc0OSw2ICsxODc0OSwzNiBAQAogPC9BUkc+CiAKIDxBUkc+Cis8TkFNRT5Hc3RWaWRlb1BhcnNlOjpmcmFtZXNpemU8L05BTUU+Cis8VFlQRT5ndWludDwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPkZyYW1lc2l6ZTwvTklDSz4KKzxCTFVSQj5TaXplIG9mIGFuIGltYWdlIGluIHJhdyBzdHJlYW0gKDA6IGRlZmF1bHQpLjwvQkxVUkI+Cis8REVGQVVMVD4wPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RWaWRlb1BhcnNlOjpvZmZzZXRzPC9OQU1FPgorPFRZUEU+Z2NoYXIqPC9UWVBFPgorPFJBTkdFPjwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+T2Zmc2V0czwvTklDSz4KKzxCTFVSQj5PZmZzZXQgb2YgZWFjaCBwbGFuZXMgaW4gYnl0ZXMgdXNpbmcgc3RyaW5nIGZvcm1hdDogJ28wLG8xLG8yLG8zJy48L0JMVVJCPgorPERFRkFVTFQ+TlVMTDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0VmlkZW9QYXJzZTo6c3RyaWRlczwvTkFNRT4KKzxUWVBFPmdjaGFyKjwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlN0cmlkZXM8L05JQ0s+Cis8QkxVUkI+U3RyaWRlIG9mIGVhY2ggcGxhbmVzIGluIGJ5dGVzIHVzaW5nIHN0cmluZyBmb3JtYXQ6ICdzMCxzMSxzMixzMycuPC9CTFVSQj4KKzxERUZBVUxUPk5VTEw8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KIDxOQU1FPkdzdE1ldGFkYXRhUGFyc2U6OmV4aWY8L05BTUU+CiA8VFlQRT5nYm9vbGVhbjwvVFlQRT4KIDxSQU5HRT48L1JBTkdFPgpAQCAtMjM5NTIsMTAgKzIzOTgyLDEwIEBACiA8TkFNRT5Hc3RMaXZlQWRkZXI6OmxhdGVuY3k8L05BTUU+CiA8VFlQRT5ndWludDwvVFlQRT4KIDxSQU5HRT48L1JBTkdFPgotPEZMQUdTPnJ3PC9GTEFHUz4KLTxOSUNLPkJ1ZmZlcmluZyBsYXRlbmN5PC9OSUNLPgotPEJMVVJCPkFtb3VudCBvZiBkYXRhIHRvIGJ1ZmZlciAoaW4gbWlsbGlzZWNvbmRzKS48L0JMVVJCPgotPERFRkFVTFQ+NjA8L0RFRkFVTFQ+Cis8RkxBR1M+cnd4PC9GTEFHUz4KKzxOSUNLPkJ1ZmZlciBsYXRlbmN5PC9OSUNLPgorPEJMVVJCPkFkZGl0aW9uYWwgbGF0ZW5jeSBpbiBsaXZlIG1vZGUgdG8gYWxsb3cgdXBzdHJlYW0gdG8gdGFrZSBsb25nZXIgdG8gcHJvZHVjZSBidWZmZXJzIGZvciB0aGUgY3VycmVudCBwb3NpdGlvbiAoaW4gbWlsbGlzZWNvbmRzKS48L0JMVVJCPgorPERFRkFVTFQ+MzA8L0RFRkFVTFQ+CiA8L0FSRz4KIAogPEFSRz4KQEAgLTQ2Mzg5LDE2ICs0NjQxOSw2IEBACiA8L0FSRz4KIAogPEFSRz4KLTxOQU1FPkdzdEdTZXR0aW5nc0F1ZGlvU2luazo6cHJvZmlsZTwvTkFNRT4KLTxUWVBFPkdzdEdTZXR0aW5nc0F1ZGlvU2lua1Byb2ZpbGU8L1RZUEU+Ci08UkFOR0U+PC9SQU5HRT4KLTxGTEFHUz5ydzwvRkxBR1M+Ci08TklDSz5Qcm9maWxlPC9OSUNLPgotPEJMVVJCPlByb2ZpbGUuPC9CTFVSQj4KLTxERUZBVUxUPlNvdW5kIEV2ZW50czwvREVGQVVMVD4KLTwvQVJHPgotCi08QVJHPgogPE5BTUU+R3N0c29sYXJpemU6OnNpbGVudDwvTkFNRT4KIDxUWVBFPmdib29sZWFuPC9UWVBFPgogPFJBTkdFPjwvUkFOR0U+CkBAIC00NzA3OSw2ICs0NzA5OSwxNiBAQAogPC9BUkc+CiAKIDxBUkc+Cis8TkFNRT5Hc3RDdlNvYmVsOjptYXNrPC9OQU1FPgorPFRZUEU+Z2Jvb2xlYW48L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5NYXNrPC9OSUNLPgorPEJMVVJCPlNldHMgd2hldGhlciB0aGUgZGV0ZWN0ZWQgZGVyaXZhdGl2ZSBlZGdlcyBzaG91bGQgYmUgdXNlZCBhcyBhIG1hc2sgb24gdGhlIG9yaWdpbmFsIGlucHV0IG9yIG5vdC48L0JMVVJCPgorPERFRkFVTFQ+VFJVRTwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgogPE5BTUU+R3N0Q3ZTbW9vdGg6OnBhcmFtMTwvTkFNRT4KIDxUWVBFPmdpbnQ8L1RZUEU+CiA8UkFOR0U+Pj0gMTwvUkFOR0U+CkBAIC00NzEzNCw3ICs0NzE2NCw3IEBACiA8UkFOR0U+Pj0gMDwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+Y29sb3IgKGdhdXNzaWFuIHN0YW5kYXJkIGRldmlhdGlvbiBvciBjb2xvciBzaWdtYTwvTklDSz4KLTxCTFVSQj5JZiB0eXBlIGlzIGdhdXNzaWFuLCB0aGlzIG1lYW5zIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24uSWYgdHlwZSBpcyBiaWxhdGVyYWwsIHRoaXMgbWVhbnMgdGhlIGNvbG9yLXNpZ21hLiBJZiB6ZXJvLCBEZWZhdWx0IHZhbHVlcyBhcmUgdXNlZC5DaGVjayBjdlNtb290aCBPcGVuQ1YgZG9jczogaHR0cDovL29wZW5jdi53aWxsb3dnYXJhZ2UuY29tL2RvY3VtZW50YXRpb24vaW1hZ2VfZmlsdGVyaW5nLmh0bWwjY3ZTbW9vdGguPC9CTFVSQj4KKzxCTFVSQj5JZiB0eXBlIGlzIGdhdXNzaWFuLCB0aGlzIG1lYW5zIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24uSWYgdHlwZSBpcyBiaWxhdGVyYWwsIHRoaXMgbWVhbnMgdGhlIGNvbG9yLXNpZ21hLiBJZiB6ZXJvLCBEZWZhdWx0IHZhbHVlcyBhcmUgdXNlZC48L0JMVVJCPgogPERFRkFVTFQ+MDwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC00NzE0Myw5ICs0NzE3Myw5IEBACiA8VFlQRT5naW50PC9UWVBFPgogPFJBTkdFPj49IDA8L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KLTxOSUNLPmhlaWdodCAoYXBlcnR1cmUgaGVpZ2h0KTwvTklDSz4KLTxCTFVSQj5UaGUgYXBlcnR1cmUgaGVpZ2h0LCBpZiB6ZXJvLCB0aGUgd2lkdGggaXMgdXNlZC4oTXVzdCBiZSBwb3NpdGl2ZSBhbmQgb2RkIG9yIHplcm8sIHVudXNldCBpbiBtZWRpYW4gYW5kIGJpbGF0ZXJhbCB0eXBlcykuIENoZWNrIGN2U21vb3RoIE9wZW5DViBkb2NzOiBodHRwOi8vb3BlbmN2LndpbGxvd2dhcmFnZS5jb20vZG9jdW1lbnRhdGlvbi9pbWFnZV9maWx0ZXJpbmcuaHRtbCNjdlNtb290aC48L0JMVVJCPgotPERFRkFVTFQ+MDwvREVGQVVMVD4KKzxOSUNLPmhlaWdodCAoa2VybmVsIGhlaWdodCk8L05JQ0s+Cis8QkxVUkI+VGhlIGdhdXNzaWFuIGtlcm5lbCBoZWlnaHQgKG11c3QgYmUgcG9zaXRpdmUgYW5kIG9kZCkuPC9CTFVSQj4KKzxERUZBVUxUPjM8L0RFRkFVTFQ+CiA8L0FSRz4KIAogPEFSRz4KQEAgLTQ3MTU0LDcgKzQ3MTg0LDcgQEAKIDxSQU5HRT4+PSAwPC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+CiA8TklDSz5zcGF0aWFsIChzcGF0aWFsIHNpZ21hLCBiaWxhdGVyYWwgb25seSk8L05JQ0s+Ci08QkxVUkI+T25seSB1c2VkIGluIGJpbGF0ZXJhbCB0eXBlLCBtZWFucyB0aGUgc3BhdGlhbC1zaWdtYS5DaGVjayBjdlNtb290aCBPcGVuQ1YgZG9jczogaHR0cDovL29wZW5jdi53aWxsb3dnYXJhZ2UuY29tL2RvY3VtZW50YXRpb24vaW1hZ2VfZmlsdGVyaW5nLmh0bWwjY3ZTbW9vdGguPC9CTFVSQj4KKzxCTFVSQj5Pbmx5IHVzZWQgaW4gYmlsYXRlcmFsIHR5cGUsIG1lYW5zIHRoZSBzcGF0aWFsLXNpZ21hLjwvQkxVUkI+CiA8REVGQVVMVD4wPC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTQ3MTYzLDggKzQ3MTkzLDggQEAKIDxUWVBFPmdpbnQ8L1RZUEU+CiA8UkFOR0U+Pj0gMTwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgotPE5JQ0s+d2lkdGggKGFwZXJ0dXJlIHdpZHRoKTwvTklDSz4KLTxCTFVSQj5UaGUgYXBlcnR1cmUgd2lkdGggKE11c3QgYmUgcG9zaXRpdmUgYW5kIG9kZCkuQ2hlY2sgY3ZTbW9vdGggT3BlbkNWIGRvY3M6IGh0dHA6Ly9vcGVuY3Yud2lsbG93Z2FyYWdlLmNvbS9kb2N1bWVudGF0aW9uL2ltYWdlX2ZpbHRlcmluZy5odG1sI2N2U21vb3RoLjwvQkxVUkI+Cis8TklDSz53aWR0aCAoa2VybmVsIHdpZHRoKTwvTklDSz4KKzxCTFVSQj5UaGUgZ2F1c3NpYW4ga2VybmVsIHdpZHRoIChtdXN0IGJlIHBvc2l0aXZlIGFuZCBvZGQpLklmIHR5cGUgaXMgbWVkaWFuLCB0aGlzIG1lYW5zIHRoZSBhcGVydHVyZSBsaW5lYXIgc2l6ZS5DaGVjayBPcGVuQ1YgZG9jczogaHR0cDovL2RvY3Mub3BlbmN2Lm9yZy8yLjQvbW9kdWxlcy9pbWdwcm9jL2RvYy9maWx0ZXJpbmcuaHRtLjwvQkxVUkI+CiA8REVGQVVMVD4zPC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTQ3MTc5LDYgKzQ3MjA5LDM2IEBACiA8L0FSRz4KIAogPEFSRz4KKzxOQU1FPkdzdEN2TGFwbGFjZTo6c2NhbGU8L05BTUU+Cis8VFlQRT5nZG91YmxlPC9UWVBFPgorPFJBTkdFPj49IDA8L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPnNjYWxlIGZhY3RvcjwvTklDSz4KKzxCTFVSQj5TY2FsZSBmYWN0b3IuPC9CTFVSQj4KKzxERUZBVUxUPjE8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdEN2TGFwbGFjZTo6c2hpZnQ8L05BTUU+Cis8VFlQRT5nZG91YmxlPC9UWVBFPgorPFJBTkdFPj49IDA8L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlNoaWZ0PC9OSUNLPgorPEJMVVJCPlZhbHVlIGFkZGVkIHRvIHRoZSBzY2FsZWQgc291cmNlIGFycmF5IGVsZW1lbnRzLjwvQkxVUkI+Cis8REVGQVVMVD4wPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RDdkxhcGxhY2U6Om1hc2s8L05BTUU+Cis8VFlQRT5nYm9vbGVhbjwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPk1hc2s8L05JQ0s+Cis8QkxVUkI+U2V0cyB3aGV0aGVyIHRoZSBkZXRlY3RlZCBlZGdlcyBzaG91bGQgYmUgdXNlZCBhcyBhIG1hc2sgb24gdGhlIG9yaWdpbmFsIGlucHV0IG9yIG5vdC48L0JMVVJCPgorPERFRkFVTFQ+VFJVRTwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgogPE5BTUU+R3N0Um90YXRlOjphbmdsZTwvTkFNRT4KIDxUWVBFPmdkb3VibGU8L1RZUEU+CiA8UkFOR0U+PC9SQU5HRT4KQEAgLTU4NDg0LDcgKzU4NTQ0LDcgQEAKIDxSQU5HRT48L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPlVzZSBpbi1iYW5kIEZFQzwvTklDSz4KLTxCTFVSQj5Vc2UgZm9yd2FyZCBlcnJvciBjb3JyZWN0aW9uIGlmIGF2YWlsYWJsZS48L0JMVVJCPgorPEJMVVJCPlVzZSBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24gaWYgYXZhaWxhYmxlIChuZWVkcyBQTEMgZW5hYmxlZCkuPC9CTFVSQj4KIDxERUZBVUxUPkZBTFNFPC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTU4NjU0LDcgKzU4NzE0LDcgQEAKIDxSQU5HRT48L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPkNhbGN1bGF0ZSBNb3Rpb248L05JQ0s+Ci08QkxVUkI+SWYgbmVlZHMgY2FsY3VsYXRlIG1vdGlvbiBvbiBmcmFtZSB5b3UgbmVlZCB0aGlzIHByb3BlcnR5IHNldHRpbmcgdHJ1ZSBvdGhlcndpc2UgZmFsc2UuPC9CTFVSQj4KKzxCTFVSQj5Ub2dnbGVzIG1vdGlvbiBjYWxjdWxhdGlvbi4gSWYgRkFMU0UsIHRoaXMgZmlsdGVyIGRvZXMgbm90aGluZy48L0JMVVJCPgogPERFRkFVTFQ+VFJVRTwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC01ODY2NCw3ICs1ODcyNCw3IEBACiA8UkFOR0U+PC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+CiA8TklDSz5Db2xvciBvZiBNb3Rpb24gQ2VsbHM8L05JQ0s+Ci08QkxVUkI+VGhlIGNvbG9yIG9mIG1vdGlvbiBjZWxscyBzZXBhcmF0ZWQgd2l0aCAiLCIuPC9CTFVSQj4KKzxCTFVSQj5Db2xvciBmb3IgbW90aW9uIGNlbGxzIGluIFIsRyxCIGZvcm1hdC4gTWF4IHBlciBjaGFubmVsIGlzIDI1NS48L0JMVVJCPgogPERFRkFVTFQ+IjI1NSwyNTUsMCI8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTg2OTQsNyArNTg3NTQsNyBAQAogPFJBTkdFPjwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+RGlzcGxheTwvTklDSz4KLTxCTFVSQj5Nb3Rpb24gQ2VsbHMgdmlzaWJsZSBvciBub3Qgb24gQ3VycmVudCBGcmFtZS48L0JMVVJCPgorPEJMVVJCPlRvZ2dsZSBkaXNwbGF5IG9mIG1vdGlvbiBjZWxscyBvbiBjdXJyZW50IGZyYW1lLjwvQkxVUkI+CiA8REVGQVVMVD5GQUxTRTwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC01ODcwMyw4ICs1ODc2Myw4IEBACiA8VFlQRT5naW50PC9UWVBFPgogPFJBTkdFPlsxLDYwXTwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgotPE5JQ0s+R2FwIGlzIHRpbWUgaW4gc2Vjb25kLCBlbGFwc2VkIHRpbWUgZnJvbSBsYXN0IG1vdGlvbiB0aW1lc3RhbXAuIDwvTklDSz4KLTxCTFVSQj5JZiBlbGFwc2VkIHRpbWUgbWludXMgZm9ybSBsYXN0IG1vdGlvbiB0aW1lc3RhbXAgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIGdhcCB0aGVuIHdlIHBvc3QgbW90aW9uIGZpbmlzaGVkIGJ1cyBtZXNzYWdlLiAuPC9CTFVSQj4KKzxOSUNLPk1vdGlvbi1maW5pc2hlZCBUaHJlc2hvbGQ8L05JQ0s+Cis8QkxVUkI+SW50ZXJ2YWwgaW4gc2Vjb25kcyBhZnRlciB3aGljaCBtb3Rpb24gaXMgY29uc2lkZXJlZCBmaW5pc2hlZCBhbmQgYSBtb3Rpb24gZmluaXNoZWQgYnVzIG1lc3NhZ2UgaXMgcG9zdGVkLjwvQkxVUkI+CiA8REVGQVVMVD41PC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTU4NzE0LDcgKzU4Nzc0LDcgQEAKIDxSQU5HRT5bOCwzMl08L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPk51bWJlciBvZiBIb3Jpem9udGFsIEdyaWRzPC9OSUNLPgotPEJMVVJCPllvdSBjYW4gZ2l2ZSBudW1iZXIgb2YgaG9yaXpvbnRhbCBncmlkIGNlbGxzLjwvQkxVUkI+Cis8QkxVUkI+TnVtYmVyIG9mIGhvcml6b250YWwgZ3JpZCBjZWxscy48L0JMVVJCPgogPERFRkFVTFQ+MTA8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTg3MjQsNyArNTg3ODQsNyBAQAogPFJBTkdFPls4LDMyXTwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+TnVtYmVyIG9mIFZlcnRpY2FsIEdyaWRzPC9OSUNLPgotPEJMVVJCPllvdSBjYW4gZ2l2ZSBudW1iZXIgb2YgdmVydGljYWwgZ3JpZCBjZWxscy48L0JMVVJCPgorPEJMVVJCPk51bWJlciBvZiB2ZXJ0aWNhbCBncmlkIGNlbGxzLjwvQkxVUkI+CiA8REVGQVVMVD4xMDwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC01ODczMyw4ICs1ODc5Myw4IEBACiA8VFlQRT5naW50PC9UWVBFPgogPFJBTkdFPlsxLDYwXTwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgotPE5JQ0s+TUlOSU1VTiBNT1RJT04gRlJBTUVTPC9OSUNLPgotPEJMVVJCPkRlZmluZSB0aGUgbWluaW11bSBudW1iZXIgb2YgbW90aW9uIGZyYW1lcyB0aGF0IHRyaWdnZXIgYSBtb3Rpb24gZXZlbnQuPC9CTFVSQj4KKzxOSUNLPk1pbmltdW0gTW90aW9uIEZyYW1lczwvTklDSz4KKzxCTFVSQj5NaW5pbXVtIG51bWJlciBvZiBtb3Rpb24gZnJhbWVzIHRyaWdnZXJpbmcgYSBtb3Rpb24gZXZlbnQuPC9CTFVSQj4KIDxERUZBVUxUPjE8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTg3NDQsNyArNTg4MDQsNyBAQAogPFJBTkdFPjwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+TW90aW9uIENlbGxzIE9mIEludGVyZXN0KE1PQ0kpPC9OSUNLPgotPEJMVVJCPlRoZSBsaW5lIGFuZCBjb2x1bW4gaWR4IHNlcGFyYXRlZCB3aXRoICI6IiwgZGVzY3JpYmUgYSBjZWxsLiBDZWxscyBzZXBhcmF0ZWQgd2l0aCAiLCIuPC9CTFVSQj4KKzxCTFVSQj5EZXNjcmliZSBhIGNlbGwgd2l0aCBpdHMgbGluZSBhbmQgY29sdW1uIGlkeCBzZXBhcmF0ZWQgd2l0aCAiOiIuIFBhc3MgbXVsdGlwbGUgY2VsbHMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC48L0JMVVJCPgogPERFRkFVTFQ+TlVMTDwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC01ODc1NCw3ICs1ODgxNCw3IEBACiA8UkFOR0U+W0dfTUFYVUxPTkcsNV08L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPk1vdGlvbiBDZWxsIFRoaWNrbmVzczwvTklDSz4KLTxCTFVSQj5Nb3Rpb24gQ2VsbCBCb3JkZXIgVGhpY2tuZXNzLCBpZiBpdCdzIC0xIHRoZW4gbW90aW9uIGNlbGwgd2lsbCBiZSBmaWxsLjwvQkxVUkI+Cis8QkxVUkI+TW90aW9uIENlbGwgQm9yZGVyIFRoaWNrbmVzcy4gU2V0IHRvIC0xIHRvIGZpbGwgbW90aW9uIGNlbGwuPC9CTFVSQj4KIDxERUZBVUxUPjE8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTg3NjQsNyArNTg4MjQsNyBAQAogPFJBTkdFPjwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+TW90aW9uIE1hc2sgd2l0aCBDZWxscyBQb3NpdGlvbjwvTklDSz4KLTxCTFVSQj5UaGUgbGluZSBhbmQgY29sdW1uIGlkeCBzZXBhcmF0ZWQgd2l0aCAiOiIgd2hhdCBjZWxscyB3YW50IHdlIG1hc2stb3V0LCBkZXNjcmliZSBhIGNlbGwuIENlbGxzIHNlcGFyYXRlZCB3aXRoICIsIi48L0JMVVJCPgorPEJMVVJCPkRlc2NyaWJlIGEgY2VsbCB3aXRoIGl0cyBsaW5lIGFuZCBjb2x1bW4gaWR4IHNlcGFyYXRlZCB3aXRoICI6Ii4gUGFzcyBtdWx0aXBsZSBjZWxscyBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LjwvQkxVUkI+CiA8REVGQVVMVD5OVUxMPC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTU4Nzc0LDcgKzU4ODM0LDcgQEAKIDxSQU5HRT48L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPk1vdGlvbiBNYXNrIHdpdGggQ29vcmRpbmF0ZXM8L05JQ0s+Ci08QkxVUkI+VGhlIHVwcGVyIGxlZnQgeCwgeSBhbmQgbG93ZXIgcmlnaHQgeCwgeSBjb29yZGluYXRlcyBzZXBhcmF0ZWQgd2l0aCAiOiIsIGRlc2NyaWJlIGEgcmVnaW9uLiBSZWdpb25zIHNlcGFyYXRlZCB3aXRoICIsIi48L0JMVVJCPgorPEJMVVJCPkRlc2NyaWJlIGEgcmVnaW9uIHdpdGggaXRzIHVwcGVyIGxlZnQgYW5kIGxvd2VyIHJpZ2h0IHgsIHkgY29vcmRpbmF0ZXMgc2VwYXJhdGVkIHdpdGggIjoiLiBQYXNzIG11bHRpcGxlIHJlZ2lvbnMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC48L0JMVVJCPgogPERFRkFVTFQ+TlVMTDwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC01ODc4NCw3ICs1ODg0NCw3IEBACiA8UkFOR0U+PC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+CiA8TklDSz5Qb3N0IEFsbCBNb3Rpb248L05JQ0s+Ci08QkxVUkI+RWxlbWVudCBwb3N0IGJ1cyBtc2cgZm9yIGV2ZXJ5IG1vdGlvbiBmcmFtZSBvciBqdXN0IG1vdGlvbiBzdGFydCBhbmQgbW90aW9uIHN0b3AuPC9CTFVSQj4KKzxCTFVSQj5Qb3N0IGJ1cyBtZXNzYWdlcyBmb3IgZXZlcnkgbW90aW9uIGZyYW1lIG9yIGp1c3QgbW90aW9uIHN0YXJ0IGFuZCBtb3Rpb24gc3RvcC48L0JMVVJCPgogPERFRkFVTFQ+RkFMU0U8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTg3OTMsOCArNTg4NTMsOCBAQAogPFRZUEU+Z2ludDwvVFlQRT4KIDxSQU5HRT5bMCwxODBdPC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+Ci08TklDSz5QT1NUTk9NT1RJT048L05JQ0s+Ci08QkxVUkI+SWYgbm9uIDAgcG9zdCBhIG5vX21vdGlvbiBldmVudCBpcyBwb3N0ZWQgb24gdGhlIGJ1cyBpZiBubyBtb3Rpb24gaXMgZGV0ZWN0ZWQgZm9yIE4gc2Vjb25kcy48L0JMVVJCPgorPE5JQ0s+Tm8tbW90aW9uIFRocmVzaG9sZDwvTklDSz4KKzxCTFVSQj5JZiBub24gMCwgcG9zdCBhIG5vX21vdGlvbiBldmVudCBvbiB0aGUgYnVzIGlmIG5vIG1vdGlvbiBpcyBkZXRlY3RlZCBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzLjwvQkxVUkI+CiA8REVGQVVMVD4wPC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTU4ODA0LDcgKzU4ODY0LDcgQEAKIDxSQU5HRT5bMCwxXTwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+TW90aW9uIFNlbnNpdGl2aXR5PC9OSUNLPgotPEJMVVJCPllvdSBjYW4gdHVubmluZyB0aGUgZWxlbWVudCBtb3Rpb24gc2Vuc2l0aXZpdHkuPC9CTFVSQj4KKzxCTFVSQj5Nb3Rpb24gZGV0ZWN0aW9uIHNlbnNpdGl2aXR5LjwvQkxVUkI+CiA8REVGQVVMVD4wLjU8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTg4MTQsNyArNTg4NzQsNyBAQAogPFJBTkdFPlswLDFdPC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+CiA8TklDSz5Mb3dlciBib3VuZCBvZiBtb3Rpb24gY2VsbHMgbnVtYmVyPC9OSUNLPgotPEJMVVJCPlRocmVzaG9sZCB2YWx1ZSBmb3IgbW90aW9uLCB3aGVuIG1vdGlvbiBjZWxscyBudW1iZXIgZ3JlYXRlciBzdW0gY2VsbHMgKiB0aHJlc2hvbGQsIHdlIHNob3cgbW90aW9uLjwvQkxVUkI+Cis8QkxVUkI+VGhyZXNob2xkIHZhbHVlIGZvciBtb3Rpb24uIEZpbHRlciBkZXRlY3RzIG1vdGlvbiB3aGVuIGF0IGxlYXN0IHRoaXMgZnJhY3Rpb24gb2YgdGhlIGNlbGxzIGhhdmUgbW92ZWQuPC9CTFVSQj4KIDxERUZBVUxUPjAuMDE8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTg4MjQsNyArNTg4ODQsNyBAQAogPFJBTkdFPjwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+VXNlIGFscGhhPC9OSUNLPgotPEJMVVJCPlVzZSBvciBub3QgYWxwaGEgYmxlbmRpbmcgb24gZnJhbWVzIHdpdGggbW90aW9uIGNlbGxzLjwvQkxVUkI+Cis8QkxVUkI+VG9nZ2xlIHVzYWdlIG9mIGFscGhhIGJsZW5kaW5nIG9uIGZyYW1lcyB3aXRoIG1vdGlvbiBjZWxscy48L0JMVVJCPgogPERFRkFVTFQ+VFJVRTwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC01OTkzOSw2ICs1OTk5OSwxNiBAQAogPC9BUkc+CiAKIDxBUkc+Cis8TkFNRT5Hc3REYXNoRGVtdXg6OnByZXNlbnRhdGlvbi1kZWxheTwvTkFNRT4KKzxUWVBFPmdjaGFyKjwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlByZXNlbnRhdGlvbiBkZWxheTwvTklDSz4KKzxCTFVSQj5EZWZhdWx0IHByZXNlbnRhdGlvbiBkZWxheSAoaW4gc2Vjb25kcywgbWlsbGlzZWNvbmRzIG9yIGZyYWdtZW50cykgKGUuZy4gMTJzLCAyNTAwbXMsIDNmKS48L0JMVVJCPgorPERFRkFVTFQ+TlVMTDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgogPE5BTUU+R3N0U2tpbkRldGVjdDo6bWV0aG9kPC9OQU1FPgogPFRZUEU+R3N0U2tpbmRldGVjdE1ldGhvZDwvVFlQRT4KIDxSQU5HRT48L1JBTkdFPgpAQCAtNTk5ODAsOCArNjAwNTAsOCBAQAogCiA8QVJHPgogPE5BTUU+R3N0SGFuZGRldGVjdDo6Uk9JLUhFSUdIVDwvTkFNRT4KLTxUWVBFPmd1aW50PC9UWVBFPgotPFJBTkdFPjwvUkFOR0U+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPj49IDA8L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPlJPSV9IRUlHSFQ8L05JQ0s+CiA8QkxVUkI+SEVJR0hUIG9mIGxlZnQtdG9wIHBvaW50ZXIgaW4gcmVnaW9uIG9mIGludGVyZXN0IApAQCAtNTk5OTEsOCArNjAwNjEsOCBAQAogCiA8QVJHPgogPE5BTUU+R3N0SGFuZGRldGVjdDo6Uk9JLVdJRFRIPC9OQU1FPgotPFRZUEU+Z3VpbnQ8L1RZUEU+Ci08UkFOR0U+PC9SQU5HRT4KKzxUWVBFPmdpbnQ8L1RZUEU+Cis8UkFOR0U+Pj0gMDwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+Uk9JX1dJRFRIPC9OSUNLPgogPEJMVVJCPldJRFRIIG9mIGxlZnQtdG9wIHBvaW50ZXIgaW4gcmVnaW9uIG9mIGludGVyZXN0IApAQCAtNjAwMDIsOCArNjAwNzIsOCBAQAogCiA8QVJHPgogPE5BTUU+R3N0SGFuZGRldGVjdDo6Uk9JLVg8L05BTUU+Ci08VFlQRT5ndWludDwvVFlQRT4KLTxSQU5HRT48L1JBTkdFPgorPFRZUEU+Z2ludDwvVFlQRT4KKzxSQU5HRT4+PSAwPC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+CiA8TklDSz5ST0lfWDwvTklDSz4KIDxCTFVSQj5YIG9mIGxlZnQtdG9wIHBvaW50ZXIgaW4gcmVnaW9uIG9mIGludGVyZXN0IApAQCAtNjAwMTMsOCArNjAwODMsOCBAQAogCiA8QVJHPgogPE5BTUU+R3N0SGFuZGRldGVjdDo6Uk9JLVk8L05BTUU+Ci08VFlQRT5ndWludDwvVFlQRT4KLTxSQU5HRT48L1JBTkdFPgorPFRZUEU+Z2ludDwvVFlQRT4KKzxSQU5HRT4+PSAwPC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+CiA8TklDSz5ST0lfWTwvTklDSz4KIDxCTFVSQj5ZIG9mIGxlZnQtdG9wIHBvaW50ZXIgaW4gcmVnaW9uIG9mIGludGVyZXN0IApAQCAtNjcwNjMsNiArNjcxMzMsNTYgQEAKIDwvQVJHPgogCiA8QVJHPgorPE5BTUU+R3N0R0xGaWx0ZXJTaGFkZXI6OmZyYWdtZW50PC9OQU1FPgorPFRZUEU+Z2NoYXIqPC9UWVBFPgorPFJBTkdFPjwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+RnJhZ21lbnQgU291cmNlPC9OSUNLPgorPEJMVVJCPkdMU0wgZnJhZ21lbnQgc291cmNlLjwvQkxVUkI+Cis8REVGQVVMVD5OVUxMPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RHTEZpbHRlclNoYWRlcjo6c2hhZGVyPC9OQU1FPgorPFRZUEU+R3N0R0xTaGFkZXIqPC9UWVBFPgorPFJBTkdFPjwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+U2hhZGVyIG9iamVjdDwvTklDSz4KKzxCTFVSQj5Hc3RHTFNoYWRlciB0byB1c2UuPC9CTFVSQj4KKzxERUZBVUxUPjwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0R0xGaWx0ZXJTaGFkZXI6OnVuaWZvcm1zPC9OQU1FPgorPFRZUEU+R3N0U3RydWN0dXJlKjwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPkdMU0wgVW5pZm9ybXM8L05JQ0s+Cis8QkxVUkI+R0xTTCBVbmlmb3Jtcy48L0JMVVJCPgorPERFRkFVTFQ+PC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RHTEZpbHRlclNoYWRlcjo6dXBkYXRlLXNoYWRlcjwvTkFNRT4KKzxUWVBFPmdib29sZWFuPC9UWVBFPgorPFJBTkdFPjwvUkFOR0U+Cis8RkxBR1M+dzwvRkxBR1M+Cis8TklDSz5VcGRhdGUgU2hhZGVyPC9OSUNLPgorPEJMVVJCPkVtaXQgdGhlICdjcmVhdGUtc2hhZGVyJyBzaWduYWwgZm9yIHRoZSBuZXh0IGZyYW1lLjwvQkxVUkI+Cis8REVGQVVMVD5GQUxTRTwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0R0xGaWx0ZXJTaGFkZXI6OnZlcnRleDwvTkFNRT4KKzxUWVBFPmdjaGFyKjwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlZlcnRleCBTb3VyY2U8L05JQ0s+Cis8QkxVUkI+R0xTTCB2ZXJ0ZXggc291cmNlLjwvQkxVUkI+Cis8REVGQVVMVD5OVUxMPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+CiA8TkFNRT5Hc3RHTE92ZXJsYXk6OmFuZ2xlLXBuZzwvTkFNRT4KIDxUWVBFPmdpbnQ8L1RZUEU+CiA8UkFOR0U+Wy05MCw5MF08L1JBTkdFPgpAQCAtNjgwMzEsNiArNjgxNTEsNDYgQEAKIDwvQVJHPgogCiA8QVJHPgorPE5BTUU+R3N0R0xTaW5rQmluOjpicmlnaHRuZXNzPC9OQU1FPgorPFRZUEU+Z2RvdWJsZTwvVFlQRT4KKzxSQU5HRT5bLTEsMV08L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPkJyaWdodG5lc3M8L05JQ0s+Cis8QkxVUkI+YnJpZ2h0bmVzcy48L0JMVVJCPgorPERFRkFVTFQ+MDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0R0xTaW5rQmluOjpjb250cmFzdDwvTkFNRT4KKzxUWVBFPmdkb3VibGU8L1RZUEU+Cis8UkFOR0U+WzAsMl08L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPkNvbnRyYXN0PC9OSUNLPgorPEJMVVJCPmNvbnRyYXN0LjwvQkxVUkI+Cis8REVGQVVMVD4xPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RHTFNpbmtCaW46Omh1ZTwvTkFNRT4KKzxUWVBFPmdkb3VibGU8L1RZUEU+Cis8UkFOR0U+Wy0xLDFdPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5IdWU8L05JQ0s+Cis8QkxVUkI+aHVlLjwvQkxVUkI+Cis8REVGQVVMVD4wPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RHTFNpbmtCaW46OnNhdHVyYXRpb248L05BTUU+Cis8VFlQRT5nZG91YmxlPC9UWVBFPgorPFJBTkdFPlswLDJdPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5TYXR1cmF0aW9uPC9OSUNLPgorPEJMVVJCPnNhdHVyYXRpb24uPC9CTFVSQj4KKzxERUZBVUxUPjE8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KIDxOQU1FPkdzdEdMTWl4ZXJCaW46OmxhdGVuY3k8L05BTUU+CiA8VFlQRT5naW50NjQ8L1RZUEU+CiA8UkFOR0U+Pj0gMDwvUkFOR0U+CkBAIC02ODk0MCwzICs2OTEwMCwyNjMgQEAKIDxERUZBVUxUPjEyODwvREVGQVVMVD4KIDwvQVJHPgogCis8QVJHPgorPE5BTUU+R3N0VGVsZXRleHREZWM6OmZvbnQtZGVzY3JpcHRpb248L05BTUU+Cis8VFlQRT5nY2hhcio8L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5QYW5nbyBmb250IGRlc2NyaXB0aW9uPC9OSUNLPgorPEJMVVJCPkZvbnQgZGVzY3JpcHRpb24gdXNlZCBmb3IgdGhlIHBhbmdvIG91dHB1dC48L0JMVVJCPgorPERFRkFVTFQ+InZlcmRhbmEgMTIiPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RUZWxldGV4dERlYzo6cGFnZTwvTkFNRT4KKzxUWVBFPmdpbnQ8L1RZUEU+Cis8UkFOR0U+WzEwMCw5OTldPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5QYWdlIG51bWJlcjwvTklDSz4KKzxCTFVSQj5OdW1iZXIgb2YgcGFnZSB0aGF0IHNob3VsZCBkaXNwbGF5ZWQuPC9CTFVSQj4KKzxERUZBVUxUPjEwMDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0VGVsZXRleHREZWM6OnN1YnBhZ2U8L05BTUU+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPltHX01BWFVMT05HLDE1M108L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlN1Yi1wYWdlIG51bWJlcjwvTklDSz4KKzxCTFVSQj5OdW1iZXIgb2Ygc3ViLXBhZ2UgdGhhdCBzaG91bGQgZGlzcGxheWVkICgtMSBmb3IgYWxsKS48L0JMVVJCPgorPERFRkFVTFQ+LTE8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdFRlbGV0ZXh0RGVjOjpzdWJ0aXRsZXMtbW9kZTwvTkFNRT4KKzxUWVBFPmdib29sZWFuPC9UWVBFPgorPFJBTkdFPjwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+RW5hYmxlIHN1YnRpdGxlcyBtb2RlPC9OSUNLPgorPEJMVVJCPkVuYWJsZXMgc3VidGl0bGVzIG1vZGUgZm9yIHRleHQgb3V0cHV0IHN0cmlwcGluZyB0aGUgYmxhbmsgbGluZXMgYW5kIHRoZSB0ZWxldGV4dCBzdGF0ZSBsaW5lcy48L0JMVVJCPgorPERFRkFVTFQ+RkFMU0U8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdFRlbGV0ZXh0RGVjOjpzdWJ0aXRsZXMtdGVtcGxhdGU8L05BTUU+Cis8VFlQRT5nY2hhcio8L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5TdWJ0aXRsZXMgb3V0cHV0IHRlbXBsYXRlPC9OSUNLPgorPEJMVVJCPk91dHB1dCB0ZW1wbGF0ZSB1c2VkIHRvIHByaW50IGVhY2ggb25lIG9mIHRoZSBzdWJ0aXRsZXMgbGluZXMuPC9CTFVSQj4KKzxERUZBVUxUPiIlc1xcbiI8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdE5ldFNpbTo6ZGVsYXktcHJvYmFiaWxpdHk8L05BTUU+Cis8VFlQRT5nZmxvYXQ8L1RZUEU+Cis8UkFOR0U+WzAsMV08L1JBTkdFPgorPEZMQUdTPnJ3eDwvRkxBR1M+Cis8TklDSz5EZWxheSBQcm9iYWJpbGl0eTwvTklDSz4KKzxCTFVSQj5UaGUgUHJvYmFiaWxpdHkgYSBidWZmZXIgaXMgZGVsYXllZC48L0JMVVJCPgorPERFRkFVTFQ+MDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0TmV0U2ltOjpkcm9wLXBhY2tldHM8L05BTUU+Cis8VFlQRT5ndWludDwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3eDwvRkxBR1M+Cis8TklDSz5Ecm9wIFBhY2tldHM8L05JQ0s+Cis8QkxVUkI+RHJvcCB0aGUgbmV4dCBuIHBhY2tldHMuPC9CTFVSQj4KKzxERUZBVUxUPjA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdE5ldFNpbTo6ZHJvcC1wcm9iYWJpbGl0eTwvTkFNRT4KKzxUWVBFPmdmbG9hdDwvVFlQRT4KKzxSQU5HRT5bMCwxXTwvUkFOR0U+Cis8RkxBR1M+cnd4PC9GTEFHUz4KKzxOSUNLPkRyb3AgUHJvYmFiaWxpdHk8L05JQ0s+Cis8QkxVUkI+VGhlIFByb2JhYmlsaXR5IGEgYnVmZmVyIGlzIGRyb3BwZWQuPC9CTFVSQj4KKzxERUZBVUxUPjA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdE5ldFNpbTo6ZHVwbGljYXRlLXByb2JhYmlsaXR5PC9OQU1FPgorPFRZUEU+Z2Zsb2F0PC9UWVBFPgorPFJBTkdFPlswLDFdPC9SQU5HRT4KKzxGTEFHUz5yd3g8L0ZMQUdTPgorPE5JQ0s+RHVwbGljYXRlIFByb2JhYmlsaXR5PC9OSUNLPgorPEJMVVJCPlRoZSBQcm9iYWJpbGl0eSBhIGJ1ZmZlciBpcyBkdXBsaWNhdGVkLjwvQkxVUkI+Cis8REVGQVVMVD4wPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3ROZXRTaW06Om1heC1kZWxheTwvTkFNRT4KKzxUWVBFPmdpbnQ8L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5yd3g8L0ZMQUdTPgorPE5JQ0s+TWF4aW11bSBkZWxheSAobXMpPC9OSUNLPgorPEJMVVJCPlRoZSBtYXhpbXVtIGRlbGF5IGluIG1zIHRvIGFwcGx5IHRvIGJ1ZmZlcnMuPC9CTFVSQj4KKzxERUZBVUxUPjQwMDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0TmV0U2ltOjptaW4tZGVsYXk8L05BTUU+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPjwvUkFOR0U+Cis8RkxBR1M+cnd4PC9GTEFHUz4KKzxOSUNLPk1pbmltdW0gZGVsYXkgKG1zKTwvTklDSz4KKzxCTFVSQj5UaGUgbWluaW11bSBkZWxheSBpbiBtcyB0byBhcHBseSB0byBidWZmZXJzLjwvQkxVUkI+Cis8REVGQVVMVD4yMDA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdEdEUERlcGF5Ojp0cy1vZmZzZXQ8L05BTUU+Cis8VFlQRT5naW50NjQ8L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5UaW1lc3RhbXAgT2Zmc2V0PC9OSUNLPgorPEJMVVJCPlRpbWVzdGFtcCBPZmZzZXQuPC9CTFVSQj4KKzxERUZBVUxUPjA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdEdMQ29sb3JCYWxhbmNlOjpicmlnaHRuZXNzPC9OQU1FPgorPFRZUEU+Z2RvdWJsZTwvVFlQRT4KKzxSQU5HRT5bLTEsMV08L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPkJyaWdodG5lc3M8L05JQ0s+Cis8QkxVUkI+YnJpZ2h0bmVzcy48L0JMVVJCPgorPERFRkFVTFQ+MDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0R0xDb2xvckJhbGFuY2U6OmNvbnRyYXN0PC9OQU1FPgorPFRZUEU+Z2RvdWJsZTwvVFlQRT4KKzxSQU5HRT5bMCwyXTwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+Q29udHJhc3Q8L05JQ0s+Cis8QkxVUkI+Y29udHJhc3QuPC9CTFVSQj4KKzxERUZBVUxUPjE8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdEdMQ29sb3JCYWxhbmNlOjpodWU8L05BTUU+Cis8VFlQRT5nZG91YmxlPC9UWVBFPgorPFJBTkdFPlstMSwxXTwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+SHVlPC9OSUNLPgorPEJMVVJCPmh1ZS48L0JMVVJCPgorPERFRkFVTFQ+MDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0R0xDb2xvckJhbGFuY2U6OnNhdHVyYXRpb248L05BTUU+Cis8VFlQRT5nZG91YmxlPC9UWVBFPgorPFJBTkdFPlswLDJdPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5TYXR1cmF0aW9uPC9OSUNLPgorPEJMVVJCPnNhdHVyYXRpb24uPC9CTFVSQj4KKzxERUZBVUxUPjE8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdFRvbmVHZW5lcmF0ZVNyYzo6ZnJlcTwvTkFNRT4KKzxUWVBFPmdpbnQ8L1RZUEU+Cis8UkFOR0U+WzAsMjAwMDBdPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5GcmVxdWVuY3k8L05JQ0s+Cis8QkxVUkI+RnJlcXVlbmN5IG9mIHRlc3Qgc2lnbmFsLjwvQkxVUkI+Cis8REVGQVVMVD4wPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RUb25lR2VuZXJhdGVTcmM6OmZyZXEyPC9OQU1FPgorPFRZUEU+Z2ludDwvVFlQRT4KKzxSQU5HRT5bMCwyMDAwMF08L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlNlY29uZCBGcmVxdWVuY3k8L05JQ0s+Cis8QkxVUkI+RnJlcXVlbmN5IG9mIHNlY29uZCB0ZWxlcGhvbnkgdG9uZSBjb21wb25lbnQuPC9CTFVSQj4KKzxERUZBVUxUPjA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdFRvbmVHZW5lcmF0ZVNyYzo6b2ZmLXRpbWU8L05BTUU+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPj49IDA8L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlNpZ25hbCBPRkYgdGltZSBmaXJzdCBwZXJpb2QgPC9OSUNLPgorPEJMVVJCPlRpbWUgb2YgdGhlIGZpcnN0IHBlcmlvZCAgd2hlbiB0aGUgdG9uZSBzaWduYWwgaXMgb2ZmLjwvQkxVUkI+Cis8REVGQVVMVD4xMDAwPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RUb25lR2VuZXJhdGVTcmM6Om9mZi10aW1lMjwvTkFNRT4KKzxUWVBFPmdpbnQ8L1RZUEU+Cis8UkFOR0U+Pj0gMDwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+U2lnbmFsIE9GRiB0aW1lIGZpcnN0IHBlcmlvZCA8L05JQ0s+Cis8QkxVUkI+VGltZSBvZiB0aGUgc2Vjb25kIHBlcmlvZCAgd2hlbiB0aGUgdG9uZSBzaWduYWwgaXMgb2ZmLjwvQkxVUkI+Cis8REVGQVVMVD4xMDAwPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RUb25lR2VuZXJhdGVTcmM6Om9uLXRpbWU8L05BTUU+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPj49IDE8L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlNpZ25hbCBPTiB0aW1lIGZpcnN0IHBlcmlvZDwvTklDSz4KKzxCTFVSQj5UaW1lIG9mIHRoZSBmaXJzdCBwZXJpb2QgIHdoZW4gdGhlIHRvbmUgc2lnbmFsIGlzIHByZXNlbnQuPC9CTFVSQj4KKzxERUZBVUxUPjEwMDA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdFRvbmVHZW5lcmF0ZVNyYzo6b24tdGltZTI8L05BTUU+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPj49IDE8L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlNpZ25hbCBPTiB0aW1lIHNlY29uZCBwZXJpb2Q8L05JQ0s+Cis8QkxVUkI+VGltZSBvZiB0aGUgc2Vjb25kIHBlcmlvZCAgd2hlbiB0aGUgdG9uZSBzaWduYWwgaXMgcHJlc2VudC48L0JMVVJCPgorPERFRkFVTFQ+MTAwMDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0VG9uZUdlbmVyYXRlU3JjOjpyZXBlYXQ8L05BTUU+Cis8VFlQRT5nYm9vbGVhbjwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlJlcGVhdCB0aGUgc3BlY2lmaWVkIHRvbmUgcGVyaW9kIDwvTklDSz4KKzxCTFVSQj5XaGV0aGVyIHRvIHJlcGVhdCBzcGVjaWZpZWQgdG9uZSBpbmRlZmluaXRseS48L0JMVVJCPgorPERFRkFVTFQ+RkFMU0U8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdFRvbmVHZW5lcmF0ZVNyYzo6c2FtcGxlc3BlcmJ1ZmZlcjwvTkFNRT4KKzxUWVBFPmdpbnQ8L1RZUEU+Cis8UkFOR0U+Pj0gMTwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+U2FtcGxlcyBwZXIgYnVmZmVyPC9OSUNLPgorPEJMVVJCPk51bWJlciBvZiBzYW1wbGVzIGluIGVhY2ggb3V0Z29pbmcgYnVmZmVyLjwvQkxVUkI+Cis8REVGQVVMVD4xMDI0PC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RUb25lR2VuZXJhdGVTcmM6OnZvbHVtZTwvTkFNRT4KKzxUWVBFPmdpbnQ8L1RZUEU+Cis8UkFOR0U+Wy01MCwwXTwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+Vm9sdW1lPC9OSUNLPgorPEJMVVJCPlZvbHVtZSBvZiBmaXJzdCBzaWduYWwuPC9CTFVSQj4KKzxERUZBVUxUPjA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdFRvbmVHZW5lcmF0ZVNyYzo6dm9sdW1lMjwvTkFNRT4KKzxUWVBFPmdpbnQ8L1RZUEU+Cis8UkFOR0U+Wy01MCwwXTwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+Vm9sdW1lMjwvTklDSz4KKzxCTFVSQj5Wb2x1bWUgb2Ygc2Vjb25kIHRvbmUgc2lnbmFsLjwvQkxVUkI+Cis8REVGQVVMVD4wPC9ERUZBVUxUPgorPC9BUkc+CisKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5oaWVyYXJjaHkgYi9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuaGllcmFyY2h5CmluZGV4IGIwOWZiNWQuLjIyYWY0N2EgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5oaWVyYXJjaHkKKysrIGIvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmhpZXJhcmNoeQpAQCAtMyw3ICszLDggQEAKICAgICBHc3RPYmplY3QKICAgICAgIEdzdEFsbG9jYXRvcgogICAgICAgICBHc3RBbGxvY2F0b3JTeXNtZW0KLSAgICAgICAgR3N0V2xTaG1BbGxvY2F0b3IKKyAgICAgICAgR3N0RmRBbGxvY2F0b3IKKyAgICAgICAgICBHc3RXbFNobUFsbG9jYXRvcgogICAgICAgR3N0QXVkaW9SaW5nQnVmZmVyCiAgICAgICAgIEdzdEF1ZGlvU2lua1JpbmdCdWZmZXIKICAgICAgICAgR3N0QXVkaW9TcmNSaW5nQnVmZmVyCkBAIC0xOCw2ICsxOSw4IEBACiAgICAgICAgICAgR3N0QXVkaW9BZ2dyZWdhdG9yCiAgICAgICAgICAgICBHc3RBdWRpb0ludGVybGVhdmUKICAgICAgICAgICAgIEdzdEF1ZGlvTWl4ZXIKKyAgICAgICAgICAgICAgR3N0TGl2ZUFkZGVyCisgICAgICAgICAgR3N0TVhGTXV4CiAgICAgICAgICAgR3N0VmlkZW9BZ2dyZWdhdG9yCiAgICAgICAgICAgICBHc3RDb21wb3NpdG9yCiAgICAgICAgICAgICBHc3RHTEJhc2VNaXhlcgpAQCAtMzQsMTkgKzM3LDE2IEBACiAgICAgICAgICAgR3N0RHRzRGVjCiAgICAgICAgICAgR3N0RmFhZAogICAgICAgICAgIEdzdEdTTURlYwotICAgICAgICAgIEdzdE1wZzEyM0F1ZGlvRGVjCi0gICAgICAgICAgR3N0T3B1c0RlYwogICAgICAgICAgIEdzdFNiY0RlYwogICAgICAgICAgIEdzdFNpcmVuRGVjCiAgICAgICAgIEdzdEF1ZGlvRW5jb2RlcgogICAgICAgICAgIEFEUENNRW5jCiAgICAgICAgICAgR3N0R1NNRW5jCi0gICAgICAgICAgR3N0T3B1c0VuYwogICAgICAgICAgIEdzdFNiY0VuYwogICAgICAgICAgIEdzdFNpcmVuRW5jCiAgICAgICAgICAgR3N0Vm9BYWNFbmMKICAgICAgICAgICBHc3RWb0FtcldiRW5jCi0gICAgICAgIEdzdEF1ZGlvVmlzdWFsaXplci1CYWRHc3RBdWRpb1Zpc3VhbGl6ZXJzCisgICAgICAgIEdzdEF1ZGlvVmlzdWFsaXplcgogICAgICAgICAgIEdzdFNwYWNlU2NvcGUKICAgICAgICAgICBHc3RTcGVjdHJhU2NvcGUKICAgICAgICAgICBHc3RTeW5hZVNjb3BlCkBAIC0xMTUsNiArMTE1LDcgQEAKICAgICAgICAgICAgIEdzdFJUTVBTcmMKICAgICAgICAgICAgIEdzdFJmYlNyYwogICAgICAgICAgICAgR3N0U2htU3JjCisgICAgICAgICAgICBHc3RUb25lR2VuZXJhdGVTcmMKICAgICAgICAgICAgIEdzdFZDRFNyYwogICAgICAgICBHc3RCYXNlVHJhbnNmb3JtCiAgICAgICAgICAgR3N0QXVkaW9GaWx0ZXIKQEAgLTE0MSw2ICsxNDIsNyBAQAogICAgICAgICAgICAgR3N0R0xDb2xvckNvbnZlcnRFbGVtZW50CiAgICAgICAgICAgICBHc3RHTERvd25sb2FkRWxlbWVudAogICAgICAgICAgICAgR3N0R0xGaWx0ZXIKKyAgICAgICAgICAgICAgR3N0R0xDb2xvckJhbGFuY2UKICAgICAgICAgICAgICAgR3N0R0xDb2xvcnNjYWxlCiAgICAgICAgICAgICAgIEdzdEdMRGVpbnRlcmxhY2UKICAgICAgICAgICAgICAgR3N0R0xEaWZmZXJlbmNlTWF0dGUKQEAgLTIwMywyMyArMjA1LDggQEAKICAgICAgICAgICAgICAgR3N0UGVyc3BlY3RpdmUKICAgICAgICAgICAgICAgR3N0Um90YXRlCiAgICAgICAgICAgICAgIEdzdFNxdWFyZQotICAgICAgICAgICAgR3N0R3JhYmN1dAotICAgICAgICAgICAgR3N0T3BlbmN2VmlkZW9GaWx0ZXIKLSAgICAgICAgICAgICAgR3N0Q3ZEaWxhdGVFcm9kZQotICAgICAgICAgICAgICAgIEdzdEN2RGlsYXRlCi0gICAgICAgICAgICAgICAgR3N0Q3ZFcm9kZQotICAgICAgICAgICAgICBHc3RDdkVxdWFsaXplSGlzdAotICAgICAgICAgICAgICBHc3RDdkxhcGxhY2UKLSAgICAgICAgICAgICAgR3N0Q3ZTbW9vdGgKLSAgICAgICAgICAgICAgR3N0Q3ZTb2JlbAotICAgICAgICAgICAgICBHc3RGYWNlQmx1cgotICAgICAgICAgICAgICBHc3RGYWNlRGV0ZWN0Ci0gICAgICAgICAgICAgIEdzdEhhbmRkZXRlY3QKLSAgICAgICAgICAgICAgR3N0U2tpbkRldGVjdAotICAgICAgICAgICAgR3N0UmV0aW5leAogICAgICAgICAgICAgR3N0UnN2Z092ZXJsYXkKICAgICAgICAgICAgIEdzdFNjZW5lQ2hhbmdlCi0gICAgICAgICAgICBHc3RTZWdtZW50YXRpb24KICAgICAgICAgICAgIEdzdFNpbXBsZVZpZGVvTWFyawogICAgICAgICAgICAgR3N0U2ltcGxlVmlkZW9NYXJrRGV0ZWN0CiAgICAgICAgICAgICBHc3RTbW9vdGgKQEAgLTI2NCwxMSArMjUxLDkgQEAKICAgICAgICAgR3N0Q29tcGFyZQogICAgICAgICBHc3REVkJTdWJPdmVybGF5CiAgICAgICAgIEdzdERWRFNwdQotICAgICAgICBHc3REaXNwYXJpdHkKICAgICAgICAgR3N0RHRsc0RlYwogICAgICAgICBHc3REdGxzRW5jCiAgICAgICAgIEdzdER0bHNTcnRwRGVtdXgKLSAgICAgICAgR3N0RWRnZURldGVjdAogICAgICAgICBHc3RFcnJvcklnbm9yZQogICAgICAgICBHc3RGZXN0aXZhbAogICAgICAgICBHc3RGaWVsZEFuYWx5c2lzCkBAIC0yODQsMzIgKzI2OSwyNSBAQAogICAgICAgICBHc3RLYXRlRW5jCiAgICAgICAgIEdzdEthdGVQYXJzZQogICAgICAgICAgIEdzdEthdGVUYWcKLSAgICAgICAgR3N0TGl2ZUFkZGVyCiAgICAgICAgIEdzdE1YRkRlbXV4CiAgICAgICAgIEdzdE1pZGlQYXJzZQogICAgICAgICBHc3RNaW1EZWMKICAgICAgICAgR3N0TWltRW5jCiAgICAgICAgIEdzdE1vZFBsdWcKLSAgICAgICAgR3N0TW90aW9uY2VsbHMKICAgICAgICAgR3N0TXBlZzJlbmMKICAgICAgICAgR3N0TXBlZ1BTRGVtdXgKICAgICAgICAgR3N0TXBsZXgKLSAgICAgICAgR3N0T3BlbmN2VGV4dE92ZXJsYXkKKyAgICAgICAgR3N0TmV0U2ltCiAgICAgICAgIEdzdFBjYXBQYXJzZQogICAgICAgICBHc3RQaXRjaAotICAgICAgICBHc3RQeXJhbWlkU2VnbWVudAotICAgICAgICBHc3RSVFBCYXNlRGVwYXlsb2FkCi0gICAgICAgICAgR3N0UlRQT3B1c0RlcGF5Ci0gICAgICAgICAgR3N0UnRwSDI2NURlcGF5CiAgICAgICAgIEdzdFJUUEJhc2VQYXlsb2FkCiAgICAgICAgICAgR3N0UnRwQXNmUGF5Ci0gICAgICAgICAgR3N0UnRwSDI2NVBheQotICAgICAgICAgIEdzdFJ0cE9QVVNQYXkKICAgICAgICAgR3N0UmF3UGFyc2UKICAgICAgICAgICBHc3RBdWRpb1BhcnNlCiAgICAgICAgICAgR3N0VmlkZW9QYXJzZQogICAgICAgICBHc3RSdHBPbnZpZlBhcnNlCiAgICAgICAgIEdzdFJ0cE9udmlmVGltZXN0YW1wCisgICAgICAgIEdzdFNGRGVjCiAgICAgICAgIEdzdFNlZ21lbnRDbGlwCiAgICAgICAgICAgR3N0QXVkaW9TZWdtZW50Q2xpcAogICAgICAgICAgIEdzdFZpZGVvU2VnbWVudENsaXAKQEAgLTMyMCw3ICsyOTgsNyBAQAogICAgICAgICBHc3RTcnRwRW5jCiAgICAgICAgIEdzdFRhZ011eAogICAgICAgICAgIEdzdElkM011eAotICAgICAgICBHc3RUZW1wbGF0ZU1hdGNoCisgICAgICAgIEdzdFRlbGV0ZXh0RGVjCiAgICAgICAgIEdzdFV2Y0gyNjRNanBnRGVtdXgKICAgICAgICAgR3N0VmlkZW9EZWNvZGVyCiAgICAgICAgICAgR3N0TGliZGUyNjVEZWMKQEAgLTMzNyw2ICszMTUsNyBAQAogICAgICAgICAgIEdzdFNjaHJvRW5jCiAgICAgICAgICAgR3N0V2VicEVuYwogICAgICAgICAgIEdzdFgyNjVFbmMKKyAgICAgICAgR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWwKICAgICAgICAgR3N0V2VidnR0RW5jCiAgICAgICAgIEdzdFdpbGRtaWRpCiAgICAgICAgIEdzdFk0bURlYwpAQCAtMzQ2LDIxICszMjUsMjUgQEAKICAgICAgICAgICBNcGVnVFNQYXJzZTIKICAgICAgICAgTXBlZ1RzTXV4CiAgICAgICBHc3RHTENvbnRleHQKKyAgICAgIEdzdEdMU2hhZGVyCiAgICAgICBHc3RQYWQKICAgICAgICAgR3N0QWdncmVnYXRvclBhZAogICAgICAgICAgIEdzdEF1ZGlvQWdncmVnYXRvclBhZAogICAgICAgICAgICAgR3N0QXVkaW9JbnRlcmxlYXZlUGFkCiAgICAgICAgICAgICBHc3RBdWRpb01peGVyUGFkCisgICAgICAgICAgR3N0TVhGTXV4UGFkCiAgICAgICAgICAgR3N0VmlkZW9BZ2dyZWdhdG9yUGFkCiAgICAgICAgICAgICBHc3RDb21wb3NpdG9yUGFkCiAgICAgICAgICAgICBHc3RHTEJhc2VNaXhlclBhZAogICAgICAgICAgICAgICBHc3RHTE1peGVyUGFkCisgICAgICAgICAgICAgICAgR3N0R0xTdGVyZW9NaXhQYWQKICAgICAgICAgICAgICAgICBHc3RHTFZpZGVvTWl4ZXJQYWQKICAgICAgIEdzdFBhZFRlbXBsYXRlCiAgICAgICBHc3RQbHVnaW4KICAgICAgIEdzdFBsdWdpbkZlYXR1cmUKICAgICAgICAgR3N0RGV2aWNlUHJvdmlkZXJGYWN0b3J5CiAgICAgICAgIEdzdEVsZW1lbnRGYWN0b3J5CisgICAgICAgIEdzdFRyYWNlckZhY3RvcnkKICAgICAgICAgR3N0VHlwZUZpbmRGYWN0b3J5CiAgICAgICBHc3RSZWdpc3RyeQogICAgICAgR3N0VGFzawpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmludGVyZmFjZXMgYi9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuaW50ZXJmYWNlcwppbmRleCBiNjczMzhjLi5jOWQ4MDNmIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuaW50ZXJmYWNlcworKysgYi9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuaW50ZXJmYWNlcwpAQCAtMzMsMjUgKzMzLDIyIEBACiBHc3RGYWNlT3ZlcmxheSBHc3RDaGlsZFByb3h5CiBHc3RGcmVldmVyYiBHc3RQcmVzZXQKIEdzdEdMQmFzZU1peGVyIEdzdENoaWxkUHJveHkKK0dzdEdMQ29sb3JCYWxhbmNlIEdzdENvbG9yQmFsYW5jZQogR3N0R0xGaWx0ZXJCaW4gR3N0Q2hpbGRQcm94eQogR3N0R0xJbWFnZVNpbmsgR3N0VmlkZW9PdmVybGF5CiBHc3RHTEltYWdlU2luayBHc3RWaWRlb092ZXJsYXkgR3N0TmF2aWdhdGlvbgogR3N0R0xJbWFnZVNpbmtCaW4gR3N0Q2hpbGRQcm94eSBHc3RWaWRlb092ZXJsYXkgR3N0TmF2aWdhdGlvbgorR3N0R0xJbWFnZVNpbmtCaW4gR3N0Q2hpbGRQcm94eSBHc3RWaWRlb092ZXJsYXkgR3N0TmF2aWdhdGlvbiBHc3RDb2xvckJhbGFuY2UKIEdzdEdMTWl4ZXIgR3N0Q2hpbGRQcm94eQogR3N0R0xNaXhlckJpbiBHc3RDaGlsZFByb3h5CiBHc3RHTE1vc2FpYyBHc3RDaGlsZFByb3h5CiBHc3RHTFNpbmtCaW4gR3N0Q2hpbGRQcm94eSBHc3RWaWRlb092ZXJsYXkgR3N0TmF2aWdhdGlvbgorR3N0R0xTaW5rQmluIEdzdENoaWxkUHJveHkgR3N0VmlkZW9PdmVybGF5IEdzdE5hdmlnYXRpb24gR3N0Q29sb3JCYWxhbmNlCiBHc3RHTFNyY0JpbiBHc3RDaGlsZFByb3h5CiBHc3RHTFN0ZXJlb01peCBHc3RDaGlsZFByb3h5CiBHc3RHTFZpZGVvTWl4ZXIgR3N0Q2hpbGRQcm94eQogR3N0R0xWaWRlb01peGVyQmluIEdzdENoaWxkUHJveHkKIEdzdEdTTUVuYyBHc3RQcmVzZXQKLUdzdEdTZXR0aW5nc0F1ZGlvU2luayBHc3RDaGlsZFByb3h5Ci1Hc3RHU2V0dGluZ3NBdWRpb1NyYyBHc3RDaGlsZFByb3h5Ci1Hc3RHU2V0dGluZ3NTd2l0Y2hTaW5rIEdzdENoaWxkUHJveHkKLUdzdEdTZXR0aW5nc1N3aXRjaFNyYyBHc3RDaGlsZFByb3h5Ci1Hc3RHU2V0dGluZ3NWaWRlb1NpbmsgR3N0Q2hpbGRQcm94eQotR3N0R1NldHRpbmdzVmlkZW9TcmMgR3N0Q2hpbGRQcm94eQogR3N0R3RrQmFzZVNpbmsgR3N0TmF2aWdhdGlvbgogR3N0R3RrR0xTaW5rIEdzdE5hdmlnYXRpb24KIEdzdEd0a1NpbmsgR3N0TmF2aWdhdGlvbgpAQCAtNjMsNiArNjAsNyBAQAogR3N0SmlmTXV4IEdzdFRhZ1NldHRlciBHc3RUYWdYbXBXcml0ZXIKIEdzdEthdGVFbmMgR3N0VGFnU2V0dGVyCiBHc3RLYXRlVGFnIEdzdFRhZ1NldHRlcgorR3N0TGl2ZUFkZGVyIEdzdENoaWxkUHJveHkKIEdzdE1NUyBHc3RVUklIYW5kbGVyCiBHc3RNcGVnMmVuYyBHc3RQcmVzZXQKIEdzdE1zc0RlbXV4IEdzdENoaWxkUHJveHkKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5zaWduYWxzIGIvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLnNpZ25hbHMKaW5kZXggMTA0MGE3ZC4uN2ZlY2VlNCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLnNpZ25hbHMKKysrIGIvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLnNpZ25hbHMKQEAgLTc1MCwzICs3NTAsMTAgQEAKIEdzdER0bHNEZWMgKmdzdGR0bHNkZWMKIDwvU0lHTkFMPgogCis8U0lHTkFMPgorPE5BTUU+R3N0R0xGaWx0ZXJTaGFkZXI6OmNyZWF0ZS1zaGFkZXI8L05BTUU+Cis8UkVUVVJOUz5Hc3RHTFNoYWRlcio8L1JFVFVSTlM+Cis8RkxBR1M+bDwvRkxBR1M+CitHc3RHTEZpbHRlclNoYWRlciAqZ3N0Z2xmaWx0ZXJzaGFkZXIKKzwvU0lHTkFMPgorCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9jaDAxLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9jaDAxLmh0bWwKaW5kZXggNDVlMDNiZC4uOTE2ZmZhYiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvY2gwMS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2NoMDEuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmdzdC1wbHVnaW5zLWJhZCBFbGVtZW50czogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgpAQCAtMzYsNiArMzYsOSBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sIj5hc3NyZW5kZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sIj5hdWRpb2ludGVybGVhdmU8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Cis8L2R0PgorPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbCI+YXVkaW9taXhlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CkBAIC0xNzQsOSArMTc3LDYgQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sIj5tcGxleDwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuaHRtbCI+bXBnMTIzYXVkaW9kZWM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLmh0bWwiPm5lb25odHRwc3JjPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KQEAgLTE4OSwyMSArMTg5LDYgQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzaW5rLmh0bWwiPm9wZW5hbHNpbms8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCI+b3B1c2RlYzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sIj5vcHVzZW5jPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCI+b3B1c3BhcnNlPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwiPnJ0cG9wdXNwYXk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sIj5ydHBvcHVzZGVwYXk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sIj5wY2FwcGFyc2U8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvY2gwMi5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvY2gwMi5odG1sCmluZGV4IDI0Njc4NzMuLjdiNTY5NTQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2NoMDIuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9jaDAyLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5nc3QtcGx1Z2lucy1iYWQgUGx1Z2luczogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXZlc2NvcGUuaHRtbCIgdGl0bGU9IndhdmVzY29wZSI+CkBAIC05Myw5ICs5Myw2IEBACiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWpwZWdmb3JtYXQuaHRtbCI+anBlZ2Zvcm1hdDwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgSlBFRyBpbnRlcmNoYW5nZSBmb3JtYXQgcGx1Z2luPC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbGl2ZWFkZGVyLmh0bWwiPmxpdmVhZGRlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgQWRkcyBtdWx0aXBsZSBsaXZlIGRpc2NvbnRpbnVvdXMgc3RyZWFtczwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljLmh0bWwiPm1pbWljPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBNaW1pYyBjb2RlYzwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CkBAIC0xMjksOSArMTI2LDYgQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmN2Lmh0bWwiPm9wZW5jdjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgR1N0cmVhbWVyIE9wZW5DViBQbHVnaW5zPC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sIj5vcHVzPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBPUFVTIHBsdWdpbiBsaWJyYXJ5PC9zcGFuPgotPC9kdD4KLTxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcGNhcHBhcnNlLmh0bWwiPnBjYXBwYXJzZTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgRWxlbWVudCBwYXJzaW5nIHJhdyBwY2FwIHN0cmVhbXM8L3NwYW4+CiA8L2R0PgogPGR0PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wLmRldmhlbHAyIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wLmRldmhlbHAyCmluZGV4IGEyMzVjMTUuLjc0M2I3ZTUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC5kZXZoZWxwMgorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAuZGV2aGVscDIKQEAgLTYsNiArNiw3IEBACiAgICAgICA8c3ViIG5hbWU9ImFpZmZwYXJzZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWlmZnBhcnNlLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0iYWlmZm11eCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWlmZm11eC5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9ImFzc3JlbmRlciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXNzcmVuZGVyLmh0bWwiLz4KKyAgICAgIDxzdWIgbmFtZT0iYXVkaW9pbnRlcmxlYXZlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJhdWRpb21peGVyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb21peGVyLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0iYXV0b2NvbnZlcnQiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1dG9jb252ZXJ0Lmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0iYnMyYiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnMyYi5odG1sIi8+CkBAIC01MiwxNiArNTMsMTAgQEAKICAgICAgIDxzdWIgbmFtZT0ibXBlZ3BzbXV4IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVncHNtdXguaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJtcGVndHNtdXgiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWd0c211eC5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9Im1wbGV4IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sIi8+Ci0gICAgICA8c3ViIG5hbWU9Im1wZzEyM2F1ZGlvZGVjIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9Im5lb25odHRwc3JjIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9Im9mYSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb2ZhLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0ib3BlbmFsc3JjIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzcmMuaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJvcGVuYWxzaW5rIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzaW5rLmh0bWwiLz4KLSAgICAgIDxzdWIgbmFtZT0ib3B1c2RlYyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sIi8+Ci0gICAgICA8c3ViIG5hbWU9Im9wdXNlbmMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCIvPgotICAgICAgPHN1YiBuYW1lPSJvcHVzcGFyc2UiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sIi8+Ci0gICAgICA8c3ViIG5hbWU9InJ0cG9wdXNwYXkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCIvPgotICAgICAgPHN1YiBuYW1lPSJydHBvcHVzZGVwYXkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9InBjYXBwYXJzZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0icGluY2giIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0icHlyYW1pZHNlZ21lbnQiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXB5cmFtaWRzZWdtZW50Lmh0bWwiLz4KQEAgLTExNCw3ICsxMDksNiBAQAogICAgICAgPHN1YiBuYW1lPSJnZW9tZXRyaWN0cmFuc2Zvcm0iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0uaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJnc20iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nc20uaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJqcGVnZm9ybWF0IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tanBlZ2Zvcm1hdC5odG1sIi8+Ci0gICAgICA8c3ViIG5hbWU9ImxpdmVhZGRlciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWxpdmVhZGRlci5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9Im1pbWljIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbWltaWMuaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJtbXMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tbXMuaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJtb2RwbHVnIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbW9kcGx1Zy5odG1sIi8+CkBAIC0xMjYsNyArMTIwLDYgQEAKICAgICAgIDxzdWIgbmFtZT0ib2ZhIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb2ZhLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0ib3BlbmFsIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmFsLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0ib3BlbmN2IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmN2Lmh0bWwiLz4KLSAgICAgIDxzdWIgbmFtZT0ib3B1cyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wdXMuaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJwY2FwcGFyc2UiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1wY2FwcGFyc2UuaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJyYXdwYXJzZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJhd3BhcnNlLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0icmZic3JjIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcmZic3JjLmh0bWwiLz4KQEAgLTE1MCw2ICsxNDMsOSBAQAogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcZW1iZWRkZWRmb250c+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXNzcmVuZGVyLmh0bWwjR3N0QXNzUmVuZGVyLS1lbWJlZGRlZGZvbnRzIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxlbmFibGXigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sI0dzdEFzc1JlbmRlci0tZW5hYmxlIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJx3YWl0LXRleHTigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sI0dzdEFzc1JlbmRlci0td2FpdC10ZXh0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0QXVkaW9JbnRlcmxlYXZlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCNHc3RBdWRpb0ludGVybGVhdmUtc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxjaGFubmVsLXBvc2l0aW9uc+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwjR3N0QXVkaW9JbnRlcmxlYXZlLS1jaGFubmVsLXBvc2l0aW9ucyIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcY2hhbm5lbC1wb3NpdGlvbnMtZnJvbS1pbnB1dOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwjR3N0QXVkaW9JbnRlcmxlYXZlLS1jaGFubmVsLXBvc2l0aW9ucy1mcm9tLWlucHV0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0QXVkaW9NaXhlciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sI0dzdEF1ZGlvTWl4ZXItc3RydWN0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxhbGlnbm1lbnQtdGhyZXNob2xk4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb21peGVyLmh0bWwjR3N0QXVkaW9NaXhlci0tYWxpZ25tZW50LXRocmVzaG9sZCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcY2Fwc+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sI0dzdEF1ZGlvTWl4ZXItLWNhcHMiLz4KQEAgLTE3NSwxMiArMTcxLDE1IEBACiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0Q29sb3JFZmZlY3RzIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb2xvcmVmZmVjdHMuaHRtbCNHc3RDb2xvckVmZmVjdHMtc3RydWN0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxwcmVzZXTigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbG9yZWZmZWN0cy5odG1sI0dzdENvbG9yRWZmZWN0cy0tcHJlc2V0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxiYWNrZ3JvdW5k4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb21wb3NpdG9yLmh0bWwjR3N0Q29tcG9zaXRvci0tYmFja2dyb3VuZCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEN2RGlsYXRlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5odG1sI0dzdEN2RGlsYXRlLXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEN2RXJvZGUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuaHRtbCNHc3RDdkVyb2RlLXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEN2RXF1YWxpemVIaXN0IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5odG1sI0dzdEN2RXF1YWxpemVIaXN0LXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEN2TGFwbGFjZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEN2RGlsYXRlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5odG1sI0dzdEN2RGlsYXRlIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0Q3ZFcm9kZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5odG1sI0dzdEN2RXJvZGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RDdkVxdWFsaXplSGlzdCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbCNHc3RDdkVxdWFsaXplSGlzdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEN2TGFwbGFjZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxhcGVydHVyZS1zaXpl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNHc3RDdkxhcGxhY2UtLWFwZXJ0dXJlLXNpemUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RDdlNtb290aCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNHc3RDdlNtb290aC1zdHJ1Y3QiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHNjYWxl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNHc3RDdkxhcGxhY2UtLXNjYWxlIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxzaGlmdOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlLS1zaGlmdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcbWFza+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlLS1tYXNrIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0Q3ZTbW9vdGgiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjR3N0Q3ZTbW9vdGgiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHBhcmFtMeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNHc3RDdlNtb290aC0tcGFyYW0xIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxwYXJhbTLigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjR3N0Q3ZTbW9vdGgtLXBhcmFtMiIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCccGFyYW0z4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI0dzdEN2U21vb3RoLS1wYXJhbTMiLz4KQEAgLTE5MCwxMCArMTg5LDExIEBACiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxoZWlnaHTigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjR3N0Q3ZTbW9vdGgtLWhlaWdodCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcc3BhdGlhbOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNHc3RDdlNtb290aC0tc3BhdGlhbCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcd2lkdGjigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjR3N0Q3ZTbW9vdGgtLXdpZHRoIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0Q3ZTb2JlbCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwtc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0Q3ZTb2JlbCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGFwZXJ0dXJlLXNpemXigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsLS1hcGVydHVyZS1zaXplIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJx4LW9yZGVy4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjR3N0Q3ZTb2JlbC0teC1vcmRlciIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCceS1vcmRlcuKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwtLXktb3JkZXIiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnG1hc2vigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsLS1tYXNrIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0RGF0YVVSSVNyYyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGF0YXVyaXNyYy5odG1sI0dzdERhdGFVUklTcmMtc3RydWN0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJx1cmnigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRhdGF1cmlzcmMuaHRtbCNHc3REYXRhVVJJU3JjLS11cmkiLz4KICAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3REaWZmdXNlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWZmdXNlLmh0bWwjR3N0RGlmZnVzZS1zdHJ1Y3QiLz4KQEAgLTMwNCw4ICszMDQsNiBAQAogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcYW5nbGXigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWthbGVpZG9zY29wZS5odG1sI0dzdEthbGVpZG9zY29wZS0tYW5nbGUiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGFuZ2xlMuKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLmh0bWwjR3N0S2FsZWlkb3Njb3BlLS1hbmdsZTIiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHNpZGVz4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1rYWxlaWRvc2NvcGUuaHRtbCNHc3RLYWxlaWRvc2NvcGUtLXNpZGVzIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0TGl2ZUFkZGVyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuaHRtbCNHc3RMaXZlQWRkZXItc3RydWN0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxsYXRlbmN54oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuaHRtbCNHc3RMaXZlQWRkZXItLWxhdGVuY3kiLz4KICAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RNYXJibGUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sI0dzdE1hcmJsZS1zdHJ1Y3QiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGFtb3VudOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlLmh0bWwjR3N0TWFyYmxlLS1hbW91bnQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHR1cmJ1bGVuY2XigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sI0dzdE1hcmJsZS0tdHVyYnVsZW5jZSIvPgpAQCAtMzc5LDcgKzM3Nyw2IEBACiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxzZWN0b3Itc2l6ZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXguaHRtbCNHc3RNcGxleC0tc2VjdG9yLXNpemUiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHN5c3RlbS1oZWFkZXJz4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sI0dzdE1wbGV4LS1zeXN0ZW0taGVhZGVycyIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcdmJy4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sI0dzdE1wbGV4LS12YnIiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RNcGcxMjNBdWRpb0RlYyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuaHRtbCNHc3RNcGcxMjNBdWRpb0RlYy1zdHJ1Y3QiLz4KICAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3ROZW9uaHR0cFNyYyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMuaHRtbCNHc3ROZW9uaHR0cFNyYyIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcbG9jYXRpb27igJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLmh0bWwjR3N0TmVvbmh0dHBTcmMtLWxvY2F0aW9uIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxwcm94eeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMuaHRtbCNHc3ROZW9uaHR0cFNyYy0tcHJveHkiLz4KQEAgLTQwMCwyNiArMzk3LDYgQEAKICAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RPcGVuYWxTcmMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNyYy5odG1sI0dzdE9wZW5hbFNyYy1zdHJ1Y3QiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGRldmljZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc3JjLmh0bWwjR3N0T3BlbmFsU3JjLS1kZXZpY2UiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGRldmljZS1uYW1l4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzcmMuaHRtbCNHc3RPcGVuYWxTcmMtLWRldmljZS1uYW1lIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0T3B1c0RlYyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sI0dzdE9wdXNEZWMtc3RydWN0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxhcHBseS1nYWlu4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjR3N0T3B1c0RlYy0tYXBwbHktZ2FpbiIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcdXNlLWluYmFuZC1mZWPigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNHc3RPcHVzRGVjLS11c2UtaW5iYW5kLWZlYyIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdE9wdXNFbmMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcYXVkaW/igJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1hdWRpbyIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcYmFuZHdpZHRo4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tYmFuZHdpZHRoIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxiaXRyYXRl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tYml0cmF0ZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcY2Jy4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tY2JyIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxjb21wbGV4aXR54oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tY29tcGxleGl0eSIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcY29uc3RyYWluZWQtdmJy4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tY29uc3RyYWluZWQtdmJyIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxkdHjigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1kdHgiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGZyYW1lLXNpemXigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1mcmFtZS1zaXplIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxpbmJhbmQtZmVj4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0taW5iYW5kLWZlYyIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcbWF4LXBheWxvYWQtc2l6ZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLW1heC1wYXlsb2FkLXNpemUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHBhY2tldC1sb3NzLXBlcmNlbnRhZ2XigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1wYWNrZXQtbG9zcy1wZXJjZW50YWdlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxhdWRpby10eXBl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tYXVkaW8tdHlwZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcYml0cmF0ZS10eXBl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tYml0cmF0ZS10eXBlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0T3B1c1BhcnNlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCNHc3RPcHVzUGFyc2Utc3RydWN0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0UnRwT1BVU1BheSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sI0dzdFJ0cE9QVVNQYXktc3RydWN0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0UlRQT3B1c0RlcGF5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCNHc3RSVFBPcHVzRGVwYXktc3RydWN0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0UGNhcFBhcnNlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UuaHRtbCNHc3RQY2FwUGFyc2Utc3RydWN0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxkc3QtaXDigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sI0dzdFBjYXBQYXJzZS0tZHN0LWlwIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxkc3QtcG9ydOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwjR3N0UGNhcFBhcnNlLS1kc3QtcG9ydCIvPgpAQCAtNDgyLDExICs0NTksMTEgQEAKICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHpvb23igJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5odG1sI0dzdFNxdWFyZS0tem9vbSIvPgogICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdFN0cmV0Y2giIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2guaHRtbCNHc3RTdHJldGNoLXN0cnVjdCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcaW50ZW5zaXR54oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmh0bWwjR3N0U3RyZXRjaC0taW50ZW5zaXR5Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0VGVtcGxhdGVNYXRjaCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI0dzdFRlbXBsYXRlTWF0Y2gtc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0VGVtcGxhdGVNYXRjaCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI0dzdFRlbXBsYXRlTWF0Y2giLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGRpc3BsYXnigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNHc3RUZW1wbGF0ZU1hdGNoLS1kaXNwbGF5Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxtZXRob2TigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNHc3RUZW1wbGF0ZU1hdGNoLS1tZXRob2QiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHRlbXBsYXRl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwjR3N0VGVtcGxhdGVNYXRjaC0tdGVtcGxhdGUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RPcGVuY3ZUZXh0T3ZlcmxheSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheS1zdHJ1Y3QiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RPcGVuY3ZUZXh0T3ZlcmxheSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheSIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcY29sb3JC4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI0dzdE9wZW5jdlRleHRPdmVybGF5LS1jb2xvckIiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGNvbG9yR+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheS0tY29sb3JHIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxjb2xvclLigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjR3N0T3BlbmN2VGV4dE92ZXJsYXktLWNvbG9yUiIvPgpAQCAtNTE0LDYgKzQ5MSw5IEBACiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJx3aWR0aOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI0dzdFZpZGVvUGFyc2UtLXdpZHRoIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxpbnRlcmxhY2Vk4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjR3N0VmlkZW9QYXJzZS0taW50ZXJsYWNlZCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcdG9wLWZpZWxkLWZpcnN04oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjR3N0VmlkZW9QYXJzZS0tdG9wLWZpZWxkLWZpcnN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxmcmFtZXNpemXigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbCNHc3RWaWRlb1BhcnNlLS1mcmFtZXNpemUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnG9mZnNldHPigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbCNHc3RWaWRlb1BhcnNlLS1vZmZzZXRzIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxzdHJpZGVz4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjR3N0VmlkZW9QYXJzZS0tc3RyaWRlcyIvPgogICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdFdhdGVyUmlwcGxlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5odG1sI0dzdFdhdGVyUmlwcGxlLXN0cnVjdCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcYW1wbGl0dWRl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5odG1sI0dzdFdhdGVyUmlwcGxlLS1hbXBsaXR1ZGUiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHBoYXNl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5odG1sI0dzdFdhdGVyUmlwcGxlLS1waGFzZSIvPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWNjdXJpcC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWNjdXJpcC5odG1sCmluZGV4IDA1M2ZiYWEuLmQyMzcxNzEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFjY3VyaXAuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hY2N1cmlwLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5hY2N1cmlwOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hY2N1cmlwLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTU3LDcgKzU3LDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0QWNjdXJpcCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFjY3VyaXAub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFpZmZtdXguaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFpZmZtdXguaHRtbAppbmRleCBiOTE1ODZlLi43ZjQ0YTg1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1haWZmbXV4Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWlmZm11eC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+YWlmZm11eDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1haWZmcGFyc2UuaHRtbCIgdGl0bGU9ImFpZmZwYXJzZSI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8YSBuYW1lPSJHc3RBaWZmTXV4Ij48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWlmZm11eC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWlmZnBhcnNlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1haWZmcGFyc2UuaHRtbAppbmRleCAyNTgxOTNiLi43NWY3NGYxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1haWZmcGFyc2UuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1haWZmcGFyc2UuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmFpZmZwYXJzZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hY2N1cmlwLmh0bWwiIHRpdGxlPSJhY2N1cmlwIj4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxhIG5hbWU9IkdzdEFpZmZQYXJzZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFpZmZwYXJzZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNjgsNyArNjgsNyBAQAogPHA+CiA8L3A+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Ci1nc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249c2luZS5haWZmICEgYWlmZnBhcnNlICEgYXVkaW9jb252ZXJ0ICEgYWxzYXNpbmsKK2dzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249c2luZS5haWZmICEgYWlmZnBhcnNlICEgYXVkaW9jb252ZXJ0ICEgYWxzYXNpbmsKIDwvcHJlPgogPHA+CiBSZWFkIGEgYWlmZiBmaWxlIGFuZCBvdXRwdXQgdG8gdGhlIHNvdW5kY2FyZCB1c2luZyB0aGUgQUxTQSBlbGVtZW50LiBUaGUKQEAgLTc3LDcgKzc3LDcgQEAKIDxwPgogPC9wPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgotZ3N0LWxhdW5jaCBzb3VwaGh0cHNyYyBsb2NhdGlvbj1odHRwOi8vd3d3LmV4YW1wbGUub3JnL3NpbmUuYWlmZiAhIHF1ZXVlICEgYWlmZnBhcnNlICEgYXVkaW9jb252ZXJ0ICEgYWxzYXNpbmsKK2dzdC1sYXVuY2gtMS4wIHNvdXBodHRwc3JjIGxvY2F0aW9uPWh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2luZS5haWZmICEgcXVldWUgISBhaWZmcGFyc2UgISBhdWRpb2NvbnZlcnQgISBhbHNhc2luawogPC9wcmU+CiA8cD4KIFN0cmVhbSBkYXRhIGZyb20gYSBuZXR3b3JrIHVybC4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXNzcmVuZGVyLmh0bWwKaW5kZXggZDU0YjEzMC4uYTExNzc0MyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXNzcmVuZGVyLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXNzcmVuZGVyLmh0bWwKQEAgLTMsMTEgKzMsMTEgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmFzc3JlbmRlcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1haWZmbXV4Lmh0bWwiIHRpdGxlPSJhaWZmbXV4Ij4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sIiB0aXRsZT0iYXVkaW9taXhlciI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sIiB0aXRsZT0iYXVkaW9pbnRlcmxlYXZlIj4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CiA8L2hlYWQ+CkBAIC0yMiw3ICsyMiw3IEBACiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMS5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1haWZmbXV4Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb21peGVyLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXNzcmVuZGVyIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC02Miw3ICs2Miw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdEFzc1JlbmRlciI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNThlNjBmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwKQEAgLTAsMCArMSwyMDYgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT5hdWRpb2ludGVybGVhdmU6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+Cis8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+Cis8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hc3NyZW5kZXIuaHRtbCIgdGl0bGU9ImFzc3JlbmRlciI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbCIgdGl0bGU9ImF1ZGlvbWl4ZXIiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KKzx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Cis8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KKzxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2ludGVyZmFjZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmltcGxlbWVudGVkLWludGVyZmFjZXMiIGNsYXNzPSJzaG9ydGN1dCI+SW1wbGVtZW50ZWQgSW50ZXJmYWNlczwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9wcm9wZXJ0aWVzIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5wcm9wZXJ0aWVzIiBjbGFzcz0ic2hvcnRjdXQiPlByb3BlcnRpZXM8L2E+PC9zcGFuPgorPC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAxLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzwvdHI+PC90YWJsZT4KKzxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZSI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KKzx0ZCB2YWxpZ249InRvcCI+Cis8aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS50b3Bfb2ZfcGFnZSI+PC9hPmF1ZGlvaW50ZXJsZWF2ZTwvc3Bhbj48L2gyPgorPHA+YXVkaW9pbnRlcmxlYXZlPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KKzwvdHI+PC90YWJsZT48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgorPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX2ZsYWdzIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1WYWx1ZS1hcnJheXMuaHRtbCNHVmFsdWVBcnJheSI+PHNwYW4gY2xhc3M9InR5cGUiPkdWYWx1ZUFycmF5PC9zcGFuPjwvYT7CoCo8L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwjR3N0QXVkaW9JbnRlcmxlYXZlLS1jaGFubmVsLXBvc2l0aW9ucyIgdGl0bGU9IlRoZSDigJxjaGFubmVsLXBvc2l0aW9uc+KAnSBwcm9wZXJ0eSI+Y2hhbm5lbC1wb3NpdGlvbnM8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI0dzdEF1ZGlvSW50ZXJsZWF2ZS0tY2hhbm5lbC1wb3NpdGlvbnMtZnJvbS1pbnB1dCIgdGl0bGU9IlRoZSDigJxjaGFubmVsLXBvc2l0aW9ucy1mcm9tLWlucHV04oCdIHByb3BlcnR5Ij5jaGFubmVsLXBvc2l0aW9ucy1mcm9tLWlucHV0PC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8YSBuYW1lPSJHc3RBdWRpb0ludGVybGVhdmUiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KKzxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwjR3N0QXVkaW9JbnRlcmxlYXZlLXN0cnVjdCIgdGl0bGU9InN0cnVjdCBHc3RBdWRpb0ludGVybGVhdmUiPkdzdEF1ZGlvSW50ZXJsZWF2ZTwvYT48L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Cis8cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgorICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgorICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhZC1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvci5odG1sI0dzdEFnZ3JlZ2F0b3IiPkdzdEFnZ3JlZ2F0b3I8L2E+CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEF1ZGlvQWdncmVnYXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0QXVkaW9JbnRlcmxlYXZlCis8L3ByZT4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmltcGxlbWVudGVkLWludGVyZmFjZXMiPjwvYT48aDI+SW1wbGVtZW50ZWQgSW50ZXJmYWNlczwvaDI+Cis8cD4KK0dzdEF1ZGlvSW50ZXJsZWF2ZSBpbXBsZW1lbnRzCisgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2hpbGRQcm94eS5odG1sIj5Hc3RDaGlsZFByb3h5PC9hPi48L3A+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+Cis8aDI+U3lub3BzaXM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iaWQtMS4yLjYuOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgorPGNvbGdyb3VwPgorPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorPGNvbD4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnBsdWdpbjwvc3Bhbj48L3A+PC90ZD4KKzx0ZD4KKyAgICAgICAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXVkaW9taXhlci5odG1sI3BsdWdpbi1hdWRpb21peGVyIj5hdWRpb21peGVyPC9hPgorICAgICAgICAgIDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5hdXRob3I8L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+T2xpdmllciBDcmV0ZSAmbHQ7b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY29tJmd0OzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5jbGFzczwvc3Bhbj48L3A+PC90ZD4KKzx0ZD5HZW5lcmljL0F1ZGlvPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iaWQtMS4yLjYuOC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Cis8Y29sZ3JvdXA+Cis8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Cis8Y29sPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+bmFtZTwvc3Bhbj48L3A+PC90ZD4KKzx0ZD5zaW5rXyV1PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRpcmVjdGlvbjwvc3Bhbj48L3A+PC90ZD4KKzx0ZD5zaW5rPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnByZXNlbmNlPC9zcGFuPjwvcD48L3RkPgorPHRkPnJlcXVlc3Q8L3RkPgorPC90cj4KKzx0cj4KKzx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KKzx0ZD5hdWRpby94LXJhdywgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KTEsIGZvcm1hdD0oc3RyaW5nKXsgUzgsIFU4LCBTMTZMRSwgUzE2QkUsIFUxNkxFLCBVMTZCRSwgUzI0XzMyTEUsIFMyNF8zMkJFLCBVMjRfMzJMRSwgVTI0XzMyQkUsIFMzMkxFLCBTMzJCRSwgVTMyTEUsIFUzMkJFLCBTMjRMRSwgUzI0QkUsIFUyNExFLCBVMjRCRSwgUzIwTEUsIFMyMEJFLCBVMjBMRSwgVTIwQkUsIFMxOExFLCBTMThCRSwgVTE4TEUsIFUxOEJFLCBGMzJMRSwgRjMyQkUsIEY2NExFLCBGNjRCRSB9LCBsYXlvdXQ9KHN0cmluZyl7IG5vbi1pbnRlcmxlYXZlZCwgaW50ZXJsZWF2ZWQgfTwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgorPGNvbGdyb3VwPgorPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorPGNvbD4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+c3JjPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRpcmVjdGlvbjwvc3Bhbj48L3A+PC90ZD4KKzx0ZD5zb3VyY2U8L3RkPgorPC90cj4KKzx0cj4KKzx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cHJlc2VuY2U8L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+YWx3YXlzPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRldGFpbHM8L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+YXVkaW8veC1yYXcsIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZm9ybWF0PShzdHJpbmcpeyBTOCwgVTgsIFMxNkxFLCBTMTZCRSwgVTE2TEUsIFUxNkJFLCBTMjRfMzJMRSwgUzI0XzMyQkUsIFUyNF8zMkxFLCBVMjRfMzJCRSwgUzMyTEUsIFMzMkJFLCBVMzJMRSwgVTMyQkUsIFMyNExFLCBTMjRCRSwgVTI0TEUsIFUyNEJFLCBTMjBMRSwgUzIwQkUsIFUyMExFLCBVMjBCRSwgUzE4TEUsIFMxOEJFLCBVMThMRSwgVTE4QkUsIEYzMkxFLCBGMzJCRSwgRjY0TEUsIEY2NEJFIH0sIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPHA+PC9wPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEF1ZGlvSW50ZXJsZWF2ZS1zdHJ1Y3QiPjwvYT48aDM+c3RydWN0IEdzdEF1ZGlvSW50ZXJsZWF2ZTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEF1ZGlvSW50ZXJsZWF2ZTs8L3ByZT4KKzxwPlRoZSBHc3RBdWRpb0ludGVybGVhdmUgb2JqZWN0IHN0cnVjdHVyZS48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLnByb3BlcnR5LWRldGFpbHMiPjwvYT48aDI+UHJvcGVydHkgRGV0YWlsczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RBdWRpb0ludGVybGVhdmUtLWNoYW5uZWwtcG9zaXRpb25zIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcY2hhbm5lbC1wb3NpdGlvbnPigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGNoYW5uZWwtcG9zaXRpb25z4oCdICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVZhbHVlLWFycmF5cy5odG1sI0dWYWx1ZUFycmF5Ij48c3BhbiBjbGFzcz0idHlwZSI+R1ZhbHVlQXJyYXk8L3NwYW4+PC9hPsKgKjwvcHJlPgorPHA+Q2hhbm5lbCBwb3NpdGlvbnMgdXNlZCBvbiB0aGUgb3V0cHV0LjwvcD4KKzxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEF1ZGlvSW50ZXJsZWF2ZS0tY2hhbm5lbC1wb3NpdGlvbnMtZnJvbS1pbnB1dCI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGNoYW5uZWwtcG9zaXRpb25zLWZyb20taW5wdXTigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGNoYW5uZWwtcG9zaXRpb25zLWZyb20taW5wdXTigJ0gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvcHJlPgorPHA+VGFrZSBjaGFubmVsIHBvc2l0aW9ucyBmcm9tIHRoZSBpbnB1dC48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPHA+RGVmYXVsdCB2YWx1ZTogVFJVRTwvcD4KKzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvb3RlciI+Cis8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb21peGVyLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb21peGVyLmh0bWwKaW5kZXggNzJmNTgwZi4uOTc1YjU0YyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbApAQCAtMywxMCArMywxMCBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+YXVkaW9taXhlcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hc3NyZW5kZXIuaHRtbCIgdGl0bGU9ImFzc3JlbmRlciI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sIiB0aXRsZT0iYXVkaW9pbnRlcmxlYXZlIj4KIDxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXV0b2NvbnZlcnQuaHRtbCIgdGl0bGU9ImF1dG9jb252ZXJ0Ij4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CkBAIC0yMiw3ICsyMiw3IEBACiA8L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDEuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXNzcmVuZGVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1dG9jb252ZXJ0Lmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgpAQCAtMzYsNyArMzYsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC03NCw3ICs3NCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdEF1ZGlvTWl4ZXIiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb21peGVyLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC05NCw2ICs5NCw3IEBACiAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFkLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yLmh0bWwjR3N0QWdncmVnYXRvciI+R3N0QWdncmVnYXRvcjwvYT4KICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0QXVkaW9BZ2dyZWdhdG9yCiAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RBdWRpb01peGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0TGl2ZUFkZGVyCiA8L3ByZT4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgpAQCAtMTE4LDEzICsxMTksMTMgQEAKIDwvbGk+CiA8L3VsPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjYuOC42Ij48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjcuOC42Ij48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgogICAgICAgPHRyPgogICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggYXVkaW90ZXN0c3JjIGZyZXE8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xMDA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb21peGVyIG5hbWU8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj5taXggPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYWxzYXNpbmsgYXVkaW90ZXN0c3JjIGZyZXE8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj41MDA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBtaXg8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Ljwvc3Bhbj48L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gYXVkaW90ZXN0c3JjIGZyZXE8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xMDA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb21peGVyIG5hbWU8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj5taXggPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYWxzYXNpbmsgYXVkaW90ZXN0c3JjIGZyZXE8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj41MDA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBtaXg8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Ljwvc3Bhbj48L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgogICA8L3RhYmxlPgpAQCAtMTM0LDcgKzEzNSw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjYuOC43LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNy44LjcuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNjAsNyArMTYxLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjYuOC43LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43LjguNy4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXV0b2NvbnZlcnQuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1dG9jb252ZXJ0Lmh0bWwKaW5kZXggMmM3YmZkNi4uMWJmZjY0ZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXV0b2NvbnZlcnQuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdXRvY29udmVydC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+YXV0b2NvbnZlcnQ6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sIiB0aXRsZT0iYXVkaW9taXhlciI+CkBAIC0zNiw3ICszNiw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdXRvY29udmVydC5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01OCw3ICs1OCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdEF1dG9Db252ZXJ0Ij48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXV0b2NvbnZlcnQub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTk4LDcgKzk4LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNy44LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi44LjguNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEyNCw3ICsxMjQsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNy44LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjguOC40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1iczJiLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1iczJiLmh0bWwKaW5kZXggOTY0MzE3MC4uMzg4MjBkYiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnMyYi5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJzMmIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmJzMmI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXV0b2NvbnZlcnQuaHRtbCIgdGl0bGU9ImF1dG9jb252ZXJ0Ij4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJzMmIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTQ5LDcgKzQ5LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuOC40LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi45LjQuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTc1LDcgKzc1LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjguNC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi45LjQuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2UuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1bGdlLmh0bWwKaW5kZXggMDY0NDMzOC4uMDcwYjI4NSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2UuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idWxnZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+YnVsZ2U6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnMyYi5odG1sIiB0aXRsZT0iYnMyYiI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idWxnZS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01MCw3ICs1MCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdEJ1bGdlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2Uub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTc2LDEwICs3NiwyNiBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idWxnZS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD5CdWdsZSBpcyBhIGdlb21ldHJpYyBpbWFnZSB0cmFuc2Zvcm0gZWxlbWVudC4gSXQgYWRkcyBhIHByb3R1YmVyYW5jZSBpbiB0aGUKK2NlbnRlciBwb2ludC48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KKyAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CisgICAgPHRib2R5PgorICAgICAgPHRyPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBidWxnZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90Ym9keT4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuOS43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xMC43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMDUsNyArMTIxLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjkuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xMC43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE3OSw2ICsxOTUsMTAgQEAKIDxwPkRlZmF1bHQgdmFsdWU6IDM8L3A+CiA8L2Rpdj4KIDwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2Uuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+Z2VvbWV0cmljdHJhbnNmb3JtPC9wPgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CiA8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1cm4uaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1cm4uaHRtbAppbmRleCBmM2Y1ZDYyLi5jZGY0MGI4IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idXJuLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVybi5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+YnVybjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idWxnZS5odG1sIiB0aXRsZT0iYnVsZ2UiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVybi5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01Nyw3ICs1Nyw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdEJ1cm4iPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idXJuLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC04MywxMyArODMsMTMgQEAKIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1cm4uZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPHA+QnVybiBhZGp1c3RzIHRoZSBjb2xvcnMgb2YgYSB2aWRlbyBzdHJlYW0gaW4gcmVhbHRpbWUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xMS43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYnVybiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBidXJuIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgogICA8L3RhYmxlPgpAQCAtOTksNyArOTksNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xMS43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMjUsNyArMTI1LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTEuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jYW1lcmFiaW4uaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNhbWVyYWJpbi5odG1sCmluZGV4IDU3N2RiZjMuLmNkMTQ4NWIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNhbWVyYWJpbi5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNhbWVyYWJpbi5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Y2FtZXJhYmluOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1cm4uaHRtbCIgdGl0bGU9ImJ1cm4iPgpAQCAtMzYsNyArMzYsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xMS4zLjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xMi4zLjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC02Miw3ICs2Miw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xMS4zLjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjEyLjMuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8L2Rpdj4KIDwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaHJvbWl1bS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2hyb21pdW0uaHRtbAppbmRleCA0MDEyYmQ1Li5lMmJlMDI4IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaHJvbWl1bS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNocm9taXVtLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5jaHJvbWl1bTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jYW1lcmFiaW4uaHRtbCIgdGl0bGU9ImNhbWVyYWJpbiI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaHJvbWl1bS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC03NSwxMyArNzUsMTMgQEAKIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNocm9taXVtLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxwPkNocm9taXVtIGJyZWFrcyB0aGUgY29sb3JzIG9mIGEgdmlkZW8gc3RyZWFtIGluIHJlYWx0aW1lLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xMi42LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTMuNi4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgogICAgICAgPHRyPgogICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGNocm9taXVtIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGNocm9taXVtIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgogICA8L3RhYmxlPgpAQCAtOTEsNyArOTEsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xMi42LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xMy42LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMTcsNyArMTE3LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjEyLjYuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTMuNi40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaXJjbGUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNpcmNsZS5odG1sCmluZGV4IDVlYjEyNDkuLjdlMGU5ODYgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNpcmNsZS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNpcmNsZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Y2lyY2xlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNocm9taXVtLmh0bWwiIHRpdGxlPSJjaHJvbWl1bSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaXJjbGUucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNjIsNyArNjIsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RDaXJjbGUiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaXJjbGUub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTg4LDEwICs4OCwyNiBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaXJjbGUuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+Q2lyY2xlIGlzIGEgZ2VvbWV0cmljIGltYWdlIHRyYW5zZm9ybSBlbGVtZW50LiBJdCB3YXJwcyB0aGUgcGljdHVyZSBpbnRvIGFuCithcmMgc2hhcGVkIGZvcm0uPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iaWQtMS4yLjE0LjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CisgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorICAgIDx0Ym9keT4KKyAgICAgIDx0cj4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gY2lyY2xlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgPC90cj4KKyAgICA8L3Rib2R5PgorICA8L3RhYmxlPgorPC9kaXY+CisKKzwvZGl2PgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xMy43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xNC43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMTcsNyArMTMzLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjEzLjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTQuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0yMDcsNiArMjIzLDEwIEBACiA8cD5EZWZhdWx0IHZhbHVlOiAzLjE0MTU5PC9wPgogPC9kaXY+CiA8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNpcmNsZS5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD5nZW9tZXRyaWN0cmFuc2Zvcm08L3A+Cis8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KIDxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29sb3JlZmZlY3RzLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb2xvcmVmZmVjdHMuaHRtbAppbmRleCA5NTgwOGM0Li5lMGZlZjEwIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb2xvcmVmZmVjdHMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb2xvcmVmZmVjdHMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmNvbG9yZWZmZWN0czogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaXJjbGUuaHRtbCIgdGl0bGU9ImNpcmNsZSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb2xvcmVmZmVjdHMucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RDb2xvckVmZmVjdHMiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb2xvcmVmZmVjdHMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTc2LDE0ICs3NiwxNCBAQAogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29sb3JlZmZlY3RzLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxwPk1hcCBjb2xvcnMgb2YgdGhlIHZpZGVvIGlucHV0IHRvIGEgbG9va3VwIHRhYmxlPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjE0LjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xNS43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjEKIDI8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gY29sb3JlZmZlY3RzIHByZXNldDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPmhlYXQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBjb2xvcmVmZmVjdHMgcHJlc2V0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+aGVhdCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPgogICAgIGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgpAQCAtOTQsNyArOTQsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xNC43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xNS43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMjAsNyArMTIwLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjE0LjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTUuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb21wb3NpdG9yLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb21wb3NpdG9yLmh0bWwKaW5kZXggOWE5ODJlMy4uNjY5MjJmMSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29tcG9zaXRvci5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbXBvc2l0b3IuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmNvbXBvc2l0b3I6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29sb3JlZmZlY3RzLmh0bWwiIHRpdGxlPSJjb2xvcmVmZmVjdHMiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29tcG9zaXRvci5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC0xMDAsNyArMTAwLDcgQEAKIDwvbGk+CiA8L3VsPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjE1LjcuNiI+PC9hPjxoMz5TYW1wbGUgcGlwZWxpbmVzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xNi43LjYiPjwvYT48aDM+U2FtcGxlIHBpcGVsaW5lczwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CkBAIC0xOTksNyArMTk5LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTUuNy43LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTYuNy43LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMjI1LDcgKzIyNSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xNS43LjcuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjE2LjcuNy4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwKaW5kZXggMmNlNTliZi4uY2RiMTBiOCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Y3ZkaWxhdGU6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29tcG9zaXRvci5odG1sIiB0aXRsZT0iY29tcG9zaXRvciI+CkBAIC0xNSw4ICsxNSw3IEBACiA8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgogPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+CiA8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPgorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj4KIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMS5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+CkBAIC0zMiwzOCArMzEsMjUgQEAKIDwvdGQ+CiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+Ci08YSBuYW1lPSJHc3RDdkRpbGF0ZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CiA8L2NvbGdyb3VwPgogPHRib2R5Pjx0cj4KIDx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwjR3N0Q3ZEaWxhdGUtc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdEN2RGlsYXRlIj5Hc3RDdkRpbGF0ZTwvYT48L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuaHRtbCNHc3RDdkRpbGF0ZSIgdGl0bGU9InN0cnVjdCBHc3RDdkRpbGF0ZSI+R3N0Q3ZEaWxhdGU8L2E+PC90ZD4KIDwvdHI+PC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci1saWJzL2h0bWwvR3N0QmFzZVRyYW5zZm9ybS5odG1sIj5Hc3RCYXNlVHJhbnNmb3JtPC9hPgotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW9maWx0ZXIuaHRtbCNHc3RWaWRlb0ZpbHRlciI+R3N0VmlkZW9GaWx0ZXI8L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RPcGVuY3ZWaWRlb0ZpbHRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEN2RGlsYXRlRXJvZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0Q3ZEaWxhdGUKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjE2LjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjE3LjQuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTg5LDcgKzc1LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjE2LjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTcuNC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0yNDQsOCArMjMwLDExIEBACiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0Q3ZEaWxhdGUtc3RydWN0Ij48L2E+PGgzPnN0cnVjdCBHc3RDdkRpbGF0ZTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEN2RGlsYXRlOzwvcHJlPgorPGEgbmFtZT0iR3N0Q3ZEaWxhdGUiPjwvYT48aDM+c3RydWN0IEdzdEN2RGlsYXRlPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0Q3ZEaWxhdGUgeworICBHc3RDdkRpbGF0ZUVyb2RlIGVsZW1lbnQ7Cit9OworPC9wcmU+CiA8L2Rpdj4KIDwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbAppbmRleCBkNDI1OTM1Li5iYzE2YzI2IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5jdmVxdWFsaXplaGlzdDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmh0bWwiIHRpdGxlPSJjdmVyb2RlIj4KQEAgLTE1LDggKzE1LDcgQEAKIDx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+CiA8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KIDxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+CisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPgogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAxLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KQEAgLTMyLDM3ICszMSwyNSBAQAogPC90ZD4KIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KLTxhIG5hbWU9IkdzdEN2RXF1YWxpemVIaXN0Ij48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3Qub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KIDwvY29sZ3JvdXA+CiA8dGJvZHk+PHRyPgogPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbCNHc3RDdkVxdWFsaXplSGlzdC1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0Q3ZFcXVhbGl6ZUhpc3QiPkdzdEN2RXF1YWxpemVIaXN0PC9hPjwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5odG1sI0dzdEN2RXF1YWxpemVIaXN0IiB0aXRsZT0ic3RydWN0IEdzdEN2RXF1YWxpemVIaXN0Ij5Hc3RDdkVxdWFsaXplSGlzdDwvYT48L3RkPgogPC90cj48L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3Qub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyLWxpYnMvaHRtbC9Hc3RCYXNlVHJhbnNmb3JtLmh0bWwiPkdzdEJhc2VUcmFuc2Zvcm08L2E+Ci0gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlb2ZpbHRlci5odG1sI0dzdFZpZGVvRmlsdGVyIj5Hc3RWaWRlb0ZpbHRlcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdE9wZW5jdlZpZGVvRmlsdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0Q3ZFcXVhbGl6ZUhpc3QKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjE4LjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjE5LjQuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTg4LDcgKzc1LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjE4LjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTkuNC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNDcsOCArMTM0LDExIEBACiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0Q3ZFcXVhbGl6ZUhpc3Qtc3RydWN0Ij48L2E+PGgzPnN0cnVjdCBHc3RDdkVxdWFsaXplSGlzdDwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEN2RXF1YWxpemVIaXN0OzwvcHJlPgorPGEgbmFtZT0iR3N0Q3ZFcXVhbGl6ZUhpc3QiPjwvYT48aDM+c3RydWN0IEdzdEN2RXF1YWxpemVIaXN0PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0Q3ZFcXVhbGl6ZUhpc3QgeworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBlbGVtZW50OworfTsKKzwvcHJlPgogPC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5odG1sCmluZGV4IDVlMWMyOTMuLjFjMTY1YjMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5jdmVyb2RlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwiIHRpdGxlPSJjdmRpbGF0ZSI+CkBAIC0xNSw4ICsxNSw3IEBACiA8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgogPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+CiA8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj4KIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMS5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+CkBAIC0zMiwzOCArMzEsMjUgQEAKIDwvdGQ+CiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+Ci08YSBuYW1lPSJHc3RDdkVyb2RlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgogPC9jb2xncm91cD4KIDx0Ym9keT48dHI+CiA8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmh0bWwjR3N0Q3ZFcm9kZS1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0Q3ZFcm9kZSI+R3N0Q3ZFcm9kZTwvYT48L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5odG1sI0dzdEN2RXJvZGUiIHRpdGxlPSJzdHJ1Y3QgR3N0Q3ZFcm9kZSI+R3N0Q3ZFcm9kZTwvYT48L3RkPgogPC90cj48L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgotPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+Ci0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KLSAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KLSAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+R3N0RWxlbWVudDwvYT4KLSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXItbGlicy9odG1sL0dzdEJhc2VUcmFuc2Zvcm0uaHRtbCI+R3N0QmFzZVRyYW5zZm9ybTwvYT4KLSAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvZmlsdGVyLmh0bWwjR3N0VmlkZW9GaWx0ZXIiPkdzdFZpZGVvRmlsdGVyPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0T3BlbmN2VmlkZW9GaWx0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RDdkRpbGF0ZUVyb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEN2RXJvZGUKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTcuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTguNC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtODksNyArNzUsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTcuNi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xOC40LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTI0NCw4ICsyMzAsMTEgQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEN2RXJvZGUtc3RydWN0Ij48L2E+PGgzPnN0cnVjdCBHc3RDdkVyb2RlPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0Q3ZFcm9kZTs8L3ByZT4KKzxhIG5hbWU9IkdzdEN2RXJvZGUiPjwvYT48aDM+c3RydWN0IEdzdEN2RXJvZGU8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RDdkVyb2RlIHsKKyAgR3N0Q3ZEaWxhdGVFcm9kZSBlbGVtZW50OworfTsKKzwvcHJlPgogPC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbAppbmRleCAxODYxZDA3Li4wMGY5MzAzIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmN2bGFwbGFjZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5odG1sIiB0aXRsZT0iY3ZlcXVhbGl6ZWhpc3QiPgpAQCAtMTUsOCArMTUsNyBAQAogPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KIDx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgogPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UucHJvcGVydGllcyIgY2xhc3M9InNob3J0Y3V0Ij5Qcm9wZXJ0aWVzPC9hPjwvc3Bhbj4KIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgpAQCAtMzUsNTAgKzM0LDU1IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgogPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX2ZsYWdzIj4KIDwvY29sZ3JvdXA+Ci08dGJvZHk+PHRyPgorPHRib2R5PgorPHRyPgogPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPjwvdGQ+CiA8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNHc3RDdkxhcGxhY2UtLWFwZXJ0dXJlLXNpemUiIHRpdGxlPSJUaGUg4oCcYXBlcnR1cmUtc2l6ZeKAnSBwcm9wZXJ0eSI+YXBlcnR1cmUtc2l6ZTwvYT48L3RkPgogPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KLTwvdHI+PC90Ym9keT4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0idHlwZSI+Z2RvdWJsZTwvc3Bhbj48L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZS0tc2NhbGUiIHRpdGxlPSJUaGUg4oCcc2NhbGXigJ0gcHJvcGVydHkiPnNjYWxlPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZG91YmxlPC9zcGFuPjwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlLS1zaGlmdCIgdGl0bGU9IlRoZSDigJxzaGlmdOKAnSBwcm9wZXJ0eSI+c2hpZnQ8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZS0tbWFzayIgdGl0bGU9IlRoZSDigJxtYXNr4oCdIHByb3BlcnR5Ij5tYXNrPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgorPC90cj4KKzwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+Ci08YSBuYW1lPSJHc3RDdkxhcGxhY2UiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2Uub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KIDwvY29sZ3JvdXA+CiA8dGJvZHk+PHRyPgogPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlLXN0cnVjdCIgdGl0bGU9InN0cnVjdCBHc3RDdkxhcGxhY2UiPkdzdEN2TGFwbGFjZTwvYT48L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlIiB0aXRsZT0ic3RydWN0IEdzdEN2TGFwbGFjZSI+R3N0Q3ZMYXBsYWNlPC9hPjwvdGQ+CiA8L3RyPjwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2Uub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyLWxpYnMvaHRtbC9Hc3RCYXNlVHJhbnNmb3JtLmh0bWwiPkdzdEJhc2VUcmFuc2Zvcm08L2E+Ci0gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlb2ZpbHRlci5odG1sI0dzdFZpZGVvRmlsdGVyIj5Hc3RWaWRlb0ZpbHRlcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdE9wZW5jdlZpZGVvRmlsdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0Q3ZMYXBsYWNlCi08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTkuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjAuNS4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTA0LDcgKzEwOCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xOS43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjIwLjUuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTI1LDcgKzEyOSw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylHUkFZOCwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC90ZD4KKzx0ZD52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpUkdCLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L3RkPgogPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgpAQCAtMTQ5LDcgKzE1Myw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylHUkFZMTZfTEUsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvdGQ+Cis8dGQ+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVJHQiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC90ZD4KIDwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KQEAgLTE2Myw4ICsxNjcsMjEgQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0Q3ZMYXBsYWNlLXN0cnVjdCI+PC9hPjxoMz5zdHJ1Y3QgR3N0Q3ZMYXBsYWNlPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0Q3ZMYXBsYWNlOzwvcHJlPgorPGEgbmFtZT0iR3N0Q3ZMYXBsYWNlIj48L2E+PGgzPnN0cnVjdCBHc3RDdkxhcGxhY2U8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RDdkxhcGxhY2UgeworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBlbGVtZW50OworCisgIGdpbnQgYXBlcnR1cmVfc2l6ZTsKKyAgZ2RvdWJsZSBzY2FsZTsKKyAgZ2RvdWJsZSBzaGlmdDsKKyAgZ2Jvb2xlYW4gbWFzazsKKworICBJcGxJbWFnZSAqaW50ZXJtZWRpYXJ5X2ltZzsKKyAgSXBsSW1hZ2UgKmN2R3JheTsKKyAgSXBsSW1hZ2UgKkxhcGxhY2U7CisgIElwbEltYWdlICpDTGFwbGFjZTsKK307Cis8L3ByZT4KIDwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CkBAIC0xNzcsNiArMTk0LDMyIEBACiA8cD5BbGxvd2VkIHZhbHVlczogWzEsN108L3A+CiA8cD5EZWZhdWx0IHZhbHVlOiAzPC9wPgogPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RDdkxhcGxhY2UtLXNjYWxlIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcc2NhbGXigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnHNjYWxl4oCdICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2RvdWJsZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdkb3VibGU8L3NwYW4+PC9hPjwvcHJlPgorPHA+U2NhbGUgZmFjdG9yLjwvcD4KKzxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Cis8cD5BbGxvd2VkIHZhbHVlczogJmd0Oz0gMDwvcD4KKzxwPkRlZmF1bHQgdmFsdWU6IDE8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEN2TGFwbGFjZS0tc2hpZnQiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxzaGlmdOKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcc2hpZnTigJ0gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0idHlwZSI+Z2RvdWJsZTwvc3Bhbj48L2E+PC9wcmU+Cis8cD5WYWx1ZSBhZGRlZCB0byB0aGUgc2NhbGVkIHNvdXJjZSBhcnJheSBlbGVtZW50cy48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPHA+QWxsb3dlZCB2YWx1ZXM6ICZndDs9IDA8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiAwPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RDdkxhcGxhY2UtLW1hc2siPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxtYXNr4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxtYXNr4oCdICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvcHJlPgorPHA+U2V0cyB3aGV0aGVyIHRoZSBkZXRlY3RlZCBlZGdlcyBzaG91bGQgYmUgdXNlZCBhcyBhIG1hc2sgb24gdGhlIG9yaWdpbmFsIGlucHV0IG9yIG5vdC48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPHA+RGVmYXVsdCB2YWx1ZTogVFJVRTwvcD4KKzwvZGl2PgogPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbAppbmRleCA4ODNhYmFhLi41OTIyMzhjIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5jdnNtb290aDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCIgdGl0bGU9ImN2bGFwbGFjZSI+CkBAIC0xNSw4ICsxNSw3IEBACiA8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgogPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+CiA8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9wcm9wZXJ0aWVzIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAogICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLnByb3BlcnRpZXMiIGNsYXNzPSJzaG9ydGN1dCI+UHJvcGVydGllczwvYT48L3NwYW4+CiA8L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KQEAgLTM1LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTkwLDM3ICs4OSwyNSBAQAogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KLTxhIG5hbWU9IkdzdEN2U21vb3RoIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGgub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KIDwvY29sZ3JvdXA+CiA8dGJvZHk+PHRyPgogPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNHc3RDdlNtb290aC1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0Q3ZTbW9vdGgiPkdzdEN2U21vb3RoPC9hPjwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI0dzdEN2U21vb3RoIiB0aXRsZT0ic3RydWN0IEdzdEN2U21vb3RoIj5Hc3RDdlNtb290aDwvYT48L3RkPgogPC90cj48L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGgub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyLWxpYnMvaHRtbC9Hc3RCYXNlVHJhbnNmb3JtLmh0bWwiPkdzdEJhc2VUcmFuc2Zvcm08L2E+Ci0gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlb2ZpbHRlci5odG1sI0dzdFZpZGVvRmlsdGVyIj5Hc3RWaWRlb0ZpbHRlcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdE9wZW5jdlZpZGVvRmlsdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0Q3ZTbW9vdGgKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjIwLjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjIxLjUuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE0Niw3ICsxMzMsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjAuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yMS41LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTIyMSw4ICsyMDgsMTggQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RDdlNtb290aC1zdHJ1Y3QiPjwvYT48aDM+c3RydWN0IEdzdEN2U21vb3RoPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0Q3ZTbW9vdGg7PC9wcmU+Cis8YSBuYW1lPSJHc3RDdlNtb290aCI+PC9hPjxoMz5zdHJ1Y3QgR3N0Q3ZTbW9vdGg8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RDdlNtb290aCB7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyIGVsZW1lbnQ7CisKKyAgZ2ludCB0eXBlOworCisgIGdpbnQgd2lkdGg7CisgIGdpbnQgaGVpZ2h0OworICBnZG91YmxlIGNvbG9yc2lnbWE7CisgIGdkb3VibGUgc3BhdGlhbHNpZ21hOworfTsKKzwvcHJlPgogPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KQEAgLTI3NCw3ICsyNzEsNyBAQAogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgogPGEgbmFtZT0iR3N0Q3ZTbW9vdGgtLWNvbG9yIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcY29sb3LigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGNvbG9y4oCdICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2RvdWJsZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdkb3VibGU8L3NwYW4+PC9hPjwvcHJlPgotPHA+SWYgdHlwZSBpcyBnYXVzc2lhbiwgdGhpcyBtZWFucyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uLklmIHR5cGUgaXMgYmlsYXRlcmFsLCB0aGlzIG1lYW5zIHRoZSBjb2xvci1zaWdtYS4gSWYgemVybywgRGVmYXVsdCB2YWx1ZXMgYXJlIHVzZWQuQ2hlY2sgY3ZTbW9vdGggT3BlbkNWIGRvY3M6IGh0dHA6Ly9vcGVuY3Yud2lsbG93Z2FyYWdlLmNvbS9kb2N1bWVudGF0aW9uL2ltYWdlX2ZpbHRlcmluZy5odG1sI2N2U21vb3RoLjwvcD4KKzxwPklmIHR5cGUgaXMgZ2F1c3NpYW4sIHRoaXMgbWVhbnMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi5JZiB0eXBlIGlzIGJpbGF0ZXJhbCwgdGhpcyBtZWFucyB0aGUgY29sb3Itc2lnbWEuIElmIHplcm8sIERlZmF1bHQgdmFsdWVzIGFyZSB1c2VkLjwvcD4KIDxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+CiA8cD5BbGxvd2VkIHZhbHVlczogJmd0Oz0gMDwvcD4KIDxwPkRlZmF1bHQgdmFsdWU6IDA8L3A+CkBAIC0yODMsMTYgKzI4MCwxNiBAQAogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgogPGEgbmFtZT0iR3N0Q3ZTbW9vdGgtLWhlaWdodCI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGhlaWdodOKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcaGVpZ2h04oCdICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+PC9wcmU+Ci08cD5UaGUgYXBlcnR1cmUgaGVpZ2h0LCBpZiB6ZXJvLCB0aGUgd2lkdGggaXMgdXNlZC4oTXVzdCBiZSBwb3NpdGl2ZSBhbmQgb2RkIG9yIHplcm8sIHVudXNldCBpbiBtZWRpYW4gYW5kIGJpbGF0ZXJhbCB0eXBlcykuIENoZWNrIGN2U21vb3RoIE9wZW5DViBkb2NzOiBodHRwOi8vb3BlbmN2LndpbGxvd2dhcmFnZS5jb20vZG9jdW1lbnRhdGlvbi9pbWFnZV9maWx0ZXJpbmcuaHRtbCNjdlNtb290aC48L3A+Cis8cD5UaGUgZ2F1c3NpYW4ga2VybmVsIGhlaWdodCAobXVzdCBiZSBwb3NpdGl2ZSBhbmQgb2RkKS48L3A+CiA8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgogPHA+QWxsb3dlZCB2YWx1ZXM6ICZndDs9IDA8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiAwPC9wPgorPHA+RGVmYXVsdCB2YWx1ZTogMzwvcD4KIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgogPGEgbmFtZT0iR3N0Q3ZTbW9vdGgtLXNwYXRpYWwiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxzcGF0aWFs4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxzcGF0aWFs4oCdICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZG91YmxlPC9zcGFuPjwvYT48L3ByZT4KLTxwPk9ubHkgdXNlZCBpbiBiaWxhdGVyYWwgdHlwZSwgbWVhbnMgdGhlIHNwYXRpYWwtc2lnbWEuQ2hlY2sgY3ZTbW9vdGggT3BlbkNWIGRvY3M6IGh0dHA6Ly9vcGVuY3Yud2lsbG93Z2FyYWdlLmNvbS9kb2N1bWVudGF0aW9uL2ltYWdlX2ZpbHRlcmluZy5odG1sI2N2U21vb3RoLjwvcD4KKzxwPk9ubHkgdXNlZCBpbiBiaWxhdGVyYWwgdHlwZSwgbWVhbnMgdGhlIHNwYXRpYWwtc2lnbWEuPC9wPgogPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KIDxwPkFsbG93ZWQgdmFsdWVzOiAmZ3Q7PSAwPC9wPgogPHA+RGVmYXVsdCB2YWx1ZTogMDwvcD4KQEAgLTMwMSw3ICsyOTgsNyBAQAogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgogPGEgbmFtZT0iR3N0Q3ZTbW9vdGgtLXdpZHRoIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcd2lkdGjigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnHdpZHRo4oCdICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPjwvcHJlPgotPHA+VGhlIGFwZXJ0dXJlIHdpZHRoIChNdXN0IGJlIHBvc2l0aXZlIGFuZCBvZGQpLkNoZWNrIGN2U21vb3RoIE9wZW5DViBkb2NzOiBodHRwOi8vb3BlbmN2LndpbGxvd2dhcmFnZS5jb20vZG9jdW1lbnRhdGlvbi9pbWFnZV9maWx0ZXJpbmcuaHRtbCNjdlNtb290aC48L3A+Cis8cD5UaGUgZ2F1c3NpYW4ga2VybmVsIHdpZHRoIChtdXN0IGJlIHBvc2l0aXZlIGFuZCBvZGQpLklmIHR5cGUgaXMgbWVkaWFuLCB0aGlzIG1lYW5zIHRoZSBhcGVydHVyZSBsaW5lYXIgc2l6ZS5DaGVjayBPcGVuQ1YgZG9jczogaHR0cDovL2RvY3Mub3BlbmN2Lm9yZy8yLjQvbW9kdWxlcy9pbWdwcm9jL2RvYy9maWx0ZXJpbmcuaHRtLjwvcD4KIDxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+CiA8cD5BbGxvd2VkIHZhbHVlczogJmd0Oz0gMTwvcD4KIDxwPkRlZmF1bHQgdmFsdWU6IDM8L3A+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwKaW5kZXggMmE0ZmIzOC4uOGU2OGY2ZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmN2c29iZWw6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCIgdGl0bGU9ImN2c21vb3RoIj4KQEAgLTE1LDggKzE1LDcgQEAKIDx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+CiA8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KIDxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCiAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5wcm9wZXJ0aWVzIiBjbGFzcz0ic2hvcnRjdXQiPlByb3BlcnRpZXM8L2E+PC9zcGFuPgogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CkBAIC0zNSw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTU3LDQwICs1NiwzMyBAQAogPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwtLXktb3JkZXIiIHRpdGxlPSJUaGUg4oCceS1vcmRlcuKAnSBwcm9wZXJ0eSI+eS1vcmRlcjwvYT48L3RkPgogPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KIDwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwtLW1hc2siIHRpdGxlPSJUaGUg4oCcbWFza+KAnSBwcm9wZXJ0eSI+bWFzazwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KKzwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgotPGEgbmFtZT0iR3N0Q3ZTb2JlbCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KIDwvY29sZ3JvdXA+CiA8dGJvZHk+PHRyPgogPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwtc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdEN2U29iZWwiPkdzdEN2U29iZWw8L2E+PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsIiB0aXRsZT0ic3RydWN0IEdzdEN2U29iZWwiPkdzdEN2U29iZWw8L2E+PC90ZD4KIDwvdHI+PC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyLWxpYnMvaHRtbC9Hc3RCYXNlVHJhbnNmb3JtLmh0bWwiPkdzdEJhc2VUcmFuc2Zvcm08L2E+Ci0gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlb2ZpbHRlci5odG1sI0dzdFZpZGVvRmlsdGVyIj5Hc3RWaWRlb0ZpbHRlcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdE9wZW5jdlZpZGVvRmlsdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0Q3ZTb2JlbAotPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yMS43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yMi41LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMTYsNyArMTA4LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjIxLjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjIuNS4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMzcsNyArMTI5LDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRldGFpbHM8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKUdSQVk4LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L3RkPgorPHRkPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylSR0IsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvdGQ+CiA8L3RyPgogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CkBAIC0xNjEsNyArMTUzLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRldGFpbHM8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKUdSQVkxNl9MRSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC90ZD4KKzx0ZD52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpUkdCLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L3RkPgogPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgpAQCAtMTc1LDggKzE2NywyMCBAQAogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0Q3ZTb2JlbC1zdHJ1Y3QiPjwvYT48aDM+c3RydWN0IEdzdEN2U29iZWw8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RDdlNvYmVsOzwvcHJlPgorPGEgbmFtZT0iR3N0Q3ZTb2JlbCI+PC9hPjxoMz5zdHJ1Y3QgR3N0Q3ZTb2JlbDwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEN2U29iZWwgeworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBlbGVtZW50OworCisgIGdpbnQgeF9vcmRlcjsKKyAgZ2ludCB5X29yZGVyOworICBnaW50IGFwZXJ0dXJlX3NpemU7CisgIGdib29sZWFuIG1hc2s7CisKKyAgSXBsSW1hZ2UgKmN2Q1NvYmVsOworICBJcGxJbWFnZSAqY3ZHcmF5OworICBJcGxJbWFnZSAqY3ZTb2JlbDsKK307Cis8L3ByZT4KIDwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CkBAIC0yMDcsNiArMjExLDE0IEBACiA8cD5BbGxvd2VkIHZhbHVlczogJmd0Oz0gR19NQVhVTE9ORzwvcD4KIDxwPkRlZmF1bHQgdmFsdWU6IDA8L3A+CiA8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEN2U29iZWwtLW1hc2siPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxtYXNr4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxtYXNr4oCdICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvcHJlPgorPHA+U2V0cyB3aGV0aGVyIHRoZSBkZXRlY3RlZCBkZXJpdmF0aXZlIGVkZ2VzIHNob3VsZCBiZSB1c2VkIGFzIGEgbWFzayBvbiB0aGUgb3JpZ2luYWwgaW5wdXQgb3Igbm90LjwvcD4KKzxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiBUUlVFPC9wPgorPC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRhdGF1cmlzcmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRhdGF1cmlzcmMuaHRtbAppbmRleCBmZDVkMjc4Li40NDVjODA2IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kYXRhdXJpc3JjLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGF0YXVyaXNyYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZGF0YXVyaXNyYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwiIHRpdGxlPSJjdnNvYmVsIj4KQEAgLTM2LDcgKzM2LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRhdGF1cmlzcmMucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTIsNyArNTIsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3REYXRhVVJJU3JjIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGF0YXVyaXNyYy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtODMsMTMgKzgzLDEzIEBACiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kYXRhdXJpc3JjLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxwPmRhdGF1cmlzcmMgaGFuZGxlcyBkYXRhOiBVUklzLCBzZWUgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMzk3IiB0YXJnZXQ9Il90b3AiPlJGQyAyMzk3PC9hPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjIuOC4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjIzLjguMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KICAgICAgIDx0cj4KICAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MC4xMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diBkYXRhdXJpc3JjIHVyaTxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPjxzcGFuIGNsYXNzPSJzdHJpbmciPiZxdW90O2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFmRWxFUVZRNGplMk13UW5BSUF4Rmd6aUE0RW5jeklzTzRNRVJPby9nelpXYzR4ZFRiZTFSNkxHUlI3NGhlWVM3aUtFbHpmY01pUm50NGhmOGdrOEVheUI2bHVlZnVlL0h6bEpmQ0E1MFhzTmpZUnhwclptZW5YTklLU0dFc0MrUVVxSzFoaGdqNTIxQnpobldXaWlsVUd2ZEY1UlM0TDJITVFaQ0NKeThzSE1tMlRZZEpBQUFBQUJKUlU1RXJrSmdnZz09JnF1b3Q7PC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gcG5nZGVjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGZyZWV6ZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgZGF0YXVyaXNyYyB1cmk8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj48c3BhbiBjbGFzcz0ic3RyaW5nIj4mcXVvdDtkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBZkVsRVFWUTRqZTJNd1FuQUlBeEZnemlBNEVuY3pJc080TUVST28vZ3paV2M0eGRUYmUxUjZMR1JSNzRoZVlTN2lLRWx6ZmNNaVJudDRoZjhnazhFYXlCNmx1ZWZ1ZS9IemxKZkNBNTBYc05qWVJ4cHJabWVuWE5JS1NHRXNDK1FVcUsxaGhnajUyMUJ6aG5XV2lpbFVHdmRGNVJTNEwySE1RWkNDSnk4c0hNbTJUWWRKQUFBQUFCSlJVNUVya0pnZ2c9PSZxdW90Ozwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHBuZ2RlYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBpbWFnZWZyZWV6ZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTk5LDcgKzk5LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjIuOC40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjMuOC40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTI1LDcgKzEyNSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yMi44LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjIzLjguNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5odG1sCmluZGV4IDViNzUzODQuLjhmZjRlMmQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpZmZ1c2UuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWZmdXNlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5kaWZmdXNlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRhdGF1cmlzcmMuaHRtbCIgdGl0bGU9ImRhdGF1cmlzcmMiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01MCw3ICs1MCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdERpZmZ1c2UiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWZmdXNlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC03NSwxMCArNzUsMjYgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD5EaWZmdXNlIGlzIGEgZ2VvbWV0cmljIGltYWdlIHRyYW5zZm9ybSBlbGVtZW50LiBJdCBkaWZmdXNlcyB0aGUgaW1hZ2UgYnkKK21vdmluZyBpdHMgcGl4ZWxzIGluIHJhbmRvbSBkaXJlY3Rpb25zLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi4yNC43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgorICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICA8dGJvZHk+CisgICAgICA8dHI+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGRpZmZ1c2UgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICA8L3RyPgorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjIzLjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjI0LjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEwNCw3ICsxMjAsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjMuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yNC43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE3OCw2ICsxOTQsMTAgQEAKIDxwPkRlZmF1bHQgdmFsdWU6IDQ8L3A+CiA8L2Rpdj4KIDwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD5nZW9tZXRyaWN0cmFuc2Zvcm08L3A+Cis8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KIDxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlsYXRlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWxhdGUuaHRtbAppbmRleCA0MzAyMWFhLi4xZjNiM2M2IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWxhdGUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWxhdGUuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmRpbGF0ZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWZmdXNlLmh0bWwiIHRpdGxlPSJkaWZmdXNlIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpbGF0ZS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01Nyw3ICs1Nyw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdERpbGF0ZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpbGF0ZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtODMsMTMgKzgzLDEzIEBACiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWxhdGUuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPHA+RGlsYXRlIGFkanVzdHMgdGhlIGNvbG9ycyBvZiBhIHZpZGVvIHN0cmVhbSBpbiByZWFsdGltZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjQuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjI1LjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KICAgICAgIDx0cj4KICAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBkaWxhdGUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZGlsYXRlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgogICA8L3RhYmxlPgpAQCAtOTksNyArOTksNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yNC43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yNS43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMjUsNyArMTI1LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjI0LjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjUuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kb2RnZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9kZ2UuaHRtbAppbmRleCAxYTFhNGM1Li5iNzdiZjQxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kb2RnZS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRvZGdlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5kb2RnZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWxhdGUuaHRtbCIgdGl0bGU9ImRpbGF0ZSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kb2RnZS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01MCw3ICs1MCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdERvZGdlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9kZ2Uub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTc2LDEzICs3NiwxMyBAQAogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9kZ2UuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPHA+RG9kZ2Ugc2F0dXJhdGVzIHRoZSBjb2xvcnMgb2YgYSB2aWRlbyBzdHJlYW0gaW4gcmVhbHRpbWUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjI1LjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yNi43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZG9kZ2UgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZG9kZ2UgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CiAgICAgICA8L3RyPgogICAgIDwvdGJvZHk+CiAgIDwvdGFibGU+CkBAIC05Miw3ICs5Miw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjI1LjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjI2LjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTExOCw3ICsxMTgsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjUuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yNi43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR0bWZkZXRlY3QuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR0bWZkZXRlY3QuaHRtbAppbmRleCA1NGY0OTU3Li5mM2VjMmUwIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdG1mZGV0ZWN0Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHRtZmRldGVjdC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZHRtZmRldGVjdDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kb2RnZS5odG1sIiB0aXRsZT0iZG9kZ2UiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGEgbmFtZT0iR3N0RHRtZkRldGVjdCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR0bWZkZXRlY3Qub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTYwLDcgKzYwLDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjYuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjcuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtODYsNyArODYsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjYuNi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yNy42LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR0c2RlYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHRzZGVjLmh0bWwKaW5kZXggN2RjMzkxMi4uZTVmZjRjMSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHRzZGVjLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHRzZGVjLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5kdHNkZWM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHRtZmRldGVjdC5odG1sIiB0aXRsZT0iZHRtZmRldGVjdCI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdHNkZWMucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3REdHNEZWMiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdHNkZWMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTc2LDcgKzc2LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjcuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjguNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTAyLDcgKzEwMiw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yNy43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjI4LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHZic3JjLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmJzcmMuaHRtbAppbmRleCAwYmRkZmRkLi5lZmI4ZjAzIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmJzcmMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmJzcmMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmR2YnNyYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdHNkZWMuaHRtbCIgdGl0bGU9ImR0c2RlYyI+CkBAIC0zNiw3ICszNiw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmJzcmMucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtMzEwLDcgKzMxMCw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR2YnNyYy5zaWduYWxzIj48L2E+PGgyPlNpZ25hbHM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InNpZ25hbHNfcmV0dXJuIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic2lnbmFsc19uYW1lIj4KQEAgLTM0Miw3ICszNDIsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3REdmJTcmMiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmJzcmMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTM2OSw3ICszNjksNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yOC44LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yOS44LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0zOTYsNyArMzk2LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjI4LjguMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjkuOC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmRzcHUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR2ZHNwdS5odG1sCmluZGV4IGRhZjU2YmEuLjQyYmFiZTQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR2ZHNwdS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR2ZHNwdS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZHZkc3B1OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR2YnNyYy5odG1sIiB0aXRsZT0iZHZic3JjIj4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxhIG5hbWU9IkdzdERWRFNwdSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR2ZHNwdS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNTgsMTMgKzU4LDEzIEBACiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmRzcHUuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPHA+RFZEIHN1YiBwaWN0dXJlIG92ZXJsYXkgZWxlbWVudC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjkuNi4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjMwLjYuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KICAgICAgIDx0cj4KICAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+RklYTUU8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Ojwvc3Bhbj4gZ3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4uLi48L3NwYW4+PC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5GSVhNRTxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij46PC9zcGFuPiBnc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4uLi48L3NwYW4+PC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTc0LDcgKzc0LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjkuNi40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzAuNi40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTAwLDcgKzEwMCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yOS42LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjMwLjYuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZWRnZWRldGVjdC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZWRnZWRldGVjdC5odG1sCmluZGV4IDExMmQ0NmEuLjFjNjI5YTkgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWVkZ2VkZXRlY3QuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1lZGdlZGV0ZWN0Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5lZGdlZGV0ZWN0OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWV4Y2x1c2lvbi5odG1sIiB0aXRsZT0iZXhjbHVzaW9uIj4KQEAgLTM2LDcgKzM2LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzEuMy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzIuMy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNjIsNyArNjIsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzEuMy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zMi4zLjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWV4Y2x1c2lvbi5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZXhjbHVzaW9uLmh0bWwKaW5kZXggOWIyMjhiYi4uZTZkZTcxMiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZXhjbHVzaW9uLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZXhjbHVzaW9uLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5leGNsdXNpb246IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHZkc3B1Lmh0bWwiIHRpdGxlPSJkdmRzcHUiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZXhjbHVzaW9uLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTU3LDcgKzU3LDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0RXhjbHVzaW9uIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZXhjbHVzaW9uLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC04MywxMyArODMsMTMgQEAKIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWV4Y2x1c2lvbi5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8cD5FeGNsdXNpb24gc2F0dXJhdGVzIHRoZSBjb2xvcnMgb2YgYSB2aWRlbyBzdHJlYW0gaW4gcmVhbHRpbWUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjMwLjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zMS43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZXhjbHVzaW9uIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGV4Y2x1c2lvbiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTk5LDcgKzk5LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzAuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzEuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTI1LDcgKzEyNSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zMC43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjMxLjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFhYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFhYy5odG1sCmluZGV4IDRmNDMwMjkuLmQ3M2RlNjggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhYWMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWFjLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5mYWFjOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWVkZ2VkZXRlY3QuaHRtbCIgdGl0bGU9ImVkZ2VkZXRlY3QiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFhYy5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC04Nyw3ICs4Nyw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhYWMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTEwOSw3ICsxMDksNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zMi42LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zMy42LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMzUsNyArMTM1LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjMyLjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzMuNi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNTYsNyArMTU2LDI3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgNjQwMDAsIDg4MjAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KVsgMSwgNiBdPC90ZD4KKzx0ZD5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzE2TEUsIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkLCByYXRlPShpbnQpeyA4MDAwLCAxMTAyNSwgMTIwMDAsIDE2MDAwLCAyMjA1MCwgMjQwMDAsIDMyMDAwLCA0NDEwMCwgNDgwMDAsIDY0MDAwLCA4ODIwMCwgOTYwMDAgfSwgY2hhbm5lbHM9KGludCkxPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPjwvc3Bhbj48L3A+PC90ZD4KKzx0ZD4gYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLCA2NDAwMCwgODgyMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpMiwgY2hhbm5lbC1tYXNrPShiaXRtYXNrKTB4MDAwMDAwMDAwMDAwMDAwMzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj48L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgNjQwMDAsIDg4MjAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KTMsIGNoYW5uZWwtbWFzaz0oYml0bWFzaykweDAwMDAwMDAwMDAwMDAwMDc8L3RkPgorPC90cj4KKzx0cj4KKzx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PC9zcGFuPjwvcD48L3RkPgorPHRkPiBhdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzE2TEUsIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkLCByYXRlPShpbnQpeyA4MDAwLCAxMTAyNSwgMTIwMDAsIDE2MDAwLCAyMjA1MCwgMjQwMDAsIDMyMDAwLCA0NDEwMCwgNDgwMDAsIDY0MDAwLCA4ODIwMCwgOTYwMDAgfSwgY2hhbm5lbHM9KGludCk0LCBjaGFubmVsLW1hc2s9KGJpdG1hc2spMHgwMDAwMDAwMDAwMDAwMTA3PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPjwvc3Bhbj48L3A+PC90ZD4KKzx0ZD4gYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLCA2NDAwMCwgODgyMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpNSwgY2hhbm5lbC1tYXNrPShiaXRtYXNrKTB4MDAwMDAwMDAwMDAwMDAzNzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj48L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgNjQwMDAsIDg4MjAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KTYsIGNoYW5uZWwtbWFzaz0oYml0bWFzaykweDAwMDAwMDAwMDAwMDAwM2Y8L3RkPgogPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFhZC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFhZC5odG1sCmluZGV4IDQwM2NlZTcuLmU1NzgyOGUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhYWQuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWFkLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5mYWFkOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhYWMuaHRtbCIgdGl0bGU9ImZhYWMiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGEgbmFtZT0iR3N0RmFhZCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhYWQub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTYwLDcgKzYwLDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzMuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzQuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtODYsNyArODYsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzMuNi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zNC42LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhY2VibHVyLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWNlYmx1ci5odG1sCmluZGV4IDlmZDlhMzguLmI0NWU4NzQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhY2VibHVyLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFjZWJsdXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmZhY2VibHVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhYWQuaHRtbCIgdGl0bGU9ImZhYWQiPgpAQCAtMzYsNyArMzYsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zNC4zLjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zNS4zLjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC02Miw3ICs2Miw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zNC4zLjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjM1LjMuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFjZWRldGVjdC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFjZWRldGVjdC5odG1sCmluZGV4IGY5NzI2ODEuLjQ0Nzc3MzUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhY2VkZXRlY3QuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWNlZGV0ZWN0Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5mYWNlZGV0ZWN0OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhY2VibHVyLmh0bWwiIHRpdGxlPSJmYWNlYmx1ciI+CkBAIC0zNiw3ICszNiw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjM1LjMuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjM2LjMuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTYyLDcgKzYyLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjM1LjMuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzYuMy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mZXN0aXZhbC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmVzdGl2YWwuaHRtbAppbmRleCA0Y2UwODU3Li45YzYxYzQ2IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mZXN0aXZhbC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZlc3RpdmFsLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5mZXN0aXZhbDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWNlZGV0ZWN0Lmh0bWwiIHRpdGxlPSJmYWNlZGV0ZWN0Ij4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxhIG5hbWU9IkdzdEZlc3RpdmFsIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmVzdGl2YWwub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTYxLDEzICs2MSwxMyBAQAogaW4gc2VydmVyIG1vZGUsIHN0YXJ0ZWQgYXMgPC9wPgogPHByZSBjbGFzcz0ic2NyZWVuIj5mZXN0aXZhbCAtLXNlcnZlcjwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjM2LjYuNSI+PC9hPjxoMz5FeGFtcGxlIHBpcGVsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zNy42LjUiPjwvYT48aDM+RXhhbXBsZSBwaXBlbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmVjaG8gPHNwYW4gY2xhc3M9InN0cmluZyI+J0hlbGxvIEctU3RyZWFtZXIhJzwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPnw8L3NwYW4+IGdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCBmZHNyYyBmZDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBmZXN0aXZhbCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gd2F2cGFyc2UgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYWxzYXNpbms8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmVjaG8gPHNwYW4gY2xhc3M9InN0cmluZyI+J0hlbGxvIEctU3RyZWFtZXIhJzwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPnw8L3NwYW4+IGdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gZmRzcmMgZmQ8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZmVzdGl2YWwgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHdhdnBhcnNlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGFsc2FzaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTc3LDcgKzc3LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzYuNi42LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzcuNi42LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTAzLDcgKzEwMyw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zNi42LjYuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjM3LjYuNi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmlzaGV5ZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmlzaGV5ZS5odG1sCmluZGV4IDQxMDE1ZmYuLjk3ZjY3ZDQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1maXNoZXllLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5maXNoZXllOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZlc3RpdmFsLmh0bWwiIHRpdGxlPSJmZXN0aXZhbCI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8YSBuYW1lPSJHc3RGaXNoZXllIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmlzaGV5ZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNTksMTAgKzU5LDI2IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+RmlzaGV5ZSBpcyBhIGdlb21ldHJpYyBpbWFnZSB0cmFuc2Zvcm0gZWxlbWVudC4gSXQgc2ltdWxhdGVzIGEgZmlzaGV5ZSBsZW5zCitieSB6b29taW5nIG9uIHRoZSBjZW50ZXIgb2YgdGhlIGltYWdlIGFuZCBjb21wcmVzc2luZyB0aGUgZWRnZXMuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iaWQtMS4yLjM4LjYuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CisgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorICAgIDx0Ym9keT4KKyAgICAgIDx0cj4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZmlzaGV5ZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90Ym9keT4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzcuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzguNi40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtODgsNyArMTA0LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjM3LjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzguNi40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNTEsNiArMTY3LDEwIEBACiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEZpc2hleWU7PC9wcmU+CiA8L2Rpdj4KIDwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmlzaGV5ZS5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD5nZW9tZXRyaWN0cmFuc2Zvcm08L3A+Cis8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KIDxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZnBzZGlzcGxheXNpbmsuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZwc2Rpc3BsYXlzaW5rLmh0bWwKaW5kZXggMWJiNzM5ZC4uYWNiMWJjZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZnBzZGlzcGxheXNpbmsuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mcHNkaXNwbGF5c2luay5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZnBzZGlzcGxheXNpbms6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmlzaGV5ZS5odG1sIiB0aXRsZT0iZmlzaGV5ZSI+CkBAIC0zNyw3ICszNyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mcHNkaXNwbGF5c2luay5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC0xMDYsNyArMTA2LDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZnBzZGlzcGxheXNpbmsuc2lnbmFscyI+PC9hPjxoMj5TaWduYWxzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJzaWduYWxzX3JldHVybiI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InNpZ25hbHNfbmFtZSI+CkBAIC0xMjEsNyArMTIxLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0RlBTRGlzcGxheVNpbmsiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mcHNkaXNwbGF5c2luay5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTUyLDcgKzE1Miw3IEBACiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mcHNkaXNwbGF5c2luay5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8cD5DYW4gZGlzcGxheSB0aGUgY3VycmVudCBhbmQgYXZlcmFnZSBmcmFtZXJhdGUgYXMgYSB0ZXN0b3ZlcmxheSBvciBvbiBzdGRvdXQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjM4LjkuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzkuOS4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmVzPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KQEAgLTE2MSwxMCArMTYxLDEwIEBACiAyCiAzCiA0PC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBmcHNkaXNwbGF5c2luawotZ3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZnBzZGlzcGxheXNpbmsgdGV4dDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPm92ZXJsYXk8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj48c3BhbiBjbGFzcz0ia2V5d29yZCI+ZmFsc2U8L3NwYW4+Ci1nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbjxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPnZpZGVvPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi48L3NwYW4+YXZpIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBkZWNvZGViaW4gbmFtZTxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPmQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHF1ZXVlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBmcHNkaXNwbGF5c2luayBkPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi4gITwvc3Bhbj4gcXVldWUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGZha2VzaW5rIHN5bmM8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj48c3BhbiBjbGFzcz0ia2V5d29yZCI+dHJ1ZTwvc3Bhbj4KLWdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCBwbGF5YmluIHVyaTxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPmZpbGU8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Ojwvc3Bhbj48c3BhbiBjbGFzcz0iZ3RrZG9jIHNsYyI+Ly8vcGF0aC90by92aWRlby5hdmkgdmlkZW8tc2luaz0mcXVvdDtmcHNkaXNwbGF5c2luayZxdW90OyBhdWRpby1zaW5rPWZha2VzaW5rPC9zcGFuPjwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGZwc2Rpc3BsYXlzaW5rCitnc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZnBzZGlzcGxheXNpbmsgdGV4dDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPm92ZXJsYXk8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj48c3BhbiBjbGFzcz0ia2V5d29yZCI+ZmFsc2U8L3NwYW4+Citnc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IGZpbGVzcmMgbG9jYXRpb248c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj52aWRlbzxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4uPC9zcGFuPmF2aSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZGVjb2RlYmluIG5hbWU8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj5kIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBxdWV1ZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZnBzZGlzcGxheXNpbmsgZDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4uICE8L3NwYW4+IHF1ZXVlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBmYWtlc2luayBzeW5jPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+PHNwYW4gY2xhc3M9ImtleXdvcmQiPnRydWU8L3NwYW4+Citnc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IHBsYXliaW4gdXJpPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+ZmlsZTxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij46PC9zcGFuPjxzcGFuIGNsYXNzPSJndGtkb2Mgc2xjIj4vLy9wYXRoL3RvL3ZpZGVvLmF2aSB2aWRlby1zaW5rPSZxdW90O2Zwc2Rpc3BsYXlzaW5rJnF1b3Q7IGF1ZGlvLXNpbms9ZmFrZXNpbms8L3NwYW4+PC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTE3NCw3ICsxNzQsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zOC45LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zOS45LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0yMDAsNyArMjAwLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjM4LjkuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzkuOS40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0zNDMsOCArMzQzLDggQEAKICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gICAgICAgICAgIHVzZXJfZGF0YSk8L3ByZT4KIDxwPlNpZ25hbHMgdGhlIGFwcGxpY2F0aW9uIGFib3V0IHRoZSBtZWFzdXJlZCBmcHM8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMzguMTMuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjM5LjEzLjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM4MCw3ICszODAsNiBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPHA+RmxhZ3M6IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLVJVTi1MQVNUOkNBUFMiPlJ1biBMYXN0PC9hPjwvcD4KLTxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDAuMTAuMjA8L3A+CiA8L2Rpdj4KIDwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1nYXVzc2lhbmJsdXIuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWdhdXNzaWFuYmx1ci5odG1sCmluZGV4IGRiNTgxNGMuLjBmNDZkOTUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWdhdXNzaWFuYmx1ci5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWdhdXNzaWFuYmx1ci5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Z2F1c3NpYW5ibHVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZwc2Rpc3BsYXlzaW5rLmh0bWwiIHRpdGxlPSJmcHNkaXNwbGF5c2luayI+CkBAIC0zNSwxMyArMzUsMTMgQEAKIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWdhdXNzaWFuYmx1ci5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8cD5HYXVzc2lhbmJsdXIgYmx1cnMgdGhlIHZpZGVvIHN0cmVhbSBpbiByZWFsdGltZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzkuMy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQwLjMuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KICAgICAgIDx0cj4KICAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBnYXVzc2lhbmJsdXIgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZ2F1c3NpYW5ibHVyIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgogICA8L3RhYmxlPgpAQCAtNTEsNyArNTEsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zOS4zLjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40MC4zLjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC03Nyw3ICs3Nyw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zOS4zLjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQwLjMuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtanBlZ3BhcnNlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1qcGVncGFyc2UuaHRtbAppbmRleCA3ZWVmZThlLi4xNGFlMjNmIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1qcGVncGFyc2UuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1qcGVncGFyc2UuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmpwZWdwYXJzZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1nYXVzc2lhbmJsdXIuaHRtbCIgdGl0bGU9ImdhdXNzaWFuYmx1ciI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1qcGVncGFyc2UuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTc3LDcgKzc3LDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0SnBlZ1BhcnNlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtanBlZ3BhcnNlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xMTUsMTMgKzExNSwxMyBAQAogaW1hZ2UgaGVhZGVyIHNlYXJjaGluZyBmb3IgaW1hZ2UgcHJvcGVydGllcyBzdWNoIGFzIHdpZHRoIGFuZCBoZWlnaHQKIGFtb25nIG90aGVycy4gSnBlZ3BhcnNlIGNhbiBhbHNvIGV4dHJhY3QgbWV0YWRhdGEgKGUuZy4geG1wKS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDAuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQxLjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KICAgICAgIDx0cj4KICAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgc291cGh0dHBzcmMgbG9jYXRpb248c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PS4uLiAhPC9zcGFuPiBqcGVncGFyc2UgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IG1hdHJvc2thbXV4IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBmaWxlc2luayBsb2NhdGlvbjxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49Li4uPC9zcGFuPjwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHNvdXBodHRwc3JjIGxvY2F0aW9uPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj0uLi4gITwvc3Bhbj4ganBlZ3BhcnNlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBtYXRyb3NrYW11eCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZmlsZXNpbmsgbG9jYXRpb248c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PS4uLjwvc3Bhbj48L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgogICA8L3RhYmxlPgpAQCAtMTMzLDcgKzEzMyw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQwLjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQxLjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE1OSw3ICsxNTksNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDAuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40MS43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWthbGVpZG9zY29wZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLmh0bWwKaW5kZXggMmYzODEyZS4uMjdiYWIzZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5rYWxlaWRvc2NvcGU6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtanBlZ3BhcnNlLmh0bWwiIHRpdGxlPSJqcGVncGFyc2UiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTYyLDcgKzYyLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0S2FsZWlkb3Njb3BlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC04OCwxMCArODgsMjYgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzxwPlRoZSBrYWxlaWRzY29wZSBlbGVtZW50IGFwcGxpZXMgJ2thbGVpZG9zY29wZScgZ2VvbWV0cmljIHRyYW5zZm9ybSB0byB0aGUKK2ltYWdlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi40Mi43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgorICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICA8dGJvZHk+CisgICAgICA8dHI+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGthbGVpZG9zY29wZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90Ym9keT4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDEuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNDIuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTE3LDcgKzEzMyw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40MS43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQyLjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMjA3LDYgKzIyMywxMCBAQAogPHA+RGVmYXVsdCB2YWx1ZTogMzwvcD4KIDwvZGl2PgogPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1rYWxlaWRvc2NvcGUuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+Z2VvbWV0cmljdHJhbnNmb3JtPC9wPgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CiA8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwKaW5kZXggZmZiYTNjMi4uZGUxMzQ5YiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5saXZlYWRkZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLmh0bWwiIHRpdGxlPSJrYWxlaWRvc2NvcGUiPgpAQCAtMTUsOSArMTUsNyBAQAogPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KIDx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgogPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIucHJvcGVydGllcyIgY2xhc3M9InNob3J0Y3V0Ij5Qcm9wZXJ0aWVzPC9hPjwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPgogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAxLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KQEAgLTM0LDUyICszMiwxMSBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KLTxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icHJvcGVydGllc19mbGFncyI+Ci08L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KLTx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuaHRtbCNHc3RMaXZlQWRkZXItLWxhdGVuY3kiIHRpdGxlPSJUaGUg4oCcbGF0ZW5jeeKAnSBwcm9wZXJ0eSI+bGF0ZW5jeTwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxhIG5hbWU9IkdzdExpdmVBZGRlciI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Ci08Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sI0dzdExpdmVBZGRlci1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0TGl2ZUFkZGVyIj5Hc3RMaXZlQWRkZXI8L2E+PC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgotPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+Ci0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KLSAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KLSAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+R3N0RWxlbWVudDwvYT4KLSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RMaXZlQWRkZXIKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgotPHA+VGhlIGxpdmUgYWRkZXIgYWxsb3dzIHRvIG1peCBzZXZlcmFsIHN0cmVhbXMgaW50byBvbmUgYnkgYWRkaW5nIHRoZSBkYXRhLgotTWl4ZWQgZGF0YSBpcyBjbGFtcGVkIHRvIHRoZSBtaW4vbWF4IHZhbHVlcyBvZiB0aGUgZGF0YSBmb3JtYXQuPC9wPgotPHA+VW5saWtlIHRoZSBhZGRlciwgdGhlIGxpdmVhZGRlciBtaXhlcyB0aGUgc3RyZWFtcyBhY2NvcmRpbmcgdGhlIHRoZWlyCi10aW1lc3RhbXBzIGFuZCB3YWl0cyBmb3Igc29tZSBtaWxsaS1zZWNvbmRzIGJlZm9yZSB0cnlpbmcgZG9pbmcgdGhlIG1peGluZy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQyLjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQzLjMuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTg5LDEyICs0NiwxMiBAQAogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wbHVnaW48L3NwYW4+PC9wPjwvdGQ+CiA8dGQ+Ci0gICAgICAgICAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWxpdmVhZGRlci5odG1sI3BsdWdpbi1saXZlYWRkZXIiPmxpdmVhZGRlcjwvYT4KKyAgICAgICAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXVkaW9taXhlci5odG1sI3BsdWdpbi1hdWRpb21peGVyIj5hdWRpb21peGVyPC9hPgogICAgICAgICAgIDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5hdXRob3I8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+T2xpdmllciBDcmV0ZSAmbHQ7b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY28udWsmZ3Q7PC90ZD4KKzx0ZD5TZWJhc3RpYW4gRHLDtmdlICZsdDtzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tJmd0OzwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5jbGFzczwvc3Bhbj48L3A+PC90ZD4KQEAgLTEwNSw3ICs2Miw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40Mi43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQzLjMuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTI2LDcgKzgzLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRldGFpbHM8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUzgsIFU4LCBTMTZMRSwgVTE2TEUsIFMzMkxFLCBVMzJMRSwgRjMyTEUsIEY2NExFIH0sIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXTwvdGQ+Cis8dGQ+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUzMyTEUsIFUzMkxFLCBTMTZMRSwgVTE2TEUsIFM4LCBVOCwgRjMyTEUsIEY2NExFIH0sIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgbGF5b3V0PShzdHJpbmcpeyBpbnRlcmxlYXZlZCwgbm9uLWludGVybGVhdmVkIH08L3RkPgogPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgpAQCAtMTUwLDcgKzEwNyw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFM4LCBVOCwgUzE2TEUsIFUxNkxFLCBTMzJMRSwgVTMyTEUsIEYzMkxFLCBGNjRMRSB9LCByYXRlPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF08L3RkPgorPHRkPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFMzMkxFLCBVMzJMRSwgUzE2TEUsIFUxNkxFLCBTOCwgVTgsIEYzMkxFLCBGNjRMRSB9LCByYXRlPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGxheW91dD0oc3RyaW5nKXsgaW50ZXJsZWF2ZWQsIG5vbi1pbnRlcmxlYXZlZCB9PC90ZD4KIDwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KQEAgLTE2MywyNSArMTIwLDYgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RMaXZlQWRkZXItc3RydWN0Ij48L2E+PGgzPnN0cnVjdCBHc3RMaXZlQWRkZXI8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RMaXZlQWRkZXI7PC9wcmU+Ci08cD5UaGUgYWRkZXIgb2JqZWN0IHN0cnVjdHVyZS48L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLnByb3BlcnR5LWRldGFpbHMiPjwvYT48aDI+UHJvcGVydHkgRGV0YWlsczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RMaXZlQWRkZXItLWxhdGVuY3kiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxsYXRlbmN54oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxsYXRlbmN54oCdICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPjwvcHJlPgotPHA+QW1vdW50IG9mIGRhdGEgdG8gYnVmZmVyIChpbiBtaWxsaXNlY29uZHMpLjwvcD4KLTxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiA2MDwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgotPHA+YWRkZXI8L3A+CiA8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlLmh0bWwKaW5kZXggNjNkYzVmNi4uNmNmM2MwZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5tYXJibGU6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwiIHRpdGxlPSJsaXZlYWRkZXIiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTY3LDcgKzY3LDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0TWFyYmxlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC05MiwxMCArOTIsMjYgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzxwPk1hcmJsZSBpcyBhIGdlb21ldHJpYyBpbWFnZSB0cmFuc2Zvcm0gZWxlbWVudC4gSXQgYXBwbGllcyBhIG1hcmJsaW5nIGVmZmVjdAordG8gdGhlIGltYWdlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi40NC43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgorICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICA8dGJvZHk+CisgICAgICA8dHI+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IG1hcmJsZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90Ym9keT4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDMuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNDQuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTIxLDcgKzEzNyw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40My43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQ0LjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMjIyLDYgKzIzOCwxMCBAQAogPHA+RGVmYXVsdCB2YWx1ZTogNDwvcD4KIDwvZGl2PgogPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+Z2VvbWV0cmljdHJhbnNmb3JtPC9wPgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CiA8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWRlYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWltZGVjLmh0bWwKaW5kZXggZThmM2FhMC4uNzNmMGM3MiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWltZGVjLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWltZGVjLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5taW1kZWM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWltZW5jLmh0bWwiIHRpdGxlPSJtaW1lbmMiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGEgbmFtZT0iR3N0TWltRGVjIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWltZGVjLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC01OSw3ICs1OSw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQ1LjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQ2LjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTg1LDcgKzg1LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQ1LjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNDYuNi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1lbmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWVuYy5odG1sCmluZGV4IDY0OTY2MmYuLjhjZjUwMDMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWVuYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWVuYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bWltZW5jOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sIiB0aXRsZT0ibWFyYmxlIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWVuYy5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01MCw3ICs1MCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdE1pbUVuYyI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWVuYy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNzUsNyArNzUsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40NC43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40NS43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMDEsNyArMTAxLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQ0LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNDUuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taXJyb3IuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5odG1sCmluZGV4IGUyOTBiYzAuLmU0YjY4YzIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bWlycm9yOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWRlYy5odG1sIiB0aXRsZT0ibWltZGVjIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01MCw3ICs1MCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdE1pcnJvciI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNzUsMTAgKzc1LDI2IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD5NaXJyb3IgaXMgYSBnZW9tZXRyaWMgdHJhbnNmb3JtIGVsZW1lbnQuIEl0IHNwbGl0cyB0aGUgaW1hZ2UgaW50byB0d28gaGFsdmVzCithbmQgcmVmbGVjdHMgb25lIG92ZXIgZWFjaCBvdGhlci48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJpZC0xLjIuNDcuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KKyAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CisgICAgPHRib2R5PgorICAgICAgPHRyPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBtaXJyb3IgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICA8L3RyPgorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQ2LjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQ3LjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEwNCw3ICsxMjAsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDYuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40Ny43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE3Nyw2ICsxOTMsMTAgQEAKIDxwPkRlZmF1bHQgdmFsdWU6IFNwbGl0IGhvcml6b250YWxseSBhbmQgcmVmbGVjdCBsZWZ0IGludG8gcmlnaHQ8L3A+CiA8L2Rpdj4KIDwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWlycm9yLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPmdlb21ldHJpY3RyYW5zZm9ybTwvcD4KKzwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgogPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tb2RwbHVnLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tb2RwbHVnLmh0bWwKaW5kZXggNTgyOWFjMS4uZWJmNjhmOCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbW9kcGx1Zy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1vZHBsdWcuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm1vZHBsdWc6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWlycm9yLmh0bWwiIHRpdGxlPSJtaXJyb3IiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbW9kcGx1Zy5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC0xMDgsNyArMTA4LDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0TW9kUGx1ZyI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1vZHBsdWcub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTEzMyw3ICsxMzMsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40Ny43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40OC43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNTksNyArMTU5LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQ3LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNDguNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVnMmVuYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZzJlbmMuaHRtbAppbmRleCA2ZTMzNmQ4Li5kZGFlY2U2IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVnMmVuYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWcyZW5jLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5tcGVnMmVuYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tb2RwbHVnLmh0bWwiIHRpdGxlPSJtb2RwbHVnIj4KQEAgLTM2LDcgKzM2LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWcyZW5jLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTIxOCw3ICsyMTgsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RNcGVnMmVuYyI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWcyZW5jLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0yNDksNyArMjQ5LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDguOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNDkuOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMjc2LDcgKzI3Niw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40OC44LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQ5LjguMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3BzbXV4Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVncHNtdXguaHRtbAppbmRleCBmMjdmOGVhLi5lMWE1Y2NiIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVncHNtdXguaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVncHNtdXguaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm1wZWdwc211eDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVnMmVuYy5odG1sIiB0aXRsZT0ibXBlZzJlbmMiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3BzbXV4LnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTYyLDcgKzYyLDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDkuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNTAuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtODgsNyArODgsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDkuNi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi41MC42LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWd0c211eC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3RzbXV4Lmh0bWwKaW5kZXggM2JhZjYxYS4uM2Q3ZDBjMyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3RzbXV4Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3RzbXV4Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5tcGVndHNtdXg6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3BzbXV4Lmh0bWwiIHRpdGxlPSJtcGVncHNtdXgiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3RzbXV4LnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTkwLDcgKzkwLDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNTAuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNTEuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTE2LDcgKzExNiw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi41MC42LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjUxLjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTQ5LDYgKzE0OSwxMCBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PC9zcGFuPjwvcD48L3RkPgorPHRkPiB2aWRlby94LWgyNjUsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylieXRlLXN0cmVhbSwgYWxpZ25tZW50PShzdHJpbmcpeyBhdSwgbmFsIH08L3RkPgorPC90cj4KKzx0cj4KKzx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PC9zcGFuPjwvcD48L3RkPgogPHRkPiBhdWRpby9tcGVnLCBwYXJzZWQ9KGJvb2xlYW4pdHJ1ZSwgbXBlZ3ZlcnNpb249KGludCl7IDEsIDIgfTwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtMTczLDYgKzE3NywxMCBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PC9zcGFuPjwvcD48L3RkPgorPHRkPiBhdWRpby94LW9wdXMsIGNoYW5uZWxzPShpbnQpWyAxLCA4IF0sIGNoYW5uZWwtbWFwcGluZy1mYW1pbHk9KGludCl7IDAsIDEgfTwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj48L3NwYW4+PC9wPjwvdGQ+CiA8dGQ+IHN1YnBpY3R1cmUveC1kdmI8L3RkPgogPC90cj4KIDx0cj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjdiMjgxLi4wMDAwMDAwCi0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHRpdGxlPm1wZzEyM2F1ZGlvZGVjOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgotPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgotPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXguaHRtbCIgdGl0bGU9Im1wbGV4Ij4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMuaHRtbCIgdGl0bGU9Im5lb25odHRwc3JjIj4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+Ci08Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Ci08dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgotPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Ci08YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPgotPC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAxLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wbGV4Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KLTxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgotPHRkIHZhbGlnbj0idG9wIj4KLTxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMudG9wX29mX3BhZ2UiPjwvYT5tcGcxMjNhdWRpb2RlYzwvc3Bhbj48L2gyPgotPHA+bXBnMTIzYXVkaW9kZWM8L3A+Ci08L3RkPgotPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgotPC90cj48L3RhYmxlPjwvZGl2PgotPGEgbmFtZT0iR3N0TXBnMTIzQXVkaW9EZWMiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Ci08Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmh0bWwjR3N0TXBnMTIzQXVkaW9EZWMtc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdE1wZzEyM0F1ZGlvRGVjIj5Hc3RNcGcxMjNBdWRpb0RlYzwvYT48L3RkPgotPC90cj48L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdGF1ZGlvZGVjb2Rlci5odG1sI0dzdEF1ZGlvRGVjb2RlciI+R3N0QXVkaW9EZWNvZGVyPC9hPgotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RNcGcxMjNBdWRpb0RlYwotPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KLTxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KLTxoMj5TeW5vcHNpczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNTIuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnBsdWdpbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4KLSAgICAgICAgICAgIG1wZzEyMwotICAgICAgICAgIDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5hdXRob3I8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+Q2FybG9zIFJhZmFlbCBHaWFuaSAmbHQ7ZHZAcHNldWRvdGVybWluYWwub3JnJmd0OzwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5jbGFzczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5Db2RlYy9EZWNvZGVyL0F1ZGlvPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjUyLjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c2luazwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c2luazwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wcmVzZW5jZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hbHdheXM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTEsIGxheWVyPShpbnQpWyAxLCAzIF0sIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCB9LCBjaGFubmVscz0oaW50KVsgMSwgMiBdLCBwYXJzZWQ9KGJvb2xlYW4pdHJ1ZTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c3JjPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRpcmVjdGlvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zb3VyY2U8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cHJlc2VuY2U8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YWx3YXlzPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRldGFpbHM8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUzE2TEUsIFUxNkxFLCBTMzJMRSwgVTMyTEUsIFMyNExFLCBVMjRMRSwgRjMyTEUgfSwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwIH0sIGNoYW5uZWxzPShpbnQpWyAxLCAyIF0sIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08cD48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RNcGcxMjNBdWRpb0RlYy1zdHJ1Y3QiPjwvYT48aDM+c3RydWN0IEdzdE1wZzEyM0F1ZGlvRGVjPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0TXBnMTIzQXVkaW9EZWM7PC9wcmU+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJmb290ZXIiPgotPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXguaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wbGV4Lmh0bWwKaW5kZXggYTlhZDE3MS4uNjA0M2NmOSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXguaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sCkBAIC0zLDExICszLDExIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5tcGxleDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVndHNtdXguaHRtbCIgdGl0bGU9Im1wZWd0c211eCI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmh0bWwiIHRpdGxlPSJtcGcxMjNhdWRpb2RlYyI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLmh0bWwiIHRpdGxlPSJuZW9uaHR0cHNyYyI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPC9oZWFkPgpAQCAtMjIsNyArMjIsNyBAQAogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDEuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3RzbXV4Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXgiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXgucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtODIsNyArODIsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RNcGxleCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wbGV4Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xMDcsNyArMTA3LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNTEuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNTIuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTM1LDcgKzEzNSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi41MS43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjUyLjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLmh0bWwKaW5kZXggZTBiNzI1Yy4uOGRkNDBiMSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5odG1sCkBAIC0zLDEwICszLDEwIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5uZW9uaHR0cHNyYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sIiB0aXRsZT0ibXBnMTIzYXVkaW9kZWMiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sIiB0aXRsZT0ibXBsZXgiPgogPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vZmEuaHRtbCIgdGl0bGU9Im9mYSI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgpAQCAtMjEsNyArMjEsNyBAQAogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAxLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb2ZhLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtMTIzLDcgKzEyMyw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vZmEuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9mYS5odG1sCmluZGV4IGZhYTRhMzIuLjZmNzdlYjUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9mYS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9mYS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+b2ZhOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLmh0bWwiIHRpdGxlPSJuZW9uaHR0cHNyYyI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vZmEucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTEsNyArNTEsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RPRkEiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vZmEub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuaHRtbAppbmRleCAxMWU3NTNkLi5hNjFkZDQxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzaW5rLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5odG1sCkBAIC0zLDExICszLDExIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5vcGVuYWxzaW5rOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNyYy5odG1sIiB0aXRsZT0ib3BlbmFsc3JjIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sIiB0aXRsZT0ib3B1c2RlYyI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sIiB0aXRsZT0icGNhcHBhcnNlIj4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CiA8L2hlYWQ+CkBAIC0yMCw3ICsyMCw3IEBACiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMS5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzcmMuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzaW5rIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNyYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc3JjLmh0bWwKaW5kZXggNDFmNDYyNi4uZGE5YTJmOSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc3JjLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc3JjLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5vcGVuYWxzcmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb2ZhLmh0bWwiIHRpdGxlPSJvZmEiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc3JjLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTU5LDcgKzU5LDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0T3BlbmFsU3JjIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc3JjLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbAppbmRleCBjNDEyYmNkLi5jMGI2YTY1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5vcGVuY3Z0ZXh0b3ZlcmxheTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwiIHRpdGxlPSJ0ZW1wbGF0ZW1hdGNoIj4KQEAgLTE1LDggKzE1LDcgQEAKIDx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+CiA8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KIDxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9wcm9wZXJ0aWVzIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5LmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCiAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkucHJvcGVydGllcyIgY2xhc3M9InNob3J0Y3V0Ij5Qcm9wZXJ0aWVzPC9hPjwvc3Bhbj4KIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgpAQCAtMzUsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtOTEsMzQgKzkwLDI1IEBACiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgotPGEgbmFtZT0iR3N0T3BlbmFsU3JjIj48L2E+PGEgbmFtZT0iR3N0T3BlbmN2VGV4dE92ZXJsYXkiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJHc3RPcGVuYWxTcmMiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgogPC9jb2xncm91cD4KIDx0Ym9keT48dHI+CiA8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI0dzdE9wZW5jdlRleHRPdmVybGF5LXN0cnVjdCIgdGl0bGU9InN0cnVjdCBHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+R3N0T3BlbmN2VGV4dE92ZXJsYXk8L2E+PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjR3N0T3BlbmN2VGV4dE92ZXJsYXkiIHRpdGxlPSJzdHJ1Y3QgR3N0T3BlbmN2VGV4dE92ZXJsYXkiPkdzdE9wZW5jdlRleHRPdmVybGF5PC9hPjwvdGQ+CiA8L3RyPjwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgotPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+Ci0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KLSAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KLSAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+R3N0RWxlbWVudDwvYT4KLSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RPcGVuY3ZUZXh0T3ZlcmxheQotPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5LmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuODAuOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzUuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTQ0LDcgKzEzNCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44MC44LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjc1LjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMjAzLDggKzE5MywyMSBAQAogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wZW5jdlRleHRPdmVybGF5LXN0cnVjdCI+PC9hPjxoMz5zdHJ1Y3QgR3N0T3BlbmN2VGV4dE92ZXJsYXk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RPcGVuY3ZUZXh0T3ZlcmxheTs8L3ByZT4KKzxhIG5hbWU9IkdzdE9wZW5jdlRleHRPdmVybGF5Ij48L2E+PGgzPnN0cnVjdCBHc3RPcGVuY3ZUZXh0T3ZlcmxheTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdE9wZW5jdlRleHRPdmVybGF5IHsKKyAgR3N0T3BlbmN2VmlkZW9GaWx0ZXIgZWxlbWVudDsKKworICBDdkZvbnQgZm9udDsKKworICBnaW50IHhwb3M7CisgIGdpbnQgeXBvczsKKyAgZ2ludCB0aGlja25lc3M7CisgIGdpbnQgY29sb3JSLGNvbG9yRyxjb2xvckI7CisgIGdkb3VibGUgaGVpZ2h0OworICBnZG91YmxlIHdpZHRoOworICBnY2hhciAqdGV4dGJ1ZjsKK307Cis8L3ByZT4KIDwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMTQyN2MuLjAwMDAwMDAKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTk3ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTx0aXRsZT5vcHVzZGVjOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgotPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgotPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5odG1sIiB0aXRsZT0ib3BlbmFsc2luayI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCIgdGl0bGU9Im9wdXNlbmMiPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD4KLTxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KLTx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Ci08dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KLTxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLnByb3BlcnRpZXMiIGNsYXNzPSJzaG9ydGN1dCI+UHJvcGVydGllczwvYT48L3NwYW4+Ci08L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDEuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Ci08dGQgdmFsaWduPSJ0b3AiPgotPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLnRvcF9vZl9wYWdlIj48L2E+b3B1c2RlYzwvc3Bhbj48L2gyPgotPHA+b3B1c2RlYzwvcD4KLTwvdGQ+Ci08dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Ci08L3RyPjwvdGFibGU+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KLTxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icHJvcGVydGllc19mbGFncyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNHc3RPcHVzRGVjLS1hcHBseS1nYWluIiB0aXRsZT0iVGhlIOKAnGFwcGx5LWdhaW7igJ0gcHJvcGVydHkiPmFwcGx5LWdhaW48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNHc3RPcHVzRGVjLS11c2UtaW5iYW5kLWZlYyIgdGl0bGU9IlRoZSDigJx1c2UtaW5iYW5kLWZlY+KAnSBwcm9wZXJ0eSI+dXNlLWluYmFuZC1mZWM8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxhIG5hbWU9IkdzdE9wZW5hbFNyYyI+PC9hPjxhIG5hbWU9IkdzdE9wZW5jdlRleHRPdmVybGF5Ij48L2E+PGEgbmFtZT0iR3N0T3B1c0RlYyI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgotPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgotPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjR3N0T3B1c0RlYy1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0T3B1c0RlYyI+R3N0T3B1c0RlYzwvYT48L3RkPgotPC90cj48L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgotPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+Ci0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KLSAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KLSAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+R3N0RWxlbWVudDwvYT4KLSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0YXVkaW9kZWNvZGVyLmh0bWwjR3N0QXVkaW9EZWNvZGVyIj5Hc3RBdWRpb0RlY29kZXI8L2E+Ci0gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdE9wdXNEZWMKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KLTxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KLTxoMj5TeW5vcHNpczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNTcuOS4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnBsdWdpbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4KLSAgICAgICAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sI3BsdWdpbi1vcHVzIj5vcHVzPC9hPgotICAgICAgICAgIDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5hdXRob3I8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+VmluY2VudCBQZW5xdWVyYydoICZsdDt2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWsmZ3Q7PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmNsYXNzPC9zcGFuPjwvcD48L3RkPgotPHRkPkNvZGVjL0RlY29kZXIvQXVkaW88L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNTcuOS4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+bmFtZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zaW5rPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRpcmVjdGlvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zaW5rPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnByZXNlbmNlPC9zcGFuPjwvcD48L3RkPgotPHRkPmFsd2F5czwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPmF1ZGlvL3gtb3B1czwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c3JjPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRpcmVjdGlvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zb3VyY2U8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cHJlc2VuY2U8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YWx3YXlzPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRldGFpbHM8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgNDgwMDAsIDI0MDAwLCAxNjAwMCwgMTIwMDAsIDgwMDAgfSwgY2hhbm5lbHM9KGludClbIDEsIDggXTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08cD48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wdXNEZWMtc3RydWN0Ij48L2E+PGgzPnN0cnVjdCBHc3RPcHVzRGVjPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0T3B1c0RlYzs8L3ByZT4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLnByb3BlcnR5LWRldGFpbHMiPjwvYT48aDI+UHJvcGVydHkgRGV0YWlsczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RPcHVzRGVjLS1hcHBseS1nYWluIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcYXBwbHktZ2FpbuKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcYXBwbHktZ2FpbuKAnSAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3ByZT4KLTxwPkFwcGx5IGdhaW4gaWYgYW55IGlzIHNwZWNpZmllZCBpbiB0aGUgaGVhZGVyLjwvcD4KLTxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiBUUlVFPC9wPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RPcHVzRGVjLS11c2UtaW5iYW5kLWZlYyI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHVzZS1pbmJhbmQtZmVj4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJx1c2UtaW5iYW5kLWZlY+KAnSAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvcHJlPgotPHA+VXNlIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbiBpZiBhdmFpbGFibGUuPC9wPgotPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KLTxwPkRlZmF1bHQgdmFsdWU6IEZBTFNFPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZm9vdGVyIj4KLTxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTgwNGQxYy4uMDAwMDAwMAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHRpdGxlPm9wdXNlbmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Ci08bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+Ci08bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwiIHRpdGxlPSJvcHVzZGVjIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwiIHRpdGxlPSJvcHVzcGFyc2UiPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD4KLTxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KLTx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Ci08dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KLTxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLnByb3BlcnRpZXMiIGNsYXNzPSJzaG9ydGN1dCI+UHJvcGVydGllczwvYT48L3NwYW4+Ci08L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDEuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgotPC90cj48L3RhYmxlPgotPGRpdiBjbGFzcz0icmVmZW50cnkiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYyI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KLTx0ZCB2YWxpZ249InRvcCI+Ci08aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMudG9wX29mX3BhZ2UiPjwvYT5vcHVzZW5jPC9zcGFuPjwvaDI+Ci08cD5vcHVzZW5jPC9wPgotPC90ZD4KLTx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KLTwvdHI+PC90YWJsZT48L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgotPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX2ZsYWdzIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWF1ZGlvIiB0aXRsZT0iVGhlIOKAnGF1ZGlv4oCdIHByb3BlcnR5Ij5hdWRpbzwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RPcHVzRW5jQmFuZHdpZHRoPC9zcGFuPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tYmFuZHdpZHRoIiB0aXRsZT0iVGhlIOKAnGJhbmR3aWR0aOKAnSBwcm9wZXJ0eSI+YmFuZHdpZHRoPC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWJpdHJhdGUiIHRpdGxlPSJUaGUg4oCcYml0cmF0ZeKAnSBwcm9wZXJ0eSI+Yml0cmF0ZTwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWNiciIgdGl0bGU9IlRoZSDigJxjYnLigJ0gcHJvcGVydHkiPmNicjwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1jb21wbGV4aXR5IiB0aXRsZT0iVGhlIOKAnGNvbXBsZXhpdHnigJ0gcHJvcGVydHkiPmNvbXBsZXhpdHk8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1jb25zdHJhaW5lZC12YnIiIHRpdGxlPSJUaGUg4oCcY29uc3RyYWluZWQtdmJy4oCdIHByb3BlcnR5Ij5jb25zdHJhaW5lZC12YnI8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1kdHgiIHRpdGxlPSJUaGUg4oCcZHR44oCdIHByb3BlcnR5Ij5kdHg8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0T3B1c0VuY0ZyYW1lU2l6ZTwvc3Bhbj48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWZyYW1lLXNpemUiIHRpdGxlPSJUaGUg4oCcZnJhbWUtc2l6ZeKAnSBwcm9wZXJ0eSI+ZnJhbWUtc2l6ZTwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWluYmFuZC1mZWMiIHRpdGxlPSJUaGUg4oCcaW5iYW5kLWZlY+KAnSBwcm9wZXJ0eSI+aW5iYW5kLWZlYzwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLW1heC1wYXlsb2FkLXNpemUiIHRpdGxlPSJUaGUg4oCcbWF4LXBheWxvYWQtc2l6ZeKAnSBwcm9wZXJ0eSI+bWF4LXBheWxvYWQtc2l6ZTwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1wYWNrZXQtbG9zcy1wZXJjZW50YWdlIiB0aXRsZT0iVGhlIOKAnHBhY2tldC1sb3NzLXBlcmNlbnRhZ2XigJ0gcHJvcGVydHkiPnBhY2tldC1sb3NzLXBlcmNlbnRhZ2U8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0T3B1c0VuY0F1ZGlvVHlwZTwvc3Bhbj48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWF1ZGlvLXR5cGUiIHRpdGxlPSJUaGUg4oCcYXVkaW8tdHlwZeKAnSBwcm9wZXJ0eSI+YXVkaW8tdHlwZTwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RPcHVzRW5jQml0cmF0ZVR5cGU8L3NwYW4+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1iaXRyYXRlLXR5cGUiIHRpdGxlPSJUaGUg4oCcYml0cmF0ZS10eXBl4oCdIHByb3BlcnR5Ij5iaXRyYXRlLXR5cGU8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxhIG5hbWU9IkdzdE9wZW5hbFNyYyI+PC9hPjxhIG5hbWU9IkdzdE9wZW5jdlRleHRPdmVybGF5Ij48L2E+PGEgbmFtZT0iR3N0T3B1c0RlYyI+PC9hPjxhIG5hbWU9IkdzdE9wdXNFbmMiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KLTxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+PHRyPgotPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdE9wdXNFbmMiPkdzdE9wdXNFbmM8L2E+PC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdGF1ZGlvZW5jb2Rlci5odG1sI0dzdEF1ZGlvRW5jb2RlciI+R3N0QXVkaW9FbmNvZGVyPC9hPgotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RPcHVzRW5jCi08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+Ci08aDI+U3lub3BzaXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjU4LjEwLjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cGx1Z2luPC9zcGFuPjwvcD48L3RkPgotPHRkPgotICAgICAgICAgICAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcHVzLmh0bWwjcGx1Z2luLW9wdXMiPm9wdXM8L2E+Ci0gICAgICAgICAgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmF1dGhvcjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5WaW5jZW50IFBlbnF1ZXJjJ2ggJmx0O3ZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51ayZndDs8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+Y2xhc3M8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+Q29kZWMvRW5jb2Rlci9BdWRpbzwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi41OC4xMC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+bmFtZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zaW5rPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRpcmVjdGlvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zaW5rPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnByZXNlbmNlPC9zcGFuPjwvcD48L3RkPgotPHRkPmFsd2F5czwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCk0ODAwMCwgY2hhbm5lbHM9KGludClbIDEsIDIgXTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj48L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDEyMDAwLCAxNjAwMCwgMjQwMDAgfSwgY2hhbm5lbHM9KGludClbIDEsIDIgXTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c3JjPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRpcmVjdGlvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zb3VyY2U8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cHJlc2VuY2U8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YWx3YXlzPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRldGFpbHM8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YXVkaW8veC1vcHVzPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxwPjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c0VuYy1zdHJ1Y3QiPjwvYT48aDM+c3RydWN0IEdzdE9wdXNFbmM8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RPcHVzRW5jOzwvcHJlPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMucHJvcGVydHktZGV0YWlscyI+PC9hPjxoMj5Qcm9wZXJ0eSBEZXRhaWxzPC9oMj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wdXNFbmMtLWF1ZGlvIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcYXVkaW/igJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGF1ZGlv4oCdICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC9wcmU+Ci08cD5BdWRpbyBvciB2b2ljZSAoREVQUkVDQVRFRDogdXNlIGF1ZGlvLXR5cGUpLjwvcD4KLTxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiBUUlVFPC9wPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RPcHVzRW5jLS1iYW5kd2lkdGgiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxiYW5kd2lkdGjigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGJhbmR3aWR0aOKAnSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idHlwZSI+R3N0T3B1c0VuY0JhbmR3aWR0aDwvc3Bhbj48L3ByZT4KLTxwPkF1ZGlvIEJhbmQgV2lkdGguPC9wPgotPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KLTxwPkRlZmF1bHQgdmFsdWU6IEZ1bGwgYmFuZDwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c0VuYy0tYml0cmF0ZSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGJpdHJhdGXigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGJpdHJhdGXigJ0gICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPjwvcHJlPgotPHA+U3BlY2lmeSBhbiBlbmNvZGluZyBiaXQtcmF0ZSAoaW4gYnBzKS48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+QWxsb3dlZCB2YWx1ZXM6IFs0MDAwLDY1MDAwMF08L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiA2NDAwMDwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c0VuYy0tY2JyIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcY2Jy4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxjYnLigJ0gICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvcHJlPgotPHA+Q29uc3RhbnQgYml0IHJhdGUgKERFUFJFQ0FURUQ6IHVzZSBiaXRyYXRlLXR5cGUpLjwvcD4KLTxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiBUUlVFPC9wPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RPcHVzRW5jLS1jb21wbGV4aXR5Ij48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcY29tcGxleGl0eeKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcY29tcGxleGl0eeKAnSAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+PC9wcmU+Ci08cD5Db21wbGV4aXR5LjwvcD4KLTxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Ci08cD5BbGxvd2VkIHZhbHVlczogWzAsMTBdPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogMTA8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wdXNFbmMtLWNvbnN0cmFpbmVkLXZiciI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGNvbnN0cmFpbmVkLXZicuKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcY29uc3RyYWluZWQtdmJy4oCdICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3ByZT4KLTxwPkNvbnN0cmFpbmVkIFZCUiAoREVQUkVDQVRFRDogdXNlIGJpdHJhdGUtdHlwZSkuPC9wPgotPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KLTxwPkRlZmF1bHQgdmFsdWU6IFRSVUU8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wdXNFbmMtLWR0eCI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGR0eOKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcZHR44oCdICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3ByZT4KLTxwPkRUWC48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogRkFMU0U8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wdXNFbmMtLWZyYW1lLXNpemUiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxmcmFtZS1zaXpl4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxmcmFtZS1zaXpl4oCdICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InR5cGUiPkdzdE9wdXNFbmNGcmFtZVNpemU8L3NwYW4+PC9wcmU+Ci08cD5UaGUgZHVyYXRpb24gb2YgYW4gYXVkaW8gZnJhbWUsIGluIG1zLjwvcD4KLTxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiAyMDwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c0VuYy0taW5iYW5kLWZlYyI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGluYmFuZC1mZWPigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGluYmFuZC1mZWPigJ0gICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC9wcmU+Ci08cD5FbmFibGUgZm9yd2FyZCBlcnJvciBjb3JyZWN0aW9uLjwvcD4KLTxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiBGQUxTRTwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c0VuYy0tbWF4LXBheWxvYWQtc2l6ZSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnG1heC1wYXlsb2FkLXNpemXigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnG1heC1wYXlsb2FkLXNpemXigJ0gICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+PC9wcmU+Ci08cD5NYXhpbXVtIHBheWxvYWQgc2l6ZSBpbiBieXRlcy48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+QWxsb3dlZCB2YWx1ZXM6IFsyLDQwMDBdPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogNDAwMDwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c0VuYy0tcGFja2V0LWxvc3MtcGVyY2VudGFnZSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHBhY2tldC1sb3NzLXBlcmNlbnRhZ2XigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnHBhY2tldC1sb3NzLXBlcmNlbnRhZ2XigJ0gICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPjwvcHJlPgotPHA+UGFja2V0IGxvc3MgcGVyY2VudGFnZS48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+QWxsb3dlZCB2YWx1ZXM6IFswLDEwMF08L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiAwPC9wPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RPcHVzRW5jLS1hdWRpby10eXBlIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcYXVkaW8tdHlwZeKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcYXVkaW8tdHlwZeKAnSAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RPcHVzRW5jQXVkaW9UeXBlPC9zcGFuPjwvcHJlPgotPHA+V2hhdCB0eXBlIG9mIGF1ZGlvIHRvIG9wdGltaXplIGZvci48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogR2VuZXJpYyBhdWRpbzwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c0VuYy0tYml0cmF0ZS10eXBlIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcYml0cmF0ZS10eXBl4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxiaXRyYXRlLXR5cGXigJ0gICAgICAgICAgICAgPHNwYW4gY2xhc3M9InR5cGUiPkdzdE9wdXNFbmNCaXRyYXRlVHlwZTwvc3Bhbj48L3ByZT4KLTxwPkJpdHJhdGUgdHlwZS48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogQ0JSPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZm9vdGVyIj4KLTxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhODkyYmYuLjAwMDAwMDAKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHRpdGxlPm9wdXNwYXJzZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KLTxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KLTxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCIgdGl0bGU9Im9wdXNlbmMiPgotPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwiIHRpdGxlPSJydHBvcHVzcGF5Ij4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+Ci08Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Ci08dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgotPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Ci08YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+Ci08L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDEuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZSI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KLTx0ZCB2YWxpZ249InRvcCI+Ci08aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS50b3Bfb2ZfcGFnZSI+PC9hPm9wdXNwYXJzZTwvc3Bhbj48L2gyPgotPHA+b3B1c3BhcnNlPC9wPgotPC90ZD4KLTx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KLTwvdHI+PC90YWJsZT48L2Rpdj4KLTxhIG5hbWU9IkdzdE9wZW5hbFNyYyI+PC9hPjxhIG5hbWU9IkdzdE9wZW5jdlRleHRPdmVybGF5Ij48L2E+PGEgbmFtZT0iR3N0T3B1c0RlYyI+PC9hPjxhIG5hbWU9IkdzdE9wdXNFbmMiPjwvYT48YSBuYW1lPSJHc3RPcHVzUGFyc2UiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2Uub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgotPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgotPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCNHc3RPcHVzUGFyc2Utc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdE9wdXNQYXJzZSI+R3N0T3B1c1BhcnNlPC9hPjwvdGQ+Ci08L3RyPjwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2Uub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyLWxpYnMvaHRtbC9Hc3RCYXNlUGFyc2UuaHRtbCI+R3N0QmFzZVBhcnNlPC9hPgotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RPcHVzUGFyc2UKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgotPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgotPGgyPlN5bm9wc2lzPC9oMj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi41OS4xMC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnBsdWdpbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4KLSAgICAgICAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sI3BsdWdpbi1vcHVzIj5vcHVzPC9hPgotICAgICAgICAgIDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5hdXRob3I8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+VmluY2VudCBQZW5xdWVyYydoICZsdDt2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWsmZ3Q7PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmNsYXNzPC9zcGFuPjwvcD48L3RkPgotPHRkPkNvZGVjL1BhcnNlci9BdWRpbzwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi41OS4xMC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+bmFtZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zaW5rPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRpcmVjdGlvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zaW5rPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnByZXNlbmNlPC9zcGFuPjwvcD48L3RkPgotPHRkPmFsd2F5czwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPmF1ZGlvL3gtb3B1czwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c3JjPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRpcmVjdGlvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zb3VyY2U8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cHJlc2VuY2U8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YWx3YXlzPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRldGFpbHM8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YXVkaW8veC1vcHVzLCBmcmFtZWQ9KGJvb2xlYW4pdHJ1ZTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxwPjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RPcHVzUGFyc2Utc3RydWN0Ij48L2E+PGgzPnN0cnVjdCBHc3RPcHVzUGFyc2U8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RPcHVzUGFyc2U7PC9wcmU+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJmb290ZXIiPgotPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UuaHRtbAppbmRleCA5MDEzNTYwLi5hM2M2Y2U5IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UuaHRtbApAQCAtMywxMCArMywxMCBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+cGNhcHBhcnNlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sIiB0aXRsZT0icnRwb3B1c2RlcGF5Ij4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5odG1sIiB0aXRsZT0ib3BlbmFsc2luayI+CiA8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLmh0bWwiIHRpdGxlPSJwaW5jaCI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgpAQCAtMjEsNyArMjEsNyBAQAogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAxLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGluY2guaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtODAsNyArODAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RQY2FwUGFyc2UiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2Uub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTEwNywxNCArMTA3LDE0IEBACiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwjR3N0UGNhcFBhcnNlLS1zcmMtcG9ydCIgdGl0bGU9IlRoZSDigJxzcmMtcG9ydOKAnSBwcm9wZXJ0eSI+PHNwYW4gY2xhc3M9InR5cGUiPuKAnHNyYy1wb3J04oCdPC9zcGFuPjwvYT4gYW5kIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UuaHRtbCNHc3RQY2FwUGFyc2UtLWRzdC1wb3J0IiB0aXRsZT0iVGhlIOKAnGRzdC1wb3J04oCdIHByb3BlcnR5Ij48c3BhbiBjbGFzcz0idHlwZSI+4oCcZHN0LXBvcnTigJ08L3NwYW4+PC9hPiB0byByZXN0cmljdCB3aGljaCBwYWNrZXRzCiBzaG91bGQgYmUgaW5jbHVkZWQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjYyLjcuMyI+PC9hPjxoMz5FeGFtcGxlIHBpcGVsaW5lczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNTcuNy4zIj48L2E+PGgzPkV4YW1wbGUgcGlwZWxpbmVzPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KICAgICAgIDx0cj4KICAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MQogMjwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MC4xMDwvc3Bhbj4gZmlsZXNyYyBsb2NhdGlvbjxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPmgyNjRjcmFzaGVyPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi48L3NwYW4+cGNhcCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gcGNhcHBhcnNlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBydHBoMjY0ZGVwYXkKKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IGZpbGVzcmMgbG9jYXRpb248c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj5oMjY0Y3Jhc2hlcjxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4uPC9zcGFuPnBjYXAgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHBjYXBwYXJzZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gcnRwaDI2NGRlcGF5CiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZmZkZWNfaDI2NCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZmFrZXNpbms8L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgpAQCAtMTI2LDcgKzEyNiw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjYyLjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjU3LjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE1Miw3ICsxNTIsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNjIuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi41Ny43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1waW5jaC5odG1sCmluZGV4IDE2NjNkYjQuLjcyNTVkOTIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGluY2guaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnBpbmNoOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sIiB0aXRsZT0icGNhcHBhcnNlIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUwLDcgKzUwLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0UGluY2giPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1waW5jaC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNzYsMTAgKzc2LDI1IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzxwPlBpbmNoIGFwcGxpZXMgYSAncGluY2gnIGdlb21ldHJpYyB0cmFuc2Zvcm0gdG8gdGhlIGltYWdlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi41OC43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgorICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICA8dGJvZHk+CisgICAgICA8dHI+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHBpbmNoIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgPC90cj4KKyAgICA8L3Rib2R5PgorICA8L3RhYmxlPgorPC9kaXY+CisKKzwvZGl2PgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42My43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi41OC43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMDUsNyArMTIwLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjYzLjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNTguNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNzksNiArMTk0LDEwIEBACiA8cD5EZWZhdWx0IHZhbHVlOiAwLjU8L3A+CiA8L2Rpdj4KIDwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGluY2guc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+Z2VvbWV0cmljdHJhbnNmb3JtPC9wPgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CiA8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1haWZmLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYWlmZi5odG1sCmluZGV4IGYyMzEzNGEuLmJkYjhiMTEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1haWZmLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWFpZmYuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmFpZmY6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hc3NyZW5kZXIuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hc3NyZW5kZXIuaHRtbAppbmRleCA5ZmM2ZWZiLi4xOTQ4YzI0IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXNzcmVuZGVyLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWFzc3JlbmRlci5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+YXNzcmVuZGVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWF1dG9jb252ZXJ0Lmh0bWwiIHRpdGxlPSJhdXRvY29udmVydCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hdWRpb21peGVyLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXVkaW9taXhlci5odG1sCmluZGV4IGI4ZGZlNjQuLjcyNmNjOTYgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hdWRpb21peGVyLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWF1ZGlvbWl4ZXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmF1ZGlvbWl4ZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYWlmZi5odG1sIiB0aXRsZT0iYWlmZiI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTY4LDEzICs2OCwxNyBAQAogPC9jb2xncm91cD4KIDx0Ym9keT4KIDx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+YXVkaW9pbnRlcmxlYXZlPC9zcGFuPjwvcD48L3RkPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwiIHRpdGxlPSJhdWRpb2ludGVybGVhdmUiPmF1ZGlvaW50ZXJsZWF2ZTwvYT48L3NwYW4+PC9wPjwvdGQ+CiA8dGQ+TWl4ZXMgbXVsdGlwbGUgYXVkaW8gc3RyZWFtczwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sIiB0aXRsZT0iYXVkaW9taXhlciI+YXVkaW9taXhlcjwvYT48L3NwYW4+PC9wPjwvdGQ+CiA8dGQ+TWl4ZXMgbXVsdGlwbGUgYXVkaW8gc3RyZWFtczwvdGQ+CiA8L3RyPgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwiIHRpdGxlPSJsaXZlYWRkZXIiPmxpdmVhZGRlcjwvYT48L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+TWl4ZXMgbXVsdGlwbGUgYXVkaW8gc3RyZWFtczwvdGQ+Cis8L3RyPgogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hdWRpb3Zpc3VhbGl6ZXJzLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXVkaW92aXN1YWxpemVycy5odG1sCmluZGV4IGZhMjg1MGUuLjUwNzZhMjYgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hdWRpb3Zpc3VhbGl6ZXJzLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWF1ZGlvdmlzdWFsaXplcnMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmF1ZGlvdmlzdWFsaXplcnM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXVkaW9taXhlci5odG1sIiB0aXRsZT0iYXVkaW9taXhlciI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hdXRvY29udmVydC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWF1dG9jb252ZXJ0Lmh0bWwKaW5kZXggNGE2M2IwNS4uNmQyNDhmNiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWF1dG9jb252ZXJ0Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWF1dG9jb252ZXJ0Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5hdXRvY29udmVydDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hdWRpb3Zpc3VhbGl6ZXJzLmh0bWwiIHRpdGxlPSJhdWRpb3Zpc3VhbGl6ZXJzIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWJheWVyLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYmF5ZXIuaHRtbAppbmRleCA1YThlNmYzLi5iOWM1YTI5IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYmF5ZXIuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYmF5ZXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmJheWVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWFzc3JlbmRlci5odG1sIiB0aXRsZT0iYXNzcmVuZGVyIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWJzMmIuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1iczJiLmh0bWwKaW5kZXggM2ZiNmFiMi4uZDg1ZDY4MCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWJzMmIuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYnMyYi5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+YnMyYjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1iYXllci5odG1sIiB0aXRsZT0iYmF5ZXIiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWJ6Mi5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWJ6Mi5odG1sCmluZGV4IDM1MmE3MGEuLjkxNjJlNTkgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1iejIuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYnoyLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5iejI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYnMyYi5odG1sIiB0aXRsZT0iYnMyYiI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1jYW1lcmFiaW4uaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1jYW1lcmFiaW4uaHRtbAppbmRleCA0OWM2ZGM5Li5hY2JiMGVkIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tY2FtZXJhYmluLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWNhbWVyYWJpbi5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Y2FtZXJhYmluOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWJ6Mi5odG1sIiB0aXRsZT0iYnoyIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWNvbG9yZWZmZWN0cy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWNvbG9yZWZmZWN0cy5odG1sCmluZGV4IDVkZTA3NjYuLmYxMzNiZTkgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1jb2xvcmVmZmVjdHMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tY29sb3JlZmZlY3RzLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5jb2xvcmVmZmVjdHM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tY2FtZXJhYmluLmh0bWwiIHRpdGxlPSJjYW1lcmFiaW4iPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tY3VybC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWN1cmwuaHRtbAppbmRleCAwNTI3NTU3Li41MWNmOTk1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tY3VybC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1jdXJsLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5jdXJsOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWNvbG9yZWZmZWN0cy5odG1sIiB0aXRsZT0iY29sb3JlZmZlY3RzIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWRhdGF1cmlzcmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kYXRhdXJpc3JjLmh0bWwKaW5kZXggMGExODMwNS4uYWM0MDUwNSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWRhdGF1cmlzcmMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZGF0YXVyaXNyYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZGF0YXVyaXNyYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1jdXJsLmh0bWwiIHRpdGxlPSJjdXJsIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWRlYnVndXRpbHNiYWQuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kZWJ1Z3V0aWxzYmFkLmh0bWwKaW5kZXggNWYwZjE1MC4uNmJjODU5ZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWRlYnVndXRpbHNiYWQuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZGVidWd1dGlsc2JhZC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZGVidWd1dGlsc2JhZDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kYXRhdXJpc3JjLmh0bWwiIHRpdGxlPSJkYXRhdXJpc3JjIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWR0c2RlYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWR0c2RlYy5odG1sCmluZGV4IDI5YjU4ZWUuLmEwMDI1YWUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kdHNkZWMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZHRzZGVjLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5kdHNkZWM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZGVidWd1dGlsc2JhZC5odG1sIiB0aXRsZT0iZGVidWd1dGlsc2JhZCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kdmIuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kdmIuaHRtbAppbmRleCA2MmY2ODBhLi4yNzQ1YjAxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZHZiLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWR2Yi5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZHZiOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWR0c2RlYy5odG1sIiB0aXRsZT0iZHRzZGVjIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWR2ZHNwdS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWR2ZHNwdS5odG1sCmluZGV4IDA3NTk5OTAuLjU2ZDE2ZTcgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kdmRzcHUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZHZkc3B1Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5kdmRzcHU6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZHZiLmh0bWwiIHRpdGxlPSJkdmIiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZmFhYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWZhYWMuaHRtbAppbmRleCBkZTliZjMxLi5iNWY1YTgzIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZmFhYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1mYWFjLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5mYWFjOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWR2ZHNwdS5odG1sIiB0aXRsZT0iZHZkc3B1Ij4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS41LjAuMTwvdGQ+Cis8dGQ+MS43LjAuMTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWZhYWQuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1mYWFkLmh0bWwKaW5kZXggODIyZTMwZi4uMTkzMGY4OCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWZhYWQuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZmFhZC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZmFhZDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1mYWFjLmh0bWwiIHRpdGxlPSJmYWFjIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWZlc3RpdmFsLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZmVzdGl2YWwuaHRtbAppbmRleCAyMjNmODQ0Li41NTYwMzZhIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZmVzdGl2YWwuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZmVzdGl2YWwuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmZlc3RpdmFsOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWZhYWQuaHRtbCIgdGl0bGU9ImZhYWQiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ2F1ZGllZmZlY3RzLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ2F1ZGllZmZlY3RzLmh0bWwKaW5kZXggYWNkNWNmNC4uNmRmN2M3NiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWdhdWRpZWZmZWN0cy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nYXVkaWVmZmVjdHMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmdhdWRpZWZmZWN0czogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1mZXN0aXZhbC5odG1sIiB0aXRsZT0iZmVzdGl2YWwiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ2VvbWV0cmljdHJhbnNmb3JtLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ2VvbWV0cmljdHJhbnNmb3JtLmh0bWwKaW5kZXggYjg2MDM0YS4uNDRkZjhlZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWdlb21ldHJpY3RyYW5zZm9ybS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0uaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmdlb21ldHJpY3RyYW5zZm9ybTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nYXVkaWVmZmVjdHMuaHRtbCIgdGl0bGU9ImdhdWRpZWZmZWN0cyI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nc20uaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nc20uaHRtbAppbmRleCAxYmU0OWI4Li41Nzc2MzIxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ3NtLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWdzbS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Z3NtOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWdlb21ldHJpY3RyYW5zZm9ybS5odG1sIiB0aXRsZT0iZ2VvbWV0cmljdHJhbnNmb3JtIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWpwZWdmb3JtYXQuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1qcGVnZm9ybWF0Lmh0bWwKaW5kZXggNzg3YTZmZC4uYmZmYmJiZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWpwZWdmb3JtYXQuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tanBlZ2Zvcm1hdC5odG1sCkBAIC0zLDExICszLDExIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5qcGVnZm9ybWF0OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWdzbS5odG1sIiB0aXRsZT0iZ3NtIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWxpdmVhZGRlci5odG1sIiB0aXRsZT0ibGl2ZWFkZGVyIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljLmh0bWwiIHRpdGxlPSJtaW1pYyI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPC9oZWFkPgpAQCAtMTcsNyArMTcsNyBAQAogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDIuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWdzbS5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWxpdmVhZGRlci5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYy5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1qcGVnZm9ybWF0Ij48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWxpdmVhZGRlci5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWxpdmVhZGRlci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDExZDM2Li4wMDAwMDAwCi0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTx0aXRsZT5saXZlYWRkZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Ci08bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+Ci08bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1qcGVnZm9ybWF0Lmh0bWwiIHRpdGxlPSJqcGVnZm9ybWF0Ij4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljLmh0bWwiIHRpdGxlPSJtaW1pYyI+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPgotPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgotPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KLTx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMi5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tanBlZ2Zvcm1hdC5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgotPC90cj48L3RhYmxlPgotPGRpdiBjbGFzcz0icmVmZW50cnkiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWxpdmVhZGRlciI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KLTx0ZCB2YWxpZ249InRvcCI+Ci08aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPmxpdmVhZGRlcjwvc3Bhbj48L2gyPgotPHA+bGl2ZWFkZGVyIOKAlCA8YSBuYW1lPSJwbHVnaW4tbGl2ZWFkZGVyIj48L2E+QWRkcyBtdWx0aXBsZSBsaXZlIGRpc2NvbnRpbnVvdXMgc3RyZWFtczwvcD4KLTwvdGQ+Ci08dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Ci08L3RyPjwvdGFibGU+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMjUuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5maWxlbmFtZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5saWJnc3RsaXZlYWRkZXIuc288L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgotPHRkPkxHUEw8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cGFja2FnZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm9yaWdpbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5Vbmtub3duIHBhY2thZ2Ugb3JpZ2luPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjI1LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sIiB0aXRsZT0ibGl2ZWFkZGVyIj5saXZlYWRkZXI8L2E+PC9zcGFuPjwvcD48L3RkPgotPHRkPk1peGVzIGxpdmUvZGlzY29udGludW91cyBhdWRpbyBzdHJlYW1zPC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZm9vdGVyIj4KLTxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljLmh0bWwKaW5kZXggZjgwZTljYi4uODg0OTU1MyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljLmh0bWwKQEAgLTMsMTAgKzMsMTAgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm1pbWljOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWxpdmVhZGRlci5odG1sIiB0aXRsZT0ibGl2ZWFkZGVyIj4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWpwZWdmb3JtYXQuaHRtbCIgdGl0bGU9ImpwZWdmb3JtYXQiPgogPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbW1zLmh0bWwiIHRpdGxlPSJtbXMiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KQEAgLTE2LDcgKzE2LDcgQEAKIDx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMi5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbGl2ZWFkZGVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tanBlZ2Zvcm1hdC5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1tcy5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4yNi4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMjUuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjI2LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjI1LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tbXMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tbXMuaHRtbAppbmRleCBmZGI3ZWM0Li42YWUwYzM3IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbW1zLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1tcy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bW1zOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljLmh0bWwiIHRpdGxlPSJtaW1pYyI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMjcuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjI2LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4yNy40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4yNi40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbW9kcGx1Zy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1vZHBsdWcuaHRtbAppbmRleCAwMDg5ZTY3Li5kY2NkMDJkIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbW9kcGx1Zy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tb2RwbHVnLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5tb2RwbHVnOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1tcy5odG1sIiB0aXRsZT0ibW1zIj4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4yOC4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMjcuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjI4LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjI3LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGVnMmVuYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1wZWcyZW5jLmh0bWwKaW5kZXggODE2Y2JiNi4uZjg1ZDYyYiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1wZWcyZW5jLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1wZWcyZW5jLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5tcGVnMmVuYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tb2RwbHVnLmh0bWwiIHRpdGxlPSJtb2RwbHVnIj4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4yOS4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMjguMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjI5LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjI4LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGVncHNtdXguaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGVncHNtdXguaHRtbAppbmRleCAxNDdiZTljLi42YTJmZWVhIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBlZ3BzbXV4Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1wZWdwc211eC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bXBlZ3BzbXV4OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1wZWcyZW5jLmh0bWwiIHRpdGxlPSJtcGVnMmVuYyI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzAuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjI5LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zMC40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4yOS40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBlZ3RzbXV4Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBlZ3RzbXV4Lmh0bWwKaW5kZXggODMwOWJjMy4uOTRiMzMwNyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1wZWd0c211eC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGVndHNtdXguaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm1wZWd0c211eDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGVncHNtdXguaHRtbCIgdGl0bGU9Im1wZWdwc211eCI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzEuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjMwLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zMS40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zMC40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBsZXguaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGxleC5odG1sCmluZGV4IGQ0YmQ3MjEuLmE5YjBiODQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGxleC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGxleC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bXBsZXg6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBlZ3RzbXV4Lmh0bWwiIHRpdGxlPSJtcGVndHNtdXgiPgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjMyLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zMS4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02MCw3ICs2MCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzIuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzEuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW5lb24uaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1uZW9uLmh0bWwKaW5kZXggYWVjNThiOC4uYjY4NjVkMiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW5lb24uaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbmVvbi5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bmVvbjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGxleC5odG1sIiB0aXRsZT0ibXBsZXgiPgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjMzLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zMi4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMjwvdGQ+Cis8dGQ+MS43LjE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zMy40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zMi40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb2ZhLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb2ZhLmh0bWwKaW5kZXggN2M4MzAxYi4uZjI0MmRjMiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9mYS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vZmEuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm9mYTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1uZW9uLmh0bWwiIHRpdGxlPSJuZW9uIj4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zNC4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzMuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjM0LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjMzLjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuYWwuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuYWwuaHRtbAppbmRleCAyOTI5NTk2Li4wNTBjM2E2IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmFsLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5hbC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+b3BlbmFsOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9mYS5odG1sIiB0aXRsZT0ib2ZhIj4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zNS4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzQuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjM1LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjM0LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuY3YuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuY3YuaHRtbAppbmRleCAxMWQ1N2I4Li42MjNmNmY4IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmN2Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5jdi5odG1sCkBAIC0zLDExICszLDExIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5vcGVuY3Y6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmFsLmh0bWwiIHRpdGxlPSJvcGVuYWwiPgotPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sIiB0aXRsZT0ib3B1cyI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1wY2FwcGFyc2UuaHRtbCIgdGl0bGU9InBjYXBwYXJzZSI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPC9oZWFkPgpAQCAtMTcsNyArMTcsNyBAQAogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDIuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5hbC5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wdXMuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcGNhcHBhcnNlLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5jdiI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzYuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjM1LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuMjwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjM2LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjM1LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcHVzLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2VhYjNhLi4wMDAwMDAwCi0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcHVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08dGl0bGU+b3B1czogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KLTxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KLTxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5jdi5odG1sIiB0aXRsZT0ib3BlbmN2Ij4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXBjYXBwYXJzZS5odG1sIiB0aXRsZT0icGNhcHBhcnNlIj4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+Ci08Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Ci08dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgotPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAyLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuY3YuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1wY2FwcGFyc2UuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cyI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KLTx0ZCB2YWxpZ249InRvcCI+Ci08aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPm9wdXM8L3NwYW4+PC9oMj4KLTxwPm9wdXMg4oCUIDxhIG5hbWU9InBsdWdpbi1vcHVzIj48L2E+T1BVUyBwbHVnaW4gbGlicmFyeTwvcD4KLTwvdGQ+Ci08dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Ci08L3RyPjwvdGFibGU+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzcuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5maWxlbmFtZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5saWJnc3RvcHVzLnNvPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5MR1BMPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnBhY2thZ2U8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5vcmlnaW48L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+VW5rbm93biBwYWNrYWdlIG9yaWdpbjwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zNy40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCIgdGl0bGU9Im9wdXNkZWMiPm9wdXNkZWM8L2E+PC9zcGFuPjwvcD48L3RkPgotPHRkPmRlY29kZSBvcHVzIHN0cmVhbXMgdG8gYXVkaW88L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCIgdGl0bGU9Im9wdXNlbmMiPm9wdXNlbmM8L2E+PC9zcGFuPjwvcD48L3RkPgotPHRkPkVuY29kZXMgYXVkaW8gaW4gT3B1cyBmb3JtYXQ8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sIiB0aXRsZT0ib3B1c3BhcnNlIj5vcHVzcGFyc2U8L2E+PC9zcGFuPjwvcD48L3RkPgotPHRkPnBhcnNlcyBvcHVzIGF1ZGlvIHN0cmVhbXM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sIiB0aXRsZT0icnRwb3B1c2RlcGF5Ij5ydHBvcHVzZGVwYXk8L2E+PC9zcGFuPjwvcD48L3RkPgotPHRkPkV4dHJhY3RzIE9wdXMgYXVkaW8gZnJvbSBSVFAgcGFja2V0czwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sIiB0aXRsZT0icnRwb3B1c3BheSI+cnRwb3B1c3BheTwvYT48L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+UHV0cyBPcHVzIGF1ZGlvIGluIFJUUCBwYWNrZXRzPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJmb290ZXIiPgotPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXBjYXBwYXJzZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXBjYXBwYXJzZS5odG1sCmluZGV4IGJjNjE0ZTEuLmRlZTRlZWMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1wY2FwcGFyc2UuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcGNhcHBhcnNlLmh0bWwKQEAgLTMsMTAgKzMsMTAgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnBjYXBwYXJzZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcHVzLmh0bWwiIHRpdGxlPSJvcHVzIj4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5jdi5odG1sIiB0aXRsZT0ib3BlbmN2Ij4KIDxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJhd3BhcnNlLmh0bWwiIHRpdGxlPSJyYXdwYXJzZSI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgpAQCAtMTYsNyArMTYsNyBAQAogPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAyLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcHVzLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmN2Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcmF3cGFyc2UuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzguMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjM2LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zOC40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zNi40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcmF3cGFyc2UuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1yYXdwYXJzZS5odG1sCmluZGV4IGQ0YWQ0MTEuLmNmZTFiZmQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1yYXdwYXJzZS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1yYXdwYXJzZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+cmF3cGFyc2U6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcGNhcHBhcnNlLmh0bWwiIHRpdGxlPSJwY2FwcGFyc2UiPgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjM5LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zNy4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02MCw3ICs2MCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzkuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzcuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJmYnNyYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJmYnNyYy5odG1sCmluZGV4IDZlNzFjNTAuLjNlZWNiYjggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1yZmJzcmMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcmZic3JjLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5yZmJzcmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcmF3cGFyc2UuaHRtbCIgdGl0bGU9InJhd3BhcnNlIj4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40MC4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzguMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjQwLjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjM4LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1ydG1wLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcnRtcC5odG1sCmluZGV4IDNlYjhlMmYuLmU0NDc2NmIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1ydG1wLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJ0bXAuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnJ0bXA6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcmZic3JjLmh0bWwiIHRpdGxlPSJyZmJzcmMiPgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjQxLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zOS4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02MCw3ICs2MCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuNDEuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzkuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNkcC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNkcC5odG1sCmluZGV4IDAwMzZhYWMuLjEzYjQ1NTcgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zZHAuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tc2RwLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5zZHA6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcnRtcC5odG1sIiB0aXRsZT0icnRtcCI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuNDIuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjQwLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40Mi40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy40MC40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tc2htLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tc2htLmh0bWwKaW5kZXggN2FkZjU3OS4uZWIzZWY3MyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNobS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zaG0uaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnNobTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zZHAuaHRtbCIgdGl0bGU9InNkcCI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuNDMuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjQxLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40My40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy40MS40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tc291bmR0b3VjaC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNvdW5kdG91Y2guaHRtbAppbmRleCBmOTdlZTRmLi40OWNiMzYyIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tc291bmR0b3VjaC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zb3VuZHRvdWNoLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5zb3VuZHRvdWNoOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNobS5odG1sIiB0aXRsZT0ic2htIj4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40NC4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuNDIuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjQ0LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjQyLjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zcGVlZC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNwZWVkLmh0bWwKaW5kZXggNTcwODJiYy4uM2FmNWFkYSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNwZWVkLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNwZWVkLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5zcGVlZDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zb3VuZHRvdWNoLmh0bWwiIHRpdGxlPSJzb3VuZHRvdWNoIj4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40NS4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuNDMuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjQ1LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjQzLjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi12b2FhY2VuYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXZvYWFjZW5jLmh0bWwKaW5kZXggOWI2YmM2OC4uZTk0ODRlYSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXZvYWFjZW5jLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXZvYWFjZW5jLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT52b2FhY2VuYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zcGVlZC5odG1sIiB0aXRsZT0ic3BlZWQiPgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjQ2LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy40NC4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02MCw3ICs2MCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuNDYuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuNDQuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXZvYW1yd2JlbmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi12b2FtcndiZW5jLmh0bWwKaW5kZXggMjNmMjY3MS4uOGM3OWE4YiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXZvYW1yd2JlbmMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tdm9hbXJ3YmVuYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+dm9hbXJ3YmVuYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi12b2FhY2VuYy5odG1sIiB0aXRsZT0idm9hYWNlbmMiPgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjQ3LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy40NS4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02MCw3ICs2MCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuNDcuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuNDUuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXpiYXIuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi16YmFyLmh0bWwKaW5kZXggOGNkOTNmZC4uZWMyMGEwMCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXpiYXIuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4temJhci5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+emJhcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi12b2FtcndiZW5jLmh0bWwiIHRpdGxlPSJ2b2FtcndiZW5jIj4KQEAgLTI4LDcgKzI4LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40OC4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuNDYuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQxLDcgKzQxLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNTksNyArNTksNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjQ4LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjQ2LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXB5cmFtaWRzZWdtZW50Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1weXJhbWlkc2VnbWVudC5odG1sCmluZGV4IDk5MzY3OTIuLjQxNzZmMmUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXB5cmFtaWRzZWdtZW50Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcHlyYW1pZHNlZ21lbnQuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnB5cmFtaWRzZWdtZW50OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLmh0bWwiIHRpdGxlPSJwaW5jaCI+CkBAIC0zNiw3ICszNiw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjY0LjQuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjU5LjQuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTYyLDcgKzYyLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjY0LjQuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNTkuNC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1yZmJzcmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJmYnNyYy5odG1sCmluZGV4IDFmNzJjMzQuLjEzMWM3ZTcgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJmYnNyYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJmYnNyYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+cmZic3JjOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXB5cmFtaWRzZWdtZW50Lmh0bWwiIHRpdGxlPSJweXJhbWlkc2VnbWVudCI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1yZmJzcmMucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtMTEwLDcgKzExMCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdFJmYlNyYyI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJmYnNyYy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTM3LDcgKzEzNyw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjY1LjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjYwLjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE2Myw3ICsxNjMsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNjUuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42MC43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0bXBzaW5rLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydG1wc2luay5odG1sCmluZGV4IDc1ZDE3ZjMuLmM5MmM2Y2UgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0bXBzaW5rLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRtcHNpbmsuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnJ0bXBzaW5rOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJmYnNyYy5odG1sIiB0aXRsZT0icmZic3JjIj4KQEAgLTM2LDcgKzM2LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0bXBzaW5rLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUyLDcgKzUyLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0UlRNUFNpbmsiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydG1wc2luay5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtODQsNyArODQsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42Ni44LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42MS44LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMTAsNyArMTEwLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjY2LjguMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjEuOC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydG1wc3JjLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydG1wc3JjLmh0bWwKaW5kZXggNGEzZTc2MC4uMTMyZDExYiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRtcHNyYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0bXBzcmMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnJ0bXBzcmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRtcHNpbmsuaHRtbCIgdGl0bGU9InJ0bXBzaW5rIj4KQEAgLTM2LDcgKzM2LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0bXBzcmMucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTIsNyArNTIsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RSVE1QU3JjIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRtcHNyYy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtODUsNyArODUsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42Ny44LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42Mi44LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMTEsNyArMTExLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjY3LjguMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjIuOC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTc2YTFlLi4wMDAwMDAwCi0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTx0aXRsZT5ydHBvcHVzZGVwYXk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Ci08bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+Ci08bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwiIHRpdGxlPSJydHBvcHVzcGF5Ij4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwiIHRpdGxlPSJwY2FwcGFyc2UiPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD4KLTxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KLTx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Ci08dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KLTxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5LmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj4KLTwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMS5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Ci08dGQgdmFsaWduPSJ0b3AiPgotPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkudG9wX29mX3BhZ2UiPjwvYT5ydHBvcHVzZGVwYXk8L3NwYW4+PC9oMj4KLTxwPnJ0cG9wdXNkZXBheTwvcD4KLTwvdGQ+Ci08dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Ci08L3RyPjwvdGFibGU+PC9kaXY+Ci08YSBuYW1lPSJHc3RPcGVuYWxTcmMiPjwvYT48YSBuYW1lPSJHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+PC9hPjxhIG5hbWU9IkdzdE9wdXNEZWMiPjwvYT48YSBuYW1lPSJHc3RPcHVzRW5jIj48L2E+PGEgbmFtZT0iR3N0T3B1c1BhcnNlIj48L2E+PGEgbmFtZT0iR3N0UlRQT3B1c0RlcGF5Ij48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KLTxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+PHRyPgotPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwjR3N0UlRQT3B1c0RlcGF5LXN0cnVjdCIgdGl0bGU9InN0cnVjdCBHc3RSVFBPcHVzRGVwYXkiPkdzdFJUUE9wdXNEZXBheTwvYT48L3RkPgotPC90cj48L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3RydHBiYXNlZGVwYXlsb2FkLmh0bWwjR3N0UlRQQmFzZURlcGF5bG9hZCI+R3N0UlRQQmFzZURlcGF5bG9hZDwvYT4KLSAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0UlRQT3B1c0RlcGF5Ci08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5LmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KLTxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KLTxoMj5TeW5vcHNpczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNjEuMTEuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wbHVnaW48L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+Ci0gICAgICAgICAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wdXMuaHRtbCNwbHVnaW4tb3B1cyI+b3B1czwvYT4KLSAgICAgICAgICA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+YXV0aG9yPC9zcGFuPjwvcD48L3RkPgotPHRkPkRhbmlsbyBDZXNhciBMZW1lcyBkZSBQYXVsYSAmbHQ7ZGFuaWxvLmNlc2FyQGNvbGxhYm9yYS5jby51ayZndDs8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+Y2xhc3M8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+Q29kZWMvRGVwYXlsb2FkZXIvTmV0d29yay9SVFA8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNjEuMTEuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c2luazwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c2luazwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wcmVzZW5jZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hbHdheXM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hcHBsaWNhdGlvbi94LXJ0cCwgbWVkaWE9KHN0cmluZylhdWRpbywgcGF5bG9hZD0oaW50KVsgOTYsIDEyNyBdLCBjbG9jay1yYXRlPShpbnQpNDgwMDAsIGVuY29kaW5nLW5hbWU9KHN0cmluZyl7IE9QVVMsIFgtR1NULU9QVVMtRFJBRlQtU1BJVFRLQS0wMCB9PC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+bmFtZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zcmM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGlyZWN0aW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPnNvdXJjZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wcmVzZW5jZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hbHdheXM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hdWRpby94LW9wdXMsIG11bHRpc3RyZWFtPShib29sZWFuKWZhbHNlPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPHA+PC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdFJUUE9wdXNEZXBheS1zdHJ1Y3QiPjwvYT48aDM+c3RydWN0IEdzdFJUUE9wdXNEZXBheTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdFJUUE9wdXNEZXBheTs8L3ByZT4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImZvb3RlciI+Ci08aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NjZhM2UuLjAwMDAwMDAKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTx0aXRsZT5ydHBvcHVzcGF5OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgotPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgotPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwiIHRpdGxlPSJvcHVzcGFyc2UiPgotPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCIgdGl0bGU9InJ0cG9wdXNkZXBheSI+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPgotPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgotPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KLTx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgotPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5LmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+Ci08L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDEuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Ij48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KLTxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgotPHRkIHZhbGlnbj0idG9wIj4KLTxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS50b3Bfb2ZfcGFnZSI+PC9hPnJ0cG9wdXNwYXk8L3NwYW4+PC9oMj4KLTxwPnJ0cG9wdXNwYXk8L3A+Ci08L3RkPgotPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgotPC90cj48L3RhYmxlPjwvZGl2PgotPGEgbmFtZT0iR3N0T3BlbmFsU3JjIj48L2E+PGEgbmFtZT0iR3N0T3BlbmN2VGV4dE92ZXJsYXkiPjwvYT48YSBuYW1lPSJHc3RPcHVzRGVjIj48L2E+PGEgbmFtZT0iR3N0T3B1c0VuYyI+PC9hPjxhIG5hbWU9IkdzdE9wdXNQYXJzZSI+PC9hPjxhIG5hbWU9IkdzdFJUUE9wdXNEZXBheSI+PC9hPjxhIG5hbWU9IkdzdFJ0cE9QVVNQYXkiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KLTxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+PHRyPgotPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sI0dzdFJ0cE9QVVNQYXktc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdFJ0cE9QVVNQYXkiPkdzdFJ0cE9QVVNQYXk8L2E+PC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHJ0cGJhc2VwYXlsb2FkLmh0bWwjR3N0UlRQQmFzZVBheWxvYWQiPkdzdFJUUEJhc2VQYXlsb2FkPC9hPgotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RSdHBPUFVTUGF5Ci08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+Ci08aDI+U3lub3BzaXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjYwLjEyLjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cGx1Z2luPC9zcGFuPjwvcD48L3RkPgotPHRkPgotICAgICAgICAgICAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcHVzLmh0bWwjcGx1Z2luLW9wdXMiPm9wdXM8L2E+Ci0gICAgICAgICAgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmF1dGhvcjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5EYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgJmx0O2Rhbmlsby5jZXNhckBjb2xsYWJvcmEuY28udWsmZ3Q7PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmNsYXNzPC9zcGFuPjwvcD48L3RkPgotPHRkPkNvZGVjL1BheWxvYWRlci9OZXR3b3JrL1JUUDwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42MC4xMi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+bmFtZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zaW5rPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRpcmVjdGlvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zaW5rPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnByZXNlbmNlPC9zcGFuPjwvcD48L3RkPgotPHRkPmFsd2F5czwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPmF1ZGlvL3gtb3B1cywgbXVsdGlzdHJlYW09KGJvb2xlYW4pZmFsc2U8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5uYW1lPC9zcGFuPjwvcD48L3RkPgotPHRkPnNyYzwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c291cmNlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnByZXNlbmNlPC9zcGFuPjwvcD48L3RkPgotPHRkPmFsd2F5czwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPmFwcGxpY2F0aW9uL3gtcnRwLCBtZWRpYT0oc3RyaW5nKWF1ZGlvLCBwYXlsb2FkPShpbnQpWyA5NiwgMTI3IF0sIGNsb2NrLXJhdGU9KGludCk0ODAwMCwgZW5jb2RpbmctcGFyYW1zPShzdHJpbmcpMiwgZW5jb2RpbmctbmFtZT0oc3RyaW5nKXsgT1BVUywgWC1HU1QtT1BVUy1EUkFGVC1TUElUVEtBLTAwIH08L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPHA+PC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RSdHBPUFVTUGF5LXN0cnVjdCI+PC9hPjxoMz5zdHJ1Y3QgR3N0UnRwT1BVU1BheTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdFJ0cE9QVVNQYXk7PC9wcmU+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJmb290ZXIiPgotPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2RwZGVtdXguaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNkcGRlbXV4Lmh0bWwKaW5kZXggZjYzMTAwNi4uOGZmNDU2MCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2RwZGVtdXguaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zZHBkZW11eC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+c2RwZGVtdXg6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2htc3JjLmh0bWwiIHRpdGxlPSJzaG1zcmMiPgpAQCAtMzYsNyArMzYsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2RwZGVtdXgucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNjgsNyArNjgsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RTRFBEZW11eCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNkcGRlbXV4Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xMDgsMTMgKzEwOCwxMyBAQAogPHA+c2RwZGVtdXggYWN0cyBsaWtlIGEgbGl2ZSBlbGVtZW50IGFuZCB3aWxsIHRoZXJlZm9yZSBvbmx5IGdlbmVyYXRlIGRhdGEgaW4gdGhlIAogUExBWUlORyBzdGF0ZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzAuOC41Ij48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjY1LjguNSI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KICAgICAgIDx0cj4KICAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIGdub21ldmZzc3JjIGxvY2F0aW9uPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+aHR0cDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij46PC9zcGFuPjxzcGFuIGNsYXNzPSJndGtkb2Mgc2xjIj4vL3NvbWUuc2VydmVyL3Nlc3Npb24uc2RwICEgc2RwZGVtdXggISBmYWtlc2luazwvc3Bhbj48L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gc291cGh0dHBzcmMgbG9jYXRpb248c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj5odHRwPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPjo8L3NwYW4+PHNwYW4gY2xhc3M9Imd0a2RvYyBzbGMiPi8vc29tZS5zZXJ2ZXIvc2Vzc2lvbi5zZHAgISBzZHBkZW11eCAhIGZha2VzaW5rPC9zcGFuPjwvcHJlPjwvdGQ+CiAgICAgICA8L3RyPgogICAgIDwvdGJvZHk+CiAgIDwvdGFibGU+CkBAIC0xMjUsNyArMTI1LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzAuOC42LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjUuOC42LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTUxLDcgKzE1MSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43MC44LjYuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjY1LjguNi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2htc2luay5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2htc2luay5odG1sCmluZGV4IGY1NWY3MTIuLjlmYjcwNzIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNobXNpbmsuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zaG1zaW5rLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5zaG1zaW5rOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0bXBzcmMuaHRtbCIgdGl0bGU9InJ0bXBzcmMiPgpAQCAtMzYsNyArMzYsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2htc2luay5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC03NCw3ICs3NCw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNobXNpbmsuc2lnbmFscyI+PC9hPjxoMj5TaWduYWxzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJzaWduYWxzX3JldHVybiI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InNpZ25hbHNfbmFtZSI+CkBAIC05Niw3ICs5Niw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdFNobVNpbmsiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zaG1zaW5rLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xMjIsNyArMTIyLDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNjguOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjMuOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTQ4LDcgKzE0OCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42OC44LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjYzLjguMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2htc3JjLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zaG1zcmMuaHRtbAppbmRleCA3MmU4OGVmLi5lMmZiMmQxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zaG1zcmMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zaG1zcmMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnNobXNyYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zaG1zaW5rLmh0bWwiIHRpdGxlPSJzaG1zaW5rIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNobXNyYy5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC02NCw3ICs2NCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdFNobVNyYyI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNobXNyYy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtOTEsNyArOTEsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42OS43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42NC43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMTcsNyArMTE3LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjY5LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjQuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zb2xhcml6ZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc29sYXJpemUuaHRtbAppbmRleCAzNmI1N2I2Li42NzgwMDk2IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zb2xhcml6ZS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNvbGFyaXplLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5zb2xhcml6ZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zZHBkZW11eC5odG1sIiB0aXRsZT0ic2RwZGVtdXgiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc29sYXJpemUucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNjcsNyArNjcsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RTb2xhcml6ZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNvbGFyaXplLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC05MywxMyArOTMsMTMgQEAKIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNvbGFyaXplLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxwPlNvbGFyaXplIGRvZXMgYSBzbWFydCBpbnZlcnNlIGluIGEgdmlkZW8gc3RyZWFtIGluIHJlYWx0aW1lLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43MS43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjYuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgogICAgICAgPHRyPgogICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHNvbGFyaXplIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHNvbGFyaXplIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgogICA8L3RhYmxlPgpAQCAtMTA5LDcgKzEwOSw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjcxLjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjY2LjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEzNSw3ICsxMzUsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzEuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42Ni43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwYWNlc2NvcGUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwYWNlc2NvcGUuaHRtbAppbmRleCAwZTVkN2VjLi5lNGQ2YjM4IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGFjZXNjb3BlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BhY2VzY29wZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+c3BhY2VzY29wZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zb2xhcml6ZS5odG1sIiB0aXRsZT0ic29sYXJpemUiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BhY2VzY29wZS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01MCw3ICs1MCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdFNwYWNlU2NvcGUiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGFjZXNjb3BlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+R3N0RWxlbWVudDwvYT4KLSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RBdWRpb1Zpc3VhbGl6ZXItQmFkR3N0QXVkaW9WaXN1YWxpemVycworICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEF1ZGlvVmlzdWFsaXplcgogICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RTcGFjZVNjb3BlCiA8L3ByZT4KIDwvZGl2PgpAQCAtNzYsMTMgKzc2LDEzIEBACiA8cD5TcGFjZXNjb3BlIGlzIGEgc2ltcGxlIGF1ZGlvIHZpc3VhbGlzYXRpb24gZWxlbWVudC4gSXQgbWFwcyB0aGUgbGVmdCBhbmQKIHJpZ2h0IGNoYW5uZWwgdG8geCBhbmQgeSBjb29yZGluYXRlcy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzIuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjY3LjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KICAgICAgIDx0cj4KICAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIGF1ZGlvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXVkaW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBzcGFjZXNjb3BlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB4aW1hZ2VzaW5rPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IGF1ZGlvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXVkaW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBzcGFjZXNjb3BlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB4aW1hZ2VzaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTkyLDcgKzkyLDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzIuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjcuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTE4LDcgKzExOCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43Mi43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjY3LjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BlY3RyYXNjb3BlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGVjdHJhc2NvcGUuaHRtbAppbmRleCA2OGMxNjg0Li5iMTNhYjEwIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGVjdHJhc2NvcGUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGVjdHJhc2NvcGUuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnNwZWN0cmFzY29wZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGFjZXNjb3BlLmh0bWwiIHRpdGxlPSJzcGFjZXNjb3BlIj4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxhIG5hbWU9IkdzdFNwZWN0cmFTY29wZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwZWN0cmFzY29wZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNTEsNyArNTEsNyBAQAogICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+CiAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+CiAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0QXVkaW9WaXN1YWxpemVyLUJhZEdzdEF1ZGlvVmlzdWFsaXplcnMKKyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RBdWRpb1Zpc3VhbGl6ZXIKICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0U3BlY3RyYVNjb3BlCiA8L3ByZT4KIDwvZGl2PgpAQCAtNjAsMTMgKzYwLDEzIEBACiA8cD5TcGVjdHJhc2NvcGUgaXMgYSBzaW1wbGUgc3BlY3RydW0gdmlzdWFsaXNhdGlvbiBlbGVtZW50LiBJdCByZW5kZXJzIHRoZQogZnJlcXVlbmN5IHNwZWN0cnVtIGFzIGEgc2VyaWVzIG9mIGJhcnMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjczLjYuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42OC42LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCBhdWRpb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gc3BlY3RyYXNjb3BlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB4aW1hZ2VzaW5rPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IGF1ZGlvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXVkaW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBzcGVjdHJhc2NvcGUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHhpbWFnZXNpbms8L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgogICA8L3RhYmxlPgpAQCAtNzYsNyArNzYsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43My42LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42OC42LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMDIsNyArMTAyLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjczLjYuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjguNi40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGVlZC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BlZWQuaHRtbAppbmRleCA0YTVlYTM1Li5lNjE4NDgwIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGVlZC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwZWVkLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5zcGVlZDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zeW5hZXNjb3BlLmh0bWwiIHRpdGxlPSJzeW5hZXNjb3BlIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwZWVkLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUwLDcgKzUwLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0U3BlZWQiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGVlZC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNzgsMTMgKzc4LDEzIEBACiBlbGVtZW50IChidXQgcmVsaWVzIG9uIHRoZSBkZWNvZGVyL2RlbXV4ZXIgdG8gaGFuZGxlIHRoaXMgY29ycmVjdGx5LCBhbHNvCiByZXF1aXJlcyBhIGZhaXJseSB1cC10by1kYXRlIGdzdC1wbHVnaW5zLWJhc2UsIGFzIG9mIEZlYnJ1YXJ5IDIwMDcpLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43NS43LjQiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzAuNy40Ij48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgogICAgICAgPHRyPgogICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbjxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPnRlc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Ljwvc3Bhbj5vZ2cgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGRlY29kZWJpbiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXVkaW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBzcGVlZCBzcGVlZDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuNTwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXVkaW9yZXNhbXBsZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b2F1ZGlvc2luazwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiBmaWxlc3JjIGxvY2F0aW9uPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+dGVzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4uPC9zcGFuPm9nZyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZGVjb2RlYmluIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHNwZWVkIHNwZWVkPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS41PC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXVkaW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb3Jlc2FtcGxlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvYXVkaW9zaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTk0LDcgKzk0LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzUuNy41LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzAuNy41LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTIwLDcgKzEyMCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43NS43LjUuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjcwLjcuNS4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BoZXJlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGhlcmUuaHRtbAppbmRleCAyZGU4YTI3Li4yY2ZkZDQ4IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGhlcmUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGhlcmUuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnNwaGVyZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGVlZC5odG1sIiB0aXRsZT0ic3BlZWQiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BoZXJlLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUwLDcgKzUwLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0U3BoZXJlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BoZXJlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC03NiwxMCArNzYsMjUgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BoZXJlLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzxwPlRoZSBzcGhlcmUgZWxlbWVudCBhcHBsaWVzIGEgJ3NwaGVyZScgZ2VvbWV0cmljIHRyYW5zZm9ybSB0byB0aGUgaW1hZ2UuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iaWQtMS4yLjcxLjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CisgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorICAgIDx0Ym9keT4KKyAgICAgIDx0cj4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gc3BoZXJlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgPC90cj4KKyAgICA8L3Rib2R5PgorICA8L3RhYmxlPgorPC9kaXY+CisKKzwvZGl2PgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43Ni43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43MS43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMDUsNyArMTIwLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjc2LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzEuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNzgsNiArMTkzLDEwIEBACiA8cD5EZWZhdWx0IHZhbHVlOiAxLjU8L3A+CiA8L2Rpdj4KIDwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BoZXJlLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPmdlb21ldHJpY3RyYW5zZm9ybTwvcD4KKzwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgogPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5odG1sCmluZGV4IGE3NTJiZTguLjE5MzAxZDEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+c3F1YXJlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5odG1sIiB0aXRsZT0ic3BoZXJlIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC02Miw3ICs2Miw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdFNxdWFyZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtODcsMTAgKzg3LDI1IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD5UaGUgc3F1YXJlIGVsZW1lbnQgZGlzdG9ydHMgdGhlIGNlbnRlciBwYXJ0IG9mIHRoZSBpbWFnZSBpbnRvIGEgc3F1YXJlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi43Mi43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgorICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICA8dGJvZHk+CisgICAgICA8dHI+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHNxdWFyZSB6b29tPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MTAwPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90Ym9keT4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzcuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzIuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTE2LDcgKzEzMSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43Ny43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjcyLjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMjA4LDYgKzIyMywxMCBAQAogPHA+RGVmYXVsdCB2YWx1ZTogMjwvcD4KIDwvZGl2PgogPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+Z2VvbWV0cmljdHJhbnNmb3JtPC9wPgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CiA8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2guaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2guaHRtbAppbmRleCBhMzFiNzJiLi5iYTBkYjI4IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+c3RyZXRjaDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuaHRtbCIgdGl0bGU9InNxdWFyZSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUwLDcgKzUwLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0U3RyZXRjaCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2gub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTc2LDEwICs3NiwyNSBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzxwPlRoZSBzdHJldGNoIGVsZW1lbnQgc3RyZXRjaGVzIHRoZSBpbWFnZSBpbiBhIGNpcmNsZSBhcm91bmQgdGhlIGNlbnRlciBwb2ludC48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJpZC0xLjIuNzMuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KKyAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CisgICAgPHRib2R5PgorICAgICAgPHRyPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBzdHJldGNoIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgPC90cj4KKyAgICA8L3Rib2R5PgorICA8L3RhYmxlPgorPC9kaXY+CisKKzwvZGl2PgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43OC43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43My43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMDUsNyArMTIwLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjc4LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzMuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNzksNiArMTk0LDEwIEBACiA8cD5EZWZhdWx0IHZhbHVlOiAwLjU8L3A+CiA8L2Rpdj4KIDwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD5nZW9tZXRyaWN0cmFuc2Zvcm08L3A+Cis8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KIDxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3luYWVzY29wZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3luYWVzY29wZS5odG1sCmluZGV4IDYyNWQ5NDUuLjdlYmZhNWMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN5bmFlc2NvcGUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zeW5hZXNjb3BlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5zeW5hZXNjb3BlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwZWN0cmFzY29wZS5odG1sIiB0aXRsZT0ic3BlY3RyYXNjb3BlIj4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxhIG5hbWU9IkdzdFN5bmFlU2NvcGUiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zeW5hZXNjb3BlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC01MSw3ICs1MSw3IEBACiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+R3N0RWxlbWVudDwvYT4KLSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RBdWRpb1Zpc3VhbGl6ZXItQmFkR3N0QXVkaW9WaXN1YWxpemVycworICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEF1ZGlvVmlzdWFsaXplcgogICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RTeW5hZVNjb3BlCiA8L3ByZT4KIDwvZGl2PgpAQCAtNjAsMTMgKzYwLDEzIEBACiA8cD5TeW5hZXNjb3BlIGlzIGFuIGF1ZGlvIHZpc3VhbGlzYXRpb24gZWxlbWVudC4gSXQgYW5hbHl6ZXMgZnJlcXVlbmNpZXMgYW5kCiBvdXQtb2YgcGhhc2UgcHJvcGVydGllcyBvZiBhdWRpbyBhbmQgZHJhd3MgdGhpcyBhcyBjbG91ZHMgb2Ygc3RhcnMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjc0LjYuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42OS42LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCBhdWRpb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gc3luYWVzY29wZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4geGltYWdlc2luazwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiBhdWRpb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gc3luYWVzY29wZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4geGltYWdlc2luazwvcHJlPjwvdGQ+CiAgICAgICA8L3RyPgogICAgIDwvdGJvZHk+CiAgIDwvdGFibGU+CkBAIC03Niw3ICs3Niw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjc0LjYuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjY5LjYuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEwMiw3ICsxMDIsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzQuNi40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42OS42LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbAppbmRleCAzYjJjZTg2Li5hYjkyMjUxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+dGVtcGxhdGVtYXRjaDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmh0bWwiIHRpdGxlPSJzdHJldGNoIj4KQEAgLTE1LDggKzE1LDcgQEAKIDx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+CiA8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KIDxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCiAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5wcm9wZXJ0aWVzIiBjbGFzcz0ic2hvcnRjdXQiPlByb3BlcnRpZXM8L2E+PC9zcGFuPgogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CkBAIC0zNSw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTYxLDM0ICs2MCwyNSBAQAogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KLTxhIG5hbWU9IkdzdFN5bmFlU2NvcGUiPjwvYT48YSBuYW1lPSJHc3RUZW1wbGF0ZU1hdGNoIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iR3N0U3luYWVTY29wZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KIDwvY29sZ3JvdXA+CiA8dGJvZHk+PHRyPgogPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI0dzdFRlbXBsYXRlTWF0Y2gtc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdFRlbXBsYXRlTWF0Y2giPkdzdFRlbXBsYXRlTWF0Y2g8L2E+PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNHc3RUZW1wbGF0ZU1hdGNoIiB0aXRsZT0ic3RydWN0IEdzdFRlbXBsYXRlTWF0Y2giPkdzdFRlbXBsYXRlTWF0Y2g8L2E+PC90ZD4KIDwvdHI+PC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0VGVtcGxhdGVNYXRjaAotPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43OS44LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43NC42LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMTQsNyArMTA0LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjc5LjguMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzQuNi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNzMsOCArMTYzLDE4IEBACiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RUZW1wbGF0ZU1hdGNoLXN0cnVjdCI+PC9hPjxoMz5zdHJ1Y3QgR3N0VGVtcGxhdGVNYXRjaDwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdFRlbXBsYXRlTWF0Y2g7PC9wcmU+Cis8YSBuYW1lPSJHc3RUZW1wbGF0ZU1hdGNoIj48L2E+PGgzPnN0cnVjdCBHc3RUZW1wbGF0ZU1hdGNoPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0VGVtcGxhdGVNYXRjaCB7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyIGVsZW1lbnQ7CisKKyAgZ2ludCBtZXRob2Q7CisgIGdib29sZWFuIGRpc3BsYXk7CisKKyAgZ2NoYXIgKnRlbXBsOworCisgIElwbEltYWdlICpjdkdyYXksICpjdlRlbXBsYXRlSW1hZ2UsICpjdkRpc3RJbWFnZTsKK307Cis8L3ByZT4KIDwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5odG1sCmluZGV4IGViZGY5ZmMuLmUyMDQyYzkgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+dHVubmVsOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwiIHRpdGxlPSJvcGVuY3Z0ZXh0b3ZlcmxheSI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8YSBuYW1lPSJHc3RUdW5uZWwiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTYwLDEwICs2MCwyNiBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+VHVubmVsIGlzIGEgZ2VvbWV0cmljIGltYWdlIHRyYW5zZm9ybSBlbGVtZW50LiBJdCBhcHBsaWVzIGEgbGlnaHQgdHVubmVsCitlZmZlY3QuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iaWQtMS4yLjc2LjYuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CisgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorICAgIDx0Ym9keT4KKyAgICAgIDx0cj4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdHVubmVsIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgPC90cj4KKyAgICA8L3Rib2R5PgorICA8L3RhYmxlPgorPC9kaXY+CisKKzwvZGl2PgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44MS42LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43Ni42LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC04OSw3ICsxMDUsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuODEuNi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43Ni42LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE1Miw2ICsxNjgsMTAgQEAKIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0VHVubmVsOzwvcHJlPgogPC9kaXY+CiA8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD5nZW9tZXRyaWN0cmFuc2Zvcm08L3A+Cis8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KIDxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLmh0bWwKaW5kZXggNjhiZGNjNy4uZWExYmE4ZSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10d2lybC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+dHdpcmw6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHVubmVsLmh0bWwiIHRpdGxlPSJ0dW5uZWwiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RUd2lybCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC03NiwxMCArNzYsMjUgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+VGhlIHR3aXJsIGVsZW1lbnQgdHdpc3RzIHRoZSBpbWFnZSBmcm9tIHRoZSBjZW50ZXIgb3V0LjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi43Ny43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgorICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICA8dGJvZHk+CisgICAgICA8dHI+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHR3aXJsIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgPC90cj4KKyAgICA8L3Rib2R5PgorICA8L3RhYmxlPgorPC9kaXY+CisKKzwvZGl2PgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44Mi43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43Ny43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMDUsNyArMTIwLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjgyLjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzcuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNzgsNiArMTkzLDEwIEBACiA8cD5EZWZhdWx0IHZhbHVlOiAzLjE0MTU5PC9wPgogPC9kaXY+CiA8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPmdlb21ldHJpY3RyYW5zZm9ybTwvcD4KKzwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgogPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwKaW5kZXggZDAyMTk4Ny4uYTExYWMxNCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnZpZGVvcGFyc2U6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwuaHRtbCIgdGl0bGU9InR3aXJsIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtMTEyLDEyICsxMTIsMjkgQEAKIDx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbCNHc3RWaWRlb1BhcnNlLS10b3AtZmllbGQtZmlyc3QiIHRpdGxlPSJUaGUg4oCcdG9wLWZpZWxkLWZpcnN04oCdIHByb3BlcnR5Ij50b3AtZmllbGQtZmlyc3Q8L2E+PC90ZD4KIDx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+CiA8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbCNHc3RWaWRlb1BhcnNlLS1mcmFtZXNpemUiIHRpdGxlPSJUaGUg4oCcZnJhbWVzaXpl4oCdIHByb3BlcnR5Ij5mcmFtZXNpemU8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI0dzdFZpZGVvUGFyc2UtLW9mZnNldHMiIHRpdGxlPSJUaGUg4oCcb2Zmc2V0c+KAnSBwcm9wZXJ0eSI+b2Zmc2V0czwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjR3N0VmlkZW9QYXJzZS0tc3RyaWRlcyIgdGl0bGU9IlRoZSDigJxzdHJpZGVz4oCdIHByb3BlcnR5Ij5zdHJpZGVzPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgorPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8YSBuYW1lPSJHc3RWaWRlb1BhcnNlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTQ0LDcgKzE2MSw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjgzLjcuMy4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjc4LjcuMy4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE3MCw3ICsxODcsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuODMuNy4zLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43OC43LjMuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTM1Miw2ICszNjksMzAgQEAKIDxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+CiA8cD5EZWZhdWx0IHZhbHVlOiBUUlVFPC9wPgogPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RWaWRlb1BhcnNlLS1mcmFtZXNpemUiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxmcmFtZXNpemXigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGZyYW1lc2l6ZeKAnSAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+PC9wcmU+Cis8cD5TaXplIG9mIGFuIGltYWdlIGluIHJhdyBzdHJlYW0gKDA6IGRlZmF1bHQpLjwvcD4KKzxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiAwPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RWaWRlb1BhcnNlLS1vZmZzZXRzIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcb2Zmc2V0c+KAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcb2Zmc2V0c+KAnSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8L3ByZT4KKzxwPk9mZnNldCBvZiBlYWNoIHBsYW5lcyBpbiBieXRlcyB1c2luZyBzdHJpbmcgZm9ybWF0OiAnbzAsbzEsbzIsbzMnLjwvcD4KKzxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiBOVUxMPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RWaWRlb1BhcnNlLS1zdHJpZGVzIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcc3RyaWRlc+KAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcc3RyaWRlc+KAnSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8L3ByZT4KKzxwPlN0cmlkZSBvZiBlYWNoIHBsYW5lcyBpbiBieXRlcyB1c2luZyBzdHJpbmcgZm9ybWF0OiAnczAsczEsczIsczMnLjwvcD4KKzxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiBOVUxMPC9wPgorPC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZvYWFjZW5jLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12b2FhY2VuYy5odG1sCmluZGV4IDMyNTY1NGQuLjNkNGZhM2MgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZvYWFjZW5jLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdm9hYWNlbmMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnZvYWFjZW5jOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXpiYXIuaHRtbCIgdGl0bGU9InpiYXIiPgpAQCAtMzYsNyArMzYsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdm9hYWNlbmMucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTEsNyArNTEsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RWb0FhY0VuYyI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZvYWFjZW5jLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC04Myw3ICs4Myw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjg2LjguMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjgxLjguMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEwOSw3ICsxMDksNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuODYuOC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi44MS44LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZvYW1yd2JlbmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZvYW1yd2JlbmMuaHRtbAppbmRleCBmMThkMmQ0Li44MWYwNTc1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12b2FtcndiZW5jLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdm9hbXJ3YmVuYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+dm9hbXJ3YmVuYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12b2FhY2VuYy5odG1sIiB0aXRsZT0idm9hYWNlbmMiPgpAQCAtMzYsNyArMzYsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44Ny4zLjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi44Mi4zLjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC02Miw3ICs2Miw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44Ny4zLjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjgyLjMuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLmh0bWwKaW5kZXggMWM1NTQzMC4uNjA1ZDk1MCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+d2F0ZXJyaXBwbGU6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sIiB0aXRsZT0idmlkZW9wYXJzZSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC02Miw3ICs2Miw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdFdhdGVyUmlwcGxlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTg4LDEwICs4OCwyNSBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD5UaGUgd2F0ZXJyaXBwbGUgZWxlbWVudCBjcmVhdGVzIGEgd2F0ZXIgcmlwcGxlIGVmZmVjdCBvbiB0aGUgaW1hZ2UuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iaWQtMS4yLjc5LjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CisgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorICAgIDx0Ym9keT4KKyAgICAgIDx0cj4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gd2F0ZXJyaXBwbGUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICA8L3RyPgorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjg0LjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjc5LjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTExNyw3ICsxMzIsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuODQuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43OS43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTIwNiw2ICsyMjEsMTAgQEAKIDxwPkRlZmF1bHQgdmFsdWU6IDE2PC9wPgogPC9kaXY+CiA8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPmdlb21ldHJpY3RyYW5zZm9ybTwvcD4KKzwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgogPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXZlc2NvcGUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdmVzY29wZS5odG1sCmluZGV4IDJkODhlNmMuLjA4NGJjNDIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdmVzY29wZS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdmVzY29wZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+d2F2ZXNjb3BlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZvYW1yd2JlbmMuaHRtbCIgdGl0bGU9InZvYW1yd2JlbmMiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F2ZXNjb3BlLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUwLDcgKzUwLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0V2F2ZVNjb3BlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F2ZXNjb3BlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+R3N0RWxlbWVudDwvYT4KLSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RBdWRpb1Zpc3VhbGl6ZXItQmFkR3N0QXVkaW9WaXN1YWxpemVycworICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEF1ZGlvVmlzdWFsaXplcgogICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RXYXZlU2NvcGUKIDwvcHJlPgogPC9kaXY+CkBAIC03NiwxMyArNzYsMTMgQEAKIDxwPldhdmVzY29wZSBpcyBhIHNpbXBsZSBhdWRpbyB2aXN1YWxpc2F0aW9uIGVsZW1lbnQuIEl0IHJlbmRlcnMgdGhlIHdhdmVmb3JtcwogbGlrZSBvbiBhbiBvc2NpbGxvc2NvcGUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjg4LjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi44My43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCBhdWRpb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gd2F2ZXNjb3BlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB4aW1hZ2VzaW5rPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IGF1ZGlvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXVkaW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB3YXZlc2NvcGUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHhpbWFnZXNpbms8L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgogICA8L3RhYmxlPgpAQCAtOTIsNyArOTIsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44OC43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi44My43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMTgsNyArMTE4LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjg4LjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuODMuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy16YmFyLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy16YmFyLmh0bWwKaW5kZXggN2U5NWJhZi4uNDQ1MmZjOCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtemJhci5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXpiYXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnpiYXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuaHRtbCIgdGl0bGU9IndhdGVycmlwcGxlIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXpiYXIucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNjIsNyArNjIsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RaQmFyIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtemJhci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtODksNyArODksNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44NS43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi44MC43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMTUsNyArMTE1LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjg1LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuODAuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9pbmRleC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvaW5kZXguaHRtbAppbmRleCBmYTcyMjk3Li5kYWQ2YTJmIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9pbmRleC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2luZGV4Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5HU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9Im5leHQiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CkBAIC0xNSw3ICsxNSw3IEBACiA8ZGl2PgogPGRpdj48dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjAiPjx0cj48dGggdmFsaWduPSJtaWRkbGUiPjxwIGNsYXNzPSJ0aXRsZSI+R1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3A+PC90aD48L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2PjxwIGNsYXNzPSJyZWxlYXNlaW5mbyI+Ci0gICAgICBmb3IgR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCAoMS42LjMpCisgICAgICBmb3IgR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCAoMS43LjkxKQogICAgICAgVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgb24tbGluZSBhdAogICAgICAgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYWQvaHRtbC8iIHRhcmdldD0iX3RvcCI+aHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFkL2h0bWwvPC9hPi4KICAgICA8L3A+PC9kaXY+CkBAIC0zOCw2ICszOCw5IEBACiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXNzcmVuZGVyLmh0bWwiPmFzc3JlbmRlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwiPmF1ZGlvaW50ZXJsZWF2ZTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sIj5hdWRpb21peGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KQEAgLTE3Niw5ICsxNzksNiBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wbGV4Lmh0bWwiPm1wbGV4PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sIj5tcGcxMjNhdWRpb2RlYzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMuaHRtbCI+bmVvbmh0dHBzcmM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgpAQCAtMTkxLDIxICsxOTEsNiBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuaHRtbCI+b3BlbmFsc2luazwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sIj5vcHVzZGVjPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwiPm9wdXNlbmM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sIj5vcHVzcGFyc2U8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCI+cnRwb3B1c3BheTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwiPnJ0cG9wdXNkZXBheTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwiPnBjYXBwYXJzZTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CkBAIC0zNTksOSArMzQ0LDYgQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tanBlZ2Zvcm1hdC5odG1sIj5qcGVnZm9ybWF0PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBKUEVHIGludGVyY2hhbmdlIGZvcm1hdCBwbHVnaW48L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIuaHRtbCI+bGl2ZWFkZGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBBZGRzIG11bHRpcGxlIGxpdmUgZGlzY29udGludW91cyBzdHJlYW1zPC9zcGFuPgotPC9kdD4KLTxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbWltaWMuaHRtbCI+bWltaWM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIE1pbWljIGNvZGVjPC9zcGFuPgogPC9kdD4KIDxkdD4KQEAgLTM5NSw5ICszNzcsNiBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuY3YuaHRtbCI+b3BlbmN2PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBHU3RyZWFtZXIgT3BlbkNWIFBsdWdpbnM8L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcHVzLmh0bWwiPm9wdXM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIE9QVVMgcGx1Z2luIGxpYnJhcnk8L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1wY2FwcGFyc2UuaHRtbCI+cGNhcHBhcnNlPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBFbGVtZW50IHBhcnNpbmcgcmF3IHBjYXAgc3RyZWFtczwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9pbmRleC5zZ21sIGIvZG9jcy9wbHVnaW5zL2h0bWwvaW5kZXguc2dtbAppbmRleCBlOTk0NTg3Li4wMTAyY2YzIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9pbmRleC5zZ21sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2luZGV4LnNnbWwKQEAgLTQwLDYgKzQwLDE5IEBACiA8QU5DSE9SIGlkPSJHc3RBc3NSZW5kZXItLWVtYmVkZGVkZm9udHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hc3NyZW5kZXIuaHRtbCNHc3RBc3NSZW5kZXItLWVtYmVkZGVkZm9udHMiPgogPEFOQ0hPUiBpZD0iR3N0QXNzUmVuZGVyLS1lbmFibGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hc3NyZW5kZXIuaHRtbCNHc3RBc3NSZW5kZXItLWVuYWJsZSI+CiA8QU5DSE9SIGlkPSJHc3RBc3NSZW5kZXItLXdhaXQtdGV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sI0dzdEFzc1JlbmRlci0td2FpdC10ZXh0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLnByb3BlcnRpZXMiPgorPEFOQ0hPUiBpZD0iR3N0QXVkaW9JbnRlcmxlYXZlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwjR3N0QXVkaW9JbnRlcmxlYXZlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5vdGhlciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5vYmplY3QtaGllcmFyY2h5Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5pbXBsZW1lbnRlZC1pbnRlcmZhY2VzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmltcGxlbWVudGVkLWludGVyZmFjZXMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5vdGhlcl9kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdzdEF1ZGlvSW50ZXJsZWF2ZS1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCNHc3RBdWRpb0ludGVybGVhdmUtc3RydWN0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLnByb3BlcnR5LWRldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0QXVkaW9JbnRlcmxlYXZlLS1jaGFubmVsLXBvc2l0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI0dzdEF1ZGlvSW50ZXJsZWF2ZS0tY2hhbm5lbC1wb3NpdGlvbnMiPgorPEFOQ0hPUiBpZD0iR3N0QXVkaW9JbnRlcmxlYXZlLS1jaGFubmVsLXBvc2l0aW9ucy1mcm9tLWlucHV0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwjR3N0QXVkaW9JbnRlcmxlYXZlLS1jaGFubmVsLXBvc2l0aW9ucy1mcm9tLWlucHV0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb21peGVyLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIucHJvcGVydGllcyI+CiA8QU5DSE9SIGlkPSJHc3RBdWRpb01peGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sI0dzdEF1ZGlvTWl4ZXIiPgpAQCAtODYsNiArOTksNyBAQAogPEFOQ0hPUiBpZD0iR3N0QnVsZ2Utc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2UuaHRtbCNHc3RCdWxnZS1zdHJ1Y3QiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2UucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1bGdlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2UucHJvcGVydHktZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RCdWxnZS0tem9vbSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1bGdlLmh0bWwjR3N0QnVsZ2UtLXpvb20iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2Uuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idWxnZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1bGdlLnNlZS1hbHNvIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1cm4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idXJuLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVybi5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVybi5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1cm4ucHJvcGVydGllcyI+CiA8QU5DSE9SIGlkPSJHc3RCdXJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVybi5odG1sI0dzdEJ1cm4iPgpAQCAtMTI2LDYgKzE0MCw3IEBACiA8QU5DSE9SIGlkPSJHc3RDaXJjbGUtLWFuZ2xlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2lyY2xlLmh0bWwjR3N0Q2lyY2xlLS1hbmdsZSI+CiA8QU5DSE9SIGlkPSJHc3RDaXJjbGUtLWhlaWdodCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNpcmNsZS5odG1sI0dzdENpcmNsZS0taGVpZ2h0Ij4KIDxBTkNIT1IgaWQ9IkdzdENpcmNsZS0tc3ByZWFkLWFuZ2xlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2lyY2xlLmh0bWwjR3N0Q2lyY2xlLS1zcHJlYWQtYW5nbGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2lyY2xlLnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2lyY2xlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2lyY2xlLnNlZS1hbHNvIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbG9yZWZmZWN0cyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbG9yZWZmZWN0cy5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbG9yZWZmZWN0cy5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29sb3JlZmZlY3RzLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29sb3JlZmZlY3RzLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iR3N0Q29sb3JFZmZlY3RzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29sb3JlZmZlY3RzLmh0bWwjR3N0Q29sb3JFZmZlY3RzIj4KQEAgLTE0OCw0OSArMTYzLDQyIEBACiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb21wb3NpdG9yLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb21wb3NpdG9yLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29tcG9zaXRvci5wcm9wZXJ0eS1kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdENvbXBvc2l0b3ItLWJhY2tncm91bmQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb21wb3NpdG9yLmh0bWwjR3N0Q29tcG9zaXRvci0tYmFja2dyb3VuZCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwiPgotPEFOQ0hPUiBpZD0iR3N0Q3ZEaWxhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5odG1sI0dzdEN2RGlsYXRlIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5vYmplY3QtaGllcmFyY2h5Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5kZXNjcmlwdGlvbiI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RDdkRpbGF0ZS1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5odG1sI0dzdEN2RGlsYXRlLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RDdkRpbGF0ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwjR3N0Q3ZEaWxhdGUiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuaHRtbCI+Ci08QU5DSE9SIGlkPSJHc3RDdkVyb2RlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5odG1sI0dzdEN2RXJvZGUiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLm90aGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLm9iamVjdC1oaWVyYXJjaHkiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmRlc2NyaXB0aW9uIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5mdW5jdGlvbnNfZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdEN2RXJvZGUtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5odG1sI0dzdEN2RXJvZGUtc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdEN2RXJvZGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmh0bWwjR3N0Q3ZFcm9kZSI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lmh0bWwiPgotPEFOQ0hPUiBpZD0iR3N0Q3ZFcXVhbGl6ZUhpc3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5odG1sI0dzdEN2RXF1YWxpemVIaXN0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5vYmplY3QtaGllcmFyY2h5Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0LmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5kZXNjcmlwdGlvbiI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3Qub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3Qub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RDdkVxdWFsaXplSGlzdC1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5odG1sI0dzdEN2RXF1YWxpemVIaXN0LXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RDdkVxdWFsaXplSGlzdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lmh0bWwjR3N0Q3ZFcXVhbGl6ZUhpc3QiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UucHJvcGVydGllcyI+Ci08QU5DSE9SIGlkPSJHc3RDdkxhcGxhY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNHc3RDdkxhcGxhY2UiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLm90aGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLm9iamVjdC1oaWVyYXJjaHkiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmRlc2NyaXB0aW9uIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5mdW5jdGlvbnNfZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2Uub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdEN2TGFwbGFjZS1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNHc3RDdkxhcGxhY2Utc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdEN2TGFwbGFjZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZSI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5wcm9wZXJ0eS1kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdEN2TGFwbGFjZS0tYXBlcnR1cmUtc2l6ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZS0tYXBlcnR1cmUtc2l6ZSI+Cis8QU5DSE9SIGlkPSJHc3RDdkxhcGxhY2UtLXNjYWxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlLS1zY2FsZSI+Cis8QU5DSE9SIGlkPSJHc3RDdkxhcGxhY2UtLXNoaWZ0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlLS1zaGlmdCI+Cis8QU5DSE9SIGlkPSJHc3RDdkxhcGxhY2UtLW1hc2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNHc3RDdkxhcGxhY2UtLW1hc2siPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGgiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLnByb3BlcnRpZXMiPgotPEFOQ0hPUiBpZD0iR3N0Q3ZTbW9vdGgiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI0dzdEN2U21vb3RoIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5vYmplY3QtaGllcmFyY2h5Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5kZXNjcmlwdGlvbiI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGgub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGgub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RDdlNtb290aC1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI0dzdEN2U21vb3RoLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RDdlNtb290aCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjR3N0Q3ZTbW9vdGgiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGgucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGgucHJvcGVydHktZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RDdlNtb290aC0tcGFyYW0xIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNHc3RDdlNtb290aC0tcGFyYW0xIj4KIDxBTkNIT1IgaWQ9IkdzdEN2U21vb3RoLS1wYXJhbTIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI0dzdEN2U21vb3RoLS1wYXJhbTIiPgpAQCAtMjAzLDE3ICsyMTEsMTYgQEAKIDxBTkNIT1IgaWQ9IkdzdEN2U21vb3RoLS13aWR0aCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjR3N0Q3ZTbW9vdGgtLXdpZHRoIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwucHJvcGVydGllcyI+Ci08QU5DSE9SIGlkPSJHc3RDdlNvYmVsIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLm90aGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLm9iamVjdC1oaWVyYXJjaHkiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmRlc2NyaXB0aW9uIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5mdW5jdGlvbnNfZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdEN2U29iZWwtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwtc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdEN2U29iZWwiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjR3N0Q3ZTb2JlbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5wcm9wZXJ0eS1kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdEN2U29iZWwtLWFwZXJ0dXJlLXNpemUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjR3N0Q3ZTb2JlbC0tYXBlcnR1cmUtc2l6ZSI+CiA8QU5DSE9SIGlkPSJHc3RDdlNvYmVsLS14LW9yZGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwtLXgtb3JkZXIiPgogPEFOQ0hPUiBpZD0iR3N0Q3ZTb2JlbC0teS1vcmRlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsLS15LW9yZGVyIj4KKzxBTkNIT1IgaWQ9IkdzdEN2U29iZWwtLW1hc2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjR3N0Q3ZTb2JlbC0tbWFzayI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kYXRhdXJpc3JjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGF0YXVyaXNyYy5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRhdGF1cmlzcmMucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRhdGF1cmlzcmMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kYXRhdXJpc3JjLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iR3N0RGF0YVVSSVNyYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRhdGF1cmlzcmMuaHRtbCNHc3REYXRhVVJJU3JjIj4KQEAgLTIzNyw2ICsyNDQsNyBAQAogPEFOQ0hPUiBpZD0iR3N0RGlmZnVzZS1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWZmdXNlLmh0bWwjR3N0RGlmZnVzZS1zdHJ1Y3QiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpZmZ1c2UucHJvcGVydHktZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3REaWZmdXNlLS1zY2FsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpZmZ1c2UuaHRtbCNHc3REaWZmdXNlLS1zY2FsZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWZmdXNlLnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpZmZ1c2Uuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlsYXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlsYXRlLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlsYXRlLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWxhdGUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWxhdGUucHJvcGVydGllcyI+CiA8QU5DSE9SIGlkPSJHc3REaWxhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWxhdGUuaHRtbCNHc3REaWxhdGUiPgpAQCAtNDIwLDYgKzQyOCw3IEBACiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1maXNoZXllLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmlzaGV5ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUuZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmlzaGV5ZS5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmlzaGV5ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUub3RoZXJfZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RGaXNoZXllLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUuaHRtbCNHc3RGaXNoZXllLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1maXNoZXllLnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmlzaGV5ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZnBzZGlzcGxheXNpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mcHNkaXNwbGF5c2luay5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZwc2Rpc3BsYXlzaW5rLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mcHNkaXNwbGF5c2luay5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZwc2Rpc3BsYXlzaW5rLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZnBzZGlzcGxheXNpbmsuc2lnbmFscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZwc2Rpc3BsYXlzaW5rLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZnBzZGlzcGxheXNpbmsuc2lnbmFscyI+CkBAIC00NzgsMTggKzQ4NywxMSBAQAogPEFOQ0hPUiBpZD0iR3N0S2FsZWlkb3Njb3BlLS1hbmdsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWthbGVpZG9zY29wZS5odG1sI0dzdEthbGVpZG9zY29wZS0tYW5nbGUiPgogPEFOQ0hPUiBpZD0iR3N0S2FsZWlkb3Njb3BlLS1hbmdsZTIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1rYWxlaWRvc2NvcGUuaHRtbCNHc3RLYWxlaWRvc2NvcGUtLWFuZ2xlMiI+CiA8QU5DSE9SIGlkPSJHc3RLYWxlaWRvc2NvcGUtLXNpZGVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLmh0bWwjR3N0S2FsZWlkb3Njb3BlLS1zaWRlcyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1rYWxlaWRvc2NvcGUuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1rYWxlaWRvc2NvcGUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1rYWxlaWRvc2NvcGUuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIucHJvcGVydGllcyI+Ci08QU5DSE9SIGlkPSJHc3RMaXZlQWRkZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuaHRtbCNHc3RMaXZlQWRkZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLm90aGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLm9iamVjdC1oaWVyYXJjaHkiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmRlc2NyaXB0aW9uIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5mdW5jdGlvbnNfZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdExpdmVBZGRlci1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuaHRtbCNHc3RMaXZlQWRkZXItc3RydWN0Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLnByb3BlcnR5LWRldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0TGl2ZUFkZGVyLS1sYXRlbmN5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwjR3N0TGl2ZUFkZGVyLS1sYXRlbmN5Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5zZWUtYWxzbyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9IkdzdE1hcmJsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sI0dzdE1hcmJsZSI+CkBAIC01MDQsNiArNTA2LDcgQEAKIDxBTkNIT1IgaWQ9IkdzdE1hcmJsZS0tdHVyYnVsZW5jZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sI0dzdE1hcmJsZS0tdHVyYnVsZW5jZSI+CiA8QU5DSE9SIGlkPSJHc3RNYXJibGUtLXgtc2NhbGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuaHRtbCNHc3RNYXJibGUtLXgtc2NhbGUiPgogPEFOQ0hPUiBpZD0iR3N0TWFyYmxlLS15LXNjYWxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlLmh0bWwjR3N0TWFyYmxlLS15LXNjYWxlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5zZWUtYWxzbyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1lbmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1lbmMuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1lbmMucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWVuYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWVuYy5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9IkdzdE1pbUVuYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWVuYy5odG1sI0dzdE1pbUVuYyI+CkBAIC01MzQsNiArNTM3LDcgQEAKIDxBTkNIT1IgaWQ9IkdzdE1pcnJvci1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taXJyb3IuaHRtbCNHc3RNaXJyb3Itc3RydWN0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWlycm9yLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWlycm9yLnByb3BlcnR5LWRldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0TWlycm9yLS1tb2RlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWlycm9yLmh0bWwjR3N0TWlycm9yLS1tb2RlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5zZWUtYWxzbyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tb2RwbHVnIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbW9kcGx1Zy5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1vZHBsdWcucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1vZHBsdWcuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tb2RwbHVnLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iR3N0TW9kUGx1ZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1vZHBsdWcuaHRtbCNHc3RNb2RQbHVnIj4KQEAgLTY0MSwxNCArNjQ1LDYgQEAKIDxBTkNIT1IgaWQ9IkdzdE1wbGV4LS1zZWN0b3Itc2l6ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wbGV4Lmh0bWwjR3N0TXBsZXgtLXNlY3Rvci1zaXplIj4KIDxBTkNIT1IgaWQ9IkdzdE1wbGV4LS1zeXN0ZW0taGVhZGVycyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wbGV4Lmh0bWwjR3N0TXBsZXgtLXN5c3RlbS1oZWFkZXJzIj4KIDxBTkNIT1IgaWQ9IkdzdE1wbGV4LS12YnIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sI0dzdE1wbGV4LS12YnIiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sIj4KLTxBTkNIT1IgaWQ9IkdzdE1wZzEyM0F1ZGlvRGVjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuaHRtbCNHc3RNcGcxMjNBdWRpb0RlYyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMub3RoZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMub2JqZWN0LWhpZXJhcmNoeSI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuZGVzY3JpcHRpb24iPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmZ1bmN0aW9uc19kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLm90aGVyX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0TXBnMTIzQXVkaW9EZWMtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuaHRtbCNHc3RNcGcxMjNBdWRpb0RlYy1zdHJ1Y3QiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLm90aGVyIj4KQEAgLTY5OSw4NSArNjk1LDYgQEAKIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzaW5rLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5kZXNjcmlwdGlvbiI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzaW5rLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLnByb3BlcnRpZXMiPgotPEFOQ0hPUiBpZD0iR3N0T3BlbmFsU3JjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sI0dzdE9wZW5hbFNyYyI+Ci08QU5DSE9SIGlkPSJHc3RPcGVuY3ZUZXh0T3ZlcmxheSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRGVjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sI0dzdE9wdXNEZWMiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLm90aGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLm9iamVjdC1oaWVyYXJjaHkiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmRlc2NyaXB0aW9uIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5mdW5jdGlvbnNfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNEZWMtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sI0dzdE9wdXNEZWMtc3RydWN0Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLnByb3BlcnR5LWRldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0RlYy0tYXBwbHktZ2FpbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNHc3RPcHVzRGVjLS1hcHBseS1nYWluIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNEZWMtLXVzZS1pbmJhbmQtZmVjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sI0dzdE9wdXNEZWMtLXVzZS1pbmJhbmQtZmVjIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMucHJvcGVydGllcyI+Ci08QU5DSE9SIGlkPSJHc3RPcGVuYWxTcmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3BlbmFsU3JjIj4KLTxBTkNIT1IgaWQ9IkdzdE9wZW5jdlRleHRPdmVybGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wZW5jdlRleHRPdmVybGF5Ij4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNEZWMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0RlYyI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRW5jIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLm90aGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLm9iamVjdC1oaWVyYXJjaHkiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmRlc2NyaXB0aW9uIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5mdW5jdGlvbnNfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNFbmMtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtc3RydWN0Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLnByb3BlcnR5LWRldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYy0tYXVkaW8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tYXVkaW8iPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYy0tYmFuZHdpZHRoIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWJhbmR3aWR0aCI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRW5jLS1iaXRyYXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWJpdHJhdGUiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYy0tY2JyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWNiciI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRW5jLS1jb21wbGV4aXR5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWNvbXBsZXhpdHkiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYy0tY29uc3RyYWluZWQtdmJyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWNvbnN0cmFpbmVkLXZiciI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRW5jLS1kdHgiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tZHR4Ij4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNFbmMtLWZyYW1lLXNpemUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tZnJhbWUtc2l6ZSI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRW5jLS1pbmJhbmQtZmVjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWluYmFuZC1mZWMiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYy0tbWF4LXBheWxvYWQtc2l6ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1tYXgtcGF5bG9hZC1zaXplIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNFbmMtLXBhY2tldC1sb3NzLXBlcmNlbnRhZ2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tcGFja2V0LWxvc3MtcGVyY2VudGFnZSI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRW5jLS1hdWRpby10eXBlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWF1ZGlvLXR5cGUiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYy0tYml0cmF0ZS10eXBlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWJpdHJhdGUtdHlwZSI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCI+Ci08QU5DSE9SIGlkPSJHc3RPcGVuYWxTcmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCNHc3RPcGVuYWxTcmMiPgotPEFOQ0hPUiBpZD0iR3N0T3BlbmN2VGV4dE92ZXJsYXkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRGVjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwjR3N0T3B1c0RlYyI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRW5jIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwjR3N0T3B1c0VuYyI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzUGFyc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCNHc3RPcHVzUGFyc2UiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLm90aGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLm9iamVjdC1oaWVyYXJjaHkiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmRlc2NyaXB0aW9uIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5mdW5jdGlvbnNfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2Uub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNQYXJzZS1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCNHc3RPcHVzUGFyc2Utc3RydWN0Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwiPgotPEFOQ0hPUiBpZD0iR3N0T3BlbmFsU3JjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sI0dzdE9wZW5hbFNyYyI+Ci08QU5DSE9SIGlkPSJHc3RPcGVuY3ZUZXh0T3ZlcmxheSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRGVjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sI0dzdE9wdXNEZWMiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNHc3RPcHVzRW5jIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNQYXJzZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNHc3RPcHVzUGFyc2UiPgotPEFOQ0hPUiBpZD0iR3N0UlRQT3B1c0RlcGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sI0dzdFJUUE9wdXNEZXBheSI+Ci08QU5DSE9SIGlkPSJHc3RSdHBPUFVTUGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sI0dzdFJ0cE9QVVNQYXkiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lm90aGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lm9iamVjdC1oaWVyYXJjaHkiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5LmRlc2NyaXB0aW9uIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5mdW5jdGlvbnNfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdFJ0cE9QVVNQYXktc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sI0dzdFJ0cE9QVVNQYXktc3RydWN0Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sIj4KLTxBTkNIT1IgaWQ9IkdzdE9wZW5hbFNyYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sI0dzdE9wZW5hbFNyYyI+Ci08QU5DSE9SIGlkPSJHc3RPcGVuY3ZUZXh0T3ZlcmxheSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sI0dzdE9wZW5jdlRleHRPdmVybGF5Ij4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNEZWMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCNHc3RPcHVzRGVjIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNFbmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCNHc3RPcHVzRW5jIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNQYXJzZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sI0dzdE9wdXNQYXJzZSI+Ci08QU5DSE9SIGlkPSJHc3RSVFBPcHVzRGVwYXkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCNHc3RSVFBPcHVzRGVwYXkiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lm90aGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lm9iamVjdC1oaWVyYXJjaHkiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5LmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5LmRlc2NyaXB0aW9uIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5mdW5jdGlvbnNfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdFJUUE9wdXNEZXBheS1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCNHc3RSVFBPcHVzRGVwYXktc3RydWN0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iR3N0UGNhcFBhcnNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwjR3N0UGNhcFBhcnNlIj4KQEAgLTgwNSw2ICs3MjIsNyBAQAogPEFOQ0hPUiBpZD0iR3N0UGluY2gtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGluY2guaHRtbCNHc3RQaW5jaC1zdHJ1Y3QiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGluY2gucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGluY2gucHJvcGVydHktZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RQaW5jaC0taW50ZW5zaXR5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGluY2guaHRtbCNHc3RQaW5jaC0taW50ZW5zaXR5Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGluY2guaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1waW5jaC5zZWUtYWxzbyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1weXJhbWlkc2VnbWVudCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXB5cmFtaWRzZWdtZW50Lmh0bWwiPgogPEFOQ0hPUiBpZD0iR3N0UGluY2giIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1weXJhbWlkc2VnbWVudC5odG1sI0dzdFBpbmNoIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXB5cmFtaWRzZWdtZW50LmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcHlyYW1pZHNlZ21lbnQuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1weXJhbWlkc2VnbWVudC5kZXNjcmlwdGlvbiI+CkBAIC05NjksNiArODg3LDcgQEAKIDxBTkNIT1IgaWQ9IkdzdFNwaGVyZS1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGhlcmUuaHRtbCNHc3RTcGhlcmUtc3RydWN0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BoZXJlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BoZXJlLnByb3BlcnR5LWRldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0U3BoZXJlLS1yZWZyYWN0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BoZXJlLmh0bWwjR3N0U3BoZXJlLS1yZWZyYWN0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5zZWUtYWxzbyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9IkdzdFNxdWFyZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5odG1sI0dzdFNxdWFyZSI+CkBAIC05ODIsNiArOTAxLDcgQEAKIDxBTkNIT1IgaWQ9IkdzdFNxdWFyZS0taGVpZ2h0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3F1YXJlLmh0bWwjR3N0U3F1YXJlLS1oZWlnaHQiPgogPEFOQ0hPUiBpZD0iR3N0U3F1YXJlLS13aWR0aCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5odG1sI0dzdFNxdWFyZS0td2lkdGgiPgogPEFOQ0hPUiBpZD0iR3N0U3F1YXJlLS16b29tIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3F1YXJlLmh0bWwjR3N0U3F1YXJlLS16b29tIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5zZWUtYWxzbyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2gucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2guaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iR3N0U3RyZXRjaCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2guaHRtbCNHc3RTdHJldGNoIj4KQEAgLTk5MywxNiArOTEzLDE1IEBACiA8QU5DSE9SIGlkPSJHc3RTdHJldGNoLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2guaHRtbCNHc3RTdHJldGNoLXN0cnVjdCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5wcm9wZXJ0eS1kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdFN0cmV0Y2gtLWludGVuc2l0eSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2guaHRtbCNHc3RTdHJldGNoLS1pbnRlbnNpdHkiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2guaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLnNlZS1hbHNvIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2giIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gucHJvcGVydGllcyI+CiA8QU5DSE9SIGlkPSJHc3RTeW5hZVNjb3BlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI0dzdFN5bmFlU2NvcGUiPgotPEFOQ0hPUiBpZD0iR3N0VGVtcGxhdGVNYXRjaCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNHc3RUZW1wbGF0ZU1hdGNoIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5vYmplY3QtaGllcmFyY2h5Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5kZXNjcmlwdGlvbiI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RUZW1wbGF0ZU1hdGNoLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNHc3RUZW1wbGF0ZU1hdGNoLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RUZW1wbGF0ZU1hdGNoIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI0dzdFRlbXBsYXRlTWF0Y2giPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gucHJvcGVydHktZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RUZW1wbGF0ZU1hdGNoLS1kaXNwbGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI0dzdFRlbXBsYXRlTWF0Y2gtLWRpc3BsYXkiPgogPEFOQ0hPUiBpZD0iR3N0VGVtcGxhdGVNYXRjaC0tbWV0aG9kIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI0dzdFRlbXBsYXRlTWF0Y2gtLW1ldGhvZCI+CkBAIC0xMDEwLDEzICs5MjksMTEgQEAKIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9IkdzdE9wZW5hbFNyYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjR3N0T3BlbmFsU3JjIj4KLTxBTkNIT1IgaWQ9IkdzdE9wZW5jdlRleHRPdmVybGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkub3RoZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkub2JqZWN0LWhpZXJhcmNoeSI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuZGVzY3JpcHRpb24iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5LmZ1bmN0aW9uc19kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lm90aGVyX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0T3BlbmN2VGV4dE92ZXJsYXktc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheS1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0T3BlbmN2VGV4dE92ZXJsYXkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI0dzdE9wZW5jdlRleHRPdmVybGF5Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5LnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5LnByb3BlcnR5LWRldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0T3BlbmN2VGV4dE92ZXJsYXktLWNvbG9yQiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjR3N0T3BlbmN2VGV4dE92ZXJsYXktLWNvbG9yQiI+CiA8QU5DSE9SIGlkPSJHc3RPcGVuY3ZUZXh0T3ZlcmxheS0tY29sb3JHIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheS0tY29sb3JHIj4KQEAgLTEwMzUsNiArOTUyLDcgQEAKIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5mdW5jdGlvbnNfZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5vdGhlcl9kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdFR1bm5lbC1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuaHRtbCNHc3RUdW5uZWwtc3RydWN0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5zZWUtYWxzbyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10d2lybCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwucHJvcGVydGllcyI+CiA8QU5DSE9SIGlkPSJHc3RUd2lybCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLmh0bWwjR3N0VHdpcmwiPgpAQCAtMTA0Niw2ICs5NjQsNyBAQAogPEFOQ0hPUiBpZD0iR3N0VHdpcmwtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwuaHRtbCNHc3RUd2lybC1zdHJ1Y3QiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwucHJvcGVydHktZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RUd2lybC0tYW5nbGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10d2lybC5odG1sI0dzdFR3aXJsLS1hbmdsZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10d2lybC5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9IkdzdFZpZGVvUGFyc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjR3N0VmlkZW9QYXJzZSI+CkBAIC0xMDcwLDYgKzk4OSw5IEBACiA8QU5DSE9SIGlkPSJHc3RWaWRlb1BhcnNlLS13aWR0aCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbCNHc3RWaWRlb1BhcnNlLS13aWR0aCI+CiA8QU5DSE9SIGlkPSJHc3RWaWRlb1BhcnNlLS1pbnRlcmxhY2VkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI0dzdFZpZGVvUGFyc2UtLWludGVybGFjZWQiPgogPEFOQ0hPUiBpZD0iR3N0VmlkZW9QYXJzZS0tdG9wLWZpZWxkLWZpcnN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI0dzdFZpZGVvUGFyc2UtLXRvcC1maWVsZC1maXJzdCI+Cis8QU5DSE9SIGlkPSJHc3RWaWRlb1BhcnNlLS1mcmFtZXNpemUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjR3N0VmlkZW9QYXJzZS0tZnJhbWVzaXplIj4KKzxBTkNIT1IgaWQ9IkdzdFZpZGVvUGFyc2UtLW9mZnNldHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjR3N0VmlkZW9QYXJzZS0tb2Zmc2V0cyI+Cis8QU5DSE9SIGlkPSJHc3RWaWRlb1BhcnNlLS1zdHJpZGVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI0dzdFZpZGVvUGFyc2UtLXN0cmlkZXMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iR3N0V2F0ZXJSaXBwbGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5odG1sI0dzdFdhdGVyUmlwcGxlIj4KQEAgLTEwODMsNiArMTAwNSw3IEBACiA8QU5DSE9SIGlkPSJHc3RXYXRlclJpcHBsZS0tYW1wbGl0dWRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuaHRtbCNHc3RXYXRlclJpcHBsZS0tYW1wbGl0dWRlIj4KIDxBTkNIT1IgaWQ9IkdzdFdhdGVyUmlwcGxlLS1waGFzZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLmh0bWwjR3N0V2F0ZXJSaXBwbGUtLXBoYXNlIj4KIDxBTkNIT1IgaWQ9IkdzdFdhdGVyUmlwcGxlLS13YXZlbGVuZ3RoIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuaHRtbCNHc3RXYXRlclJpcHBsZS0td2F2ZWxlbmd0aCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtemJhciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXpiYXIuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy16YmFyLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy16YmFyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtemJhci5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9IkdzdFpCYXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy16YmFyLmh0bWwjR3N0WkJhciI+CkBAIC0xMTcwLDggKzEwOTMsNiBAQAogPEFOQ0hPUiBpZD0icGx1Z2luLWdzbSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nc20uaHRtbCNwbHVnaW4tZ3NtIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1qcGVnZm9ybWF0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWpwZWdmb3JtYXQuaHRtbCI+CiA8QU5DSE9SIGlkPSJwbHVnaW4tanBlZ2Zvcm1hdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1qcGVnZm9ybWF0Lmh0bWwjcGx1Z2luLWpwZWdmb3JtYXQiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWxpdmVhZGRlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIuaHRtbCI+Ci08QU5DSE9SIGlkPSJwbHVnaW4tbGl2ZWFkZGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWxpdmVhZGRlci5odG1sI3BsdWdpbi1saXZlYWRkZXIiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljLmh0bWwiPgogPEFOQ0hPUiBpZD0icGx1Z2luLW1pbWljIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljLmh0bWwjcGx1Z2luLW1pbWljIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tbXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbW1zLmh0bWwiPgpAQCAtMTE5NCw4ICsxMTE1LDYgQEAKIDxBTkNIT1IgaWQ9InBsdWdpbi1vcGVuYWwiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmFsLmh0bWwjcGx1Z2luLW9wZW5hbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmN2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5jdi5odG1sIj4KIDxBTkNIT1IgaWQ9InBsdWdpbi1vcGVuY3YiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmN2Lmh0bWwjcGx1Z2luLW9wZW5jdiI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcHVzLmh0bWwiPgotPEFOQ0hPUiBpZD0icGx1Z2luLW9wdXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sI3BsdWdpbi1vcHVzIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1wY2FwcGFyc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcGNhcHBhcnNlLmh0bWwiPgogPEFOQ0hPUiBpZD0icGx1Z2luLXBjYXBwYXJzZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1wY2FwcGFyc2UuaHRtbCNwbHVnaW4tcGNhcHBhcnNlIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1yYXdwYXJzZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1yYXdwYXJzZS5odG1sIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hY2N1cmlwLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hY2N1cmlwLnhtbAppbmRleCA5ZjU1N2I2Li40ZDFjN2U1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWNjdXJpcC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFjY3VyaXAueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Q29tcHV0ZXMgYW4gQWNjdXJhdGVSaXAgQ1JDPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9hY2N1cmlwLy5saWJzL2xpYmdzdGFjY3VyaXAuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0YWNjdXJpcC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWRwY21kZWMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFkcGNtZGVjLnhtbAppbmRleCA1MTM4MjJjLi5hMzY3MTNjIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWRwY21kZWMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hZHBjbWRlYy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5BRFBDTSBkZWNvZGVyPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9hZHBjbWRlYy8ubGlicy9saWJnc3RhZHBjbWRlYy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RhZHBjbWRlYy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWRwY21lbmMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFkcGNtZW5jLnhtbAppbmRleCAxMGE5YmE4Li5iMzg0YThlIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWRwY21lbmMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hZHBjbWVuYy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5BRFBDTSBlbmNvZGVyPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9hZHBjbWVuYy8ubGlicy9saWJnc3RhZHBjbWVuYy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RhZHBjbWVuYy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWlmZi54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWlmZi54bWwKaW5kZXggNDNkOWZhYi4uMmRmMjc4OCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFpZmYueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1haWZmLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkNyZWF0ZSBhbmQgcGFyc2UgQXVkaW8gSW50ZXJjaGFuZ2UgRmlsZSBGb3JtYXQgKEFJRkYpIGZpbGVzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9haWZmLy5saWJzL2xpYmdzdGFpZmYuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0YWlmZi5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYW5kcm9pZGNhbWVyYS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYW5kcm9pZGNhbWVyYS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk0MTdjYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hbmRyb2lkY2FtZXJhLnhtbApAQCAtMCwwICsxLDI4IEBACis8cGx1Z2luPgorICA8bmFtZT5hbmRyb2lkY2FtZXJhPC9uYW1lPgorICA8ZGVzY3JpcHRpb24+Q2FwdHVyZSBmcm9tIEFuZHJvaWQgY2FtZXJhczwvZGVzY3JpcHRpb24+CisgIDxmaWxlbmFtZT4uLi8uLi9zeXMvYW5kcm9pZGNhbWVyYS8ubGlicy9saWJnc3RhbmRyb2lkY2FtZXJhLnNvPC9maWxlbmFtZT4KKyAgPGJhc2VuYW1lPmxpYmdzdGFuZHJvaWRjYW1lcmEuc288L2Jhc2VuYW1lPgorICA8dmVyc2lvbj4wLjEwLjIyLjE8L3ZlcnNpb24+CisgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CisgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CisgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgZ2l0PC9wYWNrYWdlPgorICA8b3JpZ2luPlVua25vd24gcGFja2FnZSBvcmlnaW48L29yaWdpbj4KKyAgPGVsZW1lbnRzPgorICAgIDxlbGVtZW50PgorICAgICAgPG5hbWU+YWhjc3JjPC9uYW1lPgorICAgICAgPGxvbmduYW1lPkFuZHJvaWQgQ2FtZXJhIFNvdXJjZTwvbG9uZ25hbWU+CisgICAgICA8Y2xhc3M+U291cmNlL1ZpZGVvPC9jbGFzcz4KKyAgICAgIDxkZXNjcmlwdGlvbj5SZWFkcyBmcmFtZXMgZnJvbSBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSBjbGFzcyBpbnRvIGJ1ZmZlcnM8L2Rlc2NyaXB0aW9uPgorICAgICAgPGF1dGhvcj5Zb3VuZXNzIEFsYW91aSAmbHQ7eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrJmd0OzwvYXV0aG9yPgorICAgICAgPHBhZHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3LXl1diwgZm9ybWF0PShmb3VyY2MpIHsgWVYxMiAsIFlVWTIgLCBOVjIxICwgTlYxNiB9LCB3aWR0aD0oaW50KSBbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpIFsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKSBbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LXJnYiwgYnBwPShpbnQpMTYsIGRlcHRoPShpbnQpMTYsIHJlZF9tYXNrPShpbnQpNjM0ODgsIGdyZWVuX21hc2s9KGludCkyMDE2LCBibHVlX21hc2s9KGludCkzMSwgd2lkdGg9KGludCkgWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KSBbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbikgWyAwLzEsIDIxNDc0ODM2NDcvMSBdIDwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgPC9wYWRzPgorICAgIDwvZWxlbWVudD4KKyAgPC9lbGVtZW50cz4KKzwvcGx1Z2luPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzZm11eC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXNmbXV4LnhtbAppbmRleCBhNTE4ZTQ1Li5lN2ZmYjg2IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXNmbXV4LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXNmbXV4LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkFTRiBNdXhlciBQbHVnaW48L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2FzZm11eC8ubGlicy9saWJnc3Rhc2ZtdXguc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0YXNmbXV4LnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hc3NyZW5kZXIueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzc3JlbmRlci54bWwKaW5kZXggNjMzNjE1Yi4uODM2ZjUwZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzc3JlbmRlci54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzc3JlbmRlci54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5BU1MvU1NBIHN1YnRpdGxlIHJlbmRlcmVyPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9hc3NyZW5kZXIvLmxpYnMvbGliZ3N0YXNzcmVuZGVyLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGFzc3JlbmRlci5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW9meGJhZC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW9meGJhZC54bWwKaW5kZXggODJmNmUyNC4uM2YxMzQ4NCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1ZGlvZnhiYWQueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdWRpb2Z4YmFkLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkF1ZGlvIGZpbHRlcnMgZnJvbSBnc3QtcGx1Z2lucy1iYWQ8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2F1ZGlvZnhiYWQvLmxpYnMvbGliZ3N0YXVkaW9meGJhZC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RhdWRpb2Z4YmFkLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWluczwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdWRpb21peGVyLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdWRpb21peGVyLnhtbAppbmRleCBhNDVkYmJjLi4yYzc0NDI5IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW9taXhlci54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1ZGlvbWl4ZXIueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+TWl4ZXMgbXVsdGlwbGUgYXVkaW8gc3RyZWFtczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvYXVkaW9taXhlci8ubGlicy9saWJnc3RhdWRpb21peGVyLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGF1ZGlvbWl4ZXIuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpAQCAtNTEsNSArNTEsMjYgQEAKICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KKyAgICA8ZWxlbWVudD4KKyAgICAgIDxuYW1lPmxpdmVhZGRlcjwvbmFtZT4KKyAgICAgIDxsb25nbmFtZT5BdWRpb01peGVyPC9sb25nbmFtZT4KKyAgICAgIDxjbGFzcz5HZW5lcmljL0F1ZGlvPC9jbGFzcz4KKyAgICAgIDxkZXNjcmlwdGlvbj5NaXhlcyBtdWx0aXBsZSBhdWRpbyBzdHJlYW1zPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxhdXRob3I+U2ViYXN0aWFuIERyw7ZnZSAmbHQ7c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbSZndDs8L2F1dGhvcj4KKyAgICAgIDxwYWRzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zaW5rXyV1PC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5yZXF1ZXN0PC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBTMzJMRSwgVTMyTEUsIFMxNkxFLCBVMTZMRSwgUzgsIFU4LCBGMzJMRSwgRjY0TEUgfSwgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBsYXlvdXQ9KHN0cmluZyl7IGludGVybGVhdmVkLCBub24taW50ZXJsZWF2ZWQgfTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBTMzJMRSwgVTMyTEUsIFMxNkxFLCBVMTZMRSwgUzgsIFU4LCBGMzJMRSwgRjY0TEUgfSwgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBsYXlvdXQ9KHN0cmluZyl7IGludGVybGVhdmVkLCBub24taW50ZXJsZWF2ZWQgfTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgPC9wYWRzPgorICAgIDwvZWxlbWVudD4KICAgPC9lbGVtZW50cz4KIDwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdWRpb3Zpc3VhbGl6ZXJzLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdWRpb3Zpc3VhbGl6ZXJzLnhtbAppbmRleCA4MmEwNDBjLi42YTE4NzlkIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW92aXN1YWxpemVycy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1ZGlvdmlzdWFsaXplcnMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Q3JlYXRlcyB2aWRlbyB2aXN1YWxpemF0aW9ucyBvZiBhdWRpbyBpbnB1dDwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvYXVkaW92aXN1YWxpemVycy8ubGlicy9saWJnc3RhdWRpb3Zpc3VhbGl6ZXJzLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGF1ZGlvdmlzdWFsaXplcnMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1dG9jb252ZXJ0LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdXRvY29udmVydC54bWwKaW5kZXggZDAxNDc2ZC4uYWZmMjYzMyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1dG9jb252ZXJ0LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXV0b2NvbnZlcnQueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+U2VsZWN0cyBjb252ZXJ0b3IgZWxlbWVudCBiYXNlZCBvbiBjYXBzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9hdXRvY29udmVydC8ubGlicy9saWJnc3RhdXRvY29udmVydC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RhdXRvY29udmVydC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYmF5ZXIueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJheWVyLnhtbAppbmRleCAyZDhkYmZmLi5mYTQ5ZTMxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYmF5ZXIueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1iYXllci54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5FbGVtZW50cyB0byBjb252ZXJ0IEJheWVyIGltYWdlczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvYmF5ZXIvLmxpYnMvbGliZ3N0YmF5ZXIuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0YmF5ZXIuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJsdWV6LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1ibHVlei54bWwKaW5kZXggNjJkZmUwMS4uZDhhMTcwOSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJsdWV6LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYmx1ZXoueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Qmx1ZXotYmFzZWQgYmx1ZXRvb3RoIHN1cHBvcnQ8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vc3lzL2JsdWV6Ly5saWJzL2xpYmdzdGJsdWV6LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGJsdWV6LnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1iejIueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJ6Mi54bWwKaW5kZXggMDM0N2EzNC4uYzA3MWJmOCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJ6Mi54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJ6Mi54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5Db21wcmVzcyBvciBkZWNvbXByZXNzIHN0cmVhbXM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2J6Mi8ubGlicy9saWJnc3RiejIuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0YnoyLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jYW1lcmFiaW4ueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNhbWVyYWJpbi54bWwKaW5kZXggYjlkNWViOC4uOWU5YmI0YSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNhbWVyYWJpbi54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNhbWVyYWJpbi54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5UYWtlIGltYWdlIHNuYXBzaG90cyBhbmQgcmVjb3JkIG1vdmllcyBmcm9tIGNhbWVyYTwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvY2FtZXJhYmluMi8ubGlicy9saWJnc3RjYW1lcmFiaW4yLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGNhbWVyYWJpbjIuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNocm9tYXByaW50LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jaHJvbWFwcmludC54bWwKaW5kZXggNjI0OWVjYy4uZTIzMmVmZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNocm9tYXByaW50LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY2hyb21hcHJpbnQueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Q2FsY3VsYXRlIENocm9tYXByaW50IGZpbmdlcnByaW50IGZyb20gYXVkaW8gZmlsZXM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2Nocm9tYXByaW50Ly5saWJzL2xpYmdzdGNocm9tYXByaW50LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGNocm9tYXByaW50LnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb2xvcmVmZmVjdHMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvbG9yZWZmZWN0cy54bWwKaW5kZXggMjBiNWFmNC4uNjMxYmViNyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvbG9yZWZmZWN0cy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvbG9yZWZmZWN0cy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5Db2xvciBMb29rLXVwIFRhYmxlIGZpbHRlcnM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2NvbG9yZWZmZWN0cy8ubGlicy9saWJnc3Rjb2xvcmVmZmVjdHMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0Y29sb3JlZmZlY3RzLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb21wb3NpdG9yLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb21wb3NpdG9yLnhtbAppbmRleCAwNjQ4ZWRjLi5iNmM0NzQ2IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29tcG9zaXRvci54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvbXBvc2l0b3IueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Q29tcG9zaXRvcjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvY29tcG9zaXRvci8ubGlicy9saWJnc3Rjb21wb3NpdG9yLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGNvbXBvc2l0b3Iuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWN1cmwueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWN1cmwueG1sCmluZGV4IDhmZDcwNzIuLjMxMjI3MDIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jdXJsLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY3VybC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5saWJjdXJsLWJhc2VkIGVsZW1lbnRzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9jdXJsLy5saWJzL2xpYmdzdGN1cmwuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0Y3VybC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGFzaGRlbXV4LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kYXNoZGVtdXgueG1sCmluZGV4IDNiMzkzNDAuLmZlOTIxMTQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kYXNoZGVtdXgueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kYXNoZGVtdXgueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+REFTSCBkZW11eGVyIHBsdWdpbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvZGFzaC8ubGlicy9saWJnc3RkYXNoZGVtdXguc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZGFzaGRlbXV4LnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWluczwvcGFja2FnZT4KQEAgLTMxLDYgKzMxLDEyIEBACiAgICAgICAgICAgPGRldGFpbHM+QU5ZPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnN1YnRpdGxlXyUwMnU8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+c29tZXRpbWVzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5BTlk8L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+dmlkZW9fJTAydTwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5zb21ldGltZXM8L3ByZXNlbmNlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRhdGF1cmlzcmMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRhdGF1cmlzcmMueG1sCmluZGV4IDMwZjBmZjkuLjViMzIzM2UgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kYXRhdXJpc3JjLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGF0YXVyaXNyYy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5kYXRhOiBVUkkgc291cmNlPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9kYXRhdXJpc3JjLy5saWJzL2xpYmdzdGRhdGF1cmlzcmMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZGF0YXVyaXNyYy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGVidWd1dGlsc2JhZC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGVidWd1dGlsc2JhZC54bWwKaW5kZXggMDBiMzVlZC4uNTU0NjI0OCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRlYnVndXRpbHNiYWQueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kZWJ1Z3V0aWxzYmFkLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkNvbGxlY3Rpb24gb2YgZWxlbWVudHMgdGhhdCBtYXkgb3IgbWF5IG5vdCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZzwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvZGVidWd1dGlscy8ubGlicy9saWJnc3RkZWJ1Z3V0aWxzYmFkLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGRlYnVndXRpbHNiYWQuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRlY2tsaW5rLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kZWNrbGluay54bWwKaW5kZXggM2ZmYmIyZS4uNjliZWZhNiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRlY2tsaW5rLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGVja2xpbmsueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+QmxhY2ttYWdpYyBEZWNrbGluayBwbHVnaW48L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vc3lzL2RlY2tsaW5rLy5saWJzL2xpYmdzdGRlY2tsaW5rLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGRlY2tsaW5rLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWluczwvcGFja2FnZT4KQEAgLTUwLDcgKzUwLDcgQEAKICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDYwMSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk0ODYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEwLzExLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NjAxLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTU3NiwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTIvMTEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDYwMSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk1NzYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEyLzExLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NjAxLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTI4MCwgaGVpZ2h0PShpbnQpNzIwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTEyODAsIGhlaWdodD0oaW50KTcyMCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkxMjgwLCBoZWlnaHQ9KGludCk3MjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMjA0OCwgaGVpZ2h0PShpbnQpMTU1NiwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkyMDQ4LCBoZWlnaHQ9KGludCkxNTU2LCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEwLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk0ODYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTAvMTEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NjAxLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNTc2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEyLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDYwMSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk1NzYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTIvMTEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEwLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk1NzYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTIvMTEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NjAxLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTU3NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMi8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTI4MCwgaGVpZ2h0PShpbnQpNzIwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTEyODAsIGhlaWdodD0oaW50KTcyMCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxMjgwLCBoZWlnaHQ9KGludCk3MjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTI4MCwgaGVpZ2h0PShpbnQpNzIwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTEyODAsIGhlaWdodD0oaW50KTcyMCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxMjgwLCBoZWlnaHQ9KGludCk3MjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMjA0OCwgaGVpZ2h0PShpbnQpMTU1NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkyMDQ4LCBoZWlnaHQ9KGludCkxNTU2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMjA0OCwgaGVpZ2h0PShpbnQpMTU1NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkyMDQ4LCBoZWlnaHQ9KGludCkxNTU2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CkBAIC02NSw3ICs2NSw3IEBACiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk0ODYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMzAwMDAvMTAwMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDYwMSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk0ODYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjQwMDAvMTAwMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDYwMSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk1NzYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjUvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMi8xMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDYwMSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk0ODYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMzAwMDAvMTAwMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDYwMSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk1NzYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjUvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMi8xMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDYwMSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbikyNDAwMC8xMDAxLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbikyNC8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbikzMC8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbikzMC8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbik1MC8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbik2MDAwMC8xMDAxLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbik2MC8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTI4MCwgaGVpZ2h0PShpbnQpNzIwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTUwLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkxMjgwLCBoZWlnaHQ9KGludCk3MjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNjAwMDAvMTAwMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTEyODAsIGhlaWdodD0oaW50KTcyMCwgZnJhbWVyYXRlPShmcmFjdGlvbik2MC8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMjA0OCwgaGVpZ2h0PShpbnQpMTU1NiwgZnJhbWVyYXRlPShmcmFjdGlvbikyNDAwMC8xMDAxLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMjA0OCwgaGVpZ2h0PShpbnQpMTU1NiwgZnJhbWVyYXRlPShmcmFjdGlvbikyNC8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMjA0OCwgaGVpZ2h0PShpbnQpMTU1NiwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbikyNDAwMC8xMDAxLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjQvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMzAvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTUwLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbik2MDAwMC8xMDAxLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNjAvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEwLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEwLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEwLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0MDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEwLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0MDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNTc2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEyLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNTc2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEyLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEwLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEwLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNTc2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEyLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNTc2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEyLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0MDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0MDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0LzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0LzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwLzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwLzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwLzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwLzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTUwLzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTUwLzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTYwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTYwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTYwLzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTYwLzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTEyODAsIGhlaWdodD0oaW50KTcyMCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNTAvMSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTI4MCwgaGVpZ2h0PShpbnQpNzIwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik1MC8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxMjgwLCBoZWlnaHQ9KGludCk3MjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTYwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTEyODAsIGhlaWdodD0oaW50KTcyMCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNjAwMDAvMTAwMSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTI4MCwgaGVpZ2h0PShpbnQpNzIwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik2MC8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxMjgwLCBoZWlnaHQ9KGludCk3MjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTYwLzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0MDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0MDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0LzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0LzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0MDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNC8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjQvMSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjUvMSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikzMC8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMzAvMSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNTAvMSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTUwLzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTYwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik2MDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik2MC8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNjAvMSwgZm9ybWF0PShzdHJpbmcpQVJHQjwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kZmJ2aWRlb3NpbmsueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRmYnZpZGVvc2luay54bWwKaW5kZXggMWJiODQyZi4uNGFmNThjYiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRmYnZpZGVvc2luay54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRmYnZpZGVvc2luay54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5EaXJlY3RGQiB2aWRlbyBvdXRwdXQgcGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9kaXJlY3RmYi8ubGlicy9saWJnc3RkZmJ2aWRlb3Npbmsuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZGZidmlkZW9zaW5rLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdGxzLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdGxzLnhtbAppbmRleCA1MGE5MTZmLi4zZjE3MjIyIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHRscy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR0bHMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+RFRMUyBkZWNvZGVyIGFuZCBlbmNvZGVyIHBsdWdpbnM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2R0bHMvLmxpYnMvbGliZ3N0ZHRscy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RkdGxzLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+QlNEPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR0c2RlYy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHRzZGVjLnhtbAppbmRleCAwZjQzODA1Li5mZmFkMGE1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHRzZGVjLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHRzZGVjLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkRlY29kZXMgRFRTIGF1ZGlvIHN0cmVhbXM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2R0cy8ubGlicy9saWJnc3RkdHNkZWMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZHRzZGVjLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+R1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2Yi54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHZiLnhtbAppbmRleCBlMmZiZDY2Li5lM2ViNGM4IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHZiLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHZiLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkRWQiBlbGVtZW50czwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9zeXMvZHZiLy5saWJzL2xpYmdzdGR2Yi5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RkdmIuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2YnN1Ym92ZXJsYXkueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2YnN1Ym92ZXJsYXkueG1sCmluZGV4IDgyMmIzOTkuLmU1ZDE3YzUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmJzdWJvdmVybGF5LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHZic3Vib3ZlcmxheS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5EVkIgc3VidGl0bGUgcmVuZGVyZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2R2YnN1Ym92ZXJsYXkvLmxpYnMvbGliZ3N0ZHZic3Vib3ZlcmxheS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RkdmJzdWJvdmVybGF5LnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmRzcHUueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2ZHNwdS54bWwKaW5kZXggYWVmMGE4Ni4uODlhOGY4MCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2ZHNwdS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2ZHNwdS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5EVkQgU3ViLXBpY3R1cmUgT3ZlcmxheSBlbGVtZW50PC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9kdmRzcHUvLmxpYnMvbGliZ3N0ZHZkc3B1LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGR2ZHNwdS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmFhYy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmFhYy54bWwKaW5kZXggMWI5MTA4OC4uMWE4YTIxYyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZhYWMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mYWFjLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkZyZWUgQUFDIEVuY29kZXIgKEZBQUMpPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9mYWFjLy5saWJzL2xpYmdzdGZhYWMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZmFhYy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNS4wLjE8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy4wLjE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgZ2l0PC9wYWNrYWdlPgpAQCAtMjAsNyArMjAsNyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLCA2NDAwMCwgODgyMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpWyAxLCA2IF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLCA2NDAwMCwgODgyMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpMTsgYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLCA2NDAwMCwgODgyMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpMiwgY2hhbm5lbC1tYXNrPShiaXRtYXNrKTB4MDAwMDAwMDAwMDAwMDAwMzsgYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLCA2NDAwMCwgODgyMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpMywgY2hhbm5lbC1tYXNrPShiaXRtYXNrKTB4MDAwMDAwMDAwMDAwMDAwNzsgYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLCA2NDAwMCwgODgyMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpNCwgY2hhbm5lbC1tYXNrPShiaXRtYXNrKTB4MDAwMDAwMDAwMDAwMDEwNzsgYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLCA2NDAwMCwgODgyMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpNSwgY2hhbm5lbC1tYXNrPShiaXRtYXNrKTB4MDAwMDAwMDAwMDAwMDAzNzsgYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLCA2NDAwMCwgODgyMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpNiwgY2hhbm5lbC1tYXNrPShiaXRtYXNrKTB4MDAwMDAwMDAwMDAwMDAzZjwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmFhZC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmFhZC54bWwKaW5kZXggMDk5Y2NjYy4uNzA1MWRhNiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZhYWQueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mYWFkLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkZyZWUgQUFDIERlY29kZXIgKEZBQUQpPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9mYWFkLy5saWJzL2xpYmdzdGZhYWQuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZmFhZC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mYmRldnNpbmsueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZiZGV2c2luay54bWwKaW5kZXggMjkyNTI1Mi4uZDNiOTliOSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZiZGV2c2luay54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZiZGV2c2luay54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5MaW51eCBmcmFtZWJ1ZmZlciB2aWRlbyBzaW5rPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL3N5cy9mYmRldi8ubGlicy9saWJnc3RmYmRldnNpbmsuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZmJkZXZzaW5rLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mZXN0aXZhbC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmVzdGl2YWwueG1sCmluZGV4IGNlYTQ0OTcuLjE3N2ViNGMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mZXN0aXZhbC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZlc3RpdmFsLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlN5bnRoZXNpemVzIHBsYWluIHRleHQgaW50byBhdWRpbzwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvZmVzdGl2YWwvLmxpYnMvbGliZ3N0ZmVzdGl2YWwuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZmVzdGl2YWwuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZpZWxkYW5hbHlzaXMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZpZWxkYW5hbHlzaXMueG1sCmluZGV4IDIzMmU1NzguLjFkMjk3MGEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1maWVsZGFuYWx5c2lzLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmllbGRhbmFseXNpcy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5WaWRlbyBmaWVsZCBhbmFseXNpczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvZmllbGRhbmFseXNpcy8ubGlicy9saWJnc3RmaWVsZGFuYWx5c2lzLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGZpZWxkYW5hbHlzaXMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXI8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmxpdGUueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZsaXRlLnhtbAppbmRleCAyYzFkODYwLi5mZjI2NjBlIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmxpdGUueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mbGl0ZS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5GbGl0ZSBzcGVlY2ggc3ludGhlc2l6ZXIgcGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9mbGl0ZS8ubGlicy9saWJnc3RmbGl0ZS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RmbGl0ZS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmx1aWRzeW50aG1pZGkueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZsdWlkc3ludGhtaWRpLnhtbAppbmRleCAzNTU1MGI5Li4xMDJmNTgyIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmx1aWRzeW50aG1pZGkueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mbHVpZHN5bnRobWlkaS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5GbHVpZHN5bnRoIE1JREkgUGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9mbHVpZHN5bnRoLy5saWJzL2xpYmdzdGZsdWlkc3ludGhtaWRpLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGZsdWlkc3ludGhtaWRpLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVldmVyYi54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZnJlZXZlcmIueG1sCmluZGV4IGEwM2I4NjcuLjJmNjc2NGMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVldmVyYi54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZyZWV2ZXJiLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlJldmVyYmVyYXRpb24vcm9vbSBlZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2ZyZWV2ZXJiLy5saWJzL2xpYmdzdGZyZWV2ZXJiLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGZyZWV2ZXJiLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVpMHIueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZyZWkwci54bWwKaW5kZXggZjk4MGMzNy4uODhjZDAwZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZyZWkwci54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZyZWkwci54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5mcmVpMHIgcGx1Z2luIGxpYnJhcnk8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2ZyZWkwci8ubGlicy9saWJnc3RmcmVpMHIuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZnJlaTByLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nYXVkaWVmZmVjdHMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdhdWRpZWZmZWN0cy54bWwKaW5kZXggNzQ5OGQxYS4uYzBkOWVlZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdhdWRpZWZmZWN0cy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdhdWRpZWZmZWN0cy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5HYXVkaSB2aWRlbyBlZmZlY3RzLjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvZ2F1ZGllZmZlY3RzLy5saWJzL2xpYmdzdGdhdWRpZWZmZWN0cy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RnYXVkaWVmZmVjdHMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXI8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2RwLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZHAueG1sCmluZGV4IDg5YmFiMzUuLjFhNmJlOGEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZHAueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZHAueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+UGF5bG9hZC9kZXBheWxvYWQgR0RQIHBhY2tldHM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2dkcC8ubGlicy9saWJnc3RnZHAuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0Z2RwLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0ueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdlb21ldHJpY3RyYW5zZm9ybS54bWwKaW5kZXggNzBlNDJmNS4uNGJhN2Y0MCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdlb21ldHJpY3RyYW5zZm9ybS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdlb21ldHJpY3RyYW5zZm9ybS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5WYXJpb3VzIGdlb21ldHJpYyBpbWFnZSB0cmFuc2Zvcm0gZWxlbWVudHM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS8ubGlicy9saWJnc3RnZW9tZXRyaWN0cmFuc2Zvcm0uc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0Z2VvbWV0cmljdHJhbnNmb3JtLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nbWVkZWMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdtZWRlYy54bWwKaW5kZXggYzc1M2M1YS4uZThlNWNjZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdtZWRlYy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdtZWRlYy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5HTUUgQXVkaW8gRGVjb2RlcjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvZ21lLy5saWJzL2xpYmdzdGdtZS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RnbWUuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzbS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3NtLnhtbAppbmRleCBlY2E4NDM1Li44NzI0NDYxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3NtLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3NtLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkdTTSBlbmNvZGVyL2RlY29kZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2dzbS8ubGlicy9saWJnc3Rnc20uc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0Z3NtLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RndGsueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzdGd0ay54bWwKaW5kZXggMmVhMjRkMy4uZWE1ZjRhYiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzdGd0ay54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzdGd0ay54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5HdGsrIHNpbms8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2d0ay8ubGlicy9saWJnc3RndGtzaW5rLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGd0a3Npbmsuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzdHNpcmVuLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RzaXJlbi54bWwKaW5kZXggNGQyYjI5ZC4uZTc1MzE1NSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzdHNpcmVuLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3N0c2lyZW4ueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+U2lyZW4gZW5jb2Rlci9kZWNvZGVyL3BheWxvYWRlci9kZXBheWxvYWRlciBwbHVnaW5zPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9zaXJlbi8ubGlicy9saWJnc3RzaXJlbi5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RzaXJlbi5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZnJhZ21lbnRlZC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taGxzLnhtbApzaW1pbGFyaXR5IGluZGV4IDgzJQpyZW5hbWUgZnJvbSBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZnJhZ21lbnRlZC54bWwKcmVuYW1lIHRvIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1obHMueG1sCmluZGV4IGI5NzNlZDQuLjViZDg5NDcgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmFnbWVudGVkLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taGxzLnhtbApAQCAtMSwxMyArMSwxMyBAQAogPHBsdWdpbj4KLSAgPG5hbWU+ZnJhZ21lbnRlZDwvbmFtZT4KLSAgPGRlc2NyaXB0aW9uPkZyYWdtZW50ZWQgc3RyZWFtaW5nIHBsdWdpbnM8L2Rlc2NyaXB0aW9uPgotICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2hscy8ubGlicy9saWJnc3RmcmFnbWVudGVkLnNvPC9maWxlbmFtZT4KLSAgPGJhc2VuYW1lPmxpYmdzdGZyYWdtZW50ZWQuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPG5hbWU+aGxzPC9uYW1lPgorICA8ZGVzY3JpcHRpb24+SFRUUCBMaXZlIFN0cmVhbWluZyAoSExTKTwvZGVzY3JpcHRpb24+CisgIDxmaWxlbmFtZT4uLi8uLi9leHQvaGxzLy5saWJzL2xpYmdzdGhscy5zbzwvZmlsZW5hbWU+CisgIDxiYXNlbmFtZT5saWJnc3RobHMuc288L2Jhc2VuYW1lPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnM8L3BhY2thZ2U+Ci0gIDxvcmlnaW4+aHR0cDovL3d3dy5nc3RyZWFtZXIub3JnLzwvb3JpZ2luPgorICA8b3JpZ2luPlVua25vd24gcGFja2FnZSBvcmlnaW48L29yaWdpbj4KICAgPGVsZW1lbnRzPgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+aGxzZGVtdXg8L25hbWU+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taWQzdGFnLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pZDN0YWcueG1sCmluZGV4IGQyM2IyZjUuLjdhNDJkZDIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pZDN0YWcueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pZDN0YWcueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+SUQzIHYxIGFuZCB2MiBtdXhpbmcgcGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9pZDN0YWcvLmxpYnMvbGliZ3N0aWQzdGFnLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGlkM3RhZy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taW50ZXIueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWludGVyLnhtbAppbmRleCBiMDYwNjU0Li40OGI2Y2NkIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taW50ZXIueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlci54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5wbHVnaW4gZm9yIGludGVyLXBpcGVsaW5lIGNvbW11bmljYXRpb248L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2ludGVyLy5saWJzL2xpYmdzdGludGVyLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGludGVyLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWluczwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlcmxhY2UueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWludGVybGFjZS54bWwKaW5kZXggNzkwNTEyMC4uM2FhYWQ5MiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWludGVybGFjZS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWludGVybGFjZS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5DcmVhdGUgYW4gaW50ZXJsYWNlZCB2aWRlbyBzdHJlYW08L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2ludGVybGFjZS8ubGlicy9saWJnc3RpbnRlcmxhY2Uuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0aW50ZXJsYWNlLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pdmZwYXJzZS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taXZmcGFyc2UueG1sCmluZGV4IGRkNTdiZTIuLjYxNmM1NTUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pdmZwYXJzZS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWl2ZnBhcnNlLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPklWRiBwYXJzZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2l2ZnBhcnNlLy5saWJzL2xpYmdzdGl2ZnBhcnNlLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGl2ZnBhcnNlLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pdnRjLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pdnRjLnhtbAppbmRleCA2NjYwOWUwLi5jNDYzNzIwIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taXZ0Yy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWl2dGMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+SW52ZXJzZSBUZWxlY2luZTwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvaXZ0Yy8ubGlicy9saWJnc3RpdnRjLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGl2dGMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWpwMmtkZWNpbWF0b3IueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWpwMmtkZWNpbWF0b3IueG1sCmluZGV4IGQwNDZlYjQuLmI5MGMxZWUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1qcDJrZGVjaW1hdG9yLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tanAya2RlY2ltYXRvci54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5KUEVHMjAwMCBkZWNpbWF0b3I8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2pwMmtkZWNpbWF0b3IvLmxpYnMvbGliZ3N0anAya2RlY2ltYXRvci5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RqcDJrZGVjaW1hdG9yLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1qcGVnZm9ybWF0LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1qcGVnZm9ybWF0LnhtbAppbmRleCA0MGM0ZjljLi43NzExNDAwIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tanBlZ2Zvcm1hdC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWpwZWdmb3JtYXQueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+SlBFRyBpbnRlcmNoYW5nZSBmb3JtYXQgcGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9qcGVnZm9ybWF0Ly5saWJzL2xpYmdzdGpwZWdmb3JtYXQuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0anBlZ2Zvcm1hdC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4ta2F0ZS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4ta2F0ZS54bWwKaW5kZXggOWVkNDM2My4uNDEzMjExMiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWthdGUueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1rYXRlLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkthdGUgcGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9rYXRlLy5saWJzL2xpYmdzdGthdGUuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0a2F0ZS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbGFkc3BhLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1sYWRzcGEueG1sCmluZGV4IDVkYzY3ZjEuLjM3MWI3ODggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1sYWRzcGEueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1sYWRzcGEueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+TEFEU1BBIHBsdWdpbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvbGFkc3BhLy5saWJzL2xpYmdzdGxhZHNwYS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RsYWRzcGEuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWxpYmRlMjY1LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1saWJkZTI2NS54bWwKaW5kZXggMTMyMTBlNi4uNWJhM2IyMyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWxpYmRlMjY1LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbGliZGUyNjUueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+SEVWQy9ILjI2NSBkZWNvZGVyIHVzaW5nIGxpYmRlMjY1PC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9saWJkZTI2NS8ubGlicy9saWJnc3RsaWJkZTI2NS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RsaWJkZTI2NS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbGl2ZWFkZGVyLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1saXZlYWRkZXIueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWI4M2YxLi4wMDAwMDAwCi0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1saXZlYWRkZXIueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPHBsdWdpbj4KLSAgPG5hbWU+bGl2ZWFkZGVyPC9uYW1lPgotICA8ZGVzY3JpcHRpb24+QWRkcyBtdWx0aXBsZSBsaXZlIGRpc2NvbnRpbnVvdXMgc3RyZWFtczwvZGVzY3JpcHRpb24+Ci0gIDxmaWxlbmFtZT4uLi8uLi9nc3QvbGl2ZWFkZGVyLy5saWJzL2xpYmdzdGxpdmVhZGRlci5zbzwvZmlsZW5hbWU+Ci0gIDxiYXNlbmFtZT5saWJnc3RsaXZlYWRkZXIuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KLSAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KLSAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KLSAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KLSAgPG9yaWdpbj5Vbmtub3duIHBhY2thZ2Ugb3JpZ2luPC9vcmlnaW4+Ci0gIDxlbGVtZW50cz4KLSAgICA8ZWxlbWVudD4KLSAgICAgIDxuYW1lPmxpdmVhZGRlcjwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5MaXZlIEFkZGVyIGVsZW1lbnQ8L2xvbmduYW1lPgotICAgICAgPGNsYXNzPkdlbmVyaWMvQXVkaW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPk1peGVzIGxpdmUvZGlzY29udGludW91cyBhdWRpbyBzdHJlYW1zPC9kZXNjcmlwdGlvbj4KLSAgICAgIDxhdXRob3I+T2xpdmllciBDcmV0ZSAmbHQ7b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY28udWsmZ3Q7PC9hdXRob3I+Ci0gICAgICA8cGFkcz4KLSAgICAgICAgPGNhcHM+Ci0gICAgICAgICAgPG5hbWU+c2lua18ldTwvbmFtZT4KLSAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KLSAgICAgICAgICA8cHJlc2VuY2U+cmVxdWVzdDwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUzgsIFU4LCBTMTZMRSwgVTE2TEUsIFMzMkxFLCBVMzJMRSwgRjMyTEUsIEY2NExFIH0sIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXTwvZGV0YWlscz4KLSAgICAgICAgPC9jYXBzPgotICAgICAgICA8Y2Fwcz4KLSAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+Ci0gICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KLSAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBTOCwgVTgsIFMxNkxFLCBVMTZMRSwgUzMyTEUsIFUzMkxFLCBGMzJMRSwgRjY0TEUgfSwgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdPC9kZXRhaWxzPgotICAgICAgICA8L2NhcHM+Ci0gICAgICA8L3BhZHM+Ci0gICAgPC9lbGVtZW50PgotICA8L2VsZW1lbnRzPgotPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1pZGkueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1pZGkueG1sCmluZGV4IDcxOGJlNDAuLjRjNDA3NGUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1taWRpLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbWlkaS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5QYXJzZSBNSURJIGZpbGVzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9taWRpLy5saWJzL2xpYmdzdG1pZGkuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0bWlkaS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbWltaWMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1pbWljLnhtbAppbmRleCAzMGQxZWIxLi5iMGIwOWZmIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbWltaWMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1taW1pYy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5NaW1pYyBjb2RlYzwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvbWltaWMvLmxpYnMvbGliZ3N0bWltaWMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0bWltaWMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1tcy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbW1zLnhtbAppbmRleCA1NGMwODFjLi5mNTBmZWNmIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbW1zLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbW1zLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPk1pY3Jvc29mdCBNdWx0aSBNZWRpYSBTZXJ2ZXIgc3RyZWFtaW5nIHByb3RvY29sIHN1cHBvcnQ8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2xpYm1tcy8ubGlicy9saWJnc3RtbXMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0bW1zLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tb2RwbHVnLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tb2RwbHVnLnhtbAppbmRleCAzMzIwZDcwLi41NzM2YjE0IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbW9kcGx1Zy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1vZHBsdWcueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Lk1PRCBhdWRpbyBkZWNvZGluZzwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvbW9kcGx1Zy8ubGlicy9saWJnc3Rtb2RwbHVnLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG1vZHBsdWcuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWcyZW5jLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVnMmVuYy54bWwKaW5kZXggOTVlZWU4NC4uZWYzZGE2NSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWcyZW5jLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZzJlbmMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+SGlnaC1xdWFsaXR5IE1QRUctMS8yIHZpZGVvIGVuY29kZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L21wZWcyZW5jLy5saWJzL2xpYmdzdG1wZWcyZW5jLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG1wZWcyZW5jLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+R1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWdwc2RlbXV4LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVncHNkZW11eC54bWwKaW5kZXggMmRkYTFkMy4uYWMxNWY3ZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWdwc2RlbXV4LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzZGVtdXgueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+TVBFRy1QUyBkZW11eGVyPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9tcGVnZGVtdXgvLmxpYnMvbGliZ3N0bXBlZ3BzZGVtdXguc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0bXBlZ3BzZGVtdXguc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT51bmtub3duPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWdwc211eC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzbXV4LnhtbAppbmRleCBkMzZkYjI2Li42NzFmY2JmIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzbXV4LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzbXV4LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPk1QRUctUFMgbXV4ZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L21wZWdwc211eC8ubGlicy9saWJnc3RtcGVncHNtdXguc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0bXBlZ3BzbXV4LnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNkZW11eC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzZGVtdXgueG1sCmluZGV4IGJlNDg3ODkuLmJiNTA3NGYgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNkZW11eC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWd0c2RlbXV4LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPk1QRUcgVFMgZGVtdXhlcjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvbXBlZ3RzZGVtdXgvLmxpYnMvbGliZ3N0bXBlZ3RzZGVtdXguc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0bXBlZ3RzZGVtdXguc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpAQCAtMjcsNyArMjcsNyBAQAogICAgICAgICAgIDxuYW1lPmF1ZGlvXyUwNHg8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+c29tZXRpbWVzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz5hdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTE7IGF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpMiwgc3RyZWFtLWZvcm1hdD0oc3RyaW5nKWFkdHM7IGF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCwgc3RyZWFtLWZvcm1hdD0oc3RyaW5nKWxvYXM7IGF1ZGlvL3gtbHBjbSwgd2lkdGg9KGludCl7IDE2LCAyMCwgMjQgfSwgcmF0ZT0oaW50KXsgNDgwMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpWyAxLCA4IF0sIGR5bmFtaWNfcmFuZ2U9KGludClbIDAsIDI1NSBdLCBlbXBoYXNpcz0oYm9vbGVhbil7IGZhbHNlLCB0cnVlIH0sIG11dGU9KGJvb2xlYW4peyBmYWxzZSwgdHJ1ZSB9OyBhdWRpby94LWFjMzsgYXVkaW8veC1lYWMzOyBhdWRpby94LWR0czsgYXVkaW8veC1wcml2YXRlLXRzLWxwY208L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+YXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCkxOyBhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTIsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylhZHRzOyBhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylsb2FzOyBhdWRpby94LWxwY20sIHdpZHRoPShpbnQpeyAxNiwgMjAsIDI0IH0sIHJhdGU9KGludCl7IDQ4MDAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KVsgMSwgOCBdLCBkeW5hbWljX3JhbmdlPShpbnQpWyAwLCAyNTUgXSwgZW1waGFzaXM9KGJvb2xlYW4peyBmYWxzZSwgdHJ1ZSB9LCBtdXRlPShib29sZWFuKXsgZmFsc2UsIHRydWUgfTsgYXVkaW8veC1hYzM7IGF1ZGlvL3gtZWFjMzsgYXVkaW8veC1kdHM7IGF1ZGlvL3gtb3B1czsgYXVkaW8veC1wcml2YXRlLXRzLWxwY208L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+cHJpdmF0ZV8lMDR4PC9uYW1lPgpAQCAtMzksMTMgKzM5LDEzIEBACiAgICAgICAgICAgPG5hbWU+c3VicGljdHVyZV8lMDR4PC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPnNvbWV0aW1lczwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+c3VicGljdHVyZS94LXBnczsgc3VicGljdHVyZS94LWR2ZDwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz5zdWJwaWN0dXJlL3gtcGdzOyBzdWJwaWN0dXJlL3gtZHZkOyBzdWJwaWN0dXJlL3gtZHZiPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnZpZGVvXyUwNHg8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+c29tZXRpbWVzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KXsgMSwgMiwgNCB9LCBzeXN0ZW1zdHJlYW09KGJvb2xlYW4pZmFsc2U7IHZpZGVvL3gtaDI2NCwgc3RyZWFtLWZvcm1hdD0oc3RyaW5nKWJ5dGUtc3RyZWFtLCBhbGlnbm1lbnQ9KHN0cmluZyluYWw7IHZpZGVvL3gtZGlyYWM7IHZpZGVvL3gtY2F2czsgdmlkZW8veC13bXYsIHdtdnZlcnNpb249KGludCkzLCBmb3JtYXQ9KHN0cmluZylXVkMxPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpeyAxLCAyLCA0IH0sIHN5c3RlbXN0cmVhbT0oYm9vbGVhbilmYWxzZTsgdmlkZW8veC1oMjY0LCBzdHJlYW0tZm9ybWF0PShzdHJpbmcpYnl0ZS1zdHJlYW0sIGFsaWdubWVudD0oc3RyaW5nKW5hbDsgdmlkZW8veC1oMjY1LCBzdHJlYW0tZm9ybWF0PShzdHJpbmcpYnl0ZS1zdHJlYW0sIGFsaWdubWVudD0oc3RyaW5nKW5hbDsgdmlkZW8veC1kaXJhYzsgdmlkZW8veC1jYXZzOyB2aWRlby94LXdtdiwgd212dmVyc2lvbj0oaW50KTMsIGZvcm1hdD0oc3RyaW5nKVdWQzE8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzbXV4LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNtdXgueG1sCmluZGV4IGE0YjU1M2IuLmUzZmQxMTkgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNtdXgueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNtdXgueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+TVBFRy1UUyBtdXhlcjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvbXBlZ3RzbXV4Ly5saWJzL2xpYmdzdG1wZWd0c211eC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RtcGVndHNtdXguc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpAQCAtMjAsNyArMjAsNyBAQAogICAgICAgICAgIDxuYW1lPnNpbmtfJWQ8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPnJlcXVlc3Q8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL21wZWcsIHBhcnNlZD0oYm9vbGVhbil0cnVlLCBtcGVndmVyc2lvbj0oaW50KXsgMSwgMiwgNCB9LCBzeXN0ZW1zdHJlYW09KGJvb2xlYW4pZmFsc2U7IHZpZGVvL3gtZGlyYWM7IHZpZGVvL3gtaDI2NCwgc3RyZWFtLWZvcm1hdD0oc3RyaW5nKWJ5dGUtc3RyZWFtLCBhbGlnbm1lbnQ9KHN0cmluZyl7IGF1LCBuYWwgfTsgYXVkaW8vbXBlZywgcGFyc2VkPShib29sZWFuKXRydWUsIG1wZWd2ZXJzaW9uPShpbnQpeyAxLCAyIH07IGF1ZGlvL21wZWcsIGZyYW1lZD0oYm9vbGVhbil0cnVlLCBtcGVndmVyc2lvbj0oaW50KTQsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylhZHRzOyBhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylyYXc7IGF1ZGlvL3gtbHBjbSwgd2lkdGg9KGludCl7IDE2LCAyMCwgMjQgfSwgcmF0ZT0oaW50KXsgNDgwMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpWyAxLCA4IF0sIGR5bmFtaWNfcmFuZ2U9KGludClbIDAsIDI1NSBdLCBlbXBoYXNpcz0oYm9vbGVhbil7IGZhbHNlLCB0cnVlIH0sIG11dGU9KGJvb2xlYW4peyBmYWxzZSwgdHJ1ZSB9OyBhdWRpby94LWFjMywgZnJhbWVkPShib29sZWFuKXRydWU7IGF1ZGlvL3gtZHRzLCBmcmFtZWQ9KGJvb2xlYW4pdHJ1ZTsgc3VicGljdHVyZS94LWR2YjsgYXBwbGljYXRpb24veC10ZWxldGV4dDsgbWV0YS94LWtsdiwgcGFyc2VkPShib29sZWFuKXRydWU8L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8vbXBlZywgcGFyc2VkPShib29sZWFuKXRydWUsIG1wZWd2ZXJzaW9uPShpbnQpeyAxLCAyLCA0IH0sIHN5c3RlbXN0cmVhbT0oYm9vbGVhbilmYWxzZTsgdmlkZW8veC1kaXJhYzsgdmlkZW8veC1oMjY0LCBzdHJlYW0tZm9ybWF0PShzdHJpbmcpYnl0ZS1zdHJlYW0sIGFsaWdubWVudD0oc3RyaW5nKXsgYXUsIG5hbCB9OyB2aWRlby94LWgyNjUsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylieXRlLXN0cmVhbSwgYWxpZ25tZW50PShzdHJpbmcpeyBhdSwgbmFsIH07IGF1ZGlvL21wZWcsIHBhcnNlZD0oYm9vbGVhbil0cnVlLCBtcGVndmVyc2lvbj0oaW50KXsgMSwgMiB9OyBhdWRpby9tcGVnLCBmcmFtZWQ9KGJvb2xlYW4pdHJ1ZSwgbXBlZ3ZlcnNpb249KGludCk0LCBzdHJlYW0tZm9ybWF0PShzdHJpbmcpYWR0czsgYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0LCBzdHJlYW0tZm9ybWF0PShzdHJpbmcpcmF3OyBhdWRpby94LWxwY20sIHdpZHRoPShpbnQpeyAxNiwgMjAsIDI0IH0sIHJhdGU9KGludCl7IDQ4MDAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KVsgMSwgOCBdLCBkeW5hbWljX3JhbmdlPShpbnQpWyAwLCAyNTUgXSwgZW1waGFzaXM9KGJvb2xlYW4peyBmYWxzZSwgdHJ1ZSB9LCBtdXRlPShib29sZWFuKXsgZmFsc2UsIHRydWUgfTsgYXVkaW8veC1hYzMsIGZyYW1lZD0oYm9vbGVhbil0cnVlOyBhdWRpby94LWR0cywgZnJhbWVkPShib29sZWFuKXRydWU7IGF1ZGlvL3gtb3B1cywgY2hhbm5lbHM9KGludClbIDEsIDggXSwgY2hhbm5lbC1tYXBwaW5nLWZhbWlseT0oaW50KXsgMCwgMSB9OyBzdWJwaWN0dXJlL3gtZHZiOyBhcHBsaWNhdGlvbi94LXRlbGV0ZXh0OyBtZXRhL3gta2x2LCBwYXJzZWQ9KGJvb2xlYW4pdHJ1ZTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBnMTIzLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGcxMjMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODA1YzYxLi4wMDAwMDAwCi0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGcxMjMueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotPHBsdWdpbj4KLSAgPG5hbWU+bXBnMTIzPC9uYW1lPgotICA8ZGVzY3JpcHRpb24+bXAzIGRlY29kaW5nIGJhc2VkIG9uIHRoZSBtcGcxMjMgbGlicmFyeTwvZGVzY3JpcHRpb24+Ci0gIDxmaWxlbmFtZT4uLi8uLi9leHQvbXBnMTIzLy5saWJzL2xpYmdzdG1wZzEyMy5zbzwvZmlsZW5hbWU+Ci0gIDxiYXNlbmFtZT5saWJnc3RtcGcxMjMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KLSAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KLSAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KLSAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KLSAgPG9yaWdpbj5Vbmtub3duIHBhY2thZ2Ugb3JpZ2luPC9vcmlnaW4+Ci0gIDxlbGVtZW50cz4KLSAgICA8ZWxlbWVudD4KLSAgICAgIDxuYW1lPm1wZzEyM2F1ZGlvZGVjPC9uYW1lPgotICAgICAgPGxvbmduYW1lPm1wZzEyMyBtcDMgZGVjb2RlcjwvbG9uZ25hbWU+Ci0gICAgICA8Y2xhc3M+Q29kZWMvRGVjb2Rlci9BdWRpbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVjb2RlcyBtcDMgc3RyZWFtcyB1c2luZyB0aGUgbXBnMTIzIGxpYnJhcnk8L2Rlc2NyaXB0aW9uPgotICAgICAgPGF1dGhvcj5DYXJsb3MgUmFmYWVsIEdpYW5pICZsdDtkdkBwc2V1ZG90ZXJtaW5hbC5vcmcmZ3Q7PC9hdXRob3I+Ci0gICAgICA8cGFkcz4KLSAgICAgICAgPGNhcHM+Ci0gICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KLSAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KLSAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz5hdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTEsIGxheWVyPShpbnQpWyAxLCAzIF0sIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCB9LCBjaGFubmVscz0oaW50KVsgMSwgMiBdLCBwYXJzZWQ9KGJvb2xlYW4pdHJ1ZTwvZGV0YWlscz4KLSAgICAgICAgPC9jYXBzPgotICAgICAgICA8Y2Fwcz4KLSAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+Ci0gICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KLSAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBTMTZMRSwgVTE2TEUsIFMzMkxFLCBVMzJMRSwgUzI0TEUsIFUyNExFLCBGMzJMRSB9LCByYXRlPShpbnQpeyA4MDAwLCAxMTAyNSwgMTIwMDAsIDE2MDAwLCAyMjA1MCwgMjQwMDAsIDMyMDAwLCA0NDEwMCwgNDgwMDAgfSwgY2hhbm5lbHM9KGludClbIDEsIDIgXSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQ8L2RldGFpbHM+Ci0gICAgICAgIDwvY2Fwcz4KLSAgICAgIDwvcGFkcz4KLSAgICA8L2VsZW1lbnQ+Ci0gIDwvZWxlbWVudHM+Ci08L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBsZXgueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wbGV4LnhtbAppbmRleCAwMjJlZGYxLi45ZWM3YjY0IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBsZXgueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGxleC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5IaWdoLXF1YWxpdHkgTVBFRy9EVkQvU1ZDRC9WQ0QgdmlkZW8vYXVkaW8gbXVsdGlwbGV4ZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L21wbGV4Ly5saWJzL2xpYmdzdG1wbGV4LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG1wbGV4LnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+R1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW14Zi54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXhmLnhtbAppbmRleCBjNzgwOGM1Li4wOTRkZTFkIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXhmLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXhmLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPk1YRiBwbHVnaW4gbGlicmFyeTwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvbXhmLy5saWJzL2xpYmdzdG14Zi5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RteGYuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpAQCAtMzAsNSArMzAsNjggQEAKICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KKyAgICA8ZWxlbWVudD4KKyAgICAgIDxuYW1lPm14Zm11eDwvbmFtZT4KKyAgICAgIDxsb25nbmFtZT5NWEYgbXV4ZXI8L2xvbmduYW1lPgorICAgICAgPGNsYXNzPkNvZGVjL011eGVyPC9jbGFzcz4KKyAgICAgIDxkZXNjcmlwdGlvbj5NdXhlcyB2aWRlby9hdWRpbyBzdHJlYW1zIGludG8gYSBNWEYgc3RyZWFtPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxhdXRob3I+U2ViYXN0aWFuIERyw7ZnZSAmbHQ7c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWsmZ3Q7PC9hdXRob3I+CisgICAgICA8cGFkcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+YWxhd19hdWRpb19zaW5rXyV1PC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5yZXF1ZXN0PC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LWFsYXcsIHJhdGU9KGludClbIDgwMDAsIDE5MjAwMCBdLCBjaGFubmVscz0oaW50KVsgMSwgMiBdPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPmJ3Zl9hdWRpb19zaW5rXyV1PC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5yZXF1ZXN0PC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzMyTEUsIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXTsgYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMzMkJFLCByYXRlPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF07IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMjRMRSwgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdOyBhdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzI0QkUsIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXTsgYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCByYXRlPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF07IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZCRSwgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdOyBhdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpVTgsIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5kdl9kaWZfdmlkZW9fc2lua18ldTwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+cmVxdWVzdDwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1kdiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBzeXN0ZW1zdHJlYW09KGJvb2xlYW4pdHJ1ZTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5qcGVnMjAwMF92aWRlb19zaW5rXyV1PC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5yZXF1ZXN0PC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5pbWFnZS94LWpwYywgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBjb2xvcnNwYWNlPShzdHJpbmcpeyBzUkdCLCBzWVVWIH08L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+bXBlZ19hdWRpb19zaW5rXyV1PC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5yZXF1ZXN0PC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5hdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTEsIGxheWVyPShpbnQpWyAxLCAzIF0sIHJhdGU9KGludClbIDgwMDAsIDQ4MDAwIF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyIF0sIHBhcnNlZD0oYm9vbGVhbil0cnVlOyBhdWRpby94LWFjMywgcmF0ZT0oaW50KVsgNDAwMCwgOTYwMDAgXSwgY2hhbm5lbHM9KGludClbIDEsIDYgXTsgYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCkyLCByYXRlPShpbnQpWyA4MDAwLCA5NjAwMCBdLCBjaGFubmVscz0oaW50KVsgMSwgOCBdPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPm1wZWdfdmlkZW9fc2lua18ldTwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+cmVxdWVzdDwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCl7IDEsIDIsIDQgfSwgc3lzdGVtc3RyZWFtPShib29sZWFuKWZhbHNlLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtaDI2NCwgc3RyZWFtLWZvcm1hdD0oc3RyaW5nKWJ5dGUtc3RyZWFtLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+dXBfdmlkZW9fc2lua18ldTwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+cmVxdWVzdDwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVJHQiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpQkdSLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylSR0J4LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl4UkdCLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylCR1J4LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl4QkdSLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylBUkdCLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylBQkdSLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylCR1JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylBWVVWLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl2MzA4LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylZVVkyLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+dmMzX3ZpZGVvX3NpbmtfJXU8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPnJlcXVlc3Q8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtZG54aGQsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5hcHBsaWNhdGlvbi9teGY8L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgIDwvcGFkcz4KKyAgICA8L2VsZW1lbnQ+CiAgIDwvZWxlbWVudHM+CiA8L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbmVvbi54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbmVvbi54bWwKaW5kZXggZGUyY2U2Yi4uYzUzZmNkNCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW5lb24ueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1uZW9uLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPmxpYiBuZW9uIGh0dHAgY2xpZW50IHNyYzwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvbmVvbi8ubGlicy9saWJnc3RuZW9uaHR0cHNyYy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RuZW9uaHR0cHNyYy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4yPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuMTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1uZXRzaW0ueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW5ldHNpbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZiNWFkYgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1uZXRzaW0ueG1sCkBAIC0wLDAgKzEsMzQgQEAKKzxwbHVnaW4+CisgIDxuYW1lPm5ldHNpbTwvbmFtZT4KKyAgPGRlc2NyaXB0aW9uPk5ldHdvcmsgU2ltdWxhdG9yPC9kZXNjcmlwdGlvbj4KKyAgPGZpbGVuYW1lPi4uLy4uL2dzdC9uZXRzaW0vLmxpYnMvbGliZ3N0bmV0c2ltLnNvPC9maWxlbmFtZT4KKyAgPGJhc2VuYW1lPmxpYmdzdG5ldHNpbS5zbzwvYmFzZW5hbWU+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KKyAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KKyAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KKyAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KKyAgPG9yaWdpbj5Vbmtub3duIHBhY2thZ2Ugb3JpZ2luPC9vcmlnaW4+CisgIDxlbGVtZW50cz4KKyAgICA8ZWxlbWVudD4KKyAgICAgIDxuYW1lPm5ldHNpbTwvbmFtZT4KKyAgICAgIDxsb25nbmFtZT5OZXR3b3JrIFNpbXVsYXRvcjwvbG9uZ25hbWU+CisgICAgICA8Y2xhc3M+RmlsdGVyL05ldHdvcms8L2NsYXNzPgorICAgICAgPGRlc2NyaXB0aW9uPkFuIGVsZW1lbnQgdGhhdCBzaW11bGF0ZXMgbmV0d29yayBqaXR0ZXIsIHBhY2tldCBsb3NzIGFuZCBwYWNrZXQgZHVwbGljYXRpb248L2Rlc2NyaXB0aW9uPgorICAgICAgPGF1dGhvcj5QaGlsaXBwZSBLYWxhZiAmbHQ7cGhpbGlwcGUua2FsYWZAY29sbGFib3JhLmNvLnVrJmd0OzwvYXV0aG9yPgorICAgICAgPHBhZHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+QU5ZPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPkFOWTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgPC9wYWRzPgorICAgIDwvZWxlbWVudD4KKyAgPC9lbGVtZW50cz4KKzwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vZmEueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9mYS54bWwKaW5kZXggNTZiNjk3Ny4uNmE2NzNlMiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9mYS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9mYS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5DYWxjdWxhdGUgTXVzaWNJUCBmaW5nZXJwcmludCBmcm9tIGF1ZGlvIGZpbGVzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9vZmEvLmxpYnMvbGliZ3N0b2ZhLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG9mYS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuYWwueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5hbC54bWwKaW5kZXggZmYwMTNkMC4uYTJkNzM2ZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5hbC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5hbC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5PcGVuQUwgcGx1Z2luIGxpYnJhcnk8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L29wZW5hbC8ubGlicy9saWJnc3RvcGVuYWwuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0b3BlbmFsLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuY3YueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5jdi54bWwKaW5kZXggN2M5ODJjZC4uOWJmNDRlNCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5jdi54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5jdi54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5HU3RyZWFtZXIgT3BlbkNWIFBsdWdpbnM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L29wZW5jdi8ubGlicy9saWJnc3RvcGVuY3Yuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0b3BlbmN2LnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy4yPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpAQCAtODMsMTMgKzgzLDEzIEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpR1JBWTgsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpUkdCLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKUdSQVkxNl9MRSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylSR0IsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KQEAgLTEyNSwxMyArMTI1LDEzIEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpR1JBWTgsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpUkdCLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKUdSQVkxNl9MRSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylSR0IsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuZXhyLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuZXhyLnhtbAppbmRleCAzMzUwZGRmLi44NDQ2ZmRlIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmV4ci54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5leHIueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+T3BlbkVYUiBpbWFnZSBwbHVnaW48L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L29wZW5leHIvLmxpYnMvbGliZ3N0b3BlbmV4ci5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RvcGVuZXhyLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuZ2wueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5nbC54bWwKaW5kZXggNTFlNzU0NC4uMDBjOGE2YyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5nbC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5nbC54bWwKQEAgLTMsMTMgKzMsMzQgQEAKICAgPGRlc2NyaXB0aW9uPk9wZW5HTCBwbHVnaW48L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2dsLy5saWJzL2xpYmdzdG9wZW5nbC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RvcGVuZ2wuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgogICA8b3JpZ2luPlVua25vd24gcGFja2FnZSBvcmlnaW48L29yaWdpbj4KICAgPGVsZW1lbnRzPgogICAgIDxlbGVtZW50PgorICAgICAgPG5hbWU+Z2xjb2xvcmJhbGFuY2U8L25hbWU+CisgICAgICA8bG9uZ25hbWU+VmlkZW8gYmFsYW5jZTwvbG9uZ25hbWU+CisgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+CisgICAgICA8ZGVzY3JpcHRpb24+QWRqdXN0cyBicmlnaHRuZXNzLCBjb250cmFzdCwgaHVlLCBzYXR1cmF0aW9uIG9uIGEgdmlkZW8gc3RyZWFtPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxhdXRob3I+TWF0dGhldyBXYXRlcnMgJmx0O21hdHRoZXdAY2VudHJpY3VsYXIuY29tJmd0OzwvYXV0aG9yPgorICAgICAgPHBhZHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgPC9wYWRzPgorICAgIDwvZWxlbWVudD4KKyAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsY29sb3Jjb252ZXJ0PC9uYW1lPgogICAgICAgPGxvbmduYW1lPk9wZW5HTCBjb2xvciBjb252ZXJ0ZXI8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9Db252ZXJ0ZXIvVmlkZW88L2NsYXNzPgpAQCAtMjAsMTMgKzQxLDEzIEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZyl7IFJHQiwgUkdCeCwgUkdCQSwgQkdSLCBCR1J4LCBCR1JBLCB4UkdCLCB4QkdSLCBBUkdCLCBBQkdSLCBZNDQ0LCBJNDIwLCBZVjEyLCBZNDJCLCBZNDFCLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBBWVVWLCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUsIFJHQjE2LCBCR1IxNiB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCLCBSR0J4LCBSR0JBLCBCR1IsIEJHUngsIEJHUkEsIHhSR0IsIHhCR1IsIEFSR0IsIEFCR1IsIFk0NDQsIEk0MjAsIFlWMTIsIFk0MkIsIFk0MUIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIEFZVVYsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSwgUkdCMTYsIEJHUjE2IH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIFJHQiwgUkdCeCwgQkdSLCBCR1J4LCBCR1JBLCB4UkdCLCB4QkdSLCBBUkdCLCBBQkdSLCBZNDQ0LCBJNDIwLCBZVjEyLCBZNDJCLCBZNDFCLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBBWVVWLCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUsIFJHQjE2LCBCR1IxNiB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpeyAyRCwgcmVjdGFuZ2xlLCBleHRlcm5hbC1vZXMgfTsgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBSR0IsIFJHQngsIEJHUiwgQkdSeCwgQkdSQSwgeFJHQiwgeEJHUiwgQVJHQiwgQUJHUiwgWTQ0NCwgSTQyMCwgWVYxMiwgWTQyQiwgWTQxQiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgQVlVViwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFLCBSR0IxNiwgQkdSMTYgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKXsgMkQsIHJlY3RhbmdsZSwgZXh0ZXJuYWwtb2VzIH08L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpeyBSR0IsIFJHQngsIFJHQkEsIEJHUiwgQkdSeCwgQkdSQSwgeFJHQiwgeEJHUiwgQVJHQiwgQUJHUiwgWTQ0NCwgSTQyMCwgWVYxMiwgWTQyQiwgWTQxQiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgQVlVViwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFLCBSR0IxNiwgQkdSMTYgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQiwgUkdCeCwgUkdCQSwgQkdSLCBCR1J4LCBCR1JBLCB4UkdCLCB4QkdSLCBBUkdCLCBBQkdSLCBZNDQ0LCBJNDIwLCBZVjEyLCBZNDJCLCBZNDFCLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBBWVVWLCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUsIFJHQjE2LCBCR1IxNiB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBSR0IsIFJHQngsIEJHUiwgQkdSeCwgQkdSQSwgeFJHQiwgeEJHUiwgQVJHQiwgQUJHUiwgWTQ0NCwgSTQyMCwgWVYxMiwgWTQyQiwgWTQxQiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgQVlVViwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFLCBSR0IxNiwgQkdSMTYgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKXsgMkQsIHJlY3RhbmdsZSwgZXh0ZXJuYWwtb2VzIH07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgUkdCLCBSR0J4LCBCR1IsIEJHUngsIEJHUkEsIHhSR0IsIHhCR1IsIEFSR0IsIEFCR1IsIFk0NDQsIEk0MjAsIFlWMTIsIFk0MkIsIFk0MUIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIEFZVVYsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSwgUkdCMTYsIEJHUjE2IH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZyl7IDJELCByZWN0YW5nbGUsIGV4dGVybmFsLW9lcyB9PC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtMzUsMTkgKzU2LDIwIEBACiAgICAgICA8bG9uZ25hbWU+T3BlbkdMIGNvbG9yIHNjYWxlPC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0L1ZpZGVvPC9jbGFzcz4KICAgICAgIDxkZXNjcmlwdGlvbj5Db2xvcnNwYWNlIGNvbnZlcnRlciBhbmQgdmlkZW8gc2NhbGVyPC9kZXNjcmlwdGlvbj4KLSAgICAgIDxhdXRob3I+SnVsaWVuIElzb3JjZSAmbHQ7anVsaWVuLmlzb3JjZUBnbWFpbC5jb20mZ3Q7PC9hdXRob3I+CisgICAgICA8YXV0aG9yPkp1bGllbiBJc29yY2UgJmx0O2p1bGllbi5pc29yY2VAZ21haWwuY29tJmd0OworTWF0dGhldyBXYXRlcnMgJmx0O21hdHRoZXdAY2VudHJpY3VsYXIuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtNjIsMTMgKzg0LDEzIEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CkBAIC04MywxMyArMTA1LDEzIEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CkBAIC0xMDQsNyArMTI2LDcgQEAKICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSk8L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KTsgdmlkZW8veC1yYXc8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgpAQCAtMTI1LDQxMiArMTQ3LDQxMiBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX2JsdXI8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5CbHVyIHdpdGggOXg5IHNlcGFyYWJsZSBjb252b2x1dGlvbiBFZmZlY3Q8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0czwvZGVzY3JpcHRpb24+CisgICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gQmx1ciB3aXRoIDl4OSBzZXBhcmFibGUgY29udm9sdXRpb24gRWZmZWN0PC9kZXNjcmlwdGlvbj4KICAgICAgIDxhdXRob3I+RmlsaXBwbyBBcmdpb2xhcyAmbHQ7ZmlsaXBwby5hcmdpb2xhc0BnbWFpbC5jb20mZ3Q7PC9hdXRob3I+CiAgICAgICA8cGFkcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CiAgICAgPGVsZW1lbnQ+CiAgICAgICA8bmFtZT5nbGVmZmVjdHNfYnVsZ2U8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5CdWxnZSBFZmZlY3Q8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0czwvZGVzY3JpcHRpb24+CisgICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gQnVsZ2UgRWZmZWN0PC9kZXNjcmlwdGlvbj4KICAgICAgIDxhdXRob3I+RmlsaXBwbyBBcmdpb2xhcyAmbHQ7ZmlsaXBwby5hcmdpb2xhc0BnbWFpbC5jb20mZ3Q7PC9hdXRob3I+CiAgICAgICA8cGFkcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CiAgICAgPGVsZW1lbnQ+CiAgICAgICA8bmFtZT5nbGVmZmVjdHNfZmlzaGV5ZTwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5Hc3RyZWFtZXIgT3BlbkdMIEVmZmVjdHM8L2xvbmduYW1lPgorICAgICAgPGxvbmduYW1lPkZpc2hFeWUgRWZmZWN0PC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0L1ZpZGVvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHM8L2Rlc2NyaXB0aW9uPgorICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0cyAtIEZpc2hFeWUgRWZmZWN0PC9kZXNjcmlwdGlvbj4KICAgICAgIDxhdXRob3I+RmlsaXBwbyBBcmdpb2xhcyAmbHQ7ZmlsaXBwby5hcmdpb2xhc0BnbWFpbC5jb20mZ3Q7PC9hdXRob3I+CiAgICAgICA8cGFkcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CiAgICAgPGVsZW1lbnQ+CiAgICAgICA8bmFtZT5nbGVmZmVjdHNfZ2xvdzwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5Hc3RyZWFtZXIgT3BlbkdMIEVmZmVjdHM8L2xvbmduYW1lPgorICAgICAgPGxvbmduYW1lPkdsb3cgTGlnaHRpbmcgRWZmZWN0PC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0L1ZpZGVvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHM8L2Rlc2NyaXB0aW9uPgorICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0cyAtIEdsb3cgTGlnaHRpbmcgRWZmZWN0PC9kZXNjcmlwdGlvbj4KICAgICAgIDxhdXRob3I+RmlsaXBwbyBBcmdpb2xhcyAmbHQ7ZmlsaXBwby5hcmdpb2xhc0BnbWFpbC5jb20mZ3Q7PC9hdXRob3I+CiAgICAgICA8cGFkcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CiAgICAgPGVsZW1lbnQ+CiAgICAgICA8bmFtZT5nbGVmZmVjdHNfaGVhdDwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5Hc3RyZWFtZXIgT3BlbkdMIEVmZmVjdHM8L2xvbmduYW1lPgorICAgICAgPGxvbmduYW1lPkhlYXQgU2lnbmF0dXJlIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBIZWF0IFNpZ25hdHVyZSBFZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICAgICAgPGF1dGhvcj5GaWxpcHBvIEFyZ2lvbGFzICZsdDtmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsZWZmZWN0c19pZGVudGl0eTwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5Hc3RyZWFtZXIgT3BlbkdMIEVmZmVjdHM8L2xvbmduYW1lPgorICAgICAgPGxvbmduYW1lPkRvIG5vdGhpbmcgRWZmZWN0PC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0L1ZpZGVvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHM8L2Rlc2NyaXB0aW9uPgorICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0cyAtIERvIG5vdGhpbmcgRWZmZWN0PC9kZXNjcmlwdGlvbj4KICAgICAgIDxhdXRob3I+RmlsaXBwbyBBcmdpb2xhcyAmbHQ7ZmlsaXBwby5hcmdpb2xhc0BnbWFpbC5jb20mZ3Q7PC9hdXRob3I+CiAgICAgICA8cGFkcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CiAgICAgPGVsZW1lbnQ+CiAgICAgICA8bmFtZT5nbGVmZmVjdHNfbGFwbGFjaWFuPC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+TGFwbGFjaWFuIENvbnZvbHV0aW9uIERlbW8gRWZmZWN0PC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0L1ZpZGVvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHM8L2Rlc2NyaXB0aW9uPgorICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0cyAtIExhcGxhY2lhbiBDb252b2x1dGlvbiBEZW1vIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX2x1bWF4cHJvPC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+THVtYSBDcm9zcyBQcm9jZXNzaW5nIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBMdW1hIENyb3NzIFByb2Nlc3NpbmcgRWZmZWN0PC9kZXNjcmlwdGlvbj4KICAgICAgIDxhdXRob3I+RmlsaXBwbyBBcmdpb2xhcyAmbHQ7ZmlsaXBwby5hcmdpb2xhc0BnbWFpbC5jb20mZ3Q7PC9hdXRob3I+CiAgICAgICA8cGFkcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CiAgICAgPGVsZW1lbnQ+CiAgICAgICA8bmFtZT5nbGVmZmVjdHNfbWlycm9yPC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+TWlycm9yIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBNaXJyb3IgRWZmZWN0PC9kZXNjcmlwdGlvbj4KICAgICAgIDxhdXRob3I+RmlsaXBwbyBBcmdpb2xhcyAmbHQ7ZmlsaXBwby5hcmdpb2xhc0BnbWFpbC5jb20mZ3Q7PC9hdXRob3I+CiAgICAgICA8cGFkcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CiAgICAgPGVsZW1lbnQ+CiAgICAgICA8bmFtZT5nbGVmZmVjdHNfc2VwaWE8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5TZXBpYSBUb25pbmcgRWZmZWN0PC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0L1ZpZGVvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHM8L2Rlc2NyaXB0aW9uPgorICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0cyAtIFNlcGlhIFRvbmluZyBFZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICAgICAgPGF1dGhvcj5GaWxpcHBvIEFyZ2lvbGFzICZsdDtmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsZWZmZWN0c19zaW48L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5BbGwgR3JleSBidXQgUmVkIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBBbGwgR3JleSBidXQgUmVkIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX3NvYmVsPC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+U29iZWwgZWRnZSBkZXRlY3Rpb24gRWZmZWN0PC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0L1ZpZGVvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHM8L2Rlc2NyaXB0aW9uPgorICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0cyAtIFNvYmVsIGVkZ2UgZGV0ZWN0aW9uIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX3NxdWFyZTwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5Hc3RyZWFtZXIgT3BlbkdMIEVmZmVjdHM8L2xvbmduYW1lPgorICAgICAgPGxvbmduYW1lPlNxdWFyZSBFZmZlY3Q8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0czwvZGVzY3JpcHRpb24+CisgICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gU3F1YXJlIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX3NxdWVlemU8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5TcXVlZXplIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBTcXVlZXplIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX3N0cmV0Y2g8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5TdHJldGNoIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBTdHJldGNoIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX3R1bm5lbDwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5Hc3RyZWFtZXIgT3BlbkdMIEVmZmVjdHM8L2xvbmduYW1lPgorICAgICAgPGxvbmduYW1lPkxpZ2h0IFR1bm5lbCBFZmZlY3Q8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0czwvZGVzY3JpcHRpb24+CisgICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gTGlnaHQgVHVubmVsIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX3R3aXJsPC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+VHdpcmwgRWZmZWN0PC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0L1ZpZGVvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHM8L2Rlc2NyaXB0aW9uPgorICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0cyAtIFR3aXJsIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX3hwcm88L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5Dcm9zcyBQcm9jZXNzaW5nIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBDcm9zcyBQcm9jZXNzaW5nIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX3hyYXk8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5HbG93aW5nIG5lZ2F0aXZlIGVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBHbG93aW5nIG5lZ2F0aXZlIGVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtNTQ1LDEzICs1NjcsMTMgQEAKICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KQEAgLTU2Niw3ICs1ODgsNyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6U3lzdGVtTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpTeXN0ZW1NZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgpAQCAtNTg3LDEzICs2MDksMTMgQEAKICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KQEAgLTYwOCwxMyArNjMwLDEzIEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CkBAIC02MjksNyArNjUxLDcgQEAKICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OlN5c3RlbU1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6U3lzdGVtTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtNjQ0LDcgKzY2Niw3IEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpeyAyRCwgZXh0ZXJuYWwtb2VzIH07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZyl7IDJELCBleHRlcm5hbC1vZXMgfTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KQEAgLTY1OSw3ICs2ODEsNyBAQAogICAgICAgICAgIDxuYW1lPnNpbmtfJXU8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPnJlcXVlc3Q8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OlN5c3RlbU1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6U3lzdGVtTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KQEAgLTcwMSwxMyArNzIzLDEzIEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CkBAIC03MTUsMjAgKzczNywyMCBAQAogICAgICAgPG5hbWU+Z2xzaGFkZXI8L25hbWU+CiAgICAgICA8bG9uZ25hbWU+T3BlbkdMIGZyYWdtZW50IHNoYWRlciBmaWx0ZXI8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3Q8L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkxvYWQgR0xTTCBmcmFnbWVudCBzaGFkZXIgZnJvbSBmaWxlPC9kZXNjcmlwdGlvbj4KLSAgICAgIDxhdXRob3I+Jmx0O2x1Yy5kZXNjaGVuYXV4QGZyZWVzdXJmLmNoJmd0OzwvYXV0aG9yPgorICAgICAgPGRlc2NyaXB0aW9uPlBlcmZvcm0gb3BlcmF0aW9ucyB3aXRoIGEgR0xTTCBzaGFkZXI8L2Rlc2NyaXB0aW9uPgorICAgICAgPGF1dGhvcj4mbHQ7bWF0dGhld0BjZW50cmljdWxhci5jb20mZ3Q7PC9hdXRob3I+CiAgICAgICA8cGFkcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CkBAIC03NDMsNyArNzY1LDcgQEAKICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OlN5c3RlbU1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6U3lzdGVtTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtNzczLDEzICs3OTUsMTMgQEAKICAgICAgICAgICA8bmFtZT5zaW5rXyV1PC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5yZXF1ZXN0PC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0IsIFJHQngsIFJHQkEsIEJHUiwgQkdSeCwgQkdSQSwgeFJHQiwgeEJHUiwgQVJHQiwgQUJHUiwgWTQ0NCwgSTQyMCwgWVYxMiwgWTQyQiwgWTQxQiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgQVlVViwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFLCBSR0IxNiwgQkdSMTYgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIFJHQiwgUkdCeCwgQkdSLCBCR1J4LCBCR1JBLCB4UkdCLCB4QkdSLCBBUkdCLCBBQkdSLCBZNDQ0LCBJNDIwLCBZVjEyLCBZNDJCLCBZNDFCLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBBWVVWLCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUsIFJHQjE2LCBCR1IxNiB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUkdCLCBSR0J4LCBSR0JBLCBCR1IsIEJHUngsIEJHUkEsIHhSR0IsIHhCR1IsIEFSR0IsIEFCR1IsIFk0NDQsIEk0MjAsIFlWMTIsIFk0MkIsIFk0MUIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIEFZVVYsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSwgUkdCMTYsIEJHUjE2IH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ7IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBSR0IsIFJHQngsIEJHUiwgQkdSeCwgQkdSQSwgeFJHQiwgeEJHUiwgQVJHQiwgQUJHUiwgWTQ0NCwgSTQyMCwgWVYxMiwgWTQyQiwgWTQxQiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgQVlVViwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFLCBSR0IxNiwgQkdSMTYgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtNzk1LDcgKzgxNyw3IEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFJHQiwgUkdCeCwgUkdCQSwgQkdSLCBCR1J4LCBCR1JBLCB4UkdCLCB4QkdSLCBBUkdCLCBBQkdSLCBZNDQ0LCBJNDIwLCBZVjEyLCBZNDJCLCBZNDFCLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBBWVVWLCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUsIFJHQjE2LCBCR1IxNiB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBSR0IsIFJHQngsIEJHUiwgQkdSeCwgQkdSQSwgeFJHQiwgeEJHUiwgQVJHQiwgQUJHUiwgWTQ0NCwgSTQyMCwgWVYxMiwgWTQyQiwgWTQxQiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgQVlVViwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFLCBSR0IxNiwgQkdSMTYgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPmxlZnQ8L25hbWU+CkBAIC04MjIsNyArODQ0LDcgQEAKICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtODM3LDcgKzg1OSw3IEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpTeXN0ZW1NZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OlN5c3RlbU1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CkBAIC04NTgsNyArODgwLDcgQEAKICAgICAgICAgICA8bmFtZT5zaW5rXyV1PC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5yZXF1ZXN0PC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpTeXN0ZW1NZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OlN5c3RlbU1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CkBAIC05MDEsMTMgKzkyMywxMyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5oMjY0LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuaDI2NC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMwYmI1ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuaDI2NC54bWwKQEAgLTAsMCArMSw1NSBAQAorPHBsdWdpbj4KKyAgPG5hbWU+b3BlbmgyNjQ8L25hbWU+CisgIDxkZXNjcmlwdGlvbj5PcGVuSDI2NCBlbmNvZGVyL2RlY29kZXIgcGx1Z2luPC9kZXNjcmlwdGlvbj4KKyAgPGZpbGVuYW1lPi4uLy4uL2V4dC9vcGVuaDI2NC8ubGlicy9saWJnc3RvcGVuaDI2NC5zbzwvZmlsZW5hbWU+CisgIDxiYXNlbmFtZT5saWJnc3RvcGVuaDI2NC5zbzwvYmFzZW5hbWU+CisgIDx2ZXJzaW9uPjEuNS4wLjE8L3ZlcnNpb24+CisgIDxsaWNlbnNlPkJTRDwvbGljZW5zZT4KKyAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KKyAgPHBhY2thZ2U+T3BlbldlYlJUQyBHU3RyZWFtZXIgcGx1Z2luczwvcGFja2FnZT4KKyAgPG9yaWdpbj5odHRwOi8vd3d3LmVyaWNzc29uLmNvbTwvb3JpZ2luPgorICA8ZWxlbWVudHM+CisgICAgPGVsZW1lbnQ+CisgICAgICA8bmFtZT5vcGVuaDI2NGRlYzwvbmFtZT4KKyAgICAgIDxsb25nbmFtZT5PcGVuSDI2NCB2aWRlbyBkZWNvZGVyPC9sb25nbmFtZT4KKyAgICAgIDxjbGFzcz5EZWNvZGVyL1ZpZGVvPC9jbGFzcz4KKyAgICAgIDxkZXNjcmlwdGlvbj5PcGVuSDI2NCB2aWRlbyBkZWNvZGVyPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxhdXRob3I+RXJpY3Nzb24gQUIsIGh0dHA6Ly93d3cuZXJpY3Nzb24uY29tPC9hdXRob3I+CisgICAgICA8cGFkcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LWgyNjQsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylieXRlLXN0cmVhbSwgYWxpZ25tZW50PShzdHJpbmcpYXUsIHByb2ZpbGU9KHN0cmluZyl7IGNvbnN0cmFpbmVkLWJhc2VsaW5lLCBiYXNlbGluZSB9PC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylJNDIwLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgIDwvcGFkcz4KKyAgICA8L2VsZW1lbnQ+CisgICAgPGVsZW1lbnQ+CisgICAgICA8bmFtZT5vcGVuaDI2NGVuYzwvbmFtZT4KKyAgICAgIDxsb25nbmFtZT5PcGVuSDI2NCB2aWRlbyBlbmNvZGVyPC9sb25nbmFtZT4KKyAgICAgIDxjbGFzcz5FbmNvZGVyL1ZpZGVvPC9jbGFzcz4KKyAgICAgIDxkZXNjcmlwdGlvbj5PcGVuSDI2NCB2aWRlbyBlbmNvZGVyPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxhdXRob3I+RXJpY3Nzb24gQUIsIGh0dHA6Ly93d3cuZXJpY3Nzb24uY29tPC9hdXRob3I+CisgICAgICA8cGFkcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpSTQyMCwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtaDI2NCwgc3RyZWFtLWZvcm1hdD0oc3RyaW5nKWF2YywgYWxpZ25tZW50PShzdHJpbmcpYXUsIHByb2ZpbGU9KHN0cmluZyliYXNlbGluZTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgPC9wYWRzPgorICAgIDwvZWxlbWVudD4KKyAgPC9lbGVtZW50cz4KKzwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuanBlZy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmpwZWcueG1sCmluZGV4IDhlMTg0NzIuLjk2NTIxYjUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuanBlZy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5qcGVnLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPk9wZW5KUEVHLWJhc2VkIEpQRUcyMDAwIGltYWdlIGRlY29kZXIvZW5jb2RlcjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvb3BlbmpwZWcvLmxpYnMvbGliZ3N0b3BlbmpwZWcuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0b3BlbmpwZWcuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWYxOTc3Li4wMDAwMDAwCi0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcHVzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi08cGx1Z2luPgotICA8bmFtZT5vcHVzPC9uYW1lPgotICA8ZGVzY3JpcHRpb24+T1BVUyBwbHVnaW4gbGlicmFyeTwvZGVzY3JpcHRpb24+Ci0gIDxmaWxlbmFtZT4uLi8uLi9leHQvb3B1cy8ubGlicy9saWJnc3RvcHVzLnNvPC9maWxlbmFtZT4KLSAgPGJhc2VuYW1lPmxpYmdzdG9wdXMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KLSAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KLSAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KLSAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KLSAgPG9yaWdpbj5Vbmtub3duIHBhY2thZ2Ugb3JpZ2luPC9vcmlnaW4+Ci0gIDxlbGVtZW50cz4KLSAgICA8ZWxlbWVudD4KLSAgICAgIDxuYW1lPm9wdXNkZWM8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+T3B1cyBhdWRpbyBkZWNvZGVyPC9sb25nbmFtZT4KLSAgICAgIDxjbGFzcz5Db2RlYy9EZWNvZGVyL0F1ZGlvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5kZWNvZGUgb3B1cyBzdHJlYW1zIHRvIGF1ZGlvPC9kZXNjcmlwdGlvbj4KLSAgICAgIDxhdXRob3I+VmluY2VudCBQZW5xdWVyYyZhcG9zO2ggJmx0O3ZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51ayZndDs8L2F1dGhvcj4KLSAgICAgIDxwYWRzPgotICAgICAgICA8Y2Fwcz4KLSAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgotICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgotICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL3gtb3B1czwvZGV0YWlscz4KLSAgICAgICAgPC9jYXBzPgotICAgICAgICA8Y2Fwcz4KLSAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+Ci0gICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KLSAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzE2TEUsIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkLCByYXRlPShpbnQpeyA0ODAwMCwgMjQwMDAsIDE2MDAwLCAxMjAwMCwgODAwMCB9LCBjaGFubmVscz0oaW50KVsgMSwgOCBdPC9kZXRhaWxzPgotICAgICAgICA8L2NhcHM+Ci0gICAgICA8L3BhZHM+Ci0gICAgPC9lbGVtZW50PgotICAgIDxlbGVtZW50PgotICAgICAgPG5hbWU+b3B1c2VuYzwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5PcHVzIGF1ZGlvIGVuY29kZXI8L2xvbmduYW1lPgotICAgICAgPGNsYXNzPkNvZGVjL0VuY29kZXIvQXVkaW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkVuY29kZXMgYXVkaW8gaW4gT3B1cyBmb3JtYXQ8L2Rlc2NyaXB0aW9uPgotICAgICAgPGF1dGhvcj5WaW5jZW50IFBlbnF1ZXJjJmFwb3M7aCAmbHQ7dmluY2VudC5wZW5xdWVyY2hAY29sbGFib3JhLmNvLnVrJmd0OzwvYXV0aG9yPgotICAgICAgPHBhZHM+Ci0gICAgICAgIDxjYXBzPgotICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+Ci0gICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+Ci0gICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KTQ4MDAwLCBjaGFubmVscz0oaW50KVsgMSwgMiBdOyBhdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzE2TEUsIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkLCByYXRlPShpbnQpeyA4MDAwLCAxMjAwMCwgMTYwMDAsIDI0MDAwIH0sIGNoYW5uZWxzPShpbnQpWyAxLCAyIF08L2RldGFpbHM+Ci0gICAgICAgIDwvY2Fwcz4KLSAgICAgICAgPGNhcHM+Ci0gICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgotICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+Ci0gICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1vcHVzPC9kZXRhaWxzPgotICAgICAgICA8L2NhcHM+Ci0gICAgICA8L3BhZHM+Ci0gICAgPC9lbGVtZW50PgotICAgIDxlbGVtZW50PgotICAgICAgPG5hbWU+b3B1c3BhcnNlPC9uYW1lPgotICAgICAgPGxvbmduYW1lPk9wdXMgYXVkaW8gcGFyc2VyPC9sb25nbmFtZT4KLSAgICAgIDxjbGFzcz5Db2RlYy9QYXJzZXIvQXVkaW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPnBhcnNlcyBvcHVzIGF1ZGlvIHN0cmVhbXM8L2Rlc2NyaXB0aW9uPgotICAgICAgPGF1dGhvcj5WaW5jZW50IFBlbnF1ZXJjJmFwb3M7aCAmbHQ7dmluY2VudC5wZW5xdWVyY2hAY29sbGFib3JhLmNvLnVrJmd0OzwvYXV0aG9yPgotICAgICAgPHBhZHM+Ci0gICAgICAgIDxjYXBzPgotICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+Ci0gICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+Ci0gICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1vcHVzPC9kZXRhaWxzPgotICAgICAgICA8L2NhcHM+Ci0gICAgICAgIDxjYXBzPgotICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KLSAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgotICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL3gtb3B1cywgZnJhbWVkPShib29sZWFuKXRydWU8L2RldGFpbHM+Ci0gICAgICAgIDwvY2Fwcz4KLSAgICAgIDwvcGFkcz4KLSAgICA8L2VsZW1lbnQ+Ci0gICAgPGVsZW1lbnQ+Ci0gICAgICA8bmFtZT5ydHBvcHVzZGVwYXk8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+UlRQIE9wdXMgcGFja2V0IGRlcGF5bG9hZGVyPC9sb25nbmFtZT4KLSAgICAgIDxjbGFzcz5Db2RlYy9EZXBheWxvYWRlci9OZXR3b3JrL1JUUDwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+RXh0cmFjdHMgT3B1cyBhdWRpbyBmcm9tIFJUUCBwYWNrZXRzPC9kZXNjcmlwdGlvbj4KLSAgICAgIDxhdXRob3I+RGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhICZsdDtkYW5pbG8uY2VzYXJAY29sbGFib3JhLmNvLnVrJmd0OzwvYXV0aG9yPgotICAgICAgPHBhZHM+Ci0gICAgICAgIDxjYXBzPgotICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+Ci0gICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+Ci0gICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXBwbGljYXRpb24veC1ydHAsIG1lZGlhPShzdHJpbmcpYXVkaW8sIHBheWxvYWQ9KGludClbIDk2LCAxMjcgXSwgY2xvY2stcmF0ZT0oaW50KTQ4MDAwLCBlbmNvZGluZy1uYW1lPShzdHJpbmcpeyBPUFVTLCBYLUdTVC1PUFVTLURSQUZULVNQSVRUS0EtMDAgfTwvZGV0YWlscz4KLSAgICAgICAgPC9jYXBzPgotICAgICAgICA8Y2Fwcz4KLSAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+Ci0gICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KLSAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LW9wdXMsIG11bHRpc3RyZWFtPShib29sZWFuKWZhbHNlPC9kZXRhaWxzPgotICAgICAgICA8L2NhcHM+Ci0gICAgICA8L3BhZHM+Ci0gICAgPC9lbGVtZW50PgotICAgIDxlbGVtZW50PgotICAgICAgPG5hbWU+cnRwb3B1c3BheTwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5SVFAgT3B1cyBwYXlsb2FkZXI8L2xvbmduYW1lPgotICAgICAgPGNsYXNzPkNvZGVjL1BheWxvYWRlci9OZXR3b3JrL1JUUDwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+UHV0cyBPcHVzIGF1ZGlvIGluIFJUUCBwYWNrZXRzPC9kZXNjcmlwdGlvbj4KLSAgICAgIDxhdXRob3I+RGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhICZsdDtkYW5pbG8uY2VzYXJAY29sbGFib3JhLmNvLnVrJmd0OzwvYXV0aG9yPgotICAgICAgPHBhZHM+Ci0gICAgICAgIDxjYXBzPgotICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+Ci0gICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+Ci0gICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1vcHVzLCBtdWx0aXN0cmVhbT0oYm9vbGVhbilmYWxzZTwvZGV0YWlscz4KLSAgICAgICAgPC9jYXBzPgotICAgICAgICA8Y2Fwcz4KLSAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+Ci0gICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KLSAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz5hcHBsaWNhdGlvbi94LXJ0cCwgbWVkaWE9KHN0cmluZylhdWRpbywgcGF5bG9hZD0oaW50KVsgOTYsIDEyNyBdLCBjbG9jay1yYXRlPShpbnQpNDgwMDAsIGVuY29kaW5nLXBhcmFtcz0oc3RyaW5nKTIsIGVuY29kaW5nLW5hbWU9KHN0cmluZyl7IE9QVVMsIFgtR1NULU9QVVMtRFJBRlQtU1BJVFRLQS0wMCB9PC9kZXRhaWxzPgotICAgICAgICA8L2NhcHM+Ci0gICAgICA8L3BhZHM+Ci0gICAgPC9lbGVtZW50PgotICA8L2VsZW1lbnRzPgotPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXNwYXJzZS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3B1c3BhcnNlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTFmMzAxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXNwYXJzZS54bWwKQEAgLTAsMCArMSwzNCBAQAorPHBsdWdpbj4KKyAgPG5hbWU+b3B1c3BhcnNlPC9uYW1lPgorICA8ZGVzY3JpcHRpb24+T1BVUyBwYXJzZSBwbHVnaW48L2Rlc2NyaXB0aW9uPgorICA8ZmlsZW5hbWU+Li4vLi4vZXh0L29wdXMvLmxpYnMvbGliZ3N0b3B1c3BhcnNlLnNvPC9maWxlbmFtZT4KKyAgPGJhc2VuYW1lPmxpYmdzdG9wdXNwYXJzZS5zbzwvYmFzZW5hbWU+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KKyAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KKyAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KKyAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KKyAgPG9yaWdpbj5Vbmtub3duIHBhY2thZ2Ugb3JpZ2luPC9vcmlnaW4+CisgIDxlbGVtZW50cz4KKyAgICA8ZWxlbWVudD4KKyAgICAgIDxuYW1lPm9wdXNwYXJzZTwvbmFtZT4KKyAgICAgIDxsb25nbmFtZT5PcHVzIGF1ZGlvIHBhcnNlcjwvbG9uZ25hbWU+CisgICAgICA8Y2xhc3M+Q29kZWMvUGFyc2VyL0F1ZGlvPC9jbGFzcz4KKyAgICAgIDxkZXNjcmlwdGlvbj5wYXJzZXMgb3B1cyBhdWRpbyBzdHJlYW1zPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxhdXRob3I+VmluY2VudCBQZW5xdWVyYyZhcG9zO2ggJmx0O3ZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51ayZndDs8L2F1dGhvcj4KKyAgICAgIDxwYWRzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL3gtb3B1czwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LW9wdXMsIGZyYW1lZD0oYm9vbGVhbil0cnVlPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICA8L3BhZHM+CisgICAgPC9lbGVtZW50PgorICA8L2VsZW1lbnRzPgorPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBjYXBwYXJzZS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcGNhcHBhcnNlLnhtbAppbmRleCAzMWI1NzA0Li5iZTEzM2YzIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcGNhcHBhcnNlLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcGNhcHBhcnNlLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkVsZW1lbnQgcGFyc2luZyByYXcgcGNhcCBzdHJlYW1zPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9wY2FwcGFyc2UvLmxpYnMvbGliZ3N0cGNhcHBhcnNlLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHBjYXBwYXJzZS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lcjwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1wbm0ueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBubS54bWwKaW5kZXggY2E1YTI3My4uM2U0Y2ZmNCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBubS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBubS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5QTk0gcGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9wbm0vLmxpYnMvbGliZ3N0cG5tLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHBubS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcXQueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXF0LnhtbAppbmRleCAzNTg2NmM1Li5lN2UxNjA4IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcXQueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1xdC54bWwKQEAgLTEsOSArMSw5IEBACiA8cGx1Z2luPgogICA8bmFtZT5xdDwvbmFtZT4KICAgPGRlc2NyaXB0aW9uPlF0IHNpbms8L2Rlc2NyaXB0aW9uPgotICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3F0Ly5saWJzL2xpYnF0c2luay5zbzwvZmlsZW5hbWU+Ci0gIDxiYXNlbmFtZT5saWJxdHNpbmsuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPGZpbGVuYW1lPi4uLy4uL2V4dC9xdC8ubGlicy9saWJnc3RxdHNpbmsuc288L2ZpbGVuYW1lPgorICA8YmFzZW5hbWU+bGliZ3N0cXRzaW5rLnNvPC9iYXNlbmFtZT4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpAQCAtMjAsNyArMjAsNyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yYXdwYXJzZS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmF3cGFyc2UueG1sCmluZGV4IDBkMWJkYTguLjg0MjA0MjMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yYXdwYXJzZS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJhd3BhcnNlLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlBhcnNlcyBieXRlIHN0cmVhbXMgaW50byByYXcgZnJhbWVzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9yYXdwYXJzZS8ubGlicy9saWJnc3RyYXdwYXJzZS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RyYXdwYXJzZS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVtb3Zlc2lsZW5jZS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVtb3Zlc2lsZW5jZS54bWwKaW5kZXggOWU4ODI4ZS4uMzJmMjZkMyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlbW92ZXNpbGVuY2UueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yZW1vdmVzaWxlbmNlLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlJlbW92ZXMgc2lsZW5jZSBmcm9tIGFuIGF1ZGlvIHN0cmVhbTwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvcmVtb3Zlc2lsZW5jZS8ubGlicy9saWJnc3RyZW1vdmVzaWxlbmNlLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHJlbW92ZXNpbGVuY2Uuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlc2luZHZkLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yZXNpbmR2ZC54bWwKaW5kZXggNTdhOTg5NS4uYWU0YWFiZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlc2luZHZkLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVzaW5kdmQueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+UmVzaW4gRFZEIHBsYXliYWNrIGVsZW1lbnRzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9yZXNpbmR2ZC8ubGlicy9saWJnc3RyZXNpbmR2ZC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RyZXNpbmR2ZC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJmYnNyYy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmZic3JjLnhtbAppbmRleCBiNTMxNDg0Li5jMTIxNTY1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmZic3JjLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmZic3JjLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkNvbm5lY3RzIHRvIGEgVk5DIHNlcnZlciBhbmQgZGVjb2RlcyBSRkIgc3RyZWFtPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9saWJyZmIvLmxpYnMvbGliZ3N0cmZic3JjLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHJmYnNyYy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnN2Zy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnN2Zy54bWwKaW5kZXggNzNmZGIyOC4uYmUzMGVjZSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJzdmcueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yc3ZnLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlJTVkcgcGx1Z2luIGxpYnJhcnk8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3JzdmcvLmxpYnMvbGliZ3N0cnN2Zy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3Ryc3ZnLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1ydG1wLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1ydG1wLnhtbAppbmRleCBkZTUwOTdlLi40NDY5NzdiIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnRtcC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJ0bXAueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+UlRNUCBzb3VyY2UgYW5kIHNpbms8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3J0bXAvLmxpYnMvbGliZ3N0cnRtcC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RydG1wLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1ydHBiYWQueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJ0cGJhZC54bWwKaW5kZXggYWFkYzU1Ni4uYjRhMWI3ZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJ0cGJhZC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJ0cGJhZC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5SZWFsLXRpbWUgcHJvdG9jb2wgcGx1Z2luczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvcnRwLy5saWJzL2xpYmdzdHJ0cGJhZC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RydHBiYWQuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS42LjA8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnRwb252aWYueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJ0cG9udmlmLnhtbAppbmRleCA0ZjA5NzZjLi43NGZlNzYyIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnRwb252aWYueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1ydHBvbnZpZi54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5PTlZJRiBTdHJlYW1pbmcgZmVhdHVyZXM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L29udmlmLy5saWJzL2xpYmdzdHJ0cG9udmlmLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHJ0cG9udmlmLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+dW5rbm93bjwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zYmMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNiYy54bWwKaW5kZXggNjMxZTBjZC4uYzU1Y2VjOCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNiYy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNiYy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5TQkMgYmx1ZXRvb3RoIGF1ZGlvIHN1cHBvcnQ8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3NiYy8ubGlicy9saWJnc3RzYmMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0c2JjLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zY2hyby54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2Nocm8ueG1sCmluZGV4IDFlMTRlNGQuLjk4M2I3NGUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zY2hyby54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNjaHJvLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlNjaHJvZWRpbmdlciBwbHVnaW48L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3NjaHJvZWRpbmdlci8ubGlicy9saWJnc3RzY2hyby5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RzY2hyby5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2RwLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zZHAueG1sCmluZGV4IGJhZmU2MWQuLjFjMjc2MTQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zZHAueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zZHAueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Y29uZmlndXJlIHN0cmVhbWluZyBzZXNzaW9ucyB1c2luZyBTRFA8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L3NkcC8ubGlicy9saWJnc3RzZHBlbGVtLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHNkcGVsZW0uc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNlZ21lbnRjbGlwLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zZWdtZW50Y2xpcC54bWwKaW5kZXggZGNiMmI1YS4uMmRjZThmMyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNlZ21lbnRjbGlwLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2VnbWVudGNsaXAueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+U2VnbWVudCBjbGlwIGVsZW1lbnRzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9zZWdtZW50Y2xpcC8ubGlicy9saWJnc3RzZWdtZW50Y2xpcC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RzZWdtZW50Y2xpcC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2htLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zaG0ueG1sCmluZGV4IDAwYTVlYzkuLmJjMjdiOTEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zaG0ueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zaG0ueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+c2hhcmVkIG1lbW9yeSBzaW5rIHNvdXJjZTwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9zeXMvc2htLy5saWJzL2xpYmdzdHNobS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RzaG0uc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNtb290aC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc21vb3RoLnhtbAppbmRleCBiYjljMGE5Li5mYTkwNDljIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc21vb3RoLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc21vb3RoLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkFwcGx5IGEgc21vb3RoIGZpbHRlciB0byBhbiBpbWFnZTwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3Qvc21vb3RoLy5saWJzL2xpYmdzdHNtb290aC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RzbW9vdGguc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNtb290aHN0cmVhbWluZy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc21vb3Roc3RyZWFtaW5nLnhtbAppbmRleCBlMWQ5ODAzLi4yODQ4ZjJiIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc21vb3Roc3RyZWFtaW5nLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc21vb3Roc3RyZWFtaW5nLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPk1pY3Jvc29mdCZhcG9zO3MgU21vb3RoIFN0cmVhbWluZyBmb3JtYXQgc3VwcG9ydCA8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3Ntb290aHN0cmVhbWluZy8ubGlicy9saWJnc3RzbW9vdGhzdHJlYW1pbmcuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0c21vb3Roc3RyZWFtaW5nLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zbmRmaWxlLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zbmRmaWxlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzFhZGFjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNuZGZpbGUueG1sCkBAIC0wLDAgKzEsMzQgQEAKKzxwbHVnaW4+CisgIDxuYW1lPnNuZGZpbGU8L25hbWU+CisgIDxkZXNjcmlwdGlvbj51c2UgbGlic25kZmlsZSB0byByZWFkIGFuZCB3cml0ZSB2YXJpb3VzIGF1ZGlvIGZvcm1hdHM8L2Rlc2NyaXB0aW9uPgorICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3NuZGZpbGUvLmxpYnMvbGliZ3N0c25kZmlsZS5zbzwvZmlsZW5hbWU+CisgIDxiYXNlbmFtZT5saWJnc3RzbmRmaWxlLnNvPC9iYXNlbmFtZT4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgorICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgorICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgorICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgorICA8b3JpZ2luPlVua25vd24gcGFja2FnZSBvcmlnaW48L29yaWdpbj4KKyAgPGVsZW1lbnRzPgorICAgIDxlbGVtZW50PgorICAgICAgPG5hbWU+c2ZkZWM8L25hbWU+CisgICAgICA8bG9uZ25hbWU+U25kZmlsZSBkZWNvZGVyPC9sb25nbmFtZT4KKyAgICAgIDxjbGFzcz5EZWNvZGVyL0F1ZGlvPC9jbGFzcz4KKyAgICAgIDxkZXNjcmlwdGlvbj5SZWFkIGF1ZGlvIHN0cmVhbXMgdXNpbmcgbGlic25kZmlsZTwvZGVzY3JpcHRpb24+CisgICAgICA8YXV0aG9yPlN0ZWZhbiBTYXVlciAmbHQ7ZW5zb25pY0B1c2VyLnNmLm5ldCZndDs8L2F1dGhvcj4KKyAgICAgIDxwYWRzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL3gtaXJjYW07IGF1ZGlvL3gtbmlzdDsgYXVkaW8veC1wYXJpczsgYXVkaW8veC1yZjY0OyBhdWRpby94LXNkczsgYXVkaW8veC1zdng7IGF1ZGlvL3gtdm9jOyBhdWRpby94LXc2NDsgYXVkaW8veC14aTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBGMzJMRSwgUzMyTEUsIFMxNkxFIH0sIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkLCByYXRlPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF08L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgIDwvcGFkcz4KKyAgICA8L2VsZW1lbnQ+CisgIDwvZWxlbWVudHM+Cis8L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc291bmR0b3VjaC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc291bmR0b3VjaC54bWwKaW5kZXggY2Q5ODM1NS4uNjg3ZTJjMCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNvdW5kdG91Y2gueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zb3VuZHRvdWNoLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkF1ZGlvIFBpdGNoIENvbnRyb2xsZXIgJmFtcDsgQlBNIERldGVjdGlvbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvc291bmR0b3VjaC8ubGlicy9saWJnc3Rzb3VuZHRvdWNoLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHNvdW5kdG91Y2guc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNwYW5kc3AueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNwYW5kc3AueG1sCmluZGV4IDgwMjE0ZTIuLjNmY2QxZjMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGFuZHNwLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3BhbmRzcC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5saWJzcGFuZHNwIHBsdWdpbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvc3BhbmRzcC8ubGlicy9saWJnc3RzcGFuZHNwLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHNwYW5kc3Auc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpAQCAtNTEsNSArNTEsMjAgQEAKICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KKyAgICA8ZWxlbWVudD4KKyAgICAgIDxuYW1lPnRvbmVnZW5lcmF0ZXNyYzwvbmFtZT4KKyAgICAgIDxsb25nbmFtZT5UZWxlcGhvbnkgVG9uZSAgR2VuZXJhdG9yIHNvdXJjZTwvbG9uZ25hbWU+CisgICAgICA8Y2xhc3M+U291cmNlL0F1ZGlvPC9jbGFzcz4KKyAgICAgIDxkZXNjcmlwdGlvbj5DcmVhdGVzIHRlbGVwaG9ueSBzaWduYWxzIG9mIGdpdmVuIGZyZXF1ZW5jeSwgdm9sdW1lLCBjYWRlbmNlPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxhdXRob3I+SXNrcmF0ZWwgJmx0O3d3dy5pc2tyYXRlbC5jb20mZ3Q7PC9hdXRob3I+CisgICAgICA8cGFkcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KTgwMDAsIGNoYW5uZWxzPShpbnQpMTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgPC9wYWRzPgorICAgIDwvZWxlbWVudD4KICAgPC9lbGVtZW50cz4KIDwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGVlZC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3BlZWQueG1sCmluZGV4IGI5ZjgzNWMuLmRhODNjNTAgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGVlZC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNwZWVkLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlNldCBzcGVlZC9waXRjaCBvbiBhdWRpby9yYXcgc3RyZWFtcyAocmVzYW1wbGVyKTwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3Qvc3BlZWQvLmxpYnMvbGliZ3N0c3BlZWQuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0c3BlZWQuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNydHAueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNydHAueG1sCmluZGV4IDQ3ODU5N2EuLjEzNDM2ODcgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcnRwLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3J0cC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5HU3RyZWFtZXIgU1JUUDwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvc3J0cC8ubGlicy9saWJnc3RzcnRwLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHNydHAuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXI8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3RlcmVvLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zdGVyZW8ueG1sCmluZGV4IGM2ZmFjZWIuLmFhNDU2YmEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zdGVyZW8ueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zdGVyZW8ueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+TXVjayB3aXRoIHRoZSBzdGVyZW8gc2lnbmFsLCBlbmhhbmNlIGl0JmFwb3M7cyAmYXBvcztzdGVyZW8tbmVzcyZhcG9zOzwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3Qvc3RlcmVvLy5saWJzL2xpYmdzdHN0ZXJlby5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RzdGVyZW8uc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXN1YmVuYy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3ViZW5jLnhtbAppbmRleCA4ZTAxZDM3Li5lNjllOTViIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3ViZW5jLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3ViZW5jLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPnN1YnRpdGxlIGVuY29kZXJzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9zdWJlbmMvLmxpYnMvbGliZ3N0c3ViZW5jLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHN1YmVuYy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdGVsZXRleHQueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXRlbGV0ZXh0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjYxYTRkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXRlbGV0ZXh0LnhtbApAQCAtMCwwICsxLDM0IEBACis8cGx1Z2luPgorICA8bmFtZT50ZWxldGV4dDwvbmFtZT4KKyAgPGRlc2NyaXB0aW9uPlRlbGV0ZXh0IHBsdWdpbjwvZGVzY3JpcHRpb24+CisgIDxmaWxlbmFtZT4uLi8uLi9leHQvdGVsZXRleHRkZWMvLmxpYnMvbGliZ3N0dGVsZXRleHRkZWMuc288L2ZpbGVuYW1lPgorICA8YmFzZW5hbWU+bGliZ3N0dGVsZXRleHRkZWMuc288L2Jhc2VuYW1lPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CisgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CisgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CisgIDxwYWNrYWdlPkdTdHJlYW1lcjwvcGFja2FnZT4KKyAgPG9yaWdpbj5odHRwOi8vZ3N0cmVhbWVyLm5ldC88L29yaWdpbj4KKyAgPGVsZW1lbnRzPgorICAgIDxlbGVtZW50PgorICAgICAgPG5hbWU+dGVsZXRleHRkZWM8L25hbWU+CisgICAgICA8bG9uZ25hbWU+VGVsZXRleHQgZGVjb2RlcjwvbG9uZ25hbWU+CisgICAgICA8Y2xhc3M+RGVjb2RlcjwvY2xhc3M+CisgICAgICA8ZGVzY3JpcHRpb24+RGVjb2RlIGEgcmF3IFZCSSBzdHJlYW0gY29udGFpbmluZyB0ZWxldGV4dCBpbmZvcm1hdGlvbiB0byBSR0JBIGFuZCB0ZXh0PC9kZXNjcmlwdGlvbj4KKyAgICAgIDxhdXRob3I+U2ViYXN0aWFuIFDDtmxzdGVybCAmbHQ7c2VicEBrLWQtdy5vcmcmZ3Q7LCBBbmRvbmkgTW9yYWxlcyBBbGFzdHJ1ZXkgJmx0O3lsYXR1eWFAZ21haWwuY29tJmd0OzwvYXV0aG9yPgorICAgICAgPHBhZHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+YXBwbGljYXRpb24veC10ZWxldGV4dDwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB0ZXh0L3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IHV0Zi04LCBwYW5nby1tYXJrdXAgfTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgPC9wYWRzPgorICAgIDwvZWxlbWVudD4KKyAgPC9lbGVtZW50cz4KKzwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi11dmNoMjY0LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi11dmNoMjY0LnhtbAppbmRleCAyODBlNDk4Li5mMWMwMTBjIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdXZjaDI2NC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXV2Y2gyNjQueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+VVZDIGNvbXBsaWFudCBIMjY0IGVuY29kaW5nIGNhbWVyYXMgcGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL3N5cy91dmNoMjY0Ly5saWJzL2xpYmdzdHV2Y2gyNjQuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0dXZjaDI2NC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmNkc3JjLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12Y2RzcmMueG1sCmluZGV4IDAyMjI0MzYuLjg4MDcwYjMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12Y2RzcmMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12Y2RzcmMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+QXN5bmNocm9ub3VzIHJlYWQgZnJvbSBWQ0QgZGlzazwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9zeXMvdmNkLy5saWJzL2xpYmdzdHZjZHNyYy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3R2Y2RzcmMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZpZGVvZmlsdGVyc2JhZC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9maWx0ZXJzYmFkLnhtbAppbmRleCA4MDE5NmYzLi4zZDM0ZDAxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9maWx0ZXJzYmFkLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9maWx0ZXJzYmFkLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlZpZGVvIGZpbHRlcnMgaW4gZ3N0LXBsdWdpbnMtYmFkPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC92aWRlb2ZpbHRlcnMvLmxpYnMvbGliZ3N0dmlkZW9maWx0ZXJzYmFkLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHZpZGVvZmlsdGVyc2JhZC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnM8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9mcmFtZV9hdWRpb2xldmVsLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1OTYwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9mcmFtZV9hdWRpb2xldmVsLnhtbApAQCAtMCwwICsxLDQ2IEBACis8cGx1Z2luPgorICA8bmFtZT52aWRlb2ZyYW1lX2F1ZGlvbGV2ZWw8L25hbWU+CisgIDxkZXNjcmlwdGlvbj5WaWRlbyBmcmFtZS1zeW5jaHJvbml6ZWQgYXVkaW8gbGV2ZWw8L2Rlc2NyaXB0aW9uPgorICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC8ubGlicy9saWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwuc288L2ZpbGVuYW1lPgorICA8YmFzZW5hbWU+bGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsLnNvPC9iYXNlbmFtZT4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgorICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgorICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgorICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgorICA8b3JpZ2luPlVua25vd24gcGFja2FnZSBvcmlnaW48L29yaWdpbj4KKyAgPGVsZW1lbnRzPgorICAgIDxlbGVtZW50PgorICAgICAgPG5hbWU+dmlkZW9mcmFtZS1hdWRpb2xldmVsPC9uYW1lPgorICAgICAgPGxvbmduYW1lPlZpZGVvLWZyYW1lIGF1ZGlvIGxldmVsPC9sb25nbmFtZT4KKyAgICAgIDxjbGFzcz5GaWx0ZXIvQW5hbHl6ZXIvQXVkaW88L2NsYXNzPgorICAgICAgPGRlc2NyaXB0aW9uPlN5bmNocm9uaXplZCBhdWRpby92aWRlbyBSTVMgTGV2ZWwgbWVzc2VuZ2VyIGZvciBhdWRpby9yYXc8L2Rlc2NyaXB0aW9uPgorICAgICAgPGF1dGhvcj5WaXZpYSBOaWtvbGFpZG91ICZsdDt2aXZpYUB0b29sc29uYWlyLmNvbSZndDs8L2F1dGhvcj4KKyAgICAgIDxwYWRzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5hc2luazwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBTOCwgUzE2TEUsIFMzMkxFLCBGMzJMRSwgRjY0TEUgfSwgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnZzaW5rPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3PC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPmFzcmM8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBTOCwgUzE2TEUsIFMzMkxFLCBGMzJMRSwgRjY0TEUgfSwgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnZzcmM8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdzwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgPC9wYWRzPgorICAgIDwvZWxlbWVudD4KKyAgPC9lbGVtZW50cz4KKzwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb3BhcnNlcnNiYWQueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZpZGVvcGFyc2Vyc2JhZC54bWwKaW5kZXggODE3NzM1YS4uYTY2ODhjNCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZpZGVvcGFyc2Vyc2JhZC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZpZGVvcGFyc2Vyc2JhZC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj52aWRlb3BhcnNlcnM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L3ZpZGVvcGFyc2Vycy8ubGlicy9saWJnc3R2aWRlb3BhcnNlcnNiYWQuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0dmlkZW9wYXJzZXJzYmFkLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb3NpZ25hbC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9zaWduYWwueG1sCmluZGV4IGM1OThkZGEuLjY5Njc2ODMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb3NpZ25hbC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZpZGVvc2lnbmFsLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlZhcmlvdXMgdmlkZW8gc2lnbmFsIGFuYWx5c2VyczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvdmlkZW9zaWduYWwvLmxpYnMvbGliZ3N0dmlkZW9zaWduYWwuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0dmlkZW9zaWduYWwuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZtbmMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZtbmMueG1sCmluZGV4IDE0YmJmZDMuLjVjYWM2ODQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12bW5jLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdm1uYy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5WbVdhcmUgVmlkZW8gQ29kZWMgcGx1Z2luczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3Qvdm1uYy8ubGlicy9saWJnc3R2bW5jLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHZtbmMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZvYWFjZW5jLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FhY2VuYy54bWwKaW5kZXggYTc3YTBjMS4uMDJkNGQ5OCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZvYWFjZW5jLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdm9hYWNlbmMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+QUFDIGF1ZGlvIGVuY29kZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3ZvYWFjZW5jLy5saWJzL2xpYmdzdHZvYWFjZW5jLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHZvYWFjZW5jLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FtcndiZW5jLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FtcndiZW5jLnhtbAppbmRleCBlODMxMjQ0Li4zNzdiZTA1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdm9hbXJ3YmVuYy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZvYW1yd2JlbmMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+QWRhcHRpdmUgTXVsdGktUmF0ZSBXaWRlLUJhbmQgRW5jb2RlcjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvdm9hbXJ3YmVuYy8ubGlicy9saWJnc3R2b2FtcndiZW5jLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHZvYW1yd2JlbmMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT51bmtub3duPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXdheWxhbmRzaW5rLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13YXlsYW5kc2luay54bWwKaW5kZXggZjFjODBkZC4uM2IzMTkyNCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXdheWxhbmRzaW5rLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4td2F5bGFuZHNpbmsueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+V2F5bGFuZCBWaWRlbyBTaW5rPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC93YXlsYW5kLy5saWJzL2xpYmdzdHdheWxhbmRzaW5rLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHdheWxhbmRzaW5rLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13ZWJwLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13ZWJwLnhtbAppbmRleCA2Y2I4YWIzLi5kZjFmOGVhIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4td2VicC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXdlYnAueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+V2ViUCBwbHVnaW48L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3dlYnAvLmxpYnMvbGliZ3N0d2VicC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3R3ZWJwLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13aWxkbWlkaS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4td2lsZG1pZGkueG1sCmluZGV4IDc2YTFlODcuLmRmZDdhNjggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13aWxkbWlkaS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXdpbGRtaWRpLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPldpbGRtaWRpIFBsdWdpbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvdGltaWRpdHkvLmxpYnMvbGliZ3N0d2lsZG1pZGkuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0d2lsZG1pZGkuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5HUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4teDI2NS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4teDI2NS54bWwKaW5kZXggYzBmZTM2ZS4uZGRjYmU5MiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXgyNjUueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi14MjY1LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPngyNjUtYmFzZWQgSDI2NSBwbHVnaW5zPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC94MjY1Ly5saWJzL2xpYmdzdHgyNjUuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0eDI2NS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi15NG1kZWMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXk0bWRlYy54bWwKaW5kZXggNTcyODU0Ni4uMmIyYzk3MCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXk0bWRlYy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXk0bWRlYy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5EZW11eGVzL2RlY29kZXMgWVVWNE1QRUcgc3RyZWFtczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QveTRtLy5saWJzL2xpYmdzdHk0bWRlYy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3R5NG1kZWMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXlhZGlmLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi15YWRpZi54bWwKaW5kZXggMDBjNDkzZi4uYjk2ZDJhNCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXlhZGlmLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4teWFkaWYueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+WUFESUYgZGVpbnRlcmxhY2luZyBmaWx0ZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L3lhZGlmLy5saWJzL2xpYmdzdHlhZGlmLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHlhZGlmLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+R1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXpiYXIueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXpiYXIueG1sCmluZGV4IDBhNWVlNTkuLmU2OTJmNmMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi16YmFyLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4temJhci54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj56YmFyIGJhcmNvZGUgc2Nhbm5lcjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvemJhci8ubGlicy9saWJnc3R6YmFyLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHpiYXIuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZXh0L01ha2VmaWxlLmFtIGIvZXh0L01ha2VmaWxlLmFtCmluZGV4IDMzZGRiYTcuLmY5N2VmNDQgMTAwNjQ0Ci0tLSBhL2V4dC9NYWtlZmlsZS5hbQorKysgYi9leHQvTWFrZWZpbGUuYW0KQEAgLTE2LDEyICsxNiw2IEBACiBBUEVYU0lOS19ESVIgPQogZW5kaWYKIAotIyBpZiBVU0VfQVVESU9GSUxFCi0jIEFVRElPRklMRV9ESVI9YXVkaW9maWxlCi0jIGVsc2UKLUFVRElPRklMRV9ESVI9Ci0jIGVuZGlmCi0KIGlmIFVTRV9CUzJCCiBCUzJCX0RJUj1iczJiCiBlbHNlCkBAIC0xNjYsMTIgKzE2MCw2IEBACiBMSUJERTI2NV9ESVIgPQogZW5kaWYKIAotIyBpZiBVU0VfTElCRkFNRQotIyBMSUJGQU1FX0RJUj1saWJmYW1lCi0jIGVsc2UKLUxJQkZBTUVfRElSPQotIyBlbmRpZgotCiBpZiBVU0VfTElCTU1TCiBMSUJNTVNfRElSPWxpYm1tcwogZWxzZQpAQCAtMTk2LDEyICsxODQsNiBAQAogTVBFRzJFTkNfRElSPQogZW5kaWYKIAotaWYgVVNFX01QRzEyMwotTVBHMTIzX0RJUj1tcGcxMjMKLWVsc2UKLU1QRzEyM19ESVI9Ci1lbmRpZgotCiBpZiBVU0VfTUlNSUMKIE1JTUlDX0RJUj1taW1pYwogZWxzZQpAQCAtMzgyLDEyICszNjQsNiBAQAogVEVMRVRFWFRERUNfRElSPQogZW5kaWYKIAotaWYgVVNFX0dTRVRUSU5HUwotR1NFVFRJTkdTX0RJUj1nc2V0dGluZ3MKLWVsc2UKLUdTRVRUSU5HU19ESVI9Ci1lbmRpZgotCiBpZiBVU0VfWFZJRAogWFZJRF9ESVI9eHZpZAogZWxzZQpAQCAtNDMwLDYgKzQwNiwxMiBAQAogRFRMU19ESVI9CiBlbmRpZgogCitpZiBVU0VfVlVMS0FOCitWVUxLQU5fRElSPXZ1bGthbgorZWxzZQorVlVMS0FOX0RJUj0KK2VuZGlmCisKIFNVQkRJUlM9XAogCSQoVk9BQUNFTkNfRElSKSBcCiAJJChBU1NSRU5ERVJfRElSKSBcCkBAIC00NTQsMTkgKzQzNiwxNiBAQAogCSQoRkFBRF9ESVIpIFwKIAkkKEZMSVRFX0RJUikgXAogCSQoRkxVSURTWU5USF9ESVIpIFwKLQkkKEdTRVRUSU5HU19ESVIpIFwKIAkkKEdTTV9ESVIpIFwKIAkkKEc3MjlfRElSKSBcCiAJJChLQVRFX0RJUikgXAogCSQoTEFEU1BBX0RJUikgXAogCSQoTFYyX0RJUikgXAogCSQoTElCREUyNjVfRElSKSBcCi0JJChMSUJGQU1FX0RJUikgXAogCSQoTElCTU1TX0RJUikgXAogCSQoTElCVklTVUFMX0RJUikgXAogCSQoTU9EUExVR19ESVIpIFwKIAkkKE1QRUcyRU5DX0RJUikgXAotCSQoTVBHMTIzX0RJUikgXAogCSQoTUlNSUNfRElSKSBcCiAJJChNUExFWF9ESVIpIFwKIAkkKE1VU0VQQUNLX0RJUikgXApAQCAtNTAxLDcgKzQ4MCw4IEBACiAJJChITFNfRElSKSBcCiAJJChXRUJQX0RJUikgXAogCSQoWDI2NV9ESVIpIFwKLQkkKERUTFNfRElSKQorCSQoRFRMU19ESVIpIFwKKwkkKFZVTEtBTl9ESVIpCiAKIERJU1RfU1VCRElSUyA9IFwKIAlhc3NyZW5kZXIgXApAQCAtNTE4LDcgKzQ5OCw2IEBACiAJZmFhZCBcCiAJZmxpdGUgXAogCWZsdWlkc3ludGggXAotCWdzZXR0aW5ncyBcCiAJZ3NtIFwKIAlobHMgXAogCWxhZHNwYSBcCkBAIC01MzUsNyArNTE0LDYgQEAKIAltb2RwbHVnIFwKIAltaW1pYyBcCiAJbXBlZzJlbmMgXAotCW1wZzEyMyBcCiAJbXBsZXggXAogCW11c2VwYWNrIFwKIAluYXMgXApAQCAtNTcwLDYgKzU0OCw3IEBACiAJcnRtcCBcCiAJd2VicCBcCiAJeDI2NSBcCi0JZHRscworCWR0bHMgXAorCXZ1bGthbgogCiBpbmNsdWRlICQodG9wX3NyY2RpcikvY29tbW9uL3BhcmFsbGVsLXN1YmRpcnMubWFrCmRpZmYgLS1naXQgYS9leHQvTWFrZWZpbGUuaW4gYi9leHQvTWFrZWZpbGUuaW4KaW5kZXggNGY1ZWFlOS4uODJiNmQ2ZCAxMDA2NDQKLS0tIGEvZXh0L01ha2VmaWxlLmluCisrKyBiL2V4dC9NYWtlZmlsZS5pbgpAQCAtMTE5LDE2ICsxMTksMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI1Myw2ICsyNTIsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI5MCw2ICsyOTEsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5OCw3ICszMDEsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTcsOCArMzE5LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMzNSwxNiArMzM4LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM3MCw2ICszNzQsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zOTUsNiArNDAxLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDk2LDYgKzUwNCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDksOCArNTE4LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTI2LDYgKzUzMyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01ODMsMTYgKzU5MiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY0NCw2ICs2NTUsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjU0LDYgKzY2Niw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY2Myw2ICs2NzYsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzAwLDcgKzcxNSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzQ2LDEzICs3NjAsNyBAQAogQFVTRV9WT0FNUldCRU5DX1RSVUVAVk9BTVJXQkVOQ19ESVIgPSB2b2FtcndiZW5jCiBAVVNFX0FQRVhTSU5LX0ZBTFNFQEFQRVhTSU5LX0RJUiA9IAogQFVTRV9BUEVYU0lOS19UUlVFQEFQRVhTSU5LX0RJUiA9IGFwZXhzaW5rCi0KLSMgaWYgVVNFX0FVRElPRklMRQotIyBBVURJT0ZJTEVfRElSPWF1ZGlvZmlsZQotIyBlbHNlCi1BVURJT0ZJTEVfRElSID0gCiBAVVNFX0JTMkJfRkFMU0VAQlMyQl9ESVIgPSAKLSMgZW5kaWYKIEBVU0VfQlMyQl9UUlVFQEJTMkJfRElSID0gYnMyYgogQFVTRV9CWjJfRkFMU0VAQloyX0RJUiA9IAogQFVTRV9CWjJfVFJVRUBCWjJfRElSID0gYnoyCkBAIC04MDQsMTMgKzgxMiw3IEBACiBAVVNFX0xWMl9UUlVFQExWMl9ESVIgPSBsdjIKIEBVU0VfTElCREUyNjVfRkFMU0VATElCREUyNjVfRElSID0gCiBAVVNFX0xJQkRFMjY1X1RSVUVATElCREUyNjVfRElSID0gbGliZGUyNjUKLQotIyBpZiBVU0VfTElCRkFNRQotIyBMSUJGQU1FX0RJUj1saWJmYW1lCi0jIGVsc2UKLUxJQkZBTUVfRElSID0gCiBAVVNFX0xJQk1NU19GQUxTRUBMSUJNTVNfRElSID0gCi0jIGVuZGlmCiBAVVNFX0xJQk1NU19UUlVFQExJQk1NU19ESVIgPSBsaWJtbXMKIEBVU0VfTElCVklTVUFMX0ZBTFNFQExJQlZJU1VBTF9ESVIgPSAKIEBVU0VfTElCVklTVUFMX1RSVUVATElCVklTVUFMX0RJUiA9IGxpYnZpc3VhbApAQCAtODE4LDggKzgyMCw2IEBACiBAVVNFX01PRFBMVUdfVFJVRUBNT0RQTFVHX0RJUiA9IG1vZHBsdWcKIEBVU0VfTVBFRzJFTkNfRkFMU0VATVBFRzJFTkNfRElSID0gCiBAVVNFX01QRUcyRU5DX1RSVUVATVBFRzJFTkNfRElSID0gbXBlZzJlbmMKLUBVU0VfTVBHMTIzX0ZBTFNFQE1QRzEyM19ESVIgPSAKLUBVU0VfTVBHMTIzX1RSVUVATVBHMTIzX0RJUiA9IG1wZzEyMwogQFVTRV9NSU1JQ19GQUxTRUBNSU1JQ19ESVIgPSAKIEBVU0VfTUlNSUNfVFJVRUBNSU1JQ19ESVIgPSBtaW1pYwogQFVTRV9NUExFWF9GQUxTRUBNUExFWF9ESVIgPSAKQEAgLTg4Miw4ICs4ODIsNiBAQAogQFVTRV9HTUVfVFJVRUBHTUVfRElSID0gZ21lCiBAVVNFX1RFTEVURVhUREVDX0ZBTFNFQFRFTEVURVhUREVDX0RJUiA9IAogQFVTRV9URUxFVEVYVERFQ19UUlVFQFRFTEVURVhUREVDX0RJUiA9IHRlbGV0ZXh0ZGVjCi1AVVNFX0dTRVRUSU5HU19GQUxTRUBHU0VUVElOR1NfRElSID0gCi1AVVNFX0dTRVRUSU5HU19UUlVFQEdTRVRUSU5HU19ESVIgPSBnc2V0dGluZ3MKIEBVU0VfWFZJRF9GQUxTRUBYVklEX0RJUiA9IAogQFVTRV9YVklEX1RSVUVAWFZJRF9ESVIgPSB4dmlkCiBAVVNFX1pCQVJfRkFMU0VAWkJBUl9ESVIgPSAKQEAgLTg5OCw2ICs4OTYsOCBAQAogQFVTRV9YMjY1X1RSVUVAWDI2NV9ESVIgPSB4MjY1CiBAVVNFX0RUTFNfRkFMU0VARFRMU19ESVIgPSAKIEBVU0VfRFRMU19UUlVFQERUTFNfRElSID0gZHRscworQFVTRV9WVUxLQU5fRkFMU0VAVlVMS0FOX0RJUiA9IAorQFVTRV9WVUxLQU5fVFJVRUBWVUxLQU5fRElSID0gdnVsa2FuCiBTVUJESVJTID0gXAogCSQoVk9BQUNFTkNfRElSKSBcCiAJJChBU1NSRU5ERVJfRElSKSBcCkBAIC05MjIsMTkgKzkyMiwxNiBAQAogCSQoRkFBRF9ESVIpIFwKIAkkKEZMSVRFX0RJUikgXAogCSQoRkxVSURTWU5USF9ESVIpIFwKLQkkKEdTRVRUSU5HU19ESVIpIFwKIAkkKEdTTV9ESVIpIFwKIAkkKEc3MjlfRElSKSBcCiAJJChLQVRFX0RJUikgXAogCSQoTEFEU1BBX0RJUikgXAogCSQoTFYyX0RJUikgXAogCSQoTElCREUyNjVfRElSKSBcCi0JJChMSUJGQU1FX0RJUikgXAogCSQoTElCTU1TX0RJUikgXAogCSQoTElCVklTVUFMX0RJUikgXAogCSQoTU9EUExVR19ESVIpIFwKIAkkKE1QRUcyRU5DX0RJUikgXAotCSQoTVBHMTIzX0RJUikgXAogCSQoTUlNSUNfRElSKSBcCiAJJChNUExFWF9ESVIpIFwKIAkkKE1VU0VQQUNLX0RJUikgXApAQCAtOTY5LDcgKzk2Niw4IEBACiAJJChITFNfRElSKSBcCiAJJChXRUJQX0RJUikgXAogCSQoWDI2NV9ESVIpIFwKLQkkKERUTFNfRElSKQorCSQoRFRMU19ESVIpIFwKKwkkKFZVTEtBTl9ESVIpCiAKIERJU1RfU1VCRElSUyA9IFwKIAlhc3NyZW5kZXIgXApAQCAtOTg2LDcgKzk4NCw2IEBACiAJZmFhZCBcCiAJZmxpdGUgXAogCWZsdWlkc3ludGggXAotCWdzZXR0aW5ncyBcCiAJZ3NtIFwKIAlobHMgXAogCWxhZHNwYSBcCkBAIC0xMDAzLDcgKzEwMDAsNiBAQAogCW1vZHBsdWcgXAogCW1pbWljIFwKIAltcGVnMmVuYyBcCi0JbXBnMTIzIFwKIAltcGxleCBcCiAJbXVzZXBhY2sgXAogCW5hcyBcCkBAIC0xMDM4LDcgKzEwMzQsOCBAQAogCXJ0bXAgXAogCXdlYnAgXAogCXgyNjUgXAotCWR0bHMKKwlkdGxzIFwKKwl2dWxrYW4KIAogYWxsOiBhbGwtcmVjdXJzaXZlCiAKZGlmZiAtLWdpdCBhL2V4dC9hcGV4c2luay9NYWtlZmlsZS5pbiBiL2V4dC9hcGV4c2luay9NYWtlZmlsZS5pbgppbmRleCBmNjczYTQxLi5jNzM4ODhiIDEwMDY0NAotLS0gYS9leHQvYXBleHNpbmsvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2FwZXhzaW5rL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Nyw2ICsyNzYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNCw2ICszMTUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMiw3ICszMjUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDEsOCArMzQzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OSwxNiArMzYyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NCw2ICszOTgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTksNiArNDI1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIwLDYgKzUyOCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzMsOCArNTQyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUwLDYgKzU1Nyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDcsMTYgKzYxNiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OCw2ICs2NzksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc4LDYgKzY5MCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Nyw2ICs3MDAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI0LDcgKzczOSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2Fzc3JlbmRlci9NYWtlZmlsZS5pbiBiL2V4dC9hc3NyZW5kZXIvTWFrZWZpbGUuaW4KaW5kZXggNjgxNjAyNS4uYmUyM2VjMiAxMDA2NDQKLS0tIGEvZXh0L2Fzc3JlbmRlci9NYWtlZmlsZS5pbgorKysgYi9leHQvYXNzcmVuZGVyL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2Fzc3JlbmRlci9nc3Rhc3NyZW5kZXIuYyBiL2V4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmMKaW5kZXggZGU3NmFmMC4uOTEzYmViNSAxMDA2NDQKLS0tIGEvZXh0L2Fzc3JlbmRlci9nc3Rhc3NyZW5kZXIuYworKysgYi9leHQvYXNzcmVuZGVyL2dzdGFzc3JlbmRlci5jCkBAIC0yNiw3ICsyNiw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPS9wYXRoL3RvL21rdiAhIG1hdHJvc2thZGVtdXggbmFtZT1kICEgcXVldWUgISBtcDNwYXJzZSAhIG1hZCAhIGF1ZGlvY29udmVydCAhIGF1dG9hdWRpb3NpbmsgIGQuICEgcXVldWUgISBmZmRlY19oMjY0ICEgdmlkZW9jb252ZXJ0ICEgci4gICBkLiAhIHF1ZXVlICEgImFwcGxpY2F0aW9uL3gtYXNzIiAhIGFzc3JlbmRlciBuYW1lPXIgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPS9wYXRoL3RvL21rdiAhIG1hdHJvc2thZGVtdXggbmFtZT1kICEgcXVldWUgISBtcGVnYXVkaW9wYXJzZSAhIG1hZCAhIGF1ZGlvY29udmVydCAhIGF1dG9hdWRpb3NpbmsgIGQuICEgcXVldWUgISBoMjY0cGFyc2UgISBhdmRlY19oMjY0ICEgdmlkZW9jb252ZXJ0ICEgci4gICBkLiAhIHF1ZXVlICEgImFwcGxpY2F0aW9uL3gtYXNzIiAhIGFzc3JlbmRlciBuYW1lPXIgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCiAgKiBdfCBUaGlzIHBpcGVsaW5lIGRlbXV4ZXMgYSBNYXRyb3NrYSBmaWxlIHdpdGggaC4yNjQgdmlkZW8sIE1QMyBhdWRpbyBhbmQgZW1iZWRkZWQgQVNTIHN1YnRpdGxlcyBhbmQgcmVuZGVycyB0aGUgc3VidGl0bGVzIG9uIHRvcCBvZiB0aGUgdmlkZW8uCiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC0xODQsNyArMTg0LDYgQEAKICAgICAgICJTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4iKTsKIH0KIAotI2lmIGRlZmluZWQoTElCQVNTX1ZFUlNJT04pICYmIExJQkFTU19WRVJTSU9OID49IDB4MDA5MDcwMDAKIHN0YXRpYyB2b2lkCiBfbGliYXNzX21lc3NhZ2VfY2IgKGdpbnQgbGV2ZWwsIGNvbnN0IGdjaGFyICogZm10LCB2YV9saXN0IGFyZ3MsCiAgICAgZ3BvaW50ZXIgcmVuZGVyKQpAQCAtMjA0LDcgKzIwMyw2IEBACiAKICAgZ19mcmVlIChtZXNzYWdlKTsKIH0KLSNlbmRpZgogCiBzdGF0aWMgdm9pZAogZ3N0X2Fzc19yZW5kZXJfaW5pdCAoR3N0QXNzUmVuZGVyICogcmVuZGVyKQpAQCAtMjU2LDkgKzI1NCw3IEBACiAKICAgZ19tdXRleF9pbml0ICgmcmVuZGVyLT5hc3NfbXV0ZXgpOwogICByZW5kZXItPmFzc19saWJyYXJ5ID0gYXNzX2xpYnJhcnlfaW5pdCAoKTsKLSNpZiBkZWZpbmVkKExJQkFTU19WRVJTSU9OKSAmJiBMSUJBU1NfVkVSU0lPTiA+PSAweDAwOTA3MDAwCiAgIGFzc19zZXRfbWVzc2FnZV9jYiAocmVuZGVyLT5hc3NfbGlicmFyeSwgX2xpYmFzc19tZXNzYWdlX2NiLCByZW5kZXIpOwotI2VuZGlmCiAgIGFzc19zZXRfZXh0cmFjdF9mb250cyAocmVuZGVyLT5hc3NfbGlicmFyeSwgMSk7CiAKICAgcmVuZGVyLT5hc3NfcmVuZGVyZXIgPSBhc3NfcmVuZGVyZXJfaW5pdCAocmVuZGVyLT5hc3NfbGlicmFyeSk7CkBAIC0yOTgsNiArMjk0LDE1IEBACiB9CiAKIHN0YXRpYyB2b2lkCitnc3RfYXNzX3JlbmRlcl9yZXNldF9jb21wb3NpdGlvbiAoR3N0QXNzUmVuZGVyICogcmVuZGVyKQoreworICBpZiAocmVuZGVyLT5jb21wb3NpdGlvbikgeworICAgIGdzdF92aWRlb19vdmVybGF5X2NvbXBvc2l0aW9uX3VucmVmIChyZW5kZXItPmNvbXBvc2l0aW9uKTsKKyAgICByZW5kZXItPmNvbXBvc2l0aW9uID0gTlVMTDsKKyAgfQorfQorCitzdGF0aWMgdm9pZAogZ3N0X2Fzc19yZW5kZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAogICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCiB7CkBAIC0zOTEsMTIgKzM5Niw5IEBACiAgICAgICBpZiAocmVuZGVyLT5hc3NfdHJhY2spCiAgICAgICAgIGFzc19mcmVlX3RyYWNrIChyZW5kZXItPmFzc190cmFjayk7CiAgICAgICByZW5kZXItPmFzc190cmFjayA9IE5VTEw7Ci0gICAgICBpZiAocmVuZGVyLT5jb21wb3NpdGlvbikgewotICAgICAgICBnc3RfdmlkZW9fb3ZlcmxheV9jb21wb3NpdGlvbl91bnJlZiAocmVuZGVyLT5jb21wb3NpdGlvbik7Ci0gICAgICAgIHJlbmRlci0+Y29tcG9zaXRpb24gPSBOVUxMOwotICAgICAgfQogICAgICAgcmVuZGVyLT50cmFja19pbml0X29rID0gRkFMU0U7CiAgICAgICByZW5kZXItPnJlbmRlcmVyX2luaXRfb2sgPSBGQUxTRTsKKyAgICAgIGdzdF9hc3NfcmVuZGVyX3Jlc2V0X2NvbXBvc2l0aW9uIChyZW5kZXIpOwogICAgICAgZ19tdXRleF91bmxvY2sgKCZyZW5kZXItPmFzc19tdXRleCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgpAQCAtNjg0LDM0ICs2ODYsNDAgQEAKICAgICBkc3RfeCA9IGFzc19pbWFnZS0+ZHN0X3ggKyB4X29mZjsKICAgICBkc3RfeSA9IGFzc19pbWFnZS0+ZHN0X3kgKyB5X29mZjsKIAotICAgIGlmIChkc3RfeSA+PSBoZWlnaHQgfHwgZHN0X3ggPj0gd2lkdGgpCisgICAgdyA9IE1JTiAoYXNzX2ltYWdlLT53LCB3aWR0aCAtIGRzdF94KTsKKyAgICBoID0gTUlOIChhc3NfaW1hZ2UtPmgsIGhlaWdodCAtIGRzdF95KTsKKyAgICBpZiAodyA8PSAwIHx8IGggPD0gMCkKICAgICAgIGdvdG8gbmV4dDsKIAogICAgIGFscGhhID0gMjU1IC0gKGFzc19pbWFnZS0+Y29sb3IgJiAweGZmKTsKKyAgICBpZiAoIWFscGhhKQorICAgICAgZ290byBuZXh0OworCiAgICAgciA9ICgoYXNzX2ltYWdlLT5jb2xvcikgPj4gMjQpICYgMHhmZjsKICAgICBnID0gKChhc3NfaW1hZ2UtPmNvbG9yKSA+PiAxNikgJiAweGZmOwogICAgIGIgPSAoKGFzc19pbWFnZS0+Y29sb3IpID4+IDgpICYgMHhmZjsKKwogICAgIHNyYyA9IGFzc19pbWFnZS0+Yml0bWFwOwogICAgIGRzdCA9IGRhdGEgKyBkc3RfeSAqIHN0cmlkZSArIGRzdF94ICogNDsKIAotICAgIHcgPSBNSU4gKGFzc19pbWFnZS0+dywgd2lkdGggLSBkc3RfeCk7Ci0gICAgaCA9IE1JTiAoYXNzX2ltYWdlLT5oLCBoZWlnaHQgLSBkc3RfeSk7CiAgICAgc3JjX3NraXAgPSBhc3NfaW1hZ2UtPnN0cmlkZSAtIHc7CiAgICAgZHN0X3NraXAgPSBzdHJpZGUgLSB3ICogNDsKIAogICAgIGZvciAoeSA9IDA7IHkgPCBoOyB5KyspIHsKICAgICAgIGZvciAoeCA9IDA7IHggPCB3OyB4KyspIHsKLSAgICAgICAgayA9IHNyY1swXSAqIGFscGhhIC8gMjU1OwotICAgICAgICBpZiAoZHN0WzNdID09IDApIHsKLSAgICAgICAgICBkc3RbM10gPSBrOwotICAgICAgICAgIGRzdFsyXSA9IChrICogcikgLyAyNTU7Ci0gICAgICAgICAgZHN0WzFdID0gKGsgKiBnKSAvIDI1NTsKLSAgICAgICAgICBkc3RbMF0gPSAoayAqIGIpIC8gMjU1OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGRzdFszXSA9IGsgKyAoMjU1IC0gaykgKiBkc3RbM10gLyAyNTU7Ci0gICAgICAgICAgZHN0WzJdID0gKGsgKiByICsgKDI1NSAtIGspICogZHN0WzJdKSAvIDI1NTsKLSAgICAgICAgICBkc3RbMV0gPSAoayAqIGcgKyAoMjU1IC0gaykgKiBkc3RbMV0pIC8gMjU1OwotICAgICAgICAgIGRzdFswXSA9IChrICogYiArICgyNTUgLSBrKSAqIGRzdFswXSkgLyAyNTU7CisgICAgICAgIGlmIChzcmNbMF0pIHsKKyAgICAgICAgICBrID0gc3JjWzBdICogYWxwaGEgLyAyNTU7CisgICAgICAgICAgaWYgKGRzdFszXSA9PSAwKSB7CisgICAgICAgICAgICBkc3RbM10gPSBrOworICAgICAgICAgICAgZHN0WzJdID0gKGsgKiByKSAvIDI1NTsKKyAgICAgICAgICAgIGRzdFsxXSA9IChrICogZykgLyAyNTU7CisgICAgICAgICAgICBkc3RbMF0gPSAoayAqIGIpIC8gMjU1OworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkc3RbM10gPSBrICsgKDI1NSAtIGspICogZHN0WzNdIC8gMjU1OworICAgICAgICAgICAgZHN0WzJdID0gKGsgKiByICsgKDI1NSAtIGspICogZHN0WzJdKSAvIDI1NTsKKyAgICAgICAgICAgIGRzdFsxXSA9IChrICogZyArICgyNTUgLSBrKSAqIGRzdFsxXSkgLyAyNTU7CisgICAgICAgICAgICBkc3RbMF0gPSAoayAqIGIgKyAoMjU1IC0gaykgKiBkc3RbMF0pIC8gMjU1OworICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBzcmMrKzsKICAgICAgICAgZHN0ICs9IDQ7CkBAIC03NDAsMTM3ICs3NDgsMjI4IEBACiAgIHJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyB2b2lkCitnc3RfYXNzX3JlbmRlcl91cGRhdGVfcmVuZGVyX3NpemUgKEdzdEFzc1JlbmRlciAqIHJlbmRlcikKK3sKKyAgZ2RvdWJsZSB2aWRlb19hc3BlY3QgPSAoZ2RvdWJsZSkgcmVuZGVyLT5pbmZvLndpZHRoIC8KKyAgICAgIChnZG91YmxlKSByZW5kZXItPmluZm8uaGVpZ2h0OworICBnZG91YmxlIHdpbmRvd19hc3BlY3QgPSAoZ2RvdWJsZSkgcmVuZGVyLT53aW5kb3dfd2lkdGggLworICAgICAgKGdkb3VibGUpIHJlbmRlci0+d2luZG93X2hlaWdodDsKKworICAvKiByZW5kZXIgYXQgdGhlIHdpbmRvdyBzaXplLCB3aXRoIHRoZSB2aWRlbyBhc3BlY3QgcmF0aW8gKi8KKyAgaWYgKHZpZGVvX2FzcGVjdCA+PSB3aW5kb3dfYXNwZWN0KSB7CisgICAgcmVuZGVyLT5hc3NfZnJhbWVfd2lkdGggPSByZW5kZXItPndpbmRvd193aWR0aDsKKyAgICByZW5kZXItPmFzc19mcmFtZV9oZWlnaHQgPSByZW5kZXItPndpbmRvd193aWR0aCAvIHZpZGVvX2FzcGVjdDsKKyAgfSBlbHNlIHsKKyAgICByZW5kZXItPmFzc19mcmFtZV93aWR0aCA9IHJlbmRlci0+d2luZG93X2hlaWdodCAqIHZpZGVvX2FzcGVjdDsKKyAgICByZW5kZXItPmFzc19mcmFtZV9oZWlnaHQgPSByZW5kZXItPndpbmRvd19oZWlnaHQ7CisgIH0KK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYXNzX3JlbmRlcl9uZWdvdGlhdGUgKEdzdEFzc1JlbmRlciAqIHJlbmRlciwgR3N0Q2FwcyAqIGNhcHMpCit7CisgIGdib29sZWFuIHVwc3RyZWFtX2hhc19tZXRhID0gRkFMU0U7CisgIGdib29sZWFuIGNhcHNfaGFzX21ldGEgPSBGQUxTRTsKKyAgZ2Jvb2xlYW4gYWxsb2NfaGFzX21ldGEgPSBGQUxTRTsKKyAgZ2Jvb2xlYW4gYXR0YWNoID0gRkFMU0U7CisgIGdib29sZWFuIHJldCA9IFRSVUU7CisgIGd1aW50IHdpZHRoLCBoZWlnaHQ7CisgIEdzdENhcHNGZWF0dXJlcyAqZjsKKyAgR3N0Q2FwcyAqb3ZlcmxheV9jYXBzOworICBHc3RRdWVyeSAqcXVlcnk7CisgIGd1aW50IGFsbG9jX2luZGV4OworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHJlbmRlciwgInBlcmZvcm1pbmcgbmVnb3RpYXRpb24iKTsKKworICAvKiBDbGVhciBjYWNoZWQgY29tcG9zaXRpb24gKi8KKyAgZ3N0X2Fzc19yZW5kZXJfcmVzZXRfY29tcG9zaXRpb24gKHJlbmRlcik7CisKKyAgLyogQ2xlYXIgYW55IHBlbmRpbmcgcmVjb25maWd1cmUgZmxhZyAqLworICBnc3RfcGFkX2NoZWNrX3JlY29uZmlndXJlIChyZW5kZXItPnNyY3BhZCk7CisKKyAgaWYgKCFjYXBzKQorICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKHJlbmRlci0+dmlkZW9fc2lua3BhZCk7CisgIGVsc2UKKyAgICBnc3RfY2Fwc19yZWYgKGNhcHMpOworCisgIGlmICghY2FwcyB8fCBnc3RfY2Fwc19pc19lbXB0eSAoY2FwcykpCisgICAgZ290byBub19mb3JtYXQ7CisKKyAgLyogQ2hlY2sgaWYgdXBzdHJlYW0gY2FwcyBoYXZlIG1ldGEgKi8KKyAgaWYgKChmID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChjYXBzLCAwKSkpIHsKKyAgICB1cHN0cmVhbV9oYXNfbWV0YSA9IGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmLAorICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT04pOworICB9CisKKyAgLyogSW5pdGlhbGl6ZSBkaW1lbnNpb25zICovCisgIHdpZHRoID0gcmVuZGVyLT5pbmZvLndpZHRoOworICBoZWlnaHQgPSByZW5kZXItPmluZm8uaGVpZ2h0OworCisgIGlmICh1cHN0cmVhbV9oYXNfbWV0YSkgeworICAgIG92ZXJsYXlfY2FwcyA9IGdzdF9jYXBzX3JlZiAoY2Fwcyk7CisgIH0gZWxzZSB7CisgICAgR3N0Q2FwcyAqcGVlcmNhcHM7CisKKyAgICAvKiBCYXNlVHJhbnNmb3JtIHJlcXVpcmVzIGNhcHMgZm9yIHRoZSBhbGxvY2F0aW9uIHF1ZXJ5IHRvIHdvcmsgKi8KKyAgICBvdmVybGF5X2NhcHMgPSBnc3RfY2Fwc19jb3B5IChjYXBzKTsKKyAgICBmID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChvdmVybGF5X2NhcHMsIDApOworICAgIGdzdF9jYXBzX2ZlYXR1cmVzX2FkZCAoZiwKKyAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRVRBX0dTVF9WSURFT19PVkVSTEFZX0NPTVBPU0lUSU9OKTsKKworICAgIC8qIFRoZW4gY2hlY2sgaWYgZG93bnN0cmVhbSBhY2NlcHQgb3ZlcmxheSBjb21wb3NpdGlvbiBpbiBjYXBzICovCisgICAgLyogRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSBjaGVjayBpZiBkb3duc3RyZWFtICpwcmVmZXJzKiB0aGUKKyAgICAgKiBvdmVybGF5IG1ldGEsIGFuZCBvbmx5IGVuZm9yY2UgdXNhZ2Ugb2YgaXQgaWYgd2UgY2FuJ3QgaGFuZGxlCisgICAgICogdGhlIGZvcm1hdCBvdXJzZWx2ZXMgYW5kIHRodXMgd291bGQgaGF2ZSB0byBkcm9wIHRoZSBvdmVybGF5cy4KKyAgICAgKiBPdGhlcndpc2Ugd2Ugc2hvdWxkIHByZWZlciB3aGF0IGRvd25zdHJlYW0gd2FudHMgaGVyZS4KKyAgICAgKi8KKyAgICBwZWVyY2FwcyA9IGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzIChyZW5kZXItPnNyY3BhZCwgTlVMTCk7CisgICAgY2Fwc19oYXNfbWV0YSA9IGdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKHBlZXJjYXBzLCBvdmVybGF5X2NhcHMpOworICAgIGdzdF9jYXBzX3VucmVmIChwZWVyY2Fwcyk7CisKKyAgICBHU1RfREVCVUcgKCJjYXBzIGhhdmUgb3ZlcmxheSBtZXRhICVkIiwgY2Fwc19oYXNfbWV0YSk7CisgIH0KKworICBpZiAodXBzdHJlYW1faGFzX21ldGEgfHwgY2Fwc19oYXNfbWV0YSkgeworICAgIC8qIFNlbmQgY2FwcyBpbW1lZGlhdGx5LCBpdCdzIG5lZWRlZCBieSBHc3RCYXNlVHJhbnNmb3JtIHRvIGdldCBhIHJlcGx5CisgICAgICogZnJvbSBhbGxvY2F0aW9uIHF1ZXJ5ICovCisgICAgcmV0ID0gZ3N0X3BhZF9zZXRfY2FwcyAocmVuZGVyLT5zcmNwYWQsIG92ZXJsYXlfY2Fwcyk7CisKKyAgICAvKiBGaXJzdCBjaGVjayBpZiB0aGUgYWxsb2NhdGlvbiBtZXRhIGhhcyBjb21wb3NpdG9uICovCisgICAgcXVlcnkgPSBnc3RfcXVlcnlfbmV3X2FsbG9jYXRpb24gKG92ZXJsYXlfY2FwcywgRkFMU0UpOworCisgICAgaWYgKCFnc3RfcGFkX3BlZXJfcXVlcnkgKHJlbmRlci0+c3JjcGFkLCBxdWVyeSkpIHsKKyAgICAgIC8qIG5vIHByb2JsZW0sIHdlIHVzZSB0aGUgcXVlcnkgZGVmYXVsdHMgKi8KKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJlbmRlciwgIkFMTE9DQVRJT04gcXVlcnkgZmFpbGVkIik7CisKKyAgICAgIC8qIEluIGNhc2Ugd2Ugd2VyZSBmbHVzaGluZywgbWFyayByZWNvbmZpZ3VyZSBhbmQgZmFpbCB0aGlzIG1ldGhvZCwKKyAgICAgICAqIHdpbGwgbWFrZSBpdCByZXRyeSAqLworICAgICAgaWYgKHJlbmRlci0+dmlkZW9fZmx1c2hpbmcpCisgICAgICAgIHJldCA9IEZBTFNFOworICAgIH0KKworICAgIGFsbG9jX2hhc19tZXRhID0gZ3N0X3F1ZXJ5X2ZpbmRfYWxsb2NhdGlvbl9tZXRhIChxdWVyeSwKKyAgICAgICAgR1NUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT05fTUVUQV9BUElfVFlQRSwgJmFsbG9jX2luZGV4KTsKKworICAgIEdTVF9ERUJVRyAoInNpbmsgYWxsb2MgaGFzIG92ZXJsYXkgbWV0YSAlZCIsIGFsbG9jX2hhc19tZXRhKTsKKworICAgIGlmIChhbGxvY19oYXNfbWV0YSkgeworICAgICAgY29uc3QgR3N0U3RydWN0dXJlICpwYXJhbXM7CisKKyAgICAgIGdzdF9xdWVyeV9wYXJzZV9udGhfYWxsb2NhdGlvbl9tZXRhIChxdWVyeSwgYWxsb2NfaW5kZXgsICZwYXJhbXMpOworICAgICAgaWYgKHBhcmFtcykgeworICAgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXQgKHBhcmFtcywgIndpZHRoIiwgR19UWVBFX1VJTlQsICZ3aWR0aCwKKyAgICAgICAgICAgICAgICAiaGVpZ2h0IiwgR19UWVBFX1VJTlQsICZoZWlnaHQsIE5VTEwpKSB7CisgICAgICAgICAgR1NUX0RFQlVHICgicmVjZWl2ZWQgd2luZG93IHNpemU6ICVkeCVkIiwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgZ19hc3NlcnQgKHdpZHRoICE9IDAgJiYgaGVpZ2h0ICE9IDApOworICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7CisgIH0KKworICAvKiBVcGRhdGUgcmVuZGVyIHNpemUgaWYgbmVlZGVkICovCisgIHJlbmRlci0+d2luZG93X3dpZHRoID0gd2lkdGg7CisgIHJlbmRlci0+d2luZG93X2hlaWdodCA9IGhlaWdodDsKKyAgZ3N0X2Fzc19yZW5kZXJfdXBkYXRlX3JlbmRlcl9zaXplIChyZW5kZXIpOworCisgIC8qIEZvciBiYWNrd2FyZCBjb21wYXRiaWxpdHksIHdlIHdpbGwgcHJlZmVyIGJsaXRpbmcgaWYgZG93bnN0cmVhbQorICAgKiBhbGxvY2F0aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhlIG1ldGEuIEluIG90aGVyIGNhc2Ugd2Ugd2lsbCBwcmVmZXIKKyAgICogYXR0YWNoaW5nLCBhbmQgd2lsbCBmYWlsIHRoZSBuZWdvdGlhdGlvbiBpbiB0aGUgdW5saWtlbHkgY2FzZSB3ZSBhcmUKKyAgICogZm9yY2UgdG8gYmxpdCwgYnV0IGZvcm1hdCBpc24ndCBzdXBwb3J0ZWQuICovCisKKyAgaWYgKHVwc3RyZWFtX2hhc19tZXRhKSB7CisgICAgYXR0YWNoID0gVFJVRTsKKyAgfSBlbHNlIGlmIChjYXBzX2hhc19tZXRhKSB7CisgICAgaWYgKGFsbG9jX2hhc19tZXRhKSB7CisgICAgICBhdHRhY2ggPSBUUlVFOworICAgIH0gZWxzZSB7CisgICAgICAvKiBEb24ndCBhdHRhY2ggdW5sZXNzIHdlIGNhbm5vdCBoYW5kbGUgdGhlIGZvcm1hdCAqLworICAgICAgYXR0YWNoID0gIWdzdF9hc3NfcmVuZGVyX2Nhbl9oYW5kbGVfY2FwcyAoY2Fwcyk7CisgICAgfQorICB9IGVsc2UgeworICAgIHJldCA9IGdzdF9hc3NfcmVuZGVyX2Nhbl9oYW5kbGVfY2FwcyAoY2Fwcyk7CisgIH0KKworICAvKiBJZiB3ZSBhdHRhY2gsIHRoZW4gcGljayB0aGUgb3ZlcmxheSBjYXBzICovCisgIGlmIChhdHRhY2gpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChyZW5kZXIsICJVc2luZyBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBvdmVybGF5X2NhcHMpOworICAgIC8qIENhcHMgd2hlcmUgYWxyZWFkeSBzZW50ICovCisgIH0gZWxzZSBpZiAocmV0KSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAocmVuZGVyLCAiVXNpbmcgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CisgICAgcmV0ID0gZ3N0X3BhZF9zZXRfY2FwcyAocmVuZGVyLT5zcmNwYWQsIGNhcHMpOworICB9CisKKyAgcmVuZGVyLT5hdHRhY2hfY29tcG9fdG9fYnVmZmVyID0gYXR0YWNoOworCisgIGlmICghcmV0KSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAocmVuZGVyLCAibmVnb3RpYXRpb24gZmFpbGVkLCBzY2hlZHVsZSByZWNvbmZpZ3VyZSIpOworICAgIGdzdF9wYWRfbWFya19yZWNvbmZpZ3VyZSAocmVuZGVyLT5zcmNwYWQpOworICB9IGVsc2UgeworICAgIGdfbXV0ZXhfbG9jayAoJnJlbmRlci0+YXNzX211dGV4KTsKKyAgICBhc3Nfc2V0X2ZyYW1lX3NpemUgKHJlbmRlci0+YXNzX3JlbmRlcmVyLAorICAgICAgICByZW5kZXItPmFzc19mcmFtZV93aWR0aCwgcmVuZGVyLT5hc3NfZnJhbWVfaGVpZ2h0KTsKKyAgICBhc3Nfc2V0X3N0b3JhZ2Vfc2l6ZSAocmVuZGVyLT5hc3NfcmVuZGVyZXIsCisgICAgICAgIHJlbmRlci0+aW5mby53aWR0aCwgcmVuZGVyLT5pbmZvLmhlaWdodCk7CisgICAgYXNzX3NldF9waXhlbF9hc3BlY3QgKHJlbmRlci0+YXNzX3JlbmRlcmVyLAorICAgICAgICAoZ2RvdWJsZSkgcmVuZGVyLT5pbmZvLnBhcl9uIC8gKGdkb3VibGUpIHJlbmRlci0+aW5mby5wYXJfZCk7CisgICAgYXNzX3NldF9mb250X3NjYWxlIChyZW5kZXItPmFzc19yZW5kZXJlciwgMS4wKTsKKyAgICBhc3Nfc2V0X2hpbnRpbmcgKHJlbmRlci0+YXNzX3JlbmRlcmVyLCBBU1NfSElOVElOR19MSUdIVCk7CisKKyAgICBhc3Nfc2V0X2ZvbnRzIChyZW5kZXItPmFzc19yZW5kZXJlciwgIkFyaWFsIiwgInNhbnMtc2VyaWYiLCAxLCBOVUxMLCAxKTsKKyAgICBhc3Nfc2V0X2ZvbnRzIChyZW5kZXItPmFzc19yZW5kZXJlciwgTlVMTCwgIlNhbnMiLCAxLCBOVUxMLCAxKTsKKyAgICBhc3Nfc2V0X21hcmdpbnMgKHJlbmRlci0+YXNzX3JlbmRlcmVyLCAwLCAwLCAwLCAwKTsKKyAgICBhc3Nfc2V0X3VzZV9tYXJnaW5zIChyZW5kZXItPmFzc19yZW5kZXJlciwgMCk7CisgICAgZ19tdXRleF91bmxvY2sgKCZyZW5kZXItPmFzc19tdXRleCk7CisKKyAgICByZW5kZXItPnJlbmRlcmVyX2luaXRfb2sgPSBUUlVFOworCisgICAgR1NUX0RFQlVHX09CSkVDVCAocmVuZGVyLCAiYXNzIHJlbmRlcmVyIHNldHVwIGNvbXBsZXRlIik7CisgIH0KKworICBnc3RfY2Fwc191bnJlZiAob3ZlcmxheV9jYXBzKTsKKyAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworCisgIHJldHVybiByZXQ7CisKK25vX2Zvcm1hdDoKKyAgeworICAgIGlmIChjYXBzKQorICAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorfQorCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hc3NfcmVuZGVyX3NldGNhcHNfdmlkZW8gKEdzdFBhZCAqIHBhZCwgR3N0QXNzUmVuZGVyICogcmVuZGVyLAogICAgIEdzdENhcHMgKiBjYXBzKQogewotICBHc3RRdWVyeSAqcXVlcnk7Ci0gIGdib29sZWFuIHJldCA9IEZBTFNFOwotICBnaW50IHBhcl9uID0gMSwgcGFyX2QgPSAxOwotICBnZG91YmxlIGRhcjsKICAgR3N0VmlkZW9JbmZvIGluZm87Ci0gIGdib29sZWFuIGF0dGFjaCA9IEZBTFNFOwotICBnYm9vbGVhbiBjYXBzX2hhc19tZXRhID0gVFJVRTsKLSAgR3N0Q2Fwc0ZlYXR1cmVzICpmOwotICBHc3RDYXBzICpvcmlnaW5hbF9jYXBzID0gY2FwczsKKyAgZ2Jvb2xlYW4gcmV0OwogCiAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmaW5mbywgY2FwcykpCiAgICAgZ290byBpbnZhbGlkX2NhcHM7CiAKICAgcmVuZGVyLT5pbmZvID0gaW5mbzsKLSAgZ3N0X2NhcHNfcmVmIChjYXBzKTsKIAotICAvKiBUcnkgdG8gdXNlIHRoZSBvdmVybGF5IG1ldGEgaWYgcG9zc2libGUgKi8KLSAgZiA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAoY2FwcywgMCk7CisgIHJldCA9IGdzdF9hc3NfcmVuZGVyX25lZ290aWF0ZSAocmVuZGVyLCBjYXBzKTsKIAotICAvKiBpZiB0aGUgY2FwcyBkb2Vzbid0IGhhdmUgdGhlIG92ZXJsYXkgbWV0YSwgd2UgcXVlcnkgaWYgZG93bnN0cmVhbQotICAgKiBhY2NlcHRzIGl0IGJlZm9yZSB0cnlpbmcgdGhlIHZlcnNpb24gd2l0aG91dCB0aGUgbWV0YQotICAgKiBJZiB1cHN0cmVhbSBhbHJlYWR5IGlzIHVzaW5nIHRoZSBtZXRhIHRoZW4gd2UgY2FuIG9ubHkgdXNlIGl0ICovCi0gIGlmICghZgotICAgICAgfHwgIWdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmLAotICAgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTikpIHsKLSAgICBHc3RDYXBzICpvdmVybGF5X2NhcHM7CisgIEdTVF9BU1NfUkVOREVSX0xPQ0sgKHJlbmRlcik7CiAKLSAgICAvKiBJbiB0aGlzIGNhc2Ugd2UgYWRkZWQgdGhlIG1ldGEsIGJ1dCB3ZSBjYW4gd29yayB3aXRob3V0IGl0Ci0gICAgICogc28gcHJlc2VydmUgdGhlIG9yaWdpbmFsIGNhcHMgc28gd2UgY2FuIHVzZSBpdCBhcyBhIGZhbGxiYWNrICovCi0gICAgb3ZlcmxheV9jYXBzID0gZ3N0X2NhcHNfY29weSAoY2Fwcyk7Ci0KLSAgICBmID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChvdmVybGF5X2NhcHMsIDApOwotICAgIGdzdF9jYXBzX2ZlYXR1cmVzX2FkZCAoZiwKLSAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRVRBX0dTVF9WSURFT19PVkVSTEFZX0NPTVBPU0lUSU9OKTsKLQotICAgIHJldCA9IGdzdF9wYWRfcGVlcl9xdWVyeV9hY2NlcHRfY2FwcyAocmVuZGVyLT5zcmNwYWQsIG92ZXJsYXlfY2Fwcyk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocmVuZGVyLCAiRG93bnN0cmVhbSBhY2NlcHRzIHRoZSBvdmVybGF5IG1ldGE6ICVkIiwgcmV0KTsKLSAgICBpZiAocmV0KSB7Ci0gICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gICAgICBjYXBzID0gb3ZlcmxheV9jYXBzOwotCi0gICAgfSBlbHNlIHsKLSAgICAgIC8qIGZhbGxiYWNrIHRvIHRoZSBvcmlnaW5hbCAqLwotICAgICAgZ3N0X2NhcHNfdW5yZWYgKG92ZXJsYXlfY2Fwcyk7Ci0gICAgICBjYXBzX2hhc19tZXRhID0gRkFMU0U7Ci0gICAgfQotCisgIGlmICghcmVuZGVyLT5hdHRhY2hfY29tcG9fdG9fYnVmZmVyICYmICFnc3RfYXNzX3JlbmRlcl9jYW5faGFuZGxlX2NhcHMgKGNhcHMpKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAocmVuZGVyLCAidW5zdXBwb3J0ZWQgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CisgICAgcmV0ID0gRkFMU0U7CiAgIH0KLSAgR1NUX0RFQlVHX09CSkVDVCAocmVuZGVyLCAiVXNpbmcgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0gIHJldCA9IGdzdF9wYWRfc2V0X2NhcHMgKHJlbmRlci0+c3JjcGFkLCBjYXBzKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotCi0gIGlmICghcmV0KQotICAgIGdvdG8gb3V0OwotCi0gIHJlbmRlci0+d2lkdGggPSBpbmZvLndpZHRoOwotICByZW5kZXItPmhlaWdodCA9IGluZm8uaGVpZ2h0OwotCi0gIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19hbGxvY2F0aW9uIChjYXBzLCBGQUxTRSk7Ci0gIGlmIChjYXBzX2hhc19tZXRhICYmIGdzdF9wYWRfcGVlcl9xdWVyeSAocmVuZGVyLT5zcmNwYWQsIHF1ZXJ5KSkgewotICAgIGlmIChnc3RfcXVlcnlfZmluZF9hbGxvY2F0aW9uX21ldGEgKHF1ZXJ5LAotICAgICAgICAgICAgR1NUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT05fTUVUQV9BUElfVFlQRSwgTlVMTCkpCi0gICAgICBhdHRhY2ggPSBUUlVFOwotICB9Ci0gIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOwotCi0gIHJlbmRlci0+YXR0YWNoX2NvbXBvX3RvX2J1ZmZlciA9IGF0dGFjaDsKLQotICBpZiAoIWF0dGFjaCkgewotICAgIGlmIChjYXBzX2hhc19tZXRhKSB7Ci0gICAgICAvKiBTb21lIGVsZW1lbnRzIChmYWtlc2luaykgY2xhaW0gdG8gYWNjZXB0IHRoZSBtZXRhIG9uIGNhcHMgYnV0IHdvbid0Ci0gICAgICAgICBwdXQgaXQgaW4gdGhlIGFsbG9jYXRpb24gcXVlcnkgcmVzdWx0LCB0aGlzIGxlYWRzIGJlbG93Ci0gICAgICAgICBjaGVjayB0byBmYWlsLiBQcmV2ZW50IHRoaXMgYnkgcmVtb3ZpbmcgdGhlIG1ldGEgZnJvbSBjYXBzICovCi0gICAgICBjYXBzID0gb3JpZ2luYWxfY2FwczsKLSAgICAgIHJldCA9IGdzdF9wYWRfc2V0X2NhcHMgKHJlbmRlci0+c3JjcGFkLCBjYXBzKTsKLSAgICAgIGlmICghcmV0KQotICAgICAgICBnb3RvIG91dDsKLSAgICB9Ci0gICAgaWYgKCFnc3RfYXNzX3JlbmRlcl9jYW5faGFuZGxlX2NhcHMgKGNhcHMpKQotICAgICAgZ290byB1bnN1cHBvcnRlZF9jYXBzOwotICB9Ci0KLSAgZ19tdXRleF9sb2NrICgmcmVuZGVyLT5hc3NfbXV0ZXgpOwotICBhc3Nfc2V0X2ZyYW1lX3NpemUgKHJlbmRlci0+YXNzX3JlbmRlcmVyLCByZW5kZXItPndpZHRoLCByZW5kZXItPmhlaWdodCk7Ci0KLSAgZGFyID0gKCgoZ2RvdWJsZSkgcGFyX24pICogKChnZG91YmxlKSByZW5kZXItPndpZHRoKSkKLSAgICAgIC8gKCgoZ2RvdWJsZSkgcGFyX2QpICogKChnZG91YmxlKSByZW5kZXItPmhlaWdodCkpOwotI2lmICFkZWZpbmVkKExJQkFTU19WRVJTSU9OKSB8fCBMSUJBU1NfVkVSU0lPTiA8IDB4MDA5MDcwMDAKLSAgYXNzX3NldF9hc3BlY3RfcmF0aW8gKHJlbmRlci0+YXNzX3JlbmRlcmVyLCBkYXIpOwotI2Vsc2UKLSAgYXNzX3NldF9hc3BlY3RfcmF0aW8gKHJlbmRlci0+YXNzX3JlbmRlcmVyLAotICAgICAgZGFyLCAoKGdkb3VibGUpIHJlbmRlci0+d2lkdGgpIC8gKChnZG91YmxlKSByZW5kZXItPmhlaWdodCkpOwotI2VuZGlmCi0gIGFzc19zZXRfZm9udF9zY2FsZSAocmVuZGVyLT5hc3NfcmVuZGVyZXIsIDEuMCk7Ci0gIGFzc19zZXRfaGludGluZyAocmVuZGVyLT5hc3NfcmVuZGVyZXIsIEFTU19ISU5USU5HX0xJR0hUKTsKLQotI2lmICFkZWZpbmVkKExJQkFTU19WRVJTSU9OKSB8fCBMSUJBU1NfVkVSU0lPTiA8IDB4MDA5MDcwMDAKLSAgYXNzX3NldF9mb250cyAocmVuZGVyLT5hc3NfcmVuZGVyZXIsICJBcmlhbCIsICJzYW5zLXNlcmlmIik7Ci0gIGFzc19zZXRfZm9udHMgKHJlbmRlci0+YXNzX3JlbmRlcmVyLCBOVUxMLCAiU2FucyIpOwotI2Vsc2UKLSAgYXNzX3NldF9mb250cyAocmVuZGVyLT5hc3NfcmVuZGVyZXIsICJBcmlhbCIsICJzYW5zLXNlcmlmIiwgMSwgTlVMTCwgMSk7Ci0gIGFzc19zZXRfZm9udHMgKHJlbmRlci0+YXNzX3JlbmRlcmVyLCBOVUxMLCAiU2FucyIsIDEsIE5VTEwsIDEpOwotI2VuZGlmCi0gIGFzc19zZXRfbWFyZ2lucyAocmVuZGVyLT5hc3NfcmVuZGVyZXIsIDAsIDAsIDAsIDApOwotICBhc3Nfc2V0X3VzZV9tYXJnaW5zIChyZW5kZXItPmFzc19yZW5kZXJlciwgMCk7Ci0gIGdfbXV0ZXhfdW5sb2NrICgmcmVuZGVyLT5hc3NfbXV0ZXgpOwotCi0gIHJlbmRlci0+cmVuZGVyZXJfaW5pdF9vayA9IFRSVUU7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAocmVuZGVyLCAiYXNzIHJlbmRlcmVyIHNldHVwIGNvbXBsZXRlIik7Ci0KLW91dDoKKyAgR1NUX0FTU19SRU5ERVJfVU5MT0NLIChyZW5kZXIpOwogCiAgIHJldHVybiByZXQ7CiAKICAgLyogRVJST1JTICovCiBpbnZhbGlkX2NhcHM6CiAgIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUIChyZW5kZXIsICJDYW4ndCBwYXJzZSBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0gICAgcmV0ID0gRkFMU0U7Ci0gICAgZ290byBvdXQ7Ci0gIH0KLXVuc3VwcG9ydGVkX2NhcHM6Ci0gIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUIChyZW5kZXIsICJVbnN1cHBvcnRlZCBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0gICAgcmV0ID0gRkFMU0U7Ci0gICAgZ290byBvdXQ7CisgICAgR1NUX0VSUk9SX09CSkVDVCAocmVuZGVyLCAiY291bGQgbm90IHBhcnNlIGNhcHMiKTsKKyAgICByZXR1cm4gRkFMU0U7CiAgIH0KIH0KIApAQCAtOTYzLDYgKzEwNjIsNyBAQAogICBnaW50IG1heF94LCBtYXhfeTsKICAgZ2ludCB3aWR0aCwgaGVpZ2h0OwogICBnaW50IHN0cmlkZTsKKyAgZ2RvdWJsZSBoc2NhbGUsIHZzY2FsZTsKICAgZ3BvaW50ZXIgZGF0YTsKIAogICBtaW5feCA9IEdfTUFYSU5UOwpAQCAtOTgyLDggKzEwODIsOCBAQAogICAgICAgbWF4X3kgPSBpbWFnZS0+ZHN0X3kgKyBpbWFnZS0+aDsKICAgfQogCi0gIHdpZHRoID0gTUlOIChtYXhfeCAtIG1pbl94LCByZW5kZXItPndpZHRoKTsKLSAgaGVpZ2h0ID0gTUlOIChtYXhfeSAtIG1pbl95LCByZW5kZXItPmhlaWdodCk7CisgIHdpZHRoID0gTUlOIChtYXhfeCAtIG1pbl94LCByZW5kZXItPmFzc19mcmFtZV93aWR0aCk7CisgIGhlaWdodCA9IE1JTiAobWF4X3kgLSBtaW5feSwgcmVuZGVyLT5hc3NfZnJhbWVfaGVpZ2h0KTsKIAogICBHU1RfREVCVUdfT0JKRUNUIChyZW5kZXIsICJyZW5kZXIgb3ZlcmxheSByZWN0YW5nbGUgJWR4JWQlK2QlK2QiLAogICAgICAgd2lkdGgsIGhlaWdodCwgbWluX3gsIG1pbl95KTsKQEAgLTEwMDcsOCArMTEwNywxMiBAQAogICAgICAgLW1pbl94LCAtbWluX3kpOwogICBnc3RfdmlkZW9fbWV0YV91bm1hcCAodm1ldGEsIDAsICZtYXApOwogCi0gIHJlY3RhbmdsZSA9IGdzdF92aWRlb19vdmVybGF5X3JlY3RhbmdsZV9uZXdfcmF3IChidWZmZXIsIG1pbl94LCBtaW5feSwKLSAgICAgIHdpZHRoLCBoZWlnaHQsIEdTVF9WSURFT19PVkVSTEFZX0ZPUk1BVF9GTEFHX1BSRU1VTFRJUExJRURfQUxQSEEpOworICBoc2NhbGUgPSAoZ2RvdWJsZSkgcmVuZGVyLT5pbmZvLndpZHRoIC8gKGdkb3VibGUpIHJlbmRlci0+YXNzX2ZyYW1lX3dpZHRoOworICB2c2NhbGUgPSAoZ2RvdWJsZSkgcmVuZGVyLT5pbmZvLmhlaWdodCAvIChnZG91YmxlKSByZW5kZXItPmFzc19mcmFtZV9oZWlnaHQ7CisKKyAgcmVjdGFuZ2xlID0gZ3N0X3ZpZGVvX292ZXJsYXlfcmVjdGFuZ2xlX25ld19yYXcgKGJ1ZmZlciwKKyAgICAgIGhzY2FsZSAqIG1pbl94LCB2c2NhbGUgKiBtaW5feSwgaHNjYWxlICogd2lkdGgsIHZzY2FsZSAqIGhlaWdodCwKKyAgICAgIEdTVF9WSURFT19PVkVSTEFZX0ZPUk1BVF9GTEFHX1BSRU1VTFRJUExJRURfQUxQSEEpOwogCiAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CiAKQEAgLTEwNTcsNiArMTE2MSw5IEBACiAgIGd1aW50NjQgc3RhcnQsIHN0b3AsIGNsaXBfc3RhcnQgPSAwLCBjbGlwX3N0b3AgPSAwOwogICBBU1NfSW1hZ2UgKmFzc19pbWFnZTsKIAorICBpZiAoZ3N0X3BhZF9jaGVja19yZWNvbmZpZ3VyZSAocmVuZGVyLT5zcmNwYWQpKQorICAgIGdzdF9hc3NfcmVuZGVyX25lZ290aWF0ZSAocmVuZGVyLCBOVUxMKTsKKwogICBpZiAoIUdTVF9CVUZGRVJfVElNRVNUQU1QX0lTX1ZBTElEIChidWZmZXIpKQogICAgIGdvdG8gbWlzc2luZ190aW1lc3RhbXA7CiAKQEAgLTExODksOCArMTI5Niw3IEBACiAKICAgICAgIGlmICgoIWFzc19pbWFnZSB8fCBjaGFuZ2VkKSAmJiByZW5kZXItPmNvbXBvc2l0aW9uKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJlbmRlciwgInJlbGVhc2Ugb3ZlcmxheSAoY2hhbmdlZCAlZCkiLCBjaGFuZ2VkKTsKLSAgICAgICAgZ3N0X3ZpZGVvX292ZXJsYXlfY29tcG9zaXRpb25fdW5yZWYgKHJlbmRlci0+Y29tcG9zaXRpb24pOwotICAgICAgICByZW5kZXItPmNvbXBvc2l0aW9uID0gTlVMTDsKKyAgICAgICAgZ3N0X2Fzc19yZW5kZXJfcmVzZXRfY29tcG9zaXRpb24gKHJlbmRlcik7CiAgICAgICB9CiAKICAgICAgIGlmIChhc3NfaW1hZ2UgIT0gTlVMTCkgewpkaWZmIC0tZ2l0IGEvZXh0L2Fzc3JlbmRlci9nc3Rhc3NyZW5kZXIuaCBiL2V4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmgKaW5kZXggNGFjZDllNi4uNDJmNzRhMCAxMDA2NDQKLS0tIGEvZXh0L2Fzc3JlbmRlci9nc3Rhc3NyZW5kZXIuaAorKysgYi9leHQvYXNzcmVuZGVyL2dzdGFzc3JlbmRlci5oCkBAIC03NiwxMyArNzYsMTQgQEAKICAgQVNTX0xpYnJhcnkgKmFzc19saWJyYXJ5OwogICBBU1NfUmVuZGVyZXIgKmFzc19yZW5kZXJlcjsKICAgQVNTX1RyYWNrICphc3NfdHJhY2s7CisgIGdpbnQgYXNzX2ZyYW1lX3dpZHRoLCBhc3NfZnJhbWVfaGVpZ2h0OwogCiAgIGdib29sZWFuIHJlbmRlcmVyX2luaXRfb2ssIHRyYWNrX2luaXRfb2s7CiAgIGdib29sZWFuIG5lZWRfcHJvY2VzczsKIAogICAvKiBvdmVybGF5IHN0dWZmICovCiAgIEdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uICpjb21wb3NpdGlvbjsKLSAgZ2ludCB3aWR0aCwgaGVpZ2h0OworICBndWludCB3aW5kb3dfd2lkdGgsIHdpbmRvd19oZWlnaHQ7CiAgIGdib29sZWFuIGF0dGFjaF9jb21wb190b19idWZmZXI7CiB9OwogCmRpZmYgLS1naXQgYS9leHQvYnMyYi9NYWtlZmlsZS5pbiBiL2V4dC9iczJiL01ha2VmaWxlLmluCmluZGV4IDA0MzNmMDkuLmZmOTk5MjggMTAwNjQ0Ci0tLSBhL2V4dC9iczJiL01ha2VmaWxlLmluCisrKyBiL2V4dC9iczJiL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2J6Mi9NYWtlZmlsZS5pbiBiL2V4dC9iejIvTWFrZWZpbGUuaW4KaW5kZXggNzliM2MwZC4uNDU2Nzc0OCAxMDA2NDQKLS0tIGEvZXh0L2J6Mi9NYWtlZmlsZS5pbgorKysgYi9leHQvYnoyL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2Nocm9tYXByaW50L01ha2VmaWxlLmluIGIvZXh0L2Nocm9tYXByaW50L01ha2VmaWxlLmluCmluZGV4IDM3YjY1YTEuLmNiN2QyNzIgMTAwNjQ0Ci0tLSBhL2V4dC9jaHJvbWFwcmludC9NYWtlZmlsZS5pbgorKysgYi9leHQvY2hyb21hcHJpbnQvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvY2hyb21hcHJpbnQvZ3N0Y2hyb21hcHJpbnQuYyBiL2V4dC9jaHJvbWFwcmludC9nc3RjaHJvbWFwcmludC5jCmluZGV4IDdjMDUyMjEuLmI3MjE3YTYgMTAwNjQ0Ci0tLSBhL2V4dC9jaHJvbWFwcmludC9nc3RjaHJvbWFwcmludC5jCisrKyBiL2V4dC9jaHJvbWFwcmludC9nc3RjaHJvbWFwcmludC5jCkBAIC0zMiw3ICszMiw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtbSB1cmlkZWNvZGViaW4gdXJpPWZpbGU6Ly8vcGF0aC90by9zb25nLm9nZyAhIGF1ZGlvY29udmVydCAhIGNocm9tYXByaW50ICEgZmFrZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC1tIHVyaWRlY29kZWJpbiB1cmk9ZmlsZTovLy9wYXRoL3RvL3Nvbmcub2dnICEgYXVkaW9jb252ZXJ0ICEgY2hyb21hcHJpbnQgISBmYWtlc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2V4dC9jdXJsL01ha2VmaWxlLmluIGIvZXh0L2N1cmwvTWFrZWZpbGUuaW4KaW5kZXggMjFjYTM5OS4uNzFlMmY1NiAxMDA2NDQKLS0tIGEvZXh0L2N1cmwvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2N1cmwvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjg4LDYgKzI4Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzI1LDYgKzMyNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzMzLDcgKzMzNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM1Miw4ICszNTQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzcwLDE2ICszNzMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDA1LDYgKzQwOSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQzMCw2ICs0MzYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MzEsNiArNTM5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU0NCw4ICs1NTMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NjEsNiArNTY4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxOCwxNiArNjI3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjc5LDYgKzY5MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODksNiArNzAxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjk4LDYgKzcxMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MzUsNyArNzUwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvY3VybC9nc3RjdXJsYmFzZXNpbmsuYyBiL2V4dC9jdXJsL2dzdGN1cmxiYXNlc2luay5jCmluZGV4IGI0N2YyNDYuLjcyNWYxYWMgMTAwNjQ0Ci0tLSBhL2V4dC9jdXJsL2dzdGN1cmxiYXNlc2luay5jCisrKyBiL2V4dC9jdXJsL2dzdGN1cmxiYXNlc2luay5jCkBAIC0yOCw3ICsyOCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZSAodXBsb2FkIGEgSlBFRyBmaWxlIHRvIGFuIEhUVFAgc2VydmVyKTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPWltYWdlLmpwZyAhIGpwZWdwYXJzZSAhIGN1cmxzaW5rICBcCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPWltYWdlLmpwZyAhIGpwZWdwYXJzZSAhIGN1cmxzaW5rICBcCiAgKiAgICAgZmlsZS1uYW1lPWltYWdlLmpwZyAgXAogICogICAgIGxvY2F0aW9uPWh0dHA6Ly8xOTIuMTY4LjAuMTo4MDgwL2NnaS1iaW4vcGF0dXBsb2FkLmNnaS8gIFwKICAqICAgICB1c2VyPXRlc3QgcGFzc3dkPXRlc3QgIFwKQEAgLTM0OSwxMiArMzQ5LDE3IEBACiAKICAgc2luayA9IEdTVF9DVVJMX0JBU0VfU0lOSyAoYnNpbmspOwogCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc2luayk7Ci0KICAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJm1hcCwgR1NUX01BUF9SRUFEKTsKICAgZGF0YSA9IG1hcC5kYXRhOwogICBzaXplID0gbWFwLnNpemU7CiAKKyAgaWYgKHNpemUgPT0gMCkgeworICAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZiwgJm1hcCk7CisgICAgcmV0dXJuIEdTVF9GTE9XX09LOworICB9CisKKyAgR1NUX09CSkVDVF9MT0NLIChzaW5rKTsKKwogICAvKiBjaGVjayBpZiB0aGUgdHJhbnNmZXIgdGhyZWFkIGhhcyBlbmNvdW50ZXJlZCBwcm9ibGVtcyB3aGlsZSB0aGUKICAgICogcGlwZWxpbmUgdGhyZWFkIHdhcyB3b3JraW5nIGVsc2V3aGVyZSAqLwogICBpZiAoc2luay0+Zmxvd19yZXQgIT0gR1NUX0ZMT1dfT0spIHsKZGlmZiAtLWdpdCBhL2V4dC9jdXJsL2dzdGN1cmxmaWxlc2luay5jIGIvZXh0L2N1cmwvZ3N0Y3VybGZpbGVzaW5rLmMKaW5kZXggZDI4NjU0MC4uYjRhYTE3NCAxMDA2NDQKLS0tIGEvZXh0L2N1cmwvZ3N0Y3VybGZpbGVzaW5rLmMKKysrIGIvZXh0L2N1cmwvZ3N0Y3VybGZpbGVzaW5rLmMKQEAgLTI5LDcgKzI5LDcgQEAKICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lICh1cGxvYWQgYSBKUEVHIGZpbGUgdG8gL2hvbWUvdGVzdC9pbWFnZXMKICAqIGRpcmVjdG9yeSk8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj1pbWFnZS5qcGcgISBqcGVncGFyc2UgISBjdXJsZmlsZXNpbmsgIFwKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249aW1hZ2UuanBnICEganBlZ3BhcnNlICEgY3VybGZpbGVzaW5rICBcCiAgKiAgICAgZmlsZS1uYW1lPWltYWdlLmpwZyAgXAogICogICAgIGxvY2F0aW9uPWZpbGU6Ly8vaG9tZS90ZXN0L2ltYWdlcy8KICAqIF18CmRpZmYgLS1naXQgYS9leHQvY3VybC9nc3RjdXJsZnRwc2luay5jIGIvZXh0L2N1cmwvZ3N0Y3VybGZ0cHNpbmsuYwppbmRleCA5OTVmZTM4Li45MmI1YzRlIDEwMDY0NAotLS0gYS9leHQvY3VybC9nc3RjdXJsZnRwc2luay5jCisrKyBiL2V4dC9jdXJsL2dzdGN1cmxmdHBzaW5rLmMKQEAgLTI5LDcgKzI5LDcgQEAKICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lICh1cGxvYWQgYSBKUEVHIGZpbGUgdG8gL2hvbWUvdGVzdC9pbWFnZXMKICAqIGRpcmVjdG9yeSk8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj1pbWFnZS5qcGcgISBqcGVncGFyc2UgISBjdXJsZnRwc2luayAgXAorICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj1pbWFnZS5qcGcgISBqcGVncGFyc2UgISBjdXJsZnRwc2luayAgXAogICogICAgIGZpbGUtbmFtZT1pbWFnZS5qcGcgIFwKICAqICAgICBsb2NhdGlvbj1mdHA6Ly8xOTIuMTY4LjAuMS9pbWFnZXMvCiAgKiBdfApAQCAtMjMwLDcgKzIzMCw4IEBACiAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogCi0gICAgcmVzID0gY3VybF9lYXN5X3NldG9wdCAoYmFzZXNpbmstPmN1cmwsIENVUkxPUFRfUE9TVFFVT1RFLCBzaW5rLT5oZWFkZXJsaXN0KTsKKyAgICByZXMgPQorICAgICAgICBjdXJsX2Vhc3lfc2V0b3B0IChiYXNlc2luay0+Y3VybCwgQ1VSTE9QVF9QT1NUUVVPVEUsIHNpbmstPmhlYWRlcmxpc3QpOwogICAgIGlmIChyZXMgIT0gQ1VSTEVfT0spIHsKICAgICAgIGJhc2VzaW5rLT5lcnJvciA9IGdfc3RyZHVwX3ByaW50ZiAoImZhaWxlZCB0byBzZXQgcG9zdCBxdW90ZTogJXMiLAogICAgICAgICAgIGN1cmxfZWFzeV9zdHJlcnJvciAocmVzKSk7CmRpZmYgLS1naXQgYS9leHQvY3VybC9nc3RjdXJsaHR0cHNpbmsuYyBiL2V4dC9jdXJsL2dzdGN1cmxodHRwc2luay5jCmluZGV4IDM2NjBmNWIuLmE1MGEwNTcgMTAwNjQ0Ci0tLSBhL2V4dC9jdXJsL2dzdGN1cmxodHRwc2luay5jCisrKyBiL2V4dC9jdXJsL2dzdGN1cmxodHRwc2luay5jCkBAIC0yOCw3ICsyOCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZSAodXBsb2FkIGEgSlBFRyBmaWxlIHRvIGFuIEhUVFAgc2VydmVyKTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPWltYWdlLmpwZyAhIGpwZWdwYXJzZSAhIGN1cmxodHRwc2luayAgXAorICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj1pbWFnZS5qcGcgISBqcGVncGFyc2UgISBjdXJsaHR0cHNpbmsgIFwKICAqICAgICBmaWxlLW5hbWU9aW1hZ2UuanBnICBcCiAgKiAgICAgbG9jYXRpb249aHR0cDovLzE5Mi4xNjguMC4xOjgwODAvY2dpLWJpbi9wYXR1cGxvYWQuY2dpLyAgXAogICogICAgIHVzZXI9dGVzdCBwYXNzd2Q9dGVzdCAgXApkaWZmIC0tZ2l0IGEvZXh0L2N1cmwvZ3N0Y3VybHNmdHBzaW5rLmMgYi9leHQvY3VybC9nc3RjdXJsc2Z0cHNpbmsuYwppbmRleCA1YjU0NGYwLi45MzllYmQ4IDEwMDY0NAotLS0gYS9leHQvY3VybC9nc3RjdXJsc2Z0cHNpbmsuYworKysgYi9leHQvY3VybC9nc3RjdXJsc2Z0cHNpbmsuYwpAQCAtMjgsNyArMjgsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmUgKHVwbG9hZCBhIGZpbGUgdG8gL2hvbWUvam9obi9zZnRwX3Rlc3RzLyk8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj0vaG9tZS9qZG9lL3NvbWUuZmlsZSAhIGN1cmxzZnRwc2luayAgXAorICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj0vaG9tZS9qZG9lL3NvbWUuZmlsZSAhIGN1cmxzZnRwc2luayAgXAogICogICAgIGZpbGUtbmFtZT1zb21lLmZpbGUuYmFja3VwICBcCiAgKiAgICAgdXNlcj1qb2huIGxvY2F0aW9uPXNmdHA6Ly8xOTIuMTY4LjAuMS9+L3NmdHBfdGVzdHMvICBcCiAgKiAgICAgc3NoLWF1dGgtdHlwZT0xIHNzaC1rZXktcGFzc3BocmFzZT1ibGFibGEgIFwKZGlmZiAtLWdpdCBhL2V4dC9jdXJsL2dzdGN1cmxzbXRwc2luay5jIGIvZXh0L2N1cmwvZ3N0Y3VybHNtdHBzaW5rLmMKaW5kZXggN2RlMWRkZi4uNDBhYjAxNiAxMDA2NDQKLS0tIGEvZXh0L2N1cmwvZ3N0Y3VybHNtdHBzaW5rLmMKKysrIGIvZXh0L2N1cmwvZ3N0Y3VybHNtdHBzaW5rLmMKQEAgLTI4LDcgKzI4LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lICh1cGxvYWQgYSBKUEVHIGZpbGUgdG8gYW4gU01UUCBzZXJ2ZXIpPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249aW1hZ2UuanBnICEganBlZ3BhcnNlICEgY3VybHNtdHBzaW5rICBcCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPWltYWdlLmpwZyAhIGpwZWdwYXJzZSAhIGN1cmxzbXRwc2luayAgXAogICogICAgIGZpbGUtbmFtZT1pbWFnZS5qcGcgIFwKICAqICAgICBsb2NhdGlvbj1zbXRwOi8vc210cC5nbWFpbC5jb206NTA3IFwKICAqICAgICB1c2VyPXRlc3QgcGFzc3dkPXRlc3QgIFwKZGlmZiAtLWdpdCBhL2V4dC9kYWFsYS9NYWtlZmlsZS5pbiBiL2V4dC9kYWFsYS9NYWtlZmlsZS5pbgppbmRleCBjMzdjNGFkLi5lOTJmYzRkIDEwMDY0NAotLS0gYS9leHQvZGFhbGEvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2RhYWxhL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2RhYWxhL2dzdGRhYWxhZGVjLmMgYi9leHQvZGFhbGEvZ3N0ZGFhbGFkZWMuYwppbmRleCAwY2Y0ZjYzLi5kNDA1MzdkIDEwMDY0NAotLS0gYS9leHQvZGFhbGEvZ3N0ZGFhbGFkZWMuYworKysgYi9leHQvZGFhbGEvZ3N0ZGFhbGFkZWMuYwpAQCAtMzMsNyArMzMsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgZmlsZXNyYyBsb2NhdGlvbj12aWRlb3Rlc3RzcmMub2dnICEgb2dnZGVtdXggISBkYWFsYWRlYyAhIHh2aW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPXZpZGVvdGVzdHNyYy5vZ2cgISBvZ2dkZW11eCAhIGRhYWxhZGVjICEgeHZpbWFnZXNpbmsKICAqIF18IFRoaXMgZXhhbXBsZSBwaXBlbGluZSB3aWxsIGRlY29kZSBhbiBvZ2cgc3RyZWFtIGFuZCBkZWNvZGVzIHRoZSBkYWFsYSB2aWRlby4gUmVmZXIgdG8KICAqIHRoZSBkYWFsYWVuYyBleGFtcGxlIHRvIGNyZWF0ZSB0aGUgb2dnIGZpbGUuCiAgKiA8L3JlZnNlY3QyPgpAQCAtNTAsOCArNTAsOCBAQAogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb3Bvb2wuaD4KIAogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZGFhbGFkZWNfZGVidWcKLUdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfREVGQVVMVCk7Ci1HU1RfREVCVUdfQ0FURUdPUllfRVhURVJOIChHU1RfQ0FUX1BFUkZPUk1BTkNFKTsKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGRhYWxhZGVjX2RlYnVnKTsKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKENBVF9QRVJGT1JNQU5DRSk7CiAKIC8qIFRoaXMgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYmFzZSBjbGFzcywgdGhpcyBpcyB1c2VkIGFzIGEKICAgIHRlbXBvcmFyeSByZXR1cm4gdG8gc2lnbmFsIHRoZSBuZWVkIHRvIGNhbGwgX2Ryb3BfZnJhbWUsCkBAIC0xMjIsNiArMTIyLDcgQEAKICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChkYWFsYV9kZWNfZGVjaWRlX2FsbG9jYXRpb24pOwogCiAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChkYWFsYWRlY19kZWJ1ZywgImRhYWxhZGVjIiwgMCwgIkRhYWxhIGRlY29kZXIiKTsKKyAgR1NUX0RFQlVHX0NBVEVHSVJZX0dFVCAoQ0FUX1BFUkZPUk1BTkNFLCAiR1NUX1BFUkZPUk1BTkNFIik7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC00NDksNyArNDUwLDcgQEAKICAgfQogCiAgIC8qIGlmIG9ubHkgbGliZGFhbGEgd291bGQgYWxsb3cgdXMgdG8gZ2l2ZSBpdCBhIGRlc3RpbmF0aW9uIGZyYW1lICovCi0gIEdTVF9DQVRfVFJBQ0VfT0JKRUNUIChHU1RfQ0FUX1BFUkZPUk1BTkNFLCBkZWMsCisgIEdTVF9DQVRfVFJBQ0VfT0JKRUNUIChDQVRfUEVSRk9STUFOQ0UsIGRlYywKICAgICAgICJkb2luZyB1bmF2b2lkYWJsZSB2aWRlbyBmcmFtZSBjb3B5Iik7CiAKICAgaWYgKEdfVU5MSUtFTFkgKCFnc3RfdmlkZW9fZnJhbWVfbWFwICgmdmZyYW1lLCAmZGVjLT5vdXRwdXRfc3RhdGUtPmluZm8sCmRpZmYgLS1naXQgYS9leHQvZGFhbGEvZ3N0ZGFhbGFlbmMuYyBiL2V4dC9kYWFsYS9nc3RkYWFsYWVuYy5jCmluZGV4IDc3YWIwYjIuLjcwNWM3ZTYgMTAwNjQ0Ci0tLSBhL2V4dC9kYWFsYS9nc3RkYWFsYWVuYy5jCisrKyBiL2V4dC9kYWFsYS9nc3RkYWFsYWVuYy5jCkBAIC0zMyw3ICszMyw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MTAwMCAhIGRhYWxhZW5jICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249dmlkZW90ZXN0c3JjLm9nZworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTEwMDAgISBkYWFsYWVuYyAhIG9nZ211eCAhIGZpbGVzaW5rIGxvY2F0aW9uPXZpZGVvdGVzdHNyYy5vZ2cKICAqIF18IFRoaXMgZXhhbXBsZSBwaXBlbGluZSB3aWxsIGVuY29kZSBhIHRlc3QgdmlkZW8gc291cmNlIHRvIGRhYWxhIG11eGVkIGluIGFuCiAgKiBvZ2cgY29udGFpbmVyLiBSZWZlciB0byB0aGUgZGFhbGFkZWMgZG9jdW1lbnRhdGlvbiB0byBkZWNvZGUgdGhlIGNyZWF0ZQogICogc3RyZWFtLgpkaWZmIC0tZ2l0IGEvZXh0L2Rhc2gvTWFrZWZpbGUuaW4gYi9leHQvZGFzaC9NYWtlZmlsZS5pbgppbmRleCA5MzRhYWE2Li5lZjY1YWIwIDEwMDY0NAotLS0gYS9leHQvZGFzaC9NYWtlZmlsZS5pbgorKysgYi9leHQvZGFzaC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzksNiArMjc4LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTYsNiArMzE3LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjQsNyArMzI3LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQzLDggKzM0NSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjEsMTYgKzM2NCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTYsNiArNDAwLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIxLDYgKzQyNyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMiw2ICs1MzAsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM1LDggKzU0NCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1Miw2ICs1NTksOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA5LDE2ICs2MTgsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzAsNiArNjgxLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4MCw2ICs2OTIsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODksNiArNzAyLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNiw3ICs3NDEsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9kYXNoL2dzdGRhc2hkZW11eC5jIGIvZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmMKaW5kZXggMjBkNjc2NC4uNGMxZjk5OSAxMDA2NDQKLS0tIGEvZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmMKKysrIGIvZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmMKQEAgLTE0Niw2ICsxNDYsNyBAQAogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnc3QvYmFzZS9nc3R0eXBlZmluZGhlbHBlci5oPgpAQCAtMTY3LDYgKzE2OCwxMiBAQAogICAgIEdTVF9QQURfU09NRVRJTUVTLAogICAgIEdTVF9TVEFUSUNfQ0FQU19BTlkpOwogCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X2Rhc2hfZGVtdXhfc3VidGl0bGVzcmNfdGVtcGxhdGUgPQorR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzdWJ0aXRsZV8lMDJ1IiwKKyAgICBHU1RfUEFEX1NSQywKKyAgICBHU1RfUEFEX1NPTUVUSU1FUywKKyAgICBHU1RfU1RBVElDX0NBUFNfQU5ZKTsKKwogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmt0ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCiAgICAgR1NUX1BBRF9TSU5LLAogICAgIEdTVF9QQURfQUxXQVlTLApAQCAtMTgyLDYgKzE4OSw3IEBACiAgIFBST1BfTUFYX0JVRkZFUklOR19USU1FLAogICBQUk9QX0JBTkRXSURUSF9VU0FHRSwKICAgUFJPUF9NQVhfQklUUkFURSwKKyAgUFJPUF9QUkVTRU5UQVRJT05fREVMQVksCiAgIFBST1BfTEFTVAogfTsKIApAQCAtMTg5LDYgKzE5Nyw3IEBACiAjZGVmaW5lIERFRkFVTFRfTUFYX0JVRkZFUklOR19USU1FICAgICAgIDMwICAgICAvKiBpbiBzZWNvbmRzICovCiAjZGVmaW5lIERFRkFVTFRfQkFORFdJRFRIX1VTQUdFICAgICAgICAgMC44ICAgICAvKiAwIHRvIDEgICAgICovCiAjZGVmaW5lIERFRkFVTFRfTUFYX0JJVFJBVEUgICAgICAgIDI0MDAwMDAwICAgICAvKiBpbiBiaXQvcyAgKi8KKyNkZWZpbmUgREVGQVVMVF9QUkVTRU5UQVRJT05fREVMQVkgICAgIE5VTEwgICAgIC8qIHplcm8gKi8KIAogLyogQ2xvY2sgZHJpZnQgY29tcGVuc2F0aW9uIGZvciBsaXZlIHN0cmVhbXMgKi8KICNkZWZpbmUgU0xPV19DTE9DS19VUERBVEVfSU5URVJWQUwgICgxMDAwMDAwICogMzAgKiA2MCkgLyogMzAgbWludXRlcyAqLwpAQCAtMjAxLDExICsyMTAsOSBAQAogICBHTXV0ZXggY2xvY2tfbG9jazsgICAgICAgICAgICAvKiB1c2VkIHRvIHByb3RlY3QgYWNjZXNzIHRvIHN0cnVjdCAqLwogICBndWludCBzZWxlY3RlZF91cmw7CiAgIGdpbnQ2NCBuZXh0X3VwZGF0ZTsKLSAgR0NvbmQgY2xvY2tfY29uZDsgICAgICAgICAgICAgLyogdXNlZCBmb3Igd2FpdGluZyB1bnRpbCBnb3RfY2xvY2s9PVRSVUUgKi8KICAgLyogQGNsb2NrX2NvbXBlbnNhdGlvbjogYW1vdW50IChpbiB1c2VjcykgdG8gYWRkIHRvIGNsaWVudCdzIGlkZWEgb2YKICAgICAgbm93IHRvIG1hcCBpdCB0byB0aGUgc2VydmVyJ3MgaWRlYSBvZiBub3cgKi8KICAgR1RpbWVTcGFuIGNsb2NrX2NvbXBlbnNhdGlvbjsKLSAgZ2Jvb2xlYW4gZ290X2Nsb2NrOyAgICAgICAgICAgLyogaW5kaWNhdGVzIHRpbWUgc291cmNlIGhhcyByZXR1cm5lZCBhIHZhbGlkIGNsb2NrIGF0IGxlYXN0IG9uY2UgKi8KICAgR3N0Q2xvY2sgKm50cF9jbG9jazsKIH07CiAKQEAgLTIyNiwxOSArMjMzLDIwIEBACiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X2Rhc2hfZGVtdXhfc3RyZWFtX3VwZGF0ZV9mcmFnbWVudF9pbmZvIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9kYXNoX2RlbXV4X3N0cmVhbV9zZWVrIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICoKLSAgICBzdHJlYW0sIEdzdENsb2NrVGltZSB0cyk7Ci1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9kYXNoX2RlbXV4X3N0cmVhbV9oYXNfbmV4dF9mcmFnbWVudCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSk7CisgICAgc3RyZWFtLCBnYm9vbGVhbiBmb3J3YXJkLCBHc3RTZWVrRmxhZ3MgZmxhZ3MsIEdzdENsb2NrVGltZSB0cywKKyAgICBHc3RDbG9ja1RpbWUgKiBmaW5hbF90cyk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2Rhc2hfZGVtdXhfc3RyZWFtX2hhc19uZXh0X2ZyYWdtZW50IChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtCisgICAgKiBzdHJlYW0pOwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9kYXNoX2RlbXV4X3N0cmVhbV9hZHZhbmNlX2ZyYWdtZW50IChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKTsKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2Rhc2hfZGVtdXhfc3RyZWFtX2FkdmFuY2Vfc3ViZnJhZ21lbnQgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pOwogc3RhdGljIGdib29sZWFuIGdzdF9kYXNoX2RlbXV4X3N0cmVhbV9zZWxlY3RfYml0cmF0ZSAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqCiAgICAgc3RyZWFtLCBndWludDY0IGJpdHJhdGUpOwotc3RhdGljIGdpbnQ2NAotZ3N0X2Rhc2hfZGVtdXhfZ2V0X21hbmlmZXN0X3VwZGF0ZV9pbnRlcnZhbCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KTsKLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfZGFzaF9kZW11eF91cGRhdGVfbWFuaWZlc3RfZGF0YSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LCBHc3RCdWZmZXIgKiBidWYpOworc3RhdGljIGdpbnQ2NCBnc3RfZGFzaF9kZW11eF9nZXRfbWFuaWZlc3RfdXBkYXRlX2ludGVydmFsIChHc3RBZGFwdGl2ZURlbXV4ICoKKyAgICBkZW11eCk7CitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfZGFzaF9kZW11eF91cGRhdGVfbWFuaWZlc3RfZGF0YSAoR3N0QWRhcHRpdmVEZW11eCAqCisgICAgZGVtdXgsIEdzdEJ1ZmZlciAqIGJ1Zik7CiBzdGF0aWMgZ2ludDY0CiBnc3RfZGFzaF9kZW11eF9zdHJlYW1fZ2V0X2ZyYWdtZW50X3dhaXRpbmdfdGltZSAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqCiAgICAgc3RyZWFtKTsKQEAgLTI5Myw2ICszMDEsNyBAQAogCiAgIGdzdF9kYXNoX2RlbXV4X2Nsb2NrX2RyaWZ0X2ZyZWUgKGRlbXV4LT5jbG9ja19kcmlmdCk7CiAgIGRlbXV4LT5jbG9ja19kcmlmdCA9IE5VTEw7CisgIGdfZnJlZSAoZGVtdXgtPmRlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5KTsKICAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmRpc3Bvc2UgKG9iaik7CiB9CiAKQEAgLTMwMSwxOCArMzEwLDMzIEBACiAgICAgZ2ludDY0ICogc3RvcCkKIHsKICAgR3N0RGFzaERlbXV4ICpzZWxmID0gR1NUX0RBU0hfREVNVVggKGRlbXV4KTsKLSAgR0RhdGVUaW1lICpub3cgPSBnc3RfZGFzaF9kZW11eF9nZXRfc2VydmVyX25vd191dGMgKHNlbGYpOwotICBHRGF0ZVRpbWUgKm1zdGFydCA9Ci0gICAgICBnc3RfZGF0ZV90aW1lX3RvX2dfZGF0ZV90aW1lIChzZWxmLT5jbGllbnQtPgotICAgICAgbXBkX25vZGUtPmF2YWlsYWJpbGl0eVN0YXJ0VGltZSk7CisgIEdEYXRlVGltZSAqbm93OworICBHRGF0ZVRpbWUgKm1zdGFydDsKICAgR1RpbWVTcGFuIHN0cmVhbV9ub3c7CiAKKyAgaWYgKHNlbGYtPmNsaWVudC0+bXBkX25vZGUtPmF2YWlsYWJpbGl0eVN0YXJ0VGltZSA9PSBOVUxMKQorICAgIHJldHVybiBGQUxTRTsKKworICBub3cgPSBnc3RfZGFzaF9kZW11eF9nZXRfc2VydmVyX25vd191dGMgKHNlbGYpOworICBtc3RhcnQgPQorICAgICAgZ3N0X2RhdGVfdGltZV90b19nX2RhdGVfdGltZSAoc2VsZi0+Y2xpZW50LT4KKyAgICAgIG1wZF9ub2RlLT5hdmFpbGFiaWxpdHlTdGFydFRpbWUpOwogICBzdHJlYW1fbm93ID0gZ19kYXRlX3RpbWVfZGlmZmVyZW5jZSAobm93LCBtc3RhcnQpOwogICBnX2RhdGVfdGltZV91bnJlZiAobm93KTsKICAgZ19kYXRlX3RpbWVfdW5yZWYgKG1zdGFydCk7Ci0gICpzdG9wID0gc3RyZWFtX25vdyAqIEdTVF9VU0VDT05EOwogCi0gICpzdGFydCA9ICpzdG9wIC0gKHNlbGYtPmNsaWVudC0+bXBkX25vZGUtPnRpbWVTaGlmdEJ1ZmZlckRlcHRoICogR1NUX01TRUNPTkQpOworICBpZiAoc3RyZWFtX25vdyA8PSAwKQorICAgIHJldHVybiBGQUxTRTsKKworICAqc3RvcCA9IHN0cmVhbV9ub3cgKiBHU1RfVVNFQ09ORDsKKyAgaWYgKHNlbGYtPmNsaWVudC0+bXBkX25vZGUtPnRpbWVTaGlmdEJ1ZmZlckRlcHRoID09IEdTVF9NUERfRFVSQVRJT05fTk9ORSkgeworICAgICpzdGFydCA9IDA7CisgIH0gZWxzZSB7CisgICAgKnN0YXJ0ID0KKyAgICAgICAgKnN0b3AgLSAoc2VsZi0+Y2xpZW50LT5tcGRfbm9kZS0+dGltZVNoaWZ0QnVmZmVyRGVwdGggKiBHU1RfTVNFQ09ORCk7CisgICAgaWYgKCpzdGFydCA8IDApCisgICAgICAqc3RhcnQgPSAwOworICB9CiAgIHJldHVybiBUUlVFOwogfQogCkBAIC0zNjQsNyArMzg4LDcgQEAKICAgICAgICAgICAiUGVyY2VudGFnZSBvZiB0aGUgYXZhaWxhYmxlIGJhbmR3aWR0aCB0byB1c2Ugd2hlbiAiCiAgICAgICAgICAgInNlbGVjdGluZyByZXByZXNlbnRhdGlvbnMgKGRlcHJlY2F0ZWQpIiwKICAgICAgICAgICAwLCAxLCBERUZBVUxUX0JBTkRXSURUSF9VU0FHRSwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfCBHX1BBUkFNX0RFUFJFQ0FURUQpKTsKICNlbmRpZgogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTUFYX0JJVFJBVEUsCkBAIC0zNzMsMTAgKzM5NywxOCBAQAogICAgICAgICAgIDEwMDAsIEdfTUFYVUlOVCwgREVGQVVMVF9NQVhfQklUUkFURSwKICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKIAorICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1BSRVNFTlRBVElPTl9ERUxBWSwKKyAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJwcmVzZW50YXRpb24tZGVsYXkiLCAiUHJlc2VudGF0aW9uIGRlbGF5IiwKKyAgICAgICAgICAiRGVmYXVsdCBwcmVzZW50YXRpb24gZGVsYXkgKGluIHNlY29uZHMsIG1pbGxpc2Vjb25kcyBvciBmcmFnbWVudHMpIChlLmcuIDEycywgMjUwMG1zLCAzZikiLAorICAgICAgICAgIERFRkFVTFRfUFJFU0VOVEFUSU9OX0RFTEFZLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCiAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCiAgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfZGFzaF9kZW11eF9hdWRpb3NyY190ZW1wbGF0ZSkpOwogICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAogICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X2Rhc2hfZGVtdXhfdmlkZW9zcmNfdGVtcGxhdGUpKTsKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9kYXNoX2RlbXV4X3N1YnRpdGxlc3JjX3RlbXBsYXRlKSk7CiAKICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKICAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNpbmt0ZW1wbGF0ZSkpOwpAQCAtNDMzLDYgKzQ2NSw3IEBACiAgIC8qIFByb3BlcnRpZXMgKi8KICAgZGVtdXgtPm1heF9idWZmZXJpbmdfdGltZSA9IERFRkFVTFRfTUFYX0JVRkZFUklOR19USU1FICogR1NUX1NFQ09ORDsKICAgZGVtdXgtPm1heF9iaXRyYXRlID0gREVGQVVMVF9NQVhfQklUUkFURTsKKyAgZGVtdXgtPmRlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5ID0gREVGQVVMVF9QUkVTRU5UQVRJT05fREVMQVk7CiAKICAgZ19tdXRleF9pbml0ICgmZGVtdXgtPmNsaWVudF9sb2NrKTsKIApAQCAtNDU3LDYgKzQ5MCwxMCBAQAogICAgIGNhc2UgUFJPUF9NQVhfQklUUkFURToKICAgICAgIGRlbXV4LT5tYXhfYml0cmF0ZSA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QUkVTRU5UQVRJT05fREVMQVk6CisgICAgICBnX2ZyZWUgKGRlbXV4LT5kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSk7CisgICAgICBkZW11eC0+ZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkgPSBnX3ZhbHVlX2R1cF9zdHJpbmcgKHZhbHVlKTsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CkBAIC00ODAsNiArNTE3LDEyIEBACiAgICAgY2FzZSBQUk9QX01BWF9CSVRSQVRFOgogICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIGRlbXV4LT5tYXhfYml0cmF0ZSk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUFJFU0VOVEFUSU9OX0RFTEFZOgorICAgICAgaWYgKGRlbXV4LT5kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSA9PSBOVUxMKQorICAgICAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICh2YWx1ZSwgIiIpOworICAgICAgZWxzZQorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBkZW11eC0+ZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkpOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKQEAgLTUzNSwxMSArNTc4LDExIEBACiAgICAgYWN0aXZlX3N0cmVhbSA9IGdzdF9tcGRwYXJzZXJfZ2V0X2FjdGl2ZV9zdHJlYW1fYnlfaW5kZXggKGRlbXV4LT5jbGllbnQsIGkpOwogICAgIGlmIChhY3RpdmVfc3RyZWFtID09IE5VTEwpCiAgICAgICBjb250aW51ZTsKLSAgICAvKiBUT0RPOiBzdXBwb3J0ICdhcHBsaWNhdGlvbicgbWltZVR5cGUgKi8KLSAgICBpZiAoYWN0aXZlX3N0cmVhbS0+bWltZVR5cGUgPT0gR1NUX1NUUkVBTV9BUFBMSUNBVElPTikKLSAgICAgIGNvbnRpbnVlOwogCiAgICAgc3JjcGFkID0gZ3N0X2Rhc2hfZGVtdXhfY3JlYXRlX3BhZCAoZGVtdXgsIGFjdGl2ZV9zdHJlYW0pOworICAgIGlmIChzcmNwYWQgPT0gTlVMTCkKKyAgICAgIGNvbnRpbnVlOworCiAgICAgY2FwcyA9IGdzdF9kYXNoX2RlbXV4X2dldF9pbnB1dF9jYXBzIChkZW11eCwgYWN0aXZlX3N0cmVhbSk7CiAgICAgR1NUX0xPR19PQkpFQ1QgKGRlbXV4LCAiQ3JlYXRpbmcgc3RyZWFtICVkICUiIEdTVF9QVFJfRk9STUFULCBpLCBjYXBzKTsKIApAQCAtNTQ4LDkgKzU5MSwxNiBAQAogICAgICAgbGFuZyA9IGFkcF9zZXQtPmxhbmc7CiAKICAgICAgIC8qIEZhbGxiYWNrIHRvIHRoZSBsYW5ndWFnZSBpbiBDb250ZW50Q29tcG9uZW50IG5vZGUgKi8KLSAgICAgIGlmIChsYW5nID09IE5VTEwgJiYgZ19saXN0X2xlbmd0aCAoYWRwX3NldC0+Q29udGVudENvbXBvbmVudHMpID09IDEpIHsKLSAgICAgICAgR3N0Q29udGVudENvbXBvbmVudE5vZGUgKmNjX25vZGUgPSBhZHBfc2V0LT5Db250ZW50Q29tcG9uZW50cy0+ZGF0YTsKLSAgICAgICAgbGFuZyA9IGNjX25vZGUtPmxhbmc7CisgICAgICBpZiAobGFuZyA9PSBOVUxMKSB7CisgICAgICAgIEdMaXN0ICppdDsKKworICAgICAgICBmb3IgKGl0ID0gYWRwX3NldC0+Q29udGVudENvbXBvbmVudHM7IGl0OyBpdCA9IGl0LT5uZXh0KSB7CisgICAgICAgICAgR3N0Q29udGVudENvbXBvbmVudE5vZGUgKmNjX25vZGUgPSBpdC0+ZGF0YTsKKyAgICAgICAgICBpZiAoY2Nfbm9kZS0+bGFuZykgeworICAgICAgICAgICAgbGFuZyA9IGNjX25vZGUtPmxhbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgIH0KICAgICB9CiAKQEAgLTU3NSw5ICs2MjUsOSBAQAogICAgICAgICBhY3RpdmVfc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5SZXByZXNlbnRhdGlvbkJhc2UgJiYKICAgICAgICAgYWN0aXZlX3N0cmVhbS0+Y3VyX2FkYXB0X3NldC0+UmVwcmVzZW50YXRpb25CYXNlLT5Db250ZW50UHJvdGVjdGlvbikgewogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJBZGRpbmcgQ29udGVudFByb3RlY3Rpb24gZXZlbnRzIHRvIHNvdXJjZSBwYWQiKTsKLSAgICAgIGdfbGlzdF9mb3JlYWNoIChhY3RpdmVfc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT4KLSAgICAgICAgICBSZXByZXNlbnRhdGlvbkJhc2UtPkNvbnRlbnRQcm90ZWN0aW9uLAotICAgICAgICAgIGdzdF9kYXNoX2RlbXV4X3NlbmRfY29udGVudF9wcm90ZWN0aW9uX2V2ZW50LCBzdHJlYW0pOworICAgICAgZ19saXN0X2ZvcmVhY2ggKGFjdGl2ZV9zdHJlYW0tPmN1cl9hZGFwdF9zZXQtPlJlcHJlc2VudGF0aW9uQmFzZS0+CisgICAgICAgICAgQ29udGVudFByb3RlY3Rpb24sIGdzdF9kYXNoX2RlbXV4X3NlbmRfY29udGVudF9wcm90ZWN0aW9uX2V2ZW50LAorICAgICAgICAgIHN0cmVhbSk7CiAgICAgfQogCiAgICAgZ3N0X2lzb2ZmX3NpZHhfcGFyc2VyX2luaXQgKCZzdHJlYW0tPnNpZHhfcGFyc2VyKTsKQEAgLTY1MCw2ICs3MDAsMTEgQEAKICAgcGVyaW9kX2lkeCA9IDA7CiAgIGlmIChnc3RfbXBkX2NsaWVudF9pc19saXZlIChkYXNoZGVtdXgtPmNsaWVudCkpIHsKICAgICBHRGF0ZVRpbWUgKmdfbm93OworICAgIGlmIChkYXNoZGVtdXgtPmNsaWVudC0+bXBkX25vZGUtPmF2YWlsYWJpbGl0eVN0YXJ0VGltZSA9PSBOVUxMKSB7CisgICAgICByZXQgPSBGQUxTRTsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGRlbXV4LCAiTVBEIGRvZXMgbm90IGhhdmUgYXZhaWxhYmlsaXR5U3RhcnRUaW1lIik7CisgICAgICBnb3RvIGRvbmU7CisgICAgfQogICAgIGlmIChkYXNoZGVtdXgtPmNsb2NrX2RyaWZ0ID09IE5VTEwpIHsKICAgICAgIGdjaGFyICoqdXJsczsKICAgICAgIHVybHMgPQpAQCAtNjY5LDYgKzcyNCwxMyBAQAogICAgICAgICAgIGRhc2hkZW11eC0+Y2xpZW50LT5tcGRfbm9kZS0+c3VnZ2VzdGVkUHJlc2VudGF0aW9uRGVsYXkgKiAtMTAwMCk7CiAgICAgICBnc3RfZGF0ZV90aW1lX3VucmVmIChub3cpOwogICAgICAgbm93ID0gdGFyZ2V0OworICAgIH0gZWxzZSBpZiAoZGFzaGRlbXV4LT5kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSkgeworICAgICAgZ2ludDY0IGRmcCA9CisgICAgICAgICAgZ3N0X21wZF9jbGllbnRfcGFyc2VfZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkgKGRhc2hkZW11eC0+Y2xpZW50LAorICAgICAgICAgIGRhc2hkZW11eC0+ZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkpOworICAgICAgR3N0RGF0ZVRpbWUgKnRhcmdldCA9IGdzdF9tcGRfY2xpZW50X2FkZF90aW1lX2RpZmZlcmVuY2UgKG5vdywgZGZwKTsKKyAgICAgIGdzdF9kYXRlX3RpbWVfdW5yZWYgKG5vdyk7CisgICAgICBub3cgPSB0YXJnZXQ7CiAgICAgfQogICAgIHBlcmlvZF9pZHggPQogICAgICAgICBnc3RfbXBkX2NsaWVudF9nZXRfcGVyaW9kX2luZGV4X2F0X3RpbWUgKGRhc2hkZW11eC0+Y2xpZW50LCBub3cpOwpAQCAtNzcxLDEzICs4MzMsMjIgQEAKICAgICAgIG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJ2aWRlb18lMDJ1IiwgZGVtdXgtPm5fdmlkZW9fc3RyZWFtcysrKTsKICAgICAgIHRtcGwgPSBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfZGFzaF9kZW11eF92aWRlb3NyY190ZW1wbGF0ZSk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVFJFQU1fQVBQTElDQVRJT046CisgICAgICBpZiAoZ3N0X21wZF9jbGllbnRfYWN0aXZlX3N0cmVhbV9jb250YWluc19zdWJ0aXRsZXMgKHN0cmVhbSkpIHsKKyAgICAgICAgbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInN1YnRpdGxlXyUwMnUiLCBkZW11eC0+bl9zdWJ0aXRsZV9zdHJlYW1zKyspOworICAgICAgICB0bXBsID0KKyAgICAgICAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9kYXNoX2RlbXV4X3N1YnRpdGxlc3JjX3RlbXBsYXRlKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgICAgfQorICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwogICAgICAgcmV0dXJuIE5VTEw7CiAgIH0KIAogICAvKiBDcmVhdGUgYW5kIGFjdGl2YXRlIG5ldyBwYWRzICovCi0gIHBhZCA9IGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlIChuYW1lLCB0bXBsKTsKKyAgcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSAodG1wbCwgbmFtZSk7CiAgIGdfZnJlZSAobmFtZSk7CiAgIGdzdF9vYmplY3RfdW5yZWYgKHRtcGwpOwogCkBAIC04MTQsNyArODg1LDggQEAKICAgICBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0pCiB7CiAgIGd1aW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKLSAgY29uc3QgZ2NoYXIgKm1pbWVUeXBlID0gTlVMTDsKKyAgZ2ludCBmcHNfbnVtID0gMCwgZnBzX2RlbiA9IDE7CisgIGdib29sZWFuIGhhdmVfZnBzID0gRkFMU0U7CiAgIEdzdENhcHMgKmNhcHMgPSBOVUxMOwogCiAgIGlmIChzdHJlYW0gPT0gTlVMTCkKQEAgLTgyNCwxNyArODk2LDIzIEBACiAgIGlmICghZ3N0X21wZF9jbGllbnRfZ2V0X2JpdHN0cmVhbV9zd2l0Y2hpbmdfZmxhZyAoc3RyZWFtKSkgewogICAgIHdpZHRoID0gZ3N0X21wZF9jbGllbnRfZ2V0X3ZpZGVvX3N0cmVhbV93aWR0aCAoc3RyZWFtKTsKICAgICBoZWlnaHQgPSBnc3RfbXBkX2NsaWVudF9nZXRfdmlkZW9fc3RyZWFtX2hlaWdodCAoc3RyZWFtKTsKKyAgICBoYXZlX2ZwcyA9CisgICAgICAgIGdzdF9tcGRfY2xpZW50X2dldF92aWRlb19zdHJlYW1fZnJhbWVyYXRlIChzdHJlYW0sICZmcHNfbnVtLCAmZnBzX2Rlbik7CiAgIH0KLSAgbWltZVR5cGUgPSBnc3RfbXBkX2NsaWVudF9nZXRfc3RyZWFtX21pbWVUeXBlIChzdHJlYW0pOwotICBpZiAobWltZVR5cGUgPT0gTlVMTCkKKyAgY2FwcyA9IGdzdF9tcGRfY2xpZW50X2dldF9zdHJlYW1fY2FwcyAoc3RyZWFtKTsKKyAgaWYgKGNhcHMgPT0gTlVMTCkKICAgICByZXR1cm4gTlVMTDsKIAotICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKG1pbWVUeXBlKTsKICAgaWYgKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKSB7CiAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgIndpZHRoIiwgR19UWVBFX0lOVCwgd2lkdGgsICJoZWlnaHQiLAogICAgICAgICBHX1RZUEVfSU5ULCBoZWlnaHQsIE5VTEwpOwogICB9CiAKKyAgaWYgKGhhdmVfZnBzKSB7CisgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgImZyYW1lcmF0ZSIsIEdTVF9UWVBFX0ZSQUNUSU9OLCBmcHNfbnVtLAorICAgICAgICBmcHNfZGVuLCBOVUxMKTsKKyAgfQorCiAgIHJldHVybiBjYXBzOwogfQogCkBAIC04NDMsNyArOTIxLDYgQEAKICAgICBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0pCiB7CiAgIGd1aW50IHJhdGUgPSAwLCBjaGFubmVscyA9IDA7Ci0gIGNvbnN0IGdjaGFyICptaW1lVHlwZTsKICAgR3N0Q2FwcyAqY2FwcyA9IE5VTEw7CiAKICAgaWYgKHN0cmVhbSA9PSBOVUxMKQpAQCAtODU0LDExICs5MzEsMTAgQEAKICAgICBjaGFubmVscyA9IGdzdF9tcGRfY2xpZW50X2dldF9hdWRpb19zdHJlYW1fbnVtX2NoYW5uZWxzIChzdHJlYW0pOwogICAgIHJhdGUgPSBnc3RfbXBkX2NsaWVudF9nZXRfYXVkaW9fc3RyZWFtX3JhdGUgKHN0cmVhbSk7CiAgIH0KLSAgbWltZVR5cGUgPSBnc3RfbXBkX2NsaWVudF9nZXRfc3RyZWFtX21pbWVUeXBlIChzdHJlYW0pOwotICBpZiAobWltZVR5cGUgPT0gTlVMTCkKKyAgY2FwcyA9IGdzdF9tcGRfY2xpZW50X2dldF9zdHJlYW1fY2FwcyAoc3RyZWFtKTsKKyAgaWYgKGNhcHMgPT0gTlVMTCkKICAgICByZXR1cm4gTlVMTDsKIAotICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKG1pbWVUeXBlKTsKICAgaWYgKHJhdGUgPiAwKSB7CiAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgInJhdGUiLCBHX1RZUEVfSU5ULCByYXRlLCBOVUxMKTsKICAgfQpAQCAtODczLDE4ICs5NDksMTUgQEAKIGdzdF9kYXNoX2RlbXV4X2dldF9hcHBsaWNhdGlvbl9pbnB1dF9jYXBzIChHc3REYXNoRGVtdXggKiBkZW11eCwKICAgICBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0pCiB7Ci0gIGNvbnN0IGdjaGFyICptaW1lVHlwZTsKICAgR3N0Q2FwcyAqY2FwcyA9IE5VTEw7CiAKICAgaWYgKHN0cmVhbSA9PSBOVUxMKQogICAgIHJldHVybiBOVUxMOwogCi0gIG1pbWVUeXBlID0gZ3N0X21wZF9jbGllbnRfZ2V0X3N0cmVhbV9taW1lVHlwZSAoc3RyZWFtKTsKLSAgaWYgKG1pbWVUeXBlID09IE5VTEwpCisgIGNhcHMgPSBnc3RfbXBkX2NsaWVudF9nZXRfc3RyZWFtX2NhcHMgKHN0cmVhbSk7CisgIGlmIChjYXBzID09IE5VTEwpCiAgICAgcmV0dXJuIE5VTEw7CiAKLSAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nIChtaW1lVHlwZSk7Ci0KICAgcmV0dXJuIGNhcHM7CiB9CiAKQEAgLTk5NCw0MiArMTA2Nyw5NCBAQAogICByZXR1cm4gR1NUX0ZMT1dfRU9TOwogfQogCitzdGF0aWMgZ2ludAorZ3N0X2Rhc2hfZGVtdXhfaW5kZXhfZW50cnlfc2VhcmNoIChHc3RTaWR4Qm94RW50cnkgKiBlbnRyeSwgR3N0Q2xvY2tUaW1lICogdHMsCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RDbG9ja1RpbWUgZW50cnlfdHMgPSBlbnRyeS0+cHRzICsgZW50cnktPmR1cmF0aW9uOworICBpZiAoZW50cnlfdHMgPCAqdHMpCisgICAgcmV0dXJuIC0xOworICBlbHNlIGlmIChlbnRyeS0+cHRzID4gKnRzKQorICAgIHJldHVybiAxOworICBlbHNlCisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkCiBnc3RfZGFzaF9kZW11eF9zdHJlYW1fc2lkeF9zZWVrIChHc3REYXNoRGVtdXhTdHJlYW0gKiBkYXNoc3RyZWFtLAotICAgIEdzdENsb2NrVGltZSB0cykKKyAgICBnYm9vbGVhbiBmb3J3YXJkLCBHc3RTZWVrRmxhZ3MgZmxhZ3MsIEdzdENsb2NrVGltZSB0cywKKyAgICBHc3RDbG9ja1RpbWUgKiBmaW5hbF90cykKIHsKICAgR3N0U2lkeEJveCAqc2lkeCA9IFNJRFggKGRhc2hzdHJlYW0pOwotICBnaW50IGk7CisgIEdzdFNpZHhCb3hFbnRyeSAqZW50cnk7CisgIGdpbnQgaWR4ID0gc2lkeC0+ZW50cmllc19jb3VudDsKIAotICAvKiBUT0RPIG9wdGltaXplIHRvIGEgYmluYXJ5IHNlYXJjaCAqLwotICBmb3IgKGkgPSAwOyBpIDwgc2lkeC0+ZW50cmllc19jb3VudDsgaSsrKSB7Ci0gICAgaWYgKHNpZHgtPmVudHJpZXNbaV0ucHRzICsgc2lkeC0+ZW50cmllc1tpXS5kdXJhdGlvbiA+PSB0cykKLSAgICAgIGJyZWFrOwotICB9Ci0gIHNpZHgtPmVudHJ5X2luZGV4ID0gaTsKLSAgZGFzaHN0cmVhbS0+c2lkeF9pbmRleCA9IGk7Ci0gIGlmIChpIDwgc2lkeC0+ZW50cmllc19jb3VudCkKLSAgICBkYXNoc3RyZWFtLT5zaWR4X2N1cnJlbnRfcmVtYWluaW5nID0gc2lkeC0+ZW50cmllc1tpXS5zaXplOwotICBlbHNlCisgIC8qIGNoZWNrIHdoZXRoZXIgdHMgaXMgYWxyZWFkeSBwYXN0IHRoZSBsYXN0IGVsZW1lbnQgb3Igbm90ICovCisgIGlmIChzaWR4LT5lbnRyaWVzW2lkeCAtIDFdLnB0cyArIHNpZHgtPmVudHJpZXNbaWR4IC0gMV0uZHVyYXRpb24gPCB0cykgewogICAgIGRhc2hzdHJlYW0tPnNpZHhfY3VycmVudF9yZW1haW5pbmcgPSAwOworICB9IGVsc2UgeworICAgIEdzdFNlYXJjaE1vZGUgbW9kZSA9IEdTVF9TRUFSQ0hfTU9ERV9CRUZPUkU7CisKKyAgICBpZiAoKGZsYWdzICYgR1NUX1NFRUtfRkxBR19TTkFQX05FQVJFU1QpID09IEdTVF9TRUVLX0ZMQUdfU05BUF9ORUFSRVNUKSB7CisgICAgICBtb2RlID0gR1NUX1NFQVJDSF9NT0RFX0JFRk9SRTsKKyAgICB9IGVsc2UgaWYgKChmb3J3YXJkICYmIChmbGFncyAmIEdTVF9TRUVLX0ZMQUdfU05BUF9BRlRFUikpIHx8CisgICAgICAgICghZm9yd2FyZCAmJiAoZmxhZ3MgJiBHU1RfU0VFS19GTEFHX1NOQVBfQkVGT1JFKSkpIHsKKyAgICAgIG1vZGUgPSBHU1RfU0VBUkNIX01PREVfQUZURVI7CisgICAgfSBlbHNlIHsKKyAgICAgIG1vZGUgPSBHU1RfU0VBUkNIX01PREVfQkVGT1JFOworICAgIH0KKworICAgIGVudHJ5ID0KKyAgICAgICAgZ3N0X3V0aWxfYXJyYXlfYmluYXJ5X3NlYXJjaCAoc2lkeC0+ZW50cmllcywgc2lkeC0+ZW50cmllc19jb3VudCwKKyAgICAgICAgc2l6ZW9mIChHc3RTaWR4Qm94RW50cnkpLAorICAgICAgICAoR0NvbXBhcmVEYXRhRnVuYykgZ3N0X2Rhc2hfZGVtdXhfaW5kZXhfZW50cnlfc2VhcmNoLCBtb2RlLCAmdHMsIE5VTEwpOworCisgICAgaWR4ID0gZW50cnkgLSBzaWR4LT5lbnRyaWVzOworCisgICAgLyogRklYTUUgaW4gcmV2ZXJzZSBtb2RlLCBpZiB3ZSBhcmUgZXhhY3RseSBhdCBhIGZyYWdtZW50IHN0YXJ0IGl0IG1ha2VzIG1vcmUKKyAgICAgKiBzZW5zZSB0byBzdGFydCBmcm9tIHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGZyYWdtZW50ICovCisgICAgLyogRklYTUUgd2Ugc2hvdWxkIGhhdmUgYSBHU1RfU0VBUkNIX01PREVfTkVBUkVTVCAqLworICAgIGlmICgoZmxhZ3MgJiBHU1RfU0VFS19GTEFHX1NOQVBfTkVBUkVTVCkgPT0gR1NUX1NFRUtfRkxBR19TTkFQX05FQVJFU1QgJiYKKyAgICAgICAgaWR4ICsgMSA8IHNpZHgtPmVudHJpZXNfY291bnQpIHsKKyAgICAgIGlmIChBQlMgKHNpZHgtPmVudHJpZXNbaWR4ICsgMV0ucHRzIC0gdHMpIDwKKyAgICAgICAgICBBQlMgKHNpZHgtPmVudHJpZXNbaWR4XS5wdHMgLSB0cykpCisgICAgICAgIGlkeCArPSAxOworICAgIH0KKworICAgIGRhc2hzdHJlYW0tPnNpZHhfY3VycmVudF9yZW1haW5pbmcgPSBzaWR4LT5lbnRyaWVzW2lkeF0uc2l6ZTsKKyAgfQorCisgIHNpZHgtPmVudHJ5X2luZGV4ID0gaWR4OworICBkYXNoc3RyZWFtLT5zaWR4X2luZGV4ID0gaWR4OworCisgIGlmIChmaW5hbF90cykgeworICAgIGlmIChpZHggPT0gc2lkeC0+ZW50cmllc19jb3VudCkKKyAgICAgICpmaW5hbF90cyA9IHNpZHgtPmVudHJpZXNbaWR4XS5wdHMgKyBzaWR4LT5lbnRyaWVzW2lkeF0uZHVyYXRpb247CisgICAgZWxzZQorICAgICAgKmZpbmFsX3RzID0gc2lkeC0+ZW50cmllc1tpZHhdLnB0czsKKyAgfQogfQogCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X2Rhc2hfZGVtdXhfc3RyZWFtX3NlZWsgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIEdzdENsb2NrVGltZSB0cykKK2dzdF9kYXNoX2RlbXV4X3N0cmVhbV9zZWVrIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLCBnYm9vbGVhbiBmb3J3YXJkLAorICAgIEdzdFNlZWtGbGFncyBmbGFncywgR3N0Q2xvY2tUaW1lIHRzLCBHc3RDbG9ja1RpbWUgKiBmaW5hbF90cykKIHsKICAgR3N0RGFzaERlbXV4U3RyZWFtICpkYXNoc3RyZWFtID0gKEdzdERhc2hEZW11eFN0cmVhbSAqKSBzdHJlYW07CiAgIEdzdERhc2hEZW11eCAqZGFzaGRlbXV4ID0gR1NUX0RBU0hfREVNVVhfQ0FTVCAoc3RyZWFtLT5kZW11eCk7CiAKICAgaWYgKGdzdF9tcGRfY2xpZW50X2hhc19pc29mZl9vbmRlbWFuZF9wcm9maWxlIChkYXNoZGVtdXgtPmNsaWVudCkpIHsKICAgICBpZiAoZGFzaHN0cmVhbS0+c2lkeF9wYXJzZXIuc3RhdHVzID09IEdTVF9JU09GRl9TSURYX1BBUlNFUl9GSU5JU0hFRCkgewotICAgICAgZ3N0X2Rhc2hfZGVtdXhfc3RyZWFtX3NpZHhfc2VlayAoZGFzaHN0cmVhbSwgdHMpOworICAgICAgZ3N0X2Rhc2hfZGVtdXhfc3RyZWFtX3NpZHhfc2VlayAoZGFzaHN0cmVhbSwgZm9yd2FyZCwgZmxhZ3MsIHRzLAorICAgICAgICAgIGZpbmFsX3RzKTsKICAgICB9IGVsc2UgewogICAgICAgLyogbm8gaW5kZXggeWV0LCBzZWVrIHdoZW4gd2UgaGF2ZSBpdCAqLworICAgICAgLyogRklYTUUgLSB0aGUgZmluYWxfdHMgd29uJ3QgYmUgY29ycmVjdCBoZXJlICovCiAgICAgICBkYXNoc3RyZWFtLT5wZW5kaW5nX3NlZWtfdHMgPSB0czsKICAgICB9CiAgIH0KIAotICBnc3RfbXBkX2NsaWVudF9zdHJlYW1fc2VlayAoZGFzaGRlbXV4LT5jbGllbnQsIGRhc2hzdHJlYW0tPmFjdGl2ZV9zdHJlYW0sIHRzKTsKKyAgZ3N0X21wZF9jbGllbnRfc3RyZWFtX3NlZWsgKGRhc2hkZW11eC0+Y2xpZW50LCBkYXNoc3RyZWFtLT5hY3RpdmVfc3RyZWFtLAorICAgICAgZm9yd2FyZCwgZmxhZ3MsIHRzLCBmaW5hbF90cyk7CiAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIApAQCAtMTE4Myw2ICsxMzA4LDEwIEBACiAgIHJldHVybiByZXQ7CiB9CiAKKyNkZWZpbmUgU0VFS19VUERBVEVTX1BMQVlfUE9TSVRJT04ociwgc3RhcnRfdHlwZSwgc3RvcF90eXBlKSBcCisgICgociA+PSAwICYmIHN0YXJ0X3R5cGUgIT0gR1NUX1NFRUtfVFlQRV9OT05FKSB8fCBcCisgICAociA8IDAgJiYgc3RvcF90eXBlICE9IEdTVF9TRUVLX1RZUEVfTk9ORSkpCisKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2Rhc2hfZGVtdXhfc2VlayAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LCBHc3RFdmVudCAqIHNlZWspCiB7CkBAIC0xMjAyLDExICsxMzMxLDE2IEBACiAgIGdzdF9ldmVudF9wYXJzZV9zZWVrIChzZWVrLCAmcmF0ZSwgJmZvcm1hdCwgJmZsYWdzLCAmc3RhcnRfdHlwZSwgJnN0YXJ0LAogICAgICAgJnN0b3BfdHlwZSwgJnN0b3ApOwogCi0gIC8qIFRPRE8gY2hlY2sgaWYgc3RhcnQtdHlwZS9zdG9wLXR5cGUgaXMgU0VUICovCi0gIGlmIChkZW11eC0+c2VnbWVudC5yYXRlID4gMC4wKQotICAgIHRhcmdldF9wb3MgPSAoR3N0Q2xvY2tUaW1lKSBkZW11eC0+c2VnbWVudC5zdGFydDsKLSAgZWxzZQotICAgIHRhcmdldF9wb3MgPSAoR3N0Q2xvY2tUaW1lKSBkZW11eC0+c2VnbWVudC5zdG9wOworICBpZiAoIVNFRUtfVVBEQVRFU19QTEFZX1BPU0lUSU9OIChyYXRlLCBzdGFydF90eXBlLCBzdG9wX3R5cGUpKSB7CisgICAgLyogbm90aGluZyB0byBkbyBpZiB3ZSBkb24ndCBoYXZlIHRvIHVwZGF0ZSB0aGUgY3VycmVudCBwb3NpdGlvbiAqLworICAgIHJldHVybiBUUlVFOworICB9CisKKyAgaWYgKGRlbXV4LT5zZWdtZW50LnJhdGUgPiAwLjApIHsKKyAgICB0YXJnZXRfcG9zID0gKEdzdENsb2NrVGltZSkgc3RhcnQ7CisgIH0gZWxzZSB7CisgICAgdGFyZ2V0X3BvcyA9IChHc3RDbG9ja1RpbWUpIHN0b3A7CisgIH0KIAogICAvKiBzZWxlY3QgdGhlIHJlcXVlc3RlZCBQZXJpb2QgaW4gdGhlIE1lZGlhIFByZXNlbnRhdGlvbiAqLwogICBpZiAoIWdzdF9tcGRfY2xpZW50X3NldHVwX21lZGlhX3ByZXNlbnRhdGlvbiAoZGFzaGRlbXV4LT5jbGllbnQsIHRhcmdldF9wb3MsCkBAIC0xMjU1LDcgKzEzODksNyBAQAogICAgICAgZ3N0X2lzb2ZmX3NpZHhfcGFyc2VyX2NsZWFyICgmZGFzaHN0cmVhbS0+c2lkeF9wYXJzZXIpOwogICAgICAgZ3N0X2lzb2ZmX3NpZHhfcGFyc2VyX2luaXQgKCZkYXNoc3RyZWFtLT5zaWR4X3BhcnNlcik7CiAgICAgfQotICAgIGdzdF9kYXNoX2RlbXV4X3N0cmVhbV9zZWVrIChpdGVyLT5kYXRhLCB0YXJnZXRfcG9zKTsKKyAgICBnc3RfZGFzaF9kZW11eF9zdHJlYW1fc2VlayAoaXRlci0+ZGF0YSwgcmF0ZSA+PSAwLCAwLCB0YXJnZXRfcG9zLCBOVUxMKTsKICAgfQogICByZXR1cm4gVFJVRTsKIH0KQEAgLTEzMDgsMTcgKzE0NDIsMjMgQEAKICAgICBpZiAocGVyaW9kX2lkKSB7CiAgICAgICBpZiAoIWdzdF9tcGRfY2xpZW50X3NldF9wZXJpb2RfaWQgKG5ld19jbGllbnQsIHBlcmlvZF9pZCkpIHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJFcnJvciBzZXR0aW5nIHVwIHRoZSB1cGRhdGVkIG1hbmlmZXN0IGZpbGUiKTsKKyAgICAgICAgZ3N0X21wZF9jbGllbnRfZnJlZSAobmV3X2NsaWVudCk7CisgICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZmZlciwgJm1hcGluZm8pOwogICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRU9TOwogICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICBpZiAoIWdzdF9tcGRfY2xpZW50X3NldF9wZXJpb2RfaW5kZXggKG5ld19jbGllbnQsIHBlcmlvZF9pZHgpKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiRXJyb3Igc2V0dGluZyB1cCB0aGUgdXBkYXRlZCBtYW5pZmVzdCBmaWxlIik7CisgICAgICAgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG5ld19jbGllbnQpOworICAgICAgICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZtYXBpbmZvKTsKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VPUzsKICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIWdzdF9kYXNoX2RlbXV4X3NldHVwX21wZHBhcnNlcl9zdHJlYW1zIChkYXNoZGVtdXgsIG5ld19jbGllbnQpKSB7CiAgICAgICBHU1RfRVJST1JfT0JKRUNUIChkZW11eCwgIkZhaWxlZCB0byBzZXR1cCBzdHJlYW1zIG9uIG1hbmlmZXN0ICIgInVwZGF0ZSIpOworICAgICAgZ3N0X21wZF9jbGllbnRfZnJlZSAobmV3X2NsaWVudCk7CisgICAgICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZtYXBpbmZvKTsKICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgICB9CiAKQEAgLTEzMzQsNiArMTQ3NCw4IEBACiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LAogICAgICAgICAgICAgIlN0cmVhbSBvZiBpbmRleCAlZCBpcyBtaXNzaW5nIGZyb20gbWFuaWZlc3QgdXBkYXRlIiwKICAgICAgICAgICAgIGRlbXV4X3N0cmVhbS0+aW5kZXgpOworICAgICAgICBnc3RfbXBkX2NsaWVudF9mcmVlIChuZXdfY2xpZW50KTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmZmVyLCAmbWFwaW5mbyk7CiAgICAgICAgIHJldHVybiBHU1RfRkxPV19FT1M7CiAgICAgICB9CiAKQEAgLTEzNTMsNyArMTQ5NSw4IEBACiAgICAgICAgICAgICBHU1RfVElNRV9GT1JNQVQsIEdTVF9USU1FX0FSR1MgKHRzKSwKICAgICAgICAgICAgIEdTVF9USU1FX0FSR1MgKHRzICsgKDEwICogR1NUX1VTRUNPTkQpKSk7CiAgICAgICAgIHRzICs9IDEwICogR1NUX1VTRUNPTkQ7Ci0gICAgICAgIGdzdF9tcGRfY2xpZW50X3N0cmVhbV9zZWVrIChuZXdfY2xpZW50LCBuZXdfc3RyZWFtLCB0cyk7CisgICAgICAgIGdzdF9tcGRfY2xpZW50X3N0cmVhbV9zZWVrIChuZXdfY2xpZW50LCBuZXdfc3RyZWFtLAorICAgICAgICAgICAgZGVtdXgtPnNlZ21lbnQucmF0ZSA+PSAwLCAwLCB0cywgTlVMTCk7CiAgICAgICB9CiAKICAgICAgIGRlbXV4X3N0cmVhbS0+YWN0aXZlX3N0cmVhbSA9IG5ld19zdHJlYW07CkBAIC0xMzcxLDYgKzE1MTQsNyBAQAogICAgICAqIHNvdXJjZSBlbGVtZW50IGFuZCB3ZSBoYXZlIHJlY2VpdmVkIHRoZSA0MDQgSFRNTCByZXNwb25zZSBpbnN0ZWFkIG9mCiAgICAgICogdGhlIG1hbmlmZXN0ICovCiAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwgIkVycm9yIHBhcnNpbmcgdGhlIG1hbmlmZXN0LiIpOworICAgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG5ld19jbGllbnQpOwogICAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZmZlciwgJm1hcGluZm8pOwogICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgfQpAQCAtMTM4NiwyNSArMTUzMCwyNyBAQAogewogICBHc3REYXNoRGVtdXggKmRhc2hkZW11eCA9IEdTVF9EQVNIX0RFTVVYX0NBU1QgKHN0cmVhbS0+ZGVtdXgpOwogICBHc3REYXNoRGVtdXhTdHJlYW0gKmRhc2hzdHJlYW0gPSAoR3N0RGFzaERlbXV4U3RyZWFtICopIHN0cmVhbTsKLSAgR3N0RGF0ZVRpbWUgKnNlZ19lbmRfdGltZTsKKyAgR3N0RGF0ZVRpbWUgKnNlZ21lbnRBdmFpbGFiaWxpdHk7CiAgIEdzdEFjdGl2ZVN0cmVhbSAqYWN0aXZlX3N0cmVhbSA9IGRhc2hzdHJlYW0tPmFjdGl2ZV9zdHJlYW07CiAKLSAgc2VnX2VuZF90aW1lID0KLSAgICAgIGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X3NlZ21lbnRfYXZhaWxhYmlsaXR5X2VuZF90aW1lIChkYXNoZGVtdXgtPmNsaWVudCwKLSAgICAgIGFjdGl2ZV9zdHJlYW0pOworICBzZWdtZW50QXZhaWxhYmlsaXR5ID0KKyAgICAgIGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X3NlZ21lbnRfYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUKKyAgICAgIChkYXNoZGVtdXgtPmNsaWVudCwgYWN0aXZlX3N0cmVhbSk7CiAKLSAgaWYgKHNlZ19lbmRfdGltZSkgeworICBpZiAoc2VnbWVudEF2YWlsYWJpbGl0eSkgewogICAgIGdpbnQ2NCBkaWZmOwogICAgIEdzdERhdGVUaW1lICpjdXJfdGltZTsKIAogICAgIGN1cl90aW1lID0gZ3N0X2RhdGVfdGltZV9uZXdfbm93X3V0YyAoKTsKLSAgICBkaWZmID0gZ3N0X21wZF9jbGllbnRfY2FsY3VsYXRlX3RpbWVfZGlmZmVyZW5jZSAoY3VyX3RpbWUsIHNlZ19lbmRfdGltZSk7Ci0gICAgZ3N0X2RhdGVfdGltZV91bnJlZiAoc2VnX2VuZF90aW1lKTsKKyAgICBkaWZmID0gZ3N0X21wZF9jbGllbnRfY2FsY3VsYXRlX3RpbWVfZGlmZmVyZW5jZSAoY3VyX3RpbWUsCisgICAgICAgIHNlZ21lbnRBdmFpbGFiaWxpdHkpOworICAgIGdzdF9kYXRlX3RpbWVfdW5yZWYgKHNlZ21lbnRBdmFpbGFiaWxpdHkpOwogICAgIGdzdF9kYXRlX3RpbWVfdW5yZWYgKGN1cl90aW1lKTsKICAgICAvKiBzdWJ0cmFjdCB0aGUgc2VydmVyJ3MgY2xvY2sgZHJpZnQsIHNvIHRoYXQgaWYgdGhlIHNlcnZlcidzCiAgICAgICAgdGltZSBpcyBiZWhpbmQgb3VyIGlkZWEgb2YgVVRDLCB3ZSBuZWVkIHRvIHNsZWVwIGZvciBsb25nZXIKICAgICAgICBiZWZvcmUgcmVxdWVzdGluZyBhIGZyYWdtZW50ICovCi0gICAgcmV0dXJuIGRpZmYgLSBnc3RfZGFzaF9kZW11eF9nZXRfY2xvY2tfY29tcGVuc2F0aW9uIChkYXNoZGVtdXgpOworICAgIHJldHVybiBkaWZmIC0KKyAgICAgICAgZ3N0X2Rhc2hfZGVtdXhfZ2V0X2Nsb2NrX2NvbXBlbnNhdGlvbiAoZGFzaGRlbXV4KSAqIEdTVF9VU0VDT05EOwogICB9CiAgIHJldHVybiAwOwogfQpAQCAtMTUxMiw4ICsxNjU4LDEwIEBACiAgICAgICAgIC8qIHdoZW4gZmluaXNoZWQsIHByZXBhcmUgZm9yIHJlYWwgZGF0YSBzdHJlYW1pbmcgKi8KICAgICAgICAgaWYgKGRhc2hfc3RyZWFtLT5zaWR4X3BhcnNlci5zdGF0dXMgPT0gR1NUX0lTT0ZGX1NJRFhfUEFSU0VSX0ZJTklTSEVEKSB7CiAgICAgICAgICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChkYXNoX3N0cmVhbS0+cGVuZGluZ19zZWVrX3RzKSkgeworICAgICAgICAgICAgLyogRklYTUUsIHByZXNlcnZlIHNlZWsgZmxhZ3MgKi8KICAgICAgICAgICAgIGdzdF9kYXNoX2RlbXV4X3N0cmVhbV9zaWR4X3NlZWsgKGRhc2hfc3RyZWFtLAotICAgICAgICAgICAgICAgIGRhc2hfc3RyZWFtLT5wZW5kaW5nX3NlZWtfdHMpOworICAgICAgICAgICAgICAgIGRlbXV4LT5zZWdtZW50LnJhdGUgPj0gMCwgMCwgZGFzaF9zdHJlYW0tPnBlbmRpbmdfc2Vla190cywKKyAgICAgICAgICAgICAgICBOVUxMKTsKICAgICAgICAgICAgIGRhc2hfc3RyZWFtLT5wZW5kaW5nX3NlZWtfdHMgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBTSURYIChkYXNoX3N0cmVhbSktPmVudHJ5X2luZGV4ID0gZGFzaF9zdHJlYW0tPnNpZHhfaW5kZXg7CkBAIC0xNTg0LDcgKzE3MzIsNiBAQAogCiAgIGNsb2NrX2RyaWZ0ID0gZ19zbGljZV9uZXcwIChHc3REYXNoRGVtdXhDbG9ja0RyaWZ0KTsKICAgZ19tdXRleF9pbml0ICgmY2xvY2tfZHJpZnQtPmNsb2NrX2xvY2spOwotICBnX2NvbmRfaW5pdCAoJmNsb2NrX2RyaWZ0LT5jbG9ja19jb25kKTsKICAgY2xvY2tfZHJpZnQtPm5leHRfdXBkYXRlID0gZ19nZXRfbW9ub3RvbmljX3RpbWUgKCk7CiAgIHJldHVybiBjbG9ja19kcmlmdDsKIH0KQEAgLTE1OTYsNyArMTc0Myw2IEBACiAgICAgZ19tdXRleF9sb2NrICgmY2xvY2tfZHJpZnQtPmNsb2NrX2xvY2spOwogICAgIGlmIChjbG9ja19kcmlmdC0+bnRwX2Nsb2NrKQogICAgICAgZ19vYmplY3RfdW5yZWYgKGNsb2NrX2RyaWZ0LT5udHBfY2xvY2spOwotICAgIGdfY29uZF9jbGVhciAoJmNsb2NrX2RyaWZ0LT5jbG9ja19jb25kKTsKICAgICBnX211dGV4X3VubG9jayAoJmNsb2NrX2RyaWZ0LT5jbG9ja19sb2NrKTsKICAgICBnX211dGV4X2NsZWFyICgmY2xvY2tfZHJpZnQtPmNsb2NrX2xvY2spOwogICAgIGdfc2xpY2VfZnJlZSAoR3N0RGFzaERlbXV4Q2xvY2tEcmlmdCwgY2xvY2tfZHJpZnQpOwpAQCAtMTY3OCwxNiArMTgyNCwxNiBAQAogICByZXR1cm4gZ3N0X2RhdGVfdGltZV9uZXdfZnJvbV9nX2RhdGVfdGltZSAoZHQyKTsKIH0KIAotc3RydWN0IFJmYzgyMlRpbWVab25lCitzdHJ1Y3QgUmZjNTMyMlRpbWVab25lCiB7CiAgIGNvbnN0IGdjaGFyICpuYW1lOwogICBnZmxvYXQgdHpvZmZzZXQ7CiB9OwogCiAvKgotIFBhcnNlIGFuIFJGQzgyMiAoc2VjdGlvbiA1KSBkYXRlLXRpbWUgZnJvbSB0aGUgRGF0ZTogZmllbGQgaW4gdGhlCisgUGFyc2UgYW4gUkZDNTMyMiAoc2VjdGlvbiAzLjMpIGRhdGUtdGltZSBmcm9tIHRoZSBEYXRlOiBmaWVsZCBpbiB0aGUKICBIVFRQIHJlc3BvbnNlLiAKLSBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzgyMiNzZWN0aW9uLTUKKyBTZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzUzMjIjc2VjdGlvbi0zLjMKICovCiBzdGF0aWMgR3N0RGF0ZVRpbWUgKgogZ3N0X2Rhc2hfZGVtdXhfcGFyc2VfaHR0cF9oZWFkIChHc3REYXNoRGVtdXhDbG9ja0RyaWZ0ICogY2xvY2tfZHJpZnQsCkBAIC0xNjk3LDcgKzE4NDMsNyBAQAogICAgICJNYXkiLCAiSnVuIiwgIkp1bCIsICJBdWciLAogICAgICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiLCBOVUxMCiAgIH07Ci0gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgUmZjODIyVGltZVpvbmUgdGltZXpvbmVzW10gPSB7CisgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgUmZjNTMyMlRpbWVab25lIHRpbWV6b25lc1tdID0gewogICAgIHsiWiIsIDB9LAogICAgIHsiVVQiLCAwfSwKICAgICB7IkdNVCIsIDB9LApAQCAtMTc1NCw5ICsxOTAwLDYgQEAKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgfQotICAgIHdoaWxlICgqeiA9PSAnICcpIHsKLSAgICAgICsrejsKLSAgICB9CiAgICAgZm9yIChpbnQgaSA9IDA7IHRpbWV6b25lc1tpXS5uYW1lICYmICFwYXJzZWRfdHo7ICsraSkgewogICAgICAgaWYgKGdfYXNjaWlfc3RybmNhc2VjbXAgKHRpbWV6b25lc1tpXS5uYW1lLCB6LAogICAgICAgICAgICAgICBzdHJsZW4gKHRpbWV6b25lc1tpXS5uYW1lKSkgPT0gMCkgewpAQCAtMTc4NSw2ICsxOTI4LDkgQEAKICAgICAgICAgfQogICAgICAgfQogICAgIH0KKyAgICAvKiBBY2NlcHQgeWVhciBpbiBib3RoIDIgZGlnaXQgb3IgNCBkaWdpdCBmb3JtYXQgKi8KKyAgICBpZiAoeWVhciA8IDEwMCkKKyAgICAgIHllYXIgKz0gMjAwMDsKICAgfQogICBpZiAobW9udGggPiAwICYmIHBhcnNlZF90eikgewogICAgIHZhbHVlID0gZ3N0X2RhdGVfdGltZV9uZXcgKHR6b2Zmc2V0LApAQCAtMTg0NiwxNSArMTk5MiwxNyBAQAogZ3N0X2Rhc2hfZGVtdXhfcGFyc2VfaHR0cF94c2RhdGUgKEdzdERhc2hEZW11eENsb2NrRHJpZnQgKiBjbG9ja19kcmlmdCwKICAgICBHc3RCdWZmZXIgKiBidWZmZXIpCiB7Ci0gIEdzdERhdGVUaW1lICp2YWx1ZTsKKyAgR3N0RGF0ZVRpbWUgKnZhbHVlID0gTlVMTDsKICAgR3N0TWFwSW5mbyBtYXBpbmZvOwogCiAgIC8qIHRoZSBzdHJpbmcgZnJvbSB0aGUgc2VydmVyIG1pZ2h0IG5vdCBiZSB6ZXJvIHRlcm1pbmF0ZWQgKi8KLSAgZ3N0X2J1ZmZlcl9yZXNpemUgKGJ1ZmZlciwgMCwgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKSArIDEpOwotICBnc3RfYnVmZmVyX21hcCAoYnVmZmVyLCAmbWFwaW5mbywgR1NUX01BUF9SRUFEIHwgR1NUX01BUF9XUklURSk7Ci0gIG1hcGluZm8uZGF0YVttYXBpbmZvLnNpemUgLSAxXSA9ICdcMCc7Ci0gIHZhbHVlID0gZ3N0X2RhdGVfdGltZV9uZXdfZnJvbV9pc284NjAxX3N0cmluZyAoKGNvbnN0IGdjaGFyICopIG1hcGluZm8uZGF0YSk7Ci0gIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZmZlciwgJm1hcGluZm8pOworICBpZiAoZ3N0X2J1ZmZlcl9tYXAgKGJ1ZmZlciwgJm1hcGluZm8sIEdTVF9NQVBfUkVBRCkpIHsKKyAgICBnY2hhciAqc3RyOworICAgIHN0ciA9IGdfc3RybmR1cCAoKGNvbnN0IGdjaGFyICopIG1hcGluZm8uZGF0YSwgbWFwaW5mby5zaXplKTsKKyAgICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZtYXBpbmZvKTsKKyAgICB2YWx1ZSA9IGdzdF9kYXRlX3RpbWVfbmV3X2Zyb21faXNvODYwMV9zdHJpbmcgKHN0cik7CisgICAgZ19mcmVlIChzdHIpOworICB9CiAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTk1Niw4ICsyMTA0LDYgQEAKICAgICAgIGdfbXV0ZXhfbG9jayAoJmNsb2NrX2RyaWZ0LT5jbG9ja19sb2NrKTsKICAgICAgIGNsb2NrX2RyaWZ0LT5jbG9ja19jb21wZW5zYXRpb24gPQogICAgICAgICAgIGdfZGF0ZV90aW1lX2RpZmZlcmVuY2UgKHNlcnZlcl9ub3csIGNsaWVudF9ub3cpOwotICAgICAgY2xvY2tfZHJpZnQtPmdvdF9jbG9jayA9IFRSVUU7Ci0gICAgICBnX2NvbmRfYnJvYWRjYXN0ICgmY2xvY2tfZHJpZnQtPmNsb2NrX2NvbmQpOwogICAgICAgZ19tdXRleF91bmxvY2sgKCZjbG9ja19kcmlmdC0+Y2xvY2tfbG9jayk7CiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwKICAgICAgICAgICAiRGlmZmVyZW5jZSBiZXR3ZWVuIGNsaWVudCBhbmQgc2VydmVyIGNsb2NrcyBpcyAlbGZzIiwKZGlmZiAtLWdpdCBhL2V4dC9kYXNoL2dzdGRhc2hkZW11eC5oIGIvZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmgKaW5kZXggY2EyYWYzMS4uNWVkOTYyMCAxMDA2NDQKLS0tIGEvZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmgKKysrIGIvZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmgKQEAgLTk2LDkgKzk2LDExIEBACiAgIC8qIFByb3BlcnRpZXMgKi8KICAgR3N0Q2xvY2tUaW1lIG1heF9idWZmZXJpbmdfdGltZTsgICAgICAvKiBNYXhpbXVtIGJ1ZmZlcmluZyB0aW1lIGFjY3VtdWxhdGVkIGR1cmluZyBwbGF5YmFjayAqLwogICBndWludDY0IG1heF9iaXRyYXRlOyAgICAgICAgICAvKiBtYXggb2YgYml0cmF0ZSBzdXBwb3J0ZWQgYnkgdGFyZ2V0IGRlY29kZXIgICAgICAgICAqLworICBnY2hhciogZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXk7IC8qIHByZXNlbnRhdGlvbiB0aW1lIGRlbGF5IGlmIE1QREBzdWdnZXN0ZWRQcmVzZW50YXRpb25EZWxheSBpcyBub3QgcHJlc2VudCAqLwogCiAgIGdpbnQgbl9hdWRpb19zdHJlYW1zOwogICBnaW50IG5fdmlkZW9fc3RyZWFtczsKKyAgZ2ludCBuX3N1YnRpdGxlX3N0cmVhbXM7CiB9OwogCiBzdHJ1Y3QgX0dzdERhc2hEZW11eENsYXNzCmRpZmYgLS1naXQgYS9leHQvZGFzaC9nc3RtcGRwYXJzZXIuYyBiL2V4dC9kYXNoL2dzdG1wZHBhcnNlci5jCmluZGV4IDgwZGMwZGYuLjc3OGFiMmUgMTAwNjQ0Ci0tLSBhL2V4dC9kYXNoL2dzdG1wZHBhcnNlci5jCisrKyBiL2V4dC9kYXNoL2dzdG1wZHBhcnNlci5jCkBAIC0zMyw2ICszMyw5IEBACiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfZGFzaF9kZW11eF9kZWJ1ZwogCiAvKiBQcm9wZXJ0eSBwYXJzaW5nICovCitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfdmFsaWRhdGVkX3N0cmluZyAoeG1sTm9kZSAqIGFfbm9kZSwKKyAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsIGdjaGFyICoqIHByb3BlcnR5X3ZhbHVlLAorICAgIGdib29sZWFuICgqdmFsaWRhdG9yKSAoY29uc3QgY2hhciAqKSk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3Bfc3RyaW5nICh4bWxOb2RlICogYV9ub2RlLAogICAgIGNvbnN0IGdjaGFyICogcHJvcGVydHlfbmFtZSwgZ2NoYXIgKiogcHJvcGVydHlfdmFsdWUpOwogc3RhdGljIGdib29sZWFuIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9uc19wcm9wX3N0cmluZyAoeG1sTm9kZSAqIGFfbm9kZSwKQEAgLTY5LDcgKzcyLDggQEAKIHN0YXRpYyBnYm9vbGVhbiBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kYXRlVGltZSAoeG1sTm9kZSAqIGFfbm9kZSwKICAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsIEdzdERhdGVUaW1lICoqIHByb3BlcnR5X3ZhbHVlKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoeG1sTm9kZSAqIGFfbm9kZSwKLSAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsIGdpbnQ2NCBkZWZhdWx0X3ZhbHVlLCBnaW50NjQgKiBwcm9wZXJ0eV92YWx1ZSk7CisgICAgY29uc3QgZ2NoYXIgKiBwcm9wZXJ0eV9uYW1lLCBndWludDY0IGRlZmF1bHRfdmFsdWUsCisgICAgZ3VpbnQ2NCAqIHByb3BlcnR5X3ZhbHVlKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfbXBkcGFyc2VyX2dldF94bWxfbm9kZV9jb250ZW50ICh4bWxOb2RlICogYV9ub2RlLAogICAgIGdjaGFyICoqIGNvbnRlbnQpOwogc3RhdGljIGdjaGFyICpnc3RfbXBkcGFyc2VyX2dldF94bWxfbm9kZV9uYW1lc3BhY2UgKHhtbE5vZGUgKiBhX25vZGUsCkBAIC05NSwzMyArOTksMzYgQEAKIHN0YXRpYyB2b2lkIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc19ub2RlIChHUXVldWUgKiBxdWV1ZSwgeG1sTm9kZSAqIGFfbm9kZSk7CiBzdGF0aWMgdm9pZCBnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ21lbnRfdGltZWxpbmVfbm9kZSAoR3N0U2VnbWVudFRpbWVsaW5lTm9kZSAqKgogICAgIHBvaW50ZXIsIHhtbE5vZGUgKiBhX25vZGUpOwotc3RhdGljIHZvaWQgZ3N0X21wZHBhcnNlcl9wYXJzZV9tdWx0X3NlZ19iYXNlX3R5cGVfZXh0IChHc3RNdWx0U2VnbWVudEJhc2VUeXBlCi0gICAgKiogcG9pbnRlciwgeG1sTm9kZSAqIGFfbm9kZSwgR3N0TXVsdFNlZ21lbnRCYXNlVHlwZSAqIHBhcmVudCk7Ci1zdGF0aWMgdm9pZCBnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ21lbnRfbGlzdF9ub2RlIChHc3RTZWdtZW50TGlzdE5vZGUgKioKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X21wZHBhcnNlcl9wYXJzZV9tdWx0X3NlZ19iYXNlX3R5cGVfZXh0IChHc3RNdWx0U2VnbWVudEJhc2VUeXBlICoqIHBvaW50ZXIsCisgICAgeG1sTm9kZSAqIGFfbm9kZSwgR3N0TXVsdFNlZ21lbnRCYXNlVHlwZSAqIHBhcmVudCk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X2xpc3Rfbm9kZSAoR3N0U2VnbWVudExpc3ROb2RlICoqCiAgICAgcG9pbnRlciwgeG1sTm9kZSAqIGFfbm9kZSwgR3N0U2VnbWVudExpc3ROb2RlICogcGFyZW50KTsKIHN0YXRpYyB2b2lkCiBnc3RfbXBkcGFyc2VyX3BhcnNlX3JlcHJlc2VudGF0aW9uX2Jhc2VfdHlwZSAoR3N0UmVwcmVzZW50YXRpb25CYXNlVHlwZSAqKgogICAgIHBvaW50ZXIsIHhtbE5vZGUgKiBhX25vZGUpOwotc3RhdGljIHZvaWQgZ3N0X21wZHBhcnNlcl9wYXJzZV9yZXByZXNlbnRhdGlvbl9ub2RlIChHTGlzdCAqKiBsaXN0LAorc3RhdGljIGdib29sZWFuIGdzdF9tcGRwYXJzZXJfcGFyc2VfcmVwcmVzZW50YXRpb25fbm9kZSAoR0xpc3QgKiogbGlzdCwKICAgICB4bWxOb2RlICogYV9ub2RlLCBHc3RBZGFwdGF0aW9uU2V0Tm9kZSAqIHBhcmVudCk7Ci1zdGF0aWMgdm9pZCBnc3RfbXBkcGFyc2VyX3BhcnNlX2FkYXB0YXRpb25fc2V0X25vZGUgKEdMaXN0ICoqIGxpc3QsCitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21wZHBhcnNlcl9wYXJzZV9hZGFwdGF0aW9uX3NldF9ub2RlIChHTGlzdCAqKiBsaXN0LAogICAgIHhtbE5vZGUgKiBhX25vZGUsIEdzdFBlcmlvZE5vZGUgKiBwYXJlbnQpOwogc3RhdGljIHZvaWQgZ3N0X21wZHBhcnNlcl9wYXJzZV9zdWJzZXRfbm9kZSAoR0xpc3QgKiogbGlzdCwgeG1sTm9kZSAqIGFfbm9kZSk7Ci1zdGF0aWMgdm9pZCBnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ21lbnRfdGVtcGxhdGVfbm9kZSAoR3N0U2VnbWVudFRlbXBsYXRlTm9kZSAqKgotICAgIHBvaW50ZXIsIHhtbE5vZGUgKiBhX25vZGUsIEdzdFNlZ21lbnRUZW1wbGF0ZU5vZGUgKiBwYXJlbnQpOwotc3RhdGljIHZvaWQgZ3N0X21wZHBhcnNlcl9wYXJzZV9wZXJpb2Rfbm9kZSAoR0xpc3QgKiogbGlzdCwgeG1sTm9kZSAqIGFfbm9kZSk7CitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF90ZW1wbGF0ZV9ub2RlIChHc3RTZWdtZW50VGVtcGxhdGVOb2RlICoqIHBvaW50ZXIsCisgICAgeG1sTm9kZSAqIGFfbm9kZSwgR3N0U2VnbWVudFRlbXBsYXRlTm9kZSAqIHBhcmVudCk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21wZHBhcnNlcl9wYXJzZV9wZXJpb2Rfbm9kZSAoR0xpc3QgKiogbGlzdCwKKyAgICB4bWxOb2RlICogYV9ub2RlKTsKIHN0YXRpYyB2b2lkIGdzdF9tcGRwYXJzZXJfcGFyc2VfcHJvZ3JhbV9pbmZvX25vZGUgKEdMaXN0ICoqIGxpc3QsCiAgICAgeG1sTm9kZSAqIGFfbm9kZSk7CiBzdGF0aWMgdm9pZCBnc3RfbXBkcGFyc2VyX3BhcnNlX21ldHJpY3NfcmFuZ2Vfbm9kZSAoR0xpc3QgKiogbGlzdCwKICAgICB4bWxOb2RlICogYV9ub2RlKTsKIHN0YXRpYyB2b2lkIGdzdF9tcGRwYXJzZXJfcGFyc2VfbWV0cmljc19ub2RlIChHTGlzdCAqKiBsaXN0LCB4bWxOb2RlICogYV9ub2RlKTsKLXN0YXRpYyB2b2lkIGdzdF9tcGRwYXJzZXJfcGFyc2Vfcm9vdF9ub2RlIChHc3RNUEROb2RlICoqIHBvaW50ZXIsCitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21wZHBhcnNlcl9wYXJzZV9yb290X25vZGUgKEdzdE1QRE5vZGUgKiogcG9pbnRlciwKICAgICB4bWxOb2RlICogYV9ub2RlKTsKIHN0YXRpYyB2b2lkIGdzdF9tcGRwYXJzZXJfcGFyc2VfdXRjdGltaW5nX25vZGUgKEdMaXN0ICoqIGxpc3QsCiAgICAgeG1sTm9kZSAqIGFfbm9kZSk7CiAKIC8qIEhlbHBlciBmdW5jdGlvbnMgKi8KLXN0YXRpYyBnaW50IGNvbnZlcnRfdG9fbWlsbGlzZWNzIChnaW50IGRlY2ltYWxzLCBnaW50IHBvcyk7CitzdGF0aWMgZ3VpbnQgY29udmVydF90b19taWxsaXNlY3MgKGd1aW50IGRlY2ltYWxzLCBnaW50IHBvcyk7CiBzdGF0aWMgaW50IHN0cm5jbXBfZXh0IChjb25zdCBjaGFyICpzMSwgY29uc3QgY2hhciAqczIpOwogc3RhdGljIEdzdFN0cmVhbVBlcmlvZCAqZ3N0X21wZHBhcnNlcl9nZXRfc3RyZWFtX3BlcmlvZCAoR3N0TXBkQ2xpZW50ICogY2xpZW50KTsKIHN0YXRpYyBHc3RTTm9kZSAqZ3N0X21wZHBhcnNlcl9jbG9uZV9zX25vZGUgKEdzdFNOb2RlICogcG9pbnRlcik7CkBAIC0xNDAsMTEgKzE0NywxMiBAQAogc3RhdGljIGdjaGFyICpnc3RfbXBkcGFyc2VyX2J1aWxkX1VSTF9mcm9tX3RlbXBsYXRlIChjb25zdCBnY2hhciAqIHVybF90ZW1wbGF0ZSwKICAgICBjb25zdCBnY2hhciAqIGlkLCBndWludCBudW1iZXIsIGd1aW50IGJhbmR3aWR0aCwgZ3VpbnQ2NCB0aW1lKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfbXBkX2NsaWVudF9hZGRfbWVkaWFfc2VnbWVudCAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtLAotICAgIEdzdFNlZ21lbnRVUkxOb2RlICogdXJsX25vZGUsIGd1aW50IG51bWJlciwgZ2ludCByZXBlYXQsIGdpbnQ2NCBzY2FsZV9zdGFydCwKLSAgICBnaW50NjQgc2NhbGVfZHVyYXRpb24sIEdzdENsb2NrVGltZSBzdGFydCwgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uKTsKKyAgICBHc3RTZWdtZW50VVJMTm9kZSAqIHVybF9ub2RlLCBndWludCBudW1iZXIsIGdpbnQgcmVwZWF0LAorICAgIGd1aW50NjQgc2NhbGVfc3RhcnQsIGd1aW50NjQgc2NhbGVfZHVyYXRpb24sIEdzdENsb2NrVGltZSBzdGFydCwKKyAgICBHc3RDbG9ja1RpbWUgZHVyYXRpb24pOwogc3RhdGljIGNvbnN0IGdjaGFyICpnc3RfbXBkcGFyc2VyX21pbWV0eXBlX3RvX2NhcHMgKGNvbnN0IGdjaGFyICogbWltZVR5cGUpOwogc3RhdGljIEdzdENsb2NrVGltZSBnc3RfbXBkX2NsaWVudF9nZXRfc2VnbWVudF9kdXJhdGlvbiAoR3N0TXBkQ2xpZW50ICogY2xpZW50LAotICAgIEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSwgZ2ludDY0ICogc2NhbGVfZHVyYXRpb24pOworICAgIEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSwgZ3VpbnQ2NCAqIHNjYWxlX2R1cmF0aW9uKTsKIHN0YXRpYyBHc3REYXRlVGltZSAqZ3N0X21wZF9jbGllbnRfZ2V0X2F2YWlsYWJpbGl0eV9zdGFydF90aW1lIChHc3RNcGRDbGllbnQgKgogICAgIGNsaWVudCk7CiAKQEAgLTI1MywxNCArMjYxLDIwIEBACiAKIC8qIGZ1bmN0aW9ucyB0byBwYXJzZSBub2RlIG5hbWVzcGFjZXMsIGNvbnRlbnQgYW5kIHByb3BlcnRpZXMgKi8KIHN0YXRpYyBnYm9vbGVhbgotZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3Bfc3RyaW5nICh4bWxOb2RlICogYV9ub2RlLAotICAgIGNvbnN0IGdjaGFyICogcHJvcGVydHlfbmFtZSwgZ2NoYXIgKiogcHJvcGVydHlfdmFsdWUpCitnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF92YWxpZGF0ZWRfc3RyaW5nICh4bWxOb2RlICogYV9ub2RlLAorICAgIGNvbnN0IGdjaGFyICogcHJvcGVydHlfbmFtZSwgZ2NoYXIgKiogcHJvcGVydHlfdmFsdWUsCisgICAgZ2Jvb2xlYW4gKCp2YWxpZGF0ZSkgKGNvbnN0IGNoYXIgKikpCiB7CiAgIHhtbENoYXIgKnByb3Bfc3RyaW5nOwogICBnYm9vbGVhbiBleGlzdHMgPSBGQUxTRTsKIAogICBwcm9wX3N0cmluZyA9IHhtbEdldFByb3AgKGFfbm9kZSwgKGNvbnN0IHhtbENoYXIgKikgcHJvcGVydHlfbmFtZSk7CiAgIGlmIChwcm9wX3N0cmluZykgeworICAgIGlmICh2YWxpZGF0ZSAmJiAhKCp2YWxpZGF0ZSkgKChjb25zdCBjaGFyICopIHByb3Bfc3RyaW5nKSkgeworICAgICAgR1NUX1dBUk5JTkcgKCJWYWxpZGF0aW9uIGZhaWx1cmU6ICVzIiwgcHJvcF9zdHJpbmcpOworICAgICAgeG1sRnJlZSAocHJvcF9zdHJpbmcpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KICAgICAqcHJvcGVydHlfdmFsdWUgPSAoZ2NoYXIgKikgcHJvcF9zdHJpbmc7CiAgICAgZXhpc3RzID0gVFJVRTsKICAgICBHU1RfTE9HICgiIC0gJXM6ICVzIiwgcHJvcGVydHlfbmFtZSwgcHJvcF9zdHJpbmcpOwpAQCAtMjg5LDYgKzMwMywyOCBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3N0cmluZyAoeG1sTm9kZSAqIGFfbm9kZSwKKyAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsIGdjaGFyICoqIHByb3BlcnR5X3ZhbHVlKQoreworICByZXR1cm4gZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfdmFsaWRhdGVkX3N0cmluZyAoYV9ub2RlLCBwcm9wZXJ0eV9uYW1lLAorICAgICAgcHJvcGVydHlfdmFsdWUsIE5VTEwpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9tcGRwYXJzZXJfdmFsaWRhdGVfbm9fd2hpdGVzcGFjZSAoY29uc3QgY2hhciAqcykKK3sKKyAgcmV0dXJuICFzdHJwYnJrIChzLCAiXHJcblx0ICIpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3N0cmluZ19ub193aGl0ZXNwYWNlICh4bWxOb2RlICogYV9ub2RlLAorICAgIGNvbnN0IGdjaGFyICogcHJvcGVydHlfbmFtZSwgZ2NoYXIgKiogcHJvcGVydHlfdmFsdWUpCit7CisgIHJldHVybiBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF92YWxpZGF0ZWRfc3RyaW5nIChhX25vZGUsIHByb3BlcnR5X25hbWUsCisgICAgICBwcm9wZXJ0eV92YWx1ZSwgZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9ub193aGl0ZXNwYWNlKTsKK30KKworc3RhdGljIGdib29sZWFuCiBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9zdHJpbmdfdmVjdG9yX3R5cGUgKHhtbE5vZGUgKiBhX25vZGUsCiAgICAgY29uc3QgZ2NoYXIgKiBwcm9wZXJ0eV9uYW1lLCBnY2hhciAqKiogcHJvcGVydHlfdmFsdWUpCiB7CkBAIC0zNTEsMTMgKzM4NywxNiBAQAogICAqcHJvcGVydHlfdmFsdWUgPSBkZWZhdWx0X3ZhbDsKICAgcHJvcF9zdHJpbmcgPSB4bWxHZXRQcm9wIChhX25vZGUsIChjb25zdCB4bWxDaGFyICopIHByb3BlcnR5X25hbWUpOwogICBpZiAocHJvcF9zdHJpbmcpIHsKLSAgICBpZiAoc3NjYW5mICgoZ2NoYXIgKikgcHJvcF9zdHJpbmcsICIldSIsIHByb3BlcnR5X3ZhbHVlKSA9PSAxKSB7CisgICAgaWYgKHNzY2FuZiAoKGdjaGFyICopIHByb3Bfc3RyaW5nLCAiJXUiLCBwcm9wZXJ0eV92YWx1ZSkgPT0gMSAmJgorICAgICAgICBzdHJzdHIgKChnY2hhciAqKSBwcm9wX3N0cmluZywgIi0iKSA9PSBOVUxMKSB7CiAgICAgICBleGlzdHMgPSBUUlVFOwogICAgICAgR1NUX0xPRyAoIiAtICVzOiAldSIsIHByb3BlcnR5X25hbWUsICpwcm9wZXJ0eV92YWx1ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgIEdTVF9XQVJOSU5HCiAgICAgICAgICAgKCJmYWlsZWQgdG8gcGFyc2UgdW5zaWduZWQgaW50ZWdlciBwcm9wZXJ0eSAlcyBmcm9tIHhtbCBzdHJpbmcgJXMiLAogICAgICAgICAgIHByb3BlcnR5X25hbWUsIHByb3Bfc3RyaW5nKTsKKyAgICAgIC8qIHNzY2FuZiBtaWdodCBoYXZlIHdyaXR0ZW4gdG8gKnByb3BlcnR5X3ZhbHVlLiBSZXN0b3JlIHRvIGRlZmF1bHQgKi8KKyAgICAgICpwcm9wZXJ0eV92YWx1ZSA9IGRlZmF1bHRfdmFsOwogICAgIH0KICAgICB4bWxGcmVlIChwcm9wX3N0cmluZyk7CiAgIH0KQEAgLTM3NiwxMyArNDE1LDE2IEBACiAgIHByb3Bfc3RyaW5nID0geG1sR2V0UHJvcCAoYV9ub2RlLCAoY29uc3QgeG1sQ2hhciAqKSBwcm9wZXJ0eV9uYW1lKTsKICAgaWYgKHByb3Bfc3RyaW5nKSB7CiAgICAgaWYgKHNzY2FuZiAoKGdjaGFyICopIHByb3Bfc3RyaW5nLCAiJSIgR19HVUlOVDY0X0ZPUk1BVCwKLSAgICAgICAgICAgIHByb3BlcnR5X3ZhbHVlKSA9PSAxKSB7CisgICAgICAgICAgICBwcm9wZXJ0eV92YWx1ZSkgPT0gMSAmJgorICAgICAgICBzdHJzdHIgKChnY2hhciAqKSBwcm9wX3N0cmluZywgIi0iKSA9PSBOVUxMKSB7CiAgICAgICBleGlzdHMgPSBUUlVFOwogICAgICAgR1NUX0xPRyAoIiAtICVzOiAlIiBHX0dVSU5UNjRfRk9STUFULCBwcm9wZXJ0eV9uYW1lLCAqcHJvcGVydHlfdmFsdWUpOwogICAgIH0gZWxzZSB7CiAgICAgICBHU1RfV0FSTklORwogICAgICAgICAgICgiZmFpbGVkIHRvIHBhcnNlIHVuc2lnbmVkIGludGVnZXIgcHJvcGVydHkgJXMgZnJvbSB4bWwgc3RyaW5nICVzIiwKICAgICAgICAgICBwcm9wZXJ0eV9uYW1lLCBwcm9wX3N0cmluZyk7CisgICAgICAvKiBzc2NhbmYgbWlnaHQgaGF2ZSB3cml0dGVuIHRvICpwcm9wZXJ0eV92YWx1ZS4gUmVzdG9yZSB0byBkZWZhdWx0ICovCisgICAgICAqcHJvcGVydHlfdmFsdWUgPSBkZWZhdWx0X3ZhbDsKICAgICB9CiAgICAgeG1sRnJlZSAocHJvcF9zdHJpbmcpOwogICB9CkBAIC00MDksMTIgKzQ1MSwyMSBAQAogICAgICAgICBleGlzdHMgPSBUUlVFOwogICAgICAgICBHU1RfTE9HICgiIC0gJXM6IiwgcHJvcGVydHlfbmFtZSk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAqdmFsdWVfc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgaWYgKHNzY2FuZiAoKGdjaGFyICopIHN0cl92ZWN0b3JbaV0sICIldSIsICZwcm9wX3VpbnRfdmVjdG9yW2ldKSA9PSAxKSB7CisgICAgICAgICAgaWYgKHNzY2FuZiAoKGdjaGFyICopIHN0cl92ZWN0b3JbaV0sICIldSIsICZwcm9wX3VpbnRfdmVjdG9yW2ldKSA9PSAxCisgICAgICAgICAgICAgICYmIHN0cnN0ciAoc3RyX3ZlY3RvcltpXSwgIi0iKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBHU1RfTE9HICgiICAgICV1IiwgcHJvcF91aW50X3ZlY3RvcltpXSk7CiAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEdTVF9XQVJOSU5HCiAgICAgICAgICAgICAgICAgKCJmYWlsZWQgdG8gcGFyc2UgdWludCB2ZWN0b3IgdHlwZSBwcm9wZXJ0eSAlcyBmcm9tIHhtbCBzdHJpbmcgJXMiLAogICAgICAgICAgICAgICAgIHByb3BlcnR5X25hbWUsIHN0cl92ZWN0b3JbaV0pOworICAgICAgICAgICAgLyogdGhlcmUgaXMgbm8gc3BlY2lhbCB2YWx1ZSB0byBwdXQgaW4gcHJvcF91aW50X3ZlY3RvcltpXSB0bworICAgICAgICAgICAgICogc2lnbmFsIGl0IGlzIGludmFsaWQsIHNvIHdlIGp1c3QgY2xlYW4gZXZlcnl0aGluZyBhbmQgcmV0dXJuCisgICAgICAgICAgICAgKiBGQUxTRQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBnX2ZyZWUgKHByb3BfdWludF92ZWN0b3IpOworICAgICAgICAgICAgcHJvcF91aW50X3ZlY3RvciA9IE5VTEw7CisgICAgICAgICAgICBleGlzdHMgPSBGQUxTRTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAqcHJvcGVydHlfdmFsdWUgPSBwcm9wX3VpbnRfdmVjdG9yOwpAQCAtNTYyLDEzICs2MTMsMjUgQEAKICAgICB9CiAgICAgLyogcmVhZCBmaXJzdF9ieXRlX3BvcyAqLwogICAgIGlmIChwb3MgIT0gMCkgewotICAgICAgaWYgKHNzY2FuZiAoc3RyLCAiJSIgR19HVUlOVDY0X0ZPUk1BVCwgJmZpcnN0X2J5dGVfcG9zKSAhPSAxKSB7CisgICAgICAvKiByZXBsYWNlIHN0cltwb3NdIHdpdGggJ1wwJyB0byBhbGxvdyBzc2NhbmYgdG8gbm90IGJlIGNvbmZ1c2VkIGJ5CisgICAgICAgKiB0aGUgbWludXMgc2lnbiAoZWcgIiAtMSIgKG9ic2VydmUgdGhlIHNwYWNlIGJlZm9yZSAtKSB3b3VsZCBvdGhlcndpc2UKKyAgICAgICAqIGJlIGludGVycHJldGVkIGFzIHJhbmdlIC0xIHRvIDEpCisgICAgICAgKi8KKyAgICAgIHN0cltwb3NdID0gMDsKKyAgICAgIGlmIChzc2NhbmYgKHN0ciwgIiUiIEdfR1VJTlQ2NF9GT1JNQVQsICZmaXJzdF9ieXRlX3BvcykgIT0gMSB8fAorICAgICAgICAgIHN0cnN0ciAoc3RyLCAiLSIpICE9IE5VTEwpIHsKKyAgICAgICAgLyogc3NjYW5mIGZhaWxlZCBvciBpdCBmb3VuZCBhIG5lZ2F0aXZlIG51bWJlciAqLworICAgICAgICAvKiByZXN0b3JlIHRoZSAnLScgc2lnbiAqLworICAgICAgICBzdHJbcG9zXSA9ICctJzsKICAgICAgICAgZ290byBlcnJvcjsKICAgICAgIH0KKyAgICAgIC8qIHJlc3RvcmUgdGhlICctJyBzaWduICovCisgICAgICBzdHJbcG9zXSA9ICctJzsKICAgICB9CiAgICAgLyogcmVhZCBsYXN0X2J5dGVfcG9zICovCiAgICAgaWYgKHBvcyA8IChsZW4gLSAxKSkgewotICAgICAgaWYgKHNzY2FuZiAoc3RyICsgcG9zICsgMSwgIiUiIEdfR1VJTlQ2NF9GT1JNQVQsICZsYXN0X2J5dGVfcG9zKSAhPSAxKSB7CisgICAgICBpZiAoc3NjYW5mIChzdHIgKyBwb3MgKyAxLCAiJSIgR19HVUlOVDY0X0ZPUk1BVCwgJmxhc3RfYnl0ZV9wb3MpICE9IDEgfHwKKyAgICAgICAgICBzdHJzdHIgKHN0ciArIHBvcyArIDEsICItIikgIT0gTlVMTCkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgICAgfQogICAgIH0KQEAgLTYxMyw2ICs2NzYsMTAgQEAKICAgICAgIEdTVF9UUkFDRSAoInBvcyAlZCA+PSBsZW4gJWQiLCBwb3MsIGxlbik7CiAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKyAgICAvKiBzZWFyY2ggZm9yIG5lZ2F0aXZlIHNpZ24gKi8KKyAgICBpZiAoc3Ryc3RyIChzdHIsICItIikgIT0gTlVMTCkgeworICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAgICAgLyogcmVhZCBudW0gKi8KICAgICBpZiAocG9zICE9IDApIHsKICAgICAgIGlmIChzc2NhbmYgKHN0ciwgIiV1IiwgJm51bSkgIT0gMSkgewpAQCAtNjU5LDYgKzcyNiwxMSBAQAogICAgIHN0ciA9IChnY2hhciAqKSBwcm9wX3N0cmluZzsKICAgICBHU1RfVFJBQ0UgKCJmcmFtZXJhdGU6ICVzLCBsZW4gJWQiLCBzdHIsIGxlbik7CiAKKyAgICAvKiBzZWFyY2ggZm9yIG5lZ2F0aXZlIHNpZ24gKi8KKyAgICBpZiAoc3Ryc3RyIChzdHIsICItIikgIT0gTlVMTCkgeworICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKICAgICAvKiByZWFkICIvIiBpZiBhdmFpbGFibGUgKi8KICAgICBwb3MgPSBzdHJjc3BuIChzdHIsICIvIik7CiAgICAgLyogcmVhZCBudW0gKi8KQEAgLTcxNyw3ICs3ODksNyBAQAogICAgICAgdmFsID0gMDsKICAgICB9IGVsc2UgewogICAgICAgZmxhZyA9IFRSVUU7Ci0gICAgICBpZiAoc3NjYW5mIChzdHIsICIldSIsICZ2YWwpICE9IDEpCisgICAgICBpZiAoc3NjYW5mIChzdHIsICIldSIsICZ2YWwpICE9IDEgfHwgc3Ryc3RyIChzdHIsICItIikgIT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKQEAgLTc2NCw3ICs4MzYsOCBAQAogICB4bWxDaGFyICpwcm9wX3N0cmluZzsKICAgZ2NoYXIgKnN0cjsKICAgZ2ludCByZXQsIHBvczsKLSAgZ2ludCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZDsKKyAgZ2ludCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGU7CisgIGdkb3VibGUgc2Vjb25kOwogICBnYm9vbGVhbiBleGlzdHMgPSBGQUxTRTsKIAogICBwcm9wX3N0cmluZyA9IHhtbEdldFByb3AgKGFfbm9kZSwgKGNvbnN0IHhtbENoYXIgKikgcHJvcGVydHlfbmFtZSk7CkBAIC03NzMsNDYgKzg0Niw0NiBAQAogICAgIEdTVF9UUkFDRSAoImRhdGVUaW1lOiAlcywgbGVuICVkIiwgc3RyLCB4bWxTdHJsZW4gKHByb3Bfc3RyaW5nKSk7CiAgICAgLyogcGFyc2UgeWVhciAqLwogICAgIHJldCA9IHNzY2FuZiAoc3RyLCAiJWQiLCAmeWVhcik7Ci0gICAgaWYgKHJldCAhPSAxKQorICAgIGlmIChyZXQgIT0gMSB8fCB5ZWFyIDw9IDApCiAgICAgICBnb3RvIGVycm9yOwogICAgIHBvcyA9IHN0cmNzcG4gKHN0ciwgIi0iKTsKICAgICBzdHIgKz0gKHBvcyArIDEpOwogICAgIEdTVF9UUkFDRSAoIiAtIHllYXIgJWQiLCB5ZWFyKTsKICAgICAvKiBwYXJzZSBtb250aCAqLwogICAgIHJldCA9IHNzY2FuZiAoc3RyLCAiJWQiLCAmbW9udGgpOwotICAgIGlmIChyZXQgIT0gMSkKKyAgICBpZiAocmV0ICE9IDEgfHwgbW9udGggPD0gMCkKICAgICAgIGdvdG8gZXJyb3I7CiAgICAgcG9zID0gc3RyY3NwbiAoc3RyLCAiLSIpOwogICAgIHN0ciArPSAocG9zICsgMSk7CiAgICAgR1NUX1RSQUNFICgiIC0gbW9udGggJWQiLCBtb250aCk7CiAgICAgLyogcGFyc2UgZGF5ICovCiAgICAgcmV0ID0gc3NjYW5mIChzdHIsICIlZCIsICZkYXkpOwotICAgIGlmIChyZXQgIT0gMSkKKyAgICBpZiAocmV0ICE9IDEgfHwgZGF5IDw9IDApCiAgICAgICBnb3RvIGVycm9yOwogICAgIHBvcyA9IHN0cmNzcG4gKHN0ciwgIlQiKTsKICAgICBzdHIgKz0gKHBvcyArIDEpOwogICAgIEdTVF9UUkFDRSAoIiAtIGRheSAlZCIsIGRheSk7CiAgICAgLyogcGFyc2UgaG91ciAqLwogICAgIHJldCA9IHNzY2FuZiAoc3RyLCAiJWQiLCAmaG91cik7Ci0gICAgaWYgKHJldCAhPSAxKQorICAgIGlmIChyZXQgIT0gMSB8fCBob3VyIDwgMCkKICAgICAgIGdvdG8gZXJyb3I7CiAgICAgcG9zID0gc3RyY3NwbiAoc3RyLCAiOiIpOwogICAgIHN0ciArPSAocG9zICsgMSk7CiAgICAgR1NUX1RSQUNFICgiIC0gaG91ciAlZCIsIGhvdXIpOwogICAgIC8qIHBhcnNlIG1pbnV0ZSAqLwogICAgIHJldCA9IHNzY2FuZiAoc3RyLCAiJWQiLCAmbWludXRlKTsKLSAgICBpZiAocmV0ICE9IDEpCisgICAgaWYgKHJldCAhPSAxIHx8IG1pbnV0ZSA8IDApCiAgICAgICBnb3RvIGVycm9yOwogICAgIHBvcyA9IHN0cmNzcG4gKHN0ciwgIjoiKTsKICAgICBzdHIgKz0gKHBvcyArIDEpOwogICAgIEdTVF9UUkFDRSAoIiAtIG1pbnV0ZSAlZCIsIG1pbnV0ZSk7CiAgICAgLyogcGFyc2Ugc2Vjb25kICovCi0gICAgcmV0ID0gc3NjYW5mIChzdHIsICIlZCIsICZzZWNvbmQpOwotICAgIGlmIChyZXQgIT0gMSkKKyAgICByZXQgPSBzc2NhbmYgKHN0ciwgIiVsZiIsICZzZWNvbmQpOworICAgIGlmIChyZXQgIT0gMSB8fCBzZWNvbmQgPCAwKQogICAgICAgZ290byBlcnJvcjsKLSAgICBHU1RfVFJBQ0UgKCIgLSBzZWNvbmQgJWQiLCBzZWNvbmQpOworICAgIEdTVF9UUkFDRSAoIiAtIHNlY29uZCAlbGYiLCBzZWNvbmQpOwogCi0gICAgR1NUX0xPRyAoIiAtICVzOiAlNGQvJTAyZC8lMDJkICUwMmQ6JTAyZDolMDJkIiwgcHJvcGVydHlfbmFtZSwKKyAgICBHU1RfTE9HICgiIC0gJXM6ICU0ZC8lMDJkLyUwMmQgJTAyZDolMDJkOiUwOS42bGYiLCBwcm9wZXJ0eV9uYW1lLAogICAgICAgICB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCk7CiAKICAgICBleGlzdHMgPSBUUlVFOwpAQCAtODQ5LDEwICs5MjIsMTEgQEAKICovCiAKIC8qIHRoaXMgZnVuY3Rpb24gY29tcHV0ZXMgZGVjaW1hbHMgKiAxMCBeICgzIC0gcG9zKSAqLwotc3RhdGljIGdpbnQKLWNvbnZlcnRfdG9fbWlsbGlzZWNzIChnaW50IGRlY2ltYWxzLCBnaW50IHBvcykKK3N0YXRpYyBndWludAorY29udmVydF90b19taWxsaXNlY3MgKGd1aW50IGRlY2ltYWxzLCBnaW50IHBvcykKIHsKLSAgZ2ludCBudW0gPSAxLCBkZW4gPSAxLCBpID0gMyAtIHBvczsKKyAgZ3VpbnQgbnVtID0gMSwgZGVuID0gMTsKKyAgZ2ludCBpID0gMyAtIHBvczsKIAogICB3aGlsZSAoaSA8IDApIHsKICAgICBkZW4gKj0gMTA7CkBAIC04NjcsMTQxICs5NDEsMjM5IEBACiB9CiAKIHN0YXRpYyBnYm9vbGVhbgorYWNjdW11bGF0ZSAoZ3VpbnQ2NCAqIHYsIGd1aW50NjQgbXVsLCBndWludDY0IGFkZCkKK3sKKyAgZ3VpbnQ2NCB0bXA7CisKKyAgaWYgKCp2ID4gR19NQVhVSU5UNjQgLyBtdWwpCisgICAgcmV0dXJuIEZBTFNFOworICB0bXAgPSAqdiAqIG11bDsKKyAgaWYgKHRtcCA+IEdfTUFYVUlOVDY0IC0gYWRkKQorICAgIHJldHVybiBGQUxTRTsKKyAgKnYgPSB0bXAgKyBhZGQ7CisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKGNvbnN0IGNoYXIgKnN0ciwgZ3VpbnQ2NCAqIHZhbHVlKQoreworICBnaW50IHJldCwgbGVuLCBwb3MsIHBvc1Q7CisgIGdpbnQgeWVhcnMgPSAtMSwgbW9udGhzID0gLTEsIGRheXMgPSAtMSwgaG91cnMgPSAtMSwgbWludXRlcyA9IC0xLCBzZWNvbmRzID0KKyAgICAgIC0xLCBkZWNpbWFscyA9IC0xLCByZWFkOworICBnYm9vbGVhbiBoYXZlX21zID0gRkFMU0U7CisgIGd1aW50NjQgdG1wX3ZhbHVlOworCisgIGxlbiA9IHN0cmxlbiAoc3RyKTsKKyAgR1NUX1RSQUNFICgiZHVyYXRpb246ICVzLCBsZW4gJWQiLCBzdHIsIGxlbik7CisgIGlmIChzdHJzcG4gKHN0ciwgIlBUMDEyMzQ1Njc4OS4sIFx0SE1EU1kiKSA8IGxlbikgeworICAgIEdTVF9XQVJOSU5HICgiSW52YWxpZCBjaGFyYWN0ZXIgZm91bmQ6ICclcyciLCBzdHIpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKyAgLyogc2tpcCBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UgKi8KKyAgd2hpbGUgKHN0cmNociAoIiBcdCIsIHN0clswXSkpIHsKKyAgICBzdHIrKzsKKyAgICBsZW4tLTsKKyAgfQorICB3aGlsZSAobGVuID4gMCAmJiBzdHJjaHIgKCIgXHQiLCBzdHJbbGVuIC0gMV0pKQorICAgIC0tbGVuOworCisgIC8qIHJlYWQgIlAiIGZvciBwZXJpb2QgKi8KKyAgaWYgKHN0clswXSAhPSAnUCcpIHsKKyAgICBHU1RfV0FSTklORyAoIlAgbm90IGZvdW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyEiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisgIHN0cisrOworICBsZW4tLTsKKworICAvKiByZWFkICJUIiBmb3IgdGltZSAoaWYgcHJlc2VudCkgKi8KKyAgcG9zVCA9IHN0cmNzcG4gKHN0ciwgIlQiKTsKKyAgbGVuIC09IHBvc1Q7CisgIGlmIChwb3NUID4gMCkgeworICAgIC8qIHRoZXJlIGlzIHNvbWUgcm9vbSBiZXR3ZWVuIFAgYW5kIFQsIHNvIHRoZXJlIG11c3QgYmUgYSBwZXJpb2Qgc2VjdGlvbiAqLworICAgIC8qIHJlYWQgeWVhcnMsIG1vbnRocywgZGF5cyAqLworICAgIGRvIHsKKyAgICAgIEdTVF9UUkFDRSAoInBhcnNpbmcgc3Vic3RyaW5nICVzIiwgc3RyKTsKKyAgICAgIHBvcyA9IHN0cmNzcG4gKHN0ciwgIllNRCIpOworICAgICAgcmV0ID0gc3NjYW5mIChzdHIsICIldSIsICZyZWFkKTsKKyAgICAgIGlmIChyZXQgIT0gMSkgeworICAgICAgICBHU1RfV0FSTklORyAoImNhbiBub3QgcmVhZCBpbnRlZ2VyIHZhbHVlIGZyb20gc3RyaW5nICVzISIsIHN0cik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICB9CisgICAgICBzd2l0Y2ggKHN0cltwb3NdKSB7CisgICAgICAgIGNhc2UgJ1knOgorICAgICAgICAgIGlmICh5ZWFycyAhPSAtMSB8fCBtb250aHMgIT0gLTEgfHwgZGF5cyAhPSAtMSkgeworICAgICAgICAgICAgR1NUX1dBUk5JTkcgKCJ5ZWFyLCBtb250aCBvciBkYXkgd2FzIGFscmVhZHkgc2V0Iik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgIH0KKyAgICAgICAgICB5ZWFycyA9IHJlYWQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ00nOgorICAgICAgICAgIGlmIChtb250aHMgIT0gLTEgfHwgZGF5cyAhPSAtMSkgeworICAgICAgICAgICAgR1NUX1dBUk5JTkcgKCJtb250aCBvciBkYXkgd2FzIGFscmVhZHkgc2V0Iik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgIH0KKyAgICAgICAgICBtb250aHMgPSByZWFkOworICAgICAgICAgIGlmIChtb250aHMgPj0gMTIpIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HICgiTW9udGggb3V0IG9mIHJhbmdlIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnRCc6CisgICAgICAgICAgaWYgKGRheXMgIT0gLTEpIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HICgiZGF5IHdhcyBhbHJlYWR5IHNldCIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICB9CisgICAgICAgICAgZGF5cyA9IHJlYWQ7CisgICAgICAgICAgaWYgKGRheXMgPj0gMzEpIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HICgiRGF5IG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgR1NUX1dBUk5JTkcgKCJ1bmV4cGVjdGVkIGNoYXIgJWMhIiwgc3RyW3Bvc10pOworICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBHU1RfVFJBQ0UgKCJyZWFkIG51bWJlciAldSB0eXBlICVjIiwgcmVhZCwgc3RyW3Bvc10pOworICAgICAgc3RyICs9IChwb3MgKyAxKTsKKyAgICAgIHBvc1QgLT0gKHBvcyArIDEpOworICAgIH0gd2hpbGUgKHBvc1QgPiAwKTsKKyAgfQorCisgIGlmICh5ZWFycyA9PSAtMSkKKyAgICB5ZWFycyA9IDA7CisgIGlmIChtb250aHMgPT0gLTEpCisgICAgbW9udGhzID0gMDsKKyAgaWYgKGRheXMgPT0gLTEpCisgICAgZGF5cyA9IDA7CisKKyAgR1NUX1RSQUNFICgiWTpNOkQ9JWQ6JWQ6JWQiLCB5ZWFycywgbW9udGhzLCBkYXlzKTsKKworICAvKiByZWFkICJUIiBmb3IgdGltZSAoaWYgcHJlc2VudCkgKi8KKyAgLyogaGVyZSBUIGlzIGF0IHBvcyA9PSAwICovCisgIHN0cisrOworICBsZW4tLTsKKyAgcG9zID0gMDsKKyAgaWYgKHBvcyA8IGxlbikgeworICAgIC8qIFQgZm91bmQsIHRoZXJlIGlzIGEgdGltZSBzZWN0aW9uICovCisgICAgLyogcmVhZCBob3VycywgbWludXRlcywgc2Vjb25kcywgaHVuZHJlZHRocyBvZiBzZWNvbmQgKi8KKyAgICBkbyB7CisgICAgICBHU1RfVFJBQ0UgKCJwYXJzaW5nIHN1YnN0cmluZyAlcyIsIHN0cik7CisgICAgICBwb3MgPSBzdHJjc3BuIChzdHIsICJITVMsLiIpOworICAgICAgcmV0ID0gc3NjYW5mIChzdHIsICIldSIsICZyZWFkKTsKKyAgICAgIGlmIChyZXQgIT0gMSkgeworICAgICAgICBHU1RfV0FSTklORyAoImNhbiBub3QgcmVhZCBpbnRlZ2VyIHZhbHVlIGZyb20gc3RyaW5nICVzISIsIHN0cik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICB9CisgICAgICBzd2l0Y2ggKHN0cltwb3NdKSB7CisgICAgICAgIGNhc2UgJ0gnOgorICAgICAgICAgIGlmIChob3VycyAhPSAtMSB8fCBtaW51dGVzICE9IC0xIHx8IHNlY29uZHMgIT0gLTEpIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HICgiaG91ciwgbWludXRlIG9yIHNlY29uZCB3YXMgYWxyZWFkeSBzZXQiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgfQorICAgICAgICAgIGhvdXJzID0gcmVhZDsKKyAgICAgICAgICBpZiAoaG91cnMgPj0gMjQpIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HICgiSG91ciBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdNJzoKKyAgICAgICAgICBpZiAobWludXRlcyAhPSAtMSB8fCBzZWNvbmRzICE9IC0xKSB7CisgICAgICAgICAgICBHU1RfV0FSTklORyAoIm1pbnV0ZSBvciBzZWNvbmQgd2FzIGFscmVhZHkgc2V0Iik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgIH0KKyAgICAgICAgICBtaW51dGVzID0gcmVhZDsKKyAgICAgICAgICBpZiAobWludXRlcyA+PSA2MCkgeworICAgICAgICAgICAgR1NUX1dBUk5JTkcgKCJNaW51dGUgb3V0IG9mIHJhbmdlIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnUyc6CisgICAgICAgICAgaWYgKGhhdmVfbXMpIHsKKyAgICAgICAgICAgIC8qIHdlIGhhdmUgcmVhZCB0aGUgZGVjaW1hbCBwYXJ0IG9mIHRoZSBzZWNvbmRzICovCisgICAgICAgICAgICBkZWNpbWFscyA9IGNvbnZlcnRfdG9fbWlsbGlzZWNzIChyZWFkLCBwb3MpOworICAgICAgICAgICAgR1NUX1RSQUNFICgiZGVjaW1hbCBudW1iZXIgJXUgKCVkIGRpZ2l0cykgLT4gJWQgbXMiLCByZWFkLCBwb3MsCisgICAgICAgICAgICAgICAgZGVjaW1hbHMpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoc2Vjb25kcyAhPSAtMSkgeworICAgICAgICAgICAgICBHU1RfV0FSTklORyAoInNlY29uZCB3YXMgYWxyZWFkeSBzZXQiKTsKKyAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIG5vIGRlY2ltYWxzICovCisgICAgICAgICAgICBzZWNvbmRzID0gcmVhZDsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJy4nOgorICAgICAgICBjYXNlICcsJzoKKyAgICAgICAgICAvKiB3ZSBoYXZlIHJlYWQgdGhlIGludGVnZXIgcGFydCBvZiBhIGRlY2ltYWwgbnVtYmVyIGluIHNlY29uZHMgKi8KKyAgICAgICAgICBpZiAoc2Vjb25kcyAhPSAtMSkgeworICAgICAgICAgICAgR1NUX1dBUk5JTkcgKCJzZWNvbmQgd2FzIGFscmVhZHkgc2V0Iik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgIH0KKyAgICAgICAgICBzZWNvbmRzID0gcmVhZDsKKyAgICAgICAgICBoYXZlX21zID0gVFJVRTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBHU1RfV0FSTklORyAoInVuZXhwZWN0ZWQgY2hhciAlYyEiLCBzdHJbcG9zXSk7CisgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIEdTVF9UUkFDRSAoInJlYWQgbnVtYmVyICV1IHR5cGUgJWMiLCByZWFkLCBzdHJbcG9zXSk7CisgICAgICBzdHIgKz0gcG9zICsgMTsKKyAgICAgIGxlbiAtPSAocG9zICsgMSk7CisgICAgfSB3aGlsZSAobGVuID4gMCk7CisgIH0KKworICBpZiAoaG91cnMgPT0gLTEpCisgICAgaG91cnMgPSAwOworICBpZiAobWludXRlcyA9PSAtMSkKKyAgICBtaW51dGVzID0gMDsKKyAgaWYgKHNlY29uZHMgPT0gLTEpCisgICAgc2Vjb25kcyA9IDA7CisgIGlmIChkZWNpbWFscyA9PSAtMSkKKyAgICBkZWNpbWFscyA9IDA7CisgIEdTVF9UUkFDRSAoIkg6TTpTLk1TPSVkOiVkOiVkLiUwM2QiLCBob3VycywgbWludXRlcywgc2Vjb25kcywgZGVjaW1hbHMpOworCisgIHRtcF92YWx1ZSA9IDA7CisgIGlmICghYWNjdW11bGF0ZSAoJnRtcF92YWx1ZSwgMSwgeWVhcnMpCisgICAgICB8fCAhYWNjdW11bGF0ZSAoJnRtcF92YWx1ZSwgMzY1LCBtb250aHMgKiAzMCkKKyAgICAgIHx8ICFhY2N1bXVsYXRlICgmdG1wX3ZhbHVlLCAxLCBkYXlzKQorICAgICAgfHwgIWFjY3VtdWxhdGUgKCZ0bXBfdmFsdWUsIDI0LCBob3VycykKKyAgICAgIHx8ICFhY2N1bXVsYXRlICgmdG1wX3ZhbHVlLCA2MCwgbWludXRlcykKKyAgICAgIHx8ICFhY2N1bXVsYXRlICgmdG1wX3ZhbHVlLCA2MCwgc2Vjb25kcykKKyAgICAgIHx8ICFhY2N1bXVsYXRlICgmdG1wX3ZhbHVlLCAxMDAwLCBkZWNpbWFscykpCisgICAgZ290byBlcnJvcjsKKworICAvKiBlbnN1cmUgaXQgY2FuIGJlIGNvbnZlcnRlZCBmcm9tIG1pbGxpc2Vjb25kcyB0byBuYW5vc2Vjb25kcyAqLworICBpZiAodG1wX3ZhbHVlID4gR19NQVhVSU5UNjQgLyAxMDAwMDAwKQorICAgIGdvdG8gZXJyb3I7CisKKyAgKnZhbHVlID0gdG1wX3ZhbHVlOworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuCiBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoeG1sTm9kZSAqIGFfbm9kZSwKLSAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsIGdpbnQ2NCBkZWZhdWx0X3ZhbHVlLCBnaW50NjQgKiBwcm9wZXJ0eV92YWx1ZSkKKyAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsIGd1aW50NjQgZGVmYXVsdF92YWx1ZSwKKyAgICBndWludDY0ICogcHJvcGVydHlfdmFsdWUpCiB7CiAgIHhtbENoYXIgKnByb3Bfc3RyaW5nOwogICBnY2hhciAqc3RyOwotICBnaW50IHJldCwgcmVhZCwgbGVuLCBwb3MsIHBvc1Q7Ci0gIGdpbnQgeWVhcnMgPSAwLCBtb250aHMgPSAwLCBkYXlzID0gMCwgaG91cnMgPSAwLCBtaW51dGVzID0gMCwgc2Vjb25kcyA9Ci0gICAgICAwLCBkZWNpbWFscyA9IDA7Ci0gIGdpbnQgc2lnbiA9IDE7Ci0gIGdib29sZWFuIGhhdmVfbXMgPSBGQUxTRTsKICAgZ2Jvb2xlYW4gZXhpc3RzID0gRkFMU0U7CiAKICAgKnByb3BlcnR5X3ZhbHVlID0gZGVmYXVsdF92YWx1ZTsKICAgcHJvcF9zdHJpbmcgPSB4bWxHZXRQcm9wIChhX25vZGUsIChjb25zdCB4bWxDaGFyICopIHByb3BlcnR5X25hbWUpOwogICBpZiAocHJvcF9zdHJpbmcpIHsKLSAgICBsZW4gPSB4bWxTdHJsZW4gKHByb3Bfc3RyaW5nKTsKICAgICBzdHIgPSAoZ2NoYXIgKikgcHJvcF9zdHJpbmc7Ci0gICAgR1NUX1RSQUNFICgiZHVyYXRpb246ICVzLCBsZW4gJWQiLCBzdHIsIGxlbik7Ci0gICAgLyogcmVhZCAiLSIgZm9yIHNpZ24sIGlmIHByZXNlbnQgKi8KLSAgICBwb3MgPSBzdHJjc3BuIChzdHIsICItIik7Ci0gICAgaWYgKHBvcyA8IGxlbikgeyAgICAgICAgICAgIC8qIGZvdW5kICItIiAqLwotICAgICAgaWYgKHBvcyAhPSAwKSB7Ci0gICAgICAgIEdTVF9XQVJOSU5HICgic2lnbiBcIi1cIiBub24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICB9Ci0gICAgICBHU1RfVFJBQ0UgKCJmb3VuZCAtIHNpZ24gYXQgdGhlIGJlZ2lubmluZyIpOwotICAgICAgc2lnbiA9IC0xOwotICAgICAgc3RyKys7Ci0gICAgICBsZW4tLTsKLSAgICB9Ci0gICAgLyogcmVhZCAiUCIgZm9yIHBlcmlvZCAqLwotICAgIHBvcyA9IHN0cmNzcG4gKHN0ciwgIlAiKTsKLSAgICBpZiAocG9zICE9IDApIHsKLSAgICAgIEdTVF9XQVJOSU5HICgiUCBub3QgZm91bmQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nISIpOworICAgIGlmICghZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoc3RyLCBwcm9wZXJ0eV92YWx1ZSkpCiAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBzdHIrKzsKLSAgICBsZW4tLTsKLSAgICAvKiByZWFkICJUIiBmb3IgdGltZSAoaWYgcHJlc2VudCkgKi8KLSAgICBwb3NUID0gc3RyY3NwbiAoc3RyLCAiVCIpOwotICAgIGxlbiAtPSBwb3NUOwotICAgIGlmIChwb3NUID4gMCkgewotICAgICAgLyogdGhlcmUgaXMgc29tZSByb29tIGJldHdlZW4gUCBhbmQgVCwgc28gdGhlcmUgbXVzdCBiZSBhIHBlcmlvZCBzZWN0aW9uICovCi0gICAgICAvKiByZWFkIHllYXJzLCBtb250aHMsIGRheXMgKi8KLSAgICAgIGRvIHsKLSAgICAgICAgR1NUX1RSQUNFICgicGFyc2luZyBzdWJzdHJpbmcgJXMiLCBzdHIpOwotICAgICAgICBwb3MgPSBzdHJjc3BuIChzdHIsICJZTUQiKTsKLSAgICAgICAgcmV0ID0gc3NjYW5mIChzdHIsICIlZCIsICZyZWFkKTsKLSAgICAgICAgaWYgKHJldCAhPSAxKSB7Ci0gICAgICAgICAgR1NUX1dBUk5JTkcgKCJjYW4gbm90IHJlYWQgaW50ZWdlciB2YWx1ZSBmcm9tIHN0cmluZyAlcyEiLCBzdHIpOwotICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChzdHJbcG9zXSkgewotICAgICAgICAgIGNhc2UgJ1knOgotICAgICAgICAgICAgeWVhcnMgPSByZWFkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSAnTSc6Ci0gICAgICAgICAgICBtb250aHMgPSByZWFkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSAnRCc6Ci0gICAgICAgICAgICBkYXlzID0gcmVhZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBHU1RfV0FSTklORyAoInVuZXhwZWN0ZWQgY2hhciAlYyEiLCBzdHJbcG9zXSk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgR1NUX1RSQUNFICgicmVhZCBudW1iZXIgJWQgdHlwZSAlYyIsIHJlYWQsIHN0cltwb3NdKTsKLSAgICAgICAgc3RyICs9IChwb3MgKyAxKTsKLSAgICAgICAgcG9zVCAtPSAocG9zICsgMSk7Ci0gICAgICB9IHdoaWxlIChwb3NUID4gMCk7Ci0KLSAgICAgIEdTVF9UUkFDRSAoIlk6TTpEPSVkOiVkOiVkIiwgeWVhcnMsIG1vbnRocywgZGF5cyk7Ci0gICAgfQotICAgIC8qIHJlYWQgIlQiIGZvciB0aW1lIChpZiBwcmVzZW50KSAqLwotICAgIC8qIGhlcmUgVCBpcyBhdCBwb3MgPT0gMCAqLwotICAgIHN0cisrOwotICAgIGxlbi0tOwotICAgIHBvcyA9IDA7Ci0gICAgaWYgKHBvcyA8IGxlbikgewotICAgICAgLyogVCBmb3VuZCwgdGhlcmUgaXMgYSB0aW1lIHNlY3Rpb24gKi8KLSAgICAgIC8qIHJlYWQgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIGNlbnRzIG9mIHNlY29uZCAqLwotICAgICAgZG8gewotICAgICAgICBHU1RfVFJBQ0UgKCJwYXJzaW5nIHN1YnN0cmluZyAlcyIsIHN0cik7Ci0gICAgICAgIHBvcyA9IHN0cmNzcG4gKHN0ciwgIkhNUywuIik7Ci0gICAgICAgIHJldCA9IHNzY2FuZiAoc3RyLCAiJWQiLCAmcmVhZCk7Ci0gICAgICAgIGlmIChyZXQgIT0gMSkgewotICAgICAgICAgIEdTVF9XQVJOSU5HICgiY2FuIG5vdCByZWFkIGludGVnZXIgdmFsdWUgZnJvbSBzdHJpbmcgJXMhIiwgc3RyKTsKLSAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAoc3RyW3Bvc10pIHsKLSAgICAgICAgICBjYXNlICdIJzoKLSAgICAgICAgICAgIGhvdXJzID0gcmVhZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgJ00nOgotICAgICAgICAgICAgbWludXRlcyA9IHJlYWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlICdTJzoKLSAgICAgICAgICAgIGlmIChoYXZlX21zKSB7Ci0gICAgICAgICAgICAgIC8qIHdlIGhhdmUgcmVhZCB0aGUgZGVjaW1hbCBwYXJ0IG9mIHRoZSBzZWNvbmRzICovCi0gICAgICAgICAgICAgIGRlY2ltYWxzID0gY29udmVydF90b19taWxsaXNlY3MgKHJlYWQsIHBvcyk7Ci0gICAgICAgICAgICAgIEdTVF9UUkFDRSAoImRlY2ltYWwgbnVtYmVyICVkICglZCBkaWdpdHMpIC0+ICVkIG1zIiwgcmVhZCwgcG9zLAotICAgICAgICAgICAgICAgICAgZGVjaW1hbHMpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgLyogbm8gZGVjaW1hbHMgKi8KLSAgICAgICAgICAgICAgc2Vjb25kcyA9IHJlYWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlICcuJzoKLSAgICAgICAgICBjYXNlICcsJzoKLSAgICAgICAgICAgIC8qIHdlIGhhdmUgcmVhZCB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgZGVjaW1hbCBudW1iZXIgaW4gc2Vjb25kcyAqLwotICAgICAgICAgICAgc2Vjb25kcyA9IHJlYWQ7Ci0gICAgICAgICAgICBoYXZlX21zID0gVFJVRTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBHU1RfV0FSTklORyAoInVuZXhwZWN0ZWQgY2hhciAlYyEiLCBzdHJbcG9zXSk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgR1NUX1RSQUNFICgicmVhZCBudW1iZXIgJWQgdHlwZSAlYyIsIHJlYWQsIHN0cltwb3NdKTsKLSAgICAgICAgc3RyICs9IHBvcyArIDE7Ci0gICAgICAgIGxlbiAtPSAocG9zICsgMSk7Ci0gICAgICB9IHdoaWxlIChsZW4gPiAwKTsKLQotICAgICAgR1NUX1RSQUNFICgiSDpNOlMuTVM9JWQ6JWQ6JWQuJTAzZCIsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBkZWNpbWFscyk7Ci0gICAgfQotCisgICAgR1NUX0xPRyAoIiAtICVzOiAlIiBHX0dVSU5UNjRfRk9STUFULCBwcm9wZXJ0eV9uYW1lLCAqcHJvcGVydHlfdmFsdWUpOwogICAgIHhtbEZyZWUgKHByb3Bfc3RyaW5nKTsKICAgICBleGlzdHMgPSBUUlVFOwotICAgICpwcm9wZXJ0eV92YWx1ZSA9Ci0gICAgICAgIHNpZ24gKiAoKCgoKChnaW50NjQpIHllYXJzICogMzY1ICsgbW9udGhzICogMzAgKyBkYXlzKSAqIDI0ICsKLSAgICAgICAgICAgICAgICAgICAgaG91cnMpICogNjAgKyBtaW51dGVzKSAqIDYwICsgc2Vjb25kcykgKiAxMDAwICsgZGVjaW1hbHMpOwotICAgIEdTVF9MT0cgKCIgLSAlczogJSIgR19HSU5UNjRfRk9STUFULCBwcm9wZXJ0eV9uYW1lLCAqcHJvcGVydHlfdmFsdWUpOwogICB9Ci0KICAgcmV0dXJuIGV4aXN0czsKIAogZXJyb3I6CkBAIC0xMzk2LDE2ICsxNTY4LDE3IEBACiAgIH0KIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBnYm9vbGVhbgogZ3N0X21wZHBhcnNlcl9wYXJzZV9tdWx0X3NlZ19iYXNlX3R5cGVfZXh0IChHc3RNdWx0U2VnbWVudEJhc2VUeXBlICoqIHBvaW50ZXIsCiAgICAgeG1sTm9kZSAqIGFfbm9kZSwgR3N0TXVsdFNlZ21lbnRCYXNlVHlwZSAqIHBhcmVudCkKIHsKICAgeG1sTm9kZSAqY3VyX25vZGU7CiAgIEdzdE11bHRTZWdtZW50QmFzZVR5cGUgKm11bHRfc2VnX2Jhc2VfdHlwZTsKICAgZ3VpbnQgaW50dmFsOworICBnYm9vbGVhbiBoYXNfdGltZWxpbmUgPSBGQUxTRSwgaGFzX2R1cmF0aW9uID0gRkFMU0U7CiAKICAgZ3N0X21wZHBhcnNlcl9mcmVlX211bHRfc2VnX2Jhc2VfdHlwZV9leHQgKCpwb2ludGVyKTsKLSAgKnBvaW50ZXIgPSBtdWx0X3NlZ19iYXNlX3R5cGUgPSBnX3NsaWNlX25ldzAgKEdzdE11bHRTZWdtZW50QmFzZVR5cGUpOworICBtdWx0X3NlZ19iYXNlX3R5cGUgPSBnX3NsaWNlX25ldzAgKEdzdE11bHRTZWdtZW50QmFzZVR5cGUpOwogCiAgIG11bHRfc2VnX2Jhc2VfdHlwZS0+ZHVyYXRpb24gPSAwOwogICBtdWx0X3NlZ19iYXNlX3R5cGUtPnN0YXJ0TnVtYmVyID0gMTsKQEAgLTE0MjQsNiArMTU5Nyw3IEBACiAgIGlmIChnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF91bnNpZ25lZF9pbnRlZ2VyIChhX25vZGUsICJkdXJhdGlvbiIsIDAsCiAgICAgICAgICAgJmludHZhbCkpIHsKICAgICBtdWx0X3NlZ19iYXNlX3R5cGUtPmR1cmF0aW9uID0gaW50dmFsOworICAgIGhhc19kdXJhdGlvbiA9IFRSVUU7CiAgIH0KIAogICBpZiAoZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfdW5zaWduZWRfaW50ZWdlciAoYV9ub2RlLCAic3RhcnROdW1iZXIiLCAxLApAQCAtMTQ0Miw2ICsxNjE2LDcgQEAKICAgICAgICAgLyogcGFyc2UgZnJlZXMgdGhlIHNlZ21lbnR0aW1lbGluZSBpZiBhbnkgKi8KICAgICAgICAgZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X3RpbWVsaW5lX25vZGUKICAgICAgICAgICAgICgmbXVsdF9zZWdfYmFzZV90eXBlLT5TZWdtZW50VGltZWxpbmUsIGN1cl9ub2RlKTsKKyAgICAgICAgaGFzX3RpbWVsaW5lID0gVFJVRTsKICAgICAgIH0gZWxzZSBpZiAoeG1sU3RyY21wIChjdXJfbm9kZS0+bmFtZSwKICAgICAgICAgICAgICAgKHhtbENoYXIgKikgIkJpdHN0cmVhbVN3aXRjaGluZyIpID09IDApIHsKICAgICAgICAgLyogcGFyc2UgZnJlZXMgdGhlIG9sZCB1cmwgYmVmb3JlIHNldHRpbmcgdGhlIG5ldyBvbmUgKi8KQEAgLTE0NTAsMTggKzE2MjUsMzEgQEAKICAgICAgIH0KICAgICB9CiAgIH0KKworICBpZiAoIWhhc19kdXJhdGlvbiAmJiAhaGFzX3RpbWVsaW5lKSB7CisgICAgR1NUX0VSUk9SICgic2VnbWVudCBoYXMgbmVpdGhlciBkdXJhdGlvbiBub3IgdGltZWxpbmUiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgKnBvaW50ZXIgPSBtdWx0X3NlZ19iYXNlX3R5cGU7CisgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgZ3N0X21wZHBhcnNlcl9mcmVlX211bHRfc2VnX2Jhc2VfdHlwZV9leHQgKG11bHRfc2VnX2Jhc2VfdHlwZSk7CisgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBnYm9vbGVhbgogZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X2xpc3Rfbm9kZSAoR3N0U2VnbWVudExpc3ROb2RlICoqIHBvaW50ZXIsCiAgICAgeG1sTm9kZSAqIGFfbm9kZSwgR3N0U2VnbWVudExpc3ROb2RlICogcGFyZW50KQogewogICB4bWxOb2RlICpjdXJfbm9kZTsKICAgR3N0U2VnbWVudExpc3ROb2RlICpuZXdfc2VnbWVudF9saXN0OwogICBnY2hhciAqYWN0dWF0ZTsKKyAgZ2Jvb2xlYW4gc2VnbWVudF91cmxzX2luaGVyaXRlZF9mcm9tX3BhcmVudCA9IEZBTFNFOwogCiAgIGdzdF9tcGRwYXJzZXJfZnJlZV9zZWdtZW50X2xpc3Rfbm9kZSAoKnBvaW50ZXIpOwotICAqcG9pbnRlciA9IG5ld19zZWdtZW50X2xpc3QgPSBnX3NsaWNlX25ldzAgKEdzdFNlZ21lbnRMaXN0Tm9kZSk7CisgIG5ld19zZWdtZW50X2xpc3QgPSBnX3NsaWNlX25ldzAgKEdzdFNlZ21lbnRMaXN0Tm9kZSk7CiAKICAgLyogSW5oZXJpdCBhdHRyaWJ1dGUgdmFsdWVzIGZyb20gcGFyZW50ICovCiAgIGlmIChwYXJlbnQpIHsKQEAgLTE0NzMsNiArMTY2MSw3IEBACiAgICAgICBuZXdfc2VnbWVudF9saXN0LT5TZWdtZW50VVJMID0KICAgICAgICAgICBnX2xpc3RfYXBwZW5kIChuZXdfc2VnbWVudF9saXN0LT5TZWdtZW50VVJMLAogICAgICAgICAgIGdzdF9tcGRwYXJzZXJfY2xvbmVfc2VnbWVudF91cmwgKHNlZ191cmwpKTsKKyAgICAgIHNlZ21lbnRfdXJsc19pbmhlcml0ZWRfZnJvbV9wYXJlbnQgPSBUUlVFOwogICAgIH0KICAgfQogCkBAIC0xNDg3LDE5ICsxNjc2LDQ0IEBACiAgIH0KIAogICBHU1RfTE9HICgiZXh0ZW5zaW9uIG9mIFNlZ21lbnRMaXN0IG5vZGU6Iik7Ci0gIGdzdF9tcGRwYXJzZXJfcGFyc2VfbXVsdF9zZWdfYmFzZV90eXBlX2V4dAorICBpZiAoIWdzdF9tcGRwYXJzZXJfcGFyc2VfbXVsdF9zZWdfYmFzZV90eXBlX2V4dAogICAgICAgKCZuZXdfc2VnbWVudF9saXN0LT5NdWx0U2VnQmFzZVR5cGUsIGFfbm9kZSwKLSAgICAgIChwYXJlbnQgPyBwYXJlbnQtPk11bHRTZWdCYXNlVHlwZSA6IE5VTEwpKTsKKyAgICAgICAgICAocGFyZW50ID8gcGFyZW50LT5NdWx0U2VnQmFzZVR5cGUgOiBOVUxMKSkpCisgICAgZ290byBlcnJvcjsKIAogICAvKiBleHBsb3JlIGNoaWxkcmVuIG5vZGVzICovCiAgIGZvciAoY3VyX25vZGUgPSBhX25vZGUtPmNoaWxkcmVuOyBjdXJfbm9kZTsgY3VyX25vZGUgPSBjdXJfbm9kZS0+bmV4dCkgewogICAgIGlmIChjdXJfbm9kZS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9OT0RFKSB7CiAgICAgICBpZiAoeG1sU3RyY21wIChjdXJfbm9kZS0+bmFtZSwgKHhtbENoYXIgKikgIlNlZ21lbnRVUkwiKSA9PSAwKSB7CisgICAgICAgIGlmIChzZWdtZW50X3VybHNfaW5oZXJpdGVkX2Zyb21fcGFyZW50KSB7CisgICAgICAgICAgLyoKKyAgICAgICAgICAgKiBTZWdtZW50QmFzZSwgU2VnbWVudFRlbXBsYXRlIGFuZCBTZWdtZW50TGlzdCBzaGFsbCBpbmhlcml0CisgICAgICAgICAgICogYXR0cmlidXRlcyBhbmQgZWxlbWVudHMgZnJvbSB0aGUgc2FtZSBlbGVtZW50IG9uIGEgaGlnaGVyIGxldmVsLgorICAgICAgICAgICAqIElmIHRoZSBzYW1lIGF0dHJpYnV0ZSBvciBlbGVtZW50IGlzIHByZXNlbnQgb24gYm90aCBsZXZlbHMsCisgICAgICAgICAgICogdGhlIG9uZSBvbiB0aGUgbG93ZXIgbGV2ZWwgc2hhbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIG9uZQorICAgICAgICAgICAqIG9uIHRoZSBoaWdoZXIgbGV2ZWwuCisgICAgICAgICAgICovCisKKyAgICAgICAgICAvKiBDbGVhciB0aGUgbGlzdCBvZiBpbmhlcml0ZWQgc2VnbWVudCBVUkxzICovCisgICAgICAgICAgZ19saXN0X2ZyZWVfZnVsbCAobmV3X3NlZ21lbnRfbGlzdC0+U2VnbWVudFVSTCwKKyAgICAgICAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnc3RfbXBkcGFyc2VyX2ZyZWVfc2VnbWVudF91cmxfbm9kZSk7CisgICAgICAgICAgbmV3X3NlZ21lbnRfbGlzdC0+U2VnbWVudFVSTCA9IE5VTEw7CisKKyAgICAgICAgICAvKiBtYXJrIHRoZSBmYWN0IHRoYXQgd2UgY2xlYXJlZCB0aGUgbGlzdCwgc28gdGhhdCBpdCBpcyBub3QgdHJpZWQgYWdhaW4gKi8KKyAgICAgICAgICBzZWdtZW50X3VybHNfaW5oZXJpdGVkX2Zyb21fcGFyZW50ID0gRkFMU0U7CisgICAgICAgIH0KICAgICAgICAgZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X3VybF9ub2RlICgmbmV3X3NlZ21lbnRfbGlzdC0+U2VnbWVudFVSTCwKICAgICAgICAgICAgIGN1cl9ub2RlKTsKICAgICAgIH0KICAgICB9CiAgIH0KKworICAqcG9pbnRlciA9IG5ld19zZWdtZW50X2xpc3Q7CisgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgZ3N0X21wZHBhcnNlcl9mcmVlX3NlZ21lbnRfbGlzdF9ub2RlIChuZXdfc2VnbWVudF9saXN0KTsKKyAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTUyMiw2ICsxNzM2LDEwIEBACiAgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3JhdGlvIChhX25vZGUsICJzYXIiLCAmcmVwcmVzZW50YXRpb25fYmFzZS0+c2FyKTsKICAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZnJhbWVyYXRlIChhX25vZGUsICJmcmFtZVJhdGUiLAogICAgICAgJnJlcHJlc2VudGF0aW9uX2Jhc2UtPmZyYW1lUmF0ZSk7CisgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2ZyYW1lcmF0ZSAoYV9ub2RlLCAibWluRnJhbWVSYXRlIiwKKyAgICAgICZyZXByZXNlbnRhdGlvbl9iYXNlLT5taW5GcmFtZVJhdGUpOworICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9mcmFtZXJhdGUgKGFfbm9kZSwgIm1heEZyYW1lUmF0ZSIsCisgICAgICAmcmVwcmVzZW50YXRpb25fYmFzZS0+bWF4RnJhbWVSYXRlKTsKICAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3Bfc3RyaW5nIChhX25vZGUsICJhdWRpb1NhbXBsaW5nUmF0ZSIsCiAgICAgICAmcmVwcmVzZW50YXRpb25fYmFzZS0+YXVkaW9TYW1wbGluZ1JhdGUpOwogICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9zdHJpbmcgKGFfbm9kZSwgIm1pbWVUeXBlIiwKQEAgLTE1NjAsNyArMTc3OCw3IEBACiAgIH0KIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBnYm9vbGVhbgogZ3N0X21wZHBhcnNlcl9wYXJzZV9yZXByZXNlbnRhdGlvbl9ub2RlIChHTGlzdCAqKiBsaXN0LCB4bWxOb2RlICogYV9ub2RlLAogICAgIEdzdEFkYXB0YXRpb25TZXROb2RlICogcGFyZW50KQogewpAQCAtMTU2OCwxMCArMTc4NiwxMCBAQAogICBHc3RSZXByZXNlbnRhdGlvbk5vZGUgKm5ld19yZXByZXNlbnRhdGlvbjsKIAogICBuZXdfcmVwcmVzZW50YXRpb24gPSBnX3NsaWNlX25ldzAgKEdzdFJlcHJlc2VudGF0aW9uTm9kZSk7Ci0gICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIG5ld19yZXByZXNlbnRhdGlvbik7CiAKICAgR1NUX0xPRyAoImF0dHJpYnV0ZXMgb2YgUmVwcmVzZW50YXRpb24gbm9kZToiKTsKLSAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3Bfc3RyaW5nIChhX25vZGUsICJpZCIsICZuZXdfcmVwcmVzZW50YXRpb24tPmlkKTsKKyAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3Bfc3RyaW5nX25vX3doaXRlc3BhY2UgKGFfbm9kZSwgImlkIiwKKyAgICAgICZuZXdfcmVwcmVzZW50YXRpb24tPmlkKTsKICAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfdW5zaWduZWRfaW50ZWdlciAoYV9ub2RlLCAiYmFuZHdpZHRoIiwgMCwKICAgICAgICZuZXdfcmVwcmVzZW50YXRpb24tPmJhbmR3aWR0aCk7CiAgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3Vuc2lnbmVkX2ludGVnZXIgKGFfbm9kZSwgInF1YWxpdHlSYW5raW5nIiwgMCwKQEAgLTE1OTIsMTIgKzE4MTAsMTQgQEAKICAgICAgICAgZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdfYmFzZV90eXBlX2V4dCAoJm5ld19yZXByZXNlbnRhdGlvbi0+U2VnbWVudEJhc2UsCiAgICAgICAgICAgICBjdXJfbm9kZSwgcGFyZW50LT5TZWdtZW50QmFzZSk7CiAgICAgICB9IGVsc2UgaWYgKHhtbFN0cmNtcCAoY3VyX25vZGUtPm5hbWUsICh4bWxDaGFyICopICJTZWdtZW50VGVtcGxhdGUiKSA9PSAwKSB7Ci0gICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF90ZW1wbGF0ZV9ub2RlCisgICAgICAgIGlmICghZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X3RlbXBsYXRlX25vZGUKICAgICAgICAgICAgICgmbmV3X3JlcHJlc2VudGF0aW9uLT5TZWdtZW50VGVtcGxhdGUsIGN1cl9ub2RlLAotICAgICAgICAgICAgcGFyZW50LT5TZWdtZW50VGVtcGxhdGUpOworICAgICAgICAgICAgICAgIHBhcmVudC0+U2VnbWVudFRlbXBsYXRlKSkKKyAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgfSBlbHNlIGlmICh4bWxTdHJjbXAgKGN1cl9ub2RlLT5uYW1lLCAoeG1sQ2hhciAqKSAiU2VnbWVudExpc3QiKSA9PSAwKSB7Ci0gICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF9saXN0X25vZGUgKCZuZXdfcmVwcmVzZW50YXRpb24tPlNlZ21lbnRMaXN0LAotICAgICAgICAgICAgY3VyX25vZGUsIHBhcmVudC0+U2VnbWVudExpc3QpOworICAgICAgICBpZiAoIWdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF9saXN0X25vZGUKKyAgICAgICAgICAgICgmbmV3X3JlcHJlc2VudGF0aW9uLT5TZWdtZW50TGlzdCwgY3VyX25vZGUsIHBhcmVudC0+U2VnbWVudExpc3QpKQorICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICB9IGVsc2UgaWYgKHhtbFN0cmNtcCAoY3VyX25vZGUtPm5hbWUsICh4bWxDaGFyICopICJCYXNlVVJMIikgPT0gMCkgewogICAgICAgICBnc3RfbXBkcGFyc2VyX3BhcnNlX2Jhc2VVUkxfbm9kZSAoJm5ld19yZXByZXNlbnRhdGlvbi0+QmFzZVVSTHMsCiAgICAgICAgICAgICBjdXJfbm9kZSk7CkBAIC0xNjA4LDkgKzE4MjgsMTggQEAKICAgICAgIH0KICAgICB9CiAgIH0KKworICAvKiBzb21lIHNhbml0eSBjaGVja2luZyAqLworCisgICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIG5ld19yZXByZXNlbnRhdGlvbik7CisgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgZ3N0X21wZHBhcnNlcl9mcmVlX3JlcHJlc2VudGF0aW9uX25vZGUgKG5ld19yZXByZXNlbnRhdGlvbik7CisgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBnYm9vbGVhbgogZ3N0X21wZHBhcnNlcl9wYXJzZV9hZGFwdGF0aW9uX3NldF9ub2RlIChHTGlzdCAqKiBsaXN0LCB4bWxOb2RlICogYV9ub2RlLAogICAgIEdzdFBlcmlvZE5vZGUgKiBwYXJlbnQpCiB7CkBAIC0xNjE5LDcgKzE4NDgsNiBAQAogICBnY2hhciAqYWN0dWF0ZTsKIAogICBuZXdfYWRhcF9zZXQgPSBnX3NsaWNlX25ldzAgKEdzdEFkYXB0YXRpb25TZXROb2RlKTsKLSAgKmxpc3QgPSBnX2xpc3RfYXBwZW5kICgqbGlzdCwgbmV3X2FkYXBfc2V0KTsKIAogICBHU1RfTE9HICgiYXR0cmlidXRlcyBvZiBBZGFwdGF0aW9uU2V0IG5vZGU6Iik7CiAKQEAgLTE2NTMsMTQgKzE4ODEsMTkgQEAKICAgICAgICZuZXdfYWRhcF9zZXQtPm1pbkhlaWdodCk7CiAgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3Vuc2lnbmVkX2ludGVnZXIgKGFfbm9kZSwgIm1heEhlaWdodCIsIDAsCiAgICAgICAmbmV3X2FkYXBfc2V0LT5tYXhIZWlnaHQpOwotICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9mcmFtZXJhdGUgKGFfbm9kZSwgIm1pbkZyYW1lUmF0ZSIsCi0gICAgICAmbmV3X2FkYXBfc2V0LT5taW5GcmFtZVJhdGUpOwotICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9mcmFtZXJhdGUgKGFfbm9kZSwgIm1heEZyYW1lUmF0ZSIsCi0gICAgICAmbmV3X2FkYXBfc2V0LT5tYXhGcmFtZVJhdGUpOwogICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9jb25kX3VpbnQgKGFfbm9kZSwgInNlZ21lbnRBbGlnbm1lbnQiLAogICAgICAgJm5ld19hZGFwX3NldC0+c2VnbWVudEFsaWdubWVudCk7CiAgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2Jvb2xlYW4gKGFfbm9kZSwgImJpdHN0cmVhbVN3aXRjaGluZyIsCi0gICAgICBGQUxTRSwgJm5ld19hZGFwX3NldC0+Yml0c3RyZWFtU3dpdGNoaW5nKTsKKyAgICAgIHBhcmVudC0+Yml0c3RyZWFtU3dpdGNoaW5nLCAmbmV3X2FkYXBfc2V0LT5iaXRzdHJlYW1Td2l0Y2hpbmcpOworICBpZiAocGFyZW50LT5iaXRzdHJlYW1Td2l0Y2hpbmcgJiYgIW5ld19hZGFwX3NldC0+Yml0c3RyZWFtU3dpdGNoaW5nKSB7CisgICAgLyogYWNjb3JkaW5nIHRvIHRoZSBzdGFuZGFyZCwgaWYgdGhlIFBlcmlvZCdzIGJpdHN0cmVhbVN3aXRjaGluZyBhdHRyaWJ1dGUKKyAgICAgKiBpcyB0cnVlLCB0aGUgQWRhcHRhdGlvblNldCBzaG91bGQgbm90IGhhdmUgdGhlIGJpdHN0cmVhbVN3aXRjaGluZworICAgICAqIGF0dHJpYnV0ZSBzZXQgdG8gZmFsc2UuCisgICAgICogV2Ugc2hvdWxkIHJldHVybiBhIHBhcnNpbmcgZXJyb3IsIGJ1dCB3ZSBhcmUgZ2VuZXJvdXMgYW5kIGlnbm9yZSB0aGUKKyAgICAgKiBzdGFuZGFyZCB2aW9sYXRpb24uCisgICAgICovCisgICAgbmV3X2FkYXBfc2V0LT5iaXRzdHJlYW1Td2l0Y2hpbmcgPSBwYXJlbnQtPmJpdHN0cmVhbVN3aXRjaGluZzsKKyAgfQogICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9jb25kX3VpbnQgKGFfbm9kZSwgInN1YnNlZ21lbnRBbGlnbm1lbnQiLAogICAgICAgJm5ld19hZGFwX3NldC0+c3Vic2VnbWVudEFsaWdubWVudCk7CiAgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX1NBUF90eXBlIChhX25vZGUsICJzdWJzZWdtZW50U3RhcnRzV2l0aFNBUCIsCkBAIC0xNjkxLDE1ICsxOTI0LDE3IEBACiAgICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnX2Jhc2VfdHlwZV9leHQgKCZuZXdfYWRhcF9zZXQtPlNlZ21lbnRCYXNlLAogICAgICAgICAgICAgY3VyX25vZGUsIHBhcmVudC0+U2VnbWVudEJhc2UpOwogICAgICAgfSBlbHNlIGlmICh4bWxTdHJjbXAgKGN1cl9ub2RlLT5uYW1lLCAoeG1sQ2hhciAqKSAiU2VnbWVudExpc3QiKSA9PSAwKSB7Ci0gICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF9saXN0X25vZGUgKCZuZXdfYWRhcF9zZXQtPlNlZ21lbnRMaXN0LAotICAgICAgICAgICAgY3VyX25vZGUsIHBhcmVudC0+U2VnbWVudExpc3QpOworICAgICAgICBpZiAoIWdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF9saXN0X25vZGUgKCZuZXdfYWRhcF9zZXQtPlNlZ21lbnRMaXN0LAorICAgICAgICAgICAgICAgIGN1cl9ub2RlLCBwYXJlbnQtPlNlZ21lbnRMaXN0KSkKKyAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgfSBlbHNlIGlmICh4bWxTdHJjbXAgKGN1cl9ub2RlLT5uYW1lLAogICAgICAgICAgICAgICAoeG1sQ2hhciAqKSAiQ29udGVudENvbXBvbmVudCIpID09IDApIHsKICAgICAgICAgZ3N0X21wZHBhcnNlcl9wYXJzZV9jb250ZW50X2NvbXBvbmVudF9ub2RlCiAgICAgICAgICAgICAoJm5ld19hZGFwX3NldC0+Q29udGVudENvbXBvbmVudHMsIGN1cl9ub2RlKTsKICAgICAgIH0gZWxzZSBpZiAoeG1sU3RyY21wIChjdXJfbm9kZS0+bmFtZSwgKHhtbENoYXIgKikgIlNlZ21lbnRUZW1wbGF0ZSIpID09IDApIHsKLSAgICAgICAgZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X3RlbXBsYXRlX25vZGUKLSAgICAgICAgICAgICgmbmV3X2FkYXBfc2V0LT5TZWdtZW50VGVtcGxhdGUsIGN1cl9ub2RlLCBwYXJlbnQtPlNlZ21lbnRUZW1wbGF0ZSk7CisgICAgICAgIGlmICghZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X3RlbXBsYXRlX25vZGUKKyAgICAgICAgICAgICgmbmV3X2FkYXBfc2V0LT5TZWdtZW50VGVtcGxhdGUsIGN1cl9ub2RlLCBwYXJlbnQtPlNlZ21lbnRUZW1wbGF0ZSkpCisgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTE3MTEsMTEgKzE5NDYsMTkgQEAKICAgZm9yIChjdXJfbm9kZSA9IGFfbm9kZS0+Y2hpbGRyZW47IGN1cl9ub2RlOyBjdXJfbm9kZSA9IGN1cl9ub2RlLT5uZXh0KSB7CiAgICAgaWYgKGN1cl9ub2RlLT50eXBlID09IFhNTF9FTEVNRU5UX05PREUpIHsKICAgICAgIGlmICh4bWxTdHJjbXAgKGN1cl9ub2RlLT5uYW1lLCAoeG1sQ2hhciAqKSAiUmVwcmVzZW50YXRpb24iKSA9PSAwKSB7Ci0gICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2VfcmVwcmVzZW50YXRpb25fbm9kZSAoJm5ld19hZGFwX3NldC0+UmVwcmVzZW50YXRpb25zLAotICAgICAgICAgICAgY3VyX25vZGUsIG5ld19hZGFwX3NldCk7CisgICAgICAgIGlmICghZ3N0X21wZHBhcnNlcl9wYXJzZV9yZXByZXNlbnRhdGlvbl9ub2RlCisgICAgICAgICAgICAoJm5ld19hZGFwX3NldC0+UmVwcmVzZW50YXRpb25zLCBjdXJfbm9kZSwgbmV3X2FkYXBfc2V0KSkKKyAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgfQogICAgIH0KICAgfQorCisgICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIG5ld19hZGFwX3NldCk7CisgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgZ3N0X21wZHBhcnNlcl9mcmVlX2FkYXB0YXRpb25fc2V0X25vZGUgKG5ld19hZGFwX3NldCk7CisgIHJldHVybiBGQUxTRTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE3MzEsNyArMTk3NCw3IEBACiAgICAgICAmbmV3X3N1YnNldC0+Y29udGFpbnMsICZuZXdfc3Vic2V0LT5zaXplKTsKIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBnYm9vbGVhbgogZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X3RlbXBsYXRlX25vZGUgKEdzdFNlZ21lbnRUZW1wbGF0ZU5vZGUgKiogcG9pbnRlciwKICAgICB4bWxOb2RlICogYV9ub2RlLCBHc3RTZWdtZW50VGVtcGxhdGVOb2RlICogcGFyZW50KQogewpAQCAtMTczOSwxMiArMTk4MiwxMyBAQAogICBnY2hhciAqc3RydmFsOwogCiAgIGdzdF9tcGRwYXJzZXJfZnJlZV9zZWdtZW50X3RlbXBsYXRlX25vZGUgKCpwb2ludGVyKTsKLSAgKnBvaW50ZXIgPSBuZXdfc2VnbWVudF90ZW1wbGF0ZSA9IGdfc2xpY2VfbmV3MCAoR3N0U2VnbWVudFRlbXBsYXRlTm9kZSk7CisgIG5ld19zZWdtZW50X3RlbXBsYXRlID0gZ19zbGljZV9uZXcwIChHc3RTZWdtZW50VGVtcGxhdGVOb2RlKTsKIAogICBHU1RfTE9HICgiZXh0ZW5zaW9uIG9mIFNlZ21lbnRUZW1wbGF0ZSBub2RlOiIpOwotICBnc3RfbXBkcGFyc2VyX3BhcnNlX211bHRfc2VnX2Jhc2VfdHlwZV9leHQKKyAgaWYgKCFnc3RfbXBkcGFyc2VyX3BhcnNlX211bHRfc2VnX2Jhc2VfdHlwZV9leHQKICAgICAgICgmbmV3X3NlZ21lbnRfdGVtcGxhdGUtPk11bHRTZWdCYXNlVHlwZSwgYV9ub2RlLAotICAgICAgKHBhcmVudCA/IHBhcmVudC0+TXVsdFNlZ0Jhc2VUeXBlIDogTlVMTCkpOworICAgICAgICAgIChwYXJlbnQgPyBwYXJlbnQtPk11bHRTZWdCYXNlVHlwZSA6IE5VTEwpKSkKKyAgICBnb3RvIGVycm9yOwogCiAgIC8qIEluaGVyaXQgYXR0cmlidXRlIHZhbHVlcyBmcm9tIHBhcmVudCB3aGVuIHRoZSB2YWx1ZSBpc24ndCBmb3VuZCAqLwogICBHU1RfTE9HICgiYXR0cmlidXRlcyBvZiBTZWdtZW50VGVtcGxhdGUgbm9kZToiKTsKQEAgLTE3NzMsOSArMjAxNywxNiBAQAogICAgIG5ld19zZWdtZW50X3RlbXBsYXRlLT5iaXRzdHJlYW1Td2l0Y2hpbmcgPQogICAgICAgICB4bWxNZW1TdHJkdXAgKHBhcmVudC0+Yml0c3RyZWFtU3dpdGNoaW5nKTsKICAgfQorCisgICpwb2ludGVyID0gbmV3X3NlZ21lbnRfdGVtcGxhdGU7CisgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgZ3N0X21wZHBhcnNlcl9mcmVlX3NlZ21lbnRfdGVtcGxhdGVfbm9kZSAobmV3X3NlZ21lbnRfdGVtcGxhdGUpOworICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9tcGRwYXJzZXJfcGFyc2VfcGVyaW9kX25vZGUgKEdMaXN0ICoqIGxpc3QsIHhtbE5vZGUgKiBhX25vZGUpCiB7CiAgIHhtbE5vZGUgKmN1cl9ub2RlOwpAQCAtMTc4Myw3ICsyMDM0LDYgQEAKICAgZ2NoYXIgKmFjdHVhdGU7CiAKICAgbmV3X3BlcmlvZCA9IGdfc2xpY2VfbmV3MCAoR3N0UGVyaW9kTm9kZSk7Ci0gICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIG5ld19wZXJpb2QpOwogCiAgIEdTVF9MT0cgKCJhdHRyaWJ1dGVzIG9mIFBlcmlvZCBub2RlOiIpOwogCkBAIC0xNzk4LDExICsyMDQ4LDEyIEBACiAgIH0KIAogICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9zdHJpbmcgKGFfbm9kZSwgImlkIiwgJm5ld19wZXJpb2QtPmlkKTsKLSAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgInN0YXJ0IiwgLTEsICZuZXdfcGVyaW9kLT5zdGFydCk7Ci0gIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJkdXJhdGlvbiIsIC0xLAotICAgICAgJm5ld19wZXJpb2QtPmR1cmF0aW9uKTsKLSAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfYm9vbGVhbiAoYV9ub2RlLCAiYml0c3RyZWFtU3dpdGNoaW5nIiwKLSAgICAgIEZBTFNFLCAmbmV3X3BlcmlvZC0+Yml0c3RyZWFtU3dpdGNoaW5nKTsKKyAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgInN0YXJ0IiwgR1NUX01QRF9EVVJBVElPTl9OT05FLAorICAgICAgJm5ld19wZXJpb2QtPnN0YXJ0KTsKKyAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgImR1cmF0aW9uIiwKKyAgICAgIEdTVF9NUERfRFVSQVRJT05fTk9ORSwgJm5ld19wZXJpb2QtPmR1cmF0aW9uKTsKKyAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfYm9vbGVhbiAoYV9ub2RlLCAiYml0c3RyZWFtU3dpdGNoaW5nIiwgRkFMU0UsCisgICAgICAmbmV3X3BlcmlvZC0+Yml0c3RyZWFtU3dpdGNoaW5nKTsKIAogICAvKiBleHBsb3JlIGNoaWxkcmVuIG5vZGVzICovCiAgIGZvciAoY3VyX25vZGUgPSBhX25vZGUtPmNoaWxkcmVuOyBjdXJfbm9kZTsgY3VyX25vZGUgPSBjdXJfbm9kZS0+bmV4dCkgewpAQCAtMTgxMSwxMSArMjA2MiwxMyBAQAogICAgICAgICBnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ19iYXNlX3R5cGVfZXh0ICgmbmV3X3BlcmlvZC0+U2VnbWVudEJhc2UsCiAgICAgICAgICAgICBjdXJfbm9kZSwgTlVMTCk7CiAgICAgICB9IGVsc2UgaWYgKHhtbFN0cmNtcCAoY3VyX25vZGUtPm5hbWUsICh4bWxDaGFyICopICJTZWdtZW50TGlzdCIpID09IDApIHsKLSAgICAgICAgZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X2xpc3Rfbm9kZSAoJm5ld19wZXJpb2QtPlNlZ21lbnRMaXN0LAotICAgICAgICAgICAgY3VyX25vZGUsIE5VTEwpOworICAgICAgICBpZiAoIWdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF9saXN0X25vZGUgKCZuZXdfcGVyaW9kLT5TZWdtZW50TGlzdCwKKyAgICAgICAgICAgICAgICBjdXJfbm9kZSwgTlVMTCkpCisgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgIH0gZWxzZSBpZiAoeG1sU3RyY21wIChjdXJfbm9kZS0+bmFtZSwgKHhtbENoYXIgKikgIlNlZ21lbnRUZW1wbGF0ZSIpID09IDApIHsKLSAgICAgICAgZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X3RlbXBsYXRlX25vZGUgKCZuZXdfcGVyaW9kLT5TZWdtZW50VGVtcGxhdGUsCi0gICAgICAgICAgICBjdXJfbm9kZSwgTlVMTCk7CisgICAgICAgIGlmICghZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X3RlbXBsYXRlX25vZGUKKyAgICAgICAgICAgICgmbmV3X3BlcmlvZC0+U2VnbWVudFRlbXBsYXRlLCBjdXJfbm9kZSwgTlVMTCkpCisgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgIH0gZWxzZSBpZiAoeG1sU3RyY21wIChjdXJfbm9kZS0+bmFtZSwgKHhtbENoYXIgKikgIlN1YnNldCIpID09IDApIHsKICAgICAgICAgZ3N0X21wZHBhcnNlcl9wYXJzZV9zdWJzZXRfbm9kZSAoJm5ld19wZXJpb2QtPlN1YnNldHMsIGN1cl9ub2RlKTsKICAgICAgIH0gZWxzZSBpZiAoeG1sU3RyY21wIChjdXJfbm9kZS0+bmFtZSwgKHhtbENoYXIgKikgIkJhc2VVUkwiKSA9PSAwKSB7CkBAIC0xODMxLDExICsyMDg0LDE5IEBACiAgIGZvciAoY3VyX25vZGUgPSBhX25vZGUtPmNoaWxkcmVuOyBjdXJfbm9kZTsgY3VyX25vZGUgPSBjdXJfbm9kZS0+bmV4dCkgewogICAgIGlmIChjdXJfbm9kZS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9OT0RFKSB7CiAgICAgICBpZiAoeG1sU3RyY21wIChjdXJfbm9kZS0+bmFtZSwgKHhtbENoYXIgKikgIkFkYXB0YXRpb25TZXQiKSA9PSAwKSB7Ci0gICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2VfYWRhcHRhdGlvbl9zZXRfbm9kZSAoJm5ld19wZXJpb2QtPkFkYXB0YXRpb25TZXRzLAotICAgICAgICAgICAgY3VyX25vZGUsIG5ld19wZXJpb2QpOworICAgICAgICBpZiAoIWdzdF9tcGRwYXJzZXJfcGFyc2VfYWRhcHRhdGlvbl9zZXRfbm9kZQorICAgICAgICAgICAgKCZuZXdfcGVyaW9kLT5BZGFwdGF0aW9uU2V0cywgY3VyX25vZGUsIG5ld19wZXJpb2QpKQorICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICB9CiAgICAgfQogICB9CisKKyAgKmxpc3QgPSBnX2xpc3RfYXBwZW5kICgqbGlzdCwgbmV3X3BlcmlvZCk7CisgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgZ3N0X21wZHBhcnNlcl9mcmVlX3BlcmlvZF9ub2RlIChuZXdfcGVyaW9kKTsKKyAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTg3NywxMCArMjEzOCwxMCBAQAogICAqbGlzdCA9IGdfbGlzdF9hcHBlbmQgKCpsaXN0LCBuZXdfbWV0cmljc19yYW5nZSk7CiAKICAgR1NUX0xPRyAoImF0dHJpYnV0ZXMgb2YgTWV0cmljcyBSYW5nZSBub2RlOiIpOwotICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAic3RhcnR0aW1lIiwgLTEsCi0gICAgICAmbmV3X21ldHJpY3NfcmFuZ2UtPnN0YXJ0dGltZSk7Ci0gIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJkdXJhdGlvbiIsIC0xLAotICAgICAgJm5ld19tZXRyaWNzX3JhbmdlLT5kdXJhdGlvbik7CisgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJzdGFydHRpbWUiLAorICAgICAgR1NUX01QRF9EVVJBVElPTl9OT05FLCAmbmV3X21ldHJpY3NfcmFuZ2UtPnN0YXJ0dGltZSk7CisgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJkdXJhdGlvbiIsCisgICAgICBHU1RfTVBEX0RVUkFUSU9OX05PTkUsICZuZXdfbWV0cmljc19yYW5nZS0+ZHVyYXRpb24pOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTk0NiwyMCArMjIwNywyNiBAQAogICAgIH0KICAgICBuZXdfdGltaW5nLT51cmxzID0gZ19zdHJzcGxpdCAodmFsdWUsICIgIiwgbWF4X3Rva2Vucyk7CiAgICAgeG1sRnJlZSAodmFsdWUpOworICB9CisKKyAgLyogYXBwZW5kIHRvIGxpc3Qgb25seSBpZiBib3RoIG1ldGhvZCBhbmQgdXJscyB3ZXJlIHNldCAqLworICBpZiAobmV3X3RpbWluZy0+bWV0aG9kICE9IDAgJiYgbmV3X3RpbWluZy0+dXJscyAhPSBOVUxMICYmCisgICAgICBnX3N0cnZfbGVuZ3RoIChuZXdfdGltaW5nLT51cmxzKSAhPSAwKSB7CiAgICAgKmxpc3QgPSBnX2xpc3RfYXBwZW5kICgqbGlzdCwgbmV3X3RpbWluZyk7CiAgIH0gZWxzZSB7CiAgICAgZ3N0X21wZHBhcnNlcl9mcmVlX3V0Y3RpbWluZ19ub2RlIChuZXdfdGltaW5nKTsKICAgfQogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGdib29sZWFuCiBnc3RfbXBkcGFyc2VyX3BhcnNlX3Jvb3Rfbm9kZSAoR3N0TVBETm9kZSAqKiBwb2ludGVyLCB4bWxOb2RlICogYV9ub2RlKQogewogICB4bWxOb2RlICpjdXJfbm9kZTsKICAgR3N0TVBETm9kZSAqbmV3X21wZDsKIAogICBnc3RfbXBkcGFyc2VyX2ZyZWVfbXBkX25vZGUgKCpwb2ludGVyKTsKLSAgKnBvaW50ZXIgPSBuZXdfbXBkID0gZ19zbGljZV9uZXcwIChHc3RNUEROb2RlKTsKKyAgKnBvaW50ZXIgPSBOVUxMOworICBuZXdfbXBkID0gZ19zbGljZV9uZXcwIChHc3RNUEROb2RlKTsKIAogICBHU1RfTE9HICgibmFtZXNwYWNlcyBvZiByb290IE1QRCBub2RlOiIpOwogICBuZXdfbXBkLT5kZWZhdWx0X25hbWVzcGFjZSA9CkBAIC0xOTc3LDI2ICsyMjQ0LDI3IEBACiAgICAgICAmbmV3X21wZC0+YXZhaWxhYmlsaXR5U3RhcnRUaW1lKTsKICAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZGF0ZVRpbWUgKGFfbm9kZSwgImF2YWlsYWJpbGl0eUVuZFRpbWUiLAogICAgICAgJm5ld19tcGQtPmF2YWlsYWJpbGl0eUVuZFRpbWUpOwotICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAibWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbiIsIC0xLAotICAgICAgJm5ld19tcGQtPm1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb24pOwotICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAibWluaW11bVVwZGF0ZVBlcmlvZCIsIC0xLAotICAgICAgJm5ld19tcGQtPm1pbmltdW1VcGRhdGVQZXJpb2QpOwotICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAibWluQnVmZmVyVGltZSIsIC0xLAotICAgICAgJm5ld19tcGQtPm1pbkJ1ZmZlclRpbWUpOwotICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAidGltZVNoaWZ0QnVmZmVyRGVwdGgiLCAtMSwKLSAgICAgICZuZXdfbXBkLT50aW1lU2hpZnRCdWZmZXJEZXB0aCk7Ci0gIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJzdWdnZXN0ZWRQcmVzZW50YXRpb25EZWxheSIsIC0xLAotICAgICAgJm5ld19tcGQtPnN1Z2dlc3RlZFByZXNlbnRhdGlvbkRlbGF5KTsKLSAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgIm1heFNlZ21lbnREdXJhdGlvbiIsIC0xLAotICAgICAgJm5ld19tcGQtPm1heFNlZ21lbnREdXJhdGlvbik7Ci0gIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJtYXhTdWJzZWdtZW50RHVyYXRpb24iLCAtMSwKLSAgICAgICZuZXdfbXBkLT5tYXhTdWJzZWdtZW50RHVyYXRpb24pOworICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAibWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbiIsCisgICAgICBHU1RfTVBEX0RVUkFUSU9OX05PTkUsICZuZXdfbXBkLT5tZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uKTsKKyAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgIm1pbmltdW1VcGRhdGVQZXJpb2QiLAorICAgICAgR1NUX01QRF9EVVJBVElPTl9OT05FLCAmbmV3X21wZC0+bWluaW11bVVwZGF0ZVBlcmlvZCk7CisgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJtaW5CdWZmZXJUaW1lIiwKKyAgICAgIEdTVF9NUERfRFVSQVRJT05fTk9ORSwgJm5ld19tcGQtPm1pbkJ1ZmZlclRpbWUpOworICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAidGltZVNoaWZ0QnVmZmVyRGVwdGgiLAorICAgICAgR1NUX01QRF9EVVJBVElPTl9OT05FLCAmbmV3X21wZC0+dGltZVNoaWZ0QnVmZmVyRGVwdGgpOworICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAic3VnZ2VzdGVkUHJlc2VudGF0aW9uRGVsYXkiLAorICAgICAgR1NUX01QRF9EVVJBVElPTl9OT05FLCAmbmV3X21wZC0+c3VnZ2VzdGVkUHJlc2VudGF0aW9uRGVsYXkpOworICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAibWF4U2VnbWVudER1cmF0aW9uIiwKKyAgICAgIEdTVF9NUERfRFVSQVRJT05fTk9ORSwgJm5ld19tcGQtPm1heFNlZ21lbnREdXJhdGlvbik7CisgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJtYXhTdWJzZWdtZW50RHVyYXRpb24iLAorICAgICAgR1NUX01QRF9EVVJBVElPTl9OT05FLCAmbmV3X21wZC0+bWF4U3Vic2VnbWVudER1cmF0aW9uKTsKIAogICAvKiBleHBsb3JlIGNoaWxkcmVuIFBlcmlvZCBub2RlcyAqLwogICBmb3IgKGN1cl9ub2RlID0gYV9ub2RlLT5jaGlsZHJlbjsgY3VyX25vZGU7IGN1cl9ub2RlID0gY3VyX25vZGUtPm5leHQpIHsKICAgICBpZiAoY3VyX25vZGUtPnR5cGUgPT0gWE1MX0VMRU1FTlRfTk9ERSkgewogICAgICAgaWYgKHhtbFN0cmNtcCAoY3VyX25vZGUtPm5hbWUsICh4bWxDaGFyICopICJQZXJpb2QiKSA9PSAwKSB7Ci0gICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2VfcGVyaW9kX25vZGUgKCZuZXdfbXBkLT5QZXJpb2RzLCBjdXJfbm9kZSk7CisgICAgICAgIGlmICghZ3N0X21wZHBhcnNlcl9wYXJzZV9wZXJpb2Rfbm9kZSAoJm5ld19tcGQtPlBlcmlvZHMsIGN1cl9ub2RlKSkKKyAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgfSBlbHNlIGlmICh4bWxTdHJjbXAgKGN1cl9ub2RlLT5uYW1lLAogICAgICAgICAgICAgICAoeG1sQ2hhciAqKSAiUHJvZ3JhbUluZm9ybWF0aW9uIikgPT0gMCkgewogICAgICAgICBnc3RfbXBkcGFyc2VyX3BhcnNlX3Byb2dyYW1faW5mb19ub2RlICgmbmV3X21wZC0+UHJvZ3JhbUluZm8sIGN1cl9ub2RlKTsKQEAgLTIwMTEsNiArMjI3OSwxNCBAQAogICAgICAgfQogICAgIH0KICAgfQorCisgIGdzdF9tcGRwYXJzZXJfZnJlZV9tcGRfbm9kZSAoKnBvaW50ZXIpOworICAqcG9pbnRlciA9IG5ld19tcGQ7CisgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgZ3N0X21wZHBhcnNlcl9mcmVlX21wZF9ub2RlIChuZXdfbXBkKTsKKyAgcmV0dXJuIEZBTFNFOwogfQogCiAvKiBjb21wYXJpc29uIGZ1bmN0aW9ucyAqLwpAQCAtMjQ3Miw2ICsyNzQ4LDggQEAKICAgICAgIHhtbEZyZWUgKHJlcHJlc2VudGF0aW9uX2Jhc2UtPnByb2ZpbGVzKTsKICAgICBnX3NsaWNlX2ZyZWUgKEdzdFJhdGlvLCByZXByZXNlbnRhdGlvbl9iYXNlLT5zYXIpOwogICAgIGdfc2xpY2VfZnJlZSAoR3N0RnJhbWVSYXRlLCByZXByZXNlbnRhdGlvbl9iYXNlLT5mcmFtZVJhdGUpOworICAgIGdfc2xpY2VfZnJlZSAoR3N0RnJhbWVSYXRlLCByZXByZXNlbnRhdGlvbl9iYXNlLT5taW5GcmFtZVJhdGUpOworICAgIGdfc2xpY2VfZnJlZSAoR3N0RnJhbWVSYXRlLCByZXByZXNlbnRhdGlvbl9iYXNlLT5tYXhGcmFtZVJhdGUpOwogICAgIGlmIChyZXByZXNlbnRhdGlvbl9iYXNlLT5hdWRpb1NhbXBsaW5nUmF0ZSkKICAgICAgIHhtbEZyZWUgKHJlcHJlc2VudGF0aW9uX2Jhc2UtPmF1ZGlvU2FtcGxpbmdSYXRlKTsKICAgICBpZiAocmVwcmVzZW50YXRpb25fYmFzZS0+bWltZVR5cGUpCkBAIC0yNTAyLDggKzI3ODAsNiBAQAogICAgIGlmIChhZGFwdGF0aW9uX3NldF9ub2RlLT5jb250ZW50VHlwZSkKICAgICAgIHhtbEZyZWUgKGFkYXB0YXRpb25fc2V0X25vZGUtPmNvbnRlbnRUeXBlKTsKICAgICBnX3NsaWNlX2ZyZWUgKEdzdFJhdGlvLCBhZGFwdGF0aW9uX3NldF9ub2RlLT5wYXIpOwotICAgIGdfc2xpY2VfZnJlZSAoR3N0RnJhbWVSYXRlLCBhZGFwdGF0aW9uX3NldF9ub2RlLT5taW5GcmFtZVJhdGUpOwotICAgIGdfc2xpY2VfZnJlZSAoR3N0RnJhbWVSYXRlLCBhZGFwdGF0aW9uX3NldF9ub2RlLT5tYXhGcmFtZVJhdGUpOwogICAgIGdfc2xpY2VfZnJlZSAoR3N0Q29uZGl0aW9uYWxVaW50VHlwZSwKICAgICAgICAgYWRhcHRhdGlvbl9zZXRfbm9kZS0+c2VnbWVudEFsaWdubWVudCk7CiAgICAgZ19zbGljZV9mcmVlIChHc3RDb25kaXRpb25hbFVpbnRUeXBlLApAQCAtMjc5NiwyOCArMzA3MiwyNiBAQAogc3RhdGljIGdib29sZWFuCiB2YWxpZGF0ZV9mb3JtYXQgKGNvbnN0IGdjaGFyICogZm9ybWF0KQogewotICBnY2hhciAqcDsKKyAgY29uc3QgZ2NoYXIgKnAgPSBmb3JtYXQ7CiAKLSAgLyogQ2hlY2sgaWYgdGhlcmUgaXMgYSAlIGF0IGFsbCAqLwotICBwID0gc3RyY2hyIChmb3JtYXQsICclJyk7Ci0gIGlmICghcCkKLSAgICByZXR1cm4gVFJVRTsKKyAgLyogQ2hlY2sgaWYgaXQgc3RhcnRzIHdpdGggJSAqLworICBpZiAoIXAgfHwgcFswXSAhPSAnJScpCisgICAgcmV0dXJuIEZBTFNFOwogICBwKys7CiAKLSAgLyogRm9sbG93aW5nIHRoZSAlIG11c3QgYmUgYSAwLCBvciBhbnkgb2YgZCwgeCBvciB1LgotICAgKiB4IGFuZCB1IGFyZSBub3QgcGFydCBvZiB0aGUgc3BlYywgYnV0IGRvbid0IGh1cnQgdXMKKyAgLyogdGhlIHNwZWMgbWFuZGF0ZXMgYSBmb3JtYXQgbGlrZSAlMFt3aWR0aF1kICovCisgIC8qIEZvbGxvd2luZyB0aGUgJSwgd2UgbXVzdCBoYXZlIGEgMCAqLworICBpZiAocFswXSAhPSAnMCcpCisgICAgcmV0dXJuIEZBTFNFOworCisgIC8qIEZvbGxvd2luZyB0aGUgJSBtdXN0IGJlIGEgbnVtYmVyIHN0YXJ0aW5nIHdpdGggMAogICAgKi8KLSAgaWYgKHBbMF0gPT0gJzAnKSB7CisgIHdoaWxlIChnX2FzY2lpX2lzZGlnaXQgKCpwKSkKICAgICBwKys7CiAKLSAgICB3aGlsZSAoZ19hc2NpaV9pc2RpZ2l0ICgqcCkpCi0gICAgICBwKys7Ci0gIH0KLQotICAvKiBBZnRlciBhbnkgMCBhbmQgYWxwaGFudW1lcmljIHZhbHVlcywgdGhlcmUgbXVzdCBiZQotICAgKiBhbiBkLCB4IG9yIHUuCisgIC8qIEFmdGVyIGFueSAwIGFuZCBhbHBoYW51bWVyaWMgdmFsdWVzLCB0aGVyZSBtdXN0IGJlIGEgZC4KICAgICovCi0gIGlmIChwWzBdICE9ICdkJyAmJiBwWzBdICE9ICd4JyAmJiBwWzBdICE9ICd1JykKKyAgaWYgKHBbMF0gIT0gJ2QnKQogICAgIHJldHVybiBGQUxTRTsKICAgcCsrOwogCkBAIC0yODM0LDE2ICszMTA4LDEzIEBACiBzdGF0aWMgZ2NoYXIgKgogcHJvbW90ZV9mb3JtYXRfdG9fdWludDY0IChjb25zdCBnY2hhciAqIGZvcm1hdCkKIHsKLSAgZ2NoYXIgKnA7CisgIGNvbnN0IGdjaGFyICpwID0gZm9ybWF0OwogICBnY2hhciAqcHJvbW90ZWRfZm9ybWF0OwogCiAgIC8qIE11c3QgYmUgY2FsbGVkIHdpdGggYSB2YWxpZGF0ZWQgZm9ybWF0ISAqLwogICBnX3JldHVybl92YWxfaWZfZmFpbCAodmFsaWRhdGVfZm9ybWF0IChmb3JtYXQpLCBOVUxMKTsKIAotICAvKiBDaGVjayBpZiB0aGVyZSBpcyBhICUgYXQgYWxsICovCi0gIHAgPSBzdHJjaHIgKGZvcm1hdCwgJyUnKTsKLSAgaWYgKCFwKQotICAgIHJldHVybiBnX3N0cmR1cCAoZm9ybWF0KTsKKyAgLyogaXQgc3RhcnRzIHdpdGggJSAqLwogICBwKys7CiAKICAgLyogRm9sbG93aW5nIHRoZSAlIG11c3QgYmUgYSAwLCBvciBhbnkgb2YgZCwgeCBvciB1LgpAQCAtMjg1NiwxMCArMzEyNywxMCBAQAogICAgICAgcCsrOwogICB9CiAKLSAgLyogQWZ0ZXIgYW55IDAgYW5kIGFscGhhbnVtZXJpYyB2YWx1ZXMsIHRoZXJlIG11c3QgYmUKLSAgICogYW4gZCwgeCBvciB1LiBPdGhlcndpc2UgdmFsaWRhdGlvbiB3b3VsZCBoYXZlIGZhaWxlZAorICAvKiBBZnRlciBhbnkgMCBhbmQgYWxwaGFudW1lcmljIHZhbHVlcywgdGhlcmUgbXVzdCBiZSBhIGQuCisgICAqIE90aGVyd2lzZSB2YWxpZGF0aW9uIHdvdWxkIGhhdmUgZmFpbGVkCiAgICAqLwotICBnX2Fzc2VydCAocFswXSA9PSAnZCcgfHwgcFswXSA9PSAneCcgfHwgcFswXSA9PSAndScpOworICBnX2Fzc2VydCAocFswXSA9PSAnZCcpOwogCiAgIHByb21vdGVkX2Zvcm1hdCA9CiAgICAgICBnX3N0cmR1cF9wcmludGYgKCIlLipzIiBHX0dJTlQ2NF9NT0RJRklFUiAiJXMiLCAoZ2ludCkgKHAgLSBmb3JtYXQpLApAQCAtMjg2OCw2ICszMTM5LDI2IEBACiAgIHJldHVybiBwcm9tb3RlZF9mb3JtYXQ7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybCAoY29uc3QgY2hhciAqcykKK3sKKyAgd2hpbGUgKCpzKSB7CisgICAgaWYgKCFzdHJjaHIKKyAgICAgICAgKCI7OkAmPWFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelowMTIzNDU2Nzg5JC1fLishKicoKSwlLyIsCisgICAgICAgICAgICAqcykpCisgICAgICByZXR1cm4gRkFMU0U7CisgICAgaWYgKCpzID09ICclJykgeworICAgICAgLyogZ19hc2NpaV9pc2RpZ2l0IHJldHVybnMgRkFMU0UgZm9yIE5VTCwgYW5kIHx8IGlzIGEgc2hvcnQgY2lyY3VpdGluZworICAgICAgICAgb3BlcmF0b3IsIHNvIHRoaXMgaXMgc2FmZSBmb3Igc3RyaW5ncyBlbmRpbmcgYmVmb3JlIHR3byBoZXggZGlnaXRzICovCisgICAgICBpZiAoIWdfYXNjaWlfaXN4ZGlnaXQgKHNbMV0pIHx8ICFnX2FzY2lpX2lzeGRpZ2l0IChzWzJdKSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgcyArPSAyOworICAgIH0KKyAgICBzKys7CisgIH0KKyAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyBnY2hhciAqCiBnc3RfbXBkcGFyc2VyX2J1aWxkX1VSTF9mcm9tX3RlbXBsYXRlIChjb25zdCBnY2hhciAqIHVybF90ZW1wbGF0ZSwKICAgICBjb25zdCBnY2hhciAqIGlkLCBndWludCBudW1iZXIsIGd1aW50IGJhbmR3aWR0aCwgZ3VpbnQ2NCB0aW1lKQpAQCAtMjg3Niw3ICszMTY3LDYgQEAKICAgZ2NoYXIgKip0b2tlbnMsICp0b2tlbiwgKnJldDsKICAgY29uc3QgZ2NoYXIgKmZvcm1hdDsKICAgZ2ludCBpLCBudW1fdG9rZW5zOwotICBnYm9vbGVhbiBsYXN0X3Rva2VuX3BhciA9IFRSVUU7ICAgICAgIC8qIGxhc3QgdG9rZW4gd2FzIGEgcGFyYW1ldGVyICovCiAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHVybF90ZW1wbGF0ZSAhPSBOVUxMLCBOVUxMKTsKICAgdG9rZW5zID0gZ19zdHJzcGxpdF9zZXQgKHVybF90ZW1wbGF0ZSwgIiQiLCAtMSk7CkBAIC0yODg2LDE0ICszMTc2LDM2IEBACiAgIH0KICAgbnVtX3Rva2VucyA9IGdfc3Rydl9sZW5ndGggKHRva2Vucyk7CiAKKyAgLyoKKyAgICogZWFjaCBpZGVudGlmaWVyIGlzIGd1YXJkZWQgYnkgMiAkLCB3aGljaCBtZWFucyB0aGF0IHdlIG11c3QgaGF2ZSBhbiBvZGQgbnVtYmVyIG9mIHRva2VucworICAgKiBBbiBldmVuIG51bWJlciBvZiB0b2tlbnMgbWVhbnMgdGhlIHN0cmluZyBpcyBub3QgdmFsaWQuCisgICAqLworICBpZiAoKG51bV90b2tlbnMgJiAxKSA9PSAwKSB7CisgICAgR1NUX0VSUk9SICgiSW52YWxpZCBudW1iZXIgb2YgdG9rZW5zICglZCkuIHVybF90ZW1wbGF0ZSBpcyAnJXMnIiwKKyAgICAgICAgbnVtX3Rva2VucywgdXJsX3RlbXBsYXRlKTsKKyAgICBnX3N0cmZyZWV2ICh0b2tlbnMpOworICAgIHJldHVybiBOVUxMOworICB9CisKICAgZm9yIChpID0gMDsgaSA8IG51bV90b2tlbnM7IGkrKykgewogICAgIHRva2VuID0gdG9rZW5zW2ldOwogICAgIGZvcm1hdCA9IGRlZmF1bHRfZm9ybWF0OwogCisgICAgLyogdGhlIHRva2VucyB0byByZXBsYWNlIG11c3QgYmUgcHJvdmlkZWQgYmV0d2VlbiAkIGNoYXJhY3RlcnMsIGVnICR0b2tlbiQKKyAgICAgKiBGb3IgYSBzdHJpbmcgbGlrZSB0b2tlbjAkdG9rZW4xJHRva2VuMiR0b2tlbjMkdG9rZW40LCBvbmx5IHRoZSBvZGQgbnVtYmVyCisgICAgICogdG9rZW5zICgxLDMsLi4uKSBtdXN0IGJlIHBhcnNlZC4KKyAgICAgKgorICAgICAqIFNraXAgZXZlbiB0b2tlbnMKKyAgICAgKi8KKyAgICBpZiAoKGkgJiAxKSA9PSAwKQorICAgICAgY29udGludWU7CisKICAgICBpZiAoIWdfc3RyY21wMCAodG9rZW4sICJSZXByZXNlbnRhdGlvbklEIikpIHsKKyAgICAgIGlmICghZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybCAoaWQpKQorICAgICAgICBnb3RvIGludmFsaWRfcmVwcmVzZW50YXRpb25faWQ7CisKICAgICAgIHRva2Vuc1tpXSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzIiwgaWQpOwogICAgICAgZ19mcmVlICh0b2tlbik7Ci0gICAgICBsYXN0X3Rva2VuX3BhciA9IFRSVUU7CiAgICAgfSBlbHNlIGlmICghc3RybmNtcCAodG9rZW4sICJOdW1iZXIiLCA2KSkgewogICAgICAgaWYgKHN0cmxlbiAodG9rZW4pID4gNikgewogICAgICAgICBmb3JtYXQgPSB0b2tlbiArIDY7ICAgICAvKiBmb3JtYXQgdGFnICovCkBAIC0yOTAzLDcgKzMyMTUsNiBAQAogCiAgICAgICB0b2tlbnNbaV0gPSBnX3N0cmR1cF9wcmludGYgKGZvcm1hdCwgbnVtYmVyKTsKICAgICAgIGdfZnJlZSAodG9rZW4pOwotICAgICAgbGFzdF90b2tlbl9wYXIgPSBUUlVFOwogICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAgKHRva2VuLCAiQmFuZHdpZHRoIiwgOSkpIHsKICAgICAgIGlmIChzdHJsZW4gKHRva2VuKSA+IDkpIHsKICAgICAgICAgZm9ybWF0ID0gdG9rZW4gKyA5OyAgICAgLyogZm9ybWF0IHRhZyAqLwpAQCAtMjkxMyw3ICszMjI0LDYgQEAKIAogICAgICAgdG9rZW5zW2ldID0gZ19zdHJkdXBfcHJpbnRmIChmb3JtYXQsIGJhbmR3aWR0aCk7CiAgICAgICBnX2ZyZWUgKHRva2VuKTsKLSAgICAgIGxhc3RfdG9rZW5fcGFyID0gVFJVRTsKICAgICB9IGVsc2UgaWYgKCFzdHJuY21wICh0b2tlbiwgIlRpbWUiLCA0KSkgewogICAgICAgZ2NoYXIgKnByb21vdGVkX2Zvcm1hdDsKIApAQCAtMjkyNywxNyArMzIzNywxNiBAQAogICAgICAgdG9rZW5zW2ldID0gZ19zdHJkdXBfcHJpbnRmIChwcm9tb3RlZF9mb3JtYXQsIHRpbWUpOwogICAgICAgZ19mcmVlIChwcm9tb3RlZF9mb3JtYXQpOwogICAgICAgZ19mcmVlICh0b2tlbik7Ci0gICAgICBsYXN0X3Rva2VuX3BhciA9IFRSVUU7CiAgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwICh0b2tlbiwgIiIpKSB7Ci0gICAgICBpZiAoIWxhc3RfdG9rZW5fcGFyKSB7Ci0gICAgICAgIHRva2Vuc1tpXSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzIiwgIiQiKTsKLSAgICAgICAgZ19mcmVlICh0b2tlbik7Ci0gICAgICAgIGxhc3RfdG9rZW5fcGFyID0gVFJVRTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGxhc3RfdG9rZW5fcGFyID0gRkFMU0U7Ci0gICAgICB9CisgICAgICB0b2tlbnNbaV0gPSBnX3N0cmR1cF9wcmludGYgKCIlcyIsICIkIik7CisgICAgICBnX2ZyZWUgKHRva2VuKTsKICAgICB9IGVsc2UgewotICAgICAgbGFzdF90b2tlbl9wYXIgPSBGQUxTRTsKKyAgICAgIC8qIHVuZXhwZWN0ZWQgaWRlbnRpZmllciBmb3VuZCBiZXR3ZWVuICQgc2lnbnMKKyAgICAgICAqCisgICAgICAgKiAiSWYgdGhlIFVSTCBjb250YWlucyB1bmVzY2FwZWQgJCBzeW1ib2xzIHdoaWNoIGRvIG5vdCBlbmNsb3NlIGEgdmFsaWQKKyAgICAgICAqIGlkZW50aWZpZXIgdGhlbiB0aGUgcmVzdWx0IG9mIFVSTCBmb3JtYXRpb24gaXMgdW5kZWZpbmVkIgorICAgICAgICovCisgICAgICBnb3RvIGludmFsaWRfZm9ybWF0OwogICAgIH0KICAgfQogCkBAIC0yOTU1LDYgKzMyNjQsMTYgQEAKIAogICAgIHJldHVybiBOVUxMOwogICB9CitpbnZhbGlkX3JlcHJlc2VudGF0aW9uX2lkOgorICB7CisgICAgR1NUX0VSUk9SCisgICAgICAgICgiUmVwcmVzZW50YXRpb24gSUQgc3RyaW5nICclcycgaGFzIGNoYXJhY3RlcnMgaW52YWxpZCBpbiBhbiBSRkMgMTczOCBVUkwiLAorICAgICAgICBpZCk7CisKKyAgICBnX3N0cmZyZWV2ICh0b2tlbnMpOworCisgICAgcmV0dXJuIE5VTEw7CisgIH0KIH0KIAogZ3VpbnQKQEAgLTMwNTMsOCArMzM3Miw3IEBACiAgICAgZ3N0X3VyaV91bnJlZiAoYmFzZSk7CiAKICAgICBpZiAocmV0ICYmIHF1ZXJ5KSB7Ci0gICAgICBpZiAoKnF1ZXJ5KQotICAgICAgICBnX2ZyZWUgKCpxdWVyeSk7CisgICAgICBnX2ZyZWUgKCpxdWVyeSk7CiAgICAgICAqcXVlcnkgPSBnc3RfdXJpX2dldF9xdWVyeV9zdHJpbmcgKHJldCk7CiAgICAgICBpZiAoKnF1ZXJ5KSB7CiAgICAgICAgIHJldCA9IGdzdF91cmlfbWFrZV93cml0YWJsZSAocmV0KTsKQEAgLTMxMjAsNyArMzQzOCw3IEBACiAKIHN0YXRpYyBHc3RDbG9ja1RpbWUKIGdzdF9tcGRfY2xpZW50X2dldF9zZWdtZW50X2R1cmF0aW9uIChHc3RNcGRDbGllbnQgKiBjbGllbnQsCi0gICAgR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtLCBnaW50NjQgKiBzY2FsZV9kdXIpCisgICAgR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtLCBndWludDY0ICogc2NhbGVfZHVyKQogewogICBHc3RTdHJlYW1QZXJpb2QgKnN0cmVhbV9wZXJpb2Q7CiAgIEdzdE11bHRTZWdtZW50QmFzZVR5cGUgKmJhc2UgPSBOVUxMOwpAQCAtMzIxNiw3ICszNTM0LDExIEBACiBzdGF0aWMgdm9pZAogZ3N0X21wZF9jbGllbnRfY2hlY2tfcHJvZmlsZXMgKEdzdE1wZENsaWVudCAqIGNsaWVudCkKIHsKLSAgR1NUX0RFQlVHICgiUHJvZmlsZXM6ICVzIiwgY2xpZW50LT5tcGRfbm9kZS0+cHJvZmlsZXMpOworICBHU1RfREVCVUcgKCJQcm9maWxlczogJXMiLAorICAgICAgY2xpZW50LT5tcGRfbm9kZS0+cHJvZmlsZXMgPyBjbGllbnQtPm1wZF9ub2RlLT5wcm9maWxlcyA6ICI8bm9uZT4iKTsKKworICBpZiAoIWNsaWVudC0+bXBkX25vZGUtPnByb2ZpbGVzKQorICAgIHJldHVybjsKIAogICBpZiAoZ19zdHJzdHJfbGVuIChjbGllbnQtPm1wZF9ub2RlLT5wcm9maWxlcywgLTEsCiAgICAgICAgICAgInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1vbi1kZW1hbmQ6MjAxMSIpKSB7CkBAIC0zMzkxLDYgKzM3MTMsOCBAQAogZ2Jvb2xlYW4KIGdzdF9tcGRfcGFyc2UgKEdzdE1wZENsaWVudCAqIGNsaWVudCwgY29uc3QgZ2NoYXIgKiBkYXRhLCBnaW50IHNpemUpCiB7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCiAgIGlmIChkYXRhKSB7CiAgICAgeG1sRG9jUHRyIGRvYzsKICAgICB4bWxOb2RlICpyb290X2VsZW1lbnQgPSBOVUxMOwpAQCAtMzQwOSw3ICszNzMzLDcgQEAKICAgICBkb2MgPSB4bWxSZWFkTWVtb3J5IChkYXRhLCBzaXplLCAibm9uYW1lLnhtbCIsIE5VTEwsIFhNTF9QQVJTRV9OT05FVCk7CiAgICAgaWYgKGRvYyA9PSBOVUxMKSB7CiAgICAgICBHU1RfRVJST1IgKCJmYWlsZWQgdG8gcGFyc2UgdGhlIE1QRCBmaWxlIik7Ci0gICAgICByZXR1cm4gRkFMU0U7CisgICAgICByZXQgPSBGQUxTRTsKICAgICB9IGVsc2UgewogICAgICAgLyogZ2V0IHRoZSByb290IGVsZW1lbnQgbm9kZSAqLwogICAgICAgcm9vdF9lbGVtZW50ID0geG1sRG9jR2V0Um9vdEVsZW1lbnQgKGRvYyk7CkBAIC0zNDE4LDIzICszNzQyLDI0IEBACiAgICAgICAgICAgfHwgeG1sU3RyY21wIChyb290X2VsZW1lbnQtPm5hbWUsICh4bWxDaGFyICopICJNUEQiKSAhPSAwKSB7CiAgICAgICAgIEdTVF9FUlJPUgogICAgICAgICAgICAgKCJjYW4gbm90IGZpbmQgdGhlIHJvb3QgZWxlbWVudCBNUEQsIGZhaWxlZCB0byBwYXJzZSB0aGUgTVBEIGZpbGUiKTsKKyAgICAgICAgcmV0ID0gRkFMU0U7ICAgICAgICAgICAgLyogdXNlZCB0byByZXR1cm4gVFJVRSBiZWZvcmUsIGJ1dCB0aGlzIHNlZW1zIHdyb25nICovCiAgICAgICB9IGVsc2UgewogICAgICAgICAvKiBub3cgd2UgY2FuIHBhcnNlIHRoZSBNUEQgcm9vdCBub2RlIGFuZCBhbGwgY2hpbGRyZW4gbm9kZXMsIHJlY3Vyc2l2ZWx5ICovCi0gICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2Vfcm9vdF9ub2RlICgmY2xpZW50LT5tcGRfbm9kZSwgcm9vdF9lbGVtZW50KTsKKyAgICAgICAgcmV0ID0gZ3N0X21wZHBhcnNlcl9wYXJzZV9yb290X25vZGUgKCZjbGllbnQtPm1wZF9ub2RlLCByb290X2VsZW1lbnQpOwogICAgICAgfQogICAgICAgLyogZnJlZSB0aGUgZG9jdW1lbnQgKi8KICAgICAgIHhtbEZyZWVEb2MgKGRvYyk7CiAgICAgfQogCi0gICAgZ3N0X21wZF9jbGllbnRfY2hlY2tfcHJvZmlsZXMgKGNsaWVudCk7CisgICAgaWYgKHJldCkgeworICAgICAgZ3N0X21wZF9jbGllbnRfY2hlY2tfcHJvZmlsZXMgKGNsaWVudCk7CiAKLSAgICBpZiAoIWdzdF9tcGRfY2xpZW50X2ZldGNoX29uX2xvYWRfZXh0ZXJuYWxfcmVzb3VyY2VzIChjbGllbnQpKQotICAgICAgcmV0dXJuIEZBTFNFOwotCi0gICAgcmV0dXJuIFRSVUU7CisgICAgICBpZiAoIWdzdF9tcGRfY2xpZW50X2ZldGNoX29uX2xvYWRfZXh0ZXJuYWxfcmVzb3VyY2VzIChjbGllbnQpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQogICB9CiAKLSAgcmV0dXJuIEZBTFNFOworICByZXR1cm4gcmV0OwogfQogCiBjb25zdCBnY2hhciAqCkBAIC0zNDcyLDg5ICszNzk3LDkgQEAKIH0KIAogc3RhdGljIGdib29sZWFuCi1nc3RfbXBkcGFyc2VyX2ZpbmRfc2VnbWVudF9ieV9pbmRleCAoR3N0TXBkQ2xpZW50ICogY2xpZW50LAotICAgIEdQdHJBcnJheSAqIHNlZ21lbnRzLCBnaW50IGluZGV4LCBHc3RNZWRpYVNlZ21lbnQgKiByZXN1bHQpCi17Ci0gIGdpbnQgaTsKLSAgZm9yIChpID0gMDsgaSA8IHNlZ21lbnRzLT5sZW47IGkrKykgewotICAgIEdzdE1lZGlhU2VnbWVudCAqczsKLSAgICBnaW50IHJlcGVhdDsKLQotICAgIHMgPSBnX3B0cl9hcnJheV9pbmRleCAoc2VnbWVudHMsIGkpOwotICAgIGlmIChzLT5yZXBlYXQgPj0gMCkgewotICAgICAgcmVwZWF0ID0gcy0+cmVwZWF0OwotICAgIH0gZWxzZSB7Ci0gICAgICBHc3RDbG9ja1RpbWUgc3RhcnQgPSBzLT5zdGFydDsKLSAgICAgIEdzdENsb2NrVGltZSBlbmQgPQotICAgICAgICAgIGdzdF9tcGRwYXJzZXJfZ2V0X3NlZ21lbnRfZW5kX3RpbWUgKGNsaWVudCwgc2VnbWVudHMsIHMsIGkpOwotICAgICAgcmVwZWF0ID0gKGd1aW50KSAoZW5kIC0gc3RhcnQpIC8gcy0+ZHVyYXRpb247Ci0gICAgfQotICAgIGlmIChzLT5udW1iZXIgKyByZXBlYXQgPj0gaW5kZXgpIHsKLSAgICAgIC8qIGl0IGlzIGluIHRoaXMgc2VnbWVudCAqLwotICAgICAgcmVzdWx0LT5TZWdtZW50VVJMID0gcy0+U2VnbWVudFVSTDsKLSAgICAgIHJlc3VsdC0+bnVtYmVyID0gaW5kZXg7Ci0gICAgICByZXN1bHQtPnNjYWxlX3N0YXJ0ID0KLSAgICAgICAgICBzLT5zY2FsZV9zdGFydCArIChpbmRleCAtIHMtPm51bWJlcikgKiBzLT5zY2FsZV9kdXJhdGlvbjsKLSAgICAgIHJlc3VsdC0+c2NhbGVfZHVyYXRpb24gPSBzLT5zY2FsZV9kdXJhdGlvbjsKLSAgICAgIHJlc3VsdC0+c3RhcnQgPSBzLT5zdGFydCArIChpbmRleCAtIHMtPm51bWJlcikgKiBzLT5kdXJhdGlvbjsKLSAgICAgIHJlc3VsdC0+ZHVyYXRpb24gPSBzLT5kdXJhdGlvbjsKLSAgICAgIHJldHVybiBUUlVFOwotICAgIH0KLSAgfQotCi0gIHJldHVybiBGQUxTRTsKLX0KLQotZ2Jvb2xlYW4KLWdzdF9tcGRwYXJzZXJfZ2V0X2NodW5rX2J5X2luZGV4IChHc3RNcGRDbGllbnQgKiBjbGllbnQsIGd1aW50IGluZGV4U3RyZWFtLAotICAgIGd1aW50IGluZGV4Q2h1bmssIEdzdE1lZGlhU2VnbWVudCAqIHNlZ21lbnQpCi17Ci0gIEdzdEFjdGl2ZVN0cmVhbSAqc3RyZWFtOwotCi0gIC8qIHNlbGVjdCBzdHJlYW0gKi8KLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNsaWVudCAhPSBOVUxMLCBGQUxTRSk7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjbGllbnQtPmFjdGl2ZV9zdHJlYW1zICE9IE5VTEwsIEZBTFNFKTsKLSAgc3RyZWFtID0gZ19saXN0X250aF9kYXRhIChjbGllbnQtPmFjdGl2ZV9zdHJlYW1zLCBpbmRleFN0cmVhbSk7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzdHJlYW0gIT0gTlVMTCwgRkFMU0UpOwotCi0gIGluZGV4Q2h1bmsgKz0gMTsKLQotICBpZiAoc3RyZWFtLT5zZWdtZW50cykgewotICAgIHJldHVybiBnc3RfbXBkcGFyc2VyX2ZpbmRfc2VnbWVudF9ieV9pbmRleCAoY2xpZW50LCBzdHJlYW0tPnNlZ21lbnRzLAotICAgICAgICBpbmRleENodW5rLCBzZWdtZW50KTsKLSAgfSBlbHNlIHsKLSAgICBHc3RDbG9ja1RpbWUgZHVyYXRpb247Ci0gICAgR3N0U3RyZWFtUGVyaW9kICpzdHJlYW1fcGVyaW9kOwotICAgIGdpbnQ2NCBzY2FsZV9kdXI7Ci0KLSAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlLT5NdWx0U2VnQmFzZVR5cGUtPgotICAgICAgICBTZWdtZW50VGltZWxpbmUgPT0gTlVMTCwgRkFMU0UpOwotICAgIC8qIHNlZ21lbnQgdGVtcGxhdGUgZ2VuZXJhdG9yICovCi0gICAgZHVyYXRpb24gPSBnc3RfbXBkX2NsaWVudF9nZXRfc2VnbWVudF9kdXJhdGlvbiAoY2xpZW50LCBzdHJlYW0sICZzY2FsZV9kdXIpOwotICAgIGlmICghR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGR1cmF0aW9uKSkKLSAgICAgIHJldHVybiBGQUxTRTsKLQotICAgIHN0cmVhbV9wZXJpb2QgPSBnc3RfbXBkcGFyc2VyX2dldF9zdHJlYW1fcGVyaW9kIChjbGllbnQpOwotCi0gICAgc2VnbWVudC0+bnVtYmVyID0gaW5kZXhDaHVuawotICAgICAgICArIHN0cmVhbS0+Y3VyX3NlZ190ZW1wbGF0ZS0+TXVsdFNlZ0Jhc2VUeXBlLT5zdGFydE51bWJlcjsKLSAgICBzZWdtZW50LT5zY2FsZV9zdGFydCA9IGluZGV4Q2h1bmsgKiBzY2FsZV9kdXI7Ci0gICAgc2VnbWVudC0+c2NhbGVfZHVyYXRpb24gPSBzY2FsZV9kdXI7Ci0gICAgc2VnbWVudC0+c3RhcnQgPSBkdXJhdGlvbiAqIGluZGV4Q2h1bms7Ci0gICAgc2VnbWVudC0+ZHVyYXRpb24gPSBkdXJhdGlvbjsKLSAgICBzZWdtZW50LT5TZWdtZW50VVJMID0gTlVMTDsKLQotICAgIGlmIChzZWdtZW50LT5zdGFydCA+PSBzdHJlYW1fcGVyaW9kLT5kdXJhdGlvbikgewotICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLSAgfQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGdib29sZWFuCiBnc3RfbXBkX2NsaWVudF9hZGRfbWVkaWFfc2VnbWVudCAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtLAogICAgIEdzdFNlZ21lbnRVUkxOb2RlICogdXJsX25vZGUsIGd1aW50IG51bWJlciwgZ2ludCByZXBlYXQsCi0gICAgZ2ludDY0IHNjYWxlX3N0YXJ0LCBnaW50NjQgc2NhbGVfZHVyYXRpb24sCisgICAgZ3VpbnQ2NCBzY2FsZV9zdGFydCwgZ3VpbnQ2NCBzY2FsZV9kdXJhdGlvbiwKICAgICBHc3RDbG9ja1RpbWUgc3RhcnQsIEdzdENsb2NrVGltZSBkdXJhdGlvbikKIHsKICAgR3N0TWVkaWFTZWdtZW50ICptZWRpYV9zZWdtZW50OwpAQCAtMzU4MCw2ICszODI1LDM0IEBACiAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgdm9pZAorZ3N0X21wZF9jbGllbnRfc3RyZWFtX3VwZGF0ZV9wcmVzZW50YXRpb25fdGltZV9vZmZzZXQgKEdzdE1wZENsaWVudCAqIGNsaWVudCwKKyAgICBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0pCit7CisgIEdzdFNlZ21lbnRCYXNlVHlwZSAqc2VnYmFzZSA9IE5VTEw7CisKKyAgLyogRmluZCB0aGUgdXNlZCBzZWdiYXNlICovCisgIGlmIChzdHJlYW0tPmN1cl9zZWdtZW50X2xpc3QpIHsKKyAgICBzZWdiYXNlID0gc3RyZWFtLT5jdXJfc2VnbWVudF9saXN0LT5NdWx0U2VnQmFzZVR5cGUtPlNlZ0Jhc2VUeXBlOworICB9IGVsc2UgaWYgKHN0cmVhbS0+Y3VyX3NlZ190ZW1wbGF0ZSkgeworICAgIHNlZ2Jhc2UgPSBzdHJlYW0tPmN1cl9zZWdfdGVtcGxhdGUtPk11bHRTZWdCYXNlVHlwZS0+U2VnQmFzZVR5cGU7CisgIH0gZWxzZSBpZiAoc3RyZWFtLT5jdXJfc2VnbWVudF9iYXNlKSB7CisgICAgc2VnYmFzZSA9IHN0cmVhbS0+Y3VyX3NlZ21lbnRfYmFzZTsKKyAgfQorCisgIGlmIChzZWdiYXNlKSB7CisgICAgLyogQXZvaWQgb3ZlcmZsb3dzICovCisgICAgc3RyZWFtLT5wcmVzZW50YXRpb25UaW1lT2Zmc2V0ID0KKyAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlIChzZWdiYXNlLT5wcmVzZW50YXRpb25UaW1lT2Zmc2V0LCBHU1RfU0VDT05ELAorICAgICAgICBzZWdiYXNlLT50aW1lc2NhbGUpOworICB9IGVsc2UgeworICAgIHN0cmVhbS0+cHJlc2VudGF0aW9uVGltZU9mZnNldCA9IDA7CisgIH0KKworICBHU1RfTE9HICgiU2V0dGluZyBzdHJlYW0ncyBwcmVzZW50YXRpb24gdGltZSBvZmZzZXQgdG8gJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgR1NUX1RJTUVfQVJHUyAoc3RyZWFtLT5wcmVzZW50YXRpb25UaW1lT2Zmc2V0KSk7Cit9CisKIGdib29sZWFuCiBnc3RfbXBkX2NsaWVudF9zZXR1cF9yZXByZXNlbnRhdGlvbiAoR3N0TXBkQ2xpZW50ICogY2xpZW50LAogICAgIEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSwgR3N0UmVwcmVzZW50YXRpb25Ob2RlICogcmVwcmVzZW50YXRpb24pCkBAIC0zNjgxLDYgKzM5NTQsMTIgQEAKICAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSBnc3RfdXRpbF91aW50NjRfc2NhbGUgKFMtPnQsIEdTVF9TRUNPTkQsIHRpbWVzY2FsZSk7CiAgICAgICAgICAgfQogCisgICAgICAgICAgaWYgKCFTZWdtZW50VVJMKSB7CisgICAgICAgICAgICBHU1RfV0FSTklORworICAgICAgICAgICAgICAgICgiU2VnbWVudFRpbWVsaW5lIGRvZXMgbm90IGhhdmUgYSBtYXRjaGluZyBTZWdtZW50VVJMLCBhYm9ydGluZy4uLiIpOworICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgIH0KKwogICAgICAgICAgIGlmICghZ3N0X21wZF9jbGllbnRfYWRkX21lZGlhX3NlZ21lbnQgKHN0cmVhbSwgU2VnbWVudFVSTC0+ZGF0YSwgaSwKICAgICAgICAgICAgICAgICAgIFMtPnIsIHN0YXJ0LCBTLT5kLCBzdGFydF90aW1lLCBkdXJhdGlvbikpIHsKICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTM2OTEsNyArMzk3MCw3IEBACiAgICAgICAgICAgU2VnbWVudFVSTCA9IGdfbGlzdF9uZXh0IChTZWdtZW50VVJMKTsKICAgICAgICAgfQogICAgICAgfSBlbHNlIHsKLSAgICAgICAgZ2ludDY0IHNjYWxlX2R1cjsKKyAgICAgICAgZ3VpbnQ2NCBzY2FsZV9kdXI7CiAKICAgICAgICAgZHVyYXRpb24gPQogICAgICAgICAgICAgZ3N0X21wZF9jbGllbnRfZ2V0X3NlZ21lbnRfZHVyYXRpb24gKGNsaWVudCwgc3RyZWFtLCAmc2NhbGVfZHVyKTsKQEAgLTM3MzksMTMgKzQwMTgsNiBAQAogICAgICAgR1NUX0xPRyAoIkJ1aWxkaW5nIG1lZGlhIHNlZ21lbnQgbGlzdCB1c2luZyB0aGlzIHRlbXBsYXRlOiAlcyIsCiAgICAgICAgICAgc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlLT5tZWRpYSk7CiAKLSAgICAgIC8qIEF2b2lkIG92ZXJmbG93cyAqLwotICAgICAgc3RyZWFtLT5wcmVzZW50YXRpb25UaW1lT2Zmc2V0ID0KLSAgICAgICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGUgKG11bHRfc2VnLT5TZWdCYXNlVHlwZS0+cHJlc2VudGF0aW9uVGltZU9mZnNldCwKLSAgICAgICAgICBHU1RfU0VDT05ELCBtdWx0X3NlZy0+U2VnQmFzZVR5cGUtPnRpbWVzY2FsZSk7Ci0gICAgICBHU1RfTE9HICgiU2V0dGluZyBzdHJlYW0ncyBwcmVzZW50YXRpb24gdGltZSBvZmZzZXQgdG8gJSIgR1NUX1RJTUVfRk9STUFULAotICAgICAgICAgIEdTVF9USU1FX0FSR1MgKHN0cmVhbS0+cHJlc2VudGF0aW9uVGltZU9mZnNldCkpOwotCiAgICAgICBpZiAobXVsdF9zZWctPlNlZ21lbnRUaW1lbGluZSkgewogICAgICAgICBHc3RTZWdtZW50VGltZWxpbmVOb2RlICp0aW1lbGluZTsKICAgICAgICAgR3N0U05vZGUgKlM7CkBAIC0zODAxLDYgKzQwNzMsOCBAQAogICBzdHJlYW0tPmJhc2VVUkwgPQogICAgICAgZ3N0X21wZHBhcnNlcl9wYXJzZV9iYXNlVVJMIChjbGllbnQsIHN0cmVhbSwgJnN0cmVhbS0+cXVlcnlVUkwpOwogCisgIGdzdF9tcGRfY2xpZW50X3N0cmVhbV91cGRhdGVfcHJlc2VudGF0aW9uX3RpbWVfb2Zmc2V0IChjbGllbnQsIHN0cmVhbSk7CisKICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTM5NDMsNiArNDIxNywxMyBAQAogICBpZHggPSAwOwogICBzdGFydCA9IDA7CiAgIGR1cmF0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKworICBpZiAoY2xpZW50LT5tcGRfbm9kZS0+bWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbiA8PSAwICYmCisgICAgICBjbGllbnQtPm1wZF9ub2RlLT5tZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uICE9IC0xKSB7CisgICAgLyogSW52YWxpZCBNUEQgZmlsZTogTVBEIGR1cmF0aW9uIGlzIG5lZ2F0aXZlIG9yIHplcm8gKi8KKyAgICBnb3RvIHN5bnRheF9lcnJvcjsKKyAgfQorCiAgIGZvciAobGlzdCA9IGNsaWVudC0+bXBkX25vZGUtPlBlcmlvZHM7IGxpc3Q7IC8qIGV4cGxpY2l0bHkgYWR2YW5jZWQgYmVsb3cgKi8gKSB7CiAgICAgR3N0UGVyaW9kTm9kZSAqcGVyaW9kX25vZGUgPSBsaXN0LT5kYXRhOwogICAgIEdzdFBlcmlvZE5vZGUgKm5leHRfcGVyaW9kX25vZGUgPSBOVUxMOwpAQCAtNDA2NCw2ICs0MzQ1LDEwIEBACiAgICAgICAgIH0KICAgICAgICAgZHVyYXRpb24gPSBuZXh0X3BlcmlvZF9ub2RlLT5zdGFydCAqIEdTVF9NU0VDT05EIC0gc3RhcnQ7CiAgICAgICB9IGVsc2UgaWYgKHBlcmlvZF9ub2RlLT5kdXJhdGlvbiAhPSAtMSkgeworICAgICAgICBpZiAocGVyaW9kX25vZGUtPmR1cmF0aW9uIDw9IDApIHsKKyAgICAgICAgICAvKiBJbnZhbGlkIE1QRCBmaWxlOiBkdXJhdGlvbiB3b3VsZCBiZSBuZWdhdGl2ZSBvciB6ZXJvICovCisgICAgICAgICAgZ290byBzeW50YXhfZXJyb3I7CisgICAgICAgIH0KICAgICAgICAgZHVyYXRpb24gPSBwZXJpb2Rfbm9kZS0+ZHVyYXRpb24gKiBHU1RfTVNFQ09ORDsKICAgICAgIH0gZWxzZSBpZiAoY2xpZW50LT5tcGRfbm9kZS0+dHlwZSA9PSBHU1RfTVBEX0ZJTEVfVFlQRV9EWU5BTUlDKSB7CiAgICAgICAgIC8qIG1pZ2h0IGJlIGEgbGl2ZSBmaWxlLCBpZ25vcmUgdW5zcGVjaWZpZWQgZHVyYXRpb24gKi8KQEAgLTQzNjcsNyArNDY1Miw4IEBACiAKIGdib29sZWFuCiBnc3RfbXBkX2NsaWVudF9zdHJlYW1fc2VlayAoR3N0TXBkQ2xpZW50ICogY2xpZW50LCBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0sCi0gICAgR3N0Q2xvY2tUaW1lIHRzKQorICAgIGdib29sZWFuIGZvcndhcmQsIEdzdFNlZWtGbGFncyBmbGFncywgR3N0Q2xvY2tUaW1lIHRzLAorICAgIEdzdENsb2NrVGltZSAqIGZpbmFsX3RzKQogewogICBnaW50IGluZGV4ID0gMDsKICAgZ2ludCByZXBlYXRfaW5kZXggPSAwOwpAQCAtNDM4NCwxOCArNDY3MCw0OCBAQAogICAgICAgICAgIHN0cmVhbS0+c2VnbWVudHMtPmxlbik7CiAgICAgICBpbl9zZWdtZW50ID0gRkFMU0U7CiAgICAgICBpZiAoc2VnbWVudC0+c3RhcnQgPD0gdHMpIHsKKyAgICAgICAgR3N0Q2xvY2tUaW1lIGVuZF90aW1lOworCiAgICAgICAgIGlmIChzZWdtZW50LT5yZXBlYXQgPj0gMCkgewotICAgICAgICAgIGluX3NlZ21lbnQgPQotICAgICAgICAgICAgICB0cyA8IHNlZ21lbnQtPnN0YXJ0ICsgKHNlZ21lbnQtPnJlcGVhdCArIDEpICogc2VnbWVudC0+ZHVyYXRpb247CisgICAgICAgICAgZW5kX3RpbWUgPSBzZWdtZW50LT5zdGFydCArIChzZWdtZW50LT5yZXBlYXQgKyAxKSAqIHNlZ21lbnQtPmR1cmF0aW9uOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgIEdzdENsb2NrVGltZSBlbmQgPQorICAgICAgICAgIGVuZF90aW1lID0KICAgICAgICAgICAgICAgZ3N0X21wZHBhcnNlcl9nZXRfc2VnbWVudF9lbmRfdGltZSAoY2xpZW50LCBzdHJlYW0tPnNlZ21lbnRzLAogICAgICAgICAgICAgICBzZWdtZW50LCBpbmRleCk7Ci0gICAgICAgICAgaW5fc2VnbWVudCA9IHRzIDwgZW5kOwogICAgICAgICB9CisKKyAgICAgICAgLyogYXZvaWQgZG93bmxvYWRpbmcgYW5vdGhlciBmcmFnbWVudCBqdXN0IGZvciAxbnMgaW4gcmV2ZXJzZSBtb2RlICovCisgICAgICAgIGlmIChmb3J3YXJkKQorICAgICAgICAgIGluX3NlZ21lbnQgPSB0cyA8IGVuZF90aW1lOworICAgICAgICBlbHNlCisgICAgICAgICAgaW5fc2VnbWVudCA9IHRzIDw9IGVuZF90aW1lOworCiAgICAgICAgIGlmIChpbl9zZWdtZW50KSB7CiAgICAgICAgICAgc2VsZWN0ZWRDaHVuayA9IHNlZ21lbnQ7CiAgICAgICAgICAgcmVwZWF0X2luZGV4ID0gKHRzIC0gc2VnbWVudC0+c3RhcnQpIC8gc2VnbWVudC0+ZHVyYXRpb247CisKKyAgICAgICAgICAvKiBBdCB0aGUgZW5kIG9mIGEgc2VnbWVudCBpbiByZXZlcnNlIG1vZGUsIHN0YXJ0IGZyb20gdGhlIHByZXZpb3VzIGZyYWdtZW50ICovCisgICAgICAgICAgaWYgKCFmb3J3YXJkICYmIHJlcGVhdF9pbmRleCA+IDAKKyAgICAgICAgICAgICAgJiYgKCh0cyAtIHNlZ21lbnQtPnN0YXJ0KSAlIHNlZ21lbnQtPmR1cmF0aW9uID09IDApKQorICAgICAgICAgICAgcmVwZWF0X2luZGV4LS07CisKKyAgICAgICAgICBpZiAoKGZsYWdzICYgR1NUX1NFRUtfRkxBR19TTkFQX05FQVJFU1QpID09CisgICAgICAgICAgICAgIEdTVF9TRUVLX0ZMQUdfU05BUF9ORUFSRVNUKSB7CisgICAgICAgICAgICAvKiBGSVhNRSBpbXBsZW1lbnQgdGhpcyAqLworICAgICAgICAgIH0gZWxzZSBpZiAoKGZvcndhcmQgJiYgZmxhZ3MgJiBHU1RfU0VFS19GTEFHX1NOQVBfQUZURVIpIHx8CisgICAgICAgICAgICAgICghZm9yd2FyZCAmJiBmbGFncyAmIEdTVF9TRUVLX0ZMQUdfU05BUF9CRUZPUkUpKSB7CisKKyAgICAgICAgICAgIGlmIChyZXBlYXRfaW5kZXggKyAxIDwgc2VnbWVudC0+cmVwZWF0KSB7CisgICAgICAgICAgICAgIHJlcGVhdF9pbmRleCsrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgcmVwZWF0X2luZGV4ID0gMDsKKyAgICAgICAgICAgICAgaWYgKGluZGV4ICsgMSA+PSBzdHJlYW0tPnNlZ21lbnRzLT5sZW4pIHsKKyAgICAgICAgICAgICAgICBzZWxlY3RlZENodW5rID0gTlVMTDsKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzZWxlY3RlZENodW5rID0gZ19wdHJfYXJyYXlfaW5kZXggKHN0cmVhbS0+c2VnbWVudHMsICsraW5kZXgpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICB9CkBAIC00NDA3LDYgKzQ3MjMsOSBAQAogICAgICAgR1NUX0RFQlVHICgiU2VlayB0byBhZnRlciBsYXN0IHNlZ21lbnQiKTsKICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CisKKyAgICBpZiAoZmluYWxfdHMpCisgICAgICAqZmluYWxfdHMgPSBzZWxlY3RlZENodW5rLT5zdGFydCArIHNlbGVjdGVkQ2h1bmstPmR1cmF0aW9uICogcmVwZWF0X2luZGV4OwogICB9IGVsc2UgewogICAgIEdzdENsb2NrVGltZSBkdXJhdGlvbiA9CiAgICAgICAgIGdzdF9tcGRfY2xpZW50X2dldF9zZWdtZW50X2R1cmF0aW9uIChjbGllbnQsIHN0cmVhbSwgTlVMTCk7CkBAIC00NDI1LDEyICs0NzQ0LDIyIEBACiAgICAgICB0cyA9IDA7CiAKICAgICBpbmRleCA9IHRzIC8gZHVyYXRpb247CisKKyAgICBpZiAoKGZsYWdzICYgR1NUX1NFRUtfRkxBR19TTkFQX05FQVJFU1QpID09IEdTVF9TRUVLX0ZMQUdfU05BUF9ORUFSRVNUKSB7CisgICAgICAvKiBGSVhNRSBpbXBsZW1lbnQgdGhpcyAqLworICAgIH0gZWxzZSBpZiAoKGZvcndhcmQgJiYgZmxhZ3MgJiBHU1RfU0VFS19GTEFHX1NOQVBfQUZURVIpIHx8CisgICAgICAgICghZm9yd2FyZCAmJiBmbGFncyAmIEdTVF9TRUVLX0ZMQUdfU05BUF9CRUZPUkUpKSB7CisgICAgICBpbmRleCsrOworICAgIH0KKwogICAgIGlmIChzZWdtZW50c19jb3VudCA+IDAgJiYgaW5kZXggPj0gc2VnbWVudHNfY291bnQpIHsKICAgICAgIHN0cmVhbS0+c2VnbWVudF9pbmRleCA9IHNlZ21lbnRzX2NvdW50OwogICAgICAgc3RyZWFtLT5zZWdtZW50X3JlcGVhdF9pbmRleCA9IDA7CiAgICAgICBHU1RfREVCVUcgKCJTZWVrIHRvIGFmdGVyIGxhc3Qgc2VnbWVudCIpOwogICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KKyAgICBpZiAoZmluYWxfdHMpCisgICAgICAqZmluYWxfdHMgPSBpbmRleCAqIGR1cmF0aW9uOwogICB9CiAKICAgc3RyZWFtLT5zZWdtZW50X3JlcGVhdF9pbmRleCA9IHJlcGVhdF9pbmRleDsKQEAgLTQ1MDQsMjAgKzQ4MzMsMjUgQEAKICAgc3RyZWFtID0gZ19saXN0X250aF9kYXRhIChjbGllbnQtPmFjdGl2ZV9zdHJlYW1zLCBzdHJlYW1faWR4KTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHN0cmVhbSAhPSBOVUxMLCAwKTsKIAotICBzZWdtZW50X2lkeCA9IGdzdF9tcGRfY2xpZW50X2dldF9zZWdtZW50c19jb3VudHMgKGNsaWVudCwgc3RyZWFtKSAtIDE7Ci0gIGN1cnJlbnRDaHVuayA9IGdfcHRyX2FycmF5X2luZGV4IChzdHJlYW0tPnNlZ21lbnRzLCBzZWdtZW50X2lkeCk7Ci0KLSAgaWYgKGN1cnJlbnRDaHVuay0+cmVwZWF0ID49IDApIHsKLSAgICAqdHMgPQotICAgICAgICBjdXJyZW50Q2h1bmstPnN0YXJ0ICsgKGN1cnJlbnRDaHVuay0+ZHVyYXRpb24gKiAoMSArCi0gICAgICAgICAgICBjdXJyZW50Q2h1bmstPnJlcGVhdCkpOwotICB9IGVsc2UgewotICAgIC8qIDUuMy45LjYuMTogbmVnYXRpdmUgcmVwZWF0IG1lYW5zIHJlcGVhdCB0aWxsIHRoZSBlbmQgb2YgdGhlCi0gICAgICogcGVyaW9kLCBvciB0aGUgbmV4dCB1cGRhdGUgb2YgdGhlIE1QRCAod2hpY2ggSSB0aGluayBpcwotICAgICAqIGltcGxpY2l0LCBhcyB0aGlzIHdpbGwgYWxsIGdldCBkZWxldGVkL3JlY3JlYXRlZCksIG9yIHRoZQotICAgICAqIHN0YXJ0IG9mIHRoZSBuZXh0IHNlZ21lbnQsIGlmIGFueS4gKi8KKyAgaWYgKCFzdHJlYW0tPnNlZ21lbnRzKSB7CiAgICAgc3RyZWFtX3BlcmlvZCA9IGdzdF9tcGRwYXJzZXJfZ2V0X3N0cmVhbV9wZXJpb2QgKGNsaWVudCk7CiAgICAgKnRzID0gc3RyZWFtX3BlcmlvZC0+c3RhcnQgKyBzdHJlYW1fcGVyaW9kLT5kdXJhdGlvbjsKKyAgfSBlbHNlIHsKKyAgICBzZWdtZW50X2lkeCA9IGdzdF9tcGRfY2xpZW50X2dldF9zZWdtZW50c19jb3VudHMgKGNsaWVudCwgc3RyZWFtKSAtIDE7CisgICAgY3VycmVudENodW5rID0gZ19wdHJfYXJyYXlfaW5kZXggKHN0cmVhbS0+c2VnbWVudHMsIHNlZ21lbnRfaWR4KTsKKworICAgIGlmIChjdXJyZW50Q2h1bmstPnJlcGVhdCA+PSAwKSB7CisgICAgICAqdHMgPQorICAgICAgICAgIGN1cnJlbnRDaHVuay0+c3RhcnQgKyAoY3VycmVudENodW5rLT5kdXJhdGlvbiAqICgxICsKKyAgICAgICAgICAgICAgY3VycmVudENodW5rLT5yZXBlYXQpKTsKKyAgICB9IGVsc2UgeworICAgICAgLyogNS4zLjkuNi4xOiBuZWdhdGl2ZSByZXBlYXQgbWVhbnMgcmVwZWF0IHRpbGwgdGhlIGVuZCBvZiB0aGUKKyAgICAgICAqIHBlcmlvZCwgb3IgdGhlIG5leHQgdXBkYXRlIG9mIHRoZSBNUEQgKHdoaWNoIEkgdGhpbmsgaXMKKyAgICAgICAqIGltcGxpY2l0LCBhcyB0aGlzIHdpbGwgYWxsIGdldCBkZWxldGVkL3JlY3JlYXRlZCksIG9yIHRoZQorICAgICAgICogc3RhcnQgb2YgdGhlIG5leHQgc2VnbWVudCwgaWYgYW55LiAqLworICAgICAgc3RyZWFtX3BlcmlvZCA9IGdzdF9tcGRwYXJzZXJfZ2V0X3N0cmVhbV9wZXJpb2QgKGNsaWVudCk7CisgICAgICAqdHMgPSBzdHJlYW1fcGVyaW9kLT5zdGFydCArIHN0cmVhbV9wZXJpb2QtPmR1cmF0aW9uOworICAgIH0KICAgfQogCiAgIHJldHVybiBUUlVFOwpAQCAtNDk2MSwyMiArNTI5NSwxMiBAQAogICAgICAgKnJhbmdlX3N0YXJ0ID0gMDsKICAgICAgICpyYW5nZV9lbmQgPSBzdHJlYW0tPmN1cl9zZWdtZW50X2Jhc2UtPmluZGV4UmFuZ2UtPmZpcnN0X2J5dGVfcG9zIC0gMTsKICAgICB9Ci0gIH0gZWxzZSBpZiAoc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlKSB7Ci0gICAgY29uc3QgZ2NoYXIgKmluaXRpYWxpemF0aW9uID0gTlVMTDsKLSAgICBpZiAoc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlLT5pbml0aWFsaXphdGlvbikgewotICAgICAgaW5pdGlhbGl6YXRpb24gPSBzdHJlYW0tPmN1cl9zZWdfdGVtcGxhdGUtPmluaXRpYWxpemF0aW9uOwotICAgIH0gZWxzZSBpZiAoc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5TZWdtZW50VGVtcGxhdGUKLSAgICAgICAgJiYgc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5TZWdtZW50VGVtcGxhdGUtPmluaXRpYWxpemF0aW9uKSB7Ci0gICAgICBpbml0aWFsaXphdGlvbiA9IHN0cmVhbS0+Y3VyX2FkYXB0X3NldC0+U2VnbWVudFRlbXBsYXRlLT5pbml0aWFsaXphdGlvbjsKLSAgICB9IGVsc2UgaWYgKHN0cmVhbV9wZXJpb2QtPnBlcmlvZC0+U2VnbWVudFRlbXBsYXRlCi0gICAgICAgICYmIHN0cmVhbV9wZXJpb2QtPnBlcmlvZC0+U2VnbWVudFRlbXBsYXRlLT5pbml0aWFsaXphdGlvbikgewotICAgICAgaW5pdGlhbGl6YXRpb24gPSBzdHJlYW1fcGVyaW9kLT5wZXJpb2QtPlNlZ21lbnRUZW1wbGF0ZS0+aW5pdGlhbGl6YXRpb247Ci0gICAgfQotICAgIGlmIChpbml0aWFsaXphdGlvbikgewotICAgICAgKnVyaSA9IGdzdF9tcGRwYXJzZXJfYnVpbGRfVVJMX2Zyb21fdGVtcGxhdGUgKGluaXRpYWxpemF0aW9uLAotICAgICAgICAgIHN0cmVhbS0+Y3VyX3JlcHJlc2VudGF0aW9uLT5pZCwgMCwKLSAgICAgICAgICBzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbi0+YmFuZHdpZHRoLCAwKTsKLSAgICB9CisgIH0gZWxzZSBpZiAoc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlCisgICAgICAmJiBzdHJlYW0tPmN1cl9zZWdfdGVtcGxhdGUtPmluaXRpYWxpemF0aW9uKSB7CisgICAgKnVyaSA9CisgICAgICAgIGdzdF9tcGRwYXJzZXJfYnVpbGRfVVJMX2Zyb21fdGVtcGxhdGUgKHN0cmVhbS0+CisgICAgICAgIGN1cl9zZWdfdGVtcGxhdGUtPmluaXRpYWxpemF0aW9uLCBzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbi0+aWQsIDAsCisgICAgICAgIHN0cmVhbS0+Y3VyX3JlcHJlc2VudGF0aW9uLT5iYW5kd2lkdGgsIDApOwogICB9CiAKICAgcmV0dXJuICp1cmkgPT0gTlVMTCA/IEZBTFNFIDogVFJVRTsKQEAgLTUwMDQsMjQgKzUzMjgsMTQgQEAKICAgaWYgKHN0cmVhbS0+Y3VyX3NlZ21lbnRfYmFzZSAmJiBzdHJlYW0tPmN1cl9zZWdtZW50X2Jhc2UtPmluZGV4UmFuZ2UpIHsKICAgICAqdXJpID0KICAgICAgICAgZ19zdHJkdXAgKGdzdF9tcGRwYXJzZXJfZ2V0X2luaXRpYWxpemF0aW9uVVJMIChzdHJlYW0sCi0gICAgICAgICAgICBzdHJlYW0tPmN1cl9zZWdtZW50X2Jhc2UtPkluaXRpYWxpemF0aW9uKSk7CisgICAgICAgICAgICBzdHJlYW0tPmN1cl9zZWdtZW50X2Jhc2UtPlJlcHJlc2VudGF0aW9uSW5kZXgpKTsKICAgICAqcmFuZ2Vfc3RhcnQgPSBzdHJlYW0tPmN1cl9zZWdtZW50X2Jhc2UtPmluZGV4UmFuZ2UtPmZpcnN0X2J5dGVfcG9zOwogICAgICpyYW5nZV9lbmQgPSBzdHJlYW0tPmN1cl9zZWdtZW50X2Jhc2UtPmluZGV4UmFuZ2UtPmxhc3RfYnl0ZV9wb3M7Ci0gIH0gZWxzZSBpZiAoc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlKSB7Ci0gICAgY29uc3QgZ2NoYXIgKmluaXRpYWxpemF0aW9uID0gTlVMTDsKLSAgICBpZiAoc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlLT5pbmRleCkgewotICAgICAgaW5pdGlhbGl6YXRpb24gPSBzdHJlYW0tPmN1cl9zZWdfdGVtcGxhdGUtPmluZGV4OwotICAgIH0gZWxzZSBpZiAoc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5TZWdtZW50VGVtcGxhdGUKLSAgICAgICAgJiYgc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5TZWdtZW50VGVtcGxhdGUtPmluZGV4KSB7Ci0gICAgICBpbml0aWFsaXphdGlvbiA9IHN0cmVhbS0+Y3VyX2FkYXB0X3NldC0+U2VnbWVudFRlbXBsYXRlLT5pbmRleDsKLSAgICB9IGVsc2UgaWYgKHN0cmVhbV9wZXJpb2QtPnBlcmlvZC0+U2VnbWVudFRlbXBsYXRlCi0gICAgICAgICYmIHN0cmVhbV9wZXJpb2QtPnBlcmlvZC0+U2VnbWVudFRlbXBsYXRlLT5pbmRleCkgewotICAgICAgaW5pdGlhbGl6YXRpb24gPSBzdHJlYW1fcGVyaW9kLT5wZXJpb2QtPlNlZ21lbnRUZW1wbGF0ZS0+aW5kZXg7Ci0gICAgfQotICAgIGlmIChpbml0aWFsaXphdGlvbikKLSAgICAgICp1cmkgPSBnc3RfbXBkcGFyc2VyX2J1aWxkX1VSTF9mcm9tX3RlbXBsYXRlIChpbml0aWFsaXphdGlvbiwKLSAgICAgICAgICBzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbi0+aWQsIDAsCi0gICAgICAgICAgc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24tPmJhbmR3aWR0aCwgMCk7CisgIH0gZWxzZSBpZiAoc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlICYmIHN0cmVhbS0+Y3VyX3NlZ190ZW1wbGF0ZS0+aW5kZXgpIHsKKyAgICAqdXJpID0KKyAgICAgICAgZ3N0X21wZHBhcnNlcl9idWlsZF9VUkxfZnJvbV90ZW1wbGF0ZSAoc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlLT5pbmRleCwKKyAgICAgICAgc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24tPmlkLCAwLAorICAgICAgICBzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbi0+YmFuZHdpZHRoLCAwKTsKICAgfQogCiAgIHJldHVybiAqdXJpID09IE5VTEwgPyBGQUxTRSA6IFRSVUU7CkBAIC01MjY0LDYgKzU1NzgsMjcgQEAKICAgcmV0dXJuIGdfbGlzdF9udGhfZGF0YSAoY2xpZW50LT5hY3RpdmVfc3RyZWFtcywgc3RyZWFtX2lkeCk7CiB9CiAKK2dib29sZWFuCitnc3RfbXBkX2NsaWVudF9hY3RpdmVfc3RyZWFtX2NvbnRhaW5zX3N1YnRpdGxlcyAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKQoreworICBjb25zdCBnY2hhciAqbWltZVR5cGU7CisgIGNvbnN0IGdjaGFyICphZGFwdF9zZXRfY29kZWNzOworICBjb25zdCBnY2hhciAqcmVwX2NvZGVjczsKKworICBtaW1lVHlwZSA9IHN0cmVhbS0+Y3VyX3JlcHJlc2VudGF0aW9uLT5SZXByZXNlbnRhdGlvbkJhc2UtPm1pbWVUeXBlOworICBpZiAoIW1pbWVUeXBlKQorICAgIG1pbWVUeXBlID0gc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5SZXByZXNlbnRhdGlvbkJhc2UtPm1pbWVUeXBlOworCisgIGlmIChnX3N0cmNtcDAgKG1pbWVUeXBlLCAiYXBwbGljYXRpb24vdHRtbCt4bWwiKSA9PSAwKQorICAgIHJldHVybiBUUlVFOworCisgIGFkYXB0X3NldF9jb2RlY3MgPSBzdHJlYW0tPmN1cl9hZGFwdF9zZXQtPlJlcHJlc2VudGF0aW9uQmFzZS0+Y29kZWNzOworICByZXBfY29kZWNzID0gc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24tPlJlcHJlc2VudGF0aW9uQmFzZS0+Y29kZWNzOworCisgIHJldHVybiAoYWRhcHRfc2V0X2NvZGVjcyAmJiBnX3N0cl9oYXNfcHJlZml4IChhZGFwdF9zZXRfY29kZWNzLCAic3RwcCIpKQorICAgICAgfHwgKHJlcF9jb2RlY3MgJiYgZ19zdHJfaGFzX3ByZWZpeCAocmVwX2NvZGVjcywgInN0cHAiKSk7Cit9CisKIHN0YXRpYyBjb25zdCBnY2hhciAqCiBnc3RfbXBkcGFyc2VyX21pbWV0eXBlX3RvX2NhcHMgKGNvbnN0IGdjaGFyICogbWltZVR5cGUpCiB7CkBAIC01Mjc5LDEwICs1NjE0LDExIEBACiAgICAgcmV0dXJuIG1pbWVUeXBlOwogfQogCi1jb25zdCBnY2hhciAqCi1nc3RfbXBkX2NsaWVudF9nZXRfc3RyZWFtX21pbWVUeXBlIChHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0pCitHc3RDYXBzICoKK2dzdF9tcGRfY2xpZW50X2dldF9zdHJlYW1fY2FwcyAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKQogewotICBjb25zdCBnY2hhciAqbWltZVR5cGU7CisgIGNvbnN0IGdjaGFyICptaW1lVHlwZSwgKmNhcHNfc3RyaW5nOworICBHc3RDYXBzICpyZXQgPSBOVUxMOwogCiAgIGlmIChzdHJlYW0gPT0gTlVMTCB8fCBzdHJlYW0tPmN1cl9hZGFwdF9zZXQgPT0gTlVMTAogICAgICAgfHwgc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24gPT0gTlVMTCkKQEAgLTUyOTMsNyArNTYyOSwxNiBAQAogICAgIG1pbWVUeXBlID0gc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5SZXByZXNlbnRhdGlvbkJhc2UtPm1pbWVUeXBlOwogICB9CiAKLSAgcmV0dXJuIGdzdF9tcGRwYXJzZXJfbWltZXR5cGVfdG9fY2FwcyAobWltZVR5cGUpOworICBjYXBzX3N0cmluZyA9IGdzdF9tcGRwYXJzZXJfbWltZXR5cGVfdG9fY2FwcyAobWltZVR5cGUpOworCisgIGlmICgoZ19zdHJjbXAwIChjYXBzX3N0cmluZywgImFwcGxpY2F0aW9uL21wNCIpID09IDApCisgICAgICAmJiBnc3RfbXBkX2NsaWVudF9hY3RpdmVfc3RyZWFtX2NvbnRhaW5zX3N1YnRpdGxlcyAoc3RyZWFtKSkKKyAgICBjYXBzX3N0cmluZyA9ICJ2aWRlby9xdWlja3RpbWUiOworCisgIGlmIChjYXBzX3N0cmluZykKKyAgICByZXQgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoY2Fwc19zdHJpbmcpOworCisgIHJldHVybiByZXQ7CiB9CiAKIGdib29sZWFuCkBAIC01MzM5LDYgKzU2ODQsNDYgQEAKICAgcmV0dXJuIGhlaWdodDsKIH0KIAorZ2Jvb2xlYW4KK2dzdF9tcGRfY2xpZW50X2dldF92aWRlb19zdHJlYW1fZnJhbWVyYXRlIChHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0sCisgICAgZ2ludCAqIGZwc19udW0sIGdpbnQgKiBmcHNfZGVuKQoreworICBpZiAoc3RyZWFtID09IE5VTEwpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGlmIChzdHJlYW0tPmN1cl9hZGFwdF9zZXQgJiYKKyAgICAgIHN0cmVhbS0+Y3VyX2FkYXB0X3NldC0+UmVwcmVzZW50YXRpb25CYXNlLT5mcmFtZVJhdGUgIT0gTlVMTCkgeworICAgICpmcHNfbnVtID0gc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5SZXByZXNlbnRhdGlvbkJhc2UtPmZyYW1lUmF0ZS0+bnVtOworICAgICpmcHNfZGVuID0gc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5SZXByZXNlbnRhdGlvbkJhc2UtPmZyYW1lUmF0ZS0+ZGVuOworICAgIHJldHVybiBUUlVFOworICB9CisKKyAgaWYgKHN0cmVhbS0+Y3VyX2FkYXB0X3NldCAmJgorICAgICAgc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5SZXByZXNlbnRhdGlvbkJhc2UtPm1heEZyYW1lUmF0ZSAhPSBOVUxMKSB7CisgICAgKmZwc19udW0gPSBzdHJlYW0tPmN1cl9hZGFwdF9zZXQtPlJlcHJlc2VudGF0aW9uQmFzZS0+bWF4RnJhbWVSYXRlLT5udW07CisgICAgKmZwc19kZW4gPSBzdHJlYW0tPmN1cl9hZGFwdF9zZXQtPlJlcHJlc2VudGF0aW9uQmFzZS0+bWF4RnJhbWVSYXRlLT5kZW47CisgICAgcmV0dXJuIFRSVUU7CisgIH0KKworICBpZiAoc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24gJiYKKyAgICAgIHN0cmVhbS0+Y3VyX3JlcHJlc2VudGF0aW9uLT5SZXByZXNlbnRhdGlvbkJhc2UtPmZyYW1lUmF0ZSAhPSBOVUxMKSB7CisgICAgKmZwc19udW0gPSBzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbi0+UmVwcmVzZW50YXRpb25CYXNlLT5mcmFtZVJhdGUtPm51bTsKKyAgICAqZnBzX2RlbiA9IHN0cmVhbS0+Y3VyX3JlcHJlc2VudGF0aW9uLT5SZXByZXNlbnRhdGlvbkJhc2UtPmZyYW1lUmF0ZS0+ZGVuOworICAgIHJldHVybiBUUlVFOworICB9CisKKyAgaWYgKHN0cmVhbS0+Y3VyX3JlcHJlc2VudGF0aW9uICYmCisgICAgICBzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbi0+UmVwcmVzZW50YXRpb25CYXNlLT5tYXhGcmFtZVJhdGUgIT0gTlVMTCkgeworICAgICpmcHNfbnVtID0KKyAgICAgICAgc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24tPlJlcHJlc2VudGF0aW9uQmFzZS0+bWF4RnJhbWVSYXRlLT5udW07CisgICAgKmZwc19kZW4gPQorICAgICAgICBzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbi0+UmVwcmVzZW50YXRpb25CYXNlLT5tYXhGcmFtZVJhdGUtPmRlbjsKKyAgICByZXR1cm4gVFJVRTsKKyAgfQorCisgIHJldHVybiBGQUxTRTsKK30KKwogZ3VpbnQKIGdzdF9tcGRfY2xpZW50X2dldF9hdWRpb19zdHJlYW1fcmF0ZSAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKQogewpAQCAtNTQwOSwxNCArNTc5NCwxNCBAQAogCiAKIEdzdERhdGVUaW1lICoKLWdzdF9tcGRfY2xpZW50X2dldF9uZXh0X3NlZ21lbnRfYXZhaWxhYmlsaXR5X2VuZF90aW1lIChHc3RNcGRDbGllbnQgKiBjbGllbnQsCitnc3RfbXBkX2NsaWVudF9nZXRfbmV4dF9zZWdtZW50X2F2YWlsYWJpbGl0eV9zdGFydF90aW1lIChHc3RNcGRDbGllbnQgKiBjbGllbnQsCiAgICAgR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKQogewogICBHc3REYXRlVGltZSAqYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUsICpydjsKICAgZ2ludCBzZWdfaWR4OwotICBHc3RDbG9ja1RpbWUgc2VnX2R1cmF0aW9uOwotICBnaW50NjQgb2Zmc2V0OwogICBHc3RTdHJlYW1QZXJpb2QgKnN0cmVhbV9wZXJpb2Q7CisgIEdzdE1lZGlhU2VnbWVudCAqc2VnbWVudDsKKyAgR3N0Q2xvY2tUaW1lIHNlZ21lbnRFbmRUaW1lOwogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjbGllbnQgIT0gTlVMTCwgTlVMTCk7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzdHJlYW0gIT0gTlVMTCwgTlVMTCk7CkBAIC01NDI0LDE3ICs1ODA5LDQwIEBACiAgIHN0cmVhbV9wZXJpb2QgPSBnc3RfbXBkcGFyc2VyX2dldF9zdHJlYW1fcGVyaW9kIChjbGllbnQpOwogCiAgIHNlZ19pZHggPSBzdHJlYW0tPnNlZ21lbnRfaW5kZXg7Ci0gIHNlZ19kdXJhdGlvbiA9IGdzdF9tcGRfY2xpZW50X2dldF9zZWdtZW50X2R1cmF0aW9uIChjbGllbnQsIHN0cmVhbSwgTlVMTCk7Ci0gIGlmIChzZWdfZHVyYXRpb24gPT0gMCkKLSAgICByZXR1cm4gTlVMTDsKKworICBpZiAoc3RyZWFtLT5zZWdtZW50cykgeworICAgIHNlZ21lbnQgPSBnX3B0cl9hcnJheV9pbmRleCAoc3RyZWFtLT5zZWdtZW50cywgc2VnX2lkeCk7CisKKyAgICBpZiAoc2VnbWVudC0+cmVwZWF0ID49IDApIHsKKyAgICAgIHNlZ21lbnRFbmRUaW1lID0gc2VnbWVudC0+c3RhcnQgKyAoc3RyZWFtLT5zZWdtZW50X3JlcGVhdF9pbmRleCArIDEpICoKKyAgICAgICAgICBzZWdtZW50LT5kdXJhdGlvbjsKKyAgICB9IGVsc2UgaWYgKHNlZ19pZHggPCBzdHJlYW0tPnNlZ21lbnRzLT5sZW4gLSAxKSB7CisgICAgICBjb25zdCBHc3RNZWRpYVNlZ21lbnQgKm5leHRfc2VnbWVudCA9CisgICAgICAgICAgZ19wdHJfYXJyYXlfaW5kZXggKHN0cmVhbS0+c2VnbWVudHMsIHNlZ19pZHggKyAxKTsKKyAgICAgIHNlZ21lbnRFbmRUaW1lID0gbmV4dF9zZWdtZW50LT5zdGFydDsKKyAgICB9IGVsc2UgeworICAgICAgY29uc3QgR3N0U3RyZWFtUGVyaW9kICpzdHJlYW1fcGVyaW9kOworICAgICAgc3RyZWFtX3BlcmlvZCA9IGdzdF9tcGRwYXJzZXJfZ2V0X3N0cmVhbV9wZXJpb2QgKGNsaWVudCk7CisgICAgICBzZWdtZW50RW5kVGltZSA9IHN0cmVhbV9wZXJpb2QtPnN0YXJ0ICsgc3RyZWFtX3BlcmlvZC0+ZHVyYXRpb247CisgICAgfQorICB9IGVsc2UgeworICAgIEdzdENsb2NrVGltZSBzZWdfZHVyYXRpb247CisgICAgc2VnX2R1cmF0aW9uID0gZ3N0X21wZF9jbGllbnRfZ2V0X3NlZ21lbnRfZHVyYXRpb24gKGNsaWVudCwgc3RyZWFtLCBOVUxMKTsKKyAgICBpZiAoc2VnX2R1cmF0aW9uID09IDApCisgICAgICByZXR1cm4gTlVMTDsKKyAgICBzZWdtZW50RW5kVGltZSA9ICgxICsgc2VnX2lkeCkgKiBzZWdfZHVyYXRpb247CisgIH0KKwogICBhdmFpbGFiaWxpdHlfc3RhcnRfdGltZSA9IGdzdF9tcGRfY2xpZW50X2dldF9hdmFpbGFiaWxpdHlfc3RhcnRfdGltZSAoY2xpZW50KTsKLSAgaWYgKGF2YWlsYWJpbGl0eV9zdGFydF90aW1lID09IE5VTEwpCi0gICAgcmV0dXJuIChHc3REYXRlVGltZSAqKSBOVUxMOworICBpZiAoYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUgPT0gTlVMTCkgeworICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoY2xpZW50LCAiRmFpbGVkIHRvIGdldCBhdmFpbGFiaWxpdHlfc3RhcnRfdGltZSIpOworICAgIHJldHVybiBOVUxMOworICB9CiAKICAgaWYgKHN0cmVhbV9wZXJpb2QgJiYgc3RyZWFtX3BlcmlvZC0+cGVyaW9kKSB7CiAgICAgR3N0RGF0ZVRpbWUgKnQgPQogICAgICAgICBnc3RfbXBkX2NsaWVudF9hZGRfdGltZV9kaWZmZXJlbmNlIChhdmFpbGFiaWxpdHlfc3RhcnRfdGltZSwKLSAgICAgICAgc3RyZWFtX3BlcmlvZC0+c3RhcnQgLyAxMDAwKTsKKyAgICAgICAgc3RyZWFtX3BlcmlvZC0+c3RhcnQgLyBHU1RfVVNFQ09ORCk7CiAgICAgZ3N0X2RhdGVfdGltZV91bnJlZiAoYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUpOwogICAgIGF2YWlsYWJpbGl0eV9zdGFydF90aW1lID0gdDsKIApAQCAtNTQ0NCw4NyArNTg1MiwzMSBAQAogICAgIH0KICAgfQogCi0gIG9mZnNldCA9ICgxICsgc2VnX2lkeCkgKiBzZWdfZHVyYXRpb247CiAgIHJ2ID0gZ3N0X21wZF9jbGllbnRfYWRkX3RpbWVfZGlmZmVyZW5jZSAoYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUsCi0gICAgICBvZmZzZXQgLyBHU1RfVVNFQ09ORCk7CisgICAgICBzZWdtZW50RW5kVGltZSAvIEdTVF9VU0VDT05EKTsKICAgZ3N0X2RhdGVfdGltZV91bnJlZiAoYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUpOworICBpZiAocnYgPT0gTlVMTCkgeworICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoY2xpZW50LCAiRmFpbGVkIHRvIG9mZnNldCBhdmFpbGFiaWxpdHlfc3RhcnRfdGltZSIpOworICAgIHJldHVybiBOVUxMOworICB9CisKICAgcmV0dXJuIHJ2OwogfQogCi1naW50Ci1nc3RfbXBkX2NsaWVudF9jaGVja190aW1lX3Bvc2l0aW9uIChHc3RNcGRDbGllbnQgKiBjbGllbnQsCi0gICAgR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtLCBHc3RDbG9ja1RpbWUgdHMsIGdpbnQ2NCAqIGRpZmYpCi17Ci0gIEdEYXRlVGltZSAqbm93ID0gZ19kYXRlX3RpbWVfbmV3X25vd191dGMgKCk7Ci0gIEdEYXRlVGltZSAqc3RhcnQgPQotICAgICAgZ3N0X2RhdGVfdGltZV90b19nX2RhdGVfdGltZSAoY2xpZW50LT5tcGRfbm9kZS0+YXZhaWxhYmlsaXR5U3RhcnRUaW1lKTsKLSAgR1RpbWVTcGFuIHN0cmVhbV9ub3c7Ci0gIEdUaW1lU3BhbiB0c19taWNyb3NlY29uZHM7Ci0gIEdzdENsb2NrVGltZSBkdXJhdGlvbjsKLQotICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ3N0X21wZF9jbGllbnRfaXNfbGl2ZSAoY2xpZW50KSwgMCk7Ci0KLSAgZHVyYXRpb24gPSBnc3RfbXBkX2NsaWVudF9nZXRfc2VnbWVudF9kdXJhdGlvbiAoY2xpZW50LCBzdHJlYW0sIE5VTEwpOwotICBzdHJlYW1fbm93ID0gZ19kYXRlX3RpbWVfZGlmZmVyZW5jZSAobm93LCBzdGFydCk7Ci0gIGdfZGF0ZV90aW1lX3VucmVmIChub3cpOwotICBnX2RhdGVfdGltZV91bnJlZiAoc3RhcnQpOwotCi0gIC8qIHN1bSBkdXJhdGlvbiB0byBjaGVjayBpZiB0aGUgc2VnbWVudCBpcyBmdWxseSByZWFkeSAqLwotICB0c19taWNyb3NlY29uZHMgPSAodHMgKyBkdXJhdGlvbikgLyBHU1RfVVNFQ09ORDsKLQotICAvKgotICAgKiBUaGlzIGZ1bmN0aW9ucyBjaGVja3MgaWYgYSBnaXZlbiB0cyBpcyBpbiB0aGUgJ2F2YWlsYWJsZSByYW5nZScgb2YKLSAgICogYSBEQVNIIHByZXNlbnRhdGlvbi4gVGhpcyBvbmx5IG1ha2VzIHNlbnNlIGZvciBsaXZlIHN0cmVhbXMsIHdoaWNoCi0gICAqIGFyZSBjb250aW51b3VzbHkgYWRkaW5nIG5ldyBzZWdtZW50cyBhbmQgcmVtb3Zpbmcgb2xkIG9uZXMuCi0gICAqCi0gICAqIE5vdGU6IEJvdGggdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlciBzaG91bGQgdXNlIFVUQyBhcyBhIHRpbWUgcmVmZXJlbmNlLgotICAgKgotICAgKiBAdHMgaXMgdGhlIHRpbWUgc2luY2UgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtIGFuZCB3ZSBuZWVkIHRvIGZpbmQgb3V0Ci0gICAqIGlmIGl0IGlzIGN1cnJlbnRseSBhdmFpbGFibGUuIFRoZSBzZXJ2ZXIgc2hvdWxkIGJlIGhvc3Rpbmcgc2VnbWVudHMKLSAgICoKLSAgICogKiAtLS0tLS0tLS0tLS0tLS0tIC4uLiAtLS0gKiAtLS0tLS0tLS0tLSAqIC0tLS0gLi4uCi0gICAqIHwKLSAgICogfCBwYXN0KHVuYXZhaWxhYmxlKSB8ICAgICAgfCBhdmFpbGFibGUgICB8IGZ1dHVyZSh1bmF2YWlsYWJsZSB5ZXQpCi0gICAqIHwKLSAgICogKiAtLS0tLS0tLS0tLS0tLS0tIC4uLiAtLS0gKiAtLS0tLS0tLS0tLSAqIC0tLS0gLi4uCi0gICAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfAotICAgKiBhdmFpbGFiaWxpdFN0YXJ0VGltZSAgICAgICB8ICAgICAgICAgICAgIFVUQyBub3cKLSAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRDIG5vdyAtIHRpbWVTaGlmdEJ1ZmZlckRlcHRoCi0gICAqCi0gICAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAwIGlmIEB0cyBpcyBpbiB0aGUgJ2F2YWlsYWJsZScgYXJlYSwgMSBmb3IKLSAgICogJ2Z1dHVyZScgYW5kICctMScgZm9yIHBhc3QgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRpc3RhbmNlIHRvIHRoZQotICAgKiAnYXZhaWxhYmxlJyBhcmVhIGlzIHNldCB0byBAZGlmZgotICAgKgotICAgKiBUT0RPIHVudGVzdGVkIHdpdGggbGl2ZSBwcmVzZW50YXRpb25zIHdpdGggbXVsdGlwbGUgcGVyaW9kcyBhcyBubwotICAgKiBleGFtcGxlcyBmb3IgaXQgY291bGQgYmUgZm91bmQvZ2VuZXJhdGVkCi0gICAqLwotCi0gIGlmICh0c19taWNyb3NlY29uZHMgPiBzdHJlYW1fbm93KSB7Ci0gICAgKmRpZmYgPSB0c19taWNyb3NlY29uZHMgLSBzdHJlYW1fbm93OwotICAgIHJldHVybiAxOwotICB9Ci0gIGlmIChjbGllbnQtPm1wZF9ub2RlLT50aW1lU2hpZnRCdWZmZXJEZXB0aCAhPSAtMQotICAgICAgJiYgdHNfbWljcm9zZWNvbmRzIDwKLSAgICAgIHN0cmVhbV9ub3cgLSBjbGllbnQtPm1wZF9ub2RlLT50aW1lU2hpZnRCdWZmZXJEZXB0aCkgewotICAgICpkaWZmID0gdHNfbWljcm9zZWNvbmRzIC0gc3RyZWFtX25vdzsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLQotICAqZGlmZiA9IDA7Ci0gIHJldHVybiAwOwotfQotCiBnYm9vbGVhbgogZ3N0X21wZF9jbGllbnRfc2Vla190b190aW1lIChHc3RNcGRDbGllbnQgKiBjbGllbnQsIEdEYXRlVGltZSAqIHRpbWUpCiB7Ci0gIEdEYXRlVGltZSAqc3RhcnQgPQotICAgICAgZ3N0X2RhdGVfdGltZV90b19nX2RhdGVfdGltZSAoY2xpZW50LT5tcGRfbm9kZS0+YXZhaWxhYmlsaXR5U3RhcnRUaW1lKTsKKyAgR0RhdGVUaW1lICpzdGFydDsKICAgR1RpbWVTcGFuIHRzX21pY3Jvc2Vjb25kczsKICAgR3N0Q2xvY2tUaW1lIHRzOwogICBnYm9vbGVhbiByZXQgPSBUUlVFOwogICBHTGlzdCAqc3RyZWFtOwogCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChnc3RfbXBkX2NsaWVudF9pc19saXZlIChjbGllbnQpLCAwKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGdzdF9tcGRfY2xpZW50X2lzX2xpdmUgKGNsaWVudCksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNsaWVudC0+bXBkX25vZGUtPmF2YWlsYWJpbGl0eVN0YXJ0VGltZSAhPSBOVUxMLCBGQUxTRSk7CisKKyAgc3RhcnQgPQorICAgICAgZ3N0X2RhdGVfdGltZV90b19nX2RhdGVfdGltZSAoY2xpZW50LT5tcGRfbm9kZS0+YXZhaWxhYmlsaXR5U3RhcnRUaW1lKTsKIAogICB0c19taWNyb3NlY29uZHMgPSBnX2RhdGVfdGltZV9kaWZmZXJlbmNlICh0aW1lLCBzdGFydCk7CiAgIGdfZGF0ZV90aW1lX3VucmVmIChzdGFydCk7CkBAIC01NTM1LDcgKzU4ODcsOSBAQAogCiAgIHRzID0gdHNfbWljcm9zZWNvbmRzICogR1NUX1VTRUNPTkQ7CiAgIGZvciAoc3RyZWFtID0gY2xpZW50LT5hY3RpdmVfc3RyZWFtczsgc3RyZWFtOyBzdHJlYW0gPSBnX2xpc3RfbmV4dCAoc3RyZWFtKSkgewotICAgIHJldCA9IHJldCAmIGdzdF9tcGRfY2xpZW50X3N0cmVhbV9zZWVrIChjbGllbnQsIHN0cmVhbS0+ZGF0YSwgdHMpOworICAgIHJldCA9CisgICAgICAgIHJldCAmIGdzdF9tcGRfY2xpZW50X3N0cmVhbV9zZWVrIChjbGllbnQsIHN0cmVhbS0+ZGF0YSwgVFJVRSwgMCwgdHMsCisgICAgICAgIE5VTEwpOwogICB9CiAgIHJldHVybiByZXQ7CiB9CkBAIC01NTUyLDMgKzU5MDYsNDMgQEAKIHsKICAgcmV0dXJuIGNsaWVudC0+cHJvZmlsZV9pc29mZl9vbmRlbWFuZDsKIH0KKworLyoqCisgKiBnc3RfbXBkX2NsaWVudF9wYXJzZV9kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheToKKyAqIEBjbGllbnQ6ICNHc3RNcGRDbGllbnQgdGhhdCBoYXMgYSBwYXJzZWQgbWFuaWZlc3QKKyAqIEBkZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheTogQSBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgYSB0aW1lIHBlcmlvZAorICogaW4gZnJhZ21lbnRzIChlLmcuICI1IGYiKSwgc2Vjb25kcyAoIjEyIHMiKSBvciBtaWxsaXNlY29uZHMKKyAqICgiMTIwMDAgbXMiKQorICogUmV0dXJuczogdGhlIHBhcnNlZCBzdHJpbmcgaW4gbWlsbGlzZWNvbmRzCisgKgorICogU2luY2U6IDEuNgorICovCitnaW50NjQKK2dzdF9tcGRfY2xpZW50X3BhcnNlX2RlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5IChHc3RNcGRDbGllbnQgKiBjbGllbnQsCisgICAgY29uc3QgZ2NoYXIgKiBkZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSkKK3sKKyAgZ2ludDY0IHZhbHVlOworICBjaGFyICplbmRwdHIgPSBOVUxMOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjbGllbnQgIT0gTlVMTCwgMCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSAhPSBOVUxMLCAwKTsKKyAgdmFsdWUgPSBzdHJ0b2wgKGRlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5LCAmZW5kcHRyLCAxMCk7CisgIGlmIChlbmRwdHIgPT0gZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkgfHwgdmFsdWUgPT0gMCkgeworICAgIHJldHVybiAwOworICB9CisgIHdoaWxlICgqZW5kcHRyID09ICcgJykKKyAgICBlbmRwdHIrKzsKKyAgaWYgKCplbmRwdHIgPT0gJ3MnIHx8ICplbmRwdHIgPT0gJ1MnKSB7CisgICAgdmFsdWUgKj0gMTAwMDsgICAgICAgICAgICAgIC8qIGNvbnZlcnQgdG8gbXMgKi8KKyAgfSBlbHNlIGlmICgqZW5kcHRyID09ICdmJyB8fCAqZW5kcHRyID09ICdGJykgeworICAgIGdpbnQ2NCBzZWdtZW50X2R1cmF0aW9uOworICAgIGdfYXNzZXJ0IChjbGllbnQtPm1wZF9ub2RlICE9IE5VTEwpOworICAgIHNlZ21lbnRfZHVyYXRpb24gPSBjbGllbnQtPm1wZF9ub2RlLT5tYXhTZWdtZW50RHVyYXRpb247CisgICAgdmFsdWUgKj0gc2VnbWVudF9kdXJhdGlvbjsKKyAgfSBlbHNlIGlmICgqZW5kcHRyICE9ICdtJyAmJiAqZW5kcHRyICE9ICdNJykgeworICAgIEdTVF9FUlJPUiAoIlVuYWJsZSB0byBwYXJzZSBkZWZhdWx0IHByZXNlbnRhdGlvbiBkZWxheTogJXMiLAorICAgICAgICBkZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSk7CisgICAgdmFsdWUgPSAwOworICB9CisgIHJldHVybiB2YWx1ZTsKK30KZGlmZiAtLWdpdCBhL2V4dC9kYXNoL2dzdG1wZHBhcnNlci5oIGIvZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmgKaW5kZXggMzY1NjliNS4uMWIzMDNhYSAxMDA2NDQKLS0tIGEvZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmgKKysrIGIvZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmgKQEAgLTY3LDYgKzY3LDggQEAKICNkZWZpbmUgR1NUX01QRF9DTElFTlRfTE9DSyhjKSBnX211dGV4X2xvY2sgKCZjLT5sb2NrKTsKICNkZWZpbmUgR1NUX01QRF9DTElFTlRfVU5MT0NLKGMpIGdfbXV0ZXhfdW5sb2NrICgmYy0+bG9jayk7CiAKKyNkZWZpbmUgR1NUX01QRF9EVVJBVElPTl9OT05FICgoZ3VpbnQ2NCktMSkKKwogdHlwZWRlZiBlbnVtCiB7CiAgIEdTVF9TVFJFQU1fVU5LTk9XTiwKQEAgLTIxOSw2ICsyMjEsOCBAQAogICBndWludCB3aWR0aDsKICAgZ3VpbnQgaGVpZ2h0OwogICBHc3RSYXRpbyAqc2FyOworICBHc3RGcmFtZVJhdGUgKm1pbkZyYW1lUmF0ZTsKKyAgR3N0RnJhbWVSYXRlICptYXhGcmFtZVJhdGU7CiAgIEdzdEZyYW1lUmF0ZSAqZnJhbWVSYXRlOwogICBnY2hhciAqYXVkaW9TYW1wbGluZ1JhdGU7CiAgIGdjaGFyICptaW1lVHlwZTsKQEAgLTMwNCw4ICszMDgsNiBAQAogICBndWludCBtYXhXaWR0aDsKICAgZ3VpbnQgbWluSGVpZ2h0OwogICBndWludCBtYXhIZWlnaHQ7Ci0gIEdzdEZyYW1lUmF0ZSAqbWluRnJhbWVSYXRlOwotICBHc3RGcmFtZVJhdGUgKm1heEZyYW1lUmF0ZTsKICAgR3N0Q29uZGl0aW9uYWxVaW50VHlwZSAqc2VnbWVudEFsaWdubWVudDsKICAgR3N0Q29uZGl0aW9uYWxVaW50VHlwZSAqc3Vic2VnbWVudEFsaWdubWVudDsKICAgR3N0U0FQVHlwZSBzdWJzZWdtZW50U3RhcnRzV2l0aFNBUDsKQEAgLTM0Niw4ICszNDgsOCBAQAogc3RydWN0IF9Hc3RQZXJpb2ROb2RlCiB7CiAgIGdjaGFyICppZDsKLSAgZ2ludDY0IHN0YXJ0OyAgICAgICAgICAgICAgICAgICAgICAvKiBbbXNdICovCi0gIGdpbnQ2NCBkdXJhdGlvbjsgICAgICAgICAgICAgICAgICAgLyogW21zXSAqLworICBndWludDY0IHN0YXJ0OyAgICAgICAgICAgICAgICAgICAgIC8qIFttc10gKi8KKyAgZ3VpbnQ2NCBkdXJhdGlvbjsgICAgICAgICAgICAgICAgICAvKiBbbXNdICovCiAgIGdib29sZWFuIGJpdHN0cmVhbVN3aXRjaGluZzsKICAgLyogU2VnbWVudEJhc2Ugbm9kZSAqLwogICBHc3RTZWdtZW50QmFzZVR5cGUgKlNlZ21lbnRCYXNlOwpAQCAtMzc4LDggKzM4MCw4IEBACiAKIHN0cnVjdCBfR3N0TWV0cmljc1JhbmdlTm9kZQogewotICBnaW50NjQgc3RhcnR0aW1lOyAgICAgICAgICAgICAgICAgIC8qIFttc10gKi8KLSAgZ2ludDY0IGR1cmF0aW9uOyAgICAgICAgICAgICAgICAgICAvKiBbbXNdICovCisgIGd1aW50NjQgc3RhcnR0aW1lOyAgICAgICAgICAgICAgICAgLyogW21zXSAqLworICBndWludDY0IGR1cmF0aW9uOyAgICAgICAgICAgICAgICAgIC8qIFttc10gKi8KIH07CiAKIHN0cnVjdCBfR3N0TWV0cmljc05vZGUKQEAgLTQwOCwxMyArNDEwLDEzIEBACiAgIEdzdE1QREZpbGVUeXBlIHR5cGU7CiAgIEdzdERhdGVUaW1lICphdmFpbGFiaWxpdHlTdGFydFRpbWU7CiAgIEdzdERhdGVUaW1lICphdmFpbGFiaWxpdHlFbmRUaW1lOwotICBnaW50NjQgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbjsgIC8qIFttc10gKi8KLSAgZ2ludDY0IG1pbmltdW1VcGRhdGVQZXJpb2Q7ICAgICAgICAvKiBbbXNdICovCi0gIGdpbnQ2NCBtaW5CdWZmZXJUaW1lOyAgICAgICAgICAgICAgLyogW21zXSAqLwotICBnaW50NjQgdGltZVNoaWZ0QnVmZmVyRGVwdGg7ICAgICAgIC8qIFttc10gKi8KLSAgZ2ludDY0IHN1Z2dlc3RlZFByZXNlbnRhdGlvbkRlbGF5OyAvKiBbbXNdICovCi0gIGdpbnQ2NCBtYXhTZWdtZW50RHVyYXRpb247ICAgICAgICAgLyogW21zXSAqLwotICBnaW50NjQgbWF4U3Vic2VnbWVudER1cmF0aW9uOyAgICAgIC8qIFttc10gKi8KKyAgZ3VpbnQ2NCBtZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uOyAgLyogW21zXSAqLworICBndWludDY0IG1pbmltdW1VcGRhdGVQZXJpb2Q7ICAgICAgICAvKiBbbXNdICovCisgIGd1aW50NjQgbWluQnVmZmVyVGltZTsgICAgICAgICAgICAgIC8qIFttc10gKi8KKyAgZ3VpbnQ2NCB0aW1lU2hpZnRCdWZmZXJEZXB0aDsgICAgICAgLyogW21zXSAqLworICBndWludDY0IHN1Z2dlc3RlZFByZXNlbnRhdGlvbkRlbGF5OyAvKiBbbXNdICovCisgIGd1aW50NjQgbWF4U2VnbWVudER1cmF0aW9uOyAgICAgICAgIC8qIFttc10gKi8KKyAgZ3VpbnQ2NCBtYXhTdWJzZWdtZW50RHVyYXRpb247ICAgICAgLyogW21zXSAqLwogICAvKiBsaXN0IG9mIEJhc2VVUkwgbm9kZXMgKi8KICAgR0xpc3QgKkJhc2VVUkxzOwogICAvKiBsaXN0IG9mIExvY2F0aW9uIG5vZGVzICovCkBAIC00NTIsOCArNDU0LDggQEAKICAgR3N0U2VnbWVudFVSTE5vZGUgKlNlZ21lbnRVUkw7ICAgICAgICAgICAgICAvKiB0aGlzIGlzIE5VTEwgd2hlbiB1c2luZyBhIFNlZ21lbnRUZW1wbGF0ZSAqLwogICBndWludCBudW1iZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlZ21lbnQgbnVtYmVyICovCiAgIGdpbnQgcmVwZWF0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGV4dHJhIHJlcGV0aXRpb25zICgwID0gcGxheWVkIG9ubHkgb25jZSkgKi8KLSAgZ2ludDY0IHNjYWxlX3N0YXJ0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdGFydCB0aW1lIGluIHRpbWVzY2FsZSB1bml0cyAqLwotICBnaW50NjQgc2NhbGVfZHVyYXRpb247ICAgICAgICAgICAgICAgICAgICAgIC8qIGR1cmF0aW9uIGluIHRpbWVzY2FsZSB1bml0cyAqLworICBndWludDY0IHNjYWxlX3N0YXJ0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0IHRpbWUgaW4gdGltZXNjYWxlIHVuaXRzICovCisgIGd1aW50NjQgc2NhbGVfZHVyYXRpb247ICAgICAgICAgICAgICAgICAgICAgLyogZHVyYXRpb24gaW4gdGltZXNjYWxlIHVuaXRzICovCiAgIEdzdENsb2NrVGltZSBzdGFydDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VnbWVudCBzdGFydCB0aW1lICovCiAgIEdzdENsb2NrVGltZSBkdXJhdGlvbjsgICAgICAgICAgICAgICAgICAgICAgLyogc2VnbWVudCBkdXJhdGlvbiAqLwogfTsKQEAgLTU0Miw5ICs1NDQsOCBAQAogZ2Jvb2xlYW4gZ3N0X21wZF9jbGllbnRfZ2V0X25leHRfaGVhZGVyIChHc3RNcGRDbGllbnQgKmNsaWVudCwgZ2NoYXIgKip1cmksIGd1aW50IHN0cmVhbV9pZHgsIGdpbnQ2NCAqIHJhbmdlX3N0YXJ0LCBnaW50NjQgKiByYW5nZV9lbmQpOwogZ2Jvb2xlYW4gZ3N0X21wZF9jbGllbnRfZ2V0X25leHRfaGVhZGVyX2luZGV4IChHc3RNcGRDbGllbnQgKmNsaWVudCwgZ2NoYXIgKip1cmksIGd1aW50IHN0cmVhbV9pZHgsIGdpbnQ2NCAqIHJhbmdlX3N0YXJ0LCBnaW50NjQgKiByYW5nZV9lbmQpOwogZ2Jvb2xlYW4gZ3N0X21wZF9jbGllbnRfaXNfbGl2ZSAoR3N0TXBkQ2xpZW50ICogY2xpZW50KTsKLWdib29sZWFuIGdzdF9tcGRfY2xpZW50X3N0cmVhbV9zZWVrIChHc3RNcGRDbGllbnQgKiBjbGllbnQsIEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSwgR3N0Q2xvY2tUaW1lIHRzKTsKK2dib29sZWFuIGdzdF9tcGRfY2xpZW50X3N0cmVhbV9zZWVrIChHc3RNcGRDbGllbnQgKiBjbGllbnQsIEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSwgZ2Jvb2xlYW4gZm9yd2FyZCwgR3N0U2Vla0ZsYWdzIGZsYWdzLCBHc3RDbG9ja1RpbWUgdHMsIEdzdENsb2NrVGltZSAqIGZpbmFsX3RzKTsKIGdib29sZWFuIGdzdF9tcGRfY2xpZW50X3NlZWtfdG9fdGltZSAoR3N0TXBkQ2xpZW50ICogY2xpZW50LCBHRGF0ZVRpbWUgKiB0aW1lKTsKLWdpbnQgZ3N0X21wZF9jbGllbnRfY2hlY2tfdGltZV9wb3NpdGlvbiAoR3N0TXBkQ2xpZW50ICogY2xpZW50LCBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0sIEdzdENsb2NrVGltZSB0cywgZ2ludDY0ICogZGlmZik7CiBHc3RDbG9ja1RpbWUgZ3N0X21wZF9wYXJzZXJfZ2V0X3N0cmVhbV9wcmVzZW50YXRpb25fb2Zmc2V0IChHc3RNcGRDbGllbnQgKmNsaWVudCwgZ3VpbnQgc3RyZWFtX2lkeCk7CiBnY2hhcioqIGdzdF9tcGRfY2xpZW50X2dldF91dGNfdGltaW5nX3NvdXJjZXMgKEdzdE1wZENsaWVudCAqY2xpZW50LCBndWludCBtZXRob2RzLCBHc3RNUERVVENUaW1pbmdUeXBlICpzZWxlY3RlZF9tZXRob2QpOwogR3N0Q2xvY2tUaW1lIGdzdF9tcGRfcGFyc2VyX2dldF9wZXJpb2Rfc3RhcnRfdGltZSAoR3N0TXBkQ2xpZW50ICpjbGllbnQpOwpAQCAtNTY0LDExICs1NjUsMTEgQEAKIAogLyogVVJMIG1hbmFnZW1lbnQgKi8KIGNvbnN0IGdjaGFyICpnc3RfbXBkcGFyc2VyX2dldF9iYXNlVVJMIChHc3RNcGRDbGllbnQgKmNsaWVudCwgZ3VpbnQgaW5kZXhTdHJlYW0pOwotZ2Jvb2xlYW4gZ3N0X21wZHBhcnNlcl9nZXRfY2h1bmtfYnlfaW5kZXggKEdzdE1wZENsaWVudCAqY2xpZW50LCBndWludCBpbmRleFN0cmVhbSwgZ3VpbnQgaW5kZXhDaHVuaywgR3N0TWVkaWFTZWdtZW50ICogc2VnbWVudCk7CiAKIC8qIEFjdGl2ZSBzdHJlYW0gKi8KIGd1aW50IGdzdF9tcGRwYXJzZXJfZ2V0X25iX2FjdGl2ZV9zdHJlYW0gKEdzdE1wZENsaWVudCAqY2xpZW50KTsKIEdzdEFjdGl2ZVN0cmVhbSAqZ3N0X21wZHBhcnNlcl9nZXRfYWN0aXZlX3N0cmVhbV9ieV9pbmRleCAoR3N0TXBkQ2xpZW50ICpjbGllbnQsIGd1aW50IHN0cmVhbV9pZHgpOworZ2Jvb2xlYW4gZ3N0X21wZF9jbGllbnRfYWN0aXZlX3N0cmVhbV9jb250YWluc19zdWJ0aXRsZXMgKEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSk7CiAKIC8qIEFkYXB0YXRpb25TZXQgKi8KIGd1aW50IGdzdF9tcGRwYXJzZXJfZ2V0X25iX2FkYXB0YXRpb25TZXQgKEdzdE1wZENsaWVudCAqY2xpZW50KTsKQEAgLTU3OCwxMyArNTc5LDE0IEBACiBnYm9vbGVhbiBnc3RfbXBkX2NsaWVudF9oYXNfbmV4dF9zZWdtZW50IChHc3RNcGRDbGllbnQgKiBjbGllbnQsIEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSwgZ2Jvb2xlYW4gZm9yd2FyZCk7CiBHc3RGbG93UmV0dXJuIGdzdF9tcGRfY2xpZW50X2FkdmFuY2Vfc2VnbWVudCAoR3N0TXBkQ2xpZW50ICogY2xpZW50LCBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0sIGdib29sZWFuIGZvcndhcmQpOwogdm9pZCBnc3RfbXBkX2NsaWVudF9zZWVrX3RvX2ZpcnN0X3NlZ21lbnQgKEdzdE1wZENsaWVudCAqIGNsaWVudCk7Ci1Hc3REYXRlVGltZSAqZ3N0X21wZF9jbGllbnRfZ2V0X25leHRfc2VnbWVudF9hdmFpbGFiaWxpdHlfZW5kX3RpbWUgKEdzdE1wZENsaWVudCAqIGNsaWVudCwgR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKTsKK0dzdERhdGVUaW1lICpnc3RfbXBkX2NsaWVudF9nZXRfbmV4dF9zZWdtZW50X2F2YWlsYWJpbGl0eV9zdGFydF90aW1lIChHc3RNcGRDbGllbnQgKiBjbGllbnQsIEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSk7CiAKLS8qIEdldCBhdWRpby92aWRlbyBzdHJlYW0gcGFyYW1ldGVycyAobWltZVR5cGUsIHdpZHRoLCBoZWlnaHQsIHJhdGUsIG51bWJlciBvZiBjaGFubmVscykgKi8KLWNvbnN0IGdjaGFyICpnc3RfbXBkX2NsaWVudF9nZXRfc3RyZWFtX21pbWVUeXBlIChHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0pOworLyogR2V0IGF1ZGlvL3ZpZGVvIHN0cmVhbSBwYXJhbWV0ZXJzIChjYXBzLCB3aWR0aCwgaGVpZ2h0LCByYXRlLCBudW1iZXIgb2YgY2hhbm5lbHMpICovCitHc3RDYXBzICogZ3N0X21wZF9jbGllbnRfZ2V0X3N0cmVhbV9jYXBzIChHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0pOwogZ2Jvb2xlYW4gZ3N0X21wZF9jbGllbnRfZ2V0X2JpdHN0cmVhbV9zd2l0Y2hpbmdfZmxhZyAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKTsKIGd1aW50IGdzdF9tcGRfY2xpZW50X2dldF92aWRlb19zdHJlYW1fd2lkdGggKEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSk7CiBndWludCBnc3RfbXBkX2NsaWVudF9nZXRfdmlkZW9fc3RyZWFtX2hlaWdodCAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKTsKK2dib29sZWFuIGdzdF9tcGRfY2xpZW50X2dldF92aWRlb19zdHJlYW1fZnJhbWVyYXRlIChHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0sIGdpbnQgKiBmcHNfbnVtLCBnaW50ICogZnBzX2Rlbik7CiBndWludCBnc3RfbXBkX2NsaWVudF9nZXRfYXVkaW9fc3RyZWFtX3JhdGUgKEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSk7CiBndWludCBnc3RfbXBkX2NsaWVudF9nZXRfYXVkaW9fc3RyZWFtX251bV9jaGFubmVscyAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKTsKIApAQCAtNTkzLDYgKzU5NSw3IEBACiAKIGdpbnQ2NCBnc3RfbXBkX2NsaWVudF9jYWxjdWxhdGVfdGltZV9kaWZmZXJlbmNlIChjb25zdCBHc3REYXRlVGltZSAqIHQxLCBjb25zdCBHc3REYXRlVGltZSAqIHQyKTsKIEdzdERhdGVUaW1lICpnc3RfbXBkX2NsaWVudF9hZGRfdGltZV9kaWZmZXJlbmNlIChHc3REYXRlVGltZSAqIHQxLCBnaW50NjQgdXNlY3MpOworZ2ludDY0IGdzdF9tcGRfY2xpZW50X3BhcnNlX2RlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5KEdzdE1wZENsaWVudCAqIGNsaWVudCwgY29uc3QgZ2NoYXIgKiBkZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSk7CiAKIC8qIHByb2ZpbGVzICovCiBnYm9vbGVhbiBnc3RfbXBkX2NsaWVudF9oYXNfaXNvZmZfb25kZW1hbmRfcHJvZmlsZSAoR3N0TXBkQ2xpZW50ICpjbGllbnQpOwpkaWZmIC0tZ2l0IGEvZXh0L2RjMTM5NC9NYWtlZmlsZS5pbiBiL2V4dC9kYzEzOTQvTWFrZWZpbGUuaW4KaW5kZXggMmZmOWY5OC4uN2EyMTczYiAxMDA2NDQKLS0tIGEvZXh0L2RjMTM5NC9NYWtlZmlsZS5pbgorKysgYi9leHQvZGMxMzk0L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2RpcmVjdGZiL01ha2VmaWxlLmluIGIvZXh0L2RpcmVjdGZiL01ha2VmaWxlLmluCmluZGV4IDA0NjIzNDguLjdhYTJlM2IgMTAwNjQ0Ci0tLSBhL2V4dC9kaXJlY3RmYi9NYWtlZmlsZS5pbgorKysgYi9leHQvZGlyZWN0ZmIvTWFrZWZpbGUuaW4KQEAgLTExOCwxNiArMTE4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjg0LDYgKzI4Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzIxLDYgKzMyMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI5LDcgKzMzMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0OCw4ICszNTAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzY2LDE2ICszNjksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDAxLDYgKzQwNSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyNiw2ICs0MzIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjcsNiArNTM1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU0MCw4ICs1NDksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTcsNiArNTY0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxNCwxNiArNjIzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODUsNiArNjk3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjk0LDYgKzcwNyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MzEsNyArNzQ2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvZGlyZWN0ZmIvZGZidmlkZW9zaW5rLmMgYi9leHQvZGlyZWN0ZmIvZGZidmlkZW9zaW5rLmMKaW5kZXggMjJkZDNkNy4uZGI4ZWYxNyAxMDA2NDQKLS0tIGEvZXh0L2RpcmVjdGZiL2RmYnZpZGVvc2luay5jCisrKyBiL2V4dC9kaXJlY3RmYi9kZmJ2aWRlb3NpbmsuYwpAQCAtMjksNyArMjksNyBAQAogICogICA8cGFyYT4KICAqICAgU3RhbmRhbG9uZTogdGhpcyBtb2RlIHdpbGwgdGFrZSBjb21wbGV0ZSBjb250cm9sIG9mIHRoZSBtb25pdG9yIGZvcmNpbmcKICAqICAgPHVsaW5rIHVybD0iaHR0cDovL3d3dy5kaXJlY3RmYi5vcmcvIj5EaXJlY3RGQjwvdWxpbms+IHRvIGZ1bGxzY3JlZW4gbGF5b3V0LgotICogICBUaGlzIGlzIGNvbnZlbmllbnQgdG8gdGVzdCB1c2luZyB0aGUgIGdzdC1sYXVuY2ggY29tbWFuZCBsaW5lIHRvb2wgb3IKKyAqICAgVGhpcyBpcyBjb252ZW5pZW50IHRvIHRlc3QgdXNpbmcgdGhlICBnc3QtbGF1bmNoLTEuMCBjb21tYW5kIGxpbmUgdG9vbCBvcgogICogICBvdGhlciBzaW1wbGUgYXBwbGljYXRpb25zLiBJdCBpcyBwb3NzaWJsZSB0byBpbnRlcnJ1cHQgcGxheWJhY2sgd2hpbGUKICAqICAgYmVpbmcgaW4gdGhpcyBtb2RlIGJ5IHByZXNzaW5nIHRoZSBFc2NhcGUga2V5LgogICogICA8L3BhcmE+CkBAIC03Nyw3ICs3Nyw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgZGZidmlkZW9zaW5rIGh1ZT0yMDAwMCBzYXR1cmF0aW9uPTQwMDAwIGJyaWdodG5lc3M9MjUwMDAKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIGRmYnZpZGVvc2luayBodWU9MjAwMDAgc2F0dXJhdGlvbj00MDAwMCBicmlnaHRuZXNzPTI1MDAwCiAgKiBdfCB0ZXN0IHRoZSBjb2xvcmJhbGFuY2UgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIGluIGRmYnZpZGVvc2luawogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZXh0L2R0bHMvTWFrZWZpbGUuaW4gYi9leHQvZHRscy9NYWtlZmlsZS5pbgppbmRleCBmODYwYWM3Li4yNGEwZWY2IDEwMDY0NAotLS0gYS9leHQvZHRscy9NYWtlZmlsZS5pbgorKysgYi9leHQvZHRscy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yODEsNiArMjgwLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTgsNiArMzE5LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjYsNyArMzI5LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ1LDggKzM0Nyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjMsMTYgKzM2NiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTgsNiArNDAyLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIzLDYgKzQyOSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNCw2ICs1MzIsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM3LDggKzU0Niw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1NCw2ICs1NjEsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjExLDE2ICs2MjAsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzIsNiArNjgzLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4Miw2ICs2OTQsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTEsNiArNzA0LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyOCw3ICs3NDMsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9kdGxzL2dzdGR0bHNkZWMuYyBiL2V4dC9kdGxzL2dzdGR0bHNkZWMuYwppbmRleCBlZWNjNDU4Li5mMDViNGYxIDEwMDY0NAotLS0gYS9leHQvZHRscy9nc3RkdGxzZGVjLmMKKysrIGIvZXh0L2R0bHMvZ3N0ZHRsc2RlYy5jCkBAIC01NjksNyArNTY5LDggQEAKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CiAgIH0KIAotICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAicmVjZWl2ZWQgYnVmZmVyIGZyb20gJXMgd2l0aCBsZW5ndGggJSIgR19HU0laRV9GT1JNQVQsCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsCisgICAgICAicmVjZWl2ZWQgYnVmZmVyIGZyb20gJXMgd2l0aCBsZW5ndGggJSIgR19HU0laRV9GT1JNQVQsCiAgICAgICBzZWxmLT5jb25uZWN0aW9uX2lkLCBnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpKTsKIAogICBidWZmZXIgPSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUgKGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9leHQvZHRzL01ha2VmaWxlLmluIGIvZXh0L2R0cy9NYWtlZmlsZS5pbgppbmRleCA0MmFkMzY1Li42OGU3ODljIDEwMDY0NAotLS0gYS9leHQvZHRzL01ha2VmaWxlLmluCisrKyBiL2V4dC9kdHMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvZHRzL2dzdGR0c2RlYy5jIGIvZXh0L2R0cy9nc3RkdHNkZWMuYwppbmRleCBjMWYxMmM1Li43NjdiNmJmIDEwMDY0NAotLS0gYS9leHQvZHRzL2dzdGR0c2RlYy5jCisrKyBiL2V4dC9kdHMvZ3N0ZHRzZGVjLmMKQEAgLTI2LDEwICsyNiwxMCBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZHZkcmVhZHNyYyB0aXRsZT0xICEgbXBlZ3BzZGVtdXggISBkdHNkZWMgISBhdWRpb3Jlc2FtcGxlICEgYXVkaW9jb252ZXJ0ICEgYWxzYXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGR2ZHJlYWRzcmMgdGl0bGU9MSAhIG1wZWdwc2RlbXV4ICEgZHRzZGVjICEgYXVkaW9yZXNhbXBsZSAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rCiAgKiBdfCBQbGF5IGEgRFRTIGF1ZGlvIHRyYWNrIGZyb20gYSBkdmQuCiAgKiB8WwotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPWFiYy5kdHMgISBkdHNkZWMgISBhdWRpb3Jlc2FtcGxlICEgYXVkaW9jb252ZXJ0ICEgYWxzYXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249YWJjLmR0cyAhIGR0c2RlYyAhIGF1ZGlvcmVzYW1wbGUgISBhdWRpb2NvbnZlcnQgISBhbHNhc2luawogICogXXwgRGVjb2RlIGEgc3RhbmRhbG9uZSBmaWxlIGFuZCBwbGF5IGl0LgogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZXh0L2ZhYWMvTWFrZWZpbGUuaW4gYi9leHQvZmFhYy9NYWtlZmlsZS5pbgppbmRleCA3NDhlYzYyLi43ZTNkNzBiIDEwMDY0NAotLS0gYS9leHQvZmFhYy9NYWtlZmlsZS5pbgorKysgYi9leHQvZmFhYy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9mYWFjL2dzdGZhYWMuYyBiL2V4dC9mYWFjL2dzdGZhYWMuYwppbmRleCBhNGE3YzM2Li42ODA0Y2JmIDEwMDY0NAotLS0gYS9leHQvZmFhYy9nc3RmYWFjLmMKKysrIGIvZXh0L2ZhYWMvZ3N0ZmFhYy5jCkBAIC0yNyw3ICsyNyw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBhdWRpb3Rlc3RzcmMgd2F2ZT1zaW5lIG51bS1idWZmZXJzPTEwMCAhIGF1ZGlvY29udmVydCAhIGZhYWMgISBtYXRyb3NrYW11eCAhIGZpbGVzaW5rIGxvY2F0aW9uPXNpbmUubWt2CisgKiBnc3QtbGF1bmNoLTEuMCBhdWRpb3Rlc3RzcmMgd2F2ZT1zaW5lIG51bS1idWZmZXJzPTEwMCAhIGF1ZGlvY29udmVydCAhIGZhYWMgISBtYXRyb3NrYW11eCAhIGZpbGVzaW5rIGxvY2F0aW9uPXNpbmUubWt2CiAgKiBdfCBFbmNvZGUgYSBzaW5lIGJlZXAgYXMgYWFjIGFuZCB3cml0ZSB0byBtYXRyb3NrYSBjb250YWluZXIuCiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC0xODksNiArMTg5LDggQEAKICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2ZhYWNfc2V0X3Byb3BlcnR5OwogICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfZmFhY19nZXRfcHJvcGVydHk7CiAKKyAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGZhYWNfZGVidWcsICJmYWFjIiwgMCwgIkFBQyBlbmNvZGluZyIpOworCiAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCiAgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzcmNfdGVtcGxhdGUpKTsKIApAQCAtMjM2LDggKzIzOCw2IEBACiAgICAgICAgICAgIkJsb2NrIHR5cGUgZW5jb3JjaW5nIiwKICAgICAgICAgICBHU1RfVFlQRV9GQUFDX1NIT1JUQ1RMLCBGQUFDX0RFRkFVTFRfU0hPUlRDVEwsCiAgICAgICAgICAgR19QQVJBTV9DT05TVFJVQ1QgfCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLQotICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZmFhY19kZWJ1ZywgImZhYWMiLCAwLCAiQUFDIGVuY29kaW5nIik7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS9leHQvZmFhZC9NYWtlZmlsZS5hbSBiL2V4dC9mYWFkL01ha2VmaWxlLmFtCmluZGV4IDJhZWYxODMuLjU2YWQzMGYgMTAwNjQ0Ci0tLSBhL2V4dC9mYWFkL01ha2VmaWxlLmFtCisrKyBiL2V4dC9mYWFkL01ha2VmaWxlLmFtCkBAIC0xLDExICsxLDExIEBACiBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RmYWFkLmxhCiAKIGxpYmdzdGZhYWRfbGFfU09VUkNFUyA9IGdzdGZhYWQuYwotbGliZ3N0ZmFhZF9sYV9DRkxBR1MgPSAtREdTVF9VU0VfVU5TVEFCTEVfQVBJIFwKK2xpYmdzdGZhYWRfbGFfQ0ZMQUdTID0gXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKIAkkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEZBQURfQ0ZMQUdTKQogbGliZ3N0ZmFhZF9sYV9MSUJBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKEZBQURfTElCUykKKwkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoRkFBRF9MSUJTKSAkKExJQk0pCiBsaWJnc3RmYWFkX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdGZhYWRfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKIApkaWZmIC0tZ2l0IGEvZXh0L2ZhYWQvTWFrZWZpbGUuaW4gYi9leHQvZmFhZC9NYWtlZmlsZS5pbgppbmRleCA3OGI3OGVlLi5iNDlkODYyIDEwMDY0NAotLS0gYS9leHQvZmFhZC9NYWtlZmlsZS5pbgorKysgYi9leHQvZmFhZC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xNjYsNyArMTY1LDcgQEAKIGFtX19ERVBFTkRFTkNJRVNfMSA9CiBsaWJnc3RmYWFkX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJChhbV9fREVQRU5ERU5DSUVTXzEpCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKQogYW1fbGliZ3N0ZmFhZF9sYV9PQkpFQ1RTID0gbGliZ3N0ZmFhZF9sYS1nc3RmYWFkLmxvCiBsaWJnc3RmYWFkX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdGZhYWRfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzY0LDEyICs3NzgsMTIgQEAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACiBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RmYWFkLmxhCiBsaWJnc3RmYWFkX2xhX1NPVVJDRVMgPSBnc3RmYWFkLmMKLWxpYmdzdGZhYWRfbGFfQ0ZMQUdTID0gLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCitsaWJnc3RmYWFkX2xhX0NGTEFHUyA9IFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiAJJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChGQUFEX0NGTEFHUykKIAogbGliZ3N0ZmFhZF9sYV9MSUJBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKEZBQURfTElCUykKKwkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoRkFBRF9MSUJTKSAkKExJQk0pCiAKIGxpYmdzdGZhYWRfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQogbGliZ3N0ZmFhZF9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQpkaWZmIC0tZ2l0IGEvZXh0L2ZhYWQvZ3N0ZmFhZC5jIGIvZXh0L2ZhYWQvZ3N0ZmFhZC5jCmluZGV4IDY1YTNmODkuLmI3MmI0MmQgMTAwNjQ0Ci0tLSBhL2V4dC9mYWFkL2dzdGZhYWQuYworKysgYi9leHQvZmFhZC9nc3RmYWFkLmMKQEAgLTI3LDEwICsyNywxMCBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249ZXhhbXBsZS5tcDQgISBxdGRlbXV4ICEgZmFhZCAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBhdXRvYXVkaW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPWV4YW1wbGUubXA0ICEgcXRkZW11eCAhIGZhYWQgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgYXV0b2F1ZGlvc2luawogICogXXwgUGxheSBhYWMgZnJvbSBtcDQgZmlsZS4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249ZXhhbXBsZS5hZHRzICEgZmFhZCAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBhdXRvYXVkaW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPWV4YW1wbGUuYWR0cyAhIGZhYWQgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgYXV0b2F1ZGlvc2luawogICogXXwgUGxheSBzdGFuZGFsb25lIGFhYyBiaXRzdHJlYW0uCiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC00Miw0OSArNDIsOCBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogCi0vKiBUaGVzZSBhcmUgdGhlIGNvcnJlY3QgdHlwZXMgZm9yIHRoZXNlIGZ1bmN0aW9ucywgYXMgZGVmaW5lZCBpbiB0aGUgc291cmNlLAotICogd2l0aCB0eXBlcyBjaGFuZ2VkIHRvIG1hdGNoIGdsaWIgdHlwZXMsIHNpbmNlIHRob3NlIGFyZSBkZWZpbmVkIGZvciB1cy4KLSAqIEhvd2V2ZXIsIHVwc3RyZWFtIEZBQUQgaXMgZGlzdHJpYnV0ZWQgd2l0aCBhIGJyb2tlbiBoZWFkZXIgZmlsZSB0aGF0IGRlZmluZWQKLSAqIHRoZXNlIHdyb25nbHkgKGluIGEgd2F5IHdoaWNoIHdhcyBicm9rZW4gb24gNjQgYml0IHN5c3RlbXMpLgotICoKLSAqIFVwc3RyZWFtIENWUyBzdGlsbCBoYXMgdGhlIGJ1ZywgYnV0IGhhcyBhbHNvIHJlbmFtZWQgYWxsIHRoZSBwdWJsaWMgc3ltYm9scwotICogZm9yIEJldHRlciBDb3Jwb3JhdGUgQnJhbmRpbmcgKG9yIHdoYXRldmVyKSwgc28gd2UgbmVlZCB0byB0YWtlIHRoYXQKLSAqIChGQUFEX0lTX05FQUFDKSBpbnRvIGFjY291bnQgYXMgd2VsbC4KLSAqCi0gKiBXZSBtdXN0IGNhbGwgdGhlbSB1c2luZyB0aGVzZSBkZWZpbml0aW9ucy4gTW9zdCBkaXN0cmlidXRpb25zIG5vdyBoYXZlIHRoZQotICogY29ycmVjdGVkIGhlYWRlciBmaWxlICh0aGV5IGRpc3RyaWJ1dGUgYSBwYXRjaCBhbG9uZyB3aXRoIHRoZSBzb3VyY2UpLCAKLSAqIGJ1dCBub3QgYWxsLCBoZW5jZSB0aGlzIFRydWx5IEV2aWwgSGFjay4KLSAqCi0gKiBOb3RlOiBUaGUgcHJvdG90eXBlcyBkb24ndCBuZWVkIHRvIGJlIGRlZmluZWQgY29uZGl0aW9uYWx5LCBhcyB0aGUgY3BwIHdpbGwKLSAqIGRvIHRoYXQgZm9yIHVzLgotICovCi0jaWYgRkFBRDJfTUlOT1JfVkVSU0lPTiA8IDcKLSNpZmRlZiBGQUFEX0lTX05FQUFDCi0jZGVmaW5lIE5lQUFDRGVjSW5pdCBOZUFBQ0RlY0luaXRfbm9fZGVmaW5pdGlvbgotI2RlZmluZSBOZUFBQ0RlY0luaXQyIE5lQUFDRGVjSW5pdDJfbm9fZGVmaW5pdGlvbgotI2Vsc2UKLSNkZWZpbmUgZmFhY0RlY0luaXQgZmFhY0RlY0luaXRfbm9fZGVmaW5pdGlvbgotI2RlZmluZSBmYWFjRGVjSW5pdDIgZmFhY0RlY0luaXQyX25vX2RlZmluaXRpb24KLSNlbmRpZgotI2VuZGlmIC8qIEZBQUQyX01JTk9SX1ZFUlNJT04gPCA3ICovCi0KICNpbmNsdWRlICJnc3RmYWFkLmgiCiAKLSNpZiBGQUFEMl9NSU5PUl9WRVJTSU9OIDwgNwotI2lmZGVmIEZBQURfSVNfTkVBQUMKLSN1bmRlZiBOZUFBQ0RlY0luaXQKLSN1bmRlZiBOZUFBQ0RlY0luaXQyCi0jZWxzZQotI3VuZGVmIGZhYWNEZWNJbml0Ci0jdW5kZWYgZmFhY0RlY0luaXQyCi0jZW5kaWYKLQotZXh0ZXJuIGxvbmcgZmFhY0RlY0luaXQgKGZhYWNEZWNIYW5kbGUsIGd1aW50OCAqLCBndWludDMyLCBndWludDMyICosIGd1aW50OCAqKTsKLWV4dGVybiBnaW50OCBmYWFjRGVjSW5pdDIgKGZhYWNEZWNIYW5kbGUsIGd1aW50OCAqLCBndWludDMyLAotICAgIGd1aW50MzIgKiwgZ3VpbnQ4ICopOwotCi0jZW5kaWYgLyogRkFBRDJfTUlOT1JfVkVSU0lPTiA8IDcgKi8KLQogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZmFhZF9kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBmYWFkX2RlYnVnCiAKQEAgLTI3NywxMSArMjM2LDcgQEAKICAgZmFhZC0+cGFja2V0aXNlZCA9IEZBTFNFOwogCiAgIGlmICgodmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoc3RyLCAiY29kZWNfZGF0YSIpKSkgewotI2lmIEZBQUQyX01JTk9SX1ZFUlNJT04gPj0gNwogICAgIHVuc2lnbmVkIGxvbmcgc2FtcGxlcmF0ZTsKLSNlbHNlCi0gICAgZ3VpbnQzMiBzYW1wbGVyYXRlOwotI2VuZGlmCiAgICAgZ3VpbnQ4IGNoYW5uZWxzOwogCiAgICAgLyogV2UgaGF2ZSBjb2RlYyBkYXRhLCBtZWFucyBwYWNrZXRpc2VkIHN0cmVhbSAqLwpAQCAtNjkxLDExICs2NDYsNyBAQAogaW5pdDoKICAgLyogaW5pdCBpZiBub3QgYWxyZWFkeSBkb25lIGR1cmluZyBjYXBzbmVnbyAqLwogICBpZiAoIWZhYWQtPmluaXQpIHsKLSNpZiBGQUFEMl9NSU5PUl9WRVJTSU9OID49IDcKICAgICB1bnNpZ25lZCBsb25nIHJhdGU7Ci0jZWxzZQotICAgIGd1aW50MzIgcmF0ZTsKLSNlbmRpZgogICAgIGd1aW50OCBjaDsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZhYWQsICJpbml0aWFsaXNpbmcgLi4uIik7CmRpZmYgLS1naXQgYS9leHQvZmFhZC9nc3RmYWFkLmggYi9leHQvZmFhZC9nc3RmYWFkLmgKaW5kZXggMWUzNDc5Ny4uMDNiZDZhYiAxMDA2NDQKLS0tIGEvZXh0L2ZhYWQvZ3N0ZmFhZC5oCisrKyBiL2V4dC9mYWFkL2dzdGZhYWQuaApAQCAtMjMsMTEgKzIzLDcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2dzdGF1ZGlvZGVjb2Rlci5oPgogCi0jaWZkZWYgRkFBRF9JU19ORUFBQwogI2luY2x1ZGUgPG5lYWFjZGVjLmg+Ci0jZWxzZQotI2luY2x1ZGUgPGZhYWQuaD4KLSNlbmRpZgogCiBHX0JFR0lOX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL2V4dC9mbGl0ZS9NYWtlZmlsZS5pbiBiL2V4dC9mbGl0ZS9NYWtlZmlsZS5pbgppbmRleCA0NjU3ZDYwLi40MTQ1YzhkIDEwMDY0NAotLS0gYS9leHQvZmxpdGUvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2ZsaXRlL01ha2VmaWxlLmluCkBAIC0xMTUsMTYgKzExNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjczLDYgKzI3Miw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEwLDYgKzMxMSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE4LDcgKzMyMSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzNyw4ICszMzksOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU1LDE2ICszNTgsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkwLDYgKzM5NCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNSw2ICs0MjEsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTYsNiArNTI0LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyOSw4ICs1MzgsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDYsNiArNTUzLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwMywxNiArNjEyLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY0LDYgKzY3NSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzQsNiArNjg2LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjgzLDYgKzY5Niw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjAsNyArNzM1LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvZmx1aWRzeW50aC9NYWtlZmlsZS5pbiBiL2V4dC9mbHVpZHN5bnRoL01ha2VmaWxlLmluCmluZGV4IDBmOGI0ZmQuLmY3MDcwNzAgMTAwNjQ0Ci0tLSBhL2V4dC9mbHVpZHN5bnRoL01ha2VmaWxlLmluCisrKyBiL2V4dC9mbHVpZHN5bnRoL01ha2VmaWxlLmluCkBAIC0xMTcsMTYgKzExNywxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI4Miw2ICsyODEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxOSw2ICszMjAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNyw3ICszMzAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDYsOCArMzQ4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2NCwxNiArMzY3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5OSw2ICs0MDMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjQsNiArNDMwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI1LDYgKzUzMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzgsOCArNTQ3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU1LDYgKzU2Miw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTIsMTYgKzYyMSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3Myw2ICs2ODQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgzLDYgKzY5NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5Miw2ICs3MDUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI5LDcgKzc0NCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2dsL01ha2VmaWxlLmFtIGIvZXh0L2dsL01ha2VmaWxlLmFtCmluZGV4IDFhNjM0ZWYuLjVkNTVmNTQgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9NYWtlZmlsZS5hbQorKysgYi9leHQvZ2wvTWFrZWZpbGUuYW0KQEAgLTEzLDYgKzEzLDcgQEAKIAlnc3RnbGltYWdlc2luay5jIFwKIAlnc3RnbGZpbHRlcmN1YmUuYyBcCiAJZ3N0Z2xlZmZlY3RzLmMgXAorCWVmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmMgXAogCWVmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5jIFwKIAllZmZlY3RzL2dzdGdsZWZmZWN0aWRlbnRpdHkuYyBcCiAJZWZmZWN0cy9nc3RnbGVmZmVjdG1pcnJvci5jIFwKQEAgLTMyLDEwICszMywxNCBAQAogCWVmZmVjdHMvZ3N0Z2xlZmZlY3Rzb2JlbC5jIFwKIAllZmZlY3RzL2dzdGdsZWZmZWN0bGFwbGFjaWFuLmMgXAogCWdzdGdsY29sb3JzY2FsZS5jIFwKKwlnc3RnbGNvbG9yYmFsYW5jZS5jIFwKIAlnc3RnbG1peGVyLmMgXAogCWdzdGdsdmlkZW9taXhlci5jIFwKIAlnc3RnbGZpbHRlcnNoYWRlci5jIFwKLQlnc3RnbGZpbHRlcmFwcC5jCisJZ3N0Z2xmaWx0ZXJhcHAuYyBcCisJZ3N0Z2x2aWV3Y29udmVydC5jIFwKKwlnc3RnbHN0ZXJlb3NwbGl0LmMgXAorCWdzdGdsc3RlcmVvbWl4LmMKIAogbm9pbnN0X0hFQURFUlMgPSBcCiAJZ3N0Z2xiYXNlbWl4ZXIuaCBcCkBAIC01MSwxOSArNTYsMjAgQEAKIAlnc3RnbGVmZmVjdHMuaCBcCiAJZWZmZWN0cy9nc3RnbGVmZmVjdHNzb3VyY2VzLmggXAogCWdzdGdsY29sb3JzY2FsZS5oIFwKKwlnc3RnbGNvbG9yYmFsYW5jZS5oIFwKIAlnc3RnbG1peGVyLmggXAogCWdzdGdsdmlkZW9taXhlci5oIFwKIAlnc3RnbGZpbHRlcnNoYWRlci5oIFwKLQlnc3RnbGZpbHRlcmFwcC5oCisJZ3N0Z2xmaWx0ZXJhcHAuaCBcCisJZ3N0Z2xzdGVyZW9zcGxpdC5oIFwKKwlnc3RnbHN0ZXJlb21peC5oIFwKKwlnc3RnbHZpZXdjb252ZXJ0LmgKIAogIyBmdWxsIG9wZW5nbCByZXF1aXJlZAogaWYgVVNFX09QRU5HTAogbGliZ3N0b3BlbmdsX2xhX1NPVVJDRVMgKz0gXAogCWdzdGdsZmlsdGVyZ2xhc3MuYyBcCiAJZ3N0Z2xkZWludGVybGFjZS5jIFwKLQlnc3RnbHZpZXdjb252ZXJ0LmMgXAotCWdzdGdsc3RlcmVvc3BsaXQuYyBcCi0JZ3N0Z2xzdGVyZW9taXguYyBcCiAJZ2x0ZXN0c3JjLmMgXAogCWdzdGdsdGVzdHNyYy5jIFwKIAlnc3RnbG1vc2FpYy5jCkBAIC03MSw5ICs3Nyw2IEBACiBub2luc3RfSEVBREVSUyArPSBcCiAJZ3N0Z2xmaWx0ZXJnbGFzcy5oIFwKIAlnc3RnbGRlaW50ZXJsYWNlLmggXAotCWdzdGdsc3RlcmVvc3BsaXQuaCBcCi0JZ3N0Z2xzdGVyZW9taXguaCBcCi0JZ3N0Z2x2aWV3Y29udmVydC5oIFwKIAlnbHRlc3RzcmMuaCBcCiAJZ3N0Z2x0ZXN0c3JjLmggXAogCWdzdGdsbW9zYWljLmggXApAQCAtOTIsNyArOTUsMTEgQEAKIGlmIEhBVkVfR1JBUEhFTkUKIGxpYmdzdG9wZW5nbF9sYV9TT1VSQ0VTICs9IFwKIAlnc3RnbHRyYW5zZm9ybWF0aW9uLmMgXAotCWdzdGdsdHJhbnNmb3JtYXRpb24uaAorCWdzdGdsdmlkZW9mbGlwLmMKKworbm9pbnN0X0hFQURFUlMgKz0gXAorCWdzdGdsdHJhbnNmb3JtYXRpb24uaCBcCisJZ3N0Z2x2aWRlb2ZsaXAuaAogZW5kaWYKIAogaWYgSEFWRV9KUEVHCmRpZmYgLS1naXQgYS9leHQvZ2wvTWFrZWZpbGUuaW4gYi9leHQvZ2wvTWFrZWZpbGUuaW4KaW5kZXggYmYwYzMwYy4uOWMzNWU4ZiAxMDA2NDQKLS0tIGEvZXh0L2dsL01ha2VmaWxlLmluCisrKyBiL2V4dC9nbC9NYWtlZmlsZS5pbgpAQCAtOTUsOSArOTUsNiBAQAogQFVTRV9PUEVOR0xfVFJVRUBhbV9fYXBwZW5kXzEgPSBcCiBAVVNFX09QRU5HTF9UUlVFQAlnc3RnbGZpbHRlcmdsYXNzLmMgXAogQFVTRV9PUEVOR0xfVFJVRUAJZ3N0Z2xkZWludGVybGFjZS5jIFwKLUBVU0VfT1BFTkdMX1RSVUVACWdzdGdsdmlld2NvbnZlcnQuYyBcCi1AVVNFX09QRU5HTF9UUlVFQAlnc3RnbHN0ZXJlb3NwbGl0LmMgXAotQFVTRV9PUEVOR0xfVFJVRUAJZ3N0Z2xzdGVyZW9taXguYyBcCiBAVVNFX09QRU5HTF9UUlVFQAlnbHRlc3RzcmMuYyBcCiBAVVNFX09QRU5HTF9UUlVFQAlnc3RnbHRlc3RzcmMuYyBcCiBAVVNFX09QRU5HTF9UUlVFQAlnc3RnbG1vc2FpYy5jCkBAIC0xMDUsOSArMTAyLDYgQEAKIEBVU0VfT1BFTkdMX1RSVUVAYW1fX2FwcGVuZF8yID0gXAogQFVTRV9PUEVOR0xfVFJVRUAJZ3N0Z2xmaWx0ZXJnbGFzcy5oIFwKIEBVU0VfT1BFTkdMX1RSVUVACWdzdGdsZGVpbnRlcmxhY2UuaCBcCi1AVVNFX09QRU5HTF9UUlVFQAlnc3RnbHN0ZXJlb3NwbGl0LmggXAotQFVTRV9PUEVOR0xfVFJVRUAJZ3N0Z2xzdGVyZW9taXguaCBcCi1AVVNFX09QRU5HTF9UUlVFQAlnc3RnbHZpZXdjb252ZXJ0LmggXAogQFVTRV9PUEVOR0xfVFJVRUAJZ2x0ZXN0c3JjLmggXAogQFVTRV9PUEVOR0xfVFJVRUAJZ3N0Z2x0ZXN0c3JjLmggXAogQFVTRV9PUEVOR0xfVFJVRUAJZ3N0Z2xtb3NhaWMuaCBcCkBAIC0xMjIsMTggKzExNiwyMiBAQAogCiBASEFWRV9HUkFQSEVORV9UUlVFQGFtX19hcHBlbmRfNSA9IFwKIEBIQVZFX0dSQVBIRU5FX1RSVUVACWdzdGdsdHJhbnNmb3JtYXRpb24uYyBcCi1ASEFWRV9HUkFQSEVORV9UUlVFQAlnc3RnbHRyYW5zZm9ybWF0aW9uLmgKK0BIQVZFX0dSQVBIRU5FX1RSVUVACWdzdGdsdmlkZW9mbGlwLmMKIAotQEhBVkVfSlBFR19UUlVFQEBIQVZFX1BOR19UUlVFQGFtX19hcHBlbmRfNiA9IFwKLUBIQVZFX0pQRUdfVFJVRUBASEFWRV9QTkdfVFJVRUAJZ3N0Z2xvdmVybGF5LmMKK0BIQVZFX0dSQVBIRU5FX1RSVUVAYW1fX2FwcGVuZF82ID0gXAorQEhBVkVfR1JBUEhFTkVfVFJVRUAJZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5oIFwKK0BIQVZFX0dSQVBIRU5FX1RSVUVACWdzdGdsdmlkZW9mbGlwLmgKIAogQEhBVkVfSlBFR19UUlVFQEBIQVZFX1BOR19UUlVFQGFtX19hcHBlbmRfNyA9IFwKK0BIQVZFX0pQRUdfVFJVRUBASEFWRV9QTkdfVFJVRUAJZ3N0Z2xvdmVybGF5LmMKKworQEhBVkVfSlBFR19UUlVFQEBIQVZFX1BOR19UUlVFQGFtX19hcHBlbmRfOCA9IFwKIEBIQVZFX0pQRUdfVFJVRUBASEFWRV9QTkdfVFJVRUAJZ3N0Z2xvdmVybGF5LmgKIAotQEhBVkVfV0lORE9XX0NPQ09BX1RSVUVAYW1fX2FwcGVuZF84ID0gXAorQEhBVkVfV0lORE9XX0NPQ09BX1RSVUVAYW1fX2FwcGVuZF85ID0gXAogQEhBVkVfV0lORE9XX0NPQ09BX1RSVUVACWNhb3BlbmdsbGF5ZXJzaW5rLm0KIAotQEhBVkVfV0lORE9XX0NPQ09BX1RSVUVAYW1fX2FwcGVuZF85ID0gXAorQEhBVkVfV0lORE9XX0NPQ09BX1RSVUVAYW1fX2FwcGVuZF8xMCA9IFwKIEBIQVZFX1dJTkRPV19DT0NPQV9UUlVFQAljYW9wZW5nbGxheWVyc2luay5oCiAKIHN1YmRpciA9IGV4dC9nbApAQCAtMTYyLDE2ICsxNjAsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ub2luc3RfSEVBREVSU19ESVNUKSBcCkBAIC0yMjEsMzMgKzIxOCwzMyBAQAogCWdzdGdsdXBsb2FkZWxlbWVudC5jIGdzdGdsZG93bmxvYWRlbGVtZW50LmMgXAogCWdzdGdsY29sb3Jjb252ZXJ0ZWxlbWVudC5jIGdzdGdsZmlsdGVyYmluLmMgZ3N0Z2xtaXhlcmJpbi5jIFwKIAlnc3RnbHNpbmtiaW4uYyBnc3RnbHNyY2Jpbi5jIGdzdGdsaW1hZ2VzaW5rLmMgXAotCWdzdGdsZmlsdGVyY3ViZS5jIGdzdGdsZWZmZWN0cy5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5jIFwKLQllZmZlY3RzL2dzdGdsZWZmZWN0aWRlbnRpdHkuYyBlZmZlY3RzL2dzdGdsZWZmZWN0bWlycm9yLmMgXAotCWVmZmVjdHMvZ3N0Z2xlZmZlY3RzcXVlZXplLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHN0cmV0Y2guYyBcCi0JZWZmZWN0cy9nc3RnbGVmZmVjdGZpc2hleWUuYyBlZmZlY3RzL2dzdGdsZWZmZWN0dHdpcmwuYyBcCi0JZWZmZWN0cy9nc3RnbGVmZmVjdGJ1bGdlLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHR1bm5lbC5jIFwKLQllZmZlY3RzL2dzdGdsZWZmZWN0c3F1YXJlLmMgZWZmZWN0cy9nc3RnbGVmZmVjdGx1bWF0b2N1cnZlLmMgXAorCWdzdGdsZmlsdGVyY3ViZS5jIGdzdGdsZWZmZWN0cy5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmMgXAorCWVmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RpZGVudGl0eS5jIFwKKwllZmZlY3RzL2dzdGdsZWZmZWN0bWlycm9yLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHNxdWVlemUuYyBcCisJZWZmZWN0cy9nc3RnbGVmZmVjdHN0cmV0Y2guYyBlZmZlY3RzL2dzdGdsZWZmZWN0ZmlzaGV5ZS5jIFwKKwllZmZlY3RzL2dzdGdsZWZmZWN0dHdpcmwuYyBlZmZlY3RzL2dzdGdsZWZmZWN0YnVsZ2UuYyBcCisJZWZmZWN0cy9nc3RnbGVmZmVjdHR1bm5lbC5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RzcXVhcmUuYyBcCisJZWZmZWN0cy9nc3RnbGVmZmVjdGx1bWF0b2N1cnZlLmMgXAogCWVmZmVjdHMvZ3N0Z2xlZmZlY3RyZ2J0b2N1cnZlLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHNpbi5jIFwKIAllZmZlY3RzL2dzdGdsZWZmZWN0eHJheS5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RnbG93LmMgXAogCWVmZmVjdHMvZ3N0Z2xlZmZlY3RibHVyLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHNvYmVsLmMgXAotCWVmZmVjdHMvZ3N0Z2xlZmZlY3RsYXBsYWNpYW4uYyBnc3RnbGNvbG9yc2NhbGUuYyBnc3RnbG1peGVyLmMgXAotCWdzdGdsdmlkZW9taXhlci5jIGdzdGdsZmlsdGVyc2hhZGVyLmMgZ3N0Z2xmaWx0ZXJhcHAuYyBcCi0JZ3N0Z2xmaWx0ZXJnbGFzcy5jIGdzdGdsZGVpbnRlcmxhY2UuYyBnc3RnbHZpZXdjb252ZXJ0LmMgXAotCWdzdGdsc3RlcmVvc3BsaXQuYyBnc3RnbHN0ZXJlb21peC5jIGdsdGVzdHNyYy5jIGdzdGdsdGVzdHNyYy5jIFwKLQlnc3RnbG1vc2FpYy5jIGdzdGdsZGlmZmVyZW5jZW1hdHRlLmMgZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5jIFwKLQlnc3RnbHRyYW5zZm9ybWF0aW9uLmggZ3N0Z2xvdmVybGF5LmMgY2FvcGVuZ2xsYXllcnNpbmsubQorCWVmZmVjdHMvZ3N0Z2xlZmZlY3RsYXBsYWNpYW4uYyBnc3RnbGNvbG9yc2NhbGUuYyBcCisJZ3N0Z2xjb2xvcmJhbGFuY2UuYyBnc3RnbG1peGVyLmMgZ3N0Z2x2aWRlb21peGVyLmMgXAorCWdzdGdsZmlsdGVyc2hhZGVyLmMgZ3N0Z2xmaWx0ZXJhcHAuYyBnc3RnbHZpZXdjb252ZXJ0LmMgXAorCWdzdGdsc3RlcmVvc3BsaXQuYyBnc3RnbHN0ZXJlb21peC5jIGdzdGdsZmlsdGVyZ2xhc3MuYyBcCisJZ3N0Z2xkZWludGVybGFjZS5jIGdsdGVzdHNyYy5jIGdzdGdsdGVzdHNyYy5jIGdzdGdsbW9zYWljLmMgXAorCWdzdGdsZGlmZmVyZW5jZW1hdHRlLmMgZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5jIGdzdGdsdmlkZW9mbGlwLmMgXAorCWdzdGdsb3ZlcmxheS5jIGNhb3BlbmdsbGF5ZXJzaW5rLm0KIGFtX19kaXJzdGFtcCA9ICQoYW1fX2xlYWRpbmdfZG90KWRpcnN0YW1wCiBAVVNFX09QRU5HTF9UUlVFQGFtX19vYmplY3RzXzEgPSBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJnbGFzcy5sbyBcCiBAVVNFX09QRU5HTF9UUlVFQAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xkZWludGVybGFjZS5sbyBcCi1AVVNFX09QRU5HTF9UUlVFQAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWV3Y29udmVydC5sbyBcCi1AVVNFX09QRU5HTF9UUlVFQAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xzdGVyZW9zcGxpdC5sbyBcCi1AVVNFX09QRU5HTF9UUlVFQAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xzdGVyZW9taXgubG8gXAogQFVTRV9PUEVOR0xfVFJVRUAJbGliZ3N0b3BlbmdsX2xhLWdsdGVzdHNyYy5sbyBcCiBAVVNFX09QRU5HTF9UUlVFQAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2x0ZXN0c3JjLmxvIFwKIEBVU0VfT1BFTkdMX1RSVUVACWxpYmdzdG9wZW5nbF9sYS1nc3RnbG1vc2FpYy5sbwogQEhBVkVfUE5HX1RSVUVAQFVTRV9PUEVOR0xfVFJVRUBhbV9fb2JqZWN0c18yID0gbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGlmZmVyZW5jZW1hdHRlLmxvCiBASEFWRV9HUkFQSEVORV9UUlVFQGFtX19vYmplY3RzXzMgPSAgXAotQEhBVkVfR1JBUEhFTkVfVFJVRUAJbGliZ3N0b3BlbmdsX2xhLWdzdGdsdHJhbnNmb3JtYXRpb24ubG8KK0BIQVZFX0dSQVBIRU5FX1RSVUVACWxpYmdzdG9wZW5nbF9sYS1nc3RnbHRyYW5zZm9ybWF0aW9uLmxvIFwKK0BIQVZFX0dSQVBIRU5FX1RSVUVACWxpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZGVvZmxpcC5sbwogQEhBVkVfSlBFR19UUlVFQEBIQVZFX1BOR19UUlVFQGFtX19vYmplY3RzXzQgPSBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xvdmVybGF5LmxvCiBASEFWRV9XSU5ET1dfQ09DT0FfVFJVRUBhbV9fb2JqZWN0c181ID0gIFwKIEBIQVZFX1dJTkRPV19DT0NPQV9UUlVFQAlsaWJnc3RvcGVuZ2xfbGEtY2FvcGVuZ2xsYXllcnNpbmsubG8KQEAgLTI2Miw2ICsyNTksNyBAQAogCWxpYmdzdG9wZW5nbF9sYS1nc3RnbGltYWdlc2luay5sbyBcCiAJbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyY3ViZS5sbyBcCiAJbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0cy5sbyBcCisJZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzY3VydmVzLmxvIFwKIAllZmZlY3RzL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHNzb3VyY2VzLmxvIFwKIAllZmZlY3RzL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdGlkZW50aXR5LmxvIFwKIAllZmZlY3RzL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdG1pcnJvci5sbyBcCkBAIC0yODEsMTAgKzI3OSwxNCBAQAogCWVmZmVjdHMvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c29iZWwubG8gXAogCWVmZmVjdHMvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0bGFwbGFjaWFuLmxvIFwKIAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xjb2xvcnNjYWxlLmxvIFwKKwlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xjb2xvcmJhbGFuY2UubG8gXAogCWxpYmdzdG9wZW5nbF9sYS1nc3RnbG1peGVyLmxvIFwKIAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWRlb21peGVyLmxvIFwKIAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJzaGFkZXIubG8gXAotCWxpYmdzdG9wZW5nbF9sYS1nc3RnbGZpbHRlcmFwcC5sbyAkKGFtX19vYmplY3RzXzEpIFwKKwlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJhcHAubG8gXAorCWxpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZXdjb252ZXJ0LmxvIFwKKwlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xzdGVyZW9zcGxpdC5sbyBcCisJbGliZ3N0b3BlbmdsX2xhLWdzdGdsc3RlcmVvbWl4LmxvICQoYW1fX29iamVjdHNfMSkgXAogCSQoYW1fX29iamVjdHNfMikgJChhbV9fb2JqZWN0c18zKSAkKGFtX19vYmplY3RzXzQpIFwKIAkkKGFtX19vYmplY3RzXzUpCiBsaWJnc3RvcGVuZ2xfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0b3BlbmdsX2xhX09CSkVDVFMpCkBAIC0zNTksMTIgKzM2MSwxMyBAQAogCWdzdGdsZG93bmxvYWRlbGVtZW50LmggZ3N0Z2xjb2xvcmNvbnZlcnRlbGVtZW50LmggXAogCWdzdGdsZmlsdGVyYmluLmggZ3N0Z2xtaXhlcmJpbi5oIGdzdGdsc2lua2Jpbi5oIGdzdGdsc3JjYmluLmggXAogCWdzdGdsaW1hZ2VzaW5rLmggZ3N0Z2xmaWx0ZXJjdWJlLmggZ3N0Z2xlZmZlY3RzLmggXAotCWVmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5oIGdzdGdsY29sb3JzY2FsZS5oIGdzdGdsbWl4ZXIuaCBcCi0JZ3N0Z2x2aWRlb21peGVyLmggZ3N0Z2xmaWx0ZXJzaGFkZXIuaCBnc3RnbGZpbHRlcmFwcC5oIFwKLQlnc3RnbGZpbHRlcmdsYXNzLmggZ3N0Z2xkZWludGVybGFjZS5oIGdzdGdsc3RlcmVvc3BsaXQuaCBcCi0JZ3N0Z2xzdGVyZW9taXguaCBnc3RnbHZpZXdjb252ZXJ0LmggZ2x0ZXN0c3JjLmggZ3N0Z2x0ZXN0c3JjLmggXAotCWdzdGdsbW9zYWljLmggZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuaCBcCi0JZWZmZWN0cy9nc3RnbGVmZmVjdGx1bWF0b2N1cnZlLmggZ3N0Z2xkaWZmZXJlbmNlbWF0dGUuaCBcCisJZWZmZWN0cy9nc3RnbGVmZmVjdHNzb3VyY2VzLmggZ3N0Z2xjb2xvcnNjYWxlLmggXAorCWdzdGdsY29sb3JiYWxhbmNlLmggZ3N0Z2xtaXhlci5oIGdzdGdsdmlkZW9taXhlci5oIFwKKwlnc3RnbGZpbHRlcnNoYWRlci5oIGdzdGdsZmlsdGVyYXBwLmggZ3N0Z2xzdGVyZW9zcGxpdC5oIFwKKwlnc3RnbHN0ZXJlb21peC5oIGdzdGdsdmlld2NvbnZlcnQuaCBnc3RnbGZpbHRlcmdsYXNzLmggXAorCWdzdGdsZGVpbnRlcmxhY2UuaCBnbHRlc3RzcmMuaCBnc3RnbHRlc3RzcmMuaCBnc3RnbG1vc2FpYy5oIFwKKwllZmZlY3RzL2dzdGdsZWZmZWN0c2N1cnZlcy5oIGVmZmVjdHMvZ3N0Z2xlZmZlY3RsdW1hdG9jdXJ2ZS5oIFwKKwlnc3RnbGRpZmZlcmVuY2VtYXR0ZS5oIGdzdGdsdHJhbnNmb3JtYXRpb24uaCBnc3RnbHZpZGVvZmxpcC5oIFwKIAlnc3RnbG92ZXJsYXkuaCBjYW9wZW5nbGxheWVyc2luay5oCiBIRUFERVJTID0gJChub2luc3RfSEVBREVSUykKIGFtX190YWdnZWRfZmlsZXMgPSAkKEhFQURFUlMpICQoU09VUkNFUykgJChUQUdTX0ZJTEVTKSAkKExJU1ApCkBAIC00MjMsNiArNDI2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC00NjAsNiArNDY1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC00NjgsNyArNDc1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtNDg3LDggKzQ5Myw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC01MDUsMTYgKzUxMiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC01NDAsNiArNTQ4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNTY1LDYgKzU3NSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTY2Niw2ICs2NzgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNjc5LDggKzY5Miw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTY5Niw2ICs3MDcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNzUzLDE2ICs3NjYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC04MTQsNiArODI5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTgyNCw2ICs4NDAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC04MzMsNiArODUwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTg3MCw3ICs4ODksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTkxNSwyNyArOTMzLDMyIEBACiAJZ3N0Z2x1cGxvYWRlbGVtZW50LmMgZ3N0Z2xkb3dubG9hZGVsZW1lbnQuYyBcCiAJZ3N0Z2xjb2xvcmNvbnZlcnRlbGVtZW50LmMgZ3N0Z2xmaWx0ZXJiaW4uYyBnc3RnbG1peGVyYmluLmMgXAogCWdzdGdsc2lua2Jpbi5jIGdzdGdsc3JjYmluLmMgZ3N0Z2xpbWFnZXNpbmsuYyBcCi0JZ3N0Z2xmaWx0ZXJjdWJlLmMgZ3N0Z2xlZmZlY3RzLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHNzb3VyY2VzLmMgXAotCWVmZmVjdHMvZ3N0Z2xlZmZlY3RpZGVudGl0eS5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RtaXJyb3IuYyBcCi0JZWZmZWN0cy9nc3RnbGVmZmVjdHNxdWVlemUuYyBlZmZlY3RzL2dzdGdsZWZmZWN0c3RyZXRjaC5jIFwKLQllZmZlY3RzL2dzdGdsZWZmZWN0ZmlzaGV5ZS5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3R0d2lybC5jIFwKLQllZmZlY3RzL2dzdGdsZWZmZWN0YnVsZ2UuYyBlZmZlY3RzL2dzdGdsZWZmZWN0dHVubmVsLmMgXAotCWVmZmVjdHMvZ3N0Z2xlZmZlY3RzcXVhcmUuYyBlZmZlY3RzL2dzdGdsZWZmZWN0bHVtYXRvY3VydmUuYyBcCisJZ3N0Z2xmaWx0ZXJjdWJlLmMgZ3N0Z2xlZmZlY3RzLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuYyBcCisJZWZmZWN0cy9nc3RnbGVmZmVjdHNzb3VyY2VzLmMgZWZmZWN0cy9nc3RnbGVmZmVjdGlkZW50aXR5LmMgXAorCWVmZmVjdHMvZ3N0Z2xlZmZlY3RtaXJyb3IuYyBlZmZlY3RzL2dzdGdsZWZmZWN0c3F1ZWV6ZS5jIFwKKwllZmZlY3RzL2dzdGdsZWZmZWN0c3RyZXRjaC5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RmaXNoZXllLmMgXAorCWVmZmVjdHMvZ3N0Z2xlZmZlY3R0d2lybC5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RidWxnZS5jIFwKKwllZmZlY3RzL2dzdGdsZWZmZWN0dHVubmVsLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHNxdWFyZS5jIFwKKwllZmZlY3RzL2dzdGdsZWZmZWN0bHVtYXRvY3VydmUuYyBcCiAJZWZmZWN0cy9nc3RnbGVmZmVjdHJnYnRvY3VydmUuYyBlZmZlY3RzL2dzdGdsZWZmZWN0c2luLmMgXAogCWVmZmVjdHMvZ3N0Z2xlZmZlY3R4cmF5LmMgZWZmZWN0cy9nc3RnbGVmZmVjdGdsb3cuYyBcCiAJZWZmZWN0cy9nc3RnbGVmZmVjdGJsdXIuYyBlZmZlY3RzL2dzdGdsZWZmZWN0c29iZWwuYyBcCi0JZWZmZWN0cy9nc3RnbGVmZmVjdGxhcGxhY2lhbi5jIGdzdGdsY29sb3JzY2FsZS5jIGdzdGdsbWl4ZXIuYyBcCi0JZ3N0Z2x2aWRlb21peGVyLmMgZ3N0Z2xmaWx0ZXJzaGFkZXIuYyBnc3RnbGZpbHRlcmFwcC5jIFwKLQkkKGFtX19hcHBlbmRfMSkgJChhbV9fYXBwZW5kXzMpICQoYW1fX2FwcGVuZF81KSBcCi0JJChhbV9fYXBwZW5kXzYpICQoYW1fX2FwcGVuZF84KQorCWVmZmVjdHMvZ3N0Z2xlZmZlY3RsYXBsYWNpYW4uYyBnc3RnbGNvbG9yc2NhbGUuYyBcCisJZ3N0Z2xjb2xvcmJhbGFuY2UuYyBnc3RnbG1peGVyLmMgZ3N0Z2x2aWRlb21peGVyLmMgXAorCWdzdGdsZmlsdGVyc2hhZGVyLmMgZ3N0Z2xmaWx0ZXJhcHAuYyBnc3RnbHZpZXdjb252ZXJ0LmMgXAorCWdzdGdsc3RlcmVvc3BsaXQuYyBnc3RnbHN0ZXJlb21peC5jICQoYW1fX2FwcGVuZF8xKSBcCisJJChhbV9fYXBwZW5kXzMpICQoYW1fX2FwcGVuZF81KSAkKGFtX19hcHBlbmRfNykgXAorCSQoYW1fX2FwcGVuZF85KQogbm9pbnN0X0hFQURFUlMgPSBnc3RnbGJhc2VtaXhlci5oIGdzdGdsdXBsb2FkZWxlbWVudC5oIFwKIAlnc3RnbGRvd25sb2FkZWxlbWVudC5oIGdzdGdsY29sb3Jjb252ZXJ0ZWxlbWVudC5oIFwKIAlnc3RnbGZpbHRlcmJpbi5oIGdzdGdsbWl4ZXJiaW4uaCBnc3RnbHNpbmtiaW4uaCBnc3RnbHNyY2Jpbi5oIFwKIAlnc3RnbGltYWdlc2luay5oIGdzdGdsZmlsdGVyY3ViZS5oIGdzdGdsZWZmZWN0cy5oIFwKLQllZmZlY3RzL2dzdGdsZWZmZWN0c3NvdXJjZXMuaCBnc3RnbGNvbG9yc2NhbGUuaCBnc3RnbG1peGVyLmggXAotCWdzdGdsdmlkZW9taXhlci5oIGdzdGdsZmlsdGVyc2hhZGVyLmggZ3N0Z2xmaWx0ZXJhcHAuaCBcCi0JJChhbV9fYXBwZW5kXzIpICQoYW1fX2FwcGVuZF80KSAkKGFtX19hcHBlbmRfNykgXAotCSQoYW1fX2FwcGVuZF85KQorCWVmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5oIGdzdGdsY29sb3JzY2FsZS5oIFwKKwlnc3RnbGNvbG9yYmFsYW5jZS5oIGdzdGdsbWl4ZXIuaCBnc3RnbHZpZGVvbWl4ZXIuaCBcCisJZ3N0Z2xmaWx0ZXJzaGFkZXIuaCBnc3RnbGZpbHRlcmFwcC5oIGdzdGdsc3RlcmVvc3BsaXQuaCBcCisJZ3N0Z2xzdGVyZW9taXguaCBnc3RnbHZpZXdjb252ZXJ0LmggJChhbV9fYXBwZW5kXzIpIFwKKwkkKGFtX19hcHBlbmRfNCkgJChhbV9fYXBwZW5kXzYpICQoYW1fX2FwcGVuZF84KSBcCisJJChhbV9fYXBwZW5kXzEwKQogbGliZ3N0b3BlbmdsX2xhX09CSkNGTEFHUyA9IFwKIAktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKQEAgLTEwNDYsNiArMTA2OSw4IEBACiBlZmZlY3RzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCk6CiAJQCQoTUtESVJfUCkgZWZmZWN0cy8kKERFUERJUikKIAlAOiA+IGVmZmVjdHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzY3VydmVzLmxvOiAgXAorCWVmZmVjdHMvJChhbV9fZGlyc3RhbXApIGVmZmVjdHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3Rzc291cmNlcy5sbzogIFwKIAllZmZlY3RzLyQoYW1fX2RpcnN0YW1wKSBlZmZlY3RzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIGVmZmVjdHMvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0aWRlbnRpdHkubG86ICBcCkBAIC0xMDk3LDYgKzExMjIsNyBAQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1jYW9wZW5nbGxheWVyc2luay5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nbHRlc3RzcmMuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xiYXNlbWl4ZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xjb2xvcmJhbGFuY2UuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xjb2xvcmNvbnZlcnRlbGVtZW50LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3JzY2FsZS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGRlaW50ZXJsYWNlLlBsb0BhbV9fcXVvdGVACkBAIC0xMTIwLDYgKzExNDYsNyBAQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbHRlc3RzcmMuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbHVwbG9hZGVsZW1lbnQuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWRlb2ZsaXAuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWRlb21peGVyLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsdmlld2NvbnZlcnQuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0b3BlbmdsLlBsb0BhbV9fcXVvdGVACkBAIC0xMTMyLDYgKzExNTksNyBAQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVmZmVjdHMvJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdGx1bWF0b2N1cnZlLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWZmZWN0cy8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0bWlycm9yLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWZmZWN0cy8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0cmdidG9jdXJ2ZS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVmZmVjdHMvJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHNjdXJ2ZXMuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlZmZlY3RzLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzaW4uUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlZmZlY3RzLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3Rzb2JlbC5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVmZmVjdHMvJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHNxdWFyZS5QbG9AYW1fX3F1b3RlQApAQCAtMTI1MCw2ICsxMjc4LDEzIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzLmxvIGB0ZXN0IC1mICdnc3RnbGVmZmVjdHMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xlZmZlY3RzLmMKIAorZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzY3VydmVzLmxvOiBlZmZlY3RzL2dzdGdsZWZmZWN0c2N1cnZlcy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzY3VydmVzLmxvIC1NRCAtTVAgLU1GIGVmZmVjdHMvJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHNjdXJ2ZXMuVHBvIC1jIC1vIGVmZmVjdHMvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c2N1cnZlcy5sbyBgdGVzdCAtZiAnZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlZmZlY3RzLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzY3VydmVzLlRwbyBlZmZlY3RzLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzY3VydmVzLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmMnIG9iamVjdD0nZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzY3VydmVzLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlZmZlY3RzL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHNjdXJ2ZXMubG8gYHRlc3QgLWYgJ2VmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmMKKwogZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3Rzc291cmNlcy5sbzogZWZmZWN0cy9nc3RnbGVmZmVjdHNzb3VyY2VzLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuZ2xfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmdsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBlZmZlY3RzL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHNzb3VyY2VzLmxvIC1NRCAtTVAgLU1GIGVmZmVjdHMvJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHNzb3VyY2VzLlRwbyAtYyAtbyBlZmZlY3RzL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHNzb3VyY2VzLmxvIGB0ZXN0IC1mICdlZmZlY3RzL2dzdGdsZWZmZWN0c3NvdXJjZXMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWZmZWN0cy9nc3RnbGVmZmVjdHNzb3VyY2VzLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWZmZWN0cy8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c3NvdXJjZXMuVHBvIGVmZmVjdHMvJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHNzb3VyY2VzLlBsbwpAQCAtMTM4Myw2ICsxNDE4LDEzIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xjb2xvcnNjYWxlLmxvIGB0ZXN0IC1mICdnc3RnbGNvbG9yc2NhbGUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xjb2xvcnNjYWxlLmMKIAorbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3JiYWxhbmNlLmxvOiBnc3RnbGNvbG9yYmFsYW5jZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3JiYWxhbmNlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xjb2xvcmJhbGFuY2UuVHBvIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nc3RnbGNvbG9yYmFsYW5jZS5sbyBgdGVzdCAtZiAnZ3N0Z2xjb2xvcmJhbGFuY2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xjb2xvcmJhbGFuY2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3JiYWxhbmNlLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3JiYWxhbmNlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsY29sb3JiYWxhbmNlLmMnIG9iamVjdD0nbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3JiYWxhbmNlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xjb2xvcmJhbGFuY2UubG8gYHRlc3QgLWYgJ2dzdGdsY29sb3JiYWxhbmNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsY29sb3JiYWxhbmNlLmMKKwogbGliZ3N0b3BlbmdsX2xhLWdzdGdsbWl4ZXIubG86IGdzdGdsbWl4ZXIuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5nbF9sYS1nc3RnbG1peGVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xtaXhlci5UcG8gLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsbWl4ZXIubG8gYHRlc3QgLWYgJ2dzdGdsbWl4ZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xtaXhlci5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xtaXhlci5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbG1peGVyLlBsbwpAQCAtMTQxMSwyMCArMTQ1Myw2IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJhcHAubG8gYHRlc3QgLWYgJ2dzdGdsZmlsdGVyYXBwLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZmlsdGVyYXBwLmMKIAotbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyZ2xhc3MubG86IGdzdGdsZmlsdGVyZ2xhc3MuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5nbF9sYS1nc3RnbGZpbHRlcmdsYXNzLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJnbGFzcy5UcG8gLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyZ2xhc3MubG8gYHRlc3QgLWYgJ2dzdGdsZmlsdGVyZ2xhc3MuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xmaWx0ZXJnbGFzcy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJnbGFzcy5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGZpbHRlcmdsYXNzLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsZmlsdGVyZ2xhc3MuYycgb2JqZWN0PSdsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJnbGFzcy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyZ2xhc3MubG8gYHRlc3QgLWYgJ2dzdGdsZmlsdGVyZ2xhc3MuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xmaWx0ZXJnbGFzcy5jCi0KLWxpYmdzdG9wZW5nbF9sYS1nc3RnbGRlaW50ZXJsYWNlLmxvOiBnc3RnbGRlaW50ZXJsYWNlLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuZ2xfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmdsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xkZWludGVybGFjZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGVpbnRlcmxhY2UuVHBvIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nc3RnbGRlaW50ZXJsYWNlLmxvIGB0ZXN0IC1mICdnc3RnbGRlaW50ZXJsYWNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZGVpbnRlcmxhY2UuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGVpbnRlcmxhY2UuVHBvICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xkZWludGVybGFjZS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RnbGRlaW50ZXJsYWNlLmMnIG9iamVjdD0nbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGVpbnRlcmxhY2UubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuZ2xfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmdsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nc3RnbGRlaW50ZXJsYWNlLmxvIGB0ZXN0IC1mICdnc3RnbGRlaW50ZXJsYWNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZGVpbnRlcmxhY2UuYwotCiBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWV3Y29udmVydC5sbzogZ3N0Z2x2aWV3Y29udmVydC5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmdsX2xhLWdzdGdsdmlld2NvbnZlcnQubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZXdjb252ZXJ0LlRwbyAtYyAtbyBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWV3Y29udmVydC5sbyBgdGVzdCAtZiAnZ3N0Z2x2aWV3Y29udmVydC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHZpZXdjb252ZXJ0LmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZXdjb252ZXJ0LlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsdmlld2NvbnZlcnQuUGxvCkBAIC0xNDQ2LDYgKzE0NzQsMjAgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuZ2xfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmdsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nc3RnbHN0ZXJlb21peC5sbyBgdGVzdCAtZiAnZ3N0Z2xzdGVyZW9taXguYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xzdGVyZW9taXguYwogCitsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJnbGFzcy5sbzogZ3N0Z2xmaWx0ZXJnbGFzcy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyZ2xhc3MubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGZpbHRlcmdsYXNzLlRwbyAtYyAtbyBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJnbGFzcy5sbyBgdGVzdCAtZiAnZ3N0Z2xmaWx0ZXJnbGFzcy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGZpbHRlcmdsYXNzLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGZpbHRlcmdsYXNzLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyZ2xhc3MuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2xmaWx0ZXJnbGFzcy5jJyBvYmplY3Q9J2xpYmdzdG9wZW5nbF9sYS1nc3RnbGZpbHRlcmdsYXNzLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJnbGFzcy5sbyBgdGVzdCAtZiAnZ3N0Z2xmaWx0ZXJnbGFzcy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGZpbHRlcmdsYXNzLmMKKworbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGVpbnRlcmxhY2UubG86IGdzdGdsZGVpbnRlcmxhY2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5nbF9sYS1nc3RnbGRlaW50ZXJsYWNlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xkZWludGVybGFjZS5UcG8gLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGVpbnRlcmxhY2UubG8gYHRlc3QgLWYgJ2dzdGdsZGVpbnRlcmxhY2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xkZWludGVybGFjZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xkZWludGVybGFjZS5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGRlaW50ZXJsYWNlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsZGVpbnRlcmxhY2UuYycgb2JqZWN0PSdsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xkZWludGVybGFjZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGVpbnRlcmxhY2UubG8gYHRlc3QgLWYgJ2dzdGdsZGVpbnRlcmxhY2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xkZWludGVybGFjZS5jCisKIGxpYmdzdG9wZW5nbF9sYS1nbHRlc3RzcmMubG86IGdsdGVzdHNyYy5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmdsX2xhLWdsdGVzdHNyYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdsdGVzdHNyYy5UcG8gLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdsdGVzdHNyYy5sbyBgdGVzdCAtZiAnZ2x0ZXN0c3JjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdsdGVzdHNyYy5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ2x0ZXN0c3JjLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdsdGVzdHNyYy5QbG8KQEAgLTE0ODEsNiArMTUyMywxMyBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsdHJhbnNmb3JtYXRpb24ubG8gYHRlc3QgLWYgJ2dzdGdsdHJhbnNmb3JtYXRpb24uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5jCiAKK2xpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZGVvZmxpcC5sbzogZ3N0Z2x2aWRlb2ZsaXAuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZGVvZmxpcC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsdmlkZW9mbGlwLlRwbyAtYyAtbyBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWRlb2ZsaXAubG8gYHRlc3QgLWYgJ2dzdGdsdmlkZW9mbGlwLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsdmlkZW9mbGlwLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZGVvZmxpcC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZGVvZmxpcC5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RnbHZpZGVvZmxpcC5jJyBvYmplY3Q9J2xpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZGVvZmxpcC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsdmlkZW9mbGlwLmxvIGB0ZXN0IC1mICdnc3RnbHZpZGVvZmxpcC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHZpZGVvZmxpcC5jCisKIGxpYmdzdG9wZW5nbF9sYS1nc3RnbG92ZXJsYXkubG86IGdzdGdsb3ZlcmxheS5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmdsX2xhLWdzdGdsb3ZlcmxheS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsb3ZlcmxheS5UcG8gLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsb3ZlcmxheS5sbyBgdGVzdCAtZiAnZ3N0Z2xvdmVybGF5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsb3ZlcmxheS5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xvdmVybGF5LlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsb3ZlcmxheS5QbG8KZGlmZiAtLWdpdCBhL2V4dC9nbC9jYW9wZW5nbGxheWVyc2luay5tIGIvZXh0L2dsL2Nhb3BlbmdsbGF5ZXJzaW5rLm0KaW5kZXggMjI5NTRmZi4uNDJiOGY5MCAxMDA2NDQKLS0tIGEvZXh0L2dsL2Nhb3BlbmdsbGF5ZXJzaW5rLm0KKysrIGIvZXh0L2dsL2Nhb3BlbmdsbGF5ZXJzaW5rLm0KQEAgLTE2Nyw5ICsxNjcsMTIgQEAKICAgICBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAogICAgIEdTVF9QQURfU0lOSywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUwotICAgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLAotICAgICAgICAgICAgIlJHQkEiKSkKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdygiIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSAiKSwgIgorICAgICAgImZvcm1hdCA9IChzdHJpbmcpIFJHQkEsICIKKyAgICAgICJ3aWR0aCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgImhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgImZyYW1lcmF0ZSA9ICIgR1NUX1ZJREVPX0ZQU19SQU5HRSAiLCIKKyAgICAgICJ0ZXh0dXJlLXRhcmdldCA9IChzdHJpbmcpIDJEIikKICAgICApOwogCiBlbnVtCkBAIC00NzYsNiArNDc5LDggQEAKIAogICBpZiAoY2Ffc2luay0+ZGlzcGxheSkKICAgICBnc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpIChjYV9zaW5rLT5kaXNwbGF5LCBTVVBQT1JURURfR0xfQVBJUyk7CisKKyAgR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0KTsKIH0KIAogc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCkBAIC04ODcsMTMgKzg5MiwyMCBAQAogZ3N0X2NhX29wZW5nbF9sYXllcl9zaW5rX3RocmVhZF9pbml0X3JlZGlzcGxheSAoR3N0Q0FPcGVuR0xMYXllclNpbmsgKiBjYV9zaW5rKQogewogICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNhX3NpbmstPmNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CiAKLSAgY2Ffc2luay0+cmVkaXNwbGF5X3NoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3IChjYV9zaW5rLT5jb250ZXh0KTsKLQotICBpZiAoIWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdmZfYW5kX2NoZWNrCi0gICAgICAoY2Ffc2luay0+cmVkaXNwbGF5X3NoYWRlciwgJmNhX3NpbmstPmF0dHJfcG9zaXRpb24sCi0gICAgICAgICAgJmNhX3NpbmstPmF0dHJfdGV4dHVyZSkpCisgIGlmICghKGNhX3NpbmstPnJlZGlzcGxheV9zaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0IChjYV9zaW5rLT5jb250ZXh0LCAmZXJyb3IpKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNhX3NpbmssICJGYWlsZWQgdG8gbGluayBzaGFkZXI6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwogICAgIGdzdF9jYV9vcGVuZ2xfbGF5ZXJfc2lua19jbGVhbnVwX2dsdGhyZWFkIChjYV9zaW5rKTsKKyAgICByZXR1cm47CisgIH0KKworICBjYV9zaW5rLT5hdHRyX3Bvc2l0aW9uID0KKyAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoY2Ffc2luay0+cmVkaXNwbGF5X3NoYWRlciwKKyAgICAgICJhX3Bvc2l0aW9uIik7CisgIGNhX3NpbmstPmF0dHJfdGV4dHVyZSA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKGNhX3NpbmstPnJlZGlzcGxheV9zaGFkZXIsCisgICAgICAiYV90ZXhjb29yZCIpOwogCiAgIGlmIChnbC0+R2VuVmVydGV4QXJyYXlzKSB7CiAgICAgZ2wtPkdlblZlcnRleEFycmF5cyAoMSwgJmNhX3NpbmstPnZhbyk7CmRpZmYgLS1naXQgYS9leHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdGlkZW50aXR5LmMgYi9leHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdGlkZW50aXR5LmMKaW5kZXggOTc0MGNjNy4uNTY4N2Q2NCAxMDA2NDQKLS0tIGEvZXh0L2dsL2VmZmVjdHMvZ3N0Z2xlZmZlY3RpZGVudGl0eS5jCisrKyBiL2V4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0aWRlbnRpdHkuYwpAQCAtNDIsMTcgKzQyLDIwIEBACiAKICAgc2hhZGVyID0gZ19oYXNoX3RhYmxlX2xvb2t1cCAoZWZmZWN0cy0+c2hhZGVyc3RhYmxlLCAiaWRlbnRpdHkwIik7CiAgIGlmICghc2hhZGVyKSB7Ci0gICAgc2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXcgKGNvbnRleHQpOwotICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKGVmZmVjdHMtPnNoYWRlcnN0YWJsZSwgKGdjaGFyICopICJpZGVudGl0eTAiLCBzaGFkZXIpOworICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwogCi0gICAgaWYgKCFnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVjayAoc2hhZGVyLAotICAgICAgICAgICAgJmZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYywgJmZpbHRlci0+ZHJhd19hdHRyX3RleHR1cmVfbG9jKSkgewotICAgICAgLyogZ3N0IGdsIGNvbnRleHQgZXJyb3IgaXMgYWxyZWFkeSBzZXQgKi8KKyAgICBpZiAoIShzaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0IChjb250ZXh0LCAmZXJyb3IpKSkgewogICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGVmZmVjdHMsIFJFU09VUkNFLCBOT1RfRk9VTkQsCi0gICAgICAgICAgKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBpZGVudGl0eSBzaGFkZXIsICVzIiwKLSAgICAgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZ2V0X2Vycm9yICgpKSwgKE5VTEwpKTsKKyAgICAgICAgICAoIkZhaWxlZCB0byBpbml0aWFsaXplIGlkZW50aXR5IHNoYWRlcjogJXMiLCBlcnJvci0+bWVzc2FnZSksIChOVUxMKSk7CiAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jID0KKyAgICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsICJhX3Bvc2l0aW9uIik7CisgICAgZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MgPQorICAgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfdGV4Y29vcmQiKTsKKworICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKGVmZmVjdHMtPnNoYWRlcnN0YWJsZSwgKGdjaGFyICopICJpZGVudGl0eTAiLCBzaGFkZXIpOwogICB9CiAgIGdzdF9nbF9zaGFkZXJfdXNlIChzaGFkZXIpOwogCmRpZmYgLS1naXQgYS9leHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuYyBiL2V4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0c2N1cnZlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjM2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuYwpAQCAtMCwwICsxLDIxMCBAQAorLyogCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBGaWxpcHBvIEFyZ2lvbGFzIDxmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3RnbGVmZmVjdHNjdXJ2ZXMuaCIKKworLyogQ1VSVkUgZm9yIHRoZSBoZWF0IHNpZ25hdHVyZSBlZmZlY3QgKi8KK2NvbnN0IEdzdEdMRWZmZWN0c0N1cnZlIHhwcm9fY3VydmUgPSB7CisgIDI1NiwgMSwgMywKKyAgIlwwXDBcMzdcMFwwXDM3XDBcMVw0MFwwXDIhXDBcMlwiXDBcM1wiXDFcNCVcMVw0JVwxXDUlXDFcNSdcMVw3J1wxXDcoXDFcNyIKKyAgICAgICIoXDFcMTAqXDFcMTErXDFcMTEsXDFcMTIsXDFcMTMvXDFcMTQvXDFcMTQiICIxXDJcMTUiICIxXDJcMTUiICIxXDJcMTYiCisgICAgICAiNFwyXDE3IiAiIiAiNFwzXDE3IiAiNVwzXDIyIiAiN1wzXDIyIiAiN1wzXDIzIiAiOFwzXDI0IgorICAgICAgIjlcM1wyNTtcM1wyNjtcM1wyNzxcM1wyNz1cNFwzMSIKKyAgICAgICI9XDRcMzM/XDRcMzRAXDVcMzRCXDVcMzVDXDVcMzZEXDVcNDBEXDVcNDBHXDUhR1w2XCJIXDYkSFw3JkpcNyZLXDcqTVw3Kk0iCisgICAgICAiXDEwK05cMTAtUFwxMS1QXDExL1JcMTEiICIzUlwxMSIgIjNUXDEyIiAiNFVcMTIiICI1VVwxMyIgIjdXXDE0IiAiOFlcMTQiCisgICAgICAiOVlcMTQiCisgICAgICAiPFlcMTY9W1wxNkBeXDE2QF5cMTdDXlwxN0RgXDIwRmBcMjBKYlwyMkpiXDIyS2NcMjNNZVwyNE5mXDI1UWdcMjZSZ1wyN1RpIgorICAgICAgIlwyN1dqXDMwWGxcMzFZbFwzM1xcbVwzNF5wXDM1YHBcNDBicFw0MGZxIWZyJGd0JGx0JWx1J212KHB4KnF5LXR5L3V6L3h8MCIKKyAgICAgICJ5fTN8fTR9fjVcMTc3XDIwMThcMjAzXDIwMTlcMjAzXDIwMTtcMjA0XDIwMj1cMjA3XDIwMz9cMjEwXDIwNEBcMjE0XDIwNEMiCisgICAgICAiXDIxNFwyMDZEXDIxNlwyMDdHXDIxN1wyMTBIXDIyM1wyMTFLXDIyM1wyMTFNXDIyNVwyMTJQXDIyNlwyMTRRXDIzMVwyMTVUIgorICAgICAgIlwyMzJcMjE1VVwyMzRcMjE2WFwyMzVcMjE3WVwyNDBcMjIwXFxcMjQxXDIyMF5cMjQzXDIyMWBcMjQ0XDIyM2JcMjQ2XDIyNCIKKyAgICAgICJlXDI1MFwyMjRmXDI1MlwyMjVpXDI1M1wyMjZsXDI1NVwyMjdtXDI1NlwyMzFwXDI2MVwyMzFxXDI2MlwyMzJ0XDI2NFwyMzMiCisgICAgICAidlwyNjVcMjM0eFwyNjdcMjM0elwyNzBcMjM1fFwyNzFcMjM2flwyNzRcMjQwXDIwMVwyNzVcMjQwXDIwMlwyNzdcMjQxXDIwNCIKKyAgICAgICJcMzAwXDI0MlwyMDdcMzAyXDI0M1wyMTBcMzAzXDI0M1wyMTJcMzA1XDI0NFwyMTRcMzA2XDI0NVwyMTZcMzA3XDI0NlwyMjAiCisgICAgICAiXDMxMVwyNTBcMjIxXDMxM1wyNTBcMjI0XDMxNVwyNTFcMjI2XDMxNlwyNTJcMjI3XDMxN1wyNTNcMjMyXDMyMVwyNTNcMjM0IgorICAgICAgIlwzMjJcMjU0XDIzNVwzMjNcMjU1XDI0MFwzMjVcMjU2XDI0MlwzMjZcMjU2XDI0MlwzMzBcMjU2XDI0NVwzMzFcMjYxXDI1MCIKKyAgICAgICJcMzMxXDI2MlwyNTFcMzMyXDI2MlwyNTNcMzM0XDI2M1wyNTVcMzM1XDI2NFwyNTZcMzM2XDI2NVwyNjFcMzQwXDI2NlwyNjMiCisgICAgICAiXDM0MVwyNjZcMjY0XDM0MlwyNjdcMjY2XDM0M1wyNzBcMjcwXDM0NFwyNzFcMjcxXDM0NFwyNzFcMjcxXDM0NlwyNzNcMjc2IgorICAgICAgIlwzNDdcMjc0XDI3N1wzNTBcMjc1XDI3N1wzNTFcMjc1XDMwMlwzNTJcMjc2XDMwNFwzNTNcMjc3XDMwNlwzNTNcMzAwXDMwNyIKKyAgICAgICJcMzU1XDMwMFwzMTFcMzU2XDMwMVwzMTRcMzU2XDMwMlwzMTVcMzU3XDMwM1wzMTdcMzYwXDMwNFwzMjBcMzYwXDMwNFwzMjIiCisgICAgICAiXDM2MVwzMDVcMzIzXDM2MlwzMDZcMzI1XDM2MlwzMDdcMzI3XDM2M1wzMDdcMzMwXDM2M1wzMTBcMzMwXDM2NFwzMTFcMzMzIgorICAgICAgIlwzNjRcMzEzXDMzNFwzNjVcMzEzXDMzNlwzNjVcMzE0XDM0MFwzNjVcMzE0XDM0MlwzNjZcMzE2XDM0MlwzNjZcMzE2XDM0NiIKKyAgICAgICJcMzY3XDMxN1wzNDdcMzY3XDMyMFwzNTFcMzY3XDMyMFwzNTNcMzcwXDMyMlwzNTRcMzcwXDMyMlwzNTZcMzcwXDMyM1wzNTYiCisgICAgICAiXDM3MFwzMjRcMzYwXDM3MVwzMjVcMzYwXDM3MVwzMjVcMzYzXDM3MVwzMjZcMzYzXDM3MVwzMjdcMzYzXDM3MlwzMzBcMzY1IgorICAgICAgIlwzNzJcMzMwXDM2NlwzNzJcMzMxXDM2NlwzNzJcMzMxXDM3MFwzNzJcMzMyXDM3MVwzNzNcMzMyXDM3MVwzNzNcMzMzXDM3MiIKKyAgICAgICJcMzczXDMzNFwzNzNcMzczXDMzNVwzNzNcMzczXDMzNlwzNzRcMzczXDMzNlwzNzRcMzc0XDMzN1wzNzRcMzc0XDM0MFwzNzUiCisgICAgICAiXDM3NFwzNDFcMzc1XDM3NFwzNDFcMzc2XDM3NFwzNDJcMzc2XDM3NFwzNDNcMzc2XDM3NFwzNDRcMzc2XDM3NFwzNDRcMzc3IgorICAgICAgIlwzNzRcMzQ1XDM3N1wzNzRcMzQ2XDM3N1wzNzVcMzQ2XDM3N1wzNzVcMzQ2XDM3N1wzNzVcMzQ3XDM3N1wzNzVcMzUwXDM3NyIKKyAgICAgICJcMzc1XDM1MVwzNzdcMzc1XDM1MlwzNzdcMzc1XDM1MlwzNzdcMzc1XDM1MlwzNzdcMzc1XDM1M1wzNzdcMzc1XDM1M1wzNzciCisgICAgICAiXDM3NlwzNTRcMzc3XDM3NlwzNTRcMzc3XDM3NlwzNTZcMzc3XDM3NlwzNTZcMzc3XDM3NlwzNTZcMzc3XDM3NlwzNTdcMzc3IgorICAgICAgIlwzNzZcMzYwXDM3N1wzNzZcMzYwXDM3N1wzNzZcMzYwXDM3N1wzNzZcMzYwXDM3N1wzNzZcMzYyXDM3N1wzNzZcMzYyXDM3NyIKKyAgICAgICJcMzc2XDM2M1wzNzdcMzc2XDM2M1wzNzdcMzc2XDM2M1wzNzdcMzc2XDM2M1wzNzdcMzc2XDM2NFwzNzdcMzc2XDM2NFwzNzciCisgICAgICAiXDM3NlwzNjVcMzc3XDM3N1wzNjVcMzc3XDM3N1wzNjZcMzc3XDM3N1wzNjZcMzc3XDM3N1wzNjZcMzc3XDM3N1wzNjdcMzc3IgorICAgICAgIlwzNzdcMzY3XDM3N1wzNzdcMzY3XDM3N1wzNzdcMzcwIiwKK307CisKK2NvbnN0IEdzdEdMRWZmZWN0c0N1cnZlIGx1bWFfeHByb19jdXJ2ZSA9IHsKKyAgMjU2LCAxLCAzLAorICAiXDBcMFwxXDBcMVwxXDBcMVwyXDBcMVwyXDBcMVwyXDBcMVwyXDBcMVwzXDBcMlwzXDBcMlw0XDBcMlw0XDBcMlw1XDBcMlw2IgorICAgICAgIlwwXDNcNlwwXDNcNlwwXDNcN1wwXDNcMTBcMFw0XDEwXDBcNFwxMVwwXDRcMTJcMFw0XDEyXDFcNFwxM1wxXDVcMTRcMVw1XDE1IgorICAgICAgIlwxXDVcMTVcMVw1XDE2XDFcNVwxN1wxXDZcMTdcMVw2XDIwXDFcN1wyMVwxXDdcMjNcMlwxMFwyM1wyXDEwXDI0XDJcMTBcMjQiCisgICAgICAiXDJcMTFcMjZcMlwxMVwyN1wyXDExXDMwXDNcMTFcMzFcM1wxMlwzMVwzXDEzXDMyXDNcMTNcMzNcNFwxM1wzNFw0XDE0XDM1IgorICAgICAgIlw0XDE0XDM2XDRcMTVcMzdcNVwxNVw0MFw1XDE1XCJcNlwxNiNcNlwxNyNcNlwyMCRcN1wyMCVcN1wyMCVcMTBcMjEmXDEwXDIyIgorICAgICAgIidcMTBcMjIpXDExXDI0KlwxMVwyNCpcMTJcMjQrXDEyXDI2LlwxM1wyNi5cMTRcMjcuXDE0XDMwL1wxNVwzMSIKKyAgICAgICIxXDE1XDMxIiAiIiAiMlwxNlwzMiIgIjNcMTZcMzMiICIzXDIwXDMzIiAiNVwyMFwzNSIgIjZcMjBcMzYiICI3XDIyXDM3IgorICAgICAgIjdcMjNcIjlcMjMjOVwyNCQiICI6XDI1JDxcMjcmPFwyNyc9XDMxJz9cMzEpP1wzMipAXDM1K0JcMzUtQ1wzNi5DXDM3IgorICAgICAgIjFFXCIyRiMzSCQ1SCY2SSc3SSk3SyIKKyAgICAgICIrOk0tPE4tPE4xQE4xQlEyQlE2Q1E2RVU3SFU8SVU9SVZATlhATlhCUVpDU1tGVVtIVV1JVl9NWl9OW19RXWBTX2JVYGRYYmUiCisgICAgICAiWmJlXWdnXWlnYGppYGpqZGxqZW5sZ3BsanFucHdwcHdwcXhxc3pxd3xzeH11fFwyMDF1fVwyMDN3XDE3N1wyMDR4XDE3N1wyMDYiCisgICAgICAieFwyMDRcMjEweFwyMDRcMjEyelwyMTJcMjEzfFwyMTJcMjE3fVwyMTdcMjIxfVwyMjFcMjIyfVwyMjJcMjI0XDE3N1wyMjZcMjI0IgorICAgICAgIlwyMDFcMjI2XDIyNlwyMDNcMjMwXDIzM1wyMDNcMjM1XDIzNVwyMDRcMjM2XDIzNVwyMDRcMjM2XDIzNlwyMTBcMjQ0XDI0MiIKKyAgICAgICJcMjEwXDI0NFwyNDJcMjEwXDI0NVwyNDRcMjEyXDI1MVwyNDVcMjEzXDI1MlwyNTFcMjEzXDI1NFwyNTJcMjE1XDI1N1wyNTQiCisgICAgICAiXDIxNVwyNjFcMjU2XDIxN1wyNjFcMjU3XDIyMVwyNjZcMjYxXDIyMVwyNjdcMjYxXDIyMlwyNzNcMjY0XDIyNFwyNzNcMjY3IgorICAgICAgIlwyMjRcMjc0XDI2N1wyMjRcMjc2XDI3M1wyMzBcMzAxXDI3M1wyMzBcMzAyXDI3NFwyMzFcMzA0XDI3NlwyMzFcMzA3XDMwMiIKKyAgICAgICJcMjMzXDMxMlwzMDJcMjM1XDMxMlwzMDRcMjM1XDMxNFwzMDZcMjM2XDMxNlwzMDdcMjQwXDMyMFwzMTFcMjQwXDMyMVwzMTQiCisgICAgICAiXDI0MlwzMjRcMzE1XDI0MlwzMjVcMzE2XDI0NFwzMjdcMzIwXDI0NVwzMzJcMzIxXDI0NVwzMzNcMzIxXDI0NVwzMzRcMzIzIgorICAgICAgIlwyNTFcMzM1XDMyNVwyNTFcMzM1XDMzMFwyNTJcMzQxXDMzMlwyNTRcMzQxXDMzMlwyNTZcMzQ0XDMzNFwyNTZcMzQ2XDMzNCIKKyAgICAgICJcMjU2XDM0N1wzMzdcMjU3XDM0N1wzNDBcMjYxXDM1MFwzNDBcMjYzXDM1MVwzNDJcMjYzXDM1MlwzNDRcMjY0XDM1NFwzNDUiCisgICAgICAiXDI2NlwzNTVcMzQ2XDI2NlwzNTZcMzQ3XDI2N1wzNTdcMzUwXDI3MVwzNjBcMzUxXDI3M1wzNjFcMzUyXDI3M1wzNjJcMzUyIgorICAgICAgIlwyNzRcMzYyXDM1NVwyNzZcMzY0XDM1NlwyNzdcMzY0XDM1N1wyNzdcMzY1XDM2MFwyNzdcMzY1XDM2MFwzMDJcMzY2XDM2MSIKKyAgICAgICJcMzAyXDM2N1wzNjFcMzA0XDM3MFwzNjNcMzA0XDM3MFwzNjNcMzA3XDM3MFwzNjRcMzA3XDM3MVwzNjRcMzExXDM3MVwzNjYiCisgICAgICAiXDMxMlwzNzJcMzY3XDMxMlwzNzJcMzY3XDMxNFwzNzJcMzY3XDMxNlwzNzNcMzcwXDMxNlwzNzNcMzcwXDMyMFwzNzNcMzcxIgorICAgICAgIlwzMjBcMzc0XDM3MVwzMjFcMzc0XDM3MlwzMjNcMzc0XDM3MlwzMjRcMzc1XDM3MlwzMjVcMzc1XDM3MlwzMjVcMzc1XDM3MyIKKyAgICAgICJcMzI3XDM3NVwzNzNcMzMwXDM3NVwzNzRcMzMyXDM3NVwzNzRcMzMzXDM3NVwzNzVcMzM0XDM3NlwzNzVcMzM0XDM3NlwzNzUiCisgICAgICAiXDMzNVwzNzZcMzc1XDMzN1wzNzZcMzc1XDMzN1wzNzZcMzc1XDM0MFwzNzZcMzc2XDM0MlwzNzZcMzc2XDM0NFwzNzZcMzc2IgorICAgICAgIlwzNDRcMzc2XDM3NlwzNDVcMzc2XDM3NlwzNDZcMzc2XDM3NlwzNDdcMzc2XDM3NlwzNTBcMzc3XDM3NlwzNTFcMzc3XDM3NyIKKyAgICAgICJcMzUzXDM3N1wzNzdcMzU0XDM3N1wzNzdcMzU2XDM3N1wzNzdcMzU3XDM3N1wzNzdcMzYxXDM3N1wzNzdcMzYxXDM3N1wzNzciCisgICAgICAiXDM2MVwzNzdcMzc3XDM2NFwzNzdcMzc3XDM2NVwzNzdcMzc3XDM2NlwzNzdcMzc3XDM2N1wzNzdcMzc3XDM2N1wzNzdcMzc3IgorICAgICAgIlwzNzFcMzc3XDM3N1wzNzFcMzc3XDM3N1wzNzJcMzc3XDM3N1wzNzNcMzc3XDM3N1wzNzNcMzc3XDM3N1wzNzRcMzc3XDM3NyIKKyAgICAgICJcMzc1XDM3N1wzNzdcMzc1XDM3N1wzNzdcMzc1XDM3N1wzNzdcMzc2IiwKK307CisKKy8qIENVUlZFIGZvciB0aGUgaGVhdCBzaWduYXR1cmUgZWZmZWN0ICovCitjb25zdCBHc3RHTEVmZmVjdHNDdXJ2ZSBoZWF0X2N1cnZlID0geworICAyNTYsIDEsIDMsCisgICJcMFwwXDBcMFwwXDBcMFwxXDBcMFwxXDBcMFwxXDFcMFwyXDFcMFwyXDFcMVwyXDFcMVwyXDJcMVwyXDJcMVwzXDJcMVwzXDMiCisgICAgICAiXDFcM1wzXDFcNFwzXDFcNFw0XDFcNVw0XDFcNVw1XDJcNVw2XDJcNlw2XDJcNlw3XDJcNlw3XDJcN1w3XDJcN1wxMVwyXDEwIgorICAgICAgIlwxMVwyXDEwXDEyXDNcMTFcMTNcM1wxMVwxM1wzXDExXDE0XDNcMTJcMTVcM1wxMlwxN1wzXDEzXDE3XDNcMTRcMjBcM1wxNCIKKyAgICAgICJcMjJcNFwxNVwyM1w0XDE2XDI0XDRcMTZcMjZcNFwxNlwyN1w0XDE3XDMxXDRcMjBcMzRcNFwyMVwzNFw1XDIxXDQwXDVcMjIiCisgICAgICAiXDQwXDVcMjIkXDVcMjMkXDVcMjUmXDZcMjUoXDZcMjYtXDZcMjYtXDZcMjciICIwXDZcMzEiICIyXDdcMzEiCisgICAgICAiNVw3XDMyO1w3XDM0IgorICAgICAgIjtcN1wzND9cMTBcMzVDXDEwXDM2R1wxMFwzN0xcMTBcNDBWXDExIVZcMTFcIltcMTEkYVwxMSZsXDEyJmxcMTInclwxMih+XDEzIgorICAgICAgIip+XDEzLFwyMDRcMTQsXDIxM1wxNC5cMjIxXDE0L1wyMjdcMTQiICIxXDIzNlwxNSIgIjJcMjQ0XDE1IiAiNFwyNTJcMTUiCisgICAgICAiNVwyNjAiICJcMTYiICI3XDI2N1wxNiIKKyAgICAgICI4XDI3NVwxNzpcMzAyXDE3O1wzMTBcMTc9XDMyM1wyMD9cMzIzXDIxQFwzMzBcMjFEXDMzNVwyMUQiCisgICAgICAiXDM0MlwyMkVcMzQ2XDIySVwzNTNcMjNJXDM1NlwyM0tcMzYyXDI0TVwzNjVcMjROXDM3MFwyNVBcMzcyXDI2UlwzNzRcMjZUIgorICAgICAgIlwzNzZcMjZWXDM3N1wyN1hcMzc3XDI3WlwzNzdcMzBcXFwzNzZcMzFgXDM3NlwzMWBcMzc1XDMyYlwzNzNcMzJkXDM3MVwzMyIKKyAgICAgICJmXDM2NlwzNGpcMzYzXDM0alwzNjBcMzVsXDM1NFwzNm5cMzUwXDM2clwzNDRcMzdyXDMzN1w0MHRcMzMzXDQwd1wzMjYheVwzMjEiCisgICAgICAiXCJ8XDMxNCN+XDMwNyRcMjAxXDMwMSRcMjA0XDI2NyVcMjA3XDI2NyZcMjEyXDI2MSdcMjE0XDI1NChcMjE3XDI0NyhcMjIyIgorICAgICAgIlwyNDEpXDIyNlwyMzQqXDIzMVwyMjcrXDIzNFwyMjIsXDIzN1wyMTYtXDI0MlwyMTEuXDI0NVwyMDUvXDI1MVwyMDEwXDI1NCIKKyAgICAgICJ9MVwyNTd6MlwyNjJ3M1wyNjZ0NFwyNzFwNVwyNzRtNlwyNzdqN1wzMDJmOFwzMDVjOVwzMTBgOlwzMTRcXDtcMzE3WTxcMzIxIgorICAgICAgIlY+XDMyNFM/XDMyN1BAXDMzMkxBXDMzNUlCXDMzN0ZDXDM0MkNFXDM0NEBGXDM0Nz1HXDM1MTtJXDM1MzhJXDM1NThNXDM1NyIKKyAgICAgICIzUFwzNjEwU1wzNjMuVlwzNjUrWVwzNjYpXFxcMzcwJ2BcMzcxJWRcMzcyI2dcMzczXCJsXDM3NFw0MHBcMzc0XDM3dFwzNzQiCisgICAgICAiXDM1dFwzNzVcMzR9XDM3NlwzM1wyMDJcMzc2XDMyXDIwMlwzNzVcMzFcMjEzXDM3NVwzMFwyMjBcMzc1XDI3XDIyNVwzNzVcMjciCisgICAgICAiXDIzMlwzNzNcMjZcMjM3XDM3MlwyNVwyNDRcMzcxXDI0XDI1MVwzNzBcMjNcMjU2XDM2N1wyM1wyNjJcMzY3XDIyXDI2N1wzNjQiCisgICAgICAiXDIxXDI3NFwzNjJcMjBcMzAwXDM2MVwyMFwzMDVcMzU3XDE3XDMxMVwzNTVcMTZcMzExXDM1M1wxNlwzMjJcMzUxXDE1XDMyNiIKKyAgICAgICJcMzQ2XDE1XDMzMlwzNDZcMTRcMzM2XDM0NFwxNFwzNDFcMzM3XDEzXDM0MVwzMzVcMTNcMzUwXDMzMlwxMlwzNTNcMzMwXDExIgorICAgICAgIlwzNTZcMzMwXDExXDM2MFwzMjJcMTBcMzYyXDMyMFwxMFwzNjRcMzIwXDEwXDM2NFwzMTJcN1wzNjZcMzA3XDdcMzY2XDMwNCIKKyAgICAgICJcN1wzNjdcMzAyXDZcMzY3XDI3N1w2XDM3MFwyNzRcNVwzNjdcMjcxXDVcMzY3XDI3MVw1XDM2N1wyNjNcNFwzNjVcMjYwXDQiCisgICAgICAiXDM2NFwyNTVcNFwzNjNcMjUzXDNcMzYyXDI1MFwzXDM2MVwyNDVcM1wzNjBcMjQyXDNcMzU3XDI0MFwzXDM1N1wyMzVcMlwzNTUiCisgICAgICAiXDIzMlwyXDM1NVwyMjdcMlwzNTRcMjI1XDJcMzUzXDIyMVwxXDM1M1wyMTZcMVwzNTNcMjE2XDFcMzUzXDIxM1wxXDM1M1wyMDQiCisgICAgICAiXDFcMzUzXDIwMVwxXDM1NH1cMVwzNTR5XDBcMzU0dlwwXDM1NXJcMFwzNTVuXDBcMzU1alwwXDM1NmZcMFwzNTZiXDBcMzU3IgorICAgICAgIl9cMFwzNTdbXDBcMzU3V1wwXDM1N1NcMFwzNjBPXDBcMzYwT1wwXDM2MUtcMFwzNjFDXDBcMzYyQFwwXDM2MzxcMFwzNjM4XDAiCisgICAgICAiXDM2NDhcMFwzNjQxXDBcMzY1LlwwXDM2NitcMFwzNjYnXDBcMzY3J1wwXDM3MCFcMFwzNzBcMzZcMFwzNzBcMzNcMFwzNzFcMzAiCisgICAgICAiXDBcMzcxXDI2XDBcMzczXDI2XDBcMzczXDIzXDBcMzc0XDE1XDBcMzc0XDEzXDBcMzc1XDEwXDBcMzc1XDVcMFwzNzZcM1wwIiwKK307CisKK2NvbnN0IEdzdEdMRWZmZWN0c0N1cnZlIHNlcGlhX2N1cnZlID0geworICAyNTYsIDEsIDMsCisgICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMVwxXDBcMVwxXDBcMVwxXDFcMlwxXDFcMlwyXDFcM1wyXDFcM1wyXDFcM1wyXDEiCisgICAgICAiXDRcM1wyXDRcM1wyXDRcM1wyXDZcNFwyXDZcNFwyXDZcNFwyXDdcNVwyXDdcNVwzXDExXDZcM1wxMVw2XDNcMTJcN1wzXDEzIgorICAgICAgIlwxMFwzXDE1XDEwXDRcMTZcMTFcNFwxN1wxMVw0XDIxXDEyXDRcMjJcMTNcNFwyMlwxM1w1XDIzXDE0XDVcMjRcMTVcNVwyNiIKKyAgICAgICJcMTZcNlwzMVwyMFw2XDMxXDIxXDZcMzJcMjJcN1wzNFwyMlw3XDM1XDIzXDdcNDBcMjRcMTBcNDBcMjZcMTAhXDI2XDExI1wzMCIKKyAgICAgICJcMTEmXDMxXDEyJlwzMlwxMidcMzRcMTMpXDM0XDEzKlwzN1wxMyxcMzdcMTMtXDQwXDE0LlwiXDE1IiAiMFwiXDE1IgorICAgICAgIjIjXDE3IiAiIiAiMyZcMTciICI0JlwxNyIgIjUnXDIwIiAiOChcMjEiCisgICAgICAiOSlcMjE6KlwyMzwsXDIzPS1cMjNBLlwyNEEwXDI1QjBcMjVDMlwyNkQzIgorICAgICAgIlwzMEg0XDMwSDdcMzFLN1wzMks4XDMyTDlcMzNNOlwzNFA8XDM0UT1cMzVTPlwzN1Q/XDM3VUFcNDBWQiFYQyFaRCNcXEYjXiIKKyAgICAgICJHI15KJGBKJmJLJ2JNJ2VNKGZPKWdQKWlRKmtTLG1ULW1VLW5WLm9YL3JZMHNaMnVdMnZdM3deM3hgNHphNXtjN3xjOH5lOFwxNzciCisgICAgICAiZjlcMjAwaTpcMjAzaTxcMjA0ajxcMjA2az1cMjA3bT5cMjEwbj9cMjExbz9cMjEzcUFcMjE0ckNcMjE1c0NcMjE3dURcMjIwIgorICAgICAgInZEXDIyMXdGXDIyM3hHXDIyNHpIXDIyNXtKXDIyN3xLXDIzMH5LXDIzMVwxNzdMXDIzMlwyMDBNXDIzNFwyMDJPXDIzNVwyMDMiCisgICAgICAiUFwyMzZcMjA0UVwyNDBcMjA2UVwyNDFcMjA3U1wyNDJcMjEwVFwyNDNcMjExVVwyNDVcMjEzVlwyNDZcMjE0WFwyNDdcMjE1IgorICAgICAgIllcMjUwXDIxN1lcMjUyXDIyMFpcMjUzXDIyMVxcXDI1NFwyMjNdXDI1NFwyMjReXDI1NVwyMjVgXDI1N1wyMjdhXDI2MFwyMzAiCisgICAgICAiYlwyNjFcMjMxY1wyNjJcMjMyZVwyNjRcMjM0ZVwyNjVcMjM1ZlwyNjZcMjM2Z1wyNjdcMjQwaVwyNjdcMjQxaVwyNzJcMjQyIgorICAgICAgImtcMjczXDI0M21cMjc0XDI0NW5cMjc0XDI0Nm9cMjc2XDI0N3FcMjc3XDI1MHJcMzAwXDI1MnNcMzAxXDI1M3VcMzAyXDI1NCIKKyAgICAgICJ2XDMwNFwyNTV3XDMwNVwyNTd4XDMwNlwyNTd6XDMwNlwyNjF7XDMwN1wyNjJ8XDMxMFwyNjR+XDMxMFwyNjVcMTc3XDMxM1wyNjYiCisgICAgICAiXDIwMFwzMTRcMjY3XDIwMlwzMTVcMjY3XDIwM1wzMTZcMjcyXDIwNFwzMTdcMjczXDIwNlwzMTdcMjc0XDIwN1wzMjBcMjc2IgorICAgICAgIlwyMTBcMzIyXDI3N1wyMTFcMzIzXDI3N1wyMTNcMzI0XDMwMVwyMTRcMzI1XDMwMlwyMTVcMzI2XDMwNFwyMTdcMzI2XDMwNSIKKyAgICAgICJcMjIwXDMyN1wzMDZcMjIxXDMyN1wzMDdcMjIzXDMzMVwzMTBcMjI0XDMzM1wzMTFcMjI1XDMzNFwzMTFcMjI3XDMzNFwzMTMiCisgICAgICAiXDIyN1wzMzVcMzE1XDIzMVwzMzVcMzE2XDIzMVwzMzdcMzE3XDIzNFwzNDBcMzIwXDIzNVwzNDFcMzIwXDIzNVwzNDFcMzIzIgorICAgICAgIlwyNDBcMzQyXDMyNFwyNDFcMzQzXDMyNFwyNDJcMzQzXDMyNlwyNDNcMzQ1XDMyN1wyNDVcMzQ1XDMzMFwyNDVcMzQ2XDMzMSIKKyAgICAgICJcMjUwXDM0NlwzMzNcMjUyXDM0N1wzMzRcMjUzXDM1MVwzMzVcMjU0XDM1MVwzMzVcMjU1XDM1MVwzMzdcMjU3XDM1MlwzNDAiCisgICAgICAiXDI2MFwzNTNcMzQxXDI2MFwzNTRcMzQyXDI2MlwzNTVcMzQzXDI2NFwzNTVcMzQ0XDI2NVwzNTVcMzQ1XDI2NlwzNTZcMzQ2IgorICAgICAgIlwyNjZcMzU2XDM0N1wyNzJcMzU3XDM1MFwyNzNcMzYwXDM1MVwyNzRcMzYwXDM1MVwyNzZcMzYxXDM1MlwyNzdcMzYxXDM1MyIKKyAgICAgICJcMzAwXDM2MlwzNTNcMzAxXDM2MlwzNTRcMzAyXDM2MlwzNTVcMzA0XDM2MlwzNTZcMzA1XDM2NFwzNTdcMzA1XDM2NFwzNTciCisgICAgICAiXDMxMFwzNjRcMzYwXDMxMVwzNjVcMzYxXDMxM1wzNjVcMzYxXDMxNFwzNjZcMzYyXDMxNVwzNjZcMzYyXDMxNlwzNjZcMzYzIgorICAgICAgIlwzMTZcMzY3XDM2NFwzMjBcMzY3XDM2NFwzMjBcMzY3XDM2NVwzMjRcMzY3XDM2NVwzMjRcMzcwXDM2NlwzMjZcMzcwXDM2NiIKKyAgICAgICJcMzI3XDM3MVwzNjZcMzMwXDM3MVwzNjdcMzMxXDM3MVwzNjdcMzMzXDM3MVwzNzBcMzMzXDM3MlwzNzBcMzM2XDM3MlwzNzAiCisgICAgICAiXDMzNlwzNzJcMzcxXDM0MFwzNzNcMzcxXDM0MVwzNzNcMzcyXDM0MlwzNzNcMzcyXDM0M1wzNzRcMzcyXDM0NFwzNzRcMzczIgorICAgICAgIlwzNDRcMzc0XDM3M1wzNDdcMzc0XDM3NFwzNTBcMzc1XDM3NFwzNTFcMzc1XDM3NFwzNTFcMzc1XDM3NFwzNTJcMzc1XDM3NSIKKyAgICAgICJcMzUyXDM3NlwzNzVcMzUzXDM3NlwzNzZcMzU1XDM3NlwzNzZcMzU2XDM3NlwzNzZcMzU3XDM3N1wzNzdcMzU3IiwKK307CisKK2NvbnN0IEdzdEdMRWZmZWN0c0N1cnZlIHhyYXlfY3VydmUgPSB7CisgIDI1NiwgMSwgMywKKyAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzZcMzc2XDM3NlwzNzVcMzc1XDM3NlwzNzRcMzc1XDM3NVwzNzNcMzc0XDM3NSIKKyAgICAgICJcMzcyXDM3NFwzNzRcMzcxXDM3NFwzNzRcMzcwXDM3M1wzNzNcMzY2XDM3M1wzNzJcMzY2XDM3MlwzNzJcMzY1XDM3MlwzNzEiCisgICAgICAiXDM2M1wzNzFcMzcxXDM2M1wzNzFcMzcwXDM2MlwzNzBcMzcwXDM2MFwzNzBcMzY3XDM2MFwzNjdcMzY2XDM1N1wzNjdcMzY1IgorICAgICAgIlwzNTZcMzY2XDM2NVwzNTVcMzY2XDM2NFwzNTNcMzY1XDM2M1wzNTNcMzY1XDM2M1wzNTJcMzY0XDM2MlwzNTFcMzYzXDM2MiIKKyAgICAgICJcMzQ3XDM2M1wzNjFcMzQ2XDM2MlwzNjFcMzQ1XDM2MlwzNjFcMzQ0XDM2MlwzNjBcMzQzXDM2MVwzNTdcMzQzXDM2MVwzNTYiCisgICAgICAiXDM0MlwzNjBcMzU2XDM0MVwzNjBcMzU2XDM0MFwzNTdcMzU1XDMzNlwzNTZcMzU0XDMzNlwzNTZcMzU0XDMzNVwzNTVcMzUzIgorICAgICAgIlwzMzRcMzU1XDM1M1wzMzNcMzU1XDM1MlwzMzFcMzU0XDM1MVwzMzFcMzUzXDM1MVwzMzBcMzUzXDM1MFwzMjdcMzUzXDM1MCIKKyAgICAgICJcMzI1XDM1MlwzNDdcMzI1XDM1MVwzNDdcMzI0XDM1MFwzNDZcMzIzXDM1MFwzNDVcMzIyXDM0N1wzNDRcMzIxXDM0N1wzNDQiCisgICAgICAiXDMyMFwzNDdcMzQ0XDMxN1wzNDZcMzQzXDMxNlwzNDZcMzQyXDMxNVwzNDVcMzQxXDMxNFwzNDRcMzQxXDMxM1wzNDRcMzQwIgorICAgICAgIlwzMTJcMzQ0XDM0MFwzMTFcMzQzXDMzN1wzMTBcMzQyXDMzN1wzMDdcMzQyXDMzNVwzMDZcMzQxXDMzNVwzMDVcMzQxXDMzNSIKKyAgICAgICJcMzAzXDM0MFwzMzRcMzAzXDMzN1wzMzNcMzAyXDMzN1wzMzNcMzAxXDMzN1wzMzJcMzAwXDMzNlwzMzFcMjc2XDMzNVwzMzEiCisgICAgICAiXDI3NlwzMzRcMzMwXDI3NFwzMzRcMzMwXDI3NFwzMzRcMzI3XDI3M1wzMzNcMzI3XDI3MlwzMzNcMzI2XDI3MVwzMzJcMzI1IgorICAgICAgIlwyNzBcMzMyXDMyNVwyNjdcMzMxXDMyNFwyNjZcMzMwXDMyM1wyNjVcMzMwXDMyM1wyNjRcMzI3XDMyMlwyNjNcMzI3XDMyMSIKKyAgICAgICJcMjYyXDMyNlwzMjBcMjYxXDMyNVwzMjBcMjU3XDMyNVwzMTdcMjU3XDMyNFwzMTdcMjU2XDMyNFwzMTZcMjU0XDMyM1wzMTUiCisgICAgICAiXDI1NFwzMjJcMzE1XDI1M1wzMjJcMzE0XDI1MlwzMjFcMzEzXDI1MVwzMjFcMzEzXDI1MFwzMjBcMzEyXDI0NlwzMTdcMzExIgorICAgICAgIlwyNDVcMzE3XDMxMVwyNDVcMzE2XDMxMFwyNDRcMzE2XDMwN1wyNDNcMzE1XDMwN1wyNDJcMzE0XDMwNlwyNDFcMzE0XDMwNSIKKyAgICAgICJcMjQwXDMxMlwzMDVcMjM3XDMxMlwzMDRcMjM2XDMxMlwzMDNcMjM1XDMxMVwzMDNcMjM0XDMxMVwzMDJcMjMzXDMwN1wzMDEiCisgICAgICAiXDIzMlwzMDdcMzAwXDIzMVwzMDdcMzAwXDIzMFwzMDZcMjc3XDIyN1wzMDVcMjc2XDIyNlwzMDVcMjc2XDIyNVwzMDRcMjc1IgorICAgICAgIlwyMjRcMzAzXDI3NFwyMjNcMzAzXDI3M1wyMjJcMzAyXDI3M1wyMjFcMzAxXDI3MlwyMjBcMzAxXDI3MVwyMTdcMzAwXDI3MCIKKyAgICAgICJcMjE2XDI3N1wyNzBcMjE1XDI3N1wyNjdcMjE0XDI3NlwyNjZcMjEzXDI3NVwyNjVcMjEyXDI3NVwyNjVcMjExXDI3NFwyNjQiCisgICAgICAiXDIxMFwyNzNcMjYzXDIwN1wyNzNcMjYyXDIwNlwyNzJcMjYyXDIwNVwyNzFcMjYxXDIwNFwyNzBcMjYwXDIwM1wyNzBcMjU3IgorICAgICAgIlwyMDJcMjY3XDI1N1wyMDFcMjY2XDI1NlwyMDBcMjY2XDI1NVwxNzdcMjY1XDI1NH5cMjY0XDI1M31cMjYzXDI1M3xcMjYzXDI1MiIKKyAgICAgICJ7XDI2MlwyNTF6XDI2MVwyNTB5XDI2MFwyNDd4XDI2MFwyNDd3XDI1N1wyNDZ2XDI1NlwyNDV1XDI1NVwyNDR0XDI1NVwyNDMiCisgICAgICAic1wyNTRcMjQzclwyNTNcMjQycVwyNTJcMjQxcFwyNTJcMjQwb1wyNTFcMjM3blwyNTBcMjM2bVwyNDdcMjM1bFwyNDZcMjM1IgorICAgICAgImxcMjQ2XDIzNWpcMjQ1XDIzM2lcMjQ0XDIzMmhcMjQzXDIzMWdcMjQyXDIzMGZcMjQyXDIyN2VcMjQxXDIyNmRcMjQwXDIyNiIKKyAgICAgICJjXDIzN1wyMjViXDIzNlwyMjRhXDIzNVwyMjNgXDIzNFwyMjJfXDIzNFwyMjFfXDIzM1wyMjBdXDIzMlwyMTdcXFwyMzFcMjE2IgorICAgICAgIlxcXDIzMFwyMTVaXDIyN1wyMTRZXDIyNlwyMTRYXDIyNlwyMTNXXDIyNVwyMTJWXDIyNFwyMTFVXDIyM1wyMTBUXDIyMlwyMDciCisgICAgICAiU1wyMjFcMjA2UlwyMjFcMjA1UVwyMTdcMjA0UFwyMTZcMjAzT1wyMTVcMjAyTlwyMTVcMjAxTVwyMTRcMjAwTVwyMTNcMTc3IgorICAgICAgIktcMjEyfkpcMjExfUlcMjExfEhcMjEwfEdcMjA2ekdcMjA1ekVcMjA0eERcMjAzdkNcMjAzdkJcMjAxdEFcMjAwc0BcMjAwcSIKKyAgICAgICJAfnA+fW8+fG88e2w8eWs7eGk5d2g4d2c4dGU2c2Q1cWQ0cGEzbl8ybV0xa1xcMGpcXDBoWS5mVy1kVSxjVCthUipfUClfTygiCisgICAgICAiXU0nWUsnWEklVkkkVEYkUkRcIk9CIU1AXDQwSz9cMzdJPVwzN0c9XDM1RTlcMzRDOVwzNEE1XDMzPjVcMzE8MlwzMTwwXDI3IgorICAgICAgIjouXDI3IiAiNSxcMjYiICIzKlwyNCIKKyAgICAgICIxKlwyMy4mXDIyLiZcMjIqXCJcMjEnXDQwXDE3JVwzNlwxNlwiXDM0XDE1XCJcMzJcMTQiCisgICAgICAiXDM2XDMyXDEzXDMzXDI2XDEzXDMxXDI0XDExXDI2XDIyXDExXDI0XDIwXDdcMjRcMTZcNlwyMVwxNlw1XDE0XDE0XDRcMTJcMTAiCisgICAgICAiXDNcN1w2XDNcNVw0XDFcMlwyIiwKK307CmRpZmYgLS1naXQgYS9leHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuaCBiL2V4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0c2N1cnZlcy5oCmluZGV4IGUwZTk4YTUuLjliNTY2YTUgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0c2N1cnZlcy5oCisrKyBiL2V4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0c2N1cnZlcy5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaWZuZGVmIF9fR1NUX0dMX0VGRkVDVFNfVEVYVFVSRVNfSF9fCiAjZGVmaW5lIF9fR1NUX0dMX0VGRkVDVFNfVEVYVFVSRVNfSF9fCiAKKyNpbmNsdWRlIDxnbGliLmg+CiAKIHN0cnVjdCBfR3N0R0xFZmZlY3RzQ3VydmUgewogICBndWludCAJIHdpZHRoOwpAQCAtMzIsMTgxICszMywxNSBAQAogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMRWZmZWN0c0N1cnZlIEdzdEdMRWZmZWN0c0N1cnZlOwogCiAvKiBDVVJWRSBmb3IgdGhlIGhlYXQgc2lnbmF0dXJlIGVmZmVjdCAqLwotc3RhdGljIGNvbnN0IEdzdEdMRWZmZWN0c0N1cnZlIHhwcm9fY3VydmUgPSB7Ci0gIDI1NiwgMSwgMywKLSAgIlwwXDBcMzdcMFwwXDM3XDBcMVw0MFwwXDIhXDBcMlwiXDBcM1wiXDFcNCVcMVw0JVwxXDUlXDFcNSdcMVw3J1wxXDcoXDFcNyIKLSAgIihcMVwxMCpcMVwxMStcMVwxMSxcMVwxMixcMVwxMy9cMVwxNC9cMVwxNCIiMVwyXDE1IiIxXDJcMTUiIjFcMlwxNiIiNFwyXDE3IgotICAiIiI0XDNcMTciIjVcM1wyMiIiN1wzXDIyIiI3XDNcMjMiIjhcM1wyNCIiOVwzXDI1O1wzXDI2O1wzXDI3PFwzXDI3PVw0XDMxIgotICAiPVw0XDMzP1w0XDM0QFw1XDM0Qlw1XDM1Q1w1XDM2RFw1XDQwRFw1XDQwR1w1IUdcNlwiSFw2JEhcNyZKXDcmS1w3Kk1cNypNIgotICAiXDEwK05cMTAtUFwxMS1QXDExL1JcMTEiIjNSXDExIiIzVFwxMiIiNFVcMTIiIjVVXDEzIiI3V1wxNCIiOFlcMTQiIjlZXDE0IgotICAiPFlcMTY9W1wxNkBeXDE2QF5cMTdDXlwxN0RgXDIwRmBcMjBKYlwyMkpiXDIyS2NcMjNNZVwyNE5mXDI1UWdcMjZSZ1wyN1RpIgotICAiXDI3V2pcMzBYbFwzMVlsXDMzXFxtXDM0XnBcMzVgcFw0MGJwXDQwZnEhZnIkZ3QkbHQlbHUnbXYocHgqcXktdHkvdXoveHwwIgotICAieX0zfH00fX41XDE3N1wyMDE4XDIwM1wyMDE5XDIwM1wyMDE7XDIwNFwyMDI9XDIwN1wyMDM/XDIxMFwyMDRAXDIxNFwyMDRDIgotICAiXDIxNFwyMDZEXDIxNlwyMDdHXDIxN1wyMTBIXDIyM1wyMTFLXDIyM1wyMTFNXDIyNVwyMTJQXDIyNlwyMTRRXDIzMVwyMTVUIgotICAiXDIzMlwyMTVVXDIzNFwyMTZYXDIzNVwyMTdZXDI0MFwyMjBcXFwyNDFcMjIwXlwyNDNcMjIxYFwyNDRcMjIzYlwyNDZcMjI0IgotICAiZVwyNTBcMjI0ZlwyNTJcMjI1aVwyNTNcMjI2bFwyNTVcMjI3bVwyNTZcMjMxcFwyNjFcMjMxcVwyNjJcMjMydFwyNjRcMjMzIgotICAidlwyNjVcMjM0eFwyNjdcMjM0elwyNzBcMjM1fFwyNzFcMjM2flwyNzRcMjQwXDIwMVwyNzVcMjQwXDIwMlwyNzdcMjQxXDIwNCIKLSAgIlwzMDBcMjQyXDIwN1wzMDJcMjQzXDIxMFwzMDNcMjQzXDIxMlwzMDVcMjQ0XDIxNFwzMDZcMjQ1XDIxNlwzMDdcMjQ2XDIyMCIKLSAgIlwzMTFcMjUwXDIyMVwzMTNcMjUwXDIyNFwzMTVcMjUxXDIyNlwzMTZcMjUyXDIyN1wzMTdcMjUzXDIzMlwzMjFcMjUzXDIzNCIKLSAgIlwzMjJcMjU0XDIzNVwzMjNcMjU1XDI0MFwzMjVcMjU2XDI0MlwzMjZcMjU2XDI0MlwzMzBcMjU2XDI0NVwzMzFcMjYxXDI1MCIKLSAgIlwzMzFcMjYyXDI1MVwzMzJcMjYyXDI1M1wzMzRcMjYzXDI1NVwzMzVcMjY0XDI1NlwzMzZcMjY1XDI2MVwzNDBcMjY2XDI2MyIKLSAgIlwzNDFcMjY2XDI2NFwzNDJcMjY3XDI2NlwzNDNcMjcwXDI3MFwzNDRcMjcxXDI3MVwzNDRcMjcxXDI3MVwzNDZcMjczXDI3NiIKLSAgIlwzNDdcMjc0XDI3N1wzNTBcMjc1XDI3N1wzNTFcMjc1XDMwMlwzNTJcMjc2XDMwNFwzNTNcMjc3XDMwNlwzNTNcMzAwXDMwNyIKLSAgIlwzNTVcMzAwXDMxMVwzNTZcMzAxXDMxNFwzNTZcMzAyXDMxNVwzNTdcMzAzXDMxN1wzNjBcMzA0XDMyMFwzNjBcMzA0XDMyMiIKLSAgIlwzNjFcMzA1XDMyM1wzNjJcMzA2XDMyNVwzNjJcMzA3XDMyN1wzNjNcMzA3XDMzMFwzNjNcMzEwXDMzMFwzNjRcMzExXDMzMyIKLSAgIlwzNjRcMzEzXDMzNFwzNjVcMzEzXDMzNlwzNjVcMzE0XDM0MFwzNjVcMzE0XDM0MlwzNjZcMzE2XDM0MlwzNjZcMzE2XDM0NiIKLSAgIlwzNjdcMzE3XDM0N1wzNjdcMzIwXDM1MVwzNjdcMzIwXDM1M1wzNzBcMzIyXDM1NFwzNzBcMzIyXDM1NlwzNzBcMzIzXDM1NiIKLSAgIlwzNzBcMzI0XDM2MFwzNzFcMzI1XDM2MFwzNzFcMzI1XDM2M1wzNzFcMzI2XDM2M1wzNzFcMzI3XDM2M1wzNzJcMzMwXDM2NSIKLSAgIlwzNzJcMzMwXDM2NlwzNzJcMzMxXDM2NlwzNzJcMzMxXDM3MFwzNzJcMzMyXDM3MVwzNzNcMzMyXDM3MVwzNzNcMzMzXDM3MiIKLSAgIlwzNzNcMzM0XDM3M1wzNzNcMzM1XDM3M1wzNzNcMzM2XDM3NFwzNzNcMzM2XDM3NFwzNzRcMzM3XDM3NFwzNzRcMzQwXDM3NSIKLSAgIlwzNzRcMzQxXDM3NVwzNzRcMzQxXDM3NlwzNzRcMzQyXDM3NlwzNzRcMzQzXDM3NlwzNzRcMzQ0XDM3NlwzNzRcMzQ0XDM3NyIKLSAgIlwzNzRcMzQ1XDM3N1wzNzRcMzQ2XDM3N1wzNzVcMzQ2XDM3N1wzNzVcMzQ2XDM3N1wzNzVcMzQ3XDM3N1wzNzVcMzUwXDM3NyIKLSAgIlwzNzVcMzUxXDM3N1wzNzVcMzUyXDM3N1wzNzVcMzUyXDM3N1wzNzVcMzUyXDM3N1wzNzVcMzUzXDM3N1wzNzVcMzUzXDM3NyIKLSAgIlwzNzZcMzU0XDM3N1wzNzZcMzU0XDM3N1wzNzZcMzU2XDM3N1wzNzZcMzU2XDM3N1wzNzZcMzU2XDM3N1wzNzZcMzU3XDM3NyIKLSAgIlwzNzZcMzYwXDM3N1wzNzZcMzYwXDM3N1wzNzZcMzYwXDM3N1wzNzZcMzYwXDM3N1wzNzZcMzYyXDM3N1wzNzZcMzYyXDM3NyIKLSAgIlwzNzZcMzYzXDM3N1wzNzZcMzYzXDM3N1wzNzZcMzYzXDM3N1wzNzZcMzYzXDM3N1wzNzZcMzY0XDM3N1wzNzZcMzY0XDM3NyIKLSAgIlwzNzZcMzY1XDM3N1wzNzdcMzY1XDM3N1wzNzdcMzY2XDM3N1wzNzdcMzY2XDM3N1wzNzdcMzY2XDM3N1wzNzdcMzY3XDM3NyIKLSAgIlwzNzdcMzY3XDM3N1wzNzdcMzY3XDM3N1wzNzdcMzcwIiwKLX07CitleHRlcm4gY29uc3QgR3N0R0xFZmZlY3RzQ3VydmUgeHByb19jdXJ2ZTsKIAotc3RhdGljIGNvbnN0IEdzdEdMRWZmZWN0c0N1cnZlIGx1bWFfeHByb19jdXJ2ZSA9IHsKLSAgMjU2LCAxLCAzLAotICAiXDBcMFwxXDBcMVwxXDBcMVwyXDBcMVwyXDBcMVwyXDBcMVwyXDBcMVwzXDBcMlwzXDBcMlw0XDBcMlw0XDBcMlw1XDBcMlw2IgotICAiXDBcM1w2XDBcM1w2XDBcM1w3XDBcM1wxMFwwXDRcMTBcMFw0XDExXDBcNFwxMlwwXDRcMTJcMVw0XDEzXDFcNVwxNFwxXDVcMTUiCi0gICJcMVw1XDE1XDFcNVwxNlwxXDVcMTdcMVw2XDE3XDFcNlwyMFwxXDdcMjFcMVw3XDIzXDJcMTBcMjNcMlwxMFwyNFwyXDEwXDI0IgotICAiXDJcMTFcMjZcMlwxMVwyN1wyXDExXDMwXDNcMTFcMzFcM1wxMlwzMVwzXDEzXDMyXDNcMTNcMzNcNFwxM1wzNFw0XDE0XDM1IgotICAiXDRcMTRcMzZcNFwxNVwzN1w1XDE1XDQwXDVcMTVcIlw2XDE2I1w2XDE3I1w2XDIwJFw3XDIwJVw3XDIwJVwxMFwyMSZcMTBcMjIiCi0gICInXDEwXDIyKVwxMVwyNCpcMTFcMjQqXDEyXDI0K1wxMlwyNi5cMTNcMjYuXDE0XDI3LlwxNFwzMC9cMTVcMzEiIjFcMTVcMzEiCi0gICIiIjJcMTZcMzIiIjNcMTZcMzMiIjNcMjBcMzMiIjVcMjBcMzUiIjZcMjBcMzYiIjdcMjJcMzciIjdcMjNcIjlcMjMjOVwyNCQiCi0gICI6XDI1JDxcMjcmPFwyNyc9XDMxJz9cMzEpP1wzMipAXDM1K0JcMzUtQ1wzNi5DXDM3IiIxRVwiMkYjM0gkNUgmNkknN0kpN0siCi0gICIrOk0tPE4tPE4xQE4xQlEyQlE2Q1E2RVU3SFU8SVU9SVZATlhATlhCUVpDU1tGVVtIVV1JVl9NWl9OW19RXWBTX2JVYGRYYmUiCi0gICJaYmVdZ2ddaWdgamlgampkbGplbmxncGxqcW5wd3Bwd3BxeHFzenF3fHN4fXV8XDIwMXV9XDIwM3dcMTc3XDIwNHhcMTc3XDIwNiIKLSAgInhcMjA0XDIxMHhcMjA0XDIxMnpcMjEyXDIxM3xcMjEyXDIxN31cMjE3XDIyMX1cMjIxXDIyMn1cMjIyXDIyNFwxNzdcMjI2XDIyNCIKLSAgIlwyMDFcMjI2XDIyNlwyMDNcMjMwXDIzM1wyMDNcMjM1XDIzNVwyMDRcMjM2XDIzNVwyMDRcMjM2XDIzNlwyMTBcMjQ0XDI0MiIKLSAgIlwyMTBcMjQ0XDI0MlwyMTBcMjQ1XDI0NFwyMTJcMjUxXDI0NVwyMTNcMjUyXDI1MVwyMTNcMjU0XDI1MlwyMTVcMjU3XDI1NCIKLSAgIlwyMTVcMjYxXDI1NlwyMTdcMjYxXDI1N1wyMjFcMjY2XDI2MVwyMjFcMjY3XDI2MVwyMjJcMjczXDI2NFwyMjRcMjczXDI2NyIKLSAgIlwyMjRcMjc0XDI2N1wyMjRcMjc2XDI3M1wyMzBcMzAxXDI3M1wyMzBcMzAyXDI3NFwyMzFcMzA0XDI3NlwyMzFcMzA3XDMwMiIKLSAgIlwyMzNcMzEyXDMwMlwyMzVcMzEyXDMwNFwyMzVcMzE0XDMwNlwyMzZcMzE2XDMwN1wyNDBcMzIwXDMxMVwyNDBcMzIxXDMxNCIKLSAgIlwyNDJcMzI0XDMxNVwyNDJcMzI1XDMxNlwyNDRcMzI3XDMyMFwyNDVcMzMyXDMyMVwyNDVcMzMzXDMyMVwyNDVcMzM0XDMyMyIKLSAgIlwyNTFcMzM1XDMyNVwyNTFcMzM1XDMzMFwyNTJcMzQxXDMzMlwyNTRcMzQxXDMzMlwyNTZcMzQ0XDMzNFwyNTZcMzQ2XDMzNCIKLSAgIlwyNTZcMzQ3XDMzN1wyNTdcMzQ3XDM0MFwyNjFcMzUwXDM0MFwyNjNcMzUxXDM0MlwyNjNcMzUyXDM0NFwyNjRcMzU0XDM0NSIKLSAgIlwyNjZcMzU1XDM0NlwyNjZcMzU2XDM0N1wyNjdcMzU3XDM1MFwyNzFcMzYwXDM1MVwyNzNcMzYxXDM1MlwyNzNcMzYyXDM1MiIKLSAgIlwyNzRcMzYyXDM1NVwyNzZcMzY0XDM1NlwyNzdcMzY0XDM1N1wyNzdcMzY1XDM2MFwyNzdcMzY1XDM2MFwzMDJcMzY2XDM2MSIKLSAgIlwzMDJcMzY3XDM2MVwzMDRcMzcwXDM2M1wzMDRcMzcwXDM2M1wzMDdcMzcwXDM2NFwzMDdcMzcxXDM2NFwzMTFcMzcxXDM2NiIKLSAgIlwzMTJcMzcyXDM2N1wzMTJcMzcyXDM2N1wzMTRcMzcyXDM2N1wzMTZcMzczXDM3MFwzMTZcMzczXDM3MFwzMjBcMzczXDM3MSIKLSAgIlwzMjBcMzc0XDM3MVwzMjFcMzc0XDM3MlwzMjNcMzc0XDM3MlwzMjRcMzc1XDM3MlwzMjVcMzc1XDM3MlwzMjVcMzc1XDM3MyIKLSAgIlwzMjdcMzc1XDM3M1wzMzBcMzc1XDM3NFwzMzJcMzc1XDM3NFwzMzNcMzc1XDM3NVwzMzRcMzc2XDM3NVwzMzRcMzc2XDM3NSIKLSAgIlwzMzVcMzc2XDM3NVwzMzdcMzc2XDM3NVwzMzdcMzc2XDM3NVwzNDBcMzc2XDM3NlwzNDJcMzc2XDM3NlwzNDRcMzc2XDM3NiIKLSAgIlwzNDRcMzc2XDM3NlwzNDVcMzc2XDM3NlwzNDZcMzc2XDM3NlwzNDdcMzc2XDM3NlwzNTBcMzc3XDM3NlwzNTFcMzc3XDM3NyIKLSAgIlwzNTNcMzc3XDM3N1wzNTRcMzc3XDM3N1wzNTZcMzc3XDM3N1wzNTdcMzc3XDM3N1wzNjFcMzc3XDM3N1wzNjFcMzc3XDM3NyIKLSAgIlwzNjFcMzc3XDM3N1wzNjRcMzc3XDM3N1wzNjVcMzc3XDM3N1wzNjZcMzc3XDM3N1wzNjdcMzc3XDM3N1wzNjdcMzc3XDM3NyIKLSAgIlwzNzFcMzc3XDM3N1wzNzFcMzc3XDM3N1wzNzJcMzc3XDM3N1wzNzNcMzc3XDM3N1wzNzNcMzc3XDM3N1wzNzRcMzc3XDM3NyIKLSAgIlwzNzVcMzc3XDM3N1wzNzVcMzc3XDM3N1wzNzVcMzc3XDM3N1wzNzYiLAotfTsKK2V4dGVybiBjb25zdCBHc3RHTEVmZmVjdHNDdXJ2ZSBsdW1hX3hwcm9fY3VydmU7CiAKIC8qIENVUlZFIGZvciB0aGUgaGVhdCBzaWduYXR1cmUgZWZmZWN0ICovCi1zdGF0aWMgY29uc3QgR3N0R0xFZmZlY3RzQ3VydmUgaGVhdF9jdXJ2ZSA9IHsKLSAgMjU2LCAxLCAzLAotICAiXDBcMFwwXDBcMFwwXDBcMVwwXDBcMVwwXDBcMVwxXDBcMlwxXDBcMlwxXDFcMlwxXDFcMlwyXDFcMlwyXDFcM1wyXDFcM1wzIgotICAiXDFcM1wzXDFcNFwzXDFcNFw0XDFcNVw0XDFcNVw1XDJcNVw2XDJcNlw2XDJcNlw3XDJcNlw3XDJcN1w3XDJcN1wxMVwyXDEwIgotICAiXDExXDJcMTBcMTJcM1wxMVwxM1wzXDExXDEzXDNcMTFcMTRcM1wxMlwxNVwzXDEyXDE3XDNcMTNcMTdcM1wxNFwyMFwzXDE0IgotICAiXDIyXDRcMTVcMjNcNFwxNlwyNFw0XDE2XDI2XDRcMTZcMjdcNFwxN1wzMVw0XDIwXDM0XDRcMjFcMzRcNVwyMVw0MFw1XDIyIgotICAiXDQwXDVcMjIkXDVcMjMkXDVcMjUmXDZcMjUoXDZcMjYtXDZcMjYtXDZcMjciIjBcNlwzMSIiMlw3XDMxIiI1XDdcMzI7XDdcMzQiCi0gICI7XDdcMzQ/XDEwXDM1Q1wxMFwzNkdcMTBcMzdMXDEwXDQwVlwxMSFWXDExXCJbXDExJGFcMTEmbFwxMiZsXDEyJ3JcMTIoflwxMyIKLSAgIip+XDEzLFwyMDRcMTQsXDIxM1wxNC5cMjIxXDE0L1wyMjdcMTQiIjFcMjM2XDE1IiIyXDI0NFwxNSIiNFwyNTJcMTUiIjVcMjYwIgotICAiXDE2IiI3XDI2N1wxNiIiOFwyNzVcMTc6XDMwMlwxNztcMzEwXDE3PVwzMjNcMjA/XDMyM1wyMUBcMzMwXDIxRFwzMzVcMjFEIgotICAiXDM0MlwyMkVcMzQ2XDIySVwzNTNcMjNJXDM1NlwyM0tcMzYyXDI0TVwzNjVcMjROXDM3MFwyNVBcMzcyXDI2UlwzNzRcMjZUIgotICAiXDM3NlwyNlZcMzc3XDI3WFwzNzdcMjdaXDM3N1wzMFxcXDM3NlwzMWBcMzc2XDMxYFwzNzVcMzJiXDM3M1wzMmRcMzcxXDMzIgotICAiZlwzNjZcMzRqXDM2M1wzNGpcMzYwXDM1bFwzNTRcMzZuXDM1MFwzNnJcMzQ0XDM3clwzMzdcNDB0XDMzM1w0MHdcMzI2IXlcMzIxIgotICAiXCJ8XDMxNCN+XDMwNyRcMjAxXDMwMSRcMjA0XDI2NyVcMjA3XDI2NyZcMjEyXDI2MSdcMjE0XDI1NChcMjE3XDI0NyhcMjIyIgotICAiXDI0MSlcMjI2XDIzNCpcMjMxXDIyNytcMjM0XDIyMixcMjM3XDIxNi1cMjQyXDIxMS5cMjQ1XDIwNS9cMjUxXDIwMTBcMjU0IgotICAifTFcMjU3ejJcMjYydzNcMjY2dDRcMjcxcDVcMjc0bTZcMjc3ajdcMzAyZjhcMzA1YzlcMzEwYDpcMzE0XFw7XDMxN1k8XDMyMSIKLSAgIlY+XDMyNFM/XDMyN1BAXDMzMkxBXDMzNUlCXDMzN0ZDXDM0MkNFXDM0NEBGXDM0Nz1HXDM1MTtJXDM1MzhJXDM1NThNXDM1NyIKLSAgIjNQXDM2MTBTXDM2My5WXDM2NStZXDM2NilcXFwzNzAnYFwzNzElZFwzNzIjZ1wzNzNcImxcMzc0XDQwcFwzNzRcMzd0XDM3NCIKLSAgIlwzNXRcMzc1XDM0fVwzNzZcMzNcMjAyXDM3NlwzMlwyMDJcMzc1XDMxXDIxM1wzNzVcMzBcMjIwXDM3NVwyN1wyMjVcMzc1XDI3IgotICAiXDIzMlwzNzNcMjZcMjM3XDM3MlwyNVwyNDRcMzcxXDI0XDI1MVwzNzBcMjNcMjU2XDM2N1wyM1wyNjJcMzY3XDIyXDI2N1wzNjQiCi0gICJcMjFcMjc0XDM2MlwyMFwzMDBcMzYxXDIwXDMwNVwzNTdcMTdcMzExXDM1NVwxNlwzMTFcMzUzXDE2XDMyMlwzNTFcMTVcMzI2IgotICAiXDM0NlwxNVwzMzJcMzQ2XDE0XDMzNlwzNDRcMTRcMzQxXDMzN1wxM1wzNDFcMzM1XDEzXDM1MFwzMzJcMTJcMzUzXDMzMFwxMSIKLSAgIlwzNTZcMzMwXDExXDM2MFwzMjJcMTBcMzYyXDMyMFwxMFwzNjRcMzIwXDEwXDM2NFwzMTJcN1wzNjZcMzA3XDdcMzY2XDMwNCIKLSAgIlw3XDM2N1wzMDJcNlwzNjdcMjc3XDZcMzcwXDI3NFw1XDM2N1wyNzFcNVwzNjdcMjcxXDVcMzY3XDI2M1w0XDM2NVwyNjBcNCIKLSAgIlwzNjRcMjU1XDRcMzYzXDI1M1wzXDM2MlwyNTBcM1wzNjFcMjQ1XDNcMzYwXDI0MlwzXDM1N1wyNDBcM1wzNTdcMjM1XDJcMzU1IgotICAiXDIzMlwyXDM1NVwyMjdcMlwzNTRcMjI1XDJcMzUzXDIyMVwxXDM1M1wyMTZcMVwzNTNcMjE2XDFcMzUzXDIxM1wxXDM1M1wyMDQiCi0gICJcMVwzNTNcMjAxXDFcMzU0fVwxXDM1NHlcMFwzNTR2XDBcMzU1clwwXDM1NW5cMFwzNTVqXDBcMzU2ZlwwXDM1NmJcMFwzNTciCi0gICJfXDBcMzU3W1wwXDM1N1dcMFwzNTdTXDBcMzYwT1wwXDM2ME9cMFwzNjFLXDBcMzYxQ1wwXDM2MkBcMFwzNjM8XDBcMzYzOFwwIgotICAiXDM2NDhcMFwzNjQxXDBcMzY1LlwwXDM2NitcMFwzNjYnXDBcMzY3J1wwXDM3MCFcMFwzNzBcMzZcMFwzNzBcMzNcMFwzNzFcMzAiCi0gICJcMFwzNzFcMjZcMFwzNzNcMjZcMFwzNzNcMjNcMFwzNzRcMTVcMFwzNzRcMTNcMFwzNzVcMTBcMFwzNzVcNVwwXDM3NlwzXDAiLAotfTsKK2V4dGVybiBjb25zdCBHc3RHTEVmZmVjdHNDdXJ2ZSBoZWF0X2N1cnZlOwogCi1zdGF0aWMgY29uc3QgR3N0R0xFZmZlY3RzQ3VydmUgc2VwaWFfY3VydmUgPSB7Ci0gIDI1NiwgMSwgMywKLSAgIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDFcMFwxXDFcMFwxXDFcMFwxXDFcMVwyXDFcMVwyXDJcMVwzXDJcMVwzXDJcMVwzXDJcMSIKLSAgIlw0XDNcMlw0XDNcMlw0XDNcMlw2XDRcMlw2XDRcMlw2XDRcMlw3XDVcMlw3XDVcM1wxMVw2XDNcMTFcNlwzXDEyXDdcM1wxMyIKLSAgIlwxMFwzXDE1XDEwXDRcMTZcMTFcNFwxN1wxMVw0XDIxXDEyXDRcMjJcMTNcNFwyMlwxM1w1XDIzXDE0XDVcMjRcMTVcNVwyNiIKLSAgIlwxNlw2XDMxXDIwXDZcMzFcMjFcNlwzMlwyMlw3XDM0XDIyXDdcMzVcMjNcN1w0MFwyNFwxMFw0MFwyNlwxMCFcMjZcMTEjXDMwIgotICAiXDExJlwzMVwxMiZcMzJcMTInXDM0XDEzKVwzNFwxMypcMzdcMTMsXDM3XDEzLVw0MFwxNC5cIlwxNSIiMFwiXDE1IiIyI1wxNyIKLSAgIiIiMyZcMTciIjQmXDE3IiI1J1wyMCIiOChcMjEiIjkpXDIxOipcMjM8LFwyMz0tXDIzQS5cMjRBMFwyNUIwXDI1QzJcMjZEMyIKLSAgIlwzMEg0XDMwSDdcMzFLN1wzMks4XDMyTDlcMzNNOlwzNFA8XDM0UT1cMzVTPlwzN1Q/XDM3VUFcNDBWQiFYQyFaRCNcXEYjXiIKLSAgIkcjXkokYEomYksnYk0nZU0oZk8pZ1ApaVEqa1MsbVQtbVUtblYub1gvclkwc1oydV0ydl0zd14zeGA0emE1e2M3fGM4fmU4XDE3NyIKLSAgImY5XDIwMGk6XDIwM2k8XDIwNGo8XDIwNms9XDIwN20+XDIxMG4/XDIxMW8/XDIxM3FBXDIxNHJDXDIxNXNDXDIxN3VEXDIyMCIKLSAgInZEXDIyMXdGXDIyM3hHXDIyNHpIXDIyNXtKXDIyN3xLXDIzMH5LXDIzMVwxNzdMXDIzMlwyMDBNXDIzNFwyMDJPXDIzNVwyMDMiCi0gICJQXDIzNlwyMDRRXDI0MFwyMDZRXDI0MVwyMDdTXDI0MlwyMTBUXDI0M1wyMTFVXDI0NVwyMTNWXDI0NlwyMTRYXDI0N1wyMTUiCi0gICJZXDI1MFwyMTdZXDI1MlwyMjBaXDI1M1wyMjFcXFwyNTRcMjIzXVwyNTRcMjI0XlwyNTVcMjI1YFwyNTdcMjI3YVwyNjBcMjMwIgotICAiYlwyNjFcMjMxY1wyNjJcMjMyZVwyNjRcMjM0ZVwyNjVcMjM1ZlwyNjZcMjM2Z1wyNjdcMjQwaVwyNjdcMjQxaVwyNzJcMjQyIgotICAia1wyNzNcMjQzbVwyNzRcMjQ1blwyNzRcMjQ2b1wyNzZcMjQ3cVwyNzdcMjUwclwzMDBcMjUyc1wzMDFcMjUzdVwzMDJcMjU0IgotICAidlwzMDRcMjU1d1wzMDVcMjU3eFwzMDZcMjU3elwzMDZcMjYxe1wzMDdcMjYyfFwzMTBcMjY0flwzMTBcMjY1XDE3N1wzMTNcMjY2IgotICAiXDIwMFwzMTRcMjY3XDIwMlwzMTVcMjY3XDIwM1wzMTZcMjcyXDIwNFwzMTdcMjczXDIwNlwzMTdcMjc0XDIwN1wzMjBcMjc2IgotICAiXDIxMFwzMjJcMjc3XDIxMVwzMjNcMjc3XDIxM1wzMjRcMzAxXDIxNFwzMjVcMzAyXDIxNVwzMjZcMzA0XDIxN1wzMjZcMzA1IgotICAiXDIyMFwzMjdcMzA2XDIyMVwzMjdcMzA3XDIyM1wzMzFcMzEwXDIyNFwzMzNcMzExXDIyNVwzMzRcMzExXDIyN1wzMzRcMzEzIgotICAiXDIyN1wzMzVcMzE1XDIzMVwzMzVcMzE2XDIzMVwzMzdcMzE3XDIzNFwzNDBcMzIwXDIzNVwzNDFcMzIwXDIzNVwzNDFcMzIzIgotICAiXDI0MFwzNDJcMzI0XDI0MVwzNDNcMzI0XDI0MlwzNDNcMzI2XDI0M1wzNDVcMzI3XDI0NVwzNDVcMzMwXDI0NVwzNDZcMzMxIgotICAiXDI1MFwzNDZcMzMzXDI1MlwzNDdcMzM0XDI1M1wzNTFcMzM1XDI1NFwzNTFcMzM1XDI1NVwzNTFcMzM3XDI1N1wzNTJcMzQwIgotICAiXDI2MFwzNTNcMzQxXDI2MFwzNTRcMzQyXDI2MlwzNTVcMzQzXDI2NFwzNTVcMzQ0XDI2NVwzNTVcMzQ1XDI2NlwzNTZcMzQ2IgotICAiXDI2NlwzNTZcMzQ3XDI3MlwzNTdcMzUwXDI3M1wzNjBcMzUxXDI3NFwzNjBcMzUxXDI3NlwzNjFcMzUyXDI3N1wzNjFcMzUzIgotICAiXDMwMFwzNjJcMzUzXDMwMVwzNjJcMzU0XDMwMlwzNjJcMzU1XDMwNFwzNjJcMzU2XDMwNVwzNjRcMzU3XDMwNVwzNjRcMzU3IgotICAiXDMxMFwzNjRcMzYwXDMxMVwzNjVcMzYxXDMxM1wzNjVcMzYxXDMxNFwzNjZcMzYyXDMxNVwzNjZcMzYyXDMxNlwzNjZcMzYzIgotICAiXDMxNlwzNjdcMzY0XDMyMFwzNjdcMzY0XDMyMFwzNjdcMzY1XDMyNFwzNjdcMzY1XDMyNFwzNzBcMzY2XDMyNlwzNzBcMzY2IgotICAiXDMyN1wzNzFcMzY2XDMzMFwzNzFcMzY3XDMzMVwzNzFcMzY3XDMzM1wzNzFcMzcwXDMzM1wzNzJcMzcwXDMzNlwzNzJcMzcwIgotICAiXDMzNlwzNzJcMzcxXDM0MFwzNzNcMzcxXDM0MVwzNzNcMzcyXDM0MlwzNzNcMzcyXDM0M1wzNzRcMzcyXDM0NFwzNzRcMzczIgotICAiXDM0NFwzNzRcMzczXDM0N1wzNzRcMzc0XDM1MFwzNzVcMzc0XDM1MVwzNzVcMzc0XDM1MVwzNzVcMzc0XDM1MlwzNzVcMzc1IgotICAiXDM1MlwzNzZcMzc1XDM1M1wzNzZcMzc2XDM1NVwzNzZcMzc2XDM1NlwzNzZcMzc2XDM1N1wzNzdcMzc3XDM1NyIsCi19OworZXh0ZXJuIGNvbnN0IEdzdEdMRWZmZWN0c0N1cnZlIHNlcGlhX2N1cnZlOwogCi1zdGF0aWMgY29uc3QgR3N0R0xFZmZlY3RzQ3VydmUgeHJheV9jdXJ2ZSA9IHsKLSAgMjU2LCAxLCAzLAotICAiXDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc3XDM3NlwzNzZcMzc2XDM3NVwzNzVcMzc2XDM3NFwzNzVcMzc1XDM3M1wzNzRcMzc1IgotICAiXDM3MlwzNzRcMzc0XDM3MVwzNzRcMzc0XDM3MFwzNzNcMzczXDM2NlwzNzNcMzcyXDM2NlwzNzJcMzcyXDM2NVwzNzJcMzcxIgotICAiXDM2M1wzNzFcMzcxXDM2M1wzNzFcMzcwXDM2MlwzNzBcMzcwXDM2MFwzNzBcMzY3XDM2MFwzNjdcMzY2XDM1N1wzNjdcMzY1IgotICAiXDM1NlwzNjZcMzY1XDM1NVwzNjZcMzY0XDM1M1wzNjVcMzYzXDM1M1wzNjVcMzYzXDM1MlwzNjRcMzYyXDM1MVwzNjNcMzYyIgotICAiXDM0N1wzNjNcMzYxXDM0NlwzNjJcMzYxXDM0NVwzNjJcMzYxXDM0NFwzNjJcMzYwXDM0M1wzNjFcMzU3XDM0M1wzNjFcMzU2IgotICAiXDM0MlwzNjBcMzU2XDM0MVwzNjBcMzU2XDM0MFwzNTdcMzU1XDMzNlwzNTZcMzU0XDMzNlwzNTZcMzU0XDMzNVwzNTVcMzUzIgotICAiXDMzNFwzNTVcMzUzXDMzM1wzNTVcMzUyXDMzMVwzNTRcMzUxXDMzMVwzNTNcMzUxXDMzMFwzNTNcMzUwXDMyN1wzNTNcMzUwIgotICAiXDMyNVwzNTJcMzQ3XDMyNVwzNTFcMzQ3XDMyNFwzNTBcMzQ2XDMyM1wzNTBcMzQ1XDMyMlwzNDdcMzQ0XDMyMVwzNDdcMzQ0IgotICAiXDMyMFwzNDdcMzQ0XDMxN1wzNDZcMzQzXDMxNlwzNDZcMzQyXDMxNVwzNDVcMzQxXDMxNFwzNDRcMzQxXDMxM1wzNDRcMzQwIgotICAiXDMxMlwzNDRcMzQwXDMxMVwzNDNcMzM3XDMxMFwzNDJcMzM3XDMwN1wzNDJcMzM1XDMwNlwzNDFcMzM1XDMwNVwzNDFcMzM1IgotICAiXDMwM1wzNDBcMzM0XDMwM1wzMzdcMzMzXDMwMlwzMzdcMzMzXDMwMVwzMzdcMzMyXDMwMFwzMzZcMzMxXDI3NlwzMzVcMzMxIgotICAiXDI3NlwzMzRcMzMwXDI3NFwzMzRcMzMwXDI3NFwzMzRcMzI3XDI3M1wzMzNcMzI3XDI3MlwzMzNcMzI2XDI3MVwzMzJcMzI1IgotICAiXDI3MFwzMzJcMzI1XDI2N1wzMzFcMzI0XDI2NlwzMzBcMzIzXDI2NVwzMzBcMzIzXDI2NFwzMjdcMzIyXDI2M1wzMjdcMzIxIgotICAiXDI2MlwzMjZcMzIwXDI2MVwzMjVcMzIwXDI1N1wzMjVcMzE3XDI1N1wzMjRcMzE3XDI1NlwzMjRcMzE2XDI1NFwzMjNcMzE1IgotICAiXDI1NFwzMjJcMzE1XDI1M1wzMjJcMzE0XDI1MlwzMjFcMzEzXDI1MVwzMjFcMzEzXDI1MFwzMjBcMzEyXDI0NlwzMTdcMzExIgotICAiXDI0NVwzMTdcMzExXDI0NVwzMTZcMzEwXDI0NFwzMTZcMzA3XDI0M1wzMTVcMzA3XDI0MlwzMTRcMzA2XDI0MVwzMTRcMzA1IgotICAiXDI0MFwzMTJcMzA1XDIzN1wzMTJcMzA0XDIzNlwzMTJcMzAzXDIzNVwzMTFcMzAzXDIzNFwzMTFcMzAyXDIzM1wzMDdcMzAxIgotICAiXDIzMlwzMDdcMzAwXDIzMVwzMDdcMzAwXDIzMFwzMDZcMjc3XDIyN1wzMDVcMjc2XDIyNlwzMDVcMjc2XDIyNVwzMDRcMjc1IgotICAiXDIyNFwzMDNcMjc0XDIyM1wzMDNcMjczXDIyMlwzMDJcMjczXDIyMVwzMDFcMjcyXDIyMFwzMDFcMjcxXDIxN1wzMDBcMjcwIgotICAiXDIxNlwyNzdcMjcwXDIxNVwyNzdcMjY3XDIxNFwyNzZcMjY2XDIxM1wyNzVcMjY1XDIxMlwyNzVcMjY1XDIxMVwyNzRcMjY0IgotICAiXDIxMFwyNzNcMjYzXDIwN1wyNzNcMjYyXDIwNlwyNzJcMjYyXDIwNVwyNzFcMjYxXDIwNFwyNzBcMjYwXDIwM1wyNzBcMjU3IgotICAiXDIwMlwyNjdcMjU3XDIwMVwyNjZcMjU2XDIwMFwyNjZcMjU1XDE3N1wyNjVcMjU0flwyNjRcMjUzfVwyNjNcMjUzfFwyNjNcMjUyIgotICAie1wyNjJcMjUxelwyNjFcMjUweVwyNjBcMjQ3eFwyNjBcMjQ3d1wyNTdcMjQ2dlwyNTZcMjQ1dVwyNTVcMjQ0dFwyNTVcMjQzIgotICAic1wyNTRcMjQzclwyNTNcMjQycVwyNTJcMjQxcFwyNTJcMjQwb1wyNTFcMjM3blwyNTBcMjM2bVwyNDdcMjM1bFwyNDZcMjM1IgotICAibFwyNDZcMjM1alwyNDVcMjMzaVwyNDRcMjMyaFwyNDNcMjMxZ1wyNDJcMjMwZlwyNDJcMjI3ZVwyNDFcMjI2ZFwyNDBcMjI2IgotICAiY1wyMzdcMjI1YlwyMzZcMjI0YVwyMzVcMjIzYFwyMzRcMjIyX1wyMzRcMjIxX1wyMzNcMjIwXVwyMzJcMjE3XFxcMjMxXDIxNiIKLSAgIlxcXDIzMFwyMTVaXDIyN1wyMTRZXDIyNlwyMTRYXDIyNlwyMTNXXDIyNVwyMTJWXDIyNFwyMTFVXDIyM1wyMTBUXDIyMlwyMDciCi0gICJTXDIyMVwyMDZSXDIyMVwyMDVRXDIxN1wyMDRQXDIxNlwyMDNPXDIxNVwyMDJOXDIxNVwyMDFNXDIxNFwyMDBNXDIxM1wxNzciCi0gICJLXDIxMn5KXDIxMX1JXDIxMXxIXDIxMHxHXDIwNnpHXDIwNXpFXDIwNHhEXDIwM3ZDXDIwM3ZCXDIwMXRBXDIwMHNAXDIwMHEiCi0gICJAfnA+fW8+fG88e2w8eWs7eGk5d2g4d2c4dGU2c2Q1cWQ0cGEzbl8ybV0xa1xcMGpcXDBoWS5mVy1kVSxjVCthUipfUClfTygiCi0gICJdTSdZSydYSSVWSSRURiRSRFwiT0IhTUBcNDBLP1wzN0k9XDM3Rz1cMzVFOVwzNEM5XDM0QTVcMzM+NVwzMTwyXDMxPDBcMjciCi0gICI6LlwyNyIiNSxcMjYiIjMqXDI0IiIxKlwyMy4mXDIyLiZcMjIqXCJcMjEnXDQwXDE3JVwzNlwxNlwiXDM0XDE1XCJcMzJcMTQiCi0gICJcMzZcMzJcMTNcMzNcMjZcMTNcMzFcMjRcMTFcMjZcMjJcMTFcMjRcMjBcN1wyNFwxNlw2XDIxXDE2XDVcMTRcMTRcNFwxMlwxMCIKLSAgIlwzXDdcNlwzXDVcNFwxXDJcMiIsCi19OworZXh0ZXJuIGNvbnN0IEdzdEdMRWZmZWN0c0N1cnZlIHhyYXlfY3VydmU7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZXh0L2dsL2VmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5jIGIvZXh0L2dsL2VmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5jCmluZGV4IDNkYTg1NmMuLjZiZGMxNTUgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0c3NvdXJjZXMuYworKysgYi9leHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdHNzb3VyY2VzLmMKQEAgLTE1Miw3ICsxNTIsNyBAQAogICAiICB2ZWMyIG5vcm1jb29yZDsiCiAgICIgIG5vcm1jb29yZCA9IHRleHR1cmVjb29yZCAtIDAuNTsiCiAgICIgIGZsb2F0IHIgPSBsZW5ndGggKG5vcm1jb29yZCk7IgotICAiICBub3JtY29vcmQgKj0gciAqIHNxcnQoMik7IgorICAiICBub3JtY29vcmQgKj0gciAqIDEuNDE0MjE7IiAvKiBzcXJ0ICgyKSAqLwogICAiICB0ZXh0dXJlY29vcmQgPSBub3JtY29vcmQgKyAwLjU7IgogICAiICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQgKHRleCwgdGV4dHVyZWNvb3JkKTsiCiAgICJ9IjsKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGJhc2VtaXhlci5jIGIvZXh0L2dsL2dzdGdsYmFzZW1peGVyLmMKaW5kZXggM2JhZDc2OS4uZDIwNzg4MyAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsYmFzZW1peGVyLmMKKysrIGIvZXh0L2dsL2dzdGdsYmFzZW1peGVyLmMKQEAgLTMyMCw2ICszMjAsOCBAQAogCiAgIGlmIChtaXgtPmRpc3BsYXkpCiAgICAgZ3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwaSAobWl4LT5kaXNwbGF5LCBtaXhfY2xhc3MtPnN1cHBvcnRlZF9nbF9hcGkpOworCisgIEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgpAQCAtNDg3LDExICs0ODksMzEgQEAKICAgICBHU1RfT0JKRUNUX1VOTE9DSyAobWl4LT5kaXNwbGF5KTsKICAgfQogCisgIHsKKyAgICBHc3RHTEFQSSBjdXJyZW50X2dsX2FwaSA9IGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKG1peC0+Y29udGV4dCk7CisgICAgaWYgKChjdXJyZW50X2dsX2FwaSAmIG1peF9jbGFzcy0+c3VwcG9ydGVkX2dsX2FwaSkgPT0gMCkKKyAgICAgIGdvdG8gdW5zdXBwb3J0ZWRfZ2xfYXBpOworICB9CisKICAgaWYgKG1peF9jbGFzcy0+ZGVjaWRlX2FsbG9jYXRpb24pCiAgICAgcmV0ID0gbWl4X2NsYXNzLT5kZWNpZGVfYWxsb2NhdGlvbiAobWl4LCBxdWVyeSk7CiAKICAgcmV0dXJuIHJldDsKIAordW5zdXBwb3J0ZWRfZ2xfYXBpOgorICB7CisgICAgR3N0R0xBUEkgZ2xfYXBpID0gZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAobWl4LT5jb250ZXh0KTsKKyAgICBnY2hhciAqZ2xfYXBpX3N0ciA9IGdzdF9nbF9hcGlfdG9fc3RyaW5nIChnbF9hcGkpOworICAgIGdjaGFyICpzdXBwb3J0ZWRfZ2xfYXBpX3N0ciA9CisgICAgICAgIGdzdF9nbF9hcGlfdG9fc3RyaW5nIChtaXhfY2xhc3MtPnN1cHBvcnRlZF9nbF9hcGkpOworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChtaXgsIFJFU09VUkNFLCBCVVNZLAorICAgICAgICAoIkdMIEFQSSdzIG5vdCBjb21wYXRpYmxlIGNvbnRleHQ6ICVzIHN1cHBvcnRlZDogJXMiLCBnbF9hcGlfc3RyLAorICAgICAgICAgICAgc3VwcG9ydGVkX2dsX2FwaV9zdHIpLCAoTlVMTCkpOworCisgICAgZ19mcmVlIChzdXBwb3J0ZWRfZ2xfYXBpX3N0cik7CisgICAgZ19mcmVlIChnbF9hcGlfc3RyKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KIGNvbnRleHRfZXJyb3I6CiAgIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAobWl4LCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpLApkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsY29sb3JiYWxhbmNlLmMgYi9leHQvZ2wvZ3N0Z2xjb2xvcmJhbGFuY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2RjYjAwCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2dsL2dzdGdsY29sb3JiYWxhbmNlLmMKQEAgLTAsMCArMSw1NTcgQEAKKy8qIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSA8MjAxNj4gTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisvKgorICogVGhpcyBmaWxlIHdhcyBtb2RpZmllZCBmcm9tIHZpZGVvYmFsYW5jZSBhbmQgY29udmVydGVkIHRvIE9wZW5HTAorICovCisKKy8qKgorICogU0VDVElPTjplbGVtZW50LWdsY29sb3JiYWxhbmNlCisgKgorICogQWRqdXN0cyBicmlnaHRuZXNzLCBjb250cmFzdCwgaHVlLCBzYXR1cmF0aW9uIG9uIGEgdmlkZW8gc3RyZWFtLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBnbHVwbG9hZCAhIGdsY29sb3JiYWxhbmNlIHNhdHVyYXRpb249MC4wICEgZ2xjb2xvcmNvbnZlcnQgISBnbGRvd25sb2FkICEgeGltYWdlc2luaworICogXXwgVGhpcyBwaXBlbGluZSBjb252ZXJ0cyB0aGUgaW1hZ2UgdG8gYmxhY2sgYW5kIHdoaXRlIGJ5IHNldHRpbmcgdGhlCisgKiBzYXR1cmF0aW9uIHRvIDAuMC4KKyAqIDwvcmVmc2VjdDI+CisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8Z3N0L21hdGgtY29tcGF0Lmg+CisKKyNpbmNsdWRlICJnc3RnbGNvbG9yYmFsYW5jZS5oIgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8Z3N0L3ZpZGVvL2NvbG9yYmFsYW5jZS5oPgorCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnbGNvbG9yYmFsYW5jZV9kZWJ1Zyk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnbGNvbG9yYmFsYW5jZV9kZWJ1ZworCisvKiBHc3RHTENvbG9yQmFsYW5jZSBwcm9wZXJ0aWVzICovCisjZGVmaW5lIERFRkFVTFRfUFJPUF9DT05UUkFTVCAgICAgICAxLjAKKyNkZWZpbmUgREVGQVVMVF9QUk9QX0JSSUdIVE5FU1MJICAgIDAuMAorI2RlZmluZSBERUZBVUxUX1BST1BfSFVFICAgICAgICAgICAgMC4wCisjZGVmaW5lIERFRkFVTFRfUFJPUF9TQVRVUkFUSU9OCSAgICAxLjAKKworLyogKklOREVOVC1PRkYqICovCitzdGF0aWMgY29uc3QgZ2NoYXIgKmNvbG9yX2JhbGFuY2VfZnJhZyA9CisgICIjaWZkZWYgR0xfRVNcbiIKKyAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAiI2VuZGlmXG4iCisgICJ1bmlmb3JtIGZsb2F0IGJyaWdodG5lc3M7XG4iCisgICJ1bmlmb3JtIGZsb2F0IGNvbnRyYXN0O1xuIgorICAidW5pZm9ybSBmbG9hdCBzYXR1cmF0aW9uO1xuIgorICAidW5pZm9ybSBmbG9hdCBodWU7XG4iCisgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKKyAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIKKyAgIiNkZWZpbmUgZnJvbV95dXZfYnQ2MDFfb2Zmc2V0IHZlYzMoLTAuMDYyNSwgLTAuNSwgLTAuNSlcbiIKKyAgIiNkZWZpbmUgZnJvbV95dXZfYnQ2MDFfcmNvZWZmIHZlYzMoMS4xNjQsIDAuMDAwLCAxLjU5NilcbiIKKyAgIiNkZWZpbmUgZnJvbV95dXZfYnQ2MDFfZ2NvZWZmIHZlYzMoMS4xNjQsLTAuMzkxLC0wLjgxMylcbiIKKyAgIiNkZWZpbmUgZnJvbV95dXZfYnQ2MDFfYmNvZWZmIHZlYzMoMS4xNjQsIDIuMDE4LCAwLjAwMClcbiIKKyAgIiNkZWZpbmUgZnJvbV9yZ2JfYnQ2MDFfb2Zmc2V0IHZlYzMoMC4wNjI1LCAwLjUsIDAuNSlcbiIKKyAgIiNkZWZpbmUgZnJvbV9yZ2JfYnQ2MDFfeWNvZWZmIHZlYzMoMC4yNTY4MTYsIDAuNTA0MTU0LCAwLjA5NzkxMzcpXG4iCisgICIjZGVmaW5lIGZyb21fcmdiX2J0NjAxX3Vjb2VmZiB2ZWMzKC0wLjE0ODI0NiwgLTAuMjkxMDIsIDAuNDM5MjY2KVxuIgorICAiI2RlZmluZSBmcm9tX3JnYl9idDYwMV92Y29lZmYgdmVjMygwLjQzOTI3MSwgLTAuMzY3ODMzLCAtMC4wNzE0MzgpXG4iCisgICIjZGVmaW5lIFBJIDMuMTQxNTkyNjVcbiIKKyAgIlxuIgorICAidmVjMyB5dXZfdG9fcmdiICh2ZWMzIHZhbCkge1xuIgorICAiICB2ZWMzIHJnYjtcbiIKKyAgIiAgdmFsICs9IGZyb21feXV2X2J0NjAxX29mZnNldDtcbiIKKyAgIiAgcmdiLnIgPSBkb3QodmFsLCBmcm9tX3l1dl9idDYwMV9yY29lZmYpO1xuIgorICAiICByZ2IuZyA9IGRvdCh2YWwsIGZyb21feXV2X2J0NjAxX2djb2VmZik7XG4iCisgICIgIHJnYi5iID0gZG90KHZhbCwgZnJvbV95dXZfYnQ2MDFfYmNvZWZmKTtcbiIKKyAgIiAgcmV0dXJuIHJnYjtcbiIKKyAgIn1cbiIKKyAgInZlYzMgcmdiX3RvX3l1diAodmVjMyB2YWwpIHtcbiIKKyAgIiAgdmVjMyB5dXY7XG4iCisgICIgIHl1di5yID0gZG90KHZhbC5yZ2IsIGZyb21fcmdiX2J0NjAxX3ljb2VmZik7XG4iCisgICIgIHl1di5nID0gZG90KHZhbC5yZ2IsIGZyb21fcmdiX2J0NjAxX3Vjb2VmZik7XG4iCisgICIgIHl1di5iID0gZG90KHZhbC5yZ2IsIGZyb21fcmdiX2J0NjAxX3Zjb2VmZik7XG4iCisgICIgIHl1diArPSBmcm9tX3JnYl9idDYwMV9vZmZzZXQ7XG4iCisgICIgIHJldHVybiB5dXY7XG4iCisgICJ9XG4iCisgIC8qIDIyNCA9IDI1NiAtICgyNTYgLSAyNDApIC0gMTYqLworICAiZmxvYXQgbHVtYV90b19uYXJyb3cgKGZsb2F0IGx1bWEpIHtcbiIKKyAgIiAgcmV0dXJuIChsdW1hICsgMTYuMCAvIDI1Ni4wKSAqIDIxOS4wIC8gMjU2LjA7IgorICAifVxuIgorICAiZmxvYXQgbHVtYV90b19mdWxsIChmbG9hdCBsdW1hKSB7XG4iCisgICIgIHJldHVybiAobHVtYSAqIDI1Ni4wIC8gMjE5LjApIC0gMTYuMCAvIDI1Ni4wOyIKKyAgIn1cbiIKKyAgInZvaWQgbWFpbiAoKSB7XG4iCisgICIgIHZlYzMgeXV2O1xuIgorICAvKiBvcGVyYXRpb25zIHRyYW5zbGF0ZWQgZnJvbSB2aWRlb2JhbGFuY2VhbmQgdGVzdGVkIHdpdGggZ2x2aWRlb21peGVyCisgICAqIHdpdGggb25lIHBhZCdzIHBhcmVtZXRlcnMgYmxlbmQtZXF1YXRpb24tcmdiPXtzdWJ0cmFjdCxyZXZlcnNlLXN1YnRyYWN0fSwKKyAgICogYmxlbmQtZnVuY3Rpb24tc3JjLXJnYj1zcmMtY29sb3IgYW5kIGJsZW5kLWZ1bmN0aW9uLWRzdC1yZ2I9ZHN0LWNvbG9yICovCisgICIgIGZsb2F0IGh1ZV9jb3MgPSBjb3MgKFBJICogaHVlKTtcbiIKKyAgIiAgZmxvYXQgaHVlX3NpbiA9IHNpbiAoUEkgKiBodWUpO1xuIgorICAiICB2ZWM0IHJnYmEgPSB0ZXh0dXJlMkQgKHRleCwgdl90ZXhjb29yZCk7XG4iCisgICIgIHl1diA9IHJnYl90b195dXYgKHJnYmEucmdiKTtcbiIKKyAgIiAgeXV2LnggPSBjbGFtcCAobHVtYV90b19uYXJyb3cgKGx1bWFfdG9fZnVsbCh5dXYueCkgKiBjb250cmFzdCkgKyBicmlnaHRuZXNzLCAwLjAsIDEuMCk7XG4iCisgICIgIHZlYzIgdXYgPSB5dXYueXo7XG4iCisgICIgIHl1di55ID0gY2xhbXAgKDAuNSArICgoKHV2LnggLSAwLjUpICogaHVlX2NvcyArICh1di55IC0gMC41KSAqIGh1ZV9zaW4pICogc2F0dXJhdGlvbiksIDAuMCwgMS4wKTtcbiIKKyAgIiAgeXV2LnogPSBjbGFtcCAoMC41ICsgKCgoMC41IC0gdXYueCkgKiBodWVfc2luICsgKHV2LnkgLSAwLjUpICogaHVlX2NvcykgKiBzYXR1cmF0aW9uKSwgMC4wLCAxLjApO1xuIgorICAiICByZ2JhLnJnYiA9IHl1dl90b19yZ2IgKHl1dik7XG4iCisgICIgIGdsX0ZyYWdDb2xvciA9IHJnYmE7XG4iCisgICJ9XG4iOworLyogKklOREVOVC1PTiogKi8KKworZW51bQoreworICBQUk9QXzAsCisgIFBST1BfQ09OVFJBU1QsCisgIFBST1BfQlJJR0hUTkVTUywKKyAgUFJPUF9IVUUsCisgIFBST1BfU0FUVVJBVElPTgorfTsKKworc3RhdGljIHZvaWQgZ3N0X2dsX2NvbG9yX2JhbGFuY2VfY29sb3JiYWxhbmNlX2luaXQgKEdzdENvbG9yQmFsYW5jZUludGVyZmFjZSAqCisgICAgaWZhY2UpOworCitzdGF0aWMgdm9pZCBnc3RfZ2xfY29sb3JfYmFsYW5jZV9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CitzdGF0aWMgdm9pZCBnc3RfZ2xfY29sb3JfYmFsYW5jZV9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CisKKyNkZWZpbmUgZ3N0X2dsX2NvbG9yX2JhbGFuY2VfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdEdMQ29sb3JCYWxhbmNlLCBnc3RfZ2xfY29sb3JfYmFsYW5jZSwKKyAgICBHU1RfVFlQRV9HTF9GSUxURVIsCisgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFIChHU1RfVFlQRV9DT0xPUl9CQUxBTkNFLAorICAgICAgICBnc3RfZ2xfY29sb3JfYmFsYW5jZV9jb2xvcmJhbGFuY2VfaW5pdCkpOworCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9nbF9jb2xvcl9iYWxhbmNlX2lzX3Bhc3N0aHJvdWdoIChHc3RHTENvbG9yQmFsYW5jZSAqIGdsY29sb3JiYWxhbmNlKQoreworICByZXR1cm4gZ2xjb2xvcmJhbGFuY2UtPmNvbnRyYXN0ID09IDEuMCAmJgorICAgICAgZ2xjb2xvcmJhbGFuY2UtPmJyaWdodG5lc3MgPT0gMC4wICYmCisgICAgICBnbGNvbG9yYmFsYW5jZS0+aHVlID09IDAuMCAmJiBnbGNvbG9yYmFsYW5jZS0+c2F0dXJhdGlvbiA9PSAxLjA7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfY29sb3JfYmFsYW5jZV91cGRhdGVfcHJvcGVydGllcyAoR3N0R0xDb2xvckJhbGFuY2UgKiBnbGNvbG9yYmFsYW5jZSkKK3sKKyAgZ2Jvb2xlYW4gcGFzc3Rocm91Z2g7CisgIEdzdEJhc2VUcmFuc2Zvcm0gKmJhc2UgPSBHU1RfQkFTRV9UUkFOU0ZPUk0gKGdsY29sb3JiYWxhbmNlKTsKKworICBHU1RfT0JKRUNUX0xPQ0sgKGdsY29sb3JiYWxhbmNlKTsKKyAgcGFzc3Rocm91Z2ggPSBnc3RfZ2xfY29sb3JfYmFsYW5jZV9pc19wYXNzdGhyb3VnaCAoZ2xjb2xvcmJhbGFuY2UpOworICBHU1RfT0JKRUNUX1VOTE9DSyAoZ2xjb2xvcmJhbGFuY2UpOworCisgIGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfcGFzc3Rocm91Z2ggKGJhc2UsIHBhc3N0aHJvdWdoKTsKK30KKworc3RhdGljIGdib29sZWFuCitfY3JlYXRlX3NoYWRlciAoR3N0R0xDb2xvckJhbGFuY2UgKiBiYWxhbmNlKQoreworICBHc3RHTEJhc2VGaWx0ZXIgKmJhc2VfZmlsdGVyID0gR1NUX0dMX0JBU0VfRklMVEVSIChiYWxhbmNlKTsKKyAgR3N0R0xGaWx0ZXIgKmZpbHRlciA9IEdTVF9HTF9GSUxURVIgKGJhbGFuY2UpOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBpZiAoYmFsYW5jZS0+c2hhZGVyKQorICAgIGdzdF9vYmplY3RfdW5yZWYgKGJhbGFuY2UtPnNoYWRlcik7CisKKyAgaWYgKCEoYmFsYW5jZS0+c2hhZGVyID0KKyAgICAgICAgICBnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzIChiYXNlX2ZpbHRlci0+Y29udGV4dCwgJmVycm9yLAorICAgICAgICAgICAgICBnc3RfZ2xzbF9zdGFnZV9uZXdfZGVmYXVsdF92ZXJ0ZXggKGJhc2VfZmlsdGVyLT5jb250ZXh0KSwKKyAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChiYXNlX2ZpbHRlci0+Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgIEdMX0ZSQUdNRU5UX1NIQURFUiwgR1NUX0dMU0xfVkVSU0lPTl9OT05FLAorICAgICAgICAgICAgICAgICAgR1NUX0dMU0xfUFJPRklMRV9FUyB8IEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwKKyAgICAgICAgICAgICAgICAgIGNvbG9yX2JhbGFuY2VfZnJhZyksIE5VTEwpKSkgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChiYWxhbmNlLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwKKyAgICAgICAgICAgICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb2xvcmJhbGFuY2Ugc2hhZGVyIiksICgiJXMiLAorICAgICAgICAgICAgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJVbmtub3duIGVycm9yIikpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYyA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKGJhbGFuY2UtPnNoYWRlciwgImFfcG9zaXRpb24iKTsKKyAgZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChiYWxhbmNlLT5zaGFkZXIsICJhX3RleGNvb3JkIik7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2dsX2NvbG9yX2JhbGFuY2VfZ2xfc3RhcnQgKEdzdEdMQmFzZUZpbHRlciAqIGJhc2VfZmlsdGVyKQoreworICBHc3RHTENvbG9yQmFsYW5jZSAqYmFsYW5jZSA9IEdTVF9HTF9DT0xPUl9CQUxBTkNFIChiYXNlX2ZpbHRlcik7CisKKyAgaWYgKCFfY3JlYXRlX3NoYWRlciAoYmFsYW5jZSkpCisgICAgcmV0dXJuIEZBTFNFOworCisgIHJldHVybiBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmdsX3N0YXJ0IChiYXNlX2ZpbHRlcik7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfY29sb3JfYmFsYW5jZV9nbF9zdG9wIChHc3RHTEJhc2VGaWx0ZXIgKiBiYXNlX2ZpbHRlcikKK3sKKyAgR3N0R0xDb2xvckJhbGFuY2UgKmJhbGFuY2UgPSBHU1RfR0xfQ09MT1JfQkFMQU5DRSAoYmFzZV9maWx0ZXIpOworCisgIGlmIChiYWxhbmNlLT5zaGFkZXIpCisgICAgZ3N0X29iamVjdF91bnJlZiAoYmFsYW5jZS0+c2hhZGVyKTsKKyAgYmFsYW5jZS0+c2hhZGVyID0gTlVMTDsKKworICBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmdsX3N0b3AgKGJhc2VfZmlsdGVyKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9jb2xvcl9iYWxhbmNlX2JlZm9yZV90cmFuc2Zvcm0gKEdzdEJhc2VUcmFuc2Zvcm0gKiBiYXNlLCBHc3RCdWZmZXIgKiBidWYpCit7CisgIEdzdEdMQ29sb3JCYWxhbmNlICpiYWxhbmNlID0gR1NUX0dMX0NPTE9SX0JBTEFOQ0UgKGJhc2UpOworICBHc3RDbG9ja1RpbWUgdGltZXN0YW1wLCBzdHJlYW1fdGltZTsKKworICB0aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKTsKKyAgc3RyZWFtX3RpbWUgPQorICAgICAgZ3N0X3NlZ21lbnRfdG9fc3RyZWFtX3RpbWUgKCZiYXNlLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsIHRpbWVzdGFtcCk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoYmFsYW5jZSwgInN5bmMgdG8gJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgR1NUX1RJTUVfQVJHUyAodGltZXN0YW1wKSk7CisKKyAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChzdHJlYW1fdGltZSkpCisgICAgZ3N0X29iamVjdF9zeW5jX3ZhbHVlcyAoR1NUX09CSkVDVCAoYmFsYW5jZSksIHN0cmVhbV90aW1lKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9jb2xvcl9iYWxhbmNlX2NhbGxiYWNrIChnaW50IHdpZHRoLCBnaW50IGhlaWdodCwgZ3VpbnQgdGV4X2lkLAorICAgIGdwb2ludGVyIGRhdGEpCit7CisgIEdzdEdMQ29sb3JCYWxhbmNlICpiYWxhbmNlID0gR1NUX0dMX0NPTE9SX0JBTEFOQ0UgKGRhdGEpOworICBHc3RHTEZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0ZJTFRFUiAoZGF0YSk7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gR1NUX0dMX0JBU0VfRklMVEVSIChkYXRhKS0+Y29udGV4dC0+Z2xfdnRhYmxlOworCisgIGlmICghYmFsYW5jZS0+c2hhZGVyKQorICAgIF9jcmVhdGVfc2hhZGVyIChiYWxhbmNlKTsKKworICBnc3RfZ2xfc2hhZGVyX3VzZSAoYmFsYW5jZS0+c2hhZGVyKTsKKyAgR1NUX09CSkVDVF9MT0NLIChiYWxhbmNlKTsKKyAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoYmFsYW5jZS0+c2hhZGVyLCAiYnJpZ2h0bmVzcyIsCisgICAgICBiYWxhbmNlLT5icmlnaHRuZXNzKTsKKyAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoYmFsYW5jZS0+c2hhZGVyLCAiY29udHJhc3QiLCBiYWxhbmNlLT5jb250cmFzdCk7CisgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKGJhbGFuY2UtPnNoYWRlciwgInNhdHVyYXRpb24iLAorICAgICAgYmFsYW5jZS0+c2F0dXJhdGlvbik7CisgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKGJhbGFuY2UtPnNoYWRlciwgImh1ZSIsIGJhbGFuY2UtPmh1ZSk7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChiYWxhbmNlKTsKKworICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIHRleF9pZCk7CisKKyAgZ3N0X2dsX2ZpbHRlcl9kcmF3X3RleHR1cmUgKGZpbHRlciwgdGV4X2lkLCB3aWR0aCwgaGVpZ2h0KTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfZ2xfY29sb3JfYmFsYW5jZV9maWx0ZXJfdGV4dHVyZSAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIsIGd1aW50IGluX3RleCwKKyAgICBndWludCBvdXRfdGV4KQoreworICBnc3RfZ2xfZmlsdGVyX3JlbmRlcl90b190YXJnZXQgKGZpbHRlciwgVFJVRSwgaW5fdGV4LCBvdXRfdGV4LAorICAgICAgKEdMQ0IpIGdzdF9nbF9jb2xvcl9iYWxhbmNlX2NhbGxiYWNrLCBmaWx0ZXIpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX2NvbG9yX2JhbGFuY2VfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdEdMQ29sb3JCYWxhbmNlICpiYWxhbmNlID0gR1NUX0dMX0NPTE9SX0JBTEFOQ0UgKG9iamVjdCk7CisgIEdMaXN0ICpjaGFubmVscyA9IE5VTEw7CisKKyAgY2hhbm5lbHMgPSBiYWxhbmNlLT5jaGFubmVsczsKKyAgd2hpbGUgKGNoYW5uZWxzKSB7CisgICAgR3N0Q29sb3JCYWxhbmNlQ2hhbm5lbCAqY2hhbm5lbCA9IGNoYW5uZWxzLT5kYXRhOworCisgICAgZ19vYmplY3RfdW5yZWYgKGNoYW5uZWwpOworICAgIGNoYW5uZWxzLT5kYXRhID0gTlVMTDsKKyAgICBjaGFubmVscyA9IGdfbGlzdF9uZXh0IChjaGFubmVscyk7CisgIH0KKworICBpZiAoYmFsYW5jZS0+Y2hhbm5lbHMpCisgICAgZ19saXN0X2ZyZWUgKGJhbGFuY2UtPmNoYW5uZWxzKTsKKworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfY29sb3JfYmFsYW5jZV9jbGFzc19pbml0IChHc3RHTENvbG9yQmFsYW5jZUNsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CisgIEdzdEVsZW1lbnRDbGFzcyAqZ3N0ZWxlbWVudF9jbGFzcyA9IChHc3RFbGVtZW50Q2xhc3MgKikga2xhc3M7CisgIEdzdEJhc2VUcmFuc2Zvcm1DbGFzcyAqdHJhbnNfY2xhc3MgPSAoR3N0QmFzZVRyYW5zZm9ybUNsYXNzICopIGtsYXNzOworICBHc3RHTEJhc2VGaWx0ZXJDbGFzcyAqYmFzZV9maWx0ZXJfY2xhc3MgPSAoR3N0R0xCYXNlRmlsdGVyQ2xhc3MgKikga2xhc3M7CisgIEdzdEdMRmlsdGVyQ2xhc3MgKmZpbHRlcl9jbGFzcyA9IChHc3RHTEZpbHRlckNsYXNzICopIGtsYXNzOworCisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnbGNvbG9yYmFsYW5jZV9kZWJ1ZywgImdsY29sb3JiYWxhbmNlIiwgMCwKKyAgICAgICJnbGNvbG9yYmFsYW5jZSIpOworCisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X2dsX2NvbG9yX2JhbGFuY2VfZmluYWxpemU7CisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9nbF9jb2xvcl9iYWxhbmNlX3NldF9wcm9wZXJ0eTsKKyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2dsX2NvbG9yX2JhbGFuY2VfZ2V0X3Byb3BlcnR5OworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQ09OVFJBU1QsCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiY29udHJhc3QiLCAiQ29udHJhc3QiLCAiY29udHJhc3QiLAorICAgICAgICAgIDAuMCwgMi4wLCBERUZBVUxUX1BST1BfQ09OVFJBU1QsCisgICAgICAgICAgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0JSSUdIVE5FU1MsCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiYnJpZ2h0bmVzcyIsICJCcmlnaHRuZXNzIiwgImJyaWdodG5lc3MiLCAtMS4wLCAxLjAsCisgICAgICAgICAgREVGQVVMVF9QUk9QX0JSSUdIVE5FU1MsCisgICAgICAgICAgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0hVRSwKKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJodWUiLCAiSHVlIiwgImh1ZSIsIC0xLjAsIDEuMCwgREVGQVVMVF9QUk9QX0hVRSwKKyAgICAgICAgICBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0FUVVJBVElPTiwKKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJzYXR1cmF0aW9uIiwgIlNhdHVyYXRpb24iLCAic2F0dXJhdGlvbiIsIDAuMCwgMi4wLAorICAgICAgICAgIERFRkFVTFRfUFJPUF9TQVRVUkFUSU9OLAorICAgICAgICAgIEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLCAiVmlkZW8gYmFsYW5jZSIsCisgICAgICAiRmlsdGVyL0VmZmVjdC9WaWRlbyIsCisgICAgICAiQWRqdXN0cyBicmlnaHRuZXNzLCBjb250cmFzdCwgaHVlLCBzYXR1cmF0aW9uIG9uIGEgdmlkZW8gc3RyZWFtIiwKKyAgICAgICJNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+Iik7CisKKyAgdHJhbnNfY2xhc3MtPmJlZm9yZV90cmFuc2Zvcm0gPQorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF9jb2xvcl9iYWxhbmNlX2JlZm9yZV90cmFuc2Zvcm0pOworICB0cmFuc19jbGFzcy0+dHJhbnNmb3JtX2lwX29uX3Bhc3N0aHJvdWdoID0gRkFMU0U7CisKKyAgYmFzZV9maWx0ZXJfY2xhc3MtPmdsX3N0YXJ0ID0KKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfY29sb3JfYmFsYW5jZV9nbF9zdGFydCk7CisgIGJhc2VfZmlsdGVyX2NsYXNzLT5nbF9zdG9wID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF9jb2xvcl9iYWxhbmNlX2dsX3N0b3ApOworCisgIGZpbHRlcl9jbGFzcy0+ZmlsdGVyX3RleHR1cmUgPQorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF9jb2xvcl9iYWxhbmNlX2ZpbHRlcl90ZXh0dXJlKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9jb2xvcl9iYWxhbmNlX2luaXQgKEdzdEdMQ29sb3JCYWxhbmNlICogZ2xjb2xvcmJhbGFuY2UpCit7CisgIGNvbnN0IGdjaGFyICpjaGFubmVsc1s0XSA9IHsgIkhVRSIsICJTQVRVUkFUSU9OIiwKKyAgICAiQlJJR0hUTkVTUyIsICJDT05UUkFTVCIKKyAgfTsKKyAgZ2ludCBpOworCisgIC8qIEluaXRpYWxpemUgcHJvcGVydGlld3MgKi8KKyAgZ2xjb2xvcmJhbGFuY2UtPmNvbnRyYXN0ID0gREVGQVVMVF9QUk9QX0NPTlRSQVNUOworICBnbGNvbG9yYmFsYW5jZS0+YnJpZ2h0bmVzcyA9IERFRkFVTFRfUFJPUF9CUklHSFRORVNTOworICBnbGNvbG9yYmFsYW5jZS0+aHVlID0gREVGQVVMVF9QUk9QX0hVRTsKKyAgZ2xjb2xvcmJhbGFuY2UtPnNhdHVyYXRpb24gPSBERUZBVUxUX1BST1BfU0FUVVJBVElPTjsKKworICBnc3RfZ2xfY29sb3JfYmFsYW5jZV91cGRhdGVfcHJvcGVydGllcyAoZ2xjb2xvcmJhbGFuY2UpOworCisgIC8qIEdlbmVyYXRlIHRoZSBjaGFubmVscyBsaXN0ICovCisgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKGNoYW5uZWxzKTsgaSsrKSB7CisgICAgR3N0Q29sb3JCYWxhbmNlQ2hhbm5lbCAqY2hhbm5lbDsKKworICAgIGNoYW5uZWwgPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX0NPTE9SX0JBTEFOQ0VfQ0hBTk5FTCwgTlVMTCk7CisgICAgY2hhbm5lbC0+bGFiZWwgPSBnX3N0cmR1cCAoY2hhbm5lbHNbaV0pOworICAgIGNoYW5uZWwtPm1pbl92YWx1ZSA9IC0xMDAwOworICAgIGNoYW5uZWwtPm1heF92YWx1ZSA9IDEwMDA7CisKKyAgICBnbGNvbG9yYmFsYW5jZS0+Y2hhbm5lbHMgPQorICAgICAgICBnX2xpc3RfYXBwZW5kIChnbGNvbG9yYmFsYW5jZS0+Y2hhbm5lbHMsIGNoYW5uZWwpOworICB9Cit9CisKK3N0YXRpYyBjb25zdCBHTGlzdCAqCitnc3RfZ2xfY29sb3JfYmFsYW5jZV9jb2xvcmJhbGFuY2VfbGlzdF9jaGFubmVscyAoR3N0Q29sb3JCYWxhbmNlICogYmFsYW5jZSkKK3sKKyAgR3N0R0xDb2xvckJhbGFuY2UgKmdsY29sb3JiYWxhbmNlID0gR1NUX0dMX0NPTE9SX0JBTEFOQ0UgKGJhbGFuY2UpOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChnbGNvbG9yYmFsYW5jZSAhPSBOVUxMLCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT0xPUl9CQUxBTkNFIChnbGNvbG9yYmFsYW5jZSksIE5VTEwpOworCisgIHJldHVybiBnbGNvbG9yYmFsYW5jZS0+Y2hhbm5lbHM7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfY29sb3JfYmFsYW5jZV9jb2xvcmJhbGFuY2Vfc2V0X3ZhbHVlIChHc3RDb2xvckJhbGFuY2UgKiBiYWxhbmNlLAorICAgIEdzdENvbG9yQmFsYW5jZUNoYW5uZWwgKiBjaGFubmVsLCBnaW50IHZhbHVlKQoreworICBHc3RHTENvbG9yQmFsYW5jZSAqdmIgPSBHU1RfR0xfQ09MT1JfQkFMQU5DRSAoYmFsYW5jZSk7CisgIGdkb3VibGUgbmV3X3ZhbDsKKyAgZ2Jvb2xlYW4gY2hhbmdlZCA9IEZBTFNFOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKHZiICE9IE5VTEwpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfQ09MT1JfQkFMQU5DRSAodmIpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoY2hhbm5lbC0+bGFiZWwgIT0gTlVMTCk7CisKKyAgR1NUX09CSkVDVF9MT0NLICh2Yik7CisgIGlmICghZ19hc2NpaV9zdHJjYXNlY21wIChjaGFubmVsLT5sYWJlbCwgIkhVRSIpKSB7CisgICAgbmV3X3ZhbCA9ICh2YWx1ZSArIDEwMDAuMCkgKiAyLjAgLyAyMDAwLjAgLSAxLjA7CisgICAgY2hhbmdlZCA9IG5ld192YWwgIT0gdmItPmh1ZTsKKyAgICB2Yi0+aHVlID0gbmV3X3ZhbDsKKyAgfSBlbHNlIGlmICghZ19hc2NpaV9zdHJjYXNlY21wIChjaGFubmVsLT5sYWJlbCwgIlNBVFVSQVRJT04iKSkgeworICAgIG5ld192YWwgPSAodmFsdWUgKyAxMDAwLjApICogMi4wIC8gMjAwMC4wOworICAgIGNoYW5nZWQgPSBuZXdfdmFsICE9IHZiLT5zYXR1cmF0aW9uOworICAgIHZiLT5zYXR1cmF0aW9uID0gbmV3X3ZhbDsKKyAgfSBlbHNlIGlmICghZ19hc2NpaV9zdHJjYXNlY21wIChjaGFubmVsLT5sYWJlbCwgIkJSSUdIVE5FU1MiKSkgeworICAgIG5ld192YWwgPSAodmFsdWUgKyAxMDAwLjApICogMi4wIC8gMjAwMC4wIC0gMS4wOworICAgIGNoYW5nZWQgPSBuZXdfdmFsICE9IHZiLT5icmlnaHRuZXNzOworICAgIHZiLT5icmlnaHRuZXNzID0gbmV3X3ZhbDsKKyAgfSBlbHNlIGlmICghZ19hc2NpaV9zdHJjYXNlY21wIChjaGFubmVsLT5sYWJlbCwgIkNPTlRSQVNUIikpIHsKKyAgICBuZXdfdmFsID0gKHZhbHVlICsgMTAwMC4wKSAqIDIuMCAvIDIwMDAuMDsKKyAgICBjaGFuZ2VkID0gbmV3X3ZhbCAhPSB2Yi0+Y29udHJhc3Q7CisgICAgdmItPmNvbnRyYXN0ID0gbmV3X3ZhbDsKKyAgfQorICBHU1RfT0JKRUNUX1VOTE9DSyAodmIpOworCisgIGlmIChjaGFuZ2VkKQorICAgIGdzdF9nbF9jb2xvcl9iYWxhbmNlX3VwZGF0ZV9wcm9wZXJ0aWVzICh2Yik7CisKKyAgaWYgKGNoYW5nZWQpIHsKKyAgICBnc3RfY29sb3JfYmFsYW5jZV92YWx1ZV9jaGFuZ2VkIChiYWxhbmNlLCBjaGFubmVsLAorICAgICAgICBnc3RfY29sb3JfYmFsYW5jZV9nZXRfdmFsdWUgKGJhbGFuY2UsIGNoYW5uZWwpKTsKKyAgfQorfQorCitzdGF0aWMgZ2ludAorZ3N0X2dsX2NvbG9yX2JhbGFuY2VfY29sb3JiYWxhbmNlX2dldF92YWx1ZSAoR3N0Q29sb3JCYWxhbmNlICogYmFsYW5jZSwKKyAgICBHc3RDb2xvckJhbGFuY2VDaGFubmVsICogY2hhbm5lbCkKK3sKKyAgR3N0R0xDb2xvckJhbGFuY2UgKnZiID0gR1NUX0dMX0NPTE9SX0JBTEFOQ0UgKGJhbGFuY2UpOworICBnaW50IHZhbHVlID0gMDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAodmIgIT0gTlVMTCwgMCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09MT1JfQkFMQU5DRSAodmIpLCAwKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNoYW5uZWwtPmxhYmVsICE9IE5VTEwsIDApOworCisgIGlmICghZ19hc2NpaV9zdHJjYXNlY21wIChjaGFubmVsLT5sYWJlbCwgIkhVRSIpKSB7CisgICAgdmFsdWUgPSAodmItPmh1ZSArIDEpICogMjAwMC4wIC8gMi4wIC0gMTAwMC4wOworICB9IGVsc2UgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAgKGNoYW5uZWwtPmxhYmVsLCAiU0FUVVJBVElPTiIpKSB7CisgICAgdmFsdWUgPSB2Yi0+c2F0dXJhdGlvbiAqIDIwMDAuMCAvIDIuMCAtIDEwMDAuMDsKKyAgfSBlbHNlIGlmICghZ19hc2NpaV9zdHJjYXNlY21wIChjaGFubmVsLT5sYWJlbCwgIkJSSUdIVE5FU1MiKSkgeworICAgIHZhbHVlID0gKHZiLT5icmlnaHRuZXNzICsgMSkgKiAyMDAwLjAgLyAyLjAgLSAxMDAwLjA7CisgIH0gZWxzZSBpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCAoY2hhbm5lbC0+bGFiZWwsICJDT05UUkFTVCIpKSB7CisgICAgdmFsdWUgPSB2Yi0+Y29udHJhc3QgKiAyMDAwLjAgLyAyLjAgLSAxMDAwLjA7CisgIH0KKworICByZXR1cm4gdmFsdWU7Cit9CisKK3N0YXRpYyBHc3RDb2xvckJhbGFuY2VUeXBlCitnc3RfZ2xfY29sb3JfYmFsYW5jZV9jb2xvcmJhbGFuY2VfZ2V0X2JhbGFuY2VfdHlwZSAoR3N0Q29sb3JCYWxhbmNlICogYmFsYW5jZSkKK3sKKyAgcmV0dXJuIEdTVF9DT0xPUl9CQUxBTkNFX0hBUkRXQVJFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX2NvbG9yX2JhbGFuY2VfY29sb3JiYWxhbmNlX2luaXQgKEdzdENvbG9yQmFsYW5jZUludGVyZmFjZSAqIGlmYWNlKQoreworICBpZmFjZS0+bGlzdF9jaGFubmVscyA9IGdzdF9nbF9jb2xvcl9iYWxhbmNlX2NvbG9yYmFsYW5jZV9saXN0X2NoYW5uZWxzOworICBpZmFjZS0+c2V0X3ZhbHVlID0gZ3N0X2dsX2NvbG9yX2JhbGFuY2VfY29sb3JiYWxhbmNlX3NldF92YWx1ZTsKKyAgaWZhY2UtPmdldF92YWx1ZSA9IGdzdF9nbF9jb2xvcl9iYWxhbmNlX2NvbG9yYmFsYW5jZV9nZXRfdmFsdWU7CisgIGlmYWNlLT5nZXRfYmFsYW5jZV90eXBlID0gZ3N0X2dsX2NvbG9yX2JhbGFuY2VfY29sb3JiYWxhbmNlX2dldF9iYWxhbmNlX3R5cGU7Cit9CisKK3N0YXRpYyBHc3RDb2xvckJhbGFuY2VDaGFubmVsICoKK2dzdF9nbF9jb2xvcl9iYWxhbmNlX2ZpbmRfY2hhbm5lbCAoR3N0R0xDb2xvckJhbGFuY2UgKiBiYWxhbmNlLAorICAgIGNvbnN0IGdjaGFyICogbGFiZWwpCit7CisgIEdMaXN0ICpsOworCisgIGZvciAobCA9IGJhbGFuY2UtPmNoYW5uZWxzOyBsOyBsID0gbC0+bmV4dCkgeworICAgIEdzdENvbG9yQmFsYW5jZUNoYW5uZWwgKmNoYW5uZWwgPSBsLT5kYXRhOworCisgICAgaWYgKGdfYXNjaWlfc3RyY2FzZWNtcCAoY2hhbm5lbC0+bGFiZWwsIGxhYmVsKSA9PSAwKQorICAgICAgcmV0dXJuIGNoYW5uZWw7CisgIH0KKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfY29sb3JfYmFsYW5jZV9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0R0xDb2xvckJhbGFuY2UgKmJhbGFuY2UgPSBHU1RfR0xfQ09MT1JfQkFMQU5DRSAob2JqZWN0KTsKKyAgZ2RvdWJsZSBkOworICBjb25zdCBnY2hhciAqbGFiZWwgPSBOVUxMOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoYmFsYW5jZSk7CisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9DT05UUkFTVDoKKyAgICAgIGQgPSBnX3ZhbHVlX2dldF9kb3VibGUgKHZhbHVlKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGJhbGFuY2UsICJDaGFuZ2luZyBjb250cmFzdCBmcm9tICVsZiB0byAlbGYiLAorICAgICAgICAgIGJhbGFuY2UtPmNvbnRyYXN0LCBkKTsKKyAgICAgIGlmIChkICE9IGJhbGFuY2UtPmNvbnRyYXN0KQorICAgICAgICBsYWJlbCA9ICJDT05UUkFTVCI7CisgICAgICBiYWxhbmNlLT5jb250cmFzdCA9IGQ7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQlJJR0hUTkVTUzoKKyAgICAgIGQgPSBnX3ZhbHVlX2dldF9kb3VibGUgKHZhbHVlKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGJhbGFuY2UsICJDaGFuZ2luZyBicmlnaHRuZXNzIGZyb20gJWxmIHRvICVsZiIsCisgICAgICAgICAgYmFsYW5jZS0+YnJpZ2h0bmVzcywgZCk7CisgICAgICBpZiAoZCAhPSBiYWxhbmNlLT5icmlnaHRuZXNzKQorICAgICAgICBsYWJlbCA9ICJCUklHSFRORVNTIjsKKyAgICAgIGJhbGFuY2UtPmJyaWdodG5lc3MgPSBkOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0hVRToKKyAgICAgIGQgPSBnX3ZhbHVlX2dldF9kb3VibGUgKHZhbHVlKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGJhbGFuY2UsICJDaGFuZ2luZyBodWUgZnJvbSAlbGYgdG8gJWxmIiwgYmFsYW5jZS0+aHVlLAorICAgICAgICAgIGQpOworICAgICAgaWYgKGQgIT0gYmFsYW5jZS0+aHVlKQorICAgICAgICBsYWJlbCA9ICJIVUUiOworICAgICAgYmFsYW5jZS0+aHVlID0gZDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TQVRVUkFUSU9OOgorICAgICAgZCA9IGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYmFsYW5jZSwgIkNoYW5naW5nIHNhdHVyYXRpb24gZnJvbSAlbGYgdG8gJWxmIiwKKyAgICAgICAgICBiYWxhbmNlLT5zYXR1cmF0aW9uLCBkKTsKKyAgICAgIGlmIChkICE9IGJhbGFuY2UtPnNhdHVyYXRpb24pCisgICAgICAgIGxhYmVsID0gIlNBVFVSQVRJT04iOworICAgICAgYmFsYW5jZS0+c2F0dXJhdGlvbiA9IGQ7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9CisKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKGJhbGFuY2UpOworICBnc3RfZ2xfY29sb3JfYmFsYW5jZV91cGRhdGVfcHJvcGVydGllcyAoYmFsYW5jZSk7CisKKyAgaWYgKGxhYmVsKSB7CisgICAgR3N0Q29sb3JCYWxhbmNlQ2hhbm5lbCAqY2hhbm5lbCA9CisgICAgICAgIGdzdF9nbF9jb2xvcl9iYWxhbmNlX2ZpbmRfY2hhbm5lbCAoYmFsYW5jZSwgbGFiZWwpOworICAgIGdzdF9jb2xvcl9iYWxhbmNlX3ZhbHVlX2NoYW5nZWQgKEdTVF9DT0xPUl9CQUxBTkNFIChiYWxhbmNlKSwgY2hhbm5lbCwKKyAgICAgICAgZ3N0X2NvbG9yX2JhbGFuY2VfZ2V0X3ZhbHVlIChHU1RfQ09MT1JfQkFMQU5DRSAoYmFsYW5jZSksIGNoYW5uZWwpKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX2NvbG9yX2JhbGFuY2VfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdEdMQ29sb3JCYWxhbmNlICpiYWxhbmNlID0gR1NUX0dMX0NPTE9SX0JBTEFOQ0UgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX0NPTlRSQVNUOgorICAgICAgZ192YWx1ZV9zZXRfZG91YmxlICh2YWx1ZSwgYmFsYW5jZS0+Y29udHJhc3QpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0JSSUdIVE5FU1M6CisgICAgICBnX3ZhbHVlX3NldF9kb3VibGUgKHZhbHVlLCBiYWxhbmNlLT5icmlnaHRuZXNzKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IVUU6CisgICAgICBnX3ZhbHVlX3NldF9kb3VibGUgKHZhbHVlLCBiYWxhbmNlLT5odWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NBVFVSQVRJT046CisgICAgICBnX3ZhbHVlX3NldF9kb3VibGUgKHZhbHVlLCBiYWxhbmNlLT5zYXR1cmF0aW9uKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGNvbG9yYmFsYW5jZS5oIGIvZXh0L2dsL2dzdGdsY29sb3JiYWxhbmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YwYmNkNwotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9nbC9nc3RnbGNvbG9yYmFsYW5jZS5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSA8MTk5OT4gRXJpayBXYWx0aGluc2VuIDxvbWVnYUBjc2Uub2dpLmVkdT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisKKyNpZm5kZWYgX19HU1RfR0xfQ09MT1JfQkFMQU5DRV9IX18KKyNkZWZpbmUgX19HU1RfR0xfQ09MT1JfQkFMQU5DRV9IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX0dMX0NPTE9SX0JBTEFOQ0UgXAorICAoZ3N0X2dsX2NvbG9yX2JhbGFuY2VfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX0dMX0NPTE9SX0JBTEFOQ0Uob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9HTF9DT0xPUl9CQUxBTkNFLEdzdEdMQ29sb3JCYWxhbmNlKSkKKyNkZWZpbmUgR1NUX0dMX0NPTE9SX0JBTEFOQ0VfQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfR0xfQ09MT1JfQkFMQU5DRSxHc3RHTENvbG9yQmFsYW5jZUNsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX0dMX0NPTE9SX0JBTEFOQ0Uob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9HTF9DT0xPUl9CQUxBTkNFKSkKKyNkZWZpbmUgR1NUX0lTX0dMX0NPTE9SX0JBTEFOQ0VfQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfR0xfQ09MT1JfQkFMQU5DRSkpCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTENvbG9yQmFsYW5jZSBHc3RHTENvbG9yQmFsYW5jZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTENvbG9yQmFsYW5jZUNsYXNzIEdzdEdMQ29sb3JCYWxhbmNlQ2xhc3M7CisKKy8qKgorICogR3N0R0xDb2xvckJhbGFuY2U6CisgKgorICogT3BhcXVlIGRhdGEgc3RydWN0dXJlLgorICovCitzdHJ1Y3QgX0dzdEdMQ29sb3JCYWxhbmNlIHsKKyAgR3N0R0xGaWx0ZXIgdmlkZW9maWx0ZXI7CisKKyAgLyogPCBwcml2YXRlID4gKi8KKyAgR3N0R0xTaGFkZXIgKnNoYWRlcjsKKworICAvKiBjaGFubmVscyBmb3IgaW50ZXJmYWNlICovCisgIEdMaXN0ICpjaGFubmVsczsKKworICAvKiBwcm9wZXJ0aWVzICovCisgIGdkb3VibGUgY29udHJhc3Q7CisgIGdkb3VibGUgYnJpZ2h0bmVzczsKKyAgZ2RvdWJsZSBodWU7CisgIGdkb3VibGUgc2F0dXJhdGlvbjsKK307CisKK3N0cnVjdCBfR3N0R0xDb2xvckJhbGFuY2VDbGFzcyB7CisgIEdzdEdMRmlsdGVyQ2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworR1R5cGUgZ3N0X2dsX2NvbG9yX2JhbGFuY2VfZ2V0X3R5cGUodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9HTF9DT0xPUl9CQUxBTkNFX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsY29sb3Jjb252ZXJ0ZWxlbWVudC5jIGIvZXh0L2dsL2dzdGdsY29sb3Jjb252ZXJ0ZWxlbWVudC5jCmluZGV4IGU0ZmY2Y2EuLmJkNGZiZWIgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbGNvbG9yY29udmVydGVsZW1lbnQuYworKysgYi9leHQvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnRlbGVtZW50LmMKQEAgLTU4LDE1ICs1OCwxMyBAQAogR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAogICAgIEdTVF9QQURfU1JDLAogICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX0dMX0NPTE9SX0NPTlZFUlRfVklERU9fQ0FQUyAiOyIKLSAgICAgICAgR1NUX0dMX0NPTE9SX0NPTlZFUlRfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTl9DQVBTKSk7CisgICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfR0xfQ09MT1JfQ09OVkVSVF9WSURFT19DQVBTKSk7CiAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfZ2xfY29sb3JfY29udmVydF9lbGVtZW50X3NpbmtfcGFkX3RlbXBsYXRlID0KIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCiAgICAgR1NUX1BBRF9TSU5LLAogICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX0dMX0NPTE9SX0NPTlZFUlRfVklERU9fQ0FQUyAiOyIKLSAgICAgICAgR1NUX0dMX0NPTE9SX0NPTlZFUlRfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTl9DQVBTKSk7CisgICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfR0xfQ09MT1JfQ09OVkVSVF9WSURFT19DQVBTKSk7CiAKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZWxlbWVudF9zdG9wIChHc3RCYXNlVHJhbnNmb3JtICogYnQpCkBAIC0xOTMsNiArMTkxLDkgQEAKICAgICAgICAgICBjb252ZXJ0LT5vdXRfY2FwcykpCiAgICAgcmV0dXJuIEZBTFNFOwogCisgIGlmICghZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZGVjaWRlX2FsbG9jYXRpb24gKGNvbnZlcnQtPmNvbnZlcnQsIHF1ZXJ5KSkKKyAgICByZXR1cm4gRkFMU0U7CisKICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTI0MCwxOCArMjQxLDcgQEAKIGdzdF9nbF9jb2xvcl9jb252ZXJ0X2VsZW1lbnRfZml4YXRlX2NhcHMgKEdzdEJhc2VUcmFuc2Zvcm0gKgogICAgIGJ0LCBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RDYXBzICogY2FwcywgR3N0Q2FwcyAqIG90aGVyY2FwcykKIHsKLSAgR3N0Q2FwcyAqcmV0OworICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBHU1RfR0xfQkFTRV9GSUxURVIgKGJ0KS0+Y29udGV4dDsKIAotICByZXQgPQotICAgICAgR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTCi0gICAgICAoZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZWxlbWVudF9wYXJlbnRfY2xhc3MpLT5maXhhdGVfY2FwcyAoYnQsIGRpcmVjdGlvbiwKLSAgICAgIGNhcHMsIG90aGVyY2Fwcyk7Ci0KLSAgaWYgKGRpcmVjdGlvbiA9PSBHU1RfUEFEX1NJTkspIHsKLSAgICBpZiAoZ3N0X2NhcHNfaXNfc3Vic2V0IChjYXBzLCByZXQpKSB7Ci0gICAgICBnc3RfY2Fwc19yZXBsYWNlICgmcmV0LCBjYXBzKTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gcmV0OworICByZXR1cm4gZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZml4YXRlX2NhcHMgKGNvbnRleHQsIGRpcmVjdGlvbiwgY2Fwcywgb3RoZXJjYXBzKTsKIH0KZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGNvbG9yc2NhbGUuYyBiL2V4dC9nbC9nc3RnbGNvbG9yc2NhbGUuYwppbmRleCBhNzllNTI0Li5jN2RmMGE4IDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xjb2xvcnNjYWxlLmMKKysrIGIvZXh0L2dsL2dzdGdsY29sb3JzY2FsZS5jCkBAIC03MCwyNCArNzAsMjUgQEAKIHN0YXRpYyB2b2lkIGdzdF9nbF9jb2xvcnNjYWxlX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIAotc3RhdGljIGdib29sZWFuIGdzdF9nbF9jb2xvcnNjYWxlX2dlbl9nbF9yZXNvdXJjZXMgKEdzdEdMRmlsdGVyICogZmlsdGVyKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfY29sb3JzY2FsZV9kZWxfZ2xfcmVzb3VyY2VzIChHc3RCYXNlVHJhbnNmb3JtICogdHJhbnMpOworc3RhdGljIGdib29sZWFuIGdzdF9nbF9jb2xvcnNjYWxlX2dsX3N0YXJ0IChHc3RHTEJhc2VGaWx0ZXIgKiBiYXNlX2ZpbHRlcik7CitzdGF0aWMgdm9pZCBnc3RfZ2xfY29sb3JzY2FsZV9nbF9zdG9wIChHc3RHTEJhc2VGaWx0ZXIgKiBiYXNlX2ZpbHRlcik7CiAKIHN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfY29sb3JzY2FsZV9maWx0ZXJfdGV4dHVyZSAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIsCiAgICAgZ3VpbnQgaW5fdGV4LCBndWludCBvdXRfdGV4KTsKLXN0YXRpYyB2b2lkIGdzdF9nbF9jb2xvcnNjYWxlX2NhbGxiYWNrIChnaW50IHdpZHRoLCBnaW50IGhlaWdodCwKLSAgICBndWludCB0ZXh0dXJlLCBncG9pbnRlciBzdHVmZik7CiAKIHN0YXRpYyB2b2lkCiBnc3RfZ2xfY29sb3JzY2FsZV9jbGFzc19pbml0IChHc3RHTENvbG9yc2NhbGVDbGFzcyAqIGtsYXNzKQogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CiAgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzczsKKyAgR3N0QmFzZVRyYW5zZm9ybUNsYXNzICpiYXNldHJhbnNmb3JtX2NsYXNzOworICBHc3RHTEJhc2VGaWx0ZXJDbGFzcyAqYmFzZV9maWx0ZXJfY2xhc3M7CiAgIEdzdEdMRmlsdGVyQ2xhc3MgKmZpbHRlcl9jbGFzczsKLSAgR3N0QmFzZVRyYW5zZm9ybUNsYXNzICpiYXNldHJhbnNmb3JtX2NsYXNzID0gR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTIChrbGFzcyk7CiAKICAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CiAgIGVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOworICBiYXNldHJhbnNmb3JtX2NsYXNzID0gR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTIChrbGFzcyk7CisgIGJhc2VfZmlsdGVyX2NsYXNzID0gR1NUX0dMX0JBU0VfRklMVEVSX0NMQVNTIChrbGFzcyk7CiAgIGZpbHRlcl9jbGFzcyA9IEdTVF9HTF9GSUxURVJfQ0xBU1MgKGtsYXNzKTsKIAogICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfZ2xfY29sb3JzY2FsZV9zZXRfcHJvcGVydHk7CkBAIC05NSwyNCArOTYsMjIgQEAKIAogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsICJPcGVuR0wgY29sb3Igc2NhbGUiLAogICAgICAgIkZpbHRlci9FZmZlY3QvVmlkZW8iLCAiQ29sb3JzcGFjZSBjb252ZXJ0ZXIgYW5kIHZpZGVvIHNjYWxlciIsCi0gICAgICAiSnVsaWVuIElzb3JjZSA8anVsaWVuLmlzb3JjZUBnbWFpbC5jb20+Iik7CisgICAgICAiSnVsaWVuIElzb3JjZSA8anVsaWVuLmlzb3JjZUBnbWFpbC5jb20+XG4iCisgICAgICAiTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPiIpOwogCi0gIGZpbHRlcl9jbGFzcy0+aW5pdF9mYm8gPQotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF9jb2xvcnNjYWxlX2dlbl9nbF9yZXNvdXJjZXMpOworICBiYXNldHJhbnNmb3JtX2NsYXNzLT5wYXNzdGhyb3VnaF9vbl9zYW1lX2NhcHMgPSBUUlVFOworCisgIGJhc2VfZmlsdGVyX2NsYXNzLT5nbF9zdGFydCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfY29sb3JzY2FsZV9nbF9zdGFydCk7CisgIGJhc2VfZmlsdGVyX2NsYXNzLT5nbF9zdG9wID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF9jb2xvcnNjYWxlX2dsX3N0b3ApOworICBiYXNlX2ZpbHRlcl9jbGFzcy0+c3VwcG9ydGVkX2dsX2FwaSA9CisgICAgICBHU1RfR0xfQVBJX09QRU5HTCB8IEdTVF9HTF9BUElfT1BFTkdMMyB8IEdTVF9HTF9BUElfR0xFUzI7CiAKICAgZmlsdGVyX2NsYXNzLT5maWx0ZXJfdGV4dHVyZSA9IGdzdF9nbF9jb2xvcnNjYWxlX2ZpbHRlcl90ZXh0dXJlOwotCi0gIGJhc2V0cmFuc2Zvcm1fY2xhc3MtPnN0b3AgPQotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF9jb2xvcnNjYWxlX2RlbF9nbF9yZXNvdXJjZXMpOwotICBiYXNldHJhbnNmb3JtX2NsYXNzLT5wYXNzdGhyb3VnaF9vbl9zYW1lX2NhcHMgPSBUUlVFOwotICBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+c3VwcG9ydGVkX2dsX2FwaSA9Ci0gICAgICBHU1RfR0xfQVBJX09QRU5HTCB8IEdTVF9HTF9BUElfT1BFTkdMMyB8IEdTVF9HTF9BUElfR0xFUzI7CiB9CiAKIHN0YXRpYyB2b2lkCiBnc3RfZ2xfY29sb3JzY2FsZV9pbml0IChHc3RHTENvbG9yc2NhbGUgKiBjb2xvcnNjYWxlKQogewotICBjb2xvcnNjYWxlLT5zaGFkZXIgPSBOVUxMOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTM3LDkzICsxMzYsNTMgQEAKICAgfQogfQogCi1zdGF0aWMgdm9pZAotX2NvbXBpbGVfaWRlbnRpdHlfc2hhZGVyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTENvbG9yc2NhbGUgKiBjb2xvcnNjYWxlKQorc3RhdGljIGdib29sZWFuCitnc3RfZ2xfY29sb3JzY2FsZV9nbF9zdGFydCAoR3N0R0xCYXNlRmlsdGVyICogYmFzZV9maWx0ZXIpCiB7Ci0gIEdzdEdMRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfRklMVEVSIChjb2xvcnNjYWxlKTsKKyAgR3N0R0xDb2xvcnNjYWxlICpjb2xvcnNjYWxlID0gR1NUX0dMX0NPTE9SU0NBTEUgKGJhc2VfZmlsdGVyKTsKKyAgR3N0R0xGaWx0ZXIgKmZpbHRlciA9IEdTVF9HTF9GSUxURVIgKGJhc2VfZmlsdGVyKTsKKyAgR3N0R0xTaGFkZXIgKnNoYWRlcjsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CiAKLSAgY29sb3JzY2FsZS0+c2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXcgKGNvbnRleHQpOworICBpZiAoIShzaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0IChiYXNlX2ZpbHRlci0+Y29udGV4dCwgJmVycm9yKSkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChjb2xvcnNjYWxlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgc2hhZGVyOiAlcyIsCisgICAgICAgIGVycm9yLT5tZXNzYWdlKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzaGFkZXIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQogCi0gIGlmICghZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92Zl9hbmRfY2hlY2sgKGNvbG9yc2NhbGUtPnNoYWRlciwKLSAgICAgICAgICAmZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jLCAmZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MpKSB7Ci0gICAgZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVyIChjb250ZXh0KTsKKyAgZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jID0KKyAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoc2hhZGVyLCAiYV9wb3NpdGlvbiIpOworICBmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYyA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfdGV4Y29vcmQiKTsKKworICBjb2xvcnNjYWxlLT5zaGFkZXIgPSBzaGFkZXI7CisKKyAgcmV0dXJuIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAocGFyZW50X2NsYXNzKS0+Z2xfc3RhcnQgKGJhc2VfZmlsdGVyKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9jb2xvcnNjYWxlX2dsX3N0b3AgKEdzdEdMQmFzZUZpbHRlciAqIGJhc2VfZmlsdGVyKQoreworICBHc3RHTENvbG9yc2NhbGUgKmNvbG9yc2NhbGUgPSBHU1RfR0xfQ09MT1JTQ0FMRSAoYmFzZV9maWx0ZXIpOworCisgIGlmIChjb2xvcnNjYWxlLT5zaGFkZXIpIHsKICAgICBnc3Rfb2JqZWN0X3VucmVmIChjb2xvcnNjYWxlLT5zaGFkZXIpOwogICAgIGNvbG9yc2NhbGUtPnNoYWRlciA9IE5VTEw7CiAgIH0KLX0KIAotc3RhdGljIGdib29sZWFuCi1nc3RfZ2xfY29sb3JzY2FsZV9nZW5fZ2xfcmVzb3VyY2VzIChHc3RHTEZpbHRlciAqIGZpbHRlcikKLXsKLSAgR3N0R0xDb2xvcnNjYWxlICpjb2xvcnNjYWxlID0gR1NUX0dMX0NPTE9SU0NBTEUgKGZpbHRlcik7Ci0KLSAgaWYgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dCkgJgotICAgICAgKEdTVF9HTF9BUElfR0xFUzIgfCBHU1RfR0xfQVBJX09QRU5HTDMpKSB7Ci0gICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXIpLT5jb250ZXh0LAotICAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2NvbXBpbGVfaWRlbnRpdHlfc2hhZGVyLCBjb2xvcnNjYWxlKTsKLQotICAgIGlmICghY29sb3JzY2FsZS0+c2hhZGVyKSB7Ci0gICAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dCwKLSAgICAgICAgICAiRmFpbGVkIHRvIGluaXRpYWxpemUgaWRlbnRpdHkgc2hhZGVyIik7Ci0gICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoY29sb3JzY2FsZSwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsCi0gICAgICAgICAgICAgIGdzdF9nbF9jb250ZXh0X2dldF9lcnJvciAoKSksIChOVUxMKSk7Ci0gICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dsX2NvbG9yc2NhbGVfZGVsX2dsX3Jlc291cmNlcyAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zKQotewotICBHc3RHTENvbG9yc2NhbGUgKmNvbG9yc2NhbGUgPSBHU1RfR0xfQ09MT1JTQ0FMRSAodHJhbnMpOwotCi0gIGlmIChjb2xvcnNjYWxlLT5zaGFkZXIpIHsKLSAgICBnc3RfZ2xfY29udGV4dF9kZWxfc2hhZGVyIChHU1RfR0xfQkFTRV9GSUxURVIgKHRyYW5zKS0+Y29udGV4dCwKLSAgICAgICAgY29sb3JzY2FsZS0+c2hhZGVyKTsKLSAgICBjb2xvcnNjYWxlLT5zaGFkZXIgPSBOVUxMOwotICB9Ci0KLSAgcmV0dXJuIEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUyAocGFyZW50X2NsYXNzKS0+c3RvcCAodHJhbnMpOworICByZXR1cm4gR1NUX0dMX0JBU0VfRklMVEVSX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5nbF9zdG9wIChiYXNlX2ZpbHRlcik7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2dsX2NvbG9yc2NhbGVfZmlsdGVyX3RleHR1cmUgKEdzdEdMRmlsdGVyICogZmlsdGVyLCBndWludCBpbl90ZXgsCiAgICAgZ3VpbnQgb3V0X3RleCkKIHsKLSAgR3N0R0xDb2xvcnNjYWxlICpjb2xvcnNjYWxlOworICBHc3RHTENvbG9yc2NhbGUgKmNvbG9yc2NhbGUgPSBHU1RfR0xfQ09MT1JTQ0FMRSAoZmlsdGVyKTsKIAotICBjb2xvcnNjYWxlID0gR1NUX0dMX0NPTE9SU0NBTEUgKGZpbHRlcik7Ci0KLSAgaWYgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dCkgJgotICAgICAgKEdTVF9HTF9BUElfR0xFUzIgfCBHU1RfR0xfQVBJX09QRU5HTDMpKQorICBpZiAoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXIpLT5jb250ZXh0KSkKICAgICBnc3RfZ2xfZmlsdGVyX3JlbmRlcl90b190YXJnZXRfd2l0aF9zaGFkZXIgKGZpbHRlciwgVFJVRSwgaW5fdGV4LCBvdXRfdGV4LAogICAgICAgICBjb2xvcnNjYWxlLT5zaGFkZXIpOwogCi0gIGlmIChnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQpICYKLSAgICAgIEdTVF9HTF9BUElfT1BFTkdMKQotICAgIGdzdF9nbF9maWx0ZXJfcmVuZGVyX3RvX3RhcmdldCAoZmlsdGVyLCBUUlVFLCBpbl90ZXgsIG91dF90ZXgsCi0gICAgICAgIGdzdF9nbF9jb2xvcnNjYWxlX2NhbGxiYWNrLCBjb2xvcnNjYWxlKTsKLQogICByZXR1cm4gVFJVRTsKIH0KLQotc3RhdGljIHZvaWQKLWdzdF9nbF9jb2xvcnNjYWxlX2NhbGxiYWNrIChnaW50IHdpZHRoLCBnaW50IGhlaWdodCwgZ3VpbnQgdGV4dHVyZSwKLSAgICBncG9pbnRlciBzdHVmZikKLXsKLSAgR3N0R0xGaWx0ZXIgKmZpbHRlciA9IEdTVF9HTF9GSUxURVIgKHN0dWZmKTsKLQotI2lmIEdTVF9HTF9IQVZFX09QRU5HTAotICBpZiAoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXIpLT5jb250ZXh0KSAmCi0gICAgICBHU1RfR0xfQVBJX09QRU5HTCkgewotICAgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXIpLT5jb250ZXh0LT5nbF92dGFibGU7Ci0KLSAgICBnbC0+TWF0cml4TW9kZSAoR0xfUFJPSkVDVElPTik7Ci0gICAgZ2wtPkxvYWRJZGVudGl0eSAoKTsKLSAgfQotI2VuZGlmCi0KLSAgZ3N0X2dsX2ZpbHRlcl9kcmF3X3RleHR1cmUgKGZpbHRlciwgdGV4dHVyZSwgd2lkdGgsIGhlaWdodCk7Ci19CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xkZWludGVybGFjZS5jIGIvZXh0L2dsL2dzdGdsZGVpbnRlcmxhY2UuYwppbmRleCAyZDQ4NzQ5Li5iZDBlZmYwIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xkZWludGVybGFjZS5jCisrKyBiL2V4dC9nbC9nc3RnbGRlaW50ZXJsYWNlLmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCB2aWRlb3Rlc3RzcmMgISBnbHVwbG9hZCAhIGdsZGVpbnRlcmxhY2UgISBnbGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgZ2x1cGxvYWQgISBnbGRlaW50ZXJsYWNlICEgZ2xpbWFnZXNpbmsKICAqIF18CiAgKiBGQk8gKEZyYW1lIEJ1ZmZlciBPYmplY3QpIGFuZCBHTFNMIChPcGVuR0wgU2hhZGluZyBMYW5ndWFnZSkgYXJlIHJlcXVpcmVkLgogICogPC9yZWZzZWN0Mj4KZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGRpZmZlcmVuY2VtYXR0ZS5jIGIvZXh0L2dsL2dzdGdsZGlmZmVyZW5jZW1hdHRlLmMKaW5kZXggYjJiNWZhNS4uNjMwNGM2ZCAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsZGlmZmVyZW5jZW1hdHRlLmMKKysrIGIvZXh0L2dsL2dzdGdsZGlmZmVyZW5jZW1hdHRlLmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCB2aWRlb3Rlc3RzcmMgISBnbHVwbG9hZCAhIGdsZGlmZmVyZW5jZW1hdGUgbG9jYXRpb249YmFja2dyb3VuZGltYWdlZmlsZSAhIGdsaW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBnbHVwbG9hZCAhIGdsZGlmZmVyZW5jZW1hdGUgbG9jYXRpb249YmFja2dyb3VuZGltYWdlZmlsZSAhIGdsaW1hZ2VzaW5rCiAgKiBdfAogICogRkJPIChGcmFtZSBCdWZmZXIgT2JqZWN0KSBhbmQgR0xTTCAoT3BlbkdMIFNoYWRpbmcgTGFuZ3VhZ2UpIGFyZSByZXF1aXJlZC4KICAqIDwvcmVmc2VjdDI+CkBAIC03OCw3ICs3OCw5IEBACiBnc3RfZ2xfZGlmZmVyZW5jZW1hdHRlX2luaXRfZ2xfcmVzb3VyY2VzIChHc3RHTEZpbHRlciAqIGZpbHRlcikKIHsKICAgR3N0R0xEaWZmZXJlbmNlTWF0dGUgKmRpZmZlcmVuY2VtYXR0ZSA9IEdTVF9HTF9ESUZGRVJFTkNFTUFUVEUgKGZpbHRlcik7Ci0gIEdzdEdMRnVuY3MgKmdsID0gR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXIpLT5jb250ZXh0LT5nbF92dGFibGU7CisgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dDsKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwogICBnaW50IGk7CiAKICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgewpAQCAtOTYsNDUgKzk4LDU3IEBACiAgICAgICAgIGdzdF9nbF9zaGFkZXJfbmV3IChHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQpOwogICB9CiAKLSAgaWYgKCFnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrIChkaWZmZXJlbmNlbWF0dGUtPnNoYWRlcgotICAgICAgICAgIFswXSwgZGlmZmVyZW5jZV9mcmFnbWVudF9zb3VyY2UsICZmaWx0ZXItPmRyYXdfYXR0cl9wb3NpdGlvbl9sb2MsCi0gICAgICAgICAgJmZpbHRlci0+ZHJhd19hdHRyX3RleHR1cmVfbG9jKSkgewotICAgIGdzdF9nbF9jb250ZXh0X3NldF9lcnJvciAoR1NUX0dMX0JBU0VfRklMVEVSIChkaWZmZXJlbmNlbWF0dGUpLT5jb250ZXh0LAotICAgICAgICAiRmFpbGVkIHRvIGluaXRpYWxpemUgZGlmZmVyZW5jZSBzaGFkZXIiKTsKKyAgaWYgKCEoZGlmZmVyZW5jZW1hdHRlLT5zaGFkZXJbMF0gPQorICAgICAgICAgIGdzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXMgKGNvbnRleHQsICZlcnJvciwKKyAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfdmVydGV4IChjb250ZXh0KSwKKyAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCBHTF9GUkFHTUVOVF9TSEFERVIsCisgICAgICAgICAgICAgICAgICBHU1RfR0xTTF9WRVJTSU9OX05PTkUsIEdTVF9HTFNMX1BST0ZJTEVfRVMsCisgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX2ZyYWdtZW50X3NvdXJjZSksIE5VTEwpKSkgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SIChkaWZmZXJlbmNlbWF0dGUsIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLAogICAgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZ2V0X2Vycm9yICgpKSwgKE5VTEwpKTsKICAgICByZXR1cm47CiAgIH0KIAotICBpZiAoIWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdl9hbmRfY2hlY2sgKGRpZmZlcmVuY2VtYXR0ZS0+c2hhZGVyCi0gICAgICAgICAgWzFdLCBoY29udjdfZnJhZ21lbnRfc291cmNlX2dsZXMyLCAmZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jLAotICAgICAgICAgICZmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYykpIHsKLSAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZGlmZmVyZW5jZW1hdHRlKS0+Y29udGV4dCwKLSAgICAgICAgIkZhaWxlZCB0byBpbml0aWFsaXplIGhjb252NyBzaGFkZXIiKTsKKyAgaWYgKCEoZGlmZmVyZW5jZW1hdHRlLT5zaGFkZXJbMV0gPQorICAgICAgICAgIGdzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXMgKGNvbnRleHQsICZlcnJvciwKKyAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfdmVydGV4IChjb250ZXh0KSwKKyAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCBHTF9GUkFHTUVOVF9TSEFERVIsCisgICAgICAgICAgICAgICAgICBHU1RfR0xTTF9WRVJTSU9OX05PTkUsIEdTVF9HTFNMX1BST0ZJTEVfRVMsCisgICAgICAgICAgICAgICAgICBoY29udjdfZnJhZ21lbnRfc291cmNlX2dsZXMyKSwgTlVMTCkpKSB7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGRpZmZlcmVuY2VtYXR0ZSwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsCiAgICAgICAgICAgICBnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3IgKCkpLCAoTlVMTCkpOwogICAgIHJldHVybjsKICAgfQogCi0gIGlmICghZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92X2FuZF9jaGVjayAoZGlmZmVyZW5jZW1hdHRlLT5zaGFkZXIKLSAgICAgICAgICBbMl0sIHZjb252N19mcmFnbWVudF9zb3VyY2VfZ2xlczIsICZmaWx0ZXItPmRyYXdfYXR0cl9wb3NpdGlvbl9sb2MsCi0gICAgICAgICAgJmZpbHRlci0+ZHJhd19hdHRyX3RleHR1cmVfbG9jKSkgewotICAgIGdzdF9nbF9jb250ZXh0X3NldF9lcnJvciAoR1NUX0dMX0JBU0VfRklMVEVSIChkaWZmZXJlbmNlbWF0dGUpLT5jb250ZXh0LAotICAgICAgICAiRmFpbGVkIHRvIGluaXRpYWxpemUgdmNvbnY3IHNoYWRlciIpOworICBpZiAoIShkaWZmZXJlbmNlbWF0dGUtPnNoYWRlclsyXSA9CisgICAgICAgICAgZ3N0X2dsX3NoYWRlcl9uZXdfbGlua193aXRoX3N0YWdlcyAoY29udGV4dCwgJmVycm9yLAorICAgICAgICAgICAgICBnc3RfZ2xzbF9zdGFnZV9uZXdfZGVmYXVsdF92ZXJ0ZXggKGNvbnRleHQpLAorICAgICAgICAgICAgICBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmcgKGNvbnRleHQsIEdMX0ZSQUdNRU5UX1NIQURFUiwKKyAgICAgICAgICAgICAgICAgIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwgR1NUX0dMU0xfUFJPRklMRV9FUywKKyAgICAgICAgICAgICAgICAgIHZjb252N19mcmFnbWVudF9zb3VyY2VfZ2xlczIpLCBOVUxMKSkpIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZGlmZmVyZW5jZW1hdHRlLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwKICAgICAgICAgICAgIGdzdF9nbF9jb250ZXh0X2dldF9lcnJvciAoKSksIChOVUxMKSk7CiAgICAgcmV0dXJuOwogICB9CiAKLSAgaWYgKCFnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrIChkaWZmZXJlbmNlbWF0dGUtPnNoYWRlcgotICAgICAgICAgIFszXSwgdGV4dHVyZV9pbnRlcnBfZnJhZ21lbnRfc291cmNlLCAmZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jLAotICAgICAgICAgICZmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYykpIHsKLSAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZGlmZmVyZW5jZW1hdHRlKS0+Y29udGV4dCwKLSAgICAgICAgIkZhaWxlZCB0byBpbml0aWFsaXplIGludGVycCBzaGFkZXIiKTsKKyAgaWYgKCEoZGlmZmVyZW5jZW1hdHRlLT5zaGFkZXJbM10gPQorICAgICAgICAgIGdzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXMgKGNvbnRleHQsICZlcnJvciwKKyAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfdmVydGV4IChjb250ZXh0KSwKKyAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCBHTF9GUkFHTUVOVF9TSEFERVIsCisgICAgICAgICAgICAgICAgICBHU1RfR0xTTF9WRVJTSU9OX05PTkUsIEdTVF9HTFNMX1BST0ZJTEVfRVMsCisgICAgICAgICAgICAgICAgICB0ZXh0dXJlX2ludGVycF9mcmFnbWVudF9zb3VyY2UpLCBOVUxMKSkpIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZGlmZmVyZW5jZW1hdHRlLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwKICAgICAgICAgICAgIGdzdF9nbF9jb250ZXh0X2dldF9lcnJvciAoKSksIChOVUxMKSk7CiAgICAgcmV0dXJuOwogICB9CisKKyAgLyogRklYTUU6IHRoaXMgc2hvdWxkIHJlYWxseSBiZSBwZXIgc2hhZGVyICovCisgIGZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYyA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKGRpZmZlcmVuY2VtYXR0ZS0+c2hhZGVyWzNdLAorICAgICAgImFfcG9zaXRpb24iKTsKKyAgZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChkaWZmZXJlbmNlbWF0dGUtPnNoYWRlclszXSwKKyAgICAgICJhX3RleGNvb3JkIik7CiB9CiAKIC8qIGZyZWUgcmVzb3VyY2VzIHRoYXQgbmVlZCBhIGdsIGNvbnRleHQgKi8KQEAgLTIyMiw4ICsyMzYsNyBAQAogCiAgIHN3aXRjaCAocHJvcF9pZCkgewogICAgIGNhc2UgUFJPUF9MT0NBVElPTjoKLSAgICAgIGlmIChkaWZmZXJlbmNlbWF0dGUtPmxvY2F0aW9uICE9IE5VTEwpCi0gICAgICAgIGdfZnJlZSAoZGlmZmVyZW5jZW1hdHRlLT5sb2NhdGlvbik7CisgICAgICBnX2ZyZWUgKGRpZmZlcmVuY2VtYXR0ZS0+bG9jYXRpb24pOwogICAgICAgZGlmZmVyZW5jZW1hdHRlLT5iZ19oYXNfY2hhbmdlZCA9IFRSVUU7CiAgICAgICBkaWZmZXJlbmNlbWF0dGUtPmxvY2F0aW9uID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CiAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGRvd25sb2FkZWxlbWVudC5jIGIvZXh0L2dsL2dzdGdsZG93bmxvYWRlbGVtZW50LmMKaW5kZXggOTRhNmU3YS4uZmY5MzFmYSAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsZG93bmxvYWRlbGVtZW50LmMKKysrIGIvZXh0L2dsL2dzdGdsZG93bmxvYWRlbGVtZW50LmMKQEAgLTUzLDEwICs1MywxMCBAQAogICAgIEdTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3OyB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpIikpOwogCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X2dsX2Rvd25sb2FkX2VsZW1lbnRfc2lua19wYWRfdGVtcGxhdGUgPQotR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKKyAgICBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAogICAgIEdTVF9QQURfU0lOSywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpIikpOworICAgIEdTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSk7IHZpZGVvL3gtcmF3IikpOwogCiBzdGF0aWMgdm9pZAogZ3N0X2dsX2Rvd25sb2FkX2VsZW1lbnRfY2xhc3NfaW5pdCAoR3N0R0xEb3dubG9hZEVsZW1lbnRDbGFzcyAqIGtsYXNzKQpAQCAtMTc2LDcgKzE3Niw4IEBACiAgICAgaWYgKGdzdF9pc19nbF9tZW1vcnkgKG1lbSkpIHsKICAgICAgIGlmICghZmVhdHVyZXMgfHwgZ3N0X2NhcHNfZmVhdHVyZXNfY29udGFpbnMgKGZlYXR1cmVzLAogICAgICAgICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9TWVNURU1fTUVNT1JZKSkgewotICAgICAgICBnc3RfZ2xfbWVtb3J5X2Rvd25sb2FkX3RyYW5zZmVyICgoR3N0R0xNZW1vcnkgKikgbWVtKTsKKyAgICAgICAgaWYgKGdzdF9pc19nbF9tZW1vcnlfcGJvIChtZW0pKQorICAgICAgICAgIGdzdF9nbF9tZW1vcnlfcGJvX2Rvd25sb2FkX3RyYW5zZmVyICgoR3N0R0xNZW1vcnlQQk8gKikgbWVtKTsKICAgICAgIH0KICAgICB9CiAgIH0KZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGVmZmVjdHMuYyBiL2V4dC9nbC9nc3RnbGVmZmVjdHMuYwppbmRleCA2Y2Y1YWZjLi4xNTE4YTY0IDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xlZmZlY3RzLmMKKysrIGIvZXh0L2dsL2dzdGdsZWZmZWN0cy5jCkBAIC0yNiw3ICsyNiw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjICEgZ2x1cGxvYWQgISBnbGVmZmVjdHMgZWZmZWN0PTUgISBnbGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgZ2x1cGxvYWQgISBnbGVmZmVjdHMgZWZmZWN0PTUgISBnbGltYWdlc2luawogICogXXwKICAqIEZCTyAoRnJhbWUgQnVmZmVyIE9iamVjdCkgYW5kIEdMU0wgKE9wZW5HTCBTaGFkaW5nIExhbmd1YWdlKSBhcmUgcmVxdWlyZWQuCiAgKiA8L3JlZnNlY3QyPgpAQCAtMzUwLDYgKzM1MCw3IEBACiAgICAgY29uc3QgR3N0R0xFZmZlY3RzRmlsdGVyRGVzY3JpcHRvciAqIGZpbHRlcl9kZXNjcmlwdG9yKQogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwogCiAgIGtsYXNzLT5maWx0ZXJfZGVzY3JpcHRvciA9IGZpbHRlcl9kZXNjcmlwdG9yOwogCkBAIC0zNjYsNiArMzY3LDE1IEBACiAgICAgICAgICAgICBHU1RfVFlQRV9HTF9FRkZFQ1RTX0VGRkVDVCwKICAgICAgICAgICAgIEdTVF9HTF9FRkZFQ1RfSURFTlRJVFksCiAgICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgfSBlbHNlIHsKKyAgICBnY2hhciAqZGVzY3JpcHRpb24gPSBnX3N0cmR1cF9wcmludGYgKCJHTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSAlcyIsCisgICAgICAgIGZpbHRlcl9kZXNjcmlwdG9yLT5maWx0ZXJfbG9uZ25hbWUpOworCisgICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAorICAgICAgICBmaWx0ZXJfZGVzY3JpcHRvci0+ZmlsdGVyX2xvbmduYW1lLCAiRmlsdGVyL0VmZmVjdC9WaWRlbyIsCisgICAgICAgIGRlc2NyaXB0aW9uLCAiRmlsaXBwbyBBcmdpb2xhcyA8ZmlsaXBwby5hcmdpb2xhc0BnbWFpbC5jb20+Iik7CisKKyAgICBnX2ZyZWUgKGRlc2NyaXB0aW9uKTsKICAgfQogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCkBAIC01NDUsMjEgKzU1NSwyMyBAQAogICBzaGFkZXIgPSBnX2hhc2hfdGFibGVfbG9va3VwIChlZmZlY3RzLT5zaGFkZXJzdGFibGUsIHNoYWRlcl9uYW1lKTsKIAogICBpZiAoIXNoYWRlcikgewotICAgIHNoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3IChjb250ZXh0KTsKLSAgICBpZiAoIWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdl9hbmRfY2hlY2sgKHNoYWRlciwKLSAgICAgICAgICAgIHNoYWRlcl9zb3VyY2VfZ2xlczIsICZmaWx0ZXItPmRyYXdfYXR0cl9wb3NpdGlvbl9sb2MsCi0gICAgICAgICAgICAmZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MpKSB7Ci0gICAgICAvKiBnc3QgZ2wgY29udGV4dCBlcnJvciBpcyBhbHJlYWR5IHNldCAqLwotICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGVmZmVjdHMsIFJFU09VUkNFLCBOT1RfRk9VTkQsCi0gICAgICAgICAgKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSAlcyBzaGFkZXIsICVzIiwKLSAgICAgICAgICAgICAgc2hhZGVyX25hbWUsIGdzdF9nbF9jb250ZXh0X2dldF9lcnJvciAoKSksIChOVUxMKSk7Ci0gICAgICBnc3Rfb2JqZWN0X3VucmVmIChzaGFkZXIpOwotICAgICAgc2hhZGVyID0gTlVMTDsKLSAgICB9Ci0gIH0KKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKIAotICBpZiAoIXNoYWRlcikKLSAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIShzaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzIChjb250ZXh0LCAmZXJyb3IsCisgICAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfdmVydGV4IChjb250ZXh0KSwKKyAgICAgICAgICAgICAgICBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmcgKGNvbnRleHQsIEdMX0ZSQUdNRU5UX1NIQURFUiwKKyAgICAgICAgICAgICAgICAgICAgR1NUX0dMU0xfVkVSU0lPTl9OT05FLAorICAgICAgICAgICAgICAgICAgICBHU1RfR0xTTF9QUk9GSUxFX0VTIHwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLAorICAgICAgICAgICAgICAgICAgICBzaGFkZXJfc291cmNlX2dsZXMyKSwgTlVMTCkpKSB7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZWZmZWN0cywgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgICAoIkZhaWxlZCB0byBpbml0aWFsaXplICVzIHNoYWRlciIsIHNoYWRlcl9uYW1lKSwgKE5VTEwpKTsKKyAgICB9CisKKyAgICBmaWx0ZXItPmRyYXdfYXR0cl9wb3NpdGlvbl9sb2MgPQorICAgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfcG9zaXRpb24iKTsKKyAgICBmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYyA9CisgICAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoc2hhZGVyLCAiYV90ZXhjb29yZCIpOworICB9CiAKICAgZ19oYXNoX3RhYmxlX2luc2VydCAoZWZmZWN0cy0+c2hhZGVyc3RhYmxlLCAoZ2NoYXIgKikgc2hhZGVyX25hbWUsIHNoYWRlcik7CiAKQEAgLTYwMyw2ICs2MTUsNyBAQAogICAgIGZvciAoaSA9IDA7IGkgPCBuX2ZpbHRlcnM7ICsraSwgKytlZmZlY3QpIHsKICAgICAgIGRlc2NyaXB0b3JzW2ldLmVmZmVjdCA9IGVmZmVjdC0+dmFsdWU7CiAgICAgICBkZXNjcmlwdG9yc1tpXS5maWx0ZXJfbmFtZSA9IGVmZmVjdC0+dmFsdWVfbmljazsKKyAgICAgIGRlc2NyaXB0b3JzW2ldLmZpbHRlcl9sb25nbmFtZSA9IGVmZmVjdC0+dmFsdWVfbmFtZTsKICAgICB9CiAKICAgICBmb3IgKGRlZmluZWQgPSBnc3RfZ2xfZWZmZWN0c19maWx0ZXJzX3N1cHBvcnRlZF9wcm9wZXJ0aWVzICgpOwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsZWZmZWN0cy5oIGIvZXh0L2dsL2dzdGdsZWZmZWN0cy5oCmluZGV4IDgyYzMzYTkuLmRkZDIyOTIgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbGVmZmVjdHMuaAorKysgYi9leHQvZ2wvZ3N0Z2xlZmZlY3RzLmgKQEAgLTQ2LDYgKzQ2LDcgQEAKICAgZ2ludCBlZmZlY3Q7CiAgIGd1aW50IHN1cHBvcnRlZF9wcm9wZXJ0aWVzOwogICBjb25zdCBnY2hhciAqZmlsdGVyX25hbWU7CisgIGNvbnN0IGdjaGFyICpmaWx0ZXJfbG9uZ25hbWU7CiB9IEdzdEdMRWZmZWN0c0ZpbHRlckRlc2NyaXB0b3I7CiAKIHR5cGVkZWYgdm9pZCAoKiBHc3RHTEVmZmVjdFByb2Nlc3NGdW5jKSAoR3N0R0xFZmZlY3RzICplZmZlY3RzKTsKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGZpbHRlcmFwcC5jIGIvZXh0L2dsL2dzdGdsZmlsdGVyYXBwLmMKaW5kZXggZTM0N2UyOC4uNzE1ZjZmMyAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsZmlsdGVyYXBwLmMKKysrIGIvZXh0L2dsL2dzdGdsZmlsdGVyYXBwLmMKQEAgLTU3LDYgKzU3LDcgQEAKICNkZWZpbmUgREVCVUdfSU5JVCBcCiAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfZ2xfZmlsdGVyX2FwcF9kZWJ1ZywgImdsZmlsdGVyYXBwIiwgMCwgImdsZmlsdGVyYXBwIGVsZW1lbnQiKTsKIAorI2RlZmluZSBnc3RfZ2xfZmlsdGVyX2FwcF9wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCiBHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0R0xGaWx0ZXJBcHAsIGdzdF9nbF9maWx0ZXJfYXBwLAogICAgIEdTVF9UWVBFX0dMX0ZJTFRFUiwgREVCVUdfSU5JVCk7CiAKQEAgLTY5LDkgKzcwLDkgQEAKICAgICBHc3RDYXBzICogaW5jYXBzLCBHc3RDYXBzICogb3V0Y2Fwcyk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2ZpbHRlcl9hcHBfZmlsdGVyX3RleHR1cmUgKEdzdEdMRmlsdGVyICogZmlsdGVyLAogICAgIGd1aW50IGluX3RleCwgZ3VpbnQgb3V0X3RleCk7Ci1zdGF0aWMgdm9pZCBnc3RfZ2xfZmlsdGVyX2FwcF9jYWxsYmFjayAoZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsIGd1aW50IHRleHR1cmUsCi0gICAgZ3BvaW50ZXIgc3R1ZmYpOwogCitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2ZpbHRlcl9hcHBfZ2xfc3RhcnQgKEdzdEdMQmFzZUZpbHRlciAqIGJhc2VfZmlsdGVyKTsKK3N0YXRpYyB2b2lkIGdzdF9nbF9maWx0ZXJfYXBwX2dsX3N0b3AgKEdzdEdMQmFzZUZpbHRlciAqIGJhc2VfZmlsdGVyKTsKIAogc3RhdGljIHZvaWQKIGdzdF9nbF9maWx0ZXJfYXBwX2NsYXNzX2luaXQgKEdzdEdMRmlsdGVyQXBwQ2xhc3MgKiBrbGFzcykKQEAgLTg1LDYgKzg2LDkgQEAKICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2dsX2ZpbHRlcl9hcHBfc2V0X3Byb3BlcnR5OwogICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfZ2xfZmlsdGVyX2FwcF9nZXRfcHJvcGVydHk7CiAKKyAgR1NUX0dMX0JBU0VfRklMVEVSX0NMQVNTIChrbGFzcyktPmdsX3N0YXJ0ID0gZ3N0X2dsX2ZpbHRlcl9hcHBfZ2xfc3RhcnQ7CisgIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5nbF9zdG9wID0gZ3N0X2dsX2ZpbHRlcl9hcHBfZ2xfc3RvcDsKKwogICBHU1RfR0xfRklMVEVSX0NMQVNTIChrbGFzcyktPnNldF9jYXBzID0gZ3N0X2dsX2ZpbHRlcl9hcHBfc2V0X2NhcHM7CiAgIEdTVF9HTF9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+ZmlsdGVyX3RleHR1cmUgPQogICAgICAgZ3N0X2dsX2ZpbHRlcl9hcHBfZmlsdGVyX3RleHR1cmU7CkBAIC0xNDQsNiArMTQ4LDM0IEBACiB9CiAKIHN0YXRpYyBnYm9vbGVhbgorZ3N0X2dsX2ZpbHRlcl9hcHBfZ2xfc3RhcnQgKEdzdEdMQmFzZUZpbHRlciAqIGJhc2VfZmlsdGVyKQoreworICBHc3RHTEZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0ZJTFRFUiAoYmFzZV9maWx0ZXIpOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBpZiAoIShmaWx0ZXItPmRlZmF1bHRfc2hhZGVyID0KKyAgICAgICAgICBnc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0IChiYXNlX2ZpbHRlci0+Y29udGV4dCwgJmVycm9yKSkpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmlsdGVyLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwKKyAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIHRoZSBkZWZhdWx0IHNoYWRlciIpLCAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICByZXR1cm4gR1NUX0dMX0JBU0VfRklMVEVSX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5nbF9zdGFydCAoYmFzZV9maWx0ZXIpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX2ZpbHRlcl9hcHBfZ2xfc3RvcCAoR3N0R0xCYXNlRmlsdGVyICogYmFzZV9maWx0ZXIpCit7CisgIEdzdEdMRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfRklMVEVSIChiYXNlX2ZpbHRlcik7CisKKyAgaWYgKGZpbHRlci0+ZGVmYXVsdF9zaGFkZXIpCisgICAgZ3N0X29iamVjdF91bnJlZiAoZmlsdGVyLT5kZWZhdWx0X3NoYWRlcik7CisgIGZpbHRlci0+ZGVmYXVsdF9zaGFkZXIgPSBOVUxMOworCisgIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAocGFyZW50X2NsYXNzKS0+Z2xfc3RvcCAoYmFzZV9maWx0ZXIpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9nbF9maWx0ZXJfYXBwX3NldF9jYXBzIChHc3RHTEZpbHRlciAqIGZpbHRlciwgR3N0Q2FwcyAqIGluY2FwcywKICAgICBHc3RDYXBzICogb3V0Y2FwcykKIHsKQEAgLTIwMiwyOSArMjM0LDkgQEAKICAgICAgIGZpbHRlci0+ZmJvLCBmaWx0ZXItPmRlcHRoYnVmZmVyLCBvdXRfdGV4LCBfZ2xjYjIsICZjYik7CiAKICAgaWYgKGFwcF9maWx0ZXItPmRlZmF1bHRfZHJhdykgewotICAgIGdzdF9nbF9maWx0ZXJfcmVuZGVyX3RvX3RhcmdldCAoZmlsdGVyLCBUUlVFLCBpbl90ZXgsIG91dF90ZXgsCi0gICAgICAgIGdzdF9nbF9maWx0ZXJfYXBwX2NhbGxiYWNrLCBmaWx0ZXIpOworICAgIGdzdF9nbF9maWx0ZXJfcmVuZGVyX3RvX3RhcmdldF93aXRoX3NoYWRlciAoZmlsdGVyLCBUUlVFLCBpbl90ZXgsIG91dF90ZXgsCisgICAgICAgIGZpbHRlci0+ZGVmYXVsdF9zaGFkZXIpOwogICB9CiAKICAgcmV0dXJuIFRSVUU7CiB9Ci0KLS8vb3BlbmdsIHNjZW5lLCBwYXJhbXM6IGlucHV0IHRleHR1cmUgKG5vdCB0aGUgb3V0cHV0IGZpbHRlci0+dGV4dHVyZSkKLXN0YXRpYyB2b2lkCi1nc3RfZ2xfZmlsdGVyX2FwcF9jYWxsYmFjayAoZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsIGd1aW50IHRleHR1cmUsCi0gICAgZ3BvaW50ZXIgc3R1ZmYpCi17Ci0gIEdzdEdMRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfRklMVEVSIChzdHVmZik7Ci0KLSNpZiBHU1RfR0xfSEFWRV9PUEVOR0wKLSAgaWYgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dCkgJgotICAgICAgR1NUX0dMX0FQSV9PUEVOR0wpIHsKLSAgICBHc3RHTEZ1bmNzICpnbCA9IEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dC0+Z2xfdnRhYmxlOwotCi0gICAgZ2wtPk1hdHJpeE1vZGUgKEdMX1BST0pFQ1RJT04pOwotICAgIGdsLT5Mb2FkSWRlbnRpdHkgKCk7Ci0gIH0KLSNlbmRpZgotCi0gIGdzdF9nbF9maWx0ZXJfZHJhd190ZXh0dXJlIChmaWx0ZXIsIHRleHR1cmUsIHdpZHRoLCBoZWlnaHQpOwotfQpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmMgYi9leHQvZ2wvZ3N0Z2xmaWx0ZXJzaGFkZXIuYwppbmRleCBlMjAxZjc0Li4yMTE3Mzg4IDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xmaWx0ZXJzaGFkZXIuYworKysgYi9leHQvZ2wvZ3N0Z2xmaWx0ZXJzaGFkZXIuYwpAQCAtMjIsMTQgKzIyLDE0IEBACiAvKioKICAqIFNFQ1RJT046ZWxlbWVudC1nbHNoYWRlcgogICoKLSAqIEZpbHRlciBsb2FkaW5nIE9wZW5HTCBmcmFnbWVudCBzaGFkZXIgZnJvbSBmaWxlCisgKiBPcGVuR0wgZnJhZ21lbnQgc2hhZGVyIGZpbHRlcgogICoKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCB2aWRlb3Rlc3RzcmMgISBnbHVwbG9hZCAhIGdsc2hhZGVyIGxvY2F0aW9uPW15c2hhZGVyLmZzICEgZ2xpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIGdsdXBsb2FkICEgZ2xzaGFkZXIgZnJhZ21lbnQ9IlwiYGNhdCBteXNoYWRlci5mcmFnYFwiIiAhIGdsaW1hZ2VzaW5rCiAgKiBdfAotICogRkJPIChGcmFtZSBCdWZmZXIgT2JqZWN0KSBhbmQgR0xTTCAoT3BlbkdMIFNoYWRpbmcgTGFuZ3VhZ2UpIGFyZSByZXF1aXJlZC4KKyAqIEZCTyAoRnJhbWUgQnVmZmVyIE9iamVjdCkgYW5kIEdMU0wgKE9wZW5HTCBTaGFkaW5nIExhbmd1YWdlKSBhcmUgcmVxdWlyZWQuIEEgI3ZlcnNpb24gaGVhZGVyIGlzIHJlcXVpcmVkCiAgKiA8L3JlZnNlY3QyPgogICovCiAjaWZkZWYgSEFWRV9DT05GSUdfSApAQCAtMzcsMzAgKzM3LDMxIEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuaD4KIAogI2luY2x1ZGUgImdzdGdsZmlsdGVyc2hhZGVyLmgiCi0KLS8qIGhvcml6b250YWwgZmlsdGVyICovCi1zdGF0aWMgZ2NoYXIgKmhmaWx0ZXJfZnJhZ21lbnRfc291cmNlOwotc3RhdGljIGdjaGFyICpoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1syXTsKKyNpZiBIQVZFX0dSQVBIRU5FCisjaW5jbHVkZSA8Z3JhcGhlbmUtZ29iamVjdC5oPgorI2VuZGlmCiAKIGVudW0KIHsKICAgUFJPUF8wLAotICBQUk9QX0xPQ0FUSU9OLAotICBQUk9QX1BSRVNFVCwKLSAgUFJPUF9WQVJJQUJMRVMKKyAgUFJPUF9TSEFERVIsCisgIFBST1BfVkVSVEVYLAorICBQUk9QX0ZSQUdNRU5ULAorICBQUk9QX1VOSUZPUk1TLAorICBQUk9QX1VQREFURV9TSEFERVIsCisgIFBST1BfTEFTVCwKIH07CiAKLXN0YXRpYyBjb25zdCBnY2hhciB0ZXh0X3ZlcnRleF9zaGFkZXJbXSA9Ci0gICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247ICAgXG4iCi0gICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Y29vcmQ7ICAgXG4iCi0gICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkOyAgICAgXG4iCi0gICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgXG4iCi0gICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgIiAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgXG4iCi0gICAgIiAgIHZfdGV4Y29vcmQgPSBhX3RleGNvb3JkOyAgXG4iICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKK2VudW0KK3sKKyAgU0lHTkFMXzAsCisgIFNJR05BTF9DUkVBVEVfU0hBREVSLAorICBTSUdOQUxfTEFTVCwKK307CisKK3N0YXRpYyBndWludCBnc3RfZ2xfc2hhZGVyX3NpZ25hbHNbU0lHTkFMX0xBU1RdID0geyAwIH07CiAKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9nbF9maWx0ZXJzaGFkZXJfZGVidWcKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfREVGQVVMVCk7CkBAIC03MSwxNyArNzIsMTMgQEAKIEdfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RHTEZpbHRlclNoYWRlciwgZ3N0X2dsX2ZpbHRlcnNoYWRlciwKICAgICBHU1RfVFlQRV9HTF9GSUxURVIsIERFQlVHX0lOSVQpOwogCitzdGF0aWMgdm9pZCBnc3RfZ2xfZmlsdGVyc2hhZGVyX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKIHN0YXRpYyB2b2lkIGdzdF9nbF9maWx0ZXJzaGFkZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAogICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwogc3RhdGljIHZvaWQgZ3N0X2dsX2ZpbHRlcnNoYWRlcl9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCiAgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2ZpbHRlcl9maWx0ZXJzaGFkZXJfcmVzZXQgKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucyk7Ci0KLXN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfZmlsdGVyc2hhZGVyX2xvYWRfc2hhZGVyIChHc3RHTEZpbHRlclNoYWRlciAqCi0gICAgZmlsdGVyX3NoYWRlciwgY2hhciAqZmlsZW5hbWUsIGNoYXIgKipzdG9yYWdlKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfZmlsdGVyc2hhZGVyX2xvYWRfdmFyaWFibGVzIChHc3RHTEZpbHRlclNoYWRlciAqCi0gICAgZmlsdGVyX3NoYWRlciwgY2hhciAqZmlsZW5hbWUsIGNoYXIgKipzdG9yYWdlKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfZmlsdGVyc2hhZGVyX2luaXRfc2hhZGVyIChHc3RHTEZpbHRlciAqIGZpbHRlcik7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2ZpbHRlcnNoYWRlcl9nbF9zdGFydCAoR3N0R0xCYXNlRmlsdGVyICogYmFzZSk7CitzdGF0aWMgdm9pZCBnc3RfZ2xfZmlsdGVyc2hhZGVyX2dsX3N0b3AgKEdzdEdMQmFzZUZpbHRlciAqIGJhc2UpOwogc3RhdGljIGdib29sZWFuIGdzdF9nbF9maWx0ZXJzaGFkZXJfZmlsdGVyIChHc3RHTEZpbHRlciAqIGZpbHRlciwKICAgICBHc3RCdWZmZXIgKiBpbmJ1ZiwgR3N0QnVmZmVyICogb3V0YnVmKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfZmlsdGVyc2hhZGVyX2ZpbHRlcl90ZXh0dXJlIChHc3RHTEZpbHRlciAqIGZpbHRlciwKQEAgLTg5LDMyICs4Niw2IEBACiBzdGF0aWMgdm9pZCBnc3RfZ2xfZmlsdGVyc2hhZGVyX2hjYWxsYmFjayAoZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsCiAgICAgZ3VpbnQgdGV4dHVyZSwgZ3BvaW50ZXIgc3R1ZmYpOwogCi0KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfZmlsdGVyc2hhZGVyX2luaXRfcmVzb3VyY2VzIChHc3RHTEZpbHRlciAqIGZpbHRlcikKLXsKLSAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXIpLT5jb250ZXh0OwotICBndWludCBpbnRlcm5hbF9mb3JtYXQ7Ci0KLSAgaW50ZXJuYWxfZm9ybWF0ID0KLSAgICAgIGdzdF9nbF9zaXplZF9nbF9mb3JtYXRfZnJvbV9nbF9mb3JtYXRfdHlwZSAoY29udGV4dCwgR0xfUkdCQSwKLSAgICAgIEdMX1VOU0lHTkVEX0JZVEUpOwotICBnbFRleEltYWdlMkQgKEdMX1RFWFRVUkVfMkQsIDAsIGludGVybmFsX2Zvcm1hdCwKLSAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIICgmZmlsdGVyLT5vdXRfaW5mbyksCi0gICAgICBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZmaWx0ZXItPm91dF9pbmZvKSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgIE5VTEwpOwotICBnbFRleFBhcmFtZXRlcmkgKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgZ2xUZXhQYXJhbWV0ZXJpIChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gIGdsVGV4UGFyYW1ldGVyaSAoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICBnbFRleFBhcmFtZXRlcmkgKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nbF9maWx0ZXJzaGFkZXJfcmVzZXRfcmVzb3VyY2VzIChHc3RHTEZpbHRlciAqIGZpbHRlcikKLXsKLSAgLy9Hc3RHTEZpbHRlclNoYWRlciAqZmlsdGVyc2hhZGVyID0gR1NUX0dMX0ZJTFRFUlNIQURFUiAoZmlsdGVyKTsKLX0KLQogc3RhdGljIHZvaWQKIGdzdF9nbF9maWx0ZXJzaGFkZXJfY2xhc3NfaW5pdCAoR3N0R0xGaWx0ZXJTaGFkZXJDbGFzcyAqIGtsYXNzKQogewpAQCAtMTI0LDM5ICs5NSw2MCBAQAogICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKICAgZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CiAKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfZ2xfZmlsdGVyc2hhZGVyX2ZpbmFsaXplOwogICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfZ2xfZmlsdGVyc2hhZGVyX3NldF9wcm9wZXJ0eTsKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2dsX2ZpbHRlcnNoYWRlcl9nZXRfcHJvcGVydHk7CiAKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9MT0NBVElPTiwKLSAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJsb2NhdGlvbiIsICJGaWxlIExvY2F0aW9uIiwKLSAgICAgICAgICAiTG9jYXRpb24gb2YgdGhlIEdMU0wgZmlsZSB0byBsb2FkIiwgTlVMTCwKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TSEFERVIsCisgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0ICgic2hhZGVyIiwgIlNoYWRlciBvYmplY3QiLAorICAgICAgICAgICJHc3RHTFNoYWRlciB0byB1c2UiLCBHU1RfR0xfVFlQRV9TSEFERVIsCiAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CiAKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9QUkVTRVQsCi0gICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgicHJlc2V0IiwgIlByZXNldCBGaWxlIExvY2F0aW9uIiwKLSAgICAgICAgICAiTG9jYXRpb24gb2YgdGhlIHNoYWRlciB1bmlmb3JtIHZhcmlhYmxlcyBwcmVzZXQgZmlsZSIsIE5VTEwsCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfVkVSVEVYLAorICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoInZlcnRleCIsICJWZXJ0ZXggU291cmNlIiwKKyAgICAgICAgICAiR0xTTCB2ZXJ0ZXggc291cmNlIiwgTlVMTCwKICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKIAotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1ZBUklBQkxFUywKLSAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJ2YXJzIiwgIlVuaWZvcm0gdmFyaWFibGVzIiwKLSAgICAgICAgICAiU2V0IHRoZSBzaGFkZXIgdW5pZm9ybSB2YXJpYWJsZXMiLCBOVUxMLAotICAgICAgICAgIEdfUEFSQU1fV1JJVEFCTEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0ZSQUdNRU5ULAorICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoImZyYWdtZW50IiwgIkZyYWdtZW50IFNvdXJjZSIsCisgICAgICAgICAgIkdMU0wgZnJhZ21lbnQgc291cmNlIiwgTlVMTCwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgLyogRklYTUU6IGFkZCBvdGhlciBzdGFnZXMgKi8KKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1VOSUZPUk1TLAorICAgICAgZ19wYXJhbV9zcGVjX2JveGVkICgidW5pZm9ybXMiLCAiR0xTTCBVbmlmb3JtcyIsCisgICAgICAgICAgIkdMU0wgVW5pZm9ybXMiLCBHU1RfVFlQRV9TVFJVQ1RVUkUsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9VUERBVEVfU0hBREVSLAorICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJ1cGRhdGUtc2hhZGVyIiwgIlVwZGF0ZSBTaGFkZXIiLAorICAgICAgICAgICJFbWl0IHRoZSBcJ2NyZWF0ZS1zaGFkZXJcJyBzaWduYWwgZm9yIHRoZSBuZXh0IGZyYW1lIiwKKyAgICAgICAgICBGQUxTRSwgR19QQVJBTV9XUklUQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICAvKgorICAgKiBHc3RHTEZpbHRlclNoYWRlcjo6Y3JlYXRlLXNoYWRlcjoKKyAgICogQG9iamVjdDogdGhlICNHc3RHTEZpbHRlclNoYWRlcgorICAgKgorICAgKiBBc2sncyB0aGUgYXBwbGljYXRpb24gZm9yIGEgc2hhZGVyIHRvIHJlbmRlciB3aXRoIGFzIGEgcmVzdWx0IG9mCisgICAqIGluaXRpdGlhbGl6YXRpb24gb3Igc2V0dGluZyB0aGUgJ3VwZGF0ZS1zaGFkZXInIHByb3BlcnR5LgorICAgKgorICAgKiBSZXR1cm5zOiBhIG5ldyAjR3N0R0xTaGFkZXIgZm9yIHVzZSBpbiB0aGUgcmVuZGVyaW5nIHBpcGVsaW5lCisgICAqLworICBnc3RfZ2xfc2hhZGVyX3NpZ25hbHNbU0lHTkFMX0NSRUFURV9TSEFERVJdID0KKyAgICAgIGdfc2lnbmFsX25ldyAoImNyZWF0ZS1zaGFkZXIiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QsIDAsIE5VTEwsIE5VTEwsIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgR1NUX0dMX1RZUEVfU0hBREVSLCAwKTsKIAogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCiAgICAgICAiT3BlbkdMIGZyYWdtZW50IHNoYWRlciBmaWx0ZXIiLCAiRmlsdGVyL0VmZmVjdCIsCi0gICAgICAiTG9hZCBHTFNMIGZyYWdtZW50IHNoYWRlciBmcm9tIGZpbGUiLCAiPGx1Yy5kZXNjaGVuYXV4QGZyZWVzdXJmLmNoPiIpOwotCi0gIEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUyAoa2xhc3MpLT5zdG9wID0gZ3N0X2dsX2ZpbHRlcl9maWx0ZXJzaGFkZXJfcmVzZXQ7CisgICAgICAiUGVyZm9ybSBvcGVyYXRpb25zIHdpdGggYSBHTFNMIHNoYWRlciIsICI8bWF0dGhld0BjZW50cmljdWxhci5jb20+Iik7CiAKICAgR1NUX0dMX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5maWx0ZXIgPSBnc3RfZ2xfZmlsdGVyc2hhZGVyX2ZpbHRlcjsKICAgR1NUX0dMX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5maWx0ZXJfdGV4dHVyZSA9CiAgICAgICBnc3RfZ2xfZmlsdGVyc2hhZGVyX2ZpbHRlcl90ZXh0dXJlOwotICBHU1RfR0xfRklMVEVSX0NMQVNTIChrbGFzcyktPmRpc3BsYXlfaW5pdF9jYiA9Ci0gICAgICBnc3RfZ2xfZmlsdGVyc2hhZGVyX2luaXRfcmVzb3VyY2VzOwotICBHU1RfR0xfRklMVEVSX0NMQVNTIChrbGFzcyktPmRpc3BsYXlfcmVzZXRfY2IgPQotICAgICAgZ3N0X2dsX2ZpbHRlcnNoYWRlcl9yZXNldF9yZXNvdXJjZXM7Ci0gIEdTVF9HTF9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+aW5pdF9mYm8gPSBnc3RfZ2xfZmlsdGVyc2hhZGVyX2luaXRfc2hhZGVyOwogCisgIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5nbF9zdGFydCA9IGdzdF9nbF9maWx0ZXJzaGFkZXJfZ2xfc3RhcnQ7CisgIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5nbF9zdG9wID0gZ3N0X2dsX2ZpbHRlcnNoYWRlcl9nbF9zdG9wOwogICBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+c3VwcG9ydGVkX2dsX2FwaSA9CiAgICAgICBHU1RfR0xfQVBJX09QRU5HTCB8IEdTVF9HTF9BUElfR0xFUzIgfCBHU1RfR0xfQVBJX09QRU5HTDM7CiB9CkBAIC0xNjQsMjEgKzE1NiwyNSBAQAogc3RhdGljIHZvaWQKIGdzdF9nbF9maWx0ZXJzaGFkZXJfaW5pdCAoR3N0R0xGaWx0ZXJTaGFkZXIgKiBmaWx0ZXJzaGFkZXIpCiB7Ci0gIGZpbHRlcnNoYWRlci0+c2hhZGVyMCA9IE5VTEw7CisgIGZpbHRlcnNoYWRlci0+bmV3X3NvdXJjZSA9IFRSVUU7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dsX2ZpbHRlcl9maWx0ZXJzaGFkZXJfcmVzZXQgKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucykKK3N0YXRpYyB2b2lkCitnc3RfZ2xfZmlsdGVyc2hhZGVyX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQogewotICBHc3RHTEZpbHRlclNoYWRlciAqZmlsdGVyc2hhZGVyID0gR1NUX0dMX0ZJTFRFUlNIQURFUiAodHJhbnMpOworICBHc3RHTEZpbHRlclNoYWRlciAqZmlsdGVyc2hhZGVyID0gR1NUX0dMX0ZJTFRFUlNIQURFUiAob2JqZWN0KTsKIAotICAvL2Jsb2NraW5nIGNhbGwsIHdhaXQgdGhlIG9wZW5nbCB0aHJlYWQgaGFzIGRlc3Ryb3llZCB0aGUgc2hhZGVyCi0gIGlmIChmaWx0ZXJzaGFkZXItPnNoYWRlcjApCi0gICAgZ3N0X2dsX2NvbnRleHRfZGVsX3NoYWRlciAoR1NUX0dMX0JBU0VfRklMVEVSICh0cmFucyktPmNvbnRleHQsCi0gICAgICAgIGZpbHRlcnNoYWRlci0+c2hhZGVyMCk7Ci0gIGZpbHRlcnNoYWRlci0+c2hhZGVyMCA9IE5VTEw7CisgIGdfZnJlZSAoZmlsdGVyc2hhZGVyLT52ZXJ0ZXgpOworICBmaWx0ZXJzaGFkZXItPnZlcnRleCA9IE5VTEw7CiAKLSAgcmV0dXJuIEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUyAocGFyZW50X2NsYXNzKS0+c3RvcCAodHJhbnMpOworICBnX2ZyZWUgKGZpbHRlcnNoYWRlci0+ZnJhZ21lbnQpOworICBmaWx0ZXJzaGFkZXItPmZyYWdtZW50ID0gTlVMTDsKKworICBpZiAoZmlsdGVyc2hhZGVyLT51bmlmb3JtcykKKyAgICBnc3Rfc3RydWN0dXJlX2ZyZWUgKGZpbHRlcnNoYWRlci0+dW5pZm9ybXMpOworICBmaWx0ZXJzaGFkZXItPnVuaWZvcm1zID0gTlVMTDsKKworICBHX09CSkVDVF9DTEFTUyAoZ3N0X2dsX2ZpbHRlcnNoYWRlcl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE4OCw1OSArMTg0LDQwIEBACiAgIEdzdEdMRmlsdGVyU2hhZGVyICpmaWx0ZXJzaGFkZXIgPSBHU1RfR0xfRklMVEVSU0hBREVSIChvYmplY3QpOwogCiAgIHN3aXRjaCAocHJvcF9pZCkgewotCi0gICAgY2FzZSBQUk9QX0xPQ0FUSU9OOgotCi0gICAgICBpZiAoZmlsdGVyc2hhZGVyLT5maWxlbmFtZSkgewotICAgICAgICBnX2ZyZWUgKGZpbHRlcnNoYWRlci0+ZmlsZW5hbWUpOwotICAgICAgfQotICAgICAgaWYgKGZpbHRlcnNoYWRlci0+Y29tcGlsZWQpIHsKLSAgICAgICAgaWYgKGZpbHRlcnNoYWRlci0+c2hhZGVyMCkKLSAgICAgICAgICBnc3RfZ2xfY29udGV4dF9kZWxfc2hhZGVyIChHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlcnNoYWRlciktPmNvbnRleHQsCi0gICAgICAgICAgICAgIGZpbHRlcnNoYWRlci0+c2hhZGVyMCk7Ci0gICAgICAgIGZpbHRlcnNoYWRlci0+c2hhZGVyMCA9IDA7Ci0gICAgICB9Ci0gICAgICBmaWx0ZXJzaGFkZXItPmZpbGVuYW1lID0gZ19zdHJkdXAgKGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKLSAgICAgIGZpbHRlcnNoYWRlci0+Y29tcGlsZWQgPSAwOwotICAgICAgZmlsdGVyc2hhZGVyLT50ZXhTZXQgPSAwOwotCisgICAgY2FzZSBQUk9QX1NIQURFUjoKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoZmlsdGVyc2hhZGVyKTsKKyAgICAgIGdzdF9vYmplY3RfcmVwbGFjZSAoKEdzdE9iamVjdCAqKikgJiBmaWx0ZXJzaGFkZXItPnNoYWRlciwKKyAgICAgICAgICBnX3ZhbHVlX2R1cF9vYmplY3QgKHZhbHVlKSk7CisgICAgICBmaWx0ZXJzaGFkZXItPm5ld19zb3VyY2UgPSBGQUxTRTsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXJzaGFkZXIpOwogICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFBST1BfUFJFU0VUOgotCi0gICAgICBpZiAoZmlsdGVyc2hhZGVyLT5wcmVzZXRmaWxlKSB7Ci0gICAgICAgIGdfZnJlZSAoZmlsdGVyc2hhZGVyLT5wcmVzZXRmaWxlKTsKLSAgICAgIH0KLQotICAgICAgZmlsdGVyc2hhZGVyLT5wcmVzZXRmaWxlID0gZ19zdHJkdXAgKGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKLQotICAgICAgaWYgKGhmaWx0ZXJfZnJhZ21lbnRfdmFyaWFibGVzWzBdKSB7Ci0gICAgICAgIGdfZnJlZSAoaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMF0pOwotICAgICAgICBoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1swXSA9IDA7Ci0gICAgICB9Ci0KLSAgICAgIGlmICghZmlsdGVyc2hhZGVyLT5wcmVzZXRmaWxlWzBdKSB7Ci0gICAgICAgIGdfZnJlZSAoZmlsdGVyc2hhZGVyLT5wcmVzZXRmaWxlKTsKLSAgICAgICAgZmlsdGVyc2hhZGVyLT5wcmVzZXRmaWxlID0gMDsKLSAgICAgIH0KLQorICAgIGNhc2UgUFJPUF9WRVJURVg6CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgICBnX2ZyZWUgKGZpbHRlcnNoYWRlci0+dmVydGV4KTsKKyAgICAgIGZpbHRlcnNoYWRlci0+dmVydGV4ID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CisgICAgICBmaWx0ZXJzaGFkZXItPm5ld19zb3VyY2UgPSBUUlVFOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcnNoYWRlcik7CiAgICAgICBicmVhazsKLQotICAgIGNhc2UgUFJPUF9WQVJJQUJMRVM6Ci0KLSAgICAgIGlmIChoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1sxXSkgewotICAgICAgICBnX2ZyZWUgKGhmaWx0ZXJfZnJhZ21lbnRfdmFyaWFibGVzWzFdKTsKLSAgICAgIH0KLQotICAgICAgaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMV0gPSBnX3N0cmR1cCAoZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSkpOwotCi0gICAgICBpZiAoIWhmaWx0ZXJfZnJhZ21lbnRfdmFyaWFibGVzWzFdWzBdKSB7Ci0gICAgICAgIGdfZnJlZSAoaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMV0pOwotICAgICAgICBoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1sxXSA9IDA7Ci0gICAgICB9Ci0KKyAgICBjYXNlIFBST1BfRlJBR01FTlQ6CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgICBnX2ZyZWUgKGZpbHRlcnNoYWRlci0+ZnJhZ21lbnQpOworICAgICAgZmlsdGVyc2hhZGVyLT5mcmFnbWVudCA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOworICAgICAgZmlsdGVyc2hhZGVyLT5uZXdfc291cmNlID0gVFJVRTsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXJzaGFkZXIpOwogICAgICAgYnJlYWs7Ci0KKyAgICBjYXNlIFBST1BfVU5JRk9STVM6CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgICBpZiAoZmlsdGVyc2hhZGVyLT51bmlmb3JtcykKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9mcmVlIChmaWx0ZXJzaGFkZXItPnVuaWZvcm1zKTsKKyAgICAgIGZpbHRlcnNoYWRlci0+dW5pZm9ybXMgPSBnX3ZhbHVlX2R1cF9ib3hlZCAodmFsdWUpOworICAgICAgZmlsdGVyc2hhZGVyLT5uZXdfdW5pZm9ybXMgPSBUUlVFOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVVBEQVRFX1NIQURFUjoKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoZmlsdGVyc2hhZGVyKTsKKyAgICAgIGZpbHRlcnNoYWRlci0+dXBkYXRlX3NoYWRlciA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXJzaGFkZXIpOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKQEAgLTI1NCwxMDEgKzIzMSw0OCBAQAogICBHc3RHTEZpbHRlclNoYWRlciAqZmlsdGVyc2hhZGVyID0gR1NUX0dMX0ZJTFRFUlNIQURFUiAob2JqZWN0KTsKIAogICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfTE9DQVRJT046Ci0gICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBmaWx0ZXJzaGFkZXItPmZpbGVuYW1lKTsKKyAgICBjYXNlIFBST1BfU0hBREVSOgorICAgICAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXJzaGFkZXIpOworICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0ICh2YWx1ZSwgZmlsdGVyc2hhZGVyLT5zaGFkZXIpOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcnNoYWRlcik7CiAgICAgICBicmVhazsKLQotICAgIGNhc2UgUFJPUF9QUkVTRVQ6Ci0gICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBmaWx0ZXJzaGFkZXItPnByZXNldGZpbGUpOworICAgIGNhc2UgUFJPUF9WRVJURVg6CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBmaWx0ZXJzaGFkZXItPnZlcnRleCk7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyc2hhZGVyKTsKICAgICAgIGJyZWFrOwotCisgICAgY2FzZSBQUk9QX0ZSQUdNRU5UOgorICAgICAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXJzaGFkZXIpOworICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgZmlsdGVyc2hhZGVyLT5mcmFnbWVudCk7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyc2hhZGVyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9VTklGT1JNUzoKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoZmlsdGVyc2hhZGVyKTsKKyAgICAgIGdfdmFsdWVfc2V0X2JveGVkICh2YWx1ZSwgZmlsdGVyc2hhZGVyLT51bmlmb3Jtcyk7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyc2hhZGVyKTsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CiAgIH0KIH0KIAotc3RhdGljIGdib29sZWFuCi1nc3RfZ2xfZmlsdGVyc2hhZGVyX2xvYWRfc2hhZGVyIChHc3RHTEZpbHRlclNoYWRlciAqIGZpbHRlcl9zaGFkZXIsCi0gICAgY2hhciAqZmlsZW5hbWUsIGNoYXIgKipzdG9yYWdlKQotewotICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSAgZ3NpemUgbGVuZ3RoOwotCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzdG9yYWdlICE9IE5VTEwsIEZBTFNFKTsKLQotICBpZiAoIWZpbGVuYW1lKSB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKGZpbHRlcl9zaGFkZXIsIFJFU09VUkNFLCBOT1RfRk9VTkQsCi0gICAgICAgICgiQSBzaGFkZXIgZmlsZSBpcyByZXF1aXJlZCIpLCAoTlVMTCkpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIGlmICghZ19maWxlX2dldF9jb250ZW50cyAoZmlsZW5hbWUsIHN0b3JhZ2UsICZsZW5ndGgsICZlcnJvcikpIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmlsdGVyX3NoYWRlciwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsCi0gICAgICAgICAgICBlcnJvci0+bWVzc2FnZSksIChOVUxMKSk7Ci0gICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0KLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfZ2xfZmlsdGVyc2hhZGVyX2xvYWRfdmFyaWFibGVzIChHc3RHTEZpbHRlclNoYWRlciAqIGZpbHRlcl9zaGFkZXIsCi0gICAgY2hhciAqZmlsZW5hbWUsIGNoYXIgKipzdG9yYWdlKQotewotICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLSAgZ3NpemUgbGVuZ3RoOwotCi0gIGlmIChzdG9yYWdlWzBdKSB7Ci0gICAgZ19mcmVlIChzdG9yYWdlWzBdKTsKLSAgICBzdG9yYWdlWzBdID0gMDsKLSAgfQotCi0gIGlmICghZmlsZW5hbWUpCi0gICAgcmV0dXJuIFRSVUU7Ci0KLSAgaWYgKCFnX2ZpbGVfZ2V0X2NvbnRlbnRzIChmaWxlbmFtZSwgc3RvcmFnZSwgJmxlbmd0aCwgJmVycm9yKSkgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChmaWx0ZXJfc2hhZGVyLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwKLSAgICAgICAgICAgIGVycm9yLT5tZXNzYWdlKSwgKE5VTEwpKTsKLSAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLQotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIHJldHVybiBUUlVFOwotfQotCiBzdGF0aWMgdm9pZAotZ3N0X2dsX2ZpbHRlcnNoYWRlcl92YXJpYWJsZXNfcGFyc2UgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBnY2hhciAqIHZhcmlhYmxlcykKK2dzdF9nbF9maWx0ZXJzaGFkZXJfZ2xfc3RvcCAoR3N0R0xCYXNlRmlsdGVyICogYmFzZSkKIHsKLSAgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlc19wYXJzZSAoc2hhZGVyLCB2YXJpYWJsZXMsIDApOworICBHc3RHTEZpbHRlclNoYWRlciAqZmlsdGVyc2hhZGVyID0gR1NUX0dMX0ZJTFRFUlNIQURFUiAoYmFzZSk7CisKKyAgaWYgKGZpbHRlcnNoYWRlci0+c2hhZGVyKQorICAgIGdzdF9vYmplY3RfdW5yZWYgKGZpbHRlcnNoYWRlci0+c2hhZGVyKTsKKyAgZmlsdGVyc2hhZGVyLT5zaGFkZXIgPSBOVUxMOworCisgIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAocGFyZW50X2NsYXNzKS0+Z2xfc3RvcCAoYmFzZSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgotZ3N0X2dsX2ZpbHRlcnNoYWRlcl9pbml0X3NoYWRlciAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIpCitnc3RfZ2xfZmlsdGVyc2hhZGVyX2dsX3N0YXJ0IChHc3RHTEJhc2VGaWx0ZXIgKiBiYXNlKQogewotCi0gIEdzdEdMRmlsdGVyU2hhZGVyICpmaWx0ZXJzaGFkZXIgPSBHU1RfR0xfRklMVEVSU0hBREVSIChmaWx0ZXIpOwotCi0gIGlmICghZ3N0X2dsX2ZpbHRlcnNoYWRlcl9sb2FkX3NoYWRlciAoZmlsdGVyc2hhZGVyLCBmaWx0ZXJzaGFkZXItPmZpbGVuYW1lLAotICAgICAgICAgICZoZmlsdGVyX2ZyYWdtZW50X3NvdXJjZSkpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIC8vYmxvY2tpbmcgY2FsbCwgd2FpdCB0aGUgb3BlbmdsIHRocmVhZCBoYXMgY29tcGlsZWQgdGhlIHNoYWRlcgotICBpZiAoIWdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXIgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dCwKLSAgICAgICAgICB0ZXh0X3ZlcnRleF9zaGFkZXIsIGhmaWx0ZXJfZnJhZ21lbnRfc291cmNlLCAmZmlsdGVyc2hhZGVyLT5zaGFkZXIwKSkKLSAgICByZXR1cm4gRkFMU0U7Ci0KLQotICBpZiAoIWdzdF9nbF9maWx0ZXJzaGFkZXJfbG9hZF92YXJpYWJsZXMgKGZpbHRlcnNoYWRlciwKLSAgICAgICAgICBmaWx0ZXJzaGFkZXItPnByZXNldGZpbGUsICZoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1swXSkpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGZpbHRlcnNoYWRlci0+Y29tcGlsZWQgPSAxOwotCi0gIHJldHVybiBUUlVFOworICByZXR1cm4gR1NUX0dMX0JBU0VfRklMVEVSX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5nbF9zdGFydCAoYmFzZSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZ2Jvb2xlYW4KQEAgLTM5Nyw5ICszMjEsMTc4IEBACiAgIGdzdF9nbF9maWx0ZXJfcmVuZGVyX3RvX3RhcmdldCAoZmlsdGVyLCBUUlVFLCBpbl90ZXgsIG91dF90ZXgsCiAgICAgICBnc3RfZ2xfZmlsdGVyc2hhZGVyX2hjYWxsYmFjaywgZmlsdGVyc2hhZGVyKTsKIAorICBpZiAoIWZpbHRlcnNoYWRlci0+c2hhZGVyKQorICAgIHJldHVybiBGQUxTRTsKKwogICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGdib29sZWFuCitfc2V0X3VuaWZvcm0gKEdRdWFyayBmaWVsZF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0R0xTaGFkZXIgKnNoYWRlciA9IHVzZXJfZGF0YTsKKyAgY29uc3QgZ2NoYXIgKmZpZWxkX25hbWUgPSBnX3F1YXJrX3RvX3N0cmluZyAoZmllbGRfaWQpOworCisgIGlmIChHX1RZUEVfQ0hFQ0tfVkFMVUVfVFlQRSAoKHZhbHVlKSwgR19UWVBFX0lOVCkpIHsKKyAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpIChzaGFkZXIsIGZpZWxkX25hbWUsIGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpKTsKKyAgfSBlbHNlIGlmIChHX1RZUEVfQ0hFQ0tfVkFMVUVfVFlQRSAoKHZhbHVlKSwgR19UWVBFX0ZMT0FUKSkgeworICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKHNoYWRlciwgZmllbGRfbmFtZSwKKyAgICAgICAgZ192YWx1ZV9nZXRfZmxvYXQgKHZhbHVlKSk7CisjaWYgSEFWRV9HUkFQSEVORQorICB9IGVsc2UgaWYgKEdfVFlQRV9DSEVDS19WQUxVRV9UWVBFICgodmFsdWUpLCBHUkFQSEVORV9UWVBFX1ZFQzIpKSB7CisgICAgZ3JhcGhlbmVfdmVjMl90ICp2ZWMyID0gZ192YWx1ZV9nZXRfYm94ZWQgKHZhbHVlKTsKKyAgICBmbG9hdCB4ID0gZ3JhcGhlbmVfdmVjMl9nZXRfeCAodmVjMik7CisgICAgZmxvYXQgeSA9IGdyYXBoZW5lX3ZlYzJfZ2V0X3kgKHZlYzIpOworICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmYgKHNoYWRlciwgZmllbGRfbmFtZSwgeCwgeSk7CisgIH0gZWxzZSBpZiAoR19UWVBFX0NIRUNLX1ZBTFVFX1RZUEUgKCh2YWx1ZSksIEdSQVBIRU5FX1RZUEVfVkVDMykpIHsKKyAgICBncmFwaGVuZV92ZWMzX3QgKnZlYzMgPSBnX3ZhbHVlX2dldF9ib3hlZCAodmFsdWUpOworICAgIGZsb2F0IHggPSBncmFwaGVuZV92ZWMzX2dldF94ICh2ZWMzKTsKKyAgICBmbG9hdCB5ID0gZ3JhcGhlbmVfdmVjM19nZXRfeSAodmVjMyk7CisgICAgZmxvYXQgeiA9IGdyYXBoZW5lX3ZlYzNfZ2V0X3ogKHZlYzMpOworICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2YgKHNoYWRlciwgZmllbGRfbmFtZSwgeCwgeSwgeik7CisgIH0gZWxzZSBpZiAoR19UWVBFX0NIRUNLX1ZBTFVFX1RZUEUgKCh2YWx1ZSksIEdSQVBIRU5FX1RZUEVfVkVDNCkpIHsKKyAgICBncmFwaGVuZV92ZWM0X3QgKnZlYzQgPSBnX3ZhbHVlX2dldF9ib3hlZCAodmFsdWUpOworICAgIGZsb2F0IHggPSBncmFwaGVuZV92ZWM0X2dldF94ICh2ZWM0KTsKKyAgICBmbG9hdCB5ID0gZ3JhcGhlbmVfdmVjNF9nZXRfeSAodmVjNCk7CisgICAgZmxvYXQgeiA9IGdyYXBoZW5lX3ZlYzRfZ2V0X3ogKHZlYzQpOworICAgIGZsb2F0IHcgPSBncmFwaGVuZV92ZWM0X2dldF93ICh2ZWM0KTsKKyAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmIChzaGFkZXIsIGZpZWxkX25hbWUsIHgsIHksIHosIHcpOworICB9IGVsc2UgaWYgKEdfVFlQRV9DSEVDS19WQUxVRV9UWVBFICgodmFsdWUpLCBHUkFQSEVORV9UWVBFX01BVFJJWCkpIHsKKyAgICBncmFwaGVuZV9tYXRyaXhfdCAqbWF0cml4ID0gZ192YWx1ZV9nZXRfYm94ZWQgKHZhbHVlKTsKKyAgICBmbG9hdCBtYXRyaXhfZlsxNl07CisgICAgZ3JhcGhlbmVfbWF0cml4X3RvX2Zsb2F0IChtYXRyaXgsIG1hdHJpeF9mKTsKKyAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnYgKHNoYWRlciwgZmllbGRfbmFtZSwgMSwgRkFMU0UsCisgICAgICAgIG1hdHJpeF9mKTsKKyNlbmRpZgorICB9IGVsc2UgeworICAgIC8qIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdW5zaWduZWQgaW50cywgbm9uIDR4NCBtYXRyaWNlcywgZXRjICovCisgICAgR1NUX0ZJWE1FICgiRG9uJ3Qga25vdyBob3cgdG8gc2V0IHRoZSBcJyVzXCcgcGFyYW1hdGVyLiAgVW5rbm93biB0eXBlIiwKKyAgICAgICAgZmllbGRfbmFtZSk7CisgICAgcmV0dXJuIFRSVUU7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK191cGRhdGVfdW5pZm9ybXMgKEdzdEdMRmlsdGVyU2hhZGVyICogZmlsdGVyc2hhZGVyKQoreworICBpZiAoZmlsdGVyc2hhZGVyLT5uZXdfdW5pZm9ybXMgJiYgZmlsdGVyc2hhZGVyLT51bmlmb3JtcykgeworICAgIGdzdF9nbF9zaGFkZXJfdXNlIChmaWx0ZXJzaGFkZXItPnNoYWRlcik7CisKKyAgICBnc3Rfc3RydWN0dXJlX2ZvcmVhY2ggKGZpbHRlcnNoYWRlci0+dW5pZm9ybXMsCisgICAgICAgIChHc3RTdHJ1Y3R1cmVGb3JlYWNoRnVuYykgX3NldF91bmlmb3JtLCBmaWx0ZXJzaGFkZXItPnNoYWRlcik7CisgICAgZmlsdGVyc2hhZGVyLT5uZXdfdW5pZm9ybXMgPSBGQUxTRTsKKyAgfQorfQorCitzdGF0aWMgR3N0R0xTaGFkZXIgKgorX21heWJlX3JlY29tcGlsZV9zaGFkZXIgKEdzdEdMRmlsdGVyU2hhZGVyICogZmlsdGVyc2hhZGVyKQoreworICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlcnNoYWRlciktPmNvbnRleHQ7CisgIEdzdEdMU2hhZGVyICpzaGFkZXI7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoZmlsdGVyc2hhZGVyKTsKKworICBpZiAoIWZpbHRlcnNoYWRlci0+c2hhZGVyIHx8IGZpbHRlcnNoYWRlci0+dXBkYXRlX3NoYWRlcikgeworICAgIGZpbHRlcnNoYWRlci0+dXBkYXRlX3NoYWRlciA9IEZBTFNFOworICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXJzaGFkZXIpOworICAgIGdfc2lnbmFsX2VtaXQgKGZpbHRlcnNoYWRlciwgZ3N0X2dsX3NoYWRlcl9zaWduYWxzW1NJR05BTF9DUkVBVEVfU0hBREVSXSwgMCwKKyAgICAgICAgJnNoYWRlcik7CisgICAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXJzaGFkZXIpOworCisgICAgaWYgKHNoYWRlcikgeworICAgICAgaWYgKGZpbHRlcnNoYWRlci0+c2hhZGVyKQorICAgICAgICBnc3Rfb2JqZWN0X3VucmVmIChmaWx0ZXJzaGFkZXItPnNoYWRlcik7CisgICAgICBmaWx0ZXJzaGFkZXItPm5ld19zb3VyY2UgPSBGQUxTRTsKKyAgICAgIGZpbHRlcnNoYWRlci0+c2hhZGVyID0gZ3N0X29iamVjdF9yZWYgKHNoYWRlcik7CisgICAgICBmaWx0ZXJzaGFkZXItPm5ld191bmlmb3JtcyA9IFRSVUU7CisgICAgICBfdXBkYXRlX3VuaWZvcm1zIChmaWx0ZXJzaGFkZXIpOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgICByZXR1cm4gc2hhZGVyOworICAgIH0KKyAgfQorCisgIGlmIChmaWx0ZXJzaGFkZXItPnNoYWRlcikgeworICAgIHNoYWRlciA9IGdzdF9vYmplY3RfcmVmIChmaWx0ZXJzaGFkZXItPnNoYWRlcik7CisgICAgX3VwZGF0ZV91bmlmb3JtcyAoZmlsdGVyc2hhZGVyKTsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyc2hhZGVyKTsKKyAgICByZXR1cm4gc2hhZGVyOworICB9CisKKyAgaWYgKGZpbHRlcnNoYWRlci0+bmV3X3NvdXJjZSkgeworICAgIEdzdEdMU0xTdGFnZSAqc3RhZ2U7CisKKyAgICBzaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ldyAoY29udGV4dCk7CisKKyAgICBpZiAoZmlsdGVyc2hhZGVyLT52ZXJ0ZXgpIHsKKyAgICAgIGlmICghKHN0YWdlID0gZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCBHTF9WRVJURVhfU0hBREVSLAorICAgICAgICAgICAgICAgICAgR1NUX0dMU0xfVkVSU0lPTl9OT05FLCBHU1RfR0xTTF9QUk9GSUxFX05PTkUsCisgICAgICAgICAgICAgICAgICBmaWx0ZXJzaGFkZXItPnZlcnRleCkpKSB7CisgICAgICAgIGdfc2V0X2Vycm9yICgmZXJyb3IsIEdTVF9HTFNMX0VSUk9SLCBHU1RfR0xTTF9FUlJPUl9DT01QSUxFLAorICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIHZlcnRleCBzdGFnZSIpOworICAgICAgICBnb3RvIHByaW50X2Vycm9yOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBzdGFnZSA9IGdzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X3ZlcnRleCAoY29udGV4dCk7CisgICAgfQorCisgICAgaWYgKCFnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYXR0YWNoX3N0YWdlIChzaGFkZXIsIHN0YWdlLCAmZXJyb3IpKSB7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChzdGFnZSk7CisgICAgICBnb3RvIHByaW50X2Vycm9yOworICAgIH0KKworICAgIGlmIChmaWx0ZXJzaGFkZXItPmZyYWdtZW50KSB7CisgICAgICBpZiAoIShzdGFnZSA9IGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZyAoY29udGV4dCwgR0xfRlJBR01FTlRfU0hBREVSLAorICAgICAgICAgICAgICAgICAgR1NUX0dMU0xfVkVSU0lPTl9OT05FLCBHU1RfR0xTTF9QUk9GSUxFX05PTkUsCisgICAgICAgICAgICAgICAgICBmaWx0ZXJzaGFkZXItPmZyYWdtZW50KSkpIHsKKyAgICAgICAgZ19zZXRfZXJyb3IgKCZlcnJvciwgR1NUX0dMU0xfRVJST1IsIEdTVF9HTFNMX0VSUk9SX0NPTVBJTEUsCisgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBzaGFkZXIgZnJhZ21lbnQgc3RhZ2UiKTsKKyAgICAgICAgZ290byBwcmludF9lcnJvcjsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgc3RhZ2UgPSBnc3RfZ2xzbF9zdGFnZV9uZXdfZGVmYXVsdF9mcmFnbWVudCAoY29udGV4dCk7CisgICAgfQorCisgICAgaWYgKCFnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYXR0YWNoX3N0YWdlIChzaGFkZXIsIHN0YWdlLCAmZXJyb3IpKSB7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChzdGFnZSk7CisgICAgICBnb3RvIHByaW50X2Vycm9yOworICAgIH0KKworICAgIGlmICghZ3N0X2dsX3NoYWRlcl9saW5rIChzaGFkZXIsICZlcnJvcikpIHsKKyAgICAgIGdvdG8gcHJpbnRfZXJyb3I7CisgICAgfQorICAgIGlmIChmaWx0ZXJzaGFkZXItPnNoYWRlcikKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGZpbHRlcnNoYWRlci0+c2hhZGVyKTsKKyAgICBmaWx0ZXJzaGFkZXItPnNoYWRlciA9IGdzdF9vYmplY3RfcmVmIChzaGFkZXIpOworICAgIGZpbHRlcnNoYWRlci0+bmV3X3NvdXJjZSA9IEZBTFNFOworICAgIGZpbHRlcnNoYWRlci0+bmV3X3VuaWZvcm1zID0gVFJVRTsKKyAgICBfdXBkYXRlX3VuaWZvcm1zIChmaWx0ZXJzaGFkZXIpOworCisgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgcmV0dXJuIHNoYWRlcjsKKyAgfSBlbHNlIGlmIChmaWx0ZXJzaGFkZXItPnNoYWRlcikgeworICAgIF91cGRhdGVfdW5pZm9ybXMgKGZpbHRlcnNoYWRlcik7CisgICAgc2hhZGVyID0gZ3N0X29iamVjdF9yZWYgKGZpbHRlcnNoYWRlci0+c2hhZGVyKTsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyc2hhZGVyKTsKKyAgICByZXR1cm4gc2hhZGVyOworICB9CisKKyAgcmV0dXJuIE5VTEw7CisKK3ByaW50X2Vycm9yOgorICBpZiAoc2hhZGVyKSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKKyAgICBzaGFkZXIgPSBOVUxMOworICB9CisKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcnNoYWRlcik7CisgIEdTVF9FTEVNRU5UX0VSUk9SIChmaWx0ZXJzaGFkZXIsIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpLCAoTlVMTCkpOworICByZXR1cm4gTlVMTDsKK30KKwogc3RhdGljIHZvaWQKIGdzdF9nbF9maWx0ZXJzaGFkZXJfaGNhbGxiYWNrIChnaW50IHdpZHRoLCBnaW50IGhlaWdodCwgZ3VpbnQgdGV4dHVyZSwKICAgICBncG9pbnRlciBzdHVmZikKQEAgLTQwNywzOSArNTAwLDMyIEBACiAgIEdzdEdMRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfRklMVEVSIChzdHVmZik7CiAgIEdzdEdMRmlsdGVyU2hhZGVyICpmaWx0ZXJzaGFkZXIgPSBHU1RfR0xfRklMVEVSU0hBREVSIChmaWx0ZXIpOwogICBHc3RHTEZ1bmNzICpnbCA9IEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dC0+Z2xfdnRhYmxlOworICBHc3RHTFNoYWRlciAqc2hhZGVyOwogCi0gIGdzdF9nbF9zaGFkZXJfdXNlIChmaWx0ZXJzaGFkZXItPnNoYWRlcjApOworICBpZiAoIShzaGFkZXIgPSBfbWF5YmVfcmVjb21waWxlX3NoYWRlciAoZmlsdGVyc2hhZGVyKSkpCisgICAgcmV0dXJuOworCisgIGdsLT5DbGVhckNvbG9yICgwLjAsIDAuMCwgMC4wLCAxLjApOworICBnbC0+Q2xlYXIgKEdMX0NPTE9SX0JVRkZFUl9CSVQpOworCisgIGdzdF9nbF9zaGFkZXJfdXNlIChzaGFkZXIpOworCisgIC8qIEZJWE1FOiBwcm9wZXJ0aXNlIHRoZXNlICovCisgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKHNoYWRlciwgInRleCIsIDApOworICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChzaGFkZXIsICJ3aWR0aCIsIHdpZHRoKTsKKyAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoc2hhZGVyLCAiaGVpZ2h0IiwgaGVpZ2h0KTsKKyAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoc2hhZGVyLCAidGltZSIsIGZpbHRlcnNoYWRlci0+dGltZSk7CisKKyAgLyogRklYTUU6IHByb3BlcnRpc2UgdGhlc2UgKi8KKyAgZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jID0KKyAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoc2hhZGVyLCAiYV9wb3NpdGlvbiIpOworICBmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYyA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfdGV4Y29vcmQiKTsKIAogICBnbC0+QWN0aXZlVGV4dHVyZSAoR0xfVEVYVFVSRTApOwogICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOwogCi0gIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKGZpbHRlcnNoYWRlci0+c2hhZGVyMCwgInRleCIsIDApOwotICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChmaWx0ZXJzaGFkZXItPnNoYWRlcjAsICJ3aWR0aCIsIHdpZHRoKTsKLSAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoZmlsdGVyc2hhZGVyLT5zaGFkZXIwLCAiaGVpZ2h0IiwgaGVpZ2h0KTsKLSAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoZmlsdGVyc2hhZGVyLT5zaGFkZXIwLCAidGltZSIsCi0gICAgICBmaWx0ZXJzaGFkZXItPnRpbWUpOwotCi0gIGZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYyA9Ci0gICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKGZpbHRlcnNoYWRlci0+c2hhZGVyMCwKLSAgICAgICJhX3Bvc2l0aW9uIik7Ci0gIGZpbHRlci0+ZHJhd19hdHRyX3RleHR1cmVfbG9jID0KLSAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoZmlsdGVyc2hhZGVyLT5zaGFkZXIwLAotICAgICAgImFfdGV4Y29vcmQiKTsKLQotICBpZiAoaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMF0pIHsKLSAgICBnc3RfZ2xfZmlsdGVyc2hhZGVyX3ZhcmlhYmxlc19wYXJzZSAoZmlsdGVyc2hhZGVyLT5zaGFkZXIwLAotICAgICAgICBoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1swXSk7Ci0gICAgZ19mcmVlIChoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1swXSk7Ci0gICAgaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMF0gPSAwOwotICB9Ci0gIGlmIChoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1sxXSkgewotICAgIGdzdF9nbF9maWx0ZXJzaGFkZXJfdmFyaWFibGVzX3BhcnNlIChmaWx0ZXJzaGFkZXItPnNoYWRlcjAsCi0gICAgICAgIGhmaWx0ZXJfZnJhZ21lbnRfdmFyaWFibGVzWzFdKTsKLSAgICBnX2ZyZWUgKGhmaWx0ZXJfZnJhZ21lbnRfdmFyaWFibGVzWzFdKTsKLSAgICBoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1sxXSA9IDA7Ci0gIH0KLQotICBnbC0+Q2xlYXIgKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCiAgIGdzdF9nbF9maWx0ZXJfZHJhd190ZXh0dXJlIChmaWx0ZXIsIHRleHR1cmUsIHdpZHRoLCBoZWlnaHQpOworCisgIGdzdF9vYmplY3RfdW5yZWYgKHNoYWRlcik7CiB9CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xmaWx0ZXJzaGFkZXIuaCBiL2V4dC9nbC9nc3RnbGZpbHRlcnNoYWRlci5oCmluZGV4IDYxNTM4MmEuLmFkZjE0MTAgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbGZpbHRlcnNoYWRlci5oCisrKyBiL2V4dC9nbC9nc3RnbGZpbHRlcnNoYWRlci5oCkBAIC0zNywxMSArMzcsMTYgQEAKIHN0cnVjdCBfR3N0R0xGaWx0ZXJTaGFkZXIKIHsKICAgR3N0R0xGaWx0ZXIgZmlsdGVyOwotICBHc3RHTFNoYWRlciAqc2hhZGVyMDsKLSAgaW50IGNvbXBpbGVkOwotICBnY2hhciAqZmlsZW5hbWU7Ci0gIGdjaGFyICpwcmVzZXRmaWxlOwotICBpbnQgdGV4U2V0OworCisgIC8qIHByb3BlcnRpZXMgKi8KKyAgR3N0R0xTaGFkZXIgKnNoYWRlcjsKKyAgZ2NoYXIgKnZlcnRleDsKKyAgZ2NoYXIgKmZyYWdtZW50OworICBnYm9vbGVhbiB1cGRhdGVfc2hhZGVyOyAvKiB1cGRhdGUgdGhlIHNoYWRlciBvbiB0aGUgbmV4dCBkcmF3ICovCisgIEdzdFN0cnVjdHVyZSAqdW5pZm9ybXM7CisKKyAgZ2Jvb2xlYW4gbmV3X3NvdXJjZTsKKyAgZ2Jvb2xlYW4gbmV3X3VuaWZvcm1zOwogICBnZG91YmxlIHRpbWU7CiAKICAgZ2ludCBhdHRyX3Bvc2l0aW9uX2xvYzsKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGltYWdlc2luay5jIGIvZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmMKaW5kZXggNDllNTliOC4uM2I1ZTNiNSAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmMKKysrIGIvZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmMKQEAgLTg5LDYgKzg5LDcgQEAKIAogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlb292ZXJsYXkuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vbmF2aWdhdGlvbi5oPgorI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb2FmZmluZXRyYW5zZm9ybWF0aW9ubWV0YS5oPgogCiAjaW5jbHVkZSAiZ3N0Z2xpbWFnZXNpbmsuaCIKICNpbmNsdWRlICJnc3RnbHNpbmtiaW4uaCIKQEAgLTMyMSwxNyArMzIyLDI2IEBACiBzdGF0aWMgZ2Jvb2xlYW4gdXBkYXRlX291dHB1dF9mb3JtYXQgKEdzdEdMSW1hZ2VTaW5rICogZ2xpbWFnZV9zaW5rKTsKIAogI2RlZmluZSBHU1RfR0xfU0lOS19DQVBTIFwKLSAgICBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwgIlJHQkEiKQotCi0jZGVmaW5lIEdTVF9HTF9TSU5LX09WRVJMQVlfQ0FQUyBcCi0gICAgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgIiwiIFwKLSAgICAgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTiwgIlJHQkEiKQorICAgICJ2aWRlby94LXJhdygiIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSAiKSwgIiAgICAgICAgICAgICAgXAorICAgICJmb3JtYXQgPSAoc3RyaW5nKSBSR0JBLCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJ3aWR0aCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJoZWlnaHQgPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIiwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJ0ZXh0dXJlLXRhcmdldCA9IChzdHJpbmcpIHsgMkQsIGV4dGVybmFsLW9lcyB9ICIgICAgICAgICAgICAgICAgICAgXAorICAgICIgOyAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJ2aWRlby94LXJhdygiIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSAiLCIgICAgICAgICAgICAgICAgXAorICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTiAiKSwgIiAgICAgICAgICAgXAorICAgICJmb3JtYXQgPSAoc3RyaW5nKSBSR0JBLCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJ3aWR0aCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJoZWlnaHQgPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIiwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJ0ZXh0dXJlLXRhcmdldCA9IChzdHJpbmcpIHsgMkQsIGV4dGVybmFsLW9lcyB9ICIKIAogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF9nbGltYWdlX3NpbmtfdGVtcGxhdGUgPQotICAgIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCitHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAogICAgIEdTVF9QQURfU0lOSywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9HTF9TSU5LX0NBUFMgIjsiIEdTVF9HTF9TSU5LX09WRVJMQVlfQ0FQUykpOworICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX0dMX1NJTktfQ0FQUykpOwogCiBlbnVtCiB7CkBAIC0zOTksOCArNDA5LDggQEAKICAgICAqIHN0cnVjdHVyZSkKIHsKICAgR3N0R0xJbWFnZVNpbmsgKnNpbmsgPSBHU1RfR0xJTUFHRV9TSU5LIChuYXZpZ2F0aW9uKTsKKyAgZ2Jvb2xlYW4gaGFuZGxlZCA9IEZBTFNFOwogICBHc3RFdmVudCAqZXZlbnQgPSBOVUxMOwotICBHc3RQYWQgKnBhZCA9IE5VTEw7CiAgIEdzdEdMV2luZG93ICp3aW5kb3c7CiAgIGd1aW50IHdpZHRoLCBoZWlnaHQ7CiAgIGdkb3VibGUgeCwgeTsKQEAgLTQxMSwxNSArNDIxLDEyIEBACiAgIH0KIAogICB3aW5kb3cgPSBnc3RfZ2xfY29udGV4dF9nZXRfd2luZG93IChzaW5rLT5jb250ZXh0KTsKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdykpOwogCiAgIHdpZHRoID0gR1NUX1ZJREVPX1NJTktfV0lEVEggKHNpbmspOwogICBoZWlnaHQgPSBHU1RfVklERU9fU0lOS19IRUlHSFQgKHNpbmspOwogICBnc3RfZ2xfd2luZG93X2dldF9zdXJmYWNlX2RpbWVuc2lvbnMgKHdpbmRvdywgJndpZHRoLCAmaGVpZ2h0KTsKIAotICBldmVudCA9IGdzdF9ldmVudF9uZXdfbmF2aWdhdGlvbiAoc3RydWN0dXJlKTsKLQotICBwYWQgPSBnc3RfcGFkX2dldF9wZWVyIChHU1RfVklERU9fU0lOS19QQUQgKHNpbmspKTsKICAgLyogQ29udmVydGluZyBwb2ludGVyIGNvb3JkaW5hdGVzIHRvIHRoZSBub24gc2NhbGVkIGdlb21ldHJ5ICovCiAgIGlmICh3aWR0aCAhPSAwICYmIGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZSAoc3RydWN0dXJlLCAicG9pbnRlcl94IiwgJngpCiAgICAgICAmJiBoZWlnaHQgIT0gMCAmJiBnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUgKHN0cnVjdHVyZSwgInBvaW50ZXJfeSIsICZ5KSkgewpAQCAtNDMxLDEwICs0MzgsMTcgQEAKICAgICAgICAgc3RyZWFtX3gsICJwb2ludGVyX3kiLCBHX1RZUEVfRE9VQkxFLCBzdHJlYW1feSwgTlVMTCk7CiAgIH0KIAotICBpZiAoR1NUX0lTX1BBRCAocGFkKSAmJiBHU1RfSVNfRVZFTlQgKGV2ZW50KSkKLSAgICBnc3RfcGFkX3NlbmRfZXZlbnQgKHBhZCwgZXZlbnQpOworICBldmVudCA9IGdzdF9ldmVudF9uZXdfbmF2aWdhdGlvbiAoc3RydWN0dXJlKTsKKyAgaWYgKGV2ZW50KSB7CisgICAgZ3N0X2V2ZW50X3JlZiAoZXZlbnQpOworICAgIGhhbmRsZWQgPSBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9WSURFT19TSU5LX1BBRCAoc2luayksIGV2ZW50KTsKIAotICBnc3Rfb2JqZWN0X3VucmVmIChwYWQpOworICAgIGlmICghaGFuZGxlZCkKKyAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoKEdzdEVsZW1lbnQgKikgc2luaywKKyAgICAgICAgICBnc3RfbmF2aWdhdGlvbl9tZXNzYWdlX25ld19ldmVudCAoKEdzdE9iamVjdCAqKSBzaW5rLCBldmVudCkpOworCisgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7CisgIH0KICAgZ3N0X29iamVjdF91bnJlZiAod2luZG93KTsKIH0KIApAQCAtNzA3LDggKzcyMSw3IEBACiBnc3RfZ2xpbWFnZV9zaW5rX2tleV9ldmVudF9jYiAoR3N0R0xXaW5kb3cgKiB3aW5kb3csIGNoYXIgKmV2ZW50X25hbWUsIGNoYXIKICAgICAqa2V5X3N0cmluZywgR3N0R0xJbWFnZVNpbmsgKiBnbF9zaW5rKQogewotICBHU1RfREVCVUdfT0JKRUNUIChnbF9zaW5rLCAiZ2xpbWFnZXNpbmsgZXZlbnQgJXMga2V5ICVzIHByZXNzZWQiLCBldmVudF9uYW1lLAotICAgICAga2V5X3N0cmluZyk7CisgIEdTVF9ERUJVR19PQkpFQ1QgKGdsX3NpbmssICJldmVudCAlcyBrZXkgJXMgcHJlc3NlZCIsIGV2ZW50X25hbWUsIGtleV9zdHJpbmcpOwogICBnc3RfbmF2aWdhdGlvbl9zZW5kX2tleV9ldmVudCAoR1NUX05BVklHQVRJT04gKGdsX3NpbmspLAogICAgICAgZXZlbnRfbmFtZSwga2V5X3N0cmluZyk7CiB9CkBAIC03MTcsOCArNzMwLDcgQEAKIGdzdF9nbGltYWdlX3NpbmtfbW91c2VfZXZlbnRfY2IgKEdzdEdMV2luZG93ICogd2luZG93LCBjaGFyICpldmVudF9uYW1lLAogICAgIGludCBidXR0b24sIGRvdWJsZSBwb3N4LCBkb3VibGUgcG9zeSwgR3N0R0xJbWFnZVNpbmsgKiBnbF9zaW5rKQogewotICBHU1RfREVCVUdfT0JKRUNUIChnbF9zaW5rLCAiZ2xpbWFnZXNpbmsgZXZlbnQgJXMgYXQgJWcsICVnIiwgZXZlbnRfbmFtZSwgcG9zeCwKLSAgICAgIHBvc3kpOworICBHU1RfREVCVUdfT0JKRUNUIChnbF9zaW5rLCAiZXZlbnQgJXMgYXQgJWcsICVnIiwgZXZlbnRfbmFtZSwgcG9zeCwgcG9zeSk7CiAgIGdzdF9uYXZpZ2F0aW9uX3NlbmRfbW91c2VfZXZlbnQgKEdTVF9OQVZJR0FUSU9OIChnbF9zaW5rKSwKICAgICAgIGV2ZW50X25hbWUsIGJ1dHRvbiwgcG9zeCwgcG9zeSk7CiB9CkBAIC04ODQsNiArODk2LDcgQEAKICAgICAgIGJ1ZlswXSA9IGdsaW1hZ2Vfc2luay0+c3RvcmVkX2J1ZmZlclswXTsKICAgICAgIGJ1ZlsxXSA9IGdsaW1hZ2Vfc2luay0+c3RvcmVkX2J1ZmZlclsxXTsKICAgICAgIGdsaW1hZ2Vfc2luay0+c3RvcmVkX2J1ZmZlclswXSA9IGdsaW1hZ2Vfc2luay0+c3RvcmVkX2J1ZmZlclsxXSA9IE5VTEw7CisgICAgICBnbGltYWdlX3NpbmstPnN0b3JlZF9zeW5jX21ldGEgPSBnbGltYWdlX3NpbmstPm5leHRfc3luY19tZXRhID0gTlVMTDsKICAgICAgIEdTVF9HTElNQUdFX1NJTktfVU5MT0NLIChnbGltYWdlX3NpbmspOwogCiAgICAgICBnc3RfYnVmZmVyX3JlcGxhY2UgKGJ1ZiwgTlVMTCk7CkBAIC05MTYsNiArOTI5LDggQEAKIAogICBpZiAoZ2xfc2luay0+ZGlzcGxheSkKICAgICBnc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpIChnbF9zaW5rLT5kaXNwbGF5LCBTVVBQT1JURURfR0xfQVBJUyk7CisKKyAgR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0KTsKIH0KIAogc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCkBAIC05MzcsMTQgKzk1MiwxMSBAQAogICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOwogCiAgICAgICBnc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpIChnbGltYWdlX3NpbmstPmRpc3BsYXksIFNVUFBPUlRFRF9HTF9BUElTKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CisKICAgICAgIGlmICghX2Vuc3VyZV9nbF9zZXR1cCAoZ2xpbWFnZV9zaW5rKSkKICAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKLQotICAgICAgZ2xpbWFnZV9zaW5rLT5vdmVybGF5X2NvbXBvc2l0b3IgPQotICAgICAgICAgIGdzdF9nbF9vdmVybGF5X2NvbXBvc2l0b3JfbmV3IChnbGltYWdlX3NpbmstPmNvbnRleHQpOwotCisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgogICAgICAgZ19hdG9taWNfaW50X3NldCAoJmdsaW1hZ2Vfc2luay0+dG9fcXVpdCwgMCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1BMQVlJTkc6CkBAIC05NzIsNiArOTg0LDcgQEAKICAgICAgIGJ1ZlswXSA9IGdsaW1hZ2Vfc2luay0+c3RvcmVkX2J1ZmZlclswXTsKICAgICAgIGJ1ZlsxXSA9IGdsaW1hZ2Vfc2luay0+c3RvcmVkX2J1ZmZlclsxXTsKICAgICAgIGdsaW1hZ2Vfc2luay0+c3RvcmVkX2J1ZmZlclswXSA9IGdsaW1hZ2Vfc2luay0+c3RvcmVkX2J1ZmZlclsxXSA9IE5VTEw7CisgICAgICBnbGltYWdlX3NpbmstPnN0b3JlZF9zeW5jX21ldGEgPSBnbGltYWdlX3NpbmstPm5leHRfc3luY19tZXRhID0gTlVMTDsKIAogICAgICAgaWYgKGdsaW1hZ2Vfc2luay0+c3RvcmVkX3N5bmMpCiAgICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGdsaW1hZ2Vfc2luay0+c3RvcmVkX3N5bmMpOwpAQCAtOTk5LDYgKzEwMTIsMTcgQEAKICAgICAgICAgZ3N0X2NhcHNfdW5yZWYgKGdsaW1hZ2Vfc2luay0+b3V0X2NhcHMpOwogICAgICAgICBnbGltYWdlX3NpbmstPm91dF9jYXBzID0gTlVMTDsKICAgICAgIH0KKyAgICAgIGlmIChnbGltYWdlX3NpbmstPmluX2NhcHMpIHsKKyAgICAgICAgZ3N0X2NhcHNfdW5yZWYgKGdsaW1hZ2Vfc2luay0+aW5fY2Fwcyk7CisgICAgICAgIGdsaW1hZ2Vfc2luay0+aW5fY2FwcyA9IE5VTEw7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEw6CisgICAgICBpZiAoZ2xpbWFnZV9zaW5rLT5vdmVybGF5X2NvbXBvc2l0b3IpIHsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAoZ2xpbWFnZV9zaW5rLT5vdmVybGF5X2NvbXBvc2l0b3IpOworICAgICAgICBnbGltYWdlX3NpbmstPm92ZXJsYXlfY29tcG9zaXRvciA9IE5VTEw7CisgICAgICB9CiAKICAgICAgIGlmIChnbGltYWdlX3NpbmstPmNvbnRleHQpIHsKICAgICAgICAgR3N0R0xXaW5kb3cgKndpbmRvdyA9IGdzdF9nbF9jb250ZXh0X2dldF93aW5kb3cgKGdsaW1hZ2Vfc2luay0+Y29udGV4dCk7CkBAIC0xMDE3LDE2ICsxMDQxLDExIEBACiAgICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0ICh3aW5kb3csIGdsaW1hZ2Vfc2luay0+bW91c2Vfc2lnX2lkKTsKICAgICAgICAgZ2xpbWFnZV9zaW5rLT5tb3VzZV9zaWdfaWQgPSAwOwogCi0gICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGdsaW1hZ2Vfc2luay0+b3ZlcmxheV9jb21wb3NpdG9yKTsKLSAgICAgICAgZ2xpbWFnZV9zaW5rLT5vdmVybGF5X2NvbXBvc2l0b3IgPSBOVUxMOwotCiAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHdpbmRvdyk7CiAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGdsaW1hZ2Vfc2luay0+Y29udGV4dCk7CiAgICAgICAgIGdsaW1hZ2Vfc2luay0+Y29udGV4dCA9IE5VTEw7CiAgICAgICB9Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEw6CisKICAgICAgIGlmIChnbGltYWdlX3NpbmstPm90aGVyX2NvbnRleHQpIHsKICAgICAgICAgZ3N0X29iamVjdF91bnJlZiAoZ2xpbWFnZV9zaW5rLT5vdGhlcl9jb250ZXh0KTsKICAgICAgICAgZ2xpbWFnZV9zaW5rLT5vdGhlcl9jb250ZXh0ID0gTlVMTDsKQEAgLTExNjQsOSArMTE4MywxNCBAQAogICBnYm9vbGVhbiBpbnB1dF9pc19tb25vID0gRkFMU0U7CiAgIEdzdFZpZGVvTXVsdGl2aWV3TW9kZSBtdl9tb2RlOwogICBHc3RHTFdpbmRvdyAqd2luZG93ID0gTlVMTDsKKyAgR3N0R0xUZXh0dXJlVGFyZ2V0IHByZXZpb3VzX3RhcmdldDsKKyAgR3N0U3RydWN0dXJlICpzOworICBjb25zdCBnY2hhciAqdGFyZ2V0X3N0cjsKKyAgR3N0Q2FwcyAqb3V0X2NhcHM7CiAgIGdib29sZWFuIHJldDsKIAogICAqb3V0X2luZm8gPSBnbGltYWdlX3NpbmstPmluX2luZm87CisgIHByZXZpb3VzX3RhcmdldCA9IGdsaW1hZ2Vfc2luay0+dGV4dHVyZV90YXJnZXQ7CiAKICAgbXZfbW9kZSA9IEdTVF9WSURFT19JTkZPX01VTFRJVklFV19NT0RFICgmZ2xpbWFnZV9zaW5rLT5pbl9pbmZvKTsKIApAQCAtMTIwNSwxNSArMTIyOSw1MSBAQAogICAgIGdsaW1hZ2Vfc2luay0+b3V0X2luZm8uaGVpZ2h0ID0gTUFYICgxLCBnbGltYWdlX3NpbmstPmRpc3BsYXlfcmVjdC5oKTsKICAgICBHU1RfTE9HX09CSkVDVCAoZ2xpbWFnZV9zaW5rLCAiU2V0IDNEIG91dHB1dCBzY2FsZSB0byAlZCwlZCIsCiAgICAgICAgIGdsaW1hZ2Vfc2luay0+ZGlzcGxheV9yZWN0LncsIGdsaW1hZ2Vfc2luay0+ZGlzcGxheV9yZWN0LmgpOworICB9CisKKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGdsaW1hZ2Vfc2luay0+aW5fY2FwcywgMCk7CisgIHRhcmdldF9zdHIgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJ0ZXh0dXJlLXRhcmdldCIpOworCisgIGlmICghdGFyZ2V0X3N0cikKKyAgICB0YXJnZXRfc3RyID0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUjsKKworICBnbGltYWdlX3NpbmstPnRleHR1cmVfdGFyZ2V0ID0gZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nICh0YXJnZXRfc3RyKTsKKyAgaWYgKCFnbGltYWdlX3NpbmstPnRleHR1cmVfdGFyZ2V0KQorICAgIHJldHVybiBGQUxTRTsKKworICBvdXRfY2FwcyA9IGdzdF92aWRlb19pbmZvX3RvX2NhcHMgKG91dF9pbmZvKTsKKyAgZ3N0X2NhcHNfc2V0X2ZlYXR1cmVzIChvdXRfY2FwcywgMCwKKyAgICAgIGdzdF9jYXBzX2ZlYXR1cmVzX2Zyb21fc3RyaW5nIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpKTsKKyAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAob3V0X2NhcHMsICJ0ZXh0dXJlLXRhcmdldCIsIEdfVFlQRV9TVFJJTkcsCisgICAgICB0YXJnZXRfc3RyLCBOVUxMKTsKKworICBpZiAoZ2xpbWFnZV9zaW5rLT5jb252ZXJ0X3ZpZXdzKSB7CisgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAob3V0X2NhcHMsICJ0ZXh0dXJlLXRhcmdldCIsIEdfVFlQRV9TVFJJTkcsCisgICAgICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFIsIE5VTEwpOworCisgICAgZ2xpbWFnZV9zaW5rLT50ZXh0dXJlX3RhcmdldCA9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDsKIAogICAgIEdTVF9HTElNQUdFX1NJTktfVU5MT0NLIChnbGltYWdlX3NpbmspOwotICAgIGdzdF9nbF92aWV3X2NvbnZlcnRfc2V0X2Zvcm1hdCAoZ2xpbWFnZV9zaW5rLT5jb252ZXJ0X3ZpZXdzLAotICAgICAgICAmZ2xpbWFnZV9zaW5rLT5pbl9pbmZvLCAmZ2xpbWFnZV9zaW5rLT5vdXRfaW5mbyk7CisgICAgZ3N0X2dsX3ZpZXdfY29udmVydF9zZXRfY2FwcyAoZ2xpbWFnZV9zaW5rLT5jb252ZXJ0X3ZpZXdzLAorICAgICAgICBnbGltYWdlX3NpbmstPmluX2NhcHMsIG91dF9jYXBzKTsKICAgICBnX29iamVjdF9zZXQgKGdsaW1hZ2Vfc2luay0+Y29udmVydF92aWV3cywgImRvd25taXgtbW9kZSIsCiAgICAgICAgIGdsaW1hZ2Vfc2luay0+bXZpZXdfZG93bm1peF9tb2RlLCBOVUxMKTsKICAgICBHU1RfR0xJTUFHRV9TSU5LX0xPQ0sgKGdsaW1hZ2Vfc2luayk7CiAgIH0KIAorICBpZiAoZ2xpbWFnZV9zaW5rLT5vdXRfY2FwcykKKyAgICBnc3RfY2Fwc191bnJlZiAoZ2xpbWFnZV9zaW5rLT5vdXRfY2Fwcyk7CisgIGdsaW1hZ2Vfc2luay0+b3V0X2NhcHMgPSBvdXRfY2FwczsKKworICBpZiAocHJldmlvdXNfdGFyZ2V0ICE9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FICYmCisgICAgICBnbGltYWdlX3NpbmstPnRleHR1cmVfdGFyZ2V0ICE9IHByZXZpb3VzX3RhcmdldCkgeworICAgIC8qIHJlZ2VuZXJhdGUgdGhlIHNoYWRlciBmb3IgdGhlIGNoYW5nZWQgdGFyZ2V0ICovCisgICAgR3N0R0xXaW5kb3cgKndpbmRvdyA9IGdzdF9nbF9jb250ZXh0X2dldF93aW5kb3cgKGdsaW1hZ2Vfc2luay0+Y29udGV4dCk7CisgICAgZ3N0X2dsX3dpbmRvd19zZW5kX21lc3NhZ2UgKHdpbmRvdywKKyAgICAgICAgR1NUX0dMX1dJTkRPV19DQiAoZ3N0X2dsaW1hZ2Vfc2lua19jbGVhbnVwX2dsdGhyZWFkKSwgZ2xpbWFnZV9zaW5rKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmICh3aW5kb3cpOworICB9CisKICAgZ2xpbWFnZV9zaW5rLT5vdXRwdXRfbW9kZV9jaGFuZ2VkID0gRkFMU0U7CiAKICAgaWYgKGdsaW1hZ2Vfc2luay0+Y29udGV4dCkKQEAgLTEyMjMsMTAgKzEyODMsNiBAQAogICAgIGdzdF9vYmplY3RfdW5yZWYgKHdpbmRvdyk7CiAgIH0KIAotICBpZiAoZ2xpbWFnZV9zaW5rLT5vdXRfY2FwcykKLSAgICBnc3RfY2Fwc191bnJlZiAoZ2xpbWFnZV9zaW5rLT5vdXRfY2Fwcyk7Ci0gIGdsaW1hZ2Vfc2luay0+b3V0X2NhcHMgPSBnc3RfdmlkZW9faW5mb190b19jYXBzIChvdXRfaW5mbyk7Ci0KICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTI0OSw2ICsxMzA1LDkgQEAKICAgICByZXR1cm4gRkFMU0U7CiAKICAgR1NUX0dMSU1BR0VfU0lOS19MT0NLIChnbGltYWdlX3NpbmspOworICBpZiAoZ2xpbWFnZV9zaW5rLT5pbl9jYXBzKQorICAgIGdzdF9jYXBzX3VucmVmIChnbGltYWdlX3NpbmstPmluX2NhcHMpOworICBnbGltYWdlX3NpbmstPmluX2NhcHMgPSBnc3RfY2Fwc19yZWYgKGNhcHMpOwogICBnbGltYWdlX3NpbmstPmluX2luZm8gPSB2aW5mbzsKICAgb2sgPSB1cGRhdGVfb3V0cHV0X2Zvcm1hdCAoZ2xpbWFnZV9zaW5rKTsKIApAQCAtMTI2NCw3ICsxMzIzLDcgQEAKIHsKICAgR3N0QnVmZmVyICppbl9idWZmZXIsICpuZXh0X2J1ZmZlciwgKm9sZF9idWZmZXI7CiAgIEdzdEJ1ZmZlciAqaW5fYnVmZmVyMiA9IE5VTEwsICpuZXh0X2J1ZmZlcjIgPSBOVUxMLCAqb2xkX2J1ZmZlcjI7Ci0gIEdzdEJ1ZmZlciAqbmV4dF9zeW5jLCAqb2xkX3N5bmM7CisgIEdzdEJ1ZmZlciAqbmV4dF9zeW5jID0gTlVMTCwgKm9sZF9zeW5jOwogICBHc3RHTFN5bmNNZXRhICpzeW5jX21ldGE7CiAgIEdzdFZpZGVvRnJhbWUgZ2xfZnJhbWU7CiAgIEdzdEdMVmlld0NvbnZlcnQgKmNvbnZlcnRfdmlld3MgPSBOVUxMOwpAQCAtMTMxNSw2ICsxMzc0LDcgQEAKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KICAgICBnc3Rfb2JqZWN0X3VucmVmIChjb252ZXJ0X3ZpZXdzKTsKKyAgICBjb252ZXJ0X3ZpZXdzID0gTlVMTDsKIAogICAgIGlmIChuZXh0X2J1ZmZlciA9PSBOVUxMKSB7CiAgICAgICAvKiBOb3QgcmVhZHkgdG8gcGFpbnQgYSBidWZmZXIgeWV0ICovCkBAIC0xMzI2LDIwICsxMzg2LDMzIEBACiAgICAgaW5mbyA9ICZnbGltYWdlX3NpbmstPmluX2luZm87CiAgIH0KIAorICBpZiAoIWdsaW1hZ2Vfc2luay0+b3ZlcmxheV9jb21wb3NpdG9yKSB7CisgICAgaWYgKCEoZ2xpbWFnZV9zaW5rLT5vdmVybGF5X2NvbXBvc2l0b3IgPQorICAgICAgICAgICAgZ3N0X2dsX292ZXJsYXlfY29tcG9zaXRvcl9uZXcgKGdsaW1hZ2Vfc2luay0+Y29udGV4dCkpKSB7CisgICAgICBnc3RfYnVmZmVyX3VucmVmIChuZXh0X2J1ZmZlcik7CisgICAgICBnb3RvIGZhaWw7CisgICAgfQorICB9CisKICAgZ3N0X2dsX292ZXJsYXlfY29tcG9zaXRvcl91cGxvYWRfb3ZlcmxheXMgKGdsaW1hZ2Vfc2luay0+b3ZlcmxheV9jb21wb3NpdG9yLAogICAgICAgbmV4dF9idWZmZXIpOwogCisgIHN5bmNfbWV0YSA9IGdzdF9idWZmZXJfZ2V0X2dsX3N5bmNfbWV0YSAobmV4dF9idWZmZXIpOworCisgIGlmICghc3luY19tZXRhKSB7CisgICAgbmV4dF9zeW5jID0gZ3N0X2J1ZmZlcl9uZXcgKCk7CisgICAgc3luY19tZXRhID0gZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhIChnbGltYWdlX3NpbmstPmNvbnRleHQsIG5leHRfc3luYyk7CisgICAgZ3N0X2dsX3N5bmNfbWV0YV9zZXRfc3luY19wb2ludCAoc3luY19tZXRhLCBnbGltYWdlX3NpbmstPmNvbnRleHQpOworICB9CisKICAgLyogaW5fYnVmZmVyIGludmFsaWQgbm93ICovCiAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJmdsX2ZyYW1lLCBpbmZvLCBuZXh0X2J1ZmZlciwKICAgICAgICAgICBHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkgewogICAgIGdzdF9idWZmZXJfdW5yZWYgKG5leHRfYnVmZmVyKTsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gbWFwIHZpZGVvIGZyYW1lLiIpOwogICAgIGdvdG8gZmFpbDsKICAgfQogCi0gIG5leHRfc3luYyA9IGdzdF9idWZmZXJfbmV3ICgpOwotICBzeW5jX21ldGEgPSBnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGEgKGdsaW1hZ2Vfc2luay0+Y29udGV4dCwgbmV4dF9zeW5jKTsKLSAgZ3N0X2dsX3N5bmNfbWV0YV9zZXRfc3luY19wb2ludCAoc3luY19tZXRhLCBnbGltYWdlX3NpbmstPmNvbnRleHQpOwotCiAgIEdTVF9HTElNQUdFX1NJTktfTE9DSyAoZ2xpbWFnZV9zaW5rKTsKICAgZ2xpbWFnZV9zaW5rLT5uZXh0X3RleCA9ICooZ3VpbnQgKikgZ2xfZnJhbWUuZGF0YVswXTsKIApAQCAtMTM1MCw2ICsxNDIzLDcgQEAKIAogICBvbGRfc3luYyA9IGdsaW1hZ2Vfc2luay0+bmV4dF9zeW5jOwogICBnbGltYWdlX3NpbmstPm5leHRfc3luYyA9IG5leHRfc3luYzsKKyAgZ2xpbWFnZV9zaW5rLT5uZXh0X3N5bmNfbWV0YSA9IHN5bmNfbWV0YTsKIAogICAvKiBOZWVkIHRvIGRyb3AgdGhlIGxvY2sgYWdhaW4sIHRvIGF2b2lkIGEgZGVhZGxvY2sgaWYgd2UncmUKICAgICogZHJvcHBpbmcgdGhlIGxhc3QgcmVmIG9uIHRoaXMgYnVmZmVyIGFuZCBpdCBnb2VzIGJhY2sgdG8gb3VyCkBAIC0xMzY5LDYgKzE0NDMsOCBAQAogICByZXR1cm4gVFJVRTsKIAogZmFpbDoKKyAgaWYgKGNvbnZlcnRfdmlld3MpCisgICAgZ3N0X29iamVjdF91bnJlZiAoY29udmVydF92aWV3cyk7CiAgIEdTVF9HTElNQUdFX1NJTktfTE9DSyAoZ2xpbWFnZV9zaW5rKTsKICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtMTM3Nyw2ICsxNDUzLDcgQEAKIGdzdF9nbGltYWdlX3NpbmtfcHJlcGFyZSAoR3N0QmFzZVNpbmsgKiBic2luaywgR3N0QnVmZmVyICogYnVmKQogewogICBHc3RHTEltYWdlU2luayAqZ2xpbWFnZV9zaW5rOworICBHc3RHTFN5bmNNZXRhICpzeW5jX21ldGE7CiAgIEdzdEJ1ZmZlciAqKnRhcmdldDsKICAgR3N0QnVmZmVyICpvbGRfaW5wdXQ7CiAKQEAgLTEzOTIsNyArMTQ2OSwyMCBAQAogICBpZiAoIV9lbnN1cmVfZ2xfc2V0dXAgKGdsaW1hZ2Vfc2luaykpCiAgICAgcmV0dXJuIEdTVF9GTE9XX05PVF9ORUdPVElBVEVEOwogCisgIHN5bmNfbWV0YSA9IGdzdF9idWZmZXJfZ2V0X2dsX3N5bmNfbWV0YSAoYnVmKTsKKyAgaWYgKHN5bmNfbWV0YSkKKyAgICBnc3RfZ2xfc3luY19tZXRhX3dhaXQgKHN5bmNfbWV0YSwgZ2xpbWFnZV9zaW5rLT5jb250ZXh0KTsKKwogICBHU1RfR0xJTUFHRV9TSU5LX0xPQ0sgKGdsaW1hZ2Vfc2luayk7CisgIGlmIChnbGltYWdlX3NpbmstPndpbmRvd19yZXNpemVkKSB7CisgICAgZ2xpbWFnZV9zaW5rLT53aW5kb3dfcmVzaXplZCA9IEZBTFNFOworICAgIEdTVF9HTElNQUdFX1NJTktfVU5MT0NLIChnbGltYWdlX3NpbmspOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKGdsaW1hZ2Vfc2luaywgIlNlbmRpbmcgcmVjb25maWd1cmUgZXZlbnQgb24gc2lua3BhZC4iKTsKKyAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9CQVNFX1NJTksgKGdsaW1hZ2Vfc2luayktPnNpbmtwYWQsCisgICAgICAgIGdzdF9ldmVudF9uZXdfcmVjb25maWd1cmUgKCkpOworICAgIEdTVF9HTElNQUdFX1NJTktfTE9DSyAoZ2xpbWFnZV9zaW5rKTsKKyAgfQorCiAgIHRhcmdldCA9ICZnbGltYWdlX3NpbmstPmlucHV0X2J1ZmZlcjsKICAgaWYgKEdTVF9WSURFT19JTkZPX01VTFRJVklFV19NT0RFICgmZ2xpbWFnZV9zaW5rLT5pbl9pbmZvKSA9PQogICAgICAgR1NUX1ZJREVPX01VTFRJVklFV19NT0RFX0ZSQU1FX0JZX0ZSQU1FICYmCkBAIC0xNjgyLDEzICsxNzcyLDQ3IEBACiBnc3RfZ2xpbWFnZV9zaW5rX3RocmVhZF9pbml0X3JlZGlzcGxheSAoR3N0R0xJbWFnZVNpbmsgKiBnbF9zaW5rKQogewogICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGdsX3NpbmstPmNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgIEdzdEdMU0xTdGFnZSAqZnJhZ19zdGFnZSwgKnZlcnRfc3RhZ2U7CiAKLSAgZ2xfc2luay0+cmVkaXNwbGF5X3NoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3IChnbF9zaW5rLT5jb250ZXh0KTsKLQotICBpZiAoIWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdmZfYW5kX2NoZWNrCi0gICAgICAoZ2xfc2luay0+cmVkaXNwbGF5X3NoYWRlciwgJmdsX3NpbmstPmF0dHJfcG9zaXRpb24sCi0gICAgICAgICAgJmdsX3NpbmstPmF0dHJfdGV4dHVyZSkpCisgIGlmIChnbF9zaW5rLT50ZXh0dXJlX3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKSB7CisgICAgdmVydF9zdGFnZSA9IGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZyAoZ2xfc2luay0+Y29udGV4dCwKKyAgICAgICAgR0xfVkVSVEVYX1NIQURFUiwgR1NUX0dMU0xfVkVSU0lPTl9OT05FLAorICAgICAgICBHU1RfR0xTTF9QUk9GSUxFX0VTIHwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLAorICAgICAgICBnc3RfZ2xfc2hhZGVyX3N0cmluZ192ZXJ0ZXhfbWF0NF90ZXh0dXJlX3RyYW5zZm9ybSk7CisgICAgZnJhZ19zdGFnZSA9IGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZyAoZ2xfc2luay0+Y29udGV4dCwKKyAgICAgICAgR0xfRlJBR01FTlRfU0hBREVSLCBHU1RfR0xTTF9WRVJTSU9OX05PTkUsCisgICAgICAgIEdTVF9HTFNMX1BST0ZJTEVfRVMgfCBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFksCisgICAgICAgIGdzdF9nbF9zaGFkZXJfc3RyaW5nX2ZyYWdtZW50X2V4dGVybmFsX29lc19kZWZhdWx0KTsKKyAgfSBlbHNlIHsKKyAgICB2ZXJ0X3N0YWdlID0gZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfdmVydGV4IChnbF9zaW5rLT5jb250ZXh0KTsKKyAgICBmcmFnX3N0YWdlID0gZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfZnJhZ21lbnQgKGdsX3NpbmstPmNvbnRleHQpOworICB9CisgIGlmICghdmVydF9zdGFnZSB8fCAhZnJhZ19zdGFnZSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGdsX3NpbmssICJGYWlsZWQgdG8gcmV0cmVpdmUgZnJhZ21lbnQgc2hhZGVyIGZvciAiCisgICAgICAgICJ0ZXh0dXJlIHRhcmdldCIpOworICAgIGlmICh2ZXJ0X3N0YWdlKQorICAgICAgZ3N0X29iamVjdF91bnJlZiAodmVydF9zdGFnZSk7CisgICAgaWYgKGZyYWdfc3RhZ2UpCisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChmcmFnX3N0YWdlKTsKICAgICBnc3RfZ2xpbWFnZV9zaW5rX2NsZWFudXBfZ2x0aHJlYWQgKGdsX3NpbmspOworICAgIHJldHVybjsKKyAgfQorCisgIGlmICghKGdsX3NpbmstPnJlZGlzcGxheV9zaGFkZXIgPQorICAgICAgICAgIGdzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXMgKGdsX3NpbmstPmNvbnRleHQsICZlcnJvciwKKyAgICAgICAgICAgICAgdmVydF9zdGFnZSwgZnJhZ19zdGFnZSwgTlVMTCkpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoZ2xfc2luaywgIkZhaWxlZCB0byBsaW5rIHNoYWRlcjogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgZ3N0X2dsaW1hZ2Vfc2lua19jbGVhbnVwX2dsdGhyZWFkIChnbF9zaW5rKTsKKyAgICByZXR1cm47CisgIH0KKworICBnbF9zaW5rLT5hdHRyX3Bvc2l0aW9uID0KKyAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoZ2xfc2luay0+cmVkaXNwbGF5X3NoYWRlciwKKyAgICAgICJhX3Bvc2l0aW9uIik7CisgIGdsX3NpbmstPmF0dHJfdGV4dHVyZSA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKGdsX3NpbmstPnJlZGlzcGxheV9zaGFkZXIsCisgICAgICAiYV90ZXhjb29yZCIpOwogCiAgIGlmIChnbC0+R2VuVmVydGV4QXJyYXlzKSB7CiAgICAgZ2wtPkdlblZlcnRleEFycmF5cyAoMSwgJmdsX3NpbmstPnZhbyk7CkBAIC0xNzQzLDcgKzE4NjcsOCBAQAogICAgIGdsX3NpbmstPnZib19pbmRpY2VzID0gMDsKICAgfQogCi0gIGdzdF9nbF9vdmVybGF5X2NvbXBvc2l0b3JfZnJlZV9vdmVybGF5cyAoZ2xfc2luay0+b3ZlcmxheV9jb21wb3NpdG9yKTsKKyAgaWYgKGdsX3NpbmstPm92ZXJsYXlfY29tcG9zaXRvcikKKyAgICBnc3RfZ2xfb3ZlcmxheV9jb21wb3NpdG9yX2ZyZWVfb3ZlcmxheXMgKGdsX3NpbmstPm92ZXJsYXlfY29tcG9zaXRvcik7CiB9CiAKIC8qIENhbGxlZCB3aXRoIG9iamVjdCBsb2NrIGhlbGQgKi8KQEAgLTE3NTUsNyArMTg4MCw2IEBACiAgICAqLwogICBjb25zdCBHc3RHTEZ1bmNzICpnbDsKICAgZ2Jvb2xlYW4gZG9fcmVzaGFwZTsKLSAgZ2Jvb2xlYW4gcmVjb25maWd1cmU7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAoZ2xfc2luaywgIkdMIFdpbmRvdyByZXNpemVkIHRvICV1eCV1Iiwgd2lkdGgsIGhlaWdodCk7CiAKQEAgLTE3NjksNyArMTg5Myw3IEBACiAgIGhlaWdodCA9IE1BWCAoMSwgaGVpZ2h0KTsKIAogICAvKiBDaGVjayBpZiB3ZSB3b3VsZCBzdWdnZXN0IGEgZGlmZmVyZW50IHdpZHRoL2hlaWdodCBub3cgKi8KLSAgcmVjb25maWd1cmUgPSAoKGdsX3NpbmstPndpbmRvd193aWR0aCAhPSB3aWR0aCkKKyAgZ2xfc2luay0+d2luZG93X3Jlc2l6ZWQgPSAoKGdsX3NpbmstPndpbmRvd193aWR0aCAhPSB3aWR0aCkKICAgICAgIHx8IChnbF9zaW5rLT53aW5kb3dfaGVpZ2h0ICE9IGhlaWdodCkpCiAgICAgICAmJiAoZ2xfc2luay0+d2luZG93X3dpZHRoICE9IDApCiAgICAgICAmJiAoZ2xfc2luay0+d2luZG93X2hlaWdodCAhPSAwKTsKQEAgLTE3NzcsMTEgKzE5MDEsOCBAQAogICBnbF9zaW5rLT53aW5kb3dfd2lkdGggPSB3aWR0aDsKICAgZ2xfc2luay0+d2luZG93X2hlaWdodCA9IGhlaWdodDsKIAotICBpZiAocmVjb25maWd1cmUpIHsKLSAgICBHU1RfREVCVUcgKCJTZW5kaW5nIHJlY29uZmlndXJlIGV2ZW50IG9uIHNpbmtwYWQuIik7Ci0gICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfQkFTRV9TSU5LIChnbF9zaW5rKS0+c2lua3BhZCwKLSAgICAgICAgZ3N0X2V2ZW50X25ld19yZWNvbmZpZ3VyZSAoKSk7Ci0gIH0KKyAgZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIgKGdsX3NpbmstPmNvbnRleHQsICIlcyB3aW5kb3cgcmVzaXplIHRvICVpeCVpIiwKKyAgICAgIEdTVF9PQkpFQ1RfTkFNRSAoZ2xfc2luayksIHdpZHRoLCBoZWlnaHQpOwogCiAgIC8qIGRlZmF1bHQgcmVzaGFwZSAqLwogICBpZiAoIWRvX3Jlc2hhcGUpIHsKQEAgLTE4MjEsNiArMTk0MiwxMyBAQAogICBHU1RfR0xJTUFHRV9TSU5LX1VOTE9DSyAoZ2xfc2luayk7CiB9CiAKK3N0YXRpYyBjb25zdCBnZmxvYXQgaWRlbnRpdHlfbWF0cml4W10gPSB7CisgIDEuMGYsIDAuMGYsIDAuMCwgMC4wZiwKKyAgMC4wZiwgMS4wZiwgMC4wLCAwLjBmLAorICAwLjBmLCAwLjBmLCAxLjAsIDAuMGYsCisgIDAuMGYsIDAuMGYsIDAuMCwgMS4wZiwKK307CisKIHN0YXRpYyB2b2lkCiBnc3RfZ2xpbWFnZV9zaW5rX29uX2RyYXcgKEdzdEdMSW1hZ2VTaW5rICogZ2xfc2luaykKIHsKQEAgLTE4MzMsOCArMTk2MSw4IEBACiAgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gTlVMTDsKICAgR3N0R0xXaW5kb3cgKndpbmRvdyA9IE5VTEw7CiAgIGdib29sZWFuIGRvX3JlZGlzcGxheSA9IEZBTFNFOwotICBHc3RHTFN5bmNNZXRhICpzeW5jX21ldGEgPSBOVUxMOwogICBHc3RTYW1wbGUgKnNhbXBsZSA9IE5VTEw7CisgIGd1aW50IGdsX3RhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoZ2xfc2luay0+dGV4dHVyZV90YXJnZXQpOwogCiAgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTElNQUdFX1NJTksgKGdsX3NpbmspKTsKIApAQCAtMTg1MiwxOSArMTk4MCwxNyBAQAogICB3aW5kb3ctPmlzX2RyYXdpbmcgPSBUUlVFOwogCiAgIC8qIG9wZW5nbCBzY2VuZSAqLworICBnc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlciAoZ2xfc2luay0+Y29udGV4dCwgIiVzIGVsZW1lbnQgZHJhd2luZyB0ZXh0dXJlICV1IiwKKyAgICAgIEdTVF9PQkpFQ1RfTkFNRSAoZ2xfc2luayksIGdsX3NpbmstPnJlZGlzcGxheV90ZXh0dXJlKTsKICAgR1NUX1RSQUNFICgicmVkcmF3aW5nIHRleHR1cmU6JXUiLCBnbF9zaW5rLT5yZWRpc3BsYXlfdGV4dHVyZSk7CiAKLSAgc3luY19tZXRhID0gZ3N0X2J1ZmZlcl9nZXRfZ2xfc3luY19tZXRhIChnbF9zaW5rLT5zdG9yZWRfc3luYyk7Ci0gIGlmIChzeW5jX21ldGEpCi0gICAgZ3N0X2dsX3N5bmNfbWV0YV93YWl0IChzeW5jX21ldGEsIGdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50ICgpKTsKKyAgaWYgKGdsX3NpbmstPnN0b3JlZF9zeW5jX21ldGEpCisgICAgZ3N0X2dsX3N5bmNfbWV0YV93YWl0IChnbF9zaW5rLT5zdG9yZWRfc3luY19tZXRhLAorICAgICAgICBnc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudCAoKSk7CiAKICAgLyogbWFrZSBzdXJlIHRoYXQgdGhlIGVudmlyb25uZW1lbnQgaXMgY2xlYW4gKi8KICAgZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVyIChnbF9zaW5rLT5jb250ZXh0KTsKLSAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCAwKTsKLSNpZiBHU1RfR0xfSEFWRV9PUEVOR0wKLSAgaWYgKFVTSU5HX09QRU5HTCAoZ2xfc2luay0+Y29udGV4dCkpCi0gICAgZ2wtPkRpc2FibGUgKEdMX1RFWFRVUkVfMkQpOwotI2VuZGlmCisgIGdsLT5CaW5kVGV4dHVyZSAoZ2xfdGFyZ2V0LCAwKTsKIAogICBzYW1wbGUgPSBnc3Rfc2FtcGxlX25ldyAoZ2xfc2luay0+c3RvcmVkX2J1ZmZlclswXSwKICAgICAgIGdsX3NpbmstPm91dF9jYXBzLCAmR1NUX0JBU0VfU0lOSyAoZ2xfc2luayktPnNlZ21lbnQsIE5VTEwpOwpAQCAtMTkwMSwxMSArMjAyNywyNSBAQAogICAgICAgX2JpbmRfYnVmZmVyIChnbF9zaW5rKTsKIAogICAgIGdsLT5BY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMCk7Ci0gICAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCBnbF9zaW5rLT5yZWRpc3BsYXlfdGV4dHVyZSk7CisgICAgZ2wtPkJpbmRUZXh0dXJlIChnbF90YXJnZXQsIGdsX3NpbmstPnJlZGlzcGxheV90ZXh0dXJlKTsKICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpIChnbF9zaW5rLT5yZWRpc3BsYXlfc2hhZGVyLCAidGV4IiwgMCk7CisgICAgaWYgKGdsX3NpbmstPnRleHR1cmVfdGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpIHsKKyAgICAgIEdzdFZpZGVvQWZmaW5lVHJhbnNmb3JtYXRpb25NZXRhICphZl9tZXRhOworCisgICAgICBhZl9tZXRhID0KKyAgICAgICAgICBnc3RfYnVmZmVyX2dldF92aWRlb19hZmZpbmVfdHJhbnNmb3JtYXRpb25fbWV0YQorICAgICAgICAgIChnbF9zaW5rLT5zdG9yZWRfYnVmZmVyWzBdKTsKKyAgICAgIGlmIChhZl9tZXRhKQorICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnYgKGdsX3NpbmstPnJlZGlzcGxheV9zaGFkZXIsCisgICAgICAgICAgICAidV90cmFuc2Zvcm1hdGlvbiIsIDEsIEZBTFNFLCBhZl9tZXRhLT5tYXRyaXgpOworICAgICAgZWxzZQorICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnYgKGdsX3NpbmstPnJlZGlzcGxheV9zaGFkZXIsCisgICAgICAgICAgICAidV90cmFuc2Zvcm1hdGlvbiIsIDEsIEZBTFNFLCBpZGVudGl0eV9tYXRyaXgpOworICAgIH0KIAogICAgIGdsLT5EcmF3RWxlbWVudHMgKEdMX1RSSUFOR0xFUywgNiwgR0xfVU5TSUdORURfU0hPUlQsIDApOwogCisgICAgZ2wtPkJpbmRUZXh0dXJlIChnbF90YXJnZXQsIDApOwogICAgIGdzdF9nbF9jb250ZXh0X2NsZWFyX3NoYWRlciAoZ2xfc2luay0+Y29udGV4dCk7CiAKICAgICBpZiAoZ2wtPkdlblZlcnRleEFycmF5cykKQEAgLTE5ODEsNiArMjEyMSwxNSBAQAogCiAgICAgLyogUmVjcmVhdGUgdGhlIG91dHB1dCB0ZXh0dXJlIGlmIG5lZWRlZCAqLwogICAgIEdTVF9HTElNQUdFX1NJTktfTE9DSyAoZ2xfc2luayk7CisgICAgaWYgKGdsX3NpbmstPndpbmRvd19yZXNpemVkKSB7CisgICAgICBnbF9zaW5rLT53aW5kb3dfcmVzaXplZCA9IEZBTFNFOworICAgICAgR1NUX0dMSU1BR0VfU0lOS19VTkxPQ0sgKGdsX3NpbmspOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZ2xfc2luaywgIlNlbmRpbmcgcmVjb25maWd1cmUgZXZlbnQgb24gc2lua3BhZC4iKTsKKyAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoR1NUX0JBU0VfU0lOSyAoZ2xfc2luayktPnNpbmtwYWQsCisgICAgICAgICAgZ3N0X2V2ZW50X25ld19yZWNvbmZpZ3VyZSAoKSk7CisgICAgICBHU1RfR0xJTUFHRV9TSU5LX0xPQ0sgKGdsX3NpbmspOworICAgIH0KKwogICAgIGlmIChnbF9zaW5rLT5vdXRwdXRfbW9kZV9jaGFuZ2VkICYmIGdsX3NpbmstPmlucHV0X2J1ZmZlciAhPSBOVUxMKSB7CiAgICAgICBHU1RfREVCVUcgKCJSZWNyZWF0aW5nIG91dHB1dCBhZnRlciBtb2RlL3NpemUgY2hhbmdlIik7CiAgICAgICB1cGRhdGVfb3V0cHV0X2Zvcm1hdCAoZ2xfc2luayk7CkBAIC0xOTkwLDYgKzIxMzksNyBAQAogICAgIGlmIChnbF9zaW5rLT5uZXh0X2J1ZmZlciA9PSBOVUxMKSB7CiAgICAgICAvKiBOb3RoaW5nIHRvIGRpc3BsYXkgeWV0ICovCiAgICAgICBHU1RfR0xJTUFHRV9TSU5LX1VOTE9DSyAoZ2xfc2luayk7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmICh3aW5kb3cpOwogICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQogCkBAIC0yMDA0LDcgKzIxNTQsMTEgQEAKICAgICAgIGdsX3NpbmstPnN0b3JlZF9idWZmZXJbMV0gPSBOVUxMOwogCiAgICAgb2xkX3N5bmMgPSBnbF9zaW5rLT5zdG9yZWRfc3luYzsKLSAgICBnbF9zaW5rLT5zdG9yZWRfc3luYyA9IGdzdF9idWZmZXJfcmVmIChnbF9zaW5rLT5uZXh0X3N5bmMpOworICAgIGlmIChnbF9zaW5rLT5uZXh0X3N5bmMpCisgICAgICBnbF9zaW5rLT5zdG9yZWRfc3luYyA9IGdzdF9idWZmZXJfcmVmIChnbF9zaW5rLT5uZXh0X3N5bmMpOworICAgIGVsc2UKKyAgICAgIGdsX3NpbmstPnN0b3JlZF9zeW5jID0gTlVMTDsKKyAgICBnbF9zaW5rLT5zdG9yZWRfc3luY19tZXRhID0gZ2xfc2luay0+bmV4dF9zeW5jX21ldGE7CiAgICAgR1NUX0dMSU1BR0VfU0lOS19VTkxPQ0sgKGdsX3NpbmspOwogCiAgICAgZ3N0X2J1ZmZlcl9yZXBsYWNlIChvbGRfc3RvcmVkX2J1ZmZlciwgTlVMTCk7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuaCBiL2V4dC9nbC9nc3RnbGltYWdlc2luay5oCmluZGV4IGY3YjNiZmIuLjZlOWI5OGUgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbGltYWdlc2luay5oCisrKyBiL2V4dC9nbC9nc3RnbGltYWdlc2luay5oCkBAIC02NCwxMCArNjQsMTIgQEAKIAogICAgIC8qIElucHV0IGluZm8gYmVmb3JlIDNkIHN0ZXJlbyBvdXRwdXQgY29udmVyc2lvbiwgaWYgYW55ICovCiAgICAgR3N0VmlkZW9JbmZvIGluX2luZm87CisgICAgR3N0Q2FwcyAqaW5fY2FwczsKIAogICAgIC8qIGZvcm1hdC9jYXBzIHdlIGFjdHVhbGx5IGhhbmQgb2ZmIHRvIHRoZSBhcHAgKi8KICAgICBHc3RWaWRlb0luZm8gb3V0X2luZm87CiAgICAgR3N0Q2FwcyAqb3V0X2NhcHM7CisgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRleHR1cmVfdGFyZ2V0OwogCiAgICAgR3N0R0xEaXNwbGF5ICpkaXNwbGF5OwogICAgIEdzdEdMQ29udGV4dCAqY29udGV4dDsKQEAgLTg3LDYgKzg5LDcgQEAKICAgICBHc3RCdWZmZXIgKm5leHRfYnVmZmVyOwogICAgIEdzdEJ1ZmZlciAqbmV4dF9idWZmZXIyOyAvKiBmcmFtZS1ieS1mcmFtZSAybmQgdmlldyAqLwogICAgIEdzdEJ1ZmZlciAqbmV4dF9zeW5jOworICAgIEdzdEdMU3luY01ldGEgKm5leHRfc3luY19tZXRhOwogCiAgICAgdm9sYXRpbGUgZ2ludCB0b19xdWl0OwogICAgIGdib29sZWFuIGtlZXBfYXNwZWN0X3JhdGlvOwpAQCAtOTYsOSArOTksMTEgQEAKICAgICBHTXV0ZXggZHJhd2luZ19sb2NrOwogICAgIEdzdEJ1ZmZlciAqc3RvcmVkX2J1ZmZlclsyXTsKICAgICBHc3RCdWZmZXIgKnN0b3JlZF9zeW5jOworICAgIEdzdEdMU3luY01ldGEgKnN0b3JlZF9zeW5jX21ldGE7CiAgICAgR0x1aW50IHJlZGlzcGxheV90ZXh0dXJlOwogCi0gICAgZ2Jvb2xlYW4gY2Fwc19jaGFuZ2U7CisgICAgLyogcHJvdGVjdGVkIHdpdGggZHJhd2luZ19sb2NrICovCisgICAgZ2Jvb2xlYW4gd2luZG93X3Jlc2l6ZWQ7CiAgICAgZ3VpbnQgd2luZG93X3dpZHRoOwogICAgIGd1aW50IHdpbmRvd19oZWlnaHQ7CiAKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbG1peGVyLmMgYi9leHQvZ2wvZ3N0Z2xtaXhlci5jCmluZGV4IDQwMWU0ZWQuLjVjYTEzMTYgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbG1peGVyLmMKKysrIGIvZXh0L2dsL2dzdGdsbWl4ZXIuYwpAQCAtMjIxLDkgKzIyMSwxNyBAQAogCiAvKiBjb3BpZXMgdGhlIGdpdmVuIGNhcHMgKi8KIHN0YXRpYyBHc3RDYXBzICoKLV91cGRhdGVfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywgR3N0Q2FwcyAqIGNhcHMpCitfdXBkYXRlX2NhcHMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2csIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKQogewotICByZXR1cm4gZ3N0X2dsX2NhcHNfcmVwbGFjZV9hbGxfY2Fwc19mZWF0dXJlcyAoY2FwcywKKyAgR3N0Q2FwcyAqdG1wOworCisgIGlmIChmaWx0ZXIpIHsKKyAgICB0bXAgPSBnc3RfY2Fwc19pbnRlcnNlY3QgKGNhcHMsIGZpbHRlcik7CisgIH0gZWxzZSB7CisgICAgdG1wID0gY2FwczsKKyAgfQorCisgIHJldHVybiBnc3RfZ2xfY2Fwc19yZXBsYWNlX2FsbF9jYXBzX2ZlYXR1cmVzICh0bXAsCiAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpOwogfQogCkBAIC00MDgsNyArNDE2LDYgQEAKIGdzdF9nbF9taXhlcl9pbml0IChHc3RHTE1peGVyICogbWl4KQogewogICBtaXgtPnByaXYgPSBHU1RfR0xfTUlYRVJfR0VUX1BSSVZBVEUgKG1peCk7Ci0gIG1peC0+YXJyYXlfYnVmZmVycyA9IDA7CiAgIG1peC0+ZmJvID0gMDsKICAgbWl4LT5kZXB0aGJ1ZmZlciA9IDA7CiAKQEAgLTU5MSwxNiArNTk4LDQ3IEBACiAgIH0KIH0KIAorc3RhdGljIGdib29sZWFuCitfdXBsb2FkX2ZyYW1lcyAoR3N0QWdncmVnYXRvciAqIGFnZywgR3N0QWdncmVnYXRvclBhZCAqIGFnZ19wYWQsCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RWaWRlb0FnZ3JlZ2F0b3JQYWQgKnZhZ2dwYWQgPSBHU1RfVklERU9fQUdHUkVHQVRPUl9QQUQgKGFnZ19wYWQpOworICBHc3RHTE1peGVyUGFkICpwYWQgPSBHU1RfR0xfTUlYRVJfUEFEIChhZ2dfcGFkKTsKKyAgR3N0R0xNaXhlciAqbWl4ID0gR1NUX0dMX01JWEVSIChhZ2cpOworCisgIGlmICh2YWdncGFkLT5idWZmZXIgIT0gTlVMTCkgeworICAgIEdzdFZpZGVvSW5mbyBnbF9pbmZvOworICAgIEdzdFZpZGVvRnJhbWUgZ2xfZnJhbWU7CisgICAgR3N0R0xTeW5jTWV0YSAqc3luY19tZXRhOworCisgICAgZ3N0X3ZpZGVvX2luZm9fc2V0X2Zvcm1hdCAoJmdsX2luZm8sCisgICAgICAgIEdTVF9WSURFT19GT1JNQVRfUkdCQSwKKyAgICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZ2YWdncGFkLT5pbmZvKSwKKyAgICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmdmFnZ3BhZC0+aW5mbykpOworCisgICAgc3luY19tZXRhID0gZ3N0X2J1ZmZlcl9nZXRfZ2xfc3luY19tZXRhICh2YWdncGFkLT5idWZmZXIpOworICAgIGlmIChzeW5jX21ldGEpCisgICAgICBnc3RfZ2xfc3luY19tZXRhX3dhaXQgKHN5bmNfbWV0YSwgR1NUX0dMX0JBU0VfTUlYRVIgKG1peCktPmNvbnRleHQpOworCisgICAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwICgmZ2xfZnJhbWUsICZnbF9pbmZvLCB2YWdncGFkLT5idWZmZXIsCisgICAgICAgICAgICBHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoYWdnX3BhZCwgIkZhaWxlZCB0byBtYXAgaW5wdXQgZnJhbWUiKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBwYWQtPmN1cnJlbnRfdGV4dHVyZSA9ICooZ3VpbnQgKikgZ2xfZnJhbWUuZGF0YVswXTsKKyAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAgKCZnbF9mcmFtZSk7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKwogZ2Jvb2xlYW4KIGdzdF9nbF9taXhlcl9wcm9jZXNzX3RleHR1cmVzIChHc3RHTE1peGVyICogbWl4LCBHc3RCdWZmZXIgKiBvdXRidWYpCiB7Ci0gIGd1aW50IGk7Ci0gIEdMaXN0ICp3YWxrOwogICBndWludCBvdXRfdGV4OwogICBnYm9vbGVhbiByZXMgPSBUUlVFOwotICBndWludCBhcnJheV9pbmRleCA9IDA7CiAgIEdzdFZpZGVvRnJhbWUgb3V0X2ZyYW1lOwotICBHc3RFbGVtZW50ICplbGVtZW50ID0gR1NUX0VMRU1FTlQgKG1peCk7CiAgIEdzdFZpZGVvQWdncmVnYXRvciAqdmFnZyA9IEdTVF9WSURFT19BR0dSRUdBVE9SIChtaXgpOwogICBHc3RHTE1peGVyQ2xhc3MgKm1peF9jbGFzcyA9IEdTVF9HTF9NSVhFUl9HRVRfQ0xBU1MgKG1peCk7CiAgIEdzdEdMTWl4ZXJQcml2YXRlICpwcml2ID0gbWl4LT5wcml2OwpAQCAtNjE0LDQ3ICs2NTIsOSBAQAogCiAgIG91dF90ZXggPSAqKGd1aW50ICopIG91dF9mcmFtZS5kYXRhWzBdOwogCi0gIEdTVF9PQkpFQ1RfTE9DSyAobWl4KTsKLSAgd2FsayA9IGVsZW1lbnQtPnNpbmtwYWRzOwotCi0gIGkgPSBtaXgtPmZyYW1lcy0+bGVuOwotICBnX3B0cl9hcnJheV9zZXRfc2l6ZSAobWl4LT5mcmFtZXMsIGVsZW1lbnQtPm51bXNpbmtwYWRzKTsKLSAgZm9yICg7IGkgPCBlbGVtZW50LT5udW1zaW5rcGFkczsgaSsrKQotICAgIG1peC0+ZnJhbWVzLT5wZGF0YVtpXSA9IGdfc2xpY2VfbmV3MCAoR3N0R0xNaXhlckZyYW1lRGF0YSk7Ci0gIHdoaWxlICh3YWxrKSB7Ci0gICAgR3N0R0xNaXhlclBhZCAqcGFkID0gR1NUX0dMX01JWEVSX1BBRCAod2Fsay0+ZGF0YSk7Ci0gICAgR3N0VmlkZW9BZ2dyZWdhdG9yUGFkICp2YWdncGFkID0gd2Fsay0+ZGF0YTsKLSAgICBHc3RHTE1peGVyRnJhbWVEYXRhICpmcmFtZTsKLQotICAgIGZyYW1lID0gZ19wdHJfYXJyYXlfaW5kZXggKG1peC0+ZnJhbWVzLCBhcnJheV9pbmRleCk7Ci0gICAgZnJhbWUtPnBhZCA9IHBhZDsKLSAgICBmcmFtZS0+dGV4dHVyZSA9IDA7Ci0KLSAgICB3YWxrID0gZ19saXN0X25leHQgKHdhbGspOwotCi0gICAgaWYgKHZhZ2dwYWQtPmJ1ZmZlciAhPSBOVUxMKSB7Ci0gICAgICBHc3RWaWRlb0luZm8gZ2xfaW5mbzsKLSAgICAgIEdzdFZpZGVvRnJhbWUgZ2xfZnJhbWU7Ci0gICAgICBHc3RHTFN5bmNNZXRhICpzeW5jX21ldGE7Ci0KLSAgICAgIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZnbF9pbmZvLAotICAgICAgICAgIEdTVF9WSURFT19GT1JNQVRfUkdCQSwKLSAgICAgICAgICBHU1RfVklERU9fSU5GT19XSURUSCAoJnZhZ2dwYWQtPmluZm8pLAotICAgICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJnZhZ2dwYWQtPmluZm8pKTsKLQotICAgICAgc3luY19tZXRhID0gZ3N0X2J1ZmZlcl9nZXRfZ2xfc3luY19tZXRhICh2YWdncGFkLT5idWZmZXIpOwotICAgICAgaWYgKHN5bmNfbWV0YSkKLSAgICAgICAgZ3N0X2dsX3N5bmNfbWV0YV93YWl0IChzeW5jX21ldGEsIEdTVF9HTF9CQVNFX01JWEVSIChtaXgpLT5jb250ZXh0KTsKLQotICAgICAgaWYgKGdzdF92aWRlb19mcmFtZV9tYXAgKCZnbF9mcmFtZSwgJmdsX2luZm8sIHZhZ2dwYWQtPmJ1ZmZlciwKLSAgICAgICAgICAgICAgR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpIHsKLSAgICAgICAgZnJhbWUtPnRleHR1cmUgPSAqKGd1aW50ICopIGdsX2ZyYW1lLmRhdGFbMF07Ci0gICAgICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJmdsX2ZyYW1lKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICArK2FycmF5X2luZGV4OwotICB9CisgIGlmICghZ3N0X2FnZ3JlZ2F0b3JfaXRlcmF0ZV9zaW5rcGFkcyAoR1NUX0FHR1JFR0FUT1IgKG1peCksCisgICAgICAgICAgKEdzdEFnZ3JlZ2F0b3JQYWRGb3JlYWNoRnVuYykgX3VwbG9hZF9mcmFtZXMsIE5VTEwpKQorICAgIHJldHVybiBGQUxTRTsKIAogICBnX211dGV4X2xvY2sgKCZwcml2LT5nbF9yZXNvdXJjZV9sb2NrKTsKICAgaWYgKCFwcml2LT5nbF9yZXNvdXJjZV9yZWFkeSkKQEAgLTY2OCwxMyArNjY4LDExIEBACiAgICAgZ290byBvdXQ7CiAgIH0KIAotICBtaXhfY2xhc3MtPnByb2Nlc3NfdGV4dHVyZXMgKG1peCwgbWl4LT5mcmFtZXMsIG91dF90ZXgpOworICBtaXhfY2xhc3MtPnByb2Nlc3NfdGV4dHVyZXMgKG1peCwgb3V0X3RleCk7CiAKICAgZ19tdXRleF91bmxvY2sgKCZwcml2LT5nbF9yZXNvdXJjZV9sb2NrKTsKIAogb3V0OgotICBHU1RfT0JKRUNUX1VOTE9DSyAobWl4KTsKLQogICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAgKCZvdXRfZnJhbWUpOwogCiAgIHJldHVybiByZXM7CkBAIC02ODMsMzEgKzY4MSw5IEBACiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9nbF9taXhlcl9wcm9jZXNzX2J1ZmZlcnMgKEdzdEdMTWl4ZXIgKiBtaXgsIEdzdEJ1ZmZlciAqIG91dGJ1ZikKIHsKLSAgR0xpc3QgKndhbGs7Ci0gIGd1aW50IGksIGFycmF5X2luZGV4ID0gMDsKLSAgR3N0RWxlbWVudCAqZWxlbWVudCA9IEdTVF9FTEVNRU5UIChtaXgpOwogICBHc3RHTE1peGVyQ2xhc3MgKm1peF9jbGFzcyA9IEdTVF9HTF9NSVhFUl9HRVRfQ0xBU1MgKG1peCk7CiAKLSAgR1NUX09CSkVDVF9MT0NLIChtaXgpOwotICB3YWxrID0gR1NUX0VMRU1FTlQgKG1peCktPnNpbmtwYWRzOwotICBpID0gbWl4LT5mcmFtZXMtPmxlbjsKLSAgZ19wdHJfYXJyYXlfc2V0X3NpemUgKG1peC0+ZnJhbWVzLCBlbGVtZW50LT5udW1zaW5rcGFkcyk7Ci0gIGZvciAoOyBpIDwgZWxlbWVudC0+bnVtc2lua3BhZHM7IGkrKykKLSAgICBtaXgtPmZyYW1lcy0+cGRhdGFbaV0gPSBnX3NsaWNlX25ldzAgKEdzdEdMTWl4ZXJGcmFtZURhdGEpOwotICB3aGlsZSAod2FsaykgeyAgICAgICAgICAgICAgICAvKiBXZSB3YWxrIHdpdGggdGhpcyBsaXN0IGJlY2F1c2UgaXQncyBvcmRlcmVkICovCi0gICAgR3N0VmlkZW9BZ2dyZWdhdG9yUGFkICp2YWdncGFkID0gd2Fsay0+ZGF0YTsKLQotICAgIHdhbGsgPSBnX2xpc3RfbmV4dCAod2Fsayk7Ci0KLSAgICBpZiAodmFnZ3BhZC0+YnVmZmVyICE9IE5VTEwpIHsKLSAgICAgIC8qIHB1dCBidWZmZXIgaW50byBhcnJheSAqLwotICAgICAgbWl4LT5hcnJheV9idWZmZXJzLT5wZGF0YVthcnJheV9pbmRleF0gPSB2YWdncGFkLT5idWZmZXI7Ci0gICAgfQotICAgICsrYXJyYXlfaW5kZXg7Ci0gIH0KLSAgR1NUX09CSkVDVF9VTkxPQ0sgKG1peCk7Ci0KLSAgcmV0dXJuIG1peF9jbGFzcy0+cHJvY2Vzc19idWZmZXJzIChtaXgsIG1peC0+YXJyYXlfYnVmZmVycywgb3V0YnVmKTsKKyAgcmV0dXJuIG1peF9jbGFzcy0+cHJvY2Vzc19idWZmZXJzIChtaXgsIG91dGJ1Zik7CiB9CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCkBAIC03NTMsMzIgKzcyOSw5IEBACiAgIH0KIH0KIAotc3RhdGljIHZvaWQKLV9mcmVlX2dsbWl4ZXJfZnJhbWVfZGF0YSAoR3N0R0xNaXhlckZyYW1lRGF0YSAqIGZyYW1lKQotewotICBnX3NsaWNlX2ZyZWUxIChzaXplb2YgKEdzdEdMTWl4ZXJGcmFtZURhdGEpLCBmcmFtZSk7Ci19Ci0KIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2dsX21peGVyX3N0YXJ0IChHc3RBZ2dyZWdhdG9yICogYWdnKQogewotICBndWludCBpOwotICBHc3RHTE1peGVyICptaXggPSBHU1RfR0xfTUlYRVIgKGFnZyk7Ci0gIEdzdEVsZW1lbnQgKmVsZW1lbnQgPSBHU1RfRUxFTUVOVCAoYWdnKTsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKG1peCk7Ci0gIG1peC0+YXJyYXlfYnVmZmVycyA9IGdfcHRyX2FycmF5X25ld19mdWxsIChlbGVtZW50LT5udW1zaW5rcGFkcywgTlVMTCk7Ci0gIG1peC0+ZnJhbWVzID0gZ19wdHJfYXJyYXlfbmV3X2Z1bGwgKGVsZW1lbnQtPm51bXNpbmtwYWRzLAotICAgICAgKEdEZXN0cm95Tm90aWZ5KSBfZnJlZV9nbG1peGVyX2ZyYW1lX2RhdGEpOwotCi0gIGdfcHRyX2FycmF5X3NldF9zaXplIChtaXgtPmFycmF5X2J1ZmZlcnMsIGVsZW1lbnQtPm51bXNpbmtwYWRzKTsKLSAgZ19wdHJfYXJyYXlfc2V0X3NpemUgKG1peC0+ZnJhbWVzLCBlbGVtZW50LT5udW1zaW5rcGFkcyk7Ci0KLSAgZm9yIChpID0gMDsgaSA8IGVsZW1lbnQtPm51bXNpbmtwYWRzOyBpKyspCi0gICAgbWl4LT5mcmFtZXMtPnBkYXRhW2ldID0gZ19zbGljZV9uZXcwIChHc3RHTE1peGVyRnJhbWVEYXRhKTsKLQotICBHU1RfT0JKRUNUX1VOTE9DSyAobWl4KTsKLQogICByZXR1cm4gR1NUX0FHR1JFR0FUT1JfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnN0YXJ0IChhZ2cpOwogfQogCkBAIC03ODksMTMgKzc0Miw2IEBACiAgIEdzdEdMTWl4ZXJDbGFzcyAqbWl4ZXJfY2xhc3MgPSBHU1RfR0xfTUlYRVJfR0VUX0NMQVNTIChtaXgpOwogICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBHU1RfR0xfQkFTRV9NSVhFUiAobWl4KS0+Y29udGV4dDsKIAotICBHU1RfT0JKRUNUX0xPQ0sgKGFnZyk7Ci0gIGdfcHRyX2FycmF5X2ZyZWUgKG1peC0+ZnJhbWVzLCBUUlVFKTsKLSAgbWl4LT5mcmFtZXMgPSBOVUxMOwotICBnX3B0cl9hcnJheV9mcmVlIChtaXgtPmFycmF5X2J1ZmZlcnMsIFRSVUUpOwotICBtaXgtPmFycmF5X2J1ZmZlcnMgPSBOVUxMOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoYWdnKTsKLQogICBpZiAobWl4ZXJfY2xhc3MtPnJlc2V0KQogICAgIG1peGVyX2NsYXNzLT5yZXNldCAobWl4KTsKICAgaWYgKG1peC0+ZmJvKSB7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xtaXhlci5oIGIvZXh0L2dsL2dzdGdsbWl4ZXIuaAppbmRleCAwMWVlZDM0Li44MTk3NmE3IDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xtaXhlci5oCisrKyBiL2V4dC9nbC9nc3RnbG1peGVyLmgKQEAgLTMxLDcgKzMxLDYgQEAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTE1peGVyIEdzdEdMTWl4ZXI7CiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xNaXhlckNsYXNzIEdzdEdMTWl4ZXJDbGFzczsKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTE1peGVyUHJpdmF0ZSBHc3RHTE1peGVyUHJpdmF0ZTsKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTE1peGVyRnJhbWVEYXRhIEdzdEdMTWl4ZXJGcmFtZURhdGE7CiAKICNkZWZpbmUgR1NUX1RZUEVfR0xfTUlYRVJfUEFEIChnc3RfZ2xfbWl4ZXJfcGFkX2dldF90eXBlKCkpCiAjZGVmaW5lIEdTVF9HTF9NSVhFUl9QQUQob2JqKSBcCkBAIC01Miw2ICs1MSw4IEBACiBzdHJ1Y3QgX0dzdEdMTWl4ZXJQYWQKIHsKICAgR3N0R0xCYXNlTWl4ZXJQYWQgcGFyZW50OworCisgIGd1aW50IGN1cnJlbnRfdGV4dHVyZTsKIH07CiAKIHN0cnVjdCBfR3N0R0xNaXhlclBhZENsYXNzCkBAIC03NiwxOCArNzcsMTMgQEAKIHR5cGVkZWYgZ2Jvb2xlYW4gKCpHc3RHTE1peGVyU2V0Q2FwcykgKEdzdEdMTWl4ZXIqIG1peGVyLAogICBHc3RDYXBzKiBvdXRjYXBzKTsKIHR5cGVkZWYgdm9pZCAoKkdzdEdMTWl4ZXJSZXNldCkgKEdzdEdMTWl4ZXIgKm1peGVyKTsKLXR5cGVkZWYgZ2Jvb2xlYW4gKCpHc3RHTE1peGVyUHJvY2Vzc0Z1bmMpIChHc3RHTE1peGVyICptaXgsCi0gIEdQdHJBcnJheSAqYnVmZmVycywgR3N0QnVmZmVyICpvdXRidWYpOwotdHlwZWRlZiBnYm9vbGVhbiAoKkdzdEdMTWl4ZXJQcm9jZXNzVGV4dHVyZXMpIChHc3RHTE1peGVyICptaXgsCi0gIEdQdHJBcnJheSAqZnJhbWVzLCBndWludCBvdXRfdGV4KTsKK3R5cGVkZWYgZ2Jvb2xlYW4gKCpHc3RHTE1peGVyUHJvY2Vzc0Z1bmMpIChHc3RHTE1peGVyICptaXgsIEdzdEJ1ZmZlciAqb3V0YnVmKTsKK3R5cGVkZWYgZ2Jvb2xlYW4gKCpHc3RHTE1peGVyUHJvY2Vzc1RleHR1cmVzKSAoR3N0R0xNaXhlciAqbWl4LCBndWludCBvdXRfdGV4KTsKIAogc3RydWN0IF9Hc3RHTE1peGVyCiB7CiAgIEdzdEdMQmFzZU1peGVyIHZhZ2dyZWdhdG9yOwogCi0gIEdQdHJBcnJheSAqYXJyYXlfYnVmZmVyczsKLSAgR1B0ckFycmF5ICpmcmFtZXM7Ci0KICAgR0x1aW50IGZibzsKICAgR0x1aW50IGRlcHRoYnVmZmVyOwogCkBAIC0xMDYsMTIgKzEwMiw2IEBACiAgIEdzdEdMTWl4ZXJQcm9jZXNzVGV4dHVyZXMgcHJvY2Vzc190ZXh0dXJlczsKIH07CiAKLXN0cnVjdCBfR3N0R0xNaXhlckZyYW1lRGF0YQotewotICBHc3RHTE1peGVyUGFkICpwYWQ7Ci0gIGd1aW50IHRleHR1cmU7Ci19OwotCiBHVHlwZSBnc3RfZ2xfbWl4ZXJfZ2V0X3R5cGUodm9pZCk7CiAKIGdib29sZWFuIGdzdF9nbF9taXhlcl9wcm9jZXNzX3RleHR1cmVzIChHc3RHTE1peGVyICogbWl4LCBHc3RCdWZmZXIgKiBvdXRidWYpOwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsbWl4ZXJiaW4uYyBiL2V4dC9nbC9nc3RnbG1peGVyYmluLmMKaW5kZXggYzY0ODhiNS4uNmY4M2Y4MiAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsbWl4ZXJiaW4uYworKysgYi9leHQvZ2wvZ3N0Z2xtaXhlcmJpbi5jCkBAIC00NTgsNyArNDU4LDcgQEAKICAgICBzdHJ1Y3QgaW5wdXRfY2hhaW4gKmNoYWluID0gbC0+ZGF0YTsKICAgICBpZiAoR1NUX1BBRCAoY2hhaW4tPmdob3N0X3BhZCkgPT0gcGFkKSB7CiAgICAgICBzZWxmLT5wcml2LT5pbnB1dF9jaGFpbnMgPQotICAgICAgICAgIGdfbGlzdF9yZW1vdmVfbGluayAoc2VsZi0+cHJpdi0+aW5wdXRfY2hhaW5zLCBsKTsKKyAgICAgICAgICBnX2xpc3RfZGVsZXRlX2xpbmsgKHNlbGYtPnByaXYtPmlucHV0X2NoYWlucywgbCk7CiAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZWxlbWVudCk7CiAKICAgICAgIF9mcmVlX2lucHV0X2NoYWluIChjaGFpbik7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xtb3NhaWMuYyBiL2V4dC9nbC9nc3RnbG1vc2FpYy5jCmluZGV4IDBhOTgzNDEuLjM3N2Y3MTggMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbG1vc2FpYy5jCisrKyBiL2V4dC9nbC9nc3RnbG1vc2FpYy5jCkBAIC03MCw3ICs3MCw3IEBACiAgICAgR3N0Q2FwcyAqIG91dGNhcHMpOwogCiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX21vc2FpY19wcm9jZXNzX3RleHR1cmVzIChHc3RHTE1peGVyICogbWl4ZXIsCi0gICAgR1B0ckFycmF5ICogZnJhbWVzLCBndWludCBvdXRfdGV4KTsKKyAgICBndWludCBvdXRfdGV4KTsKIHN0YXRpYyB2b2lkIGdzdF9nbF9tb3NhaWNfY2FsbGJhY2sgKGdwb2ludGVyIHN0dWZmKTsKIAogLy92ZXJ0ZXggc291cmNlCkBAIC0xNDIsNyArMTQyLDYgQEAKIGdzdF9nbF9tb3NhaWNfaW5pdCAoR3N0R0xNb3NhaWMgKiBtb3NhaWMpCiB7CiAgIG1vc2FpYy0+c2hhZGVyID0gTlVMTDsKLSAgbW9zYWljLT5pbnB1dF9mcmFtZXMgPSBOVUxMOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTc2LDggKzE3NSw2IEBACiB7CiAgIEdzdEdMTW9zYWljICptb3NhaWMgPSBHU1RfR0xfTU9TQUlDIChtaXhlcik7CiAKLSAgbW9zYWljLT5pbnB1dF9mcmFtZXMgPSBOVUxMOwotCiAgIC8vYmxvY2tpbmcgY2FsbCwgd2FpdCB0aGUgb3BlbmdsIHRocmVhZCBoYXMgZGVzdHJveWVkIHRoZSBzaGFkZXIKICAgaWYgKG1vc2FpYy0+c2hhZGVyKQogICAgIGdzdF9nbF9jb250ZXh0X2RlbF9zaGFkZXIgKEdTVF9HTF9CQVNFX01JWEVSIChtaXhlciktPmNvbnRleHQsCkBAIC0xOTYsMTMgKzE5MywxMCBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nbF9tb3NhaWNfcHJvY2Vzc190ZXh0dXJlcyAoR3N0R0xNaXhlciAqIG1peCwgR1B0ckFycmF5ICogZnJhbWVzLAotICAgIGd1aW50IG91dF90ZXgpCitnc3RfZ2xfbW9zYWljX3Byb2Nlc3NfdGV4dHVyZXMgKEdzdEdMTWl4ZXIgKiBtaXgsIGd1aW50IG91dF90ZXgpCiB7CiAgIEdzdEdMTW9zYWljICptb3NhaWMgPSBHU1RfR0xfTU9TQUlDIChtaXgpOwogCi0gIG1vc2FpYy0+aW5wdXRfZnJhbWVzID0gZnJhbWVzOwotCiAgIC8vYmxvY2tpbmcgY2FsbCwgdXNlIGEgRkJPCiAgIGdzdF9nbF9jb250ZXh0X3VzZV9mYm9fdjIgKEdTVF9HTF9CQVNFX01JWEVSIChtaXgpLT5jb250ZXh0LAogICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZHU1RfVklERU9fQUdHUkVHQVRPUiAobWl4KS0+aW5mbyksCkBAIC0yMTksNiArMjEzLDcgQEAKICAgR3N0R0xNb3NhaWMgKm1vc2FpYyA9IEdTVF9HTF9NT1NBSUMgKHN0dWZmKTsKICAgR3N0R0xNaXhlciAqbWl4ZXIgPSBHU1RfR0xfTUlYRVIgKG1vc2FpYyk7CiAgIEdzdEdMRnVuY3MgKmdsID0gR1NUX0dMX0JBU0VfTUlYRVIgKG1peGVyKS0+Y29udGV4dC0+Z2xfdnRhYmxlOworICBHTGlzdCAqd2FsazsKIAogICBzdGF0aWMgR0xmbG9hdCB4cm90ID0gMDsKICAgc3RhdGljIEdMZmxvYXQgeXJvdCA9IDA7CkBAIC0yNTUsOCArMjUwLDEwIEBACiAgIGF0dHJfdGV4dHVyZV9sb2MgPQogICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChtb3NhaWMtPnNoYWRlciwgImFfdGV4Q29vcmQiKTsKIAotICB3aGlsZSAoY291bnQgPCBtb3NhaWMtPmlucHV0X2ZyYW1lcy0+bGVuICYmIGNvdW50IDwgNikgewotICAgIEdzdEdMTWl4ZXJGcmFtZURhdGEgKmZyYW1lOworICBHU1RfT0JKRUNUX0xPQ0sgKG1vc2FpYyk7CisgIHdhbGsgPSBHU1RfRUxFTUVOVCAobW9zYWljKS0+c2lua3BhZHM7CisgIHdoaWxlICh3YWxrKSB7CisgICAgR3N0R0xNaXhlclBhZCAqcGFkID0gd2Fsay0+ZGF0YTsKICAgICAvKiAqSU5ERU5ULU9GRiogKi8KICAgICBnZmxvYXQgdl92ZXJ0aWNlc1tdID0gewogICAgICAgLyogZnJvbnQgZmFjZSAqLwpAQCAtMjk0LDIxICsyOTEsMTUgQEAKICAgICBndWludCBpbl90ZXg7CiAgICAgZ3VpbnQgd2lkdGgsIGhlaWdodDsKIAotICAgIGZyYW1lID0gZ19wdHJfYXJyYXlfaW5kZXggKG1vc2FpYy0+aW5wdXRfZnJhbWVzLCBjb3VudCk7Ci0gICAgaWYgKCFmcmFtZSkgewotICAgICAgR1NUX0RFQlVHICgic2tpcHBpbmcgdGV4dHVyZSwgbnVsbCBmcmFtZSIpOwotICAgICAgY291bnQrKzsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLSAgICBpbl90ZXggPSBmcmFtZS0+dGV4dHVyZTsKLSAgICB3aWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIICgmR1NUX1ZJREVPX0FHR1JFR0FUT1JfUEFEIChmcmFtZS0+cGFkKS0+aW5mbyk7Ci0gICAgaGVpZ2h0ID0KLSAgICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmR1NUX1ZJREVPX0FHR1JFR0FUT1JfUEFEIChmcmFtZS0+cGFkKS0+aW5mbyk7CisgICAgaW5fdGV4ID0gcGFkLT5jdXJyZW50X3RleHR1cmU7CisgICAgd2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCAoJkdTVF9WSURFT19BR0dSRUdBVE9SX1BBRCAocGFkKS0+aW5mbyk7CisgICAgaGVpZ2h0ID0gR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmR1NUX1ZJREVPX0FHR1JFR0FUT1JfUEFEIChwYWQpLT5pbmZvKTsKIAogICAgIGlmICghaW5fdGV4IHx8IHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApIHsKLSAgICAgIEdTVF9ERUJVRyAoInNraXBwaW5nIHRleHR1cmU6JXUgZnJhbWU6JXAgd2lkdGg6JXUgaGVpZ2h0ICV1IiwKLSAgICAgICAgICBpbl90ZXgsIGZyYW1lLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgIEdTVF9ERUJVRyAoInNraXBwaW5nIHRleHR1cmU6JXUgcGFkOiVwIHdpZHRoOiV1IGhlaWdodCAldSIsCisgICAgICAgICAgaW5fdGV4LCBwYWQsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgY291bnQrKzsKKyAgICAgIHdhbGsgPSBnX2xpc3RfbmV4dCAod2Fsayk7CiAgICAgICBjb250aW51ZTsKICAgICB9CiAKQEAgLTMzNSw3ICszMjYsMTAgQEAKICAgICBnbC0+RHJhd0VsZW1lbnRzIChHTF9UUklBTkdMRVMsIDYsIEdMX1VOU0lHTkVEX1NIT1JULCBpbmRpY2VzKTsKIAogICAgICsrY291bnQ7CisKKyAgICB3YWxrID0gZ19saXN0X25leHQgKHdhbGspOwogICB9CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChtb3NhaWMpOwogCiAgIGdsLT5EaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgKGF0dHJfcG9zaXRpb25fbG9jKTsKICAgZ2wtPkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSAoYXR0cl90ZXh0dXJlX2xvYyk7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xtb3NhaWMuaCBiL2V4dC9nbC9nc3RnbG1vc2FpYy5oCmluZGV4IDQ5Yzk5ZTcuLmUwYjM0MGMgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbG1vc2FpYy5oCisrKyBiL2V4dC9nbC9nc3RnbG1vc2FpYy5oCkBAIC00MCw3ICs0MCw2IEBACiAgICAgR3N0R0xNaXhlciBtaXhlcjsKIAogICAgIEdzdEdMU2hhZGVyICpzaGFkZXI7Ci0gICAgR1B0ckFycmF5ICppbnB1dF9mcmFtZXM7CiB9OwogCiBzdHJ1Y3QgX0dzdEdMTW9zYWljQ2xhc3MKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbG92ZXJsYXkuYyBiL2V4dC9nbC9nc3RnbG92ZXJsYXkuYwppbmRleCBjYTA3ZjhiLi5mYTZjNmMxIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xvdmVybGF5LmMKKysrIGIvZXh0L2dsL2dzdGdsb3ZlcmxheS5jCkBAIC0yNzcsOCArMjc3LDcgQEAKIAogICBzd2l0Y2ggKHByb3BfaWQpIHsKICAgICBjYXNlIFBST1BfTE9DQVRJT046Ci0gICAgICBpZiAob3ZlcmxheS0+bG9jYXRpb24gIT0gTlVMTCkKLSAgICAgICAgZ19mcmVlIChvdmVybGF5LT5sb2NhdGlvbik7CisgICAgICBnX2ZyZWUgKG92ZXJsYXktPmxvY2F0aW9uKTsKICAgICAgIG92ZXJsYXktPmxvY2F0aW9uX2hhc19jaGFuZ2VkID0gVFJVRTsKICAgICAgIG92ZXJsYXktPmxvY2F0aW9uID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CiAgICAgICBicmVhazsKQEAgLTY2OSw2ICs2NjgsOCBAQAogc3RhdGljIGdib29sZWFuCiBnc3RfZ2xfb3ZlcmxheV9sb2FkX2pwZWcgKEdzdEdMT3ZlcmxheSAqIG92ZXJsYXksIEZJTEUgKiBmcCkKIHsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICptZW1fYWxsb2NhdG9yOworICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOwogICBHc3RWaWRlb0luZm8gdl9pbmZvOwogICBHc3RWaWRlb0FsaWdubWVudCB2X2FsaWduOwogICBHc3RNYXBJbmZvIG1hcF9pbmZvOwpAQCAtNjk2LDkgKzY5NywxNyBAQAogICB2X2FsaWduLnN0cmlkZV9hbGlnblswXSA9IDMyIC0gMTsKICAgZ3N0X3ZpZGVvX2luZm9fYWxpZ24gKCZ2X2luZm8sICZ2X2FsaWduKTsKIAorICBtZW1fYWxsb2NhdG9yID0KKyAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IgKGdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0CisgICAgICAoR1NUX0dMX0JBU0VfRklMVEVSIChvdmVybGF5KS0+Y29udGV4dCkpOworICBwYXJhbXMgPQorICAgICAgZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoR1NUX0dMX0JBU0VfRklMVEVSIChvdmVybGF5KS0+Y29udGV4dCwKKyAgICAgIE5VTEwsICZ2X2luZm8sIDAsICZ2X2FsaWduLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpOwogICBvdmVybGF5LT5pbWFnZV9tZW1vcnkgPSAoR3N0R0xNZW1vcnkgKikKLSAgICAgIGdzdF9nbF9tZW1vcnlfYWxsb2MgKEdTVF9HTF9CQVNFX0ZJTFRFUiAob3ZlcmxheSktPmNvbnRleHQsCi0gICAgICBOVUxMLCAmdl9pbmZvLCAwLCAmdl9hbGlnbik7CisgICAgICBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKG1lbV9hbGxvY2F0b3IsCisgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgIGdzdF9vYmplY3RfdW5yZWYgKG1lbV9hbGxvY2F0b3IpOwogCiAgIGlmICghZ3N0X21lbW9yeV9tYXAgKChHc3RNZW1vcnkgKikgb3ZlcmxheS0+aW1hZ2VfbWVtb3J5LCAmbWFwX2luZm8sCiAgICAgICAgICAgR1NUX01BUF9XUklURSkpIHsKQEAgLTcyMSw2ICs3MzAsOCBAQAogc3RhdGljIGdib29sZWFuCiBnc3RfZ2xfb3ZlcmxheV9sb2FkX3BuZyAoR3N0R0xPdmVybGF5ICogb3ZlcmxheSwgRklMRSAqIGZwKQogeworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKm1lbV9hbGxvY2F0b3I7CisgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7CiAgIEdzdFZpZGVvSW5mbyB2X2luZm87CiAgIEdzdE1hcEluZm8gbWFwX2luZm87CiAKQEAgLTgwMSw5ICs4MTIsMTcgQEAKICAgb3ZlcmxheS0+aW1hZ2VfaGVpZ2h0ID0gaGVpZ2h0OwogCiAgIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZ2X2luZm8sIEdTVF9WSURFT19GT1JNQVRfUkdCQSwgd2lkdGgsIGhlaWdodCk7CisgIG1lbV9hbGxvY2F0b3IgPQorICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUiAoZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHQKKyAgICAgIChHU1RfR0xfQkFTRV9GSUxURVIgKG92ZXJsYXkpLT5jb250ZXh0KSk7CisgIHBhcmFtcyA9CisgICAgICBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3IChHU1RfR0xfQkFTRV9GSUxURVIgKG92ZXJsYXkpLT5jb250ZXh0LAorICAgICAgTlVMTCwgJnZfaW5mbywgMCwgTlVMTCwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKTsKICAgb3ZlcmxheS0+aW1hZ2VfbWVtb3J5ID0gKEdzdEdMTWVtb3J5ICopCi0gICAgICBnc3RfZ2xfbWVtb3J5X2FsbG9jIChHU1RfR0xfQkFTRV9GSUxURVIgKG92ZXJsYXkpLT5jb250ZXh0LAotICAgICAgTlVMTCwgJnZfaW5mbywgMCwgTlVMTCk7CisgICAgICBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKG1lbV9hbGxvY2F0b3IsCisgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgIGdzdF9vYmplY3RfdW5yZWYgKG1lbV9hbGxvY2F0b3IpOwogCiAgIGlmICghZ3N0X21lbW9yeV9tYXAgKChHc3RNZW1vcnkgKikgb3ZlcmxheS0+aW1hZ2VfbWVtb3J5LCAmbWFwX2luZm8sCiAgICAgICAgICAgR1NUX01BUF9XUklURSkpIHsKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbHNpbmtiaW4uYyBiL2V4dC9nbC9nc3RnbHNpbmtiaW4uYwppbmRleCBjYWI2MTVmLi5jOWM1YTcyIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xzaW5rYmluLmMKKysrIGIvZXh0L2dsL2dzdGdsc2lua2Jpbi5jCkBAIC00Miw2ICs0Miw4IEBACiAgICAgZ3BvaW50ZXIgZ19pZmFjZV9kYXRhKTsKIHN0YXRpYyB2b2lkIGdzdF9nbF9zaW5rX2Jpbl9uYXZpZ2F0aW9uX2ludGVyZmFjZV9pbml0IChncG9pbnRlciBnX2lmYWNlLAogICAgIGdwb2ludGVyIGdfaWZhY2VfZGF0YSk7CitzdGF0aWMgdm9pZCBnc3RfZ2xfc2lua19iaW5fY29sb3JfYmFsYW5jZV9pbml0IChncG9pbnRlciBnX2lmYWNlLAorICAgIGdwb2ludGVyIGdfaWZhY2VfZGF0YSk7CiAKICNkZWZpbmUgREVGQVVMVF9TWU5DICAgICAgICAgICAgICAgIFRSVUUKICNkZWZpbmUgREVGQVVMVF9NQVhfTEFURU5FU1MgICAgICAgIC0xCkBAIC01NCw2ICs1NiwxMiBAQAogI2RlZmluZSBERUZBVUxUX1RIUk9UVExFX1RJTUUgICAgICAgMAogI2RlZmluZSBERUZBVUxUX01BWF9CSVRSQVRFICAgICAgICAgMAogCisvKiBHc3RHTENvbG9yQmFsYW5jZSBwcm9wZXJ0aWVzICovCisjZGVmaW5lIERFRkFVTFRfUFJPUF9DT05UUkFTVCAgICAgICAxLjAKKyNkZWZpbmUgREVGQVVMVF9QUk9QX0JSSUdIVE5FU1MJICAgIDAuMAorI2RlZmluZSBERUZBVUxUX1BST1BfSFVFICAgICAgICAgICAgMC4wCisjZGVmaW5lIERFRkFVTFRfUFJPUF9TQVRVUkFUSU9OCSAgICAxLjAKKwogZW51bQogewogICBQUk9QXzAsCkBAIC03MCw2ICs3OCwxMCBAQAogICBQUk9QX1JFTkRFUl9ERUxBWSwKICAgUFJPUF9USFJPVFRMRV9USU1FLAogICBQUk9QX01BWF9CSVRSQVRFLAorICBQUk9QX0NPTlRSQVNULAorICBQUk9QX0JSSUdIVE5FU1MsCisgIFBST1BfSFVFLAorICBQUk9QX1NBVFVSQVRJT04sCiB9OwogCiBlbnVtCkBAIC04Nyw2ICs5OSw4IEBACiAgICAgICAgIGdzdF9nbF9zaW5rX2Jpbl92aWRlb19vdmVybGF5X2luaXQpOwogICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRSAoR1NUX1RZUEVfTkFWSUdBVElPTiwKICAgICAgICAgZ3N0X2dsX3NpbmtfYmluX25hdmlnYXRpb25faW50ZXJmYWNlX2luaXQpOworICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRSAoR1NUX1RZUEVfQ09MT1JfQkFMQU5DRSwKKyAgICAgICAgZ3N0X2dsX3NpbmtfYmluX2NvbG9yX2JhbGFuY2VfaW5pdCkKICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X2RlYnVnX2dsX3NpbmtfYmluLCAiZ2xpbWFnZXNpbmsiLCAwLAogICAgICAgICAiT3BlbkdMIFZpZGVvIFNpbmsgQmluIikpOwogCkBAIC0xNjYsNiArMTgwLDIzIEBACiAgICAgICAgICAgR19NQVhVSU5UNjQsIERFRkFVTFRfTUFYX0JJVFJBVEUsCiAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CiAKKyAgLyogY29sb3JiYWxhbmNlICovCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQ09OVFJBU1QsCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiY29udHJhc3QiLCAiQ29udHJhc3QiLCAiY29udHJhc3QiLAorICAgICAgICAgIDAuMCwgMi4wLCBERUZBVUxUX1BST1BfQ09OVFJBU1QsCisgICAgICAgICAgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0JSSUdIVE5FU1MsCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiYnJpZ2h0bmVzcyIsICJCcmlnaHRuZXNzIiwgImJyaWdodG5lc3MiLCAtMS4wLCAxLjAsCisgICAgICAgICAgREVGQVVMVF9QUk9QX0JSSUdIVE5FU1MsCisgICAgICAgICAgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0hVRSwKKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJodWUiLCAiSHVlIiwgImh1ZSIsIC0xLjAsIDEuMCwgREVGQVVMVF9QUk9QX0hVRSwKKyAgICAgICAgICBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0FUVVJBVElPTiwKKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJzYXR1cmF0aW9uIiwgIlNhdHVyYXRpb24iLCAic2F0dXJhdGlvbiIsIDAuMCwgMi4wLAorICAgICAgICAgIERFRkFVTFRfUFJPUF9TQVRVUkFUSU9OLAorICAgICAgICAgIEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKwogICAvKioKICAgICogR3N0R0xTaW5rQmluOjpjcmVhdGUtZWxlbWVudDoKICAgICogQG9iamVjdDogdGhlICNHc3RHTFNpbmtCaW4KQEAgLTE5OCwxMSArMjI5LDE0IEBACiAKICAgc2VsZi0+dXBsb2FkID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZ2x1cGxvYWQiLCBOVUxMKTsKICAgc2VsZi0+Y29udmVydCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImdsY29sb3Jjb252ZXJ0IiwgTlVMTCk7CisgIHNlbGYtPmJhbGFuY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJnbGNvbG9yYmFsYW5jZSIsIE5VTEwpOwogCiAgIHJlcyAmPSBnc3RfYmluX2FkZCAoR1NUX0JJTiAoc2VsZiksIHNlbGYtPnVwbG9hZCk7CiAgIHJlcyAmPSBnc3RfYmluX2FkZCAoR1NUX0JJTiAoc2VsZiksIHNlbGYtPmNvbnZlcnQpOworICByZXMgJj0gZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKHNlbGYpLCBzZWxmLT5iYWxhbmNlKTsKIAogICByZXMgJj0gZ3N0X2VsZW1lbnRfbGlua19wYWRzIChzZWxmLT51cGxvYWQsICJzcmMiLCBzZWxmLT5jb252ZXJ0LCAic2luayIpOworICByZXMgJj0gZ3N0X2VsZW1lbnRfbGlua19wYWRzIChzZWxmLT5jb252ZXJ0LCAic3JjIiwgc2VsZi0+YmFsYW5jZSwgInNpbmsiKTsKIAogICBwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoc2VsZi0+dXBsb2FkLCAic2luayIpOwogICBpZiAoIXBhZCkgewpAQCAtMjE0LDYgKzI0OCwxNSBAQAogICAgIGdzdF9vYmplY3RfdW5yZWYgKHBhZCk7CiAgIH0KIAorICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKHNlbGYtPmJhbGFuY2UpLAorICAgICAgR1NUX09CSkVDVCAoc2VsZiksICJjb250cmFzdCIpOworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKHNlbGYtPmJhbGFuY2UpLAorICAgICAgR1NUX09CSkVDVCAoc2VsZiksICJicmlnaHRuZXNzIik7CisgIGdzdF9nbF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZ19wcm94eSAoR1NUX09CSkVDVCAoc2VsZi0+YmFsYW5jZSksCisgICAgICBHU1RfT0JKRUNUIChzZWxmKSwgImh1ZSIpOworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKHNlbGYtPmJhbGFuY2UpLAorICAgICAgR1NUX09CSkVDVCAoc2VsZiksICJzYXR1cmF0aW9uIik7CisKICAgaWYgKCFyZXMpIHsKICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNlbGYsICJGYWlsZWQgdG8gYWRkL2Nvbm5lY3QgdGhlIG5lY2Vzc2FyeSBtYWNoaW5lcnkiKTsKICAgfQpAQCAtMjI3LDcgKzI3MCw3IEBACiAgIGdzdF9vYmplY3Rfc2V0X25hbWUgKEdTVF9PQkpFQ1QgKHNlbGYtPnNpbmspLCAic2luayIpOwogICByZXMgJj0gZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKHNlbGYpLCBzZWxmLT5zaW5rKTsKIAotICByZXMgJj0gZ3N0X2VsZW1lbnRfbGlua19wYWRzIChzZWxmLT5jb252ZXJ0LCAic3JjIiwgc2VsZi0+c2luaywgInNpbmsiKTsKKyAgcmVzICY9IGdzdF9lbGVtZW50X2xpbmtfcGFkcyAoc2VsZi0+YmFsYW5jZSwgInNyYyIsIHNlbGYtPnNpbmssICJzaW5rIik7CiAKICAgaWYgKCFyZXMpCiAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkZhaWxlZCB0byBsaW5rIHNpbmsgZWxlbWVudCBpbnRvIHRoZSBwaXBlbGluZSIpOwpAQCAtMjgxLDYgKzMyNCwxMyBAQAogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgUFJPUF9DT05UUkFTVDoKKyAgICBjYXNlIFBST1BfQlJJR0hUTkVTUzoKKyAgICBjYXNlIFBST1BfSFVFOgorICAgIGNhc2UgUFJPUF9TQVRVUkFUSU9OOgorICAgICAgaWYgKHNlbGYtPmJhbGFuY2UpCisgICAgICAgIGdfb2JqZWN0X3NldF9wcm9wZXJ0eSAoR19PQkpFQ1QgKHNlbGYtPmJhbGFuY2UpLCBwc3BlYy0+bmFtZSwgdmFsdWUpOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIGlmIChzZWxmLT5zaW5rKQogICAgICAgICBnX29iamVjdF9zZXRfcHJvcGVydHkgKEdfT0JKRUNUIChzZWxmLT5zaW5rKSwgcHNwZWMtPm5hbWUsIHZhbHVlKTsKQEAgLTI5OCw2ICszNDgsMTMgQEAKICAgICBjYXNlIFBST1BfU0lOSzoKICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCAodmFsdWUsIHNlbGYtPnNpbmspOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NPTlRSQVNUOgorICAgIGNhc2UgUFJPUF9CUklHSFRORVNTOgorICAgIGNhc2UgUFJPUF9IVUU6CisgICAgY2FzZSBQUk9QX1NBVFVSQVRJT046CisgICAgICBpZiAoc2VsZi0+YmFsYW5jZSkKKyAgICAgICAgZ19vYmplY3RfZ2V0X3Byb3BlcnR5IChHX09CSkVDVCAoc2VsZi0+YmFsYW5jZSksIHBzcGVjLT5uYW1lLCB2YWx1ZSk7CisgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgaWYgKHNlbGYtPnNpbmspCiAgICAgICAgIGdfb2JqZWN0X2dldF9wcm9wZXJ0eSAoR19PQkpFQ1QgKHNlbGYtPnNpbmspLCBwc3BlYy0+bmFtZSwgdmFsdWUpOwpAQCAtNDU0LDMgKzUxMSw4OSBAQAogICBpZmFjZS0+c2V0X3JlbmRlcl9yZWN0YW5nbGUgPSBnc3RfZ2xfc2lua19iaW5fb3ZlcmxheV9zZXRfcmVuZGVyX3JlY3RhbmdsZTsKICAgaWZhY2UtPnNldF93aW5kb3dfaGFuZGxlID0gZ3N0X2dsX3NpbmtfYmluX292ZXJsYXlfc2V0X3dpbmRvd19oYW5kbGU7CiB9CisKK3N0YXRpYyBjb25zdCBHTGlzdCAqCitnc3RfZ2xfc2lua19iaW5fY29sb3JfYmFsYW5jZV9saXN0X2NoYW5uZWxzIChHc3RDb2xvckJhbGFuY2UgKiBiYWxhbmNlKQoreworICBHc3RHTFNpbmtCaW4gKnNlbGYgPSBHU1RfR0xfU0lOS19CSU4gKGJhbGFuY2UpOworICBHc3RDb2xvckJhbGFuY2UgKmJhbGFuY2VfZWxlbWVudCA9IE5VTEw7CisgIGNvbnN0IEdMaXN0ICpsaXN0ID0gTlVMTDsKKworICBiYWxhbmNlX2VsZW1lbnQgPQorICAgICAgR1NUX0NPTE9SX0JBTEFOQ0UgKGdzdF9iaW5fZ2V0X2J5X2ludGVyZmFjZSAoR1NUX0JJTiAoc2VsZiksCisgICAgICAgICAgR1NUX1RZUEVfQ09MT1JfQkFMQU5DRSkpOworCisgIGlmIChiYWxhbmNlX2VsZW1lbnQpIHsKKyAgICBsaXN0ID0gZ3N0X2NvbG9yX2JhbGFuY2VfbGlzdF9jaGFubmVscyAoYmFsYW5jZV9lbGVtZW50KTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChiYWxhbmNlX2VsZW1lbnQpOworICB9CisKKyAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfc2lua19iaW5fY29sb3JfYmFsYW5jZV9zZXRfdmFsdWUgKEdzdENvbG9yQmFsYW5jZSAqIGJhbGFuY2UsCisgICAgR3N0Q29sb3JCYWxhbmNlQ2hhbm5lbCAqIGNoYW5uZWwsIGdpbnQgdmFsdWUpCit7CisgIEdzdEdMU2lua0JpbiAqc2VsZiA9IEdTVF9HTF9TSU5LX0JJTiAoYmFsYW5jZSk7CisgIEdzdENvbG9yQmFsYW5jZSAqYmFsYW5jZV9lbGVtZW50ID0gTlVMTDsKKworICBiYWxhbmNlX2VsZW1lbnQgPQorICAgICAgR1NUX0NPTE9SX0JBTEFOQ0UgKGdzdF9iaW5fZ2V0X2J5X2ludGVyZmFjZSAoR1NUX0JJTiAoc2VsZiksCisgICAgICAgICAgR1NUX1RZUEVfQ09MT1JfQkFMQU5DRSkpOworCisgIGlmIChiYWxhbmNlX2VsZW1lbnQpIHsKKyAgICBnc3RfY29sb3JfYmFsYW5jZV9zZXRfdmFsdWUgKGJhbGFuY2VfZWxlbWVudCwgY2hhbm5lbCwgdmFsdWUpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKGJhbGFuY2VfZWxlbWVudCk7CisgIH0KK30KKworc3RhdGljIGdpbnQKK2dzdF9nbF9zaW5rX2Jpbl9jb2xvcl9iYWxhbmNlX2dldF92YWx1ZSAoR3N0Q29sb3JCYWxhbmNlICogYmFsYW5jZSwKKyAgICBHc3RDb2xvckJhbGFuY2VDaGFubmVsICogY2hhbm5lbCkKK3sKKyAgR3N0R0xTaW5rQmluICpzZWxmID0gR1NUX0dMX1NJTktfQklOIChiYWxhbmNlKTsKKyAgR3N0Q29sb3JCYWxhbmNlICpiYWxhbmNlX2VsZW1lbnQgPSBOVUxMOworICBnaW50IHZhbCA9IDA7CisKKyAgYmFsYW5jZV9lbGVtZW50ID0KKyAgICAgIEdTVF9DT0xPUl9CQUxBTkNFIChnc3RfYmluX2dldF9ieV9pbnRlcmZhY2UgKEdTVF9CSU4gKHNlbGYpLAorICAgICAgICAgIEdTVF9UWVBFX0NPTE9SX0JBTEFOQ0UpKTsKKworICBpZiAoYmFsYW5jZV9lbGVtZW50KSB7CisgICAgdmFsID0gZ3N0X2NvbG9yX2JhbGFuY2VfZ2V0X3ZhbHVlIChiYWxhbmNlX2VsZW1lbnQsIGNoYW5uZWwpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKGJhbGFuY2VfZWxlbWVudCk7CisgIH0KKworICByZXR1cm4gdmFsOworfQorCitzdGF0aWMgR3N0Q29sb3JCYWxhbmNlVHlwZQorZ3N0X2dsX3NpbmtfYmluX2NvbG9yX2JhbGFuY2VfZ2V0X2JhbGFuY2VfdHlwZSAoR3N0Q29sb3JCYWxhbmNlICogYmFsYW5jZSkKK3sKKyAgR3N0R0xTaW5rQmluICpzZWxmID0gR1NUX0dMX1NJTktfQklOIChiYWxhbmNlKTsKKyAgR3N0Q29sb3JCYWxhbmNlICpiYWxhbmNlX2VsZW1lbnQgPSBOVUxMOworICBHc3RDb2xvckJhbGFuY2VUeXBlIHR5cGUgPSAwOworCisgIGJhbGFuY2VfZWxlbWVudCA9CisgICAgICBHU1RfQ09MT1JfQkFMQU5DRSAoZ3N0X2Jpbl9nZXRfYnlfaW50ZXJmYWNlIChHU1RfQklOIChzZWxmKSwKKyAgICAgICAgICBHU1RfVFlQRV9DT0xPUl9CQUxBTkNFKSk7CisKKyAgaWYgKGJhbGFuY2VfZWxlbWVudCkgeworICAgIHR5cGUgPSBnc3RfY29sb3JfYmFsYW5jZV9nZXRfYmFsYW5jZV90eXBlIChiYWxhbmNlX2VsZW1lbnQpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKGJhbGFuY2VfZWxlbWVudCk7CisgIH0KKworICByZXR1cm4gdHlwZTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9zaW5rX2Jpbl9jb2xvcl9iYWxhbmNlX2luaXQgKGdwb2ludGVyIGdfaWZhY2UsIGdwb2ludGVyIGdfaWZhY2VfZGF0YSkKK3sKKyAgR3N0Q29sb3JCYWxhbmNlSW50ZXJmYWNlICppZmFjZSA9IChHc3RDb2xvckJhbGFuY2VJbnRlcmZhY2UgKikgZ19pZmFjZTsKKworICBpZmFjZS0+bGlzdF9jaGFubmVscyA9IGdzdF9nbF9zaW5rX2Jpbl9jb2xvcl9iYWxhbmNlX2xpc3RfY2hhbm5lbHM7CisgIGlmYWNlLT5zZXRfdmFsdWUgPSBnc3RfZ2xfc2lua19iaW5fY29sb3JfYmFsYW5jZV9zZXRfdmFsdWU7CisgIGlmYWNlLT5nZXRfdmFsdWUgPSBnc3RfZ2xfc2lua19iaW5fY29sb3JfYmFsYW5jZV9nZXRfdmFsdWU7CisgIGlmYWNlLT5nZXRfYmFsYW5jZV90eXBlID0gZ3N0X2dsX3NpbmtfYmluX2NvbG9yX2JhbGFuY2VfZ2V0X2JhbGFuY2VfdHlwZTsKK30KZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbHNpbmtiaW4uaCBiL2V4dC9nbC9nc3RnbHNpbmtiaW4uaAppbmRleCAxZGJiNDBkLi5mNDUyOWQwIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xzaW5rYmluLmgKKysrIGIvZXh0L2dsL2dzdGdsc2lua2Jpbi5oCkBAIC01Niw2ICs1Niw3IEBACiAKICAgR3N0RWxlbWVudCAqdXBsb2FkOwogICBHc3RFbGVtZW50ICpjb252ZXJ0OworICBHc3RFbGVtZW50ICpiYWxhbmNlOwogICBHc3RFbGVtZW50ICpzaW5rOwogfTsKIApkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsc3RlcmVvbWl4LmMgYi9leHQvZ2wvZ3N0Z2xzdGVyZW9taXguYwppbmRleCBiODgwZDA2Li5lZDYwNGIyIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xzdGVyZW9taXguYworKysgYi9leHQvZ2wvZ3N0Z2xzdGVyZW9taXguYwpAQCAtMzAsMTUgKzMwLDI3IEBACiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfZ2xfc3RlcmVvX21peF9kZWJ1ZwogR1NUX0RFQlVHX0NBVEVHT1JZIChnc3RfZ2xfc3RlcmVvX21peF9kZWJ1Zyk7CiAKK0dfREVGSU5FX1RZUEUgKEdzdEdMU3RlcmVvTWl4UGFkLCBnc3RfZ2xfc3RlcmVvX21peF9wYWQsIEdTVF9UWVBFX0dMX01JWEVSX1BBRCk7CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfc3RlcmVvX21peF9wYWRfY2xhc3NfaW5pdCAoR3N0R0xTdGVyZW9NaXhQYWRDbGFzcyAqIGtsYXNzKQoreworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX3N0ZXJlb19taXhfcGFkX2luaXQgKEdzdEdMU3RlcmVvTWl4UGFkICogcGFkKQoreworfQorCiAjZGVmaW5lIGdzdF9nbF9zdGVyZW9fbWl4X3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKIEdfREVGSU5FX1RZUEUgKEdzdEdMU3RlcmVvTWl4LCBnc3RfZ2xfc3RlcmVvX21peCwgR1NUX1RZUEVfR0xfTUlYRVIpOwogCi1zdGF0aWMgR3N0Q2FwcyAqX3VwZGF0ZV9jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnLCBHc3RDYXBzICogY2Fwcyk7CitzdGF0aWMgR3N0Q2FwcyAqX3VwZGF0ZV9jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnLCBHc3RDYXBzICogY2FwcywKKyAgICBHc3RDYXBzICogZmlsdGVyKTsKIHN0YXRpYyBnYm9vbGVhbiBfbmVnb3RpYXRlZF9jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2aWRlb2FnZ3JlZ2F0b3IsCiAgICAgR3N0Q2FwcyAqIGNhcHMpOwogZ2Jvb2xlYW4gZ3N0X2dsX3N0ZXJlb19taXhfbWFrZV9vdXRwdXQgKEdzdEdMU3RlcmVvTWl4ICogbWl4KTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfc3RlcmVvX21peF9wcm9jZXNzX2ZyYW1lcyAoR3N0R0xTdGVyZW9NaXggKiBtaXhlciwKLSAgICBHUHRyQXJyYXkgKiBpbl9mcmFtZXMpOworc3RhdGljIGdib29sZWFuIGdzdF9nbF9zdGVyZW9fbWl4X3Byb2Nlc3NfZnJhbWVzIChHc3RHTFN0ZXJlb01peCAqIG1peGVyKTsKIAogI2RlZmluZSBERUZBVUxUX0RPV05NSVggR1NUX0dMX1NURVJFT19ET1dOTUlYX0FOQUdMWVBIX0dSRUVOX01BR0VOVEFfRFVCT0lTCiAKQEAgLTU4LDkgKzcwLDEzIEBACiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc3JjX2ZhY3RvcnkgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCiAgICAgR1NUX1BBRF9TUkMsCiAgICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKLSAgICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwKLSAgICAgICAgICAgICJSR0JBIikgIjsgIgorICAgIEdTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3KCIgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZICIpLCAiCisgICAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSBSR0JBLCAiCisgICAgICAgICJ3aWR0aCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgICAiaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiCisgICAgICAgICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIiwiCisgICAgICAgICJ0ZXh0dXJlLXRhcmdldCA9IChzdHJpbmcpIDJEIgorICAgICAgICAiOyAiCiAgICAgICAgIEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUwogICAgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRVRBX0dTVF9WSURFT19HTF9URVhUVVJFX1VQTE9BRF9NRVRBLAogICAgICAgICAgICAgIlJHQkEiKQpAQCAtNzAsOSArODYsMTMgQEAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rX2ZhY3RvcnkgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmtfJXUiLAogICAgIEdTVF9QQURfU0lOSywKICAgICBHU1RfUEFEX1JFUVVFU1QsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKLSAgICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwKLSAgICAgICAgICAgICJSR0JBIikgIjsgIgorICAgIEdTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3KCIgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZICIpLCAiCisgICAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSBSR0JBLCAiCisgICAgICAgICJ3aWR0aCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgICAiaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiCisgICAgICAgICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIiwiCisgICAgICAgICJ0ZXh0dXJlLXRhcmdldCA9IChzdHJpbmcpIDJEIgorICAgICAgICAiOyAiCiAgICAgICAgIEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUwogICAgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRVRBX0dTVF9WSURFT19HTF9URVhUVVJFX1VQTE9BRF9NRVRBLAogICAgICAgICAgICAgIlJHQkEiKQpAQCAtMTM1LDYgKzE1NSw3IEBACiAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCiAgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzaW5rX2ZhY3RvcnkpKTsKIAorICBhZ2dfY2xhc3MtPnNpbmtwYWRzX3R5cGUgPSBHU1RfVFlQRV9HTF9TVEVSRU9fTUlYX1BBRDsKICAgYWdnX2NsYXNzLT5zdG9wID0gZ3N0X2dsX3N0ZXJlb19taXhfc3RvcDsKICAgYWdnX2NsYXNzLT5zdGFydCA9IGdzdF9nbF9zdGVyZW9fbWl4X3N0YXJ0OwogICBhZ2dfY2xhc3MtPnNyY19xdWVyeSA9IGdzdF9nbF9zdGVyZW9fbWl4X3NyY19xdWVyeTsKQEAgLTE0NSw3ICsxNjYsNiBAQAogICB2aWRlb2FnZ3JlZ2F0b3JfY2xhc3MtPmdldF9vdXRwdXRfYnVmZmVyID0KICAgICAgIGdzdF9nbF9zdGVyZW9fbWl4X2dldF9vdXRwdXRfYnVmZmVyOwogICB2aWRlb2FnZ3JlZ2F0b3JfY2xhc3MtPmZpbmRfYmVzdF9mb3JtYXQgPSBnc3RfZ2xfc3RlcmVvX21peF9maW5kX2Jlc3RfZm9ybWF0OwotICB2aWRlb2FnZ3JlZ2F0b3JfY2xhc3MtPnByZXNlcnZlX3VwZGF0ZV9jYXBzX3Jlc3VsdCA9IFRSVUU7CiAKICAgYmFzZV9taXhfY2xhc3MtPnN1cHBvcnRlZF9nbF9hcGkgPSBHU1RfR0xfQVBJX09QRU5HTCB8IEdTVF9HTF9BUElfT1BFTkdMMzsKIH0KQEAgLTI0MiwxMCArMjYyLDggQEAKIGdib29sZWFuCiBnc3RfZ2xfc3RlcmVvX21peF9tYWtlX291dHB1dCAoR3N0R0xTdGVyZW9NaXggKiBtaXgpCiB7Ci0gIGd1aW50IGk7CiAgIEdMaXN0ICp3YWxrOwogICBnYm9vbGVhbiByZXMgPSBGQUxTRTsKLSAgZ3VpbnQgYXJyYXlfaW5kZXggPSAwOwogICBHc3RFbGVtZW50ICplbGVtZW50ID0gR1NUX0VMRU1FTlQgKG1peCk7CiAgIGdib29sZWFuIG1pc3NpbmdfYnVmZmVyID0gRkFMU0U7CiAKQEAgLTI1MywzMyArMjcxLDIzIEBACiAKICAgR1NUX09CSkVDVF9MT0NLIChtaXgpOwogICB3YWxrID0gZWxlbWVudC0+c2lua3BhZHM7Ci0KLSAgaSA9IG1peC0+ZnJhbWVzLT5sZW47Ci0gIGdfcHRyX2FycmF5X3NldF9zaXplIChtaXgtPmZyYW1lcywgZWxlbWVudC0+bnVtc2lua3BhZHMpOwotICBmb3IgKDsgaSA8IGVsZW1lbnQtPm51bXNpbmtwYWRzOyBpKyspCi0gICAgbWl4LT5mcmFtZXMtPnBkYXRhW2ldID0gZ19zbGljZV9uZXcwIChHc3RHTFN0ZXJlb01peEZyYW1lRGF0YSk7CiAgIHdoaWxlICh3YWxrKSB7Ci0gICAgR3N0R0xNaXhlclBhZCAqcGFkID0gR1NUX0dMX01JWEVSX1BBRCAod2Fsay0+ZGF0YSk7CiAgICAgR3N0VmlkZW9BZ2dyZWdhdG9yUGFkICp2YWdncGFkID0gd2Fsay0+ZGF0YTsKLSAgICBHc3RHTFN0ZXJlb01peEZyYW1lRGF0YSAqZnJhbWU7CisgICAgR3N0R0xTdGVyZW9NaXhQYWQgKnBhZCA9IHdhbGstPmRhdGE7CiAKICAgICBHU1RfTE9HX09CSkVDVCAobWl4LCAiQ2hlY2tpbmcgcGFkICUiIEdTVF9QVFJfRk9STUFULCB2YWdncGFkKTsKIAotICAgIGZyYW1lID0gZ19wdHJfYXJyYXlfaW5kZXggKG1peC0+ZnJhbWVzLCBhcnJheV9pbmRleCk7Ci0gICAgZnJhbWUtPmJhc2UucGFkID0gcGFkOwotICAgIGZyYW1lLT5idWYgPSBOVUxMOwotCi0gICAgd2FsayA9IGdfbGlzdF9uZXh0ICh3YWxrKTsKLQogICAgIGlmICh2YWdncGFkLT5idWZmZXIgIT0gTlVMTCkgewotICAgICAgZnJhbWUtPmJ1ZiA9IHZhZ2dwYWQtPmJ1ZmZlcjsKKyAgICAgIHBhZC0+Y3VycmVudF9idWZmZXIgPSB2YWdncGFkLT5idWZmZXI7CiAKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgIkdvdCBidWZmZXIgJSIgR1NUX1BUUl9GT1JNQVQsIGZyYW1lLT5idWYpOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAiR290IGJ1ZmZlciAlIiBHU1RfUFRSX0ZPUk1BVCwKKyAgICAgICAgICBwYWQtPmN1cnJlbnRfYnVmZmVyKTsKICAgICB9IGVsc2UgewogICAgICAgR1NUX0xPR19PQkpFQ1QgKG1peCwgIk5vIGJ1ZmZlciBvbiBwYWQgJSIgR1NUX1BUUl9GT1JNQVQsIHZhZ2dwYWQpOworICAgICAgcGFkLT5jdXJyZW50X2J1ZmZlciA9IE5VTEw7CiAgICAgICBtaXNzaW5nX2J1ZmZlciA9IFRSVUU7CiAgICAgfQotICAgICsrYXJyYXlfaW5kZXg7CisgICAgd2FsayA9IGdfbGlzdF9uZXh0ICh3YWxrKTsKICAgfQogICBpZiAobWlzc2luZ19idWZmZXIpIHsKICAgICAvKiBXZSdyZSBzdGlsbCB3YWl0aW5nIGZvciBhIGJ1ZmZlciB0byB0dXJuIHVwIG9uIGF0IGxlYXN0IG9uZSBpbnB1dCAqLwpAQCAtMjg5LDcgKzI5Nyw3IEBACiAgIH0KIAogICAvKiBDb3B5IEdMIG1lbW9yeSBmcm9tIGVhY2ggaW5wdXQgZnJhbWUgdG8gdGhlIG91dHB1dCAqLwotICBpZiAoIWdzdF9nbF9zdGVyZW9fbWl4X3Byb2Nlc3NfZnJhbWVzIChtaXgsIG1peC0+ZnJhbWVzKSkgeworICBpZiAoIWdzdF9nbF9zdGVyZW9fbWl4X3Byb2Nlc3NfZnJhbWVzIChtaXgpKSB7CiAgICAgR1NUX0xPR19PQkpFQ1QgKG1peCwgIkZhaWxlZCB0byBwcm9jZXNzIGZyYW1lcyB0byBvdXRwdXQiKTsKICAgICBnb3RvIG91dDsKICAgfQpAQCAtMzYzLDQxICszNzEsMTggQEAKICAgfQogfQogCi1zdGF0aWMgdm9pZAotX2ZyZWVfZ2xtaXhlcl9mcmFtZV9kYXRhIChHc3RHTFN0ZXJlb01peEZyYW1lRGF0YSAqIGZyYW1lKQotewotICBpZiAoZnJhbWUgPT0gTlVMTCkKLSAgICByZXR1cm47Ci0gIGlmIChmcmFtZS0+YnVmKQotICAgIGdzdF9idWZmZXJfdW5yZWYgKGZyYW1lLT5idWYpOwotICBnX3NsaWNlX2ZyZWUxIChzaXplb2YgKEdzdEdMU3RlcmVvTWl4RnJhbWVEYXRhKSwgZnJhbWUpOwotfQotCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9nbF9zdGVyZW9fbWl4X3N0YXJ0IChHc3RBZ2dyZWdhdG9yICogYWdnKQogewotICBndWludCBpOwogICBHc3RHTFN0ZXJlb01peCAqbWl4ID0gR1NUX0dMX1NURVJFT19NSVggKGFnZyk7Ci0gIEdzdEVsZW1lbnQgKmVsZW1lbnQgPSBHU1RfRUxFTUVOVCAoYWdnKTsKIAogICBpZiAoIUdTVF9BR0dSRUdBVE9SX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zdGFydCAoYWdnKSkKICAgICByZXR1cm4gRkFMU0U7CiAKICAgR1NUX09CSkVDVF9MT0NLIChtaXgpOwotICBtaXgtPmFycmF5X2J1ZmZlcnMgPSBnX3B0cl9hcnJheV9uZXdfZnVsbCAoZWxlbWVudC0+bnVtc2lua3BhZHMsCi0gICAgICAoR0Rlc3Ryb3lOb3RpZnkpIF9mcmVlX2dsbWl4ZXJfZnJhbWVfZGF0YSk7Ci0gIG1peC0+ZnJhbWVzID0gZ19wdHJfYXJyYXlfbmV3X2Z1bGwgKGVsZW1lbnQtPm51bXNpbmtwYWRzLCBOVUxMKTsKLQotICBnX3B0cl9hcnJheV9zZXRfc2l6ZSAobWl4LT5hcnJheV9idWZmZXJzLCBlbGVtZW50LT5udW1zaW5rcGFkcyk7Ci0gIGdfcHRyX2FycmF5X3NldF9zaXplIChtaXgtPmZyYW1lcywgZWxlbWVudC0+bnVtc2lua3BhZHMpOwotCi0gIGZvciAoaSA9IDA7IGkgPCBlbGVtZW50LT5udW1zaW5rcGFkczsgaSsrKQotICAgIG1peC0+ZnJhbWVzLT5wZGF0YVtpXSA9IGdfc2xpY2VfbmV3MCAoR3N0R0xTdGVyZW9NaXhGcmFtZURhdGEpOwotCiAgIG1peC0+dmlld2NvbnZlcnQgPSBnc3RfZ2xfdmlld19jb252ZXJ0X25ldyAoKTsKICAgZ19vYmplY3Rfc2V0IChHX09CSkVDVCAobWl4LT52aWV3Y29udmVydCksICJkb3dubWl4LW1vZGUiLAogICAgICAgbWl4LT5kb3dubWl4X21vZGUsIE5VTEwpOwotCiAgIEdTVF9PQkpFQ1RfVU5MT0NLIChtaXgpOwogCiAgIHJldHVybiBUUlVFOwpAQCAtNDExLDEzICszOTYsNiBAQAogICBpZiAoIUdTVF9BR0dSRUdBVE9SX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zdG9wIChhZ2cpKQogICAgIHJldHVybiBGQUxTRTsKIAotICBHU1RfT0JKRUNUX0xPQ0sgKGFnZyk7Ci0gIGdfcHRyX2FycmF5X2ZyZWUgKG1peC0+ZnJhbWVzLCBUUlVFKTsKLSAgbWl4LT5mcmFtZXMgPSBOVUxMOwotICBnX3B0cl9hcnJheV9mcmVlIChtaXgtPmFycmF5X2J1ZmZlcnMsIFRSVUUpOwotICBtaXgtPmFycmF5X2J1ZmZlcnMgPSBOVUxMOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoYWdnKTsKLQogICBpZiAobWl4LT52aWV3Y29udmVydCkgewogICAgIGdzdF9vYmplY3RfdW5yZWYgKG1peC0+dmlld2NvbnZlcnQpOwogICAgIG1peC0+dmlld2NvbnZlcnQgPSBOVUxMOwpAQCAtNDYzLDcgKzQ0MSw3IEBACiAKIC8qIFJldHVybiB0aGUgcG9zc2libGUgb3V0cHV0IGNhcHMgd2UgZGVjaWRlZCBpbiBmaW5kX2Jlc3RfZm9ybWF0KCkgKi8KIHN0YXRpYyBHc3RDYXBzICoKLV91cGRhdGVfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywgR3N0Q2FwcyAqIGNhcHMpCitfdXBkYXRlX2NhcHMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2csIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKQogewogICBHc3RHTFN0ZXJlb01peCAqbWl4ID0gR1NUX0dMX1NURVJFT19NSVggKHZhZ2cpOwogCkBAIC00NzUsNiArNDUzLDcgQEAKIF9uZWdvdGlhdGVkX2NhcHMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2csIEdzdENhcHMgKiBjYXBzKQogewogICBHc3RHTFN0ZXJlb01peCAqbWl4ID0gR1NUX0dMX1NURVJFT19NSVggKHZhZ2cpOworICBHc3RDYXBzICppbl9jYXBzOwogCiAgIEdTVF9MT0dfT0JKRUNUIChtaXgsICJDb25maWd1cmVkIG91dHB1dCBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKIApAQCAtNDkwLDQxICs0NjksNDcgQEAKICAgLyogV2UgY2FuIGNvbmZpZ3VyZSB0aGUgdmlld19jb252ZXJ0ZXIgbm93ICovCiAgIGdzdF9nbF92aWV3X2NvbnZlcnRfc2V0X2NvbnRleHQgKG1peC0+dmlld2NvbnZlcnQsCiAgICAgICBHU1RfR0xfQkFTRV9NSVhFUiAobWl4KS0+Y29udGV4dCk7Ci0gIGdzdF9nbF92aWV3X2NvbnZlcnRfc2V0X2Zvcm1hdCAobWl4LT52aWV3Y29udmVydCwgJm1peC0+bWl4X2luZm8sCi0gICAgICAmbWl4LT5vdXRfaW5mbyk7CisKKyAgaW5fY2FwcyA9IGdzdF92aWRlb19pbmZvX3RvX2NhcHMgKCZtaXgtPm1peF9pbmZvKTsKKyAgZ3N0X2NhcHNfc2V0X2ZlYXR1cmVzIChpbl9jYXBzLCAwLAorICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfZnJvbV9zdHJpbmcgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSkpOworICBnc3RfY2Fwc19zZXRfc2ltcGxlIChpbl9jYXBzLCAidGV4dHVyZS10YXJnZXQiLCBHX1RZUEVfU1RSSU5HLAorICAgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUiwgTlVMTCk7CisKKyAgZ3N0X2dsX3ZpZXdfY29udmVydF9zZXRfY2FwcyAobWl4LT52aWV3Y29udmVydCwgaW5fY2FwcywgY2Fwcyk7CiAKICAgcmV0dXJuIFRSVUU7Ci0KIH0KIAorLyogY2FsbGVkIHdpdGggdGhlIG9iamVjdCBsb2NrIGhlbGQgKi8KIHN0YXRpYyBnYm9vbGVhbgotZ3N0X2dsX3N0ZXJlb19taXhfcHJvY2Vzc19mcmFtZXMgKEdzdEdMU3RlcmVvTWl4ICogbWl4ZXIsIEdQdHJBcnJheSAqIGZyYW1lcykKK2dzdF9nbF9zdGVyZW9fbWl4X3Byb2Nlc3NfZnJhbWVzIChHc3RHTFN0ZXJlb01peCAqIG1peGVyKQogewogICBHc3RWaWRlb0FnZ3JlZ2F0b3IgKnZhZ2cgPSBHU1RfVklERU9fQUdHUkVHQVRPUiAobWl4ZXIpOwogICBHc3RCdWZmZXIgKmNvbnZlcnRlZF9idWZmZXIsICppbmJ1ZjsKICAgR3N0VmlkZW9JbmZvICpvdXRfaW5mbyA9ICZ2YWdnLT5pbmZvOwotICBnaW50IGNvdW50ID0gMDsKICNpZm5kZWYgR19ESVNBQkxFX0FTU0VSVAogICBnaW50IG47CiAjZW5kaWYKICAgZ2ludCB2LCB2aWV3czsKICAgZ2ludCB2YWxpZF92aWV3cyA9IDA7CisgIEdMaXN0ICp3YWxrOwogCiAgIGluYnVmID0gZ3N0X2J1ZmZlcl9uZXcgKCk7Ci0gIHdoaWxlIChjb3VudCA8IGZyYW1lcy0+bGVuKSB7Ci0gICAgR3N0R0xTdGVyZW9NaXhGcmFtZURhdGEgKmZyYW1lOworICB3YWxrID0gR1NUX0VMRU1FTlQgKG1peGVyKS0+c2lua3BhZHM7CisgIHdoaWxlICh3YWxrKSB7CisgICAgR3N0R0xTdGVyZW9NaXhQYWQgKnBhZCA9IHdhbGstPmRhdGE7CiAgICAgR3N0TWVtb3J5ICppbl9tZW07CiAKLSAgICBmcmFtZSA9IGdfcHRyX2FycmF5X2luZGV4IChmcmFtZXMsIGNvdW50KTsKLSAgICBHU1RfTE9HX09CSkVDVCAobWl4ZXIsICJIYW5kbGluZyBmcmFtZSAlZCIsIGNvdW50KTsKKyAgICBHU1RfTE9HX09CSkVDVCAobWl4ZXIsICJIYW5kbGluZyBmcmFtZSAlZCIsIHZhbGlkX3ZpZXdzKTsKIAotICAgIGlmICghZnJhbWUpIHsKKyAgICBpZiAoIXBhZCB8fCAhcGFkLT5jdXJyZW50X2J1ZmZlcikgewogICAgICAgR1NUX0RFQlVHICgic2tpcHBpbmcgdGV4dHVyZSwgbnVsbCBmcmFtZSIpOwotICAgICAgY291bnQrKzsKKyAgICAgIHdhbGsgPSBnX2xpc3RfbmV4dCAod2Fsayk7CiAgICAgICBjb250aW51ZTsKICAgICB9CiAKLSAgICBpbl9tZW0gPSBnc3RfYnVmZmVyX2dldF9tZW1vcnkgKGZyYW1lLT5idWYsIDApOworICAgIGluX21lbSA9IGdzdF9idWZmZXJfZ2V0X21lbW9yeSAocGFkLT5jdXJyZW50X2J1ZmZlciwgMCk7CiAKICAgICBHU1RfTE9HX09CSkVDVCAobWl4ZXIsCiAgICAgICAgICJBcHBlbmRpbmcgbWVtb3J5ICUiIEdTVF9QVFJfRk9STUFUICIgdG8gaW50ZXJtZWRpYXRlIGJ1ZmZlciIsIGluX21lbSk7CkBAIC01MzcsMTAgKzUyMiwxMCBAQAogICAgICAqLwogICAgIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAoaW5idWYsIGluX21lbSk7CiAgICAgLyogVXNlIHBhcmVudCBidWZmZXIgbWV0YSB0byBrZWVwIGlucHV0IGJ1ZmZlciBhbGl2ZSAqLwotICAgIGdzdF9idWZmZXJfYWRkX3BhcmVudF9idWZmZXJfbWV0YSAoaW5idWYsIGZyYW1lLT5idWYpOworICAgIGdzdF9idWZmZXJfYWRkX3BhcmVudF9idWZmZXJfbWV0YSAoaW5idWYsIHBhZC0+Y3VycmVudF9idWZmZXIpOwogCi0gICAgY291bnQrKzsKICAgICB2YWxpZF92aWV3cysrOworICAgIHdhbGsgPSBnX2xpc3RfbmV4dCAod2Fsayk7CiAgIH0KIAogICBpZiAobWl4ZXItPm1peF9pbmZvLnZpZXdzICE9IHZhbGlkX3ZpZXdzKSB7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xzdGVyZW9taXguaCBiL2V4dC9nbC9nc3RnbHN0ZXJlb21peC5oCmluZGV4IGRlYmUzNDcuLmIwZjFiZDIgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbHN0ZXJlb21peC5oCisrKyBiL2V4dC9nbC9nc3RnbHN0ZXJlb21peC5oCkBAIC00MCwxNyArNDAsMzEgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMU3RlcmVvTWl4IEdzdEdMU3RlcmVvTWl4OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMU3RlcmVvTWl4Q2xhc3MgR3N0R0xTdGVyZW9NaXhDbGFzczsKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTFN0ZXJlb01peEZyYW1lRGF0YSBHc3RHTFN0ZXJlb01peEZyYW1lRGF0YTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTFN0ZXJlb01peFBhZCBHc3RHTFN0ZXJlb01peFBhZDsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTFN0ZXJlb01peFBhZENsYXNzIEdzdEdMU3RlcmVvTWl4UGFkQ2xhc3M7CisKK3N0cnVjdCBfR3N0R0xTdGVyZW9NaXhQYWQKK3sKKyAgR3N0R0xNaXhlclBhZCBtaXhlcl9wYWQ7CisKKyAgZ2Jvb2xlYW4gbWFwcGVkOworICBHc3RCdWZmZXIgKmN1cnJlbnRfYnVmZmVyOworfTsKKworc3RydWN0IF9Hc3RHTFN0ZXJlb01peFBhZENsYXNzCit7CisgIEdzdEdMTWl4ZXJQYWRDbGFzcyBtaXhlcl9wYWRfY2xhc3M7Cit9OworCisjZGVmaW5lIEdTVF9UWVBFX0dMX1NURVJFT19NSVhfUEFEIChnc3RfZ2xfc3RlcmVvX21peF9wYWRfZ2V0X3R5cGUgKCkpCitHVHlwZSBnc3RfZ2xfc3RlcmVvX21peF9wYWRfZ2V0X3R5cGUgKHZvaWQpOworCiAKIHN0cnVjdCBfR3N0R0xTdGVyZW9NaXgKIHsKICAgR3N0R0xNaXhlciBtaXhlcjsKIAotICBHUHRyQXJyYXkgKmFycmF5X2J1ZmZlcnM7Ci0gIEdQdHJBcnJheSAqZnJhbWVzOwotCiAgIEdMdWludCBvdXRfdGV4X2lkOwotICBHc3RHTERvd25sb2FkICpkb3dubG9hZDsKIAogICBHc3RHTFZpZXdDb252ZXJ0ICp2aWV3Y29udmVydDsKICAgR3N0R0xTdGVyZW9Eb3dubWl4IGRvd25taXhfbW9kZTsKQEAgLTcwLDEzICs4NCw2IEBACiAgICAgR3N0R0xNaXhlckNsYXNzIG1peGVyX2NsYXNzOwogfTsKIAotc3RydWN0IF9Hc3RHTFN0ZXJlb01peEZyYW1lRGF0YQotewotICBHc3RHTE1peGVyRnJhbWVEYXRhIGJhc2U7Ci0gIGdib29sZWFuIG1hcHBlZDsKLSAgR3N0QnVmZmVyICpidWY7Ci19OwotCiBHVHlwZSBnc3RfZ2xfc3RlcmVvX21peF9nZXRfdHlwZSh2b2lkKTsKIAogR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbHN0ZXJlb3NwbGl0LmMgYi9leHQvZ2wvZ3N0Z2xzdGVyZW9zcGxpdC5jCmluZGV4IGUxNzVkZjguLmZjOTNiMWEgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbHN0ZXJlb3NwbGl0LmMKKysrIGIvZXh0L2dsL2dzdGdsc3RlcmVvc3BsaXQuYwpAQCAtMjYsNyArMjYsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyAhIGdsc3RlcmVvc3BsaXQgbmFtZT1zICEgcXVldWUgISBnbGltYWdlc2luayBzLiAhIHF1ZXVlICEgZ2xpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIGdsc3RlcmVvc3BsaXQgbmFtZT1zICEgcXVldWUgISBnbGltYWdlc2luayBzLiAhIHF1ZXVlICEgZ2xpbWFnZXNpbmsKICAqIF18CiAgKiBGQk8gKEZyYW1lIEJ1ZmZlciBPYmplY3QpIGFuZCBHTFNMIChPcGVuR0wgU2hhZGluZyBMYW5ndWFnZSkgYXJlIHJlcXVpcmVkLgogICogPC9yZWZzZWN0Mj4KQEAgLTIxMCw2ICsyMTAsOSBAQAogCiAgIGlmIChzdGVyZW9zcGxpdC0+ZGlzcGxheSkKICAgICBnc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpIChzdGVyZW9zcGxpdC0+ZGlzcGxheSwgU1VQUE9SVEVEX0dMX0FQSVMpOworCisgIEdTVF9FTEVNRU5UX0NMQVNTIChnc3RfZ2xfc3RlcmVvc3BsaXRfcGFyZW50X2NsYXNzKS0+c2V0X2NvbnRleHQgKGVsZW1lbnQsCisgICAgICBjb250ZXh0KTsKIH0KIAogc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCkBAIC01ODEsOCArNTg0LDI3IEBACiAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNlbGYtPmRpc3BsYXkpOwogICB9CiAKKyAgeworICAgIEdzdEdMQVBJIGN1cnJlbnRfZ2xfYXBpID0gZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoc2VsZi0+Y29udGV4dCk7CisgICAgaWYgKChjdXJyZW50X2dsX2FwaSAmIChTVVBQT1JURURfR0xfQVBJUykpID09IDApCisgICAgICBnb3RvIHVuc3VwcG9ydGVkX2dsX2FwaTsKKyAgfQorCiAgIHJldHVybiBUUlVFOwogCit1bnN1cHBvcnRlZF9nbF9hcGk6CisgIHsKKyAgICBHc3RHTEFQSSBnbF9hcGkgPSBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChzZWxmLT5jb250ZXh0KTsKKyAgICBnY2hhciAqZ2xfYXBpX3N0ciA9IGdzdF9nbF9hcGlfdG9fc3RyaW5nIChnbF9hcGkpOworICAgIGdjaGFyICpzdXBwb3J0ZWRfZ2xfYXBpX3N0ciA9IGdzdF9nbF9hcGlfdG9fc3RyaW5nIChTVVBQT1JURURfR0xfQVBJUyk7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIFJFU09VUkNFLCBCVVNZLAorICAgICAgICAoIkdMIEFQSSdzIG5vdCBjb21wYXRpYmxlIGNvbnRleHQ6ICVzIHN1cHBvcnRlZDogJXMiLCBnbF9hcGlfc3RyLAorICAgICAgICAgICAgc3VwcG9ydGVkX2dsX2FwaV9zdHIpLCAoTlVMTCkpOworCisgICAgZ19mcmVlIChzdXBwb3J0ZWRfZ2xfYXBpX3N0cik7CisgICAgZ19mcmVlIChnbF9hcGlfc3RyKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KIGNvbnRleHRfZXJyb3I6CiAgIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2VsZiwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsIGVycm9yLT5tZXNzYWdlKSwKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbHRlc3RzcmMuYyBiL2V4dC9nbC9nc3RnbHRlc3RzcmMuYwppbmRleCA5M2RkZmRhLi45NWM3MzIxIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2x0ZXN0c3JjLmMKKysrIGIvZXh0L2dsL2dzdGdsdGVzdHNyYy5jCkBAIC0zMyw3ICszMyw3IEBACiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiA8cGFyYT4KICAqIDxwcm9ncmFtbGlzdGluZz4KLSAqIGdzdC1sYXVuY2ggLXYgZ2x0ZXN0c3JjIHBhdHRlcm49c21wdGUgISBnbGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgZ2x0ZXN0c3JjIHBhdHRlcm49c21wdGUgISBnbGltYWdlc2luawogICogPC9wcm9ncmFtbGlzdGluZz4KICAqIFNob3dzIG9yaWdpbmFsIFNNUFRFIGNvbG9yIGJhcnMgaW4gYSB3aW5kb3cuCiAgKiA8L3BhcmE+CkBAIC02MywxMyArNjMsMTggQEAKICAgICAgIC8qIEZJTEwgTUUgKi8KIH07CiAKKy8qICpJTkRFTlQtT0ZGKiAqLwogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY19mYWN0b3J5ID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAogICAgIEdTVF9QQURfU1JDLAogICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTCi0gICAgICAgIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksCi0gICAgICAgICAgICAiUkdCQSIpKQorICAgIEdTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3KCIgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZICIpLCAiCisgICAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSBSR0JBLCAiCisgICAgICAgICJ3aWR0aCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgICAiaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiCisgICAgICAgICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIiwiCisgICAgICAgICJ0ZXh0dXJlLXRhcmdldCA9IChzdHJpbmcpIDJEIikKICAgICApOworLyogKklOREVOVC1PTiogKi8KIAogI2RlZmluZSBnc3RfZ2xfdGVzdF9zcmNfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcwogR19ERUZJTkVfVFlQRSAoR3N0R0xUZXN0U3JjLCBnc3RfZ2xfdGVzdF9zcmMsIEdTVF9UWVBFX1BVU0hfU1JDKTsKQEAgLTQ1OSw2ICs0NjQsOCBAQAogCiAgIGlmIChzcmMtPmRpc3BsYXkpCiAgICAgZ3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwaSAoc3JjLT5kaXNwbGF5LCBTVVBQT1JURURfR0xfQVBJUyk7CisKKyAgR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0KTsKIH0KIAogc3RhdGljIGdib29sZWFuCkBAIC03OTcsNiArODA0LDkgQEAKICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjLT5kaXNwbGF5KTsKICAgfQogCisgIGlmICgoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoc3JjLT5jb250ZXh0KSAmIFNVUFBPUlRFRF9HTF9BUElTKSA9PSAwKQorICAgIGdvdG8gdW5zdXBwb3J0ZWRfZ2xfYXBpOworCiAgIG91dF93aWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIICgmc3JjLT5vdXRfaW5mbyk7CiAgIG91dF9oZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZzcmMtPm91dF9pbmZvKTsKIApAQCAtODQ5LDYgKzg1OSwxOSBAQAogCiAgIHJldHVybiBUUlVFOwogCit1bnN1cHBvcnRlZF9nbF9hcGk6CisgIHsKKyAgICBHc3RHTEFQSSBnbF9hcGkgPSBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChzcmMtPmNvbnRleHQpOworICAgIGdjaGFyICpnbF9hcGlfc3RyID0gZ3N0X2dsX2FwaV90b19zdHJpbmcgKGdsX2FwaSk7CisgICAgZ2NoYXIgKnN1cHBvcnRlZF9nbF9hcGlfc3RyID0gZ3N0X2dsX2FwaV90b19zdHJpbmcgKFNVUFBPUlRFRF9HTF9BUElTKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBSRVNPVVJDRSwgQlVTWSwKKyAgICAgICAgKCJHTCBBUEkncyBub3QgY29tcGF0aWJsZSBjb250ZXh0OiAlcyBzdXBwb3J0ZWQ6ICVzIiwgZ2xfYXBpX3N0ciwKKyAgICAgICAgICAgIHN1cHBvcnRlZF9nbF9hcGlfc3RyKSwgKE5VTEwpKTsKKworICAgIGdfZnJlZSAoc3VwcG9ydGVkX2dsX2FwaV9zdHIpOworICAgIGdfZnJlZSAoZ2xfYXBpX3N0cik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CiBjb250ZXh0X2Vycm9yOgogICB7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNyYywgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsIGVycm9yLT5tZXNzYWdlKSwKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbHRyYW5zZm9ybWF0aW9uLmMgYi9leHQvZ2wvZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5jCmluZGV4IDVhODJhZGUuLjc3OTQ0N2MgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbHRyYW5zZm9ybWF0aW9uLmMKKysrIGIvZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uYwpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxNCBMdWJvc3ogU2FybmVja2kgPGx1Ym9zekBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNiwxNiArMjcsMTYgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBnbHRlc3RzcmMgISBnbHRyYW5zZm9ybWF0aW9uIHJvdGF0aW9uLXo9NDUgISBnbGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgZ2x0ZXN0c3JjICEgZ2x0cmFuc2Zvcm1hdGlvbiByb3RhdGlvbi16PTQ1ICEgZ2xpbWFnZXNpbmsKICAqIF18IEEgcGlwZWxpbmUgdG8gcm90YXRlIGJ5IDQ1IGRlZ3JlZXMKICAqIHxbCi0gKiBnc3QtbGF1bmNoIGdsdGVzdHNyYyAhIGdsdHJhbnNmb3JtYXRpb24gdHJhbnNsYXRpb24teD0wLjUgISBnbGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgZ2x0ZXN0c3JjICEgZ2x0cmFuc2Zvcm1hdGlvbiB0cmFuc2xhdGlvbi14PTAuNSAhIGdsaW1hZ2VzaW5rCiAgKiBdfCBUcmFuc2xhdGUgdGhlIHZpZGVvIGJ5IDAuNQogICogfFsKLSAqIGdzdC1sYXVuY2ggZ2x0ZXN0c3JjICEgZ2x0cmFuc2Zvcm1hdGlvbiBzY2FsZS15PTAuNSBzY2FsZS14PTAuNSAhIGdsaW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBnbHRlc3RzcmMgISBnbHRyYW5zZm9ybWF0aW9uIHNjYWxlLXk9MC41IHNjYWxlLXg9MC41ICEgZ2xpbWFnZXNpbmsKICAqIF18IFJlc2l6ZSB0aGUgdmlkZW8gYnkgMC41CiAgKiB8WwotICogZ3N0LWxhdW5jaCBnbHRlc3RzcmMgISBnbHRyYW5zZm9ybWF0aW9uIHJvdGF0aW9uLXg9LTQ1IG9ydGhvPVRydWUgISBnbGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgZ2x0ZXN0c3JjICEgZ2x0cmFuc2Zvcm1hdGlvbiByb3RhdGlvbi14PS00NSBvcnRobz1UcnVlICEgZ2xpbWFnZXNpbmsKICAqIF18IFJvdGF0ZSB0aGUgdmlkZW8gYXJvdW5kIHRoZSBYLUF4aXMgYnkgLTQ1wrAgd2l0aCBhbiBvcnRob2dyYXBoaWMgcHJvamVjdGlvbgogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtODYsNiArODcsOCBAQAogCiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX3RyYW5zZm9ybWF0aW9uX3NldF9jYXBzIChHc3RHTEZpbHRlciAqIGZpbHRlciwKICAgICBHc3RDYXBzICogaW5jYXBzLCBHc3RDYXBzICogb3V0Y2Fwcyk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX3RyYW5zZm9ybWF0aW9uX3NyY19ldmVudCAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zLAorICAgIEdzdEV2ZW50ICogZXZlbnQpOwogCiBzdGF0aWMgdm9pZCBnc3RfZ2xfdHJhbnNmb3JtYXRpb25fcmVzZXRfZ2wgKEdzdEdMRmlsdGVyICogZmlsdGVyKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfdHJhbnNmb3JtYXRpb25fc3RvcCAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zKTsKQEAgLTEyNiwxMyArMTI5LDE3IEBACiB7CiAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKICAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzOworICBHc3RCYXNlVHJhbnNmb3JtQ2xhc3MgKmJhc2VfdHJhbnNmb3JtX2NsYXNzOwogCiAgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwogICBlbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKKyAgYmFzZV90cmFuc2Zvcm1fY2xhc3MgPSBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xBU1MgKGtsYXNzKTsKIAogICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfZ2xfdHJhbnNmb3JtYXRpb25fc2V0X3Byb3BlcnR5OwogICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfZ2xfdHJhbnNmb3JtYXRpb25fZ2V0X3Byb3BlcnR5OwogCisgIGJhc2VfdHJhbnNmb3JtX2NsYXNzLT5zcmNfZXZlbnQgPSBnc3RfZ2xfdHJhbnNmb3JtYXRpb25fc3JjX2V2ZW50OworCiAgIEdTVF9HTF9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+aW5pdF9mYm8gPSBnc3RfZ2xfdHJhbnNmb3JtYXRpb25faW5pdF9zaGFkZXI7CiAgIEdTVF9HTF9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+ZGlzcGxheV9yZXNldF9jYiA9CiAgICAgICBnc3RfZ2xfdHJhbnNmb3JtYXRpb25fcmVzZXRfZ2w7CkBAIC0xOTIsMTIgKzE5OSwxNCBAQAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NDQUxFX1gsCiAgICAgICBnX3BhcmFtX3NwZWNfZmxvYXQgKCJzY2FsZS14IiwgIlggU2NhbGUiLAogICAgICAgICAgICJTY2FsZSBtdWx0aXBsaWVyIGZvciB0aGUgWC1BeGlzLiIsCi0gICAgICAgICAgMC4wLCBHX01BWEZMT0FULCAxLjAsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIC1HX01BWEZMT0FULCBHX01BWEZMT0FULCAxLjAsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TQ0FMRV9ZLAogICAgICAgZ19wYXJhbV9zcGVjX2Zsb2F0ICgic2NhbGUteSIsICJZIFNjYWxlIiwKICAgICAgICAgICAiU2NhbGUgbXVsdGlwbGllciBmb3IgdGhlIFktQXhpcy4iLAotICAgICAgICAgIDAuMCwgR19NQVhGTE9BVCwgMS4wLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAtR19NQVhGTE9BVCwgR19NQVhGTE9BVCwgMS4wLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwogCiAgIC8qIFBpdm90ICovCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfUElWT1RfWCwKQEAgLTIxOCwxOCArMjI3LDE5IEBACiAgICAgICBnX3BhcmFtX3NwZWNfZmxvYXQgKCJwaXZvdC16IiwgIlogUGl2b3QiLAogICAgICAgICAgICJSZWxldmFudCBmb3Igcm90YXRpb24gaW4gM0Qgc3BhY2UuIFlvdSBsb29rIGludG8gdGhlIG5lZ2F0aXZlIFogYXhpcyBkaXJlY3Rpb24iLAogICAgICAgICAgIC1HX01BWEZMT0FULCBHX01BWEZMT0FULCAwLjAsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKIAogICAvKiBNVlAgKi8KICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NVlAsCiAgICAgICBnX3BhcmFtX3NwZWNfYm94ZWQgKCJtdnAtbWF0cml4IiwKICAgICAgICAgICAiTW9kZWx2aWV3IFByb2plY3Rpb24gTWF0cml4IiwKICAgICAgICAgICAiVGhlIGZpbmFsIEdyYXBoZW5lIDR4NCBNYXRyaXggZm9yIHRyYW5zZm9ybWF0aW9uIiwKLSAgICAgICAgICBHUkFQSEVORV9UWVBFX01BVFJJWCwgR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICBHUkFQSEVORV9UWVBFX01BVFJJWCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CiAKICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFkYXRhIChlbGVtZW50X2NsYXNzLCAiT3BlbkdMIHRyYW5zZm9ybWF0aW9uIGZpbHRlciIsCiAgICAgICAiRmlsdGVyL0VmZmVjdC9WaWRlbyIsICJUcmFuc2Zvcm0gdmlkZW8gb24gdGhlIEdQVSIsCi0gICAgICAiTHVib3N6IFNhcm5lY2tpIDxsdWJvc3pAZ21haWwuY29tPiIpOworICAgICAgIkx1Ym9zeiBTYXJuZWNraSA8bHVib3N6QGdtYWlsLmNvbT5cbiIKKyAgICAgICJNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+Iik7CiAKICAgR1NUX0dMX0JBU0VfRklMVEVSX0NMQVNTIChrbGFzcyktPnN1cHBvcnRlZF9nbF9hcGkgPQogICAgICAgR1NUX0dMX0FQSV9PUEVOR0wgfCBHU1RfR0xfQVBJX09QRU5HTDMgfCBHU1RfR0xfQVBJX0dMRVMyOwpAQCAtMjU1LDY5ICsyNjUsOTUgQEAKIHN0YXRpYyB2b2lkCiBnc3RfZ2xfdHJhbnNmb3JtYXRpb25fYnVpbGRfbXZwIChHc3RHTFRyYW5zZm9ybWF0aW9uICogdHJhbnNmb3JtYXRpb24pCiB7Ci0gIGdyYXBoZW5lX3BvaW50M2RfdCB0cmFuc2xhdGlvbl92ZWN0b3IgPQotICAgICAgR1JBUEhFTkVfUE9JTlQzRF9JTklUICh0cmFuc2Zvcm1hdGlvbi0+eHRyYW5zbGF0aW9uICogMi4wICoKLSAgICAgIHRyYW5zZm9ybWF0aW9uLT5hc3BlY3QsCi0gICAgICB0cmFuc2Zvcm1hdGlvbi0+eXRyYW5zbGF0aW9uICogMi4wLAotICAgICAgdHJhbnNmb3JtYXRpb24tPnp0cmFuc2xhdGlvbiAqIDIuMCk7CisgIEdzdEdMRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfRklMVEVSICh0cmFuc2Zvcm1hdGlvbik7CisgIGdyYXBoZW5lX21hdHJpeF90IG1vZGVsdmlld19tYXRyaXg7CiAKLSAgZ3JhcGhlbmVfcG9pbnQzZF90IHBpdm90X3ZlY3RvciA9Ci0gICAgICBHUkFQSEVORV9QT0lOVDNEX0lOSVQgKC10cmFuc2Zvcm1hdGlvbi0+eHBpdm90ICogdHJhbnNmb3JtYXRpb24tPmFzcGVjdCwKLSAgICAgIHRyYW5zZm9ybWF0aW9uLT55cGl2b3QsCi0gICAgICAtdHJhbnNmb3JtYXRpb24tPnpwaXZvdCk7Ci0KLSAgZ3JhcGhlbmVfcG9pbnQzZF90IG5lZ2F0aXZlX3Bpdm90X3ZlY3RvcjsKLQotICBncmFwaGVuZV9tYXRyaXhfdCBtb2RlbF9tYXRyaXg7Ci0gIGdyYXBoZW5lX21hdHJpeF90IHByb2plY3Rpb25fbWF0cml4OwotICBncmFwaGVuZV9tYXRyaXhfdCB2aWV3X21hdHJpeDsKLSAgZ3JhcGhlbmVfbWF0cml4X3QgdnBfbWF0cml4OwotCi0gIGdyYXBoZW5lX3ZlYzNfdCBleWU7Ci0gIGdyYXBoZW5lX3ZlYzNfdCBjZW50ZXI7Ci0gIGdyYXBoZW5lX3ZlYzNfdCB1cDsKLQotICBncmFwaGVuZV92ZWMzX2luaXQgKCZleWUsIDAuZiwgMC5mLCAxLmYpOwotICBncmFwaGVuZV92ZWMzX2luaXQgKCZjZW50ZXIsIDAuZiwgMC5mLCAwLmYpOwotICBncmFwaGVuZV92ZWMzX2luaXQgKCZ1cCwgMC5mLCAxLmYsIDAuZik7Ci0KLSAgLyogVHJhbnNsYXRlIGludG8gcGl2b3Qgb3JpZ2luICovCi0gIGdyYXBoZW5lX21hdHJpeF9pbml0X3RyYW5zbGF0ZSAoJm1vZGVsX21hdHJpeCwgJnBpdm90X3ZlY3Rvcik7Ci0KLSAgLyogU2NhbGUgKi8KLSAgZ3JhcGhlbmVfbWF0cml4X3NjYWxlICgmbW9kZWxfbWF0cml4LAotICAgICAgdHJhbnNmb3JtYXRpb24tPnhzY2FsZSwgdHJhbnNmb3JtYXRpb24tPnlzY2FsZSwgMS4wZik7Ci0KLSAgLyogUm90YXRpb24gKi8KLSAgZ3JhcGhlbmVfbWF0cml4X3JvdGF0ZSAoJm1vZGVsX21hdHJpeCwKLSAgICAgIHRyYW5zZm9ybWF0aW9uLT54cm90YXRpb24sIGdyYXBoZW5lX3ZlYzNfeF9heGlzICgpKTsKLSAgZ3JhcGhlbmVfbWF0cml4X3JvdGF0ZSAoJm1vZGVsX21hdHJpeCwKLSAgICAgIHRyYW5zZm9ybWF0aW9uLT55cm90YXRpb24sIGdyYXBoZW5lX3ZlYzNfeV9heGlzICgpKTsKLSAgZ3JhcGhlbmVfbWF0cml4X3JvdGF0ZSAoJm1vZGVsX21hdHJpeCwKLSAgICAgIHRyYW5zZm9ybWF0aW9uLT56cm90YXRpb24sIGdyYXBoZW5lX3ZlYzNfel9heGlzICgpKTsKLQotICAvKiBUcmFuc2xhdGUgYmFjayBmcm9tIHBpdm90IG9yaWdpbiAqLwotICBncmFwaGVuZV9wb2ludDNkX3NjYWxlICgmcGl2b3RfdmVjdG9yLCAtMS4wLCAmbmVnYXRpdmVfcGl2b3RfdmVjdG9yKTsKLSAgZ3JhcGhlbmVfbWF0cml4X3RyYW5zbGF0ZSAoJm1vZGVsX21hdHJpeCwgJm5lZ2F0aXZlX3Bpdm90X3ZlY3Rvcik7Ci0KLSAgLyogVHJhbnNsYXRpb24gKi8KLSAgZ3JhcGhlbmVfbWF0cml4X3RyYW5zbGF0ZSAoJm1vZGVsX21hdHJpeCwgJnRyYW5zbGF0aW9uX3ZlY3Rvcik7Ci0KLSAgaWYgKHRyYW5zZm9ybWF0aW9uLT5vcnRobykgewotICAgIGdyYXBoZW5lX21hdHJpeF9pbml0X29ydGhvICgmcHJvamVjdGlvbl9tYXRyaXgsCi0gICAgICAgIC10cmFuc2Zvcm1hdGlvbi0+YXNwZWN0LCB0cmFuc2Zvcm1hdGlvbi0+YXNwZWN0LAotICAgICAgICAtMSwgMSwgdHJhbnNmb3JtYXRpb24tPnpuZWFyLCB0cmFuc2Zvcm1hdGlvbi0+emZhcik7CisgIGlmICghZmlsdGVyLT5vdXRfaW5mby5maW5mbykgeworICAgIGdyYXBoZW5lX21hdHJpeF9pbml0X2lkZW50aXR5ICgmdHJhbnNmb3JtYXRpb24tPm1vZGVsX21hdHJpeCk7CisgICAgZ3JhcGhlbmVfbWF0cml4X2luaXRfaWRlbnRpdHkgKCZ0cmFuc2Zvcm1hdGlvbi0+dmlld19tYXRyaXgpOworICAgIGdyYXBoZW5lX21hdHJpeF9pbml0X2lkZW50aXR5ICgmdHJhbnNmb3JtYXRpb24tPnByb2plY3Rpb25fbWF0cml4KTsKICAgfSBlbHNlIHsKLSAgICBncmFwaGVuZV9tYXRyaXhfaW5pdF9wZXJzcGVjdGl2ZSAoJnByb2plY3Rpb25fbWF0cml4LAotICAgICAgICB0cmFuc2Zvcm1hdGlvbi0+Zm92LAotICAgICAgICB0cmFuc2Zvcm1hdGlvbi0+YXNwZWN0LCB0cmFuc2Zvcm1hdGlvbi0+em5lYXIsIHRyYW5zZm9ybWF0aW9uLT56ZmFyKTsKKyAgICBncmFwaGVuZV9wb2ludDNkX3QgdHJhbnNsYXRpb25fdmVjdG9yID0KKyAgICAgICAgR1JBUEhFTkVfUE9JTlQzRF9JTklUICh0cmFuc2Zvcm1hdGlvbi0+eHRyYW5zbGF0aW9uICogMi4wICoKKyAgICAgICAgdHJhbnNmb3JtYXRpb24tPmFzcGVjdCwKKyAgICAgICAgdHJhbnNmb3JtYXRpb24tPnl0cmFuc2xhdGlvbiAqIDIuMCwKKyAgICAgICAgdHJhbnNmb3JtYXRpb24tPnp0cmFuc2xhdGlvbiAqIDIuMCk7CisKKyAgICBncmFwaGVuZV9wb2ludDNkX3QgcGl2b3RfdmVjdG9yID0KKyAgICAgICAgR1JBUEhFTkVfUE9JTlQzRF9JTklUICgtdHJhbnNmb3JtYXRpb24tPnhwaXZvdCAqIHRyYW5zZm9ybWF0aW9uLT5hc3BlY3QsCisgICAgICAgIHRyYW5zZm9ybWF0aW9uLT55cGl2b3QsCisgICAgICAgIC10cmFuc2Zvcm1hdGlvbi0+enBpdm90KTsKKworICAgIGdyYXBoZW5lX3BvaW50M2RfdCBuZWdhdGl2ZV9waXZvdF92ZWN0b3I7CisKKyAgICBncmFwaGVuZV92ZWMzX3QgZXllOworICAgIGdyYXBoZW5lX3ZlYzNfdCBjZW50ZXI7CisgICAgZ3JhcGhlbmVfdmVjM190IHVwOworCisgICAgZ2Jvb2xlYW4gY3VycmVudF9wYXNzdGhyb3VnaDsKKyAgICBnYm9vbGVhbiBwYXNzdGhyb3VnaDsKKworICAgIGdyYXBoZW5lX3ZlYzNfaW5pdCAoJmV5ZSwgMC5mLCAwLmYsIDEuZik7CisgICAgZ3JhcGhlbmVfdmVjM19pbml0ICgmY2VudGVyLCAwLmYsIDAuZiwgMC5mKTsKKyAgICBncmFwaGVuZV92ZWMzX2luaXQgKCZ1cCwgMC5mLCAxLmYsIDAuZik7CisKKyAgICAvKiBUcmFuc2xhdGUgaW50byBwaXZvdCBvcmlnaW4gKi8KKyAgICBncmFwaGVuZV9tYXRyaXhfaW5pdF90cmFuc2xhdGUgKCZ0cmFuc2Zvcm1hdGlvbi0+bW9kZWxfbWF0cml4LAorICAgICAgICAmcGl2b3RfdmVjdG9yKTsKKworICAgIC8qIFNjYWxlICovCisgICAgZ3JhcGhlbmVfbWF0cml4X3NjYWxlICgmdHJhbnNmb3JtYXRpb24tPm1vZGVsX21hdHJpeCwKKyAgICAgICAgdHJhbnNmb3JtYXRpb24tPnhzY2FsZSwgdHJhbnNmb3JtYXRpb24tPnlzY2FsZSwgMS4wZik7CisKKyAgICAvKiBSb3RhdGlvbiAqLworICAgIGdyYXBoZW5lX21hdHJpeF9yb3RhdGUgKCZ0cmFuc2Zvcm1hdGlvbi0+bW9kZWxfbWF0cml4LAorICAgICAgICB0cmFuc2Zvcm1hdGlvbi0+eHJvdGF0aW9uLCBncmFwaGVuZV92ZWMzX3hfYXhpcyAoKSk7CisgICAgZ3JhcGhlbmVfbWF0cml4X3JvdGF0ZSAoJnRyYW5zZm9ybWF0aW9uLT5tb2RlbF9tYXRyaXgsCisgICAgICAgIHRyYW5zZm9ybWF0aW9uLT55cm90YXRpb24sIGdyYXBoZW5lX3ZlYzNfeV9heGlzICgpKTsKKyAgICBncmFwaGVuZV9tYXRyaXhfcm90YXRlICgmdHJhbnNmb3JtYXRpb24tPm1vZGVsX21hdHJpeCwKKyAgICAgICAgdHJhbnNmb3JtYXRpb24tPnpyb3RhdGlvbiwgZ3JhcGhlbmVfdmVjM196X2F4aXMgKCkpOworCisgICAgLyogVHJhbnNsYXRlIGJhY2sgZnJvbSBwaXZvdCBvcmlnaW4gKi8KKyAgICBncmFwaGVuZV9wb2ludDNkX3NjYWxlICgmcGl2b3RfdmVjdG9yLCAtMS4wLCAmbmVnYXRpdmVfcGl2b3RfdmVjdG9yKTsKKyAgICBncmFwaGVuZV9tYXRyaXhfdHJhbnNsYXRlICgmdHJhbnNmb3JtYXRpb24tPm1vZGVsX21hdHJpeCwKKyAgICAgICAgJm5lZ2F0aXZlX3Bpdm90X3ZlY3Rvcik7CisKKyAgICAvKiBUcmFuc2xhdGlvbiAqLworICAgIGdyYXBoZW5lX21hdHJpeF90cmFuc2xhdGUgKCZ0cmFuc2Zvcm1hdGlvbi0+bW9kZWxfbWF0cml4LAorICAgICAgICAmdHJhbnNsYXRpb25fdmVjdG9yKTsKKworICAgIGlmICh0cmFuc2Zvcm1hdGlvbi0+b3J0aG8pIHsKKyAgICAgIGdyYXBoZW5lX21hdHJpeF9pbml0X29ydGhvICgmdHJhbnNmb3JtYXRpb24tPnByb2plY3Rpb25fbWF0cml4LAorICAgICAgICAgIC10cmFuc2Zvcm1hdGlvbi0+YXNwZWN0LCB0cmFuc2Zvcm1hdGlvbi0+YXNwZWN0LAorICAgICAgICAgIC0xLCAxLCB0cmFuc2Zvcm1hdGlvbi0+em5lYXIsIHRyYW5zZm9ybWF0aW9uLT56ZmFyKTsKKyAgICB9IGVsc2UgeworICAgICAgZ3JhcGhlbmVfbWF0cml4X2luaXRfcGVyc3BlY3RpdmUgKCZ0cmFuc2Zvcm1hdGlvbi0+cHJvamVjdGlvbl9tYXRyaXgsCisgICAgICAgICAgdHJhbnNmb3JtYXRpb24tPmZvdiwKKyAgICAgICAgICB0cmFuc2Zvcm1hdGlvbi0+YXNwZWN0LCB0cmFuc2Zvcm1hdGlvbi0+em5lYXIsIHRyYW5zZm9ybWF0aW9uLT56ZmFyKTsKKyAgICB9CisKKyAgICBncmFwaGVuZV9tYXRyaXhfaW5pdF9sb29rX2F0ICgmdHJhbnNmb3JtYXRpb24tPnZpZXdfbWF0cml4LCAmZXllLCAmY2VudGVyLAorICAgICAgICAmdXApOworCisgICAgY3VycmVudF9wYXNzdGhyb3VnaCA9CisgICAgICAgIGdzdF9iYXNlX3RyYW5zZm9ybV9pc19wYXNzdGhyb3VnaCAoR1NUX0JBU0VfVFJBTlNGT1JNICh0cmFuc2Zvcm1hdGlvbikpOworICAgIHBhc3N0aHJvdWdoID0gdHJhbnNmb3JtYXRpb24tPnh0cmFuc2xhdGlvbiA9PSAwLgorICAgICAgICAmJiB0cmFuc2Zvcm1hdGlvbi0+eXRyYW5zbGF0aW9uID09IDAuCisgICAgICAgICYmIHRyYW5zZm9ybWF0aW9uLT56dHJhbnNsYXRpb24gPT0gMC4gJiYgdHJhbnNmb3JtYXRpb24tPnhyb3RhdGlvbiA9PSAwLgorICAgICAgICAmJiB0cmFuc2Zvcm1hdGlvbi0+eXJvdGF0aW9uID09IDAuICYmIHRyYW5zZm9ybWF0aW9uLT56cm90YXRpb24gPT0gMC4KKyAgICAgICAgJiYgdHJhbnNmb3JtYXRpb24tPnhzY2FsZSA9PSAxLiAmJiB0cmFuc2Zvcm1hdGlvbi0+eXNjYWxlID09IDEuCisgICAgICAgICYmIGdzdF92aWRlb19pbmZvX2lzX2VxdWFsICgmZmlsdGVyLT5pbl9pbmZvLCAmZmlsdGVyLT5vdXRfaW5mbyk7CisgICAgZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9wYXNzdGhyb3VnaCAoR1NUX0JBU0VfVFJBTlNGT1JNICh0cmFuc2Zvcm1hdGlvbiksCisgICAgICAgIHBhc3N0aHJvdWdoKTsKKyAgICBpZiAoY3VycmVudF9wYXNzdGhyb3VnaCAhPSBwYXNzdGhyb3VnaCkgeworICAgICAgZ3N0X2Jhc2VfdHJhbnNmb3JtX3JlY29uZmlndXJlX3NyYyAoR1NUX0JBU0VfVFJBTlNGT1JNICh0cmFuc2Zvcm1hdGlvbikpOworICAgIH0KICAgfQogCi0gIGdyYXBoZW5lX21hdHJpeF9pbml0X2xvb2tfYXQgKCZ2aWV3X21hdHJpeCwgJmV5ZSwgJmNlbnRlciwgJnVwKTsKLQotICBncmFwaGVuZV9tYXRyaXhfbXVsdGlwbHkgKCZ2aWV3X21hdHJpeCwgJnByb2plY3Rpb25fbWF0cml4LCAmdnBfbWF0cml4KTsKLSAgZ3JhcGhlbmVfbWF0cml4X211bHRpcGx5ICgmbW9kZWxfbWF0cml4LCAmdnBfbWF0cml4LAotICAgICAgJnRyYW5zZm9ybWF0aW9uLT5tdnBfbWF0cml4KTsKKyAgZ3JhcGhlbmVfbWF0cml4X211bHRpcGx5ICgmdHJhbnNmb3JtYXRpb24tPm1vZGVsX21hdHJpeCwKKyAgICAgICZ0cmFuc2Zvcm1hdGlvbi0+dmlld19tYXRyaXgsICZtb2RlbHZpZXdfbWF0cml4KTsKKyAgZ3JhcGhlbmVfbWF0cml4X211bHRpcGx5ICgmbW9kZWx2aWV3X21hdHJpeCwKKyAgICAgICZ0cmFuc2Zvcm1hdGlvbi0+cHJvamVjdGlvbl9tYXRyaXgsICZ0cmFuc2Zvcm1hdGlvbi0+bXZwX21hdHJpeCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0zNjYsMTEgKzQwMiw2IEBACiAgICAgY2FzZSBQUk9QX1BJVk9UX1o6CiAgICAgICBmaWx0ZXItPnpwaXZvdCA9IGdfdmFsdWVfZ2V0X2Zsb2F0ICh2YWx1ZSk7CiAgICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfTVZQOgotICAgICAgaWYgKGdfdmFsdWVfZ2V0X2JveGVkICh2YWx1ZSkgIT0gTlVMTCkKLSAgICAgICAgZmlsdGVyLT5tdnBfbWF0cml4ID0gKigoZ3JhcGhlbmVfbWF0cml4X3QgKikgZ192YWx1ZV9nZXRfYm94ZWQgKHZhbHVlKSk7Ci0gICAgICByZXR1cm47Ci0gICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgIGJyZWFrOwpAQCAtNDUxLDYgKzQ4MiwxNTIgQEAKIH0KIAogc3RhdGljIHZvaWQKK19maW5kX3BsYW5lX25vcm1hbCAoY29uc3QgZ3JhcGhlbmVfcG9pbnQzZF90ICogQSwgY29uc3QgZ3JhcGhlbmVfcG9pbnQzZF90ICogQiwKKyAgICBjb25zdCBncmFwaGVuZV9wb2ludDNkX3QgKiBDLCBncmFwaGVuZV92ZWMzX3QgKiBwbGFuZV9ub3JtYWwpCit7CisgIGdyYXBoZW5lX3ZlYzNfdCBVLCBWLCBBX3YsIEJfdiwgQ192OworCisgIGdyYXBoZW5lX3BvaW50M2RfdG9fdmVjMyAoQSwgJkFfdik7CisgIGdyYXBoZW5lX3BvaW50M2RfdG9fdmVjMyAoQiwgJkJfdik7CisgIGdyYXBoZW5lX3BvaW50M2RfdG9fdmVjMyAoQywgJkNfdik7CisKKyAgZ3JhcGhlbmVfdmVjM19zdWJ0cmFjdCAoJkJfdiwgJkFfdiwgJlUpOworICBncmFwaGVuZV92ZWMzX3N1YnRyYWN0ICgmQ192LCAmQV92LCAmVik7CisKKyAgZ3JhcGhlbmVfdmVjM19jcm9zcyAoJlUsICZWLCBwbGFuZV9ub3JtYWwpOworICBncmFwaGVuZV92ZWMzX25vcm1hbGl6ZSAocGxhbmVfbm9ybWFsLCBwbGFuZV9ub3JtYWwpOworfQorCitzdGF0aWMgdm9pZAorX2ZpbmRfbW9kZWxfY29vcmRzIChHc3RHTFRyYW5zZm9ybWF0aW9uICogdHJhbnNmb3JtYXRpb24sCisgICAgY29uc3QgZ3JhcGhlbmVfcG9pbnQzZF90ICogc2NyZWVuX2Nvb3JkcywgZ3JhcGhlbmVfcG9pbnQzZF90ICogcmVzKQoreworICBncmFwaGVuZV9tYXRyaXhfdCBtb2RlbHZpZXcsIGludmVyc2VfcHJvaiwgaW52ZXJzZV9tb2RlbHZpZXc7CisgIGdyYXBoZW5lX3ZlYzRfdCB2MSwgdjI7CisgIGdyYXBoZW5lX3BvaW50M2RfdCBwMTsKKyAgZ2Zsb2F0IHc7CisKKyAgZ3JhcGhlbmVfdmVjNF9pbml0ICgmdjEsIHNjcmVlbl9jb29yZHMtPngsIHNjcmVlbl9jb29yZHMtPnksIHNjcmVlbl9jb29yZHMtPnosCisgICAgICAxLik7CisgIGdyYXBoZW5lX21hdHJpeF9pbnZlcnNlICgmdHJhbnNmb3JtYXRpb24tPnByb2plY3Rpb25fbWF0cml4LCAmaW52ZXJzZV9wcm9qKTsKKyAgZ3JhcGhlbmVfbWF0cml4X3RyYW5zZm9ybV92ZWM0ICgmaW52ZXJzZV9wcm9qLCAmdjEsICZ2Mik7CisKKyAgLyogcGVyc3BlY3RpdmUgZGl2aXNpb24gKi8KKyAgdyA9IGdyYXBoZW5lX3ZlYzRfZ2V0X3cgKCZ2Mik7CisgIHAxLnggPSBncmFwaGVuZV92ZWM0X2dldF94ICgmdjIpIC8gdzsKKyAgcDEueSA9IGdyYXBoZW5lX3ZlYzRfZ2V0X3kgKCZ2MikgLyB3OworICBwMS56ID0gZ3JhcGhlbmVfdmVjNF9nZXRfeiAoJnYyKSAvIHc7CisKKyAgZ3JhcGhlbmVfbWF0cml4X211bHRpcGx5ICgmdHJhbnNmb3JtYXRpb24tPm1vZGVsX21hdHJpeCwKKyAgICAgICZ0cmFuc2Zvcm1hdGlvbi0+dmlld19tYXRyaXgsICZtb2RlbHZpZXcpOworICBncmFwaGVuZV9tYXRyaXhfaW52ZXJzZSAoJm1vZGVsdmlldywgJmludmVyc2VfbW9kZWx2aWV3KTsKKyAgZ3JhcGhlbmVfbWF0cml4X3RyYW5zZm9ybV9wb2ludDNkICgmaW52ZXJzZV9tb2RlbHZpZXcsICZwMSwgcmVzKTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfZ2xfdHJhbnNmb3JtYXRpb25fc3JjX2V2ZW50IChHc3RCYXNlVHJhbnNmb3JtICogdHJhbnMsIEdzdEV2ZW50ICogZXZlbnQpCit7CisgIEdzdEdMVHJhbnNmb3JtYXRpb24gKnRyYW5zZm9ybWF0aW9uID0gR1NUX0dMX1RSQU5TRk9STUFUSU9OICh0cmFucyk7CisgIEdzdEdMRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfRklMVEVSICh0cmFucyk7CisgIGdkb3VibGUgbmV3X3gsIG5ld195LCB4LCB5OworICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKKyAgZ2Jvb2xlYW4gcmV0OworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHRyYW5zLCAiaGFuZGxpbmcgJXMgZXZlbnQiLCBHU1RfRVZFTlRfVFlQRV9OQU1FIChldmVudCkpOworCisgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgeworICAgIGNhc2UgR1NUX0VWRU5UX05BVklHQVRJT046CisgICAgICBldmVudCA9CisgICAgICAgICAgR1NUX0VWRU5UIChnc3RfbWluaV9vYmplY3RfbWFrZV93cml0YWJsZSAoR1NUX01JTklfT0JKRUNUIChldmVudCkpKTsKKworICAgICAgc3RydWN0dXJlID0gKEdzdFN0cnVjdHVyZSAqKSBnc3RfZXZlbnRfZ2V0X3N0cnVjdHVyZSAoZXZlbnQpOworICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZSAoc3RydWN0dXJlLCAicG9pbnRlcl94IiwgJngpICYmCisgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfZG91YmxlIChzdHJ1Y3R1cmUsICJwb2ludGVyX3kiLCAmeSkpIHsKKyAgICAgICAgZ2Zsb2F0IHcgPSAoZ2Zsb2F0KSBHU1RfVklERU9fSU5GT19XSURUSCAoJmZpbHRlci0+aW5faW5mbyk7CisgICAgICAgIGdmbG9hdCBoID0gKGdmbG9hdCkgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmZmlsdGVyLT5pbl9pbmZvKTsKKyAgICAgICAgZ3JhcGhlbmVfcG9pbnQzZF90IHNjcmVlbl9wb2ludF9uZWFyLCBzY3JlZW5fcG9pbnRfZmFyOworICAgICAgICBncmFwaGVuZV9wb2ludDNkX3QgbW9kZWxfY29vcmRfbmVhciwgbW9kZWxfY29vcmRfZmFyOworICAgICAgICBncmFwaGVuZV9wb2ludDNkX3QgYm90dG9tX2xlZnQsIGJvdHRvbV9yaWdodCwgdG9wX2xlZnQsIHRvcF9yaWdodDsKKyAgICAgICAgZ3JhcGhlbmVfcG9pbnQzZF90IHJlc3VsdDsKKyAgICAgICAgZ3JhcGhlbmVfdmVjM190IHBsYW5lX25vcm1hbDsKKyAgICAgICAgZ3JhcGhlbmVfcGxhbmVfdCB2aWRlb19wbGFuZTsKKyAgICAgICAgZ2Zsb2F0IGQ7CisKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAodHJhbnMsICJjb252ZXJ0aW5nICVmLCVmIiwgeCwgeSk7CisKKyAgICAgICAgZ3JhcGhlbmVfcG9pbnQzZF9pbml0ICgmdG9wX2xlZnQsIC0xLiwgMS4sIDAuKTsKKyAgICAgICAgZ3JhcGhlbmVfcG9pbnQzZF9pbml0ICgmdG9wX3JpZ2h0LCAxLiwgMS4sIDAuKTsKKyAgICAgICAgZ3JhcGhlbmVfcG9pbnQzZF9pbml0ICgmYm90dG9tX2xlZnQsIC0xLiwgLTEuLCAwLik7CisgICAgICAgIGdyYXBoZW5lX3BvaW50M2RfaW5pdCAoJmJvdHRvbV9yaWdodCwgMS4sIC0xLiwgMC4pOworICAgICAgICAvKiB0byBOREMgKi8KKyAgICAgICAgZ3JhcGhlbmVfcG9pbnQzZF9pbml0ICgmc2NyZWVuX3BvaW50X25lYXIsIDIuICogeCAvIHcgLSAxLiwKKyAgICAgICAgICAgIDIuICogeSAvIGggLSAxLiwgLTEuKTsKKyAgICAgICAgZ3JhcGhlbmVfcG9pbnQzZF9pbml0ICgmc2NyZWVuX3BvaW50X2ZhciwgMi4gKiB4IC8gdyAtIDEuLAorICAgICAgICAgICAgMi4gKiB5IC8gaCAtIDEuLCAxLik7CisKKyAgICAgICAgX2ZpbmRfcGxhbmVfbm9ybWFsICgmYm90dG9tX2xlZnQsICZ0b3BfbGVmdCwgJnRvcF9yaWdodCwgJnBsYW5lX25vcm1hbCk7CisgICAgICAgIGdyYXBoZW5lX3BsYW5lX2luaXRfZnJvbV9wb2ludCAoJnZpZGVvX3BsYW5lLCAmcGxhbmVfbm9ybWFsLCAmdG9wX2xlZnQpOworICAgICAgICBkID0gZ3JhcGhlbmVfcGxhbmVfZ2V0X2NvbnN0YW50ICgmdmlkZW9fcGxhbmUpOworCisgICAgICAgIC8qIGdldCB0aGUgY2xvc2VzdCBhbmQgZnVydGhlc3QgcG9pbnRzIGluIHRoZSB2aWV3aW5nIGFyZWEgZm9yIHRoZQorICAgICAgICAgKiBzcGVjaWZpZWQgc2NyZWVuIGNvb3JkaW5hdGUgaW4gb3JkZXIgdG8gY29uc3RydWN0IGEgcmF5ICovCisgICAgICAgIF9maW5kX21vZGVsX2Nvb3JkcyAodHJhbnNmb3JtYXRpb24sICZzY3JlZW5fcG9pbnRfbmVhciwKKyAgICAgICAgICAgICZtb2RlbF9jb29yZF9uZWFyKTsKKyAgICAgICAgX2ZpbmRfbW9kZWxfY29vcmRzICh0cmFuc2Zvcm1hdGlvbiwgJnNjcmVlbl9wb2ludF9mYXIsCisgICAgICAgICAgICAmbW9kZWxfY29vcmRfZmFyKTsKKworICAgICAgICB7CisgICAgICAgICAgZ3JhcGhlbmVfdmVjM190IG1vZGVsX2Nvb3JkX25lYXJfdmVjMywgbW9kZWxfY29vcmRfZmFyX3ZlYzM7CisgICAgICAgICAgZ3JhcGhlbmVfdmVjM190IHRtcCwgaW50ZXJzZWN0aW9uLCBjb29yZF9kaXI7CisgICAgICAgICAgZ2Zsb2F0IG51bSwgZGVub20sIHQ7CisKKyAgICAgICAgICAvKiBnZXQgdGhlIGRpcmVjdGlvbiBvZiB0aGUgcmF5ICovCisgICAgICAgICAgZ3JhcGhlbmVfcG9pbnQzZF90b192ZWMzICgmbW9kZWxfY29vcmRfbmVhciwgJm1vZGVsX2Nvb3JkX25lYXJfdmVjMyk7CisgICAgICAgICAgZ3JhcGhlbmVfcG9pbnQzZF90b192ZWMzICgmbW9kZWxfY29vcmRfZmFyLCAmbW9kZWxfY29vcmRfZmFyX3ZlYzMpOworICAgICAgICAgIGdyYXBoZW5lX3ZlYzNfc3VidHJhY3QgKCZtb2RlbF9jb29yZF9uZWFyX3ZlYzMsICZtb2RlbF9jb29yZF9mYXJfdmVjMywKKyAgICAgICAgICAgICAgJmNvb3JkX2Rpcik7CisKKyAgICAgICAgICAvKiBJbnRlcnNlY3QgdGhlIHJheSB3aXRoIHRoZSB2aWRlbyBwbGFuZSB0byBmaW5kIHRoZSBkaXN0YW5jZSwgdDoKKyAgICAgICAgICAgKiBSYXk6IFAgPSBQMCArIHQgUGRpcgorICAgICAgICAgICAqIFBsYW5lOiBQIGRvdCBOICsgZCA9IDAKKyAgICAgICAgICAgKgorICAgICAgICAgICAqIFN1YnN0aXR1dGluZyBmb3IgUCBhbmQgcmVhcnJhbmdpbmcgZ2l2ZXM6CisgICAgICAgICAgICoKKyAgICAgICAgICAgKiB0ID0gKFAwIGRvdCBOICsgZCkgLyAoUGRpciBkb3QgTikgKi8KKyAgICAgICAgICBkZW5vbSA9IGdyYXBoZW5lX3ZlYzNfZG90ICgmY29vcmRfZGlyLCAmcGxhbmVfbm9ybWFsKTsKKyAgICAgICAgICBudW0gPSBncmFwaGVuZV92ZWMzX2RvdCAoJm1vZGVsX2Nvb3JkX25lYXJfdmVjMywgJnBsYW5lX25vcm1hbCk7CisgICAgICAgICAgdCA9IC0obnVtICsgZCkgLyBkZW5vbTsKKworICAgICAgICAgIC8qIHZpZGVvIGNvb3JkID0gUDAgKyB0IFBkaXIgKi8KKyAgICAgICAgICBncmFwaGVuZV92ZWMzX3NjYWxlICgmY29vcmRfZGlyLCB0LCAmdG1wKTsKKyAgICAgICAgICBncmFwaGVuZV92ZWMzX2FkZCAoJnRtcCwgJm1vZGVsX2Nvb3JkX25lYXJfdmVjMywgJmludGVyc2VjdGlvbik7CisgICAgICAgICAgZ3JhcGhlbmVfcG9pbnQzZF9pbml0X2Zyb21fdmVjMyAoJnJlc3VsdCwgJmludGVyc2VjdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBuZXdfeCA9IChyZXN1bHQueCAvIHRyYW5zZm9ybWF0aW9uLT5hc3BlY3QgKyAxLikgKiB3IC8gMjsKKyAgICAgICAgbmV3X3kgPSAocmVzdWx0LnkgKyAxLikgKiBoIC8gMjsKKworICAgICAgICBpZiAobmV3X3ggPCAwLiB8fCBuZXdfeCA+IHcgfHwgbmV3X3kgPCAwIHx8IG5ld195ID4gaCkgeworICAgICAgICAgIC8qIGNvb3JkcyBvZmYgdmlkZW8gc3VyZmFjZSAqLworICAgICAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOworICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgICB9CisKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAodHJhbnMsICJ0byAlZnglZiIsIG5ld194LCBuZXdfeSk7CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzdHJ1Y3R1cmUsICJwb2ludGVyX3giLCBHX1RZUEVfRE9VQkxFLCBuZXdfeCwKKyAgICAgICAgICAgICJwb2ludGVyX3kiLCBHX1RZUEVfRE9VQkxFLCBuZXdfeSwgTlVMTCk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXQgPSBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNyY19ldmVudCAodHJhbnMsIGV2ZW50KTsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZAogZ3N0X2dsX3RyYW5zZm9ybWF0aW9uX3Jlc2V0X2dsIChHc3RHTEZpbHRlciAqIGZpbHRlcikKIHsKICAgR3N0R0xUcmFuc2Zvcm1hdGlvbiAqdHJhbnNmb3JtYXRpb24gPSBHU1RfR0xfVFJBTlNGT1JNQVRJT04gKGZpbHRlcik7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5oIGIvZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uaAppbmRleCA2YjkwNTFhLi43ZDQxYzYxIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5oCisrKyBiL2V4dC9nbC9nc3RnbHRyYW5zZm9ybWF0aW9uLmgKQEAgLTcxLDYgKzcxLDkgQEAKICAgICBnZmxvYXQgemZhcjsKICAgICBnYm9vbGVhbiBvcnRobzsKIAorICAgIGdyYXBoZW5lX21hdHJpeF90IG1vZGVsX21hdHJpeDsKKyAgICBncmFwaGVuZV9tYXRyaXhfdCB2aWV3X21hdHJpeDsKKyAgICBncmFwaGVuZV9tYXRyaXhfdCBwcm9qZWN0aW9uX21hdHJpeDsKICAgICBncmFwaGVuZV9tYXRyaXhfdCBtdnBfbWF0cml4OwogCiAgICAgZ2Jvb2xlYW4gY2Fwc19jaGFuZ2U7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2x1cGxvYWRlbGVtZW50LmMgYi9leHQvZ2wvZ3N0Z2x1cGxvYWRlbGVtZW50LmMKaW5kZXggODNmZjI0Yy4uODZlOGIwMSAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsdXBsb2FkZWxlbWVudC5jCisrKyBiL2V4dC9nbC9nc3RnbHVwbG9hZGVsZW1lbnQuYwpAQCAtMjIwLDggKzIyMCw2IEBACiAgICAgcmV0dXJuIEdTVF9GTE9XX05PVF9ORUdPVElBVEVEOwogCiAgIHJldCA9IGdzdF9nbF91cGxvYWRfcGVyZm9ybV93aXRoX2J1ZmZlciAodXBsb2FkLT51cGxvYWQsIGJ1ZmZlciwgb3V0YnVmKTsKLSAgLyogRklYTUUgSGF2aW5nIHRvIHJlbGVhc2UgYWZ0ZXIgcGVyZm9ybSBpcyBhbiBhYmVyYXRpb24gKi8KLSAgZ3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlciAodXBsb2FkLT51cGxvYWQpOwogCiAgIGlmIChyZXQgIT0gR1NUX0dMX1VQTE9BRF9ET05FIHx8ICpvdXRidWYgPT0gTlVMTCkgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SIChidCwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsCmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2x2aWRlb2ZsaXAuYyBiL2V4dC9nbC9nc3RnbHZpZGVvZmxpcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYWU3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvZ2wvZ3N0Z2x2aWRlb2ZsaXAuYwpAQCAtMCwwICsxLDUwOSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE2IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1nbHZpZGVvX2ZsaXAKKyAqCisgKiBUcmFuc2Zvcm1zIHZpZGVvIG9uIHRoZSBHUFUuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBnbHVwbG9hZCAhIGdsdmlkZW9mbGlwIG1ldGhvZD1jbG9ja3dpc2UgISBnbGltYWdlc2lua2VsZW1lbnQKKyAqIF18IFRoaXMgcGlwZWxpbmUgZmxpcHMgdGhlIHRlc3QgaW1hZ2UgOTAgZGVncmVlcyBjbG9ja3dpc2UuCisgKiA8L3JlZnNlY3QyPgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImdzdGdsdmlkZW9mbGlwLmgiCisKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9nbF92aWRlb19mbGlwX2RlYnVnCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0RFRkFVTFQpOworCisjZGVmaW5lIERFRkFVTFRfTUVUSE9EIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9JREVOVElUWQorCitlbnVtCit7CisgIFBST1BfMCwKKyAgUFJPUF9NRVRIT0QsCit9OworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgX3NpbmtfdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAorICAgIEdTVF9QQURfU0lOSywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdygiIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSAiKSwgIgorICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgUkdCQSwgIgorICAgICAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAgICAgImhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgICAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFICIsICIKKyAgICAgICAgInRleHR1cmUtdGFyZ2V0ID0gKHN0cmluZykgMkQiKSk7CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBfc3JjX3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAorICAgIEdTVF9QQURfU1JDLAorICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3KCIgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZICIpLCAiCisgICAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSBSR0JBLCAiCisgICAgICAgICJ3aWR0aCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgICAiaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiCisgICAgICAgICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIiwgIgorICAgICAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSAyRCIpKTsKKworI2RlZmluZSBHU1RfVFlQRV9HTF9WSURFT19GTElQX01FVEhPRCAoZ3N0X3ZpZGVvX2ZsaXBfbWV0aG9kX2dldF90eXBlKCkpCitzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSB2aWRlb19mbGlwX21ldGhvZHNbXSA9IHsKKyAge0dTVF9HTF9WSURFT19GTElQX01FVEhPRF9JREVOVElUWSwgIklkZW50aXR5IChubyByb3RhdGlvbikiLCAibm9uZSJ9LAorICB7R1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EXzkwUiwgIlJvdGF0ZSBjbG9ja3dpc2UgOTAgZGVncmVlcyIsICJjbG9ja3dpc2UifSwKKyAge0dTVF9HTF9WSURFT19GTElQX01FVEhPRF8xODAsICJSb3RhdGUgMTgwIGRlZ3JlZXMiLCAicm90YXRlLTE4MCJ9LAorICB7R1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EXzkwTCwgIlJvdGF0ZSBjb3VudGVyLWNsb2Nrd2lzZSA5MCBkZWdyZWVzIiwKKyAgICAgICJjb3VudGVyY2xvY2t3aXNlIn0sCisgIHtHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9IT1JJWiwgIkZsaXAgaG9yaXpvbnRhbGx5IiwgImhvcml6b250YWwtZmxpcCJ9LAorICB7R1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfVkVSVCwgIkZsaXAgdmVydGljYWxseSIsICJ2ZXJ0aWNhbC1mbGlwIn0sCisgIHtHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9VTF9MUiwKKyAgICAgICJGbGlwIGFjcm9zcyB1cHBlciBsZWZ0L2xvd2VyIHJpZ2h0IGRpYWdvbmFsIiwgInVwcGVyLWxlZnQtZGlhZ29uYWwifSwKKyAge0dTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX1VSX0xMLAorICAgICAgIkZsaXAgYWNyb3NzIHVwcGVyIHJpZ2h0L2xvd2VyIGxlZnQgZGlhZ29uYWwiLCAidXBwZXItcmlnaHQtZGlhZ29uYWwifSwKKyAge0dTVF9HTF9WSURFT19GTElQX01FVEhPRF9BVVRPLAorICAgICAgIlNlbGVjdCBmbGlwIG1ldGhvZCBiYXNlZCBvbiBpbWFnZS1vcmllbnRhdGlvbiB0YWciLCAiYXV0b21hdGljIn0sCisgIHswLCBOVUxMLCBOVUxMfSwKK307CisKK3N0YXRpYyBHVHlwZQorZ3N0X3ZpZGVvX2ZsaXBfbWV0aG9kX2dldF90eXBlICh2b2lkKQoreworICBzdGF0aWMgR1R5cGUgdmlkZW9fZmxpcF9tZXRob2RfdHlwZSA9IDA7CisKKyAgaWYgKCF2aWRlb19mbGlwX21ldGhvZF90eXBlKSB7CisgICAgdmlkZW9fZmxpcF9tZXRob2RfdHlwZSA9IGdfZW51bV9yZWdpc3Rlcl9zdGF0aWMgKCJHc3RHTFZpZGVvRmxpcE1ldGhvZCIsCisgICAgICAgIHZpZGVvX2ZsaXBfbWV0aG9kcyk7CisgIH0KKyAgcmV0dXJuIHZpZGVvX2ZsaXBfbWV0aG9kX3R5cGU7Cit9CisKKyNkZWZpbmUgZ3N0X2dsX3ZpZGVvX2ZsaXBfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdEdMVmlkZW9GbGlwLCBnc3RfZ2xfdmlkZW9fZmxpcCwKKyAgICBHU1RfVFlQRV9CSU4sIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX0RFRkFVTFQsCisgICAgICAgICJnbHZpZGVvZmxpcCIsIDAsICJnbHZpZGVvZmxpcCBlbGVtZW50Iik7KTsKKworc3RhdGljIHZvaWQgZ3N0X2dsX3ZpZGVvX2ZsaXBfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOworc3RhdGljIHZvaWQgZ3N0X2dsX3ZpZGVvX2ZsaXBfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOworc3RhdGljIHZvaWQgZ3N0X2dsX3ZpZGVvX2ZsaXBfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOworCitzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4gX2lucHV0X3NpbmtfcHJvYmUgKEdzdFBhZCAqIHBhZCwKKyAgICBHc3RQYWRQcm9iZUluZm8gKiBpbmZvLCBncG9pbnRlciB1c2VyX2RhdGEpOworc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIF90cmFuc19zcmNfcHJvYmUgKEdzdFBhZCAqIHBhZCwgR3N0UGFkUHJvYmVJbmZvICogaW5mbywKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpOworCitzdGF0aWMgdm9pZAorZ3N0X2dsX3ZpZGVvX2ZsaXBfY2xhc3NfaW5pdCAoR3N0R0xWaWRlb0ZsaXBDbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CisgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzczsKKworICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKKyAgZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CisKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfZ2xfdmlkZW9fZmxpcF9maW5hbGl6ZTsKKyAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2dsX3ZpZGVvX2ZsaXBfc2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfZ2xfdmlkZW9fZmxpcF9nZXRfcHJvcGVydHk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NRVRIT0QsCisgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoIm1ldGhvZCIsICJtZXRob2QiLCAibWV0aG9kIiwKKyAgICAgICAgICBHU1RfVFlQRV9HTF9WSURFT19GTElQX01FVEhPRCwgREVGQVVMVF9NRVRIT0QsCisgICAgICAgICAgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QgfAorICAgICAgICAgIEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmX3NyY190ZW1wbGF0ZSkpOworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmX3NpbmtfdGVtcGxhdGUpKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsICJPcGVuR0wgdmlkZW8gZmxpcCBmaWx0ZXIiLAorICAgICAgIkZpbHRlci9FZmZlY3QvVmlkZW8iLCAiRmxpcCB2aWRlbyBvbiB0aGUgR1BVIiwKKyAgICAgICJNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+Iik7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfdmlkZW9fZmxpcF9pbml0IChHc3RHTFZpZGVvRmxpcCAqIGZsaXApCit7CisgIGdib29sZWFuIHJlcyA9IFRSVUU7CisgIEdzdFBhZCAqcGFkOworCisgIGZsaXAtPmFzcGVjdCA9IDEuMDsKKworICBmbGlwLT5pbnB1dF9jYXBzZmlsdGVyID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiY2Fwc2ZpbHRlciIsIE5VTEwpOworICByZXMgJj0gZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKGZsaXApLCBmbGlwLT5pbnB1dF9jYXBzZmlsdGVyKTsKKworICBmbGlwLT50cmFuc2Zvcm1hdGlvbiA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImdsdHJhbnNmb3JtYXRpb24iLCBOVUxMKTsKKyAgZ19vYmplY3Rfc2V0IChmbGlwLT50cmFuc2Zvcm1hdGlvbiwgIm9ydGhvIiwgVFJVRSwgTlVMTCk7CisgIHJlcyAmPSBnc3RfYmluX2FkZCAoR1NUX0JJTiAoZmxpcCksIGZsaXAtPnRyYW5zZm9ybWF0aW9uKTsKKworICBmbGlwLT5vdXRwdXRfY2Fwc2ZpbHRlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImNhcHNmaWx0ZXIiLCBOVUxMKTsKKyAgcmVzICY9IGdzdF9iaW5fYWRkIChHU1RfQklOIChmbGlwKSwgZmxpcC0+b3V0cHV0X2NhcHNmaWx0ZXIpOworCisgIHJlcyAmPQorICAgICAgZ3N0X2VsZW1lbnRfbGlua19wYWRzIChmbGlwLT5pbnB1dF9jYXBzZmlsdGVyLCAic3JjIiwKKyAgICAgIGZsaXAtPnRyYW5zZm9ybWF0aW9uLCAic2luayIpOworICByZXMgJj0KKyAgICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkcyAoZmxpcC0+dHJhbnNmb3JtYXRpb24sICJzcmMiLAorICAgICAgZmxpcC0+b3V0cHV0X2NhcHNmaWx0ZXIsICJzaW5rIik7CisKKyAgcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKGZsaXAtPmlucHV0X2NhcHNmaWx0ZXIsICJzaW5rIik7CisgIGlmICghcGFkKSB7CisgICAgcmVzID0gRkFMU0U7CisgIH0gZWxzZSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoZmxpcCwgInNldHRpbmcgdGFyZ2V0IHNpbmsgcGFkICUiIEdTVF9QVFJfRk9STUFULCBwYWQpOworICAgIGZsaXAtPnNpbmtwYWQgPSBnc3RfZ2hvc3RfcGFkX25ldyAoInNpbmsiLCBwYWQpOworICAgIGZsaXAtPnNpbmtfcHJvYmUgPSBnc3RfcGFkX2FkZF9wcm9iZSAoZmxpcC0+c2lua3BhZCwKKyAgICAgICAgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0gfAorICAgICAgICBHU1RfUEFEX1BST0JFX1RZUEVfUVVFUllfRE9XTlNUUkVBTSwKKyAgICAgICAgKEdzdFBhZFByb2JlQ2FsbGJhY2spIF9pbnB1dF9zaW5rX3Byb2JlLCBmbGlwLCBOVUxMKTsKKyAgICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVF9DQVNUIChmbGlwKSwgZmxpcC0+c2lua3BhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZiAocGFkKTsKKyAgfQorCisgIHBhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChmbGlwLT50cmFuc2Zvcm1hdGlvbiwgInNyYyIpOworICBmbGlwLT5zcmNfcHJvYmUgPSBnc3RfcGFkX2FkZF9wcm9iZSAocGFkLAorICAgICAgR1NUX1BBRF9QUk9CRV9UWVBFX1FVRVJZX0RPV05TVFJFQU0sCisgICAgICAoR3N0UGFkUHJvYmVDYWxsYmFjaykgX3RyYW5zX3NyY19wcm9iZSwgZmxpcCwgTlVMTCk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHBhZCk7CisKKyAgcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKGZsaXAtPm91dHB1dF9jYXBzZmlsdGVyLCAic3JjIik7CisgIGlmICghcGFkKSB7CisgICAgcmVzID0gRkFMU0U7CisgIH0gZWxzZSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoZmxpcCwgInNldHRpbmcgdGFyZ2V0IHNpbmsgcGFkICUiIEdTVF9QVFJfRk9STUFULCBwYWQpOworICAgIGZsaXAtPnNyY3BhZCA9IGdzdF9naG9zdF9wYWRfbmV3ICgic3JjIiwgcGFkKTsKKyAgICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVF9DQVNUIChmbGlwKSwgZmxpcC0+c3JjcGFkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChwYWQpOworICB9CisKKyAgaWYgKCFyZXMpIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGZsaXAsICJGYWlsZWQgdG8gYWRkL2Nvbm5lY3QgdGhlIG5lY2Vzc2FyeSBtYWNoaW5lcnkiKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX3ZpZGVvX2ZsaXBfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdEdMVmlkZW9GbGlwICpmbGlwID0gR1NUX0dMX1ZJREVPX0ZMSVAgKG9iamVjdCk7CisKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJmZsaXAtPmlucHV0X2NhcHMsIE5VTEwpOworCisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworLyogQ2FwcyBuZWdvdGlhdGlvbiBoYXBwZW5zIGxpa2UgdGhpczoKKyAqCisgKiAxLiBjYXBzL2FjY2VwdC1jYXBzIHF1ZXJpZXMgYnlwYXNzIHRoZSBjYXBzZmlsdGVycyBvbiBlaXRoZXIgc2lkZSBvZiB0aGUKKyAqICAgIHRyYW5zZm9ybWF0aW9uIGVsZW1lbnQgc28gdGhlIGZpeGVkIGNhcHMgZG9uJ3QgZ2V0IGluIHRoZSB3YXkuCisgKiAyLiBSZWNlaXZpbmcgYSBjYXBzIGV2ZW50IG9uIHRoZSBzaW5rIHBhZCB3aWxsIHNldCBmaXhlZCBjYXBzIG9uIGVpdGhlciBzaWRlCisgKiAgICBvZiB0aGUgdHJhbnNmb3JtYXRpb24gZWxlbWVudC4KKyAqLworc3RhdGljIEdzdENhcHMgKgorX3RyYW5zZm9ybV9jYXBzIChHc3RHTFZpZGVvRmxpcCAqIHZmLCBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RDYXBzICogY2FwcykKK3sKKyAgR3N0Q2FwcyAqb3V0cHV0ID0gZ3N0X2NhcHNfY29weSAoY2Fwcyk7CisgIGdpbnQgaTsKKworICBmb3IgKGkgPSAwOyBpIDwgZ3N0X2NhcHNfZ2V0X3NpemUgKG91dHB1dCk7IGkrKykgeworICAgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAob3V0cHV0LCBpKTsKKyAgICBnaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgZ2ludCBwYXJfbiwgcGFyX2Q7CisKKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCkgJiYKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJoZWlnaHQiLCAmaGVpZ2h0KSkgeworCisgICAgICBzd2l0Y2ggKHZmLT5hY3RpdmVfbWV0aG9kKSB7CisgICAgICAgIGNhc2UgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EXzkwUjoKKyAgICAgICAgY2FzZSBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfOTBMOgorICAgICAgICBjYXNlIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX1VMX0xSOgorICAgICAgICBjYXNlIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX1VSX0xMOgorICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzdHJ1Y3R1cmUsICJ3aWR0aCIsIEdfVFlQRV9JTlQsIGhlaWdodCwKKyAgICAgICAgICAgICAgImhlaWdodCIsIEdfVFlQRV9JTlQsIHdpZHRoLCBOVUxMKTsKKyAgICAgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24gKHN0cnVjdHVyZSwgInBpeGVsLWFzcGVjdC1yYXRpbyIsCisgICAgICAgICAgICAgICAgICAmcGFyX24sICZwYXJfZCkpIHsKKyAgICAgICAgICAgIGlmIChwYXJfbiAhPSAxIHx8IHBhcl9kICE9IDEpIHsKKyAgICAgICAgICAgICAgR1ZhbHVlIHZhbCA9IHsgMCwgfTsKKworICAgICAgICAgICAgICBnX3ZhbHVlX2luaXQgKCZ2YWwsIEdTVF9UWVBFX0ZSQUNUSU9OKTsKKyAgICAgICAgICAgICAgZ3N0X3ZhbHVlX3NldF9mcmFjdGlvbiAoJnZhbCwgcGFyX2QsIHBhcl9uKTsKKyAgICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHN0cnVjdHVyZSwgInBpeGVsLWFzcGVjdC1yYXRpbyIsICZ2YWwpOworICAgICAgICAgICAgICBnX3ZhbHVlX3Vuc2V0ICgmdmFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0lERU5USVRZOgorICAgICAgICBjYXNlIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF8xODA6CisgICAgICAgIGNhc2UgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfSE9SSVo6CisgICAgICAgIGNhc2UgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfVkVSVDoKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICByZXR1cm4gb3V0cHV0OworfQorCisvKiB3aXRoIG9iamVjdCBsb2NrICovCitzdGF0aWMgdm9pZAorX3NldF9hY3RpdmVfbWV0aG9kIChHc3RHTFZpZGVvRmxpcCAqIHZmLCBHc3RHTFZpZGVvRmxpcE1ldGhvZCBtZXRob2QsCisgICAgR3N0Q2FwcyAqIGNhcHMpCit7CisgIGdmbG9hdCByb3RfeiA9IDAuLCBzY2FsZV94ID0gMS4wLCBzY2FsZV95ID0gMS4wOworICBHc3RDYXBzICpvdXRwdXRfY2FwcywgKnRlbXBsOworICBHc3RQYWQgKnNyY3BhZDsKKworICBzd2l0Y2ggKG1ldGhvZCkgeworICAgIGNhc2UgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0lERU5USVRZOgorICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfOTBSOgorICAgICAgc2NhbGVfeCAqPSB2Zi0+YXNwZWN0OworICAgICAgc2NhbGVfeSAqPSAxLiAvIHZmLT5hc3BlY3Q7CisgICAgICByb3RfeiA9IDkwLjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EXzE4MDoKKyAgICAgIHJvdF96ID0gMTgwLjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EXzkwTDoKKyAgICAgIHNjYWxlX3ggKj0gdmYtPmFzcGVjdDsKKyAgICAgIHNjYWxlX3kgKj0gMS4gLyB2Zi0+YXNwZWN0OworICAgICAgcm90X3ogPSAyNzAuOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9IT1JJWjoKKyAgICAgIHNjYWxlX3ggKj0gLTEuOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9VUl9MTDoKKyAgICAgIHNjYWxlX3ggKj0gLXZmLT5hc3BlY3Q7CisgICAgICBzY2FsZV95ICo9IDEuIC8gdmYtPmFzcGVjdDsKKyAgICAgIHJvdF96ID0gOTAuOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9WRVJUOgorICAgICAgc2NhbGVfeCAqPSAtMS47CisgICAgICByb3RfeiA9IDE4MC47CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX1VMX0xSOgorICAgICAgc2NhbGVfeCAqPSAtdmYtPmFzcGVjdDsKKyAgICAgIHNjYWxlX3kgKj0gMS4gLyB2Zi0+YXNwZWN0OworICAgICAgcm90X3ogPSAyNzAuOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisgIHZmLT5hY3RpdmVfbWV0aG9kID0gbWV0aG9kOworCisgIG91dHB1dF9jYXBzID0gX3RyYW5zZm9ybV9jYXBzICh2ZiwgR1NUX1BBRF9TSU5LLCBjYXBzKTsKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJnZmLT5pbnB1dF9jYXBzLCBjYXBzKTsKKworICBzcmNwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAodmYtPnRyYW5zZm9ybWF0aW9uLCAic3JjIik7CisgIHRlbXBsID0gZ3N0X3BhZF9nZXRfcGFkX3RlbXBsYXRlX2NhcHMgKHNyY3BhZCk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHNyY3BhZCk7CisKKyAgZ3N0X2NhcHNfYXBwZW5kIChvdXRwdXRfY2FwcywgZ3N0X2NhcHNfcmVmICh0ZW1wbCkpOworICBHU1RfT0JKRUNUX1VOTE9DSyAodmYpOworCisgIGdfb2JqZWN0X3NldCAodmYtPmlucHV0X2NhcHNmaWx0ZXIsICJjYXBzIiwgZ3N0X2NhcHNfcmVmIChjYXBzKSwgTlVMTCk7CisgIGdfb2JqZWN0X3NldCAodmYtPm91dHB1dF9jYXBzZmlsdGVyLCAiY2FwcyIsIG91dHB1dF9jYXBzLCBOVUxMKTsKKyAgZ19vYmplY3Rfc2V0ICh2Zi0+dHJhbnNmb3JtYXRpb24sICJyb3RhdGlvbi16Iiwgcm90X3osICJzY2FsZS14Iiwgc2NhbGVfeCwKKyAgICAgICJzY2FsZS15Iiwgc2NhbGVfeSwgTlVMTCk7CisgIEdTVF9PQkpFQ1RfTE9DSyAodmYpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX3ZpZGVvX2ZsaXBfc2V0X21ldGhvZCAoR3N0R0xWaWRlb0ZsaXAgKiB2ZiwgR3N0R0xWaWRlb0ZsaXBNZXRob2QgbWV0aG9kLAorICAgIGdib29sZWFuIGZyb21fdGFnKQoreworICBHU1RfT0JKRUNUX0xPQ0sgKHZmKTsKKyAgLyogU3RvcmUgdXBkYXRlZCBtZXRob2QgKi8KKyAgaWYgKGZyb21fdGFnKQorICAgIHZmLT50YWdfbWV0aG9kID0gbWV0aG9kOworICBlbHNlCisgICAgdmYtPm1ldGhvZCA9IG1ldGhvZDsKKworICAvKiBHZXQgdGhlIG5ldyBtZXRob2QgKi8KKyAgaWYgKHZmLT5tZXRob2QgPT0gR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0FVVE8pCisgICAgbWV0aG9kID0gdmYtPnRhZ19tZXRob2Q7CisgIGVsc2UKKyAgICBtZXRob2QgPSB2Zi0+bWV0aG9kOworCisgIGlmICh2Zi0+aW5wdXRfY2FwcykKKyAgICBfc2V0X2FjdGl2ZV9tZXRob2QgKHZmLCBtZXRob2QsIHZmLT5pbnB1dF9jYXBzKTsKKyAgZWxzZSB7CisgICAgLyoganVzdCBzdG9yZSB0aGUgY29uZmlndXJlZCBtZXRob2QgaGVyZS4gVGhlIGFjdHVhbCB0cmFuc2Zvcm0gY29uZmlndXJhdGlvbgorICAgICAqIHdpbGwgYmUgZG9uZSBvbmNlIGNhcHMgYXJlIGNvbmZpZ3VyZWQuIFNlZSBjYXBzIGhhbmRsaW5nIGluCisgICAgICogX2lucHV0X3NpbmtfcHJvYmUuICovCisgICAgdmYtPmFjdGl2ZV9tZXRob2QgPSBtZXRob2Q7CisgIH0KKworICBHU1RfT0JKRUNUX1VOTE9DSyAodmYpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX3ZpZGVvX2ZsaXBfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdEdMVmlkZW9GbGlwICp2ZiA9IEdTVF9HTF9WSURFT19GTElQIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9NRVRIT0Q6CisgICAgICBnc3RfZ2xfdmlkZW9fZmxpcF9zZXRfbWV0aG9kICh2ZiwgZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpLCBGQUxTRSk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfdmlkZW9fZmxpcF9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0R0xWaWRlb0ZsaXAgKnZmID0gR1NUX0dMX1ZJREVPX0ZMSVAgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX01FVEhPRDoKKyAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCB2Zi0+bWV0aG9kKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuCitfaW5wdXRfc2lua19wcm9iZSAoR3N0UGFkICogcGFkLCBHc3RQYWRQcm9iZUluZm8gKiBpbmZvLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEdMVmlkZW9GbGlwICp2ZiA9IEdTVF9HTF9WSURFT19GTElQICh1c2VyX2RhdGEpOworCisgIGlmIChHU1RfUEFEX1BST0JFX0lORk9fVFlQRSAoaW5mbykgJiBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRE9XTlNUUkVBTSkgeworICAgIEdzdEV2ZW50ICpldmVudCA9IEdTVF9QQURfUFJPQkVfSU5GT19FVkVOVCAoaW5mbyk7CisKKyAgICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKKyAgICAgIGNhc2UgR1NUX0VWRU5UX1RBRzp7CisgICAgICAgIEdzdFRhZ0xpc3QgKnRhZ2xpc3Q7CisgICAgICAgIGdjaGFyICpvcmllbnRhdGlvbjsKKworICAgICAgICBnc3RfZXZlbnRfcGFyc2VfdGFnIChldmVudCwgJnRhZ2xpc3QpOworCisgICAgICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyAodGFnbGlzdCwgImltYWdlLW9yaWVudGF0aW9uIiwKKyAgICAgICAgICAgICAgICAmb3JpZW50YXRpb24pKSB7CisgICAgICAgICAgaWYgKCFnX3N0cmNtcDAgKCJyb3RhdGUtMCIsIG9yaWVudGF0aW9uKSkKKyAgICAgICAgICAgIGdzdF9nbF92aWRlb19mbGlwX3NldF9tZXRob2QgKHZmLCBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfSURFTlRJVFksCisgICAgICAgICAgICAgICAgVFJVRSk7CisgICAgICAgICAgZWxzZSBpZiAoIWdfc3RyY21wMCAoInJvdGF0ZS05MCIsIG9yaWVudGF0aW9uKSkKKyAgICAgICAgICAgIGdzdF9nbF92aWRlb19mbGlwX3NldF9tZXRob2QgKHZmLCBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfOTBSLAorICAgICAgICAgICAgICAgIFRSVUUpOworICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKCJyb3RhdGUtMTgwIiwgb3JpZW50YXRpb24pKQorICAgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2ZsaXBfc2V0X21ldGhvZCAodmYsIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF8xODAsCisgICAgICAgICAgICAgICAgVFJVRSk7CisgICAgICAgICAgZWxzZSBpZiAoIWdfc3RyY21wMCAoInJvdGF0ZS0yNzAiLCBvcmllbnRhdGlvbikpCisgICAgICAgICAgICBnc3RfZ2xfdmlkZW9fZmxpcF9zZXRfbWV0aG9kICh2ZiwgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EXzkwTCwKKyAgICAgICAgICAgICAgICBUUlVFKTsKKyAgICAgICAgICBlbHNlIGlmICghZ19zdHJjbXAwICgiZmxpcC1yb3RhdGUtMCIsIG9yaWVudGF0aW9uKSkKKyAgICAgICAgICAgIGdzdF9nbF92aWRlb19mbGlwX3NldF9tZXRob2QgKHZmLAorICAgICAgICAgICAgICAgIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX0hPUklaLCBUUlVFKTsKKyAgICAgICAgICBlbHNlIGlmICghZ19zdHJjbXAwICgiZmxpcC1yb3RhdGUtOTAiLCBvcmllbnRhdGlvbikpCisgICAgICAgICAgICBnc3RfZ2xfdmlkZW9fZmxpcF9zZXRfbWV0aG9kICh2ZiwKKyAgICAgICAgICAgICAgICBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9VUl9MTCwgVFJVRSk7CisgICAgICAgICAgZWxzZSBpZiAoIWdfc3RyY21wMCAoImZsaXAtcm90YXRlLTE4MCIsIG9yaWVudGF0aW9uKSkKKyAgICAgICAgICAgIGdzdF9nbF92aWRlb19mbGlwX3NldF9tZXRob2QgKHZmLAorICAgICAgICAgICAgICAgIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX1ZFUlQsIFRSVUUpOworICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKCJmbGlwLXJvdGF0ZS0yNzAiLCBvcmllbnRhdGlvbikpCisgICAgICAgICAgICBnc3RfZ2xfdmlkZW9fZmxpcF9zZXRfbWV0aG9kICh2ZiwKKyAgICAgICAgICAgICAgICBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9VTF9MUiwgVFJVRSk7CisKKyAgICAgICAgICBnX2ZyZWUgKG9yaWVudGF0aW9uKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGNhc2UgR1NUX0VWRU5UX0NBUFM6eworICAgICAgICBHc3RDYXBzICpjYXBzOworICAgICAgICBHc3RWaWRlb0luZm8gdl9pbmZvOworCisgICAgICAgIGdzdF9ldmVudF9wYXJzZV9jYXBzIChldmVudCwgJmNhcHMpOworICAgICAgICBHU1RfT0JKRUNUX0xPQ0sgKHZmKTsKKyAgICAgICAgaWYgKGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJnZfaW5mbywgY2FwcykpCisgICAgICAgICAgdmYtPmFzcGVjdCA9CisgICAgICAgICAgICAgIChnZmxvYXQpIEdTVF9WSURFT19JTkZPX1dJRFRIICgmdl9pbmZvKSAvCisgICAgICAgICAgICAgIChnZmxvYXQpIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJnZfaW5mbyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICB2Zi0+YXNwZWN0ID0gMS4wOworICAgICAgICBfc2V0X2FjdGl2ZV9tZXRob2QgKHZmLCB2Zi0+YWN0aXZlX21ldGhvZCwgY2Fwcyk7CisgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLICh2Zik7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9IGVsc2UgaWYgKEdTVF9QQURfUFJPQkVfSU5GT19UWVBFIChpbmZvKSAmCisgICAgICBHU1RfUEFEX1BST0JFX1RZUEVfUVVFUllfRE9XTlNUUkVBTSkgeworICAgIEdzdFF1ZXJ5ICpxdWVyeSA9IEdTVF9QQURfUFJPQkVfSU5GT19RVUVSWSAoaW5mbyk7CisKKyAgICBzd2l0Y2ggKEdTVF9RVUVSWV9UWVBFIChxdWVyeSkpIHsKKyAgICAgICAgLyogYnlwYXNzIHRoZSBjYXBzZmlsdGVyICovCisgICAgICBjYXNlIEdTVF9RVUVSWV9DQVBTOgorICAgICAgY2FzZSBHU1RfUVVFUllfQUNDRVBUX0NBUFM6eworICAgICAgICBHc3RQYWQgKnBhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkICh2Zi0+dHJhbnNmb3JtYXRpb24sICJzaW5rIik7CisgICAgICAgIGlmIChnc3RfcGFkX3F1ZXJ5IChwYWQsIHF1ZXJ5KSkgeworICAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHBhZCk7CisgICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfSEFORExFRDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBnc3Rfb2JqZWN0X3VucmVmIChwYWQpOworICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX0RST1A7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOworfQorCitzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4KK190cmFuc19zcmNfcHJvYmUgKEdzdFBhZCAqIHBhZCwgR3N0UGFkUHJvYmVJbmZvICogaW5mbywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RHTFZpZGVvRmxpcCAqdmYgPSBHU1RfR0xfVklERU9fRkxJUCAodXNlcl9kYXRhKTsKKworICBpZiAoR1NUX1BBRF9QUk9CRV9JTkZPX1RZUEUgKGluZm8pICYgR1NUX1BBRF9QUk9CRV9UWVBFX1FVRVJZX0RPV05TVFJFQU0pIHsKKyAgICBHc3RRdWVyeSAqcXVlcnkgPSBHU1RfUEFEX1BST0JFX0lORk9fUVVFUlkgKGluZm8pOworCisgICAgc3dpdGNoIChHU1RfUVVFUllfVFlQRSAocXVlcnkpKSB7CisgICAgICAgIC8qIGJ5cGFzcyB0aGUgY2Fwc2ZpbHRlciAqLworICAgICAgY2FzZSBHU1RfUVVFUllfQ0FQUzoKKyAgICAgIGNhc2UgR1NUX1FVRVJZX0FDQ0VQVF9DQVBTOnsKKyAgICAgICAgaWYgKGdzdF9wYWRfcGVlcl9xdWVyeSAodmYtPnNyY3BhZCwgcXVlcnkpKQorICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX0hBTkRMRUQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9EUk9QOworICAgICAgfQorICAgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7Cit9CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2x2aWRlb2ZsaXAuaCBiL2V4dC9nbC9nc3RnbHZpZGVvZmxpcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiOGU4MWIKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvZ2wvZ3N0Z2x2aWRlb2ZsaXAuaApAQCAtMCwwICsxLDk3IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX0dTVF9HTF9WSURFT19GTElQX0hfCisjZGVmaW5lIF9HU1RfR0xfVklERU9fRkxJUF9IXworCisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9HTF9WSURFT19GTElQICAgICAgICAgICAgKGdzdF9nbF92aWRlb19mbGlwX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9HTF9WSURFT19GTElQKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfR0xfVklERU9fRkxJUCxHc3RHTFZpZGVvRmxpcCkpCisjZGVmaW5lIEdTVF9JU19HTF9WSURFT19GTElQKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfR0xfVklERU9fRkxJUCkpCisjZGVmaW5lIEdTVF9HTF9WSURFT19GTElQX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSAsR1NUX1RZUEVfR0xfVklERU9fRkxJUCxHc3RHTFZpZGVvRmxpcENsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1ZJREVPX0ZMSVBfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpICxHU1RfVFlQRV9HTF9WSURFT19GTElQKSkKKyNkZWZpbmUgR1NUX0dMX1ZJREVPX0ZMSVBfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopICxHU1RfVFlQRV9HTF9WSURFT19GTElQLEdzdEdMVmlkZW9GbGlwQ2xhc3MpKQorCisvKioKKyAqIEdzdFZpZGVvRmxpcE1ldGhvZDoKKyAqIEBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfSURFTlRJVFk6IElkZW50aXR5IChubyByb3RhdGlvbikKKyAqIEBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfOTBSOiBSb3RhdGUgY2xvY2t3aXNlIDkwIGRlZ3JlZXMKKyAqIEBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfMTgwOiBSb3RhdGUgMTgwIGRlZ3JlZXMKKyAqIEBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfOTBMOiBSb3RhdGUgY291bnRlci1jbG9ja3dpc2UgOTAgZGVncmVlcworICogQEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX0hPUklaOiBGbGlwIGhvcml6b250YWxseQorICogQEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX1ZFUlQ6IEZsaXAgdmVydGljYWxseQorICogQEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX1VMX0xSOiBGbGlwIGFjcm9zcyB1cHBlciBsZWZ0L2xvd2VyIHJpZ2h0IGRpYWdvbmFsCisgKiBAR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfVVJfTEw6IEZsaXAgYWNyb3NzIHVwcGVyIHJpZ2h0L2xvd2VyIGxlZnQgZGlhZ29uYWwKKyAqIEBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfQVVUTzogU2VsZWN0IGZsaXAgbWV0aG9kIGJhc2VkIG9uIGltYWdlLW9yaWVudGF0aW9uIHRhZworICoKKyAqIFRoZSBkaWZmZXJlbnQgZmxpcCBtZXRob2RzLgorICovCit0eXBlZGVmIGVudW0geworICBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfSURFTlRJVFksCisgIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF85MFIsCisgIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF8xODAsCisgIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF85MEwsCisgIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX0hPUklaLAorICBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9WRVJULAorICBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9VTF9MUiwKKyAgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfVVJfTEwsCisgIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9BVVRPLAorfSBHc3RHTFZpZGVvRmxpcE1ldGhvZDsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMVmlkZW9GbGlwIEdzdEdMVmlkZW9GbGlwOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMVmlkZW9GbGlwQ2xhc3MgR3N0R0xWaWRlb0ZsaXBDbGFzczsKKworc3RydWN0IF9Hc3RHTFZpZGVvRmxpcAoreworICBHc3RCaW4gICAgICAgIGJpbjsKKworICBHc3RQYWQgICAgICAgKnNyY3BhZDsKKyAgR3N0UGFkICAgICAgICpzaW5rcGFkOworCisgIEdzdEVsZW1lbnQgICAqaW5wdXRfY2Fwc2ZpbHRlcjsKKyAgR3N0RWxlbWVudCAgICp0cmFuc2Zvcm1hdGlvbjsKKyAgR3N0RWxlbWVudCAgICpvdXRwdXRfY2Fwc2ZpbHRlcjsKKworICBndWxvbmcgICAgICAgIHNpbmtfcHJvYmU7CisgIGd1bG9uZyAgICAgICAgc3JjX3Byb2JlOworCisgIEdzdENhcHMgICAgICAqaW5wdXRfY2FwczsKKworICAvKiBwcm9wZXJ0aWVzICovCisgIEdzdEdMVmlkZW9GbGlwTWV0aG9kIG1ldGhvZDsKKyAgR3N0R0xWaWRlb0ZsaXBNZXRob2QgdGFnX21ldGhvZDsKKyAgR3N0R0xWaWRlb0ZsaXBNZXRob2QgYWN0aXZlX21ldGhvZDsKKworICBnZmxvYXQgYXNwZWN0OworfTsKKworc3RydWN0IF9Hc3RHTFZpZGVvRmxpcENsYXNzCit7CisgIEdzdEJpbkNsYXNzIGZpbHRlcl9jbGFzczsKK307CisKK0dUeXBlIGdzdF9nbF92aWRlb19mbGlwX2dldF90eXBlICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9HU1RfR0xfVklERU9fRkxJUF9IXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsdmlkZW9taXhlci5jIGIvZXh0L2dsL2dzdGdsdmlkZW9taXhlci5jCmluZGV4IDkzNzY3OTMuLjIwOGE2ZGYgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbHZpZGVvbWl4ZXIuYworKysgYi9leHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmMKQEAgLTcxLDE1MSArNzEsNzIgQEAKICAgcmV0dXJuIG1peGVyX2JhY2tncm91bmRfdHlwZTsKIH0KIAotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5IEdzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5OwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5Q2xhc3MKLSAgICBHc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eUNsYXNzOwotCi1zdHJ1Y3QgX0dzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5CisjZGVmaW5lIEdTVF9UWVBFX0dMX1ZJREVPX01JWEVSX0JMRU5EX0VRVUFUSU9OIChnc3RfZ2xfdmlkZW9fbWl4ZXJfYmxlbmRfZXF1YXRpb25fZ2V0X3R5cGUoKSkKK3N0YXRpYyBHVHlwZQorZ3N0X2dsX3ZpZGVvX21peGVyX2JsZW5kX2VxdWF0aW9uX2dldF90eXBlICh2b2lkKQogewotICBHc3RDb250cm9sQmluZGluZyBwYXJlbnQ7CisgIHN0YXRpYyBHVHlwZSBtaXhlcl9ibGVuZF9lcXVhdGlvbl90eXBlID0gMDsKIAotICBHc3RPYmplY3QgKnJlZl9vYmplY3Q7Ci0gIGNvbnN0IGdjaGFyICpwcm9wZXJ0eV9uYW1lOwotfTsKKyAgc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgbWl4ZXJfYmxlbmRfZXF1YXRpb25zW10gPSB7CisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTl9BREQsICJBZGQiLCAiYWRkIn0sCisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTl9TVUJUUkFDVCwgIlN1YnRyYWN0IiwgInN1YnRyYWN0In0sCisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTl9SRVZFUlNFX1NVQlRSQUNULCAiUmV2ZXJzZSBTdWJ0cmFjdCIsCisgICAgICAgICJyZXZlcnNlLXN1YnRyYWN0In0sCisgICAgezAsIE5VTEwsIE5VTEx9LAorICB9OwogCi1zdHJ1Y3QgX0dzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5Q2xhc3MKLXsKLSAgR3N0Q29udHJvbEJpbmRpbmdDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1HVHlwZSBnc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF90eXBlICh2b2lkKTsKLSNkZWZpbmUgR1NUX1RZUEVfR0xfTUlYRVJfQ09OVFJPTF9CSU5ESU5HIFwKLSAgKGdzdF9nbF9taXhlcl9jb250cm9sX2JpbmRpbmdfcHJveHlfZ2V0X3R5cGUoKSkKLQotR19ERUZJTkVfVFlQRSAoR3N0R0xNaXhlckNvbnRyb2xCaW5kaW5nUHJveHksCi0gICAgZ3N0X2dsX21peGVyX2NvbnRyb2xfYmluZGluZ19wcm94eSwgR1NUX1RZUEVfQ09OVFJPTF9CSU5ESU5HKTsKLQotc3RhdGljIHZvaWQKLWdzdF9nbF9taXhlcl9jb250cm9sX2JpbmRpbmdfcHJveHlfaW5pdCAoR3N0R0xNaXhlckNvbnRyb2xCaW5kaW5nUHJveHkgKiBzZWxmKQotewotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nbF9taXhlcl9jb250cm9sX2JpbmRpbmdfcHJveHlfc3luY192YWx1ZXMgKEdzdENvbnRyb2xCaW5kaW5nICogYmluZGluZywKLSAgICBHc3RPYmplY3QgKiBvYmplY3QsIEdzdENsb2NrVGltZSB0aW1lc3RhbXAsIEdzdENsb2NrVGltZSBsYXN0X3N5bmMpCi17Ci0gIEdzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5ICpzZWxmID0gKEdzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5ICopCi0gICAgICBiaW5kaW5nOwotICBHc3RDb250cm9sQmluZGluZyAqcmVmX2JpbmRpbmc7Ci0gIGdib29sZWFuIHJldCA9IFRSVUU7Ci0KLSAgcmVmX2JpbmRpbmcgPSBnc3Rfb2JqZWN0X2dldF9jb250cm9sX2JpbmRpbmcgKHNlbGYtPnJlZl9vYmplY3QsCi0gICAgICBzZWxmLT5wcm9wZXJ0eV9uYW1lKTsKLQotICBpZiAocmVmX2JpbmRpbmcpIHsKLSAgICByZXQgPSBnc3RfY29udHJvbF9iaW5kaW5nX3N5bmNfdmFsdWVzIChyZWZfYmluZGluZywgc2VsZi0+cmVmX29iamVjdCwKLSAgICAgICAgdGltZXN0YW1wLCBsYXN0X3N5bmMpOwotICAgIGdzdF9vYmplY3RfdW5yZWYgKHJlZl9iaW5kaW5nKTsKKyAgaWYgKCFtaXhlcl9ibGVuZF9lcXVhdGlvbl90eXBlKSB7CisgICAgbWl4ZXJfYmxlbmRfZXF1YXRpb25fdHlwZSA9CisgICAgICAgIGdfZW51bV9yZWdpc3Rlcl9zdGF0aWMgKCJHc3RHTFZpZGVvTWl4ZXJCbGVuZEVxdWF0aW9uIiwKKyAgICAgICAgbWl4ZXJfYmxlbmRfZXF1YXRpb25zKTsKICAgfQotCi0gIHJldHVybiByZXQ7CisgIHJldHVybiBtaXhlcl9ibGVuZF9lcXVhdGlvbl90eXBlOwogfQogCi1zdGF0aWMgR1ZhbHVlICoKLWdzdF9nbF9taXhlcl9jb250cm9sX2JpbmRpbmdfcHJveHlfZ2V0X3ZhbHVlIChHc3RDb250cm9sQmluZGluZyAqIGJpbmRpbmcsCi0gICAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCkKKyNkZWZpbmUgR1NUX1RZUEVfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT04gKGdzdF9nbF92aWRlb19taXhlcl9ibGVuZF9mdW5jdGlvbl9nZXRfdHlwZSgpKQorc3RhdGljIEdUeXBlCitnc3RfZ2xfdmlkZW9fbWl4ZXJfYmxlbmRfZnVuY3Rpb25fZ2V0X3R5cGUgKHZvaWQpCiB7Ci0gIEdzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5ICpzZWxmID0gKEdzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5ICopCi0gICAgICBiaW5kaW5nOwotICBHc3RDb250cm9sQmluZGluZyAqcmVmX2JpbmRpbmc7Ci0gIEdWYWx1ZSAqcmV0ID0gTlVMTDsKKyAgc3RhdGljIEdUeXBlIG1peGVyX2JsZW5kX2Z1bmN0aW9uX3R5cGUgPSAwOwogCi0gIHJlZl9iaW5kaW5nID0gZ3N0X29iamVjdF9nZXRfY29udHJvbF9iaW5kaW5nIChzZWxmLT5yZWZfb2JqZWN0LAotICAgICAgc2VsZi0+cHJvcGVydHlfbmFtZSk7CisgIHN0YXRpYyBjb25zdCBHRW51bVZhbHVlIG1peGVyX2JsZW5kX2Z1bmNzW10gPSB7CisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9aRVJPLCAiWmVybyIsICJ6ZXJvIn0sCisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkUsICJPbmUiLCAib25lIn0sCisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQ09MT1IsICJTb3VyY2UgQ29sb3IiLCAic3JjLWNvbG9yIn0sCisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfU1JDX0NPTE9SLAorICAgICAgICAiT25lIE1pbnVzIFNvdXJjZSBDb2xvciIsICJvbmUtbWludXMtc3JjLWNvbG9yIn0sCisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9EU1RfQ09MT1IsICJEZXN0aW5hdGlvbiBDb2xvciIsCisgICAgICAgICJkc3QtY29sb3IifSwKKyAgICB7R1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19EU1RfQ09MT1IsCisgICAgICAgICJPbmUgTWludXMgRGVzdGluYXRpb24gQ29sb3IiLCAib25lLW1pbnVzLWRzdC1jb2xvciJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBLCAiU291cmNlIEFscGhhIiwgInNyYy1hbHBoYSJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX1NSQ19BTFBIQSwKKyAgICAgICAgIk9uZSBNaW51cyBTb3VyY2UgQWxwaGEiLCAib25lLW1pbnVzLXNyYy1hbHBoYSJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fRFNUX0FMUEhBLCAiRGVzdGluYXRpb24gQWxwaGEiLAorICAgICAgICAiZHN0LWFscGhhIn0sCisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfRFNUX0FMUEhBLAorICAgICAgICAiT25lIE1pbnVzIERlc3RpbmF0aW9uIEFscGhhIiwgIm9uZS1taW51cy1kc3QtYWxwaGEifSwKKyAgICB7R1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SLCAiQ29uc3RhbnQgQ29sb3IiLAorICAgICAgICAiY29uc3RhbnQtY29sb3IifSwKKyAgICB7R1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUiwKKyAgICAgICAgIk9uZSBNaW51cyBDb25zdGFudCBDb2xvciIsICJvbmUtbWludXMtY29udGFudC1jb2xvciJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQUxQSEEsICJDb25zdGFudCBBbHBoYSIsCisgICAgICAgICJjb25zdGFudC1hbHBoYSJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLAorICAgICAgICAiT25lIE1pbnVzIENvbnN0YW50IEFscGhhIiwgIm9uZS1taW51cy1jb250YW50LWFscGhhIn0sCisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEFfU0FUVVJBVEUsCisgICAgICAgICJTb3VyY2UgQWxwaGEgU2F0dXJhdGUiLCAic3JjLWFscGhhLXNhdHVyYXRlIn0sCisgICAgezAsIE5VTEwsIE5VTEx9LAorICB9OwogCi0gIGlmIChyZWZfYmluZGluZykgewotICAgIHJldCA9IGdzdF9jb250cm9sX2JpbmRpbmdfZ2V0X3ZhbHVlIChyZWZfYmluZGluZywgdGltZXN0YW1wKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChyZWZfYmluZGluZyk7CisgIGlmICghbWl4ZXJfYmxlbmRfZnVuY3Rpb25fdHlwZSkgeworICAgIG1peGVyX2JsZW5kX2Z1bmN0aW9uX3R5cGUgPQorICAgICAgICBnX2VudW1fcmVnaXN0ZXJfc3RhdGljICgiR3N0R0xWaWRlb01peGVyQmxlbmRGdW5jdGlvbiIsCisgICAgICAgIG1peGVyX2JsZW5kX2Z1bmNzKTsKICAgfQotCi0gIHJldHVybiByZXQ7CisgIHJldHVybiBtaXhlcl9ibGVuZF9mdW5jdGlvbl90eXBlOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nbF9taXhlcl9jb250cm9sX2JpbmRpbmdfcHJveHlfZ2V0X3ZhbHVlX2FycmF5IChHc3RDb250cm9sQmluZGluZyAqIGJpbmRpbmcsCi0gICAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCwgR3N0Q2xvY2tUaW1lIGludGVydmFsLCBndWludCBuX3ZhbHVlcywKLSAgICBncG9pbnRlciB2YWx1ZXMpCi17Ci0gIEdzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5ICpzZWxmID0gKEdzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5ICopCi0gICAgICBiaW5kaW5nOwotICBHc3RDb250cm9sQmluZGluZyAqcmVmX2JpbmRpbmc7Ci0gIGdib29sZWFuIHJldCA9IEZBTFNFOwotCi0gIHJlZl9iaW5kaW5nID0gZ3N0X29iamVjdF9nZXRfY29udHJvbF9iaW5kaW5nIChzZWxmLT5yZWZfb2JqZWN0LAotICAgICAgc2VsZi0+cHJvcGVydHlfbmFtZSk7Ci0KLSAgaWYgKHJlZl9iaW5kaW5nKSB7Ci0gICAgcmV0ID0gZ3N0X2NvbnRyb2xfYmluZGluZ19nZXRfdmFsdWVfYXJyYXkgKHJlZl9iaW5kaW5nLCB0aW1lc3RhbXAsCi0gICAgICAgIGludGVydmFsLCBuX3ZhbHVlcywgdmFsdWVzKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChyZWZfYmluZGluZyk7Ci0gIH0KLQotICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nbF9taXhlcl9jb250cm9sX2JpbmRpbmdfcHJveHlfZ2V0X2dfdmFsdWVfYXJyYXkgKEdzdENvbnRyb2xCaW5kaW5nICoKLSAgICBiaW5kaW5nLCBHc3RDbG9ja1RpbWUgdGltZXN0YW1wLCBHc3RDbG9ja1RpbWUgaW50ZXJ2YWwsIGd1aW50IG5fdmFsdWVzLAotICAgIEdWYWx1ZSAqIHZhbHVlcykKLXsKLSAgR3N0R0xNaXhlckNvbnRyb2xCaW5kaW5nUHJveHkgKnNlbGYgPSAoR3N0R0xNaXhlckNvbnRyb2xCaW5kaW5nUHJveHkgKikKLSAgICAgIGJpbmRpbmc7Ci0gIEdzdENvbnRyb2xCaW5kaW5nICpyZWZfYmluZGluZzsKLSAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7Ci0KLSAgcmVmX2JpbmRpbmcgPSBnc3Rfb2JqZWN0X2dldF9jb250cm9sX2JpbmRpbmcgKHNlbGYtPnJlZl9vYmplY3QsCi0gICAgICBzZWxmLT5wcm9wZXJ0eV9uYW1lKTsKLQotICBpZiAocmVmX2JpbmRpbmcpIHsKLSAgICByZXQgPSBnc3RfY29udHJvbF9iaW5kaW5nX2dldF9nX3ZhbHVlX2FycmF5IChyZWZfYmluZGluZywgdGltZXN0YW1wLAotICAgICAgICBpbnRlcnZhbCwgbl92YWx1ZXMsIHZhbHVlcyk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAocmVmX2JpbmRpbmcpOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotCi1zdGF0aWMgdm9pZAotICAgIGdzdF9nbF9taXhlcl9jb250cm9sX2JpbmRpbmdfcHJveHlfY2xhc3NfaW5pdAotICAgIChHc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eUNsYXNzICoga2xhc3MpCi17Ci0gIEdzdENvbnRyb2xCaW5kaW5nQ2xhc3MgKmNiX2NsYXNzID0gR1NUX0NPTlRST0xfQklORElOR19DTEFTUyAoa2xhc3MpOwotCi0gIGNiX2NsYXNzLT5zeW5jX3ZhbHVlcyA9IGdzdF9nbF9taXhlcl9jb250cm9sX2JpbmRpbmdfcHJveHlfc3luY192YWx1ZXM7Ci0gIGNiX2NsYXNzLT5nZXRfdmFsdWUgPSBnc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF92YWx1ZTsKLSAgY2JfY2xhc3MtPmdldF92YWx1ZV9hcnJheSA9Ci0gICAgICBnc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF92YWx1ZV9hcnJheTsKLSAgY2JfY2xhc3MtPmdldF9nX3ZhbHVlX2FycmF5ID0KLSAgICAgIGdzdF9nbF9taXhlcl9jb250cm9sX2JpbmRpbmdfcHJveHlfZ2V0X2dfdmFsdWVfYXJyYXk7Ci19Ci0KLXN0YXRpYyBHc3RDb250cm9sQmluZGluZyAqCi1nc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X25ldyAoR3N0T2JqZWN0ICogb2JqZWN0LAotICAgIGNvbnN0IGdjaGFyICogcHJvcGVydHlfbmFtZSwgR3N0T2JqZWN0ICogcmVmX29iamVjdCwKLSAgICBjb25zdCBnY2hhciAqIHJlZl9wcm9wZXJ0eV9uYW1lKQotewotICBHc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eSAqc2VsZiA9Ci0gICAgICBnX29iamVjdF9uZXcgKEdTVF9UWVBFX0dMX01JWEVSX0NPTlRST0xfQklORElORywgIm9iamVjdCIsIG9iamVjdCwKLSAgICAgICJuYW1lIiwgcHJvcGVydHlfbmFtZSwgTlVMTCk7Ci0KLSAgc2VsZi0+cmVmX29iamVjdCA9IHJlZl9vYmplY3Q7Ci0gIHNlbGYtPnByb3BlcnR5X25hbWUgPSByZWZfcHJvcGVydHlfbmFtZTsKLQotICByZXR1cm4gKEdzdENvbnRyb2xCaW5kaW5nICopIHNlbGY7Ci19Ci0KLQogI2RlZmluZSBERUZBVUxUX1BBRF9YUE9TICAgMAogI2RlZmluZSBERUZBVUxUX1BBRF9ZUE9TICAgMAogI2RlZmluZSBERUZBVUxUX1BBRF9XSURUSCAgMApAQCAtMjIzLDYgKzE0NCwxMiBAQAogI2RlZmluZSBERUZBVUxUX1BBRF9BTFBIQSAgMS4wCiAjZGVmaW5lIERFRkFVTFRfUEFEX1pPUkRFUiAwCiAjZGVmaW5lIERFRkFVTFRfUEFEX0lHTk9SRV9FT1MgRkFMU0UKKyNkZWZpbmUgREVGQVVMVF9QQURfQkxFTkRfRVFVQVRJT05fUkdCIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTl9BREQKKyNkZWZpbmUgREVGQVVMVF9QQURfQkxFTkRfRVFVQVRJT05fQUxQSEEgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0VRVUFUSU9OX0FERAorI2RlZmluZSBERUZBVUxUX1BBRF9CTEVORF9GVU5DVElPTl9TUkNfUkdCIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEEKKyNkZWZpbmUgREVGQVVMVF9QQURfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEEKKyNkZWZpbmUgREVGQVVMVF9QQURfQkxFTkRfRlVOQ1RJT05fRFNUX1JHQiBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX1NSQ19BTFBIQQorI2RlZmluZSBERUZBVUxUX1BBRF9CTEVORF9GVU5DVElPTl9EU1RfQUxQSEEgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19TUkNfQUxQSEEKIAogZW51bQogewpAQCAtMjMyLDYgKzE1OSwxNiBAQAogICBQUk9QX0lOUFVUX1dJRFRILAogICBQUk9QX0lOUFVUX0hFSUdIVCwKICAgUFJPUF9JTlBVVF9BTFBIQSwKKyAgUFJPUF9JTlBVVF9CTEVORF9FUVVBVElPTl9SR0IsCisgIFBST1BfSU5QVVRfQkxFTkRfRVFVQVRJT05fQUxQSEEsCisgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fU1JDX1JHQiwKKyAgUFJPUF9JTlBVVF9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEEsCisgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fRFNUX1JHQiwKKyAgUFJPUF9JTlBVVF9CTEVORF9GVU5DVElPTl9EU1RfQUxQSEEsCisgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1JfUkVELAorICBQUk9QX0lOUFVUX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0dSRUVOLAorICBQUk9QX0lOUFVUX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0JMVUUsCisgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1JfQUxQSEEsCiAgIFBST1BfSU5QVVRfWk9SREVSLAogICBQUk9QX0lOUFVUX0lHTk9SRV9FT1MsCiB9OwpAQCAtMjk5LDYgKzIzNiw3MSBAQAogICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoImFscGhhIiwgIkFscGhhIiwgIkFscGhhIG9mIHRoZSBwaWN0dXJlIiwgMC4wLCAxLjAsCiAgICAgICAgICAgREVGQVVMVF9QQURfQUxQSEEsCiAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0lOUFVUX0JMRU5EX0VRVUFUSU9OX1JHQiwKKyAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiYmxlbmQtZXF1YXRpb24tcmdiIiwgIkJsZW5kIEVxdWF0aW9uIFJHQiIsCisgICAgICAgICAgIkJsZW5kIEVxdWF0aW9uIGZvciBSR0IiLAorICAgICAgICAgIEdTVF9UWVBFX0dMX1ZJREVPX01JWEVSX0JMRU5EX0VRVUFUSU9OLAorICAgICAgICAgIERFRkFVTFRfUEFEX0JMRU5EX0VRVUFUSU9OX1JHQiwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX0lOUFVUX0JMRU5EX0VRVUFUSU9OX0FMUEhBLAorICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJibGVuZC1lcXVhdGlvbi1hbHBoYSIsICJCbGVuZCBFcXVhdGlvbiBBbHBoYSIsCisgICAgICAgICAgIkJsZW5kIEVxdWF0aW9uIGZvciBBbHBoYSIsIEdTVF9UWVBFX0dMX1ZJREVPX01JWEVSX0JMRU5EX0VRVUFUSU9OLAorICAgICAgICAgIERFRkFVTFRfUEFEX0JMRU5EX0VRVUFUSU9OX0FMUEhBLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fU1JDX1JHQiwKKyAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiYmxlbmQtZnVuY3Rpb24tc3JjLXJnYiIsICJCbGVuZCBGdW5jdGlvbiBTb3VyY2UgUkdCIiwKKyAgICAgICAgICAiQmxlbmQgRnVuY3Rpb24gZm9yIFNvdXJjZSBSR0IiLAorICAgICAgICAgIEdTVF9UWVBFX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OLAorICAgICAgICAgIERFRkFVTFRfUEFEX0JMRU5EX0ZVTkNUSU9OX1NSQ19SR0IsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9JTlBVVF9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEEsCisgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImJsZW5kLWZ1bmN0aW9uLXNyYy1hbHBoYSIsCisgICAgICAgICAgIkJsZW5kIEZ1bmN0aW9uIFNvdXJjZSBBbHBoYSIsICJCbGVuZCBGdW5jdGlvbiBmb3IgU291cmNlIEFscGhhIiwKKyAgICAgICAgICBHU1RfVFlQRV9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTiwKKyAgICAgICAgICBERUZBVUxUX1BBRF9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEEsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9JTlBVVF9CTEVORF9GVU5DVElPTl9EU1RfUkdCLAorICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJibGVuZC1mdW5jdGlvbi1kc3QtcmdiIiwKKyAgICAgICAgICAiQmxlbmQgRnVuY3Rpb24gRGVzdGluYXRpb24gUkdCIiwKKyAgICAgICAgICAiQmxlbmQgRnVuY3Rpb24gZm9yIERlc3RpbmF0aW9uIFJHQiIsCisgICAgICAgICAgR1NUX1RZUEVfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT04sCisgICAgICAgICAgREVGQVVMVF9QQURfQkxFTkRfRlVOQ1RJT05fRFNUX1JHQiwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX0lOUFVUX0JMRU5EX0ZVTkNUSU9OX0RTVF9BTFBIQSwKKyAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiYmxlbmQtZnVuY3Rpb24tZHN0LWFscGhhIiwKKyAgICAgICAgICAiQmxlbmQgRnVuY3Rpb24gRGVzdGluYXRpb24gQWxwaGEiLAorICAgICAgICAgICJCbGVuZCBGdW5jdGlvbiBmb3IgRGVzdGluaWF0aW9uIEFscGhhIiwKKyAgICAgICAgICBHU1RfVFlQRV9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTiwKKyAgICAgICAgICBERUZBVUxUX1BBRF9CTEVORF9GVU5DVElPTl9EU1RfQUxQSEEsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9JTlBVVF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9SRUQsCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiYmxlbmQtY29uc3RhbnQtY29sb3ItcmVkIiwKKyAgICAgICAgICAiQmxlbmQgQ29uc3RhbnQgQ29sb3IgUmVkIiwgIkJsZW5kIENvbnN0YW50IENvbG9yIFJlZCIsIDAuMCwgMS4wLCAwLjAsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9JTlBVVF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9HUkVFTiwKKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJibGVuZC1jb25zdGFudC1jb2xvci1ncmVlbiIsCisgICAgICAgICAgIkJsZW5kIENvbnN0YW50IENvbG9yIEdyZWVuIiwgIkJsZW5kIENvbnN0YW50IENvbG9yIEdyZWVuIiwgMC4wLCAxLjAsCisgICAgICAgICAgMC4wLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1JfQkxVRSwKKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJibGVuZC1jb25zdGFudC1jb2xvci1ibHVlIiwKKyAgICAgICAgICAiQmxlbmQgQ29uc3RhbnQgQ29sb3IgR3JlZW4iLCAiQmxlbmQgQ29uc3RhbnQgQ29sb3IgR3JlZW4iLCAwLjAsIDEuMCwKKyAgICAgICAgICAwLjAsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9JTlBVVF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9BTFBIQSwKKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJibGVuZC1jb25zdGFudC1jb2xvci1hbHBoYSIsCisgICAgICAgICAgIkJsZW5kIENvbnN0YW50IENvbG9yIEFscGhhIiwgIkJsZW5kIENvbnN0YW50IENvbG9yIEFscGhhIiwgMC4wLCAxLjAsCisgICAgICAgICAgMC4wLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTMyOCwyNSArMzMwLDQ0IEBACiAgICAgICBnX29iamVjdF9uZXcgKGdzdF9nbF92aWRlb19taXhlcl9pbnB1dF9nZXRfdHlwZSAoKSwgIm5hbWUiLAogICAgICAgR1NUX09CSkVDVF9OQU1FIChtaXhlcl9wYWQpLCAiZGlyZWN0aW9uIiwgR1NUX1BBRF9ESVJFQ1RJT04gKG1peGVyX3BhZCksCiAgICAgICBOVUxMKTsKLSAgR3N0Q29udHJvbEJpbmRpbmcgKmNiOwogCiAgIGlmICghZ3N0X2dob3N0X3BhZF9jb25zdHJ1Y3QgKEdTVF9HSE9TVF9QQUQgKGlucHV0KSkpIHsKICAgICBnc3Rfb2JqZWN0X3VucmVmIChpbnB1dCk7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KLSNkZWZpbmUgQUREX1BST1hZX0NPTlRST0xfQklORElORyhwcm9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBjYiA9IGdzdF9nbF9taXhlcl9jb250cm9sX2JpbmRpbmdfcHJveHlfbmV3IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLCBcCi0gICAgICBHX1NUUklOR0lGWSAocHJvcCksIEdTVF9PQkpFQ1QgKGlucHV0KSwgR19TVFJJTkdJRlkgKHByb3ApKTsgICAgIFwKLSAgZ3N0X29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nIChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLCBjYikKIAotICBBRERfUFJPWFlfQ09OVFJPTF9CSU5ESU5HICh6b3JkZXIpOwotICBBRERfUFJPWFlfQ09OVFJPTF9CSU5ESU5HICh4cG9zKTsKLSAgQUREX1BST1hZX0NPTlRST0xfQklORElORyAoeXBvcyk7Ci0gIEFERF9QUk9YWV9DT05UUk9MX0JJTkRJTkcgKHdpZHRoKTsKLSAgQUREX1BST1hZX0NPTlRST0xfQklORElORyAoaGVpZ2h0KTsKLSAgQUREX1BST1hZX0NPTlRST0xfQklORElORyAoYWxwaGEpOwotCi0jdW5kZWYgQUREX1BST1hZX0NPTlRST0xfQklORElORworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKG1peGVyX3BhZCksCisgICAgICBHU1RfT0JKRUNUIChpbnB1dCksICJ6b3JkZXIiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLAorICAgICAgR1NUX09CSkVDVCAoaW5wdXQpLCAieHBvcyIpOworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKG1peGVyX3BhZCksCisgICAgICBHU1RfT0JKRUNUIChpbnB1dCksICJ5cG9zIik7CisgIGdzdF9nbF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZ19wcm94eSAoR1NUX09CSkVDVCAobWl4ZXJfcGFkKSwKKyAgICAgIEdTVF9PQkpFQ1QgKGlucHV0KSwgIndpZHRoIik7CisgIGdzdF9nbF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZ19wcm94eSAoR1NUX09CSkVDVCAobWl4ZXJfcGFkKSwKKyAgICAgIEdTVF9PQkpFQ1QgKGlucHV0KSwgImhlaWdodCIpOworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKG1peGVyX3BhZCksCisgICAgICBHU1RfT0JKRUNUIChpbnB1dCksICJhbHBoYSIpOworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKG1peGVyX3BhZCksCisgICAgICBHU1RfT0JKRUNUIChpbnB1dCksICJibGVuZC1lcXVhdGlvbi1yZ2IiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLAorICAgICAgR1NUX09CSkVDVCAoaW5wdXQpLCAiYmxlbmQtZXF1YXRpb24tYWxwaGEiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLAorICAgICAgR1NUX09CSkVDVCAoaW5wdXQpLCAiYmxlbmQtZnVuY3Rpb24tc3JjLXJnYiIpOworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKG1peGVyX3BhZCksCisgICAgICBHU1RfT0JKRUNUIChpbnB1dCksICJibGVuZC1mdW5jdGlvbi1zcmMtYWxwaGEiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLAorICAgICAgR1NUX09CSkVDVCAoaW5wdXQpLCAiYmxlbmQtZnVuY3Rpb24tZHN0LXJnYiIpOworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKG1peGVyX3BhZCksCisgICAgICBHU1RfT0JKRUNUIChpbnB1dCksICJibGVuZC1mdW5jdGlvbi1kc3QtYWxwaGEiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLAorICAgICAgR1NUX09CSkVDVCAoaW5wdXQpLCAiYmxlbmQtY29uc3RhbnQtY29sb3ItcmVkIik7CisgIGdzdF9nbF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZ19wcm94eSAoR1NUX09CSkVDVCAobWl4ZXJfcGFkKSwKKyAgICAgIEdTVF9PQkpFQ1QgKGlucHV0KSwgImJsZW5kLWNvbnN0YW50LWNvbG9yLWdyZWVuIik7CisgIGdzdF9nbF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZ19wcm94eSAoR1NUX09CSkVDVCAobWl4ZXJfcGFkKSwKKyAgICAgIEdTVF9PQkpFQ1QgKGlucHV0KSwgImJsZW5kLWNvbnN0YW50LWNvbG9yLWJsdWUiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLAorICAgICAgR1NUX09CSkVDVCAoaW5wdXQpLCAiYmxlbmQtY29uc3RhbnQtY29sb3ItYWxwaGEiKTsKIAogICBpbnB1dC0+bWl4ZXJfcGFkID0gbWl4ZXJfcGFkOwogCkBAIC00MzksMTMgKzQ2MCwxNSBAQAogc3RhdGljIHZvaWQgZ3N0X2dsX3ZpZGVvX21peGVyX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIAotc3RhdGljIEdzdENhcHMgKl91cGRhdGVfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywgR3N0Q2FwcyAqIGNhcHMpOworc3RhdGljIEdzdENhcHMgKl91cGRhdGVfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywgR3N0Q2FwcyAqIGNhcHMsCisgICAgR3N0Q2FwcyAqIGZpbHRlcik7CitzdGF0aWMgR3N0Q2FwcyAqX2ZpeGF0ZV9jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnLCBHc3RDYXBzICogY2Fwcyk7CiBzdGF0aWMgdm9pZCBnc3RfZ2xfdmlkZW9fbWl4ZXJfcmVzZXQgKEdzdEdMTWl4ZXIgKiBtaXhlcik7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX3ZpZGVvX21peGVyX2luaXRfc2hhZGVyIChHc3RHTE1peGVyICogbWl4ZXIsCiAgICAgR3N0Q2FwcyAqIG91dGNhcHMpOwogCiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX3ZpZGVvX21peGVyX3Byb2Nlc3NfdGV4dHVyZXMgKEdzdEdMTWl4ZXIgKiBtaXhlciwKLSAgICBHUHRyQXJyYXkgKiBpbl9mcmFtZXMsIGd1aW50IG91dF90ZXgpOworICAgIGd1aW50IG91dF90ZXgpOwogc3RhdGljIHZvaWQgZ3N0X2dsX3ZpZGVvX21peGVyX2NhbGxiYWNrIChncG9pbnRlciBzdHVmZik7CiAKIC8qICpJTkRFTlQtT0ZGKiAqLwpAQCAtNTM0LDYgKzU1NywxNyBAQAogICBnaW50IHdpZHRoLCBoZWlnaHQ7CiAgIGdkb3VibGUgYWxwaGE7CiAKKyAgR3N0R0xWaWRlb01peGVyQmxlbmRFcXVhdGlvbiBibGVuZF9lcXVhdGlvbl9yZ2I7CisgIEdzdEdMVmlkZW9NaXhlckJsZW5kRXF1YXRpb24gYmxlbmRfZXF1YXRpb25fYWxwaGE7CisgIEdzdEdMVmlkZW9NaXhlckJsZW5kRnVuY3Rpb24gYmxlbmRfZnVuY3Rpb25fc3JjX3JnYjsKKyAgR3N0R0xWaWRlb01peGVyQmxlbmRGdW5jdGlvbiBibGVuZF9mdW5jdGlvbl9zcmNfYWxwaGE7CisgIEdzdEdMVmlkZW9NaXhlckJsZW5kRnVuY3Rpb24gYmxlbmRfZnVuY3Rpb25fZHN0X3JnYjsKKyAgR3N0R0xWaWRlb01peGVyQmxlbmRGdW5jdGlvbiBibGVuZF9mdW5jdGlvbl9kc3RfYWxwaGE7CisgIGdkb3VibGUgYmxlbmRfY29uc3RhbnRfY29sb3JfcmVkOworICBnZG91YmxlIGJsZW5kX2NvbnN0YW50X2NvbG9yX2dyZWVuOworICBnZG91YmxlIGJsZW5kX2NvbnN0YW50X2NvbG9yX2JsdWU7CisgIGdkb3VibGUgYmxlbmRfY29uc3RhbnRfY29sb3JfYWxwaGE7CisKICAgZ2Jvb2xlYW4gZ2VvbWV0cnlfY2hhbmdlOwogICBHTHVpbnQgdmVydGV4X2J1ZmZlcjsKIH07CkBAIC01NTksMTMgKzU5MywyOSBAQAogICBQUk9QX1BBRF9ZUE9TLAogICBQUk9QX1BBRF9XSURUSCwKICAgUFJPUF9QQURfSEVJR0hULAotICBQUk9QX1BBRF9BTFBIQQorICBQUk9QX1BBRF9BTFBIQSwKKyAgUFJPUF9QQURfQkxFTkRfRVFVQVRJT05fUkdCLAorICBQUk9QX1BBRF9CTEVORF9FUVVBVElPTl9BTFBIQSwKKyAgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fU1JDX1JHQiwKKyAgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBLAorICBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9EU1RfUkdCLAorICBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9EU1RfQUxQSEEsCisgIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX1JFRCwKKyAgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1JfR1JFRU4sCisgIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0JMVUUsCisgIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0FMUEhBLAogfTsKIAogc3RhdGljIHZvaWQKIGdzdF9nbF92aWRlb19taXhlcl9wYWRfaW5pdCAoR3N0R0xWaWRlb01peGVyUGFkICogcGFkKQogewotICBwYWQtPmFscGhhID0gMS4wOworICBwYWQtPmFscGhhID0gREVGQVVMVF9QQURfQUxQSEE7CisgIHBhZC0+YmxlbmRfZXF1YXRpb25fcmdiID0gREVGQVVMVF9QQURfQkxFTkRfRVFVQVRJT05fUkdCOworICBwYWQtPmJsZW5kX2VxdWF0aW9uX2FscGhhID0gREVGQVVMVF9QQURfQkxFTkRfRVFVQVRJT05fQUxQSEE7CisgIHBhZC0+YmxlbmRfZnVuY3Rpb25fc3JjX3JnYiA9IERFRkFVTFRfUEFEX0JMRU5EX0ZVTkNUSU9OX1NSQ19SR0I7CisgIHBhZC0+YmxlbmRfZnVuY3Rpb25fc3JjX2FscGhhID0gREVGQVVMVF9QQURfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBOworICBwYWQtPmJsZW5kX2Z1bmN0aW9uX2RzdF9yZ2IgPSBERUZBVUxUX1BBRF9CTEVORF9GVU5DVElPTl9EU1RfUkdCOworICBwYWQtPmJsZW5kX2Z1bmN0aW9uX2RzdF9hbHBoYSA9IERFRkFVTFRfUEFEX0JMRU5EX0ZVTkNUSU9OX0RTVF9BTFBIQTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTU5Niw2ICs2NDYsNzEgQEAKICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJhbHBoYSIsICJBbHBoYSIsICJBbHBoYSBvZiB0aGUgcGljdHVyZSIsIDAuMCwgMS4wLAogICAgICAgICAgIERFRkFVTFRfUEFEX0FMUEhBLAogICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9JTlBVVF9CTEVORF9FUVVBVElPTl9SR0IsCisgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImJsZW5kLWVxdWF0aW9uLXJnYiIsICJCbGVuZCBFcXVhdGlvbiBSR0IiLAorICAgICAgICAgICJCbGVuZCBFcXVhdGlvbiBmb3IgUkdCIiwKKyAgICAgICAgICBHU1RfVFlQRV9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTiwKKyAgICAgICAgICBERUZBVUxUX1BBRF9CTEVORF9FUVVBVElPTl9SR0IsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9JTlBVVF9CTEVORF9FUVVBVElPTl9BTFBIQSwKKyAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiYmxlbmQtZXF1YXRpb24tYWxwaGEiLCAiQmxlbmQgRXF1YXRpb24gQWxwaGEiLAorICAgICAgICAgICJCbGVuZCBFcXVhdGlvbiBmb3IgQWxwaGEiLCBHU1RfVFlQRV9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTiwKKyAgICAgICAgICBERUZBVUxUX1BBRF9CTEVORF9FUVVBVElPTl9BTFBIQSwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX0lOUFVUX0JMRU5EX0ZVTkNUSU9OX1NSQ19SR0IsCisgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImJsZW5kLWZ1bmN0aW9uLXNyYy1yZ2IiLCAiQmxlbmQgRnVuY3Rpb24gU291cmNlIFJHQiIsCisgICAgICAgICAgIkJsZW5kIEZ1bmN0aW9uIGZvciBTb3VyY2UgUkdCIiwKKyAgICAgICAgICBHU1RfVFlQRV9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTiwKKyAgICAgICAgICBERUZBVUxUX1BBRF9CTEVORF9GVU5DVElPTl9TUkNfUkdCLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBLAorICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJibGVuZC1mdW5jdGlvbi1zcmMtYWxwaGEiLAorICAgICAgICAgICJCbGVuZCBGdW5jdGlvbiBTb3VyY2UgQWxwaGEiLCAiQmxlbmQgRnVuY3Rpb24gZm9yIFNvdXJjZSBBbHBoYSIsCisgICAgICAgICAgR1NUX1RZUEVfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT04sCisgICAgICAgICAgREVGQVVMVF9QQURfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fRFNUX1JHQiwKKyAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiYmxlbmQtZnVuY3Rpb24tZHN0LXJnYiIsCisgICAgICAgICAgIkJsZW5kIEZ1bmN0aW9uIERlc3RpbmF0aW9uIFJHQiIsCisgICAgICAgICAgIkJsZW5kIEZ1bmN0aW9uIGZvciBEZXN0aW5hdGlvbiBSR0IiLAorICAgICAgICAgIEdTVF9UWVBFX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OLAorICAgICAgICAgIERFRkFVTFRfUEFEX0JMRU5EX0ZVTkNUSU9OX0RTVF9SR0IsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9JTlBVVF9CTEVORF9GVU5DVElPTl9EU1RfQUxQSEEsCisgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImJsZW5kLWZ1bmN0aW9uLWRzdC1hbHBoYSIsCisgICAgICAgICAgIkJsZW5kIEZ1bmN0aW9uIERlc3RpbmF0aW9uIEFscGhhIiwKKyAgICAgICAgICAiQmxlbmQgRnVuY3Rpb24gZm9yIERlc3RpbmlhdGlvbiBBbHBoYSIsCisgICAgICAgICAgR1NUX1RZUEVfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT04sCisgICAgICAgICAgREVGQVVMVF9QQURfQkxFTkRfRlVOQ1RJT05fRFNUX0FMUEhBLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX1JFRCwKKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJibGVuZC1jb25zdGFudC1jb2xvci1yZWQiLAorICAgICAgICAgICJCbGVuZCBDb25zdGFudCBDb2xvciBSZWQiLCAiQmxlbmQgQ29uc3RhbnQgQ29sb3IgUmVkIiwgMC4wLCAxLjAsIDAuMCwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9HUkVFTiwKKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJibGVuZC1jb25zdGFudC1jb2xvci1ncmVlbiIsCisgICAgICAgICAgIkJsZW5kIENvbnN0YW50IENvbG9yIEdyZWVuIiwgIkJsZW5kIENvbnN0YW50IENvbG9yIEdyZWVuIiwgMC4wLCAxLjAsCisgICAgICAgICAgMC4wLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0JMVUUsCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiYmxlbmQtY29uc3RhbnQtY29sb3ItYmx1ZSIsCisgICAgICAgICAgIkJsZW5kIENvbnN0YW50IENvbG9yIEdyZWVuIiwgIkJsZW5kIENvbnN0YW50IENvbG9yIEdyZWVuIiwgMC4wLCAxLjAsCisgICAgICAgICAgMC4wLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0FMUEhBLAorICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoImJsZW5kLWNvbnN0YW50LWNvbG9yLWFscGhhIiwKKyAgICAgICAgICAiQmxlbmQgQ29uc3RhbnQgQ29sb3IgQWxwaGEiLCAiQmxlbmQgQ29uc3RhbnQgQ29sb3IgQWxwaGEiLCAwLjAsIDEuMCwKKyAgICAgICAgICAwLjAsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNjIwLDYgKzczNSwzNiBAQAogICAgIGNhc2UgUFJPUF9QQURfQUxQSEE6CiAgICAgICBnX3ZhbHVlX3NldF9kb3VibGUgKHZhbHVlLCBwYWQtPmFscGhhKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRVFVQVRJT05fUkdCOgorICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIHBhZC0+YmxlbmRfZXF1YXRpb25fcmdiKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRVFVQVRJT05fQUxQSEE6CisgICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgcGFkLT5ibGVuZF9lcXVhdGlvbl9hbHBoYSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX1NSQ19SR0I6CisgICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgcGFkLT5ibGVuZF9mdW5jdGlvbl9zcmNfcmdiKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBOgorICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIHBhZC0+YmxlbmRfZnVuY3Rpb25fc3JjX2FscGhhKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fRFNUX1JHQjoKKyAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCBwYWQtPmJsZW5kX2Z1bmN0aW9uX2RzdF9yZ2IpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9EU1RfQUxQSEE6CisgICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgcGFkLT5ibGVuZF9mdW5jdGlvbl9kc3RfYWxwaGEpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9SRUQ6CisgICAgICBnX3ZhbHVlX3NldF9kb3VibGUgKHZhbHVlLCBwYWQtPmJsZW5kX2NvbnN0YW50X2NvbG9yX3JlZCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0dSRUVOOgorICAgICAgZ192YWx1ZV9zZXRfZG91YmxlICh2YWx1ZSwgcGFkLT5ibGVuZF9jb25zdGFudF9jb2xvcl9ncmVlbik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0JMVUU6CisgICAgICBnX3ZhbHVlX3NldF9kb3VibGUgKHZhbHVlLCBwYWQtPmJsZW5kX2NvbnN0YW50X2NvbG9yX2JsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9BTFBIQToKKyAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSAodmFsdWUsIHBhZC0+YmxlbmRfY29uc3RhbnRfY29sb3JfYWxwaGEpOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKQEAgLTY1Myw2ICs3OTgsMzYgQEAKICAgICBjYXNlIFBST1BfUEFEX0FMUEhBOgogICAgICAgcGFkLT5hbHBoYSA9IGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9FUVVBVElPTl9SR0I6CisgICAgICBwYWQtPmJsZW5kX2VxdWF0aW9uX3JnYiA9IGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRVFVQVRJT05fQUxQSEE6CisgICAgICBwYWQtPmJsZW5kX2VxdWF0aW9uX2FscGhhID0gZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9TUkNfUkdCOgorICAgICAgcGFkLT5ibGVuZF9mdW5jdGlvbl9zcmNfcmdiID0gZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEE6CisgICAgICBwYWQtPmJsZW5kX2Z1bmN0aW9uX3NyY19hbHBoYSA9IGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fRFNUX1JHQjoKKyAgICAgIHBhZC0+YmxlbmRfZnVuY3Rpb25fZHN0X3JnYiA9IGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fRFNUX0FMUEhBOgorICAgICAgcGFkLT5ibGVuZF9mdW5jdGlvbl9kc3RfYWxwaGEgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX1JFRDoKKyAgICAgIHBhZC0+YmxlbmRfY29uc3RhbnRfY29sb3JfcmVkID0gZ192YWx1ZV9nZXRfZG91YmxlICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0dSRUVOOgorICAgICAgcGFkLT5ibGVuZF9jb25zdGFudF9jb2xvcl9ncmVlbiA9IGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9CTFVFOgorICAgICAgcGFkLT5ibGVuZF9jb25zdGFudF9jb2xvcl9ibHVlID0gZ192YWx1ZV9nZXRfZG91YmxlICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0FMUEhBOgorICAgICAgcGFkLT5ibGVuZF9jb25zdGFudF9jb2xvcl9hbHBoYSA9IGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKQEAgLTY2Miw2ICs4MzcsMjYgQEAKIH0KIAogc3RhdGljIHZvaWQKK19kZWxfYnVmZmVyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHTHVpbnQgKiBwQnVmZmVyKQoreworICBjb250ZXh0LT5nbF92dGFibGUtPkRlbGV0ZUJ1ZmZlcnMgKDEsIHBCdWZmZXIpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX3ZpZGVvX21peGVyX3JlbGVhc2VfcGFkIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0UGFkICogcCkKK3sKKyAgR3N0R0xWaWRlb01peGVyUGFkICpwYWQgPSBHU1RfR0xfVklERU9fTUlYRVJfUEFEIChwKTsKKyAgaWYgKHBhZC0+dmVydGV4X2J1ZmZlcikgeworICAgIEdzdEdMQmFzZU1peGVyICptaXggPSBHU1RfR0xfQkFTRV9NSVhFUiAoZWxlbWVudCk7CisgICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAobWl4LT5jb250ZXh0LCAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykKKyAgICAgICAgX2RlbF9idWZmZXIsICZwYWQtPnZlcnRleF9idWZmZXIpOworICAgIHBhZC0+dmVydGV4X2J1ZmZlciA9IDA7CisgIH0KKyAgR1NUX0VMRU1FTlRfQ0xBU1MgKGdfdHlwZV9jbGFzc19wZWVrX3BhcmVudCAoR19PQkpFQ1RfR0VUX0NMQVNTIChlbGVtZW50KSkpCisgICAgICAtPnJlbGVhc2VfcGFkIChlbGVtZW50LCBwKTsKK30KKworc3RhdGljIHZvaWQKIGdzdF9nbF92aWRlb19taXhlcl9jbGFzc19pbml0IChHc3RHTFZpZGVvTWl4ZXJDbGFzcyAqIGtsYXNzKQogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CkBAIC02NzEsNiArODY2LDcgQEAKIAogICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKICAgZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CisgIGVsZW1lbnRfY2xhc3MtPnJlbGVhc2VfcGFkID0gZ3N0X2dsX3ZpZGVvX21peGVyX3JlbGVhc2VfcGFkOwogCiAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9nbF92aWRlb19taXhlcl9zZXRfcHJvcGVydHk7CiAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9nbF92aWRlb19taXhlcl9nZXRfcHJvcGVydHk7CkBAIC02OTAsNiArODg2LDcgQEAKICAgICAgIGdzdF9nbF92aWRlb19taXhlcl9wcm9jZXNzX3RleHR1cmVzOwogCiAgIHZhZ2dfY2xhc3MtPnVwZGF0ZV9jYXBzID0gX3VwZGF0ZV9jYXBzOworICB2YWdnX2NsYXNzLT5maXhhdGVfY2FwcyA9IF9maXhhdGVfY2FwczsKIAogICBhZ2dfY2xhc3MtPnNpbmtwYWRzX3R5cGUgPSBHU1RfVFlQRV9HTF9WSURFT19NSVhFUl9QQUQ7CiAKQEAgLTcwMiw3ICs4OTksNiBAQAogewogICB2aWRlb19taXhlci0+YmFja2dyb3VuZCA9IERFRkFVTFRfQkFDS0dST1VORDsKICAgdmlkZW9fbWl4ZXItPnNoYWRlciA9IE5VTEw7Ci0gIHZpZGVvX21peGVyLT5pbnB1dF9mcmFtZXMgPSBOVUxMOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNzM5LDkgKzkzNSw5IEBACiAKIHN0YXRpYyB2b2lkCiBfbWl4ZXJfcGFkX2dldF9vdXRwdXRfc2l6ZSAoR3N0R0xWaWRlb01peGVyICogbWl4LAotICAgIEdzdEdMVmlkZW9NaXhlclBhZCAqIG1peF9wYWQsIGdpbnQgKiB3aWR0aCwgZ2ludCAqIGhlaWdodCkKKyAgICBHc3RHTFZpZGVvTWl4ZXJQYWQgKiBtaXhfcGFkLCBnaW50IG91dF9wYXJfbiwgZ2ludCBvdXRfcGFyX2QsIGdpbnQgKiB3aWR0aCwKKyAgICBnaW50ICogaGVpZ2h0KQogewotICBHc3RWaWRlb0FnZ3JlZ2F0b3IgKnZhZ2cgPSBHU1RfVklERU9fQUdHUkVHQVRPUiAobWl4KTsKICAgR3N0VmlkZW9BZ2dyZWdhdG9yUGFkICp2YWdnX3BhZCA9IEdTVF9WSURFT19BR0dSRUdBVE9SX1BBRCAobWl4X3BhZCk7CiAgIGdpbnQgcGFkX3dpZHRoLCBwYWRfaGVpZ2h0OwogICBndWludCBkYXJfbiwgZGFyX2Q7CkBAIC03NjQsMTMgKzk2MCwxMCBAQAogCiAgIGdzdF92aWRlb19jYWxjdWxhdGVfZGlzcGxheV9yYXRpbyAoJmRhcl9uLCAmZGFyX2QsIHBhZF93aWR0aCwgcGFkX2hlaWdodCwKICAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9OICgmdmFnZ19wYWQtPmluZm8pLAotICAgICAgR1NUX1ZJREVPX0lORk9fUEFSX0QgKCZ2YWdnX3BhZC0+aW5mbyksCi0gICAgICBHU1RfVklERU9fSU5GT19QQVJfTiAoJnZhZ2ctPmluZm8pLCBHU1RfVklERU9fSU5GT19QQVJfRCAoJnZhZ2ctPmluZm8pCi0gICAgICApOworICAgICAgR1NUX1ZJREVPX0lORk9fUEFSX0QgKCZ2YWdnX3BhZC0+aW5mbyksIG91dF9wYXJfbiwgb3V0X3Bhcl9kKTsKICAgR1NUX0xPR19PQkpFQ1QgKG1peF9wYWQsICJzY2FsaW5nICV1eCV1IGJ5ICV1LyV1ICgldS8ldSAvICV1LyV1KSIsIHBhZF93aWR0aCwKICAgICAgIHBhZF9oZWlnaHQsIGRhcl9uLCBkYXJfZCwgR1NUX1ZJREVPX0lORk9fUEFSX04gKCZ2YWdnX3BhZC0+aW5mbyksCi0gICAgICBHU1RfVklERU9fSU5GT19QQVJfRCAoJnZhZ2dfcGFkLT5pbmZvKSwKLSAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9OICgmdmFnZy0+aW5mbyksIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZy0+aW5mbykpOworICAgICAgR1NUX1ZJREVPX0lORk9fUEFSX0QgKCZ2YWdnX3BhZC0+aW5mbyksIG91dF9wYXJfbiwgb3V0X3Bhcl9kKTsKIAogICBpZiAocGFkX2hlaWdodCAlIGRhcl9uID09IDApIHsKICAgICBwYWRfd2lkdGggPSBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChwYWRfaGVpZ2h0LCBkYXJfbiwgZGFyX2QpOwpAQCAtNzg3LDE3ICs5ODAsNDQgQEAKIH0KIAogc3RhdGljIEdzdENhcHMgKgotX3VwZGF0ZV9jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnLCBHc3RDYXBzICogY2FwcykKK191cGRhdGVfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywgR3N0Q2FwcyAqIGNhcHMsIEdzdENhcHMgKiBmaWx0ZXIpCit7CisgIEdzdENhcHMgKnJldDsKKworICByZXQgPQorICAgICAgR1NUX1ZJREVPX0FHR1JFR0FUT1JfQ0xBU1MgKGdzdF9nbF92aWRlb19taXhlcl9wYXJlbnRfY2xhc3MpLT51cGRhdGVfY2FwcworICAgICAgKHZhZ2csIGNhcHMsIE5VTEwpOworCisgIGlmIChmaWx0ZXIpIHsKKyAgICBHc3RDYXBzICp0bXAgPSBnc3RfY2Fwc19pbnRlcnNlY3QgKHJldCwgZmlsdGVyKTsKKyAgICBnc3RfY2Fwc191bnJlZiAocmV0KTsKKyAgICByZXQgPSB0bXA7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgR3N0Q2FwcyAqCitfZml4YXRlX2NhcHMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2csIEdzdENhcHMgKiBjYXBzKQogewogICBHc3RHTFZpZGVvTWl4ZXIgKm1peCA9IEdTVF9HTF9WSURFT19NSVhFUiAodmFnZyk7Ci0gIEdMaXN0ICpsOwotICBnaW50IGJlc3Rfd2lkdGggPSAtMSwgYmVzdF9oZWlnaHQgPSAtMTsKLSAgR3N0VmlkZW9JbmZvIGluZm87CisgIGdpbnQgYmVzdF93aWR0aCA9IDAsIGJlc3RfaGVpZ2h0ID0gMDsKKyAgZ2ludCBiZXN0X2Zwc19uID0gMCwgYmVzdF9mcHNfZCA9IDA7CisgIGdpbnQgcGFyX24sIHBhcl9kOworICBnZG91YmxlIGJlc3RfZnBzID0gMC47CiAgIEdzdENhcHMgKnJldCA9IE5VTEw7Ci0gIGludCBpOworICBHc3RTdHJ1Y3R1cmUgKnM7CisgIEdMaXN0ICpsOwogCi0gIGNhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChjYXBzKTsKLSAgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmaW5mbywgY2Fwcyk7CisgIHJldCA9IGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKGNhcHMpOworCisgIC8qIHdlIG5lZWQgdGhpcyB0byBjYWxjdWxhdGUgaG93IGxhcmdlIHRvIG1ha2UgdGhlIG91dHB1dCBmcmFtZSAqLworICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAocmV0LCAwKTsKKyAgaWYgKCFnc3Rfc3RydWN0dXJlX2hhc19maWVsZCAocywgInBpeGVsLWFzcGVjdC1yYXRpbyIpKSB7CisgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCBHU1RfVFlQRV9GUkFDVElPTiwgMSwgMSwgTlVMTCk7CisgIH0KKyAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9mcmFjdGlvbiAocywgInBpeGVsLWFzcGVjdC1yYXRpbyIsIDEsIDEpOworICBnc3Rfc3RydWN0dXJlX2dldF9mcmFjdGlvbiAocywgInBpeGVsLWFzcGVjdC1yYXRpbyIsICZwYXJfbiwgJnBhcl9kKTsKIAogICBHU1RfT0JKRUNUX0xPQ0sgKHZhZ2cpOwogICBmb3IgKGwgPSBHU1RfRUxFTUVOVCAodmFnZyktPnNpbmtwYWRzOyBsOyBsID0gbC0+bmV4dCkgewpAQCAtODA1LDggKzEwMjUsMTIgQEAKICAgICBHc3RHTFZpZGVvTWl4ZXJQYWQgKm1peGVyX3BhZCA9IEdTVF9HTF9WSURFT19NSVhFUl9QQUQgKHZhZ2dwYWQpOwogICAgIGdpbnQgdGhpc193aWR0aCwgdGhpc19oZWlnaHQ7CiAgICAgZ2ludCB3aWR0aCwgaGVpZ2h0OworICAgIGdpbnQgZnBzX24sIGZwc19kOworICAgIGdkb3VibGUgY3VyX2ZwczsKIAotICAgIF9taXhlcl9wYWRfZ2V0X291dHB1dF9zaXplIChtaXgsIG1peGVyX3BhZCwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgICBmcHNfbiA9IEdTVF9WSURFT19JTkZPX0ZQU19OICgmdmFnZ3BhZC0+aW5mbyk7CisgICAgZnBzX2QgPSBHU1RfVklERU9fSU5GT19GUFNfRCAoJnZhZ2dwYWQtPmluZm8pOworICAgIF9taXhlcl9wYWRfZ2V0X291dHB1dF9zaXplIChtaXgsIG1peGVyX3BhZCwgcGFyX24sIHBhcl9kLCAmd2lkdGgsICZoZWlnaHQpOwogCiAgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApCiAgICAgICBjb250aW51ZTsKQEAgLTgxOCwyMCArMTA0MiwzMyBAQAogICAgICAgYmVzdF93aWR0aCA9IHRoaXNfd2lkdGg7CiAgICAgaWYgKGJlc3RfaGVpZ2h0IDwgdGhpc19oZWlnaHQpCiAgICAgICBiZXN0X2hlaWdodCA9IHRoaXNfaGVpZ2h0OworCisgICAgaWYgKGZwc19kID09IDApCisgICAgICBjdXJfZnBzID0gMC4wOworICAgIGVsc2UKKyAgICAgIGdzdF91dGlsX2ZyYWN0aW9uX3RvX2RvdWJsZSAoZnBzX24sIGZwc19kLCAmY3VyX2Zwcyk7CisKKyAgICBpZiAoYmVzdF9mcHMgPCBjdXJfZnBzKSB7CisgICAgICBiZXN0X2ZwcyA9IGN1cl9mcHM7CisgICAgICBiZXN0X2Zwc19uID0gZnBzX247CisgICAgICBiZXN0X2Zwc19kID0gZnBzX2Q7CisgICAgfQogICB9CiAgIEdTVF9PQkpFQ1RfVU5MT0NLICh2YWdnKTsKIAotICByZXQgPQotICAgICAgR1NUX1ZJREVPX0FHR1JFR0FUT1JfQ0xBU1MgKGdzdF9nbF92aWRlb19taXhlcl9wYXJlbnRfY2xhc3MpLT51cGRhdGVfY2FwcwotICAgICAgKHZhZ2csIGNhcHMpOwotCi0gIGZvciAoaSA9IDA7IGkgPCBnc3RfY2Fwc19nZXRfc2l6ZSAocmV0KTsgaSsrKSB7Ci0gICAgR3N0U3RydWN0dXJlICpzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAocmV0LCBpKTsKLQotICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAid2lkdGgiLCBHX1RZUEVfSU5ULCBiZXN0X3dpZHRoLCAiaGVpZ2h0IiwgR19UWVBFX0lOVCwKLSAgICAgICAgYmVzdF9oZWlnaHQsIE5VTEwpOworICBpZiAoYmVzdF9mcHNfbiA8PSAwIHx8IGJlc3RfZnBzX2QgPD0gMCB8fCBiZXN0X2ZwcyA9PSAwLjApIHsKKyAgICBiZXN0X2Zwc19uID0gMjU7CisgICAgYmVzdF9mcHNfZCA9IDE7CisgICAgYmVzdF9mcHMgPSAyNS4wOwogICB9CiAKKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHJldCwgMCk7CisgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfaW50IChzLCAid2lkdGgiLCBiZXN0X3dpZHRoKTsKKyAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9pbnQgKHMsICJoZWlnaHQiLCBiZXN0X2hlaWdodCk7CisgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24gKHMsICJmcmFtZXJhdGUiLCBiZXN0X2Zwc19uLAorICAgICAgYmVzdF9mcHNfZCk7CisgIHJldCA9IGdzdF9jYXBzX2ZpeGF0ZSAocmV0KTsKKwogICByZXR1cm4gcmV0OwogfQogCkBAIC04NDYsNyArMTA4Myw3IEBACiAgICAgcGFkLT52ZXJ0ZXhfYnVmZmVyID0gMDsKICAgfQogCi0gIHJldHVybiBGQUxTRTsKKyAgcmV0dXJuIFRSVUU7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC04NjQsNiArMTEwMSwxMSBAQAogICAgIHZpZGVvX21peGVyLT52Ym9faW5kaWNlcyA9IDA7CiAgIH0KIAorICBpZiAodmlkZW9fbWl4ZXItPmNoZWNrZXJfdmJvKSB7CisgICAgZ2wtPkRlbGV0ZUJ1ZmZlcnMgKDEsICZ2aWRlb19taXhlci0+Y2hlY2tlcl92Ym8pOworICAgIHZpZGVvX21peGVyLT5jaGVja2VyX3ZibyA9IDA7CisgIH0KKwogICBnc3RfYWdncmVnYXRvcl9pdGVyYXRlX3NpbmtwYWRzIChHU1RfQUdHUkVHQVRPUiAodmlkZW9fbWl4ZXIpLCBfcmVzZXRfcGFkX2dsLAogICAgICAgTlVMTCk7CiB9CkBAIC04NzQsOCArMTExNiw2IEBACiAgIEdzdEdMVmlkZW9NaXhlciAqdmlkZW9fbWl4ZXIgPSBHU1RfR0xfVklERU9fTUlYRVIgKG1peGVyKTsKICAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gR1NUX0dMX0JBU0VfTUlYRVIgKG1peGVyKS0+Y29udGV4dDsKIAotICB2aWRlb19taXhlci0+aW5wdXRfZnJhbWVzID0gTlVMTDsKLQogICBHU1RfREVCVUdfT0JKRUNUIChtaXhlciwgImNvbnRleHQ6JXAiLCBjb250ZXh0KTsKIAogICBpZiAodmlkZW9fbWl4ZXItPnNoYWRlcikKQEAgLTkwNSwxMyArMTE0NSwxMCBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nbF92aWRlb19taXhlcl9wcm9jZXNzX3RleHR1cmVzIChHc3RHTE1peGVyICogbWl4LCBHUHRyQXJyYXkgKiBmcmFtZXMsCi0gICAgZ3VpbnQgb3V0X3RleCkKK2dzdF9nbF92aWRlb19taXhlcl9wcm9jZXNzX3RleHR1cmVzIChHc3RHTE1peGVyICogbWl4LCBndWludCBvdXRfdGV4KQogewogICBHc3RHTFZpZGVvTWl4ZXIgKnZpZGVvX21peGVyID0gR1NUX0dMX1ZJREVPX01JWEVSIChtaXgpOwogCi0gIHZpZGVvX21peGVyLT5pbnB1dF9mcmFtZXMgPSBmcmFtZXM7Ci0KICAgZ3N0X2dsX2NvbnRleHRfdXNlX2Zib192MiAoR1NUX0dMX0JBU0VfTUlYRVIgKG1peCktPmNvbnRleHQsCiAgICAgICBHU1RfVklERU9fSU5GT19XSURUSCAoJkdTVF9WSURFT19BR0dSRUdBVE9SIChtaXgpLT5pbmZvKSwKICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJkdTVF9WSURFT19BR0dSRUdBVE9SIChtaXgpLT5pbmZvKSwKQEAgLTEwMTcsNiArMTI1NCwxMjMgQEAKICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0YXRpYyBndWludAorX2JsZW5kX2VxdWF0aW9uX3RvX2dsIChHc3RHTFZpZGVvTWl4ZXJCbGVuZEVxdWF0aW9uIGVxdWF0aW9uKQoreworICBzd2l0Y2ggKGVxdWF0aW9uKSB7CisgICAgY2FzZSBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRVFVQVRJT05fQUREOgorICAgICAgcmV0dXJuIEdMX0ZVTkNfQUREOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0VRVUFUSU9OX1NVQlRSQUNUOgorICAgICAgcmV0dXJuIEdMX0ZVTkNfU1VCVFJBQ1Q7CisgICAgY2FzZSBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRVFVQVRJT05fUkVWRVJTRV9TVUJUUkFDVDoKKyAgICAgIHJldHVybiBHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1Q7CisgICAgZGVmYXVsdDoKKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgICAgcmV0dXJuIDA7CisgIH0KK30KKworc3RhdGljIGd1aW50CitfYmxlbmRfZnVuY3Rpb25fdG9fZ2wgKEdzdEdMVmlkZW9NaXhlckJsZW5kRnVuY3Rpb24gZXF1YXRpb24pCit7CisgIHN3aXRjaCAoZXF1YXRpb24pIHsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9aRVJPOgorICAgICAgcmV0dXJuIEdMX1pFUk87CisgICAgY2FzZSBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FOgorICAgICAgcmV0dXJuIEdMX09ORTsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQ09MT1I6CisgICAgICByZXR1cm4gR0xfU1JDX0NPTE9SOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19TUkNfQ09MT1I6CisgICAgICByZXR1cm4gR0xfT05FX01JTlVTX1NSQ19DT0xPUjsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9EU1RfQ09MT1I6CisgICAgICByZXR1cm4gR0xfRFNUX0NPTE9SOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19EU1RfQ09MT1I6CisgICAgICByZXR1cm4gR0xfT05FX01JTlVTX0RTVF9DT0xPUjsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEE6CisgICAgICByZXR1cm4gR0xfU1JDX0FMUEhBOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19TUkNfQUxQSEE6CisgICAgICByZXR1cm4gR0xfT05FX01JTlVTX1NSQ19BTFBIQTsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9EU1RfQUxQSEE6CisgICAgICByZXR1cm4gR0xfRFNUX0FMUEhBOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19EU1RfQUxQSEE6CisgICAgICByZXR1cm4gR0xfT05FX01JTlVTX0RTVF9BTFBIQTsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUjoKKyAgICAgIHJldHVybiBHTF9DT05TVEFOVF9DT0xPUjsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6CisgICAgICByZXR1cm4gR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0FMUEhBOgorICAgICAgcmV0dXJuIEdMX0NPTlNUQU5UX0FMUEhBOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQToKKyAgICAgIHJldHVybiBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE7CisgICAgY2FzZSBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBX1NBVFVSQVRFOgorICAgICAgcmV0dXJuIEdMX1NSQ19BTFBIQV9TQVRVUkFURTsKKyAgICBkZWZhdWx0OgorICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICByZXR1cm4gMDsKKyAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19zZXRfYmxlbmRfc3RhdGUgKEdzdEdMVmlkZW9NaXhlciAqIHZpZGVvX21peGVyLCBHc3RHTFZpZGVvTWl4ZXJQYWQgKiBtaXhfcGFkKQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IEdTVF9HTF9CQVNFX01JWEVSICh2aWRlb19taXhlciktPmNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgZ2Jvb2xlYW4gcmVxdWlyZV9zZXBhcmF0ZSA9IEZBTFNFOworICBndWludCBnbF9mdW5jX3NyY19yZ2IsIGdsX2Z1bmNfc3JjX2FscGhhLCBnbF9mdW5jX2RzdF9yZ2IsIGdsX2Z1bmNfZHN0X2FscGhhOworICBndWludCBnbF9lcXVhdGlvbl9yZ2IsIGdsX2VxdWF0aW9uX2FscGhhOworCisgIHJlcXVpcmVfc2VwYXJhdGUgPQorICAgICAgbWl4X3BhZC0+YmxlbmRfZXF1YXRpb25fcmdiICE9IG1peF9wYWQtPmJsZW5kX2VxdWF0aW9uX2FscGhhCisgICAgICB8fCBtaXhfcGFkLT5ibGVuZF9mdW5jdGlvbl9zcmNfcmdiICE9IG1peF9wYWQtPmJsZW5kX2Z1bmN0aW9uX3NyY19hbHBoYQorICAgICAgfHwgbWl4X3BhZC0+YmxlbmRfZnVuY3Rpb25fZHN0X3JnYiAhPSBtaXhfcGFkLT5ibGVuZF9mdW5jdGlvbl9kc3RfYWxwaGE7CisKKyAgaWYgKHJlcXVpcmVfc2VwYXJhdGUgJiYgKCFnbC0+QmxlbmRGdW5jU2VwYXJhdGUKKyAgICAgICAgICB8fCAhZ2wtPkJsZW5kRXF1YXRpb25TZXBhcmF0ZSkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChtaXhfcGFkLAorICAgICAgICAic2VwYXJhdGVkIGJsZW5kIGVxdWF0aW9ucy9mdW5jdGlvbnMgcmVxdWVzdGVkIGhvd2V2ZXIgIgorICAgICAgICAiZ2xCbGVuZEZ1bmNTZXBhcmF0ZSBvciBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSBub3QgYXZhaWxhYmxlIik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKG1peF9wYWQtPmJsZW5kX2Z1bmN0aW9uX2RzdF9yZ2IgPT0KKyAgICAgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEFfU0FUVVJBVEUpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChtaXhfcGFkLAorICAgICAgICAiRGVzdGluYXRpb24gUkdCIGJsZW5kIGZ1bmN0aW9uIGNhbm5vdCBiZSBcJ1NSQ19BTFBIQV9TQVRVUkFURVwnIik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKG1peF9wYWQtPmJsZW5kX2Z1bmN0aW9uX2RzdF9hbHBoYSA9PQorICAgICAgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQV9TQVRVUkFURSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG1peF9wYWQsCisgICAgICAgICJEZXN0aW5hdGlvbiBhbHBoYSBibGVuZCBmdW5jdGlvbiBjYW5ub3QgYmUgXCdTUkNfQUxQSEFfU0FUVVJBVEVcJyIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGdsX2VxdWF0aW9uX3JnYiA9IF9ibGVuZF9lcXVhdGlvbl90b19nbCAobWl4X3BhZC0+YmxlbmRfZXF1YXRpb25fcmdiKTsKKyAgZ2xfZXF1YXRpb25fYWxwaGEgPSBfYmxlbmRfZXF1YXRpb25fdG9fZ2wgKG1peF9wYWQtPmJsZW5kX2VxdWF0aW9uX2FscGhhKTsKKworICBnbF9mdW5jX3NyY19yZ2IgPSBfYmxlbmRfZnVuY3Rpb25fdG9fZ2wgKG1peF9wYWQtPmJsZW5kX2Z1bmN0aW9uX3NyY19yZ2IpOworICBnbF9mdW5jX3NyY19hbHBoYSA9IF9ibGVuZF9mdW5jdGlvbl90b19nbCAobWl4X3BhZC0+YmxlbmRfZnVuY3Rpb25fc3JjX2FscGhhKTsKKyAgZ2xfZnVuY19kc3RfcmdiID0gX2JsZW5kX2Z1bmN0aW9uX3RvX2dsIChtaXhfcGFkLT5ibGVuZF9mdW5jdGlvbl9kc3RfcmdiKTsKKyAgZ2xfZnVuY19kc3RfYWxwaGEgPSBfYmxlbmRfZnVuY3Rpb25fdG9fZ2wgKG1peF9wYWQtPmJsZW5kX2Z1bmN0aW9uX2RzdF9hbHBoYSk7CisKKyAgaWYgKGdsLT5CbGVuZEVxdWF0aW9uU2VwYXJhdGUpCisgICAgZ2wtPkJsZW5kRXF1YXRpb25TZXBhcmF0ZSAoZ2xfZXF1YXRpb25fcmdiLCBnbF9lcXVhdGlvbl9hbHBoYSk7CisgIGVsc2UKKyAgICBnbC0+QmxlbmRFcXVhdGlvbiAoZ2xfZXF1YXRpb25fcmdiKTsKKworICBpZiAoZ2wtPkJsZW5kRnVuY1NlcGFyYXRlKQorICAgIGdsLT5CbGVuZEZ1bmNTZXBhcmF0ZSAoZ2xfZnVuY19zcmNfcmdiLCBnbF9mdW5jX2RzdF9yZ2IsIGdsX2Z1bmNfc3JjX2FscGhhLAorICAgICAgICBnbF9mdW5jX2RzdF9hbHBoYSk7CisgIGVsc2UKKyAgICBnbC0+QmxlbmRGdW5jIChnbF9mdW5jX3NyY19yZ2IsIGdsX2Z1bmNfZHN0X3JnYik7CisKKyAgZ2wtPkJsZW5kQ29sb3IgKG1peF9wYWQtPmJsZW5kX2NvbnN0YW50X2NvbG9yX3JlZCwKKyAgICAgIG1peF9wYWQtPmJsZW5kX2NvbnN0YW50X2NvbG9yX2dyZWVuLCBtaXhfcGFkLT5ibGVuZF9jb25zdGFudF9jb2xvcl9ibHVlLAorICAgICAgbWl4X3BhZC0+YmxlbmRfY29uc3RhbnRfY29sb3JfYWxwaGEpOworCisgIHJldHVybiBUUlVFOworfQorCiAvKiBvcGVuZ2wgc2NlbmUsIHBhcmFtczogaW5wdXQgdGV4dHVyZSAobm90IHRoZSBvdXRwdXQgbWl4ZXItPnRleHR1cmUpICovCiBzdGF0aWMgdm9pZAogZ3N0X2dsX3ZpZGVvX21peGVyX2NhbGxiYWNrIChncG9pbnRlciBzdHVmZikKQEAgLTEwMjUsMTIgKzEzNzksMTAgQEAKICAgR3N0VmlkZW9BZ2dyZWdhdG9yICp2YWdnID0gR1NUX1ZJREVPX0FHR1JFR0FUT1IgKHN0dWZmKTsKICAgR3N0R0xNaXhlciAqbWl4ZXIgPSBHU1RfR0xfTUlYRVIgKHZpZGVvX21peGVyKTsKICAgR3N0R0xGdW5jcyAqZ2wgPSBHU1RfR0xfQkFTRV9NSVhFUiAobWl4ZXIpLT5jb250ZXh0LT5nbF92dGFibGU7Ci0KICAgR0xpbnQgYXR0cl9wb3NpdGlvbl9sb2MgPSAwOwogICBHTGludCBhdHRyX3RleHR1cmVfbG9jID0gMDsKICAgZ3VpbnQgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0OwotCi0gIGd1aW50IGNvdW50ID0gMDsKKyAgR0xpc3QgKndhbGs7CiAKICAgb3V0X3dpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEggKCZ2YWdnLT5pbmZvKTsKICAgb3V0X2hlaWdodCA9IEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJnZhZ2ctPmluZm8pOwpAQCAtMTA1OSw5ICsxNDExLDExIEBACiAKICAgZ2wtPkVuYWJsZSAoR0xfQkxFTkQpOwogCi0gIHdoaWxlIChjb3VudCA8IHZpZGVvX21peGVyLT5pbnB1dF9mcmFtZXMtPmxlbikgewotICAgIEdzdEdMTWl4ZXJGcmFtZURhdGEgKmZyYW1lOwotICAgIEdzdEdMVmlkZW9NaXhlclBhZCAqcGFkOworICBHU1RfT0JKRUNUX0xPQ0sgKHZpZGVvX21peGVyKTsKKyAgd2FsayA9IEdTVF9FTEVNRU5UICh2aWRlb19taXhlciktPnNpbmtwYWRzOworICB3aGlsZSAod2FsaykgeworICAgIEdzdEdMTWl4ZXJQYWQgKm1peF9wYWQgPSB3YWxrLT5kYXRhOworICAgIEdzdEdMVmlkZW9NaXhlclBhZCAqcGFkID0gd2Fsay0+ZGF0YTsKICAgICBHc3RWaWRlb0luZm8gKnZfaW5mbzsKICAgICBndWludCBpbl90ZXg7CiAgICAgZ3VpbnQgaW5fd2lkdGgsIGluX2hlaWdodDsKQEAgLTEwNzUsMjYgKzE0MjksMjUgQEAKICAgICB9OwogICAgIC8qICpJTkRFTlQtT04qICovCiAKLSAgICBmcmFtZSA9IGdfcHRyX2FycmF5X2luZGV4ICh2aWRlb19taXhlci0+aW5wdXRfZnJhbWVzLCBjb3VudCk7Ci0gICAgaWYgKCFmcmFtZSkgewotICAgICAgR1NUX0RFQlVHICgic2tpcHBpbmcgdGV4dHVyZSwgbnVsbCBmcmFtZSIpOwotICAgICAgY291bnQrKzsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLSAgICBwYWQgPSAoR3N0R0xWaWRlb01peGVyUGFkICopIGZyYW1lLT5wYWQ7CiAgICAgdl9pbmZvID0gJkdTVF9WSURFT19BR0dSRUdBVE9SX1BBRCAocGFkKS0+aW5mbzsKICAgICBpbl93aWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIICh2X2luZm8pOwogICAgIGluX2hlaWdodCA9IEdTVF9WSURFT19JTkZPX0hFSUdIVCAodl9pbmZvKTsKIAotICAgIGlmICghZnJhbWUtPnRleHR1cmUgfHwgaW5fd2lkdGggPD0gMCB8fCBpbl9oZWlnaHQgPD0gMAorICAgIGlmICghbWl4X3BhZC0+Y3VycmVudF90ZXh0dXJlIHx8IGluX3dpZHRoIDw9IDAgfHwgaW5faGVpZ2h0IDw9IDAKICAgICAgICAgfHwgcGFkLT5hbHBoYSA9PSAwLjBmKSB7Ci0gICAgICBHU1RfREVCVUcgKCJza2lwcGluZyB0ZXh0dXJlOiV1IGZyYW1lOiVwIHdpZHRoOiV1IGhlaWdodDoldSBhbHBoYTolZiIsCi0gICAgICAgICAgZnJhbWUtPnRleHR1cmUsIGZyYW1lLCBpbl93aWR0aCwgaW5faGVpZ2h0LCBwYWQtPmFscGhhKTsKLSAgICAgIGNvdW50Kys7CisgICAgICBHU1RfREVCVUcgKCJza2lwcGluZyB0ZXh0dXJlOiV1IHBhZDolcCB3aWR0aDoldSBoZWlnaHQ6JXUgYWxwaGE6JWYiLAorICAgICAgICAgIG1peF9wYWQtPmN1cnJlbnRfdGV4dHVyZSwgcGFkLCBpbl93aWR0aCwgaW5faGVpZ2h0LCBwYWQtPmFscGhhKTsKKyAgICAgIHdhbGsgPSBnX2xpc3RfbmV4dCAod2Fsayk7CiAgICAgICBjb250aW51ZTsKICAgICB9CiAKLSAgICBpbl90ZXggPSBmcmFtZS0+dGV4dHVyZTsKKyAgICBpZiAoIV9zZXRfYmxlbmRfc3RhdGUgKHZpZGVvX21peGVyLCBwYWQpKSB7CisgICAgICBHU1RfRklYTUVfT0JKRUNUIChwYWQsICJza2lwcGluZyBkdWUgdG8gaW5jb3JyZWN0IGJsZW5kIHBhcmFtZXRlcnMiKTsKKyAgICAgIHdhbGsgPSBnX2xpc3RfbmV4dCAod2Fsayk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBpbl90ZXggPSBtaXhfcGFkLT5jdXJyZW50X3RleHR1cmU7CiAKICAgICBfaW5pdF92Ym9faW5kaWNlcyAodmlkZW9fbWl4ZXIpOwogCkBAIC0xMTAyLDcgKzE0NTUsOSBAQAogICAgICAgZ2ludCBwYWRfd2lkdGgsIHBhZF9oZWlnaHQ7CiAgICAgICBnZmxvYXQgdywgaDsKIAotICAgICAgX21peGVyX3BhZF9nZXRfb3V0cHV0X3NpemUgKHZpZGVvX21peGVyLCBwYWQsICZwYWRfd2lkdGgsICZwYWRfaGVpZ2h0KTsKKyAgICAgIF9taXhlcl9wYWRfZ2V0X291dHB1dF9zaXplICh2aWRlb19taXhlciwgcGFkLAorICAgICAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9OICgmdmFnZy0+aW5mbyksCisgICAgICAgICAgR1NUX1ZJREVPX0lORk9fUEFSX0QgKCZ2YWdnLT5pbmZvKSwgJnBhZF93aWR0aCwgJnBhZF9oZWlnaHQpOwogCiAgICAgICB3ID0gKChnZmxvYXQpIHBhZF93aWR0aCAvIChnZmxvYXQpIG91dF93aWR0aCk7CiAgICAgICBoID0gKChnZmxvYXQpIHBhZF9oZWlnaHQgLyAoZ2Zsb2F0KSBvdXRfaGVpZ2h0KTsKQEAgLTExMzUsOSArMTQ5MCw2IEBACiAgICAgfQogICAgIGdsLT5CaW5kQnVmZmVyIChHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgdmlkZW9fbWl4ZXItPnZib19pbmRpY2VzKTsKIAotICAgIGdsLT5CbGVuZEZ1bmMgKEdMX1NSQ19BTFBIQSwgR0xfT05FX01JTlVTX1NSQ19BTFBIQSk7Ci0gICAgZ2wtPkJsZW5kRXF1YXRpb24gKEdMX0ZVTkNfQUREKTsKLQogICAgIGdsLT5BY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMCk7CiAgICAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCBpbl90ZXgpOwogICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKHZpZGVvX21peGVyLT5zaGFkZXIsICJ0ZXh0dXJlIiwgMCk7CkBAIC0xMTU0LDggKzE1MDYsOSBAQAogCiAgICAgZ2wtPkRyYXdFbGVtZW50cyAoR0xfVFJJQU5HTEVTLCA2LCBHTF9VTlNJR05FRF9TSE9SVCwgMCk7CiAKLSAgICArK2NvdW50OworICAgIHdhbGsgPSBnX2xpc3RfbmV4dCAod2Fsayk7CiAgIH0KKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHZpZGVvX21peGVyKTsKIAogICBnbC0+RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IChhdHRyX3Bvc2l0aW9uX2xvYyk7CiAgIGdsLT5EaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgKGF0dHJfdGV4dHVyZV9sb2MpOwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsdmlkZW9taXhlci5oIGIvZXh0L2dsL2dzdGdsdmlkZW9taXhlci5oCmluZGV4IDBkMDI1MmIuLmEwNzc2ZmQgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbHZpZGVvbWl4ZXIuaAorKysgYi9leHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmgKQEAgLTUzLDYgKzUzLDY2IEBACiB9CiBHc3RHTFZpZGVvTWl4ZXJCYWNrZ3JvdW5kOwogCisvKioKKyAqIEdzdEdMVmlkZW9NaXhlckJsZW5kRXF1YXRpb246CisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0VRVUFUSU9OX0FERDogQWRkIHRoZSB0d28gcmVzdWx0cy4KKyAqIEBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRVFVQVRJT05fU1VCVFJBQ1Q6IFN1YnRyYWN0IGNvbXBvbmVudC13aXNlIHRoZSBkZXN0aW5hdGlvbiBmcm9tIHRoZSBzb3VyY2UgKFMgLSBEKS4KKyAqIEBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRVFVQVRJT05fUkVWRVJTRV9TVUJUUkFDVDogU3VidHJhY3QgY29tcG9uZW50LXdpc2UgdGhlIHNvdXJjZSBmcm9tIHRoZSBkZXN0aW5hdGlvbiAoRCAtIFMpLgorICoKKyAqIFRoZSBibGVuZGluZyBlcXVhdGlvbiB0byB1c2UuICBTZWUgdGhlIG9wZW5nbCBzcGVjaWZpY2l0aW9uIGZvcgorICogZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUKKyAqLwordHlwZWRlZiBlbnVtCit7CisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTl9BREQsCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTl9TVUJUUkFDVCwKKyAgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0VRVUFUSU9OX1JFVkVSU0VfU1VCVFJBQ1QsCit9CitHc3RHTFZpZGVvTWl4ZXJCbGVuZEVxdWF0aW9uOworCisvKioKKyAqIEdzdEdMVmlkZW9NaXhlckJsZW5kRnVuY3Rpb246CisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX1pFUk86IEFsbCBjb21wb25lbnRzIGFyZSB6ZXJvCisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORTogQWxsIGNvbXBvbmVudHMgYXJlIG9uZQorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQ09MT1I6IFVzZSB0aGUgc291cmNlIGNvbG9yL2FscGhhCisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19TUkNfQ09MT1I6IE9uZSBtaW51cyB0aGUgc291cmNlIGNvbG9yL2FscGhhCisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX0RTVF9DT0xPUjogVXNlIHRoZSBkZXN0aW5hdGlvbiBjb2xvci9hbHBoYQorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfRFNUX0NPTE9SOiBPbmUgbWludXMgdGhlIGRlc3RpbmF0aW9uIGNvbG9yL2FscGhhCisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQTogQWxsIGNvbXBvbmVudHMgYXJlIHRoZSBzb3VyY2UgYWxwaGEKKyAqIEBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX1NSQ19BTFBIQTogQWxsIGNvbXBvbmVudHMgYXJlIG9uZSBtaW51cyB0aGUgc291cmNlIGFscGhhCisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX0RTVF9BTFBIQTogQWxsIGNvbXBvbmVudHMgYXJlIHRoZSBkZXN0aW5hdGlvbiBhbHBoYQorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfRFNUX0FMUEhBOiBBbGwgY29tcG9uZW50cyBhcmUgb25lIG1pbnVzIHRoZSBkZXN0aW5hdGlvbiBhbHBoYQorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUjogVXNlIHRoZSBjb25zdGFudCBjb2xvci9hbHBoYQorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6IFVzZSBvbmUgbWludXMgdGhlIGNvbnN0YW50IGNvbG9yL2FscGhhCisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0FMUEhBOiBBbGwgY29tcG9uZW50cyBhcmUgdGhlIGNvbnN0YW50IGFscGhhCisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUjogQWxsIGNvbXBvbmVudHMgYXJlIG9uZSBtaW51cyB0aGUgY29uc3RhbnQgYWxwaGEKKyAqIEBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBX1NBVFVSQVRFOiBBbGwgY29sb3IgY29tcG9uZW50cworICogICAgIGFyZSB0aGUgbWluaW11bSBvZiBzb3VyY2UgYWxwaGEgYW5kIG9uZSBtaW51cyB0aGUgZGVzdGluYXRpb24gYWxwaGEuCisgKiAgICAgQWxwaGEgaXMgZXF1YWwgdG8gb25lLgorICoKKyAqIFRoZSBibGVuZGluZyBmdW5jdGlvbiB0byB1c2UuICBTZWUgdGhlIG9wZW5nbCBzcGVjaWZpY2l0aW9uIGZvcgorICogZ2xCbGVuZEZ1bmNTZXBhcmF0ZQorICovCit0eXBlZGVmIGVudW0KK3sKKyAgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX1pFUk8sCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkUsCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQ09MT1IsCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfU1JDX0NPTE9SLAorICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fRFNUX0NPTE9SLAorICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX0RTVF9DT0xPUiwKKyAgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQSwKKyAgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19TUkNfQUxQSEEsCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9EU1RfQUxQSEEsCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfRFNUX0FMUEhBLAorICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1IsCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IsCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9BTFBIQSwKKyAgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSwKKyAgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQV9TQVRVUkFURSwKK30KK0dzdEdMVmlkZW9NaXhlckJsZW5kRnVuY3Rpb247CisKIHN0cnVjdCBfR3N0R0xWaWRlb01peGVyCiB7CiAgICAgR3N0R0xNaXhlciBtaXhlcjsKQEAgLTYxLDcgKzEyMSw2IEBACiAKICAgICBHc3RHTFNoYWRlciAqc2hhZGVyOwogICAgIEdzdEdMU2hhZGVyICpjaGVja2VyOwotICAgIEdQdHJBcnJheSAqaW5wdXRfZnJhbWVzOwogCiAgICAgR0x1aW50IHZhbzsKICAgICBHTHVpbnQgdmJvX2luZGljZXM7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0b3BlbmdsLmMgYi9leHQvZ2wvZ3N0b3BlbmdsLmMKaW5kZXggMWZhZDBhMi4uNTA2NzZjNCAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdG9wZW5nbC5jCisrKyBiL2V4dC9nbC9nc3RvcGVuZ2wuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImdzdGdsdXBsb2FkZWxlbWVudC5oIgogI2luY2x1ZGUgImdzdGdsZG93bmxvYWRlbGVtZW50LmgiCiAjaW5jbHVkZSAiZ3N0Z2xjb2xvcmNvbnZlcnRlbGVtZW50LmgiCisjaW5jbHVkZSAiZ3N0Z2xjb2xvcmJhbGFuY2UuaCIKICNpbmNsdWRlICJnc3RnbGZpbHRlcmJpbi5oIgogI2luY2x1ZGUgImdzdGdsc2lua2Jpbi5oIgogI2luY2x1ZGUgImdzdGdsc3JjYmluLmgiCkBAIC02MCw5ICs2MSwxMSBAQAogI2luY2x1ZGUgImdzdGdsZmlsdGVyYXBwLmgiCiAjaW5jbHVkZSAiZ3N0Z2xzdGVyZW9zcGxpdC5oIgogI2luY2x1ZGUgImdzdGdsc3RlcmVvbWl4LmgiCisjaW5jbHVkZSAiZ3N0Z2x2aWV3Y29udmVydC5oIgogCiAjaWYgSEFWRV9HUkFQSEVORQogI2luY2x1ZGUgImdzdGdsdHJhbnNmb3JtYXRpb24uaCIKKyNpbmNsdWRlICJnc3RnbHZpZGVvZmxpcC5oIgogI2VuZGlmCiAjaWYgSEFWRV9KUEVHCiAjaWYgSEFWRV9QTkcKQEAgLTc1LDcgKzc4LDYgQEAKICNpbmNsdWRlICJnc3RnbGZpbHRlcmdsYXNzLmgiCiAvKiAjaW5jbHVkZSAiZ3N0Z2xmaWx0ZXJyZWZsZWN0ZWRzY3JlZW4uaCIgKi8KICNpbmNsdWRlICJnc3RnbGRlaW50ZXJsYWNlLmgiCi0jaW5jbHVkZSAiZ3N0Z2x2aWV3Y29udmVydC5oIgogI2luY2x1ZGUgImdzdGdsbW9zYWljLmgiCiAjaWYgSEFWRV9QTkcKICNpbmNsdWRlICJnc3RnbGRpZmZlcmVuY2VtYXR0ZS5oIgpAQCAtMTQwLDYgKzE0MiwxMSBAQAogICAgIHJldHVybiBGQUxTRTsKICAgfQogCisgIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImdsY29sb3JiYWxhbmNlIiwKKyAgICAgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9HTF9DT0xPUl9CQUxBTkNFKSkgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCiAgIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImdsZmlsdGVyYmluIiwKICAgICAgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9HTF9GSUxURVJfQklOKSkgewogICAgIHJldHVybiBGQUxTRTsKQEAgLTE2OSw2ICsxNzYsMTEgQEAKICAgICAgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9HTF9UUkFOU0ZPUk1BVElPTikpIHsKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KKworICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJnbHZpZGVvZmxpcCIsCisgICAgICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfR0xfVklERU9fRkxJUCkpIHsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KICNlbmRpZgogCiAgIGlmICghZ3N0X2dsX2VmZmVjdHNfcmVnaXN0ZXJfZmlsdGVycyAocGx1Z2luLCBHU1RfUkFOS19OT05FKSkgewpAQCAtMTk5LDYgKzIxMSwyMSBAQAogICAgICAgICAgIEdTVF9SQU5LX05PTkUsIEdTVF9UWVBFX0dMX0ZJTFRFUl9BUFApKSB7CiAgICAgcmV0dXJuIEZBTFNFOwogICB9CisKKyAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2x2aWV3Y29udmVydCIsCisgICAgICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfR0xfVklFV19DT05WRVJUX0VMRU1FTlQpKSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2xzdGVyZW9zcGxpdCIsCisgICAgICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfR0xfU1RFUkVPU1BMSVQpKSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2xzdGVyZW9taXgiLAorICAgICAgICAgIEdTVF9SQU5LX05PTkUsIEdTVF9UWVBFX0dMX1NURVJFT19NSVgpKSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CiAjaWYgSEFWRV9KUEVHCiAjaWYgSEFWRV9QTkcKICAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2xvdmVybGF5IiwKQEAgLTIyOCwxMSArMjU1LDYgQEAKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KIAotICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJnbHZpZXdjb252ZXJ0IiwKLSAgICAgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9HTF9WSUVXX0NPTlZFUlRfRUxFTUVOVCkpIHsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQogICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJnbG1vc2FpYyIsCiAgICAgICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfR0xfTU9TQUlDKSkgewogICAgIHJldHVybiBGQUxTRTsKQEAgLTI0OSwxNCArMjcxLDYgQEAKICAgfQogI2VuZGlmCiAjZW5kaWYgLyogSEFWRV9QTkcgKi8KLSAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2xzdGVyZW9zcGxpdCIsCi0gICAgICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfR0xfU1RFUkVPU1BMSVQpKSB7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0gIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImdsc3RlcmVvbWl4IiwKLSAgICAgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9HTF9TVEVSRU9fTUlYKSkgewotICAgIHJldHVybiBGQUxTRTsKLSAgfQogI2VuZGlmIC8qIEdTVF9HTF9IQVZFX09QRU5HTCAqLwogI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19DT0NPQQogICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJjYW9wZW5nbGxheWVyc2luayIsCmRpZmYgLS1naXQgYS9leHQvZ21lL01ha2VmaWxlLmluIGIvZXh0L2dtZS9NYWtlZmlsZS5pbgppbmRleCA5YWI4Y2U2Li5hMDg2NGI0IDEwMDY0NAotLS0gYS9leHQvZ21lL01ha2VmaWxlLmluCisrKyBiL2V4dC9nbWUvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvZ3NldHRpbmdzL01ha2VmaWxlLmFtIGIvZXh0L2dzZXR0aW5ncy9NYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNiYThhYy4uMDAwMDAwMAotLS0gYS9leHQvZ3NldHRpbmdzL01ha2VmaWxlLmFtCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotZ3NldHRpbmdzX1NDSEVNQVMgPSBvcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ALmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwKLQotb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sOiBvcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwKLQljcCBvcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwgb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sCi0KLWlmIFVTRV9HU0VUVElOR1MKLUBHU0VUVElOR1NfUlVMRVNACi1lbmRpZgotCi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50cy5sYQotCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9TT1VSQ0VTID0gXAotICAgICAgICBnc3Rnc2V0dGluZ3NhdWRpb3NpbmsuYyBcCi0gICAgICAgIGdzdGdzZXR0aW5nc2F1ZGlvc3JjLmMgXAotICAgICAgICBnc3Rnc2V0dGluZ3N2aWRlb3NpbmsuYyBcCi0gICAgICAgIGdzdGdzZXR0aW5nc3ZpZGVvc3JjLmMgXAotICAgICAgICBnc3Rzd2l0Y2hzaW5rLmMgXAotICAgICAgICBnc3Rzd2l0Y2hzcmMuYyBcCi0JcGx1Z2luLmMKLQotbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoR1NFVFRJTkdTX0NGTEFHUykgJChESVJfQ0ZMQUdTKSBcCi0JLURHc3RTd2l0Y2hTcmM9R3N0R1NldHRpbmdzU3dpdGNoU3JjIFwKLQktREdzdFN3aXRjaFNyY0NsYXNzPUdzdEdTZXR0aW5nc1N3aXRjaFNyY0NsYXNzIFwKLQktREdzdFN3aXRjaFNpbms9R3N0R1NldHRpbmdzU3dpdGNoU2luayBcCi0JLURHc3RTd2l0Y2hTaW5rQ2xhc3M9R3N0R1NldHRpbmdzU3dpdGNoU2lua0NsYXNzCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJBREQgPSAkKEdTVF9MSUJTKSAkKEdTRVRUSU5HU19MSUJTKQotbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQotbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKLQotbm9pbnN0X0hFQURFUlMgPSBcCi0gICAgICAgIGdzdGdzZXR0aW5nc2F1ZGlvc2luay5oIFwKLSAgICAgICAgZ3N0Z3NldHRpbmdzYXVkaW9zcmMuaCBcCi0gICAgICAgIGdzdGdzZXR0aW5nc3ZpZGVvc2luay5oIFwKLSAgICAgICAgZ3N0Z3NldHRpbmdzdmlkZW9zcmMuaCBcCi0gICAgICAgIGdzdHN3aXRjaHNpbmsuaCBcCi0gICAgICAgIGdzdHN3aXRjaHNyYy5oIFwKLQlnc3Rnc2V0dGluZ3MuaAotCi1FWFRSQV9ESVNUID0gb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sCi0KLUNMRUFORklMRVMgPSAkKGdzZXR0aW5nc19TQ0hFTUFTKQpkaWZmIC0tZ2l0IGEvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3MuaCBiL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0OWFlZTcuLjAwMDAwMDAKLS0tIGEvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDEwIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgX19HU1RfR1NFVFRJTkdTX0hfXwotI2RlZmluZSBfX0dTVF9HU0VUVElOR1NfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBHU1RfR1NFVFRJTkdTX1NDSEVNQSAib3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci0wLjEwLmRlZmF1bHQtZWxlbWVudHMiCi0jZGVmaW5lIEdTVF9HU0VUVElOR1NfUEFUSCAiL2Rlc2t0b3AvZ3N0cmVhbWVyLzAuMTAvZGVmYXVsdC1lbGVtZW50cy8iCi0KLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19LRVlfU09VTkRTX0FVRElPU0lOSyAic291bmRzLWF1ZGlvc2luayIKLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19LRVlfTVVTSUNfQVVESU9TSU5LICJtdXNpYy1hdWRpb3NpbmsiCi0jZGVmaW5lIEdTVF9HU0VUVElOR1NfS0VZX0NIQVRfQVVESU9TSU5LICJjaGF0LWF1ZGlvc2luayIKLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19LRVlfQVVESU9TUkMgImF1ZGlvc3JjIgotI2RlZmluZSBHU1RfR1NFVFRJTkdTX0tFWV9WSURFT1NJTksgInZpZGVvc2luayIKLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19LRVlfVklERU9TUkMgInZpZGVvc3JjIgotI2RlZmluZSBHU1RfR1NFVFRJTkdTX0tFWV9WSVNVQUxJWkFUSU9OICJ2aXN1YWxpemF0aW9uIgotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogX19HU1RfR1NFVFRJTkdTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3NhdWRpb3NpbmsuYyBiL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwODBjYjUuLjAwMDAwMDAKLS0tIGEvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3NhdWRpb3NpbmsuYworKysgL2Rldi9udWxsCkBAIC0xLDM1NSArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxMCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotLyoqCi0gKiBTRUNUSU9OOmVsZW1lbnQtZ3NldHRpbmdzYXVkaW9zaW5rCi0gKgotICogVGhpcyBlbGVtZW50IG91dHB1dHMgc291bmQgdG8gdGhlIGF1ZGlvc2luayB0aGF0IGhhcyBiZWVuIGNvbmZpZ3VyZWQgaW4KLSAqIEdTZXR0aW5ncyBieSB0aGUgdXNlci4KLSAqIAotICogPHJlZnNlY3QyPgotICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgotICogfFsKLSAqIGdzdC1sYXVuY2ggYXVkaW90ZXN0c3JjICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGdzZXR0aW5nc2F1ZGlvc2luawotICogXXwgUGxheSBvbiBjb25maWd1cmVkIGF1ZGlvc2luawotICogPC9yZWZzZWN0Mj4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2dsaWItY29tcGF0LXByaXZhdGUuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgImdzdGdzZXR0aW5nc2F1ZGlvc2luay5oIgotI2luY2x1ZGUgImdzdGdzZXR0aW5ncy5oIgotCi0jZGVmaW5lIEdTVF9UWVBFX0dTRVRUSU5HU19BVURJT1NJTktfUFJPRklMRSAoZ3N0X2dzZXR0aW5nc19hdWRpb3NpbmtfcHJvZmlsZV9nZXRfdHlwZSgpKQotc3RhdGljIEdUeXBlCi1nc3RfZ3NldHRpbmdzX2F1ZGlvc2lua19wcm9maWxlX2dldF90eXBlICh2b2lkKQotewotICBzdGF0aWMgR1R5cGUgZ3NldHRpbmdzX3Byb2ZpbGVfdHlwZSA9IDA7Ci0gIHN0YXRpYyBjb25zdCBHRW51bVZhbHVlIGdzZXR0aW5nc19wcm9maWxlc1tdID0gewotICAgIHtHU1RfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFX1NPVU5EUywgIlNvdW5kIEV2ZW50cyIsICJzb3VuZHMifSwKLSAgICB7R1NUX0dTRVRUSU5HU19BVURJT1NJTktfUFJPRklMRV9NVVNJQywgIk11c2ljIGFuZCBNb3ZpZXMgKGRlZmF1bHQpIiwKLSAgICAgICAgIm11c2ljIn0sCi0gICAge0dTVF9HU0VUVElOR1NfQVVESU9TSU5LX1BST0ZJTEVfQ0hBVCwgIkF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIsICJjaGF0In0sCi0gICAgezAsIE5VTEwsIE5VTEx9Ci0gIH07Ci0KLSAgaWYgKCFnc2V0dGluZ3NfcHJvZmlsZV90eXBlKSB7Ci0gICAgZ3NldHRpbmdzX3Byb2ZpbGVfdHlwZSA9Ci0gICAgICAgIGdfZW51bV9yZWdpc3Rlcl9zdGF0aWMgKCJHc3RHU2V0dGluZ3NBdWRpb1NpbmtQcm9maWxlIiwKLSAgICAgICAgZ3NldHRpbmdzX3Byb2ZpbGVzKTsKLSAgfQotICByZXR1cm4gZ3NldHRpbmdzX3Byb2ZpbGVfdHlwZTsKLX0KLQotZW51bQotewotICBQUk9QXzAsCi0gIFBST1BfUFJPRklMRQotfTsKLQotR1NUX0JPSUxFUlBMQVRFIChHc3RHU2V0dGluZ3NBdWRpb1NpbmssIGdzdF9nc2V0dGluZ3NfYXVkaW9fc2luaywgR3N0U3dpdGNoU2luaywKLSAgICBHU1RfVFlQRV9TV0lUQ0hfU0lOSyk7Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX2NoYW5nZV9jaGlsZCAoR3N0R1NldHRpbmdzQXVkaW9TaW5rICogc2luaykKLXsKLSAgY29uc3QgZ2NoYXIgKmtleSA9IE5VTEw7Ci0gIGdjaGFyICpuZXdfc3RyaW5nOwotICBHRXJyb3IgKmVyciA9IE5VTEw7Ci0gIEdzdEVsZW1lbnQgKm5ld19raWQ7Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChzaW5rKTsKLSAgc3dpdGNoIChzaW5rLT5wcm9maWxlKSB7Ci0gICAgY2FzZSBHU1RfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFX1NPVU5EUzoKLSAgICAgIGtleSA9IEdTVF9HU0VUVElOR1NfS0VZX1NPVU5EU19BVURJT1NJTks7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9HU0VUVElOR1NfQVVESU9TSU5LX1BST0ZJTEVfTVVTSUM6Ci0gICAgICBrZXkgPSBHU1RfR1NFVFRJTkdTX0tFWV9NVVNJQ19BVURJT1NJTks7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9HU0VUVElOR1NfQVVESU9TSU5LX1BST0ZJTEVfQ0hBVDoKLSAgICAgIGtleSA9IEdTVF9HU0VUVElOR1NfS0VZX0NIQVRfQVVESU9TSU5LOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgbmV3X3N0cmluZyA9IGdfc2V0dGluZ3NfZ2V0X3N0cmluZyAoc2luay0+c2V0dGluZ3MsIGtleSk7Ci0KLSAgaWYgKG5ld19zdHJpbmcgIT0gTlVMTCAmJiBzaW5rLT5nc2V0dGluZ3Nfc3RyICE9IE5VTEwgJiYKLSAgICAgIChzdHJsZW4gKG5ld19zdHJpbmcpID09IDAgfHwKLSAgICAgICAgICBzdHJjbXAgKHNpbmstPmdzZXR0aW5nc19zdHIsIG5ld19zdHJpbmcpID09IDApKSB7Ci0gICAgZ19mcmVlIChuZXdfc3RyaW5nKTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLAotICAgICAgICAiR1NldHRpbmdzIGtleSB3YXMgdXBkYXRlZCwgYnV0IGl0IGRpZG4ndCBjaGFuZ2UuIElnbm9yaW5nIik7Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNpbmspOwotICAgIHJldHVybiBUUlVFOwotICB9Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzaW5rKTsKLQotICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiR1NldHRpbmdzIGtleSBjaGFuZ2VkIGZyb20gJyVzJyB0byAnJXMnIiwKLSAgICAgIEdTVF9TVFJfTlVMTCAoc2luay0+Z3NldHRpbmdzX3N0ciksIEdTVF9TVFJfTlVMTCAobmV3X3N0cmluZykpOwotCi0gIGlmIChuZXdfc3RyaW5nKSB7Ci0gICAgbmV3X2tpZCA9IGdzdF9wYXJzZV9iaW5fZnJvbV9kZXNjcmlwdGlvbiAobmV3X3N0cmluZywgVFJVRSwgJmVycik7Ci0gICAgaWYgKGVycikgewotICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2luaywgImVycm9yIGNyZWF0aW5nIGJpbiAnJXMnOiAlcyIsIG5ld19zdHJpbmcsCi0gICAgICAgICAgZXJyLT5tZXNzYWdlKTsKLSAgICAgIGdfZXJyb3JfZnJlZSAoZXJyKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgbmV3X2tpZCA9IE5VTEw7Ci0gIH0KLQotICBpZiAobmV3X2tpZCA9PSBOVUxMKSB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKHNpbmssIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCi0gICAgICAgICgiRmFpbGVkIHRvIHJlbmRlciBhdWRpbyBzaW5rIGZyb20gR1NldHRpbmdzIikpOwotICAgIGdvdG8gZmFpbDsKLSAgfQotCi0gIGlmICghZ3N0X3N3aXRjaF9zaW5rX3NldF9jaGlsZCAoR1NUX1NXSVRDSF9TSU5LIChzaW5rKSwgbmV3X2tpZCkpIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNpbmssICJGYWlsZWQgdG8gdXBkYXRlIGNoaWxkIGVsZW1lbnQiKTsKLSAgICBnb3RvIGZhaWw7Ci0gIH0KLQotICBnX2ZyZWUgKHNpbmstPmdzZXR0aW5nc19zdHIpOwotICBzaW5rLT5nc2V0dGluZ3Nfc3RyID0gbmV3X3N0cmluZzsKLQotICByZXR1cm4gVFJVRTsKLQotZmFpbDoKLSAgZ19mcmVlIChuZXdfc3RyaW5nKTsKLSAgcmV0dXJuIEZBTFNFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19zd2l0Y2hfcHJvZmlsZSAoR3N0R1NldHRpbmdzQXVkaW9TaW5rICogc2luaywKLSAgICBHc3RHU2V0dGluZ3NBdWRpb1NpbmtQcm9maWxlIHByb2ZpbGUpCi17Ci0gIGlmIChzaW5rLT5zZXR0aW5ncyA9PSBOVUxMKQotICAgIHJldHVybiBUUlVFOwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc2luayk7Ci0gIHNpbmstPnByb2ZpbGUgPSBwcm9maWxlOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoc2luayk7Ci0KLSAgcmV0dXJuIGdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19jaGFuZ2VfY2hpbGQgKHNpbmspOwotfQotCi1zdGF0aWMgdm9pZAotb25fY2hhbmdlZCAoR1NldHRpbmdzICogc2V0dGluZ3MsIGdjaGFyICoga2V5LCBHc3RHU2V0dGluZ3NBdWRpb1NpbmsgKiBzaW5rKQotewotICBnYm9vbGVhbiBjaGFuZ2VkID0gRkFMU0U7Ci0KLSAgaWYgKCFnX3N0cl9oYXNfc3VmZml4IChrZXksICJhdWRpb3NpbmsiKSkKLSAgICByZXR1cm47Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChzaW5rKTsKLSAgaWYgKChzaW5rLT5wcm9maWxlID09IEdTVF9HU0VUVElOR1NfQVVESU9TSU5LX1BST0ZJTEVfU09VTkRTICYmCi0gICAgICAgICAgZ19zdHJfZXF1YWwgKGtleSwgR1NUX0dTRVRUSU5HU19LRVlfU09VTkRTX0FVRElPU0lOSykpIHx8Ci0gICAgICAoc2luay0+cHJvZmlsZSA9PSBHU1RfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFX01VU0lDICYmCi0gICAgICAgICAgZ19zdHJfZXF1YWwgKGtleSwgR1NUX0dTRVRUSU5HU19LRVlfTVVTSUNfQVVESU9TSU5LKSkgfHwKLSAgICAgIChzaW5rLT5wcm9maWxlID09IEdTVF9HU0VUVElOR1NfQVVESU9TSU5LX1BST0ZJTEVfQ0hBVCAmJgotICAgICAgICAgIGdfc3RyX2VxdWFsIChrZXksIEdTVF9HU0VUVElOR1NfS0VZX0NIQVRfQVVESU9TSU5LKSkpCi0gICAgY2hhbmdlZCA9IFRSVUU7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzaW5rKTsKLQotICBpZiAoY2hhbmdlZCkKLSAgICBnc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfY2hhbmdlX2NoaWxkIChzaW5rKTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3Npbmtfc3RhcnQgKEdzdEdTZXR0aW5nc0F1ZGlvU2luayAqIHNpbmspCi17Ci0gIEdFcnJvciAqZXJyID0gTlVMTDsKLSAgR1RocmVhZCAqdGhyZWFkOwotCi0gIHNpbmstPmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKHNpbmstPmNvbnRleHQsIEZBTFNFKTsKLQotICB0aHJlYWQgPQotICAgICAgZ190aHJlYWRfY3JlYXRlICgoR1RocmVhZEZ1bmMpIGdfbWFpbl9sb29wX3J1biwgc2luay0+bG9vcCwgRkFMU0UsICZlcnIpOwotICBpZiAoIXRocmVhZCkgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzaW5rLCBDT1JFLCBTVEFURV9DSEFOR0UsIChOVUxMKSwKLSAgICAgICAgKCJGYWlsZWQgdG8gY3JlYXRlIG5ldyB0aHJlYWQ6ICVzIiwgZXJyLT5tZXNzYWdlKSk7Ci0gICAgZ19lcnJvcl9mcmVlIChlcnIpOwotICAgIGdfbWFpbl9sb29wX3VucmVmIChzaW5rLT5sb29wKTsKLSAgICBzaW5rLT5sb29wID0gTlVMTDsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBnX21haW5fY29udGV4dF9wdXNoX3RocmVhZF9kZWZhdWx0IChzaW5rLT5jb250ZXh0KTsKLSAgc2luay0+c2V0dGluZ3MgPSBnX3NldHRpbmdzX25ldyAoR1NUX0dTRVRUSU5HU19TQ0hFTUEpOwotICBzaW5rLT5jaGFuZ2VkX2lkID0KLSAgICAgIGdfc2lnbmFsX2Nvbm5lY3RfZGF0YSAoR19PQkpFQ1QgKHNpbmstPnNldHRpbmdzKSwgImNoYW5nZWQiLAotICAgICAgR19DQUxMQkFDSyAob25fY2hhbmdlZCksIGdzdF9vYmplY3RfcmVmIChzaW5rKSwKLSAgICAgIChHQ2xvc3VyZU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZiwgMCk7Ci0gIGdfbWFpbl9jb250ZXh0X3BvcF90aHJlYWRfZGVmYXVsdCAoc2luay0+Y29udGV4dCk7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX3Jlc2V0IChHc3RHU2V0dGluZ3NBdWRpb1NpbmsgKiBzaW5rKQotewotICBnc3Rfc3dpdGNoX3Npbmtfc2V0X2NoaWxkIChHU1RfU1dJVENIX1NJTksgKHNpbmspLCBOVUxMKTsKLQotICBpZiAoc2luay0+Y2hhbmdlZF9pZCkgewotICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCAoc2luay0+c2V0dGluZ3MsIHNpbmstPmNoYW5nZWRfaWQpOwotICAgIHNpbmstPmNoYW5nZWRfaWQgPSAwOwotICB9Ci0KLSAgaWYgKHNpbmstPmxvb3ApIHsKLSAgICBnX21haW5fbG9vcF9xdWl0IChzaW5rLT5sb29wKTsKLSAgICBnX21haW5fbG9vcF91bnJlZiAoc2luay0+bG9vcCk7Ci0gICAgc2luay0+bG9vcCA9IE5VTEw7Ci0gIH0KLQotICBpZiAoc2luay0+c2V0dGluZ3MpIHsKLSAgICBnX29iamVjdF91bnJlZiAoc2luay0+c2V0dGluZ3MpOwotICAgIHNpbmstPnNldHRpbmdzID0gTlVMTDsKLSAgfQotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc2luayk7Ci0gIGdfZnJlZSAoc2luay0+Z3NldHRpbmdzX3N0cik7Ci0gIHNpbmstPmdzZXR0aW5nc19zdHIgPSBOVUxMOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoc2luayk7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCi17Ci0gIEdzdEdTZXR0aW5nc0F1ZGlvU2luayAqc2luayA9IEdTVF9HU0VUVElOR1NfQVVESU9fU0lOSyAob2JqZWN0KTsKLQotICBnX2ZyZWUgKHNpbmstPmdzZXR0aW5nc19zdHIpOwotICBnX21haW5fY29udGV4dF91bnJlZiAoc2luay0+Y29udGV4dCk7Ci0KLSAgR1NUX0NBTExfUEFSRU5UIChHX09CSkVDVF9DTEFTUywgZmluYWxpemUsICgoR09iamVjdCAqKSAoc2luaykpKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0gICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLXsKLSAgR3N0R1NldHRpbmdzQXVkaW9TaW5rICpzaW5rID0gR1NUX0dTRVRUSU5HU19BVURJT19TSU5LIChvYmplY3QpOwotCi0gIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9QUk9GSUxFOgotICAgICAgZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX3N3aXRjaF9wcm9maWxlIChzaW5rLCBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSkpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIEdzdEdTZXR0aW5nc0F1ZGlvU2luayAqc2luayA9IEdTVF9HU0VUVElOR1NfQVVESU9fU0lOSyAob2JqZWN0KTsKLQotICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfUFJPRklMRToKLSAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCBzaW5rLT5wcm9maWxlKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKLSAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQotewotICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1M7Ci0gIEdzdEdTZXR0aW5nc0F1ZGlvU2luayAqc2luayA9IEdTVF9HU0VUVElOR1NfQVVESU9fU0lOSyAoZWxlbWVudCk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05VTExfVE9fUkVBRFk6Ci0gICAgICBpZiAoIWdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19zdGFydCAoc2luaykpCi0gICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7Ci0KLSAgICAgIGlmICghZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX2NoYW5nZV9jaGlsZCAoc2luaykpIHsKLSAgICAgICAgZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX3Jlc2V0IChzaW5rKTsKLSAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldCA9IEdTVF9DQUxMX1BBUkVOVF9XSVRIX0RFRkFVTFQgKEdTVF9FTEVNRU5UX0NMQVNTLCBjaGFuZ2Vfc3RhdGUsCi0gICAgICAoZWxlbWVudCwgdHJhbnNpdGlvbiksIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEw6Ci0gICAgICBnc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfcmVzZXQgKHNpbmspOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19pbml0IChHc3RHU2V0dGluZ3NBdWRpb1NpbmsgKiBzaW5rLAotICAgIEdzdEdTZXR0aW5nc0F1ZGlvU2lua0NsYXNzICogZ19jbGFzcykKLXsKLSAgc2luay0+Y29udGV4dCA9IGdfbWFpbl9jb250ZXh0X25ldyAoKTsKLSAgZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX3Jlc2V0IChzaW5rKTsKLQotICBzaW5rLT5wcm9maWxlID0gR1NUX0dTRVRUSU5HU19BVURJT1NJTktfUFJPRklMRV9NVVNJQzsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19iYXNlX2luaXQgKGdwb2ludGVyIGtsYXNzKQotewotICBHc3RFbGVtZW50Q2xhc3MgKmVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZWtsYXNzLCAiR1NldHRpbmdzIGF1ZGlvIHNpbmsiLAotICAgICAgIlNpbmsvQXVkaW8iLAotICAgICAgIkF1ZGlvIHNpbmsgZW1iZWRkaW5nIHRoZSBHU2V0dGluZ3MgcHJlZmVyZW5jZXMgZm9yIGF1ZGlvIG91dHB1dCIsCi0gICAgICAiU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Iik7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfY2xhc3NfaW5pdCAoR3N0R1NldHRpbmdzQXVkaW9TaW5rQ2xhc3MgKiBrbGFzcykKLXsKLSAgR09iamVjdENsYXNzICpva2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOwotICBHc3RFbGVtZW50Q2xhc3MgKmVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0KLSAgb2tsYXNzLT5maW5hbGl6ZSA9IGdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19maW5hbGl6ZTsKLSAgb2tsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfZ3NldHRpbmdzX2F1ZGlvX3Npbmtfc2V0X3Byb3BlcnR5OwotICBva2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19nZXRfcHJvcGVydHk7Ci0KLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAob2tsYXNzLCBQUk9QX1BST0ZJTEUsCi0gICAgICBnX3BhcmFtX3NwZWNfZW51bSAoInByb2ZpbGUiLCAiUHJvZmlsZSIsICJQcm9maWxlIiwKLSAgICAgICAgICBHU1RfVFlQRV9HU0VUVElOR1NfQVVESU9TSU5LX1BST0ZJTEUsCi0gICAgICAgICAgR1NUX0dTRVRUSU5HU19BVURJT1NJTktfUFJPRklMRV9TT1VORFMsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0KLSAgZWtsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBnc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfY2hhbmdlX3N0YXRlOwotfQpkaWZmIC0tZ2l0IGEvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3NhdWRpb3NpbmsuaCBiL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMTUxOTAuLjAwMDAwMDAKLS0tIGEvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3NhdWRpb3NpbmsuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDEwIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgX19HU1RfR1NFVFRJTkdTX0FVRElPX1NJTktfSF9fCi0jZGVmaW5lIF9fR1NUX0dTRVRUSU5HU19BVURJT19TSU5LX0hfXwotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdpby9naW8uaD4KLSNpbmNsdWRlICJnc3Rzd2l0Y2hzaW5rLmgiCi0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBHU1RfVFlQRV9HU0VUVElOR1NfQVVESU9fU0lOSyBcCi0gIChnc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfZ2V0X3R5cGUgKCkpCi0jZGVmaW5lIEdTVF9HU0VUVElOR1NfQVVESU9fU0lOSyhvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfR1NFVFRJTkdTX0FVRElPX1NJTkssIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHU2V0dGluZ3NBdWRpb1NpbmspKQotI2RlZmluZSBHU1RfR1NFVFRJTkdTX0FVRElPX1NJTktfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9HU0VUVElOR1NfQVVESU9fU0lOSywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdTZXR0aW5nc0F1ZGlvU2lua0NsYXNzKSkKLSNkZWZpbmUgR1NUX0lTX0dTRVRUSU5HU19BVURJT19TSU5LKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9HU0VUVElOR1NfQVVESU9fU0lOSykpCi0jZGVmaW5lIEdTVF9JU19HU0VUVElOR1NfQVVESU9fU0lOS19DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEdTVF9UWVBFX0dTRVRUSU5HU19BVURJT19TSU5LKSkKLQotdHlwZWRlZiBlbnVtCi17Ci0gIEdTVF9HU0VUVElOR1NfQVVESU9TSU5LX1BST0ZJTEVfU09VTkRTLAotICBHU1RfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFX01VU0lDLAotICBHU1RfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFX0NIQVQsCi0gIEdTVF9HU0VUVElOR1NfQVVESU9TSU5LX1BST0ZJTEVfTk9ORSAvKiBJbnRlcm5hbCB2YWx1ZSBvbmx5ICovCi19IEdzdEdTZXR0aW5nc0F1ZGlvU2lua1Byb2ZpbGU7Ci0KLXR5cGVkZWYgc3RydWN0IF9Hc3RHU2V0dGluZ3NBdWRpb1NpbmsgewotICBHc3RTd2l0Y2hTaW5rIHBhcmVudDsKLQotICBHU2V0dGluZ3MgKnNldHRpbmdzOwotCi0gIEdNYWluQ29udGV4dCAqY29udGV4dDsKLSAgR01haW5Mb29wICpsb29wOwotICBndWxvbmcgY2hhbmdlZF9pZDsKLQotICBHc3RHU2V0dGluZ3NBdWRpb1NpbmtQcm9maWxlIHByb2ZpbGU7Ci0gIGdjaGFyICpnc2V0dGluZ3Nfc3RyOwotfSBHc3RHU2V0dGluZ3NBdWRpb1Npbms7Ci0KLXR5cGVkZWYgc3RydWN0IF9Hc3RHU2V0dGluZ3NBdWRpb1NpbmtDbGFzcyB7Ci0gIEdzdFN3aXRjaFNpbmtDbGFzcyBwYXJlbnRfY2xhc3M7Ci19IEdzdEdTZXR0aW5nc0F1ZGlvU2lua0NsYXNzOwotCi1HVHlwZSAgIGdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19nZXRfdHlwZSAgICh2b2lkKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIF9fR1NUX0dTRVRUSU5HU19BVURJT19TSU5LX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3NhdWRpb3NyYy5jIGIvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3NhdWRpb3NyYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2Q3Yzc5Li4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zcmMuYworKysgL2Rldi9udWxsCkBAIC0xLDI0NiArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxMCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotLyoqCi0gKiBTRUNUSU9OOmVsZW1lbnQtZ3NldHRpbmdzYXVkaW9zcmMKLSAqCi0gKiBUaGlzIGVsZW1lbnQgb3V0cHV0cyBzb3VuZCB0byB0aGUgYXVkaW9zcmMgdGhhdCBoYXMgYmVlbiBjb25maWd1cmVkIGluCi0gKiBHU2V0dGluZ3MgYnkgdGhlIHVzZXIuCi0gKiAKLSAqIDxyZWZzZWN0Mj4KLSAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KLSAqIHxbCi0gKiBnc3QtbGF1bmNoIGdzZXR0aW5nc2F1ZGlvc3JjICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGF1dG9hdWRpb3NpbmsKLSAqIF18IFBsYXkgZnJvbSBjb25maWd1cmVkIGF1ZGlvc3JjCi0gKiA8L3JlZnNlY3QyPgotICovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvZ2xpYi1jb21wYXQtcHJpdmF0ZS5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSAiZ3N0Z3NldHRpbmdzYXVkaW9zcmMuaCIKLSNpbmNsdWRlICJnc3Rnc2V0dGluZ3MuaCIKLQotR1NUX0JPSUxFUlBMQVRFIChHc3RHU2V0dGluZ3NBdWRpb1NyYywgZ3N0X2dzZXR0aW5nc19hdWRpb19zcmMsIEdzdFN3aXRjaFNyYywKLSAgICBHU1RfVFlQRV9TV0lUQ0hfU1JDKTsKLQotc3RhdGljIGdib29sZWFuCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3NyY19jaGFuZ2VfY2hpbGQgKEdzdEdTZXR0aW5nc0F1ZGlvU3JjICogc3JjKQotewotICBnY2hhciAqbmV3X3N0cmluZzsKLSAgR0Vycm9yICplcnIgPSBOVUxMOwotICBHc3RFbGVtZW50ICpuZXdfa2lkOwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKLSAgbmV3X3N0cmluZyA9Ci0gICAgICBnX3NldHRpbmdzX2dldF9zdHJpbmcgKHNyYy0+c2V0dGluZ3MsIEdTVF9HU0VUVElOR1NfS0VZX0FVRElPU1JDKTsKLQotICBpZiAobmV3X3N0cmluZyAhPSBOVUxMICYmIHNyYy0+Z3NldHRpbmdzX3N0ciAhPSBOVUxMICYmCi0gICAgICAoc3RybGVuIChuZXdfc3RyaW5nKSA9PSAwIHx8Ci0gICAgICAgICAgc3RyY21wIChzcmMtPmdzZXR0aW5nc19zdHIsIG5ld19zdHJpbmcpID09IDApKSB7Ci0gICAgZ19mcmVlIChuZXdfc3RyaW5nKTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzcmMsCi0gICAgICAgICJHU2V0dGluZ3Mga2V5IHdhcyB1cGRhdGVkLCBidXQgaXQgZGlkbid0IGNoYW5nZS4gSWdub3JpbmciKTsKLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKLSAgICByZXR1cm4gVFJVRTsKLSAgfQotICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKLQotICBHU1RfREVCVUdfT0JKRUNUIChzcmMsICJHU2V0dGluZ3Mga2V5IGNoYW5nZWQgZnJvbSAnJXMnIHRvICclcyciLAotICAgICAgR1NUX1NUUl9OVUxMIChzcmMtPmdzZXR0aW5nc19zdHIpLCBHU1RfU1RSX05VTEwgKG5ld19zdHJpbmcpKTsKLQotICBpZiAobmV3X3N0cmluZykgewotICAgIG5ld19raWQgPSBnc3RfcGFyc2VfYmluX2Zyb21fZGVzY3JpcHRpb24gKG5ld19zdHJpbmcsIFRSVUUsICZlcnIpOwotICAgIGlmIChlcnIpIHsKLSAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNyYywgImVycm9yIGNyZWF0aW5nIGJpbiAnJXMnOiAlcyIsIG5ld19zdHJpbmcsCi0gICAgICAgICAgZXJyLT5tZXNzYWdlKTsKLSAgICAgIGdfZXJyb3JfZnJlZSAoZXJyKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgbmV3X2tpZCA9IE5VTEw7Ci0gIH0KLQotICBpZiAobmV3X2tpZCA9PSBOVUxMKSB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKHNyYywgTElCUkFSWSwgU0VUVElOR1MsIChOVUxMKSwKLSAgICAgICAgKCJGYWlsZWQgdG8gcmVuZGVyIGF1ZGlvIHNyYyBmcm9tIEdTZXR0aW5ncyIpKTsKLSAgICBnb3RvIGZhaWw7Ci0gIH0KLQotICBpZiAoIWdzdF9zd2l0Y2hfc3JjX3NldF9jaGlsZCAoR1NUX1NXSVRDSF9TUkMgKHNyYyksIG5ld19raWQpKSB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzcmMsICJGYWlsZWQgdG8gdXBkYXRlIGNoaWxkIGVsZW1lbnQiKTsKLSAgICBnb3RvIGZhaWw7Ci0gIH0KLQotICBnX2ZyZWUgKHNyYy0+Z3NldHRpbmdzX3N0cik7Ci0gIHNyYy0+Z3NldHRpbmdzX3N0ciA9IG5ld19zdHJpbmc7Ci0KLSAgcmV0dXJuIFRSVUU7Ci0KLWZhaWw6Ci0gIGdfZnJlZSAobmV3X3N0cmluZyk7Ci0gIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIHZvaWQKLW9uX2NoYW5nZWQgKEdTZXR0aW5ncyAqIHNldHRpbmdzLCBnY2hhciAqIGtleSwgR3N0R1NldHRpbmdzQXVkaW9TcmMgKiBzcmMpCi17Ci0gIGlmICghZ19zdHJfZXF1YWwgKGtleSwgImF1ZGlvc3JjIikpCi0gICAgcmV0dXJuOwotCi0gIGdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjX2NoYW5nZV9jaGlsZCAoc3JjKTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3NyY19zdGFydCAoR3N0R1NldHRpbmdzQXVkaW9TcmMgKiBzcmMpCi17Ci0gIEdFcnJvciAqZXJyID0gTlVMTDsKLSAgR1RocmVhZCAqdGhyZWFkOwotCi0gIHNyYy0+bG9vcCA9IGdfbWFpbl9sb29wX25ldyAoc3JjLT5jb250ZXh0LCBGQUxTRSk7Ci0KLSAgdGhyZWFkID0KLSAgICAgIGdfdGhyZWFkX2NyZWF0ZSAoKEdUaHJlYWRGdW5jKSBnX21haW5fbG9vcF9ydW4sIHNyYy0+bG9vcCwgRkFMU0UsICZlcnIpOwotICBpZiAoIXRocmVhZCkgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIENPUkUsIFNUQVRFX0NIQU5HRSwgKE5VTEwpLAotICAgICAgICAoIkZhaWxlZCB0byBjcmVhdGUgbmV3IHRocmVhZDogJXMiLCBlcnItPm1lc3NhZ2UpKTsKLSAgICBnX2Vycm9yX2ZyZWUgKGVycik7Ci0gICAgZ19tYWluX2xvb3BfdW5yZWYgKHNyYy0+bG9vcCk7Ci0gICAgc3JjLT5sb29wID0gTlVMTDsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBnX21haW5fY29udGV4dF9wdXNoX3RocmVhZF9kZWZhdWx0IChzcmMtPmNvbnRleHQpOwotICBzcmMtPnNldHRpbmdzID0gZ19zZXR0aW5nc19uZXcgKEdTVF9HU0VUVElOR1NfU0NIRU1BKTsKLSAgc3JjLT5jaGFuZ2VkX2lkID0KLSAgICAgIGdfc2lnbmFsX2Nvbm5lY3RfZGF0YSAoR19PQkpFQ1QgKHNyYy0+c2V0dGluZ3MpLCAiY2hhbmdlZCIsCi0gICAgICBHX0NBTExCQUNLIChvbl9jaGFuZ2VkKSwgZ3N0X29iamVjdF9yZWYgKHNyYyksCi0gICAgICAoR0Nsb3N1cmVOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYsIDApOwotICBnX21haW5fY29udGV4dF9wb3BfdGhyZWFkX2RlZmF1bHQgKHNyYy0+Y29udGV4dCk7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dzZXR0aW5nc19hdWRpb19zcmNfcmVzZXQgKEdzdEdTZXR0aW5nc0F1ZGlvU3JjICogc3JjKQotewotICBnc3Rfc3dpdGNoX3NyY19zZXRfY2hpbGQgKEdTVF9TV0lUQ0hfU1JDIChzcmMpLCBOVUxMKTsKLQotICBpZiAoc3JjLT5jaGFuZ2VkX2lkKSB7Ci0gICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0IChzcmMtPnNldHRpbmdzLCBzcmMtPmNoYW5nZWRfaWQpOwotICAgIHNyYy0+Y2hhbmdlZF9pZCA9IDA7Ci0gIH0KLQotICBpZiAoc3JjLT5sb29wKSB7Ci0gICAgZ19tYWluX2xvb3BfcXVpdCAoc3JjLT5sb29wKTsKLSAgICBnX21haW5fbG9vcF91bnJlZiAoc3JjLT5sb29wKTsKLSAgICBzcmMtPmxvb3AgPSBOVUxMOwotICB9Ci0KLSAgaWYgKHNyYy0+c2V0dGluZ3MpIHsKLSAgICBnX29iamVjdF91bnJlZiAoc3JjLT5zZXR0aW5ncyk7Ci0gICAgc3JjLT5zZXR0aW5ncyA9IE5VTEw7Ci0gIH0KLQotICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7Ci0gIGdfZnJlZSAoc3JjLT5nc2V0dGluZ3Nfc3RyKTsKLSAgc3JjLT5nc2V0dGluZ3Nfc3RyID0gTlVMTDsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3NyY19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKLXsKLSAgR3N0R1NldHRpbmdzQXVkaW9TcmMgKnNyYyA9IEdTVF9HU0VUVElOR1NfQVVESU9fU1JDIChvYmplY3QpOwotCi0gIGdfZnJlZSAoc3JjLT5nc2V0dGluZ3Nfc3RyKTsKLSAgZ19tYWluX2NvbnRleHRfdW5yZWYgKHNyYy0+Y29udGV4dCk7Ci0KLSAgR1NUX0NBTExfUEFSRU5UIChHX09CSkVDVF9DTEFTUywgZmluYWxpemUsICgoR09iamVjdCAqKSAoc3JjKSkpOwotfQotCi1zdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KLWdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCi0gICAgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKLXsKLSAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0ID0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTOwotICBHc3RHU2V0dGluZ3NBdWRpb1NyYyAqc3JjID0gR1NUX0dTRVRUSU5HU19BVURJT19TUkMgKGVsZW1lbnQpOwotCi0gIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9OVUxMX1RPX1JFQURZOgotICAgICAgaWYgKCFnc3RfZ3NldHRpbmdzX2F1ZGlvX3NyY19zdGFydCAoc3JjKSkKLSAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKLQotICAgICAgaWYgKCFnc3RfZ3NldHRpbmdzX2F1ZGlvX3NyY19jaGFuZ2VfY2hpbGQgKHNyYykpIHsKLSAgICAgICAgZ3N0X2dzZXR0aW5nc19hdWRpb19zcmNfcmVzZXQgKHNyYyk7Ci0gICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXQgPSBHU1RfQ0FMTF9QQVJFTlRfV0lUSF9ERUZBVUxUIChHU1RfRUxFTUVOVF9DTEFTUywgY2hhbmdlX3N0YXRlLAotICAgICAgKGVsZW1lbnQsIHRyYW5zaXRpb24pLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOwotCi0gIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgotICAgICAgZ3N0X2dzZXR0aW5nc19hdWRpb19zcmNfcmVzZXQgKHNyYyk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dzZXR0aW5nc19hdWRpb19zcmNfaW5pdCAoR3N0R1NldHRpbmdzQXVkaW9TcmMgKiBzcmMsCi0gICAgR3N0R1NldHRpbmdzQXVkaW9TcmNDbGFzcyAqIGdfY2xhc3MpCi17Ci0gIHNyYy0+Y29udGV4dCA9IGdfbWFpbl9jb250ZXh0X25ldyAoKTsKLSAgZ3N0X2dzZXR0aW5nc19hdWRpb19zcmNfcmVzZXQgKHNyYyk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3NyY19iYXNlX2luaXQgKGdwb2ludGVyIGtsYXNzKQotewotICBHc3RFbGVtZW50Q2xhc3MgKmVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZWtsYXNzLCAiR1NldHRpbmdzIGF1ZGlvIHNyYyIsCi0gICAgICAiU3JjL0F1ZGlvIiwKLSAgICAgICJBdWRpbyBzcmMgZW1iZWRkaW5nIHRoZSBHU2V0dGluZ3MgcHJlZmVyZW5jZXMgZm9yIGF1ZGlvIGlucHV0IiwKLSAgICAgICJTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4iKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjX2NsYXNzX2luaXQgKEdzdEdTZXR0aW5nc0F1ZGlvU3JjQ2xhc3MgKiBrbGFzcykKLXsKLSAgR09iamVjdENsYXNzICpva2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOwotICBHc3RFbGVtZW50Q2xhc3MgKmVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0KLSAgb2tsYXNzLT5maW5hbGl6ZSA9IGdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjX2ZpbmFsaXplOwotCi0gIGVrbGFzcy0+Y2hhbmdlX3N0YXRlID0gZ3N0X2dzZXR0aW5nc19hdWRpb19zcmNfY2hhbmdlX3N0YXRlOwotfQpkaWZmIC0tZ2l0IGEvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3NhdWRpb3NyYy5oIGIvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3NhdWRpb3NyYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWMzZmMzLi4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zcmMuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDEwIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgX19HU1RfR1NFVFRJTkdTX0FVRElPX1NSQ19IX18KLSNkZWZpbmUgX19HU1RfR1NFVFRJTkdTX0FVRElPX1NSQ19IX18KLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSAiZ3N0c3dpdGNoc3JjLmgiCi0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBHU1RfVFlQRV9HU0VUVElOR1NfQVVESU9fU1JDIFwKLSAgKGdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjX2dldF90eXBlICgpKQotI2RlZmluZSBHU1RfR1NFVFRJTkdTX0FVRElPX1NSQyhvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfR1NFVFRJTkdTX0FVRElPX1NSQywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdTZXR0aW5nc0F1ZGlvU3JjKSkKLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19BVURJT19TUkNfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9HU0VUVElOR1NfQVVESU9fU1JDLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R1NldHRpbmdzQXVkaW9TcmNDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19HU0VUVElOR1NfQVVESU9fU1JDKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9HU0VUVElOR1NfQVVESU9fU1JDKSkKLSNkZWZpbmUgR1NUX0lTX0dTRVRUSU5HU19BVURJT19TUkNfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9HU0VUVElOR1NfQVVESU9fU1JDKSkKLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdTZXR0aW5nc0F1ZGlvU3JjIHsKLSAgR3N0U3dpdGNoU3JjIHBhcmVudDsKLQotICBHU2V0dGluZ3MgKnNldHRpbmdzOwotCi0gIEdNYWluQ29udGV4dCAqY29udGV4dDsKLSAgR01haW5Mb29wICpsb29wOwotICBndWxvbmcgY2hhbmdlZF9pZDsKLQotICBnY2hhciAqZ3NldHRpbmdzX3N0cjsKLX0gR3N0R1NldHRpbmdzQXVkaW9TcmM7Ci0KLXR5cGVkZWYgc3RydWN0IF9Hc3RHU2V0dGluZ3NBdWRpb1NyY0NsYXNzIHsKLSAgR3N0U3dpdGNoU3JjQ2xhc3MgcGFyZW50X2NsYXNzOwotfSBHc3RHU2V0dGluZ3NBdWRpb1NyY0NsYXNzOwotCi1HVHlwZSAgIGdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjX2dldF90eXBlICAgKHZvaWQpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogX19HU1RfR1NFVFRJTkdTX0FVRElPX1NSQ19IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmMgYi9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc2luay5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2EwYTI1Li4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLS8qKgotICogU0VDVElPTjplbGVtZW50LWdzZXR0aW5nc3ZpZGVvc2luawotICoKLSAqIFRoaXMgZWxlbWVudCBvdXRwdXRzIHNvdW5kIHRvIHRoZSB2aWRlb3NpbmsgdGhhdCBoYXMgYmVlbiBjb25maWd1cmVkIGluCi0gKiBHU2V0dGluZ3MgYnkgdGhlIHVzZXIuCi0gKiAKLSAqIDxyZWZzZWN0Mj4KLSAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KLSAqIHxbCi0gKiBnc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyAhIHZpZGVvY29udmVydCAhIHZpZGVvc2NhbGUgISBnc2V0dGluZ3N2aWRlb3NpbmsKLSAqIF18IFBsYXkgb24gY29uZmlndXJlZCB2aWRlb3NpbmsKLSAqIDwvcmVmc2VjdDI+Ci0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlIDxjb25maWcuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC9nbGliLWNvbXBhdC1wcml2YXRlLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlICJnc3Rnc2V0dGluZ3N2aWRlb3NpbmsuaCIKLSNpbmNsdWRlICJnc3Rnc2V0dGluZ3MuaCIKLQotR1NUX0JPSUxFUlBMQVRFIChHc3RHU2V0dGluZ3NWaWRlb1NpbmssIGdzdF9nc2V0dGluZ3NfdmlkZW9fc2luaywgR3N0U3dpdGNoU2luaywKLSAgICBHU1RfVFlQRV9TV0lUQ0hfU0lOSyk7Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX2NoYW5nZV9jaGlsZCAoR3N0R1NldHRpbmdzVmlkZW9TaW5rICogc2luaykKLXsKLSAgZ2NoYXIgKm5ld19zdHJpbmc7Ci0gIEdFcnJvciAqZXJyID0gTlVMTDsKLSAgR3N0RWxlbWVudCAqbmV3X2tpZDsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKHNpbmspOwotICBuZXdfc3RyaW5nID0KLSAgICAgIGdfc2V0dGluZ3NfZ2V0X3N0cmluZyAoc2luay0+c2V0dGluZ3MsIEdTVF9HU0VUVElOR1NfS0VZX1ZJREVPU0lOSyk7Ci0KLSAgaWYgKG5ld19zdHJpbmcgIT0gTlVMTCAmJiBzaW5rLT5nc2V0dGluZ3Nfc3RyICE9IE5VTEwgJiYKLSAgICAgIChzdHJsZW4gKG5ld19zdHJpbmcpID09IDAgfHwKLSAgICAgICAgICBzdHJjbXAgKHNpbmstPmdzZXR0aW5nc19zdHIsIG5ld19zdHJpbmcpID09IDApKSB7Ci0gICAgZ19mcmVlIChuZXdfc3RyaW5nKTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLAotICAgICAgICAiR1NldHRpbmdzIGtleSB3YXMgdXBkYXRlZCwgYnV0IGl0IGRpZG4ndCBjaGFuZ2UuIElnbm9yaW5nIik7Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNpbmspOwotICAgIHJldHVybiBUUlVFOwotICB9Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzaW5rKTsKLQotICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiR1NldHRpbmdzIGtleSBjaGFuZ2VkIGZyb20gJyVzJyB0byAnJXMnIiwKLSAgICAgIEdTVF9TVFJfTlVMTCAoc2luay0+Z3NldHRpbmdzX3N0ciksIEdTVF9TVFJfTlVMTCAobmV3X3N0cmluZykpOwotCi0gIGlmIChuZXdfc3RyaW5nKSB7Ci0gICAgbmV3X2tpZCA9IGdzdF9wYXJzZV9iaW5fZnJvbV9kZXNjcmlwdGlvbiAobmV3X3N0cmluZywgVFJVRSwgJmVycik7Ci0gICAgaWYgKGVycikgewotICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2luaywgImVycm9yIGNyZWF0aW5nIGJpbiAnJXMnOiAlcyIsIG5ld19zdHJpbmcsCi0gICAgICAgICAgZXJyLT5tZXNzYWdlKTsKLSAgICAgIGdfZXJyb3JfZnJlZSAoZXJyKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgbmV3X2tpZCA9IE5VTEw7Ci0gIH0KLQotICBpZiAobmV3X2tpZCA9PSBOVUxMKSB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKHNpbmssIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCi0gICAgICAgICgiRmFpbGVkIHRvIHJlbmRlciB2aWRlbyBzaW5rIGZyb20gR1NldHRpbmdzIikpOwotICAgIGdvdG8gZmFpbDsKLSAgfQotCi0gIGlmICghZ3N0X3N3aXRjaF9zaW5rX3NldF9jaGlsZCAoR1NUX1NXSVRDSF9TSU5LIChzaW5rKSwgbmV3X2tpZCkpIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNpbmssICJGYWlsZWQgdG8gdXBkYXRlIGNoaWxkIGVsZW1lbnQiKTsKLSAgICBnb3RvIGZhaWw7Ci0gIH0KLQotICBnX2ZyZWUgKHNpbmstPmdzZXR0aW5nc19zdHIpOwotICBzaW5rLT5nc2V0dGluZ3Nfc3RyID0gbmV3X3N0cmluZzsKLQotICByZXR1cm4gVFJVRTsKLQotZmFpbDoKLSAgZ19mcmVlIChuZXdfc3RyaW5nKTsKLSAgcmV0dXJuIEZBTFNFOwotfQotCi1zdGF0aWMgdm9pZAotb25fY2hhbmdlZCAoR1NldHRpbmdzICogc2V0dGluZ3MsIGdjaGFyICoga2V5LCBHc3RHU2V0dGluZ3NWaWRlb1NpbmsgKiBzaW5rKQotewotICBpZiAoIWdfc3RyX2hhc19zdWZmaXggKGtleSwgInZpZGVvc2luayIpKQotICAgIHJldHVybjsKLQotICBnc3RfZ3NldHRpbmdzX3ZpZGVvX3NpbmtfY2hhbmdlX2NoaWxkIChzaW5rKTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfZ3NldHRpbmdzX3ZpZGVvX3Npbmtfc3RhcnQgKEdzdEdTZXR0aW5nc1ZpZGVvU2luayAqIHNpbmspCi17Ci0gIEdFcnJvciAqZXJyID0gTlVMTDsKLSAgR1RocmVhZCAqdGhyZWFkOwotCi0gIHNpbmstPmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKHNpbmstPmNvbnRleHQsIEZBTFNFKTsKLQotICB0aHJlYWQgPQotICAgICAgZ190aHJlYWRfY3JlYXRlICgoR1RocmVhZEZ1bmMpIGdfbWFpbl9sb29wX3J1biwgc2luay0+bG9vcCwgRkFMU0UsICZlcnIpOwotICBpZiAoIXRocmVhZCkgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzaW5rLCBDT1JFLCBTVEFURV9DSEFOR0UsIChOVUxMKSwKLSAgICAgICAgKCJGYWlsZWQgdG8gY3JlYXRlIG5ldyB0aHJlYWQ6ICVzIiwgZXJyLT5tZXNzYWdlKSk7Ci0gICAgZ19lcnJvcl9mcmVlIChlcnIpOwotICAgIGdfbWFpbl9sb29wX3VucmVmIChzaW5rLT5sb29wKTsKLSAgICBzaW5rLT5sb29wID0gTlVMTDsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBnX21haW5fY29udGV4dF9wdXNoX3RocmVhZF9kZWZhdWx0IChzaW5rLT5jb250ZXh0KTsKLSAgc2luay0+c2V0dGluZ3MgPSBnX3NldHRpbmdzX25ldyAoR1NUX0dTRVRUSU5HU19TQ0hFTUEpOwotICBzaW5rLT5jaGFuZ2VkX2lkID0KLSAgICAgIGdfc2lnbmFsX2Nvbm5lY3RfZGF0YSAoR19PQkpFQ1QgKHNpbmstPnNldHRpbmdzKSwgImNoYW5nZWQiLAotICAgICAgR19DQUxMQkFDSyAob25fY2hhbmdlZCksIGdzdF9vYmplY3RfcmVmIChzaW5rKSwKLSAgICAgIChHQ2xvc3VyZU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZiwgMCk7Ci0gIGdfbWFpbl9jb250ZXh0X3BvcF90aHJlYWRfZGVmYXVsdCAoc2luay0+Y29udGV4dCk7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX3Jlc2V0IChHc3RHU2V0dGluZ3NWaWRlb1NpbmsgKiBzaW5rKQotewotICBnc3Rfc3dpdGNoX3Npbmtfc2V0X2NoaWxkIChHU1RfU1dJVENIX1NJTksgKHNpbmspLCBOVUxMKTsKLQotICBpZiAoc2luay0+Y2hhbmdlZF9pZCkgewotICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCAoc2luay0+c2V0dGluZ3MsIHNpbmstPmNoYW5nZWRfaWQpOwotICAgIHNpbmstPmNoYW5nZWRfaWQgPSAwOwotICB9Ci0KLSAgaWYgKHNpbmstPmxvb3ApIHsKLSAgICBnX21haW5fbG9vcF9xdWl0IChzaW5rLT5sb29wKTsKLSAgICBnX21haW5fbG9vcF91bnJlZiAoc2luay0+bG9vcCk7Ci0gICAgc2luay0+bG9vcCA9IE5VTEw7Ci0gIH0KLQotICBpZiAoc2luay0+c2V0dGluZ3MpIHsKLSAgICBnX29iamVjdF91bnJlZiAoc2luay0+c2V0dGluZ3MpOwotICAgIHNpbmstPnNldHRpbmdzID0gTlVMTDsKLSAgfQotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc2luayk7Ci0gIGdfZnJlZSAoc2luay0+Z3NldHRpbmdzX3N0cik7Ci0gIHNpbmstPmdzZXR0aW5nc19zdHIgPSBOVUxMOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoc2luayk7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX3ZpZGVvX3NpbmtfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCi17Ci0gIEdzdEdTZXR0aW5nc1ZpZGVvU2luayAqc2luayA9IEdTVF9HU0VUVElOR1NfVklERU9fU0lOSyAob2JqZWN0KTsKLQotICBnX2ZyZWUgKHNpbmstPmdzZXR0aW5nc19zdHIpOwotICBnX21haW5fY29udGV4dF91bnJlZiAoc2luay0+Y29udGV4dCk7Ci0KLSAgR1NUX0NBTExfUEFSRU5UIChHX09CSkVDVF9DTEFTUywgZmluYWxpemUsICgoR09iamVjdCAqKSAoc2luaykpKTsKLX0KLQotc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi1nc3RfZ3NldHRpbmdzX3ZpZGVvX3NpbmtfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKLSAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQotewotICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1M7Ci0gIEdzdEdTZXR0aW5nc1ZpZGVvU2luayAqc2luayA9IEdTVF9HU0VUVElOR1NfVklERU9fU0lOSyAoZWxlbWVudCk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05VTExfVE9fUkVBRFk6Ci0gICAgICBpZiAoIWdzdF9nc2V0dGluZ3NfdmlkZW9fc2lua19zdGFydCAoc2luaykpCi0gICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7Ci0KLSAgICAgIGlmICghZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX2NoYW5nZV9jaGlsZCAoc2luaykpIHsKLSAgICAgICAgZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX3Jlc2V0IChzaW5rKTsKLSAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldCA9IEdTVF9DQUxMX1BBUkVOVF9XSVRIX0RFRkFVTFQgKEdTVF9FTEVNRU5UX0NMQVNTLCBjaGFuZ2Vfc3RhdGUsCi0gICAgICAoZWxlbWVudCwgdHJhbnNpdGlvbiksIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEw6Ci0gICAgICBnc3RfZ3NldHRpbmdzX3ZpZGVvX3NpbmtfcmVzZXQgKHNpbmspOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nc2V0dGluZ3NfdmlkZW9fc2lua19pbml0IChHc3RHU2V0dGluZ3NWaWRlb1NpbmsgKiBzaW5rLAotICAgIEdzdEdTZXR0aW5nc1ZpZGVvU2lua0NsYXNzICogZ19jbGFzcykKLXsKLSAgc2luay0+Y29udGV4dCA9IGdfbWFpbl9jb250ZXh0X25ldyAoKTsKLSAgZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX3Jlc2V0IChzaW5rKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nc2V0dGluZ3NfdmlkZW9fc2lua19iYXNlX2luaXQgKGdwb2ludGVyIGtsYXNzKQotewotICBHc3RFbGVtZW50Q2xhc3MgKmVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZWtsYXNzLCAiR1NldHRpbmdzIHZpZGVvIHNpbmsiLAotICAgICAgIlNpbmsvVmlkZW8iLAotICAgICAgIlZpZGVvIHNpbmsgZW1iZWRkaW5nIHRoZSBHU2V0dGluZ3MgcHJlZmVyZW5jZXMgZm9yIHZpZGVvIGlucHV0IiwKLSAgICAgICJTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4iKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nc2V0dGluZ3NfdmlkZW9fc2lua19jbGFzc19pbml0IChHc3RHU2V0dGluZ3NWaWRlb1NpbmtDbGFzcyAqIGtsYXNzKQotewotICBHT2JqZWN0Q2xhc3MgKm9rbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7Ci0gIEdzdEVsZW1lbnRDbGFzcyAqZWtsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKLQotICBva2xhc3MtPmZpbmFsaXplID0gZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX2ZpbmFsaXplOwotCi0gIGVrbGFzcy0+Y2hhbmdlX3N0YXRlID0gZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX2NoYW5nZV9zdGF0ZTsKLX0KZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmggYi9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc2luay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWY5YmM2Li4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxMCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIF9fR1NUX0dTRVRUSU5HU19WSURFT19TSU5LX0hfXwotI2RlZmluZSBfX0dTVF9HU0VUVElOR1NfVklERU9fU0lOS19IX18KLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSAiZ3N0c3dpdGNoc2luay5oIgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgR1NUX1RZUEVfR1NFVFRJTkdTX1ZJREVPX1NJTksgXAotICAoZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX2dldF90eXBlICgpKQotI2RlZmluZSBHU1RfR1NFVFRJTkdTX1ZJREVPX1NJTksob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX0dTRVRUSU5HU19WSURFT19TSU5LLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R1NldHRpbmdzVmlkZW9TaW5rKSkKLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19WSURFT19TSU5LX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfR1NFVFRJTkdTX1ZJREVPX1NJTkssIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHU2V0dGluZ3NWaWRlb1NpbmtDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19HU0VUVElOR1NfVklERU9fU0lOSyhvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfR1NFVFRJTkdTX1ZJREVPX1NJTkspKQotI2RlZmluZSBHU1RfSVNfR1NFVFRJTkdTX1ZJREVPX1NJTktfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9HU0VUVElOR1NfVklERU9fU0lOSykpCi0KLXR5cGVkZWYgc3RydWN0IF9Hc3RHU2V0dGluZ3NWaWRlb1NpbmsgewotICBHc3RTd2l0Y2hTaW5rIHBhcmVudDsKLQotICBHU2V0dGluZ3MgKnNldHRpbmdzOwotCi0gIEdNYWluQ29udGV4dCAqY29udGV4dDsKLSAgR01haW5Mb29wICpsb29wOwotICBndWxvbmcgY2hhbmdlZF9pZDsKLQotICBnY2hhciAqZ3NldHRpbmdzX3N0cjsKLX0gR3N0R1NldHRpbmdzVmlkZW9TaW5rOwotCi10eXBlZGVmIHN0cnVjdCBfR3N0R1NldHRpbmdzVmlkZW9TaW5rQ2xhc3MgewotICBHc3RTd2l0Y2hTaW5rQ2xhc3MgcGFyZW50X2NsYXNzOwotfSBHc3RHU2V0dGluZ3NWaWRlb1NpbmtDbGFzczsKLQotR1R5cGUgICBnc3RfZ3NldHRpbmdzX3ZpZGVvX3NpbmtfZ2V0X3R5cGUgICAodm9pZCk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBfX0dTVF9HU0VUVElOR1NfVklERU9fU0lOS19IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzdmlkZW9zcmMuYyBiL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzdmlkZW9zcmMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI3Njg2Ny4uMDAwMDAwMAotLS0gYS9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc3JjLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLS8qKgotICogU0VDVElPTjplbGVtZW50LWdzZXR0aW5nc3ZpZGVvc3JjCi0gKgotICogVGhpcyBlbGVtZW50IG91dHB1dHMgc291bmQgdG8gdGhlIHZpZGVvc3JjIHRoYXQgaGFzIGJlZW4gY29uZmlndXJlZCBpbgotICogR1NldHRpbmdzIGJ5IHRoZSB1c2VyLgotICogCi0gKiA8cmVmc2VjdDI+Ci0gKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+Ci0gKiB8WwotICogZ3N0LWxhdW5jaCBnc2V0dGluZ3N2aWRlb3NyYyAhIHZpZGVvY29udmVydCAhIHZpZGVvc2NhbGUgISBhdXRvdmlkZW9zaW5rCi0gKiBdfCBQbGF5IGZyb20gY29uZmlndXJlZCB2aWRlb3NyYwotICogPC9yZWZzZWN0Mj4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2dsaWItY29tcGF0LXByaXZhdGUuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgImdzdGdzZXR0aW5nc3ZpZGVvc3JjLmgiCi0jaW5jbHVkZSAiZ3N0Z3NldHRpbmdzLmgiCi0KLUdTVF9CT0lMRVJQTEFURSAoR3N0R1NldHRpbmdzVmlkZW9TcmMsIGdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjLCBHc3RTd2l0Y2hTcmMsCi0gICAgR1NUX1RZUEVfU1dJVENIX1NSQyk7Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dzZXR0aW5nc192aWRlb19zcmNfY2hhbmdlX2NoaWxkIChHc3RHU2V0dGluZ3NWaWRlb1NyYyAqIHNyYykKLXsKLSAgZ2NoYXIgKm5ld19zdHJpbmc7Ci0gIEdFcnJvciAqZXJyID0gTlVMTDsKLSAgR3N0RWxlbWVudCAqbmV3X2tpZDsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7Ci0gIG5ld19zdHJpbmcgPQotICAgICAgZ19zZXR0aW5nc19nZXRfc3RyaW5nIChzcmMtPnNldHRpbmdzLCBHU1RfR1NFVFRJTkdTX0tFWV9WSURFT1NSQyk7Ci0KLSAgaWYgKG5ld19zdHJpbmcgIT0gTlVMTCAmJiBzcmMtPmdzZXR0aW5nc19zdHIgIT0gTlVMTCAmJgotICAgICAgKHN0cmxlbiAobmV3X3N0cmluZykgPT0gMCB8fAotICAgICAgICAgIHN0cmNtcCAoc3JjLT5nc2V0dGluZ3Nfc3RyLCBuZXdfc3RyaW5nKSA9PSAwKSkgewotICAgIGdfZnJlZSAobmV3X3N0cmluZyk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLAotICAgICAgICAiR1NldHRpbmdzIGtleSB3YXMgdXBkYXRlZCwgYnV0IGl0IGRpZG4ndCBjaGFuZ2UuIElnbm9yaW5nIik7Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7Ci0gICAgcmV0dXJuIFRSVUU7Ci0gIH0KLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLCAiR1NldHRpbmdzIGtleSBjaGFuZ2VkIGZyb20gJyVzJyB0byAnJXMnIiwKLSAgICAgIEdTVF9TVFJfTlVMTCAoc3JjLT5nc2V0dGluZ3Nfc3RyKSwgR1NUX1NUUl9OVUxMIChuZXdfc3RyaW5nKSk7Ci0KLSAgaWYgKG5ld19zdHJpbmcpIHsKLSAgICBuZXdfa2lkID0gZ3N0X3BhcnNlX2Jpbl9mcm9tX2Rlc2NyaXB0aW9uIChuZXdfc3RyaW5nLCBUUlVFLCAmZXJyKTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICBHU1RfRVJST1JfT0JKRUNUIChzcmMsICJlcnJvciBjcmVhdGluZyBiaW4gJyVzJzogJXMiLCBuZXdfc3RyaW5nLAotICAgICAgICAgIGVyci0+bWVzc2FnZSk7Ci0gICAgICBnX2Vycm9yX2ZyZWUgKGVycik7Ci0gICAgfQotICB9IGVsc2UgewotICAgIG5ld19raWQgPSBOVUxMOwotICB9Ci0KLSAgaWYgKG5ld19raWQgPT0gTlVMTCkgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCi0gICAgICAgICgiRmFpbGVkIHRvIHJlbmRlciB2aWRlbyBzcmMgZnJvbSBHU2V0dGluZ3MiKSk7Ci0gICAgZ290byBmYWlsOwotICB9Ci0KLSAgaWYgKCFnc3Rfc3dpdGNoX3NyY19zZXRfY2hpbGQgKEdTVF9TV0lUQ0hfU1JDIChzcmMpLCBuZXdfa2lkKSkgewotICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoc3JjLCAiRmFpbGVkIHRvIHVwZGF0ZSBjaGlsZCBlbGVtZW50Iik7Ci0gICAgZ290byBmYWlsOwotICB9Ci0KLSAgZ19mcmVlIChzcmMtPmdzZXR0aW5nc19zdHIpOwotICBzcmMtPmdzZXR0aW5nc19zdHIgPSBuZXdfc3RyaW5nOwotCi0gIHJldHVybiBUUlVFOwotCi1mYWlsOgotICBnX2ZyZWUgKG5ld19zdHJpbmcpOwotICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0YXRpYyB2b2lkCi1vbl9jaGFuZ2VkIChHU2V0dGluZ3MgKiBzZXR0aW5ncywgZ2NoYXIgKiBrZXksIEdzdEdTZXR0aW5nc1ZpZGVvU3JjICogc3JjKQotewotICBpZiAoIWdfc3RyX2VxdWFsIChrZXksICJ2aWRlb3NyYyIpKQotICAgIHJldHVybjsKLQotICBnc3RfZ3NldHRpbmdzX3ZpZGVvX3NyY19jaGFuZ2VfY2hpbGQgKHNyYyk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dzZXR0aW5nc192aWRlb19zcmNfc3RhcnQgKEdzdEdTZXR0aW5nc1ZpZGVvU3JjICogc3JjKQotewotICBHRXJyb3IgKmVyciA9IE5VTEw7Ci0gIEdUaHJlYWQgKnRocmVhZDsKLQotICBzcmMtPmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKHNyYy0+Y29udGV4dCwgRkFMU0UpOwotCi0gIHRocmVhZCA9Ci0gICAgICBnX3RocmVhZF9jcmVhdGUgKChHVGhyZWFkRnVuYykgZ19tYWluX2xvb3BfcnVuLCBzcmMtPmxvb3AsIEZBTFNFLCAmZXJyKTsKLSAgaWYgKCF0aHJlYWQpIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBDT1JFLCBTVEFURV9DSEFOR0UsIChOVUxMKSwKLSAgICAgICAgKCJGYWlsZWQgdG8gY3JlYXRlIG5ldyB0aHJlYWQ6ICVzIiwgZXJyLT5tZXNzYWdlKSk7Ci0gICAgZ19lcnJvcl9mcmVlIChlcnIpOwotICAgIGdfbWFpbl9sb29wX3VucmVmIChzcmMtPmxvb3ApOwotICAgIHNyYy0+bG9vcCA9IE5VTEw7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgZ19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdCAoc3JjLT5jb250ZXh0KTsKLSAgc3JjLT5zZXR0aW5ncyA9IGdfc2V0dGluZ3NfbmV3IChHU1RfR1NFVFRJTkdTX1NDSEVNQSk7Ci0gIHNyYy0+Y2hhbmdlZF9pZCA9Ci0gICAgICBnX3NpZ25hbF9jb25uZWN0X2RhdGEgKEdfT0JKRUNUIChzcmMtPnNldHRpbmdzKSwgImNoYW5nZWQiLAotICAgICAgR19DQUxMQkFDSyAob25fY2hhbmdlZCksIGdzdF9vYmplY3RfcmVmIChzcmMpLAotICAgICAgKEdDbG9zdXJlTm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmLCAwKTsKLSAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZhdWx0IChzcmMtPmNvbnRleHQpOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjX3Jlc2V0IChHc3RHU2V0dGluZ3NWaWRlb1NyYyAqIHNyYykKLXsKLSAgZ3N0X3N3aXRjaF9zcmNfc2V0X2NoaWxkIChHU1RfU1dJVENIX1NSQyAoc3JjKSwgTlVMTCk7Ci0KLSAgaWYgKHNyYy0+Y2hhbmdlZF9pZCkgewotICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCAoc3JjLT5zZXR0aW5ncywgc3JjLT5jaGFuZ2VkX2lkKTsKLSAgICBzcmMtPmNoYW5nZWRfaWQgPSAwOwotICB9Ci0KLSAgaWYgKHNyYy0+bG9vcCkgewotICAgIGdfbWFpbl9sb29wX3F1aXQgKHNyYy0+bG9vcCk7Ci0gICAgZ19tYWluX2xvb3BfdW5yZWYgKHNyYy0+bG9vcCk7Ci0gICAgc3JjLT5sb29wID0gTlVMTDsKLSAgfQotCi0gIGlmIChzcmMtPnNldHRpbmdzKSB7Ci0gICAgZ19vYmplY3RfdW5yZWYgKHNyYy0+c2V0dGluZ3MpOwotICAgIHNyYy0+c2V0dGluZ3MgPSBOVUxMOwotICB9Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChzcmMpOwotICBnX2ZyZWUgKHNyYy0+Z3NldHRpbmdzX3N0cik7Ci0gIHNyYy0+Z3NldHRpbmdzX3N0ciA9IE5VTEw7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dzZXR0aW5nc192aWRlb19zcmNfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCi17Ci0gIEdzdEdTZXR0aW5nc1ZpZGVvU3JjICpzcmMgPSBHU1RfR1NFVFRJTkdTX1ZJREVPX1NSQyAob2JqZWN0KTsKLQotICBnX2ZyZWUgKHNyYy0+Z3NldHRpbmdzX3N0cik7Ci0gIGdfbWFpbl9jb250ZXh0X3VucmVmIChzcmMtPmNvbnRleHQpOwotCi0gIEdTVF9DQUxMX1BBUkVOVCAoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAoKEdPYmplY3QgKikgKHNyYykpKTsKLX0KLQotc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi1nc3RfZ3NldHRpbmdzX3ZpZGVvX3NyY19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAotICAgIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCi17Ci0gIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJldCA9IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUzsKLSAgR3N0R1NldHRpbmdzVmlkZW9TcmMgKnNyYyA9IEdTVF9HU0VUVElOR1NfVklERU9fU1JDIChlbGVtZW50KTsKLQotICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfTlVMTF9UT19SRUFEWToKLSAgICAgIGlmICghZ3N0X2dzZXR0aW5nc192aWRlb19zcmNfc3RhcnQgKHNyYykpCi0gICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7Ci0KLSAgICAgIGlmICghZ3N0X2dzZXR0aW5nc192aWRlb19zcmNfY2hhbmdlX2NoaWxkIChzcmMpKSB7Ci0gICAgICAgIGdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjX3Jlc2V0IChzcmMpOwotICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0ID0gR1NUX0NBTExfUEFSRU5UX1dJVEhfREVGQVVMVCAoR1NUX0VMRU1FTlRfQ0xBU1MsIGNoYW5nZV9zdGF0ZSwKLSAgICAgIChlbGVtZW50LCB0cmFuc2l0aW9uKSwgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKLQotICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fTlVMTDoKLSAgICAgIGdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjX3Jlc2V0IChzcmMpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjX2luaXQgKEdzdEdTZXR0aW5nc1ZpZGVvU3JjICogc3JjLAotICAgIEdzdEdTZXR0aW5nc1ZpZGVvU3JjQ2xhc3MgKiBnX2NsYXNzKQotewotICBzcmMtPmNvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcgKCk7Ci0gIGdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjX3Jlc2V0IChzcmMpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dzZXR0aW5nc192aWRlb19zcmNfYmFzZV9pbml0IChncG9pbnRlciBrbGFzcykKLXsKLSAgR3N0RWxlbWVudENsYXNzICpla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVrbGFzcywgIkdTZXR0aW5ncyB2aWRlbyBzcmMiLAotICAgICAgIlNyYy9WaWRlbyIsCi0gICAgICAiVmlkZW8gc3JjIGVtYmVkZGluZyB0aGUgR1NldHRpbmdzIHByZWZlcmVuY2VzIGZvciB2aWRlbyBpbnB1dCIsCi0gICAgICAiU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Iik7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX3ZpZGVvX3NyY19jbGFzc19pbml0IChHc3RHU2V0dGluZ3NWaWRlb1NyY0NsYXNzICoga2xhc3MpCi17Ci0gIEdPYmplY3RDbGFzcyAqb2tsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKLSAgR3N0RWxlbWVudENsYXNzICpla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotCi0gIG9rbGFzcy0+ZmluYWxpemUgPSBnc3RfZ3NldHRpbmdzX3ZpZGVvX3NyY19maW5hbGl6ZTsKLQotICBla2xhc3MtPmNoYW5nZV9zdGF0ZSA9IGdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjX2NoYW5nZV9zdGF0ZTsKLX0KZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzdmlkZW9zcmMuaCBiL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzdmlkZW9zcmMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI3YTZjZC4uMDAwMDAwMAotLS0gYS9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc3JjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxMCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIF9fR1NUX0dTRVRUSU5HU19WSURFT19TUkNfSF9fCi0jZGVmaW5lIF9fR1NUX0dTRVRUSU5HU19WSURFT19TUkNfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgImdzdHN3aXRjaHNyYy5oIgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgR1NUX1RZUEVfR1NFVFRJTkdTX1ZJREVPX1NSQyBcCi0gIChnc3RfZ3NldHRpbmdzX3ZpZGVvX3NyY19nZXRfdHlwZSAoKSkKLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19WSURFT19TUkMob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX0dTRVRUSU5HU19WSURFT19TUkMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHU2V0dGluZ3NWaWRlb1NyYykpCi0jZGVmaW5lIEdTVF9HU0VUVElOR1NfVklERU9fU1JDX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfR1NFVFRJTkdTX1ZJREVPX1NSQywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdTZXR0aW5nc1ZpZGVvU3JjQ2xhc3MpKQotI2RlZmluZSBHU1RfSVNfR1NFVFRJTkdTX1ZJREVPX1NSQyhvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfR1NFVFRJTkdTX1ZJREVPX1NSQykpCi0jZGVmaW5lIEdTVF9JU19HU0VUVElOR1NfVklERU9fU1JDX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfR1NFVFRJTkdTX1ZJREVPX1NSQykpCi0KLXR5cGVkZWYgc3RydWN0IF9Hc3RHU2V0dGluZ3NWaWRlb1NyYyB7Ci0gIEdzdFN3aXRjaFNyYyBwYXJlbnQ7Ci0KLSAgR1NldHRpbmdzICpzZXR0aW5nczsKLQotICBHTWFpbkNvbnRleHQgKmNvbnRleHQ7Ci0gIEdNYWluTG9vcCAqbG9vcDsKLSAgZ3Vsb25nIGNoYW5nZWRfaWQ7Ci0KLSAgZ2NoYXIgKmdzZXR0aW5nc19zdHI7Ci19IEdzdEdTZXR0aW5nc1ZpZGVvU3JjOwotCi10eXBlZGVmIHN0cnVjdCBfR3N0R1NldHRpbmdzVmlkZW9TcmNDbGFzcyB7Ci0gIEdzdFN3aXRjaFNyY0NsYXNzIHBhcmVudF9jbGFzczsKLX0gR3N0R1NldHRpbmdzVmlkZW9TcmNDbGFzczsKLQotR1R5cGUgICBnc3RfZ3NldHRpbmdzX3ZpZGVvX3NyY19nZXRfdHlwZSAgICh2b2lkKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIF9fR1NUX0dTRVRUSU5HU19WSURFT19TUkNfSF9fICovCmRpZmYgLS1naXQgYS9leHQvZ3NldHRpbmdzL2dzdHN3aXRjaHNpbmsuYyBiL2V4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc2luay5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTA0MmNlLi4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc2luay5jCisrKyAvZGV2L251bGwKQEAgLTEsMjcwICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChjKSAyMDA1IFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KLSAqIENvcHlyaWdodCAoYykgMjAwNiBKw7xyZyBCaWxsZXRlciA8akBiaXRyb24uY2g+Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSAiZ3N0c3dpdGNoc2luay5oIgotCi1HU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChzd2l0Y2hfZGVidWcpOwotI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgc3dpdGNoX2RlYnVnCi0KLXN0YXRpYyB2b2lkIGdzdF9zd2l0Y2hfc2lua19kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KTsKLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotZ3N0X3N3aXRjaF9zaW5rX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pOwotCi1lbnVtCi17Ci0gIFBST1BfMAotfTsKLQotR1NUX0JPSUxFUlBMQVRFIChHc3RTd2l0Y2hTaW5rLCBnc3Rfc3dpdGNoX3NpbmssIEdzdEJpbiwgR1NUX1RZUEVfQklOKTsKLQotc3RhdGljIHZvaWQKLWdzdF9zd2l0Y2hfc2lua19iYXNlX2luaXQgKGdwb2ludGVyIGtsYXNzKQotewotICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoc3dpdGNoX2RlYnVnLCAic3dpdGNoc2luayIsIDAsICJzd2l0Y2hzaW5rIGVsZW1lbnQiKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9zd2l0Y2hfc2lua19jbGFzc19pbml0IChHc3RTd2l0Y2hTaW5rQ2xhc3MgKiBrbGFzcykKLXsKLSAgR09iamVjdENsYXNzICpva2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOwotICBHc3RFbGVtZW50Q2xhc3MgKmVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0gIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rX3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKLSAgICAgIEdTVF9QQURfU0lOSywKLSAgICAgIEdTVF9QQURfQUxXQVlTLAotICAgICAgR1NUX1NUQVRJQ19DQVBTX0FOWSk7Ci0gIEdzdFBhZFRlbXBsYXRlICpjaGlsZF9wYWRfdGVtcGw7Ci0KLSAgb2tsYXNzLT5kaXNwb3NlID0gZ3N0X3N3aXRjaF9zaW5rX2Rpc3Bvc2U7Ci0gIGVrbGFzcy0+Y2hhbmdlX3N0YXRlID0gZ3N0X3N3aXRjaF9zaW5rX2NoYW5nZV9zdGF0ZTsKLQotICAvKiBQcm92aWRlIGEgZGVmYXVsdCBwYWQgdGVtcGxhdGUgaWYgdGhlIGNoaWxkIGRpZG4ndCAqLwotICBjaGlsZF9wYWRfdGVtcGwgPSBnc3RfZWxlbWVudF9jbGFzc19nZXRfcGFkX3RlbXBsYXRlIChla2xhc3MsICJzaW5rIik7Ci0gIGlmIChjaGlsZF9wYWRfdGVtcGwgPT0gTlVMTCkgewotICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVrbGFzcywKLSAgICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc2lua190ZW1wbGF0ZSkpOwotICB9Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3N3aXRjaF9zaW5rX3Jlc2V0IChHc3RTd2l0Y2hTaW5rICogc2luaykKLXsKLSAgLyogdGhpcyB3aWxsIGluc3RhbGwgZmFrZXNpbmsgaWYgbm8gb3RoZXIgY2hpbGQgaGFzIGJlZW4gc2V0LAotICAgKiBvdGhlcndpc2Ugd2UgcmVseSBvbiB0aGUgc3ViY2xhc3MgdG8ga25vdyB3aGVuIHRvIHVuc2V0IGl0cwotICAgKiBjdXN0b20ga2lkICovCi0gIGlmIChzaW5rLT5raWQgPT0gTlVMTCkgewotICAgIHJldHVybiBnc3Rfc3dpdGNoX3Npbmtfc2V0X2NoaWxkIChzaW5rLCBOVUxMKTsKLSAgfQotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3N3aXRjaF9zaW5rX2luaXQgKEdzdFN3aXRjaFNpbmsgKiBzaW5rLCBHc3RTd2l0Y2hTaW5rQ2xhc3MgKiBnX2NsYXNzKQotewotICBHc3RFbGVtZW50Q2xhc3MgKmVrbGFzcyA9IEdTVF9FTEVNRU5UX0dFVF9DTEFTUyAoc2luayk7Ci0gIEdzdFBhZFRlbXBsYXRlICp0ZW1wbDsKLQotICB0ZW1wbCA9IGdzdF9lbGVtZW50X2NsYXNzX2dldF9wYWRfdGVtcGxhdGUgKGVrbGFzcywgInNpbmsiKTsKLSAgc2luay0+cGFkID0gZ3N0X2dob3N0X3BhZF9uZXdfbm9fdGFyZ2V0X2Zyb21fdGVtcGxhdGUgKCJzaW5rIiwgdGVtcGwpOwotICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoc2luayksIHNpbmstPnBhZCk7Ci0KLSAgZ3N0X3N3aXRjaF9zaW5rX3Jlc2V0IChzaW5rKTsKLQotICBHU1RfT0JKRUNUX0ZMQUdfU0VUIChzaW5rLCBHU1RfRUxFTUVOVF9JU19TSU5LKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9zd2l0Y2hfc2lua19kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KQotewotICBHc3RTd2l0Y2hTaW5rICpzaW5rID0gR1NUX1NXSVRDSF9TSU5LIChvYmplY3QpOwotICBHc3RPYmplY3QgKm5ld19raWQsICpraWQ7Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChzaW5rKTsKLSAgbmV3X2tpZCA9IEdTVF9PQkpFQ1RfQ0FTVCAoc2luay0+bmV3X2tpZCk7Ci0gIHNpbmstPm5ld19raWQgPSBOVUxMOwotCi0gIGtpZCA9IEdTVF9PQkpFQ1RfQ0FTVCAoc2luay0+a2lkKTsKLSAgc2luay0+a2lkID0gTlVMTDsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHNpbmspOwotCi0gIGdzdF9vYmplY3RfcmVwbGFjZSAoJm5ld19raWQsIE5VTEwpOwotICBnc3Rfb2JqZWN0X3JlcGxhY2UgKCZraWQsIE5VTEwpOwotCi0gIEdTVF9DQUxMX1BBUkVOVCAoR19PQkpFQ1RfQ0xBU1MsIGRpc3Bvc2UsIChvYmplY3QpKTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3Rfc3dpdGNoX3NpbmtfY29tbWl0X25ld19raWQgKEdzdFN3aXRjaFNpbmsgKiBzaW5rKQotewotICBHc3RQYWQgKnRhcmdldHBhZDsKLSAgR3N0U3RhdGUga2lkX3N0YXRlOwotICBHc3RFbGVtZW50ICpuZXdfa2lkLCAqb2xkX2tpZDsKLSAgZ2Jvb2xlYW4gaXNfZmFrZXNpbmsgPSBGQUxTRTsKLSAgR3N0QnVzICpidXM7Ci0KLSAgLyogbmVlZCBsb2NraW5nIGFyb3VuZCBtZW1iZXIgYWNjZXNzZXMgKi8KLSAgR1NUX09CSkVDVF9MT0NLIChzaW5rKTsKLSAgLyogSWYgd2UncmUgY3VycmVudGx5IGNoYW5naW5nIHN0YXRlLCBzZXQgdGhlIGNoaWxkIHRvIHRoZSBuZXh0IHN0YXRlCi0gICAqIHdlJ3JlIHRyYW5zaXRpb25pbmcgdG9vLCByYXRoZXIgdGhhbiBvdXIgY3VycmVudCBzdGF0ZSB3aGljaCBpcyAKLSAgICogYWJvdXQgdG8gY2hhbmdlICovCi0gIGlmIChHU1RfU1RBVEVfTkVYVCAoc2luaykgIT0gR1NUX1NUQVRFX1ZPSURfUEVORElORykKLSAgICBraWRfc3RhdGUgPSBHU1RfU1RBVEVfTkVYVCAoc2luayk7Ci0gIGVsc2UKLSAgICBraWRfc3RhdGUgPSBHU1RfU1RBVEUgKHNpbmspOwotCi0gIG5ld19raWQgPSBzaW5rLT5uZXdfa2lkID8gZ3N0X29iamVjdF9yZWYgKHNpbmstPm5ld19raWQpIDogTlVMTDsKLSAgc2luay0+bmV3X2tpZCA9IE5VTEw7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzaW5rKTsKLQotICAvKiBGYWtlc2luayBieSBkZWZhdWx0IGlmIE5VTEwgaXMgcGFzc2VkIGFzIHRoZSBuZXcgY2hpbGQgKi8KLSAgaWYgKG5ld19raWQgPT0gTlVMTCkgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNpbmssICJSZXBsYWNpbmcga2lkIHdpdGggZmFrZXNpbmsiKTsKLSAgICBuZXdfa2lkID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZmFrZXNpbmsiLCAidGVzdHNpbmsiKTsKLSAgICBpZiAobmV3X2tpZCA9PSBOVUxMKSB7Ci0gICAgICBHU1RfRVJST1JfT0JKRUNUIChzaW5rLCAiRmFpbGVkIHRvIGNyZWF0ZSBmYWtlc2luayIpOwotICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLSAgICAvKiBBZGQgYSByZWZlcmVuY2UsIGFzIGl0IHdvdWxkIGlmIHRoZSBlbGVtZW50IGNhbWUgZnJvbSBzaW5rLT5uZXdfa2lkICovCi0gICAgZ3N0X29iamVjdF9yZWYgKG5ld19raWQpOwotICAgIGdfb2JqZWN0X3NldCAobmV3X2tpZCwgInN5bmMiLCBUUlVFLCBOVUxMKTsKLSAgICBpc19mYWtlc2luayA9IFRSVUU7Ci0gIH0gZWxzZSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgIlNldHRpbmcgbmV3IGtpZCIpOwotICB9Ci0KLSAgLyogc2V0IHRlbXBvcmFyeSBidXMgb2Ygb3VyIG93biB0byBjYXRjaCBlcnJvciBtZXNzYWdlcyBmcm9tIHRoZSBjaGlsZAotICAgKiAoY291bGQgd2UganVzdCBzZXQgb3VyIG93biBidXMgb24gaXQsIG9yIHdvdWxkIHRoZSBzdGF0ZSBjaGFuZ2UgbWVzc2FnZXMKLSAgICogZnJvbSB0aGUgbm90LXlldC1hZGRlZCBlbGVtZW50IGNvbmZ1c2UgdGhlIHN0YXRlIGNoYW5nZSBhbGdvcml0aG0/IExldCdzCi0gICAqIHBsYXkgaXQgc2FmZSBmb3Igbm93KSAqLwotICBidXMgPSBnc3RfYnVzX25ldyAoKTsKLSAgZ3N0X2VsZW1lbnRfc2V0X2J1cyAobmV3X2tpZCwgYnVzKTsKLSAgZ3N0X29iamVjdF91bnJlZiAoYnVzKTsKLQotICBpZiAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChuZXdfa2lkLCBraWRfc3RhdGUpID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgewotICAgIEdzdE1lc3NhZ2UgKm1zZzsKLQotICAgIC8qIGNoZWNrIGlmIGNoaWxkIHBvc3RlZCBhbiBlcnJvciBtZXNzYWdlIGFuZCBpZiBzbyByZS1wb3N0IGl0IG9uIG91ciBidXMKLSAgICAgKiBzbyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBnZXRzIHRvIHNlZSBhIGRlY2VudCBlcnJvciBhbmQgbm90IG91ciBnZW5lcmljCi0gICAgICogZmFsbGJhY2sgZXJyb3IgbWVzc2FnZSB3aGljaCBpcyBjb21wbGV0ZWx5IGluZGVjaXBoZXJhYmxlIHRvIHRoZSB1c2VyICovCi0gICAgbXNnID0gZ3N0X2J1c19wb3BfZmlsdGVyZWQgKEdTVF9FTEVNRU5UX0JVUyAobmV3X2tpZCksIEdTVF9NRVNTQUdFX0VSUk9SKTsKLSAgICBpZiAobXNnKSB7Ci0gICAgICBHU1RfSU5GT19PQkpFQ1QgKHNpbmssICJGb3J3YXJkaW5nIGtpZCBlcnJvcjogJSIgR1NUX1BUUl9GT1JNQVQsIG1zZyk7Ci0gICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChzaW5rKSwgbXNnKTsKLSAgICB9Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKHNpbmssIENPUkUsIFNUQVRFX0NIQU5HRSwgKE5VTEwpLAotICAgICAgICAoIkZhaWxlZCB0byBzZXQgc3RhdGUgb24gbmV3IGNoaWxkLiIpKTsKLSAgICBnc3RfZWxlbWVudF9zZXRfYnVzIChuZXdfa2lkLCBOVUxMKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChuZXdfa2lkKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLSAgZ3N0X2VsZW1lbnRfc2V0X2J1cyAobmV3X2tpZCwgTlVMTCk7Ci0gIGdzdF9iaW5fYWRkIChHU1RfQklOIChzaW5rKSwgbmV3X2tpZCk7Ci0KLSAgLyogTm93LCByZXBsYWNlIHRoZSBleGlzdGluZyBjaGlsZCAqLwotICBHU1RfT0JKRUNUX0xPQ0sgKHNpbmspOwotICBvbGRfa2lkID0gc2luay0+a2lkOwotICBzaW5rLT5raWQgPSBuZXdfa2lkOwotICAvKiBNYXJrIHdoZXRoZXIgYSBjdXN0b20ga2lkIG9yIGZha2VzaW5rIGhhcyBiZWVuIGluc3RhbGxlZCAqLwotICBzaW5rLT5oYXZlX2tpZCA9ICFpc19mYWtlc2luazsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHNpbmspOwotCi0gIC8qIGtpbGwgb2xkIGVsZW1lbnQgKi8KLSAgaWYgKG9sZF9raWQpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiUmVtb3Zpbmcgb2xkIGtpZCAlIiBHU1RfUFRSX0ZPUk1BVCwgb2xkX2tpZCk7Ci0gICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChvbGRfa2lkLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgZ3N0X2Jpbl9yZW1vdmUgKEdTVF9CSU4gKHNpbmspLCBvbGRfa2lkKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChvbGRfa2lkKTsKLSAgICAvKiBEb24ndCBsb3NlIHRoZSBTSU5LIGZsYWcgKi8KLSAgICBHU1RfT0JKRUNUX0ZMQUdfU0VUIChzaW5rLCBHU1RfRUxFTUVOVF9JU19TSU5LKTsKLSAgfQotCi0gIC8qIHJlLWF0dGFjaCBnaG9zdHBhZCAqLwotICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiQ3JlYXRpbmcgbmV3IGdob3N0cGFkIik7Ci0gIHRhcmdldHBhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChzaW5rLT5raWQsICJzaW5rIik7Ci0gIGdzdF9naG9zdF9wYWRfc2V0X3RhcmdldCAoR1NUX0dIT1NUX1BBRCAoc2luay0+cGFkKSwgdGFyZ2V0cGFkKTsKLSAgZ3N0X29iamVjdF91bnJlZiAodGFyZ2V0cGFkKTsKLSAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgImRvbmUgY2hhbmdpbmcgY2hpbGQgb2Ygc3dpdGNoc2luayIpOwotCi0gIC8qIEZJWE1FOiBQdXNoIG5ldy1zZWdtZW50IGluZm8gYW5kIHByZS1yb2xsIGJ1ZmZlcihzKSBpbnRvIHRoZSBraWQgKi8KLQotICByZXR1cm4gVFJVRTsKLX0KLQotZ2Jvb2xlYW4KLWdzdF9zd2l0Y2hfc2lua19zZXRfY2hpbGQgKEdzdFN3aXRjaFNpbmsgKiBzaW5rLCBHc3RFbGVtZW50ICogbmV3X2tpZCkKLXsKLSAgR3N0U3RhdGUgY3VyLCBuZXh0OwotICBHc3RFbGVtZW50ICoqcF9raWQ7Ci0KLSAgLyogTm90aGluZyB0byBkbyBpZiBjbGVhcmluZyB0aGUgY2hpbGQgYW5kIHdlJ3ZlIGFscmVhZHkgaW5zdGFsbGVkIGZha2VzaW5rICovCi0gIGlmIChuZXdfa2lkID09IE5VTEwgJiYgc2luay0+a2lkICE9IE5VTEwgJiYgc2luay0+aGF2ZV9raWQgPT0gRkFMU0UpCi0gICAgcmV0dXJuIFRSVUU7Ci0KLSAgLyogU3RvcmUgdGhlIG5ldyBraWQgdG8gYmUgY29tbWl0dGVkIGxhdGVyICovCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc2luayk7Ci0gIGN1ciA9IEdTVF9TVEFURSAoc2luayk7Ci0gIG5leHQgPSBHU1RfU1RBVEVfTkVYVCAoc2luayk7Ci0gIHBfa2lkID0gJnNpbmstPm5ld19raWQ7Ci0gIGdzdF9vYmplY3RfcmVwbGFjZSAoKEdzdE9iamVjdCAqKikgcF9raWQsIChHc3RPYmplY3QgKikgbmV3X2tpZCk7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzaW5rKTsKLSAgaWYgKG5ld19raWQpCi0gICAgZ3N0X29iamVjdF91bnJlZiAobmV3X2tpZCk7Ci0KLSAgLyogU29tZXRpbWUsIGl0IHdvdWxkIGJlIGxvdmVseSB0byBhbGxvdyBzaW5rIGNoYW5nZXMgZXZlbiB3aGVuCi0gICAqIGFscmVhZHkgcnVubmluZywgYnV0IHRoaXMgaW52b2x2ZXMgc2VuZGluZyBhbiBhcHByb3ByaWF0ZSBuZXctc2VnbWVudAotICAgKiBhbmQgcG9zc2libHkgcHJlcm9sbGluZyBldGMgKi8KLSAgLyogRklYTUU6IEJsb2NrIHRoZSBwYWQgYW5kIHJlcGxhY2UgdGhlIGtpZCB3aGVuIGl0IGNvbXBsZXRlcyAqLwotICBpZiAoY3VyID4gR1NUX1NUQVRFX1JFQURZIHx8IG5leHQgPT0gR1NUX1NUQVRFX1BBVVNFRCkgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNpbmssCi0gICAgICAgICJTd2l0Y2gtc2luayBpcyBhbHJlYWR5IHJ1bm5pbmcuIElnbm9yaW5nIGNoYW5nZSBvZiBjaGlsZC4iKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChuZXdfa2lkKTsKLSAgICByZXR1cm4gVFJVRTsKLSAgfQotCi0gIHJldHVybiBnc3Rfc3dpdGNoX3NpbmtfY29tbWl0X25ld19raWQgKHNpbmspOwotfQotCi1zdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KLWdzdF9zd2l0Y2hfc2lua19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQotewotICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1M7Ci0gIEdzdFN3aXRjaFNpbmsgKnNpbmsgPSBHU1RfU1dJVENIX1NJTksgKGVsZW1lbnQpOwotCi0gIHJldCA9IEdTVF9DQUxMX1BBUkVOVF9XSVRIX0RFRkFVTFQgKEdTVF9FTEVNRU5UX0NMQVNTLCBjaGFuZ2Vfc3RhdGUsCi0gICAgICAoZWxlbWVudCwgdHJhbnNpdGlvbiksIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEw6Ci0gICAgICBpZiAoIWdzdF9zd2l0Y2hfc2lua19yZXNldCAoc2luaykpCi0gICAgICAgIHJldCA9IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci19CmRpZmYgLS1naXQgYS9leHQvZ3NldHRpbmdzL2dzdHN3aXRjaHNpbmsuaCBiL2V4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc2luay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGIzZjY4Li4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc2luay5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgotICogQ29weXJpZ2h0IChjKSAyMDA3IEphbiBTY2htaWR0IDx0aGF5dGFuQG1hZC5zY2llbnRpc3QuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgX19HU1RfU1dJVENIX1NJTktfSF9fCi0jZGVmaW5lIF9fR1NUX1NXSVRDSF9TSU5LX0hfXwotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgR1NUX1RZUEVfU1dJVENIX1NJTksgXAotICAoZ3N0X3N3aXRjaF9zaW5rX2dldF90eXBlICgpKQotI2RlZmluZSBHU1RfU1dJVENIX1NJTksob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX1NXSVRDSF9TSU5LLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0U3dpdGNoU2luaykpCi0jZGVmaW5lIEdTVF9TV0lUQ0hfU0lOS19DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX1NXSVRDSF9TSU5LLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0U3dpdGNoU2lua0NsYXNzKSkKLSNkZWZpbmUgR1NUX0lTX1NXSVRDSF9TSU5LKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9TV0lUQ0hfU0lOSykpCi0jZGVmaW5lIEdTVF9JU19TV0lUQ0hfU0lOS19DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEdTVF9UWVBFX1NXSVRDSF9TSU5LKSkKLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdFN3aXRjaFNpbmsgewotICBHc3RCaW4gcGFyZW50OwotCi0gIEdzdEVsZW1lbnQgKmtpZDsKLSAgR3N0RWxlbWVudCAqbmV3X2tpZDsKLSAgR3N0UGFkICpwYWQ7Ci0KLSAgLyogSWYgYSBjdXN0b20gY2hpbGQgaGFzIGJlZW4gc2V0Li4uICovCi0gIGdib29sZWFuIGhhdmVfa2lkOwotfSBHc3RTd2l0Y2hTaW5rOwotCi10eXBlZGVmIHN0cnVjdCBfR3N0U3dpdGNoU2lua0NsYXNzIHsKLSAgR3N0QmluQ2xhc3MgcGFyZW50X2NsYXNzOwotfSBHc3RTd2l0Y2hTaW5rQ2xhc3M7Ci0KLUdUeXBlICAgZ3N0X3N3aXRjaF9zaW5rX2dldF90eXBlICAgKHZvaWQpOwotCi1nYm9vbGVhbiBnc3Rfc3dpdGNoX3Npbmtfc2V0X2NoaWxkIChHc3RTd2l0Y2hTaW5rICpzc2luaywgR3N0RWxlbWVudCAqbmV3X2tpZCk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBfX0dTVF9TV0lUQ0hfU0lOS19IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc3JjLmMgYi9leHQvZ3NldHRpbmdzL2dzdHN3aXRjaHNyYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjVkMDY4Li4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc3JjLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNjIgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgotICogQ29weXJpZ2h0IChjKSAyMDA2IErDvHJnIEJpbGxldGVyIDxqQGJpdHJvbi5jaD4KLSAqIENvcHlyaWdodCAoYykgMjAwNyBKYW4gU2NobWlkdCA8dGhheXRhbkBub3JhaXNpbi5uZXQ+Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMTAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlICJnc3Rzd2l0Y2hzcmMuaCIKLQotR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoc3dpdGNoX2RlYnVnKTsKLSNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHN3aXRjaF9kZWJ1ZwotCi1zdGF0aWMgdm9pZCBnc3Rfc3dpdGNoX3NyY19kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KTsKLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotZ3N0X3N3aXRjaF9zcmNfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7Ci0KLUdTVF9CT0lMRVJQTEFURSAoR3N0U3dpdGNoU3JjLCBnc3Rfc3dpdGNoX3NyYywgR3N0QmluLCBHU1RfVFlQRV9CSU4pOwotCi1zdGF0aWMgdm9pZAotZ3N0X3N3aXRjaF9zcmNfYmFzZV9pbml0IChncG9pbnRlciBrbGFzcykKLXsKLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKHN3aXRjaF9kZWJ1ZywgInN3aXRjaHNyYyIsIDAsICJzd2l0Y2hzcmMgZWxlbWVudCIpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3N3aXRjaF9zcmNfY2xhc3NfaW5pdCAoR3N0U3dpdGNoU3JjQ2xhc3MgKiBrbGFzcykKLXsKLSAgR09iamVjdENsYXNzICpva2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOwotICBHc3RFbGVtZW50Q2xhc3MgKmVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0gIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNfdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCi0gICAgICBHU1RfUEFEX1NSQywKLSAgICAgIEdTVF9QQURfQUxXQVlTLAotICAgICAgR1NUX1NUQVRJQ19DQVBTX0FOWSk7Ci0gIEdzdFBhZFRlbXBsYXRlICpjaGlsZF9wYWRfdGVtcGw7Ci0KLSAgb2tsYXNzLT5kaXNwb3NlID0gZ3N0X3N3aXRjaF9zcmNfZGlzcG9zZTsKLSAgZWtsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBnc3Rfc3dpdGNoX3NyY19jaGFuZ2Vfc3RhdGU7Ci0KLSAgLyogUHJvdmlkZSBhIGRlZmF1bHQgcGFkIHRlbXBsYXRlIGlmIHRoZSBjaGlsZCBkaWRuJ3QgKi8KLSAgY2hpbGRfcGFkX3RlbXBsID0gZ3N0X2VsZW1lbnRfY2xhc3NfZ2V0X3BhZF90ZW1wbGF0ZSAoZWtsYXNzLCAic3JjIik7Ci0gIGlmIChjaGlsZF9wYWRfdGVtcGwgPT0gTlVMTCkgewotICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVrbGFzcywKLSAgICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc3JjX3RlbXBsYXRlKSk7Ci0gIH0KLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3Rfc3dpdGNoX3NyY19yZXNldCAoR3N0U3dpdGNoU3JjICogc3JjKQotewotICAvKiB0aGlzIHdpbGwgaW5zdGFsbCBmYWtlc3JjIGlmIG5vIG90aGVyIGNoaWxkIGhhcyBiZWVuIHNldCwKLSAgICogb3RoZXJ3aXNlIHdlIHJlbHkgb24gdGhlIHN1YmNsYXNzIHRvIGtub3cgd2hlbiB0byB1bnNldCBpdHMKLSAgICogY3VzdG9tIGtpZCAqLwotICBpZiAoc3JjLT5raWQgPT0gTlVMTCkgewotICAgIHJldHVybiBnc3Rfc3dpdGNoX3NyY19zZXRfY2hpbGQgKHNyYywgTlVMTCk7Ci0gIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9zd2l0Y2hfc3JjX2luaXQgKEdzdFN3aXRjaFNyYyAqIHNyYywgR3N0U3dpdGNoU3JjQ2xhc3MgKiBnX2NsYXNzKQotewotICBHc3RFbGVtZW50Q2xhc3MgKmVrbGFzcyA9IEdTVF9FTEVNRU5UX0dFVF9DTEFTUyAoc3JjKTsKLSAgR3N0UGFkVGVtcGxhdGUgKnRlbXBsOwotCi0gIHRlbXBsID0gZ3N0X2VsZW1lbnRfY2xhc3NfZ2V0X3BhZF90ZW1wbGF0ZSAoZWtsYXNzLCAic3JjIik7Ci0gIHNyYy0+cGFkID0gZ3N0X2dob3N0X3BhZF9uZXdfbm9fdGFyZ2V0X2Zyb21fdGVtcGxhdGUgKCJzcmMiLCB0ZW1wbCk7Ci0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChzcmMpLCBzcmMtPnBhZCk7Ci0KLSAgZ3N0X3N3aXRjaF9zcmNfcmVzZXQgKHNyYyk7Ci0KLSAgR1NUX09CSkVDVF9GTEFHX1NFVCAoc3JjLCBHU1RfRUxFTUVOVF9JU19TT1VSQ0UpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3N3aXRjaF9zcmNfZGlzcG9zZSAoR09iamVjdCAqIG9iamVjdCkKLXsKLSAgR3N0U3dpdGNoU3JjICpzcmMgPSBHU1RfU1dJVENIX1NSQyAob2JqZWN0KTsKLSAgR3N0T2JqZWN0ICpuZXdfa2lkLCAqa2lkOwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKLSAgbmV3X2tpZCA9IEdTVF9PQkpFQ1RfQ0FTVCAoc3JjLT5uZXdfa2lkKTsKLSAgc3JjLT5uZXdfa2lkID0gTlVMTDsKLQotICBraWQgPSBHU1RfT0JKRUNUX0NBU1QgKHNyYy0+a2lkKTsKLSAgc3JjLT5raWQgPSBOVUxMOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKLQotICBnc3Rfb2JqZWN0X3JlcGxhY2UgKCZuZXdfa2lkLCBOVUxMKTsKLSAgZ3N0X29iamVjdF9yZXBsYWNlICgma2lkLCBOVUxMKTsKLQotICBHU1RfQ0FMTF9QQVJFTlQgKEdfT0JKRUNUX0NMQVNTLCBkaXNwb3NlLCAob2JqZWN0KSk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3N3aXRjaF9zcmNfY29tbWl0X25ld19raWQgKEdzdFN3aXRjaFNyYyAqIHNyYykKLXsKLSAgR3N0UGFkICp0YXJnZXRwYWQ7Ci0gIEdzdFN0YXRlIGtpZF9zdGF0ZTsKLSAgR3N0RWxlbWVudCAqbmV3X2tpZCwgKm9sZF9raWQ7Ci0gIGdib29sZWFuIGlzX2Zha2VzcmMgPSBGQUxTRTsKLSAgR3N0QnVzICpidXM7Ci0KLSAgLyogbmVlZCBsb2NraW5nIGFyb3VuZCBtZW1iZXIgYWNjZXNzZXMgKi8KLSAgR1NUX09CSkVDVF9MT0NLIChzcmMpOwotICAvKiBJZiB3ZSdyZSBjdXJyZW50bHkgY2hhbmdpbmcgc3RhdGUsIHNldCB0aGUgY2hpbGQgdG8gdGhlIG5leHQgc3RhdGUKLSAgICogd2UncmUgdHJhbnNpdGlvbmluZyB0b28sIHJhdGhlciB0aGFuIG91ciBjdXJyZW50IHN0YXRlIHdoaWNoIGlzIAotICAgKiBhYm91dCB0byBjaGFuZ2UgKi8KLSAgaWYgKEdTVF9TVEFURV9ORVhUIChzcmMpICE9IEdTVF9TVEFURV9WT0lEX1BFTkRJTkcpCi0gICAga2lkX3N0YXRlID0gR1NUX1NUQVRFX05FWFQgKHNyYyk7Ci0gIGVsc2UKLSAgICBraWRfc3RhdGUgPSBHU1RfU1RBVEUgKHNyYyk7Ci0KLSAgbmV3X2tpZCA9IHNyYy0+bmV3X2tpZCA/IGdzdF9vYmplY3RfcmVmIChzcmMtPm5ld19raWQpIDogTlVMTDsKLSAgc3JjLT5uZXdfa2lkID0gTlVMTDsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7Ci0KLSAgLyogRmFrZXNyYyBieSBkZWZhdWx0IGlmIE5VTEwgaXMgcGFzc2VkIGFzIHRoZSBuZXcgY2hpbGQgKi8KLSAgaWYgKG5ld19raWQgPT0gTlVMTCkgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNyYywgIlJlcGxhY2luZyBraWQgd2l0aCBmYWtlc3JjIik7Ci0gICAgbmV3X2tpZCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImZha2VzcmMiLCAidGVzdHNyYyIpOwotICAgIGlmIChuZXdfa2lkID09IE5VTEwpIHsKLSAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNyYywgIkZhaWxlZCB0byBjcmVhdGUgZmFrZXNyYyIpOwotICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLSAgICAvKiBBZGQgYSByZWZlcmVuY2UsIGFzIGl0IHdvdWxkIGlmIHRoZSBlbGVtZW50IGNhbWUgZnJvbSBzcmMtPm5ld19raWQgKi8KLSAgICBnc3Rfb2JqZWN0X3JlZiAobmV3X2tpZCk7Ci0gICAgaXNfZmFrZXNyYyA9IFRSVUU7Ci0gIH0gZWxzZSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLCAiU2V0dGluZyBuZXcga2lkIik7Ci0gIH0KLQotICAvKiBzZXQgdGVtcG9yYXJ5IGJ1cyBvZiBvdXIgb3duIHRvIGNhdGNoIGVycm9yIG1lc3NhZ2VzIGZyb20gdGhlIGNoaWxkCi0gICAqIChjb3VsZCB3ZSBqdXN0IHNldCBvdXIgb3duIGJ1cyBvbiBpdCwgb3Igd291bGQgdGhlIHN0YXRlIGNoYW5nZSBtZXNzYWdlcwotICAgKiBmcm9tIHRoZSBub3QteWV0LWFkZGVkIGVsZW1lbnQgY29uZnVzZSB0aGUgc3RhdGUgY2hhbmdlIGFsZ29yaXRobT8gTGV0J3MKLSAgICogcGxheSBpdCBzYWZlIGZvciBub3cpICovCi0gIGJ1cyA9IGdzdF9idXNfbmV3ICgpOwotICBnc3RfZWxlbWVudF9zZXRfYnVzIChuZXdfa2lkLCBidXMpOwotICBnc3Rfb2JqZWN0X3VucmVmIChidXMpOwotCi0gIGlmIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKG5ld19raWQsIGtpZF9zdGF0ZSkgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7Ci0gICAgR3N0TWVzc2FnZSAqbXNnOwotCi0gICAgLyogY2hlY2sgaWYgY2hpbGQgcG9zdGVkIGFuIGVycm9yIG1lc3NhZ2UgYW5kIGlmIHNvIHJlLXBvc3QgaXQgb24gb3VyIGJ1cwotICAgICAqIHNvIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGdldHMgdG8gc2VlIGEgZGVjZW50IGVycm9yIGFuZCBub3Qgb3VyIGdlbmVyaWMKLSAgICAgKiBmYWxsYmFjayBlcnJvciBtZXNzYWdlIHdoaWNoIGlzIGNvbXBsZXRlbHkgaW5kZWNpcGhlcmFibGUgdG8gdGhlIHVzZXIgKi8KLSAgICBtc2cgPSBnc3RfYnVzX3BvcF9maWx0ZXJlZCAoR1NUX0VMRU1FTlRfQlVTIChuZXdfa2lkKSwgR1NUX01FU1NBR0VfRVJST1IpOwotICAgIGlmIChtc2cpIHsKLSAgICAgIEdTVF9JTkZPX09CSkVDVCAoc3JjLCAiRm9yd2FyZGluZyBraWQgZXJyb3I6ICUiIEdTVF9QVFJfRk9STUFULCBtc2cpOwotICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoc3JjKSwgbXNnKTsKLSAgICB9Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKHNyYywgQ09SRSwgU1RBVEVfQ0hBTkdFLCAoTlVMTCksCi0gICAgICAgICgiRmFpbGVkIHRvIHNldCBzdGF0ZSBvbiBuZXcgY2hpbGQuIikpOwotICAgIGdzdF9lbGVtZW50X3NldF9idXMgKG5ld19raWQsIE5VTEwpOwotICAgIGdzdF9vYmplY3RfdW5yZWYgKG5ld19raWQpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotICBnc3RfZWxlbWVudF9zZXRfYnVzIChuZXdfa2lkLCBOVUxMKTsKLSAgZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKHNyYyksIG5ld19raWQpOwotCi0gIC8qIE5vdywgcmVwbGFjZSB0aGUgZXhpc3RpbmcgY2hpbGQgKi8KLSAgR1NUX09CSkVDVF9MT0NLIChzcmMpOwotICBvbGRfa2lkID0gc3JjLT5raWQ7Ci0gIHNyYy0+a2lkID0gbmV3X2tpZDsKLSAgLyogTWFyayB3aGV0aGVyIGEgY3VzdG9tIGtpZCBvciBmYWtlc3JjIGhhcyBiZWVuIGluc3RhbGxlZCAqLwotICBzcmMtPmhhdmVfa2lkID0gIWlzX2Zha2VzcmM7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOwotCi0gIC8qIGtpbGwgb2xkIGVsZW1lbnQgKi8KLSAgaWYgKG9sZF9raWQpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzcmMsICJSZW1vdmluZyBvbGQga2lkICUiIEdTVF9QVFJfRk9STUFULCBvbGRfa2lkKTsKLSAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKG9sZF9raWQsIEdTVF9TVEFURV9OVUxMKTsKLSAgICBnc3RfYmluX3JlbW92ZSAoR1NUX0JJTiAoc3JjKSwgb2xkX2tpZCk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAob2xkX2tpZCk7Ci0gICAgLyogRG9uJ3QgbG9zZSB0aGUgU09VUkNFIGZsYWcgKi8KLSAgICBHU1RfT0JKRUNUX0ZMQUdfU0VUIChzcmMsIEdTVF9FTEVNRU5UX0lTX1NPVVJDRSk7Ci0gIH0KLQotICAvKiByZS1hdHRhY2ggZ2hvc3RwYWQgKi8KLSAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLCAiQ3JlYXRpbmcgbmV3IGdob3N0cGFkIik7Ci0gIHRhcmdldHBhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChzcmMtPmtpZCwgInNyYyIpOwotICBnc3RfZ2hvc3RfcGFkX3NldF90YXJnZXQgKEdTVF9HSE9TVF9QQUQgKHNyYy0+cGFkKSwgdGFyZ2V0cGFkKTsKLSAgZ3N0X29iamVjdF91bnJlZiAodGFyZ2V0cGFkKTsKLSAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLCAiZG9uZSBjaGFuZ2luZyBjaGlsZCBvZiBzd2l0Y2hzcmMiKTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotZ2Jvb2xlYW4KLWdzdF9zd2l0Y2hfc3JjX3NldF9jaGlsZCAoR3N0U3dpdGNoU3JjICogc3JjLCBHc3RFbGVtZW50ICogbmV3X2tpZCkKLXsKLSAgR3N0U3RhdGUgY3VyLCBuZXh0OwotICBHc3RFbGVtZW50ICoqcF9raWQ7Ci0KLSAgLyogTm90aGluZyB0byBkbyBpZiBjbGVhcmluZyB0aGUgY2hpbGQgYW5kIHdlJ3ZlIGFscmVhZHkgaW5zdGFsbGVkIGZha2VzcmMgKi8KLSAgaWYgKG5ld19raWQgPT0gTlVMTCAmJiBzcmMtPmtpZCAhPSBOVUxMICYmIHNyYy0+aGF2ZV9raWQgPT0gRkFMU0UpCi0gICAgcmV0dXJuIFRSVUU7Ci0KLSAgLyogU3RvcmUgdGhlIG5ldyBraWQgdG8gYmUgY29tbWl0dGVkIGxhdGVyICovCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKLSAgY3VyID0gR1NUX1NUQVRFIChzcmMpOwotICBuZXh0ID0gR1NUX1NUQVRFX05FWFQgKHNyYyk7Ci0gIHBfa2lkID0gJnNyYy0+bmV3X2tpZDsKLSAgZ3N0X29iamVjdF9yZXBsYWNlICgoR3N0T2JqZWN0ICoqKSBwX2tpZCwgKEdzdE9iamVjdCAqKSBuZXdfa2lkKTsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7Ci0gIGlmIChuZXdfa2lkKQotICAgIGdzdF9vYmplY3RfdW5yZWYgKG5ld19raWQpOwotCi0gIC8qIFNvbWV0aW1lLCBpdCB3b3VsZCBiZSBsb3ZlbHkgdG8gYWxsb3cgc3JjIGNoYW5nZXMgZXZlbiB3aGVuCi0gICAqIGFscmVhZHkgcnVubmluZyAqLwotICAvKiBGSVhNRTogQmxvY2sgdGhlIHBhZCBhbmQgcmVwbGFjZSB0aGUga2lkIHdoZW4gaXQgY29tcGxldGVzICovCi0gIGlmIChjdXIgPiBHU1RfU1RBVEVfUkVBRFkgfHwgbmV4dCA9PSBHU1RfU1RBVEVfUEFVU0VEKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLAotICAgICAgICAiU3dpdGNoLXNyYyBpcyBhbHJlYWR5IHJ1bm5pbmcuIElnbm9yaW5nIGNoYW5nZSBvZiBjaGlsZC4iKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChuZXdfa2lkKTsKLSAgICByZXR1cm4gVFJVRTsKLSAgfQotCi0gIHJldHVybiBnc3Rfc3dpdGNoX3NyY19jb21taXRfbmV3X2tpZCAoc3JjKTsKLX0KLQotc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi1nc3Rfc3dpdGNoX3NyY19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQotewotICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1M7Ci0gIEdzdFN3aXRjaFNyYyAqc3JjID0gR1NUX1NXSVRDSF9TUkMgKGVsZW1lbnQpOwotCi0gIHJldCA9IEdTVF9DQUxMX1BBUkVOVF9XSVRIX0RFRkFVTFQgKEdTVF9FTEVNRU5UX0NMQVNTLCBjaGFuZ2Vfc3RhdGUsCi0gICAgICAoZWxlbWVudCwgdHJhbnNpdGlvbiksIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEw6Ci0gICAgICBpZiAoIWdzdF9zd2l0Y2hfc3JjX3Jlc2V0IChzcmMpKQotICAgICAgICByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXR1cm4gcmV0OwotfQpkaWZmIC0tZ2l0IGEvZXh0L2dzZXR0aW5ncy9nc3Rzd2l0Y2hzcmMuaCBiL2V4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc3JjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjNjk4YTEuLjAwMDAwMDAKLS0tIGEvZXh0L2dzZXR0aW5ncy9nc3Rzd2l0Y2hzcmMuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNSBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltIGNlbnRyaWN1bGFyIG5ldD4KLSAqIENvcHlyaWdodCAoYykgMjAwNyBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KLSAqIENvcHlyaWdodCAoYykgMjAxMCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIF9fR1NUX1NXSVRDSF9TUkNfSF9fCi0jZGVmaW5lIF9fR1NUX1NXSVRDSF9TUkNfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBHU1RfVFlQRV9TV0lUQ0hfU1JDICAgICAgICAgICAgKGdzdF9zd2l0Y2hfc3JjX2dldF90eXBlICgpKQotI2RlZmluZSBHU1RfU1dJVENIX1NSQyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfU1dJVENIX1NSQywgR3N0U3dpdGNoU3JjKSkKLSNkZWZpbmUgR1NUX1NXSVRDSF9TUkNfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfU1dJVENIX1NSQywgR3N0U3dpdGNoU3JjQ2xhc3MpKQotI2RlZmluZSBHU1RfSVNfU1dJVENIX1NSQyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfU1dJVENIX1NSQykpCi0jZGVmaW5lIEdTVF9JU19TV0lUQ0hfU1JDX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEdTVF9UWVBFX1NXSVRDSF9TUkMpKQotCi10eXBlZGVmIHN0cnVjdCBfR3N0U3dpdGNoU3JjIHsKLSAgR3N0QmluIHBhcmVudDsKLQotICBHc3RFbGVtZW50ICpraWQ7Ci0gIEdzdEVsZW1lbnQgKm5ld19raWQ7Ci0gIEdzdFBhZCAqcGFkOwotCi0gIC8qIElmIGEgY3VzdG9tIGNoaWxkIGhhcyBiZWVuIHNldC4uLiAqLwotICBnYm9vbGVhbiBoYXZlX2tpZDsKLX0gR3N0U3dpdGNoU3JjOwotCi10eXBlZGVmIHN0cnVjdCBfR3N0U3dpdGNoU3JjQ2xhc3MgewotICBHc3RCaW5DbGFzcyBwYXJlbnRfY2xhc3M7Ci19IEdzdFN3aXRjaFNyY0NsYXNzOwotCi1HVHlwZSAgICAgZ3N0X3N3aXRjaF9zcmNfZ2V0X3R5cGUgICAodm9pZCk7Ci1nYm9vbGVhbiAgZ3N0X3N3aXRjaF9zcmNfc2V0X2NoaWxkICAoR3N0U3dpdGNoU3JjICpzc3JjLCBHc3RFbGVtZW50ICpuZXdfa2lkKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIF9fR1NUX1NXSVRDSF9TUkNfSF9fICovCmRpZmYgLS1naXQgYS9leHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbCBiL2V4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDBjNGNlLi4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotPHNjaGVtYWxpc3Q+Ci0gIDxzY2hlbWEgaWQ9Im9yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXItMS4wLmRlZmF1bHQtZWxlbWVudHMiIHBhdGg9Ii9kZXNrdG9wL2dzdHJlYW1lci8xLjAvZGVmYXVsdC1lbGVtZW50cy8iIGdldHRleHQtZG9tYWluPSJnc3QtcGx1Z2lucy1iYWQtMS4wIj4KLSAgICA8a2V5IG5hbWU9InNvdW5kcy1hdWRpb3NpbmsiIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+ImF1dG9hdWRpb3NpbmsiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luazwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5HU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZgotICAgICAgb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luawotICAgICAgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZAotICAgICAgb2YganVzdCBvbmUgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0ic291bmRzLWF1ZGlvc2luay1kZXNjcmlwdGlvbiIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iRGVmYXVsdCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luazwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJjaGF0LWF1ZGlvc2luayIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iYXV0b2F1ZGlvc2luayI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZzwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5HU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZgotICAgICAgb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luawotICAgICAgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZAotICAgICAgb2YganVzdCBvbmUgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0iY2hhdC1hdWRpb3NpbmstZGVzY3JpcHRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkRlZmF1bHQiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9Im11c2ljLWF1ZGlvc2luayIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iYXV0b2F1ZGlvc2luayI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXM8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+R1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YKLSAgICAgIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsKLSAgICAgIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQKLSAgICAgIG9mIGp1c3Qgb25lIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9Im11c2ljLWF1ZGlvc2luay1kZXNjcmlwdGlvbiIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iRGVmYXVsdCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9InZpZGVvc2luayIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iYXV0b3ZpZGVvc2luayI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZWZhdWx0IEdTdHJlYW1lciB2aWRlb3Npbms8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+R1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2YKLSAgICAgIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSB4dmltYWdlc2luaywKLSAgICAgIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rIGNhbiBiZQotICAgICAgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0idmlkZW9zaW5rLWRlc2NyaXB0aW9uIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJEZWZhdWx0IjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3Npbms8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0iYXVkaW9zcmMiIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+ImFsc2FzcmMiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmM8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+R1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZgotICAgICAgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQKLSAgICAgIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mCi0gICAgICBqdXN0IG9uZSBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJhdWRpb3NyYy1kZXNjcmlwdGlvbiIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iRGVmYXVsdCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmM8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJ2aWRlb3NyYyIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4idjRsMnNyYyI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYzwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5HU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuCi0gICAgICBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8KLSAgICAgIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0idmlkZW9zcmMtZGVzY3JpcHRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkRlZmF1bHQiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0idmlzdWFsaXphdGlvbiIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iZ29vbSI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvCi0gICAgICB0cmFuc2Zvcm0gYXVkaW8gc3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUKLSAgICAgIGdvb20sIGdvb20yazEgYW5kIHN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhCi0gICAgICBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0idmlzdWFsaXphdGlvbi1kZXNjcmlwdGlvbiIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iRGVmYXVsdCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbjwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICA8L3NjaGVtYT4KLTwvc2NoZW1hbGlzdD4KZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluIGIvZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMTNiM2EuLjAwMDAwMDAKLS0tIGEvZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW4KKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi08c2NoZW1hbGlzdD4KLSAgPHNjaGVtYSBpZD0ib3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC5kZWZhdWx0LWVsZW1lbnRzIiBwYXRoPSIvZGVza3RvcC9nc3RyZWFtZXIvQEdTVF9BUElfVkVSU0lPTkAvZGVmYXVsdC1lbGVtZW50cy8iIGdldHRleHQtZG9tYWluPSJAR0VUVEVYVF9QQUNLQUdFQCI+Ci0gICAgPGtleSBuYW1lPSJzb3VuZHMtYXVkaW9zaW5rIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJAREVGQVVMVF9BVURJT1NJTktAIjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3Npbms8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+R1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YKLSAgICAgIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsKLSAgICAgIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQKLSAgICAgIG9mIGp1c3Qgb25lIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9InNvdW5kcy1hdWRpb3NpbmstZGVzY3JpcHRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkRlZmF1bHQiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3Npbms8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0iY2hhdC1hdWRpb3NpbmsiIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkBERUZBVUxUX0FVRElPU0lOS0AiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmc8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+R1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YKLSAgICAgIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsKLSAgICAgIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQKLSAgICAgIG9mIGp1c3Qgb25lIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9ImNoYXQtYXVkaW9zaW5rLWRlc2NyaXB0aW9uIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJEZWZhdWx0IjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZzwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJtdXNpYy1hdWRpb3NpbmsiIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkBERUZBVUxUX0FVRElPU0lOS0AiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mCi0gICAgICBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rCi0gICAgICBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkCi0gICAgICBvZiBqdXN0IG9uZSBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJtdXNpYy1hdWRpb3NpbmstZGVzY3JpcHRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkRlZmF1bHQiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllczwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJ2aWRlb3NpbmsiIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkBERUZBVUxUX1ZJREVPU0lOS0AiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mCi0gICAgICBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssCi0gICAgICB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayBjYW4gYmUKLSAgICAgIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9InZpZGVvc2luay1kZXNjcmlwdGlvbiIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iRGVmYXVsdCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9ImF1ZGlvc3JjIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJAREVGQVVMVF9BVURJT1NSQ0AiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmM8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+R1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZgotICAgICAgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQKLSAgICAgIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mCi0gICAgICBqdXN0IG9uZSBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJhdWRpb3NyYy1kZXNjcmlwdGlvbiIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iRGVmYXVsdCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmM8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJ2aWRlb3NyYyIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iQERFRkFVTFRfVklERU9TUkNAIjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4KLSAgICAgIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbwotICAgICAgc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJ2aWRlb3NyYy1kZXNjcmlwdGlvbiIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iRGVmYXVsdCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmM8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJ2aXN1YWxpemF0aW9uIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJAREVGQVVMVF9WSVNVQUxJWkVSQCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvCi0gICAgICB0cmFuc2Zvcm0gYXVkaW8gc3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUKLSAgICAgIGdvb20sIGdvb20yazEgYW5kIHN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhCi0gICAgICBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0idmlzdWFsaXphdGlvbi1kZXNjcmlwdGlvbiIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iRGVmYXVsdCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbjwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICA8L3NjaGVtYT4KLTwvc2NoZW1hbGlzdD4KZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvcGx1Z2luLmMgYi9leHQvZ3NldHRpbmdzL3BsdWdpbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjY0OTY3Li4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3MvcGx1Z2luLmMKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxMCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlIDxjb25maWcuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi0jaW5jbHVkZSAiZ3N0Z3NldHRpbmdzYXVkaW9zcmMuaCIKLSNpbmNsdWRlICJnc3Rnc2V0dGluZ3NhdWRpb3NpbmsuaCIKLSNpbmNsdWRlICJnc3Rnc2V0dGluZ3N2aWRlb3NyYy5oIgotI2luY2x1ZGUgImdzdGdzZXR0aW5nc3ZpZGVvc2luay5oIgotCi1zdGF0aWMgZ2Jvb2xlYW4KLXBsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCi17Ci0gIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImdzZXR0aW5nc2F1ZGlvc2luayIsIEdTVF9SQU5LX05PTkUsCi0gICAgICAgICAgR1NUX1RZUEVfR1NFVFRJTkdTX0FVRElPX1NJTkspIHx8Ci0gICAgICAhZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImdzZXR0aW5nc2F1ZGlvc3JjIiwgR1NUX1JBTktfTk9ORSwKLSAgICAgICAgICBHU1RfVFlQRV9HU0VUVElOR1NfQVVESU9fU1JDKSB8fAotICAgICAgIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJnc2V0dGluZ3N2aWRlb3NpbmsiLCBHU1RfUkFOS19OT05FLAotICAgICAgICAgIEdTVF9UWVBFX0dTRVRUSU5HU19WSURFT19TSU5LKSB8fAotICAgICAgIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJnc2V0dGluZ3N2aWRlb3NyYyIsIEdTVF9SQU5LX05PTkUsCi0gICAgICAgICAgR1NUX1RZUEVfR1NFVFRJTkdTX1ZJREVPX1NSQykpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1HU1RfUExVR0lOX0RFRklORSAoR1NUX1ZFUlNJT05fTUFKT1IsCi0gICAgR1NUX1ZFUlNJT05fTUlOT1IsCi0gICAgZ3NldHRpbmdzLAotICAgICJHU2V0dGluZ3MgcGx1Z2luIiwKLSAgICBwbHVnaW5faW5pdCwgVkVSU0lPTiwgIkxHUEwiLCBHU1RfUEFDS0FHRV9OQU1FLCBHU1RfUEFDS0FHRV9PUklHSU4pCmRpZmYgLS1naXQgYS9leHQvZ3NtL01ha2VmaWxlLmluIGIvZXh0L2dzbS9NYWtlZmlsZS5pbgppbmRleCA0MmM3NTBiLi44MTc3Y2JmIDEwMDY0NAotLS0gYS9leHQvZ3NtL01ha2VmaWxlLmluCisrKyBiL2V4dC9nc20vTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvZ3RrL01ha2VmaWxlLmluIGIvZXh0L2d0ay9NYWtlZmlsZS5pbgppbmRleCA0M2NlYjU2Li4zNmMyNTUxIDEwMDY0NAotLS0gYS9leHQvZ3RrL01ha2VmaWxlLmluCisrKyBiL2V4dC9ndGsvTWFrZWZpbGUuaW4KQEAgLTExOSwxNiArMTE5LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yODgsNiArMjg3LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMjUsNiArMzI2LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMzMsNyArMzM2LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzUyLDggKzM1NCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNzAsMTYgKzM3MywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MDUsNiArNDA5LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDMwLDYgKzQzNiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUzMSw2ICs1MzksNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTQ0LDggKzU1Myw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU2MSw2ICs1NjgsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjE4LDE2ICs2MjcsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzksNiArNjkwLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4OSw2ICs3MDEsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTgsNiArNzExLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTczNSw3ICs3NTAsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9ndGsvZ3N0Z3RrYmFzZXNpbmsuYyBiL2V4dC9ndGsvZ3N0Z3RrYmFzZXNpbmsuYwppbmRleCBlMTkyOTQwLi5mMDAxOWJmIDEwMDY0NAotLS0gYS9leHQvZ3RrL2dzdGd0a2Jhc2VzaW5rLmMKKysrIGIvZXh0L2d0ay9nc3RndGtiYXNlc2luay5jCkBAIC0xNDEsOSArMTQxLDE2IEBACiBzdGF0aWMgdm9pZAogZ3N0X2d0a19iYXNlX3NpbmtfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCiB7Ci0gIEdzdEd0a0Jhc2VTaW5rICpndGtfc2luayA9IEdTVF9HVEtfQkFTRV9TSU5LIChvYmplY3QpOzsKKyAgR3N0R3RrQmFzZVNpbmsgKmd0a19zaW5rID0gR1NUX0dUS19CQVNFX1NJTksgKG9iamVjdCk7CisKKyAgR1NUX09CSkVDVF9MT0NLIChndGtfc2luayk7CisgIGlmIChndGtfc2luay0+d2luZG93ICYmIGd0a19zaW5rLT53aW5kb3dfZGVzdHJveV9pZCkKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKGd0a19zaW5rLT53aW5kb3csIGd0a19zaW5rLT53aW5kb3dfZGVzdHJveV9pZCk7CisgIGlmIChndGtfc2luay0+d2lkZ2V0ICYmIGd0a19zaW5rLT53aWRnZXRfZGVzdHJveV9pZCkKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKGd0a19zaW5rLT53aWRnZXQsIGd0a19zaW5rLT53aWRnZXRfZGVzdHJveV9pZCk7CiAKICAgZ19jbGVhcl9vYmplY3QgKCZndGtfc2luay0+d2lkZ2V0KTsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKGd0a19zaW5rKTsKIAogICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7CiB9CkBAIC0xOTQsNyArMjAxLDcgQEAKICAgLyogVGFrZSB0aGUgZmxvYXRpbmcgcmVmLCBvdGhlciB3aXNlIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgY29udGFpbmVyIHdpbGwKICAgICogbWFrZSB0aGlzIHdpZGdldCBkaXNhcGVhciBwb3NzaWJseSBiZWZvcmUgd2UgYXJlIGRvbmUuICovCiAgIGdzdF9vYmplY3RfcmVmX3NpbmsgKGd0a19zaW5rLT53aWRnZXQpOwotICBnX3NpZ25hbF9jb25uZWN0IChndGtfc2luay0+d2lkZ2V0LCAiZGVzdHJveSIsCisgIGd0a19zaW5rLT53aWRnZXRfZGVzdHJveV9pZCA9IGdfc2lnbmFsX2Nvbm5lY3QgKGd0a19zaW5rLT53aWRnZXQsICJkZXN0cm95IiwKICAgICAgIEdfQ0FMTEJBQ0sgKHdpZGdldF9kZXN0cm95X2NiKSwgZ3RrX3NpbmspOwogCiAgIC8qIGJhY2sgcG9pbnRlciAqLwpAQCAtMzE2LDcgKzMyMyw3IEBACiAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplIChHVEtfV0lORE9XIChnc3Rfc2luay0+d2luZG93KSwgNjQwLCA0ODApOwogICAgIGd0a193aW5kb3dfc2V0X3RpdGxlIChHVEtfV0lORE9XIChnc3Rfc2luay0+d2luZG93KSwga2xhc3MtPndpbmRvd190aXRsZSk7CiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIgKGdzdF9zaW5rLT53aW5kb3cpLCB0b3BsZXZlbCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdCAoZ3N0X3NpbmstPndpbmRvdywgImRlc3Ryb3kiLAorICAgIGdzdF9zaW5rLT53aW5kb3dfZGVzdHJveV9pZCA9IGdfc2lnbmFsX2Nvbm5lY3QgKGdzdF9zaW5rLT53aW5kb3csICJkZXN0cm95IiwKICAgICAgICAgR19DQUxMQkFDSyAod2luZG93X2Rlc3Ryb3lfY2IpLCBnc3Rfc2luayk7CiAgIH0KIApkaWZmIC0tZ2l0IGEvZXh0L2d0ay9nc3RndGtiYXNlc2luay5oIGIvZXh0L2d0ay9nc3RndGtiYXNlc2luay5oCmluZGV4IDcyNjBjZDUuLmVmOGMyODQgMTAwNjQ0Ci0tLSBhL2V4dC9ndGsvZ3N0Z3RrYmFzZXNpbmsuaAorKysgYi9leHQvZ3RrL2dzdGd0a2Jhc2VzaW5rLmgKQEAgLTY5LDYgKzY5LDggQEAKICAgR0JpbmRpbmcgICAgICAgICAgICAgKmJpbmRfaWdub3JlX2FscGhhOwogCiAgIEd0a1dpZGdldCAgICAgICAgICAgICp3aW5kb3c7CisgIGd1bG9uZyAgICAgICAgICAgICAgIHdpZGdldF9kZXN0cm95X2lkOworICBndWxvbmcgICAgICAgICAgICAgICB3aW5kb3dfZGVzdHJveV9pZDsKIH07CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZXh0L2d0ay9ndGtnc3RnbHdpZGdldC5jIGIvZXh0L2d0ay9ndGtnc3RnbHdpZGdldC5jCmluZGV4IDdiM2YzN2YuLmM5YWQwYjYgMTAwNjQ0Ci0tLSBhL2V4dC9ndGsvZ3RrZ3N0Z2x3aWRnZXQuYworKysgYi9leHQvZ3RrL2d0a2dzdGdsd2lkZ2V0LmMKQEAgLTUyLDggKzUyLDcgQEAKIAogR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEd0a0dzdEdMV2lkZ2V0LCBndGtfZ3N0X2dsX3dpZGdldCwgR1RLX1RZUEVfR0xfQVJFQSwKICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9ERUZBVUxULCAiZ3RrZ3N0Z2x3aWRnZXQiLCAwLAotICAgICAgICAiR3RrIEdzdCBHTCBXaWRnZXQiKTsKLSAgICApOworICAgICAgICAiR3RrIEdzdCBHTCBXaWRnZXQiKTspOwogCiAjZGVmaW5lIEdUS19HU1RfR0xfV0lER0VUX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSAoKG9iaiksIFwKICAgICBHVEtfVFlQRV9HU1RfR0xfV0lER0VULCBHdGtHc3RHTFdpZGdldFByaXZhdGUpKQpAQCAtMTE5LDExICsxMTgsMTggQEAKIHsKICAgR3RrR3N0R0xXaWRnZXRQcml2YXRlICpwcml2ID0gZ3N0X3dpZGdldC0+cHJpdjsKICAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBwcml2LT5jb250ZXh0LT5nbF92dGFibGU7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwogCi0gIHByaXYtPnNoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3IChwcml2LT5jb250ZXh0KTsKKyAgZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIgKHByaXYtPm90aGVyX2NvbnRleHQsICJpbml0aWFsaXppbmcgcmVkaXNwbGF5Iik7CisgIGlmICghKHByaXYtPnNoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3X2RlZmF1bHQgKHByaXYtPmNvbnRleHQsICZlcnJvcikpKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGluaXRpYWxpemUgc2hhZGVyOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICByZXR1cm47CisgIH0KIAotICBnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVjayAocHJpdi0+c2hhZGVyLAotICAgICAgJnByaXYtPmF0dHJfcG9zaXRpb24sICZwcml2LT5hdHRyX3RleHR1cmUpOworICBwcml2LT5hdHRyX3Bvc2l0aW9uID0KKyAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAocHJpdi0+c2hhZGVyLCAiYV9wb3NpdGlvbiIpOworICBwcml2LT5hdHRyX3RleHR1cmUgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChwcml2LT5zaGFkZXIsICJhX3RleGNvb3JkIik7CiAKICAgaWYgKGdsLT5HZW5WZXJ0ZXhBcnJheXMpIHsKICAgICBnbC0+R2VuVmVydGV4QXJyYXlzICgxLCAmcHJpdi0+dmFvKTsKQEAgLTIwNyw2ICsyMTMsNyBAQAogewogICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKIAorICBnc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlciAoY29udGV4dCwgIm5vIGJ1ZmZlci4gIHJlbmRlcmluZyBibGFjayIpOwogICBnbC0+Q2xlYXJDb2xvciAoMC4wLCAwLjAsIDAuMCwgMC4wKTsKICAgZ2wtPkNsZWFyIChHTF9DT0xPUl9CVUZGRVJfQklUKTsKIH0KQEAgLTI0NCwxNyArMjUxLDIwIEBACiAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCisgICAgcHJpdi0+Y3VycmVudF90ZXggPSAqKGd1aW50ICopIGdsX2ZyYW1lLmRhdGFbMF07CisgICAgZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIgKHByaXYtPm90aGVyX2NvbnRleHQsICJyZWRyYXdpbmcgdGV4dHVyZSAldSIsCisgICAgICAgIHByaXYtPmN1cnJlbnRfdGV4KTsKKwogICAgIGdzdF9nbF9vdmVybGF5X2NvbXBvc2l0b3JfdXBsb2FkX292ZXJsYXlzIChwcml2LT5vdmVybGF5X2NvbXBvc2l0b3IsCiAgICAgICAgIGJ1ZmZlcik7CiAKICAgICBzeW5jX21ldGEgPSBnc3RfYnVmZmVyX2dldF9nbF9zeW5jX21ldGEgKGJ1ZmZlcik7CiAgICAgaWYgKHN5bmNfbWV0YSkgeworICAgICAgLyogWFhYOiB0aGUgc2V0X3N5bmMoKSBzZWVtcyB0byBiZSBuZWVkZWQgZm9yIHJlc2l6aW5nICovCiAgICAgICBnc3RfZ2xfc3luY19tZXRhX3NldF9zeW5jX3BvaW50IChzeW5jX21ldGEsIHByaXYtPmNvbnRleHQpOwogICAgICAgZ3N0X2dsX3N5bmNfbWV0YV93YWl0IChzeW5jX21ldGEsIHByaXYtPm90aGVyX2NvbnRleHQpOwogICAgIH0KIAotICAgIHByaXYtPmN1cnJlbnRfdGV4ID0gKihndWludCAqKSBnbF9mcmFtZS5kYXRhWzBdOwotCiAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmZ2xfZnJhbWUpOwogCiAgICAgaWYgKGJhc2Vfd2lkZ2V0LT5idWZmZXIpCkBAIC0yNzEsNiArMjgxLDkgQEAKICAgX3JlZHJhd190ZXh0dXJlIChHVEtfR1NUX0dMX1dJREdFVCAod2lkZ2V0KSwgcHJpdi0+Y3VycmVudF90ZXgpOwogICBnc3RfZ2xfb3ZlcmxheV9jb21wb3NpdG9yX2RyYXdfb3ZlcmxheXMgKHByaXYtPm92ZXJsYXlfY29tcG9zaXRvcik7CiAKKyAgZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIgKHByaXYtPm90aGVyX2NvbnRleHQsICJ0ZXh0dXJlICV1IHJlZHJhd24iLAorICAgICAgcHJpdi0+Y3VycmVudF90ZXgpOworCiBkb25lOgogICBpZiAocHJpdi0+b3RoZXJfY29udGV4dCkKICAgICBnc3RfZ2xfY29udGV4dF9hY3RpdmF0ZSAocHJpdi0+b3RoZXJfY29udGV4dCwgRkFMU0UpOwpAQCAtNDkzLDcgKzUwNiw3IEBACiAgICAgR1RLX0dTVF9CQVNFX1dJREdFVF9MT0NLIChnc3Rfd2lkZ2V0KTsKICAgfQogCi0gIGlmICghR1NUX0dMX0lTX0NPTlRFWFQgKHByaXYtPm90aGVyX2NvbnRleHQpKSB7CisgIGlmICghR1NUX0lTX0dMX0NPTlRFWFQgKHByaXYtPm90aGVyX2NvbnRleHQpKSB7CiAgICAgR1RLX0dTVF9CQVNFX1dJREdFVF9VTkxPQ0sgKGdzdF93aWRnZXQpOwogICAgIHJldHVybiBGQUxTRTsKICAgfQpkaWZmIC0tZ2l0IGEvZXh0L2hscy9NYWtlZmlsZS5hbSBiL2V4dC9obHMvTWFrZWZpbGUuYW0KaW5kZXggZjY2ODgwZi4uMTg5ZjllNiAxMDA2NDQKLS0tIGEvZXh0L2hscy9NYWtlZmlsZS5hbQorKysgYi9leHQvaGxzL01ha2VmaWxlLmFtCkBAIC0xLDI1ICsxLDI1IEBACiAKLXBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdGZyYWdtZW50ZWQubGEKK3BsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdGhscy5sYQogCi1saWJnc3RmcmFnbWVudGVkX2xhX1NPVVJDRVMgPQkJCVwKK2xpYmdzdGhsc19sYV9TT1VSQ0VTID0JCQlcCiAJbTN1OC5jCQkJCQlcCiAJZ3N0aGxzZGVtdXguYwkJCQlcCi0JZ3N0ZnJhZ21lbnRlZHBsdWdpbi5jIAkJCVwKKwlnc3RobHNwbHVnaW4uYyAJCQlcCiAJZ3N0aGxzc2luay5jIAkJCQlcCiAJZ3N0bTN1OHBsYXlsaXN0LmMKIAotbGliZ3N0ZnJhZ21lbnRlZF9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoR0lPX0NGTEFHUykgJChMSUJHQ1JZUFRfQ0ZMQUdTKSAkKE5FVFRMRV9DRkxBR1MpCi1saWJnc3RmcmFnbWVudGVkX2xhX0xJQkFERCA9IFwKK2xpYmdzdGhsc19sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoTElCR0NSWVBUX0NGTEFHUykgJChORVRUTEVfQ0ZMQUdTKSAkKE9QRU5TU0xfQ0ZMQUdTKQorbGliZ3N0aGxzX2xhX0xJQkFERCA9IFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3VyaWRvd25sb2FkZXIvbGliZ3N0dXJpZG93bmxvYWRlci1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgICAgICAgICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9saWJnc3RhZGFwdGl2ZWRlbXV4LUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RwYnV0aWxzLSQoR1NUX0FQSV9WRVJTSU9OKSAtbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCi0JJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKEdJT19MSUJTKSAkKExJQk0pICQoTElCR0NSWVBUX0xJQlMpICQoTkVUVExFX0xJQlMpICQoT1BFTlNTTF9MSUJTKQotbGliZ3N0ZnJhZ21lbnRlZF9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpIC1uby11bmRlZmluZWQKLWxpYmdzdGZyYWdtZW50ZWRfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKKwkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTElCTSkgJChMSUJHQ1JZUFRfTElCUykgJChORVRUTEVfTElCUykgJChPUEVOU1NMX0xJQlMpCitsaWJnc3RobHNfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKSAtbm8tdW5kZWZpbmVkCitsaWJnc3RobHNfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKIAogIyBoZWFkZXJzIHdlIG5lZWQgYnV0IGRvbid0IHdhbnQgaW5zdGFsbGVkCiBub2luc3RfSEVBREVSUyA9IAkJCVwKLQlnc3RmcmFnbWVudGVkLmgJCQlcCisJZ3N0aGxzLmgJCQlcCiAJZ3N0aGxzZGVtdXguaAkJCVwKIAlnc3RobHNzaW5rLmgJCQlcCiAJZ3N0bTN1OHBsYXlsaXN0LmgJCVwKZGlmZiAtLWdpdCBhL2V4dC9obHMvTWFrZWZpbGUuaW4gYi9leHQvaGxzL01ha2VmaWxlLmluCmluZGV4IGEzMjhkYjkuLjdjNzE5ZDcgMTAwNjQ0Ci0tLSBhL2V4dC9obHMvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2hscy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xNjQsMjYgKzE2MywyNCBAQAogYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHBsdWdpbmRpcikiCiBMVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KLWxpYmdzdGZyYWdtZW50ZWRfbGFfREVQRU5ERU5DSUVTID0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL2xpYmdzdHVyaWRvd25sb2FkZXItQEdTVF9BUElfVkVSU0lPTkAubGEgXAorbGliZ3N0aGxzX2xhX0RFUEVOREVOQ0lFUyA9ICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9saWJnc3R1cmlkb3dubG9hZGVyLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvbGliZ3N0YWRhcHRpdmVkZW11eC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKQotYW1fbGliZ3N0ZnJhZ21lbnRlZF9sYV9PQkpFQ1RTID0gbGliZ3N0ZnJhZ21lbnRlZF9sYS1tM3U4LmxvIFwKLQlsaWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc2RlbXV4LmxvIFwKLQlsaWJnc3RmcmFnbWVudGVkX2xhLWdzdGZyYWdtZW50ZWRwbHVnaW4ubG8gXAotCWxpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0aGxzc2luay5sbyBcCi0JbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RtM3U4cGxheWxpc3QubG8KLWxpYmdzdGZyYWdtZW50ZWRfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0ZnJhZ21lbnRlZF9sYV9PQkpFQ1RTKQorCSQoYW1fX0RFUEVOREVOQ0lFU18xKQorYW1fbGliZ3N0aGxzX2xhX09CSkVDVFMgPSBsaWJnc3RobHNfbGEtbTN1OC5sbyBcCisJbGliZ3N0aGxzX2xhLWdzdGhsc2RlbXV4LmxvIGxpYmdzdGhsc19sYS1nc3RobHNwbHVnaW4ubG8gXAorCWxpYmdzdGhsc19sYS1nc3RobHNzaW5rLmxvIGxpYmdzdGhsc19sYS1nc3RtM3U4cGxheWxpc3QubG8KK2xpYmdzdGhsc19sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RobHNfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKIGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9sdF8wID0gLS1zaWxlbnQKIGFtX192X2x0XzEgPSAKLWxpYmdzdGZyYWdtZW50ZWRfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCi0JJChsaWJnc3RmcmFnbWVudGVkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIFwKLQktLW1vZGU9bGluayAkKENDTEQpICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSBcCi0JJChsaWJnc3RmcmFnbWVudGVkX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK2xpYmdzdGhsc19sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKKwkkKGxpYmdzdGhsc19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayBcCisJJChDQ0xEKSAkKGxpYmdzdGhsc19sYV9DRkxBR1MpICQoQ0ZMQUdTKSBcCisJJChsaWJnc3RobHNfbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAogQU1fVl9QID0gJChhbV9fdl9QX0BBTV9WQCkKIGFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfUF8wID0gZmFsc2UKQEAgLTIxOCw4ICsyMTUsOCBAQAogYW1fX3ZfQ0NMRF8gPSAkKGFtX192X0NDTERfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9DQ0xEXzAgPSBAZWNobyAiICBDQ0xEICAgICIgJEA7CiBhbV9fdl9DQ0xEXzEgPSAKLVNPVVJDRVMgPSAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfU09VUkNFUykKLURJU1RfU09VUkNFUyA9ICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9TT1VSQ0VTKQorU09VUkNFUyA9ICQobGliZ3N0aGxzX2xhX1NPVVJDRVMpCitESVNUX1NPVVJDRVMgPSAkKGxpYmdzdGhsc19sYV9TT1VSQ0VTKQogYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCiAgIGNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAogICAgIG58bm98Tk8pIGZhbHNlOzsgXApAQCAtMjgyLDYgKzI3OSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE5LDYgKzMxOCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI3LDcgKzMyOCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Niw4ICszNDYsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzY0LDE2ICszNjUsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk5LDYgKzQwMSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyNCw2ICs0MjgsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjUsNiArNTMxLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzOCw4ICs1NDUsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTUsNiArNTYwLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxMiwxNiArNjE5LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjczLDYgKzY4Miw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODMsNiArNjkzLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjkyLDYgKzcwMyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjksNyArNzQyLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NjksMjcgKzc4MSwyNyBAQAogdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RmcmFnbWVudGVkLmxhCi1saWJnc3RmcmFnbWVudGVkX2xhX1NPVVJDRVMgPSBcCitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RobHMubGEKK2xpYmdzdGhsc19sYV9TT1VSQ0VTID0gXAogCW0zdTguYwkJCQkJXAogCWdzdGhsc2RlbXV4LmMJCQkJXAotCWdzdGZyYWdtZW50ZWRwbHVnaW4uYyAJCQlcCisJZ3N0aGxzcGx1Z2luLmMgCQkJXAogCWdzdGhsc3NpbmsuYyAJCQkJXAogCWdzdG0zdThwbGF5bGlzdC5jCiAKLWxpYmdzdGZyYWdtZW50ZWRfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEdJT19DRkxBR1MpICQoTElCR0NSWVBUX0NGTEFHUykgJChORVRUTEVfQ0ZMQUdTKQotbGliZ3N0ZnJhZ21lbnRlZF9sYV9MSUJBREQgPSBcCitsaWJnc3RobHNfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKExJQkdDUllQVF9DRkxBR1MpICQoTkVUVExFX0NGTEFHUykgJChPUEVOU1NMX0NGTEFHUykKK2xpYmdzdGhsc19sYV9MSUJBREQgPSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL2xpYmdzdHVyaWRvd25sb2FkZXItQEdTVF9BUElfVkVSU0lPTkAubGEgXAogICAgICAgICAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvbGliZ3N0YWRhcHRpdmVkZW11eC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0cGJ1dGlscy0kKEdTVF9BUElfVkVSU0lPTikgLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChHSU9fTElCUykgJChMSUJNKSAkKExJQkdDUllQVF9MSUJTKSAkKE5FVFRMRV9MSUJTKSAkKE9QRU5TU0xfTElCUykKKwkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTElCTSkgJChMSUJHQ1JZUFRfTElCUykgJChORVRUTEVfTElCUykgJChPUEVOU1NMX0xJQlMpCiAKLWxpYmdzdGZyYWdtZW50ZWRfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKSAtbm8tdW5kZWZpbmVkCi1saWJnc3RmcmFnbWVudGVkX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCitsaWJnc3RobHNfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKSAtbm8tdW5kZWZpbmVkCitsaWJnc3RobHNfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKIAogIyBoZWFkZXJzIHdlIG5lZWQgYnV0IGRvbid0IHdhbnQgaW5zdGFsbGVkCiBub2luc3RfSEVBREVSUyA9IFwKLQlnc3RmcmFnbWVudGVkLmgJCQlcCisJZ3N0aGxzLmgJCQlcCiAJZ3N0aGxzZGVtdXguaAkJCVwKIAlnc3RobHNzaW5rLmgJCQlcCiAJZ3N0bTN1OHBsYXlsaXN0LmgJCVwKQEAgLTg2NCw4ICs4NzYsOCBAQAogCSAgcm0gLWYgJCR7bG9jc307IFwKIAl9CiAKLWxpYmdzdGZyYWdtZW50ZWQubGE6ICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9PQkpFQ1RTKSAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdGZyYWdtZW50ZWRfbGFfREVQRU5ERU5DSUVTKSAKLQkkKEFNX1ZfQ0NMRCkkKGxpYmdzdGZyYWdtZW50ZWRfbGFfTElOSykgLXJwYXRoICQocGx1Z2luZGlyKSAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfT0JKRUNUUykgJChsaWJnc3RmcmFnbWVudGVkX2xhX0xJQkFERCkgJChMSUJTKQorbGliZ3N0aGxzLmxhOiAkKGxpYmdzdGhsc19sYV9PQkpFQ1RTKSAkKGxpYmdzdGhsc19sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0aGxzX2xhX0RFUEVOREVOQ0lFUykgCisJJChBTV9WX0NDTEQpJChsaWJnc3RobHNfbGFfTElOSykgLXJwYXRoICQocGx1Z2luZGlyKSAkKGxpYmdzdGhsc19sYV9PQkpFQ1RTKSAkKGxpYmdzdGhsc19sYV9MSUJBREQpICQoTElCUykKIAogbW9zdGx5Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi4kKE9CSkVYVCkKQEAgLTg3MywxMSArODg1LDExIEBACiBkaXN0Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi50YWIuYwogCi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RmcmFnbWVudGVkcGx1Z2luLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNkZW11eC5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0aGxzc2luay5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0bTN1OHBsYXlsaXN0LlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1tM3U4LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0aGxzX2xhLWdzdGhsc2RlbXV4LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0aGxzX2xhLWdzdGhsc3BsdWdpbi5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RobHNzaW5rLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0aGxzX2xhLWdzdG0zdThwbGF5bGlzdC5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGhsc19sYS1tM3U4LlBsb0BhbV9fcXVvdGVACiAKIC5jLm86CiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCkBAIC05MDMsNDAgKzkxNSw0MCBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAogCi1saWJnc3RmcmFnbWVudGVkX2xhLW0zdTgubG86IG0zdTguYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0ZnJhZ21lbnRlZF9sYS1tM3U4LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLW0zdTguVHBvIC1jIC1vIGxpYmdzdGZyYWdtZW50ZWRfbGEtbTN1OC5sbyBgdGVzdCAtZiAnbTN1OC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BtM3U4LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtbTN1OC5UcG8gJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtbTN1OC5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdtM3U4LmMnIG9iamVjdD0nbGliZ3N0ZnJhZ21lbnRlZF9sYS1tM3U4LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RobHNfbGEtbTN1OC5sbzogbTN1OC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0aGxzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGhsc19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0aGxzX2xhLW0zdTgubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGhsc19sYS1tM3U4LlRwbyAtYyAtbyBsaWJnc3RobHNfbGEtbTN1OC5sbyBgdGVzdCAtZiAnbTN1OC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BtM3U4LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGhsc19sYS1tM3U4LlRwbyAkKERFUERJUikvbGliZ3N0aGxzX2xhLW0zdTguUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbTN1OC5jJyBvYmplY3Q9J2xpYmdzdGhsc19sYS1tM3U4LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RmcmFnbWVudGVkX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGZyYWdtZW50ZWRfbGEtbTN1OC5sbyBgdGVzdCAtZiAnbTN1OC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BtM3U4LmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RobHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0aGxzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGhsc19sYS1tM3U4LmxvIGB0ZXN0IC1mICdtM3U4LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYG0zdTguYwogCi1saWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc2RlbXV4LmxvOiBnc3RobHNkZW11eC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RmcmFnbWVudGVkX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc2RlbXV4LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc2RlbXV4LlRwbyAtYyAtbyBsaWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc2RlbXV4LmxvIGB0ZXN0IC1mICdnc3RobHNkZW11eC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RobHNkZW11eC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc2RlbXV4LlRwbyAkKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNkZW11eC5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RobHNkZW11eC5jJyBvYmplY3Q9J2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0aGxzZGVtdXgubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdGhsc19sYS1nc3RobHNkZW11eC5sbzogZ3N0aGxzZGVtdXguYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGhsc19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RobHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGhsc19sYS1nc3RobHNkZW11eC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0aGxzX2xhLWdzdGhsc2RlbXV4LlRwbyAtYyAtbyBsaWJnc3RobHNfbGEtZ3N0aGxzZGVtdXgubG8gYHRlc3QgLWYgJ2dzdGhsc2RlbXV4LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGhsc2RlbXV4LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RobHNkZW11eC5UcG8gJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RobHNkZW11eC5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RobHNkZW11eC5jJyBvYmplY3Q9J2xpYmdzdGhsc19sYS1nc3RobHNkZW11eC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc2RlbXV4LmxvIGB0ZXN0IC1mICdnc3RobHNkZW11eC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RobHNkZW11eC5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0aGxzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGhsc19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RobHNfbGEtZ3N0aGxzZGVtdXgubG8gYHRlc3QgLWYgJ2dzdGhsc2RlbXV4LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGhsc2RlbXV4LmMKIAotbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RmcmFnbWVudGVkcGx1Z2luLmxvOiBnc3RmcmFnbWVudGVkcGx1Z2luLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RmcmFnbWVudGVkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0ZnJhZ21lbnRlZHBsdWdpbi5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RmcmFnbWVudGVkcGx1Z2luLlRwbyAtYyAtbyBsaWJnc3RmcmFnbWVudGVkX2xhLWdzdGZyYWdtZW50ZWRwbHVnaW4ubG8gYHRlc3QgLWYgJ2dzdGZyYWdtZW50ZWRwbHVnaW4uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0ZnJhZ21lbnRlZHBsdWdpbi5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLWdzdGZyYWdtZW50ZWRwbHVnaW4uVHBvICQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLWdzdGZyYWdtZW50ZWRwbHVnaW4uUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0ZnJhZ21lbnRlZHBsdWdpbi5jJyBvYmplY3Q9J2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0ZnJhZ21lbnRlZHBsdWdpbi5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0aGxzX2xhLWdzdGhsc3BsdWdpbi5sbzogZ3N0aGxzcGx1Z2luLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RobHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0aGxzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RobHNfbGEtZ3N0aGxzcGx1Z2luLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RobHNfbGEtZ3N0aGxzcGx1Z2luLlRwbyAtYyAtbyBsaWJnc3RobHNfbGEtZ3N0aGxzcGx1Z2luLmxvIGB0ZXN0IC1mICdnc3RobHNwbHVnaW4uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0aGxzcGx1Z2luLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RobHNwbHVnaW4uVHBvICQoREVQRElSKS9saWJnc3RobHNfbGEtZ3N0aGxzcGx1Z2luLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGhsc3BsdWdpbi5jJyBvYmplY3Q9J2xpYmdzdGhsc19sYS1nc3RobHNwbHVnaW4ubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RmcmFnbWVudGVkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RmcmFnbWVudGVkcGx1Z2luLmxvIGB0ZXN0IC1mICdnc3RmcmFnbWVudGVkcGx1Z2luLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGZyYWdtZW50ZWRwbHVnaW4uYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGhsc19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RobHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0aGxzX2xhLWdzdGhsc3BsdWdpbi5sbyBgdGVzdCAtZiAnZ3N0aGxzcGx1Z2luLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGhsc3BsdWdpbi5jCiAKLWxpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0aGxzc2luay5sbzogZ3N0aGxzc2luay5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RmcmFnbWVudGVkX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc3NpbmsubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0aGxzc2luay5UcG8gLWMgLW8gbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNzaW5rLmxvIGB0ZXN0IC1mICdnc3RobHNzaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGhsc3NpbmsuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNzaW5rLlRwbyAkKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNzaW5rLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGhsc3NpbmsuYycgb2JqZWN0PSdsaWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc3NpbmsubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdGhsc19sYS1nc3RobHNzaW5rLmxvOiBnc3RobHNzaW5rLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RobHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0aGxzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RobHNfbGEtZ3N0aGxzc2luay5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0aGxzX2xhLWdzdGhsc3NpbmsuVHBvIC1jIC1vIGxpYmdzdGhsc19sYS1nc3RobHNzaW5rLmxvIGB0ZXN0IC1mICdnc3RobHNzaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGhsc3NpbmsuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0aGxzX2xhLWdzdGhsc3NpbmsuVHBvICQoREVQRElSKS9saWJnc3RobHNfbGEtZ3N0aGxzc2luay5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RobHNzaW5rLmMnIG9iamVjdD0nbGliZ3N0aGxzX2xhLWdzdGhsc3NpbmsubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RmcmFnbWVudGVkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNzaW5rLmxvIGB0ZXN0IC1mICdnc3RobHNzaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGhsc3NpbmsuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGhsc19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RobHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0aGxzX2xhLWdzdGhsc3NpbmsubG8gYHRlc3QgLWYgJ2dzdGhsc3NpbmsuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0aGxzc2luay5jCiAKLWxpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0bTN1OHBsYXlsaXN0LmxvOiBnc3RtM3U4cGxheWxpc3QuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RtM3U4cGxheWxpc3QubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0bTN1OHBsYXlsaXN0LlRwbyAtYyAtbyBsaWJnc3RmcmFnbWVudGVkX2xhLWdzdG0zdThwbGF5bGlzdC5sbyBgdGVzdCAtZiAnZ3N0bTN1OHBsYXlsaXN0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG0zdThwbGF5bGlzdC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLWdzdG0zdThwbGF5bGlzdC5UcG8gJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0bTN1OHBsYXlsaXN0LlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG0zdThwbGF5bGlzdC5jJyBvYmplY3Q9J2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0bTN1OHBsYXlsaXN0LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RobHNfbGEtZ3N0bTN1OHBsYXlsaXN0LmxvOiBnc3RtM3U4cGxheWxpc3QuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGhsc19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RobHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGhsc19sYS1nc3RtM3U4cGxheWxpc3QubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RtM3U4cGxheWxpc3QuVHBvIC1jIC1vIGxpYmdzdGhsc19sYS1nc3RtM3U4cGxheWxpc3QubG8gYHRlc3QgLWYgJ2dzdG0zdThwbGF5bGlzdC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RtM3U4cGxheWxpc3QuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0aGxzX2xhLWdzdG0zdThwbGF5bGlzdC5UcG8gJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RtM3U4cGxheWxpc3QuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0bTN1OHBsYXlsaXN0LmMnIG9iamVjdD0nbGliZ3N0aGxzX2xhLWdzdG0zdThwbGF5bGlzdC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RmcmFnbWVudGVkX2xhLWdzdG0zdThwbGF5bGlzdC5sbyBgdGVzdCAtZiAnZ3N0bTN1OHBsYXlsaXN0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG0zdThwbGF5bGlzdC5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0aGxzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGhsc19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RobHNfbGEtZ3N0bTN1OHBsYXlsaXN0LmxvIGB0ZXN0IC1mICdnc3RtM3U4cGxheWxpc3QuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0bTN1OHBsYXlsaXN0LmMKIAogbW9zdGx5Y2xlYW4tbGlidG9vbDoKIAktcm0gLWYgKi5sbwpkaWZmIC0tZ2l0IGEvZXh0L2hscy9nc3RmcmFnbWVudGVkLmggYi9leHQvaGxzL2dzdGZyYWdtZW50ZWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFjN2EyYi4uMDAwMDAwMAotLS0gYS9leHQvaGxzL2dzdGZyYWdtZW50ZWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLSNpZm5kZWYgX19HU1RfRlJBR01FTlRFRF9IX18KLSNkZWZpbmUgX19HU1RfRlJBR01FTlRFRF9IX18KLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQotR19CRUdJTl9ERUNMUwotCi1HU1RfREVCVUdfQ0FURUdPUllfRVhURVJOIChmcmFnbWVudGVkX2RlYnVnKTsKLQotI2RlZmluZSBMT0dfQ0FQUyhvYmosIGNhcHMpIEdTVF9ERUJVR19PQkpFQ1QgKG9iaiwgIiVzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgI2NhcHMsIGNhcHMpCi0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBfX0dTVF9GUkFHTUVOVEVEX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L2hscy9nc3RmcmFnbWVudGVkcGx1Z2luLmMgYi9leHQvaGxzL2dzdGZyYWdtZW50ZWRwbHVnaW4uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODlhNzc0MS4uMDAwMDAwMAotLS0gYS9leHQvaGxzL2dzdGZyYWdtZW50ZWRwbHVnaW4uYworKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jICBpbmNsdWRlIDxjb25maWcuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi0jaW5jbHVkZSAiZ3N0ZnJhZ21lbnRlZC5oIgotI2luY2x1ZGUgImdzdGhsc2RlbXV4LmgiCi0jaW5jbHVkZSAiZ3N0aGxzc2luay5oIgotCi1HU1RfREVCVUdfQ0FURUdPUlkgKGZyYWdtZW50ZWRfZGVidWcpOwotCi1zdGF0aWMgZ2Jvb2xlYW4KLWZyYWdtZW50ZWRfaW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQotewotICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZnJhZ21lbnRlZF9kZWJ1ZywgImZyYWdtZW50ZWQiLCAwLCAiZnJhZ21lbnRlZCIpOwotCi0gIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImhsc2RlbXV4IiwgR1NUX1JBTktfUFJJTUFSWSwKLSAgICAgICAgICBHU1RfVFlQRV9ITFNfREVNVVgpIHx8IEZBTFNFKQotICAgIHJldHVybiBGQUxTRTsKLQotICBpZiAoIWdzdF9obHNfc2lua19wbHVnaW5faW5pdCAocGx1Z2luKSkKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLUdTVF9QTFVHSU5fREVGSU5FIChHU1RfVkVSU0lPTl9NQUpPUiwKLSAgICBHU1RfVkVSU0lPTl9NSU5PUiwKLSAgICBmcmFnbWVudGVkLAotICAgICJGcmFnbWVudGVkIHN0cmVhbWluZyBwbHVnaW5zIiwKLSAgICBmcmFnbWVudGVkX2luaXQsIFZFUlNJT04sICJMR1BMIiwgUEFDS0FHRV9OQU1FLCAiaHR0cDovL3d3dy5nc3RyZWFtZXIub3JnLyIpCmRpZmYgLS1naXQgYS9leHQvaGxzL2dzdGhscy5oIGIvZXh0L2hscy9nc3RobHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODA2ZjRmCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hscy9nc3RobHMuaApAQCAtMCwwICsxLDEyIEBACisjaWZuZGVmIF9fR1NUX0hMU19IX18KKyNkZWZpbmUgX19HU1RfSExTX0hfXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorCitHX0JFR0lOX0RFQ0xTCisKK0dTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4gKGhsc19kZWJ1Zyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9ITFNfSF9fICovCmRpZmYgLS1naXQgYS9leHQvaGxzL2dzdGhsc2RlbXV4LmMgYi9leHQvaGxzL2dzdGhsc2RlbXV4LmMKaW5kZXggMWMwNWZhOC4uY2Y1MWQ5OSAxMDA2NDQKLS0tIGEvZXh0L2hscy9nc3RobHNkZW11eC5jCisrKyBiL2V4dC9obHMvZ3N0aGxzZGVtdXguYwpAQCAtNTcsMjIgKzU3LDggQEAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9obHNfZGVtdXhfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2hsc19kZW11eF9kZWJ1ZwogCi1lbnVtCi17Ci0gIFBST1BfMCwKLQotICBQUk9QX0ZSQUdNRU5UU19DQUNIRSwKLSAgUFJPUF9MQVNUCi19OwotCi0jZGVmaW5lIERFRkFVTFRfRlJBR01FTlRTX0NBQ0hFIDEKLQogLyogR09iamVjdCAqLwotc3RhdGljIHZvaWQgZ3N0X2hsc19kZW11eF9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0gICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci1zdGF0aWMgdm9pZCBnc3RfaGxzX2RlbXV4X2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLXN0YXRpYyB2b2lkIGdzdF9obHNfZGVtdXhfZGlzcG9zZSAoR09iamVjdCAqIG9iaik7CitzdGF0aWMgdm9pZCBnc3RfaGxzX2RlbXV4X2ZpbmFsaXplIChHT2JqZWN0ICogb2JqKTsKIAogLyogR3N0RWxlbWVudCAqLwogc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCkBAIC04MSw4ICs2Nyw2IEBACiAvKiBHc3RITFNEZW11eCAqLwogc3RhdGljIGdib29sZWFuIGdzdF9obHNfZGVtdXhfdXBkYXRlX3BsYXlsaXN0IChHc3RITFNEZW11eCAqIGRlbXV4LAogICAgIGdib29sZWFuIHVwZGF0ZSwgR0Vycm9yICoqIGVycik7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2hsc19kZW11eF9zZXRfbG9jYXRpb24gKEdzdEhMU0RlbXV4ICogZGVtdXgsCi0gICAgY29uc3QgZ2NoYXIgKiB1cmksIGNvbnN0IGdjaGFyICogYmFzZV91cmkpOwogc3RhdGljIGdjaGFyICpnc3RfaGxzX3NyY19idWZfdG9fdXRmOF9wbGF5bGlzdCAoR3N0QnVmZmVyICogYnVmKTsKIAogc3RhdGljIGdib29sZWFuIGdzdF9obHNfZGVtdXhfY2hhbmdlX3BsYXlsaXN0IChHc3RITFNEZW11eCAqIGRlbXV4LApAQCAtMTI1LDE0ICsxMDksMTQgQEAKIEdfREVGSU5FX1RZUEUgKEdzdEhMU0RlbXV4LCBnc3RfaGxzX2RlbXV4LCBHU1RfVFlQRV9BREFQVElWRV9ERU1VWCk7CiAKIHN0YXRpYyB2b2lkCi1nc3RfaGxzX2RlbXV4X2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmopCitnc3RfaGxzX2RlbXV4X2ZpbmFsaXplIChHT2JqZWN0ICogb2JqKQogewogICBHc3RITFNEZW11eCAqZGVtdXggPSBHU1RfSExTX0RFTVVYIChvYmopOwogCiAgIGdzdF9obHNfZGVtdXhfcmVzZXQgKEdTVF9BREFQVElWRV9ERU1VWF9DQVNUIChkZW11eCkpOwogICBnc3RfbTN1OF9jbGllbnRfZnJlZSAoZGVtdXgtPmNsaWVudCk7CiAKLSAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmRpc3Bvc2UgKG9iaik7CisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE0NiwxOCArMTMwLDcgQEAKICAgZWxlbWVudF9jbGFzcyA9IChHc3RFbGVtZW50Q2xhc3MgKikga2xhc3M7CiAgIGFkYXB0aXZlZGVtdXhfY2xhc3MgPSAoR3N0QWRhcHRpdmVEZW11eENsYXNzICopIGtsYXNzOwogCi0gIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9obHNfZGVtdXhfc2V0X3Byb3BlcnR5OwotICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfaGxzX2RlbXV4X2dldF9wcm9wZXJ0eTsKLSAgZ29iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IGdzdF9obHNfZGVtdXhfZGlzcG9zZTsKLQotI2lmbmRlZiBHU1RfUkVNT1ZFX0RFUFJFQ0FURUQKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9GUkFHTUVOVFNfQ0FDSEUsCi0gICAgICBnX3BhcmFtX3NwZWNfdWludCAoImZyYWdtZW50cy1jYWNoZSIsICJGcmFnbWVudHMgY2FjaGUiLAotICAgICAgICAgICJOdW1iZXIgb2YgZnJhZ21lbnRzIG5lZWRlZCB0byBiZSBjYWNoZWQgdG8gc3RhcnQgcGxheWluZyAiCi0gICAgICAgICAgIihERVBSRUNBVEVEOiBIYXMgbm8gZWZmZWN0IHNpbmNlIDEuMy4xKSIsCi0gICAgICAgICAgMSwgR19NQVhVSU5ULCBERUZBVUxUX0ZSQUdNRU5UU19DQUNIRSwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfCBHX1BBUkFNX0RFUFJFQ0FURUQpKTsKLSNlbmRpZgorICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9obHNfZGVtdXhfZmluYWxpemU7CiAKICAgZWxlbWVudF9jbGFzcy0+Y2hhbmdlX3N0YXRlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9obHNfZGVtdXhfY2hhbmdlX3N0YXRlKTsKIApAQCAtMjA0LDMzICsxNzcsNiBAQAogICBkZW11eC0+ZG9fdHlwZWZpbmQgPSBUUlVFOwogfQogCi1zdGF0aWMgdm9pZAotZ3N0X2hsc19kZW11eF9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0gICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLXsKLSAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX0ZSQUdNRU5UU19DQUNIRToKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKLWdzdF9obHNfZGVtdXhfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwKLSAgICBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9GUkFHTUVOVFNfQ0FDSEU6Ci0gICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgMSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgogZ3N0X2hsc19kZW11eF9jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQogewpAQCAtMjYxLDEzICsyMDcsMTAgQEAKIGdzdF9obHNfZGVtdXhfY3JlYXRlX3BhZCAoR3N0SExTRGVtdXggKiBobHNkZW11eCkKIHsKICAgZ2NoYXIgKm5hbWU7Ci0gIEdzdFBhZFRlbXBsYXRlICp0bXBsOwogICBHc3RQYWQgKnBhZDsKIAogICBuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgic3JjXyV1IiwgaGxzZGVtdXgtPnNyY3BhZF9jb3VudGVyKyspOwotICB0bXBsID0gZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc3JjdGVtcGxhdGUpOwotICBwYWQgPSBnc3RfZ2hvc3RfcGFkX25ld19ub190YXJnZXRfZnJvbV90ZW1wbGF0ZSAobmFtZSwgdG1wbCk7Ci0gIGdzdF9vYmplY3RfdW5yZWYgKHRtcGwpOworICBwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNyY3RlbXBsYXRlLCBuYW1lKTsKICAgZ19mcmVlIChuYW1lKTsKIAogICByZXR1cm4gcGFkOwpAQCAtMzAxLDYgKzI0NCw4IEBACiAgIGdpbnQ2NCBjdXJyZW50X3NlcXVlbmNlOwogICBHc3RNM1U4TWVkaWFGaWxlICpmaWxlOwogICBndWludDY0IGJpdHJhdGU7CisgIGdib29sZWFuIHNuYXBfYmVmb3JlLCBzbmFwX2FmdGVyLCBzbmFwX25lYXJlc3QsIGtleXVuaXQ7CisgIGdib29sZWFuIHJldmVyc2U7CiAKICAgZ3N0X2V2ZW50X3BhcnNlX3NlZWsgKHNlZWssICZyYXRlLCAmZm9ybWF0LCAmZmxhZ3MsICZzdGFydF90eXBlLCAmc3RhcnQsCiAgICAgICAmc3RvcF90eXBlLCAmc3RvcCk7CkBAIC0zNTcsMTQgKzMwMiwzNyBAQAogICBmaWxlID0gR1NUX00zVThfTUVESUFfRklMRSAoaGxzZGVtdXgtPmNsaWVudC0+Y3VycmVudC0+ZmlsZXMtPmRhdGEpOwogICBjdXJyZW50X3NlcXVlbmNlID0gZmlsZS0+c2VxdWVuY2U7CiAgIGN1cnJlbnRfcG9zID0gMDsKLSAgdGFyZ2V0X3BvcyA9IHJhdGUgPiAwID8gc3RhcnQgOiBzdG9wOworICByZXZlcnNlID0gcmF0ZSA8IDA7CisgIHRhcmdldF9wb3MgPSByZXZlcnNlID8gc3RvcCA6IHN0YXJ0OworCisgIC8qIFNuYXAgdG8gc2VnbWVudCBib3VuZGFyeS4gSW1wcm92ZXMgc2VlayBwZXJmb3JtYW5jZSBvbiBzbG93IG1hY2hpbmVzLiAqLworICBrZXl1bml0ID0gISAhKGZsYWdzICYgR1NUX1NFRUtfRkxBR19LRVlfVU5JVCk7CisgIHNuYXBfbmVhcmVzdCA9CisgICAgICAoZmxhZ3MgJiBHU1RfU0VFS19GTEFHX1NOQVBfTkVBUkVTVCkgPT0gR1NUX1NFRUtfRkxBR19TTkFQX05FQVJFU1Q7CisgIHNuYXBfYmVmb3JlID0gISAhKGZsYWdzICYgR1NUX1NFRUtfRkxBR19TTkFQX0JFRk9SRSk7CisgIHNuYXBfYWZ0ZXIgPSAhICEoZmxhZ3MgJiBHU1RfU0VFS19GTEFHX1NOQVBfQUZURVIpOworCiAgIC8qIEZJWE1FOiBIZXJlIHdlIG5lZWQgcHJvcGVyIGRpc2NvbnQgaGFuZGxpbmcgKi8KICAgZm9yICh3YWxrID0gaGxzZGVtdXgtPmNsaWVudC0+Y3VycmVudC0+ZmlsZXM7IHdhbGs7IHdhbGsgPSB3YWxrLT5uZXh0KSB7CiAgICAgZmlsZSA9IHdhbGstPmRhdGE7CiAKICAgICBjdXJyZW50X3NlcXVlbmNlID0gZmlsZS0+c2VxdWVuY2U7CiAgICAgY3VycmVudF9maWxlID0gd2FsazsKLSAgICBpZiAoY3VycmVudF9wb3MgPD0gdGFyZ2V0X3BvcyAmJiB0YXJnZXRfcG9zIDwgY3VycmVudF9wb3MgKyBmaWxlLT5kdXJhdGlvbikgeworICAgIGlmICgoIXJldmVyc2UgJiYgc25hcF9hZnRlcikgfHwgc25hcF9uZWFyZXN0KSB7CisgICAgICBpZiAoY3VycmVudF9wb3MgPj0gdGFyZ2V0X3BvcykKKyAgICAgICAgYnJlYWs7CisgICAgICBpZiAoc25hcF9uZWFyZXN0ICYmIHRhcmdldF9wb3MgLSBjdXJyZW50X3BvcyA8IGZpbGUtPmR1cmF0aW9uIC8gMikKKyAgICAgICAgYnJlYWs7CisgICAgfSBlbHNlIGlmIChyZXZlcnNlICYmIHNuYXBfYWZ0ZXIpIHsKKyAgICAgIC8qIGNoZWNrIGlmIHRoZSBuZXh0IGZyYWdtZW50IGlzIG91ciB0YXJnZXQsIGluIHRoaXMgY2FzZSB3ZSB3YW50IHRvCisgICAgICAgKiBzdGFydCBmcm9tIHRoZSBwcmV2aW91cyBmcmFnbWVudCAqLworICAgICAgR3N0Q2xvY2tUaW1lIG5leHRfcG9zID0gY3VycmVudF9wb3MgKyBmaWxlLT5kdXJhdGlvbjsKKworICAgICAgaWYgKG5leHRfcG9zIDw9IHRhcmdldF9wb3MgJiYgdGFyZ2V0X3BvcyA8IG5leHRfcG9zICsgZmlsZS0+ZHVyYXRpb24pIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfSBlbHNlIGlmIChjdXJyZW50X3BvcyA8PSB0YXJnZXRfcG9zCisgICAgICAgICYmIHRhcmdldF9wb3MgPCBjdXJyZW50X3BvcyArIGZpbGUtPmR1cmF0aW9uKSB7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgY3VycmVudF9wb3MgKz0gZmlsZS0+ZHVyYXRpb247CkBAIC0zODMsNiArMzUxLDE5IEBACiAgIGhsc2RlbXV4LT5jbGllbnQtPnNlcXVlbmNlX3Bvc2l0aW9uID0gY3VycmVudF9wb3M7CiAgIEdTVF9NM1U4X0NMSUVOVF9VTkxPQ0sgKGhsc2RlbXV4LT5jbGllbnQpOwogCisgIC8qIFBsYXkgZnJvbSB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHNlbGVjdGVkIHNlZ21lbnQgKi8KKyAgaWYgKHJldmVyc2UgJiYgKHNuYXBfYmVmb3JlIHx8IHNuYXBfYWZ0ZXIgfHwgc25hcF9uZWFyZXN0KSkKKyAgICBjdXJyZW50X3BvcyArPSBmaWxlLT5kdXJhdGlvbjsKKworICBpZiAoa2V5dW5pdCB8fCBzbmFwX2JlZm9yZSB8fCBzbmFwX2FmdGVyIHx8IHNuYXBfbmVhcmVzdCkgeworICAgIGlmICghcmV2ZXJzZSkKKyAgICAgIGdzdF9zZWdtZW50X2RvX3NlZWsgKCZkZW11eC0+c2VnbWVudCwgcmF0ZSwgZm9ybWF0LCBmbGFncywgc3RhcnRfdHlwZSwKKyAgICAgICAgICBjdXJyZW50X3Bvcywgc3RvcF90eXBlLCBzdG9wLCBOVUxMKTsKKyAgICBlbHNlCisgICAgICBnc3Rfc2VnbWVudF9kb19zZWVrICgmZGVtdXgtPnNlZ21lbnQsIHJhdGUsIGZvcm1hdCwgZmxhZ3MsIHN0YXJ0X3R5cGUsCisgICAgICAgICAgc3RhcnQsIHN0b3BfdHlwZSwgY3VycmVudF9wb3MsIE5VTEwpOworICB9CisKICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTQxNiw4ICszOTcsMTQgQEAKICAgR3N0SExTRGVtdXggKmhsc2RlbXV4ID0gR1NUX0hMU19ERU1VWF9DQVNUIChkZW11eCk7CiAgIGdjaGFyICpwbGF5bGlzdCA9IE5VTEw7CiAKLSAgZ3N0X2hsc19kZW11eF9zZXRfbG9jYXRpb24gKGhsc2RlbXV4LCBkZW11eC0+bWFuaWZlc3RfdXJpLAotICAgICAgZGVtdXgtPm1hbmlmZXN0X2Jhc2VfdXJpKTsKKyAgaWYgKGhsc2RlbXV4LT5jbGllbnQpCisgICAgZ3N0X20zdThfY2xpZW50X2ZyZWUgKGhsc2RlbXV4LT5jbGllbnQpOworCisgIGhsc2RlbXV4LT5jbGllbnQgPQorICAgICAgZ3N0X20zdThfY2xpZW50X25ldyAoZGVtdXgtPm1hbmlmZXN0X3VyaSwgZGVtdXgtPm1hbmlmZXN0X2Jhc2VfdXJpKTsKKworICBHU1RfSU5GT19PQkpFQ1QgKGRlbXV4LCAiQ2hhbmdlZCBsb2NhdGlvbjogJXMgKGJhc2UgdXJpOiAlcykiLAorICAgICAgZGVtdXgtPm1hbmlmZXN0X3VyaSwgR1NUX1NUUl9OVUxMIChkZW11eC0+bWFuaWZlc3RfYmFzZV91cmkpKTsKIAogICBwbGF5bGlzdCA9IGdzdF9obHNfc3JjX2J1Zl90b191dGY4X3BsYXlsaXN0IChidWYpOwogICBpZiAocGxheWxpc3QgPT0gTlVMTCkgewpAQCAtNDQ0LDYgKzQzMSw5IEBACiAgICAgfSBlbHNlIHsKICAgICAgIEdMaXN0ICp0bXAgPSBnc3RfbTN1OF9jbGllbnRfZ2V0X3BsYXlsaXN0X2Zvcl9iaXRyYXRlIChobHNkZW11eC0+Y2xpZW50LAogICAgICAgICAgIGRlbXV4LT5jb25uZWN0aW9uX3NwZWVkKTsKKyAgICAgIEdTVF9NM1U4X0NMSUVOVF9MT0NLIChobHNkZW11eC0+Y2xpZW50KTsKKyAgICAgIGhsc2RlbXV4LT5jbGllbnQtPm1haW4tPmN1cnJlbnRfdmFyaWFudCA9IHRtcDsKKyAgICAgIEdTVF9NM1U4X0NMSUVOVF9VTkxPQ0sgKGhsc2RlbXV4LT5jbGllbnQpOwogCiAgICAgICBjaGlsZCA9IEdTVF9NM1U4ICh0bXAtPmRhdGEpOwogICAgIH0KQEAgLTUyNSw5ICs1MTUsMTIgQEAKICAgcmV0dXJuIFRSVUU7CiAKIGtleV9mYWlsZWQ6Ci0gIC8qIFRPRE8gUmFpc2UgdGhpcyBlcnJvciB0byB0aGUgdXNlciAqLwotICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LCAiRmFpbGVkIHRvIGRlY3J5cHQgZGF0YSIpOwotICByZXR1cm4gRkFMU0U7CisgIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZGVtdXgsIFNUUkVBTSwgREVNVVgsCisgICAgICAgICgiQ291bGRuJ3QgcmV0cmlldmUga2V5IGZvciBkZWNyeXB0aW9uIiksIChOVUxMKSk7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwgIkZhaWxlZCB0byBkZWNyeXB0IGRhdGEiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KIH0KIAogc3RhdGljIEdzdEZsb3dSZXR1cm4KQEAgLTcxNSwyMyArNzA4LDI1IEBACiAgICAgcmV0dXJuIEdTVF9GTE9XX0VPUzsKICAgfQogCisgIGlmIChzdHJlYW0tPmRpc2NvbnQpCisgICAgZGlzY29udCA9IFRSVUU7CisKICAgLyogc2V0IHVwIG91ciBzb3VyY2UgZm9yIGRvd25sb2FkICovCi0gIGlmIChobHNkZW11eC0+cmVzZXRfcHRzIHx8IGRpc2NvbnQpIHsKKyAgaWYgKGhsc2RlbXV4LT5yZXNldF9wdHMgfHwgZGlzY29udCB8fCBzdHJlYW0tPmRlbXV4LT5zZWdtZW50LnJhdGUgPCAwLjApIHsKICAgICBzdHJlYW0tPmZyYWdtZW50LnRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKICAgfSBlbHNlIHsKICAgICBzdHJlYW0tPmZyYWdtZW50LnRpbWVzdGFtcCA9IEdTVF9DTE9DS19USU1FX05PTkU7CiAgIH0KIAotICBpZiAoaGxzZGVtdXgtPmN1cnJlbnRfa2V5KQotICAgIGdfZnJlZSAoaGxzZGVtdXgtPmN1cnJlbnRfa2V5KTsKKyAgZ19mcmVlIChobHNkZW11eC0+Y3VycmVudF9rZXkpOwogICBobHNkZW11eC0+Y3VycmVudF9rZXkgPSBrZXk7Ci0gIGlmIChobHNkZW11eC0+Y3VycmVudF9pdikKLSAgICBnX2ZyZWUgKGhsc2RlbXV4LT5jdXJyZW50X2l2KTsKKyAgZ19mcmVlIChobHNkZW11eC0+Y3VycmVudF9pdik7CiAgIGhsc2RlbXV4LT5jdXJyZW50X2l2ID0gaXY7CiAgIGdfZnJlZSAoc3RyZWFtLT5mcmFnbWVudC51cmkpOwogICBzdHJlYW0tPmZyYWdtZW50LnVyaSA9IG5leHRfZnJhZ21lbnRfdXJpOwogICBzdHJlYW0tPmZyYWdtZW50LnJhbmdlX3N0YXJ0ID0gcmFuZ2Vfc3RhcnQ7CiAgIHN0cmVhbS0+ZnJhZ21lbnQucmFuZ2VfZW5kID0gcmFuZ2VfZW5kOworICBzdHJlYW0tPmZyYWdtZW50LmR1cmF0aW9uID0gZHVyYXRpb247CiAgIGlmIChkaXNjb250KQogICAgIHN0cmVhbS0+ZGlzY29udCA9IGRpc2NvbnQ7CiAKQEAgLTgwMiwxOCArNzk3LDYgQEAKICAgZ3N0X2hsc19kZW11eF9kZWNyeXB0X2VuZCAoZGVtdXgpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9obHNfZGVtdXhfc2V0X2xvY2F0aW9uIChHc3RITFNEZW11eCAqIGRlbXV4LCBjb25zdCBnY2hhciAqIHVyaSwKLSAgICBjb25zdCBnY2hhciAqIGJhc2VfdXJpKQotewotICBpZiAoZGVtdXgtPmNsaWVudCkKLSAgICBnc3RfbTN1OF9jbGllbnRfZnJlZSAoZGVtdXgtPmNsaWVudCk7Ci0gIGRlbXV4LT5jbGllbnQgPSBnc3RfbTN1OF9jbGllbnRfbmV3ICh1cmksIGJhc2VfdXJpKTsKLSAgR1NUX0lORk9fT0JKRUNUIChkZW11eCwgIkNoYW5nZWQgbG9jYXRpb246ICVzIChiYXNlIHVyaTogJXMpIiwgdXJpLAotICAgICAgR1NUX1NUUl9OVUxMIChiYXNlX3VyaSkpOwotICByZXR1cm4gVFJVRTsKLX0KLQogc3RhdGljIGdjaGFyICoKIGdzdF9obHNfc3JjX2J1Zl90b191dGY4X3BsYXlsaXN0IChHc3RCdWZmZXIgKiBidWYpCiB7CkBAIC04NTgsNjMgKzg0MSw2NCBAQAogICAgICAgVFJVRSwgVFJVRSwgVFJVRSwgZXJyKTsKICAgZ19mcmVlIChtYWluX3VyaSk7CiAgIGlmIChkb3dubG9hZCA9PSBOVUxMKSB7Ci0gICAgaWYgKCFhZGFwdGl2ZV9kZW11eC0+Y2FuY2VsbGVkICYmIHVwZGF0ZSAmJiAhbWFpbl9jaGVja2VkCi0gICAgICAgICYmIGdzdF9tM3U4X2NsaWVudF9oYXNfdmFyaWFudF9wbGF5bGlzdCAoZGVtdXgtPmNsaWVudCkKLSAgICAgICAgJiYgZ3N0X20zdThfY2xpZW50X2hhc19tYWluIChkZW11eC0+Y2xpZW50KSkgewotICAgICAgR0Vycm9yICplcnIyID0gTlVMTDsKLSAgICAgIG1haW5fdXJpID0gZ3N0X20zdThfY2xpZW50X2dldF91cmkgKGRlbXV4LT5jbGllbnQpOwotICAgICAgR1NUX0lORk9fT0JKRUNUIChkZW11eCwKLSAgICAgICAgICAiVXBkYXRpbmcgcGxheWxpc3QgJXMgZmFpbGVkLCBhdHRlbXB0IHRvIHJlZnJlc2ggdmFyaWFudCBwbGF5bGlzdCAlcyIsCi0gICAgICAgICAgdXJpLCBtYWluX3VyaSk7Ci0gICAgICBkb3dubG9hZCA9Ci0gICAgICAgICAgZ3N0X3VyaV9kb3dubG9hZGVyX2ZldGNoX3VyaSAoYWRhcHRpdmVfZGVtdXgtPmRvd25sb2FkZXIsCi0gICAgICAgICAgbWFpbl91cmksIE5VTEwsIFRSVUUsIFRSVUUsIFRSVUUsICZlcnIyKTsKLSAgICAgIGdfZnJlZSAobWFpbl91cmkpOwotICAgICAgZ19jbGVhcl9lcnJvciAoJmVycjIpOwotICAgICAgaWYgKGRvd25sb2FkICE9IE5VTEwpIHsKLSAgICAgICAgZ2NoYXIgKmJhc2VfdXJpOworICAgIGdjaGFyICpiYXNlX3VyaTsKIAotICAgICAgICBidWYgPSBnc3RfZnJhZ21lbnRfZ2V0X2J1ZmZlciAoZG93bmxvYWQpOwotICAgICAgICBwbGF5bGlzdCA9IGdzdF9obHNfc3JjX2J1Zl90b191dGY4X3BsYXlsaXN0IChidWYpOwotICAgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwotCi0gICAgICAgIGlmIChwbGF5bGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwKLSAgICAgICAgICAgICAgIkZhaWxlZCB0byB2YWxpZGF0ZSB2YXJpYW50IHBsYXlsaXN0IGVuY29kaW5nIik7Ci0gICAgICAgICAgZ19mcmVlICh1cmkpOwotICAgICAgICAgIGdfb2JqZWN0X3VucmVmIChkb3dubG9hZCk7Ci0gICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICB9Ci0KLSAgICAgICAgZ19mcmVlICh1cmkpOwotICAgICAgICBpZiAoZG93bmxvYWQtPnJlZGlyZWN0X3Blcm1hbmVudCAmJiBkb3dubG9hZC0+cmVkaXJlY3RfdXJpKSB7Ci0gICAgICAgICAgdXJpID0gZG93bmxvYWQtPnJlZGlyZWN0X3VyaTsKLSAgICAgICAgICBiYXNlX3VyaSA9IE5VTEw7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdXJpID0gZG93bmxvYWQtPnVyaTsKLSAgICAgICAgICBiYXNlX3VyaSA9IGRvd25sb2FkLT5yZWRpcmVjdF91cmk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWdzdF9tM3U4X2NsaWVudF91cGRhdGVfdmFyaWFudF9wbGF5bGlzdCAoZGVtdXgtPmNsaWVudCwgcGxheWxpc3QsCi0gICAgICAgICAgICAgICAgdXJpLCBiYXNlX3VyaSkpIHsKLSAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LCAiRmFpbGVkIHRvIHVwZGF0ZSB0aGUgdmFyaWFudCBwbGF5bGlzdCIpOwotICAgICAgICAgIGdfb2JqZWN0X3VucmVmIChkb3dubG9hZCk7Ci0gICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICB9Ci0KLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKGRvd25sb2FkKTsKLQotICAgICAgICBnX2NsZWFyX2Vycm9yIChlcnIpOwotICAgICAgICBtYWluX2NoZWNrZWQgPSBUUlVFOwotICAgICAgICBnb3RvIHJldHJ5OwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZ19mcmVlICh1cmkpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoIXVwZGF0ZSB8fCBtYWluX2NoZWNrZWQKKyAgICAgICAgfHwgIWdzdF9tM3U4X2NsaWVudF9oYXNfdmFyaWFudF9wbGF5bGlzdCAoZGVtdXgtPmNsaWVudCkpIHsKICAgICAgIGdfZnJlZSAodXJpKTsKICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CisKKyAgICBnX2NsZWFyX2Vycm9yIChlcnIpOworICAgIG1haW5fdXJpID0gZ3N0X20zdThfY2xpZW50X2dldF91cmkgKGRlbXV4LT5jbGllbnQpOworICAgIEdTVF9JTkZPX09CSkVDVCAoZGVtdXgsCisgICAgICAgICJVcGRhdGluZyBwbGF5bGlzdCAlcyBmYWlsZWQsIGF0dGVtcHQgdG8gcmVmcmVzaCB2YXJpYW50IHBsYXlsaXN0ICVzIiwKKyAgICAgICAgdXJpLCBtYWluX3VyaSk7CisgICAgZG93bmxvYWQgPQorICAgICAgICBnc3RfdXJpX2Rvd25sb2FkZXJfZmV0Y2hfdXJpIChhZGFwdGl2ZV9kZW11eC0+ZG93bmxvYWRlciwKKyAgICAgICAgbWFpbl91cmksIE5VTEwsIFRSVUUsIFRSVUUsIFRSVUUsIGVycik7CisgICAgZ19mcmVlIChtYWluX3VyaSk7CisgICAgaWYgKGRvd25sb2FkID09IE5VTEwpIHsKKyAgICAgIGdfZnJlZSAodXJpKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBidWYgPSBnc3RfZnJhZ21lbnRfZ2V0X2J1ZmZlciAoZG93bmxvYWQpOworICAgIHBsYXlsaXN0ID0gZ3N0X2hsc19zcmNfYnVmX3RvX3V0ZjhfcGxheWxpc3QgKGJ1Zik7CisgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKworICAgIGlmIChwbGF5bGlzdCA9PSBOVUxMKSB7CisgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LAorICAgICAgICAgICJGYWlsZWQgdG8gdmFsaWRhdGUgdmFyaWFudCBwbGF5bGlzdCBlbmNvZGluZyIpOworICAgICAgZ19mcmVlICh1cmkpOworICAgICAgZ19vYmplY3RfdW5yZWYgKGRvd25sb2FkKTsKKyAgICAgIGdfc2V0X2Vycm9yIChlcnIsIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfV1JPTkdfVFlQRSwKKyAgICAgICAgICAiQ291bGRuJ3QgdmFsaWRhdGUgcGxheWxpc3QgZW5jb2RpbmciKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBnX2ZyZWUgKHVyaSk7CisgICAgaWYgKGRvd25sb2FkLT5yZWRpcmVjdF9wZXJtYW5lbnQgJiYgZG93bmxvYWQtPnJlZGlyZWN0X3VyaSkgeworICAgICAgdXJpID0gZG93bmxvYWQtPnJlZGlyZWN0X3VyaTsKKyAgICAgIGJhc2VfdXJpID0gTlVMTDsKKyAgICB9IGVsc2UgeworICAgICAgdXJpID0gZG93bmxvYWQtPnVyaTsKKyAgICAgIGJhc2VfdXJpID0gZG93bmxvYWQtPnJlZGlyZWN0X3VyaTsKKyAgICB9CisKKyAgICBpZiAoIWdzdF9tM3U4X2NsaWVudF91cGRhdGVfdmFyaWFudF9wbGF5bGlzdCAoZGVtdXgtPmNsaWVudCwgcGxheWxpc3QsCisgICAgICAgICAgICB1cmksIGJhc2VfdXJpKSkgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwgIkZhaWxlZCB0byB1cGRhdGUgdGhlIHZhcmlhbnQgcGxheWxpc3QiKTsKKyAgICAgIGdfb2JqZWN0X3VucmVmIChkb3dubG9hZCk7CisgICAgICBnX3NldF9lcnJvciAoZXJyLCBHU1RfU1RSRUFNX0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX0ZBSUxFRCwKKyAgICAgICAgICAiQ291bGRuJ3QgdXBkYXRlIHBsYXlsaXN0Iik7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgZ19vYmplY3RfdW5yZWYgKGRvd25sb2FkKTsKKworICAgIG1haW5fY2hlY2tlZCA9IFRSVUU7CisgICAgZ290byByZXRyeTsKICAgfQogICBnX2ZyZWUgKHVyaSk7CiAKQEAgLTEwMDAsNiArOTg0LDkgQEAKICAgICAgIHRhcmdldF9wb3MgPSBNQVggKHRhcmdldF9wb3MsIGRlbXV4LT5jbGllbnQtPnNlcXVlbmNlX3Bvc2l0aW9uKTsKICAgICB9CiAKKyAgICBHU1RfTE9HX09CSkVDVCAoZGVtdXgsICJMb29raW5nIGZvciBzZXF1ZW5jZSBwb3NpdGlvbiAlIgorICAgICAgICBHU1RfVElNRV9GT1JNQVQgIiBpbiB1cGRhdGVkIHBsYXlsaXN0IiwgR1NUX1RJTUVfQVJHUyAodGFyZ2V0X3BvcykpOworCiAgICAgY3VycmVudF9wb3MgPSAwOwogICAgIGZvciAod2FsayA9IGRlbXV4LT5jbGllbnQtPmN1cnJlbnQtPmZpbGVzOyB3YWxrOyB3YWxrID0gd2Fsay0+bmV4dCkgewogICAgICAgR3N0TTNVOE1lZGlhRmlsZSAqZmlsZSA9IHdhbGstPmRhdGE7CkBAIC0xMDU4LDkgKzEwNDUsOCBAQAogCiAgIEdTVF9JTkZPX09CSkVDVCAoZGVtdXgsICJDbGllbnQgd2FzIG9uICVkYnBzLCBtYXggYWxsb3dlZCBpcyAlZGJwcywgc3dpdGNoaW5nIgogICAgICAgIiB0byBiaXRyYXRlICVkYnBzIiwgb2xkX2JhbmR3aWR0aCwgbWF4X2JpdHJhdGUsIG5ld19iYW5kd2lkdGgpOwotICBzdHJlYW0tPmRpc2NvbnQgPSBUUlVFOwogCi0gIGlmIChnc3RfaGxzX2RlbXV4X3VwZGF0ZV9wbGF5bGlzdCAoZGVtdXgsIEZBTFNFLCBOVUxMKSkgeworICBpZiAoZ3N0X2hsc19kZW11eF91cGRhdGVfcGxheWxpc3QgKGRlbXV4LCBUUlVFLCBOVUxMKSkgewogICAgIGdjaGFyICp1cmk7CiAgICAgZ2NoYXIgKm1haW5fdXJpOwogICAgIHVyaSA9IGdzdF9tM3U4X2NsaWVudF9nZXRfY3VycmVudF91cmkgKGRlbXV4LT5jbGllbnQpOwpAQCAtMTA3NSw2ICsxMDYxLDcgQEAKICAgICBnX2ZyZWUgKG1haW5fdXJpKTsKICAgICBpZiAoY2hhbmdlZCkKICAgICAgICpjaGFuZ2VkID0gVFJVRTsKKyAgICBzdHJlYW0tPmRpc2NvbnQgPSBUUlVFOwogICB9IGVsc2UgewogICAgIEdMaXN0ICpmYWlsb3ZlciA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL2V4dC9obHMvZ3N0aGxzZGVtdXguaCBiL2V4dC9obHMvZ3N0aGxzZGVtdXguaAppbmRleCBkYWEzNjcwLi4xMTU0MjM2IDEwMDY0NAotLS0gYS9leHQvaGxzL2dzdGhsc2RlbXV4LmgKKysrIGIvZXh0L2hscy9nc3RobHNkZW11eC5oCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSAibTN1OC5oIgotI2luY2x1ZGUgImdzdGZyYWdtZW50ZWQuaCIKKyNpbmNsdWRlICJnc3RobHMuaCIKICNpbmNsdWRlIDxnc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4Lmg+CiAjaWYgZGVmaW5lZChIQVZFX09QRU5TU0wpCiAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KZGlmZiAtLWdpdCBhL2V4dC9obHMvZ3N0aGxzcGx1Z2luLmMgYi9leHQvaGxzL2dzdGhsc3BsdWdpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MmY1MTQKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvaGxzL2dzdGhsc3BsdWdpbi5jCkBAIC0wLDAgKzEsMzIgQEAKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjICBpbmNsdWRlIDxjb25maWcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorCisjaW5jbHVkZSAiZ3N0aGxzLmgiCisjaW5jbHVkZSAiZ3N0aGxzZGVtdXguaCIKKyNpbmNsdWRlICJnc3RobHNzaW5rLmgiCisKK0dTVF9ERUJVR19DQVRFR09SWSAoaGxzX2RlYnVnKTsKKworc3RhdGljIGdib29sZWFuCitobHNfaW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQoreworICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoaGxzX2RlYnVnLCAiaGxzIiwgMCwgIkhUVFAgTGl2ZSBTdHJlYW1pbmcgKEhMUykiKTsKKworICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJobHNkZW11eCIsIEdTVF9SQU5LX1BSSU1BUlksCisgICAgICAgICAgR1NUX1RZUEVfSExTX0RFTVVYKSB8fCBGQUxTRSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKCFnc3RfaGxzX3NpbmtfcGx1Z2luX2luaXQgKHBsdWdpbikpCisgICAgcmV0dXJuIEZBTFNFOworCisgIHJldHVybiBUUlVFOworfQorCitHU1RfUExVR0lOX0RFRklORSAoR1NUX1ZFUlNJT05fTUFKT1IsCisgICAgR1NUX1ZFUlNJT05fTUlOT1IsCisgICAgaGxzLAorICAgICJIVFRQIExpdmUgU3RyZWFtaW5nIChITFMpIiwKKyAgICBobHNfaW5pdCwgVkVSU0lPTiwgR1NUX0xJQ0VOU0UsIFBBQ0tBR0VfTkFNRSwgR1NUX1BBQ0tBR0VfT1JJR0lOKQpkaWZmIC0tZ2l0IGEvZXh0L2hscy9nc3RobHNzaW5rLmMgYi9leHQvaGxzL2dzdGhsc3NpbmsuYwppbmRleCBkZTVlODRjLi4wMzY3MWQwIDEwMDY0NAotLS0gYS9leHQvaGxzL2dzdGhsc3NpbmsuYworKysgYi9leHQvaGxzL2dzdGhsc3NpbmsuYwpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgImdzdGhsc3NpbmsuaCIKICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+Ci0jaW5jbHVkZSA8Z2lvL2dpby5oPgogI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAjaW5jbHVkZSA8bWVtb3J5Lmg+CiAKZGlmZiAtLWdpdCBhL2V4dC9obHMvZ3N0bTN1OHBsYXlsaXN0LmMgYi9leHQvaGxzL2dzdG0zdThwbGF5bGlzdC5jCmluZGV4IGYyYzU1NmIuLmM2MDA3MDIgMTAwNjQ0Ci0tLSBhL2V4dC9obHMvZ3N0bTN1OHBsYXlsaXN0LmMKKysrIGIvZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuYwpAQCAtMjEsMjAgKzIxLDEwIEBACiAKICNpbmNsdWRlIDxnbGliLmg+CiAKLSNpbmNsdWRlICJnc3RmcmFnbWVudGVkLmgiCisjaW5jbHVkZSAiZ3N0aGxzLmgiCiAjaW5jbHVkZSAiZ3N0bTN1OHBsYXlsaXN0LmgiCiAKLSNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGZyYWdtZW50ZWRfZGVidWcKLQotI2RlZmluZSBNM1U4X0hFQURFUl9UQUcgIiNFWFRNM1VcbiIKLSNkZWZpbmUgTTNVOF9WRVJTSU9OX1RBRyAiI0VYVC1YLVZFUlNJT046JWRcbiIKLSNkZWZpbmUgTTNVOF9BTExPV19DQUNIRV9UQUcgIiNFWFQtWC1BTExPVy1DQUNIRTolc1xuIgotI2RlZmluZSBNM1U4X1RBUkdFVERVUkFUSU9OX1RBRyAiI0VYVC1YLVRBUkdFVERVUkFUSU9OOiVkXG4iCi0jZGVmaW5lIE0zVThfTUVESUFfU0VRVUVOQ0VfVEFHICIjRVhULVgtTUVESUEtU0VRVUVOQ0U6JWRcbiIKLSNkZWZpbmUgTTNVOF9ESVNDT05USU5VSVRZX1RBRyAiI0VYVC1YLURJU0NPTlRJTlVJVFlcbiIKLSNkZWZpbmUgTTNVOF9JTlRfSU5GX1RBRyAiI0VYVElORjolZCwlc1xuJXNcbiIKLSNkZWZpbmUgTTNVOF9GTE9BVF9JTkZfVEFHICIjRVhUSU5GOiVzLCVzXG4lc1xuIgotI2RlZmluZSBNM1U4X0VORExJU1RfVEFHICIjRVhULVgtRU5ETElTVCIKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGhsc19kZWJ1ZwogCiBlbnVtCiB7CkBAIC00Miw2ICszMiwxNiBAQAogICBHU1RfTTNVOF9QTEFZTElTVF9UWVBFX1ZPRCwKIH07CiAKK3R5cGVkZWYgc3RydWN0IF9Hc3RNM1U4RW50cnkgR3N0TTNVOEVudHJ5OworCitzdHJ1Y3QgX0dzdE0zVThFbnRyeQoreworICBnZmxvYXQgZHVyYXRpb247CisgIGdjaGFyICp0aXRsZTsKKyAgZ2NoYXIgKnVybDsKKyAgZ2Jvb2xlYW4gZGlzY29udGludW91czsKK307CisKIHN0YXRpYyBHc3RNM1U4RW50cnkgKgogZ3N0X20zdThfZW50cnlfbmV3IChjb25zdCBnY2hhciAqIHVybCwgY29uc3QgZ2NoYXIgKiB0aXRsZSwKICAgICBnZmxvYXQgZHVyYXRpb24sIGdib29sZWFuIGRpc2NvbnRpbnVvdXMpCkBAIC02OCwyNSArNjgsNiBAQAogICBnX2ZyZWUgKGVudHJ5KTsKIH0KIAotc3RhdGljIGdjaGFyICoKLWdzdF9tM3U4X2VudHJ5X3JlbmRlciAoR3N0TTNVOEVudHJ5ICogZW50cnksIGd1aW50IHZlcnNpb24pCi17Ci0gIGdjaGFyIGJ1ZltHX0FTQ0lJX0RUT1NUUl9CVUZfU0laRV07Ci0KLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGVudHJ5ICE9IE5VTEwsIE5VTEwpOwotCi0gIGlmICh2ZXJzaW9uIDwgMykKLSAgICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmICgiJXMiIE0zVThfSU5UX0lORl9UQUcsCi0gICAgICAgIGVudHJ5LT5kaXNjb250aW51b3VzID8gTTNVOF9ESVNDT05USU5VSVRZX1RBRyA6ICIiLAotICAgICAgICAoZ2ludCkgKChlbnRyeS0+ZHVyYXRpb24gKyA1MDAgKiBHU1RfTVNFQ09ORCkgLyBHU1RfU0VDT05EKSwKLSAgICAgICAgZW50cnktPnRpdGxlID8gZW50cnktPnRpdGxlIDogIiIsIGVudHJ5LT51cmwpOwotCi0gIHJldHVybiBnX3N0cmR1cF9wcmludGYgKCIlcyIgTTNVOF9GTE9BVF9JTkZfVEFHLAotICAgICAgZW50cnktPmRpc2NvbnRpbnVvdXMgPyBNM1U4X0RJU0NPTlRJTlVJVFlfVEFHIDogIiIsCi0gICAgICBnX2FzY2lpX2R0b3N0ciAoYnVmLCBzaXplb2YgKGJ1ZiksIChlbnRyeS0+ZHVyYXRpb24gLyBHU1RfU0VDT05EKSksCi0gICAgICBlbnRyeS0+dGl0bGUgPyBlbnRyeS0+dGl0bGUgOiAiIiwgZW50cnktPnVybCk7Ci19Ci0KIEdzdE0zVThQbGF5bGlzdCAqCiBnc3RfbTN1OF9wbGF5bGlzdF9uZXcgKGd1aW50IHZlcnNpb24sIGd1aW50IHdpbmRvd19zaXplLCBnYm9vbGVhbiBhbGxvd19jYWNoZSkKIHsKQEAgLTE0OCwxMiArMTI5LDEyIEBACiBzdGF0aWMgZ3VpbnQKIGdzdF9tM3U4X3BsYXlsaXN0X3RhcmdldF9kdXJhdGlvbiAoR3N0TTNVOFBsYXlsaXN0ICogcGxheWxpc3QpCiB7Ci0gIGdpbnQgaTsKLSAgR3N0TTNVOEVudHJ5ICplbnRyeTsKICAgZ3VpbnQ2NCB0YXJnZXRfZHVyYXRpb24gPSAwOworICBHTGlzdCAqbDsKIAotICBmb3IgKGkgPSAwOyBpIDwgcGxheWxpc3QtPmVudHJpZXMtPmxlbmd0aDsgaSsrKSB7Ci0gICAgZW50cnkgPSAoR3N0TTNVOEVudHJ5ICopIGdfcXVldWVfcGVla19udGggKHBsYXlsaXN0LT5lbnRyaWVzLCBpKTsKKyAgZm9yIChsID0gcGxheWxpc3QtPmVudHJpZXMtPmhlYWQ7IGwgIT0gTlVMTDsgbCA9IGwtPm5leHQpIHsKKyAgICBHc3RNM1U4RW50cnkgKmVudHJ5ID0gbC0+ZGF0YTsKKwogICAgIGlmIChlbnRyeS0+ZHVyYXRpb24gPiB0YXJnZXRfZHVyYXRpb24pCiAgICAgICB0YXJnZXRfZHVyYXRpb24gPSBlbnRyeS0+ZHVyYXRpb247CiAgIH0KQEAgLTE2MSw2NSArMTQyLDUyIEBACiAgIHJldHVybiAoZ3VpbnQpICgodGFyZ2V0X2R1cmF0aW9uICsgNTAwICogR1NUX01TRUNPTkQpIC8gR1NUX1NFQ09ORCk7CiB9CiAKLXN0YXRpYyB2b2lkCi1yZW5kZXJfZW50cnkgKEdzdE0zVThFbnRyeSAqIGVudHJ5LCBHc3RNM1U4UGxheWxpc3QgKiBwbGF5bGlzdCkKLXsKLSAgZ2NoYXIgKmVudHJ5X3N0cjsKLQotICBlbnRyeV9zdHIgPSBnc3RfbTN1OF9lbnRyeV9yZW5kZXIgKGVudHJ5LCBwbGF5bGlzdC0+dmVyc2lvbik7Ci0gIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHBsYXlsaXN0LT5wbGF5bGlzdF9zdHIsICIlcyIsIGVudHJ5X3N0cik7Ci0gIGdfZnJlZSAoZW50cnlfc3RyKTsKLX0KLQogZ2NoYXIgKgogZ3N0X20zdThfcGxheWxpc3RfcmVuZGVyIChHc3RNM1U4UGxheWxpc3QgKiBwbGF5bGlzdCkKIHsKLSAgZ2NoYXIgKnBsOworICBHU3RyaW5nICpwbGF5bGlzdF9zdHI7CisgIEdMaXN0ICpsOwogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChwbGF5bGlzdCAhPSBOVUxMLCBOVUxMKTsKIAotICBwbGF5bGlzdC0+cGxheWxpc3Rfc3RyID0gZ19zdHJpbmdfbmV3ICgiIik7CisgIHBsYXlsaXN0X3N0ciA9IGdfc3RyaW5nX25ldyAoIiNFWFRNM1VcbiIpOwogCi0gIC8qICNFWFRNM1UgKi8KLSAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3QtPnBsYXlsaXN0X3N0ciwgTTNVOF9IRUFERVJfVEFHKTsKLSAgLyogI0VYVC1YLVZFUlNJT04gKi8KLSAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3QtPnBsYXlsaXN0X3N0ciwgTTNVOF9WRVJTSU9OX1RBRywKKyAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3Rfc3RyLCAiI0VYVC1YLVZFUlNJT046JWRcbiIsCiAgICAgICBwbGF5bGlzdC0+dmVyc2lvbik7Ci0gIC8qICNFWFQtWC1BTExPV19DQUNIRSAqLwotICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChwbGF5bGlzdC0+cGxheWxpc3Rfc3RyLCBNM1U4X0FMTE9XX0NBQ0hFX1RBRywKKworICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChwbGF5bGlzdF9zdHIsICIjRVhULVgtQUxMT1ctQ0FDSEU6JXNcbiIsCiAgICAgICBwbGF5bGlzdC0+YWxsb3dfY2FjaGUgPyAiWUVTIiA6ICJOTyIpOwotICAvKiAjRVhULVgtTUVESUEtU0VRVUVOQ0UgKi8KLSAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3QtPnBsYXlsaXN0X3N0ciwgTTNVOF9NRURJQV9TRVFVRU5DRV9UQUcsCisKKyAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3Rfc3RyLCAiI0VYVC1YLU1FRElBLVNFUVVFTkNFOiVkXG4iLAogICAgICAgcGxheWxpc3QtPnNlcXVlbmNlX251bWJlciAtIHBsYXlsaXN0LT5lbnRyaWVzLT5sZW5ndGgpOwotICAvKiAjRVhULVgtVEFSR0VURFVSQVRJT04gKi8KLSAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3QtPnBsYXlsaXN0X3N0ciwgTTNVOF9UQVJHRVREVVJBVElPTl9UQUcsCisKKyAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3Rfc3RyLCAiI0VYVC1YLVRBUkdFVERVUkFUSU9OOiV1XG4iLAogICAgICAgZ3N0X20zdThfcGxheWxpc3RfdGFyZ2V0X2R1cmF0aW9uIChwbGF5bGlzdCkpOwotICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChwbGF5bGlzdC0+cGxheWxpc3Rfc3RyLCAiXG4iKTsKKyAgZ19zdHJpbmdfYXBwZW5kIChwbGF5bGlzdF9zdHIsICJcbiIpOwogCiAgIC8qIEVudHJpZXMgKi8KLSAgZ19xdWV1ZV9mb3JlYWNoIChwbGF5bGlzdC0+ZW50cmllcywgKEdGdW5jKSByZW5kZXJfZW50cnksIHBsYXlsaXN0KTsKKyAgZm9yIChsID0gcGxheWxpc3QtPmVudHJpZXMtPmhlYWQ7IGwgIT0gTlVMTDsgbCA9IGwtPm5leHQpIHsKKyAgICBnY2hhciBidWZbR19BU0NJSV9EVE9TVFJfQlVGX1NJWkVdOworICAgIEdzdE0zVThFbnRyeSAqZW50cnkgPSBsLT5kYXRhOworCisgICAgaWYgKGVudHJ5LT5kaXNjb250aW51b3VzKQorICAgICAgZ19zdHJpbmdfYXBwZW5kIChwbGF5bGlzdF9zdHIsICIjRVhULVgtRElTQ09OVElOVUlUWVxuIik7CisKKyAgICBpZiAocGxheWxpc3QtPnZlcnNpb24gPCAzKSB7CisgICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChwbGF5bGlzdF9zdHIsICIjRVhUSU5GOiVkLCVzXG4iLAorICAgICAgICAgIChnaW50KSAoKGVudHJ5LT5kdXJhdGlvbiArIDUwMCAqIEdTVF9NU0VDT05EKSAvIEdTVF9TRUNPTkQpLAorICAgICAgICAgIGVudHJ5LT50aXRsZSA/IGVudHJ5LT50aXRsZSA6ICIiKTsKKyAgICB9IGVsc2UgeworICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3Rfc3RyLCAiI0VYVElORjolcywlc1xuIiwKKyAgICAgICAgICBnX2FzY2lpX2R0b3N0ciAoYnVmLCBzaXplb2YgKGJ1ZiksIGVudHJ5LT5kdXJhdGlvbiAvIEdTVF9TRUNPTkQpLAorICAgICAgICAgIGVudHJ5LT50aXRsZSA/IGVudHJ5LT50aXRsZSA6ICIiKTsKKyAgICB9CisKKyAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChwbGF5bGlzdF9zdHIsICIlc1xuIiwgZW50cnktPnVybCk7CisgIH0KIAogICBpZiAocGxheWxpc3QtPmVuZF9saXN0KQotICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHBsYXlsaXN0LT5wbGF5bGlzdF9zdHIsIE0zVThfRU5ETElTVF9UQUcpOworICAgIGdfc3RyaW5nX2FwcGVuZCAocGxheWxpc3Rfc3RyLCAiI0VYVC1YLUVORExJU1QiKTsKIAotICBwbCA9IHBsYXlsaXN0LT5wbGF5bGlzdF9zdHItPnN0cjsKLSAgZ19zdHJpbmdfZnJlZSAocGxheWxpc3QtPnBsYXlsaXN0X3N0ciwgRkFMU0UpOwotICByZXR1cm4gcGw7Ci19Ci0KLXZvaWQKLWdzdF9tM3U4X3BsYXlsaXN0X2NsZWFyIChHc3RNM1U4UGxheWxpc3QgKiBwbGF5bGlzdCkKLXsKLSAgZ19yZXR1cm5faWZfZmFpbCAocGxheWxpc3QgIT0gTlVMTCk7Ci0KLSAgZ19xdWV1ZV9mb3JlYWNoIChwbGF5bGlzdC0+ZW50cmllcywgKEdGdW5jKSBnc3RfbTN1OF9lbnRyeV9mcmVlLCBOVUxMKTsKLSAgZ19xdWV1ZV9jbGVhciAocGxheWxpc3QtPmVudHJpZXMpOwotfQotCi1ndWludAotZ3N0X20zdThfcGxheWxpc3Rfbl9lbnRyaWVzIChHc3RNM1U4UGxheWxpc3QgKiBwbGF5bGlzdCkKLXsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHBsYXlsaXN0ICE9IE5VTEwsIDApOwotCi0gIHJldHVybiBwbGF5bGlzdC0+ZW50cmllcy0+bGVuZ3RoOworICByZXR1cm4gZ19zdHJpbmdfZnJlZSAocGxheWxpc3Rfc3RyLCBGQUxTRSk7CiB9CmRpZmYgLS1naXQgYS9leHQvaGxzL2dzdG0zdThwbGF5bGlzdC5oIGIvZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuaAppbmRleCAwZTk1MTMyLi43ZDgwNDM1IDEwMDY0NAotLS0gYS9leHQvaGxzL2dzdG0zdThwbGF5bGlzdC5oCisrKyBiL2V4dC9obHMvZ3N0bTN1OHBsYXlsaXN0LmgKQEAgLTIzLDIxICsyMywxMCBAQAogI2RlZmluZSBfX0dTVF9NM1U4X1BMQVlMSVNUX0hfXwogCiAjaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPGdpby9naW8uaD4KIAogR19CRUdJTl9ERUNMUwogCiB0eXBlZGVmIHN0cnVjdCBfR3N0TTNVOFBsYXlsaXN0IEdzdE0zVThQbGF5bGlzdDsKLXR5cGVkZWYgc3RydWN0IF9Hc3RNM1U4RW50cnkgR3N0TTNVOEVudHJ5OwotCi0KLXN0cnVjdCBfR3N0TTNVOEVudHJ5Ci17Ci0gIGdmbG9hdCBkdXJhdGlvbjsKLSAgZ2NoYXIgKnRpdGxlOwotICBnY2hhciAqdXJsOwotICBnYm9vbGVhbiBkaXNjb250aW51b3VzOwotfTsKIAogc3RydWN0IF9Hc3RNM1U4UGxheWxpc3QKIHsKQEAgLTUwLDIzICszOSwyNCBAQAogCiAgIC8qPCBQcml2YXRlID4qLwogICBHUXVldWUgKmVudHJpZXM7Ci0gIEdTdHJpbmcgKnBsYXlsaXN0X3N0cjsKIH07CiAKIAogR3N0TTNVOFBsYXlsaXN0ICogZ3N0X20zdThfcGxheWxpc3RfbmV3IChndWludCB2ZXJzaW9uLCAKIAkJCQkgICAgICAgICBndWludCB3aW5kb3dfc2l6ZSwKIAkJCQkJIGdib29sZWFuIGFsbG93X2NhY2hlKTsKLXZvaWQgZ3N0X20zdThfcGxheWxpc3RfZnJlZSAoR3N0TTNVOFBsYXlsaXN0ICogcGxheWxpc3QpOwotZ2Jvb2xlYW4gZ3N0X20zdThfcGxheWxpc3RfYWRkX2VudHJ5IChHc3RNM1U4UGxheWxpc3QgKiBwbGF5bGlzdCwKLSAgICAJCQkJICAgICBjb25zdCBnY2hhciAqIHVybCwKLQkJCQkgICAgIGNvbnN0IGdjaGFyICp0aXRsZSwKLQkJCQkgICAgIGdmbG9hdCBkdXJhdGlvbiwKLQkJCQkgICAgIGd1aW50IGluZGV4LAotCQkJCSAgICAgZ2Jvb2xlYW4gZGlzY29udGludW91cyk7Ci1nY2hhciAqIGdzdF9tM3U4X3BsYXlsaXN0X3JlbmRlciAoR3N0TTNVOFBsYXlsaXN0ICogcGxheWxpc3QpOyAKLXZvaWQgZ3N0X20zdThfcGxheWxpc3RfY2xlYXIgKEdzdE0zVThQbGF5bGlzdCAqIHBsYXlsaXN0KTsgCi1ndWludCBnc3RfbTN1OF9wbGF5bGlzdF9uX2VudHJpZXMgKEdzdE0zVThQbGF5bGlzdCAqIHBsYXlsaXN0KTsgCisKK3ZvaWQgICAgICAgICAgICAgIGdzdF9tM3U4X3BsYXlsaXN0X2ZyZWUgKEdzdE0zVThQbGF5bGlzdCAqIHBsYXlsaXN0KTsKKworZ2Jvb2xlYW4gICAgICAgICAgZ3N0X20zdThfcGxheWxpc3RfYWRkX2VudHJ5IChHc3RNM1U4UGxheWxpc3QgKiBwbGF5bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICogdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgKiB0aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Zsb2F0ICAgICAgICAgICAgZHVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICBkaXNjb250aW51b3VzKTsKKworZ2NoYXIgKiAgICAgICAgICAgZ3N0X20zdThfcGxheWxpc3RfcmVuZGVyIChHc3RNM1U4UGxheWxpc3QgKiBwbGF5bGlzdCk7CiAKIEdfRU5EX0RFQ0xTCisKICNlbmRpZiAvKiBfX00zVThfSF9fICovCmRpZmYgLS1naXQgYS9leHQvaGxzL20zdTguYyBiL2V4dC9obHMvbTN1OC5jCmluZGV4IDQyNjVmOTcuLmRmMjY3ZjcgMTAwNjQ0Ci0tLSBhL2V4dC9obHMvbTN1OC5jCisrKyBiL2V4dC9obHMvbTN1OC5jCkBAIC0yNSwyOSArMjUsMTAgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNsdWRlICJnc3RmcmFnbWVudGVkLmgiCisjaW5jbHVkZSAiZ3N0aGxzLmgiCiAjaW5jbHVkZSAibTN1OC5oIgogCi0jZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBmcmFnbWVudGVkX2RlYnVnCi0KLSNpZiAhR0xJQl9DSEVDS19WRVJTSU9OICgyLCAzMywgNCkKLSNkZWZpbmUgZ19saXN0X2NvcHlfZGVlcCBnc3RfZ19saXN0X2NvcHlfZGVlcAotc3RhdGljIEdMaXN0ICoKLWdzdF9nX2xpc3RfY29weV9kZWVwIChHTGlzdCAqIGxpc3QsIEdDb3B5RnVuYyBmdW5jLCBncG9pbnRlciB1c2VyX2RhdGEpCi17Ci0gIGxpc3QgPSBnX2xpc3RfY29weSAobGlzdCk7Ci0KLSAgaWYgKGZ1bmMgIT0gTlVMTCkgewotICAgIEdMaXN0ICpsOwotCi0gICAgZm9yIChsID0gbGlzdDsgbCAhPSBOVUxMOyBsID0gbC0+bmV4dCkgewotICAgICAgbC0+ZGF0YSA9IGZ1bmMgKGwtPmRhdGEsIHVzZXJfZGF0YSk7Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIGxpc3Q7Ci19Ci0jZW5kaWYKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGhsc19kZWJ1ZwogCiBzdGF0aWMgR3N0TTNVOCAqZ3N0X20zdThfbmV3ICh2b2lkKTsKIHN0YXRpYyB2b2lkIGdzdF9tM3U4X2ZyZWUgKEdzdE0zVTggKiBtM3U4KTsKQEAgLTEzMSw4NCArMTEyLDYgQEAKICAgZ19mcmVlIChzZWxmKTsKIH0KIAotc3RhdGljIEdzdE0zVThNZWRpYUZpbGUgKgotZ3N0X20zdThfbWVkaWFfZmlsZV9jb3B5IChjb25zdCBHc3RNM1U4TWVkaWFGaWxlICogc2VsZiwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotewotICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2VsZiAhPSBOVUxMLCBOVUxMKTsKLQotICByZXR1cm4gZ3N0X20zdThfbWVkaWFfZmlsZV9uZXcgKGdfc3RyZHVwIChzZWxmLT51cmkpLCBnX3N0cmR1cCAoc2VsZi0+dGl0bGUpLAotICAgICAgc2VsZi0+ZHVyYXRpb24sIHNlbGYtPnNlcXVlbmNlKTsKLX0KLQotc3RhdGljIEdzdE0zVTggKgotX20zdThfY29weSAoY29uc3QgR3N0TTNVOCAqIHNlbGYsIEdzdE0zVTggKiBwYXJlbnQpCi17Ci0gIEdzdE0zVTggKmR1cDsKLQotICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2VsZiAhPSBOVUxMLCBOVUxMKTsKLQotICBkdXAgPSBnc3RfbTN1OF9uZXcgKCk7Ci0gIGR1cC0+dXJpID0gZ19zdHJkdXAgKHNlbGYtPnVyaSk7Ci0gIGR1cC0+YmFzZV91cmkgPSBnX3N0cmR1cCAoc2VsZi0+YmFzZV91cmkpOwotICBkdXAtPm5hbWUgPSBnX3N0cmR1cCAoc2VsZi0+bmFtZSk7Ci0gIGR1cC0+ZW5kbGlzdCA9IHNlbGYtPmVuZGxpc3Q7Ci0gIGR1cC0+dmVyc2lvbiA9IHNlbGYtPnZlcnNpb247Ci0gIGR1cC0+dGFyZ2V0ZHVyYXRpb24gPSBzZWxmLT50YXJnZXRkdXJhdGlvbjsKLSAgZHVwLT5hbGxvd2NhY2hlID0gc2VsZi0+YWxsb3djYWNoZTsKLSAgZHVwLT5iYW5kd2lkdGggPSBzZWxmLT5iYW5kd2lkdGg7Ci0gIGR1cC0+cHJvZ3JhbV9pZCA9IHNlbGYtPnByb2dyYW1faWQ7Ci0gIGR1cC0+Y29kZWNzID0gZ19zdHJkdXAgKHNlbGYtPmNvZGVjcyk7Ci0gIGR1cC0+d2lkdGggPSBzZWxmLT53aWR0aDsKLSAgZHVwLT5oZWlnaHQgPSBzZWxmLT5oZWlnaHQ7Ci0gIGR1cC0+aWZyYW1lID0gc2VsZi0+aWZyYW1lOwotICBkdXAtPmZpbGVzID0KLSAgICAgIGdfbGlzdF9jb3B5X2RlZXAgKHNlbGYtPmZpbGVzLCAoR0NvcHlGdW5jKSBnc3RfbTN1OF9tZWRpYV9maWxlX2NvcHksCi0gICAgICBOVUxMKTsKLQotICAvKiBwcml2YXRlICovCi0gIGR1cC0+bGFzdF9kYXRhID0gZ19zdHJkdXAgKHNlbGYtPmxhc3RfZGF0YSk7Ci0gIGR1cC0+bGlzdHMgPSBnX2xpc3RfY29weV9kZWVwIChzZWxmLT5saXN0cywgKEdDb3B5RnVuYykgX20zdThfY29weSwgZHVwKTsKLSAgZHVwLT5pZnJhbWVfbGlzdHMgPQotICAgICAgZ19saXN0X2NvcHlfZGVlcCAoc2VsZi0+aWZyYW1lX2xpc3RzLCAoR0NvcHlGdW5jKSBfbTN1OF9jb3B5LCBkdXApOwotICAvKiBOT1RFOiBjdXJyZW50X3ZhcmlhbnQgd2lsbCBnZXQgc2V0IGluIGdzdF9tM3U4X2NvcHkgKCkgKi8KLSAgZHVwLT5wYXJlbnQgPSBwYXJlbnQ7Ci0gIGR1cC0+bWVkaWFzZXF1ZW5jZSA9IHNlbGYtPm1lZGlhc2VxdWVuY2U7Ci0gIHJldHVybiBkdXA7Ci19Ci0KLXN0YXRpYyBHc3RNM1U4ICoKLWdzdF9tM3U4X2NvcHkgKGNvbnN0IEdzdE0zVTggKiBzZWxmKQotewotICBHTGlzdCAqZW50cnk7Ci0gIGd1aW50IG47Ci0KLSAgR3N0TTNVOCAqZHVwID0gX20zdThfY29weSAoc2VsZiwgTlVMTCk7Ci0KLSAgaWYgKHNlbGYtPmN1cnJlbnRfdmFyaWFudCAhPSBOVUxMKSB7Ci0gICAgZm9yIChuID0gMCwgZW50cnkgPSBzZWxmLT5saXN0czsgZW50cnk7IGVudHJ5ID0gZW50cnktPm5leHQsIG4rKykgewotICAgICAgaWYgKGVudHJ5ID09IHNlbGYtPmN1cnJlbnRfdmFyaWFudCkgewotICAgICAgICBkdXAtPmN1cnJlbnRfdmFyaWFudCA9IGdfbGlzdF9udGggKGR1cC0+bGlzdHMsIG4pOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIWR1cC0+Y3VycmVudF92YXJpYW50KSB7Ci0gICAgICBmb3IgKG4gPSAwLCBlbnRyeSA9IHNlbGYtPmlmcmFtZV9saXN0czsgZW50cnk7IGVudHJ5ID0gZW50cnktPm5leHQsIG4rKykgewotICAgICAgICBpZiAoZW50cnkgPT0gc2VsZi0+Y3VycmVudF92YXJpYW50KSB7Ci0gICAgICAgICAgZHVwLT5jdXJyZW50X3ZhcmlhbnQgPSBnX2xpc3RfbnRoIChkdXAtPmlmcmFtZV9saXN0cywgbik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKCFkdXAtPmN1cnJlbnRfdmFyaWFudCkgewotICAgICAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gZGV0ZXJtaW5lIGN1cnJlbnQgcGxheWxpc3QiKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICByZXR1cm4gZHVwOwotfQotCiBzdGF0aWMgZ2Jvb2xlYW4KIGludF9mcm9tX3N0cmluZyAoZ2NoYXIgKiBwdHIsIGdjaGFyICoqIGVuZHB0ciwgZ2ludCAqIHZhbCkKIHsKQEAgLTI5Nyw3ICsyMDAsNyBAQAogc3RhdGljIGdib29sZWFuCiBwYXJzZV9hdHRyaWJ1dGVzIChnY2hhciAqKiBwdHIsIGdjaGFyICoqIGEsIGdjaGFyICoqIHYpCiB7Ci0gIGdjaGFyICplbmQgPSBOVUxMLCAqcDsKKyAgZ2NoYXIgKmVuZCA9IE5VTEwsICpwLCAqdmU7CiAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHB0ciAhPSBOVUxMLCBGQUxTRSk7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICgqcHRyICE9IE5VTEwsIEZBTFNFKTsKQEAgLTMzMCw4ICsyMzMsMjAgQEAKIAogICAqdiA9IHAgPSBnX3V0Zjhfc3RyY2hyICgqcHRyLCAtMSwgJz0nKTsKICAgaWYgKCp2KSB7Ci0gICAgKnYgPSBnX3V0ZjhfbmV4dF9jaGFyICgqdik7CiAgICAgKnAgPSAnXDAnOworICAgICp2ID0gZ191dGY4X25leHRfY2hhciAoKnYpOworICAgIGlmICgqKnYgPT0gJyInKSB7CisgICAgICB2ZSA9IGdfdXRmOF9uZXh0X2NoYXIgKCp2KTsKKyAgICAgIGlmICh2ZSkgeworICAgICAgICB2ZSA9IGdfdXRmOF9zdHJjaHIgKHZlLCAtMSwgJyInKTsKKyAgICAgIH0KKyAgICAgIGlmICh2ZSkgeworICAgICAgICAqdiA9IGdfdXRmOF9uZXh0X2NoYXIgKCp2KTsKKyAgICAgICAgKnZlID0gJ1wwJzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEdTVF9XQVJOSU5HICgiQ2Fubm90IHJlbW92ZSBxdW90YXRpb24gbWFya3MgZnJvbSAlcyIsICphKTsKKyAgICAgIH0KKyAgICB9CiAgIH0gZWxzZSB7CiAgICAgR1NUX1dBUk5JTkcgKCJtaXNzaW5nID0gYWZ0ZXIgYXR0cmlidXRlIik7CiAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMzQxLDI4ICsyNTYsNiBAQAogICByZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIGdjaGFyICoKLXVucXVvdGVfc3RyaW5nIChnY2hhciAqIHN0cmluZykKLXsKLSAgZ2NoYXIgKnN0cmluZ19yZXQ7Ci0KLSAgc3RyaW5nX3JldCA9IHN0cmNociAoc3RyaW5nLCAnIicpOwotICBpZiAoc3RyaW5nX3JldCAhPSBOVUxMKSB7Ci0gICAgLyogZm91bmQgaW5pdGlhbGl6YXRpb24gcXVvdGF0aW9uIG1hcmsgb2Ygc3RyaW5nICovCi0gICAgc3RyaW5nID0gc3RyaW5nX3JldCArIDE7Ci0gICAgc3RyaW5nX3JldCA9IHN0cmNociAoc3RyaW5nLCAnIicpOwotICAgIGlmIChzdHJpbmdfcmV0ICE9IE5VTEwpIHsKLSAgICAgIC8qIGZvdW5kIGZpbmFsaXppbmcgcXVvdGF0aW9uIG1hcmsgb2Ygc3RyaW5nICovCi0gICAgICBzdHJpbmdfcmV0WzBdID0gJ1wwJzsKLSAgICB9IGVsc2UgewotICAgICAgR1NUX1dBUk5JTkcKLSAgICAgICAgICAoIndyb25nIHN0cmluZyB1bnFvdXRpbmcgLSBjYW5ub3QgZmluZCBmaW5hbGl6aW5nIHF1b3RhdGlvbiBtYXJrIik7Ci0gICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHN0cmluZzsKLX0KLQogc3RhdGljIGdpbnQKIF9tM3U4X2NvbXBhcmVfdXJpIChHc3RNM1U4ICogYSwgZ2NoYXIgKiB1cmkpCiB7CkBAIC0zOTQsNiArMjg3LDcgQEAKICAgZ2Jvb2xlYW4gaGF2ZV9pdiA9IEZBTFNFOwogICBndWludDggaXZbMTZdID0geyAwLCB9OwogICBnaW50NjQgc2l6ZSA9IC0xLCBvZmZzZXQgPSAtMTsKKyAgZ2ludDY0IG1lZGlhc2VxdWVuY2U7CiAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHNlbGYgIT0gTlVMTCwgRkFMU0UpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGF0YSAhPSBOVUxMLCBGQUxTRSk7CkBAIC00MTYsNiArMzEwLDggQEAKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KIAorICBHU1RfVFJBQ0UgKCJkYXRhOlxuJXMiLCBkYXRhKTsKKwogICBnX2ZyZWUgKHNlbGYtPmxhc3RfZGF0YSk7CiAgIHNlbGYtPmxhc3RfZGF0YSA9IGRhdGE7CiAKQEAgLTQyNiw2ICszMjIsNyBAQAogICAgIHNlbGYtPmZpbGVzID0gTlVMTDsKICAgfQogICBjbGllbnQtPmR1cmF0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgbWVkaWFzZXF1ZW5jZSA9IDA7CiAKICAgLyogQnkgZGVmYXVsdCwgYWxsb3cgY2FjaGluZyAqLwogICBzZWxmLT5hbGxvd2NhY2hlID0gVFJVRTsKQEAgLTQ2OSw5ICszNjYsNyBAQAogICAgICAgICBsaXN0ID0gTlVMTDsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgIEdzdE0zVThNZWRpYUZpbGUgKmZpbGU7Ci0gICAgICAgIGZpbGUgPQotICAgICAgICAgICAgZ3N0X20zdThfbWVkaWFfZmlsZV9uZXcgKGRhdGEsIHRpdGxlLCBkdXJhdGlvbiwKLSAgICAgICAgICAgIHNlbGYtPm1lZGlhc2VxdWVuY2UrKyk7CisgICAgICAgIGZpbGUgPSBnc3RfbTN1OF9tZWRpYV9maWxlX25ldyAoZGF0YSwgdGl0bGUsIGR1cmF0aW9uLCBtZWRpYXNlcXVlbmNlKyspOwogCiAgICAgICAgIC8qIHNldCBlbmNyeXB0aW9uIHBhcmFtcyAqLwogICAgICAgICBmaWxlLT5rZXkgPSBjdXJyZW50X2tleSA/IGdfc3RyZHVwIChjdXJyZW50X2tleSkgOiBOVUxMOwpAQCAtNTQ3LDcgKzQ0Miw2IEBACiAgICAgICAgIEdzdE0zVTggKm5ld19saXN0OwogCiAgICAgICAgIG5ld19saXN0ID0gZ3N0X20zdThfbmV3ICgpOwotICAgICAgICBuZXdfbGlzdC0+cGFyZW50ID0gc2VsZjsKICAgICAgICAgbmV3X2xpc3QtPmlmcmFtZSA9IGlmcmFtZTsKICAgICAgICAgZGF0YSA9IGRhdGEgKyAoaWZyYW1lID8gMjYgOiAxOCk7CiAgICAgICAgIHdoaWxlIChkYXRhICYmIHBhcnNlX2F0dHJpYnV0ZXMgKCZkYXRhLCAmYSwgJnYpKSB7CkBAIC01NzIsMjQgKzQ2NiwxMyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgIH0gZWxzZSBpZiAoaWZyYW1lICYmIGdfc3RyX2VxdWFsIChhLCAiVVJJIikpIHsKICAgICAgICAgICAgIGdjaGFyICpuYW1lOwotICAgICAgICAgICAgZ2NoYXIgKnVyaSA9IGdfc3RyZHVwICh2KTsKLSAgICAgICAgICAgIGdjaGFyICp1cmlwID0gdXJpOworICAgICAgICAgICAgZ2NoYXIgKnVyaTsKIAotICAgICAgICAgICAgdXJpID0gdW5xdW90ZV9zdHJpbmcgKHVyaSk7CisgICAgICAgICAgICB1cmkgPSB1cmlfam9pbiAoc2VsZi0+YmFzZV91cmkgPyBzZWxmLT5iYXNlX3VyaSA6IHNlbGYtPnVyaSwgdik7CiAgICAgICAgICAgICBpZiAodXJpKSB7Ci0gICAgICAgICAgICAgIHVyaSA9IHVyaV9qb2luIChzZWxmLT5iYXNlX3VyaSA/IHNlbGYtPmJhc2VfdXJpIDogc2VsZi0+dXJpLCB1cmkpOwotICAgICAgICAgICAgICBpZiAodXJpID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnX2ZyZWUgKHVyaXApOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIG5hbWUgPSBnX3N0cmR1cCAodXJpKTsKLQogICAgICAgICAgICAgICBnc3RfbTN1OF9zZXRfdXJpIChuZXdfbGlzdCwgdXJpLCBOVUxMLCBuYW1lKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIEdTVF9XQVJOSU5HCi0gICAgICAgICAgICAgICAgICAoIkNhbm5vdCByZW1vdmUgcXVvdGF0aW9uIG1hcmtzIGZyb20gaS1mcmFtZS1zdHJlYW0gVVJJIik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBnX2ZyZWUgKHVyaXApOwogICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC02MTMsNyArNDk2LDcgQEAKICAgICAgICAgICBzZWxmLT50YXJnZXRkdXJhdGlvbiA9IHZhbCAqIEdTVF9TRUNPTkQ7CiAgICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXggKGRhdGFfZXh0X3gsICJNRURJQS1TRVFVRU5DRToiKSkgewogICAgICAgICBpZiAoaW50X2Zyb21fc3RyaW5nIChkYXRhICsgMjIsICZkYXRhLCAmdmFsKSkKLSAgICAgICAgICBzZWxmLT5tZWRpYXNlcXVlbmNlID0gdmFsOworICAgICAgICAgIG1lZGlhc2VxdWVuY2UgPSB2YWw7CiAgICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXggKGRhdGFfZXh0X3gsICJESVNDT05USU5VSVRZIikpIHsKICAgICAgICAgZGlzY29udGludWl0eSA9IFRSVUU7CiAgICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXggKGRhdGFfZXh0X3gsICJQUk9HUkFNLURBVEUtVElNRToiKSkgewpAQCAtNjMyLDE4ICs1MTUsOCBAQAogICAgICAgICBjdXJyZW50X2tleSA9IE5VTEw7CiAgICAgICAgIHdoaWxlIChkYXRhICYmIHBhcnNlX2F0dHJpYnV0ZXMgKCZkYXRhLCAmYSwgJnYpKSB7CiAgICAgICAgICAgaWYgKGdfc3RyX2VxdWFsIChhLCAiVVJJIikpIHsKLSAgICAgICAgICAgIGdjaGFyICprZXkgPSBnX3N0cmR1cCAodik7Ci0gICAgICAgICAgICBnY2hhciAqa2V5cCA9IGtleTsKLQotICAgICAgICAgICAga2V5ID0gdW5xdW90ZV9zdHJpbmcgKGtleSk7Ci0gICAgICAgICAgICBpZiAoa2V5KSB7Ci0gICAgICAgICAgICAgIGN1cnJlbnRfa2V5ID0KLSAgICAgICAgICAgICAgICAgIHVyaV9qb2luIChzZWxmLT5iYXNlX3VyaSA/IHNlbGYtPmJhc2VfdXJpIDogc2VsZi0+dXJpLCBrZXkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgR1NUX1dBUk5JTkcKLSAgICAgICAgICAgICAgICAgICgiQ2Fubm90IHJlbW92ZSBxdW90YXRpb24gbWFya3MgZnJvbSBkZWNyeXB0aW9uIGtleSBVUkkiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdfZnJlZSAoa2V5cCk7CisgICAgICAgICAgICBjdXJyZW50X2tleSA9CisgICAgICAgICAgICAgICAgdXJpX2pvaW4gKHNlbGYtPmJhc2VfdXJpID8gc2VsZi0+YmFzZV91cmkgOiBzZWxmLT51cmksIHYpOwogICAgICAgICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwgKGEsICJJViIpKSB7CiAgICAgICAgICAgICBnY2hhciAqaXZwID0gdjsKICAgICAgICAgICAgIGdpbnQgaTsKQEAgLTc4Niw3ICs2NTksNiBAQAogICBjbGllbnQtPmN1cnJlbnRfZmlsZV9kdXJhdGlvbiA9IEdTVF9DTE9DS19USU1FX05PTkU7CiAgIGNsaWVudC0+c2VxdWVuY2UgPSAtMTsKICAgY2xpZW50LT5zZXF1ZW5jZV9wb3NpdGlvbiA9IDA7Ci0gIGNsaWVudC0+dXBkYXRlX2ZhaWxlZF9jb3VudCA9IDA7CiAgIGNsaWVudC0+aGlnaGVzdF9zZXF1ZW5jZV9udW1iZXIgPSAtMTsKICAgY2xpZW50LT5kdXJhdGlvbiA9IEdTVF9DTE9DS19USU1FX05PTkU7CiAgIGdfbXV0ZXhfaW5pdCAoJmNsaWVudC0+bG9jayk7CkBAIC04MTMsNyArNjg1LDYgQEAKICAgR1NUX00zVThfQ0xJRU5UX0xPQ0sgKHNlbGYpOwogICBpZiAobTN1OCAhPSBzZWxmLT5jdXJyZW50KSB7CiAgICAgc2VsZi0+Y3VycmVudCA9IG0zdTg7Ci0gICAgc2VsZi0+dXBkYXRlX2ZhaWxlZF9jb3VudCA9IDA7CiAgICAgc2VsZi0+ZHVyYXRpb24gPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICAgIHNlbGYtPmN1cnJlbnRfZmlsZSA9IE5VTEw7CiAgIH0KQEAgLTgzNSwxMCArNzA2LDggQEAKICAgaWYgKCFnc3RfbTN1OF91cGRhdGUgKHNlbGYsIG0zdTgsIGRhdGEsICZ1cGRhdGVkKSkKICAgICBnb3RvIG91dDsKIAotICBpZiAoIXVwZGF0ZWQpIHsKLSAgICBzZWxmLT51cGRhdGVfZmFpbGVkX2NvdW50Kys7CisgIGlmICghdXBkYXRlZCkKICAgICBnb3RvIG91dDsKLSAgfQogCiAgIGlmIChzZWxmLT5jdXJyZW50ICYmICFzZWxmLT5jdXJyZW50LT5maWxlcykgewogICAgIEdTVF9FUlJPUiAoIkludmFsaWQgbWVkaWEgcGxheWxpc3QsIGl0IGRvZXMgbm90IGNvbnRhaW4gYW55IG1lZGlhIGZpbGVzIik7CkBAIC05MjUsNyArNzk0LDcgQEAKICAgICAgIEdMaXN0ICptYXRjaCA9IGdfbGlzdF9maW5kX2N1c3RvbSAodW5tYXRjaGVkX2xpc3RzLCBsaXN0X2VudHJ5LT5kYXRhLAogICAgICAgICAgIChHQ29tcGFyZUZ1bmMpIF9maW5kX20zdThfbGlzdF9tYXRjaCk7CiAgICAgICBpZiAobWF0Y2gpCi0gICAgICAgIHVubWF0Y2hlZF9saXN0cyA9IGdfbGlzdF9yZW1vdmVfbGluayAodW5tYXRjaGVkX2xpc3RzLCBtYXRjaCk7CisgICAgICAgIHVubWF0Y2hlZF9saXN0cyA9IGdfbGlzdF9kZWxldGVfbGluayAodW5tYXRjaGVkX2xpc3RzLCBtYXRjaCk7CiAgICAgfQogCiAgICAgaWYgKHVubWF0Y2hlZF9saXN0cyAhPSBOVUxMKSB7CkBAIC05NDEsMTAgKzgxMCwxMiBAQAogICAgICAgZ19saXN0X2ZyZWUgKHVubWF0Y2hlZF9saXN0cyk7CiAgICAgfQogCi0gICAgLyogU3dpdGNoIG91dCB0aGUgdmFyaWFudCBwbGF5bGlzdCAqLworICAgIC8qIFN3aXRjaCBvdXQgdGhlIHZhcmlhbnQgcGxheWxpc3QsIHN0ZWFsIGl0IGZyb20gbmV3X2NsaWVudCAqLwogICAgIG9sZCA9IHNlbGYtPm1haW47CiAKLSAgICBzZWxmLT5tYWluID0gZ3N0X20zdThfY29weSAobmV3X2NsaWVudC0+bWFpbik7CisgICAgc2VsZi0+bWFpbiA9IG5ld19jbGllbnQtPm1haW47CisgICAgbmV3X2NsaWVudC0+bWFpbiA9IGdzdF9tM3U4X25ldyAoKTsKKwogICAgIGlmIChzZWxmLT5tYWluLT5saXN0cykKICAgICAgIHNlbGYtPmN1cnJlbnQgPSBzZWxmLT5tYWluLT5jdXJyZW50X3ZhcmlhbnQtPmRhdGE7CiAgICAgZWxzZQpAQCAtOTYyLDEyICs4MzMsNiBAQAogICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4KLV9maW5kX2N1cnJlbnQgKEdzdE0zVThNZWRpYUZpbGUgKiBmaWxlLCBHc3RNM1U4Q2xpZW50ICogY2xpZW50KQotewotICByZXR1cm4gZmlsZS0+c2VxdWVuY2UgIT0gY2xpZW50LT5zZXF1ZW5jZTsKLX0KLQogc3RhdGljIEdMaXN0ICoKIGZpbmRfbmV4dF9mcmFnbWVudCAoR3N0TTNVOENsaWVudCAqIGNsaWVudCwgR0xpc3QgKiBsLCBnYm9vbGVhbiBmb3J3YXJkKQogewpAQCAtMTE0NSwxNiArMTAxMCwzNCBAQAogICAgIEdMaXN0ICpsOwogCiAgICAgR1NUX0RFQlVHICgiTG9va2luZyBmb3IgZnJhZ21lbnQgJSIgR19HSU5UNjRfRk9STUFULCBjbGllbnQtPnNlcXVlbmNlKTsKLSAgICBsID0gZ19saXN0X2ZpbmRfY3VzdG9tIChjbGllbnQtPmN1cnJlbnQtPmZpbGVzLCBjbGllbnQsCi0gICAgICAgIChHQ29tcGFyZUZ1bmMpIF9maW5kX2N1cnJlbnQpOwotICAgIGlmIChsID09IE5VTEwpIHsKKyAgICBmb3IgKGwgPSBjbGllbnQtPmN1cnJlbnQtPmZpbGVzOyBsICE9IE5VTEw7IGwgPSBsLT5uZXh0KSB7CisgICAgICBpZiAoR1NUX00zVThfTUVESUFfRklMRSAobC0+ZGF0YSktPnNlcXVlbmNlID09IGNsaWVudC0+c2VxdWVuY2UpIHsKKyAgICAgICAgY2xpZW50LT5jdXJyZW50X2ZpbGUgPSBsOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKGNsaWVudC0+Y3VycmVudF9maWxlID09IE5VTEwpIHsKICAgICAgIEdTVF9ERUJVRwogICAgICAgICAgICgiQ291bGQgbm90IGZpbmQgY3VycmVudCBmcmFnbWVudCwgdHJ5aW5nIG5leHQgZnJhZ21lbnQgZGlyZWN0bHkiKTsKICAgICAgIGFsdGVybmF0ZV9hZHZhbmNlIChjbGllbnQsIGZvcndhcmQpOworCisgICAgICAvKiBSZXN5bmMgc2VxdWVuY2UgbnVtYmVyIGlmIHRoZSBhYm92ZSBoYXMgZmFpbGVkIGZvciBsaXZlIHN0cmVhbXMgKi8KKyAgICAgIGlmIChjbGllbnQtPmN1cnJlbnRfZmlsZSA9PSBOVUxMICYmIEdTVF9NM1U4X0NMSUVOVF9JU19MSVZFIChjbGllbnQpKSB7CisgICAgICAgIC8qIGZvciBsaXZlIHN0cmVhbXMsIHN0YXJ0IEdTVF9NM1U4X0xJVkVfTUlOX0ZSQUdNRU5UX0RJU1RBTkNFIGZyb20KKyAgICAgICAgICAgdGhlIGVuZCBvZiB0aGUgcGxheWxpc3QuIFNlZSBzZWN0aW9uIDYuMy4zIG9mIEhMUyBkcmFmdCAqLworICAgICAgICBnaW50IHBvcyA9CisgICAgICAgICAgICBnX2xpc3RfbGVuZ3RoIChjbGllbnQtPmN1cnJlbnQtPmZpbGVzKSAtCisgICAgICAgICAgICBHU1RfTTNVOF9MSVZFX01JTl9GUkFHTUVOVF9ESVNUQU5DRTsKKyAgICAgICAgY2xpZW50LT5jdXJyZW50X2ZpbGUgPQorICAgICAgICAgICAgZ19saXN0X250aCAoY2xpZW50LT5jdXJyZW50LT5maWxlcywgcG9zID49IDAgPyBwb3MgOiAwKTsKKyAgICAgICAgY2xpZW50LT5jdXJyZW50X2ZpbGVfZHVyYXRpb24gPQorICAgICAgICAgICAgR1NUX00zVThfTUVESUFfRklMRSAoY2xpZW50LT5jdXJyZW50X2ZpbGUtPmRhdGEpLT5kdXJhdGlvbjsKKworICAgICAgICBHU1RfV0FSTklORyAoIlJlc3luY2luZyBsaXZlIHBsYXlsaXN0Iik7CisgICAgICB9CiAgICAgICBHU1RfTTNVOF9DTElFTlRfVU5MT0NLIChjbGllbnQpOwogICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjbGllbnQtPmN1cnJlbnRfZmlsZSA9IGw7CiAgIH0KIAogICBmaWxlID0gR1NUX00zVThfTUVESUFfRklMRSAoY2xpZW50LT5jdXJyZW50X2ZpbGUtPmRhdGEpOwpAQCAtMTI1NiwyMiArMTEzOSw2IEBACiB9CiAKIGdib29sZWFuCi1nc3RfbTN1OF9jbGllbnRfaGFzX21haW4gKEdzdE0zVThDbGllbnQgKiBjbGllbnQpCi17Ci0gIGdib29sZWFuIHJldDsKLQotICBnX3JldHVybl92YWxfaWZfZmFpbCAoY2xpZW50ICE9IE5VTEwsIEZBTFNFKTsKLQotICBHU1RfTTNVOF9DTElFTlRfTE9DSyAoY2xpZW50KTsKLSAgaWYgKGNsaWVudC0+bWFpbikKLSAgICByZXQgPSBUUlVFOwotICBlbHNlCi0gICAgcmV0ID0gRkFMU0U7Ci0gIEdTVF9NM1U4X0NMSUVOVF9VTkxPQ0sgKGNsaWVudCk7Ci0gIHJldHVybiByZXQ7Ci19Ci0KLWdib29sZWFuCiBnc3RfbTN1OF9jbGllbnRfaGFzX3ZhcmlhbnRfcGxheWxpc3QgKEdzdE0zVThDbGllbnQgKiBjbGllbnQpCiB7CiAgIGdib29sZWFuIHJldDsKQEAgLTEzODAsMjggKzEyNDcsNiBAQAogICByZXR1cm4gcmV0OwogfQogCi1ndWludDY0Ci1nc3RfbTN1OF9jbGllbnRfZ2V0X2N1cnJlbnRfZnJhZ21lbnRfZHVyYXRpb24gKEdzdE0zVThDbGllbnQgKiBjbGllbnQpCi17Ci0gIGd1aW50NjQgZHVyOwotICBHTGlzdCAqbGlzdDsKLQotICBnX3JldHVybl92YWxfaWZfZmFpbCAoY2xpZW50ICE9IE5VTEwsIDApOwotCi0gIEdTVF9NM1U4X0NMSUVOVF9MT0NLIChjbGllbnQpOwotCi0gIGxpc3QgPSBnX2xpc3RfZmluZF9jdXN0b20gKGNsaWVudC0+Y3VycmVudC0+ZmlsZXMsIGNsaWVudCwKLSAgICAgIChHQ29tcGFyZUZ1bmMpIF9maW5kX2N1cnJlbnQpOwotICBpZiAobGlzdCA9PSBOVUxMKSB7Ci0gICAgZHVyID0gLTE7Ci0gIH0gZWxzZSB7Ci0gICAgZHVyID0gR1NUX00zVThfTUVESUFfRklMRSAobGlzdC0+ZGF0YSktPmR1cmF0aW9uOwotICB9Ci0KLSAgR1NUX00zVThfQ0xJRU5UX1VOTE9DSyAoY2xpZW50KTsKLSAgcmV0dXJuIGR1cjsKLX0KLQogZ2Jvb2xlYW4KIGdzdF9tM3U4X2NsaWVudF9nZXRfc2Vla19yYW5nZSAoR3N0TTNVOENsaWVudCAqIGNsaWVudCwgZ2ludDY0ICogc3RhcnQsCiAgICAgZ2ludDY0ICogc3RvcCkKQEAgLTE0MTAsNiArMTI1NSw3IEBACiAgIEdMaXN0ICp3YWxrOwogICBHc3RNM1U4TWVkaWFGaWxlICpmaWxlOwogICBndWludCBjb3VudDsKKyAgZ3VpbnQgbWluX2Rpc3RhbmNlID0gMDsKIAogICBnX3JldHVybl92YWxfaWZfZmFpbCAoY2xpZW50ICE9IE5VTEwsIEZBTFNFKTsKIApAQCAtMTQyMCwxMyArMTI2NiwxNiBAQAogICAgIHJldHVybiBGQUxTRTsKICAgfQogCisgIGlmIChHU1RfTTNVOF9DTElFTlRfSVNfTElWRSAoY2xpZW50KSkgeworICAgIC8qIG1pbl9kaXN0YW5jZSBpcyB1c2VkIHRvIG1ha2Ugc3VyZSB0aGUgc2VlayByYW5nZSBpcyBuZXZlciBjbG9zZXIgdGhhbgorICAgICAgIEdTVF9NM1U4X0xJVkVfTUlOX0ZSQUdNRU5UX0RJU1RBTkNFIGZyYWdtZW50cyBmcm9tIHRoZSBlbmQgb2YgYSBsaXZlCisgICAgICAgcGxheWxpc3QgLSBzZWUgNi4zLjMuICJQbGF5aW5nIHRoZSBQbGF5bGlzdCBmaWxlIiBvZiB0aGUgSExTIGRyYWZ0ICovCisgICAgbWluX2Rpc3RhbmNlID0gR1NUX00zVThfTElWRV9NSU5fRlJBR01FTlRfRElTVEFOQ0U7CisgIH0KICAgY291bnQgPSBnX2xpc3RfbGVuZ3RoIChjbGllbnQtPmN1cnJlbnQtPmZpbGVzKTsKIAotICAvKiBjb3VudCBpcyB1c2VkIHRvIG1ha2Ugc3VyZSB0aGUgc2VlayByYW5nZSBpcyBuZXZlciBjbG9zZXIgdGhhbgotICAgICBHU1RfTTNVOF9MSVZFX01JTl9GUkFHTUVOVF9ESVNUQU5DRSBmcmFnbWVudHMgZnJvbSB0aGUgZW5kIG9mIHRoZQotICAgICBwbGF5bGlzdCAtIHNlZSA2LjMuMy4gIlBsYXlpbmcgdGhlIFBsYXlsaXN0IGZpbGUiIG9mIHRoZSBITFMgZHJhZnQgKi8KICAgZm9yICh3YWxrID0gY2xpZW50LT5jdXJyZW50LT5maWxlczsKLSAgICAgIHdhbGsgJiYgY291bnQgPj0gR1NUX00zVThfTElWRV9NSU5fRlJBR01FTlRfRElTVEFOQ0U7IHdhbGsgPSB3YWxrLT5uZXh0KSB7CisgICAgICB3YWxrICYmIGNvdW50ID49IG1pbl9kaXN0YW5jZTsgd2FsayA9IHdhbGstPm5leHQpIHsKICAgICBmaWxlID0gd2Fsay0+ZGF0YTsKICAgICAtLWNvdW50OwogICAgIGR1cmF0aW9uICs9IGZpbGUtPmR1cmF0aW9uOwpkaWZmIC0tZ2l0IGEvZXh0L2hscy9tM3U4LmggYi9leHQvaGxzL20zdTguaAppbmRleCA3YjA5ZGUxLi4yNGVhYWExIDEwMDY0NAotLS0gYS9leHQvaGxzL20zdTguaAorKysgYi9leHQvaGxzL20zdTguaApAQCAtMjUsNyArMjUsOSBAQAogCiAjaW5jbHVkZSA8Z2xpYi5oPgogCi1HX0JFR0lOX0RFQ0xTIHR5cGVkZWYgc3RydWN0IF9Hc3RNM1U4IEdzdE0zVTg7CitHX0JFR0lOX0RFQ0xTCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RNM1U4IEdzdE0zVTg7CiB0eXBlZGVmIHN0cnVjdCBfR3N0TTNVOE1lZGlhRmlsZSBHc3RNM1U4TWVkaWFGaWxlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdE0zVThDbGllbnQgR3N0TTNVOENsaWVudDsKIApAQCAtMzYsMTEgKzM4LDYgQEAKICNkZWZpbmUgR1NUX00zVThfQ0xJRU5UX1VOTE9DSyhjKSBnX211dGV4X3VubG9jayAoJmMtPmxvY2spOwogCiAjZGVmaW5lIEdTVF9NM1U4X0NMSUVOVF9JU19MSVZFKGMpICgoIShjKS0+Y3VycmVudCB8fCAoYyktPmN1cnJlbnQtPmVuZGxpc3QpID8gRkFMU0UgOiBUUlVFKQotLyogaGxzZGVtdXggbXVzdCBub3QgZ2V0IGNsb3NlciB0byB0aGUgZW5kIG9mIGEgbGl2ZSBzdHJlYW0gdGhhbgotICAgR1NUX00zVThfTElWRV9NSU5fRlJBR01FTlRfRElTVEFOQ0UgZnJhZ21lbnRzLiBTZWN0aW9uIDYuMy4zCi0gICAiUGxheWluZyB0aGUgUGxheWxpc3QgZmlsZSIgb2YgdGhlIEhMUyBkcmFmdCBzdGF0ZXMgdGhhdCB0aGlzCi0gICB2YWx1ZSBpcyB0aHJlZSBmcmFnbWVudHMgKi8KLSNkZWZpbmUgR1NUX00zVThfTElWRV9NSU5fRlJBR01FTlRfRElTVEFOQ0UgMwogCiAvKiBobHNkZW11eCBtdXN0IG5vdCBnZXQgY2xvc2VyIHRvIHRoZSBlbmQgb2YgYSBsaXZlIHN0cmVhbSB0aGFuCiAgICBHU1RfTTNVOF9MSVZFX01JTl9GUkFHTUVOVF9ESVNUQU5DRSBmcmFnbWVudHMuIFNlY3Rpb24gNi4zLjMKQEAgLTc0LDggKzcxLDYgQEAKICAgR0xpc3QgKmxpc3RzOyAgICAgICAgICAgICAgICAgLyogbGlzdCBvZiBHc3RNM1U4IGZyb20gdGhlIG1haW4gcGxheWxpc3QgKi8KICAgR0xpc3QgKmlmcmFtZV9saXN0czsgICAgICAgICAgLyogSS1mcmFtZSBsaXN0cyBmcm9tIHRoZSBtYWluIHBsYXlsaXN0ICovCiAgIEdMaXN0ICpjdXJyZW50X3ZhcmlhbnQ7ICAgICAgIC8qIEN1cnJlbnQgdmFyaWFudCBwbGF5bGlzdCB1c2VkICovCi0gIEdzdE0zVTggKnBhcmVudDsgICAgICAgICAgICAgIC8qIG1haW4gcGxheWxpc3QgKGlmIGFueSkgKi8KLSAgZ2ludDY0IG1lZGlhc2VxdWVuY2U7ICAgICAgICAgIC8qIEVYVC1YLU1FRElBLVNFUVVFTkNFICYgaW5jcmVhc2VkIHdpdGggbmV3IG1lZGlhIGZpbGUgKi8KIH07CiAKIHN0cnVjdCBfR3N0TTNVOE1lZGlhRmlsZQpAQCAtOTQsNyArODksNiBAQAogewogICBHc3RNM1U4ICptYWluOyAgICAgICAgICAgICAgICAvKiBtYWluIHBsYXlsaXN0ICovCiAgIEdzdE0zVTggKmN1cnJlbnQ7Ci0gIGd1aW50IHVwZGF0ZV9mYWlsZWRfY291bnQ7CiAgIEdMaXN0ICpjdXJyZW50X2ZpbGU7CiAgIEdzdENsb2NrVGltZSBjdXJyZW50X2ZpbGVfZHVyYXRpb247IC8qIER1cmF0aW9uIG9mIGN1cnJlbnQgZnJhZ21lbnQgKi8KICAgZ2ludDY0IHNlcXVlbmNlOyAgICAgICAgICAgICAgLyogdGhlIG5leHQgc2VxdWVuY2UgZm9yIHRoaXMgY2xpZW50ICovCkBAIC0xMDcsMzAgKzEwMSw1NiBAQAogfTsKIAogCi1Hc3RNM1U4Q2xpZW50ICpnc3RfbTN1OF9jbGllbnRfbmV3IChjb25zdCBnY2hhciAqIHVyaSwgY29uc3QgZ2NoYXIgKiBiYXNlX3VyaSk7Ci12b2lkIGdzdF9tM3U4X2NsaWVudF9mcmVlIChHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKLWdib29sZWFuIGdzdF9tM3U4X2NsaWVudF91cGRhdGUgKEdzdE0zVThDbGllbnQgKiBjbGllbnQsIGdjaGFyICogZGF0YSk7Ci1nYm9vbGVhbiBnc3RfbTN1OF9jbGllbnRfdXBkYXRlX3ZhcmlhbnRfcGxheWxpc3QgKEdzdE0zVThDbGllbnQgKiBjbGllbnQsIGdjaGFyICogZGF0YSwgY29uc3QgZ2NoYXIgKiB1cmksIGNvbnN0IGdjaGFyICogYmFzZV91cmkpOwotdm9pZCBnc3RfbTN1OF9jbGllbnRfc2V0X2N1cnJlbnQgKEdzdE0zVThDbGllbnQgKiBjbGllbnQsIEdzdE0zVTggKiBtM3U4KTsKLWdib29sZWFuIGdzdF9tM3U4X2NsaWVudF9nZXRfbmV4dF9mcmFnbWVudCAoR3N0TTNVOENsaWVudCAqIGNsaWVudCwKLSAgICBnYm9vbGVhbiAqIGRpc2NvbnRpbnVpdHksIGdjaGFyICoqIHVyaSwgR3N0Q2xvY2tUaW1lICogZHVyYXRpb24sCi0gICAgR3N0Q2xvY2tUaW1lICogdGltZXN0YW1wLCBnaW50NjQgKiByYW5nZV9zdGFydCwgZ2ludDY0ICogcmFuZ2VfZW5kLAotICAgIGdjaGFyICoqIGtleSwgZ3VpbnQ4ICoqIGl2LCBnYm9vbGVhbiBmb3J3YXJkKTsKLWdib29sZWFuIGdzdF9tM3U4X2NsaWVudF9oYXNfbmV4dF9mcmFnbWVudCAoR3N0TTNVOENsaWVudCAqIGNsaWVudCwgZ2Jvb2xlYW4gZm9yd2FyZCk7Ci12b2lkIGdzdF9tM3U4X2NsaWVudF9hZHZhbmNlX2ZyYWdtZW50IChHc3RNM1U4Q2xpZW50ICogY2xpZW50LCBnYm9vbGVhbiBmb3J3YXJkKTsKLUdzdENsb2NrVGltZSBnc3RfbTN1OF9jbGllbnRfZ2V0X2R1cmF0aW9uIChHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKLUdzdENsb2NrVGltZSBnc3RfbTN1OF9jbGllbnRfZ2V0X3RhcmdldF9kdXJhdGlvbiAoR3N0TTNVOENsaWVudCAqIGNsaWVudCk7Ci1nY2hhciAqZ3N0X20zdThfY2xpZW50X2dldF91cmkoR3N0TTNVOENsaWVudCAqIGNsaWVudCk7Ci1nY2hhciAqZ3N0X20zdThfY2xpZW50X2dldF9jdXJyZW50X3VyaShHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKLWdib29sZWFuIGdzdF9tM3U4X2NsaWVudF9oYXNfbWFpbihHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKLWdib29sZWFuIGdzdF9tM3U4X2NsaWVudF9oYXNfdmFyaWFudF9wbGF5bGlzdChHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKLWdib29sZWFuIGdzdF9tM3U4X2NsaWVudF9pc19saXZlKEdzdE0zVThDbGllbnQgKiBjbGllbnQpOwotR0xpc3QgKiBnc3RfbTN1OF9jbGllbnRfZ2V0X3BsYXlsaXN0X2Zvcl9iaXRyYXRlIChHc3RNM1U4Q2xpZW50ICogY2xpZW50LAotICAgIGd1aW50IGJpdHJhdGUpOworR3N0TTNVOENsaWVudCAqIGdzdF9tM3U4X2NsaWVudF9uZXcgKGNvbnN0IGdjaGFyICogdXJpLCBjb25zdCBnY2hhciAqIGJhc2VfdXJpKTsKIAotZ3VpbnQ2NCBnc3RfbTN1OF9jbGllbnRfZ2V0X2N1cnJlbnRfZnJhZ21lbnRfZHVyYXRpb24gKEdzdE0zVThDbGllbnQgKiBjbGllbnQpOwordm9pZCAgICAgICAgICAgIGdzdF9tM3U4X2NsaWVudF9mcmVlIChHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKIAotZ2Jvb2xlYW4gZ3N0X20zdThfY2xpZW50X2dldF9zZWVrX3JhbmdlKEdzdE0zVThDbGllbnQgKiBjbGllbnQsIGdpbnQ2NCAqIHN0YXJ0LCBnaW50NjQgKiBzdG9wKTsKK2dib29sZWFuICAgICAgICBnc3RfbTN1OF9jbGllbnRfdXBkYXRlIChHc3RNM1U4Q2xpZW50ICogY2xpZW50LCBnY2hhciAqIGRhdGEpOworCitnYm9vbGVhbiAgICAgICAgZ3N0X20zdThfY2xpZW50X3VwZGF0ZV92YXJpYW50X3BsYXlsaXN0IChHc3RNM1U4Q2xpZW50ICogY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NoYXIgICAgICAgICAqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICogdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAqIGJhc2VfdXJpKTsKKwordm9pZCAgICAgICAgICAgIGdzdF9tM3U4X2NsaWVudF9zZXRfY3VycmVudCAgICAgICAgIChHc3RNM1U4Q2xpZW50ICogY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RNM1U4ICAgICAgICogbTN1OCk7CisKK2dib29sZWFuICAgICAgICBnc3RfbTN1OF9jbGllbnRfZ2V0X25leHRfZnJhZ21lbnQgICAoR3N0TTNVOENsaWVudCAqIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAqIGRpc2NvbnRpbnVpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjaGFyICAgICAgICAqKiB1cmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENsb2NrVGltZSAgKiBkdXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2xvY2tUaW1lICAqIHRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludDY0ICAgICAgICAqIHJhbmdlX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50NjQgICAgICAgICogcmFuZ2VfZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2hhciAgICAgICAgKioga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDggICAgICAgKiogaXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICBmb3J3YXJkKTsKKworZ2Jvb2xlYW4gICAgICAgIGdzdF9tM3U4X2NsaWVudF9oYXNfbmV4dF9mcmFnbWVudCAgIChHc3RNM1U4Q2xpZW50ICogY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgZm9yd2FyZCk7CisKK3ZvaWQgICAgICAgICAgICBnc3RfbTN1OF9jbGllbnRfYWR2YW5jZV9mcmFnbWVudCAgICAoR3N0TTNVOENsaWVudCAqIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgIGZvcndhcmQpOworCitHc3RDbG9ja1RpbWUgICAgZ3N0X20zdThfY2xpZW50X2dldF9kdXJhdGlvbiAgICAgICAgKEdzdE0zVThDbGllbnQgKiBjbGllbnQpOworCitHc3RDbG9ja1RpbWUgICAgZ3N0X20zdThfY2xpZW50X2dldF90YXJnZXRfZHVyYXRpb24gKEdzdE0zVThDbGllbnQgKiBjbGllbnQpOworCitnY2hhciAqICAgICAgICAgZ3N0X20zdThfY2xpZW50X2dldF91cmkgICAgICAgICAgICAgKEdzdE0zVThDbGllbnQgKiBjbGllbnQpOworCitnY2hhciAqICAgICAgICAgZ3N0X20zdThfY2xpZW50X2dldF9jdXJyZW50X3VyaSAgICAgKEdzdE0zVThDbGllbnQgKiBjbGllbnQpOworCitnYm9vbGVhbiAgICAgICAgZ3N0X20zdThfY2xpZW50X2hhc192YXJpYW50X3BsYXlsaXN0IChHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKKworZ2Jvb2xlYW4gICAgICAgIGdzdF9tM3U4X2NsaWVudF9pc19saXZlICAgICAgICAgICAgIChHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKKworR0xpc3QgKiAgICAgICAgIGdzdF9tM3U4X2NsaWVudF9nZXRfcGxheWxpc3RfZm9yX2JpdHJhdGUgKEdzdE0zVThDbGllbnQgKiBjbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgIGJpdHJhdGUpOworCitnYm9vbGVhbiAgICAgICAgZ3N0X20zdThfY2xpZW50X2dldF9zZWVrX3JhbmdlICAgICAgKEdzdE0zVThDbGllbnQgKiBjbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQ2NCAgICAgICAgKiBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludDY0ICAgICAgICAqIHN0b3ApOwogCiBHX0VORF9ERUNMUworCiAjZW5kaWYgLyogX19NM1U4X0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L2thdGUvTWFrZWZpbGUuaW4gYi9leHQva2F0ZS9NYWtlZmlsZS5pbgppbmRleCA1MGJjNThjLi42NTA3OTliIDEwMDY0NAotLS0gYS9leHQva2F0ZS9NYWtlZmlsZS5pbgorKysgYi9leHQva2F0ZS9NYWtlZmlsZS5pbgpAQCAtMTE4LDE2ICsxMTgsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yODAsNiArMjc5LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTcsNiArMzE4LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjUsNyArMzI4LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ0LDggKzM0Niw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjIsMTYgKzM2NSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTcsNiArNDAxLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIyLDYgKzQyOCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMyw2ICs1MzEsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM2LDggKzU0NSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1Myw2ICs1NjAsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjEwLDE2ICs2MTksMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzEsNiArNjgyLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4MSw2ICs2OTMsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTAsNiArNzAzLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNyw3ICs3NDIsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9rYXRlL2dzdGthdGVkZWMuYyBiL2V4dC9rYXRlL2dzdGthdGVkZWMuYwppbmRleCA4NzQ4NDk4Li5jNjFkNTE0IDEwMDY0NAotLS0gYS9leHQva2F0ZS9nc3RrYXRlZGVjLmMKKysrIGIvZXh0L2thdGUvZ3N0a2F0ZWRlYy5jCkBAIC02MSwxNCArNjEsMTQgQEAKICAqIDxwYXJhPgogICogVGhpcyBleHBsaWNpdGVseSBkZWNvZGVzIGEgS2F0ZSBzdHJlYW06CiAgKiA8cHJvZ3JhbWxpc3Rpbmc+Ci0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249dGVzdC5vZ2cgISBvZ2dkZW11eCAhIGthdGVkZWMgISBmYWtlc2luayBzaWxlbnQ9VFJVRQorICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj10ZXN0Lm9nZyAhIG9nZ2RlbXV4ICEga2F0ZWRlYyAhIGZha2VzaW5rIHNpbGVudD1UUlVFCiAgKiA8L3Byb2dyYW1saXN0aW5nPgogICogPC9wYXJhPgogICogPHBhcmE+CiAgKiBUaGlzIHdpbGwgYXV0b21hdGljYWxseSBkZXRlY3QgYW5kIHVzZSBhbnkgS2F0ZSBzdHJlYW1zIG11bHRpcGxleGVkCiAgKiBpbiBhbiBPZ2cgc3RyZWFtOgogICogPHByb2dyYW1saXN0aW5nPgotICogZ3N0LWxhdW5jaCBwbGF5YmluIHVyaT1maWxlOi8vL3RtcC90ZXN0Lm9nZworICogZ3N0LWxhdW5jaC0xLjAgcGxheWJpbiB1cmk9ZmlsZTovLy90bXAvdGVzdC5vZ2cKICAqIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgKiA8L3BhcmE+CiAgKiA8L3JlZnNlY3QyPgpkaWZmIC0tZ2l0IGEvZXh0L2thdGUvZ3N0a2F0ZWVuYy5jIGIvZXh0L2thdGUvZ3N0a2F0ZWVuYy5jCmluZGV4IDU5NTg2OGYuLmQ4ODkxNGEgMTAwNjQ0Ci0tLSBhL2V4dC9rYXRlL2dzdGthdGVlbmMuYworKysgYi9leHQva2F0ZS9nc3RrYXRlZW5jLmMKQEAgLTYyLDcgKzYyLDcgQEAKICAqIDxwYXJhPgogICogVGhpcyBlbmNvZGVzIGEgRFZEIFNQVSB0cmFjayB0byBhIEthdGUgc3RyZWFtOgogICogPHByb2dyYW1saXN0aW5nPgotICogZ3N0LWxhdW5jaCBkdmRyZWFkc3JjICEgZHZkZGVtdXggISBkdmRzdWJwYXJzZSAhIGthdGVlbmMgY2F0ZWdvcnk9c3B1LXN1YnRpdGxlcyAhIG9nZ211eCAhIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3Qub2dnCisgKiBnc3QtbGF1bmNoLTEuMCBkdmRyZWFkc3JjICEgZHZkZGVtdXggISBkdmRzdWJwYXJzZSAhIGthdGVlbmMgY2F0ZWdvcnk9c3B1LXN1YnRpdGxlcyAhIG9nZ211eCAhIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3Qub2dnCiAgKiA8L3Byb2dyYW1saXN0aW5nPgogICogPC9wYXJhPgogICogPC9yZWZzZWN0Mj4KQEAgLTc5MSwxMiArNzkxLDkgQEAKICAga2JpdG1hcCA9IChrYXRlX2JpdG1hcCAqKSBnX21hbGxvYyAoc2l6ZW9mIChrYXRlX2JpdG1hcCkpOwogICBrcGFsZXR0ZSA9IChrYXRlX3BhbGV0dGUgKikgZ19tYWxsb2MgKHNpemVvZiAoa2F0ZV9wYWxldHRlKSk7CiAgIGlmICgha3JlZ2lvbiB8fCAha3BhbGV0dGUgfHwgIWtiaXRtYXApIHsKLSAgICBpZiAoa3JlZ2lvbikKLSAgICAgIGdfZnJlZSAoa3JlZ2lvbik7Ci0gICAgaWYgKGtiaXRtYXApCi0gICAgICBnX2ZyZWUgKGtiaXRtYXApOwotICAgIGlmIChrcGFsZXR0ZSkKLSAgICAgIGdfZnJlZSAoa3BhbGV0dGUpOworICAgIGdfZnJlZSAoa3JlZ2lvbik7CisgICAgZ19mcmVlIChrYml0bWFwKTsKKyAgICBnX2ZyZWUgKGtwYWxldHRlKTsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoa2UsIFNUUkVBTSwgRU5DT0RFLCAoTlVMTCksICgiT3V0IG9mIG1lbW9yeSIpKTsKICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgIH0KZGlmZiAtLWdpdCBhL2V4dC9rYXRlL2dzdGthdGVwYXJzZS5jIGIvZXh0L2thdGUvZ3N0a2F0ZXBhcnNlLmMKaW5kZXggODY2NTdiOC4uOTllYTBjOCAxMDA2NDQKLS0tIGEvZXh0L2thdGUvZ3N0a2F0ZXBhcnNlLmMKKysrIGIvZXh0L2thdGUvZ3N0a2F0ZXBhcnNlLmMKQEAgLTQxLDE0ICs0MSwxNCBAQAogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KICAqIDxwYXJhPgogICogPHByb2dyYW1saXN0aW5nPgotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPWthdGUub2dnICEgb2dnZGVtdXggISBrYXRlcGFyc2UgISBmYWtlc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj1rYXRlLm9nZyAhIG9nZ2RlbXV4ICEga2F0ZXBhcnNlICEgZmFrZXNpbmsKICAqIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgKiBUaGlzIHBpcGVsaW5lIHNob3dzIHRoYXQgdGhlIHN0cmVhbWhlYWRlciBpcyBzZXQgaW4gdGhlIGNhcHMsIGFuZCB0aGF0IGVhY2gKICAqIGJ1ZmZlciBoYXMgdGhlIHRpbWVzdGFtcCwgZHVyYXRpb24sIG9mZnNldCwgYW5kIG9mZnNldF9lbmQgc2V0LgogICogPC9wYXJhPgogICogPHBhcmE+CiAgKiA8cHJvZ3JhbWxpc3Rpbmc+Ci0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249a2F0ZS5vZ2cgISBvZ2dkZW11eCAhIGthdGVwYXJzZSBcCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPWthdGUub2dnICEgb2dnZGVtdXggISBrYXRlcGFyc2UgXAogICogICAgICAgICAgICAhIG9nZ211eCAhIGZpbGVzaW5rIGxvY2F0aW9uPWthdGUtcmVtdXhlZC5vZ2cKICAqIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgKiBUaGlzIHBpcGVsaW5lIHNob3dzIHJlbXV4aW5nLiBrYXRlLXJlbXV4ZWQub2dnIG1pZ2h0IG5vdCBiZSBleGFjdGx5IHRoZSBzYW1lCmRpZmYgLS1naXQgYS9leHQva2F0ZS9nc3RrYXRlc3B1LmMgYi9leHQva2F0ZS9nc3RrYXRlc3B1LmMKaW5kZXggYmRmMGRkOC4uYjc4MzhjMSAxMDA2NDQKLS0tIGEvZXh0L2thdGUvZ3N0a2F0ZXNwdS5jCisrKyBiL2V4dC9rYXRlL2dzdGthdGVzcHUuYwpAQCAtOTExLDcgKzkxMSw2IEBACiAKIGVycm9yOgogICBrYXRlX3RyYWNrZXJfY2xlYXIgKCZraW4pOwotICBpZiAoYnl0ZXMpCi0gICAgZ19mcmVlIChieXRlcyk7CisgIGdfZnJlZSAoYnl0ZXMpOwogICByZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL2V4dC9rYXRlL2dzdGthdGV0YWcuYyBiL2V4dC9rYXRlL2dzdGthdGV0YWcuYwppbmRleCBiN2Q4OGVkLi5lMjgwOTE3IDEwMDY0NAotLS0gYS9leHQva2F0ZS9nc3RrYXRldGFnLmMKKysrIGIvZXh0L2thdGUvZ3N0a2F0ZXRhZy5jCkBAIC00NCwyMCArNDQsMjAgQEAKICAqIDwvcGFyYT4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+CiAgKiA8cGFyYT4KLSAqIFRoaXMgZWxlbWVudCBpcyBvbmx5IHVzZWZ1bCB3aXRoIGdzdC1sYXVuY2ggZm9yIG1vZGlmeWluZyB0aGUgbGFuZ3VhZ2UKKyAqIFRoaXMgZWxlbWVudCBpcyBvbmx5IHVzZWZ1bCB3aXRoIGdzdC1sYXVuY2gtMS4wIGZvciBtb2RpZnlpbmcgdGhlIGxhbmd1YWdlCiAgKiBhbmQvb3IgY2F0ZWdvcnkgKHdoaWNoIGFyZSBwcm9wZXJ0aWVzIG9mIHRoZSBzdHJlYW0gbG9jYXRlZCBpbiB0aGUga2F0ZQogICogYmVnaW5uaW5nIG9mIHN0cmVhbSBoZWFkZXIpLCBiZWNhdXNlIGl0IGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyB0aGUgdGFncwogICogb24gYSAjR3N0VGFnU2V0dGVyIGludGVyZmFjZS4gQ29uY2VwdHVhbGx5LCB0aGUgZWxlbWVudCB3aWxsIHVzdWFsbHkgYmUKICAqIHVzZWQgbGlrZToKICAqIDxwcm9ncmFtbGlzdGluZz4KLSAqIGdzdC1sYXVuY2ggLXYgZmlsZXNyYyBsb2NhdGlvbj1mb28ub2dnICEgb2dnZGVtdXggISBrYXRldGFnICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249YmFyLm9nZworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj1mb28ub2dnICEgb2dnZGVtdXggISBrYXRldGFnICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249YmFyLm9nZwogICogPC9wcm9ncmFtbGlzdGluZz4KICAqIDwvcGFyYT4KICAqIDxwYXJhPgogICogVGhpcyBwaXBlbGluZSB3aWxsIHNldCB0aGUgbGFuZ3VhZ2UgYW5kIGNhdGVnb3J5IG9mIHRoZSBzdHJlYW0gdG8gdGhlCiAgKiBnaXZlbiB2YWx1ZXM6CiAgKiA8cHJvZ3JhbWxpc3Rpbmc+Ci0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249Zm9vLm9nZyAhIG9nZ2RlbXV4ICEga2F0ZXRhZyBsYW5ndWFnZT1wdF9CUiBjYXRlZ29yeT1zdWJ0aXRsZXMgISBvZ2dtdXggISBmaWxlc2luayBsb2NhdGlvbj1iYXIub2dnCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPWZvby5vZ2cgISBvZ2dkZW11eCAhIGthdGV0YWcgbGFuZ3VhZ2U9cHRfQlIgY2F0ZWdvcnk9c3VidGl0bGVzICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249YmFyLm9nZwogICogPC9wcm9ncmFtbGlzdGluZz4KICAqIDwvcGFyYT4KICAqIDwvcmVmc2VjdDI+CmRpZmYgLS1naXQgYS9leHQva2F0ZS9nc3RrYXRldXRpbC5jIGIvZXh0L2thdGUvZ3N0a2F0ZXV0aWwuYwppbmRleCA5Mzc3N2FiLi5jZjFhMmFmIDEwMDY0NAotLS0gYS9leHQva2F0ZS9nc3RrYXRldXRpbC5jCisrKyBiL2V4dC9rYXRlL2dzdGthdGV1dGlsLmMKQEAgLTM3MSwxMSArMzcxLDkgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qIHVwZGF0ZSBwcm9wZXJ0aWVzICovCi0gICAgICAgIGlmIChkZWNvZGVyLT5sYW5ndWFnZSkKLSAgICAgICAgICBnX2ZyZWUgKGRlY29kZXItPmxhbmd1YWdlKTsKKyAgICAgICAgZ19mcmVlIChkZWNvZGVyLT5sYW5ndWFnZSk7CiAgICAgICAgIGRlY29kZXItPmxhbmd1YWdlID0gZ19zdHJkdXAgKGRlY29kZXItPmsua2ktPmxhbmd1YWdlKTsKLSAgICAgICAgaWYgKGRlY29kZXItPmNhdGVnb3J5KQotICAgICAgICAgIGdfZnJlZSAoZGVjb2Rlci0+Y2F0ZWdvcnkpOworICAgICAgICBnX2ZyZWUgKGRlY29kZXItPmNhdGVnb3J5KTsKICAgICAgICAgZGVjb2Rlci0+Y2F0ZWdvcnkgPSBnX3N0cmR1cCAoZGVjb2Rlci0+ay5raS0+Y2F0ZWdvcnkpOwogICAgICAgICBkZWNvZGVyLT5vcmlnaW5hbF9jYW52YXNfd2lkdGggPSBkZWNvZGVyLT5rLmtpLT5vcmlnaW5hbF9jYW52YXNfd2lkdGg7CiAgICAgICAgIGRlY29kZXItPm9yaWdpbmFsX2NhbnZhc19oZWlnaHQgPSBkZWNvZGVyLT5rLmtpLT5vcmlnaW5hbF9jYW52YXNfaGVpZ2h0OwpkaWZmIC0tZ2l0IGEvZXh0L2xhZHNwYS9NYWtlZmlsZS5pbiBiL2V4dC9sYWRzcGEvTWFrZWZpbGUuaW4KaW5kZXggZWExNGIxZS4uOWM0ZjFkNSAxMDA2NDQKLS0tIGEvZXh0L2xhZHNwYS9NYWtlZmlsZS5pbgorKysgYi9leHQvbGFkc3BhL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OSw2ICsyNzgsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNiw2ICszMTcsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNCw3ICszMjcsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDMsOCArMzQ1LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MSwxNiArMzY0LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Niw2ICs0MDAsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjEsNiArNDI3LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIyLDYgKzUzMCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzUsOCArNTQ0LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUyLDYgKzU1OSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDksMTYgKzYxOCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3MCw2ICs2ODEsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgwLDYgKzY5Miw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OSw2ICs3MDIsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI2LDcgKzc0MSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2xhZHNwYS9nc3RsYWRzcGEuYyBiL2V4dC9sYWRzcGEvZ3N0bGFkc3BhLmMKaW5kZXggMDJiYjE3OS4uZGYwNjY5MyAxMDA2NDQKLS0tIGEvZXh0L2xhZHNwYS9nc3RsYWRzcGEuYworKysgYi9leHQvbGFkc3BhL2dzdGxhZHNwYS5jCkBAIC0zNyw5ICszNyw5IEBACiAgKiB8WwogICogKHBhZHNwKSBsaXN0cGx1Z2lucwogICogKHBhZHNwKSBhbmFseXNlcGx1Z2luIGNtdC5zbyBhbXBfbW9ubwotICogZ3N0LWxhdW5jaCAtZSBmaWxlc3JjIGxvY2F0aW9uPSIkbXlmaWxlIiAhIGRlY29kZWJpbiAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISAiYXVkaW8veC1yYXcsZm9ybWF0PVMxNkxFLHJhdGU9NDgwMDAsY2hhbm5lbHM9MSIgISB3YXZlbmMgISBmaWxlc2luayBsb2NhdGlvbj0idGVzdGluLndhdiIKKyAqIGdzdC1sYXVuY2gtMS4wIC1lIGZpbGVzcmMgbG9jYXRpb249IiRteWZpbGUiICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhICJhdWRpby94LXJhdyxmb3JtYXQ9UzE2TEUscmF0ZT00ODAwMCxjaGFubmVscz0xIiAhIHdhdmVuYyAhIGZpbGVzaW5rIGxvY2F0aW9uPSJ0ZXN0aW4ud2F2IgogICogKHBhZHNwKSBhcHBseXBsdWdpbiB0ZXN0aW4ud2F2IHRlc3RvdXQud2F2IGNtdC5zbyBhbXBfbW9ubyAyIAotICogZ3N0LWxhdW5jaCBwbGF5YmluIHVyaT1maWxlOi8vIiRQV0QiL3Rlc3RvdXQud2F2CisgKiBnc3QtbGF1bmNoLTEuMCBwbGF5YmluIHVyaT1maWxlOi8vIiRQV0QiL3Rlc3RvdXQud2F2CiAgKiBdfCBEZWNvZGUgYW55IGF1ZGlvIGZpbGUgaW50byB3YXYgd2l0aCB0aGUgZm9ybWF0IGV4cGVjdGVkIGZvciB0aGUgc3BlY2lmaWMgbGFkc3BhIHBsdWdpbiB0byBiZSBhcHBsaWVkLCBhcHBseSB0aGUgbGFkc3BhIGZpbHRlciBhbmQgcGxheSBpdC4KICAqIDwvcmVmc2VjdDI+CiAgKgpAQCAtNDgsNyArNDgsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgTEFEU1BBIGxpbmUgd2l0aCB0aGlzIHBsdWdpbnM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggYXV0b2F1ZGlvc3JjICEgbGFkc3BhLWNtdC1zby1hbXAtbW9ubyBnYWluPTIgISBsYWRzcGEtY2Fwcy1zby1wbGF0ZSAhIGxhZHNwYS10YXAtZWNoby1zby10YXAtc3RlcmVvLWVjaG8gbC1kZWxheT01MDAgci1oYWFzLWRlbGF5PTUwMCAhIHRlZSBuYW1lPW15VCBteVQuICEgcXVldWUgISBhdXRvYXVkaW9zaW5rIG15VC4gISBxdWV1ZSAhIGF1ZGlvY29udmVydCAhIGdvb20gISB2aWRlb2NvbnZlcnQgISB4dmltYWdlc2luayBwaXhlbC1hc3BlY3QtcmF0aW89My80CisgKiBnc3QtbGF1bmNoLTEuMCBhdXRvYXVkaW9zcmMgISBsYWRzcGEtY210LXNvLWFtcC1tb25vIGdhaW49MiAhIGxhZHNwYS1jYXBzLXNvLXBsYXRlICEgbGFkc3BhLXRhcC1lY2hvLXNvLXRhcC1zdGVyZW8tZWNobyBsLWRlbGF5PTUwMCByLWhhYXMtZGVsYXk9NTAwICEgdGVlIG5hbWU9bXlUIG15VC4gISBxdWV1ZSAhIGF1dG9hdWRpb3NpbmsgbXlULiAhIHF1ZXVlICEgYXVkaW9jb252ZXJ0ICEgZ29vbSAhIHZpZGVvY29udmVydCAhIHh2aW1hZ2VzaW5rIHBpeGVsLWFzcGVjdC1yYXRpbz0zLzQKICAqIF18IEdldCBhdWRpbyBpbnB1dCwgZmlsdGVyIGl0IHRocm91Z2ggQ0FQUyBQbGF0ZSBhbmQgVEFQIFN0ZXJlbyBFY2hvLCBwbGF5IGl0IGFuZCBzaG93IGEgdmlzdWFsaXphdGlvbiAocmVjb21tZW5kZWQgaGVhcnBob25lcykuCiAgKiA8L3JlZnNlY3QyPgogICoKQEAgLTgyLDcgKzgyLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIEZpbHRlci9FZmZlY3QvQXVkaW8vTEFEU1BBIGxpbmUgd2l0aCB0aGlzIHBsdWdpbnM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj0iJG15ZmlsZSIgISBkZWNvZGViaW4gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgbGFkc3BhLWNhbGYtc28tcmV2ZXJiIGRlY2F5LXRpbWU9MTUgaGlnaC1mcnEtZGFtcD0yMDAwMCByb29tLXNpemU9NSBkaWZmdXNpb249MSB3ZXQtYW1vdW50PTIgZHJ5LWFtb3VudD0yIHByZS1kZWxheT01MCBiYXNzLWN1dD0yMDAwMCB0cmVibGUtY3V0PTIwMDAwICEgbGFkc3BhLXRhcC1lY2hvLXNvLXRhcC1zdGVyZW8tZWNobyBsLWRlbGF5PTUwMCByLWhhYXMtZGVsYXk9NTAwICEgYXV0b2F1ZGlvc2luaworICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj0iJG15ZmlsZSIgISBkZWNvZGViaW4gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgbGFkc3BhLWNhbGYtc28tcmV2ZXJiIGRlY2F5LXRpbWU9MTUgaGlnaC1mcnEtZGFtcD0yMDAwMCByb29tLXNpemU9NSBkaWZmdXNpb249MSB3ZXQtYW1vdW50PTIgZHJ5LWFtb3VudD0yIHByZS1kZWxheT01MCBiYXNzLWN1dD0yMDAwMCB0cmVibGUtY3V0PTIwMDAwICEgbGFkc3BhLXRhcC1lY2hvLXNvLXRhcC1zdGVyZW8tZWNobyBsLWRlbGF5PTUwMCByLWhhYXMtZGVsYXk9NTAwICEgYXV0b2F1ZGlvc2luawogICogXXwgRGVjb2RlIGFueSBhdWRpbyBmaWxlLCBmaWx0ZXIgaXQgdGhyb3VnaCBDYWxmIFJldmVyYiBMQURTUEEgdGhlbiBUQVAgU3RlcmVvIEVjaG8sIGFuZCBwbGF5IGl0LgogICogPC9yZWZzZWN0Mj4KICAqIDwvbGlzdGl0ZW0+CkBAIC05MCwxOSArOTAsMTkgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIFNvdXJjZS9BdWRpby9MQURTUEEgbGluZSB3aXRoIHRoaXMgcGx1Z2luczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBsYWRzcGFzcmMtc2luZS1zby1zaW5lLWZjYWMgZnJlcXVlbmN5PTIyMCBhbXBsaXR1ZGU9MTAwICEgYXVkaW9jb252ZXJ0ICEgYXV0b2F1ZGlvc2luaworICogZ3N0LWxhdW5jaC0xLjAgbGFkc3Bhc3JjLXNpbmUtc28tc2luZS1mY2FjIGZyZXF1ZW5jeT0yMjAgYW1wbGl0dWRlPTEwMCAhIGF1ZGlvY29udmVydCAhIGF1dG9hdWRpb3NpbmsKICAqIF18IEdlbmVyYXRlIGEgc2luZSB3YXZlIHdpdGggU2luZSBPc2NpbGxhdG9yIChGcmVxOmNvbnRyb2wsIEFtcDpjb250cm9sKSBhbmQgcGxheSBpdC4KICAqIDwvcmVmc2VjdDI+CiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBTb3VyY2UvQXVkaW8vTEFEU1BBIGxpbmUgd2l0aCB0aGlzIHBsdWdpbnM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggbGFkc3Bhc3JjLWNhcHMtc28tY2xpY2sgYnBtPTI0MCB2b2x1bWU9MSAhIGF1dG9hdWRpb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGxhZHNwYXNyYy1jYXBzLXNvLWNsaWNrIGJwbT0yNDAgdm9sdW1lPTEgISBhdXRvYXVkaW9zaW5rCiAgKiBdfCBHZW5lcmF0ZSBjbGlja3Mgd2l0aCBDQVBTIENsaWNrIC0gTWV0cm9ub21lIGF0IDI0MCBiZWF0cyBwZXIgbWludXRlIGFuZCBwbGF5IGl0LgogICogPC9yZWZzZWN0Mj4KICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIFNvdXJjZS9BdWRpby9MQURTUEEgbGluZSB3aXRoIHRoaXMgcGx1Z2luczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBsYWRzcGFzcmMtcmFuZG9tLTE2NjEtc28tcmFuZG9tLWZjc2Mtb2EgISBsYWRzcGEtY210LXNvLWFtcC1tb25vIGdhaW49MS41ICEgbGFkc3BhLWNhcHMtc28tcGxhdGUgISB0ZWUgbmFtZT1teVQgbXlULiAhIHF1ZXVlICEgYXV0b2F1ZGlvc2luayBteVQuICEgcXVldWUgISBhdWRpb2NvbnZlcnQgISB3YXZlc2NvcGUgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBsYWRzcGFzcmMtcmFuZG9tLTE2NjEtc28tcmFuZG9tLWZjc2Mtb2EgISBsYWRzcGEtY210LXNvLWFtcC1tb25vIGdhaW49MS41ICEgbGFkc3BhLWNhcHMtc28tcGxhdGUgISB0ZWUgbmFtZT1teVQgbXlULiAhIHF1ZXVlICEgYXV0b2F1ZGlvc2luayBteVQuICEgcXVldWUgISBhdWRpb2NvbnZlcnQgISB3YXZlc2NvcGUgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCiAgKiBdfCBHZW5lcmF0ZSByYW5kb20gd2F2ZSwgZmlsdGVyIGl0IHRyaG91Z2ggTW9ubyBBbXBsaWZpZXIgYW5kIFZlcnNhdGlsZSBQbGF0ZSBSZXZlcmIsIGFuZCBwbGF5LCB3aGlsZSBzaG93aW5nLCBpdC4KICAqIDwvcmVmc2VjdDI+CiAgKiA8L2xpc3RpdGVtPgpAQCAtMTEwLDcgKzExMCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBTaW5rL0F1ZGlvL0xBRFNQQSBsaW5lIHdpdGggdGhpcyBwbHVnaW5zPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGF1dG9hdWRpb3NyYyAhIGxhZHNwYS1jbXQtc28tYW1wLW1vbm8gZ2Fpbj0yICEgbGFkc3BhLWNhcHMtc28tcGxhdGUgISBsYWRzcGEtdGFwLWVjaG8tc28tdGFwLXN0ZXJlby1lY2hvIGwtZGVsYXk9NTAwIHItaGFhcy1kZWxheT01MDAgISB0ZWUgbmFtZT1teVQgbXlULiAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBxdWV1ZSAhIGxhZHNwYXNpbmstY210LXNvLW51bGwtYWkgbXlULiAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBxdWV1ZSAhIGdvb20gISB2aWRlb2NvbnZlcnQgISB4dmltYWdlc2luayBwaXhlbC1hc3BlY3QtcmF0aW89My80CisgKiBnc3QtbGF1bmNoLTEuMCBhdXRvYXVkaW9zcmMgISBsYWRzcGEtY210LXNvLWFtcC1tb25vIGdhaW49MiAhIGxhZHNwYS1jYXBzLXNvLXBsYXRlICEgbGFkc3BhLXRhcC1lY2hvLXNvLXRhcC1zdGVyZW8tZWNobyBsLWRlbGF5PTUwMCByLWhhYXMtZGVsYXk9NTAwICEgdGVlIG5hbWU9bXlUIG15VC4gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgcXVldWUgISBsYWRzcGFzaW5rLWNtdC1zby1udWxsLWFpIG15VC4gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgcXVldWUgISBnb29tICEgdmlkZW9jb252ZXJ0ICEgeHZpbWFnZXNpbmsgcGl4ZWwtYXNwZWN0LXJhdGlvPTMvNAogICogXXwgR2V0IGF1ZGlvIGlucHV0LCBmaWx0ZXIgaXQgdHJob3VnaCBNb25vIEFtcGxpZmllciwgQ0FQUyBQbGF0ZSBMQURTUEEgYW5kIFRBUCBTdGVyZW8gRWNobywgZXhwbGljaXRpbHkgYW51bGF0ZSBhdWRpbyB3aXRoIE51bGwgKEF1ZGlvIE91dHB1dCksIGFuZCBwbGF5IGEgdmlzdWFsaXphdGlvbiAocmVjb21tZW5kZWQgaGVhcnBob25lcykuCiAgKiA8L3JlZnNlY3QyPgogICogPC9saXN0aXRlbT4KZGlmZiAtLWdpdCBhL2V4dC9sYWRzcGEvZ3N0bGFkc3BhZmlsdGVyLmMgYi9leHQvbGFkc3BhL2dzdGxhZHNwYWZpbHRlci5jCmluZGV4IDY5ZDBlNjMuLjJkMWVhNDUgMTAwNjQ0Ci0tLSBhL2V4dC9sYWRzcGEvZ3N0bGFkc3BhZmlsdGVyLmMKKysrIGIvZXh0L2xhZHNwYS9nc3RsYWRzcGFmaWx0ZXIuYwpAQCAtMTA1LDIwICsxMDUsMTkgQEAKICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwogICB9CiAKLSAgR1NUX0RFQlVHX09CSkVDVCAobGFkc3BhX2RlYnVnLCAidHJhbnNmb3JtZWQgJSIgR1NUX1BUUl9GT1JNQVQsIHJldCk7CisgIEdTVF9ERUJVR19PQkpFQ1QgKGJhc2UsICJ0cmFuc2Zvcm1lZCAlIiBHU1RfUFRSX0ZPUk1BVCwgcmV0KTsKIAogICBpZiAoZmlsdGVyKSB7CiAgICAgR3N0Q2FwcyAqaW50ZXJzZWN0aW9uOwogCi0gICAgR1NUX0RFQlVHX09CSkVDVCAobGFkc3BhX2RlYnVnLCAiVXNpbmcgZmlsdGVyIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsCi0gICAgICAgIGZpbHRlcik7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZSwgIlVzaW5nIGZpbHRlciBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBmaWx0ZXIpOwogCiAgICAgaW50ZXJzZWN0aW9uID0KICAgICAgICAgZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGZpbHRlciwgcmV0LCBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOwogICAgIGdzdF9jYXBzX3VucmVmIChyZXQpOwogICAgIHJldCA9IGludGVyc2VjdGlvbjsKIAotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGxhZHNwYV9kZWJ1ZywgIkludGVyc2VjdGlvbiAlIiBHU1RfUFRSX0ZPUk1BVCwgcmV0KTsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChiYXNlLCAiSW50ZXJzZWN0aW9uICUiIEdTVF9QVFJfRk9STUFULCByZXQpOwogICB9CiAKICAgZ3N0X2NhcHNfdW5yZWYgKHNyY2NhcHMpOwpkaWZmIC0tZ2l0IGEvZXh0L2xpYmRlMjY1L01ha2VmaWxlLmluIGIvZXh0L2xpYmRlMjY1L01ha2VmaWxlLmluCmluZGV4IDMyMjkyMjUuLjY0MDVhYmIgMTAwNjQ0Ci0tLSBhL2V4dC9saWJkZTI2NS9NYWtlZmlsZS5pbgorKysgYi9leHQvbGliZGUyNjUvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvbGliZGUyNjUvbGliZGUyNjUtZGVjLmMgYi9leHQvbGliZGUyNjUvbGliZGUyNjUtZGVjLmMKaW5kZXggN2NiYTM3YS4uZTExZjEyYyAxMDA2NDQKLS0tIGEvZXh0L2xpYmRlMjY1L2xpYmRlMjY1LWRlYy5jCisrKyBiL2V4dC9saWJkZTI2NS9saWJkZTI2NS1kZWMuYwpAQCAtNDEsNTggKzQxLDYgQEAKIAogI2luY2x1ZGUgImxpYmRlMjY1LWRlYy5oIgogCi0jaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAzNiwgMCkKLSNpbmNsdWRlIDxzdGRpby5oPgotI2lmZGVmIEhBVkVfVU5JU1REX0gKLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNlbmRpZgotI2lmZGVmIEdfT1NfV0lOMzIKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLSNkZWZpbmUgZ19nZXRfbnVtX3Byb2Nlc3NvcnMgZ3N0X2dfZ2V0X251bV9wcm9jZXNzb3JzCi1zdGF0aWMgZ3VpbnQKLWdzdF9nX2dldF9udW1fcHJvY2Vzc29ycyAodm9pZCkKLXsKLSAgZ3VpbnQgdGhyZWFkcyA9IDA7Ci0KLSNpZiBkZWZpbmVkKF9TQ19OUFJPQ19PTkxOKQotICB0aHJlYWRzID0gc3lzY29uZiAoX1NDX05QUk9DX09OTE4pOwotI2VsaWYgZGVmaW5lZChfU0NfTlBST0NFU1NPUlNfT05MTikKLSAgdGhyZWFkcyA9IHN5c2NvbmYgKF9TQ19OUFJPQ0VTU09SU19PTkxOKTsKLSNlbGlmIGRlZmluZWQoR19PU19XSU4zMikKLSAgewotICAgIFNZU1RFTV9JTkZPIHN5c2luZm87Ci0gICAgRFdPUkRfUFRSIHByb2Nlc3NfY3B1czsKLSAgICBEV09SRF9QVFIgc3lzdGVtX2NwdXM7Ci0KLSAgICAvKiBUaGlzICpuZXZlciogZmFpbHMsIGJ1dCBkb2Vzbid0IHRha2UgQ1BVIGFmZmluaXR5IGludG8gYWNjb3VudCAqLwotICAgIEdldFN5c3RlbUluZm8gKCZzeXNpbmZvKTsKLSAgICB0aHJlYWRzID0gKGludCkgc3lzaW5mby5kd051bWJlck9mUHJvY2Vzc29yczsKLQotICAgIC8qIFRoaXMgKmNhbiogZmFpbCwgYnV0IHByb2R1Y2VzIGNvcnJlY3QgcmVzdWx0cyBpZiBhZmZpbml0eSBtYXNrIGlzIHVzZWQsCi0gICAgICogdW5saWtlIHRoZSBzaW1wbGVyIGNvZGUgYWJvdmUuCi0gICAgICovCi0gICAgaWYgKEdldFByb2Nlc3NBZmZpbml0eU1hc2sgKEdldEN1cnJlbnRQcm9jZXNzICgpLAotICAgICAgICAgICAgJnByb2Nlc3NfY3B1cywgJnN5c3RlbV9jcHVzKSkgewotICAgICAgdW5zaWduZWQgaW50IGNvdW50OwotCi0gICAgICBmb3IgKGNvdW50ID0gMDsgcHJvY2Vzc19jcHVzICE9IDA7IHByb2Nlc3NfY3B1cyA+Pj0gMSkKLSAgICAgICAgaWYgKHByb2Nlc3NfY3B1cyAmIDEpCi0gICAgICAgICAgY291bnQrKzsKLSAgICB9Ci0gIH0KLSNlbHNlCi0jd2FybmluZyAiRG9uJ3Qga25vdyBob3cgdG8gZ2V0IG51bWJlciBvZiBDUFUgY29yZXMsIHdpbGwgdXNlIHRoZSBkZWZhdWx0IHRocmVhZCBjb3VudCIKLSAgdGhyZWFkcyA9IERFRkFVTFRfVEhSRUFEX0NPVU5UOwotI2VuZGlmCi0KLSAgaWYgKHRocmVhZHMgPiAwKQotICAgIHJldHVybiB0aHJlYWRzOwotCi0gIHJldHVybiAxOwotfQotI2VuZGlmIC8qICFHTElCX0NIRUNLX1ZFUlNJT04oMiwgMzYsIDApICovCi0KIC8qIHVzZSB0d28gZGVjb2RlciB0aHJlYWRzIGlmIG5vIGluZm9ybWF0aW9uIGFib3V0CiAgKiBhdmFpbGFibGUgQ1BVIGNvcmVzIGNhbiBiZSByZXRyaWV2ZWQgKi8KICNkZWZpbmUgREVGQVVMVF9USFJFQURfQ09VTlQgICAgICAgIDIKZGlmZiAtLWdpdCBhL2V4dC9saWJtbXMvTWFrZWZpbGUuaW4gYi9leHQvbGlibW1zL01ha2VmaWxlLmluCmluZGV4IDc5NWFiZGUuLjJhNTMzNmMgMTAwNjQ0Ci0tLSBhL2V4dC9saWJtbXMvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2xpYm1tcy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9saWJtbXMvZ3N0bW1zLmMgYi9leHQvbGlibW1zL2dzdG1tcy5jCmluZGV4IDI1OTM4YzguLjVlM2ZmMzggMTAwNjQ0Ci0tLSBhL2V4dC9saWJtbXMvZ3N0bW1zLmMKKysrIGIvZXh0L2xpYm1tcy9nc3RtbXMuYwpAQCAtNjA5LDggKzYwOSw3IEBACiAgIH0KIAogICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7Ci0gIGlmIChzcmMtPnVyaV9uYW1lKQotICAgIGdfZnJlZSAoc3JjLT51cmlfbmFtZSk7CisgIGdfZnJlZSAoc3JjLT51cmlfbmFtZSk7CiAgIHNyYy0+dXJpX25hbWUgPSBmaXhlZF91cmk7CiAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOwogCmRpZmYgLS1naXQgYS9leHQvbGlidmlzdWFsL01ha2VmaWxlLmluIGIvZXh0L2xpYnZpc3VhbC9NYWtlZmlsZS5pbgppbmRleCA5ZTU5MjY0Li5jODZmM2E0IDEwMDY0NAotLS0gYS9leHQvbGlidmlzdWFsL01ha2VmaWxlLmluCisrKyBiL2V4dC9saWJ2aXN1YWwvTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNzIsNiArMjcxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMDksNiArMzEwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTcsNyArMzIwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM2LDggKzMzOCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTQsMTYgKzM1NywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zODksNiArMzkzLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE0LDYgKzQyMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNSw2ICs1MjMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTI4LDggKzUzNyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0NSw2ICs1NTIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjAyLDE2ICs2MTEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjMsNiArNjc0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Myw2ICs2ODUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODIsNiArNjk1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcxOSw3ICs3MzQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9saWJ2aXN1YWwvdmlzdWFsLWdsLmMgYi9leHQvbGlidmlzdWFsL3Zpc3VhbC1nbC5jCmluZGV4IDg4YjQ0MTkuLjg1YzkxZTAgMTAwNjQ0Ci0tLSBhL2V4dC9saWJ2aXN1YWwvdmlzdWFsLWdsLmMKKysrIGIvZXh0L2xpYnZpc3VhbC92aXN1YWwtZ2wuYwpAQCAtMjcsNyArMjcsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGF1ZGlvdGVzdHNyYyAhIGxpYnZpc3VhbF9nbF9sdl9mbG93ZXIgISBnbGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgYXVkaW90ZXN0c3JjICEgbGlidmlzdWFsX2dsX2x2X2Zsb3dlciAhIGdsaW1hZ2VzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZXh0L2x2Mi9NYWtlZmlsZS5pbiBiL2V4dC9sdjIvTWFrZWZpbGUuaW4KaW5kZXggNDJlYWU0Mi4uMjAwNGU1YiAxMDA2NDQKLS0tIGEvZXh0L2x2Mi9NYWtlZmlsZS5pbgorKysgYi9leHQvbHYyL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L21pbWljL01ha2VmaWxlLmluIGIvZXh0L21pbWljL01ha2VmaWxlLmluCmluZGV4IDcyYjM0NzkuLjE0NTQ4MzEgMTAwNjQ0Ci0tLSBhL2V4dC9taW1pYy9NYWtlZmlsZS5pbgorKysgYi9leHQvbWltaWMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvbW9kcGx1Zy9NYWtlZmlsZS5pbiBiL2V4dC9tb2RwbHVnL01ha2VmaWxlLmluCmluZGV4IGZjNDA2MzQuLjdlMjA1MWEgMTAwNjQ0Ci0tLSBhL2V4dC9tb2RwbHVnL01ha2VmaWxlLmluCisrKyBiL2V4dC9tb2RwbHVnL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L21vZHBsdWcvZ3N0bW9kcGx1Zy5jYyBiL2V4dC9tb2RwbHVnL2dzdG1vZHBsdWcuY2MKaW5kZXggNjgzZmJhYS4uZmYzNjQxZCAxMDA2NDQKLS0tIGEvZXh0L21vZHBsdWcvZ3N0bW9kcGx1Zy5jYworKysgYi9leHQvbW9kcGx1Zy9nc3Rtb2RwbHVnLmNjCkBAIC05MSw3ICs5MSw3IEBACiAjZGVmaW5lIERFRkFVTFRfT1ZFUlNBTVAgICAgICAgICBUUlVFCiAjZGVmaW5lIERFRkFVTFRfTk9JU0VfUkVEVUNUSU9OICBUUlVFCiAKLSNkZWZpbmUgRk9STUFUUyAieyAiR1NUX0FVRElPX05FIChTMzIpIiwgIkdTVF9BVURJT19ORSAoUzE2KSIsIFU4IH0iCisjZGVmaW5lIEZPUk1BVFMgInsgIiBHU1RfQVVESU9fTkUgKFMzMikgIiwgIiBHU1RfQVVESU9fTkUgKFMxNikgIiwgVTggfSIKIAogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIG1vZHBsdWdfc3JjX3RlbXBsYXRlX2ZhY3RvcnkgPQogR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLApkaWZmIC0tZ2l0IGEvZXh0L21wZWcyZW5jL01ha2VmaWxlLmluIGIvZXh0L21wZWcyZW5jL01ha2VmaWxlLmluCmluZGV4IGYzMDQ3NzYuLmZkZjVhYTIgMTAwNjQ0Ci0tLSBhL2V4dC9tcGVnMmVuYy9NYWtlZmlsZS5pbgorKysgYi9leHQvbXBlZzJlbmMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc4LDYgKzI3Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE1LDYgKzMxNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIzLDcgKzMyNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Miw4ICszNDQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYwLDE2ICszNjMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk1LDYgKzM5OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMCw2ICs0MjYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjEsNiArNTI5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNCw4ICs1NDMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTEsNiArNTU4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOCwxNiArNjE3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY5LDYgKzY4MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzksNiArNjkxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg4LDYgKzcwMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjUsNyArNzQwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvbXBlZzJlbmMvZ3N0bXBlZzJlbmMuY2MgYi9leHQvbXBlZzJlbmMvZ3N0bXBlZzJlbmMuY2MKaW5kZXggOWU2MzFlMy4uNWM2ODZjYyAxMDA2NDQKLS0tIGEvZXh0L21wZWcyZW5jL2dzdG1wZWcyZW5jLmNjCisrKyBiL2V4dC9tcGVnMmVuYy9nc3RtcGVnMmVuYy5jYwpAQCAtMzQsNyArMzQsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2gtMC4xMCB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MTAwMCAhIG1wZWcyZW5jICEgZmlsZXNpbmsgbG9jYXRpb249dmlkZW90ZXN0c3JjLm0xdgorICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTEwMDAgISBtcGVnMmVuYyAhIGZpbGVzaW5rIGxvY2F0aW9uPXZpZGVvdGVzdHNyYy5tMXYKICAqIF18IFRoaXMgZXhhbXBsZSBwaXBlbGluZSB3aWxsIGVuY29kZSBhIHRlc3QgdmlkZW8gc291cmNlIHRvIGEgYW4gTVBFRzEKICAqIGVsZW1lbnRhcnkgc3RyZWFtICh3aXRoIEdlbmVyaWMgTVBFRzEgcHJvZmlsZSkuCiAgKiA8cGFyYT4KQEAgLTQ3LDcgKzQ3LDcgQEAKICAqIGluIHRoZSBleGFtcGxlIGFib3ZlKSBhbGxvdyBtb3N0IHBhcmFtZXRlcnMgdG8gYmUgYWRqdXN0ZWQuCiAgKiA8L3BhcmE+CiAgKiB8WwotICogZ3N0LWxhdW5jaC0wLjEwIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xMDAwICEgdmlkZW9zY2FsZSAhIG1wZWcyZW5jIGZvcm1hdD0xIG5vcm09cCAhIGZpbGVzaW5rIGxvY2F0aW9uPXZpZGVvdGVzdHNyYy5tMXYKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xMDAwICEgdmlkZW9zY2FsZSAhIG1wZWcyZW5jIGZvcm1hdD0xIG5vcm09cCAhIGZpbGVzaW5rIGxvY2F0aW9uPXZpZGVvdGVzdHNyYy5tMXYKICAqIF18IFRoaXMgd2lsbCBwcm9kdWNlIGFuIE1QRUcxIHByb2ZpbGUgc3RyZWFtIGFjY29yZGluZyB0byBWQ0QyLjAgc3BlY2lmaWNhdGlvbnMKICAqIGZvciBQQUwgI0dzdE1wZWcyZW5jOm5vcm0gKGFzIHRoZSBpbWFnZSBoZWlnaHQgaXMgZGVwZW5kZW50IG9uIHZpZGVvIG5vcm0pLgogICogPC9yZWZzZWN0Mj4KQEAgLTI1NSw3ICsyNTUsNyBAQAogICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKIAogICBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX25ldyAoInZpZGVvL3gtcmF3IiwKLSAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCAnSTQyMCcsIE5VTEwpOworICAgICAgImZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJJNDIwIiwgTlVMTCk7CiAKICAgc3dpdGNoIChlbmMtPm9wdGlvbnMtPm5vcm0pIHsKICAgICBjYXNlIDA6CmRpZmYgLS1naXQgYS9leHQvbXBnMTIzL01ha2VmaWxlLmFtIGIvZXh0L21wZzEyMy9NYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM5NjIwNy4uMDAwMDAwMAotLS0gYS9leHQvbXBnMTIzL01ha2VmaWxlLmFtCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0bXBnMTIzLmxhCi0KLWxpYmdzdG1wZzEyM19sYV9TT1VSQ0VTID0gZ3N0bXBnMTIzYXVkaW9kZWMuYwotbGliZ3N0bXBnMTIzX2xhX0NGTEFHUyA9IC1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKLQkkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKE1QRzEyM19DRkxBR1MpCi1saWJnc3RtcGcxMjNfbGFfTElCQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChNUEcxMjNfTElCUykKLWxpYmdzdG1wZzEyM19sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCi1saWJnc3RtcGcxMjNfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKLQotbm9pbnN0X0hFQURFUlMgPSBnc3RtcGcxMjNhdWRpb2RlYy5oCmRpZmYgLS1naXQgYS9leHQvbXBnMTIzL01ha2VmaWxlLmluIGIvZXh0L21wZzEyMy9NYWtlZmlsZS5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM0OTRkOC4uMDAwMDAwMAotLS0gYS9leHQvbXBnMTIzL01ha2VmaWxlLmluCisrKyAvZGV2L251bGwKQEAgLTEsMTEwNiArMCwwIEBACi0jIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjE1IGZyb20gTWFrZWZpbGUuYW0uCi0jIEBjb25maWd1cmVfaW5wdXRACi0KLSMgQ29weXJpZ2h0IChDKSAxOTk0LTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0KLSMgVGhpcyBNYWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0jIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi0jIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLQotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXc7IHdpdGhvdXQKLSMgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQotIyBQQVJUSUNVTEFSIFBVUlBPU0UuCi0KLUBTRVRfTUFLRUAKLQotCi1WUEFUSCA9IEBzcmNkaXJACi1hbV9faXNfZ251X21ha2UgPSB7IFwKLSAgaWYgdGVzdCAteiAnJChNQUtFTEVWRUwpJzsgdGhlbiBcCi0gICAgZmFsc2U7IFwKLSAgZWxpZiB0ZXN0IC1uICckKE1BS0VfSE9TVCknOyB0aGVuIFwKLSAgICB0cnVlOyBcCi0gIGVsaWYgdGVzdCAtbiAnJChNQUtFX1ZFUlNJT04pJyAmJiB0ZXN0IC1uICckKENVUkRJUiknOyB0aGVuIFwKLSAgICB0cnVlOyBcCi0gIGVsc2UgXAotICAgIGZhbHNlOyBcCi0gIGZpOyBcCi19Ci1hbV9fbWFrZV9ydW5uaW5nX3dpdGhfb3B0aW9uID0gXAotICBjYXNlICQke3RhcmdldF9vcHRpb24tfSBpbiBcCi0gICAgICA/KSA7OyBcCi0gICAgICAqKSBlY2hvICJhbV9fbWFrZV9ydW5uaW5nX3dpdGhfb3B0aW9uOiBpbnRlcm5hbCBlcnJvcjogaW52YWxpZCIgXAotICAgICAgICAgICAgICAidGFyZ2V0IG9wdGlvbiAnJCR7dGFyZ2V0X29wdGlvbi19JyBzcGVjaWZpZWQiID4mMjsgXAotICAgICAgICAgZXhpdCAxOzsgXAotICBlc2FjOyBcCi0gIGhhc19vcHQ9bm87IFwKLSAgc2FuZV9tYWtlZmxhZ3M9JCRNQUtFRkxBR1M7IFwKLSAgaWYgJChhbV9faXNfZ251X21ha2UpOyB0aGVuIFwKLSAgICBzYW5lX21ha2VmbGFncz0kJE1GTEFHUzsgXAotICBlbHNlIFwKLSAgICBjYXNlICQkTUFLRUZMQUdTIGluIFwKLSAgICAgICpcXFtcIFwJXSopIFwKLSAgICAgICAgYnM9XFw7IFwKLSAgICAgICAgc2FuZV9tYWtlZmxhZ3M9YHByaW50ZiAnJXNcbicgIiQkTUFLRUZMQUdTIiBcCi0gICAgICAgICAgfCBzZWQgInMvJCRicyQkYnNbJCRicyAkJGJzCV0qLy9nImA7OyBcCi0gICAgZXNhYzsgXAotICBmaTsgXAotICBza2lwX25leHQ9bm87IFwKLSAgc3RyaXBfdHJhaWxvcHQgKCkgXAotICB7IFwKLSAgICBmbGc9YHByaW50ZiAnJXNcbicgIiQkZmxnIiB8IHNlZCAicy8kJDEuKiQkLy8iYDsgXAotICB9OyBcCi0gIGZvciBmbGcgaW4gJCRzYW5lX21ha2VmbGFnczsgZG8gXAotICAgIHRlc3QgJCRza2lwX25leHQgPSB5ZXMgJiYgeyBza2lwX25leHQ9bm87IGNvbnRpbnVlOyB9OyBcCi0gICAgY2FzZSAkJGZsZyBpbiBcCi0gICAgICAqPSp8LS0qKSBjb250aW51ZTs7IFwKLSAgICAgICAgLSpJKSBzdHJpcF90cmFpbG9wdCAnSSc7IHNraXBfbmV4dD15ZXM7OyBcCi0gICAgICAtKkk/Kikgc3RyaXBfdHJhaWxvcHQgJ0knOzsgXAotICAgICAgICAtKk8pIHN0cmlwX3RyYWlsb3B0ICdPJzsgc2tpcF9uZXh0PXllczs7IFwKLSAgICAgIC0qTz8qKSBzdHJpcF90cmFpbG9wdCAnTyc7OyBcCi0gICAgICAgIC0qbCkgc3RyaXBfdHJhaWxvcHQgJ2wnOyBza2lwX25leHQ9eWVzOzsgXAotICAgICAgLSpsPyopIHN0cmlwX3RyYWlsb3B0ICdsJzs7IFwKLSAgICAgIC1bZEVEbV0pIHNraXBfbmV4dD15ZXM7OyBcCi0gICAgICAtW0pUXSkgc2tpcF9uZXh0PXllczs7IFwKLSAgICBlc2FjOyBcCi0gICAgY2FzZSAkJGZsZyBpbiBcCi0gICAgICAqJCR0YXJnZXRfb3B0aW9uKikgaGFzX29wdD15ZXM7IGJyZWFrOzsgXAotICAgIGVzYWM7IFwKLSAgZG9uZTsgXAotICB0ZXN0ICQkaGFzX29wdCA9IHllcwotYW1fX21ha2VfZHJ5cnVuID0gKHRhcmdldF9vcHRpb249bjsgJChhbV9fbWFrZV9ydW5uaW5nX3dpdGhfb3B0aW9uKSkKLWFtX19tYWtlX2tlZXBnb2luZyA9ICh0YXJnZXRfb3B0aW9uPWs7ICQoYW1fX21ha2VfcnVubmluZ193aXRoX29wdGlvbikpCi1wa2dkYXRhZGlyID0gJChkYXRhZGlyKS9AUEFDS0FHRUAKLXBrZ2luY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL0BQQUNLQUdFQAotcGtnbGliZGlyID0gJChsaWJkaXIpL0BQQUNLQUdFQAotcGtnbGliZXhlY2RpciA9ICQobGliZXhlY2RpcikvQFBBQ0tBR0VACi1hbV9fY2QgPSBDRFBBVEg9IiQke1pTSF9WRVJTSU9OKy59JChQQVRIX1NFUEFSQVRPUikiICYmIGNkCi1pbnN0YWxsX3NoX0RBVEEgPSAkKGluc3RhbGxfc2gpIC1jIC1tIDY0NAotaW5zdGFsbF9zaF9QUk9HUkFNID0gJChpbnN0YWxsX3NoKSAtYwotaW5zdGFsbF9zaF9TQ1JJUFQgPSAkKGluc3RhbGxfc2gpIC1jCi1JTlNUQUxMX0hFQURFUiA9ICQoSU5TVEFMTF9EQVRBKQotdHJhbnNmb3JtID0gJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKQotTk9STUFMX0lOU1RBTEwgPSA6Ci1QUkVfSU5TVEFMTCA9IDoKLVBPU1RfSU5TVEFMTCA9IDoKLU5PUk1BTF9VTklOU1RBTEwgPSA6Ci1QUkVfVU5JTlNUQUxMID0gOgotUE9TVF9VTklOU1RBTEwgPSA6Ci1idWlsZF90cmlwbGV0ID0gQGJ1aWxkQAotaG9zdF90cmlwbGV0ID0gQGhvc3RACi10YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACi1zdWJkaXIgPSBleHQvbXBnMTIzCi1BQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00Ci1hbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYWMtZXhwYW5kLm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hdXRvLWFsdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtY29tcGlsZXItZmxhZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtbGlidG9vbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtdmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXhfY3JlYXRlX3N0ZGludF9oLm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9heF9wdGhyZWFkLm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtYXJjaC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LWFyZ3MubTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1jaGVjay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LWRlZmF1bHQubTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1kb3doaWxlLm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtZXJyb3IubTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1mZWF0dXJlLm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtZ2V0dGV4dC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LWdsaWIyLm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtcGFja2FnZS1yZWxlYXNlLWRhdGV0aW1lLm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtcGxhdGZvcm0ubTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1wbHVnaW4tZG9jcy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LXBsdWdpbmRpci5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKLWFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCi0JJChBQ0xPQ0FMX000KQotRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXAotCSQoYW1fX0RJU1RfQ09NTU9OKQotbWtpbnN0YWxsZGlycyA9ICQoaW5zdGFsbF9zaCkgLWQKLUNPTkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmgKLUNPTkZJR19DTEVBTl9GSUxFUyA9Ci1DT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPQotYW1fX3ZwYXRoX2Fkal9zZXR1cCA9IHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzfC58LnxnJ2A7Ci1hbV9fdnBhdGhfYWRqID0gY2FzZSAkJHAgaW4gXAotICAgICQoc3JjZGlyKS8qKSBmPWBlY2hvICIkJHAiIHwgc2VkICJzfF4kJHNyY2RpcnN0cmlwL3x8ImA7OyBcCi0gICAgKikgZj0kJHA7OyBcCi0gIGVzYWM7Ci1hbV9fc3RyaXBfZGlyID0gZj1gZWNobyAkJHAgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7Ci1hbV9faW5zdGFsbF9tYXggPSA0MAotYW1fX25vYmFzZV9zdHJpcF9zZXR1cCA9IFwKLSAgc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKnxdL1xcXFwmL2cnYAotYW1fX25vYmFzZV9zdHJpcCA9IFwKLSAgZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICIkJHAiOyBkb25lIHwgc2VkIC1lICJzfCQkc3JjZGlyc3RyaXAvfHwiCi1hbV9fbm9iYXNlX2xpc3QgPSAkKGFtX19ub2Jhc2Vfc3RyaXBfc2V0dXApOyBcCi0gIGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAiJCRwICQkcCI7IGRvbmUgfCBcCi0gIHNlZCAic3wgJCRzcmNkaXJzdHJpcC98IHw7IicgLyAuKlwvLyFzLyAuKi8gLi87IHMsXCggLipcKS9bXi9dKiQkLFwxLCcgfCBcCi0gICQoQVdLKSAnQkVHSU4geyBmaWxlc1siLiJdID0gIiIgfSB7IGZpbGVzWyQkMl0gPSBmaWxlc1skJDJdICIgIiAkJDE7IFwKLSAgICBpZiAoKytuWyQkMl0gPT0gJChhbV9faW5zdGFsbF9tYXgpKSBcCi0gICAgICB7IHByaW50ICQkMiwgZmlsZXNbJCQyXTsgblskJDJdID0gMDsgZmlsZXNbJCQyXSA9ICIiIH0gfSBcCi0gICAgRU5EIHsgZm9yIChkaXIgaW4gZmlsZXMpIHByaW50IGRpciwgZmlsZXNbZGlyXSB9JwotYW1fX2Jhc2VfbGlzdCA9IFwKLSAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJyB8IFwKLSAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJwotYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpciA9IHsgXAotICB0ZXN0IC16ICIkJGZpbGVzIiBcCi0gICAgfHwgeyB0ZXN0ICEgLWQgIiQkZGlyIiAmJiB0ZXN0ICEgLWYgIiQkZGlyIiAmJiB0ZXN0ICEgLXIgIiQkZGlyIjsgfSBcCi0gICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAotICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAotICB9Ci1hbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIKLUxUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCi1hbV9fREVQRU5ERU5DSUVTXzEgPQotbGliZ3N0bXBnMTIzX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJChhbV9fREVQRU5ERU5DSUVTXzEpCi1hbV9saWJnc3RtcGcxMjNfbGFfT0JKRUNUUyA9IGxpYmdzdG1wZzEyM19sYS1nc3RtcGcxMjNhdWRpb2RlYy5sbwotbGliZ3N0bXBnMTIzX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdG1wZzEyM19sYV9PQkpFQ1RTKQotQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQotYW1fX3ZfbHRfID0gJChhbV9fdl9sdF9AQU1fREVGQVVMVF9WQCkKLWFtX192X2x0XzAgPSAtLXNpbGVudAotYW1fX3ZfbHRfMSA9IAotbGliZ3N0bXBnMTIzX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAotCSQobGliZ3N0bXBnMTIzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rIFwKLQkkKENDTEQpICQobGliZ3N0bXBnMTIzX2xhX0NGTEFHUykgJChDRkxBR1MpIFwKLQkkKGxpYmdzdG1wZzEyM19sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACi1BTV9WX1AgPSAkKGFtX192X1BfQEFNX1ZAKQotYW1fX3ZfUF8gPSAkKGFtX192X1BfQEFNX0RFRkFVTFRfVkApCi1hbV9fdl9QXzAgPSBmYWxzZQotYW1fX3ZfUF8xID0gOgotQU1fVl9HRU4gPSAkKGFtX192X0dFTl9AQU1fVkApCi1hbV9fdl9HRU5fID0gJChhbV9fdl9HRU5fQEFNX0RFRkFVTFRfVkApCi1hbV9fdl9HRU5fMCA9IEBlY2hvICIgIEdFTiAgICAgIiAkQDsKLWFtX192X0dFTl8xID0gCi1BTV9WX2F0ID0gJChhbV9fdl9hdF9AQU1fVkApCi1hbV9fdl9hdF8gPSAkKGFtX192X2F0X0BBTV9ERUZBVUxUX1ZAKQotYW1fX3ZfYXRfMCA9IEAKLWFtX192X2F0XzEgPSAKLURFRkFVTFRfSU5DTFVERVMgPSAtSS5AYW1fX2lzcmNAIC1JJCh0b3BfYnVpbGRkaXIpCi1kZXBjb21wID0gJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS9kZXBjb21wCi1hbV9fZGVwZmlsZXNfbWF5YmUgPSBkZXBmaWxlcwotYW1fX212ID0gbXYgLWYKLUNPTVBJTEUgPSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgXAotCSQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKLUxUQ09NUElMRSA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgXAotCSQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpIFwKLQkkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpIFwKLQkkKEFNX0NGTEFHUykgJChDRkxBR1MpCi1BTV9WX0NDID0gJChhbV9fdl9DQ19AQU1fVkApCi1hbV9fdl9DQ18gPSAkKGFtX192X0NDX0BBTV9ERUZBVUxUX1ZAKQotYW1fX3ZfQ0NfMCA9IEBlY2hvICIgIENDICAgICAgIiAkQDsKLWFtX192X0NDXzEgPSAKLUNDTEQgPSAkKENDKQotTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgXAotCSQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgXAotCSQoQU1fTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAotQU1fVl9DQ0xEID0gJChhbV9fdl9DQ0xEX0BBTV9WQCkKLWFtX192X0NDTERfID0gJChhbV9fdl9DQ0xEX0BBTV9ERUZBVUxUX1ZAKQotYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOwotYW1fX3ZfQ0NMRF8xID0gCi1TT1VSQ0VTID0gJChsaWJnc3RtcGcxMjNfbGFfU09VUkNFUykKLURJU1RfU09VUkNFUyA9ICQobGliZ3N0bXBnMTIzX2xhX1NPVVJDRVMpCi1hbV9fY2FuX3J1bl9pbnN0YWxsaW5mbyA9IFwKLSAgY2FzZSAkJEFNX1VQREFURV9JTkZPX0RJUiBpbiBcCi0gICAgbnxub3xOTykgZmFsc2U7OyBcCi0gICAgKikgKGluc3RhbGwtaW5mbyAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMTs7IFwKLSAgZXNhYwotSEVBREVSUyA9ICQobm9pbnN0X0hFQURFUlMpCi1hbV9fdGFnZ2VkX2ZpbGVzID0gJChIRUFERVJTKSAkKFNPVVJDRVMpICQoVEFHU19GSUxFUykgJChMSVNQKQotIyBSZWFkIGEgbGlzdCBvZiBuZXdsaW5lLXNlcGFyYXRlZCBzdHJpbmdzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0LAotIyBhbmQgcHJpbnQgZWFjaCBvZiB0aGVtIG9uY2UsIHdpdGhvdXQgZHVwbGljYXRlcy4gIElucHV0IG9yZGVyIGlzCi0jICpub3QqIHByZXNlcnZlZC4KLWFtX191bmlxdWlmeV9pbnB1dCA9ICQoQVdLKSAnXAotICBCRUdJTiB7IG5vbmVtcHR5ID0gMDsgfSBcCi0gIHsgaXRlbXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcCi0gIEVORCB7IGlmIChub25lbXB0eSkgeyBmb3IgKGkgaW4gaXRlbXMpIHByaW50IGk7IH07IH0gXAotJwotIyBNYWtlIHN1cmUgdGhlIGxpc3Qgb2Ygc291cmNlcyBpcyB1bmlxdWUuICBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlLAotIyBlLmcuLCB0aGUgc2FtZSBzb3VyY2UgZmlsZSBtaWdodCBiZSBzaGFyZWQgYW1vbmcgX1NPVVJDRVMgdmFyaWFibGVzCi0jIGZvciBkaWZmZXJlbnQgcHJvZ3JhbXMvbGlicmFyaWVzLgotYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyA9IFwKLSAgbGlzdD0nJChhbV9fdGFnZ2VkX2ZpbGVzKSc7IFwKLSAgdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKLSAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsgZmk7IFwKLSAgZG9uZSB8ICQoYW1fX3VuaXF1aWZ5X2lucHV0KWAKLUVUQUdTID0gZXRhZ3MKLUNUQUdTID0gY3RhZ3MKLWFtX19ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9zcmNkaXIpL2RlcGNvbXAKLURJU1RGSUxFUyA9ICQoRElTVF9DT01NT04pICQoRElTVF9TT1VSQ0VTKSAkKFRFWElORk9TKSAkKEVYVFJBX0RJU1QpCi1BQ0xPQ0FMID0gQEFDTE9DQUxACi1BQ0xPQ0FMX0FNRkxBR1MgPSBAQUNMT0NBTF9BTUZMQUdTQAotQUNNRU5DX0NGTEFHUyA9IEBBQ01FTkNfQ0ZMQUdTQAotQUNNTVAzREVDX0NGTEFHUyA9IEBBQ01NUDNERUNfQ0ZMQUdTQAotQU1UQVIgPSBAQU1UQVJACi1BTV9ERUZBVUxUX1ZFUkJPU0lUWSA9IEBBTV9ERUZBVUxUX1ZFUkJPU0lUWUAKLUFQRVhTSU5LX0NGTEFHUyA9IEBBUEVYU0lOS19DRkxBR1NACi1BUEVYU0lOS19MSUJTID0gQEFQRVhTSU5LX0xJQlNACi1BUiA9IEBBUkAKLUFTID0gQEFTQAotQVNTUkVOREVSX0NGTEFHUyA9IEBBU1NSRU5ERVJfQ0ZMQUdTQAotQVNTUkVOREVSX0xJQlMgPSBAQVNTUkVOREVSX0xJQlNACi1BVVRPQ09ORiA9IEBBVVRPQ09ORkAKLUFVVE9IRUFERVIgPSBAQVVUT0hFQURFUkAKLUFVVE9NQUtFID0gQEFVVE9NQUtFQAotQVdLID0gQEFXS0AKLUJMVUVaNV9DRkxBR1MgPSBAQkxVRVo1X0NGTEFHU0AKLUJMVUVaNV9MSUJTID0gQEJMVUVaNV9MSUJTQAotQlMyQl9DRkxBR1MgPSBAQlMyQl9DRkxBR1NACi1CUzJCX0xJQlMgPSBAQlMyQl9MSUJTQAotQloyX0xJQlMgPSBAQloyX0xJQlNACi1DQyA9IEBDQ0AKLUNDQVNGTEFHUyA9IEBDQ0FTRkxBR1NACi1DQ0RFUE1PREUgPSBAQ0NERVBNT0RFQAotQ0ZMQUdTID0gQENGTEFHU0AKLUNIUk9NQVBSSU5UX0NGTEFHUyA9IEBDSFJPTUFQUklOVF9DRkxBR1NACi1DSFJPTUFQUklOVF9MSUJTID0gQENIUk9NQVBSSU5UX0xJQlNACi1DTFVUVEVSX0NGTEFHUyA9IEBDTFVUVEVSX0NGTEFHU0AKLUNMVVRURVJfR0xYX0NGTEFHUyA9IEBDTFVUVEVSX0dMWF9DRkxBR1NACi1DTFVUVEVSX0dMWF9MSUJTID0gQENMVVRURVJfR0xYX0xJQlNACi1DTFVUVEVSX0xJQlMgPSBAQ0xVVFRFUl9MSUJTQAotQ0xVVFRFUl9YMTFfQ0ZMQUdTID0gQENMVVRURVJfWDExX0NGTEFHU0AKLUNMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKLUNQUCA9IEBDUFBACi1DUFBGTEFHUyA9IEBDUFBGTEFHU0AKLUNVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAotQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKLUNYWCA9IEBDWFhACi1DWFhDUFAgPSBAQ1hYQ1BQQAotQ1hYREVQTU9ERSA9IEBDWFhERVBNT0RFQAotQ1hYRkxBR1MgPSBAQ1hYRkxBR1NACi1DWUdQQVRIX1cgPSBAQ1lHUEFUSF9XQAotREFBTEFfQ0ZMQUdTID0gQERBQUxBX0NGTEFHU0AKLURBQUxBX0xJQlMgPSBAREFBTEFfTElCU0AKLURDQ1BfTElCUyA9IEBEQ0NQX0xJQlNACi1ERUNLTElOS19DWFhGTEFHUyA9IEBERUNLTElOS19DWFhGTEFHU0AKLURFQ0tMSU5LX0xJQlMgPSBAREVDS0xJTktfTElCU0AKLURFRkFVTFRfQVVESU9TSU5LID0gQERFRkFVTFRfQVVESU9TSU5LQAotREVGQVVMVF9BVURJT1NSQyA9IEBERUZBVUxUX0FVRElPU1JDQAotREVGQVVMVF9WSURFT1NJTksgPSBAREVGQVVMVF9WSURFT1NJTktACi1ERUZBVUxUX1ZJREVPU1JDID0gQERFRkFVTFRfVklERU9TUkNACi1ERUZBVUxUX1ZJU1VBTElaRVIgPSBAREVGQVVMVF9WSVNVQUxJWkVSQAotREVGUyA9IEBERUZTQAotREVQRElSID0gQERFUERJUkAKLURFUFJFQ0FURURfQ0ZMQUdTID0gQERFUFJFQ0FURURfQ0ZMQUdTQAotRElSRUNUM0RfTElCUyA9IEBESVJFQ1QzRF9MSUJTQAotRElSRUNURkJfQ0ZMQUdTID0gQERJUkVDVEZCX0NGTEFHU0AKLURJUkVDVEZCX0xJQlMgPSBARElSRUNURkJfTElCU0AKLURJUkVDVFNPVU5EX0xJQlMgPSBARElSRUNUU09VTkRfTElCU0AKLURJUkVDVFhfQ0ZMQUdTID0gQERJUkVDVFhfQ0ZMQUdTQAotRElSRUNUWF9MREZMQUdTID0gQERJUkVDVFhfTERGTEFHU0AKLURMTFRPT0wgPSBARExMVE9PTEAKLURTWU1VVElMID0gQERTWU1VVElMQAotRFRMU19DRkxBR1MgPSBARFRMU19DRkxBR1NACi1EVExTX0xJQlMgPSBARFRMU19MSUJTQAotRFRTX0xJQlMgPSBARFRTX0xJQlNACi1EVU1QQklOID0gQERVTVBCSU5ACi1EVkROQVZfQ0ZMQUdTID0gQERWRE5BVl9DRkxBR1NACi1EVkROQVZfTElCUyA9IEBEVkROQVZfTElCU0AKLUVDSE9fQyA9IEBFQ0hPX0NACi1FQ0hPX04gPSBARUNIT19OQAotRUNIT19UID0gQEVDSE9fVEAKLUVHUkVQID0gQEVHUkVQQAotRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKLUVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQAotRVJST1JfT0JKQ0ZMQUdTID0gQEVSUk9SX09CSkNGTEFHU0AKLUVYRUVYVCA9IEBFWEVFWFRACi1FWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKLUVYSUZfTElCUyA9IEBFWElGX0xJQlNACi1GQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAotRkFBRF9MSUJTID0gQEZBQURfTElCU0AKLUZGTEFHUyA9IEBGRkxBR1NACi1GR1JFUCA9IEBGR1JFUEAKLUZMSVRFX0NGTEFHUyA9IEBGTElURV9DRkxBR1NACi1GTElURV9MSUJTID0gQEZMSVRFX0xJQlNACi1GTFVJRFNZTlRIX0NGTEFHUyA9IEBGTFVJRFNZTlRIX0NGTEFHU0AKLUZMVUlEU1lOVEhfTElCUyA9IEBGTFVJRFNZTlRIX0xJQlNACi1HQ09WID0gQEdDT1ZACi1HQ09WX0NGTEFHUyA9IEBHQ09WX0NGTEFHU0AKLUdDT1ZfTElCUyA9IEBHQ09WX0xJQlNACi1HREJVU19DT0RFR0VOID0gQEdEQlVTX0NPREVHRU5ACi1HRVRURVhUX01BQ1JPX1ZFUlNJT04gPSBAR0VUVEVYVF9NQUNST19WRVJTSU9OQAotR0VUVEVYVF9QQUNLQUdFID0gQEdFVFRFWFRfUEFDS0FHRUAKLUdJT19DRkxBR1MgPSBAR0lPX0NGTEFHU0AKLUdJT19MREZMQUdTID0gQEdJT19MREZMQUdTQAotR0lPX0xJQlMgPSBAR0lPX0xJQlNACi1HSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAotR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAotR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKLUdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAotR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKLUdMSUJfTElCUyA9IEBHTElCX0xJQlNACi1HTElCX01LRU5VTVMgPSBAR0xJQl9NS0VOVU1TQAotR0xJQl9QUkVGSVggPSBAR0xJQl9QUkVGSVhACi1HTElCX1JFUSA9IEBHTElCX1JFUUAKLUdMX0NGTEFHUyA9IEBHTF9DRkxBR1NACi1HTF9MSUJTID0gQEdMX0xJQlNACi1HTF9PQkpDRkxBR1MgPSBAR0xfT0JKQ0ZMQUdTQAotR01FX0xJQlMgPSBAR01FX0xJQlNACi1HTU9EVUxFX0VYUE9SVF9DRkxBR1MgPSBAR01PRFVMRV9FWFBPUlRfQ0ZMQUdTQAotR01PRFVMRV9FWFBPUlRfTElCUyA9IEBHTU9EVUxFX0VYUE9SVF9MSUJTQAotR01PRFVMRV9OT19FWFBPUlRfQ0ZMQUdTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0NGTEFHU0AKLUdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKLUdNU0dGTVQgPSBAR01TR0ZNVEAKLUdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAotR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKLUdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKLUdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKLUdTTV9MSUJTID0gQEdTTV9MSUJTQAotR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACi1HU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAotR1NUX0FHRSA9IEBHU1RfQUdFQAotR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKLUdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACi1HU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQAotR1NUX0JBU0VfTElCUyA9IEBHU1RfQkFTRV9MSUJTQAotR1NUX0NGTEFHUyA9IEBHU1RfQ0ZMQUdTQAotR1NUX0NIRUNLX0NGTEFHUyA9IEBHU1RfQ0hFQ0tfQ0ZMQUdTQAotR1NUX0NIRUNLX0xJQlMgPSBAR1NUX0NIRUNLX0xJQlNACi1HU1RfQ09OVFJPTExFUl9DRkxBR1MgPSBAR1NUX0NPTlRST0xMRVJfQ0ZMQUdTQAotR1NUX0NPTlRST0xMRVJfTElCUyA9IEBHU1RfQ09OVFJPTExFUl9MSUJTQAotR1NUX0NVUlJFTlQgPSBAR1NUX0NVUlJFTlRACi1HU1RfQ1hYRkxBR1MgPSBAR1NUX0NYWEZMQUdTQAotR1NUX0xFVkVMX0RFRkFVTFQgPSBAR1NUX0xFVkVMX0RFRkFVTFRACi1HU1RfTElCUyA9IEBHU1RfTElCU0AKLUdTVF9MSUJWRVJTSU9OID0gQEdTVF9MSUJWRVJTSU9OQAotR1NUX0xJQl9MREZMQUdTID0gQEdTVF9MSUJfTERGTEFHU0AKLUdTVF9MSUNFTlNFID0gQEdTVF9MSUNFTlNFQAotR1NUX0xUX0xERkxBR1MgPSBAR1NUX0xUX0xERkxBR1NACi1HU1RfTkVUX0NGTEFHUyA9IEBHU1RfTkVUX0NGTEFHU0AKLUdTVF9ORVRfTElCUyA9IEBHU1RfTkVUX0xJQlNACi1HU1RfT0JKQ0ZMQUdTID0gQEdTVF9PQkpDRkxBR1NACi1HU1RfT1BUSU9OX0NGTEFHUyA9IEBHU1RfT1BUSU9OX0NGTEFHU0AKLUdTVF9PUFRJT05fQ1hYRkxBR1MgPSBAR1NUX09QVElPTl9DWFhGTEFHU0AKLUdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAotR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAotR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKLUdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKLUdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACi1HU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACi1HU1RfUExVR0lOU19CQURfQ1hYRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NYWEZMQUdTQAotR1NUX1BMVUdJTlNfQkFEX09CSkNGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfT0JKQ0ZMQUdTQAotR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1NACi1HU1RfUExVR0lOU19CQVNFX0RJUiA9IEBHU1RfUExVR0lOU19CQVNFX0RJUkAKLUdTVF9QTFVHSU5TX0JBU0VfTElCUyA9IEBHU1RfUExVR0lOU19CQVNFX0xJQlNACi1HU1RfUExVR0lOU19ESVIgPSBAR1NUX1BMVUdJTlNfRElSQAotR1NUX1BMVUdJTlNfR09PRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfR09PRF9DRkxBR1NACi1HU1RfUExVR0lOU19HT09EX0RJUiA9IEBHU1RfUExVR0lOU19HT09EX0RJUkAKLUdTVF9QTFVHSU5TX0dPT0RfTElCUyA9IEBHU1RfUExVR0lOU19HT09EX0xJQlNACi1HU1RfUExVR0lOU19MSUJBVl9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfTElCQVZfQ0ZMQUdTQAotR1NUX1BMVUdJTlNfTElCQVZfRElSID0gQEdTVF9QTFVHSU5TX0xJQkFWX0RJUkAKLUdTVF9QTFVHSU5TX0xJQkFWX0xJQlMgPSBAR1NUX1BMVUdJTlNfTElCQVZfTElCU0AKLUdTVF9QTFVHSU5TX05PTlBPUlRFRCA9IEBHU1RfUExVR0lOU19OT05QT1JURURACi1HU1RfUExVR0lOU19TRUxFQ1RFRCA9IEBHU1RfUExVR0lOU19TRUxFQ1RFREAKLUdTVF9QTFVHSU5TX1VHTFlfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX1VHTFlfQ0ZMQUdTQAotR1NUX1BMVUdJTlNfVUdMWV9ESVIgPSBAR1NUX1BMVUdJTlNfVUdMWV9ESVJACi1HU1RfUExVR0lOU19VR0xZX0xJQlMgPSBAR1NUX1BMVUdJTlNfVUdMWV9MSUJTQAotR1NUX1BMVUdJTl9MREZMQUdTID0gQEdTVF9QTFVHSU5fTERGTEFHU0AKLUdTVF9QTFVHSU5fTElCVE9PTEZMQUdTID0gQEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTQAotR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAotR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKLUdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKLUdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAotR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACi1HVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQAotR1RLM19MSUJTID0gQEdUSzNfTElCU0AKLUdUSzNfV0FZTEFORF9DRkxBR1MgPSBAR1RLM19XQVlMQU5EX0NGTEFHU0AKLUdUSzNfV0FZTEFORF9MSUJTID0gQEdUSzNfV0FZTEFORF9MSUJTQAotR1RLM19YMTFfQ0ZMQUdTID0gQEdUSzNfWDExX0NGTEFHU0AKLUdUSzNfWDExX0xJQlMgPSBAR1RLM19YMTFfTElCU0AKLUdUS0RPQ19DSEVDSyA9IEBHVEtET0NfQ0hFQ0tACi1HVEtET0NfREVQU19DRkxBR1MgPSBAR1RLRE9DX0RFUFNfQ0ZMQUdTQAotR1RLRE9DX0RFUFNfTElCUyA9IEBHVEtET0NfREVQU19MSUJTQAotR1RLRE9DX01LUERGID0gQEdUS0RPQ19NS1BERkAKLUdUS0RPQ19SRUJBU0UgPSBAR1RLRE9DX1JFQkFTRUAKLUdUS19CQVNFX0RJUiA9IEBHVEtfQkFTRV9ESVJACi1HVEtfQ0ZMQUdTID0gQEdUS19DRkxBR1NACi1HVEtfTElCUyA9IEBHVEtfTElCU0AKLUdUS19WRVJTSU9OID0gQEdUS19WRVJTSU9OQAotR19VREVWX0NGTEFHUyA9IEBHX1VERVZfQ0ZMQUdTQAotR19VREVWX0xJQlMgPSBAR19VREVWX0xJQlNACi1IQVZFX0NMVVRURVIgPSBASEFWRV9DTFVUVEVSQAotSEFWRV9DTFVUVEVSX0dMWCA9IEBIQVZFX0NMVVRURVJfR0xYQAotSEFWRV9DTFVUVEVSX1gxMSA9IEBIQVZFX0NMVVRURVJfWDExQAotSEFWRV9DWFggPSBASEFWRV9DWFhACi1IQVZFX0RJUkVDVDNEID0gQEhBVkVfRElSRUNUM0RACi1IQVZFX0RJUkVDVFNPVU5EID0gQEhBVkVfRElSRUNUU09VTkRACi1IQVZFX0RUUyA9IEBIQVZFX0RUU0AKLUhBVkVfRUdMID0gQEhBVkVfRUdMQAotSEFWRV9GQUFDID0gQEhBVkVfRkFBQ0AKLUhBVkVfRkFBRCA9IEBIQVZFX0ZBQURACi1IQVZFX0ZMSVRFID0gQEhBVkVfRkxJVEVACi1IQVZFX0dMID0gQEhBVkVfR0xACi1IQVZFX0dMRVMyID0gQEhBVkVfR0xFUzJACi1IQVZFX0dSQVBIRU5FID0gQEhBVkVfR1JBUEhFTkVACi1IQVZFX0dTTSA9IEBIQVZFX0dTTUAKLUhBVkVfR1RLMyA9IEBIQVZFX0dUSzNACi1IQVZFX0pQRUcgPSBASEFWRV9KUEVHQAotSEFWRV9OQVMgPSBASEFWRV9OQVNACi1IQVZFX09QRU5KUEVHID0gQEhBVkVfT1BFTkpQRUdACi1IQVZFX1BORyA9IEBIQVZFX1BOR0AKLUhBVkVfU1JUUCA9IEBIQVZFX1NSVFBACi1IQVZFX1dBU0FQSSA9IEBIQVZFX1dBU0FQSUAKLUhBVkVfV0lMRE1JREkgPSBASEFWRV9XSUxETUlESUAKLUhBVkVfV0lOS1MgPSBASEFWRV9XSU5LU0AKLUhBVkVfV0lOU0NSRUVOQ0FQID0gQEhBVkVfV0lOU0NSRUVOQ0FQQAotSEFWRV9YMTEgPSBASEFWRV9YMTFACi1IVE1MX0RJUiA9IEBIVE1MX0RJUkAKLUlOU1RBTEwgPSBASU5TVEFMTEAKLUlOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACi1JTlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9QUk9HUkFNQAotSU5TVEFMTF9TQ1JJUFQgPSBASU5TVEFMTF9TQ1JJUFRACi1JTlNUQUxMX1NUUklQX1BST0dSQU0gPSBASU5TVEFMTF9TVFJJUF9QUk9HUkFNQAotSU5UTExJQlMgPSBASU5UTExJQlNACi1JTlRMX01BQ09TWF9MSUJTID0gQElOVExfTUFDT1NYX0xJQlNACi1JTlRST1NQRUNUSU9OX0NGTEFHUyA9IEBJTlRST1NQRUNUSU9OX0NGTEFHU0AKLUlOVFJPU1BFQ1RJT05fQ09NUElMRVIgPSBASU5UUk9TUEVDVElPTl9DT01QSUxFUkAKLUlOVFJPU1BFQ1RJT05fR0VORVJBVEUgPSBASU5UUk9TUEVDVElPTl9HRU5FUkFURUAKLUlOVFJPU1BFQ1RJT05fR0lSRElSID0gQElOVFJPU1BFQ1RJT05fR0lSRElSQAotSU5UUk9TUEVDVElPTl9JTklUID0gQElOVFJPU1BFQ1RJT05fSU5JVEAKLUlOVFJPU1BFQ1RJT05fTElCUyA9IEBJTlRST1NQRUNUSU9OX0xJQlNACi1JTlRST1NQRUNUSU9OX01BS0VGSUxFID0gQElOVFJPU1BFQ1RJT05fTUFLRUZJTEVACi1JTlRST1NQRUNUSU9OX1NDQU5ORVIgPSBASU5UUk9TUEVDVElPTl9TQ0FOTkVSQAotSU5UUk9TUEVDVElPTl9UWVBFTElCRElSID0gQElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUkAKLUpQRUdfTElCUyA9IEBKUEVHX0xJQlNACi1LQVRFX0NGTEFHUyA9IEBLQVRFX0NGTEFHU0AKLUtBVEVfTElCUyA9IEBLQVRFX0xJQlNACi1MRCA9IEBMREAKLUxERkxBR1MgPSBATERGTEFHU0AKLUxJQkRDMTM5NF9DRkxBR1MgPSBATElCREMxMzk0X0NGTEFHU0AKLUxJQkRDMTM5NF9MSUJTID0gQExJQkRDMTM5NF9MSUJTQAotTElCREUyNjVfQ0ZMQUdTID0gQExJQkRFMjY1X0NGTEFHU0AKLUxJQkRFMjY1X0xJQlMgPSBATElCREUyNjVfTElCU0AKLUxJQkRJUiA9IEBMSUJESVJACi1MSUJHQ1JZUFRfQ0ZMQUdTID0gQExJQkdDUllQVF9DRkxBR1NACi1MSUJHQ1JZUFRfQ09ORklHID0gQExJQkdDUllQVF9DT05GSUdACi1MSUJHQ1JZUFRfTElCUyA9IEBMSUJHQ1JZUFRfTElCU0AKLUxJQklDT05WID0gQExJQklDT05WQAotTElCSU5UTCA9IEBMSUJJTlRMQAotTElCTSA9IEBMSUJNQAotTElCTU1TX0NGTEFHUyA9IEBMSUJNTVNfQ0ZMQUdTQAotTElCTU1TX0xJQlMgPSBATElCTU1TX0xJQlNACi1MSUJPQkpTID0gQExJQk9CSlNACi1MSUJQTkdfQ0ZMQUdTID0gQExJQlBOR19DRkxBR1NACi1MSUJQTkdfTElCUyA9IEBMSUJQTkdfTElCU0AKLUxJQlMgPSBATElCU0AKLUxJQlRPT0wgPSBATElCVE9PTEAKLUxJQlVERVZfQ0ZMQUdTID0gQExJQlVERVZfQ0ZMQUdTQAotTElCVURFVl9MSUJTID0gQExJQlVERVZfTElCU0AKLUxJQlVTQl9DRkxBR1MgPSBATElCVVNCX0NGTEFHU0AKLUxJQlVTQl9MSUJTID0gQExJQlVTQl9MSUJTQAotTElCVklTVUFMX0NGTEFHUyA9IEBMSUJWSVNVQUxfQ0ZMQUdTQAotTElCVklTVUFMX0xJQlMgPSBATElCVklTVUFMX0xJQlNACi1MSUJYTUwyX0NGTEFHUyA9IEBMSUJYTUwyX0NGTEFHU0AKLUxJQlhNTDJfTElCUyA9IEBMSUJYTUwyX0xJQlNACi1MSVBPID0gQExJUE9ACi1MTl9TID0gQExOX1NACi1MT0NBTEVESVIgPSBATE9DQUxFRElSQAotTFJERl9DRkxBR1MgPSBATFJERl9DRkxBR1NACi1MUkRGX0xJQlMgPSBATFJERl9MSUJTQAotTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAotTFRMSUJJTlRMID0gQExUTElCSU5UTEAKLUxUTElCT0JKUyA9IEBMVExJQk9CSlNACi1NQUlOVCA9IEBNQUlOVEAKLU1BS0VJTkZPID0gQE1BS0VJTkZPQAotTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQAotTUlNSUNfQ0ZMQUdTID0gQE1JTUlDX0NGTEFHU0AKLU1JTUlDX0xJQlMgPSBATUlNSUNfTElCU0AKLU1KUEVHX0NGTEFHUyA9IEBNSlBFR19DRkxBR1NACi1NSlBFR19MSUJTID0gQE1KUEVHX0xJQlNACi1NS0RJUl9QID0gQE1LRElSX1BACi1NT0MgPSBATU9DQAotTU9EUExVR19DRkxBR1MgPSBATU9EUExVR19DRkxBR1NACi1NT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAotTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKLU1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAotTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKLU1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKLU1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKLU1TR0ZNVCA9IEBNU0dGTVRACi1NU0dGTVRfMDE1ID0gQE1TR0ZNVF8wMTVACi1NU0dNRVJHRSA9IEBNU0dNRVJHRUAKLU1VU0VQQUNLX0xJQlMgPSBATVVTRVBBQ0tfTElCU0AKLU5BU19DRkxBR1MgPSBATkFTX0NGTEFHU0AKLU5BU19MSUJTID0gQE5BU19MSUJTQAotTkVPTl9DRkxBR1MgPSBATkVPTl9DRkxBR1NACi1ORU9OX0xJQlMgPSBATkVPTl9MSUJTQAotTkVUVExFX0NGTEFHUyA9IEBORVRUTEVfQ0ZMQUdTQAotTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACi1OTSA9IEBOTUAKLU5NRURJVCA9IEBOTUVESVRACi1PQkpDID0gQE9CSkNACi1PQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKLU9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACi1PQkpEVU1QID0gQE9CSkRVTVBACi1PQkpFWFQgPSBAT0JKRVhUQAotT0ZBX0NGTEFHUyA9IEBPRkFfQ0ZMQUdTQAotT0ZBX0xJQlMgPSBAT0ZBX0xJQlNACi1PUEVOQUxfQ0ZMQUdTID0gQE9QRU5BTF9DRkxBR1NACi1PUEVOQUxfTElCUyA9IEBPUEVOQUxfTElCU0AKLU9QRU5DVl9DRkxBR1MgPSBAT1BFTkNWX0NGTEFHU0AKLU9QRU5DVl9MSUJTID0gQE9QRU5DVl9MSUJTQAotT1BFTkNWX1BSRUZJWCA9IEBPUEVOQ1ZfUFJFRklYQAotT1BFTkVYUl9DRkxBR1MgPSBAT1BFTkVYUl9DRkxBR1NACi1PUEVORVhSX0xJQlMgPSBAT1BFTkVYUl9MSUJTQAotT1BFTkgyNjRfQ0ZMQUdTID0gQE9QRU5IMjY0X0NGTEFHU0AKLU9QRU5IMjY0X0xJQlMgPSBAT1BFTkgyNjRfTElCU0AKLU9QRU5KUEVHX0NGTEFHUyA9IEBPUEVOSlBFR19DRkxBR1NACi1PUEVOSlBFR19MSUJTID0gQE9QRU5KUEVHX0xJQlNACi1PUEVOTkkyX0NGTEFHUyA9IEBPUEVOTkkyX0NGTEFHU0AKLU9QRU5OSTJfTElCUyA9IEBPUEVOTkkyX0xJQlNACi1PUEVOU1NMX0NGTEFHUyA9IEBPUEVOU1NMX0NGTEFHU0AKLU9QRU5TU0xfTElCUyA9IEBPUEVOU1NMX0xJQlNACi1PUFVTX0NGTEFHUyA9IEBPUFVTX0NGTEFHU0AKLU9QVVNfTElCUyA9IEBPUFVTX0xJQlNACi1PUkNDID0gQE9SQ0NACi1PUkNDX0ZMQUdTID0gQE9SQ0NfRkxBR1NACi1PUkNfQ0ZMQUdTID0gQE9SQ19DRkxBR1NACi1PUkNfTElCUyA9IEBPUkNfTElCU0AKLU9UT09MID0gQE9UT09MQAotT1RPT0w2NCA9IEBPVE9PTDY0QAotUEFDS0FHRSA9IEBQQUNLQUdFQAotUEFDS0FHRV9CVUdSRVBPUlQgPSBAUEFDS0FHRV9CVUdSRVBPUlRACi1QQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAotUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdACi1QQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1FQAotUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxACi1QQUNLQUdFX1ZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAotUEFDS0FHRV9WRVJTSU9OX01BSk9SID0gQFBBQ0tBR0VfVkVSU0lPTl9NQUpPUkAKLVBBQ0tBR0VfVkVSU0lPTl9NSUNSTyA9IEBQQUNLQUdFX1ZFUlNJT05fTUlDUk9ACi1QQUNLQUdFX1ZFUlNJT05fTUlOT1IgPSBAUEFDS0FHRV9WRVJTSU9OX01JTk9SQAotUEFDS0FHRV9WRVJTSU9OX05BTk8gPSBAUEFDS0FHRV9WRVJTSU9OX05BTk9ACi1QQUNLQUdFX1ZFUlNJT05fUkVMRUFTRSA9IEBQQUNLQUdFX1ZFUlNJT05fUkVMRUFTRUAKLVBBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQAotUEtHX0NPTkZJRyA9IEBQS0dfQ09ORklHQAotUExVR0lORElSID0gQFBMVUdJTkRJUkAKLVBPU1VCID0gQFBPU1VCQAotUFJPRklMRV9DRkxBR1MgPSBAUFJPRklMRV9DRkxBR1NACi1QVEhSRUFEX0NDID0gQFBUSFJFQURfQ0NACi1QVEhSRUFEX0NGTEFHUyA9IEBQVEhSRUFEX0NGTEFHU0AKLVBUSFJFQURfTElCUyA9IEBQVEhSRUFEX0xJQlNACi1QVlJfQ0ZMQUdTID0gQFBWUl9DRkxBR1NACi1QVlJfTElCUyA9IEBQVlJfTElCU0AKLVBZVEhPTiA9IEBQWVRIT05ACi1QWVRIT05fRVhFQ19QUkVGSVggPSBAUFlUSE9OX0VYRUNfUFJFRklYQAotUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKLVBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKLVBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAotUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKLVFUX0xJQlMgPSBAUVRfTElCU0AKLVFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAotUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKLVFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKLVFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAotUkFOTElCID0gQFJBTkxJQkAKLVJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAotUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACi1SU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAotUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACi1SVE1QX0xJQlMgPSBAUlRNUF9MSUJTQAotU0JDX0NGTEFHUyA9IEBTQkNfQ0ZMQUdTQAotU0JDX0xJQlMgPSBAU0JDX0xJQlNACi1TQ0hST19DRkxBR1MgPSBAU0NIUk9fQ0ZMQUdTQAotU0NIUk9fTElCUyA9IEBTQ0hST19MSUJTQAotU0RMX0NGTEFHUyA9IEBTRExfQ0ZMQUdTQAotU0RMX0NMVVRURVIgPSBAU0RMX0NMVVRURVJACi1TRExfQ09ORklHID0gQFNETF9DT05GSUdACi1TRExfTElCUyA9IEBTRExfTElCU0AKLVNFRCA9IEBTRURACi1TRVRfTUFLRSA9IEBTRVRfTUFLRUAKLVNIRUxMID0gQFNIRUxMQAotU0hNX0xJQlMgPSBAU0hNX0xJQlNACi1TTFYyX0NGTEFHUyA9IEBTTFYyX0NGTEFHU0AKLVNMVjJfTElCUyA9IEBTTFYyX0xJQlNACi1TTkRGSUxFX0NGTEFHUyA9IEBTTkRGSUxFX0NGTEFHU0AKLVNOREZJTEVfTElCUyA9IEBTTkRGSUxFX0xJQlNACi1TTkRJT19MSUJTID0gQFNORElPX0xJQlNACi1TT1VORFRPVUNIX0NGTEFHUyA9IEBTT1VORFRPVUNIX0NGTEFHU0AKLVNPVU5EVE9VQ0hfTElCUyA9IEBTT1VORFRPVUNIX0xJQlNACi1TUEFORFNQX0NGTEFHUyA9IEBTUEFORFNQX0NGTEFHU0AKLVNQQU5EU1BfTElCUyA9IEBTUEFORFNQX0xJQlNACi1TUENfTElCUyA9IEBTUENfTElCU0AKLVNSVFBfQ0ZMQUdTID0gQFNSVFBfQ0ZMQUdTQAotU1JUUF9MSUJTID0gQFNSVFBfTElCU0AKLVNTSDJfQ0ZMQUdTID0gQFNTSDJfQ0ZMQUdTQAotU1NIMl9MSUJTID0gQFNTSDJfTElCU0AKLVNUUklQID0gQFNUUklQQAotVEVMRVRFWFRERUNfQ0ZMQUdTID0gQFRFTEVURVhUREVDX0NGTEFHU0AKLVRFTEVURVhUREVDX0xJQlMgPSBAVEVMRVRFWFRERUNfTElCU0AKLVRJR0VSX0NGTEFHUyA9IEBUSUdFUl9DRkxBR1NACi1USUdFUl9MSUJTID0gQFRJR0VSX0xJQlNACi1USU1JRElUWV9DRkxBR1MgPSBAVElNSURJVFlfQ0ZMQUdTQAotVElNSURJVFlfTElCUyA9IEBUSU1JRElUWV9MSUJTQAotVUlDID0gQFVJQ0AKLVVTRV9HTEVTMiA9IEBVU0VfR0xFUzJACi1VU0VfTkxTID0gQFVTRV9OTFNACi1VU0VfT1BFTkdMID0gQFVTRV9PUEVOR0xACi1WQUxHUklORF9DRkxBR1MgPSBAVkFMR1JJTkRfQ0ZMQUdTQAotVkFMR1JJTkRfTElCUyA9IEBWQUxHUklORF9MSUJTQAotVkFMR1JJTkRfUEFUSCA9IEBWQUxHUklORF9QQVRIQAotVkRQQVVfQ0ZMQUdTID0gQFZEUEFVX0NGTEFHU0AKLVZEUEFVX0xJQlMgPSBAVkRQQVVfTElCU0AKLVZFUlNJT04gPSBAVkVSU0lPTkAKLVZPQUFDRU5DX0NGTEFHUyA9IEBWT0FBQ0VOQ19DRkxBR1NACi1WT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACi1WT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKLVZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACi1XQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKLVdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKLVdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQAotV0FTQVBJX0xJQlMgPSBAV0FTQVBJX0xJQlNACi1XQVlMQU5EX0NGTEFHUyA9IEBXQVlMQU5EX0NGTEFHU0AKLVdBWUxBTkRfRUdMX0NGTEFHUyA9IEBXQVlMQU5EX0VHTF9DRkxBR1NACi1XQVlMQU5EX0VHTF9MSUJTID0gQFdBWUxBTkRfRUdMX0xJQlNACi1XQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAotV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACi1XRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAotV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKLVdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKLVdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKLVdJTlNDUkVFTkNBUF9MSUJTID0gQFdJTlNDUkVFTkNBUF9MSUJTQAotV0lOU09DSzJfTElCUyA9IEBXSU5TT0NLMl9MSUJTQAotWDExX0NGTEFHUyA9IEBYMTFfQ0ZMQUdTQAotWDExX0xJQlMgPSBAWDExX0xJQlNACi1YMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKLVgyNjVfTElCUyA9IEBYMjY1X0xJQlNACi1YQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKLVhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACi1YR0VUVEVYVCA9IEBYR0VUVEVYVEAKLVhHRVRURVhUXzAxNSA9IEBYR0VUVEVYVF8wMTVACi1YR0VUVEVYVF9FWFRSQV9PUFRJT05TID0gQFhHRVRURVhUX0VYVFJBX09QVElPTlNACi1YVklEX0xJQlMgPSBAWFZJRF9MSUJTQAotWF9DRkxBR1MgPSBAWF9DRkxBR1NACi1YX0xJQlMgPSBAWF9MSUJTQAotWkJBUl9DRkxBR1MgPSBAWkJBUl9DRkxBR1NACi1aQkFSX0xJQlMgPSBAWkJBUl9MSUJTQAotYWJzX2J1aWxkZGlyID0gQGFic19idWlsZGRpckAKLWFic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKLWFic190b3BfYnVpbGRkaXIgPSBAYWJzX3RvcF9idWlsZGRpckAKLWFic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAotYWNfY3RfQVIgPSBAYWNfY3RfQVJACi1hY19jdF9DQyA9IEBhY19jdF9DQ0AKLWFjX2N0X0NYWCA9IEBhY19jdF9DWFhACi1hY19jdF9EVU1QQklOID0gQGFjX2N0X0RVTVBCSU5ACi1hY19jdF9PQkpDID0gQGFjX2N0X09CSkNACi1hbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKLWFtX19sZWFkaW5nX2RvdCA9IEBhbV9fbGVhZGluZ19kb3RACi1hbV9fcXVvdGUgPSBAYW1fX3F1b3RlQAotYW1fX3RhciA9IEBhbV9fdGFyQAotYW1fX3VudGFyID0gQGFtX191bnRhckAKLWF4X3B0aHJlYWRfY29uZmlnID0gQGF4X3B0aHJlYWRfY29uZmlnQAotYmluZGlyID0gQGJpbmRpckAKLWJ1aWxkID0gQGJ1aWxkQAotYnVpbGRfYWxpYXMgPSBAYnVpbGRfYWxpYXNACi1idWlsZF9jcHUgPSBAYnVpbGRfY3B1QAotYnVpbGRfb3MgPSBAYnVpbGRfb3NACi1idWlsZF92ZW5kb3IgPSBAYnVpbGRfdmVuZG9yQAotYnVpbGRkaXIgPSBAYnVpbGRkaXJACi1kYXRhZGlyID0gQGRhdGFkaXJACi1kYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKLWRvY2RpciA9IEBkb2NkaXJACi1kdmlkaXIgPSBAZHZpZGlyQAotZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAotaG9zdCA9IEBob3N0QAotaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAotaG9zdF9jcHUgPSBAaG9zdF9jcHVACi1ob3N0X29zID0gQGhvc3Rfb3NACi1ob3N0X3ZlbmRvciA9IEBob3N0X3ZlbmRvckAKLWh0bWxkaXIgPSBAaHRtbGRpckAKLWluY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKLWluZm9kaXIgPSBAaW5mb2RpckAKLWluc3RhbGxfc2ggPSBAaW5zdGFsbF9zaEAKLWxpYmRpciA9IEBsaWJkaXJACi1saWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACi1sb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAotbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQAotbWFuZGlyID0gQG1hbmRpckAKLW1rZGlyX3AgPSBAbWtkaXJfcEAKLW9sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVkZWRpckAKLXBkZmRpciA9IEBwZGZkaXJACi1wa2dweWV4ZWNkaXIgPSBAcGtncHlleGVjZGlyQAotcGtncHl0aG9uZGlyID0gQHBrZ3B5dGhvbmRpckAKLXBsdWdpbmRpciA9IEBwbHVnaW5kaXJACi1wcmVmaXggPSBAcHJlZml4QAotcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA9IEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQAotcHNkaXIgPSBAcHNkaXJACi1weWV4ZWNkaXIgPSBAcHlleGVjZGlyQAotcHl0aG9uZGlyID0gQHB5dGhvbmRpckAKLXJ1bnN0YXRlZGlyID0gQHJ1bnN0YXRlZGlyQAotc2JpbmRpciA9IEBzYmluZGlyQAotc2hhcmVkc3RhdGVkaXIgPSBAc2hhcmVkc3RhdGVkaXJACi1zcmNkaXIgPSBAc3JjZGlyQAotc3lzY29uZmRpciA9IEBzeXNjb25mZGlyQAotdGFyZ2V0ID0gQHRhcmdldEAKLXRhcmdldF9hbGlhcyA9IEB0YXJnZXRfYWxpYXNACi10YXJnZXRfY3B1ID0gQHRhcmdldF9jcHVACi10YXJnZXRfb3MgPSBAdGFyZ2V0X29zQAotdGFyZ2V0X3ZlbmRvciA9IEB0YXJnZXRfdmVuZG9yQAotdG9wX2J1aWxkX3ByZWZpeCA9IEB0b3BfYnVpbGRfcHJlZml4QAotdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKLXRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKLXdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RtcGcxMjMubGEKLWxpYmdzdG1wZzEyM19sYV9TT1VSQ0VTID0gZ3N0bXBnMTIzYXVkaW9kZWMuYwotbGliZ3N0bXBnMTIzX2xhX0NGTEFHUyA9IC1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKLQkkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKE1QRzEyM19DRkxBR1MpCi0KLWxpYmdzdG1wZzEyM19sYV9MSUJBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKE1QRzEyM19MSUJTKQotCi1saWJnc3RtcGcxMjNfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQotbGliZ3N0bXBnMTIzX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCi1ub2luc3RfSEVBREVSUyA9IGdzdG1wZzEyM2F1ZGlvZGVjLmgKLWFsbDogYWxsLWFtCi0KLS5TVUZGSVhFUzoKLS5TVUZGSVhFUzogLmMgLmxvIC5vIC5vYmoKLSQoc3JjZGlyKS9NYWtlZmlsZS5pbjogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKHNyY2RpcikvTWFrZWZpbGUuYW0gICQoYW1fX2NvbmZpZ3VyZV9kZXBzKQotCUBmb3IgZGVwIGluICQ/OyBkbyBcCi0JICBjYXNlICckKGFtX19jb25maWd1cmVfZGVwcyknIGluIFwKLQkgICAgKiQkZGVwKikgXAotCSAgICAgICggY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoICkgXAotCSAgICAgICAgJiYgeyBpZiB0ZXN0IC1mICRAOyB0aGVuIGV4aXQgMDsgZWxzZSBicmVhazsgZmk7IH07IFwKLQkgICAgICBleGl0IDE7OyBcCi0JICBlc2FjOyBcCi0JZG9uZTsgXAotCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZ251IGV4dC9tcGcxMjMvTWFrZWZpbGUnOyBcCi0JJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAotCSAgJChBVVRPTUFLRSkgLS1nbnUgZXh0L21wZzEyMy9NYWtlZmlsZQotTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwotCUBjYXNlICckPycgaW4gXAotCSAgKmNvbmZpZy5zdGF0dXMqKSBcCi0JICAgIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaDs7IFwKLQkgICopIFwKLQkgICAgZWNobyAnIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRAICQoYW1fX2RlcGZpbGVzX21heWJlKSc7IFwKLQkgICAgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpOzsgXAotCWVzYWM7Ci0KLSQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzOiAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSAkKENPTkZJR19TVEFUVVNfREVQRU5ERU5DSUVTKQotCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAotCi0kKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZTogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKGFtX19jb25maWd1cmVfZGVwcykKLQljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKLSQoQUNMT0NBTF9NNCk6IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChhbV9fYWNsb2NhbF9tNF9kZXBzKQotCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAotJChhbV9fYWNsb2NhbF9tNF9kZXBzKToKLQotaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUzogJChwbHVnaW5fTFRMSUJSQVJJRVMpCi0JQCQoTk9STUFMX0lOU1RBTEwpCi0JQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQocGx1Z2luZGlyKSIgfHwgbGlzdD07IFwKLQlsaXN0Mj07IGZvciBwIGluICQkbGlzdDsgZG8gXAotCSAgaWYgdGVzdCAtZiAkJHA7IHRoZW4gXAotCSAgICBsaXN0Mj0iJCRsaXN0MiAkJHAiOyBcCi0JICBlbHNlIDo7IGZpOyBcCi0JZG9uZTsgXAotCXRlc3QgLXogIiQkbGlzdDIiIHx8IHsgXAotCSAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKHBsdWdpbmRpciknIjsgXAotCSAgJChNS0RJUl9QKSAiJChERVNURElSKSQocGx1Z2luZGlyKSIgfHwgZXhpdCAxOyBcCi0JICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1pbnN0YWxsICQoSU5TVEFMTCkgJChJTlNUQUxMX1NUUklQX0ZMQUcpICQkbGlzdDIgJyQoREVTVERJUikkKHBsdWdpbmRpciknIjsgXAotCSAgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1pbnN0YWxsICQoSU5TVEFMTCkgJChJTlNUQUxMX1NUUklQX0ZMQUcpICQkbGlzdDIgIiQoREVTVERJUikkKHBsdWdpbmRpcikiOyBcCi0JfQotCi11bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVM6Ci0JQCQoTk9STUFMX1VOSU5TVEFMTCkKLQlAbGlzdD0nJChwbHVnaW5fTFRMSUJSQVJJRVMpJzsgdGVzdCAtbiAiJChwbHVnaW5kaXIpIiB8fCBsaXN0PTsgXAotCWZvciBwIGluICQkbGlzdDsgZG8gXAotCSAgJChhbV9fc3RyaXBfZGlyKSBcCi0JICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgJyQoREVTVERJUikkKHBsdWdpbmRpcikvJCRmJyI7IFwKLQkgICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9dW5pbnN0YWxsIHJtIC1mICIkKERFU1RESVIpJChwbHVnaW5kaXIpLyQkZiI7IFwKLQlkb25lCi0KLWNsZWFuLXBsdWdpbkxUTElCUkFSSUVTOgotCS10ZXN0IC16ICIkKHBsdWdpbl9MVExJQlJBUklFUykiIHx8IHJtIC1mICQocGx1Z2luX0xUTElCUkFSSUVTKQotCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyBcCi0JbG9jcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IFwKLQkgICAgICBzZWQgJ3N8XlteL10qJCR8Lnw7IHN8L1teL10qJCR8fDsgc3wkJHwvc29fbG9jYXRpb25zfCcgfCBcCi0JICAgICAgc29ydCAtdWA7IFwKLQl0ZXN0IC16ICIkJGxvY3MiIHx8IHsgXAotCSAgZWNobyBybSAtZiAkJHtsb2NzfTsgXAotCSAgcm0gLWYgJCR7bG9jc307IFwKLQl9Ci0KLWxpYmdzdG1wZzEyMy5sYTogJChsaWJnc3RtcGcxMjNfbGFfT0JKRUNUUykgJChsaWJnc3RtcGcxMjNfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdG1wZzEyM19sYV9ERVBFTkRFTkNJRVMpIAotCSQoQU1fVl9DQ0xEKSQobGliZ3N0bXBnMTIzX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3RtcGcxMjNfbGFfT0JKRUNUUykgJChsaWJnc3RtcGcxMjNfbGFfTElCQUREKSAkKExJQlMpCi0KLW1vc3RseWNsZWFuLWNvbXBpbGU6Ci0JLXJtIC1mICouJChPQkpFWFQpCi0KLWRpc3RjbGVhbi1jb21waWxlOgotCS1ybSAtZiAqLnRhYi5jCi0KLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RtcGcxMjNfbGEtZ3N0bXBnMTIzYXVkaW9kZWMuUGxvQGFtX19xdW90ZUAKLQotLmMubzoKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQylkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5vJCR8fCdgO1wKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQkZGVwYmFzZS5UcG8gLWMgLW8gJEAgJDwgJiZcCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKGFtX19tdikgJCRkZXBiYXNlLlRwbyAkJGRlcGJhc2UuUG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSckPCcgb2JqZWN0PSckQCcgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDT01QSUxFKSAtYyAtbyAkQCAkPAotCi0uYy5vYmo6Ci1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwub2JqJCR8fCdgO1wKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQkZGVwYmFzZS5UcG8gLWMgLW8gJEAgYCQoQ1lHUEFUSF9XKSAnJDwnYCAmJlwKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoYW1fX212KSAkJGRlcGJhc2UuVHBvICQkZGVwYmFzZS5QbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENPTVBJTEUpIC1jIC1vICRAIGAkKENZR1BBVEhfVykgJyQ8J2AKLQotLmMubG86Ci1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubG8kJHx8J2A7XAotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChMVENPTVBJTEUpIC1NVCAkQCAtTUQgLU1QIC1NRiAkJGRlcGJhc2UuVHBvIC1jIC1vICRAICQ8ICYmXAotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQkZGVwYmFzZS5UcG8gJCRkZXBiYXNlLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMVENPTVBJTEUpIC1jIC1vICRAICQ8Ci0KLWxpYmdzdG1wZzEyM19sYS1nc3RtcGcxMjNhdWRpb2RlYy5sbzogZ3N0bXBnMTIzYXVkaW9kZWMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG1wZzEyM19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RtcGcxMjNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG1wZzEyM19sYS1nc3RtcGcxMjNhdWRpb2RlYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0bXBnMTIzX2xhLWdzdG1wZzEyM2F1ZGlvZGVjLlRwbyAtYyAtbyBsaWJnc3RtcGcxMjNfbGEtZ3N0bXBnMTIzYXVkaW9kZWMubG8gYHRlc3QgLWYgJ2dzdG1wZzEyM2F1ZGlvZGVjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG1wZzEyM2F1ZGlvZGVjLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG1wZzEyM19sYS1nc3RtcGcxMjNhdWRpb2RlYy5UcG8gJChERVBESVIpL2xpYmdzdG1wZzEyM19sYS1nc3RtcGcxMjNhdWRpb2RlYy5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RtcGcxMjNhdWRpb2RlYy5jJyBvYmplY3Q9J2xpYmdzdG1wZzEyM19sYS1nc3RtcGcxMjNhdWRpb2RlYy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG1wZzEyM19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RtcGcxMjNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0bXBnMTIzX2xhLWdzdG1wZzEyM2F1ZGlvZGVjLmxvIGB0ZXN0IC1mICdnc3RtcGcxMjNhdWRpb2RlYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RtcGcxMjNhdWRpb2RlYy5jCi0KLW1vc3RseWNsZWFuLWxpYnRvb2w6Ci0JLXJtIC1mICoubG8KLQotY2xlYW4tbGlidG9vbDoKLQktcm0gLXJmIC5saWJzIF9saWJzCi0KLUlEOiAkKGFtX190YWdnZWRfZmlsZXMpCi0JJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgbWtpZCAtZklEICQkdW5pcXVlCi10YWdzOiB0YWdzLWFtCi1UQUdTOiB0YWdzCi0KLXRhZ3MtYW06ICQoVEFHU19ERVBFTkRFTkNJRVMpICQoYW1fX3RhZ2dlZF9maWxlcykKLQlzZXQgeDsgXAotCWhlcmU9YHB3ZGA7IFwKLQkkKGFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMpOyBcCi0Jc2hpZnQ7IFwKLQlpZiB0ZXN0IC16ICIkKEVUQUdTX0FSR1MpJCQqJCR1bmlxdWUiOyB0aGVuIDo7IGVsc2UgXAotCSAgdGVzdCAtbiAiJCR1bmlxdWUiIHx8IHVuaXF1ZT0kJGVtcHR5X2ZpeDsgXAotCSAgaWYgdGVzdCAkJCMgLWd0IDA7IHRoZW4gXAotCSAgICAkKEVUQUdTKSAkKEVUQUdTRkxBR1MpICQoQU1fRVRBR1NGTEFHUykgJChFVEFHU19BUkdTKSBcCi0JICAgICAgIiQkQCIgJCR1bmlxdWU7IFwKLQkgIGVsc2UgXAotCSAgICAkKEVUQUdTKSAkKEVUQUdTRkxBR1MpICQoQU1fRVRBR1NGTEFHUykgJChFVEFHU19BUkdTKSBcCi0JICAgICAgJCR1bmlxdWU7IFwKLQkgIGZpOyBcCi0JZmkKLWN0YWdzOiBjdGFncy1hbQotCi1DVEFHUzogY3RhZ3MKLWN0YWdzLWFtOiAkKFRBR1NfREVQRU5ERU5DSUVTKSAkKGFtX190YWdnZWRfZmlsZXMpCi0JJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgXAotCXRlc3QgLXogIiQoQ1RBR1NfQVJHUykkJHVuaXF1ZSIgXAotCSAgfHwgJChDVEFHUykgJChDVEFHU0ZMQUdTKSAkKEFNX0NUQUdTRkxBR1MpICQoQ1RBR1NfQVJHUykgXAotCSAgICAgJCR1bmlxdWUKLQotR1RBR1M6Ci0JaGVyZT1gJChhbV9fY2QpICQodG9wX2J1aWxkZGlyKSAmJiBwd2RgIFwKLQkgICYmICQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpIFwKLQkgICYmIGd0YWdzIC1pICQoR1RBR1NfQVJHUykgIiQkaGVyZSIKLWNzY29wZWxpc3Q6IGNzY29wZWxpc3QtYW0KLQotY3Njb3BlbGlzdC1hbTogJChhbV9fdGFnZ2VkX2ZpbGVzKQotCWxpc3Q9JyQoYW1fX3RhZ2dlZF9maWxlcyknOyBcCi0JY2FzZSAiJChzcmNkaXIpIiBpbiBcCi0JICBbXFwvXSogfCA/OltcXC9dKikgc2Rpcj0iJChzcmNkaXIpIiA7OyBcCi0JICAqKSBzZGlyPSQoc3ViZGlyKS8kKHNyY2RpcikgOzsgXAotCWVzYWM7IFwKLQlmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKLQkgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gXAotCSAgICBlY2hvICIkKHN1YmRpcikvJCRpIjsgXAotCSAgZWxzZSBcCi0JICAgIGVjaG8gIiQkc2Rpci8kJGkiOyBcCi0JICBmaTsgXAotCWRvbmUgPj4gJCh0b3BfYnVpbGRkaXIpL2NzY29wZS5maWxlcwotCi1kaXN0Y2xlYW4tdGFnczoKLQktcm0gLWYgVEFHUyBJRCBHVEFHUyBHUlRBR1MgR1NZTVMgR1BBVEggdGFncwotCi1kaXN0ZGlyOiAkKERJU1RGSUxFUykKLQlAc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCi0JdG9wc3JjZGlyc3RyaXA9YGVjaG8gIiQodG9wX3NyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAotCWxpc3Q9JyQoRElTVEZJTEVTKSc7IFwKLQkgIGRpc3RfZmlsZXM9YGZvciBmaWxlIGluICQkbGlzdDsgZG8gZWNobyAkJGZpbGU7IGRvbmUgfCBcCi0JICBzZWQgLWUgInN8XiQkc3JjZGlyc3RyaXAvfHw7dCIgXAotCSAgICAgIC1lICJzfF4kJHRvcHNyY2RpcnN0cmlwL3wkKHRvcF9idWlsZGRpcikvfDt0ImA7IFwKLQljYXNlICQkZGlzdF9maWxlcyBpbiBcCi0JICAqLyopICQoTUtESVJfUCkgYGVjaG8gIiQkZGlzdF9maWxlcyIgfCBcCi0JCQkgICBzZWQgJy9cLy8hZDtzfF58JChkaXN0ZGlyKS98O3MsL1teL10qJCQsLCcgfCBcCi0JCQkgICBzb3J0IC11YCA7OyBcCi0JZXNhYzsgXAotCWZvciBmaWxlIGluICQkZGlzdF9maWxlczsgZG8gXAotCSAgaWYgdGVzdCAtZiAkJGZpbGUgfHwgdGVzdCAtZCAkJGZpbGU7IHRoZW4gZD0uOyBlbHNlIGQ9JChzcmNkaXIpOyBmaTsgXAotCSAgaWYgdGVzdCAtZCAkJGQvJCRmaWxlOyB0aGVuIFwKLQkgICAgZGlyPWBlY2hvICIvJCRmaWxlIiB8IHNlZCAtZSAncywvW14vXSokJCwsJ2A7IFwKLQkgICAgaWYgdGVzdCAtZCAiJChkaXN0ZGlyKS8kJGZpbGUiOyB0aGVuIFwKLQkgICAgICBmaW5kICIkKGRpc3RkaXIpLyQkZmlsZSIgLXR5cGUgZCAhIC1wZXJtIC03MDAgLWV4ZWMgY2htb2QgdStyd3gge30gXDs7IFwKLQkgICAgZmk7IFwKLQkgICAgaWYgdGVzdCAtZCAkKHNyY2RpcikvJCRmaWxlICYmIHRlc3QgJCRkICE9ICQoc3JjZGlyKTsgdGhlbiBcCi0JICAgICAgY3AgLWZwUiAkKHNyY2RpcikvJCRmaWxlICIkKGRpc3RkaXIpJCRkaXIiIHx8IGV4aXQgMTsgXAotCSAgICAgIGZpbmQgIiQoZGlzdGRpcikvJCRmaWxlIiAtdHlwZSBkICEgLXBlcm0gLTcwMCAtZXhlYyBjaG1vZCB1K3J3eCB7fSBcOzsgXAotCSAgICBmaTsgXAotCSAgICBjcCAtZnBSICQkZC8kJGZpbGUgIiQoZGlzdGRpcikkJGRpciIgfHwgZXhpdCAxOyBcCi0JICBlbHNlIFwKLQkgICAgdGVzdCAtZiAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKLQkgICAgfHwgY3AgLXAgJCRkLyQkZmlsZSAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKLQkgICAgfHwgZXhpdCAxOyBcCi0JICBmaTsgXAotCWRvbmUKLWNoZWNrLWFtOiBhbGwtYW0KLWNoZWNrOiBjaGVjay1hbQotYWxsLWFtOiBNYWtlZmlsZSAkKExUTElCUkFSSUVTKSAkKEhFQURFUlMpCi1pbnN0YWxsZGlyczoKLQlmb3IgZGlyIGluICIkKERFU1RESVIpJChwbHVnaW5kaXIpIjsgZG8gXAotCSAgdGVzdCAteiAiJCRkaXIiIHx8ICQoTUtESVJfUCkgIiQkZGlyIjsgXAotCWRvbmUKLWluc3RhbGw6IGluc3RhbGwtYW0KLWluc3RhbGwtZXhlYzogaW5zdGFsbC1leGVjLWFtCi1pbnN0YWxsLWRhdGE6IGluc3RhbGwtZGF0YS1hbQotdW5pbnN0YWxsOiB1bmluc3RhbGwtYW0KLQotaW5zdGFsbC1hbTogYWxsLWFtCi0JQCQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWRhdGEtYW0KLQotaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stYW0KLWluc3RhbGwtc3RyaXA6Ci0JaWYgdGVzdCAteiAnJChTVFJJUCknOyB0aGVuIFwKLQkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCi0JICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAotCSAgICAgIGluc3RhbGw7IFwKLQllbHNlIFwKLQkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCi0JICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAotCSAgICAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyIgaW5zdGFsbDsgXAotCWZpCi1tb3N0bHljbGVhbi1nZW5lcmljOgotCi1jbGVhbi1nZW5lcmljOgotCi1kaXN0Y2xlYW4tZ2VuZXJpYzoKLQktdGVzdCAteiAiJChDT05GSUdfQ0xFQU5fRklMRVMpIiB8fCBybSAtZiAkKENPTkZJR19DTEVBTl9GSUxFUykKLQktdGVzdCAuID0gIiQoc3JjZGlyKSIgfHwgdGVzdCAteiAiJChDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMpIiB8fCBybSAtZiAkKENPTkZJR19DTEVBTl9WUEFUSF9GSUxFUykKLQotbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljOgotCUBlY2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzIHRvIHVzZSIKLQlAZWNobyAiaXQgZGVsZXRlcyBmaWxlcyB0aGF0IG1heSByZXF1aXJlIHNwZWNpYWwgdG9vbHMgdG8gcmVidWlsZC4iCi1jbGVhbjogY2xlYW4tYW0KLQotY2xlYW4tYW06IGNsZWFuLWdlbmVyaWMgY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBcCi0JbW9zdGx5Y2xlYW4tYW0KLQotZGlzdGNsZWFuOiBkaXN0Y2xlYW4tYW0KLQktcm0gLXJmIC4vJChERVBESVIpCi0JLXJtIC1mIE1ha2VmaWxlCi1kaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKLQlkaXN0Y2xlYW4tdGFncwotCi1kdmk6IGR2aS1hbQotCi1kdmktYW06Ci0KLWh0bWw6IGh0bWwtYW0KLQotaHRtbC1hbToKLQotaW5mbzogaW5mby1hbQotCi1pbmZvLWFtOgotCi1pbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKLQotaW5zdGFsbC1kdmk6IGluc3RhbGwtZHZpLWFtCi0KLWluc3RhbGwtZHZpLWFtOgotCi1pbnN0YWxsLWV4ZWMtYW06Ci0KLWluc3RhbGwtaHRtbDogaW5zdGFsbC1odG1sLWFtCi0KLWluc3RhbGwtaHRtbC1hbToKLQotaW5zdGFsbC1pbmZvOiBpbnN0YWxsLWluZm8tYW0KLQotaW5zdGFsbC1pbmZvLWFtOgotCi1pbnN0YWxsLW1hbjoKLQotaW5zdGFsbC1wZGY6IGluc3RhbGwtcGRmLWFtCi0KLWluc3RhbGwtcGRmLWFtOgotCi1pbnN0YWxsLXBzOiBpbnN0YWxsLXBzLWFtCi0KLWluc3RhbGwtcHMtYW06Ci0KLWluc3RhbGxjaGVjay1hbToKLQotbWFpbnRhaW5lci1jbGVhbjogbWFpbnRhaW5lci1jbGVhbi1hbQotCS1ybSAtcmYgLi8kKERFUERJUikKLQktcm0gLWYgTWFrZWZpbGUKLW1haW50YWluZXItY2xlYW4tYW06IGRpc3RjbGVhbi1hbSBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMKLQotbW9zdGx5Y2xlYW46IG1vc3RseWNsZWFuLWFtCi0KLW1vc3RseWNsZWFuLWFtOiBtb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMgXAotCW1vc3RseWNsZWFuLWxpYnRvb2wKLQotcGRmOiBwZGYtYW0KLQotcGRmLWFtOgotCi1wczogcHMtYW0KLQotcHMtYW06Ci0KLXVuaW5zdGFsbC1hbTogdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCi0KLS5NQUtFOiBpbnN0YWxsLWFtIGluc3RhbGwtc3RyaXAKLQotLlBIT05ZOiBDVEFHUyBHVEFHUyBUQUdTIGFsbCBhbGwtYW0gY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBcCi0JY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBjc2NvcGVsaXN0LWFtIGN0YWdzIFwKLQljdGFncy1hbSBkaXN0Y2xlYW4gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAotCWRpc3RjbGVhbi1saWJ0b29sIGRpc3RjbGVhbi10YWdzIGRpc3RkaXIgZHZpIGR2aS1hbSBodG1sIFwKLQlodG1sLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIFwKLQlpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgaW5zdGFsbC1kdmktYW0gaW5zdGFsbC1leGVjIFwKLQlpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIGluc3RhbGwtaHRtbC1hbSBpbnN0YWxsLWluZm8gXAotCWluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBcCi0JaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUyBpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0gXAotCWluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBcCi0JbWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4gXAotCW1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1saWJ0b29sIFwKLQlwZGYgcGRmLWFtIHBzIHBzLWFtIHRhZ3MgdGFncy1hbSB1bmluc3RhbGwgdW5pbnN0YWxsLWFtIFwKLQl1bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKLQotLlBSRUNJT1VTOiBNYWtlZmlsZQotCi0KLSMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSB0byBub3QgZXhwb3J0IGFsbCB2YXJpYWJsZXMuCi0jIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KLS5OT0VYUE9SVDoKZGlmZiAtLWdpdCBhL2V4dC9tcGcxMjMvZ3N0bXBnMTIzYXVkaW9kZWMuYyBiL2V4dC9tcGcxMjMvZ3N0bXBnMTIzYXVkaW9kZWMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE4NTk4Yy4uMDAwMDAwMAotLS0gYS9leHQvbXBnMTIzL2dzdG1wZzEyM2F1ZGlvZGVjLmMKKysrIC9kZXYvbnVsbApAQCAtMSw2MzMgKzAsMCBAQAotLyogIE1QMyBkZWNvZGluZyBwbHVnaW4gZm9yIEdTdHJlYW1lciB1c2luZyB0aGUgbXBnMTIzIGxpYnJhcnkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ2FybG9zIFJhZmFlbCBHaWFuaQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLS8qKgotICogU0VDVElPTjogZWxlbWVudC1tcGcxMjNhdWRpb2RlYwotICogQHNlZV9hbHNvOiBsYW1lbXAzZW5jLCBtYWQKLSAqCi0gKiBBdWRpbyBkZWNvZGVyIGZvciBNUEVHLTEgbGF5ZXIgMS8yLzMgYXVkaW8gZGF0YS4KLSAqCi0gKiA8cmVmc2VjdDI+Ci0gKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZXM8L3RpdGxlPgotICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj1tdXNpYy5tcDMgISBtcGVnYXVkaW9wYXJzZSAhIG1wZzEyM2F1ZGlvZGVjICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGF1dG9hdWRpb3NpbmsKLSAqIF18IERlY29kZSBhbmQgcGxheSB0aGUgbXAzIGZpbGUKLSAqIDwvcmVmc2VjdDI+Ci0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlIDxjb25maWcuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSAiZ3N0bXBnMTIzYXVkaW9kZWMuaCIKLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi1HU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChtcGcxMjNfZGVidWcpOwotI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgbXBnMTIzX2RlYnVnCi0KLS8qIE9taXR0ZWQgc2FtcGxlIGZvcm1hdHMgdGhhdCBtcGcxMjMgc3VwcG9ydHMgKG9yIGF0IGxlYXN0IGNhbiBzdXBwb3J0KToKLSAqICAtIDhiaXQgaW50ZWdlciBzaWduZWQKLSAqICAtIDhiaXQgaW50ZWdlciB1bnNpZ25lZAotICogIC0gYS1sYXcKLSAqICAtIG11LWxhdwotICogIC0gNjRiaXQgZmxvYXQKLSAqCi0gKiBUaGUgZmlyc3QgZm91ciBmb3JtYXRzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBHc3RBdWRpb0RlY29kZXIgYmFzZSBjbGFzcy4KLSAqIChUaGUgaW50ZXJuYWwgZ3N0X2F1ZGlvX2Zvcm1hdF9mcm9tX2NhcHNfc3RydWN0dXJlKCkgY2FsbCBmYWlscy4pCi0gKgotICogVGhlIDY0Yml0IGZsb2F0IGlzc3VlIGlzIHRyaWNreS4gbXBnMTIzIGFjdHVhbGx5IGRlY29kZXMgdG8gInJlYWwiLAotICogbm90IG5lY2Vzc2FyaWx5IHRvICJmbG9hdCIuCi0gKgotICogInJlYWwiIGNhbiBiZSBmaXhlZCBwb2ludCwgMzJiaXQgZmxvYXQsIDY0Yml0IGZsb2F0LiBUaGVyZSBzZWVtcyB0byBiZQotICogbm8gd2F5IGhvdyB0byBmaW5kIG91dCB3aGljaCBvbmUgb2YgdGhlbSBpcyBhY3R1YWxseSB1c2VkLgotICoKLSAqIEhvd2V2ZXIsIGluIGFsbCBrbm93biBpbnN0YWxsYXRpb25zLCAicmVhbCIgZXF1YWxzIDMyYml0IGZsb2F0LCBzbyB0aGF0J3MKLSAqIHdoYXQgaXMgdXNlZC4gKi8KLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHN0YXRpY19zaW5rX3RlbXBsYXRlID0KLUdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImF1ZGlvL21wZWcsICIKLSAgICAgICAgIm1wZWd2ZXJzaW9uID0gKGludCkgMSwgIgotICAgICAgICAibGF5ZXIgPSAoaW50KSBbIDEsIDMgXSwgIgotICAgICAgICAicmF0ZSA9IChpbnQpIHsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwIH0sICIKLSAgICAgICAgImNoYW5uZWxzID0gKGludCkgWyAxLCAyIF0sICIgInBhcnNlZCA9IChib29sZWFuKSB0cnVlICIpCi0gICAgKTsKLQotc3RhdGljIGdib29sZWFuIGdzdF9tcGcxMjNfYXVkaW9fZGVjX3N0YXJ0IChHc3RBdWRpb0RlY29kZXIgKiBkZWMpOwotc3RhdGljIGdib29sZWFuIGdzdF9tcGcxMjNfYXVkaW9fZGVjX3N0b3AgKEdzdEF1ZGlvRGVjb2RlciAqIGRlYyk7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfbXBnMTIzX2F1ZGlvX2RlY19wdXNoX2RlY29kZWRfYnl0ZXMgKEdzdE1wZzEyM0F1ZGlvRGVjCi0gICAgKiBtcGcxMjNfZGVjb2RlciwgdW5zaWduZWQgY2hhciBjb25zdCAqZGVjb2RlZF9ieXRlcywKLSAgICBzaXplX3QgY29uc3QgbnVtX2RlY29kZWRfYnl0ZXMpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X21wZzEyM19hdWRpb19kZWNfaGFuZGxlX2ZyYW1lIChHc3RBdWRpb0RlY29kZXIgKiBkZWMsCi0gICAgR3N0QnVmZmVyICogaW5wdXRfYnVmZmVyKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfbXBnMTIzX2F1ZGlvX2RlY19zZXRfZm9ybWF0IChHc3RBdWRpb0RlY29kZXIgKiBkZWMsCi0gICAgR3N0Q2FwcyAqIGlucHV0X2NhcHMpOwotc3RhdGljIHZvaWQgZ3N0X21wZzEyM19hdWRpb19kZWNfZmx1c2ggKEdzdEF1ZGlvRGVjb2RlciAqIGRlYywgZ2Jvb2xlYW4gaGFyZCk7Ci0KLUdfREVGSU5FX1RZUEUgKEdzdE1wZzEyM0F1ZGlvRGVjLCBnc3RfbXBnMTIzX2F1ZGlvX2RlYywgR1NUX1RZUEVfQVVESU9fREVDT0RFUik7Ci0KLXN0YXRpYyB2b2lkCi1nc3RfbXBnMTIzX2F1ZGlvX2RlY19jbGFzc19pbml0IChHc3RNcGcxMjNBdWRpb0RlY0NsYXNzICoga2xhc3MpCi17Ci0gIEdzdEF1ZGlvRGVjb2RlckNsYXNzICpiYXNlX2NsYXNzOwotICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3M7Ci0gIEdzdFBhZFRlbXBsYXRlICpzcmNfdGVtcGxhdGUsICpzaW5rX3RlbXBsYXRlOwotICBpbnQgZXJyb3I7Ci0KLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKG1wZzEyM19kZWJ1ZywgIm1wZzEyMyIsIDAsICJtcGcxMjMgbXAzIGRlY29kZXIiKTsKLQotICBiYXNlX2NsYXNzID0gR1NUX0FVRElPX0RFQ09ERVJfQ0xBU1MgKGtsYXNzKTsKLSAgZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZWxlbWVudF9jbGFzcywKLSAgICAgICJtcGcxMjMgbXAzIGRlY29kZXIiLAotICAgICAgIkNvZGVjL0RlY29kZXIvQXVkaW8iLAotICAgICAgIkRlY29kZXMgbXAzIHN0cmVhbXMgdXNpbmcgdGhlIG1wZzEyMyBsaWJyYXJ5IiwKLSAgICAgICJDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+Iik7Ci0KLSAgLyogTm90IHVzaW5nIHN0YXRpYyBwYWQgdGVtcGxhdGUgZm9yIHNyY2NhcHMsIHNpbmNlIHRoZSBjb21tYS1zZXBhcmF0ZWQgbGlzdAotICAgKiBvZiBmb3JtYXRzIG5lZWRzIHRvIGJlIGNyZWF0ZWQgZGVwZW5kaW5nIG9uIHdoYXRldmVyIG1wZzEyMyBzdXBwb3J0cyAqLwotICB7Ci0gICAgY29uc3QgaW50ICpmb3JtYXRfbGlzdDsKLSAgICBjb25zdCBsb25nICpyYXRlc19saXN0OwotICAgIHNpemVfdCBudW0sIGk7Ci0gICAgR1N0cmluZyAqczsKLSAgICBHc3RDYXBzICpzcmNfdGVtcGxhdGVfY2FwczsKLQotICAgIHMgPSBnX3N0cmluZ19uZXcgKCJhdWRpby94LXJhdywgIik7Ci0KLSAgICBtcGcxMjNfZW5jb2RpbmdzICgmZm9ybWF0X2xpc3QsICZudW0pOwotICAgIGdfc3RyaW5nX2FwcGVuZCAocywgImZvcm1hdCA9IHsgIik7Ci0gICAgZm9yIChpID0gMDsgaSA8IG51bTsgKytpKSB7Ci0gICAgICBzd2l0Y2ggKGZvcm1hdF9saXN0W2ldKSB7Ci0gICAgICAgIGNhc2UgTVBHMTIzX0VOQ19TSUdORURfMTY6Ci0gICAgICAgICAgZ19zdHJpbmdfYXBwZW5kIChzLCAoaSA+IDApID8gIiwgIiA6ICIiKTsKLSAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHMsIEdTVF9BVURJT19ORSAoUzE2KSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTVBHMTIzX0VOQ19VTlNJR05FRF8xNjoKLSAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHMsIChpID4gMCkgPyAiLCAiIDogIiIpOwotICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAocywgR1NUX0FVRElPX05FIChVMTYpKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNUEcxMjNfRU5DX1NJR05FRF8yNDoKLSAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHMsIChpID4gMCkgPyAiLCAiIDogIiIpOwotICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAocywgR1NUX0FVRElPX05FIChTMjQpKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNUEcxMjNfRU5DX1VOU0lHTkVEXzI0OgotICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAocywgKGkgPiAwKSA/ICIsICIgOiAiIik7Ci0gICAgICAgICAgZ19zdHJpbmdfYXBwZW5kIChzLCBHU1RfQVVESU9fTkUgKFUyNCkpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1QRzEyM19FTkNfU0lHTkVEXzMyOgotICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAocywgKGkgPiAwKSA/ICIsICIgOiAiIik7Ci0gICAgICAgICAgZ19zdHJpbmdfYXBwZW5kIChzLCBHU1RfQVVESU9fTkUgKFMzMikpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1QRzEyM19FTkNfVU5TSUdORURfMzI6Ci0gICAgICAgICAgZ19zdHJpbmdfYXBwZW5kIChzLCAoaSA+IDApID8gIiwgIiA6ICIiKTsKLSAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHMsIEdTVF9BVURJT19ORSAoVTMyKSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTVBHMTIzX0VOQ19GTE9BVF8zMjoKLSAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHMsIChpID4gMCkgPyAiLCAiIDogIiIpOwotICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAocywgR1NUX0FVRElPX05FIChGMzIpKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBHU1RfREVCVUcgKCJJZ25vcmluZyBtcGcxMjMgZm9ybWF0ICVkIiwgZm9ybWF0X2xpc3RbaV0pOwotICAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICBnX3N0cmluZ19hcHBlbmQgKHMsICIgfSwgIik7Ci0KLSAgICBtcGcxMjNfcmF0ZXMgKCZyYXRlc19saXN0LCAmbnVtKTsKLSAgICBnX3N0cmluZ19hcHBlbmQgKHMsICJyYXRlID0gKGludCkgeyAiKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyArK2kpIHsKLSAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHMsICIlcyVsdSIsIChpID4gMCkgPyAiLCAiIDogIiIsIHJhdGVzX2xpc3RbaV0pOwotICAgIH0KLSAgICBnX3N0cmluZ19hcHBlbmQgKHMsICJ9LCAiKTsKLQotICAgIGdfc3RyaW5nX2FwcGVuZCAocywgImNoYW5uZWxzID0gKGludCkgWyAxLCAyIF0sICIpOwotICAgIGdfc3RyaW5nX2FwcGVuZCAocywgImxheW91dCA9IChzdHJpbmcpIGludGVybGVhdmVkIik7Ci0KLSAgICBzcmNfdGVtcGxhdGVfY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nIChzLT5zdHIpOwotICAgIHNyY190ZW1wbGF0ZSA9IGdzdF9wYWRfdGVtcGxhdGVfbmV3ICgic3JjIiwgR1NUX1BBRF9TUkMsIEdTVF9QQURfQUxXQVlTLAotICAgICAgICBzcmNfdGVtcGxhdGVfY2Fwcyk7Ci0KLSAgICBnX3N0cmluZ19mcmVlIChzLCBUUlVFKTsKLSAgfQotCi0gIHNpbmtfdGVtcGxhdGUgPSBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzdGF0aWNfc2lua190ZW1wbGF0ZSk7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywgc2lua190ZW1wbGF0ZSk7Ci0gIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsIHNyY190ZW1wbGF0ZSk7Ci0KLSAgYmFzZV9jbGFzcy0+c3RhcnQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X21wZzEyM19hdWRpb19kZWNfc3RhcnQpOwotICBiYXNlX2NsYXNzLT5zdG9wID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9tcGcxMjNfYXVkaW9fZGVjX3N0b3ApOwotICBiYXNlX2NsYXNzLT5oYW5kbGVfZnJhbWUgPQotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9tcGcxMjNfYXVkaW9fZGVjX2hhbmRsZV9mcmFtZSk7Ci0gIGJhc2VfY2xhc3MtPnNldF9mb3JtYXQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X21wZzEyM19hdWRpb19kZWNfc2V0X2Zvcm1hdCk7Ci0gIGJhc2VfY2xhc3MtPmZsdXNoID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9tcGcxMjNfYXVkaW9fZGVjX2ZsdXNoKTsKLQotICBlcnJvciA9IG1wZzEyM19pbml0ICgpOwotICBpZiAoR19VTkxJS0VMWSAoZXJyb3IgIT0gTVBHMTIzX09LKSkKLSAgICBHU1RfRVJST1IgKCJDb3VsZCBub3QgaW5pdGlhbGl6ZSBtcGcxMjMgbGlicmFyeTogJXMiLAotICAgICAgICBtcGcxMjNfcGxhaW5fc3RyZXJyb3IgKGVycm9yKSk7Ci0gIGVsc2UKLSAgICBHU1RfSU5GTyAoIm1wZzEyMyBsaWJyYXJ5IGluaXRpYWxpemVkIik7Ci19Ci0KLQotdm9pZAotZ3N0X21wZzEyM19hdWRpb19kZWNfaW5pdCAoR3N0TXBnMTIzQXVkaW9EZWMgKiBtcGcxMjNfZGVjb2RlcikKLXsKLSAgbXBnMTIzX2RlY29kZXItPmhhbmRsZSA9IE5VTEw7Ci0gIGdzdF9hdWRpb19kZWNvZGVyX3NldF9uZWVkc19mb3JtYXQgKEdTVF9BVURJT19ERUNPREVSIChtcGcxMjNfZGVjb2RlciksIFRSVUUpOwotICBnc3RfYXVkaW9fZGVjb2Rlcl9zZXRfdXNlX2RlZmF1bHRfcGFkX2FjY2VwdGNhcHMgKEdTVF9BVURJT19ERUNPREVSX0NBU1QKLSAgICAgIChtcGcxMjNfZGVjb2RlciksIFRSVUUpOwotICBHU1RfUEFEX1NFVF9BQ0NFUFRfVEVNUExBVEUgKEdTVF9BVURJT19ERUNPREVSX1NJTktfUEFEIChtcGcxMjNfZGVjb2RlcikpOwotfQotCi0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X21wZzEyM19hdWRpb19kZWNfc3RhcnQgKEdzdEF1ZGlvRGVjb2RlciAqIGRlYykKLXsKLSAgR3N0TXBnMTIzQXVkaW9EZWMgKm1wZzEyM19kZWNvZGVyOwotICBpbnQgZXJyb3I7Ci0KLSAgbXBnMTIzX2RlY29kZXIgPSBHU1RfTVBHMTIzX0FVRElPX0RFQyAoZGVjKTsKLSAgZXJyb3IgPSAwOwotCi0gIG1wZzEyM19kZWNvZGVyLT5oYW5kbGUgPSBtcGcxMjNfbmV3IChOVUxMLCAmZXJyb3IpOwotICBtcGcxMjNfZGVjb2Rlci0+aGFzX25leHRfYXVkaW9pbmZvID0gRkFMU0U7Ci0gIG1wZzEyM19kZWNvZGVyLT5mcmFtZV9vZmZzZXQgPSAwOwotCi0gIC8qIEluaXRpYWxseSwgdGhlIG1wZzEyMyBoYW5kbGUgY29tZXMgd2l0aCBhIHNldCBvZiBkZWZhdWx0IGZvcm1hdHMKLSAgICogc3VwcG9ydGVkLiBUaGlzIGNsZWFycyB0aGlzIHNldC4gIFRoaXMgaXMgbmVjZXNzYXJ5LCBzaW5jZSBvbmx5IG9uZQotICAgKiBmb3JtYXQgc2hhbGwgYmUgc3VwcG9ydGVkIChzZWUgc2V0X2Zvcm1hdCBmb3IgbW9yZSkuICovCi0gIG1wZzEyM19mb3JtYXRfbm9uZSAobXBnMTIzX2RlY29kZXItPmhhbmRsZSk7Ci0KLSAgLyogQnVpbHQtaW4gbXBnMTIzIHN1cHBvcnQgZm9yIGdhcGxlc3MgZGVjb2RpbmcgaXMgZGlzYWJsZWQgZm9yIG5vdywKLSAgICogc2luY2UgaXQgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGggc2Vla2luZyAqLwotICBtcGcxMjNfcGFyYW0gKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUsIE1QRzEyM19SRU1PVkVfRkxBR1MsIE1QRzEyM19HQVBMRVNTLCAwKTsKLSAgLyogVGVsbHMgbXBnMTIzIHRvIHVzZSBhIHNtYWxsIHJlYWQtYWhlYWQgYnVmZmVyIGZvciBiZXR0ZXIgTVBFRyBzeW5jOwotICAgKiBlc3NlbnRpYWwgZm9yIE1QMyByYWRpbyBzdHJlYW1zICovCi0gIG1wZzEyM19wYXJhbSAobXBnMTIzX2RlY29kZXItPmhhbmRsZSwgTVBHMTIzX0FERF9GTEFHUywgTVBHMTIzX1NFRUtCVUZGRVIsIDApOwotICAvKiBTZXRzIHRoZSByZXN5bmMgbGltaXQgdG8gdGhlIGVuZCBvZiB0aGUgc3RyZWFtIChvdGhlcndpc2UgbXBnMTIzIG1heSBnaXZlCi0gICAqIHVwIG9uIGRlY29kaW5nIHByZW1hdHVyZWx5LCBlc3BlY2lhbGx5IHdpdGggbXAzIHdlYiByYWRpb3MpICovCi0gIG1wZzEyM19wYXJhbSAobXBnMTIzX2RlY29kZXItPmhhbmRsZSwgTVBHMTIzX1JFU1lOQ19MSU1JVCwgLTEsIDApOwotI2lmIE1QRzEyM19BUElfVkVSU0lPTiA+PSAzNgotICAvKiBUaGUgcHJlY2lzZSBBUEkgdmVyc2lvbiB3aGVyZSBNUEcxMjNfQVVUT19SRVNBTVBMRSBhcHBlYXJlZCBpcwotICAgKiBzb21ld2hlcmUgYmV0d2VlbiAyOSBhbmQgMzYgKi8KLSAgLyogRG9uJ3QgbGV0IG1wZzEyMyByZXNhbXBsZSBvdXRwdXQgKi8KLSAgbXBnMTIzX3BhcmFtIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlLCBNUEcxMjNfUkVNT1ZFX0ZMQUdTLAotICAgICAgTVBHMTIzX0FVVE9fUkVTQU1QTEUsIDApOwotI2VuZGlmCi0gIC8qIERvbid0IGxldCBtcGcxMjMgcHJpbnQgbWVzc2FnZXMgdG8gc3Rkb3V0L3N0ZGVyciAqLwotICBtcGcxMjNfcGFyYW0gKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUsIE1QRzEyM19BRERfRkxBR1MsIE1QRzEyM19RVUlFVCwgMCk7Ci0KLSAgLyogT3BlbiBpbiBmZWVkIG1vZGUgKD0gZW5jb2RlZCBkYXRhIGlzIGZlZCBtYW51YWxseSBpbnRvIHRoZSBoYW5kbGUpLiAqLwotICBlcnJvciA9IG1wZzEyM19vcGVuX2ZlZWQgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUpOwotCi0gIGlmIChHX1VOTElLRUxZIChlcnJvciAhPSBNUEcxMjNfT0spKSB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKGRlYywgTElCUkFSWSwgSU5JVCwgKE5VTEwpLAotICAgICAgICAoIiVzIiwgbXBnMTIzX3N0cmVycm9yIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlKSkpOwotICAgIG1wZzEyM19jbG9zZSAobXBnMTIzX2RlY29kZXItPmhhbmRsZSk7Ci0gICAgbXBnMTIzX2RlbGV0ZSAobXBnMTIzX2RlY29kZXItPmhhbmRsZSk7Ci0gICAgbXBnMTIzX2RlY29kZXItPmhhbmRsZSA9IE5VTEw7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgR1NUX0lORk9fT0JKRUNUIChkZWMsICJtcGcxMjMgZGVjb2RlciBzdGFydGVkIik7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfbXBnMTIzX2F1ZGlvX2RlY19zdG9wIChHc3RBdWRpb0RlY29kZXIgKiBkZWMpCi17Ci0gIEdzdE1wZzEyM0F1ZGlvRGVjICptcGcxMjNfZGVjb2RlciA9IEdTVF9NUEcxMjNfQVVESU9fREVDIChkZWMpOwotCi0gIGlmIChHX0xJS0VMWSAobXBnMTIzX2RlY29kZXItPmhhbmRsZSAhPSBOVUxMKSkgewotICAgIG1wZzEyM19jbG9zZSAobXBnMTIzX2RlY29kZXItPmhhbmRsZSk7Ci0gICAgbXBnMTIzX2RlbGV0ZSAobXBnMTIzX2RlY29kZXItPmhhbmRsZSk7Ci0gICAgbXBnMTIzX2RlY29kZXItPmhhbmRsZSA9IE5VTEw7Ci0gIH0KLQotICBHU1RfSU5GT19PQkpFQ1QgKGRlYywgIm1wZzEyMyBkZWNvZGVyIHN0b3BwZWQiKTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X21wZzEyM19hdWRpb19kZWNfcHVzaF9kZWNvZGVkX2J5dGVzIChHc3RNcGcxMjNBdWRpb0RlYyAqIG1wZzEyM19kZWNvZGVyLAotICAgIHVuc2lnbmVkIGNoYXIgY29uc3QgKmRlY29kZWRfYnl0ZXMsIHNpemVfdCBjb25zdCBudW1fZGVjb2RlZF9ieXRlcykKLXsKLSAgR3N0QnVmZmVyICpvdXRwdXRfYnVmZmVyOwotICBHc3RBdWRpb0RlY29kZXIgKmRlYzsKLQotICBvdXRwdXRfYnVmZmVyID0gTlVMTDsKLSAgZGVjID0gR1NUX0FVRElPX0RFQ09ERVIgKG1wZzEyM19kZWNvZGVyKTsKLQotICBpZiAoKG51bV9kZWNvZGVkX2J5dGVzID09IDApIHx8IChkZWNvZGVkX2J5dGVzID09IE5VTEwpKSB7Ci0gICAgLyogVGhpcyBvY2N1cnMgaW4gdGhlIGZpcnN0IGZldyBmcmFtZXMsIHdoaWNoIGRvIG5vdCBjYXJyeSBkYXRhOyBvbmNlCi0gICAgICogTVBHMTIzX0FVRElPX0RFQ19ORVdfRk9STUFUIGlzIHJlY2VpdmVkLCB0aGUgZW1wdHkgZnJhbWVzIHN0b3Agb2NjdXJyaW5nICovCi0gICAgR1NUX0RFQlVHX09CSkVDVCAobXBnMTIzX2RlY29kZXIsCi0gICAgICAgICJjYW5ub3QgZGVjb2RlIHlldCwgbmVlZCBtb3JlIGRhdGEgLT4gbm8gb3V0cHV0IGJ1ZmZlciB0byBwdXNoIik7Ci0gICAgcmV0dXJuIEdTVF9GTE9XX09LOwotICB9Ci0KLSAgb3V0cHV0X2J1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FsbG9jYXRlIChOVUxMLCBudW1fZGVjb2RlZF9ieXRlcywgTlVMTCk7Ci0KLSAgaWYgKG91dHB1dF9idWZmZXIgPT0gTlVMTCkgewotICAgIC8qIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGFkdmFuY2UgcGxheWJhY2sgaW4gdGltZSwKLSAgICAgKiBldmVuIHdoZW4gbm90aGluZyB3YXMgZGVjb2RlZC4gKi8KLSAgICByZXR1cm4gZ3N0X2F1ZGlvX2RlY29kZXJfZmluaXNoX2ZyYW1lIChkZWMsIE5VTEwsIDEpOwotICB9IGVsc2UgewotICAgIEdzdE1hcEluZm8gaW5mbzsKLQotICAgIGlmIChnc3RfYnVmZmVyX21hcCAob3V0cHV0X2J1ZmZlciwgJmluZm8sIEdTVF9NQVBfV1JJVEUpKSB7Ci0gICAgICBtZW1jcHkgKGluZm8uZGF0YSwgZGVjb2RlZF9ieXRlcywgbnVtX2RlY29kZWRfYnl0ZXMpOwotICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAob3V0cHV0X2J1ZmZlciwgJmluZm8pOwotICAgIH0gZWxzZSB7Ci0gICAgICBHU1RfRVJST1JfT0JKRUNUIChtcGcxMjNfZGVjb2RlciwgImdzdF9idWZmZXJfbWFwKCkgcmV0dXJuZWQgTlVMTCIpOwotICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAob3V0cHV0X2J1ZmZlcik7Ci0gICAgICBvdXRwdXRfYnVmZmVyID0gTlVMTDsKLSAgICB9Ci0KLSAgICByZXR1cm4gZ3N0X2F1ZGlvX2RlY29kZXJfZmluaXNoX2ZyYW1lIChkZWMsIG91dHB1dF9idWZmZXIsIDEpOwotICB9Ci19Ci0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9tcGcxMjNfYXVkaW9fZGVjX2hhbmRsZV9mcmFtZSAoR3N0QXVkaW9EZWNvZGVyICogZGVjLAotICAgIEdzdEJ1ZmZlciAqIGlucHV0X2J1ZmZlcikKLXsKLSAgR3N0TXBnMTIzQXVkaW9EZWMgKm1wZzEyM19kZWNvZGVyOwotICBpbnQgZGVjb2RlX2Vycm9yOwotICB1bnNpZ25lZCBjaGFyICpkZWNvZGVkX2J5dGVzOwotICBzaXplX3QgbnVtX2RlY29kZWRfYnl0ZXM7Ci0gIEdzdEZsb3dSZXR1cm4gcmV0dmFsOwotCi0gIG1wZzEyM19kZWNvZGVyID0gR1NUX01QRzEyM19BVURJT19ERUMgKGRlYyk7Ci0KLSAgZ19hc3NlcnQgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUgIT0gTlVMTCk7Ci0KLSAgLyogVGhlIGFjdHVhbCBkZWNvZGluZyAqLwotICB7Ci0gICAgLyogZmVlZCBpbnB1dCBkYXRhIChpZiB0aGVyZSBpcyBhbnkpICovCi0gICAgaWYgKEdfTElLRUxZIChpbnB1dF9idWZmZXIgIT0gTlVMTCkpIHsKLSAgICAgIEdzdE1hcEluZm8gaW5mbzsKLQotICAgICAgaWYgKGdzdF9idWZmZXJfbWFwIChpbnB1dF9idWZmZXIsICZpbmZvLCBHU1RfTUFQX1JFQUQpKSB7Ci0gICAgICAgIG1wZzEyM19mZWVkIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlLCBpbmZvLmRhdGEsIGluZm8uc2l6ZSk7Ci0gICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKGlucHV0X2J1ZmZlciwgJmluZm8pOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgR1NUX0FVRElPX0RFQ09ERVJfRVJST1IgKG1wZzEyM19kZWNvZGVyLCAxLCBSRVNPVVJDRSwgUkVBRCwgKE5VTEwpLAotICAgICAgICAgICAgKCJnc3RfbWVtb3J5X21hcCgpIGZhaWxlZCIpLCByZXR2YWwpOwotICAgICAgICByZXR1cm4gcmV0dmFsOwotICAgICAgfQotICAgIH0KLQotICAgIC8qIFRyeSB0byBkZWNvZGUgYSBmcmFtZSAqLwotICAgIGRlY29kZWRfYnl0ZXMgPSBOVUxMOwotICAgIG51bV9kZWNvZGVkX2J5dGVzID0gMDsKLSAgICBkZWNvZGVfZXJyb3IgPSBtcGcxMjNfZGVjb2RlX2ZyYW1lIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlLAotICAgICAgICAmbXBnMTIzX2RlY29kZXItPmZyYW1lX29mZnNldCwgJmRlY29kZWRfYnl0ZXMsICZudW1fZGVjb2RlZF9ieXRlcyk7Ci0gIH0KLQotICByZXR2YWwgPSBHU1RfRkxPV19PSzsKLQotICBzd2l0Y2ggKGRlY29kZV9lcnJvcikgewotICAgIGNhc2UgTVBHMTIzX05FV19GT1JNQVQ6Ci0gICAgICAvKiBBcyBtZW50aW9uZWQgaW4gZ3N0X21wZzEyM19hdWRpb19kZWNfc2V0X2Zvcm1hdCgpLCB0aGUgbmV4dCBhdWRpb2luZm8KLSAgICAgICAqIGlzIG5vdCBzZXQgaW1tZWRpYXRlbHk7IGluc3RlYWQsIHRoZSBjb2RlIHdhaXRzIGZvciBtcGcxMjMgdG8gdGFrZQotICAgICAgICogbm90ZSBvZiB0aGUgbmV3IGZvcm1hdCwgYW5kIHRoZW4gc2V0cyB0aGUgYXVkaW9pbmZvLiBUaGlzIGZpeGVzIGdsaXRjaGVzCi0gICAgICAgKiB3aXRoIG1wM3MgY29udGFpbmluZyBzZXZlcmFsIGZvcm1hdCBoZWFkZXJzIChmb3IgZXhhbXBsZSwgZmlyc3QgaGFsZgotICAgICAgICogdXNpbmcgNDQuMWtIeiwgc2Vjb25kIGhhbGYgMzIga0h6KSAqLwotCi0gICAgICBHU1RfTE9HX09CSkVDVCAoZGVjLAotICAgICAgICAgICJtcGcxMjMgcmVwb3J0ZWQgYSBuZXcgZm9ybWF0IC0+IHNldHRpbmcgbmV4dCBzcmNjYXBzIik7Ci0KLSAgICAgIGdzdF9tcGcxMjNfYXVkaW9fZGVjX3B1c2hfZGVjb2RlZF9ieXRlcyAobXBnMTIzX2RlY29kZXIsIGRlY29kZWRfYnl0ZXMsCi0gICAgICAgICAgbnVtX2RlY29kZWRfYnl0ZXMpOwotCi0gICAgICAvKiBJZiB0aGVyZSBpcyBhIG5leHQgYXVkaW9pbmZvLCB1c2UgaXQsIHRoZW4gc2V0IGhhc19uZXh0X2F1ZGlvaW5mbyB0bwotICAgICAgICogRkFMU0UsIHRvIG1ha2Ugc3VyZSBnc3RfYXVkaW9fZGVjb2Rlcl9zZXRfb3V0cHV0X2Zvcm1hdCgpIGlzbid0IGNhbGxlZAotICAgICAgICogYWdhaW4gdW50aWwgc2V0X2Zvcm1hdCBpcyBjYWxsZWQgYnkgdGhlIGJhc2UgY2xhc3MgKi8KLSAgICAgIGlmIChtcGcxMjNfZGVjb2Rlci0+aGFzX25leHRfYXVkaW9pbmZvKSB7Ci0gICAgICAgIGlmICghZ3N0X2F1ZGlvX2RlY29kZXJfc2V0X291dHB1dF9mb3JtYXQgKGRlYywKLSAgICAgICAgICAgICAgICAmKG1wZzEyM19kZWNvZGVyLT5uZXh0X2F1ZGlvaW5mbykpKSB7Ci0gICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZWMsICJVbmFibGUgdG8gc2V0IG91dHB1dCBmb3JtYXQiKTsKLSAgICAgICAgICByZXR2YWwgPSBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKLSAgICAgICAgfQotICAgICAgICBtcGcxMjNfZGVjb2Rlci0+aGFzX25leHRfYXVkaW9pbmZvID0gRkFMU0U7Ci0gICAgICB9Ci0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNUEcxMjNfTkVFRF9NT1JFOgotICAgIGNhc2UgTVBHMTIzX09LOgotICAgICAgcmV0dmFsID0gZ3N0X21wZzEyM19hdWRpb19kZWNfcHVzaF9kZWNvZGVkX2J5dGVzIChtcGcxMjNfZGVjb2RlciwKLSAgICAgICAgICBkZWNvZGVkX2J5dGVzLCBudW1fZGVjb2RlZF9ieXRlcyk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgTVBHMTIzX0RPTkU6Ci0gICAgICAvKiBJZiB0aGlzIGhhcHBlbnMsIHRoZW4gdGhlIHVwc3RyZWFtIHBhcnNlciBzb21laG93IG1pc3NlZCB0aGUgZW5kaW5nCi0gICAgICAgKiBvZiB0aGUgYml0c3RyZWFtICovCi0gICAgICBHU1RfTE9HX09CSkVDVCAoZGVjLCAibXBnMTIzIGlzIGRvbmUgZGVjb2RpbmciKTsKLSAgICAgIGdzdF9tcGcxMjNfYXVkaW9fZGVjX3B1c2hfZGVjb2RlZF9ieXRlcyAobXBnMTIzX2RlY29kZXIsIGRlY29kZWRfYnl0ZXMsCi0gICAgICAgICAgbnVtX2RlY29kZWRfYnl0ZXMpOwotICAgICAgcmV0dmFsID0gR1NUX0ZMT1dfRU9TOwotICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgIHsKLSAgICAgIC8qIEFueXRoaW5nIGVsc2UgaXMgY29uc2lkZXJlZCBhbiBlcnJvciAqLwotICAgICAgaW50IGVycmNvZGU7Ci0gICAgICByZXR2YWwgPSBHU1RfRkxPV19FUlJPUjsgIC8qIHVzZSBlcnJvciBieSBkZWZhdWx0ICovCi0gICAgICBzd2l0Y2ggKGRlY29kZV9lcnJvcikgewotICAgICAgICBjYXNlIE1QRzEyM19FUlI6Ci0gICAgICAgICAgZXJyY29kZSA9IG1wZzEyM19lcnJjb2RlIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBlcnJjb2RlID0gZGVjb2RlX2Vycm9yOwotICAgICAgfQotICAgICAgc3dpdGNoIChlcnJjb2RlKSB7Ci0gICAgICAgIGNhc2UgTVBHMTIzX0JBRF9PVVRGT1JNQVQ6ewotICAgICAgICAgIEdzdENhcHMgKmlucHV0X2NhcHMgPQotICAgICAgICAgICAgICBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9BVURJT19ERUNPREVSX1NJTktfUEFEIChkZWMpKTsKLSAgICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZGVjLCBTVFJFQU0sIEZPUk1BVCwgKE5VTEwpLAotICAgICAgICAgICAgICAoIk91dHB1dCBzYW1wbGUgZm9ybWF0IGNvdWxkIG5vdCBiZSB1c2VkIHdoZW4gdHJ5aW5nIHRvIGRlY29kZSBmcmFtZS4gIgotICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgdHlwaWNhbGx5IGNhdXNlZCB3aGVuIHRoZSBpbnB1dCBjYXBzIChvZnRlbiB0aGUgc2FtcGxlICIKLSAgICAgICAgICAgICAgICAgICJyYXRlKSBkbyBub3QgbWF0Y2ggdGhlIGFjdHVhbCBmb3JtYXQgb2YgdGhlIGF1ZGlvIGRhdGEuICIKLSAgICAgICAgICAgICAgICAgICJJbnB1dCBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgaW5wdXRfY2FwcykKLSAgICAgICAgICAgICAgKTsKLSAgICAgICAgICBnc3RfY2Fwc191bnJlZiAoaW5wdXRfY2Fwcyk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDp7Ci0gICAgICAgICAgY2hhciBjb25zdCAqZXJybXNnID0gbXBnMTIzX3BsYWluX3N0cmVycm9yIChlcnJjb2RlKTsKLSAgICAgICAgICAvKiBHU1RfQVVESU9fREVDT0RFUl9FUlJPUiBzZXRzIGEgbmV3IHJldHVybiB2YWx1ZSBhY2NvcmRpbmcgdG8KLSAgICAgICAgICAgKiBpdHMgZXN0aW1hdGlvbnMgKi8KLSAgICAgICAgICBHU1RfQVVESU9fREVDT0RFUl9FUlJPUiAobXBnMTIzX2RlY29kZXIsIDEsIFNUUkVBTSwgREVDT0RFLCAoTlVMTCksCi0gICAgICAgICAgICAgICgibXBnMTIzIGRlY29kaW5nIGVycm9yOiAlcyIsIGVycm1zZyksIHJldHZhbCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICByZXR1cm4gcmV0dmFsOwotfQotCi0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X21wZzEyM19hdWRpb19kZWNfc2V0X2Zvcm1hdCAoR3N0QXVkaW9EZWNvZGVyICogZGVjLCBHc3RDYXBzICogaW5wdXRfY2FwcykKLXsKLSAgLyogImVuY29kaW5nIiBpcyB0aGUgc2FtcGxlIGZvcm1hdCBzcGVjaWZpZXIgZm9yIG1wZzEyMyAqLwotICBpbnQgZW5jb2Rpbmc7Ci0gIGludCBzYW1wbGVfcmF0ZSwgbnVtX2NoYW5uZWxzOwotICBHc3RBdWRpb0Zvcm1hdCBmb3JtYXQ7Ci0gIEdzdE1wZzEyM0F1ZGlvRGVjICptcGcxMjNfZGVjb2RlcjsKLSAgZ2Jvb2xlYW4gcmV0dmFsID0gRkFMU0U7Ci0KLSAgbXBnMTIzX2RlY29kZXIgPSBHU1RfTVBHMTIzX0FVRElPX0RFQyAoZGVjKTsKLQotICBnX2Fzc2VydCAobXBnMTIzX2RlY29kZXItPmhhbmRsZSAhPSBOVUxMKTsKLQotICBtcGcxMjNfZGVjb2Rlci0+aGFzX25leHRfYXVkaW9pbmZvID0gRkFMU0U7Ci0KLSAgLyogR2V0IHNhbXBsZSByYXRlIGFuZCBudW1iZXIgb2YgY2hhbm5lbHMgZnJvbSBpbnB1dF9jYXBzICovCi0gIHsKLSAgICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKLSAgICBnYm9vbGVhbiBlcnIgPSBGQUxTRTsKLQotICAgIC8qIE9ubHkgdGhlIGZpcnN0IHN0cnVjdHVyZSBpcyB1c2VkIChtdWx0aXBsZQotICAgICAqIGlucHV0IGNhcHMgc3RydWN0dXJlcyBkb24ndCBtYWtlIHNlbnNlICovCi0gICAgc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoaW5wdXRfY2FwcywgMCk7Ci0KLSAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAicmF0ZSIsICZzYW1wbGVfcmF0ZSkpIHsKLSAgICAgIGVyciA9IFRSVUU7Ci0gICAgICBHU1RfRVJST1JfT0JKRUNUIChkZWMsICJJbnB1dCBjYXBzIGRvIG5vdCBoYXZlIGEgcmF0ZSB2YWx1ZSIpOwotICAgIH0KLSAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiY2hhbm5lbHMiLCAmbnVtX2NoYW5uZWxzKSkgewotICAgICAgZXJyID0gVFJVRTsKLSAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGRlYywgIklucHV0IGNhcHMgZG8gbm90IGhhdmUgYSBjaGFubmVsIHZhbHVlIik7Ci0gICAgfQotCi0gICAgaWYgKEdfVU5MSUtFTFkgKGVycikpCi0gICAgICBnb3RvIGRvbmU7Ci0gIH0KLQotICAvKiBHZXQgc2FtcGxlIGZvcm1hdCBmcm9tIHRoZSBhbGxvd2VkIHNyYyBjYXBzICovCi0gIHsKLSAgICBHc3RDYXBzICphbGxvd2VkX3NyY2NhcHMgPQotICAgICAgICBnc3RfcGFkX2dldF9hbGxvd2VkX2NhcHMgKEdTVF9BVURJT19ERUNPREVSX1NSQ19QQUQgKGRlYykpOwotCi0gICAgaWYgKGFsbG93ZWRfc3JjY2FwcyA9PSBOVUxMKSB7Ci0gICAgICAvKiBzcmNwYWQgaXMgbm90IGxpbmtlZCAoeWV0KSwgc28gbm8gcGVlciBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGU7Ci0gICAgICAgKiBqdXN0IHVzZSB0aGUgZGVmYXVsdCBzYW1wbGUgZm9ybWF0ICgxNiBiaXQgc2lnbmVkIGludGVnZXIpICovCi0gICAgICBHU1RfREVCVUdfT0JKRUNUIChtcGcxMjNfZGVjb2RlciwKLSAgICAgICAgICAic3JjcGFkIGlzIG5vdCBsaW5rZWQgKHlldCkgLT4gdXNpbmcgUzE2IHNhbXBsZSBmb3JtYXQiKTsKLSAgICAgIGZvcm1hdCA9IEdTVF9BVURJT19GT1JNQVRfUzE2OwotICAgICAgZW5jb2RpbmcgPSBNUEcxMjNfRU5DX1NJR05FRF8xNjsKLSAgICB9IGVsc2UgaWYgKGdzdF9jYXBzX2lzX2VtcHR5IChhbGxvd2VkX3NyY2NhcHMpKSB7Ci0gICAgICBnc3RfY2Fwc191bnJlZiAoYWxsb3dlZF9zcmNjYXBzKTsKLSAgICAgIGdvdG8gZG9uZTsKLSAgICB9IGVsc2UgewotICAgICAgZ2NoYXIgY29uc3QgKmZvcm1hdF9zdHI7Ci0gICAgICBHVmFsdWUgY29uc3QgKmZvcm1hdF92YWx1ZTsKLQotICAgICAgLyogTG9vayBhdCB0aGUgc2FtcGxlIGZvcm1hdCB2YWx1ZXMgZnJvbSB0aGUgZmlyc3Qgc3RydWN0dXJlICovCi0gICAgICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGFsbG93ZWRfc3JjY2FwcywgMCk7Ci0gICAgICBmb3JtYXRfdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoc3RydWN0dXJlLCAiZm9ybWF0Iik7Ci0KLSAgICAgIGlmIChmb3JtYXRfdmFsdWUgPT0gTlVMTCkgewotICAgICAgICBnc3RfY2Fwc191bnJlZiAoYWxsb3dlZF9zcmNjYXBzKTsKLSAgICAgICAgZ290byBkb25lOwotICAgICAgfSBlbHNlIGlmIChHU1RfVkFMVUVfSE9MRFNfTElTVCAoZm9ybWF0X3ZhbHVlKSkgewotICAgICAgICAvKiBpZiB2YWx1ZSBpcyBhIGZvcm1hdCBsaXN0LCBwaWNrIHRoZSBmaXJzdCBlbnRyeSAqLwotICAgICAgICBHVmFsdWUgY29uc3QgKmZtdF9saXN0X3ZhbHVlID0KLSAgICAgICAgICAgIGdzdF92YWx1ZV9saXN0X2dldF92YWx1ZSAoZm9ybWF0X3ZhbHVlLCAwKTsKLSAgICAgICAgZm9ybWF0X3N0ciA9IGdfdmFsdWVfZ2V0X3N0cmluZyAoZm10X2xpc3RfdmFsdWUpOwotICAgICAgfSBlbHNlIGlmIChHX1ZBTFVFX0hPTERTX1NUUklORyAoZm9ybWF0X3ZhbHVlKSkgewotICAgICAgICAvKiBpZiB2YWx1ZSBpcyBhIHN0cmluZywgdXNlIGl0IGRpcmVjdGx5ICovCi0gICAgICAgIGZvcm1hdF9zdHIgPSBnX3ZhbHVlX2dldF9zdHJpbmcgKGZvcm1hdF92YWx1ZSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChtcGcxMjNfZGVjb2RlciwgInVuZXhwZWN0ZWQgdHlwZSBmb3IgJ2Zvcm1hdCcgZmllbGQgIgotICAgICAgICAgICAgImluIGNhcHMgc3RydWN0dXJlICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwotICAgICAgICBnc3RfY2Fwc191bnJlZiAoYWxsb3dlZF9zcmNjYXBzKTsKLSAgICAgICAgZ290byBkb25lOwotICAgICAgfQotCi0gICAgICAvKiBnZXQgdGhlIGZvcm1hdCB2YWx1ZSBmcm9tIHRoZSBzdHJpbmcgKi8KLSAgICAgIGZvcm1hdCA9IGdzdF9hdWRpb19mb3JtYXRfZnJvbV9zdHJpbmcgKGZvcm1hdF9zdHIpOwotICAgICAgZ3N0X2NhcHNfdW5yZWYgKGFsbG93ZWRfc3JjY2Fwcyk7Ci0KLSAgICAgIGdfYXNzZXJ0IChmb3JtYXQgIT0gR1NUX0FVRElPX0ZPUk1BVF9VTktOT1dOKTsKLQotICAgICAgLyogY29udmVydCBmb3JtYXQgdG8gbXBnMTIzIGVuY29kaW5nICovCi0gICAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgICAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfUzE2OgotICAgICAgICAgIGVuY29kaW5nID0gTVBHMTIzX0VOQ19TSUdORURfMTY7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMjQ6Ci0gICAgICAgICAgZW5jb2RpbmcgPSBNUEcxMjNfRU5DX1NJR05FRF8yNDsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1MzMjoKLSAgICAgICAgICBlbmNvZGluZyA9IE1QRzEyM19FTkNfU0lHTkVEXzMyOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfVTE2OgotICAgICAgICAgIGVuY29kaW5nID0gTVBHMTIzX0VOQ19VTlNJR05FRF8xNjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1UyNDoKLSAgICAgICAgICBlbmNvZGluZyA9IE1QRzEyM19FTkNfVU5TSUdORURfMjQ7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9VMzI6Ci0gICAgICAgICAgZW5jb2RpbmcgPSBNUEcxMjNfRU5DX1VOU0lHTkVEXzMyOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfRjMyOgotICAgICAgICAgIGVuY29kaW5nID0gTVBHMTIzX0VOQ19GTE9BVF8zMjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKLSAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgLyogU2FtcGxlIHJhdGUsIG51bWJlciBvZiBjaGFubmVscywgYW5kIHNhbXBsZSBmb3JtYXQgYXJlIGtub3duIGF0IHRoaXMgcG9pbnQuCi0gICAqIFNldCB0aGUgYXVkaW9pbmZvIHN0cnVjdHVyZSdzIHZhbHVlcyBhbmQgdGhlIG1wZzEyMyBmb3JtYXQuICovCi0gIHsKLSAgICBpbnQgZXJyOwotCi0gICAgLyogY2xlYXIgYWxsIGV4aXN0aW5nIGZvcm1hdCBzZXR0aW5ncyBmcm9tIHRoZSBtcGcxMjMgaW5zdGFuY2UgKi8KLSAgICBtcGcxMjNfZm9ybWF0X25vbmUgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUpOwotICAgIC8qIHNldCB0aGUgY2hvc2VuIGZvcm1hdCAqLwotICAgIGVyciA9Ci0gICAgICAgIG1wZzEyM19mb3JtYXQgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUsIHNhbXBsZV9yYXRlLCBudW1fY2hhbm5lbHMsCi0gICAgICAgIGVuY29kaW5nKTsKLQotICAgIGlmIChlcnIgIT0gTVBHMTIzX09LKSB7Ci0gICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlYywKLSAgICAgICAgICAibXBnMTIzX2Zvcm1hdCgpIGZhaWxlZDogJXMiLAotICAgICAgICAgIG1wZzEyM19zdHJlcnJvciAobXBnMTIzX2RlY29kZXItPmhhbmRsZSkpOwotICAgIH0gZWxzZSB7Ci0gICAgICBnc3RfYXVkaW9faW5mb19pbml0ICgmKG1wZzEyM19kZWNvZGVyLT5uZXh0X2F1ZGlvaW5mbykpOwotICAgICAgZ3N0X2F1ZGlvX2luZm9fc2V0X2Zvcm1hdCAoJihtcGcxMjNfZGVjb2Rlci0+bmV4dF9hdWRpb2luZm8pLCBmb3JtYXQsCi0gICAgICAgICAgc2FtcGxlX3JhdGUsIG51bV9jaGFubmVscywgTlVMTCk7Ci0gICAgICBHU1RfTE9HX09CSkVDVCAoZGVjLCAiVGhlIG5leHQgYXVkaW8gZm9ybWF0IGlzOiAlcywgJXUgSHosICV1IGNoYW5uZWxzIiwKLSAgICAgICAgICBnc3RfYXVkaW9fZm9ybWF0X3RvX3N0cmluZyAoZm9ybWF0KSwgc2FtcGxlX3JhdGUsIG51bV9jaGFubmVscyk7Ci0gICAgICBtcGcxMjNfZGVjb2Rlci0+aGFzX25leHRfYXVkaW9pbmZvID0gVFJVRTsKLQotICAgICAgcmV0dmFsID0gVFJVRTsKLSAgICB9Ci0gIH0KLQotZG9uZToKLSAgcmV0dXJuIHJldHZhbDsKLX0KLQotCi1zdGF0aWMgdm9pZAotZ3N0X21wZzEyM19hdWRpb19kZWNfZmx1c2ggKEdzdEF1ZGlvRGVjb2RlciAqIGRlYywgZ2Jvb2xlYW4gaGFyZCkKLXsKLSAgaW50IGVycm9yOwotICBHc3RNcGcxMjNBdWRpb0RlYyAqbXBnMTIzX2RlY29kZXI7Ci0KLSAgR1NUX0xPR19PQkpFQ1QgKGRlYywgIkZsdXNoaW5nIGRlY29kZXIiKTsKLQotICBtcGcxMjNfZGVjb2RlciA9IEdTVF9NUEcxMjNfQVVESU9fREVDIChkZWMpOwotCi0gIGdfYXNzZXJ0IChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlICE9IE5VTEwpOwotCi0gIC8qIEZsdXNoIGJ5IHJlb3BlbmluZyB0aGUgZmVlZCAqLwotICBtcGcxMjNfY2xvc2UgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUpOwotICBlcnJvciA9IG1wZzEyM19vcGVuX2ZlZWQgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUpOwotCi0gIGlmIChHX1VOTElLRUxZIChlcnJvciAhPSBNUEcxMjNfT0spKSB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKGRlYywgTElCUkFSWSwgSU5JVCwgKE5VTEwpLAotICAgICAgICAoIkVycm9yIHdoaWxlIHJlb3BlbmluZyBtcGcxMjMgZmVlZDogJXMiLAotICAgICAgICAgICAgbXBnMTIzX3BsYWluX3N0cmVycm9yIChlcnJvcikpKTsKLSAgICBtcGcxMjNfY2xvc2UgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUpOwotICAgIG1wZzEyM19kZWxldGUgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUpOwotICAgIG1wZzEyM19kZWNvZGVyLT5oYW5kbGUgPSBOVUxMOwotICB9Ci0KLSAgaWYgKGhhcmQpCi0gICAgbXBnMTIzX2RlY29kZXItPmhhc19uZXh0X2F1ZGlvaW5mbyA9IEZBTFNFOwotCi0gIC8qIG9wZW5pbmcvY2xvc2luZyBmZWVkcyBkbyBub3QgYWZmZWN0IHRoZSBmb3JtYXQgZGVmaW5lZCBieSB0aGUKLSAgICogbXBnMTIzX2Zvcm1hdCgpIGNhbGwgdGhhdCB3YXMgbWFkZSBpbiBnc3RfbXBnMTIzX2F1ZGlvX2RlY19zZXRfZm9ybWF0KCksCi0gICAqIGFuZCBzaW5jZSB0aGUgdXAvZG93bnN0cmVhbSBjYXBzIGFyZSBub3QgZXhwZWN0ZWQgdG8gY2hhbmdlIGhlcmUsIG5vCi0gICAqIG1wZzEyM19mb3JtYXQoKSBjYWxscyBhcmUgZG9uZSAqLwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLXBsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCi17Ci0gIHJldHVybiBnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAibXBnMTIzYXVkaW9kZWMiLAotICAgICAgR1NUX1JBTktfTUFSR0lOQUwsIGdzdF9tcGcxMjNfYXVkaW9fZGVjX2dldF90eXBlICgpKTsKLX0KLQotR1NUX1BMVUdJTl9ERUZJTkUgKEdTVF9WRVJTSU9OX01BSk9SLAotICAgIEdTVF9WRVJTSU9OX01JTk9SLAotICAgIG1wZzEyMywgIm1wMyBkZWNvZGluZyBiYXNlZCBvbiB0aGUgbXBnMTIzIGxpYnJhcnkiLAotICAgIHBsdWdpbl9pbml0LCBWRVJTSU9OLCAiTEdQTCIsIEdTVF9QQUNLQUdFX05BTUUsIEdTVF9QQUNLQUdFX09SSUdJTikKZGlmZiAtLWdpdCBhL2V4dC9tcGcxMjMvZ3N0bXBnMTIzYXVkaW9kZWMuaCBiL2V4dC9tcGcxMjMvZ3N0bXBnMTIzYXVkaW9kZWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTgzN2E1Ni4uMDAwMDAwMAotLS0gYS9leHQvbXBnMTIzL2dzdG1wZzEyM2F1ZGlvZGVjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKiAgTVAzIGRlY29kaW5nIHBsdWdpbiBmb3IgR1N0cmVhbWVyIHVzaW5nIHRoZSBtcGcxMjMgbGlicmFyeQotICogIENvcHlyaWdodCAoQykgMjAxMiBDYXJsb3MgUmFmYWVsIEdpYW5pCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2lmbmRlZiBfX0dTVF9NUEcxMjNfQVVESU9fREVDX0hfXwotI2RlZmluZSBfX0dTVF9NUEcxMjNfQVVESU9fREVDX0hfXwotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb2RlY29kZXIuaD4KLSNpbmNsdWRlIDxtcGcxMjMuaD4KLQotCi1HX0JFR0lOX0RFQ0xTCi0KLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdE1wZzEyM0F1ZGlvRGVjIEdzdE1wZzEyM0F1ZGlvRGVjOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdE1wZzEyM0F1ZGlvRGVjQ2xhc3MgR3N0TXBnMTIzQXVkaW9EZWNDbGFzczsKLQotCi0jZGVmaW5lIEdTVF9UWVBFX01QRzEyM19BVURJT19ERUMgICAgICAgICAgICAgKGdzdF9tcGcxMjNfYXVkaW9fZGVjX2dldF90eXBlKCkpCi0jZGVmaW5lIEdTVF9NUEcxMjNfQVVESU9fREVDKG9iaikgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBHU1RfVFlQRV9NUEcxMjNfQVVESU9fREVDLEdzdE1wZzEyM0F1ZGlvRGVjKSkKLSNkZWZpbmUgR1NUX01QRzEyM19BVURJT19ERUNfQ0xBU1Moa2xhc3MpICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgR1NUX1RZUEVfTVBHMTIzX0FVRElPX0RFQyxHc3RNcGcxMjNBdWRpb0RlY0NsYXNzKSkKLSNkZWZpbmUgR1NUX0lTX01QRzEyM19BVURJT19ERUMob2JqKSAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIEdTVF9UWVBFX01QRzEyM19BVURJT19ERUMpKQotI2RlZmluZSBHU1RfSVNfTVBHMTIzX0FVRElPX0RFQ19DTEFTUyhrbGFzcykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCBHU1RfVFlQRV9NUEcxMjNfQVVESU9fREVDKSkKLQotc3RydWN0IF9Hc3RNcGcxMjNBdWRpb0RlYwotewotICBHc3RBdWRpb0RlY29kZXIgcGFyZW50OwotCi0gIG1wZzEyM19oYW5kbGUgKmhhbmRsZTsKLQotICBHc3RBdWRpb0luZm8gbmV4dF9hdWRpb2luZm87Ci0gIGdib29sZWFuIGhhc19uZXh0X2F1ZGlvaW5mbzsKLQotICBvZmZfdCBmcmFtZV9vZmZzZXQ7Ci19OwotCi0KLXN0cnVjdCBfR3N0TXBnMTIzQXVkaW9EZWNDbGFzcwotewotICBHc3RBdWRpb0RlY29kZXJDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1HX0dOVUNfSU5URVJOQUwgR1R5cGUgZ3N0X21wZzEyM19hdWRpb19kZWNfZ2V0X3R5cGUgKHZvaWQpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2V4dC9tcGxleC9NYWtlZmlsZS5pbiBiL2V4dC9tcGxleC9NYWtlZmlsZS5pbgppbmRleCBhN2NmOGQ1Li5iOTExNTgwIDEwMDY0NAotLS0gYS9leHQvbXBsZXgvTWFrZWZpbGUuaW4KKysrIGIvZXh0L21wbGV4L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OCw2ICsyNzcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNSw2ICszMTYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMyw3ICszMjYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDIsOCArMzQ0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MCwxNiArMzYzLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NSw2ICszOTksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjAsNiArNDI2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIxLDYgKzUyOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzQsOCArNTQzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUxLDYgKzU1OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDgsMTYgKzYxNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OSw2ICs2ODAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc5LDYgKzY5MSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OCw2ICs3MDEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI1LDcgKzc0MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L21wbGV4L2dzdG1wbGV4LmNjIGIvZXh0L21wbGV4L2dzdG1wbGV4LmNjCmluZGV4IGIxMDlkMTguLmFlNTBiZWEgMTAwNjQ0Ci0tLSBhL2V4dC9tcGxleC9nc3RtcGxleC5jYworKysgYi9leHQvbXBsZXgvZ3N0bXBsZXguY2MKQEAgLTM1LDcgKzM1LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xMDAwICEgbXBlZzJlbmMgISBtcGxleCAhIGZpbGVzaW5rIGxvY2F0aW9uPXZpZGVvdGVzdHNyYy5tcGcKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xMDAwICEgbXBlZzJlbmMgISBtcGxleCAhIGZpbGVzaW5rIGxvY2F0aW9uPXZpZGVvdGVzdHNyYy5tcGcKICAqIF18IFRoaXMgZXhhbXBsZSBwaXBlbGluZSB3aWxsIGVuY29kZSBhIHRlc3QgdmlkZW8gc291cmNlIHRvIGFuCiAgKiBNUEVHMSBlbGVtZW50YXJ5IHN0cmVhbSBhbmQgbXVsdGlwbGV4ZXMgdGhpcyB0byBhbiBNUEVHIHN5c3RlbSBzdHJlYW0uCiAgKiA8cGFyYT4KZGlmZiAtLWdpdCBhL2V4dC9tdXNlcGFjay9NYWtlZmlsZS5pbiBiL2V4dC9tdXNlcGFjay9NYWtlZmlsZS5pbgppbmRleCA0NjZhZDNhLi41MDZjYzVhIDEwMDY0NAotLS0gYS9leHQvbXVzZXBhY2svTWFrZWZpbGUuaW4KKysrIGIvZXh0L211c2VwYWNrL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L25hcy9NYWtlZmlsZS5pbiBiL2V4dC9uYXMvTWFrZWZpbGUuaW4KaW5kZXggNDg3MDZkZC4uOTlhMWVjMSAxMDA2NDQKLS0tIGEvZXh0L25hcy9NYWtlZmlsZS5pbgorKysgYi9leHQvbmFzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L25lb24vTWFrZWZpbGUuaW4gYi9leHQvbmVvbi9NYWtlZmlsZS5pbgppbmRleCA4MGI3MzMxLi5kNTk3YzJmIDEwMDY0NAotLS0gYS9leHQvbmVvbi9NYWtlZmlsZS5pbgorKysgYi9leHQvbmVvbi9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9uZW9uL2dzdG5lb25odHRwc3JjLmMgYi9leHQvbmVvbi9nc3RuZW9uaHR0cHNyYy5jCmluZGV4IGUyMGI1MDkuLjhhNGZmMGQgMTAwNjQ0Ci0tLSBhL2V4dC9uZW9uL2dzdG5lb25odHRwc3JjLmMKKysrIGIvZXh0L25lb24vZ3N0bmVvbmh0dHBzcmMuYwpAQCAtMzIxLDggKzMyMSw3IEBACiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBQUk9QX1VTRVJfQUdFTlQ6Ci0gICAgICBpZiAoc3JjLT51c2VyX2FnZW50KQotICAgICAgICBnX2ZyZWUgKHNyYy0+dXNlcl9hZ2VudCk7CisgICAgICBnX2ZyZWUgKHNyYy0+dXNlcl9hZ2VudCk7CiAgICAgICBzcmMtPnVzZXJfYWdlbnQgPSBnX3N0cmR1cCAoZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSkpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0NPT0tJRVM6CmRpZmYgLS1naXQgYS9leHQvb2ZhL01ha2VmaWxlLmluIGIvZXh0L29mYS9NYWtlZmlsZS5pbgppbmRleCBhNjdkZTgwLi40M2I0OTBlIDEwMDY0NAotLS0gYS9leHQvb2ZhL01ha2VmaWxlLmluCisrKyBiL2V4dC9vZmEvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvb3BlbmFsL01ha2VmaWxlLmluIGIvZXh0L29wZW5hbC9NYWtlZmlsZS5pbgppbmRleCAzYmYzYjk3Li5hYzAwMDNmIDEwMDY0NAotLS0gYS9leHQvb3BlbmFsL01ha2VmaWxlLmluCisrKyBiL2V4dC9vcGVuYWwvTWFrZWZpbGUuaW4KQEAgLTExOCwxNiArMTE4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc5LDYgKzI3OCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE2LDYgKzMxNyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI0LDcgKzMyNyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Myw4ICszNDUsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYxLDE2ICszNjQsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk2LDYgKzQwMCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMSw2ICs0MjcsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjIsNiArNTMwLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNSw4ICs1NDQsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTIsNiArNTU5LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOSwxNiArNjE4LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcwLDYgKzY4MSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODAsNiArNjkyLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg5LDYgKzcwMiw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjYsNyArNzQxLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvb3BlbmFsL2dzdG9wZW5hbHNpbmsuYyBiL2V4dC9vcGVuYWwvZ3N0b3BlbmFsc2luay5jCmluZGV4IDFmYTFjNjUuLjc0ZjU4ZTQgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuYWwvZ3N0b3BlbmFsc2luay5jCisrKyBiL2V4dC9vcGVuYWwvZ3N0b3BlbmFsc2luay5jCkBAIC0zNCwxMyArMzQsMTMgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBhdWRpb3Rlc3RzcmMgISBhdWRpb2NvbnZlcnQgISB2b2x1bWUgdm9sdW1lPTAuNSAhIG9wZW5hbHNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY29udmVydCAhIHZvbHVtZSB2b2x1bWU9MC41ICEgb3BlbmFsc2luawogICogXXwgd2lsbCBwbGF5IGEgc2luZSB3YXZlIChjb250aW51b3VzIGJlZXAgc291bmQpIHRocm91Z2ggT3BlbkFMLgogICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj1zdHJlYW0ud2F2ICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgb3BlbmFsc2luaworICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj1zdHJlYW0ud2F2ICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgb3BlbmFsc2luawogICogXXwgd2lsbCBwbGF5IGEgd2F2IGF1ZGlvIGZpbGUgdGhyb3VnaCBPcGVuQUwuCiAgKiB8WwotICogZ3N0LWxhdW5jaCBvcGVuYWxzcmMgISAiYXVkaW8veC1yYXcsZm9ybWF0PVMxNkxFLHJhdGU9NDQxMDAiICEgYXVkaW9jb252ZXJ0ICEgdm9sdW1lIHZvbHVtZT0wLjI1ICEgb3BlbmFsc2luaworICogZ3N0LWxhdW5jaC0xLjAgb3BlbmFsc3JjICEgImF1ZGlvL3gtcmF3LGZvcm1hdD1TMTZMRSxyYXRlPTQ0MTAwIiAhIGF1ZGlvY29udmVydCAhIHZvbHVtZSB2b2x1bWU9MC4yNSAhIG9wZW5hbHNpbmsKICAqIF18IHdpbGwgY2FwdHVyZSBhbmQgcGxheSBhdWRpbyB0aHJvdWdoIE9wZW5BTC4KICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2V4dC9vcGVuYWwvZ3N0b3BlbmFsc3JjLmMgYi9leHQvb3BlbmFsL2dzdG9wZW5hbHNyYy5jCmluZGV4IGVmNDg0NzUuLmQwNmIzYzQgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuYWwvZ3N0b3BlbmFsc3JjLmMKKysrIGIvZXh0L29wZW5hbC9nc3RvcGVuYWxzcmMuYwpAQCAtNTcsMTAgKzU3LDEwIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgb3BlbmFsc3JjICEgYXVkaW9jb252ZXJ0ICEgd2F2ZW5jICEgZmlsZXNpbmsgbG9jYXRpb249c3RyZWFtLndhdgorICogZ3N0LWxhdW5jaC0xLjAgLXYgb3BlbmFsc3JjICEgYXVkaW9jb252ZXJ0ICEgd2F2ZW5jICEgZmlsZXNpbmsgbG9jYXRpb249c3RyZWFtLndhdgogICogXXwgKiB3aWxsIGNhcHR1cmUgc291bmQgdGhyb3VnaCBPcGVuQUwgYW5kIGVuY29kZSBpdCB0byBhIHdhdiBmaWxlLgogICogfFsKLSAqIGdzdC1sYXVuY2ggb3BlbmFsc3JjICEgImF1ZGlvL3gtcmF3LGZvcm1hdD1TMTZMRSxyYXRlPTQ0MTAwIiAhIGF1ZGlvY29udmVydCAhIHZvbHVtZSB2b2x1bWU9MC4yNSAhIG9wZW5hbHNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIG9wZW5hbHNyYyAhICJhdWRpby94LXJhdyxmb3JtYXQ9UzE2TEUscmF0ZT00NDEwMCIgISBhdWRpb2NvbnZlcnQgISB2b2x1bWUgdm9sdW1lPTAuMjUgISBvcGVuYWxzaW5rCiAgKiBdfCB3aWxsIGNhcHR1cmUgYW5kIHBsYXkgYXVkaW8gdGhyb3VnaCBPcGVuQUwuCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L01ha2VmaWxlLmFtIGIvZXh0L29wZW5jdi9NYWtlZmlsZS5hbQppbmRleCA3MjQ3MmZiLi4wZWVlMzhjIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L01ha2VmaWxlLmFtCisrKyBiL2V4dC9vcGVuY3YvTWFrZWZpbGUuYW0KQEAgLTIsMjQgKzIsMjQgQEAKIAogIyBzb3VyY2VzIHVzZWQgdG8gY29tcGlsZSB0aGlzIHBsdWctaW4KIGxpYmdzdG9wZW5jdl9sYV9TT1VSQ0VTID0gZ3N0b3BlbmN2LmNwcCBcCi0JCQlnc3RvcGVuY3Z2aWRlb2ZpbHRlci5jIFwKLQkJCWdzdG9wZW5jdnV0aWxzLmMgXAotCQkJZ3N0Y3ZkaWxhdGUuYyBcCi0JCQlnc3RjdmRpbGF0ZWVyb2RlLmMgXAotCQkJZ3N0Y3ZlcXVhbGl6ZWhpc3QuYyBcCi0JCQlnc3RjdmVyb2RlLmMgXAotCQkJZ3N0Y3ZsYXBsYWNlLmMgXAotCQkJZ3N0Y3ZzbW9vdGguYyBcCi0JCQlnc3RjdnNvYmVsLmMgXAorCQkJZ3N0b3BlbmN2dmlkZW9maWx0ZXIuY3BwIFwKKwkJCWdzdG9wZW5jdnV0aWxzLmNwcCBcCisJCQlnc3RjdmRpbGF0ZS5jcHAgXAorCQkJZ3N0Y3ZkaWxhdGVlcm9kZS5jcHAgXAorCQkJZ3N0Y3ZlcXVhbGl6ZWhpc3QuY3BwIFwKKwkJCWdzdGN2ZXJvZGUuY3BwIFwKKwkJCWdzdGN2bGFwbGFjZS5jcHAgXAorCQkJZ3N0Y3ZzbW9vdGguY3BwIFwKKwkJCWdzdGN2c29iZWwuY3BwIFwKIAkJCWdzdGVkZ2VkZXRlY3QuY3BwIFwKIAkJCWdzdGZhY2VibHVyLmNwcCBcCi0JCQlnc3RoYW5kZGV0ZWN0LmMgXAotCQkJZ3N0cHlyYW1pZHNlZ21lbnQuYyBcCi0JCQlnc3R0ZW1wbGF0ZW1hdGNoLmMgXAotCQkJZ3N0dGV4dG92ZXJsYXkuYyBcCi0JCQlnc3Rtb3Rpb25jZWxscy5jIFwKLQkJCWdzdHNraW5kZXRlY3QuYyBcCi0JCQlnc3RyZXRpbmV4LmMgXAorCQkJZ3N0aGFuZGRldGVjdC5jcHAgXAorCQkJZ3N0cHlyYW1pZHNlZ21lbnQuY3BwIFwKKwkJCWdzdHRlbXBsYXRlbWF0Y2guY3BwIFwKKwkJCWdzdHRleHRvdmVybGF5LmNwcCBcCisJCQlnc3Rtb3Rpb25jZWxscy5jcHAgXAorCQkJZ3N0c2tpbmRldGVjdC5jcHAgXAorCQkJZ3N0cmV0aW5leC5jcHAgXAogCQkJZ3N0ZmFjZWRldGVjdC5jcHAgXAogCQkJZ3N0c2VnbWVudGF0aW9uLmNwcCBcCiAJCQlnc3RncmFiY3V0LmNwcCBcCkBAIC0yNyw3ICsyNyw4IEBACiAJCQltb3Rpb25jZWxsc193cmFwcGVyLmNwcCBcCiAJCQlNb3Rpb25DZWxscy5jcHAKIAotbGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NYWEZMQUdTKSAkKE9QRU5DVl9DRkxBR1MpCitsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ1hYRkxBR1MpICQoT1BFTkNWX0NGTEFHUykgXAorCS1ER1NUX0hBQVJfQ0FTQ0FERVNfRElSPVwiJChwa2dkYXRhZGlyKS9AR1NUX0FQSV9WRVJTSU9OQC9vcGVuY3ZfaGFhcmNhc2NhZGVzXCIKIAogIyBmbGFncyB1c2VkIHRvIGNvbXBpbGUgdGhpcyBmYWNlZGV0ZWN0CiAjIGFkZCBvdGhlciBfQ0ZMQUdTIGFuZCBfTElCUyBhcyBuZWVkZWQKQEAgLTM2LDcgKzM3LDYgQEAKICMgT3BlbkNWJ3MgZGVmaW5lIGlzbid0IGdvb2QgZW5vdWdoIHRvIGF2b2lkICd1bnVzZWQnIGdjYyB3YXJuaW5ncyAoYXQgdjIuMS4wKQogbGliZ3N0b3BlbmN2X2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSBcCiAJJChHU1RfQ0ZMQUdTKSAkKE9QRU5DVl9DRkxBR1MpIFwKLQktREdTVF9IQUFSX0NBU0NBREVTX0RJUj1cIiQocGtnZGF0YWRpcikvQEdTVF9BUElfVkVSU0lPTkAvb3BlbmN2X2hhYXJjYXNjYWRlc1wiIFwKIAktRENWX0lOTElORT0ic3RhdGljIGlubGluZSIgXAogCS1EQ1ZfTk9fQkFDS1dBUkRfQ09NUEFUSUJJTElUWQogCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L01ha2VmaWxlLmluIGIvZXh0L29wZW5jdi9NYWtlZmlsZS5pbgppbmRleCA0ZTc5Yzg5Li41ZjJlMjgwIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L01ha2VmaWxlLmluCisrKyBiL2V4dC9vcGVuY3YvTWFrZWZpbGUuaW4KQEAgLTExNywxNiArMTE3LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjE0LDI0ICsyMTMsNiBAQAogZGVwY29tcCA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvZGVwY29tcAogYW1fX2RlcGZpbGVzX21heWJlID0gZGVwZmlsZXMKIGFtX19tdiA9IG12IC1mCi1DT01QSUxFID0gJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpIFwKLQkkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCi1MVENPTVBJTEUgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpIFwKLQkkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSBcCi0JJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSBcCi0JJChBTV9DRkxBR1MpICQoQ0ZMQUdTKQotQU1fVl9DQyA9ICQoYW1fX3ZfQ0NfQEFNX1ZAKQotYW1fX3ZfQ0NfID0gJChhbV9fdl9DQ19AQU1fREVGQVVMVF9WQCkKLWFtX192X0NDXzAgPSBAZWNobyAiICBDQyAgICAgICIgJEA7Ci1hbV9fdl9DQ18xID0gCi1DQ0xEID0gJChDQykKLUxJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpIFwKLQkkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIFwKLQkkKEFNX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKLUFNX1ZfQ0NMRCA9ICQoYW1fX3ZfQ0NMRF9AQU1fVkApCi1hbV9fdl9DQ0xEXyA9ICQoYW1fX3ZfQ0NMRF9AQU1fREVGQVVMVF9WQCkKLWFtX192X0NDTERfMCA9IEBlY2hvICIgIENDTEQgICAgIiAkQDsKLWFtX192X0NDTERfMSA9IAogQ1hYQ09NUElMRSA9ICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgXAogCSQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ1hYRkxBR1MpICQoQ1hYRkxBR1MpCiBMVENYWENPTVBJTEUgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQoQU1fTElCVE9PTEZMQUdTKSBcCkBAIC0zMTUsNiArMjk2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zNTIsNiArMzM1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zNjAsNyArMzQ1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzc5LDggKzM2Myw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zOTcsMTYgKzM4MiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MzIsNiArNDE4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDU3LDYgKzQ0NSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTU1OCw2ICs1NDgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTcxLDggKzU2Miw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU4OCw2ICs1NzcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjQ1LDE2ICs2MzYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC03MDYsNiArNjk5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTcxNiw2ICs3MTAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MjUsNiArNzIwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc2Miw3ICs3NTksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTgwNiwyNCArODAyLDI0IEBACiAKICMgc291cmNlcyB1c2VkIHRvIGNvbXBpbGUgdGhpcyBwbHVnLWluCiBsaWJnc3RvcGVuY3ZfbGFfU09VUkNFUyA9IGdzdG9wZW5jdi5jcHAgXAotCQkJZ3N0b3BlbmN2dmlkZW9maWx0ZXIuYyBcCi0JCQlnc3RvcGVuY3Z1dGlscy5jIFwKLQkJCWdzdGN2ZGlsYXRlLmMgXAotCQkJZ3N0Y3ZkaWxhdGVlcm9kZS5jIFwKLQkJCWdzdGN2ZXF1YWxpemVoaXN0LmMgXAotCQkJZ3N0Y3Zlcm9kZS5jIFwKLQkJCWdzdGN2bGFwbGFjZS5jIFwKLQkJCWdzdGN2c21vb3RoLmMgXAotCQkJZ3N0Y3Zzb2JlbC5jIFwKKwkJCWdzdG9wZW5jdnZpZGVvZmlsdGVyLmNwcCBcCisJCQlnc3RvcGVuY3Z1dGlscy5jcHAgXAorCQkJZ3N0Y3ZkaWxhdGUuY3BwIFwKKwkJCWdzdGN2ZGlsYXRlZXJvZGUuY3BwIFwKKwkJCWdzdGN2ZXF1YWxpemVoaXN0LmNwcCBcCisJCQlnc3RjdmVyb2RlLmNwcCBcCisJCQlnc3RjdmxhcGxhY2UuY3BwIFwKKwkJCWdzdGN2c21vb3RoLmNwcCBcCisJCQlnc3RjdnNvYmVsLmNwcCBcCiAJCQlnc3RlZGdlZGV0ZWN0LmNwcCBcCiAJCQlnc3RmYWNlYmx1ci5jcHAgXAotCQkJZ3N0aGFuZGRldGVjdC5jIFwKLQkJCWdzdHB5cmFtaWRzZWdtZW50LmMgXAotCQkJZ3N0dGVtcGxhdGVtYXRjaC5jIFwKLQkJCWdzdHRleHRvdmVybGF5LmMgXAotCQkJZ3N0bW90aW9uY2VsbHMuYyBcCi0JCQlnc3Rza2luZGV0ZWN0LmMgXAotCQkJZ3N0cmV0aW5leC5jIFwKKwkJCWdzdGhhbmRkZXRlY3QuY3BwIFwKKwkJCWdzdHB5cmFtaWRzZWdtZW50LmNwcCBcCisJCQlnc3R0ZW1wbGF0ZW1hdGNoLmNwcCBcCisJCQlnc3R0ZXh0b3ZlcmxheS5jcHAgXAorCQkJZ3N0bW90aW9uY2VsbHMuY3BwIFwKKwkJCWdzdHNraW5kZXRlY3QuY3BwIFwKKwkJCWdzdHJldGluZXguY3BwIFwKIAkJCWdzdGZhY2VkZXRlY3QuY3BwIFwKIAkJCWdzdHNlZ21lbnRhdGlvbi5jcHAgXAogCQkJZ3N0Z3JhYmN1dC5jcHAgXApAQCAtODMxLDcgKzgyNyw5IEBACiAJCQltb3Rpb25jZWxsc193cmFwcGVyLmNwcCBcCiAJCQlNb3Rpb25DZWxscy5jcHAKIAotbGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NYWEZMQUdTKSAkKE9QRU5DVl9DRkxBR1MpCitsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ1hYRkxBR1MpICQoT1BFTkNWX0NGTEFHUykgXAorCS1ER1NUX0hBQVJfQ0FTQ0FERVNfRElSPVwiJChwa2dkYXRhZGlyKS9AR1NUX0FQSV9WRVJTSU9OQC9vcGVuY3ZfaGFhcmNhc2NhZGVzXCIKKwogCiAjIGZsYWdzIHVzZWQgdG8gY29tcGlsZSB0aGlzIGZhY2VkZXRlY3QKICMgYWRkIG90aGVyIF9DRkxBR1MgYW5kIF9MSUJTIGFzIG5lZWRlZApAQCAtODQwLDcgKzgzOCw2IEBACiAjIE9wZW5DVidzIGRlZmluZSBpc24ndCBnb29kIGVub3VnaCB0byBhdm9pZCAndW51c2VkJyBnY2Mgd2FybmluZ3MgKGF0IHYyLjEuMCkKIGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgXAogCSQoR1NUX0NGTEFHUykgJChPUEVOQ1ZfQ0ZMQUdTKSBcCi0JLURHU1RfSEFBUl9DQVNDQURFU19ESVI9XCIkKHBrZ2RhdGFkaXIpL0BHU1RfQVBJX1ZFUlNJT05AL29wZW5jdl9oYWFyY2FzY2FkZXNcIiBcCiAJLURDVl9JTkxJTkU9InN0YXRpYyBpbmxpbmUiIFwKIAktRENWX05PX0JBQ0tXQVJEX0NPTVBBVElCSUxJVFkKIApAQCAtODgxLDcgKzg3OCw3IEBACiBhbGw6IGFsbC1hbQogCiAuU1VGRklYRVM6Ci0uU1VGRklYRVM6IC5jIC5jcHAgLmxvIC5vIC5vYmoKKy5TVUZGSVhFUzogLmNwcCAubG8gLm8gLm9iagogJChzcmNkaXIpL01ha2VmaWxlLmluOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAgJChhbV9fY29uZmlndXJlX2RlcHMpCiAJQGZvciBkZXAgaW4gJD87IGRvIFwKIAkgIGNhc2UgJyQoYW1fX2NvbmZpZ3VyZV9kZXBzKScgaW4gXApAQCAtOTgyLDE0MiArOTc5LDYgQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0dGV4dG92ZXJsYXkuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtbW90aW9uY2VsbHNfd3JhcHBlci5QbG9AYW1fX3F1b3RlQAogCi0uYy5vOgotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XAotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChDT01QSUxFKSAtTVQgJEAgLU1EIC1NUCAtTUYgJCRkZXBiYXNlLlRwbyAtYyAtbyAkQCAkPCAmJlwKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoYW1fX212KSAkJGRlcGJhc2UuVHBvICQkZGVwYmFzZS5QbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENPTVBJTEUpIC1jIC1vICRAICQ8Ci0KLS5jLm9iajoKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQylkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5vYmokJHx8J2A7XAotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChDT01QSUxFKSAtTVQgJEAgLU1EIC1NUCAtTUYgJCRkZXBiYXNlLlRwbyAtYyAtbyAkQCBgJChDWUdQQVRIX1cpICckPCdgICYmXAotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQkZGVwYmFzZS5UcG8gJCRkZXBiYXNlLlBvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nJDwnIG9iamVjdD0nJEAnIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ09NUElMRSkgLWMgLW8gJEAgYCQoQ1lHUEFUSF9XKSAnJDwnYAotCi0uYy5sbzoKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQylkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5sbyQkfHwnYDtcCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKExUQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQkZGVwYmFzZS5UcG8gLWMgLW8gJEAgJDwgJiZcCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKGFtX19tdikgJCRkZXBiYXNlLlRwbyAkJGRlcGJhc2UuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nJDwnIG9iamVjdD0nJEAnIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExUQ09NUElMRSkgLWMgLW8gJEAgJDwKLQotbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnZpZGVvZmlsdGVyLmxvOiBnc3RvcGVuY3Z2aWRlb2ZpbHRlci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnZpZGVvZmlsdGVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dmlkZW9maWx0ZXIuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5sbyBgdGVzdCAtZiAnZ3N0b3BlbmN2dmlkZW9maWx0ZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3BlbmN2dmlkZW9maWx0ZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnZpZGVvZmlsdGVyLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnZpZGVvZmlsdGVyLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG9wZW5jdnZpZGVvZmlsdGVyLmMnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnZpZGVvZmlsdGVyLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dmlkZW9maWx0ZXIubG8gYHRlc3QgLWYgJ2dzdG9wZW5jdnZpZGVvZmlsdGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wZW5jdnZpZGVvZmlsdGVyLmMKLQotbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnV0aWxzLmxvOiBnc3RvcGVuY3Z1dGlscy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnV0aWxzLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dXRpbHMuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5sbyBgdGVzdCAtZiAnZ3N0b3BlbmN2dXRpbHMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3BlbmN2dXRpbHMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnV0aWxzLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnV0aWxzLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG9wZW5jdnV0aWxzLmMnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnV0aWxzLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dXRpbHMubG8gYHRlc3QgLWYgJ2dzdG9wZW5jdnV0aWxzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wZW5jdnV0aWxzLmMKLQotbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlLmxvOiBnc3RjdmRpbGF0ZS5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGUuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5sbyBgdGVzdCAtZiAnZ3N0Y3ZkaWxhdGUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZkaWxhdGUuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGN2ZGlsYXRlLmMnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGUubG8gYHRlc3QgLWYgJ2dzdGN2ZGlsYXRlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZGlsYXRlLmMKLQotbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlZXJvZGUubG86IGdzdGN2ZGlsYXRlZXJvZGUuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZWVyb2RlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGVlcm9kZS5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlZXJvZGUubG8gYHRlc3QgLWYgJ2dzdGN2ZGlsYXRlZXJvZGUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZkaWxhdGVlcm9kZS5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGVlcm9kZS5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZWVyb2RlLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGN2ZGlsYXRlZXJvZGUuYycgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGVlcm9kZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlZXJvZGUubG8gYHRlc3QgLWYgJ2dzdGN2ZGlsYXRlZXJvZGUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZkaWxhdGVlcm9kZS5jCi0KLWxpYmdzdG9wZW5jdl9sYS1nc3RjdmVxdWFsaXplaGlzdC5sbzogZ3N0Y3ZlcXVhbGl6ZWhpc3QuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmVxdWFsaXplaGlzdC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXF1YWxpemVoaXN0LlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QubG8gYHRlc3QgLWYgJ2dzdGN2ZXF1YWxpemVoaXN0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZXF1YWxpemVoaXN0LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVxdWFsaXplaGlzdC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVxdWFsaXplaGlzdC5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RjdmVxdWFsaXplaGlzdC5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVxdWFsaXplaGlzdC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXF1YWxpemVoaXN0LmxvIGB0ZXN0IC1mICdnc3RjdmVxdWFsaXplaGlzdC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmVxdWFsaXplaGlzdC5jCi0KLWxpYmdzdG9wZW5jdl9sYS1nc3RjdmVyb2RlLmxvOiBnc3RjdmVyb2RlLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zlcm9kZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXJvZGUuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmVyb2RlLmxvIGB0ZXN0IC1mICdnc3RjdmVyb2RlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZXJvZGUuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXJvZGUuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zlcm9kZS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RjdmVyb2RlLmMnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXJvZGUubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmVyb2RlLmxvIGB0ZXN0IC1mICdnc3RjdmVyb2RlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZXJvZGUuYwotCi1saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZsYXBsYWNlLmxvOiBnc3RjdmxhcGxhY2UuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmxhcGxhY2UubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmxhcGxhY2UuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmxhcGxhY2UubG8gYHRlc3QgLWYgJ2dzdGN2bGFwbGFjZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmxhcGxhY2UuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2bGFwbGFjZS5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmxhcGxhY2UuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Y3ZsYXBsYWNlLmMnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdGN2bGFwbGFjZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2bGFwbGFjZS5sbyBgdGVzdCAtZiAnZ3N0Y3ZsYXBsYWNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2bGFwbGFjZS5jCi0KLWxpYmdzdG9wZW5jdl9sYS1nc3RjdnNtb290aC5sbzogZ3N0Y3ZzbW9vdGguYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RjdnNtb290aC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2c21vb3RoLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGgubG8gYHRlc3QgLWYgJ2dzdGN2c21vb3RoLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2c21vb3RoLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNtb290aC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNtb290aC5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RjdnNtb290aC5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNtb290aC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2c21vb3RoLmxvIGB0ZXN0IC1mICdnc3RjdnNtb290aC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdnNtb290aC5jCi0KLWxpYmdzdG9wZW5jdl9sYS1nc3RjdnNvYmVsLmxvOiBnc3RjdnNvYmVsLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zzb2JlbC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2c29iZWwuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdnNvYmVsLmxvIGB0ZXN0IC1mICdnc3RjdnNvYmVsLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2c29iZWwuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2c29iZWwuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zzb2JlbC5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RjdnNvYmVsLmMnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdGN2c29iZWwubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdnNvYmVsLmxvIGB0ZXN0IC1mICdnc3RjdnNvYmVsLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2c29iZWwuYwotCi1saWJnc3RvcGVuY3ZfbGEtZ3N0aGFuZGRldGVjdC5sbzogZ3N0aGFuZGRldGVjdC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdGhhbmRkZXRlY3QubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RoYW5kZGV0ZWN0LlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0aGFuZGRldGVjdC5sbyBgdGVzdCAtZiAnZ3N0aGFuZGRldGVjdC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RoYW5kZGV0ZWN0LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RoYW5kZGV0ZWN0LlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGhhbmRkZXRlY3QuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0aGFuZGRldGVjdC5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RoYW5kZGV0ZWN0LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0aGFuZGRldGVjdC5sbyBgdGVzdCAtZiAnZ3N0aGFuZGRldGVjdC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RoYW5kZGV0ZWN0LmMKLQotbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LmxvOiBnc3RweXJhbWlkc2VnbWVudC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0cHlyYW1pZHNlZ21lbnQuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RweXJhbWlkc2VnbWVudC5sbyBgdGVzdCAtZiAnZ3N0cHlyYW1pZHNlZ21lbnQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cHlyYW1pZHNlZ21lbnQuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHB5cmFtaWRzZWdtZW50LmMnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0cHlyYW1pZHNlZ21lbnQubG8gYHRlc3QgLWYgJ2dzdHB5cmFtaWRzZWdtZW50LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHB5cmFtaWRzZWdtZW50LmMKLQotbGliZ3N0b3BlbmN2X2xhLWdzdHRlbXBsYXRlbWF0Y2gubG86IGdzdHRlbXBsYXRlbWF0Y2guYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3R0ZW1wbGF0ZW1hdGNoLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0dGVtcGxhdGVtYXRjaC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHRlbXBsYXRlbWF0Y2gubG8gYHRlc3QgLWYgJ2dzdHRlbXBsYXRlbWF0Y2guYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dGVtcGxhdGVtYXRjaC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0dGVtcGxhdGVtYXRjaC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3R0ZW1wbGF0ZW1hdGNoLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHRlbXBsYXRlbWF0Y2guYycgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0dGVtcGxhdGVtYXRjaC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHRlbXBsYXRlbWF0Y2gubG8gYHRlc3QgLWYgJ2dzdHRlbXBsYXRlbWF0Y2guYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dGVtcGxhdGVtYXRjaC5jCi0KLWxpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5sbzogZ3N0dGV4dG92ZXJsYXkuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHRleHRvdmVybGF5LlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0dGV4dG92ZXJsYXkubG8gYHRlc3QgLWYgJ2dzdHRleHRvdmVybGF5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHRleHRvdmVybGF5LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3R0ZXh0b3ZlcmxheS5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHRleHRvdmVybGF5LmxvIGB0ZXN0IC1mICdnc3R0ZXh0b3ZlcmxheS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3R0ZXh0b3ZlcmxheS5jCi0KLWxpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5sbzogZ3N0bW90aW9uY2VsbHMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG1vdGlvbmNlbGxzLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0bW90aW9uY2VsbHMubG8gYHRlc3QgLWYgJ2dzdG1vdGlvbmNlbGxzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG1vdGlvbmNlbGxzLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3Rtb3Rpb25jZWxscy5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdG1vdGlvbmNlbGxzLmxvIGB0ZXN0IC1mICdnc3Rtb3Rpb25jZWxscy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rtb3Rpb25jZWxscy5jCi0KLWxpYmdzdG9wZW5jdl9sYS1nc3Rza2luZGV0ZWN0LmxvOiBnc3Rza2luZGV0ZWN0LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0c2tpbmRldGVjdC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHNraW5kZXRlY3QuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3Rza2luZGV0ZWN0LmxvIGB0ZXN0IC1mICdnc3Rza2luZGV0ZWN0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHNraW5kZXRlY3QuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHNraW5kZXRlY3QuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0c2tpbmRldGVjdC5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3Rza2luZGV0ZWN0LmMnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdHNraW5kZXRlY3QubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3Rza2luZGV0ZWN0LmxvIGB0ZXN0IC1mICdnc3Rza2luZGV0ZWN0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHNraW5kZXRlY3QuYwotCi1saWJnc3RvcGVuY3ZfbGEtZ3N0cmV0aW5leC5sbzogZ3N0cmV0aW5leC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdHJldGluZXgubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RyZXRpbmV4LlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0cmV0aW5leC5sbyBgdGVzdCAtZiAnZ3N0cmV0aW5leC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RyZXRpbmV4LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RyZXRpbmV4LlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHJldGluZXguUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0cmV0aW5leC5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RyZXRpbmV4LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0cmV0aW5leC5sbyBgdGVzdCAtZiAnZ3N0cmV0aW5leC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RyZXRpbmV4LmMKLQogLmNwcC5vOgogQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCiBAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChDWFhDT01QSUxFKSAtTVQgJEAgLU1EIC1NUCAtTUYgJCRkZXBiYXNlLlRwbyAtYyAtbyAkQCAkPCAmJlwKQEAgLTExNDksNiArMTAxMCw2OSBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3YubG8gYHRlc3QgLWYgJ2dzdG9wZW5jdi5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wZW5jdi5jcHAKIAorbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnZpZGVvZmlsdGVyLmxvOiBnc3RvcGVuY3Z2aWRlb2ZpbHRlci5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnZpZGVvZmlsdGVyLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dmlkZW9maWx0ZXIubG8gYHRlc3QgLWYgJ2dzdG9wZW5jdnZpZGVvZmlsdGVyLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3BlbmN2dmlkZW9maWx0ZXIuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnZpZGVvZmlsdGVyLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnZpZGVvZmlsdGVyLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0b3BlbmN2dmlkZW9maWx0ZXIuY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5sbyBgdGVzdCAtZiAnZ3N0b3BlbmN2dmlkZW9maWx0ZXIuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcGVuY3Z2aWRlb2ZpbHRlci5jcHAKKworbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnV0aWxzLmxvOiBnc3RvcGVuY3Z1dGlscy5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnV0aWxzLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dXRpbHMubG8gYHRlc3QgLWYgJ2dzdG9wZW5jdnV0aWxzLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3BlbmN2dXRpbHMuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnV0aWxzLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnV0aWxzLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0b3BlbmN2dXRpbHMuY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5sbyBgdGVzdCAtZiAnZ3N0b3BlbmN2dXRpbHMuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcGVuY3Z1dGlscy5jcHAKKworbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlLmxvOiBnc3RjdmRpbGF0ZS5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGUubG8gYHRlc3QgLWYgJ2dzdGN2ZGlsYXRlLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZkaWxhdGUuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0Y3ZkaWxhdGUuY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5sbyBgdGVzdCAtZiAnZ3N0Y3ZkaWxhdGUuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmRpbGF0ZS5jcHAKKworbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlZXJvZGUubG86IGdzdGN2ZGlsYXRlZXJvZGUuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGVlcm9kZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlZXJvZGUuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZWVyb2RlLmxvIGB0ZXN0IC1mICdnc3RjdmRpbGF0ZWVyb2RlLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZkaWxhdGVlcm9kZS5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGVlcm9kZS5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZWVyb2RlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0Y3ZkaWxhdGVlcm9kZS5jcHAnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlZXJvZGUubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGVlcm9kZS5sbyBgdGVzdCAtZiAnZ3N0Y3ZkaWxhdGVlcm9kZS5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZGlsYXRlZXJvZGUuY3BwCisKK2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVxdWFsaXplaGlzdC5sbzogZ3N0Y3ZlcXVhbGl6ZWhpc3QuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVxdWFsaXplaGlzdC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXF1YWxpemVoaXN0LmxvIGB0ZXN0IC1mICdnc3RjdmVxdWFsaXplaGlzdC5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZXF1YWxpemVoaXN0LmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVxdWFsaXplaGlzdC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVxdWFsaXplaGlzdC5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdGN2ZXF1YWxpemVoaXN0LmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QubG8gYHRlc3QgLWYgJ2dzdGN2ZXF1YWxpemVoaXN0LmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZlcXVhbGl6ZWhpc3QuY3BwCisKK2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVyb2RlLmxvOiBnc3RjdmVyb2RlLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXJvZGUubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVyb2RlLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zlcm9kZS5sbyBgdGVzdCAtZiAnZ3N0Y3Zlcm9kZS5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZXJvZGUuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXJvZGUuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zlcm9kZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdGN2ZXJvZGUuY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVyb2RlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXJvZGUubG8gYHRlc3QgLWYgJ2dzdGN2ZXJvZGUuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmVyb2RlLmNwcAorCitsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZsYXBsYWNlLmxvOiBnc3RjdmxhcGxhY2UuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZsYXBsYWNlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZsYXBsYWNlLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZsYXBsYWNlLmxvIGB0ZXN0IC1mICdnc3RjdmxhcGxhY2UuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmxhcGxhY2UuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2bGFwbGFjZS5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmxhcGxhY2UuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3RjdmxhcGxhY2UuY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RjdmxhcGxhY2UubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZsYXBsYWNlLmxvIGB0ZXN0IC1mICdnc3RjdmxhcGxhY2UuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmxhcGxhY2UuY3BwCisKK2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNtb290aC5sbzogZ3N0Y3ZzbW9vdGguY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGgubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNtb290aC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2c21vb3RoLmxvIGB0ZXN0IC1mICdnc3RjdnNtb290aC5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2c21vb3RoLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNtb290aC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNtb290aC5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdGN2c21vb3RoLmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGgubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGgubG8gYHRlc3QgLWYgJ2dzdGN2c21vb3RoLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZzbW9vdGguY3BwCisKK2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNvYmVsLmxvOiBnc3RjdnNvYmVsLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdGN2c29iZWwubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNvYmVsLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zzb2JlbC5sbyBgdGVzdCAtZiAnZ3N0Y3Zzb2JlbC5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2c29iZWwuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2c29iZWwuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zzb2JlbC5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdGN2c29iZWwuY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNvYmVsLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2c29iZWwubG8gYHRlc3QgLWYgJ2dzdGN2c29iZWwuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdnNvYmVsLmNwcAorCiBsaWJnc3RvcGVuY3ZfbGEtZ3N0ZWRnZWRldGVjdC5sbzogZ3N0ZWRnZWRldGVjdC5jcHAKIEBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RlZGdlZGV0ZWN0LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0ZWRnZWRldGVjdC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGVkZ2VkZXRlY3QubG8gYHRlc3QgLWYgJ2dzdGVkZ2VkZXRlY3QuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RlZGdlZGV0ZWN0LmNwcAogQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RlZGdlZGV0ZWN0LlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGVkZ2VkZXRlY3QuUGxvCkBAIC0xMTYzLDYgKzEwODcsNTUgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0ZmFjZWJsdXIubG8gYHRlc3QgLWYgJ2dzdGZhY2VibHVyLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0ZmFjZWJsdXIuY3BwCiAKK2xpYmdzdG9wZW5jdl9sYS1nc3RoYW5kZGV0ZWN0LmxvOiBnc3RoYW5kZGV0ZWN0LmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdGhhbmRkZXRlY3QubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RoYW5kZGV0ZWN0LlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0aGFuZGRldGVjdC5sbyBgdGVzdCAtZiAnZ3N0aGFuZGRldGVjdC5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGhhbmRkZXRlY3QuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGhhbmRkZXRlY3QuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0aGFuZGRldGVjdC5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdGhhbmRkZXRlY3QuY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RoYW5kZGV0ZWN0LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGhhbmRkZXRlY3QubG8gYHRlc3QgLWYgJ2dzdGhhbmRkZXRlY3QuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RoYW5kZGV0ZWN0LmNwcAorCitsaWJnc3RvcGVuY3ZfbGEtZ3N0cHlyYW1pZHNlZ21lbnQubG86IGdzdHB5cmFtaWRzZWdtZW50LmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0cHlyYW1pZHNlZ21lbnQuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RweXJhbWlkc2VnbWVudC5sbyBgdGVzdCAtZiAnZ3N0cHlyYW1pZHNlZ21lbnQuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RweXJhbWlkc2VnbWVudC5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0cHlyYW1pZHNlZ21lbnQuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0cHlyYW1pZHNlZ21lbnQuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3RweXJhbWlkc2VnbWVudC5jcHAnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LmxvIGB0ZXN0IC1mICdnc3RweXJhbWlkc2VnbWVudC5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHB5cmFtaWRzZWdtZW50LmNwcAorCitsaWJnc3RvcGVuY3ZfbGEtZ3N0dGVtcGxhdGVtYXRjaC5sbzogZ3N0dGVtcGxhdGVtYXRjaC5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3R0ZW1wbGF0ZW1hdGNoLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0dGVtcGxhdGVtYXRjaC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHRlbXBsYXRlbWF0Y2gubG8gYHRlc3QgLWYgJ2dzdHRlbXBsYXRlbWF0Y2guY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3R0ZW1wbGF0ZW1hdGNoLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3R0ZW1wbGF0ZW1hdGNoLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHRlbXBsYXRlbWF0Y2guUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3R0ZW1wbGF0ZW1hdGNoLmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0dGVtcGxhdGVtYXRjaC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3R0ZW1wbGF0ZW1hdGNoLmxvIGB0ZXN0IC1mICdnc3R0ZW1wbGF0ZW1hdGNoLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dGVtcGxhdGVtYXRjaC5jcHAKKworbGliZ3N0b3BlbmN2X2xhLWdzdHRleHRvdmVybGF5LmxvOiBnc3R0ZXh0b3ZlcmxheS5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHRleHRvdmVybGF5LlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0dGV4dG92ZXJsYXkubG8gYHRlc3QgLWYgJ2dzdHRleHRvdmVybGF5LmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dGV4dG92ZXJsYXkuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHRleHRvdmVybGF5LlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHRleHRvdmVybGF5LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0dGV4dG92ZXJsYXkuY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5sbyBgdGVzdCAtZiAnZ3N0dGV4dG92ZXJsYXkuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3R0ZXh0b3ZlcmxheS5jcHAKKworbGliZ3N0b3BlbmN2X2xhLWdzdG1vdGlvbmNlbGxzLmxvOiBnc3Rtb3Rpb25jZWxscy5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG1vdGlvbmNlbGxzLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0bW90aW9uY2VsbHMubG8gYHRlc3QgLWYgJ2dzdG1vdGlvbmNlbGxzLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0bW90aW9uY2VsbHMuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG1vdGlvbmNlbGxzLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG1vdGlvbmNlbGxzLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0bW90aW9uY2VsbHMuY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5sbyBgdGVzdCAtZiAnZ3N0bW90aW9uY2VsbHMuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rtb3Rpb25jZWxscy5jcHAKKworbGliZ3N0b3BlbmN2X2xhLWdzdHNraW5kZXRlY3QubG86IGdzdHNraW5kZXRlY3QuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0c2tpbmRldGVjdC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHNraW5kZXRlY3QuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3Rza2luZGV0ZWN0LmxvIGB0ZXN0IC1mICdnc3Rza2luZGV0ZWN0LmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0c2tpbmRldGVjdC5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0c2tpbmRldGVjdC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3Rza2luZGV0ZWN0LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0c2tpbmRldGVjdC5jcHAnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdHNraW5kZXRlY3QubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0c2tpbmRldGVjdC5sbyBgdGVzdCAtZiAnZ3N0c2tpbmRldGVjdC5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHNraW5kZXRlY3QuY3BwCisKK2xpYmdzdG9wZW5jdl9sYS1nc3RyZXRpbmV4LmxvOiBnc3RyZXRpbmV4LmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdHJldGluZXgubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RyZXRpbmV4LlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0cmV0aW5leC5sbyBgdGVzdCAtZiAnZ3N0cmV0aW5leC5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHJldGluZXguY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHJldGluZXguVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0cmV0aW5leC5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdHJldGluZXguY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RyZXRpbmV4LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHJldGluZXgubG8gYHRlc3QgLWYgJ2dzdHJldGluZXguY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RyZXRpbmV4LmNwcAorCiBsaWJnc3RvcGVuY3ZfbGEtZ3N0ZmFjZWRldGVjdC5sbzogZ3N0ZmFjZWRldGVjdC5jcHAKIEBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RmYWNlZGV0ZWN0LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0ZmFjZWRldGVjdC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGZhY2VkZXRlY3QubG8gYHRlc3QgLWYgJ2dzdGZhY2VkZXRlY3QuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RmYWNlZGV0ZWN0LmNwcAogQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RmYWNlZGV0ZWN0LlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGZhY2VkZXRlY3QuUGxvCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L01vdGlvbkNlbGxzLmNwcCBiL2V4dC9vcGVuY3YvTW90aW9uQ2VsbHMuY3BwCmluZGV4IGVhYTAxM2YuLjlhMTYxNzYgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvTW90aW9uQ2VsbHMuY3BwCisrKyBiL2V4dC9vcGVuY3YvTW90aW9uQ2VsbHMuY3BwCkBAIC00OSwxMCArNDksNyBAQAogLy8jZW5kaWYKICNlbmRpZgogCi0jaW5jbHVkZSA8Y3N0ZGxpYj4KICNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPG1hdGguaD4KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSAiTW90aW9uQ2VsbHMuaCIKICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CiAKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvTW90aW9uQ2VsbHMuaCBiL2V4dC9vcGVuY3YvTW90aW9uQ2VsbHMuaAppbmRleCA0MWJiOWM3Li45NzEzN2JiIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L01vdGlvbkNlbGxzLmgKKysrIGIvZXh0L29wZW5jdi9Nb3Rpb25DZWxscy5oCkBAIC01MiwxMSArNTIsOCBAQAogI2lmZGVmIEhBVkVfT1BFTkNWMl9ISUdIR1VJX0hJR0hHVUlfQ19ICiAjaW5jbHVkZSA8b3BlbmN2Mi9oaWdoZ3VpL2hpZ2hndWlfYy5oPiAgICAgICAgICAgIC8vIGluY2x1ZGVzIGhpZ2hHVUkgZGVmaW5pdGlvbnMKICNlbmRpZgotI2luY2x1ZGUgPGlvc3RyZWFtPgogI2luY2x1ZGUgPGZzdHJlYW0+CiAjaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxjbWF0aD4KICNpbmNsdWRlIDxnbGliLmg+CiAKIC8vTW90aW9uQ2VsbHMgZGVmaW5lcwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RjdmRpbGF0ZS5jIGIvZXh0L29wZW5jdi9nc3RjdmRpbGF0ZS5jcHAKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gZXh0L29wZW5jdi9nc3RjdmRpbGF0ZS5jCnJlbmFtZSB0byBleHQvb3BlbmN2L2dzdGN2ZGlsYXRlLmNwcAppbmRleCBkYTA3MTNkLi5iYzZiMDMyIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGN2ZGlsYXRlLmMKKysrIGIvZXh0L29wZW5jdi9nc3RjdmRpbGF0ZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvLnNvdXNhLnNhbnRvc0Bjb2xsYWJvcmEuY28udWs+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQxLDEyICs0MSwyMyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtY3ZkaWxhdGUKKyAqCisgKiBEaWxhdGVzIHRoZSBpbWFnZSB3aXRoIHRoZSBjdkRpbGF0ZSBPcGVuQ1YgZnVuY3Rpb24uCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIGN2ZGlsYXRlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KKwogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KICNpbmNsdWRlICJnc3RjdmRpbGF0ZS5oIgogI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jX2MuaD4KIApAQCAtNTcsOCArNjgsNiBAQAogCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfY3ZfZGlsYXRlX3RyYW5zZm9ybV9pcCAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKgogICAgIGZpbHRlciwgR3N0QnVmZmVyICogYnVmLCBJcGxJbWFnZSAqIGltZyk7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfY3ZfZGlsYXRlX3RyYW5zZm9ybSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiBmaWx0ZXIsCi0gICAgR3N0QnVmZmVyICogYnVmLCBJcGxJbWFnZSAqIGltZywgR3N0QnVmZmVyICogb3V0YnVmLCBJcGxJbWFnZSAqIG91dGltZyk7CiAKIC8qIGluaXRpYWxpemUgdGhlIGN2ZGlsYXRlJ3MgY2xhc3MgKi8KIHN0YXRpYyB2b2lkCkBAIC03MCw3ICs3OSw2IEBACiAgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MgPSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyAqKSBrbGFzczsKIAogICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzLT5jdl90cmFuc19pcF9mdW5jID0gZ3N0X2N2X2RpbGF0ZV90cmFuc2Zvcm1faXA7Ci0gIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MtPmN2X3RyYW5zX2Z1bmMgPSBnc3RfY3ZfZGlsYXRlX3RyYW5zZm9ybTsKICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZWxlbWVudF9jbGFzcywKICAgICAgICJjdmRpbGF0ZSIsCiAgICAgICAiVHJhbnNmb3JtL0VmZmVjdC9WaWRlbyIsCkBAIC04OSwxOCArOTcsNiBAQAogfQogCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X2N2X2RpbGF0ZV90cmFuc2Zvcm0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogYmFzZSwgR3N0QnVmZmVyICogYnVmLAotICAgIElwbEltYWdlICogaW1nLCBHc3RCdWZmZXIgKiBvdXRidWYsIElwbEltYWdlICogb3V0aW1nKQotewotICBHc3RDdkRpbGF0ZUVyb2RlICpmaWx0ZXIgPSBHU1RfQ1ZfRElMQVRFX0VST0RFIChiYXNlKTsKLQotICAvKiBUT0RPIHN1cHBvcnQga2VybmVsIGFzIGEgcGFyYW1ldGVyICovCi0gIGN2RGlsYXRlIChpbWcsIG91dGltZywgTlVMTCwgZmlsdGVyLT5pdGVyYXRpb25zKTsKLQotICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfY3ZfZGlsYXRlX3RyYW5zZm9ybV9pcCAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiBiYXNlLCBHc3RCdWZmZXIgKiBidWYsCiAgICAgSXBsSW1hZ2UgKiBpbWcpCiB7CmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGN2ZGlsYXRlZXJvZGUuYyBiL2V4dC9vcGVuY3YvZ3N0Y3ZkaWxhdGVlcm9kZS5jcHAKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gZXh0L29wZW5jdi9nc3RjdmRpbGF0ZWVyb2RlLmMKcmVuYW1lIHRvIGV4dC9vcGVuY3YvZ3N0Y3ZkaWxhdGVlcm9kZS5jcHAKaW5kZXggMTMzNDJhYi4uNjlhNDE2OSAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RjdmRpbGF0ZWVyb2RlLmMKKysrIGIvZXh0L29wZW5jdi9nc3RjdmRpbGF0ZWVyb2RlLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBUaGlhZ28gU2FudG9zIDx0aGlhZ28uc291c2Euc2FudG9zQGNvbGxhYm9yYS5jby51az4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNTAsOCArNTAsNiBAQAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQogI2luY2x1ZGUgImdzdG9wZW5jdnV0aWxzLmgiCiAjaW5jbHVkZSAiZ3N0Y3ZkaWxhdGVlcm9kZS5oIgogCkBAIC0xMzEsNyArMTI5LDggQEAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9JVEVSQVRJT05TLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIml0ZXJhdGlvbnMiLCAiaXRlcmF0aW9ucyIsCiAgICAgICAgICAgIk51bWJlciBvZiBpdGVyYXRpb25zIHRvIHJ1biB0aGUgYWxnb3JpdGhtIiwgMSwgR19NQVhJTlQsCi0gICAgICAgICAgREVGQVVMVF9JVEVSQVRJT05TLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICBERUZBVUxUX0lURVJBVElPTlMsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIC8qIGFkZCBzaW5rIGFuZCBzb3VyY2UgcGFkIHRlbXBsYXRlcyAqLwogICBjYXBzID0gZ3N0X29wZW5jdl9jYXBzX2Zyb21fY3ZfaW1hZ2VfdHlwZSAoQ1ZfMTZVQzEpOwpAQCAtMTU1LDcgKzE1NCw4IEBACiAgICAgR3N0Q3ZEaWxhdGVFcm9kZUNsYXNzICogZ2NsYXNzKQogewogICBmaWx0ZXItPml0ZXJhdGlvbnMgPSBERUZBVUxUX0lURVJBVElPTlM7Ci0gIGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfaW5fcGxhY2UgKEdTVF9CQVNFX1RSQU5TRk9STSAoZmlsdGVyKSwgVFJVRSk7CisgIGdzdF9vcGVuY3ZfdmlkZW9fZmlsdGVyX3NldF9pbl9wbGFjZSAoR1NUX09QRU5DVl9WSURFT19GSUxURVJfQ0FTVCAoZmlsdGVyKSwKKyAgICAgIFRSVUUpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RjdmRpbGF0ZWVyb2RlLmggYi9leHQvb3BlbmN2L2dzdGN2ZGlsYXRlZXJvZGUuaAppbmRleCA5NDQyNWY1Li5iZDJhYTdjIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGN2ZGlsYXRlZXJvZGUuaAorKysgYi9leHQvb3BlbmN2L2dzdGN2ZGlsYXRlZXJvZGUuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBUaGlhZ28gU2FudG9zIDx0aGlhZ28uc291c2Euc2FudG9zQGNvbGxhYm9yYS5jby51az4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDQsOCArNDQsNiBAQAogI2lmbmRlZiBfX0dTVF9DVl9ESUxBVEVfRVJPREVfSF9fCiAjZGVmaW5lIF9fR1NUX0NWX0RJTEFURV9FUk9ERV9IX18KIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQogI2luY2x1ZGUgPGdzdG9wZW5jdnZpZGVvZmlsdGVyLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTcyLDcgKzcwLDcgQEAKICAgZ2ludCBpdGVyYXRpb25zOwogfTsKIAotc3RydWN0IF9Hc3RDdkRpbGF0ZUVyb2RlQ2xhc3MgCitzdHJ1Y3QgX0dzdEN2RGlsYXRlRXJvZGVDbGFzcwogewogICBHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzIHBhcmVudF9jbGFzczsKIH07CmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmMgYi9leHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmNwcApzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBleHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmMKcmVuYW1lIHRvIGV4dC9vcGVuY3YvZ3N0Y3ZlcXVhbGl6ZWhpc3QuY3BwCmluZGV4IDczODRkZjEuLmVhMWRiMjggMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0Y3ZlcXVhbGl6ZWhpc3QuYworKysgYi9leHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBUaGlhZ28gU2FudG9zIDx0aGlhZ28uc291c2Euc2FudG9zQGNvbGxhYm9yYS5jby51az4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDEsMTMgKzQxLDI1IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1jdmVxdWFsaXplaGlzdAorICoKKyAqIEVxdWFsaXplcyB0aGUgaGlzdG9ncmFtIG9mIGEgZ3JheXNjYWxlIGltYWdlIHdpdGggdGhlIGN2RXF1YWxpemVIaXN0IE9wZW5DVgorICogZnVuY3Rpb24uCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyBwYXR0ZXJuPTIzICEgY3ZlcXVhbGl6ZWhpc3QgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLworCisKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi0jaW5jbHVkZSAiZ3N0b3BlbmN2dXRpbHMuaCIKICNpbmNsdWRlICJnc3RjdmVxdWFsaXplaGlzdC5oIgogI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jX2MuaD4KIApAQCAtOTYsNyArMTA4LDggQEAKIHN0YXRpYyB2b2lkCiBnc3RfY3ZfZXF1YWxpemVfaGlzdF9pbml0IChHc3RDdkVxdWFsaXplSGlzdCAqIGZpbHRlcikKIHsKLSAgZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9pbl9wbGFjZSAoR1NUX0JBU0VfVFJBTlNGT1JNIChmaWx0ZXIpLCBGQUxTRSk7CisgIGdzdF9vcGVuY3ZfdmlkZW9fZmlsdGVyX3NldF9pbl9wbGFjZSAoR1NUX09QRU5DVl9WSURFT19GSUxURVJfQ0FTVCAoZmlsdGVyKSwKKyAgICAgIEZBTFNFKTsKIH0KIAogc3RhdGljIEdzdEZsb3dSZXR1cm4KZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0Y3ZlcXVhbGl6ZWhpc3QuaCBiL2V4dC9vcGVuY3YvZ3N0Y3ZlcXVhbGl6ZWhpc3QuaAppbmRleCBkMWQ2MDBkLi5jMTg1OTk0IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmgKKysrIGIvZXh0L29wZW5jdi9nc3RjdmVxdWFsaXplaGlzdC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRoaWFnbyBTYW50b3MgPHRoaWFnby5zb3VzYS5zYW50b3NAY29sbGFib3JhLmNvLnVrPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00NCw4ICs0NCw2IEBACiAjaWZuZGVmIF9fR1NUX0NWX0VRVUFMSVpFX0hJU1RfSF9fCiAjZGVmaW5lIF9fR1NUX0NWX0VRVUFMSVpFX0hJU1RfSF9fCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KICNpbmNsdWRlIDxnc3RvcGVuY3Z2aWRlb2ZpbHRlci5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC03MCw3ICs2OCw3IEBACiAgIEdzdE9wZW5jdlZpZGVvRmlsdGVyIGVsZW1lbnQ7CiB9OwogCi1zdHJ1Y3QgX0dzdEN2RXF1YWxpemVIaXN0Q2xhc3MgCitzdHJ1Y3QgX0dzdEN2RXF1YWxpemVIaXN0Q2xhc3MKIHsKICAgR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyBwYXJlbnRfY2xhc3M7CiB9OwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RjdmVyb2RlLmMgYi9leHQvb3BlbmN2L2dzdGN2ZXJvZGUuY3BwCnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIGV4dC9vcGVuY3YvZ3N0Y3Zlcm9kZS5jCnJlbmFtZSB0byBleHQvb3BlbmN2L2dzdGN2ZXJvZGUuY3BwCmluZGV4IDRjNjI2MjQuLjM5YjcyYmUgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0Y3Zlcm9kZS5jCisrKyBiL2V4dC9vcGVuY3YvZ3N0Y3Zlcm9kZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvLnNvdXNhLnNhbnRvc0Bjb2xsYWJvcmEuY28udWs+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQxLDEyICs0MSwyMyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtY3Zlcm9kZQorICoKKyAqIEVyb2RlcyB0aGUgaW1hZ2Ugd2l0aCB0aGUgY3ZFcm9kZSBPcGVuQ1YgZnVuY3Rpb24uCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIGN2ZXJvZGUgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLworCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQogI2luY2x1ZGUgImdzdGN2ZXJvZGUuaCIKICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CiAKQEAgLTU3LDggKzY4LDYgQEAKIAogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2N2X2Vyb2RlX3RyYW5zZm9ybV9pcCAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKgogICAgIGZpbHRlciwgR3N0QnVmZmVyICogYnVmLCBJcGxJbWFnZSAqIGltZyk7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfY3ZfZXJvZGVfdHJhbnNmb3JtIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIGZpbHRlciwKLSAgICBHc3RCdWZmZXIgKiBidWYsIElwbEltYWdlICogaW1nLCBHc3RCdWZmZXIgKiBvdXRidWYsIElwbEltYWdlICogb3V0aW1nKTsKIAogLyogaW5pdGlhbGl6ZSB0aGUgY3Zlcm9kZSdzIGNsYXNzICovCiBzdGF0aWMgdm9pZApAQCAtNzAsNyArNzksNiBAQAogICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzID0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgKikga2xhc3M7CiAKICAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcy0+Y3ZfdHJhbnNfaXBfZnVuYyA9IGdzdF9jdl9lcm9kZV90cmFuc2Zvcm1faXA7Ci0gIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MtPmN2X3RyYW5zX2Z1bmMgPSBnc3RfY3ZfZXJvZGVfdHJhbnNmb3JtOwogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAogICAgICAgImN2ZXJvZGUiLAogICAgICAgIlRyYW5zZm9ybS9FZmZlY3QvVmlkZW8iLApAQCAtODksMTggKzk3LDYgQEAKIH0KIAogc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9jdl9lcm9kZV90cmFuc2Zvcm0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogYmFzZSwgR3N0QnVmZmVyICogYnVmLAotICAgIElwbEltYWdlICogaW1nLCBHc3RCdWZmZXIgKiBvdXRidWYsIElwbEltYWdlICogb3V0aW1nKQotewotICBHc3RDdkRpbGF0ZUVyb2RlICpmaWx0ZXIgPSBHU1RfQ1ZfRElMQVRFX0VST0RFIChiYXNlKTsKLQotICAvKiBUT0RPIHN1cHBvcnQga2VybmVsIGFzIGEgcGFyYW1ldGVyICovCi0gIGN2RXJvZGUgKGltZywgb3V0aW1nLCBOVUxMLCBmaWx0ZXItPml0ZXJhdGlvbnMpOwotCi0gIHJldHVybiBHU1RfRkxPV19PSzsKLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9jdl9lcm9kZV90cmFuc2Zvcm1faXAgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogYmFzZSwgR3N0QnVmZmVyICogYnVmLAogICAgIElwbEltYWdlICogaW1nKQogewpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RjdmxhcGxhY2UuYyBiL2V4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmNwcApzaW1pbGFyaXR5IGluZGV4IDYxJQpyZW5hbWUgZnJvbSBleHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5jCnJlbmFtZSB0byBleHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5jcHAKaW5kZXggNWI5NTYxOC4uYzk4OTQ1NiAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RjdmxhcGxhY2UuYworKysgYi9leHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvLnNvdXNhLnNhbnRvc0Bjb2xsYWJvcmEuY28udWs+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQxLDEzICs0MSwyMyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtY3ZsYXBsYWNlCisgKgorICogQXBwbGllcyBjdkxhcGxhY2UgT3BlbkNWIGZ1bmN0aW9uIHRvIHRoZSBpbWFnZS4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgY3ZsYXBsYWNlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KKwogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KLSNpbmNsdWRlICJnc3RvcGVuY3Z1dGlscy5oIgogI2luY2x1ZGUgImdzdGN2bGFwbGFjZS5oIgogI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jX2MuaD4KIApAQCAtNTcsMjIgKzY3LDE0IEBACiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua19mYWN0b3J5ID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKICAgICBHU1RfUEFEX1NJTkssCiAgICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFICgiR1JBWTgiKSkKKyAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJSR0IiKSkKICAgICApOwogCi0jaWYgR19CWVRFX09SREVSID09IEdfQklHX0VORElBTgogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY19mYWN0b3J5ID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAogICAgIEdTVF9QQURfU1JDLAogICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoIkdSQVkxNl9CRSIpKQorICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoIlJHQiIpKQogICAgICk7Ci0jZWxzZQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY19mYWN0b3J5ID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAotICAgIEdTVF9QQURfU1JDLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoIkdSQVkxNl9MRSIpKQotICAgICk7Ci0jZW5kaWYKIAogLyogRmlsdGVyIHNpZ25hbHMgYW5kIGFyZ3MgKi8KIGVudW0KQEAgLTgzLDEwICs4NSwxNiBAQAogZW51bQogewogICBQUk9QXzAsCi0gIFBST1BfQVBFUlRVUkVfU0laRQorICBQUk9QX0FQRVJUVVJFX1NJWkUsCisgIFBST1BfU0NBTEUsCisgIFBST1BfU0hJRlQsCisgIFBST1BfTUFTSwogfTsKIAogI2RlZmluZSBERUZBVUxUX0FQRVJUVVJFX1NJWkUgMworI2RlZmluZSBERUZBVUxUX1NDQUxFX0ZBQ1RPUiAxLjAKKyNkZWZpbmUgREVGQVVMVF9TSElGVCAwLjAKKyNkZWZpbmUgREVGQVVMVF9NQVNLIFRSVUUKIAogR19ERUZJTkVfVFlQRSAoR3N0Q3ZMYXBsYWNlLCBnc3RfY3ZfbGFwbGFjZSwgR1NUX1RZUEVfT1BFTkNWX1ZJREVPX0ZJTFRFUik7CiAKQEAgLTk1LDggKzEwMyw4IEBACiBzdGF0aWMgdm9pZCBnc3RfY3ZfbGFwbGFjZV9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCiAgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CiAKLXN0YXRpYyBHc3RDYXBzICpnc3RfY3ZfbGFwbGFjZV90cmFuc2Zvcm1fY2FwcyAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zLAotICAgIEdzdFBhZERpcmVjdGlvbiBkaXIsIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfY3ZfbGFwbGFjZV9oYW5kbGVfc2lua19ldmVudCAoR3N0UGFkICogcGFkLAorICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCk7CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9jdl9sYXBsYWNlX3RyYW5zZm9ybSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiBmaWx0ZXIsCiAgICAgR3N0QnVmZmVyICogYnVmLCBJcGxJbWFnZSAqIGltZywgR3N0QnVmZmVyICogb3V0YnVmLCBJcGxJbWFnZSAqIG91dGltZyk7CkBAIC0xMTEsOCArMTE5LDEyIEBACiB7CiAgIEdzdEN2TGFwbGFjZSAqZmlsdGVyID0gR1NUX0NWX0xBUExBQ0UgKG9iaik7CiAKLSAgaWYgKGZpbHRlci0+aW50ZXJtZWRpYXJ5X2ltZykKKyAgaWYgKGZpbHRlci0+aW50ZXJtZWRpYXJ5X2ltZykgewogICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5pbnRlcm1lZGlhcnlfaW1nKTsKKyAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZHcmF5KTsKKyAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+TGFwbGFjZSk7CisgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPkNMYXBsYWNlKTsKKyAgfQogCiAgIEdfT0JKRUNUX0NMQVNTIChnc3RfY3ZfbGFwbGFjZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqKTsKIH0KQEAgLTEyMiwyNyArMTM0LDM1IEBACiBnc3RfY3ZfbGFwbGFjZV9jbGFzc19pbml0IChHc3RDdkxhcGxhY2VDbGFzcyAqIGtsYXNzKQogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7Ci0gIEdzdEJhc2VUcmFuc2Zvcm1DbGFzcyAqZ3N0YmFzZXRyYW5zZm9ybV9jbGFzczsKICAgR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyAqZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzczsKICAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKIAogICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKLSAgZ3N0YmFzZXRyYW5zZm9ybV9jbGFzcyA9IChHc3RCYXNlVHJhbnNmb3JtQ2xhc3MgKikga2xhc3M7CiAgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MgPSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyAqKSBrbGFzczsKIAogICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfY3ZfbGFwbGFjZV9maW5hbGl6ZSk7CiAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9jdl9sYXBsYWNlX3NldF9wcm9wZXJ0eTsKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2N2X2xhcGxhY2VfZ2V0X3Byb3BlcnR5OwogCi0gIGdzdGJhc2V0cmFuc2Zvcm1fY2xhc3MtPnRyYW5zZm9ybV9jYXBzID0gZ3N0X2N2X2xhcGxhY2VfdHJhbnNmb3JtX2NhcHM7Ci0KICAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcy0+Y3ZfdHJhbnNfZnVuYyA9IGdzdF9jdl9sYXBsYWNlX3RyYW5zZm9ybTsKICAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcy0+Y3Zfc2V0X2NhcHMgPSBnc3RfY3ZfbGFwbGFjZV9jdl9zZXRfY2FwczsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0FQRVJUVVJFX1NJWkUsCiAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgiYXBlcnR1cmUtc2l6ZSIsICJhcGVydHVyZSBzaXplIiwKICAgICAgICAgICAiU2l6ZSBvZiB0aGUgZXh0ZW5kZWQgTGFwbGFjZSBLZXJuZWwgKDEsIDMsIDUgb3IgNykiLCAxLCA3LAotICAgICAgICAgIERFRkFVTFRfQVBFUlRVUkVfU0laRSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgREVGQVVMVF9BUEVSVFVSRV9TSVpFLCAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0NBTEUsCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgic2NhbGUiLCAic2NhbGUgZmFjdG9yIiwKKyAgICAgICAgICAiU2NhbGUgZmFjdG9yIiwgMC4wLCBHX01BWERPVUJMRSwKKyAgICAgICAgICBERUZBVUxUX1NDQUxFX0ZBQ1RPUiwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NISUZULAorICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoInNoaWZ0IiwgIlNoaWZ0IiwKKyAgICAgICAgICAiVmFsdWUgYWRkZWQgdG8gdGhlIHNjYWxlZCBzb3VyY2UgYXJyYXkgZWxlbWVudHMiLCAwLjAsIEdfTUFYRE9VQkxFLAorICAgICAgICAgIERFRkFVTFRfU0hJRlQsIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NQVNLLAorICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJtYXNrIiwgIk1hc2siLAorICAgICAgICAgICJTZXRzIHdoZXRoZXIgdGhlIGRldGVjdGVkIGVkZ2VzIHNob3VsZCBiZSB1c2VkIGFzIGEgbWFzayBvbiB0aGUgb3JpZ2luYWwgaW5wdXQgb3Igbm90IiwKKyAgICAgICAgICBERUZBVUxUX01BU0ssIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAogICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc3JjX2ZhY3RvcnkpKTsKQEAgLTE1OSw5ICsxNzksMTYgQEAKIHN0YXRpYyB2b2lkCiBnc3RfY3ZfbGFwbGFjZV9pbml0IChHc3RDdkxhcGxhY2UgKiBmaWx0ZXIpCiB7Ci0gIGZpbHRlci0+YXBlcnR1cmVfc2l6ZSA9IERFRkFVTFRfQVBFUlRVUkVfU0laRTsKKyAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKEdTVF9CQVNFX1RSQU5TRk9STV9TSU5LX1BBRCAoZmlsdGVyKSwKKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfY3ZfbGFwbGFjZV9oYW5kbGVfc2lua19ldmVudCkpOwogCi0gIGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfaW5fcGxhY2UgKEdTVF9CQVNFX1RSQU5TRk9STSAoZmlsdGVyKSwgRkFMU0UpOworICBmaWx0ZXItPmFwZXJ0dXJlX3NpemUgPSBERUZBVUxUX0FQRVJUVVJFX1NJWkU7CisgIGZpbHRlci0+c2NhbGUgPSBERUZBVUxUX1NDQUxFX0ZBQ1RPUjsKKyAgZmlsdGVyLT5zaGlmdCA9IERFRkFVTFRfU0hJRlQ7CisgIGZpbHRlci0+bWFzayA9IERFRkFVTFRfTUFTSzsKKworICBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UgKEdTVF9PUEVOQ1ZfVklERU9fRklMVEVSX0NBU1QgKGZpbHRlciksCisgICAgICBGQUxTRSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgpAQCAtMTcwLDk3ICsxOTcsMTcgQEAKICAgICBnaW50IG91dF9oZWlnaHQsIGdpbnQgb3V0X2RlcHRoLCBnaW50IG91dF9jaGFubmVscykKIHsKICAgR3N0Q3ZMYXBsYWNlICpmaWx0ZXIgPSBHU1RfQ1ZfTEFQTEFDRSAodHJhbnMpOwotICBnaW50IGludGVybWVkaWFyeV9kZXB0aDsKIAotICAvKiBjdkxhcGxhY2UgbmVlZHMgYW4gc2lnbmVkIG91dHB1dCwgc28gd2UgY3JlYXRlIG91ciBpbnRlcm1lZGlhcnkgc3RlcAotICAgKiBpbWFnZSBoZXJlICovCi0gIHN3aXRjaCAob3V0X2RlcHRoKSB7Ci0gICAgY2FzZSBJUExfREVQVEhfMTZVOgotICAgICAgaW50ZXJtZWRpYXJ5X2RlcHRoID0gSVBMX0RFUFRIXzE2UzsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGZpbHRlciwgIlVuc3VwcG9ydGVkIG91dHB1dCBkZXB0aCAlZCIsIG91dF9kZXB0aCk7Ci0gICAgICByZXR1cm4gRkFMU0U7Ci0gIH0KICAgaWYgKGZpbHRlci0+aW50ZXJtZWRpYXJ5X2ltZykgewogICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5pbnRlcm1lZGlhcnlfaW1nKTsKICAgfQogCi0gIGZpbHRlci0+aW50ZXJtZWRpYXJ5X2ltZyA9IGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAob3V0X3dpZHRoLCBvdXRfaGVpZ2h0KSwKLSAgICAgIGludGVybWVkaWFyeV9kZXB0aCwgb3V0X2NoYW5uZWxzKTsKKyAgZmlsdGVyLT5pbnRlcm1lZGlhcnlfaW1nID0KKyAgICAgIGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAob3V0X3dpZHRoLCBvdXRfaGVpZ2h0KSwgSVBMX0RFUFRIXzE2UywgMSk7CiAKICAgcmV0dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyBHc3RDYXBzICoKLWdzdF9jdl9sYXBsYWNlX3RyYW5zZm9ybV9jYXBzIChHc3RCYXNlVHJhbnNmb3JtICogdHJhbnMsIEdzdFBhZERpcmVjdGlvbiBkaXIsCi0gICAgR3N0Q2FwcyAqIGNhcHMsIEdzdENhcHMgKiBmaWx0ZXIpCi17Ci0gIEdzdENhcHMgKnRvLCAqcmV0OwotICBHc3RDYXBzICp0ZW1wbDsKLSAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmU7Ci0gIEdzdFBhZCAqb3RoZXI7Ci0gIGdpbnQgaTsKLQotICB0byA9IGdzdF9jYXBzX25ld19lbXB0eSAoKTsKLQotICBmb3IgKGkgPSAwOyBpIDwgZ3N0X2NhcHNfZ2V0X3NpemUgKGNhcHMpOyBpKyspIHsKLSAgICBjb25zdCBHVmFsdWUgKnY7Ci0gICAgR1ZhbHVlIGxpc3QgPSB7IDAsIH07Ci0gICAgR1ZhbHVlIHZhbCA9IHsgMCwgfTsKLQotICAgIHN0cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVfY29weSAoZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgaSkpOwotCi0gICAgZ192YWx1ZV9pbml0ICgmbGlzdCwgR1NUX1RZUEVfTElTVCk7Ci0KLSAgICBnX3ZhbHVlX2luaXQgKCZ2YWwsIEdfVFlQRV9TVFJJTkcpOwotICAgIGdfdmFsdWVfc2V0X3N0cmluZyAoJnZhbCwgIkdSQVk4Iik7Ci0gICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJnZhbCk7Ci0gICAgZ192YWx1ZV91bnNldCAoJnZhbCk7Ci0KLSAgICBnX3ZhbHVlX2luaXQgKCZ2YWwsIEdfVFlQRV9TVFJJTkcpOwotI2lmIEdfQllURV9PUkRFUiA9PSBHX0JJR19FTkRJQU4KLSAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKCZ2YWwsICJHUkFZMTZfQkUiKTsKLSNlbHNlCi0gICAgZ192YWx1ZV9zZXRfc3RyaW5nICgmdmFsLCAiR1JBWTE2X0xFIik7Ci0jZW5kaWYKLSAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZsaXN0LCAmdmFsKTsKLSAgICBnX3ZhbHVlX3Vuc2V0ICgmdmFsKTsKLQotICAgIHYgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoc3RydWN0dXJlLCAiZm9ybWF0Iik7Ci0KLSAgICBnc3RfdmFsdWVfbGlzdF9tZXJnZSAoJnZhbCwgdiwgJmxpc3QpOwotICAgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzdHJ1Y3R1cmUsICJmb3JtYXQiLCAmdmFsKTsKLSAgICBnX3ZhbHVlX3Vuc2V0ICgmdmFsKTsKLSAgICBnX3ZhbHVlX3Vuc2V0ICgmbGlzdCk7Ci0KLSAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZCAoc3RydWN0dXJlLCAiY29sb3JpbWV0cnkiKTsKLSAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZCAoc3RydWN0dXJlLCAiY2hyb21hLXNpdGUiKTsKLQotICAgIGdzdF9jYXBzX2FwcGVuZF9zdHJ1Y3R1cmUgKHRvLCBzdHJ1Y3R1cmUpOwotCi0gIH0KLQotICAvKiBmaWx0ZXIgYWdhaW5zdCBzZXQgYWxsb3dlZCBjYXBzIG9uIHRoZSBwYWQgKi8KLSAgb3RoZXIgPSAoZGlyID09IEdTVF9QQURfU0lOSykgPyB0cmFucy0+c3JjcGFkIDogdHJhbnMtPnNpbmtwYWQ7Ci0gIHRlbXBsID0gZ3N0X3BhZF9nZXRfcGFkX3RlbXBsYXRlX2NhcHMgKG90aGVyKTsKLSAgcmV0ID0gZ3N0X2NhcHNfaW50ZXJzZWN0ICh0bywgdGVtcGwpOwotICBnc3RfY2Fwc191bnJlZiAodG8pOwotICBnc3RfY2Fwc191bnJlZiAodGVtcGwpOwotCi0gIGlmIChyZXQgJiYgZmlsdGVyKSB7Ci0gICAgR3N0Q2FwcyAqaW50ZXJzZWN0aW9uOwotCi0gICAgaW50ZXJzZWN0aW9uID0KLSAgICAgICAgZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGZpbHRlciwgcmV0LCBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOwotICAgIGdzdF9jYXBzX3VucmVmIChyZXQpOwotICAgIHJldCA9IGludGVyc2VjdGlvbjsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci0KLX0KLQogc3RhdGljIHZvaWQKIGdzdF9jdl9sYXBsYWNlX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQpAQCAtMjc3LDYgKzIyNCwxNSBAQAogICAgICAgICBmaWx0ZXItPmFwZXJ0dXJlX3NpemUgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKICAgICB9CiAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0NBTEU6CisgICAgICBmaWx0ZXItPnNjYWxlID0gZ192YWx1ZV9nZXRfZG91YmxlICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0hJRlQ6CisgICAgICBmaWx0ZXItPnNoaWZ0ID0gZ192YWx1ZV9nZXRfZG91YmxlICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUFTSzoKKyAgICAgIGZpbHRlci0+bWFzayA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CkBAIC0yOTMsMjIgKzI0OSw5MCBAQAogICAgIGNhc2UgUFJPUF9BUEVSVFVSRV9TSVpFOgogICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgZmlsdGVyLT5hcGVydHVyZV9zaXplKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TQ0FMRToKKyAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSAodmFsdWUsIGZpbHRlci0+c2NhbGUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NISUZUOgorICAgICAgZ192YWx1ZV9zZXRfZG91YmxlICh2YWx1ZSwgZmlsdGVyLT5zaGlmdCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUFTSzoKKyAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCBmaWx0ZXItPm1hc2spOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKICAgfQogfQogCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9jdl9sYXBsYWNlX2hhbmRsZV9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKKyAgICBHc3RFdmVudCAqIGV2ZW50KQoreworICBHc3RDdkxhcGxhY2UgKmZpbHRlcjsKKyAgZ2ludCB3aWR0aCwgaGVpZ2h0OworICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKKyAgZ2Jvb2xlYW4gcmVzID0gVFJVRTsKKworICBmaWx0ZXIgPSBHU1RfQ1ZfTEFQTEFDRSAocGFyZW50KTsKKworICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKKyAgICBjYXNlIEdTVF9FVkVOVF9DQVBTOgorICAgIHsKKyAgICAgIEdzdENhcHMgKmNhcHM7CisgICAgICBnc3RfZXZlbnRfcGFyc2VfY2FwcyAoZXZlbnQsICZjYXBzKTsKKworICAgICAgc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7CisgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKTsKKyAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhlaWdodCk7CisKKyAgICAgIGlmIChmaWx0ZXItPmludGVybWVkaWFyeV9pbWcgIT0gTlVMTCkgeworICAgICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+aW50ZXJtZWRpYXJ5X2ltZyk7CisgICAgICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5DTGFwbGFjZSk7CisgICAgICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkdyYXkpOworICAgICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+TGFwbGFjZSk7CisgICAgICB9CisKKyAgICAgIGZpbHRlci0+Q0xhcGxhY2UgPQorICAgICAgICAgIGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAod2lkdGgsIGhlaWdodCksIElQTF9ERVBUSF84VSwgMyk7CisgICAgICBmaWx0ZXItPmludGVybWVkaWFyeV9pbWcgPQorICAgICAgICAgIGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAod2lkdGgsIGhlaWdodCksIElQTF9ERVBUSF8xNlMsIDEpOworICAgICAgZmlsdGVyLT5jdkdyYXkgPSBjdkNyZWF0ZUltYWdlIChjdlNpemUgKHdpZHRoLCBoZWlnaHQpLCBJUExfREVQVEhfOFUsIDEpOworICAgICAgZmlsdGVyLT5MYXBsYWNlID0gY3ZDcmVhdGVJbWFnZSAoY3ZTaXplICh3aWR0aCwgaGVpZ2h0KSwgSVBMX0RFUFRIXzhVLCAxKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXMgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7CisKKyAgcmV0dXJuIHJlczsKK30KKwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9jdl9sYXBsYWNlX3RyYW5zZm9ybSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiBiYXNlLCBHc3RCdWZmZXIgKiBidWYsCiAgICAgSXBsSW1hZ2UgKiBpbWcsIEdzdEJ1ZmZlciAqIG91dGJ1ZiwgSXBsSW1hZ2UgKiBvdXRpbWcpCiB7CiAgIEdzdEN2TGFwbGFjZSAqZmlsdGVyID0gR1NUX0NWX0xBUExBQ0UgKGJhc2UpOworICBHc3RNYXBJbmZvIG91dF9pbmZvOwogCiAgIGdfYXNzZXJ0IChmaWx0ZXItPmludGVybWVkaWFyeV9pbWcpOwogCi0gIGN2TGFwbGFjZSAoaW1nLCBmaWx0ZXItPmludGVybWVkaWFyeV9pbWcsIGZpbHRlci0+YXBlcnR1cmVfc2l6ZSk7Ci0gIGN2Q29udmVydFNjYWxlIChmaWx0ZXItPmludGVybWVkaWFyeV9pbWcsIG91dGltZywgMSwgMCk7CisgIGN2Q3Z0Q29sb3IgKGltZywgZmlsdGVyLT5jdkdyYXksIENWX1JHQjJHUkFZKTsKKyAgY3ZMYXBsYWNlIChmaWx0ZXItPmN2R3JheSwgZmlsdGVyLT5pbnRlcm1lZGlhcnlfaW1nLCBmaWx0ZXItPmFwZXJ0dXJlX3NpemUpOworICBjdkNvbnZlcnRTY2FsZSAoZmlsdGVyLT5pbnRlcm1lZGlhcnlfaW1nLCBmaWx0ZXItPkxhcGxhY2UsIGZpbHRlci0+c2NhbGUsCisgICAgICBmaWx0ZXItPnNoaWZ0KTsKKworICBjdlplcm8gKGZpbHRlci0+Q0xhcGxhY2UpOworICBpZiAoZmlsdGVyLT5tYXNrKSB7CisgICAgY3ZDb3B5IChpbWcsIGZpbHRlci0+Q0xhcGxhY2UsIGZpbHRlci0+TGFwbGFjZSk7CisgIH0gZWxzZSB7CisgICAgY3ZDdnRDb2xvciAoZmlsdGVyLT5MYXBsYWNlLCBmaWx0ZXItPkNMYXBsYWNlLCBDVl9HUkFZMlJHQik7CisgIH0KKworICBnc3RfYnVmZmVyX21hcCAob3V0YnVmLCAmb3V0X2luZm8sIEdTVF9NQVBfV1JJVEUpOworICBtZW1jcHkgKG91dF9pbmZvLmRhdGEsIGZpbHRlci0+Q0xhcGxhY2UtPmltYWdlRGF0YSwKKyAgICAgIGdzdF9idWZmZXJfZ2V0X3NpemUgKG91dGJ1ZikpOwogCiAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmggYi9leHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5oCmluZGV4IDA5OGIzNDcuLjgyZjIzN2YgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmgKKysrIGIvZXh0L29wZW5jdi9nc3RjdmxhcGxhY2UuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBUaGlhZ28gU2FudG9zIDx0aGlhZ28uc291c2Euc2FudG9zQGNvbGxhYm9yYS5jby51az4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDQsOCArNDQsNiBAQAogI2lmbmRlZiBfX0dTVF9DVl9MQVBMQUNFX0hfXwogI2RlZmluZSBfX0dTVF9DVl9MQVBMQUNFX0hfXwogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCiAjaW5jbHVkZSA8Z3N0b3BlbmN2dmlkZW9maWx0ZXIuaD4KIAogR19CRUdJTl9ERUNMUwpAQCAtNzAsMTEgKzY4LDE3IEBACiAgIEdzdE9wZW5jdlZpZGVvRmlsdGVyIGVsZW1lbnQ7CiAKICAgZ2ludCBhcGVydHVyZV9zaXplOworICBnZG91YmxlIHNjYWxlOworICBnZG91YmxlIHNoaWZ0OworICBnYm9vbGVhbiBtYXNrOwogCiAgIElwbEltYWdlICppbnRlcm1lZGlhcnlfaW1nOworICBJcGxJbWFnZSAqY3ZHcmF5OworICBJcGxJbWFnZSAqTGFwbGFjZTsKKyAgSXBsSW1hZ2UgKkNMYXBsYWNlOwogfTsKIAotc3RydWN0IF9Hc3RDdkxhcGxhY2VDbGFzcyAKK3N0cnVjdCBfR3N0Q3ZMYXBsYWNlQ2xhc3MKIHsKICAgR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyBwYXJlbnRfY2xhc3M7CiB9OwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RjdnNtb290aC5jIGIvZXh0L29wZW5jdi9nc3RjdnNtb290aC5jcHAKc2ltaWxhcml0eSBpbmRleCA3OSUKcmVuYW1lIGZyb20gZXh0L29wZW5jdi9nc3RjdnNtb290aC5jCnJlbmFtZSB0byBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcAppbmRleCAxNjlmZDE2Li44NzE1NzM2IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGN2c21vb3RoLmMKKysrIGIvZXh0L29wZW5jdi9nc3RjdnNtb290aC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvLnNvdXNhLnNhbnRvc0Bjb2xsYWJvcmEuY28udWs+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQxLDE5ICs0MSwzMiBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtY3ZzbW9vdGgKKyAqCisgKiBTbW9vdGhzIHRoZSBpbWFnZSB1c2luZyB0aGVzIGN2U21vb3RoIE9wZW5DViBmdW5jdGlvbi4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgY3ZzbW9vdGggISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLworCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQogI2luY2x1ZGUgImdzdG9wZW5jdnV0aWxzLmgiCiAjaW5jbHVkZSAiZ3N0Y3ZzbW9vdGguaCIKLSNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CisjaW5jbHVkZSA8b3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2MuaHBwPgorCiAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9jdl9zbW9vdGhfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2N2X3Ntb290aF9kZWJ1ZwogCit1c2luZyBuYW1lc3BhY2UgY3Y7CiAvKiBGaWx0ZXIgc2lnbmFscyBhbmQgYXJncyAqLwogZW51bQogewpAQCAtODYsNyArOTksNiBAQAogICBzdGF0aWMgR1R5cGUgY3Zfc21vb3RoX3R5cGVfdHlwZSA9IDA7CiAKICAgc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgc21vb3RoX3R5cGVzW10gPSB7Ci0vKiAgICB7Q1ZfQkxVUl9OT19TQ0FMRSwgIkNWIEJsdXIgTm8gU2NhbGUiLCAiYmx1ci1uby1zY2FsZSJ9LCAqLwogICAgIHtDVl9CTFVSLCAiQ1YgQmx1ciIsICJibHVyIn0sCiAgICAge0NWX0dBVVNTSUFOLCAiQ1YgR2F1c3NpYW4iLCAiZ2F1c3NpYW4ifSwKICAgICB7Q1ZfTUVESUFOLCAiQ1YgTWVkaWFuIiwgIm1lZGlhbiJ9LApAQCAtMTAzLDcgKzExNSw3IEBACiAKICNkZWZpbmUgREVGQVVMVF9DVl9TTU9PVEhfVFlQRSBDVl9HQVVTU0lBTgogI2RlZmluZSBERUZBVUxUX1dJRFRIIDMKLSNkZWZpbmUgREVGQVVMVF9IRUlHSFQgMAorI2RlZmluZSBERUZBVUxUX0hFSUdIVCAzCiAjZGVmaW5lIERFRkFVTFRfQ09MT1JTSUdNQSAwLjAKICNkZWZpbmUgREVGQVVMVF9TUEFUSUFMU0lHTUEgMC4wCiAKQEAgLTExNiw4ICsxMjgsNiBAQAogCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfY3Zfc21vb3RoX3RyYW5zZm9ybV9pcCAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKgogICAgIGZpbHRlciwgR3N0QnVmZmVyICogYnVmLCBJcGxJbWFnZSAqIGltZyk7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfY3Zfc21vb3RoX3RyYW5zZm9ybSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiBmaWx0ZXIsCi0gICAgR3N0QnVmZmVyICogYnVmLCBJcGxJbWFnZSAqIGltZywgR3N0QnVmZmVyICogb3V0YnVmLCBJcGxJbWFnZSAqIG91dGltZyk7CiAKIC8qIGluaXRpYWxpemUgdGhlIGN2c21vb3RoJ3MgY2xhc3MgKi8KIHN0YXRpYyB2b2lkCkBAIC0xMzYsNDUgKzE0Niw0MSBAQAogICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfY3Zfc21vb3RoX2dldF9wcm9wZXJ0eTsKIAogICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzLT5jdl90cmFuc19pcF9mdW5jID0gZ3N0X2N2X3Ntb290aF90cmFuc2Zvcm1faXA7Ci0gIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MtPmN2X3RyYW5zX2Z1bmMgPSBnc3RfY3Zfc21vb3RoX3RyYW5zZm9ybTsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NNT09USF9UWVBFLAogICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJ0eXBlIiwKICAgICAgICAgICAidHlwZSIsCiAgICAgICAgICAgIlNtb290aCBUeXBlIiwKICAgICAgICAgICBHU1RfVFlQRV9DVl9TTU9PVEhfVFlQRSwKLSAgICAgICAgICBERUZBVUxUX0NWX1NNT09USF9UWVBFLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpCisgICAgICAgICAgREVGQVVMVF9DVl9TTU9PVEhfVFlQRSwKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKQogICAgICAgKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9XSURUSCwKLSAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJ3aWR0aCIsICJ3aWR0aCAoYXBlcnR1cmUgd2lkdGgpIiwKLSAgICAgICAgICAiVGhlIGFwZXJ0dXJlIHdpZHRoIChNdXN0IGJlIHBvc2l0aXZlIGFuZCBvZGQpLiIKLSAgICAgICAgICAiQ2hlY2sgY3ZTbW9vdGggT3BlbkNWIGRvY3M6IGh0dHA6Ly9vcGVuY3Yud2lsbG93Z2FyYWdlLmNvbSIKLSAgICAgICAgICAiL2RvY3VtZW50YXRpb24vaW1hZ2VfZmlsdGVyaW5nLmh0bWwjY3ZTbW9vdGgiLCAxLCBHX01BWElOVCwKLSAgICAgICAgICBERUZBVUxUX1dJRFRILCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJ3aWR0aCIsICJ3aWR0aCAoa2VybmVsIHdpZHRoKSIsCisgICAgICAgICAgIlRoZSBnYXVzc2lhbiBrZXJuZWwgd2lkdGggKG11c3QgYmUgcG9zaXRpdmUgYW5kIG9kZCkuIgorICAgICAgICAgICJJZiB0eXBlIGlzIG1lZGlhbiwgdGhpcyBtZWFucyB0aGUgYXBlcnR1cmUgbGluZWFyIHNpemUuIgorICAgICAgICAgICJDaGVjayBPcGVuQ1YgZG9jczogaHR0cDovL2RvY3Mub3BlbmN2Lm9yZyIKKyAgICAgICAgICAiLzIuNC9tb2R1bGVzL2ltZ3Byb2MvZG9jL2ZpbHRlcmluZy5odG0iLAorICAgICAgICAgIDEsIEdfTUFYSU5ULCBERUZBVUxUX1dJRFRILAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9IRUlHSFQsCi0gICAgICBnX3BhcmFtX3NwZWNfaW50ICgiaGVpZ2h0IiwgImhlaWdodCAoYXBlcnR1cmUgaGVpZ2h0KSIsCi0gICAgICAgICAgIlRoZSBhcGVydHVyZSBoZWlnaHQsIGlmIHplcm8sIHRoZSB3aWR0aCBpcyB1c2VkLiIKLSAgICAgICAgICAiKE11c3QgYmUgcG9zaXRpdmUgYW5kIG9kZCBvciB6ZXJvLCB1bnVzZXQgaW4gbWVkaWFuIGFuZCBiaWxhdGVyYWwgIgotICAgICAgICAgICJ0eXBlcykuIENoZWNrIGN2U21vb3RoIE9wZW5DViBkb2NzOiBodHRwOi8vb3BlbmN2LndpbGxvd2dhcmFnZS5jb20iCi0gICAgICAgICAgIi9kb2N1bWVudGF0aW9uL2ltYWdlX2ZpbHRlcmluZy5odG1sI2N2U21vb3RoIiwgMCwgR19NQVhJTlQsCi0gICAgICAgICAgREVGQVVMVF9IRUlHSFQsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImhlaWdodCIsICJoZWlnaHQgKGtlcm5lbCBoZWlnaHQpIiwKKyAgICAgICAgICAiVGhlIGdhdXNzaWFuIGtlcm5lbCBoZWlnaHQgKG11c3QgYmUgcG9zaXRpdmUgYW5kIG9kZCkuIiwKKyAgICAgICAgICAwLCBHX01BWElOVCwgREVGQVVMVF9IRUlHSFQsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0NPTE9SU0lHTUEsCiAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiY29sb3IiLCAiY29sb3IgKGdhdXNzaWFuIHN0YW5kYXJkIGRldmlhdGlvbiBvciAiCiAgICAgICAgICAgImNvbG9yIHNpZ21hIiwKICAgICAgICAgICAiSWYgdHlwZSBpcyBnYXVzc2lhbiwgdGhpcyBtZWFucyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uLiIKICAgICAgICAgICAiSWYgdHlwZSBpcyBiaWxhdGVyYWwsIHRoaXMgbWVhbnMgdGhlIGNvbG9yLXNpZ21hLiBJZiB6ZXJvLCAiCi0gICAgICAgICAgIkRlZmF1bHQgdmFsdWVzIGFyZSB1c2VkLiIKLSAgICAgICAgICAiQ2hlY2sgY3ZTbW9vdGggT3BlbkNWIGRvY3M6IGh0dHA6Ly9vcGVuY3Yud2lsbG93Z2FyYWdlLmNvbSIKLSAgICAgICAgICAiL2RvY3VtZW50YXRpb24vaW1hZ2VfZmlsdGVyaW5nLmh0bWwjY3ZTbW9vdGgiLAorICAgICAgICAgICJEZWZhdWx0IHZhbHVlcyBhcmUgdXNlZC4iLAogICAgICAgICAgIDAsIEdfTUFYRE9VQkxFLCBERUZBVUxUX0NPTE9SU0lHTUEsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NQQVRJQUxTSUdNQSwKICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJzcGF0aWFsIiwgInNwYXRpYWwgKHNwYXRpYWwgc2lnbWEsIGJpbGF0ZXJhbCBvbmx5KSIsCi0gICAgICAgICAgIk9ubHkgdXNlZCBpbiBiaWxhdGVyYWwgdHlwZSwgbWVhbnMgdGhlIHNwYXRpYWwtc2lnbWEuIgotICAgICAgICAgICJDaGVjayBjdlNtb290aCBPcGVuQ1YgZG9jczogaHR0cDovL29wZW5jdi53aWxsb3dnYXJhZ2UuY29tIgotICAgICAgICAgICIvZG9jdW1lbnRhdGlvbi9pbWFnZV9maWx0ZXJpbmcuaHRtbCNjdlNtb290aCIsCisgICAgICAgICAgIk9ubHkgdXNlZCBpbiBiaWxhdGVyYWwgdHlwZSwgbWVhbnMgdGhlIHNwYXRpYWwtc2lnbWEuIiwKICAgICAgICAgICAwLCBHX01BWERPVUJMRSwgREVGQVVMVF9TUEFUSUFMU0lHTUEsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCiAgICAgICAiY3ZzbW9vdGgiLApAQCAtMjA2LDcgKzIxMiw4IEBACiAgIGZpbHRlci0+Y29sb3JzaWdtYSA9IERFRkFVTFRfQ09MT1JTSUdNQTsKICAgZmlsdGVyLT5zcGF0aWFsc2lnbWEgPSBERUZBVUxUX1NQQVRJQUxTSUdNQTsKIAotICBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X2luX3BsYWNlIChHU1RfQkFTRV9UUkFOU0ZPUk0gKGZpbHRlciksIEZBTFNFKTsKKyAgZ3N0X29wZW5jdl92aWRlb19maWx0ZXJfc2V0X2luX3BsYWNlIChHU1RfT1BFTkNWX1ZJREVPX0ZJTFRFUl9DQVNUIChmaWx0ZXIpLAorICAgICAgVFJVRSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yMjAsMTAgKzIyNywxMiBAQAogICBzd2l0Y2ggKHZhbHVlKSB7CiAgICAgY2FzZSBDVl9HQVVTU0lBTjoKICAgICBjYXNlIENWX0JMVVI6Ci0gICAgICBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X2luX3BsYWNlIChHU1RfQkFTRV9UUkFOU0ZPUk0gKGZpbHRlciksIFRSVUUpOworICAgICAgZ3N0X29wZW5jdl92aWRlb19maWx0ZXJfc2V0X2luX3BsYWNlIChHU1RfT1BFTkNWX1ZJREVPX0ZJTFRFUl9DQVNUCisgICAgICAgICAgKGZpbHRlciksIFRSVUUpOwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgIGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfaW5fcGxhY2UgKEdTVF9CQVNFX1RSQU5TRk9STSAoZmlsdGVyKSwgRkFMU0UpOworICAgICAgZ3N0X29wZW5jdl92aWRlb19maWx0ZXJfc2V0X2luX3BsYWNlIChHU1RfT1BFTkNWX1ZJREVPX0ZJTFRFUl9DQVNUCisgICAgICAgICAgKGZpbHRlciksIEZBTFNFKTsKICAgICAgIGJyZWFrOwogICB9CiB9CkBAIC0yNTIsNyArMjYxLDcgQEAKICAgICBjYXNlIFBST1BfSEVJR0hUOnsKICAgICAgIGdpbnQgcHJvcCA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOwogCi0gICAgICBpZiAocHJvcCAlIDIgPT0gMSB8fCBwcm9wID09IDApIHsKKyAgICAgIGlmIChwcm9wICUgMiA9PSAxKSB7CiAgICAgICAgIGZpbHRlci0+aGVpZ2h0ID0gcHJvcDsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZmlsdGVyLCAiSWdub3JpbmcgdmFsdWUgZm9yIGhlaWdodCwgbm90IG9kZCIKQEAgLTMwMSwyNSArMzEwLDI5IEBACiB9CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfY3Zfc21vb3RoX3RyYW5zZm9ybSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiBiYXNlLCBHc3RCdWZmZXIgKiBidWYsCi0gICAgSXBsSW1hZ2UgKiBpbWcsIEdzdEJ1ZmZlciAqIG91dGJ1ZiwgSXBsSW1hZ2UgKiBvdXRpbWcpCi17Ci0gIEdzdEN2U21vb3RoICpmaWx0ZXIgPSBHU1RfQ1ZfU01PT1RIIChiYXNlKTsKLQotICBjdlNtb290aCAoaW1nLCBvdXRpbWcsIGZpbHRlci0+dHlwZSwgZmlsdGVyLT53aWR0aCwgZmlsdGVyLT5oZWlnaHQsCi0gICAgICBmaWx0ZXItPmNvbG9yc2lnbWEsIGZpbHRlci0+c3BhdGlhbHNpZ21hKTsKLQotICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfY3Zfc21vb3RoX3RyYW5zZm9ybV9pcCAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiBiYXNlLCBHc3RCdWZmZXIgKiBidWYsCiAgICAgSXBsSW1hZ2UgKiBpbWcpCiB7CiAgIEdzdEN2U21vb3RoICpmaWx0ZXIgPSBHU1RfQ1ZfU01PT1RIIChiYXNlKTsKIAotICBjdlNtb290aCAoaW1nLCBpbWcsIGZpbHRlci0+dHlwZSwgZmlsdGVyLT53aWR0aCwgZmlsdGVyLT5oZWlnaHQsCi0gICAgICBmaWx0ZXItPmNvbG9yc2lnbWEsIGZpbHRlci0+c3BhdGlhbHNpZ21hKTsKKyAgc3dpdGNoIChmaWx0ZXItPnR5cGUpIHsKKyAgICBjYXNlIENWX0JMVVI6CisgICAgICBibHVyIChNYXQgKGltZyksIE1hdCAoaW1nKSwgU2l6ZSAoZmlsdGVyLT53aWR0aCwgZmlsdGVyLT5oZWlnaHQpLAorICAgICAgICAgIFBvaW50ICgtMSwgLTEpKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQ1ZfR0FVU1NJQU46CisgICAgICBHYXVzc2lhbkJsdXIgKE1hdCAoaW1nKSwgTWF0IChpbWcpLCBTaXplIChmaWx0ZXItPndpZHRoLCBmaWx0ZXItPmhlaWdodCksCisgICAgICAgICAgZmlsdGVyLT5jb2xvcnNpZ21hLCBmaWx0ZXItPmNvbG9yc2lnbWEpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBDVl9NRURJQU46CisgICAgICBtZWRpYW5CbHVyIChNYXQgKGltZyksIE1hdCAoaW1nKSwgZmlsdGVyLT53aWR0aCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIENWX0JJTEFURVJBTDoKKyAgICAgIGJpbGF0ZXJhbEZpbHRlciAoTWF0IChpbWcpLCBNYXQgKGltZyksIC0xLCBmaWx0ZXItPmNvbG9yc2lnbWEsIDAuMCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KIAogICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGN2c21vb3RoLmggYi9leHQvb3BlbmN2L2dzdGN2c21vb3RoLmgKaW5kZXggYzNlNTE2NC4uN2M3NGZiZCAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RjdnNtb290aC5oCisrKyBiL2V4dC9vcGVuY3YvZ3N0Y3ZzbW9vdGguaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBUaGlhZ28gU2FudG9zIDx0aGlhZ28uc291c2Euc2FudG9zQGNvbGxhYm9yYS5jby51az4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDQsOCArNDQsNiBAQAogI2lmbmRlZiBfX0dTVF9DVl9TTU9PVEhfSF9fCiAjZGVmaW5lIF9fR1NUX0NWX1NNT09USF9IX18KIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQogI2luY2x1ZGUgPGdzdG9wZW5jdnZpZGVvZmlsdGVyLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTc3LDcgKzc1LDcgQEAKICAgZ2RvdWJsZSBzcGF0aWFsc2lnbWE7CiB9OwogCi1zdHJ1Y3QgX0dzdEN2U21vb3RoQ2xhc3MgCitzdHJ1Y3QgX0dzdEN2U21vb3RoQ2xhc3MKIHsKICAgR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyBwYXJlbnRfY2xhc3M7CiB9OwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RjdnNvYmVsLmMgYi9leHQvb3BlbmN2L2dzdGN2c29iZWwuY3BwCnNpbWlsYXJpdHkgaW5kZXggNjAlCnJlbmFtZSBmcm9tIGV4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5jCnJlbmFtZSB0byBleHQvb3BlbmN2L2dzdGN2c29iZWwuY3BwCmluZGV4IDFkOWIxNTEuLmQ1YzllZjcgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5jCisrKyBiL2V4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvLnNvdXNhLnNhbnRvc0Bjb2xsYWJvcmEuY28udWs+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQxLDEzICs0MSwyMyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtY3Zzb2JlbAorICoKKyAqIEFwcGxpZXMgdGhlIGN2U29iZWwgT3BlbkNWIGZ1bmN0aW9uIHRvIHRoZSBpbWFnZS4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgY3Zzb2JlbCAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCisKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi0jaW5jbHVkZSAiZ3N0b3BlbmN2dXRpbHMuaCIKICNpbmNsdWRlICJnc3RjdnNvYmVsLmgiCiAjaW5jbHVkZSA8b3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2NfYy5oPgogCkBAIC01NywyMyArNjcsMTQgQEAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rX2ZhY3RvcnkgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAogICAgIEdTVF9QQURfU0lOSywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJHUkFZOCIpKQorICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoIlJHQiIpKQogICAgICk7CiAKLQotI2lmIEdfQllURV9PUkRFUiA9PSBHX0JJR19FTkRJQU4KIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNfZmFjdG9yeSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKICAgICBHU1RfUEFEX1NSQywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJHUkFZMTZfQkUiKSkKKyAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJSR0IiKSkKICAgICApOwotI2Vsc2UKLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNfZmFjdG9yeSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKLSAgICBHU1RfUEFEX1NSQywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJHUkFZMTZfTEUiKSkKLSAgICApOwotI2VuZGlmCiAKIC8qIEZpbHRlciBzaWduYWxzIGFuZCBhcmdzICovCiBlbnVtCkBAIC04NiwxMiArODcsMTQgQEAKICAgUFJPUF8wLAogICBQUk9QX1hfT1JERVIsCiAgIFBST1BfWV9PUkRFUiwKLSAgUFJPUF9BUEVSVFVSRV9TSVpFCisgIFBST1BfQVBFUlRVUkVfU0laRSwKKyAgUFJPUF9NQVNLCiB9OwogCiAjZGVmaW5lIERFRkFVTFRfWF9PUkRFUiAxCiAjZGVmaW5lIERFRkFVTFRfWV9PUkRFUiAwCiAjZGVmaW5lIERFRkFVTFRfQVBFUlRVUkVfU0laRSAzCisjZGVmaW5lIERFRkFVTFRfTUFTSyBUUlVFCiAKIEdfREVGSU5FX1RZUEUgKEdzdEN2U29iZWwsIGdzdF9jdl9zb2JlbCwgR1NUX1RZUEVfT1BFTkNWX1ZJREVPX0ZJTFRFUik7CiAKQEAgLTEwMCw0NCArMTAzLDY1IEBACiBzdGF0aWMgdm9pZCBnc3RfY3Zfc29iZWxfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAogICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwogCi1zdGF0aWMgR3N0Q2FwcyAqZ3N0X2N2X3NvYmVsX3RyYW5zZm9ybV9jYXBzIChHc3RCYXNlVHJhbnNmb3JtICogdHJhbnMsCi0gICAgR3N0UGFkRGlyZWN0aW9uIGRpciwgR3N0Q2FwcyAqIGNhcHMsIEdzdENhcHMgKiBmaWx0ZXIpOwotCitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2N2X3NvYmVsX2hhbmRsZV9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsCisgICAgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9jdl9zb2JlbF90cmFuc2Zvcm0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogZmlsdGVyLAogICAgIEdzdEJ1ZmZlciAqIGJ1ZiwgSXBsSW1hZ2UgKiBpbWcsIEdzdEJ1ZmZlciAqIG91dGJ1ZiwgSXBsSW1hZ2UgKiBvdXRpbWcpOworc3RhdGljIGdib29sZWFuIGdzdF9jdl9zb2JlbF9zZXRfY2FwcyAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiB0cmFuc2Zvcm0sCisgICAgZ2ludCBpbl93aWR0aCwgZ2ludCBpbl9oZWlnaHQsIGdpbnQgaW5fZGVwdGgsIGdpbnQgaW5fY2hhbm5lbHMsCisgICAgZ2ludCBvdXRfd2lkdGgsIGdpbnQgb3V0X2hlaWdodCwgZ2ludCBvdXRfZGVwdGgsIGdpbnQgb3V0X2NoYW5uZWxzKTsKKworLyogQ2xlYW4gdXAgKi8KK3N0YXRpYyB2b2lkCitnc3RfY3Zfc29iZWxfZmluYWxpemUgKEdPYmplY3QgKiBvYmopCit7CisgIEdzdEN2U29iZWwgKmZpbHRlciA9IEdTVF9DVl9TT0JFTCAob2JqKTsKKworICBpZiAoZmlsdGVyLT5jdlNvYmVsICE9IE5VTEwpIHsKKyAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZDU29iZWwpOworICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkdyYXkpOworICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdlNvYmVsKTsKKyAgfQorCisgIEdfT0JKRUNUX0NMQVNTIChnc3RfY3Zfc29iZWxfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iaik7Cit9CiAKIC8qIGluaXRpYWxpemUgdGhlIGN2c29iZWwncyBjbGFzcyAqLwogc3RhdGljIHZvaWQKIGdzdF9jdl9zb2JlbF9jbGFzc19pbml0IChHc3RDdlNvYmVsQ2xhc3MgKiBrbGFzcykKIHsKICAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOwotICBHc3RCYXNlVHJhbnNmb3JtQ2xhc3MgKmdzdGJhc2V0cmFuc2Zvcm1fY2xhc3M7CiAgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgKmdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3M7CiAKICAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKICAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7Ci0gIGdzdGJhc2V0cmFuc2Zvcm1fY2xhc3MgPSAoR3N0QmFzZVRyYW5zZm9ybUNsYXNzICopIGtsYXNzOwogICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzID0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgKikga2xhc3M7CiAKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2N2X3NvYmVsX2ZpbmFsaXplKTsKICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2N2X3NvYmVsX3NldF9wcm9wZXJ0eTsKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2N2X3NvYmVsX2dldF9wcm9wZXJ0eTsKIAotICBnc3RiYXNldHJhbnNmb3JtX2NsYXNzLT50cmFuc2Zvcm1fY2FwcyA9IGdzdF9jdl9zb2JlbF90cmFuc2Zvcm1fY2FwczsKLQogICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzLT5jdl90cmFuc19mdW5jID0gZ3N0X2N2X3NvYmVsX3RyYW5zZm9ybTsKKyAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcy0+Y3Zfc2V0X2NhcHMgPSBnc3RfY3Zfc29iZWxfc2V0X2NhcHM7CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9YX09SREVSLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIngtb3JkZXIiLCAieCBvcmRlciIsCiAgICAgICAgICAgIk9yZGVyIG9mIHRoZSBkZXJpdmF0aXZlIHgiLCAtMSwgR19NQVhJTlQsCi0gICAgICAgICAgREVGQVVMVF9YX09SREVSLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICBERUZBVUxUX1hfT1JERVIsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1lfT1JERVIsCi0gICAgICBnX3BhcmFtX3NwZWNfaW50ICgieS1vcmRlciIsICJ5IG9yZGVyIiwKLSAgICAgICAgICAiT3JkZXIgb2YgdGhlIGRlcml2YXRpdmUgeSIsIC0xLCBHX01BWElOVCwKLSAgICAgICAgICBERUZBVUxUX1lfT1JERVIsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgZ19wYXJhbV9zcGVjX2ludCAoInktb3JkZXIiLCAieSBvcmRlciIsICJPcmRlciBvZiB0aGUgZGVyaXZhdGl2ZSB5IiwgLTEsCisgICAgICAgICAgR19NQVhJTlQsIERFRkFVTFRfWV9PUkRFUiwKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQVBFUlRVUkVfU0laRSwKICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJhcGVydHVyZS1zaXplIiwgImFwZXJ0dXJlIHNpemUiLAogICAgICAgICAgICJTaXplIG9mIHRoZSBleHRlbmRlZCBTb2JlbCBLZXJuZWwgKDEsIDMsIDUgb3IgNykiLCAxLCA3LAotICAgICAgICAgIERFRkFVTFRfQVBFUlRVUkVfU0laRSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgREVGQVVMVF9BUEVSVFVSRV9TSVpFLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NQVNLLAorICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJtYXNrIiwgIk1hc2siLAorICAgICAgICAgICJTZXRzIHdoZXRoZXIgdGhlIGRldGVjdGVkIGRlcml2YXRpdmUgZWRnZXMgc2hvdWxkIGJlIHVzZWQgYXMgYSBtYXNrIG9uIHRoZSBvcmlnaW5hbCBpbnB1dCBvciBub3QiLAorICAgICAgICAgIERFRkFVTFRfTUFTSywgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCiAgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzcmNfZmFjdG9yeSkpOwpAQCAtMTU0LDc4ICsxNzgsNzQgQEAKIHN0YXRpYyB2b2lkCiBnc3RfY3Zfc29iZWxfaW5pdCAoR3N0Q3ZTb2JlbCAqIGZpbHRlcikKIHsKKyAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKEdTVF9CQVNFX1RSQU5TRk9STV9TSU5LX1BBRCAoZmlsdGVyKSwKKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfY3Zfc29iZWxfaGFuZGxlX3NpbmtfZXZlbnQpKTsKKwogICBmaWx0ZXItPnhfb3JkZXIgPSBERUZBVUxUX1hfT1JERVI7CiAgIGZpbHRlci0+eV9vcmRlciA9IERFRkFVTFRfWV9PUkRFUjsKICAgZmlsdGVyLT5hcGVydHVyZV9zaXplID0gREVGQVVMVF9BUEVSVFVSRV9TSVpFOworICBmaWx0ZXItPm1hc2sgPSBERUZBVUxUX01BU0s7CiAKLSAgZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9pbl9wbGFjZSAoR1NUX0JBU0VfVFJBTlNGT1JNIChmaWx0ZXIpLCBGQUxTRSk7CisgIGdzdF9vcGVuY3ZfdmlkZW9fZmlsdGVyX3NldF9pbl9wbGFjZSAoR1NUX09QRU5DVl9WSURFT19GSUxURVJfQ0FTVCAoZmlsdGVyKSwKKyAgICAgIEZBTFNFKTsKIH0KIAotc3RhdGljIEdzdENhcHMgKgotZ3N0X2N2X3NvYmVsX3RyYW5zZm9ybV9jYXBzIChHc3RCYXNlVHJhbnNmb3JtICogdHJhbnMsIEdzdFBhZERpcmVjdGlvbiBkaXIsCi0gICAgR3N0Q2FwcyAqIGNhcHMsIEdzdENhcHMgKiBmaWx0ZXIpCisvKiB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGxpbmsgd2l0aCBvdGhlciBlbGVtZW50cyAqLworc3RhdGljIGdib29sZWFuCitnc3RfY3Zfc29iZWxfc2V0X2NhcHMgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogdHJhbnNmb3JtLAorICAgIGdpbnQgaW5fd2lkdGgsIGdpbnQgaW5faGVpZ2h0LCBnaW50IGluX2RlcHRoLCBnaW50IGluX2NoYW5uZWxzLAorICAgIGdpbnQgb3V0X3dpZHRoLCBnaW50IG91dF9oZWlnaHQsIGdpbnQgb3V0X2RlcHRoLCBnaW50IG91dF9jaGFubmVscykKIHsKLSAgR3N0Q2FwcyAqdG8sICpyZXQ7Ci0gIEdzdENhcHMgKnRlbXBsOworICBHc3RDdlNvYmVsICpmaWx0ZXIgPSBHU1RfQ1ZfU09CRUwgKHRyYW5zZm9ybSk7CisKKyAgaWYgKGZpbHRlci0+Y3ZHcmF5KQorICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkdyYXkpOworCisgIGZpbHRlci0+Y3ZHcmF5ID0KKyAgICAgIGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAoaW5fd2lkdGgsIGluX2hlaWdodCksIElQTF9ERVBUSF84VSwgMSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2N2X3NvYmVsX2hhbmRsZV9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKKyAgICBHc3RFdmVudCAqIGV2ZW50KQoreworICBHc3RDdlNvYmVsICpmaWx0ZXI7CisgIGdpbnQgd2lkdGgsIGhlaWdodDsKICAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmU7Ci0gIEdzdFBhZCAqb3RoZXI7Ci0gIGdpbnQgaTsKKyAgZ2Jvb2xlYW4gcmVzID0gVFJVRTsKIAotICB0byA9IGdzdF9jYXBzX25ld19lbXB0eSAoKTsKKyAgZmlsdGVyID0gR1NUX0NWX1NPQkVMIChwYXJlbnQpOwogCi0gIGZvciAoaSA9IDA7IGkgPCBnc3RfY2Fwc19nZXRfc2l6ZSAoY2Fwcyk7IGkrKykgewotICAgIGNvbnN0IEdWYWx1ZSAqdjsKLSAgICBHVmFsdWUgbGlzdCA9IHsgMCwgfTsKLSAgICBHVmFsdWUgdmFsID0geyAwLCB9OworICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKKyAgICBjYXNlIEdTVF9FVkVOVF9DQVBTOgorICAgIHsKKyAgICAgIEdzdENhcHMgKmNhcHM7CisgICAgICBnc3RfZXZlbnRfcGFyc2VfY2FwcyAoZXZlbnQsICZjYXBzKTsKIAotICAgIHN0cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVfY29weSAoZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgaSkpOworICAgICAgc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7CisgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKTsKKyAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhlaWdodCk7CiAKLSAgICBnX3ZhbHVlX2luaXQgKCZsaXN0LCBHU1RfVFlQRV9MSVNUKTsKKyAgICAgIGlmIChmaWx0ZXItPmN2U29iZWwgIT0gTlVMTCkgeworICAgICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZDU29iZWwpOworICAgICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZHcmF5KTsKKyAgICAgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2U29iZWwpOworICAgICAgfQogCi0gICAgZ192YWx1ZV9pbml0ICgmdmFsLCBHX1RZUEVfU1RSSU5HKTsKLSAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKCZ2YWwsICJHUkFZOCIpOwotICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmxpc3QsICZ2YWwpOwotICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWwpOwotCi0gICAgZ192YWx1ZV9pbml0ICgmdmFsLCBHX1RZUEVfU1RSSU5HKTsKLSNpZiBHX0JZVEVfT1JERVIgPT0gR19CSUdfRU5ESUFOCi0gICAgZ192YWx1ZV9zZXRfc3RyaW5nICgmdmFsLCAiR1JBWTE2X0JFIik7Ci0jZWxzZQotICAgIGdfdmFsdWVfc2V0X3N0cmluZyAoJnZhbCwgIkdSQVkxNl9MRSIpOwotI2VuZGlmCi0gICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJnZhbCk7Ci0gICAgZ192YWx1ZV91bnNldCAoJnZhbCk7Ci0KLSAgICB2ID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHN0cnVjdHVyZSwgImZvcm1hdCIpOwotCi0gICAgZ3N0X3ZhbHVlX2xpc3RfbWVyZ2UgKCZ2YWwsIHYsICZsaXN0KTsKLSAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAoc3RydWN0dXJlLCAiZm9ybWF0IiwgJnZhbCk7Ci0gICAgZ192YWx1ZV91bnNldCAoJnZhbCk7Ci0gICAgZ192YWx1ZV91bnNldCAoJmxpc3QpOwotCi0gICAgZ3N0X3N0cnVjdHVyZV9yZW1vdmVfZmllbGQgKHN0cnVjdHVyZSwgImNvbG9yaW1ldHJ5Iik7Ci0gICAgZ3N0X3N0cnVjdHVyZV9yZW1vdmVfZmllbGQgKHN0cnVjdHVyZSwgImNocm9tYS1zaXRlIik7Ci0KLSAgICBnc3RfY2Fwc19hcHBlbmRfc3RydWN0dXJlICh0bywgc3RydWN0dXJlKTsKLQotICB9Ci0gIC8qIGZpbHRlciBhZ2FpbnN0IHNldCBhbGxvd2VkIGNhcHMgb24gdGhlIHBhZCAqLwotICBvdGhlciA9IChkaXIgPT0gR1NUX1BBRF9TSU5LKSA/IHRyYW5zLT5zcmNwYWQgOiB0cmFucy0+c2lua3BhZDsKLSAgdGVtcGwgPSBnc3RfcGFkX2dldF9wYWRfdGVtcGxhdGVfY2FwcyAob3RoZXIpOwotICByZXQgPSBnc3RfY2Fwc19pbnRlcnNlY3QgKHRvLCB0ZW1wbCk7Ci0gIGdzdF9jYXBzX3VucmVmICh0byk7Ci0gIGdzdF9jYXBzX3VucmVmICh0ZW1wbCk7Ci0KLSAgaWYgKHJldCAmJiBmaWx0ZXIpIHsKLSAgICBHc3RDYXBzICppbnRlcnNlY3Rpb247Ci0KLSAgICBpbnRlcnNlY3Rpb24gPQotICAgICAgICBnc3RfY2Fwc19pbnRlcnNlY3RfZnVsbCAoZmlsdGVyLCByZXQsIEdTVF9DQVBTX0lOVEVSU0VDVF9GSVJTVCk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYgKHJldCk7Ci0gICAgcmV0ID0gaW50ZXJzZWN0aW9uOworICAgICAgZmlsdGVyLT5jdkNTb2JlbCA9IGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAod2lkdGgsIGhlaWdodCksIElQTF9ERVBUSF84VSwgMyk7CisgICAgICBmaWx0ZXItPmN2R3JheSA9IGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAod2lkdGgsIGhlaWdodCksIElQTF9ERVBUSF84VSwgMSk7CisgICAgICBmaWx0ZXItPmN2U29iZWwgPSBjdkNyZWF0ZUltYWdlIChjdlNpemUgKHdpZHRoLCBoZWlnaHQpLCBJUExfREVQVEhfOFUsIDEpOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKICAgfQogCi0gIHJldHVybiByZXQ7CisgIHJlcyA9IGdzdF9wYWRfZXZlbnRfZGVmYXVsdCAocGFkLCBwYXJlbnQsIGV2ZW50KTsKKworICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjUwLDYgKzI3MCw5IEBACiAgICAgICAgIGZpbHRlci0+YXBlcnR1cmVfc2l6ZSA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOwogICAgIH0KICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NQVNLOgorICAgICAgZmlsdGVyLT5tYXNrID0gZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKQEAgLTI3Miw2ICsyOTUsOSBAQAogICAgIGNhc2UgUFJPUF9BUEVSVFVSRV9TSVpFOgogICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgZmlsdGVyLT5hcGVydHVyZV9zaXplKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NQVNLOgorICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIGZpbHRlci0+bWFzayk7CisgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgIGJyZWFrOwpAQCAtMjgzLDEwICszMDksMjMgQEAKICAgICBJcGxJbWFnZSAqIGltZywgR3N0QnVmZmVyICogb3V0YnVmLCBJcGxJbWFnZSAqIG91dGltZykKIHsKICAgR3N0Q3ZTb2JlbCAqZmlsdGVyID0gR1NUX0NWX1NPQkVMIChiYXNlKTsKKyAgR3N0TWFwSW5mbyBvdXRfaW5mbzsKIAotICBjdlNvYmVsIChpbWcsIG91dGltZywgZmlsdGVyLT54X29yZGVyLCBmaWx0ZXItPnlfb3JkZXIsCisgIGN2Q3Z0Q29sb3IgKGltZywgZmlsdGVyLT5jdkdyYXksIENWX1JHQjJHUkFZKTsKKyAgY3ZTb2JlbCAoZmlsdGVyLT5jdkdyYXksIGZpbHRlci0+Y3ZTb2JlbCwgZmlsdGVyLT54X29yZGVyLCBmaWx0ZXItPnlfb3JkZXIsCiAgICAgICBmaWx0ZXItPmFwZXJ0dXJlX3NpemUpOwogCisgIGN2WmVybyAoZmlsdGVyLT5jdkNTb2JlbCk7CisgIGlmIChmaWx0ZXItPm1hc2spIHsKKyAgICBjdkNvcHkgKGltZywgZmlsdGVyLT5jdkNTb2JlbCwgZmlsdGVyLT5jdlNvYmVsKTsKKyAgfSBlbHNlIHsKKyAgICBjdkN2dENvbG9yIChmaWx0ZXItPmN2U29iZWwsIGZpbHRlci0+Y3ZDU29iZWwsIENWX0dSQVkyUkdCKTsKKyAgfQorCisgIGdzdF9idWZmZXJfbWFwIChvdXRidWYsICZvdXRfaW5mbywgR1NUX01BUF9XUklURSk7CisgIG1lbWNweSAob3V0X2luZm8uZGF0YSwgZmlsdGVyLT5jdkNTb2JlbC0+aW1hZ2VEYXRhLAorICAgICAgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAob3V0YnVmKSk7CisKICAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQogCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGN2c29iZWwuaCBiL2V4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5oCmluZGV4IGM2NzE5YTAuLjYyY2FiYWIgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5oCisrKyBiL2V4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRoaWFnbyBTYW50b3MgPHRoaWFnby5zb3VzYS5zYW50b3NAY29sbGFib3JhLmNvLnVrPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00NCw4ICs0NCw2IEBACiAjaWZuZGVmIF9fR1NUX0NWX1NPQkVMX0hfXwogI2RlZmluZSBfX0dTVF9DVl9TT0JFTF9IX18KIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQogI2luY2x1ZGUgPGdzdG9wZW5jdnZpZGVvZmlsdGVyLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTcyLDkgKzcwLDE0IEBACiAgIGdpbnQgeF9vcmRlcjsKICAgZ2ludCB5X29yZGVyOwogICBnaW50IGFwZXJ0dXJlX3NpemU7CisgIGdib29sZWFuIG1hc2s7CisKKyAgSXBsSW1hZ2UgKmN2Q1NvYmVsOworICBJcGxJbWFnZSAqY3ZHcmF5OworICBJcGxJbWFnZSAqY3ZTb2JlbDsKIH07CiAKLXN0cnVjdCBfR3N0Q3ZTb2JlbENsYXNzIAorc3RydWN0IF9Hc3RDdlNvYmVsQ2xhc3MKIHsKICAgR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyBwYXJlbnRfY2xhc3M7CiB9OwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RkaXNwYXJpdHkuY3BwIGIvZXh0L29wZW5jdi9nc3RkaXNwYXJpdHkuY3BwCmluZGV4IGYzZjlkNjQuLjNjYTkwMTUgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0ZGlzcGFyaXR5LmNwcAorKysgYi9leHQvb3BlbmN2L2dzdGRpc3Bhcml0eS5jcHAKQEAgLTUzLDMyICs1MywzMiBAQAogICogcnVuIHByZWZpbHRlcmluZyBzdGFnZXMgdG8gbm9ybWFsaXplIGJyaWdodG5lc3MgYmV0d2VlbiB0aGUgaW5wdXRzLCBhbmQgdG8gbWF4aW1pemUgdGV4dHVyZS4KICAqCiAgKiBOb3RlIHRoYXQgaW4gZ2VuZXJhbCBpcyBoYXJkIHRvIGZpbmQgY29ycmVzcG9uZGVuY2VzIGJldHdlZW4gc29mdCB0ZXh0dXJlcywgZm9yIGluc3RhbmNlIGEKLSAqIGJsb2NrIG9mIGdsb3NzIGJsdWUgY29sb3VyLiBUaGUgb3V0cHV0IGlzIGEgZ3JheSBpbWFnZSB3aXRoIHZhbHVlcyBjbG9zZSB0byB3aGl0ZSBtZWFuaW5nIAorICogYmxvY2sgb2YgZ2xvc3MgYmx1ZSBjb2xvdXIuIFRoZSBvdXRwdXQgaXMgYSBncmF5IGltYWdlIHdpdGggdmFsdWVzIGNsb3NlIHRvIHdoaXRlIG1lYW5pbmcKICAqIGNsb3NlciB0byB0aGUgY2FtZXJhcyBhbmQgZGFya2VyIGZhciBhd2F5LiBCbGFjayBtZWFucyB0aGF0IHRoZSBwaXhlbHMgd2VyZSBub3QgbWF0Y2hlZAogICogY29ycmVjdGx5IChub3QgZm91bmQpLiBUaGUgcmVzdWx0aW5nIGRlcHRoIG1hcCBjYW4gYmUgdHJhbnNmb3JtZWQgaW50byByZWFsIHdvcmxkIGNvb3JkaW5hdGVzCiAgKiBieSBtZWFucyBvZiBPcGVuQ1YgZnVuY3Rpb24gKHJlcHJvamVjdEltYWdlVG8zRCkgYnV0IGZvciB0aGlzIHRoZSBjYW1lcmEgbWF0cml4ZXMgbmVlZCB0bwogICogYmUgZnVsbHkga25vd24uCiAgKgogICogQWxnb3JpdGhtIDEgaXMgdGhlIE9wZW5DViBTdGVyZW8gQmxvY2sgTWF0Y2hpbmcsIHNpbWlsYXIgdG8gdGhlIG9uZSBkZXZlbG9wZWQgYnkgS3VydCBLb25vbGlnZQotICogW0FdIGFuZCB0aGF0IHdvcmtzIGJ5IHVzaW5nIHNtYWxsIFN1bS1vZi1hYnNvbHV0ZS1kaWZmZXJlbmMgKFNBRCkgd2luZG93cyB0byBmaW5kIG1hdGNoaW5nIAorICogW0FdIGFuZCB0aGF0IHdvcmtzIGJ5IHVzaW5nIHNtYWxsIFN1bS1vZi1hYnNvbHV0ZS1kaWZmZXJlbmMgKFNBRCkgd2luZG93cyB0byBmaW5kIG1hdGNoaW5nCiAgKiBwb2ludHMgYmV0d2VlbiB0aGUgbGVmdCBhbmQgcmlnaHQgcmVjdGlmaWVkIGltYWdlcy4gVGhpcyBhbGdvcml0aG0gZmluZHMgb25seSBzdHJvbmdseSBtYXRjaGluZwogICogcG9pbnRzIGJldHdlZW4gYm90aCBpbWFnZXMsIHRoaXMgbWVhbnMgbm9ybWFsbHkgc3Ryb25nIHRleHR1cmVzLiBJbiBzb2Z0IHRleHR1cmVzLCBzdWNoIGFzIGEKICAqIHNpbmdsZSBjb2xvdXJlZCB3YWxsIChhcyBvcHBvc2VkIHRvLCBmLmkuIGEgaGFpcnkgcnVnKSwgbm90IGFsbCBwaXhlbHMgbWlnaHQgaGF2ZSBjb3JyZXNwb25kZW5jZS4KICAqCiAgKiBBbGdvcml0aG0gMiBpcyB0aGUgU2VtaSBHbG9iYWwgTWF0Y2hpbmcgKFNHTSkgYWxnb3JpdGhtIFtCXSB3aGljaCBtb2RlbHMgdGhlIHNjZW5lIHN0cnVjdHVyZQotICogd2l0aCBhIHBvaW50LXdpc2UgbWF0Y2hpbmcgY29zdCBhbmQgYW4gYXNzb2NpYXRlZCBzbW9vdGhuZXNzIHRlcm0uIFRoZSBlbmVyZ3kgbWluaW1pemF0aW9uIAotICogaXMgdGhlbiBjb21wdXRlZCBpbiBhIG11bHRpdHVkZSBvZiAxRCBsaW5lcy4gRm9yIGVhY2ggcG9pbnQsIHRoZSBkaXNwYXJpdHkgY29ycmVzcG9uZGluZyB0byAKLSAqIHRoZSBtaW5pbXVtIGFnZ3JlZ2F0ZWQgY29zdCBpcyBzZWxlY3RlZC4gSW4gW0JdIHRoZSBhdXRob3IgcHJvcG9zZXMgdG8gdXNlIDggb3IgMTYgZGlmZmVyZW50IAotICogaW5kZXBlbmRlbnQgcGF0aHMuIFRoZSBTR00gYXBwcm9hY2ggd29ya3Mgd2VsbCBuZWFyIGRlcHRoIGRpc2NvbnRpbnVpdGllcywgYnV0IHByb2R1Y2VzIGxlc3MgCi0gKiBhY2N1cmF0ZSByZXN1bHRzLiBEZXNwaXRlIGl0cyByZWxhdGl2ZWx5IGxhcmdlIG1lbW9yeSBmb290cHJpbnQsIHRoaXMgbWV0aG9kIGlzIHZlcnkgZmFzdCBhbmQgCisgKiB3aXRoIGEgcG9pbnQtd2lzZSBtYXRjaGluZyBjb3N0IGFuZCBhbiBhc3NvY2lhdGVkIHNtb290aG5lc3MgdGVybS4gVGhlIGVuZXJneSBtaW5pbWl6YXRpb24KKyAqIGlzIHRoZW4gY29tcHV0ZWQgaW4gYSBtdWx0aXR1ZGUgb2YgMUQgbGluZXMuIEZvciBlYWNoIHBvaW50LCB0aGUgZGlzcGFyaXR5IGNvcnJlc3BvbmRpbmcgdG8KKyAqIHRoZSBtaW5pbXVtIGFnZ3JlZ2F0ZWQgY29zdCBpcyBzZWxlY3RlZC4gSW4gW0JdIHRoZSBhdXRob3IgcHJvcG9zZXMgdG8gdXNlIDggb3IgMTYgZGlmZmVyZW50CisgKiBpbmRlcGVuZGVudCBwYXRocy4gVGhlIFNHTSBhcHByb2FjaCB3b3JrcyB3ZWxsIG5lYXIgZGVwdGggZGlzY29udGludWl0aWVzLCBidXQgcHJvZHVjZXMgbGVzcworICogYWNjdXJhdGUgcmVzdWx0cy4gRGVzcGl0ZSBpdHMgcmVsYXRpdmVseSBsYXJnZSBtZW1vcnkgZm9vdHByaW50LCB0aGlzIG1ldGhvZCBpcyB2ZXJ5IGZhc3QgYW5kCiAgKiBwb3RlbnRpYWxseSByb2J1c3QgdG8gY29tcGxpY2F0ZWQgdGV4dHVyZWQgcmVnaW9ucy4KICAqCi0gKiBBbGdvcml0aG0gMyBpcyB0aGUgT3BlbkNWIGltcGxlbWVudGF0aW9uIG9mIGEgbW9kaWZpY2F0aW9uIG9mIHRoZSB2YXJpYXRpb25hbCBzdGVyZW8gCisgKiBBbGdvcml0aG0gMyBpcyB0aGUgT3BlbkNWIGltcGxlbWVudGF0aW9uIG9mIGEgbW9kaWZpY2F0aW9uIG9mIHRoZSB2YXJpYXRpb25hbCBzdGVyZW8KICAqIGNvcnJlc3BvbmRlbmNlIGFsZ29yaXRobSwgZGVzY3JpYmVkIGluIFtDXS4KICAqCi0gKiBBbGdvcml0aG0gNCBpcyB0aGUgR3JhcGggQ3V0IHN0ZXJlbyB2aXNpb24gYWxnb3JpdGhtIChHQykgaW50cm9kdWNlZCBpbiBbRF07IGl0IGlzIGEgZ2xvYmFsIAorICogQWxnb3JpdGhtIDQgaXMgdGhlIEdyYXBoIEN1dCBzdGVyZW8gdmlzaW9uIGFsZ29yaXRobSAoR0MpIGludHJvZHVjZWQgaW4gW0RdOyBpdCBpcyBhIGdsb2JhbAogICogc3RlcmVvIHZpc2lvbiBtZXRob2QuIEl0IGNhbGN1bGF0ZXMgZGVwdGggZGlzY29udGludWl0aWVzIGJ5IG1pbmltaXppbmcgYW4gZW5lcmd5IGZ1bmN0aW9uCi0gKiBjb21iaW5naW4gYSBwb2ludC13aXNlIG1hdGNoaW5nIGNvc3QgYW5kIGEgc21vb3RobmVzcyB0ZXJtLiBUaGUgZW5lcmd5IGZ1bmN0aW9uIGlzIHBhc3NlZCAKKyAqIGNvbWJpbmdpbiBhIHBvaW50LXdpc2UgbWF0Y2hpbmcgY29zdCBhbmQgYSBzbW9vdGhuZXNzIHRlcm0uIFRoZSBlbmVyZ3kgZnVuY3Rpb24gaXMgcGFzc2VkCiAgKiB0byBncmFwaCBhbmQgR3JhcGggQ3V0IGlzIHVzZWQgdG8gZmluZCBhIGxvd2VzdC1lbmVyZ3kgY3V0LiBHQyBpcyBjb21wdXRhdGlvbmFsbHkgaW50ZW5zaXZlIGR1ZQogICogdG8gaXRzIGdsb2JhbCBuYXR1cmUgYW5kIHVzZXMgbG9hZHMgb2YgbWVtb3J5LCBidXQgaXQgY2FuIGRlYWwgd2l0aCB0ZXh0dXJlbGVzcyByZWdpb25zIGFuZAogICogcmVmbGVjdGlvbnMgYmV0dGVyIHRoYW4gb3RoZXIgbWV0aG9kcy4KQEAgLTg2LDE1ICs4NiwxNSBAQAogICoKICAqIFNvbWUgdGVzdCBpbWFnZXMgY2FuIGJlIGZvdW5kIGhlcmU6IGh0dHA6Ly92aXNpb24uc3RhbmZvcmQuZWR1L35iaXJjaC9wMnAvCiAgKgotICogW0FdIEsuIEtvbm9saWdlLiBTbWFsbCB2aXNpb24gc3lzdGVtLiBoYXJkd2FyZSBhbmQgaW1wbGVtZW50YXRpb24uIEluIFByb2MuIEludGVybmF0aW9uYWwgCisgKiBbQV0gSy4gS29ub2xpZ2UuIFNtYWxsIHZpc2lvbiBzeXN0ZW0uIGhhcmR3YXJlIGFuZCBpbXBsZW1lbnRhdGlvbi4gSW4gUHJvYy4gSW50ZXJuYXRpb25hbAogICogU3ltcG9zaXVtIG9uIFJvYm90aWNzIFJlc2VhcmNoLCBwYWdlcyAxMTEtLTExNiwgSGF5YW1hLCBKYXBhbiwgMTk5Ny4KLSAqIFtCXSBILiBIaXJzY2htw7xsbGVyLCDigJxBY2N1cmF0ZSBhbmQgZWZmaWNpZW50IHN0ZXJlbyBwcm9jZXNzaW5nIGJ5IHNlbWktZ2xvYmFsIG1hdGNoaW5nIGFuZCAKLSAqIG11dHVhbCBpbmZvcm1hdGlvbizigJ0gaW4gUHJvY2VlZGluZ3Mgb2YgdGhlIElFRUUgQ29uZmVyZW5jZSBvbiBDb21wdXRlciBWaXNpb24gYW5kIFBhdHRlcm4gCisgKiBbQl0gSC4gSGlyc2NobcO8bGxlciwg4oCcQWNjdXJhdGUgYW5kIGVmZmljaWVudCBzdGVyZW8gcHJvY2Vzc2luZyBieSBzZW1pLWdsb2JhbCBtYXRjaGluZyBhbmQKKyAqIG11dHVhbCBpbmZvcm1hdGlvbizigJ0gaW4gUHJvY2VlZGluZ3Mgb2YgdGhlIElFRUUgQ29uZmVyZW5jZSBvbiBDb21wdXRlciBWaXNpb24gYW5kIFBhdHRlcm4KICAqIFJlY29nbml0aW9uLCAyMDA1LCBwcC4gODA34oCTODE0LgogICogW0NdIFMuIEtvc292LCBULiBUaG9ybWFlaGxlbiwgSC4tUC4gU2VpZGVsICJBY2N1cmF0ZSBSZWFsLVRpbWUgRGlzcGFyaXR5IEVzdGltYXRpb24gd2l0aAotICogVmFyaWF0aW9uYWwgTWV0aG9kcyIgUHJvY2VlZGluZ3Mgb2YgdGhlIDV0aCBJbnRlcm5hdGlvbmFsIFN5bXBvc2l1bSBvbiBWaXN1YWwgQ29tcHV0aW5nLCAKKyAqIFZhcmlhdGlvbmFsIE1ldGhvZHMiIFByb2NlZWRpbmdzIG9mIHRoZSA1dGggSW50ZXJuYXRpb25hbCBTeW1wb3NpdW0gb24gVmlzdWFsIENvbXB1dGluZywKICAqIFZlZ2FzLCBVU0EKLSAqIFtEXSBTY2hhcnN0ZWluLCBELiAmIFN6ZWxpc2tpLCBSLiAoMjAwMSkuIEEgdGF4b25vbXkgYW5kIGV2YWx1YXRpb24gb2YgZGVuc2UgdHdvLWZyYW1lIHN0ZXJlbyAKKyAqIFtEXSBTY2hhcnN0ZWluLCBELiAmIFN6ZWxpc2tpLCBSLiAoMjAwMSkuIEEgdGF4b25vbXkgYW5kIGV2YWx1YXRpb24gb2YgZGVuc2UgdHdvLWZyYW1lIHN0ZXJlbwogICogY29ycmVzcG9uZGVuY2UgYWxnb3JpdGhtcywgSW50ZXJuYXRpb25hbCBKb3VybmFsIG9mIENvbXB1dGVyIFZpc2lvbiA0NzogN+KAkzQyLgogICoKICAqIDxyZWZzZWN0Mj4KQEAgLTEwMyw3ICsxMDMsNyBAQAogICogZ3N0LWxhdW5jaC0xLjAgICAgICAgdmlkZW90ZXN0c3JjICEgdmlkZW8veC1yYXcsd2lkdGg9MzIwLGhlaWdodD0yNDAgISBkaXNwMC5zaW5rX3JpZ2h0ICAgICAgdmlkZW90ZXN0c3JjICEgdmlkZW8veC1yYXcsd2lkdGg9MzIwLGhlaWdodD0yNDAgISBkaXNwMC5zaW5rX2xlZnQgICAgICBkaXNwYXJpdHkgbmFtZT1kaXNwMCAhIHZpZGVvY29udmVydCAhIHhpbWFnZXNpbmsKICAqIF18CiAgKiBBbm90aGVyIGV4YW1wbGUsIHdpdGggdHdvIHBuZyBmaWxlcyByZXByZXNlbnRpbmcgYSBjbGFzc2ljYWwgc3RlcmVvIG1hdGNoaW5nLAotICogZG93bmxvYWRhYmxlIGZyb20gaHR0cDovL3Zpc2lvbi5taWRkbGVidXJ5LmVkdS9zdGVyZW8vc3VibWl0L3RzdWt1YmEvaW00LnBuZyBhbmQgCisgKiBkb3dubG9hZGFibGUgZnJvbSBodHRwOi8vdmlzaW9uLm1pZGRsZWJ1cnkuZWR1L3N0ZXJlby9zdWJtaXQvdHN1a3ViYS9pbTQucG5nIGFuZAogICogaW0zLnBuZy4gTm90ZSBoZXJlIHRoZXkgYXJlIGRvd25sb2FkZWQgaW4gfiAoaG9tZSkuCiAgKiB8WwogZ3N0LWxhdW5jaC0xLjAgICAgbXVsdGlmaWxlc3JjICBsb2NhdGlvbj1+L2ltMy5wbmcgISBwbmdkZWMgISB2aWRlb2NvbnZlcnQgICEgZGlzcDAuc2lua19yaWdodCAgICAgbXVsdGlmaWxlc3JjICBsb2NhdGlvbj1+L2ltNC5wbmcgISBwbmdkZWMgISB2aWRlb2NvbnZlcnQgISBkaXNwMC5zaW5rX2xlZnQgZGlzcGFyaXR5ICAgbmFtZT1kaXNwMCBtZXRob2Q9c2JtICAgICBkaXNwMC5zcmMgISB2aWRlb2NvbnZlcnQgISB4aW1hZ2VzaW5rCkBAIC0xMTksOCArMTE5LDYgQEAKICNpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgogI2luY2x1ZGUgPG9wZW5jdjIvY29udHJpYi9jb250cmliLmhwcD4KICNpbmNsdWRlICJnc3RkaXNwYXJpdHkuaCIKIApAQCAtNDE4LDEyICs0MTYsMTIgQEAKICAgc3dpdGNoIChHU1RfUVVFUllfVFlQRSAocXVlcnkpKSB7CiAgICAgY2FzZSBHU1RfUVVFUllfQ0FQUzoKICAgICAgIGdfbXV0ZXhfbG9jayAoJmZzLT5sb2NrKTsKLSAgICAgIGlmICghZ3N0X3BhZF9oYXNfY3VycmVudF9jYXBzIChmcy0+c3JjcGFkKSkgeworICAgICAgY3VycmVudF9jYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChmcy0+c3JjcGFkKTsKKyAgICAgIGlmIChjdXJyZW50X2NhcHMgPT0gTlVMTCkgewogICAgICAgICB0ZW1wbGF0ZV9jYXBzID0gZ3N0X3BhZF9nZXRfcGFkX3RlbXBsYXRlX2NhcHMgKHBhZCk7CiAgICAgICAgIGdzdF9xdWVyeV9zZXRfY2Fwc19yZXN1bHQgKHF1ZXJ5LCB0ZW1wbGF0ZV9jYXBzKTsKICAgICAgICAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsYXRlX2NhcHMpOwogICAgICAgfSBlbHNlIHsKLSAgICAgICAgY3VycmVudF9jYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChmcy0+c3JjcGFkKTsKICAgICAgICAgZ3N0X3F1ZXJ5X3NldF9jYXBzX3Jlc3VsdCAocXVlcnksIGN1cnJlbnRfY2Fwcyk7CiAgICAgICAgIGdzdF9jYXBzX3VucmVmIChjdXJyZW50X2NhcHMpOwogICAgICAgfQpAQCAtNTQ4LDE5ICs1NDYsMTkgQEAKICAgICAgIGZzLT53aWR0aCwgZnMtPmhlaWdodCwgZnMtPmFjdHVhbENoYW5uZWxzKTsKIAogICAvKiBTdGVyZW8gY29ycmVzcG9uZGluZyB1c2luZyBzZW1pLWdsb2JhbCBibG9jayBtYXRjaGluZy4gQWNjb3JkaW5nIHRvIE9wZW5DVjoKLSAgICAgIiIgVGhlIGNsYXNzIGltcGxlbWVudHMgbW9kaWZpZWQgSC4gSGlyc2NobXVsbGVyIGFsZ29yaXRobSBISDA4IC4gVGhlIG1haW4gCisgICAgICIiIFRoZSBjbGFzcyBpbXBsZW1lbnRzIG1vZGlmaWVkIEguIEhpcnNjaG11bGxlciBhbGdvcml0aG0gSEgwOCAuIFRoZSBtYWluCiAgICAgIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIGltcGxlbWVudGVkIGFsZ29yaXRobSBhbmQgdGhlIG9yaWdpbmFsIG9uZSBhcmU6CiAKLSAgICAgLSBieSBkZWZhdWx0IHRoZSBhbGdvcml0aG0gaXMgc2luZ2xlLXBhc3MsIGkuZS4gaW5zdGVhZCBvZiA4IGRpcmVjdGlvbnMgd2UgCisgICAgIC0gYnkgZGVmYXVsdCB0aGUgYWxnb3JpdGhtIGlzIHNpbmdsZS1wYXNzLCBpLmUuIGluc3RlYWQgb2YgOCBkaXJlY3Rpb25zIHdlCiAgICAgIG9ubHkgY29uc2lkZXIgNS4gU2V0IGZ1bGxEUD10cnVlIHRvIHJ1biB0aGUgZnVsbCB2YXJpYW50IG9mIHRoZSBhbGdvcml0aG0KICAgICAgKHdoaWNoIGNvdWxkIGNvbnN1bWUgYSBsb3Qgb2YgbWVtb3J5KQogICAgICAtIHRoZSBhbGdvcml0aG0gbWF0Y2hlcyBibG9ja3MsIG5vdCBpbmRpdmlkdWFsIHBpeGVscyAodGhvdWdoLCBieSBzZXR0aW5nCiAgICAgIFNBRFdpbmRvd1NpemU9MSB0aGUgYmxvY2tzIGFyZSByZWR1Y2VkIHRvIHNpbmdsZSBwaXhlbHMpCiAgICAgIC0gbXV0dWFsIGluZm9ybWF0aW9uIGNvc3QgZnVuY3Rpb24gaXMgbm90IGltcGxlbWVudGVkLiBJbnN0ZWFkLCB3ZSB1c2UgYQotICAgICBzaW1wbGVyIEJpcmNoZmllbGQtVG9tYXNpIHN1Yi1waXhlbCBtZXRyaWMgZnJvbSBCVDk2ICwgdGhvdWdoIHRoZSBjb2xvciAKKyAgICAgc2ltcGxlciBCaXJjaGZpZWxkLVRvbWFzaSBzdWItcGl4ZWwgbWV0cmljIGZyb20gQlQ5NiAsIHRob3VnaCB0aGUgY29sb3IKICAgICAgaW1hZ2VzIGFyZSBzdXBwb3J0ZWQgYXMgd2VsbC4KLSAgICAgLSB3ZSBpbmNsdWRlIHNvbWUgcHJlLSBhbmQgcG9zdC0gcHJvY2Vzc2luZyBzdGVwcyBmcm9tIEsuIEtvbm9saWdlIAotICAgICBhbGdvcml0aG0gRmluZFN0ZXJlb0NvcnJlc3BvbmRlbmNlQk0gLCBzdWNoIGFzIHByZS1maWx0ZXJpbmcgCisgICAgIC0gd2UgaW5jbHVkZSBzb21lIHByZS0gYW5kIHBvc3QtIHByb2Nlc3Npbmcgc3RlcHMgZnJvbSBLLiBLb25vbGlnZQorICAgICBhbGdvcml0aG0gRmluZFN0ZXJlb0NvcnJlc3BvbmRlbmNlQk0gLCBzdWNoIGFzIHByZS1maWx0ZXJpbmcKICAgICAgKCBDVl9TVEVSRU9fQk1fWFNPQkVMIHR5cGUpIGFuZCBwb3N0LWZpbHRlcmluZyAodW5pcXVlbmVzcyBjaGVjaywgcXVhZHJhdGljCiAgICAgIGludGVycG9sYXRpb24gYW5kIHNwZWNrbGUgZmlsdGVyaW5nKSAiIgogICAgKi8KQEAgLTU3Miw3ICs1NzAsNyBAQAogICAgICAgICBDVl9NSU5NQVgsIE5VTEwpOwogICAgIGN2Q3Z0Q29sb3IgKGZzLT5jdkdyYXlfZGVwdGhfbWFwMiwgZnMtPmN2UkdCX3JpZ2h0LCBDVl9HUkFZMlJHQik7CiAgIH0KLSAgLyogQWxnb3JpdGhtIDEgaXMgdGhlIE9wZW5DViBTdGVyZW8gQmxvY2sgTWF0Y2hpbmcsIHNpbWlsYXIgdG8gdGhlIG9uZSAKKyAgLyogQWxnb3JpdGhtIDEgaXMgdGhlIE9wZW5DViBTdGVyZW8gQmxvY2sgTWF0Y2hpbmcsIHNpbWlsYXIgdG8gdGhlIG9uZQogICAgICBkZXZlbG9wZWQgYnkgS3VydCBLb25vbGlnZSBbQV0gYW5kIHRoYXQgd29ya3MgYnkgdXNpbmcgc21hbGwgU3VtLW9mLWFic29sdXRlLQogICAgICBkaWZmZXJlbmNlcyAoU0FEKSB3aW5kb3cuIFNlZSB0aGUgY29tbWVudHMgb24gdG9wIG9mIHRoZSBmaWxlLgogICAgKi8KQEAgLTU5Myw5ICs1OTEsOSBAQAogICAgIHJ1bl9zdmFyX2l0ZXJhdGlvbiAoZnMpOwogICAgIGN2Q3Z0Q29sb3IgKGZzLT5jdkdyYXlfZGVwdGhfbWFwMiwgZnMtPmN2UkdCX3JpZ2h0LCBDVl9HUkFZMlJHQik7CiAgIH0KLSAgLyogVGhlIEdyYXBoIEN1dCBzdGVyZW8gdmlzaW9uIGFsZ29yaXRobSAoR0MpIGludHJvZHVjZWQgaW4gW0RdIGlzIGEgZ2xvYmFsIAotICAgICBzdGVyZW8gdmlzaW9uIG1ldGhvZC4gSXQgY2FsY3VsYXRlcyBkZXB0aCBkaXNjb250aW51aXRpZXMgYnkgbWluaW1pemluZyBhbiAKLSAgICAgZW5lcmd5IGZ1bmN0aW9uIGNvbWJpbmdpbiBhIHBvaW50LXdpc2UgbWF0Y2hpbmcgY29zdCBhbmQgYSBzbW9vdGhuZXNzIHRlcm0uIAorICAvKiBUaGUgR3JhcGggQ3V0IHN0ZXJlbyB2aXNpb24gYWxnb3JpdGhtIChHQykgaW50cm9kdWNlZCBpbiBbRF0gaXMgYSBnbG9iYWwKKyAgICAgc3RlcmVvIHZpc2lvbiBtZXRob2QuIEl0IGNhbGN1bGF0ZXMgZGVwdGggZGlzY29udGludWl0aWVzIGJ5IG1pbmltaXppbmcgYW4KKyAgICAgZW5lcmd5IGZ1bmN0aW9uIGNvbWJpbmdpbiBhIHBvaW50LXdpc2UgbWF0Y2hpbmcgY29zdCBhbmQgYSBzbW9vdGhuZXNzIHRlcm0uCiAgICAgIFNlZSB0aGUgY29tbWVudHMgb24gdG9wIG9mIHRoZSBmaWxlLgogICAgKi8KICAgZWxzZSBpZiAoTUVUSE9EX0dDID09IGZzLT5tZXRob2QpIHsKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0ZGlzcGFyaXR5LmggYi9leHQvb3BlbmN2L2dzdGRpc3Bhcml0eS5oCmluZGV4IGFkYmI5YWUuLjA3ZTI0MTcgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0ZGlzcGFyaXR5LmgKKysrIGIvZXh0L29wZW5jdi9nc3RkaXNwYXJpdHkuaApAQCAtNDUsNiArNDUsNyBAQAogI2RlZmluZSBfX0dTVF9ESVNQQVJJVFlfSF9fCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAKICNpbmNsdWRlIDxvcGVuY3YyL2xlZ2FjeS9sZWdhY3kuaHBwPgogCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGVkZ2VkZXRlY3QuY3BwIGIvZXh0L29wZW5jdi9nc3RlZGdlZGV0ZWN0LmNwcAppbmRleCA1ZWNmOGVjLi43ZTZjMWU3IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGVkZ2VkZXRlY3QuY3BwCisrKyBiL2V4dC9vcGVuY3YvZ3N0ZWRnZWRldGVjdC5jcHAKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1pY2hhZWwgU2hlbGRvbiA8bWlrZUBtaWtlYXNvZnQuY29tPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC01MSw3ICs1MSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaC0wLjEwIHZpZGVvdGVzdHNyYyAhIGRlY29kZWJpbiAhIHZpZGVvY29udmVydCAhIGVkZ2VkZXRlY3QgISB2aWRlb2NvbnZlcnQgISB4dmltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgZGVjb2RlYmluICEgdmlkZW9jb252ZXJ0ICEgZWRnZWRldGVjdCAhIHZpZGVvY29udmVydCAhIHh2aW1hZ2VzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtNjAsOSArNjAsNiBAQAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQotI2luY2x1ZGUgImdzdG9wZW5jdnV0aWxzLmgiCiAjaW5jbHVkZSAiZ3N0ZWRnZWRldGVjdC5oIgogI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jX2MuaD4KIApAQCAtMTAxLDcgKzk4LDcgQEAKICAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJSR0IiKSkKICAgICApOwogCi1HX0RFRklORV9UWVBFIChHc3RFZGdlRGV0ZWN0LCBnc3RfZWRnZV9kZXRlY3QsIEdTVF9UWVBFX0VMRU1FTlQpOworR19ERUZJTkVfVFlQRSAoR3N0RWRnZURldGVjdCwgZ3N0X2VkZ2VfZGV0ZWN0LCBHU1RfVFlQRV9PUEVOQ1ZfVklERU9fRklMVEVSKTsKIAogc3RhdGljIHZvaWQgZ3N0X2VkZ2VfZGV0ZWN0X3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKQEAgLTExMCw4ICsxMDcsMTEgQEAKIAogc3RhdGljIGdib29sZWFuIGdzdF9lZGdlX2RldGVjdF9oYW5kbGVfc2lua19ldmVudCAoR3N0UGFkICogcGFkLAogICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCk7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfZWRnZV9kZXRlY3RfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdEJ1ZmZlciAqIGJ1Zik7CitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfZWRnZV9kZXRlY3RfdHJhbnNmb3JtIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIGZpbHRlciwKKyAgICBHc3RCdWZmZXIgKiBidWYsIElwbEltYWdlICogaW1nLCBHc3RCdWZmZXIgKiBvdXRidWYsIElwbEltYWdlICogb3V0aW1nKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfZWRnZV9kZXRlY3Rfc2V0X2NhcHMgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogdHJhbnNmb3JtLAorICAgIGdpbnQgaW5fd2lkdGgsIGdpbnQgaW5faGVpZ2h0LCBnaW50IGluX2RlcHRoLCBnaW50IGluX2NoYW5uZWxzLAorICAgIGdpbnQgb3V0X3dpZHRoLCBnaW50IG91dF9oZWlnaHQsIGdpbnQgb3V0X2RlcHRoLCBnaW50IG91dF9jaGFubmVscyk7CiAKIC8qIENsZWFuIHVwICovCiBzdGF0aWMgdm9pZApAQCAtMTE5LDggKzExOSw3IEBACiB7CiAgIEdzdEVkZ2VEZXRlY3QgKmZpbHRlciA9IEdTVF9FREdFX0RFVEVDVCAob2JqKTsKIAotICBpZiAoZmlsdGVyLT5jdkltYWdlICE9IE5VTEwpIHsKLSAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZJbWFnZSk7CisgIGlmIChmaWx0ZXItPmN2RWRnZSAhPSBOVUxMKSB7CiAgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2Q0VkZ2UpOwogICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkdyYXkpOwogICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkVkZ2UpOwpAQCAtMTM0LDE0ICsxMzMsMTkgQEAKIGdzdF9lZGdlX2RldGVjdF9jbGFzc19pbml0IChHc3RFZGdlRGV0ZWN0Q2xhc3MgKiBrbGFzcykKIHsKICAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzICpnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzOwogCiAgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CiAgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzID0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgKikga2xhc3M7CiAKICAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2VkZ2VfZGV0ZWN0X2ZpbmFsaXplKTsKICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2VkZ2VfZGV0ZWN0X3NldF9wcm9wZXJ0eTsKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2VkZ2VfZGV0ZWN0X2dldF9wcm9wZXJ0eTsKIAorICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzLT5jdl90cmFuc19mdW5jID0gZ3N0X2VkZ2VfZGV0ZWN0X3RyYW5zZm9ybTsKKyAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcy0+Y3Zfc2V0X2NhcHMgPSBnc3RfZWRnZV9kZXRlY3Rfc2V0X2NhcHM7CisKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NQVNLLAogICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJtYXNrIiwgIk1hc2siLAogICAgICAgICAgICJTZXRzIHdoZXRoZXIgdGhlIGRldGVjdGVkIGVkZ2VzIHNob3VsZCBiZSB1c2VkIGFzIGEgbWFzayBvbiB0aGUgb3JpZ2luYWwgaW5wdXQgb3Igbm90IiwKQEAgLTE3OSwyMiArMTgzLDE2IEBACiBzdGF0aWMgdm9pZAogZ3N0X2VkZ2VfZGV0ZWN0X2luaXQgKEdzdEVkZ2VEZXRlY3QgKiBmaWx0ZXIpCiB7Ci0gIGZpbHRlci0+c2lua3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmc2lua19mYWN0b3J5LCAic2luayIpOwotICBHU1RfUEFEX1NFVF9QUk9YWV9DQVBTIChmaWx0ZXItPnNpbmtwYWQpOwotICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoZmlsdGVyLT5zaW5rcGFkLAorICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoR1NUX0JBU0VfVFJBTlNGT1JNX1NJTktfUEFEIChmaWx0ZXIpLAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9lZGdlX2RldGVjdF9oYW5kbGVfc2lua19ldmVudCkpOwotICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAoZmlsdGVyLT5zaW5rcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9lZGdlX2RldGVjdF9jaGFpbikpOwogCi0gIGZpbHRlci0+c3JjcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZzcmNfZmFjdG9yeSwgInNyYyIpOwotICBHU1RfUEFEX1NFVF9QUk9YWV9DQVBTIChmaWx0ZXItPnNyY3BhZCk7Ci0KLSAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKGZpbHRlciksIGZpbHRlci0+c2lua3BhZCk7Ci0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBmaWx0ZXItPnNyY3BhZCk7CiAgIGZpbHRlci0+bWFzayA9IFRSVUU7CiAgIGZpbHRlci0+dGhyZXNob2xkMSA9IDUwOwogICBmaWx0ZXItPnRocmVzaG9sZDIgPSAxNTA7CiAgIGZpbHRlci0+YXBlcnR1cmUgPSAzOworCisgIGdzdF9vcGVuY3ZfdmlkZW9fZmlsdGVyX3NldF9pbl9wbGFjZSAoR1NUX09QRU5DVl9WSURFT19GSUxURVJfQ0FTVCAoZmlsdGVyKSwKKyAgICAgIEZBTFNFKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI1MSw2ICsyNDksMjMgQEAKIAogLyogdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBsaW5rIHdpdGggb3RoZXIgZWxlbWVudHMgKi8KIHN0YXRpYyBnYm9vbGVhbgorZ3N0X2VkZ2VfZGV0ZWN0X3NldF9jYXBzIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIHRyYW5zZm9ybSwKKyAgICBnaW50IGluX3dpZHRoLCBnaW50IGluX2hlaWdodCwgZ2ludCBpbl9kZXB0aCwgZ2ludCBpbl9jaGFubmVscywKKyAgICBnaW50IG91dF93aWR0aCwgZ2ludCBvdXRfaGVpZ2h0LCBnaW50IG91dF9kZXB0aCwgZ2ludCBvdXRfY2hhbm5lbHMpCit7CisgIEdzdEVkZ2VEZXRlY3QgKmZpbHRlciA9IEdTVF9FREdFX0RFVEVDVCAodHJhbnNmb3JtKTsKKworICBpZiAoZmlsdGVyLT5jdkdyYXkpCisgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2R3JheSk7CisKKyAgZmlsdGVyLT5jdkdyYXkgPQorICAgICAgY3ZDcmVhdGVJbWFnZSAoY3ZTaXplIChpbl93aWR0aCwgaW5faGVpZ2h0KSwgSVBMX0RFUFRIXzhVLCAxKTsKKworICByZXR1cm4gVFJVRTsKK30KKworLyogdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBsaW5rIHdpdGggb3RoZXIgZWxlbWVudHMgKi8KK3N0YXRpYyBnYm9vbGVhbgogZ3N0X2VkZ2VfZGV0ZWN0X2hhbmRsZV9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKICAgICBHc3RFdmVudCAqIGV2ZW50KQogewpAQCAtMjcxLDE0ICsyODYsMTIgQEAKICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAid2lkdGgiLCAmd2lkdGgpOwogICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJoZWlnaHQiLCAmaGVpZ2h0KTsKIAotICAgICAgaWYgKGZpbHRlci0+Y3ZJbWFnZSAhPSBOVUxMKSB7Ci0gICAgICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkltYWdlKTsKKyAgICAgIGlmIChmaWx0ZXItPmN2RWRnZSAhPSBOVUxMKSB7CiAgICAgICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkNFZGdlKTsKICAgICAgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2R3JheSk7CiAgICAgICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkVkZ2UpOwogICAgICAgfQogCi0gICAgICBmaWx0ZXItPmN2SW1hZ2UgPSBjdkNyZWF0ZUltYWdlIChjdlNpemUgKHdpZHRoLCBoZWlnaHQpLCBJUExfREVQVEhfOFUsIDMpOwogICAgICAgZmlsdGVyLT5jdkNFZGdlID0gY3ZDcmVhdGVJbWFnZSAoY3ZTaXplICh3aWR0aCwgaGVpZ2h0KSwgSVBMX0RFUFRIXzhVLCAzKTsKICAgICAgIGZpbHRlci0+Y3ZHcmF5ID0gY3ZDcmVhdGVJbWFnZSAoY3ZTaXplICh3aWR0aCwgaGVpZ2h0KSwgSVBMX0RFUFRIXzhVLCAxKTsKICAgICAgIGZpbHRlci0+Y3ZFZGdlID0gY3ZDcmVhdGVJbWFnZSAoY3ZTaXplICh3aWR0aCwgaGVpZ2h0KSwgSVBMX0RFUFRIXzhVLCAxKTsKQEAgLTI5MSw0OSArMzA0LDMxIEBACiAgIHJlcyA9IGdzdF9wYWRfZXZlbnRfZGVmYXVsdCAocGFkLCBwYXJlbnQsIGV2ZW50KTsKIAogICByZXR1cm4gcmVzOwotCiB9CiAKLS8qIGNoYWluIGZ1bmN0aW9uCi0gKiB0aGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGFjdHVhbCBwcm9jZXNzaW5nCi0gKi8KIHN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfZWRnZV9kZXRlY3RfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBidWYpCitnc3RfZWRnZV9kZXRlY3RfdHJhbnNmb3JtIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIGJhc2UsIEdzdEJ1ZmZlciAqIGJ1ZiwKKyAgICBJcGxJbWFnZSAqIGltZywgR3N0QnVmZmVyICogb3V0YnVmLCBJcGxJbWFnZSAqIG91dGltZykKIHsKLSAgR3N0RWRnZURldGVjdCAqZmlsdGVyOwotICBHc3RCdWZmZXIgKm91dGJ1ZjsKLSAgR3N0TWFwSW5mbyBpbl9pbmZvOworICBHc3RFZGdlRGV0ZWN0ICpmaWx0ZXIgPSBHU1RfRURHRV9ERVRFQ1QgKGJhc2UpOwogICBHc3RNYXBJbmZvIG91dF9pbmZvOwogCi0gIGZpbHRlciA9IEdTVF9FREdFX0RFVEVDVCAocGFyZW50KTsKLQotICBidWYgPSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUgKGJ1Zik7Ci0gIGdzdF9idWZmZXJfbWFwIChidWYsICZpbl9pbmZvLCBHU1RfTUFQX1dSSVRFKTsKLSAgZmlsdGVyLT5jdkltYWdlLT5pbWFnZURhdGEgPSAoY2hhciAqKSBpbl9pbmZvLmRhdGE7Ci0KLSAgY3ZDdnRDb2xvciAoZmlsdGVyLT5jdkltYWdlLCBmaWx0ZXItPmN2R3JheSwgQ1ZfUkdCMkdSQVkpOworICBjdkN2dENvbG9yIChpbWcsIGZpbHRlci0+Y3ZHcmF5LCBDVl9SR0IyR1JBWSk7CiAgIGN2Q2FubnkgKGZpbHRlci0+Y3ZHcmF5LCBmaWx0ZXItPmN2RWRnZSwgZmlsdGVyLT50aHJlc2hvbGQxLAogICAgICAgZmlsdGVyLT50aHJlc2hvbGQyLCBmaWx0ZXItPmFwZXJ0dXJlKTsKIAogICBjdlplcm8gKGZpbHRlci0+Y3ZDRWRnZSk7CiAgIGlmIChmaWx0ZXItPm1hc2spIHsKLSAgICBjdkNvcHkgKGZpbHRlci0+Y3ZJbWFnZSwgZmlsdGVyLT5jdkNFZGdlLCBmaWx0ZXItPmN2RWRnZSk7CisgICAgY3ZDb3B5IChpbWcsIGZpbHRlci0+Y3ZDRWRnZSwgZmlsdGVyLT5jdkVkZ2UpOwogICB9IGVsc2UgewogICAgIGN2Q3Z0Q29sb3IgKGZpbHRlci0+Y3ZFZGdlLCBmaWx0ZXItPmN2Q0VkZ2UsIENWX0dSQVkyUkdCKTsKICAgfQogCi0gIG91dGJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAoZmlsdGVyLT5jdkNFZGdlLT5pbWFnZVNpemUpOwotICBnc3RfYnVmZmVyX2NvcHlfaW50byAob3V0YnVmLCBidWYsCi0gICAgICAoR3N0QnVmZmVyQ29weUZsYWdzKSBHU1RfQlVGRkVSX0NPUFlfTUVUQURBVEEsIDAsIC0xKTsKLQogICBnc3RfYnVmZmVyX21hcCAob3V0YnVmLCAmb3V0X2luZm8sIEdTVF9NQVBfV1JJVEUpOwogICBtZW1jcHkgKG91dF9pbmZvLmRhdGEsIGZpbHRlci0+Y3ZDRWRnZS0+aW1hZ2VEYXRhLAogICAgICAgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAob3V0YnVmKSk7CiAKLSAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmaW5faW5mbyk7Ci0gIGdzdF9idWZmZXJfdW5tYXAgKG91dGJ1ZiwgJm91dF9pbmZvKTsKLSAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKLSAgcmV0dXJuIGdzdF9wYWRfcHVzaCAoZmlsdGVyLT5zcmNwYWQsIG91dGJ1Zik7CisgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIAogLyogZW50cnkgcG9pbnQgdG8gaW5pdGlhbGl6ZSB0aGUgcGx1Zy1pbgpAQCAtMzQzLDkgKzMzOCw3IEBACiBnYm9vbGVhbgogZ3N0X2VkZ2VfZGV0ZWN0X3BsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCiB7Ci0gIC8qIGRlYnVnIGNhdGVnb3J5IGZvciBmbHRlcmluZyBsb2cgbWVzc2FnZXMKLSAgICoKLSAgICovCisgIC8qIGRlYnVnIGNhdGVnb3J5IGZvciBmbHRlcmluZyBsb2cgbWVzc2FnZXMgKi8KICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9lZGdlX2RldGVjdF9kZWJ1ZywgImVkZ2VkZXRlY3QiLAogICAgICAgMCwgIlBlcmZvcm1zIGNhbm55IGVkZ2UgZGV0ZWN0aW9uIG9uIHZpZGVvcyBhbmQgaW1hZ2VzIik7CiAKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0ZWRnZWRldGVjdC5oIGIvZXh0L29wZW5jdi9nc3RlZGdlZGV0ZWN0LmgKaW5kZXggMjNjOTVlNi4uMDQ3MmM1ZCAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RlZGdlZGV0ZWN0LmgKKysrIGIvZXh0L29wZW5jdi9nc3RlZGdlZGV0ZWN0LmgKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1pY2hhZWwgU2hlbGRvbiA8bWlrZUBtaWtlYXNvZnQuY29tPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00Niw3ICs0Niw3IEBACiAjaWZuZGVmIF9fR1NUX0VER0VfREVURUNUX0hfXwogI2RlZmluZSBfX0dTVF9FREdFX0RFVEVDVF9IX18KIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3RvcGVuY3Z2aWRlb2ZpbHRlci5oPgogI2luY2x1ZGUgPG9wZW5jdjIvY29yZS9jb3JlX2MuaD4KIAogR19CRUdJTl9ERUNMUwpAQCAtNjEsMjUgKzYxLDI0IEBACiAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9FREdFX0RFVEVDVCkpCiAjZGVmaW5lIEdTVF9JU19FREdFX0RFVEVDVF9DTEFTUyhrbGFzcykgXAogICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9FREdFX0RFVEVDVCkpCisKIHR5cGVkZWYgc3RydWN0IF9Hc3RFZGdlRGV0ZWN0IEdzdEVkZ2VEZXRlY3Q7CiB0eXBlZGVmIHN0cnVjdCBfR3N0RWRnZURldGVjdENsYXNzIEdzdEVkZ2VEZXRlY3RDbGFzczsKIAogc3RydWN0IF9Hc3RFZGdlRGV0ZWN0CiB7Ci0gIEdzdEVsZW1lbnQgZWxlbWVudDsKLQotICBHc3RQYWQgKnNpbmtwYWQsICpzcmNwYWQ7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyIGVsZW1lbnQ7CiAKICAgZ2Jvb2xlYW4gbWFzazsKIAogICBpbnQgdGhyZXNob2xkMSwgdGhyZXNob2xkMiwgYXBlcnR1cmU7CiAKLSAgSXBsSW1hZ2UgKmN2RWRnZSwgKmN2R3JheSwgKmN2SW1hZ2UsICpjdkNFZGdlOworICBJcGxJbWFnZSAqY3ZFZGdlLCAqY3ZHcmF5LCAqY3ZDRWRnZTsKIH07CiAKIHN0cnVjdCBfR3N0RWRnZURldGVjdENsYXNzCiB7Ci0gIEdzdEVsZW1lbnRDbGFzcyBwYXJlbnRfY2xhc3M7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgcGFyZW50X2NsYXNzOwogfTsKIAogR1R5cGUgZ3N0X2VkZ2VfZGV0ZWN0X2dldF90eXBlICh2b2lkKTsKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0ZmFjZWJsdXIuY3BwIGIvZXh0L29wZW5jdi9nc3RmYWNlYmx1ci5jcHAKaW5kZXggNDBmZjRmOC4uMmJjODhkMSAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RmYWNlYmx1ci5jcHAKKysrIGIvZXh0L29wZW5jdi9nc3RmYWNlYmx1ci5jcHAKQEAgLTQsNyArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1pY2hhZWwgU2hlbGRvbiA8bWlrZUBtaWtlYXNvZnQuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDExIFJvYmVydCBKb2JiYWd5IDxqb2JiYWd5LnJvYmVydEBnbWFpbC5jb20+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTYxLDEwICs2MSw4IEBACiAjICBpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImdzdG9wZW5jdnV0aWxzLmgiCiAjaW5jbHVkZSAiZ3N0ZmFjZWJsdXIuaCIKICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CiAjaW5jbHVkZSA8b3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2MuaHBwPgpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RmYWNlYmx1ci5oIGIvZXh0L29wZW5jdi9nc3RmYWNlYmx1ci5oCmluZGV4IDg5MGMwYzkuLjljODZlMWIgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0ZmFjZWJsdXIuaAorKysgYi9leHQvb3BlbmN2L2dzdGZhY2VibHVyLmgKQEAgLTQsNyArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1pY2hhZWwgU2hlbGRvbiA8bWlrZUBtaWtlYXNvZnQuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDExIFJvYmVydCBKb2JiYWd5IDxqb2JiYWd5LnJvYmVydEBnbWFpbC5jb20+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0ZmFjZWRldGVjdC5jcHAgYi9leHQvb3BlbmN2L2dzdGZhY2VkZXRlY3QuY3BwCmluZGV4IDdlYzZlMzkuLmFmZjk5NzkgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0ZmFjZWRldGVjdC5jcHAKKysrIGIvZXh0L29wZW5jdi9nc3RmYWNlZGV0ZWN0LmNwcApAQCAtNzYsMTEgKzc2LDggQEAKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotI2luY2x1ZGUgImdzdG9wZW5jdnV0aWxzLmgiCiAjaW5jbHVkZSAiZ3N0ZmFjZWRldGVjdC5oIgogI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jX2MuaD4KIApAQCAtNTczLDcgKzU3MCw3IEBACiAgIH0KIH0KIAotLyogCisvKgogICogUGVyZm9ybXMgdGhlIGZhY2UgZGV0ZWN0aW9uCiAgKi8KIHN0YXRpYyBHc3RGbG93UmV0dXJuCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGdyYWJjdXQuY3BwIGIvZXh0L29wZW5jdi9nc3RncmFiY3V0LmNwcAppbmRleCBjOWZmNGY5Li5lYWY3MjdiIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGdyYWJjdXQuY3BwCisrKyBiL2V4dC9vcGVuY3YvZ3N0Z3JhYmN1dC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTWlndWVsIENhc2FzLVNhbmNoZXogPG1pZ3VlbGVjYXNhc3NhbmNoZXpAZ21haWwuY29tPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00OCwyMyArNDgsMjMgQEAKICAqIFRoaXMgZWxlbWVudCBpcyBhIHdyYXBwZXIgYXJvdW5kIE9wZW5DViBncmFiY3V0IGltcGxlbWVudGF0aW9uLiBHcmFiQ3V0IGlzIGFuCiAgKiBpbWFnZSBzZWdtZW50YXRpb24gbWV0aG9kIGJhc2VkIG9uIGdyYXBoIGN1dHMgdGVjaG5pcXVlLiBJdCBjYW4gYmUgc2VlbiBhcyBhCiAgKiB3YXkgb2YgZmluZS1ncmFpbiBzZWdtZW50aW5nIHRoZSBpbWFnZSBmcm9tIHNvbWUgRkcgYW5kIEJHICJzZWVkIiBhcmVhcy4gVGhlCi0gKiBPcGVuQ1YgaW1wbGVtZW50YXRpb24gZm9sbG93cyB0aGUgYXJ0aWNsZSBbMV0uIAorICogT3BlbkNWIGltcGxlbWVudGF0aW9uIGZvbGxvd3MgdGhlIGFydGljbGUgWzFdLgogICogVGhlICJzZWVkIiBhcmVhcyBhcmUgdGFrZW4gaW4gdGhpcyBlbGVtZW50IGZyb20gZWl0aGVyIGFuIGlucHV0IGJvdW5kaW5nIGJveAogICogY29taW5nIGZyb20gYSBmYWNlIGRldGVjdGlvbiwgb3IgZnJvbSBhbHBoYSBjaGFubmVsIHZhbHVlcy4gVGhlIGlucHV0IGJveCBpcwotICogdGFrZW4gZnJvbSBhICJmYWNlIiBldmVudCBzdWNoIGFzIHRoZSBvbmUgZ2VuZXJhdGVkIGZyb20gdGhlICdmYWNlZGV0ZWN0JyAKLSAqIGVsZW1lbnQuIFRoZSBBbHBoYSBjaGFubmVsIHZhbHVlcyBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgKGN2LmhwcCk6IAotICogZW51bXsgIAorICogdGFrZW4gZnJvbSBhICJmYWNlIiBldmVudCBzdWNoIGFzIHRoZSBvbmUgZ2VuZXJhdGVkIGZyb20gdGhlICdmYWNlZGV0ZWN0JworICogZWxlbWVudC4gVGhlIEFscGhhIGNoYW5uZWwgdmFsdWVzIHNob3VsZCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyAoY3YuaHBwKToKKyAqIGVudW17CiAgKiAgR0NfQkdEICAgID0gMCwgIC8vITwgYmFja2dyb3VuZAogICogIEdDX0ZHRCAgICA9IDEsICAvLyE8IGZvcmVncm91bmQKICAqICBHQ19QUl9CR0QgPSAyLCAgLy8hPCBtb3N0IHByb2JhYmx5IGJhY2tncm91bmQKICAqICBHQ19QUl9GR0QgPSAzICAgLy8hPCBtb3N0IHByb2JhYmx5IGZvcmVncm91bmQKICAqIH07CiAgKiB3aXRoIHZhbHVlcyBvdmVyIEdDX1BSX0ZHRCBpbnRlcnByZXRlZCBhcyBHQ19QUl9GR0QuIElOIENBU0UgT0Ygbm8gYWxwaGEgbWFzawotICogaW5wdXQgKGFsbCAwJ3Mgb3IgYWxsIDEncyksIHRoZSAnR3N0T3BlbkN2RmFjZURldGVjdC1mYWNlJyBkb3duc3RyZWFtIGV2ZW50IAorICogaW5wdXQgKGFsbCAwJ3Mgb3IgYWxsIDEncyksIHRoZSAnR3N0T3BlbkN2RmFjZURldGVjdC1mYWNlJyBkb3duc3RyZWFtIGV2ZW50CiAgKiBpcyB1c2VkIHRvIGNyZWF0ZSBhIGJib3ggb2YgUFJfRkcgZWxlbWVudHMuIElmIGJvdGggZm9yZWdyb3VuZCBhbHBoYQogICogaXMgbm90IHNwZWNpZmllZCBhbmQgdGhlcmUgaXMgbm8gZmFjZSBkZXRlY3Rpb24sIG5vdGhpbmcgaXMgZG9uZS4KICAqCi0gKiBbMV0gQy4gUm90aGVyLCBWLiBLb2xtb2dvcm92LCBhbmQgQS4gQmxha2UsICJHcmFiQ3V0OiBJbnRlcmFjdGl2ZSBmb3JlZ3JvdW5kIAorICogWzFdIEMuIFJvdGhlciwgVi4gS29sbW9nb3JvdiwgYW5kIEEuIEJsYWtlLCAiR3JhYkN1dDogSW50ZXJhY3RpdmUgZm9yZWdyb3VuZAogICogZXh0cmFjdGlvbiB1c2luZyBpdGVyYXRlZCBncmFwaCBjdXRzLCBBQ00gVHJhbnMuIEdyYXBoLiwgdm9sLiAyMywgcHAuIDMwOeKAkzMxNCwKICAqIDIwMDQuCiAgKgpAQCAtODQsMTEgKzg0LDkgQEAKICNpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgImdzdGdyYWJjdXQuaCIKIGV4dGVybiAiQyIKIHsKLSNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9tZXRhLmg+CiAjaW5jbHVkZSA8b3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2NfYy5oPgogfQogI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jLmhwcD4KQEAgLTMyNiw4ICszMjQsOCBAQAogICBjdkN2dENvbG9yIChnYy0+Y3ZSR0JBaW4sIGdjLT5jdlJHQmluLCBDVl9CR1JBMkJHUik7CiAgIGNvbXBvc2VfbWF0cml4X2Zyb21faW1hZ2UgKGdjLT5ncmFiY3V0X21hc2ssIGdjLT5jdkQpOwogCi0gIC8qICBQYXNzIGN2RCB0byBncmFiY3V0X21hc2sgZm9yIHRoZSBncmFwaGN1dCBzdHVmZiBidXQgdGhhdCBvbmx5IGlmIAotICAgICByZWFsbHkgdGhlcmUgaXMgc29tZXRoaW5nIGluIHRoZSBtYXNrISBvdGhlcndpc2UgLS0+aW5wdXQgYmJveCBpcyAKKyAgLyogIFBhc3MgY3ZEIHRvIGdyYWJjdXRfbWFzayBmb3IgdGhlIGdyYXBoY3V0IHN0dWZmIGJ1dCB0aGF0IG9ubHkgaWYKKyAgICAgcmVhbGx5IHRoZXJlIGlzIHNvbWV0aGluZyBpbiB0aGUgbWFzayEgb3RoZXJ3aXNlIC0tPmlucHV0IGJib3ggaXMKICAgICAgd2hhdCB3ZSB1c2UgKi8KICAgYWxwaGFwaXhlbHMgPSBjdkNvdW50Tm9uWmVybyAoZ2MtPmN2RCk7CiAgIGlmICgoMCA8IGFscGhhcGl4ZWxzKSAmJiAoYWxwaGFwaXhlbHMgPCAoZ2MtPndpZHRoICogZ2MtPmhlaWdodCkpKSB7CmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuYyBiL2V4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jcHAKc2ltaWxhcml0eSBpbmRleCA2NiUKcmVuYW1lIGZyb20gZXh0L29wZW5jdi9nc3RoYW5kZGV0ZWN0LmMKcmVuYW1lIHRvIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jcHAKaW5kZXggYzRkZDM5MC4uZTM2YjgwZSAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RoYW5kZGV0ZWN0LmMKKysrIGIvZXh0L29wZW5jdi9nc3RoYW5kZGV0ZWN0LmNwcApAQCAtNjIsNyArNjIsNiBAQAogCiAvKiBlbGVtZW50IGhlYWRlciAqLwogI2luY2x1ZGUgImdzdGhhbmRkZXRlY3QuaCIKLSNpbmNsdWRlICJnc3RvcGVuY3Z1dGlscy5oIgogI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jX2MuaD4KIAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X2hhbmRkZXRlY3RfZGVidWcpOwpAQCAtNzIsNiArNzEsNyBAQAogI2RlZmluZSBIQUFSX0ZJTEVfRklTVCBHU1RfSEFBUl9DQVNDQURFU19ESVIgR19ESVJfU0VQQVJBVE9SX1MgImZpc3QueG1sIgogI2RlZmluZSBIQUFSX0ZJTEVfUEFMTSBHU1RfSEFBUl9DQVNDQURFU19ESVIgR19ESVJfU0VQQVJBVE9SX1MgInBhbG0ueG1sIgogCit1c2luZyBuYW1lc3BhY2UgY3Y7CiAvKiBGaWx0ZXIgc2lnbmFscyBhbmQgYXJncyAqLwogZW51bQogewpAQCAtMTEzLDggKzExMyw4IEBACiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfaGFuZGRldGVjdF90cmFuc2Zvcm1faXAgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICoKICAgICB0cmFuc2Zvcm0sIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgSXBsSW1hZ2UgKiBpbWcpOwogCi1zdGF0aWMgQ3ZIYWFyQ2xhc3NpZmllckNhc2NhZGUgKmdzdF9oYW5kZGV0ZWN0X2xvYWRfcHJvZmlsZSAoR3N0SGFuZGRldGVjdCAqCi0gICAgZmlsdGVyLCBnY2hhciAqIHByb2ZpbGUpOworc3RhdGljIENhc2NhZGVDbGFzc2lmaWVyICpnc3RfaGFuZGRldGVjdF9sb2FkX3Byb2ZpbGUgKEdzdEhhbmRkZXRlY3QgKiBmaWx0ZXIsCisgICAgZ2NoYXIgKiBwcm9maWxlKTsKIAogc3RhdGljIHZvaWQgZ3N0X2hhbmRkZXRlY3RfbmF2aWdhdGlvbl9pbnRlcmZhY2VfaW5pdCAoR3N0TmF2aWdhdGlvbkludGVyZmFjZSAqCiAgICAgaWZhY2UpOwpAQCAtMTYwLDEwICsxNjAsOSBAQAogCiAgIGlmIChmaWx0ZXItPmN2R3JheSkKICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZHcmF5KTsKLSAgaWYgKGZpbHRlci0+Y3ZTdG9yYWdlKQotICAgIGN2UmVsZWFzZU1lbVN0b3JhZ2UgKCZmaWx0ZXItPmN2U3RvcmFnZSk7CiAgIGdfZnJlZSAoZmlsdGVyLT5wcm9maWxlX2Zpc3QpOwogICBnX2ZyZWUgKGZpbHRlci0+cHJvZmlsZV9wYWxtKTsKKyAgZGVsZXRlIChmaWx0ZXItPmJlc3Rfcik7CiAKICAgR19PQkpFQ1RfQ0xBU1MgKGdzdF9oYW5kZGV0ZWN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmopOwogfQpAQCAtMTkxLDUzICsxOTAsNTMgQEAKICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiZGlzcGxheSIsCiAgICAgICAgICAgIkRpc3BsYXkiLAogICAgICAgICAgICJXaGV0aGVyIHRoZSBkZXRlY3RlZCBoYW5kcyBhcmUgaGlnaGxpZ2h0ZWQgaW4gb3V0cHV0IGZyYW1lIiwKLSAgICAgICAgICBUUlVFLCBHX1BBUkFNX1JFQURXUklURSkKKyAgICAgICAgICBUUlVFLCAoR1BhcmFtRmxhZ3MpR19QQVJBTV9SRUFEV1JJVEUpCiAgICAgICApOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAogICAgICAgUFJPUF9QUk9GSUxFX0ZJU1QsCiAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgicHJvZmlsZV9maXN0IiwKICAgICAgICAgICAiUHJvZmlsZV9maXN0IiwKICAgICAgICAgICAiTG9jYXRpb24gb2YgSEFBUiBjYXNjYWRlIGZpbGUgKGZpc3QgZ2VzdHVyZSkiLAotICAgICAgICAgIEhBQVJfRklMRV9GSVNULCBHX1BBUkFNX1JFQURXUklURSkKKyAgICAgICAgICBIQUFSX0ZJTEVfRklTVCwgKEdQYXJhbUZsYWdzKUdfUEFSQU1fUkVBRFdSSVRFKQogICAgICAgKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKICAgICAgIFBST1BfUFJPRklMRV9QQUxNLAogICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoInByb2ZpbGVfcGFsbSIsCiAgICAgICAgICAgIlByb2ZpbGVfcGFsbSIsCiAgICAgICAgICAgIkxvY2F0aW9uIG9mIEhBQVIgY2FzY2FkZSBmaWxlIChwYWxtIGdlc3R1cmUpIiwKLSAgICAgICAgICBIQUFSX0ZJTEVfUEFMTSwgR19QQVJBTV9SRUFEV1JJVEUpCisgICAgICAgICAgSEFBUl9GSUxFX1BBTE0sIChHUGFyYW1GbGFncylHX1BBUkFNX1JFQURXUklURSkKICAgICAgICk7CiAgIC8qIEZJWE1FOiBwcm9wZXJ0eSBuYW1lIG5lZWRzIGZpeGluZyAqLwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAogICAgICAgUFJPUF9ST0lfWCwKLSAgICAgIGdfcGFyYW1fc3BlY191aW50ICgiUk9JX1giLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIlJPSV9YIiwKICAgICAgICAgICAiUk9JX1giLAogICAgICAgICAgICJYIG9mIGxlZnQtdG9wIHBvaW50ZXIgaW4gcmVnaW9uIG9mIGludGVyZXN0IFxuR2VzdHVyZXMgaW4gdGhlIGRlZmluZWQgcmVnaW9uIG9mIGludGVyZXN0IHdpbGwgZW1pdCBtZXNzYWdlcyIsCi0gICAgICAgICAgMCwgVUlOVF9NQVgsIDAsIEdfUEFSQU1fUkVBRFdSSVRFKQorICAgICAgICAgIDAsIElOVF9NQVgsIDAsIChHUGFyYW1GbGFncylHX1BBUkFNX1JFQURXUklURSkKICAgICAgICk7CiAgIC8qIEZJWE1FOiBwcm9wZXJ0eSBuYW1lIG5lZWRzIGZpeGluZyAqLwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAogICAgICAgUFJPUF9ST0lfWSwKLSAgICAgIGdfcGFyYW1fc3BlY191aW50ICgiUk9JX1kiLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIlJPSV9ZIiwKICAgICAgICAgICAiUk9JX1kiLAogICAgICAgICAgICJZIG9mIGxlZnQtdG9wIHBvaW50ZXIgaW4gcmVnaW9uIG9mIGludGVyZXN0IFxuR2VzdHVyZXMgaW4gdGhlIGRlZmluZWQgcmVnaW9uIG9mIGludGVyZXN0IHdpbGwgZW1pdCBtZXNzYWdlcyIsCi0gICAgICAgICAgMCwgVUlOVF9NQVgsIDAsIEdfUEFSQU1fUkVBRFdSSVRFKQorICAgICAgICAgIDAsIElOVF9NQVgsIDAsIChHUGFyYW1GbGFncylHX1BBUkFNX1JFQURXUklURSkKICAgICAgICk7CiAgIC8qIEZJWE1FOiBwcm9wZXJ0eSBuYW1lIG5lZWRzIGZpeGluZyAqLwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAogICAgICAgUFJPUF9ST0lfV0lEVEgsCi0gICAgICBnX3BhcmFtX3NwZWNfdWludCAoIlJPSV9XSURUSCIsCisgICAgICBnX3BhcmFtX3NwZWNfaW50ICgiUk9JX1dJRFRIIiwKICAgICAgICAgICAiUk9JX1dJRFRIIiwKICAgICAgICAgICAiV0lEVEggb2YgbGVmdC10b3AgcG9pbnRlciBpbiByZWdpb24gb2YgaW50ZXJlc3QgXG5HZXN0dXJlcyBpbiB0aGUgZGVmaW5lZCByZWdpb24gb2YgaW50ZXJlc3Qgd2lsbCBlbWl0IG1lc3NhZ2VzIiwKLSAgICAgICAgICAwLCBVSU5UX01BWCwgMCwgR19QQVJBTV9SRUFEV1JJVEUpCisgICAgICAgICAgMCwgSU5UX01BWCwgMCwgKEdQYXJhbUZsYWdzKUdfUEFSQU1fUkVBRFdSSVRFKQogICAgICAgKTsKICAgLyogRklYTUU6IHByb3BlcnR5IG5hbWUgbmVlZHMgZml4aW5nICovCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCiAgICAgICBQUk9QX1JPSV9IRUlHSFQsCi0gICAgICBnX3BhcmFtX3NwZWNfdWludCAoIlJPSV9IRUlHSFQiLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIlJPSV9IRUlHSFQiLAogICAgICAgICAgICJST0lfSEVJR0hUIiwKICAgICAgICAgICAiSEVJR0hUIG9mIGxlZnQtdG9wIHBvaW50ZXIgaW4gcmVnaW9uIG9mIGludGVyZXN0IFxuR2VzdHVyZXMgaW4gdGhlIGRlZmluZWQgcmVnaW9uIG9mIGludGVyZXN0IHdpbGwgZW1pdCBtZXNzYWdlcyIsCi0gICAgICAgICAgMCwgVUlOVF9NQVgsIDAsIEdfUEFSQU1fUkVBRFdSSVRFKQorICAgICAgICAgIDAsIElOVF9NQVgsIDAsIChHUGFyYW1GbGFncylHX1BBUkFNX1JFQURXUklURSkKICAgICAgICk7CiAKICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZWxlbWVudF9jbGFzcywKQEAgLTI2MSw4ICsyNjAsMTcgQEAKIHN0YXRpYyB2b2lkCiBnc3RfaGFuZGRldGVjdF9pbml0IChHc3RIYW5kZGV0ZWN0ICogZmlsdGVyKQogewotICBmaWx0ZXItPnByb2ZpbGVfZmlzdCA9IGdfc3RyZHVwIChIQUFSX0ZJTEVfRklTVCk7Ci0gIGZpbHRlci0+cHJvZmlsZV9wYWxtID0gZ19zdHJkdXAgKEhBQVJfRklMRV9QQUxNKTsKKyAgY29uc3QgZ2NoYXIgKmhhYXJfcGF0aDsKKworICBoYWFyX3BhdGggPSBnX2dldGVudiAoIkdTVF9IQUFSX0NBU0NBREVTX1BBVEgiKTsKKyAgaWYgKGhhYXJfcGF0aCkgeworICAgIGZpbHRlci0+cHJvZmlsZV9maXN0ID0gZ19idWlsZF9maWxlbmFtZSAoaGFhcl9wYXRoLCAiZmlzdC54bWwiLCBOVUxMKTsKKyAgICBmaWx0ZXItPnByb2ZpbGVfcGFsbSA9IGdfYnVpbGRfZmlsZW5hbWUgKGhhYXJfcGF0aCwgInBhbG0ueG1sIiwgTlVMTCk7CisgIH0gZWxzZSB7CisgICAgZmlsdGVyLT5wcm9maWxlX2Zpc3QgPSBnX3N0cmR1cCAoSEFBUl9GSUxFX0ZJU1QpOworICAgIGZpbHRlci0+cHJvZmlsZV9wYWxtID0gZ19zdHJkdXAgKEhBQVJfRklMRV9QQUxNKTsKKyAgfQorCiAgIGZpbHRlci0+cm9pX3ggPSAwOwogICBmaWx0ZXItPnJvaV95ID0gMDsKICAgZmlsdGVyLT5yb2lfd2lkdGggPSAwOwpAQCAtMjg4LDcgKzI5Niw3IEBACiAgICAgY2FzZSBQUk9QX1BST0ZJTEVfRklTVDoKICAgICAgIGdfZnJlZSAoZmlsdGVyLT5wcm9maWxlX2Zpc3QpOwogICAgICAgaWYgKGZpbHRlci0+Y3ZDYXNjYWRlX2Zpc3QpCi0gICAgICAgIGN2UmVsZWFzZUhhYXJDbGFzc2lmaWVyQ2FzY2FkZSAoJmZpbHRlci0+Y3ZDYXNjYWRlX2Zpc3QpOworICAgICAgICBkZWxldGUgZmlsdGVyLT5jdkNhc2NhZGVfZmlzdDsKICAgICAgIGZpbHRlci0+cHJvZmlsZV9maXN0ID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CiAgICAgICBmaWx0ZXItPmN2Q2FzY2FkZV9maXN0ID0KICAgICAgICAgICBnc3RfaGFuZGRldGVjdF9sb2FkX3Byb2ZpbGUgKGZpbHRlciwgZmlsdGVyLT5wcm9maWxlX2Zpc3QpOwpAQCAtMjk2LDcgKzMwNCw3IEBACiAgICAgY2FzZSBQUk9QX1BST0ZJTEVfUEFMTToKICAgICAgIGdfZnJlZSAoZmlsdGVyLT5wcm9maWxlX3BhbG0pOwogICAgICAgaWYgKGZpbHRlci0+Y3ZDYXNjYWRlX3BhbG0pCi0gICAgICAgIGN2UmVsZWFzZUhhYXJDbGFzc2lmaWVyQ2FzY2FkZSAoJmZpbHRlci0+Y3ZDYXNjYWRlX3BhbG0pOworICAgICAgICBkZWxldGUgZmlsdGVyLT5jdkNhc2NhZGVfcGFsbTsKICAgICAgIGZpbHRlci0+cHJvZmlsZV9wYWxtID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CiAgICAgICBmaWx0ZXItPmN2Q2FzY2FkZV9wYWxtID0KICAgICAgICAgICBnc3RfaGFuZGRldGVjdF9sb2FkX3Byb2ZpbGUgKGZpbHRlciwgZmlsdGVyLT5wcm9maWxlX3BhbG0pOwpAQCAtMzA1LDE2ICszMTMsMTYgQEAKICAgICAgIGZpbHRlci0+ZGlzcGxheSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9ST0lfWDoKLSAgICAgIGZpbHRlci0+cm9pX3ggPSBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSk7CisgICAgICBmaWx0ZXItPnJvaV94ID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfUk9JX1k6Ci0gICAgICBmaWx0ZXItPnJvaV95ID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOworICAgICAgZmlsdGVyLT5yb2lfeSA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1JPSV9XSURUSDoKLSAgICAgIGZpbHRlci0+cm9pX3dpZHRoID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOworICAgICAgZmlsdGVyLT5yb2lfd2lkdGggPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9ST0lfSEVJR0hUOgotICAgICAgZmlsdGVyLT5yb2lfaGVpZ2h0ID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOworICAgICAgZmlsdGVyLT5yb2lfaGVpZ2h0ID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKQEAgLTMzOSwxNiArMzQ3LDE2IEBACiAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBmaWx0ZXItPnByb2ZpbGVfcGFsbSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfUk9JX1g6Ci0gICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgZmlsdGVyLT5yb2lfeCk7CisgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBmaWx0ZXItPnJvaV94KTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9ST0lfWToKLSAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBmaWx0ZXItPnJvaV95KTsKKyAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIGZpbHRlci0+cm9pX3kpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1JPSV9XSURUSDoKLSAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBmaWx0ZXItPnJvaV93aWR0aCk7CisgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBmaWx0ZXItPnJvaV93aWR0aCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfUk9JX0hFSUdIVDoKLSAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBmaWx0ZXItPnJvaV9oZWlnaHQpOworICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgZmlsdGVyLT5yb2lfaGVpZ2h0KTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwpAQCAtMzc2LDEwICszODQsNiBAQAogICBmaWx0ZXItPmN2R3JheSA9CiAgICAgICBjdkNyZWF0ZUltYWdlIChjdlNpemUgKGluX3dpZHRoLCBpbl9oZWlnaHQpLCBJUExfREVQVEhfOFUsIDEpOwogCi0gIGlmICghZmlsdGVyLT5jdlN0b3JhZ2UpCi0gICAgZmlsdGVyLT5jdlN0b3JhZ2UgPSBjdkNyZWF0ZU1lbVN0b3JhZ2UgKDApOwotICBlbHNlCi0gICAgY3ZDbGVhck1lbVN0b3JhZ2UgKGZpbHRlci0+Y3ZTdG9yYWdlKTsKICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTM5MSwxNDcgKzM5NSw1NCBAQAogICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgSXBsSW1hZ2UgKiBpbWcpCiB7CiAgIEdzdEhhbmRkZXRlY3QgKmZpbHRlciA9IEdTVF9IQU5EREVURUNUICh0cmFuc2Zvcm0pOwotICBDdlNlcSAqaGFuZHM7Ci0gIEN2UmVjdCAqcjsKKyAgUmVjdCAqcjsKICAgR3N0U3RydWN0dXJlICpzOwogICBHc3RNZXNzYWdlICptOwotICBpbnQgaTsKKyAgdW5zaWduZWQgaW50IGk7CisgIHZlY3RvciA8IFJlY3QgPiBoYW5kczsKIAogICAvKiBjaGVjayBkZXRlY3Rpb24gY2FzY2FkZXMgKi8KLSAgaWYgKCFmaWx0ZXItPmN2Q2FzY2FkZV9maXN0IHx8ICFmaWx0ZXItPmN2Q2FzY2FkZV9wYWxtKQotICAgIHJldHVybiBHU1RfRkxPV19PSzsKLQorICBpZiAoZmlsdGVyLT5jdkNhc2NhZGVfZmlzdCAmJiBmaWx0ZXItPmN2Q2FzY2FkZV9wYWxtKSB7CiAgIC8qIGN2dCB0byBncmF5IGNvbG91ciBzcGFjZSBmb3IgaGFuZCBkZXRlY3QgKi8KLSAgY3ZDdnRDb2xvciAoaW1nLCBmaWx0ZXItPmN2R3JheSwgQ1ZfUkdCMkdSQVkpOwotICBjdkNsZWFyTWVtU3RvcmFnZSAoZmlsdGVyLT5jdlN0b3JhZ2UpOworICAgIGN2Q3Z0Q29sb3IgKGltZywgZmlsdGVyLT5jdkdyYXksIENWX1JHQjJHUkFZKTsKIAotICAvKiBkZXRlY3QgRklTVCBnZXN0dXJlIGZpc3QgKi8KLSAgaGFuZHMgPQotICAgICAgY3ZIYWFyRGV0ZWN0T2JqZWN0cyAoZmlsdGVyLT5jdkdyYXksIGZpbHRlci0+Y3ZDYXNjYWRlX2Zpc3QsCi0gICAgICBmaWx0ZXItPmN2U3RvcmFnZSwgMS4xLCAyLCBDVl9IQUFSX0RPX0NBTk5ZX1BSVU5JTkcsIGN2U2l6ZSAoMjQsIDI0KSwKLSAgICAgIGN2U2l6ZSAoMCwgMCkpOworICAgIC8qIGRldGVjdCBGSVNUIGdlc3R1cmUgZmlzdCAqLworICAgIE1hdCByb2kgKGZpbHRlci0+Y3ZHcmF5LCBSZWN0IChmaWx0ZXItPmN2R3JheS0+b3JpZ2luLAorICAgICAgICAgICAgZmlsdGVyLT5jdkdyYXktPm9yaWdpbiwgZmlsdGVyLT5jdkdyYXktPndpZHRoLAorICAgICAgICAgICAgZmlsdGVyLT5jdkdyYXktPmhlaWdodCkpOworICAgIGZpbHRlci0+Y3ZDYXNjYWRlX2Zpc3QtPmRldGVjdE11bHRpU2NhbGUgKHJvaSwgaGFuZHMsIDEuMSwgMiwKKyAgICAgICAgQ1ZfSEFBUl9ET19DQU5OWV9QUlVOSU5HLCBjdlNpemUgKDI0LCAyNCksIGN2U2l6ZSAoMCwgMCkpOwogCi0gIC8qIGlmIEZJU1QgZ2VzdHVyZSBkZXRlY3RlZCAqLwotICBpZiAoaGFuZHMgJiYgaGFuZHMtPnRvdGFsID4gMCkgewotICAgIGludCBtaW5fZGlzdGFuY2UsIGRpc3RhbmNlOwotICAgIEN2UmVjdCB0ZW1wX3I7Ci0gICAgQ3ZQb2ludCBjOworICAgIC8qIGlmIEZJU1QgZ2VzdHVyZSBkZXRlY3RlZCAqLworICAgIGlmICghaGFuZHMuZW1wdHkgKCkpIHsKIAotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZpbHRlciwgIiVkIEZJU1QgZ2VzdHVyZXMgZGV0ZWN0ZWRcbiIsCi0gICAgICAgIChpbnQpIGhhbmRzLT50b3RhbCk7Ci0KLSAgICAvKiBHbyB0aHJvdWdoIGFsbCBkZXRlY3RlZCBGSVNUIGdlc3R1cmVzIHRvIGdldCB0aGUgYmVzdCBvbmUKLSAgICAgKiBwcmV2X3IgPT4gcHJldmlvdXMgaGFuZAotICAgICAqIGJlc3RfciA9PiBiZXN0IGhhbmQgaW4gdGhpcyBmcmFtZQotICAgICAqLwotICAgIC8qIHNldCBtaW5fZGlzdGFuY2UgZm9yIGluaXQgY29tcGFyaXNvbiAqLwotICAgIG1pbl9kaXN0YW5jZSA9IGltZy0+d2lkdGggKyBpbWctPmhlaWdodDsKLSAgICAvKiBJbml0IGZpbHRlci0+cHJldl9yICovCi0gICAgdGVtcF9yID0gY3ZSZWN0ICgwLCAwLCAwLCAwKTsKLSAgICBpZiAoZmlsdGVyLT5wcmV2X3IgPT0gTlVMTCkKLSAgICAgIGZpbHRlci0+cHJldl9yID0gJnRlbXBfcjsKLSAgICAvKiBHZXQgdGhlIGJlc3QgRklTVCBnZXN0dXJlICovCi0gICAgZm9yIChpID0gMDsgaSA8IGhhbmRzLT50b3RhbDsgaSsrKSB7Ci0gICAgICByID0gKEN2UmVjdCAqKSBjdkdldFNlcUVsZW0gKGhhbmRzLCBpKTsKLSAgICAgIGRpc3RhbmNlID0gKGludCkgc3FydCAocG93ICgoci0+eCAtIGZpbHRlci0+cHJldl9yLT54KSwKLSAgICAgICAgICAgICAgMikgKyBwb3cgKChyLT55IC0gZmlsdGVyLT5wcmV2X3ItPnkpLCAyKSk7Ci0gICAgICBpZiAoZGlzdGFuY2UgPD0gbWluX2Rpc3RhbmNlKSB7Ci0gICAgICAgIG1pbl9kaXN0YW5jZSA9IGRpc3RhbmNlOwotICAgICAgICBmaWx0ZXItPmJlc3RfciA9IHI7Ci0gICAgICB9Ci0gICAgfQotICAgIC8qIFNhdmUgYmVzdF9yIGFzIHByZXZfciBmb3IgbmV4dCBmcmFtZSBjb21wYXJpc29uICovCi0gICAgZmlsdGVyLT5wcmV2X3IgPSAoQ3ZSZWN0ICopIGZpbHRlci0+YmVzdF9yOwotICAgIC8qIHNlbmQgbXNnIHRvIGFwcC9idXMgaWYgdGhlIGRldGVjdGVkIGdlc3R1cmUgZmFsbHMgaW4gdGhlIHJlZ2lvbiBvZiBpbnRlcmVzdCAqLwotICAgIC8qIGdldCBjZW50ZXIgcG9pbnQgb2YgZ2VzdHVyZSAqLwotICAgIGMgPSBjdlBvaW50IChmaWx0ZXItPmJlc3Rfci0+eCArIGZpbHRlci0+YmVzdF9yLT53aWR0aCAvIDIsCi0gICAgICAgIGZpbHRlci0+YmVzdF9yLT55ICsgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCAvIDIpOwotICAgIC8qIHNlbmQgbWVzc2FnZToKLSAgICAgKiBpZiB0aGUgY2VudGVyIHBvaW50IGlzIGluIHRoZSByZWdpb24gb2YgaW50ZXJlc3QsIE9SLAotICAgICAqIGlmIHRoZSByZWdpb24gb2YgaW50ZXJlc3QgcmVtYWlucyBkZWZhdWx0IGFzICgwLDAsMCwwKSovCi0gICAgaWYgKChjLnggPj0gZmlsdGVyLT5yb2lfeCAmJiBjLnggPD0gKGZpbHRlci0+cm9pX3ggKyBmaWx0ZXItPnJvaV93aWR0aCkKLSAgICAgICAgICAgICYmIGMueSA+PSBmaWx0ZXItPnJvaV95Ci0gICAgICAgICAgICAmJiBjLnkgPD0gKGZpbHRlci0+cm9pX3kgKyBmaWx0ZXItPnJvaV9oZWlnaHQpKQotICAgICAgICB8fCAoZmlsdGVyLT5yb2lfeCA9PSAwCi0gICAgICAgICAgICAmJiBmaWx0ZXItPnJvaV95ID09IDAKLSAgICAgICAgICAgICYmIGZpbHRlci0+cm9pX3dpZHRoID09IDAgJiYgZmlsdGVyLT5yb2lfaGVpZ2h0ID09IDApKSB7Ci0gICAgICAvKiBEZWZpbmUgc3RydWN0dXJlIGZvciBtZXNzYWdlIHBvc3QgKi8KLSAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoImhhbmQtZ2VzdHVyZSIsCi0gICAgICAgICAgImdlc3R1cmUiLCBHX1RZUEVfU1RSSU5HLCAiZmlzdCIsCi0gICAgICAgICAgIngiLCBHX1RZUEVfVUlOVCwKLSAgICAgICAgICAoZ3VpbnQpIChmaWx0ZXItPmJlc3Rfci0+eCArIGZpbHRlci0+YmVzdF9yLT53aWR0aCAqIDAuNSksICJ5IiwKLSAgICAgICAgICBHX1RZUEVfVUlOVCwKLSAgICAgICAgICAoZ3VpbnQpIChmaWx0ZXItPmJlc3Rfci0+eSArIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQgKiAwLjUpLCAid2lkdGgiLAotICAgICAgICAgIEdfVFlQRV9VSU5ULCAoZ3VpbnQpIGZpbHRlci0+YmVzdF9yLT53aWR0aCwgImhlaWdodCIsIEdfVFlQRV9VSU5ULAotICAgICAgICAgIChndWludCkgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCwgTlVMTCk7Ci0gICAgICAvKiBJbml0IG1lc3NhZ2UgZWxlbWVudCAqLwotICAgICAgbSA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChmaWx0ZXIpLCBzKTsKLSAgICAgIC8qIFNlbmQgbWVzc2FnZSAqLwotICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgbSk7Ci0KLSNpZiAwCi0gICAgICAvKiBzZW5kIGV2ZW50Ci0gICAgICAgKiBoZXJlIHdlIHVzZSBtb3VzZS1tb3ZlIGV2ZW50IGluc3RlYWQgb2YgZmlzdC1tb3ZlIG9yIHBhbG0tbW92ZSBldmVudAotICAgICAgICogISEhIHRoaXMgd2lsbCBDSEFOR0UgaW4gdGhlIGZ1dHVyZSAhISEKLSAgICAgICAqICEhISBieSBhZGRpbmcgZ3N0X25hdmlnYXRpb25fc2VuZF9oYW5kX2RldGVjdF9ldmVudCgpIGluIG5hdmlnYXRpb24uYyAhISEKLSAgICAgICAqLwotICAgICAgZ3N0X25hdmlnYXRpb25fc2VuZF9tb3VzZV9ldmVudCAoR1NUX05BVklHQVRJT04gKGZpbHRlciksCi0gICAgICAgICAgIm1vdXNlLW1vdmUiLAotICAgICAgICAgIDAsCi0gICAgICAgICAgKGRvdWJsZSkgKGZpbHRlci0+YmVzdF9yLT54ICsgZmlsdGVyLT5iZXN0X3ItPndpZHRoICogMC41KSwKLSAgICAgICAgICAoZG91YmxlKSAoZmlsdGVyLT5iZXN0X3ItPnkgKyBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0ICogMC41KSk7Ci0jZW5kaWYKLSAgICB9Ci0gICAgLyogQ2hlY2sgZmlsdGVyLT5kaXNwbGF5LAotICAgICAqIElmIFRSVUUsIGRpc3BsYXlpbmcgcmVkIGNpcmNsZSBtYXJrZXIgaW4gdGhlIG91dCBmcmFtZSAqLwotICAgIGlmIChmaWx0ZXItPmRpc3BsYXkpIHsKLSAgICAgIEN2UG9pbnQgY2VudGVyOwotICAgICAgaW50IHJhZGl1czsKLSAgICAgIGNlbnRlci54ID0gY3ZSb3VuZCAoKGZpbHRlci0+YmVzdF9yLT54ICsgZmlsdGVyLT5iZXN0X3ItPndpZHRoICogMC41KSk7Ci0gICAgICBjZW50ZXIueSA9IGN2Um91bmQgKChmaWx0ZXItPmJlc3Rfci0+eSArIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQgKiAwLjUpKTsKLSAgICAgIHJhZGl1cyA9Ci0gICAgICAgICAgY3ZSb3VuZCAoKGZpbHRlci0+YmVzdF9yLT53aWR0aCArIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQpICogMC4yNSk7Ci0gICAgICBjdkNpcmNsZSAoaW1nLCBjZW50ZXIsIHJhZGl1cywgQ1ZfUkdCICgwLCAwLCAyMDApLCAxLCA4LCAwKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgLyogaWYgTk8gRklTVCBnZXN0dXJlLCBkZXRlY3RpbmcgUEFMTSBnZXN0dXJlICovCi0gICAgaGFuZHMgPQotICAgICAgICBjdkhhYXJEZXRlY3RPYmplY3RzIChmaWx0ZXItPmN2R3JheSwgZmlsdGVyLT5jdkNhc2NhZGVfcGFsbSwKLSAgICAgICAgZmlsdGVyLT5jdlN0b3JhZ2UsIDEuMSwgMywgQ1ZfSEFBUl9ET19DQU5OWV9QUlVOSU5HLCBjdlNpemUgKDI0LCAyNCksCi0gICAgICAgIGN2U2l6ZSAoMCwgMCkpOwotICAgIC8qIGlmIFBBTE0gZGV0ZWN0ZWQgKi8KLSAgICBpZiAoaGFuZHMgJiYgaGFuZHMtPnRvdGFsID4gMCkgewogICAgICAgaW50IG1pbl9kaXN0YW5jZSwgZGlzdGFuY2U7Ci0gICAgICBDdlJlY3QgdGVtcF9yOworICAgICAgUmVjdCB0ZW1wX3I7CiAgICAgICBDdlBvaW50IGM7Ci0gICAgICAvKiBzZXQgZnJhbWUgYnVmZmVyIHdyaXRhYmxlICovCi0gICAgICBpZiAoZmlsdGVyLT5kaXNwbGF5KSB7Ci0gICAgICAgIGJ1ZmZlciA9IGdzdF9idWZmZXJfbWFrZV93cml0YWJsZSAoYnVmZmVyKTsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmlsdGVyLCAiJWQgUEFMTSBnZXN0dXJlcyBkZXRlY3RlZFxuIiwKLSAgICAgICAgICAgIChpbnQpIGhhbmRzLT50b3RhbCk7Ci0gICAgICB9Ci0gICAgICAvKiBHbyB0aHJvdWdoIGFsbCBkZXRlY3RlZCBQQUxNIGdlc3R1cmVzIHRvIGdldCB0aGUgYmVzdCBvbmUKKworICAgICAgLyogR28gdGhyb3VnaCBhbGwgZGV0ZWN0ZWQgRklTVCBnZXN0dXJlcyB0byBnZXQgdGhlIGJlc3Qgb25lCiAgICAgICAgKiBwcmV2X3IgPT4gcHJldmlvdXMgaGFuZAogICAgICAgICogYmVzdF9yID0+IGJlc3QgaGFuZCBpbiB0aGlzIGZyYW1lCiAgICAgICAgKi8KLSAgICAgIC8qIHN1cHBvc2UgYSBtaW5fZGlzdGFuY2UgZm9yIGluaXQgY29tcGFyaXNvbiAqLworICAgICAgLyogc2V0IG1pbl9kaXN0YW5jZSBmb3IgaW5pdCBjb21wYXJpc29uICovCiAgICAgICBtaW5fZGlzdGFuY2UgPSBpbWctPndpZHRoICsgaW1nLT5oZWlnaHQ7CiAgICAgICAvKiBJbml0IGZpbHRlci0+cHJldl9yICovCi0gICAgICB0ZW1wX3IgPSBjdlJlY3QgKDAsIDAsIDAsIDApOworICAgICAgdGVtcF9yID0gUmVjdCAoMCwgMCwgMCwgMCk7CiAgICAgICBpZiAoZmlsdGVyLT5wcmV2X3IgPT0gTlVMTCkKICAgICAgICAgZmlsdGVyLT5wcmV2X3IgPSAmdGVtcF9yOwotICAgICAgLyogR2V0IHRoZSBiZXN0IFBBTE0gZ2VzdHVyZSAqLwotICAgICAgZm9yIChpID0gMDsgaSA8IGhhbmRzLT50b3RhbDsgaSsrKSB7Ci0gICAgICAgIHIgPSAoQ3ZSZWN0ICopIGN2R2V0U2VxRWxlbSAoaGFuZHMsIGkpOworICAgICAgLyogR2V0IHRoZSBiZXN0IEZJU1QgZ2VzdHVyZSAqLworICAgICAgZm9yIChpID0gMDsgaSA8IGhhbmRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIHIgPSAmaGFuZHNbaV07CiAgICAgICAgIGRpc3RhbmNlID0gKGludCkgc3FydCAocG93ICgoci0+eCAtIGZpbHRlci0+cHJldl9yLT54KSwKICAgICAgICAgICAgICAgICAyKSArIHBvdyAoKHItPnkgLSBmaWx0ZXItPnByZXZfci0+eSksIDIpKTsKICAgICAgICAgaWYgKGRpc3RhbmNlIDw9IG1pbl9kaXN0YW5jZSkgewogICAgICAgICAgIG1pbl9kaXN0YW5jZSA9IGRpc3RhbmNlOwotICAgICAgICAgIGZpbHRlci0+YmVzdF9yID0gcjsKKyAgICAgICAgICBkZWxldGUgKGZpbHRlci0+YmVzdF9yKTsKKyAgICAgICAgICBmaWx0ZXItPmJlc3RfciA9IG5ldyBSZWN0ICgqcik7CiAgICAgICAgIH0KICAgICAgIH0KICAgICAgIC8qIFNhdmUgYmVzdF9yIGFzIHByZXZfciBmb3IgbmV4dCBmcmFtZSBjb21wYXJpc29uICovCi0gICAgICBmaWx0ZXItPnByZXZfciA9IChDdlJlY3QgKikgZmlsdGVyLT5iZXN0X3I7CisgICAgICBmaWx0ZXItPnByZXZfciA9IGZpbHRlci0+YmVzdF9yOwogCiAgICAgICAvKiBzZW5kIG1zZyB0byBhcHAvYnVzIGlmIHRoZSBkZXRlY3RlZCBnZXN0dXJlIGZhbGxzIGluIHRoZSByZWdpb24gb2YgaW50ZXJlc3QgKi8KICAgICAgIC8qIGdldCBjZW50ZXIgcG9pbnQgb2YgZ2VzdHVyZSAqLwpAQCAtNTQ4LDEzICs0NTksMTMgQEAKICAgICAgICAgICAgICAgJiYgZmlsdGVyLT5yb2lfd2lkdGggPT0gMCAmJiBmaWx0ZXItPnJvaV9oZWlnaHQgPT0gMCkpIHsKICAgICAgICAgLyogRGVmaW5lIHN0cnVjdHVyZSBmb3IgbWVzc2FnZSBwb3N0ICovCiAgICAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoImhhbmQtZ2VzdHVyZSIsCi0gICAgICAgICAgICAiZ2VzdHVyZSIsIEdfVFlQRV9TVFJJTkcsICJwYWxtIiwKLSAgICAgICAgICAgICJ4IiwgR19UWVBFX1VJTlQsCi0gICAgICAgICAgICAoZ3VpbnQpIChmaWx0ZXItPmJlc3Rfci0+eCArIGZpbHRlci0+YmVzdF9yLT53aWR0aCAqIDAuNSksICJ5IiwKLSAgICAgICAgICAgIEdfVFlQRV9VSU5ULAotICAgICAgICAgICAgKGd1aW50KSAoZmlsdGVyLT5iZXN0X3ItPnkgKyBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0ICogMC41KSwgIndpZHRoIiwKLSAgICAgICAgICAgIEdfVFlQRV9VSU5ULCAoZ3VpbnQpIGZpbHRlci0+YmVzdF9yLT53aWR0aCwgImhlaWdodCIsIEdfVFlQRV9VSU5ULAotICAgICAgICAgICAgKGd1aW50KSBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0LCBOVUxMKTsKKyAgICAgICAgICAgICJnZXN0dXJlIiwgR19UWVBFX1NUUklORywgImZpc3QiLAorICAgICAgICAgICAgIngiLCBHX1RZUEVfSU5ULAorICAgICAgICAgICAgKGdpbnQpIChmaWx0ZXItPmJlc3Rfci0+eCArIGZpbHRlci0+YmVzdF9yLT53aWR0aCAqIDAuNSksICJ5IiwKKyAgICAgICAgICAgIEdfVFlQRV9JTlQsCisgICAgICAgICAgICAoZ2ludCkgKGZpbHRlci0+YmVzdF9yLT55ICsgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCAqIDAuNSksICJ3aWR0aCIsCisgICAgICAgICAgICBHX1RZUEVfSU5ULCAoZ2ludCkgZmlsdGVyLT5iZXN0X3ItPndpZHRoLCAiaGVpZ2h0IiwgR19UWVBFX0lOVCwKKyAgICAgICAgICAgIChnaW50KSBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0LCBOVUxMKTsKICAgICAgICAgLyogSW5pdCBtZXNzYWdlIGVsZW1lbnQgKi8KICAgICAgICAgbSA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChmaWx0ZXIpLCBzKTsKICAgICAgICAgLyogU2VuZCBtZXNzYWdlICovCkBAIC01NzIsMjAgKzQ4Myw2IEBACiAgICAgICAgICAgICAoZG91YmxlKSAoZmlsdGVyLT5iZXN0X3ItPnggKyBmaWx0ZXItPmJlc3Rfci0+d2lkdGggKiAwLjUpLAogICAgICAgICAgICAgKGRvdWJsZSkgKGZpbHRlci0+YmVzdF9yLT55ICsgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCAqIDAuNSkpOwogCi0gICAgICAgIC8qIG9yIHVzZSBhbm90aGVyIHdheSB0byBzZW5kIHVwc3RyZWFtIG5hdmlnYXRpb24gZXZlbnQgZm9yIGRlYnVnCi0gICAgICAgICAqCi0gICAgICAgICAqIEdzdEV2ZW50ICpldmVudCA9Ci0gICAgICAgICAqIGdzdF9ldmVudF9uZXdfbmF2aWdhdGlvbiAoZ3N0X3N0cnVjdHVyZV9uZXcKLSAgICAgICAgICogKCJhcHBsaWNhdGlvbi94LWdzdC1uYXZpZ2F0aW9uIiwgImV2ZW50IiwgR19UWVBFX1NUUklORywKLSAgICAgICAgICogIm1vdXNlLW1vdmUiLAotICAgICAgICAgKiAiYnV0dG9uIiwgR19UWVBFX0lOVCwgMCwKLSAgICAgICAgICogInBvaW50ZXJfeCIsIEdfVFlQRV9ET1VCTEUsCi0gICAgICAgICAqIChkb3VibGUpIChmaWx0ZXItPmJlc3Rfci0+eCArIGZpbHRlci0+YmVzdF9yLT53aWR0aCAqIDAuNSksCi0gICAgICAgICAqICJwb2ludGVyX3kiLCBHX1RZUEVfRE9VQkxFLAotICAgICAgICAgKiAoZG91YmxlKSAoZmlsdGVyLT5iZXN0X3ItPnkgKyBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0ICogMC41KSwKLSAgICAgICAgICogTlVMTCkpOwotICAgICAgICAgKiBnc3RfcGFkX3NlbmRfZXZlbnQgKEdTVF9CQVNFX1RSQU5TRk9STV9DQVNUIChmaWx0ZXIpLT5zcmNwYWQsIGV2ZW50KTsKLSAgICAgICAgICovCiAjZW5kaWYKICAgICAgIH0KICAgICAgIC8qIENoZWNrIGZpbHRlci0+ZGlzcGxheSwKQEAgLTU5OSw2ICs0OTYsMTEzIEBACiAgICAgICAgICAgICBjdlJvdW5kICgoZmlsdGVyLT5iZXN0X3ItPndpZHRoICsgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCkgKiAwLjI1KTsKICAgICAgICAgY3ZDaXJjbGUgKGltZywgY2VudGVyLCByYWRpdXMsIENWX1JHQiAoMCwgMCwgMjAwKSwgMSwgOCwgMCk7CiAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgLyogaWYgTk8gRklTVCBnZXN0dXJlLCBkZXRlY3RpbmcgUEFMTSBnZXN0dXJlICovCisgICAgICBmaWx0ZXItPmN2Q2FzY2FkZV9wYWxtLT5kZXRlY3RNdWx0aVNjYWxlIChyb2ksIGhhbmRzLCAxLjEsIDIsCisgICAgICAgICAgQ1ZfSEFBUl9ET19DQU5OWV9QUlVOSU5HLCBjdlNpemUgKDI0LCAyNCksIGN2U2l6ZSAoMCwgMCkpOworICAgICAgLyogaWYgUEFMTSBkZXRlY3RlZCAqLworICAgICAgaWYgKCFoYW5kcy5lbXB0eSAoKSkgeworICAgICAgICBpbnQgbWluX2Rpc3RhbmNlLCBkaXN0YW5jZTsKKyAgICAgICAgUmVjdCB0ZW1wX3I7CisgICAgICAgIEN2UG9pbnQgYzsKKworICAgICAgICBpZiAoZmlsdGVyLT5kaXNwbGF5KSB7CisgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmlsdGVyLCAiJWQgUEFMTSBnZXN0dXJlcyBkZXRlY3RlZFxuIiwKKyAgICAgICAgICAgICAgKGludCkgaGFuZHMuc2l6ZSAoKSk7CisgICAgICAgIH0KKyAgICAgICAgLyogR28gdGhyb3VnaCBhbGwgZGV0ZWN0ZWQgUEFMTSBnZXN0dXJlcyB0byBnZXQgdGhlIGJlc3Qgb25lCisgICAgICAgICAqIHByZXZfciA9PiBwcmV2aW91cyBoYW5kCisgICAgICAgICAqIGJlc3RfciA9PiBiZXN0IGhhbmQgaW4gdGhpcyBmcmFtZQorICAgICAgICAgKi8KKyAgICAgICAgLyogc3VwcG9zZSBhIG1pbl9kaXN0YW5jZSBmb3IgaW5pdCBjb21wYXJpc29uICovCisgICAgICAgIG1pbl9kaXN0YW5jZSA9IGltZy0+d2lkdGggKyBpbWctPmhlaWdodDsKKyAgICAgICAgLyogSW5pdCBmaWx0ZXItPnByZXZfciAqLworICAgICAgICB0ZW1wX3IgPSBSZWN0ICgwLCAwLCAwLCAwKTsKKyAgICAgICBpZiAoZmlsdGVyLT5wcmV2X3IgPT0gTlVMTCkKKyAgICAgICAgICBmaWx0ZXItPnByZXZfciA9ICZ0ZW1wX3I7CisgICAgICAgIC8qIEdldCB0aGUgYmVzdCBQQUxNIGdlc3R1cmUgKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGhhbmRzLnNpemUgKCk7ICsraSkgeworICAgICAgICAgIHIgPSAmaGFuZHNbaV07CisgICAgICAgICAgZGlzdGFuY2UgPSAoaW50KSBzcXJ0IChwb3cgKChyLT54IC0gZmlsdGVyLT5wcmV2X3ItPngpLAorICAgICAgICAgICAgICAgICAgMikgKyBwb3cgKChyLT55IC0gZmlsdGVyLT5wcmV2X3ItPnkpLCAyKSk7CisgICAgICAgICAgaWYgKGRpc3RhbmNlIDw9IG1pbl9kaXN0YW5jZSkgeworICAgICAgICAgICAgbWluX2Rpc3RhbmNlID0gZGlzdGFuY2U7CisgICAgICAgICAgICBkZWxldGUgKGZpbHRlci0+YmVzdF9yKTsKKyAgICAgICAgICAgIGZpbHRlci0+YmVzdF9yID0gbmV3IFJlY3QgKCpyKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogU2F2ZSBiZXN0X3IgYXMgcHJldl9yIGZvciBuZXh0IGZyYW1lIGNvbXBhcmlzb24gKi8KKyAgICAgICAgZmlsdGVyLT5wcmV2X3IgPSBmaWx0ZXItPmJlc3RfcjsKKworICAgICAgICAvKiBzZW5kIG1zZyB0byBhcHAvYnVzIGlmIHRoZSBkZXRlY3RlZCBnZXN0dXJlIGZhbGxzIGluIHRoZSByZWdpb24gb2YgaW50ZXJlc3QgKi8KKyAgICAgICAgLyogZ2V0IGNlbnRlciBwb2ludCBvZiBnZXN0dXJlICovCisgICAgICAgIGMgPSBjdlBvaW50IChmaWx0ZXItPmJlc3Rfci0+eCArIGZpbHRlci0+YmVzdF9yLT53aWR0aCAvIDIsCisgICAgICAgICAgICBmaWx0ZXItPmJlc3Rfci0+eSArIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQgLyAyKTsKKyAgICAgICAgLyogc2VuZCBtZXNzYWdlOgorICAgICAgICAgKiBpZiB0aGUgY2VudGVyIHBvaW50IGlzIGluIHRoZSByZWdpb24gb2YgaW50ZXJlc3QsIE9SLAorICAgICAgICAgKiBpZiB0aGUgcmVnaW9uIG9mIGludGVyZXN0IHJlbWFpbnMgZGVmYXVsdCBhcyAoMCwwLDAsMCkqLworICAgICAgICBpZiAoKChnaW50KSBjLnggPj0gZmlsdGVyLT5yb2lfeAorICAgICAgICAgICAgICAgICYmIChnaW50KSBjLnggPD0gKGZpbHRlci0+cm9pX3ggKyBmaWx0ZXItPnJvaV93aWR0aCkKKyAgICAgICAgICAgICAgICAmJiAoZ2ludCkgYy55ID49IGZpbHRlci0+cm9pX3kKKyAgICAgICAgICAgICAgICAmJiAoZ2ludCkgYy55IDw9IChmaWx0ZXItPnJvaV95ICsgZmlsdGVyLT5yb2lfaGVpZ2h0KSkKKyAgICAgICAgICAgIHx8IChmaWx0ZXItPnJvaV94ID09IDAgJiYgZmlsdGVyLT5yb2lfeSA9PSAwCisgICAgICAgICAgICAgICAgJiYgZmlsdGVyLT5yb2lfd2lkdGggPT0gMCAmJiBmaWx0ZXItPnJvaV9oZWlnaHQgPT0gMCkpIHsKKyAgICAgICAgICAvKiBEZWZpbmUgc3RydWN0dXJlIGZvciBtZXNzYWdlIHBvc3QgKi8KKyAgICAgICAgICBzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJoYW5kLWdlc3R1cmUiLAorICAgICAgICAgICAgICAiZ2VzdHVyZSIsIEdfVFlQRV9TVFJJTkcsICJwYWxtIiwKKyAgICAgICAgICAgICAgIngiLCBHX1RZUEVfSU5ULAorICAgICAgICAgICAgICAoZ2ludCkgKGZpbHRlci0+YmVzdF9yLT54ICsgZmlsdGVyLT5iZXN0X3ItPndpZHRoICogMC41KSwgInkiLAorICAgICAgICAgICAgICBHX1RZUEVfSU5ULAorICAgICAgICAgICAgICAoZ2ludCkgKGZpbHRlci0+YmVzdF9yLT55ICsgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCAqIDAuNSksCisgICAgICAgICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIChnaW50KSBmaWx0ZXItPmJlc3Rfci0+d2lkdGgsICJoZWlnaHQiLAorICAgICAgICAgICAgICBHX1RZUEVfSU5ULCAoZ2ludCkgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCwgTlVMTCk7CisgICAgICAgICAgLyogSW5pdCBtZXNzYWdlIGVsZW1lbnQgKi8KKyAgICAgICAgICBtID0gZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQgKEdTVF9PQkpFQ1QgKGZpbHRlciksIHMpOworICAgICAgICAgIC8qIFNlbmQgbWVzc2FnZSAqLworICAgICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKGZpbHRlciksIG0pOworCisjaWYgMAorICAgICAgICAgIC8qIHNlbmQgZXZlbnQKKyAgICAgICAgICAgKiBoZXJlIHdlIHVzZSBtb3VzZS1tb3ZlIGV2ZW50IGluc3RlYWQgb2YgZmlzdC1tb3ZlIG9yIHBhbG0tbW92ZSBldmVudAorICAgICAgICAgICAqICEhISB0aGlzIHdpbGwgQ0hBTkdFIGluIHRoZSBmdXR1cmUgISEhCisgICAgICAgICAgICogISEhIGJ5IGFkZGluZyBnc3RfbmF2aWdhdGlvbl9zZW5kX2hhbmRfZGV0ZWN0X2V2ZW50KCkgaW4gbmF2aWdhdGlvbi5jICEhIQorICAgICAgICAgICAqLworICAgICAgICAgIGdzdF9uYXZpZ2F0aW9uX3NlbmRfbW91c2VfZXZlbnQgKEdTVF9OQVZJR0FUSU9OIChmaWx0ZXIpLAorICAgICAgICAgICAgICAibW91c2UtbW92ZSIsCisgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgIChkb3VibGUpIChmaWx0ZXItPmJlc3Rfci0+eCArIGZpbHRlci0+YmVzdF9yLT53aWR0aCAqIDAuNSksCisgICAgICAgICAgICAgIChkb3VibGUpIChmaWx0ZXItPmJlc3Rfci0+eSArIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQgKiAwLjUpKTsKKworICAgICAgICAgIC8qIG9yIHVzZSBhbm90aGVyIHdheSB0byBzZW5kIHVwc3RyZWFtIG5hdmlnYXRpb24gZXZlbnQgZm9yIGRlYnVnCisgICAgICAgICAgICoKKyAgICAgICAgICAgKiBHc3RFdmVudCAqZXZlbnQgPQorICAgICAgICAgICAqIGdzdF9ldmVudF9uZXdfbmF2aWdhdGlvbiAoZ3N0X3N0cnVjdHVyZV9uZXcKKyAgICAgICAgICAgKiAoImFwcGxpY2F0aW9uL3gtZ3N0LW5hdmlnYXRpb24iLCAiZXZlbnQiLCBHX1RZUEVfU1RSSU5HLAorICAgICAgICAgICAqICJtb3VzZS1tb3ZlIiwKKyAgICAgICAgICAgKiAiYnV0dG9uIiwgR19UWVBFX0lOVCwgMCwKKyAgICAgICAgICAgKiAicG9pbnRlcl94IiwgR19UWVBFX0RPVUJMRSwKKyAgICAgICAgICAgKiAoZG91YmxlKSAoZmlsdGVyLT5iZXN0X3ItPnggKyBmaWx0ZXItPmJlc3Rfci0+d2lkdGggKiAwLjUpLAorICAgICAgICAgICAqICJwb2ludGVyX3kiLCBHX1RZUEVfRE9VQkxFLAorICAgICAgICAgICAqIChkb3VibGUpIChmaWx0ZXItPmJlc3Rfci0+eSArIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQgKiAwLjUpLAorICAgICAgICAgICAqIE5VTEwpKTsKKyAgICAgICAgICAgKiBnc3RfcGFkX3NlbmRfZXZlbnQgKEdTVF9CQVNFX1RSQU5TRk9STV9DQVNUIChmaWx0ZXIpLT5zcmNwYWQsIGV2ZW50KTsKKyAgICAgICAgICAgKi8KKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIC8qIENoZWNrIGZpbHRlci0+ZGlzcGxheSwKKyAgICAgICAgICogSWYgVFJVRSwgZGlzcGxheWluZyByZWQgY2lyY2xlIG1hcmtlciBpbiB0aGUgb3V0IGZyYW1lICovCisgICAgICAgIGlmIChmaWx0ZXItPmRpc3BsYXkpIHsKKyAgICAgICAgICBDdlBvaW50IGNlbnRlcjsKKyAgICAgICAgICBpbnQgcmFkaXVzOworICAgICAgICAgIGNlbnRlci54ID0KKyAgICAgICAgICAgICAgY3ZSb3VuZCAoKGZpbHRlci0+YmVzdF9yLT54ICsgZmlsdGVyLT5iZXN0X3ItPndpZHRoICogMC41KSk7CisgICAgICAgICAgY2VudGVyLnkgPQorICAgICAgICAgICAgICBjdlJvdW5kICgoZmlsdGVyLT5iZXN0X3ItPnkgKyBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0ICogMC41KSk7CisgICAgICAgICAgcmFkaXVzID0KKyAgICAgICAgICAgICAgY3ZSb3VuZCAoKGZpbHRlci0+YmVzdF9yLT53aWR0aCArIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQpICogMC4yNSk7CisgICAgICAgICAgY3ZDaXJjbGUgKGltZywgY2VudGVyLCByYWRpdXMsIENWX1JHQiAoMCwgMCwgMjAwKSwgMSwgOCwgMCk7CisgICAgICAgIH0KKyAgICAgIH0KICAgICB9CiAgIH0KIApAQCAtNjA2LDE3ICs2MTAsMTggQEAKICAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQogCi1zdGF0aWMgQ3ZIYWFyQ2xhc3NpZmllckNhc2NhZGUgKgorc3RhdGljIENhc2NhZGVDbGFzc2lmaWVyICoKIGdzdF9oYW5kZGV0ZWN0X2xvYWRfcHJvZmlsZSAoR3N0SGFuZGRldGVjdCAqIGZpbHRlciwgZ2NoYXIgKiBwcm9maWxlKQogewotICBDdkhhYXJDbGFzc2lmaWVyQ2FzY2FkZSAqY2FzY2FkZTsKKyAgQ2FzY2FkZUNsYXNzaWZpZXIgKmNhc2NhZGU7CiAKLSAgaWYgKHByb2ZpbGUgPT0gTlVMTCkKKyAgY2FzY2FkZSA9IG5ldyBDYXNjYWRlQ2xhc3NpZmllciAocHJvZmlsZSk7CisgIGlmIChjYXNjYWRlLT5lbXB0eSAoKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGZpbHRlciwgIkludmFsaWQgcHJvZmlsZSBmaWxlOiAlcyIsIHByb2ZpbGUpOworICAgIGRlbGV0ZSBjYXNjYWRlOwogICAgIHJldHVybiBOVUxMOwotICBpZiAoIShjYXNjYWRlID0gKEN2SGFhckNsYXNzaWZpZXJDYXNjYWRlICopIGN2TG9hZCAocHJvZmlsZSwgMCwgMCwgMCkpKSB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChmaWx0ZXIsICJDb3VsZG4ndCBsb2FkIEhhYXIgY2xhc3NpZmllciBjYXNjYWRlOiAlcy4iLAotICAgICAgICBwcm9maWxlKTsKICAgfQorCiAgIHJldHVybiBjYXNjYWRlOwogfQogCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuaCBiL2V4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5oCmluZGV4IDAxYTMwYmQuLjM5MzA4YzggMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5oCisrKyBiL2V4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5oCkBAIC00NSw5ICs0NSw3IEBACiAjaWZuZGVmIF9fR1NUX0hBTkRERVRFQ1RfSF9fCiAjZGVmaW5lIF9fR1NUX0hBTkRERVRFQ1RfSF9fCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+Ci0jaW5jbHVkZSA8Z3N0L3ZpZGVvL25hdmlnYXRpb24uaD4KKyNpbmNsdWRlIDxjdi5oPgogCiAjaW5jbHVkZSAiZ3N0b3BlbmN2dmlkZW9maWx0ZXIuaCIKIC8qIG9wZW5jdiAqLwpAQCAtODMsMjAgKzgxLDE5IEBACiAgIGdjaGFyICpwcm9maWxlX2Zpc3Q7CiAgIGdjaGFyICpwcm9maWxlX3BhbG07CiAgIC8qIHJlZ2lvbiBvZiBpbnRlcmVzdCAqLwotICBndWludCByb2lfeDsKLSAgZ3VpbnQgcm9pX3k7Ci0gIGd1aW50IHJvaV93aWR0aDsKLSAgZ3VpbnQgcm9pX2hlaWdodDsKKyAgZ2ludCByb2lfeDsKKyAgZ2ludCByb2lfeTsKKyAgZ2ludCByb2lfd2lkdGg7CisgIGdpbnQgcm9pX2hlaWdodDsKIAogICAvKiBvcGVuY3YKICAgICogY3ZHcmF5IC0gaW1hZ2UgdG8gZ3JheSBjb2xvdXIKICAgICovCiAgIElwbEltYWdlICpjdkdyYXk7Ci0gIEN2SGFhckNsYXNzaWZpZXJDYXNjYWRlICpjdkNhc2NhZGVfZmlzdDsKLSAgQ3ZIYWFyQ2xhc3NpZmllckNhc2NhZGUgKmN2Q2FzY2FkZV9wYWxtOwotICBDdk1lbVN0b3JhZ2UgKmN2U3RvcmFnZTsKLSAgQ3ZSZWN0ICpwcmV2X3I7Ci0gIEN2UmVjdCAqYmVzdF9yOworICBjdjo6Q2FzY2FkZUNsYXNzaWZpZXIgKmN2Q2FzY2FkZV9maXN0OworICBjdjo6Q2FzY2FkZUNsYXNzaWZpZXIgKmN2Q2FzY2FkZV9wYWxtOworICBjdjo6UmVjdCAqcHJldl9yOworICBjdjo6UmVjdCAqYmVzdF9yOwogfTsKIAogc3RydWN0IF9Hc3RIYW5kZGV0ZWN0Q2xhc3MKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuYyBiL2V4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuY3BwCnNpbWlsYXJpdHkgaW5kZXggNjYlCnJlbmFtZSBmcm9tIGV4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuYwpyZW5hbWUgdG8gZXh0L29wZW5jdi9nc3Rtb3Rpb25jZWxscy5jcHAKaW5kZXggMmRlOTlhYi4uZTFkNDEyZiAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3Rtb3Rpb25jZWxscy5jCisrKyBiL2V4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuY3BwCkBAIC0xLDggKzEsOCBAQAogLyoKLSAqIEdTdHJlYW1lciBNb3Rpb0NlbGxzIGRldGVjdCBhcmVhcyBvZiBtb3Rpb24KKyAqIEdTdHJlYW1lciBNb3Rpb25DZWxscyBkZXRlY3QgYXJlYXMgb2YgbW90aW9uCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgUm9iZXJ0IEpvYmJhZ3kgPGpvYmJhZ3kucm9iZXJ0QGdtYWlsLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMSBOaWNvbGEgTXVyaW5vIDxuaWNvbGEubXVyaW5vQGdtYWlsLmNvbT4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNTAsNyArNTAsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2gtMC4xMCB2aWRlb3Rlc3RzcmMgcGF0dGVybj0xOCAhIHZpZGVvcmF0ZSAhIHZpZGVvc2NhbGUgISB2aWRlby94LXJhdyx3aWR0aD0zMjAsaGVpZ2h0PTI0MCxmcmFtZXJhdGU9NS8xICEgdmlkZW9jb252ZXJ0ICEgbW90aW9uY2VsbHMgISB2aWRlb2NvbnZlcnQgISB4dmltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjIHBhdHRlcm49MTggISB2aWRlb3JhdGUgISB2aWRlb3NjYWxlICEgdmlkZW8veC1yYXcsd2lkdGg9MzIwLGhlaWdodD0yNDAsZnJhbWVyYXRlPTUvMSAhIHZpZGVvY29udmVydCAhIG1vdGlvbmNlbGxzICEgdmlkZW9jb252ZXJ0ICEgeHZpbWFnZXNpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC01OSwxNiArNTksNyBAQAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNpbmNsdWRlIDx0aW1lLmg+Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0KLSNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSAiZ3N0bW90aW9uY2VsbHMuaCIKLSNpbmNsdWRlICJtb3Rpb25jZWxsc193cmFwcGVyLmgiCi0jaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9tb3Rpb25fY2VsbHNfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X21vdGlvbl9jZWxsc19kZWJ1ZwpAQCAtMTUwLDcgKzE0MSw3IEBACiAgICAgR1NUX1BBRF9BTFdBWVMsCiAgICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFICgiUkdCIikpKTsKIAotR19ERUZJTkVfVFlQRSAoR3N0TW90aW9uY2VsbHMsIGdzdF9tb3Rpb25fY2VsbHMsIEdTVF9UWVBFX0VMRU1FTlQpOworR19ERUZJTkVfVFlQRSAoR3N0TW90aW9uY2VsbHMsIGdzdF9tb3Rpb25fY2VsbHMsIEdTVF9UWVBFX09QRU5DVl9WSURFT19GSUxURVIpOwogCiBzdGF0aWMgdm9pZCBnc3RfbW90aW9uX2NlbGxzX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKQEAgLTE1OSw4ICsxNTAsOCBAQAogCiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21vdGlvbl9jZWxsc19oYW5kbGVfc2lua19ldmVudCAoR3N0UGFkICogcGFkLAogICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCk7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfbW90aW9uX2NlbGxzX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RCdWZmZXIgKiBidWYpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X21vdGlvbl9jZWxsc190cmFuc2Zvcm1faXAgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICoKKyAgICBmaWx0ZXIsIEdzdEJ1ZmZlciAqIGJ1ZiwgSXBsSW1hZ2UgKiBpbWcpOwogCiBzdGF0aWMgdm9pZCBnc3RfbW90aW9uY2VsbHNfdXBkYXRlX21vdGlvbl9jZWxscyAoR3N0TW90aW9uY2VsbHMgKiBmaWx0ZXIpOwogc3RhdGljIHZvaWQgZ3N0X21vdGlvbmNlbGxzX3VwZGF0ZV9tb3Rpb25fbWFza3MgKEdzdE1vdGlvbmNlbGxzICogZmlsdGVyKTsKQEAgLTE4NSwxMCArMTc2LDYgQEAKICAgICBHRlJFRSAoZmlsdGVyLT5tb3Rpb25jZWxsc2lkeCk7CiAgIH0KIAotICBpZiAoZmlsdGVyLT5jdkltYWdlKSB7Ci0gICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2SW1hZ2UpOwotICB9Ci0KICAgR0ZSRUUgKGZpbHRlci0+bW90aW9uY2VsbHNjb2xvcik7CiAgIEdGUkVFIChmaWx0ZXItPnByZXZfZGF0YWZpbGUpOwogICBHRlJFRSAoZmlsdGVyLT5jdXJfZGF0YWZpbGUpOwpAQCAtMjAzLDEwNiArMTkwLDExNyBAQAogZ3N0X21vdGlvbl9jZWxsc19jbGFzc19pbml0IChHc3RNb3Rpb25jZWxsc0NsYXNzICoga2xhc3MpCiB7CiAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKKyAgR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyAqZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzczsKIAogICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwogICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKKyAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcyA9IChHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzICopIGtsYXNzOwogCiAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9tb3Rpb25fY2VsbHNfZmluYWxpemUpOwogICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfbW90aW9uX2NlbGxzX3NldF9wcm9wZXJ0eTsKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X21vdGlvbl9jZWxsc19nZXRfcHJvcGVydHk7CiAKKyAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcy0+Y3ZfdHJhbnNfaXBfZnVuYyA9IGdzdF9tb3Rpb25fY2VsbHNfdHJhbnNmb3JtX2lwOworCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfR1JJRF9YLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImdyaWR4IiwgIk51bWJlciBvZiBIb3Jpem9udGFsIEdyaWRzIiwKLSAgICAgICAgICAiWW91IGNhbiBnaXZlIG51bWJlciBvZiBob3Jpem9udGFsIGdyaWQgY2VsbHMuIiwgR1JJRF9NSU4sIEdSSURfTUFYLAotICAgICAgICAgIEdSSURfREVGLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAiTnVtYmVyIG9mIGhvcml6b250YWwgZ3JpZCBjZWxscy4iLCBHUklEX01JTiwgR1JJRF9NQVgsCisgICAgICAgICAgR1JJRF9ERUYsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0dSSURfWSwKICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJncmlkeSIsICJOdW1iZXIgb2YgVmVydGljYWwgR3JpZHMiLAotICAgICAgICAgICJZb3UgY2FuIGdpdmUgbnVtYmVyIG9mIHZlcnRpY2FsIGdyaWQgY2VsbHMuIiwgR1JJRF9NSU4sIEdSSURfTUFYLAotICAgICAgICAgIEdSSURfREVGLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAiTnVtYmVyIG9mIHZlcnRpY2FsIGdyaWQgY2VsbHMuIiwgR1JJRF9NSU4sIEdSSURfTUFYLAorICAgICAgICAgIEdSSURfREVGLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TRU5TSVRJVklUWSwKICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJzZW5zaXRpdml0eSIsICJNb3Rpb24gU2Vuc2l0aXZpdHkiLAotICAgICAgICAgICJZb3UgY2FuIHR1bm5pbmcgdGhlIGVsZW1lbnQgbW90aW9uIHNlbnNpdGl2aXR5LiIsIFNFTlNJVElWSVRZX01JTiwKKyAgICAgICAgICAiTW90aW9uIGRldGVjdGlvbiBzZW5zaXRpdml0eS4iLCBTRU5TSVRJVklUWV9NSU4sCiAgICAgICAgICAgU0VOU0lUSVZJVFlfTUFYLCBTRU5TSVRJVklUWV9ERUZBVUxULAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9USFJFU0hPTEQsCiAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgidGhyZXNob2xkIiwgIkxvd2VyIGJvdW5kIG9mIG1vdGlvbiBjZWxscyBudW1iZXIiLAotICAgICAgICAgICJUaHJlc2hvbGQgdmFsdWUgZm9yIG1vdGlvbiwgd2hlbiBtb3Rpb24gY2VsbHMgbnVtYmVyIGdyZWF0ZXIgc3VtIGNlbGxzICogdGhyZXNob2xkLCB3ZSBzaG93IG1vdGlvbi4iLAorICAgICAgICAgICJUaHJlc2hvbGQgdmFsdWUgZm9yIG1vdGlvbi4gRmlsdGVyIGRldGVjdHMgbW90aW9uIHdoZW4gYXQgbGVhc3QgIgorICAgICAgICAgICJ0aGlzIGZyYWN0aW9uIG9mIHRoZSBjZWxscyBoYXZlIG1vdmVkIiwKICAgICAgICAgICBUSFJFU0hPTERfTUlOLCBUSFJFU0hPTERfTUFYLCBUSFJFU0hPTERfREVGQVVMVCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfR0FQLAotICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImdhcCIsCi0gICAgICAgICAgIkdhcCBpcyB0aW1lIGluIHNlY29uZCwgZWxhcHNlZCB0aW1lIGZyb20gbGFzdCBtb3Rpb24gdGltZXN0YW1wLiAiLAotICAgICAgICAgICJJZiBlbGFwc2VkIHRpbWUgbWludXMgZm9ybSBsYXN0IG1vdGlvbiB0aW1lc3RhbXAgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIGdhcCB0aGVuIHdlIHBvc3QgbW90aW9uIGZpbmlzaGVkIGJ1cyBtZXNzYWdlLiAiLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImdhcCIsICJNb3Rpb24tZmluaXNoZWQgVGhyZXNob2xkIiwKKyAgICAgICAgICAiSW50ZXJ2YWwgaW4gc2Vjb25kcyBhZnRlciB3aGljaCBtb3Rpb24gaXMgY29uc2lkZXJlZCBmaW5pc2hlZCAiCisgICAgICAgICAgImFuZCBhIG1vdGlvbiBmaW5pc2hlZCBidXMgbWVzc2FnZSBpcyBwb3N0ZWQuIiwKICAgICAgICAgICBHQVBfTUlOLCBHQVBfTUFYLCBHQVBfREVGLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9QT1NUTk9NT1RJT04sCi0gICAgICBnX3BhcmFtX3NwZWNfaW50ICgicG9zdG5vbW90aW9uIiwgIlBPU1ROT01PVElPTiIsCi0gICAgICAgICAgIklmIG5vbiAwIHBvc3QgYSBub19tb3Rpb24gZXZlbnQgaXMgcG9zdGVkIG9uIHRoZSBidXMgaWYgbm8gbW90aW9uIGlzIGRldGVjdGVkIGZvciBOIHNlY29uZHMiLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoInBvc3Rub21vdGlvbiIsICJOby1tb3Rpb24gVGhyZXNob2xkIiwKKyAgICAgICAgICAiSWYgbm9uIDAsIHBvc3QgYSBub19tb3Rpb24gZXZlbnQgb24gdGhlIGJ1cyBpZiBubyBtb3Rpb24gaXMgIgorICAgICAgICAgICJkZXRlY3RlZCBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiBzZWNvbmRzIiwKICAgICAgICAgICBQT1NUX05PX01PVElPTl9NSU4sIFBPU1RfTk9fTU9USU9OX01BWCwgUE9TVF9OT19NT1RJT05fREVGLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NSU5JTVVOTU9USU9ORlJBTUVTLAotICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIm1pbmltdW1tb3Rpb25mcmFtZXMiLCAiTUlOSU1VTiBNT1RJT04gRlJBTUVTIiwKLSAgICAgICAgICAiRGVmaW5lIHRoZSBtaW5pbXVtIG51bWJlciBvZiBtb3Rpb24gZnJhbWVzIHRoYXQgdHJpZ2dlciBhIG1vdGlvbiBldmVudCIsCisgICAgICBnX3BhcmFtX3NwZWNfaW50ICgibWluaW11bW1vdGlvbmZyYW1lcyIsICJNaW5pbXVtIE1vdGlvbiBGcmFtZXMiLAorICAgICAgICAgICJNaW5pbXVtIG51bWJlciBvZiBtb3Rpb24gZnJhbWVzIHRyaWdnZXJpbmcgYSBtb3Rpb24gZXZlbnQiLAogICAgICAgICAgIE1JTklNVU1fTU9USU9OX0ZSQU1FU19NSU4sIE1JTklNVU1fTU9USU9OX0ZSQU1FU19NQVgsCiAgICAgICAgICAgTUlOSU1VTV9NT1RJT05fRlJBTUVTX0RFRiwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRElTUExBWSwKICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiZGlzcGxheSIsICJEaXNwbGF5IiwKLSAgICAgICAgICAiTW90aW9uIENlbGxzIHZpc2libGUgb3Igbm90IG9uIEN1cnJlbnQgRnJhbWUiLCBGQUxTRSwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAiVG9nZ2xlIGRpc3BsYXkgb2YgbW90aW9uIGNlbGxzIG9uIGN1cnJlbnQgZnJhbWUiLCBGQUxTRSwKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfUE9TVEFMTE1PVElPTiwKICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgicG9zdGFsbG1vdGlvbiIsICJQb3N0IEFsbCBNb3Rpb24iLAotICAgICAgICAgICJFbGVtZW50IHBvc3QgYnVzIG1zZyBmb3IgZXZlcnkgbW90aW9uIGZyYW1lIG9yIGp1c3QgbW90aW9uIHN0YXJ0IGFuZCBtb3Rpb24gc3RvcCIsCi0gICAgICAgICAgRkFMU0UsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgICJQb3N0IGJ1cyBtZXNzYWdlcyBmb3IgZXZlcnkgbW90aW9uIGZyYW1lIG9yIGp1c3QgbW90aW9uIHN0YXJ0IGFuZCAiCisgICAgICAgICAgIm1vdGlvbiBzdG9wIiwKKyAgICAgICAgICBGQUxTRSwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1VTRUFMUEhBLAogICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJ1c2VhbHBoYSIsICJVc2UgYWxwaGEiLAotICAgICAgICAgICJVc2Ugb3Igbm90IGFscGhhIGJsZW5kaW5nIG9uIGZyYW1lcyB3aXRoIG1vdGlvbiBjZWxscyIsIFRSVUUsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgIlRvZ2dsZSB1c2FnZSBvZiBhbHBoYSBibGVuZGluZyBvbiBmcmFtZXMgd2l0aCBtb3Rpb24gY2VsbHMiLCBUUlVFLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICNpZiAwCiAgIC8qIEZJWE1FOiBzaG91bGQgbm90IGJlIGEgbG9uZyBwcm9wZXJ0eSwgbWFrZSBpdCBlaXRoZXIgZ2ludCBvciBnaW50NjQKICAgICogKGlzIHRoaXMgcHJvcGVydHkgYWN0dWFsbHkgdXNlZCBvciB1c2VmdWwgZm9yIGFueXRoaW5nPykgKi8KICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9EQVRFLAogICAgICAgZ19wYXJhbV9zcGVjX2xvbmcgKCJkYXRlIiwgIk1vdGlvbiBDZWxsIERhdGUiLAogICAgICAgICAgICJDdXJyZW50IERhdGUgaW4gbWlsbGlzZWNvbmRzIiwgREFURV9NSU4sIERBVEVfTUFYLCBEQVRFX0RFRiwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAjZW5kaWYKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9EQVRBRklMRSwKICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJkYXRhZmlsZSIsICJEYXRhRmlsZSIsCiAgICAgICAgICAgIkxvY2F0aW9uIG9mIG1vdGlvbmNlbGxzIGRhdGEgZmlsZSAoZW1wdHkgc3RyaW5nIG1lYW5zIG5vIHNhdmluZykiLAotICAgICAgICAgIE5VTEwsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIE5VTEwsIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9EQVRBRklMRV9FWFQsCiAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgiZGF0YWZpbGVleHRlbnNpb24iLCAiRGF0YUZpbGUgRXh0ZW5zaW9uIiwKICAgICAgICAgICAiRXh0ZW5zaW9uIG9mIGRhdGFmaWxlIiwgREVGX0RBVEFGSUxFRVhULAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NT1RJT05NQVNLQ09PUkQsCiAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgibW90aW9ubWFza2Nvb3JkcyIsICJNb3Rpb24gTWFzayB3aXRoIENvb3JkaW5hdGVzIiwKLSAgICAgICAgICAiVGhlIHVwcGVyIGxlZnQgeCwgeSBhbmQgbG93ZXIgcmlnaHQgeCwgeSBjb29yZGluYXRlcyBzZXBhcmF0ZWQgd2l0aCBcIjpcIiwgIgotICAgICAgICAgICJkZXNjcmliZSBhIHJlZ2lvbi4gUmVnaW9ucyBzZXBhcmF0ZWQgd2l0aCBcIixcIiIsIE5VTEwsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgIkRlc2NyaWJlIGEgcmVnaW9uIHdpdGggaXRzIHVwcGVyIGxlZnQgYW5kIGxvd2VyIHJpZ2h0IHgsIHkgIgorICAgICAgICAgICJjb29yZGluYXRlcyBzZXBhcmF0ZWQgd2l0aCBcIjpcIi4gUGFzcyBtdWx0aXBsZSByZWdpb25zIGFzIGEgIgorICAgICAgICAgICJjb21tYS1zZXBhcmF0ZWQgbGlzdCIsIE5VTEwsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX01PVElPTk1BU0tDRUxMU1BPUywKICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJtb3Rpb25tYXNrY2VsbHNwb3MiLAogICAgICAgICAgICJNb3Rpb24gTWFzayB3aXRoIENlbGxzIFBvc2l0aW9uIiwKLSAgICAgICAgICAiVGhlIGxpbmUgYW5kIGNvbHVtbiBpZHggc2VwYXJhdGVkIHdpdGggXCI6XCIgd2hhdCBjZWxscyB3YW50IHdlIG1hc2stb3V0LCAiCi0gICAgICAgICAgImRlc2NyaWJlIGEgY2VsbC4gQ2VsbHMgc2VwYXJhdGVkIHdpdGggXCIsXCIiLCBOVUxMLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgICJEZXNjcmliZSBhIGNlbGwgd2l0aCBpdHMgbGluZSBhbmQgY29sdW1uIGlkeCBzZXBhcmF0ZWQgd2l0aCBcIjpcIi4gIgorICAgICAgICAgICJQYXNzIG11bHRpcGxlIGNlbGxzIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QiLCBOVUxMLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9DRUxMU0NPTE9SLAogICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoImNlbGxzY29sb3IiLCAiQ29sb3Igb2YgTW90aW9uIENlbGxzIiwKLSAgICAgICAgICAiVGhlIGNvbG9yIG9mIG1vdGlvbiBjZWxscyBzZXBhcmF0ZWQgd2l0aCBcIixcIiIsICIyNTUsMjU1LDAiLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgICJDb2xvciBmb3IgbW90aW9uIGNlbGxzIGluIFIsRyxCIGZvcm1hdC4gTWF4IHBlciBjaGFubmVsIGlzIDI1NSIsCisgICAgICAgICAgIjI1NSwyNTUsMCIsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX01PVElPTkNFTExTSURYLAogICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoIm1vdGlvbmNlbGxzaWR4IiwgIk1vdGlvbiBDZWxscyBPZiBJbnRlcmVzdChNT0NJKSIsCi0gICAgICAgICAgIlRoZSBsaW5lIGFuZCBjb2x1bW4gaWR4IHNlcGFyYXRlZCB3aXRoIFwiOlwiLCAiCi0gICAgICAgICAgImRlc2NyaWJlIGEgY2VsbC4gQ2VsbHMgc2VwYXJhdGVkIHdpdGggXCIsXCIiLCBOVUxMLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgICJEZXNjcmliZSBhIGNlbGwgd2l0aCBpdHMgbGluZSBhbmQgY29sdW1uIGlkeCBzZXBhcmF0ZWQgd2l0aCBcIjpcIi4gIgorICAgICAgICAgICJQYXNzIG11bHRpcGxlIGNlbGxzIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QiLCBOVUxMLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9DQUxDVUxBVEVNT1RJT04sCiAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImNhbGN1bGF0ZW1vdGlvbiIsICJDYWxjdWxhdGUgTW90aW9uIiwKLSAgICAgICAgICAiSWYgbmVlZHMgY2FsY3VsYXRlIG1vdGlvbiBvbiBmcmFtZSB5b3UgbmVlZCB0aGlzIHByb3BlcnR5IHNldHRpbmcgdHJ1ZSBvdGhlcndpc2UgZmFsc2UiLAotICAgICAgICAgIFRSVUUsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgICJUb2dnbGVzIG1vdGlvbiBjYWxjdWxhdGlvbi4gSWYgRkFMU0UsIHRoaXMgZmlsdGVyIGRvZXMgbm90aGluZyIsCisgICAgICAgICAgVFJVRSwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX01PVElPTkNFTExUSElDS05FU1MsCiAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgibW90aW9uY2VsbHRoaWNrbmVzcyIsICJNb3Rpb24gQ2VsbCBUaGlja25lc3MiLAotICAgICAgICAgICJNb3Rpb24gQ2VsbCBCb3JkZXIgVGhpY2tuZXNzLCBpZiBpdCdzIC0xIHRoZW4gbW90aW9uIGNlbGwgd2lsbCBiZSBmaWxsIiwKKyAgICAgICAgICAiTW90aW9uIENlbGwgQm9yZGVyIFRoaWNrbmVzcy4gU2V0IHRvIC0xIHRvIGZpbGwgbW90aW9uIGNlbGwiLAogICAgICAgICAgIFRISUNLTkVTU19NSU4sIFRISUNLTkVTU19NQVgsIFRISUNLTkVTU19ERUYsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCiAgICAgICAibW90aW9uY2VsbHMiLApAQCAtMzI0LDE5ICszMjIsOCBAQAogc3RhdGljIHZvaWQKIGdzdF9tb3Rpb25fY2VsbHNfaW5pdCAoR3N0TW90aW9uY2VsbHMgKiBmaWx0ZXIpCiB7Ci0gIGZpbHRlci0+c2lua3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmc2lua19mYWN0b3J5LCAic2luayIpOwotICBHU1RfUEFEX1NFVF9QUk9YWV9DQVBTIChmaWx0ZXItPnNpbmtwYWQpOwotCi0gIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChmaWx0ZXItPnNpbmtwYWQsCisgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChHU1RfQkFTRV9UUkFOU0ZPUk1fU0lOS19QQUQgKGZpbHRlciksCiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X21vdGlvbl9jZWxsc19oYW5kbGVfc2lua19ldmVudCkpOwotICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAoZmlsdGVyLT5zaW5rcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9tb3Rpb25fY2VsbHNfY2hhaW4pKTsKLQotICBmaWx0ZXItPnNyY3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmc3JjX2ZhY3RvcnksICJzcmMiKTsKLSAgR1NUX1BBRF9TRVRfUFJPWFlfQ0FQUyAoZmlsdGVyLT5zcmNwYWQpOwotCi0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBmaWx0ZXItPnNpbmtwYWQpOwotICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgZmlsdGVyLT5zcmNwYWQpOwogCiAgIGZpbHRlci0+ZGlzcGxheSA9IFRSVUU7CiAgIGZpbHRlci0+Y2FsY3VsYXRlX21vdGlvbiA9IFRSVUU7CkBAIC0zNDksOSArMzM2LDkgQEAKICAgZmlsdGVyLT5wb3N0bm9tb3Rpb24gPSBQT1NUX05PX01PVElPTl9ERUY7CiAgIGZpbHRlci0+bWluaW11bV9tb3Rpb25fZnJhbWVzID0gTUlOSU1VTV9NT1RJT05fRlJBTUVTX0RFRjsKIAotICBmaWx0ZXItPnByZXZfZGF0YWZpbGUgPSBnX3N0cmR1cCAoTlVMTCk7Ci0gIGZpbHRlci0+Y3VyX2RhdGFmaWxlID0gZ19zdHJkdXAgKE5VTEwpOwotICBmaWx0ZXItPmJhc2VuYW1lX2RhdGFmaWxlID0gZ19zdHJkdXAgKE5VTEwpOworICBmaWx0ZXItPnByZXZfZGF0YWZpbGUgPSBOVUxMOworICBmaWx0ZXItPmN1cl9kYXRhZmlsZSA9IE5VTEw7CisgIGZpbHRlci0+YmFzZW5hbWVfZGF0YWZpbGUgPSBOVUxMOwogICBmaWx0ZXItPmRhdGFmaWxlX2V4dGVuc2lvbiA9IGdfc3RyZHVwIChERUZfREFUQUZJTEVFWFQpOwogICBmaWx0ZXItPnNlbnNpdGl2aXR5ID0gU0VOU0lUSVZJVFlfREVGQVVMVDsKICAgZmlsdGVyLT50aHJlc2hvbGQgPSBUSFJFU0hPTERfREVGQVVMVDsKQEAgLTM5NCw2ICszODEsOCBAQAogICBmaWx0ZXItPmRhdGFmaWxlaWR4ID0gMDsKICAgZmlsdGVyLT5pZCA9IG1vdGlvbl9jZWxsc19pbml0ICgpOwogCisgIGdzdF9vcGVuY3ZfdmlkZW9fZmlsdGVyX3NldF9pbl9wbGFjZSAoR1NUX09QRU5DVl9WSURFT19GSUxURVJfQ0FTVCAoZmlsdGVyKSwKKyAgICAgIFRSVUUpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDY3LDcgKzQ1Niw3IEBACiAgICAgICBmaWx0ZXItPmJhc2VuYW1lX2RhdGFmaWxlID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CiAKICAgICAgIGlmIChzdHJsZW4gKGZpbHRlci0+YmFzZW5hbWVfZGF0YWZpbGUpID09IDApIHsKLSAgICAgICAgZmlsdGVyLT5jdXJfZGF0YWZpbGUgPSBnX3N0cmR1cCAoTlVMTCk7CisgICAgICAgIGZpbHRlci0+Y3VyX2RhdGFmaWxlID0gTlVMTDsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBmaWx0ZXItPmN1cl9kYXRhZmlsZSA9CkBAIC01MTgsOCArNTA3LDcgQEAKICAgICAgICAgICBmaWx0ZXItPm1vdGlvbm1hc2tjb29yZF9jb3VudCA9IDA7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGlmIChzdHJzKQotICAgICAgICBnX3N0cmZyZWV2IChzdHJzKTsKKyAgICAgIGdfc3RyZnJlZXYgKHN0cnMpOwogICAgICAgdG1wdXggPSAtMTsKICAgICAgIHRtcHV5ID0gLTE7CiAgICAgICB0bXBseCA9IC0xOwpAQCAtNTQ2LDE4ICs1MzQsMjAgQEAKICAgICAgICAgICBmaWx0ZXItPm1vdGlvbm1hc2tjZWxsc19jb3VudCA9IDA7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGlmIChtb3Rpb25tYXNrY2VsbHNzdHIpCi0gICAgICAgIGdfc3RyZnJlZXYgKG1vdGlvbm1hc2tjZWxsc3N0cik7CisgICAgICBnX3N0cmZyZWV2IChtb3Rpb25tYXNrY2VsbHNzdHIpOwogICAgICAgdG1wdXggPSAtMTsKICAgICAgIHRtcHV5ID0gLTE7CiAgICAgICB0bXBseCA9IC0xOwogICAgICAgdG1wbHkgPSAtMTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9DRUxMU0NPTE9SOgotICAgICAgY29sb3JzdHIgPSBnX3N0cnNwbGl0IChnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSwgIiwiLCAyNTUpOworICAgICAgY29sb3JzdHIgPSBnX3N0cnNwbGl0IChnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSwgIiwiLCA0KTsKICAgICAgIGZvciAoY2VsbHNjb2xvcnNjbnQgPSAwOyBjb2xvcnN0cltjZWxsc2NvbG9yc2NudF0gIT0gTlVMTDsKICAgICAgICAgICArK2NlbGxzY29sb3JzY250KTsKLSAgICAgIGlmIChjZWxsc2NvbG9yc2NudCA9PSAzKSB7CisgICAgICBpZiAoY2VsbHNjb2xvcnNjbnQgIT0gMykgeworICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGZpbHRlciwgIklnbm9yaW5nIGJhZGx5LWZvcm1hdHRlZCBjZWxsc2NvbG9yIFJHQiAiCisgICAgICAgICAgICAic3RyaW5nIik7CisgICAgICB9IGVsc2UgewogICAgICAgICBzc2NhbmYgKGNvbG9yc3RyWzBdLCAiJWQiLCAmcik7CiAgICAgICAgIHNzY2FuZiAoY29sb3JzdHJbMV0sICIlZCIsICZnKTsKICAgICAgICAgc3NjYW5mIChjb2xvcnN0clsyXSwgIiVkIiwgJmIpOwpAQCAtNTY5LDggKzU1OSw3IEBACiAgICAgICAgIGZpbHRlci0+bW90aW9uY2VsbHNjb2xvci0+R19jaGFubmVsX3ZhbHVlID0gZzsKICAgICAgICAgZmlsdGVyLT5tb3Rpb25jZWxsc2NvbG9yLT5CX2NoYW5uZWxfdmFsdWUgPSBiOwogICAgICAgfQotICAgICAgaWYgKGNvbG9yc3RyKQotICAgICAgICBnX3N0cmZyZWV2IChjb2xvcnN0cik7CisgICAgICBnX3N0cmZyZWV2IChjb2xvcnN0cik7CiAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfTU9USU9OQ0VMTFNJRFg6CiAgICAgICBtb3Rpb25jZWxsc3N0ciA9IGdfc3Ryc3BsaXQgKGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpLCAiLCIsIDI1NSk7CkBAIC01OTYsOCArNTg1LDcgQEAKICAgICAgICAgICBmaWx0ZXItPm1vdGlvbmNlbGxzX2NvdW50ID0gMDsKICAgICAgICAgfQogICAgICAgfQotICAgICAgaWYgKG1vdGlvbmNlbGxzc3RyKQotICAgICAgICBnX3N0cmZyZWV2IChtb3Rpb25jZWxsc3N0cik7CisgICAgICBnX3N0cmZyZWV2IChtb3Rpb25jZWxsc3N0cik7CiAgICAgICB0bXB1eCA9IC0xOwogICAgICAgdG1wdXkgPSAtMTsKICAgICAgIHRtcGx4ID0gLTE7CkBAIC04MzQsMTEgKzgyMiw2IEBACiAgICAgICBmaWx0ZXItPmhlaWdodCA9IGluZm8uaGVpZ2h0OwogCiAgICAgICBmaWx0ZXItPmZyYW1lcmF0ZSA9IChkb3VibGUpIGluZm8uZnBzX24gLyAoZG91YmxlKSBpbmZvLmZwc19kOwotICAgICAgaWYgKGZpbHRlci0+Y3ZJbWFnZSkKLSAgICAgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2SW1hZ2UpOwotICAgICAgZmlsdGVyLT5jdkltYWdlID0KLSAgICAgICAgICBjdkNyZWF0ZUltYWdlIChjdlNpemUgKGZpbHRlci0+d2lkdGgsIGZpbHRlci0+aGVpZ2h0KSwgSVBMX0RFUFRIXzhVLAotICAgICAgICAgIDMpOwogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC04NDgsMTkgKzgzMSwxNyBAQAogICByZXMgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7CiAKICAgcmV0dXJuIHJlczsKLQotCiB9CiAKIC8qIGNoYWluIGZ1bmN0aW9uCiAgKiB0aGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGFjdHVhbCBwcm9jZXNzaW5nCiAgKi8KIHN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfbW90aW9uX2NlbGxzX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmKQorZ3N0X21vdGlvbl9jZWxsc190cmFuc2Zvcm1faXAgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogYmFzZSwgR3N0QnVmZmVyICogYnVmLAorICAgIElwbEltYWdlICogaW1nKQogewotICBHc3RNb3Rpb25jZWxscyAqZmlsdGVyOwotICBHc3RNYXBJbmZvIGluZm87Ci0gIGZpbHRlciA9IGdzdF9tb3Rpb25fY2VsbHMgKHBhcmVudCk7CisgIEdzdE1vdGlvbmNlbGxzICpmaWx0ZXIgPSBnc3RfbW90aW9uX2NlbGxzIChiYXNlKTsKKwogICBHU1RfT0JKRUNUX0xPQ0sgKGZpbHRlcik7CiAgIGlmIChmaWx0ZXItPmNhbGN1bGF0ZV9tb3Rpb24pIHsKICAgICBkb3VibGUgc2Vuc2l0aXZpdHk7CkBAIC04NjgsOCArODQ5LDggQEAKICAgICAgICAgbW90aW9uY2VsbHNfY291bnQsIGk7CiAgICAgaW50IHRoaWNrbmVzcywgc3VjY2VzcywgbW90aW9uY2VsbHNpZHhjbnQsIG51bWJlck9mQ2VsbHMsCiAgICAgICAgIG1vdGlvbmNlbGxzbnVtYmVyLCBjZWxsc09mSW50ZXJlc3ROdW1iZXI7Ci0gICAgaW50IG1pbmNlbGxzT2ZJbnRlcmVzdE51bWJlciwgbW90aW9uZGV0ZWN0LCBtaW5pbXVtX21vdGlvbl9mcmFtZXMsCi0gICAgICAgIHBvc3Rub21vdGlvbjsKKyAgICBpbnQgbWluY2VsbHNPZkludGVyZXN0TnVtYmVyLCBtb3Rpb25kZXRlY3Q7CisgICAgdWludCBtaW5pbXVtX21vdGlvbl9mcmFtZXMsIHBvc3Rub21vdGlvbjsKICAgICBjaGFyICpkYXRhZmlsZTsKICAgICBib29sIGRpc3BsYXksIGNoYW5nZWRfZGF0YWZpbGUsIHVzZUFscGhhOwogICAgIGdpbnQ2NCBzdGFydHRpbWU7CkBAIC04NzksMjMwICs4NjAsMjM1IEBACiAgICAgbW90aW9uY2VsbGlkeCAqbW90aW9uY2VsbHNpZHg7CiAKICAgICBidWYgPSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUgKGJ1Zik7Ci0gICAgaWYgKGdzdF9idWZmZXJfbWFwIChidWYsICZpbmZvLCBHU1RfTUFQX1dSSVRFKSkgewotICAgICAgZmlsdGVyLT5jdkltYWdlLT5pbWFnZURhdGEgPSAoY2hhciAqKSBpbmZvLmRhdGE7Ci0gICAgICBpZiAoZmlsdGVyLT5maXJzdGZyYW1lKSB7Ci0gICAgICAgIHNldFByZXZGcmFtZSAoZmlsdGVyLT5jdkltYWdlLCBmaWx0ZXItPmlkKTsKLSAgICAgICAgZmlsdGVyLT5maXJzdGZyYW1lID0gRkFMU0U7Ci0gICAgICB9Ci0gICAgICBtaW5pbXVtX21vdGlvbl9mcmFtZXMgPSBmaWx0ZXItPm1pbmltdW1fbW90aW9uX2ZyYW1lczsKLSAgICAgIHBvc3Rub21vdGlvbiA9IGZpbHRlci0+cG9zdG5vbW90aW9uOwotICAgICAgc2Vuc2l0aXZpdHkgPSBmaWx0ZXItPnNlbnNpdGl2aXR5OwotICAgICAgZnJhbWVyYXRlID0gZmlsdGVyLT5mcmFtZXJhdGU7Ci0gICAgICBncmlkeCA9IGZpbHRlci0+Z3JpZHg7Ci0gICAgICBncmlkeSA9IGZpbHRlci0+Z3JpZHk7Ci0gICAgICBkaXNwbGF5ID0gZmlsdGVyLT5kaXNwbGF5OwotICAgICAgbW90aW9ubWFza2Nvb3JkX2NvdW50ID0gZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRfY291bnQ7Ci0gICAgICBtb3Rpb25tYXNrY29vcmRzID0KLSAgICAgICAgICBnX25ldzAgKG1vdGlvbm1hc2tjb29yZHJlY3QsIGZpbHRlci0+bW90aW9ubWFza2Nvb3JkX2NvdW50KTsKLSAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWx0ZXItPm1vdGlvbm1hc2tjb29yZF9jb3VudDsgaSsrKSB7ICAgICAvL3dlIG5lZWQgZGl2aWRlIDIgYmVjYXVzZSB3ZSB1c2UgZ2F1c3MgcHlyYW1pZCBpbiBDKysgc2lkZQotICAgICAgICBtb3Rpb25tYXNrY29vcmRzW2ldLnVwcGVyX2xlZnRfeCA9Ci0gICAgICAgICAgICBmaWx0ZXItPm1vdGlvbm1hc2tjb29yZHNbaV0udXBwZXJfbGVmdF94IC8gMjsKLSAgICAgICAgbW90aW9ubWFza2Nvb3Jkc1tpXS51cHBlcl9sZWZ0X3kgPQotICAgICAgICAgICAgZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRzW2ldLnVwcGVyX2xlZnRfeSAvIDI7Ci0gICAgICAgIG1vdGlvbm1hc2tjb29yZHNbaV0ubG93ZXJfcmlnaHRfeCA9Ci0gICAgICAgICAgICBmaWx0ZXItPm1vdGlvbm1hc2tjb29yZHNbaV0ubG93ZXJfcmlnaHRfeCAvIDI7Ci0gICAgICAgIG1vdGlvbm1hc2tjb29yZHNbaV0ubG93ZXJfcmlnaHRfeSA9Ci0gICAgICAgICAgICBmaWx0ZXItPm1vdGlvbm1hc2tjb29yZHNbaV0ubG93ZXJfcmlnaHRfeSAvIDI7Ci0gICAgICB9CisgICAgaWYgKGZpbHRlci0+Zmlyc3RmcmFtZSkgeworICAgICAgc2V0UHJldkZyYW1lIChpbWcsIGZpbHRlci0+aWQpOworICAgICAgZmlsdGVyLT5maXJzdGZyYW1lID0gRkFMU0U7CisgICAgfQogCi0gICAgICBtb3Rpb25jZWxsc2NvbG9yLlJfY2hhbm5lbF92YWx1ZSA9Ci0gICAgICAgICAgZmlsdGVyLT5tb3Rpb25jZWxsc2NvbG9yLT5SX2NoYW5uZWxfdmFsdWU7Ci0gICAgICBtb3Rpb25jZWxsc2NvbG9yLkdfY2hhbm5lbF92YWx1ZSA9Ci0gICAgICAgICAgZmlsdGVyLT5tb3Rpb25jZWxsc2NvbG9yLT5HX2NoYW5uZWxfdmFsdWU7Ci0gICAgICBtb3Rpb25jZWxsc2NvbG9yLkJfY2hhbm5lbF92YWx1ZSA9Ci0gICAgICAgICAgZmlsdGVyLT5tb3Rpb25jZWxsc2NvbG9yLT5CX2NoYW5uZWxfdmFsdWU7CisgICAgbWluaW11bV9tb3Rpb25fZnJhbWVzID0gZmlsdGVyLT5taW5pbXVtX21vdGlvbl9mcmFtZXM7CisgICAgcG9zdG5vbW90aW9uID0gZmlsdGVyLT5wb3N0bm9tb3Rpb247CisgICAgc2Vuc2l0aXZpdHkgPSBmaWx0ZXItPnNlbnNpdGl2aXR5OworICAgIGZyYW1lcmF0ZSA9IGZpbHRlci0+ZnJhbWVyYXRlOworICAgIGdyaWR4ID0gZmlsdGVyLT5ncmlkeDsKKyAgICBncmlkeSA9IGZpbHRlci0+Z3JpZHk7CisgICAgZGlzcGxheSA9IGZpbHRlci0+ZGlzcGxheTsKKyAgICBtb3Rpb25tYXNrY29vcmRfY291bnQgPSBmaWx0ZXItPm1vdGlvbm1hc2tjb29yZF9jb3VudDsKKyAgICBtb3Rpb25tYXNrY29vcmRzID0KKyAgICAgICAgZ19uZXcwIChtb3Rpb25tYXNrY29vcmRyZWN0LCBmaWx0ZXItPm1vdGlvbm1hc2tjb29yZF9jb3VudCk7CisgICAgZm9yIChpID0gMDsgaSA8IGZpbHRlci0+bW90aW9ubWFza2Nvb3JkX2NvdW50OyBpKyspIHsgICAgICAgLy93ZSBuZWVkIGRpdmlkZSAyIGJlY2F1c2Ugd2UgdXNlIGdhdXNzIHB5cmFtaWQgaW4gQysrIHNpZGUKKyAgICAgIG1vdGlvbm1hc2tjb29yZHNbaV0udXBwZXJfbGVmdF94ID0KKyAgICAgICAgICBmaWx0ZXItPm1vdGlvbm1hc2tjb29yZHNbaV0udXBwZXJfbGVmdF94IC8gMjsKKyAgICAgIG1vdGlvbm1hc2tjb29yZHNbaV0udXBwZXJfbGVmdF95ID0KKyAgICAgICAgICBmaWx0ZXItPm1vdGlvbm1hc2tjb29yZHNbaV0udXBwZXJfbGVmdF95IC8gMjsKKyAgICAgIG1vdGlvbm1hc2tjb29yZHNbaV0ubG93ZXJfcmlnaHRfeCA9CisgICAgICAgICAgZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRzW2ldLmxvd2VyX3JpZ2h0X3ggLyAyOworICAgICAgbW90aW9ubWFza2Nvb3Jkc1tpXS5sb3dlcl9yaWdodF95ID0KKyAgICAgICAgICBmaWx0ZXItPm1vdGlvbm1hc2tjb29yZHNbaV0ubG93ZXJfcmlnaHRfeSAvIDI7CisgICAgfQogCi0gICAgICBpZiAoKGZpbHRlci0+Y2hhbmdlZF9ncmlkeCB8fCBmaWx0ZXItPmNoYW5nZWRfZ3JpZHkKLSAgICAgICAgICAgICAgfHwgZmlsdGVyLT5jaGFuZ2VkX3N0YXJ0aW1lKSkgewotICAgICAgICBpZiAoKGdfc3RyY21wMCAoZmlsdGVyLT5jdXJfZGF0YWZpbGUsIE5VTEwpICE9IDApKSB7Ci0gICAgICAgICAgR0ZSRUUgKGZpbHRlci0+Y3VyX2RhdGFmaWxlKTsKLSAgICAgICAgICBmaWx0ZXItPmRhdGFmaWxlaWR4Kys7Ci0gICAgICAgICAgZmlsdGVyLT5jdXJfZGF0YWZpbGUgPQotICAgICAgICAgICAgICBnX3N0cmR1cF9wcmludGYgKCIlcy0lZC4lcyIsIGZpbHRlci0+YmFzZW5hbWVfZGF0YWZpbGUsCi0gICAgICAgICAgICAgIGZpbHRlci0+ZGF0YWZpbGVpZHgsIGZpbHRlci0+ZGF0YWZpbGVfZXh0ZW5zaW9uKTsKLSAgICAgICAgICBmaWx0ZXItPmNoYW5nZWRfZGF0YWZpbGUgPSBUUlVFOwotICAgICAgICAgIG1vdGlvbl9jZWxsc19mcmVlX3Jlc291cmNlcyAoZmlsdGVyLT5pZCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGZpbHRlci0+bW90aW9uY2VsbHNfY291bnQgPiAwKQotICAgICAgICAgIGdzdF9tb3Rpb25jZWxsc191cGRhdGVfbW90aW9uX2NlbGxzIChmaWx0ZXIpOwotICAgICAgICBpZiAoZmlsdGVyLT5tb3Rpb25tYXNrY2VsbHNfY291bnQgPiAwKQotICAgICAgICAgIGdzdF9tb3Rpb25jZWxsc191cGRhdGVfbW90aW9uX21hc2tzIChmaWx0ZXIpOwotICAgICAgICBmaWx0ZXItPmNoYW5nZWRfZ3JpZHggPSBGQUxTRTsKLSAgICAgICAgZmlsdGVyLT5jaGFuZ2VkX2dyaWR5ID0gRkFMU0U7Ci0gICAgICAgIGZpbHRlci0+Y2hhbmdlZF9zdGFydGltZSA9IEZBTFNFOwotICAgICAgfQotICAgICAgZGF0YWZpbGUgPSBnX3N0cmR1cCAoZmlsdGVyLT5jdXJfZGF0YWZpbGUpOwotICAgICAgZmlsdGVyLT5jdXJfYnVmZl90aW1lc3RhbXAgPSAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgLyBHU1RfTVNFQ09ORCk7Ci0gICAgICBmaWx0ZXItPnN0YXJ0dGltZSArPQotICAgICAgICAgIChmaWx0ZXItPmN1cl9idWZmX3RpbWVzdGFtcCAtIGZpbHRlci0+cHJldl9idWZmX3RpbWVzdGFtcCk7Ci0gICAgICBzdGFydHRpbWUgPSBmaWx0ZXItPnN0YXJ0dGltZTsKLSAgICAgIGlmIChmaWx0ZXItPmNoYW5nZWRfZGF0YWZpbGUgfHwgZmlsdGVyLT5kaWZmX3RpbWVzdGFtcCA8IDApCi0gICAgICAgIGZpbHRlci0+ZGlmZl90aW1lc3RhbXAgPQotICAgICAgICAgICAgKGdpbnQ2NCkgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpIC8gR1NUX01TRUNPTkQpOwotICAgICAgY2hhbmdlZF9kYXRhZmlsZSA9IGZpbHRlci0+Y2hhbmdlZF9kYXRhZmlsZTsKLSAgICAgIG1vdGlvbm1hc2tjZWxsc19jb3VudCA9IGZpbHRlci0+bW90aW9ubWFza2NlbGxzX2NvdW50OwotICAgICAgbW90aW9ubWFza2NlbGxzaWR4ID0KLSAgICAgICAgICBnX25ldzAgKG1vdGlvbmNlbGxpZHgsIGZpbHRlci0+bW90aW9ubWFza2NlbGxzX2NvdW50KTsKLSAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWx0ZXItPm1vdGlvbm1hc2tjZWxsc19jb3VudDsgaSsrKSB7Ci0gICAgICAgIG1vdGlvbm1hc2tjZWxsc2lkeFtpXS5saW5laWR4ID0gZmlsdGVyLT5tb3Rpb25tYXNrY2VsbHNpZHhbaV0ubGluZWlkeDsKLSAgICAgICAgbW90aW9ubWFza2NlbGxzaWR4W2ldLmNvbHVtbmlkeCA9Ci0gICAgICAgICAgICBmaWx0ZXItPm1vdGlvbm1hc2tjZWxsc2lkeFtpXS5jb2x1bW5pZHg7Ci0gICAgICB9Ci0gICAgICBtb3Rpb25jZWxsc19jb3VudCA9IGZpbHRlci0+bW90aW9uY2VsbHNfY291bnQ7Ci0gICAgICBtb3Rpb25jZWxsc2lkeCA9IGdfbmV3MCAobW90aW9uY2VsbGlkeCwgZmlsdGVyLT5tb3Rpb25jZWxsc19jb3VudCk7Ci0gICAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVyLT5tb3Rpb25jZWxsc19jb3VudDsgaSsrKSB7Ci0gICAgICAgIG1vdGlvbmNlbGxzaWR4W2ldLmxpbmVpZHggPSBmaWx0ZXItPm1vdGlvbmNlbGxzaWR4W2ldLmxpbmVpZHg7Ci0gICAgICAgIG1vdGlvbmNlbGxzaWR4W2ldLmNvbHVtbmlkeCA9IGZpbHRlci0+bW90aW9uY2VsbHNpZHhbaV0uY29sdW1uaWR4OwotICAgICAgfQotICAgICAgdXNlQWxwaGEgPSBmaWx0ZXItPnVzZWFscGhhOwotICAgICAgdGhpY2tuZXNzID0gZmlsdGVyLT50aGlja25lc3M7Ci0gICAgICBzdWNjZXNzID0KLSAgICAgICAgICBwZXJmb3JtX2RldGVjdGlvbl9tb3Rpb25fY2VsbHMgKGZpbHRlci0+Y3ZJbWFnZSwgc2Vuc2l0aXZpdHksCi0gICAgICAgICAgZnJhbWVyYXRlLCBncmlkeCwgZ3JpZHksCi0gICAgICAgICAgKGdpbnQ2NCkgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpIC8gR1NUX01TRUNPTkQpIC0KLSAgICAgICAgICBmaWx0ZXItPmRpZmZfdGltZXN0YW1wLCBkaXNwbGF5LCB1c2VBbHBoYSwgbW90aW9ubWFza2Nvb3JkX2NvdW50LAotICAgICAgICAgIG1vdGlvbm1hc2tjb29yZHMsIG1vdGlvbm1hc2tjZWxsc19jb3VudCwgbW90aW9ubWFza2NlbGxzaWR4LAotICAgICAgICAgIG1vdGlvbmNlbGxzY29sb3IsIG1vdGlvbmNlbGxzX2NvdW50LCBtb3Rpb25jZWxsc2lkeCwgc3RhcnR0aW1lLAotICAgICAgICAgIGRhdGFmaWxlLCBjaGFuZ2VkX2RhdGFmaWxlLCB0aGlja25lc3MsIGZpbHRlci0+aWQpOworICAgIG1vdGlvbmNlbGxzY29sb3IuUl9jaGFubmVsX3ZhbHVlID0KKyAgICAgICAgZmlsdGVyLT5tb3Rpb25jZWxsc2NvbG9yLT5SX2NoYW5uZWxfdmFsdWU7CisgICAgbW90aW9uY2VsbHNjb2xvci5HX2NoYW5uZWxfdmFsdWUgPQorICAgICAgICBmaWx0ZXItPm1vdGlvbmNlbGxzY29sb3ItPkdfY2hhbm5lbF92YWx1ZTsKKyAgICBtb3Rpb25jZWxsc2NvbG9yLkJfY2hhbm5lbF92YWx1ZSA9CisgICAgICAgIGZpbHRlci0+bW90aW9uY2VsbHNjb2xvci0+Ql9jaGFubmVsX3ZhbHVlOwogCi0gICAgICBpZiAoKHN1Y2Nlc3MgPT0gMSkgJiYgKGZpbHRlci0+c2VudF9pbml0X2Vycm9yX21zZyA9PSBGQUxTRSkpIHsKLSAgICAgICAgY2hhciAqaW5pdGZhaWxlZHJlYXNvbjsKLSAgICAgICAgaW50IGluaXRlcnJvcmNvZGU7Ci0gICAgICAgIEdzdFN0cnVjdHVyZSAqczsKLSAgICAgICAgR3N0TWVzc2FnZSAqbTsKLSAgICAgICAgaW5pdGZhaWxlZHJlYXNvbiA9IGdldEluaXREYXRhRmlsZUZhaWxlZCAoZmlsdGVyLT5pZCk7Ci0gICAgICAgIGluaXRlcnJvcmNvZGUgPSBnZXRJbml0RXJyb3JDb2RlIChmaWx0ZXItPmlkKTsKLSAgICAgICAgcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgibW90aW9uIiwgImluaXRfZXJyb3JfY29kZSIsIEdfVFlQRV9JTlQsCi0gICAgICAgICAgICBpbml0ZXJyb3Jjb2RlLCAiZGV0YWlscyIsIEdfVFlQRV9TVFJJTkcsIGluaXRmYWlsZWRyZWFzb24sIE5VTEwpOwotICAgICAgICBtID0gZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQgKEdTVF9PQkpFQ1QgKGZpbHRlciksIHMpOwotICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBtKTsKLSAgICAgICAgZmlsdGVyLT5zZW50X2luaXRfZXJyb3JfbXNnID0gVFJVRTsKKyAgICBpZiAoKGZpbHRlci0+Y2hhbmdlZF9ncmlkeCB8fCBmaWx0ZXItPmNoYW5nZWRfZ3JpZHkKKyAgICAgICAgICAgIHx8IGZpbHRlci0+Y2hhbmdlZF9zdGFydGltZSkpIHsKKyAgICAgIGlmICgoZ19zdHJjbXAwIChmaWx0ZXItPmN1cl9kYXRhZmlsZSwgTlVMTCkgIT0gMCkpIHsKKyAgICAgICAgR0ZSRUUgKGZpbHRlci0+Y3VyX2RhdGFmaWxlKTsKKyAgICAgICAgZmlsdGVyLT5kYXRhZmlsZWlkeCsrOworICAgICAgICBmaWx0ZXItPmN1cl9kYXRhZmlsZSA9CisgICAgICAgICAgICBnX3N0cmR1cF9wcmludGYgKCIlcy0lZC4lcyIsIGZpbHRlci0+YmFzZW5hbWVfZGF0YWZpbGUsCisgICAgICAgICAgICBmaWx0ZXItPmRhdGFmaWxlaWR4LCBmaWx0ZXItPmRhdGFmaWxlX2V4dGVuc2lvbik7CisgICAgICAgIGZpbHRlci0+Y2hhbmdlZF9kYXRhZmlsZSA9IFRSVUU7CisgICAgICAgIG1vdGlvbl9jZWxsc19mcmVlX3Jlc291cmNlcyAoZmlsdGVyLT5pZCk7CiAgICAgICB9Ci0gICAgICBpZiAoKHN1Y2Nlc3MgPT0gLTEpICYmIChmaWx0ZXItPnNlbnRfc2F2ZV9lcnJvcl9tc2cgPT0gRkFMU0UpKSB7Ci0gICAgICAgIGNoYXIgKnNhdmVmYWlsZWRyZWFzb247Ci0gICAgICAgIGludCBzYXZlZXJyb3Jjb2RlOwotICAgICAgICBHc3RTdHJ1Y3R1cmUgKnM7Ci0gICAgICAgIEdzdE1lc3NhZ2UgKm07Ci0gICAgICAgIHNhdmVmYWlsZWRyZWFzb24gPSBnZXRTYXZlRGF0YUZpbGVGYWlsZWQgKGZpbHRlci0+aWQpOwotICAgICAgICBzYXZlZXJyb3Jjb2RlID0gZ2V0U2F2ZUVycm9yQ29kZSAoZmlsdGVyLT5pZCk7Ci0gICAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoIm1vdGlvbiIsICJzYXZlX2Vycm9yX2NvZGUiLCBHX1RZUEVfSU5ULAotICAgICAgICAgICAgc2F2ZWVycm9yY29kZSwgImRldGFpbHMiLCBHX1RZUEVfU1RSSU5HLCBzYXZlZmFpbGVkcmVhc29uLCBOVUxMKTsKLSAgICAgICAgbSA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChmaWx0ZXIpLCBzKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgbSk7Ci0gICAgICAgIGZpbHRlci0+c2VudF9zYXZlX2Vycm9yX21zZyA9IFRSVUU7Ci0gICAgICB9Ci0gICAgICBpZiAoc3VjY2VzcyA9PSAtMikgewotICAgICAgICBHU1RfTE9HX09CSkVDVCAoZmlsdGVyLCAiZnJhbWUgZHJvcHBlZCIpOwotICAgICAgICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZpbmZvKTsKLSAgICAgICAgZmlsdGVyLT5wcmV2X2J1ZmZfdGltZXN0YW1wID0gZmlsdGVyLT5jdXJfYnVmZl90aW1lc3RhbXA7Ci0gICAgICAgIC8vZnJlZQotICAgICAgICBHRlJFRSAoZGF0YWZpbGUpOwotICAgICAgICBHRlJFRSAobW90aW9ubWFza2Nvb3Jkcyk7Ci0gICAgICAgIEdGUkVFIChtb3Rpb25tYXNrY2VsbHNpZHgpOwotICAgICAgICBHRlJFRSAobW90aW9uY2VsbHNpZHgpOwotICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyKTsKLSAgICAgICAgcmV0dXJuIGdzdF9wYWRfcHVzaCAoZmlsdGVyLT5zcmNwYWQsIGJ1Zik7Ci0gICAgICB9Ci0gICAgICBmaWx0ZXItPmNoYW5nZWRfZGF0YWZpbGUgPSBnZXRDaGFuZ2VkRGF0YUZpbGUgKGZpbHRlci0+aWQpOwotICAgICAgbW90aW9uY2VsbHNpZHhjbnQgPSBnZXRNb3Rpb25DZWxsc0lkeENudCAoZmlsdGVyLT5pZCk7Ci0gICAgICBudW1iZXJPZkNlbGxzID0gZmlsdGVyLT5ncmlkeCAqIGZpbHRlci0+Z3JpZHk7Ci0gICAgICBtb3Rpb25jZWxsc251bWJlciA9IG1vdGlvbmNlbGxzaWR4Y250IC8gTVNHTEVOOwotICAgICAgY2VsbHNPZkludGVyZXN0TnVtYmVyID0gKGZpbHRlci0+bW90aW9uY2VsbHNfY291bnQgPiAwKSA/IC8vaG93IG1hbnkgY2VsbHMgaW50ZXJlc3QgZm9yIHVzCi0gICAgICAgICAgKGZpbHRlci0+bW90aW9uY2VsbHNfY291bnQpIDogKG51bWJlck9mQ2VsbHMpOwotICAgICAgbWluY2VsbHNPZkludGVyZXN0TnVtYmVyID0KLSAgICAgICAgICBmbG9vciAoKGRvdWJsZSkgY2VsbHNPZkludGVyZXN0TnVtYmVyICogZmlsdGVyLT50aHJlc2hvbGQpOwotICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcik7Ci0gICAgICBtb3Rpb25kZXRlY3QgPSAobW90aW9uY2VsbHNudW1iZXIgPj0gbWluY2VsbHNPZkludGVyZXN0TnVtYmVyKSA/IDEgOiAwOwotICAgICAgaWYgKChtb3Rpb25jZWxsc2lkeGNudCA+IDApICYmIChtb3Rpb25kZXRlY3QgPT0gMSkpIHsKLSAgICAgICAgY2hhciAqZGV0ZWN0ZWRtb3Rpb25jZWxsczsKLSAgICAgICAgZmlsdGVyLT5sYXN0X21vdGlvbl90aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKTsKLSAgICAgICAgZGV0ZWN0ZWRtb3Rpb25jZWxscyA9IGdldE1vdGlvbkNlbGxzSWR4IChmaWx0ZXItPmlkKTsKLSAgICAgICAgaWYgKGRldGVjdGVkbW90aW9uY2VsbHMpIHsKLSAgICAgICAgICBmaWx0ZXItPmNvbnNlY3V0aXZlX21vdGlvbisrOwotICAgICAgICAgIGlmICgoZmlsdGVyLT5wcmV2aW91c19tb3Rpb24gPT0gRkFMU0UpCi0gICAgICAgICAgICAgICYmIChmaWx0ZXItPmNvbnNlY3V0aXZlX21vdGlvbiA+PSBtaW5pbXVtX21vdGlvbl9mcmFtZXMpKSB7Ci0gICAgICAgICAgICBHc3RTdHJ1Y3R1cmUgKnM7Ci0gICAgICAgICAgICBHc3RNZXNzYWdlICptOwotICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmlsdGVyLCAibW90aW9uIHN0YXJ0ZWQsIHBvc3QgbXNnIG9uIHRoZSBidXMiKTsKLSAgICAgICAgICAgIGZpbHRlci0+cHJldmlvdXNfbW90aW9uID0gVFJVRTsKLSAgICAgICAgICAgIGZpbHRlci0+bW90aW9uX2JlZ2luX3RpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpOwotICAgICAgICAgICAgcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgibW90aW9uIiwgIm1vdGlvbl9jZWxsc19pbmRpY2VzIiwKLSAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLCBkZXRlY3RlZG1vdGlvbmNlbGxzLCAibW90aW9uX2JlZ2luIiwKLSAgICAgICAgICAgICAgICBHX1RZUEVfVUlOVDY0LCBmaWx0ZXItPm1vdGlvbl9iZWdpbl90aW1lc3RhbXAsIE5VTEwpOwotICAgICAgICAgICAgbSA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChmaWx0ZXIpLCBzKTsKLSAgICAgICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKGZpbHRlciksIG0pOwotICAgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLT5wb3N0YWxsbW90aW9uKSB7Ci0gICAgICAgICAgICBHc3RTdHJ1Y3R1cmUgKnM7Ci0gICAgICAgICAgICBHc3RNZXNzYWdlICptOwotICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmlsdGVyLCAibW90aW9uLCBwb3N0IG1zZyBvbiB0aGUgYnVzIik7Ci0gICAgICAgICAgICBmaWx0ZXItPm1vdGlvbl90aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKTsKLSAgICAgICAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoIm1vdGlvbiIsICJtb3Rpb25fY2VsbHNfaW5kaWNlcyIsCi0gICAgICAgICAgICAgICAgR19UWVBFX1NUUklORywgZGV0ZWN0ZWRtb3Rpb25jZWxscywgIm1vdGlvbiIsIEdfVFlQRV9VSU5UNjQsCi0gICAgICAgICAgICAgICAgZmlsdGVyLT5tb3Rpb25fdGltZXN0YW1wLCBOVUxMKTsKLSAgICAgICAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7Ci0gICAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBtKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgR3N0U3RydWN0dXJlICpzOwotICAgICAgICAgIEdzdE1lc3NhZ2UgKm07Ci0gICAgICAgICAgcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgibW90aW9uIiwgIm1vdGlvbl9jZWxsc19pbmRpY2VzIiwKLSAgICAgICAgICAgICAgR19UWVBFX1NUUklORywgImVycm9yIiwgTlVMTCk7Ci0gICAgICAgICAgbSA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChmaWx0ZXIpLCBzKTsKLSAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBtKTsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZmlsdGVyLT5jb25zZWN1dGl2ZV9tb3Rpb24gPSAwOwotICAgICAgICBpZiAoKCgoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgLQotICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLT5sYXN0X21vdGlvbl90aW1lc3RhbXApIC8gMTAwMDAwMDAwMGwpID49Ci0gICAgICAgICAgICAgICAgZmlsdGVyLT5nYXApCi0gICAgICAgICAgICAmJiAoZmlsdGVyLT5sYXN0X21vdGlvbl90aW1lc3RhbXAgPiAwKSkgewotICAgICAgICAgIGlmIChmaWx0ZXItPnByZXZpb3VzX21vdGlvbikgewotICAgICAgICAgICAgR3N0U3RydWN0dXJlICpzOwotICAgICAgICAgICAgR3N0TWVzc2FnZSAqbTsKLSAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZpbHRlciwgIm1vdGlvbiBmaW5pc2hlZCwgcG9zdCBtc2cgb24gdGhlIGJ1cyIpOwotICAgICAgICAgICAgZmlsdGVyLT5wcmV2aW91c19tb3Rpb24gPSBGQUxTRTsKLSAgICAgICAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoIm1vdGlvbiIsICJtb3Rpb25fZmluaXNoZWQiLCBHX1RZUEVfVUlOVDY0LAotICAgICAgICAgICAgICAgIGZpbHRlci0+bGFzdF9tb3Rpb25fdGltZXN0YW1wLCBOVUxMKTsKLSAgICAgICAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7Ci0gICAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBtKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGlmIChwb3N0bm9tb3Rpb24gPiAwKSB7Ci0gICAgICAgIGd1aW50NjQgbGFzdF9idWZfdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgLyAxMDAwMDAwMDAwbDsKLSAgICAgICAgaWYgKChsYXN0X2J1Zl90aW1lc3RhbXAgLQotICAgICAgICAgICAgICAgIChmaWx0ZXItPmxhc3RfbW90aW9uX3RpbWVzdGFtcCAvIDEwMDAwMDAwMDBsKSkgPj0KLSAgICAgICAgICAgIGZpbHRlci0+cG9zdG5vbW90aW9uKSB7Ci0gICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmlsdGVyLCAicG9zdCBubyBtb3Rpb24gbXNnIG9uIHRoZSBidXMiKTsKLSAgICAgICAgICBpZiAoKGxhc3RfYnVmX3RpbWVzdGFtcCAtCi0gICAgICAgICAgICAgICAgICAoZmlsdGVyLT5sYXN0X25vbW90aW9uX25vdGlmaWVkIC8gMTAwMDAwMDAwMGwpKSA+PQotICAgICAgICAgICAgICBmaWx0ZXItPnBvc3Rub21vdGlvbikgewotICAgICAgICAgICAgR3N0U3RydWN0dXJlICpzOwotICAgICAgICAgICAgR3N0TWVzc2FnZSAqbTsKLSAgICAgICAgICAgIGZpbHRlci0+bGFzdF9ub21vdGlvbl9ub3RpZmllZCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpOwotICAgICAgICAgICAgcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgibW90aW9uIiwgIm5vX21vdGlvbiIsIEdfVFlQRV9VSU5UNjQsCi0gICAgICAgICAgICAgICAgZmlsdGVyLT5sYXN0X21vdGlvbl90aW1lc3RhbXAsIE5VTEwpOwotICAgICAgICAgICAgbSA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChmaWx0ZXIpLCBzKTsKLSAgICAgICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKGZpbHRlciksIG0pOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmaW5mbyk7CisgICAgICBpZiAoZmlsdGVyLT5tb3Rpb25jZWxsc19jb3VudCA+IDApCisgICAgICAgIGdzdF9tb3Rpb25jZWxsc191cGRhdGVfbW90aW9uX2NlbGxzIChmaWx0ZXIpOworICAgICAgaWYgKGZpbHRlci0+bW90aW9ubWFza2NlbGxzX2NvdW50ID4gMCkKKyAgICAgICAgZ3N0X21vdGlvbmNlbGxzX3VwZGF0ZV9tb3Rpb25fbWFza3MgKGZpbHRlcik7CisgICAgICBmaWx0ZXItPmNoYW5nZWRfZ3JpZHggPSBGQUxTRTsKKyAgICAgIGZpbHRlci0+Y2hhbmdlZF9ncmlkeSA9IEZBTFNFOworICAgICAgZmlsdGVyLT5jaGFuZ2VkX3N0YXJ0aW1lID0gRkFMU0U7CisgICAgfQorCisgICAgZGF0YWZpbGUgPSBnX3N0cmR1cCAoZmlsdGVyLT5jdXJfZGF0YWZpbGUpOworICAgIGZpbHRlci0+Y3VyX2J1ZmZfdGltZXN0YW1wID0gKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpIC8gR1NUX01TRUNPTkQpOworICAgIGZpbHRlci0+c3RhcnR0aW1lICs9CisgICAgICAgIChmaWx0ZXItPmN1cl9idWZmX3RpbWVzdGFtcCAtIGZpbHRlci0+cHJldl9idWZmX3RpbWVzdGFtcCk7CisgICAgc3RhcnR0aW1lID0gZmlsdGVyLT5zdGFydHRpbWU7CisgICAgaWYgKGZpbHRlci0+Y2hhbmdlZF9kYXRhZmlsZSB8fCBmaWx0ZXItPmRpZmZfdGltZXN0YW1wIDwgMCkKKyAgICAgIGZpbHRlci0+ZGlmZl90aW1lc3RhbXAgPQorICAgICAgICAgIChnaW50NjQpIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSAvIEdTVF9NU0VDT05EKTsKKyAgICBjaGFuZ2VkX2RhdGFmaWxlID0gZmlsdGVyLT5jaGFuZ2VkX2RhdGFmaWxlOworCisgICAgbW90aW9ubWFza2NlbGxzX2NvdW50ID0gZmlsdGVyLT5tb3Rpb25tYXNrY2VsbHNfY291bnQ7CisgICAgbW90aW9ubWFza2NlbGxzaWR4ID0gZ19uZXcwIChtb3Rpb25jZWxsaWR4LCBmaWx0ZXItPm1vdGlvbm1hc2tjZWxsc19jb3VudCk7CisgICAgZm9yIChpID0gMDsgaSA8IGZpbHRlci0+bW90aW9ubWFza2NlbGxzX2NvdW50OyBpKyspIHsKKyAgICAgIG1vdGlvbm1hc2tjZWxsc2lkeFtpXS5saW5laWR4ID0gZmlsdGVyLT5tb3Rpb25tYXNrY2VsbHNpZHhbaV0ubGluZWlkeDsKKyAgICAgIG1vdGlvbm1hc2tjZWxsc2lkeFtpXS5jb2x1bW5pZHggPSBmaWx0ZXItPm1vdGlvbm1hc2tjZWxsc2lkeFtpXS5jb2x1bW5pZHg7CisgICAgfQorICAgIG1vdGlvbmNlbGxzX2NvdW50ID0gZmlsdGVyLT5tb3Rpb25jZWxsc19jb3VudDsKKyAgICBtb3Rpb25jZWxsc2lkeCA9IGdfbmV3MCAobW90aW9uY2VsbGlkeCwgZmlsdGVyLT5tb3Rpb25jZWxsc19jb3VudCk7CisgICAgZm9yIChpID0gMDsgaSA8IGZpbHRlci0+bW90aW9uY2VsbHNfY291bnQ7IGkrKykgeworICAgICAgbW90aW9uY2VsbHNpZHhbaV0ubGluZWlkeCA9IGZpbHRlci0+bW90aW9uY2VsbHNpZHhbaV0ubGluZWlkeDsKKyAgICAgIG1vdGlvbmNlbGxzaWR4W2ldLmNvbHVtbmlkeCA9IGZpbHRlci0+bW90aW9uY2VsbHNpZHhbaV0uY29sdW1uaWR4OworICAgIH0KKworICAgIHVzZUFscGhhID0gZmlsdGVyLT51c2VhbHBoYTsKKyAgICB0aGlja25lc3MgPSBmaWx0ZXItPnRoaWNrbmVzczsKKyAgICBzdWNjZXNzID0KKyAgICAgICAgcGVyZm9ybV9kZXRlY3Rpb25fbW90aW9uX2NlbGxzIChpbWcsIHNlbnNpdGl2aXR5LAorICAgICAgICBmcmFtZXJhdGUsIGdyaWR4LCBncmlkeSwKKyAgICAgICAgKGdpbnQ2NCkgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpIC8gR1NUX01TRUNPTkQpIC0KKyAgICAgICAgZmlsdGVyLT5kaWZmX3RpbWVzdGFtcCwgZGlzcGxheSwgdXNlQWxwaGEsIG1vdGlvbm1hc2tjb29yZF9jb3VudCwKKyAgICAgICAgbW90aW9ubWFza2Nvb3JkcywgbW90aW9ubWFza2NlbGxzX2NvdW50LCBtb3Rpb25tYXNrY2VsbHNpZHgsCisgICAgICAgIG1vdGlvbmNlbGxzY29sb3IsIG1vdGlvbmNlbGxzX2NvdW50LCBtb3Rpb25jZWxsc2lkeCwgc3RhcnR0aW1lLAorICAgICAgICBkYXRhZmlsZSwgY2hhbmdlZF9kYXRhZmlsZSwgdGhpY2tuZXNzLCBmaWx0ZXItPmlkKTsKKworICAgIGlmICgoc3VjY2VzcyA9PSAxKSAmJiAoZmlsdGVyLT5zZW50X2luaXRfZXJyb3JfbXNnID09IEZBTFNFKSkgeworICAgICAgY2hhciAqaW5pdGZhaWxlZHJlYXNvbjsKKyAgICAgIGludCBpbml0ZXJyb3Jjb2RlOworICAgICAgR3N0U3RydWN0dXJlICpzOworICAgICAgR3N0TWVzc2FnZSAqbTsKKworICAgICAgaW5pdGZhaWxlZHJlYXNvbiA9IGdldEluaXREYXRhRmlsZUZhaWxlZCAoZmlsdGVyLT5pZCk7CisgICAgICBpbml0ZXJyb3Jjb2RlID0gZ2V0SW5pdEVycm9yQ29kZSAoZmlsdGVyLT5pZCk7CisgICAgICBzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJtb3Rpb24iLCAiaW5pdF9lcnJvcl9jb2RlIiwgR19UWVBFX0lOVCwKKyAgICAgICAgICBpbml0ZXJyb3Jjb2RlLCAiZGV0YWlscyIsIEdfVFlQRV9TVFJJTkcsIGluaXRmYWlsZWRyZWFzb24sIE5VTEwpOworICAgICAgbSA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChmaWx0ZXIpLCBzKTsKKyAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKGZpbHRlciksIG0pOworICAgICAgZmlsdGVyLT5zZW50X2luaXRfZXJyb3JfbXNnID0gVFJVRTsKKyAgICB9CisgICAgaWYgKChzdWNjZXNzID09IC0xKSAmJiAoZmlsdGVyLT5zZW50X3NhdmVfZXJyb3JfbXNnID09IEZBTFNFKSkgeworICAgICAgY2hhciAqc2F2ZWZhaWxlZHJlYXNvbjsKKyAgICAgIGludCBzYXZlZXJyb3Jjb2RlOworICAgICAgR3N0U3RydWN0dXJlICpzOworICAgICAgR3N0TWVzc2FnZSAqbTsKKworICAgICAgc2F2ZWZhaWxlZHJlYXNvbiA9IGdldFNhdmVEYXRhRmlsZUZhaWxlZCAoZmlsdGVyLT5pZCk7CisgICAgICBzYXZlZXJyb3Jjb2RlID0gZ2V0U2F2ZUVycm9yQ29kZSAoZmlsdGVyLT5pZCk7CisgICAgICBzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJtb3Rpb24iLCAic2F2ZV9lcnJvcl9jb2RlIiwgR19UWVBFX0lOVCwKKyAgICAgICAgICBzYXZlZXJyb3Jjb2RlLCAiZGV0YWlscyIsIEdfVFlQRV9TVFJJTkcsIHNhdmVmYWlsZWRyZWFzb24sIE5VTEwpOworICAgICAgbSA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChmaWx0ZXIpLCBzKTsKKyAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKGZpbHRlciksIG0pOworICAgICAgZmlsdGVyLT5zZW50X3NhdmVfZXJyb3JfbXNnID0gVFJVRTsKKyAgICB9CisgICAgaWYgKHN1Y2Nlc3MgPT0gLTIpIHsKKyAgICAgIEdTVF9MT0dfT0JKRUNUIChmaWx0ZXIsICJmcmFtZSBkcm9wcGVkIik7CiAgICAgICBmaWx0ZXItPnByZXZfYnVmZl90aW1lc3RhbXAgPSBmaWx0ZXItPmN1cl9idWZmX3RpbWVzdGFtcDsKICAgICAgIC8vZnJlZQogICAgICAgR0ZSRUUgKGRhdGFmaWxlKTsKICAgICAgIEdGUkVFIChtb3Rpb25tYXNrY29vcmRzKTsKICAgICAgIEdGUkVFIChtb3Rpb25tYXNrY2VsbHNpZHgpOwogICAgICAgR0ZSRUUgKG1vdGlvbmNlbGxzaWR4KTsKLSAgICB9IGVsc2UgewotICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChmaWx0ZXIsICJlcnJvciBtYXBwaW5nIGlucHV0IGJ1ZmZlciIpOwogICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcik7CisgICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CiAgICAgfQorCisgICAgZmlsdGVyLT5jaGFuZ2VkX2RhdGFmaWxlID0gZ2V0Q2hhbmdlZERhdGFGaWxlIChmaWx0ZXItPmlkKTsKKyAgICBtb3Rpb25jZWxsc2lkeGNudCA9IGdldE1vdGlvbkNlbGxzSWR4Q250IChmaWx0ZXItPmlkKTsKKyAgICBudW1iZXJPZkNlbGxzID0gZmlsdGVyLT5ncmlkeCAqIGZpbHRlci0+Z3JpZHk7CisgICAgbW90aW9uY2VsbHNudW1iZXIgPSBtb3Rpb25jZWxsc2lkeGNudCAvIE1TR0xFTjsKKyAgICBjZWxsc09mSW50ZXJlc3ROdW1iZXIgPSAoZmlsdGVyLT5tb3Rpb25jZWxsc19jb3VudCA+IDApID8gICAvL2hvdyBtYW55IGNlbGxzIGludGVyZXN0IGZvciB1cworICAgICAgICAoZmlsdGVyLT5tb3Rpb25jZWxsc19jb3VudCkgOiAobnVtYmVyT2ZDZWxscyk7CisgICAgbWluY2VsbHNPZkludGVyZXN0TnVtYmVyID0KKyAgICAgICAgZmxvb3IgKChkb3VibGUpIGNlbGxzT2ZJbnRlcmVzdE51bWJlciAqIGZpbHRlci0+dGhyZXNob2xkKTsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyKTsKKyAgICBtb3Rpb25kZXRlY3QgPSAobW90aW9uY2VsbHNudW1iZXIgPj0gbWluY2VsbHNPZkludGVyZXN0TnVtYmVyKSA/IDEgOiAwOworICAgIGlmICgobW90aW9uY2VsbHNpZHhjbnQgPiAwKSAmJiAobW90aW9uZGV0ZWN0ID09IDEpKSB7CisgICAgICBjaGFyICpkZXRlY3RlZG1vdGlvbmNlbGxzOworCisgICAgICBmaWx0ZXItPmxhc3RfbW90aW9uX3RpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpOworICAgICAgZGV0ZWN0ZWRtb3Rpb25jZWxscyA9IGdldE1vdGlvbkNlbGxzSWR4IChmaWx0ZXItPmlkKTsKKyAgICAgIGlmIChkZXRlY3RlZG1vdGlvbmNlbGxzKSB7CisgICAgICAgIGZpbHRlci0+Y29uc2VjdXRpdmVfbW90aW9uKys7CisgICAgICAgIGlmICgoZmlsdGVyLT5wcmV2aW91c19tb3Rpb24gPT0gRkFMU0UpCisgICAgICAgICAgICAmJiAoZmlsdGVyLT5jb25zZWN1dGl2ZV9tb3Rpb24gPj0gbWluaW11bV9tb3Rpb25fZnJhbWVzKSkgeworICAgICAgICAgIEdzdFN0cnVjdHVyZSAqczsKKyAgICAgICAgICBHc3RNZXNzYWdlICptOworCisgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmlsdGVyLCAibW90aW9uIHN0YXJ0ZWQsIHBvc3QgbXNnIG9uIHRoZSBidXMiKTsKKyAgICAgICAgICBmaWx0ZXItPnByZXZpb3VzX21vdGlvbiA9IFRSVUU7CisgICAgICAgICAgZmlsdGVyLT5tb3Rpb25fYmVnaW5fdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1Zik7CisgICAgICAgICAgcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgibW90aW9uIiwgIm1vdGlvbl9jZWxsc19pbmRpY2VzIiwKKyAgICAgICAgICAgICAgR19UWVBFX1NUUklORywgZGV0ZWN0ZWRtb3Rpb25jZWxscywgIm1vdGlvbl9iZWdpbiIsCisgICAgICAgICAgICAgIEdfVFlQRV9VSU5UNjQsIGZpbHRlci0+bW90aW9uX2JlZ2luX3RpbWVzdGFtcCwgTlVMTCk7CisgICAgICAgICAgbSA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChmaWx0ZXIpLCBzKTsKKyAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBtKTsKKyAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXItPnBvc3RhbGxtb3Rpb24pIHsKKyAgICAgICAgICBHc3RTdHJ1Y3R1cmUgKnM7CisgICAgICAgICAgR3N0TWVzc2FnZSAqbTsKKworICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZpbHRlciwgIm1vdGlvbiwgcG9zdCBtc2cgb24gdGhlIGJ1cyIpOworICAgICAgICAgIGZpbHRlci0+bW90aW9uX3RpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpOworICAgICAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoIm1vdGlvbiIsICJtb3Rpb25fY2VsbHNfaW5kaWNlcyIsCisgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsIGRldGVjdGVkbW90aW9uY2VsbHMsICJtb3Rpb24iLCBHX1RZUEVfVUlOVDY0LAorICAgICAgICAgICAgICBmaWx0ZXItPm1vdGlvbl90aW1lc3RhbXAsIE5VTEwpOworICAgICAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7CisgICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgbSk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEdzdFN0cnVjdHVyZSAqczsKKyAgICAgICAgR3N0TWVzc2FnZSAqbTsKKworICAgICAgICBzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJtb3Rpb24iLCAibW90aW9uX2NlbGxzX2luZGljZXMiLAorICAgICAgICAgICAgR19UWVBFX1NUUklORywgImVycm9yIiwgTlVMTCk7CisgICAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7CisgICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKGZpbHRlciksIG0pOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBmaWx0ZXItPmNvbnNlY3V0aXZlX21vdGlvbiA9IDA7CisgICAgICBpZiAoKCgoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgLQorICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci0+bGFzdF9tb3Rpb25fdGltZXN0YW1wKSAvIDEwMDAwMDAwMDBsKSA+PQorICAgICAgICAgICAgICBmaWx0ZXItPmdhcCkKKyAgICAgICAgICAmJiAoZmlsdGVyLT5sYXN0X21vdGlvbl90aW1lc3RhbXAgPiAwKSkgeworICAgICAgICBpZiAoZmlsdGVyLT5wcmV2aW91c19tb3Rpb24pIHsKKyAgICAgICAgICBHc3RTdHJ1Y3R1cmUgKnM7CisgICAgICAgICAgR3N0TWVzc2FnZSAqbTsKKworICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZpbHRlciwgIm1vdGlvbiBmaW5pc2hlZCwgcG9zdCBtc2cgb24gdGhlIGJ1cyIpOworICAgICAgICAgIGZpbHRlci0+cHJldmlvdXNfbW90aW9uID0gRkFMU0U7CisgICAgICAgICAgcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgibW90aW9uIiwgIm1vdGlvbl9maW5pc2hlZCIsIEdfVFlQRV9VSU5UNjQsCisgICAgICAgICAgICAgIGZpbHRlci0+bGFzdF9tb3Rpb25fdGltZXN0YW1wLCBOVUxMKTsKKyAgICAgICAgICBtID0gZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQgKEdTVF9PQkpFQ1QgKGZpbHRlciksIHMpOworICAgICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKGZpbHRlciksIG0pOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGlmIChwb3N0bm9tb3Rpb24gPiAwKSB7CisgICAgICBndWludDY0IGxhc3RfYnVmX3RpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpIC8gMTAwMDAwMDAwMGw7CisgICAgICBpZiAoKGxhc3RfYnVmX3RpbWVzdGFtcCAtCisgICAgICAgICAgICAgIChmaWx0ZXItPmxhc3RfbW90aW9uX3RpbWVzdGFtcCAvIDEwMDAwMDAwMDBsKSkgPj0KKyAgICAgICAgICBmaWx0ZXItPnBvc3Rub21vdGlvbikgeworICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChmaWx0ZXIsICJwb3N0IG5vIG1vdGlvbiBtc2cgb24gdGhlIGJ1cyIpOworICAgICAgICBpZiAoKGxhc3RfYnVmX3RpbWVzdGFtcCAtCisgICAgICAgICAgICAgICAgKGZpbHRlci0+bGFzdF9ub21vdGlvbl9ub3RpZmllZCAvIDEwMDAwMDAwMDBsKSkgPj0KKyAgICAgICAgICAgIGZpbHRlci0+cG9zdG5vbW90aW9uKSB7CisgICAgICAgICAgR3N0U3RydWN0dXJlICpzOworICAgICAgICAgIEdzdE1lc3NhZ2UgKm07CisKKyAgICAgICAgICBmaWx0ZXItPmxhc3Rfbm9tb3Rpb25fbm90aWZpZWQgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKTsKKyAgICAgICAgICBzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJtb3Rpb24iLCAibm9fbW90aW9uIiwgR19UWVBFX1VJTlQ2NCwKKyAgICAgICAgICAgICAgZmlsdGVyLT5sYXN0X21vdGlvbl90aW1lc3RhbXAsIE5VTEwpOworICAgICAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7CisgICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgbSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgZmlsdGVyLT5wcmV2X2J1ZmZfdGltZXN0YW1wID0gZmlsdGVyLT5jdXJfYnVmZl90aW1lc3RhbXA7CisKKyAgICAvL2ZyZWUKKyAgICBHRlJFRSAoZGF0YWZpbGUpOworICAgIEdGUkVFIChtb3Rpb25tYXNrY29vcmRzKTsKKyAgICBHRlJFRSAobW90aW9ubWFza2NlbGxzaWR4KTsKKyAgICBHRlJFRSAobW90aW9uY2VsbHNpZHgpOwogICB9IGVsc2UgeworICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZmlsdGVyLCAiTW90aW9uIGRldGVjdGlvbiBkaXNhYmxlZCIpOwogICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXIpOwogICB9Ci0gIHJldHVybiBnc3RfcGFkX3B1c2ggKGZpbHRlci0+c3JjcGFkLCBidWYpOworICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CiAKIC8qIGVudHJ5IHBvaW50IHRvIGluaXRpYWxpemUgdGhlIHBsdWctaW4KZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuaCBiL2V4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuaAppbmRleCAwYTdkYWEwLi5kYTA0YTc0IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmgKKysrIGIvZXh0L29wZW5jdi9nc3Rtb3Rpb25jZWxscy5oCkBAIC0yLDcgKzIsNyBAQAogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgUm9iZXJ0IEpvYmJhZ3kgPGpvYmJhZ3kucm9iZXJ0QGdtYWlsLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMSBOaWNvbGEgTXVyaW5vIDxuaWNvbGEubXVyaW5vQGdtYWlsLmNvbT4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDUsOCArNDUsOSBAQAogI2lmbmRlZiBfX0dTVF9NT1RJT05DRUxMU19IX18KICNkZWZpbmUgX19HU1RfTU9USU9OQ0VMTFNfSF9fCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0b3BlbmN2dmlkZW9maWx0ZXIuaD4KICNpbmNsdWRlIDxvcGVuY3YyL2NvcmUvY29yZV9jLmg+CisjaW5jbHVkZSAibW90aW9uY2VsbHNfd3JhcHBlci5oIgogCiBHX0JFR0lOX0RFQ0xTCiAvKiAjZGVmaW5lcyBkb24ndCBsaWtlIHdoaXRlc3BhY2V5IGJpdHMgKi8KQEAgLTYzLDI4ICs2NCw5IEBACiB0eXBlZGVmIHN0cnVjdCBfR3N0TW90aW9uY2VsbHMgR3N0TW90aW9uY2VsbHM7CiB0eXBlZGVmIHN0cnVjdCBfR3N0TW90aW9uY2VsbHNDbGFzcyBHc3RNb3Rpb25jZWxsc0NsYXNzOwogCi10eXBlZGVmIHN0cnVjdCB7Ci0JaW50IHVwcGVyX2xlZnRfeDsKLQlpbnQgdXBwZXJfbGVmdF95OwotCWludCBsb3dlcl9yaWdodF94OwotCWludCBsb3dlcl9yaWdodF95OwotfSBtb3Rpb25tYXNrY29vcmRyZWN0OwotCi10eXBlZGVmIHN0cnVjdCB7Ci0JaW50IFJfY2hhbm5lbF92YWx1ZTsKLQlpbnQgR19jaGFubmVsX3ZhbHVlOwotCWludCBCX2NoYW5uZWxfdmFsdWU7Ci19IGNlbGxzY29sb3I7Ci0KLXR5cGVkZWYgc3RydWN0IHsKLQlpbnQgbGluZWlkeDsKLQlpbnQgY29sdW1uaWR4OwotfSBtb3Rpb25jZWxsaWR4OwotCiBzdHJ1Y3QgX0dzdE1vdGlvbmNlbGxzCiB7Ci0gIEdzdEVsZW1lbnQgZWxlbWVudDsKLSAgR3N0UGFkICpzaW5rcGFkLCAqc3JjcGFkOworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBlbGVtZW50OwogICBHc3RTdGF0ZSBzdGF0ZTsKICAgZ2Jvb2xlYW4gZGlzcGxheSwgY2FsY3VsYXRlX21vdGlvbiwgZmlyc3RncmlkeCwgZmlyc3RncmlkeSwgY2hhbmdlZF9ncmlkeCwKICAgICAgIGNoYW5nZWRfZ3JpZHksIGNoYW5nZWRfc3RhcnRpbWU7CkBAIC05NCwxMiArNzYsMTIgQEAKICAgZ2NoYXIgKnByZXZfZGF0YWZpbGUsICpjdXJfZGF0YWZpbGUsICpiYXNlbmFtZV9kYXRhZmlsZSwgKmRhdGFmaWxlX2V4dGVuc2lvbjsKICAgZ2ludCBwcmV2Z3JpZHgsIGdyaWR4LCBwcmV2Z3JpZHksIGdyaWR5LCBpZDsKICAgZ2RvdWJsZSBzZW5zaXRpdml0eSwgdGhyZXNob2xkOwotICBJcGxJbWFnZSAqY3ZJbWFnZTsKICAgbW90aW9ubWFza2Nvb3JkcmVjdCAqbW90aW9ubWFza2Nvb3JkczsKICAgY2VsbHNjb2xvciAqbW90aW9uY2VsbHNjb2xvcjsKICAgbW90aW9uY2VsbGlkeCAqbW90aW9uY2VsbHNpZHgsICptb3Rpb25tYXNrY2VsbHNpZHg7CiAgIGludCBtb3Rpb25tYXNrY29vcmRfY291bnQsIG1vdGlvbmNlbGxzX2NvdW50LCBtb3Rpb25tYXNrY2VsbHNfY291bnQ7Ci0gIGludCBnYXAsIHRoaWNrbmVzcywgZGF0YWZpbGVpZHgsIHBvc3Rub21vdGlvbiwgbWluaW11bV9tb3Rpb25fZnJhbWVzOworICBpbnQgdGhpY2tuZXNzOworICBndWludCBnYXAsIGRhdGFmaWxlaWR4LCBwb3N0bm9tb3Rpb24sIG1pbmltdW1fbW90aW9uX2ZyYW1lczsKICAgZ3VpbnQ2NCBtb3Rpb25fYmVnaW5fdGltZXN0YW1wLCBsYXN0X21vdGlvbl90aW1lc3RhbXAsIG1vdGlvbl90aW1lc3RhbXAsCiAgICAgICBsYXN0X25vbW90aW9uX25vdGlmaWVkLCBwcmV2X2J1ZmZfdGltZXN0YW1wLCBjdXJfYnVmZl90aW1lc3RhbXA7CiAgIGdpbnQ2NCBkaWZmX3RpbWVzdGFtcCwgc3RhcnR0aW1lOwpAQCAtMTEyLDcgKzk0LDcgQEAKIAogc3RydWN0IF9Hc3RNb3Rpb25jZWxsc0NsYXNzCiB7Ci0gIEdzdEVsZW1lbnRDbGFzcyBwYXJlbnRfY2xhc3M7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgcGFyZW50X2NsYXNzOwogfTsKIAogR1R5cGUgZ3N0X21vdGlvbl9jZWxsc19nZXRfdHlwZSAodm9pZCk7CmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdG9wZW5jdnV0aWxzLmMgYi9leHQvb3BlbmN2L2dzdG9wZW5jdnV0aWxzLmNwcApzaW1pbGFyaXR5IGluZGV4IDY1JQpyZW5hbWUgZnJvbSBleHQvb3BlbmN2L2dzdG9wZW5jdnV0aWxzLmMKcmVuYW1lIHRvIGV4dC9vcGVuY3YvZ3N0b3BlbmN2dXRpbHMuY3BwCmluZGV4IDg5OTAxYmYuLmRhNmVlYTkgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0b3BlbmN2dXRpbHMuYworKysgYi9leHQvb3BlbmN2L2dzdG9wZW5jdnV0aWxzLmNwcApAQCAtMjYsNzggKzI2LDE0IEBACiAjaW5jbHVkZSAiZ3N0b3BlbmN2dXRpbHMuaCIKICNpbmNsdWRlIDxvcGVuY3YyL2NvcmUvdHlwZXNfYy5oPgogCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9vcGVuY3ZfZ2V0X2lwbF9kZXB0aF9hbmRfY2hhbm5lbHMgKEdzdFN0cnVjdHVyZSAqIHN0cnVjdHVyZSwKLSAgICBnaW50ICogaXBsZGVwdGgsIGdpbnQgKiBjaGFubmVscywgR0Vycm9yICoqIGVycikKLXsKLSAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0ID0gR1NUX1ZJREVPX0ZPUk1BVF9VTktOT1dOOwotICBjb25zdCBHc3RWaWRlb0Zvcm1hdEluZm8gKmluZm87Ci0gIGdpbnQgZGVwdGggPSAwLCBpOwotICBjb25zdCBnY2hhciAqczsKLQotICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZSAoc3RydWN0dXJlLCAidmlkZW8veC1yYXciKSkgewotICAgIGlmICghKHMgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHN0cnVjdHVyZSwgImZvcm1hdCIpKSkKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICBmb3JtYXQgPSBnc3RfdmlkZW9fZm9ybWF0X2Zyb21fc3RyaW5nIChzKTsKLSAgICBpZiAoZm9ybWF0ID09IEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTikKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIGluZm8gPSBnc3RfdmlkZW9fZm9ybWF0X2dldF9pbmZvIChmb3JtYXQpOwotCi0gIGlmIChHU1RfVklERU9fRk9STUFUX0lORk9fSVNfUkdCIChpbmZvKSkKLSAgICAqY2hhbm5lbHMgPSAzOwotICBlbHNlIGlmIChHU1RfVklERU9fRk9STUFUX0lORk9fSVNfR1JBWSAoaW5mbykpCi0gICAgKmNoYW5uZWxzID0gMTsKLSAgZWxzZSB7Ci0gICAgZ19zZXRfZXJyb3IgKGVyciwgR1NUX0NPUkVfRVJST1IsIEdTVF9DT1JFX0VSUk9SX05FR09USUFUSU9OLAotICAgICAgICAiVW5zdXBwb3J0ZWQgc3RydWN0dXJlICVzIiwgZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAoc3RydWN0dXJlKSk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19GT1JNQVRfSU5GT19OX0NPTVBPTkVOVFMgKGluZm8pOyBpKyspCi0gICAgZGVwdGggKz0gR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX0RFUFRIIChpbmZvLCBpKTsKLQotICBpZiAoZGVwdGggLyAqY2hhbm5lbHMgPT0gOCkgewotICAgIC8qIFRPRE8gc2lnbmRuZXNzPyAqLwotICAgICppcGxkZXB0aCA9IElQTF9ERVBUSF84VTsKLSAgfSBlbHNlIGlmIChkZXB0aCAvICpjaGFubmVscyA9PSAxNikgewotICAgICppcGxkZXB0aCA9IElQTF9ERVBUSF8xNlU7Ci0gIH0gZWxzZSB7Ci0gICAgZ19zZXRfZXJyb3IgKGVyciwgR1NUX0NPUkVfRVJST1IsIEdTVF9DT1JFX0VSUk9SX05FR09USUFUSU9OLAotICAgICAgICAiVW5zdXBwb3J0ZWQgZGVwdGgvY2hhbm5lbHMgJWQvJWQiLCBkZXB0aCwgKmNoYW5uZWxzKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQotZ2Jvb2xlYW4KLWdzdF9vcGVuY3ZfcGFyc2VfaXBsaW1hZ2VfcGFyYW1zX2Zyb21fc3RydWN0dXJlIChHc3RTdHJ1Y3R1cmUgKiBzdHJ1Y3R1cmUsCi0gICAgZ2ludCAqIHdpZHRoLCBnaW50ICogaGVpZ2h0LCBnaW50ICogaXBsZGVwdGgsIGdpbnQgKiBjaGFubmVscywKLSAgICBHRXJyb3IgKiogZXJyKQotewotICBpZiAoIWdzdF9vcGVuY3ZfZ2V0X2lwbF9kZXB0aF9hbmRfY2hhbm5lbHMgKHN0cnVjdHVyZSwgaXBsZGVwdGgsIGNoYW5uZWxzLAotICAgICAgICAgIGVycikpIHsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAid2lkdGgiLCB3aWR0aCkgfHwKLSAgICAgICFnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImhlaWdodCIsIGhlaWdodCkpIHsKLSAgICBnX3NldF9lcnJvciAoZXJyLCBHU1RfQ09SRV9FUlJPUiwgR1NUX0NPUkVfRVJST1JfTkVHT1RJQVRJT04sCi0gICAgICAgICJObyB3aWR0aC9oZWlnaHQgaW4gY2FwcyIpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIHJldHVybiBUUlVFOwotfQogCiBnYm9vbGVhbgogZ3N0X29wZW5jdl9wYXJzZV9pcGxpbWFnZV9wYXJhbXNfZnJvbV9jYXBzIChHc3RDYXBzICogY2FwcywgZ2ludCAqIHdpZHRoLAogICAgIGdpbnQgKiBoZWlnaHQsIGdpbnQgKiBpcGxkZXB0aCwgZ2ludCAqIGNoYW5uZWxzLCBHRXJyb3IgKiogZXJyKQogewogICBHc3RWaWRlb0luZm8gaW5mbzsKLSAgZ2ludCBpLCBkZXB0aCA9IDA7CisgIGdpbnQgZGVwdGggPSAwOworICBndWludCBpOwogCiAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmaW5mbywgY2FwcykpIHsKICAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gZ2V0IHRoZSB2aWRlb2luZm8gZnJvbSBjYXBzIik7CmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdG9wZW5jdnV0aWxzLmggYi9leHQvb3BlbmN2L2dzdG9wZW5jdnV0aWxzLmgKaW5kZXggODQxMjNmMS4uMTNkZmQ5ZSAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RvcGVuY3Z1dGlscy5oCisrKyBiL2V4dC9vcGVuY3YvZ3N0b3BlbmN2dXRpbHMuaApAQCAtMzAsMTcgKzMwLDEzIEBACiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAKIAotCi1nYm9vbGVhbgotZ3N0X29wZW5jdl9nZXRfaXBsZGVwdGggKGdpbnQgZGVwdGgsIGdpbnQgYnBwLCBnaW50ICogaXBsZGVwdGgpOworR19CRUdJTl9ERUNMUwogCiBnYm9vbGVhbiBnc3Rfb3BlbmN2X3BhcnNlX2lwbGltYWdlX3BhcmFtc19mcm9tX2NhcHMKICAgICAoR3N0Q2FwcyAqIGNhcHMsIGdpbnQgKiB3aWR0aCwgZ2ludCAqIGhlaWdodCwgZ2ludCAqIGRlcHRoLAogICAgIGdpbnQgKiBjaGFubmVscywgR0Vycm9yICoqIGVycik7Ci1nYm9vbGVhbiBnc3Rfb3BlbmN2X3BhcnNlX2lwbGltYWdlX3BhcmFtc19mcm9tX3N0cnVjdHVyZQotICAgIChHc3RTdHJ1Y3R1cmUgKiBzdHJ1Y3R1cmUsIGdpbnQgKiB3aWR0aCwgZ2ludCAqIGhlaWdodCwgZ2ludCAqIGRlcHRoLAotICAgIGdpbnQgKiBjaGFubmVscywgR0Vycm9yICoqIGVycik7CiAKIEdzdENhcHMgKiBnc3Rfb3BlbmN2X2NhcHNfZnJvbV9jdl9pbWFnZV90eXBlIChpbnQgY3ZfdHlwZSk7CitHX0VORF9ERUNMUwogCiAjZW5kaWYgLyogX19HU1RfT1BFTkNWX1VUSUxTX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0b3BlbmN2dmlkZW9maWx0ZXIuYyBiL2V4dC9vcGVuY3YvZ3N0b3BlbmN2dmlkZW9maWx0ZXIuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIGV4dC9vcGVuY3YvZ3N0b3BlbmN2dmlkZW9maWx0ZXIuYwpyZW5hbWUgdG8gZXh0L29wZW5jdi9nc3RvcGVuY3Z2aWRlb2ZpbHRlci5jcHAKaW5kZXggYzUzYzdmNS4uNGI4ZTUzNiAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RvcGVuY3Z2aWRlb2ZpbHRlci5jCisrKyBiL2V4dC9vcGVuY3YvZ3N0b3BlbmN2dmlkZW9maWx0ZXIuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRoaWFnbyBTYW50b3MgPHRoaWFnby5zb3VzYS5zYW50b3NAY29sbGFib3JhLmNvLnVrPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00Nyw4ICs0Nyw2IEBACiAjICBpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCiAjaW5jbHVkZSAiZ3N0b3BlbmN2dmlkZW9maWx0ZXIuaCIKICNpbmNsdWRlICJnc3RvcGVuY3Z1dGlscy5oIgogCkBAIC0xMzUsNyArMTMzLDcgQEAKIAogICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKICAgYmFzZXRyYW5zX2NsYXNzID0gKEdzdEJhc2VUcmFuc2Zvcm1DbGFzcyAqKSBrbGFzczsKLSAgcGFyZW50X2NsYXNzID0gZ190eXBlX2NsYXNzX3BlZWtfcGFyZW50IChrbGFzcyk7CisgIHBhcmVudF9jbGFzcyA9IChHc3RFbGVtZW50Q2xhc3MgKikgZ190eXBlX2NsYXNzX3BlZWtfcGFyZW50IChrbGFzcyk7CiAKICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9vcGVuY3ZfdmlkZW9fZmlsdGVyX2RlYnVnLAogICAgICAgIm9wZW5jdmJhc2V0cmFuc2Zvcm0iLCAwLCAib3BlbmN2YmFzZXRyYW5zZm9ybSBlbGVtZW50Iik7CkBAIC0yMTcsNyArMjE1LDcgQEAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGZjbGFzcy0+Y3ZfdHJhbnNfaXBfZnVuYyAhPSBOVUxMLCBHU1RfRkxPV19FUlJPUik7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh0cmFuc2Zvcm0tPmN2SW1hZ2UgIT0gTlVMTCwgR1NUX0ZMT1dfRVJST1IpOwogCi0gIGlmICghZ3N0X2J1ZmZlcl9tYXAgKGJ1ZmZlciwgJmluZm8sIEdTVF9NQVBfUkVBRFdSSVRFKSkKKyAgaWYgKCFnc3RfYnVmZmVyX21hcCAoYnVmZmVyLCAmaW5mbywgKEdzdE1hcEZsYWdzKSAoR1NUX01BUF9SRUFEV1JJVEUpKSkKICAgICBnb3RvIG1hcF9mYWlsZWQ7CiAKICAgdHJhbnNmb3JtLT5jdkltYWdlLT5pbWFnZURhdGEgPSAoY2hhciAqKSBpbmZvLmRhdGE7CmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmMgYi9leHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmNwcApzaW1pbGFyaXR5IGluZGV4IDY5JQpyZW5hbWUgZnJvbSBleHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmMKcmVuYW1lIHRvIGV4dC9vcGVuY3YvZ3N0cHlyYW1pZHNlZ21lbnQuY3BwCmluZGV4IDYxOGZmZGYuLmQ4MjQ3YzAgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0cHlyYW1pZHNlZ21lbnQuYworKysgYi9leHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmNwcApAQCAtMyw3ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNSBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNSBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWljaGFlbCBTaGVsZG9uIDxtaWtlQG1pa2Vhc29mdC5jb20+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTUxLDcgKzUxLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IC1tIGZha2VzcmMgISBweXJhbWlkc2VnbWVudCAhIGZha2VzaW5rIHNpbGVudD1UUlVFCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBweXJhbWlkc2VnbWVudCAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC02MCw5ICs2MCw2IEBACiAjICBpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi0jaW5jbHVkZSAiZ3N0b3BlbmN2dXRpbHMuaCIKICNpbmNsdWRlICJnc3RweXJhbWlkc2VnbWVudC5oIgogCiAjZGVmaW5lIEJMT0NLX1NJWkUgMTAwMApAQCAtNzAsNiArNjcsNyBAQAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X3B5cmFtaWRfc2VnbWVudF9kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfcHlyYW1pZF9zZWdtZW50X2RlYnVnCiAKK3VzaW5nIG5hbWVzcGFjZSBjdjsKIC8qIEZpbHRlciBzaWduYWxzIGFuZCBhcmdzICovCiBlbnVtCiB7CkBAIC0xMDIsMTcgKzEwMCwxNiBAQAogICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoIlJHQiIpKQogICAgICk7CiAKLUdfREVGSU5FX1RZUEUgKEdzdFB5cmFtaWRTZWdtZW50LCBnc3RfcHlyYW1pZF9zZWdtZW50LCBHU1RfVFlQRV9FTEVNRU5UKTsKK0dfREVGSU5FX1RZUEUgKEdzdFB5cmFtaWRTZWdtZW50LCBnc3RfcHlyYW1pZF9zZWdtZW50LAorICAgIEdTVF9UWVBFX09QRU5DVl9WSURFT19GSUxURVIpOwogCiBzdGF0aWMgdm9pZCBnc3RfcHlyYW1pZF9zZWdtZW50X3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIHN0YXRpYyB2b2lkIGdzdF9weXJhbWlkX3NlZ21lbnRfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAogICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwogCi1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X3B5cmFtaWRfc2VnbWVudF9oYW5kbGVfc2lua19ldmVudCAoR3N0UGFkICogcGFkLAotICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCk7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfcHlyYW1pZF9zZWdtZW50X2NoYWluIChHc3RQYWQgKiBwYWQsCi0gICAgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBidWYpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3B5cmFtaWRfc2VnbWVudF90cmFuc2Zvcm1faXAgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICoKKyAgICBiYXNlLCBHc3RCdWZmZXIgKiBidWYsIElwbEltYWdlICogaW1nKTsKIAogLyogQ2xlYW4gdXAgKi8KIHN0YXRpYyB2b2lkCkBAIC0xMjAsMTAgKzExNyw2IEBACiB7CiAgIEdzdFB5cmFtaWRTZWdtZW50ICpmaWx0ZXIgPSBHU1RfUFlSQU1JRF9TRUdNRU5UIChvYmopOwogCi0gIGlmIChmaWx0ZXItPmN2SW1hZ2UgIT0gTlVMTCkgewotICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkltYWdlKTsKLSAgfQotCiAgIGN2UmVsZWFzZU1lbVN0b3JhZ2UgKCZmaWx0ZXItPnN0b3JhZ2UpOwogCiAgIEdfT0JKRUNUX0NMQVNTIChnc3RfcHlyYW1pZF9zZWdtZW50X3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmopOwpAQCAtMTM0LDMyICsxMjcsMzcgQEAKIGdzdF9weXJhbWlkX3NlZ21lbnRfY2xhc3NfaW5pdCAoR3N0UHlyYW1pZFNlZ21lbnRDbGFzcyAqIGtsYXNzKQogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgKmdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3M7CiAKICAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKICAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CisgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MgPSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyAqKSBrbGFzczsKIAogICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfcHlyYW1pZF9zZWdtZW50X2ZpbmFsaXplKTsKICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X3B5cmFtaWRfc2VnbWVudF9zZXRfcHJvcGVydHk7CiAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9weXJhbWlkX3NlZ21lbnRfZ2V0X3Byb3BlcnR5OwogCisgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MtPmN2X3RyYW5zX2lwX2Z1bmMgPQorICAgICAgZ3N0X3B5cmFtaWRfc2VnbWVudF90cmFuc2Zvcm1faXA7CisKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TSUxFTlQsCiAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoInNpbGVudCIsICJTaWxlbnQiLCAiUHJvZHVjZSB2ZXJib3NlIG91dHB1dCA/IiwKLSAgICAgICAgICBGQUxTRSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgRkFMU0UsIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1RIUkVTSE9MRDEsCiAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgidGhyZXNob2xkMSIsICJUaHJlc2hvbGQxIiwKICAgICAgICAgICAiRXJyb3IgdGhyZXNob2xkIGZvciBlc3RhYmxpc2hpbmcgbGlua3MiLCAwLCAxMDAwLCA1MCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9USFJFU0hPTEQyLAogICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoInRocmVzaG9sZDIiLCAiVGhyZXNob2xkMiIsCiAgICAgICAgICAgIkVycm9yIHRocmVzaG9sZCBmb3Igc2VnbWVudCBjbHVzdGVyaW5nIiwgMCwgMTAwMCwgNjAsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTEVWRUwsCiAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgibGV2ZWwiLCAiTGV2ZWwiLAogICAgICAgICAgICJNYXhpbXVtIGxldmVsIG9mIHRoZSBweXJhbWlkIHNlZ21lbnRhdGlvbiIsIDEsIDQsIDQsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCiAgICAgICAicHlyYW1pZHNlZ21lbnQiLApAQCAtMTgxLDE5ICsxNzksNiBAQAogc3RhdGljIHZvaWQKIGdzdF9weXJhbWlkX3NlZ21lbnRfaW5pdCAoR3N0UHlyYW1pZFNlZ21lbnQgKiBmaWx0ZXIpCiB7Ci0gIGZpbHRlci0+c2lua3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmc2lua19mYWN0b3J5LCAic2luayIpOwotICBHU1RfUEFEX1NFVF9QUk9YWV9DQVBTIChmaWx0ZXItPnNpbmtwYWQpOwotCi0gIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChmaWx0ZXItPnNpbmtwYWQsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3B5cmFtaWRfc2VnbWVudF9oYW5kbGVfc2lua19ldmVudCkpOwotICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAoZmlsdGVyLT5zaW5rcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9weXJhbWlkX3NlZ21lbnRfY2hhaW4pKTsKLQotICBmaWx0ZXItPnNyY3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmc3JjX2ZhY3RvcnksICJzcmMiKTsKLSAgR1NUX1BBRF9TRVRfUFJPWFlfQ0FQUyAoZmlsdGVyLT5zcmNwYWQpOwotCi0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBmaWx0ZXItPnNpbmtwYWQpOwotICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgZmlsdGVyLT5zcmNwYWQpOwogICBmaWx0ZXItPnN0b3JhZ2UgPSBjdkNyZWF0ZU1lbVN0b3JhZ2UgKEJMT0NLX1NJWkUpOwogICBmaWx0ZXItPmNvbXAgPQogICAgICAgY3ZDcmVhdGVTZXEgKDAsIHNpemVvZiAoQ3ZTZXEpLCBzaXplb2YgKEN2UG9pbnQpLCBmaWx0ZXItPnN0b3JhZ2UpOwpAQCAtMjAxLDYgKzE4Niw5IEBACiAgIGZpbHRlci0+dGhyZXNob2xkMSA9IDUwLjA7CiAgIGZpbHRlci0+dGhyZXNob2xkMiA9IDYwLjA7CiAgIGZpbHRlci0+bGV2ZWwgPSA0OworCisgIGdzdF9vcGVuY3ZfdmlkZW9fZmlsdGVyX3NldF9pbl9wbGFjZSAoR1NUX09QRU5DVl9WSURFT19GSUxURVJfQ0FTVCAoZmlsdGVyKSwKKyAgICAgIFRSVUUpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjUzLDc4ICsyNDEsMTkgQEAKICAgfQogfQogCi0vKiBHc3RFbGVtZW50IHZtZXRob2QgaW1wbGVtZW50YXRpb25zICovCi0KLS8qIHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgbGluayB3aXRoIG90aGVyIGVsZW1lbnRzICovCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9weXJhbWlkX3NlZ21lbnRfaGFuZGxlX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdEV2ZW50ICogZXZlbnQpCi17Ci0gIEdzdFB5cmFtaWRTZWdtZW50ICpmaWx0ZXI7Ci0gIEdzdFZpZGVvSW5mbyBpbmZvOwotICBnYm9vbGVhbiByZXMgPSBUUlVFOwotICBmaWx0ZXIgPSBHU1RfUFlSQU1JRF9TRUdNRU5UIChwYXJlbnQpOwotCi0gIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgewotICAgIGNhc2UgR1NUX0VWRU5UX0NBUFM6Ci0gICAgewotICAgICAgR3N0Q2FwcyAqY2FwczsKLSAgICAgIGdzdF9ldmVudF9wYXJzZV9jYXBzIChldmVudCwgJmNhcHMpOwotICAgICAgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmaW5mbywgY2Fwcyk7Ci0KLSAgICAgIGlmIChmaWx0ZXItPmN2SW1hZ2UgIT0gTlVMTCkgewotICAgICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZJbWFnZSk7Ci0gICAgICB9Ci0gICAgICBmaWx0ZXItPmN2SW1hZ2UgPQotICAgICAgICAgIGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAoaW5mby53aWR0aCwgaW5mby5oZWlnaHQpLCBJUExfREVQVEhfOFUsIDMpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJlcyA9IGdzdF9wYWRfZXZlbnRfZGVmYXVsdCAocGFkLCBwYXJlbnQsIGV2ZW50KTsKLQotICByZXR1cm4gcmVzOwotfQotCi0vKiBjaGFpbiBmdW5jdGlvbgorLyogdHJhbnNmb3JtIGZ1bmN0aW9uCiAgKiB0aGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGFjdHVhbCBwcm9jZXNzaW5nCiAgKi8KIHN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfcHlyYW1pZF9zZWdtZW50X2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmKQorZ3N0X3B5cmFtaWRfc2VnbWVudF90cmFuc2Zvcm1faXAgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogYmFzZSwgR3N0QnVmZmVyICogYnVmLAorICAgIElwbEltYWdlICogaW1nKQogewotICBHc3RQeXJhbWlkU2VnbWVudCAqZmlsdGVyOwotICBHc3RCdWZmZXIgKm91dGJ1ZjsKLSAgR3N0TWFwSW5mbyBpbmZvOwotICBHc3RNYXBJbmZvIG91dGluZm87CisgIEdzdFB5cmFtaWRTZWdtZW50ICpmaWx0ZXIgPSBHU1RfUFlSQU1JRF9TRUdNRU5UIChiYXNlKTsKIAotICBmaWx0ZXIgPSBHU1RfUFlSQU1JRF9TRUdNRU5UIChHU1RfT0JKRUNUX1BBUkVOVCAocGFkKSk7Ci0KLSAgYnVmID0gZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlIChidWYpOwotICBnc3RfYnVmZmVyX21hcCAoYnVmLCAmaW5mbywgR1NUX01BUF9SRUFEV1JJVEUpOwotICBmaWx0ZXItPmN2SW1hZ2UtPmltYWdlRGF0YSA9IChjaGFyICopIGluZm8uZGF0YTsKLSAgZmlsdGVyLT5jdlNlZ21lbnRlZEltYWdlID0gY3ZDbG9uZUltYWdlIChmaWx0ZXItPmN2SW1hZ2UpOwotCi0gIGN2UHlyU2VnbWVudGF0aW9uIChmaWx0ZXItPmN2SW1hZ2UsIGZpbHRlci0+Y3ZTZWdtZW50ZWRJbWFnZSwgZmlsdGVyLT5zdG9yYWdlLAorICBjdlB5clNlZ21lbnRhdGlvbiAoaW1nLCBpbWcsIGZpbHRlci0+c3RvcmFnZSwKICAgICAgICYoZmlsdGVyLT5jb21wKSwgZmlsdGVyLT5sZXZlbCwgZmlsdGVyLT50aHJlc2hvbGQxLCBmaWx0ZXItPnRocmVzaG9sZDIpOwogCi0gIC8qIFRPRE8gbG9vayBpZiB0aGVyZSBpcyBhIHdheSBpbiBvcGVuY3YgdG8gcmV1c2UgdGhlIGltYWdlIGRhdGEgYW5kCi0gICAqIGRlbGV0ZSBvbmx5IHRoZSBzdHJ1Y3QgaGVhZGVycy4gV291bGQgYXZvaWQgYSBtZW1jcHkgaGVyZSAqLwotCi0gIG91dGJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAoZmlsdGVyLT5jdlNlZ21lbnRlZEltYWdlLT5pbWFnZVNpemUpOwotICBnc3RfYnVmZmVyX2NvcHlfaW50byAob3V0YnVmLCBidWYsIEdTVF9CVUZGRVJfQ09QWV9NRVRBREFUQSwgMCwgLTEpOwotICBnc3RfYnVmZmVyX21hcCAob3V0YnVmLCAmb3V0aW5mbywgR1NUX01BUF9XUklURSk7Ci0gIG1lbWNweSAob3V0aW5mby5kYXRhLCBmaWx0ZXItPmN2U2VnbWVudGVkSW1hZ2UtPmltYWdlRGF0YSwKLSAgICAgIGdzdF9idWZmZXJfZ2V0X3NpemUgKG91dGJ1ZikpOwotCi0gIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZiwgJmluZm8pOwotICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwotICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZTZWdtZW50ZWRJbWFnZSk7Ci0gIGdfYXNzZXJ0IChmaWx0ZXItPmN2U2VnbWVudGVkSW1hZ2UgPT0gTlVMTCk7Ci0KLSAgZ3N0X2J1ZmZlcl91bm1hcCAob3V0YnVmLCAmb3V0aW5mbyk7Ci0gIHJldHVybiBnc3RfcGFkX3B1c2ggKGZpbHRlci0+c3JjcGFkLCBvdXRidWYpOworICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CiAKIApkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5oIGIvZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5oCmluZGV4IDU4NmVmMmMuLmU3MTU3NjYgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0cHlyYW1pZHNlZ21lbnQuaAorKysgYi9leHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmgKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1pY2hhZWwgU2hlbGRvbiA8bWlrZUBtaWtlYXNvZnQuY29tPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00NiwxMiArNDYsOSBAQAogI2lmbmRlZiBfX0dTVF9QWVJBTUlEX1NFR01FTlRfSF9fCiAjZGVmaW5lIF9fR1NUX1BZUkFNSURfU0VHTUVOVF9IX18KIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3RvcGVuY3Z2aWRlb2ZpbHRlci5oPgogI2luY2x1ZGUgPG9wZW5jdjIvY29yZS92ZXJzaW9uLmhwcD4KLQotI2lmIENWX01BSk9SX1ZFUlNJT04gKiAxMDAgKyBDVl9NSU5PUl9WRVJTSU9OID49IDIwNAogI2luY2x1ZGUgPG9wZW5jdjIvbGVnYWN5L2xlZ2FjeS5ocHA+Ci0jZW5kaWYKIAogR19CRUdJTl9ERUNMUwogLyogI2RlZmluZXMgZG9uJ3QgbGlrZSB3aGl0ZXNwYWNleSBiaXRzICovCkBAIC02NSwxOSArNjIsMTggQEAKICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX1BZUkFNSURfU0VHTUVOVCkpCiAjZGVmaW5lIEdTVF9JU19QWVJBTUlEX1NFR01FTlRfQ0xBU1Moa2xhc3MpIFwKICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfUFlSQU1JRF9TRUdNRU5UKSkKKwogdHlwZWRlZiBzdHJ1Y3QgX0dzdFB5cmFtaWRTZWdtZW50IEdzdFB5cmFtaWRTZWdtZW50OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdFB5cmFtaWRTZWdtZW50Q2xhc3MgR3N0UHlyYW1pZFNlZ21lbnRDbGFzczsKIAogc3RydWN0IF9Hc3RQeXJhbWlkU2VnbWVudAogewotICBHc3RFbGVtZW50IGVsZW1lbnQ7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyIGVsZW1lbnQ7CiAKICAgR3N0UGFkICpzaW5rcGFkLCAqc3JjcGFkOwogCiAgIGdib29sZWFuIHNpbGVudDsKIAotICBJcGxJbWFnZSAqY3ZJbWFnZSwgKmN2U2VnbWVudGVkSW1hZ2U7Ci0KICAgQ3ZNZW1TdG9yYWdlICpzdG9yYWdlOwogCiAgIEN2U2VxICpjb21wOwpAQCAtODksNyArODUsNyBAQAogCiBzdHJ1Y3QgX0dzdFB5cmFtaWRTZWdtZW50Q2xhc3MKIHsKLSAgR3N0RWxlbWVudENsYXNzIHBhcmVudF9jbGFzczsKKyAgR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyBwYXJlbnRfY2xhc3M7CiB9OwogCiBHVHlwZSBnc3RfcHlyYW1pZF9zZWdtZW50X2dldF90eXBlICh2b2lkKTsKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0cmV0aW5leC5jIGIvZXh0L29wZW5jdi9nc3RyZXRpbmV4LmNwcApzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBleHQvb3BlbmN2L2dzdHJldGluZXguYwpyZW5hbWUgdG8gZXh0L29wZW5jdi9nc3RyZXRpbmV4LmNwcAppbmRleCA5YTdjOGRjLi43NTg0MmY4IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdHJldGluZXguYworKysgYi9leHQvb3BlbmN2L2dzdHJldGluZXguY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEzIE1pZ3VlbCBDYXNhcy1TYW5jaGV6IDxtaWd1ZWxlY2FzYXNzYW5jaGV6QGdtYWlsLmNvbT4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDYsOCArNDYsOCBAQAogICoKICAqIEJhc2ljIGFuZCBtdWx0aXNjYWxlIHJldGluZXggZm9yIGNvbG91ciBpbWFnZSBlbmhhbmNlbWVudCwgc2VlIGFydGljbGU6CiAgKgotICogUmFobWFuLCBaaWEtdXIsIERhbmllbCBKLiBKb2Jzb24sIGFuZCBHbGVubiBBLiBXb29kZWxsLiAiTXVsdGktc2NhbGUgcmV0aW5leCBmb3IgCi0gKiBjb2xvciBpbWFnZSBlbmhhbmNlbWVudC4iIEltYWdlIFByb2Nlc3NpbmcsIDE5OTYuIFByb2NlZWRpbmdzLiwgSW50ZXJuYXRpb25hbCAKKyAqIFJhaG1hbiwgWmlhLXVyLCBEYW5pZWwgSi4gSm9ic29uLCBhbmQgR2xlbm4gQS4gV29vZGVsbC4gIk11bHRpLXNjYWxlIHJldGluZXggZm9yCisgKiBjb2xvciBpbWFnZSBlbmhhbmNlbWVudC4iIEltYWdlIFByb2Nlc3NpbmcsIDE5OTYuIFByb2NlZWRpbmdzLiwgSW50ZXJuYXRpb25hbAogICogQ29uZmVyZW5jZSBvbi4gVm9sLiAzLiBJRUVFLCAxOTk2LgogICoKICAqIDxyZWZzZWN0Mj4KQEAgLTYyLDEzICs2MiwxNCBAQAogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSAiZ3N0cmV0aW5leC5oIgogI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jX2MuaD4KKyNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvYy5ocHA+CiAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9yZXRpbmV4X2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9yZXRpbmV4X2RlYnVnCiAKK3VzaW5nIG5hbWVzcGFjZSBjdjsKIC8qIEZpbHRlciBzaWduYWxzIGFuZCBhcmdzICovCiBlbnVtCiB7CkBAIC0xNTMsMTIgKzE1NCwxMyBAQAogICAgICAgICAgICJSZXRpbmV4IG1ldGhvZCB0byB1c2UiLAogICAgICAgICAgICJSZXRpbmV4IG1ldGhvZCB0byB1c2UiLAogICAgICAgICAgIEdTVF9UWVBFX1JFVElORVhfTUVUSE9ELCBERUZBVUxUX01FVEhPRCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TQ0FMRVMsCiAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgic2NhbGVzIiwgInNjYWxlcyIsCiAgICAgICAgICAgIkFtb3VudCBvZiBnYXVzc2lhbiBmaWx0ZXJzIChzY2FsZXMpIHVzZWQgaW4gbXVsdGlzY2FsZSByZXRpbmV4IiwgMSwKLSAgICAgICAgICA0LCBERUZBVUxUX1NDQUxFUywgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgNCwgREVGQVVMVF9TQ0FMRVMsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCiAgICAgICAiUmV0aW5leCBpbWFnZSBjb2xvdXIgZW5oYWNlbWVudCIsICJGaWx0ZXIvRWZmZWN0L1ZpZGVvIiwKQEAgLTE2OSwxMCArMTcxLDggQEAKICAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNyY19mYWN0b3J5KSk7CiAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCiAgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzaW5rX2ZhY3RvcnkpKTsKLQogfQogCi0KIC8qIGluaXRpYWxpemUgdGhlIG5ldyBlbGVtZW50CiAgKiBpbnN0YW50aWF0ZSBwYWRzIGFuZCBhZGQgdGhlbSB0byBlbGVtZW50CiAgKiBzZXQgcGFkIGNhbGJhY2sgZnVuY3Rpb25zCkBAIC0xODQsNyArMTg0LDggQEAKICAgZmlsdGVyLT5tZXRob2QgPSBERUZBVUxUX01FVEhPRDsKICAgZmlsdGVyLT5zY2FsZXMgPSBERUZBVUxUX1NDQUxFUzsKICAgZmlsdGVyLT5jdXJyZW50X3NjYWxlcyA9IDA7Ci0gIGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfaW5fcGxhY2UgKEdTVF9CQVNFX1RSQU5TRk9STSAoZmlsdGVyKSwgVFJVRSk7CisgIGdzdF9vcGVuY3ZfdmlkZW9fZmlsdGVyX3NldF9pbl9wbGFjZSAoR1NUX09QRU5DVl9WSURFT19GSUxURVJfQ0FTVCAoZmlsdGVyKSwKKyAgICAgIFRSVUUpOwogfQogCiAKQEAgLTI5MywxNSArMjk0LDE2IEBACiAgIGludCBnYWluID0gMTI4OwogICBpbnQgb2Zmc2V0ID0gMTI4OwogICBpbnQgZmlsdGVyX3NpemU7CisgIE1hdCBpY3ZEIChyZXRpbmV4LT5jdkQsIGZhbHNlKTsKIAotICBpZiAoIWdzdF9idWZmZXJfbWFwIChidWYsICZpbmZvLCBHU1RfTUFQX1JFQURXUklURSkpIHsKKyAgaWYgKCFnc3RfYnVmZmVyX21hcCAoYnVmLCAmaW5mbywgKEdzdE1hcEZsYWdzKSBHU1RfTUFQX1JFQURXUklURSkpIHsKICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgIH0KICAgcmV0aW5leC0+Y3ZSR0Jpbi0+aW1hZ2VEYXRhID0gKGNoYXIgKikgaW5mby5kYXRhOwogCiAgIC8qIEJhc2ljIHJldGluZXggcmVzdG9yYXRpb24uICBUaGUgaW1hZ2UgYW5kIGEgZmlsdGVyZWQgaW1hZ2UgYXJlIGNvbnZlcnRlZAogICAgICB0byB0aGUgbG9nIGRvbWFpbiBhbmQgc3VidHJhY3RlZC4KLSAgICAgTyA9IExvZyhJKSAtIExvZyhIKEkpKSAgIAorICAgICBPID0gTG9nKEkpIC0gTG9nKEgoSSkpCiAgICAgIHdoZXJlIE8gaXMgdGhlIG91dHB1dCwgSCBpcyBhIGdhdXNzaWFuIDJkIGZpbHRlciBhbmQgSSBpcyB0aGUgaW5wdXQgaW1hZ2UuICovCiAgIGlmIChNRVRIT0RfQkFTSUMgPT0gcmV0aW5leC0+bWV0aG9kKSB7CiAgICAgLyogIENvbXB1dGUgbG9nIGltYWdlICovCkBAIC0zMTMsOCArMzE1LDcgQEAKICAgICBmaWx0ZXJfc2l6ZSA9IGZpbHRlcl9zaXplICogMiArIDE7CiAKICAgICBjdkNvbnZlcnQgKHJldGluZXgtPmN2UkdCaW4sIHJldGluZXgtPmN2RCk7Ci0gICAgY3ZTbW9vdGggKHJldGluZXgtPmN2RCwgcmV0aW5leC0+Y3ZELCBDVl9HQVVTU0lBTiwgZmlsdGVyX3NpemUsIGZpbHRlcl9zaXplLAotICAgICAgICAwLjAsIDAuMCk7CisgICAgR2F1c3NpYW5CbHVyIChpY3ZELCBpY3ZELCBTaXplIChmaWx0ZXJfc2l6ZSwgZmlsdGVyX3NpemUpLCAwLjAsIDAuMCk7CiAgICAgY3ZMb2cgKHJldGluZXgtPmN2RCwgcmV0aW5leC0+Y3ZDKTsKIAogICAgIC8qICBDb21wdXRlIGRpZmZlcmVuY2UgKi8KQEAgLTM1OSw4ICszNjAsNyBAQAogICAgICAgZmlsdGVyX3NpemUgPSBmaWx0ZXJfc2l6ZSAqIDIgKyAxOwogCiAgICAgICBjdkNvbnZlcnQgKHJldGluZXgtPmN2UkdCaW4sIHJldGluZXgtPmN2RCk7Ci0gICAgICBjdlNtb290aCAocmV0aW5leC0+Y3ZELCByZXRpbmV4LT5jdkQsIENWX0dBVVNTSUFOLCBmaWx0ZXJfc2l6ZSwKLSAgICAgICAgICBmaWx0ZXJfc2l6ZSwgMC4wLCAwLjApOworICAgICAgR2F1c3NpYW5CbHVyIChpY3ZELCBpY3ZELCBTaXplIChmaWx0ZXJfc2l6ZSwgZmlsdGVyX3NpemUpLCAwLjAsIDAuMCk7CiAgICAgICBjdkxvZyAocmV0aW5leC0+Y3ZELCByZXRpbmV4LT5jdkMpOwogCiAgICAgICAvKiAgQ29tcHV0ZSB3ZWlnaHRlZCBkaWZmZXJlbmNlICovCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdHJldGluZXguaCBiL2V4dC9vcGVuY3YvZ3N0cmV0aW5leC5oCmluZGV4IGM1M2QyMzAuLmQwOTBhNWIgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0cmV0aW5leC5oCisrKyBiL2V4dC9vcGVuY3YvZ3N0cmV0aW5leC5oCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEzIE1pZ3VlbCBDYXNhcy1TYW5jaGV6IDxtaWd1ZWxlY2FzYXNzYW5jaGV6QGdtYWlsLmNvbT4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDQsMTEgKzQ0LDkgQEAKICNpZm5kZWYgX19HU1RfUkVUSU5FWF9IX18KICNkZWZpbmUgX19HU1RfUkVUSU5FWF9IX18KIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KLSNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9maWx0ZXIuaD4KICNpbmNsdWRlIDxvcGVuY3YyL2NvcmUvY29yZV9jLmg+CiAKKyNpbmNsdWRlIDxnc3RvcGVuY3Z2aWRlb2ZpbHRlci5oPgogCiBHX0JFR0lOX0RFQ0xTCiAvKiAjZGVmaW5lcyBkb24ndCBsaWtlIHdoaXRlc3BhY2V5IGJpdHMgKi8KZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0c2VnbWVudGF0aW9uLmNwcCBiL2V4dC9vcGVuY3YvZ3N0c2VnbWVudGF0aW9uLmNwcAppbmRleCA3OWNiYjQ5Li5lMGFhODIxIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdHNlZ21lbnRhdGlvbi5jcHAKKysrIGIvZXh0L29wZW5jdi9nc3RzZWdtZW50YXRpb24uY3BwCkBAIC0xLDE1ICsxLDE1IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTWlndWVsIENhc2FzLVNhbmNoZXogPG1pZ3VlbGVjYXNhc3NhbmNoZXpAZ21haWwuY29tPgotICogRXhjZXB0OiBQYXJ0cyBvZiBjb2RlIGluc2lkZSB0aGUgcHJlcHJvY2Vzc29yIGRlZmluZSBDT0RFX0ZST01fT1JFSUxMWV9CT09LLCAKLSAqICB3aGljaCBhcmUgZG93bmxvYWRlZCBmcm9tIE8nUmVpbGx5IHdlYnNpdGUgCisgKiBFeGNlcHQ6IFBhcnRzIG9mIGNvZGUgaW5zaWRlIHRoZSBwcmVwcm9jZXNzb3IgZGVmaW5lIENPREVfRlJPTV9PUkVJTExZX0JPT0ssCisgKiAgd2hpY2ggYXJlIGRvd25sb2FkZWQgZnJvbSBPJ1JlaWxseSB3ZWJzaXRlCiAgKiAgW2h0dHA6Ly9leGFtcGxlcy5vcmVpbGx5LmNvbS85NzgwNTk2NTE2MTMwL10KICAqICBhbmQgYWRhcHRlZC4gSXRzIGxpY2Vuc2UgcmVhZHM6CiAgKiAgIk9jdC4gMywgMjAwOAotICogICBSaWdodCB0byB1c2UgdGhpcyBjb2RlIGluIGFueSB3YXkgeW91IHdhbnQgd2l0aG91dCB3YXJyZW50eSwgc3VwcG9ydCBvciAKKyAqICAgUmlnaHQgdG8gdXNlIHRoaXMgY29kZSBpbiBhbnkgd2F5IHlvdSB3YW50IHdpdGhvdXQgd2FycmVudHksIHN1cHBvcnQgb3IKICAqICAgYW55IGd1YXJlbnRlZSBvZiBpdCB3b3JraW5nLiAiCiAgKgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC01NSwyNyArNTUsMjcgQEAKICAqCiAgKiBUaGlzIGVsZW1lbnQgY3JlYXRlcyBhbmQgdXBkYXRlcyBhIGZnL2JnIG1vZGVsIHVzaW5nIG9uZSBvZiBzZXZlcmFsIGFwcHJvYWNoZXMuCiAgKiBUaGUgb25lIGNhbGxlZCAiY29kZWJvb2siIHJlZmVycyB0byB0aGUgY29kZWJvb2sgYXBwcm9hY2ggZm9sbG93aW5nIHRoZSBvcGVuY3YKLSAqIE8nUmVpbGx5IGJvb2sgWzFdIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIEsuIEtpbSwgCi0gKiBULiBILiBDaGFsaWRhYmhvbmdzZSwgRC4gSGFyd29vZCBhbmQgTC4gRGF2aXMgWzJdLiBCYWNrZ3JvdW5kU3VidHJhY3Rvck1PRyBbM10sIAotICogb3IgTU9HIGZvciBzaG9ydHMsIHJlZmVycyB0byBhIEdhdXNzaWFuIE1peHR1cmUtYmFzZWQgQmFja2dyb3VuZC9Gb3JlZ3JvdW5kIAorICogTydSZWlsbHkgYm9vayBbMV0gaW1wbGVtZW50YXRpb24gb2YgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gSy4gS2ltLAorICogVC4gSC4gQ2hhbGlkYWJob25nc2UsIEQuIEhhcndvb2QgYW5kIEwuIERhdmlzIFsyXS4gQmFja2dyb3VuZFN1YnRyYWN0b3JNT0cgWzNdLAorICogb3IgTU9HIGZvciBzaG9ydHMsIHJlZmVycyB0byBhIEdhdXNzaWFuIE1peHR1cmUtYmFzZWQgQmFja2dyb3VuZC9Gb3JlZ3JvdW5kCiAgKiBTZWdtZW50YXRpb24gQWxnb3JpdGhtLiBPcGVuQ1YgTU9HIGltcGxlbWVudHMgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gWzRdLgotICogQmFja2dyb3VuZFN1YnRyYWN0b3JNT0cyIFs1XSwgcmVmZXJzIHRvIGFub3RoZXIgR2F1c3NpYW4gTWl4dHVyZS1iYXNlZCAKLSAqIEJhY2tncm91bmQvRm9yZWdyb3VuZCBzZWdtZW50YXRpb24gYWxnb3JpdGhtLiBPcGVuQ1YgTU9HMiBpbXBsZW1lbnRzIHRoZSAKKyAqIEJhY2tncm91bmRTdWJ0cmFjdG9yTU9HMiBbNV0sIHJlZmVycyB0byBhbm90aGVyIEdhdXNzaWFuIE1peHR1cmUtYmFzZWQKKyAqIEJhY2tncm91bmQvRm9yZWdyb3VuZCBzZWdtZW50YXRpb24gYWxnb3JpdGhtLiBPcGVuQ1YgTU9HMiBpbXBsZW1lbnRzIHRoZQogICogYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiBbNl0gYW5kIFs3XS4KICAqCi0gKiBbMV0gTGVhcm5pbmcgT3BlbkNWOiBDb21wdXRlciBWaXNpb24gd2l0aCB0aGUgT3BlbkNWIExpYnJhcnkgYnkgR2FyeSBCcmFkc2tpIAorICogWzFdIExlYXJuaW5nIE9wZW5DVjogQ29tcHV0ZXIgVmlzaW9uIHdpdGggdGhlIE9wZW5DViBMaWJyYXJ5IGJ5IEdhcnkgQnJhZHNraQogICogYW5kIEFkcmlhbiBLYWVobGVyLCBQdWJsaXNoZWQgYnkgTydSZWlsbHkgTWVkaWEsIE9jdG9iZXIgMywgMjAwOAotICogWzJdICJSZWFsLXRpbWUgRm9yZWdyb3VuZC1CYWNrZ3JvdW5kIFNlZ21lbnRhdGlvbiB1c2luZyBDb2RlYm9vayBNb2RlbCIsIAorICogWzJdICJSZWFsLXRpbWUgRm9yZWdyb3VuZC1CYWNrZ3JvdW5kIFNlZ21lbnRhdGlvbiB1c2luZyBDb2RlYm9vayBNb2RlbCIsCiAgKiBSZWFsLXRpbWUgSW1hZ2luZywgVm9sdW1lIDExLCBJc3N1ZSAzLCBQYWdlcyAxNjctMjU2LCBKdW5lIDIwMDUuCiAgKiBbM10gaHR0cDovL29wZW5jdi5pdHNlZXouY29tL21vZHVsZXMvdmlkZW8vZG9jL21vdGlvbl9hbmFseXNpc19hbmRfb2JqZWN0X3RyYWNraW5nLmh0bWwjYmFja2dyb3VuZHN1YnRyYWN0b3Jtb2cKLSAqIFs0XSBQLiBLYWRld1RyYUt1UG9uZyBhbmQgUi4gQm93ZGVuLCAiQW4gaW1wcm92ZWQgYWRhcHRpdmUgYmFja2dyb3VuZCAKLSAqIG1peHR1cmUgbW9kZWwgZm9yIHJlYWwtdGltZSB0cmFja2luZyB3aXRoIHNoYWRvdyBkZXRlY3Rpb24iLCBQcm9jLiAybmQgCisgKiBbNF0gUC4gS2FkZXdUcmFLdVBvbmcgYW5kIFIuIEJvd2RlbiwgIkFuIGltcHJvdmVkIGFkYXB0aXZlIGJhY2tncm91bmQKKyAqIG1peHR1cmUgbW9kZWwgZm9yIHJlYWwtdGltZSB0cmFja2luZyB3aXRoIHNoYWRvdyBkZXRlY3Rpb24iLCBQcm9jLiAybmQKICAqIEV1cm9wZWFuIFdvcmtzaG9wIG9uIEFkdmFuY2VkIFZpZGVvLUJhc2VkIFN1cnZlaWxsYW5jZSBTeXN0ZW1zLCAyMDAxCiAgKiBbNV0gaHR0cDovL29wZW5jdi5pdHNlZXouY29tL21vZHVsZXMvdmlkZW8vZG9jL21vdGlvbl9hbmFseXNpc19hbmRfb2JqZWN0X3RyYWNraW5nLmh0bWwjYmFja2dyb3VuZHN1YnRyYWN0b3Jtb2cyCi0gKiBbNl0gWi5aaXZrb3ZpYywgIkltcHJvdmVkIGFkYXB0aXZlIEdhdXNpYW4gbWl4dHVyZSBtb2RlbCBmb3IgYmFja2dyb3VuZCAKKyAqIFs2XSBaLlppdmtvdmljLCAiSW1wcm92ZWQgYWRhcHRpdmUgR2F1c2lhbiBtaXh0dXJlIG1vZGVsIGZvciBiYWNrZ3JvdW5kCiAgKiBzdWJ0cmFjdGlvbiIsIEludGVybmF0aW9uYWwgQ29uZmVyZW5jZSBQYXR0ZXJuIFJlY29nbml0aW9uLCBVSywgQXVndXN0LCAyMDA0LgotICogWzddIFouWml2a292aWMsIEYuIHZhbiBkZXIgSGVpamRlbiwgIkVmZmljaWVudCBBZGFwdGl2ZSBEZW5zaXR5IEVzdGltYXRpb24gCi0gKiBwZXIgSW1hZ2UgUGl4ZWwgZm9yIHRoZSBUYXNrIG9mIEJhY2tncm91bmQgU3VidHJhY3Rpb24iLCBQYXR0ZXJuIFJlY29nbml0aW9uIAorICogWzddIFouWml2a292aWMsIEYuIHZhbiBkZXIgSGVpamRlbiwgIkVmZmljaWVudCBBZGFwdGl2ZSBEZW5zaXR5IEVzdGltYXRpb24KKyAqIHBlciBJbWFnZSBQaXhlbCBmb3IgdGhlIFRhc2sgb2YgQmFja2dyb3VuZCBTdWJ0cmFjdGlvbiIsIFBhdHRlcm4gUmVjb2duaXRpb24KICAqIExldHRlcnMsIHZvbC4gMjcsIG5vLiA3LCBwYWdlcyA3NzMtNzgwLCAyMDA2LgogICoKICAqIDxyZWZzZWN0Mj4KQEAgLTkwLDggKzkwLDYgQEAKICNpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCiAjaW5jbHVkZSAiZ3N0c2VnbWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8b3BlbmN2Mi92aWRlby9iYWNrZ3JvdW5kX3NlZ20uaHBwPgogI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jX2MuaD4KQEAgLTM4MiwxMiArMzgwLDEyIEBACiAgIGN2Q3Z0Q29sb3IgKGZpbHRlci0+Y3ZSR0JBLCBmaWx0ZXItPmN2UkdCLCBDVl9SR0JBMlJHQik7CiAgIGN2Q3Z0Q29sb3IgKGZpbHRlci0+Y3ZSR0IsIGZpbHRlci0+Y3ZZVVYsIENWX1JHQjJZQ3JDYik7CiAKLSAgLyogQ3JlYXRlIGFuZCB1cGRhdGUgYSBmZy9iZyBtb2RlbCB1c2luZyBhIGNvZGVib29rIGFwcHJvYWNoIGZvbGxvd2luZyB0aGUgCisgIC8qIENyZWF0ZSBhbmQgdXBkYXRlIGEgZmcvYmcgbW9kZWwgdXNpbmcgYSBjb2RlYm9vayBhcHByb2FjaCBmb2xsb3dpbmcgdGhlCiAgICAqIG9wZW5jdiBPJ1JlaWxseSBib29rIFsxXSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWxnbyBkZXNjcmliZWQgaW4gWzJdLgogICAgKgotICAgKiBbMV0gTGVhcm5pbmcgT3BlbkNWOiBDb21wdXRlciBWaXNpb24gd2l0aCB0aGUgT3BlbkNWIExpYnJhcnkgYnkgR2FyeSAKKyAgICogWzFdIExlYXJuaW5nIE9wZW5DVjogQ29tcHV0ZXIgVmlzaW9uIHdpdGggdGhlIE9wZW5DViBMaWJyYXJ5IGJ5IEdhcnkKICAgICogQnJhZHNraSBhbmQgQWRyaWFuIEthZWhsZXIsIFB1Ymxpc2hlZCBieSBPJ1JlaWxseSBNZWRpYSwgT2N0b2JlciAzLCAyMDA4Ci0gICAqIFsyXSAiUmVhbC10aW1lIEZvcmVncm91bmQtQmFja2dyb3VuZCBTZWdtZW50YXRpb24gdXNpbmcgQ29kZWJvb2sgTW9kZWwiLCAKKyAgICogWzJdICJSZWFsLXRpbWUgRm9yZWdyb3VuZC1CYWNrZ3JvdW5kIFNlZ21lbnRhdGlvbiB1c2luZyBDb2RlYm9vayBNb2RlbCIsCiAgICAqIFJlYWwtdGltZSBJbWFnaW5nLCBWb2x1bWUgMTEsIElzc3VlIDMsIFBhZ2VzIDE2Ny0yNTYsIEp1bmUgMjAwNS4gKi8KICAgaWYgKE1FVEhPRF9CT09LID09IGZpbHRlci0+bWV0aG9kKSB7CiAgICAgdW5zaWduZWQgY2JCb3VuZHNbM10gPSB7IDEwLCA1LCA1IH07CkBAIC00MjksMjcgKzQyNywyNyBAQAogICAgICAgICBmaWx0ZXItPm1lbV9zdG9yYWdlLCBmaWx0ZXItPmNvbnRvdXJzKTsKIAogICB9Ci0gIC8qIENyZWF0ZSB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBtYXNrcyB1c2luZyBCYWNrZ3JvdW5kU3VidHJhY3Rvck1PRyBbMV0sIAotICAgKiAgR2F1c3NpYW4gTWl4dHVyZS1iYXNlZCBCYWNrZ3JvdW5kL0ZvcmVncm91bmQgc2VnbWVudGF0aW9uIGFsZ29yaXRobS4gT3BlbkNWIAorICAvKiBDcmVhdGUgdGhlIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgbWFza3MgdXNpbmcgQmFja2dyb3VuZFN1YnRyYWN0b3JNT0cgWzFdLAorICAgKiAgR2F1c3NpYW4gTWl4dHVyZS1iYXNlZCBCYWNrZ3JvdW5kL0ZvcmVncm91bmQgc2VnbWVudGF0aW9uIGFsZ29yaXRobS4gT3BlbkNWCiAgICAqIE1PRyBpbXBsZW1lbnRzIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIFsyXS4KLSAgICogCisgICAqCiAgICAqIFsxXSBodHRwOi8vb3BlbmN2Lml0c2Vlei5jb20vbW9kdWxlcy92aWRlby9kb2MvbW90aW9uX2FuYWx5c2lzX2FuZF9vYmplY3RfdHJhY2tpbmcuaHRtbCNiYWNrZ3JvdW5kc3VidHJhY3Rvcm1vZwotICAgKiBbMl0gUC4gS2FkZXdUcmFLdVBvbmcgYW5kIFIuIEJvd2RlbiwgIkFuIGltcHJvdmVkIGFkYXB0aXZlIGJhY2tncm91bmQgCi0gICAqIG1peHR1cmUgbW9kZWwgZm9yIHJlYWwtdGltZSB0cmFja2luZyB3aXRoIHNoYWRvdyBkZXRlY3Rpb24iLCBQcm9jLiAybmQgCisgICAqIFsyXSBQLiBLYWRld1RyYUt1UG9uZyBhbmQgUi4gQm93ZGVuLCAiQW4gaW1wcm92ZWQgYWRhcHRpdmUgYmFja2dyb3VuZAorICAgKiBtaXh0dXJlIG1vZGVsIGZvciByZWFsLXRpbWUgdHJhY2tpbmcgd2l0aCBzaGFkb3cgZGV0ZWN0aW9uIiwgUHJvYy4gMm5kCiAgICAqIEV1cm9wZWFuIFdvcmtzaG9wIG9uIEFkdmFuY2VkIFZpZGVvLUJhc2VkIFN1cnZlaWxsYW5jZSBTeXN0ZW1zLCAyMDAxCiAgICAqLwogICBlbHNlIGlmIChNRVRIT0RfTU9HID09IGZpbHRlci0+bWV0aG9kKSB7CiAgICAgcnVuX21vZ19pdGVyYXRpb24gKGZpbHRlcik7CiAgIH0KICAgLyogQ3JlYXRlIHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIG1hc2tzIHVzaW5nIEJhY2tncm91bmRTdWJ0cmFjdG9yTU9HMgotICAgKiBbMV0sIEdhdXNzaWFuIE1peHR1cmUtYmFzZWQgQmFja2dyb3VuZC9Gb3JlZ3JvdW5kIHNlZ21lbnRhdGlvbiBhbGdvcml0aG0uIAorICAgKiBbMV0sIEdhdXNzaWFuIE1peHR1cmUtYmFzZWQgQmFja2dyb3VuZC9Gb3JlZ3JvdW5kIHNlZ21lbnRhdGlvbiBhbGdvcml0aG0uCiAgICAqIE9wZW5DViBNT0cyIGltcGxlbWVudHMgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gWzJdIGFuZCBbM10uCi0gICAqIAorICAgKgogICAgKiBbMV0gaHR0cDovL29wZW5jdi5pdHNlZXouY29tL21vZHVsZXMvdmlkZW8vZG9jL21vdGlvbl9hbmFseXNpc19hbmRfb2JqZWN0X3RyYWNraW5nLmh0bWwjYmFja2dyb3VuZHN1YnRyYWN0b3Jtb2cyCi0gICAqIFsyXSBaLlppdmtvdmljLCAiSW1wcm92ZWQgYWRhcHRpdmUgR2F1c2lhbiBtaXh0dXJlIG1vZGVsIGZvciBiYWNrZ3JvdW5kIAorICAgKiBbMl0gWi5aaXZrb3ZpYywgIkltcHJvdmVkIGFkYXB0aXZlIEdhdXNpYW4gbWl4dHVyZSBtb2RlbCBmb3IgYmFja2dyb3VuZAogICAgKiBzdWJ0cmFjdGlvbiIsIEludGVybmF0aW9uYWwgQ29uZmVyZW5jZSBQYXR0ZXJuIFJlY29nbml0aW9uLCBVSywgQXVnIDIwMDQuCi0gICAqIFszXSBaLlppdmtvdmljLCBGLiB2YW4gZGVyIEhlaWpkZW4sICJFZmZpY2llbnQgQWRhcHRpdmUgRGVuc2l0eSBFc3RpbWF0aW9uIAotICAgKiBwZXIgSW1hZ2UgUGl4ZWwgZm9yIHRoZSBUYXNrIG9mIEJhY2tncm91bmQgU3VidHJhY3Rpb24iLCBQYXR0ZXJuIAorICAgKiBbM10gWi5aaXZrb3ZpYywgRi4gdmFuIGRlciBIZWlqZGVuLCAiRWZmaWNpZW50IEFkYXB0aXZlIERlbnNpdHkgRXN0aW1hdGlvbgorICAgKiBwZXIgSW1hZ2UgUGl4ZWwgZm9yIHRoZSBUYXNrIG9mIEJhY2tncm91bmQgU3VidHJhY3Rpb24iLCBQYXR0ZXJuCiAgICAqIFJlY29nbml0aW9uIExldHRlcnMsIHZvbC4gMjcsIG5vLiA3LCBwYWdlcyA3NzMtNzgwLCAyMDA2LiAgICovCiAgIGVsc2UgaWYgKE1FVEhPRF9NT0cyID09IGZpbHRlci0+bWV0aG9kKSB7CiAgICAgcnVuX21vZzJfaXRlcmF0aW9uIChmaWx0ZXIpOwpAQCAtNDg3LDIwICs0ODUsMjAgQEAKIAogCiAjaWZkZWYgQ09ERV9GUk9NX09SRUlMTFlfQk9PSyAgIC8qIFNlZSBsaWNlbnNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhZ2UgKi8KLS8qIAotICBpbnQgdXBkYXRlX2NvZGVib29rKHVjaGFyICpwLCBjb2RlQm9vayAmYywgdW5zaWduZWQgY2JCb3VuZHMpIAotICBVcGRhdGVzIHRoZSBjb2RlYm9vayBlbnRyeSB3aXRoIGEgbmV3IGRhdGEgcG9pbnQgCi0gIAotICBwIFBvaW50ZXIgdG8gYSBZVVYgb3IgSFNJIHBpeGVsIAotICBjIENvZGVib29rIGZvciB0aGlzIHBpeGVsIAotICBjYkJvdW5kcyBMZWFybmluZyBib3VuZHMgZm9yIGNvZGVib29rIChSdWxlIG9mIHRodW1iOiAxMCkgCi0gIG51bUNoYW5uZWxzIE51bWJlciBvZiBjb2xvciBjaGFubmVscyB3ZcKhwq9yZSBsZWFybmluZyAKLSAgCi0gIE5PVEVTOiAKLSAgY3ZCb3VuZHMgbXVzdCBiZSBvZiBsZW5ndGggZXF1YWwgdG8gbnVtQ2hhbm5lbHMgCi0gIAotICBSRVRVUk4gCi0gIGNvZGVib29rIGluZGV4IAorLyoKKyAgaW50IHVwZGF0ZV9jb2RlYm9vayh1Y2hhciAqcCwgY29kZUJvb2sgJmMsIHVuc2lnbmVkIGNiQm91bmRzKQorICBVcGRhdGVzIHRoZSBjb2RlYm9vayBlbnRyeSB3aXRoIGEgbmV3IGRhdGEgcG9pbnQKKworICBwIFBvaW50ZXIgdG8gYSBZVVYgb3IgSFNJIHBpeGVsCisgIGMgQ29kZWJvb2sgZm9yIHRoaXMgcGl4ZWwKKyAgY2JCb3VuZHMgTGVhcm5pbmcgYm91bmRzIGZvciBjb2RlYm9vayAoUnVsZSBvZiB0aHVtYjogMTApCisgIG51bUNoYW5uZWxzIE51bWJlciBvZiBjb2xvciBjaGFubmVscyB3ZcKhwq9yZSBsZWFybmluZworCisgIE5PVEVTOgorICBjdkJvdW5kcyBtdXN0IGJlIG9mIGxlbmd0aCBlcXVhbCB0byBudW1DaGFubmVscworCisgIFJFVFVSTgorICBjb2RlYm9vayBpbmRleAogKi8KIGludAogdXBkYXRlX2NvZGVib29rICh1bnNpZ25lZCBjaGFyICpwLCBjb2RlQm9vayAqIGMsIHVuc2lnbmVkICpjYkJvdW5kcywKQEAgLTU4OSwxNCArNTg3LDE0IEBACiAKIAogLyoKLSBpbnQgY2xlYXJfc3RhbGVfZW50cmllcyhjb2RlQm9vayAmYykgCi0gIER1cmluZyBsZWFybmluZywgYWZ0ZXIgeW91J3ZlIGxlYXJuZWQgZm9yIHNvbWUgcGVyaW9kIG9mIHRpbWUsIAotICBwZXJpb2RpY2FsbHkgY2FsbCB0aGlzIHRvIGNsZWFyIG91dCBzdGFsZSBjb2RlYm9vayBlbnRyaWVzIAotICAKLSAgYyBDb2RlYm9vayB0byBjbGVhbiB1cCAKLSAgCi0gIFJldHVybiAKLSAgbnVtYmVyIG9mIGVudHJpZXMgY2xlYXJlZCAKKyBpbnQgY2xlYXJfc3RhbGVfZW50cmllcyhjb2RlQm9vayAmYykKKyAgRHVyaW5nIGxlYXJuaW5nLCBhZnRlciB5b3UndmUgbGVhcm5lZCBmb3Igc29tZSBwZXJpb2Qgb2YgdGltZSwKKyAgcGVyaW9kaWNhbGx5IGNhbGwgdGhpcyB0byBjbGVhciBvdXQgc3RhbGUgY29kZWJvb2sgZW50cmllcworCisgIGMgQ29kZWJvb2sgdG8gY2xlYW4gdXAKKworICBSZXR1cm4KKyAgbnVtYmVyIG9mIGVudHJpZXMgY2xlYXJlZAogKi8KIGludAogY2xlYXJfc3RhbGVfZW50cmllcyAoY29kZUJvb2sgKiBjKQpAQCAtNjQwLDI3ICs2MzgsMjcgQEAKIAogCiAvKgotICB1Y2hhciBiYWNrZ3JvdW5kX2RpZmYoIHVjaGFyICpwLCBjb2RlQm9vayAmYywgCi0gIGludCBtaW5Nb2QsIGludCBtYXhNb2QpIAotICBHaXZlbiBhIHBpeGVsIGFuZCBhIGNvZGVib29rLCBkZXRlcm1pbmUgaWYgdGhlIHBpeGVsIGlzIAotICBjb3ZlcmVkIGJ5IHRoZSBjb2RlYm9vayAKLSAgCi0gIHAgUGl4ZWwgcG9pbnRlciAoWVVWIGludGVybGVhdmVkKSAKLSAgYyBDb2RlYm9vayByZWZlcmVuY2UgCi0gIG51bUNoYW5uZWxzIE51bWJlciBvZiBjaGFubmVscyB3ZSBhcmUgdGVzdGluZyAKLSAgbWF4TW9kIEFkZCB0aGlzIChwb3NzaWJseSBuZWdhdGl2ZSkgbnVtYmVyIG9udG8gCisgIHVjaGFyIGJhY2tncm91bmRfZGlmZiggdWNoYXIgKnAsIGNvZGVCb29rICZjLAorICBpbnQgbWluTW9kLCBpbnQgbWF4TW9kKQorICBHaXZlbiBhIHBpeGVsIGFuZCBhIGNvZGVib29rLCBkZXRlcm1pbmUgaWYgdGhlIHBpeGVsIGlzCisgIGNvdmVyZWQgYnkgdGhlIGNvZGVib29rCiAKLSAgbWF4IGxldmVsIHdoZW4gZGV0ZXJtaW5pbmcgaWYgbmV3IHBpeGVsIGlzIGZvcmVncm91bmQgCi0gIG1pbk1vZCBTdWJyYWN0IHRoaXMgKHBvc3NpYmx5IG5lZ2F0aXZlKSBudW1iZXIgZnJvbSAKLSAgbWluIGxldmVsIHdoZW4gZGV0ZXJtaW5pbmcgaWYgbmV3IHBpeGVsIGlzIGZvcmVncm91bmQgCi0gIAotICBOT1RFUzogCi0gIG1pbk1vZCBhbmQgbWF4TW9kIG11c3QgaGF2ZSBsZW5ndGggbnVtQ2hhbm5lbHMsIAotICBlLmcuIDMgY2hhbm5lbHMgPT4gbWluTW9kWzNdLCBtYXhNb2RbM10uIFRoZXJlIGlzIG9uZSBtaW4gYW5kIAotICBvbmUgbWF4IHRocmVzaG9sZCBwZXIgY2hhbm5lbC4gCi0gIAotICBSZXR1cm4gCi0gIDAgPT4gYmFja2dyb3VuZCwgMjU1ID0+IGZvcmVncm91bmQgCisgIHAgUGl4ZWwgcG9pbnRlciAoWVVWIGludGVybGVhdmVkKQorICBjIENvZGVib29rIHJlZmVyZW5jZQorICBudW1DaGFubmVscyBOdW1iZXIgb2YgY2hhbm5lbHMgd2UgYXJlIHRlc3RpbmcKKyAgbWF4TW9kIEFkZCB0aGlzIChwb3NzaWJseSBuZWdhdGl2ZSkgbnVtYmVyIG9udG8KKworICBtYXggbGV2ZWwgd2hlbiBkZXRlcm1pbmluZyBpZiBuZXcgcGl4ZWwgaXMgZm9yZWdyb3VuZAorICBtaW5Nb2QgU3VicmFjdCB0aGlzIChwb3NzaWJseSBuZWdhdGl2ZSkgbnVtYmVyIGZyb20KKyAgbWluIGxldmVsIHdoZW4gZGV0ZXJtaW5pbmcgaWYgbmV3IHBpeGVsIGlzIGZvcmVncm91bmQKKworICBOT1RFUzoKKyAgbWluTW9kIGFuZCBtYXhNb2QgbXVzdCBoYXZlIGxlbmd0aCBudW1DaGFubmVscywKKyAgZS5nLiAzIGNoYW5uZWxzID0+IG1pbk1vZFszXSwgbWF4TW9kWzNdLiBUaGVyZSBpcyBvbmUgbWluIGFuZAorICBvbmUgbWF4IHRocmVzaG9sZCBwZXIgY2hhbm5lbC4KKworICBSZXR1cm4KKyAgMCA9PiBiYWNrZ3JvdW5kLCAyNTUgPT4gZm9yZWdyb3VuZAogKi8KIHVuc2lnbmVkIGNoYXIKIGJhY2tncm91bmRfZGlmZiAodW5zaWduZWQgY2hhciAqcCwgY29kZUJvb2sgKiBjLCBpbnQgbnVtQ2hhbm5lbHMsCkBAIC03OTksMTIgKzc5NywxMiBAQAogICAgICAgKHVjaGFyICopIGZpbHRlci0+Y3ZGRy0+aW1hZ2VEYXRhOwogCiAgIC8qCi0gICAgIEJhY2tncm91bmRTdWJ0cmFjdG9yTU9HIFsxXSwgR2F1c3NpYW4gTWl4dHVyZS1iYXNlZCBCYWNrZ3JvdW5kL0ZvcmVncm91bmQgCisgICAgIEJhY2tncm91bmRTdWJ0cmFjdG9yTU9HIFsxXSwgR2F1c3NpYW4gTWl4dHVyZS1iYXNlZCBCYWNrZ3JvdW5kL0ZvcmVncm91bmQKICAgICAgU2VnbWVudGF0aW9uIEFsZ29yaXRobS4gT3BlbkNWIE1PRyBpbXBsZW1lbnRzIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIFsyXS4KIAogICAgICBbMV0gaHR0cDovL29wZW5jdi5pdHNlZXouY29tL21vZHVsZXMvdmlkZW8vZG9jL21vdGlvbl9hbmFseXNpc19hbmRfb2JqZWN0X3RyYWNraW5nLmh0bWwjYmFja2dyb3VuZHN1YnRyYWN0b3Jtb2cKLSAgICAgWzJdIFAuIEthZGV3VHJhS3VQb25nIGFuZCBSLiBCb3dkZW4sICJBbiBpbXByb3ZlZCBhZGFwdGl2ZSBiYWNrZ3JvdW5kIAotICAgICBtaXh0dXJlIG1vZGVsIGZvciByZWFsLXRpbWUgdHJhY2tpbmcgd2l0aCBzaGFkb3cgZGV0ZWN0aW9uIiwgUHJvYy4gMm5kIAorICAgICBbMl0gUC4gS2FkZXdUcmFLdVBvbmcgYW5kIFIuIEJvd2RlbiwgIkFuIGltcHJvdmVkIGFkYXB0aXZlIGJhY2tncm91bmQKKyAgICAgbWl4dHVyZSBtb2RlbCBmb3IgcmVhbC10aW1lIHRyYWNraW5nIHdpdGggc2hhZG93IGRldGVjdGlvbiIsIFByb2MuIDJuZAogICAgICBFdXJvcGVhbiBXb3Jrc2hvcCBvbiBBZHZhbmNlZCBWaWRlby1CYXNlZCBTdXJ2ZWlsbGFuY2UgU3lzdGVtcywgMjAwMQogICAgKi8KIApAQCAtODI0LDE1ICs4MjIsMTUgQEAKICAgICAgICh1Y2hhciAqKSBmaWx0ZXItPmN2RkctPmltYWdlRGF0YTsKIAogICAvKgotICAgICBCYWNrZ3JvdW5kU3VidHJhY3Rvck1PRzIgWzFdLCBHYXVzc2lhbiBNaXh0dXJlLWJhc2VkIEJhY2tncm91bmQvRm9yZWdyb3VuZCAKLSAgICAgc2VnbWVudGF0aW9uIGFsZ29yaXRobS4gT3BlbkNWIE1PRzIgaW1wbGVtZW50cyB0aGUgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiAKKyAgICAgQmFja2dyb3VuZFN1YnRyYWN0b3JNT0cyIFsxXSwgR2F1c3NpYW4gTWl4dHVyZS1iYXNlZCBCYWNrZ3JvdW5kL0ZvcmVncm91bmQKKyAgICAgc2VnbWVudGF0aW9uIGFsZ29yaXRobS4gT3BlbkNWIE1PRzIgaW1wbGVtZW50cyB0aGUgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbgogICAgICBbMl0gYW5kIFszXS4KIAogICAgICBbMV0gaHR0cDovL29wZW5jdi5pdHNlZXouY29tL21vZHVsZXMvdmlkZW8vZG9jL21vdGlvbl9hbmFseXNpc19hbmRfb2JqZWN0X3RyYWNraW5nLmh0bWwjYmFja2dyb3VuZHN1YnRyYWN0b3Jtb2cyCi0gICAgIFsyXSBaLlppdmtvdmljLCAiSW1wcm92ZWQgYWRhcHRpdmUgR2F1c2lhbiBtaXh0dXJlIG1vZGVsIGZvciBiYWNrZ3JvdW5kIAorICAgICBbMl0gWi5aaXZrb3ZpYywgIkltcHJvdmVkIGFkYXB0aXZlIEdhdXNpYW4gbWl4dHVyZSBtb2RlbCBmb3IgYmFja2dyb3VuZAogICAgICBzdWJ0cmFjdGlvbiIsIEludGVybmF0aW9uYWwgQ29uZmVyZW5jZSBQYXR0ZXJuIFJlY29nbml0aW9uLCBVSywgQXVndXN0LCAyMDA0LgotICAgICBbM10gWi5aaXZrb3ZpYywgRi4gdmFuIGRlciBIZWlqZGVuLCAiRWZmaWNpZW50IEFkYXB0aXZlIERlbnNpdHkgRXN0aW1hdGlvbiBwZXIgCi0gICAgIEltYWdlIFBpeGVsIGZvciB0aGUgVGFzayBvZiBCYWNrZ3JvdW5kIFN1YnRyYWN0aW9uIiwgUGF0dGVybiBSZWNvZ25pdGlvbiAKKyAgICAgWzNdIFouWml2a292aWMsIEYuIHZhbiBkZXIgSGVpamRlbiwgIkVmZmljaWVudCBBZGFwdGl2ZSBEZW5zaXR5IEVzdGltYXRpb24gcGVyCisgICAgIEltYWdlIFBpeGVsIGZvciB0aGUgVGFzayBvZiBCYWNrZ3JvdW5kIFN1YnRyYWN0aW9uIiwgUGF0dGVybiBSZWNvZ25pdGlvbgogICAgICBMZXR0ZXJzLCB2b2wuIDI3LCBuby4gNywgcGFnZXMgNzczLTc4MCwgMjAwNi4KICAgICovCiAKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0c2tpbmRldGVjdC5jIGIvZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmNwcApzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBleHQvb3BlbmN2L2dzdHNraW5kZXRlY3QuYwpyZW5hbWUgdG8gZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmNwcAppbmRleCBjYWYzOGVjLi5hYWRlMjNjIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdHNraW5kZXRlY3QuYworKysgYi9leHQvb3BlbmN2L2dzdHNraW5kZXRlY3QuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEzIE1pZ3VlbCBDYXNhcy1TYW5jaGV6IDxtaWd1ZWxlY2FzYXNzYW5jaGV6QGdtYWlsLmNvbT4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNTgsOSArNTgsNiBAQAogI2luY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KLSNpbmNsdWRlICJnc3RvcGVuY3Z1dGlscy5oIgogI2luY2x1ZGUgImdzdHNraW5kZXRlY3QuaCIKICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CiAjaW5jbHVkZSA8b3BlbmN2Mi9sZWdhY3kvY29tcGF0LmhwcD4KQEAgLTE1OCw3ICsxNTUsNyBAQAogICAgICAgICAgICJNZXRob2QgdG8gdXNlIiwKICAgICAgICAgICAiTWV0aG9kIHRvIHVzZSIsCiAgICAgICAgICAgR1NUX1RZUEVfU0tJTl9ERVRFQ1RfTUVUSE9ELCBIU1YsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCiAgICAgICAic2tpbmRldGVjdCIsCkBAIC0xODYsNyArMTgzLDggQEAKICAgZmlsdGVyLT5wb3N0cHJvY2VzcyA9IFRSVUU7CiAgIGZpbHRlci0+bWV0aG9kID0gSFNWOwogCi0gIGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfaW5fcGxhY2UgKEdTVF9CQVNFX1RSQU5TRk9STSAoZmlsdGVyKSwgRkFMU0UpOworICBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UgKEdTVF9PUEVOQ1ZfVklERU9fRklMVEVSX0NBU1QgKGZpbHRlciksCisgICAgICBGQUxTRSk7CiB9CiAKIApAQCAtMzE2LDE3ICszMTQsMTUgQEAKIHsKICAgR3N0U2tpbkRldGVjdCAqZmlsdGVyID0gR1NUX1NLSU5fREVURUNUIChiYXNlKTsKIAotCi0KICAgZmlsdGVyLT5jdlJHQi0+aW1hZ2VEYXRhID0gKGNoYXIgKikgaW1nLT5pbWFnZURhdGE7CiAgIGZpbHRlci0+Y3ZTa2luLT5pbWFnZURhdGEgPSAoY2hhciAqKSBvdXRpbWctPmltYWdlRGF0YTsKIAogICAvKiBTS0lOIENPTE9VUiBCTE9CIERFVEVDVElPTiAqLwogICBpZiAoSFNWID09IGZpbHRlci0+bWV0aG9kKSB7CiAgICAgY3ZDdnRDb2xvciAoZmlsdGVyLT5jdlJHQiwgZmlsdGVyLT5jdkhTViwgQ1ZfUkdCMkhTVik7Ci0gICAgY3ZDdnRQaXhUb1BsYW5lIChmaWx0ZXItPmN2SFNWLCBmaWx0ZXItPmN2SCwgZmlsdGVyLT5jdlMsIGZpbHRlci0+Y3ZWLCAwKTsgIC8qICBFeHRyYWN0IHRoZSAzIGNvbG9yIGNvbXBvbmVudHMuICovCisgICAgY3ZTcGxpdCAoZmlsdGVyLT5jdkhTViwgZmlsdGVyLT5jdkgsIGZpbHRlci0+Y3ZTLCBmaWx0ZXItPmN2ViwgMCk7ICAvKiAgRXh0cmFjdCB0aGUgMyBjb2xvciBjb21wb25lbnRzLiAqLwogCi0gICAgLyogIERldGVjdCB3aGljaCBwaXhlbHMgaW4gZWFjaCBvZiB0aGUgSCwgUyBhbmQgViBjaGFubmVscyBhcmUgcHJvYmFibHkgc2tpbiBwaXhlbHMuIAorICAgIC8qICBEZXRlY3Qgd2hpY2ggcGl4ZWxzIGluIGVhY2ggb2YgdGhlIEgsIFMgYW5kIFYgY2hhbm5lbHMgYXJlIHByb2JhYmx5IHNraW4gcGl4ZWxzLgogICAgICAgIEFzc3VtZSB0aGF0IHNraW4gaGFzIGEgSHVlIGJldHdlZW4gMCB0byAxOCAob3V0IG9mIDE4MCksIGFuZCBTYXR1cmF0aW9uIGFib3ZlIDUwLCBhbmQgQnJpZ2h0bmVzcyBhYm92ZSA4MC4gKi8KICAgICBjdlRocmVzaG9sZCAoZmlsdGVyLT5jdkgsIGZpbHRlci0+Y3ZIMiwgMTAsIFVDSEFSX01BWCwgQ1ZfVEhSRVNIX0JJTkFSWSk7ICAgLyogKGh1ZSA+IDEwKSAqLwogICAgIGN2VGhyZXNob2xkIChmaWx0ZXItPmN2SCwgZmlsdGVyLT5jdkgsIDIwLCBVQ0hBUl9NQVgsIENWX1RIUkVTSF9CSU5BUllfSU5WKTsgICAgICAgIC8qIChodWUgPCAyMCkgKi8KQEAgLTMzNiw3ICszMzIsNyBAQAogICAgIC8qICBlcm9kZSB0aGUgSFVFIHRvIGdldCByaWQgb2Ygbm9pc2UuICovCiAgICAgY3ZFcm9kZSAoZmlsdGVyLT5jdkgsIGZpbHRlci0+Y3ZILCBOVUxMLCAxKTsKIAotICAgIC8qICBDb21iaW5lIGFsbCAzIHRocmVzaG9sZGVkIGNvbG9yIGNvbXBvbmVudHMsIHNvIHRoYXQgYW4gb3V0cHV0IHBpeGVsIHdpbGwgb25seSAKKyAgICAvKiAgQ29tYmluZSBhbGwgMyB0aHJlc2hvbGRlZCBjb2xvciBjb21wb25lbnRzLCBzbyB0aGF0IGFuIG91dHB1dCBwaXhlbCB3aWxsIG9ubHkKICAgICAgICBiZSB3aGl0ZSAoMjU1KSBpZiB0aGUgSCwgUyBhbmQgViBwaXhlbHMgd2VyZSBhbHNvIHdoaXRlLgogICAgICAgIGltYWdlU2tpbiA9IChodWUgPiAxMCkgXiAoaHVlIDwgMjApIF4gKHNhdCA+IDQ4KSBeICh2YWwgPiA4MCksIHdoZXJlICAgXiBtZWFuIHBpeGVscy13aXNlIEFORCAqLwogICAgIGN2QW5kIChmaWx0ZXItPmN2SCwgZmlsdGVyLT5jdlMsIGZpbHRlci0+Y3ZTa2luUGl4ZWxzMSwgTlVMTCk7CkBAIC0zNzQsNyArMzcwLDcgQEAKICAgICBjdkN2dENvbG9yIChmaWx0ZXItPmN2ZHJhZnQsIGZpbHRlci0+Y3ZSR0IsIENWX0dSQVkyUkdCKTsKICAgfQogCi0gIC8qIEFmdGVyIHRoaXMgd2UgaGF2ZSBhIFJHQiBCbGFjayBhbmQgd2hpdGUgaW1hZ2Ugd2l0aCB0aGUgc2tpbiwgaW4gCisgIC8qIEFmdGVyIHRoaXMgd2UgaGF2ZSBhIFJHQiBCbGFjayBhbmQgd2hpdGUgaW1hZ2Ugd2l0aCB0aGUgc2tpbiwgaW4KICAgICAgZmlsdGVyLT5jdlJHQi4gV2UgY2FuIHBvc3Rwcm9jZXNzIGJ5IGFwcGx5aW5nIDEgZXJvZGUtZGlsYXRlIGFuZCAxCiAgICAgIGRpbGF0ZS1lcm9kZSwgb3IgYWx0ZXJuYXRpdmVseSAxIG9wZW5pbmctY2xvc2luZyBhbGwgdG9nZXRoZXIsIHdpdGgKICAgICAgdGhlIGdvYWwgb2YgcmVtb3Zpbmcgc21hbGwgKHNwdXJpb3VzKSBza2luIHNwb3RzIGFuZCBjcmVhdGluZyBsYXJnZQpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmggYi9leHQvb3BlbmN2L2dzdHNraW5kZXRlY3QuaAppbmRleCA5MTBkMjJlLi5hOWM1NDhkIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdHNraW5kZXRlY3QuaAorKysgYi9leHQvb3BlbmN2L2dzdHNraW5kZXRlY3QuaApAQCAtMyw3ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNSBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNSBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWljaGFlbCBTaGVsZG9uIDxtaWtlQG1pa2Vhc29mdC5jb20+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQ2LDggKzQ2LDYgQEAKICNpZm5kZWYgX19HU1RfU0tJTl9ERVRFQ1RfSF9fCiAjZGVmaW5lIF9fR1NUX1NLSU5fREVURUNUX0hfXwogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCiAjaW5jbHVkZSA8Z3N0b3BlbmN2dmlkZW9maWx0ZXIuaD4KIAogR19CRUdJTl9ERUNMUwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3R0ZW1wbGF0ZW1hdGNoLmMgYi9leHQvb3BlbmN2L2dzdHRlbXBsYXRlbWF0Y2guY3BwCnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jCnJlbmFtZSB0byBleHQvb3BlbmN2L2dzdHRlbXBsYXRlbWF0Y2guY3BwCmluZGV4IDIxZDhjZDQuLjEyMjMwNjYgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jCisrKyBiL2V4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jcHAKQEAgLTQsNyArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1pY2hhZWwgU2hlbGRvbiA8bWlrZUBtaWtlYXNvZnQuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5IE5vYW0gTGV3aXMgPGpvbmVzLm5vYW1sZUBnbWFpbC5jb20+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTUyLDcgKzUyLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoLTAuMTAgdmlkZW90ZXN0c3JjICEgZGVjb2RlYmluICEgdmlkZW9jb252ZXJ0ICEgdGVtcGxhdGVtYXRjaCB0ZW1wbGF0ZT0vcGF0aC90by9maWxlLmpwZyAhIHZpZGVvY29udmVydCAhIHh2aW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBkZWNvZGViaW4gISB2aWRlb2NvbnZlcnQgISB0ZW1wbGF0ZW1hdGNoIHRlbXBsYXRlPS9wYXRoL3RvL2ZpbGUuanBnICEgdmlkZW9jb252ZXJ0ICEgeHZpbWFnZXNpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC02MSwxMCArNjEsNyBAQAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQogI2luY2x1ZGUgIi4uLy4uL2dzdC1saWJzL2dzdC9nc3QtaTE4bi1wbHVnaW4uaCIKLSNpbmNsdWRlICJnc3RvcGVuY3Z1dGlscy5oIgogI2luY2x1ZGUgImdzdHRlbXBsYXRlbWF0Y2guaCIKICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CiAKQEAgLTEwMiw3ICs5OSw4IEBACiAgICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFICgiQkdSIikpCiAgICAgKTsKIAotR19ERUZJTkVfVFlQRSAoR3N0VGVtcGxhdGVNYXRjaCwgZ3N0X3RlbXBsYXRlX21hdGNoLCBHU1RfVFlQRV9FTEVNRU5UKTsKK0dfREVGSU5FX1RZUEUgKEdzdFRlbXBsYXRlTWF0Y2gsIGdzdF90ZW1wbGF0ZV9tYXRjaCwKKyAgICBHU1RfVFlQRV9PUEVOQ1ZfVklERU9fRklMVEVSKTsKIAogc3RhdGljIHZvaWQgZ3N0X3RlbXBsYXRlX21hdGNoX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKIHN0YXRpYyB2b2lkIGdzdF90ZW1wbGF0ZV9tYXRjaF9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCkBAIC0xMTAsNDIgKzEwOCwzOCBAQAogc3RhdGljIHZvaWQgZ3N0X3RlbXBsYXRlX21hdGNoX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIAotc3RhdGljIGdib29sZWFuIGdzdF90ZW1wbGF0ZV9tYXRjaF9oYW5kbGVfc2lua19ldmVudCAoR3N0UGFkICogcGFkLAotICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCk7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdGVtcGxhdGVfbWF0Y2hfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdEJ1ZmZlciAqIGJ1Zik7Ci0KLXN0YXRpYyB2b2lkIGdzdF90ZW1wbGF0ZV9tYXRjaF9sb2FkX3RlbXBsYXRlIChHc3RUZW1wbGF0ZU1hdGNoICogZmlsdGVyLAotICAgIGdjaGFyICogdGVtcGxhdGUpOwotc3RhdGljIHZvaWQgZ3N0X3RlbXBsYXRlX21hdGNoX21hdGNoIChJcGxJbWFnZSAqIGlucHV0LCBJcGxJbWFnZSAqIHRlbXBsYXRlLAotICAgIElwbEltYWdlICogZGlzdF9pbWFnZSwgZG91YmxlICpiZXN0X3JlcywgQ3ZQb2ludCAqIGJlc3RfcG9zLCBpbnQgbWV0aG9kKTsKLQotCitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdGVtcGxhdGVfbWF0Y2hfdHJhbnNmb3JtX2lwIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqCisgICAgZmlsdGVyLCBHc3RCdWZmZXIgKiBidWYsIElwbEltYWdlICogaW1nKTsKIAogLyogaW5pdGlhbGl6ZSB0aGUgdGVtcGxhdGVtYXRjaCdzIGNsYXNzICovCiBzdGF0aWMgdm9pZAogZ3N0X3RlbXBsYXRlX21hdGNoX2NsYXNzX2luaXQgKEdzdFRlbXBsYXRlTWF0Y2hDbGFzcyAqIGtsYXNzKQogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgKmdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3M7CiAgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CiAKICAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CisgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MgPSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyAqKSBrbGFzczsKIAogICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF90ZW1wbGF0ZV9tYXRjaF9maW5hbGl6ZTsKICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X3RlbXBsYXRlX21hdGNoX3NldF9wcm9wZXJ0eTsKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X3RlbXBsYXRlX21hdGNoX2dldF9wcm9wZXJ0eTsKIAorICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzLT5jdl90cmFuc19pcF9mdW5jID0gZ3N0X3RlbXBsYXRlX21hdGNoX3RyYW5zZm9ybV9pcDsKKwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX01FVEhPRCwKICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJtZXRob2QiLCAiTWV0aG9kIiwKICAgICAgICAgICAiU3BlY2lmaWVzIHRoZSB3YXkgdGhlIHRlbXBsYXRlIG11c3QgYmUgY29tcGFyZWQgd2l0aCBpbWFnZSByZWdpb25zLiAwPVNRRElGRiwgMT1TUURJRkZfTk9STUVELCAyPUNDT1IsIDM9Q0NPUl9OT1JNRUQsIDQ9Q0NPRUZGLCA1PUNDT0VGRl9OT1JNRUQuIiwKLSAgICAgICAgICAwLCA1LCBERUZBVUxUX01FVEhPRCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgMCwgNSwgREVGQVVMVF9NRVRIT0QsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1RFTVBMQVRFLAogICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoInRlbXBsYXRlIiwgIlRlbXBsYXRlIiwgIkZpbGVuYW1lIG9mIHRlbXBsYXRlIGltYWdlIiwKLSAgICAgICAgICBOVUxMLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICBOVUxMLCAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRElTUExBWSwKICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiZGlzcGxheSIsICJEaXNwbGF5IiwKICAgICAgICAgICAiU2V0cyB3aGV0aGVyIHRoZSBkZXRlY3RlZCB0ZW1wbGF0ZSBzaG91bGQgYmUgaGlnaGxpZ2h0ZWQgaW4gdGhlIG91dHB1dCIsCi0gICAgICAgICAgVFJVRSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgVFJVRSwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCiAgICAgICAidGVtcGxhdGVtYXRjaCIsCkBAIC0xNjcsMjQgKzE2MSw1MCBAQAogc3RhdGljIHZvaWQKIGdzdF90ZW1wbGF0ZV9tYXRjaF9pbml0IChHc3RUZW1wbGF0ZU1hdGNoICogZmlsdGVyKQogewotICBmaWx0ZXItPnNpbmtwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNpbmtfZmFjdG9yeSwgInNpbmsiKTsKLSAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKGZpbHRlci0+c2lua3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGVtcGxhdGVfbWF0Y2hfaGFuZGxlX3NpbmtfZXZlbnQpKTsKLSAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKGZpbHRlci0+c2lua3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGVtcGxhdGVfbWF0Y2hfY2hhaW4pKTsKLSAgR1NUX1BBRF9TRVRfUFJPWFlfQ0FQUyAoZmlsdGVyLT5zaW5rcGFkKTsKLQotICBmaWx0ZXItPnNyY3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmc3JjX2ZhY3RvcnksICJzcmMiKTsKLSAgR1NUX1BBRF9TRVRfUFJPWFlfQ0FQUyAoZmlsdGVyLT5zcmNwYWQpOwotCi0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBmaWx0ZXItPnNpbmtwYWQpOwotICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgZmlsdGVyLT5zcmNwYWQpOwogICBmaWx0ZXItPnRlbXBsID0gTlVMTDsKICAgZmlsdGVyLT5kaXNwbGF5ID0gVFJVRTsKICAgZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UgPSBOVUxMOwogICBmaWx0ZXItPmN2RGlzdEltYWdlID0gTlVMTDsKLSAgZmlsdGVyLT5jdkltYWdlID0gTlVMTDsKICAgZmlsdGVyLT5tZXRob2QgPSBERUZBVUxUX01FVEhPRDsKKworICBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UgKEdTVF9PUEVOQ1ZfVklERU9fRklMVEVSX0NBU1QgKGZpbHRlciksCisgICAgICBUUlVFKTsKK30KKworLyogV2UgdGFrZSBvd25lcnNoaXAgb2YgdGVtcGxhdGUgaGVyZSAqLworc3RhdGljIHZvaWQKK2dzdF90ZW1wbGF0ZV9tYXRjaF9sb2FkX3RlbXBsYXRlIChHc3RUZW1wbGF0ZU1hdGNoICogZmlsdGVyLCBnY2hhciAqIHRlbXBsKQoreworICBnY2hhciAqb2xkVGVtcGxhdGVGaWxlbmFtZSA9IE5VTEw7CisgIElwbEltYWdlICpvbGRUZW1wbGF0ZUltYWdlID0gTlVMTCwgKm5ld1RlbXBsYXRlSW1hZ2UgPSBOVUxMLCAqb2xkRGlzdEltYWdlID0KKyAgICAgIE5VTEw7CisKKyAgaWYgKHRlbXBsKSB7CisgICAgbmV3VGVtcGxhdGVJbWFnZSA9IGN2TG9hZEltYWdlICh0ZW1wbCwgQ1ZfTE9BRF9JTUFHRV9DT0xPUik7CisgICAgaWYgKCFuZXdUZW1wbGF0ZUltYWdlKSB7CisgICAgICAvKiBVbmZvcnR1bmF0ZWx5IE9wZW5DViBkb2Vzbid0IHNlZW0gdG8gcHJvdmlkZSBhbnkgd2F5IG9mIGZpbmRpbmcgb3V0CisgICAgICAgICB3aHkgdGhlIGltYWdlIGxvYWQgZmFpbGVkLCBzbyB3ZSBjYW4ndCBiZSBtb3JlIHNwZWNpZmljIHRoYW4gRkFJTEVEOiAqLworICAgICAgR1NUX0VMRU1FTlRfV0FSTklORyAoZmlsdGVyLCBSRVNPVVJDRSwgRkFJTEVELAorICAgICAgICAgIChfKCJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiKSksCisgICAgICAgICAgKCJXaGlsZSBhdHRlbXB0aW5nIHRvIGxvYWQgdGVtcGxhdGUgJyVzJyIsIHRlbXBsKSk7CisgICAgICBnX2ZyZWUgKHRlbXBsKTsKKyAgICAgIHRlbXBsID0gTlVMTDsKKyAgICB9CisgIH0KKworICBHU1RfT0JKRUNUX0xPQ0sgKGZpbHRlcik7CisgIG9sZFRlbXBsYXRlRmlsZW5hbWUgPSBmaWx0ZXItPnRlbXBsOworICBmaWx0ZXItPnRlbXBsID0gdGVtcGw7CisgIG9sZFRlbXBsYXRlSW1hZ2UgPSBmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZTsKKyAgZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UgPSBuZXdUZW1wbGF0ZUltYWdlOworICBvbGREaXN0SW1hZ2UgPSBmaWx0ZXItPmN2RGlzdEltYWdlOworICAvKiBUaGlzIHdpbGwgYmUgcmVjcmVhdGVkIGluIHRoZSBjaGFpbiBmdW5jdGlvbiBhcyByZXF1aXJlZDogKi8KKyAgZmlsdGVyLT5jdkRpc3RJbWFnZSA9IE5VTEw7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXIpOworCisgIGN2UmVsZWFzZUltYWdlICgmb2xkRGlzdEltYWdlKTsKKyAgY3ZSZWxlYXNlSW1hZ2UgKCZvbGRUZW1wbGF0ZUltYWdlKTsKKyAgZ19mcmVlIChvbGRUZW1wbGF0ZUZpbGVuYW1lKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI1Niw0MiArMjc2LDYgQEAKIAogLyogR3N0RWxlbWVudCB2bWV0aG9kIGltcGxlbWVudGF0aW9ucyAqLwogCi0vKiB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGxpbmsgd2l0aCBvdGhlciBlbGVtZW50cyAqLwotc3RhdGljIGdib29sZWFuCi1nc3RfdGVtcGxhdGVfbWF0Y2hfaGFuZGxlX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdEV2ZW50ICogZXZlbnQpCi17Ci0gIEdzdFRlbXBsYXRlTWF0Y2ggKmZpbHRlcjsKLSAgR3N0VmlkZW9JbmZvIGluZm87Ci0gIGdib29sZWFuIHJlcyA9IFRSVUU7Ci0KLSAgZmlsdGVyID0gR1NUX1RFTVBMQVRFX01BVENIIChwYXJlbnQpOwotICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKLSAgICBjYXNlIEdTVF9FVkVOVF9DQVBTOgotICAgIHsKLSAgICAgIEdzdENhcHMgKmNhcHM7Ci0gICAgICBnc3RfZXZlbnRfcGFyc2VfY2FwcyAoZXZlbnQsICZjYXBzKTsKLSAgICAgIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluZm8sIGNhcHMpOwotCi0gICAgICBpZiAoZmlsdGVyLT5jdkltYWdlKSB7Ci0gICAgICAgIGN2UmVsZWFzZUltYWdlSGVhZGVyICgmZmlsdGVyLT5jdkltYWdlKTsKLSAgICAgIH0KLSAgICAgIGZpbHRlci0+Y3ZJbWFnZSA9Ci0gICAgICAgICAgY3ZDcmVhdGVJbWFnZUhlYWRlciAoY3ZTaXplIChpbmZvLndpZHRoLCBpbmZvLmhlaWdodCksIElQTF9ERVBUSF84VSwKLSAgICAgICAgICAzKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXMgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7Ci0KLSAgcmV0dXJuIHJlczsKLQotCi19Ci0KIHN0YXRpYyB2b2lkCiBnc3RfdGVtcGxhdGVfbWF0Y2hfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCiB7CkBAIC0yOTksOSArMjgzLDcgQEAKICAgZmlsdGVyID0gR1NUX1RFTVBMQVRFX01BVENIIChvYmplY3QpOwogCiAgIGdfZnJlZSAoZmlsdGVyLT50ZW1wbCk7Ci0gIGlmIChmaWx0ZXItPmN2SW1hZ2UpIHsKLSAgICBjdlJlbGVhc2VJbWFnZUhlYWRlciAoJmZpbHRlci0+Y3ZJbWFnZSk7Ci0gIH0KKwogICBpZiAoZmlsdGVyLT5jdkRpc3RJbWFnZSkgewogICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkRpc3RJbWFnZSk7CiAgIH0KQEAgLTMxMiw0NSArMjk0LDU3IEBACiAgIEdfT0JKRUNUX0NMQVNTIChnc3RfdGVtcGxhdGVfbWF0Y2hfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7CiB9CiAKK3N0YXRpYyB2b2lkCitnc3RfdGVtcGxhdGVfbWF0Y2hfbWF0Y2ggKElwbEltYWdlICogaW5wdXQsIElwbEltYWdlICogdGVtcGwsCisgICAgSXBsSW1hZ2UgKiBkaXN0X2ltYWdlLCBkb3VibGUgKmJlc3RfcmVzLCBDdlBvaW50ICogYmVzdF9wb3MsIGludCBtZXRob2QpCit7CisgIGRvdWJsZSBkaXN0X21pbiA9IDAsIGRpc3RfbWF4ID0gMDsKKyAgQ3ZQb2ludCBtaW5fcG9zLCBtYXhfcG9zOworICBjdk1hdGNoVGVtcGxhdGUgKGlucHV0LCB0ZW1wbCwgZGlzdF9pbWFnZSwgbWV0aG9kKTsKKyAgY3ZNaW5NYXhMb2MgKGRpc3RfaW1hZ2UsICZkaXN0X21pbiwgJmRpc3RfbWF4LCAmbWluX3BvcywgJm1heF9wb3MsIE5VTEwpOworICBpZiAoKENWX1RNX1NRRElGRl9OT1JNRUQgPT0gbWV0aG9kKSB8fCAoQ1ZfVE1fU1FESUZGID09IG1ldGhvZCkpIHsKKyAgICAqYmVzdF9yZXMgPSBkaXN0X21pbjsKKyAgICAqYmVzdF9wb3MgPSBtaW5fcG9zOworICAgIGlmIChDVl9UTV9TUURJRkZfTk9STUVEID09IG1ldGhvZCkgeworICAgICAgKmJlc3RfcmVzID0gMSAtICpiZXN0X3JlczsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgKmJlc3RfcmVzID0gZGlzdF9tYXg7CisgICAgKmJlc3RfcG9zID0gbWF4X3BvczsKKyAgfQorfQorCiAvKiBjaGFpbiBmdW5jdGlvbgogICogdGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBhY3R1YWwgcHJvY2Vzc2luZwogICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X3RlbXBsYXRlX21hdGNoX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmKQorZ3N0X3RlbXBsYXRlX21hdGNoX3RyYW5zZm9ybV9pcCAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiBiYXNlLCBHc3RCdWZmZXIgKiBidWYsCisgICAgSXBsSW1hZ2UgKiBpbWcpCiB7CiAgIEdzdFRlbXBsYXRlTWF0Y2ggKmZpbHRlcjsKICAgQ3ZQb2ludCBiZXN0X3BvczsKICAgZG91YmxlIGJlc3RfcmVzOwotICBHc3RNYXBJbmZvIGluZm87CiAgIEdzdE1lc3NhZ2UgKm0gPSBOVUxMOwogCi0gIGZpbHRlciA9IEdTVF9URU1QTEFURV9NQVRDSCAocGFyZW50KTsKKyAgZmlsdGVyID0gR1NUX1RFTVBMQVRFX01BVENIIChiYXNlKTsKIAotICBpZiAoKCFmaWx0ZXIpIHx8ICghYnVmKSkgewotICAgIHJldHVybiBHU1RfRkxPV19PSzsKLSAgfQogICBHU1RfTE9HX09CSkVDVCAoZmlsdGVyLCAiQnVmZmVyIHNpemUgJXUiLCAoZ3VpbnQpIGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZikpOwogCi0gIGJ1ZiA9IGdzdF9idWZmZXJfbWFrZV93cml0YWJsZSAoYnVmKTsKLSAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJmluZm8sIEdTVF9NQVBfUkVBRFdSSVRFKTsKLSAgZmlsdGVyLT5jdkltYWdlLT5pbWFnZURhdGEgPSAoY2hhciAqKSBpbmZvLmRhdGE7Ci0KICAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXIpOwogICBpZiAoZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UgJiYgIWZpbHRlci0+Y3ZEaXN0SW1hZ2UpIHsKLSAgICBpZiAoZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UtPndpZHRoID4gZmlsdGVyLT5jdkltYWdlLT53aWR0aCkgeworICAgIGlmIChmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZS0+d2lkdGggPiBpbWctPndpZHRoKSB7CiAgICAgICBHU1RfV0FSTklORyAoIlRlbXBsYXRlIEltYWdlIGlzIHdpZGVyIHRoYW4gaW5wdXQgaW1hZ2UiKTsKLSAgICB9IGVsc2UgaWYgKGZpbHRlci0+Y3ZUZW1wbGF0ZUltYWdlLT5oZWlnaHQgPiBmaWx0ZXItPmN2SW1hZ2UtPmhlaWdodCkgeworICAgIH0gZWxzZSBpZiAoZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UtPmhlaWdodCA+IGltZy0+aGVpZ2h0KSB7CiAgICAgICBHU1RfV0FSTklORyAoIlRlbXBsYXRlIEltYWdlIGlzIHRhbGxlciB0aGFuIGlucHV0IGltYWdlIik7CiAgICAgfSBlbHNlIHsKIAogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmlsdGVyLCAiY3ZDcmVhdGVJbWFnZSAoU2l6ZSglZC0lZCsxLCVkKSAlZCwgJWQpIiwKLSAgICAgICAgICBmaWx0ZXItPmN2SW1hZ2UtPndpZHRoLCBmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZS0+d2lkdGgsCi0gICAgICAgICAgZmlsdGVyLT5jdkltYWdlLT5oZWlnaHQgLSBmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZS0+aGVpZ2h0ICsgMSwKLSAgICAgICAgICBJUExfREVQVEhfMzJGLCAxKTsKKyAgICAgICAgICBpbWctPndpZHRoLCBmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZS0+d2lkdGgsCisgICAgICAgICAgaW1nLT5oZWlnaHQgLSBmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZS0+aGVpZ2h0ICsgMSwgSVBMX0RFUFRIXzMyRiwgMSk7CiAgICAgICBmaWx0ZXItPmN2RGlzdEltYWdlID0KLSAgICAgICAgICBjdkNyZWF0ZUltYWdlIChjdlNpemUgKGZpbHRlci0+Y3ZJbWFnZS0+d2lkdGggLQorICAgICAgICAgIGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAoaW1nLT53aWR0aCAtCiAgICAgICAgICAgICAgIGZpbHRlci0+Y3ZUZW1wbGF0ZUltYWdlLT53aWR0aCArIDEsCi0gICAgICAgICAgICAgIGZpbHRlci0+Y3ZJbWFnZS0+aGVpZ2h0IC0gZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UtPmhlaWdodCArIDEpLAorICAgICAgICAgICAgICBpbWctPmhlaWdodCAtIGZpbHRlci0+Y3ZUZW1wbGF0ZUltYWdlLT5oZWlnaHQgKyAxKSwKICAgICAgICAgICBJUExfREVQVEhfMzJGLCAxKTsKICAgICAgIGlmICghZmlsdGVyLT5jdkRpc3RJbWFnZSkgewogICAgICAgICBHU1RfV0FSTklORyAoIkNvdWxkbid0IGNyZWF0ZSBkaXN0IGltYWdlLiIpOwpAQCAtMzYwLDcgKzM1NCw3IEBACiAgIGlmIChmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZSAmJiBmaWx0ZXItPmN2RGlzdEltYWdlKSB7CiAgICAgR3N0U3RydWN0dXJlICpzOwogCi0gICAgZ3N0X3RlbXBsYXRlX21hdGNoX21hdGNoIChmaWx0ZXItPmN2SW1hZ2UsIGZpbHRlci0+Y3ZUZW1wbGF0ZUltYWdlLAorICAgIGdzdF90ZW1wbGF0ZV9tYXRjaF9tYXRjaCAoaW1nLCBmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZSwKICAgICAgICAgZmlsdGVyLT5jdkRpc3RJbWFnZSwgJmJlc3RfcmVzLCAmYmVzdF9wb3MsIGZpbHRlci0+bWV0aG9kKTsKIAogICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoInRlbXBsYXRlX21hdGNoIiwKQEAgLTM5MCw3ICszODQsNyBAQAogCiAgICAgICBjb3JuZXIueCArPSBmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZS0+d2lkdGg7CiAgICAgICBjb3JuZXIueSArPSBmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZS0+aGVpZ2h0OwotICAgICAgY3ZSZWN0YW5nbGUgKGZpbHRlci0+Y3ZJbWFnZSwgYmVzdF9wb3MsIGNvcm5lciwgY29sb3IsIDMsIDgsIDApOworICAgICAgY3ZSZWN0YW5nbGUgKGltZywgYmVzdF9wb3MsIGNvcm5lciwgY29sb3IsIDMsIDgsIDApOwogICAgIH0KIAogICB9CkBAIC0zOTksNjkgKzM5Myw5IEBACiAgIGlmIChtKSB7CiAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgbSk7CiAgIH0KLSAgcmV0dXJuIGdzdF9wYWRfcHVzaCAoZmlsdGVyLT5zcmNwYWQsIGJ1Zik7CisgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIAotCi0KLXN0YXRpYyB2b2lkCi1nc3RfdGVtcGxhdGVfbWF0Y2hfbWF0Y2ggKElwbEltYWdlICogaW5wdXQsIElwbEltYWdlICogdGVtcGwsCi0gICAgSXBsSW1hZ2UgKiBkaXN0X2ltYWdlLCBkb3VibGUgKmJlc3RfcmVzLCBDdlBvaW50ICogYmVzdF9wb3MsIGludCBtZXRob2QpCi17Ci0gIGRvdWJsZSBkaXN0X21pbiA9IDAsIGRpc3RfbWF4ID0gMDsKLSAgQ3ZQb2ludCBtaW5fcG9zLCBtYXhfcG9zOwotICBjdk1hdGNoVGVtcGxhdGUgKGlucHV0LCB0ZW1wbCwgZGlzdF9pbWFnZSwgbWV0aG9kKTsKLSAgY3ZNaW5NYXhMb2MgKGRpc3RfaW1hZ2UsICZkaXN0X21pbiwgJmRpc3RfbWF4LCAmbWluX3BvcywgJm1heF9wb3MsIE5VTEwpOwotICBpZiAoKENWX1RNX1NRRElGRl9OT1JNRUQgPT0gbWV0aG9kKSB8fCAoQ1ZfVE1fU1FESUZGID09IG1ldGhvZCkpIHsKLSAgICAqYmVzdF9yZXMgPSBkaXN0X21pbjsKLSAgICAqYmVzdF9wb3MgPSBtaW5fcG9zOwotICAgIGlmIChDVl9UTV9TUURJRkZfTk9STUVEID09IG1ldGhvZCkgewotICAgICAgKmJlc3RfcmVzID0gMSAtICpiZXN0X3JlczsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgKmJlc3RfcmVzID0gZGlzdF9tYXg7Ci0gICAgKmJlc3RfcG9zID0gbWF4X3BvczsKLSAgfQotfQotCi0KLS8qIFdlIHRha2Ugb3duZXJzaGlwIG9mIHRlbXBsYXRlIGhlcmUgKi8KLXN0YXRpYyB2b2lkCi1nc3RfdGVtcGxhdGVfbWF0Y2hfbG9hZF90ZW1wbGF0ZSAoR3N0VGVtcGxhdGVNYXRjaCAqIGZpbHRlciwgZ2NoYXIgKiB0ZW1wbCkKLXsKLSAgZ2NoYXIgKm9sZFRlbXBsYXRlRmlsZW5hbWUgPSBOVUxMOwotICBJcGxJbWFnZSAqb2xkVGVtcGxhdGVJbWFnZSA9IE5VTEwsICpuZXdUZW1wbGF0ZUltYWdlID0gTlVMTCwgKm9sZERpc3RJbWFnZSA9Ci0gICAgICBOVUxMOwotCi0gIGlmICh0ZW1wbCkgewotICAgIG5ld1RlbXBsYXRlSW1hZ2UgPSBjdkxvYWRJbWFnZSAodGVtcGwsIENWX0xPQURfSU1BR0VfQ09MT1IpOwotICAgIGlmICghbmV3VGVtcGxhdGVJbWFnZSkgewotICAgICAgLyogVW5mb3J0dW5hdGVseSBPcGVuQ1YgZG9lc24ndCBzZWVtIHRvIHByb3ZpZGUgYW55IHdheSBvZiBmaW5kaW5nIG91dAotICAgICAgICAgd2h5IHRoZSBpbWFnZSBsb2FkIGZhaWxlZCwgc28gd2UgY2FuJ3QgYmUgbW9yZSBzcGVjaWZpYyB0aGFuIEZBSUxFRDogKi8KLSAgICAgIEdTVF9FTEVNRU5UX1dBUk5JTkcgKGZpbHRlciwgUkVTT1VSQ0UsIEZBSUxFRCwKLSAgICAgICAgICAoXygiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIikpLAotICAgICAgICAgICgiV2hpbGUgYXR0ZW1wdGluZyB0byBsb2FkIHRlbXBsYXRlICclcyciLCB0ZW1wbCkpOwotICAgICAgZ19mcmVlICh0ZW1wbCk7Ci0gICAgICB0ZW1wbCA9IE5VTEw7Ci0gICAgfQotICB9Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXIpOwotICBvbGRUZW1wbGF0ZUZpbGVuYW1lID0gZmlsdGVyLT50ZW1wbDsKLSAgZmlsdGVyLT50ZW1wbCA9IHRlbXBsOwotICBvbGRUZW1wbGF0ZUltYWdlID0gZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2U7Ci0gIGZpbHRlci0+Y3ZUZW1wbGF0ZUltYWdlID0gbmV3VGVtcGxhdGVJbWFnZTsKLSAgb2xkRGlzdEltYWdlID0gZmlsdGVyLT5jdkRpc3RJbWFnZTsKLSAgLyogVGhpcyB3aWxsIGJlIHJlY3JlYXRlZCBpbiB0aGUgY2hhaW4gZnVuY3Rpb24gYXMgcmVxdWlyZWQ6ICovCi0gIGZpbHRlci0+Y3ZEaXN0SW1hZ2UgPSBOVUxMOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyKTsKLQotICBjdlJlbGVhc2VJbWFnZSAoJm9sZERpc3RJbWFnZSk7Ci0gIGN2UmVsZWFzZUltYWdlICgmb2xkVGVtcGxhdGVJbWFnZSk7Ci0gIGdfZnJlZSAob2xkVGVtcGxhdGVGaWxlbmFtZSk7Ci19Ci0KLQogLyogZW50cnkgcG9pbnQgdG8gaW5pdGlhbGl6ZSB0aGUgcGx1Zy1pbgogICogaW5pdGlhbGl6ZSB0aGUgcGx1Zy1pbiBpdHNlbGYKICAqIHJlZ2lzdGVyIHRoZSBlbGVtZW50IGZhY3RvcmllcyBhbmQgb3RoZXIgZmVhdHVyZXMKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5oIGIvZXh0L29wZW5jdi9nc3R0ZW1wbGF0ZW1hdGNoLmgKaW5kZXggYjZjMDQyNi4uZTdjMDIwMiAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3R0ZW1wbGF0ZW1hdGNoLmgKKysrIGIvZXh0L29wZW5jdi9nc3R0ZW1wbGF0ZW1hdGNoLmgKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1pY2hhZWwgU2hlbGRvbiA8bWlrZUBtaWtlYXNvZnQuY29tPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00Niw3ICs0Niw3IEBACiAjaWZuZGVmIF9fR1NUX1RFTVBMQVRFX01BVENIX0hfXwogI2RlZmluZSBfX0dTVF9URU1QTEFURV9NQVRDSF9IX18KIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3RvcGVuY3Z2aWRlb2ZpbHRlci5oPgogCiAjaWZkZWYgSEFWRV9ISUdIR1VJX0gKICNpbmNsdWRlIDxoaWdoZ3VpLmg+ICAgICAgICAgICAgLy8gaW5jbHVkZXMgaGlnaEdVSSBkZWZpbml0aW9ucwpAQCAtNzIsMjEgKzcyLDE5IEBACiAKIHN0cnVjdCBfR3N0VGVtcGxhdGVNYXRjaAogewotICBHc3RFbGVtZW50IGVsZW1lbnQ7Ci0KLSAgR3N0UGFkICpzaW5rcGFkLCAqc3JjcGFkOworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBlbGVtZW50OwogCiAgIGdpbnQgbWV0aG9kOwogICBnYm9vbGVhbiBkaXNwbGF5OwogCiAgIGdjaGFyICp0ZW1wbDsKIAotICBJcGxJbWFnZSAqY3ZJbWFnZSwgKmN2R3JheSwgKmN2VGVtcGxhdGVJbWFnZSwgKmN2RGlzdEltYWdlOworICBJcGxJbWFnZSAqY3ZHcmF5LCAqY3ZUZW1wbGF0ZUltYWdlLCAqY3ZEaXN0SW1hZ2U7CiB9OwogCiBzdHJ1Y3QgX0dzdFRlbXBsYXRlTWF0Y2hDbGFzcwogewotICBHc3RFbGVtZW50Q2xhc3MgcGFyZW50X2NsYXNzOworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzIHBhcmVudF9jbGFzczsKIH07CiAKIEdUeXBlIGdzdF90ZW1wbGF0ZV9tYXRjaF9nZXRfdHlwZSAodm9pZCk7CmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdHRleHRvdmVybGF5LmMgYi9leHQvb3BlbmN2L2dzdHRleHRvdmVybGF5LmNwcApzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBleHQvb3BlbmN2L2dzdHRleHRvdmVybGF5LmMKcmVuYW1lIHRvIGV4dC9vcGVuY3YvZ3N0dGV4dG92ZXJsYXkuY3BwCmluZGV4IDlmN2U0YjcuLjcwMjViMzYgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0dGV4dG92ZXJsYXkuYworKysgYi9leHQvb3BlbmN2L2dzdHRleHRvdmVybGF5LmNwcApAQCAtMyw3ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNSBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNSBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgU3JlZXJlbmogQmFsYWNoYW5kcmFuIDxic3JlZXJlbmpAZ21haWwuY29tPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC02MCw5ICs2MCw2IEBACiAjICBpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi0jaW5jbHVkZSAiZ3N0b3BlbmN2dXRpbHMuaCIKICNpbmNsdWRlICJnc3R0ZXh0b3ZlcmxheS5oIgogCiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9kZWJ1Zyk7CkBAIC0xMTUsMTcgKzExMiwxNiBAQAogICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoIlJHQiIpKQogICAgICk7CiAKLUdfREVGSU5FX1RZUEUgKEdzdE9wZW5jdlRleHRPdmVybGF5LCBnc3Rfb3BlbmN2X3RleHRfb3ZlcmxheSwgR1NUX1RZUEVfRUxFTUVOVCk7CitHX0RFRklORV9UWVBFIChHc3RPcGVuY3ZUZXh0T3ZlcmxheSwgZ3N0X29wZW5jdl90ZXh0X292ZXJsYXksCisgICAgR1NUX1RZUEVfT1BFTkNWX1ZJREVPX0ZJTFRFUik7CiAKIHN0YXRpYyB2b2lkIGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKICAgICBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIHN0YXRpYyB2b2lkIGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKICAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIAotc3RhdGljIGdib29sZWFuIGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X2hhbmRsZV9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsCi0gICAgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KTsKLXN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X2NoYWluIChHc3RQYWQgKiBwYWQsCi0gICAgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBidWYpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X29wZW5jdl90ZXh0X292ZXJsYXlfdHJhbnNmb3JtX2lwIChHc3RPcGVuY3ZWaWRlb0ZpbHRlcgorICAgICogZmlsdGVyLCBHc3RCdWZmZXIgKiBidWYsIElwbEltYWdlICogaW1nKTsKIAogLyogQ2xlYW4gdXAgKi8KIHN0YXRpYyB2b2lkCkBAIC0xMzMsMTAgKzEyOSw2IEBACiB7CiAgIEdzdE9wZW5jdlRleHRPdmVybGF5ICpmaWx0ZXIgPSBHU1RfT1BFTkNWX1RFWFRfT1ZFUkxBWSAob2JqKTsKIAotICBpZiAoZmlsdGVyLT5jdkltYWdlKSB7Ci0gICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2SW1hZ2UpOwotICB9Ci0KICAgZ19mcmVlIChmaWx0ZXItPnRleHRidWYpOwogCiAgIEdfT0JKRUNUX0NMQVNTIChnc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqKTsKQEAgLTE0NywxMiArMTM5LDE2IEBACiBnc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9jbGFzc19pbml0IChHc3RPcGVuY3ZUZXh0T3ZlcmxheUNsYXNzICoga2xhc3MpCiB7CiAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKLQorICBHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzICpnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzOwogICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKIAorICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKICAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPQogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X2ZpbmFsaXplKTsKKyAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcyA9IChHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzICopIGtsYXNzOworCisgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MtPmN2X3RyYW5zX2lwX2Z1bmMgPQorICAgICAgZ3N0X29wZW5jdl90ZXh0X292ZXJsYXlfdHJhbnNmb3JtX2lwOwogCiAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X3NldF9wcm9wZXJ0eTsKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X29wZW5jdl90ZXh0X292ZXJsYXlfZ2V0X3Byb3BlcnR5OwpAQCAtMTYwLDQ3ICsxNTYsNTUgQEAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9URVhULAogICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoInRleHQiLCAidGV4dCIsCiAgICAgICAgICAgIlRleHQgdG8gYmUgZGlzcGxheS4iLCBERUZBVUxUX1BST1BfVEVYVCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9YUE9TLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoInhwb3MiLCAiaG9yaXpvbnRhbCBwb3NpdGlvbiIsCiAgICAgICAgICAgIlNldHMgdGhlIEhvcml6b250YWwgcG9zaXRpb24iLCAwLCBHX01BWElOVCwKLSAgICAgICAgICBERUZBVUxUX1BST1BfWFBPUywgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgREVGQVVMVF9QUk9QX1hQT1MsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfWVBPUywKICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJ5cG9zIiwgInZlcnRpY2FsIHBvc2l0aW9uIiwKICAgICAgICAgICAiU2V0cyB0aGUgVmVydGljYWwgcG9zaXRpb24iLCAwLCBHX01BWElOVCwKLSAgICAgICAgICBERUZBVUxUX1BST1BfWVBPUywgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgREVGQVVMVF9QUk9QX1lQT1MsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfVEhJQ0tORVNTLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoInRoaWNrbmVzcyIsICJmb250IHRoaWNrbmVzcyIsCiAgICAgICAgICAgIlNldHMgdGhlIFRoaWNrbmVzcyBvZiBGb250IiwgMCwgR19NQVhJTlQsCi0gICAgICAgICAgREVGQVVMVF9QUk9QX1RISUNLTkVTUywgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgREVGQVVMVF9QUk9QX1RISUNLTkVTUywKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9DT0xPUl9SLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImNvbG9yUiIsICJjb2xvciAtUmVkICIsCiAgICAgICAgICAgIlNldHMgdGhlIGNvbG9yIC1SIiwgMCwgMjU1LAotICAgICAgICAgIERFRkFVTFRfUFJPUF9DT0xPUiwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgREVGQVVMVF9QUk9QX0NPTE9SLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0NPTE9SX0csCiAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgiY29sb3JHIiwgImNvbG9yIC1HcmVlbiIsCiAgICAgICAgICAgIlNldHMgdGhlIGNvbG9yIC1HIiwgMCwgMjU1LAotICAgICAgICAgIERFRkFVTFRfUFJPUF9DT0xPUiwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgREVGQVVMVF9QUk9QX0NPTE9SLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0NPTE9SX0IsCiAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgiY29sb3JCIiwgImNvbG9yIC1CbHVlIiwKICAgICAgICAgICAiU2V0cyB0aGUgY29sb3IgLUIiLCAwLCAyNTUsCi0gICAgICAgICAgREVGQVVMVF9QUk9QX0NPTE9SLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICBERUZBVUxUX1BST1BfQ09MT1IsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfSEVJR0hULAogICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoImhlaWdodCIsICJIZWlnaHQiLAogICAgICAgICAgICJTZXRzIHRoZSBoZWlnaHQgb2YgZm9udHMiLCAxLjAsIDUuMCwKLSAgICAgICAgICBERUZBVUxUX0hFSUdIVCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgREVGQVVMVF9IRUlHSFQsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfV0lEVEgsCiAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgid2lkdGgiLCAiV2lkdGgiLAogICAgICAgICAgICJTZXRzIHRoZSB3aWR0aCBvZiBmb250cyIsIDEuMCwgNS4wLAotICAgICAgICAgIERFRkFVTFRfV0lEVEgsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIERFRkFVTFRfV0lEVEgsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCiAgICAgICAib3BlbmN2dGV4dG92ZXJsYXkiLApAQCAtMjIyLDIwICsyMjYsNiBAQAogc3RhdGljIHZvaWQKIGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X2luaXQgKEdzdE9wZW5jdlRleHRPdmVybGF5ICogZmlsdGVyKQogewotICBmaWx0ZXItPnNpbmtwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNpbmtfZmFjdG9yeSwgInNpbmsiKTsKLSAgR1NUX1BBRF9TRVRfUFJPWFlfQ0FQUyAoZmlsdGVyLT5zaW5rcGFkKTsKLSAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKGZpbHRlciksIGZpbHRlci0+c2lua3BhZCk7Ci0KLSAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKGZpbHRlci0+c2lua3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9oYW5kbGVfc2lua19ldmVudCkpOwotCi0gIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uIChmaWx0ZXItPnNpbmtwYWQsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X29wZW5jdl90ZXh0X292ZXJsYXlfY2hhaW4pKTsKLQotICBmaWx0ZXItPnNyY3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmc3JjX2ZhY3RvcnksICJzcmMiKTsKLSAgR1NUX1BBRF9TRVRfUFJPWFlfQ0FQUyAoZmlsdGVyLT5zcmNwYWQpOwotICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgZmlsdGVyLT5zcmNwYWQpOwotCiAgIGZpbHRlci0+dGV4dGJ1ZiA9IGdfc3RyZHVwIChERUZBVUxUX1BST1BfVEVYVCk7CiAgIGZpbHRlci0+d2lkdGggPSBERUZBVUxUX1BST1BfV0lEVEg7CiAgIGZpbHRlci0+aGVpZ2h0ID0gREVGQVVMVF9QUk9QX0hFSUdIVDsKQEAgLTI0NSw2ICsyMzUsOSBAQAogICBmaWx0ZXItPmNvbG9yUiA9IERFRkFVTFRfUFJPUF9DT0xPUjsKICAgZmlsdGVyLT5jb2xvckcgPSBERUZBVUxUX1BST1BfQ09MT1I7CiAgIGZpbHRlci0+Y29sb3JCID0gREVGQVVMVF9QUk9QX0NPTE9SOworCisgIGdzdF9vcGVuY3ZfdmlkZW9fZmlsdGVyX3NldF9pbl9wbGFjZSAoR1NUX09QRU5DVl9WSURFT19GSUxURVJfQ0FTVCAoZmlsdGVyKSwKKyAgICAgIFRSVUUpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMzMwLDcxICszMjMsMjIgQEAKICAgfQogfQogCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X2hhbmRsZV9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RFdmVudCAqIGV2ZW50KQotewotICBHc3RPcGVuY3ZUZXh0T3ZlcmxheSAqZmlsdGVyOwotICBnaW50IHdpZHRoLCBoZWlnaHQ7Ci0gIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwotICBnYm9vbGVhbiByZXMgPSBUUlVFOwotCi0gIGZpbHRlciA9IEdTVF9PUEVOQ1ZfVEVYVF9PVkVSTEFZIChwYXJlbnQpOwotCi0gIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgewotICAgIGNhc2UgR1NUX0VWRU5UX0NBUFM6Ci0gICAgewotICAgICAgR3N0Q2FwcyAqY2FwczsKLSAgICAgIGdzdF9ldmVudF9wYXJzZV9jYXBzIChldmVudCwgJmNhcHMpOwotCi0gICAgICBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLSAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAid2lkdGgiLCAmd2lkdGgpOwotICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJoZWlnaHQiLCAmaGVpZ2h0KTsKLQotICAgICAgaWYgKGZpbHRlci0+Y3ZJbWFnZSkgewotICAgICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZJbWFnZSk7Ci0gICAgICB9Ci0gICAgICBmaWx0ZXItPmN2SW1hZ2UgPSBjdkNyZWF0ZUltYWdlIChjdlNpemUgKHdpZHRoLCBoZWlnaHQpLCBJUExfREVQVEhfOFUsIDMpOwotCi0gICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmVzID0gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOwotICByZXR1cm4gcmVzOwotfQotCi0KIC8qIGNoYWluIGZ1bmN0aW9uCiAgKiB0aGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGFjdHVhbCBwcm9jZXNzaW5nCiAgKi8KIHN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCi0gICAgR3N0QnVmZmVyICogYnVmKQorZ3N0X29wZW5jdl90ZXh0X292ZXJsYXlfdHJhbnNmb3JtX2lwIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIGJhc2UsCisgICAgR3N0QnVmZmVyICogYnVmLCBJcGxJbWFnZSAqIGltZykKIHsKLSAgR3N0T3BlbmN2VGV4dE92ZXJsYXkgKmZpbHRlcjsKLSAgR3N0TWFwSW5mbyBtYXBfaW5mbzsKLSAgZ3VpbnQ4ICpkYXRhOwotCi0gIGZpbHRlciA9IEdTVF9PUEVOQ1ZfVEVYVF9PVkVSTEFZIChwYXJlbnQpOwotCi0gIGdzdF9idWZmZXJfbWFwIChidWYsICZtYXBfaW5mbywgR1NUX01BUF9SRUFEKTsKLSAgZGF0YSA9IG1hcF9pbmZvLmRhdGE7Ci0KLSAgZmlsdGVyLT5jdkltYWdlLT5pbWFnZURhdGEgPSAoY2hhciAqKSBkYXRhOworICBHc3RPcGVuY3ZUZXh0T3ZlcmxheSAqZmlsdGVyID0gR1NUX09QRU5DVl9URVhUX09WRVJMQVkgKGJhc2UpOwogCiAgIGN2SW5pdEZvbnQgKCYoZmlsdGVyLT5mb250KSwgQ1ZfRk9OVF9WRUNUT1IwLCBmaWx0ZXItPndpZHRoLCBmaWx0ZXItPmhlaWdodCwKICAgICAgIDAsIGZpbHRlci0+dGhpY2tuZXNzLCAwKTsKLQotICBidWYgPSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUgKGJ1Zik7Ci0gIGN2UHV0VGV4dCAoZmlsdGVyLT5jdkltYWdlLCBmaWx0ZXItPnRleHRidWYsIGN2UG9pbnQgKGZpbHRlci0+eHBvcywKKyAgY3ZQdXRUZXh0IChpbWcsIGZpbHRlci0+dGV4dGJ1ZiwgY3ZQb2ludCAoZmlsdGVyLT54cG9zLAogICAgICAgICAgIGZpbHRlci0+eXBvcyksICYoZmlsdGVyLT5mb250KSwgY3ZTY2FsYXIgKGZpbHRlci0+Y29sb3JSLAogICAgICAgICAgIGZpbHRlci0+Y29sb3JHLCBmaWx0ZXItPmNvbG9yQiwgMCkpOwogCi0gIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZiwgJm1hcF9pbmZvKTsKLSAgcmV0dXJuIGdzdF9wYWRfcHVzaCAoZmlsdGVyLT5zcmNwYWQsIGJ1Zik7CisgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIAogCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdHRleHRvdmVybGF5LmggYi9leHQvb3BlbmN2L2dzdHRleHRvdmVybGF5LmgKaW5kZXggZTkyYWIwNy4uNjVhN2Q3NSAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5oCisrKyBiL2V4dC9vcGVuY3YvZ3N0dGV4dG92ZXJsYXkuaApAQCAtMyw3ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNSBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNSBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgU3JlZXJlbmogQmFsYWNoYW5kcmFuIDxic3JlZXJlbmpAZ21haWwuY29tPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00Niw4ICs0Niw3IEBACiAjaWZuZGVmIF9fR1NUX09QRU5DVl9URVhUX09WRVJMQVlfSF9fCiAjZGVmaW5lIF9fR1NUX09QRU5DVl9URVhUX09WRVJMQVlfSF9fCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSAiZ3N0b3BlbmN2dXRpbHMuaCIKKyNpbmNsdWRlIDxnc3RvcGVuY3Z2aWRlb2ZpbHRlci5oPgogI2luY2x1ZGUgPG9wZW5jdjIvY29yZS9jb3JlX2MuaD4KIEdfQkVHSU5fREVDTFMKIApAQCAtNjgsMTIgKzY3LDkgQEAKIAogc3RydWN0IF9Hc3RPcGVuY3ZUZXh0T3ZlcmxheQogewotICBHc3RFbGVtZW50IGVsZW1lbnQ7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyIGVsZW1lbnQ7CiAKLSAgR3N0UGFkICpzaW5rcGFkLCAqc3JjcGFkOwotCi0gIElwbEltYWdlICpjdkltYWdlOwotICBDdkZvbnQgZm9udDsgIAorICBDdkZvbnQgZm9udDsKIAogICBnaW50IHhwb3M7CiAgIGdpbnQgeXBvczsKQEAgLTg1LDkgKzgxLDkgQEAKIAogfTsKIAotc3RydWN0IF9Hc3RPcGVuY3ZUZXh0T3ZlcmxheUNsYXNzIAorc3RydWN0IF9Hc3RPcGVuY3ZUZXh0T3ZlcmxheUNsYXNzCiB7Ci0gIEdzdEVsZW1lbnRDbGFzcyBwYXJlbnRfY2xhc3M7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgcGFyZW50X2NsYXNzOwogfTsKIAogR1R5cGUgZ3N0X29wZW5jdl90ZXh0X292ZXJsYXlfZ2V0X3R5cGUgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9tb3Rpb25jZWxsc193cmFwcGVyLmNwcCBiL2V4dC9vcGVuY3YvbW90aW9uY2VsbHNfd3JhcHBlci5jcHAKaW5kZXggZTk3OTRjZi4uOWJjZTgzOCAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9tb3Rpb25jZWxsc193cmFwcGVyLmNwcAorKysgYi9leHQvb3BlbmN2L21vdGlvbmNlbGxzX3dyYXBwZXIuY3BwCkBAIC01Niw2ICs1Niw5IEBACiBzdGF0aWMgaW50IGluc3RhbmNlQ291bnRlciA9IDA7CiBzdGF0aWMgYm9vbCBlbGVtZW50X2lkX3dhc19tYXggPSBmYWxzZTsKIAordmVjdG9yIDwgaW5zdGFuY2VPZk1DID4gbW90aW9uY2VsbHN2ZWN0b3I7Cit2ZWN0b3IgPCBpbnQgPiBtb3Rpb25jZWxsc2ZyZWVpZHM7CisKIE1vdGlvbkNlbGxzICptYzsKIGNoYXIgcF9zdHJbXSA9ICJpZHggZmFpbGVkIjsKIApkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9tb3Rpb25jZWxsc193cmFwcGVyLmggYi9leHQvb3BlbmN2L21vdGlvbmNlbGxzX3dyYXBwZXIuaAppbmRleCAxZmU1ZGMzLi5iNjg2OWExIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L21vdGlvbmNlbGxzX3dyYXBwZXIuaAorKysgYi9leHQvb3BlbmN2L21vdGlvbmNlbGxzX3dyYXBwZXIuaApAQCAtNTQsOCArNTQsNiBAQAogICBpbnQgaWQ7CiAgIE1vdGlvbkNlbGxzICptYzsKIH07Ci12ZWN0b3IgPCBpbnN0YW5jZU9mTUMgPiBtb3Rpb25jZWxsc3ZlY3RvcjsKLXZlY3RvciA8IGludCA+bW90aW9uY2VsbHNmcmVlaWRzOwogCiBpbnQgc2VhcmNoSWR4IChpbnQgcF9pZCk7CiBleHRlcm4gIkMiCmRpZmYgLS1naXQgYS9leHQvb3BlbmV4ci9NYWtlZmlsZS5pbiBiL2V4dC9vcGVuZXhyL01ha2VmaWxlLmluCmluZGV4IGE3MTViMDEuLjcxYWJiMzIgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuZXhyL01ha2VmaWxlLmluCisrKyBiL2V4dC9vcGVuZXhyL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI5NCw2ICsyOTMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMzMSw2ICszMzIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMzOSw3ICszNDIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNTgsOCArMzYwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM3NiwxNiArMzc5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQxMSw2ICs0MTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MzYsNiArNDQyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTM3LDYgKzU0NSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NTAsOCArNTU5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTY3LDYgKzU3NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MjQsMTYgKzYzMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY4NSw2ICs2OTYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjk1LDYgKzcwNyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcwNCw2ICs3MTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzQxLDcgKzc1Niw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L29wZW5oMjY0L01ha2VmaWxlLmluIGIvZXh0L29wZW5oMjY0L01ha2VmaWxlLmluCmluZGV4IGNhNzEwOWMuLjE4MzE2YzEgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuaDI2NC9NYWtlZmlsZS5pbgorKysgYi9leHQvb3BlbmgyNjQvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjk0LDYgKzI5Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzMxLDYgKzMzMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzM5LDcgKzM0Miw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM1OCw4ICszNjAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzc2LDE2ICszNzksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDExLDYgKzQxNSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQzNiw2ICs0NDIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MzcsNiArNTQ1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU1MCw4ICs1NTksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NjcsNiArNTc0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYyNCwxNiArNjMzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjg1LDYgKzY5Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02OTUsNiArNzA3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzA0LDYgKzcxNyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03NDEsNyArNzU2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvb3BlbmpwZWcvTWFrZWZpbGUuaW4gYi9leHQvb3BlbmpwZWcvTWFrZWZpbGUuaW4KaW5kZXggN2JmMTNhNy4uZDM3NzcxYSAxMDA2NDQKLS0tIGEvZXh0L29wZW5qcGVnL01ha2VmaWxlLmluCisrKyBiL2V4dC9vcGVuanBlZy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9vcGVubmkyL01ha2VmaWxlLmluIGIvZXh0L29wZW5uaTIvTWFrZWZpbGUuaW4KaW5kZXggZTgyYWM3Ni4uNDAyNzU5NSAxMDA2NDQKLS0tIGEvZXh0L29wZW5uaTIvTWFrZWZpbGUuaW4KKysrIGIvZXh0L29wZW5uaTIvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvb3B1cy9NYWtlZmlsZS5hbSBiL2V4dC9vcHVzL01ha2VmaWxlLmFtCmluZGV4IGQyMmM2NjQuLmM2YzFhODAgMTAwNjQ0Ci0tLSBhL2V4dC9vcHVzL01ha2VmaWxlLmFtCisrKyBiL2V4dC9vcHVzL01ha2VmaWxlLmFtCkBAIC0xLDE5ICsxLDIwIEBACi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RvcHVzLmxhCitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RvcHVzcGFyc2UubGEKIAotbGliZ3N0b3B1c19sYV9TT1VSQ0VTID0gZ3N0b3B1cy5jIGdzdG9wdXNkZWMuYyBnc3RvcHVzZW5jLmMgZ3N0b3B1c3BhcnNlLmMgZ3N0b3B1c2hlYWRlci5jIGdzdG9wdXNjb21tb24uYyBnc3RydHBvcHVzcGF5LmMgZ3N0cnRwb3B1c2RlcGF5LmMKLWxpYmdzdG9wdXNfbGFfQ0ZMQUdTID0gXAorbGliZ3N0b3B1c3BhcnNlX2xhX1NPVVJDRVMgPSBnc3RvcHVzLmMgZ3N0b3B1c3BhcnNlLmMgZ3N0b3B1c2hlYWRlci5jCitsaWJnc3RvcHVzcGFyc2VfbGFfQ0ZMQUdTID0gXAogICAgICAgICAtREdTVF9VU0VfVU5TVEFCTEVfQVBJIFwKIAkkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpIFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiAJJChHU1RfQ0ZMQUdTKSBcCiAJJChPUFVTX0NGTEFHUykKLWxpYmdzdG9wdXNfbGFfTElCQUREID0gXAorbGliZ3N0b3B1c3BhcnNlX2xhX0xJQkFERCA9IFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RhdWRpby0kKEdTVF9BUElfVkVSU0lPTikgXAotCS1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSAtbGdzdHJ0cC0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJLWxnc3RwYnV0aWxzLSQoR1NUX0FQSV9WRVJTSU9OKSBcCiAJJChHU1RfQkFTRV9MSUJTKSBcCiAJJChHU1RfTElCUykgXAogCSQoT1BVU19MSUJTKQotbGliZ3N0b3B1c19sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpICQoTElCTSkKLWxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKK2xpYmdzdG9wdXNwYXJzZV9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpICQoTElCTSkKK2xpYmdzdG9wdXNwYXJzZV9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQogCi1ub2luc3RfSEVBREVSUyA9IGdzdG9wdXNlbmMuaCBnc3RvcHVzZGVjLmggZ3N0b3B1c3BhcnNlLmggZ3N0b3B1c2hlYWRlci5oIGdzdG9wdXNjb21tb24uaCBnc3RydHBvcHVzcGF5LmggZ3N0cnRwb3B1c2RlcGF5LmgKK25vaW5zdF9IRUFERVJTID0gZ3N0b3B1c3BhcnNlLmggZ3N0b3B1c2hlYWRlci5oCmRpZmYgLS1naXQgYS9leHQvb3B1cy9NYWtlZmlsZS5pbiBiL2V4dC9vcHVzL01ha2VmaWxlLmluCmluZGV4IDhjMjU1ZDIuLjc0YTk1MmUgMTAwNjQ0Ci0tLSBhL2V4dC9vcHVzL01ha2VmaWxlLmluCisrKyBiL2V4dC9vcHVzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE2NCwyMyArMTYzLDIxIEBACiBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIKIExUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQotbGliZ3N0b3B1c19sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorbGliZ3N0b3B1c3BhcnNlX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpCi1hbV9saWJnc3RvcHVzX2xhX09CSkVDVFMgPSBsaWJnc3RvcHVzX2xhLWdzdG9wdXMubG8gXAotCWxpYmdzdG9wdXNfbGEtZ3N0b3B1c2RlYy5sbyBsaWJnc3RvcHVzX2xhLWdzdG9wdXNlbmMubG8gXAotCWxpYmdzdG9wdXNfbGEtZ3N0b3B1c3BhcnNlLmxvIGxpYmdzdG9wdXNfbGEtZ3N0b3B1c2hlYWRlci5sbyBcCi0JbGliZ3N0b3B1c19sYS1nc3RvcHVzY29tbW9uLmxvIGxpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c3BheS5sbyBcCi0JbGliZ3N0b3B1c19sYS1nc3RydHBvcHVzZGVwYXkubG8KLWxpYmdzdG9wdXNfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0b3B1c19sYV9PQkpFQ1RTKQorYW1fbGliZ3N0b3B1c3BhcnNlX2xhX09CSkVDVFMgPSBsaWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1cy5sbyBcCisJbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNwYXJzZS5sbyBcCisJbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNoZWFkZXIubG8KK2xpYmdzdG9wdXNwYXJzZV9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RvcHVzcGFyc2VfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKIGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9sdF8wID0gLS1zaWxlbnQKIGFtX192X2x0XzEgPSAKLWxpYmdzdG9wdXNfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCi0JJChsaWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rIFwKLQkkKENDTEQpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSBcCi0JJChsaWJnc3RvcHVzX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK2xpYmdzdG9wdXNwYXJzZV9sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKKwkkKGxpYmdzdG9wdXNwYXJzZV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayBcCisJJChDQ0xEKSAkKGxpYmdzdG9wdXNwYXJzZV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSBcCisJJChsaWJnc3RvcHVzcGFyc2VfbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAogQU1fVl9QID0gJChhbV9fdl9QX0BBTV9WQCkKIGFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfUF8wID0gZmFsc2UKQEAgLTIxNSw4ICsyMTIsOCBAQAogYW1fX3ZfQ0NMRF8gPSAkKGFtX192X0NDTERfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9DQ0xEXzAgPSBAZWNobyAiICBDQ0xEICAgICIgJEA7CiBhbV9fdl9DQ0xEXzEgPSAKLVNPVVJDRVMgPSAkKGxpYmdzdG9wdXNfbGFfU09VUkNFUykKLURJU1RfU09VUkNFUyA9ICQobGliZ3N0b3B1c19sYV9TT1VSQ0VTKQorU09VUkNFUyA9ICQobGliZ3N0b3B1c3BhcnNlX2xhX1NPVVJDRVMpCitESVNUX1NPVVJDRVMgPSAkKGxpYmdzdG9wdXNwYXJzZV9sYV9TT1VSQ0VTKQogYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCiAgIGNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAogICAgIG58bm98Tk8pIGZhbHNlOzsgXApAQCAtMjc5LDYgKzI3Niw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE2LDYgKzMxNSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI0LDcgKzMyNSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Myw4ICszNDMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYxLDE2ICszNjIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk2LDYgKzM5OCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMSw2ICs0MjUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjIsNiArNTI4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNSw4ICs1NDIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTIsNiArNTU3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOSwxNiArNjE2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcwLDYgKzY3OSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODAsNiArNjkwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg5LDYgKzcwMCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjYsNyArNzM5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NjYsMjUgKzc3OCwyNiBAQAogdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RvcHVzLmxhCi1saWJnc3RvcHVzX2xhX1NPVVJDRVMgPSBnc3RvcHVzLmMgZ3N0b3B1c2RlYy5jIGdzdG9wdXNlbmMuYyBnc3RvcHVzcGFyc2UuYyBnc3RvcHVzaGVhZGVyLmMgZ3N0b3B1c2NvbW1vbi5jIGdzdHJ0cG9wdXNwYXkuYyBnc3RydHBvcHVzZGVwYXkuYwotbGliZ3N0b3B1c19sYV9DRkxBR1MgPSBcCitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RvcHVzcGFyc2UubGEKK2xpYmdzdG9wdXNwYXJzZV9sYV9TT1VSQ0VTID0gZ3N0b3B1cy5jIGdzdG9wdXNwYXJzZS5jIGdzdG9wdXNoZWFkZXIuYworbGliZ3N0b3B1c3BhcnNlX2xhX0NGTEFHUyA9IFwKICAgICAgICAgLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCiAJJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAogCSQoR1NUX0NGTEFHUykgXAogCSQoT1BVU19DRkxBR1MpCiAKLWxpYmdzdG9wdXNfbGFfTElCQUREID0gXAorbGliZ3N0b3B1c3BhcnNlX2xhX0xJQkFERCA9IFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RhdWRpby0kKEdTVF9BUElfVkVSU0lPTikgXAotCS1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSAtbGdzdHJ0cC0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJLWxnc3RwYnV0aWxzLSQoR1NUX0FQSV9WRVJTSU9OKSBcCiAJJChHU1RfQkFTRV9MSUJTKSBcCiAJJChHU1RfTElCUykgXAogCSQoT1BVU19MSUJTKQogCi1saWJnc3RvcHVzX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykgJChMSUJNKQotbGliZ3N0b3B1c19sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQotbm9pbnN0X0hFQURFUlMgPSBnc3RvcHVzZW5jLmggZ3N0b3B1c2RlYy5oIGdzdG9wdXNwYXJzZS5oIGdzdG9wdXNoZWFkZXIuaCBnc3RvcHVzY29tbW9uLmggZ3N0cnRwb3B1c3BheS5oIGdzdHJ0cG9wdXNkZXBheS5oCitsaWJnc3RvcHVzcGFyc2VfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKSAkKExJQk0pCitsaWJnc3RvcHVzcGFyc2VfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKK25vaW5zdF9IRUFERVJTID0gZ3N0b3B1c3BhcnNlLmggZ3N0b3B1c2hlYWRlci5oCiBhbGw6IGFsbC1hbQogCiAuU1VGRklYRVM6CkBAIC04NTQsOCArODY3LDggQEAKIAkgIHJtIC1mICQke2xvY3N9OyBcCiAJfQogCi1saWJnc3RvcHVzLmxhOiAkKGxpYmdzdG9wdXNfbGFfT0JKRUNUUykgJChsaWJnc3RvcHVzX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RvcHVzX2xhX0RFUEVOREVOQ0lFUykgCi0JJChBTV9WX0NDTEQpJChsaWJnc3RvcHVzX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3RvcHVzX2xhX09CSkVDVFMpICQobGliZ3N0b3B1c19sYV9MSUJBREQpICQoTElCUykKK2xpYmdzdG9wdXNwYXJzZS5sYTogJChsaWJnc3RvcHVzcGFyc2VfbGFfT0JKRUNUUykgJChsaWJnc3RvcHVzcGFyc2VfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdG9wdXNwYXJzZV9sYV9ERVBFTkRFTkNJRVMpIAorCSQoQU1fVl9DQ0xEKSQobGliZ3N0b3B1c3BhcnNlX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3RvcHVzcGFyc2VfbGFfT0JKRUNUUykgJChsaWJnc3RvcHVzcGFyc2VfbGFfTElCQUREKSAkKExJQlMpCiAKIG1vc3RseWNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICouJChPQkpFWFQpCkBAIC04NjMsMTQgKzg3Niw5IEBACiBkaXN0Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi50YWIuYwogCi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzY29tbW9uLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzZGVjLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzZW5jLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzaGVhZGVyLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzcGFyc2UuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdHJ0cG9wdXNkZXBheS5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c3BheS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNoZWFkZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1c3BhcnNlLlBsb0BhbV9fcXVvdGVACiAKIC5jLm86CiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCkBAIC04OTYsNjEgKzkwNCwyNiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAogCi1saWJnc3RvcHVzX2xhLWdzdG9wdXMubG86IGdzdG9wdXMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3B1c19sYS1nc3RvcHVzLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXMuVHBvIC1jIC1vIGxpYmdzdG9wdXNfbGEtZ3N0b3B1cy5sbyBgdGVzdCAtZiAnZ3N0b3B1cy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcHVzLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1cy5UcG8gJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1cy5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RvcHVzLmMnIG9iamVjdD0nbGliZ3N0b3B1c19sYS1nc3RvcHVzLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1cy5sbzogZ3N0b3B1cy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3B1c3BhcnNlX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNwYXJzZV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzLlRwbyAtYyAtbyBsaWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1cy5sbyBgdGVzdCAtZiAnZ3N0b3B1cy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcHVzLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzLlRwbyAkKERFUERJUikvbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXMuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0b3B1cy5jJyBvYmplY3Q9J2xpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3B1c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wdXNfbGEtZ3N0b3B1cy5sbyBgdGVzdCAtZiAnZ3N0b3B1cy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcHVzLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzcGFyc2VfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c3BhcnNlX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzLmxvIGB0ZXN0IC1mICdnc3RvcHVzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXMuYwogCi1saWJnc3RvcHVzX2xhLWdzdG9wdXNkZWMubG86IGdzdG9wdXNkZWMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3B1c19sYS1nc3RvcHVzZGVjLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXNkZWMuVHBvIC1jIC1vIGxpYmdzdG9wdXNfbGEtZ3N0b3B1c2RlYy5sbyBgdGVzdCAtZiAnZ3N0b3B1c2RlYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcHVzZGVjLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2RlYy5UcG8gJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2RlYy5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RvcHVzZGVjLmMnIG9iamVjdD0nbGliZ3N0b3B1c19sYS1nc3RvcHVzZGVjLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1c3BhcnNlLmxvOiBnc3RvcHVzcGFyc2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNwYXJzZV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzcGFyc2VfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzcGFyc2UubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzcGFyc2UuVHBvIC1jIC1vIGxpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzcGFyc2UubG8gYHRlc3QgLWYgJ2dzdG9wdXNwYXJzZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcHVzcGFyc2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNwYXJzZS5UcG8gJChERVBESVIpL2xpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzcGFyc2UuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0b3B1c3BhcnNlLmMnIG9iamVjdD0nbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNwYXJzZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdG9wdXNkZWMubG8gYHRlc3QgLWYgJ2dzdG9wdXNkZWMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1c2RlYy5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3B1c3BhcnNlX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNwYXJzZV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1c3BhcnNlLmxvIGB0ZXN0IC1mICdnc3RvcHVzcGFyc2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1c3BhcnNlLmMKIAotbGliZ3N0b3B1c19sYS1nc3RvcHVzZW5jLmxvOiBnc3RvcHVzZW5jLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wdXNfbGEtZ3N0b3B1c2VuYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzZW5jLlRwbyAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdG9wdXNlbmMubG8gYHRlc3QgLWYgJ2dzdG9wdXNlbmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1c2VuYy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXNlbmMuVHBvICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXNlbmMuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0b3B1c2VuYy5jJyBvYmplY3Q9J2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2VuYy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNoZWFkZXIubG86IGdzdG9wdXNoZWFkZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNwYXJzZV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzcGFyc2VfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzaGVhZGVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1c2hlYWRlci5UcG8gLWMgLW8gbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNoZWFkZXIubG8gYHRlc3QgLWYgJ2dzdG9wdXNoZWFkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1c2hlYWRlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1c2hlYWRlci5UcG8gJChERVBESVIpL2xpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzaGVhZGVyLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG9wdXNoZWFkZXIuYycgb2JqZWN0PSdsaWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1c2hlYWRlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdG9wdXNlbmMubG8gYHRlc3QgLWYgJ2dzdG9wdXNlbmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1c2VuYy5jCi0KLWxpYmdzdG9wdXNfbGEtZ3N0b3B1c3BhcnNlLmxvOiBnc3RvcHVzcGFyc2UuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3B1c19sYS1nc3RvcHVzcGFyc2UubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c3BhcnNlLlRwbyAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdG9wdXNwYXJzZS5sbyBgdGVzdCAtZiAnZ3N0b3B1c3BhcnNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXNwYXJzZS5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXNwYXJzZS5UcG8gJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c3BhcnNlLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG9wdXNwYXJzZS5jJyBvYmplY3Q9J2xpYmdzdG9wdXNfbGEtZ3N0b3B1c3BhcnNlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3B1c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wdXNfbGEtZ3N0b3B1c3BhcnNlLmxvIGB0ZXN0IC1mICdnc3RvcHVzcGFyc2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1c3BhcnNlLmMKLQotbGliZ3N0b3B1c19sYS1nc3RvcHVzaGVhZGVyLmxvOiBnc3RvcHVzaGVhZGVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wdXNfbGEtZ3N0b3B1c2hlYWRlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzaGVhZGVyLlRwbyAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdG9wdXNoZWFkZXIubG8gYHRlc3QgLWYgJ2dzdG9wdXNoZWFkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1c2hlYWRlci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXNoZWFkZXIuVHBvICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXNoZWFkZXIuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0b3B1c2hlYWRlci5jJyBvYmplY3Q9J2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2hlYWRlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdG9wdXNoZWFkZXIubG8gYHRlc3QgLWYgJ2dzdG9wdXNoZWFkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1c2hlYWRlci5jCi0KLWxpYmdzdG9wdXNfbGEtZ3N0b3B1c2NvbW1vbi5sbzogZ3N0b3B1c2NvbW1vbi5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3B1c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcHVzX2xhLWdzdG9wdXNjb21tb24ubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2NvbW1vbi5UcG8gLWMgLW8gbGliZ3N0b3B1c19sYS1nc3RvcHVzY29tbW9uLmxvIGB0ZXN0IC1mICdnc3RvcHVzY29tbW9uLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXNjb21tb24uYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzY29tbW9uLlRwbyAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzY29tbW9uLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG9wdXNjb21tb24uYycgb2JqZWN0PSdsaWJnc3RvcHVzX2xhLWdzdG9wdXNjb21tb24ubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3B1c19sYS1nc3RvcHVzY29tbW9uLmxvIGB0ZXN0IC1mICdnc3RvcHVzY29tbW9uLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXNjb21tb24uYwotCi1saWJnc3RvcHVzX2xhLWdzdHJ0cG9wdXNwYXkubG86IGdzdHJ0cG9wdXNwYXkuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3B1c19sYS1nc3RydHBvcHVzcGF5LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdHJ0cG9wdXNwYXkuVHBvIC1jIC1vIGxpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c3BheS5sbyBgdGVzdCAtZiAnZ3N0cnRwb3B1c3BheS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RydHBvcHVzcGF5LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c3BheS5UcG8gJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c3BheS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RydHBvcHVzcGF5LmMnIG9iamVjdD0nbGliZ3N0b3B1c19sYS1nc3RydHBvcHVzcGF5LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3B1c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c3BheS5sbyBgdGVzdCAtZiAnZ3N0cnRwb3B1c3BheS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RydHBvcHVzcGF5LmMKLQotbGliZ3N0b3B1c19sYS1nc3RydHBvcHVzZGVwYXkubG86IGdzdHJ0cG9wdXNkZXBheS5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3B1c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcHVzX2xhLWdzdHJ0cG9wdXNkZXBheS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RydHBvcHVzZGVwYXkuVHBvIC1jIC1vIGxpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c2RlcGF5LmxvIGB0ZXN0IC1mICdnc3RydHBvcHVzZGVwYXkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cnRwb3B1c2RlcGF5LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c2RlcGF5LlRwbyAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RydHBvcHVzZGVwYXkuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0cnRwb3B1c2RlcGF5LmMnIG9iamVjdD0nbGliZ3N0b3B1c19sYS1nc3RydHBvcHVzZGVwYXkubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3B1c19sYS1nc3RydHBvcHVzZGVwYXkubG8gYHRlc3QgLWYgJ2dzdHJ0cG9wdXNkZXBheS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RydHBvcHVzZGVwYXkuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNwYXJzZV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzcGFyc2VfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNoZWFkZXIubG8gYHRlc3QgLWYgJ2dzdG9wdXNoZWFkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1c2hlYWRlci5jCiAKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdG9wdXMuYyBiL2V4dC9vcHVzL2dzdG9wdXMuYwppbmRleCBhMzQyN2IyLi5kNTM2MDAwIDEwMDY0NAotLS0gYS9leHQvb3B1cy9nc3RvcHVzLmMKKysrIGIvZXh0L29wdXMvZ3N0b3B1cy5jCkBAIC0yMSwzOSArMjEsMTcgQEAKICNpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSAiZ3N0b3B1c2RlYy5oIgotI2luY2x1ZGUgImdzdG9wdXNlbmMuaCIKICNpbmNsdWRlICJnc3RvcHVzcGFyc2UuaCIKIAotI2luY2x1ZGUgImdzdHJ0cG9wdXNwYXkuaCIKLSNpbmNsdWRlICJnc3RydHBvcHVzZGVwYXkuaCIKLQogI2luY2x1ZGUgPGdzdC90YWcvdGFnLmg+CiAKIHN0YXRpYyBnYm9vbGVhbgogcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbikKIHsKLQotICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJvcHVzZW5jIiwgR1NUX1JBTktfUFJJTUFSWSwKLSAgICAgICAgICBHU1RfVFlQRV9PUFVTX0VOQykpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgIm9wdXNkZWMiLCBHU1RfUkFOS19QUklNQVJZLAotICAgICAgICAgIEdTVF9UWVBFX09QVVNfREVDKSkKLSAgICByZXR1cm4gRkFMU0U7Ci0KICAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAib3B1c3BhcnNlIiwgR1NUX1JBTktfTk9ORSwKICAgICAgICAgICBHU1RfVFlQRV9PUFVTX1BBUlNFKSkKICAgICByZXR1cm4gRkFMU0U7CiAKLSAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAicnRwb3B1c2RlcGF5IiwgR1NUX1JBTktfU0VDT05EQVJZLAotICAgICAgICAgIEdTVF9UWVBFX1JUUF9PUFVTX0RFUEFZKSkKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAicnRwb3B1c3BheSIsIEdTVF9SQU5LX1NFQ09OREFSWSwKLSAgICAgICAgICBHU1RfVFlQRV9SVFBfT1BVU19QQVkpKQotICAgIHJldHVybiBGQUxTRTsKLQogICBnc3RfdGFnX3JlZ2lzdGVyX211c2ljYnJhaW56X3RhZ3MgKCk7CiAKICAgcmV0dXJuIFRSVUU7CkBAIC02MSw2ICszOSw2IEBACiAKIEdTVF9QTFVHSU5fREVGSU5FIChHU1RfVkVSU0lPTl9NQUpPUiwKICAgICBHU1RfVkVSU0lPTl9NSU5PUiwKLSAgICBvcHVzLAotICAgICJPUFVTIHBsdWdpbiBsaWJyYXJ5IiwKKyAgICBvcHVzcGFyc2UsCisgICAgIk9QVVMgcGFyc2UgcGx1Z2luIiwKICAgICBwbHVnaW5faW5pdCwgVkVSU0lPTiwgIkxHUEwiLCBHU1RfUEFDS0FHRV9OQU1FLCBHU1RfUEFDS0FHRV9PUklHSU4pCmRpZmYgLS1naXQgYS9leHQvb3B1cy9nc3RvcHVzY29tbW9uLmMgYi9leHQvb3B1cy9nc3RvcHVzY29tbW9uLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlYmNjZDguLjAwMDAwMDAKLS0tIGEvZXh0L29wdXMvZ3N0b3B1c2NvbW1vbi5jCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDA5IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgImdzdG9wdXNjb21tb24uaCIKLQotLyogaHR0cDovL3d3dy54aXBoLm9yZy92b3JiaXMvZG9jL1ZvcmJpc19JX3NwZWMuaHRtbCN4MS04MDAwMDQuMy45ICovCi0vKiBjb3B5IG9mIHRoZSBzYW1lIHN0cnVjdHVyZSBpbiB0aGUgdm9yYmlzIHBsdWdpbiAqLwotY29uc3QgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gZ3N0X29wdXNfY2hhbm5lbF9wb3NpdGlvbnNbXVs4XSA9IHsKLSAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTW9ubyAqLwotICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTU9OT30sCi0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0ZXJlbyAqLwotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZULAotICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFR9LAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdGVyZW8gKyBDZW50cmUgKi8KLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVCwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfQ0VOVEVSLAotICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFR9LAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBRdWFkcmFwaG9uaWMgKi8KLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVCwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfTEVGVCwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fUkVBUl9SSUdIVCwKLSAgICAgIH0sCi0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0ZXJlbyArIENlbnRyZSArIHJlYXIgc3RlcmVvICovCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0NFTlRFUiwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfTEVGVCwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fUkVBUl9SSUdIVCwKLSAgICAgIH0sCi0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZ1bGwgNS4xIFN1cnJvdW5kICovCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0NFTlRFUiwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfTEVGVCwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fUkVBUl9SSUdIVCwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTEZFMSwKLSAgICAgIH0sCi0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDYuMSBTdXJyb3VuZCwgaW4gVm9yYmlzIHNwZWMgc2luY2UgMjAxMC0wMS0xMyAqLwotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9DRU5URVIsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9TSURFX0xFRlQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1NJREVfUklHSFQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfQ0VOVEVSLAotICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTEZFMX0sCi0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDcuMSBTdXJyb3VuZCwgaW4gVm9yYmlzIHNwZWMgc2luY2UgMjAxMC0wMS0xMyAqLwotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9DRU5URVIsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9TSURFX0xFRlQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1NJREVfUklHSFQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfTEVGVCwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fUkVBUl9SSUdIVCwKLSAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0xGRTF9LAotfTsKLQotY29uc3QgY2hhciAqZ3N0X29wdXNfY2hhbm5lbF9uYW1lc1tdID0gewotICAibW9ubyIsCi0gICJmcm9udCBsZWZ0IiwKLSAgImZyb250IHJpZ2h0IiwKLSAgInJlYXIgY2VudGVyIiwKLSAgInJlYXIgbGVmdCIsCi0gICJyZWFyIHJpZ2h0IiwKLSAgImxmZSIsCi0gICJmcm9udCBjZW50ZXIiLAotICAiZnJvbnQgbGVmdCBvZiBjZW50ZXIiLAotICAiZnJvbnQgcmlnaHQgb2YgY2VudGVyIiwKLSAgInNpZGUgbGVmdCIsCi0gICJzaWRlIHJpZ2h0IiwKLSAgIm5vbmUiCi19OwotCi12b2lkCi1nc3Rfb3B1c19jb21tb25fbG9nX2NoYW5uZWxfbWFwcGluZ190YWJsZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCi0gICAgR3N0RGVidWdDYXRlZ29yeSAqIGNhdGVnb3J5LCBjb25zdCBjaGFyICptc2csIGludCBuX2NoYW5uZWxzLAotICAgIGNvbnN0IGd1aW50OCAqIHRhYmxlKQotewotICBpbnQgbjsKLSAgR1N0cmluZyAqczsKLQotICBpZiAoZ3N0X2RlYnVnX2NhdGVnb3J5X2dldF90aHJlc2hvbGQgKGNhdGVnb3J5KSA8IEdTVF9MRVZFTF9JTkZPKQotICAgIHJldHVybjsKLQotICBzID0gZ19zdHJpbmdfbmV3ICgiWyAiKTsKLSAgZm9yIChuID0gMDsgbiA8IG5fY2hhbm5lbHM7ICsrbikgewotICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHMsICIlZCAiLCB0YWJsZVtuXSk7Ci0gIH0KLSAgZ19zdHJpbmdfYXBwZW5kIChzLCAiXSIpOwotCi0gIEdTVF9DQVRfTEVWRUxfTE9HIChjYXRlZ29yeSwgR1NUX0xFVkVMX0lORk8sIGVsZW1lbnQsICIlczogJXMiLCBtc2csIHMtPnN0cik7Ci0gIGdfc3RyaW5nX2ZyZWUgKHMsIFRSVUUpOwotfQpkaWZmIC0tZ2l0IGEvZXh0L29wdXMvZ3N0b3B1c2RlYy5jIGIvZXh0L29wdXMvZ3N0b3B1c2RlYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDgxYjk5Li4wMDAwMDAwCi0tLSBhL2V4dC9vcHVzL2dzdG9wdXNkZWMuYworKysgL2Rldi9udWxsCkBAIC0xLDc5NCArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAwNCBXaW0gVGF5bWFucyA8d2ltQGZsdWVuZG8uY29tPgotICogQ29weXJpZ2h0IChDKSAyMDA2IFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbSBjZW50cmljdWxhciBuZXQ+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDggU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0vKgotICogQmFzZWQgb24gdGhlIHNwZWV4ZGVjIGVsZW1lbnQuCi0gKi8KLQotLyoqCi0gKiBTRUNUSU9OOmVsZW1lbnQtb3B1c2RlYwotICogQHNlZV9hbHNvOiBvcHVzZW5jLCBvZ2dkZW11eAotICoKLSAqIFRoaXMgZWxlbWVudCBkZWNvZGVzIGEgT1BVUyBzdHJlYW0gdG8gcmF3IGludGVnZXIgYXVkaW8uCi0gKgotICogPHJlZnNlY3QyPgotICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KLSAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249b3B1cy5vZ2cgISBvZ2dkZW11eCAhIG9wdXNkZWMgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgYWxzYXNpbmsKLSAqIF18IERlY29kZSBhbiBPZ2cvT3B1cyBmaWxlLiBUbyBjcmVhdGUgYW4gT2dnL09wdXMgZmlsZSByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBvZiBvcHVzZW5jLgotICogPC9yZWZzZWN0Mj4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSAiZ3N0b3B1c2hlYWRlci5oIgotI2luY2x1ZGUgImdzdG9wdXNjb21tb24uaCIKLSNpbmNsdWRlICJnc3RvcHVzZGVjLmgiCi0KLUdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKG9wdXNkZWNfZGVidWcpOwotI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgb3B1c2RlY19kZWJ1ZwotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgb3B1c19kZWNfc3JjX2ZhY3RvcnkgPQotR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAotICAgIEdTVF9QQURfU1JDLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImF1ZGlvL3gtcmF3LCAiCi0gICAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSAiIEdTVF9BVURJT19ORSAoUzE2KSAiLCAiCi0gICAgICAgICJsYXlvdXQgPSAoc3RyaW5nKSBpbnRlcmxlYXZlZCwgIgotICAgICAgICAicmF0ZSA9IChpbnQpIHsgNDgwMDAsIDI0MDAwLCAxNjAwMCwgMTIwMDAsIDgwMDAgfSwgIgotICAgICAgICAiY2hhbm5lbHMgPSAoaW50KSBbIDEsIDggXSAiKQotICAgICk7Ci0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBvcHVzX2RlY19zaW5rX2ZhY3RvcnkgPQotR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKLSAgICBHU1RfUEFEX1NJTkssCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTICgiYXVkaW8veC1vcHVzIikKLSAgICApOwotCi1HX0RFRklORV9UWVBFIChHc3RPcHVzRGVjLCBnc3Rfb3B1c19kZWMsIEdTVF9UWVBFX0FVRElPX0RFQ09ERVIpOwotCi0jZGVmaW5lIERCX1RPX0xJTkVBUih4KSBwb3cgKDEwLiwgKHgpIC8gMjAuKQotCi0jZGVmaW5lIERFRkFVTFRfVVNFX0lOQkFORF9GRUMgRkFMU0UKLSNkZWZpbmUgREVGQVVMVF9BUFBMWV9HQUlOIFRSVUUKLQotZW51bQotewotICBQUk9QXzAsCi0gIFBST1BfVVNFX0lOQkFORF9GRUMsCi0gIFBST1BfQVBQTFlfR0FJTgotfTsKLQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3Rfb3B1c19kZWNfcGFyc2VfaGVhZGVyIChHc3RPcHVzRGVjICogZGVjLAotICAgIEdzdEJ1ZmZlciAqIGJ1Zik7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X29wdXNfZGVjX3N0YXJ0IChHc3RBdWRpb0RlY29kZXIgKiBkZWMpOwotc3RhdGljIGdib29sZWFuIGdzdF9vcHVzX2RlY19zdG9wIChHc3RBdWRpb0RlY29kZXIgKiBkZWMpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X29wdXNfZGVjX2hhbmRsZV9mcmFtZSAoR3N0QXVkaW9EZWNvZGVyICogZGVjLAotICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X29wdXNfZGVjX3NldF9mb3JtYXQgKEdzdEF1ZGlvRGVjb2RlciAqIGJkZWMsCi0gICAgR3N0Q2FwcyAqIGNhcHMpOwotc3RhdGljIHZvaWQgZ3N0X29wdXNfZGVjX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLXN0YXRpYyB2b2lkIGdzdF9vcHVzX2RlY19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0gICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci0KLQotc3RhdGljIHZvaWQKLWdzdF9vcHVzX2RlY19jbGFzc19pbml0IChHc3RPcHVzRGVjQ2xhc3MgKiBrbGFzcykKLXsKLSAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOwotICBHc3RBdWRpb0RlY29kZXJDbGFzcyAqYWRjbGFzczsKLSAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzOwotCi0gIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwotICBhZGNsYXNzID0gKEdzdEF1ZGlvRGVjb2RlckNsYXNzICopIGtsYXNzOwotICBlbGVtZW50X2NsYXNzID0gKEdzdEVsZW1lbnRDbGFzcyAqKSBrbGFzczsKLQotICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3Rfb3B1c19kZWNfc2V0X3Byb3BlcnR5OwotICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3Rfb3B1c19kZWNfZ2V0X3Byb3BlcnR5OwotCi0gIGFkY2xhc3MtPnN0YXJ0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9vcHVzX2RlY19zdGFydCk7Ci0gIGFkY2xhc3MtPnN0b3AgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X29wdXNfZGVjX3N0b3ApOwotICBhZGNsYXNzLT5oYW5kbGVfZnJhbWUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X29wdXNfZGVjX2hhbmRsZV9mcmFtZSk7Ci0gIGFkY2xhc3MtPnNldF9mb3JtYXQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X29wdXNfZGVjX3NldF9mb3JtYXQpOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCi0gICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZvcHVzX2RlY19zcmNfZmFjdG9yeSkpOwotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmb3B1c19kZWNfc2lua19mYWN0b3J5KSk7Ci0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsICJPcHVzIGF1ZGlvIGRlY29kZXIiLAotICAgICAgIkNvZGVjL0RlY29kZXIvQXVkaW8iLAotICAgICAgImRlY29kZSBvcHVzIHN0cmVhbXMgdG8gYXVkaW8iLAotICAgICAgIlZpbmNlbnQgUGVucXVlcmMnaCA8dmluY2VudC5wZW5xdWVyY2hAY29sbGFib3JhLmNvLnVrPiIpOwotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1VTRV9JTkJBTkRfRkVDLAotICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJ1c2UtaW5iYW5kLWZlYyIsICJVc2UgaW4tYmFuZCBGRUMiLAotICAgICAgICAgICJVc2UgZm9yd2FyZCBlcnJvciBjb3JyZWN0aW9uIGlmIGF2YWlsYWJsZSIsIERFRkFVTFRfVVNFX0lOQkFORF9GRUMsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0KLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9BUFBMWV9HQUlOLAotICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJhcHBseS1nYWluIiwgIkFwcGx5IGdhaW4iLAotICAgICAgICAgICJBcHBseSBnYWluIGlmIGFueSBpcyBzcGVjaWZpZWQgaW4gdGhlIGhlYWRlciIsIERFRkFVTFRfQVBQTFlfR0FJTiwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLQotICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAob3B1c2RlY19kZWJ1ZywgIm9wdXNkZWMiLCAwLAotICAgICAgIm9wdXMgZGVjb2RpbmcgZWxlbWVudCIpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X29wdXNfZGVjX3Jlc2V0IChHc3RPcHVzRGVjICogZGVjKQotewotICBkZWMtPnBhY2tldG5vID0gMDsKLSAgaWYgKGRlYy0+c3RhdGUpIHsKLSAgICBvcHVzX211bHRpc3RyZWFtX2RlY29kZXJfZGVzdHJveSAoZGVjLT5zdGF0ZSk7Ci0gICAgZGVjLT5zdGF0ZSA9IE5VTEw7Ci0gIH0KLQotICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZkZWMtPnN0cmVhbWhlYWRlciwgTlVMTCk7Ci0gIGdzdF9idWZmZXJfcmVwbGFjZSAoJmRlYy0+dm9yYmlzY29tbWVudCwgTlVMTCk7Ci0gIGdzdF9idWZmZXJfcmVwbGFjZSAoJmRlYy0+bGFzdF9idWZmZXIsIE5VTEwpOwotICBkZWMtPnByaW1lZCA9IEZBTFNFOwotCi0gIGRlYy0+cHJlX3NraXAgPSAwOwotICBkZWMtPnIxMjhfZ2FpbiA9IDA7Ci0gIGRlYy0+c2FtcGxlX3JhdGUgPSAwOwotICBkZWMtPm5fY2hhbm5lbHMgPSAwOwotICBkZWMtPmxlZnRvdmVyX3BsY19kdXJhdGlvbiA9IDA7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfb3B1c19kZWNfaW5pdCAoR3N0T3B1c0RlYyAqIGRlYykKLXsKLSAgZGVjLT51c2VfaW5iYW5kX2ZlYyA9IEZBTFNFOwotICBkZWMtPmFwcGx5X2dhaW4gPSBERUZBVUxUX0FQUExZX0dBSU47Ci0KLSAgZ3N0X2F1ZGlvX2RlY29kZXJfc2V0X25lZWRzX2Zvcm1hdCAoR1NUX0FVRElPX0RFQ09ERVIgKGRlYyksIFRSVUUpOwotICBnc3RfYXVkaW9fZGVjb2Rlcl9zZXRfdXNlX2RlZmF1bHRfcGFkX2FjY2VwdGNhcHMgKEdTVF9BVURJT19ERUNPREVSX0NBU1QKLSAgICAgIChkZWMpLCBUUlVFKTsKLSAgR1NUX1BBRF9TRVRfQUNDRVBUX1RFTVBMQVRFIChHU1RfQVVESU9fREVDT0RFUl9TSU5LX1BBRCAoZGVjKSk7Ci0KLSAgZ3N0X29wdXNfZGVjX3Jlc2V0IChkZWMpOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9vcHVzX2RlY19zdGFydCAoR3N0QXVkaW9EZWNvZGVyICogZGVjKQotewotICBHc3RPcHVzRGVjICpvZGVjID0gR1NUX09QVVNfREVDIChkZWMpOwotCi0gIGdzdF9vcHVzX2RlY19yZXNldCAob2RlYyk7Ci0KLSAgLyogd2Uga25vdyBhYm91dCBjb25jZWFsbWVudCAqLwotICBnc3RfYXVkaW9fZGVjb2Rlcl9zZXRfcGxjX2F3YXJlIChkZWMsIFRSVUUpOwotCi0gIGlmIChvZGVjLT51c2VfaW5iYW5kX2ZlYykgewotICAgIC8qIG9wdXNkZWMgb3V0cHV0cyBzYW1wbGVzIGRpcmVjdGx5IGZyb20gYW4gaW5wdXQgYnVmZmVyLCBleGNlcHQgaWYKLSAgICAgKiBGRUMgaXMgb24sIGluIHdoaWNoIGNhc2UgaXQgYnVmZmVycyBvbmUgYnVmZmVyIGluIGNhc2Ugb25lIGJ1ZmZlcgotICAgICAqIGdvZXMgbWlzc2luZy4KLSAgICAgKi8KLSAgICBnc3RfYXVkaW9fZGVjb2Rlcl9zZXRfbGF0ZW5jeSAoZGVjLCAxMjAgKiBHU1RfTVNFQ09ORCwgMTIwICogR1NUX01TRUNPTkQpOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X29wdXNfZGVjX3N0b3AgKEdzdEF1ZGlvRGVjb2RlciAqIGRlYykKLXsKLSAgR3N0T3B1c0RlYyAqb2RlYyA9IEdTVF9PUFVTX0RFQyAoZGVjKTsKLQotICBnc3Rfb3B1c19kZWNfcmVzZXQgKG9kZWMpOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZG91YmxlCi1nc3Rfb3B1c19kZWNfZ2V0X3IxMjhfZ2FpbiAoZ2ludDE2IHIxMjhfZ2FpbikKLXsKLSAgcmV0dXJuIHIxMjhfZ2FpbiAvIChkb3VibGUpICgxIDw8IDgpOwotfQotCi1zdGF0aWMgZG91YmxlCi1nc3Rfb3B1c19kZWNfZ2V0X3IxMjhfdm9sdW1lIChnaW50MTYgcjEyOF9nYWluKQotewotICByZXR1cm4gREJfVE9fTElORUFSIChnc3Rfb3B1c19kZWNfZ2V0X3IxMjhfZ2FpbiAocjEyOF9nYWluKSk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfb3B1c19kZWNfbmVnb3RpYXRlIChHc3RPcHVzRGVjICogZGVjLCBjb25zdCBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiAqIHBvcykKLXsKLSAgR3N0Q2FwcyAqY2FwcyA9IGdzdF9wYWRfZ2V0X2FsbG93ZWRfY2FwcyAoR1NUX0FVRElPX0RFQ09ERVJfU1JDX1BBRCAoZGVjKSk7Ci0gIEdzdFN0cnVjdHVyZSAqczsKLSAgR3N0QXVkaW9JbmZvIGluZm87Ci0KLSAgaWYgKGNhcHMpIHsKLSAgICBjYXBzID0gZ3N0X2NhcHNfdHJ1bmNhdGUgKGNhcHMpOwotICAgIGNhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChjYXBzKTsKLSAgICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0KLSAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGQgKHMsICJyYXRlIikpCi0gICAgICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ludCAocywgInJhdGUiLCBkZWMtPnNhbXBsZV9yYXRlKTsKLSAgICBlbHNlCi0gICAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgInJhdGUiLCBHX1RZUEVfSU5ULCBkZWMtPnNhbXBsZV9yYXRlLCBOVUxMKTsKLSAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHMsICJyYXRlIiwgJmRlYy0+c2FtcGxlX3JhdGUpOwotCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkIChzLCAiY2hhbm5lbHMiKSkKLSAgICAgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfaW50IChzLCAiY2hhbm5lbHMiLCBkZWMtPm5fY2hhbm5lbHMpOwotICAgIGVsc2UKLSAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCBkZWMtPm5fY2hhbm5lbHMsIE5VTEwpOwotICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgImNoYW5uZWxzIiwgJmRlYy0+bl9jaGFubmVscyk7Ci0KLSAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gIH0KLQotICBpZiAoZGVjLT5uX2NoYW5uZWxzID09IDApIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJVc2luZyBhIGRlZmF1bHQgb2YgMiBjaGFubmVscyIpOwotICAgIGRlYy0+bl9jaGFubmVscyA9IDI7Ci0gICAgcG9zID0gTlVMTDsKLSAgfQotCi0gIGlmIChkZWMtPnNhbXBsZV9yYXRlID09IDApIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJVc2luZyBhIGRlZmF1bHQgb2YgNDhrSHogc2FtcGxlIHJhdGUiKTsKLSAgICBkZWMtPnNhbXBsZV9yYXRlID0gNDgwMDA7Ci0gIH0KLQotICBHU1RfSU5GT19PQkpFQ1QgKGRlYywgIk5lZ290aWF0ZWQgJWQgY2hhbm5lbHMsICVkIEh6IiwgZGVjLT5uX2NoYW5uZWxzLAotICAgICAgZGVjLT5zYW1wbGVfcmF0ZSk7Ci0KLSAgLyogcGFzcyB2YWxpZCBvcmRlciB0byBhdWRpbyBpbmZvICovCi0gIGlmIChwb3MpIHsKLSAgICBtZW1jcHkgKGRlYy0+b3B1c19wb3MsIHBvcywgc2l6ZW9mIChwb3NbMF0pICogZGVjLT5uX2NoYW5uZWxzKTsKLSAgICBnc3RfYXVkaW9fY2hhbm5lbF9wb3NpdGlvbnNfdG9fdmFsaWRfb3JkZXIgKGRlYy0+b3B1c19wb3MsIGRlYy0+bl9jaGFubmVscyk7Ci0gIH0KLQotICAvKiBzZXQgdXAgc291cmNlIGZvcm1hdCAqLwotICBnc3RfYXVkaW9faW5mb19pbml0ICgmaW5mbyk7Ci0gIGdzdF9hdWRpb19pbmZvX3NldF9mb3JtYXQgKCZpbmZvLCBHU1RfQVVESU9fRk9STUFUX1MxNiwKLSAgICAgIGRlYy0+c2FtcGxlX3JhdGUsIGRlYy0+bl9jaGFubmVscywgcG9zID8gZGVjLT5vcHVzX3BvcyA6IE5VTEwpOwotICBnc3RfYXVkaW9fZGVjb2Rlcl9zZXRfb3V0cHV0X2Zvcm1hdCAoR1NUX0FVRElPX0RFQ09ERVIgKGRlYyksICZpbmZvKTsKLQotICAvKiBidXQgd2Ugc3RpbGwgbmVlZCB0aGUgb3B1cyBvcmRlciBmb3IgbGF0ZXIgcmVvcmRlcmluZyAqLwotICBpZiAocG9zKSB7Ci0gICAgbWVtY3B5IChkZWMtPm9wdXNfcG9zLCBwb3MsIHNpemVvZiAocG9zWzBdKSAqIGRlYy0+bl9jaGFubmVscyk7Ci0gICAgZ3N0X2F1ZGlvX2NoYW5uZWxfcG9zaXRpb25zX3RvX3ZhbGlkX29yZGVyIChkZWMtPm9wdXNfcG9zLCBkZWMtPm5fY2hhbm5lbHMpOwotICB9IGVsc2UgewotICAgIGRlYy0+b3B1c19wb3NbMF0gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9JTlZBTElEOwotICB9Ci0KLSAgZGVjLT5pbmZvID0gaW5mbzsKLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9vcHVzX2RlY19wYXJzZV9oZWFkZXIgKEdzdE9wdXNEZWMgKiBkZWMsIEdzdEJ1ZmZlciAqIGJ1ZikKLXsKLSAgY29uc3QgZ3VpbnQ4ICpkYXRhOwotICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiBwb3NbNjRdOwotICBjb25zdCBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiAqcG9zbiA9IE5VTEw7Ci0gIEdzdE1hcEluZm8gbWFwOwotCi0gIGlmICghZ3N0X29wdXNfaGVhZGVyX2lzX2lkX2hlYWRlciAoYnVmKSkgewotICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGRlYywgIkhlYWRlciBpcyBub3QgYW4gT3B1cyBJRCBoZWFkZXIiKTsKLSAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7Ci0gIH0KLQotICBnc3RfYnVmZmVyX21hcCAoYnVmLCAmbWFwLCBHU1RfTUFQX1JFQUQpOwotICBkYXRhID0gbWFwLmRhdGE7Ci0KLSAgZGVjLT5uX2NoYW5uZWxzID0gZGF0YVs5XTsKLSAgZGVjLT5zYW1wbGVfcmF0ZSA9IEdTVF9SRUFEX1VJTlQzMl9MRSAoZGF0YSArIDEyKTsKLSAgaWYgKGRlYy0+c2FtcGxlX3JhdGUgPT0gMCkKLSAgICBkZWMtPnNhbXBsZV9yYXRlID0gNDgwMDA7Ci0gIGRlYy0+cHJlX3NraXAgPSBHU1RfUkVBRF9VSU5UMTZfTEUgKGRhdGEgKyAxMCk7Ci0gIGRlYy0+cjEyOF9nYWluID0gR1NUX1JFQURfVUlOVDE2X0xFIChkYXRhICsgMTYpOwotICBkZWMtPnIxMjhfZ2Fpbl92b2x1bWUgPSBnc3Rfb3B1c19kZWNfZ2V0X3IxMjhfdm9sdW1lIChkZWMtPnIxMjhfZ2Fpbik7Ci0gIEdTVF9JTkZPX09CSkVDVCAoZGVjLAotICAgICAgIkZvdW5kIHByZS1za2lwIG9mICV1IHNhbXBsZXMsIFIxMjggZ2FpbiAlZCAodm9sdW1lICVmKSIsCi0gICAgICBkZWMtPnByZV9za2lwLCBkZWMtPnIxMjhfZ2FpbiwgZGVjLT5yMTI4X2dhaW5fdm9sdW1lKTsKLQotICBkZWMtPmNoYW5uZWxfbWFwcGluZ19mYW1pbHkgPSBkYXRhWzE4XTsKLSAgaWYgKGRlYy0+Y2hhbm5lbF9tYXBwaW5nX2ZhbWlseSA9PSAwKSB7Ci0gICAgLyogaW1wbGljaXQgbWFwcGluZyAqLwotICAgIEdTVF9JTkZPX09CSkVDVCAoZGVjLCAiQ2hhbm5lbCBtYXBwaW5nIGZhbWlseSAwLCBpbXBsaWNpdCBtYXBwaW5nIik7Ci0gICAgZGVjLT5uX3N0cmVhbXMgPSBkZWMtPm5fc3RlcmVvX3N0cmVhbXMgPSAxOwotICAgIGRlYy0+Y2hhbm5lbF9tYXBwaW5nWzBdID0gMDsKLSAgICBkZWMtPmNoYW5uZWxfbWFwcGluZ1sxXSA9IDE7Ci0gIH0gZWxzZSB7Ci0gICAgZGVjLT5uX3N0cmVhbXMgPSBkYXRhWzE5XTsKLSAgICBkZWMtPm5fc3RlcmVvX3N0cmVhbXMgPSBkYXRhWzIwXTsKLSAgICBtZW1jcHkgKGRlYy0+Y2hhbm5lbF9tYXBwaW5nLCBkYXRhICsgMjEsIGRlYy0+bl9jaGFubmVscyk7Ci0KLSAgICBpZiAoZGVjLT5jaGFubmVsX21hcHBpbmdfZmFtaWx5ID09IDEpIHsKLSAgICAgIEdTVF9JTkZPX09CSkVDVCAoZGVjLCAiQ2hhbm5lbCBtYXBwaW5nIGZhbWlseSAxLCBWb3JiaXMgbWFwcGluZyIpOwotICAgICAgc3dpdGNoIChkZWMtPm5fY2hhbm5lbHMpIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgLyogbm90aGluZyAqLwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDM6Ci0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgY2FzZSA1OgotICAgICAgICBjYXNlIDY6Ci0gICAgICAgIGNhc2UgNzoKLSAgICAgICAgY2FzZSA4OgotICAgICAgICAgIHBvc24gPSBnc3Rfb3B1c19jaGFubmVsX3Bvc2l0aW9uc1tkZWMtPm5fY2hhbm5lbHMgLSAxXTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDp7Ci0gICAgICAgICAgZ2ludCBpOwotCi0gICAgICAgICAgR1NUX0VMRU1FTlRfV0FSTklORyAoR1NUX0VMRU1FTlQgKGRlYyksIFNUUkVBTSwgREVDT0RFLAotICAgICAgICAgICAgICAoTlVMTCksICgiVXNpbmcgTk9ORSBjaGFubmVsIGxheW91dCBmb3IgbW9yZSB0aGFuIDggY2hhbm5lbHMiKSk7Ci0KLSAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGVjLT5uX2NoYW5uZWxzOyBpKyspCi0gICAgICAgICAgICBwb3NbaV0gPSBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9OT05FOwotCi0gICAgICAgICAgcG9zbiA9IHBvczsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICBHU1RfSU5GT19PQkpFQ1QgKGRlYywgIkNoYW5uZWwgbWFwcGluZyBmYW1pbHkgJWQiLAotICAgICAgICAgIGRlYy0+Y2hhbm5lbF9tYXBwaW5nX2ZhbWlseSk7Ci0gICAgfQotICB9Ci0KLSAgZ3N0X29wdXNfZGVjX25lZ290aWF0ZSAoZGVjLCBwb3NuKTsKLQotICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZtYXApOwotCi0gIHJldHVybiBHU1RfRkxPV19PSzsKLX0KLQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X29wdXNfZGVjX3BhcnNlX2NvbW1lbnRzIChHc3RPcHVzRGVjICogZGVjLCBHc3RCdWZmZXIgKiBidWYpCi17Ci0gIHJldHVybiBHU1RfRkxPV19PSzsKLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLW9wdXNfZGVjX2NoYWluX3BhcnNlX2RhdGEgKEdzdE9wdXNEZWMgKiBkZWMsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLXsKLSAgR3N0Rmxvd1JldHVybiByZXMgPSBHU1RfRkxPV19PSzsKLSAgZ3NpemUgc2l6ZTsKLSAgZ3VpbnQ4ICpkYXRhOwotICBHc3RCdWZmZXIgKm91dGJ1ZjsKLSAgZ2ludDE2ICpvdXRfZGF0YTsKLSAgaW50IG4sIGVycjsKLSAgaW50IHNhbXBsZXM7Ci0gIHVuc2lnbmVkIGludCBwYWNrZXRfc2l6ZTsKLSAgR3N0QnVmZmVyICpidWY7Ci0gIEdzdE1hcEluZm8gbWFwLCBvbWFwOwotCi0gIGlmIChkZWMtPnN0YXRlID09IE5VTEwpIHsKLSAgICAvKiBJZiB3ZSBkaWQgbm90IGdldCBhbnkgaGVhZGVycywgZGVmYXVsdCB0byAyIGNoYW5uZWxzICovCi0gICAgaWYgKGRlYy0+bl9jaGFubmVscyA9PSAwKSB7Ci0gICAgICBHU1RfSU5GT19PQkpFQ1QgKGRlYywgIk5vIGhlYWRlciwgYXNzdW1pbmcgc2luZ2xlIHN0cmVhbSIpOwotICAgICAgZGVjLT5uX2NoYW5uZWxzID0gMjsKLSAgICAgIGRlYy0+c2FtcGxlX3JhdGUgPSA0ODAwMDsKLSAgICAgIC8qIGRlZmF1bHQgc3RlcmVvIG1hcHBpbmcgKi8KLSAgICAgIGRlYy0+Y2hhbm5lbF9tYXBwaW5nX2ZhbWlseSA9IDA7Ci0gICAgICBkZWMtPmNoYW5uZWxfbWFwcGluZ1swXSA9IDA7Ci0gICAgICBkZWMtPmNoYW5uZWxfbWFwcGluZ1sxXSA9IDE7Ci0gICAgICBkZWMtPm5fc3RyZWFtcyA9IDE7Ci0gICAgICBkZWMtPm5fc3RlcmVvX3N0cmVhbXMgPSAxOwotCi0gICAgICBnc3Rfb3B1c19kZWNfbmVnb3RpYXRlIChkZWMsIE5VTEwpOwotICAgIH0KLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgIkNyZWF0aW5nIGRlY29kZXIgd2l0aCAlZCBjaGFubmVscywgJWQgSHoiLAotICAgICAgICBkZWMtPm5fY2hhbm5lbHMsIGRlYy0+c2FtcGxlX3JhdGUpOwotI2lmbmRlZiBHU1RfRElTQUJMRV9HU1RfREVCVUcKLSAgICBnc3Rfb3B1c19jb21tb25fbG9nX2NoYW5uZWxfbWFwcGluZ190YWJsZSAoR1NUX0VMRU1FTlQgKGRlYyksIG9wdXNkZWNfZGVidWcsCi0gICAgICAgICJNYXBwaW5nIHRhYmxlIiwgZGVjLT5uX2NoYW5uZWxzLCBkZWMtPmNoYW5uZWxfbWFwcGluZyk7Ci0jZW5kaWYKLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgIiVkIHN0cmVhbXMsICVkIHN0ZXJlbyIsIGRlYy0+bl9zdHJlYW1zLAotICAgICAgICBkZWMtPm5fc3RlcmVvX3N0cmVhbXMpOwotICAgIGRlYy0+c3RhdGUgPQotICAgICAgICBvcHVzX211bHRpc3RyZWFtX2RlY29kZXJfY3JlYXRlIChkZWMtPnNhbXBsZV9yYXRlLCBkZWMtPm5fY2hhbm5lbHMsCi0gICAgICAgIGRlYy0+bl9zdHJlYW1zLCBkZWMtPm5fc3RlcmVvX3N0cmVhbXMsIGRlYy0+Y2hhbm5lbF9tYXBwaW5nLCAmZXJyKTsKLSAgICBpZiAoIWRlYy0+c3RhdGUgfHwgZXJyICE9IE9QVVNfT0spCi0gICAgICBnb3RvIGNyZWF0aW9uX2ZhaWxlZDsKLSAgfQotCi0gIGlmIChidWZmZXIpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJSZWNlaXZlZCBidWZmZXIgb2Ygc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCwKLSAgICAgICAgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKSk7Ci0gIH0gZWxzZSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiUmVjZWl2ZWQgbWlzc2luZyBidWZmZXIiKTsKLSAgfQotCi0gIC8qIGlmIHVzaW5nIGluLWJhbmQgRkVDLCB3ZSBpbnRyb2R1ZGUgb25lIGV4dHJhIGZyYW1lJ3MgZGVsYXkgYXMgd2UgbmVlZAotICAgICB0byBwb3RlbnRpYWxseSB3YWl0IGZvciBuZXh0IGJ1ZmZlciB0byBkZWNvZGUgYSBtaXNzaW5nIGJ1ZmZlciAqLwotICBpZiAoZGVjLT51c2VfaW5iYW5kX2ZlYyAmJiAhZGVjLT5wcmltZWQpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJGaXJzdCBidWZmZXIgcmVjZWl2ZWQgaW4gRkVDIG1vZGUsIGVhcmx5IG91dCIpOwotICAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJmRlYy0+bGFzdF9idWZmZXIsIGJ1ZmZlcik7Ci0gICAgZGVjLT5wcmltZWQgPSBUUlVFOwotICAgIGdvdG8gZG9uZTsKLSAgfQotCi0gIC8qIFRoYXQncyB0aGUgYnVmZmVyIHdlJ2xsIGJlIHNlbmRpbmcgdG8gdGhlIG9wdXMgZGVjb2Rlci4gKi8KLSAgYnVmID0gKGRlYy0+dXNlX2luYmFuZF9mZWMKLSAgICAgICYmIGdzdF9idWZmZXJfZ2V0X3NpemUgKGRlYy0+bGFzdF9idWZmZXIpID4KLSAgICAgIDApID8gZGVjLT5sYXN0X2J1ZmZlciA6IGJ1ZmZlcjsKLQotICBpZiAoYnVmICYmIGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZikgPiAwKSB7Ci0gICAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJm1hcCwgR1NUX01BUF9SRUFEKTsKLSAgICBkYXRhID0gbWFwLmRhdGE7Ci0gICAgc2l6ZSA9IG1hcC5zaXplOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgIlVzaW5nIGJ1ZmZlciBvZiBzaXplICUiIEdfR1NJWkVfRk9STUFULCBzaXplKTsKLSAgfSBlbHNlIHsKLSAgICAvKiBjb25jZWFsbWVudCBkYXRhLCBwYXNzIE5VTEwgYXMgdGhlIGJpdHMgcGFyYW1ldGVycyAqLwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgIlVzaW5nIE5VTEwgYnVmZmVyIik7Ci0gICAgZGF0YSA9IE5VTEw7Ci0gICAgc2l6ZSA9IDA7Ci0gIH0KLQotICBpZiAoZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKSA9PSAwKSB7Ci0gICAgR3N0Q2xvY2tUaW1lIGNvbnN0IG9wdXNfcGxjX2FsaWdubWVudCA9IDI1MDAgKiBHU1RfVVNFQ09ORDsKLSAgICBHc3RDbG9ja1RpbWUgYWxpZ25lZF9taXNzaW5nX2R1cmF0aW9uOwotICAgIEdzdENsb2NrVGltZSBtaXNzaW5nX2R1cmF0aW9uID0gR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKTsKLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywKLSAgICAgICAgIm1pc3NpbmcgYnVmZmVyLCBkb2luZyBQTEMgZHVyYXRpb24gJSIgR1NUX1RJTUVfRk9STUFUCi0gICAgICAgICIgcGx1cyBsZWZ0b3ZlciAlIiBHU1RfVElNRV9GT1JNQVQsIEdTVF9USU1FX0FSR1MgKG1pc3NpbmdfZHVyYXRpb24pLAotICAgICAgICBHU1RfVElNRV9BUkdTIChkZWMtPmxlZnRvdmVyX3BsY19kdXJhdGlvbikpOwotCi0gICAgLyogYWRkIHRoZSBsZWZ0b3ZlciBQTEMgZHVyYXRpb24gdG8gdGhhdCBvZiB0aGUgYnVmZmVyICovCi0gICAgbWlzc2luZ19kdXJhdGlvbiArPSBkZWMtPmxlZnRvdmVyX3BsY19kdXJhdGlvbjsKLQotICAgIC8qIGFsaWduIHRoZSBjb21iaW5lZCBidWZmZXIgYW5kIGxlZnRvdmVyIFBMQyBkdXJhdGlvbiB0byBtdWx0aXBsZXMKLSAgICAgKiBvZiAyLjVtcywgYWx3YXlzIHJvdW5kaW5nIGRvd24sIGFuZCBzdG9yZSBleGNlc3MgZHVyYXRpb24gZm9yIGxhdGVyICovCi0gICAgYWxpZ25lZF9taXNzaW5nX2R1cmF0aW9uID0KLSAgICAgICAgKG1pc3NpbmdfZHVyYXRpb24gLyBvcHVzX3BsY19hbGlnbm1lbnQpICogb3B1c19wbGNfYWxpZ25tZW50OwotICAgIGRlYy0+bGVmdG92ZXJfcGxjX2R1cmF0aW9uID0gbWlzc2luZ19kdXJhdGlvbiAtIGFsaWduZWRfbWlzc2luZ19kdXJhdGlvbjsKLQotICAgIC8qIE9wdXMnIFBMQyBjYW5ub3Qgb3BlcmF0ZSB3aXRoIGxlc3MgdGhhbiAyLjVtczsgc2tpcCBQTEMKLSAgICAgKiBhbmQgYWNjdW11bGF0ZSB0aGUgbWlzc2luZyBkdXJhdGlvbiBpbiB0aGUgbGVmdG92ZXJfcGxjX2R1cmF0aW9uCi0gICAgICogZm9yIHRoZSBuZXh0IFBMQyBhdHRlbXB0ICovCi0gICAgaWYgKGFsaWduZWRfbWlzc2luZ19kdXJhdGlvbiA8IG9wdXNfcGxjX2FsaWdubWVudCkgewotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLAotICAgICAgICAgICJjdXJyZW50IGR1cmF0aW9uICUiIEdTVF9USU1FX0ZPUk1BVAotICAgICAgICAgICIgb2YgbWlzc2luZyBkYXRhIG5vdCBlbm91Z2ggZm9yIFBMQyAobWluaW11bSBuZWVkZWQ6ICUiCi0gICAgICAgICAgR1NUX1RJTUVfRk9STUFUICIpIC0gc2tpcHBpbmciLCBHU1RfVElNRV9BUkdTIChtaXNzaW5nX2R1cmF0aW9uKSwKLSAgICAgICAgICBHU1RfVElNRV9BUkdTIChvcHVzX3BsY19hbGlnbm1lbnQpKTsKLSAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBjb252ZXJ0IHRoZSBkdXJhdGlvbiAoaW4gbmFub3NlY29uZHMpIHRvIHNhbXBsZSBjb3VudCAqLwotICAgIHNhbXBsZXMgPQotICAgICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChhbGlnbmVkX21pc3NpbmdfZHVyYXRpb24sIGRlYy0+c2FtcGxlX3JhdGUsCi0gICAgICAgIEdTVF9TRUNPTkQpOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLAotICAgICAgICAiY2FsY3VsYXRlZCBQTEMgZnJhbWUgbGVuZ3RoOiAlIiBHU1RfVElNRV9GT1JNQVQKLSAgICAgICAgIiBudW0gZnJhbWUgc2FtcGxlczogJWQgbmV3IGxlZnRvdmVyOiAlIiBHU1RfVElNRV9GT1JNQVQsCi0gICAgICAgIEdTVF9USU1FX0FSR1MgKGFsaWduZWRfbWlzc2luZ19kdXJhdGlvbiksIHNhbXBsZXMsCi0gICAgICAgIEdTVF9USU1FX0FSR1MgKGRlYy0+bGVmdG92ZXJfcGxjX2R1cmF0aW9uKSk7Ci0gIH0gZWxzZSB7Ci0gICAgLyogdXNlIG1heGltdW0gc2l6ZSAoMTIwIG1zKSBhcyB0aGUgbnVtYmVyIG9mIHJldHVybmVkIHNhbXBsZXMgaXMKLSAgICAgICBub3QgY29uc3RhbnQgb3ZlciB0aGUgc3RyZWFtLiAqLwotICAgIHNhbXBsZXMgPSAxMjAgKiBkZWMtPnNhbXBsZV9yYXRlIC8gMTAwMDsKLSAgfQotCi0gIHBhY2tldF9zaXplID0gc2FtcGxlcyAqIGRlYy0+bl9jaGFubmVscyAqIDI7Ci0KLSAgb3V0YnVmID0KLSAgICAgIGdzdF9hdWRpb19kZWNvZGVyX2FsbG9jYXRlX291dHB1dF9idWZmZXIgKEdTVF9BVURJT19ERUNPREVSIChkZWMpLAotICAgICAgcGFja2V0X3NpemUpOwotICBpZiAoIW91dGJ1ZikgewotICAgIGdvdG8gYnVmZmVyX2ZhaWxlZDsKLSAgfQotCi0gIGdzdF9idWZmZXJfbWFwIChvdXRidWYsICZvbWFwLCBHU1RfTUFQX1dSSVRFKTsKLSAgb3V0X2RhdGEgPSAoZ2ludDE2ICopIG9tYXAuZGF0YTsKLQotICBpZiAoZGVjLT51c2VfaW5iYW5kX2ZlYykgewotICAgIGlmIChnc3RfYnVmZmVyX2dldF9zaXplIChkZWMtPmxhc3RfYnVmZmVyKSA+IDApIHsKLSAgICAgIC8qIG5vcm1hbCBkZWxheWVkIGRlY29kZSAqLwotICAgICAgR1NUX0xPR19PQkpFQ1QgKGRlYywgIkZFQyBlbmFibGVkLCBkZWNvZGluZyBsYXN0IGRlbGF5ZWQgYnVmZmVyIik7Ci0gICAgICBuID0gb3B1c19tdWx0aXN0cmVhbV9kZWNvZGUgKGRlYy0+c3RhdGUsIGRhdGEsIHNpemUsIG91dF9kYXRhLCBzYW1wbGVzLAotICAgICAgICAgIDApOwotICAgIH0gZWxzZSB7Ci0gICAgICAvKiBGRUMgcmVjb25zdHJ1Y3Rpb24gZGVjb2RlICovCi0gICAgICBHU1RfTE9HX09CSkVDVCAoZGVjLCAiRkVDIGVuYWJsZWQsIHJlY29uc3RydWN0aW5nIGxhc3QgYnVmZmVyIik7Ci0gICAgICBuID0gb3B1c19tdWx0aXN0cmVhbV9kZWNvZGUgKGRlYy0+c3RhdGUsIGRhdGEsIHNpemUsIG91dF9kYXRhLCBzYW1wbGVzLAotICAgICAgICAgIDEpOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICAvKiBub3JtYWwgZGVjb2RlICovCi0gICAgR1NUX0xPR19PQkpFQ1QgKGRlYywgIkZFQyBkaXNhYmxlZCwgZGVjb2RpbmcgYnVmZmVyIik7Ci0gICAgbiA9IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlIChkZWMtPnN0YXRlLCBkYXRhLCBzaXplLCBvdXRfZGF0YSwgc2FtcGxlcywgMCk7Ci0gIH0KLSAgZ3N0X2J1ZmZlcl91bm1hcCAob3V0YnVmLCAmb21hcCk7Ci0gIGlmIChkYXRhICE9IE5VTEwpCi0gICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmbWFwKTsKLQotICBpZiAobiA8IDApIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZGVjLCBTVFJFQU0sIERFQ09ERSwgKCJEZWNvZGluZyBlcnJvcjogJWQiLCBuKSwgKE5VTEwpKTsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChvdXRidWYpOwotICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSAgfQotICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJkZWNvZGVkICVkIHNhbXBsZXMiLCBuKTsKLSAgZ3N0X2J1ZmZlcl9zZXRfc2l6ZSAob3V0YnVmLCBuICogMiAqIGRlYy0+bl9jaGFubmVscyk7Ci0KLSAgLyogU2tpcCBhbnkgc2FtcGxlcyB0aGF0IG5lZWQgc2tpcHBpbmcgKi8KLSAgaWYgKGRlYy0+cHJlX3NraXAgPiAwKSB7Ci0gICAgZ3VpbnQgc2NhbGVkX3ByZV9za2lwID0gZGVjLT5wcmVfc2tpcCAqIGRlYy0+c2FtcGxlX3JhdGUgLyA0ODAwMDsKLSAgICBndWludCBza2lwID0gc2NhbGVkX3ByZV9za2lwID4gbiA/IG4gOiBzY2FsZWRfcHJlX3NraXA7Ci0gICAgZ3VpbnQgc2NhbGVkX3NraXAgPSBza2lwICogNDgwMDAgLyBkZWMtPnNhbXBsZV9yYXRlOwotCi0gICAgZ3N0X2J1ZmZlcl9yZXNpemUgKG91dGJ1Ziwgc2tpcCAqIDIgKiBkZWMtPm5fY2hhbm5lbHMsIC0xKTsKLSAgICBkZWMtPnByZV9za2lwIC09IHNjYWxlZF9za2lwOwotICAgIEdTVF9JTkZPX09CSkVDVCAoZGVjLAotICAgICAgICAiU2tpcHBpbmcgJXUgc2FtcGxlcyAoJXUgYXQgNDgwMDAgSHosICV1IGxlZnQgdG8gc2tpcCkiLCBza2lwLAotICAgICAgICBzY2FsZWRfc2tpcCwgZGVjLT5wcmVfc2tpcCk7Ci0gIH0KLQotICBpZiAoZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAob3V0YnVmKSA9PSAwKSB7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAob3V0YnVmKTsKLSAgICBvdXRidWYgPSBOVUxMOwotICB9IGVsc2UgaWYgKGRlYy0+b3B1c19wb3NbMF0gIT0gR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fSU5WQUxJRCkgewotICAgIGdzdF9hdWRpb19idWZmZXJfcmVvcmRlcl9jaGFubmVscyAob3V0YnVmLCBHU1RfQVVESU9fRk9STUFUX1MxNiwKLSAgICAgICAgZGVjLT5uX2NoYW5uZWxzLCBkZWMtPm9wdXNfcG9zLCBkZWMtPmluZm8ucG9zaXRpb24pOwotICB9Ci0KLSAgLyogQXBwbHkgZ2FpbiAqLwotICAvKiBXb3VsZCBiZSBiZXR0ZXIgb2ZmIGxlYXZpbmcgdGhpcyB0byBhIHZvbHVtZSBlbGVtZW50LCBhcyB0aGlzIGlzCi0gICAgIGEgbmFpdmUgY29udmVyc2lvbiB0aGF0IGRvZXMgdG9vIG1hbnkgaW50L2Zsb2F0IGNvbnZlcnNpb25zLgotICAgICBIb3dldmVyLCB3ZSBkb24ndCBoYXZlIGNvbnRyb2wgb3ZlciB0aGUgcGlwZWxpbmUuLi4KLSAgICAgU28gbWFrZSBpdCBvcHRpb25hbCBpZiB0aGUgdXNlciBwcm9ncmFtIHdhbnRzIHRvIHVzZSBhIHZvbHVtZSwKLSAgICAgYnV0IGRvIGl0IGJ5IGRlZmF1bHQgc28gdGhlIGNvcnJlY3Qgdm9sdW1lIGdvZXMgb3V0IGJ5IGRlZmF1bHQgKi8KLSAgaWYgKGRlYy0+YXBwbHlfZ2FpbiAmJiBvdXRidWYgJiYgZGVjLT5yMTI4X2dhaW4pIHsKLSAgICBnc2l6ZSByc2l6ZTsKLSAgICB1bnNpZ25lZCBpbnQgaSwgbnNhbXBsZXM7Ci0gICAgZG91YmxlIHZvbHVtZSA9IGRlYy0+cjEyOF9nYWluX3ZvbHVtZTsKLSAgICBnaW50MTYgKnNhbXBsZXM7Ci0KLSAgICBnc3RfYnVmZmVyX21hcCAob3V0YnVmLCAmb21hcCwgR1NUX01BUF9SRUFEV1JJVEUpOwotICAgIHNhbXBsZXMgPSAoZ2ludDE2ICopIG9tYXAuZGF0YTsKLSAgICByc2l6ZSA9IG9tYXAuc2l6ZTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJBcHBseWluZyBnYWluOiB2b2x1bWUgJWYiLCB2b2x1bWUpOwotICAgIG5zYW1wbGVzID0gcnNpemUgLyAyOwotICAgIGZvciAoaSA9IDA7IGkgPCBuc2FtcGxlczsgKytpKSB7Ci0gICAgICBpbnQgc2FtcGxlID0gKGludCkgKHNhbXBsZXNbaV0gKiB2b2x1bWUgKyAwLjUpOwotICAgICAgc2FtcGxlc1tpXSA9IHNhbXBsZSA8IC0zMjc2OCA/IC0zMjc2OCA6IHNhbXBsZSA+IDMyNzY3ID8gMzI3NjcgOiBzYW1wbGU7Ci0gICAgfQotICAgIGdzdF9idWZmZXJfdW5tYXAgKG91dGJ1ZiwgJm9tYXApOwotICB9Ci0KLSAgaWYgKGRlYy0+dXNlX2luYmFuZF9mZWMpIHsKLSAgICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZkZWMtPmxhc3RfYnVmZmVyLCBidWZmZXIpOwotICB9Ci0KLSAgcmVzID0gZ3N0X2F1ZGlvX2RlY29kZXJfZmluaXNoX2ZyYW1lIChHU1RfQVVESU9fREVDT0RFUiAoZGVjKSwgb3V0YnVmLCAxKTsKLQotICBpZiAocmVzICE9IEdTVF9GTE9XX09LKQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgImZsb3c6ICVzIiwgZ3N0X2Zsb3dfZ2V0X25hbWUgKHJlcykpOwotCi1kb25lOgotICByZXR1cm4gcmVzOwotCi1jcmVhdGlvbl9mYWlsZWQ6Ci0gIEdTVF9FUlJPUl9PQkpFQ1QgKGRlYywgIkZhaWxlZCB0byBjcmVhdGUgT3B1cyBkZWNvZGVyOiAlZCIsIGVycik7Ci0gIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLQotYnVmZmVyX2ZhaWxlZDoKLSAgR1NUX0VSUk9SX09CSkVDVCAoZGVjLCAiRmFpbGVkIHRvIGNyZWF0ZSAldSBieXRlIGJ1ZmZlciIsIHBhY2tldF9zaXplKTsKLSAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9vcHVzX2RlY19zZXRfZm9ybWF0IChHc3RBdWRpb0RlY29kZXIgKiBiZGVjLCBHc3RDYXBzICogY2FwcykKLXsKLSAgR3N0T3B1c0RlYyAqZGVjID0gR1NUX09QVVNfREVDIChiZGVjKTsKLSAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKLSAgR3N0U3RydWN0dXJlICpzOwotICBjb25zdCBHVmFsdWUgKnN0cmVhbWhlYWRlcjsKLSAgR3N0Q2FwcyAqb2xkX2NhcHM7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAic2V0X2Zvcm1hdDogJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOwotCi0gIGlmICgob2xkX2NhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9BVURJT19ERUNPREVSX1NJTktfUEFEIChiZGVjKSkpKSB7Ci0gICAgaWYgKGdzdF9jYXBzX2lzX2VxdWFsIChjYXBzLCBvbGRfY2FwcykpIHsKLSAgICAgIGdzdF9jYXBzX3VucmVmIChvbGRfY2Fwcyk7Ci0gICAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJjYXBzIGRpZG4ndCBjaGFuZ2UiKTsKLSAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJjYXBzIGhhdmUgY2hhbmdlZCwgcmVzZXR0aW5nIGRlY29kZXIiKTsKLSAgICBnc3Rfb3B1c19kZWNfcmVzZXQgKGRlYyk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYgKG9sZF9jYXBzKTsKLSAgfQotCi0gIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLSAgaWYgKChzdHJlYW1oZWFkZXIgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAocywgInN0cmVhbWhlYWRlciIpKSAmJgotICAgICAgR19WQUxVRV9IT0xEUyAoc3RyZWFtaGVhZGVyLCBHU1RfVFlQRV9BUlJBWSkgJiYKLSAgICAgIGdzdF92YWx1ZV9hcnJheV9nZXRfc2l6ZSAoc3RyZWFtaGVhZGVyKSA+PSAyKSB7Ci0gICAgY29uc3QgR1ZhbHVlICpoZWFkZXIsICp2b3JiaXNjb21tZW50OwotICAgIEdzdEJ1ZmZlciAqYnVmOwotICAgIEdzdEZsb3dSZXR1cm4gcmVzID0gR1NUX0ZMT1dfT0s7Ci0KLSAgICBoZWFkZXIgPSBnc3RfdmFsdWVfYXJyYXlfZ2V0X3ZhbHVlIChzdHJlYW1oZWFkZXIsIDApOwotICAgIGlmIChoZWFkZXIgJiYgR19WQUxVRV9IT0xEUyAoaGVhZGVyLCBHU1RfVFlQRV9CVUZGRVIpKSB7Ci0gICAgICBidWYgPSBnc3RfdmFsdWVfZ2V0X2J1ZmZlciAoaGVhZGVyKTsKLSAgICAgIHJlcyA9IGdzdF9vcHVzX2RlY19wYXJzZV9oZWFkZXIgKGRlYywgYnVmKTsKLSAgICAgIGlmIChyZXMgIT0gR1NUX0ZMT1dfT0spCi0gICAgICAgIGdvdG8gZG9uZTsKLSAgICAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJmRlYy0+c3RyZWFtaGVhZGVyLCBidWYpOwotICAgIH0KLQotICAgIHZvcmJpc2NvbW1lbnQgPSBnc3RfdmFsdWVfYXJyYXlfZ2V0X3ZhbHVlIChzdHJlYW1oZWFkZXIsIDEpOwotICAgIGlmICh2b3JiaXNjb21tZW50ICYmIEdfVkFMVUVfSE9MRFMgKHZvcmJpc2NvbW1lbnQsIEdTVF9UWVBFX0JVRkZFUikpIHsKLSAgICAgIGJ1ZiA9IGdzdF92YWx1ZV9nZXRfYnVmZmVyICh2b3JiaXNjb21tZW50KTsKLSAgICAgIHJlcyA9IGdzdF9vcHVzX2RlY19wYXJzZV9jb21tZW50cyAoZGVjLCBidWYpOwotICAgICAgaWYgKHJlcyAhPSBHU1RfRkxPV19PSykKLSAgICAgICAgZ290byBkb25lOwotICAgICAgZ3N0X2J1ZmZlcl9yZXBsYWNlICgmZGVjLT52b3JiaXNjb21tZW50LCBidWYpOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICAvKiBkZWZhdWx0cyBpZiBub3QgaW4gdGhlIGNhcHMgKi8KLSAgICBkZWMtPm5fY2hhbm5lbHMgPSAyOwotICAgIGRlYy0+c2FtcGxlX3JhdGUgPSA0ODAwMDsKLQotICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgImNoYW5uZWxzIiwgJmRlYy0+bl9jaGFubmVscyk7Ci0gICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzLCAicmF0ZSIsICZkZWMtPnNhbXBsZV9yYXRlKTsKLQotICAgIC8qIGRlZmF1bHQgc3RlcmVvIG1hcHBpbmcgKi8KLSAgICBkZWMtPmNoYW5uZWxfbWFwcGluZ19mYW1pbHkgPSAwOwotICAgIGRlYy0+Y2hhbm5lbF9tYXBwaW5nWzBdID0gMDsKLSAgICBkZWMtPmNoYW5uZWxfbWFwcGluZ1sxXSA9IDE7Ci0gICAgZGVjLT5uX3N0cmVhbXMgPSAxOwotICAgIGRlYy0+bl9zdGVyZW9fc3RyZWFtcyA9IDE7Ci0KLSAgICBnc3Rfb3B1c19kZWNfbmVnb3RpYXRlIChkZWMsIE5VTEwpOwotICB9Ci0KLWRvbmU6Ci0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotbWVtY21wX2J1ZmZlcnMgKEdzdEJ1ZmZlciAqIGJ1ZjEsIEdzdEJ1ZmZlciAqIGJ1ZjIpCi17Ci0gIGdzaXplIHNpemUxLCBzaXplMjsKLSAgZ2Jvb2xlYW4gcmVzOwotICBHc3RNYXBJbmZvIG1hcDsKLQotICBzaXplMSA9IGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZjEpOwotICBzaXplMiA9IGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZjIpOwotCi0gIGlmIChzaXplMSAhPSBzaXplMikKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZjEsICZtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gIHJlcyA9IGdzdF9idWZmZXJfbWVtY21wIChidWYyLCAwLCBtYXAuZGF0YSwgbWFwLnNpemUpID09IDA7Ci0gIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZjEsICZtYXApOwotCi0gIHJldHVybiByZXM7Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3Rfb3B1c19kZWNfaGFuZGxlX2ZyYW1lIChHc3RBdWRpb0RlY29kZXIgKiBhZGVjLCBHc3RCdWZmZXIgKiBidWYpCi17Ci0gIEdzdEZsb3dSZXR1cm4gcmVzOwotICBHc3RPcHVzRGVjICpkZWM7Ci0KLSAgLyogbm8gZmFuY3kgZHJhaW5pbmcgKi8KLSAgaWYgKEdfVU5MSUtFTFkgKCFidWYpKQotICAgIHJldHVybiBHU1RfRkxPV19PSzsKLQotICBkZWMgPSBHU1RfT1BVU19ERUMgKGFkZWMpOwotICBHU1RfTE9HX09CSkVDVCAoZGVjLAotICAgICAgIkdvdCBidWZmZXIgdHMgJSIgR1NUX1RJTUVfRk9STUFUICIsIGR1cmF0aW9uICUiIEdTVF9USU1FX0ZPUk1BVCwKLSAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpKSwKLSAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZikpKTsKLQotICAvKiBJZiB3ZSBoYXZlIHRoZSBzdHJlYW1oZWFkZXIgYW5kIHZvcmJpc2NvbW1lbnQgZnJvbSB0aGUgY2FwcyBhbHJlYWR5Ci0gICAqIGlnbm9yZSB0aGVtIGhlcmUgKi8KLSAgaWYgKGRlYy0+c3RyZWFtaGVhZGVyICYmIGRlYy0+dm9yYmlzY29tbWVudCkgewotICAgIGlmIChtZW1jbXBfYnVmZmVycyAoZGVjLT5zdHJlYW1oZWFkZXIsIGJ1ZikpIHsKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgImZvdW5kIHN0cmVhbWhlYWRlciIpOwotICAgICAgZ3N0X2F1ZGlvX2RlY29kZXJfZmluaXNoX2ZyYW1lIChhZGVjLCBOVUxMLCAxKTsKLSAgICAgIHJlcyA9IEdTVF9GTE9XX09LOwotICAgIH0gZWxzZSBpZiAobWVtY21wX2J1ZmZlcnMgKGRlYy0+dm9yYmlzY29tbWVudCwgYnVmKSkgewotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiZm91bmQgdm9yYmlzY29tbWVudHMiKTsKLSAgICAgIGdzdF9hdWRpb19kZWNvZGVyX2ZpbmlzaF9mcmFtZSAoYWRlYywgTlVMTCwgMSk7Ci0gICAgICByZXMgPSBHU1RfRkxPV19PSzsKLSAgICB9IGVsc2UgewotICAgICAgcmVzID0gb3B1c19kZWNfY2hhaW5fcGFyc2VfZGF0YSAoZGVjLCBidWYpOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICAvKiBPdGhlcndpc2UgZmFsbCBiYWNrIHRvIHBhY2tldCBjb3VudGluZyBhbmQgYXNzdW1lIHRoYXQgdGhlCi0gICAgICogZmlyc3QgdHdvIHBhY2tldHMgbWlnaHQgYmUgdGhlIGhlYWRlcnMsIGNoZWNraW5nIG1hZ2ljLiAqLwotICAgIHN3aXRjaCAoZGVjLT5wYWNrZXRubykgewotICAgICAgY2FzZSAwOgotICAgICAgICBpZiAoZ3N0X29wdXNfaGVhZGVyX2lzX2hlYWRlciAoYnVmLCAiT3B1c0hlYWQiLCA4KSkgewotICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgImZvdW5kIHN0cmVhbWhlYWRlciIpOwotICAgICAgICAgIHJlcyA9IGdzdF9vcHVzX2RlY19wYXJzZV9oZWFkZXIgKGRlYywgYnVmKTsKLSAgICAgICAgICBnc3RfYXVkaW9fZGVjb2Rlcl9maW5pc2hfZnJhbWUgKGFkZWMsIE5VTEwsIDEpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHJlcyA9IG9wdXNfZGVjX2NoYWluX3BhcnNlX2RhdGEgKGRlYywgYnVmKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMToKLSAgICAgICAgaWYgKGdzdF9vcHVzX2hlYWRlcl9pc19oZWFkZXIgKGJ1ZiwgIk9wdXNUYWdzIiwgOCkpIHsKLSAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJjb3VudGVkIHZvcmJpc2NvbW1lbnRzIik7Ci0gICAgICAgICAgcmVzID0gZ3N0X29wdXNfZGVjX3BhcnNlX2NvbW1lbnRzIChkZWMsIGJ1Zik7Ci0gICAgICAgICAgZ3N0X2F1ZGlvX2RlY29kZXJfZmluaXNoX2ZyYW1lIChhZGVjLCBOVUxMLCAxKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICByZXMgPSBvcHVzX2RlY19jaGFpbl9wYXJzZV9kYXRhIChkZWMsIGJ1Zik7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgewotICAgICAgICByZXMgPSBvcHVzX2RlY19jaGFpbl9wYXJzZV9kYXRhIChkZWMsIGJ1Zik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIGRlYy0+cGFja2V0bm8rKzsKLQotICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X29wdXNfZGVjX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsCi0gICAgR1BhcmFtU3BlYyAqIHBzcGVjKQotewotICBHc3RPcHVzRGVjICpkZWMgPSBHU1RfT1BVU19ERUMgKG9iamVjdCk7Ci0KLSAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX1VTRV9JTkJBTkRfRkVDOgotICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIGRlYy0+dXNlX2luYmFuZF9mZWMpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0FQUExZX0dBSU46Ci0gICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgZGVjLT5hcHBseV9nYWluKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKLWdzdF9vcHVzX2RlY19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0gICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLXsKLSAgR3N0T3B1c0RlYyAqZGVjID0gR1NUX09QVVNfREVDIChvYmplY3QpOwotCi0gIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9VU0VfSU5CQU5EX0ZFQzoKLSAgICAgIGRlYy0+dXNlX2luYmFuZF9mZWMgPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQVBQTFlfR0FJTjoKLSAgICAgIGRlYy0+YXBwbHlfZ2FpbiA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdG9wdXNkZWMuaCBiL2V4dC9vcHVzL2dzdG9wdXNkZWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjhkNDNhOS4uMDAwMDAwMAotLS0gYS9leHQvb3B1cy9nc3RvcHVzZGVjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgPDE5OTk+IEVyaWsgV2FsdGhpbnNlbiA8b21lZ2FAY3NlLm9naS5lZHU+Ci0gKiBDb3B5cmlnaHQgKEMpIDwyMDA4PiBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KLSAqIENvcHlyaWdodCAoQykgPDIwMTEtMjAxMj4gVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBfX0dTVF9PUFVTX0RFQ19IX18KLSNkZWZpbmUgX19HU1RfT1BVU19ERUNfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2dzdGF1ZGlvZGVjb2Rlci5oPgotI2luY2x1ZGUgPG9wdXNfbXVsdGlzdHJlYW0uaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIEdTVF9UWVBFX09QVVNfREVDIFwKLSAgKGdzdF9vcHVzX2RlY19nZXRfdHlwZSgpKQotI2RlZmluZSBHU1RfT1BVU19ERUMob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9PUFVTX0RFQyxHc3RPcHVzRGVjKSkKLSNkZWZpbmUgR1NUX09QVVNfREVDX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX09QVVNfREVDLEdzdE9wdXNEZWNDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19PUFVTX0RFQyhvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX09QVVNfREVDKSkKLSNkZWZpbmUgR1NUX0lTX09QVVNfREVDX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX09QVVNfREVDKSkKLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdE9wdXNEZWMgR3N0T3B1c0RlYzsKLXR5cGVkZWYgc3RydWN0IF9Hc3RPcHVzRGVjQ2xhc3MgR3N0T3B1c0RlY0NsYXNzOwotCi1zdHJ1Y3QgX0dzdE9wdXNEZWMgewotICBHc3RBdWRpb0RlY29kZXIgICAgICAgZWxlbWVudDsKLQotICBPcHVzTVNEZWNvZGVyICAgICAgICAqc3RhdGU7Ci0KLSAgZ3VpbnQ2NCAgICAgICAgICAgICAgIHBhY2tldG5vOwotCi0gIEdzdEJ1ZmZlciAgICAgICAgICAgICpzdHJlYW1oZWFkZXI7Ci0gIEdzdEJ1ZmZlciAgICAgICAgICAgICp2b3JiaXNjb21tZW50OwotCi0gIGludCBzYW1wbGVfcmF0ZTsKLSAgaW50IG5fY2hhbm5lbHM7Ci0gIGd1aW50MzIgcHJlX3NraXA7Ci0gIGdpbnQxNiByMTI4X2dhaW47Ci0KLSAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gb3B1c19wb3NbNjRdOwotICBHc3RBdWRpb0luZm8gaW5mbzsKLQotICBndWludDggbl9zdHJlYW1zOwotICBndWludDggbl9zdGVyZW9fc3RyZWFtczsKLSAgZ3VpbnQ4IGNoYW5uZWxfbWFwcGluZ19mYW1pbHk7Ci0gIGd1aW50OCBjaGFubmVsX21hcHBpbmdbMjU2XTsKLQotICBnYm9vbGVhbiBhcHBseV9nYWluOwotICBkb3VibGUgcjEyOF9nYWluX3ZvbHVtZTsKLQotICBnYm9vbGVhbiB1c2VfaW5iYW5kX2ZlYzsKLSAgR3N0QnVmZmVyICpsYXN0X2J1ZmZlcjsKLSAgZ2Jvb2xlYW4gcHJpbWVkOwotCi0gIGd1aW50NjQgbGVmdG92ZXJfcGxjX2R1cmF0aW9uOwotfTsKLQotc3RydWN0IF9Hc3RPcHVzRGVjQ2xhc3MgewotICBHc3RBdWRpb0RlY29kZXJDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1HVHlwZSBnc3Rfb3B1c19kZWNfZ2V0X3R5cGUgKHZvaWQpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogX19HU1RfT1BVU19ERUNfSF9fICovCmRpZmYgLS1naXQgYS9leHQvb3B1cy9nc3RvcHVzZW5jLmMgYi9leHQvb3B1cy9nc3RvcHVzZW5jLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkZmQ0NDEuLjAwMDAwMDAKLS0tIGEvZXh0L29wdXMvZ3N0b3B1c2VuYy5jCisrKyAvZGV2L251bGwKQEAgLTEsMTE4MiArMCwwIEBACi0vKiBHU3RyZWFtZXIgT3B1cyBFbmNvZGVyCi0gKiBDb3B5cmlnaHQgKEMpIDwxOTk5PiBFcmlrIFdhbHRoaW5zZW4gPG9tZWdhQGNzZS5vZ2kuZWR1PgotICogQ29weXJpZ2h0IChDKSA8MjAwOD4gU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Ci0gKiBDb3B5cmlnaHQgKEMpIDwyMDExPiBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0vKgotICogQmFzZWQgb24gdGhlIHNwZWV4ZW5jIGVsZW1lbnQKLSAqLwotCi0vKioKLSAqIFNFQ1RJT046ZWxlbWVudC1vcHVzZW5jCi0gKiBAc2VlX2Fsc286IG9wdXNkZWMsIG9nZ211eAotICoKLSAqIFRoaXMgZWxlbWVudCBlbmNvZGVzIHJhdyBhdWRpbyB0byBPUFVTLgotICoKLSAqIDxyZWZzZWN0Mj4KLSAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+Ci0gKiB8WwotICogZ3N0LWxhdW5jaCAtdiBhdWRpb3Rlc3RzcmMgd2F2ZT1zaW5lIG51bS1idWZmZXJzPTEwMCAhIGF1ZGlvY29udmVydCAhIG9wdXNlbmMgISBvZ2dtdXggISBmaWxlc2luayBsb2NhdGlvbj1zaW5lLm9nZwotICogXXwgRW5jb2RlIGEgdGVzdCBzaW5lIHNpZ25hbCB0byBPZ2cvT1BVUy4KLSAqIDwvcmVmc2VjdDI+Ci0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHRpbWUuaD4KLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8b3B1cy5oPgotCi0jaW5jbHVkZSA8Z3N0L2dzdHRhZ3NldHRlci5oPgotI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgotI2luY2x1ZGUgPGdzdC9nbGliLWNvbXBhdC1wcml2YXRlLmg+Ci0jaW5jbHVkZSAiZ3N0b3B1c2hlYWRlci5oIgotI2luY2x1ZGUgImdzdG9wdXNjb21tb24uaCIKLSNpbmNsdWRlICJnc3RvcHVzZW5jLmgiCi0KLUdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKG9wdXNlbmNfZGVidWcpOwotI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgb3B1c2VuY19kZWJ1ZwotCi0vKiBTb21lIGFyYml0cmFyeSBib3VuZHMgYmV5b25kIHdoaWNoIGl0IHJlYWxseSBkb2Vzbid0IG1ha2Ugc2Vuc2UuCi0gICBUaGUgc3BlYyBtZW50aW9ucyA2IGtiL3MgdG8gNTEwIGtiL3MsIHNvIDQwMDAgYW5kIDY1MDAwMCBvdWdodCB0byBiZQotICAgc2FmZSBhcyBwcm9wZXJ0eSBib3VuZHMuICovCi0jZGVmaW5lIExPV0VTVF9CSVRSQVRFIDQwMDAKLSNkZWZpbmUgSElHSEVTVF9CSVRSQVRFIDY1MDAwMAotCi0jZGVmaW5lIEdTVF9PUFVTX0VOQ19UWVBFX0JBTkRXSURUSCAoZ3N0X29wdXNfZW5jX2JhbmR3aWR0aF9nZXRfdHlwZSgpKQotc3RhdGljIEdUeXBlCi1nc3Rfb3B1c19lbmNfYmFuZHdpZHRoX2dldF90eXBlICh2b2lkKQotewotICBzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSB2YWx1ZXNbXSA9IHsKLSAgICB7T1BVU19CQU5EV0lEVEhfTkFSUk9XQkFORCwgIk5hcnJvdyBiYW5kIiwgIm5hcnJvd2JhbmQifSwKLSAgICB7T1BVU19CQU5EV0lEVEhfTUVESVVNQkFORCwgIk1lZGl1bSBiYW5kIiwgIm1lZGl1bWJhbmQifSwKLSAgICB7T1BVU19CQU5EV0lEVEhfV0lERUJBTkQsICJXaWRlIGJhbmQiLCAid2lkZWJhbmQifSwKLSAgICB7T1BVU19CQU5EV0lEVEhfU1VQRVJXSURFQkFORCwgIlN1cGVyIHdpZGUgYmFuZCIsICJzdXBlcndpZGViYW5kIn0sCi0gICAge09QVVNfQkFORFdJRFRIX0ZVTExCQU5ELCAiRnVsbCBiYW5kIiwgImZ1bGxiYW5kIn0sCi0gICAge09QVVNfQVVUTywgIkF1dG8iLCAiYXV0byJ9LAotICAgIHswLCBOVUxMLCBOVUxMfQotICB9OwotICBzdGF0aWMgdm9sYXRpbGUgR1R5cGUgaWQgPSAwOwotCi0gIGlmIChnX29uY2VfaW5pdF9lbnRlciAoKGdzaXplICopICYgaWQpKSB7Ci0gICAgR1R5cGUgX2lkOwotCi0gICAgX2lkID0gZ19lbnVtX3JlZ2lzdGVyX3N0YXRpYyAoIkdzdE9wdXNFbmNCYW5kd2lkdGgiLCB2YWx1ZXMpOwotCi0gICAgZ19vbmNlX2luaXRfbGVhdmUgKChnc2l6ZSAqKSAmIGlkLCBfaWQpOwotICB9Ci0KLSAgcmV0dXJuIGlkOwotfQotCi0jZGVmaW5lIEdTVF9PUFVTX0VOQ19UWVBFX0ZSQU1FX1NJWkUgKGdzdF9vcHVzX2VuY19mcmFtZV9zaXplX2dldF90eXBlKCkpCi1zdGF0aWMgR1R5cGUKLWdzdF9vcHVzX2VuY19mcmFtZV9zaXplX2dldF90eXBlICh2b2lkKQotewotICBzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSB2YWx1ZXNbXSA9IHsKLSAgICB7MiwgIjIuNSIsICIyLjUifSwKLSAgICB7NSwgIjUiLCAiNSJ9LAotICAgIHsxMCwgIjEwIiwgIjEwIn0sCi0gICAgezIwLCAiMjAiLCAiMjAifSwKLSAgICB7NDAsICI0MCIsICI0MCJ9LAotICAgIHs2MCwgIjYwIiwgIjYwIn0sCi0gICAgezAsIE5VTEwsIE5VTEx9Ci0gIH07Ci0gIHN0YXRpYyB2b2xhdGlsZSBHVHlwZSBpZCA9IDA7Ci0KLSAgaWYgKGdfb25jZV9pbml0X2VudGVyICgoZ3NpemUgKikgJiBpZCkpIHsKLSAgICBHVHlwZSBfaWQ7Ci0KLSAgICBfaWQgPSBnX2VudW1fcmVnaXN0ZXJfc3RhdGljICgiR3N0T3B1c0VuY0ZyYW1lU2l6ZSIsIHZhbHVlcyk7Ci0KLSAgICBnX29uY2VfaW5pdF9sZWF2ZSAoKGdzaXplICopICYgaWQsIF9pZCk7Ci0gIH0KLQotICByZXR1cm4gaWQ7Ci19Ci0KLSNkZWZpbmUgR1NUX09QVVNfRU5DX1RZUEVfQVVESU9fVFlQRSAoZ3N0X29wdXNfZW5jX2F1ZGlvX3R5cGVfZ2V0X3R5cGUoKSkKLXN0YXRpYyBHVHlwZQotZ3N0X29wdXNfZW5jX2F1ZGlvX3R5cGVfZ2V0X3R5cGUgKHZvaWQpCi17Ci0gIHN0YXRpYyBjb25zdCBHRW51bVZhbHVlIHZhbHVlc1tdID0gewotICAgIHtPUFVTX0FQUExJQ0FUSU9OX0FVRElPLCAiR2VuZXJpYyBhdWRpbyIsICJnZW5lcmljIn0sCi0gICAge09QVVNfQVBQTElDQVRJT05fVk9JUCwgIlZvaWNlIiwgInZvaWNlIn0sCi0gICAgezAsIE5VTEwsIE5VTEx9Ci0gIH07Ci0gIHN0YXRpYyB2b2xhdGlsZSBHVHlwZSBpZCA9IDA7Ci0KLSAgaWYgKGdfb25jZV9pbml0X2VudGVyICgoZ3NpemUgKikgJiBpZCkpIHsKLSAgICBHVHlwZSBfaWQ7Ci0KLSAgICBfaWQgPSBnX2VudW1fcmVnaXN0ZXJfc3RhdGljICgiR3N0T3B1c0VuY0F1ZGlvVHlwZSIsIHZhbHVlcyk7Ci0KLSAgICBnX29uY2VfaW5pdF9sZWF2ZSAoKGdzaXplICopICYgaWQsIF9pZCk7Ci0gIH0KLQotICByZXR1cm4gaWQ7Ci19Ci0KLSNkZWZpbmUgR1NUX09QVVNfRU5DX1RZUEVfQklUUkFURV9UWVBFIChnc3Rfb3B1c19lbmNfYml0cmF0ZV90eXBlX2dldF90eXBlKCkpCi1zdGF0aWMgR1R5cGUKLWdzdF9vcHVzX2VuY19iaXRyYXRlX3R5cGVfZ2V0X3R5cGUgKHZvaWQpCi17Ci0gIHN0YXRpYyBjb25zdCBHRW51bVZhbHVlIHZhbHVlc1tdID0gewotICAgIHtCSVRSQVRFX1RZUEVfQ0JSLCAiQ0JSIiwgImNiciJ9LAotICAgIHtCSVRSQVRFX1RZUEVfVkJSLCAiVkJSIiwgInZiciJ9LAotICAgIHtCSVRSQVRFX1RZUEVfQ09OU1RSQUlORURfVkJSLCAiQ29uc3RyYWluZWQgVkJSIiwgImNvbnN0cmFpbmVkLXZiciJ9LAotICAgIHswLCBOVUxMLCBOVUxMfQotICB9OwotICBzdGF0aWMgdm9sYXRpbGUgR1R5cGUgaWQgPSAwOwotCi0gIGlmIChnX29uY2VfaW5pdF9lbnRlciAoKGdzaXplICopICYgaWQpKSB7Ci0gICAgR1R5cGUgX2lkOwotCi0gICAgX2lkID0gZ19lbnVtX3JlZ2lzdGVyX3N0YXRpYyAoIkdzdE9wdXNFbmNCaXRyYXRlVHlwZSIsIHZhbHVlcyk7Ci0KLSAgICBnX29uY2VfaW5pdF9sZWF2ZSAoKGdzaXplICopICYgaWQsIF9pZCk7Ci0gIH0KLQotICByZXR1cm4gaWQ7Ci19Ci0KLSNkZWZpbmUgRk9STUFUX1NUUiBHU1RfQVVESU9fTkUoUzE2KQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmtfZmFjdG9yeSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImF1ZGlvL3gtcmF3LCAiCi0gICAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSAiIEZPUk1BVF9TVFIgIiwgIgotICAgICAgICAibGF5b3V0ID0gKHN0cmluZykgaW50ZXJsZWF2ZWQsICIKLSAgICAgICAgInJhdGUgPSAoaW50KSA0ODAwMCwgIgotICAgICAgICAiY2hhbm5lbHMgPSAoaW50KSBbIDEsIDIgXTsgIgotICAgICAgICAiYXVkaW8veC1yYXcsICIKLSAgICAgICAgImZvcm1hdCA9IChzdHJpbmcpICIgRk9STUFUX1NUUiAiLCAiCi0gICAgICAgICJsYXlvdXQgPSAoc3RyaW5nKSBpbnRlcmxlYXZlZCwgIgotICAgICAgICAicmF0ZSA9IChpbnQpIHsgODAwMCwgMTIwMDAsIDE2MDAwLCAyNDAwMCB9LCAiCi0gICAgICAgICJjaGFubmVscyA9IChpbnQpIFsgMSwgMiBdICIpCi0gICAgKTsKLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY19mYWN0b3J5ID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAotICAgIEdTVF9QQURfU1JDLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImF1ZGlvL3gtb3B1cyIpCi0gICAgKTsKLQotI2RlZmluZSBERUZBVUxUX0FVRElPICAgICAgICAgICBUUlVFCi0jZGVmaW5lIERFRkFVTFRfQVVESU9fVFlQRSAgICAgIE9QVVNfQVBQTElDQVRJT05fQVVESU8KLSNkZWZpbmUgREVGQVVMVF9CSVRSQVRFICAgICAgICAgNjQwMDAKLSNkZWZpbmUgREVGQVVMVF9CQU5EV0lEVEggICAgICAgT1BVU19CQU5EV0lEVEhfRlVMTEJBTkQKLSNkZWZpbmUgREVGQVVMVF9GUkFNRVNJWkUgICAgICAgMjAKLSNkZWZpbmUgREVGQVVMVF9DQlIgICAgICAgICAgICAgVFJVRQotI2RlZmluZSBERUZBVUxUX0NPTlNUUkFJTkVEX1ZCUiBUUlVFCi0jZGVmaW5lIERFRkFVTFRfQklUUkFURV9UWVBFICAgIEJJVFJBVEVfVFlQRV9DQlIKLSNkZWZpbmUgREVGQVVMVF9DT01QTEVYSVRZICAgICAgMTAKLSNkZWZpbmUgREVGQVVMVF9JTkJBTkRfRkVDICAgICAgRkFMU0UKLSNkZWZpbmUgREVGQVVMVF9EVFggICAgICAgICAgICAgRkFMU0UKLSNkZWZpbmUgREVGQVVMVF9QQUNLRVRfTE9TU19QRVJDRU5UIDAKLSNkZWZpbmUgREVGQVVMVF9NQVhfUEFZTE9BRF9TSVpFIDQwMDAKLQotZW51bQotewotICBQUk9QXzAsCi0gIFBST1BfQVVESU8sCi0gIFBST1BfQVVESU9fVFlQRSwKLSAgUFJPUF9CSVRSQVRFLAotICBQUk9QX0JBTkRXSURUSCwKLSAgUFJPUF9GUkFNRV9TSVpFLAotICBQUk9QX0NCUiwKLSAgUFJPUF9DT05TVFJBSU5FRF9WQlIsCi0gIFBST1BfQklUUkFURV9UWVBFLAotICBQUk9QX0NPTVBMRVhJVFksCi0gIFBST1BfSU5CQU5EX0ZFQywKLSAgUFJPUF9EVFgsCi0gIFBST1BfUEFDS0VUX0xPU1NfUEVSQ0VOVCwKLSAgUFJPUF9NQVhfUEFZTE9BRF9TSVpFCi19OwotCi1zdGF0aWMgdm9pZCBnc3Rfb3B1c19lbmNfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOwotCi1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X29wdXNfZW5jX3NpbmtfZXZlbnQgKEdzdEF1ZGlvRW5jb2RlciAqIGJlbmMsCi0gICAgR3N0RXZlbnQgKiBldmVudCk7Ci1zdGF0aWMgR3N0Q2FwcyAqZ3N0X29wdXNfZW5jX3NpbmtfZ2V0Y2FwcyAoR3N0QXVkaW9FbmNvZGVyICogYmVuYywKLSAgICBHc3RDYXBzICogZmlsdGVyKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3Rfb3B1c19lbmNfc2V0dXAgKEdzdE9wdXNFbmMgKiBlbmMpOwotCi1zdGF0aWMgdm9pZCBnc3Rfb3B1c19lbmNfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotc3RhdGljIHZvaWQgZ3N0X29wdXNfZW5jX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLQotc3RhdGljIHZvaWQgZ3N0X29wdXNfZW5jX3NldF90YWdzIChHc3RPcHVzRW5jICogZW5jKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3Rfb3B1c19lbmNfc3RhcnQgKEdzdEF1ZGlvRW5jb2RlciAqIGJlbmMpOwotc3RhdGljIGdib29sZWFuIGdzdF9vcHVzX2VuY19zdG9wIChHc3RBdWRpb0VuY29kZXIgKiBiZW5jKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3Rfb3B1c19lbmNfc2V0X2Zvcm1hdCAoR3N0QXVkaW9FbmNvZGVyICogYmVuYywKLSAgICBHc3RBdWRpb0luZm8gKiBpbmZvKTsKLXN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9vcHVzX2VuY19oYW5kbGVfZnJhbWUgKEdzdEF1ZGlvRW5jb2RlciAqIGJlbmMsCi0gICAgR3N0QnVmZmVyICogYnVmKTsKLXN0YXRpYyBnaW50NjQgZ3N0X29wdXNfZW5jX2dldF9sYXRlbmN5IChHc3RPcHVzRW5jICogZW5jKTsKLQotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X29wdXNfZW5jX2VuY29kZSAoR3N0T3B1c0VuYyAqIGVuYywgR3N0QnVmZmVyICogYnVmZmVyKTsKLQotI2RlZmluZSBnc3Rfb3B1c19lbmNfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcwotR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdE9wdXNFbmMsIGdzdF9vcHVzX2VuYywgR1NUX1RZUEVfQVVESU9fRU5DT0RFUiwKLSAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UgKEdTVF9UWVBFX1RBR19TRVRURVIsIE5VTEwpOwotICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRSAoR1NUX1RZUEVfUFJFU0VULCBOVUxMKSk7Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfb3B1c19lbmNfc2V0X3RhZ3MgKEdzdE9wdXNFbmMgKiBlbmMpCi17Ci0gIEdzdFRhZ0xpc3QgKnRhZ2xpc3Q7Ci0KLSAgLyogY3JlYXRlIGEgdGFnbGlzdCBhbmQgYWRkIGEgYml0cmF0ZSB0YWcgdG8gaXQgKi8KLSAgdGFnbGlzdCA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkgKCk7Ci0gIGdzdF90YWdfbGlzdF9hZGQgKHRhZ2xpc3QsIEdTVF9UQUdfTUVSR0VfUkVQTEFDRSwKLSAgICAgIEdTVF9UQUdfQklUUkFURSwgZW5jLT5iaXRyYXRlLCBOVUxMKTsKLQotICBnc3RfYXVkaW9fZW5jb2Rlcl9tZXJnZV90YWdzIChHU1RfQVVESU9fRU5DT0RFUiAoZW5jKSwgdGFnbGlzdCwKLSAgICAgIEdTVF9UQUdfTUVSR0VfUkVQTEFDRSk7Ci0KLSAgZ3N0X3RhZ19saXN0X3VucmVmICh0YWdsaXN0KTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9vcHVzX2VuY19jbGFzc19pbml0IChHc3RPcHVzRW5jQ2xhc3MgKiBrbGFzcykKLXsKLSAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOwotICBHc3RBdWRpb0VuY29kZXJDbGFzcyAqYmFzZV9jbGFzczsKLSAgR3N0RWxlbWVudENsYXNzICpnc3RlbGVtZW50X2NsYXNzOwotCi0gIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwotICBiYXNlX2NsYXNzID0gKEdzdEF1ZGlvRW5jb2RlckNsYXNzICopIGtsYXNzOwotICBnc3RlbGVtZW50X2NsYXNzID0gKEdzdEVsZW1lbnRDbGFzcyAqKSBrbGFzczsKLQotICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3Rfb3B1c19lbmNfc2V0X3Byb3BlcnR5OwotICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3Rfb3B1c19lbmNfZ2V0X3Byb3BlcnR5OwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCi0gICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzcmNfZmFjdG9yeSkpOwotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc2lua19mYWN0b3J5KSk7Ci0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGdzdGVsZW1lbnRfY2xhc3MsICJPcHVzIGF1ZGlvIGVuY29kZXIiLAotICAgICAgIkNvZGVjL0VuY29kZXIvQXVkaW8iLAotICAgICAgIkVuY29kZXMgYXVkaW8gaW4gT3B1cyBmb3JtYXQiLAotICAgICAgIlZpbmNlbnQgUGVucXVlcmMnaCA8dmluY2VudC5wZW5xdWVyY2hAY29sbGFib3JhLmNvLnVrPiIpOwotCi0gIGJhc2VfY2xhc3MtPnN0YXJ0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9vcHVzX2VuY19zdGFydCk7Ci0gIGJhc2VfY2xhc3MtPnN0b3AgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X29wdXNfZW5jX3N0b3ApOwotICBiYXNlX2NsYXNzLT5zZXRfZm9ybWF0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9vcHVzX2VuY19zZXRfZm9ybWF0KTsKLSAgYmFzZV9jbGFzcy0+aGFuZGxlX2ZyYW1lID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9vcHVzX2VuY19oYW5kbGVfZnJhbWUpOwotICBiYXNlX2NsYXNzLT5zaW5rX2V2ZW50ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9vcHVzX2VuY19zaW5rX2V2ZW50KTsKLSAgYmFzZV9jbGFzcy0+Z2V0Y2FwcyA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfb3B1c19lbmNfc2lua19nZXRjYXBzKTsKLQotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0FVRElPLAotICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJhdWRpbyIsCi0gICAgICAgICAgIkF1ZGlvIG9yIHZvaWNlIiwKLSAgICAgICAgICAiQXVkaW8gb3Igdm9pY2UgKERFUFJFQ0FURUQ6IHVzZSBhdWRpby10eXBlKSIsIERFRkFVTFRfQVVESU8sCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwgR19QQVJBTV9ERVBSRUNBVEVEKSk7Ci0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQVVESU9fVFlQRSwKLSAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiYXVkaW8tdHlwZSIsICJXaGF0IHR5cGUgb2YgYXVkaW8gdG8gb3B0aW1pemUgZm9yIiwKLSAgICAgICAgICAiV2hhdCB0eXBlIG9mIGF1ZGlvIHRvIG9wdGltaXplIGZvciIsIEdTVF9PUFVTX0VOQ19UWVBFX0FVRElPX1RZUEUsCi0gICAgICAgICAgREVGQVVMVF9BVURJT19UWVBFLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKSwgUFJPUF9CSVRSQVRFLAotICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImJpdHJhdGUiLCAiRW5jb2RpbmcgQml0LXJhdGUiLAotICAgICAgICAgICJTcGVjaWZ5IGFuIGVuY29kaW5nIGJpdC1yYXRlIChpbiBicHMpLiIsIExPV0VTVF9CSVRSQVRFLAotICAgICAgICAgIEhJR0hFU1RfQklUUkFURSwgREVGQVVMVF9CSVRSQVRFLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8Ci0gICAgICAgICAgR1NUX1BBUkFNX01VVEFCTEVfUExBWUlORykpOwotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0JBTkRXSURUSCwKLSAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiYmFuZHdpZHRoIiwgIkJhbmQgV2lkdGgiLCAiQXVkaW8gQmFuZCBXaWR0aCIsCi0gICAgICAgICAgR1NUX09QVVNfRU5DX1RZUEVfQkFORFdJRFRILCBERUZBVUxUX0JBTkRXSURUSCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfAotICAgICAgICAgIEdTVF9QQVJBTV9NVVRBQkxFX1BMQVlJTkcpKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9GUkFNRV9TSVpFLAotICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJmcmFtZS1zaXplIiwgIkZyYW1lIFNpemUiLAotICAgICAgICAgICJUaGUgZHVyYXRpb24gb2YgYW4gYXVkaW8gZnJhbWUsIGluIG1zIiwgR1NUX09QVVNfRU5DX1RZUEVfRlJBTUVfU0laRSwKLSAgICAgICAgICBERUZBVUxUX0ZSQU1FU0laRSwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfAotICAgICAgICAgIEdTVF9QQVJBTV9NVVRBQkxFX1BMQVlJTkcpKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9DQlIsCi0gICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImNiciIsICJDb25zdGFudCBiaXQgcmF0ZSIsCi0gICAgICAgICAgIkNvbnN0YW50IGJpdCByYXRlIChERVBSRUNBVEVEOiB1c2UgYml0cmF0ZS10eXBlKSIsIERFRkFVTFRfQ0JSLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8IEdTVF9QQVJBTV9NVVRBQkxFX1BMQVlJTkcKLSAgICAgICAgICB8IEdfUEFSQU1fREVQUkVDQVRFRCkpOwotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0NPTlNUUkFJTkVEX1ZCUiwKLSAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiY29uc3RyYWluZWQtdmJyIiwgIkNvbnN0cmFpbmVkIFZCUiIsCi0gICAgICAgICAgIkNvbnN0cmFpbmVkIFZCUiAoREVQUkVDQVRFRDogdXNlIGJpdHJhdGUtdHlwZSkiLAotICAgICAgICAgIERFRkFVTFRfQ09OU1RSQUlORURfVkJSLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8IEdTVF9QQVJBTV9NVVRBQkxFX1BMQVlJTkcKLSAgICAgICAgICB8IEdfUEFSQU1fREVQUkVDQVRFRCkpOwotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0JJVFJBVEVfVFlQRSwKLSAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiYml0cmF0ZS10eXBlIiwgIkJpdHJhdGUgdHlwZSIsICJCaXRyYXRlIHR5cGUiLAotICAgICAgICAgIEdTVF9PUFVTX0VOQ19UWVBFX0JJVFJBVEVfVFlQRSwgREVGQVVMVF9CSVRSQVRFX1RZUEUsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwKLSAgICAgICAgICBHU1RfUEFSQU1fTVVUQUJMRV9QTEFZSU5HKSk7Ci0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQ09NUExFWElUWSwKLSAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJjb21wbGV4aXR5IiwgIkNvbXBsZXhpdHkiLCAiQ29tcGxleGl0eSIsIDAsIDEwLAotICAgICAgICAgIERFRkFVTFRfQ09NUExFWElUWSwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfAotICAgICAgICAgIEdTVF9QQVJBTV9NVVRBQkxFX1BMQVlJTkcpKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9JTkJBTkRfRkVDLAotICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJpbmJhbmQtZmVjIiwgIkluLWJhbmQgRkVDIiwKLSAgICAgICAgICAiRW5hYmxlIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbiIsIERFRkFVTFRfSU5CQU5EX0ZFQywKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfAotICAgICAgICAgIEdTVF9QQVJBTV9NVVRBQkxFX1BMQVlJTkcpKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9EVFgsCi0gICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImR0eCIsICJEVFgiLCAiRFRYIiwgREVGQVVMVF9EVFgsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwKLSAgICAgICAgICBHU1RfUEFSQU1fTVVUQUJMRV9QTEFZSU5HKSk7Ci0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKEdfT0JKRUNUX0NMQVNTIChrbGFzcyksCi0gICAgICBQUk9QX1BBQ0tFVF9MT1NTX1BFUkNFTlQsIGdfcGFyYW1fc3BlY19pbnQgKCJwYWNrZXQtbG9zcy1wZXJjZW50YWdlIiwKLSAgICAgICAgICAiTG9zcyBwZXJjZW50YWdlIiwgIlBhY2tldCBsb3NzIHBlcmNlbnRhZ2UiLCAwLCAxMDAsCi0gICAgICAgICAgREVGQVVMVF9QQUNLRVRfTE9TU19QRVJDRU5ULAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8Ci0gICAgICAgICAgR1NUX1BBUkFNX01VVEFCTEVfUExBWUlORykpOwotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChHX09CSkVDVF9DTEFTUyAoa2xhc3MpLAotICAgICAgUFJPUF9NQVhfUEFZTE9BRF9TSVpFLCBnX3BhcmFtX3NwZWNfdWludCAoIm1heC1wYXlsb2FkLXNpemUiLAotICAgICAgICAgICJNYXggcGF5bG9hZCBzaXplIiwgIk1heGltdW0gcGF5bG9hZCBzaXplIGluIGJ5dGVzIiwgMiwgNDAwMCwKLSAgICAgICAgICBERUZBVUxUX01BWF9QQVlMT0FEX1NJWkUsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwKLSAgICAgICAgICBHU1RfUEFSQU1fTVVUQUJMRV9QTEFZSU5HKSk7Ci0KLSAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X29wdXNfZW5jX2ZpbmFsaXplKTsKLQotICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAob3B1c2VuY19kZWJ1ZywgIm9wdXNlbmMiLCAwLCAiT3B1cyBlbmNvZGVyIik7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfb3B1c19lbmNfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCi17Ci0gIEdzdE9wdXNFbmMgKmVuYzsKLQotICBlbmMgPSBHU1RfT1BVU19FTkMgKG9iamVjdCk7Ci0KLSAgZ19tdXRleF9jbGVhciAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0KLSAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X29wdXNfZW5jX2luaXQgKEdzdE9wdXNFbmMgKiBlbmMpCi17Ci0gIEdzdEF1ZGlvRW5jb2RlciAqYmVuYyA9IEdTVF9BVURJT19FTkNPREVSIChlbmMpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgImluaXQiKTsKLQotICBHU1RfUEFEX1NFVF9BQ0NFUFRfVEVNUExBVEUgKEdTVF9BVURJT19FTkNPREVSX1NJTktfUEFEIChlbmMpKTsKLQotICBnX211dGV4X2luaXQgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotCi0gIGVuYy0+bl9jaGFubmVscyA9IC0xOwotICBlbmMtPnNhbXBsZV9yYXRlID0gLTE7Ci0gIGVuYy0+ZnJhbWVfc2FtcGxlcyA9IDA7Ci0KLSAgZW5jLT5iaXRyYXRlID0gREVGQVVMVF9CSVRSQVRFOwotICBlbmMtPmJhbmR3aWR0aCA9IERFRkFVTFRfQkFORFdJRFRIOwotICBlbmMtPmZyYW1lX3NpemUgPSBERUZBVUxUX0ZSQU1FU0laRTsKLSAgZW5jLT5iaXRyYXRlX3R5cGUgPSBERUZBVUxUX0JJVFJBVEVfVFlQRTsKLSAgZW5jLT5jb21wbGV4aXR5ID0gREVGQVVMVF9DT01QTEVYSVRZOwotICBlbmMtPmluYmFuZF9mZWMgPSBERUZBVUxUX0lOQkFORF9GRUM7Ci0gIGVuYy0+ZHR4ID0gREVGQVVMVF9EVFg7Ci0gIGVuYy0+cGFja2V0X2xvc3NfcGVyY2VudGFnZSA9IERFRkFVTFRfUEFDS0VUX0xPU1NfUEVSQ0VOVDsKLSAgZW5jLT5tYXhfcGF5bG9hZF9zaXplID0gREVGQVVMVF9NQVhfUEFZTE9BRF9TSVpFOwotICBlbmMtPmF1ZGlvX3R5cGUgPSBERUZBVUxUX0FVRElPX1RZUEU7Ci0KLSAgLyogYXJyYW5nZSBncmFudWxlcG9zIG1hcmtpbmcgKGFuZCByZXF1aXJlZCBwZXJmZWN0IHRzKSAqLwotICBnc3RfYXVkaW9fZW5jb2Rlcl9zZXRfbWFya19ncmFudWxlIChiZW5jLCBUUlVFKTsKLSAgZ3N0X2F1ZGlvX2VuY29kZXJfc2V0X3BlcmZlY3RfdGltZXN0YW1wIChiZW5jLCBUUlVFKTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3Rfb3B1c19lbmNfc3RhcnQgKEdzdEF1ZGlvRW5jb2RlciAqIGJlbmMpCi17Ci0gIEdzdE9wdXNFbmMgKmVuYyA9IEdTVF9PUFVTX0VOQyAoYmVuYyk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAic3RhcnQiKTsKLSAgZW5jLT5lbmNvZGVkX3NhbXBsZXMgPSAwOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9vcHVzX2VuY19zdG9wIChHc3RBdWRpb0VuY29kZXIgKiBiZW5jKQotewotICBHc3RPcHVzRW5jICplbmMgPSBHU1RfT1BVU19FTkMgKGJlbmMpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgInN0b3AiKTsKLSAgaWYgKGVuYy0+c3RhdGUpIHsKLSAgICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfZGVzdHJveSAoZW5jLT5zdGF0ZSk7Ci0gICAgZW5jLT5zdGF0ZSA9IE5VTEw7Ci0gIH0KLSAgZ3N0X3RhZ19zZXR0ZXJfcmVzZXRfdGFncyAoR1NUX1RBR19TRVRURVIgKGVuYykpOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2ludDY0Ci1nc3Rfb3B1c19lbmNfZ2V0X2xhdGVuY3kgKEdzdE9wdXNFbmMgKiBlbmMpCi17Ci0gIGdpbnQ2NCBsYXRlbmN5ID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlIChlbmMtPmZyYW1lX3NhbXBsZXMsIEdTVF9TRUNPTkQsCi0gICAgICBlbmMtPnNhbXBsZV9yYXRlKTsKLSAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAiTGF0ZW5jeTogJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTIChsYXRlbmN5KSk7Ci0gIHJldHVybiBsYXRlbmN5OwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X29wdXNfZW5jX3NldHVwX2Jhc2VfY2xhc3MgKEdzdE9wdXNFbmMgKiBlbmMsIEdzdEF1ZGlvRW5jb2RlciAqIGJlbmMpCi17Ci0gIGdzdF9hdWRpb19lbmNvZGVyX3NldF9sYXRlbmN5IChiZW5jLAotICAgICAgZ3N0X29wdXNfZW5jX2dldF9sYXRlbmN5IChlbmMpLCBnc3Rfb3B1c19lbmNfZ2V0X2xhdGVuY3kgKGVuYykpOwotICBnc3RfYXVkaW9fZW5jb2Rlcl9zZXRfZnJhbWVfc2FtcGxlc19taW4gKGJlbmMsIGVuYy0+ZnJhbWVfc2FtcGxlcyk7Ci0gIGdzdF9hdWRpb19lbmNvZGVyX3NldF9mcmFtZV9zYW1wbGVzX21heCAoYmVuYywgZW5jLT5mcmFtZV9zYW1wbGVzKTsKLSAgZ3N0X2F1ZGlvX2VuY29kZXJfc2V0X2ZyYW1lX21heCAoYmVuYywgMSk7Ci19Ci0KLXN0YXRpYyBnaW50Ci1nc3Rfb3B1c19lbmNfZ2V0X2ZyYW1lX3NhbXBsZXMgKEdzdE9wdXNFbmMgKiBlbmMpCi17Ci0gIGdpbnQgZnJhbWVfc2FtcGxlcyA9IDA7Ci0gIHN3aXRjaCAoZW5jLT5mcmFtZV9zaXplKSB7Ci0gICAgY2FzZSAyOgotICAgICAgZnJhbWVfc2FtcGxlcyA9IGVuYy0+c2FtcGxlX3JhdGUgLyA0MDA7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIDU6Ci0gICAgICBmcmFtZV9zYW1wbGVzID0gZW5jLT5zYW1wbGVfcmF0ZSAvIDIwMDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgMTA6Ci0gICAgICBmcmFtZV9zYW1wbGVzID0gZW5jLT5zYW1wbGVfcmF0ZSAvIDEwMDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgMjA6Ci0gICAgICBmcmFtZV9zYW1wbGVzID0gZW5jLT5zYW1wbGVfcmF0ZSAvIDUwOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSA0MDoKLSAgICAgIGZyYW1lX3NhbXBsZXMgPSBlbmMtPnNhbXBsZV9yYXRlIC8gMjU7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIDYwOgotICAgICAgZnJhbWVfc2FtcGxlcyA9IDMgKiBlbmMtPnNhbXBsZV9yYXRlIC8gNTA7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbmMsICJVbnN1cHBvcnRlZCBmcmFtZSBzaXplOiAlZCIsIGVuYy0+ZnJhbWVfc2l6ZSk7Ci0gICAgICBmcmFtZV9zYW1wbGVzID0gMDsKLSAgICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiBmcmFtZV9zYW1wbGVzOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X29wdXNfZW5jX3NldHVwX3RyaXZpYWxfbWFwcGluZyAoR3N0T3B1c0VuYyAqIGVuYywgZ3VpbnQ4IG1hcHBpbmdbMjU2XSkKLXsKLSAgaW50IG47Ci0KLSAgZm9yIChuID0gMDsgbiA8IDI1NTsgKytuKQotICAgIG1hcHBpbmdbbl0gPSBuOwotfQotCi1zdGF0aWMgaW50Ci1nc3Rfb3B1c19lbmNfZmluZF9jaGFubmVsX3Bvc2l0aW9uIChHc3RPcHVzRW5jICogZW5jLCBjb25zdCBHc3RBdWRpb0luZm8gKiBpbmZvLAotICAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIHBvc2l0aW9uKQotewotICBpbnQgbjsKLSAgZm9yIChuID0gMDsgbiA8IGVuYy0+bl9jaGFubmVsczsgKytuKSB7Ci0gICAgaWYgKEdTVF9BVURJT19JTkZPX1BPU0lUSU9OIChpbmZvLCBuKSA9PSBwb3NpdGlvbikgewotICAgICAgcmV0dXJuIG47Ci0gICAgfQotICB9Ci0gIHJldHVybiAtMTsKLX0KLQotc3RhdGljIGludAotZ3N0X29wdXNfZW5jX2ZpbmRfY2hhbm5lbF9wb3NpdGlvbl9pbl92b3JiaXNfb3JkZXIgKEdzdE9wdXNFbmMgKiBlbmMsCi0gICAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gcG9zaXRpb24pCi17Ci0gIGludCBjOwotCi0gIGZvciAoYyA9IDA7IGMgPCBlbmMtPm5fY2hhbm5lbHM7ICsrYykgewotICAgIGlmIChnc3Rfb3B1c19jaGFubmVsX3Bvc2l0aW9uc1tlbmMtPm5fY2hhbm5lbHMgLSAxXVtjXSA9PSBwb3NpdGlvbikgewotICAgICAgR1NUX0lORk9fT0JKRUNUIChlbmMsCi0gICAgICAgICAgIkNoYW5uZWwgcG9zaXRpb24gJXMgbWFwcyB0byBpbmRleCAlZCBpbiBWb3JiaXMgb3JkZXIiLAotICAgICAgICAgIGdzdF9vcHVzX2NoYW5uZWxfbmFtZXNbcG9zaXRpb25dLCBjKTsKLSAgICAgIHJldHVybiBjOwotICAgIH0KLSAgfQotICBHU1RfV0FSTklOR19PQkpFQ1QgKGVuYywKLSAgICAgICJDaGFubmVsIHBvc2l0aW9uICVzIGlzIG5vdCByZXByZXNlbnRhYmxlIGluIFZvcmJpcyBvcmRlciIsCi0gICAgICBnc3Rfb3B1c19jaGFubmVsX25hbWVzW3Bvc2l0aW9uXSk7Ci0gIHJldHVybiAtMTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9vcHVzX2VuY19zZXR1cF9jaGFubmVsX21hcHBpbmdzIChHc3RPcHVzRW5jICogZW5jLAotICAgIGNvbnN0IEdzdEF1ZGlvSW5mbyAqIGluZm8pCi17Ci0jZGVmaW5lIE1BUFMoaWR4LHBvcykgKEdTVF9BVURJT19JTkZPX1BPU0lUSU9OIChpbmZvLCAoaWR4KSkgPT0gR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fIyNwb3MpCi0KLSAgaW50IG47Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAiU2V0dGluZyB1cCBjaGFubmVsIG1hcHBpbmcgZm9yICVkIGNoYW5uZWxzIiwKLSAgICAgIGVuYy0+bl9jaGFubmVscyk7Ci0KLSAgLyogU3RhcnQgYnkgc2V0dGluZyB1cCBhIGRlZmF1bHQgdHJpdmlhbCBtYXBwaW5nICovCi0gIGVuYy0+bl9zdGVyZW9fc3RyZWFtcyA9IDA7Ci0gIGdzdF9vcHVzX2VuY19zZXR1cF90cml2aWFsX21hcHBpbmcgKGVuYywgZW5jLT5lbmNvZGluZ19jaGFubmVsX21hcHBpbmcpOwotICBnc3Rfb3B1c19lbmNfc2V0dXBfdHJpdmlhbF9tYXBwaW5nIChlbmMsIGVuYy0+ZGVjb2RpbmdfY2hhbm5lbF9tYXBwaW5nKTsKLQotICAvKiBGb3Igb25lIGNoYW5uZWwsIHVzZSB0aGUgYmFzaWMgUlRQIG1hcHBpbmcgKi8KLSAgaWYgKGVuYy0+bl9jaGFubmVscyA9PSAxKSB7Ci0gICAgR1NUX0lORk9fT0JKRUNUIChlbmMsICJNb25vLCB0cml2aWFsIFJUUCBtYXBwaW5nIik7Ci0gICAgZW5jLT5jaGFubmVsX21hcHBpbmdfZmFtaWx5ID0gMDsKLSAgICAvKiBpbXBsaWNpdCBtYXBwaW5nIGZvciBmYW1pbHkgMCAqLwotICAgIHJldHVybjsKLSAgfQotCi0gIC8qIEZvciB0d28gY2hhbm5lbHMsIHVzZSB0aGUgYmFzaWMgUlRQIG1hcHBpbmcgaWYgdGhlIGNoYW5uZWxzIGFyZQotICAgICBtYXBwZWQgYXMgbGVmdC9yaWdodC4gKi8KLSAgaWYgKGVuYy0+bl9jaGFubmVscyA9PSAyKSB7Ci0gICAgaWYgKE1BUFMgKDAsIEZST05UX0xFRlQpICYmIE1BUFMgKDEsIEZST05UX1JJR0hUKSkgewotICAgICAgR1NUX0lORk9fT0JKRUNUIChlbmMsICJTdGVyZW8sIGNhbm9uaWNhbCBtYXBwaW5nIik7Ci0gICAgICBlbmMtPmNoYW5uZWxfbWFwcGluZ19mYW1pbHkgPSAwOwotICAgICAgZW5jLT5uX3N0ZXJlb19zdHJlYW1zID0gMTsKLSAgICAgIC8qIFRoZSBjaGFubmVsIG1hcHBpbmcgaXMgaW1wbGljaXQgZm9yIGZhbWlseSAwLCB0aGF0J3Mgd2h5IHdlIGRvIG5vdAotICAgICAgICAgYXR0ZW1wdCB0byBjcmVhdGUgb25lIGZvciByaWdodC9sZWZ0IC0gdGhpcyB3aWxsIGJlIG1hcHBlZCB0byB0aGUKLSAgICAgICAgIFZvcmJpcyBtYXBwaW5nIGJlbG93LiAqLwotICAgICAgcmV0dXJuOwotICAgIH0gZWxzZSB7Ci0gICAgICBHU1RfREVCVUdfT0JKRUNUIChlbmMsICJTdGVyZW8sIGJ1dCBub3QgY2Fub25pY2FsIG1hcHBpbmcsIGNvbnRpbnVpbmciKTsKLSAgICB9Ci0gIH0KLQotICAvKiBGb3IgY2hhbm5lbHMgYmV0d2VlbiAxIGFuZCA4LCB3ZSB1c2UgdGhlIFZvcmJpcyBtYXBwaW5nIGlmIHdlIGNhbgotICAgICBmaW5kIGEgcGVybXV0YXRpb24gdGhhdCBtYXRjaGVzIGl0LiBNb25vIHdpbGwgaGF2ZSBiZWVuIHRha2VuIGNhcmUKLSAgICAgb2YgZWFybGllciwgYnV0IHRoaXMgY29kZSBhbHNvIGhhbmRsZXMgaXQuIFNhbWUgZm9yIGxlZnQvcmlnaHQgc3RlcmVvLgotICAgICBUaGVyZSBhcmUgdHdvIG1hcHBpbmdzLiBPbmUgbWFwcyB0aGUgaW5wdXQgY2hhbm5lbHMgdG8gYW4gb3JkZXJpbmcKLSAgICAgd2hpY2ggaGFzIHRoZSBuYXR1cmFsIHBhaXJzIGZpcnN0IHNvIHRoZXkgY2FuIGJlbmVmaXQgZnJvbSB0aGUgT3B1cwotICAgICBzdGVyZW8gY2hhbm5lbCBjb3VwbGluZywgYW5kIHRoZSBvdGhlciBtYXBzIHRoaXMgb3JkZXJpbmcgdG8gdGhlCi0gICAgIFZvcmJpcyBvcmRlcmluZy4gKi8KLSAgaWYgKGVuYy0+bl9jaGFubmVscyA+PSAxICYmIGVuYy0+bl9jaGFubmVscyA8PSA4KSB7Ci0gICAgaW50IGMwLCBjMSwgYzB2LCBjMXY7Ci0gICAgaW50IG1hcHBlZDsKLSAgICBnYm9vbGVhbiBwb3NpdGlvbnNfZG9uZVsyNTZdOwotICAgIHN0YXRpYyBjb25zdCBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiBwYWlyc1tdWzJdID0gewotICAgICAge0dTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlQsCi0gICAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFR9LAotICAgICAge0dTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfTEVGVCwKLSAgICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX1JJR0hUfSwKLSAgICAgIHtHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUX09GX0NFTlRFUiwKLSAgICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVF9PRl9DRU5URVJ9LAotICAgICAge0dTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlRfT0ZfQ0VOVEVSLAotICAgICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUX09GX0NFTlRFUn0sCi0gICAgICB7R1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fU0lERV9MRUZULAotICAgICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1NJREVfUklHSFR9LAotICAgIH07Ci0gICAgc2l6ZV90IHBhaXI7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChlbmMsCi0gICAgICAgICJJbiByYW5nZSBmb3IgdGhlIFZvcmJpcyBtYXBwaW5nLCBidWlsZGluZyBjaGFubmVsIG1hcHBpbmcgdGFibGVzIik7Ci0KLSAgICBlbmMtPm5fc3RlcmVvX3N0cmVhbXMgPSAwOwotICAgIG1hcHBlZCA9IDA7Ci0gICAgZm9yIChuID0gMDsgbiA8IDI1NjsgKytuKQotICAgICAgcG9zaXRpb25zX2RvbmVbbl0gPSBGQUxTRTsKLQotICAgIC8qIEZpcnN0LCBmaW5kIGFueSBuYXR1cmFsIHBhaXJzLCBhbmQgbW92ZSB0aGVtIHRvIHRoZSBmcm9udCAqLwotICAgIGZvciAocGFpciA9IDA7IHBhaXIgPCBHX05fRUxFTUVOVFMgKHBhaXJzKTsgKytwYWlyKSB7Ci0gICAgICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiBwMCA9IHBhaXJzW3BhaXJdWzBdOwotICAgICAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gcDEgPSBwYWlyc1twYWlyXVsxXTsKLSAgICAgIGMwID0gZ3N0X29wdXNfZW5jX2ZpbmRfY2hhbm5lbF9wb3NpdGlvbiAoZW5jLCBpbmZvLCBwMCk7Ci0gICAgICBjMSA9IGdzdF9vcHVzX2VuY19maW5kX2NoYW5uZWxfcG9zaXRpb24gKGVuYywgaW5mbywgcDEpOwotICAgICAgaWYgKGMwID49IDAgJiYgYzEgPj0gMCkgewotICAgICAgICAvKiBXZSBmb3VuZCBhIG5hdHVyYWwgcGFpciAqLwotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChlbmMsICJOYXR1cmFsIHBhaXIgJyVzLyVzJyBmb3VuZCBhdCAlZCAlZCIsCi0gICAgICAgICAgICBnc3Rfb3B1c19jaGFubmVsX25hbWVzW3AwXSwgZ3N0X29wdXNfY2hhbm5lbF9uYW1lc1twMV0sIGMwLCBjMSk7Ci0gICAgICAgIC8qIEZpbmQgd2hlcmUgdGhleSBtYXAgaW4gVm9yYmlzIG9yZGVyICovCi0gICAgICAgIGMwdiA9IGdzdF9vcHVzX2VuY19maW5kX2NoYW5uZWxfcG9zaXRpb25faW5fdm9yYmlzX29yZGVyIChlbmMsIHAwKTsKLSAgICAgICAgYzF2ID0gZ3N0X29wdXNfZW5jX2ZpbmRfY2hhbm5lbF9wb3NpdGlvbl9pbl92b3JiaXNfb3JkZXIgKGVuYywgcDEpOwotICAgICAgICBpZiAoYzB2IDwgMCB8fCBjMXYgPCAwKSB7Ci0gICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbmMsCi0gICAgICAgICAgICAgICJDYW5ub3QgbWFwIGNoYW5uZWwgcG9zaXRpb25zIHRvIFZvcmJpcyBvcmRlciwgdXNpbmcgdW5rbm93biBtYXBwaW5nIik7Ci0gICAgICAgICAgZW5jLT5jaGFubmVsX21hcHBpbmdfZmFtaWx5ID0gMjU1OwotICAgICAgICAgIGVuYy0+bl9zdGVyZW9fc3RyZWFtcyA9IDA7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZW5jLT5lbmNvZGluZ19jaGFubmVsX21hcHBpbmdbbWFwcGVkXSA9IGMwOwotICAgICAgICBlbmMtPmVuY29kaW5nX2NoYW5uZWxfbWFwcGluZ1ttYXBwZWQgKyAxXSA9IGMxOwotICAgICAgICBlbmMtPmRlY29kaW5nX2NoYW5uZWxfbWFwcGluZ1tjMHZdID0gbWFwcGVkOwotICAgICAgICBlbmMtPmRlY29kaW5nX2NoYW5uZWxfbWFwcGluZ1tjMXZdID0gbWFwcGVkICsgMTsKLSAgICAgICAgZW5jLT5uX3N0ZXJlb19zdHJlYW1zKys7Ci0gICAgICAgIG1hcHBlZCArPSAyOwotICAgICAgICBwb3NpdGlvbnNfZG9uZVtwMF0gPSBwb3NpdGlvbnNfZG9uZVtwMV0gPSBUUlVFOwotICAgICAgfQotICAgIH0KLQotICAgIC8qIE5vdyBhZGQgYWxsIG90aGVyIGlucHV0IGNoYW5uZWxzIGFzIG1vbm8gc3RyZWFtcyAqLwotICAgIGZvciAobiA9IDA7IG4gPCBlbmMtPm5fY2hhbm5lbHM7ICsrbikgewotICAgICAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gcG9zaXRpb24gPSBHU1RfQVVESU9fSU5GT19QT1NJVElPTiAoaW5mbywgbik7Ci0KLSAgICAgIC8qIGlmIHdlIGFscmVhZHkgbWFwcGVkIGl0IHdoaWxlIHNlYXJjaGluZyBmb3IgcGFpcnMsIG5vdGhpbmcgZWxzZQotICAgICAgICAgbmVlZHMgdG8gYmUgZG9uZSAqLwotICAgICAgaWYgKCFwb3NpdGlvbnNfZG9uZVtwb3NpdGlvbl0pIHsKLSAgICAgICAgaW50IGN2OwotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChlbmMsICJDaGFubmVsIHBvc2l0aW9uICVzIGlzIG5vdCBtYXBwZWQgeWV0LCBhZGRpbmciLAotICAgICAgICAgICAgZ3N0X29wdXNfY2hhbm5lbF9uYW1lc1twb3NpdGlvbl0pOwotICAgICAgICBjdiA9IGdzdF9vcHVzX2VuY19maW5kX2NoYW5uZWxfcG9zaXRpb25faW5fdm9yYmlzX29yZGVyIChlbmMsIHBvc2l0aW9uKTsKLSAgICAgICAgaWYgKGN2IDwgMCkgewotICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZW5jLAotICAgICAgICAgICAgICAiQ2Fubm90IG1hcCBjaGFubmVsIHBvc2l0aW9ucyB0byBWb3JiaXMgb3JkZXIsIHVzaW5nIHVua25vd24gbWFwcGluZyIpOwotICAgICAgICAgIGVuYy0+Y2hhbm5lbF9tYXBwaW5nX2ZhbWlseSA9IDI1NTsKLSAgICAgICAgICBlbmMtPm5fc3RlcmVvX3N0cmVhbXMgPSAwOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBlbmMtPmVuY29kaW5nX2NoYW5uZWxfbWFwcGluZ1ttYXBwZWRdID0gbjsKLSAgICAgICAgZW5jLT5kZWNvZGluZ19jaGFubmVsX21hcHBpbmdbY3ZdID0gbWFwcGVkOwotICAgICAgICBtYXBwZWQrKzsKLSAgICAgIH0KLSAgICB9Ci0KLSNpZm5kZWYgR1NUX0RJU0FCTEVfR1NUX0RFQlVHCi0gICAgR1NUX0lORk9fT0JKRUNUIChlbmMsCi0gICAgICAgICJNYXBwaW5nIHRhYmxlcyBidWlsdDogJWQgY2hhbm5lbHMsICVkIHN0ZXJlbyBzdHJlYW1zIiwgZW5jLT5uX2NoYW5uZWxzLAotICAgICAgICBlbmMtPm5fc3RlcmVvX3N0cmVhbXMpOwotICAgIGdzdF9vcHVzX2NvbW1vbl9sb2dfY2hhbm5lbF9tYXBwaW5nX3RhYmxlIChHU1RfRUxFTUVOVCAoZW5jKSwgb3B1c2VuY19kZWJ1ZywKLSAgICAgICAgIkVuY29kaW5nIG1hcHBpbmcgdGFibGUiLCBlbmMtPm5fY2hhbm5lbHMsCi0gICAgICAgIGVuYy0+ZW5jb2RpbmdfY2hhbm5lbF9tYXBwaW5nKTsKLSAgICBnc3Rfb3B1c19jb21tb25fbG9nX2NoYW5uZWxfbWFwcGluZ190YWJsZSAoR1NUX0VMRU1FTlQgKGVuYyksIG9wdXNlbmNfZGVidWcsCi0gICAgICAgICJEZWNvZGluZyBtYXBwaW5nIHRhYmxlIiwgZW5jLT5uX2NoYW5uZWxzLAotICAgICAgICBlbmMtPmRlY29kaW5nX2NoYW5uZWxfbWFwcGluZyk7Ci0jZW5kaWYKLQotICAgIGVuYy0+Y2hhbm5lbF9tYXBwaW5nX2ZhbWlseSA9IDE7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgLyogTW9yZSB0aGFuIDggY2hhbm5lbHMsIGlmIGZ1dHVyZSBtYXBwaW5ncyBhcmUgYWRkZWQgZm9yIHRob3NlICovCi0KLSAgLyogRm9yIG90aGVyIGNhc2VzLCB3ZSB1c2UgdW5kZWZpbmVkLCB3aXRoIHRoZSBkZWZhdWx0IHRyaXZpYWwgbWFwcGluZwotICAgICBhbmQgYWxsIG1vbm8gc3RyZWFtcyAqLwotICBHU1RfV0FSTklOR19PQkpFQ1QgKGVuYywgIlVua25vd24gbWFwcGluZyIpOwotICBlbmMtPmNoYW5uZWxfbWFwcGluZ19mYW1pbHkgPSAyNTU7Ci0gIGVuYy0+bl9zdGVyZW9fc3RyZWFtcyA9IDA7Ci0KLSN1bmRlZiBNQVBTCi19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X29wdXNfZW5jX3NldF9mb3JtYXQgKEdzdEF1ZGlvRW5jb2RlciAqIGJlbmMsIEdzdEF1ZGlvSW5mbyAqIGluZm8pCi17Ci0gIEdzdE9wdXNFbmMgKmVuYzsKLQotICBlbmMgPSBHU1RfT1BVU19FTkMgKGJlbmMpOwotCi0gIGdfbXV0ZXhfbG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0KLSAgZW5jLT5uX2NoYW5uZWxzID0gR1NUX0FVRElPX0lORk9fQ0hBTk5FTFMgKGluZm8pOwotICBlbmMtPnNhbXBsZV9yYXRlID0gR1NUX0FVRElPX0lORk9fUkFURSAoaW5mbyk7Ci0gIGdzdF9vcHVzX2VuY19zZXR1cF9jaGFubmVsX21hcHBpbmdzIChlbmMsIGluZm8pOwotICBHU1RfREVCVUdfT0JKRUNUIChiZW5jLCAiU2V0dXAgd2l0aCAlZCBjaGFubmVscywgJWQgSHoiLCBlbmMtPm5fY2hhbm5lbHMsCi0gICAgICBlbmMtPnNhbXBsZV9yYXRlKTsKLQotICAvKiBoYW5kbGUgcmVjb25maWd1cmUgKi8KLSAgaWYgKGVuYy0+c3RhdGUpIHsKLSAgICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfZGVzdHJveSAoZW5jLT5zdGF0ZSk7Ci0gICAgZW5jLT5zdGF0ZSA9IE5VTEw7Ci0gIH0KLSAgaWYgKCFnc3Rfb3B1c19lbmNfc2V0dXAgKGVuYykpIHsKLSAgICBnX211dGV4X3VubG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgLyogdXBkYXRlIHRoZSB0YWdzICovCi0gIGdzdF9vcHVzX2VuY19zZXRfdGFncyAoZW5jKTsKLQotICBlbmMtPmZyYW1lX3NhbXBsZXMgPSBnc3Rfb3B1c19lbmNfZ2V0X2ZyYW1lX3NhbXBsZXMgKGVuYyk7Ci0KLSAgLyogZmVlZGJhY2sgdG8gYmFzZSBjbGFzcyAqLwotICBnc3Rfb3B1c19lbmNfc2V0dXBfYmFzZV9jbGFzcyAoZW5jLCBiZW5jKTsKLQotICBnX211dGV4X3VubG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X29wdXNfZW5jX3NldHVwIChHc3RPcHVzRW5jICogZW5jKQotewotICBpbnQgZXJyb3IgPSBPUFVTX09LOwotICBHc3RDYXBzICpjYXBzOwotICBnYm9vbGVhbiByZXQ7Ci0KLSNpZm5kZWYgR1NUX0RJU0FCTEVfR1NUX0RFQlVHCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywKLSAgICAgICJzZXR1cDogJWQgSHosICVkIGNoYW5uZWxzLCAlZCBzdGVyZW8gc3RyZWFtcywgZmFtaWx5ICVkIiwKLSAgICAgIGVuYy0+c2FtcGxlX3JhdGUsIGVuYy0+bl9jaGFubmVscywgZW5jLT5uX3N0ZXJlb19zdHJlYW1zLAotICAgICAgZW5jLT5jaGFubmVsX21hcHBpbmdfZmFtaWx5KTsKLSAgR1NUX0lORk9fT0JKRUNUIChlbmMsICJNYXBwaW5nIHRhYmxlcyBidWlsdDogJWQgY2hhbm5lbHMsICVkIHN0ZXJlbyBzdHJlYW1zIiwKLSAgICAgIGVuYy0+bl9jaGFubmVscywgZW5jLT5uX3N0ZXJlb19zdHJlYW1zKTsKLSAgZ3N0X29wdXNfY29tbW9uX2xvZ19jaGFubmVsX21hcHBpbmdfdGFibGUgKEdTVF9FTEVNRU5UIChlbmMpLCBvcHVzZW5jX2RlYnVnLAotICAgICAgIkVuY29kaW5nIG1hcHBpbmcgdGFibGUiLCBlbmMtPm5fY2hhbm5lbHMsIGVuYy0+ZW5jb2RpbmdfY2hhbm5lbF9tYXBwaW5nKTsKLSAgZ3N0X29wdXNfY29tbW9uX2xvZ19jaGFubmVsX21hcHBpbmdfdGFibGUgKEdTVF9FTEVNRU5UIChlbmMpLCBvcHVzZW5jX2RlYnVnLAotICAgICAgIkRlY29kaW5nIG1hcHBpbmcgdGFibGUiLCBlbmMtPm5fY2hhbm5lbHMsIGVuYy0+ZGVjb2RpbmdfY2hhbm5lbF9tYXBwaW5nKTsKLSNlbmRpZgotCi0gIGVuYy0+c3RhdGUgPSBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3JlYXRlIChlbmMtPnNhbXBsZV9yYXRlLAotICAgICAgZW5jLT5uX2NoYW5uZWxzLCBlbmMtPm5fY2hhbm5lbHMgLSBlbmMtPm5fc3RlcmVvX3N0cmVhbXMsCi0gICAgICBlbmMtPm5fc3RlcmVvX3N0cmVhbXMsIGVuYy0+ZW5jb2RpbmdfY2hhbm5lbF9tYXBwaW5nLAotICAgICAgZW5jLT5hdWRpb190eXBlLCAmZXJyb3IpOwotICBpZiAoIWVuYy0+c3RhdGUgfHwgZXJyb3IgIT0gT1BVU19PSykKLSAgICBnb3RvIGVuY29kZXJfY3JlYXRpb25fZmFpbGVkOwotCi0gIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGwgKGVuYy0+c3RhdGUsIE9QVVNfU0VUX0JJVFJBVEUgKGVuYy0+Yml0cmF0ZSksIDApOwotICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsIChlbmMtPnN0YXRlLCBPUFVTX1NFVF9CQU5EV0lEVEggKGVuYy0+YmFuZHdpZHRoKSwKLSAgICAgIDApOwotICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsIChlbmMtPnN0YXRlLAotICAgICAgT1BVU19TRVRfVkJSIChlbmMtPmJpdHJhdGVfdHlwZSAhPSBCSVRSQVRFX1RZUEVfQ0JSKSwgMCk7Ci0gIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGwgKGVuYy0+c3RhdGUsCi0gICAgICBPUFVTX1NFVF9WQlJfQ09OU1RSQUlOVCAoZW5jLT5iaXRyYXRlX3R5cGUgPT0KLSAgICAgICAgICBCSVRSQVRFX1RZUEVfQ09OU1RSQUlORURfVkJSKSwgMCk7Ci0gIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGwgKGVuYy0+c3RhdGUsCi0gICAgICBPUFVTX1NFVF9DT01QTEVYSVRZIChlbmMtPmNvbXBsZXhpdHkpLCAwKTsKLSAgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2N0bCAoZW5jLT5zdGF0ZSwKLSAgICAgIE9QVVNfU0VUX0lOQkFORF9GRUMgKGVuYy0+aW5iYW5kX2ZlYyksIDApOwotICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsIChlbmMtPnN0YXRlLCBPUFVTX1NFVF9EVFggKGVuYy0+ZHR4KSwgMCk7Ci0gIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGwgKGVuYy0+c3RhdGUsCi0gICAgICBPUFVTX1NFVF9QQUNLRVRfTE9TU19QRVJDIChlbmMtPnBhY2tldF9sb3NzX3BlcmNlbnRhZ2UpLCAwKTsKLQotICBHU1RfTE9HX09CSkVDVCAoZW5jLCAid2UgaGF2ZSBmcmFtZSBzaXplICVkIiwgZW5jLT5mcmFtZV9zaXplKTsKLQotICBnc3Rfb3B1c19oZWFkZXJfY3JlYXRlX2NhcHMgKCZjYXBzLCBOVUxMLCBlbmMtPm5fY2hhbm5lbHMsCi0gICAgICBlbmMtPm5fc3RlcmVvX3N0cmVhbXMsIGVuYy0+c2FtcGxlX3JhdGUsIGVuYy0+Y2hhbm5lbF9tYXBwaW5nX2ZhbWlseSwKLSAgICAgIGVuYy0+ZGVjb2RpbmdfY2hhbm5lbF9tYXBwaW5nLAotICAgICAgZ3N0X3RhZ19zZXR0ZXJfZ2V0X3RhZ19saXN0IChHU1RfVEFHX1NFVFRFUiAoZW5jKSkpOwotCi0gIC8qIG5lZ290aWF0ZSB3aXRoIHRoZXNlIGNhcHMgKi8KLSAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAiaGVyZSBhcmUgdGhlIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKLQotICByZXQgPSBnc3RfYXVkaW9fZW5jb2Rlcl9zZXRfb3V0cHV0X2Zvcm1hdCAoR1NUX0FVRElPX0VOQ09ERVIgKGVuYyksIGNhcHMpOwotICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0KLSAgcmV0dXJuIHJldDsKLQotZW5jb2Rlcl9jcmVhdGlvbl9mYWlsZWQ6Ci0gIEdTVF9FUlJPUl9PQkpFQ1QgKGVuYywgIkVuY29kZXIgY3JlYXRpb24gZmFpbGVkIik7Ci0gIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3Rfb3B1c19lbmNfc2lua19ldmVudCAoR3N0QXVkaW9FbmNvZGVyICogYmVuYywgR3N0RXZlbnQgKiBldmVudCkKLXsKLSAgR3N0T3B1c0VuYyAqZW5jOwotCi0gIGVuYyA9IEdTVF9PUFVTX0VOQyAoYmVuYyk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAic2luayBldmVudDogJXMiLCBHU1RfRVZFTlRfVFlQRV9OQU1FIChldmVudCkpOwotICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKLSAgICBjYXNlIEdTVF9FVkVOVF9UQUc6Ci0gICAgewotICAgICAgR3N0VGFnTGlzdCAqbGlzdDsKLSAgICAgIEdzdFRhZ1NldHRlciAqc2V0dGVyID0gR1NUX1RBR19TRVRURVIgKGVuYyk7Ci0gICAgICBjb25zdCBHc3RUYWdNZXJnZU1vZGUgbW9kZSA9IGdzdF90YWdfc2V0dGVyX2dldF90YWdfbWVyZ2VfbW9kZSAoc2V0dGVyKTsKLQotICAgICAgZ3N0X2V2ZW50X3BhcnNlX3RhZyAoZXZlbnQsICZsaXN0KTsKLSAgICAgIGdzdF90YWdfc2V0dGVyX21lcmdlX3RhZ3MgKHNldHRlciwgbGlzdCwgbW9kZSk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBHU1RfRVZFTlRfU0VHTUVOVDoKLSAgICAgIGVuYy0+ZW5jb2RlZF9zYW1wbGVzID0gMDsKLSAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIEdTVF9BVURJT19FTkNPREVSX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zaW5rX2V2ZW50IChiZW5jLCBldmVudCk7Ci19Ci0KLXN0YXRpYyBHc3RDYXBzICoKLWdzdF9vcHVzX2VuY19zaW5rX2dldGNhcHMgKEdzdEF1ZGlvRW5jb2RlciAqIGJlbmMsIEdzdENhcHMgKiBmaWx0ZXIpCi17Ci0gIEdzdE9wdXNFbmMgKmVuYzsKLSAgR3N0Q2FwcyAqY2FwczsKLSAgR3N0Q2FwcyAqdGNhcHM7Ci0gIEdzdENhcHMgKnBlZXJjYXBzID0gTlVMTDsKLSAgR3N0Q2FwcyAqaW50ZXJzZWN0ID0gTlVMTDsKLSAgZ3VpbnQgaTsKLSAgZ2Jvb2xlYW4gYWxsb3dfbXVsdGlzdHJlYW07Ci0KLSAgZW5jID0gR1NUX09QVVNfRU5DIChiZW5jKTsKLQotICBHU1RfREVCVUdfT0JKRUNUIChlbmMsICJzaW5rIGdldGNhcHMiKTsKLQotICBwZWVyY2FwcyA9IGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzIChHU1RfQVVESU9fRU5DT0RFUl9TUkNfUEFEIChiZW5jKSwgTlVMTCk7Ci0gIGlmICghcGVlcmNhcHMpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChiZW5jLCAiTm8gcGVlcmNhcHMsIHJldHVybmluZyB0ZW1wbGF0ZSBzaW5rIGNhcHMiKTsKLSAgICByZXR1cm4gZ3N0X3BhZF9nZXRfcGFkX3RlbXBsYXRlX2NhcHMgKEdTVF9BVURJT19FTkNPREVSX1NJTktfUEFEIChiZW5jKSk7Ci0gIH0KLQotICB0Y2FwcyA9IGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChHU1RfQVVESU9fRU5DT0RFUl9TUkNfUEFEIChiZW5jKSk7Ci0gIGludGVyc2VjdCA9IGdzdF9jYXBzX2ludGVyc2VjdCAocGVlcmNhcHMsIHRjYXBzKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKHRjYXBzKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKHBlZXJjYXBzKTsKLQotICBpZiAoZ3N0X2NhcHNfaXNfZW1wdHkgKGludGVyc2VjdCkpCi0gICAgcmV0dXJuIGludGVyc2VjdDsKLQotICBhbGxvd19tdWx0aXN0cmVhbSA9IEZBTFNFOwotICBmb3IgKGkgPSAwOyBpIDwgZ3N0X2NhcHNfZ2V0X3NpemUgKGludGVyc2VjdCk7IGkrKykgewotICAgIEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGludGVyc2VjdCwgaSk7Ci0gICAgZ2Jvb2xlYW4gbXVsdGlzdHJlYW07Ci0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2Jvb2xlYW4gKHMsICJtdWx0aXN0cmVhbSIsICZtdWx0aXN0cmVhbSkpIHsKLSAgICAgIGlmIChtdWx0aXN0cmVhbSkgewotICAgICAgICBhbGxvd19tdWx0aXN0cmVhbSA9IFRSVUU7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIGFsbG93X211bHRpc3RyZWFtID0gVFJVRTsKLSAgICB9Ci0gIH0KLQotICBnc3RfY2Fwc191bnJlZiAoaW50ZXJzZWN0KTsKLQotICBjYXBzID0gZ3N0X3BhZF9nZXRfcGFkX3RlbXBsYXRlX2NhcHMgKEdTVF9BVURJT19FTkNPREVSX1NJTktfUEFEIChiZW5jKSk7Ci0gIGNhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChjYXBzKTsKLSAgaWYgKCFhbGxvd19tdWx0aXN0cmVhbSkgewotICAgIEdWYWx1ZSByYW5nZSA9IHsgMCB9OwotICAgIGdfdmFsdWVfaW5pdCAoJnJhbmdlLCBHU1RfVFlQRV9JTlRfUkFOR0UpOwotICAgIGdzdF92YWx1ZV9zZXRfaW50X3JhbmdlICgmcmFuZ2UsIDEsIDIpOwotICAgIGZvciAoaSA9IDA7IGkgPCBnc3RfY2Fwc19nZXRfc2l6ZSAoY2Fwcyk7IGkrKykgewotICAgICAgR3N0U3RydWN0dXJlICpzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgaSk7Ci0gICAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAocywgImNoYW5uZWxzIiwgJnJhbmdlKTsKLSAgICB9Ci0gICAgZ192YWx1ZV91bnNldCAoJnJhbmdlKTsKLSAgfQotCi0gIGlmIChmaWx0ZXIpIHsKLSAgICBHc3RDYXBzICp0bXAgPSBnc3RfY2Fwc19pbnRlcnNlY3RfZnVsbCAoY2FwcywgZmlsdGVyLAotICAgICAgICBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOwotICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLSAgICBjYXBzID0gdG1wOwotICB9Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAiUmV0dXJuaW5nIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKLSAgcmV0dXJuIGNhcHM7Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3Rfb3B1c19lbmNfZW5jb2RlIChHc3RPcHVzRW5jICogZW5jLCBHc3RCdWZmZXIgKiBidWYpCi17Ci0gIGd1aW50OCAqYmRhdGEgPSBOVUxMLCAqZGF0YSwgKm1kYXRhID0gTlVMTDsKLSAgZ3NpemUgYnNpemUsIHNpemU7Ci0gIGdzaXplIGJ5dGVzOwotICBnaW50IHJldCA9IEdTVF9GTE9XX09LOwotICBHc3RNYXBJbmZvIG1hcDsKLSAgR3N0TWFwSW5mbyBvbWFwOwotICBnaW50IG91dHNpemU7Ci0gIEdzdEJ1ZmZlciAqb3V0YnVmOwotICBHc3RTZWdtZW50ICpzZWdtZW50OwotICBHc3RDbG9ja1RpbWUgZHVyYXRpb247Ci0KLSAgZ3VpbnQgbWF4X3BheWxvYWRfc2l6ZTsKLSAgZ2ludCBmcmFtZV9zYW1wbGVzOwotCi0gIGdfbXV0ZXhfbG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0KLSAgYnl0ZXMgPSBlbmMtPmZyYW1lX3NhbXBsZXMgKiBlbmMtPm5fY2hhbm5lbHMgKiAyOwotICBtYXhfcGF5bG9hZF9zaXplID0gZW5jLT5tYXhfcGF5bG9hZF9zaXplOwotICBmcmFtZV9zYW1wbGVzID0gZW5jLT5mcmFtZV9zYW1wbGVzOwotCi0gIGdfbXV0ZXhfdW5sb2NrICgmZW5jLT5wcm9wZXJ0eV9sb2NrKTsKLQotICBpZiAoR19MSUtFTFkgKGJ1ZikpIHsKLSAgICBnc3RfYnVmZmVyX21hcCAoYnVmLCAmbWFwLCBHU1RfTUFQX1JFQUQpOwotICAgIGJkYXRhID0gbWFwLmRhdGE7Ci0gICAgYnNpemUgPSBtYXAuc2l6ZTsKLQotICAgIGlmIChHX1VOTElLRUxZIChic2l6ZSAlIGJ5dGVzKSkgewotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAiZHJhaW5pbmc7IGFkZGluZyBzaWxlbmNlIHNhbXBsZXMiKTsKLQotICAgICAgLyogSWYgZW5jb2RpbmcgcGFydCBvZiBhIGZyYW1lLCBhbmQgd2UgaGF2ZSBubyBzZXQgc3RvcCB0aW1lIG9uCi0gICAgICAgKiB0aGUgb3V0cHV0IHNlZ21lbnQsIHdlIHVwZGF0ZSB0aGUgc2VnbWVudCBzdG9wIHRpbWUgdG8gcmVmbGVjdAotICAgICAgICogdGhlIGxhc3Qgc2FtcGxlLiBUaGlzIHdpbGwgbGV0IG9nZ211eCBzZXQgdGhlIGxhc3QgcGFnZSdzCi0gICAgICAgKiBncmFucG9zIHRvIHRlbGwgYSBkZWNvZGVyIHRoZSBkdW1teSBzYW1wbGVzIHNob3VsZCBiZSBjbGlwcGVkLgotICAgICAgICovCi0gICAgICBzZWdtZW50ID0gJkdTVF9BVURJT19FTkNPREVSX09VVFBVVF9TRUdNRU5UIChlbmMpOwotICAgICAgaWYgKCFHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoc2VnbWVudC0+c3RvcCkpIHsKLSAgICAgICAgaW50IGlucHV0X3NhbXBsZXMgPSBic2l6ZSAvIChlbmMtPm5fY2hhbm5lbHMgKiAyKTsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLAotICAgICAgICAgICAgIk5vIHN0b3AgdGltZSBhbmQgcGFydGlhbCBmcmFtZSwgdXBkYXRpbmcgc2VnbWVudCIpOwotICAgICAgICBkdXJhdGlvbiA9Ci0gICAgICAgICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGUgKGVuYy0+ZW5jb2RlZF9zYW1wbGVzICsgaW5wdXRfc2FtcGxlcywKLSAgICAgICAgICAgIEdTVF9TRUNPTkQsIGVuYy0+c2FtcGxlX3JhdGUpOwotICAgICAgICBzZWdtZW50LT5zdG9wID0gc2VnbWVudC0+c3RhcnQgKyBkdXJhdGlvbjsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAibmV3IG91dHB1dCBzZWdtZW50ICUiIEdTVF9TRUdNRU5UX0ZPUk1BVCwKLSAgICAgICAgICAgIHNlZ21lbnQpOwotICAgICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9BVURJT19FTkNPREVSX1NSQ19QQUQgKGVuYyksCi0gICAgICAgICAgICBnc3RfZXZlbnRfbmV3X3NlZ21lbnQgKHNlZ21lbnQpKTsKLSAgICAgIH0KLQotICAgICAgc2l6ZSA9ICgoYnNpemUgLyBieXRlcykgKyAxKSAqIGJ5dGVzOwotICAgICAgbWRhdGEgPSBnX21hbGxvYzAgKHNpemUpOwotICAgICAgbWVtY3B5IChtZGF0YSwgYmRhdGEsIGJzaXplKTsKLSAgICAgIGRhdGEgPSBtZGF0YTsKLSAgICB9IGVsc2UgewotICAgICAgZGF0YSA9IGJkYXRhOwotICAgICAgc2l6ZSA9IGJzaXplOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChlbmMsICJub3RoaW5nIHRvIGRyYWluIik7Ci0gICAgZ290byBkb25lOwotICB9Ci0KLSAgZ19hc3NlcnQgKHNpemUgPT0gYnl0ZXMpOwotCi0gIG91dGJ1ZiA9Ci0gICAgICBnc3RfYXVkaW9fZW5jb2Rlcl9hbGxvY2F0ZV9vdXRwdXRfYnVmZmVyIChHU1RfQVVESU9fRU5DT0RFUiAoZW5jKSwKLSAgICAgIG1heF9wYXlsb2FkX3NpemUgKiBlbmMtPm5fY2hhbm5lbHMpOwotICBpZiAoIW91dGJ1ZikKLSAgICBnb3RvIGRvbmU7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAiZW5jb2RpbmcgJWQgc2FtcGxlcyAoJWQgYnl0ZXMpIiwKLSAgICAgIGZyYW1lX3NhbXBsZXMsIChpbnQpIGJ5dGVzKTsKLQotICBnc3RfYnVmZmVyX21hcCAob3V0YnVmLCAmb21hcCwgR1NUX01BUF9XUklURSk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAiZW5jb2RpbmcgJWQgc2FtcGxlcyAoJWQgYnl0ZXMpIiwKLSAgICAgIGZyYW1lX3NhbXBsZXMsIChpbnQpIGJ5dGVzKTsKLQotICBvdXRzaXplID0KLSAgICAgIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2RlIChlbmMtPnN0YXRlLCAoY29uc3QgZ2ludDE2ICopIGRhdGEsCi0gICAgICBmcmFtZV9zYW1wbGVzLCBvbWFwLmRhdGEsIG1heF9wYXlsb2FkX3NpemUgKiBlbmMtPm5fY2hhbm5lbHMpOwotCi0gIGdzdF9idWZmZXJfdW5tYXAgKG91dGJ1ZiwgJm9tYXApOwotCi0gIGlmIChvdXRzaXplIDwgMCkgewotICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGVuYywgIkVuY29kaW5nIGZhaWxlZDogJWQiLCBvdXRzaXplKTsKLSAgICByZXQgPSBHU1RfRkxPV19FUlJPUjsKLSAgICBnb3RvIGRvbmU7Ci0gIH0gZWxzZSBpZiAob3V0c2l6ZSA+IG1heF9wYXlsb2FkX3NpemUpIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGVuYywKLSAgICAgICAgIkVuY29kZWQgc2l6ZSAlZCBpcyBoaWdoZXIgdGhhbiBtYXggcGF5bG9hZCBzaXplICglZCBieXRlcykiLAotICAgICAgICBvdXRzaXplLCBtYXhfcGF5bG9hZF9zaXplKTsKLSAgICByZXQgPSBHU1RfRkxPV19FUlJPUjsKLSAgICBnb3RvIGRvbmU7Ci0gIH0KLQotICBHU1RfREVCVUdfT0JKRUNUIChlbmMsICJPdXRwdXQgcGFja2V0IGlzICV1IGJ5dGVzIiwgb3V0c2l6ZSk7Ci0gIGdzdF9idWZmZXJfc2V0X3NpemUgKG91dGJ1Ziwgb3V0c2l6ZSk7Ci0KLSAgcmV0ID0KLSAgICAgIGdzdF9hdWRpb19lbmNvZGVyX2ZpbmlzaF9mcmFtZSAoR1NUX0FVRElPX0VOQ09ERVIgKGVuYyksIG91dGJ1ZiwKLSAgICAgIGZyYW1lX3NhbXBsZXMpOwotICBlbmMtPmVuY29kZWRfc2FtcGxlcyArPSBmcmFtZV9zYW1wbGVzOwotCi1kb25lOgotCi0gIGlmIChiZGF0YSkKLSAgICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZtYXApOwotCi0gIGlmIChtZGF0YSkKLSAgICBnX2ZyZWUgKG1kYXRhKTsKLQotICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X29wdXNfZW5jX2hhbmRsZV9mcmFtZSAoR3N0QXVkaW9FbmNvZGVyICogYmVuYywgR3N0QnVmZmVyICogYnVmKQotewotICBHc3RPcHVzRW5jICplbmM7Ci0gIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7Ci0KLSAgZW5jID0gR1NUX09QVVNfRU5DIChiZW5jKTsKLSAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAiaGFuZGxlX2ZyYW1lIik7Ci0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgInJlY2VpdmVkIGJ1ZmZlciAlcCBvZiAlIiBHX0dTSVpFX0ZPUk1BVCAiIGJ5dGVzIiwgYnVmLAotICAgICAgYnVmID8gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmKSA6IDApOwotCi0gIHJldCA9IGdzdF9vcHVzX2VuY19lbmNvZGUgKGVuYywgYnVmKTsKLQotICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X29wdXNfZW5jX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsCi0gICAgR1BhcmFtU3BlYyAqIHBzcGVjKQotewotICBHc3RPcHVzRW5jICplbmM7Ci0KLSAgZW5jID0gR1NUX09QVVNfRU5DIChvYmplY3QpOwotCi0gIGdfbXV0ZXhfbG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0KLSAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX0FVRElPOgotICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsCi0gICAgICAgICAgZW5jLT5hdWRpb190eXBlID09IE9QVVNfQVBQTElDQVRJT05fQVVESU8gPyBUUlVFIDogRkFMU0UpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0FVRElPX1RZUEU6Ci0gICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgZW5jLT5hdWRpb190eXBlKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9CSVRSQVRFOgotICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgZW5jLT5iaXRyYXRlKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9CQU5EV0lEVEg6Ci0gICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgZW5jLT5iYW5kd2lkdGgpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0ZSQU1FX1NJWkU6Ci0gICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgZW5jLT5mcmFtZV9zaXplKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9DQlI6Ci0gICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGVuYywKLSAgICAgICAgICAiY2JyIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQ7IHVzZSBiaXRyYXRlLXR5cGUgaW5zdGVhZCIpOwotICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIGVuYy0+Yml0cmF0ZV90eXBlID09IEJJVFJBVEVfVFlQRV9DQlIpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NPTlNUUkFJTkVEX1ZCUjoKLSAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZW5jLAotICAgICAgICAgICJjb25zdHJhaW5lZC12YnIgcHJvcGVydHkgaXMgZGVwcmVjYXRlZDsgdXNlIGJpdHJhdGUtdHlwZSBpbnN0ZWFkIik7Ci0gICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwKLSAgICAgICAgICBlbmMtPmJpdHJhdGVfdHlwZSA9PSBCSVRSQVRFX1RZUEVfQ09OU1RSQUlORURfVkJSKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9CSVRSQVRFX1RZUEU6Ci0gICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgZW5jLT5iaXRyYXRlX3R5cGUpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NPTVBMRVhJVFk6Ci0gICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBlbmMtPmNvbXBsZXhpdHkpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0lOQkFORF9GRUM6Ci0gICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgZW5jLT5pbmJhbmRfZmVjKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9EVFg6Ci0gICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgZW5jLT5kdHgpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1BBQ0tFVF9MT1NTX1BFUkNFTlQ6Ci0gICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBlbmMtPnBhY2tldF9sb3NzX3BlcmNlbnRhZ2UpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX01BWF9QQVlMT0FEX1NJWkU6Ci0gICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgZW5jLT5tYXhfcGF5bG9hZF9zaXplKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotICAgICAgYnJlYWs7Ci0gIH0KLQotICBnX211dGV4X3VubG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfb3B1c19lbmNfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIEdzdE9wdXNFbmMgKmVuYzsKLQotICBlbmMgPSBHU1RfT1BVU19FTkMgKG9iamVjdCk7Ci0KLSNkZWZpbmUgR1NUX09QVVNfVVBEQVRFX1BST1BFUlRZKHByb3AsdHlwZSxjdGwpIGRvIHsgXAotICBnX211dGV4X2xvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOyBcCi0gIGVuYy0+cHJvcCA9IGdfdmFsdWVfZ2V0XyMjdHlwZSAodmFsdWUpOyBcCi0gIGlmIChlbmMtPnN0YXRlKSB7IFwKLSAgICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsIChlbmMtPnN0YXRlLCBPUFVTX1NFVF8jI2N0bCAoZW5jLT5wcm9wKSk7IFwKLSAgfSBcCi0gIGdfbXV0ZXhfdW5sb2NrICgmZW5jLT5wcm9wZXJ0eV9sb2NrKTsgXAotfSB3aGlsZSgwKQotCi0gIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9BVURJTzoKLSAgICAgIGVuYy0+YXVkaW9fdHlwZSA9Ci0gICAgICAgICAgZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpID8gT1BVU19BUFBMSUNBVElPTl9BVURJTyA6Ci0gICAgICAgICAgT1BVU19BUFBMSUNBVElPTl9WT0lQOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0FVRElPX1RZUEU6Ci0gICAgICBlbmMtPmF1ZGlvX3R5cGUgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQklUUkFURToKLSAgICAgIEdTVF9PUFVTX1VQREFURV9QUk9QRVJUWSAoYml0cmF0ZSwgaW50LCBCSVRSQVRFKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9CQU5EV0lEVEg6Ci0gICAgICBHU1RfT1BVU19VUERBVEVfUFJPUEVSVFkgKGJhbmR3aWR0aCwgZW51bSwgQkFORFdJRFRIKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9GUkFNRV9TSVpFOgotICAgICAgZ19tdXRleF9sb2NrICgmZW5jLT5wcm9wZXJ0eV9sb2NrKTsKLSAgICAgIGVuYy0+ZnJhbWVfc2l6ZSA9IGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKTsKLSAgICAgIGVuYy0+ZnJhbWVfc2FtcGxlcyA9IGdzdF9vcHVzX2VuY19nZXRfZnJhbWVfc2FtcGxlcyAoZW5jKTsKLSAgICAgIGdzdF9vcHVzX2VuY19zZXR1cF9iYXNlX2NsYXNzIChlbmMsIEdTVF9BVURJT19FTkNPREVSIChlbmMpKTsKLSAgICAgIGdfbXV0ZXhfdW5sb2NrICgmZW5jLT5wcm9wZXJ0eV9sb2NrKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9DQlI6Ci0gICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGVuYywKLSAgICAgICAgICAiY2JyIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQ7IHVzZSBiaXRyYXRlLXR5cGUgaW5zdGVhZCIpOwotICAgICAgZ193YXJuaW5nICgiY2JyIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQ7IHVzZSBiaXRyYXRlLXR5cGUgaW5zdGVhZCIpOwotICAgICAgZ19tdXRleF9sb2NrICgmZW5jLT5wcm9wZXJ0eV9sb2NrKTsKLSAgICAgIGVuYy0+Yml0cmF0ZV90eXBlID0gQklUUkFURV9UWVBFX0NCUjsKLSAgICAgIGlmIChlbmMtPnN0YXRlKSB7Ci0gICAgICAgIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGwgKGVuYy0+c3RhdGUsIE9QVVNfU0VUX1ZCUiAoRkFMU0UpKTsKLSAgICAgICAgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2N0bCAoZW5jLT5zdGF0ZSwKLSAgICAgICAgICAgIE9QVVNfU0VUX1ZCUl9DT05TVFJBSU5UIChGQUxTRSksIDApOwotICAgICAgfQotICAgICAgZ19tdXRleF91bmxvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NPTlNUUkFJTkVEX1ZCUjoKLSAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZW5jLAotICAgICAgICAgICJjb25zdHJhaW5lZC12YnIgcHJvcGVydHkgaXMgZGVwcmVjYXRlZDsgdXNlIGJpdHJhdGUtdHlwZSBpbnN0ZWFkIik7Ci0gICAgICBnX3dhcm5pbmcKLSAgICAgICAgICAoImNvbnN0cmFpbmVkLXZiciBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkOyB1c2UgYml0cmF0ZS10eXBlIGluc3RlYWQiKTsKLSAgICAgIGdfbXV0ZXhfbG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0gICAgICBlbmMtPmJpdHJhdGVfdHlwZSA9IEJJVFJBVEVfVFlQRV9DT05TVFJBSU5FRF9WQlI7Ci0gICAgICBpZiAoZW5jLT5zdGF0ZSkgewotICAgICAgICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsIChlbmMtPnN0YXRlLCBPUFVTX1NFVF9WQlIgKFRSVUUpKTsKLSAgICAgICAgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2N0bCAoZW5jLT5zdGF0ZSwKLSAgICAgICAgICAgIE9QVVNfU0VUX1ZCUl9DT05TVFJBSU5UIChUUlVFKSwgMCk7Ci0gICAgICB9Ci0gICAgICBnX211dGV4X3VubG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQklUUkFURV9UWVBFOgotICAgICAgLyogdGhpcyBvbmUgaGFzIGFuIG9wcG9zaXRlIG1lYW5pbmcgdG8gdGhlIG9wdXMgY3RsLi4uICovCi0gICAgICBnX211dGV4X2xvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotICAgICAgZW5jLT5iaXRyYXRlX3R5cGUgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7Ci0gICAgICBpZiAoZW5jLT5zdGF0ZSkgewotICAgICAgICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsIChlbmMtPnN0YXRlLAotICAgICAgICAgICAgT1BVU19TRVRfVkJSIChlbmMtPmJpdHJhdGVfdHlwZSAhPSBCSVRSQVRFX1RZUEVfQ0JSKSk7Ci0gICAgICAgIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGwgKGVuYy0+c3RhdGUsCi0gICAgICAgICAgICBPUFVTX1NFVF9WQlJfQ09OU1RSQUlOVCAoZW5jLT5iaXRyYXRlX3R5cGUgPT0KLSAgICAgICAgICAgICAgICBCSVRSQVRFX1RZUEVfQ09OU1RSQUlORURfVkJSKSwgMCk7Ci0gICAgICB9Ci0gICAgICBnX211dGV4X3VubG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQ09NUExFWElUWToKLSAgICAgIEdTVF9PUFVTX1VQREFURV9QUk9QRVJUWSAoY29tcGxleGl0eSwgaW50LCBDT01QTEVYSVRZKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9JTkJBTkRfRkVDOgotICAgICAgR1NUX09QVVNfVVBEQVRFX1BST1BFUlRZIChpbmJhbmRfZmVjLCBib29sZWFuLCBJTkJBTkRfRkVDKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9EVFg6Ci0gICAgICBHU1RfT1BVU19VUERBVEVfUFJPUEVSVFkgKGR0eCwgYm9vbGVhbiwgRFRYKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9QQUNLRVRfTE9TU19QRVJDRU5UOgotICAgICAgR1NUX09QVVNfVVBEQVRFX1BST1BFUlRZIChwYWNrZXRfbG9zc19wZXJjZW50YWdlLCBpbnQsIFBBQ0tFVF9MT1NTX1BFUkMpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX01BWF9QQVlMT0FEX1NJWkU6Ci0gICAgICBnX211dGV4X2xvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotICAgICAgZW5jLT5tYXhfcGF5bG9hZF9zaXplID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOwotICAgICAgZ19tdXRleF91bmxvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7Ci0gICAgICBicmVhazsKLSAgfQotCi0jdW5kZWYgR1NUX09QVVNfVVBEQVRFX1BST1BFUlRZCi0KLX0KZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdG9wdXNlbmMuaCBiL2V4dC9vcHVzL2dzdG9wdXNlbmMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNlYWFjOC4uMDAwMDAwMAotLS0gYS9leHQvb3B1cy9nc3RvcHVzZW5jLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLyogR1N0cmVhbWVyIE9wdXMgRW5jb2RlcgotICogQ29weXJpZ2h0IChDKSA8MTk5OT4gRXJpayBXYWx0aGluc2VuIDxvbWVnYUBjc2Uub2dpLmVkdT4KLSAqIENvcHlyaWdodCAoQykgPDIwMDg+IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgotICogQ29weXJpZ2h0IChDKSA8MjAxMS0yMDEyPiBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0KLSNpZm5kZWYgX19HU1RfT1BVU19FTkNfSF9fCi0jZGVmaW5lIF9fR1NUX09QVVNfRU5DX0hfXwotCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2dzdGF1ZGlvZW5jb2Rlci5oPgotCi0jaW5jbHVkZSA8b3B1c19tdWx0aXN0cmVhbS5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgR1NUX1RZUEVfT1BVU19FTkMgXAotICAoZ3N0X29wdXNfZW5jX2dldF90eXBlKCkpCi0jZGVmaW5lIEdTVF9PUFVTX0VOQyhvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX09QVVNfRU5DLEdzdE9wdXNFbmMpKQotI2RlZmluZSBHU1RfT1BVU19FTkNfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfT1BVU19FTkMsR3N0T3B1c0VuY0NsYXNzKSkKLSNkZWZpbmUgR1NUX0lTX09QVVNfRU5DKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfT1BVU19FTkMpKQotI2RlZmluZSBHU1RfSVNfT1BVU19FTkNfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfT1BVU19FTkMpKQotCi0jZGVmaW5lIE1BWF9GUkFNRV9TSVpFIDIwMDAqMgotI2RlZmluZSBNQVhfRlJBTUVfQllURVMgMjAwMAotCi10eXBlZGVmIGVudW0KLXsKLSAgQklUUkFURV9UWVBFX0NCUiwKLSAgQklUUkFURV9UWVBFX1ZCUiwKLSAgQklUUkFURV9UWVBFX0NPTlNUUkFJTkVEX1ZCUiwKLX0gR3N0T3B1c0VuY0JpdHJhdGVUeXBlOwotCi10eXBlZGVmIHN0cnVjdCBfR3N0T3B1c0VuYyBHc3RPcHVzRW5jOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdE9wdXNFbmNDbGFzcyBHc3RPcHVzRW5jQ2xhc3M7Ci0KLXN0cnVjdCBfR3N0T3B1c0VuYyB7Ci0gIEdzdEF1ZGlvRW5jb2RlciAgICAgICBlbGVtZW50OwotCi0gIE9wdXNNU0VuY29kZXIgICAgICAgICpzdGF0ZTsKLQotICAvKiBMb2NrcyB0aG9zZSBwcm9wZXJ0aWVzIHdoaWNoIG1heSBiZSBjaGFuZ2VkIGF0IHBsYXkgdGltZSAqLwotICBHTXV0ZXggICAgICAgICAgICAgICAgcHJvcGVydHlfbG9jazsKLQotICAvKiBwcm9wZXJ0aWVzICovCi0gIGdpbnQgICAgICAgICAgICAgICAgICBhdWRpb190eXBlOwotICBnaW50ICAgICAgICAgICAgICAgICAgYml0cmF0ZTsKLSAgZ2ludCAgICAgICAgICAgICAgICAgIGJhbmR3aWR0aDsKLSAgZ2ludCAgICAgICAgICAgICAgICAgIGZyYW1lX3NpemU7Ci0gIEdzdE9wdXNFbmNCaXRyYXRlVHlwZSBiaXRyYXRlX3R5cGU7Ci0gIGdpbnQgICAgICAgICAgICAgICAgICBjb21wbGV4aXR5OwotICBnYm9vbGVhbiAgICAgICAgICAgICAgaW5iYW5kX2ZlYzsKLSAgZ2Jvb2xlYW4gICAgICAgICAgICAgIGR0eDsKLSAgZ2ludCAgICAgICAgICAgICAgICAgIHBhY2tldF9sb3NzX3BlcmNlbnRhZ2U7Ci0gIGd1aW50ICAgICAgICAgICAgICAgICBtYXhfcGF5bG9hZF9zaXplOwotCi0gIGdpbnQgICAgICAgICAgICAgICAgICBmcmFtZV9zYW1wbGVzOwotICBnaW50ICAgICAgICAgICAgICAgICAgbl9jaGFubmVsczsKLSAgZ2ludCAgICAgICAgICAgICAgICAgIHNhbXBsZV9yYXRlOwotCi0gIGd1aW50NjQgICAgICAgICAgICAgICBlbmNvZGVkX3NhbXBsZXM7Ci0KLSAgZ3VpbnQ4ICAgICAgICAgICAgICAgIGNoYW5uZWxfbWFwcGluZ19mYW1pbHk7Ci0gIGd1aW50OCAgICAgICAgICAgICAgICBlbmNvZGluZ19jaGFubmVsX21hcHBpbmdbMjU2XTsKLSAgZ3VpbnQ4ICAgICAgICAgICAgICAgIGRlY29kaW5nX2NoYW5uZWxfbWFwcGluZ1syNTZdOwotICBndWludDggICAgICAgICAgICAgICAgbl9zdGVyZW9fc3RyZWFtczsKLX07Ci0KLXN0cnVjdCBfR3N0T3B1c0VuY0NsYXNzIHsKLSAgR3N0QXVkaW9FbmNvZGVyQ2xhc3MgcGFyZW50X2NsYXNzOwotCi0gIC8qIHNpZ25hbHMgKi8KLSAgdm9pZCAoKmZyYW1lX2VuY29kZWQpIChHc3RFbGVtZW50ICplbGVtZW50KTsKLX07Ci0KLUdUeXBlIGdzdF9vcHVzX2VuY19nZXRfdHlwZSAodm9pZCk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBfX0dTVF9PUFVTX0VOQ19IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdG9wdXNoZWFkZXIuYyBiL2V4dC9vcHVzL2dzdG9wdXNoZWFkZXIuYwppbmRleCAxNTIxYzFjLi5kY2M4NTg5IDEwMDY0NAotLS0gYS9leHQvb3B1cy9nc3RvcHVzaGVhZGVyLmMKKysrIGIvZXh0L29wdXMvZ3N0b3B1c2hlYWRlci5jCkBAIC0yNiwyMTkgKzI2LDYgQEAKICNpbmNsdWRlIDxnc3QvYmFzZS9nc3RieXRld3JpdGVyLmg+CiAjaW5jbHVkZSAiZ3N0b3B1c2hlYWRlci5oIgogCi1zdGF0aWMgR3N0QnVmZmVyICoKLWdzdF9vcHVzX2VuY19jcmVhdGVfaWRfYnVmZmVyIChnaW50IG5jaGFubmVscywgZ2ludCBuX3N0ZXJlb19zdHJlYW1zLAotICAgIGdpbnQgc2FtcGxlX3JhdGUsIGd1aW50OCBjaGFubmVsX21hcHBpbmdfZmFtaWx5LAotICAgIGNvbnN0IGd1aW50OCAqIGNoYW5uZWxfbWFwcGluZykKLXsKLSAgR3N0QnVmZmVyICpidWZmZXI7Ci0gIEdzdEJ5dGVXcml0ZXIgYnc7Ci0gIGdib29sZWFuIGhkbCA9IFRSVUU7Ci0KLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKG5jaGFubmVscyA+IDAgJiYgbmNoYW5uZWxzIDwgMjU2LCBOVUxMKTsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKG5fc3RlcmVvX3N0cmVhbXMgPj0gMCwgTlVMTCk7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChuX3N0ZXJlb19zdHJlYW1zIDw9IG5jaGFubmVscyAtIG5fc3RlcmVvX3N0cmVhbXMsIE5VTEwpOwotCi0gIGdzdF9ieXRlX3dyaXRlcl9pbml0ICgmYncpOwotCi0gIC8qIFNlZSBodHRwOi8vd2lraS54aXBoLm9yZy9PZ2dPcHVzICovCi0gIGhkbCAmPSBnc3RfYnl0ZV93cml0ZXJfcHV0X2RhdGEgKCZidywgKGNvbnN0IGd1aW50OCAqKSAiT3B1c0hlYWQiLCA4KTsKLSAgaGRsICY9IGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDggKCZidywgMHgwMSk7IC8qIHZlcnNpb24gbnVtYmVyICovCi0gIGhkbCAmPSBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQ4ICgmYncsIG5jaGFubmVscyk7Ci0gIGhkbCAmPSBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9sZSAoJmJ3LCAwKTsgICAgICAgIC8qIHByZS1za2lwICovCi0gIGhkbCAmPSBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQzMl9sZSAoJmJ3LCBzYW1wbGVfcmF0ZSk7Ci0gIGhkbCAmPSBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9sZSAoJmJ3LCAwKTsgICAgICAgIC8qIG91dHB1dCBnYWluICovCi0gIGhkbCAmPSBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQ4ICgmYncsIGNoYW5uZWxfbWFwcGluZ19mYW1pbHkpOwotICBpZiAoY2hhbm5lbF9tYXBwaW5nX2ZhbWlseSA+IDApIHsKLSAgICBoZGwgJj0gZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50OCAoJmJ3LCBuY2hhbm5lbHMgLSBuX3N0ZXJlb19zdHJlYW1zKTsKLSAgICBoZGwgJj0gZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50OCAoJmJ3LCBuX3N0ZXJlb19zdHJlYW1zKTsKLSAgICBoZGwgJj0gZ3N0X2J5dGVfd3JpdGVyX3B1dF9kYXRhICgmYncsIGNoYW5uZWxfbWFwcGluZywgbmNoYW5uZWxzKTsKLSAgfQotCi0gIGlmICghaGRsKQotICAgIEdTVF9XQVJOSU5HICgiRXJyb3IgY3JlYXRpbmcgaGVhZGVyIik7Ci0KLSAgYnVmZmVyID0gZ3N0X2J5dGVfd3JpdGVyX3Jlc2V0X2FuZF9nZXRfYnVmZmVyICgmYncpOwotCi0gIEdTVF9CVUZGRVJfT0ZGU0VUIChidWZmZXIpID0gMDsKLSAgR1NUX0JVRkZFUl9PRkZTRVRfRU5EIChidWZmZXIpID0gMDsKLQotICByZXR1cm4gYnVmZmVyOwotfQotCi1zdGF0aWMgR3N0QnVmZmVyICoKLWdzdF9vcHVzX2VuY19jcmVhdGVfbWV0YWRhdGFfYnVmZmVyIChjb25zdCBHc3RUYWdMaXN0ICogdGFncykKLXsKLSAgR3N0VGFnTGlzdCAqZW1wdHlfdGFncyA9IE5VTEw7Ci0gIEdzdEJ1ZmZlciAqY29tbWVudHMgPSBOVUxMOwotCi0gIEdTVF9ERUJVRyAoInRhZ3MgPSAlIiBHU1RfUFRSX0ZPUk1BVCwgdGFncyk7Ci0KLSAgaWYgKHRhZ3MgPT0gTlVMTCkgewotICAgIC8qIEZJWE1FOiBiZXR0ZXIgZml4IGNoYWluIG9mIGNhbGxlcnMgdG8gbm90IHdyaXRlIG1ldGFkYXRhIGF0IGFsbCwKLSAgICAgKiBpZiB0aGVyZSBpcyBub25lICovCi0gICAgZW1wdHlfdGFncyA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkgKCk7Ci0gICAgdGFncyA9IGVtcHR5X3RhZ3M7Ci0gIH0KLSAgY29tbWVudHMgPQotICAgICAgZ3N0X3RhZ19saXN0X3RvX3ZvcmJpc2NvbW1lbnRfYnVmZmVyICh0YWdzLCAoY29uc3QgZ3VpbnQ4ICopICJPcHVzVGFncyIsCi0gICAgICA4LCAiRW5jb2RlZCB3aXRoIEdTdHJlYW1lciBPcHVzZW5jIik7Ci0KLSAgR1NUX0JVRkZFUl9PRkZTRVQgKGNvbW1lbnRzKSA9IDA7Ci0gIEdTVF9CVUZGRVJfT0ZGU0VUX0VORCAoY29tbWVudHMpID0gMDsKLQotICBpZiAoZW1wdHlfdGFncykKLSAgICBnc3RfdGFnX2xpc3RfdW5yZWYgKGVtcHR5X3RhZ3MpOwotCi0gIHJldHVybiBjb21tZW50czsKLX0KLQotLyoKLSAqIChyZWFsbHkgcmVhbGx5KSBGSVhNRTogbW92ZSBpbnRvIGNvcmUgKGRpeGl0IHRwbSkKLSAqLwotLyoKLSAqIF9nc3RfY2Fwc19zZXRfYnVmZmVyX2FycmF5OgotICogQGNhcHM6ICh0cmFuc2ZlciBmdWxsKTogYSAjR3N0Q2FwcwotICogQGZpZWxkOiBmaWVsZCBpbiBjYXBzIHRvIHNldAotICogQGJ1ZjogaGVhZGVyIGJ1ZmZlcnMKLSAqCi0gKiBBZGRzIGdpdmVuIGJ1ZmZlcnMgdG8gYW4gYXJyYXkgb2YgYnVmZmVycyBzZXQgYXMgdGhlIGdpdmVuIEBmaWVsZAotICogb24gdGhlIGdpdmVuIEBjYXBzLiAgTGlzdCBvZiBidWZmZXIgYXJndW1lbnRzIG11c3QgYmUgTlVMTC10ZXJtaW5hdGVkLgotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogaW5wdXQgY2FwcyB3aXRoIGEgc3RyZWFtaGVhZGVyIGZpZWxkIGFkZGVkLCBvciBOVUxMCi0gKiAgICAgaWYgc29tZSBlcnJvciBvY2N1cnJlZAotICovCi1zdGF0aWMgR3N0Q2FwcyAqCi1fZ3N0X2NhcHNfc2V0X2J1ZmZlcl9hcnJheSAoR3N0Q2FwcyAqIGNhcHMsIGNvbnN0IGdjaGFyICogZmllbGQsCi0gICAgR3N0QnVmZmVyICogYnVmLCAuLi4pCi17Ci0gIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlID0gTlVMTDsKLSAgdmFfbGlzdCB2YTsKLSAgR1ZhbHVlIGFycmF5ID0geyAwIH07Ci0gIEdWYWx1ZSB2YWx1ZSA9IHsgMCB9OwotCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjYXBzICE9IE5VTEwsIE5VTEwpOwotICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ3N0X2NhcHNfaXNfZml4ZWQgKGNhcHMpLCBOVUxMKTsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGZpZWxkICE9IE5VTEwsIE5VTEwpOwotCi0gIGNhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChjYXBzKTsKLSAgc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0KLSAgZ192YWx1ZV9pbml0ICgmYXJyYXksIEdTVF9UWVBFX0FSUkFZKTsKLQotICB2YV9zdGFydCAodmEsIGJ1Zik7Ci0gIC8qIHB1dCBidWZmZXJzIGluIGEgZml4ZWQgbGlzdCAqLwotICB3aGlsZSAoYnVmKSB7Ci0gICAgZ19hc3NlcnQgKGdzdF9idWZmZXJfaXNfd3JpdGFibGUgKGJ1ZikpOwotCi0gICAgLyogbWFyayBidWZmZXIgKi8KLSAgICBHU1RfQlVGRkVSX0ZMQUdfU0VUIChidWYsIEdTVF9CVUZGRVJfRkxBR19IRUFERVIpOwotCi0gICAgZ192YWx1ZV9pbml0ICgmdmFsdWUsIEdTVF9UWVBFX0JVRkZFUik7Ci0gICAgYnVmID0gZ3N0X2J1ZmZlcl9jb3B5IChidWYpOwotICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKGJ1ZiwgR1NUX0JVRkZFUl9GTEFHX0hFQURFUik7Ci0gICAgZ3N0X3ZhbHVlX3NldF9idWZmZXIgKCZ2YWx1ZSwgYnVmKTsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwotICAgIGdzdF92YWx1ZV9hcnJheV9hcHBlbmRfdmFsdWUgKCZhcnJheSwgJnZhbHVlKTsKLSAgICBnX3ZhbHVlX3Vuc2V0ICgmdmFsdWUpOwotCi0gICAgYnVmID0gdmFfYXJnICh2YSwgR3N0QnVmZmVyICopOwotICB9Ci0gIHZhX2VuZCAodmEpOwotCi0gIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzdHJ1Y3R1cmUsIGZpZWxkLCAmYXJyYXkpOwotICBnX3ZhbHVlX3Vuc2V0ICgmYXJyYXkpOwotCi0gIHJldHVybiBjYXBzOwotfQotCi12b2lkCi1nc3Rfb3B1c19oZWFkZXJfY3JlYXRlX2NhcHNfZnJvbV9oZWFkZXJzIChHc3RDYXBzICoqIGNhcHMsIEdTTGlzdCAqKiBoZWFkZXJzLAotICAgIEdzdEJ1ZmZlciAqIGJ1ZjEsIEdzdEJ1ZmZlciAqIGJ1ZjIpCi17Ci0gIGludCBuX3N0cmVhbXMsIGZhbWlseTsKLSAgZ2ludCBjaGFubmVscywgcmF0ZTsKLSAgZ2Jvb2xlYW4gbXVsdGlzdHJlYW07Ci0gIEdzdE1hcEluZm8gbWFwOwotICBndWludDggKmRhdGE7Ci0KLSAgZ19yZXR1cm5faWZfZmFpbCAoY2Fwcyk7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKCFoZWFkZXJzIHx8ICEqaGVhZGVycyk7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZjEpID49IDE5KTsKLQotICBnc3RfYnVmZmVyX21hcCAoYnVmMSwgJm1hcCwgR1NUX01BUF9SRUFEKTsKLSAgZGF0YSA9IG1hcC5kYXRhOwotCi0gIGNoYW5uZWxzID0gZGF0YVs5XTsKLSAgcmF0ZSA9IEdTVF9SRUFEX1VJTlQzMl9MRSAoZGF0YSArIDEyKTsKLQotICAvKiB3b3JrIG91dCB0aGUgbnVtYmVyIG9mIHN0cmVhbXMgKi8KLSAgZmFtaWx5ID0gZGF0YVsxOF07Ci0gIGlmIChmYW1pbHkgPT0gMCkgewotICAgIG5fc3RyZWFtcyA9IDE7Ci0gIH0gZWxzZSB7Ci0gICAgLyogb25seSBpbmNsdWRlZCBpbiB0aGUgaGVhZGVyIGZvciBmYW1pbHkgPiAwICovCi0gICAgaWYgKG1hcC5zaXplID49IDIwKQotICAgICAgbl9zdHJlYW1zID0gZGF0YVsxOV07Ci0gICAgZWxzZSB7Ci0gICAgICBnX3dhcm5pbmcgKCJmYW1pbHkgPiAwIGJ1dCBoZWFkZXIgYnVmZmVyIHNpemUgPCAyMCIpOwotICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmMSwgJm1hcCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotICB9Ci0KLSAgLyogVE9ETzogc2hvdWxkIHByb2JhYmx5IGFsc28gcHV0IHRoZSBjaGFubmVsIG1hcHBpbmcgaW50byB0aGUgY2FwcyB0b28gb25jZQotICAgKiB3ZSBhY3R1YWxseSBzdXBwb3J0IG11bHRpIGNoYW5uZWwsIGFuZCBwcmUtc2tpcCBhbmQgb3RoZXIgZmllbGRzICovCi0KLSAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmMSwgJm1hcCk7Ci0KLSAgLyogbWFyayBhbmQgcHV0IG9uIGNhcHMgKi8KLSAgbXVsdGlzdHJlYW0gPSBuX3N0cmVhbXMgPiAxOwotICAqY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJhdWRpby94LW9wdXMiLAotICAgICAgIm11bHRpc3RyZWFtIiwgR19UWVBFX0JPT0xFQU4sIG11bHRpc3RyZWFtLAotICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgY2hhbm5lbHMsIE5VTEwpOwotCi0gIGlmIChyYXRlID4gMCkgewotICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKCpjYXBzLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHJhdGUsIE5VTEwpOwotICB9Ci0KLSAgKmNhcHMgPSBfZ3N0X2NhcHNfc2V0X2J1ZmZlcl9hcnJheSAoKmNhcHMsICJzdHJlYW1oZWFkZXIiLCBidWYxLCBidWYyLCBOVUxMKTsKLQotICBpZiAoaGVhZGVycykgewotICAgICpoZWFkZXJzID0gZ19zbGlzdF9wcmVwZW5kICgqaGVhZGVycywgZ3N0X2J1ZmZlcl9yZWYgKGJ1ZjIpKTsKLSAgICAqaGVhZGVycyA9IGdfc2xpc3RfcHJlcGVuZCAoKmhlYWRlcnMsIGdzdF9idWZmZXJfcmVmIChidWYxKSk7Ci0gIH0KLX0KLQotdm9pZAotZ3N0X29wdXNfaGVhZGVyX2NyZWF0ZV9jYXBzIChHc3RDYXBzICoqIGNhcHMsIEdTTGlzdCAqKiBoZWFkZXJzLCBnaW50IG5jaGFubmVscywKLSAgICBnaW50IG5fc3RlcmVvX3N0cmVhbXMsIGdpbnQgc2FtcGxlX3JhdGUsIGd1aW50OCBjaGFubmVsX21hcHBpbmdfZmFtaWx5LAotICAgIGNvbnN0IGd1aW50OCAqIGNoYW5uZWxfbWFwcGluZywgY29uc3QgR3N0VGFnTGlzdCAqIHRhZ3MpCi17Ci0gIEdzdEJ1ZmZlciAqYnVmMSwgKmJ1ZjI7Ci0KLSAgZ19yZXR1cm5faWZfZmFpbCAoY2Fwcyk7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKCFoZWFkZXJzIHx8ICEqaGVhZGVycyk7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKG5jaGFubmVscyA+IDApOwotICBnX3JldHVybl9pZl9mYWlsIChzYW1wbGVfcmF0ZSA+PSAwKTsgIC8qIDAgLT4gdW5zZXQgKi8KLSAgZ19yZXR1cm5faWZfZmFpbCAoY2hhbm5lbF9tYXBwaW5nX2ZhbWlseSA9PSAwIHx8IGNoYW5uZWxfbWFwcGluZyk7Ci0KLSAgLyogT3B1cyBzdHJlYW1zIGluIE9nZyBiZWdpbiB3aXRoIHR3byBoZWFkZXJzOyB0aGUgaW5pdGlhbCBoZWFkZXIgKHdpdGgKLSAgICAgbW9zdCBvZiB0aGUgY29kZWMgc2V0dXAgcGFyYW1ldGVycykgd2hpY2ggaXMgbWFuZGF0ZWQgYnkgdGhlIE9nZwotICAgICBiaXRzdHJlYW0gc3BlYy4gIFRoZSBzZWNvbmQgaGVhZGVyIGhvbGRzIGFueSBjb21tZW50IGZpZWxkcy4gKi8KLQotICAvKiBjcmVhdGUgaGVhZGVyIGJ1ZmZlcnMgKi8KLSAgYnVmMSA9Ci0gICAgICBnc3Rfb3B1c19lbmNfY3JlYXRlX2lkX2J1ZmZlciAobmNoYW5uZWxzLCBuX3N0ZXJlb19zdHJlYW1zLCBzYW1wbGVfcmF0ZSwKLSAgICAgIGNoYW5uZWxfbWFwcGluZ19mYW1pbHksIGNoYW5uZWxfbWFwcGluZyk7Ci0gIGJ1ZjIgPSBnc3Rfb3B1c19lbmNfY3JlYXRlX21ldGFkYXRhX2J1ZmZlciAodGFncyk7Ci0KLSAgZ3N0X29wdXNfaGVhZGVyX2NyZWF0ZV9jYXBzX2Zyb21faGVhZGVycyAoY2FwcywgaGVhZGVycywgYnVmMSwgYnVmMik7Ci0KLSAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmMik7Ci0gIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZjEpOwotfQotCiBnYm9vbGVhbgogZ3N0X29wdXNfaGVhZGVyX2lzX2hlYWRlciAoR3N0QnVmZmVyICogYnVmLCBjb25zdCBjaGFyICptYWdpYywgZ3VpbnQgbWFnaWNfc2l6ZSkKIHsKZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdG9wdXNoZWFkZXIuaCBiL2V4dC9vcHVzL2dzdG9wdXNoZWFkZXIuaAppbmRleCAxNGM4OGMwLi4yYTkxYzAzIDEwMDY0NAotLS0gYS9leHQvb3B1cy9nc3RvcHVzaGVhZGVyLmgKKysrIGIvZXh0L29wdXMvZ3N0b3B1c2hlYWRlci5oCkBAIC0yNiwxMiArMjYsNiBAQAogCiBHX0JFR0lOX0RFQ0xTCiAKLWV4dGVybiB2b2lkIGdzdF9vcHVzX2hlYWRlcl9jcmVhdGVfY2Fwc19mcm9tX2hlYWRlcnMgKEdzdENhcHMgKipjYXBzLCBHU0xpc3QgKipoZWFkZXJzLAotICAgIEdzdEJ1ZmZlciAqaWRfaGVhZGVyLCBHc3RCdWZmZXIgKmNvbW1lbnRfaGVhZGVyKTsKLWV4dGVybiB2b2lkIGdzdF9vcHVzX2hlYWRlcl9jcmVhdGVfY2FwcyAoR3N0Q2FwcyAqKmNhcHMsIEdTTGlzdCAqKmhlYWRlcnMsCi0gICAgZ2ludCBuY2hhbm5lbHMsIGdpbnQgbl9zdGVyZW9fc3RyZWFtcywgZ2ludCBzYW1wbGVfcmF0ZSwKLSAgICBndWludDggY2hhbm5lbF9tYXBwaW5nX2ZhbWlseSwgY29uc3QgZ3VpbnQ4ICpjaGFubmVsX21hcHBpbmcsCi0gICAgY29uc3QgR3N0VGFnTGlzdCAqdGFncyk7CiBleHRlcm4gZ2Jvb2xlYW4gZ3N0X29wdXNfaGVhZGVyX2lzX2hlYWRlciAoR3N0QnVmZmVyICogYnVmLAogICAgIGNvbnN0IGNoYXIgKm1hZ2ljLCBndWludCBtYWdpY19zaXplKTsKIGV4dGVybiBnYm9vbGVhbiBnc3Rfb3B1c19oZWFkZXJfaXNfaWRfaGVhZGVyIChHc3RCdWZmZXIgKiBidWYpOwpkaWZmIC0tZ2l0IGEvZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmMgYi9leHQvb3B1cy9nc3RvcHVzcGFyc2UuYwppbmRleCA3MWYwNjM5Li5lYTMyNTJlIDEwMDY0NAotLS0gYS9leHQvb3B1cy9nc3RvcHVzcGFyc2UuYworKysgYi9leHQvb3B1cy9nc3RvcHVzcGFyc2UuYwpAQCAtMjksNyArMjksNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249b3B1c2RhdGEgISBvcHVzcGFyc2UgISBvcHVzZGVjICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGFsc2FzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPW9wdXNkYXRhICEgb3B1c3BhcnNlICEgb3B1c2RlYyAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBhbHNhc2luawogICogXXwgRGVjb2RlIGFuZCBwbGF5cyBhbiB1bm11eGVkIE9wdXMgZmlsZS4KICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTQzLDYgKzQzLDkgQEAKICNpbmNsdWRlICJnc3RvcHVzaGVhZGVyLmgiCiAjaW5jbHVkZSAiZ3N0b3B1c3BhcnNlLmgiCiAKKyNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KKyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+CisKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKG9wdXNwYXJzZV9kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBvcHVzcGFyc2VfZGVidWcKIApAQCAtMTAxLDYgKzEwNCw4IEBACiBnc3Rfb3B1c19wYXJzZV9pbml0IChHc3RPcHVzUGFyc2UgKiBwYXJzZSkKIHsKICAgcGFyc2UtPmhlYWRlcl9zZW50ID0gRkFMU0U7CisgIHBhcnNlLT5nb3RfaGVhZGVycyA9IEZBTFNFOworICBwYXJzZS0+cHJlX3NraXAgPSAwOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KQEAgLTEwOSw2ICsxMTQsOCBAQAogICBHc3RPcHVzUGFyc2UgKnBhcnNlID0gR1NUX09QVVNfUEFSU0UgKGJhc2UpOwogCiAgIHBhcnNlLT5oZWFkZXJfc2VudCA9IEZBTFNFOworICBwYXJzZS0+Z290X2hlYWRlcnMgPSBGQUxTRTsKKyAgcGFyc2UtPnByZV9za2lwID0gMDsKICAgcGFyc2UtPm5leHRfdHMgPSAwOwogCiAgIHJldHVybiBUUlVFOwpAQCAtMTE5LDExICsxMjYsOSBAQAogewogICBHc3RPcHVzUGFyc2UgKnBhcnNlID0gR1NUX09QVVNfUEFSU0UgKGJhc2UpOwogCi0gIGdfc2xpc3RfZm9yZWFjaCAocGFyc2UtPmhlYWRlcnMsIChHRnVuYykgZ3N0X2J1ZmZlcl91bnJlZiwgTlVMTCk7Ci0gIGdfc2xpc3RfZnJlZSAocGFyc2UtPmhlYWRlcnMpOwotICBwYXJzZS0+aGVhZGVycyA9IE5VTEw7Ci0KICAgcGFyc2UtPmhlYWRlcl9zZW50ID0gRkFMU0U7CisgIHBhcnNlLT5nb3RfaGVhZGVycyA9IEZBTFNFOworICBwYXJzZS0+cHJlX3NraXAgPSAwOwogCiAgIHJldHVybiBUUlVFOwogfQpAQCAtMTk1LDcgKzIwMCw2IEBACiAgICAgICB9CiAKICAgICAgIHBhY2tldF9vZmZzZXQgPSA4OwotICAgICAgZGF0YSArPSBwYWNrZXRfb2Zmc2V0OwogCiAgICAgICAvKiBmb3IgYWQgaG9jIGZyYW1pbmcsIGhlZWQgdGhlIGZyYW1pbmcsIHNvIHdlIGVhdCBhbnkgcGFkZGluZyAqLwogICAgICAgcGF5bG9hZF9vZmZzZXQgPSBwYWNrZXRfc2l6ZTsKQEAgLTI0MSw3ICsyNDUsNyBAQAogICAgIHJldHVybiBHU1RfRkxPV19PSzsKIAogICAvKiBGSVhNRSBzb21lIGRheSAuLi4gc2hvdWxkIG5vdCBtZXNzIHdpdGggYnVmZmVyIGl0c2VsZiAqLwotICBpZiAoIXBhcnNlLT5oZWFkZXJfc2VudCkgeworICBpZiAoIXBhcnNlLT5nb3RfaGVhZGVycykgewogICAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJmZyYW1lLT5idWZmZXIsCiAgICAgICAgIGdzdF9idWZmZXJfY29weV9yZWdpb24gKGZyYW1lLT5idWZmZXIsIEdTVF9CVUZGRVJfQ09QWV9BTEwsIDAsIHNpemUpKTsKICAgICBnc3RfYnVmZmVyX3VucmVmIChmcmFtZS0+YnVmZmVyKTsKQEAgLTMyMiwxNSArMzI2LDE4IEBACiAgIEdzdE9wdXNQYXJzZSAqcGFyc2U7CiAgIGdib29sZWFuIGlzX2lkaGVhZGVyLCBpc19jb21tZW50aGVhZGVyOwogICBHc3RNYXBJbmZvIG1hcDsKKyAgR3N0QXVkaW9DbGlwcGluZ01ldGEgKmNtZXRhID0KKyAgICAgIGdzdF9idWZmZXJfZ2V0X2F1ZGlvX2NsaXBwaW5nX21ldGEgKGZyYW1lLT5idWZmZXIpOwogCiAgIHBhcnNlID0gR1NUX09QVVNfUEFSU0UgKGJhc2UpOwogCisgIGdfYXNzZXJ0ICghY21ldGEgfHwgY21ldGEtPmZvcm1hdCA9PSBHU1RfRk9STUFUX0RFRkFVTFQpOworCiAgIGlzX2lkaGVhZGVyID0gZ3N0X29wdXNfaGVhZGVyX2lzX2lkX2hlYWRlciAoZnJhbWUtPmJ1ZmZlcik7CiAgIGlzX2NvbW1lbnRoZWFkZXIgPSBnc3Rfb3B1c19oZWFkZXJfaXNfY29tbWVudF9oZWFkZXIgKGZyYW1lLT5idWZmZXIpOwogCi0gIGlmICghcGFyc2UtPmhlYWRlcl9zZW50KSB7CisgIGlmICghcGFyc2UtPmdvdF9oZWFkZXJzIHx8ICFwYXJzZS0+aGVhZGVyX3NlbnQpIHsKICAgICBHc3RDYXBzICpjYXBzOwotICAgIGd1aW50OCBjaGFubmVsczsKIAogICAgIC8qIE9wdXMgc3RyZWFtcyBjYW4gZGVjb2RlIHRvIDEgb3IgMiBjaGFubmVscywgc28gdXNlIHRoZSBoZWFkZXIKICAgICAgICB2YWx1ZSBpZiB3ZSBoYXZlIG9uZSwgb3IgMiBvdGhlcndpc2UgKi8KQEAgLTM0NCwzMSArMzUxLDc3IEBACiAgICAgICByZXR1cm4gR1NUX0JBU0VfUEFSU0VfRkxPV19EUk9QUEVEOwogICAgIH0KIAotICAgIGdfc2xpc3RfZm9yZWFjaCAocGFyc2UtPmhlYWRlcnMsIChHRnVuYykgZ3N0X2J1ZmZlcl91bnJlZiwgTlVMTCk7Ci0gICAgZ19zbGlzdF9mcmVlIChwYXJzZS0+aGVhZGVycyk7Ci0gICAgcGFyc2UtPmhlYWRlcnMgPSBOVUxMOworICAgIHBhcnNlLT5nb3RfaGVhZGVycyA9IFRSVUU7CiAKLSAgICBpZiAocGFyc2UtPmlkX2hlYWRlciAmJiBwYXJzZS0+Y29tbWVudF9oZWFkZXIpIHsKLSAgICAgIGdzdF9vcHVzX2hlYWRlcl9jcmVhdGVfY2Fwc19mcm9tX2hlYWRlcnMgKCZjYXBzLCAmcGFyc2UtPmhlYWRlcnMsCi0gICAgICAgICAgcGFyc2UtPmlkX2hlYWRlciwgcGFyc2UtPmNvbW1lbnRfaGVhZGVyKTsKLSAgICB9IGVsc2UgewotICAgICAgZ3VpbnQ4IGNoYW5uZWxfbWFwcGluZ19mYW1pbHksIGNoYW5uZWxfbWFwcGluZ1syNTZdOwotICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwKLSAgICAgICAgICAiTm8gaGVhZGVycywgYmxpbmRseSBzZXR0aW5nIHVwIGNhbm9uaWNhbCBzdGVyZW8iKTsKLSAgICAgIGNoYW5uZWxzID0gMjsKLSAgICAgIGNoYW5uZWxfbWFwcGluZ19mYW1pbHkgPSAwOwotICAgICAgY2hhbm5lbF9tYXBwaW5nWzBdID0gMDsKLSAgICAgIGNoYW5uZWxfbWFwcGluZ1sxXSA9IDE7Ci0gICAgICBnc3Rfb3B1c19oZWFkZXJfY3JlYXRlX2NhcHMgKCZjYXBzLCAmcGFyc2UtPmhlYWRlcnMsIGNoYW5uZWxzLCAxLCA0ODAwMCwKLSAgICAgICAgICBjaGFubmVsX21hcHBpbmdfZmFtaWx5LCBjaGFubmVsX21hcHBpbmcsIE5VTEwpOworICAgIGlmIChjbWV0YSAmJiBjbWV0YS0+c3RhcnQpIHsKKyAgICAgIHBhcnNlLT5wcmVfc2tpcCArPSBjbWV0YS0+c3RhcnQ7CisKKyAgICAgIGdzdF9idWZmZXJfbWFwIChmcmFtZS0+YnVmZmVyLCAmbWFwLCBHU1RfTUFQX1JFQUQpOworICAgICAgZHVyYXRpb24gPSBwYWNrZXRfZHVyYXRpb25fb3B1cyAobWFwLmRhdGEsIG1hcC5zaXplKTsKKyAgICAgIGdzdF9idWZmZXJfdW5tYXAgKGZyYW1lLT5idWZmZXIsICZtYXApOworCisgICAgICAvKiBRdWV1ZSBmcmFtZSBmb3IgbGF0ZXIgb25jZSB3ZSBrbm93IGFsbCBpbml0aWFsIHBhZGRpbmcgKi8KKyAgICAgIGlmIChkdXJhdGlvbiA9PSBjbWV0YS0+c3RhcnQpIHsKKyAgICAgICAgZnJhbWUtPmZsYWdzIHw9IEdTVF9CQVNFX1BBUlNFX0ZSQU1FX0ZMQUdfUVVFVUU7CisgICAgICB9CiAgICAgfQogCi0gICAgZ3N0X2J1ZmZlcl9yZXBsYWNlICgmcGFyc2UtPmlkX2hlYWRlciwgTlVMTCk7Ci0gICAgZ3N0X2J1ZmZlcl9yZXBsYWNlICgmcGFyc2UtPmNvbW1lbnRfaGVhZGVyLCBOVUxMKTsKKyAgICBpZiAoIShmcmFtZS0+ZmxhZ3MgJiBHU1RfQkFTRV9QQVJTRV9GUkFNRV9GTEFHX1FVRVVFKSkgeworICAgICAgaWYgKEZBTFNFICYmIHBhcnNlLT5pZF9oZWFkZXIgJiYgcGFyc2UtPmNvbW1lbnRfaGVhZGVyKSB7CisgICAgICAgIGd1aW50MTYgcHJlX3NraXA7CiAKLSAgICBnc3RfcGFkX3NldF9jYXBzIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChwYXJzZSksIGNhcHMpOwotICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLSAgICBwYXJzZS0+aGVhZGVyX3NlbnQgPSBUUlVFOworICAgICAgICBnc3RfYnVmZmVyX21hcCAocGFyc2UtPmlkX2hlYWRlciwgJm1hcCwgR1NUX01BUF9SRUFEV1JJVEUpOworICAgICAgICBwcmVfc2tpcCA9IEdTVF9SRUFEX1VJTlQxNl9MRSAobWFwLmRhdGEgKyAxMCk7CisgICAgICAgIGlmIChwcmVfc2tpcCAhPSBwYXJzZS0+cHJlX3NraXApIHsKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChwYXJzZSwKKyAgICAgICAgICAgICAgIkZpeGluZyB1cCBwcmUtc2tpcCAldSAtPiAlIiBHX0dVSU5UNjRfRk9STUFULCBwcmVfc2tpcCwKKyAgICAgICAgICAgICAgcGFyc2UtPnByZV9za2lwKTsKKyAgICAgICAgICBHU1RfV1JJVEVfVUlOVDE2X0xFIChtYXAuZGF0YSArIDEwLCBwYXJzZS0+cHJlX3NraXApOworICAgICAgICB9CisgICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKHBhcnNlLT5pZF9oZWFkZXIsICZtYXApOworCisgICAgICAgIGNhcHMgPQorICAgICAgICAgICAgZ3N0X2NvZGVjX3V0aWxzX29wdXNfY3JlYXRlX2NhcHNfZnJvbV9oZWFkZXIgKHBhcnNlLT5pZF9oZWFkZXIsCisgICAgICAgICAgICBwYXJzZS0+Y29tbWVudF9oZWFkZXIpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR3N0Q2FwcyAqc2lua19jYXBzOworICAgICAgICBndWludDMyIHNhbXBsZV9yYXRlID0gNDgwMDA7CisgICAgICAgIGd1aW50OCBuX2NoYW5uZWxzLCBuX3N0cmVhbXMsIG5fc3RlcmVvX3N0cmVhbXMsIGNoYW5uZWxfbWFwcGluZ19mYW1pbHk7CisgICAgICAgIGd1aW50OCBjaGFubmVsX21hcHBpbmdbMjU2XTsKKyAgICAgICAgR3N0QnVmZmVyICppZF9oZWFkZXI7CisKKyAgICAgICAgc2lua19jYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQkFTRV9QQVJTRV9TSU5LX1BBRCAocGFyc2UpKTsKKyAgICAgICAgaWYgKCFzaW5rX2NhcHMKKyAgICAgICAgICAgIHx8ICFnc3RfY29kZWNfdXRpbHNfb3B1c19wYXJzZV9jYXBzIChzaW5rX2NhcHMsICZzYW1wbGVfcmF0ZSwKKyAgICAgICAgICAgICAgICAmbl9jaGFubmVscywgJmNoYW5uZWxfbWFwcGluZ19mYW1pbHksICZuX3N0cmVhbXMsCisgICAgICAgICAgICAgICAgJm5fc3RlcmVvX3N0cmVhbXMsIGNoYW5uZWxfbWFwcGluZykpIHsKKyAgICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKHBhcnNlLAorICAgICAgICAgICAgICAiTm8gaGVhZGVycyBhbmQgbm8gY2FwcywgYmxpbmRseSBzZXR0aW5nIHVwIGNhbm9uaWNhbCBzdGVyZW8iKTsKKyAgICAgICAgICBuX2NoYW5uZWxzID0gMjsKKyAgICAgICAgICBuX3N0cmVhbXMgPSAxOworICAgICAgICAgIG5fc3RlcmVvX3N0cmVhbXMgPSAxOworICAgICAgICAgIGNoYW5uZWxfbWFwcGluZ19mYW1pbHkgPSAwOworICAgICAgICAgIGNoYW5uZWxfbWFwcGluZ1swXSA9IDA7CisgICAgICAgICAgY2hhbm5lbF9tYXBwaW5nWzFdID0gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2lua19jYXBzKQorICAgICAgICAgIGdzdF9jYXBzX3VucmVmIChzaW5rX2NhcHMpOworCisgICAgICAgIGlkX2hlYWRlciA9CisgICAgICAgICAgICBnc3RfY29kZWNfdXRpbHNfb3B1c19jcmVhdGVfaGVhZGVyIChzYW1wbGVfcmF0ZSwgbl9jaGFubmVscywKKyAgICAgICAgICAgIGNoYW5uZWxfbWFwcGluZ19mYW1pbHksIG5fc3RyZWFtcywgbl9zdGVyZW9fc3RyZWFtcywKKyAgICAgICAgICAgIGNoYW5uZWxfbWFwcGluZywgcGFyc2UtPnByZV9za2lwLCAwKTsKKyAgICAgICAgY2FwcyA9IGdzdF9jb2RlY191dGlsc19vcHVzX2NyZWF0ZV9jYXBzX2Zyb21faGVhZGVyIChpZF9oZWFkZXIsIE5VTEwpOworICAgICAgICBnc3RfYnVmZmVyX3VucmVmIChpZF9oZWFkZXIpOworICAgICAgfQorCisgICAgICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZwYXJzZS0+aWRfaGVhZGVyLCBOVUxMKTsKKyAgICAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJnBhcnNlLT5jb21tZW50X2hlYWRlciwgTlVMTCk7CisKKyAgICAgIGdzdF9wYWRfc2V0X2NhcHMgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSwgY2Fwcyk7CisgICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CisgICAgICBwYXJzZS0+aGVhZGVyX3NlbnQgPSBUUlVFOworICAgIH0KICAgfQogCiAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChmcmFtZS0+YnVmZmVyKSA9IHBhcnNlLT5uZXh0X3RzOwpkaWZmIC0tZ2l0IGEvZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmggYi9leHQvb3B1cy9nc3RvcHVzcGFyc2UuaAppbmRleCA2ZDEyMGNjLi42Mzc5ZGUwIDEwMDY0NAotLS0gYS9leHQvb3B1cy9nc3RvcHVzcGFyc2UuaAorKysgYi9leHQvb3B1cy9nc3RvcHVzcGFyc2UuaApAQCAtNDQsOCArNDQsOCBAQAogc3RydWN0IF9Hc3RPcHVzUGFyc2UgewogICBHc3RCYXNlUGFyc2UgICAgICAgZWxlbWVudDsKIAotICBnYm9vbGVhbiBoZWFkZXJfc2VudDsKLSAgR1NMaXN0ICpoZWFkZXJzOworICBnYm9vbGVhbiBnb3RfaGVhZGVycywgaGVhZGVyX3NlbnQ7CisgIGd1aW50NjQgcHJlX3NraXA7CiAgIEdzdENsb2NrVGltZSBuZXh0X3RzOwogICBHc3RCdWZmZXIgKmlkX2hlYWRlcjsKICAgR3N0QnVmZmVyICpjb21tZW50X2hlYWRlcjsKZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdHJ0cG9wdXNkZXBheS5jIGIvZXh0L29wdXMvZ3N0cnRwb3B1c2RlcGF5LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiYjcyMTguLjAwMDAwMDAKLS0tIGEvZXh0L29wdXMvZ3N0cnRwb3B1c2RlcGF5LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotLyoKLSAqIE9wdXMgRGVwYXlsb2FkZXIgR3N0IEVsZW1lbnQKLSAqCi0gKiAgIEBhdXRob3I6IERhbmlsbyBDZXNhciBMZW1lcyBkZSBQYXVsYSA8ZGFuaWxvLmNlc2FyQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotIyAgaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPGdzdC9ydHAvZ3N0cnRwYnVmZmVyLmg+Ci0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0jaW5jbHVkZSAiZ3N0cnRwb3B1c2RlcGF5LmgiCi0KLUdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKHJ0cG9wdXNkZXBheV9kZWJ1Zyk7Ci0jZGVmaW5lIEdTVF9DQVRfREVGQVVMVCAocnRwb3B1c2RlcGF5X2RlYnVnKQotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X3J0cF9vcHVzX2RlcGF5X3NpbmtfdGVtcGxhdGUgPQotR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKLSAgICBHU1RfUEFEX1NJTkssCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTICgiYXBwbGljYXRpb24veC1ydHAsICIKLSAgICAgICAgIm1lZGlhID0gKHN0cmluZykgXCJhdWRpb1wiLCAiCi0gICAgICAgICJwYXlsb2FkID0gKGludCkgIiBHU1RfUlRQX1BBWUxPQURfRFlOQU1JQ19TVFJJTkcgIiwiCi0gICAgICAgICJjbG9jay1yYXRlID0gKGludCkgNDgwMDAsICIKLSAgICAgICAgImVuY29kaW5nLW5hbWUgPSAoc3RyaW5nKSB7IFwiT1BVU1wiLCBcIlgtR1NULU9QVVMtRFJBRlQtU1BJVFRLQS0wMFwiIH0iKQotICAgICk7Ci0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfcnRwX29wdXNfZGVwYXlfc3JjX3RlbXBsYXRlID0KLUdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKLSAgICBHU1RfUEFEX1NSQywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LW9wdXMsIG11bHRpc3RyZWFtID0gKGJvb2xlYW4pIEZBTFNFIikKLSAgICApOwotCi1zdGF0aWMgR3N0QnVmZmVyICpnc3RfcnRwX29wdXNfZGVwYXlfcHJvY2VzcyAoR3N0UlRQQmFzZURlcGF5bG9hZCAqIGRlcGF5bG9hZCwKLSAgICBHc3RCdWZmZXIgKiBidWYpOwotc3RhdGljIGdib29sZWFuIGdzdF9ydHBfb3B1c19kZXBheV9zZXRjYXBzIChHc3RSVFBCYXNlRGVwYXlsb2FkICogZGVwYXlsb2FkLAotICAgIEdzdENhcHMgKiBjYXBzKTsKLQotR19ERUZJTkVfVFlQRSAoR3N0UlRQT3B1c0RlcGF5LCBnc3RfcnRwX29wdXNfZGVwYXksCi0gICAgR1NUX1RZUEVfUlRQX0JBU0VfREVQQVlMT0FEKTsKLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfb3B1c19kZXBheV9jbGFzc19pbml0IChHc3RSVFBPcHVzRGVwYXlDbGFzcyAqIGtsYXNzKQotewotICBHc3RSVFBCYXNlRGVwYXlsb2FkQ2xhc3MgKmdzdGJhc2VydHBkZXBheWxvYWRfY2xhc3M7Ci0gIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzczsKLQotICBlbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKLSAgZ3N0YmFzZXJ0cGRlcGF5bG9hZF9jbGFzcyA9IChHc3RSVFBCYXNlRGVwYXlsb2FkQ2xhc3MgKikga2xhc3M7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9ydHBfb3B1c19kZXBheV9zcmNfdGVtcGxhdGUpKTsKLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9ydHBfb3B1c19kZXBheV9zaW5rX3RlbXBsYXRlKSk7Ci0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCi0gICAgICAiUlRQIE9wdXMgcGFja2V0IGRlcGF5bG9hZGVyIiwgIkNvZGVjL0RlcGF5bG9hZGVyL05ldHdvcmsvUlRQIiwKLSAgICAgICJFeHRyYWN0cyBPcHVzIGF1ZGlvIGZyb20gUlRQIHBhY2tldHMiLAotICAgICAgIkRhbmlsbyBDZXNhciBMZW1lcyBkZSBQYXVsYSA8ZGFuaWxvLmNlc2FyQGNvbGxhYm9yYS5jby51az4iKTsKLQotICBnc3RiYXNlcnRwZGVwYXlsb2FkX2NsYXNzLT5wcm9jZXNzID0gZ3N0X3J0cF9vcHVzX2RlcGF5X3Byb2Nlc3M7Ci0gIGdzdGJhc2VydHBkZXBheWxvYWRfY2xhc3MtPnNldF9jYXBzID0gZ3N0X3J0cF9vcHVzX2RlcGF5X3NldGNhcHM7Ci0KLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKHJ0cG9wdXNkZXBheV9kZWJ1ZywgInJ0cG9wdXNkZXBheSIsIDAsCi0gICAgICAiT3B1cyBSVFAgRGVwYXlsb2FkZXIiKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfb3B1c19kZXBheV9pbml0IChHc3RSVFBPcHVzRGVwYXkgKiBydHBvcHVzZGVwYXkpCi17Ci0KLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfcnRwX29wdXNfZGVwYXlfc2V0Y2FwcyAoR3N0UlRQQmFzZURlcGF5bG9hZCAqIGRlcGF5bG9hZCwgR3N0Q2FwcyAqIGNhcHMpCi17Ci0gIEdzdENhcHMgKnNyY2NhcHM7Ci0gIEdzdFN0cnVjdHVyZSAqczsKLSAgZ2Jvb2xlYW4gcmV0OwotICBjb25zdCBnY2hhciAqc3Byb3Bfc3RlcmVvLCAqc3Byb3BfbWF4Y2FwdHVyZXJhdGU7Ci0KLSAgc3JjY2FwcyA9Ci0gICAgICBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXVkaW8veC1vcHVzIiwgIm11bHRpc3RyZWFtIiwgR19UWVBFX0JPT0xFQU4sIEZBTFNFLAotICAgICAgTlVMTCk7Ci0KLSAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotICBpZiAoKHNwcm9wX3N0ZXJlbyA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAocywgInNwcm9wLXN0ZXJlbyIpKSkgewotICAgIGlmIChzdHJjbXAgKHNwcm9wX3N0ZXJlbywgIjAiKSA9PSAwKQotICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoc3JjY2FwcywgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgMSwgTlVMTCk7Ci0gICAgZWxzZSBpZiAoc3RyY21wIChzcHJvcF9zdGVyZW8sICIxIikgPT0gMCkKLSAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKHNyY2NhcHMsICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDIsIE5VTEwpOwotICAgIGVsc2UKLSAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVwYXlsb2FkLCAiVW5rbm93biBzcHJvcC1zdGVyZW8gdmFsdWUgJyVzJyIsCi0gICAgICAgICAgc3Byb3Bfc3RlcmVvKTsKLSAgfQotCi0gIGlmICgoc3Byb3BfbWF4Y2FwdHVyZXJhdGUgPQotICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAocywgInNwcm9wLW1heGNhcHR1cmVyYXRlIikpKSB7Ci0gICAgZ3Vsb25nIHJhdGU7Ci0gICAgZ2NoYXIgKnRhaWxwdHI7Ci0KLSAgICByYXRlID0gc3RydG91bCAoc3Byb3BfbWF4Y2FwdHVyZXJhdGUsICZ0YWlscHRyLCAxMCk7Ci0gICAgaWYgKHJhdGUgPiBJTlRfTUFYIHx8ICp0YWlscHRyICE9ICdcMCcpIHsKLSAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVwYXlsb2FkLAotICAgICAgICAgICJGYWlsZWQgdG8gcGFyc2Ugc3Byb3AtbWF4Y2FwdHVyZXJhdGUgdmFsdWUgJyVzJyIsCi0gICAgICAgICAgc3Byb3BfbWF4Y2FwdHVyZXJhdGUpOwotICAgIH0gZWxzZSB7Ci0gICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChzcmNjYXBzLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHJhdGUsIE5VTEwpOwotICAgIH0KLSAgfQotCi0gIHJldCA9IGdzdF9wYWRfc2V0X2NhcHMgKEdTVF9SVFBfQkFTRV9ERVBBWUxPQURfU1JDUEFEIChkZXBheWxvYWQpLCBzcmNjYXBzKTsKLQotICBHU1RfREVCVUdfT0JKRUNUIChkZXBheWxvYWQsCi0gICAgICAic2V0IGNhcHMgb24gc291cmNlOiAlIiBHU1RfUFRSX0ZPUk1BVCAiIChyZXQ9JWQpIiwgc3JjY2FwcywgcmV0KTsKLSAgZ3N0X2NhcHNfdW5yZWYgKHNyY2NhcHMpOwotCi0gIGRlcGF5bG9hZC0+Y2xvY2tfcmF0ZSA9IDQ4MDAwOwotCi0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZm9yZWFjaF9tZXRhZGF0YSAoR3N0QnVmZmVyICogaW5idWYsIEdzdE1ldGEgKiogbWV0YSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotewotICBHc3RSVFBPcHVzRGVwYXkgKmRlcGF5ID0gdXNlcl9kYXRhOwotICBjb25zdCBHc3RNZXRhSW5mbyAqaW5mbyA9ICgqbWV0YSktPmluZm87Ci0gIGNvbnN0IGdjaGFyICpjb25zdCAqdGFncyA9IGdzdF9tZXRhX2FwaV90eXBlX2dldF90YWdzIChpbmZvLT5hcGkpOwotCi0gIGlmICghdGFncyB8fCAoZ19zdHJ2X2xlbmd0aCAoKGdjaGFyICoqKSB0YWdzKSA9PSAxCi0gICAgICAgICAgJiYgZ3N0X21ldGFfYXBpX3R5cGVfaGFzX3RhZyAoaW5mby0+YXBpLAotICAgICAgICAgICAgICBnX3F1YXJrX2Zyb21fc3RyaW5nIChHU1RfTUVUQV9UQUdfQVVESU9fU1RSKSkpKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVwYXksICJrZWVwaW5nIG1ldGFkYXRhICVzIiwgZ190eXBlX25hbWUgKGluZm8tPmFwaSkpOwotICB9IGVsc2UgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlcGF5LCAiZHJvcHBpbmcgbWV0YWRhdGEgJXMiLCBnX3R5cGVfbmFtZSAoaW5mby0+YXBpKSk7Ci0gICAgKm1ldGEgPSBOVUxMOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBHc3RCdWZmZXIgKgotZ3N0X3J0cF9vcHVzX2RlcGF5X3Byb2Nlc3MgKEdzdFJUUEJhc2VEZXBheWxvYWQgKiBkZXBheWxvYWQsIEdzdEJ1ZmZlciAqIGJ1ZikKLXsKLSAgR3N0QnVmZmVyICpvdXRidWY7Ci0gIEdzdFJUUEJ1ZmZlciBydHBidWYgPSB7IE5VTEwsIH07Ci0KLSAgZ3N0X3J0cF9idWZmZXJfbWFwIChidWYsIEdTVF9NQVBfUkVBRCwgJnJ0cGJ1Zik7Ci0gIG91dGJ1ZiA9IGdzdF9ydHBfYnVmZmVyX2dldF9wYXlsb2FkX2J1ZmZlciAoJnJ0cGJ1Zik7Ci0gIGdzdF9ydHBfYnVmZmVyX3VubWFwICgmcnRwYnVmKTsKLQotICBvdXRidWYgPSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUgKG91dGJ1Zik7Ci0gIC8qIEZpbHRlciBhd2F5IGFsbCBtZXRhcyB0aGF0IGFyZSBub3Qgc2Vuc2libGUgdG8gY29weSAqLwotICBnc3RfYnVmZmVyX2ZvcmVhY2hfbWV0YSAob3V0YnVmLCBmb3JlYWNoX21ldGFkYXRhLCBkZXBheWxvYWQpOwotCi0gIHJldHVybiBvdXRidWY7Ci19CmRpZmYgLS1naXQgYS9leHQvb3B1cy9nc3RydHBvcHVzZGVwYXkuaCBiL2V4dC9vcHVzL2dzdHJ0cG9wdXNkZXBheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODkwZWIxLi4wMDAwMDAwCi0tLSBhL2V4dC9vcHVzL2dzdHJ0cG9wdXNkZXBheS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLyoKLSAqIE9wdXMgRGVwYXlsb2FkZXIgR3N0IEVsZW1lbnQKLSAqCi0gKiAgIEBhdXRob3I6IERhbmlsbyBDZXNhciBMZW1lcyBkZSBQYXVsYSA8ZGFuaWxvLmV1QGdtYWlsLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIF9fR1NUX1JUUF9PUFVTX0RFUEFZX0hfXwotI2RlZmluZSBfX0dTVF9SVFBfT1BVU19ERVBBWV9IX18KLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvcnRwL2dzdHJ0cGJhc2VkZXBheWxvYWQuaD4KLQotR19CRUdJTl9ERUNMUyB0eXBlZGVmIHN0cnVjdCBfR3N0UlRQT3B1c0RlcGF5IEdzdFJUUE9wdXNEZXBheTsKLXR5cGVkZWYgc3RydWN0IF9Hc3RSVFBPcHVzRGVwYXlDbGFzcyBHc3RSVFBPcHVzRGVwYXlDbGFzczsKLQotI2RlZmluZSBHU1RfVFlQRV9SVFBfT1BVU19ERVBBWSBcCi0gIChnc3RfcnRwX29wdXNfZGVwYXlfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgR1NUX1JUUF9PUFVTX0RFUEFZKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfUlRQX09QVVNfREVQQVksR3N0UlRQT3B1c0RlcGF5KSkKLSNkZWZpbmUgR1NUX1JUUF9PUFVTX0RFUEFZX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1JUUF9PUFVTX0RFUEFZLEdzdFJUUE9wdXNEZXBheUNsYXNzKSkKLSNkZWZpbmUgR1NUX0lTX1JUUF9PUFVTX0RFUEFZKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfUlRQX09QVVNfREVQQVkpKQotI2RlZmluZSBHU1RfSVNfUlRQX09QVVNfREVQQVlfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfUlRQX09QVVNfREVQQVkpKQotCi0KLXN0cnVjdCBfR3N0UlRQT3B1c0RlcGF5Ci17Ci0gIEdzdFJUUEJhc2VEZXBheWxvYWQgZGVwYXlsb2FkOwotCi19OwotCi1zdHJ1Y3QgX0dzdFJUUE9wdXNEZXBheUNsYXNzCi17Ci0gIEdzdFJUUEJhc2VEZXBheWxvYWRDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1HVHlwZSBnc3RfcnRwX29wdXNfZGVwYXlfZ2V0X3R5cGUgKHZvaWQpOwotCi1HX0VORF9ERUNMUwotI2VuZGlmIC8qIF9fR1NUX1JUUF9PUFVTX0RFUEFZX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L29wdXMvZ3N0cnRwb3B1c3BheS5jIGIvZXh0L29wdXMvZ3N0cnRwb3B1c3BheS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWQ0OWE1Li4wMDAwMDAwCi0tLSBhL2V4dC9vcHVzL2dzdHJ0cG9wdXNwYXkuYworKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0vKgotICogT3B1cyBQYXlsb2FkZXIgR3N0IEVsZW1lbnQKLSAqCi0gKiAgIEBhdXRob3I6IERhbmlsbyBDZXNhciBMZW1lcyBkZSBQYXVsYSA8ZGFuaWxvLmNlc2FyQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotIyAgaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8Z3N0L3J0cC9nc3RydHBidWZmZXIuaD4KLSNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KLQotI2luY2x1ZGUgImdzdHJ0cG9wdXNwYXkuaCIKLQotR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAocnRwb3B1c3BheV9kZWJ1Zyk7Ci0jZGVmaW5lIEdTVF9DQVRfREVGQVVMVCAocnRwb3B1c3BheV9kZWJ1ZykKLQotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X3J0cF9vcHVzX3BheV9zaW5rX3RlbXBsYXRlID0KLUdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImF1ZGlvL3gtb3B1cywgbXVsdGlzdHJlYW0gPSAoYm9vbGVhbikgRkFMU0UiKQotICAgICk7Ci0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfcnRwX29wdXNfcGF5X3NyY190ZW1wbGF0ZSA9Ci1HU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCi0gICAgR1NUX1BBRF9TUkMsCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTICgiYXBwbGljYXRpb24veC1ydHAsICIKLSAgICAgICAgIm1lZGlhID0gKHN0cmluZykgXCJhdWRpb1wiLCAiCi0gICAgICAgICJwYXlsb2FkID0gKGludCkgIiBHU1RfUlRQX1BBWUxPQURfRFlOQU1JQ19TVFJJTkcgIiwgIgotICAgICAgICAiY2xvY2stcmF0ZSA9IChpbnQpIDQ4MDAwLCAiCi0gICAgICAgICJlbmNvZGluZy1wYXJhbXMgPSAoc3RyaW5nKSBcIjJcIiwgIgotICAgICAgICAiZW5jb2RpbmctbmFtZSA9IChzdHJpbmcpIHsgXCJPUFVTXCIsIFwiWC1HU1QtT1BVUy1EUkFGVC1TUElUVEtBLTAwXCIgfSIpCi0gICAgKTsKLQotc3RhdGljIGdib29sZWFuIGdzdF9ydHBfb3B1c19wYXlfc2V0Y2FwcyAoR3N0UlRQQmFzZVBheWxvYWQgKiBwYXlsb2FkLAotICAgIEdzdENhcHMgKiBjYXBzKTsKLXN0YXRpYyBHc3RDYXBzICpnc3RfcnRwX29wdXNfcGF5X2dldGNhcHMgKEdzdFJUUEJhc2VQYXlsb2FkICogcGF5bG9hZCwKLSAgICBHc3RQYWQgKiBwYWQsIEdzdENhcHMgKiBmaWx0ZXIpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3J0cF9vcHVzX3BheV9oYW5kbGVfYnVmZmVyIChHc3RSVFBCYXNlUGF5bG9hZCAqCi0gICAgcGF5bG9hZCwgR3N0QnVmZmVyICogYnVmZmVyKTsKLQotR19ERUZJTkVfVFlQRSAoR3N0UnRwT1BVU1BheSwgZ3N0X3J0cF9vcHVzX3BheSwgR1NUX1RZUEVfUlRQX0JBU0VfUEFZTE9BRCk7Ci0KLXN0YXRpYyB2b2lkCi1nc3RfcnRwX29wdXNfcGF5X2NsYXNzX2luaXQgKEdzdFJ0cE9QVVNQYXlDbGFzcyAqIGtsYXNzKQotewotICBHc3RSVFBCYXNlUGF5bG9hZENsYXNzICpnc3RiYXNlcnRwcGF5bG9hZF9jbGFzczsKLSAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzOwotCi0gIGdzdGJhc2VydHBwYXlsb2FkX2NsYXNzID0gKEdzdFJUUEJhc2VQYXlsb2FkQ2xhc3MgKikga2xhc3M7Ci0gIGVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotCi0gIGdzdGJhc2VydHBwYXlsb2FkX2NsYXNzLT5zZXRfY2FwcyA9IGdzdF9ydHBfb3B1c19wYXlfc2V0Y2FwczsKLSAgZ3N0YmFzZXJ0cHBheWxvYWRfY2xhc3MtPmdldF9jYXBzID0gZ3N0X3J0cF9vcHVzX3BheV9nZXRjYXBzOwotICBnc3RiYXNlcnRwcGF5bG9hZF9jbGFzcy0+aGFuZGxlX2J1ZmZlciA9IGdzdF9ydHBfb3B1c19wYXlfaGFuZGxlX2J1ZmZlcjsKLQotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X3J0cF9vcHVzX3BheV9zcmNfdGVtcGxhdGUpKTsKLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9ydHBfb3B1c19wYXlfc2lua190ZW1wbGF0ZSkpOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCi0gICAgICAiUlRQIE9wdXMgcGF5bG9hZGVyIiwKLSAgICAgICJDb2RlYy9QYXlsb2FkZXIvTmV0d29yay9SVFAiLAotICAgICAgIlB1dHMgT3B1cyBhdWRpbyBpbiBSVFAgcGFja2V0cyIsCi0gICAgICAiRGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhIDxkYW5pbG8uY2VzYXJAY29sbGFib3JhLmNvLnVrPiIpOwotCi0gIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChydHBvcHVzcGF5X2RlYnVnLCAicnRwb3B1c3BheSIsIDAsCi0gICAgICAiT3B1cyBSVFAgUGF5bG9hZGVyIik7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfcnRwX29wdXNfcGF5X2luaXQgKEdzdFJ0cE9QVVNQYXkgKiBydHBvcHVzcGF5KQotewotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9ydHBfb3B1c19wYXlfc2V0Y2FwcyAoR3N0UlRQQmFzZVBheWxvYWQgKiBwYXlsb2FkLCBHc3RDYXBzICogY2FwcykKLXsKLSAgZ2Jvb2xlYW4gcmVzOwotICBHc3RDYXBzICpzcmNfY2FwczsKLSAgR3N0U3RydWN0dXJlICpzOwotICBjaGFyICplbmNvZGluZ19uYW1lOwotICBnaW50IGNoYW5uZWxzLCByYXRlOwotICBjb25zdCBjaGFyICpzcHJvcF9zdGVyZW8gPSBOVUxMOwotICBjaGFyICpzcHJvcF9tYXhjYXB0dXJlcmF0ZSA9IE5VTEw7Ci0KLSAgc3JjX2NhcHMgPSBnc3RfcGFkX2dldF9hbGxvd2VkX2NhcHMgKEdTVF9SVFBfQkFTRV9QQVlMT0FEX1NSQ1BBRCAocGF5bG9hZCkpOwotICBpZiAoc3JjX2NhcHMpIHsKLSAgICBzcmNfY2FwcyA9IGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKHNyY19jYXBzKTsKLSAgICBzcmNfY2FwcyA9IGdzdF9jYXBzX3RydW5jYXRlIChzcmNfY2Fwcyk7Ci0gICAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHNyY19jYXBzLCAwKTsKLSAgICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9zdHJpbmcgKHMsICJlbmNvZGluZy1uYW1lIiwgIk9QVVMiKTsKLSAgICBlbmNvZGluZ19uYW1lID0gZ19zdHJkdXAgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAocywgImVuY29kaW5nLW5hbWUiKSk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYgKHNyY19jYXBzKTsKLSAgfSBlbHNlIHsKLSAgICBlbmNvZGluZ19uYW1lID0gZ19zdHJkdXAgKCJYLUdTVC1PUFVTLURSQUZULVNQSVRUS0EtMDAiKTsKLSAgfQotCi0gIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLSAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgImNoYW5uZWxzIiwgJmNoYW5uZWxzKSkgewotICAgIGlmIChjaGFubmVscyA+IDIpIHsKLSAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHBheWxvYWQsCi0gICAgICAgICAgIk1vcmUgdGhhbiAyIGNoYW5uZWxzIHdpdGggbXVsdGlzdHJlYW09RkFMU0UgaXMgaW52YWxpZCIpOwotICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0gZWxzZSBpZiAoY2hhbm5lbHMgPT0gMikgewotICAgICAgc3Byb3Bfc3RlcmVvID0gIjEiOwotICAgIH0gZWxzZSB7Ci0gICAgICBzcHJvcF9zdGVyZW8gPSAiMCI7Ci0gICAgfQotICB9Ci0KLSAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgInJhdGUiLCAmcmF0ZSkpIHsKLSAgICBzcHJvcF9tYXhjYXB0dXJlcmF0ZSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVkIiwgcmF0ZSk7Ci0gIH0KLQotICBnc3RfcnRwX2Jhc2VfcGF5bG9hZF9zZXRfb3B0aW9ucyAocGF5bG9hZCwgImF1ZGlvIiwgRkFMU0UsCi0gICAgICBlbmNvZGluZ19uYW1lLCA0ODAwMCk7Ci0gIGdfZnJlZSAoZW5jb2RpbmdfbmFtZSk7Ci0KLSAgaWYgKHNwcm9wX21heGNhcHR1cmVyYXRlICYmIHNwcm9wX3N0ZXJlbykgewotICAgIHJlcyA9Ci0gICAgICAgIGdzdF9ydHBfYmFzZV9wYXlsb2FkX3NldF9vdXRjYXBzIChwYXlsb2FkLCAic3Byb3AtbWF4Y2FwdHVyZXJhdGUiLAotICAgICAgICBHX1RZUEVfU1RSSU5HLCBzcHJvcF9tYXhjYXB0dXJlcmF0ZSwgInNwcm9wLXN0ZXJlbyIsIEdfVFlQRV9TVFJJTkcsCi0gICAgICAgIHNwcm9wX3N0ZXJlbywgTlVMTCk7Ci0gIH0gZWxzZSBpZiAoc3Byb3BfbWF4Y2FwdHVyZXJhdGUpIHsKLSAgICByZXMgPQotICAgICAgICBnc3RfcnRwX2Jhc2VfcGF5bG9hZF9zZXRfb3V0Y2FwcyAocGF5bG9hZCwgInNwcm9wLW1heGNhcHR1cmVyYXRlIiwKLSAgICAgICAgR19UWVBFX1NUUklORywgc3Byb3BfbWF4Y2FwdHVyZXJhdGUsIE5VTEwpOwotICB9IGVsc2UgaWYgKHNwcm9wX3N0ZXJlbykgewotICAgIHJlcyA9Ci0gICAgICAgIGdzdF9ydHBfYmFzZV9wYXlsb2FkX3NldF9vdXRjYXBzIChwYXlsb2FkLCAic3Byb3Atc3RlcmVvIiwKLSAgICAgICAgR19UWVBFX1NUUklORywgc3Byb3Bfc3RlcmVvLCBOVUxMKTsKLSAgfSBlbHNlIHsKLSAgICByZXMgPSBnc3RfcnRwX2Jhc2VfcGF5bG9hZF9zZXRfb3V0Y2FwcyAocGF5bG9hZCwgTlVMTCk7Ci0gIH0KLQotICBnX2ZyZWUgKHNwcm9wX21heGNhcHR1cmVyYXRlKTsKLQotICByZXR1cm4gcmVzOwotfQotCi10eXBlZGVmIHN0cnVjdAotewotICBHc3RSdHBPUFVTUGF5ICpwYXk7Ci0gIEdzdEJ1ZmZlciAqb3V0YnVmOwotfSBDb3B5TWV0YURhdGE7Ci0KLXN0YXRpYyBnYm9vbGVhbgotZm9yZWFjaF9tZXRhZGF0YSAoR3N0QnVmZmVyICogaW5idWYsIEdzdE1ldGEgKiogbWV0YSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotewotICBDb3B5TWV0YURhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0gIEdzdFJ0cE9QVVNQYXkgKnBheSA9IGRhdGEtPnBheTsKLSAgR3N0QnVmZmVyICpvdXRidWYgPSBkYXRhLT5vdXRidWY7Ci0gIGNvbnN0IEdzdE1ldGFJbmZvICppbmZvID0gKCptZXRhKS0+aW5mbzsKLSAgY29uc3QgZ2NoYXIgKmNvbnN0ICp0YWdzID0gZ3N0X21ldGFfYXBpX3R5cGVfZ2V0X3RhZ3MgKGluZm8tPmFwaSk7Ci0KLSAgaWYgKCF0YWdzIHx8IChnX3N0cnZfbGVuZ3RoICgoZ2NoYXIgKiopIHRhZ3MpID09IDEKLSAgICAgICAgICAmJiBnc3RfbWV0YV9hcGlfdHlwZV9oYXNfdGFnIChpbmZvLT5hcGksCi0gICAgICAgICAgICAgIGdfcXVhcmtfZnJvbV9zdHJpbmcgKEdTVF9NRVRBX1RBR19BVURJT19TVFIpKSkpIHsKLSAgICBHc3RNZXRhVHJhbnNmb3JtQ29weSBjb3B5X2RhdGEgPSB7IEZBTFNFLCAwLCAtMSB9OwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBheSwgImNvcHkgbWV0YWRhdGEgJXMiLCBnX3R5cGVfbmFtZSAoaW5mby0+YXBpKSk7Ci0gICAgLyogc2ltcGx5IGNvcHkgdGhlbiAqLwotICAgIGluZm8tPnRyYW5zZm9ybV9mdW5jIChvdXRidWYsICptZXRhLCBpbmJ1ZiwKLSAgICAgICAgX2dzdF9tZXRhX3RyYW5zZm9ybV9jb3B5LCAmY29weV9kYXRhKTsKLSAgfSBlbHNlIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChwYXksICJub3QgY29weWluZyBtZXRhZGF0YSAlcyIsIGdfdHlwZV9uYW1lIChpbmZvLT5hcGkpKTsKLSAgfQotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X3J0cF9vcHVzX3BheV9oYW5kbGVfYnVmZmVyIChHc3RSVFBCYXNlUGF5bG9hZCAqIGJhc2VwYXlsb2FkLAotICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLXsKLSAgR3N0QnVmZmVyICpvdXRidWY7Ci0gIEdzdENsb2NrVGltZSBwdHMsIGR0cywgZHVyYXRpb247Ci0gIENvcHlNZXRhRGF0YSBkYXRhOwotCi0gIHB0cyA9IEdTVF9CVUZGRVJfUFRTIChidWZmZXIpOwotICBkdHMgPSBHU1RfQlVGRkVSX0RUUyAoYnVmZmVyKTsKLSAgZHVyYXRpb24gPSBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpOwotCi0gIG91dGJ1ZiA9IGdzdF9ydHBfYnVmZmVyX25ld19hbGxvY2F0ZSAoMCwgMCwgMCk7Ci0gIGRhdGEucGF5ID0gR1NUX1JUUF9PUFVTX1BBWSAoYmFzZXBheWxvYWQpOwotICBkYXRhLm91dGJ1ZiA9IG91dGJ1ZjsKLSAgZ3N0X2J1ZmZlcl9mb3JlYWNoX21ldGEgKGJ1ZmZlciwgZm9yZWFjaF9tZXRhZGF0YSwgJmRhdGEpOwotICBvdXRidWYgPSBnc3RfYnVmZmVyX2FwcGVuZCAob3V0YnVmLCBidWZmZXIpOwotCi0gIEdTVF9CVUZGRVJfUFRTIChvdXRidWYpID0gcHRzOwotICBHU1RfQlVGRkVSX0RUUyAob3V0YnVmKSA9IGR0czsKLSAgR1NUX0JVRkZFUl9EVVJBVElPTiAob3V0YnVmKSA9IGR1cmF0aW9uOwotCi0gIC8qIFB1c2ggb3V0ICovCi0gIHJldHVybiBnc3RfcnRwX2Jhc2VfcGF5bG9hZF9wdXNoIChiYXNlcGF5bG9hZCwgb3V0YnVmKTsKLX0KLQotc3RhdGljIEdzdENhcHMgKgotZ3N0X3J0cF9vcHVzX3BheV9nZXRjYXBzIChHc3RSVFBCYXNlUGF5bG9hZCAqIHBheWxvYWQsCi0gICAgR3N0UGFkICogcGFkLCBHc3RDYXBzICogZmlsdGVyKQotewotICBHc3RDYXBzICpjYXBzLCAqcGVlcmNhcHMsICp0Y2FwczsKLSAgR3N0U3RydWN0dXJlICpzOwotICBjb25zdCBnY2hhciAqc3RlcmVvOwotCi0gIGlmIChwYWQgPT0gR1NUX1JUUF9CQVNFX1BBWUxPQURfU1JDUEFEIChwYXlsb2FkKSkKLSAgICByZXR1cm4KLSAgICAgICAgR1NUX1JUUF9CQVNFX1BBWUxPQURfQ0xBU1MgKGdzdF9ydHBfb3B1c19wYXlfcGFyZW50X2NsYXNzKS0+Z2V0X2NhcHMKLSAgICAgICAgKHBheWxvYWQsIHBhZCwgZmlsdGVyKTsKLQotICB0Y2FwcyA9IGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChHU1RfUlRQX0JBU0VfUEFZTE9BRF9TUkNQQUQgKHBheWxvYWQpKTsKLSAgcGVlcmNhcHMgPSBnc3RfcGFkX3BlZXJfcXVlcnlfY2FwcyAoR1NUX1JUUF9CQVNFX1BBWUxPQURfU1JDUEFEIChwYXlsb2FkKSwKLSAgICAgIHRjYXBzKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKHRjYXBzKTsKLSAgaWYgKCFwZWVyY2FwcykKLSAgICByZXR1cm4KLSAgICAgICAgR1NUX1JUUF9CQVNFX1BBWUxPQURfQ0xBU1MgKGdzdF9ydHBfb3B1c19wYXlfcGFyZW50X2NsYXNzKS0+Z2V0X2NhcHMKLSAgICAgICAgKHBheWxvYWQsIHBhZCwgZmlsdGVyKTsKLQotICBpZiAoZ3N0X2NhcHNfaXNfZW1wdHkgKHBlZXJjYXBzKSkKLSAgICByZXR1cm4gcGVlcmNhcHM7Ci0KLSAgY2FwcyA9IGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChHU1RfUlRQX0JBU0VfUEFZTE9BRF9TSU5LUEFEIChwYXlsb2FkKSk7Ci0KLSAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHBlZXJjYXBzLCAwKTsKLSAgc3RlcmVvID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzLCAic3RlcmVvIik7Ci0gIGlmIChzdGVyZW8gIT0gTlVMTCkgewotICAgIGNhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChjYXBzKTsKLQotICAgIGlmICghc3RyY21wIChzdGVyZW8sICIxIikpIHsKLSAgICAgIEdzdENhcHMgKmNhcHMyID0gZ3N0X2NhcHNfY29weSAoY2Fwcyk7Ci0KLSAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDIsIE5VTEwpOwotICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwczIsICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsIE5VTEwpOwotICAgICAgY2FwcyA9IGdzdF9jYXBzX21lcmdlIChjYXBzLCBjYXBzMik7Ci0gICAgfSBlbHNlIGlmICghc3RyY21wIChzdGVyZW8sICIwIikpIHsKLSAgICAgIEdzdENhcHMgKmNhcHMyID0gZ3N0X2NhcHNfY29weSAoY2Fwcyk7Ci0KLSAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsIE5VTEwpOwotICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwczIsICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDIsIE5VTEwpOwotICAgICAgY2FwcyA9IGdzdF9jYXBzX21lcmdlIChjYXBzLCBjYXBzMik7Ci0gICAgfQotICB9Ci0gIGdzdF9jYXBzX3VucmVmIChwZWVyY2Fwcyk7Ci0KLSAgaWYgKGZpbHRlcikgewotICAgIEdzdENhcHMgKnRtcCA9IGdzdF9jYXBzX2ludGVyc2VjdF9mdWxsIChjYXBzLCBmaWx0ZXIsCi0gICAgICAgIEdTVF9DQVBTX0lOVEVSU0VDVF9GSVJTVCk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotICAgIGNhcHMgPSB0bXA7Ci0gIH0KLQotICBHU1RfREVCVUdfT0JKRUNUIChwYXlsb2FkLCAiUmV0dXJuaW5nIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKLSAgcmV0dXJuIGNhcHM7Ci19CmRpZmYgLS1naXQgYS9leHQvb3B1cy9nc3RydHBvcHVzcGF5LmggYi9leHQvb3B1cy9nc3RydHBvcHVzcGF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMWJiZTMuLjAwMDAwMDAKLS0tIGEvZXh0L29wdXMvZ3N0cnRwb3B1c3BheS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIE9wdXMgUGF5bG9hZGVyIEdzdCBFbGVtZW50Ci0gKgotICogICBAYXV0aG9yOiBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgPGRhbmlsby5ldUBnbWFpbC5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBfX0dTVF9SVFBfT1BVU19QQVlfSF9fCi0jZGVmaW5lIF9fR1NUX1JUUF9PUFVTX1BBWV9IX18KLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvcnRwL2dzdHJ0cGJhc2VwYXlsb2FkLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBHU1RfVFlQRV9SVFBfT1BVU19QQVkgXAotICAoZ3N0X3J0cF9vcHVzX3BheV9nZXRfdHlwZSgpKQotI2RlZmluZSBHU1RfUlRQX09QVVNfUEFZKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfUlRQX09QVVNfUEFZLEdzdFJ0cE9QVVNQYXkpKQotI2RlZmluZSBHU1RfUlRQX09QVVNfUEFZX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1JUUF9PUFVTX1BBWSxHc3RSdHBPUFVTUGF5Q2xhc3MpKQotI2RlZmluZSBHU1RfSVNfUlRQX09QVVNfUEFZKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfUlRQX09QVVNfUEFZKSkKLSNkZWZpbmUgR1NUX0lTX1JUUF9PUFVTX1BBWV9DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9SVFBfT1BVU19QQVkpKQotCi10eXBlZGVmIHN0cnVjdCBfR3N0UnRwT1BVU1BheSBHc3RSdHBPUFVTUGF5OwotdHlwZWRlZiBzdHJ1Y3QgX0dzdFJ0cE9QVVNQYXlDbGFzcyBHc3RSdHBPUFVTUGF5Q2xhc3M7Ci0KLXN0cnVjdCBfR3N0UnRwT1BVU1BheQotewotICBHc3RSVFBCYXNlUGF5bG9hZCBwYXlsb2FkOwotfTsKLQotc3RydWN0IF9Hc3RSdHBPUFVTUGF5Q2xhc3MKLXsKLSAgR3N0UlRQQmFzZVBheWxvYWRDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1HVHlwZSBnc3RfcnRwX29wdXNfcGF5X2dldF90eXBlICh2b2lkKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIF9fR1NUX1JUUF9PUFVTX1BBWV9IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9xdC9NYWtlZmlsZS5hbSBiL2V4dC9xdC9NYWtlZmlsZS5hbQppbmRleCAwNTllZTdiLi41ZmRkOTBhIDEwMDY0NAotLS0gYS9leHQvcXQvTWFrZWZpbGUuYW0KKysrIGIvZXh0L3F0L01ha2VmaWxlLmFtCkBAIC0xLDQgKzEsNCBAQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGlicXRzaW5rLmxhCitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RxdHNpbmsubGEKIAogbm9pbnN0X0hFQURFUlMgPSBcCiAJZ3N0cXNndGV4dHVyZS5oIFwKQEAgLTEzLDM2ICsxMywzOCBAQAogQlVJTFRfU09VUkNFUyA9ICQobW9jX2dlbmVyYXRlZCkKIENMRUFORklMRVMgPSAkKG1vY19nZW5lcmF0ZWQpCiAKLW5vZGlzdF9saWJxdHNpbmtfbGFfU09VUkNFUyA9ICQoQlVJTFRfU09VUkNFUykKK25vZGlzdF9saWJnc3RxdHNpbmtfbGFfU09VUkNFUyA9ICQoQlVJTFRfU09VUkNFUykKIAotbGlicXRzaW5rX2xhX1NPVVJDRVMgPSBcCitsaWJnc3RxdHNpbmtfbGFfU09VUkNFUyA9IFwKIAlnc3Rxc2d0ZXh0dXJlLmNjIFwKIAlxdGl0ZW0uY2MgXAogCWdzdHF0c2luay5jYyBcCiAJZ3N0cXRzaW5rLmggXAorCWdzdHF0Z2wuaCBcCiAJZ3N0cGx1Z2luLmNjCiAKLWxpYnF0c2lua19sYV9DWFhGTEFHUyA9IFwKK2xpYmdzdHF0c2lua19sYV9DWFhGTEFHUyA9IFwKIAktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAogCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKIAkkKEdTVF9DWFhGTEFHUykgXAogCSQoR1NUX0JBU0VfQ0ZMQUdTKSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAotCSQoUVRfQ0ZMQUdTKQorCSQoUVRfQ0ZMQUdTKSBcCisJJChHTF9DRkxBR1MpCiAKLWxpYnF0c2lua19sYV9MSUJBREQgPSBcCitsaWJnc3RxdHNpbmtfbGFfTElCQUREID0gXAogCSQoR1NUX0JBU0VfTElCUykgXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCiAJJChRVF9MSUJTKSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9nbC9saWJnc3RnbC0kKEdTVF9BUElfVkVSU0lPTikubGEgXAogCS1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pCiAKLWxpYnF0c2lua19sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCi1saWJxdHNpbmtfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKK2xpYmdzdHF0c2lua19sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCitsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKIAogCiAkKG1vY19nZW5lcmF0ZWQpOiBtb2NfJS5jYzogJS5oCi0JQE1PQ0AgLW8gJEAgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoTU9DX0NQUEZMQUdTKSAkPAorCUBNT0NAIC1vICRAICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKE1PQ19DUFBGTEFHUykgJDwKIAogdWktJS5oOiAlLnVpCiAJQFVJQ0AgLW8gJEAgJDwKZGlmZiAtLWdpdCBhL2V4dC9xdC9NYWtlZmlsZS5pbiBiL2V4dC9xdC9NYWtlZmlsZS5pbgppbmRleCAzZDI0YzI4Li5iNDI5M2E1IDEwMDY0NAotLS0gYS9leHQvcXQvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3F0L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE2NCwyNiArMTYzLDI2IEBACiBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIKIExUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQotbGlicXRzaW5rX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCitsaWJnc3RxdHNpbmtfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLSQoR1NUX0FQSV9WRVJTSU9OKS5sYQotYW1fbGlicXRzaW5rX2xhX09CSkVDVFMgPSBsaWJxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5sbyBcCi0JbGlicXRzaW5rX2xhLXF0aXRlbS5sbyBsaWJxdHNpbmtfbGEtZ3N0cXRzaW5rLmxvIFwKLQlsaWJxdHNpbmtfbGEtZ3N0cGx1Z2luLmxvCi1hbV9fb2JqZWN0c18xID0gbGlicXRzaW5rX2xhLW1vY19xdGl0ZW0ubG8gXAotCWxpYnF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5sbworYW1fbGliZ3N0cXRzaW5rX2xhX09CSkVDVFMgPSBsaWJnc3RxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5sbyBcCisJbGliZ3N0cXRzaW5rX2xhLXF0aXRlbS5sbyBsaWJnc3RxdHNpbmtfbGEtZ3N0cXRzaW5rLmxvIFwKKwlsaWJnc3RxdHNpbmtfbGEtZ3N0cGx1Z2luLmxvCithbV9fb2JqZWN0c18xID0gbGliZ3N0cXRzaW5rX2xhLW1vY19xdGl0ZW0ubG8gXAorCWxpYmdzdHF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5sbwogYW1fX29iamVjdHNfMiA9ICQoYW1fX29iamVjdHNfMSkKLW5vZGlzdF9saWJxdHNpbmtfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMikKLWxpYnF0c2lua19sYV9PQkpFQ1RTID0gJChhbV9saWJxdHNpbmtfbGFfT0JKRUNUUykgXAotCSQobm9kaXN0X2xpYnF0c2lua19sYV9PQkpFQ1RTKQorbm9kaXN0X2xpYmdzdHF0c2lua19sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0c18yKQorbGliZ3N0cXRzaW5rX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdHF0c2lua19sYV9PQkpFQ1RTKSBcCisJJChub2Rpc3RfbGliZ3N0cXRzaW5rX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CiBhbV9fdl9sdF8xID0gCi1saWJxdHNpbmtfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggXAotCSQobGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rIFwKLQkkKENYWExEKSAkKGxpYnF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgXAotCSQobGlicXRzaW5rX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK2xpYmdzdHF0c2lua19sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCBcCisJJChsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAorCSQoQ1hYTEQpICQobGliZ3N0cXRzaW5rX2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSBcCisJJChsaWJnc3RxdHNpbmtfbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAogQU1fVl9QID0gJChhbV9fdl9QX0BBTV9WQCkKIGFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfUF8wID0gZmFsc2UKQEAgLTIzNiw4ICsyMzUsOCBAQAogYW1fX3ZfQ0NMRF8gPSAkKGFtX192X0NDTERfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9DQ0xEXzAgPSBAZWNobyAiICBDQ0xEICAgICIgJEA7CiBhbV9fdl9DQ0xEXzEgPSAKLVNPVVJDRVMgPSAkKGxpYnF0c2lua19sYV9TT1VSQ0VTKSAkKG5vZGlzdF9saWJxdHNpbmtfbGFfU09VUkNFUykKLURJU1RfU09VUkNFUyA9ICQobGlicXRzaW5rX2xhX1NPVVJDRVMpCitTT1VSQ0VTID0gJChsaWJnc3RxdHNpbmtfbGFfU09VUkNFUykgJChub2Rpc3RfbGliZ3N0cXRzaW5rX2xhX1NPVVJDRVMpCitESVNUX1NPVVJDRVMgPSAkKGxpYmdzdHF0c2lua19sYV9TT1VSQ0VTKQogYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCiAgIGNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAogICAgIG58bm98Tk8pIGZhbHNlOzsgXApAQCAtMzAwLDYgKzI5OSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzM3LDYgKzMzOCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzQ1LDcgKzM0OCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM2NCw4ICszNjYsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzgyLDE2ICszODUsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQ0Miw2ICs0NDgsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01NDMsNiArNTUxLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU1Niw4ICs1NjUsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NzMsNiArNTgwLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYzMCwxNiArNjM5LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjkxLDYgKzcwMiw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC03MDEsNiArNzEzLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzEwLDYgKzcyMyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03NDcsNyArNzYyLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03ODcsNyArODAxLDcgQEAKIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGlicXRzaW5rLmxhCitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RxdHNpbmsubGEKIG5vaW5zdF9IRUFERVJTID0gXAogCWdzdHFzZ3RleHR1cmUuaCBcCiAJZ3N0cXRzaW5rLmggXApAQCAtODAxLDMxICs4MTUsMzMgQEAKICNhbnl0aGluZyBnZW5lcmF0ZWQgYnkgdGhlIFF0IHRvb2xzLi4uCiBCVUlMVF9TT1VSQ0VTID0gJChtb2NfZ2VuZXJhdGVkKQogQ0xFQU5GSUxFUyA9ICQobW9jX2dlbmVyYXRlZCkKLW5vZGlzdF9saWJxdHNpbmtfbGFfU09VUkNFUyA9ICQoQlVJTFRfU09VUkNFUykKLWxpYnF0c2lua19sYV9TT1VSQ0VTID0gXAorbm9kaXN0X2xpYmdzdHF0c2lua19sYV9TT1VSQ0VTID0gJChCVUlMVF9TT1VSQ0VTKQorbGliZ3N0cXRzaW5rX2xhX1NPVVJDRVMgPSBcCiAJZ3N0cXNndGV4dHVyZS5jYyBcCiAJcXRpdGVtLmNjIFwKIAlnc3RxdHNpbmsuY2MgXAogCWdzdHF0c2luay5oIFwKKwlnc3RxdGdsLmggXAogCWdzdHBsdWdpbi5jYwogCi1saWJxdHNpbmtfbGFfQ1hYRkxBR1MgPSBcCitsaWJnc3RxdHNpbmtfbGFfQ1hYRkxBR1MgPSBcCiAJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKIAktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAJJChHU1RfQ1hYRkxBR1MpIFwKIAkkKEdTVF9CQVNFX0NGTEFHUykgXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKLQkkKFFUX0NGTEFHUykKKwkkKFFUX0NGTEFHUykgXAorCSQoR0xfQ0ZMQUdTKQogCi1saWJxdHNpbmtfbGFfTElCQUREID0gXAorbGliZ3N0cXRzaW5rX2xhX0xJQkFERCA9IFwKIAkkKEdTVF9CQVNFX0xJQlMpIFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAogCSQoUVRfTElCUykgXAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKIAktbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKQogCi1saWJxdHNpbmtfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQotbGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCitsaWJnc3RxdHNpbmtfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQorbGliZ3N0cXRzaW5rX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiBhbGw6ICQoQlVJTFRfU09VUkNFUykKIAkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbGwtYW0KIApAQCAtODk2LDggKzkxMiw4IEBACiAJICBybSAtZiAkJHtsb2NzfTsgXAogCX0KIAotbGlicXRzaW5rLmxhOiAkKGxpYnF0c2lua19sYV9PQkpFQ1RTKSAkKGxpYnF0c2lua19sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGlicXRzaW5rX2xhX0RFUEVOREVOQ0lFUykgCi0JJChBTV9WX0NYWExEKSQobGlicXRzaW5rX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJxdHNpbmtfbGFfT0JKRUNUUykgJChsaWJxdHNpbmtfbGFfTElCQUREKSAkKExJQlMpCitsaWJnc3RxdHNpbmsubGE6ICQobGliZ3N0cXRzaW5rX2xhX09CSkVDVFMpICQobGliZ3N0cXRzaW5rX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RxdHNpbmtfbGFfREVQRU5ERU5DSUVTKSAKKwkkKEFNX1ZfQ1hYTEQpJChsaWJnc3RxdHNpbmtfbGFfTElOSykgLXJwYXRoICQocGx1Z2luZGlyKSAkKGxpYmdzdHF0c2lua19sYV9PQkpFQ1RTKSAkKGxpYmdzdHF0c2lua19sYV9MSUJBREQpICQoTElCUykKIAogbW9zdGx5Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi4kKE9CSkVYVCkKQEAgLTkwNSwxMiArOTIxLDEyIEBACiBkaXN0Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi50YWIuYwogCi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGlicXRzaW5rX2xhLWdzdHBsdWdpbi5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYnF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGlicXRzaW5rX2xhLWdzdHF0c2luay5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYnF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYnF0c2lua19sYS1tb2NfcXRpdGVtLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGlicXRzaW5rX2xhLXF0aXRlbS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1nc3RwbHVnaW4uUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1nc3RxdHNpbmsuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtbW9jX2dzdHFzZ3RleHR1cmUuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtbW9jX3F0aXRlbS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1xdGl0ZW0uUGxvQGFtX19xdW90ZUAKIAogLmNjLm86CiBAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWClkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5vJCR8fCdgO1wKQEAgLTkzNiw0NyArOTUyLDQ3IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTFRDWFhDT01QSUxFKSAtYyAtbyAkQCAkPAogCi1saWJxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5sbzogZ3N0cXNndGV4dHVyZS5jYwotQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYnF0c2lua19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlicXRzaW5rX2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGlicXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYnF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLlRwbyAtYyAtbyBsaWJxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5sbyBgdGVzdCAtZiAnZ3N0cXNndGV4dHVyZS5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cXNndGV4dHVyZS5jYwotQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYnF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLlRwbyAkKERFUERJUikvbGlicXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3Rxc2d0ZXh0dXJlLmNjJyBvYmplY3Q9J2xpYnF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5sbzogZ3N0cXNndGV4dHVyZS5jYworQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdHF0c2lua19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cXRzaW5rX2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0cXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLlRwbyAtYyAtbyBsaWJnc3RxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5sbyBgdGVzdCAtZiAnZ3N0cXNndGV4dHVyZS5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cXNndGV4dHVyZS5jYworQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLlRwbyAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3Rxc2d0ZXh0dXJlLmNjJyBvYmplY3Q9J2xpYmdzdHF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGlicXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUubG8gYHRlc3QgLWYgJ2dzdHFzZ3RleHR1cmUuY2MnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHFzZ3RleHR1cmUuY2MKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0cXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUubG8gYHRlc3QgLWYgJ2dzdHFzZ3RleHR1cmUuY2MnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHFzZ3RleHR1cmUuY2MKIAotbGlicXRzaW5rX2xhLXF0aXRlbS5sbzogcXRpdGVtLmNjCi1AYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJxdHNpbmtfbGEtcXRpdGVtLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJxdHNpbmtfbGEtcXRpdGVtLlRwbyAtYyAtbyBsaWJxdHNpbmtfbGEtcXRpdGVtLmxvIGB0ZXN0IC1mICdxdGl0ZW0uY2MnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHF0aXRlbS5jYwotQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYnF0c2lua19sYS1xdGl0ZW0uVHBvICQoREVQRElSKS9saWJxdHNpbmtfbGEtcXRpdGVtLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0ncXRpdGVtLmNjJyBvYmplY3Q9J2xpYnF0c2lua19sYS1xdGl0ZW0ubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdHF0c2lua19sYS1xdGl0ZW0ubG86IHF0aXRlbS5jYworQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdHF0c2lua19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cXRzaW5rX2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0cXRzaW5rX2xhLXF0aXRlbS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLXF0aXRlbS5UcG8gLWMgLW8gbGliZ3N0cXRzaW5rX2xhLXF0aXRlbS5sbyBgdGVzdCAtZiAncXRpdGVtLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2BxdGl0ZW0uY2MKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtcXRpdGVtLlRwbyAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLXF0aXRlbS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J3F0aXRlbS5jYycgb2JqZWN0PSdsaWJnc3RxdHNpbmtfbGEtcXRpdGVtLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGlicXRzaW5rX2xhLXF0aXRlbS5sbyBgdGVzdCAtZiAncXRpdGVtLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2BxdGl0ZW0uY2MKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0cXRzaW5rX2xhLXF0aXRlbS5sbyBgdGVzdCAtZiAncXRpdGVtLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2BxdGl0ZW0uY2MKIAotbGlicXRzaW5rX2xhLWdzdHF0c2luay5sbzogZ3N0cXRzaW5rLmNjCi1AYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJxdHNpbmtfbGEtZ3N0cXRzaW5rLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJxdHNpbmtfbGEtZ3N0cXRzaW5rLlRwbyAtYyAtbyBsaWJxdHNpbmtfbGEtZ3N0cXRzaW5rLmxvIGB0ZXN0IC1mICdnc3RxdHNpbmsuY2MnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHF0c2luay5jYwotQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYnF0c2lua19sYS1nc3RxdHNpbmsuVHBvICQoREVQRElSKS9saWJxdHNpbmtfbGEtZ3N0cXRzaW5rLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0cXRzaW5rLmNjJyBvYmplY3Q9J2xpYnF0c2lua19sYS1nc3RxdHNpbmsubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdHF0c2lua19sYS1nc3RxdHNpbmsubG86IGdzdHF0c2luay5jYworQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdHF0c2lua19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cXRzaW5rX2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0cXRzaW5rX2xhLWdzdHF0c2luay5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLWdzdHF0c2luay5UcG8gLWMgLW8gbGliZ3N0cXRzaW5rX2xhLWdzdHF0c2luay5sbyBgdGVzdCAtZiAnZ3N0cXRzaW5rLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RxdHNpbmsuY2MKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtZ3N0cXRzaW5rLlRwbyAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLWdzdHF0c2luay5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdHF0c2luay5jYycgb2JqZWN0PSdsaWJnc3RxdHNpbmtfbGEtZ3N0cXRzaW5rLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGlicXRzaW5rX2xhLWdzdHF0c2luay5sbyBgdGVzdCAtZiAnZ3N0cXRzaW5rLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RxdHNpbmsuY2MKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0cXRzaW5rX2xhLWdzdHF0c2luay5sbyBgdGVzdCAtZiAnZ3N0cXRzaW5rLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RxdHNpbmsuY2MKIAotbGlicXRzaW5rX2xhLWdzdHBsdWdpbi5sbzogZ3N0cGx1Z2luLmNjCi1AYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJxdHNpbmtfbGEtZ3N0cGx1Z2luLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJxdHNpbmtfbGEtZ3N0cGx1Z2luLlRwbyAtYyAtbyBsaWJxdHNpbmtfbGEtZ3N0cGx1Z2luLmxvIGB0ZXN0IC1mICdnc3RwbHVnaW4uY2MnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHBsdWdpbi5jYwotQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYnF0c2lua19sYS1nc3RwbHVnaW4uVHBvICQoREVQRElSKS9saWJxdHNpbmtfbGEtZ3N0cGx1Z2luLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0cGx1Z2luLmNjJyBvYmplY3Q9J2xpYnF0c2lua19sYS1nc3RwbHVnaW4ubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdHF0c2lua19sYS1nc3RwbHVnaW4ubG86IGdzdHBsdWdpbi5jYworQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdHF0c2lua19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cXRzaW5rX2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0cXRzaW5rX2xhLWdzdHBsdWdpbi5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLWdzdHBsdWdpbi5UcG8gLWMgLW8gbGliZ3N0cXRzaW5rX2xhLWdzdHBsdWdpbi5sbyBgdGVzdCAtZiAnZ3N0cGx1Z2luLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbHVnaW4uY2MKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtZ3N0cGx1Z2luLlRwbyAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLWdzdHBsdWdpbi5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdHBsdWdpbi5jYycgb2JqZWN0PSdsaWJnc3RxdHNpbmtfbGEtZ3N0cGx1Z2luLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGlicXRzaW5rX2xhLWdzdHBsdWdpbi5sbyBgdGVzdCAtZiAnZ3N0cGx1Z2luLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbHVnaW4uY2MKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0cXRzaW5rX2xhLWdzdHBsdWdpbi5sbyBgdGVzdCAtZiAnZ3N0cGx1Z2luLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbHVnaW4uY2MKIAotbGlicXRzaW5rX2xhLW1vY19xdGl0ZW0ubG86IG1vY19xdGl0ZW0uY2MKLUBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYnF0c2lua19sYS1tb2NfcXRpdGVtLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJxdHNpbmtfbGEtbW9jX3F0aXRlbS5UcG8gLWMgLW8gbGlicXRzaW5rX2xhLW1vY19xdGl0ZW0ubG8gYHRlc3QgLWYgJ21vY19xdGl0ZW0uY2MnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYG1vY19xdGl0ZW0uY2MKLUBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJxdHNpbmtfbGEtbW9jX3F0aXRlbS5UcG8gJChERVBESVIpL2xpYnF0c2lua19sYS1tb2NfcXRpdGVtLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nbW9jX3F0aXRlbS5jYycgb2JqZWN0PSdsaWJxdHNpbmtfbGEtbW9jX3F0aXRlbS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0cXRzaW5rX2xhLW1vY19xdGl0ZW0ubG86IG1vY19xdGl0ZW0uY2MKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdHF0c2lua19sYS1tb2NfcXRpdGVtLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtbW9jX3F0aXRlbS5UcG8gLWMgLW8gbGliZ3N0cXRzaW5rX2xhLW1vY19xdGl0ZW0ubG8gYHRlc3QgLWYgJ21vY19xdGl0ZW0uY2MnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYG1vY19xdGl0ZW0uY2MKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtbW9jX3F0aXRlbS5UcG8gJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1tb2NfcXRpdGVtLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nbW9jX3F0aXRlbS5jYycgb2JqZWN0PSdsaWJnc3RxdHNpbmtfbGEtbW9jX3F0aXRlbS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYnF0c2lua19sYS1tb2NfcXRpdGVtLmxvIGB0ZXN0IC1mICdtb2NfcXRpdGVtLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Btb2NfcXRpdGVtLmNjCitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0cXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdHF0c2lua19sYS1tb2NfcXRpdGVtLmxvIGB0ZXN0IC1mICdtb2NfcXRpdGVtLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Btb2NfcXRpdGVtLmNjCiAKLWxpYnF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5sbzogbW9jX2dzdHFzZ3RleHR1cmUuY2MKLUBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYnF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGlicXRzaW5rX2xhLW1vY19nc3Rxc2d0ZXh0dXJlLlRwbyAtYyAtbyBsaWJxdHNpbmtfbGEtbW9jX2dzdHFzZ3RleHR1cmUubG8gYHRlc3QgLWYgJ21vY19nc3Rxc2d0ZXh0dXJlLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Btb2NfZ3N0cXNndGV4dHVyZS5jYwotQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYnF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5UcG8gJChERVBESVIpL2xpYnF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J21vY19nc3Rxc2d0ZXh0dXJlLmNjJyBvYmplY3Q9J2xpYnF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0cXRzaW5rX2xhLW1vY19nc3Rxc2d0ZXh0dXJlLmxvOiBtb2NfZ3N0cXNndGV4dHVyZS5jYworQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdHF0c2lua19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cXRzaW5rX2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0cXRzaW5rX2xhLW1vY19nc3Rxc2d0ZXh0dXJlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtbW9jX2dzdHFzZ3RleHR1cmUuVHBvIC1jIC1vIGxpYmdzdHF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5sbyBgdGVzdCAtZiAnbW9jX2dzdHFzZ3RleHR1cmUuY2MnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYG1vY19nc3Rxc2d0ZXh0dXJlLmNjCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLW1vY19nc3Rxc2d0ZXh0dXJlLlRwbyAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLW1vY19nc3Rxc2d0ZXh0dXJlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nbW9jX2dzdHFzZ3RleHR1cmUuY2MnIG9iamVjdD0nbGliZ3N0cXRzaW5rX2xhLW1vY19nc3Rxc2d0ZXh0dXJlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGlicXRzaW5rX2xhLW1vY19nc3Rxc2d0ZXh0dXJlLmxvIGB0ZXN0IC1mICdtb2NfZ3N0cXNndGV4dHVyZS5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgbW9jX2dzdHFzZ3RleHR1cmUuY2MKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0cXRzaW5rX2xhLW1vY19nc3Rxc2d0ZXh0dXJlLmxvIGB0ZXN0IC1mICdtb2NfZ3N0cXNndGV4dHVyZS5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgbW9jX2dzdHFzZ3RleHR1cmUuY2MKIAogbW9zdGx5Y2xlYW4tbGlidG9vbDoKIAktcm0gLWYgKi5sbwpAQCAtMTE5OSw3ICsxMjE1LDcgQEAKIAogCiAkKG1vY19nZW5lcmF0ZWQpOiBtb2NfJS5jYzogJS5oCi0JQE1PQ0AgLW8gJEAgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoTU9DX0NQUEZMQUdTKSAkPAorCUBNT0NAIC1vICRAICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKE1PQ19DUFBGTEFHUykgJDwKIAogdWktJS5oOiAlLnVpCiAJQFVJQ0AgLW8gJEAgJDwKZGlmZiAtLWdpdCBhL2V4dC9xdC9nc3RwbHVnaW4uY2MgYi9leHQvcXQvZ3N0cGx1Z2luLmNjCmluZGV4IDcwYjYzMTAuLjJmYTEwZjUgMTAwNjQ0Ci0tLSBhL2V4dC9xdC9nc3RwbHVnaW4uY2MKKysrIGIvZXh0L3F0L2dzdHBsdWdpbi5jYwpAQCAtMjMsNyArMjMsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJnc3RxdHNpbmsuaCIKLSNpbmNsdWRlIDxRUW1sQXBwbGljYXRpb25FbmdpbmU+CisjaW5jbHVkZSA8UXRRbWwvUVFtbEFwcGxpY2F0aW9uRW5naW5lPgogCiBzdGF0aWMgZ2Jvb2xlYW4KIHBsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCmRpZmYgLS1naXQgYS9leHQvcXQvZ3N0cXNndGV4dHVyZS5jYyBiL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjCmluZGV4IDA5ODZhODIuLjEzMjA4YzAgMTAwNjQ0Ci0tLSBhL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjCisrKyBiL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjCkBAIC0xMTEsNyArMTExLDcgQEAKICAgbWVtID0gZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeSAodGhpcy0+YnVmZmVyXywgMCk7CiAgIGdfYXNzZXJ0IChnc3RfaXNfZ2xfbWVtb3J5IChtZW0pKTsKIAotICBjb250ZXh0ID0gKChHc3RHTEJhc2VCdWZmZXIgKiltZW0pLT5jb250ZXh0OworICBjb250ZXh0ID0gKChHc3RHTEJhc2VNZW1vcnkgKiltZW0pLT5jb250ZXh0OwogCiAgIHN5bmNfbWV0YSA9IGdzdF9idWZmZXJfZ2V0X2dsX3N5bmNfbWV0YSAodGhpcy0+c3luY19idWZmZXJfKTsKICAgaWYgKCFzeW5jX21ldGEpCmRpZmYgLS1naXQgYS9leHQvcXQvZ3N0cXNndGV4dHVyZS5oIGIvZXh0L3F0L2dzdHFzZ3RleHR1cmUuaAppbmRleCBiZjhmMDNmLi5hNWE2ZjlmIDEwMDY0NAotLS0gYS9leHQvcXQvZ3N0cXNndGV4dHVyZS5oCisrKyBiL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmgKQEAgLTIyLDExICsyMiwxMyBAQAogI2RlZmluZSBfX0dTVF9RU0dfVEVYVFVSRV9IX18KIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxRU0dUZXh0dXJlPgotI2luY2x1ZGUgPFFPcGVuR0xGdW5jdGlvbnM+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CiAKKyNpbmNsdWRlICJnc3RxdGdsLmgiCisjaW5jbHVkZSA8UXRRdWljay9RU0dUZXh0dXJlPgorI2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xGdW5jdGlvbnM+CisKIGNsYXNzIEdzdFFTR1RleHR1cmUgOiBwdWJsaWMgUVNHVGV4dHVyZSwgcHJvdGVjdGVkIFFPcGVuR0xGdW5jdGlvbnMKIHsKICAgICBRX09CSkVDVApkaWZmIC0tZ2l0IGEvZXh0L3F0L2dzdHF0Z2wuaCBiL2V4dC9xdC9nc3RxdGdsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjczZWYyMgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9xdC9nc3RxdGdsLmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKiBxdCB1c2VzIHRoZSBzYW1lIHRyaWNrIGFzIHVzIHRvIHR5cGVkZWYgR0xzeW5jIG9uIGdsZXMyIGJ1dCB0byBhIGRpZmZlcmVudAorICogdHlwZSB3aGljaCBjb25mdXNlcyB0aGUgcHJlcHJvY2Vzc29yLiAgQXMgaXQncyBuZXZlciBhY3R1YWxseSB1c2VkIGJ5IHF0CisgKiBwdWJsaWMgaGVhZGVycywgZGVmaW5lIGl0IHRvIHNvbWV0aGluZyBlbHNlIHRvIGF2b2lkIHJlZGVmaW5pdGlvbgorICogd2FybmluZ3MvZXJyb3JzICovCisKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xjb25maWcuaD4KKyNpbmNsdWRlIDxRdENvcmUvcWdsb2JhbC5oPgorCisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikgJiYgR1NUX0dMX0hBVkVfV0lORE9XX0FORFJPSUQKKyNkZWZpbmUgR0xzeW5jIGdzdF9xdF9HTHN5bmMKKyNpbmNsdWRlIDxRT3BlbkdMQ29udGV4dD4KKyNpbmNsdWRlIDxRT3BlbkdMRnVuY3Rpb25zPgorI3VuZGVmIEdMc3luYworI2VuZGlmIC8qIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpICovCmRpZmYgLS1naXQgYS9leHQvcXQvZ3N0cXRzaW5rLmNjIGIvZXh0L3F0L2dzdHF0c2luay5jYwppbmRleCA5ZmYxM2IwLi5kZjQ0YTdkIDEwMDY0NAotLS0gYS9leHQvcXQvZ3N0cXRzaW5rLmNjCisrKyBiL2V4dC9xdC9nc3RxdHNpbmsuY2MKQEAgLTI4LDcgKzI4LDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSAiZ3N0cXRzaW5rLmgiCi0jaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFF0R3VpL1FHdWlBcHBsaWNhdGlvbj4KIAogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2RlYnVnX3F0X2dsX3NpbmsKIEdTVF9ERUJVR19DQVRFR09SWSAoR1NUX0NBVF9ERUZBVUxUKTsKQEAgLTU4LDggKzU4LDEyIEBACiBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAogICAgIEdTVF9QQURfU0lOSywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUwotICAgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCAiUkdCQSIpKSk7CisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgIiksICIKKyAgICAiZm9ybWF0ID0gKHN0cmluZykgUkdCQSwgIgorICAgICJ3aWR0aCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICJoZWlnaHQgPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFICIsICIKKyAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSAyRCIpKTsKIAogI2RlZmluZSBERUZBVUxUX0ZPUkNFX0FTUEVDVF9SQVRJTyAgVFJVRQogI2RlZmluZSBERUZBVUxUX1BBUl9OICAgICAgICAgICAgICAgMApAQCAtMjcxLDYgKzI3NSw4IEBACiAKICAgICAgIGlmIChyZXQpCiAgICAgICAgIHJldHVybiByZXQ7CisKKyAgICAgIC8qIGZhbGx0aHJvdWdoICovCiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICByZXMgPSBHU1RfQkFTRV9TSU5LX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5xdWVyeSAoYnNpbmssIHF1ZXJ5KTsKQEAgLTI5OSw3ICszMDUsNyBAQAogCiAgIHN3aXRjaCAodHJhbnNpdGlvbikgewogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9OVUxMX1RPX1JFQURZOgotICAgICAgYXBwID0gZHluYW1pY19jYXN0PFFHdWlBcHBsaWNhdGlvbiAqPiAoUUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UgKCkpOworICAgICAgYXBwID0gc3RhdGljX2Nhc3Q8UUd1aUFwcGxpY2F0aW9uICo+IChRQ29yZUFwcGxpY2F0aW9uOjppbnN0YW5jZSAoKSk7CiAgICAgICBpZiAoIWFwcCkgewogICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZWxlbWVudCwgUkVTT1VSQ0UsIE5PVF9GT1VORCwKICAgICAgICAgICAgICgiJXMiLCAiRmFpbGVkIHRvIGNvbm5lY3QgdG8gUXQiKSwKZGlmZiAtLWdpdCBhL2V4dC9xdC9xdGl0ZW0uY2MgYi9leHQvcXQvcXRpdGVtLmNjCmluZGV4IGFiNjRkOWUuLmUxZjkxZTcgMTAwNjQ0Ci0tLSBhL2V4dC9xdC9xdGl0ZW0uY2MKKysrIGIvZXh0L3F0L3F0aXRlbS5jYwpAQCAtMjUsMTIgKzI1LDE0IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgotI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KLSNpbmNsdWRlIDxRUXVpY2tXaW5kb3c+Ci0jaW5jbHVkZSA8UVNHU2ltcGxlVGV4dHVyZU5vZGU+CiAjaW5jbHVkZSAicXRpdGVtLmgiCiAjaW5jbHVkZSAiZ3N0cXNndGV4dHVyZS5oIgogCisjaW5jbHVkZSA8UXRDb3JlL1FSdW5uYWJsZT4KKyNpbmNsdWRlIDxRdEd1aS9RR3VpQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UXRRdWljay9RUXVpY2tXaW5kb3c+CisjaW5jbHVkZSA8UXRRdWljay9RU0dTaW1wbGVUZXh0dXJlTm9kZT4KKwogI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19YMTEgJiYgR1NUX0dMX0hBVkVfUExBVEZPUk1fR0xYICYmIGRlZmluZWQgKEhBVkVfUVRfWDExKQogI2luY2x1ZGUgPFFYMTFJbmZvPgogI2luY2x1ZGUgPGdzdC9nbC94MTEvZ3N0Z2xkaXNwbGF5X3gxMS5oPgpAQCAtNDEsNiArNDMsMTUgQEAKICNpbmNsdWRlIDxnc3QvZ2wvd2F5bGFuZC9nc3RnbGRpc3BsYXlfd2F5bGFuZC5oPgogI2VuZGlmCiAKKyNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfQU5EUk9JRCAmJiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wgJiYgZGVmaW5lZCAoSEFWRV9RVF9BTkRST0lEKQorI2luY2x1ZGUgPGdzdC9nbC9lZ2wvZ3N0Z2xkaXNwbGF5X2VnbC5oPgorI2luY2x1ZGUgPGdzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5oPgorI2VuZGlmCisKKyNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfQ09DT0EgJiYgR1NUX0dMX0hBVkVfUExBVEZPUk1fQ09DT0EgJiYgZGVmaW5lZCAoSEFWRV9RVF9NQUMpCisjaW5jbHVkZSA8Z3N0L2dsL2NvYW9hL2dzdGdsZGlzcGxheV9jb2NvYS5oPgorI2VuZGlmCisKIC8qKgogICogU0VDVElPTjpndGtnc3RnbHdpZGdldAogICogQHNob3J0X2Rlc2NyaXB0aW9uOiBhICNHdGtHTEFyZWEgdGhhdCByZW5kZXJzIEdTdHJlYW1lciB2aWRlbyAjR3N0QnVmZmVycwpAQCAtODksOSArMTAwLDI5IEBACiAgIEdzdEdMQ29udGV4dCAqY29udGV4dDsKIH07CiAKK2NsYXNzIEluaXRpYWxpemVTY2VuZUdyYXBoIDogcHVibGljIFFSdW5uYWJsZQoreworcHVibGljOgorICBJbml0aWFsaXplU2NlbmVHcmFwaChRdEdMVmlkZW9JdGVtICppdGVtKTsKKyAgdm9pZCBydW4oKTsKKworcHJpdmF0ZToKKyAgUXRHTFZpZGVvSXRlbSAqaXRlbV87Cit9OworCitJbml0aWFsaXplU2NlbmVHcmFwaDo6SW5pdGlhbGl6ZVNjZW5lR3JhcGgoUXRHTFZpZGVvSXRlbSAqaXRlbSkgOgorICBpdGVtXyhpdGVtKQoreworfQorCit2b2lkIEluaXRpYWxpemVTY2VuZUdyYXBoOjpydW4oKQoreworICBpdGVtXy0+b25TY2VuZUdyYXBoSW5pdGlhbGl6ZWQoKTsKK30KKwogUXRHTFZpZGVvSXRlbTo6UXRHTFZpZGVvSXRlbSgpCiB7Ci0gIFFHdWlBcHBsaWNhdGlvbiAqYXBwID0gZHluYW1pY19jYXN0PFFHdWlBcHBsaWNhdGlvbiAqPiAoUUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UgKCkpOworICBRR3VpQXBwbGljYXRpb24gKmFwcCA9IHN0YXRpY19jYXN0PFFHdWlBcHBsaWNhdGlvbiAqPiAoUUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UgKCkpOwogICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2RlYnVnOwogCiAgIGdfYXNzZXJ0IChhcHAgIT0gTlVMTCk7CkBAIC0xMDAsNyArMTMxLDcgQEAKICAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9ERUZBVUxULCAicXRnbHdpZGdldCIsIDAsICJRdCBHTCBXaWRnZXQiKTsKICAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9kZWJ1ZywgMSk7CiAgIH0KLQorICB0aGlzLT5tX29wZW5HbENvbnRleHRJbml0aWFsaXplZCA9IGZhbHNlOwogICB0aGlzLT5zZXRGbGFnIChRUXVpY2tJdGVtOjpJdGVtSGFzQ29udGVudHMsIHRydWUpOwogCiAgIHRoaXMtPnByaXYgPSBnX25ldzAgKFF0R0xWaWRlb0l0ZW1Qcml2YXRlLCAxKTsKQEAgLTExNiw2ICsxNDcsMTggQEAKICAgICB0aGlzLT5wcml2LT5kaXNwbGF5ID0gKEdzdEdMRGlzcGxheSAqKQogICAgICAgICBnc3RfZ2xfZGlzcGxheV94MTFfbmV3X3dpdGhfZGlzcGxheSAoUVgxMUluZm86OmRpc3BsYXkgKCkpOwogI2VuZGlmCisjaWYgR1NUX0dMX0hBVkVfV0lORE9XX0FORFJPSUQgJiYgR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMICYmIGRlZmluZWQgKEhBVkVfUVRfQU5EUk9JRCkKKyAgaWYgKFFTdHJpbmc6OmZyb21VdGY4ICgiYW5kcm9pZCIpID09IGFwcC0+cGxhdGZvcm1OYW1lKCkpCisgICAgdGhpcy0+cHJpdi0+ZGlzcGxheSA9IChHc3RHTERpc3BsYXkgKikgZ3N0X2dsX2Rpc3BsYXlfZWdsX25ldyAoKTsKKyNlbmRpZgorI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19DT0NPQSAmJiBHU1RfR0xfSEFWRV9QTEFURk9STV9DT0NPQSAmJiBkZWZpbmVkIChIQVZFX1FUX01BQykKKyAgaWYgKFFTdHJpbmc6OmZyb21VdGY4ICgiY29jb2EiKSA9PSBhcHAtPnBsYXRmb3JtTmFtZSgpKQorICAgIHRoaXMtPnByaXYtPmRpc3BsYXkgPSAoR3N0R0xEaXNwbGF5ICopIGdzdF9nbF9kaXNwbGF5X2NvY29hX25ldyAoKTsKKyNlbmRpZgorI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19FQUdMICYmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0VBR0wgJiYgZGVmaW5lZCAoSEFWRV9RVF9JT1MpCisgIGlmIChRU3RyaW5nOjpmcm9tVXRmOCAoImlvcyIpID09IGFwcC0+cGxhdGZvcm1OYW1lKCkpCisgICAgdGhpcy0+cHJpdi0+ZGlzcGxheSA9IGdzdF9nbF9kaXNwbGF5X25ldyAoKTsKKyNlbmRpZgogCiAgIGlmICghdGhpcy0+cHJpdi0+ZGlzcGxheSkKICAgICB0aGlzLT5wcml2LT5kaXNwbGF5ID0gZ3N0X2dsX2Rpc3BsYXlfbmV3ICgpOwpAQCAtMTI5LDcgKzE3MiwxMCBAQAogUXRHTFZpZGVvSXRlbTo6flF0R0xWaWRlb0l0ZW0oKQogewogICBnX211dGV4X2NsZWFyICgmdGhpcy0+cHJpdi0+bG9jayk7Ci0KKyAgaWYgKHRoaXMtPnByaXYtPmNvbnRleHQpCisgICAgZ3N0X29iamVjdF91bnJlZih0aGlzLT5wcml2LT5jb250ZXh0KTsKKyAgaWYgKHRoaXMtPnByaXYtPm90aGVyX2NvbnRleHQpCisgICAgZ3N0X29iamVjdF91bnJlZih0aGlzLT5wcml2LT5vdGhlcl9jb250ZXh0KTsKICAgZ19mcmVlICh0aGlzLT5wcml2KTsKICAgdGhpcy0+cHJpdiA9IE5VTEw7CiB9CkBAIC0xNjYsNiArMjEyLDEwIEBACiBRdEdMVmlkZW9JdGVtOjp1cGRhdGVQYWludE5vZGUoUVNHTm9kZSAqIG9sZE5vZGUsCiAgICAgVXBkYXRlUGFpbnROb2RlRGF0YSAqIHVwZGF0ZVBhaW50Tm9kZURhdGEpCiB7CisgIGlmICghbV9vcGVuR2xDb250ZXh0SW5pdGlhbGl6ZWQpIHsKKyAgICByZXR1cm4gb2xkTm9kZTsKKyAgfQorCiAgIFFTR1NpbXBsZVRleHR1cmVOb2RlICp0ZXhOb2RlID0gc3RhdGljX2Nhc3Q8UVNHU2ltcGxlVGV4dHVyZU5vZGUgKj4gKG9sZE5vZGUpOwogICBHc3RWaWRlb1JlY3RhbmdsZSBzcmMsIGRzdCwgcmVzdWx0OwogICBHc3RRU0dUZXh0dXJlICp0ZXg7CkBAIC0yODMsNiArMzMzLDM5IEBACiAgICAgICAgICAgcGxhdGZvcm0sIGdsX2FwaSk7CiAgIH0KICNlbmRpZgorI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19BTkRST0lEICYmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0VHTCAmJiBkZWZpbmVkIChIQVZFX1FUX0FORFJPSUQpCisgIGlmIChHU1RfSVNfR0xfRElTUExBWV9FR0wgKHRoaXMtPnByaXYtPmRpc3BsYXkpKSB7CisgICAgcGxhdGZvcm0gPSBHU1RfR0xfUExBVEZPUk1fRUdMOworICAgIGdsX2FwaSA9IGdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50X2dsX2FwaSAocGxhdGZvcm0sIE5VTEwsIE5VTEwpOworICAgIGdsX2hhbmRsZSA9IGdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50X2dsX2NvbnRleHQgKHBsYXRmb3JtKTsKKyAgICBpZiAoZ2xfaGFuZGxlKQorICAgICAgdGhpcy0+cHJpdi0+b3RoZXJfY29udGV4dCA9CisgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfbmV3X3dyYXBwZWQgKHRoaXMtPnByaXYtPmRpc3BsYXksIGdsX2hhbmRsZSwKKyAgICAgICAgICBwbGF0Zm9ybSwgZ2xfYXBpKTsKKyAgfQorI2VuZGlmCisjaWYgR1NUX0dMX0hBVkVfV0lORE9XX0NPQ09BICYmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0NPQ09BICYmIGRlZmluZWQgKEhBVkVfUVRfTUFDKQorICBpZiAodGhpcy0+cHJpdi0+ZGlzcGxheSkgeworICAgIHBsYXRmb3JtID0gR1NUX0dMX1BMQVRGT1JNX0NHTDsKKyAgICBnbF9hcGkgPSBnc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudF9nbF9hcGkgKHBsYXRmb3JtLCBOVUxMLCBOVUxMKTsKKyAgICBnbF9oYW5kbGUgPSBnc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudF9nbF9jb250ZXh0IChwbGF0Zm9ybSk7CisgICAgaWYgKGdsX2hhbmRsZSkKKyAgICAgIHRoaXMtPnByaXYtPm90aGVyX2NvbnRleHQgPQorICAgICAgICAgIGdzdF9nbF9jb250ZXh0X25ld193cmFwcGVkICh0aGlzLT5wcml2LT5kaXNwbGF5LCBnbF9oYW5kbGUsCisgICAgICAgICAgcGxhdGZvcm0sIGdsX2FwaSk7CisgIH0KKyNlbmRpZgorI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19FQUdMICYmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0VBR0wgJiYgZGVmaW5lZCAoSEFWRV9RVF9JT1MpCisgIGlmICh0aGlzLT5wcml2LT5kaXNwbGF5KSB7CisgICAgcGxhdGZvcm0gPSBHU1RfR0xfUExBVEZPUk1fRUFHTDsKKyAgICBnbF9hcGkgPSBnc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudF9nbF9hcGkgKHBsYXRmb3JtLCBOVUxMLCBOVUxMKTsKKyAgICBnbF9oYW5kbGUgPSBnc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudF9nbF9jb250ZXh0IChwbGF0Zm9ybSk7CisgICAgaWYgKGdsX2hhbmRsZSkKKyAgICAgIHRoaXMtPnByaXYtPm90aGVyX2NvbnRleHQgPQorICAgICAgICAgIGdzdF9nbF9jb250ZXh0X25ld193cmFwcGVkICh0aGlzLT5wcml2LT5kaXNwbGF5LCBnbF9oYW5kbGUsCisgICAgICAgICAgcGxhdGZvcm0sIGdsX2FwaSk7CisgIH0KKyNlbmRpZgogCiAgICh2b2lkKSBwbGF0Zm9ybTsKICAgKHZvaWQpIGdsX2FwaTsKQEAgLTI5OSw2ICszODIsNyBAQAogICAgIH0gZWxzZSB7CiAgICAgICBnc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpICh0aGlzLT5wcml2LT5kaXNwbGF5LCBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpICh0aGlzLT5wcml2LT5vdGhlcl9jb250ZXh0KSk7CiAgICAgICBnc3RfZ2xfY29udGV4dF9hY3RpdmF0ZSAodGhpcy0+cHJpdi0+b3RoZXJfY29udGV4dCwgRkFMU0UpOworICAgICAgbV9vcGVuR2xDb250ZXh0SW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgIH0KICAgfQogCkBAIC0zMzMsNyArNDE3LDcgQEAKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KIAotICBpZiAoIUdTVF9HTF9JU19DT05URVhUICh3aWRnZXQtPnByaXYtPm90aGVyX2NvbnRleHQpKSB7CisgIGlmICghR1NUX0lTX0dMX0NPTlRFWFQgKHdpZGdldC0+cHJpdi0+b3RoZXJfY29udGV4dCkpIHsKICAgICBHU1RfRVJST1IgKCIlcCBmYWlsZWQgdG8gcmV0cmlldmUgd3JhcHBlZCBjb250ZXh0ICUiIEdTVF9QVFJfRk9STUFULCB3aWRnZXQsCiAgICAgICAgIHdpZGdldC0+cHJpdi0+b3RoZXJfY29udGV4dCk7CiAgICAgZ19tdXRleF91bmxvY2sgKCZ3aWRnZXQtPnByaXYtPmxvY2spOwpAQCAtMzU5LDkgKzQ0Myw5IEBACiB7CiAgIGlmICh3aW4pIHsKICAgICBpZiAod2luLT5pc1NjZW5lR3JhcGhJbml0aWFsaXplZCgpKQotICAgICAgb25TY2VuZUdyYXBoSW5pdGlhbGl6ZWQoKTsKKyAgICAgIHdpbi0+c2NoZWR1bGVSZW5kZXJKb2IobmV3IEluaXRpYWxpemVTY2VuZUdyYXBoKHRoaXMpLCBRUXVpY2tXaW5kb3c6OkJlZm9yZVN5bmNocm9uaXppbmdTdGFnZSk7CiAgICAgZWxzZQotCSAgY29ubmVjdCh3aW4sIFNJR05BTChzY2VuZUdyYXBoSW5pdGlhbGl6ZWQoKSksIHRoaXMsIFNMT1Qob25TY2VuZUdyYXBoSW5pdGlhbGl6ZWQoKSksIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsKKyAgICAgIGNvbm5lY3Qod2luLCBTSUdOQUwoc2NlbmVHcmFwaEluaXRpYWxpemVkKCkpLCB0aGlzLCBTTE9UKG9uU2NlbmVHcmFwaEluaXRpYWxpemVkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7CiAKICAgICBjb25uZWN0KHdpbiwgU0lHTkFMKHNjZW5lR3JhcGhJbnZhbGlkYXRlZCgpKSwgdGhpcywgU0xPVChvblNjZW5lR3JhcGhJbnZhbGlkYXRlZCgpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOwogICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZXh0L3F0L3F0aXRlbS5oIGIvZXh0L3F0L3F0aXRlbS5oCmluZGV4IGFmZDI4NjkuLmFlMjNlZmYgMTAwNjQ0Ci0tLSBhL2V4dC9xdC9xdGl0ZW0uaAorKysgYi9leHQvcXQvcXRpdGVtLmgKQEAgLTIzLDEyICsyMywxNiBAQAogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgotI2luY2x1ZGUgPFFRdWlja0l0ZW0+Ci0jaW5jbHVkZSA8UU9wZW5HTENvbnRleHQ+Ci0jaW5jbHVkZSA8UU9wZW5HTEZ1bmN0aW9ucz4KKworI2luY2x1ZGUgImdzdHF0Z2wuaCIKKyNpbmNsdWRlIDxRdFF1aWNrL1FRdWlja0l0ZW0+CisjaW5jbHVkZSA8UXRHdWkvUU9wZW5HTENvbnRleHQ+CisjaW5jbHVkZSA8UXRHdWkvUU9wZW5HTEZ1bmN0aW9ucz4KIAogdHlwZWRlZiBzdHJ1Y3QgX1F0R0xWaWRlb0l0ZW1Qcml2YXRlIFF0R0xWaWRlb0l0ZW1Qcml2YXRlOwogCitjbGFzcyBJbml0aWFsaXplU2NlbmVHcmFwaDsKKwogY2xhc3MgUXRHTFZpZGVvSXRlbSA6IHB1YmxpYyBRUXVpY2tJdGVtLCBwcm90ZWN0ZWQgUU9wZW5HTEZ1bmN0aW9ucwogewogICAgIFFfT0JKRUNUCkBAIC01MywxMCArNTcsMTIgQEAKICAgICBRU0dOb2RlICogdXBkYXRlUGFpbnROb2RlIChRU0dOb2RlICogb2xkTm9kZSwgVXBkYXRlUGFpbnROb2RlRGF0YSAqIHVwZGF0ZVBhaW50Tm9kZURhdGEpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBJbml0aWFsaXplU2NlbmVHcmFwaDsKICAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBRU2l6ZSAmc2l6ZSk7CiAgICAgdm9pZCBzaGFyZUNvbnRleHQoKTsKIAogICAgIFFTaXplIG1fdmlld3BvcnRTaXplOworICAgIGJvb2wgbV9vcGVuR2xDb250ZXh0SW5pdGlhbGl6ZWQ7CiB9OwogCiBleHRlcm4gIkMiCmRpZmYgLS1naXQgYS9leHQvcmVzaW5kdmQvTWFrZWZpbGUuaW4gYi9leHQvcmVzaW5kdmQvTWFrZWZpbGUuaW4KaW5kZXggMTJkYzA2Mi4uMDljMDIzYiAxMDA2NDQKLS0tIGEvZXh0L3Jlc2luZHZkL01ha2VmaWxlLmluCisrKyBiL2V4dC9yZXNpbmR2ZC9NYWtlZmlsZS5pbgpAQCAtMTE4LDE2ICsxMTgsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yODQsNiArMjgzLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMjEsNiArMzIyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjksNyArMzMyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ4LDggKzM1MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjYsMTYgKzM2OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MDEsNiArNDA1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI2LDYgKzQzMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNyw2ICs1MzUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTQwLDggKzU0OSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1Nyw2ICs1NjQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjE0LDE2ICs2MjMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzUsNiArNjg2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4NSw2ICs2OTcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTQsNiArNzA3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTczMSw3ICs3NDYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9yZXNpbmR2ZC9yZXNpbi1wbGF5IGIvZXh0L3Jlc2luZHZkL3Jlc2luLXBsYXkKaW5kZXggNTA2NmU1Yi4uNDZiMzZjZiAxMDA3NTUKLS0tIGEvZXh0L3Jlc2luZHZkL3Jlc2luLXBsYXkKKysrIGIvZXh0L3Jlc2luZHZkL3Jlc2luLXBsYXkKQEAgLTYsNyArNiw3IEBACiAgIERFVklDRV9PUFQ9IiIKIGZpCiAKLWdzdC1sYXVuY2ggcnNuZHZkYmluIG5hbWU9ZHZkICIkREVWSUNFX09QVCIgXAorZ3N0LWxhdW5jaC0xLjAgcnNuZHZkYmluIG5hbWU9ZHZkICIkREVWSUNFX09QVCIgXAogICAgZHZkc3B1IG5hbWU9c3B1ICEgdmlkZW9jb252ZXJ0ICEgdmlkZW9zY2FsZSAhIHhpbWFnZXNpbmsgZm9yY2UtYXNwZWN0LXJhdGlvPXRydWUgXAogICAgZHZkLiAhIHF1ZXVlIG1heC1zaXplLWJ1ZmZlcnM9MyBtYXgtc2l6ZS1ieXRlcz0wICEgc3B1LnZpZGVvIFwKICAgIGR2ZC4gISBzcHUuc3VicGljdHVyZSBcCmRpZmYgLS1naXQgYS9leHQvcmVzaW5kdmQvcmVzaW4tcGxheTIgYi9leHQvcmVzaW5kdmQvcmVzaW4tcGxheTIKaW5kZXggZTM1YTczMi4uZWQ4OWE1MCAxMDA3NTUKLS0tIGEvZXh0L3Jlc2luZHZkL3Jlc2luLXBsYXkyCisrKyBiL2V4dC9yZXNpbmR2ZC9yZXNpbi1wbGF5MgpAQCAtNiw3ICs2LDcgQEAKICAgREVWSUNFX09QVD0iIgogZmkKIAotZ3N0LWxhdW5jaCByc25kdmRiaW4gbmFtZT1kdmQgIiRERVZJQ0VfT1BUIiBcCitnc3QtbGF1bmNoLTEuMCByc25kdmRiaW4gbmFtZT1kdmQgIiRERVZJQ0VfT1BUIiBcCiAgICBkdmRzcHUgbmFtZT1zcHUgISBkZWludGVybGFjZSAhIHh2aW1hZ2VzaW5rIGZvcmNlLWFzcGVjdC1yYXRpbz1mYWxzZSBcCiAgICBkdmQuICEgcXVldWUgbWF4LXNpemUtYnVmZmVycz0zIG1heC1zaXplLWJ5dGVzPTAgISBzcHUudmlkZW8gXAogICAgZHZkLiAhIHNwdS5zdWJwaWN0dXJlIFwKZGlmZiAtLWdpdCBhL2V4dC9yZXNpbmR2ZC9yZXNpbmR2ZGJpbi5jIGIvZXh0L3Jlc2luZHZkL3Jlc2luZHZkYmluLmMKaW5kZXggZjljYzViZC4uMTA3ZjlkNiAxMDA2NDQKLS0tIGEvZXh0L3Jlc2luZHZkL3Jlc2luZHZkYmluLmMKKysrIGIvZXh0L3Jlc2luZHZkL3Jlc2luZHZkYmluLmMKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJyZXNpbmR2ZGJpbi5oIgogI2luY2x1ZGUgInJlc2luZHZkc3JjLmgiCiAjaW5jbHVkZSAicnNuaW5wdXRzZWxlY3Rvci5oIgotLy8gI2luY2x1ZGUgInJzbmF1ZGlvbXVuZ2UuaCIKICNpbmNsdWRlICJyc25kZWMuaCIKICNpbmNsdWRlICJyc25wYXJzZXR0ZXIuaCIKIApAQCAtNDMsMTEgKzQyLDExIEBACiBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOIChyZXNpbmR2ZF9kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCByZXNpbmR2ZF9kZWJ1ZwogCi0jZGVmaW5lIERWREJJTl9MT0NLKGQpIGdfbXV0ZXhfbG9jaygoZCktPmR2ZF9sb2NrKQotI2RlZmluZSBEVkRCSU5fVU5MT0NLKGQpIGdfbXV0ZXhfdW5sb2NrKChkKS0+ZHZkX2xvY2spCisjZGVmaW5lIERWREJJTl9MT0NLKGQpIGdfbXV0ZXhfbG9jaygmKGQpLT5kdmRfbG9jaykKKyNkZWZpbmUgRFZEQklOX1VOTE9DSyhkKSBnX211dGV4X3VubG9jaygmKGQpLT5kdmRfbG9jaykKIAotI2RlZmluZSBEVkRCSU5fUFJFUk9MTF9MT0NLKGQpIGdfbXV0ZXhfbG9jaygoZCktPnByZXJvbGxfbG9jaykKLSNkZWZpbmUgRFZEQklOX1BSRVJPTExfVU5MT0NLKGQpIGdfbXV0ZXhfdW5sb2NrKChkKS0+cHJlcm9sbF9sb2NrKQorI2RlZmluZSBEVkRCSU5fUFJFUk9MTF9MT0NLKGQpIGdfbXV0ZXhfbG9jaygmKGQpLT5wcmVyb2xsX2xvY2spCisjZGVmaW5lIERWREJJTl9QUkVST0xMX1VOTE9DSyhkKSBnX211dGV4X3VubG9jaygmKGQpLT5wcmVyb2xsX2xvY2spCiAKICNkZWZpbmUgREVGQVVMVF9ERVZJQ0UgIi9kZXYvZHZkIgogZW51bQpAQCAtMTM1LDggKzEzNCw4IEBACiBzdGF0aWMgdm9pZAogcnNuX2R2ZGJpbl9pbml0IChSc25EdmRCaW4gKiBkdmRiaW4pCiB7Ci0gIGR2ZGJpbi0+ZHZkX2xvY2sgPSBnX211dGV4X25ldyAoKTsKLSAgZHZkYmluLT5wcmVyb2xsX2xvY2sgPSBnX211dGV4X25ldyAoKTsKKyAgZ19tdXRleF9pbml0ICgmZHZkYmluLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfaW5pdCAoJmR2ZGJpbi0+cHJlcm9sbF9sb2NrKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE0NCw4ICsxNDMsOCBAQAogewogICBSc25EdmRCaW4gKmR2ZGJpbiA9IFJFU0lORFZEQklOIChvYmplY3QpOwogCi0gIGdfbXV0ZXhfZnJlZSAoZHZkYmluLT5kdmRfbG9jayk7Ci0gIGdfbXV0ZXhfZnJlZSAoZHZkYmluLT5wcmVyb2xsX2xvY2spOworICBnX211dGV4X2NsZWFyICgmZHZkYmluLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfY2xlYXIgKCZkdmRiaW4tPnByZXJvbGxfbG9jayk7CiAgIGdfZnJlZSAoZHZkYmluLT5sYXN0X3VyaSk7CiAgIGdfZnJlZSAoZHZkYmluLT5kZXZpY2UpOwogCmRpZmYgLS1naXQgYS9leHQvcmVzaW5kdmQvcmVzaW5kdmRiaW4uaCBiL2V4dC9yZXNpbmR2ZC9yZXNpbmR2ZGJpbi5oCmluZGV4IGYyNDM0YzEuLjJlYWI1MTYgMTAwNjQ0Ci0tLSBhL2V4dC9yZXNpbmR2ZC9yZXNpbmR2ZGJpbi5oCisrKyBiL2V4dC9yZXNpbmR2ZC9yZXNpbmR2ZGJpbi5oCkBAIC01OCw4ICs1OCw4IEBACiAgIEdzdEJpbiBlbGVtZW50OwogCiAgIC8qIFByb3RlY3RzIHBpZWNlcyBsaXN0IGFuZCBwcm9wZXJ0aWVzICovCi0gIEdNdXRleCAqZHZkX2xvY2s7Ci0gIEdNdXRleCAqcHJlcm9sbF9sb2NrOworICBHTXV0ZXggZHZkX2xvY2s7CisgIEdNdXRleCBwcmVyb2xsX2xvY2s7CiAKICAgZ2NoYXIgKmRldmljZTsKICAgZ2NoYXIgKmxhc3RfdXJpOwpkaWZmIC0tZ2l0IGEvZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmMgYi9leHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuYwppbmRleCA5NWQzY2ExLi41MDUzMDJiIDEwMDY0NAotLS0gYS9leHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuYworKysgYi9leHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuYwpAQCAtMjQ5LDEwICsyNDksMTAgQEAKICAgICByc25kdmRzcmMtPmZhc3RzdGFydCA9IERFRkFVTFRfRkFTVFNUQVJUOwogCiAgIHJzbmR2ZHNyYy0+ZGV2aWNlID0gZ19zdHJkdXAgKERFRkFVTFRfREVWSUNFKTsKLSAgcnNuZHZkc3JjLT5kdmRfbG9jayA9IGdfbXV0ZXhfbmV3ICgpOwotICByc25kdmRzcmMtPmJyYW5jaF9sb2NrID0gZ19tdXRleF9uZXcgKCk7CisgIGdfbXV0ZXhfaW5pdCAoJnJzbmR2ZHNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X2luaXQgKCZyc25kdmRzcmMtPmJyYW5jaF9sb2NrKTsKICAgcnNuZHZkc3JjLT5icmFuY2hpbmcgPSBGQUxTRTsKLSAgcnNuZHZkc3JjLT5zdGlsbF9jb25kID0gZ19jb25kX25ldyAoKTsKKyAgZ19jb25kX2luaXQgKCZyc25kdmRzcmMtPnN0aWxsX2NvbmQpOwogCiAgIGdzdF9iYXNlX3NyY19zZXRfZm9ybWF0IChHU1RfQkFTRV9TUkMgKHJzbmR2ZHNyYyksIEdTVF9GT1JNQVRfVElNRSk7CiB9CkBAIC0yNjIsOSArMjYyLDkgQEAKIHsKICAgcmVzaW5EdmRTcmMgKnNyYyA9IFJFU0lORFZEU1JDIChvYmplY3QpOwogCi0gIGdfbXV0ZXhfZnJlZSAoc3JjLT5kdmRfbG9jayk7Ci0gIGdfbXV0ZXhfZnJlZSAoc3JjLT5icmFuY2hfbG9jayk7Ci0gIGdfY29uZF9mcmVlIChzcmMtPnN0aWxsX2NvbmQpOworICBnX211dGV4X2NsZWFyICgmc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfY2xlYXIgKCZzcmMtPmJyYW5jaF9sb2NrKTsKKyAgZ19jb25kX2NsZWFyICgmc3JjLT5zdGlsbF9jb25kKTsKICAgZ19mcmVlIChzcmMtPmRldmljZSk7CiAKICAgZ3N0X2J1ZmZlcl9yZXBsYWNlICgmc3JjLT5hbGxvY19idWYsIE5VTEwpOwpAQCAtMjc4LDEwICsyNzgsMTAgQEAKIHsKICAgcmVzaW5EdmRTcmMgKnNyYyA9IFJFU0lORFZEU1JDIChic3JjKTsKIAotICBnX211dGV4X2xvY2sgKHNyYy0+YnJhbmNoX2xvY2spOworICBnX211dGV4X2xvY2sgKCZzcmMtPmJyYW5jaF9sb2NrKTsKICAgc3JjLT5icmFuY2hpbmcgPSBUUlVFOwotICBnX2NvbmRfYnJvYWRjYXN0IChzcmMtPnN0aWxsX2NvbmQpOwotICBnX211dGV4X3VubG9jayAoc3JjLT5icmFuY2hfbG9jayk7CisgIGdfY29uZF9icm9hZGNhc3QgKCZzcmMtPnN0aWxsX2NvbmQpOworICBnX211dGV4X3VubG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOwogCiAgIHJldHVybiBUUlVFOwogfQpAQCAtMjkxLDkgKzI5MSw5IEBACiB7CiAgIHJlc2luRHZkU3JjICpzcmMgPSBSRVNJTkRWRFNSQyAoYnNyYyk7CiAKLSAgZ19tdXRleF9sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKKyAgZ19tdXRleF9sb2NrICgmc3JjLT5icmFuY2hfbG9jayk7CiAgIHNyYy0+YnJhbmNoaW5nID0gRkFMU0U7Ci0gIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmJyYW5jaF9sb2NrKTsKIAogICByZXR1cm4gVFJVRTsKIH0KQEAgLTM1Niw3ICszNTYsNyBAQAogICBjb25zdCBjaGFyICpkaXNjX25hbWU7CiAgIGdjaGFyIGxhbmdbOF07CiAKLSAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgIGlmICghcmVhZF92dHNfaW5mbyAoc3JjKSkgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIFJFU09VUkNFLCBPUEVOX1JFQUQsCiAgICAgICAgIChfKCJDb3VsZCBub3QgcmVhZCB0aXRsZSBpbmZvcm1hdGlvbiBmb3IgRFZELiIpKSwgR1NUX0VSUk9SX1NZU1RFTSk7CkBAIC00NDAsNyArNDQwLDcgQEAKICAgbWVtc2V0IChzcmMtPmN1cl9jbHV0LCAwLCBzaXplb2YgKGd1aW50MzIpICogMTYpOwogICBzcmMtPmN1cl9hdWRpb19waHlzX3N0cmVhbSA9IC0xOwogCi0gIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKIAogICByZXR1cm4gVFJVRTsKIApAQCAtNDQ5LDcgKzQ0OSw3IEBACiAgICAgZHZkbmF2X2Nsb3NlIChzcmMtPmR2ZG5hdik7CiAgICAgc3JjLT5kdmRuYXYgPSBOVUxMOwogICB9Ci0gIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgcmV0dXJuIEZBTFNFOwogfQogCkBAIC01NDMsNyArNTQzLDcgQEAKICAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKICAgR3N0TWVzc2FnZSAqbW91c2Vfb3Zlcl9tc2cgPSBOVUxMOwogCi0gIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCiAgIGlmIChzcmMtPm5hdl9jbG9ja19pZCkgewogICAgIGdzdF9jbG9ja19pZF91bnNjaGVkdWxlIChzcmMtPm5hdl9jbG9ja19pZCk7CkBAIC02MTAsNyArNjEwLDcgQEAKICAgICBzcmMtPmR2ZHJlYWQgPSBOVUxMOwogICB9CiAKLSAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCiAgIGlmIChtb3VzZV9vdmVyX21zZykKICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UX0NBU1QgKHNyYyksIG1vdXNlX292ZXJfbXNnKTsKQEAgLTY1NCw3ICs2NTQsNyBAQAogCiAgICAgLyogTm93LCBzZW5kIHRoZSBldmVudHMuIFdlIG5lZWQgdG8gZHJvcCB0aGUgZHZkIGxvY2sgd2hpbGUgZG9pbmcgc28sCiAgICAgICogYW5kIHRoZW4gY2hlY2sgYWZ0ZXIgaWYgd2UgZ290IGZsdXNoZWQgKi8KLSAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9CQVNFX1NSQ19QQUQgKHNyYyksIHN0aWxsX2V2ZW50KTsKICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9CQVNFX1NSQ19QQUQgKHNyYyksIHNlZ19ldmVudCk7CiAgICAgaWYgKGhsX2V2ZW50KSB7CkBAIC02NjQsMjEgKzY2NCwyMSBAQAogICAgIGlmIChjbWRzX2NoYW5nZWQpCiAgICAgICByc25fZHZkc3JjX3NlbmRfY29tbWFuZHNfY2hhbmdlZCAoc3JjKTsKIAotICAgIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAKLSAgICBnX211dGV4X2xvY2sgKHNyYy0+YnJhbmNoX2xvY2spOworICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOwogCiAgICAgc3JjLT5pbl9zdGlsbF9zdGF0ZSA9IFRSVUU7CiAgIH0gZWxzZSB7CiAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLAogICAgICAgICAiUmUtZW50ZXJpbmcgc3RpbGwgd2FpdCB3aXRoICUiIEdTVF9USU1FX0ZPUk1BVCAiIHJlbWFpbmluZyIsCiAgICAgICAgIEdTVF9USU1FX0FSR1MgKHNyYy0+c3RpbGxfdGltZV9yZW1haW5pbmcpKTsKLSAgICBnX211dGV4X2xvY2sgKHNyYy0+YnJhbmNoX2xvY2spOworICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOwogICB9CiAKICAgaWYgKHNyYy0+YnJhbmNoaW5nKSB7CiAgICAgR1NUX0lORk9fT0JKRUNUIChzcmMsICJCcmFuY2hpbmcgLSBhYm9ydGluZyBzdGlsbCIpOwotICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOwogICAgIHJldHVybiBUUlVFOwogICB9CiAKQEAgLTY5MCw0OSArNjkwLDQ4IEBACiAgICAgICovCiAgICAgc3JjLT5uZWVkX3NlZ21lbnQgPSBUUlVFOwogCi0gICAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgR1NUX0xPR19PQkpFQ1QgKHNyYywgIkVudGVyaW5nIGNvbmRfd2FpdCBzdGlsbCIpOwotICAgIGdfY29uZF93YWl0IChzcmMtPnN0aWxsX2NvbmQsIHNyYy0+YnJhbmNoX2xvY2spOworICAgIGdfY29uZF93YWl0ICgmc3JjLT5zdGlsbF9jb25kLCAmc3JjLT5icmFuY2hfbG9jayk7CiAgICAgR1NUX0xPR19PQkpFQ1QgKHNyYywgImNvbmRfd2FpdCBzdGlsbCBvdmVyLCBicmFuY2hpbmcgPSAlZCIsCiAgICAgICAgIHNyYy0+YnJhbmNoaW5nKTsKIAogICAgIGlmIChzcmMtPmJyYW5jaGluZykgewotICAgICAgZ19tdXRleF91bmxvY2sgKHNyYy0+YnJhbmNoX2xvY2spOwotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5icmFuY2hfbG9jayk7CisgICAgICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICAgIHJldHVybiBUUlVFOwogICAgIH0KICAgICBzcmMtPmluX3N0aWxsX3N0YXRlID0gRkFMU0U7CiAKLSAgICBnX211dGV4X3VubG9jayAoc3JjLT5icmFuY2hfbG9jayk7Ci0gICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOworICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICB9IGVsc2UgewotICAgIEdUaW1lVmFsIGVuZF90aW1lOwogICAgIGdib29sZWFuIHdhc19zaWduYWxsZWQ7CiAKICAgICBpZiAoc3JjLT5zdGlsbF90aW1lX3JlbWFpbmluZyA+IDApIHsKLSAgICAgIGdfZ2V0X2N1cnJlbnRfdGltZSAoJmVuZF90aW1lKTsKLSAgICAgIGdfdGltZV92YWxfYWRkICgmZW5kX3RpbWUsIHNyYy0+c3RpbGxfdGltZV9yZW1haW5pbmcgLyBHU1RfVVNFQ09ORCk7CisgICAgICBnaW50NjQgZW5kX3RpbWU7CisKKyAgICAgIGVuZF90aW1lID0KKyAgICAgICAgICBnX2dldF9tb25vdG9uaWNfdGltZSAoKSArIHNyYy0+c3RpbGxfdGltZV9yZW1haW5pbmcgLyBHU1RfVVNFQ09ORDsKIAogICAgICAgLyogSW1wbGVtZW50IHRpbWVkIHN0aWxscyBieSBzbGVlcGluZywgcG9zc2libHkKICAgICAgICAqIGluIG11bHRpcGxlIHN0ZXBzIGlmIHdlIGdldCBwYXVzZWQvdW5wYXVzZWQgKi8KLSAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBHU1RfTE9HX09CSkVDVCAoc3JjLCAiY29uZF90aW1lZF93YWl0IHN0aWxsIGZvciAlZCBzZWMiLCBkdXJhdGlvbik7CiAgICAgICB3YXNfc2lnbmFsbGVkID0KLSAgICAgICAgICBnX2NvbmRfdGltZWRfd2FpdCAoc3JjLT5zdGlsbF9jb25kLCBzcmMtPmJyYW5jaF9sb2NrLCAmZW5kX3RpbWUpOworICAgICAgICAgIGdfY29uZF93YWl0X3VudGlsICgmc3JjLT5zdGlsbF9jb25kLCAmc3JjLT5icmFuY2hfbG9jaywgZW5kX3RpbWUpOwogICAgICAgd2FzX3NpZ25hbGxlZCB8PSBzcmMtPmJyYW5jaGluZzsKIAotICAgICAgZ19tdXRleF91bmxvY2sgKHNyYy0+YnJhbmNoX2xvY2spOwotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5icmFuY2hfbG9jayk7CisgICAgICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKIAogICAgICAgaWYgKHdhc19zaWduYWxsZWQpIHsKICAgICAgICAgLyogU2lnbmFsbGVkIC0gbXVzdCBiZSBmbHVzaGluZyAqLwotICAgICAgICBHVGltZVZhbCBjdXJfdGltZTsKKyAgICAgICAgZ2ludDY0IGN1cl90aW1lOwogICAgICAgICBHc3RDbG9ja1RpbWVEaWZmIHJlbWFpbjsKIAotICAgICAgICBnX2dldF9jdXJyZW50X3RpbWUgKCZjdXJfdGltZSk7Ci0gICAgICAgIHJlbWFpbiA9Ci0gICAgICAgICAgICAoZW5kX3RpbWUudHZfc2VjIC0gY3VyX3RpbWUudHZfc2VjKSAqIEdTVF9TRUNPTkQgKwotICAgICAgICAgICAgKGVuZF90aW1lLnR2X3VzZWMgLSBjdXJfdGltZS50dl91c2VjKSAqIEdTVF9VU0VDT05EOworICAgICAgICBjdXJfdGltZSA9IGdfZ2V0X21vbm90b25pY190aW1lICgpOworICAgICAgICByZW1haW4gPSAoZW5kX3RpbWUgLSBjdXJfdGltZSkgKiBHU1RfVVNFQ09ORDsKICAgICAgICAgaWYgKHJlbWFpbiA8IDApCiAgICAgICAgICAgc3JjLT5zdGlsbF90aW1lX3JlbWFpbmluZyA9IDA7CiAgICAgICAgIGVsc2UKQEAgLTc2OSw5ICs3NjgsOSBAQAogICAgICAgICAgIEdTVF9USU1FX0FSR1MgKHNlZ21lbnQtPnBvc2l0aW9uKSk7CiAgICAgfQogCi0gICAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfQkFTRV9TUkNfUEFEIChzcmMpLCBzdGlsbF9ldmVudCk7Ci0gICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgfQogCiAgIHJldHVybiBUUlVFOwpAQCAtOTMwLDEwICs5MjksMTAgQEAKICAgZHZkbmF2X3JldCA9IGR2ZG5hdl9nZXRfbmV4dF9ibG9jayAoc3JjLT5kdmRuYXYsIG1tYXAuZGF0YSwgJmV2ZW50LCAmbGVuKTsKICAgaWYgKGR2ZG5hdl9yZXQgIT0gRFZETkFWX1NUQVRVU19PSykKICAgICBnb3RvIHJlYWRfZXJyb3I7Ci0gIGdfbXV0ZXhfbG9jayAoc3JjLT5icmFuY2hfbG9jayk7CisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOwogICBpZiAoc3JjLT5icmFuY2hpbmcpCiAgICAgZ290byBicmFuY2hpbmc7Ci0gIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmJyYW5jaF9sb2NrKTsKIAogICBzd2l0Y2ggKGV2ZW50KSB7CiAgICAgY2FzZSBEVkROQVZfQkxPQ0tfT0s6CkBAIC05NzAsOSArOTY5LDkgQEAKICAgICAgIH0KIAogICAgICAgR1NUX0xPR19PQkpFQ1QgKHNyYywgIk5BViBwYWNrZXQgc3RhcnQgVFMgJSIgR1NUX1RJTUVfRk9STUFUCi0gICAgICAgICAgIiBlbmQgVFMgJSIgR1NUX1RJTUVfRk9STUFUICIgYmFzZSAlIiBHX0dJTlQ2NF9GT1JNQVQgIiAlcyIsCisgICAgICAgICAgIiBlbmQgVFMgJSIgR1NUX1RJTUVfRk9STUFUICIgYmFzZSAlIiBHU1RfU1RJTUVfRk9STUFUICIgJXMiLAogICAgICAgICAgIEdTVF9USU1FX0FSR1MgKG5ld19zdGFydF9wdG0pLCBHU1RfVElNRV9BUkdTIChuZXdfZW5kX3B0bSksCi0gICAgICAgICAgbmV3X2Jhc2VfdGltZSwgZGlzY29udCA/ICJkaXNjb250IiA6ICIiKTsKKyAgICAgICAgICBHU1RfU1RJTUVfQVJHUyAobmV3X2Jhc2VfdGltZSksIGRpc2NvbnQgPyAiZGlzY29udCIgOiAiIik7CiAKICNpZiAwCiAgICAgICBnX3ByaW50ICgiTkFWIHBhY2tldCBzdGFydCBUUyAlIiBHU1RfVElNRV9GT1JNQVQKQEAgLTEwMzMsMTAgKzEwMzIsMTAgQEAKICAgICAgIGlmICghcnNuX2R2ZHNyY19kb19zdGlsbCAoc3JjLCBpbmZvLT5sZW5ndGgpKQogICAgICAgICBnb3RvIGludGVybmFsX2Vycm9yOwogCi0gICAgICBnX211dGV4X2xvY2sgKHNyYy0+YnJhbmNoX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5icmFuY2hfbG9jayk7CiAgICAgICBpZiAoc3JjLT5icmFuY2hpbmcpCiAgICAgICAgIGdvdG8gYnJhbmNoaW5nOwotICAgICAgZ19tdXRleF91bmxvY2sgKHNyYy0+YnJhbmNoX2xvY2spOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmJyYW5jaF9sb2NrKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIERWRE5BVl9XQUlUOgpAQCAtMTE0OCwxMSArMTE0NywxMSBAQAogICAgIEdzdEV2ZW50ICpobF9ldmVudCA9IHNyYy0+aGlnaGxpZ2h0X2V2ZW50OwogCiAgICAgc3JjLT5oaWdobGlnaHRfZXZlbnQgPSBOVUxMOwotICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNyYywgIlNlbmRpbmcgaGlnaGxpZ2h0IGV2ZW50IC0gYnV0dG9uICVkIiwKICAgICAgICAgc3JjLT5hY3RpdmVfYnV0dG9uKTsKICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9CQVNFX1NSQ19QQUQgKHNyYyksIGhsX2V2ZW50KTsKLSAgICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICB9CiAKICAgcmV0dXJuIHJldDsKQEAgLTExODQsNyArMTE4Myw3IEBACiAgIH0KIGJyYW5jaGluZzoKICAgewotICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOwogICAgIGdzdF9idWZmZXJfdW5tYXAgKHNyYy0+YWxsb2NfYnVmLCAmbW1hcCk7CiAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOwogICB9CkBAIC0xMjE1LDcgKzEyMTQsNyBAQAogICBjbWRzW25fY21kcysrXSA9IEdTVF9OQVZJR0FUSU9OX0NPTU1BTkRfRFZEX0FOR0xFX01FTlU7CiAgIGNtZHNbbl9jbWRzKytdID0gR1NUX05BVklHQVRJT05fQ09NTUFORF9EVkRfQ0hBUFRFUl9NRU5VOwogCi0gIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCiAgIC8qIE11bHRpcGxlIGFuZ2xlcyBhdmFpbGFibGU/ICovCiAgIGlmIChzcmMtPm5fYW5nbGVzID4gMSkgewpAQCAtMTIzNyw3ICsxMjM2LDcgQEAKICAgICBjbWRzW25fY21kcysrXSA9IEdTVF9OQVZJR0FUSU9OX0NPTU1BTkRfVVA7CiAgIGlmIChzcmMtPmN1cl9idG5fbWFzayAmIFJTTl9CVE5fRE9XTikKICAgICBjbWRzW25fY21kcysrXSA9IEdTVF9OQVZJR0FUSU9OX0NPTU1BTkRfRE9XTjsKLSAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCiAgIGdzdF9uYXZpZ2F0aW9uX3F1ZXJ5X3NldF9jb21tYW5kc3YgKHF1ZXJ5LCBuX2NtZHMsIGNtZHMpOwogCkBAIC0xMjUwLDEzICsxMjQ5LDEzIEBACiAgIGdpbnQgY3VyX2FnbCwgbl9hbmdsZXM7CiAgIGdib29sZWFuIHJlcyA9IEZBTFNFOwogCi0gIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICBpZiAoZHZkbmF2X2dldF9hbmdsZV9pbmZvIChzcmMtPmR2ZG5hdiwgJmN1cl9hZ2wsCiAgICAgICAgICAgJm5fYW5nbGVzKSA9PSBEVkROQVZfU1RBVFVTX09LKSB7CiAgICAgZ3N0X25hdmlnYXRpb25fcXVlcnlfc2V0X2FuZ2xlcyAocXVlcnksIGN1cl9hZ2wsIG5fYW5nbGVzKTsKICAgICByZXMgPSBUUlVFOwogICB9Ci0gIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKIAogICByZXR1cm4gcmVzOwogfQpAQCAtMTMyMSwxMCArMTMyMCwxMCBAQAogCiAgICpvdXRidWYgPSBOVUxMOwogCi0gIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICByZXQgPSByc25fZHZkc3JjX3ByZXBhcmVfbmV4dF9ibG9jayAoc3JjLCBUUlVFKTsKICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgewotICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgIHJldHVybiByZXQ7CiAgIH0KIApAQCAtMTM1OSw3ICsxMzU4LDcgQEAKICAgICBzcmMtPm5lZWRfdGFnX3VwZGF0ZSA9IEZBTFNFOwogICB9CiAKLSAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCiAgIC8qIFB1c2ggaW4tYmFuZCBldmVudHMgbm93IHRoYXQgd2UndmUgZHJvcHBlZCB0aGUgZHZkX2xvY2ssIGJlZm9yZQogICAgKiB3ZSBjaGFuZ2Ugc2VnbWVudCAqLwpAQCAtMTQxNiw3ICsxNDE1LDcgQEAKICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9CQVNFX1NSQ19QQUQgKHNyYyksIHRhZ19ldmVudCk7CiAgICAgdGFncyA9IE5VTEw7CiAgIH0KLSAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAKICAgaWYgKHNyYy0+bmV4dF9idWYgIT0gTlVMTCkgewogICAgIC8qIE5vdyB0aGF0IHdlJ3JlIGluIHRoZSBuZXcgc2VnbWVudCwgd2UgY2FuIGVucXVldWUgYW55IG5hdiBwYWNrZXQKQEAgLTE0NDYsNyArMTQ0NSw3IEBACiAgIC8qIFNjaGVkdWxlIGEgY2xvY2sgY2FsbGJhY2sgZm9yIHRoZSBhbnkgcGVuZGluZyBuYXYgcGFja2V0ICovCiAgIHJzbl9kdmRzcmNfY2hlY2tfbmF2X2Jsb2NrcyAoc3JjKTsKIAotICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAKICAgaWYgKGhpZ2hsaWdodF9ldmVudCkgewogICAgIEdTVF9MT0dfT0JKRUNUIChzcmMsICJQdXNoaW5nIGhpZ2hsaWdodCBldmVudCB3aXRoIFRTICUiIEdTVF9USU1FX0ZPUk1BVCwKQEAgLTE1MzQsNyArMTUzMyw3IEBACiAgIGlmIChyZXN1bHQgPT0gUlNOX05BVl9SRVNVTFRfSElHSExJR0hUKSB7CiAgICAgLyogSWYgd2UncmUgKm9ubHkqIGNoYW5naW5nIHRoZSBoaWdobGlnaHQsIHdha2UgdXAgdGhlIHN0aWxsIGNvbmRpdGlvbi4KICAgICAgKiBJZiB3ZSdyZSBicmFuY2hpbmcsIHRoYXQgd2lsbCBoYXBwZW4gYW55d2F5ICovCi0gICAgZ19jb25kX2Jyb2FkY2FzdCAoc3JjLT5zdGlsbF9jb25kKTsKKyAgICBnX2NvbmRfYnJvYWRjYXN0ICgmc3JjLT5zdGlsbF9jb25kKTsKICAgfQogCiAgIHJldHVybiByZXN1bHQ7CkBAIC0xNjQ1LDcgKzE2NDQsNyBAQAogCiAgICAgICBHU1RfREVCVUcgKCJkdmRuYXZzcmMgZ290IGEga2V5cHJlc3M6ICVzIiwga2V5KTsKIAotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgaGF2ZV9sb2NrID0gVFJVRTsKICAgICAgIGlmICghc3JjLT5ydW5uaW5nKQogICAgICAgICBnb3RvIG5vdF9ydW5uaW5nOwpAQCAtMTcwMCw3ICsxNjk5LDcgQEAKICAgICAgIGlmICghZ3N0X25hdmlnYXRpb25fZXZlbnRfcGFyc2VfbW91c2VfbW92ZV9ldmVudCAoZXZlbnQsICZ4LCAmeSkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgaGF2ZV9sb2NrID0gVFJVRTsKICAgICAgIGlmICghc3JjLT5ydW5uaW5nKQogICAgICAgICBnb3RvIG5vdF9ydW5uaW5nOwpAQCAtMTczNSw3ICsxNzM0LDcgQEAKIAogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLCAiR290IGNsaWNrIGF0ICVnLCAlZyIsIHgsIHkpOwogCi0gICAgICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBoYXZlX2xvY2sgPSBUUlVFOwogICAgICAgaWYgKCFzcmMtPnJ1bm5pbmcpCiAgICAgICAgIGdvdG8gbm90X3J1bm5pbmc7CkBAIC0xNzU0LDcgKzE3NTMsNyBAQAogICAgICAgaWYgKGNvbW1hbmQgPT0gR1NUX05BVklHQVRJT05fQ09NTUFORF9JTlZBTElEKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICAgIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICAgIGhhdmVfbG9jayA9IFRSVUU7CiAgICAgICBpZiAoIXNyYy0+cnVubmluZykKICAgICAgICAgZ290byBub3RfcnVubmluZzsKQEAgLTE3ODYsMTYgKzE3ODUsMTYgQEAKICAgICAgIEdzdEV2ZW50ICpzZWVrOwogCiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzcmMsICJQcm9jZXNzaW5nIGZsdXNoIGFuZCBqdW1wIik7Ci0gICAgICBnX211dGV4X2xvY2sgKHNyYy0+YnJhbmNoX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5icmFuY2hfbG9jayk7CiAgICAgICBzcmMtPmJyYW5jaGluZyA9IFRSVUU7Ci0gICAgICBnX2NvbmRfYnJvYWRjYXN0IChzcmMtPnN0aWxsX2NvbmQpOwotICAgICAgZ19tdXRleF91bmxvY2sgKHNyYy0+YnJhbmNoX2xvY2spOworICAgICAgZ19jb25kX2Jyb2FkY2FzdCAoJnNyYy0+c3RpbGxfY29uZCk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOwogCiAgICAgICBobF9ldmVudCA9IHNyYy0+aGlnaGxpZ2h0X2V2ZW50OwogICAgICAgc3JjLT5oaWdobGlnaHRfZXZlbnQgPSBOVUxMOwogICAgICAgc3JjLT5hY3RpdmVfaGlnaGxpZ2h0ID0gRkFMU0U7CiAKLSAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAKICAgICAgIGlmIChobF9ldmVudCkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzcmMsICJTZW5kaW5nIGhpZ2hsaWdodCBjaGFuZ2UgZXZlbnQgLSBidXR0b246ICVkIiwKQEAgLTE4MDksNyArMTgwOCw3IEBACiAgICAgICBzcmMtPmZsdXNoaW5nX3NlZWsgPSBUUlVFOwogICAgICAgZ3N0X2VsZW1lbnRfc2VuZF9ldmVudCAoR1NUX0VMRU1FTlQgKHNyYyksIHNlZWspOwogCi0gICAgICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAKICAgICAgIHJzbl9kdmRzcmNfdXBkYXRlX2hpZ2hsaWdodCAoc3JjKTsKICAgICB9CkBAIC0xODMzLDcgKzE4MzIsNyBAQAogICAgIGNtZHNfY2hhbmdlZCA9IHNyYy0+Y29tbWFuZHNfY2hhbmdlZDsKICAgICBzcmMtPmNvbW1hbmRzX2NoYW5nZWQgPSBGQUxTRTsKIAotICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCiAgICAgaWYgKGhsX2V2ZW50KSB7CiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzcmMsICJTZW5kaW5nIGhpZ2hsaWdodCBjaGFuZ2UgZXZlbnQgLSBidXR0b246ICVkIiwKQEAgLTE4NTYsNyArMTg1NSw3IEBACiAgIHJldHVybiBUUlVFOwogbm90X3J1bm5pbmc6CiAgIGlmIChoYXZlX2xvY2spCi0gICAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgIEdTVF9ERUJVR19PQkpFQ1QgKHNyYywgIkVsZW1lbnQgbm90IHN0YXJ0ZWQuIElnbm9yaW5nIG5hdmlnYXRpb24gZXZlbnQiKTsKICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtMjI4OSw3ICsyMjg4LDcgQEAKIAogICBpZiAoc3JjLT5oaWdobGlnaHRfZXZlbnQgJiYgc3JjLT5pbl9zdGlsbF9zdGF0ZSkgewogICAgIEdTVF9MT0dfT0JKRUNUIChzcmMsICJTaWduYWxsaW5nIHN0aWxsIGNvbmRpdGlvbiBkdWUgdG8gaGlnaGxpZ2h0IGNoYW5nZSIpOwotICAgIGdfY29uZF9icm9hZGNhc3QgKHNyYy0+c3RpbGxfY29uZCk7CisgICAgZ19jb25kX2Jyb2FkY2FzdCAoJnNyYy0+c3RpbGxfY29uZCk7CiAgIH0KIH0KIApAQCAtMjMyMyw3ICsyMzIyLDcgQEAKICAgICAgIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyAodGltZSksCiAgICAgICBHU1RfVElNRV9BUkdTIChnc3RfY2xvY2tfZ2V0X3RpbWUgKGNsb2NrKSAtIGJhc2VfdGltZSkpOwogCi0gIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCiAgIC8qIERlc3Ryb3kgdGhlIGNsb2NrIGlkIHRoYXQgY2F1c2VkIHRoaXMgY2FsbGJhY2sgKi8KICAgaWYgKHNyYy0+bmF2X2Nsb2NrX2lkKSB7CkBAIC0yMzU4LDcgKzIzNTcsNyBAQAogICAgIHJzbl9kdmRzcmNfc2NoZWR1bGVfbmF2X2NiIChzcmMsIG5leHRfbmF2KTsKICAgfQogCi0gIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKIAogICByZXR1cm4gVFJVRTsKIH0KQEAgLTIzOTQsMTEgKzIzOTMsMTEgQEAKICAgR1NUX0xPR19PQkpFQ1QgKHNyYywgIlNjaGVkdWxlIG5hdiBwYWNrIGZvciBydW5uaW5nIFRTICUiIEdTVF9USU1FX0ZPUk1BVCwKICAgICAgIEdTVF9USU1FX0FSR1MgKG5leHRfbmF2LT5ydW5uaW5nX3RzKSk7CiAKLSAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICBnc3RfY2xvY2tfaWRfd2FpdF9hc3luYyAoc3JjLT5uYXZfY2xvY2tfaWQsIHJzbl9kdmRzcmNfbmF2X2Nsb2NrX2NiLCBzcmMsCiAgICAgICBOVUxMKTsKICAgZ3N0X29iamVjdF91bnJlZiAoY2xvY2spOwotICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKIH0KIAogLyogQ2FsbGVkIHdpdGggZHZkX2xvY2sgaGVsZCAqLwpAQCAtMjUxNCwxNCArMjUxMywxNCBAQAogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QTEFZSU5HX1RPX1BBVVNFRDoKICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGVsZW1lbnQsICJTd2l0Y2hpbmcgdG8gUEFVU0VEIik7CiAgICAgICAvKiBVbnNjaGVkdWxlIGFueSBOQVYgcGFja2V0IGNhbGxiYWNrICovCi0gICAgICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBzcmMtPmluX3BsYXlpbmcgPSBGQUxTRTsKICAgICAgIGlmIChzcmMtPm5hdl9jbG9ja19pZCkgewogICAgICAgICBnc3RfY2xvY2tfaWRfdW5zY2hlZHVsZSAoc3JjLT5uYXZfY2xvY2tfaWQpOwogICAgICAgICBnc3RfY2xvY2tfaWRfdW5yZWYgKHNyYy0+bmF2X2Nsb2NrX2lkKTsKICAgICAgICAgc3JjLT5uYXZfY2xvY2tfaWQgPSBOVUxMOwogICAgICAgfQotICAgICAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBicmVhazsKQEAgLTI1MzUsMTAgKzI1MzQsMTAgQEAKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1BMQVlJTkc6CiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChlbGVtZW50LCAiU3dpdGNoaW5nIHRvIFBMQVlJTkciKTsKICAgICAgIC8qIEtpY2sgb2ZmIHRoZSBOQVYgcGFja2V0IGNhbGxiYWNrIGlmIG5lZWRlZCAqLwotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgc3JjLT5pbl9wbGF5aW5nID0gVFJVRTsKICAgICAgIHJzbl9kdmRzcmNfY2hlY2tfbmF2X2Jsb2NrcyAoc3JjKTsKLSAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgogICAgICAgcnNuX2R2ZHNyY19wb3N0X3RpdGxlX2luZm8gKGVsZW1lbnQpOwpAQCAtMjU2MSw5ICsyNTYwLDkgQEAKICAgc3dpdGNoIChHU1RfUVVFUllfVFlQRSAocXVlcnkpKSB7CiAgICAgY2FzZSBHU1RfUVVFUllfRFVSQVRJT046CiAgICAgICBnc3RfcXVlcnlfcGFyc2VfZHVyYXRpb24gKHF1ZXJ5LCAmZm9ybWF0LCBOVUxMKTsKLSAgICAgIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICAgIGlmICghc3JjLT5ydW5uaW5nKSB7Ci0gICAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAKQEAgLTI1OTgsMTQgKzI1OTcsMTQgQEAKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9RVUVSWV9QT1NJVElPTjoKICAgICAgIGdzdF9xdWVyeV9wYXJzZV9wb3NpdGlvbiAocXVlcnksICZmb3JtYXQsIE5VTEwpOwogCi0gICAgICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBpZiAoIXNyYy0+cnVubmluZykgewotICAgICAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgaWYgKGZvcm1hdCA9PSB0aXRsZV9mb3JtYXQpIHsKQEAgLTI2MjcsNyArMjYyNiw3IEBACiAgICAgICAgICAgcmVzID0gVFJVRTsKICAgICAgICAgfQogICAgICAgfQotICAgICAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX1FVRVJZX0NVU1RPTToKICAgICB7CkBAIC0yODM3LDE0ICsyODM2LDE0IEBACiAgIH0gZWxzZSB7CiAgICAgLyogSGFuZGxlIG90aGVyIGZvcm1hdHM6IFRpbWUsIHRpdGxlLCBjaGFwdGVyLCBhbmdsZSAqLwogICAgIGlmIChzZWdtZW50LT5mb3JtYXQgPT0gR1NUX0ZPUk1BVF9USU1FKSB7Ci0gICAgICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBzcmMtPmRpc2NvbnQgPSBUUlVFOwogICAgICAgcmV0ID0gcnNuX2R2ZHNyY19zZWVrX3RvX3RpbWUgKHNyYywgc2VnbWVudC0+c3RhcnQpOwotICAgICAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICB9IGVsc2UgaWYgKHNlZ21lbnQtPmZvcm1hdCA9PSB0aXRsZV9mb3JtYXQpIHsKICAgICAgIGdpbnQgdGl0bGVzOwogCi0gICAgICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBpZiAoc3JjLT5ydW5uaW5nICYmCiAgICAgICAgICAgZHZkbmF2X2dldF9udW1iZXJfb2ZfdGl0bGVzIChzcmMtPmR2ZG5hdiwKICAgICAgICAgICAgICAgJnRpdGxlcykgPT0gRFZETkFWX1NUQVRVU19PSykgewpAQCAtMjg1NCw5ICsyODUzLDkgQEAKICAgICAgICAgICBzcmMtPmRpc2NvbnQgPSBUUlVFOwogICAgICAgICB9CiAgICAgICB9Ci0gICAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgIH0gZWxzZSBpZiAoc2VnbWVudC0+Zm9ybWF0ID09IGNoYXB0ZXJfZm9ybWF0KSB7Ci0gICAgICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBpZiAoc3JjLT5ydW5uaW5nKSB7CiAgICAgICAgIGdpbnQzMiB0aXRsZSwgY2hhcHRlcnMsIHg7CiAgICAgICAgIGlmIChkdmRuYXZfY3VycmVudF90aXRsZV9pbmZvIChzcmMtPmR2ZG5hdiwgJnRpdGxlLCAmeCkgPT0KQEAgLTI4ODQsNyArMjg4Myw3IEBACiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9Ci0gICAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgIH0KICAgfQogCkBAIC0yODk0LDcgKzI4OTMsNyBAQAogCiAgICAgaWYgKHNyYy0+Zmx1c2hpbmdfc2VlaykgewogICAgICAgR3N0TWVzc2FnZSAqbW91c2Vfb3Zlcl9tc2cgPSBOVUxMOwotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgc3JjLT5mbHVzaGluZ19zZWVrID0gRkFMU0U7CiAKICAgICAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJnNyYy0+bmV4dF9idWYsIE5VTEwpOwpAQCAtMjkxMyw3ICsyOTEyLDcgQEAKICAgICAgICAgICAgIGdzdF9uYXZpZ2F0aW9uX21lc3NhZ2VfbmV3X21vdXNlX292ZXIgKChHc3RPYmplY3QgKikgc3JjLCBGQUxTRSk7CiAgICAgICAgIHNyYy0+d2FzX21vdXNlX292ZXIgPSBGQUxTRTsKICAgICAgIH0KLSAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAKICAgICAgIGlmIChtb3VzZV9vdmVyX21zZykKICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVF9DQVNUIChzcmMpLCBtb3VzZV9vdmVyX21zZyk7CmRpZmYgLS1naXQgYS9leHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuaCBiL2V4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5oCmluZGV4IDU4MDRjMDcuLmNjMmJiMDQgMTAwNjQ0Ci0tLSBhL2V4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5oCisrKyBiL2V4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5oCkBAIC01MCw5ICs1MCw5IEBACiAKICAgZ2Jvb2xlYW4JZmFzdHN0YXJ0OwogCi0gIEdNdXRleAkqZHZkX2xvY2s7Ci0gIEdDb25kCQkqc3RpbGxfY29uZDsKLSAgR011dGV4CSpicmFuY2hfbG9jazsKKyAgR011dGV4CWR2ZF9sb2NrOworICBHQ29uZAkJc3RpbGxfY29uZDsKKyAgR011dGV4CWJyYW5jaF9sb2NrOwogICBnYm9vbGVhbglicmFuY2hpbmc7CiAKICAgZ2NoYXIJCSpkZXZpY2U7CmRpZmYgLS1naXQgYS9leHQvcnN2Zy9NYWtlZmlsZS5pbiBiL2V4dC9yc3ZnL01ha2VmaWxlLmluCmluZGV4IDk1YjlkOTkuLjIxMDQwM2EgMTAwNjQ0Ci0tLSBhL2V4dC9yc3ZnL01ha2VmaWxlLmluCisrKyBiL2V4dC9yc3ZnL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L3JzdmcvZ3N0cnN2Z2RlYy5jIGIvZXh0L3JzdmcvZ3N0cnN2Z2RlYy5jCmluZGV4IDE3ZWJjYjEuLmQ4N2M2Y2EgMTAwNjQ0Ci0tLSBhL2V4dC9yc3ZnL2dzdHJzdmdkZWMuYworKysgYi9leHQvcnN2Zy9nc3Ryc3ZnZGVjLmMKQEAgLTI1LDcgKzI1LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPWltYWdlLnN2ZyAhIHJzdmdkZWMgISBpbWFnZWZyZWV6ZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249aW1hZ2Uuc3ZnICEgcnN2Z2RlYyAhIGltYWdlZnJlZXplICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwgcmVuZGVyIGFuZCBzaG93IGEgc3ZnIGltYWdlLgogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZXh0L3JzdmcvZ3N0cnN2Z2RlYy5oIGIvZXh0L3JzdmcvZ3N0cnN2Z2RlYy5oCmluZGV4IDhkNzE3M2IuLjM3NzAwMjAgMTAwNjQ0Ci0tLSBhL2V4dC9yc3ZnL2dzdHJzdmdkZWMuaAorKysgYi9leHQvcnN2Zy9nc3Ryc3ZnZGVjLmgKQEAgLTI3LDkgKzI3LDYgQEAKICNpbmNsdWRlIDxjYWlyby9jYWlyby5oPgogCiAjaW5jbHVkZSA8bGlicnN2Zy9yc3ZnLmg+Ci0jaWZuZGVmIEhBVkVfUlNWR18yXzM2XzIKLSNpbmNsdWRlIDxsaWJyc3ZnL3JzdmctY2Fpcm8uaD4KLSNlbmRpZgogCiBHX0JFR0lOX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL2V4dC9yc3ZnL2dzdHJzdmdvdmVybGF5LmMgYi9leHQvcnN2Zy9nc3Ryc3Znb3ZlcmxheS5jCmluZGV4IDZjNjgxMTMuLjY5Zjk5YWQgMTAwNjQ0Ci0tLSBhL2V4dC9yc3ZnL2dzdHJzdmdvdmVybGF5LmMKKysrIGIvZXh0L3JzdmcvZ3N0cnN2Z292ZXJsYXkuYwpAQCAtNDcsMTMgKzQ3LDEzIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgdmlkZW9jb252ZXJ0ICEgcnN2Z292ZXJsYXkgbG9jYXRpb249Zm9vLnN2ZyAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHZpZGVvY29udmVydCAhIHJzdmdvdmVybGF5IGxvY2F0aW9uPWZvby5zdmcgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCiAgKiBdfCBzcGVjaWZpZXMgdGhlIFNWRyBsb2NhdGlvbiB0aHJvdWdoIHRoZSBmaWxlbmFtZSBwcm9wZXJ0eS4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhIHZpZGVvY29udmVydCAhIHJzdmdvdmVybGF5IG5hbWU9b3ZlcmxheSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsgZmlsZXNyYyBsb2NhdGlvbj1mb28uc3ZnICEgaW1hZ2Uvc3ZnICEgb3ZlcmxheS5kYXRhX3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHZpZGVvY29udmVydCAhIHJzdmdvdmVybGF5IG5hbWU9b3ZlcmxheSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsgZmlsZXNyYyBsb2NhdGlvbj1mb28uc3ZnICEgaW1hZ2Uvc3ZnICEgb3ZlcmxheS5kYXRhX3NpbmsKICAqIF18IGRvZXMgdGhlIHNhbWUgYnkgZmVlZGluZyBkYXRhIHRocm91Z2ggdGhlIGRhdGFfc2luayBwYWQuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IHRoZSBTVkcgZGF0YSBpdHNlbGYgYXMgcGFyYW1ldGVyOgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgdmlkZW9jb252ZXJ0ICEgcnN2Z292ZXJsYXkgZGF0YT0nJmx0O3N2ZyB2aWV3Qm94PSIwIDAgODAwIDYwMCImZ3Q7Jmx0O2ltYWdlIHg9IjgwJSIgeT0iODAlIiB3aWR0aD0iMTAlIiBoZWlnaHQ9IjEwJSIgeGxpbms6aHJlZj0iZm9vLmpwZyIgLyZndDsmbHQ7L3N2ZyZndDsnICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgdmlkZW9jb252ZXJ0ICEgcnN2Z292ZXJsYXkgZGF0YT0nJmx0O3N2ZyB2aWV3Qm94PSIwIDAgODAwIDYwMCImZ3Q7Jmx0O2ltYWdlIHg9IjgwJSIgeT0iODAlIiB3aWR0aD0iMTAlIiBoZWlnaHQ9IjEwJSIgeGxpbms6aHJlZj0iZm9vLmpwZyIgLyZndDsmbHQ7L3N2ZyZndDsnICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2V4dC9yc3ZnL2dzdHJzdmdvdmVybGF5LmggYi9leHQvcnN2Zy9nc3Ryc3Znb3ZlcmxheS5oCmluZGV4IDE1MWQwOTQuLjljZDAwZmEgMTAwNjQ0Ci0tLSBhL2V4dC9yc3ZnL2dzdHJzdmdvdmVybGF5LmgKKysrIGIvZXh0L3JzdmcvZ3N0cnN2Z292ZXJsYXkuaApAQCAtMjEsOSArMjEsNiBAQAogI2RlZmluZSBfX0dTVF9SU1ZHX09WRVJMQVlfSF9fCiAKICNpbmNsdWRlIDxsaWJyc3ZnL3JzdmcuaD4KLSNpZm5kZWYgSEFWRV9SU1ZHXzJfMzZfMgotI2luY2x1ZGUgPGxpYnJzdmcvcnN2Zy1jYWlyby5oPgotI2VuZGlmCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb2ZpbHRlci5oPgpkaWZmIC0tZ2l0IGEvZXh0L3J0bXAvTWFrZWZpbGUuaW4gYi9leHQvcnRtcC9NYWtlZmlsZS5pbgppbmRleCBlYzhkODYxLi5kOTk5NjlhIDEwMDY0NAotLS0gYS9leHQvcnRtcC9NYWtlZmlsZS5pbgorKysgYi9leHQvcnRtcC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9ydG1wL1JFQURNRSBiL2V4dC9ydG1wL1JFQURNRQppbmRleCBlOTg2MGE1Li40ZjZlNDEzIDEwMDY0NAotLS0gYS9leHQvcnRtcC9SRUFETUUKKysrIGIvZXh0L3J0bXAvUkVBRE1FCkBAIC0xLDYgKzEsNiBAQAotcnRtcHNyYzoKK3J0bXBzcmMvc2luazoKIAotVGhpcyBwbHVnaW4gcmVxdWlyZXMgbGlicnRtcCBmcm9tIGh0dHA6Ly9ydG1wZHVtcC5tcGxheWVyaHEuaHUvCitUaGVzZSBwbHVnaW5zIHJlcXVpcmUgbGlicnRtcCBmcm9tIGh0dHA6Ly9ydG1wZHVtcC5tcGxheWVyaHEuaHUvCiAKIFlvdSBoYXZlIHRvIGJ1aWxkIGxpYnJ0bXAgd2l0aCAtZlBJQyB0byBiZSBhYmxlIHRvIHVzZSBpdAogd2l0aCB0aGUgR1N0cmVhbWVyIHBsdWdpbjogbWFrZSBYQ0ZMQUdTPSItZlBJQyIKZGlmZiAtLWdpdCBhL2V4dC9ydG1wL2dzdHJ0bXAuYyBiL2V4dC9ydG1wL2dzdHJ0bXAuYwppbmRleCA3NjE3M2YzLi45MzUzMDRkIDEwMDY0NAotLS0gYS9leHQvcnRtcC9nc3RydG1wLmMKKysrIGIvZXh0L3J0bXAvZ3N0cnRtcC5jCkBAIC01MCwxMSArNTAsMTcgQEAKICAgICBjYXNlIFJUTVBfTE9HV0FSTklORzoKICAgICAgIGdzdF9sZXZlbCA9IEdTVF9MRVZFTF9XQVJOSU5HOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBSVE1QX0xPR0lORk86CisgICAgICBnc3RfbGV2ZWwgPSBHU1RfTEVWRUxfSU5GTzsKKyAgICAgIGJyZWFrOwogICAgIGNhc2UgUlRNUF9MT0dERUJVRzoKICAgICAgIGdzdF9sZXZlbCA9IEdTVF9MRVZFTF9ERUJVRzsKICAgICAgIGJyZWFrOworICAgIGNhc2UgUlRNUF9MT0dERUJVRzI6CisgICAgICBnc3RfbGV2ZWwgPSBHU1RfTEVWRUxfTE9HOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgIGdzdF9sZXZlbCA9IEdTVF9MRVZFTF9JTkZPOworICAgICAgZ3N0X2xldmVsID0gR1NUX0xFVkVMX1RSQUNFOwogICAgICAgYnJlYWs7CiAgIH0KIApAQCAtNjgsMTQgKzc0LDI3IEBACiAKICAgUlRNUF9Mb2dTZXRDYWxsYmFjayAoZ3N0X3J0bXBfbG9nX2NhbGxiYWNrKTsKICAgZ3N0X2xldmVsID0gZ3N0X2RlYnVnX2NhdGVnb3J5X2dldF90aHJlc2hvbGQgKHJ0bXBfZGVidWcpOwotICBpZiAoZ3N0X2xldmVsID49IEdTVF9MRVZFTF9MT0cpCi0gICAgUlRNUF9Mb2dTZXRMZXZlbCAoUlRNUF9MT0dBTEwpOwotICBlbHNlIGlmIChnc3RfbGV2ZWwgPj0gR1NUX0xFVkVMX0RFQlVHKQotICAgIFJUTVBfTG9nU2V0TGV2ZWwgKFJUTVBfTE9HREVCVUcpOwotICBlbHNlIGlmIChnc3RfbGV2ZWwgPj0gR1NUX0xFVkVMX0lORk8pCi0gICAgUlRNUF9Mb2dTZXRMZXZlbCAoUlRNUF9MT0dJTkZPKTsKLSAgZWxzZSBpZiAoZ3N0X2xldmVsID49IEdTVF9MRVZFTF9XQVJOSU5HKQotICAgIFJUTVBfTG9nU2V0TGV2ZWwgKFJUTVBfTE9HV0FSTklORyk7CisKKyAgc3dpdGNoIChnc3RfbGV2ZWwpIHsKKyAgICBjYXNlIEdTVF9MRVZFTF9FUlJPUjoKKyAgICAgIFJUTVBfTG9nU2V0TGV2ZWwgKFJUTVBfTE9HRVJST1IpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfTEVWRUxfV0FSTklORzoKKyAgICBjYXNlIEdTVF9MRVZFTF9GSVhNRToKKyAgICAgIFJUTVBfTG9nU2V0TGV2ZWwgKFJUTVBfTE9HV0FSTklORyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9MRVZFTF9JTkZPOgorICAgICAgUlRNUF9Mb2dTZXRMZXZlbCAoUlRNUF9MT0dJTkZPKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0xFVkVMX0RFQlVHOgorICAgICAgUlRNUF9Mb2dTZXRMZXZlbCAoUlRNUF9MT0dERUJVRyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9MRVZFTF9MT0c6CisgICAgICBSVE1QX0xvZ1NldExldmVsIChSVE1QX0xPR0RFQlVHMik7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAvKiBfVFJBQ0UgYW5kIGJleW9uZCAqLworICAgICAgUlRNUF9Mb2dTZXRMZXZlbCAoUlRNUF9MT0dBTEwpOworICB9CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvZXh0L3J0bXAvZ3N0cnRtcHNpbmsuYyBiL2V4dC9ydG1wL2dzdHJ0bXBzaW5rLmMKaW5kZXggZDJlN2RiZi4uNzgxZjNiZiAxMDA2NDQKLS0tIGEvZXh0L3J0bXAvZ3N0cnRtcHNpbmsuYworKysgYi9leHQvcnRtcC9nc3RydG1wc2luay5jCkBAIC0zMCw3ICszMCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgISBmZmVuY19mbHYgISBmbHZtdXggISBydG1wc2luayBsb2NhdGlvbj0ncnRtcDovL2xvY2FsaG9zdC9wYXRoL3RvL3N0cmVhbSBsaXZlPTEnCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBmZmVuY19mbHYgISBmbHZtdXggISBydG1wc2luayBsb2NhdGlvbj0ncnRtcDovL2xvY2FsaG9zdC9wYXRoL3RvL3N0cmVhbSBsaXZlPTEnCiAgKiBdfCBFbmNvZGUgYSB0ZXN0IHZpZGVvIHN0cmVhbSB0byBGTFYgdmlkZW8gZm9ybWF0IGFuZCBzdHJlYW0gaXQgdmlhIFJUTVAuCiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC03Niw2ICs3Niw3IEBACiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3J0bXBfc2lua19zdG9wIChHc3RCYXNlU2luayAqIHNpbmspOwogc3RhdGljIGdib29sZWFuIGdzdF9ydG1wX3Npbmtfc3RhcnQgKEdzdEJhc2VTaW5rICogc2luayk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3J0bXBfc2lua19ldmVudCAoR3N0QmFzZVNpbmsgKiBzaW5rLCBHc3RFdmVudCAqIGV2ZW50KTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfcnRtcF9zaW5rX3NldGNhcHMgKEdzdEJhc2VTaW5rICogc2luaywgR3N0Q2FwcyAqIGNhcHMpOwogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3J0bXBfc2lua19yZW5kZXIgKEdzdEJhc2VTaW5rICogc2luaywgR3N0QnVmZmVyICogYnVmKTsKIAogI2RlZmluZSBnc3RfcnRtcF9zaW5rX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKQEAgLTExNCw3ICsxMTUsOCBAQAogICBnc3RiYXNlc2lua19jbGFzcy0+c3RhcnQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3J0bXBfc2lua19zdGFydCk7CiAgIGdzdGJhc2VzaW5rX2NsYXNzLT5zdG9wID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9ydG1wX3Npbmtfc3RvcCk7CiAgIGdzdGJhc2VzaW5rX2NsYXNzLT5yZW5kZXIgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3J0bXBfc2lua19yZW5kZXIpOwotICBnc3RiYXNlc2lua19jbGFzcy0+ZXZlbnQgPSBnc3RfcnRtcF9zaW5rX2V2ZW50OworICBnc3RiYXNlc2lua19jbGFzcy0+c2V0X2NhcHMgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3J0bXBfc2lua19zZXRjYXBzKTsKKyAgZ3N0YmFzZXNpbmtfY2xhc3MtPmV2ZW50ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9ydG1wX3NpbmtfZXZlbnQpOwogCiAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfcnRtcF9zaW5rX2RlYnVnLCAicnRtcHNpbmsiLCAwLAogICAgICAgIlJUTVAgc2VydmVyIGVsZW1lbnQiKTsKQEAgLTE2MiwxNSArMTY0LDE3IEBACiAKICAgc2luay0+cnRtcF91cmkgPSBnX3N0cmR1cCAoc2luay0+dXJpKTsKICAgc2luay0+cnRtcCA9IFJUTVBfQWxsb2MgKCk7CisKKyAgaWYgKCFzaW5rLT5ydG1wKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2luaywgIkNvdWxkIG5vdCBhbGxvY2F0ZSBsaWJydG1wJ3MgUlRNUCBjb250ZXh0Iik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCiAgIFJUTVBfSW5pdCAoc2luay0+cnRtcCk7CiAgIGlmICghUlRNUF9TZXR1cFVSTCAoc2luay0+cnRtcCwgc2luay0+cnRtcF91cmkpKSB7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNpbmssIFJFU09VUkNFLCBPUEVOX1dSSVRFLCAoTlVMTCksCiAgICAgICAgICgiRmFpbGVkIHRvIHNldHVwIFVSTCAnJXMnIiwgc2luay0+dXJpKSk7Ci0gICAgUlRNUF9GcmVlIChzaW5rLT5ydG1wKTsKLSAgICBzaW5rLT5ydG1wID0gTlVMTDsKLSAgICBnX2ZyZWUgKHNpbmstPnJ0bXBfdXJpKTsKLSAgICBzaW5rLT5ydG1wX3VyaSA9IE5VTEw7Ci0gICAgcmV0dXJuIEZBTFNFOworICAgIGdvdG8gZXJyb3I7CiAgIH0KIAogICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiQ3JlYXRlZCBSVE1QIG9iamVjdCIpOwpAQCAtMTgyLDYgKzE4NiwxNSBAQAogICBzaW5rLT5oYXZlX3dyaXRlX2Vycm9yID0gRkFMU0U7CiAKICAgcmV0dXJuIFRSVUU7CisKK2Vycm9yOgorICBpZiAoc2luay0+cnRtcCkgeworICAgIFJUTVBfRnJlZSAoc2luay0+cnRtcCk7CisgICAgc2luay0+cnRtcCA9IE5VTEw7CisgIH0KKyAgZ19mcmVlIChzaW5rLT5ydG1wX3VyaSk7CisgIHNpbmstPnJ0bXBfdXJpID0gTlVMTDsKKyAgcmV0dXJuIEZBTFNFOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KQEAgLTE4OSw4ICsyMDIsMTAgQEAKIHsKICAgR3N0UlRNUFNpbmsgKnNpbmsgPSBHU1RfUlRNUF9TSU5LIChiYXNlc2luayk7CiAKLSAgZ3N0X2J1ZmZlcl9yZXBsYWNlICgmc2luay0+Y2FjaGUsIE5VTEwpOwotCisgIGlmIChzaW5rLT5oZWFkZXIpIHsKKyAgICBnc3RfYnVmZmVyX3VucmVmIChzaW5rLT5oZWFkZXIpOworICAgIHNpbmstPmhlYWRlciA9IE5VTEw7CisgIH0KICAgaWYgKHNpbmstPnJ0bXApIHsKICAgICBSVE1QX0Nsb3NlIChzaW5rLT5ydG1wKTsKICAgICBSVE1QX0ZyZWUgKHNpbmstPnJ0bXApOwpAQCAtMjA4LDcgKzIyMyw3IEBACiBnc3RfcnRtcF9zaW5rX3JlbmRlciAoR3N0QmFzZVNpbmsgKiBic2luaywgR3N0QnVmZmVyICogYnVmKQogewogICBHc3RSVE1QU2luayAqc2luayA9IEdTVF9SVE1QX1NJTksgKGJzaW5rKTsKLSAgR3N0QnVmZmVyICpyZWZmZWRfYnVmID0gTlVMTDsKKyAgZ2Jvb2xlYW4gbmVlZF91bnJlZiA9IEZBTFNFOwogICBHc3RNYXBJbmZvIG1hcCA9IEdTVF9NQVBfSU5GT19JTklUOwogCiAgIGlmIChzaW5rLT5ydG1wID09IE5VTEwpIHsKQEAgLTIxNyw2ICsyMzIsMTEgQEAKICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgIH0KIAorICAvKiBJZ25vcmUgYnVmZmVycyB0aGF0IGFyZSBpbiB0aGUgc3RyZWFtIGhlYWRlcnMgKGNhcHMpICovCisgIGlmIChHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUIChidWYsIEdTVF9CVUZGRVJfRkxBR19IRUFERVIpKSB7CisgICAgcmV0dXJuIEdTVF9GTE9XX09LOworICB9CisKICAgaWYgKHNpbmstPmZpcnN0KSB7CiAgICAgLyogb3BlbiB0aGUgY29ubmVjdGlvbiAqLwogICAgIGlmICghUlRNUF9Jc0Nvbm5lY3RlZCAoc2luay0+cnRtcCkpIHsKQEAgLTIzNCwyMSArMjU0LDE0IEBACiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiT3BlbmVkIGNvbm5lY3Rpb24gdG8gJXMiLCBzaW5rLT5ydG1wX3VyaSk7CiAgICAgfQogCi0gICAgLyogRklYTUU6IFBhcnNlIHRoZSBmaXJzdCBidWZmZXIgYW5kIHNlZSBpZiBpdCBjb250YWlucyBhIGhlYWRlciBwbHVzIGEgcGFja2V0IGluc3RlYWQKLSAgICAgKiBvZiBqdXN0IGFzc3VtaW5nIGl0J3Mgb25seSB0aGUgaGVhZGVyICovCi0gICAgR1NUX0xPR19PQkpFQ1QgKHNpbmssICJDYWNoaW5nIGZpcnN0IGJ1ZmZlciBvZiBzaXplICUiIEdfR1NJWkVfRk9STUFUCi0gICAgICAgICIgZm9yIGNvbmNhdGVuYXRpb24iLCBnc3RfYnVmZmVyX2dldF9zaXplIChidWYpKTsKLSAgICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZzaW5rLT5jYWNoZSwgYnVmKTsKLSAgICBzaW5rLT5maXJzdCA9IEZBTFNFOwotICAgIHJldHVybiBHU1RfRkxPV19PSzsKLSAgfQorICAgIC8qIFByZXBlbmQgdGhlIGhlYWRlciBmcm9tIHRoZSBjYXBzIHRvIHRoZSBmaXJzdCBub24gaGVhZGVyIGJ1ZmZlciAqLworICAgIGlmIChzaW5rLT5oZWFkZXIpIHsKKyAgICAgIGJ1ZiA9IGdzdF9idWZmZXJfYXBwZW5kIChnc3RfYnVmZmVyX3JlZiAoc2luay0+aGVhZGVyKSwKKyAgICAgICAgICBnc3RfYnVmZmVyX3JlZiAoYnVmKSk7CisgICAgICBuZWVkX3VucmVmID0gVFJVRTsKKyAgICB9CiAKLSAgaWYgKHNpbmstPmNhY2hlKSB7Ci0gICAgR1NUX0xPR19PQkpFQ1QgKHNpbmssICJKb2luaW5nIDJuZCBidWZmZXIgb2Ygc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVAotICAgICAgICAiIHRvIGNhY2hlZCBidWYiLCBnc3RfYnVmZmVyX2dldF9zaXplIChidWYpKTsKLSAgICBnc3RfYnVmZmVyX3JlZiAoYnVmKTsKLSAgICByZWZmZWRfYnVmID0gYnVmID0gZ3N0X2J1ZmZlcl9hcHBlbmQgKHNpbmstPmNhY2hlLCBidWYpOwotICAgIHNpbmstPmNhY2hlID0gTlVMTDsKKyAgICBzaW5rLT5maXJzdCA9IEZBTFNFOwogICB9CiAKICAgaWYgKHNpbmstPmhhdmVfd3JpdGVfZXJyb3IpCkBAIC0yNjMsOCArMjc2LDggQEAKICAgICBnb3RvIHdyaXRlX2ZhaWxlZDsKIAogICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZtYXApOwotICBpZiAocmVmZmVkX2J1ZikKLSAgICBnc3RfYnVmZmVyX3VucmVmIChyZWZmZWRfYnVmKTsKKyAgaWYgKG5lZWRfdW5yZWYpCisgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKIAogICByZXR1cm4gR1NUX0ZMT1dfT0s7CiAKQEAgLTI3Myw4ICsyODYsOCBAQAogICB7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNpbmssIFJFU09VUkNFLCBXUklURSwgKE5VTEwpLCAoIkZhaWxlZCB0byB3cml0ZSBkYXRhIikpOwogICAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZiwgJm1hcCk7Ci0gICAgaWYgKHJlZmZlZF9idWYpCi0gICAgICBnc3RfYnVmZmVyX3VucmVmIChyZWZmZWRfYnVmKTsKKyAgICBpZiAobmVlZF91bnJlZikKKyAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CiAgICAgc2luay0+aGF2ZV93cml0ZV9lcnJvciA9IFRSVUU7CiAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICB9CkBAIC0zODEsNiArMzk0LDQ5IEBACiB9CiAKIHN0YXRpYyBnYm9vbGVhbgorZ3N0X3J0bXBfc2lua19zZXRjYXBzIChHc3RCYXNlU2luayAqIHNpbmssIEdzdENhcHMgKiBjYXBzKQoreworICBHc3RSVE1QU2luayAqcnRtcHNpbmsgPSBHU1RfUlRNUF9TSU5LIChzaW5rKTsKKyAgR3N0U3RydWN0dXJlICpzOworICBjb25zdCBHVmFsdWUgKnNoOworICBHQXJyYXkgKmJ1ZmZlcnM7CisgIGdpbnQgaTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiY2FwcyBzZXQgdG8gJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworCisgIC8qIENsZWFyIG91ciBjdXJyZW50IGhlYWRlciBidWZmZXIgKi8KKyAgaWYgKHJ0bXBzaW5rLT5oZWFkZXIpIHsKKyAgICBnc3RfYnVmZmVyX3VucmVmIChydG1wc2luay0+aGVhZGVyKTsKKyAgICBydG1wc2luay0+aGVhZGVyID0gTlVMTDsKKyAgfQorCisgIHJ0bXBzaW5rLT5oZWFkZXIgPSBnc3RfYnVmZmVyX25ldyAoKTsKKworICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7CisKKyAgc2ggPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAocywgInN0cmVhbWhlYWRlciIpOworICBidWZmZXJzID0gZ192YWx1ZV9wZWVrX3BvaW50ZXIgKHNoKTsKKworICAvKiBDb25jYXRlbmF0ZSBhbGwgYnVmZmVycyBpbiBzdHJlYW1oZWFkZXIgaW50byBvbmUgKi8KKyAgZm9yIChpID0gMDsgaSA8IGJ1ZmZlcnMtPmxlbjsgKytpKSB7CisgICAgR1ZhbHVlICp2YWw7CisgICAgR3N0QnVmZmVyICpidWY7CisKKyAgICB2YWwgPSAmZ19hcnJheV9pbmRleCAoYnVmZmVycywgR1ZhbHVlLCBpKTsKKyAgICBidWYgPSBnX3ZhbHVlX3BlZWtfcG9pbnRlciAodmFsKTsKKworICAgIGdzdF9idWZmZXJfcmVmIChidWYpOworCisgICAgcnRtcHNpbmstPmhlYWRlciA9IGdzdF9idWZmZXJfYXBwZW5kIChydG1wc2luay0+aGVhZGVyLCBidWYpOworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAocnRtcHNpbmssICJoYXZlICUiIEdfR1NJWkVfRk9STUFUICIgYnl0ZXMgb2YgaGVhZGVyIGRhdGEiLAorICAgICAgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAocnRtcHNpbmstPmhlYWRlcikpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9ydG1wX3NpbmtfZXZlbnQgKEdzdEJhc2VTaW5rICogc2luaywgR3N0RXZlbnQgKiBldmVudCkKIHsKICAgR3N0UlRNUFNpbmsgKnJ0bXBzaW5rID0gR1NUX1JUTVBfU0lOSyAoc2luayk7CmRpZmYgLS1naXQgYS9leHQvcnRtcC9nc3RydG1wc2luay5oIGIvZXh0L3J0bXAvZ3N0cnRtcHNpbmsuaAppbmRleCA1MjNmNWFlLi5iOTA3MmY1IDEwMDY0NAotLS0gYS9leHQvcnRtcC9nc3RydG1wc2luay5oCisrKyBiL2V4dC9ydG1wL2dzdHJ0bXBzaW5rLmgKQEAgLTUzLDcgKzUzLDcgQEAKICAgUlRNUCAqcnRtcDsKICAgZ2NoYXIgKnJ0bXBfdXJpOyAvKiBjb3B5IG9mIHVybCBmb3IgbGlicnRtcCAqLwogCi0gIEdzdEJ1ZmZlciAqY2FjaGU7IC8qIENhY2hlZCBidWZmZXIgKi8KKyAgR3N0QnVmZmVyICpoZWFkZXI7CiAgIGdib29sZWFuIGZpcnN0OwogICBnYm9vbGVhbiBoYXZlX3dyaXRlX2Vycm9yOwogfTsKZGlmZiAtLWdpdCBhL2V4dC9ydG1wL2dzdHJ0bXBzcmMuYyBiL2V4dC9ydG1wL2dzdHJ0bXBzcmMuYwppbmRleCBiYmVkOGIwLi4wMmNiZWMxIDEwMDY0NAotLS0gYS9leHQvcnRtcC9nc3RydG1wc3JjLmMKKysrIGIvZXh0L3J0bXAvZ3N0cnRtcHNyYy5jCkBAIC0zNCw3ICszNCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgcnRtcHNyYyBsb2NhdGlvbj1ydG1wOi8vc29tZWhvc3Qvc29tZXVybCAhIGZha2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBydG1wc3JjIGxvY2F0aW9uPXJ0bXA6Ly9zb21laG9zdC9zb21ldXJsICEgZmFrZXNpbmsKICAqIF18IE9wZW4gYW4gUlRNUCBsb2NhdGlvbiBhbmQgcGFzcyBpdHMgY29udGVudCB0byBmYWtlc2luay4KICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTQ0MCw4ICs0NDAsOCBAQAogICAgIH0KICAgICBjYXNlIEdTVF9RVUVSWV9TQ0hFRFVMSU5HOnsKICAgICAgIGdzdF9xdWVyeV9zZXRfc2NoZWR1bGluZyAocXVlcnksCi0gICAgICAgICAgR1NUX1NDSEVEVUxJTkdfRkxBR19TRVFVRU5USUFMIHwgR1NUX1NDSEVEVUxJTkdfRkxBR19CQU5EV0lEVEhfTElNSVRFRCwKLSAgICAgICAgICAxLCAtMSwgMCk7CisgICAgICAgICAgR1NUX1NDSEVEVUxJTkdfRkxBR19TRVFVRU5USUFMIHwKKyAgICAgICAgICBHU1RfU0NIRURVTElOR19GTEFHX0JBTkRXSURUSF9MSU1JVEVELCAxLCAtMSwgMCk7CiAgICAgICBnc3RfcXVlcnlfYWRkX3NjaGVkdWxpbmdfbW9kZSAocXVlcnksIEdTVF9QQURfTU9ERV9QVVNIKTsKIAogICAgICAgcmV0ID0gVFJVRTsKQEAgLTU3NSwxMyArNTc1LDE3IEBACiAgIHNyYy0+ZGlzY29udCA9IFRSVUU7CiAKICAgc3JjLT5ydG1wID0gUlRNUF9BbGxvYyAoKTsKKworICBpZiAoIXNyYy0+cnRtcCkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNyYywgIkNvdWxkIG5vdCBhbGxvY2F0ZSBsaWJydG1wJ3MgUlRNUCBjb250ZXh0Iik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCiAgIFJUTVBfSW5pdCAoc3JjLT5ydG1wKTsKICAgaWYgKCFSVE1QX1NldHVwVVJMIChzcmMtPnJ0bXAsIHNyYy0+dXJpKSkgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIFJFU09VUkNFLCBPUEVOX1JFQUQsIChOVUxMKSwKICAgICAgICAgKCJGYWlsZWQgdG8gc2V0dXAgVVJMICclcyciLCBzcmMtPnVyaSkpOwotICAgIFJUTVBfRnJlZSAoc3JjLT5ydG1wKTsKLSAgICBzcmMtPnJ0bXAgPSBOVUxMOwotICAgIHJldHVybiBGQUxTRTsKKyAgICBnb3RvIGVycm9yOwogICB9CiAgIHNyYy0+c2Vla2FibGUgPSAhKHNyYy0+cnRtcC0+TGluay5sRmxhZ3MgJiBSVE1QX0xGX0xJVkUpOwogICBHU1RfSU5GT19PQkpFQ1QgKHNyYywgInNlZWthYmxlICVkIiwgc3JjLT5zZWVrYWJsZSk7CkBAIC01OTEsMTMgKzU5NSwxOCBAQAogICAgIGlmICghUlRNUF9Db25uZWN0IChzcmMtPnJ0bXAsIE5VTEwpKSB7CiAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBSRVNPVVJDRSwgT1BFTl9SRUFELCAoTlVMTCksCiAgICAgICAgICAgKCJDb3VsZCBub3QgY29ubmVjdCB0byBSVE1QIHN0cmVhbSBcIiVzXCIgZm9yIHJlYWRpbmciLCBzcmMtPnVyaSkpOwotICAgICAgUlRNUF9GcmVlIChzcmMtPnJ0bXApOwotICAgICAgc3JjLT5ydG1wID0gTlVMTDsKLSAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICB9CiAKICAgcmV0dXJuIFRSVUU7CisKK2Vycm9yOgorICBpZiAoc3JjLT5ydG1wKSB7CisgICAgUlRNUF9GcmVlIChzcmMtPnJ0bXApOworICAgIHNyYy0+cnRtcCA9IE5VTEw7CisgIH0KKyAgcmV0dXJuIEZBTFNFOwogfQogCiAjdW5kZWYgU1RSMkFWQUwKZGlmZiAtLWdpdCBhL2V4dC9zYmMvTWFrZWZpbGUuaW4gYi9leHQvc2JjL01ha2VmaWxlLmluCmluZGV4IGRhNjcxMjcuLjFmYmNhYjMgMTAwNjQ0Ci0tLSBhL2V4dC9zYmMvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3NiYy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9zY2hyb2VkaW5nZXIvTWFrZWZpbGUuaW4gYi9leHQvc2Nocm9lZGluZ2VyL01ha2VmaWxlLmluCmluZGV4IDlmNGZiYzkuLjZmOTllMzEgMTAwNjQ0Ci0tLSBhL2V4dC9zY2hyb2VkaW5nZXIvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3NjaHJvZWRpbmdlci9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzcsNiArMjc2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTQsNiArMzE1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjIsNyArMzI1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQxLDggKzM0Myw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTksMTYgKzM2MiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTQsNiArMzk4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE5LDYgKzQyNSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMCw2ICs1MjgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMzLDggKzU0Miw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1MCw2ICs1NTcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA3LDE2ICs2MTYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjgsNiArNjc5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3OCw2ICs2OTAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODcsNiArNzAwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNCw3ICs3MzksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9zZGwvTWFrZWZpbGUuaW4gYi9leHQvc2RsL01ha2VmaWxlLmluCmluZGV4IDM4NDI2ZWMuLjlhYTdjOTAgMTAwNjQ0Ci0tLSBhL2V4dC9zZGwvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3NkbC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUuYW0gYi9leHQvc21vb3Roc3RyZWFtaW5nL01ha2VmaWxlLmFtCmluZGV4IDVmMzMxZjMuLjRmYWY5ZGYgMTAwNjQ0Ci0tLSBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUuYW0KKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9NYWtlZmlsZS5hbQpAQCAtNiw3ICs2LDYgQEAKICAgICAtREdTVF9VU0VfVU5TVEFCTEVfQVBJICQoTElCWE1MMl9DRkxBR1MpCiBsaWJnc3RzbW9vdGhzdHJlYW1pbmdfbGFfTElCQUREID0gXAogICAgICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2xpYmdzdGNvZGVjcGFyc2Vycy0kKEdTVF9BUElfVkVSU0lPTikubGEgXAotICAgICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9saWJnc3R1cmlkb3dubG9hZGVyLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAgICAgJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2xpYmdzdGFkYXB0aXZlZGVtdXgtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogICAgICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCiAgICAgLWxnc3R0YWctJChHU1RfQVBJX1ZFUlNJT04pIFwKZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUuaW4gYi9leHQvc21vb3Roc3RyZWFtaW5nL01ha2VmaWxlLmluCmluZGV4IGQxMjY1YmYuLjc3YWJjYWUgMTAwNjQ0Ci0tLSBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xNjUsNyArMTY0LDYgQEAKIExUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQogbGliZ3N0c21vb3Roc3RyZWFtaW5nX2xhX0RFUEVOREVOQ0lFUyA9ICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2xpYmdzdGNvZGVjcGFyc2Vycy0kKEdTVF9BUElfVkVSU0lPTikubGEgXAotCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9saWJnc3R1cmlkb3dubG9hZGVyLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2xpYmdzdGFkYXB0aXZlZGVtdXgtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKQEAgLTI4MSw2ICsyNzksOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxOCw2ICszMTgsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNiw3ICszMjgsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDUsOCArMzQ2LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MywxNiArMzY1LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5OCw2ICs0MDEsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjMsNiArNDI4LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI0LDYgKzUzMSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzcsOCArNTQ1LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU0LDYgKzU2MCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTEsMTYgKzYxOSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3Miw2ICs2ODIsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgyLDYgKzY5Myw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5MSw2ICs3MDMsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI4LDcgKzc0Miw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzc1LDcgKzc4OCw2IEBACiAKIGxpYmdzdHNtb290aHN0cmVhbWluZ19sYV9MSUJBREQgPSBcCiAgICAgJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvbGliZ3N0Y29kZWNwYXJzZXJzLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCi0gICAgJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL2xpYmdzdHVyaWRvd25sb2FkZXItJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKICAgICAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvbGliZ3N0YWRhcHRpdmVkZW11eC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAgICAgJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKICAgICAtbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgXApkaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCmluZGV4IDE5NmNlNDEuLmM5NzVlMTcgMTAwNjQ0Ci0tLSBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZGVtdXguYworKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmMKQEAgLTEyMiw5ICsxMjIsMTAgQEAKIHN0YXRpYyBHc3RDbG9ja1RpbWUgZ3N0X21zc19kZW11eF9nZXRfZHVyYXRpb24gKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCk7CiBzdGF0aWMgdm9pZCBnc3RfbXNzX2RlbXV4X3Jlc2V0IChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpOwogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X21zc19kZW11eF9zdHJlYW1fc2VlayAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwKLSAgICBHc3RDbG9ja1RpbWUgdHMpOwotc3RhdGljIGdib29sZWFuCi1nc3RfbXNzX2RlbXV4X3N0cmVhbV9oYXNfbmV4dF9mcmFnbWVudCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSk7CisgICAgZ2Jvb2xlYW4gZm9yd2FyZCwgR3N0U2Vla0ZsYWdzIGZsYWdzLCBHc3RDbG9ja1RpbWUgdHMsCisgICAgR3N0Q2xvY2tUaW1lICogZmluYWxfdHMpOworc3RhdGljIGdib29sZWFuIGdzdF9tc3NfZGVtdXhfc3RyZWFtX2hhc19uZXh0X2ZyYWdtZW50IChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICoKKyAgICBzdHJlYW0pOwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9tc3NfZGVtdXhfc3RyZWFtX2FkdmFuY2VfZnJhZ21lbnQgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pOwogc3RhdGljIGdib29sZWFuIGdzdF9tc3NfZGVtdXhfc3RyZWFtX3NlbGVjdF9iaXRyYXRlIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICoKQEAgLTMwNCwxMSArMzA1LDEzIEBACiB9CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfbXNzX2RlbXV4X3N0cmVhbV9zZWVrIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLCBHc3RDbG9ja1RpbWUgdHMpCitnc3RfbXNzX2RlbXV4X3N0cmVhbV9zZWVrIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLCBnYm9vbGVhbiBmb3J3YXJkLAorICAgIEdzdFNlZWtGbGFncyBmbGFncywgR3N0Q2xvY2tUaW1lIHRzLCBHc3RDbG9ja1RpbWUgKiBmaW5hbF90cykKIHsKICAgR3N0TXNzRGVtdXhTdHJlYW0gKm1zc3N0cmVhbSA9IChHc3RNc3NEZW11eFN0cmVhbSAqKSBzdHJlYW07CiAKLSAgZ3N0X21zc19zdHJlYW1fc2VlayAobXNzc3RyZWFtLT5tYW5pZmVzdF9zdHJlYW0sIHRzKTsKKyAgZ3N0X21zc19zdHJlYW1fc2VlayAobXNzc3RyZWFtLT5tYW5pZmVzdF9zdHJlYW0sIGZvcndhcmQsIGZsYWdzLCB0cywKKyAgICAgIGZpbmFsX3RzKTsKICAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQogCkBAIC0zNTQsOCArMzU3LDcgQEAKICAgfQogCiAgIGlmICh0bXBsICE9IE5VTEwpIHsKLSAgICBzcmNwYWQgPQotICAgICAgICBHU1RfUEFEX0NBU1QgKGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlIChuYW1lLCB0bXBsKSk7CisgICAgc3JjcGFkID0gR1NUX1BBRF9DQVNUIChnc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlICh0bXBsLCBuYW1lKSk7CiAgICAgZ19mcmVlIChuYW1lKTsKICAgICBnc3Rfb2JqZWN0X3VucmVmICh0bXBsKTsKICAgfQpAQCAtMzY3LDEzICszNjksMzUgQEAKICAgcmV0dXJuIHNyY3BhZDsKIH0KIAorc3RhdGljIHZvaWQKK2dzdF9tc3NfZGVtdXhfYXBwbHlfcHJvdGVjdGlvbl9zeXN0ZW0gKEdzdENhcHMgKiBjYXBzLAorICAgIGNvbnN0IGdjaGFyICogc2VsZWN0ZWRfc3lzdGVtKQoreworICBHc3RTdHJ1Y3R1cmUgKnM7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAoc2VsZWN0ZWRfc3lzdGVtKTsKKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworICBnc3Rfc3RydWN0dXJlX3NldCAocywKKyAgICAgICJvcmlnaW5hbC1tZWRpYS10eXBlIiwgR19UWVBFX1NUUklORywgZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAocyksCisgICAgICBHU1RfUFJPVEVDVElPTl9TWVNURU1fSURfQ0FQU19GSUVMRCwgR19UWVBFX1NUUklORywgc2VsZWN0ZWRfc3lzdGVtLAorICAgICAgTlVMTCk7CisgIGdzdF9zdHJ1Y3R1cmVfc2V0X25hbWUgKHMsICJhcHBsaWNhdGlvbi94LWNlbmMiKTsKKworfQorCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9tc3NfZGVtdXhfc2V0dXBfc3RyZWFtcyAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KQogewogICBHc3RNc3NEZW11eCAqbXNzZGVtdXggPSBHU1RfTVNTX0RFTVVYX0NBU1QgKGRlbXV4KTsKICAgR1NMaXN0ICpzdHJlYW1zID0gZ3N0X21zc19tYW5pZmVzdF9nZXRfc3RyZWFtcyAobXNzZGVtdXgtPm1hbmlmZXN0KTsKLSAgR1NMaXN0ICppdGVyOwogICBHU0xpc3QgKmFjdGl2ZV9zdHJlYW1zID0gTlVMTDsKKyAgR1NMaXN0ICppdGVyOworICBjb25zdCBnY2hhciAqcHJvdGVjdGlvbl9zeXN0ZW1faWQgPQorICAgICAgZ3N0X21zc19tYW5pZmVzdF9nZXRfcHJvdGVjdGlvbl9zeXN0ZW1faWQgKG1zc2RlbXV4LT5tYW5pZmVzdCk7CisgIGNvbnN0IGdjaGFyICpwcm90ZWN0aW9uX2RhdGEgPQorICAgICAgZ3N0X21zc19tYW5pZmVzdF9nZXRfcHJvdGVjdGlvbl9kYXRhIChtc3NkZW11eC0+bWFuaWZlc3QpOworICBnYm9vbGVhbiBwcm90ZWN0ZWQgPSBwcm90ZWN0aW9uX3N5c3RlbV9pZCAmJiBwcm90ZWN0aW9uX2RhdGE7CisgIGNvbnN0IGdjaGFyICpzZWxlY3RlZF9zeXN0ZW0gPSBOVUxMOwogCiAgIGlmIChzdHJlYW1zID09IE5VTEwpIHsKICAgICBHU1RfSU5GT19PQkpFQ1QgKG1zc2RlbXV4LCAiTm8gc3RyZWFtcyBmb3VuZCBpbiB0aGUgbWFuaWZlc3QiKTsKQEAgLTM4Myw3ICs0MDcsMjMgQEAKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KIAorICBpZiAocHJvdGVjdGVkKSB7CisgICAgY29uc3QgZ2NoYXIgKnN5c19pZHNbMl0gPSB7IHByb3RlY3Rpb25fc3lzdGVtX2lkLCBOVUxMIH07CisKKyAgICBzZWxlY3RlZF9zeXN0ZW0gPSBnc3RfcHJvdGVjdGlvbl9zZWxlY3Rfc3lzdGVtIChzeXNfaWRzKTsKKyAgICBpZiAoIXNlbGVjdGVkX3N5c3RlbSkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAobXNzZGVtdXgsICJzdHJlYW0gaXMgcHJvdGVjdGVkLCBidXQgbm8gIgorICAgICAgICAgICJzdWl0YWJsZSBkZWNyeXB0b3IgZWxlbWVudCBoYXMgYmVlbiBmb3VuZCIpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfQorCisgIEdTVF9JTkZPX09CSkVDVCAobXNzZGVtdXgsICJDaGFuZ2luZyBtYXggYml0cmF0ZSB0byAldSIsCisgICAgICBkZW11eC0+Y29ubmVjdGlvbl9zcGVlZCk7CisgIGdzdF9tc3NfbWFuaWZlc3RfY2hhbmdlX2JpdHJhdGUgKG1zc2RlbXV4LT5tYW5pZmVzdCwgZGVtdXgtPmNvbm5lY3Rpb25fc3BlZWQpOworCiAgIEdTVF9JTkZPX09CSkVDVCAobXNzZGVtdXgsICJBY3RpdmF0aW5nIHN0cmVhbXMiKTsKKwogICBmb3IgKGl0ZXIgPSBzdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19zbGlzdF9uZXh0IChpdGVyKSkgewogICAgIEdzdFBhZCAqc3JjcGFkID0gTlVMTDsKICAgICBHc3RNc3NEZW11eFN0cmVhbSAqc3RyZWFtID0gTlVMTDsKQEAgLTQxMyw2ICs0NTMsMTEgQEAKICAgICBjb25zdCBnY2hhciAqbGFuZzsKIAogICAgIGNhcHMgPSBnc3RfbXNzX3N0cmVhbV9nZXRfY2FwcyAoc3RyZWFtLT5tYW5pZmVzdF9zdHJlYW0pOworCisgICAgaWYgKHByb3RlY3RlZCkgeworICAgICAgZ3N0X21zc19kZW11eF9hcHBseV9wcm90ZWN0aW9uX3N5c3RlbSAoY2Fwcywgc2VsZWN0ZWRfc3lzdGVtKTsKKyAgICB9CisKICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3NldF9jYXBzIChHU1RfQURBUFRJVkVfREVNVVhfU1RSRUFNX0NBU1QgKHN0cmVhbSksCiAgICAgICAgIGNyZWF0ZV9tc3NfY2FwcyAoc3RyZWFtLCBjYXBzKSk7CiAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwpAQCAtNDI1LDYgKzQ3MCwyMiBAQAogICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9zZXRfdGFncyAoR1NUX0FEQVBUSVZFX0RFTVVYX1NUUkVBTV9DQVNUCiAgICAgICAgICAgKHN0cmVhbSksIHRhZ3MpOwogICAgIH0KKworICAgIGlmIChwcm90ZWN0ZWQpIHsKKyAgICAgIGdzaXplIHByb3RlY3Rpb25fZGF0YV9sZW47CisgICAgICBndWNoYXIgKmRlY29kZWRfZGF0YSA9CisgICAgICAgICAgZ19iYXNlNjRfZGVjb2RlIChwcm90ZWN0aW9uX2RhdGEsICZwcm90ZWN0aW9uX2RhdGFfbGVuKTsKKyAgICAgIEdzdEJ1ZmZlciAqcHJvdGVjdGlvbl9idWZmZXIgPQorICAgICAgICAgIGdzdF9idWZmZXJfbmV3X3dyYXBwZWQgKGRlY29kZWRfZGF0YSwgcHJvdGVjdGlvbl9kYXRhX2xlbik7CisgICAgICBHc3RFdmVudCAqZXZlbnQgPQorICAgICAgICAgIGdzdF9ldmVudF9uZXdfcHJvdGVjdGlvbiAocHJvdGVjdGlvbl9zeXN0ZW1faWQsIHByb3RlY3Rpb25fYnVmZmVyLAorICAgICAgICAgICJzbW9vdGgtc3RyZWFtaW5nIik7CisKKyAgICAgIEdTVF9MT0dfT0JKRUNUIChzdHJlYW0sICJRdWV1aW5nIFByb3RlY3Rpb24gZXZlbnQgb24gc291cmNlIHBhZCIpOworICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9xdWV1ZV9ldmVudCAoKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKikgc3RyZWFtLAorICAgICAgICAgIGV2ZW50KTsKKyAgICAgIGdzdF9idWZmZXJfdW5yZWYgKHByb3RlY3Rpb25fYnVmZmVyKTsKKyAgICB9CiAgIH0KIAogICBnX3NsaXN0X2ZyZWUgKGFjdGl2ZV9zdHJlYW1zKTsKQEAgLTQ4NSwxMCArNTQ2LDMxIEBACiAgIGlmIChnc3RfbXNzX3N0cmVhbV9zZWxlY3RfYml0cmF0ZSAobXNzc3RyZWFtLT5tYW5pZmVzdF9zdHJlYW0sIGJpdHJhdGUpKSB7CiAgICAgR3N0Q2FwcyAqY2FwczsKICAgICBHc3RDYXBzICptc3NjYXBzOworICAgIEdzdE1zc0RlbXV4ICptc3NkZW11eCA9IEdTVF9NU1NfREVNVVhfQ0FTVCAoc3RyZWFtLT5kZW11eCk7CisgICAgY29uc3QgZ2NoYXIgKnByb3RlY3Rpb25fc3lzdGVtX2lkID0KKyAgICAgICAgZ3N0X21zc19tYW5pZmVzdF9nZXRfcHJvdGVjdGlvbl9zeXN0ZW1faWQgKG1zc2RlbXV4LT5tYW5pZmVzdCk7CisgICAgY29uc3QgZ2NoYXIgKnByb3RlY3Rpb25fZGF0YSA9CisgICAgICAgIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X3Byb3RlY3Rpb25fZGF0YSAobXNzZGVtdXgtPm1hbmlmZXN0KTsKKyAgICBnYm9vbGVhbiBwcm90ZWN0ZWQgPSBwcm90ZWN0aW9uX3N5c3RlbV9pZCAmJiBwcm90ZWN0aW9uX2RhdGE7CisKICAgICBjYXBzID0gZ3N0X21zc19zdHJlYW1fZ2V0X2NhcHMgKG1zc3N0cmVhbS0+bWFuaWZlc3Rfc3RyZWFtKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLAogICAgICAgICAiU3RhcnRpbmcgc3RyZWFtcyByZWNvbmZpZ3VyYXRpb24gZHVlIHRvIGJpdHJhdGUgY2hhbmdlcyIpOworCisgICAgaWYgKHByb3RlY3RlZCkgeworICAgICAgY29uc3QgZ2NoYXIgKnN5c19pZHNbMl0gPSB7IHByb3RlY3Rpb25fc3lzdGVtX2lkLCBOVUxMIH07CisgICAgICBjb25zdCBnY2hhciAqc2VsZWN0ZWRfc3lzdGVtID0gZ3N0X3Byb3RlY3Rpb25fc2VsZWN0X3N5c3RlbSAoc3lzX2lkcyk7CisKKyAgICAgIGlmICghc2VsZWN0ZWRfc3lzdGVtKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG1zc2RlbXV4LCAic3RyZWFtIGlzIHByb3RlY3RlZCwgYnV0IG5vICIKKyAgICAgICAgICAgICJzdWl0YWJsZSBkZWNyeXB0b3IgZWxlbWVudCBoYXMgYmVlbiBmb3VuZCIpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICB9CisKKyAgICAgIGdzdF9tc3NfZGVtdXhfYXBwbHlfcHJvdGVjdGlvbl9zeXN0ZW0gKGNhcHMsIHNlbGVjdGVkX3N5c3RlbSk7CisgICAgfQorCiAgICAgbXNzY2FwcyA9IGNyZWF0ZV9tc3NfY2FwcyAobXNzc3RyZWFtLCBjYXBzKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLApAQCAtNTA1LDYgKzU4NywxMCBAQAogICByZXR1cm4gcmV0OwogfQogCisjZGVmaW5lIFNFRUtfVVBEQVRFU19QTEFZX1BPU0lUSU9OKHIsIHN0YXJ0X3R5cGUsIHN0b3BfdHlwZSkgXAorICAoKHIgPj0gMCAmJiBzdGFydF90eXBlICE9IEdTVF9TRUVLX1RZUEVfTk9ORSkgfHwgXAorICAgKHIgPCAwICYmIHN0b3BfdHlwZSAhPSBHU1RfU0VFS19UWVBFX05PTkUpKQorCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9tc3NfZGVtdXhfc2VlayAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LCBHc3RFdmVudCAqIHNlZWspCiB7CkBAIC01MjIsNyArNjA4LDEyIEBACiAgICAgICAic2VlayBldmVudCwgcmF0ZTogJWYgc3RhcnQ6ICUiIEdTVF9USU1FX0ZPUk1BVCAiIHN0b3A6ICUiCiAgICAgICBHU1RfVElNRV9GT1JNQVQsIHJhdGUsIEdTVF9USU1FX0FSR1MgKHN0YXJ0KSwgR1NUX1RJTUVfQVJHUyAoc3RvcCkpOwogCi0gIGdzdF9tc3NfbWFuaWZlc3Rfc2VlayAobXNzZGVtdXgtPm1hbmlmZXN0LCBzdGFydCk7CisgIGlmIChTRUVLX1VQREFURVNfUExBWV9QT1NJVElPTiAocmF0ZSwgc3RhcnRfdHlwZSwgc3RvcF90eXBlKSkgeworICAgIGlmIChyYXRlID49IDApCisgICAgICBnc3RfbXNzX21hbmlmZXN0X3NlZWsgKG1zc2RlbXV4LT5tYW5pZmVzdCwgcmF0ZSA+PSAwLCBzdGFydCk7CisgICAgZWxzZQorICAgICAgZ3N0X21zc19tYW5pZmVzdF9zZWVrIChtc3NkZW11eC0+bWFuaWZlc3QsIHJhdGUgPj0gMCwgc3RvcCk7CisgIH0KIAogICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZGVtdXguaCBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZGVtdXguaAppbmRleCBjYzVmZjdmLi5mM2VhNmNmIDEwMDY0NAotLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmgKKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5oCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSA8Z3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5oPgogI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGFkYXB0ZXIuaD4KICNpbmNsdWRlIDxnc3QvYmFzZS9nc3RkYXRhcXVldWUuaD4KKyNpbmNsdWRlIDxnc3QvZ3N0cHJvdGVjdGlvbi5oPgogI2luY2x1ZGUgImdzdG1zc21hbmlmZXN0LmgiCi0jaW5jbHVkZSA8Z3N0L3VyaWRvd25sb2FkZXIvZ3N0dXJpZG93bmxvYWRlci5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYwppbmRleCA2NTU5YzJlLi4wMmU1NTljIDEwMDY0NAotLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMKKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jCkBAIC05NSw2ICs5NSw5IEBACiAKICAgZ2Jvb2xlYW4gaXNfbGl2ZTsKIAorICBHU3RyaW5nICpwcm90ZWN0aW9uX3N5c3RlbV9pZDsKKyAgZ2NoYXIgKnByb3RlY3Rpb25fZGF0YTsKKwogICBHU0xpc3QgKnN0cmVhbXM7CiB9OwogCkBAIC0yNjcsNiArMjcwLDQxIEBACiAgIHN0cmVhbS0+cmVnZXhfcG9zaXRpb24gPSBnX3JlZ2V4X25ldyAoIlxce3N0YXJ0WyBfXXRpbWVcXH0iLCAwLCAwLCBOVUxMKTsKIH0KIAorCitzdGF0aWMgdm9pZAorX2dzdF9tc3NfcGFyc2VfcHJvdGVjdGlvbiAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCwKKyAgICB4bWxOb2RlUHRyIHByb3RlY3Rpb25fbm9kZSkKK3sKKyAgeG1sTm9kZVB0ciBub2RlaXRlcjsKKworICBmb3IgKG5vZGVpdGVyID0gcHJvdGVjdGlvbl9ub2RlLT5jaGlsZHJlbjsgbm9kZWl0ZXI7CisgICAgICBub2RlaXRlciA9IG5vZGVpdGVyLT5uZXh0KSB7CisgICAgaWYgKG5vZGVpdGVyLT50eXBlID09IFhNTF9FTEVNRU5UX05PREUKKyAgICAgICAgJiYgKHN0cmNtcCAoKGNvbnN0IGNoYXIgKikgbm9kZWl0ZXItPm5hbWUsICJQcm90ZWN0aW9uSGVhZGVyIikgPT0gMCkpIHsKKyAgICAgIHhtbENoYXIgKnN5c3RlbV9pZF9hdHRyaWJ1dGUgPQorICAgICAgICAgIHhtbEdldFByb3AgKG5vZGVpdGVyLCAoeG1sQ2hhciAqKSAiU3lzdGVtSUQiKTsKKyAgICAgIGdjaGFyICp2YWx1ZSA9IChnY2hhciAqKSBzeXN0ZW1faWRfYXR0cmlidXRlOworICAgICAgaW50IGlkX2xlbiA9IHN0cmxlbiAodmFsdWUpOworICAgICAgR1N0cmluZyAqc3lzdGVtX2lkOworCisgICAgICBpZiAodmFsdWVbMF0gPT0gJ3snKSB7CisgICAgICAgIHZhbHVlKys7CisgICAgICAgIGlkX2xlbi0tOworICAgICAgfQorCisgICAgICBzeXN0ZW1faWQgPSBnX3N0cmluZ19uZXcgKHZhbHVlKTsKKyAgICAgIHN5c3RlbV9pZCA9IGdfc3RyaW5nX2FzY2lpX2Rvd24gKHN5c3RlbV9pZCk7CisgICAgICBpZiAodmFsdWVbaWRfbGVuIC0gMV0gPT0gJ30nKQorICAgICAgICBzeXN0ZW1faWQgPSBnX3N0cmluZ190cnVuY2F0ZSAoc3lzdGVtX2lkLCBpZF9sZW4gLSAxKTsKKworICAgICAgbWFuaWZlc3QtPnByb3RlY3Rpb25fc3lzdGVtX2lkID0gc3lzdGVtX2lkOworICAgICAgbWFuaWZlc3QtPnByb3RlY3Rpb25fZGF0YSA9IChnY2hhciAqKSB4bWxOb2RlR2V0Q29udGVudCAobm9kZWl0ZXIpOworICAgICAgeG1sRnJlZSAoc3lzdGVtX2lkX2F0dHJpYnV0ZSk7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KK30KKwogR3N0TXNzTWFuaWZlc3QgKgogZ3N0X21zc19tYW5pZmVzdF9uZXcgKEdzdEJ1ZmZlciAqIGRhdGEpCiB7CkBAIC0zMDAsNiArMzM4LDExIEBACiAgICAgICBtYW5pZmVzdC0+c3RyZWFtcyA9IGdfc2xpc3RfYXBwZW5kIChtYW5pZmVzdC0+c3RyZWFtcywgc3RyZWFtKTsKICAgICAgIF9nc3RfbXNzX3N0cmVhbV9pbml0IChzdHJlYW0sIG5vZGVpdGVyKTsKICAgICB9CisKKyAgICBpZiAobm9kZWl0ZXItPnR5cGUgPT0gWE1MX0VMRU1FTlRfTk9ERQorICAgICAgICAmJiAoc3RyY21wICgoY29uc3QgY2hhciAqKSBub2RlaXRlci0+bmFtZSwgIlByb3RlY3Rpb24iKSA9PSAwKSkgeworICAgICAgX2dzdF9tc3NfcGFyc2VfcHJvdGVjdGlvbiAobWFuaWZlc3QsIG5vZGVpdGVyKTsKKyAgICB9CiAgIH0KIAogICBnc3RfYnVmZmVyX3VubWFwIChkYXRhLCAmbWFwaW5mbyk7CkBAIC0zMjcsMTAgKzM3MCwyOCBAQAogCiAgIGdfc2xpc3RfZnJlZV9mdWxsIChtYW5pZmVzdC0+c3RyZWFtcywgKEdEZXN0cm95Tm90aWZ5KSBnc3RfbXNzX3N0cmVhbV9mcmVlKTsKIAorICBpZiAobWFuaWZlc3QtPnByb3RlY3Rpb25fc3lzdGVtX2lkICE9IE5VTEwpCisgICAgZ19zdHJpbmdfZnJlZSAobWFuaWZlc3QtPnByb3RlY3Rpb25fc3lzdGVtX2lkLCBUUlVFKTsKKyAgeG1sRnJlZSAobWFuaWZlc3QtPnByb3RlY3Rpb25fZGF0YSk7CisKICAgeG1sRnJlZURvYyAobWFuaWZlc3QtPnhtbCk7CiAgIGdfZnJlZSAobWFuaWZlc3QpOwogfQogCitjb25zdCBnY2hhciAqCitnc3RfbXNzX21hbmlmZXN0X2dldF9wcm90ZWN0aW9uX3N5c3RlbV9pZCAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCkKK3sKKyAgaWYgKG1hbmlmZXN0LT5wcm90ZWN0aW9uX3N5c3RlbV9pZCAhPSBOVUxMKQorICAgIHJldHVybiBtYW5pZmVzdC0+cHJvdGVjdGlvbl9zeXN0ZW1faWQtPnN0cjsKKyAgcmV0dXJuIE5VTEw7Cit9CisKK2NvbnN0IGdjaGFyICoKK2dzdF9tc3NfbWFuaWZlc3RfZ2V0X3Byb3RlY3Rpb25fZGF0YSAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCkKK3sKKyAgcmV0dXJuIG1hbmlmZXN0LT5wcm90ZWN0aW9uX2RhdGE7Cit9CisKIEdTTGlzdCAqCiBnc3RfbXNzX21hbmlmZXN0X2dldF9zdHJlYW1zIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KQogewpAQCAtNjM5LDExICs3MDAsMTMgQEAKICAgZ2NoYXIgKmF1ZGlvdGFnID0gKGdjaGFyICopIHhtbEdldFByb3AgKG5vZGUsICh4bWxDaGFyICopICJBdWRpb1RhZyIpOwogICBnY2hhciAqY2hhbm5lbHNfc3RyID0gKGdjaGFyICopIHhtbEdldFByb3AgKG5vZGUsICh4bWxDaGFyICopICJDaGFubmVscyIpOwogICBnY2hhciAqcmF0ZV9zdHIgPSAoZ2NoYXIgKikgeG1sR2V0UHJvcCAobm9kZSwgKHhtbENoYXIgKikgIlNhbXBsaW5nUmF0ZSIpOworICBnY2hhciAqZGVwdGhfc3RyID0gKGdjaGFyICopIHhtbEdldFByb3AgKG5vZGUsICh4bWxDaGFyICopICJCaXRzUGVyU2FtcGxlIik7CiAgIGdjaGFyICpibG9ja19hbGlnbl9zdHIgPQogICAgICAgKGdjaGFyICopIHhtbEdldFByb3AgKG5vZGUsICh4bWxDaGFyICopICJQYWNrZXRTaXplIik7CiAgIGdjaGFyICpjb2RlY19kYXRhX3N0ciA9CiAgICAgICAoZ2NoYXIgKikgeG1sR2V0UHJvcCAobm9kZSwgKHhtbENoYXIgKikgIkNvZGVjUHJpdmF0ZURhdGEiKTsKICAgR3N0QnVmZmVyICpjb2RlY19kYXRhID0gTlVMTDsKKyAgZ2ludCBkZXB0aCA9IDA7CiAgIGdpbnQgYmxvY2tfYWxpZ24gPSAwOwogICBnaW50IHJhdGUgPSAwOwogICBnaW50IGNoYW5uZWxzID0gMDsKQEAgLTY3MSw2ICs3MzQsOCBAQAogICAgIHJhdGUgPSAoZ2ludCkgZ19hc2NpaV9zdHJ0b3VsbCAocmF0ZV9zdHIsIE5VTEwsIDEwKTsKICAgaWYgKGNoYW5uZWxzX3N0cikKICAgICBjaGFubmVscyA9IChpbnQpIGdfYXNjaWlfc3RydG91bGwgKGNoYW5uZWxzX3N0ciwgTlVMTCwgMTApOworICBpZiAoZGVwdGhfc3RyKQorICAgIGRlcHRoID0gKGdpbnQpIGdfYXNjaWlfc3RydG91bGwgKGRlcHRoX3N0ciwgTlVMTCwgMTApOwogICBpZiAoYmxvY2tfYWxpZ25fc3RyKQogICAgIGJsb2NrX2FsaWduID0gKGludCkgZ19hc2NpaV9zdHJ0b3VsbCAoYmxvY2tfYWxpZ25fc3RyLCBOVUxMLCAxMCk7CiAKQEAgLTY5Nyw2ICs3NjIsOSBAQAogICAgICAgICBpZiAoIWJsb2NrX2FsaWduKSB7CiAgICAgICAgICAgYmxvY2tfYWxpZ24gPSBHU1RfUkVBRF9VSU5UMTZfTEUgKG1hcGluZm8uZGF0YSArIDEyKTsKICAgICAgICAgfQorICAgICAgICBpZiAoIWRlcHRoKSB7CisgICAgICAgICAgZGVwdGggPSBHU1RfUkVBRF9VSU5UMTZfTEUgKG1hcGluZm8uZGF0YSArIDE0KTsKKyAgICAgICAgfQogICAgICAgICBnc3RfYnVmZmVyX3VubWFwIChjb2RlY19kYXRhLCAmbWFwaW5mbyk7CiAKICAgICAgICAgLyogQ29uc3VtZSBhbGwgdGhlIFdBVkVGT1JNQVRFWCBzdHJ1Y3R1cmUsIGFuZCBwYXNzIG9ubHkgdGhlIHJlc3Qgb2YKQEAgLTcyMyw2ICs3OTEsOSBAQAogICBpZiAocmF0ZSkKICAgICBnc3Rfc3RydWN0dXJlX3NldCAoc3RydWN0dXJlLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHJhdGUsIE5VTEwpOwogCisgIGlmIChkZXB0aCkKKyAgICBnc3Rfc3RydWN0dXJlX3NldCAoc3RydWN0dXJlLCAiZGVwdGgiLCBHX1RZUEVfSU5ULCBkZXB0aCwgTlVMTCk7CisKICAgaWYgKHEtPmJpdHJhdGUpCiAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHN0cnVjdHVyZSwgImJpdHJhdGUiLCBHX1RZUEVfSU5ULCAoaW50KSBxLT5iaXRyYXRlLAogICAgICAgICBOVUxMKTsKQEAgLTczOCw2ICs4MDksNyBAQAogICB4bWxGcmVlIChhdWRpb3RhZyk7CiAgIHhtbEZyZWUgKGNoYW5uZWxzX3N0cik7CiAgIHhtbEZyZWUgKHJhdGVfc3RyKTsKKyAgeG1sRnJlZSAoZGVwdGhfc3RyKTsKICAgeG1sRnJlZSAoYmxvY2tfYWxpZ25fc3RyKTsKICAgeG1sRnJlZSAoY29kZWNfZGF0YV9zdHIpOwogCkBAIC05MTUsNyArOTg3LDkgQEAKICAgICB0aW1lID0gZnJhZ21lbnQtPnRpbWUgKyAoZnJhZ21lbnQtPmR1cmF0aW9uICogZnJhZ21lbnQtPnJlcGV0aXRpb25zKTsKICAgfSBlbHNlIHsKICAgICBmcmFnbWVudCA9IHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudC0+ZGF0YTsKLSAgICB0aW1lID0gZnJhZ21lbnQtPnRpbWUgKyAoZnJhZ21lbnQtPmR1cmF0aW9uICogc3RyZWFtLT5mcmFnbWVudF9yZXBldGl0aW9uX2luZGV4KTsKKyAgICB0aW1lID0KKyAgICAgICAgZnJhZ21lbnQtPnRpbWUgKworICAgICAgICAoZnJhZ21lbnQtPmR1cmF0aW9uICogc3RyZWFtLT5mcmFnbWVudF9yZXBldGl0aW9uX2luZGV4KTsKICAgfQogCiAgIHRpbWVzY2FsZSA9IGdzdF9tc3Nfc3RyZWFtX2dldF90aW1lc2NhbGUgKHN0cmVhbSk7CkBAIC0xMDE1LDI1ICsxMDg5LDMyIEBACiAvKioKICAqIFNlZWtzIGFsbCBzdHJlYW1zIHRvIHRoZSBmcmFnbWVudCB0aGF0IGNvbnRhaW5zIHRoZSBzZXQgdGltZQogICoKKyAqIEBmb3J3YXJkOiBpZiB0aGlzIGlzIGZvcndhcmQgcGxheWJhY2sKICAqIEB0aW1lOiB0aW1lIGluIG5hbm9zZWNvbmRzCiAgKi8KIHZvaWQKLWdzdF9tc3NfbWFuaWZlc3Rfc2VlayAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCwgZ3VpbnQ2NCB0aW1lKQorZ3N0X21zc19tYW5pZmVzdF9zZWVrIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0LCBnYm9vbGVhbiBmb3J3YXJkLAorICAgIGd1aW50NjQgdGltZSkKIHsKICAgR1NMaXN0ICppdGVyOwogCiAgIGZvciAoaXRlciA9IG1hbmlmZXN0LT5zdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19zbGlzdF9uZXh0IChpdGVyKSkgewotICAgIGdzdF9tc3Nfc3RyZWFtX3NlZWsgKGl0ZXItPmRhdGEsIHRpbWUpOworICAgIGdzdF9tc3Nfc3RyZWFtX3NlZWsgKGl0ZXItPmRhdGEsIGZvcndhcmQsIDAsIHRpbWUsIE5VTEwpOwogICB9CiB9CiAKKyNkZWZpbmUgU05BUF9BRlRFUihmb3J3YXJkLGZsYWdzKSBcCisgICAgKChmb3J3YXJkICYmIChmbGFncyAmIEdTVF9TRUVLX0ZMQUdfU05BUF9BRlRFUikpIHx8IFwKKyAgICAoIWZvcndhcmQgJiYgKGZsYWdzICYgR1NUX1NFRUtfRkxBR19TTkFQX0JFRk9SRSkpKQorCiAvKioKICAqIFNlZWtzIHRoaXMgc3RyZWFtIHRvIHRoZSBmcmFnbWVudCB0aGF0IGNvbnRhaW5zIHRoZSBzYW1wbGUgYXQgdGltZQogICoKICAqIEB0aW1lOiB0aW1lIGluIG5hbm9zZWNvbmRzCiAgKi8KIHZvaWQKLWdzdF9tc3Nfc3RyZWFtX3NlZWsgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwgZ3VpbnQ2NCB0aW1lKQorZ3N0X21zc19zdHJlYW1fc2VlayAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBnYm9vbGVhbiBmb3J3YXJkLAorICAgIEdzdFNlZWtGbGFncyBmbGFncywgZ3VpbnQ2NCB0aW1lLCBndWludDY0ICogZmluYWxfdGltZSkKIHsKICAgR0xpc3QgKml0ZXI7CiAgIGd1aW50NjQgdGltZXNjYWxlOwpAQCAtMTA0MywzNyArMTEyNCw2MCBAQAogICB0aW1lID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlX3JvdW5kICh0aW1lLCB0aW1lc2NhbGUsIEdTVF9TRUNPTkQpOwogCiAgIEdTVF9ERUJVRyAoIlN0cmVhbSAlcyBzZWVraW5nIHRvICUiIEdfR1VJTlQ2NF9GT1JNQVQsIHN0cmVhbS0+dXJsLCB0aW1lKTsKLQogICBmb3IgKGl0ZXIgPSBzdHJlYW0tPmZyYWdtZW50czsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0IChpdGVyKSkgewotICAgIEdMaXN0ICpuZXh0ID0gZ19saXN0X25leHQgKGl0ZXIpOwotICAgIGlmIChuZXh0KSB7Ci0gICAgICBmcmFnbWVudCA9IG5leHQtPmRhdGE7CisgICAgZnJhZ21lbnQgPSBpdGVyLT5kYXRhOworICAgIGlmIChmcmFnbWVudC0+dGltZSArIGZyYWdtZW50LT5yZXBldGl0aW9ucyAqIGZyYWdtZW50LT5kdXJhdGlvbiA+IHRpbWUpIHsKKyAgICAgIHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudCA9IGl0ZXI7CisgICAgICBzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXggPQorICAgICAgICAgICh0aW1lIC0gZnJhZ21lbnQtPnRpbWUpIC8gZnJhZ21lbnQtPmR1cmF0aW9uOworICAgICAgaWYgKCgodGltZSAtIGZyYWdtZW50LT50aW1lKSAlIGZyYWdtZW50LT5kdXJhdGlvbikgPT0gMCkgewogCi0gICAgICBpZiAoZnJhZ21lbnQtPnRpbWUgPiB0aW1lKSB7Ci0gICAgICAgIHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudCA9IGl0ZXI7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAvKiBmb3IgcmV2ZXJzZSBwbGF5YmFjaywgc3RhcnQgZnJvbSB0aGUgcHJldmlvdXMgZnJhZ21lbnQgd2hlbiB3ZSBhcmUKKyAgICAgICAgICogZXhhY3RseSBhdCBhIGxpbWl0ICovCisgICAgICAgIGlmICghZm9yd2FyZCkKKyAgICAgICAgICBzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXgtLTsKKyAgICAgIH0gZWxzZSBpZiAoU05BUF9BRlRFUiAoZm9yd2FyZCwgZmxhZ3MpKQorICAgICAgICBzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXgrKzsKKworICAgICAgaWYgKHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCA9PSBmcmFnbWVudC0+cmVwZXRpdGlvbnMpIHsKKyAgICAgICAgLyogbW92ZSB0byB0aGUgbmV4dCBvbmUgKi8KKyAgICAgICAgc3RyZWFtLT5mcmFnbWVudF9yZXBldGl0aW9uX2luZGV4ID0gMDsKKyAgICAgICAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID0gZ19saXN0X25leHQgKGl0ZXIpOworICAgICAgICBmcmFnbWVudCA9CisgICAgICAgICAgICBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQgPyBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQtPmRhdGEgOiBOVUxMOworCisgICAgICB9IGVsc2UgaWYgKHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCA9PSAtMSkgeworICAgICAgICBpZiAoZ19saXN0X3ByZXZpb3VzIChpdGVyKSkgeworICAgICAgICAgIHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudCA9IGdfbGlzdF9wcmV2aW91cyAoaXRlcik7CisgICAgICAgICAgZnJhZ21lbnQgPSBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQtPmRhdGE7CisgICAgICAgICAgZ19hc3NlcnQgKGZyYWdtZW50KTsKKyAgICAgICAgICBzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXggPSBmcmFnbWVudC0+cmVwZXRpdGlvbnMgLSAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCA9IDA7CisgICAgICAgIH0KICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgZnJhZ21lbnQgPSBpdGVyLT5kYXRhOwotICAgICAgaWYgKGZyYWdtZW50LT50aW1lICsgZnJhZ21lbnQtPnJlcGV0aXRpb25zICogZnJhZ21lbnQtPmR1cmF0aW9uID4gdGltZSkgewotICAgICAgICBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQgPSBpdGVyOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID0gTlVMTDsgICAgICAgIC8qIEVPUyAqLwotICAgICAgfQorCiAgICAgICBicmVhazsKICAgICB9Ci0gIH0KIAotICAvKiBwb3NpdGlvbiBpbnNpZGUgdGhlIHJlcGV0aXRpb25zICovCi0gIGlmIChzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQpIHsKLSAgICBmcmFnbWVudCA9IHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudC0+ZGF0YTsKLSAgICBzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXggPQotICAgICAgICAodGltZSAtIGZyYWdtZW50LT50aW1lKSAvIGZyYWdtZW50LT5kdXJhdGlvbjsKICAgfQogCiAgIEdTVF9ERUJVRyAoIlN0cmVhbSAlcyBzZWVrZWQgdG8gZnJhZ21lbnQgdGltZSAlIiBHX0dVSU5UNjRfRk9STUFUCi0gICAgICAiIHJlcGV0aXRpb24gJXUiLCBzdHJlYW0tPnVybCwgZnJhZ21lbnQtPnRpbWUsCisgICAgICAiIHJlcGV0aXRpb24gJXUiLCBzdHJlYW0tPnVybCwKKyAgICAgIGZyYWdtZW50ID8gZnJhZ21lbnQtPnRpbWUgOiBHU1RfQ0xPQ0tfVElNRV9OT05FLAogICAgICAgc3RyZWFtLT5mcmFnbWVudF9yZXBldGl0aW9uX2luZGV4KTsKKyAgaWYgKGZpbmFsX3RpbWUpIHsKKyAgICBpZiAoZnJhZ21lbnQpIHsKKyAgICAgICpmaW5hbF90aW1lID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlX3JvdW5kIChmcmFnbWVudC0+dGltZSArCisgICAgICAgICAgc3RyZWFtLT5mcmFnbWVudF9yZXBldGl0aW9uX2luZGV4ICogZnJhZ21lbnQtPmR1cmF0aW9uLAorICAgICAgICAgIEdTVF9TRUNPTkQsIHRpbWVzY2FsZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIEdzdE1zc1N0cmVhbUZyYWdtZW50ICpsYXN0X2ZyYWdtZW50ID0gZ19saXN0X2xhc3QgKGl0ZXIpLT5kYXRhOworICAgICAgKmZpbmFsX3RpbWUgPSBnc3RfdXRpbF91aW50NjRfc2NhbGVfcm91bmQgKGxhc3RfZnJhZ21lbnQtPnRpbWUgKworICAgICAgICAgIGxhc3RfZnJhZ21lbnQtPnJlcGV0aXRpb25zICogbGFzdF9mcmFnbWVudC0+ZHVyYXRpb24sCisgICAgICAgICAgR1NUX1NFQ09ORCwgdGltZXNjYWxlKTsKKyAgICB9CisgIH0KIH0KIAogZ3VpbnQ2NApAQCAtMTEyNiw3ICsxMjMwLDkgQEAKICAgICBnX2xpc3RfZnJlZV9mdWxsIChzdHJlYW0tPmZyYWdtZW50cywgZ19mcmVlKTsKICAgICBzdHJlYW0tPmZyYWdtZW50cyA9IGdfbGlzdF9yZXZlcnNlIChidWlsZGVyLmZyYWdtZW50cyk7CiAgICAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID0gc3RyZWFtLT5mcmFnbWVudHM7Ci0gICAgZ3N0X21zc19zdHJlYW1fc2VlayAoc3RyZWFtLCBjdXJyZW50X2dzdF90aW1lKTsKKyAgICAvKiBUT0RPIFZlcmlmeSBob3cgcmVwb3NpdGlvbmluZyBoZXJlIHdvcmtzIGZvciByZXZlcnNlCisgICAgICogcGxheWJhY2sgLSBpdCBtaWdodCBzdGFydCBmcm9tIHRoZSB3cm9uZyBmcmFnbWVudCAqLworICAgIGdzdF9tc3Nfc3RyZWFtX3NlZWsgKHN0cmVhbSwgVFJVRSwgMCwgY3VycmVudF9nc3RfdGltZSwgTlVMTCk7CiAgIH0KIH0KIApAQCAtMTE1Niw4ICsxMjYyLDYgQEAKICAgeG1sTm9kZVB0ciByb290OwogICBHc3RNYXBJbmZvIGluZm87CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAobWFuaWZlc3QtPmlzX2xpdmUpOwotCiAgIGdzdF9idWZmZXJfbWFwIChkYXRhLCAmaW5mbywgR1NUX01BUF9SRUFEKTsKIAogICB4bWwgPSB4bWxSZWFkTWVtb3J5ICgoY29uc3QgZ2NoYXIgKikgaW5mby5kYXRhLApkaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5oIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5oCmluZGV4IDM2NGY2ZDEuLmFmNzQxOWMgMTAwNjQ0Ci0tLSBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaAorKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmgKQEAgLTQ0LDcgKzQ0LDcgQEAKIGd1aW50NjQgZ3N0X21zc19tYW5pZmVzdF9nZXRfdGltZXNjYWxlIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KTsKIGd1aW50NjQgZ3N0X21zc19tYW5pZmVzdF9nZXRfZHVyYXRpb24gKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QpOwogR3N0Q2xvY2tUaW1lIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2dzdF9kdXJhdGlvbiAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCk7Ci12b2lkIGdzdF9tc3NfbWFuaWZlc3Rfc2VlayAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCwgZ3VpbnQ2NCB0aW1lKTsKK3ZvaWQgZ3N0X21zc19tYW5pZmVzdF9zZWVrIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0LCBnYm9vbGVhbiBmb3J3YXJkLCBndWludDY0IHRpbWUpOwogZ2Jvb2xlYW4gZ3N0X21zc19tYW5pZmVzdF9jaGFuZ2VfYml0cmF0ZSAoR3N0TXNzTWFuaWZlc3QgKm1hbmlmZXN0LCBndWludDY0IGJpdHJhdGUpOwogZ3VpbnQ2NCBnc3RfbXNzX21hbmlmZXN0X2dldF9jdXJyZW50X2JpdHJhdGUgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QpOwogZ2Jvb2xlYW4gZ3N0X21zc19tYW5pZmVzdF9pc19saXZlIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KTsKQEAgLTUyLDYgKzUyLDggQEAKIGdpbnQgZ3N0X21zc19tYW5pZmVzdF9nZXRfbG9va19haGVhZF9mcmFnbWVudHNfY291bnQgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QpOwogdm9pZCBnc3RfbXNzX21hbmlmZXN0X3JlbG9hZF9mcmFnbWVudHMgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QsIEdzdEJ1ZmZlciAqIGRhdGEpOwogR3N0Q2xvY2tUaW1lIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X21pbl9mcmFnbWVudF9kdXJhdGlvbiAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCk7Citjb25zdCBnY2hhciAqIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X3Byb3RlY3Rpb25fc3lzdGVtX2lkIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KTsKK2NvbnN0IGdjaGFyICogZ3N0X21zc19tYW5pZmVzdF9nZXRfcHJvdGVjdGlvbl9kYXRhIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KTsKIAogR3N0TXNzU3RyZWFtVHlwZSBnc3RfbXNzX3N0cmVhbV9nZXRfdHlwZSAoR3N0TXNzU3RyZWFtICpzdHJlYW0pOwogR3N0Q2FwcyAqIGdzdF9tc3Nfc3RyZWFtX2dldF9jYXBzIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pOwpAQCAtNjUsNyArNjcsNyBAQAogZ2Jvb2xlYW4gZ3N0X21zc19zdHJlYW1faGFzX25leHRfZnJhZ21lbnQgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSk7CiBHc3RGbG93UmV0dXJuIGdzdF9tc3Nfc3RyZWFtX2FkdmFuY2VfZnJhZ21lbnQgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSk7CiBHc3RGbG93UmV0dXJuIGdzdF9tc3Nfc3RyZWFtX3JlZ3Jlc3NfZnJhZ21lbnQgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSk7Ci12b2lkIGdzdF9tc3Nfc3RyZWFtX3NlZWsgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwgZ3VpbnQ2NCB0aW1lKTsKK3ZvaWQgZ3N0X21zc19zdHJlYW1fc2VlayAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBnYm9vbGVhbiBmb3J3YXJkLCBHc3RTZWVrRmxhZ3MgZmxhZ3MsIGd1aW50NjQgdGltZSwgZ3VpbnQ2NCAqIGZpbmFsX3RpbWUpOwogY29uc3QgZ2NoYXIgKiBnc3RfbXNzX3N0cmVhbV9nZXRfbGFuZyAoR3N0TXNzU3RyZWFtICogc3RyZWFtKTsKIAogY29uc3QgZ2NoYXIgKiBnc3RfbXNzX3N0cmVhbV90eXBlX25hbWUgKEdzdE1zc1N0cmVhbVR5cGUgc3RyZWFtdHlwZSk7CmRpZmYgLS1naXQgYS9leHQvc25kZmlsZS9NYWtlZmlsZS5pbiBiL2V4dC9zbmRmaWxlL01ha2VmaWxlLmluCmluZGV4IGE2MzAwOTcuLjBhNDI2NjAgMTAwNjQ0Ci0tLSBhL2V4dC9zbmRmaWxlL01ha2VmaWxlLmluCisrKyBiL2V4dC9zbmRmaWxlL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L3NuZGZpbGUvZ3N0c2ZkZWMuYyBiL2V4dC9zbmRmaWxlL2dzdHNmZGVjLmMKaW5kZXggYjY3YTc0My4uZDg1NGRiYSAxMDA2NDQKLS0tIGEvZXh0L3NuZGZpbGUvZ3N0c2ZkZWMuYworKysgYi9leHQvc25kZmlsZS9nc3RzZmRlYy5jCkBAIC0yMDYsNyArMjA2LDcgQEAKIAogICAvKiBGSVhNRTogd2Ugc2hvdWxkIGJlIHVzaW5nIEdzdFNlZ21lbnQgZm9yIGFsbCB0aGlzICovCiAgIGlmIChjdXJfdHlwZSAhPSBHU1RfU0VFS19UWVBFX1NFVCB8fCBzdG9wX3R5cGUgIT0gR1NUX1NFRUtfVFlQRV9OT05FKQotICAgIGdvdG8gdW5zdXBvcnRlZF90eXBlOworICAgIGdvdG8gdW5zdXBwb3J0ZWRfdHlwZTsKIAogICBpZiAoc3RvcF90eXBlID09IEdTVF9TRUVLX1RZUEVfTk9ORSkKICAgICBzdG9wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKQEAgLTI3MCw3ICsyNzAsNyBAQAogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJzZWVraW5nIGlzIG9ubHkgc3VwcG9ydGVkIGluIFRJTUUgZm9ybWF0Iik7CiAgICAgcmV0dXJuIEZBTFNFOwogICB9Ci11bnN1cG9ydGVkX3R5cGU6Cit1bnN1cHBvcnRlZF90eXBlOgogICB7CiAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInVuc3VwcG9ydGVkIHNlZWsgdHlwZSIpOwogICAgIHJldHVybiBGQUxTRTsKZGlmZiAtLWdpdCBhL2V4dC9zbmRpby9NYWtlZmlsZS5pbiBiL2V4dC9zbmRpby9NYWtlZmlsZS5pbgppbmRleCBiZWRjZDhkLi41ZTg5Yzc2IDEwMDY0NAotLS0gYS9leHQvc25kaW8vTWFrZWZpbGUuaW4KKysrIGIvZXh0L3NuZGlvL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L3NuZGlvL3NuZGlvc2luay5jIGIvZXh0L3NuZGlvL3NuZGlvc2luay5jCmluZGV4IGQyNjgwYTUuLjFlYWI4MDAgMTAwNjQ0Ci0tLSBhL2V4dC9zbmRpby9zbmRpb3NpbmsuYworKysgYi9leHQvc25kaW8vc25kaW9zaW5rLmMKQEAgLTI1LDcgKzI1LDcgQEAKICAqIDxwYXJhPgogICogU2ltcGxlIGV4YW1wbGUgcGlwZWxpbmUgdGhhdCBwbGF5cyBhbiBPZ2cvVm9yYmlzIGZpbGUgdmlhIHNuZGlvOgogICogPHByb2dyYW1saXN0aW5nPgotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPWZvby5vZ2cgISBkZWNvZGViaW4gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgc25kaW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPWZvby5vZ2cgISBkZWNvZGViaW4gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgc25kaW9zaW5rCiAgKiA8L3Byb2dyYW1saXN0aW5nPgogICogPC9wYXJhPgogICogPC9yZWZzZWN0Mj4KZGlmZiAtLWdpdCBhL2V4dC9zbmRpby9zbmRpb3NyYy5jIGIvZXh0L3NuZGlvL3NuZGlvc3JjLmMKaW5kZXggMTk3NzZjMi4uNjgwMGM3ZCAxMDA2NDQKLS0tIGEvZXh0L3NuZGlvL3NuZGlvc3JjLmMKKysrIGIvZXh0L3NuZGlvL3NuZGlvc3JjLmMKQEAgLTI1LDcgKzI1LDcgQEAKICAqIDxwYXJhPgogICogU2ltcGxlIGV4YW1wbGUgcGlwZWxpbmUgdGhhdCByZWNvcmRzIGFuIE9nZy9Wb3JiaXMgZmlsZSB2aWEgc25kaW86CiAgKiA8cHJvZ3JhbWxpc3Rpbmc+Ci0gKiBnc3QtbGF1bmNoIC12IHNuZGlvc3JjICEgYXVkaW9jb252ZXJ0ICEgdm9yYmlzZW5jICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249Zm9vLm9nZyAKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHNuZGlvc3JjICEgYXVkaW9jb252ZXJ0ICEgdm9yYmlzZW5jICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249Zm9vLm9nZwogICogPC9wcm9ncmFtbGlzdGluZz4KICAqIDwvcGFyYT4KICAqIDwvcmVmc2VjdDI+CmRpZmYgLS1naXQgYS9leHQvc291bmR0b3VjaC9NYWtlZmlsZS5pbiBiL2V4dC9zb3VuZHRvdWNoL01ha2VmaWxlLmluCmluZGV4IDdjMmEwMTguLmNmYTFiMDkgMTAwNjQ0Ci0tLSBhL2V4dC9zb3VuZHRvdWNoL01ha2VmaWxlLmluCisrKyBiL2V4dC9zb3VuZHRvdWNoL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI5NSw2ICsyOTQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMzMiw2ICszMzMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTM0MCw3ICszNDMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNTksOCArMzYxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM3NywxNiArMzgwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQxMiw2ICs0MTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MzcsNiArNDQzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTM4LDYgKzU0Niw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NTEsOCArNTYwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTY4LDYgKzU3NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MjUsMTYgKzYzNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY4Niw2ICs2OTcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjk2LDYgKzcwOCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcwNSw2ICs3MTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzQyLDcgKzc1Nyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L3NwYW5kc3AvTWFrZWZpbGUuYW0gYi9leHQvc3BhbmRzcC9NYWtlZmlsZS5hbQppbmRleCA5NWFiM2Q5Li40MDUwNjhlIDEwMDY0NAotLS0gYS9leHQvc3BhbmRzcC9NYWtlZmlsZS5hbQorKysgYi9leHQvc3BhbmRzcC9NYWtlZmlsZS5hbQpAQCAtMSwxMCArMSwxMCBAQAogcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0c3BhbmRzcC5sYQogCi1saWJnc3RzcGFuZHNwX2xhX1NPVVJDRVMgPSBnc3RzcGFuZHNwLmMgZ3N0c3BhbnBsYy5jIGdzdGR0bWZkZXRlY3QuYworbGliZ3N0c3BhbmRzcF9sYV9TT1VSQ0VTID0gZ3N0c3BhbmRzcC5jIGdzdHNwYW5wbGMuYyBnc3RkdG1mZGV0ZWN0LmMgZ3N0dG9uZWdlbmVyYXRlc3JjLmMKIGxpYmdzdHNwYW5kc3BfbGFfQ0ZMQUdTID0gJChHU1RfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKFNQQU5EU1BfQ0ZMQUdTKQogbGliZ3N0c3BhbmRzcF9sYV9MSUJBREQgPSAkKFNQQU5EU1BfTElCUykgJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKIAkgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKQogbGliZ3N0c3BhbmRzcF9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCiBsaWJnc3RzcGFuZHNwX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiAKLW5vaW5zdF9IRUFERVJTID0gZ3N0c3BhbnBsYy5oIGdzdGR0bWZkZXRlY3QuaAorbm9pbnN0X0hFQURFUlMgPSBnc3RzcGFucGxjLmggZ3N0ZHRtZmRldGVjdC5oIGdzdHRvbmVnZW5lcmF0ZXNyYy5oCmRpZmYgLS1naXQgYS9leHQvc3BhbmRzcC9NYWtlZmlsZS5pbiBiL2V4dC9zcGFuZHNwL01ha2VmaWxlLmluCmluZGV4IGExMmYyNjMuLjI5MjRiNjEgMTAwNjQ0Ci0tLSBhL2V4dC9zcGFuZHNwL01ha2VmaWxlLmluCisrKyBiL2V4dC9zcGFuZHNwL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE2OSw3ICsxNjgsOCBAQAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKQogYW1fbGliZ3N0c3BhbmRzcF9sYV9PQkpFQ1RTID0gbGliZ3N0c3BhbmRzcF9sYS1nc3RzcGFuZHNwLmxvIFwKIAlsaWJnc3RzcGFuZHNwX2xhLWdzdHNwYW5wbGMubG8gXAotCWxpYmdzdHNwYW5kc3BfbGEtZ3N0ZHRtZmRldGVjdC5sbworCWxpYmdzdHNwYW5kc3BfbGEtZ3N0ZHRtZmRldGVjdC5sbyBcCisJbGliZ3N0c3BhbmRzcF9sYS1nc3R0b25lZ2VuZXJhdGVzcmMubG8KIGxpYmdzdHNwYW5kc3BfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0c3BhbmRzcF9sYV9PQkpFQ1RTKQogQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQogYW1fX3ZfbHRfID0gJChhbV9fdl9sdF9AQU1fREVGQVVMVF9WQCkKQEAgLTI3Nyw2ICsyNzcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNCw2ICszMTYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMiw3ICszMjYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDEsOCArMzQ0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OSwxNiArMzYzLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NCw2ICszOTksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTksNiArNDI2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIwLDYgKzUyOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzMsOCArNTQzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUwLDYgKzU1OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDcsMTYgKzYxNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OCw2ICs2ODAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc4LDYgKzY5MSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Nyw2ICs3MDEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI0LDcgKzc0MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzY1LDE0ICs3ODAsMTQgQEAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACiBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RzcGFuZHNwLmxhCi1saWJnc3RzcGFuZHNwX2xhX1NPVVJDRVMgPSBnc3RzcGFuZHNwLmMgZ3N0c3BhbnBsYy5jIGdzdGR0bWZkZXRlY3QuYworbGliZ3N0c3BhbmRzcF9sYV9TT1VSQ0VTID0gZ3N0c3BhbmRzcC5jIGdzdHNwYW5wbGMuYyBnc3RkdG1mZGV0ZWN0LmMgZ3N0dG9uZWdlbmVyYXRlc3JjLmMKIGxpYmdzdHNwYW5kc3BfbGFfQ0ZMQUdTID0gJChHU1RfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKFNQQU5EU1BfQ0ZMQUdTKQogbGliZ3N0c3BhbmRzcF9sYV9MSUJBREQgPSAkKFNQQU5EU1BfTElCUykgJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKIAkgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKQogCiBsaWJnc3RzcGFuZHNwX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdHNwYW5kc3BfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKLW5vaW5zdF9IRUFERVJTID0gZ3N0c3BhbnBsYy5oIGdzdGR0bWZkZXRlY3QuaAorbm9pbnN0X0hFQURFUlMgPSBnc3RzcGFucGxjLmggZ3N0ZHRtZmRldGVjdC5oIGdzdHRvbmVnZW5lcmF0ZXNyYy5oCiBhbGw6IGFsbC1hbQogCiAuU1VGRklYRVM6CkBAIC04NTQsNiArODY5LDcgQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RzcGFuZHNwX2xhLWdzdGR0bWZkZXRlY3QuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RzcGFuZHNwX2xhLWdzdHNwYW5kc3AuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RzcGFuZHNwX2xhLWdzdHNwYW5wbGMuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RzcGFuZHNwX2xhLWdzdHRvbmVnZW5lcmF0ZXNyYy5QbG9AYW1fX3F1b3RlQAogCiAuYy5vOgogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XApAQCAtOTAwLDYgKzkxNiwxMyBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHNwYW5kc3BfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0c3BhbmRzcF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RzcGFuZHNwX2xhLWdzdGR0bWZkZXRlY3QubG8gYHRlc3QgLWYgJ2dzdGR0bWZkZXRlY3QuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0ZHRtZmRldGVjdC5jCiAKK2xpYmdzdHNwYW5kc3BfbGEtZ3N0dG9uZWdlbmVyYXRlc3JjLmxvOiBnc3R0b25lZ2VuZXJhdGVzcmMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHNwYW5kc3BfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0c3BhbmRzcF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0c3BhbmRzcF9sYS1nc3R0b25lZ2VuZXJhdGVzcmMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHNwYW5kc3BfbGEtZ3N0dG9uZWdlbmVyYXRlc3JjLlRwbyAtYyAtbyBsaWJnc3RzcGFuZHNwX2xhLWdzdHRvbmVnZW5lcmF0ZXNyYy5sbyBgdGVzdCAtZiAnZ3N0dG9uZWdlbmVyYXRlc3JjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHRvbmVnZW5lcmF0ZXNyYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RzcGFuZHNwX2xhLWdzdHRvbmVnZW5lcmF0ZXNyYy5UcG8gJChERVBESVIpL2xpYmdzdHNwYW5kc3BfbGEtZ3N0dG9uZWdlbmVyYXRlc3JjLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHRvbmVnZW5lcmF0ZXNyYy5jJyBvYmplY3Q9J2xpYmdzdHNwYW5kc3BfbGEtZ3N0dG9uZWdlbmVyYXRlc3JjLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0c3BhbmRzcF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RzcGFuZHNwX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHNwYW5kc3BfbGEtZ3N0dG9uZWdlbmVyYXRlc3JjLmxvIGB0ZXN0IC1mICdnc3R0b25lZ2VuZXJhdGVzcmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dG9uZWdlbmVyYXRlc3JjLmMKKwogbW9zdGx5Y2xlYW4tbGlidG9vbDoKIAktcm0gLWYgKi5sbwogCmRpZmYgLS1naXQgYS9leHQvc3BhbmRzcC9nc3RzcGFuZHNwLmMgYi9leHQvc3BhbmRzcC9nc3RzcGFuZHNwLmMKaW5kZXggMGZkY2U3OS4uMzdhMDgwNiAxMDA2NDQKLS0tIGEvZXh0L3NwYW5kc3AvZ3N0c3BhbmRzcC5jCisrKyBiL2V4dC9zcGFuZHNwL2dzdHNwYW5kc3AuYwpAQCAtMjYsMTMgKzI2LDE1IEBACiAKICNpbmNsdWRlICJnc3RzcGFucGxjLmgiCiAjaW5jbHVkZSAiZ3N0ZHRtZmRldGVjdC5oIgorI2luY2x1ZGUgImdzdHRvbmVnZW5lcmF0ZXNyYy5oIgogCiBzdGF0aWMgZ2Jvb2xlYW4KIHBsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCiB7CiAgIHJldHVybiBnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAic3BhbnBsYyIsCiAgICAgICBHU1RfUkFOS19QUklNQVJZLCBHU1RfVFlQRV9TUEFOX1BMQykgJiYKLSAgICAgIGdzdF9kdG1mX2RldGVjdF9wbHVnaW5faW5pdCAocGx1Z2luKTsKKyAgICAgIGdzdF9kdG1mX2RldGVjdF9wbHVnaW5faW5pdCAocGx1Z2luKSAmJgorICAgICAgZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX3BsdWdpbl9pbml0IChwbHVnaW4pOwogfQogCiBHU1RfUExVR0lOX0RFRklORSAoR1NUX1ZFUlNJT05fTUFKT1IsCmRpZmYgLS1naXQgYS9leHQvc3BhbmRzcC9nc3R0b25lZ2VuZXJhdGVzcmMuYyBiL2V4dC9zcGFuZHNwL2dzdHRvbmVnZW5lcmF0ZXNyYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMGNhZTcKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvc3BhbmRzcC9nc3R0b25lZ2VuZXJhdGVzcmMuYwpAQCAtMCwwICsxLDQxNSBAQAorLyogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSXNrcmF0ZWwgZC5vLm8uCisgKiAgIEF1dGhvcjogT2tyc2xhciBBbGVzIDxva3JzbGFyQGlza3JhdGVsLnNpPgorICogQ29weXJpZ2h0IChDKSAyMDE2IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0dG9uZWdlbmVyYXRlc3JjLmgiCisKKyN1bmRlZiBJVF9EQkcKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAodG9uZV9nZW5lcmF0ZV9zcmNfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgdG9uZV9nZW5lcmF0ZV9zcmNfZGVidWcKKworI2RlZmluZSBERUZBVUxUX1NBTVBMRVNfUEVSX0JVRkZFUiAgIDEwMjQKKyNkZWZpbmUgREVGQVVMVF9GUkVRICAgICAgICAgICAgICAgICAwCisjZGVmaW5lIERFRkFVTFRfVk9MVU1FICAgICAgICAgICAgICAgMAorI2RlZmluZSBERUZBVUxUX09OX1RJTUUgICAgICAgICAgICAgIDEwMDAKKyNkZWZpbmUgREVGQVVMVF9PRkZfVElNRSAgICAgICAgICAgICAxMDAwCisjZGVmaW5lIERFRkFVTFRfUkVQRUFUICAgICAgICAgICAgICAgRkFMU0UKKworZW51bQoreworICBQUk9QXzAsCisgIFBST1BfU0FNUExFU19QRVJfQlVGRkVSLAorICBQUk9QX0ZSRVEsCisgIFBST1BfVk9MVU1FLAorICBQUk9QX0ZSRVEyLAorICBQUk9QX1ZPTFVNRTIsCisgIFBST1BfT05fVElNRSwKKyAgUFJPUF9PRkZfVElNRSwKKyAgUFJPUF9PTl9USU1FMiwKKyAgUFJPUF9PRkZfVElNRTIsCisgIFBST1BfUkVQRUFULAorICBQUk9QX0xBU1QKK307CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfc3JjX3RlbXBsYXRlID0KK0dTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKKyAgICBHU1RfUEFEX1NSQywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LXJhdywgIgorICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgIiBHU1RfQVVESU9fTkUgKFMxNikgIiwgIgorICAgICAgICAibGF5b3V0ID0gKHN0cmluZykgaW50ZXJsZWF2ZWQsICIgInJhdGUgPSAoaW50KSA4MDAwLCAiICJjaGFubmVscyA9IDEiKQorICAgICk7CisKKyNkZWZpbmUgZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKK0dfREVGSU5FX1RZUEUgKEdzdFRvbmVHZW5lcmF0ZVNyYywgZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjLCBHU1RfVFlQRV9QVVNIX1NSQyk7CisKK3N0YXRpYyB2b2lkIGdzdF90b25lX2dlbmVyYXRlX3NyY19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CitzdGF0aWMgdm9pZCBnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOworc3RhdGljIHZvaWQgZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfc3RhcnQgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfc3RvcCAoR3N0QmFzZVNyYyAqIGJhc2VzcmMpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX2ZpbGwgKEdzdFB1c2hTcmMgKiBiYXNlc3JjLAorICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7CisKK3N0YXRpYyB2b2lkCitnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfY2xhc3NfaW5pdCAoR3N0VG9uZUdlbmVyYXRlU3JjQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOworICBHc3RFbGVtZW50Q2xhc3MgKmdzdGVsZW1lbnRfY2xhc3M7CisgIEdzdEJhc2VTcmNDbGFzcyAqZ3N0YmFzZXNyY19jbGFzczsKKyAgR3N0UHVzaFNyY0NsYXNzICpnc3RwdXNoc3JjX2NsYXNzOworCisgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworICBnc3RlbGVtZW50X2NsYXNzID0gKEdzdEVsZW1lbnRDbGFzcyAqKSBrbGFzczsKKyAgZ3N0YmFzZXNyY19jbGFzcyA9IChHc3RCYXNlU3JjQ2xhc3MgKikga2xhc3M7CisgIGdzdHB1c2hzcmNfY2xhc3MgPSAoR3N0UHVzaFNyY0NsYXNzICopIGtsYXNzOworCisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF90b25lX2dlbmVyYXRlX3NyY19zZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF90b25lX2dlbmVyYXRlX3NyY19nZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX2ZpbmFsaXplOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0FNUExFU19QRVJfQlVGRkVSLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoInNhbXBsZXNwZXJidWZmZXIiLCAiU2FtcGxlcyBwZXIgYnVmZmVyIiwKKyAgICAgICAgICAiTnVtYmVyIG9mIHNhbXBsZXMgaW4gZWFjaCBvdXRnb2luZyBidWZmZXIiLAorICAgICAgICAgIDEsIEdfTUFYSU5ULCBERUZBVUxUX1NBTVBMRVNfUEVSX0JVRkZFUiwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0ZSRVEsCisgICAgICBnX3BhcmFtX3NwZWNfaW50ICgiZnJlcSIsICJGcmVxdWVuY3kiLCAiRnJlcXVlbmN5IG9mIHRlc3Qgc2lnbmFsIiwKKyAgICAgICAgICAwLCAyMDAwMCwgREVGQVVMVF9GUkVRLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1ZPTFVNRSwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJ2b2x1bWUiLCAiVm9sdW1lIiwKKyAgICAgICAgICAiVm9sdW1lIG9mIGZpcnN0IHNpZ25hbCIsCisgICAgICAgICAgLTUwLCAwLCBERUZBVUxUX1ZPTFVNRSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9GUkVRMiwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJmcmVxMiIsICJTZWNvbmQgRnJlcXVlbmN5IiwKKyAgICAgICAgICAiRnJlcXVlbmN5IG9mIHNlY29uZCB0ZWxlcGhvbnkgdG9uZSBjb21wb25lbnQiLAorICAgICAgICAgIDAsIDIwMDAwLCBERUZBVUxUX0ZSRVEsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfVk9MVU1FMiwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJ2b2x1bWUyIiwgIlZvbHVtZTIiLAorICAgICAgICAgICJWb2x1bWUgb2Ygc2Vjb25kIHRvbmUgc2lnbmFsIiwKKyAgICAgICAgICAtNTAsIDAsIERFRkFVTFRfVk9MVU1FLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX09OX1RJTUUsCisgICAgICBnX3BhcmFtX3NwZWNfaW50ICgib24tdGltZSIsICJTaWduYWwgT04gdGltZSBmaXJzdCBwZXJpb2QiLAorICAgICAgICAgICJUaW1lIG9mIHRoZSBmaXJzdCBwZXJpb2QgIHdoZW4gdGhlIHRvbmUgc2lnbmFsIGlzIHByZXNlbnQiLCAxLAorICAgICAgICAgIEdfTUFYSU5ULCBERUZBVUxUX09OX1RJTUUsIEdfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9PRkZfVElNRSwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJvZmYtdGltZSIsICJTaWduYWwgT0ZGIHRpbWUgZmlyc3QgcGVyaW9kICIsCisgICAgICAgICAgIlRpbWUgb2YgdGhlIGZpcnN0IHBlcmlvZCAgd2hlbiB0aGUgdG9uZSBzaWduYWwgaXMgb2ZmIiwgMCwgR19NQVhJTlQsCisgICAgICAgICAgREVGQVVMVF9PRkZfVElNRSwgR19QQVJBTV9SRUFEV1JJVEUpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX09OX1RJTUUyLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIm9uLXRpbWUyIiwgIlNpZ25hbCBPTiB0aW1lIHNlY29uZCBwZXJpb2QiLAorICAgICAgICAgICJUaW1lIG9mIHRoZSBzZWNvbmQgcGVyaW9kICB3aGVuIHRoZSB0b25lIHNpZ25hbCBpcyBwcmVzZW50IiwgMSwKKyAgICAgICAgICBHX01BWElOVCwgREVGQVVMVF9PTl9USU1FLCBHX1BBUkFNX1JFQURXUklURSkpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfT0ZGX1RJTUUyLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIm9mZi10aW1lMiIsICJTaWduYWwgT0ZGIHRpbWUgZmlyc3QgcGVyaW9kICIsCisgICAgICAgICAgIlRpbWUgb2YgdGhlIHNlY29uZCBwZXJpb2QgIHdoZW4gdGhlIHRvbmUgc2lnbmFsIGlzIG9mZiIsIDAsIEdfTUFYSU5ULAorICAgICAgICAgIERFRkFVTFRfT05fVElNRSwgR19QQVJBTV9SRUFEV1JJVEUpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1JFUEVBVCwKKyAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgicmVwZWF0IiwgIlJlcGVhdCB0aGUgc3BlY2lmaWVkIHRvbmUgcGVyaW9kICIsCisgICAgICAgICAgIldoZXRoZXIgdG8gcmVwZWF0IHNwZWNpZmllZCB0b25lIGluZGVmaW5pdGx5IiwgREVGQVVMVF9SRVBFQVQsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUpKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX3NyY190ZW1wbGF0ZSkpOworCisgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGdzdGVsZW1lbnRfY2xhc3MsCisgICAgICAiVGVsZXBob255IFRvbmUgIEdlbmVyYXRvciBzb3VyY2UiLCAiU291cmNlL0F1ZGlvIiwKKyAgICAgICJDcmVhdGVzIHRlbGVwaG9ueSBzaWduYWxzIG9mIGdpdmVuIGZyZXF1ZW5jeSwgdm9sdW1lLCBjYWRlbmNlIiwKKyAgICAgICJJc2tyYXRlbCA8d3d3Lmlza3JhdGVsLmNvbT4iKTsKKworICBnc3RiYXNlc3JjX2NsYXNzLT5zdGFydCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfc3RhcnQpOworICBnc3RiYXNlc3JjX2NsYXNzLT5zdG9wID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90b25lX2dlbmVyYXRlX3NyY19zdG9wKTsKKyAgZ3N0cHVzaHNyY19jbGFzcy0+ZmlsbCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfZmlsbCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfaW5pdCAoR3N0VG9uZUdlbmVyYXRlU3JjICogc3JjKQoreworICBzcmMtPnZvbHVtZSA9IERFRkFVTFRfVk9MVU1FOworICBzcmMtPmZyZXEgPSBERUZBVUxUX0ZSRVE7CisgIHNyYy0+b25fdGltZSA9IERFRkFVTFRfT05fVElNRTsKKyAgc3JjLT5vZmZfdGltZSA9IERFRkFVTFRfT0ZGX1RJTUU7CisgIHNyYy0+dm9sdW1lMiA9IERFRkFVTFRfVk9MVU1FOworICBzcmMtPmZyZXEyID0gREVGQVVMVF9GUkVROworICBzcmMtPm9uX3RpbWUyID0gREVGQVVMVF9PTl9USU1FOworICBzcmMtPm9mZl90aW1lMiA9IERFRkFVTFRfT0ZGX1RJTUU7CisgIHNyYy0+cmVwZWF0ID0gREVGQVVMVF9SRVBFQVQ7CisKKyAgZ3N0X2Jhc2Vfc3JjX3NldF9mb3JtYXQgKEdTVF9CQVNFX1NSQyAoc3JjKSwgR1NUX0ZPUk1BVF9USU1FKTsKKworICBzcmMtPnNhbXBsZXNfcGVyX2J1ZmZlciA9IERFRkFVTFRfU0FNUExFU19QRVJfQlVGRkVSOworICBnc3RfYmFzZV9zcmNfc2V0X2Jsb2Nrc2l6ZSAoR1NUX0JBU0VfU1JDIChzcmMpLCAyICogc3JjLT5zYW1wbGVzX3Blcl9idWZmZXIpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RUb25lR2VuZXJhdGVTcmMgKnNyYyA9IEdTVF9UT05FX0dFTkVSQVRFX1NSQyAob2JqZWN0KTsKKworICBpZiAoc3JjLT50b25lX2Rlc2MpIHsKKyAgICB0b25lX2dlbl9kZXNjcmlwdG9yX2ZyZWUgKHNyYy0+dG9uZV9kZXNjKTsKKyAgICBzcmMtPnRvbmVfZGVzYyA9IE5VTEw7CisgIH0KKworICBpZiAoc3JjLT50b25lX3N0YXRlKSB7CisgICAgdG9uZV9nZW5fZnJlZSAoc3JjLT50b25lX3N0YXRlKTsKKyAgICBzcmMtPnRvbmVfc3RhdGUgPSBOVUxMOworICB9CisKKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF90b25lX2dlbmVyYXRlX3NyY19zdGFydCAoR3N0QmFzZVNyYyAqIGJhc2VzcmMpCit7CisgIEdzdFRvbmVHZW5lcmF0ZVNyYyAqc3JjID0gR1NUX1RPTkVfR0VORVJBVEVfU1JDIChiYXNlc3JjKTsKKworICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7CisgIHNyYy0+cHJvcGVydGllc19jaGFuZ2VkID0gRkFMU0U7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOworCisgIHNyYy0+bmV4dF9zYW1wbGUgPSAwOworICBzcmMtPm5leHRfdGltZSA9IDA7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX3N0b3AgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKQoreworICBHc3RUb25lR2VuZXJhdGVTcmMgKnNyYyA9IEdTVF9UT05FX0dFTkVSQVRFX1NSQyAoYmFzZXNyYyk7CisKKyAgR1NUX09CSkVDVF9MT0NLIChzcmMpOworICBpZiAoc3JjLT50b25lX2Rlc2MpIHsKKyAgICB0b25lX2dlbl9kZXNjcmlwdG9yX2ZyZWUgKHNyYy0+dG9uZV9kZXNjKTsKKyAgICBzcmMtPnRvbmVfZGVzYyA9IE5VTEw7CisgIH0KKworICBpZiAoc3JjLT50b25lX3N0YXRlKSB7CisgICAgdG9uZV9nZW5fZnJlZSAoc3JjLT50b25lX3N0YXRlKTsKKyAgICBzcmMtPnRvbmVfc3RhdGUgPSBOVUxMOworICB9CisgIHNyYy0+cHJvcGVydGllc19jaGFuZ2VkID0gRkFMU0U7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX2ZpbGwgKEdzdFB1c2hTcmMgKiBiYXNlc3JjLCBHc3RCdWZmZXIgKiBidWZmZXIpCit7CisgIEdzdFRvbmVHZW5lcmF0ZVNyYyAqc3JjOworICBHc3RDbG9ja1RpbWUgbmV4dF90aW1lOworICBnaW50NjQgbmV4dF9zYW1wbGU7CisgIGdpbnQgYnl0ZXMsIHNhbXBsZXM7CisgIEdzdE1hcEluZm8gbWFwOworICBjb25zdCBnaW50IHNhbXBsZXJhdGUgPSA4MDAwLCBicGYgPSAyOworCisgIHNyYyA9IEdTVF9UT05FX0dFTkVSQVRFX1NSQyAoYmFzZXNyYyk7CisKKyAgYnl0ZXMgPSBnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpOworICBzYW1wbGVzID0gYnl0ZXMgLyBicGY7CisKKyAgLyogY2FsY3VsYXRlIGZ1bGwgYnVmZmVyICovCisgIG5leHRfc2FtcGxlID0gc3JjLT5uZXh0X3NhbXBsZSArIHNhbXBsZXM7CisKKyAgbmV4dF90aW1lID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCAobmV4dF9zYW1wbGUsIEdTVF9TRUNPTkQsIHNhbXBsZXJhdGUpOworCisgIEdTVF9MT0dfT0JKRUNUIChzcmMsICJzYW1wbGVyYXRlICVkIiwgc2FtcGxlcmF0ZSk7CisgIEdTVF9MT0dfT0JKRUNUIChzcmMsICJuZXh0X3NhbXBsZSAlIiBHX0dJTlQ2NF9GT1JNQVQgIiwgdHMgJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgbmV4dF9zYW1wbGUsIEdTVF9USU1FX0FSR1MgKG5leHRfdGltZSkpOworCisgIEdTVF9CVUZGRVJfT0ZGU0VUIChidWZmZXIpID0gc3JjLT5uZXh0X3NhbXBsZTsKKyAgR1NUX0JVRkZFUl9PRkZTRVRfRU5EIChidWZmZXIpID0gbmV4dF9zYW1wbGU7CisgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpID0gc3JjLT5uZXh0X3RpbWU7CisgIEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcikgPSBuZXh0X3RpbWUgLSBzcmMtPm5leHRfdGltZTsKKworICBnc3Rfb2JqZWN0X3N5bmNfdmFsdWVzIChHU1RfT0JKRUNUIChzcmMpLCBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSk7CisKKyAgc3JjLT5uZXh0X3RpbWUgPSBuZXh0X3RpbWU7CisgIHNyYy0+bmV4dF9zYW1wbGUgPSBuZXh0X3NhbXBsZTsKKworICBHU1RfTE9HX09CSkVDVCAoc3JjLCAiZ2VuZXJhdGluZyAldSBzYW1wbGVzIGF0IHRzICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgIHNhbXBsZXMsIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpKSk7CisKKyAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZmZlciwgJm1hcCwgR1NUX01BUF9XUklURSk7CisKKyAgR1NUX09CSkVDVF9MT0NLIChzcmMpOworICBpZiAoIXNyYy0+dG9uZV9zdGF0ZSB8fCBzcmMtPnByb3BlcnRpZXNfY2hhbmdlZCkgeworICAgIHNyYy0+dG9uZV9kZXNjID0gdG9uZV9nZW5fZGVzY3JpcHRvcl9pbml0IChzcmMtPnRvbmVfZGVzYywKKyAgICAgICAgc3JjLT5mcmVxLAorICAgICAgICBzcmMtPnZvbHVtZSwKKyAgICAgICAgc3JjLT5mcmVxMiwKKyAgICAgICAgc3JjLT52b2x1bWUyLAorICAgICAgICBzcmMtPm9uX3RpbWUsCisgICAgICAgIHNyYy0+b2ZmX3RpbWUsIHNyYy0+b25fdGltZTIsIHNyYy0+b2ZmX3RpbWUyLCBzcmMtPnJlcGVhdCk7CisKKyAgICBzcmMtPnRvbmVfc3RhdGUgPSB0b25lX2dlbl9pbml0IChzcmMtPnRvbmVfc3RhdGUsIHNyYy0+dG9uZV9kZXNjKTsKKyAgICBzcmMtPnByb3BlcnRpZXNfY2hhbmdlZCA9IEZBTFNFOworICB9CisKKyAgdG9uZV9nZW4gKHNyYy0+dG9uZV9zdGF0ZSwgKGludDE2X3QgKikgbWFwLmRhdGEsIHNhbXBsZXMpOworICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKKworICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZtYXApOworCisgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworc3RhdGljIHZvaWQKK2dzdF90b25lX2dlbmVyYXRlX3NyY19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0VG9uZUdlbmVyYXRlU3JjICpzcmMgPSBHU1RfVE9ORV9HRU5FUkFURV9TUkMgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX1NBTVBMRVNfUEVSX0JVRkZFUjoKKyAgICAgIHNyYy0+c2FtcGxlc19wZXJfYnVmZmVyID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CisgICAgICBnc3RfYmFzZV9zcmNfc2V0X2Jsb2Nrc2l6ZSAoR1NUX0JBU0VfU1JDX0NBU1QgKHNyYyksCisgICAgICAgICAgMiAqIHNyYy0+c2FtcGxlc19wZXJfYnVmZmVyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GUkVROgorICAgICAgR1NUX09CSkVDVF9MT0NLIChzcmMpOworICAgICAgc3JjLT5mcmVxID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CisgICAgICBzcmMtPnByb3BlcnRpZXNfY2hhbmdlZCA9IFRSVUU7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9WT0xVTUU6CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7CisgICAgICBzcmMtPnZvbHVtZSA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOworICAgICAgc3JjLT5wcm9wZXJ0aWVzX2NoYW5nZWQgPSBUUlVFOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRlJFUTI6CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7CisgICAgICBzcmMtPmZyZXEyID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CisgICAgICBzcmMtPnByb3BlcnRpZXNfY2hhbmdlZCA9IFRSVUU7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9WT0xVTUUyOgorICAgICAgR1NUX09CSkVDVF9MT0NLIChzcmMpOworICAgICAgc3JjLT52b2x1bWUyID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CisgICAgICBzcmMtPnByb3BlcnRpZXNfY2hhbmdlZCA9IFRSVUU7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9PTl9USU1FOgorICAgICAgR1NUX09CSkVDVF9MT0NLIChzcmMpOworICAgICAgc3JjLT5vbl90aW1lID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CisgICAgICBzcmMtPnByb3BlcnRpZXNfY2hhbmdlZCA9IFRSVUU7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9PTl9USU1FMjoKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKKyAgICAgIHNyYy0+b25fdGltZTIgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKKyAgICAgIHNyYy0+cHJvcGVydGllc19jaGFuZ2VkID0gVFJVRTsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX09GRl9USU1FOgorICAgICAgR1NUX09CSkVDVF9MT0NLIChzcmMpOworICAgICAgc3JjLT5vZmZfdGltZSA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOworICAgICAgc3JjLT5wcm9wZXJ0aWVzX2NoYW5nZWQgPSBUUlVFOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfT0ZGX1RJTUUyOgorICAgICAgR1NUX09CSkVDVF9MT0NLIChzcmMpOworICAgICAgc3JjLT5vZmZfdGltZTIgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKKyAgICAgIHNyYy0+cHJvcGVydGllc19jaGFuZ2VkID0gVFJVRTsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1JFUEVBVDoKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKKyAgICAgIHNyYy0+cmVwZWF0ID0gZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpOworICAgICAgc3JjLT5wcm9wZXJ0aWVzX2NoYW5nZWQgPSBUUlVFOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdFRvbmVHZW5lcmF0ZVNyYyAqc3JjID0gR1NUX1RPTkVfR0VORVJBVEVfU1JDIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9TQU1QTEVTX1BFUl9CVUZGRVI6CisgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBzcmMtPnNhbXBsZXNfcGVyX2J1ZmZlcik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRlJFUToKKyAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIHNyYy0+ZnJlcSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVk9MVU1FOgorICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgc3JjLT52b2x1bWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZSRVEyOgorICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgc3JjLT5mcmVxMik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVk9MVU1FMjoKKyAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIHNyYy0+dm9sdW1lMik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfT05fVElNRToKKyAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIHNyYy0+b25fdGltZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfT0ZGX1RJTUU6CisgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBzcmMtPm9mZl90aW1lKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9PTl9USU1FMjoKKyAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIHNyYy0+b25fdGltZTIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX09GRl9USU1FMjoKKyAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIHNyYy0+b2ZmX3RpbWUyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9SRVBFQVQ6CisgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgc3JjLT5yZXBlYXQpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitnYm9vbGVhbgorZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX3BsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCit7CisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUICh0b25lX2dlbmVyYXRlX3NyY19kZWJ1ZywgInRvbmVnZW5lcmF0ZXNyYyIsIDAsCisgICAgICAiVGVsZXBob255IFRvbmUgVGVzdCBTb3VyY2UiKTsKKworICByZXR1cm4gZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgInRvbmVnZW5lcmF0ZXNyYyIsCisgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9UT05FX0dFTkVSQVRFX1NSQyk7Cit9CmRpZmYgLS1naXQgYS9leHQvc3BhbmRzcC9nc3R0b25lZ2VuZXJhdGVzcmMuaCBiL2V4dC9zcGFuZHNwL2dzdHRvbmVnZW5lcmF0ZXNyYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMGUxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvc3BhbmRzcC9nc3R0b25lZ2VuZXJhdGVzcmMuaApAQCAtMCwwICsxLDg5IEBACisvKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJc2tyYXRlbCBkLm8uby4KKyAqICAgQXV0aG9yOiBPa3JzbGFyIEFsZXMgPG9rcnNsYXJAaXNrcmF0ZWwuc2k+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1RPTkVfR0VORVJBVEVfU1JDX0hfXworI2RlZmluZSBfX0dTVF9UT05FX0dFTkVSQVRFX1NSQ19IX18KKworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGJhc2VzcmMuaD4KKworI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgorI2luY2x1ZGUgPHNwYW5kc3AuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX1RPTkVfR0VORVJBVEVfU1JDIFwKKyAgKGdzdF90b25lX2dlbmVyYXRlX3NyY19nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfVE9ORV9HRU5FUkFURV9TUkMob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9UT05FX0dFTkVSQVRFX1NSQyxHc3RUb25lR2VuZXJhdGVTcmMpKQorI2RlZmluZSBHU1RfVE9ORV9HRU5FUkFURV9TUkNfQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfVE9ORV9HRU5FUkFURV9TUkMsR3N0VG9uZUdlbmVyYXRlU3JjQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfVE9ORV9HRU5FUkFURV9TUkMob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9UT05FX0dFTkVSQVRFX1NSQykpCisjZGVmaW5lIEdTVF9JU19UT05FX0dFTkVSQVRFX1NSQ19DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9UT05FX0dFTkVSQVRFX1NSQykpCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RUb25lR2VuZXJhdGVTcmMgR3N0VG9uZUdlbmVyYXRlU3JjOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFRvbmVHZW5lcmF0ZVNyY0NsYXNzIEdzdFRvbmVHZW5lcmF0ZVNyY0NsYXNzOworCisvKioKKyAqIEdzdFRvbmVHZW5lcmF0ZVNyYzoKKyAqCisgKiB0b25lZ2VuZXJhdGVzcmMgb2JqZWN0IHN0cnVjdHVyZS4KKyAqLworc3RydWN0IF9Hc3RUb25lR2VuZXJhdGVTcmMgeworICBHc3RQdXNoU3JjIHBhcmVudDsKKworICAvKiBwYXJhbWV0ZXJzICovCisgIGdpbnQgdm9sdW1lOyAgICAgIC8qIFRoZSBsZXZlbCBvZiB0aGUgZmlyc3QgZnJlcXVlbmN5LCBpbiBkQm0wICovCisgIGdpbnQgdm9sdW1lMjsgICAgIC8qIFRoZSBsZXZlbCBvZiB0aGUgc2Vjb25kIGZyZXF1ZW5jeSwgaW4gZEJtMCwgb3IgdGhlIHBlcmNlbnRhZ2UgbW9kdWxhdGlvbiBkZXB0aCBmb3IgYW4gQU0gbW9kdWxhdGVkIHRvbmUuICovCisgIGdpbnQgZnJlcTsgICAgICAgIC8qIFRoZSBmaXJzdCBmcmVxdWVuY3ksIGluIEh6ICovCisgIGdpbnQgZnJlcTI7ICAgICAgIC8qIDAgZm9yIG5vIHNlY29uZCBmcmVxdWVuY3ksIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgc2Vjb25kIGZyZXF1ZW5jeSwgaW4gSHosIG9yIGEgbmVnYXRpdmUgbnVtYmVyIGZvciBhbiBBTSBtb2R1bGF0aW9uIGZyZXF1ZW5jeSwgaW4gSHogKi8KKyAgZ2ludCBvbl90aW1lOyAgICAgICAgIC8qIE9uIHRpbWUgZm9yIHRoZSBmaXJzdCBwcmVzZW5jZSBvZiB0b25lIHNpZ25hbC4gKi8KKyAgZ2ludCBvZmZfdGltZTsgICAgICAgIC8qIE9mZiB0aW1lIGJldHdlZW4gZmlyc3QgYW5kIHNlY29uZCBwcmVzZW5jZSBvZiB0b25lIHNpZ25hbC4gKi8KKyAgZ2ludCBvbl90aW1lMjsgICAgICAgIC8qIE9uIHRpbWUgZm9yIHRoZSBzZWNvbmQgcHJlc2VuY2Ugb2YgdG9uZSBzaWduYWwuICovCisgIGdpbnQgb2ZmX3RpbWUyOyAgICAgICAvKiBPZmYgdGltZSBhZnRlciB0aGUgc2Vjb25kIHByZXNlbmNlIG9mIHRvbmUgc2lnbmFsLiAqLworICBnYm9vbGVhbiByZXBlYXQ7ICAgICAgICAgLyogMC8xIGlmIHRoZSB0b25lIHJlcGVhdGVzIGl0c2VsZiBvciBub3QuICovCisKKyAgLyogYXVkaW8gcGFyYW1ldGVycyAqLworICBnaW50IHNhbXBsZXNfcGVyX2J1ZmZlcjsKKworICAvKjwgcHJpdmF0ZSA+Ki8KKyAgR3N0Q2xvY2tUaW1lIG5leHRfdGltZTsgICAgICAgICAgICAgICAvKiBuZXh0IHRpbWVzdGFtcCAqLworICBnaW50NjQgbmV4dF9zYW1wbGU7ICAgICAgICAgICAgICAgICAgIC8qIG5leHQgc2FtcGxlIHRvIHNlbmQgKi8KKworICAvKiBTcGFuRFNQICovCisgIHRvbmVfZ2VuX3N0YXRlX3QgKnRvbmVfc3RhdGU7CisgIHRvbmVfZ2VuX2Rlc2NyaXB0b3JfdCAqdG9uZV9kZXNjOworICBnYm9vbGVhbiBwcm9wZXJ0aWVzX2NoYW5nZWQ7Cit9OworCitzdHJ1Y3QgX0dzdFRvbmVHZW5lcmF0ZVNyY0NsYXNzIHsKKyAgR3N0UHVzaFNyY0NsYXNzIHBhcmVudF9jbGFzczsKK307CisKK0dUeXBlIGdzdF90b25lX2dlbmVyYXRlX3NyY19nZXRfdHlwZSAodm9pZCk7CitnYm9vbGVhbiBnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqcGx1Z2luKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX1RPTkVfR0VORVJBVEVfU1JDX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3NwYy9NYWtlZmlsZS5pbiBiL2V4dC9zcGMvTWFrZWZpbGUuaW4KaW5kZXggMDNiNzBkMS4uNTdhZThhMiAxMDA2NDQKLS0tIGEvZXh0L3NwYy9NYWtlZmlsZS5pbgorKysgYi9leHQvc3BjL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L3NwYy90YWcuYyBiL2V4dC9zcGMvdGFnLmMKaW5kZXggNjFlNTlkNS4uYmMxM2VjYiAxMDA2NDQKLS0tIGEvZXh0L3NwYy90YWcuYworKysgYi9leHQvc3BjL3RhZy5jCkBAIC0zMjgsMjAgKzMyOCwxMyBAQAogdm9pZAogc3BjX3RhZ19mcmVlIChzcGNfdGFnX2luZm8gKiBpbmZvKQogewotICBpZiAoaW5mby0+dGl0bGUpCi0gICAgZ19mcmVlIChpbmZvLT50aXRsZSk7Ci0gIGlmIChpbmZvLT5nYW1lKQotICAgIGdfZnJlZSAoaW5mby0+Z2FtZSk7Ci0gIGlmIChpbmZvLT5hcnRpc3QpCi0gICAgZ19mcmVlIChpbmZvLT5hcnRpc3QpOwotICBpZiAoaW5mby0+YWxidW0pCi0gICAgZ19mcmVlIChpbmZvLT5hbGJ1bSk7Ci0gIGlmIChpbmZvLT5wdWJsaXNoZXIpCi0gICAgZ19mcmVlIChpbmZvLT5wdWJsaXNoZXIpOwotICBpZiAoaW5mby0+Y29tbWVudCkKLSAgICBnX2ZyZWUgKGluZm8tPmNvbW1lbnQpOwotICBpZiAoaW5mby0+ZHVtcGVyKQotICAgIGdfZnJlZSAoaW5mby0+ZHVtcGVyKTsKKyAgZ19mcmVlIChpbmZvLT50aXRsZSk7CisgIGdfZnJlZSAoaW5mby0+Z2FtZSk7CisgIGdfZnJlZSAoaW5mby0+YXJ0aXN0KTsKKyAgZ19mcmVlIChpbmZvLT5hbGJ1bSk7CisgIGdfZnJlZSAoaW5mby0+cHVibGlzaGVyKTsKKyAgZ19mcmVlIChpbmZvLT5jb21tZW50KTsKKyAgZ19mcmVlIChpbmZvLT5kdW1wZXIpOwogICBpZiAoaW5mby0+ZHVtcF9kYXRlKQogICAgIGdfZGF0ZV9mcmVlIChpbmZvLT5kdW1wX2RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvZXh0L3NydHAvTWFrZWZpbGUuaW4gYi9leHQvc3J0cC9NYWtlZmlsZS5pbgppbmRleCBjZDA3NzY2Li5lZjJjMzM2IDEwMDY0NAotLS0gYS9leHQvc3J0cC9NYWtlZmlsZS5pbgorKysgYi9leHQvc3J0cC9NYWtlZmlsZS5pbgpAQCAtMTIzLDE2ICsxMjMsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI4NCw2ICsyODMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMyMSw2ICszMjIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyOSw3ICszMzIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDgsOCArMzUwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2NiwxNiArMzY5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQwMSw2ICs0MDUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjYsNiArNDMyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI3LDYgKzUzNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NDAsOCArNTQ5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU3LDYgKzU2NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTQsMTYgKzYyMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3NSw2ICs2ODYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjg1LDYgKzY5Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5NCw2ICs3MDcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzMxLDcgKzc0Niw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L3RlbGV0ZXh0ZGVjL01ha2VmaWxlLmFtIGIvZXh0L3RlbGV0ZXh0ZGVjL01ha2VmaWxlLmFtCmluZGV4IDgzOGViNWYuLjVhYThhYjUgMTAwNjQ0Ci0tLSBhL2V4dC90ZWxldGV4dGRlYy9NYWtlZmlsZS5hbQorKysgYi9leHQvdGVsZXRleHRkZWMvTWFrZWZpbGUuYW0KQEAgLTEsNiArMSw2IEBACiBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3R0ZWxldGV4dGRlYy5sYQogCi1saWJnc3R0ZWxldGV4dGRlY19sYV9TT1VSQ0VTID0gZ3N0dGVsZXRleHRkZWMuYyB0ZWxldGV4dC5jCitsaWJnc3R0ZWxldGV4dGRlY19sYV9TT1VSQ0VTID0gZ3N0dGVsZXRleHRkZWMuYwogCiBsaWJnc3R0ZWxldGV4dGRlY19sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoVEVMRVRFWFRERUNfQ0ZMQUdTKQogbGliZ3N0dGVsZXRleHRkZWNfbGFfTElCQUREID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9MSUJTKSAkKFRFTEVURVhUREVDX0xJQlMpCmRpZmYgLS1naXQgYS9leHQvdGVsZXRleHRkZWMvTWFrZWZpbGUuaW4gYi9leHQvdGVsZXRleHRkZWMvTWFrZWZpbGUuaW4KaW5kZXggOWUwNjQ4NC4uMDY0MTA0MSAxMDA2NDQKLS0tIGEvZXh0L3RlbGV0ZXh0ZGVjL01ha2VmaWxlLmluCisrKyBiL2V4dC90ZWxldGV4dGRlYy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xNjcsOCArMTY2LDcgQEAKIGxpYmdzdHRlbGV0ZXh0ZGVjX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKQogYW1fbGliZ3N0dGVsZXRleHRkZWNfbGFfT0JKRUNUUyA9ICBcCi0JbGliZ3N0dGVsZXRleHRkZWNfbGEtZ3N0dGVsZXRleHRkZWMubG8gXAotCWxpYmdzdHRlbGV0ZXh0ZGVjX2xhLXRlbGV0ZXh0LmxvCisJbGliZ3N0dGVsZXRleHRkZWNfbGEtZ3N0dGVsZXRleHRkZWMubG8KIGxpYmdzdHRlbGV0ZXh0ZGVjX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdHRlbGV0ZXh0ZGVjX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQpAQCAtMjc2LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NjQsNyArNzc3LDcgQEAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACiBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3R0ZWxldGV4dGRlYy5sYQotbGliZ3N0dGVsZXRleHRkZWNfbGFfU09VUkNFUyA9IGdzdHRlbGV0ZXh0ZGVjLmMgdGVsZXRleHQuYworbGliZ3N0dGVsZXRleHRkZWNfbGFfU09VUkNFUyA9IGdzdHRlbGV0ZXh0ZGVjLmMKIGxpYmdzdHRlbGV0ZXh0ZGVjX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChURUxFVEVYVERFQ19DRkxBR1MpCiBsaWJnc3R0ZWxldGV4dGRlY19sYV9MSUJBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0xJQlMpICQoVEVMRVRFWFRERUNfTElCUykKIGxpYmdzdHRlbGV0ZXh0ZGVjX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKQEAgLTg0OSw3ICs4NjIsNiBAQAogCS1ybSAtZiAqLnRhYi5jCiAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R0ZWxldGV4dGRlY19sYS1nc3R0ZWxldGV4dGRlYy5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHRlbGV0ZXh0ZGVjX2xhLXRlbGV0ZXh0LlBsb0BhbV9fcXVvdGVACiAKIC5jLm86CiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCkBAIC04ODIsMTMgKzg5NCw2IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dGVsZXRleHRkZWNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dGVsZXRleHRkZWNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dGVsZXRleHRkZWNfbGEtZ3N0dGVsZXRleHRkZWMubG8gYHRlc3QgLWYgJ2dzdHRlbGV0ZXh0ZGVjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHRlbGV0ZXh0ZGVjLmMKIAotbGliZ3N0dGVsZXRleHRkZWNfbGEtdGVsZXRleHQubG86IHRlbGV0ZXh0LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R0ZWxldGV4dGRlY19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R0ZWxldGV4dGRlY19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dGVsZXRleHRkZWNfbGEtdGVsZXRleHQubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHRlbGV0ZXh0ZGVjX2xhLXRlbGV0ZXh0LlRwbyAtYyAtbyBsaWJnc3R0ZWxldGV4dGRlY19sYS10ZWxldGV4dC5sbyBgdGVzdCAtZiAndGVsZXRleHQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdGVsZXRleHQuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dGVsZXRleHRkZWNfbGEtdGVsZXRleHQuVHBvICQoREVQRElSKS9saWJnc3R0ZWxldGV4dGRlY19sYS10ZWxldGV4dC5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSd0ZWxldGV4dC5jJyBvYmplY3Q9J2xpYmdzdHRlbGV0ZXh0ZGVjX2xhLXRlbGV0ZXh0LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dGVsZXRleHRkZWNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dGVsZXRleHRkZWNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dGVsZXRleHRkZWNfbGEtdGVsZXRleHQubG8gYHRlc3QgLWYgJ3RlbGV0ZXh0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHRlbGV0ZXh0LmMKLQogbW9zdGx5Y2xlYW4tbGlidG9vbDoKIAktcm0gLWYgKi5sbwogCmRpZmYgLS1naXQgYS9leHQvdGVsZXRleHRkZWMvZ3N0dGVsZXRleHRkZWMuYyBiL2V4dC90ZWxldGV4dGRlYy9nc3R0ZWxldGV4dGRlYy5jCmluZGV4IDYyMmI5NzIuLjkxYjczYzIgMTAwNjQ0Ci0tLSBhL2V4dC90ZWxldGV4dGRlYy9nc3R0ZWxldGV4dGRlYy5jCisrKyBiL2V4dC90ZWxldGV4dGRlYy9nc3R0ZWxldGV4dGRlYy5jCkBAIC0yMiwxMiArMjIsMTMgQEAKIC8qKgogICogU0VDVElPTjplbGVtZW50LXRlbGV0ZXh0ZGVjCiAgKgotICogRGVjb2RlIFBFUyBzdHJlYW0gY29udGFpbmluZyB0ZWxldGV4dCBpbmZvcm1hdGlvbiB0byBSR0JBIHN0cmVhbQorICogRGVjb2RlIGEgc3RyZWFtIG9mIHJhdyBWQkkgcGFja2V0cyBjb250YWluaW5nIHRlbGV0ZXh0IGluZm9ybWF0aW9uIHRvIGEgUkdCQQorICogc3RyZWFtLgogICoKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IC1tIGZpbGVzcmMgbG9jYXRpb249cmVjb3JkaW5nLm1wZWcgISBtcGVndHNkZW11eCAhIHByaXZhdGUvdGVsZXRleHQgISB0ZWxldGV4dGRlYyAhIHZpZGVvY29udmVydCAhIHhpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IC1tIGZpbGVzcmMgbG9jYXRpb249cmVjb3JkaW5nLm1wZWcgISB0c2RlbXV4ICEgdGVsZXRleHRkZWMgISB2aWRlb2NvbnZlcnQgISB4aW1hZ2VzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtMzksMTIgKzQwLDE1IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgogCiAjaW5jbHVkZSAiZ3N0dGVsZXRleHRkZWMuaCIKIAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X3RlbGV0ZXh0ZGVjX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF90ZWxldGV4dGRlY19kZWJ1ZwogCisjZGVmaW5lIHBhcmVudF9jbGFzcyBnc3RfdGVsZXRleHRkZWNfcGFyZW50X2NsYXNzCisKICNkZWZpbmUgU1VCVElUTEVTX1BBR0UgODg4CiAjZGVmaW5lIE1BWF9TTElDRVMgMzIKICNkZWZpbmUgREVGQVVMVF9GT05UX0RFU0NSSVBUSU9OICJ2ZXJkYW5hIDEyIgpAQCAtMTIwLDI2ICsxMjQsMjUgQEAKICAgIiNGRjAwRkYiLCAiIzAwRkZGRiIsICIjRUVFRUVFIgogfTsKIAorLyogaW4gUkdCQSBtb2RlLCBvbmUgY2hhcmFjdGVyIG9jY3VwaWVzIDEyIHggMTAgcGl4ZWxzLiAqLworI2RlZmluZSBDT0xVTU5TX1RPX1dJRFRIKGNvbHMpICgoY29scykgKiAxMikKKyNkZWZpbmUgUk9XU19UT19IRUlHSFQocm93cykgKChyb3dzKSAqIDEwKQorCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua190ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCiAgICAgR1NUX1BBRF9TSU5LLAogICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUwotICAgICgidmlkZW8vbXBlZyxtcGVndmVyc2lvbj0yLHN5c3RlbXN0cmVhbT1UUlVFIDsgcHJpdmF0ZS90ZWxldGV4dCIpCisgICAgR1NUX1NUQVRJQ19DQVBTICgiYXBwbGljYXRpb24veC10ZWxldGV4dDsiKQogICAgICk7CiAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNfdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCiAgICAgR1NUX1BBRF9TUkMsCiAgICAgR1NUX1BBRF9BTFdBWVMsCiAgICAgR1NUX1NUQVRJQ19DQVBTCi0gICAgKEdTVF9WSURFT19DQVBTX1JHQkEgIjsgdGV4dC9wbGFpbiA7IHRleHQvaHRtbCA7IHRleHQveC1wYW5nby1tYXJrdXAiKQorICAgIChHU1RfVklERU9fQ0FQU19NQUtFICgiUkdCQSIpICI7IgorICAgICAgICAidGV4dC94LXJhdywgZm9ybWF0PXt1dGYtOCxwYW5nby1tYXJrdXB9IDsiKQogICAgICk7CiAKLS8qIGRlYnVnIGNhdGVnb3J5IGZvciBmaWx0ZXJpbmcgbG9nIG1lc3NhZ2VzICovCi0jZGVmaW5lIERFQlVHX0lOSVQoYmxhKSBcCi0gIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfdGVsZXRleHRkZWNfZGVidWcsICJ0ZWxldGV4dCIsIDAsICJUZWxldGV4dCBkZWNvZGVyIik7Ci0KLUdTVF9CT0lMRVJQTEFURV9GVUxMIChHc3RUZWxldGV4dERlYywgZ3N0X3RlbGV0ZXh0ZGVjLCBHc3RFbGVtZW50LAotICAgIEdTVF9UWVBFX0VMRU1FTlQsIERFQlVHX0lOSVQpOworR19ERUZJTkVfVFlQRSAoR3N0VGVsZXRleHREZWMsIGdzdF90ZWxldGV4dGRlYywgR1NUX1RZUEVfRUxFTUVOVCk7CiAKIHN0YXRpYyB2b2lkIGdzdF90ZWxldGV4dGRlY19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCiAgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CkBAIC0xNDcsNjAgKzE1MCwzNSBAQAogICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwogc3RhdGljIHZvaWQgZ3N0X3RlbGV0ZXh0ZGVjX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKIAotc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGdzdF90ZWxldGV4dGRlY19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAotICAgIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pOworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGdzdF90ZWxldGV4dGRlY19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKgorICAgIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pOwogCi1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdGVsZXRleHRkZWNfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0QnVmZmVyICogYnVmKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfdGVsZXRleHRkZWNfc2lua19zZXRjYXBzIChHc3RQYWQgKiBwYWQsIEdzdENhcHMgKiBjYXBzKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfdGVsZXRleHRkZWNfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RFdmVudCAqIGV2ZW50KTsKLXN0YXRpYyBHc3RQYWRMaW5rUmV0dXJuIGdzdF90ZWxldGV4dGRlY19zcmNfc2V0X2NhcHMgKEdzdFBhZCAqIHBhZCwKLSAgICBHc3RDYXBzICogY2Fwcyk7CitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdGVsZXRleHRkZWNfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAorICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3RlbGV0ZXh0ZGVjX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAorICAgIEdzdEV2ZW50ICogZXZlbnQpOworc3RhdGljIGdib29sZWFuIGdzdF90ZWxldGV4dGRlY19zcmNfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAorICAgIEdzdEV2ZW50ICogZXZlbnQpOwogCi1zdGF0aWMgdmJpX2Jvb2wgZ3N0X3RlbGV0ZXh0ZGVjX2NvbnZlcnQgKHZiaV9kdmJfZGVtdXggKiBkeCwgZ3BvaW50ZXIgdXNlcl9kYXRhLAotICAgIGNvbnN0IHZiaV9zbGljZWQgKiBzbGljZWQsIGd1aW50IG5fbGluZXMsIGdpbnQ2NCBwdHMpOwogc3RhdGljIHZvaWQgZ3N0X3RlbGV0ZXh0ZGVjX2V2ZW50X2hhbmRsZXIgKHZiaV9ldmVudCAqIGV2LCB2b2lkICp1c2VyX2RhdGEpOwogCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdGVsZXRleHRkZWNfcHVzaF9wYWdlIChHc3RUZWxldGV4dERlYyAqIHRlbGV0ZXh0KTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF90ZWxldGV4dGRlY19leHBvcnRfdGV4dF9wYWdlIChHc3RUZWxldGV4dERlYyAqCiAgICAgdGVsZXRleHQsIHZiaV9wYWdlICogcGFnZSwgR3N0QnVmZmVyICoqIGJ1Zik7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdGVsZXRleHRkZWNfZXhwb3J0X2h0bWxfcGFnZSAoR3N0VGVsZXRleHREZWMgKgotICAgIHRlbGV0ZXh0LCB2YmlfcGFnZSAqIHBhZ2UsIEdzdEJ1ZmZlciAqKiBidWYpOwogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3RlbGV0ZXh0ZGVjX2V4cG9ydF9yZ2JhX3BhZ2UgKEdzdFRlbGV0ZXh0RGVjICoKICAgICB0ZWxldGV4dCwgdmJpX3BhZ2UgKiBwYWdlLCBHc3RCdWZmZXIgKiogYnVmKTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF90ZWxldGV4dGRlY19leHBvcnRfcGFuZ29fcGFnZSAoR3N0VGVsZXRleHREZWMgKgogICAgIHRlbGV0ZXh0LCB2YmlfcGFnZSAqIHBhZ2UsIEdzdEJ1ZmZlciAqKiBidWYpOwogCi0KLXN0YXRpYyBnYm9vbGVhbiBnc3RfdGVsZXRleHRkZWNfcHVzaF9wcmVyb2xsX2J1ZmZlciAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCk7CiBzdGF0aWMgdm9pZCBnc3RfdGVsZXRleHRkZWNfcHJvY2Vzc190ZWx4X2J1ZmZlciAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCwKICAgICBHc3RCdWZmZXIgKiBidWYpOwotc3RhdGljIHZvaWQgZ3N0X3RlbGV0ZXh0ZGVjX3Byb2Nlc3NfcGVzX2J1ZmZlciAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCwKLSAgICBHc3RCdWZmZXIgKiBidWYpOwotc3RhdGljIGdib29sZWFuIGdzdF90ZWxldGV4dGRlY19leHRyYWN0X2RhdGFfdW5pdHMgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQsCi0gICAgR3N0VGVsZXRleHRGcmFtZSAqIGYsIGd1aW50OCAqIHBhY2tldCwgZ3VpbnQgKiBvZmZzZXQsIGdpbnQgc2l6ZSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3RlbGV0ZXh0ZGVjX2V4dHJhY3RfZGF0YV91bml0cyAoR3N0VGVsZXRleHREZWMgKgorICAgIHRlbGV0ZXh0LCBHc3RUZWxldGV4dEZyYW1lICogZiwgY29uc3QgZ3VpbnQ4ICogcGFja2V0LCBndWludCAqIG9mZnNldCwKKyAgICBnc2l6ZSBzaXplKTsKIAogc3RhdGljIHZvaWQgZ3N0X3RlbGV0ZXh0ZGVjX3p2YmlfaW5pdCAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCk7CiBzdGF0aWMgdm9pZCBnc3RfdGVsZXRleHRkZWNfenZiaV9jbGVhciAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCk7Ci0KLS8qIEdPYmplY3Qgdm1ldGhvZCBpbXBsZW1lbnRhdGlvbnMgKi8KLQotc3RhdGljIHZvaWQKLWdzdF90ZWxldGV4dGRlY19iYXNlX2luaXQgKGdwb2ludGVyIGtsYXNzKQotewotICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCi0gICAgICAiVGVsZXRleHQgZGVjb2RlciIsCi0gICAgICAiRGVjb2RlciIsCi0gICAgICAiRGVjb2RlIFBFUyBvciByYXcgVkJJIHN0cmVhbSBjb250YWluaW5nIHRlbGV0ZXh0IGluZm9ybWF0aW9uIHRvIFJHQkEsIEhUTUwgYW5kIHRleHQiLAotICAgICAgIlNlYmFzdGlhbiBQw7Zsc3RlcmwgPHNlYnBAay1kLXcub3JnPiwgIgotICAgICAgIkFuZG9uaSBNb3JhbGVzIEFsYXN0cnVleSA8eWxhdHV5YUBnbWFpbC5jb20+Iik7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNyY190ZW1wbGF0ZSkpOwotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc2lua190ZW1wbGF0ZSkpOwotfQorc3RhdGljIHZvaWQgZ3N0X3RlbGV0ZXh0ZGVjX3Jlc2V0X2ZyYW1lIChHc3RUZWxldGV4dERlYyAqIHRlbGV0ZXh0KTsKIAogLyogaW5pdGlhbGl6ZSB0aGUgZ3N0dGVsZXRleHQncyBjbGFzcyAqLwogc3RhdGljIHZvaWQKQEAgLTI0NSwxOCArMjIzLDI4IEBACiAgICAgICAgICAgIkZvbnQgZGVzY3JpcHRpb24gdXNlZCBmb3IgdGhlIHBhbmdvIG91dHB1dC4iLAogICAgICAgICAgIERFRkFVTFRfRk9OVF9ERVNDUklQVElPTiwKICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgIlRlbGV0ZXh0IGRlY29kZXIiLAorICAgICAgIkRlY29kZXIiLAorICAgICAgIkRlY29kZSBhIHJhdyBWQkkgc3RyZWFtIGNvbnRhaW5pbmcgdGVsZXRleHQgaW5mb3JtYXRpb24gdG8gUkdCQSBhbmQgdGV4dCIsCisgICAgICAiU2ViYXN0aWFuIFDDtmxzdGVybCA8c2VicEBrLWQtdy5vcmc+LCAiCisgICAgICAiQW5kb25pIE1vcmFsZXMgQWxhc3RydWV5IDx5bGF0dXlhQGdtYWlsLmNvbT4iKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc3JjX3RlbXBsYXRlKSk7CisgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCisgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzaW5rX3RlbXBsYXRlKSk7CiB9CiAKIC8qIGluaXRpYWxpemUgdGhlIG5ldyBlbGVtZW50CiAgKiBpbml0aWFsaXplIGluc3RhbmNlIHN0cnVjdHVyZQogICovCiBzdGF0aWMgdm9pZAotZ3N0X3RlbGV0ZXh0ZGVjX2luaXQgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQsIEdzdFRlbGV0ZXh0RGVjQ2xhc3MgKiBrbGFzcykKK2dzdF90ZWxldGV4dGRlY19pbml0IChHc3RUZWxldGV4dERlYyAqIHRlbGV0ZXh0KQogewogICAvKiBDcmVhdGUgc2luayBwYWQgKi8KICAgdGVsZXRleHQtPnNpbmtwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNpbmtfdGVtcGxhdGUsICJzaW5rIik7Ci0gIGdzdF9wYWRfc2V0X3NldGNhcHNfZnVuY3Rpb24gKHRlbGV0ZXh0LT5zaW5rcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90ZWxldGV4dGRlY19zaW5rX3NldGNhcHMpKTsKICAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKHRlbGV0ZXh0LT5zaW5rcGFkLAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90ZWxldGV4dGRlY19jaGFpbikpOwogICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAodGVsZXRleHQtPnNpbmtwYWQsCkBAIC0yNjUsMTEgKzI1MywxMSBAQAogCiAgIC8qIENyZWF0ZSBzcmMgcGFkICovCiAgIHRlbGV0ZXh0LT5zcmNwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNyY190ZW1wbGF0ZSwgInNyYyIpOwotICBnc3RfcGFkX3NldF9zZXRjYXBzX2Z1bmN0aW9uICh0ZWxldGV4dC0+c3JjcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90ZWxldGV4dGRlY19zcmNfc2V0X2NhcHMpKTsKKyAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKHRlbGV0ZXh0LT5zcmNwYWQsCisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RlbGV0ZXh0ZGVjX3NyY19ldmVudCkpOwogICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAodGVsZXRleHQpLCB0ZWxldGV4dC0+c3JjcGFkKTsKIAotICB0ZWxldGV4dC0+ZGVtdXggPSBOVUxMOworICB0ZWxldGV4dC0+c2VnbWVudCA9IE5VTEw7CiAgIHRlbGV0ZXh0LT5kZWNvZGVyID0gTlVMTDsKICAgdGVsZXRleHQtPnBhZ2VubyA9IDB4MTAwOwogICB0ZWxldGV4dC0+c3Vibm8gPSAtMTsKQEAgLTI4NCwxNiArMjcyLDE0IEBACiAgIHRlbGV0ZXh0LT5yYXRlX2Rlbm9taW5hdG9yID0gMTsKIAogICB0ZWxldGV4dC0+cXVldWUgPSBOVUxMOwotICB0ZWxldGV4dC0+cXVldWVfbG9jayA9IGdfbXV0ZXhfbmV3ICgpOworICBnX211dGV4X2luaXQgKCZ0ZWxldGV4dC0+cXVldWVfbG9jayk7CiAKLSAgdGVsZXRleHQtPmZyYW1lID0gZ19uZXcwIChHc3RUZWxldGV4dEZyYW1lLCAxKTsKLSAgdGVsZXRleHQtPmZyYW1lLT5zbGljZWRfYmVnaW4gPSBnX25ldyAodmJpX3NsaWNlZCwgTUFYX1NMSUNFUyk7Ci0gIHRlbGV0ZXh0LT5mcmFtZS0+Y3VycmVudF9zbGljZSA9IHRlbGV0ZXh0LT5mcmFtZS0+c2xpY2VkX2JlZ2luOwotICB0ZWxldGV4dC0+ZnJhbWUtPnNsaWNlZF9lbmQgPSB0ZWxldGV4dC0+ZnJhbWUtPnNsaWNlZF9iZWdpbiArIE1BWF9TTElDRVM7CisgIGdzdF90ZWxldGV4dGRlY19yZXNldF9mcmFtZSAodGVsZXRleHQpOwogCiAgIHRlbGV0ZXh0LT5sYXN0X3RzID0gMDsKIAotICB0ZWxldGV4dC0+cHJvY2Vzc19idWZfZnVuYyA9IE5VTEw7CisgIHRlbGV0ZXh0LT5leHBvcnRfZnVuYyA9IE5VTEw7CisgIHRlbGV0ZXh0LT5idWZfcG9vbCA9IE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0zMDEsNyArMjg3LDcgQEAKIHsKICAgR3N0VGVsZXRleHREZWMgKnRlbGV0ZXh0ID0gR1NUX1RFTEVURVhUREVDIChvYmplY3QpOwogCi0gIGdfbXV0ZXhfZnJlZSAodGVsZXRleHQtPnF1ZXVlX2xvY2spOworICBnX211dGV4X2NsZWFyICgmdGVsZXRleHQtPnF1ZXVlX2xvY2spOwogCiAgIGdfZnJlZSAodGVsZXRleHQtPmZyYW1lKTsKIApAQCAtMzIxLDkgKzMwNyw5IEBACiAgICAgICBWQklfRVZFTlRfVFRYX1BBR0UgfCBWQklfRVZFTlRfQ0FQVElPTiwKICAgICAgIGdzdF90ZWxldGV4dGRlY19ldmVudF9oYW5kbGVyLCB0ZWxldGV4dCk7CiAKLSAgZ19tdXRleF9sb2NrICh0ZWxldGV4dC0+cXVldWVfbG9jayk7CisgIGdfbXV0ZXhfbG9jayAoJnRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKICAgdGVsZXRleHQtPnF1ZXVlID0gZ19xdWV1ZV9uZXcgKCk7Ci0gIGdfbXV0ZXhfdW5sb2NrICh0ZWxldGV4dC0+cXVldWVfbG9jayk7CisgIGdfbXV0ZXhfdW5sb2NrICgmdGVsZXRleHQtPnF1ZXVlX2xvY2spOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMzMzLDI1ICszMTksMjMgQEAKIAogICBHU1RfTE9HX09CSkVDVCAodGVsZXRleHQsICJDbGVhcmluZyBzdHJ1Y3R1cmVzIik7CiAKLSAgaWYgKHRlbGV0ZXh0LT5kZW11eCAhPSBOVUxMKSB7Ci0gICAgdmJpX2R2Yl9kZW11eF9kZWxldGUgKHRlbGV0ZXh0LT5kZW11eCk7Ci0gICAgdGVsZXRleHQtPmRlbXV4ID0gTlVMTDsKLSAgfQogICBpZiAodGVsZXRleHQtPmRlY29kZXIgIT0gTlVMTCkgewogICAgIHZiaV9kZWNvZGVyX2RlbGV0ZSAodGVsZXRleHQtPmRlY29kZXIpOwogICAgIHRlbGV0ZXh0LT5kZWNvZGVyID0gTlVMTDsKICAgfQogICBpZiAodGVsZXRleHQtPmZyYW1lICE9IE5VTEwpIHsKKyAgICBpZiAodGVsZXRleHQtPmZyYW1lLT5zbGljZWRfYmVnaW4pCisgICAgICBnX2ZyZWUgKHRlbGV0ZXh0LT5mcmFtZS0+c2xpY2VkX2JlZ2luKTsKICAgICBnX2ZyZWUgKHRlbGV0ZXh0LT5mcmFtZSk7CiAgICAgdGVsZXRleHQtPmZyYW1lID0gTlVMTDsKICAgfQogCi0gIGdfbXV0ZXhfbG9jayAodGVsZXRleHQtPnF1ZXVlX2xvY2spOworICBnX211dGV4X2xvY2sgKCZ0ZWxldGV4dC0+cXVldWVfbG9jayk7CiAgIGlmICh0ZWxldGV4dC0+cXVldWUgIT0gTlVMTCkgewogICAgIGdfcXVldWVfZnJlZSAodGVsZXRleHQtPnF1ZXVlKTsKICAgICB0ZWxldGV4dC0+cXVldWUgPSBOVUxMOwogICB9Ci0gIGdfbXV0ZXhfdW5sb2NrICh0ZWxldGV4dC0+cXVldWVfbG9jayk7CisgIGdfbXV0ZXhfdW5sb2NrICgmdGVsZXRleHQtPnF1ZXVlX2xvY2spOwogCiAgIHRlbGV0ZXh0LT5pbl90aW1lc3RhbXAgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICB0ZWxldGV4dC0+aW5fZHVyYXRpb24gPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwpAQCAtNDE3LDIxICs0MDEsMzEgQEAKIH0KIAogc3RhdGljIGdib29sZWFuCi1nc3RfdGVsZXRleHRkZWNfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RFdmVudCAqIGV2ZW50KQorZ3N0X3RlbGV0ZXh0ZGVjX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQogewogICBnYm9vbGVhbiByZXQ7Ci0gIEdzdFRlbGV0ZXh0RGVjICp0ZWxldGV4dCA9IEdTVF9URUxFVEVYVERFQyAoZ3N0X3BhZF9nZXRfcGFyZW50IChwYWQpKTsKKyAgR3N0VGVsZXRleHREZWMgKnRlbGV0ZXh0ID0gR1NUX1RFTEVURVhUREVDIChwYXJlbnQpOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKHRlbGV0ZXh0LCAiZ290IGV2ZW50ICVzIiwKICAgICAgIGdzdF9ldmVudF90eXBlX2dldF9uYW1lIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSk7CiAKICAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7Ci0gICAgY2FzZSBHU1RfRVZFTlRfTkVXU0VHTUVOVDoKKyAgICBjYXNlIEdTVF9FVkVOVF9TRUdNRU5UOgogICAgICAgLyogbWF5YmUgc2F2ZSBhbmQvb3IgdXBkYXRlIHRoZSBjdXJyZW50IHNlZ21lbnQgKGUuZy4gZm9yIG91dHB1dAogICAgICAgICogY2xpcHBpbmcpIG9yIGNvbnZlcnQgdGhlIGV2ZW50IGludG8gb25lIGluIGEgZGlmZmVyZW50IGZvcm1hdAogICAgICAgICogKGUuZy4gQllURVMgdG8gVElNRSkgb3IgZHJvcCBpdCBhbmQgc2V0IGEgZmxhZyB0byBzZW5kIGEgbmV3c2VnbWVudAogICAgICAgICogZXZlbnQgaW4gYSBkaWZmZXJlbnQgZm9ybWF0IGxhdGVyICovCi0gICAgICByZXQgPSBnc3RfcGFkX3B1c2hfZXZlbnQgKHRlbGV0ZXh0LT5zcmNwYWQsIGV2ZW50KTsKKyAgICAgIGlmIChOVUxMID09IHRlbGV0ZXh0LT5leHBvcnRfZnVuYykgeworICAgICAgICAvKiBzYXZlIHRoZSBzZWdtZW50IGV2ZW50IGFuZCBzZW5kIGl0IGFmdGVyIHNlbmRpbmcgY2Fwcy4gcmVwbGFjZSB0aGUKKyAgICAgICAgICogb2xkIGV2ZW50IGlmIHByZXNlbnQuICovCisgICAgICAgIGlmICh0ZWxldGV4dC0+c2VnbWVudCkgeworICAgICAgICAgIGdzdF9ldmVudF91bnJlZiAodGVsZXRleHQtPnNlZ21lbnQpOworICAgICAgICB9CisgICAgICAgIHRlbGV0ZXh0LT5zZWdtZW50ID0gZXZlbnQ7CisgICAgICAgIHJldCA9IFRSVUU7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXQgPSBnc3RfcGFkX3B1c2hfZXZlbnQgKHRlbGV0ZXh0LT5zcmNwYWQsIGV2ZW50KTsKKyAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX0VWRU5UX0VPUzoKICAgICAgIC8qIGVuZC1vZi1zdHJlYW0sIHdlIHNob3VsZCBjbG9zZSBkb3duIGFsbCBzdHJlYW0gbGVmdG92ZXJzIGhlcmUgKi8KQEAgLTQ0NCwxMiArNDM4LDMxIEBACiAgICAgICByZXQgPSBnc3RfcGFkX3B1c2hfZXZlbnQgKHRlbGV0ZXh0LT5zcmNwYWQsIGV2ZW50KTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICByZXQgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgZXZlbnQpOworICAgICAgcmV0ID0gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOwogICAgICAgYnJlYWs7CiAgIH0KIAotICBnc3Rfb2JqZWN0X3VucmVmICh0ZWxldGV4dCk7CisgIHJldHVybiByZXQ7Cit9CiAKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3RlbGV0ZXh0ZGVjX3NyY19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpCit7CisgIGdib29sZWFuIHJldDsKKyAgR3N0VGVsZXRleHREZWMgKnRlbGV0ZXh0ID0gR1NUX1RFTEVURVhUREVDIChwYXJlbnQpOworCisgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgeworICAgIGNhc2UgR1NUX0VWRU5UX1JFQ09ORklHVVJFOgorICAgICAgLyogc2V0dGluZyBleHBvcnRfZnVuYyB0byBOVUxMIHdpbGwgY2F1c2UgdGhlIGVsZW1lbnQgdG8gcmVuZWdvdGlhdGUgY2FwcworICAgICAgICogYmVmb3JlIHB1c2hpbmcgYSBidWZmZXIuICovCisgICAgICB0ZWxldGV4dC0+ZXhwb3J0X2Z1bmMgPSBOVUxMOworICAgICAgcmV0ID0gVFJVRTsKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIHJldCA9IGdzdF9wYWRfZXZlbnRfZGVmYXVsdCAocGFkLCBwYXJlbnQsIGV2ZW50KTsKKyAgICAgIGJyZWFrOworICB9CiAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTQ4NCwxMDkgKzQ5NywxMyBAQAogICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF90ZWxldGV4dGRlY19zaW5rX3NldGNhcHMgKEdzdFBhZCAqIHBhZCwgR3N0Q2FwcyAqIGNhcHMpCi17Ci0gIEdzdFRlbGV0ZXh0RGVjICp0ZWxldGV4dCA9IEdTVF9URUxFVEVYVERFQyAoZ3N0X3BhZF9nZXRfcGFyZW50IChwYWQpKTsKLSAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLSAgY29uc3QgZ2NoYXIgKm1pbWV0eXBlID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAoc3RydWN0dXJlKTsKLQotICBHU1RfREVCVUdfT0JKRUNUICh0ZWxldGV4dCwgIiVzOiVzLCBjYXBzPSUiIEdTVF9QVFJfRk9STUFULAotICAgICAgR1NUX0RFQlVHX1BBRF9OQU1FIChwYWQpLCBjYXBzKTsKLQotICBpZiAoZ19zdHJjbXAwIChtaW1ldHlwZSwgInByaXZhdGUvdGVsZXRleHQiKSA9PSAwKSB7Ci0gICAgdGVsZXRleHQtPnByb2Nlc3NfYnVmX2Z1bmMgPSBnc3RfdGVsZXRleHRkZWNfcHJvY2Vzc190ZWx4X2J1ZmZlcjsKLSAgICBnb3RvIGFjY2VwdF9jYXBzOwotICB9IGVsc2UgaWYgKGdfc3RyY21wMCAobWltZXR5cGUsICJ2aWRlby9tcGVnIikgPT0gMCkgewotICAgIGdpbnQgdmVyc2lvbjsKLSAgICBnYm9vbGVhbiBpc19zeXN0ZW1zdHJlYW07Ci0KLSAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAibXBlZ3ZlcnNpb24iLCAmdmVyc2lvbikgfHwKLSAgICAgICAgIWdzdF9zdHJ1Y3R1cmVfZ2V0X2Jvb2xlYW4gKHN0cnVjdHVyZSwgInN5c3RlbXN0cmVhbSIsCi0gICAgICAgICAgICAmaXNfc3lzdGVtc3RyZWFtKSkKLSAgICAgIGdvdG8gcmVmdXNlX2NhcHM7Ci0KLSAgICBpZiAodmVyc2lvbiAhPSAyIHx8ICFpc19zeXN0ZW1zdHJlYW0pCi0gICAgICBnb3RvIHJlZnVzZV9jYXBzOwotCi0gICAgdGVsZXRleHQtPnByb2Nlc3NfYnVmX2Z1bmMgPSBnc3RfdGVsZXRleHRkZWNfcHJvY2Vzc19wZXNfYnVmZmVyOwotICAgIHRlbGV0ZXh0LT5kZW11eCA9IHZiaV9kdmJfcGVzX2RlbXV4X25ldyAoZ3N0X3RlbGV0ZXh0ZGVjX2NvbnZlcnQsIHRlbGV0ZXh0KTsKLSAgICBnb3RvIGFjY2VwdF9jYXBzOwotICB9IGVsc2UKLSAgICBnb3RvIHJlZnVzZV9jYXBzOwotCi1hY2NlcHRfY2FwczoKLSAgewotICAgIGdzdF9vYmplY3RfdW5yZWYgKHRlbGV0ZXh0KTsKLSAgICByZXR1cm4gZ3N0X3RlbGV0ZXh0ZGVjX3B1c2hfcHJlcm9sbF9idWZmZXIgKHRlbGV0ZXh0KTsKLSAgfQotCi1yZWZ1c2VfY2FwczoKLSAgewotICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHRlbGV0ZXh0LAotICAgICAgICAicGFkICVzIHJlZnVzZWQgcmVuZWdvdGlhdGlvbiB0byAlIiBHU1RfUFRSX0ZPUk1BVCwKLSAgICAgICAgR1NUX1BBRF9OQU1FIChwYWQpLCBjYXBzKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmICh0ZWxldGV4dCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3RlbGV0ZXh0ZGVjX3NyY19zZXRfY2FwcyAoR3N0UGFkICogcGFkLCBHc3RDYXBzICogY2FwcykKLXsKLSAgR3N0VGVsZXRleHREZWMgKnRlbGV0ZXh0OwotICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IE5VTEw7Ci0gIGNvbnN0IGdjaGFyICptaW1ldHlwZTsKLSAgR3N0UGFkICpwZWVyOwotCi0gIHRlbGV0ZXh0ID0gR1NUX1RFTEVURVhUREVDIChnc3RfcGFkX2dldF9wYXJlbnQgKHBhZCkpOwotICBHU1RfREVCVUdfT0JKRUNUICh0ZWxldGV4dCwgIkxpbmtpbmcgdGVsZXRleHQgc291cmNlIHBhZCIpOwotCi0gIGlmIChnc3RfY2Fwc19pc19lbXB0eSAoY2FwcykpIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUICh0ZWxldGV4dCwKLSAgICAgICAgInBhZCAlcyByZWZ1c2VkIHJlbmVnb3RpYXRpb24gdG8gJSIgR1NUX1BUUl9GT1JNQVQsCi0gICAgICAgIEdTVF9QQURfTkFNRSAocGFkKSwgY2Fwcyk7Ci0gICAgZ290byByZWZ1c2VfY2FwczsKLSAgfQotCi0gIHBlZXIgPSBnc3RfcGFkX2dldF9wZWVyIChwYWQpOwotICBpZiAocGVlcikgewotICAgIGdzdF9wYWRfc2V0X2NhcHMgKHBlZXIsIGNhcHMpOwotICAgIGdzdF9vYmplY3RfdW5yZWYgKHBlZXIpOwotICB9Ci0KLSAgc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0gIG1pbWV0eXBlID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAoc3RydWN0dXJlKTsKLQotICBpZiAoZ19zdHJjbXAwIChtaW1ldHlwZSwgInZpZGVvL3gtcmF3LXJnYiIpID09IDApIHsKLSAgICB0ZWxldGV4dC0+b3V0cHV0X2Zvcm1hdCA9IEdTVF9URUxFVEVYVERFQ19PVVRQVVRfRk9STUFUX1JHQkE7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAodGVsZXRleHQsICJTZWxlY3RlZCBSR0JBIG91dHB1dCBmb3JtYXQiKTsKLSAgfSBlbHNlIGlmIChnX3N0cmNtcDAgKG1pbWV0eXBlLCAidGV4dC9odG1sIikgPT0gMCkgewotICAgIHRlbGV0ZXh0LT5vdXRwdXRfZm9ybWF0ID0gR1NUX1RFTEVURVhUREVDX09VVFBVVF9GT1JNQVRfSFRNTDsKLSAgICBHU1RfREVCVUdfT0JKRUNUICh0ZWxldGV4dCwgIlNlbGVjdGVkIEhUTUwgb3V0cHV0IGZvcm1hdCIpOwotICB9IGVsc2UgaWYgKGdfc3RyY21wMCAobWltZXR5cGUsICJ0ZXh0L3BsYWluIikgPT0gMCkgewotICAgIHRlbGV0ZXh0LT5vdXRwdXRfZm9ybWF0ID0gR1NUX1RFTEVURVhUREVDX09VVFBVVF9GT1JNQVRfVEVYVDsKLSAgICBHU1RfREVCVUdfT0JKRUNUICh0ZWxldGV4dCwgIlNlbGVjdGVkIHRleHQgb3V0cHV0IGZvcm1hdCIpOwotICB9IGVsc2UgaWYgKGdfc3RyY21wMCAobWltZXR5cGUsICJ0ZXh0L3gtcGFuZ28tbWFya3VwIikgPT0gMCkgewotICAgIHRlbGV0ZXh0LT5vdXRwdXRfZm9ybWF0ID0gR1NUX1RFTEVURVhUREVDX09VVFBVVF9GT1JNQVRfUEFOR087Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAodGVsZXRleHQsICJTZWxlY3RlZCBwYW5nbyBtYXJrdXAgb3V0cHV0IGZvcm1hdCIpOwotICB9IGVsc2UKLSAgICBnb3RvIHJlZnVzZV9jYXBzOwotCi0gIGdzdF9vYmplY3RfdW5yZWYgKHRlbGV0ZXh0KTsKLSAgcmV0dXJuIFRSVUU7Ci0KLQotcmVmdXNlX2NhcHM6Ci0gIHsKLSAgICBnc3Rfb2JqZWN0X3VucmVmICh0ZWxldGV4dCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci19Ci0KIHN0YXRpYyB2b2lkCiBnc3RfdGVsZXRleHRkZWNfcmVzZXRfZnJhbWUgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQpCiB7CisgIGlmICh0ZWxldGV4dC0+ZnJhbWUgPT0gTlVMTCkKKyAgICB0ZWxldGV4dC0+ZnJhbWUgPSBnX25ldzAgKEdzdFRlbGV0ZXh0RnJhbWUsIDEpOworICBpZiAodGVsZXRleHQtPmZyYW1lLT5zbGljZWRfYmVnaW4gPT0gTlVMTCkKKyAgICB0ZWxldGV4dC0+ZnJhbWUtPnNsaWNlZF9iZWdpbiA9IGdfbmV3ICh2Ymlfc2xpY2VkLCBNQVhfU0xJQ0VTKTsKICAgdGVsZXRleHQtPmZyYW1lLT5jdXJyZW50X3NsaWNlID0gdGVsZXRleHQtPmZyYW1lLT5zbGljZWRfYmVnaW47CiAgIHRlbGV0ZXh0LT5mcmFtZS0+c2xpY2VkX2VuZCA9IHRlbGV0ZXh0LT5mcmFtZS0+c2xpY2VkX2JlZ2luICsgTUFYX1NMSUNFUzsKICAgdGVsZXRleHQtPmZyYW1lLT5sYXN0X2ZpZWxkID0gMDsKQEAgLTU5NSwzMiArNTEyLDIzIEBACiB9CiAKIHN0YXRpYyB2b2lkCi1nc3RfdGVsZXRleHRkZWNfcHJvY2Vzc19wZXNfYnVmZmVyIChHc3RUZWxldGV4dERlYyAqIHRlbGV0ZXh0LCBHc3RCdWZmZXIgKiBidWYpCi17Ci0gIHZiaV9kdmJfZGVtdXhfZmVlZCAodGVsZXRleHQtPmRlbXV4LCBHU1RfQlVGRkVSX0RBVEEgKGJ1ZiksCi0gICAgICBHU1RfQlVGRkVSX1NJWkUgKGJ1ZikpOwotICByZXR1cm47Ci19Ci0KLXN0YXRpYyB2b2lkCiBnc3RfdGVsZXRleHRkZWNfcHJvY2Vzc190ZWx4X2J1ZmZlciAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCwgR3N0QnVmZmVyICogYnVmKQogewotICBndWludDggKmRhdGEgPSBHU1RfQlVGRkVSX0RBVEEgKGJ1Zik7Ci0gIGNvbnN0IGdpbnQgc2l6ZSA9IEdTVF9CVUZGRVJfU0laRSAoYnVmKTsKKyAgR3N0TWFwSW5mbyBidWZfbWFwOwogICBndWludCBvZmZzZXQgPSAwOwogICBnaW50IHJlczsKKyAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJmJ1Zl9tYXAsIEdTVF9NQVBfUkVBRCk7CiAKICAgdGVsZXRleHQtPmluX3RpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpOwogICB0ZWxldGV4dC0+aW5fZHVyYXRpb24gPSBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpOwogCi0gIGlmICh0ZWxldGV4dC0+ZnJhbWUgPT0gTlVMTCkgeworICBpZiAodGVsZXRleHQtPmZyYW1lID09IE5VTEwpCiAgICAgZ3N0X3RlbGV0ZXh0ZGVjX3Jlc2V0X2ZyYW1lICh0ZWxldGV4dCk7Ci0gIH0KIAotICB3aGlsZSAob2Zmc2V0IDwgc2l6ZSkgeworICB3aGlsZSAob2Zmc2V0IDwgYnVmX21hcC5zaXplKSB7CiAgICAgcmVzID0KLSAgICAgICAgZ3N0X3RlbGV0ZXh0ZGVjX2V4dHJhY3RfZGF0YV91bml0cyAodGVsZXRleHQsIHRlbGV0ZXh0LT5mcmFtZSwgZGF0YSwKLSAgICAgICAgJm9mZnNldCwgc2l6ZSk7CisgICAgICAgIGdzdF90ZWxldGV4dGRlY19leHRyYWN0X2RhdGFfdW5pdHMgKHRlbGV0ZXh0LCB0ZWxldGV4dC0+ZnJhbWUsCisgICAgICAgIGJ1Zl9tYXAuZGF0YSwgJm9mZnNldCwgYnVmX21hcC5zaXplKTsKIAogICAgIGlmIChyZXMgPT0gVkJJX05FV19GUkFNRSkgewogICAgICAgLyogV2UgaGF2ZSBhIG5ldyBmcmFtZSwgaXQncyB0aW1lIHRvIGZlZWQgdGhlIGRlY29kZXIgKi8KQEAgLTY0NiwzMiArNTU0LDE0IEBACiAgICAgICBnc3RfdGVsZXRleHRkZWNfcmVzZXRfZnJhbWUgKHRlbGV0ZXh0KTsKICAgICB9IGVsc2UgaWYgKHJlcyA9PSBWQklfRVJST1IpIHsKICAgICAgIGdzdF90ZWxldGV4dGRlY19yZXNldF9mcmFtZSAodGVsZXRleHQpOwotICAgICAgcmV0dXJuOworICAgICAgZ290byBiZWFjaDsKICAgICB9CiAgIH0KK2JlYWNoOgorICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZidWZfbWFwKTsKICAgcmV0dXJuOwogfQogCi1zdGF0aWMgdmJpX2Jvb2wKLWdzdF90ZWxldGV4dGRlY19jb252ZXJ0ICh2YmlfZHZiX2RlbXV4ICogZHgsCi0gICAgZ3BvaW50ZXIgdXNlcl9kYXRhLCBjb25zdCB2Ymlfc2xpY2VkICogc2xpY2VkLCBndWludCBuX2xpbmVzLCBnaW50NjQgcHRzKQotewotICBnZG91YmxlIHNhbXBsZV90aW1lOwotICB2Ymlfc2xpY2VkICpzOwotCi0gIEdzdFRlbGV0ZXh0RGVjICp0ZWxldGV4dCA9IEdTVF9URUxFVEVYVERFQyAodXNlcl9kYXRhKTsKLQotICBHU1RfREVCVUdfT0JKRUNUICh0ZWxldGV4dCwgIkNvbnZlcnRpbmcgJXUgbGluZXMgdG8gZGVjb2RlIiwgbl9saW5lcyk7Ci0KLSAgc2FtcGxlX3RpbWUgPSBwdHMgKiAoMSAvIDkwMDAwLjApOwotCi0gIHMgPSBnX21lbWR1cCAoc2xpY2VkLCBuX2xpbmVzICogc2l6ZW9mICh2Ymlfc2xpY2VkKSk7Ci0gIHZiaV9kZWNvZGUgKHRlbGV0ZXh0LT5kZWNvZGVyLCBzLCBuX2xpbmVzLCBzYW1wbGVfdGltZSk7Ci0gIGdfZnJlZSAocyk7Ci0KLSAgcmV0dXJuIEdTVF9GTE9XX09LOwotfQotCiBzdGF0aWMgdm9pZAogZ3N0X3RlbGV0ZXh0ZGVjX2V2ZW50X2hhbmRsZXIgKHZiaV9ldmVudCAqIGV2LCB2b2lkICp1c2VyX2RhdGEpCiB7CkBAIC02OTcsOSArNTg3LDkgQEAKICAgICAgIHBpLT5wZ25vID0gcGdubzsKICAgICAgIHBpLT5zdWJubyA9IHN1Ym5vOwogCi0gICAgICBnX211dGV4X2xvY2sgKHRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKICAgICAgIGdfcXVldWVfcHVzaF90YWlsICh0ZWxldGV4dC0+cXVldWUsIHBpKTsKLSAgICAgIGdfbXV0ZXhfdW5sb2NrICh0ZWxldGV4dC0+cXVldWVfbG9jayk7CisgICAgICBnX211dGV4X3VubG9jayAoJnRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgVkJJX0VWRU5UX0NBUFRJT046CiAgICAgICAvKiBUT0RPOiBIYW5kbGUgc3VidGl0bGVzIGluIGNhcHRpb24gdGVsZXRleHQgcGFnZXMgKi8KQEAgLTcxMSwyOSArNjAxLDE0OCBAQAogICByZXR1cm47CiB9CiAKK3N0YXRpYyB2b2lkCitnc3RfdGVsZXRleHRkZWNfdHJ5X2dldF9idWZmZXJfcG9vbCAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCwgR3N0Q2FwcyAqIGNhcHMsCisgICAgZ3NzaXplIHNpemUpCit7CisgIGd1aW50IHBvb2xfYnVmc2l6ZSwgbWluX2J1ZnMsIG1heF9idWZzOworICBHc3RTdHJ1Y3R1cmUgKnBvb2xjZmc7CisgIEdzdEJ1ZmZlclBvb2wgKm5ld19wb29sOworICBHc3RRdWVyeSAqYWxsb2MgPSBnc3RfcXVlcnlfbmV3X2FsbG9jYXRpb24gKGNhcHMsIFRSVUUpOworCisgIGlmICh0ZWxldGV4dC0+YnVmX3Bvb2wpIHsKKyAgICAvKiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IG9uIGEgY2Fwcy9zaXplIGNoYW5nZSwgc28gaXQncyBwcmFjdGljYWxseQorICAgICAqIGltcG9zc2libGUgdGhhdCB3ZSdsbCBiZSBhYmxlIHRvIHJldXNlIHRoZSBvbGQgcG9vbC4gKi8KKyAgICBnc3RfYnVmZmVyX3Bvb2xfc2V0X2FjdGl2ZSAodGVsZXRleHQtPmJ1Zl9wb29sLCBGQUxTRSk7CisgICAgZ3N0X29iamVjdF91bnJlZiAodGVsZXRleHQtPmJ1Zl9wb29sKTsKKyAgfQorCisgIGlmICghZ3N0X3BhZF9wZWVyX3F1ZXJ5ICh0ZWxldGV4dC0+c3JjcGFkLCBhbGxvYykpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUICh0ZWxldGV4dCwgIkZhaWxlZCB0byBxdWVyeSBwZWVyIHBhZCBmb3IgYWxsb2NhdGlvbiAiCisgICAgICAgICJwYXJhbWV0ZXJzIik7CisgICAgdGVsZXRleHQtPmJ1Zl9wb29sID0gTlVMTDsKKyAgICBnb3RvIGJlYWNoOworICB9CisKKyAgaWYgKGdzdF9xdWVyeV9nZXRfbl9hbGxvY2F0aW9uX3Bvb2xzIChhbGxvYykgPiAwKSB7CisgICAgZ3N0X3F1ZXJ5X3BhcnNlX250aF9hbGxvY2F0aW9uX3Bvb2wgKGFsbG9jLCAwLCAmbmV3X3Bvb2wsICZwb29sX2J1ZnNpemUsCisgICAgICAgICZtaW5fYnVmcywgJm1heF9idWZzKTsKKyAgfSBlbHNlIHsKKyAgICBuZXdfcG9vbCA9IGdzdF9idWZmZXJfcG9vbF9uZXcgKCk7CisgICAgbWF4X2J1ZnMgPSAwOworICAgIG1pbl9idWZzID0gMTsKKyAgfQorCisgIHBvb2xjZmcgPSBnc3RfYnVmZmVyX3Bvb2xfZ2V0X2NvbmZpZyAobmV3X3Bvb2wpOworICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9wYXJhbXMgKHBvb2xjZmcsIGdzdF9jYXBzX2NvcHkgKGNhcHMpLCBzaXplLAorICAgICAgbWluX2J1ZnMsIG1heF9idWZzKTsKKyAgaWYgKCFnc3RfYnVmZmVyX3Bvb2xfc2V0X2NvbmZpZyAobmV3X3Bvb2wsIHBvb2xjZmcpKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAodGVsZXRleHQsICJGYWlsZWQgdG8gY29uZmlndXJlIHRoZSBidWZmZXIgcG9vbCIpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKG5ld19wb29sKTsKKyAgICB0ZWxldGV4dC0+YnVmX3Bvb2wgPSBOVUxMOworICAgIGdvdG8gYmVhY2g7CisgIH0KKyAgaWYgKCFnc3RfYnVmZmVyX3Bvb2xfc2V0X2FjdGl2ZSAobmV3X3Bvb2wsIFRSVUUpKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAodGVsZXRleHQsICJGYWlsZWQgdG8gbWFrZSB0aGUgYnVmZmVyIHBvb2wgYWN0aXZlIik7CisgICAgZ3N0X29iamVjdF91bnJlZiAobmV3X3Bvb2wpOworICAgIHRlbGV0ZXh0LT5idWZfcG9vbCA9IE5VTEw7CisgICAgZ290byBiZWFjaDsKKyAgfQorCisgIHRlbGV0ZXh0LT5idWZfcG9vbCA9IG5ld19wb29sOworCitiZWFjaDoKKyAgZ3N0X3F1ZXJ5X3VucmVmIChhbGxvYyk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3RlbGV0ZXh0ZGVjX25lZ290aWF0ZV9jYXBzIChHc3RUZWxldGV4dERlYyAqIHRlbGV0ZXh0LCBndWludCB3aWR0aCwKKyAgICBndWludCBoZWlnaHQpCit7CisgIGd1aW50IGksIGNhcHNfc2l6ZTsKKyAgZ2Jvb2xlYW4gcnYgPSBGQUxTRTsKKworICAvKiBnZXQgdGhlIHBlZXIncyBjYXBzIGZpbHRlcmVkIGJ5IG91ciBvd24gb25lcy4gKi8KKyAgR3N0Q2FwcyAqb3VyY2FwcyA9IGdzdF9wYWRfcXVlcnlfY2FwcyAodGVsZXRleHQtPnNyY3BhZCwgTlVMTCk7CisgIEdzdENhcHMgKnBlZXJjYXBzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKHRlbGV0ZXh0LT5zcmNwYWQsIG91cmNhcHMpOworICBnc3RfY2Fwc191bnJlZiAob3VyY2Fwcyk7CisKKyAgaWYgKGdzdF9jYXBzX2lzX2VtcHR5IChwZWVyY2FwcykpIHsKKyAgICBnb3RvIGJlYWNoOworICB9CisKKyAgLyogbWFrZSB0aGVtIHdyaXRhYmxlIGluIGNhc2Ugd2UgbmVlZCB0byBmaXhhdGUgdGhlbSAodmlkZW8veC1yYXcpLiAqLworICBwZWVyY2FwcyA9IGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKHBlZXJjYXBzKTsKKyAgY2Fwc19zaXplID0gZ3N0X2NhcHNfZ2V0X3NpemUgKHBlZXJjYXBzKTsKKworICBmb3IgKGkgPSAwOyBpIDwgY2Fwc19zaXplOyBpKyspIHsKKyAgICBHc3RTdHJ1Y3R1cmUgKmNhcHNfc3RydWN0ID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAocGVlcmNhcHMsIGkpOworICAgIGNvbnN0IGdjaGFyICpjYXBzX25hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChjYXBzX3N0cnVjdCk7CisgICAgY29uc3QgZ2NoYXIgKmNhcHNfZm10ID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChjYXBzX3N0cnVjdCwgImZvcm1hdCIpOworCisgICAgaWYgKGdfc3RyY21wMCAoY2Fwc19uYW1lLCAidmlkZW8veC1yYXciKSA9PSAwKSB7CisgICAgICB0ZWxldGV4dC0+d2lkdGggPSB3aWR0aDsKKyAgICAgIHRlbGV0ZXh0LT5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICB0ZWxldGV4dC0+ZXhwb3J0X2Z1bmMgPSBnc3RfdGVsZXRleHRkZWNfZXhwb3J0X3JnYmFfcGFnZTsKKyAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChjYXBzX3N0cnVjdCwKKyAgICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCB3aWR0aCwKKyAgICAgICAgICAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgaGVpZ2h0LAorICAgICAgICAgICJmcmFtZXJhdGUiLCBHU1RfVFlQRV9GUkFDVElPTiwgMCwgMSwgTlVMTCk7CisgICAgICBicmVhazsKKyAgICB9IGVsc2UgaWYgKChnX3N0cmNtcDAgKGNhcHNfbmFtZSwgInRleHQveC1yYXciKSA9PSAwKSAmJgorICAgICAgICAoZ19zdHJjbXAwIChjYXBzX2ZtdCwgInV0Zi04IikgPT0gMCkpIHsKKyAgICAgIHRlbGV0ZXh0LT5leHBvcnRfZnVuYyA9IGdzdF90ZWxldGV4dGRlY19leHBvcnRfdGV4dF9wYWdlOworICAgICAgYnJlYWs7CisgICAgfSBlbHNlIGlmICgoZ19zdHJjbXAwIChjYXBzX25hbWUsICJ0ZXh0L3gtcmF3IikgPT0gMCkgJiYKKyAgICAgICAgKGdfc3RyY21wMCAoY2Fwc19mbXQsICJwYW5nby1tYXJrdXAiKSA9PSAwKSkgeworICAgICAgdGVsZXRleHQtPmV4cG9ydF9mdW5jID0gZ3N0X3RlbGV0ZXh0ZGVjX2V4cG9ydF9wYW5nb19wYWdlOworICAgICAgYnJlYWs7CisgICAgfSBlbHNlIHsKKyAgICAgIGdvdG8gYmVhY2g7CisgICAgfQorICB9CisKKyAgaWYgKCFnc3RfcGFkX3B1c2hfZXZlbnQgKHRlbGV0ZXh0LT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfY2FwcyAocGVlcmNhcHMpKSkgeworICAgIGdvdG8gYmVhY2g7CisgIH0KKworICAvKiB0cnkgdG8gZ2V0IGEgYnVmZmVycG9vbCBmcm9tIHRoZSBwZWVyIHBhZCBpbiBjYXNlIG9mIFJHQkEgb3V0cHV0LiAqLworICBpZiAoZ3N0X3RlbGV0ZXh0ZGVjX2V4cG9ydF9yZ2JhX3BhZ2UgPT0gdGVsZXRleHQtPmV4cG9ydF9mdW5jKSB7CisgICAgZ3N0X3RlbGV0ZXh0ZGVjX3RyeV9nZXRfYnVmZmVyX3Bvb2wgKHRlbGV0ZXh0LCBwZWVyY2FwcywKKyAgICAgICAgd2lkdGggKiBoZWlnaHQgKiBzaXplb2YgKHZiaV9yZ2JhKSk7CisgIH0KKworICAvKiB3ZSBjYW4gaGFwcGlseSByZXR1cm4gYSBzdWNjZXNzIG5vdy4gKi8KKyAgcnYgPSBUUlVFOworCitiZWFjaDoKKyAgZ3N0X2NhcHNfdW5yZWYgKHBlZXJjYXBzKTsKKyAgcmV0dXJuIHJ2OworfQorCiAvKiB0aGlzIGZ1bmN0aW9uIGRvZXMgdGhlIGFjdHVhbCBwcm9jZXNzaW5nCiAgKi8KIHN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfdGVsZXRleHRkZWNfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0QnVmZmVyICogYnVmKQorZ3N0X3RlbGV0ZXh0ZGVjX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmKQogewotICBHc3RUZWxldGV4dERlYyAqdGVsZXRleHQgPSBHU1RfVEVMRVRFWFRERUMgKEdTVF9QQURfUEFSRU5UIChwYWQpKTsKKyAgR3N0VGVsZXRleHREZWMgKnRlbGV0ZXh0ID0gR1NUX1RFTEVURVhUREVDIChwYXJlbnQpOwogICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOwogCiAgIHRlbGV0ZXh0LT5pbl90aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKTsKICAgdGVsZXRleHQtPmluX2R1cmF0aW9uID0gR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKTsKIAotICB0ZWxldGV4dC0+cHJvY2Vzc19idWZfZnVuYyAodGVsZXRleHQsIGJ1Zik7CisgIGdzdF90ZWxldGV4dGRlY19wcm9jZXNzX3RlbHhfYnVmZmVyICh0ZWxldGV4dCwgYnVmKTsKICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKIAotICBnX211dGV4X2xvY2sgKHRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKKyAgZ19tdXRleF9sb2NrICgmdGVsZXRleHQtPnF1ZXVlX2xvY2spOwogICBpZiAoIWdfcXVldWVfaXNfZW1wdHkgKHRlbGV0ZXh0LT5xdWV1ZSkpIHsKICAgICByZXQgPSBnc3RfdGVsZXRleHRkZWNfcHVzaF9wYWdlICh0ZWxldGV4dCk7CiAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgewotICAgICAgZ19tdXRleF91bmxvY2sgKHRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmdGVsZXRleHQtPnF1ZXVlX2xvY2spOwogICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgIH0KLSAgZ19tdXRleF91bmxvY2sgKHRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZ0ZWxldGV4dC0+cXVldWVfbG9jayk7CiAKICAgcmV0dXJuIHJldDsKIApAQCAtNzYwLDkgKzc2OSw5IEBACiAgIHBhZ2VfaW5mbyAqcGk7CiAgIGdpbnQgcGdubywgc3Vibm87CiAgIGdib29sZWFuIHN1Y2Nlc3M7CisgIGd1aW50IHdpZHRoLCBoZWlnaHQ7CiAKLSAgcGkgPSAocGFnZV9pbmZvICopIGdfcXVldWVfcG9wX2hlYWQgKHRlbGV0ZXh0LT5xdWV1ZSk7Ci0KKyAgcGkgPSBnX3F1ZXVlX3BvcF9oZWFkICh0ZWxldGV4dC0+cXVldWUpOwogICBwZ25vID0gdmJpX2JjZDJkZWMgKHBpLT5wZ25vKTsKICAgc3Vibm8gPSB2YmlfYmNkMmRlYyAocGktPnN1Ym5vKTsKIApAQCAtNzcwLDM3ICs3NzksMzcgQEAKIAogICBzdWNjZXNzID0gdmJpX2ZldGNoX3Z0X3BhZ2UgKHRlbGV0ZXh0LT5kZWNvZGVyLCAmcGFnZSwgcGktPnBnbm8sIHBpLT5zdWJubywKICAgICAgIFZCSV9XU1RfTEVWRUxfM3A1LCAyNSwgRkFMU0UpOworICBnX2ZyZWUgKHBpKTsKICAgaWYgKEdfVU5MSUtFTFkgKCFzdWNjZXNzKSkKICAgICBnb3RvIGZldGNoX3BhZ2VfZmFpbGVkOwogCi0gIHN3aXRjaCAodGVsZXRleHQtPm91dHB1dF9mb3JtYXQpIHsKLSAgICBjYXNlIEdTVF9URUxFVEVYVERFQ19PVVRQVVRfRk9STUFUX1RFWFQ6Ci0gICAgICByZXQgPSBnc3RfdGVsZXRleHRkZWNfZXhwb3J0X3RleHRfcGFnZSAodGVsZXRleHQsICZwYWdlLCAmYnVmKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1RFTEVURVhUREVDX09VVFBVVF9GT1JNQVRfSFRNTDoKLSAgICAgIHJldCA9IGdzdF90ZWxldGV4dGRlY19leHBvcnRfaHRtbF9wYWdlICh0ZWxldGV4dCwgJnBhZ2UsICZidWYpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfVEVMRVRFWFRERUNfT1VUUFVUX0ZPUk1BVF9SR0JBOgotICAgICAgcmV0ID0gZ3N0X3RlbGV0ZXh0ZGVjX2V4cG9ydF9yZ2JhX3BhZ2UgKHRlbGV0ZXh0LCAmcGFnZSwgJmJ1Zik7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9URUxFVEVYVERFQ19PVVRQVVRfRk9STUFUX1BBTkdPOgotICAgICAgcmV0ID0gZ3N0X3RlbGV0ZXh0ZGVjX2V4cG9ydF9wYW5nb19wYWdlICh0ZWxldGV4dCwgJnBhZ2UsICZidWYpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotICAgICAgYnJlYWs7Ci0gIH0KLSAgdmJpX3VucmVmX3BhZ2UgKCZwYWdlKTsKLSAgZ19mcmVlIChwaSk7CisgIHdpZHRoID0gQ09MVU1OU19UT19XSURUSCAocGFnZS5jb2x1bW5zKTsKKyAgaGVpZ2h0ID0gUk9XU19UT19IRUlHSFQgKHBhZ2Uucm93cyk7CiAKLSAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKLSAgICBnb3RvIGFsbG9jX2ZhaWxlZDsKKyAgLyogaWYgb3V0cHV0X2Z1bmMgaXMgTlVMTCwgd2UgbmVlZCB0byAocmUtKW5lZ290aWF0ZS4gYWxzbywgaXQgaXMgcG9zc2libGUKKyAgICogKHRob3VnaCB1bmxpa2VseSkgdGhhdCB3ZSByZWNlaXZlZCBhIHBhZ2Ugb2YgYSBkaWZmZXJlbnQgc2l6ZS4gKi8KKyAgaWYgKEdfVU5MSUtFTFkgKE5VTEwgPT0gdGVsZXRleHQtPmV4cG9ydF9mdW5jIHx8CisgICAgICAgICAgdGVsZXRleHQtPndpZHRoICE9IHdpZHRoIHx8IHRlbGV0ZXh0LT5oZWlnaHQgIT0gaGVpZ2h0KSkgeworICAgIC8qIGlmIG5lZ290aWF0ZV9jYXBzIHJldHVybnMgRkFMU0UsIHRoYXQgbWVhbnMgd2Ugd2VyZW4ndCBhYmxlIHRvCisgICAgICogbmVnb3RpYXRlLiAqLworICAgIGlmIChHX1VOTElLRUxZICghZ3N0X3RlbGV0ZXh0ZGVjX25lZ290aWF0ZV9jYXBzICh0ZWxldGV4dCwgd2lkdGgsIGhlaWdodCkpKSB7CisgICAgICByZXQgPSBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKKyAgICAgIGdvdG8gcHVzaF9mYWlsZWQ7CisgICAgfQorICAgIGlmIChHX1VOTElLRUxZICh0ZWxldGV4dC0+c2VnbWVudCkpIHsKKyAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAodGVsZXRleHQtPnNyY3BhZCwgdGVsZXRleHQtPnNlZ21lbnQpOworICAgICAgdGVsZXRleHQtPnNlZ21lbnQgPSBOVUxMOworICAgIH0KKyAgfQorCisgIHRlbGV0ZXh0LT5leHBvcnRfZnVuYyAodGVsZXRleHQsICZwYWdlLCAmYnVmKTsKKyAgdmJpX3VucmVmX3BhZ2UgKCZwYWdlKTsKIAogICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSA9IHRlbGV0ZXh0LT5pbl90aW1lc3RhbXA7CiAgIEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZikgPSB0ZWxldGV4dC0+aW5fZHVyYXRpb247CiAKLSAgR1NUX0lORk9fT0JKRUNUICh0ZWxldGV4dCwgIlB1c2hpbmcgYnVmZmVyIG9mIHNpemUgJWQiLAotICAgICAgR1NUX0JVRkZFUl9TSVpFIChidWYpKTsKKyAgR1NUX0lORk9fT0JKRUNUICh0ZWxldGV4dCwgIlB1c2hpbmcgYnVmZmVyIG9mIHNpemUgJSIgR19HU0laRV9GT1JNQVQsCisgICAgICBnc3RfYnVmZmVyX2dldF9zaXplIChidWYpKTsKIAogICByZXQgPSBnc3RfcGFkX3B1c2ggKHRlbGV0ZXh0LT5zcmNwYWQsIGJ1Zik7CiAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spCkBAIC04MTQsMTMgKzgyMyw2IEBACiAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICB9CiAKLWFsbG9jX2ZhaWxlZDoKLSAgewotICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHRlbGV0ZXh0LCAiRXJyb3IgYWxsb2NhdGluZyBvdXRwdXQgYnVmZmVyLCByZWFzb24gJXMiLAotICAgICAgICBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSk7Ci0gICAgcmV0dXJuIHJldDsKLSAgfQotCiBwdXNoX2ZhaWxlZDoKICAgewogICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHRlbGV0ZXh0LCAiUHVzaGluZyBidWZmZXIgZmFpbGVkLCByZWFzb24gJXMiLApAQCAtODMwLDE3ICs4MzIsMTcgQEAKIH0KIAogc3RhdGljIGdjaGFyICoqCi1nc3RfdGVsZXRleHRkZWNfdmJpX3BhZ2VfdG9fdGV4dF9saW5lcyAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCwKLSAgICBndWludCBzdGFydCwgZ3VpbnQgc3RvcCwgdmJpX3BhZ2UgKiBwYWdlKQorZ3N0X3RlbGV0ZXh0ZGVjX3ZiaV9wYWdlX3RvX3RleHRfbGluZXMgKGd1aW50IHN0YXJ0LCBndWludCBzdG9wLCB2YmlfcGFnZSAqCisgICAgcGFnZSkKIHsKICAgY29uc3QgZ3VpbnQgbGluZXNfY291bnQgPSBzdG9wIC0gc3RhcnQgKyAxOwogICBjb25zdCBndWludCBsaW5lX2xlbmd0aCA9IHBhZ2UtPmNvbHVtbnM7CiAgIGdjaGFyICoqbGluZXM7Ci0gIGdpbnQgaTsKKyAgZ3VpbnQgaTsKIAogICAvKiBhbGxvY2F0ZSBhIG5ldyBOVUxMLXRlcm1pbmF0ZWQgYXJyYXkgb2Ygc3RyaW5ncyAqLwogICBsaW5lcyA9IChnY2hhciAqKikgZ19tYWxsb2MgKHNpemVvZiAoZ2NoYXIgKikgKiAobGluZXNfY291bnQgKyAxKSk7Ci0gIGxpbmVzW2xpbmVzX2NvdW50XSA9IGdfc3RyZHVwICgnXDAnKTsKKyAgbGluZXNbbGluZXNfY291bnRdID0gTlVMTDsKIAogICAvKiBleHBvcnQgZWFjaCBsaW5lIGluIHRoZSByYW5nZSBvZiB0aGUgdGVsZXRleHQgcGFnZSBpbiB0ZXh0IGZvcm1hdCAqLwogICBmb3IgKGkgPSBzdGFydDsgaSA8PSBzdG9wOyBpKyspIHsKQEAgLTg1OCw4ICs4NjAsNiBAQAogZ3N0X3RlbGV0ZXh0ZGVjX2V4cG9ydF90ZXh0X3BhZ2UgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQsIHZiaV9wYWdlICogcGFnZSwKICAgICBHc3RCdWZmZXIgKiogYnVmKQogewotICBHc3RDYXBzICpjYXBzOwotICBHc3RGbG93UmV0dXJuIHJldDsKICAgZ2NoYXIgKnRleHQ7CiAgIGd1aW50IHNpemU7CiAKQEAgLTg2OCw3ICs4NjgsNyBAQAogICAgIEdTdHJpbmcgKnN1YnM7CiAgICAgZ3VpbnQgaTsKIAotICAgIGxpbmVzID0gZ3N0X3RlbGV0ZXh0ZGVjX3ZiaV9wYWdlX3RvX3RleHRfbGluZXMgKHRlbGV0ZXh0LCAxLCAyMywgcGFnZSk7CisgICAgbGluZXMgPSBnc3RfdGVsZXRleHRkZWNfdmJpX3BhZ2VfdG9fdGV4dF9saW5lcyAoMSwgMjMsIHBhZ2UpOwogICAgIHN1YnMgPSBnX3N0cmluZ19uZXcgKCIiKTsKICAgICAvKiBTdHJpcCB3aGl0ZSBzcGFjZXMgYW5kIHNxdWFzaCBibGFuayBsaW5lcyAqLwogICAgIGZvciAoaSA9IDA7IGkgPCAyMzsgaSsrKSB7CkBAIC04OTIsNTIgKzg5Miw5IEBACiAgIH0KIAogICAvKiBBbGxvY2F0ZSBuZXcgYnVmZmVyICovCi0gIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgidGV4dC9wbGFpbiIsIE5VTEwpOwotICByZXQgPSBnc3RfcGFkX2FsbG9jX2J1ZmZlciAodGVsZXRleHQtPnNyY3BhZCwgR1NUX0JVRkZFUl9PRkZTRVRfTk9ORSwKLSAgICAgIHNpemUsIGNhcHMsICYoKmJ1ZikpOwotICBpZiAoR19MSUtFTFkgKHJldCA9PSBHU1RfRkxPV19PSykpCi0gICAgR1NUX0JVRkZFUl9EQVRBICgqYnVmKSA9IEdTVF9CVUZGRVJfTUFMTE9DREFUQSAoKmJ1ZikgPSAoZ3VpbnQ4ICopIHRleHQ7Ci0gIGVsc2UKLSAgICBnc3RfYnVmZmVyX3VucmVmICgqYnVmKTsKKyAgKmJ1ZiA9IGdzdF9idWZmZXJfbmV3X3dyYXBwZWQgKHRleHQsIHNpemUpOwogCi0gIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF90ZWxldGV4dGRlY19leHBvcnRfaHRtbF9wYWdlIChHc3RUZWxldGV4dERlYyAqIHRlbGV0ZXh0LCB2YmlfcGFnZSAqIHBhZ2UsCi0gICAgR3N0QnVmZmVyICoqIGJ1ZikKLXsKLSAgR3N0Q2FwcyAqY2FwczsKLSAgR3N0Rmxvd1JldHVybiByZXQ7Ci0gIGdjaGFyICpodG1sOwotICBnc3NpemUgc2l6ZTsKLSAgdmJpX2V4cG9ydCAqZXg7Ci0gIGdjaGFyICplcnI7Ci0KLSAgaWYgKCEoZXggPSB2YmlfZXhwb3J0X25ldyAoImh0bWwiLCAmZXJyKSkpIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAodGVsZXRleHQsIExJQlJBUlksIFNFVFRJTkdTLAotICAgICAgICAoIkNhbid0IG9wZW4gdGhlIEhUTUwgZXhwb3J0IG1vZHVsZTogJXMiLCBlcnIpLCAoTlVMTCkpOwotICAgIGdfZnJlZSAoZXJyKTsKLSAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7Ci0gIH0KLQotICAvKiBleHBvcnQgdG8gTlVMTCB0byBnZXQgc2l6ZSBvZiB0aGUgbWVtb3J5IG5lZWRlZCB0byBhbGxvY2F0ZSB0aGUgcGFnZSAqLwotICBzaXplID0gdmJpX2V4cG9ydF9tZW0gKGV4LCBOVUxMLCAwLCBwYWdlKTsKLSAgaWYgKHNpemUgPCAwKQotICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLSAgaHRtbCA9IGdfbWFsbG9jIChzaXplKTsKLSAgdmJpX2V4cG9ydF9tZW0gKGV4LCBodG1sLCBzaXplLCBwYWdlKTsKLQotICAvKiBBbGxvY2F0ZSBuZXcgYnVmZmVyICovCi0gIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgidGV4dC9odG1sIiwgTlVMTCk7Ci0gIHJldCA9IGdzdF9wYWRfYWxsb2NfYnVmZmVyICh0ZWxldGV4dC0+c3JjcGFkLCBHU1RfQlVGRkVSX09GRlNFVF9OT05FLAotICAgICAgc2l6ZSwgY2FwcywgJigqYnVmKSk7Ci0gIGlmIChHX0xJS0VMWSAocmV0ID09IEdTVF9GTE9XX09LKSkKLSAgICBHU1RfQlVGRkVSX0RBVEEgKCpidWYpID0gR1NUX0JVRkZFUl9NQUxMT0NEQVRBICgqYnVmKSA9IChndWludDggKikgaHRtbDsKLQotICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gIHJldHVybiByZXQ7CisgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIAogc3RhdGljIEdzdEZsb3dSZXR1cm4KQEAgLTk0NSw0MCArOTAyLDM0IEBACiAgICAgR3N0QnVmZmVyICoqIGJ1ZikKIHsKICAgZ3VpbnQgc2l6ZTsKLSAgR3N0Q2FwcyAqY2FwcywgKm91dF9jYXBzOwotICBHc3RGbG93UmV0dXJuIHJldDsKLSAgZ2ludCB3aWR0aCwgaGVpZ2h0OwotICBHc3RQYWRUZW1wbGF0ZSAqdGVtcGw7CisgIEdzdEJ1ZmZlciAqbGJ1ZjsKKyAgR3N0TWFwSW5mbyBidWZfbWFwOwogCi0gIC8qIG9uZSBjaGFyYWN0ZXIgb2NjdXBpZXMgMTIgeCAxMCBwaXhlbHMgKi8KLSAgd2lkdGggPSBwYWdlLT5jb2x1bW5zICogMTI7Ci0gIGhlaWdodCA9IHBhZ2UtPnJvd3MgKiAxMDsKKyAgc2l6ZSA9IHRlbGV0ZXh0LT53aWR0aCAqIHRlbGV0ZXh0LT5oZWlnaHQgKiBzaXplb2YgKHZiaV9yZ2JhKTsKIAotICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoInZpZGVvL3gtcmF3LXJnYiIsCi0gICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCB3aWR0aCwKLSAgICAgICJoZWlnaHQiLCBHX1RZUEVfSU5ULCBoZWlnaHQsCi0gICAgICAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT04sIHRlbGV0ZXh0LT5yYXRlX251bWVyYXRvciwKLSAgICAgIHRlbGV0ZXh0LT5yYXRlX2Rlbm9taW5hdG9yLCBOVUxMKTsKLQotICB0ZW1wbCA9IGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNyY190ZW1wbGF0ZSk7Ci0gIG91dF9jYXBzID0gZ3N0X2NhcHNfaW50ZXJzZWN0IChjYXBzLCBnc3RfcGFkX3RlbXBsYXRlX2dldF9jYXBzICh0ZW1wbCkpOwotICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gIGdzdF9vYmplY3RfdW5yZWYgKHRlbXBsKTsKLQotICBzaXplID0gKGd1aW50KSB3aWR0aCAqKGd1aW50KSBoZWlnaHQgKnNpemVvZiAodmJpX3JnYmEpOwotCi0gIHJldCA9IGdzdF9wYWRfYWxsb2NfYnVmZmVyX2FuZF9zZXRfY2FwcyAodGVsZXRleHQtPnNyY3BhZCwKLSAgICAgIEdTVF9CVUZGRVJfT0ZGU0VUX05PTkUsIHNpemUsIG91dF9jYXBzLCAmKCpidWYpKTsKLQotICBpZiAocmV0ID09IEdTVF9GTE9XX09LKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAodGVsZXRleHQsICJDcmVhdGluZyBpbWFnZSB3aXRoICVkIHJvd3MgYW5kICVkIGNvbHMiLAotICAgICAgICBwYWdlLT5yb3dzLCBwYWdlLT5jb2x1bW5zKTsKLSAgICB2YmlfZHJhd192dF9wYWdlIChwYWdlLCBWQklfUElYRk1UX1JHQkEzMl9MRSwKLSAgICAgICAgKHZiaV9yZ2JhICopIEdTVF9CVUZGRVJfREFUQSAoKmJ1ZiksIEZBTFNFLCBUUlVFKTsKKyAgLyogQWxsb2NhdGUgbmV3IGJ1ZmZlciwgdXNpbmcgdGhlIG5lZ290aWF0ZWQgcG9vbCBpZiBhdmFpbGFibGUuICovCisgIGlmICh0ZWxldGV4dC0+YnVmX3Bvb2wpIHsKKyAgICBHc3RGbG93UmV0dXJuIGFjcXVpcmVfcnYgPQorICAgICAgICBnc3RfYnVmZmVyX3Bvb2xfYWNxdWlyZV9idWZmZXIgKHRlbGV0ZXh0LT5idWZfcG9vbCwgJmxidWYsIE5VTEwpOworICAgIGlmIChhY3F1aXJlX3J2ICE9IEdTVF9GTE9XX09LKSB7CisgICAgICByZXR1cm4gYWNxdWlyZV9ydjsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgbGJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FsbG9jYXRlIChOVUxMLCBzaXplLCBOVUxMKTsKKyAgICBpZiAoTlVMTCA9PSBsYnVmKQorICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICB9CiAKLSAgZ3N0X2NhcHNfdW5yZWYgKG91dF9jYXBzKTsKLSAgcmV0dXJuIHJldDsKKyAgaWYgKCFnc3RfYnVmZmVyX21hcCAobGJ1ZiwgJmJ1Zl9tYXAsIEdTVF9NQVBfV1JJVEUpKSB7CisgICAgZ3N0X2J1ZmZlcl91bnJlZiAobGJ1Zik7CisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICB9CisKKyAgdmJpX2RyYXdfdnRfcGFnZSAocGFnZSwgVkJJX1BJWEZNVF9SR0JBMzJfTEUsIGJ1Zl9tYXAuZGF0YSwgRkFMU0UsIFRSVUUpOworICBnc3RfYnVmZmVyX3VubWFwIChsYnVmLCAmYnVmX21hcCk7CisgICpidWYgPSBsYnVmOworCisgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIAogc3RhdGljIEdzdEZsb3dSZXR1cm4KQEAgLTk5MCwxMyArOTQxLDExIEBACiAgIGdjaGFyICoqY29sb3JzOwogICBnY2hhciAqKmxpbmVzOwogICBHU3RyaW5nICpzdWJzOwotICBHc3RDYXBzICpjYXBzOwotICBHc3RGbG93UmV0dXJuIHJldDsKLSAgZ3VpbnQgc3RhcnQsIHN0b3A7Ci0gIGd1aW50IGksIGo7CisgIGd1aW50IHN0YXJ0LCBzdG9wLCBrOworICBnaW50IGksIGo7CiAKICAgY29sb3JzID0gKGdjaGFyICoqKSBnX21hbGxvYyAoc2l6ZW9mIChnY2hhciAqKSAqIChyb3dzICsgMSkpOwotICBjb2xvcnNbcm93c10gPSBnX3N0cmR1cCAoJ1wwJyk7CisgIGNvbG9yc1tyb3dzXSA9IE5VTEw7CiAKICAgLyogcGFyc2UgYWxsIHRoZSBsaW5lcyBhbmQgYXBwcm94aW1hdGUgaXQncyBmb3JlZ3JvdW5kIGNvbG9yIHVzaW5nIHRoZSBmaXJzdAogICAgKiBub24gbnVsbCBjaGFyYWN0ZXIgKi8KQEAgLTEwMTMsNzcgKzk2MiwyNCBAQAogICAvKiBnZXQgYW4gYXJyYXkgb2Ygc3RyaW5ncyB3aXRoIGVhY2ggbGluZSBvZiB0aGUgdGVsZXh0IHBhZ2UgKi8KICAgc3RhcnQgPSB0ZWxldGV4dC0+c3VidGl0bGVzX21vZGUgPyAxIDogMDsKICAgc3RvcCA9IHRlbGV0ZXh0LT5zdWJ0aXRsZXNfbW9kZSA/IHJvd3MgLSAyIDogcm93cyAtIDE7Ci0gIGxpbmVzID0gZ3N0X3RlbGV0ZXh0ZGVjX3ZiaV9wYWdlX3RvX3RleHRfbGluZXMgKHRlbGV0ZXh0LCBzdGFydCwgc3RvcCwgcGFnZSk7CisgIGxpbmVzID0gZ3N0X3RlbGV0ZXh0ZGVjX3ZiaV9wYWdlX3RvX3RleHRfbGluZXMgKHN0YXJ0LCBzdG9wLCBwYWdlKTsKIAogICAvKiBmb3JtYXQgZWFjaCBsaW5lIGluIHBhbmdvIG1hcmt1cCAqLwogICBzdWJzID0gZ19zdHJpbmdfbmV3ICgiIik7Ci0gIGZvciAoaSA9IHN0YXJ0OyBpIDw9IHN0b3A7IGkrKykgeworICBmb3IgKGsgPSBzdGFydDsgayA8PSBzdG9wOyBrKyspIHsKICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChzdWJzLCBQQU5HT19URU1QTEFURSwKLSAgICAgICAgdGVsZXRleHQtPmZvbnRfZGVzY3JpcHRpb24sIGNvbG9yc1tpXSwgbGluZXNbaSAtIHN0YXJ0XSk7CisgICAgICAgIHRlbGV0ZXh0LT5mb250X2Rlc2NyaXB0aW9uLCBjb2xvcnNba10sIGxpbmVzW2sgLSBzdGFydF0pOwogICB9CiAKICAgLyogQWxsb2NhdGUgbmV3IGJ1ZmZlciAqLwotICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoInRleHQveC1wYW5nby1tYXJrdXAiLCBOVUxMKTsKLSAgcmV0ID0gZ3N0X3BhZF9hbGxvY19idWZmZXIgKHRlbGV0ZXh0LT5zcmNwYWQsIEdTVF9CVUZGRVJfT0ZGU0VUX05PTkUsCi0gICAgICBzdWJzLT5sZW4gKyAxLCBjYXBzLCAmKCpidWYpKTsKLSAgaWYgKEdfTElLRUxZIChyZXQgPT0gR1NUX0ZMT1dfT0spKQotICAgIEdTVF9CVUZGRVJfREFUQSAoKmJ1ZikgPSBHU1RfQlVGRkVSX01BTExPQ0RBVEEgKCpidWYpID0KLSAgICAgICAgKGd1aW50OCAqKSBzdWJzLT5zdHI7Ci0gIGVsc2UKLSAgICBnc3RfYnVmZmVyX3VucmVmICgqYnVmKTsKKyAgKmJ1ZiA9IGdzdF9idWZmZXJfbmV3X3dyYXBwZWQgKHN1YnMtPnN0ciwgc3Vicy0+bGVuICsgMSk7CiAKICAgZ19zdHJmcmVldiAobGluZXMpOwogICBnX3N0cmZyZWV2IChjb2xvcnMpOwogICBnX3N0cmluZ19mcmVlIChzdWJzLCBGQUxTRSk7Ci0gIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLSAgcmV0dXJuIHJldDsKKyAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF90ZWxldGV4dGRlY19wdXNoX3ByZXJvbGxfYnVmZmVyIChHc3RUZWxldGV4dERlYyAqIHRlbGV0ZXh0KQotewotICBHc3RGbG93UmV0dXJuIHJldDsKLSAgR3N0QnVmZmVyICpidWY7Ci0gIGdib29sZWFuIHJlcyA9IFRSVUU7Ci0gIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwotICBjb25zdCBnY2hhciAqbWltZXR5cGU7Ci0gIEdzdENhcHMgKm91dF9jYXBzLCAqcGVlcl9jYXBzLCAqcGFkX2NhcHM7Ci0KLSAgLyogdGhlIHN0cmVhbSBpcyBzcGFyc2UsIHdlIHNlbmQgYSBkdW1teSBidWZmZXIgZm9yIHByZXJvbGwgKi8KLSAgcGVlcl9jYXBzID0gZ3N0X3BhZF9wZWVyX2dldF9jYXBzICh0ZWxldGV4dC0+c3JjcGFkKTsKLSAgcGFkX2NhcHMgPSBnc3RfcGFkX2dldF9jYXBzICh0ZWxldGV4dC0+c3JjcGFkKTsKLSAgb3V0X2NhcHMgPSBnc3RfY2Fwc19pbnRlcnNlY3QgKHBhZF9jYXBzLCBwZWVyX2NhcHMpOwotCi0gIGlmIChnc3RfY2Fwc19pc19lbXB0eSAob3V0X2NhcHMpKSB7Ci0gICAgcmVzID0gRkFMU0U7Ci0gICAgZ290byBiZWFjaDsKLSAgfQotCi0gIGdzdF9jYXBzX3RydW5jYXRlIChvdXRfY2Fwcyk7Ci0gIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKG91dF9jYXBzLCAwKTsKLSAgbWltZXR5cGUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzdHJ1Y3R1cmUpOwotICBpZiAoZ19zdHJjbXAwIChtaW1ldHlwZSwgInZpZGVvL3gtcmF3LXJnYiIpID09IDApIHsKLSAgICAvKiBvbWl0IHByZXJvbGwgYnVmZmVyIGZvciB0aGlzIGZvcm1hdCAqLwotICAgIGdvdG8gYmVhY2g7Ci0gIH0KLQotICBidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKDEpOwotICBHU1RfQlVGRkVSX0RBVEEgKGJ1ZilbMF0gPSAwOwotICBnc3RfYnVmZmVyX3NldF9jYXBzIChidWYsIG91dF9jYXBzKTsKLSAgcmV0ID0gZ3N0X3BhZF9wdXNoICh0ZWxldGV4dC0+c3JjcGFkLCBidWYpOwotICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKQotICAgIHJlcyA9IEZBTFNFOwotCi1iZWFjaDoKLSAgewotICAgIGdzdF9jYXBzX3VucmVmIChvdXRfY2Fwcyk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYgKHBhZF9jYXBzKTsKLSAgICBnc3RfY2Fwc191bnJlZiAocGVlcl9jYXBzKTsKLSAgICByZXR1cm4gcmVzOwotICB9Ci19Ci0KLQogLyogQ29udmVydHMgdGhlIGxpbmVfb2Zmc2V0IC8gZmllbGRfcGFyaXR5IGJ5dGUgb2YgYSBWQkkgZGF0YSB1bml0LiAqLwogc3RhdGljIHZvaWQKIGdzdF90ZWxldGV4dGRlY19sb2ZwX3RvX2xpbmUgKGd1aW50ICogZmllbGQsIGd1aW50ICogZmllbGRfbGluZSwKQEAgLTExNjAsOSArMTA1Niw5IEBACiAKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X3RlbGV0ZXh0ZGVjX2V4dHJhY3RfZGF0YV91bml0cyAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCwKLSAgICBHc3RUZWxldGV4dEZyYW1lICogZiwgZ3VpbnQ4ICogcGFja2V0LCBndWludCAqIG9mZnNldCwgZ2ludCBzaXplKQorICAgIEdzdFRlbGV0ZXh0RnJhbWUgKiBmLCBjb25zdCBndWludDggKiBwYWNrZXQsIGd1aW50ICogb2Zmc2V0LCBnc2l6ZSBzaXplKQogewotICBndWludDggKmRhdGFfdW5pdDsKKyAgY29uc3QgZ3VpbnQ4ICpkYXRhX3VuaXQ7CiAgIGd1aW50IGk7CiAKICAgd2hpbGUgKCpvZmZzZXQgPCBzaXplKSB7CkBAIC0xMjQzLDMgKzExMzksMTggQEAKICAgfQogICByZXR1cm4gVkJJX1NVQ0NFU1M7CiB9CisKK3N0YXRpYyBnYm9vbGVhbgordGVsZXRleHRfaW5pdCAoR3N0UGx1Z2luICogdGVsZXRleHQpCit7CisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfdGVsZXRleHRkZWNfZGVidWcsICJ0ZWxldGV4dCIsIDAsCisgICAgICAiVGVsZXRleHQgZGVjb2RlciIpOworICByZXR1cm4gZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHRlbGV0ZXh0LCAidGVsZXRleHRkZWMiLCBHU1RfUkFOS19OT05FLAorICAgICAgR1NUX1RZUEVfVEVMRVRFWFRERUMpOworfQorCitHU1RfUExVR0lOX0RFRklORSAoR1NUX1ZFUlNJT05fTUFKT1IsCisgICAgR1NUX1ZFUlNJT05fTUlOT1IsCisgICAgdGVsZXRleHQsCisgICAgIlRlbGV0ZXh0IHBsdWdpbiIsCisgICAgdGVsZXRleHRfaW5pdCwgVkVSU0lPTiwgIkxHUEwiLCAiR1N0cmVhbWVyIiwgImh0dHA6Ly9nc3RyZWFtZXIubmV0LyIpCmRpZmYgLS1naXQgYS9leHQvdGVsZXRleHRkZWMvZ3N0dGVsZXRleHRkZWMuaCBiL2V4dC90ZWxldGV4dGRlYy9nc3R0ZWxldGV4dGRlYy5oCmluZGV4IDQ2MDc5M2QuLjdjNTQ0YmEgMTAwNjQ0Ci0tLSBhL2V4dC90ZWxldGV4dGRlYy9nc3R0ZWxldGV4dGRlYy5oCisrKyBiL2V4dC90ZWxldGV4dGRlYy9nc3R0ZWxldGV4dGRlYy5oCkBAIC00MSwxNiArNDEsOCBAQAogdHlwZWRlZiBzdHJ1Y3QgX0dzdFRlbGV0ZXh0RnJhbWUgR3N0VGVsZXRleHRGcmFtZTsKIHR5cGVkZWYgZW51bSBfR3N0VGVsZXRleHRPdXRwdXRGb3JtYXQgR3N0VGVsZXRleHRPdXRwdXRGb3JtYXQ7CiAKLWVudW0gX0dzdFRlbGV0ZXh0T3V0cHV0Rm9ybWF0Ci17Ci0gIEdTVF9URUxFVEVYVERFQ19PVVRQVVRfRk9STUFUX1JHQkEsCi0gIEdTVF9URUxFVEVYVERFQ19PVVRQVVRfRk9STUFUX1RFWFQsCi0gIEdTVF9URUxFVEVYVERFQ19PVVRQVVRfRk9STUFUX0hUTUwsCi0gIEdTVF9URUxFVEVYVERFQ19PVVRQVVRfRk9STUFUX1BBTkdPCi19OwotCi10eXBlZGVmIHZvaWQgKCpHc3RUZWxldGV4dFByb2Nlc3NCdWZmZXJGdW5jKSAoR3N0VGVsZXRleHREZWMgKgotICAgIHRlbGV0ZXh0LCBHc3RCdWZmZXIgKiBidWYpOwordHlwZWRlZiBHc3RGbG93UmV0dXJuICgqR3N0VGVsZXRleHRFeHBvcnRGdW5jKSAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCwKKyAgICB2YmlfcGFnZSAqIHBhZ2UsIEdzdEJ1ZmZlciAqKiBidWYpOwogCiBzdHJ1Y3QgX0dzdFRlbGV0ZXh0RGVjCiB7CkBAIC01OCw2ICs1MCw3IEBACiAKICAgR3N0UGFkICpzaW5rcGFkOwogICBHc3RQYWQgKnNyY3BhZDsKKyAgR3N0RXZlbnQgKnNlZ21lbnQ7CiAKICAgR3N0Q2xvY2tUaW1lIGluX3RpbWVzdGFtcDsKICAgR3N0Q2xvY2tUaW1lIGluX2R1cmF0aW9uOwpAQCAtNzEsMTcgKzY0LDIyIEBACiAgIGdjaGFyICpzdWJ0aXRsZXNfdGVtcGxhdGU7CiAgIGdjaGFyICpmb250X2Rlc2NyaXB0aW9uOwogCi0gIHZiaV9kdmJfZGVtdXggKmRlbXV4OwogICB2YmlfZGVjb2RlciAqZGVjb2RlcjsKLSAgdmJpX2V4cG9ydCAqZXhwb3J0ZXI7CisKICAgR1F1ZXVlICpxdWV1ZTsKLSAgR011dGV4ICpxdWV1ZV9sb2NrOworICBHTXV0ZXggcXVldWVfbG9jazsKIAogICBHc3RUZWxldGV4dEZyYW1lICpmcmFtZTsKICAgZmxvYXQgbGFzdF90czsKLSAgR3N0VGVsZXRleHRPdXRwdXRGb3JtYXQgb3V0cHV0X2Zvcm1hdDsKIAotICBHc3RUZWxldGV4dFByb2Nlc3NCdWZmZXJGdW5jIHByb2Nlc3NfYnVmX2Z1bmM7CisgIEdzdFRlbGV0ZXh0RXhwb3J0RnVuYyBleHBvcnRfZnVuYzsKKworICAvKiBuZWdvdGlhdGVkIHNpemUgb2YgdGhlIG91dHB1dCBpbWFnZSBpbiBSR0JBIG1vZGUuICovCisgIGd1aW50IHdpZHRoOworICBndWludCBoZWlnaHQ7CisKKyAgLyogYnVmZmVyIHBvb2wgcmVjZWl2ZWQgZnJvbSB0aGUgcGVlciBwYWQgLSB1c2VkIGluIFJHQkEgb3V0cHV0IG9ubHkuICovCisgIEdzdEJ1ZmZlclBvb2wgKmJ1Zl9wb29sOwogfTsKIAogc3RydWN0IF9Hc3RUZWxldGV4dEZyYW1lCmRpZmYgLS1naXQgYS9leHQvdGVsZXRleHRkZWMvdGVsZXRleHQuYyBiL2V4dC90ZWxldGV4dGRlYy90ZWxldGV4dC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDNmMTNlLi4wMDAwMDAwCi0tLSBhL2V4dC90ZWxldGV4dGRlYy90ZWxldGV4dC5jCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLyoKLSAqIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDA5IFNlYmFzdGlhbiBQw7Zsc3RlcmwgPHNlYnBAay1kLXcub3JnPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZDFpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSAiZ3N0dGVsZXRleHRkZWMuaCIKLQotLyogZW50cnkgcG9pbnQgdG8gaW5pdGlhbGl6ZSB0aGUgcGx1Zy1pbgotICogaW5pdGlhbGl6ZSB0aGUgcGx1Zy1pbiBpdHNlbGYKLSAqIHJlZ2lzdGVyIHRoZSBlbGVtZW50IGZhY3RvcmllcyBhbmQgb3RoZXIgZmVhdHVyZXMKLSAqLwotc3RhdGljIGdib29sZWFuCi10ZWxldGV4dF9pbml0IChHc3RQbHVnaW4gKiB0ZWxldGV4dCkKLXsKLSAgcmV0dXJuIGdzdF9lbGVtZW50X3JlZ2lzdGVyICh0ZWxldGV4dCwgInRlbGV0ZXh0ZGVjIiwgR1NUX1JBTktfTk9ORSwKLSAgICAgIEdTVF9UWVBFX1RFTEVURVhUREVDKTsKLX0KLQotR1NUX1BMVUdJTl9ERUZJTkUgKEdTVF9WRVJTSU9OX01BSk9SLAotICAgIEdTVF9WRVJTSU9OX01JTk9SLAotICAgIHRlbGV0ZXh0LAotICAgICJUZWxldGV4dCBwbHVnaW4iLAotICAgIHRlbGV0ZXh0X2luaXQsIFZFUlNJT04sICJMR1BMIiwgIkdTdHJlYW1lciIsICJodHRwOi8vZ3N0cmVhbWVyLm5ldC8iKQpkaWZmIC0tZ2l0IGEvZXh0L3RpbWlkaXR5L01ha2VmaWxlLmluIGIvZXh0L3RpbWlkaXR5L01ha2VmaWxlLmluCmluZGV4IGJkNjcxNjUuLjk1NDQ2NzkgMTAwNjQ0Ci0tLSBhL2V4dC90aW1pZGl0eS9NYWtlZmlsZS5pbgorKysgYi9leHQvdGltaWRpdHkvTWFrZWZpbGUuaW4KQEAgLTExOCwxNiArMTE4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjkzLDYgKzI5Miw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzMwLDYgKzMzMSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzM4LDcgKzM0MSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM1Nyw4ICszNTksOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzc1LDE2ICszNzgsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDEwLDYgKzQxNCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQzNSw2ICs0NDEsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MzYsNiArNTQ0LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU0OSw4ICs1NTgsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NjYsNiArNTczLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYyMywxNiArNjMyLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjg0LDYgKzY5NSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02OTQsNiArNzA2LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzAzLDYgKzcxNiw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03NDAsNyArNzU1LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvdGltaWRpdHkvZ3N0dGltaWRpdHkuYyBiL2V4dC90aW1pZGl0eS9nc3R0aW1pZGl0eS5jCmluZGV4IDA4Njc3OTUuLjQxOGE1ZmUgMTAwNjQ0Ci0tLSBhL2V4dC90aW1pZGl0eS9nc3R0aW1pZGl0eS5jCisrKyBiL2V4dC90aW1pZGl0eS9nc3R0aW1pZGl0eS5jCkBAIC01ODgsOCArNTg4LDcgQEAKICAgICAgIGdvdG8gcGF1c2VkOwogICAgIH0KIAotICAgIGlmICh0aW1pZGl0eS0+bWlkaWRhdGEpCi0gICAgICBnX2ZyZWUgKHRpbWlkaXR5LT5taWRpZGF0YSk7CisgICAgZ19mcmVlICh0aW1pZGl0eS0+bWlkaWRhdGEpOwogCiAgICAgdGltaWRpdHktPm1pZGlkYXRhID0gZ19tYWxsb2MgKHRpbWlkaXR5LT5taWRpZGF0YV9zaXplKTsKICAgICB0aW1pZGl0eS0+bWlkaWRhdGFfb2Zmc2V0ID0gMDsKZGlmZiAtLWdpdCBhL2V4dC92b2FhY2VuYy9NYWtlZmlsZS5pbiBiL2V4dC92b2FhY2VuYy9NYWtlZmlsZS5pbgppbmRleCAyNTk3NzVhLi4wNWYyMjI1IDEwMDY0NAotLS0gYS9leHQvdm9hYWNlbmMvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3ZvYWFjZW5jL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L3ZvYW1yd2JlbmMvTWFrZWZpbGUuaW4gYi9leHQvdm9hbXJ3YmVuYy9NYWtlZmlsZS5pbgppbmRleCA2MmM0YjRlLi45MDA0MTE3IDEwMDY0NAotLS0gYS9leHQvdm9hbXJ3YmVuYy9NYWtlZmlsZS5pbgorKysgYi9leHQvdm9hbXJ3YmVuYy9NYWtlZmlsZS5pbgpAQCAtMTE3LDE2ICsxMTcsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzcsNiArMjc2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTQsNiArMzE1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjIsNyArMzI1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQxLDggKzM0Myw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTksMTYgKzM2MiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTQsNiArMzk4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE5LDYgKzQyNSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMCw2ICs1MjgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMzLDggKzU0Miw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1MCw2ICs1NTcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA3LDE2ICs2MTYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjgsNiArNjc5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3OCw2ICs2OTAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODcsNiArNzAwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNCw3ICs3MzksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vTWFrZWZpbGUuYW0gYi9leHQvdnVsa2FuL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjNTdlMzQKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsNjUgQEAKK3BsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdHZ1bGthbi5sYQorCitTVUJESVJTID0KK0RJU1RfU1VCRElSUyA9IHhjYgorRElTVENMRUFORklMRVMgPSB2a2NvbmZpZy5oCisKK2xpYmdzdHZ1bGthbl9sYV9TT1VSQ0VTID0gXAorCWdzdHZ1bGthbi5jIFwKKwl2a2RldmljZS5jIFwKKwl2a2Rpc3BsYXkuYyBcCisJdmtlcnJvci5jIFwKKwl2a2J1ZmZlcm1lbW9yeS5jIFwKKwl2a2ltYWdlbWVtb3J5LmMgXAorCXZrYnVmZmVycG9vbC5jIFwKKwl2a2luc3RhbmNlLmMgXAorCXZrbWVtb3J5LmMgXAorCXZrcXVldWUuYyBcCisJdmtzaW5rLmMgXAorCXZrc3dhcHBlci5jIFwKKwl2a3VwbG9hZC5jIFwKKwl2a3V0aWxzLmMgXAorCXZrd2luZG93LmMKKworbm9pbnN0X0hFQURFUlMgPSBcCisJdmsuaCBcCisJdmtfZndkLmggXAorCXZrZGV2aWNlLmggXAorCXZrZGlzcGxheS5oIFwKKwl2a2Vycm9yLmggXAorCXZrYnVmZmVybWVtb3J5LmggXAorCXZraW1hZ2VtZW1vcnkuaCBcCisJdmtidWZmZXJwb29sLmggXAorCXZraW5zdGFuY2UuaCBcCisJdmttZW1vcnkuaCBcCisJdmtxdWV1ZS5oIFwKKwl2a3NpbmsuaCBcCisJdmtzd2FwcGVyLmggXAorCXZrdXBsb2FkLmggXAorCXZrdXRpbHMuaCBcCisJdmt1dGlsc19wcml2YXRlLmggXAorCXZrd2luZG93LmgKKworbGliZ3N0dnVsa2FuX2xhX0NGTEFHUyA9IFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkkKEdTVF9DRkxBR1MpIFwKKwkkKEdTVF9CQVNFX0NGTEFHUykgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKwkkKFZVTEtBTl9DRkxBR1MpCisKK2xpYmdzdHZ1bGthbl9sYV9MSUJBREQgPSBcCisJJChHU1RfQkFTRV9MSUJTKSBcCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKKwktbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJJChWVUxLQU5fTElCUykKKworaWYgVVNFX1hDQgorU1VCRElSUyArPSB4Y2IKK2xpYmdzdHZ1bGthbl9sYV9MSUJBREQgKz0geGNiL2xpYmdzdHZ1bGthbi14Y2IubGEKK2VuZGlmCisKK2xpYmdzdHZ1bGthbl9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCitsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKKworCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL01ha2VmaWxlLmluIGIvZXh0L3Z1bGthbi9NYWtlZmlsZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGZkMWRhCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi9NYWtlZmlsZS5pbgpAQCAtMCwwICsxLDEzOTcgQEAKKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTUgZnJvbSBNYWtlZmlsZS5hbS4KKyMgQGNvbmZpZ3VyZV9pbnB1dEAKKworIyBDb3B5cmlnaHQgKEMpIDE5OTQtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dAorIyBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBCisjIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKworQFNFVF9NQUtFQAorCisKK1ZQQVRIID0gQHNyY2RpckAKK2FtX19pc19nbnVfbWFrZSA9IHsgXAorICBpZiB0ZXN0IC16ICckKE1BS0VMRVZFTCknOyB0aGVuIFwKKyAgICBmYWxzZTsgXAorICBlbGlmIHRlc3QgLW4gJyQoTUFLRV9IT1NUKSc7IHRoZW4gXAorICAgIHRydWU7IFwKKyAgZWxpZiB0ZXN0IC1uICckKE1BS0VfVkVSU0lPTiknICYmIHRlc3QgLW4gJyQoQ1VSRElSKSc7IHRoZW4gXAorICAgIHRydWU7IFwKKyAgZWxzZSBcCisgICAgZmFsc2U7IFwKKyAgZmk7IFwKK30KK2FtX19tYWtlX3J1bm5pbmdfd2l0aF9vcHRpb24gPSBcCisgIGNhc2UgJCR7dGFyZ2V0X29wdGlvbi19IGluIFwKKyAgICAgID8pIDs7IFwKKyAgICAgICopIGVjaG8gImFtX19tYWtlX3J1bm5pbmdfd2l0aF9vcHRpb246IGludGVybmFsIGVycm9yOiBpbnZhbGlkIiBcCisgICAgICAgICAgICAgICJ0YXJnZXQgb3B0aW9uICckJHt0YXJnZXRfb3B0aW9uLX0nIHNwZWNpZmllZCIgPiYyOyBcCisgICAgICAgICBleGl0IDE7OyBcCisgIGVzYWM7IFwKKyAgaGFzX29wdD1ubzsgXAorICBzYW5lX21ha2VmbGFncz0kJE1BS0VGTEFHUzsgXAorICBpZiAkKGFtX19pc19nbnVfbWFrZSk7IHRoZW4gXAorICAgIHNhbmVfbWFrZWZsYWdzPSQkTUZMQUdTOyBcCisgIGVsc2UgXAorICAgIGNhc2UgJCRNQUtFRkxBR1MgaW4gXAorICAgICAgKlxcW1wgXAldKikgXAorICAgICAgICBicz1cXDsgXAorICAgICAgICBzYW5lX21ha2VmbGFncz1gcHJpbnRmICclc1xuJyAiJCRNQUtFRkxBR1MiIFwKKyAgICAgICAgICB8IHNlZCAicy8kJGJzJCRic1skJGJzICQkYnMJXSovL2ciYDs7IFwKKyAgICBlc2FjOyBcCisgIGZpOyBcCisgIHNraXBfbmV4dD1ubzsgXAorICBzdHJpcF90cmFpbG9wdCAoKSBcCisgIHsgXAorICAgIGZsZz1gcHJpbnRmICclc1xuJyAiJCRmbGciIHwgc2VkICJzLyQkMS4qJCQvLyJgOyBcCisgIH07IFwKKyAgZm9yIGZsZyBpbiAkJHNhbmVfbWFrZWZsYWdzOyBkbyBcCisgICAgdGVzdCAkJHNraXBfbmV4dCA9IHllcyAmJiB7IHNraXBfbmV4dD1ubzsgY29udGludWU7IH07IFwKKyAgICBjYXNlICQkZmxnIGluIFwKKyAgICAgICo9KnwtLSopIGNvbnRpbnVlOzsgXAorICAgICAgICAtKkkpIHN0cmlwX3RyYWlsb3B0ICdJJzsgc2tpcF9uZXh0PXllczs7IFwKKyAgICAgIC0qST8qKSBzdHJpcF90cmFpbG9wdCAnSSc7OyBcCisgICAgICAgIC0qTykgc3RyaXBfdHJhaWxvcHQgJ08nOyBza2lwX25leHQ9eWVzOzsgXAorICAgICAgLSpPPyopIHN0cmlwX3RyYWlsb3B0ICdPJzs7IFwKKyAgICAgICAgLSpsKSBzdHJpcF90cmFpbG9wdCAnbCc7IHNraXBfbmV4dD15ZXM7OyBcCisgICAgICAtKmw/Kikgc3RyaXBfdHJhaWxvcHQgJ2wnOzsgXAorICAgICAgLVtkRURtXSkgc2tpcF9uZXh0PXllczs7IFwKKyAgICAgIC1bSlRdKSBza2lwX25leHQ9eWVzOzsgXAorICAgIGVzYWM7IFwKKyAgICBjYXNlICQkZmxnIGluIFwKKyAgICAgICokJHRhcmdldF9vcHRpb24qKSBoYXNfb3B0PXllczsgYnJlYWs7OyBcCisgICAgZXNhYzsgXAorICBkb25lOyBcCisgIHRlc3QgJCRoYXNfb3B0ID0geWVzCithbV9fbWFrZV9kcnlydW4gPSAodGFyZ2V0X29wdGlvbj1uOyAkKGFtX19tYWtlX3J1bm5pbmdfd2l0aF9vcHRpb24pKQorYW1fX21ha2Vfa2VlcGdvaW5nID0gKHRhcmdldF9vcHRpb249azsgJChhbV9fbWFrZV9ydW5uaW5nX3dpdGhfb3B0aW9uKSkKK3BrZ2RhdGFkaXIgPSAkKGRhdGFkaXIpL0BQQUNLQUdFQAorcGtnaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvQFBBQ0tBR0VACitwa2dsaWJkaXIgPSAkKGxpYmRpcikvQFBBQ0tBR0VACitwa2dsaWJleGVjZGlyID0gJChsaWJleGVjZGlyKS9AUEFDS0FHRUAKK2FtX19jZCA9IENEUEFUSD0iJCR7WlNIX1ZFUlNJT04rLn0kKFBBVEhfU0VQQVJBVE9SKSIgJiYgY2QKK2luc3RhbGxfc2hfREFUQSA9ICQoaW5zdGFsbF9zaCkgLWMgLW0gNjQ0CitpbnN0YWxsX3NoX1BST0dSQU0gPSAkKGluc3RhbGxfc2gpIC1jCitpbnN0YWxsX3NoX1NDUklQVCA9ICQoaW5zdGFsbF9zaCkgLWMKK0lOU1RBTExfSEVBREVSID0gJChJTlNUQUxMX0RBVEEpCit0cmFuc2Zvcm0gPSAkKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpCitOT1JNQUxfSU5TVEFMTCA9IDoKK1BSRV9JTlNUQUxMID0gOgorUE9TVF9JTlNUQUxMID0gOgorTk9STUFMX1VOSU5TVEFMTCA9IDoKK1BSRV9VTklOU1RBTEwgPSA6CitQT1NUX1VOSU5TVEFMTCA9IDoKK2J1aWxkX3RyaXBsZXQgPSBAYnVpbGRACitob3N0X3RyaXBsZXQgPSBAaG9zdEAKK3RhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKK0BVU0VfWENCX1RSVUVAYW1fX2FwcGVuZF8xID0geGNiCitAVVNFX1hDQl9UUlVFQGFtX19hcHBlbmRfMiA9IHhjYi9saWJnc3R2dWxrYW4teGNiLmxhCitzdWJkaXIgPSBleHQvdnVsa2FuCitBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CithbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYWMtZXhwYW5kLm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hdXRvLWFsdC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtY29tcGlsZXItZmxhZy5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtdmVyc2lvbi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXhfY3JlYXRlX3N0ZGludF9oLm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9heF9wdGhyZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtYXJjaC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LWFyZ3MubTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1jaGVjay5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LWRlZmF1bHQubTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1kb3doaWxlLm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtZXJyb3IubTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1mZWF0dXJlLm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtZ2V0dGV4dC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LWdsaWIyLm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtcGFja2FnZS1yZWxlYXNlLWRhdGV0aW1lLm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtcGxhdGZvcm0ubTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1wbHVnaW4tZG9jcy5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LXBsdWdpbmRpci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0Lm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKKwkkKEFDTE9DQUxfTTQpCitESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCisJJChhbV9fRElTVF9DT01NT04pCitta2luc3RhbGxkaXJzID0gJChpbnN0YWxsX3NoKSAtZAorQ09ORklHX0hFQURFUiA9ICQodG9wX2J1aWxkZGlyKS9jb25maWcuaAorQ09ORklHX0NMRUFOX0ZJTEVTID0KK0NPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9CithbV9fdnBhdGhfYWRqX3NldHVwID0gc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3N8LnwufGcnYDsKK2FtX192cGF0aF9hZGogPSBjYXNlICQkcCBpbiBcCisgICAgJChzcmNkaXIpLyopIGY9YGVjaG8gIiQkcCIgfCBzZWQgInN8XiQkc3JjZGlyc3RyaXAvfHwiYDs7IFwKKyAgICAqKSBmPSQkcDs7IFwKKyAgZXNhYzsKK2FtX19zdHJpcF9kaXIgPSBmPWBlY2hvICQkcCB8IHNlZCAtZSAnc3xeLiovfHwnYDsKK2FtX19pbnN0YWxsX21heCA9IDQwCithbV9fbm9iYXNlX3N0cmlwX3NldHVwID0gXAorICBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgCithbV9fbm9iYXNlX3N0cmlwID0gXAorICBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkcCI7IGRvbmUgfCBzZWQgLWUgInN8JCRzcmNkaXJzdHJpcC98fCIKK2FtX19ub2Jhc2VfbGlzdCA9ICQoYW1fX25vYmFzZV9zdHJpcF9zZXR1cCk7IFwKKyAgZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICIkJHAgJCRwIjsgZG9uZSB8IFwKKyAgc2VkICJzfCAkJHNyY2RpcnN0cmlwL3wgfDsiJyAvIC4qXC8vIXMvIC4qLyAuLzsgcyxcKCAuKlwpL1teL10qJCQsXDEsJyB8IFwKKyAgJChBV0spICdCRUdJTiB7IGZpbGVzWyIuIl0gPSAiIiB9IHsgZmlsZXNbJCQyXSA9IGZpbGVzWyQkMl0gIiAiICQkMTsgXAorICAgIGlmICgrK25bJCQyXSA9PSAkKGFtX19pbnN0YWxsX21heCkpIFwKKyAgICAgIHsgcHJpbnQgJCQyLCBmaWxlc1skJDJdOyBuWyQkMl0gPSAwOyBmaWxlc1skJDJdID0gIiIgfSB9IFwKKyAgICBFTkQgeyBmb3IgKGRpciBpbiBmaWxlcykgcHJpbnQgZGlyLCBmaWxlc1tkaXJdIH0nCithbV9fYmFzZV9saXN0ID0gXAorICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnIHwgXAorICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnCithbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyID0geyBcCisgIHRlc3QgLXogIiQkZmlsZXMiIFwKKyAgICB8fCB7IHRlc3QgISAtZCAiJCRkaXIiICYmIHRlc3QgISAtZiAiJCRkaXIiICYmIHRlc3QgISAtciAiJCRkaXIiOyB9IFwKKyAgICB8fCB7IGVjaG8gIiAoIGNkICckJGRpcicgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCisgICAgICAgICAkKGFtX19jZCkgIiQkZGlyIiAmJiBybSAtZiAkJGZpbGVzOyB9OyBcCisgIH0KK2FtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChwbHVnaW5kaXIpIgorTFRMSUJSQVJJRVMgPSAkKHBsdWdpbl9MVExJQlJBUklFUykKK2FtX19ERVBFTkRFTkNJRVNfMSA9CitsaWJnc3R2dWxrYW5fbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX2FwcGVuZF8yKQorYW1fbGliZ3N0dnVsa2FuX2xhX09CSkVDVFMgPSBsaWJnc3R2dWxrYW5fbGEtZ3N0dnVsa2FuLmxvIFwKKwlsaWJnc3R2dWxrYW5fbGEtdmtkZXZpY2UubG8gbGliZ3N0dnVsa2FuX2xhLXZrZGlzcGxheS5sbyBcCisJbGliZ3N0dnVsa2FuX2xhLXZrZXJyb3IubG8gbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVybWVtb3J5LmxvIFwKKwlsaWJnc3R2dWxrYW5fbGEtdmtpbWFnZW1lbW9yeS5sbyBcCisJbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVycG9vbC5sbyBsaWJnc3R2dWxrYW5fbGEtdmtpbnN0YW5jZS5sbyBcCisJbGliZ3N0dnVsa2FuX2xhLXZrbWVtb3J5LmxvIGxpYmdzdHZ1bGthbl9sYS12a3F1ZXVlLmxvIFwKKwlsaWJnc3R2dWxrYW5fbGEtdmtzaW5rLmxvIGxpYmdzdHZ1bGthbl9sYS12a3N3YXBwZXIubG8gXAorCWxpYmdzdHZ1bGthbl9sYS12a3VwbG9hZC5sbyBsaWJnc3R2dWxrYW5fbGEtdmt1dGlscy5sbyBcCisJbGliZ3N0dnVsa2FuX2xhLXZrd2luZG93LmxvCitsaWJnc3R2dWxrYW5fbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0dnVsa2FuX2xhX09CSkVDVFMpCitBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCithbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQorYW1fX3ZfbHRfMCA9IC0tc2lsZW50CithbV9fdl9sdF8xID0gCitsaWJnc3R2dWxrYW5fbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCisJJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAorCSQoQ0NMRCkgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAorCSQobGliZ3N0dnVsa2FuX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK0FNX1ZfUCA9ICQoYW1fX3ZfUF9AQU1fVkApCithbV9fdl9QXyA9ICQoYW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkKK2FtX192X1BfMCA9IGZhbHNlCithbV9fdl9QXzEgPSA6CitBTV9WX0dFTiA9ICQoYW1fX3ZfR0VOX0BBTV9WQCkKK2FtX192X0dFTl8gPSAkKGFtX192X0dFTl9AQU1fREVGQVVMVF9WQCkKK2FtX192X0dFTl8wID0gQGVjaG8gIiAgR0VOICAgICAiICRAOworYW1fX3ZfR0VOXzEgPSAKK0FNX1ZfYXQgPSAkKGFtX192X2F0X0BBTV9WQCkKK2FtX192X2F0XyA9ICQoYW1fX3ZfYXRfQEFNX0RFRkFVTFRfVkApCithbV9fdl9hdF8wID0gQAorYW1fX3ZfYXRfMSA9IAorREVGQVVMVF9JTkNMVURFUyA9IC1JLkBhbV9faXNyY0AgLUkkKHRvcF9idWlsZGRpcikKK2RlcGNvbXAgPSAkKFNIRUxMKSAkKHRvcF9zcmNkaXIpL2RlcGNvbXAKK2FtX19kZXBmaWxlc19tYXliZSA9IGRlcGZpbGVzCithbV9fbXYgPSBtdiAtZgorQ09NUElMRSA9ICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSBcCisJJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKQorTFRDT01QSUxFID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSBcCisJJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgXAorCSQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgXAorCSQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKK0FNX1ZfQ0MgPSAkKGFtX192X0NDX0BBTV9WQCkKK2FtX192X0NDXyA9ICQoYW1fX3ZfQ0NfQEFNX0RFRkFVTFRfVkApCithbV9fdl9DQ18wID0gQGVjaG8gIiAgQ0MgICAgICAiICRAOworYW1fX3ZfQ0NfMSA9IAorQ0NMRCA9ICQoQ0MpCitMSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSBcCisJJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSBcCisJJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACitBTV9WX0NDTEQgPSAkKGFtX192X0NDTERfQEFNX1ZAKQorYW1fX3ZfQ0NMRF8gPSAkKGFtX192X0NDTERfQEFNX0RFRkFVTFRfVkApCithbV9fdl9DQ0xEXzAgPSBAZWNobyAiICBDQ0xEICAgICIgJEA7CithbV9fdl9DQ0xEXzEgPSAKK1NPVVJDRVMgPSAkKGxpYmdzdHZ1bGthbl9sYV9TT1VSQ0VTKQorRElTVF9TT1VSQ0VTID0gJChsaWJnc3R2dWxrYW5fbGFfU09VUkNFUykKK1JFQ1VSU0lWRV9UQVJHRVRTID0gYWxsLXJlY3Vyc2l2ZSBjaGVjay1yZWN1cnNpdmUgY3Njb3BlbGlzdC1yZWN1cnNpdmUgXAorCWN0YWdzLXJlY3Vyc2l2ZSBkdmktcmVjdXJzaXZlIGh0bWwtcmVjdXJzaXZlIGluZm8tcmVjdXJzaXZlIFwKKwlpbnN0YWxsLWRhdGEtcmVjdXJzaXZlIGluc3RhbGwtZHZpLXJlY3Vyc2l2ZSBcCisJaW5zdGFsbC1leGVjLXJlY3Vyc2l2ZSBpbnN0YWxsLWh0bWwtcmVjdXJzaXZlIFwKKwlpbnN0YWxsLWluZm8tcmVjdXJzaXZlIGluc3RhbGwtcGRmLXJlY3Vyc2l2ZSBcCisJaW5zdGFsbC1wcy1yZWN1cnNpdmUgaW5zdGFsbC1yZWN1cnNpdmUgaW5zdGFsbGNoZWNrLXJlY3Vyc2l2ZSBcCisJaW5zdGFsbGRpcnMtcmVjdXJzaXZlIHBkZi1yZWN1cnNpdmUgcHMtcmVjdXJzaXZlIFwKKwl0YWdzLXJlY3Vyc2l2ZSB1bmluc3RhbGwtcmVjdXJzaXZlCithbV9fY2FuX3J1bl9pbnN0YWxsaW5mbyA9IFwKKyAgY2FzZSAkJEFNX1VQREFURV9JTkZPX0RJUiBpbiBcCisgICAgbnxub3xOTykgZmFsc2U7OyBcCisgICAgKikgKGluc3RhbGwtaW5mbyAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMTs7IFwKKyAgZXNhYworSEVBREVSUyA9ICQobm9pbnN0X0hFQURFUlMpCitSRUNVUlNJVkVfQ0xFQU5fVEFSR0VUUyA9IG1vc3RseWNsZWFuLXJlY3Vyc2l2ZSBjbGVhbi1yZWN1cnNpdmUJXAorICBkaXN0Y2xlYW4tcmVjdXJzaXZlIG1haW50YWluZXItY2xlYW4tcmVjdXJzaXZlCithbV9fcmVjdXJzaXZlX3RhcmdldHMgPSBcCisgICQoUkVDVVJTSVZFX1RBUkdFVFMpIFwKKyAgJChSRUNVUlNJVkVfQ0xFQU5fVEFSR0VUUykgXAorICAkKGFtX19leHRyYV9yZWN1cnNpdmVfdGFyZ2V0cykKK0FNX1JFQ1VSU0lWRV9UQVJHRVRTID0gJChhbV9fcmVjdXJzaXZlX3RhcmdldHM6LXJlY3Vyc2l2ZT0pIFRBR1MgQ1RBR1MgXAorCWRpc3RkaXIKK2FtX190YWdnZWRfZmlsZXMgPSAkKEhFQURFUlMpICQoU09VUkNFUykgJChUQUdTX0ZJTEVTKSAkKExJU1ApCisjIFJlYWQgYSBsaXN0IG9mIG5ld2xpbmUtc2VwYXJhdGVkIHN0cmluZ3MgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQsCisjIGFuZCBwcmludCBlYWNoIG9mIHRoZW0gb25jZSwgd2l0aG91dCBkdXBsaWNhdGVzLiAgSW5wdXQgb3JkZXIgaXMKKyMgKm5vdCogcHJlc2VydmVkLgorYW1fX3VuaXF1aWZ5X2lucHV0ID0gJChBV0spICdcCisgIEJFR0lOIHsgbm9uZW1wdHkgPSAwOyB9IFwKKyAgeyBpdGVtc1skJDBdID0gMTsgbm9uZW1wdHkgPSAxOyB9IFwKKyAgRU5EIHsgaWYgKG5vbmVtcHR5KSB7IGZvciAoaSBpbiBpdGVtcykgcHJpbnQgaTsgfTsgfSBcCisnCisjIE1ha2Ugc3VyZSB0aGUgbGlzdCBvZiBzb3VyY2VzIGlzIHVuaXF1ZS4gIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UsCisjIGUuZy4sIHRoZSBzYW1lIHNvdXJjZSBmaWxlIG1pZ2h0IGJlIHNoYXJlZCBhbW9uZyBfU09VUkNFUyB2YXJpYWJsZXMKKyMgZm9yIGRpZmZlcmVudCBwcm9ncmFtcy9saWJyYXJpZXMuCithbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzID0gXAorICBsaXN0PSckKGFtX190YWdnZWRfZmlsZXMpJzsgXAorICB1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXAorICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNyY2RpcikvJCRpOyBmaTsgXAorICBkb25lIHwgJChhbV9fdW5pcXVpZnlfaW5wdXQpYAorRVRBR1MgPSBldGFncworQ1RBR1MgPSBjdGFncworYW1fX0RJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX3NyY2RpcikvZGVwY29tcAorRElTVEZJTEVTID0gJChESVNUX0NPTU1PTikgJChESVNUX1NPVVJDRVMpICQoVEVYSU5GT1MpICQoRVhUUkFfRElTVCkKK2FtX19yZWxhdGl2aXplID0gXAorICBkaXIwPWBwd2RgOyBcCisgIHNlZF9maXJzdD0ncyxeXChbXi9dKlwpLy4qJCQsXDEsJzsgXAorICBzZWRfcmVzdD0ncyxeW14vXSovKiwsJzsgXAorICBzZWRfbGFzdD0ncyxeLiovXChbXi9dKlwpJCQsXDEsJzsgXAorICBzZWRfYnV0bGFzdD0ncywvKlteL10qJCQsLCc7IFwKKyAgd2hpbGUgdGVzdCAtbiAiJCRkaXIxIjsgZG8gXAorICAgIGZpcnN0PWBlY2hvICIkJGRpcjEiIHwgc2VkIC1lICIkJHNlZF9maXJzdCJgOyBcCisgICAgaWYgdGVzdCAiJCRmaXJzdCIgIT0gIi4iOyB0aGVuIFwKKyAgICAgIGlmIHRlc3QgIiQkZmlyc3QiID0gIi4uIjsgdGhlbiBcCisgICAgICAgIGRpcjI9YGVjaG8gIiQkZGlyMCIgfCBzZWQgLWUgIiQkc2VkX2xhc3QiYC8iJCRkaXIyIjsgXAorICAgICAgICBkaXIwPWBlY2hvICIkJGRpcjAiIHwgc2VkIC1lICIkJHNlZF9idXRsYXN0ImA7IFwKKyAgICAgIGVsc2UgXAorICAgICAgICBmaXJzdDI9YGVjaG8gIiQkZGlyMiIgfCBzZWQgLWUgIiQkc2VkX2ZpcnN0ImA7IFwKKyAgICAgICAgaWYgdGVzdCAiJCRmaXJzdDIiID0gIiQkZmlyc3QiOyB0aGVuIFwKKyAgICAgICAgICBkaXIyPWBlY2hvICIkJGRpcjIiIHwgc2VkIC1lICIkJHNlZF9yZXN0ImA7IFwKKyAgICAgICAgZWxzZSBcCisgICAgICAgICAgZGlyMj0iLi4vJCRkaXIyIjsgXAorICAgICAgICBmaTsgXAorICAgICAgICBkaXIwPSIkJGRpcjAiLyIkJGZpcnN0IjsgXAorICAgICAgZmk7IFwKKyAgICBmaTsgXAorICAgIGRpcjE9YGVjaG8gIiQkZGlyMSIgfCBzZWQgLWUgIiQkc2VkX3Jlc3QiYDsgXAorICBkb25lOyBcCisgIHJlbGRpcj0iJCRkaXIyIgorQUNMT0NBTCA9IEBBQ0xPQ0FMQAorQUNMT0NBTF9BTUZMQUdTID0gQEFDTE9DQUxfQU1GTEFHU0AKK0FDTUVOQ19DRkxBR1MgPSBAQUNNRU5DX0NGTEFHU0AKK0FDTU1QM0RFQ19DRkxBR1MgPSBAQUNNTVAzREVDX0NGTEFHU0AKK0FNVEFSID0gQEFNVEFSQAorQU1fREVGQVVMVF9WRVJCT1NJVFkgPSBAQU1fREVGQVVMVF9WRVJCT1NJVFlACitBUEVYU0lOS19DRkxBR1MgPSBAQVBFWFNJTktfQ0ZMQUdTQAorQVBFWFNJTktfTElCUyA9IEBBUEVYU0lOS19MSUJTQAorQVIgPSBAQVJACitBUyA9IEBBU0AKK0FTU1JFTkRFUl9DRkxBR1MgPSBAQVNTUkVOREVSX0NGTEFHU0AKK0FTU1JFTkRFUl9MSUJTID0gQEFTU1JFTkRFUl9MSUJTQAorQVVUT0NPTkYgPSBAQVVUT0NPTkZACitBVVRPSEVBREVSID0gQEFVVE9IRUFERVJACitBVVRPTUFLRSA9IEBBVVRPTUFLRUAKK0FXSyA9IEBBV0tACitCTFVFWjVfQ0ZMQUdTID0gQEJMVUVaNV9DRkxBR1NACitCTFVFWjVfTElCUyA9IEBCTFVFWjVfTElCU0AKK0JTMkJfQ0ZMQUdTID0gQEJTMkJfQ0ZMQUdTQAorQlMyQl9MSUJTID0gQEJTMkJfTElCU0AKK0JaMl9MSUJTID0gQEJaMl9MSUJTQAorQ0MgPSBAQ0NACitDQ0FTRkxBR1MgPSBAQ0NBU0ZMQUdTQAorQ0NERVBNT0RFID0gQENDREVQTU9ERUAKK0NGTEFHUyA9IEBDRkxBR1NACitDSFJPTUFQUklOVF9DRkxBR1MgPSBAQ0hST01BUFJJTlRfQ0ZMQUdTQAorQ0hST01BUFJJTlRfTElCUyA9IEBDSFJPTUFQUklOVF9MSUJTQAorQ0xVVFRFUl9DRkxBR1MgPSBAQ0xVVFRFUl9DRkxBR1NACitDTFVUVEVSX0dMWF9DRkxBR1MgPSBAQ0xVVFRFUl9HTFhfQ0ZMQUdTQAorQ0xVVFRFUl9HTFhfTElCUyA9IEBDTFVUVEVSX0dMWF9MSUJTQAorQ0xVVFRFUl9MSUJTID0gQENMVVRURVJfTElCU0AKK0NMVVRURVJfWDExX0NGTEFHUyA9IEBDTFVUVEVSX1gxMV9DRkxBR1NACitDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACitDUFAgPSBAQ1BQQAorQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACitDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKK0NVUkxfTElCUyA9IEBDVVJMX0xJQlNACitDWFggPSBAQ1hYQAorQ1hYQ1BQID0gQENYWENQUEAKK0NYWERFUE1PREUgPSBAQ1hYREVQTU9ERUAKK0NYWEZMQUdTID0gQENYWEZMQUdTQAorQ1lHUEFUSF9XID0gQENZR1BBVEhfV0AKK0RBQUxBX0NGTEFHUyA9IEBEQUFMQV9DRkxBR1NACitEQUFMQV9MSUJTID0gQERBQUxBX0xJQlNACitEQ0NQX0xJQlMgPSBARENDUF9MSUJTQAorREVDS0xJTktfQ1hYRkxBR1MgPSBAREVDS0xJTktfQ1hYRkxBR1NACitERUNLTElOS19MSUJTID0gQERFQ0tMSU5LX0xJQlNACitERUZBVUxUX0FVRElPU0lOSyA9IEBERUZBVUxUX0FVRElPU0lOS0AKK0RFRkFVTFRfQVVESU9TUkMgPSBAREVGQVVMVF9BVURJT1NSQ0AKK0RFRkFVTFRfVklERU9TSU5LID0gQERFRkFVTFRfVklERU9TSU5LQAorREVGQVVMVF9WSURFT1NSQyA9IEBERUZBVUxUX1ZJREVPU1JDQAorREVGQVVMVF9WSVNVQUxJWkVSID0gQERFRkFVTFRfVklTVUFMSVpFUkAKK0RFRlMgPSBAREVGU0AKK0RFUERJUiA9IEBERVBESVJACitERVBSRUNBVEVEX0NGTEFHUyA9IEBERVBSRUNBVEVEX0NGTEFHU0AKK0RJUkVDVDNEX0xJQlMgPSBARElSRUNUM0RfTElCU0AKK0RJUkVDVEZCX0NGTEFHUyA9IEBESVJFQ1RGQl9DRkxBR1NACitESVJFQ1RGQl9MSUJTID0gQERJUkVDVEZCX0xJQlNACitESVJFQ1RTT1VORF9MSUJTID0gQERJUkVDVFNPVU5EX0xJQlNACitESVJFQ1RYX0NGTEFHUyA9IEBESVJFQ1RYX0NGTEFHU0AKK0RJUkVDVFhfTERGTEFHUyA9IEBESVJFQ1RYX0xERkxBR1NACitETExUT09MID0gQERMTFRPT0xACitEU1lNVVRJTCA9IEBEU1lNVVRJTEAKK0RUTFNfQ0ZMQUdTID0gQERUTFNfQ0ZMQUdTQAorRFRMU19MSUJTID0gQERUTFNfTElCU0AKK0RUU19MSUJTID0gQERUU19MSUJTQAorRFVNUEJJTiA9IEBEVU1QQklOQAorRFZETkFWX0NGTEFHUyA9IEBEVkROQVZfQ0ZMQUdTQAorRFZETkFWX0xJQlMgPSBARFZETkFWX0xJQlNACitFQ0hPX0MgPSBARUNIT19DQAorRUNIT19OID0gQEVDSE9fTkAKK0VDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKK0VHUkVQID0gQEVHUkVQQAorRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKK0VSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQAorRVJST1JfT0JKQ0ZMQUdTID0gQEVSUk9SX09CSkNGTEFHU0AKK0VYRUVYVCA9IEBFWEVFWFRACitFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKK0VYSUZfTElCUyA9IEBFWElGX0xJQlNACitGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAorRkFBRF9MSUJTID0gQEZBQURfTElCU0AKK0ZGTEFHUyA9IEBGRkxBR1NACitGR1JFUCA9IEBGR1JFUEAKK0ZMSVRFX0NGTEFHUyA9IEBGTElURV9DRkxBR1NACitGTElURV9MSUJTID0gQEZMSVRFX0xJQlNACitGTFVJRFNZTlRIX0NGTEFHUyA9IEBGTFVJRFNZTlRIX0NGTEFHU0AKK0ZMVUlEU1lOVEhfTElCUyA9IEBGTFVJRFNZTlRIX0xJQlNACitHQ09WID0gQEdDT1ZACitHQ09WX0NGTEFHUyA9IEBHQ09WX0NGTEFHU0AKK0dDT1ZfTElCUyA9IEBHQ09WX0xJQlNACitHREJVU19DT0RFR0VOID0gQEdEQlVTX0NPREVHRU5ACitHRVRURVhUX01BQ1JPX1ZFUlNJT04gPSBAR0VUVEVYVF9NQUNST19WRVJTSU9OQAorR0VUVEVYVF9QQUNLQUdFID0gQEdFVFRFWFRfUEFDS0FHRUAKK0dJT19DRkxBR1MgPSBAR0lPX0NGTEFHU0AKK0dJT19MREZMQUdTID0gQEdJT19MREZMQUdTQAorR0lPX0xJQlMgPSBAR0lPX0xJQlNACitHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAorR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKK0dMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAorR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACitHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAorR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKK0dMSUJfTUtFTlVNUyA9IEBHTElCX01LRU5VTVNACitHTElCX1BSRUZJWCA9IEBHTElCX1BSRUZJWEAKK0dMSUJfUkVRID0gQEdMSUJfUkVRQAorR0xfQ0ZMQUdTID0gQEdMX0NGTEFHU0AKK0dMX0xJQlMgPSBAR0xfTElCU0AKK0dMX09CSkNGTEFHUyA9IEBHTF9PQkpDRkxBR1NACitHTUVfTElCUyA9IEBHTUVfTElCU0AKK0dNT0RVTEVfRVhQT1JUX0NGTEFHUyA9IEBHTU9EVUxFX0VYUE9SVF9DRkxBR1NACitHTU9EVUxFX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfRVhQT1JUX0xJQlNACitHTU9EVUxFX05PX0VYUE9SVF9DRkxBR1MgPSBAR01PRFVMRV9OT19FWFBPUlRfQ0ZMQUdTQAorR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAorR01TR0ZNVCA9IEBHTVNHRk1UQAorR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKK0dSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACitHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACitHUkVQID0gQEdSRVBACitHU01fTElCUyA9IEBHU01fTElCU0AKK0dTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAorR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKK0dTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACitHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAorR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKK0dTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACitHU1RfQkFTRV9MSUJTID0gQEdTVF9CQVNFX0xJQlNACitHU1RfQ0ZMQUdTID0gQEdTVF9DRkxBR1NACitHU1RfQ0hFQ0tfQ0ZMQUdTID0gQEdTVF9DSEVDS19DRkxBR1NACitHU1RfQ0hFQ0tfTElCUyA9IEBHU1RfQ0hFQ0tfTElCU0AKK0dTVF9DT05UUk9MTEVSX0NGTEFHUyA9IEBHU1RfQ09OVFJPTExFUl9DRkxBR1NACitHU1RfQ09OVFJPTExFUl9MSUJTID0gQEdTVF9DT05UUk9MTEVSX0xJQlNACitHU1RfQ1VSUkVOVCA9IEBHU1RfQ1VSUkVOVEAKK0dTVF9DWFhGTEFHUyA9IEBHU1RfQ1hYRkxBR1NACitHU1RfTEVWRUxfREVGQVVMVCA9IEBHU1RfTEVWRUxfREVGQVVMVEAKK0dTVF9MSUJTID0gQEdTVF9MSUJTQAorR1NUX0xJQlZFUlNJT04gPSBAR1NUX0xJQlZFUlNJT05ACitHU1RfTElCX0xERkxBR1MgPSBAR1NUX0xJQl9MREZMQUdTQAorR1NUX0xJQ0VOU0UgPSBAR1NUX0xJQ0VOU0VACitHU1RfTFRfTERGTEFHUyA9IEBHU1RfTFRfTERGTEFHU0AKK0dTVF9ORVRfQ0ZMQUdTID0gQEdTVF9ORVRfQ0ZMQUdTQAorR1NUX05FVF9MSUJTID0gQEdTVF9ORVRfTElCU0AKK0dTVF9PQkpDRkxBR1MgPSBAR1NUX09CSkNGTEFHU0AKK0dTVF9PUFRJT05fQ0ZMQUdTID0gQEdTVF9PUFRJT05fQ0ZMQUdTQAorR1NUX09QVElPTl9DWFhGTEFHUyA9IEBHU1RfT1BUSU9OX0NYWEZMQUdTQAorR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACitHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACitHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKK0dTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKK0dTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACitHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACitHU1RfUExVR0lOU19CQURfQ1hYRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NYWEZMQUdTQAorR1NUX1BMVUdJTlNfQkFEX09CSkNGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfT0JKQ0ZMQUdTQAorR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1NACitHU1RfUExVR0lOU19CQVNFX0RJUiA9IEBHU1RfUExVR0lOU19CQVNFX0RJUkAKK0dTVF9QTFVHSU5TX0JBU0VfTElCUyA9IEBHU1RfUExVR0lOU19CQVNFX0xJQlNACitHU1RfUExVR0lOU19ESVIgPSBAR1NUX1BMVUdJTlNfRElSQAorR1NUX1BMVUdJTlNfR09PRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfR09PRF9DRkxBR1NACitHU1RfUExVR0lOU19HT09EX0RJUiA9IEBHU1RfUExVR0lOU19HT09EX0RJUkAKK0dTVF9QTFVHSU5TX0dPT0RfTElCUyA9IEBHU1RfUExVR0lOU19HT09EX0xJQlNACitHU1RfUExVR0lOU19MSUJBVl9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfTElCQVZfQ0ZMQUdTQAorR1NUX1BMVUdJTlNfTElCQVZfRElSID0gQEdTVF9QTFVHSU5TX0xJQkFWX0RJUkAKK0dTVF9QTFVHSU5TX0xJQkFWX0xJQlMgPSBAR1NUX1BMVUdJTlNfTElCQVZfTElCU0AKK0dTVF9QTFVHSU5TX05PTlBPUlRFRCA9IEBHU1RfUExVR0lOU19OT05QT1JURURACitHU1RfUExVR0lOU19TRUxFQ1RFRCA9IEBHU1RfUExVR0lOU19TRUxFQ1RFREAKK0dTVF9QTFVHSU5TX1VHTFlfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX1VHTFlfQ0ZMQUdTQAorR1NUX1BMVUdJTlNfVUdMWV9ESVIgPSBAR1NUX1BMVUdJTlNfVUdMWV9ESVJACitHU1RfUExVR0lOU19VR0xZX0xJQlMgPSBAR1NUX1BMVUdJTlNfVUdMWV9MSUJTQAorR1NUX1BMVUdJTl9MREZMQUdTID0gQEdTVF9QTFVHSU5fTERGTEFHU0AKK0dTVF9QTFVHSU5fTElCVE9PTEZMQUdTID0gQEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTQAorR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAorR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKK0dTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAorR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACitHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKK0dUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACitHVEszX0xJQlMgPSBAR1RLM19MSUJTQAorR1RLM19XQVlMQU5EX0NGTEFHUyA9IEBHVEszX1dBWUxBTkRfQ0ZMQUdTQAorR1RLM19XQVlMQU5EX0xJQlMgPSBAR1RLM19XQVlMQU5EX0xJQlNACitHVEszX1gxMV9DRkxBR1MgPSBAR1RLM19YMTFfQ0ZMQUdTQAorR1RLM19YMTFfTElCUyA9IEBHVEszX1gxMV9MSUJTQAorR1RLRE9DX0NIRUNLID0gQEdUS0RPQ19DSEVDS0AKK0dUS0RPQ19ERVBTX0NGTEFHUyA9IEBHVEtET0NfREVQU19DRkxBR1NACitHVEtET0NfREVQU19MSUJTID0gQEdUS0RPQ19ERVBTX0xJQlNACitHVEtET0NfTUtQREYgPSBAR1RLRE9DX01LUERGQAorR1RLRE9DX1JFQkFTRSA9IEBHVEtET0NfUkVCQVNFQAorR1RLX0JBU0VfRElSID0gQEdUS19CQVNFX0RJUkAKK0dUS19DRkxBR1MgPSBAR1RLX0NGTEFHU0AKK0dUS19MSUJTID0gQEdUS19MSUJTQAorR1RLX1ZFUlNJT04gPSBAR1RLX1ZFUlNJT05ACitHX1VERVZfQ0ZMQUdTID0gQEdfVURFVl9DRkxBR1NACitHX1VERVZfTElCUyA9IEBHX1VERVZfTElCU0AKK0hBVkVfQ0xVVFRFUiA9IEBIQVZFX0NMVVRURVJACitIQVZFX0NMVVRURVJfR0xYID0gQEhBVkVfQ0xVVFRFUl9HTFhACitIQVZFX0NMVVRURVJfWDExID0gQEhBVkVfQ0xVVFRFUl9YMTFACitIQVZFX0NYWCA9IEBIQVZFX0NYWEAKK0hBVkVfRElSRUNUM0QgPSBASEFWRV9ESVJFQ1QzREAKK0hBVkVfRElSRUNUU09VTkQgPSBASEFWRV9ESVJFQ1RTT1VOREAKK0hBVkVfRFRTID0gQEhBVkVfRFRTQAorSEFWRV9FR0wgPSBASEFWRV9FR0xACitIQVZFX0ZBQUMgPSBASEFWRV9GQUFDQAorSEFWRV9GQUFEID0gQEhBVkVfRkFBREAKK0hBVkVfRkxJVEUgPSBASEFWRV9GTElURUAKK0hBVkVfR0wgPSBASEFWRV9HTEAKK0hBVkVfR0xFUzIgPSBASEFWRV9HTEVTMkAKK0hBVkVfR1JBUEhFTkUgPSBASEFWRV9HUkFQSEVORUAKK0hBVkVfR1NNID0gQEhBVkVfR1NNQAorSEFWRV9HVEszID0gQEhBVkVfR1RLM0AKK0hBVkVfSlBFRyA9IEBIQVZFX0pQRUdACitIQVZFX05BUyA9IEBIQVZFX05BU0AKK0hBVkVfT1BFTkpQRUcgPSBASEFWRV9PUEVOSlBFR0AKK0hBVkVfUE5HID0gQEhBVkVfUE5HQAorSEFWRV9TUlRQID0gQEhBVkVfU1JUUEAKK0hBVkVfV0FTQVBJID0gQEhBVkVfV0FTQVBJQAorSEFWRV9XSUxETUlESSA9IEBIQVZFX1dJTERNSURJQAorSEFWRV9XSU5LUyA9IEBIQVZFX1dJTktTQAorSEFWRV9XSU5TQ1JFRU5DQVAgPSBASEFWRV9XSU5TQ1JFRU5DQVBACitIQVZFX1gxMSA9IEBIQVZFX1gxMUAKK0hUTUxfRElSID0gQEhUTUxfRElSQAorSU5TVEFMTCA9IEBJTlNUQUxMQAorSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKK0lOU1RBTExfUFJPR1JBTSA9IEBJTlNUQUxMX1BST0dSQU1ACitJTlNUQUxMX1NDUklQVCA9IEBJTlNUQUxMX1NDUklQVEAKK0lOU1RBTExfU1RSSVBfUFJPR1JBTSA9IEBJTlNUQUxMX1NUUklQX1BST0dSQU1ACitJTlRMTElCUyA9IEBJTlRMTElCU0AKK0lOVExfTUFDT1NYX0xJQlMgPSBASU5UTF9NQUNPU1hfTElCU0AKK0lOVFJPU1BFQ1RJT05fQ0ZMQUdTID0gQElOVFJPU1BFQ1RJT05fQ0ZMQUdTQAorSU5UUk9TUEVDVElPTl9DT01QSUxFUiA9IEBJTlRST1NQRUNUSU9OX0NPTVBJTEVSQAorSU5UUk9TUEVDVElPTl9HRU5FUkFURSA9IEBJTlRST1NQRUNUSU9OX0dFTkVSQVRFQAorSU5UUk9TUEVDVElPTl9HSVJESVIgPSBASU5UUk9TUEVDVElPTl9HSVJESVJACitJTlRST1NQRUNUSU9OX0lOSVQgPSBASU5UUk9TUEVDVElPTl9JTklUQAorSU5UUk9TUEVDVElPTl9MSUJTID0gQElOVFJPU1BFQ1RJT05fTElCU0AKK0lOVFJPU1BFQ1RJT05fTUFLRUZJTEUgPSBASU5UUk9TUEVDVElPTl9NQUtFRklMRUAKK0lOVFJPU1BFQ1RJT05fU0NBTk5FUiA9IEBJTlRST1NQRUNUSU9OX1NDQU5ORVJACitJTlRST1NQRUNUSU9OX1RZUEVMSUJESVIgPSBASU5UUk9TUEVDVElPTl9UWVBFTElCRElSQAorSlBFR19MSUJTID0gQEpQRUdfTElCU0AKK0tBVEVfQ0ZMQUdTID0gQEtBVEVfQ0ZMQUdTQAorS0FURV9MSUJTID0gQEtBVEVfTElCU0AKK0xEID0gQExEQAorTERGTEFHUyA9IEBMREZMQUdTQAorTElCREMxMzk0X0NGTEFHUyA9IEBMSUJEQzEzOTRfQ0ZMQUdTQAorTElCREMxMzk0X0xJQlMgPSBATElCREMxMzk0X0xJQlNACitMSUJERTI2NV9DRkxBR1MgPSBATElCREUyNjVfQ0ZMQUdTQAorTElCREUyNjVfTElCUyA9IEBMSUJERTI2NV9MSUJTQAorTElCRElSID0gQExJQkRJUkAKK0xJQkdDUllQVF9DRkxBR1MgPSBATElCR0NSWVBUX0NGTEFHU0AKK0xJQkdDUllQVF9DT05GSUcgPSBATElCR0NSWVBUX0NPTkZJR0AKK0xJQkdDUllQVF9MSUJTID0gQExJQkdDUllQVF9MSUJTQAorTElCSUNPTlYgPSBATElCSUNPTlZACitMSUJJTlRMID0gQExJQklOVExACitMSUJNID0gQExJQk1ACitMSUJNTVNfQ0ZMQUdTID0gQExJQk1NU19DRkxBR1NACitMSUJNTVNfTElCUyA9IEBMSUJNTVNfTElCU0AKK0xJQk9CSlMgPSBATElCT0JKU0AKK0xJQlBOR19DRkxBR1MgPSBATElCUE5HX0NGTEFHU0AKK0xJQlBOR19MSUJTID0gQExJQlBOR19MSUJTQAorTElCUyA9IEBMSUJTQAorTElCVE9PTCA9IEBMSUJUT09MQAorTElCVURFVl9DRkxBR1MgPSBATElCVURFVl9DRkxBR1NACitMSUJVREVWX0xJQlMgPSBATElCVURFVl9MSUJTQAorTElCVVNCX0NGTEFHUyA9IEBMSUJVU0JfQ0ZMQUdTQAorTElCVVNCX0xJQlMgPSBATElCVVNCX0xJQlNACitMSUJWSVNVQUxfQ0ZMQUdTID0gQExJQlZJU1VBTF9DRkxBR1NACitMSUJWSVNVQUxfTElCUyA9IEBMSUJWSVNVQUxfTElCU0AKK0xJQlhNTDJfQ0ZMQUdTID0gQExJQlhNTDJfQ0ZMQUdTQAorTElCWE1MMl9MSUJTID0gQExJQlhNTDJfTElCU0AKK0xJUE8gPSBATElQT0AKK0xOX1MgPSBATE5fU0AKK0xPQ0FMRURJUiA9IEBMT0NBTEVESVJACitMUkRGX0NGTEFHUyA9IEBMUkRGX0NGTEFHU0AKK0xSREZfTElCUyA9IEBMUkRGX0xJQlNACitMVExJQklDT05WID0gQExUTElCSUNPTlZACitMVExJQklOVEwgPSBATFRMSUJJTlRMQAorTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKK01BSU5UID0gQE1BSU5UQAorTUFLRUlORk8gPSBATUFLRUlORk9ACitNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACitNSU1JQ19DRkxBR1MgPSBATUlNSUNfQ0ZMQUdTQAorTUlNSUNfTElCUyA9IEBNSU1JQ19MSUJTQAorTUpQRUdfQ0ZMQUdTID0gQE1KUEVHX0NGTEFHU0AKK01KUEVHX0xJQlMgPSBATUpQRUdfTElCU0AKK01LRElSX1AgPSBATUtESVJfUEAKK01PQyA9IEBNT0NACitNT0RQTFVHX0NGTEFHUyA9IEBNT0RQTFVHX0NGTEFHU0AKK01PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACitNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAorTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAorTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKK01QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKK01QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKK01TR0ZNVCA9IEBNU0dGTVRACitNU0dGTVRfMDE1ID0gQE1TR0ZNVF8wMTVACitNU0dNRVJHRSA9IEBNU0dNRVJHRUAKK01VU0VQQUNLX0xJQlMgPSBATVVTRVBBQ0tfTElCU0AKK05BU19DRkxBR1MgPSBATkFTX0NGTEFHU0AKK05BU19MSUJTID0gQE5BU19MSUJTQAorTkVPTl9DRkxBR1MgPSBATkVPTl9DRkxBR1NACitORU9OX0xJQlMgPSBATkVPTl9MSUJTQAorTkVUVExFX0NGTEFHUyA9IEBORVRUTEVfQ0ZMQUdTQAorTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACitOTSA9IEBOTUAKK05NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAorT0JKQyA9IEBPQkpDQAorT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACitPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQAorT0JKRFVNUCA9IEBPQkpEVU1QQAorT0JKRVhUID0gQE9CSkVYVEAKK09GQV9DRkxBR1MgPSBAT0ZBX0NGTEFHU0AKK09GQV9MSUJTID0gQE9GQV9MSUJTQAorT1BFTkFMX0NGTEFHUyA9IEBPUEVOQUxfQ0ZMQUdTQAorT1BFTkFMX0xJQlMgPSBAT1BFTkFMX0xJQlNACitPUEVOQ1ZfQ0ZMQUdTID0gQE9QRU5DVl9DRkxBR1NACitPUEVOQ1ZfTElCUyA9IEBPUEVOQ1ZfTElCU0AKK09QRU5DVl9QUkVGSVggPSBAT1BFTkNWX1BSRUZJWEAKK09QRU5FWFJfQ0ZMQUdTID0gQE9QRU5FWFJfQ0ZMQUdTQAorT1BFTkVYUl9MSUJTID0gQE9QRU5FWFJfTElCU0AKK09QRU5IMjY0X0NGTEFHUyA9IEBPUEVOSDI2NF9DRkxBR1NACitPUEVOSDI2NF9MSUJTID0gQE9QRU5IMjY0X0xJQlNACitPUEVOSlBFR19DRkxBR1MgPSBAT1BFTkpQRUdfQ0ZMQUdTQAorT1BFTkpQRUdfTElCUyA9IEBPUEVOSlBFR19MSUJTQAorT1BFTk5JMl9DRkxBR1MgPSBAT1BFTk5JMl9DRkxBR1NACitPUEVOTkkyX0xJQlMgPSBAT1BFTk5JMl9MSUJTQAorT1BFTlNTTF9DRkxBR1MgPSBAT1BFTlNTTF9DRkxBR1NACitPUEVOU1NMX0xJQlMgPSBAT1BFTlNTTF9MSUJTQAorT1BVU19DRkxBR1MgPSBAT1BVU19DRkxBR1NACitPUFVTX0xJQlMgPSBAT1BVU19MSUJTQAorT1JDQyA9IEBPUkNDQAorT1JDQ19GTEFHUyA9IEBPUkNDX0ZMQUdTQAorT1JDX0NGTEFHUyA9IEBPUkNfQ0ZMQUdTQAorT1JDX0xJQlMgPSBAT1JDX0xJQlNACitPVE9PTCA9IEBPVE9PTEAKK09UT09MNjQgPSBAT1RPT0w2NEAKK1BBQ0tBR0UgPSBAUEFDS0FHRUAKK1BBQ0tBR0VfQlVHUkVQT1JUID0gQFBBQ0tBR0VfQlVHUkVQT1JUQAorUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKK1BBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAorUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQAorUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKK1BBQ0tBR0VfVkVSU0lPTl9NQUpPUiA9IEBQQUNLQUdFX1ZFUlNJT05fTUFKT1JACitQQUNLQUdFX1ZFUlNJT05fTUlDUk8gPSBAUEFDS0FHRV9WRVJTSU9OX01JQ1JPQAorUEFDS0FHRV9WRVJTSU9OX01JTk9SID0gQFBBQ0tBR0VfVkVSU0lPTl9NSU5PUkAKK1BBQ0tBR0VfVkVSU0lPTl9OQU5PID0gQFBBQ0tBR0VfVkVSU0lPTl9OQU5PQAorUEFDS0FHRV9WRVJTSU9OX1JFTEVBU0UgPSBAUEFDS0FHRV9WRVJTSU9OX1JFTEVBU0VACitQQVRIX1NFUEFSQVRPUiA9IEBQQVRIX1NFUEFSQVRPUkAKK1BLR19DT05GSUcgPSBAUEtHX0NPTkZJR0AKK1BMVUdJTkRJUiA9IEBQTFVHSU5ESVJACitQT1NVQiA9IEBQT1NVQkAKK1BST0ZJTEVfQ0ZMQUdTID0gQFBST0ZJTEVfQ0ZMQUdTQAorUFRIUkVBRF9DQyA9IEBQVEhSRUFEX0NDQAorUFRIUkVBRF9DRkxBR1MgPSBAUFRIUkVBRF9DRkxBR1NACitQVEhSRUFEX0xJQlMgPSBAUFRIUkVBRF9MSUJTQAorUFZSX0NGTEFHUyA9IEBQVlJfQ0ZMQUdTQAorUFZSX0xJQlMgPSBAUFZSX0xJQlNACitQWVRIT04gPSBAUFlUSE9OQAorUFlUSE9OX0VYRUNfUFJFRklYID0gQFBZVEhPTl9FWEVDX1BSRUZJWEAKK1BZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACitQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACitQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKK1FUX0NGTEFHUyA9IEBRVF9DRkxBR1NACitRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKK1FUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAorUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKK1FUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKK1FUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAorUkFOTElCID0gQFJBTkxJQkAKK1JDQyA9IEBSQ0NACitSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKK1JTVkdfTElCUyA9IEBSU1ZHX0xJQlNACitSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKK1JUTVBfTElCUyA9IEBSVE1QX0xJQlNACitTQkNfQ0ZMQUdTID0gQFNCQ19DRkxBR1NACitTQkNfTElCUyA9IEBTQkNfTElCU0AKK1NDSFJPX0NGTEFHUyA9IEBTQ0hST19DRkxBR1NACitTQ0hST19MSUJTID0gQFNDSFJPX0xJQlNACitTRExfQ0ZMQUdTID0gQFNETF9DRkxBR1NACitTRExfQ0xVVFRFUiA9IEBTRExfQ0xVVFRFUkAKK1NETF9DT05GSUcgPSBAU0RMX0NPTkZJR0AKK1NETF9MSUJTID0gQFNETF9MSUJTQAorU0VEID0gQFNFREAKK1NFVF9NQUtFID0gQFNFVF9NQUtFQAorU0hFTEwgPSBAU0hFTExACitTSE1fTElCUyA9IEBTSE1fTElCU0AKK1NMVjJfQ0ZMQUdTID0gQFNMVjJfQ0ZMQUdTQAorU0xWMl9MSUJTID0gQFNMVjJfTElCU0AKK1NOREZJTEVfQ0ZMQUdTID0gQFNOREZJTEVfQ0ZMQUdTQAorU05ERklMRV9MSUJTID0gQFNOREZJTEVfTElCU0AKK1NORElPX0xJQlMgPSBAU05ESU9fTElCU0AKK1NPVU5EVE9VQ0hfQ0ZMQUdTID0gQFNPVU5EVE9VQ0hfQ0ZMQUdTQAorU09VTkRUT1VDSF9MSUJTID0gQFNPVU5EVE9VQ0hfTElCU0AKK1NQQU5EU1BfQ0ZMQUdTID0gQFNQQU5EU1BfQ0ZMQUdTQAorU1BBTkRTUF9MSUJTID0gQFNQQU5EU1BfTElCU0AKK1NQQ19MSUJTID0gQFNQQ19MSUJTQAorU1JUUF9DRkxBR1MgPSBAU1JUUF9DRkxBR1NACitTUlRQX0xJQlMgPSBAU1JUUF9MSUJTQAorU1NIMl9DRkxBR1MgPSBAU1NIMl9DRkxBR1NACitTU0gyX0xJQlMgPSBAU1NIMl9MSUJTQAorU1RSSVAgPSBAU1RSSVBACitURUxFVEVYVERFQ19DRkxBR1MgPSBAVEVMRVRFWFRERUNfQ0ZMQUdTQAorVEVMRVRFWFRERUNfTElCUyA9IEBURUxFVEVYVERFQ19MSUJTQAorVElHRVJfQ0ZMQUdTID0gQFRJR0VSX0NGTEFHU0AKK1RJR0VSX0xJQlMgPSBAVElHRVJfTElCU0AKK1RJTUlESVRZX0NGTEFHUyA9IEBUSU1JRElUWV9DRkxBR1NACitUSU1JRElUWV9MSUJTID0gQFRJTUlESVRZX0xJQlNACitVSUMgPSBAVUlDQAorVVNFX0dMRVMyID0gQFVTRV9HTEVTMkAKK1VTRV9OTFMgPSBAVVNFX05MU0AKK1VTRV9PUEVOR0wgPSBAVVNFX09QRU5HTEAKK1ZBTEdSSU5EX0NGTEFHUyA9IEBWQUxHUklORF9DRkxBR1NACitWQUxHUklORF9MSUJTID0gQFZBTEdSSU5EX0xJQlNACitWQUxHUklORF9QQVRIID0gQFZBTEdSSU5EX1BBVEhACitWRFBBVV9DRkxBR1MgPSBAVkRQQVVfQ0ZMQUdTQAorVkRQQVVfTElCUyA9IEBWRFBBVV9MSUJTQAorVkVSU0lPTiA9IEBWRVJTSU9OQAorVk9BQUNFTkNfQ0ZMQUdTID0gQFZPQUFDRU5DX0NGTEFHU0AKK1ZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKK1ZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAorVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAorV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACitXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACitXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKK1dBU0FQSV9MSUJTID0gQFdBU0FQSV9MSUJTQAorV0FZTEFORF9DRkxBR1MgPSBAV0FZTEFORF9DRkxBR1NACitXQVlMQU5EX0VHTF9DRkxBR1MgPSBAV0FZTEFORF9FR0xfQ0ZMQUdTQAorV0FZTEFORF9FR0xfTElCUyA9IEBXQVlMQU5EX0VHTF9MSUJTQAorV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKK1dFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAorV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKK1dJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACitXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACitXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACitXSU5TQ1JFRU5DQVBfTElCUyA9IEBXSU5TQ1JFRU5DQVBfTElCU0AKK1dJTlNPQ0syX0xJQlMgPSBAV0lOU09DSzJfTElCU0AKK1gxMV9DRkxBR1MgPSBAWDExX0NGTEFHU0AKK1gxMV9MSUJTID0gQFgxMV9MSUJTQAorWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACitYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACitYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKK1hDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACitYR0VUVEVYVCA9IEBYR0VUVEVYVEAKK1hHRVRURVhUXzAxNSA9IEBYR0VUVEVYVF8wMTVACitYR0VUVEVYVF9FWFRSQV9PUFRJT05TID0gQFhHRVRURVhUX0VYVFJBX09QVElPTlNACitYVklEX0xJQlMgPSBAWFZJRF9MSUJTQAorWF9DRkxBR1MgPSBAWF9DRkxBR1NACitYX0xJQlMgPSBAWF9MSUJTQAorWkJBUl9DRkxBR1MgPSBAWkJBUl9DRkxBR1NACitaQkFSX0xJQlMgPSBAWkJBUl9MSUJTQAorYWJzX2J1aWxkZGlyID0gQGFic19idWlsZGRpckAKK2Fic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKK2Fic190b3BfYnVpbGRkaXIgPSBAYWJzX3RvcF9idWlsZGRpckAKK2Fic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorYWNfY3RfQVIgPSBAYWNfY3RfQVJACithY19jdF9DQyA9IEBhY19jdF9DQ0AKK2FjX2N0X0NYWCA9IEBhY19jdF9DWFhACithY19jdF9EVU1QQklOID0gQGFjX2N0X0RVTVBCSU5ACithY19jdF9PQkpDID0gQGFjX2N0X09CSkNACithbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKK2FtX19sZWFkaW5nX2RvdCA9IEBhbV9fbGVhZGluZ19kb3RACithbV9fcXVvdGUgPSBAYW1fX3F1b3RlQAorYW1fX3RhciA9IEBhbV9fdGFyQAorYW1fX3VudGFyID0gQGFtX191bnRhckAKK2F4X3B0aHJlYWRfY29uZmlnID0gQGF4X3B0aHJlYWRfY29uZmlnQAorYmluZGlyID0gQGJpbmRpckAKK2J1aWxkID0gQGJ1aWxkQAorYnVpbGRfYWxpYXMgPSBAYnVpbGRfYWxpYXNACitidWlsZF9jcHUgPSBAYnVpbGRfY3B1QAorYnVpbGRfb3MgPSBAYnVpbGRfb3NACitidWlsZF92ZW5kb3IgPSBAYnVpbGRfdmVuZG9yQAorYnVpbGRkaXIgPSBAYnVpbGRkaXJACitkYXRhZGlyID0gQGRhdGFkaXJACitkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKK2RvY2RpciA9IEBkb2NkaXJACitkdmlkaXIgPSBAZHZpZGlyQAorZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACitob3N0ID0gQGhvc3RACitob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACitob3N0X2NwdSA9IEBob3N0X2NwdUAKK2hvc3Rfb3MgPSBAaG9zdF9vc0AKK2hvc3RfdmVuZG9yID0gQGhvc3RfdmVuZG9yQAoraHRtbGRpciA9IEBodG1sZGlyQAoraW5jbHVkZWRpciA9IEBpbmNsdWRlZGlyQAoraW5mb2RpciA9IEBpbmZvZGlyQAoraW5zdGFsbF9zaCA9IEBpbnN0YWxsX3NoQAorbGliZGlyID0gQGxpYmRpckAKK2xpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKK2xvY2FsZWRpciA9IEBsb2NhbGVkaXJACitsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJACittYW5kaXIgPSBAbWFuZGlyQAorbWtkaXJfcCA9IEBta2Rpcl9wQAorb2xkaW5jbHVkZWRpciA9IEBvbGRpbmNsdWRlZGlyQAorcGRmZGlyID0gQHBkZmRpckAKK3BrZ3B5ZXhlY2RpciA9IEBwa2dweWV4ZWNkaXJACitwa2dweXRob25kaXIgPSBAcGtncHl0aG9uZGlyQAorcGx1Z2luZGlyID0gQHBsdWdpbmRpckAKK3ByZWZpeCA9IEBwcmVmaXhACitwcm9ncmFtX3RyYW5zZm9ybV9uYW1lID0gQHByb2dyYW1fdHJhbnNmb3JtX25hbWVACitwc2RpciA9IEBwc2RpckAKK3B5ZXhlY2RpciA9IEBweWV4ZWNkaXJACitweXRob25kaXIgPSBAcHl0aG9uZGlyQAorcnVuc3RhdGVkaXIgPSBAcnVuc3RhdGVkaXJACitzYmluZGlyID0gQHNiaW5kaXJACitzaGFyZWRzdGF0ZWRpciA9IEBzaGFyZWRzdGF0ZWRpckAKK3NyY2RpciA9IEBzcmNkaXJACitzeXNjb25mZGlyID0gQHN5c2NvbmZkaXJACit0YXJnZXQgPSBAdGFyZ2V0QAordGFyZ2V0X2FsaWFzID0gQHRhcmdldF9hbGlhc0AKK3RhcmdldF9jcHUgPSBAdGFyZ2V0X2NwdUAKK3RhcmdldF9vcyA9IEB0YXJnZXRfb3NACit0YXJnZXRfdmVuZG9yID0gQHRhcmdldF92ZW5kb3JACit0b3BfYnVpbGRfcHJlZml4ID0gQHRvcF9idWlsZF9wcmVmaXhACit0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAord2F5bGFuZF9zY2FubmVyID0gQHdheWxhbmRfc2Nhbm5lckAKK3BsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdHZ1bGthbi5sYQorU1VCRElSUyA9ICQoYW1fX2FwcGVuZF8xKQorRElTVF9TVUJESVJTID0geGNiCitESVNUQ0xFQU5GSUxFUyA9IHZrY29uZmlnLmgKK2xpYmdzdHZ1bGthbl9sYV9TT1VSQ0VTID0gXAorCWdzdHZ1bGthbi5jIFwKKwl2a2RldmljZS5jIFwKKwl2a2Rpc3BsYXkuYyBcCisJdmtlcnJvci5jIFwKKwl2a2J1ZmZlcm1lbW9yeS5jIFwKKwl2a2ltYWdlbWVtb3J5LmMgXAorCXZrYnVmZmVycG9vbC5jIFwKKwl2a2luc3RhbmNlLmMgXAorCXZrbWVtb3J5LmMgXAorCXZrcXVldWUuYyBcCisJdmtzaW5rLmMgXAorCXZrc3dhcHBlci5jIFwKKwl2a3VwbG9hZC5jIFwKKwl2a3V0aWxzLmMgXAorCXZrd2luZG93LmMKKworbm9pbnN0X0hFQURFUlMgPSBcCisJdmsuaCBcCisJdmtfZndkLmggXAorCXZrZGV2aWNlLmggXAorCXZrZGlzcGxheS5oIFwKKwl2a2Vycm9yLmggXAorCXZrYnVmZmVybWVtb3J5LmggXAorCXZraW1hZ2VtZW1vcnkuaCBcCisJdmtidWZmZXJwb29sLmggXAorCXZraW5zdGFuY2UuaCBcCisJdmttZW1vcnkuaCBcCisJdmtxdWV1ZS5oIFwKKwl2a3NpbmsuaCBcCisJdmtzd2FwcGVyLmggXAorCXZrdXBsb2FkLmggXAorCXZrdXRpbHMuaCBcCisJdmt1dGlsc19wcml2YXRlLmggXAorCXZrd2luZG93LmgKKworbGliZ3N0dnVsa2FuX2xhX0NGTEFHUyA9IFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkkKEdTVF9DRkxBR1MpIFwKKwkkKEdTVF9CQVNFX0NGTEFHUykgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKwkkKFZVTEtBTl9DRkxBR1MpCisKK2xpYmdzdHZ1bGthbl9sYV9MSUJBREQgPSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCisJLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgJChWVUxLQU5fTElCUykgJChhbV9fYXBwZW5kXzIpCitsaWJnc3R2dWxrYW5fbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQorbGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCithbGw6IGFsbC1yZWN1cnNpdmUKKworLlNVRkZJWEVTOgorLlNVRkZJWEVTOiAuYyAubG8gLm8gLm9iagorJChzcmNkaXIpL01ha2VmaWxlLmluOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAgJChhbV9fY29uZmlndXJlX2RlcHMpCisJQGZvciBkZXAgaW4gJD87IGRvIFwKKwkgIGNhc2UgJyQoYW1fX2NvbmZpZ3VyZV9kZXBzKScgaW4gXAorCSAgICAqJCRkZXAqKSBcCisJICAgICAgKCBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2ggKSBcCisJICAgICAgICAmJiB7IGlmIHRlc3QgLWYgJEA7IHRoZW4gZXhpdCAwOyBlbHNlIGJyZWFrOyBmaTsgfTsgXAorCSAgICAgIGV4aXQgMTs7IFwKKwkgIGVzYWM7IFwKKwlkb25lOyBcCisJZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgZXh0L3Z1bGthbi9NYWtlZmlsZSc7IFwKKwkkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSAmJiBcCisJICAkKEFVVE9NQUtFKSAtLWdudSBleHQvdnVsa2FuL01ha2VmaWxlCitNYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisJQGNhc2UgJyQ/JyBpbiBcCisJICAqY29uZmlnLnN0YXR1cyopIFwKKwkgICAgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoOzsgXAorCSAgKikgXAorCSAgICBlY2hvICcgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpJzsgXAorCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQCAkKGFtX19kZXBmaWxlc19tYXliZSk7OyBcCisJZXNhYzsKKworJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXM6ICQodG9wX3NyY2RpcikvY29uZmlndXJlICQoQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMpCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCisKKyQodG9wX3NyY2RpcikvY29uZmlndXJlOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAICQoYW1fX2NvbmZpZ3VyZV9kZXBzKQorCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAorJChBQ0xPQ0FMX000KTogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKGFtX19hY2xvY2FsX200X2RlcHMpCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCiskKGFtX19hY2xvY2FsX200X2RlcHMpOgorCitpbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTOiAkKHBsdWdpbl9MVExJQlJBUklFUykKKwlAJChOT1JNQUxfSU5TVEFMTCkKKwlAbGlzdD0nJChwbHVnaW5fTFRMSUJSQVJJRVMpJzsgdGVzdCAtbiAiJChwbHVnaW5kaXIpIiB8fCBsaXN0PTsgXAorCWxpc3QyPTsgZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0IC1mICQkcDsgdGhlbiBcCisJICAgIGxpc3QyPSIkJGxpc3QyICQkcCI7IFwKKwkgIGVsc2UgOjsgZmk7IFwKKwlkb25lOyBcCisJdGVzdCAteiAiJCRsaXN0MiIgfHwgeyBcCisJICBlY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQocGx1Z2luZGlyKSciOyBcCisJICAkKE1LRElSX1ApICIkKERFU1RESVIpJChwbHVnaW5kaXIpIiB8fCBleGl0IDE7IFwKKwkgIGVjaG8gIiAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAnJChERVNURElSKSQocGx1Z2luZGlyKSciOyBcCisJICAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAiJChERVNURElSKSQocGx1Z2luZGlyKSI7IFwKKwl9CisKK3VuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUzoKKwlAJChOT1JNQUxfVU5JTlNUQUxMKQorCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyB0ZXN0IC1uICIkKHBsdWdpbmRpcikiIHx8IGxpc3Q9OyBcCisJZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICAkKGFtX19zdHJpcF9kaXIpIFwKKwkgIGVjaG8gIiAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPXVuaW5zdGFsbCBybSAtZiAnJChERVNURElSKSQocGx1Z2luZGlyKS8kJGYnIjsgXAorCSAgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgIiQoREVTVERJUikkKHBsdWdpbmRpcikvJCRmIjsgXAorCWRvbmUKKworY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVM6CisJLXRlc3QgLXogIiQocGx1Z2luX0xUTElCUkFSSUVTKSIgfHwgcm0gLWYgJChwbHVnaW5fTFRMSUJSQVJJRVMpCisJQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IFwKKwlsb2NzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRwOyBkb25lIHwgXAorCSAgICAgIHNlZCAnc3xeW14vXSokJHwufDsgc3wvW14vXSokJHx8OyBzfCQkfC9zb19sb2NhdGlvbnN8JyB8IFwKKwkgICAgICBzb3J0IC11YDsgXAorCXRlc3QgLXogIiQkbG9jcyIgfHwgeyBcCisJICBlY2hvIHJtIC1mICQke2xvY3N9OyBcCisJICBybSAtZiAkJHtsb2NzfTsgXAorCX0KKworbGliZ3N0dnVsa2FuLmxhOiAkKGxpYmdzdHZ1bGthbl9sYV9PQkpFQ1RTKSAkKGxpYmdzdHZ1bGthbl9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0dnVsa2FuX2xhX0RFUEVOREVOQ0lFUykgCisJJChBTV9WX0NDTEQpJChsaWJnc3R2dWxrYW5fbGFfTElOSykgLXJwYXRoICQocGx1Z2luZGlyKSAkKGxpYmdzdHZ1bGthbl9sYV9PQkpFQ1RTKSAkKGxpYmdzdHZ1bGthbl9sYV9MSUJBREQpICQoTElCUykKKworbW9zdGx5Y2xlYW4tY29tcGlsZToKKwktcm0gLWYgKi4kKE9CSkVYVCkKKworZGlzdGNsZWFuLWNvbXBpbGU6CisJLXJtIC1mICoudGFiLmMKKworQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS1nc3R2dWxrYW4uUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtidWZmZXJtZW1vcnkuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtidWZmZXJwb29sLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrZGV2aWNlLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrZGlzcGxheS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2Vycm9yLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZraW1hZ2VtZW1vcnkuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtpbnN0YW5jZS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a21lbW9yeS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3F1ZXVlLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrc2luay5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3N3YXBwZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmt1cGxvYWQuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmt1dGlscy5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3dpbmRvdy5QbG9AYW1fX3F1b3RlQAorCisuYy5vOgorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChDT01QSUxFKSAtTVQgJEAgLU1EIC1NUCAtTUYgJCRkZXBiYXNlLlRwbyAtYyAtbyAkQCAkPCAmJlwKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoYW1fX212KSAkJGRlcGJhc2UuVHBvICQkZGVwYmFzZS5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENPTVBJTEUpIC1jIC1vICRAICQ8CisKKy5jLm9iajoKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQylkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5vYmokJHx8J2A7XAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChDT01QSUxFKSAtTVQgJEAgLU1EIC1NUCAtTUYgJCRkZXBiYXNlLlRwbyAtYyAtbyAkQCBgJChDWUdQQVRIX1cpICckPCdgICYmXAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQkZGVwYmFzZS5UcG8gJCRkZXBiYXNlLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nJDwnIG9iamVjdD0nJEAnIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ09NUElMRSkgLWMgLW8gJEAgYCQoQ1lHUEFUSF9XKSAnJDwnYAorCisuYy5sbzoKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQylkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5sbyQkfHwnYDtcCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKExUQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQkZGVwYmFzZS5UcG8gLWMgLW8gJEAgJDwgJiZcCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKGFtX19tdikgJCRkZXBiYXNlLlRwbyAkJGRlcGJhc2UuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nJDwnIG9iamVjdD0nJEAnIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExUQ09NUElMRSkgLWMgLW8gJEAgJDwKKworbGliZ3N0dnVsa2FuX2xhLWdzdHZ1bGthbi5sbzogZ3N0dnVsa2FuLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2dWxrYW5fbGEtZ3N0dnVsa2FuLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtZ3N0dnVsa2FuLlRwbyAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtZ3N0dnVsa2FuLmxvIGB0ZXN0IC1mICdnc3R2dWxrYW4uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dnVsa2FuLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS1nc3R2dWxrYW4uVHBvICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtZ3N0dnVsa2FuLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHZ1bGthbi5jJyBvYmplY3Q9J2xpYmdzdHZ1bGthbl9sYS1nc3R2dWxrYW4ubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS1nc3R2dWxrYW4ubG8gYHRlc3QgLWYgJ2dzdHZ1bGthbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3R2dWxrYW4uYworCitsaWJnc3R2dWxrYW5fbGEtdmtkZXZpY2UubG86IHZrZGV2aWNlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2dWxrYW5fbGEtdmtkZXZpY2UubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2RldmljZS5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrZGV2aWNlLmxvIGB0ZXN0IC1mICd2a2RldmljZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2RldmljZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtkZXZpY2UuVHBvICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtkZXZpY2UuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndmtkZXZpY2UuYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5fbGEtdmtkZXZpY2UubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a2RldmljZS5sbyBgdGVzdCAtZiAndmtkZXZpY2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtkZXZpY2UuYworCitsaWJnc3R2dWxrYW5fbGEtdmtkaXNwbGF5LmxvOiB2a2Rpc3BsYXkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHZ1bGthbl9sYS12a2Rpc3BsYXkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2Rpc3BsYXkuVHBvIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a2Rpc3BsYXkubG8gYHRlc3QgLWYgJ3ZrZGlzcGxheS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2Rpc3BsYXkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrZGlzcGxheS5UcG8gJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2Rpc3BsYXkuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndmtkaXNwbGF5LmMnIG9iamVjdD0nbGliZ3N0dnVsa2FuX2xhLXZrZGlzcGxheS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrZGlzcGxheS5sbyBgdGVzdCAtZiAndmtkaXNwbGF5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrZGlzcGxheS5jCisKK2xpYmdzdHZ1bGthbl9sYS12a2Vycm9yLmxvOiB2a2Vycm9yLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2dWxrYW5fbGEtdmtlcnJvci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrZXJyb3IuVHBvIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a2Vycm9yLmxvIGB0ZXN0IC1mICd2a2Vycm9yLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrZXJyb3IuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrZXJyb3IuVHBvICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtlcnJvci5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSd2a2Vycm9yLmMnIG9iamVjdD0nbGliZ3N0dnVsa2FuX2xhLXZrZXJyb3IubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a2Vycm9yLmxvIGB0ZXN0IC1mICd2a2Vycm9yLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrZXJyb3IuYworCitsaWJnc3R2dWxrYW5fbGEtdmtidWZmZXJtZW1vcnkubG86IHZrYnVmZmVybWVtb3J5LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2dWxrYW5fbGEtdmtidWZmZXJtZW1vcnkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2J1ZmZlcm1lbW9yeS5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVybWVtb3J5LmxvIGB0ZXN0IC1mICd2a2J1ZmZlcm1lbW9yeS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2J1ZmZlcm1lbW9yeS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtidWZmZXJtZW1vcnkuVHBvICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtidWZmZXJtZW1vcnkuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndmtidWZmZXJtZW1vcnkuYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5fbGEtdmtidWZmZXJtZW1vcnkubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a2J1ZmZlcm1lbW9yeS5sbyBgdGVzdCAtZiAndmtidWZmZXJtZW1vcnkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtidWZmZXJtZW1vcnkuYworCitsaWJnc3R2dWxrYW5fbGEtdmtpbWFnZW1lbW9yeS5sbzogdmtpbWFnZW1lbW9yeS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLXZraW1hZ2VtZW1vcnkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2ltYWdlbWVtb3J5LlRwbyAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtpbWFnZW1lbW9yeS5sbyBgdGVzdCAtZiAndmtpbWFnZW1lbW9yeS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2ltYWdlbWVtb3J5LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2ltYWdlbWVtb3J5LlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZraW1hZ2VtZW1vcnkuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndmtpbWFnZW1lbW9yeS5jJyBvYmplY3Q9J2xpYmdzdHZ1bGthbl9sYS12a2ltYWdlbWVtb3J5LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtpbWFnZW1lbW9yeS5sbyBgdGVzdCAtZiAndmtpbWFnZW1lbW9yeS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2ltYWdlbWVtb3J5LmMKKworbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVycG9vbC5sbzogdmtidWZmZXJwb29sLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2dWxrYW5fbGEtdmtidWZmZXJwb29sLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtidWZmZXJwb29sLlRwbyAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtidWZmZXJwb29sLmxvIGB0ZXN0IC1mICd2a2J1ZmZlcnBvb2wuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtidWZmZXJwb29sLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2J1ZmZlcnBvb2wuVHBvICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtidWZmZXJwb29sLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3ZrYnVmZmVycG9vbC5jJyBvYmplY3Q9J2xpYmdzdHZ1bGthbl9sYS12a2J1ZmZlcnBvb2wubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a2J1ZmZlcnBvb2wubG8gYHRlc3QgLWYgJ3ZrYnVmZmVycG9vbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2J1ZmZlcnBvb2wuYworCitsaWJnc3R2dWxrYW5fbGEtdmtpbnN0YW5jZS5sbzogdmtpbnN0YW5jZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLXZraW5zdGFuY2UubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2luc3RhbmNlLlRwbyAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtpbnN0YW5jZS5sbyBgdGVzdCAtZiAndmtpbnN0YW5jZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2luc3RhbmNlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2luc3RhbmNlLlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZraW5zdGFuY2UuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndmtpbnN0YW5jZS5jJyBvYmplY3Q9J2xpYmdzdHZ1bGthbl9sYS12a2luc3RhbmNlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtpbnN0YW5jZS5sbyBgdGVzdCAtZiAndmtpbnN0YW5jZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2luc3RhbmNlLmMKKworbGliZ3N0dnVsa2FuX2xhLXZrbWVtb3J5LmxvOiB2a21lbW9yeS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLXZrbWVtb3J5LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmttZW1vcnkuVHBvIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a21lbW9yeS5sbyBgdGVzdCAtZiAndmttZW1vcnkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmttZW1vcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrbWVtb3J5LlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrbWVtb3J5LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3ZrbWVtb3J5LmMnIG9iamVjdD0nbGliZ3N0dnVsa2FuX2xhLXZrbWVtb3J5LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmttZW1vcnkubG8gYHRlc3QgLWYgJ3ZrbWVtb3J5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrbWVtb3J5LmMKKworbGliZ3N0dnVsa2FuX2xhLXZrcXVldWUubG86IHZrcXVldWUuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHZ1bGthbl9sYS12a3F1ZXVlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtxdWV1ZS5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrcXVldWUubG8gYHRlc3QgLWYgJ3ZrcXVldWUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtxdWV1ZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtxdWV1ZS5UcG8gJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3F1ZXVlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3ZrcXVldWUuYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5fbGEtdmtxdWV1ZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrcXVldWUubG8gYHRlc3QgLWYgJ3ZrcXVldWUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtxdWV1ZS5jCisKK2xpYmdzdHZ1bGthbl9sYS12a3NpbmsubG86IHZrc2luay5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLXZrc2luay5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrc2luay5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrc2luay5sbyBgdGVzdCAtZiAndmtzaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrc2luay5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtzaW5rLlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrc2luay5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSd2a3NpbmsuYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5fbGEtdmtzaW5rLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtzaW5rLmxvIGB0ZXN0IC1mICd2a3NpbmsuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtzaW5rLmMKKworbGliZ3N0dnVsa2FuX2xhLXZrc3dhcHBlci5sbzogdmtzd2FwcGVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2dWxrYW5fbGEtdmtzd2FwcGVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtzd2FwcGVyLlRwbyAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtzd2FwcGVyLmxvIGB0ZXN0IC1mICd2a3N3YXBwZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtzd2FwcGVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3N3YXBwZXIuVHBvICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtzd2FwcGVyLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3Zrc3dhcHBlci5jJyBvYmplY3Q9J2xpYmdzdHZ1bGthbl9sYS12a3N3YXBwZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a3N3YXBwZXIubG8gYHRlc3QgLWYgJ3Zrc3dhcHBlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a3N3YXBwZXIuYworCitsaWJnc3R2dWxrYW5fbGEtdmt1cGxvYWQubG86IHZrdXBsb2FkLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2dWxrYW5fbGEtdmt1cGxvYWQubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3VwbG9hZC5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrdXBsb2FkLmxvIGB0ZXN0IC1mICd2a3VwbG9hZC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a3VwbG9hZC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmt1cGxvYWQuVHBvICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmt1cGxvYWQuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndmt1cGxvYWQuYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5fbGEtdmt1cGxvYWQubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a3VwbG9hZC5sbyBgdGVzdCAtZiAndmt1cGxvYWQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmt1cGxvYWQuYworCitsaWJnc3R2dWxrYW5fbGEtdmt1dGlscy5sbzogdmt1dGlscy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLXZrdXRpbHMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3V0aWxzLlRwbyAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmt1dGlscy5sbyBgdGVzdCAtZiAndmt1dGlscy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a3V0aWxzLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3V0aWxzLlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrdXRpbHMuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndmt1dGlscy5jJyBvYmplY3Q9J2xpYmdzdHZ1bGthbl9sYS12a3V0aWxzLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmt1dGlscy5sbyBgdGVzdCAtZiAndmt1dGlscy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a3V0aWxzLmMKKworbGliZ3N0dnVsa2FuX2xhLXZrd2luZG93LmxvOiB2a3dpbmRvdy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLXZrd2luZG93LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmt3aW5kb3cuVHBvIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a3dpbmRvdy5sbyBgdGVzdCAtZiAndmt3aW5kb3cuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmt3aW5kb3cuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrd2luZG93LlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrd2luZG93LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3Zrd2luZG93LmMnIG9iamVjdD0nbGliZ3N0dnVsa2FuX2xhLXZrd2luZG93LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmt3aW5kb3cubG8gYHRlc3QgLWYgJ3Zrd2luZG93LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrd2luZG93LmMKKworbW9zdGx5Y2xlYW4tbGlidG9vbDoKKwktcm0gLWYgKi5sbworCitjbGVhbi1saWJ0b29sOgorCS1ybSAtcmYgLmxpYnMgX2xpYnMKKworIyBUaGlzIGRpcmVjdG9yeSdzIHN1YmRpcmVjdG9yaWVzIGFyZSBtb3N0bHkgaW5kZXBlbmRlbnQ7IHlvdSBjYW4gY2QKKyMgaW50byB0aGVtIGFuZCBydW4gJ21ha2UnIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGlzIE1ha2VmaWxlLgorIyBUbyBjaGFuZ2UgdGhlIHZhbHVlcyBvZiAnbWFrZScgdmFyaWFibGVzOiBpbnN0ZWFkIG9mIGVkaXRpbmcgTWFrZWZpbGVzLAorIyAoMSkgaWYgdGhlIHZhcmlhYmxlIGlzIHNldCBpbiAnY29uZmlnLnN0YXR1cycsIGVkaXQgJ2NvbmZpZy5zdGF0dXMnCisjICAgICAod2hpY2ggd2lsbCBjYXVzZSB0aGUgTWFrZWZpbGVzIHRvIGJlIHJlZ2VuZXJhdGVkIHdoZW4geW91IHJ1biAnbWFrZScpOworIyAoMikgb3RoZXJ3aXNlLCBwYXNzIHRoZSBkZXNpcmVkIHZhbHVlcyBvbiB0aGUgJ21ha2UnIGNvbW1hbmQgbGluZS4KKyQoYW1fX3JlY3Vyc2l2ZV90YXJnZXRzKToKKwlAZmFpbD07IFwKKwlpZiAkKGFtX19tYWtlX2tlZXBnb2luZyk7IHRoZW4gXAorCSAgZmFpbGNvbT0nZmFpbD15ZXMnOyBcCisJZWxzZSBcCisJICBmYWlsY29tPSdleGl0IDEnOyBcCisJZmk7IFwKKwlkb3Rfc2Vlbj1ubzsgXAorCXRhcmdldD1gZWNobyAkQCB8IHNlZCBzLy1yZWN1cnNpdmUvL2A7IFwKKwljYXNlICIkQCIgaW4gXAorCSAgZGlzdGNsZWFuLSogfCBtYWludGFpbmVyLWNsZWFuLSopIGxpc3Q9JyQoRElTVF9TVUJESVJTKScgOzsgXAorCSAgKikgbGlzdD0nJChTVUJESVJTKScgOzsgXAorCWVzYWM7IFwKKwlmb3Igc3ViZGlyIGluICQkbGlzdDsgZG8gXAorCSAgZWNobyAiTWFraW5nICQkdGFyZ2V0IGluICQkc3ViZGlyIjsgXAorCSAgaWYgdGVzdCAiJCRzdWJkaXIiID0gIi4iOyB0aGVuIFwKKwkgICAgZG90X3NlZW49eWVzOyBcCisJICAgIGxvY2FsX3RhcmdldD0iJCR0YXJnZXQtYW0iOyBcCisJICBlbHNlIFwKKwkgICAgbG9jYWxfdGFyZ2V0PSIkJHRhcmdldCI7IFwKKwkgIGZpOyBcCisJICAoJChhbV9fY2QpICQkc3ViZGlyICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpICQkbG9jYWxfdGFyZ2V0KSBcCisJICB8fCBldmFsICQkZmFpbGNvbTsgXAorCWRvbmU7IFwKKwlpZiB0ZXN0ICIkJGRvdF9zZWVuIiA9ICJubyI7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgIiQkdGFyZ2V0LWFtIiB8fCBleGl0IDE7IFwKKwlmaTsgdGVzdCAteiAiJCRmYWlsIgorCitJRDogJChhbV9fdGFnZ2VkX2ZpbGVzKQorCSQoYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyk7IG1raWQgLWZJRCAkJHVuaXF1ZQordGFnczogdGFncy1yZWN1cnNpdmUKK1RBR1M6IHRhZ3MKKwordGFncy1hbTogJChUQUdTX0RFUEVOREVOQ0lFUykgJChhbV9fdGFnZ2VkX2ZpbGVzKQorCXNldCB4OyBcCisJaGVyZT1gcHdkYDsgXAorCWlmICgkKEVUQUdTKSAtLWV0YWdzLWluY2x1ZGUgLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAorCSAgaW5jbHVkZV9vcHRpb249LS1ldGFncy1pbmNsdWRlOyBcCisJICBlbXB0eV9maXg9LjsgXAorCWVsc2UgXAorCSAgaW5jbHVkZV9vcHRpb249LS1pbmNsdWRlOyBcCisJICBlbXB0eV9maXg9OyBcCisJZmk7IFwKKwlsaXN0PSckKFNVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9IC47IHRoZW4gOjsgZWxzZSBcCisJICAgIHRlc3QgISAtZiAkJHN1YmRpci9UQUdTIHx8IFwKKwkgICAgICBzZXQgIiQkQCIgIiQkaW5jbHVkZV9vcHRpb249JCRoZXJlLyQkc3ViZGlyL1RBR1MiOyBcCisJICBmaTsgXAorCWRvbmU7IFwKKwkkKGFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMpOyBcCisJc2hpZnQ7IFwKKwlpZiB0ZXN0IC16ICIkKEVUQUdTX0FSR1MpJCQqJCR1bmlxdWUiOyB0aGVuIDo7IGVsc2UgXAorCSAgdGVzdCAtbiAiJCR1bmlxdWUiIHx8IHVuaXF1ZT0kJGVtcHR5X2ZpeDsgXAorCSAgaWYgdGVzdCAkJCMgLWd0IDA7IHRoZW4gXAorCSAgICAkKEVUQUdTKSAkKEVUQUdTRkxBR1MpICQoQU1fRVRBR1NGTEFHUykgJChFVEFHU19BUkdTKSBcCisJICAgICAgIiQkQCIgJCR1bmlxdWU7IFwKKwkgIGVsc2UgXAorCSAgICAkKEVUQUdTKSAkKEVUQUdTRkxBR1MpICQoQU1fRVRBR1NGTEFHUykgJChFVEFHU19BUkdTKSBcCisJICAgICAgJCR1bmlxdWU7IFwKKwkgIGZpOyBcCisJZmkKK2N0YWdzOiBjdGFncy1yZWN1cnNpdmUKKworQ1RBR1M6IGN0YWdzCitjdGFncy1hbTogJChUQUdTX0RFUEVOREVOQ0lFUykgJChhbV9fdGFnZ2VkX2ZpbGVzKQorCSQoYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyk7IFwKKwl0ZXN0IC16ICIkKENUQUdTX0FSR1MpJCR1bmlxdWUiIFwKKwkgIHx8ICQoQ1RBR1MpICQoQ1RBR1NGTEFHUykgJChBTV9DVEFHU0ZMQUdTKSAkKENUQUdTX0FSR1MpIFwKKwkgICAgICQkdW5pcXVlCisKK0dUQUdTOgorCWhlcmU9YCQoYW1fX2NkKSAkKHRvcF9idWlsZGRpcikgJiYgcHdkYCBcCisJICAmJiAkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSBcCisJICAmJiBndGFncyAtaSAkKEdUQUdTX0FSR1MpICIkJGhlcmUiCitjc2NvcGVsaXN0OiBjc2NvcGVsaXN0LXJlY3Vyc2l2ZQorCitjc2NvcGVsaXN0LWFtOiAkKGFtX190YWdnZWRfZmlsZXMpCisJbGlzdD0nJChhbV9fdGFnZ2VkX2ZpbGVzKSc7IFwKKwljYXNlICIkKHNyY2RpcikiIGluIFwKKwkgIFtcXC9dKiB8ID86W1xcL10qKSBzZGlyPSIkKHNyY2RpcikiIDs7IFwKKwkgICopIHNkaXI9JChzdWJkaXIpLyQoc3JjZGlyKSA7OyBcCisJZXNhYzsgXAorCWZvciBpIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBcCisJICAgIGVjaG8gIiQoc3ViZGlyKS8kJGkiOyBcCisJICBlbHNlIFwKKwkgICAgZWNobyAiJCRzZGlyLyQkaSI7IFwKKwkgIGZpOyBcCisJZG9uZSA+PiAkKHRvcF9idWlsZGRpcikvY3Njb3BlLmZpbGVzCisKK2Rpc3RjbGVhbi10YWdzOgorCS1ybSAtZiBUQUdTIElEIEdUQUdTIEdSVEFHUyBHU1lNUyBHUEFUSCB0YWdzCisKK2Rpc3RkaXI6ICQoRElTVEZJTEVTKQorCUBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqXS9cXFxcJi9nJ2A7IFwKKwl0b3BzcmNkaXJzdHJpcD1gZWNobyAiJCh0b3Bfc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCisJbGlzdD0nJChESVNURklMRVMpJzsgXAorCSAgZGlzdF9maWxlcz1gZm9yIGZpbGUgaW4gJCRsaXN0OyBkbyBlY2hvICQkZmlsZTsgZG9uZSB8IFwKKwkgIHNlZCAtZSAic3xeJCRzcmNkaXJzdHJpcC98fDt0IiBcCisJICAgICAgLWUgInN8XiQkdG9wc3JjZGlyc3RyaXAvfCQodG9wX2J1aWxkZGlyKS98O3QiYDsgXAorCWNhc2UgJCRkaXN0X2ZpbGVzIGluIFwKKwkgICovKikgJChNS0RJUl9QKSBgZWNobyAiJCRkaXN0X2ZpbGVzIiB8IFwKKwkJCSAgIHNlZCAnL1wvLyFkO3N8XnwkKGRpc3RkaXIpL3w7cywvW14vXSokJCwsJyB8IFwKKwkJCSAgIHNvcnQgLXVgIDs7IFwKKwllc2FjOyBcCisJZm9yIGZpbGUgaW4gJCRkaXN0X2ZpbGVzOyBkbyBcCisJICBpZiB0ZXN0IC1mICQkZmlsZSB8fCB0ZXN0IC1kICQkZmlsZTsgdGhlbiBkPS47IGVsc2UgZD0kKHNyY2Rpcik7IGZpOyBcCisJICBpZiB0ZXN0IC1kICQkZC8kJGZpbGU7IHRoZW4gXAorCSAgICBkaXI9YGVjaG8gIi8kJGZpbGUiIHwgc2VkIC1lICdzLC9bXi9dKiQkLCwnYDsgXAorCSAgICBpZiB0ZXN0IC1kICIkKGRpc3RkaXIpLyQkZmlsZSI7IHRoZW4gXAorCSAgICAgIGZpbmQgIiQoZGlzdGRpcikvJCRmaWxlIiAtdHlwZSBkICEgLXBlcm0gLTcwMCAtZXhlYyBjaG1vZCB1K3J3eCB7fSBcOzsgXAorCSAgICBmaTsgXAorCSAgICBpZiB0ZXN0IC1kICQoc3JjZGlyKS8kJGZpbGUgJiYgdGVzdCAkJGQgIT0gJChzcmNkaXIpOyB0aGVuIFwKKwkgICAgICBjcCAtZnBSICQoc3JjZGlyKS8kJGZpbGUgIiQoZGlzdGRpcikkJGRpciIgfHwgZXhpdCAxOyBcCisJICAgICAgZmluZCAiJChkaXN0ZGlyKS8kJGZpbGUiIC10eXBlIGQgISAtcGVybSAtNzAwIC1leGVjIGNobW9kIHUrcnd4IHt9IFw7OyBcCisJICAgIGZpOyBcCisJICAgIGNwIC1mcFIgJCRkLyQkZmlsZSAiJChkaXN0ZGlyKSQkZGlyIiB8fCBleGl0IDE7IFwKKwkgIGVsc2UgXAorCSAgICB0ZXN0IC1mICIkKGRpc3RkaXIpLyQkZmlsZSIgXAorCSAgICB8fCBjcCAtcCAkJGQvJCRmaWxlICIkKGRpc3RkaXIpLyQkZmlsZSIgXAorCSAgICB8fCBleGl0IDE7IFwKKwkgIGZpOyBcCisJZG9uZQorCUBsaXN0PSckKERJU1RfU1VCRElSUyknOyBmb3Igc3ViZGlyIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAiJCRzdWJkaXIiID0gLjsgdGhlbiA6OyBlbHNlIFwKKwkgICAgJChhbV9fbWFrZV9kcnlydW4pIFwKKwkgICAgICB8fCB0ZXN0IC1kICIkKGRpc3RkaXIpLyQkc3ViZGlyIiBcCisJICAgICAgfHwgJChNS0RJUl9QKSAiJChkaXN0ZGlyKS8kJHN1YmRpciIgXAorCSAgICAgIHx8IGV4aXQgMTsgXAorCSAgICBkaXIxPSQkc3ViZGlyOyBkaXIyPSIkKGRpc3RkaXIpLyQkc3ViZGlyIjsgXAorCSAgICAkKGFtX19yZWxhdGl2aXplKTsgXAorCSAgICBuZXdfZGlzdGRpcj0kJHJlbGRpcjsgXAorCSAgICBkaXIxPSQkc3ViZGlyOyBkaXIyPSIkKHRvcF9kaXN0ZGlyKSI7IFwKKwkgICAgJChhbV9fcmVsYXRpdml6ZSk7IFwKKwkgICAgbmV3X3RvcF9kaXN0ZGlyPSQkcmVsZGlyOyBcCisJICAgIGVjaG8gIiAoY2QgJCRzdWJkaXIgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgdG9wX2Rpc3RkaXI9IiQkbmV3X3RvcF9kaXN0ZGlyIiBkaXN0ZGlyPSIkJG5ld19kaXN0ZGlyIiBcXCI7IFwKKwkgICAgZWNobyAiICAgICBhbV9fcmVtb3ZlX2Rpc3RkaXI9OiBhbV9fc2tpcF9sZW5ndGhfY2hlY2s9OiBhbV9fc2tpcF9tb2RlX2ZpeD06IGRpc3RkaXIpIjsgXAorCSAgICAoJChhbV9fY2QpICQkc3ViZGlyICYmIFwKKwkgICAgICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBcCisJICAgICAgICB0b3BfZGlzdGRpcj0iJCRuZXdfdG9wX2Rpc3RkaXIiIFwKKwkgICAgICAgIGRpc3RkaXI9IiQkbmV3X2Rpc3RkaXIiIFwKKwkJYW1fX3JlbW92ZV9kaXN0ZGlyPTogXAorCQlhbV9fc2tpcF9sZW5ndGhfY2hlY2s9OiBcCisJCWFtX19za2lwX21vZGVfZml4PTogXAorCSAgICAgICAgZGlzdGRpcikgXAorCSAgICAgIHx8IGV4aXQgMTsgXAorCSAgZmk7IFwKKwlkb25lCitjaGVjay1hbTogYWxsLWFtCitjaGVjazogY2hlY2stcmVjdXJzaXZlCithbGwtYW06IE1ha2VmaWxlICQoTFRMSUJSQVJJRVMpICQoSEVBREVSUykKK2luc3RhbGxkaXJzOiBpbnN0YWxsZGlycy1yZWN1cnNpdmUKK2luc3RhbGxkaXJzLWFtOgorCWZvciBkaXIgaW4gIiQoREVTVERJUikkKHBsdWdpbmRpcikiOyBkbyBcCisJICB0ZXN0IC16ICIkJGRpciIgfHwgJChNS0RJUl9QKSAiJCRkaXIiOyBcCisJZG9uZQoraW5zdGFsbDogaW5zdGFsbC1yZWN1cnNpdmUKK2luc3RhbGwtZXhlYzogaW5zdGFsbC1leGVjLXJlY3Vyc2l2ZQoraW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtcmVjdXJzaXZlCit1bmluc3RhbGw6IHVuaW5zdGFsbC1yZWN1cnNpdmUKKworaW5zdGFsbC1hbTogYWxsLWFtCisJQCQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWRhdGEtYW0KKworaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stcmVjdXJzaXZlCitpbnN0YWxsLXN0cmlwOgorCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgICBpbnN0YWxsOyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwKKwlmaQorbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKKworY2xlYW4tZ2VuZXJpYzoKKworZGlzdGNsZWFuLWdlbmVyaWM6CisJLXRlc3QgLXogIiQoQ09ORklHX0NMRUFOX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fRklMRVMpCisJLXRlc3QgLiA9ICIkKHNyY2RpcikiIHx8IHRlc3QgLXogIiQoQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMpCisJLXRlc3QgLXogIiQoRElTVENMRUFORklMRVMpIiB8fCBybSAtZiAkKERJU1RDTEVBTkZJTEVTKQorCittYWludGFpbmVyLWNsZWFuLWdlbmVyaWM6CisJQGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlIgorCUBlY2hvICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiIKK2NsZWFuOiBjbGVhbi1yZWN1cnNpdmUKKworY2xlYW4tYW06IGNsZWFuLWdlbmVyaWMgY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBcCisJbW9zdGx5Y2xlYW4tYW0KKworZGlzdGNsZWFuOiBkaXN0Y2xlYW4tcmVjdXJzaXZlCisJLXJtIC1yZiAuLyQoREVQRElSKQorCS1ybSAtZiBNYWtlZmlsZQorZGlzdGNsZWFuLWFtOiBjbGVhbi1hbSBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcCisJZGlzdGNsZWFuLXRhZ3MKKworZHZpOiBkdmktcmVjdXJzaXZlCisKK2R2aS1hbToKKworaHRtbDogaHRtbC1yZWN1cnNpdmUKKworaHRtbC1hbToKKworaW5mbzogaW5mby1yZWN1cnNpdmUKKworaW5mby1hbToKKworaW5zdGFsbC1kYXRhLWFtOiBpbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCisKK2luc3RhbGwtZHZpOiBpbnN0YWxsLWR2aS1yZWN1cnNpdmUKKworaW5zdGFsbC1kdmktYW06CisKK2luc3RhbGwtZXhlYy1hbToKKworaW5zdGFsbC1odG1sOiBpbnN0YWxsLWh0bWwtcmVjdXJzaXZlCisKK2luc3RhbGwtaHRtbC1hbToKKworaW5zdGFsbC1pbmZvOiBpbnN0YWxsLWluZm8tcmVjdXJzaXZlCisKK2luc3RhbGwtaW5mby1hbToKKworaW5zdGFsbC1tYW46CisKK2luc3RhbGwtcGRmOiBpbnN0YWxsLXBkZi1yZWN1cnNpdmUKKworaW5zdGFsbC1wZGYtYW06CisKK2luc3RhbGwtcHM6IGluc3RhbGwtcHMtcmVjdXJzaXZlCisKK2luc3RhbGwtcHMtYW06CisKK2luc3RhbGxjaGVjay1hbToKKworbWFpbnRhaW5lci1jbGVhbjogbWFpbnRhaW5lci1jbGVhbi1yZWN1cnNpdmUKKwktcm0gLXJmIC4vJChERVBESVIpCisJLXJtIC1mIE1ha2VmaWxlCittYWludGFpbmVyLWNsZWFuLWFtOiBkaXN0Y2xlYW4tYW0gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljCisKK21vc3RseWNsZWFuOiBtb3N0bHljbGVhbi1yZWN1cnNpdmUKKworbW9zdGx5Y2xlYW4tYW06IG1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBcCisJbW9zdGx5Y2xlYW4tbGlidG9vbAorCitwZGY6IHBkZi1yZWN1cnNpdmUKKworcGRmLWFtOgorCitwczogcHMtcmVjdXJzaXZlCisKK3BzLWFtOgorCit1bmluc3RhbGwtYW06IHVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUworCisuTUFLRTogJChhbV9fcmVjdXJzaXZlX3RhcmdldHMpIGluc3RhbGwtYW0gaW5zdGFsbC1zdHJpcAorCisuUEhPTlk6ICQoYW1fX3JlY3Vyc2l2ZV90YXJnZXRzKSBDVEFHUyBHVEFHUyBUQUdTIGFsbCBhbGwtYW0gY2hlY2sgXAorCWNoZWNrLWFtIGNsZWFuIGNsZWFuLWdlbmVyaWMgY2xlYW4tbGlidG9vbCBcCisJY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVMgY3Njb3BlbGlzdC1hbSBjdGFncyBjdGFncy1hbSBkaXN0Y2xlYW4gXAorCWRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIGRpc3RjbGVhbi1saWJ0b29sIFwKKwlkaXN0Y2xlYW4tdGFncyBkaXN0ZGlyIGR2aSBkdmktYW0gaHRtbCBodG1sLWFtIGluZm8gaW5mby1hbSBcCisJaW5zdGFsbCBpbnN0YWxsLWFtIGluc3RhbGwtZGF0YSBpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgXAorCWluc3RhbGwtZHZpLWFtIGluc3RhbGwtZXhlYyBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIFwKKwlpbnN0YWxsLWh0bWwtYW0gaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBcCisJaW5zdGFsbC1wZGYgaW5zdGFsbC1wZGYtYW0gaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUyBcCisJaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIGluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIFwKKwlpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgaW5zdGFsbGRpcnMtYW0gbWFpbnRhaW5lci1jbGVhbiBcCisJbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIG1vc3RseWNsZWFuLWNvbXBpbGUgXAorCW1vc3RseWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4tbGlidG9vbCBwZGYgcGRmLWFtIHBzIHBzLWFtIFwKKwl0YWdzIHRhZ3MtYW0gdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSBcCisJdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCisKKy5QUkVDSU9VUzogTWFrZWZpbGUKKworCisjIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2UgdG8gbm90IGV4cG9ydCBhbGwgdmFyaWFibGVzLgorIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCisuTk9FWFBPUlQ6CmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL2dzdHZ1bGthbi5jIGIvZXh0L3Z1bGthbi9nc3R2dWxrYW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTU4ODk1Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi9nc3R2dWxrYW4uYwpAQCAtMCwwICsxLDY4IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKy8qKgorICogU0VDVElPTjpwbHVnaW4tdnVsa2FuCisgKgorICogQ3Jvc3MtcGxhdGZvcm0gVnVsa2FuIHBsdWdpbi4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJ2a3NpbmsuaCIKKyNpbmNsdWRlICJ2a3VwbG9hZC5oIgorCisjaWYgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19YMTEKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2VuZGlmCisKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9nbF9nc3RnbF9kZWJ1ZworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9ERUZBVUxUKTsKKworc3RhdGljIGdib29sZWFuCitwbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQoreworICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X2dsX2dzdGdsX2RlYnVnLCAiZ3N0dnVsa2FuIiwgMCwgImdzdHZ1bGthbiIpOworCisjaWYgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19YMTEKKyAgaWYgKGdfZ2V0ZW52ICgiR1NUX1ZVTEtBTl9YSU5JVFRIUkVBRFMiKSkKKyAgICBYSW5pdFRocmVhZHMgKCk7CisjZW5kaWYKKworICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJ2dWxrYW5zaW5rIiwKKyAgICAgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9WVUxLQU5fU0lOSykpIHsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJ2dWxrYW51cGxvYWQiLAorICAgICAgICAgIEdTVF9SQU5LX05PTkUsIEdTVF9UWVBFX1ZVTEtBTl9VUExPQUQpKSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK0dTVF9QTFVHSU5fREVGSU5FIChHU1RfVkVSU0lPTl9NQUpPUiwKKyAgICBHU1RfVkVSU0lPTl9NSU5PUiwKKyAgICB2dWxrYW4sCisgICAgIlZ1bGthbiBwbHVnaW4iLAorICAgIHBsdWdpbl9pbml0LCBWRVJTSU9OLCBHU1RfTElDRU5TRSwgR1NUX1BBQ0tBR0VfTkFNRSwgR1NUX1BBQ0tBR0VfT1JJR0lOKQpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92ay5oIGIvZXh0L3Z1bGthbi92ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyMjVlZDMKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZrLmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9WS19IXworI2RlZmluZSBfVktfSF8KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworI2luY2x1ZGUgInZrYXBpLmgiCisKKyNpbmNsdWRlICJ2a2Vycm9yLmgiCisjaW5jbHVkZSAidmtpbnN0YW5jZS5oIgorI2luY2x1ZGUgInZrZGV2aWNlLmgiCisjaW5jbHVkZSAidmtxdWV1ZS5oIgorI2luY2x1ZGUgInZrZGlzcGxheS5oIgorI2luY2x1ZGUgInZrd2luZG93LmgiCisjaW5jbHVkZSAidmtzd2FwcGVyLmgiCisjaW5jbHVkZSAidmttZW1vcnkuaCIKKyNpbmNsdWRlICJ2a2J1ZmZlcm1lbW9yeS5oIgorI2luY2x1ZGUgInZraW1hZ2VtZW1vcnkuaCIKKyNpbmNsdWRlICJ2a2J1ZmZlcnBvb2wuaCIKKyNpbmNsdWRlICJ2a3V0aWxzLmgiCisKKyNlbmRpZiAvKiBfVktfSF8gKi8KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtfZndkLmggYi9leHQvdnVsa2FuL3ZrX2Z3ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNmYwMjQKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZrX2Z3ZC5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfVktfRldEX0hfCisjZGVmaW5lIF9WS19GV0RfSF8KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuSW5zdGFuY2UgR3N0VnVsa2FuSW5zdGFuY2U7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuSW5zdGFuY2VDbGFzcyBHc3RWdWxrYW5JbnN0YW5jZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkluc3RhbmNlUHJpdmF0ZSBHc3RWdWxrYW5JbnN0YW5jZVByaXZhdGU7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5EZXZpY2UgR3N0VnVsa2FuRGV2aWNlOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkRldmljZUNsYXNzIEdzdFZ1bGthbkRldmljZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkRldmljZVByaXZhdGUgR3N0VnVsa2FuRGV2aWNlUHJpdmF0ZTsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthblF1ZXVlIEdzdFZ1bGthblF1ZXVlOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthblF1ZXVlQ2xhc3MgR3N0VnVsa2FuUXVldWVDbGFzczsKKwordHlwZWRlZiBlbnVtIF9Hc3RWdWxrYW5EaXNwbGF5VHlwZSBHc3RWdWxrYW5EaXNwbGF5VHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkRpc3BsYXkgR3N0VnVsa2FuRGlzcGxheTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5EaXNwbGF5Q2xhc3MgR3N0VnVsa2FuRGlzcGxheUNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkRpc3BsYXlQcml2YXRlIEdzdFZ1bGthbkRpc3BsYXlQcml2YXRlOworCit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuV2luZG93IEdzdFZ1bGthbldpbmRvdzsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5XaW5kb3dDbGFzcyBHc3RWdWxrYW5XaW5kb3dDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5XaW5kb3dQcml2YXRlIEdzdFZ1bGthbldpbmRvd1ByaXZhdGU7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5Td2FwcGVyIEdzdFZ1bGthblN3YXBwZXI7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuU3dhcHBlckNsYXNzIEdzdFZ1bGthblN3YXBwZXJDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5Td2FwcGVyUHJpdmF0ZSBHc3RWdWxrYW5Td2FwcGVyUHJpdmF0ZTsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbk1lbW9yeSBHc3RWdWxrYW5NZW1vcnk7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yIEdzdFZ1bGthbk1lbW9yeUFsbG9jYXRvcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5NZW1vcnlBbGxvY2F0b3JDbGFzcyBHc3RWdWxrYW5NZW1vcnlBbGxvY2F0b3JDbGFzczsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkJ1ZmZlck1lbW9yeSBHc3RWdWxrYW5CdWZmZXJNZW1vcnk7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuQnVmZmVyTWVtb3J5QWxsb2NhdG9yIEdzdFZ1bGthbkJ1ZmZlck1lbW9yeUFsbG9jYXRvcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5CdWZmZXJNZW1vcnlBbGxvY2F0b3JDbGFzcyBHc3RWdWxrYW5CdWZmZXJNZW1vcnlBbGxvY2F0b3JDbGFzczsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkltYWdlTWVtb3J5IEdzdFZ1bGthbkltYWdlTWVtb3J5OwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkltYWdlTWVtb3J5QWxsb2NhdG9yIEdzdFZ1bGthbkltYWdlTWVtb3J5QWxsb2NhdG9yOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkltYWdlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgR3N0VnVsa2FuSW1hZ2VNZW1vcnlBbGxvY2F0b3JDbGFzczsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkJ1ZmZlclBvb2wgR3N0VnVsa2FuQnVmZmVyUG9vbDsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5CdWZmZXJQb29sQ2xhc3MgR3N0VnVsa2FuQnVmZmVyUG9vbENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkJ1ZmZlclBvb2xQcml2YXRlIEdzdFZ1bGthbkJ1ZmZlclBvb2xQcml2YXRlOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX1ZLX0ZXRF9IXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2J1ZmZlcm1lbW9yeS5jIGIvZXh0L3Z1bGthbi92a2J1ZmZlcm1lbW9yeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NGQxNTkKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmMKQEAgLTAsMCArMSw0MzIgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAidmtidWZmZXJtZW1vcnkuaCIKKworLyoqCisgKiBTRUNUSU9OOnZrYnVmZmVybWVtb3J5CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IG1lbW9yeSBzdWJjbGFzcyBmb3IgVnVsa2FuIGJ1ZmZlciBtZW1vcnkKKyAqIEBzZWVfYWxzbzogI0dzdE1lbW9yeSwgI0dzdEFsbG9jYXRvcgorICoKKyAqIEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSBpcyBhICNHc3RNZW1vcnkgc3ViY2xhc3MgcHJvdmlkaW5nIHN1cHBvcnQgZm9yIHRoZQorICogbWFwcGluZyBvZiBWdWxrYW4gZGV2aWNlIG1lbW9yeS4KKyAqLworCisjZGVmaW5lIEdTVF9DQVRfREVGVUFMVCBHU1RfQ0FUX1ZVTEtBTl9CVUZGRVJfTUVNT1JZCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0RFRlVBTFQpOworCitzdGF0aWMgR3N0QWxsb2NhdG9yICpfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfYWxsb2NhdG9yOworCisjZGVmaW5lIEdTVF9WS19CVUZGRVJfQ1JFQVRFX0lORk9fSU5JVCBHU1RfVktfU1RSVUNUXzgKKyNkZWZpbmUgR1NUX1ZLX0JVRkZFUl9DUkVBVEVfSU5GTyhpbmZvLCBwTmV4dCwgZmxhZ3MsIHNpemUsIHVzYWdlLCBzaGFyaW5nTW9kZSwgcXVldWVGYW1pbHlJbmRleENvdW50LCBwUXVldWVGYW1pbHlJbmRpY2VzICkgXAorICBHX1NUTVRfU1RBUlQgeyBcCisgICAgVmtCdWZmZXJDcmVhdGVJbmZvIHRtcCA9IEdTVF9WS19CVUZGRVJfQ1JFQVRFX0lORk9fSU5JVCAoVktfU1RSVUNUVVJFX1RZUEVfQlVGRkVSX0NSRUFURV9JTkZPLCBwTmV4dCwgZmxhZ3MsIHNpemUsIHVzYWdlLCBzaGFyaW5nTW9kZSwgcXVldWVGYW1pbHlJbmRleENvdW50LCBwUXVldWVGYW1pbHlJbmRpY2VzKTsgXAorICAgIChpbmZvKSA9IHRtcDsgXAorICB9IEdfU1RNVF9FTkQKKworc3RhdGljIGdib29sZWFuCitfY3JlYXRlX2luZm9fZnJvbV9hcmdzIChWa0J1ZmZlckNyZWF0ZUluZm8gKiBpbmZvLCBnc2l6ZSBzaXplLAorICAgIFZrQnVmZmVyVXNhZ2VGbGFncyB1c2FnZSkKK3sKKyAgLyogRklYTUU6IHZhbGlkYXRlIHRoZXNlICovCisgIEdTVF9WS19CVUZGRVJfQ1JFQVRFX0lORk8gKCppbmZvLCBOVUxMLCAwLCBzaXplLCB1c2FnZSwKKyAgICAgIFZLX1NIQVJJTkdfTU9ERV9FWENMVVNJVkUsIDAsIE5VTEwpOworCisgIHJldHVybiBUUlVFOworfQorCisjZGVmaW5lIEdTVF9WS19CVUZGRVJfVklFV19DUkVBVEVfSU5GT19JTklUIEdTVF9WS19TVFJVQ1RfNworI2RlZmluZSBHU1RfVktfQlVGRkVSX1ZJRVdfQ1JFQVRFX0lORk8oaW5mbywgcE5leHQsIGZsYWdzLCBidWZmZXIsIGZvcm1hdCwgb2Zmc2V0LCByYW5nZSkgXAorICBHX1NUTVRfU1RBUlQgeyBcCisgICAgVmtCdWZmZXJWaWV3Q3JlYXRlSW5mbyB0bXAgPSBHU1RfVktfQlVGRkVSX1ZJRVdfQ1JFQVRFX0lORk9fSU5JVCAoVktfU1RSVUNUVVJFX1RZUEVfQlVGRkVSX1ZJRVdfQ1JFQVRFX0lORk8sIHBOZXh0LCBmbGFncywgYnVmZmVyLCBmb3JtYXQsIG9mZnNldCwgcmFuZ2UpOyBcCisgICAgKGluZm8pID0gdG1wOyBcCisgIH0gR19TVE1UX0VORAorCitzdGF0aWMgZ2Jvb2xlYW4KK19jcmVhdGVfdmlld19mcm9tX2FyZ3MgKFZrQnVmZmVyVmlld0NyZWF0ZUluZm8gKiBpbmZvLCBWa0J1ZmZlciBidWZmZXIsCisgICAgVmtGb3JtYXQgZm9ybWF0LCBnc2l6ZSBvZmZzZXQsIGdzaXplIHJhbmdlKQoreworICAvKiBGSVhNRTogdmFsaWRhdGUgdGhlc2UgKi8KKyAgZ19hc3NlcnQgKGZvcm1hdCAhPSBWS19GT1JNQVRfVU5ERUZJTkVEKTsKKworICBHU1RfVktfQlVGRkVSX1ZJRVdfQ1JFQVRFX0lORk8gKCppbmZvLCBOVUxMLCAwLCBidWZmZXIsIGZvcm1hdCwgb2Zmc2V0LAorICAgICAgcmFuZ2UpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorX3ZrX2J1ZmZlcl9tZW1faW5pdCAoR3N0VnVsa2FuQnVmZmVyTWVtb3J5ICogbWVtLCBHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsCisgICAgR3N0TWVtb3J5ICogcGFyZW50LCBHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIFZrQnVmZmVyVXNhZ2VGbGFncyB1c2FnZSwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLCBnc2l6ZSBzaXplLCBncG9pbnRlciB1c2VyX2RhdGEsCisgICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQoreworICBnc2l6ZSBhbGlnbiA9IGdzdF9tZW1vcnlfYWxpZ25tZW50LCBvZmZzZXQgPSAwLCBtYXhzaXplID0gc2l6ZTsKKyAgR3N0TWVtb3J5RmxhZ3MgZmxhZ3MgPSAwOworCisgIGlmIChwYXJhbXMpIHsKKyAgICBmbGFncyA9IHBhcmFtcy0+ZmxhZ3M7CisgICAgYWxpZ24gfD0gcGFyYW1zLT5hbGlnbjsKKyAgICBvZmZzZXQgPSBwYXJhbXMtPnByZWZpeDsKKyAgICBtYXhzaXplICs9IHBhcmFtcy0+cHJlZml4ICsgcGFyYW1zLT5wYWRkaW5nICsgYWxpZ247CisgIH0KKworICBnc3RfbWVtb3J5X2luaXQgKEdTVF9NRU1PUllfQ0FTVCAobWVtKSwgZmxhZ3MsIGFsbG9jYXRvciwgcGFyZW50LCBtYXhzaXplLAorICAgICAgYWxpZ24sIG9mZnNldCwgc2l6ZSk7CisKKyAgbWVtLT5kZXZpY2UgPSBnc3Rfb2JqZWN0X3JlZiAoZGV2aWNlKTsKKyAgbWVtLT53cmFwcGVkID0gRkFMU0U7CisgIG1lbS0+bm90aWZ5ID0gbm90aWZ5OworICBtZW0tPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKKworICBnX211dGV4X2luaXQgKCZtZW0tPmxvY2spOworCisgIEdTVF9DQVRfREVCVUcgKEdTVF9DQVRfVlVMS0FOX0JVRkZFUl9NRU1PUlksCisgICAgICAibmV3IFZ1bGthbiBCdWZmZXIgbWVtb3J5OiVwIHNpemU6JSIgR19HU0laRV9GT1JNQVQsIG1lbSwgbWF4c2l6ZSk7Cit9CisKK3N0YXRpYyBHc3RWdWxrYW5CdWZmZXJNZW1vcnkgKgorX3ZrX2J1ZmZlcl9tZW1fbmV3X2FsbG9jIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIEdzdE1lbW9yeSAqIHBhcmVudCwKKyAgICBHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIFZrRm9ybWF0IGZvcm1hdCwgZ3NpemUgc2l6ZSwKKyAgICBWa0J1ZmZlclVzYWdlRmxhZ3MgdXNhZ2UsIFZrTWVtb3J5UHJvcGVydHlGbGFncyBtZW1fcHJvcF9mbGFncywKKyAgICBncG9pbnRlciB1c2VyX2RhdGEsIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgR3N0VnVsa2FuQnVmZmVyTWVtb3J5ICptZW0gPSBOVUxMOworICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtcyA9IHsgMCwgfTsKKyAgVmtCdWZmZXJDcmVhdGVJbmZvIGJ1ZmZlcl9pbmZvOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgZ3VpbnQzMiB0eXBlX2lkeDsKKyAgVmtCdWZmZXIgYnVmZmVyOworICBWa1Jlc3VsdCBlcnI7CisKKyAgaWYgKCFfY3JlYXRlX2luZm9fZnJvbV9hcmdzICgmYnVmZmVyX2luZm8sIHNpemUsIHVzYWdlKSkgeworICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfVlVMS0FOX0JVRkZFUl9NRU1PUlksICJJbmNvcnJlY3QgYnVmZmVyIHBhcmFtZXRlcnMiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgZXJyID0gdmtDcmVhdGVCdWZmZXIgKGRldmljZS0+ZGV2aWNlLCAmYnVmZmVyX2luZm8sIE5VTEwsICZidWZmZXIpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsICZlcnJvciwgInZrQ3JlYXRlQnVmZmVyIikgPCAwKQorICAgIGdvdG8gdmtfZXJyb3I7CisKKyAgbWVtID0gZ19uZXcwIChHc3RWdWxrYW5CdWZmZXJNZW1vcnksIDEpOworICB2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50cyAoZGV2aWNlLT5kZXZpY2UsIGJ1ZmZlciwgJm1lbS0+cmVxdWlyZW1lbnRzKTsKKworICAvKiBYWFg6IGFzc3VtZXMgYWxpZ25tZW50IGlzIGEgcG93ZXIgb2YgMiAqLworICBwYXJhbXMuYWxpZ24gPSBtZW0tPnJlcXVpcmVtZW50cy5hbGlnbm1lbnQgLSAxOworICBfdmtfYnVmZmVyX21lbV9pbml0IChtZW0sIGFsbG9jYXRvciwgcGFyZW50LCBkZXZpY2UsIHVzYWdlLCAmcGFyYW1zLAorICAgICAgbWVtLT5yZXF1aXJlbWVudHMuc2l6ZSwgdXNlcl9kYXRhLCBub3RpZnkpOworICBtZW0tPmJ1ZmZlciA9IGJ1ZmZlcjsKKworICBpZiAoIWdzdF92dWxrYW5fbWVtb3J5X2ZpbmRfbWVtb3J5X3R5cGVfaW5kZXhfd2l0aF90eXBlX3Byb3BlcnRpZXMgKGRldmljZSwKKyAgICAgICAgICBtZW0tPnJlcXVpcmVtZW50cy5tZW1vcnlUeXBlQml0cywgbWVtX3Byb3BfZmxhZ3MsICZ0eXBlX2lkeCkpCisgICAgZ290byBlcnJvcjsKKworICBtZW0tPnZrX21lbSA9IChHc3RWdWxrYW5NZW1vcnkgKikgZ3N0X3Z1bGthbl9tZW1vcnlfYWxsb2MgKGRldmljZSwgdHlwZV9pZHgsCisgICAgICAmcGFyYW1zLCBtZW0tPnJlcXVpcmVtZW50cy5zaXplLCBtZW1fcHJvcF9mbGFncyk7CisgIGlmICghbWVtLT52a19tZW0pCisgICAgZ290byBlcnJvcjsKKworICBlcnIgPSB2a0JpbmRCdWZmZXJNZW1vcnkgKGRldmljZS0+ZGV2aWNlLCBidWZmZXIsIG1lbS0+dmtfbWVtLT5tZW1fcHRyLCAwKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCAmZXJyb3IsICJ2a0JpbmRCdWZmZXJNZW1vcnkiKSA8IDApCisgICAgZ290byB2a19lcnJvcjsKKworICBpZiAodXNhZ2UgJiAoVktfQlVGRkVSX1VTQUdFX1VOSUZPUk1fVEVYRUxfQlVGRkVSX0JJVCB8CisgICAgICAgICAgVktfQlVGRkVSX1VTQUdFX1NUT1JBR0VfVEVYRUxfQlVGRkVSX0JJVCB8CisgICAgICAgICAgVktfQlVGRkVSX1VTQUdFX1VOSUZPUk1fQlVGRkVSX0JJVCB8CisgICAgICAgICAgVktfQlVGRkVSX1VTQUdFX1NUT1JBR0VfQlVGRkVSX0JJVCB8CisgICAgICAgICAgVktfQlVGRkVSX1VTQUdFX0lOREVYX0JVRkZFUl9CSVQgfAorICAgICAgICAgIFZLX0JVRkZFUl9VU0FHRV9WRVJURVhfQlVGRkVSX0JJVCB8CisgICAgICAgICAgVktfQlVGRkVSX1VTQUdFX0lORElSRUNUX0JVRkZFUl9CSVQpKSB7CisgICAgVmtCdWZmZXJWaWV3Q3JlYXRlSW5mbyB2aWV3X2luZm87CisKKyAgICBfY3JlYXRlX3ZpZXdfZnJvbV9hcmdzICgmdmlld19pbmZvLCBtZW0tPmJ1ZmZlciwgZm9ybWF0LCAwLAorICAgICAgICBtZW0tPnJlcXVpcmVtZW50cy5zaXplKTsKKyAgICBlcnIgPSB2a0NyZWF0ZUJ1ZmZlclZpZXcgKGRldmljZS0+ZGV2aWNlLCAmdmlld19pbmZvLCBOVUxMLCAmbWVtLT52aWV3KTsKKyAgICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsICZlcnJvciwgInZrQ3JlYXRlQnVmZmVyVmlldyIpIDwgMCkKKyAgICAgIGdvdG8gdmtfZXJyb3I7CisgIH0KKworICByZXR1cm4gbWVtOworCit2a19lcnJvcjoKKyAgeworICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfVlVMS0FOX0JVRkZFUl9NRU1PUlksCisgICAgICAgICJGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyIG1lbW9yeSAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKworZXJyb3I6CisgIHsKKyAgICBpZiAobWVtKQorICAgICAgZ3N0X21lbW9yeV91bnJlZiAoKEdzdE1lbW9yeSAqKSBtZW0pOworICAgIHJldHVybiBOVUxMOworICB9Cit9CisKK3N0YXRpYyBHc3RWdWxrYW5CdWZmZXJNZW1vcnkgKgorX3ZrX2J1ZmZlcl9tZW1fbmV3X3dyYXBwZWQgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgR3N0TWVtb3J5ICogcGFyZW50LAorICAgIEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgVmtCdWZmZXIgYnVmZmVyLCBWa0Zvcm1hdCBmb3JtYXQsCisgICAgVmtCdWZmZXJVc2FnZUZsYWdzIHVzYWdlLCBncG9pbnRlciB1c2VyX2RhdGEsIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgR3N0VnVsa2FuQnVmZmVyTWVtb3J5ICptZW0gPSBnX25ldzAgKEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSwgMSk7CisgIEdzdEFsbG9jYXRpb25QYXJhbXMgcGFyYW1zID0geyAwLCB9OworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgVmtSZXN1bHQgZXJyOworCisgIG1lbS0+YnVmZmVyID0gYnVmZmVyOworCisgIHZrR2V0QnVmZmVyTWVtb3J5UmVxdWlyZW1lbnRzIChkZXZpY2UtPmRldmljZSwgbWVtLT5idWZmZXIsCisgICAgICAmbWVtLT5yZXF1aXJlbWVudHMpOworCisgIHBhcmFtcy5hbGlnbiA9IG1lbS0+cmVxdWlyZW1lbnRzLmFsaWdubWVudCAtIDE7CisgIHBhcmFtcy5mbGFncyA9IEdTVF9NRU1PUllfRkxBR19OT1RfTUFQUEFCTEU7CisgIF92a19idWZmZXJfbWVtX2luaXQgKG1lbSwgYWxsb2NhdG9yLCBwYXJlbnQsIGRldmljZSwgdXNhZ2UsICZwYXJhbXMsCisgICAgICBtZW0tPnJlcXVpcmVtZW50cy5zaXplLCB1c2VyX2RhdGEsIG5vdGlmeSk7CisgIG1lbS0+d3JhcHBlZCA9IFRSVUU7CisKKyAgLyogWFhYOiB3ZSBkb24ndCBhY3R1YWxseSBpZiB0aGUgYnVmZmVyIGhhcyBhIHZrRGV2aWNlTWVtb3J5IGJvdW5kIHNvCisgICAqIHRoaXMgbWF5IGZhaWwgKi8KKyAgaWYgKHVzYWdlICYgKFZLX0JVRkZFUl9VU0FHRV9VTklGT1JNX1RFWEVMX0JVRkZFUl9CSVQgfAorICAgICAgICAgIFZLX0JVRkZFUl9VU0FHRV9TVE9SQUdFX1RFWEVMX0JVRkZFUl9CSVQgfAorICAgICAgICAgIFZLX0JVRkZFUl9VU0FHRV9VTklGT1JNX0JVRkZFUl9CSVQgfAorICAgICAgICAgIFZLX0JVRkZFUl9VU0FHRV9TVE9SQUdFX0JVRkZFUl9CSVQgfAorICAgICAgICAgIFZLX0JVRkZFUl9VU0FHRV9JTkRFWF9CVUZGRVJfQklUIHwKKyAgICAgICAgICBWS19CVUZGRVJfVVNBR0VfVkVSVEVYX0JVRkZFUl9CSVQgfAorICAgICAgICAgIFZLX0JVRkZFUl9VU0FHRV9JTkRJUkVDVF9CVUZGRVJfQklUKSkgeworICAgIFZrQnVmZmVyVmlld0NyZWF0ZUluZm8gdmlld19pbmZvOworCisgICAgX2NyZWF0ZV92aWV3X2Zyb21fYXJncyAoJnZpZXdfaW5mbywgbWVtLT5idWZmZXIsIGZvcm1hdCwgMCwKKyAgICAgICAgbWVtLT5yZXF1aXJlbWVudHMuc2l6ZSk7CisgICAgZXJyID0gdmtDcmVhdGVCdWZmZXJWaWV3IChkZXZpY2UtPmRldmljZSwgJnZpZXdfaW5mbywgTlVMTCwgJm1lbS0+dmlldyk7CisgICAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCAmZXJyb3IsICJ2a0NyZWF0ZUJ1ZmZlclZpZXciKSA8IDApCisgICAgICBnb3RvIHZrX2Vycm9yOworICB9CisKKyAgcmV0dXJuIG1lbTsKKwordmtfZXJyb3I6CisgIHsKKyAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX1ZVTEtBTl9CVUZGRVJfTUVNT1JZLAorICAgICAgICAiRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlciBtZW1vcnkgJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKK2Vycm9yOgorICB7CisgICAgZ3N0X21lbW9yeV91bnJlZiAoKEdzdE1lbW9yeSAqKSBtZW0pOworICAgIHJldHVybiBOVUxMOworICB9Cit9CisKK3N0YXRpYyBncG9pbnRlcgorX3ZrX2J1ZmZlcl9tZW1fbWFwX2Z1bGwgKEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8sCisgICAgZ3NpemUgc2l6ZSkKK3sKKyAgR3N0TWFwSW5mbyAqdmtfbWFwX2luZm87CisKKyAgLyogRklYTUU6IHBvc3NpYmxlIGJhcnJpZXIgbmVlZGVkICovCisgIGdfbXV0ZXhfbG9jayAoJm1lbS0+bG9jayk7CisKKyAgaWYgKCFtZW0tPnZrX21lbSkgeworICAgIGdfbXV0ZXhfdW5sb2NrICgmbWVtLT5sb2NrKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHZrX21hcF9pbmZvID0gZ19uZXcwIChHc3RNYXBJbmZvLCAxKTsKKyAgaW5mby0+dXNlcl9kYXRhWzBdID0gdmtfbWFwX2luZm87CisgIGlmICghZ3N0X21lbW9yeV9tYXAgKChHc3RNZW1vcnkgKikgbWVtLT52a19tZW0sIHZrX21hcF9pbmZvLCBpbmZvLT5mbGFncykpIHsKKyAgICBnX2ZyZWUgKHZrX21hcF9pbmZvKTsKKyAgICBnX211dGV4X3VubG9jayAoJm1lbS0+bG9jayk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKyAgZ19tdXRleF91bmxvY2sgKCZtZW0tPmxvY2spOworCisgIHJldHVybiB2a19tYXBfaW5mby0+ZGF0YTsKK30KKworc3RhdGljIHZvaWQKK192a19idWZmZXJfbWVtX3VubWFwX2Z1bGwgKEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8pCit7CisgIGdfbXV0ZXhfbG9jayAoJm1lbS0+bG9jayk7CisgIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgbWVtLT52a19tZW0sIGluZm8tPnVzZXJfZGF0YVswXSk7CisgIGdfbXV0ZXhfdW5sb2NrICgmbWVtLT5sb2NrKTsKKworICBnX2ZyZWUgKGluZm8tPnVzZXJfZGF0YVswXSk7Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX3ZrX2J1ZmZlcl9tZW1fY29weSAoR3N0VnVsa2FuQnVmZmVyTWVtb3J5ICogc3JjLCBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSkKK3sKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX3ZrX2J1ZmZlcl9tZW1fc2hhcmUgKEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSAqIG1lbSwgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCit7CisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK192a19idWZmZXJfbWVtX2lzX3NwYW4gKEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSAqIG1lbTEsCisgICAgR3N0VnVsa2FuQnVmZmVyTWVtb3J5ICogbWVtMiwgZ3NpemUgKiBvZmZzZXQpCit7CisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitfdmtfYnVmZmVyX21lbV9hbGxvYyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBnc2l6ZSBzaXplLAorICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpCit7CisgIGdfY3JpdGljYWwgKCJTdWJjbGFzcyBzaG91bGQgb3ZlcnJpZGUgR3N0QWxsb2NhdG9yQ2xhc3M6OmFsbG9jKCkgZnVuY3Rpb24iKTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK192a19idWZmZXJfbWVtX2ZyZWUgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgR3N0TWVtb3J5ICogbWVtb3J5KQoreworICBHc3RWdWxrYW5CdWZmZXJNZW1vcnkgKm1lbSA9IChHc3RWdWxrYW5CdWZmZXJNZW1vcnkgKikgbWVtb3J5OworCisgIEdTVF9DQVRfVFJBQ0UgKEdTVF9DQVRfVlVMS0FOX0JVRkZFUl9NRU1PUlksICJmcmVlaW5nIGJ1ZmZlciBtZW1vcnk6JXAgIgorICAgICAgImlkOiUiIEdfR1VJTlQ2NF9GT1JNQVQsIG1lbSwgKGd1aW50NjQpIG1lbS0+YnVmZmVyKTsKKworICBpZiAobWVtLT5idWZmZXIgJiYgIW1lbS0+d3JhcHBlZCkKKyAgICB2a0Rlc3Ryb3lCdWZmZXIgKG1lbS0+ZGV2aWNlLT5kZXZpY2UsIG1lbS0+YnVmZmVyLCBOVUxMKTsKKworICBpZiAobWVtLT52aWV3KQorICAgIHZrRGVzdHJveUJ1ZmZlclZpZXcgKG1lbS0+ZGV2aWNlLT5kZXZpY2UsIG1lbS0+dmlldywgTlVMTCk7CisKKyAgaWYgKG1lbS0+dmtfbWVtKQorICAgIGdzdF9tZW1vcnlfdW5yZWYgKChHc3RNZW1vcnkgKikgbWVtLT52a19tZW0pOworCisgIGlmIChtZW0tPm5vdGlmeSkKKyAgICBtZW0tPm5vdGlmeSAobWVtLT51c2VyX2RhdGEpOworCisgIGdzdF9vYmplY3RfdW5yZWYgKG1lbS0+ZGV2aWNlKTsKK30KKworLyoqCisgKiBnc3RfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfYWxsb2M6CisgKiBAZGV2aWNlOmEgI0dzdFZ1bGthbkRldmljZQorICogQG1lbW9yeV90eXBlX2luZGV4OiB0aGUgVnVsa2FuIG1lbW9yeSB0eXBlIGluZGV4CisgKiBAcGFyYW1zOiBhICNHc3RBbGxvY2F0aW9uUGFyYW1zCisgKiBAc2l6ZTogdGhlIHNpemUgdG8gYWxsb2NhdGUKKyAqCisgKiBBbGxvY2F0ZWQgYSBuZXcgI0dzdFZ1bGthbkJ1ZmZlck1lbW9yeS4KKyAqCisgKiBSZXR1cm5zOiBhICNHc3RNZW1vcnkgb2JqZWN0IGJhY2tlZCBieSBhIHZ1bGthbiBkZXZpY2UgbWVtb3J5CisgKi8KK0dzdE1lbW9yeSAqCitnc3RfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfYWxsb2MgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgVmtGb3JtYXQgZm9ybWF0LAorICAgIGdzaXplIHNpemUsIFZrQnVmZmVyVXNhZ2VGbGFncyB1c2FnZSwgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIG1lbV9wcm9wX2ZsYWdzKQoreworICBHc3RWdWxrYW5CdWZmZXJNZW1vcnkgKm1lbTsKKworICBtZW0gPSBfdmtfYnVmZmVyX21lbV9uZXdfYWxsb2MgKF92dWxrYW5fYnVmZmVyX21lbW9yeV9hbGxvY2F0b3IsIE5VTEwsIGRldmljZSwKKyAgICAgIGZvcm1hdCwgc2l6ZSwgdXNhZ2UsIG1lbV9wcm9wX2ZsYWdzLCBOVUxMLCBOVUxMKTsKKworICByZXR1cm4gKEdzdE1lbW9yeSAqKSBtZW07Cit9CisKK0dzdE1lbW9yeSAqCitnc3RfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfd3JhcHBlZCAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBWa0J1ZmZlciBidWZmZXIsCisgICAgVmtGb3JtYXQgZm9ybWF0LCBWa0J1ZmZlclVzYWdlRmxhZ3MgdXNhZ2UsIGdwb2ludGVyIHVzZXJfZGF0YSwKKyAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSAqbWVtOworCisgIG1lbSA9CisgICAgICBfdmtfYnVmZmVyX21lbV9uZXdfd3JhcHBlZCAoX3Z1bGthbl9idWZmZXJfbWVtb3J5X2FsbG9jYXRvciwgTlVMTCwgZGV2aWNlLAorICAgICAgYnVmZmVyLCBmb3JtYXQsIHVzYWdlLCB1c2VyX2RhdGEsIG5vdGlmeSk7CisKKyAgcmV0dXJuIChHc3RNZW1vcnkgKikgbWVtOworfQorCitHX0RFRklORV9UWVBFIChHc3RWdWxrYW5CdWZmZXJNZW1vcnlBbGxvY2F0b3IsCisgICAgZ3N0X3Z1bGthbl9idWZmZXJfbWVtb3J5X2FsbG9jYXRvciwgR1NUX1RZUEVfQUxMT0NBVE9SKTsKKworc3RhdGljIHZvaWQKKyAgICBnc3RfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfYWxsb2NhdG9yX2NsYXNzX2luaXQKKyAgICAoR3N0VnVsa2FuQnVmZmVyTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKiBrbGFzcykKK3sKKyAgR3N0QWxsb2NhdG9yQ2xhc3MgKmFsbG9jYXRvcl9jbGFzcyA9IChHc3RBbGxvY2F0b3JDbGFzcyAqKSBrbGFzczsKKworICBhbGxvY2F0b3JfY2xhc3MtPmFsbG9jID0gX3ZrX2J1ZmZlcl9tZW1fYWxsb2M7CisgIGFsbG9jYXRvcl9jbGFzcy0+ZnJlZSA9IF92a19idWZmZXJfbWVtX2ZyZWU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfYWxsb2NhdG9yX2luaXQgKEdzdFZ1bGthbkJ1ZmZlck1lbW9yeUFsbG9jYXRvciAqCisgICAgYWxsb2NhdG9yKQoreworICBHc3RBbGxvY2F0b3IgKmFsbG9jID0gR1NUX0FMTE9DQVRPUl9DQVNUIChhbGxvY2F0b3IpOworCisgIGFsbG9jLT5tZW1fdHlwZSA9IEdTVF9WVUxLQU5fQlVGRkVSX01FTU9SWV9BTExPQ0FUT1JfTkFNRTsKKyAgYWxsb2MtPm1lbV9tYXBfZnVsbCA9IChHc3RNZW1vcnlNYXBGdWxsRnVuY3Rpb24pIF92a19idWZmZXJfbWVtX21hcF9mdWxsOworICBhbGxvYy0+bWVtX3VubWFwX2Z1bGwgPQorICAgICAgKEdzdE1lbW9yeVVubWFwRnVsbEZ1bmN0aW9uKSBfdmtfYnVmZmVyX21lbV91bm1hcF9mdWxsOworICBhbGxvYy0+bWVtX2NvcHkgPSAoR3N0TWVtb3J5Q29weUZ1bmN0aW9uKSBfdmtfYnVmZmVyX21lbV9jb3B5OworICBhbGxvYy0+bWVtX3NoYXJlID0gKEdzdE1lbW9yeVNoYXJlRnVuY3Rpb24pIF92a19idWZmZXJfbWVtX3NoYXJlOworICBhbGxvYy0+bWVtX2lzX3NwYW4gPSAoR3N0TWVtb3J5SXNTcGFuRnVuY3Rpb24pIF92a19idWZmZXJfbWVtX2lzX3NwYW47Cit9CisKKy8qKgorICogZ3N0X3Z1bGthbl9idWZmZXJfbWVtb3J5X2luaXRfb25jZToKKyAqCisgKiBJbml0aWFsaXplcyB0aGUgVnVsa2FuIG1lbW9yeSBhbGxvY2F0b3IuIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uCisgKiBtdWx0aXBsZSB0aW1lcy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciAjR3N0VnVsa2FuQnVmZmVyTWVtb3J5IG9wZXJhdGlvbi4KKyAqLwordm9pZAorZ3N0X3Z1bGthbl9idWZmZXJfbWVtb3J5X2luaXRfb25jZSAodm9pZCkKK3sKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9WVUxLQU5fQlVGRkVSX01FTU9SWSwgInZ1bGthbmJ1ZmZlcm1lbW9yeSIsCisgICAgICAgIDAsICJWdWxrYW4gQnVmZmVyIE1lbW9yeSIpOworCisgICAgX3Z1bGthbl9idWZmZXJfbWVtb3J5X2FsbG9jYXRvciA9CisgICAgICAgIGdfb2JqZWN0X25ldyAoZ3N0X3Z1bGthbl9idWZmZXJfbWVtb3J5X2FsbG9jYXRvcl9nZXRfdHlwZSAoKSwgTlVMTCk7CisKKyAgICBnc3RfYWxsb2NhdG9yX3JlZ2lzdGVyIChHU1RfVlVMS0FOX0JVRkZFUl9NRU1PUllfQUxMT0NBVE9SX05BTUUsCisgICAgICAgIGdzdF9vYmplY3RfcmVmIChfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfYWxsb2NhdG9yKSk7CisgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZfaW5pdCwgMSk7CisgIH0KK30KKworLyoqCisgKiBnc3RfaXNfdnVsa2FuX2J1ZmZlcl9tZW1vcnk6CisgKiBAbWVtOmEgI0dzdE1lbW9yeQorICogCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBtZW1vcnkgYXQgQG1lbSBpcyBhICNHc3RWdWxrYW5CdWZmZXJNZW1vcnkKKyAqLworZ2Jvb2xlYW4KK2dzdF9pc192dWxrYW5fYnVmZmVyX21lbW9yeSAoR3N0TWVtb3J5ICogbWVtKQoreworICByZXR1cm4gbWVtICE9IE5VTEwgJiYgbWVtLT5hbGxvY2F0b3IgIT0gTlVMTCAmJgorICAgICAgZ190eXBlX2lzX2EgKEdfT0JKRUNUX1RZUEUgKG1lbS0+YWxsb2NhdG9yKSwKKyAgICAgIEdTVF9UWVBFX1ZVTEtBTl9CVUZGRVJfTUVNT1JZX0FMTE9DQVRPUik7Cit9CmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmggYi9leHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I1ODI4MgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtidWZmZXJtZW1vcnkuaApAQCAtMCwwICsxLDEwMiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9WS19CVUZGRVJfTUVNT1JZX0hfCisjZGVmaW5lIF9WS19CVUZGRVJfTUVNT1JZX0hfCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2dzdGFsbG9jYXRvci5oPgorI2luY2x1ZGUgPGdzdC9nc3RtZW1vcnkuaD4KKworI2luY2x1ZGUgPHZrLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9WVUxLQU5fQlVGRkVSX01FTU9SWV9BTExPQ0FUT1IgKGdzdF92dWxrYW5fYnVmZmVyX21lbW9yeV9hbGxvY2F0b3JfZ2V0X3R5cGUoKSkKK0dUeXBlIGdzdF92dWxrYW5fYnVmZmVyX21lbW9yeV9hbGxvY2F0b3JfZ2V0X3R5cGUodm9pZCk7CisKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9CVUZGRVJfTUVNT1JZX0FMTE9DQVRPUihvYmopICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9WVUxLQU5fQlVGRkVSX01FTU9SWV9BTExPQ0FUT1IpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX0JVRkZFUl9NRU1PUllfQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfVlVMS0FOX0JVRkZFUl9NRU1PUllfQUxMT0NBVE9SKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9CVUZGRVJfTUVNT1JZX0FMTE9DQVRPUl9HRVRfQ0xBU1Mob2JqKSAgICAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEdTVF9UWVBFX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SLCBHc3RWdWxrYW5CdWZmZXJNZW1vcnlBbGxvY2F0b3JDbGFzcykpCisjZGVmaW5lIEdTVF9WVUxLQU5fQlVGRkVSX01FTU9SWV9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfVlVMS0FOX01FTU9SWV9BTExPQ0FUT1IsIEdzdFZ1bGthbkJ1ZmZlck1lbW9yeUFsbG9jYXRvcikpCisjZGVmaW5lIEdTVF9WVUxLQU5fQlVGRkVSX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUiwgR3N0VnVsa2FuQnVmZmVyTWVtb3J5QWxsb2NhdG9yQ2xhc3MpKQorI2RlZmluZSBHU1RfVlVMS0FOX0JVRkZFUl9NRU1PUllfQUxMT0NBVE9SX0NBU1Qob2JqKSAgICAgICAgICAgICgoR3N0VnVsa2FuQnVmZmVyTWVtb3J5QWxsb2NhdG9yICopKG9iaikpCisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9CVUZGRVJfTUVNT1JZX0FMTE9DQVRPUl9OQU1FICJWdWxrYW5CdWZmZXIiCisjZGVmaW5lIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1ZVTEtBTl9CVUZGRVIgIm1lbW9yeToiIEdTVF9WVUxLQU5fQlVGRkVSX01FTU9SWV9BTExPQ0FUT1JfTkFNRQorCitzdHJ1Y3QgX0dzdFZ1bGthbkJ1ZmZlck1lbW9yeQoreworICBHc3RNZW1vcnkgcGFyZW50OworCisgIEdzdFZ1bGthbkRldmljZSAqIGRldmljZTsKKworICBWa0J1ZmZlciBidWZmZXI7CisgIFZrQnVmZmVyVmlldyB2aWV3OworICBHc3RWdWxrYW5NZW1vcnkgKnZrX21lbTsKKworICBWa01lbW9yeVJlcXVpcmVtZW50cyByZXF1aXJlbWVudHM7CisgIFZrQnVmZmVyVXNhZ2VGbGFncyB1c2FnZTsKKworICBHTXV0ZXggbG9jazsKKyAgZ2Jvb2xlYW4gd3JhcHBlZDsKKyAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5OworICBncG9pbnRlciB1c2VyX2RhdGE7Cit9OworCisvKioKKyAqIEdzdFZ1bGthbkJ1ZmZlck1lbW9yeUFsbG9jYXRvcgorICoKKyAqIE9wYXF1ZSAjR3N0VnVsa2FuQnVmZmVyTWVtb3J5QWxsb2NhdG9yIHN0cnVjdAorICovCitzdHJ1Y3QgX0dzdFZ1bGthbkJ1ZmZlck1lbW9yeUFsbG9jYXRvcgoreworICBHc3RBbGxvY2F0b3IgcGFyZW50OworfTsKKworLyoqCisgKiBHc3RWdWxrYW5CdWZmZXJNZW1vcnlBbGxvY2F0b3JDbGFzczoKKyAqCisgKiBUaGUgI0dzdFZ1bGthbkJ1ZmZlck1lbW9yeUFsbG9jYXRvckNsYXNzIG9ubHkgY29udGFpbnMgcHJpdmF0ZSBkYXRhCisgKi8KK3N0cnVjdCBfR3N0VnVsa2FuQnVmZmVyTWVtb3J5QWxsb2NhdG9yQ2xhc3MKK3sKKyAgR3N0QWxsb2NhdG9yQ2xhc3MgcGFyZW50X2NsYXNzOworfTsKKwordm9pZCAgICAgICAgICAgIGdzdF92dWxrYW5fYnVmZmVyX21lbW9yeV9pbml0X29uY2UgICAgICAgKHZvaWQpOworZ2Jvb2xlYW4gICAgICAgIGdzdF9pc192dWxrYW5fYnVmZmVyX21lbW9yeSAgICAgICAgICAgICAgKEdzdE1lbW9yeSAqIG1lbSk7CisKK0dzdE1lbW9yeSAqICAgICBnc3RfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfYWxsb2MgICAgICAgICAgIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Zvcm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtCdWZmZXJVc2FnZUZsYWdzIHVzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIG1lbV9wcm9wX2ZsYWdzKTsKKworR3N0TWVtb3J5ICogICAgIGdzdF92dWxrYW5fYnVmZmVyX21lbW9yeV93cmFwcGVkICAgICAgICAgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrQnVmZmVyIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRm9ybWF0IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrQnVmZmVyVXNhZ2VGbGFncyB1c2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfVktfQlVGRkVSX01FTU9SWV9IXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2J1ZmZlcnBvb2wuYyBiL2V4dC92dWxrYW4vdmtidWZmZXJwb29sLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFmYjJmYgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtidWZmZXJwb29sLmMKQEAgLTAsMCArMSwyNTYgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAidmtidWZmZXJwb29sLmgiCisKKy8qKgorICogU0VDVElPTjp2a2J1ZmZlcnBvb2wKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogYnVmZmVyIHBvb2wgZm9yICNHc3RWdWxrYW5CdWZmZXJNZW1vcnkgb2JqZWN0cworICogQHNlZV9hbHNvOiAjR3N0QnVmZmVyUG9vbCwgI0dzdFZ1bGthbkJ1ZmZlck1lbW9yeQorICoKKyAqIGEgI0dzdFZ1bGthbkJ1ZmZlclBvb2wgaXMgYW4gb2JqZWN0IHRoYXQgYWxsb2NhdGVzIGJ1ZmZlcnMgd2l0aCAjR3N0VnVsa2FuQnVmZmVyTWVtb3J5CisgKgorICogQSAjR3N0VnVsa2FuQnVmZmVyUG9vbCBpcyBjcmVhdGVkIHdpdGggZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9uZXcoKQorICoKKyAqICNHc3RWdWxrYW5CdWZmZXJQb29sIGltcGxlbWVudHMgdGhlIFZpZGVvTWV0YSBidWZmZXIgcG9vbCBvcHRpb24gCisgKiAjR1NUX0JVRkZFUl9QT09MX09QVElPTl9WSURFT19NRVRBCisgKi8KKworLyogYnVmZmVycG9vbCAqLworc3RydWN0IF9Hc3RWdWxrYW5CdWZmZXJQb29sUHJpdmF0ZQoreworICBHc3RDYXBzICpjYXBzOworICBHc3RWaWRlb0luZm8gdl9pbmZvOworICBnYm9vbGVhbiBhZGRfdmlkZW9tZXRhOworICBnc2l6ZSBhbGxvY19zaXplc1tHU1RfVklERU9fTUFYX1BMQU5FU107Cit9OworCitzdGF0aWMgdm9pZCBnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9WVUxLQU5fQlVGRkVSX1BPT0wpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgR1NUX0NBVF9WVUxLQU5fQlVGRkVSX1BPT0wKKworI2RlZmluZSBHU1RfVlVMS0FOX0JVRkZFUl9QT09MX0dFVF9QUklWQVRFKG9iaikgIFwKKyAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUgKChvYmopLCBHU1RfVFlQRV9WVUxLQU5fQlVGRkVSX1BPT0wsIEdzdFZ1bGthbkJ1ZmZlclBvb2xQcml2YXRlKSkKKworI2RlZmluZSBnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RWdWxrYW5CdWZmZXJQb29sLCBnc3RfdnVsa2FuX2J1ZmZlcl9wb29sLAorICAgIEdTVF9UWVBFX0JVRkZFUl9QT09MLCBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9WVUxLQU5fQlVGRkVSX1BPT0wsCisgICAgICAgICJ2dWxrYW5idWZmZXJwb29sIiwgMCwgIlZ1bGthbiBCdWZmZXIgUG9vbCIpKTsKKworc3RhdGljIGNvbnN0IGdjaGFyICoqCitnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX2dldF9vcHRpb25zIChHc3RCdWZmZXJQb29sICogcG9vbCkKK3sKKyAgc3RhdGljIGNvbnN0IGdjaGFyICpvcHRpb25zW10gPSB7IEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fVklERU9fTUVUQSwKKyAgICBOVUxMCisgIH07CisKKyAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9zZXRfY29uZmlnIChHc3RCdWZmZXJQb29sICogcG9vbCwgR3N0U3RydWN0dXJlICogY29uZmlnKQoreworICBHc3RWdWxrYW5CdWZmZXJQb29sICp2a19wb29sID0gR1NUX1ZVTEtBTl9CVUZGRVJfUE9PTF9DQVNUIChwb29sKTsKKyAgR3N0VnVsa2FuQnVmZmVyUG9vbFByaXZhdGUgKnByaXYgPSB2a19wb29sLT5wcml2OworICBndWludCBtaW5fYnVmZmVycywgbWF4X2J1ZmZlcnM7CisgIEdzdENhcHMgKmNhcHMgPSBOVUxMOworICBnYm9vbGVhbiByZXQgPSBUUlVFOworICBndWludCBpOworCisgIGlmICghZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfcGFyYW1zIChjb25maWcsICZjYXBzLCBOVUxMLCAmbWluX2J1ZmZlcnMsCisgICAgICAgICAgJm1heF9idWZmZXJzKSkKKyAgICBnb3RvIHdyb25nX2NvbmZpZzsKKworICBpZiAoY2FwcyA9PSBOVUxMKQorICAgIGdvdG8gbm9fY2FwczsKKworICAvKiBub3cgcGFyc2UgdGhlIGNhcHMgZnJvbSB0aGUgY29uZmlnICovCisgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmcHJpdi0+dl9pbmZvLCBjYXBzKSkKKyAgICBnb3RvIHdyb25nX2NhcHM7CisKKyAgR1NUX0xPR19PQkpFQ1QgKHBvb2wsICIlZHglZCwgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgcHJpdi0+dl9pbmZvLndpZHRoLAorICAgICAgcHJpdi0+dl9pbmZvLmhlaWdodCwgY2Fwcyk7CisKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJnByaXYtPmNhcHMsIGNhcHMpOworCisgIC8qIGdldCB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHRvIGFsbG9jYXRlICovCisgIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJnByaXYtPnZfaW5mbyk7IGkrKykgeworICAgIEdzdFZpZGVvRm9ybWF0IHZfZm9ybWF0ID0gR1NUX1ZJREVPX0lORk9fRk9STUFUICgmcHJpdi0+dl9pbmZvKTsKKyAgICBHc3RWdWxrYW5JbWFnZU1lbW9yeSAqaW1nX21lbTsKKyAgICBndWludCB3aWR0aCwgaGVpZ2h0OworICAgIFZrRm9ybWF0IHZrX2Zvcm1hdDsKKworICAgIHZrX2Zvcm1hdCA9IGdzdF92dWxrYW5fZm9ybWF0X2Zyb21fdmlkZW9fZm9ybWF0ICh2X2Zvcm1hdCwgaSk7CisgICAgd2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCAoJnByaXYtPnZfaW5mbyk7CisgICAgaGVpZ2h0ID0gR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmcHJpdi0+dl9pbmZvKTsKKworICAgIGltZ19tZW0gPSAoR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKikKKyAgICAgICAgZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfYWxsb2MgKHZrX3Bvb2wtPmRldmljZSwgdmtfZm9ybWF0LCB3aWR0aCwKKyAgICAgICAgaGVpZ2h0LCBWS19JTUFHRV9USUxJTkdfT1BUSU1BTCwKKyAgICAgICAgVktfSU1BR0VfVVNBR0VfVFJBTlNGRVJfRFNUX0JJVCB8IFZLX0lNQUdFX1VTQUdFX0NPTE9SX0FUVEFDSE1FTlRfQklULAorICAgICAgICBWS19NRU1PUllfUFJPUEVSVFlfREVWSUNFX0xPQ0FMX0JJVCk7CisKKyAgICBwcml2LT5hbGxvY19zaXplc1tpXSA9IGltZ19tZW0tPnJlcXVpcmVtZW50cy5zaXplOworCisgICAgZ3N0X21lbW9yeV91bnJlZiAoR1NUX01FTU9SWV9DQVNUIChpbWdfbWVtKSk7CisgIH0KKworICBwcml2LT5hZGRfdmlkZW9tZXRhID0gZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19oYXNfb3B0aW9uIChjb25maWcsCisgICAgICBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX1ZJREVPX01FVEEpOworCisgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X3BhcmFtcyAoY29uZmlnLCBjYXBzLAorICAgICAgcHJpdi0+dl9pbmZvLnNpemUsIG1pbl9idWZmZXJzLCBtYXhfYnVmZmVycyk7CisKKyAgcmV0dXJuIEdTVF9CVUZGRVJfUE9PTF9DTEFTUyAocGFyZW50X2NsYXNzKS0+c2V0X2NvbmZpZyAocG9vbCwgY29uZmlnKSAmJiByZXQ7CisKKyAgLyogRVJST1JTICovCit3cm9uZ19jb25maWc6CisgIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHBvb2wsICJpbnZhbGlkIGNvbmZpZyIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorbm9fY2FwczoKKyAgeworICAgIEdTVF9XQVJOSU5HX09CSkVDVCAocG9vbCwgIm5vIGNhcHMgaW4gY29uZmlnIik7CisgICAgcmV0dXJuIEZBTFNFOworICB9Cit3cm9uZ19jYXBzOgorICB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChwb29sLAorICAgICAgICAiZmFpbGVkIGdldHRpbmcgZ2VvbWV0cnkgZnJvbSBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KK30KKworLyogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIEdzdEJ1ZmZlciBjcmVhdGlvbiAqLworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF92dWxrYW5fYnVmZmVyX3Bvb2xfYWxsb2MgKEdzdEJ1ZmZlclBvb2wgKiBwb29sLCBHc3RCdWZmZXIgKiogYnVmZmVyLAorICAgIEdzdEJ1ZmZlclBvb2xBY3F1aXJlUGFyYW1zICogcGFyYW1zKQoreworICBHc3RWdWxrYW5CdWZmZXJQb29sICp2a19wb29sID0gR1NUX1ZVTEtBTl9CVUZGRVJfUE9PTF9DQVNUIChwb29sKTsKKyAgR3N0VnVsa2FuQnVmZmVyUG9vbFByaXZhdGUgKnByaXYgPSB2a19wb29sLT5wcml2OworICBHc3RCdWZmZXIgKmJ1ZjsKKyAgZ3VpbnQgaTsKKworICBpZiAoIShidWYgPSBnc3RfYnVmZmVyX25ldyAoKSkpIHsKKyAgICBnb3RvIG5vX2J1ZmZlcjsKKyAgfQorCisgIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJnByaXYtPnZfaW5mbyk7IGkrKykgeworICAgIEdzdFZpZGVvRm9ybWF0IHZfZm9ybWF0ID0gR1NUX1ZJREVPX0lORk9fRk9STUFUICgmcHJpdi0+dl9pbmZvKTsKKyAgICBWa0Zvcm1hdCB2a19mb3JtYXQ7CisgICAgR3N0TWVtb3J5ICptZW07CisKKyAgICB2a19mb3JtYXQgPSBnc3RfdnVsa2FuX2Zvcm1hdF9mcm9tX3ZpZGVvX2Zvcm1hdCAodl9mb3JtYXQsIGkpOworCisgICAgbWVtID0gZ3N0X3Z1bGthbl9idWZmZXJfbWVtb3J5X2FsbG9jICh2a19wb29sLT5kZXZpY2UsCisgICAgICAgIHZrX2Zvcm1hdCwgcHJpdi0+YWxsb2Nfc2l6ZXNbaV0sCisgICAgICAgIFZLX0JVRkZFUl9VU0FHRV9UUkFOU0ZFUl9TUkNfQklUIHwgVktfQlVGRkVSX1VTQUdFX1RSQU5TRkVSX0RTVF9CSVQsCisgICAgICAgIFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX1ZJU0lCTEVfQklUKTsKKyAgICBpZiAoIW1lbSkgeworICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKyAgICAgIGdvdG8gbWVtX2NyZWF0ZV9mYWlsZWQ7CisgICAgfQorCisgICAgZ3N0X2J1ZmZlcl9hcHBlbmRfbWVtb3J5IChidWYsIG1lbSk7CisgIH0KKworICAqYnVmZmVyID0gYnVmOworCisgIHJldHVybiBHU1RfRkxPV19PSzsKKworICAvKiBFUlJPUiAqLworbm9fYnVmZmVyOgorICB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChwb29sLCAiY2FuJ3QgY3JlYXRlIGltYWdlIik7CisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICB9CittZW1fY3JlYXRlX2ZhaWxlZDoKKyAgeworICAgIEdTVF9XQVJOSU5HX09CSkVDVCAocG9vbCwgIkNvdWxkIG5vdCBjcmVhdGUgVnVsa2FuIE1lbW9yeSIpOworICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgfQorfQorCisvKioKKyAqIGdzdF92dWxrYW5fYnVmZmVyX3Bvb2xfbmV3OgorICogQGNvbnRleHQ6IHRoZSAjR3N0R0xDb250ZXh0IHRvIHVzZQorICoKKyAqIFJldHVybnM6IGEgI0dzdEJ1ZmZlclBvb2wgdGhhdCBhbGxvY2F0ZXMgYnVmZmVycyB3aXRoICNHc3RHTE1lbW9yeQorICovCitHc3RCdWZmZXJQb29sICoKK2dzdF92dWxrYW5fYnVmZmVyX3Bvb2xfbmV3IChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UpCit7CisgIEdzdFZ1bGthbkJ1ZmZlclBvb2wgKnBvb2w7CisKKyAgcG9vbCA9IGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfVlVMS0FOX0JVRkZFUl9QT09MLCBOVUxMKTsKKyAgcG9vbC0+ZGV2aWNlID0gZ3N0X29iamVjdF9yZWYgKGRldmljZSk7CisKKyAgR1NUX0xPR19PQkpFQ1QgKHBvb2wsICJuZXcgVnVsa2FuIGJ1ZmZlciBwb29sIGZvciBkZXZpY2UgJSIgR1NUX1BUUl9GT1JNQVQsCisgICAgICBkZXZpY2UpOworCisgIHJldHVybiBHU1RfQlVGRkVSX1BPT0xfQ0FTVCAocG9vbCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX2NsYXNzX2luaXQgKEdzdFZ1bGthbkJ1ZmZlclBvb2xDbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworICBHc3RCdWZmZXJQb29sQ2xhc3MgKmdzdGJ1ZmZlcnBvb2xfY2xhc3MgPSAoR3N0QnVmZmVyUG9vbENsYXNzICopIGtsYXNzOworCisgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoa2xhc3MsIHNpemVvZiAoR3N0VnVsa2FuQnVmZmVyUG9vbFByaXZhdGUpKTsKKworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF92dWxrYW5fYnVmZmVyX3Bvb2xfZmluYWxpemU7CisKKyAgZ3N0YnVmZmVycG9vbF9jbGFzcy0+Z2V0X29wdGlvbnMgPSBnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX2dldF9vcHRpb25zOworICBnc3RidWZmZXJwb29sX2NsYXNzLT5zZXRfY29uZmlnID0gZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9zZXRfY29uZmlnOworICBnc3RidWZmZXJwb29sX2NsYXNzLT5hbGxvY19idWZmZXIgPSBnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX2FsbG9jOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9pbml0IChHc3RWdWxrYW5CdWZmZXJQb29sICogcG9vbCkKK3sKKyAgcG9vbC0+cHJpdiA9IEdTVF9WVUxLQU5fQlVGRkVSX1BPT0xfR0VUX1BSSVZBVEUgKHBvb2wpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0VnVsa2FuQnVmZmVyUG9vbCAqcG9vbCA9IEdTVF9WVUxLQU5fQlVGRkVSX1BPT0xfQ0FTVCAob2JqZWN0KTsKKyAgR3N0VnVsa2FuQnVmZmVyUG9vbFByaXZhdGUgKnByaXYgPSBwb29sLT5wcml2OworCisgIEdTVF9MT0dfT0JKRUNUIChwb29sLCAiZmluYWxpemUgVnVsa2FuIGJ1ZmZlciBwb29sICVwIiwgcG9vbCk7CisKKyAgaWYgKHByaXYtPmNhcHMpCisgICAgZ3N0X2NhcHNfdW5yZWYgKHByaXYtPmNhcHMpOworCisgIEdfT0JKRUNUX0NMQVNTIChnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworCisgIC8qIG9ubHkgcmVsZWFzZSB0aGUgY29udGV4dCBvbmNlIGFsbCBvdXIgbWVtb3J5IGhhdmUgYmVlbiBkZWxldGVkICovCisgIGlmIChwb29sLT5kZXZpY2UpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChwb29sLT5kZXZpY2UpOworICAgIHBvb2wtPmRldmljZSA9IE5VTEw7CisgIH0KK30KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtidWZmZXJwb29sLmggYi9leHQvdnVsa2FuL3ZrYnVmZmVycG9vbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZDRiYWYKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZrYnVmZmVycG9vbC5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfR1NUX1ZVTEtBTl9CVUZGRVJfUE9PTF9IXworI2RlZmluZSBfR1NUX1ZVTEtBTl9CVUZGRVJfUE9PTF9IXworCisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgorI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb3Bvb2wuaD4KKworI2luY2x1ZGUgPHZrLmg+CisKK0dfQkVHSU5fREVDTFMKKworLyogYnVmZmVyIHBvb2wgZnVuY3Rpb25zICovCitHVHlwZSBnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX2dldF90eXBlICh2b2lkKTsKKyNkZWZpbmUgR1NUX1RZUEVfVlVMS0FOX0JVRkZFUl9QT09MICAgICAgKGdzdF92dWxrYW5fYnVmZmVyX3Bvb2xfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9CVUZGRVJfUE9PTChvYmopICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfVlVMS0FOX0JVRkZFUl9QT09MKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9CVUZGRVJfUE9PTChvYmopICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfVlVMS0FOX0JVRkZFUl9QT09MLCBHc3RWdWxrYW5CdWZmZXJQb29sKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9CVUZGRVJfUE9PTF9DQVNUKG9iaikgKChHc3RWdWxrYW5CdWZmZXJQb29sKikob2JqKSkKKworLyoqCisgKiBHc3RWdWxrYW5CdWZmZXJQb29sOgorICoKKyAqIE9wYXF1ZSBHc3RWdWxrYW5CdWZmZXJQb29sIHN0cnVjdAorICovCitzdHJ1Y3QgX0dzdFZ1bGthbkJ1ZmZlclBvb2wKK3sKKyAgR3N0QnVmZmVyUG9vbCBidWZmZXJwb29sOworCisgIEdzdFZ1bGthbkRldmljZSAqZGV2aWNlOworCisgIEdzdFZ1bGthbkJ1ZmZlclBvb2xQcml2YXRlICpwcml2OworfTsKKworLyoqCisgKiBHc3RWdWxrYW5CdWZmZXJQb29sQ2xhc3M6CisgKgorICogVGhlICNHc3RWdWxrYW5CdWZmZXJQb29sQ2xhc3Mgc3RydWN0dXJlIGNvbnRhaW5zIG9ubHkgcHJpdmF0ZSBkYXRhCisgKi8KK3N0cnVjdCBfR3N0VnVsa2FuQnVmZmVyUG9vbENsYXNzCit7CisgIEdzdEJ1ZmZlclBvb2xDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitHc3RCdWZmZXJQb29sICpnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX25ldyAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9HU1RfVlVMS0FOX0JVRkZFUl9QT09MX0hfICovCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrZGV2aWNlLmMgYi9leHQvdnVsa2FuL3ZrZGV2aWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgxNGQ2MAotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtkZXZpY2UuYwpAQCAtMCwwICsxLDU0OSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJ2a2RldmljZS5oIgorI2luY2x1ZGUgInZrdXRpbHNfcHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK3N0YXRpYyBjb25zdCBjaGFyICpkZXZpY2VfdmFsaWRhdGlvbl9sYXllcnNbXSA9IHsKKyAgIlZLX0xBWUVSX0xVTkFSR190aHJlYWRpbmciLAorICAiVktfTEFZRVJfTFVOQVJHX21lbV90cmFja2VyIiwKKyAgIlZLX0xBWUVSX0xVTkFSR19vYmplY3RfdHJhY2tlciIsCisgICJWS19MQVlFUl9MVU5BUkdfZHJhd19zdGF0ZSIsCisgICJWS19MQVlFUl9MVU5BUkdfcGFyYW1fY2hlY2tlciIsCisgICJWS19MQVlFUl9MVU5BUkdfc3dhcGNoYWluIiwKKyAgIlZLX0xBWUVSX0xVTkFSR19kZXZpY2VfbGltaXRzIiwKKyAgIlZLX0xBWUVSX0xVTkFSR19pbWFnZSIsCit9OworCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfdnVsa2FuX2RldmljZV9kZWJ1ZworR1NUX0RFQlVHX0NBVEVHT1JZIChHU1RfQ0FUX0RFRkFVTFQpOworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9DT05URVhUKTsKKworI2RlZmluZSBnc3RfdnVsa2FuX2RldmljZV9wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0VnVsa2FuRGV2aWNlLCBnc3RfdnVsa2FuX2RldmljZSwgR1NUX1RZUEVfT0JKRUNULAorICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX0RFRkFVTFQsICJ2dWxrYW5kZXZpY2UiLCAwLAorICAgICAgICAiVnVsa2FuIERldmljZSIpOworICAgIEdTVF9ERUJVR19DQVRFR09SWV9HRVQgKEdTVF9DQVRfQ09OVEVYVCwgIkdTVF9DT05URVhUIikpOworCitzdGF0aWMgdm9pZCBnc3RfdnVsa2FuX2RldmljZV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CisKK3N0cnVjdCBfR3N0VnVsa2FuRGV2aWNlUHJpdmF0ZQoreworICBnYm9vbGVhbiBvcGVuZWQ7Cit9OworCitHc3RWdWxrYW5EZXZpY2UgKgorZ3N0X3Z1bGthbl9kZXZpY2VfbmV3IChHc3RWdWxrYW5JbnN0YW5jZSAqIGluc3RhbmNlKQoreworICBHc3RWdWxrYW5EZXZpY2UgKmRldmljZSA9IGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfVlVMS0FOX0RFVklDRSwgTlVMTCk7CisKKyAgZGV2aWNlLT5pbnN0YW5jZSA9IGdzdF9vYmplY3RfcmVmIChpbnN0YW5jZSk7CisgIC8qIEZJWE1FOiBzZWxlY3QgdGhpcyBleHRlcm5hbGx5ICovCisgIGRldmljZS0+ZGV2aWNlX2luZGV4ID0gMDsKKworICByZXR1cm4gZGV2aWNlOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9kZXZpY2VfaW5pdCAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlKQoreworICBkZXZpY2UtPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUgKChkZXZpY2UpLAorICAgICAgR1NUX1RZUEVfVlVMS0FOX0RFVklDRSwgR3N0VnVsa2FuRGV2aWNlUHJpdmF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2RldmljZV9jbGFzc19pbml0IChHc3RWdWxrYW5EZXZpY2VDbGFzcyAqIGRldmljZV9jbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBkZXZpY2VfY2xhc3M7CisKKyAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlIChkZXZpY2VfY2xhc3MsIHNpemVvZiAoR3N0VnVsa2FuRGV2aWNlUHJpdmF0ZSkpOworCisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3Z1bGthbl9kZXZpY2VfZmluYWxpemU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2RldmljZV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0VnVsa2FuRGV2aWNlICpkZXZpY2UgPSBHU1RfVlVMS0FOX0RFVklDRSAob2JqZWN0KTsKKworICBnX2ZyZWUgKGRldmljZS0+cXVldWVfZmFtaWx5X3Byb3BzKTsKKyAgZGV2aWNlLT5xdWV1ZV9mYW1pbHlfcHJvcHMgPSBOVUxMOworCisgIGlmIChkZXZpY2UtPmNtZF9wb29sKQorICAgIHZrRGVzdHJveUNvbW1hbmRQb29sIChkZXZpY2UtPmRldmljZSwgZGV2aWNlLT5jbWRfcG9vbCwgTlVMTCk7CisgIGRldmljZS0+Y21kX3Bvb2wgPSBWS19OVUxMX0hBTkRMRTsKKworICBpZiAoZGV2aWNlLT5kZXZpY2UpIHsKKyAgICB2a0RldmljZVdhaXRJZGxlIChkZXZpY2UtPmRldmljZSk7CisgICAgdmtEZXN0cm95RGV2aWNlIChkZXZpY2UtPmRldmljZSwgTlVMTCk7CisgIH0KKyAgZGV2aWNlLT5kZXZpY2UgPSBWS19OVUxMX0hBTkRMRTsKKworICBpZiAoZGV2aWNlLT5pbnN0YW5jZSkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChkZXZpY2UtPmluc3RhbmNlKTsKKyAgZGV2aWNlLT5pbnN0YW5jZSA9IFZLX05VTExfSEFORExFOworCisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworc3RhdGljIGNvbnN0IGdjaGFyICoKK19kZXZpY2VfdHlwZV90b19zdHJpbmcgKFZrUGh5c2ljYWxEZXZpY2VUeXBlIHR5cGUpCit7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgVktfUEhZU0lDQUxfREVWSUNFX1RZUEVfT1RIRVI6CisgICAgICByZXR1cm4gIm90aGVyIjsKKyAgICBjYXNlIFZLX1BIWVNJQ0FMX0RFVklDRV9UWVBFX0lOVEVHUkFURURfR1BVOgorICAgICAgcmV0dXJuICJpbnRlZ3JhdGVkIjsKKyAgICBjYXNlIFZLX1BIWVNJQ0FMX0RFVklDRV9UWVBFX0RJU0NSRVRFX0dQVToKKyAgICAgIHJldHVybiAiZGlzY3JldGUiOworICAgIGNhc2UgVktfUEhZU0lDQUxfREVWSUNFX1RZUEVfVklSVFVBTF9HUFU6CisgICAgICByZXR1cm4gInZpcnR1YWwiOworICAgIGNhc2UgVktfUEhZU0lDQUxfREVWSUNFX1RZUEVfQ1BVOgorICAgICAgcmV0dXJuICJDUFUiOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gInVua25vd24iOworICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3BoeXNpY2FsX2RldmljZV9pbmZvIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgVmtQaHlzaWNhbERldmljZVByb3BlcnRpZXMgcHJvcHM7CisgIFZrUGh5c2ljYWxEZXZpY2UgZ3B1OworCisgIGdwdSA9IGdzdF92dWxrYW5fZGV2aWNlX2dldF9waHlzaWNhbF9kZXZpY2UgKGRldmljZSk7CisgIGlmICghZ3B1KSB7CisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfVlVMS0FOX0VSUk9SLCBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQsCisgICAgICAgICJGYWlsZWQgdG8gcmV0cmlldmUgcGh5c2ljYWwgZGV2aWNlIik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgdmtHZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMgKGdwdSwgJnByb3BzKTsKKworICBHU1RfSU5GT19PQkpFQ1QgKGRldmljZSwgImRldmljZSBuYW1lICVzIHR5cGUgJXMgYXBpIHZlcnNpb24gJXUsICIKKyAgICAgICJkcml2ZXIgdmVyc2lvbiAldSB2ZW5kb3IgSUQgMHgleCwgZGV2aWNlIElEIDB4JXgiLCBwcm9wcy5kZXZpY2VOYW1lLAorICAgICAgX2RldmljZV90eXBlX3RvX3N0cmluZyAocHJvcHMuZGV2aWNlVHlwZSksIHByb3BzLmFwaVZlcnNpb24sCisgICAgICBwcm9wcy5kcml2ZXJWZXJzaW9uLCBwcm9wcy52ZW5kb3JJRCwgcHJvcHMuZGV2aWNlSUQpOworCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9kZXZpY2Vfb3BlbiAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBHRXJyb3IgKiogZXJyb3IpCit7CisgIGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9uYW1lc1s2NF07CisgIHVpbnQzMl90IGVuYWJsZWRfZXh0ZW5zaW9uX2NvdW50ID0gMDsKKyAgdWludDMyX3QgZGV2aWNlX2V4dGVuc2lvbl9jb3VudCA9IDA7CisgIFZrRXh0ZW5zaW9uUHJvcGVydGllcyAqZGV2aWNlX2V4dGVuc2lvbnMgPSBOVUxMOworICB1aW50MzJfdCBlbmFibGVkX2xheWVyX2NvdW50ID0gMDsKKyAgdWludDMyX3QgZGV2aWNlX2xheWVyX2NvdW50ID0gMDsKKyAgVmtMYXllclByb3BlcnRpZXMgKmRldmljZV9sYXllcnM7CisgIGdib29sZWFuIGhhdmVfc3dhcGNoYWluX2V4dDsKKyAgZ2Jvb2xlYW4gdmFsaWRhdGlvbl9mb3VuZDsKKyAgVmtQaHlzaWNhbERldmljZSBncHU7CisgIFZrUmVzdWx0IGVycjsKKyAgZ3VpbnQgaTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1ZVTEtBTl9ERVZJQ0UgKGRldmljZSksIEZBTFNFKTsKKworICBHU1RfT0JKRUNUX0xPQ0sgKGRldmljZSk7CisKKyAgaWYgKGRldmljZS0+cHJpdi0+b3BlbmVkKSB7CisgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGRldmljZSk7CisgICAgcmV0dXJuIFRSVUU7CisgIH0KKworICBpZiAoIV9waHlzaWNhbF9kZXZpY2VfaW5mbyAoZGV2aWNlLCBlcnJvcikpCisgICAgZ290byBlcnJvcjsKKworICBncHUgPSBnc3RfdnVsa2FuX2RldmljZV9nZXRfcGh5c2ljYWxfZGV2aWNlIChkZXZpY2UpOworCisgIC8qIExvb2sgZm9yIHZhbGlkYXRpb24gbGF5ZXJzICovCisgIGVyciA9IHZrRW51bWVyYXRlRGV2aWNlTGF5ZXJQcm9wZXJ0aWVzIChncHUsICZkZXZpY2VfbGF5ZXJfY291bnQsIE5VTEwpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLAorICAgICAgICAgICJ2a0VudW1lcmF0ZURldmljZUxheWVyUHJvcGVydGllcyIpIDwgMCkKKyAgICBnb3RvIGVycm9yOworCisgIGRldmljZV9sYXllcnMgPSBnX25ldzAgKFZrTGF5ZXJQcm9wZXJ0aWVzLCBkZXZpY2VfbGF5ZXJfY291bnQpOworICBlcnIgPQorICAgICAgdmtFbnVtZXJhdGVEZXZpY2VMYXllclByb3BlcnRpZXMgKGdwdSwgJmRldmljZV9sYXllcl9jb3VudCwKKyAgICAgIGRldmljZV9sYXllcnMpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLAorICAgICAgICAgICJ2a0VudW1lcmF0ZURldmljZUxheWVyUHJvcGVydGllcyIpIDwgMCkgeworICAgIGdfZnJlZSAoZGV2aWNlX2xheWVycyk7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIHZhbGlkYXRpb25fZm91bmQgPQorICAgICAgX2NoZWNrX2Zvcl9hbGxfbGF5ZXJzIChHX05fRUxFTUVOVFMgKGRldmljZV92YWxpZGF0aW9uX2xheWVycyksCisgICAgICBkZXZpY2VfdmFsaWRhdGlvbl9sYXllcnMsIGRldmljZV9sYXllcl9jb3VudCwgZGV2aWNlX2xheWVycyk7CisgIGdfZnJlZSAoZGV2aWNlX2xheWVycyk7CisgIGRldmljZV9sYXllcnMgPSBOVUxMOworICBpZiAoIXZhbGlkYXRpb25fZm91bmQpIHsKKyAgICBnX2Vycm9yICgidmtFbnVtZXJhdGVEZXZpY2VMYXllclByb3BlcnRpZXMgZmFpbGVkIHRvIGZpbmQiCisgICAgICAgICJhIHJlcXVpcmVkIHZhbGlkYXRpb24gbGF5ZXIuXG5cbiIKKyAgICAgICAgIlBsZWFzZSBsb29rIGF0IHRoZSBHZXR0aW5nIFN0YXJ0ZWQgZ3VpZGUgZm9yIGFkZGl0aW9uYWwgIgorICAgICAgICAiaW5mb3JtYXRpb24uXG52a0NyZWF0ZURldmljZSBGYWlsdXJlIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorICBlbmFibGVkX2xheWVyX2NvdW50ID0gR19OX0VMRU1FTlRTIChkZXZpY2VfdmFsaWRhdGlvbl9sYXllcnMpOworCisgIGVyciA9CisgICAgICB2a0VudW1lcmF0ZURldmljZUV4dGVuc2lvblByb3BlcnRpZXMgKGdwdSwgTlVMTCwKKyAgICAgICZkZXZpY2VfZXh0ZW5zaW9uX2NvdW50LCBOVUxMKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAidmtFbnVtZXJhdGVEZXZpY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIikgPCAwKQorICAgIGdvdG8gZXJyb3I7CisgIEdTVF9ERUJVR19PQkpFQ1QgKGRldmljZSwgIkZvdW5kICV1IGV4dGVuc2lvbnMiLCBkZXZpY2VfZXh0ZW5zaW9uX2NvdW50KTsKKworICBoYXZlX3N3YXBjaGFpbl9leHQgPSAwOworICBlbmFibGVkX2V4dGVuc2lvbl9jb3VudCA9IDA7CisgIG1lbXNldCAoZXh0ZW5zaW9uX25hbWVzLCAwLCBzaXplb2YgKGV4dGVuc2lvbl9uYW1lcykpOworICBkZXZpY2VfZXh0ZW5zaW9ucyA9IGdfbmV3MCAoVmtFeHRlbnNpb25Qcm9wZXJ0aWVzLCBkZXZpY2VfZXh0ZW5zaW9uX2NvdW50KTsKKyAgZXJyID0gdmtFbnVtZXJhdGVEZXZpY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIChncHUsIE5VTEwsCisgICAgICAmZGV2aWNlX2V4dGVuc2lvbl9jb3VudCwgZGV2aWNlX2V4dGVuc2lvbnMpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLAorICAgICAgICAgICJ2a0VudW1lcmF0ZURldmljZUV4dGVuc2lvblByb3BlcnRpZXMiKSA8IDApIHsKKyAgICBnX2ZyZWUgKGRldmljZV9leHRlbnNpb25zKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGRldmljZV9leHRlbnNpb25fY291bnQ7IGkrKykgeworICAgIEdTVF9UUkFDRV9PQkpFQ1QgKGRldmljZSwgImNoZWNraW5nIGRldmljZSBleHRlbnNpb24gJXMiLAorICAgICAgICBkZXZpY2VfZXh0ZW5zaW9uc1tpXS5leHRlbnNpb25OYW1lKTsKKyAgICBpZiAoIXN0cmNtcCAoVktfS0hSX1NXQVBDSEFJTl9FWFRFTlNJT05fTkFNRSwKKyAgICAgICAgICAgIGRldmljZV9leHRlbnNpb25zW2ldLmV4dGVuc2lvbk5hbWUpKSB7CisgICAgICBoYXZlX3N3YXBjaGFpbl9leHQgPSBUUlVFOworICAgICAgZXh0ZW5zaW9uX25hbWVzW2VuYWJsZWRfZXh0ZW5zaW9uX2NvdW50KytdID0KKyAgICAgICAgICAoZ2NoYXIgKikgVktfS0hSX1NXQVBDSEFJTl9FWFRFTlNJT05fTkFNRTsKKyAgICB9CisgICAgZ19hc3NlcnQgKGVuYWJsZWRfZXh0ZW5zaW9uX2NvdW50IDwgNjQpOworICB9CisgIGlmICghaGF2ZV9zd2FwY2hhaW5fZXh0KSB7CisgICAgZ19lcnJvciAoInZrRW51bWVyYXRlRGV2aWNlRXh0ZW5zaW9uUHJvcGVydGllcyBmYWlsZWQgdG8gZmluZCB0aGUgXCIiCisgICAgICAgIFZLX0tIUl9TV0FQQ0hBSU5fRVhURU5TSU9OX05BTUUKKyAgICAgICAgIlwiIGV4dGVuc2lvbi5cblxuRG8geW91IGhhdmUgYSBjb21wYXRpYmxlICIKKyAgICAgICAgIlZ1bGthbiBpbnN0YWxsYWJsZSBjbGllbnQgZHJpdmVyIChJQ0QpIGluc3RhbGxlZD9cblBsZWFzZSAiCisgICAgICAgICJsb29rIGF0IHRoZSBHZXR0aW5nIFN0YXJ0ZWQgZ3VpZGUgZm9yIGFkZGl0aW9uYWwgIgorICAgICAgICAiaW5mb3JtYXRpb24uXG52a0NyZWF0ZUluc3RhbmNlIEZhaWx1cmUiKTsKKyAgfQorICBnX2ZyZWUgKGRldmljZV9leHRlbnNpb25zKTsKKworICB2a0dldFBoeXNpY2FsRGV2aWNlUHJvcGVydGllcyAoZ3B1LCAmZGV2aWNlLT5ncHVfcHJvcHMpOworICB2a0dldFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGllcyAoZ3B1LCAmZGV2aWNlLT5tZW1vcnlfcHJvcGVydGllcyk7CisgIHZrR2V0UGh5c2ljYWxEZXZpY2VGZWF0dXJlcyAoZ3B1LCAmZGV2aWNlLT5ncHVfZmVhdHVyZXMpOworCisgIHZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVByb3BlcnRpZXMgKGdwdSwgJmRldmljZS0+bl9xdWV1ZV9mYW1pbGllcywKKyAgICAgIE5VTEwpOworICBnX2Fzc2VydCAoZGV2aWNlLT5uX3F1ZXVlX2ZhbWlsaWVzID49IDEpOworCisgIGRldmljZS0+cXVldWVfZmFtaWx5X3Byb3BzID0KKyAgICAgIGdfbmV3MCAoVmtRdWV1ZUZhbWlseVByb3BlcnRpZXMsIGRldmljZS0+bl9xdWV1ZV9mYW1pbGllcyk7CisgIHZrR2V0UGh5c2ljYWxEZXZpY2VRdWV1ZUZhbWlseVByb3BlcnRpZXMgKGdwdSwgJmRldmljZS0+bl9xdWV1ZV9mYW1pbGllcywKKyAgICAgIGRldmljZS0+cXVldWVfZmFtaWx5X3Byb3BzKTsKKworICAvKiBGSVhNRTogYWxsb3cgb3ZlcnJpZGluZy9zZWxlY3RpbmcgKi8KKyAgZm9yIChpID0gMDsgaSA8IGRldmljZS0+bl9xdWV1ZV9mYW1pbGllczsgaSsrKSB7CisgICAgaWYgKGRldmljZS0+cXVldWVfZmFtaWx5X3Byb3BzW2ldLnF1ZXVlRmxhZ3MgJiBWS19RVUVVRV9HUkFQSElDU19CSVQpCisgICAgICBicmVhazsKKyAgfQorICBpZiAoaSA+PSBkZXZpY2UtPm5fcXVldWVfZmFtaWxpZXMpIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCwKKyAgICAgICAgIkZhaWxlZCB0byBmaW5kIGEgY29tcGF0aWJsZSBxdWV1ZSBmYW1pbHkiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisgIGRldmljZS0+cXVldWVfZmFtaWx5X2lkID0gaTsKKyAgZGV2aWNlLT5uX3F1ZXVlcyA9IDE7CisKKyAgeworICAgIFZrRGV2aWNlUXVldWVDcmVhdGVJbmZvIHF1ZXVlX2luZm8gPSB7IDAsIH07CisgICAgVmtEZXZpY2VDcmVhdGVJbmZvIGRldmljZV9pbmZvID0geyAwLCB9OworICAgIGdmbG9hdCBxdWV1ZV9wcmlvcml0eSA9IDAuNTsKKworICAgIHF1ZXVlX2luZm8uc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9ERVZJQ0VfUVVFVUVfQ1JFQVRFX0lORk87CisgICAgcXVldWVfaW5mby5wTmV4dCA9IE5VTEw7CisgICAgcXVldWVfaW5mby5xdWV1ZUZhbWlseUluZGV4ID0gZGV2aWNlLT5xdWV1ZV9mYW1pbHlfaWQ7CisgICAgcXVldWVfaW5mby5xdWV1ZUNvdW50ID0gZGV2aWNlLT5uX3F1ZXVlczsKKyAgICBxdWV1ZV9pbmZvLnBRdWV1ZVByaW9yaXRpZXMgPSAmcXVldWVfcHJpb3JpdHk7CisKKyAgICBkZXZpY2VfaW5mby5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0RFVklDRV9DUkVBVEVfSU5GTzsKKyAgICBkZXZpY2VfaW5mby5wTmV4dCA9IE5VTEw7CisgICAgZGV2aWNlX2luZm8ucXVldWVDcmVhdGVJbmZvQ291bnQgPSAxOworICAgIGRldmljZV9pbmZvLnBRdWV1ZUNyZWF0ZUluZm9zID0gJnF1ZXVlX2luZm87CisgICAgZGV2aWNlX2luZm8uZW5hYmxlZExheWVyQ291bnQgPSBlbmFibGVkX2xheWVyX2NvdW50OworICAgIGRldmljZV9pbmZvLnBwRW5hYmxlZExheWVyTmFtZXMgPQorICAgICAgICAoY29uc3QgY2hhciAqY29uc3QgKikgZGV2aWNlX3ZhbGlkYXRpb25fbGF5ZXJzOworICAgIGRldmljZV9pbmZvLmVuYWJsZWRFeHRlbnNpb25Db3VudCA9IGVuYWJsZWRfZXh0ZW5zaW9uX2NvdW50OworICAgIGRldmljZV9pbmZvLnBwRW5hYmxlZEV4dGVuc2lvbk5hbWVzID0gKGNvbnN0IGNoYXIgKmNvbnN0ICopIGV4dGVuc2lvbl9uYW1lczsKKyAgICBkZXZpY2VfaW5mby5wRW5hYmxlZEZlYXR1cmVzID0gTlVMTDsKKworICAgIGVyciA9IHZrQ3JlYXRlRGV2aWNlIChncHUsICZkZXZpY2VfaW5mbywgTlVMTCwgJmRldmljZS0+ZGV2aWNlKTsKKyAgICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLCAidmtDcmVhdGVEZXZpY2UiKSA8IDApCisgICAgICBnb3RvIGVycm9yOworICB9CisgIHsKKyAgICBWa0NvbW1hbmRQb29sQ3JlYXRlSW5mbyBjbWRfcG9vbF9pbmZvID0geyAwLCB9OworCisgICAgY21kX3Bvb2xfaW5mby5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0NPTU1BTkRfUE9PTF9DUkVBVEVfSU5GTzsKKyAgICBjbWRfcG9vbF9pbmZvLnBOZXh0ID0gTlVMTDsKKyAgICBjbWRfcG9vbF9pbmZvLnF1ZXVlRmFtaWx5SW5kZXggPSBkZXZpY2UtPnF1ZXVlX2ZhbWlseV9pZDsKKyAgICBjbWRfcG9vbF9pbmZvLmZsYWdzID0gMDsKKworICAgIGVyciA9CisgICAgICAgIHZrQ3JlYXRlQ29tbWFuZFBvb2wgKGRldmljZS0+ZGV2aWNlLCAmY21kX3Bvb2xfaW5mbywgTlVMTCwKKyAgICAgICAgJmRldmljZS0+Y21kX3Bvb2wpOworICAgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a0NyZWF0ZUNvbW1hbmRQb29sIikgPCAwKQorICAgICAgZ290byBlcnJvcjsKKyAgfQorCisgIEdTVF9PQkpFQ1RfVU5MT0NLIChkZXZpY2UpOworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIHsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZGV2aWNlKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KK30KKworR3N0VnVsa2FuUXVldWUgKgorZ3N0X3Z1bGthbl9kZXZpY2VfZ2V0X3F1ZXVlIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIGd1aW50MzIgcXVldWVfZmFtaWx5LAorICAgIGd1aW50MzIgcXVldWVfaSkKK3sKKyAgR3N0VnVsa2FuUXVldWUgKnJldDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1ZVTEtBTl9ERVZJQ0UgKGRldmljZSksIE5VTEwpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGV2aWNlLT5kZXZpY2UgIT0gTlVMTCwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChxdWV1ZV9mYW1pbHkgPCBkZXZpY2UtPm5fcXVldWVzLCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHF1ZXVlX2kgPAorICAgICAgZGV2aWNlLT5xdWV1ZV9mYW1pbHlfcHJvcHNbcXVldWVfZmFtaWx5XS5xdWV1ZUNvdW50LCBOVUxMKTsKKworICByZXQgPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX1ZVTEtBTl9RVUVVRSwgTlVMTCk7CisgIHJldC0+ZGV2aWNlID0gZ3N0X29iamVjdF9yZWYgKGRldmljZSk7CisgIHJldC0+ZmFtaWx5ID0gcXVldWVfZmFtaWx5OworICByZXQtPmluZGV4ID0gcXVldWVfaTsKKworICB2a0dldERldmljZVF1ZXVlIChkZXZpY2UtPmRldmljZSwgcXVldWVfZmFtaWx5LCBxdWV1ZV9pLCAmcmV0LT5xdWV1ZSk7CisKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZAorZ3N0X3Z1bGthbl9kZXZpY2VfZm9yZWFjaF9xdWV1ZSAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLAorICAgIEdzdFZ1bGthbkRldmljZUZvckVhY2hRdWV1ZUZ1bmMgZnVuYywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBnYm9vbGVhbiBkb25lID0gRkFMU0U7CisgIGd1aW50IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IGRldmljZS0+bl9xdWV1ZXM7IGkrKykgeworICAgIEdzdFZ1bGthblF1ZXVlICpxdWV1ZSA9CisgICAgICAgIGdzdF92dWxrYW5fZGV2aWNlX2dldF9xdWV1ZSAoZGV2aWNlLCBkZXZpY2UtPnF1ZXVlX2ZhbWlseV9pZCwgaSk7CisKKyAgICBpZiAoIWZ1bmMgKGRldmljZSwgcXVldWUsIHVzZXJfZGF0YSkpCisgICAgICBkb25lID0gVFJVRTsKKworICAgIGdzdF9vYmplY3RfdW5yZWYgKHF1ZXVlKTsKKworICAgIGlmIChkb25lKQorICAgICAgYnJlYWs7CisgIH0KK30KKworZ3BvaW50ZXIKK2dzdF92dWxrYW5fZGV2aWNlX2dldF9wcm9jX2FkZHJlc3MgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwKKyAgICBjb25zdCBnY2hhciAqIG5hbWUpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfVlVMS0FOX0RFVklDRSAoZGV2aWNlKSwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkZXZpY2UtPmRldmljZSAhPSBOVUxMLCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKG5hbWUgIT0gTlVMTCwgTlVMTCk7CisKKyAgR1NUX1RSQUNFX09CSkVDVCAoZGV2aWNlLCAiJXMiLCBuYW1lKTsKKworICByZXR1cm4gdmtHZXREZXZpY2VQcm9jQWRkciAoZGV2aWNlLT5kZXZpY2UsIG5hbWUpOworfQorCitHc3RWdWxrYW5JbnN0YW5jZSAqCitnc3RfdnVsa2FuX2RldmljZV9nZXRfaW5zdGFuY2UgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fREVWSUNFIChkZXZpY2UpLCBOVUxMKTsKKworICByZXR1cm4gZGV2aWNlLT5pbnN0YW5jZSA/IGdzdF9vYmplY3RfcmVmIChkZXZpY2UtPmluc3RhbmNlKSA6IE5VTEw7Cit9CisKK1ZrUGh5c2ljYWxEZXZpY2UKK2dzdF92dWxrYW5fZGV2aWNlX2dldF9waHlzaWNhbF9kZXZpY2UgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fREVWSUNFIChkZXZpY2UpLCBOVUxMKTsKKworICBpZiAoZGV2aWNlLT5pbnN0YW5jZS0+cGh5c2ljYWxfZGV2aWNlcyA9PSBOVUxMKQorICAgIHJldHVybiBOVUxMOworICBpZiAoZGV2aWNlLT5kZXZpY2VfaW5kZXggPj0gZGV2aWNlLT5pbnN0YW5jZS0+bl9waHlzaWNhbF9kZXZpY2VzKQorICAgIHJldHVybiBOVUxMOworCisgIHJldHVybiBkZXZpY2UtPmluc3RhbmNlLT5waHlzaWNhbF9kZXZpY2VzW2RldmljZS0+ZGV2aWNlX2luZGV4XTsKK30KKworZ2Jvb2xlYW4KK2dzdF92dWxrYW5fZGV2aWNlX2NyZWF0ZV9jbWRfYnVmZmVyIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsCisgICAgVmtDb21tYW5kQnVmZmVyICogY21kLCBHRXJyb3IgKiogZXJyb3IpCit7CisgIFZrUmVzdWx0IGVycjsKKyAgVmtDb21tYW5kQnVmZmVyQWxsb2NhdGVJbmZvIGNtZF9pbmZvID0geyAwLCB9OworCisgIGNtZF9pbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9CVUZGRVJfQUxMT0NBVEVfSU5GTzsKKyAgY21kX2luZm8ucE5leHQgPSBOVUxMOworICBjbWRfaW5mby5jb21tYW5kUG9vbCA9IGRldmljZS0+Y21kX3Bvb2w7CisgIGNtZF9pbmZvLmxldmVsID0gVktfQ09NTUFORF9CVUZGRVJfTEVWRUxfUFJJTUFSWTsKKyAgY21kX2luZm8uY29tbWFuZEJ1ZmZlckNvdW50ID0gMTsKKworICBlcnIgPSB2a0FsbG9jYXRlQ29tbWFuZEJ1ZmZlcnMgKGRldmljZS0+ZGV2aWNlLCAmY21kX2luZm8sIGNtZCk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a0NyZWF0ZUNvbW1hbmRCdWZmZXIiKSA8IDApCisgICAgcmV0dXJuIEZBTFNFOworCisgIEdTVF9MT0dfT0JKRUNUIChkZXZpY2UsICJjcmVhdGVkIGNtZCBidWZmZXIgJXAiLCBjbWQpOworCisgIHJldHVybiBUUlVFOworfQorCisvKioKKyAqIGdzdF9jb250ZXh0X3NldF92dWxrYW5fZGV2aWNlOgorICogQGNvbnRleHQ6IGEgI0dzdENvbnRleHQKKyAqIEBkZXZpY2U6IGEgI0dzdFZ1bGthbkRldmljZQorICoKKyAqIFNldHMgQGRldmljZSBvbiBAY29udGV4dAorICoKKyAqIFNpbmNlOiAxLjEwCisgKi8KK3ZvaWQKK2dzdF9jb250ZXh0X3NldF92dWxrYW5fZGV2aWNlIChHc3RDb250ZXh0ICogY29udGV4dCwgR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlKQoreworICBHc3RTdHJ1Y3R1cmUgKnM7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAoY29udGV4dCAhPSBOVUxMKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoZ3N0X2NvbnRleHRfaXNfd3JpdGFibGUgKGNvbnRleHQpKTsKKworICBpZiAoZGV2aWNlKQorICAgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0NPTlRFWFQsCisgICAgICAgICJzZXR0aW5nIEdzdFZ1bGthbkRldmljZSglIiBHU1RfUFRSX0ZPUk1BVCAiKSBvbiBjb250ZXh0KCUiCisgICAgICAgIEdTVF9QVFJfRk9STUFUICIpIiwgZGV2aWNlLCBjb250ZXh0KTsKKworICBzID0gZ3N0X2NvbnRleHRfd3JpdGFibGVfc3RydWN0dXJlIChjb250ZXh0KTsKKyAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsIEdTVF9WVUxLQU5fREVWSUNFX0NPTlRFWFRfVFlQRV9TVFIsCisgICAgICBHU1RfVFlQRV9WVUxLQU5fREVWSUNFLCBkZXZpY2UsIE5VTEwpOworfQorCisvKioKKyAqIGdzdF9jb250ZXh0X2dldF92dWxrYW5fZGV2aWNlOgorICogQGNvbnRleHQ6IGEgI0dzdENvbnRleHQKKyAqIEBkZXZpY2U6IHJlc3VsdGluZyAjR3N0VnVsa2FuRGV2aWNlCisgKgorICogUmV0dXJuczogV2hldGhlciBAZGV2aWNlIHdhcyBpbiBAY29udGV4dAorICoKKyAqIFNpbmNlOiAxLjEwCisgKi8KK2dib29sZWFuCitnc3RfY29udGV4dF9nZXRfdnVsa2FuX2RldmljZSAoR3N0Q29udGV4dCAqIGNvbnRleHQsIEdzdFZ1bGthbkRldmljZSAqKiBkZXZpY2UpCit7CisgIGNvbnN0IEdzdFN0cnVjdHVyZSAqczsKKyAgZ2Jvb2xlYW4gcmV0OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkZXZpY2UgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoY29udGV4dCAhPSBOVUxMLCBGQUxTRSk7CisKKyAgcyA9IGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1cmUgKGNvbnRleHQpOworICByZXQgPSBnc3Rfc3RydWN0dXJlX2dldCAocywgR1NUX1ZVTEtBTl9ERVZJQ0VfQ09OVEVYVF9UWVBFX1NUUiwKKyAgICAgIEdTVF9UWVBFX1ZVTEtBTl9ERVZJQ0UsIGRldmljZSwgTlVMTCk7CisKKyAgR1NUX0NBVF9MT0cgKEdTVF9DQVRfQ09OVEVYVCwgImdvdCBHc3RWdWxrYW5EZXZpY2UoJSIgR1NUX1BUUl9GT1JNQVQKKyAgICAgICIpIGZyb20gY29udGV4dCglIiBHU1RfUFRSX0ZPUk1BVCAiKSIsICpkZXZpY2UsIGNvbnRleHQpOworCisgIHJldHVybiByZXQ7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX2RldmljZV9oYW5kbGVfY29udGV4dF9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFF1ZXJ5ICogcXVlcnksCisgICAgR3N0VnVsa2FuRGV2aWNlICoqIGRldmljZSkKK3sKKyAgZ2Jvb2xlYW4gcmVzID0gRkFMU0U7CisgIGNvbnN0IGdjaGFyICpjb250ZXh0X3R5cGU7CisgIEdzdENvbnRleHQgKmNvbnRleHQsICpvbGRfY29udGV4dDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZWxlbWVudCAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChxdWVyeSAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfUVVFUllfVFlQRSAocXVlcnkpID09IEdTVF9RVUVSWV9DT05URVhULCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkZXZpY2UgIT0gTlVMTCwgRkFMU0UpOworCisgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0X3R5cGUgKHF1ZXJ5LCAmY29udGV4dF90eXBlKTsKKworICBpZiAoZ19zdHJjbXAwIChjb250ZXh0X3R5cGUsIEdTVF9WVUxLQU5fREVWSUNFX0NPTlRFWFRfVFlQRV9TVFIpID09IDApIHsKKyAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZvbGRfY29udGV4dCk7CisKKyAgICBpZiAob2xkX2NvbnRleHQpCisgICAgICBjb250ZXh0ID0gZ3N0X2NvbnRleHRfY29weSAob2xkX2NvbnRleHQpOworICAgIGVsc2UKKyAgICAgIGNvbnRleHQgPSBnc3RfY29udGV4dF9uZXcgKEdTVF9WVUxLQU5fREVWSUNFX0NPTlRFWFRfVFlQRV9TVFIsIFRSVUUpOworCisgICAgZ3N0X2NvbnRleHRfc2V0X3Z1bGthbl9kZXZpY2UgKGNvbnRleHQsICpkZXZpY2UpOworICAgIGdzdF9xdWVyeV9zZXRfY29udGV4dCAocXVlcnksIGNvbnRleHQpOworICAgIGdzdF9jb250ZXh0X3VucmVmIChjb250ZXh0KTsKKworICAgIHJlcyA9ICpkZXZpY2UgIT0gTlVMTDsKKyAgfQorCisgIHJldHVybiByZXM7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX2RldmljZV9ydW5fY29udGV4dF9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgR3N0VnVsa2FuRGV2aWNlICoqIGRldmljZSkKK3sKKyAgR3N0UXVlcnkgKnF1ZXJ5OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfRUxFTUVOVCAoZWxlbWVudCksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRldmljZSAhPSBOVUxMLCBGQUxTRSk7CisKKyAgaWYgKCpkZXZpY2UgJiYgR1NUX0lTX1ZVTEtBTl9ERVZJQ0UgKCpkZXZpY2UpKQorICAgIHJldHVybiBUUlVFOworCisgIGlmICgocXVlcnkgPQorICAgICAgICAgIGdzdF92dWxrYW5fbG9jYWxfY29udGV4dF9xdWVyeSAoZWxlbWVudCwKKyAgICAgICAgICAgICAgR1NUX1ZVTEtBTl9ERVZJQ0VfQ09OVEVYVF9UWVBFX1NUUiwgRkFMU0UpKSkgeworICAgIEdzdENvbnRleHQgKmNvbnRleHQ7CisKKyAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZjb250ZXh0KTsKKyAgICBpZiAoY29udGV4dCkKKyAgICAgIGdzdF9jb250ZXh0X2dldF92dWxrYW5fZGV2aWNlIChjb250ZXh0LCBkZXZpY2UpOworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoZWxlbWVudCwgImZvdW5kIGRldmljZSAlcCIsICpkZXZpY2UpOworCisgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworCisgIGlmICgqZGV2aWNlKQorICAgIHJldHVybiBUUlVFOworCisgIHJldHVybiBGQUxTRTsKK30KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtkZXZpY2UuaCBiL2V4dC92dWxrYW4vdmtkZXZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmIxMDY1Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a2RldmljZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfVktfREVWSUNFX0hfCisjZGVmaW5lIF9WS19ERVZJQ0VfSF8KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlICJ2ay5oIgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfVlVMS0FOX0RFVklDRSAgICAgICAgIChnc3RfdnVsa2FuX2RldmljZV9nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfVlVMS0FOX0RFVklDRShvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX1RZUEVfVlVMS0FOX0RFVklDRSwgR3N0VnVsa2FuRGV2aWNlKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ERVZJQ0VfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoayksIEdTVF9UWVBFX1ZVTEtBTl9ERVZJQ0UsIEdzdFZ1bGthbkRldmljZUNsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9ERVZJQ0UobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9UWVBFX1ZVTEtBTl9ERVZJQ0UpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX0RFVklDRV9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX1RZUEVfVlVMS0FOX0RFVklDRSkpCisjZGVmaW5lIEdTVF9WVUxLQU5fREVWSUNFX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9UWVBFX1ZVTEtBTl9ERVZJQ0UsIEdzdFZ1bGthbkRldmljZUNsYXNzKSkKK0dUeXBlIGdzdF92dWxrYW5fZGV2aWNlX2dldF90eXBlICAgICAgICh2b2lkKTsKKworI2RlZmluZSBHU1RfVlVMS0FOX0RFVklDRV9DT05URVhUX1RZUEVfU1RSICJnc3QudnVsa2FuLmRldmljZSIKKwordHlwZWRlZiBnYm9vbGVhbiAoKkdzdFZ1bGthbkRldmljZUZvckVhY2hRdWV1ZUZ1bmMpIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIEdzdFZ1bGthblF1ZXVlICogcXVldWUsIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKK3N0cnVjdCBfR3N0VnVsa2FuRGV2aWNlCit7CisgIEdzdE9iamVjdCBwYXJlbnQ7CisKKyAgR3N0VnVsa2FuSW5zdGFuY2UgKmluc3RhbmNlOworCisgIGd1aW50IGRldmljZV9pbmRleDsKKyAgVmtEZXZpY2UgZGV2aWNlOyAvKiBoaWRlcyBhIHBvaW50ZXIgKi8KKyAgVmtQaHlzaWNhbERldmljZVByb3BlcnRpZXMgZ3B1X3Byb3BzOworICBWa1BoeXNpY2FsRGV2aWNlRmVhdHVyZXMgZ3B1X2ZlYXR1cmVzOworICBWa1BoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGllcyBtZW1vcnlfcHJvcGVydGllczsKKworICBWa1F1ZXVlRmFtaWx5UHJvcGVydGllcyAqcXVldWVfZmFtaWx5X3Byb3BzOworICBndWludDMyIG5fcXVldWVfZmFtaWxpZXM7CisKKyAgZ3VpbnQzMiBxdWV1ZV9mYW1pbHlfaWQ7CisgIGd1aW50MzIgbl9xdWV1ZXM7CisKKyAgVmtDb21tYW5kUG9vbCBjbWRfcG9vbDsKKworICBHc3RWdWxrYW5EZXZpY2VQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9Hc3RWdWxrYW5EZXZpY2VDbGFzcworeworICBHc3RPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitHc3RWdWxrYW5EZXZpY2UgKiAgIGdzdF92dWxrYW5fZGV2aWNlX25ldyAgICAgICAgICAgICAgICAgICAoR3N0VnVsa2FuSW5zdGFuY2UgKiBpbnN0YW5jZSk7CitHc3RWdWxrYW5JbnN0YW5jZSAqIGdzdF92dWxrYW5fZGV2aWNlX2dldF9pbnN0YW5jZSAgICAgICAgICAgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSk7CitnYm9vbGVhbiAgICAgICAgICAgIGdzdF92dWxrYW5fZGV2aWNlX29wZW4gICAgICAgICAgICAgICAgICAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnJvcik7CisKK2dwb2ludGVyICAgICAgICAgICAgZ3N0X3Z1bGthbl9kZXZpY2VfZ2V0X3Byb2NfYWRkcmVzcyAgICAgIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBuYW1lKTsKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X3Z1bGthbl9kZXZpY2VfZm9yZWFjaF9xdWV1ZSAgICAgICAgIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuRGV2aWNlRm9yRWFjaFF1ZXVlRnVuYyBmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7CitHc3RWdWxrYW5RdWV1ZSAqICAgIGdzdF92dWxrYW5fZGV2aWNlX2dldF9xdWV1ZSAgICAgICAgICAgICAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgcXVldWVfZmFtaWx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgcXVldWVfaSk7CitWa1BoeXNpY2FsRGV2aWNlICAgIGdzdF92dWxrYW5fZGV2aWNlX2dldF9waHlzaWNhbF9kZXZpY2UgICAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlKTsKK2dib29sZWFuICAgICAgICAgICAgZ3N0X3Z1bGthbl9kZXZpY2VfY3JlYXRlX2NtZF9idWZmZXIgICAgIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtDb21tYW5kQnVmZmVyICogY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnJvcik7CisKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X2NvbnRleHRfc2V0X3Z1bGthbl9kZXZpY2UgICAgICAgICAgIChHc3RDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UpOworZ2Jvb2xlYW4gICAgICAgICAgICBnc3RfY29udGV4dF9nZXRfdnVsa2FuX2RldmljZSAgICAgICAgICAgKEdzdENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthbkRldmljZSAqKiBkZXZpY2UpOworZ2Jvb2xlYW4gICAgICAgICAgICBnc3RfdnVsa2FuX2RldmljZV9oYW5kbGVfY29udGV4dF9xdWVyeSAgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFF1ZXJ5ICogcXVlcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuRGV2aWNlICoqIGRldmljZSk7CitnYm9vbGVhbiAgICAgICAgICAgIGdzdF92dWxrYW5fZGV2aWNlX3J1bl9jb250ZXh0X3F1ZXJ5ICAgICAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuRGV2aWNlICoqIGRldmljZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfVktfREVWSUNFX0hfICovCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrZGlzcGxheS5jIGIvZXh0L3Z1bGthbi92a2Rpc3BsYXkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDY2ODIxCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a2Rpc3BsYXkuYwpAQCAtMCwwICsxLDQ2NiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDA3IERhdmlkIEEuIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4IEp1bGllbiBJc29yY2UgPGp1bGllbi5pc29yY2VAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IEZpbGlwcG8gQXJnaW9sYXMgPGZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDEzIE1hdHRoZXcgV2F0ZXJzIDx5c3RyZWV0MDBAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgInZrZGlzcGxheS5oIgorCisjaWYgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19YMTEKKyNpbmNsdWRlICJ4MTEvdmtkaXNwbGF5X3gxMS5oIgorI2VuZGlmCisjaWYgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19YQ0IKKyNpbmNsdWRlICJ4Y2IvdmtkaXNwbGF5X3hjYi5oIgorI2VuZGlmCisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfQ09OVEVYVCk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfdnVsa2FuX2Rpc3BsYXlfZGVidWcKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfREVGQVVMVCk7CisKK3N0YXRpYyB2b2lkCitfaW5pdF9kZWJ1ZyAodm9pZCkKK3sKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9ERUZBVUxULCAidnVsa2FuZGlzcGxheSIsIDAsCisgICAgICAgICJWdWxrYW4gZGlzcGxheSIpOworICAgIEdTVF9ERUJVR19DQVRFR09SWV9HRVQgKEdTVF9DQVRfQ09OVEVYVCwgIkdTVF9DT05URVhUIik7CisgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZfaW5pdCwgMSk7CisgIH0KK30KKworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdFZ1bGthbkRpc3BsYXksIGdzdF92dWxrYW5fZGlzcGxheSwgR1NUX1RZUEVfT0JKRUNULAorICAgIF9pbml0X2RlYnVnICgpKTsKKworI2RlZmluZSBHU1RfVlVMS0FOX0RJU1BMQVlfR0VUX1BSSVZBVEUobykgXAorICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvKSwgR1NUX1RZUEVfVlVMS0FOX0RJU1BMQVksIEdzdFZ1bGthbkRpc3BsYXlQcml2YXRlKSkKKworZW51bQoreworICBTSUdOQUxfMCwKKyAgQ1JFQVRFX0NPTlRFWFQsCisgIExBU1RfU0lHTkFMCit9OworCisvKiBzdGF0aWMgZ3VpbnQgZ3N0X3Z1bGthbl9kaXNwbGF5X3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwIH07ICovCisKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5fZGlzcGxheV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CitzdGF0aWMgZ3BvaW50ZXIgZ3N0X3Z1bGthbl9kaXNwbGF5X2RlZmF1bHRfZ2V0X2hhbmRsZSAoR3N0VnVsa2FuRGlzcGxheSAqCisgICAgZGlzcGxheSk7CitzdGF0aWMgR3N0VnVsa2FuV2luZG93CisgICAgKiBnc3RfdnVsa2FuX2Rpc3BsYXlfZGVmYXVsdF9jcmVhdGVfd2luZG93IChHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSk7CisKK3N0cnVjdCBfR3N0VnVsa2FuRGlzcGxheVByaXZhdGUKK3sKKyAgR1RocmVhZCAqZXZlbnRfdGhyZWFkOworCisgIEdNdXRleCB0aHJlYWRfbG9jazsKKyAgR0NvbmQgdGhyZWFkX2NvbmQ7Cit9OworCitzdGF0aWMgZ3BvaW50ZXIKK19ldmVudF90aHJlYWRfbWFpbiAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpCit7CisgIGdfbXV0ZXhfbG9jayAoJmRpc3BsYXktPnByaXYtPnRocmVhZF9sb2NrKTsKKworICBkaXNwbGF5LT5tYWluX2NvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcgKCk7CisgIGRpc3BsYXktPm1haW5fbG9vcCA9IGdfbWFpbl9sb29wX25ldyAoZGlzcGxheS0+bWFpbl9jb250ZXh0LCBGQUxTRSk7CisKKyAgZ19jb25kX2Jyb2FkY2FzdCAoJmRpc3BsYXktPnByaXYtPnRocmVhZF9jb25kKTsKKyAgZ19tdXRleF91bmxvY2sgKCZkaXNwbGF5LT5wcml2LT50aHJlYWRfbG9jayk7CisKKyAgZ19tYWluX2xvb3BfcnVuIChkaXNwbGF5LT5tYWluX2xvb3ApOworCisgIGdfbXV0ZXhfbG9jayAoJmRpc3BsYXktPnByaXYtPnRocmVhZF9sb2NrKTsKKworICBnX21haW5fbG9vcF91bnJlZiAoZGlzcGxheS0+bWFpbl9sb29wKTsKKyAgZ19tYWluX2NvbnRleHRfdW5yZWYgKGRpc3BsYXktPm1haW5fY29udGV4dCk7CisKKyAgZGlzcGxheS0+bWFpbl9sb29wID0gTlVMTDsKKyAgZGlzcGxheS0+bWFpbl9jb250ZXh0ID0gTlVMTDsKKworICBnX2NvbmRfYnJvYWRjYXN0ICgmZGlzcGxheS0+cHJpdi0+dGhyZWFkX2NvbmQpOworICBnX211dGV4X3VubG9jayAoJmRpc3BsYXktPnByaXYtPnRocmVhZF9sb2NrKTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fZGlzcGxheV9jbGFzc19pbml0IChHc3RWdWxrYW5EaXNwbGF5Q2xhc3MgKiBrbGFzcykKK3sKKyAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlIChrbGFzcywgc2l6ZW9mIChHc3RWdWxrYW5EaXNwbGF5UHJpdmF0ZSkpOworCisgIGtsYXNzLT5nZXRfaGFuZGxlID0gZ3N0X3Z1bGthbl9kaXNwbGF5X2RlZmF1bHRfZ2V0X2hhbmRsZTsKKyAga2xhc3MtPmNyZWF0ZV93aW5kb3cgPSBnc3RfdnVsa2FuX2Rpc3BsYXlfZGVmYXVsdF9jcmVhdGVfd2luZG93OworCisgIEdfT0JKRUNUX0NMQVNTIChrbGFzcyktPmZpbmFsaXplID0gZ3N0X3Z1bGthbl9kaXNwbGF5X2ZpbmFsaXplOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9kaXNwbGF5X2luaXQgKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KQoreworICBkaXNwbGF5LT5wcml2ID0gR1NUX1ZVTEtBTl9ESVNQTEFZX0dFVF9QUklWQVRFIChkaXNwbGF5KTsKKyAgZGlzcGxheS0+dHlwZSA9IEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX0FOWTsKKworICBnX211dGV4X2luaXQgKCZkaXNwbGF5LT5wcml2LT50aHJlYWRfbG9jayk7CisgIGdfY29uZF9pbml0ICgmZGlzcGxheS0+cHJpdi0+dGhyZWFkX2NvbmQpOworCisgIGRpc3BsYXktPnByaXYtPmV2ZW50X3RocmVhZCA9IGdfdGhyZWFkX25ldyAoInZrZGlzcGxheS1ldmVudCIsCisgICAgICAoR1RocmVhZEZ1bmMpIF9ldmVudF90aHJlYWRfbWFpbiwgZGlzcGxheSk7CisKKyAgZ19tdXRleF9sb2NrICgmZGlzcGxheS0+cHJpdi0+dGhyZWFkX2xvY2spOworICB3aGlsZSAoIWRpc3BsYXktPm1haW5fbG9vcCkKKyAgICBnX2NvbmRfd2FpdCAoJmRpc3BsYXktPnByaXYtPnRocmVhZF9jb25kLCAmZGlzcGxheS0+cHJpdi0+dGhyZWFkX2xvY2spOworICBnX211dGV4X3VubG9jayAoJmRpc3BsYXktPnByaXYtPnRocmVhZF9sb2NrKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fZGlzcGxheV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0VnVsa2FuRGlzcGxheSAqZGlzcGxheSA9IEdTVF9WVUxLQU5fRElTUExBWSAob2JqZWN0KTsKKworICBnX211dGV4X2xvY2sgKCZkaXNwbGF5LT5wcml2LT50aHJlYWRfbG9jayk7CisgIGlmIChkaXNwbGF5LT5tYWluX2NvbnRleHQgJiYgZGlzcGxheS0+ZXZlbnRfc291cmNlKSB7CisgICAgZ19zb3VyY2VfZGVzdHJveSAoZGlzcGxheS0+ZXZlbnRfc291cmNlKTsKKyAgICBnX3NvdXJjZV91bnJlZiAoZGlzcGxheS0+ZXZlbnRfc291cmNlKTsKKyAgfQorICBkaXNwbGF5LT5ldmVudF9zb3VyY2UgPSBOVUxMOworCisgIGlmIChkaXNwbGF5LT5tYWluX2xvb3ApCisgICAgZ19tYWluX2xvb3BfcXVpdCAoZGlzcGxheS0+bWFpbl9sb29wKTsKKworICB3aGlsZSAoZGlzcGxheS0+bWFpbl9sb29wKQorICAgIGdfY29uZF93YWl0ICgmZGlzcGxheS0+cHJpdi0+dGhyZWFkX2NvbmQsICZkaXNwbGF5LT5wcml2LT50aHJlYWRfbG9jayk7CisKKyAgaWYgKGRpc3BsYXktPnByaXYtPmV2ZW50X3RocmVhZCkKKyAgICBnX3RocmVhZF91bnJlZiAoZGlzcGxheS0+cHJpdi0+ZXZlbnRfdGhyZWFkKTsKKyAgZGlzcGxheS0+cHJpdi0+ZXZlbnRfdGhyZWFkID0gTlVMTDsKKyAgZ19tdXRleF91bmxvY2sgKCZkaXNwbGF5LT5wcml2LT50aHJlYWRfbG9jayk7CisKKyAgaWYgKGRpc3BsYXktPmluc3RhbmNlKSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoZGlzcGxheS0+aW5zdGFuY2UpOworICB9CisKKyAgR19PQkpFQ1RfQ0xBU1MgKGdzdF92dWxrYW5fZGlzcGxheV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworR3N0VnVsa2FuRGlzcGxheSAqCitnc3RfdnVsa2FuX2Rpc3BsYXlfbmV3X3dpdGhfdHlwZSAoR3N0VnVsa2FuSW5zdGFuY2UgKiBpbnN0YW5jZSwKKyAgICBHc3RWdWxrYW5EaXNwbGF5VHlwZSB0eXBlKQoreworICBHc3RWdWxrYW5EaXNwbGF5ICpkaXNwbGF5ID0gTlVMTDsKKworICBfaW5pdF9kZWJ1ZyAoKTsKKworI2lmIEdTVF9WVUxLQU5fSEFWRV9XSU5ET1dfWENCCisgIGlmICghZGlzcGxheSAmJiB0eXBlICYgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfWENCKSB7CisgICAgZGlzcGxheSA9IEdTVF9WVUxLQU5fRElTUExBWSAoZ3N0X3Z1bGthbl9kaXNwbGF5X3hjYl9uZXcgKE5VTEwpKTsKKyAgfQorI2VuZGlmCisKKyAgaWYgKGRpc3BsYXkpCisgICAgZGlzcGxheS0+aW5zdGFuY2UgPSBnc3Rfb2JqZWN0X3JlZiAoaW5zdGFuY2UpOworCisgIHJldHVybiBkaXNwbGF5OworfQorCisvKioKKyAqIGdzdF92dWxrYW5fZGlzcGxheV9uZXc6CisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyAjR3N0VnVsa2FuRGlzcGxheQorICoKKyAqIFNpbmNlOiAxLjEwCisgKi8KK0dzdFZ1bGthbkRpc3BsYXkgKgorZ3N0X3Z1bGthbl9kaXNwbGF5X25ldyAoR3N0VnVsa2FuSW5zdGFuY2UgKiBpbnN0YW5jZSkKK3sKKyAgR3N0VnVsa2FuRGlzcGxheVR5cGUgdHlwZTsKKyAgR3N0VnVsa2FuRGlzcGxheSAqZGlzcGxheSA9IE5VTEw7CisKKyAgdHlwZSA9IGdzdF92dWxrYW5fZGlzcGxheV9jaG9vc2VfdHlwZSAoaW5zdGFuY2UpOworICBkaXNwbGF5ID0gZ3N0X3Z1bGthbl9kaXNwbGF5X25ld193aXRoX3R5cGUgKGluc3RhbmNlLCB0eXBlKTsKKworICBpZiAoIWRpc3BsYXkpIHsKKyAgICAvKiBzdWJjbGFzcyByZXR1cm5lZCBhIE5VTEwgZGlzcGxheSAqLworICAgIEdTVF9GSVhNRSAoImNyZWF0aW5nIGR1bW15IGRpc3BsYXkiKTsKKworICAgIGRpc3BsYXkgPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZLCBOVUxMKTsKKyAgICBkaXNwbGF5LT5pbnN0YW5jZSA9IGdzdF9vYmplY3RfcmVmIChpbnN0YW5jZSk7CisgIH0KKworICByZXR1cm4gZGlzcGxheTsKK30KKworLyoqCisgKiBnc3RfdnVsa2FuX2Rpc3BsYXlfZ2V0X2hhbmRsZToKKyAqIEBkaXNwbGF5OiBhICNHc3RWdWxrYW5EaXNwbGF5CisgKgorICogUmV0dXJuczogdGhlIHdpbnN5cyBzcGVjaWZpYyBoYW5kbGUgb2YgQGRpc3BsYXkKKyAqCisgKiBTaW5jZTogMS4xMAorICovCitncG9pbnRlcgorZ3N0X3Z1bGthbl9kaXNwbGF5X2dldF9oYW5kbGUgKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KQoreworICBHc3RWdWxrYW5EaXNwbGF5Q2xhc3MgKmtsYXNzOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfVlVMS0FOX0RJU1BMQVkgKGRpc3BsYXkpLCBOVUxMKTsKKyAga2xhc3MgPSBHU1RfVlVMS0FOX0RJU1BMQVlfR0VUX0NMQVNTIChkaXNwbGF5KTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGtsYXNzLT5nZXRfaGFuZGxlICE9IE5VTEwsIE5VTEwpOworCisgIHJldHVybiBrbGFzcy0+Z2V0X2hhbmRsZSAoZGlzcGxheSk7Cit9CisKK3N0YXRpYyBncG9pbnRlcgorZ3N0X3Z1bGthbl9kaXNwbGF5X2RlZmF1bHRfZ2V0X2hhbmRsZSAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpCit7CisgIHJldHVybiAwOworfQorCisvKioKKyAqIGdzdF92dWxrYW5fZGlzcGxheV9nZXRfaGFuZGxlX3R5cGU6CisgKiBAZGlzcGxheTogYSAjR3N0VnVsa2FuRGlzcGxheQorICoKKyAqIFJldHVybnM6IHRoZSAjR3N0VnVsa2FuRGlzcGxheVR5cGUgb2YgQGRpc3BsYXkKKyAqCisgKiBTaW5jZTogMS4xMAorICovCitHc3RWdWxrYW5EaXNwbGF5VHlwZQorZ3N0X3Z1bGthbl9kaXNwbGF5X2dldF9oYW5kbGVfdHlwZSAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfVlVMS0FOX0RJU1BMQVkgKGRpc3BsYXkpLAorICAgICAgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfTk9ORSk7CisKKyAgcmV0dXJuIGRpc3BsYXktPnR5cGU7Cit9CisKKy8qKgorICogZ3N0X3Z1bGthbl9kaXNwbGF5X2NyZWF0ZV93aW5kb3c6CisgKiBAZGlzcGxheTogYSAjR3N0VnVsa2FuRGlzcGxheQorICoKKyAqIFJldHVybnM6IGEgbmV3ICNHc3RWdWxrYW5XaW5kb3cgZm9yIEBkaXNwbGF5IG9yICVOVUxMLgorICovCitHc3RWdWxrYW5XaW5kb3cgKgorZ3N0X3Z1bGthbl9kaXNwbGF5X2NyZWF0ZV93aW5kb3cgKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KQoreworICBHc3RWdWxrYW5EaXNwbGF5Q2xhc3MgKmtsYXNzOworICBHc3RWdWxrYW5XaW5kb3cgKndpbmRvdzsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1ZVTEtBTl9ESVNQTEFZIChkaXNwbGF5KSwgTlVMTCk7CisgIGtsYXNzID0gR1NUX1ZVTEtBTl9ESVNQTEFZX0dFVF9DTEFTUyAoZGlzcGxheSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChrbGFzcy0+Y3JlYXRlX3dpbmRvdyAhPSBOVUxMLCBOVUxMKTsKKworICB3aW5kb3cgPSBrbGFzcy0+Y3JlYXRlX3dpbmRvdyAoZGlzcGxheSk7CisKKyAgaWYgKHdpbmRvdykgeworICAgIEdTVF9PQkpFQ1RfTE9DSyAoZGlzcGxheSk7CisgICAgZGlzcGxheS0+d2luZG93cyA9IGdfbGlzdF9wcmVwZW5kIChkaXNwbGF5LT53aW5kb3dzLCB3aW5kb3cpOworICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChkaXNwbGF5KTsKKyAgfQorCisgIHJldHVybiB3aW5kb3c7Cit9CisKK3N0YXRpYyBHc3RWdWxrYW5XaW5kb3cgKgorZ3N0X3Z1bGthbl9kaXNwbGF5X2RlZmF1bHRfY3JlYXRlX3dpbmRvdyAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpCit7CisgIHJldHVybiBnc3RfdnVsa2FuX3dpbmRvd19uZXcgKGRpc3BsYXkpOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9kaXNwbGF5X3JlbW92ZV93aW5kb3cgKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5LAorICAgIEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdykKK3sKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisgIEdMaXN0ICpsOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoZGlzcGxheSk7CisgIGwgPSBnX2xpc3RfZmluZCAoZGlzcGxheS0+d2luZG93cywgd2luZG93KTsKKyAgaWYgKGwpIHsKKyAgICBkaXNwbGF5LT53aW5kb3dzID0gZ19saXN0X2RlbGV0ZV9saW5rIChkaXNwbGF5LT53aW5kb3dzLCBsKTsKKyAgICByZXQgPSBUUlVFOworICB9CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChkaXNwbGF5KTsKKworICByZXR1cm4gcmV0OworfQorCisvKioKKyAqIGdzdF9jb250ZXh0X3NldF92dWxrYW5fZGlzcGxheToKKyAqIEBjb250ZXh0OiBhICNHc3RDb250ZXh0CisgKiBAZGlzcGxheTogYSAjR3N0VnVsa2FuRGlzcGxheQorICoKKyAqIFNldHMgQGRpc3BsYXkgb24gQGNvbnRleHQKKyAqCisgKiBTaW5jZTogMS4xMAorICovCit2b2lkCitnc3RfY29udGV4dF9zZXRfdnVsa2FuX2Rpc3BsYXkgKEdzdENvbnRleHQgKiBjb250ZXh0LAorICAgIEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KQoreworICBHc3RTdHJ1Y3R1cmUgKnM7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAoY29udGV4dCAhPSBOVUxMKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoZ3N0X2NvbnRleHRfaXNfd3JpdGFibGUgKGNvbnRleHQpKTsKKworICBpZiAoZGlzcGxheSkKKyAgICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9DT05URVhULAorICAgICAgICAic2V0dGluZyBHc3RWdWxrYW5EaXNwbGF5KCUiIEdTVF9QVFJfRk9STUFUICIpIG9uIGNvbnRleHQoJSIKKyAgICAgICAgR1NUX1BUUl9GT1JNQVQgIikiLCBkaXNwbGF5LCBjb250ZXh0KTsKKworICBzID0gZ3N0X2NvbnRleHRfd3JpdGFibGVfc3RydWN0dXJlIChjb250ZXh0KTsKKyAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsIEdTVF9WVUxLQU5fRElTUExBWV9DT05URVhUX1RZUEVfU1RSLAorICAgICAgR1NUX1RZUEVfVlVMS0FOX0RJU1BMQVksIGRpc3BsYXksIE5VTEwpOworfQorCisvKioKKyAqIGdzdF9jb250ZXh0X2dldF92dWxrYW5fZGlzcGxheToKKyAqIEBjb250ZXh0OiBhICNHc3RDb250ZXh0CisgKiBAZGlzcGxheTogcmVzdWx0aW5nICNHc3RWdWxrYW5EaXNwbGF5CisgKgorICogUmV0dXJuczogV2hldGhlciBAZGlzcGxheSB3YXMgaW4gQGNvbnRleHQKKyAqCisgKiBTaW5jZTogMS4xMAorICovCitnYm9vbGVhbgorZ3N0X2NvbnRleHRfZ2V0X3Z1bGthbl9kaXNwbGF5IChHc3RDb250ZXh0ICogY29udGV4dCwKKyAgICBHc3RWdWxrYW5EaXNwbGF5ICoqIGRpc3BsYXkpCit7CisgIGNvbnN0IEdzdFN0cnVjdHVyZSAqczsKKyAgZ2Jvb2xlYW4gcmV0OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkaXNwbGF5ICE9IE5VTEwsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbnRleHQgIT0gTlVMTCwgRkFMU0UpOworCisgIHMgPSBnc3RfY29udGV4dF9nZXRfc3RydWN0dXJlIChjb250ZXh0KTsKKyAgcmV0ID0gZ3N0X3N0cnVjdHVyZV9nZXQgKHMsIEdTVF9WVUxLQU5fRElTUExBWV9DT05URVhUX1RZUEVfU1RSLAorICAgICAgR1NUX1RZUEVfVlVMS0FOX0RJU1BMQVksIGRpc3BsYXksIE5VTEwpOworCisgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0NPTlRFWFQsICJnb3QgR3N0VnVsa2FuRGlzcGxheSglIiBHU1RfUFRSX0ZPUk1BVAorICAgICAgIikgZnJvbSBjb250ZXh0KCUiIEdTVF9QVFJfRk9STUFUICIpIiwgKmRpc3BsYXksIGNvbnRleHQpOworCisgIHJldHVybiByZXQ7Cit9CisKK0dzdFZ1bGthbkRpc3BsYXlUeXBlCitnc3RfdnVsa2FuX2Rpc3BsYXlfY2hvb3NlX3R5cGUgKEdzdFZ1bGthbkluc3RhbmNlICogaW5zdGFuY2UpCit7CisgIGNvbnN0IGdjaGFyICp3aW5kb3dfc3RyOworICBHc3RWdWxrYW5EaXNwbGF5VHlwZSB0eXBlID0gR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfTk9ORTsKKyAgR3N0VnVsa2FuRGlzcGxheVR5cGUgZmlyc3Rfc3VwcG9ydGVkID0gR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfTk9ORTsKKworICB3aW5kb3dfc3RyID0gZ19nZXRlbnYgKCJHU1RfVlVMS0FOX1dJTkRPVyIpOworCisgIC8qIEZJWE1FOiBlbnVtZXJhdGUgaW5zdGFuY2UgZXh0ZW5zaW9ucyBmb3IgdGhlIHN1cHBvcnRlZCB3aW5zeXMnICovCisKKyNkZWZpbmUgQ0hPT1NFX1dJTlNZUyhsbmFtZSx1bmFtZSkgXAorICBHX1NUTVRfU1RBUlQgeyBcCisgICAgaWYgKCF0eXBlICYmIGdfc3RyY21wMCAod2luZG93X3N0ciwgR19TVFJJTkdJRlkgKGxuYW1lKSkgPT0gMCkgeyBcCisgICAgICB0eXBlID0gR19QQVNURShHU1RfVlVMS0FOX0RJU1BMQVlfVFlQRV8sdW5hbWUpOyBcCisgICAgfSBcCisgICAgaWYgKCFmaXJzdF9zdXBwb3J0ZWQpIFwKKyAgICAgIGZpcnN0X3N1cHBvcnRlZCA9IEdfUEFTVEUoR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfLHVuYW1lKTsgXAorICB9IEdfU1RNVF9FTkQKKworI2lmIEdTVF9WVUxLQU5fSEFWRV9XSU5ET1dfWENCCisgIENIT09TRV9XSU5TWVMgKHhjYiwgWENCKTsKKyNlbmRpZgorCisjdW5kZWYgQ0hPT1NFX1dJTlNZUworCisgIGlmICh0eXBlKQorICAgIHJldHVybiB0eXBlOworCisgIGlmIChmaXJzdF9zdXBwb3J0ZWQpCisgICAgcmV0dXJuIGZpcnN0X3N1cHBvcnRlZDsKKworICByZXR1cm4gR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfTk9ORTsKK30KKworY29uc3QgZ2NoYXIgKgorZ3N0X3Z1bGthbl9kaXNwbGF5X3R5cGVfdG9fZXh0ZW5zaW9uX3N0cmluZyAoR3N0VnVsa2FuRGlzcGxheVR5cGUgdHlwZSkKK3sKKyAgaWYgKHR5cGUgPT0gR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfTk9ORSkKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAodHlwZSAmIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1hDQikKKyAgICByZXR1cm4gVktfS0hSX1hDQl9TVVJGQUNFX0VYVEVOU0lPTl9OQU1FOworCisgIHJldHVybiBOVUxMOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9kaXNwbGF5X2hhbmRsZV9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0UXVlcnkgKiBxdWVyeSwKKyAgICBHc3RWdWxrYW5EaXNwbGF5ICoqIGRpc3BsYXkpCit7CisgIGdib29sZWFuIHJlcyA9IEZBTFNFOworICBjb25zdCBnY2hhciAqY29udGV4dF90eXBlOworICBHc3RDb250ZXh0ICpjb250ZXh0LCAqb2xkX2NvbnRleHQ7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGVsZW1lbnQgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAocXVlcnkgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX1FVRVJZX1RZUEUgKHF1ZXJ5KSA9PSBHU1RfUVVFUllfQ09OVEVYVCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGlzcGxheSAhPSBOVUxMLCBGQUxTRSk7CisKKyAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHRfdHlwZSAocXVlcnksICZjb250ZXh0X3R5cGUpOworCisgIGlmIChnX3N0cmNtcDAgKGNvbnRleHRfdHlwZSwgR1NUX1ZVTEtBTl9ESVNQTEFZX0NPTlRFWFRfVFlQRV9TVFIpID09IDApIHsKKyAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZvbGRfY29udGV4dCk7CisKKyAgICBpZiAob2xkX2NvbnRleHQpCisgICAgICBjb250ZXh0ID0gZ3N0X2NvbnRleHRfY29weSAob2xkX2NvbnRleHQpOworICAgIGVsc2UKKyAgICAgIGNvbnRleHQgPSBnc3RfY29udGV4dF9uZXcgKEdTVF9WVUxLQU5fRElTUExBWV9DT05URVhUX1RZUEVfU1RSLCBUUlVFKTsKKworICAgIGdzdF9jb250ZXh0X3NldF92dWxrYW5fZGlzcGxheSAoY29udGV4dCwgKmRpc3BsYXkpOworICAgIGdzdF9xdWVyeV9zZXRfY29udGV4dCAocXVlcnksIGNvbnRleHQpOworICAgIGdzdF9jb250ZXh0X3VucmVmIChjb250ZXh0KTsKKworICAgIHJlcyA9ICpkaXNwbGF5ICE9IE5VTEw7CisgIH0KKworICByZXR1cm4gcmVzOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9kaXNwbGF5X3J1bl9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICBHc3RWdWxrYW5EaXNwbGF5ICoqIGRpc3BsYXkpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfRUxFTUVOVCAoZWxlbWVudCksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRpc3BsYXkgIT0gTlVMTCwgRkFMU0UpOworCisgIGlmICgqZGlzcGxheSAmJiBHU1RfSVNfVlVMS0FOX0RJU1BMQVkgKCpkaXNwbGF5KSkKKyAgICByZXR1cm4gVFJVRTsKKworICBnc3RfdnVsa2FuX2dsb2JhbF9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LAorICAgICAgR1NUX1ZVTEtBTl9ESVNQTEFZX0NPTlRFWFRfVFlQRV9TVFIpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKGVsZW1lbnQsICJmb3VuZCBkaXNwbGF5ICVwIiwgKmRpc3BsYXkpOworCisgIGlmICgqZGlzcGxheSkKKyAgICByZXR1cm4gVFJVRTsKKworICByZXR1cm4gRkFMU0U7Cit9CmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrZGlzcGxheS5oIGIvZXh0L3Z1bGthbi92a2Rpc3BsYXkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGJiYjRmCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a2Rpc3BsYXkuaApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDA3IERhdmlkIEEuIFNjaGxlZWYgPGRzQHNjaGxlZWYub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA4IEp1bGllbiBJc29yY2UgPGp1bGllbi5pc29yY2VAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IEZpbGlwcG8gQXJnaW9sYXMgPGZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDEzIE1hdHRoZXcgV2F0ZXJzIDx5c3RyZWV0MDBAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfVlVMS0FOX0RJU1BMQVlfSF9fCisjZGVmaW5lIF9fR1NUX1ZVTEtBTl9ESVNQTEFZX0hfXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorCisjaW5jbHVkZSA8dmsuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZICAgICAgICAgICAgIChnc3RfdnVsa2FuX2Rpc3BsYXlfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ESVNQTEFZKG9iaikgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZLEdzdFZ1bGthbkRpc3BsYXkpKQorI2RlZmluZSBHU1RfVlVMS0FOX0RJU1BMQVlfQ0xBU1Moa2xhc3MpICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgR1NUX1RZUEVfVlVMS0FOX0RJU1BMQVksR3N0VnVsa2FuRGlzcGxheUNsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9ESVNQTEFZKG9iaikgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9ESVNQTEFZX0NMQVNTKGtsYXNzKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksIEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ESVNQTEFZX0NBU1Qob2JqKSAgICAgICAgKChHc3RWdWxrYW5EaXNwbGF5Kikob2JqKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ESVNQTEFZX0dFVF9DTEFTUyhvKSAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfVFlQRV9WVUxLQU5fRElTUExBWSwgR3N0VnVsa2FuRGlzcGxheUNsYXNzKSkKK0dUeXBlIGdzdF92dWxrYW5fZGlzcGxheV9nZXRfdHlwZSAodm9pZCk7CisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ESVNQTEFZX0NPTlRFWFRfVFlQRV9TVFIgImdzdC52dWxrYW4uZGlzcGxheSIKKworZW51bSBfR3N0VnVsa2FuRGlzcGxheVR5cGUKK3sKKyAgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfTk9ORSA9IDAsCisgIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1gxMSA9ICgxIDw8IDApLAorICBHU1RfVlVMS0FOX0RJU1BMQVlfVFlQRV9YQ0IgPSAoMSA8PCAxKSwKKyAgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfV0FZTEFORCA9ICgxIDw8IDIpLAorICBHU1RfVlVMS0FOX0RJU1BMQVlfVFlQRV9NSVIgPSAoMSA8PCAzKSwKKyAgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfV0lOMzIgPSAoMSA8PCA0KSwKKworICBHU1RfVlVMS0FOX0RJU1BMQVlfVFlQRV9BTlkgPSBHX01BWFVJTlQzMgorfTsKKworLyoqCisgKiBHc3RWdWxrYW5EaXNwbGF5OgorICoKKyAqIFRoZSBjb250ZW50cyBvZiBhICNHc3RWdWxrYW5EaXNwbGF5IGFyZSBwcml2YXRlIGFuZCBzaG91bGQgb25seSBiZSBhY2Nlc3NlZAorICogdGhyb3VnaCB0aGUgcHJvdmlkZWQgQVBJCisgKi8KK3N0cnVjdCBfR3N0VnVsa2FuRGlzcGxheQoreworICAvKiA8cHJpdmF0ZT4gKi8KKyAgR3N0T2JqZWN0ICAgICAgICAgICAgICAgICBvYmplY3Q7CisKKyAgR3N0VnVsa2FuRGlzcGxheVR5cGUgICAgICB0eXBlOworCisgIEdzdFZ1bGthbkluc3RhbmNlICAgICAgICAqaW5zdGFuY2U7CisKKyAgLyogPHByb3RlY3RlZD4gKi8KKyAgR0xpc3QgICAgICAgICAgICAgICAgICAgICp3aW5kb3dzOyAgICAgICAgLyogT0JKRUNUIGxvY2sgKi8KKyAgR01haW5Db250ZXh0ICAgICAgICAgICAgICptYWluX2NvbnRleHQ7CisgIEdNYWluTG9vcCAgICAgICAgICAgICAgICAqbWFpbl9sb29wOworICBHU291cmNlICAgICAgICAgICAgICAgICAgKmV2ZW50X3NvdXJjZTsKKworICAvKiA8cHJpdmF0ZT4gKi8KKyAgR3N0VnVsa2FuRGlzcGxheVByaXZhdGUgICpwcml2OworfTsKKworc3RydWN0IF9Hc3RWdWxrYW5EaXNwbGF5Q2xhc3MKK3sKKyAgR3N0T2JqZWN0Q2xhc3Mgb2JqZWN0X2NsYXNzOworCisgIGdwb2ludGVyICAgICAgICAgICgqZ2V0X2hhbmRsZSkgICAgICAgICAgIChHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSk7CisgIEdzdFZ1bGthbldpbmRvdyAqICgqY3JlYXRlX3dpbmRvdykgICAgICAgIChHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSk7Cit9OworCitHc3RWdWxrYW5EaXNwbGF5ICogICAgICBnc3RfdnVsa2FuX2Rpc3BsYXlfbmV3ICAgICAgICAgICAgICAgICAgICAgIChHc3RWdWxrYW5JbnN0YW5jZSAqaW5zdGFuY2UpOworR3N0VnVsa2FuRGlzcGxheSAqICAgICAgZ3N0X3Z1bGthbl9kaXNwbGF5X25ld193aXRoX3R5cGUgICAgICAgICAgICAoR3N0VnVsa2FuSW5zdGFuY2UgKmluc3RhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuRGlzcGxheVR5cGUgdHlwZSk7CitHc3RWdWxrYW5EaXNwbGF5VHlwZSAgICBnc3RfdnVsa2FuX2Rpc3BsYXlfY2hvb3NlX3R5cGUgICAgICAgICAgICAgIChHc3RWdWxrYW5JbnN0YW5jZSAqaW5zdGFuY2UpOworY29uc3QgZ2NoYXIgKiAgICAgICAgICAgZ3N0X3Z1bGthbl9kaXNwbGF5X3R5cGVfdG9fZXh0ZW5zaW9uX3N0cmluZyAoR3N0VnVsa2FuRGlzcGxheVR5cGUgdHlwZSk7CisKKworZ3BvaW50ZXIgICAgICAgICAgICAgICAgZ3N0X3Z1bGthbl9kaXNwbGF5X2dldF9oYW5kbGUgICAgICAgICAgICAgICAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpOworR3N0VnVsa2FuRGlzcGxheVR5cGUgICAgZ3N0X3Z1bGthbl9kaXNwbGF5X2dldF9oYW5kbGVfdHlwZSAgICAgICAgICAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpOworR3N0VnVsa2FuV2luZG93ICogICAgICAgZ3N0X3Z1bGthbl9kaXNwbGF5X2NyZWF0ZV93aW5kb3cgICAgICAgICAgICAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpOworCitnYm9vbGVhbiAgICAgICAgICAgICAgICBnc3RfY29udGV4dF9nZXRfdnVsa2FuX2Rpc3BsYXkgICAgICAgICAgICAgIChHc3RDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthbkRpc3BsYXkgKiogZGlzcGxheSk7Cit2b2lkICAgICAgICAgICAgICAgICAgICBnc3RfY29udGV4dF9zZXRfdnVsa2FuX2Rpc3BsYXkgICAgICAgICAgICAgIChHc3RDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KTsKK2dib29sZWFuICAgICAgICAgICAgICAgIGdzdF92dWxrYW5fZGlzcGxheV9oYW5kbGVfY29udGV4dF9xdWVyeSAgICAgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0UXVlcnkgKiBxdWVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthbkRpc3BsYXkgKiogZGlzcGxheSk7CitnYm9vbGVhbiAgICAgICAgICAgICAgICBnc3RfdnVsa2FuX2Rpc3BsYXlfcnVuX2NvbnRleHRfcXVlcnkgICAgICAgIChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthbkRpc3BsYXkgKiogZGlzcGxheSk7CisKKy8qIEdzdFZ1bGthbldpbmRvdyB1c2FnZSBvbmx5ICovCitnYm9vbGVhbiAgICAgICAgICAgICAgICBnc3RfdnVsa2FuX2Rpc3BsYXlfcmVtb3ZlX3dpbmRvdyAgICAgICAgICAgIChHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSwgR3N0VnVsa2FuV2luZG93ICogd2luZG93KTsKKworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfVlVMS0FOX0RJU1BMQVlfSF9fICovCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrZXJyb3IuYyBiL2V4dC92dWxrYW4vdmtlcnJvci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZWMyN2UKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZrZXJyb3IuYwpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxnbGliL2dwcmludGYuaD4KKworI2luY2x1ZGUgInZrZXJyb3IuaCIKKworLyogKklOREVOVC1PRkYqICovCitzdGF0aWMgY29uc3Qgc3RydWN0IAoreworICBWa1Jlc3VsdCByZXN1bHQ7CisgIGNvbnN0IGNoYXIgKnN0cjsKK30gdmtfcmVzdWx0X3N0cmluZ19tYXBbXSA9IHsKKyAge1ZLX0VSUk9SX09VVF9PRl9IT1NUX01FTU9SWSwgIk91dCBPZiBob3N0IG1lbW9yeSJ9LAorICB7VktfRVJST1JfT1VUX09GX0RFVklDRV9NRU1PUlksICJPdXQgb2YgZGV2aWNlIG1lbW9yeSJ9LAorICB7VktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVELCAiSW5pdGlhbGl6YXRpb24gZmFpbGVkIn0sCisgIHtWS19FUlJPUl9ERVZJQ0VfTE9TVCwgIkRldmljZSBsb3N0In0sCisgIHtWS19FUlJPUl9NRU1PUllfTUFQX0ZBSUxFRCwgIk1hcCBmYWlsZWQifSwKKyAge1ZLX0VSUk9SX0xBWUVSX05PVF9QUkVTRU5ULCAiTGF5ZXIgbm90IHByZXNlbnQifSwKKyAge1ZLX0VSUk9SX0VYVEVOU0lPTl9OT1RfUFJFU0VOVCwgIkV4dGVuc2lvbiBub3QgcHJlc2VudCJ9LAorICB7VktfRVJST1JfRkVBVFVSRV9OT1RfUFJFU0VOVCwgIkZlYXR1cmUgbm90IHByZXNlbnQifSwKKyAge1ZLX0VSUk9SX0lOQ09NUEFUSUJMRV9EUklWRVIsICJJbmNvbXBhdGlibGUgZHJpdmVyIn0sCisgIHtWS19FUlJPUl9UT09fTUFOWV9PQkpFQ1RTLCAiVG9vIG1hbnkgb2JqZWN0cyJ9LAorICB7VktfRVJST1JfRk9STUFUX05PVF9TVVBQT1JURUQsICJmb3JtYXQgbm90IHN1cHBvcnRlZCJ9LAorICB7VktfRVJST1JfU1VSRkFDRV9MT1NUX0tIUiwgIlN1cmZhY2UgbG9zdCJ9LAorICB7VktfRVJST1JfT1VUX09GX0RBVEVfS0hSLCAib3V0IG9mIGRhdGUifSwKKyAge1ZLX0VSUk9SX0lOQ09NUEFUSUJMRV9ESVNQTEFZX0tIUiwgIkluY29tcGF0aWJsZSBkaXNwbGF5In0sCisgIHtWS19FUlJPUl9OQVRJVkVfV0lORE9XX0lOX1VTRV9LSFIsICJOYXRpdmUgd2luZG93IGluIHVzZSJ9LAorfTsKKy8qICpJTkRFTlQtT04qICovCisKK0dRdWFyaworZ3N0X3Z1bGthbl9lcnJvcl9xdWFyayAodm9pZCkKK3sKKyAgcmV0dXJuIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nICgiZ3N0LXZ1bGthbi1lcnJvciIpOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqCitfdmtfcmVzdWx0X3RvX3N0cmluZyAoVmtSZXN1bHQgcmVzdWx0KQoreworICBpbnQgaTsKKworICBpZiAocmVzdWx0ID49IDApCisgICAgcmV0dXJuIE5VTEw7CisgIGlmIChyZXN1bHQgPCBWS19SRVNVTFRfQkVHSU5fUkFOR0UpCisgICAgcmV0dXJuICJVbmtub3duIEVycm9yIjsKKworICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTICh2a19yZXN1bHRfc3RyaW5nX21hcCk7IGkrKykgeworICAgIGlmIChyZXN1bHQgPT0gdmtfcmVzdWx0X3N0cmluZ19tYXBbaV0ucmVzdWx0KQorICAgICAgcmV0dXJuIHZrX3Jlc3VsdF9zdHJpbmdfbWFwW2ldLnN0cjsKKyAgfQorCisgIHJldHVybiAiVW5rbm93biBFcnJvciI7Cit9CisKK1ZrUmVzdWx0Citnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKFZrUmVzdWx0IHJlc3VsdCwgR0Vycm9yICoqIGVycm9yLAorICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICBjb25zdCBjaGFyICpyZXN1bHRfc3RyOworICBnY2hhciAqc3RyaW5nOworICB2YV9saXN0IGFyZ3M7CisKKyAgaWYgKGVycm9yID09IE5VTEwpCisgICAgLyogd2UgZG9uJ3QgaGF2ZSBhbiBlcnJvciB0byBzZXQgKi8KKyAgICByZXR1cm4gcmVzdWx0OworCisgIHJlc3VsdF9zdHIgPSBfdmtfcmVzdWx0X3RvX3N0cmluZyAocmVzdWx0KTsKKyAgaWYgKHJlc3VsdF9zdHIgPT0gTlVMTCkKKyAgICByZXR1cm4gcmVzdWx0OworCisgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOworICBnX3Zhc3ByaW50ZiAoJnN0cmluZywgZm9ybWF0LCBhcmdzKTsKKyAgdmFfZW5kIChhcmdzKTsKKworICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsIHJlc3VsdCwgIiVzOiAlcyIsIHJlc3VsdF9zdHIsIHN0cmluZyk7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdG9wdXNjb21tb24uaCBiL2V4dC92dWxrYW4vdmtlcnJvci5oCnNpbWlsYXJpdHkgaW5kZXggNjAlCmNvcHkgZnJvbSBleHQvb3B1cy9nc3RvcHVzY29tbW9uLmgKY29weSB0byBleHQvdnVsa2FuL3ZrZXJyb3IuaAppbmRleCA3MTc3MWFlLi43ODhlNjZkIDEwMDY0NAotLS0gYS9leHQvb3B1cy9nc3RvcHVzY29tbW9uLmgKKysrIGIvZXh0L3Z1bGthbi92a2Vycm9yLmgKQEAgLTEsNSArMSw2IEBACi0vKiBHU3RyZWFtZXIgT3B1cyBFbmNvZGVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNywyMSArMTgsMjAgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLQotI2lmbmRlZiBfX0dTVF9PUFVTX0NPTU1PTl9IX18KLSNkZWZpbmUgX19HU1RfT1BVU19DT01NT05fSF9fCisjaWZuZGVmIF9WS19FUlJPUl9IXworI2RlZmluZSBfVktfRVJST1JfSF8KIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KKyNpbmNsdWRlIDx2dWxrYW4vdnVsa2FuLmg+CiAKIEdfQkVHSU5fREVDTFMKIAotZXh0ZXJuIGNvbnN0IEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIGdzdF9vcHVzX2NoYW5uZWxfcG9zaXRpb25zW11bOF07Ci1leHRlcm4gY29uc3QgY2hhciAqZ3N0X29wdXNfY2hhbm5lbF9uYW1lc1tdOwotZXh0ZXJuIHZvaWQgZ3N0X29wdXNfY29tbW9uX2xvZ19jaGFubmVsX21hcHBpbmdfdGFibGUgKEdzdEVsZW1lbnQgKmVsZW1lbnQsCi0gICAgR3N0RGVidWdDYXRlZ29yeSAqIGNhdGVnb3J5LCBjb25zdCBjaGFyICptc2csCi0gICAgaW50IG5fY2hhbm5lbHMsIGNvbnN0IGd1aW50OCAqdGFibGUpOworI2RlZmluZSBHU1RfVlVMS0FOX0VSUk9SIChnc3RfdnVsa2FuX2Vycm9yX3F1YXJrICgpKQorR1F1YXJrIGdzdF92dWxrYW5fZXJyb3JfcXVhcmsgKHZvaWQpOworCisvKiBvbmx5IGZpbGxzIGVycm9yIGlmZiBlcnJvciAhPSBOVUxMIGFuZCByZXN1bHQgPCAwICovCitWa1Jlc3VsdCBnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKFZrUmVzdWx0IHJlc3VsdCwgR0Vycm9yICoqIGVycm9yLCBjb25zdCBjaGFyICogZm9ybWF0LCAuLi4pIEdfR05VQ19QUklOVEYgKDMsIDQpOwogCiBHX0VORF9ERUNMUwogCi0jZW5kaWYgLyogX19HU1RfT1BVU19DT01NT05fSF9fICovCisjZW5kaWYgLyogX1ZLX0lOU1RBTkNFX0hfICovCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYyBiL2V4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMjYzYjAKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYwpAQCAtMCwwICsxLDU2OSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJ2a2ltYWdlbWVtb3J5LmgiCisKKy8qKgorICogU0VDVElPTjp2a2ltYWdlbWVtb3J5CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IG1lbW9yeSBzdWJjbGFzcyBmb3IgVnVsa2FuIGltYWdlIG1lbW9yeQorICogQHNlZV9hbHNvOiAjR3N0TWVtb3J5LCAjR3N0QWxsb2NhdG9yCisgKgorICogR3N0VnVsa2FuSW1hZ2VNZW1vcnkgaXMgYSAjR3N0TWVtb3J5IHN1YmNsYXNzIHByb3ZpZGluZyBzdXBwb3J0IGZvciB0aGUKKyAqIG1hcHBpbmcgb2YgVnVsa2FuIGRldmljZSBtZW1vcnkuCisgKi8KKworI2RlZmluZSBHU1RfQ0FUX0RFRlVBTFQgR1NUX0NBVF9WVUxLQU5fSU1BR0VfTUVNT1JZCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0RFRlVBTFQpOworCitzdGF0aWMgR3N0QWxsb2NhdG9yICpfdnVsa2FuX2ltYWdlX21lbW9yeV9hbGxvY2F0b3I7CisKK1ZrRm9ybWF0Citnc3RfdnVsa2FuX2Zvcm1hdF9mcm9tX3ZpZGVvX2Zvcm1hdCAoR3N0VmlkZW9Gb3JtYXQgdl9mb3JtYXQsIGd1aW50IHBsYW5lKQoreworICBndWludCBuX3BsYW5lX2NvbXBvbmVudHM7CisKKyAgc3dpdGNoICh2X2Zvcm1hdCkgeworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0J4OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1J4OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF94UkdCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF94QkdSOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1JBOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BUkdCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BQkdSOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BWVVWOgorICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gNDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUjoKKyAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IDM7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCMTY6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUjE2OgorICAgICAgcmV0dXJuIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTY7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVkxNl9CRToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfR1JBWTE2X0xFOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVVkyOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9VWVZZOgorICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gMjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjIxOgorICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gcGxhbmUgPT0gMCA/IDEgOiAyOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVk4OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDQ0OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDJCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDFCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9JNDIwOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVjEyOgorICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gMTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBuX3BsYW5lX2NvbXBvbmVudHMgPSA0OworICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICBicmVhazsKKyAgfQorCisgIHN3aXRjaCAobl9wbGFuZV9jb21wb25lbnRzKSB7CisgICAgY2FzZSA0OgorICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsKKyAgICBjYXNlIDM6CisgICAgICByZXR1cm4gVktfRk9STUFUX1I4RzhCOF9VTk9STTsKKyAgICBjYXNlIDI6CisgICAgICByZXR1cm4gVktfRk9STUFUX1I4RzhfVU5PUk07CisgICAgY2FzZSAxOgorICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9SOF9VTk9STTsKKyAgICBkZWZhdWx0OgorICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICByZXR1cm4gVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitfdmlld19jcmVhdGVfaW5mbyAoVmtJbWFnZSBpbWFnZSwgVmtGb3JtYXQgZm9ybWF0LCBWa0ltYWdlVmlld0NyZWF0ZUluZm8gKiBpbmZvKQoreworICBpbmZvLT5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0lNQUdFX1ZJRVdfQ1JFQVRFX0lORk87CisgIGluZm8tPnBOZXh0ID0gTlVMTDsKKyAgaW5mby0+aW1hZ2UgPSBpbWFnZTsKKyAgaW5mby0+Zm9ybWF0ID0gZm9ybWF0OworICBpbmZvLT52aWV3VHlwZSA9IFZLX0lNQUdFX1ZJRVdfVFlQRV8yRDsKKyAgaW5mby0+ZmxhZ3MgPSAwOworCisgIEdTVF9WS19DT01QT05FTlRfTUFQUElORyAoaW5mby0+Y29tcG9uZW50cywgVktfQ09NUE9ORU5UX1NXSVpaTEVfUiwKKyAgICAgIFZLX0NPTVBPTkVOVF9TV0laWkxFX0csIFZLX0NPTVBPTkVOVF9TV0laWkxFX0IsIFZLX0NPTVBPTkVOVF9TV0laWkxFX0EpOworICBHU1RfVktfSU1BR0VfU1VCUkVTT1VSQ0VfUkFOR0UgKGluZm8tPnN1YnJlc291cmNlUmFuZ2UsCisgICAgICBWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCAwLCAxLCAwLCAxKTsKK30KKworc3RhdGljIGdib29sZWFuCitfY3JlYXRlX2luZm9fZnJvbV9hcmdzIChWa0ltYWdlQ3JlYXRlSW5mbyAqIGluZm8sIFZrRm9ybWF0IGZvcm1hdCwgZ3NpemUgd2lkdGgsCisgICAgZ3NpemUgaGVpZ2h0LCBWa0ltYWdlVGlsaW5nIHRpbGluZywgVmtJbWFnZVVzYWdlRmxhZ3MgdXNhZ2UpCit7CisgIC8qIEZJWE1FOiB2YWxpZGF0ZSB0aGVzZSAqLworCisgIGluZm8tPnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfSU1BR0VfQ1JFQVRFX0lORk87CisgIGluZm8tPnBOZXh0ID0gTlVMTDsKKyAgaW5mby0+ZmxhZ3MgPSAwOworICBpbmZvLT5pbWFnZVR5cGUgPSBWS19JTUFHRV9UWVBFXzJEOworICBpbmZvLT5mb3JtYXQgPSBmb3JtYXQ7CisgIEdTVF9WS19FWFRFTlQzRCAoaW5mby0+ZXh0ZW50LCB3aWR0aCwgaGVpZ2h0LCAxKTsKKyAgaW5mby0+bWlwTGV2ZWxzID0gMTsKKyAgaW5mby0+YXJyYXlMYXllcnMgPSAxOworICBpbmZvLT5zYW1wbGVzID0gVktfU0FNUExFX0NPVU5UXzFfQklUOworICBpbmZvLT50aWxpbmcgPSB0aWxpbmc7CisgIGluZm8tPnVzYWdlID0gdXNhZ2U7CisgIGluZm8tPnNoYXJpbmdNb2RlID0gVktfU0hBUklOR19NT0RFX0VYQ0xVU0lWRTsKKyAgaW5mby0+cXVldWVGYW1pbHlJbmRleENvdW50ID0gMDsKKyAgaW5mby0+cFF1ZXVlRmFtaWx5SW5kaWNlcyA9IE5VTEw7CisgIGluZm8tPmluaXRpYWxMYXlvdXQgPSBWS19JTUFHRV9MQVlPVVRfVU5ERUZJTkVEOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorX3ZrX2ltYWdlX21lbV9pbml0IChHc3RWdWxrYW5JbWFnZU1lbW9yeSAqIG1lbSwgR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLAorICAgIEdzdE1lbW9yeSAqIHBhcmVudCwgR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBWa0ltYWdlVXNhZ2VGbGFncyB1c2FnZSwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLCBnc2l6ZSBzaXplLCBncG9pbnRlciB1c2VyX2RhdGEsCisgICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQoreworICBnc2l6ZSBhbGlnbiA9IGdzdF9tZW1vcnlfYWxpZ25tZW50LCBvZmZzZXQgPSAwLCBtYXhzaXplID0gc2l6ZTsKKyAgR3N0TWVtb3J5RmxhZ3MgZmxhZ3MgPSAwOworCisgIGlmIChwYXJhbXMpIHsKKyAgICBmbGFncyA9IHBhcmFtcy0+ZmxhZ3M7CisgICAgYWxpZ24gfD0gcGFyYW1zLT5hbGlnbjsKKyAgICBvZmZzZXQgPSBwYXJhbXMtPnByZWZpeDsKKyAgICBtYXhzaXplICs9IHBhcmFtcy0+cHJlZml4ICsgcGFyYW1zLT5wYWRkaW5nICsgYWxpZ247CisgIH0KKworICBnc3RfbWVtb3J5X2luaXQgKEdTVF9NRU1PUllfQ0FTVCAobWVtKSwgZmxhZ3MsIGFsbG9jYXRvciwgcGFyZW50LCBtYXhzaXplLAorICAgICAgYWxpZ24sIG9mZnNldCwgc2l6ZSk7CisKKyAgbWVtLT5kZXZpY2UgPSBnc3Rfb2JqZWN0X3JlZiAoZGV2aWNlKTsKKyAgbWVtLT5pbWFnZV9sYXlvdXQgPSBWS19JTUFHRV9MQVlPVVRfVU5ERUZJTkVEOworICBtZW0tPnVzYWdlID0gdXNhZ2U7CisgIG1lbS0+d3JhcHBlZCA9IEZBTFNFOworICBtZW0tPm5vdGlmeSA9IG5vdGlmeTsKKyAgbWVtLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CisKKyAgZ19tdXRleF9pbml0ICgmbWVtLT5sb2NrKTsKKworICBHU1RfQ0FUX0RFQlVHIChHU1RfQ0FUX1ZVTEtBTl9JTUFHRV9NRU1PUlksCisgICAgICAibmV3IFZ1bGthbiBJbWFnZSBtZW1vcnk6JXAgc2l6ZTolIiBHX0dTSVpFX0ZPUk1BVCwgbWVtLCBtYXhzaXplKTsKK30KKworc3RhdGljIEdzdFZ1bGthbkltYWdlTWVtb3J5ICoKK192a19pbWFnZV9tZW1fbmV3X2FsbG9jIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIEdzdE1lbW9yeSAqIHBhcmVudCwKKyAgICBHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIFZrRm9ybWF0IGZvcm1hdCwgZ3NpemUgd2lkdGgsIGdzaXplIGhlaWdodCwKKyAgICBWa0ltYWdlVGlsaW5nIHRpbGluZywgVmtJbWFnZVVzYWdlRmxhZ3MgdXNhZ2UsCisgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIG1lbV9wcm9wX2ZsYWdzLCBncG9pbnRlciB1c2VyX2RhdGEsCisgICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQoreworICBHc3RWdWxrYW5JbWFnZU1lbW9yeSAqbWVtID0gTlVMTDsKKyAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXMgPSB7IDAsIH07CisgIFZrSW1hZ2VWaWV3Q3JlYXRlSW5mbyB2aWV3X2luZm87CisgIFZrSW1hZ2VDcmVhdGVJbmZvIGltYWdlX2luZm87CisgIFZrUGh5c2ljYWxEZXZpY2UgZ3B1OworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgZ3VpbnQzMiB0eXBlX2lkeDsKKyAgVmtJbWFnZSBpbWFnZTsKKyAgVmtSZXN1bHQgZXJyOworCisgIGdwdSA9IGdzdF92dWxrYW5fZGV2aWNlX2dldF9waHlzaWNhbF9kZXZpY2UgKGRldmljZSk7CisgIGlmICghX2NyZWF0ZV9pbmZvX2Zyb21fYXJncyAoJmltYWdlX2luZm8sIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgdGlsaW5nLAorICAgICAgICAgIHVzYWdlKSkgeworICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfVlVMS0FOX0lNQUdFX01FTU9SWSwgIkluY29ycmVjdCBpbWFnZSBwYXJhbWV0ZXJzIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGVyciA9IHZrQ3JlYXRlSW1hZ2UgKGRldmljZS0+ZGV2aWNlLCAmaW1hZ2VfaW5mbywgTlVMTCwgJmltYWdlKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCAmZXJyb3IsICJ2a0NyZWF0ZUltYWdlIikgPCAwKQorICAgIGdvdG8gdmtfZXJyb3I7CisKKyAgbWVtID0gZ19uZXcwIChHc3RWdWxrYW5JbWFnZU1lbW9yeSwgMSk7CisgIF92a19pbWFnZV9tZW1faW5pdCAobWVtLCBhbGxvY2F0b3IsIHBhcmVudCwgZGV2aWNlLCB1c2FnZSwgJnBhcmFtcywKKyAgICAgIG1lbS0+cmVxdWlyZW1lbnRzLnNpemUsIHVzZXJfZGF0YSwgbm90aWZ5KTsKKyAgbWVtLT5jcmVhdGVfaW5mbyA9IGltYWdlX2luZm87CisgIG1lbS0+aW1hZ2UgPSBpbWFnZTsKKworICB2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzIChkZXZpY2UtPmRldmljZSwgaW1hZ2UsICZtZW0tPnJlcXVpcmVtZW50cyk7CisgIGVyciA9IHZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMgKGdwdSwgZm9ybWF0LCBWS19JTUFHRV9UWVBFXzJELAorICAgICAgdGlsaW5nLCB1c2FnZSwgMCwgJm1lbS0+Zm9ybWF0X3Byb3BlcnRpZXMpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsICZlcnJvciwKKyAgICAgICAgICAidmtHZXRQaHlzaWNhbERldmljZUltYWdlRm9ybWF0UHJvcGVydGllcyIpIDwgMCkKKyAgICBnb3RvIHZrX2Vycm9yOworCisgIGlmICghZ3N0X3Z1bGthbl9tZW1vcnlfZmluZF9tZW1vcnlfdHlwZV9pbmRleF93aXRoX3R5cGVfcHJvcGVydGllcyAoZGV2aWNlLAorICAgICAgICAgIG1lbS0+cmVxdWlyZW1lbnRzLm1lbW9yeVR5cGVCaXRzLCBtZW1fcHJvcF9mbGFncywgJnR5cGVfaWR4KSkKKyAgICBnb3RvIGVycm9yOworCisgIC8qIFhYWDogYXNzdW1lcyBhbGlnbm1lbnQgaXMgYSBwb3dlciBvZiAyICovCisgIHBhcmFtcy5hbGlnbiA9IG1lbS0+cmVxdWlyZW1lbnRzLmFsaWdubWVudCAtIDE7CisgIG1lbS0+dmtfbWVtID0gKEdzdFZ1bGthbk1lbW9yeSAqKSBnc3RfdnVsa2FuX21lbW9yeV9hbGxvYyAoZGV2aWNlLCB0eXBlX2lkeCwKKyAgICAgICZwYXJhbXMsIG1lbS0+cmVxdWlyZW1lbnRzLnNpemUsIG1lbV9wcm9wX2ZsYWdzKTsKKyAgaWYgKCFtZW0tPnZrX21lbSkKKyAgICBnb3RvIGVycm9yOworCisgIGVyciA9IHZrQmluZEltYWdlTWVtb3J5IChkZXZpY2UtPmRldmljZSwgaW1hZ2UsIG1lbS0+dmtfbWVtLT5tZW1fcHRyLCAwKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCAmZXJyb3IsICJ2a0JpbmRJbWFnZU1lbW9yeSIpIDwgMCkKKyAgICBnb3RvIHZrX2Vycm9yOworCisgIGlmICh1c2FnZSAmIChWS19JTUFHRV9VU0FHRV9TQU1QTEVEX0JJVCB8IFZLX0lNQUdFX1VTQUdFX1NUT1JBR0VfQklUIHwKKyAgICAgICAgICBWS19JTUFHRV9VU0FHRV9DT0xPUl9BVFRBQ0hNRU5UX0JJVCkpIHsKKyAgICBfdmlld19jcmVhdGVfaW5mbyAobWVtLT5pbWFnZSwgZm9ybWF0LCAmdmlld19pbmZvKTsKKyAgICBlcnIgPSB2a0NyZWF0ZUltYWdlVmlldyAoZGV2aWNlLT5kZXZpY2UsICZ2aWV3X2luZm8sIE5VTEwsICZtZW0tPnZpZXcpOworICAgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgJmVycm9yLCAidmtDcmVhdGVJbWFnZVZpZXciKSA8IDApCisgICAgICBnb3RvIHZrX2Vycm9yOworICB9CisKKyAgcmV0dXJuIG1lbTsKKwordmtfZXJyb3I6CisgIHsKKyAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX1ZVTEtBTl9JTUFHRV9NRU1PUlksCisgICAgICAgICJGYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UgbWVtb3J5ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCitlcnJvcjoKKyAgeworICAgIGlmIChtZW0pCisgICAgICBnc3RfbWVtb3J5X3VucmVmICgoR3N0TWVtb3J5ICopIG1lbSk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KK30KKworc3RhdGljIEdzdFZ1bGthbkltYWdlTWVtb3J5ICoKK192a19pbWFnZV9tZW1fbmV3X3dyYXBwZWQgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgR3N0TWVtb3J5ICogcGFyZW50LAorICAgIEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgVmtJbWFnZSBpbWFnZSwgVmtGb3JtYXQgZm9ybWF0LCBnc2l6ZSB3aWR0aCwKKyAgICBnc2l6ZSBoZWlnaHQsIFZrSW1hZ2VUaWxpbmcgdGlsaW5nLCBWa0ltYWdlVXNhZ2VGbGFncyB1c2FnZSwKKyAgICBncG9pbnRlciB1c2VyX2RhdGEsIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKm1lbSA9IGdfbmV3MCAoR3N0VnVsa2FuSW1hZ2VNZW1vcnksIDEpOworICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtcyA9IHsgMCwgfTsKKyAgVmtJbWFnZVZpZXdDcmVhdGVJbmZvIHZpZXdfaW5mbzsKKyAgVmtQaHlzaWNhbERldmljZSBncHU7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworICBWa1Jlc3VsdCBlcnI7CisKKyAgZ3B1ID0gZ3N0X3Z1bGthbl9kZXZpY2VfZ2V0X3BoeXNpY2FsX2RldmljZSAoZGV2aWNlKTsKKyAgbWVtLT5pbWFnZSA9IGltYWdlOworCisgIHZrR2V0SW1hZ2VNZW1vcnlSZXF1aXJlbWVudHMgKGRldmljZS0+ZGV2aWNlLCBtZW0tPmltYWdlLCAmbWVtLT5yZXF1aXJlbWVudHMpOworCisgIC8qIFhYWDogYXNzdW1lcyBhbGlnbm1lbnQgaXMgYSBwb3dlciBvZiAyICovCisgIHBhcmFtcy5hbGlnbiA9IG1lbS0+cmVxdWlyZW1lbnRzLmFsaWdubWVudCAtIDE7CisgIHBhcmFtcy5mbGFncyA9IEdTVF9NRU1PUllfRkxBR19OT1RfTUFQUEFCTEU7CisgIF92a19pbWFnZV9tZW1faW5pdCAobWVtLCBhbGxvY2F0b3IsIHBhcmVudCwgZGV2aWNlLCB1c2FnZSwgJnBhcmFtcywKKyAgICAgIG1lbS0+cmVxdWlyZW1lbnRzLnNpemUsIHVzZXJfZGF0YSwgbm90aWZ5KTsKKyAgbWVtLT53cmFwcGVkID0gVFJVRTsKKworICBpZiAoIV9jcmVhdGVfaW5mb19mcm9tX2FyZ3MgKCZtZW0tPmNyZWF0ZV9pbmZvLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHRpbGluZywKKyAgICAgICAgICB1c2FnZSkpIHsKKyAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX1ZVTEtBTl9JTUFHRV9NRU1PUlksICJJbmNvcnJlY3QgaW1hZ2UgcGFyYW1ldGVycyIpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBlcnIgPSB2a0dldFBoeXNpY2FsRGV2aWNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzIChncHUsIGZvcm1hdCwgVktfSU1BR0VfVFlQRV8yRCwKKyAgICAgIHRpbGluZywgdXNhZ2UsIDAsICZtZW0tPmZvcm1hdF9wcm9wZXJ0aWVzKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCAmZXJyb3IsCisgICAgICAgICAgInZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMiKSA8IDApCisgICAgZ290byB2a19lcnJvcjsKKworICAvKiBYWFg6IHdlIGRvbid0IGFjdHVhbGx5IGlmIHRoZSBpbWFnZSBoYXMgYSB2a0RldmljZU1lbW9yeSBib3VuZCBzbworICAgKiB0aGlzIG1heSBmYWlsICovCisgIGlmICh1c2FnZSAmIChWS19JTUFHRV9VU0FHRV9TQU1QTEVEX0JJVCB8IFZLX0lNQUdFX1VTQUdFX1NUT1JBR0VfQklUIHwKKyAgICAgICAgICBWS19JTUFHRV9VU0FHRV9DT0xPUl9BVFRBQ0hNRU5UX0JJVCkpIHsKKyAgICBfdmlld19jcmVhdGVfaW5mbyAobWVtLT5pbWFnZSwgZm9ybWF0LCAmdmlld19pbmZvKTsKKyAgICBlcnIgPSB2a0NyZWF0ZUltYWdlVmlldyAoZGV2aWNlLT5kZXZpY2UsICZ2aWV3X2luZm8sIE5VTEwsICZtZW0tPnZpZXcpOworICAgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgJmVycm9yLCAidmtDcmVhdGVJbWFnZVZpZXciKSA8IDApCisgICAgICBnb3RvIHZrX2Vycm9yOworICB9CisKKyAgcmV0dXJuIG1lbTsKKwordmtfZXJyb3I6CisgIHsKKyAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX1ZVTEtBTl9JTUFHRV9NRU1PUlksCisgICAgICAgICJGYWlsZWQgdG8gYWxsb2NhdGUgaW1hZ2UgbWVtb3J5ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCitlcnJvcjoKKyAgeworICAgIGdzdF9tZW1vcnlfdW5yZWYgKChHc3RNZW1vcnkgKikgbWVtKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorfQorCitzdGF0aWMgZ3BvaW50ZXIKK192a19pbWFnZV9tZW1fbWFwX2Z1bGwgKEdzdFZ1bGthbkltYWdlTWVtb3J5ICogbWVtLCBHc3RNYXBJbmZvICogaW5mbywKKyAgICBnc2l6ZSBzaXplKQoreworICBHc3RNYXBJbmZvICp2a19tYXBfaW5mbzsKKworICAvKiBGSVhNRTogcG9zc2libGUgbGF5b3V0IHRyYW5zZm9ybWF0aW9uIG5lZWRlZCAqLworICBnX211dGV4X2xvY2sgKCZtZW0tPmxvY2spOworCisgIGlmICghbWVtLT52a19tZW0pIHsKKyAgICBnX211dGV4X3VubG9jayAoJm1lbS0+bG9jayk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICB2a19tYXBfaW5mbyA9IGdfbmV3MCAoR3N0TWFwSW5mbywgMSk7CisgIGluZm8tPnVzZXJfZGF0YVswXSA9IHZrX21hcF9pbmZvOworICBpZiAoIWdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIG1lbS0+dmtfbWVtLCB2a19tYXBfaW5mbywgaW5mby0+ZmxhZ3MpKSB7CisgICAgZ19mcmVlICh2a19tYXBfaW5mbyk7CisgICAgZ19tdXRleF91bmxvY2sgKCZtZW0tPmxvY2spOworICAgIHJldHVybiBOVUxMOworICB9CisgIGdfbXV0ZXhfdW5sb2NrICgmbWVtLT5sb2NrKTsKKworICByZXR1cm4gdmtfbWFwX2luZm8tPmRhdGE7Cit9CisKK3N0YXRpYyB2b2lkCitfdmtfaW1hZ2VfbWVtX3VubWFwX2Z1bGwgKEdzdFZ1bGthbkltYWdlTWVtb3J5ICogbWVtLCBHc3RNYXBJbmZvICogaW5mbykKK3sKKyAgZ19tdXRleF9sb2NrICgmbWVtLT5sb2NrKTsKKyAgZ3N0X21lbW9yeV91bm1hcCAoKEdzdE1lbW9yeSAqKSBtZW0tPnZrX21lbSwgaW5mby0+dXNlcl9kYXRhWzBdKTsKKyAgZ19tdXRleF91bmxvY2sgKCZtZW0tPmxvY2spOworCisgIGdfZnJlZSAoaW5mby0+dXNlcl9kYXRhWzBdKTsKK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitfdmtfaW1hZ2VfbWVtX2NvcHkgKEdzdFZ1bGthbkltYWdlTWVtb3J5ICogc3JjLCBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSkKK3sKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX3ZrX2ltYWdlX21lbV9zaGFyZSAoR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKiBtZW0sIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQoreworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGdib29sZWFuCitfdmtfaW1hZ2VfbWVtX2lzX3NwYW4gKEdzdFZ1bGthbkltYWdlTWVtb3J5ICogbWVtMSwgR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKiBtZW0yLAorICAgIGdzaXplICogb2Zmc2V0KQoreworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX3ZrX2ltYWdlX21lbV9hbGxvYyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBnc2l6ZSBzaXplLAorICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpCit7CisgIGdfY3JpdGljYWwgKCJTdWJjbGFzcyBzaG91bGQgb3ZlcnJpZGUgR3N0QWxsb2NhdG9yQ2xhc3M6OmFsbG9jKCkgZnVuY3Rpb24iKTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK192a19pbWFnZV9tZW1fZnJlZSAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBtZW1vcnkpCit7CisgIEdzdFZ1bGthbkltYWdlTWVtb3J5ICptZW0gPSAoR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKikgbWVtb3J5OworCisgIEdTVF9DQVRfVFJBQ0UgKEdTVF9DQVRfVlVMS0FOX0lNQUdFX01FTU9SWSwgImZyZWVpbmcgaW1hZ2UgbWVtb3J5OiVwICIKKyAgICAgICJpZDolIiBHX0dVSU5UNjRfRk9STUFULCBtZW0sIChndWludDY0KSBtZW0tPmltYWdlKTsKKworICBpZiAobWVtLT5pbWFnZSAmJiAhbWVtLT53cmFwcGVkKQorICAgIHZrRGVzdHJveUltYWdlIChtZW0tPmRldmljZS0+ZGV2aWNlLCBtZW0tPmltYWdlLCBOVUxMKTsKKworICBpZiAobWVtLT52aWV3KQorICAgIHZrRGVzdHJveUltYWdlVmlldyAobWVtLT5kZXZpY2UtPmRldmljZSwgbWVtLT52aWV3LCBOVUxMKTsKKworICBpZiAobWVtLT52a19tZW0pCisgICAgZ3N0X21lbW9yeV91bnJlZiAoKEdzdE1lbW9yeSAqKSBtZW0tPnZrX21lbSk7CisKKyAgaWYgKG1lbS0+bm90aWZ5KQorICAgIG1lbS0+bm90aWZ5IChtZW0tPnVzZXJfZGF0YSk7CisKKyAgZ3N0X29iamVjdF91bnJlZiAobWVtLT5kZXZpY2UpOworCisgIGdfZnJlZSAobWVtKTsKK30KKworc3RhdGljIFZrQWNjZXNzRmxhZ3MKK19hY2Nlc3NfZmxhZ3NfZnJvbV9sYXlvdXQgKFZrSW1hZ2VMYXlvdXQgaW1hZ2VfbGF5b3V0KQoreworICBpZiAoaW1hZ2VfbGF5b3V0ID09IFZLX0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9EU1RfT1BUSU1BTCkKKyAgICByZXR1cm4gVktfQUNDRVNTX1RSQU5TRkVSX1dSSVRFX0JJVDsKKworICBpZiAoaW1hZ2VfbGF5b3V0ID09IFZLX0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9TUkNfT1BUSU1BTCkKKyAgICByZXR1cm4gVktfQUNDRVNTX1RSQU5TRkVSX1JFQURfQklUOworCisgIGlmIChpbWFnZV9sYXlvdXQgPT0gVktfSU1BR0VfTEFZT1VUX0NPTE9SX0FUVEFDSE1FTlRfT1BUSU1BTCkKKyAgICByZXR1cm4gVktfQUNDRVNTX0NPTE9SX0FUVEFDSE1FTlRfV1JJVEVfQklUOworCisgIGlmIChpbWFnZV9sYXlvdXQgPT0gVktfSU1BR0VfTEFZT1VUX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF9PUFRJTUFMKQorICAgIHJldHVybiBWS19BQ0NFU1NfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UX1dSSVRFX0JJVDsKKworICBpZiAoaW1hZ2VfbGF5b3V0ID09IFZLX0lNQUdFX0xBWU9VVF9TSEFERVJfUkVBRF9PTkxZX09QVElNQUwpCisgICAgcmV0dXJuIFZLX0FDQ0VTU19TSEFERVJfUkVBRF9CSVQgfCBWS19BQ0NFU1NfSU5QVVRfQVRUQUNITUVOVF9SRUFEX0JJVDsKKworICByZXR1cm4gMDsKK30KKworZ2Jvb2xlYW4KK2dzdF92dWxrYW5faW1hZ2VfbWVtb3J5X3NldF9sYXlvdXQgKEdzdFZ1bGthbkltYWdlTWVtb3J5ICogdmtfbWVtLAorICAgIFZrSW1hZ2VMYXlvdXQgaW1hZ2VfbGF5b3V0LCBWa0ltYWdlTWVtb3J5QmFycmllciAqIGJhcnJpZXIpCit7CisgIC8qIHZhbGlkYXRlIHZrX21lbS0+dXNhZ2Ugd2l0aCBpbWFnZV9sYXlvdXQgKi8KKworICBiYXJyaWVyLT5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0lNQUdFX01FTU9SWV9CQVJSSUVSOworICBiYXJyaWVyLT5wTmV4dCA9IE5VTEw7CisgIGJhcnJpZXItPmRzdEFjY2Vzc01hc2sgPSBfYWNjZXNzX2ZsYWdzX2Zyb21fbGF5b3V0IChpbWFnZV9sYXlvdXQpOworICBiYXJyaWVyLT5zcmNBY2Nlc3NNYXNrID0gX2FjY2Vzc19mbGFnc19mcm9tX2xheW91dCAodmtfbWVtLT5pbWFnZV9sYXlvdXQpOworICBiYXJyaWVyLT5vbGRMYXlvdXQgPSB2a19tZW0tPmltYWdlX2xheW91dDsKKyAgYmFycmllci0+bmV3TGF5b3V0ID0gaW1hZ2VfbGF5b3V0OworICBiYXJyaWVyLT5pbWFnZSA9IHZrX21lbS0+aW1hZ2U7CisgIEdTVF9WS19JTUFHRV9TVUJSRVNPVVJDRV9SQU5HRSAoYmFycmllci0+c3VicmVzb3VyY2VSYW5nZSwKKyAgICAgIFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIDAsIDEsIDAsIDEpOworCisgIC8qIEZJWE1FOiB3aGF0IGlmIHRoZSBiYXJyaWVyIGlzIG5ldmVyIHN1Ym1pdHRlZCBvciBpcyBzdWJtaXR0ZWQgb3V0IG9mIG9yZGVyPyAqLworICB2a19tZW0tPmltYWdlX2xheW91dCA9IGltYWdlX2xheW91dDsKKworICByZXR1cm4gVFJVRTsKK30KKworLyoqCisgKiBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9hbGxvYzoKKyAqCisgKiBBbGxvY2F0ZWQgYSBuZXcgI0dzdFZ1bGthbkltYWdlTWVtb3J5LgorICoKKyAqIFJldHVybnM6IGEgI0dzdE1lbW9yeSBvYmplY3QgYmFja2VkIGJ5IGEgdnVsa2FuIGRldmljZSBtZW1vcnkKKyAqLworR3N0TWVtb3J5ICoKK2dzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2FsbG9jIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIFZrRm9ybWF0IGZvcm1hdCwKKyAgICBnc2l6ZSB3aWR0aCwgZ3NpemUgaGVpZ2h0LCBWa0ltYWdlVGlsaW5nIHRpbGluZywgVmtJbWFnZVVzYWdlRmxhZ3MgdXNhZ2UsCisgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIG1lbV9wcm9wX2ZsYWdzKQoreworICBHc3RWdWxrYW5JbWFnZU1lbW9yeSAqbWVtOworCisgIG1lbSA9IF92a19pbWFnZV9tZW1fbmV3X2FsbG9jIChfdnVsa2FuX2ltYWdlX21lbW9yeV9hbGxvY2F0b3IsIE5VTEwsIGRldmljZSwKKyAgICAgIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgdGlsaW5nLCB1c2FnZSwgbWVtX3Byb3BfZmxhZ3MsIE5VTEwsIE5VTEwpOworCisgIHJldHVybiAoR3N0TWVtb3J5ICopIG1lbTsKK30KKworR3N0TWVtb3J5ICoKK2dzdF92dWxrYW5faW1hZ2VfbWVtb3J5X3dyYXBwZWQgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgVmtJbWFnZSBpbWFnZSwKKyAgICBWa0Zvcm1hdCBmb3JtYXQsIGdzaXplIHdpZHRoLCBnc2l6ZSBoZWlnaHQsIFZrSW1hZ2VUaWxpbmcgdGlsaW5nLAorICAgIFZrSW1hZ2VVc2FnZUZsYWdzIHVzYWdlLCBncG9pbnRlciB1c2VyX2RhdGEsIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKm1lbTsKKworICBtZW0gPSBfdmtfaW1hZ2VfbWVtX25ld193cmFwcGVkIChfdnVsa2FuX2ltYWdlX21lbW9yeV9hbGxvY2F0b3IsIE5VTEwsIGRldmljZSwKKyAgICAgIGltYWdlLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHRpbGluZywgdXNhZ2UsIHVzZXJfZGF0YSwgbm90aWZ5KTsKKworICByZXR1cm4gKEdzdE1lbW9yeSAqKSBtZW07Cit9CisKK2d1aW50MzIKK2dzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2dldF93aWR0aCAoR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKiBpbWFnZSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGdzdF9pc192dWxrYW5faW1hZ2VfbWVtb3J5IChHU1RfTUVNT1JZX0NBU1QgKGltYWdlKSksCisgICAgICAwKTsKKworICByZXR1cm4gaW1hZ2UtPmNyZWF0ZV9pbmZvLmV4dGVudC53aWR0aDsKK30KKworZ3VpbnQzMgorZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfZ2V0X2hlaWdodCAoR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKiBpbWFnZSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGdzdF9pc192dWxrYW5faW1hZ2VfbWVtb3J5IChHU1RfTUVNT1JZX0NBU1QgKGltYWdlKSksCisgICAgICAwKTsKKworICByZXR1cm4gaW1hZ2UtPmNyZWF0ZV9pbmZvLmV4dGVudC5oZWlnaHQ7Cit9CisKK0dfREVGSU5FX1RZUEUgKEdzdFZ1bGthbkltYWdlTWVtb3J5QWxsb2NhdG9yLCBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9hbGxvY2F0b3IsCisgICAgR1NUX1RZUEVfQUxMT0NBVE9SKTsKKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2FsbG9jYXRvcl9jbGFzc19pbml0IChHc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvckNsYXNzCisgICAgKiBrbGFzcykKK3sKKyAgR3N0QWxsb2NhdG9yQ2xhc3MgKmFsbG9jYXRvcl9jbGFzcyA9IChHc3RBbGxvY2F0b3JDbGFzcyAqKSBrbGFzczsKKworICBhbGxvY2F0b3JfY2xhc3MtPmFsbG9jID0gX3ZrX2ltYWdlX21lbV9hbGxvYzsKKyAgYWxsb2NhdG9yX2NsYXNzLT5mcmVlID0gX3ZrX2ltYWdlX21lbV9mcmVlOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfYWxsb2NhdG9yX2luaXQgKEdzdFZ1bGthbkltYWdlTWVtb3J5QWxsb2NhdG9yICoKKyAgICBhbGxvY2F0b3IpCit7CisgIEdzdEFsbG9jYXRvciAqYWxsb2MgPSBHU1RfQUxMT0NBVE9SX0NBU1QgKGFsbG9jYXRvcik7CisKKyAgYWxsb2MtPm1lbV90eXBlID0gR1NUX1ZVTEtBTl9JTUFHRV9NRU1PUllfQUxMT0NBVE9SX05BTUU7CisgIGFsbG9jLT5tZW1fbWFwX2Z1bGwgPSAoR3N0TWVtb3J5TWFwRnVsbEZ1bmN0aW9uKSBfdmtfaW1hZ2VfbWVtX21hcF9mdWxsOworICBhbGxvYy0+bWVtX3VubWFwX2Z1bGwgPSAoR3N0TWVtb3J5VW5tYXBGdWxsRnVuY3Rpb24pIF92a19pbWFnZV9tZW1fdW5tYXBfZnVsbDsKKyAgYWxsb2MtPm1lbV9jb3B5ID0gKEdzdE1lbW9yeUNvcHlGdW5jdGlvbikgX3ZrX2ltYWdlX21lbV9jb3B5OworICBhbGxvYy0+bWVtX3NoYXJlID0gKEdzdE1lbW9yeVNoYXJlRnVuY3Rpb24pIF92a19pbWFnZV9tZW1fc2hhcmU7CisgIGFsbG9jLT5tZW1faXNfc3BhbiA9IChHc3RNZW1vcnlJc1NwYW5GdW5jdGlvbikgX3ZrX2ltYWdlX21lbV9pc19zcGFuOworfQorCisvKioKKyAqIGdzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2luaXRfb25jZToKKyAqCisgKiBJbml0aWFsaXplcyB0aGUgVnVsa2FuIG1lbW9yeSBhbGxvY2F0b3IuIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uCisgKiBtdWx0aXBsZSB0aW1lcy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciAjR3N0VnVsa2FuSW1hZ2VNZW1vcnkgb3BlcmF0aW9uLgorICovCit2b2lkCitnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9pbml0X29uY2UgKHZvaWQpCit7CisgIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBfaW5pdCA9IDA7CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmX2luaXQpKSB7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfVlVMS0FOX0lNQUdFX01FTU9SWSwgInZ1bGthbmltYWdlbWVtb3J5IiwKKyAgICAgICAgMCwgIlZ1bGthbiBJbWFnZSBNZW1vcnkiKTsKKworICAgIF92dWxrYW5faW1hZ2VfbWVtb3J5X2FsbG9jYXRvciA9CisgICAgICAgIGdfb2JqZWN0X25ldyAoZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfYWxsb2NhdG9yX2dldF90eXBlICgpLCBOVUxMKTsKKworICAgIGdzdF9hbGxvY2F0b3JfcmVnaXN0ZXIgKEdTVF9WVUxLQU5fSU1BR0VfTUVNT1JZX0FMTE9DQVRPUl9OQU1FLAorICAgICAgICBnc3Rfb2JqZWN0X3JlZiAoX3Z1bGthbl9pbWFnZV9tZW1vcnlfYWxsb2NhdG9yKSk7CisgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZfaW5pdCwgMSk7CisgIH0KK30KKworLyoqCisgKiBnc3RfaXNfdnVsa2FuX2ltYWdlX21lbW9yeToKKyAqIEBtZW06YSAjR3N0TWVtb3J5CisgKiAKKyAqIFJldHVybnM6IHdoZXRoZXIgdGhlIG1lbW9yeSBhdCBAbWVtIGlzIGEgI0dzdFZ1bGthbkltYWdlTWVtb3J5CisgKi8KK2dib29sZWFuCitnc3RfaXNfdnVsa2FuX2ltYWdlX21lbW9yeSAoR3N0TWVtb3J5ICogbWVtKQoreworICByZXR1cm4gbWVtICE9IE5VTEwgJiYgbWVtLT5hbGxvY2F0b3IgIT0gTlVMTCAmJgorICAgICAgZ190eXBlX2lzX2EgKEdfT0JKRUNUX1RZUEUgKG1lbS0+YWxsb2NhdG9yKSwKKyAgICAgIEdTVF9UWVBFX1ZVTEtBTl9JTUFHRV9NRU1PUllfQUxMT0NBVE9SKTsKK30KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5oIGIvZXh0L3Z1bGthbi92a2ltYWdlbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE2Y2FkNgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5oCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX1ZLX0lNQUdFX01FTU9SWV9IXworI2RlZmluZSBfVktfSU1BR0VfTUVNT1JZX0hfCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2dzdGFsbG9jYXRvci5oPgorI2luY2x1ZGUgPGdzdC9nc3RtZW1vcnkuaD4KKworI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgorCisjaW5jbHVkZSA8dmsuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX1ZVTEtBTl9JTUFHRV9NRU1PUllfQUxMT0NBVE9SIChnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9hbGxvY2F0b3JfZ2V0X3R5cGUoKSkKK0dUeXBlIGdzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2FsbG9jYXRvcl9nZXRfdHlwZSh2b2lkKTsKKworI2RlZmluZSBHU1RfSVNfVlVMS0FOX0lNQUdFX01FTU9SWV9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfVlVMS0FOX0lNQUdFX01FTU9SWV9BTExPQ0FUT1IpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX0lNQUdFX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9WVUxLQU5fSU1BR0VfTUVNT1JZX0FMTE9DQVRPUikpCisjZGVmaW5lIEdTVF9WVUxLQU5fSU1BR0VfTUVNT1JZX0FMTE9DQVRPUl9HRVRfQ0xBU1Mob2JqKSAgICAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEdTVF9UWVBFX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SLCBHc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvckNsYXNzKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9JTUFHRV9NRU1PUllfQUxMT0NBVE9SKG9iaikgICAgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SLCBHc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvcikpCisjZGVmaW5lIEdTVF9WVUxLQU5fSU1BR0VfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgICAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SLCBHc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvckNsYXNzKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9JTUFHRV9NRU1PUllfQUxMT0NBVE9SX0NBU1Qob2JqKSAgICAgICAgICAgICgoR3N0VnVsa2FuSW1hZ2VNZW1vcnlBbGxvY2F0b3IgKikob2JqKSkKKworI2RlZmluZSBHU1RfVlVMS0FOX0lNQUdFX01FTU9SWV9BTExPQ0FUT1JfTkFNRSAiVnVsa2FuSW1hZ2UiCisjZGVmaW5lIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1ZVTEtBTl9JTUFHRSAibWVtb3J5OiIgR1NUX1ZVTEtBTl9JTUFHRV9NRU1PUllfQUxMT0NBVE9SX05BTUUKKworc3RydWN0IF9Hc3RWdWxrYW5JbWFnZU1lbW9yeQoreworICBHc3RNZW1vcnkgcGFyZW50OworCisgIEdzdFZ1bGthbkRldmljZSAqIGRldmljZTsKKworICBWa0ltYWdlIGltYWdlOworICBWa0ltYWdlTGF5b3V0IGltYWdlX2xheW91dDsKKyAgVmtJbWFnZVZpZXcgdmlldzsKKyAgR3N0VnVsa2FuTWVtb3J5ICp2a19tZW07CisKKyAgVmtJbWFnZUNyZWF0ZUluZm8gY3JlYXRlX2luZm87CisgIFZrTWVtb3J5UmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50czsKKyAgVmtJbWFnZUZvcm1hdFByb3BlcnRpZXMgZm9ybWF0X3Byb3BlcnRpZXM7CisgIFZrSW1hZ2VVc2FnZUZsYWdzIHVzYWdlOworCisgIEdNdXRleCBsb2NrOworICBnYm9vbGVhbiB3cmFwcGVkOworICBHRGVzdHJveU5vdGlmeSBub3RpZnk7CisgIGdwb2ludGVyIHVzZXJfZGF0YTsKK307CisKKy8qKgorICogR3N0VnVsa2FuSW1hZ2VNZW1vcnlBbGxvY2F0b3IKKyAqCisgKiBPcGFxdWUgI0dzdFZ1bGthbkltYWdlTWVtb3J5QWxsb2NhdG9yIHN0cnVjdAorICovCitzdHJ1Y3QgX0dzdFZ1bGthbkltYWdlTWVtb3J5QWxsb2NhdG9yCit7CisgIEdzdEFsbG9jYXRvciBwYXJlbnQ7Cit9OworCisvKioKKyAqIEdzdFZ1bGthbkltYWdlTWVtb3J5QWxsb2NhdG9yQ2xhc3M6CisgKgorICogVGhlICNHc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvckNsYXNzIG9ubHkgY29udGFpbnMgcHJpdmF0ZSBkYXRhCisgKi8KK3N0cnVjdCBfR3N0VnVsa2FuSW1hZ2VNZW1vcnlBbGxvY2F0b3JDbGFzcworeworICBHc3RBbGxvY2F0b3JDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCit2b2lkICAgICAgICAgICAgZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfaW5pdF9vbmNlICAgICAgICh2b2lkKTsKK2dib29sZWFuICAgICAgICBnc3RfaXNfdnVsa2FuX2ltYWdlX21lbW9yeSAgICAgICAgICAgICAgKEdzdE1lbW9yeSAqIG1lbSk7CisKK0dzdE1lbW9yeSAqICAgICBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9hbGxvYyAgICAgICAgICAgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRm9ybWF0IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtJbWFnZVRpbGluZyB0aWxpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0ltYWdlVXNhZ2VGbGFncyB1c2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyBtZW1fcHJvcF9mbGFncyk7CisKK0dzdE1lbW9yeSAqICAgICBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV93cmFwcGVkICAgICAgICAgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrSW1hZ2UgaW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Zvcm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrSW1hZ2VUaWxpbmcgdGlsaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtJbWFnZVVzYWdlRmxhZ3MgdXNhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpOworCitnYm9vbGVhbiAgICAgICAgZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfc2V0X2xheW91dCAgICAgIChHc3RWdWxrYW5JbWFnZU1lbW9yeSAqIHZrX21lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrSW1hZ2VMYXlvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0ltYWdlTWVtb3J5QmFycmllciAqIGJhcnJpZXIpOworCitndWludDMyICAgICAgICAgZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfZ2V0X3dpZHRoICAgICAgIChHc3RWdWxrYW5JbWFnZU1lbW9yeSAqIGltYWdlKTsKK2d1aW50MzIgICAgICAgICBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9nZXRfaGVpZ2h0ICAgICAgKEdzdFZ1bGthbkltYWdlTWVtb3J5ICogaW1hZ2UpOworCitWa0Zvcm1hdCBnc3RfdnVsa2FuX2Zvcm1hdF9mcm9tX3ZpZGVvX2Zvcm1hdCAoR3N0VmlkZW9Gb3JtYXQgdl9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgcGxhbmUpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX1ZLX0lNQUdFX01FTU9SWV9IXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2luc3RhbmNlLmMgYi9leHQvdnVsa2FuL3ZraW5zdGFuY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGM0ZTc4Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a2luc3RhbmNlLmMKQEAgLTAsMCArMSw1NDIgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAidmtpbnN0YW5jZS5oIgorI2luY2x1ZGUgInZrdXRpbHNfcHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNkZWZpbmUgQVBQX1NIT1JUX05BTUUgIkdTdHJlYW1lciIKKworc3RhdGljIGNvbnN0IGNoYXIgKmluc3RhbmNlX3ZhbGlkYXRpb25fbGF5ZXJzW10gPSB7CisgICJWS19MQVlFUl9MVU5BUkdfdGhyZWFkaW5nIiwKKyAgIlZLX0xBWUVSX0xVTkFSR19tZW1fdHJhY2tlciIsCisgICJWS19MQVlFUl9MVU5BUkdfb2JqZWN0X3RyYWNrZXIiLAorICAiVktfTEFZRVJfTFVOQVJHX2RyYXdfc3RhdGUiLAorICAiVktfTEFZRVJfTFVOQVJHX3BhcmFtX2NoZWNrZXIiLAorICAiVktfTEFZRVJfTFVOQVJHX3N3YXBjaGFpbiIsCisgICJWS19MQVlFUl9MVU5BUkdfZGV2aWNlX2xpbWl0cyIsCisgICJWS19MQVlFUl9MVU5BUkdfaW1hZ2UiLAorfTsKKworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X3Z1bGthbl9pbnN0YW5jZV9kZWJ1ZworR1NUX0RFQlVHX0NBVEVHT1JZIChHU1RfQ0FUX0RFRkFVTFQpOworR1NUX0RFQlVHX0NBVEVHT1JZIChHU1RfVlVMS0FOX0RFQlVHX0NBVCk7CitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0NPTlRFWFQpOworCitlbnVtCit7CisgIFNJR05BTF8wLAorICBTSUdOQUxfQ1JFQVRFX0RFVklDRSwKKyAgTEFTVF9TSUdOQUwKK307CisKK3N0YXRpYyBndWludCBnc3RfdnVsa2FuX2luc3RhbmNlX3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwIH07CisKKyNkZWZpbmUgZ3N0X3Z1bGthbl9pbnN0YW5jZV9wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0VnVsa2FuSW5zdGFuY2UsIGdzdF92dWxrYW5faW5zdGFuY2UsCisgICAgR1NUX1RZUEVfT0JKRUNULCBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9ERUZBVUxULAorICAgICAgICAidnVsa2FuaW5zdGFuY2UiLCAwLCAiVnVsa2FuIEluc3RhbmNlIik7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9WVUxLQU5fREVCVUdfQ0FULAorICAgICAgICAidnVsa2FuZGVidWciLCAwLCAiVnVsa2FuIERlYnVnIik7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0dFVCAoR1NUX0NBVF9DT05URVhULCAiR1NUX0NPTlRFWFQiKSk7CisKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5faW5zdGFuY2VfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOworCitzdHJ1Y3QgX0dzdFZ1bGthbkluc3RhbmNlUHJpdmF0ZQoreworICBnYm9vbGVhbiBvcGVuZWQ7Cit9OworCitHc3RWdWxrYW5JbnN0YW5jZSAqCitnc3RfdnVsa2FuX2luc3RhbmNlX25ldyAodm9pZCkKK3sKKyAgcmV0dXJuIGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfVlVMS0FOX0lOU1RBTkNFLCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5faW5zdGFuY2VfaW5pdCAoR3N0VnVsa2FuSW5zdGFuY2UgKiBpbnN0YW5jZSkKK3sKKyAgaW5zdGFuY2UtPnByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUgKChpbnN0YW5jZSksCisgICAgICBHU1RfVFlQRV9WVUxLQU5fSU5TVEFOQ0UsIEdzdFZ1bGthbkluc3RhbmNlUHJpdmF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2luc3RhbmNlX2NsYXNzX2luaXQgKEdzdFZ1bGthbkluc3RhbmNlQ2xhc3MgKiBrbGFzcykKK3sKKyAgZ3N0X3Z1bGthbl9tZW1vcnlfaW5pdF9vbmNlICgpOworICBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9pbml0X29uY2UgKCk7CisgIGdzdF92dWxrYW5fYnVmZmVyX21lbW9yeV9pbml0X29uY2UgKCk7CisKKyAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlIChrbGFzcywgc2l6ZW9mIChHc3RWdWxrYW5JbnN0YW5jZVByaXZhdGUpKTsKKworICAvKioKKyAgICogR3N0VnVsa2FuSW5zdGFuY2U6OmNyZWF0ZS1kZXZpY2U6CisgICAqIEBvYmplY3Q6IHRoZSAjR3N0VnVsa2FuRGlzcGxheQorICAgKgorICAgKiBPdmVycmlkZXMgdGhlICNHc3RWdWxrYW5EZXZpY2UgY3JlYXRpb24gbWVjaGFuaXNtLgorICAgKiBJdCBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KKyAgICoKKyAgICogUmV0dXJuczogdGhlIG5ld2x5IGNyZWF0ZWQgI0dzdFZ1bGthbkRldmljZS4KKyAgICovCisgIGdzdF92dWxrYW5faW5zdGFuY2Vfc2lnbmFsc1tTSUdOQUxfQ1JFQVRFX0RFVklDRV0gPQorICAgICAgZ19zaWduYWxfbmV3ICgiY3JlYXRlLWRldmljZSIsIEdfVFlQRV9GUk9NX0NMQVNTIChrbGFzcyksCisgICAgICBHX1NJR05BTF9SVU5fTEFTVCwgMCwgTlVMTCwgTlVMTCwgZ19jY2xvc3VyZV9tYXJzaGFsX2dlbmVyaWMsCisgICAgICBHU1RfVFlQRV9WVUxLQU5fREVWSUNFLCAwKTsKKworICBHX09CSkVDVF9DTEFTUyAoa2xhc3MpLT5maW5hbGl6ZSA9IGdzdF92dWxrYW5faW5zdGFuY2VfZmluYWxpemU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2luc3RhbmNlX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RWdWxrYW5JbnN0YW5jZSAqaW5zdGFuY2UgPSBHU1RfVlVMS0FOX0lOU1RBTkNFIChvYmplY3QpOworCisgIGlmIChpbnN0YW5jZS0+cHJpdi0+b3BlbmVkKSB7CisgICAgaWYgKGluc3RhbmNlLT5kYmdEZXN0cm95RGVidWdSZXBvcnRDYWxsYmFjaykKKyAgICAgIGluc3RhbmNlLT5kYmdEZXN0cm95RGVidWdSZXBvcnRDYWxsYmFjayAoaW5zdGFuY2UtPmluc3RhbmNlLAorICAgICAgICAgIGluc3RhbmNlLT5tc2dfY2FsbGJhY2ssIE5VTEwpOworCisgICAgZ19mcmVlIChpbnN0YW5jZS0+cGh5c2ljYWxfZGV2aWNlcyk7CisgIH0KKyAgaW5zdGFuY2UtPnByaXYtPm9wZW5lZCA9IEZBTFNFOworCisgIGlmIChpbnN0YW5jZS0+aW5zdGFuY2UpCisgICAgdmtEZXN0cm95SW5zdGFuY2UgKGluc3RhbmNlLT5pbnN0YW5jZSwgTlVMTCk7CisgIGluc3RhbmNlLT5pbnN0YW5jZSA9IE5VTEw7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitzdGF0aWMgVmtCb29sMzIKK19nc3RfdmtfZGVidWdfY2FsbGJhY2sgKFZrRGVidWdSZXBvcnRGbGFnc0VYVCBtc2dGbGFncywKKyAgICBWa0RlYnVnUmVwb3J0T2JqZWN0VHlwZUVYVCBvYmpUeXBlLCB1aW50NjRfdCBzcmNPYmplY3QsIHNpemVfdCBsb2NhdGlvbiwKKyAgICBpbnQzMl90IG1zZ0NvZGUsIGNvbnN0IGNoYXIgKnBMYXllclByZWZpeCwgY29uc3QgY2hhciAqcE1zZywKKyAgICB2b2lkICpwVXNlckRhdGEpCit7CisgIGlmIChtc2dGbGFncyAmIFZLX0RFQlVHX1JFUE9SVF9FUlJPUl9CSVRfRVhUKSB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX1ZVTEtBTl9ERUJVR19DQVQsICJbJXNdIENvZGUgJWQgOiAlcyIsIHBMYXllclByZWZpeCwKKyAgICAgICAgbXNnQ29kZSwgcE1zZyk7CisgIH0gZWxzZSBpZiAobXNnRmxhZ3MgJiBWS19ERUJVR19SRVBPUlRfV0FSTklOR19CSVRfRVhUKSB7CisgICAgR1NUX0NBVF9XQVJOSU5HIChHU1RfVlVMS0FOX0RFQlVHX0NBVCwgIlslc10gQ29kZSAlZCA6ICVzIiwgcExheWVyUHJlZml4LAorICAgICAgICBtc2dDb2RlLCBwTXNnKTsKKyAgfSBlbHNlIGlmIChtc2dGbGFncyAmIFZLX0RFQlVHX1JFUE9SVF9JTkZPUk1BVElPTl9CSVRfRVhUKSB7CisgICAgR1NUX0NBVF9MT0cgKEdTVF9WVUxLQU5fREVCVUdfQ0FULCAiWyVzXSBDb2RlICVkIDogJXMiLCBwTGF5ZXJQcmVmaXgsCisgICAgICAgIG1zZ0NvZGUsIHBNc2cpOworICB9IGVsc2UgaWYgKG1zZ0ZsYWdzICYgVktfREVCVUdfUkVQT1JUX1BFUkZPUk1BTkNFX1dBUk5JTkdfQklUX0VYVCkgeworICAgIEdTVF9DQVRfRklYTUUgKEdTVF9WVUxLQU5fREVCVUdfQ0FULCAiWyVzXSBDb2RlICVkIDogJXMiLCBwTGF5ZXJQcmVmaXgsCisgICAgICAgIG1zZ0NvZGUsIHBNc2cpOworICB9IGVsc2UgaWYgKG1zZ0ZsYWdzICYgVktfREVCVUdfUkVQT1JUX0RFQlVHX0JJVF9FWFQpIHsKKyAgICBHU1RfQ0FUX1RSQUNFIChHU1RfVlVMS0FOX0RFQlVHX0NBVCwgIlslc10gQ29kZSAlZCA6ICVzIiwgcExheWVyUHJlZml4LAorICAgICAgICBtc2dDb2RlLCBwTXNnKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICAvKgorICAgKiBmYWxzZSBpbmRpY2F0ZXMgdGhhdCBsYXllciBzaG91bGQgbm90IGJhaWwtb3V0IG9mIGFuCisgICAqIEFQSSBjYWxsIHRoYXQgaGFkIHZhbGlkYXRpb24gZmFpbHVyZXMuIFRoaXMgbWF5IG1lYW4gdGhhdCB0aGUKKyAgICogYXBwIGRpZXMgaW5zaWRlIHRoZSBkcml2ZXIgZHVlIHRvIGludmFsaWQgcGFyYW1ldGVyKHMpLgorICAgKiBUaGF0J3Mgd2hhdCB3b3VsZCBoYXBwZW4gd2l0aG91dCB2YWxpZGF0aW9uIGxheWVycywgc28gd2UnbGwKKyAgICoga2VlcCB0aGF0IGJlaGF2aW9yIGhlcmUuCisgICAqLworICByZXR1cm4gRkFMU0U7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX2luc3RhbmNlX29wZW4gKEdzdFZ1bGthbkluc3RhbmNlICogaW5zdGFuY2UsIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgVmtFeHRlbnNpb25Qcm9wZXJ0aWVzICppbnN0YW5jZV9leHRlbnNpb25zOworICBjaGFyICpleHRlbnNpb25fbmFtZXNbNjRdOyAgICAvKiBGSVhNRTogbWFrZSBkeW5hbWljICovCisgIFZrTGF5ZXJQcm9wZXJ0aWVzICppbnN0YW5jZV9sYXllcnM7CisgIHVpbnQzMl90IGluc3RhbmNlX2V4dGVuc2lvbl9jb3VudCA9IDA7CisgIHVpbnQzMl90IGVuYWJsZWRfZXh0ZW5zaW9uX2NvdW50ID0gMDsKKyAgdWludDMyX3QgaW5zdGFuY2VfbGF5ZXJfY291bnQgPSAwOworICB1aW50MzJfdCBlbmFibGVkX2xheWVyX2NvdW50ID0gMDsKKyAgZ2Jvb2xlYW4gdmFsaWRhdGlvbl9mb3VuZDsKKyAgVmtSZXN1bHQgZXJyOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoaW5zdGFuY2UpOworICBpZiAoaW5zdGFuY2UtPnByaXYtPm9wZW5lZCkgeworICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChpbnN0YW5jZSk7CisgICAgcmV0dXJuIFRSVUU7CisgIH0KKworICAvKiBMb29rIGZvciB2YWxpZGF0aW9uIGxheWVycyAqLworICBlcnIgPSB2a0VudW1lcmF0ZUluc3RhbmNlTGF5ZXJQcm9wZXJ0aWVzICgmaW5zdGFuY2VfbGF5ZXJfY291bnQsIE5VTEwpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLAorICAgICAgICAgICJ2S0VudW1lcmF0ZUluc3RhbmNlTGF5ZXJQcm9wZXJ0aWVzIikgPCAwKQorICAgIGdvdG8gZXJyb3I7CisKKyAgaW5zdGFuY2VfbGF5ZXJzID0gZ19uZXcwIChWa0xheWVyUHJvcGVydGllcywgaW5zdGFuY2VfbGF5ZXJfY291bnQpOworICBlcnIgPQorICAgICAgdmtFbnVtZXJhdGVJbnN0YW5jZUxheWVyUHJvcGVydGllcyAoJmluc3RhbmNlX2xheWVyX2NvdW50LAorICAgICAgaW5zdGFuY2VfbGF5ZXJzKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAidktFbnVtZXJhdGVJbnN0YW5jZUxheWVyUHJvcGVydGllcyIpIDwgMCkgeworICAgIGdfZnJlZSAoaW5zdGFuY2VfbGF5ZXJzKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgLyogVE9ETzogYWxsb3cgb3V0c2lkZSBzZWxlY3Rpb24gKi8KKyAgdmFsaWRhdGlvbl9mb3VuZCA9CisgICAgICBfY2hlY2tfZm9yX2FsbF9sYXllcnMgKEdfTl9FTEVNRU5UUyAoaW5zdGFuY2VfdmFsaWRhdGlvbl9sYXllcnMpLAorICAgICAgaW5zdGFuY2VfdmFsaWRhdGlvbl9sYXllcnMsIGluc3RhbmNlX2xheWVyX2NvdW50LCBpbnN0YW5jZV9sYXllcnMpOworICBpZiAoIXZhbGlkYXRpb25fZm91bmQpIHsKKyAgICBnX2Vycm9yICgidmtFbnVtZXJhdGVJbnN0YW5jZUxheWVyUHJvcGVydGllcyBmYWlsZWQgdG8gZmluZCIKKyAgICAgICAgInJlcXVpcmVkIHZhbGlkYXRpb24gbGF5ZXIuXG5cbiIKKyAgICAgICAgIlBsZWFzZSBsb29rIGF0IHRoZSBHZXR0aW5nIFN0YXJ0ZWQgZ3VpZGUgZm9yIGFkZGl0aW9uYWwgIgorICAgICAgICAiaW5mb3JtYXRpb24uXG52a0NyZWF0ZUluc3RhbmNlIEZhaWx1cmUiKTsKKyAgfQorICBlbmFibGVkX2xheWVyX2NvdW50ID0gR19OX0VMRU1FTlRTIChpbnN0YW5jZV92YWxpZGF0aW9uX2xheWVycyk7CisKKyAgZXJyID0KKyAgICAgIHZrRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIChOVUxMLCAmaW5zdGFuY2VfZXh0ZW5zaW9uX2NvdW50LAorICAgICAgTlVMTCk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsCisgICAgICAgICAgInZrRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIikgPCAwKSB7CisgICAgZ19mcmVlIChpbnN0YW5jZV9sYXllcnMpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKyAgR1NUX0RFQlVHX09CSkVDVCAoaW5zdGFuY2UsICJGb3VuZCAldSBleHRlbnNpb25zIiwgaW5zdGFuY2VfZXh0ZW5zaW9uX2NvdW50KTsKKworICBtZW1zZXQgKGV4dGVuc2lvbl9uYW1lcywgMCwgc2l6ZW9mIChleHRlbnNpb25fbmFtZXMpKTsKKyAgaW5zdGFuY2VfZXh0ZW5zaW9ucyA9CisgICAgICBnX25ldzAgKFZrRXh0ZW5zaW9uUHJvcGVydGllcywgaW5zdGFuY2VfZXh0ZW5zaW9uX2NvdW50KTsKKyAgZXJyID0KKyAgICAgIHZrRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIChOVUxMLCAmaW5zdGFuY2VfZXh0ZW5zaW9uX2NvdW50LAorICAgICAgaW5zdGFuY2VfZXh0ZW5zaW9ucyk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsCisgICAgICAgICAgInZrRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIikgPCAwKSB7CisgICAgZ19mcmVlIChpbnN0YW5jZV9sYXllcnMpOworICAgIGdfZnJlZSAoaW5zdGFuY2VfZXh0ZW5zaW9ucyk7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIHsKKyAgICBHc3RWdWxrYW5EaXNwbGF5VHlwZSBkaXNwbGF5X3R5cGU7CisgICAgZ2Jvb2xlYW4gc3dhcGNoYWluX2V4dF9mb3VuZCA9IEZBTFNFOworICAgIGdib29sZWFuIHdpbnN5c19leHRfZm91bmQgPSBGQUxTRTsKKyAgICBjb25zdCBnY2hhciAqd2luc3lzX2V4dF9uYW1lOworCisgICAgZGlzcGxheV90eXBlID0gZ3N0X3Z1bGthbl9kaXNwbGF5X2Nob29zZV90eXBlIChpbnN0YW5jZSk7CisKKyAgICB3aW5zeXNfZXh0X25hbWUgPQorICAgICAgICBnc3RfdnVsa2FuX2Rpc3BsYXlfdHlwZV90b19leHRlbnNpb25fc3RyaW5nIChkaXNwbGF5X3R5cGUpOworICAgIGlmICghd2luc3lzX2V4dF9uYW1lKSB7CisgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGluc3RhbmNlLCAiTm8gd2luZG93IHN5c3RlbSBleHRlbnNpb24gZW5hYmxlZCIpOworICAgICAgd2luc3lzX2V4dF9mb3VuZCA9IFRSVUU7ICAvKiBEb24ndCBlcnJvciBvdXQgY29tcGxldGVseSAqLworICAgIH0KKworICAgIC8qIFRPRE86IGFsbG93IG91dHNpZGUgc2VsZWN0aW9uICovCisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGluc3RhbmNlX2V4dGVuc2lvbl9jb3VudDsgaSsrKSB7CisgICAgICBHU1RfVFJBQ0VfT0JKRUNUIChpbnN0YW5jZSwgImNoZWNraW5nIGluc3RhbmNlIGV4dGVuc2lvbiAlcyIsCisgICAgICAgICAgaW5zdGFuY2VfZXh0ZW5zaW9uc1tpXS5leHRlbnNpb25OYW1lKTsKKworICAgICAgaWYgKCFnX3N0cmNtcDAgKFZLX0tIUl9TVVJGQUNFX0VYVEVOU0lPTl9OQU1FLAorICAgICAgICAgICAgICBpbnN0YW5jZV9leHRlbnNpb25zW2ldLmV4dGVuc2lvbk5hbWUpKSB7CisgICAgICAgIHN3YXBjaGFpbl9leHRfZm91bmQgPSBUUlVFOworICAgICAgICBleHRlbnNpb25fbmFtZXNbZW5hYmxlZF9leHRlbnNpb25fY291bnQrK10gPQorICAgICAgICAgICAgKGdjaGFyICopIFZLX0tIUl9TVVJGQUNFX0VYVEVOU0lPTl9OQU1FOworICAgICAgfQorICAgICAgaWYgKCFnX3N0cmNtcDAgKFZLX0VYVF9ERUJVR19SRVBPUlRfRVhURU5TSU9OX05BTUUsCisgICAgICAgICAgICAgIGluc3RhbmNlX2V4dGVuc2lvbnNbaV0uZXh0ZW5zaW9uTmFtZSkpIHsKKyAgICAgICAgZXh0ZW5zaW9uX25hbWVzW2VuYWJsZWRfZXh0ZW5zaW9uX2NvdW50KytdID0KKyAgICAgICAgICAgIChnY2hhciAqKSBWS19FWFRfREVCVUdfUkVQT1JUX0VYVEVOU0lPTl9OQU1FOworICAgICAgfQorICAgICAgaWYgKCFnX3N0cmNtcDAgKHdpbnN5c19leHRfbmFtZSwgaW5zdGFuY2VfZXh0ZW5zaW9uc1tpXS5leHRlbnNpb25OYW1lKSkgeworICAgICAgICB3aW5zeXNfZXh0X2ZvdW5kID0gVFJVRTsKKyAgICAgICAgZXh0ZW5zaW9uX25hbWVzW2VuYWJsZWRfZXh0ZW5zaW9uX2NvdW50KytdID0gKGdjaGFyICopIHdpbnN5c19leHRfbmFtZTsKKyAgICAgIH0KKyAgICAgIGdfYXNzZXJ0IChlbmFibGVkX2V4dGVuc2lvbl9jb3VudCA8IDY0KTsKKyAgICB9CisgICAgaWYgKCFzd2FwY2hhaW5fZXh0X2ZvdW5kKSB7CisgICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCwKKyAgICAgICAgICAidmtFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMgZmFpbGVkIHRvIGZpbmQgdGhlIHJlcXVpcmVkICIKKyAgICAgICAgICAiXCIiIFZLX0tIUl9TVVJGQUNFX0VYVEVOU0lPTl9OQU1FICJcIiBleHRlbnNpb24iKTsKKyAgICAgIGdfZnJlZSAoaW5zdGFuY2VfbGF5ZXJzKTsKKyAgICAgIGdfZnJlZSAoaW5zdGFuY2VfZXh0ZW5zaW9ucyk7CisgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoIXdpbnN5c19leHRfZm91bmQpIHsKKyAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX1ZVTEtBTl9FUlJPUiwgVktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVELAorICAgICAgICAgICJ2a0VudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcyBmYWlsZWQgdG8gZmluZCB0aGUgcmVxdWlyZWQgIgorICAgICAgICAgICJcIiVzXCIgd2luZG93IHN5c3RlbSBleHRlbnNpb24iLCB3aW5zeXNfZXh0X25hbWUpOworICAgICAgZ19mcmVlIChpbnN0YW5jZV9sYXllcnMpOworICAgICAgZ19mcmVlIChpbnN0YW5jZV9leHRlbnNpb25zKTsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICB9CisKKyAgeworICAgIFZrQXBwbGljYXRpb25JbmZvIGFwcCA9IHsgMCwgfTsKKyAgICBWa0luc3RhbmNlQ3JlYXRlSW5mbyBpbnN0X2luZm8gPSB7IDAsIH07CisKKyAgICBhcHAuc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9BUFBMSUNBVElPTl9JTkZPOworICAgIGFwcC5wTmV4dCA9IE5VTEw7CisgICAgYXBwLnBBcHBsaWNhdGlvbk5hbWUgPSBBUFBfU0hPUlRfTkFNRTsKKyAgICBhcHAuYXBwbGljYXRpb25WZXJzaW9uID0gMDsKKyAgICBhcHAucEVuZ2luZU5hbWUgPSBBUFBfU0hPUlRfTkFNRTsKKyAgICBhcHAuZW5naW5lVmVyc2lvbiA9IDA7CisgICAgYXBwLmFwaVZlcnNpb24gPSBWS19BUElfVkVSU0lPTjsKKworICAgIGluc3RfaW5mby5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0lOU1RBTkNFX0NSRUFURV9JTkZPOworICAgIGluc3RfaW5mby5wTmV4dCA9IE5VTEw7CisgICAgaW5zdF9pbmZvLnBBcHBsaWNhdGlvbkluZm8gPSAmYXBwOworICAgIGluc3RfaW5mby5lbmFibGVkTGF5ZXJDb3VudCA9IGVuYWJsZWRfbGF5ZXJfY291bnQ7CisgICAgaW5zdF9pbmZvLnBwRW5hYmxlZExheWVyTmFtZXMgPQorICAgICAgICAoY29uc3QgY2hhciAqY29uc3QgKikgaW5zdGFuY2VfdmFsaWRhdGlvbl9sYXllcnM7CisgICAgaW5zdF9pbmZvLmVuYWJsZWRFeHRlbnNpb25Db3VudCA9IGVuYWJsZWRfZXh0ZW5zaW9uX2NvdW50OworICAgIGluc3RfaW5mby5wcEVuYWJsZWRFeHRlbnNpb25OYW1lcyA9IChjb25zdCBjaGFyICpjb25zdCAqKSBleHRlbnNpb25fbmFtZXM7CisKKyAgICBlcnIgPSB2a0NyZWF0ZUluc3RhbmNlICgmaW5zdF9pbmZvLCBOVUxMLCAmaW5zdGFuY2UtPmluc3RhbmNlKTsKKyAgICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLCAidmtDcmVhdGVJbnN0YW5jZSIpIDwgMCkgeworICAgICAgZ19mcmVlIChpbnN0YW5jZV9sYXllcnMpOworICAgICAgZ19mcmVlIChpbnN0YW5jZV9leHRlbnNpb25zKTsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICB9CisKKyAgZ19mcmVlIChpbnN0YW5jZV9sYXllcnMpOworICBnX2ZyZWUgKGluc3RhbmNlX2V4dGVuc2lvbnMpOworCisgIGVyciA9CisgICAgICB2a0VudW1lcmF0ZVBoeXNpY2FsRGV2aWNlcyAoaW5zdGFuY2UtPmluc3RhbmNlLAorICAgICAgJmluc3RhbmNlLT5uX3BoeXNpY2FsX2RldmljZXMsIE5VTEwpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLAorICAgICAgICAgICJ2a0VudW1lcmF0ZVBoeXNpY2FsRGV2aWNlcyIpIDwgMCkKKyAgICBnb3RvIGVycm9yOworICBnX2Fzc2VydCAoaW5zdGFuY2UtPm5fcGh5c2ljYWxfZGV2aWNlcyA+IDApOworICBpbnN0YW5jZS0+cGh5c2ljYWxfZGV2aWNlcyA9CisgICAgICBnX25ldzAgKFZrUGh5c2ljYWxEZXZpY2UsIGluc3RhbmNlLT5uX3BoeXNpY2FsX2RldmljZXMpOworICBlcnIgPQorICAgICAgdmtFbnVtZXJhdGVQaHlzaWNhbERldmljZXMgKGluc3RhbmNlLT5pbnN0YW5jZSwKKyAgICAgICZpbnN0YW5jZS0+bl9waHlzaWNhbF9kZXZpY2VzLCBpbnN0YW5jZS0+cGh5c2ljYWxfZGV2aWNlcyk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsCisgICAgICAgICAgInZrRW51bWVyYXRlUGh5c2ljYWxEZXZpY2VzIikgPCAwKQorICAgIGdvdG8gZXJyb3I7CisKKyAgaW5zdGFuY2UtPmRiZ0NyZWF0ZURlYnVnUmVwb3J0Q2FsbGJhY2sgPSAoUEZOX3ZrQ3JlYXRlRGVidWdSZXBvcnRDYWxsYmFja0VYVCkKKyAgICAgIGdzdF92dWxrYW5faW5zdGFuY2VfZ2V0X3Byb2NfYWRkcmVzcyAoaW5zdGFuY2UsCisgICAgICAidmtDcmVhdGVEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUIik7CisgIGlmICghaW5zdGFuY2UtPmRiZ0NyZWF0ZURlYnVnUmVwb3J0Q2FsbGJhY2spIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCwKKyAgICAgICAgIkZhaWxlZCB0byByZXRyZWl2ZSB2a0NyZWF0ZURlYnVnUmVwb3J0Q2FsbGJhY2siKTsKKyAgICBnb3RvIGVycm9yOworICB9CisgIGluc3RhbmNlLT5kYmdEZXN0cm95RGVidWdSZXBvcnRDYWxsYmFjayA9CisgICAgICAoUEZOX3ZrRGVzdHJveURlYnVnUmVwb3J0Q2FsbGJhY2tFWFQpCisgICAgICBnc3RfdnVsa2FuX2luc3RhbmNlX2dldF9wcm9jX2FkZHJlc3MgKGluc3RhbmNlLAorICAgICAgInZrRGVzdHJveURlYnVnUmVwb3J0Q2FsbGJhY2tFWFQiKTsKKyAgaWYgKCFpbnN0YW5jZS0+ZGJnRGVzdHJveURlYnVnUmVwb3J0Q2FsbGJhY2spIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCwKKyAgICAgICAgIkZhaWxlZCB0byByZXRyZWl2ZSB2a0Rlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxiYWNrIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorICBpbnN0YW5jZS0+ZGJnUmVwb3J0TWVzc2FnZSA9IChQRk5fdmtEZWJ1Z1JlcG9ydE1lc3NhZ2VFWFQpCisgICAgICBnc3RfdnVsa2FuX2luc3RhbmNlX2dldF9wcm9jX2FkZHJlc3MgKGluc3RhbmNlLAorICAgICAgInZrRGVidWdSZXBvcnRNZXNzYWdlRVhUIik7CisgIGlmICghaW5zdGFuY2UtPmRiZ1JlcG9ydE1lc3NhZ2UpIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCwKKyAgICAgICAgIkZhaWxlZCB0byByZXRyZWl2ZSB2a0RlYnVnUmVwb3J0TWVzc2FnZSIpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICB7CisgICAgVmtEZWJ1Z1JlcG9ydENhbGxiYWNrQ3JlYXRlSW5mb0VYVCBpbmZvID0geyAwLCB9OworCisgICAgaW5mby5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0RFQlVHX1JFUE9SVF9DUkVBVEVfSU5GT19FWFQ7CisgICAgaW5mby5wTmV4dCA9IE5VTEw7CisgICAgaW5mby5mbGFncyA9CisgICAgICAgIFZLX0RFQlVHX1JFUE9SVF9FUlJPUl9CSVRfRVhUIHwgVktfREVCVUdfUkVQT1JUX1dBUk5JTkdfQklUX0VYVCB8CisgICAgICAgIFZLX0RFQlVHX1JFUE9SVF9JTkZPUk1BVElPTl9CSVRfRVhUIHwgVktfREVCVUdfUkVQT1JUX0RFQlVHX0JJVF9FWFQgfAorICAgICAgICBWS19ERUJVR19SRVBPUlRfUEVSRk9STUFOQ0VfV0FSTklOR19CSVRfRVhUOworICAgIGluZm8ucGZuQ2FsbGJhY2sgPSAoUEZOX3ZrRGVidWdSZXBvcnRDYWxsYmFja0VYVCkgX2dzdF92a19kZWJ1Z19jYWxsYmFjazsKKyAgICBpbmZvLnBVc2VyRGF0YSA9IE5VTEw7CisKKyAgICBlcnIgPQorICAgICAgICBpbnN0YW5jZS0+ZGJnQ3JlYXRlRGVidWdSZXBvcnRDYWxsYmFjayAoaW5zdGFuY2UtPmluc3RhbmNlLCAmaW5mbywgTlVMTCwKKyAgICAgICAgJmluc3RhbmNlLT5tc2dfY2FsbGJhY2spOworICAgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsCisgICAgICAgICAgICAidmtDcmVhdGVEZWJ1Z1JlcG9ydENhbGxiYWNrIikgPCAwKQorICAgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGluc3RhbmNlLT5wcml2LT5vcGVuZWQgPSBUUlVFOworICBHU1RfT0JKRUNUX1VOTE9DSyAoaW5zdGFuY2UpOworCisgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgeworICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChpbnN0YW5jZSk7CisgICAgcmV0dXJuIEZBTFNFOworICB9Cit9CisKK2dwb2ludGVyCitnc3RfdnVsa2FuX2luc3RhbmNlX2dldF9wcm9jX2FkZHJlc3MgKEdzdFZ1bGthbkluc3RhbmNlICogaW5zdGFuY2UsCisgICAgY29uc3QgZ2NoYXIgKiBuYW1lKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1ZVTEtBTl9JTlNUQU5DRSAoaW5zdGFuY2UpLCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGluc3RhbmNlLT5pbnN0YW5jZSAhPSBOVUxMLCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKG5hbWUgIT0gTlVMTCwgTlVMTCk7CisKKyAgR1NUX1RSQUNFX09CSkVDVCAoaW5zdGFuY2UsICIlcyIsIG5hbWUpOworCisgIHJldHVybiB2a0dldEluc3RhbmNlUHJvY0FkZHIgKGluc3RhbmNlLT5pbnN0YW5jZSwgbmFtZSk7Cit9CisKK0dzdFZ1bGthbkRldmljZSAqCitnc3RfdnVsa2FuX2luc3RhbmNlX2NyZWF0ZV9kZXZpY2UgKEdzdFZ1bGthbkluc3RhbmNlICogaW5zdGFuY2UsCisgICAgR0Vycm9yICoqIGVycm9yKQoreworICBHc3RWdWxrYW5EZXZpY2UgKmRldmljZTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1ZVTEtBTl9JTlNUQU5DRSAoaW5zdGFuY2UpLCBOVUxMKTsKKworICBnX3NpZ25hbF9lbWl0IChpbnN0YW5jZSwgZ3N0X3Z1bGthbl9pbnN0YW5jZV9zaWduYWxzW1NJR05BTF9DUkVBVEVfREVWSUNFXSwgMCwKKyAgICAgICZkZXZpY2UpOworCisgIGlmICghZGV2aWNlKQorICAgIGRldmljZSA9IGdzdF92dWxrYW5fZGV2aWNlX25ldyAoaW5zdGFuY2UpOworCisgIGlmICghZ3N0X3Z1bGthbl9kZXZpY2Vfb3BlbiAoZGV2aWNlLCBlcnJvcikpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChkZXZpY2UpOworICAgIGRldmljZSA9IE5VTEw7CisgIH0KKworICByZXR1cm4gZGV2aWNlOworfQorCisvKioKKyAqIGdzdF9jb250ZXh0X3NldF92dWxrYW5faW5zdGFuY2U6CisgKiBAY29udGV4dDogYSAjR3N0Q29udGV4dAorICogQGluc3RhbmNlOiBhICNHc3RWdWxrYW5JbnN0YW5jZQorICoKKyAqIFNldHMgQGluc3RhbmNlIG9uIEBjb250ZXh0CisgKgorICogU2luY2U6IDEuMTAKKyAqLwordm9pZAorZ3N0X2NvbnRleHRfc2V0X3Z1bGthbl9pbnN0YW5jZSAoR3N0Q29udGV4dCAqIGNvbnRleHQsCisgICAgR3N0VnVsa2FuSW5zdGFuY2UgKiBpbnN0YW5jZSkKK3sKKyAgR3N0U3RydWN0dXJlICpzOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKGNvbnRleHQgIT0gTlVMTCk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKGdzdF9jb250ZXh0X2lzX3dyaXRhYmxlIChjb250ZXh0KSk7CisKKyAgaWYgKGluc3RhbmNlKQorICAgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0NPTlRFWFQsCisgICAgICAgICJzZXR0aW5nIEdzdFZ1bGthbkluc3RhbmNlKCUiIEdTVF9QVFJfRk9STUFUICIpIG9uIGNvbnRleHQoJSIKKyAgICAgICAgR1NUX1BUUl9GT1JNQVQgIikiLCBpbnN0YW5jZSwgY29udGV4dCk7CisKKyAgcyA9IGdzdF9jb250ZXh0X3dyaXRhYmxlX3N0cnVjdHVyZSAoY29udGV4dCk7CisgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCBHU1RfVlVMS0FOX0lOU1RBTkNFX0NPTlRFWFRfVFlQRV9TVFIsCisgICAgICBHU1RfVFlQRV9WVUxLQU5fSU5TVEFOQ0UsIGluc3RhbmNlLCBOVUxMKTsKK30KKworLyoqCisgKiBnc3RfY29udGV4dF9nZXRfdnVsa2FuX2luc3RhbmNlOgorICogQGNvbnRleHQ6IGEgI0dzdENvbnRleHQKKyAqIEBpbnN0YW5jZTogcmVzdWx0aW5nICNHc3RWdWxrYW5JbnN0YW5jZQorICoKKyAqIFJldHVybnM6IFdoZXRoZXIgQGluc3RhbmNlIHdhcyBpbiBAY29udGV4dAorICoKKyAqIFNpbmNlOiAxLjEwCisgKi8KK2dib29sZWFuCitnc3RfY29udGV4dF9nZXRfdnVsa2FuX2luc3RhbmNlIChHc3RDb250ZXh0ICogY29udGV4dCwKKyAgICBHc3RWdWxrYW5JbnN0YW5jZSAqKiBpbnN0YW5jZSkKK3sKKyAgY29uc3QgR3N0U3RydWN0dXJlICpzOworICBnYm9vbGVhbiByZXQ7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGluc3RhbmNlICE9IE5VTEwsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbnRleHQgIT0gTlVMTCwgRkFMU0UpOworCisgIHMgPSBnc3RfY29udGV4dF9nZXRfc3RydWN0dXJlIChjb250ZXh0KTsKKyAgcmV0ID0gZ3N0X3N0cnVjdHVyZV9nZXQgKHMsIEdTVF9WVUxLQU5fSU5TVEFOQ0VfQ09OVEVYVF9UWVBFX1NUUiwKKyAgICAgIEdTVF9UWVBFX1ZVTEtBTl9JTlNUQU5DRSwgaW5zdGFuY2UsIE5VTEwpOworCisgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0NPTlRFWFQsICJnb3QgR3N0VnVsa2FuSW5zdGFuY2UoJSIgR1NUX1BUUl9GT1JNQVQKKyAgICAgICIpIGZyb20gY29udGV4dCglIiBHU1RfUFRSX0ZPUk1BVCAiKSIsICppbnN0YW5jZSwgY29udGV4dCk7CisKKyAgcmV0dXJuIHJldDsKK30KKworZ2Jvb2xlYW4KK2dzdF92dWxrYW5faW5zdGFuY2VfaGFuZGxlX2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgIEdzdFF1ZXJ5ICogcXVlcnksIEdzdFZ1bGthbkluc3RhbmNlICoqIGluc3RhbmNlKQoreworICBnYm9vbGVhbiByZXMgPSBGQUxTRTsKKyAgY29uc3QgZ2NoYXIgKmNvbnRleHRfdHlwZTsKKyAgR3N0Q29udGV4dCAqY29udGV4dCwgKm9sZF9jb250ZXh0OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChlbGVtZW50ICE9IE5VTEwsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHF1ZXJ5ICE9IE5VTEwsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9RVUVSWV9UWVBFIChxdWVyeSkgPT0gR1NUX1FVRVJZX0NPTlRFWFQsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGluc3RhbmNlICE9IE5VTEwsIEZBTFNFKTsKKworICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dF90eXBlIChxdWVyeSwgJmNvbnRleHRfdHlwZSk7CisKKyAgaWYgKGdfc3RyY21wMCAoY29udGV4dF90eXBlLCBHU1RfVlVMS0FOX0lOU1RBTkNFX0NPTlRFWFRfVFlQRV9TVFIpID09IDApIHsKKyAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZvbGRfY29udGV4dCk7CisKKyAgICBpZiAob2xkX2NvbnRleHQpCisgICAgICBjb250ZXh0ID0gZ3N0X2NvbnRleHRfY29weSAob2xkX2NvbnRleHQpOworICAgIGVsc2UKKyAgICAgIGNvbnRleHQgPSBnc3RfY29udGV4dF9uZXcgKEdTVF9WVUxLQU5fSU5TVEFOQ0VfQ09OVEVYVF9UWVBFX1NUUiwgVFJVRSk7CisKKyAgICBnc3RfY29udGV4dF9zZXRfdnVsa2FuX2luc3RhbmNlIChjb250ZXh0LCAqaW5zdGFuY2UpOworICAgIGdzdF9xdWVyeV9zZXRfY29udGV4dCAocXVlcnksIGNvbnRleHQpOworICAgIGdzdF9jb250ZXh0X3VucmVmIChjb250ZXh0KTsKKworICAgIHJlcyA9ICppbnN0YW5jZSAhPSBOVUxMOworICB9CisKKyAgcmV0dXJuIHJlczsKK30KKworZ2Jvb2xlYW4KK2dzdF92dWxrYW5faW5zdGFuY2VfcnVuX2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgIEdzdFZ1bGthbkluc3RhbmNlICoqIGluc3RhbmNlKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0VMRU1FTlQgKGVsZW1lbnQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChpbnN0YW5jZSAhPSBOVUxMLCBGQUxTRSk7CisKKyAgaWYgKCppbnN0YW5jZSAmJiBHU1RfSVNfVlVMS0FOX0lOU1RBTkNFICgqaW5zdGFuY2UpKQorICAgIHJldHVybiBUUlVFOworCisgIGdzdF92dWxrYW5fZ2xvYmFsX2NvbnRleHRfcXVlcnkgKGVsZW1lbnQsCisgICAgICBHU1RfVlVMS0FOX0lOU1RBTkNFX0NPTlRFWFRfVFlQRV9TVFIpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKGVsZW1lbnQsICJmb3VuZCBpbnN0YW5jZSAlcCIsICppbnN0YW5jZSk7CisKKyAgaWYgKCppbnN0YW5jZSkKKyAgICByZXR1cm4gVFJVRTsKKworICByZXR1cm4gRkFMU0U7Cit9CmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZraW5zdGFuY2UuaCBiL2V4dC92dWxrYW4vdmtpbnN0YW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3ZDhlNDkKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZraW5zdGFuY2UuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX1ZLX0lOU1RBTkNFX0hfCisjZGVmaW5lIF9WS19JTlNUQU5DRV9IXworCisjaW5jbHVkZSA8dmsuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX1ZVTEtBTl9JTlNUQU5DRSAgICAgICAgIChnc3RfdnVsa2FuX2luc3RhbmNlX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9WVUxLQU5fSU5TVEFOQ0UobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9UWVBFX1ZVTEtBTl9JTlNUQU5DRSwgR3N0VnVsa2FuSW5zdGFuY2UpKQorI2RlZmluZSBHU1RfVlVMS0FOX0lOU1RBTkNFX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGspLCBHU1RfVFlQRV9WVUxLQU5fSU5TVEFOQ0UsIEdzdFZ1bGthbkluc3RhbmNlQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX0lOU1RBTkNFKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfVFlQRV9WVUxLQU5fSU5TVEFOQ0UpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX0lOU1RBTkNFX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfVFlQRV9WVUxLQU5fSU5TVEFOQ0UpKQorI2RlZmluZSBHU1RfVlVMS0FOX0lOU1RBTkNFX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9UWVBFX1ZVTEtBTl9JTlNUQU5DRSwgR3N0VnVsa2FuSW5zdGFuY2VDbGFzcykpCitHVHlwZSBnc3RfdnVsa2FuX2luc3RhbmNlX2dldF90eXBlICAgICAgICh2b2lkKTsKKworI2RlZmluZSBHU1RfVlVMS0FOX0lOU1RBTkNFX0NPTlRFWFRfVFlQRV9TVFIgImdzdC52dWxrYW4uaW5zdGFuY2UiCisKK3N0cnVjdCBfR3N0VnVsa2FuSW5zdGFuY2UKK3sKKyAgR3N0T2JqZWN0IHBhcmVudDsKKworICBWa0luc3RhbmNlIGluc3RhbmNlOyAvKiBoaWRlcyBhIHBvaW50ZXIgKi8KKyAgVmtQaHlzaWNhbERldmljZSAqcGh5c2ljYWxfZGV2aWNlczsgLyogaGlkZXMgYSBwb2ludGVyICovCisgIGd1aW50MzIgbl9waHlzaWNhbF9kZXZpY2VzOworCisgIFZrRGVidWdSZXBvcnRDYWxsYmFja0VYVCBtc2dfY2FsbGJhY2s7CisgIFBGTl92a0NyZWF0ZURlYnVnUmVwb3J0Q2FsbGJhY2tFWFQgZGJnQ3JlYXRlRGVidWdSZXBvcnRDYWxsYmFjazsKKyAgUEZOX3ZrRGVzdHJveURlYnVnUmVwb3J0Q2FsbGJhY2tFWFQgZGJnRGVzdHJveURlYnVnUmVwb3J0Q2FsbGJhY2s7CisgIFBGTl92a0RlYnVnUmVwb3J0TWVzc2FnZUVYVCBkYmdSZXBvcnRNZXNzYWdlOworCisgIEdzdFZ1bGthbkluc3RhbmNlUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfR3N0VnVsa2FuSW5zdGFuY2VDbGFzcworeworICBHc3RPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitHc3RWdWxrYW5JbnN0YW5jZSAqIGdzdF92dWxrYW5faW5zdGFuY2VfbmV3ICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOworZ2Jvb2xlYW4gICAgICAgICAgICBnc3RfdnVsa2FuX2luc3RhbmNlX29wZW4gICAgICAgICAgICAgICAgICAgIChHc3RWdWxrYW5JbnN0YW5jZSAqIGluc3RhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyb3IpOworCitncG9pbnRlciAgICAgICAgICAgIGdzdF92dWxrYW5faW5zdGFuY2VfZ2V0X3Byb2NfYWRkcmVzcyAgICAgICAgKEdzdFZ1bGthbkluc3RhbmNlICogaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogbmFtZSk7CisKK0dzdFZ1bGthbkRldmljZSAqICAgZ3N0X3Z1bGthbl9pbnN0YW5jZV9jcmVhdGVfZGV2aWNlICAgICAgICAgICAoR3N0VnVsa2FuSW5zdGFuY2UgKiBpbnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycm9yKTsKKwordm9pZCAgICAgICAgICAgICAgICBnc3RfY29udGV4dF9zZXRfdnVsa2FuX2luc3RhbmNlICAgICAgICAgICAgIChHc3RDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuSW5zdGFuY2UgKiBpbnN0YW5jZSk7CitnYm9vbGVhbiAgICAgICAgICAgIGdzdF9jb250ZXh0X2dldF92dWxrYW5faW5zdGFuY2UgICAgICAgICAgICAgKEdzdENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5JbnN0YW5jZSAqKiBpbnN0YW5jZSk7CitnYm9vbGVhbiAgICAgICAgICAgIGdzdF92dWxrYW5faW5zdGFuY2VfaGFuZGxlX2NvbnRleHRfcXVlcnkgICAgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RRdWVyeSAqIHF1ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5JbnN0YW5jZSAqKiBpbnN0YW5jZSk7CitnYm9vbGVhbiAgICAgICAgICAgIGdzdF92dWxrYW5faW5zdGFuY2VfcnVuX2NvbnRleHRfcXVlcnkgICAgICAgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5JbnN0YW5jZSAqKiBpbnN0YW5jZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfVktfSU5TVEFOQ0VfSF8gKi8KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmttZW1vcnkuYyBiL2V4dC92dWxrYW4vdmttZW1vcnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mjg1NWMxCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a21lbW9yeS5jCkBAIC0wLDAgKzEsMzU5IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAidmttZW1vcnkuaCIKKworLyoqCisgKiBTRUNUSU9OOnZrbWVtb3J5CisgKiBAc2hvcnRfZGVzY3JpcHRpb246IG1lbW9yeSBzdWJjbGFzcyBmb3IgVnVsa2FuIGRldmljZSBtZW1vcnkKKyAqIEBzZWVfYWxzbzogI0dzdE1lbW9yeSwgI0dzdEFsbG9jYXRvcgorICoKKyAqIEdzdFZ1bGthbk1lbW9yeSBpcyBhICNHc3RNZW1vcnkgc3ViY2xhc3MgcHJvdmlkaW5nIHN1cHBvcnQgZm9yIHRoZSBtYXBwaW5nIG9mCisgKiBWdWxrYW4gZGV2aWNlIG1lbW9yeS4gIAorICovCisKKy8qIFdBUk5JTkc6IHdoaWxlIHN1YmFsbG9jYXRpb24gaXMgYWxsb3dlZCwgbm90aGluZyBwcmV2ZW50cyBhbGlhc2luZyB3aGljaAorICogcmVxdWlyZXMgZXh0ZXJuYWwgc3luY2hyb25pc2F0aW9uICovCisKKyNkZWZpbmUgR1NUX0NBVF9ERUZVQUxUIEdTVF9DQVRfVlVMS0FOX01FTU9SWQorR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9ERUZVQUxUKTsKKworc3RhdGljIEdzdEFsbG9jYXRvciAqX3Z1bGthbl9tZW1vcnlfYWxsb2NhdG9yOworCitzdGF0aWMgZ2NoYXIgKgorX21lbW9yeV9wcm9wZXJ0aWVzX3RvX3N0cmluZyAoVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIHByb3BfYml0cykKK3sKKyAgR1N0cmluZyAqczsKKyAgZ2Jvb2xlYW4gZmlyc3QgPSBUUlVFOworCisjZGVmaW5lIFNUUl9BUFBFTkQocyxzdHIpIFwKKyAgR19TVE1UX1NUQVJUIHsgXAorICAgIGlmICghZmlyc3QpIFwKKyAgICAgIGdfc3RyaW5nX2FwcGVuZCAocywgInwiKTsgXAorICAgIGdfc3RyaW5nX2FwcGVuZCAocywgc3RyKTsgXAorICAgIGZpcnN0ID0gRkFMU0U7IFwKKyAgfSBHX1NUTVRfRU5ECisKKyAgcyA9IGdfc3RyaW5nX25ldyAoTlVMTCk7CisgIGlmIChwcm9wX2JpdHMgJiBWS19NRU1PUllfUFJPUEVSVFlfREVWSUNFX0xPQ0FMX0JJVCkgeworICAgIFNUUl9BUFBFTkQgKHMsICJkZXZpY2UtbG9jYWwiKTsKKyAgfQorICBpZiAocHJvcF9iaXRzICYgVktfTUVNT1JZX1BST1BFUlRZX0hPU1RfVklTSUJMRV9CSVQpIHsKKyAgICBTVFJfQVBQRU5EIChzLCAiaG9zdC12aXNpYmxlIik7CisgICAgaWYgKHByb3BfYml0cyAmIFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX0NPSEVSRU5UX0JJVCkgeworICAgICAgU1RSX0FQUEVORCAocywgImhvc3QtY29oZXJlbnQiKTsKKyAgICB9IGVsc2UgeworICAgICAgU1RSX0FQUEVORCAocywgImhvc3QtaW5jb2hlcmVudCIpOworICAgIH0KKyAgICBpZiAocHJvcF9iaXRzICYgVktfTUVNT1JZX1BST1BFUlRZX0hPU1RfQ0FDSEVEX0JJVCkgeworICAgICAgU1RSX0FQUEVORCAocywgImhvc3QtY2FjaGVkIik7CisgICAgfSBlbHNlIHsKKyAgICAgIFNUUl9BUFBFTkQgKHMsICJob3N0LXVuY2FjaGVkIik7CisgICAgfQorICB9CisKKyAgaWYgKHByb3BfYml0cyAmIFZLX01FTU9SWV9QUk9QRVJUWV9MQVpJTFlfQUxMT0NBVEVEX0JJVCkgeworICAgIFNUUl9BUFBFTkQgKHMsICJsYXppbHktYWxsb2NhdGVkIik7CisgIH0KKworICByZXR1cm4gZ19zdHJpbmdfZnJlZSAocywgRkFMU0UpOworfQorCitzdGF0aWMgdm9pZAorX3ZrX21lbV9pbml0IChHc3RWdWxrYW5NZW1vcnkgKiBtZW0sIEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICBHc3RNZW1vcnkgKiBwYXJlbnQsIEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgZ3VpbnQzMiBtZW1vcnlfdHlwZV9pbmRleCwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLCBnc2l6ZSBzaXplLAorICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyBtZW1fcHJvcF9mbGFncywgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgZ3NpemUgYWxpZ24gPSBnc3RfbWVtb3J5X2FsaWdubWVudCwgb2Zmc2V0ID0gMCwgbWF4c2l6ZSA9IHNpemU7CisgIEdzdE1lbW9yeUZsYWdzIGZsYWdzID0gMDsKKyAgZ2NoYXIgKnByb3BzX3N0cjsKKworICBpZiAocGFyYW1zKSB7CisgICAgZmxhZ3MgPSBwYXJhbXMtPmZsYWdzOworICAgIGFsaWduIHw9IHBhcmFtcy0+YWxpZ247CisgICAgb2Zmc2V0ID0gcGFyYW1zLT5wcmVmaXg7CisgICAgbWF4c2l6ZSArPSBwYXJhbXMtPnByZWZpeCArIHBhcmFtcy0+cGFkZGluZzsKKyAgICBpZiAoKG1heHNpemUgJiBhbGlnbikgIT0gMCkKKyAgICAgIG1heHNpemUgKz0gfihtYXhzaXplICYgYWxpZ24pICsgMTsKKyAgfQorCisgIGdzdF9tZW1vcnlfaW5pdCAoR1NUX01FTU9SWV9DQVNUIChtZW0pLCBmbGFncywgYWxsb2NhdG9yLCBwYXJlbnQsIG1heHNpemUsCisgICAgICBhbGlnbiwgb2Zmc2V0LCBzaXplKTsKKworICBtZW0tPmRldmljZSA9IGdzdF9vYmplY3RfcmVmIChkZXZpY2UpOworICBtZW0tPmFsbG9jX2luZm8uc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9NRU1PUllfQUxMT0NBVEVfSU5GTzsKKyAgbWVtLT5hbGxvY19pbmZvLnBOZXh0ID0gTlVMTDsKKyAgbWVtLT5hbGxvY19pbmZvLmFsbG9jYXRpb25TaXplID0gKFZrRGV2aWNlU2l6ZSkgbWVtLT5tZW0ubWF4c2l6ZTsKKyAgbWVtLT5hbGxvY19pbmZvLm1lbW9yeVR5cGVJbmRleCA9IG1lbW9yeV90eXBlX2luZGV4OworICBtZW0tPnByb3BlcnRpZXMgPSBtZW1fcHJvcF9mbGFnczsKKyAgbWVtLT5ub3RpZnkgPSBub3RpZnk7CisgIG1lbS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworICBtZW0tPnZrX29mZnNldCA9IDA7CisKKyAgZ19tdXRleF9pbml0ICgmbWVtLT5sb2NrKTsKKworICBwcm9wc19zdHIgPSBfbWVtb3J5X3Byb3BlcnRpZXNfdG9fc3RyaW5nIChtZW1fcHJvcF9mbGFncyk7CisKKyAgR1NUX0NBVF9ERUJVRyAoR1NUX0NBVF9WVUxLQU5fTUVNT1JZLCAibmV3IFZ1bGthbiBtZW1vcnk6JXAgc2l6ZTolIgorICAgICAgR19HU0laRV9GT1JNQVQgIiBwcm9wZXJ0aWVzOiVzIiwgbWVtLCBtYXhzaXplLCBwcm9wc19zdHIpOworCisgIGdfZnJlZSAocHJvcHNfc3RyKTsKK30KKworc3RhdGljIEdzdFZ1bGthbk1lbW9yeSAqCitfdmtfbWVtX25ldyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBwYXJlbnQsCisgICAgR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBndWludDMyIG1lbW9yeV90eXBlX2luZGV4LAorICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsIGdzaXplIHNpemUsCisgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIG1lbV9wcm9wc19mbGFncywgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgR3N0VnVsa2FuTWVtb3J5ICptZW0gPSBnX25ldzAgKEdzdFZ1bGthbk1lbW9yeSwgMSk7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworICBWa1Jlc3VsdCBlcnI7CisKKyAgX3ZrX21lbV9pbml0IChtZW0sIGFsbG9jYXRvciwgcGFyZW50LCBkZXZpY2UsIG1lbW9yeV90eXBlX2luZGV4LCBwYXJhbXMsCisgICAgICBzaXplLCBtZW1fcHJvcHNfZmxhZ3MsIHVzZXJfZGF0YSwgbm90aWZ5KTsKKworICBlcnIgPQorICAgICAgdmtBbGxvY2F0ZU1lbW9yeSAoZGV2aWNlLT5kZXZpY2UsICZtZW0tPmFsbG9jX2luZm8sIE5VTEwsICZtZW0tPm1lbV9wdHIpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsICZlcnJvciwgInZrQWxsb2NNZW1vcnkiKSA8IDApIHsKKyAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX1ZVTEtBTl9NRU1PUlksICJGYWlsZWQgdG8gYWxsb2NhdGUgZGV2aWNlIG1lbW9yeSAlcyIsCisgICAgICAgIGVycm9yLT5tZXNzYWdlKTsKKyAgICBnc3RfbWVtb3J5X3VucmVmICgoR3N0TWVtb3J5ICopIG1lbSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHJldHVybiBtZW07Cit9CisKK3N0YXRpYyBncG9pbnRlcgorX3ZrX21lbV9tYXBfZnVsbCAoR3N0VnVsa2FuTWVtb3J5ICogbWVtLCBHc3RNYXBJbmZvICogaW5mbywgZ3NpemUgc2l6ZSkKK3sKKyAgZ3BvaW50ZXIgZGF0YTsKKyAgVmtSZXN1bHQgZXJyOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBpZiAoKG1lbS0+cHJvcGVydGllcyAmIFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX1ZJU0lCTEVfQklUKSA9PSAwKSB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9WVUxLQU5fTUVNT1JZLCAiQ2Fubm90IG1hcCBob3N0LWludmlzaWJsZSBtZW1vcnkiKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIGVyciA9IHZrTWFwTWVtb3J5IChtZW0tPmRldmljZS0+ZGV2aWNlLCBtZW0tPm1lbV9wdHIsIG1lbS0+dmtfb2Zmc2V0LAorICAgICAgc2l6ZSwgMCwgJmRhdGEpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsICZlcnJvciwgInZrTWFwTWVtb3J5IikgPCAwKSB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9WVUxLQU5fTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBkZXZpY2UgbWVtb3J5ICVzIiwKKyAgICAgICAgZXJyb3ItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICByZXR1cm4gZGF0YTsKK30KKworc3RhdGljIHZvaWQKK192a19tZW1fdW5tYXBfZnVsbCAoR3N0VnVsa2FuTWVtb3J5ICogbWVtLCBHc3RNYXBJbmZvICogaW5mbykKK3sKKyAgdmtVbm1hcE1lbW9yeSAobWVtLT5kZXZpY2UtPmRldmljZSwgbWVtLT5tZW1fcHRyKTsKK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitfdmtfbWVtX2NvcHkgKEdzdFZ1bGthbk1lbW9yeSAqIHNyYywgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCit7CisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgR3N0TWVtb3J5ICoKK192a19tZW1fc2hhcmUgKEdzdFZ1bGthbk1lbW9yeSAqIG1lbSwgZ3NzaXplIG9mZnNldCwgZ3NpemUgc2l6ZSkKK3sKKyAgR3N0VnVsa2FuTWVtb3J5ICpzaGFyZWQgPSBnX25ldzAgKEdzdFZ1bGthbk1lbW9yeSwgMSk7CisgIEdzdFZ1bGthbk1lbW9yeSAqcGFyZW50ID0gbWVtOworICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtcyA9IHsgMCwgfTsKKworICBpZiAoc2l6ZSA9PSAtMSkKKyAgICBzaXplID0gbWVtLT5tZW0uc2l6ZSAtIG9mZnNldDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2l6ZSA+IDAsIE5VTEwpOworCisgIHdoaWxlICgocGFyZW50ID0gKEdzdFZ1bGthbk1lbW9yeSAqKSAoR1NUX01FTU9SWV9DQVNUIChwYXJlbnQpLT5wYXJlbnQpKSk7CisKKyAgcGFyYW1zLmZsYWdzID0gR1NUX01FTU9SWV9GTEFHUyAobWVtKTsKKyAgcGFyYW1zLmFsaWduID0gR1NUX01FTU9SWV9DQVNUIChwYXJlbnQpLT5hbGlnbjsKKworICBfdmtfbWVtX2luaXQgKHNoYXJlZCwgX3Z1bGthbl9tZW1vcnlfYWxsb2NhdG9yLCBHU1RfTUVNT1JZX0NBU1QgKG1lbSksCisgICAgICBwYXJlbnQtPmRldmljZSwgcGFyZW50LT5hbGxvY19pbmZvLm1lbW9yeVR5cGVJbmRleCwgJnBhcmFtcywgc2l6ZSwKKyAgICAgIHBhcmVudC0+cHJvcGVydGllcywgTlVMTCwgTlVMTCk7CisgIHNoYXJlZC0+bWVtX3B0ciA9IHBhcmVudC0+bWVtX3B0cjsKKyAgc2hhcmVkLT53cmFwcGVkID0gVFJVRTsKKyAgc2hhcmVkLT52a19vZmZzZXQgPSBvZmZzZXQgKyBtZW0tPnZrX29mZnNldDsKKworICByZXR1cm4gR1NUX01FTU9SWV9DQVNUIChzaGFyZWQpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK192a19tZW1faXNfc3BhbiAoR3N0VnVsa2FuTWVtb3J5ICogbWVtMSwgR3N0VnVsa2FuTWVtb3J5ICogbWVtMiwgZ3NpemUgKiBvZmZzZXQpCit7CisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitfdmtfbWVtX2FsbG9jIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIGdzaXplIHNpemUsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcykKK3sKKyAgZ19jcml0aWNhbCAoIlN1YmNsYXNzIHNob3VsZCBvdmVycmlkZSBHc3RBbGxvY2F0b3JDbGFzczo6YWxsb2MoKSBmdW5jdGlvbiIpOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZAorX3ZrX21lbV9mcmVlIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIEdzdE1lbW9yeSAqIG1lbW9yeSkKK3sKKyAgR3N0VnVsa2FuTWVtb3J5ICptZW0gPSAoR3N0VnVsa2FuTWVtb3J5ICopIG1lbW9yeTsKKworICBHU1RfQ0FUX1RSQUNFIChHU1RfQ0FUX1ZVTEtBTl9NRU1PUlksICJmcmVlaW5nIGJ1ZmZlciBtZW1vcnk6JXAgIgorICAgICAgImlkOiUiIEdfR1VJTlQ2NF9GT1JNQVQsIG1lbSwgKGd1aW50NjQpIG1lbS0+bWVtX3B0cik7CisKKyAgZ19tdXRleF9jbGVhciAoJm1lbS0+bG9jayk7CisKKyAgaWYgKG1lbS0+bm90aWZ5KQorICAgIG1lbS0+bm90aWZ5IChtZW0tPnVzZXJfZGF0YSk7CisKKyAgaWYgKG1lbS0+bWVtX3B0ciAmJiAhbWVtLT53cmFwcGVkKQorICAgIHZrRnJlZU1lbW9yeSAobWVtLT5kZXZpY2UtPmRldmljZSwgbWVtLT5tZW1fcHRyLCBOVUxMKTsKKworICBnc3Rfb2JqZWN0X3VucmVmIChtZW0tPmRldmljZSk7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX21lbW9yeV9maW5kX21lbW9yeV90eXBlX2luZGV4X3dpdGhfdHlwZV9wcm9wZXJ0aWVzIChHc3RWdWxrYW5EZXZpY2UgKgorICAgIGRldmljZSwgZ3VpbnQzMiB0eXBlQml0cywgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIHByb3BlcnRpZXMsCisgICAgZ3VpbnQzMiAqIHR5cGVJbmRleCkKK3sKKyAgZ3VpbnQzMiBpOworCisgIC8qIFNlYXJjaCBtZW10eXBlcyB0byBmaW5kIGZpcnN0IGluZGV4IHdpdGggdGhvc2UgcHJvcGVydGllcyAqLworICBmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgeworICAgIGlmICgodHlwZUJpdHMgJiAxKSA9PSAxKSB7CisgICAgICAvKiBUeXBlIGlzIGF2YWlsYWJsZSwgZG9lcyBpdCBtYXRjaCB1c2VyIHByb3BlcnRpZXM/ICovCisgICAgICBpZiAoKGRldmljZS0+bWVtb3J5X3Byb3BlcnRpZXMubWVtb3J5VHlwZXNbaV0uCisgICAgICAgICAgICAgIHByb3BlcnR5RmxhZ3MgJiBwcm9wZXJ0aWVzKSA9PSBwcm9wZXJ0aWVzKSB7CisgICAgICAgICp0eXBlSW5kZXggPSBpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgIH0KKyAgICB9CisgICAgdHlwZUJpdHMgPj49IDE7CisgIH0KKworICByZXR1cm4gRkFMU0U7Cit9CisKKy8qKgorICogZ3N0X3Z1bGthbl9tZW1vcnlfYWxsb2M6CisgKiBAZGV2aWNlOmEgI0dzdFZ1bGthbkRldmljZQorICogQG1lbW9yeV90eXBlX2luZGV4OiB0aGUgVnVsa2FuIG1lbW9yeSB0eXBlIGluZGV4CisgKiBAcGFyYW1zOiBhICNHc3RBbGxvY2F0aW9uUGFyYW1zCisgKiBAc2l6ZTogdGhlIHNpemUgdG8gYWxsb2NhdGUKKyAqCisgKiBBbGxvY2F0ZWQgYSBuZXcgI0dzdFZ1bGthbk1lbW9yeS4KKyAqCisgKiBSZXR1cm5zOiBhICNHc3RNZW1vcnkgb2JqZWN0IGJhY2tlZCBieSBhIHZ1bGthbiBkZXZpY2UgbWVtb3J5CisgKi8KK0dzdE1lbW9yeSAqCitnc3RfdnVsa2FuX21lbW9yeV9hbGxvYyAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBndWludDMyIG1lbW9yeV90eXBlX2luZGV4LAorICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsIGdzaXplIHNpemUsIFZrTWVtb3J5UHJvcGVydHlGbGFncyBtZW1fZmxhZ3MpCit7CisgIEdzdFZ1bGthbk1lbW9yeSAqbWVtOworCisgIG1lbSA9IF92a19tZW1fbmV3IChfdnVsa2FuX21lbW9yeV9hbGxvY2F0b3IsIE5VTEwsIGRldmljZSwgbWVtb3J5X3R5cGVfaW5kZXgsCisgICAgICBwYXJhbXMsIHNpemUsIG1lbV9mbGFncywgTlVMTCwgTlVMTCk7CisKKyAgcmV0dXJuIChHc3RNZW1vcnkgKikgbWVtOworfQorCitHX0RFRklORV9UWVBFIChHc3RWdWxrYW5NZW1vcnlBbGxvY2F0b3IsIGdzdF92dWxrYW5fbWVtb3J5X2FsbG9jYXRvciwKKyAgICBHU1RfVFlQRV9BTExPQ0FUT1IpOworCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9tZW1vcnlfYWxsb2NhdG9yX2NsYXNzX2luaXQgKEdzdFZ1bGthbk1lbW9yeUFsbG9jYXRvckNsYXNzICoga2xhc3MpCit7CisgIEdzdEFsbG9jYXRvckNsYXNzICphbGxvY2F0b3JfY2xhc3MgPSAoR3N0QWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7CisKKyAgYWxsb2NhdG9yX2NsYXNzLT5hbGxvYyA9IF92a19tZW1fYWxsb2M7CisgIGFsbG9jYXRvcl9jbGFzcy0+ZnJlZSA9IF92a19tZW1fZnJlZTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fbWVtb3J5X2FsbG9jYXRvcl9pbml0IChHc3RWdWxrYW5NZW1vcnlBbGxvY2F0b3IgKiBhbGxvY2F0b3IpCit7CisgIEdzdEFsbG9jYXRvciAqYWxsb2MgPSBHU1RfQUxMT0NBVE9SX0NBU1QgKGFsbG9jYXRvcik7CisKKyAgYWxsb2MtPm1lbV90eXBlID0gR1NUX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SX05BTUU7CisgIGFsbG9jLT5tZW1fbWFwX2Z1bGwgPSAoR3N0TWVtb3J5TWFwRnVsbEZ1bmN0aW9uKSBfdmtfbWVtX21hcF9mdWxsOworICBhbGxvYy0+bWVtX3VubWFwX2Z1bGwgPSAoR3N0TWVtb3J5VW5tYXBGdWxsRnVuY3Rpb24pIF92a19tZW1fdW5tYXBfZnVsbDsKKyAgYWxsb2MtPm1lbV9jb3B5ID0gKEdzdE1lbW9yeUNvcHlGdW5jdGlvbikgX3ZrX21lbV9jb3B5OworICBhbGxvYy0+bWVtX3NoYXJlID0gKEdzdE1lbW9yeVNoYXJlRnVuY3Rpb24pIF92a19tZW1fc2hhcmU7CisgIGFsbG9jLT5tZW1faXNfc3BhbiA9IChHc3RNZW1vcnlJc1NwYW5GdW5jdGlvbikgX3ZrX21lbV9pc19zcGFuOworfQorCisvKioKKyAqIGdzdF92dWxrYW5fbWVtb3J5X2luaXRfb25jZToKKyAqCisgKiBJbml0aWFsaXplcyB0aGUgVnVsa2FuIG1lbW9yeSBhbGxvY2F0b3IuIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uCisgKiBtdWx0aXBsZSB0aW1lcy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciAjR3N0VnVsa2FuTWVtb3J5IG9wZXJhdGlvbi4KKyAqLwordm9pZAorZ3N0X3Z1bGthbl9tZW1vcnlfaW5pdF9vbmNlICh2b2lkKQoreworICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2luaXQgPSAwOworCisgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJl9pbml0KSkgeworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX1ZVTEtBTl9NRU1PUlksICJ2dWxrYW5tZW1vcnkiLCAwLAorICAgICAgICAiVnVsa2FuIE1lbW9yeSIpOworCisgICAgX3Z1bGthbl9tZW1vcnlfYWxsb2NhdG9yID0KKyAgICAgICAgZ19vYmplY3RfbmV3IChnc3RfdnVsa2FuX21lbW9yeV9hbGxvY2F0b3JfZ2V0X3R5cGUgKCksIE5VTEwpOworCisgICAgZ3N0X2FsbG9jYXRvcl9yZWdpc3RlciAoR1NUX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SX05BTUUsCisgICAgICAgIGdzdF9vYmplY3RfcmVmIChfdnVsa2FuX21lbW9yeV9hbGxvY2F0b3IpKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKyAgfQorfQorCisvKioKKyAqIGdzdF9pc192dWxrYW5fbWVtb3J5OgorICogQG1lbTphICNHc3RNZW1vcnkKKyAqIAorICogUmV0dXJuczogd2hldGhlciB0aGUgbWVtb3J5IGF0IEBtZW0gaXMgYSAjR3N0VnVsa2FuTWVtb3J5CisgKi8KK2dib29sZWFuCitnc3RfaXNfdnVsa2FuX21lbW9yeSAoR3N0TWVtb3J5ICogbWVtKQoreworICByZXR1cm4gbWVtICE9IE5VTEwgJiYgbWVtLT5hbGxvY2F0b3IgIT0gTlVMTCAmJgorICAgICAgZ190eXBlX2lzX2EgKEdfT0JKRUNUX1RZUEUgKG1lbS0+YWxsb2NhdG9yKSwKKyAgICAgIEdTVF9UWVBFX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SKTsKK30KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmttZW1vcnkuaCBiL2V4dC92dWxrYW4vdmttZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjU1MmE2Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a21lbW9yeS5oCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX0dTVF9WVUxLQU5fQkFTRV9CVUZGRVJfSF8KKyNkZWZpbmUgX0dTVF9WVUxLQU5fQkFTRV9CVUZGRVJfSF8KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvZ3N0YWxsb2NhdG9yLmg+CisjaW5jbHVkZSA8Z3N0L2dzdG1lbW9yeS5oPgorCisjaW5jbHVkZSA8dmsuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SIChnc3RfdnVsa2FuX21lbW9yeV9hbGxvY2F0b3JfZ2V0X3R5cGUoKSkKK0dUeXBlIGdzdF92dWxrYW5fbWVtb3J5X2FsbG9jYXRvcl9nZXRfdHlwZSh2b2lkKTsKKworI2RlZmluZSBHU1RfSVNfVlVMS0FOX01FTU9SWV9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfVlVMS0FOX01FTU9SWV9BTExPQ0FUT1IpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUikpCisjZGVmaW5lIEdTVF9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUl9HRVRfQ0xBU1Mob2JqKSAgICAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEdTVF9UWVBFX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SLCBHc3RWdWxrYW5NZW1vcnlBbGxvY2F0b3JDbGFzcykpCisjZGVmaW5lIEdTVF9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUihvYmopICAgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUiwgR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfVlVMS0FOX01FTU9SWV9BTExPQ0FUT1IsIEdzdFZ1bGthbk1lbW9yeUFsbG9jYXRvckNsYXNzKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SX0NBU1Qob2JqKSAgICAgICAgICAgICgoR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yICopKG9iaikpCisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SX05BTUUgIlZ1bGthbiIKKworc3RydWN0IF9Hc3RWdWxrYW5NZW1vcnkKK3sKKyAgR3N0TWVtb3J5ICAgICAgICAgICAgICAgICBtZW07CisKKyAgR3N0VnVsa2FuRGV2aWNlICAgICAgICAgICpkZXZpY2U7CisKKyAgVmtEZXZpY2VNZW1vcnkgICAgICAgICAgICBtZW1fcHRyOworCisgIC8qIDxwcm90ZWN0ZWQ+ICovCisgIEdNdXRleCAgICAgICAgICAgICAgICAgICAgbG9jazsKKyAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICBtYXBfY291bnQ7CisKKyAgLyogPHByaXZhdGU+ICovCisgIEdEZXN0cm95Tm90aWZ5ICAgICAgICAgICAgbm90aWZ5OworICBncG9pbnRlciAgICAgICAgICAgICAgICAgIHVzZXJfZGF0YTsKKworICBWa01lbW9yeUFsbG9jYXRlSW5mbyAgICAgIGFsbG9jX2luZm87CisgIFZrTWVtb3J5UHJvcGVydHlGbGFncyAgICAgcHJvcGVydGllczsKKworICAvKiB3ZSBuZWVkIG91ciBvd24gb2Zmc2V0IGJlY2F1c2UgR3N0TWVtb3J5J3MgaXMgdXNlZCB0byBvZmZzZXQgaW50byB0aGUKKyAgICogbWFwcGVkIHBvaW50ZXIgd2hpY2ggd2hlbiBzdWJhbGxvY2F0aW5nLCB3ZSBuZWVkIHRvIGF2b2lkLiAgVGhpcyBpbgorICAgKiByZWxhdGlvbiB0byB0aGUgcm9vdCBtZW1vcnkgKi8KKyAgZ3VpbnQ2NCAgICAgICAgICAgICAgICAgICB2a19vZmZzZXQ7CisgIGdib29sZWFuICAgICAgICAgICAgICAgICAgd3JhcHBlZDsKK307CisKKy8qKgorICogR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yCisgKgorICogT3BhcXVlICNHc3RWdWxrYW5NZW1vcnlBbGxvY2F0b3Igc3RydWN0CisgKi8KK3N0cnVjdCBfR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yCit7CisgIEdzdEFsbG9jYXRvciBwYXJlbnQ7Cit9OworCisvKioKKyAqIEdzdFZ1bGthbk1lbW9yeUFsbG9jYXRvckNsYXNzOgorICoKKyAqIFRoZSAjR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yQ2xhc3Mgb25seSBjb250YWlucyBwcml2YXRlIGRhdGEKKyAqLworc3RydWN0IF9Hc3RWdWxrYW5NZW1vcnlBbGxvY2F0b3JDbGFzcworeworICBHc3RBbGxvY2F0b3JDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCit2b2lkICAgICAgICAgICAgZ3N0X3Z1bGthbl9tZW1vcnlfaW5pdF9vbmNlICAgICAodm9pZCk7CitnYm9vbGVhbiAgICAgICAgZ3N0X2lzX3Z1bGthbl9tZW1vcnkgICAgICAgICAgICAoR3N0TWVtb3J5ICogbWVtKTsKKworR3N0TWVtb3J5ICogICAgIGdzdF92dWxrYW5fbWVtb3J5X2FsbG9jICAgICAgICAgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyIG1lbW9yeV90eXBlX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa01lbW9yeVByb3BlcnR5RmxhZ3MgbWVtX3Byb3BfZmxhZ3MpOworCitnYm9vbGVhbiAgICAgICAgZ3N0X3Z1bGthbl9tZW1vcnlfZmluZF9tZW1vcnlfdHlwZV9pbmRleF93aXRoX3R5cGVfcHJvcGVydGllcyAgIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyIHR5cGVCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIHByb3BlcnRpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyICogdHlwZUluZGV4KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9HU1RfVlVMS0FOX0JBU0VfQlVGRkVSX0hfICovCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrcXVldWUuYyBiL2V4dC92dWxrYW4vdmtxdWV1ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ODRmYmYKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZrcXVldWUuYwpAQCAtMCwwICsxLDE4NyBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJ2a3F1ZXVlLmgiCisKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF92dWxrYW5fcXVldWVfZGVidWcKK0dTVF9ERUJVR19DQVRFR09SWSAoR1NUX0NBVF9ERUZBVUxUKTsKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfQ09OVEVYVCk7CisKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RWdWxrYW5RdWV1ZSwgZ3N0X3Z1bGthbl9xdWV1ZSwgR1NUX1RZUEVfT0JKRUNULAorICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX0RFRkFVTFQsICJ2dWxrYW5xdWV1ZSIsIDAsCisgICAgICAgICJWdWxrYW4gUXVldWUiKTsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfR0VUIChHU1RfQ0FUX0NPTlRFWFQsICJHU1RfQ09OVEVYVCIpKTsKKworc3RhdGljIHZvaWQgZ3N0X3Z1bGthbl9xdWV1ZV9kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KTsKKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fcXVldWVfaW5pdCAoR3N0VnVsa2FuUXVldWUgKiBkZXZpY2UpCit7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3F1ZXVlX2NsYXNzX2luaXQgKEdzdFZ1bGthblF1ZXVlQ2xhc3MgKiBkZXZpY2VfY2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikgZGV2aWNlX2NsYXNzOworCisgIGdvYmplY3RfY2xhc3MtPmRpc3Bvc2UgPSBnc3RfdnVsa2FuX3F1ZXVlX2Rpc3Bvc2U7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3F1ZXVlX2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdFZ1bGthblF1ZXVlICpxdWV1ZSA9IEdTVF9WVUxLQU5fUVVFVUUgKG9iamVjdCk7CisKKyAgaWYgKHF1ZXVlLT5kZXZpY2UpCisgICAgZ3N0X29iamVjdF91bnJlZiAocXVldWUtPmRldmljZSk7CisgIHF1ZXVlLT5kZXZpY2UgPSBOVUxMOworfQorCitHc3RWdWxrYW5EZXZpY2UgKgorZ3N0X3Z1bGthbl9xdWV1ZV9nZXRfZGV2aWNlIChHc3RWdWxrYW5RdWV1ZSAqIHF1ZXVlKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1ZVTEtBTl9RVUVVRSAocXVldWUpLCBOVUxMKTsKKworICByZXR1cm4gcXVldWUtPmRldmljZSA/IGdzdF9vYmplY3RfcmVmIChxdWV1ZS0+ZGV2aWNlKSA6IE5VTEw7Cit9CisKKy8qKgorICogZ3N0X2NvbnRleHRfc2V0X3Z1bGthbl9xdWV1ZToKKyAqIEBjb250ZXh0OiBhICNHc3RDb250ZXh0CisgKiBAcXVldWU6IGEgI0dzdFZ1bGthblF1ZXVlCisgKgorICogU2V0cyBAcXVldWUgb24gQGNvbnRleHQKKyAqCisgKiBTaW5jZTogMS4xMAorICovCit2b2lkCitnc3RfY29udGV4dF9zZXRfdnVsa2FuX3F1ZXVlIChHc3RDb250ZXh0ICogY29udGV4dCwgR3N0VnVsa2FuUXVldWUgKiBxdWV1ZSkKK3sKKyAgR3N0U3RydWN0dXJlICpzOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKGNvbnRleHQgIT0gTlVMTCk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKGdzdF9jb250ZXh0X2lzX3dyaXRhYmxlIChjb250ZXh0KSk7CisKKyAgaWYgKHF1ZXVlKQorICAgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0NPTlRFWFQsCisgICAgICAgICJzZXR0aW5nIEdzdFZ1bGthblF1ZXVlKCUiIEdTVF9QVFJfRk9STUFUICIpIG9uIGNvbnRleHQoJSIKKyAgICAgICAgR1NUX1BUUl9GT1JNQVQgIikiLCBxdWV1ZSwgY29udGV4dCk7CisKKyAgcyA9IGdzdF9jb250ZXh0X3dyaXRhYmxlX3N0cnVjdHVyZSAoY29udGV4dCk7CisgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCBHU1RfVlVMS0FOX1FVRVVFX0NPTlRFWFRfVFlQRV9TVFIsCisgICAgICBHU1RfVFlQRV9WVUxLQU5fUVVFVUUsIHF1ZXVlLCBOVUxMKTsKK30KKworLyoqCisgKiBnc3RfY29udGV4dF9nZXRfdnVsa2FuX3F1ZXVlOgorICogQGNvbnRleHQ6IGEgI0dzdENvbnRleHQKKyAqIEBxdWV1ZTogcmVzdWx0aW5nICNHc3RWdWxrYW5RdWV1ZQorICoKKyAqIFJldHVybnM6IFdoZXRoZXIgQHF1ZXVlIHdhcyBpbiBAY29udGV4dAorICoKKyAqIFNpbmNlOiAxLjEwCisgKi8KK2dib29sZWFuCitnc3RfY29udGV4dF9nZXRfdnVsa2FuX3F1ZXVlIChHc3RDb250ZXh0ICogY29udGV4dCwgR3N0VnVsa2FuUXVldWUgKiogcXVldWUpCit7CisgIGNvbnN0IEdzdFN0cnVjdHVyZSAqczsKKyAgZ2Jvb2xlYW4gcmV0OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChxdWV1ZSAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb250ZXh0ICE9IE5VTEwsIEZBTFNFKTsKKworICBzID0gZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZSAoY29udGV4dCk7CisgIHJldCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0IChzLCBHU1RfVlVMS0FOX1FVRVVFX0NPTlRFWFRfVFlQRV9TVFIsCisgICAgICBHU1RfVFlQRV9WVUxLQU5fUVVFVUUsIHF1ZXVlLCBOVUxMKTsKKworICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9DT05URVhULCAiZ290IEdzdFZ1bGthblF1ZXVlKCUiIEdTVF9QVFJfRk9STUFUCisgICAgICAiKSBmcm9tIGNvbnRleHQoJSIgR1NUX1BUUl9GT1JNQVQgIikiLCAqcXVldWUsIGNvbnRleHQpOworCisgIHJldHVybiByZXQ7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX3F1ZXVlX2hhbmRsZV9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0UXVlcnkgKiBxdWVyeSwKKyAgICBHc3RWdWxrYW5RdWV1ZSAqKiBxdWV1ZSkKK3sKKyAgZ2Jvb2xlYW4gcmVzID0gRkFMU0U7CisgIGNvbnN0IGdjaGFyICpjb250ZXh0X3R5cGU7CisgIEdzdENvbnRleHQgKmNvbnRleHQsICpvbGRfY29udGV4dDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZWxlbWVudCAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChxdWVyeSAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfUVVFUllfVFlQRSAocXVlcnkpID09IEdTVF9RVUVSWV9DT05URVhULCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChxdWV1ZSAhPSBOVUxMLCBGQUxTRSk7CisKKyAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHRfdHlwZSAocXVlcnksICZjb250ZXh0X3R5cGUpOworCisgIGlmIChnX3N0cmNtcDAgKGNvbnRleHRfdHlwZSwgR1NUX1ZVTEtBTl9RVUVVRV9DT05URVhUX1RZUEVfU1RSKSA9PSAwKSB7CisgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmb2xkX2NvbnRleHQpOworCisgICAgaWYgKG9sZF9jb250ZXh0KQorICAgICAgY29udGV4dCA9IGdzdF9jb250ZXh0X2NvcHkgKG9sZF9jb250ZXh0KTsKKyAgICBlbHNlCisgICAgICBjb250ZXh0ID0gZ3N0X2NvbnRleHRfbmV3IChHU1RfVlVMS0FOX1FVRVVFX0NPTlRFWFRfVFlQRV9TVFIsIFRSVUUpOworCisgICAgZ3N0X2NvbnRleHRfc2V0X3Z1bGthbl9xdWV1ZSAoY29udGV4dCwgKnF1ZXVlKTsKKyAgICBnc3RfcXVlcnlfc2V0X2NvbnRleHQgKHF1ZXJ5LCBjb250ZXh0KTsKKyAgICBnc3RfY29udGV4dF91bnJlZiAoY29udGV4dCk7CisKKyAgICByZXMgPSAqcXVldWUgIT0gTlVMTDsKKyAgfQorCisgIHJldHVybiByZXM7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX3F1ZXVlX3J1bl9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICBHc3RWdWxrYW5RdWV1ZSAqKiBxdWV1ZSkKK3sKKyAgR3N0UXVlcnkgKnF1ZXJ5OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfRUxFTUVOVCAoZWxlbWVudCksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHF1ZXVlICE9IE5VTEwsIEZBTFNFKTsKKworICBpZiAoKnF1ZXVlICYmIEdTVF9JU19WVUxLQU5fUVVFVUUgKCpxdWV1ZSkpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgaWYgKChxdWVyeSA9CisgICAgICAgICAgZ3N0X3Z1bGthbl9sb2NhbF9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LAorICAgICAgICAgICAgICBHU1RfVlVMS0FOX1FVRVVFX0NPTlRFWFRfVFlQRV9TVFIsIEZBTFNFKSkpIHsKKyAgICBHc3RDb250ZXh0ICpjb250ZXh0OworCisgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY29udGV4dCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgICBnc3RfY29udGV4dF9nZXRfdnVsa2FuX3F1ZXVlIChjb250ZXh0LCBxdWV1ZSk7CisgIH0KKworICBHU1RfREVCVUdfT0JKRUNUIChlbGVtZW50LCAiZm91bmQgcXVldWUgJXAiLCAqcXVldWUpOworCisgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworCisgIGlmICgqcXVldWUpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgcmV0dXJuIEZBTFNFOworfQpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a3F1ZXVlLmggYi9leHQvdnVsa2FuL3ZrcXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGIxMzEzCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a3F1ZXVlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9WS19RVUVVRV9IXworI2RlZmluZSBfVktfUVVFVUVfSF8KKworI2luY2x1ZGUgInZrLmgiCisKKyNkZWZpbmUgR1NUX1RZUEVfVlVMS0FOX1FVRVVFICAgICAgICAgKGdzdF92dWxrYW5fcXVldWVfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9RVUVVRShvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX1RZUEVfVlVMS0FOX1FVRVVFLCBHc3RWdWxrYW5RdWV1ZSkpCisjZGVmaW5lIEdTVF9WVUxLQU5fUVVFVUVfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoayksIEdTVF9UWVBFX1ZVTEtBTl9RVUVVRSwgR3N0VnVsa2FuUXVldWVDbGFzcykpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fUVVFVUUobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9UWVBFX1ZVTEtBTl9RVUVVRSkpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fUVVFVUVfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9UWVBFX1ZVTEtBTl9RVUVVRSkpCisjZGVmaW5lIEdTVF9WVUxLQU5fUVVFVUVfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX1RZUEVfVlVMS0FOX1FVRVVFLCBHc3RWdWxrYW5RdWV1ZUNsYXNzKSkKK0dUeXBlIGdzdF92dWxrYW5fcXVldWVfZ2V0X3R5cGUgICAgICAgKHZvaWQpOworCisjZGVmaW5lIEdTVF9WVUxLQU5fUVVFVUVfQ09OVEVYVF9UWVBFX1NUUiAiZ3N0LnZ1bGthbi5xdWV1ZSIKKworc3RydWN0IF9Hc3RWdWxrYW5RdWV1ZQoreworICBHc3RPYmplY3QgcGFyZW50OworCisgIEdzdFZ1bGthbkRldmljZSAqZGV2aWNlOworCisgIFZrUXVldWUgcXVldWU7IC8qIGhpZGVzIGEgcG9pbnRlciAqLworICBndWludDMyIGZhbWlseTsKKyAgZ3VpbnQzMiBpbmRleDsKK307CisKK3N0cnVjdCBfR3N0VnVsa2FuUXVldWVDbGFzcworeworICBHc3RPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitHc3RWdWxrYW5EZXZpY2UgKiAgIGdzdF92dWxrYW5fcXVldWVfZ2V0X2RldmljZSAoR3N0VnVsa2FuUXVldWUgKiBxdWV1ZSk7CisKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X2NvbnRleHRfc2V0X3Z1bGthbl9xdWV1ZSAgICAgICAgICAgICAgICAoR3N0Q29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthblF1ZXVlICogcXVldWUpOworZ2Jvb2xlYW4gICAgICAgICAgICBnc3RfY29udGV4dF9nZXRfdnVsa2FuX3F1ZXVlICAgICAgICAgICAgICAgIChHc3RDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuUXVldWUgKiogcXVldWUpOworZ2Jvb2xlYW4gICAgICAgICAgICBnc3RfdnVsa2FuX3F1ZXVlX2hhbmRsZV9jb250ZXh0X3F1ZXJ5ICAgICAgIChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0UXVlcnkgKiBxdWVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuUXVldWUgKiogcXVldWUpOworZ2Jvb2xlYW4gICAgICAgICAgICBnc3RfdnVsa2FuX3F1ZXVlX3J1bl9jb250ZXh0X3F1ZXJ5ICAgICAgICAgIChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuUXVldWUgKiogcXVldWUpOworCisjZW5kaWYgLyogX1ZLX1FVRVVFX0hfICovCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3Zrc2luay5jIGIvZXh0L3Z1bGthbi92a3NpbmsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjg1MzBkCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a3NpbmsuYwpAQCAtMCwwICsxLDUwMiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC12dWxrYW5zaW5rCisgKgorICogdnVsa2Fuc2luayByZW5kZXJzIHZpZGVvIGZyYW1lcyB0byBhIGRyYXdhYmxlIG9uIGEgbG9jYWwgb3IgcmVtb3RlCisgKiBkaXNwbGF5IHVzaW5nIFZ1bGthbi4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKy8vI2luY2x1ZGUgPGdzdC92aWRlby92aWRlb292ZXJsYXkuaD4KKworI2luY2x1ZGUgInZrc2luay5oIgorI2luY2x1ZGUgInZrZGV2aWNlLmgiCisKK0dTVF9ERUJVR19DQVRFR09SWSAoZ3N0X2RlYnVnX3Z1bGthbl9zaW5rKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9kZWJ1Z192dWxrYW5fc2luaworCisjZGVmaW5lIERFRkFVTFRfRk9SQ0VfQVNQRUNUX1JBVElPIFRSVUUKKyNkZWZpbmUgREVGQVVMVF9QSVhFTF9BU1BFQ1RfUkFUSU9fTiAwCisjZGVmaW5lIERFRkFVTFRfUElYRUxfQVNQRUNUX1JBVElPX0QgMQorCitzdGF0aWMgdm9pZCBnc3RfdnVsa2FuX3NpbmtfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOworc3RhdGljIHZvaWQgZ3N0X3Z1bGthbl9zaW5rX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBhcmFtX3NwZWMpOworc3RhdGljIHZvaWQgZ3N0X3Z1bGthbl9zaW5rX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBhcmFtX3NwZWMpOworCitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Z1bGthbl9zaW5rX3F1ZXJ5IChHc3RCYXNlU2luayAqIGJzaW5rLCBHc3RRdWVyeSAqIHF1ZXJ5KTsKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5fc2lua19zZXRfY29udGV4dCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgR3N0Q29udGV4dCAqIGNvbnRleHQpOworCitzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KK2dzdF92dWxrYW5fc2lua19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKKworc3RhdGljIHZvaWQgZ3N0X3Z1bGthbl9zaW5rX2dldF90aW1lcyAoR3N0QmFzZVNpbmsgKiBic2luaywgR3N0QnVmZmVyICogYnVmLAorICAgIEdzdENsb2NrVGltZSAqIHN0YXJ0LCBHc3RDbG9ja1RpbWUgKiBlbmQpOworc3RhdGljIGdib29sZWFuIGdzdF92dWxrYW5fc2lua19zZXRfY2FwcyAoR3N0QmFzZVNpbmsgKiBic2luaywgR3N0Q2FwcyAqIGNhcHMpOworc3RhdGljIEdzdENhcHMgKmdzdF92dWxrYW5fc2lua19nZXRfY2FwcyAoR3N0QmFzZVNpbmsgKiBic2luaywKKyAgICBHc3RDYXBzICogZmlsdGVyKTsKK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF92dWxrYW5fc2lua19wcmVwYXJlIChHc3RCYXNlU2luayAqIGJzaW5rLAorICAgIEdzdEJ1ZmZlciAqIGJ1Zik7CitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdnVsa2FuX3Npbmtfc2hvd19mcmFtZSAoR3N0VmlkZW9TaW5rICogYnNpbmssCisgICAgR3N0QnVmZmVyICogYnVmKTsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF92dWxrYW5fc2lua190ZW1wbGF0ZSA9CitHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAorICAgIEdTVF9QQURfU0lOSywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUworICAgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfVlVMS0FOX0JVRkZFUiwKKyAgICAgICAgICAgIEdTVF9WVUxLQU5fU1dBUFBFUl9WSURFT19GT1JNQVRTKSkpOworCitlbnVtCit7CisgIFBST1BfMCwKKyAgUFJPUF9GT1JDRV9BU1BFQ1RfUkFUSU8sCisgIFBST1BfUElYRUxfQVNQRUNUX1JBVElPLAorfTsKKworZW51bQoreworICBTSUdOQUxfMCwKKyAgTEFTVF9TSUdOQUwKK307CisKKy8qIHN0YXRpYyBndWludCBnc3RfdnVsa2FuX3Npbmtfc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAgfTsgKi8KKworI2RlZmluZSBnc3RfdnVsa2FuX3NpbmtfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdFZ1bGthblNpbmssIGdzdF92dWxrYW5fc2luaywKKyAgICBHU1RfVFlQRV9WSURFT19TSU5LLCBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X2RlYnVnX3Z1bGthbl9zaW5rLAorICAgICAgICAidnVsa2Fuc2luayIsIDAsICJWdWxrYW4gVmlkZW8gU2luayIpKTsKKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fc2lua19jbGFzc19pbml0IChHc3RWdWxrYW5TaW5rQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOworICBHc3RFbGVtZW50Q2xhc3MgKmdzdGVsZW1lbnRfY2xhc3M7CisgIEdzdEJhc2VTaW5rQ2xhc3MgKmdzdGJhc2VzaW5rX2NsYXNzOworICBHc3RWaWRlb1NpbmtDbGFzcyAqZ3N0dmlkZW9zaW5rX2NsYXNzOworICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3M7CisKKyAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CisgIGdzdGVsZW1lbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOworICBnc3RiYXNlc2lua19jbGFzcyA9IChHc3RCYXNlU2lua0NsYXNzICopIGtsYXNzOworICBnc3R2aWRlb3NpbmtfY2xhc3MgPSAoR3N0VmlkZW9TaW5rQ2xhc3MgKikga2xhc3M7CisgIGVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOworCisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF92dWxrYW5fc2lua19zZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF92dWxrYW5fc2lua19nZXRfcHJvcGVydHk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9GT1JDRV9BU1BFQ1RfUkFUSU8sCisgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImZvcmNlLWFzcGVjdC1yYXRpbyIsICJGb3JjZSBhc3BlY3QgcmF0aW8iLAorICAgICAgICAgICJXaGVuIGVuYWJsZWQsIHNjYWxpbmcgd2lsbCByZXNwZWN0IG9yaWdpbmFsIGFzcGVjdCByYXRpbyIsCisgICAgICAgICAgREVGQVVMVF9GT1JDRV9BU1BFQ1RfUkFUSU8sCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9QSVhFTF9BU1BFQ1RfUkFUSU8sCisgICAgICBnc3RfcGFyYW1fc3BlY19mcmFjdGlvbiAoInBpeGVsLWFzcGVjdC1yYXRpbyIsICJQaXhlbCBBc3BlY3QgUmF0aW8iLAorICAgICAgICAgICJUaGUgcGl4ZWwgYXNwZWN0IHJhdGlvIG9mIHRoZSBkZXZpY2UiLCAwLCAxLCBHX01BWElOVCwgMSwgMSwgMSwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsICJWdWxrYW4gdmlkZW8gc2luayIsCisgICAgICAiU2luay9WaWRlbyIsICJBIHZpZGVvc2luayBiYXNlZCBvbiBPcGVuR0wiLAorICAgICAgIk1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4iKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X3Z1bGthbl9zaW5rX3RlbXBsYXRlKSk7CisKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfdnVsa2FuX3NpbmtfZmluYWxpemU7CisKKyAgZ3N0ZWxlbWVudF9jbGFzcy0+Y2hhbmdlX3N0YXRlID0gZ3N0X3Z1bGthbl9zaW5rX2NoYW5nZV9zdGF0ZTsKKyAgZ3N0ZWxlbWVudF9jbGFzcy0+c2V0X2NvbnRleHQgPSBnc3RfdnVsa2FuX3Npbmtfc2V0X2NvbnRleHQ7CisgIGdzdGJhc2VzaW5rX2NsYXNzLT5xdWVyeSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnVsa2FuX3NpbmtfcXVlcnkpOworICBnc3RiYXNlc2lua19jbGFzcy0+c2V0X2NhcHMgPSBnc3RfdnVsa2FuX3Npbmtfc2V0X2NhcHM7CisgIGdzdGJhc2VzaW5rX2NsYXNzLT5nZXRfY2FwcyA9IGdzdF92dWxrYW5fc2lua19nZXRfY2FwczsKKyAgZ3N0YmFzZXNpbmtfY2xhc3MtPmdldF90aW1lcyA9IGdzdF92dWxrYW5fc2lua19nZXRfdGltZXM7CisgIGdzdGJhc2VzaW5rX2NsYXNzLT5wcmVwYXJlID0gZ3N0X3Z1bGthbl9zaW5rX3ByZXBhcmU7CisKKyAgZ3N0dmlkZW9zaW5rX2NsYXNzLT5zaG93X2ZyYW1lID0KKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnVsa2FuX3Npbmtfc2hvd19mcmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3NpbmtfaW5pdCAoR3N0VnVsa2FuU2luayAqIHZrX3NpbmspCit7CisgIHZrX3NpbmstPmZvcmNlX2FzcGVjdF9yYXRpbyA9IERFRkFVTFRfRk9SQ0VfQVNQRUNUX1JBVElPOworICB2a19zaW5rLT5wYXJfbiA9IERFRkFVTFRfUElYRUxfQVNQRUNUX1JBVElPX047CisgIHZrX3NpbmstPnBhcl9kID0gREVGQVVMVF9QSVhFTF9BU1BFQ1RfUkFUSU9fRDsKKworLy8gIGdfbXV0ZXhfaW5pdCAoJnZrX3NpbmstPmRyYXdpbmdfbG9jayk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3NpbmtfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisvLyAgR3N0VnVsa2FuU2luayAqdmtfc2luayA9IEdTVF9WVUxLQU5fU0lOSyAob2JqZWN0KTsKKy8vICBnX211dGV4X2NsZWFyICgmdmtfc2luay0+ZHJhd2luZ19sb2NrKTsKKworLy8gIEdTVF9ERUJVRyAoImZpbmFsaXplZCIpOworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3Npbmtfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdFZ1bGthblNpbmsgKnZrX3NpbmsgPSBHU1RfVlVMS0FOX1NJTksgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX0ZPUkNFX0FTUEVDVF9SQVRJTzoKKyAgICAgIHZrX3NpbmstPmZvcmNlX2FzcGVjdF9yYXRpbyA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QSVhFTF9BU1BFQ1RfUkFUSU86CisgICAgICB2a19zaW5rLT5wYXJfbiA9IGdzdF92YWx1ZV9nZXRfZnJhY3Rpb25fbnVtZXJhdG9yICh2YWx1ZSk7CisgICAgICB2a19zaW5rLT5wYXJfZCA9IGdzdF92YWx1ZV9nZXRfZnJhY3Rpb25fZGVub21pbmF0b3IgKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fc2lua19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0VnVsa2FuU2luayAqdmtfc2luayA9IEdTVF9WVUxLQU5fU0lOSyAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfRk9SQ0VfQVNQRUNUX1JBVElPOgorICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIHZrX3NpbmstPmZvcmNlX2FzcGVjdF9yYXRpbyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUElYRUxfQVNQRUNUX1JBVElPOgorICAgICAgZ3N0X3ZhbHVlX3NldF9mcmFjdGlvbiAodmFsdWUsIHZrX3NpbmstPnBhcl9uLCB2a19zaW5rLT5wYXJfZCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Z1bGthbl9zaW5rX3F1ZXJ5IChHc3RCYXNlU2luayAqIGJzaW5rLCBHc3RRdWVyeSAqIHF1ZXJ5KQoreworICBHc3RWdWxrYW5TaW5rICp2a19zaW5rID0gR1NUX1ZVTEtBTl9TSU5LIChic2luayk7CisKKyAgc3dpdGNoIChHU1RfUVVFUllfVFlQRSAocXVlcnkpKSB7CisgICAgY2FzZSBHU1RfUVVFUllfQ09OVEVYVDp7CisgICAgICBpZiAoZ3N0X3Z1bGthbl9oYW5kbGVfY29udGV4dF9xdWVyeSAoR1NUX0VMRU1FTlQgKHZrX3NpbmspLCBxdWVyeSwKKyAgICAgICAgICAgICAgJnZrX3NpbmstPmRpc3BsYXksICZ2a19zaW5rLT5pbnN0YW5jZSwgJnZrX3NpbmstPmRldmljZSkpCisgICAgICAgIHJldHVybiBUUlVFOworCisgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmV0dXJuIEdTVF9CQVNFX1NJTktfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnF1ZXJ5IChic2luaywgcXVlcnkpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9zaW5rX3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0Q29udGV4dCAqIGNvbnRleHQpCit7CisgIEdzdFZ1bGthblNpbmsgKnZrX3NpbmsgPSBHU1RfVlVMS0FOX1NJTksgKGVsZW1lbnQpOworCisgIGdzdF92dWxrYW5faGFuZGxlX3NldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0LCAmdmtfc2luay0+ZGlzcGxheSwKKyAgICAgICZ2a19zaW5rLT5pbnN0YW5jZSk7CisKKyAgR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0KTsKK30KKworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCitnc3RfdnVsa2FuX3NpbmtfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKK3sKKyAgR3N0VnVsa2FuU2luayAqdmtfc2luayA9IEdTVF9WVUxLQU5fU0lOSyAoZWxlbWVudCk7CisgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJldCA9IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUzsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisKKyAgR1NUX0RFQlVHICgiY2hhbmdpbmcgc3RhdGU6ICVzID0+ICVzIiwKKyAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lIChHU1RfU1RBVEVfVFJBTlNJVElPTl9DVVJSRU5UICh0cmFuc2l0aW9uKSksCisgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSAoR1NUX1NUQVRFX1RSQU5TSVRJT05fTkVYVCAodHJhbnNpdGlvbikpKTsKKworICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfTlVMTF9UT19SRUFEWToKKyAgICAgIGlmICghZ3N0X3Z1bGthbl9lbnN1cmVfZWxlbWVudF9kYXRhIChlbGVtZW50LCAmdmtfc2luay0+ZGlzcGxheSwKKyAgICAgICAgICAgICAgJnZrX3NpbmstPmluc3RhbmNlKSkgeworICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAodmtfc2luaywgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgICAgICgiRmFpbGVkIHRvIHJldHJpZXZlIHZ1bGthbiBpbnN0YW5jZS9kaXNwbGF5IiksIChOVUxMKSk7CisgICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICB9CisKKyAgICAgIGlmICghKHZrX3NpbmstPmRldmljZSA9CisgICAgICAgICAgICAgIGdzdF92dWxrYW5faW5zdGFuY2VfY3JlYXRlX2RldmljZSAodmtfc2luay0+aW5zdGFuY2UsICZlcnJvcikpKSB7CisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SICh2a19zaW5rLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAorICAgICAgICAgICAgKCJGYWlsZWQgdG8gY3JlYXRlIHZ1bGthbiBkZXZpY2UiKSwgKCIlcyIsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICB9CisKKyAgICAgIGlmICghKHZrX3NpbmstPndpbmRvdyA9CisgICAgICAgICAgICAgIGdzdF92dWxrYW5fZGlzcGxheV9jcmVhdGVfd2luZG93ICh2a19zaW5rLT5kaXNwbGF5KSkpIHsKKyAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHZrX3NpbmssIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAgICAgICAoIkZhaWxlZCB0byBjcmVhdGUgYSB3aW5kb3ciKSwgKE5VTEwpKTsKKyAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKKyAgICAgIH0KKworICAgICAgaWYgKCFnc3RfdnVsa2FuX3dpbmRvd19vcGVuICh2a19zaW5rLT53aW5kb3csICZlcnJvcikpIHsKKyAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHZrX3NpbmssIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAgICAgICAoIkZhaWxlZCB0byBvcGVuIHdpbmRvdyIpLCAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKyAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKKyAgICAgIH0KKworICAgICAgaWYgKCEodmtfc2luay0+c3dhcHBlciA9CisgICAgICAgICAgICAgIGdzdF92dWxrYW5fc3dhcHBlcl9uZXcgKHZrX3NpbmstPmRldmljZSwgdmtfc2luay0+d2luZG93KSkpIHsKKyAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHZrX3NpbmssIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAgICAgICAoIkZhaWxlZCB0byBjcmVhdGUgYSBzd2FwcGVyIiksIChOVUxMKSk7CisgICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgorICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmV0ID0gR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmNoYW5nZV9zdGF0ZSAoZWxlbWVudCwgdHJhbnNpdGlvbik7CisgIGlmIChyZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKQorICAgIHJldHVybiByZXQ7CisKKyAgc3dpdGNoICh0cmFuc2l0aW9uKSB7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BMQVlJTkdfVE9fUEFVU0VEOgorICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgorICAgICAgaWYgKHZrX3NpbmstPnN3YXBwZXIpCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHZrX3NpbmstPnN3YXBwZXIpOworICAgICAgdmtfc2luay0+c3dhcHBlciA9IE5VTEw7CisgICAgICBpZiAodmtfc2luay0+ZGlzcGxheSkKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAodmtfc2luay0+ZGlzcGxheSk7CisgICAgICB2a19zaW5rLT5kaXNwbGF5ID0gTlVMTDsKKyAgICAgIGlmICh2a19zaW5rLT53aW5kb3cpIHsKKyAgICAgICAgZ3N0X3Z1bGthbl93aW5kb3dfY2xvc2UgKHZrX3NpbmstPndpbmRvdyk7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHZrX3NpbmstPndpbmRvdyk7CisgICAgICB9CisgICAgICB2a19zaW5rLT53aW5kb3cgPSBOVUxMOworICAgICAgaWYgKHZrX3NpbmstPmRldmljZSkKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAodmtfc2luay0+ZGV2aWNlKTsKKyAgICAgIHZrX3NpbmstPmRldmljZSA9IE5VTEw7CisgICAgICBpZiAodmtfc2luay0+aW5zdGFuY2UpCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHZrX3NpbmstPmluc3RhbmNlKTsKKyAgICAgIHZrX3NpbmstPmluc3RhbmNlID0gTlVMTDsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3NpbmtfZ2V0X3RpbWVzIChHc3RCYXNlU2luayAqIGJzaW5rLCBHc3RCdWZmZXIgKiBidWYsCisgICAgR3N0Q2xvY2tUaW1lICogc3RhcnQsIEdzdENsb2NrVGltZSAqIGVuZCkKK3sKKyAgR3N0VnVsa2FuU2luayAqdmtfc2luayA9IEdTVF9WVUxLQU5fU0lOSyAoYnNpbmspOworCisgIGlmIChHU1RfQlVGRkVSX1RJTUVTVEFNUF9JU19WQUxJRCAoYnVmKSkgeworICAgICpzdGFydCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpOworICAgIGlmIChHU1RfQlVGRkVSX0RVUkFUSU9OX0lTX1ZBTElEIChidWYpKQorICAgICAgKmVuZCA9ICpzdGFydCArIEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1Zik7CisgICAgZWxzZSB7CisgICAgICBpZiAoR1NUX1ZJREVPX0lORk9fRlBTX04gKCZ2a19zaW5rLT52X2luZm8pID4gMCkgeworICAgICAgICAqZW5kID0gKnN0YXJ0ICsKKyAgICAgICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKEdTVF9TRUNPTkQsCisgICAgICAgICAgICBHU1RfVklERU9fSU5GT19GUFNfRCAoJnZrX3NpbmstPnZfaW5mbyksCisgICAgICAgICAgICBHU1RfVklERU9fSU5GT19GUFNfTiAoJnZrX3NpbmstPnZfaW5mbykpOworICAgICAgfQorICAgIH0KKyAgfQorfQorCitzdGF0aWMgR3N0Q2FwcyAqCitnc3RfdnVsa2FuX3NpbmtfZ2V0X2NhcHMgKEdzdEJhc2VTaW5rICogYnNpbmssIEdzdENhcHMgKiBmaWx0ZXIpCit7CisgIEdzdFZ1bGthblNpbmsgKnZrX3NpbmsgPSBHU1RfVlVMS0FOX1NJTksgKGJzaW5rKTsKKyAgR3N0Q2FwcyAqdG1wID0gTlVMTDsKKyAgR3N0Q2FwcyAqcmVzdWx0ID0gTlVMTDsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisKKyAgaWYgKHZrX3NpbmstPnN3YXBwZXIpIHsKKyAgICBpZiAoIShyZXN1bHQgPQorICAgICAgICAgICAgZ3N0X3Z1bGthbl9zd2FwcGVyX2dldF9zdXBwb3J0ZWRfY2FwcyAodmtfc2luay0+c3dhcHBlciwgJmVycm9yKSkpIHsKKyAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChic2luaywgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsIGVycm9yLT5tZXNzYWdlKSwKKyAgICAgICAgICAoTlVMTCkpOworICAgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9CisKKyAgdG1wID0gZ3N0X3BhZF9nZXRfcGFkX3RlbXBsYXRlX2NhcHMgKEdTVF9CQVNFX1NJTktfUEFEIChic2luaykpOworCisgIGlmIChmaWx0ZXIpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChic2luaywgImludGVyc2VjdGluZyB3aXRoIGZpbHRlciBjYXBzICUiIEdTVF9QVFJfRk9STUFULAorICAgICAgICBmaWx0ZXIpOworCisgICAgcmVzdWx0ID0gZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGZpbHRlciwgdG1wLCBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOworICAgIGdzdF9jYXBzX3VucmVmICh0bXApOworICB9IGVsc2UgeworICAgIHJlc3VsdCA9IHRtcDsKKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKGJzaW5rLCAicmV0dXJuaW5nIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCByZXN1bHQpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2NvbmZpZ3VyZV9kaXNwbGF5X2Zyb21faW5mbyAoR3N0VnVsa2FuU2luayAqIHZrX3NpbmssIEdzdFZpZGVvSW5mbyAqIHZpbmZvKQoreworICBndWludCBkaXNwbGF5X3JhdGlvX251bSwgZGlzcGxheV9yYXRpb19kZW47CisgIGdpbnQgZGlzcGxheV9wYXJfbiwgZGlzcGxheV9wYXJfZDsKKyAgZ2ludCBwYXJfbiwgcGFyX2Q7CisgIGdpbnQgd2lkdGgsIGhlaWdodDsKKyAgZ2Jvb2xlYW4gb2s7CisKKyAgd2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCAodmluZm8pOworICBoZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQgKHZpbmZvKTsKKworICBwYXJfbiA9IEdTVF9WSURFT19JTkZPX1BBUl9OICh2aW5mbyk7CisgIHBhcl9kID0gR1NUX1ZJREVPX0lORk9fUEFSX0QgKHZpbmZvKTsKKworICBpZiAoIXBhcl9uKQorICAgIHBhcl9uID0gMTsKKworICAvKiBnZXQgZGlzcGxheSdzIFBBUiAqLworICBpZiAodmtfc2luay0+cGFyX24gIT0gMCAmJiB2a19zaW5rLT5wYXJfZCAhPSAwKSB7CisgICAgZGlzcGxheV9wYXJfbiA9IHZrX3NpbmstPnBhcl9uOworICAgIGRpc3BsYXlfcGFyX2QgPSB2a19zaW5rLT5wYXJfZDsKKyAgfSBlbHNlIHsKKyAgICBkaXNwbGF5X3Bhcl9uID0gMTsKKyAgICBkaXNwbGF5X3Bhcl9kID0gMTsKKyAgfQorCisgIG9rID0gZ3N0X3ZpZGVvX2NhbGN1bGF0ZV9kaXNwbGF5X3JhdGlvICgmZGlzcGxheV9yYXRpb19udW0sCisgICAgICAmZGlzcGxheV9yYXRpb19kZW4sIHdpZHRoLCBoZWlnaHQsIHBhcl9uLCBwYXJfZCwgZGlzcGxheV9wYXJfbiwKKyAgICAgIGRpc3BsYXlfcGFyX2QpOworCisgIGlmICghb2spCisgICAgcmV0dXJuIEZBTFNFOworCisgIEdTVF9UUkFDRSAoIlBBUjogJXUvJXUgREFSOiV1LyV1IiwgcGFyX24sIHBhcl9kLCBkaXNwbGF5X3Bhcl9uLAorICAgICAgZGlzcGxheV9wYXJfZCk7CisKKyAgaWYgKGhlaWdodCAlIGRpc3BsYXlfcmF0aW9fZGVuID09IDApIHsKKyAgICBHU1RfREVCVUcgKCJrZWVwaW5nIHZpZGVvIGhlaWdodCIpOworICAgIEdTVF9WSURFT19TSU5LX1dJRFRIICh2a19zaW5rKSA9IChndWludCkKKyAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCAoaGVpZ2h0LCBkaXNwbGF5X3JhdGlvX251bSwKKyAgICAgICAgZGlzcGxheV9yYXRpb19kZW4pOworICAgIEdTVF9WSURFT19TSU5LX0hFSUdIVCAodmtfc2luaykgPSBoZWlnaHQ7CisgIH0gZWxzZSBpZiAod2lkdGggJSBkaXNwbGF5X3JhdGlvX251bSA9PSAwKSB7CisgICAgR1NUX0RFQlVHICgia2VlcGluZyB2aWRlbyB3aWR0aCIpOworICAgIEdTVF9WSURFT19TSU5LX1dJRFRIICh2a19zaW5rKSA9IHdpZHRoOworICAgIEdTVF9WSURFT19TSU5LX0hFSUdIVCAodmtfc2luaykgPSAoZ3VpbnQpCisgICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKHdpZHRoLCBkaXNwbGF5X3JhdGlvX2RlbiwgZGlzcGxheV9yYXRpb19udW0pOworICB9IGVsc2UgeworICAgIEdTVF9ERUJVRyAoImFwcHJveGltYXRpbmcgd2hpbGUga2VlcGluZyB2aWRlbyBoZWlnaHQiKTsKKyAgICBHU1RfVklERU9fU0lOS19XSURUSCAodmtfc2luaykgPSAoZ3VpbnQpCisgICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKGhlaWdodCwgZGlzcGxheV9yYXRpb19udW0sCisgICAgICAgIGRpc3BsYXlfcmF0aW9fZGVuKTsKKyAgICBHU1RfVklERU9fU0lOS19IRUlHSFQgKHZrX3NpbmspID0gaGVpZ2h0OworICB9CisgIEdTVF9ERUJVRyAoInNjYWxpbmcgdG8gJWR4JWQiLCBHU1RfVklERU9fU0lOS19XSURUSCAodmtfc2luayksCisgICAgICBHU1RfVklERU9fU0lOS19IRUlHSFQgKHZrX3NpbmspKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdnVsa2FuX3Npbmtfc2V0X2NhcHMgKEdzdEJhc2VTaW5rICogYnNpbmssIEdzdENhcHMgKiBjYXBzKQoreworICBHc3RWdWxrYW5TaW5rICp2a19zaW5rID0gR1NUX1ZVTEtBTl9TSU5LIChic2luayk7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworICBHc3RWaWRlb0luZm8gdl9pbmZvOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKGJzaW5rLCAic2V0IGNhcHMgd2l0aCAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CisKKyAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZ2X2luZm8sIGNhcHMpKQorICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoIV9jb25maWd1cmVfZGlzcGxheV9mcm9tX2luZm8gKHZrX3NpbmssICZ2X2luZm8pKQorICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoIWdzdF92dWxrYW5fc3dhcHBlcl9zZXRfY2FwcyAodmtfc2luay0+c3dhcHBlciwgY2FwcywgJmVycm9yKSkgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SICh2a19zaW5rLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAorICAgICAgICAoIkZhaWxlZCB0byBjb25maWd1cmUgY2FwcyIpLCAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHZrX3NpbmstPnZfaW5mbyA9IHZfaW5mbzsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF92dWxrYW5fc2lua19wcmVwYXJlIChHc3RCYXNlU2luayAqIGJzaW5rLCBHc3RCdWZmZXIgKiBidWYpCit7CisgIEdzdFZ1bGthblNpbmsgKnZrX3NpbmsgPSBHU1RfVlVMS0FOX1NJTksgKGJzaW5rKTsKKworICBHU1RfVFJBQ0VfT0JKRUNUICh2a19zaW5rLCAicHJlcGFyaW5nIGJ1ZmZlciAlIiBHU1RfUFRSX0ZPUk1BVCwgYnVmKTsKKworICBpZiAoR1NUX1ZJREVPX1NJTktfV0lEVEggKHZrX3NpbmspIDwgMSB8fCBHU1RfVklERU9fU0lOS19IRUlHSFQgKHZrX3NpbmspIDwgMSkgeworICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKKyAgfQorCisgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF92dWxrYW5fc2lua19zaG93X2ZyYW1lIChHc3RWaWRlb1NpbmsgKiB2c2luaywgR3N0QnVmZmVyICogYnVmKQoreworICBHc3RWdWxrYW5TaW5rICp2a19zaW5rID0gR1NUX1ZVTEtBTl9TSU5LICh2c2luayk7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworCisgIEdTVF9UUkFDRV9PQkpFQ1QgKHZrX3NpbmssICJyZW5kZXJpbmcgYnVmZmVyICUiIEdTVF9QVFJfRk9STUFULCBidWYpOworCisgIGlmICghZ3N0X3Z1bGthbl9zd2FwcGVyX3JlbmRlcl9idWZmZXIgKHZrX3NpbmstPnN3YXBwZXIsIGJ1ZiwgJmVycm9yKSkgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SICh2a19zaW5rLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAorICAgICAgICAoIkZhaWxlZCB0byByZW5kZXIgYnVmZmVyIiksICgiJXMiLCBlcnJvci0+bWVzc2FnZSkpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICB9CisKKyAgcmV0dXJuIEdTVF9GTE9XX09LOworfQpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a3NpbmsuaCBiL2V4dC92dWxrYW4vdmtzaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY5NWNmMwotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtzaW5rLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9WS19TSU5LX0hfCisjZGVmaW5lIF9WS19TSU5LX0hfCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvc2luay5oPgorI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgorI2luY2x1ZGUgInZrLmgiCisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9WVUxLQU5fU0lOSyAgICAgICAgICAgIChnc3RfdnVsa2FuX3NpbmtfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9TSU5LKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfVlVMS0FOX1NJTkssR3N0VnVsa2FuU2luaykpCisjZGVmaW5lIEdTVF9WVUxLQU5fU0lOS19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfVlVMS0FOX1NJTkssR3N0VnVsa2FuU2lua0NsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9TSU5LKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfVlVMS0FOX1NJTkspKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX1NJTktfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX1ZVTEtBTl9TSU5LKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthblNpbmsgR3N0VnVsa2FuU2luazsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5TaW5rQ2xhc3MgR3N0VnVsa2FuU2lua0NsYXNzOworCitzdHJ1Y3QgX0dzdFZ1bGthblNpbmsKK3sKKyAgR3N0VmlkZW9TaW5rIHZpZGVvX3Npbms7CisKKyAgR3N0VnVsa2FuSW5zdGFuY2UgKmluc3RhbmNlOworICBHc3RWdWxrYW5EZXZpY2UgKmRldmljZTsKKworICBHc3RWdWxrYW5EaXNwbGF5ICpkaXNwbGF5OworICBHc3RWdWxrYW5XaW5kb3cgKndpbmRvdzsKKworICBHc3RWdWxrYW5Td2FwcGVyICpzd2FwcGVyOworCisgIC8qIHByb3BlcnRpZXMgKi8KKyAgZ2Jvb2xlYW4gZm9yY2VfYXNwZWN0X3JhdGlvOworICBnaW50IHBhcl9uOworICBnaW50IHBhcl9kOworCisgIC8qIHN0cmVhbSBjb25maWd1cmF0aW9uICovCisgIEdzdFZpZGVvSW5mbyB2X2luZm87Cit9OworCitzdHJ1Y3QgX0dzdFZ1bGthblNpbmtDbGFzcworeworICAgIEdzdFZpZGVvU2lua0NsYXNzIHZpZGVvX3NpbmtfY2xhc3M7Cit9OworCitHVHlwZSBnc3RfdnVsa2FuX3NpbmtfZ2V0X3R5cGUodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a3N3YXBwZXIuYyBiL2V4dC92dWxrYW4vdmtzd2FwcGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAzNGMwYQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtzd2FwcGVyLmMKQEAgLTAsMCArMSwxMDQxIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAidmtzd2FwcGVyLmgiCisKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF92dWxrYW5fc3dhcHBlcl9kZWJ1ZworR1NUX0RFQlVHX0NBVEVHT1JZIChHU1RfQ0FUX0RFRkFVTFQpOworCisjZGVmaW5lIGdzdF92dWxrYW5fc3dhcHBlcl9wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0VnVsa2FuU3dhcHBlciwgZ3N0X3Z1bGthbl9zd2FwcGVyLAorICAgIEdTVF9UWVBFX09CSkVDVCwgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfREVGQVVMVCwKKyAgICAgICAgInZ1bGthbnN3YXBwZXIiLCAwLCAiVnVsa2FuIFN3YXBwZXIiKSk7CisKKyNkZWZpbmUgUkVOREVSX0dFVF9MT0NLKG8pICYoR1NUX1ZVTEtBTl9TV0FQUEVSIChvKS0+cHJpdi0+cmVuZGVyX2xvY2spCisjZGVmaW5lIFJFTkRFUl9MT0NLKG8pIGdfbXV0ZXhfbG9jayAoUkVOREVSX0dFVF9MT0NLKG8pKTsKKyNkZWZpbmUgUkVOREVSX1VOTE9DSyhvKSBnX211dGV4X3VubG9jayAoUkVOREVSX0dFVF9MT0NLKG8pKTsKKworc3RydWN0IF9Hc3RWdWxrYW5Td2FwcGVyUHJpdmF0ZQoreworICBHTXV0ZXggcmVuZGVyX2xvY2s7Cit9OworCitzdGF0aWMgdm9pZCBfb25fd2luZG93X2RyYXcgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdywKKyAgICBHc3RWdWxrYW5Td2FwcGVyICogc3dhcHBlcik7CisKK3N0YXRpYyBnYm9vbGVhbgorX2dldF9mdW5jdGlvbl90YWJsZSAoR3N0VnVsa2FuU3dhcHBlciAqIHN3YXBwZXIpCit7CisgIEdzdFZ1bGthbkRldmljZSAqZGV2aWNlID0gc3dhcHBlci0+ZGV2aWNlOworICBHc3RWdWxrYW5JbnN0YW5jZSAqaW5zdGFuY2UgPSBnc3RfdnVsa2FuX2RldmljZV9nZXRfaW5zdGFuY2UgKGRldmljZSk7CisKKyAgaWYgKCFpbnN0YW5jZSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHN3YXBwZXIsICJGYWlsZWQgdG8gZ2V0IGluc3RhbmNlIGZyb20gdGhlIGRldmljZSIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorI2RlZmluZSBHRVRfUFJPQ19BRERSRVNTX1JFUVVJUkVEKG9iaiwgdHlwZSwgbmFtZSkgXAorICBHX1NUTVRfU1RBUlQgeyBcCisgICAgb2JqLT5HX1BBU1RFICgsIG5hbWUpID0gR19QQVNURShHX1BBU1RFKGdzdF92dWxrYW5fLCB0eXBlKSwgX2dldF9wcm9jX2FkZHJlc3MpICh0eXBlLCAidmsiIEdfU1RSSU5HSUZZKG5hbWUpKTsgXAorICAgIGlmICghb2JqLT5HX1BBU1RFKCwgbmFtZSkpIHsgXAorICAgICAgR1NUX0VSUk9SX09CSkVDVCAob2JqLCAiRmFpbGVkIHRvIGZpbmQgcmVxdWlyZWQgZnVuY3Rpb24gdmsiIEdfU1RSSU5HSUZZKG5hbWUpKTsgXAorICAgICAgZ3N0X29iamVjdF91bnJlZiAoaW5zdGFuY2UpOyBcCisgICAgICByZXR1cm4gRkFMU0U7IFwKKyAgICB9IFwKKyAgfSBHX1NUTVRfRU5ECisKKyAgR0VUX1BST0NfQUREUkVTU19SRVFVSVJFRCAoc3dhcHBlciwgaW5zdGFuY2UsCisgICAgICBHZXRQaHlzaWNhbERldmljZVN1cmZhY2VTdXBwb3J0S0hSKTsKKyAgR0VUX1BST0NfQUREUkVTU19SRVFVSVJFRCAoc3dhcHBlciwgaW5zdGFuY2UsCisgICAgICBHZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXNLSFIpOworICBHRVRfUFJPQ19BRERSRVNTX1JFUVVJUkVEIChzd2FwcGVyLCBpbnN0YW5jZSwKKyAgICAgIEdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUZvcm1hdHNLSFIpOworICBHRVRfUFJPQ19BRERSRVNTX1JFUVVJUkVEIChzd2FwcGVyLCBpbnN0YW5jZSwKKyAgICAgIEdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVByZXNlbnRNb2Rlc0tIUik7CisgIEdFVF9QUk9DX0FERFJFU1NfUkVRVUlSRUQgKHN3YXBwZXIsIGRldmljZSwgQ3JlYXRlU3dhcGNoYWluS0hSKTsKKyAgR0VUX1BST0NfQUREUkVTU19SRVFVSVJFRCAoc3dhcHBlciwgZGV2aWNlLCBEZXN0cm95U3dhcGNoYWluS0hSKTsKKyAgR0VUX1BST0NfQUREUkVTU19SRVFVSVJFRCAoc3dhcHBlciwgZGV2aWNlLCBHZXRTd2FwY2hhaW5JbWFnZXNLSFIpOworICBHRVRfUFJPQ19BRERSRVNTX1JFUVVJUkVEIChzd2FwcGVyLCBkZXZpY2UsIEFjcXVpcmVOZXh0SW1hZ2VLSFIpOworICBHRVRfUFJPQ19BRERSRVNTX1JFUVVJUkVEIChzd2FwcGVyLCBkZXZpY2UsIFF1ZXVlUHJlc2VudEtIUik7CisKKyAgZ3N0X29iamVjdF91bnJlZiAoaW5zdGFuY2UpOworCisgIHJldHVybiBUUlVFOworCisjdW5kZWYgR0VUX1BST0NfQUREUkVTU19SRVFVSVJFRAorfQorCitzdGF0aWMgR3N0VmlkZW9Gb3JtYXQKK192a19mb3JtYXRfdG9fdmlkZW9fZm9ybWF0IChWa0Zvcm1hdCBmb3JtYXQpCit7CisgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAvKiBkb3VibGUgY2hlY2sgZW5kaWFuZXNzICovCisgICAgY2FzZSBWS19GT1JNQVRfUjhHOEI4QThfVU5PUk06CisgICAgICByZXR1cm4gR1NUX1ZJREVPX0ZPUk1BVF9SR0JBOworICAgIGNhc2UgVktfRk9STUFUX1I4RzhCOF9VTk9STToKKyAgICAgIHJldHVybiBHU1RfVklERU9fRk9STUFUX1JHQjsKKyAgICBjYXNlIFZLX0ZPUk1BVF9COEc4UjhBOF9VTk9STToKKyAgICAgIHJldHVybiBHU1RfVklERU9fRk9STUFUX0JHUkE7CisgICAgY2FzZSBWS19GT1JNQVRfQjhHOFI4X1VOT1JNOgorICAgICAgcmV0dXJuIEdTVF9WSURFT19GT1JNQVRfQkdSOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gR1NUX1ZJREVPX0ZPUk1BVF9VTktOT1dOOworICB9Cit9CisKK3N0YXRpYyBWa0Zvcm1hdAorX3ZrX2Zvcm1hdF9mcm9tX3ZpZGVvX2Zvcm1hdCAoR3N0VmlkZW9Gb3JtYXQgdl9mb3JtYXQpCit7CisgIHN3aXRjaCAodl9mb3JtYXQpIHsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCQToKKyAgICAgIHJldHVybiBWS19GT1JNQVRfUjhHOEI4QThfVU5PUk07CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQjoKKyAgICAgIHJldHVybiBWS19GT1JNQVRfUjhHOEI4X1VOT1JNOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1JBOgorICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9COEc4UjhBOF9VTk9STTsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSOgorICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9COEc4UjhfVU5PUk07CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICB9Cit9CisKK3N0YXRpYyBWa0NvbG9yU3BhY2VLSFIKK192a19jb2xvcl9zcGFjZV9mcm9tX3ZpZGVvX2luZm8gKEdzdFZpZGVvSW5mbyAqIHZfaW5mbykKK3sKKyAgcmV0dXJuIFZLX0NPTE9SU1BBQ0VfU1JHQl9OT05MSU5FQVJfS0hSOworfQorCitzdGF0aWMgdm9pZAorX2FkZF92a19mb3JtYXRfdG9fbGlzdCAoR1ZhbHVlICogbGlzdCwgVmtGb3JtYXQgZm9ybWF0KQoreworICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdDsKKyAgY29uc3QgZ2NoYXIgKmZvcm1hdF9zdHI7CisKKyAgdl9mb3JtYXQgPSBfdmtfZm9ybWF0X3RvX3ZpZGVvX2Zvcm1hdCAoZm9ybWF0KTsKKyAgaWYgKHZfZm9ybWF0KSB7CisgICAgR1ZhbHVlIGl0ZW0gPSBHX1ZBTFVFX0lOSVQ7CisKKyAgICBnX3ZhbHVlX2luaXQgKCZpdGVtLCBHX1RZUEVfU1RSSU5HKTsKKyAgICBmb3JtYXRfc3RyID0gZ3N0X3ZpZGVvX2Zvcm1hdF90b19zdHJpbmcgKHZfZm9ybWF0KTsKKyAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKCZpdGVtLCBmb3JtYXRfc3RyKTsKKyAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKGxpc3QsICZpdGVtKTsKKyAgICBnX3ZhbHVlX3Vuc2V0ICgmaXRlbSk7CisgIH0KK30KKworc3RhdGljIGdib29sZWFuCitfdnVsa2FuX3N3YXBwZXJfZW5zdXJlX3N1cmZhY2UgKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyLCBHRXJyb3IgKiogZXJyb3IpCit7CisgIGlmICghc3dhcHBlci0+c3VyZmFjZSkgeworICAgIGlmICghKHN3YXBwZXItPnN1cmZhY2UgPQorICAgICAgICAgICAgZ3N0X3Z1bGthbl93aW5kb3dfZ2V0X3N1cmZhY2UgKHN3YXBwZXItPndpbmRvdywgZXJyb3IpKSkgeworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitzdHJ1Y3QgY2hvb3NlX2RhdGEKK3sKKyAgR3N0VnVsa2FuU3dhcHBlciAqc3dhcHBlcjsKKyAgR3N0VnVsa2FuUXVldWUgKmdyYXBoaWNzX3F1ZXVlOworICBHc3RWdWxrYW5RdWV1ZSAqcHJlc2VudF9xdWV1ZTsKK307CisKK3N0YXRpYyBnYm9vbGVhbgorX2Nob29zZV9xdWV1ZSAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBHc3RWdWxrYW5RdWV1ZSAqIHF1ZXVlLAorICAgIHN0cnVjdCBjaG9vc2VfZGF0YSAqZGF0YSkKK3sKKyAgZ3VpbnQgZmxhZ3MgPSBkZXZpY2UtPnF1ZXVlX2ZhbWlseV9wcm9wc1txdWV1ZS0+ZmFtaWx5XS5xdWV1ZUZsYWdzOworICBWa1BoeXNpY2FsRGV2aWNlIGdwdTsKKyAgZ2Jvb2xlYW4gc3VwcG9ydHNfcHJlc2VudDsKKworICBncHUgPSBnc3RfdnVsa2FuX2RldmljZV9nZXRfcGh5c2ljYWxfZGV2aWNlIChkYXRhLT5zd2FwcGVyLT5kZXZpY2UpOworCisgIHsKKyAgICBWa1Jlc3VsdCBlcnI7CisgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgICAgVmtCb29sMzIgcGh5c2ljYWxfZGV2aWNlX3N1cHBvcnRlZDsKKworICAgIGVyciA9CisgICAgICAgIGRhdGEtPnN3YXBwZXItPkdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVN1cHBvcnRLSFIgKGdwdSwgcXVldWUtPmluZGV4LAorICAgICAgICBkYXRhLT5zd2FwcGVyLT5zdXJmYWNlLCAmcGh5c2ljYWxfZGV2aWNlX3N1cHBvcnRlZCk7CisgICAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCAmZXJyb3IsCisgICAgICAgICAgICAiR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlU3VwcG9ydCIpIDwgMCkgeworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGF0YS0+c3dhcHBlciwKKyAgICAgICAgICAic3VyZmFjZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBwaHlzaWNhbCBkZXZpY2U6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorICB9CisKKyAgc3VwcG9ydHNfcHJlc2VudCA9CisgICAgICBnc3RfdnVsa2FuX3dpbmRvd19nZXRfcHJlc2VudGF0aW9uX3N1cHBvcnQgKGRhdGEtPnN3YXBwZXItPndpbmRvdywKKyAgICAgIGRldmljZSwgcXVldWUtPmluZGV4KTsKKworICBpZiAoKGZsYWdzICYgVktfUVVFVUVfR1JBUEhJQ1NfQklUKSAhPSAwKSB7CisgICAgaWYgKHN1cHBvcnRzX3ByZXNlbnQpIHsKKyAgICAgIC8qIGZvdW5kIG9uZSB0aGF0IHN1cHBvcnRzIGJvdGggKi8KKyAgICAgIGlmIChkYXRhLT5ncmFwaGljc19xdWV1ZSkKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAoZGF0YS0+Z3JhcGhpY3NfcXVldWUpOworICAgICAgZGF0YS0+Z3JhcGhpY3NfcXVldWUgPSBnc3Rfb2JqZWN0X3JlZiAocXVldWUpOworICAgICAgaWYgKGRhdGEtPnByZXNlbnRfcXVldWUpCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGRhdGEtPnByZXNlbnRfcXVldWUpOworICAgICAgZGF0YS0+cHJlc2VudF9xdWV1ZSA9IGdzdF9vYmplY3RfcmVmIChxdWV1ZSk7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIGlmICghZGF0YS0+Z3JhcGhpY3NfcXVldWUpCisgICAgICBkYXRhLT5wcmVzZW50X3F1ZXVlID0gZ3N0X29iamVjdF9yZWYgKHF1ZXVlKTsKKyAgfSBlbHNlIGlmIChzdXBwb3J0c19wcmVzZW50KSB7CisgICAgaWYgKCFkYXRhLT5wcmVzZW50X3F1ZXVlKQorICAgICAgZGF0YS0+cHJlc2VudF9xdWV1ZSA9IGdzdF9vYmplY3RfcmVmIChxdWV1ZSk7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitfdnVsa2FuX3N3YXBwZXJfcmV0cmlldmVfc3VyZmFjZV9wcm9wZXJ0aWVzIChHc3RWdWxrYW5Td2FwcGVyICogc3dhcHBlciwKKyAgICBHRXJyb3IgKiogZXJyb3IpCit7CisgIHN0cnVjdCBjaG9vc2VfZGF0YSBkYXRhOworICBWa1BoeXNpY2FsRGV2aWNlIGdwdTsKKyAgVmtSZXN1bHQgZXJyOworCisgIGlmIChzd2FwcGVyLT5zdXJmX2Zvcm1hdHMpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgaWYgKCFfdnVsa2FuX3N3YXBwZXJfZW5zdXJlX3N1cmZhY2UgKHN3YXBwZXIsIGVycm9yKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgZ3B1ID0gZ3N0X3Z1bGthbl9kZXZpY2VfZ2V0X3BoeXNpY2FsX2RldmljZSAoc3dhcHBlci0+ZGV2aWNlKTsKKworICBkYXRhLnN3YXBwZXIgPSBzd2FwcGVyOworICBkYXRhLnByZXNlbnRfcXVldWUgPSBOVUxMOworICBkYXRhLmdyYXBoaWNzX3F1ZXVlID0gTlVMTDsKKworICBnc3RfdnVsa2FuX2RldmljZV9mb3JlYWNoX3F1ZXVlIChzd2FwcGVyLT5kZXZpY2UsCisgICAgICAoR3N0VnVsa2FuRGV2aWNlRm9yRWFjaFF1ZXVlRnVuYykgX2Nob29zZV9xdWV1ZSwgJmRhdGEpOworCisgIGlmIChkYXRhLmdyYXBoaWNzX3F1ZXVlICE9IGRhdGEucHJlc2VudF9xdWV1ZSkgeworICAgIC8qIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3Igc2VwYXJhdGUgZ3JhcGhpY3MvcHJlc2VudCBxdWV1ZXMgKi8KKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsCisgICAgICAgIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCwKKyAgICAgICAgIkZhaWxlZCB0byBmaW5kIGEgY29tcGF0aWJsZSBwcmVzZW50L2dyYXBoaWNzIHF1ZXVlIik7CisgICAgaWYgKGRhdGEucHJlc2VudF9xdWV1ZSkKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGRhdGEucHJlc2VudF9xdWV1ZSk7CisgICAgaWYgKGRhdGEuZ3JhcGhpY3NfcXVldWUpCisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChkYXRhLmdyYXBoaWNzX3F1ZXVlKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBzd2FwcGVyLT5xdWV1ZSA9IGdzdF9vYmplY3RfcmVmIChkYXRhLnByZXNlbnRfcXVldWUpOworICBpZiAoZGF0YS5wcmVzZW50X3F1ZXVlKQorICAgIGdzdF9vYmplY3RfdW5yZWYgKGRhdGEucHJlc2VudF9xdWV1ZSk7CisgIGlmIChkYXRhLmdyYXBoaWNzX3F1ZXVlKQorICAgIGdzdF9vYmplY3RfdW5yZWYgKGRhdGEuZ3JhcGhpY3NfcXVldWUpOworCisgIGVyciA9CisgICAgICBzd2FwcGVyLT5HZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXNLSFIgKGdwdSwgc3dhcHBlci0+c3VyZmFjZSwKKyAgICAgICZzd2FwcGVyLT5zdXJmX3Byb3BzKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAiR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzS0hSIikgPCAwKQorICAgIHJldHVybiBGQUxTRTsKKworICBlcnIgPQorICAgICAgc3dhcHBlci0+R2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlRm9ybWF0c0tIUiAoZ3B1LCBzd2FwcGVyLT5zdXJmYWNlLAorICAgICAgJnN3YXBwZXItPm5fc3VyZl9mb3JtYXRzLCBOVUxMKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAiR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlRm9ybWF0c0tIUiIpIDwgMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgc3dhcHBlci0+c3VyZl9mb3JtYXRzID0gZ19uZXcwIChWa1N1cmZhY2VGb3JtYXRLSFIsIHN3YXBwZXItPm5fc3VyZl9mb3JtYXRzKTsKKyAgZXJyID0KKyAgICAgIHN3YXBwZXItPkdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUZvcm1hdHNLSFIgKGdwdSwgc3dhcHBlci0+c3VyZmFjZSwKKyAgICAgICZzd2FwcGVyLT5uX3N1cmZfZm9ybWF0cywgc3dhcHBlci0+c3VyZl9mb3JtYXRzKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAiR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlRm9ybWF0c0tIUiIpIDwgMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgZXJyID0KKyAgICAgIHN3YXBwZXItPkdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVByZXNlbnRNb2Rlc0tIUiAoZ3B1LCBzd2FwcGVyLT5zdXJmYWNlLAorICAgICAgJnN3YXBwZXItPm5fc3VyZl9wcmVzZW50X21vZGVzLCBOVUxMKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAiR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1vZGVzS0hSIikgPCAwKQorICAgIHJldHVybiBGQUxTRTsKKworICBzd2FwcGVyLT5zdXJmX3ByZXNlbnRfbW9kZXMgPQorICAgICAgZ19uZXcwIChWa1ByZXNlbnRNb2RlS0hSLCBzd2FwcGVyLT5uX3N1cmZfcHJlc2VudF9tb2Rlcyk7CisgIGVyciA9CisgICAgICBzd2FwcGVyLT5HZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVzZW50TW9kZXNLSFIgKGdwdSwgc3dhcHBlci0+c3VyZmFjZSwKKyAgICAgICZzd2FwcGVyLT5uX3N1cmZfcHJlc2VudF9tb2Rlcywgc3dhcHBlci0+c3VyZl9wcmVzZW50X21vZGVzKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAiR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1vZGVzS0hSIikgPCAwKQorICAgIHJldHVybiBGQUxTRTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitfb25fd2luZG93X2Nsb3NlIChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3csIEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyKQoreworICBnX2F0b21pY19pbnRfc2V0ICgmc3dhcHBlci0+dG9fcXVpdCwgMSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3N3YXBwZXJfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdFZ1bGthblN3YXBwZXIgKnN3YXBwZXIgPSBHU1RfVlVMS0FOX1NXQVBQRVIgKG9iamVjdCk7CisgIGludCBpOworCisgIGlmIChzd2FwcGVyLT5zd2FwX2NoYWluX2ltYWdlcykgeworICAgIGZvciAoaSA9IDA7IGkgPCBzd2FwcGVyLT5uX3N3YXBfY2hhaW5faW1hZ2VzOyBpKyspIHsKKyAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKChHc3RNZW1vcnkgKikgc3dhcHBlci0+c3dhcF9jaGFpbl9pbWFnZXNbaV0pOworICAgICAgc3dhcHBlci0+c3dhcF9jaGFpbl9pbWFnZXNbaV0gPSBOVUxMOworICAgIH0KKyAgICBnX2ZyZWUgKHN3YXBwZXItPnN3YXBfY2hhaW5faW1hZ2VzKTsKKyAgfQorICBzd2FwcGVyLT5zd2FwX2NoYWluX2ltYWdlcyA9IE5VTEw7CisKKyAgaWYgKHN3YXBwZXItPnN3YXBfY2hhaW4pCisgICAgc3dhcHBlci0+RGVzdHJveVN3YXBjaGFpbktIUiAoc3dhcHBlci0+ZGV2aWNlLT5kZXZpY2UsIHN3YXBwZXItPnN3YXBfY2hhaW4sCisgICAgICAgIE5VTEwpOworICBzd2FwcGVyLT5zd2FwX2NoYWluID0gVktfTlVMTF9IQU5ETEU7CisKKyAgaWYgKHN3YXBwZXItPnF1ZXVlKQorICAgIGdzdF9vYmplY3RfdW5yZWYgKHN3YXBwZXItPnF1ZXVlKTsKKyAgc3dhcHBlci0+cXVldWUgPSBOVUxMOworCisgIGlmIChzd2FwcGVyLT5kZXZpY2UpCisgICAgZ3N0X29iamVjdF91bnJlZiAoc3dhcHBlci0+ZGV2aWNlKTsKKyAgc3dhcHBlci0+ZGV2aWNlID0gTlVMTDsKKworICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKHN3YXBwZXItPndpbmRvdywgc3dhcHBlci0+ZHJhd19pZCk7CisgIHN3YXBwZXItPmRyYXdfaWQgPSAwOworCisgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCAoc3dhcHBlci0+d2luZG93LCBzd2FwcGVyLT5jbG9zZV9pZCk7CisgIHN3YXBwZXItPmNsb3NlX2lkID0gMDsKKworICBpZiAoc3dhcHBlci0+d2luZG93KQorICAgIGdzdF9vYmplY3RfdW5yZWYgKHN3YXBwZXItPndpbmRvdyk7CisgIHN3YXBwZXItPndpbmRvdyA9IE5VTEw7CisKKyAgZ19mcmVlIChzd2FwcGVyLT5zdXJmX3ByZXNlbnRfbW9kZXMpOworICBzd2FwcGVyLT5zdXJmX3ByZXNlbnRfbW9kZXMgPSBOVUxMOworCisgIGdfZnJlZSAoc3dhcHBlci0+c3VyZl9mb3JtYXRzKTsKKyAgc3dhcHBlci0+c3VyZl9mb3JtYXRzID0gTlVMTDsKKworICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZzd2FwcGVyLT5jdXJyZW50X2J1ZmZlciwgTlVMTCk7CisgIGdzdF9jYXBzX3JlcGxhY2UgKCZzd2FwcGVyLT5jYXBzLCBOVUxMKTsKKworICBnX211dGV4X2NsZWFyICgmc3dhcHBlci0+cHJpdi0+cmVuZGVyX2xvY2spOworCisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fc3dhcHBlcl9pbml0IChHc3RWdWxrYW5Td2FwcGVyICogc3dhcHBlcikKK3sKKyAgc3dhcHBlci0+cHJpdiA9CisgICAgICBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUgKHN3YXBwZXIsIEdTVF9UWVBFX1ZVTEtBTl9TV0FQUEVSLAorICAgICAgR3N0VnVsa2FuU3dhcHBlclByaXZhdGUpOworCisgIGdfbXV0ZXhfaW5pdCAoJnN3YXBwZXItPnByaXYtPnJlbmRlcl9sb2NrKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fc3dhcHBlcl9jbGFzc19pbml0IChHc3RWdWxrYW5Td2FwcGVyQ2xhc3MgKiBrbGFzcykKK3sKKyAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlIChrbGFzcywgc2l6ZW9mIChHc3RWdWxrYW5Td2FwcGVyUHJpdmF0ZSkpOworCisgIEdfT0JKRUNUX0NMQVNTIChrbGFzcyktPmZpbmFsaXplID0gZ3N0X3Z1bGthbl9zd2FwcGVyX2ZpbmFsaXplOworfQorCitHc3RWdWxrYW5Td2FwcGVyICoKK2dzdF92dWxrYW5fc3dhcHBlcl9uZXcgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgR3N0VnVsa2FuV2luZG93ICogd2luZG93KQoreworICBHc3RWdWxrYW5Td2FwcGVyICpzd2FwcGVyOworCisgIHN3YXBwZXIgPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX1ZVTEtBTl9TV0FQUEVSLCBOVUxMKTsKKyAgc3dhcHBlci0+ZGV2aWNlID0gZ3N0X29iamVjdF9yZWYgKGRldmljZSk7CisgIHN3YXBwZXItPndpbmRvdyA9IGdzdF9vYmplY3RfcmVmICh3aW5kb3cpOworCisgIGlmICghX2dldF9mdW5jdGlvbl90YWJsZSAoc3dhcHBlcikpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzd2FwcGVyKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHN3YXBwZXItPmNsb3NlX2lkID0gZ19zaWduYWxfY29ubmVjdCAoc3dhcHBlci0+d2luZG93LCAiY2xvc2UiLAorICAgICAgKEdDYWxsYmFjaykgX29uX3dpbmRvd19jbG9zZSwgc3dhcHBlcik7CisgIHN3YXBwZXItPmRyYXdfaWQgPSBnX3NpZ25hbF9jb25uZWN0IChzd2FwcGVyLT53aW5kb3csICJkcmF3IiwKKyAgICAgIChHQ2FsbGJhY2spIF9vbl93aW5kb3dfZHJhdywgc3dhcHBlcik7CisKKyAgcmV0dXJuIHN3YXBwZXI7Cit9CisKK0dzdENhcHMgKgorZ3N0X3Z1bGthbl9zd2FwcGVyX2dldF9zdXBwb3J0ZWRfY2FwcyAoR3N0VnVsa2FuU3dhcHBlciAqIHN3YXBwZXIsCisgICAgR0Vycm9yICoqIGVycm9yKQoreworICBHc3RTdHJ1Y3R1cmUgKnM7CisgIEdzdENhcHMgKmNhcHM7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fU1dBUFBFUiAoc3dhcHBlciksIE5VTEwpOworCisgIGlmICghX3Z1bGthbl9zd2FwcGVyX3JldHJpZXZlX3N1cmZhY2VfcHJvcGVydGllcyAoc3dhcHBlciwgZXJyb3IpKQorICAgIHJldHVybiBOVUxMOworCisgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlICgidmlkZW8veC1yYXciKTsKKyAgZ3N0X2NhcHNfc2V0X2ZlYXR1cmVzIChjYXBzLCAwLAorICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfZnJvbV9zdHJpbmcgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1ZVTEtBTl9CVUZGRVIpKTsKKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworCisgIHsKKyAgICBpbnQgaTsKKyAgICBHVmFsdWUgbGlzdCA9IEdfVkFMVUVfSU5JVDsKKworICAgIGdfdmFsdWVfaW5pdCAoJmxpc3QsIEdTVF9UWVBFX0xJU1QpOworCisgICAgaWYgKHN3YXBwZXItPm5fc3VyZl9mb3JtYXRzCisgICAgICAgICYmIHN3YXBwZXItPnN1cmZfZm9ybWF0c1swXS5mb3JtYXQgPT0gVktfRk9STUFUX1VOREVGSU5FRCkgeworICAgICAgX2FkZF92a19mb3JtYXRfdG9fbGlzdCAoJmxpc3QsIFZLX0ZPUk1BVF9COEc4UjhBOF9VTk9STSk7CisgICAgfSBlbHNlIHsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBzd2FwcGVyLT5uX3N1cmZfZm9ybWF0czsgaSsrKSB7CisgICAgICAgIF9hZGRfdmtfZm9ybWF0X3RvX2xpc3QgKCZsaXN0LCBzd2FwcGVyLT5zdXJmX2Zvcm1hdHNbaV0uZm9ybWF0KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAocywgImZvcm1hdCIsICZsaXN0KTsKKyAgICBnX3ZhbHVlX3Vuc2V0ICgmbGlzdCk7CisgIH0KKyAgeworICAgIGd1aW50MzIgbWF4X2RpbSA9IHN3YXBwZXItPmRldmljZS0+Z3B1X3Byb3BzLmxpbWl0cy5tYXhJbWFnZURpbWVuc2lvbjJEOworCisgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJ3aWR0aCIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgMSwgKGdpbnQpIG1heF9kaW0sCisgICAgICAgICJoZWlnaHQiLCBHU1RfVFlQRV9JTlRfUkFOR0UsIDEsIChnaW50KSBtYXhfZGltLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwKKyAgICAgICAgR1NUX1RZUEVfRlJBQ1RJT04sIDEsIDEsICJmcmFtZXJhdGUiLCBHU1RfVFlQRV9GUkFDVElPTl9SQU5HRSwgMCwgMSwKKyAgICAgICAgR19NQVhJTlQsIDEsIE5VTEwpOworICB9CisKKyAgR1NUX0lORk9fT0JKRUNUIChzd2FwcGVyLCAiUHJvYmVkIHRoZSBmb2xsb3dpbmcgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CisKKyAgcmV0dXJuIGNhcHM7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3N3YXBwZXJfc2V0X2ltYWdlX2xheW91dF93aXRoX2NtZCAoR3N0VnVsa2FuU3dhcHBlciAqIHN3YXBwZXIsCisgICAgVmtDb21tYW5kQnVmZmVyIGNtZCwgR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKiBpbWFnZSwKKyAgICBWa0ltYWdlTGF5b3V0IG5ld19pbWFnZV9sYXlvdXQsIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgVmtQaXBlbGluZVN0YWdlRmxhZ3Mgc3JjX3N0YWdlcyA9IFZLX1BJUEVMSU5FX1NUQUdFX1RPUF9PRl9QSVBFX0JJVDsKKyAgVmtQaXBlbGluZVN0YWdlRmxhZ3MgZGVzdF9zdGFnZXMgPSBWS19QSVBFTElORV9TVEFHRV9UT1BfT0ZfUElQRV9CSVQ7CisgIFZrSW1hZ2VNZW1vcnlCYXJyaWVyIGltYWdlX21lbW9yeV9iYXJyaWVyOworCisgIGdzdF92dWxrYW5faW1hZ2VfbWVtb3J5X3NldF9sYXlvdXQgKGltYWdlLCBuZXdfaW1hZ2VfbGF5b3V0LAorICAgICAgJmltYWdlX21lbW9yeV9iYXJyaWVyKTsKKworICB2a0NtZFBpcGVsaW5lQmFycmllciAoY21kLCBzcmNfc3RhZ2VzLCBkZXN0X3N0YWdlcywgMCwgMCwgTlVMTCwgMCwgTlVMTCwgMSwKKyAgICAgICZpbWFnZV9tZW1vcnlfYmFycmllcik7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX25ld19mZW5jZSAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBWa0ZlbmNlICogZmVuY2UsIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgVmtGZW5jZUNyZWF0ZUluZm8gZmVuY2VfaW5mbzsKKyAgVmtSZXN1bHQgZXJyOworCisgIGZlbmNlX2luZm8uc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9GRU5DRV9DUkVBVEVfSU5GTzsKKyAgZmVuY2VfaW5mby5wTmV4dCA9IE5VTEw7CisgIGZlbmNlX2luZm8uZmxhZ3MgPSAwOworCisgIGVyciA9IHZrQ3JlYXRlRmVuY2UgKGRldmljZS0+ZGV2aWNlLCAmZmVuY2VfaW5mbywgTlVMTCwgZmVuY2UpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLCAidmtDcmVhdGVGZW5jZSIpIDwgMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3N3YXBwZXJfc2V0X2ltYWdlX2xheW91dCAoR3N0VnVsa2FuU3dhcHBlciAqIHN3YXBwZXIsCisgICAgR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKiBpbWFnZSwgVmtJbWFnZUxheW91dCBuZXdfaW1hZ2VfbGF5b3V0LAorICAgIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgVmtDb21tYW5kQnVmZmVyIGNtZDsKKyAgVmtGZW5jZSBmZW5jZTsKKyAgVmtSZXN1bHQgZXJyOworCisgIGlmICghZ3N0X3Z1bGthbl9kZXZpY2VfY3JlYXRlX2NtZF9idWZmZXIgKHN3YXBwZXItPmRldmljZSwgJmNtZCwgZXJyb3IpKQorICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoIV9uZXdfZmVuY2UgKHN3YXBwZXItPmRldmljZSwgJmZlbmNlLCBlcnJvcikpCisgICAgcmV0dXJuIEZBTFNFOworCisgIHsKKyAgICBWa0NvbW1hbmRCdWZmZXJJbmhlcml0YW5jZUluZm8gYnVmX2luaCA9IHsgMCwgfTsKKyAgICBWa0NvbW1hbmRCdWZmZXJCZWdpbkluZm8gY21kX2J1Zl9pbmZvID0geyAwLCB9OworCisgICAgYnVmX2luaC5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0NPTU1BTkRfQlVGRkVSX0lOSEVSSVRBTkNFX0lORk87CisgICAgYnVmX2luaC5wTmV4dCA9IE5VTEw7CisgICAgYnVmX2luaC5yZW5kZXJQYXNzID0gVktfTlVMTF9IQU5ETEU7CisgICAgYnVmX2luaC5zdWJwYXNzID0gMDsKKyAgICBidWZfaW5oLmZyYW1lYnVmZmVyID0gVktfTlVMTF9IQU5ETEU7CisgICAgYnVmX2luaC5vY2NsdXNpb25RdWVyeUVuYWJsZSA9IEZBTFNFOworICAgIGJ1Zl9pbmgucXVlcnlGbGFncyA9IDA7CisgICAgYnVmX2luaC5waXBlbGluZVN0YXRpc3RpY3MgPSAwOworCisgICAgY21kX2J1Zl9pbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9CVUZGRVJfQkVHSU5fSU5GTzsKKyAgICBjbWRfYnVmX2luZm8ucE5leHQgPSBOVUxMOworICAgIGNtZF9idWZfaW5mby5mbGFncyA9IFZLX0NPTU1BTkRfQlVGRkVSX1VTQUdFX09ORV9USU1FX1NVQk1JVF9CSVQ7CisgICAgY21kX2J1Zl9pbmZvLnBJbmhlcml0YW5jZUluZm8gPSAmYnVmX2luaDsKKworICAgIGVyciA9IHZrQmVnaW5Db21tYW5kQnVmZmVyIChjbWQsICZjbWRfYnVmX2luZm8pOworICAgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a0JlZ2luQ29tbWFuZEJ1ZmZlciIpIDwgMCkKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmICghX3N3YXBwZXJfc2V0X2ltYWdlX2xheW91dF93aXRoX2NtZCAoc3dhcHBlciwgY21kLCBpbWFnZSwKKyAgICAgICAgICBuZXdfaW1hZ2VfbGF5b3V0LCBlcnJvcikpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGVyciA9IHZrRW5kQ29tbWFuZEJ1ZmZlciAoY21kKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrRW5kQ29tbWFuZEJ1ZmZlciIpIDwgMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgeworICAgIFZrU3VibWl0SW5mbyBzdWJtaXRfaW5mbyA9IHsgMCwgfTsKKworICAgIHN1Ym1pdF9pbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfU1VCTUlUX0lORk87CisgICAgc3VibWl0X2luZm8ucE5leHQgPSBOVUxMOworICAgIHN1Ym1pdF9pbmZvLndhaXRTZW1hcGhvcmVDb3VudCA9IDA7CisgICAgc3VibWl0X2luZm8ucFdhaXRTZW1hcGhvcmVzID0gTlVMTDsKKyAgICBzdWJtaXRfaW5mby5jb21tYW5kQnVmZmVyQ291bnQgPSAxOworICAgIHN1Ym1pdF9pbmZvLnBDb21tYW5kQnVmZmVycyA9ICZjbWQ7CisgICAgc3VibWl0X2luZm8uc2lnbmFsU2VtYXBob3JlQ291bnQgPSAwOworICAgIHN1Ym1pdF9pbmZvLnBTaWduYWxTZW1hcGhvcmVzID0gTlVMTDsKKworICAgIGVyciA9IHZrUXVldWVTdWJtaXQgKHN3YXBwZXItPnF1ZXVlLT5xdWV1ZSwgMSwgJnN1Ym1pdF9pbmZvLCBmZW5jZSk7CisgICAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrUXVldWVTdWJtaXQiKSA8IDApCisgICAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBlcnIgPSB2a1dhaXRGb3JGZW5jZXMgKHN3YXBwZXItPmRldmljZS0+ZGV2aWNlLCAxLCAmZmVuY2UsIFRSVUUsIC0xKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrV2FpdEZvckZlbmNlcyIpIDwgMCkKKyAgICByZXR1cm4gRkFMU0U7CisgIHZrRnJlZUNvbW1hbmRCdWZmZXJzIChzd2FwcGVyLT5kZXZpY2UtPmRldmljZSwgc3dhcHBlci0+ZGV2aWNlLT5jbWRfcG9vbCwgMSwKKyAgICAgICZjbWQpOworCisgIHZrRGVzdHJveUZlbmNlIChzd2FwcGVyLT5kZXZpY2UtPmRldmljZSwgZmVuY2UsIE5VTEwpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19hbGxvY2F0ZV9zd2FwY2hhaW4gKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyLCBHc3RDYXBzICogY2FwcywKKyAgICBHRXJyb3IgKiogZXJyb3IpCit7CisgIFZrU3VyZmFjZVRyYW5zZm9ybUZsYWdzS0hSIHByZVRyYW5zZm9ybTsKKyAgVmtDb21wb3NpdGVBbHBoYUZsYWdzS0hSIGFscGhhX2ZsYWdzOworICBWa1ByZXNlbnRNb2RlS0hSIHByZXNlbnRfbW9kZTsKKyAgVmtJbWFnZVVzYWdlRmxhZ3MgdXNhZ2UgPSAwOworICBWa0NvbG9yU3BhY2VLSFIgY29sb3Jfc3BhY2U7CisgIFZrSW1hZ2UgKnN3YXBfY2hhaW5faW1hZ2VzOworICBWa0V4dGVudDJEIHN3YXBjaGFpbl9kaW1zOworICBndWludDMyIG5faW1hZ2VzX3dhbnRlZDsKKyAgVmtQaHlzaWNhbERldmljZSBncHU7CisgIFZrRm9ybWF0IGZvcm1hdDsKKyAgVmtSZXN1bHQgZXJyOworICBndWludDMyIGk7CisKKyAgaWYgKCFfdnVsa2FuX3N3YXBwZXJfZW5zdXJlX3N1cmZhY2UgKHN3YXBwZXIsIGVycm9yKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgZ3B1ID0gZ3N0X3Z1bGthbl9kZXZpY2VfZ2V0X3BoeXNpY2FsX2RldmljZSAoc3dhcHBlci0+ZGV2aWNlKTsKKyAgZXJyID0KKyAgICAgIHN3YXBwZXItPkdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGllc0tIUiAoZ3B1LAorICAgICAgc3dhcHBlci0+c3VyZmFjZSwgJnN3YXBwZXItPnN1cmZfcHJvcHMpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLAorICAgICAgICAgICJHZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXNLSFIiKSA8IDApCisgICAgcmV0dXJuIEZBTFNFOworCisgIC8qIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGVpdGhlciBib3RoIC0xLCBvciBib3RoIG5vdCAtMS4gKi8KKyAgaWYgKHN3YXBwZXItPnN1cmZfcHJvcHMuY3VycmVudEV4dGVudC53aWR0aCA9PSAtMSkgeworICAgIC8qIElmIHRoZSBzdXJmYWNlIHNpemUgaXMgdW5kZWZpbmVkLCB0aGUgc2l6ZSBpcyBzZXQgdG8KKyAgICAgKiB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2VzIHJlcXVlc3RlZC4gKi8KKyAgICBzd2FwY2hhaW5fZGltcy53aWR0aCA9IDMyMDsKKyAgICBzd2FwY2hhaW5fZGltcy5oZWlnaHQgPSAyNDA7CisgIH0gZWxzZSB7CisgICAgLyogSWYgdGhlIHN1cmZhY2Ugc2l6ZSBpcyBkZWZpbmVkLCB0aGUgc3dhcCBjaGFpbiBzaXplIG11c3QgbWF0Y2ggKi8KKyAgICBzd2FwY2hhaW5fZGltcyA9IHN3YXBwZXItPnN1cmZfcHJvcHMuY3VycmVudEV4dGVudDsKKyAgfQorCisgIC8qIElmIG1haWxib3ggbW9kZSBpcyBhdmFpbGFibGUsIHVzZSBpdCwgYXMgaXMgdGhlIGxvd2VzdC1sYXRlbmN5IG5vbi0KKyAgICogdGVhcmluZyBtb2RlLiAgSWYgbm90LCB0cnkgSU1NRURJQVRFIHdoaWNoIHdpbGwgdXN1YWxseSBiZSBhdmFpbGFibGUsCisgICAqIGFuZCBpcyBmYXN0ZXN0ICh0aG91Z2ggaXQgdGVhcnMpLiAgSWYgbm90LCBmYWxsIGJhY2sgdG8gRklGTyB3aGljaCBpcworICAgKiBhbHdheXMgYXZhaWxhYmxlLiAqLworICBwcmVzZW50X21vZGUgPSBWS19QUkVTRU5UX01PREVfRklGT19LSFI7CisgIGZvciAoZ3NpemUgaSA9IDA7IGkgPCBzd2FwcGVyLT5uX3N1cmZfcHJlc2VudF9tb2RlczsgaSsrKSB7CisgICAgaWYgKHN3YXBwZXItPnN1cmZfcHJlc2VudF9tb2Rlc1tpXSA9PSBWS19QUkVTRU5UX01PREVfTUFJTEJPWF9LSFIpIHsKKyAgICAgIHByZXNlbnRfbW9kZSA9IFZLX1BSRVNFTlRfTU9ERV9NQUlMQk9YX0tIUjsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoKHByZXNlbnRfbW9kZSAhPSBWS19QUkVTRU5UX01PREVfTUFJTEJPWF9LSFIpICYmCisgICAgICAgIChzd2FwcGVyLT5zdXJmX3ByZXNlbnRfbW9kZXNbaV0gPT0gVktfUFJFU0VOVF9NT0RFX0lNTUVESUFURV9LSFIpKSB7CisgICAgICBwcmVzZW50X21vZGUgPSBWS19QUkVTRU5UX01PREVfSU1NRURJQVRFX0tIUjsKKyAgICB9CisgIH0KKworICAvKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBWa0ltYWdlJ3MgdG8gdXNlIGluIHRoZSBzd2FwIGNoYWluICh3ZSBkZXNpcmUgdG8KKyAgICogb3duIG9ubHkgMSBpbWFnZSBhdCBhIHRpbWUsIGJlc2lkZXMgdGhlIGltYWdlcyBiZWluZyBkaXNwbGF5ZWQgYW5kCisgICAqIHF1ZXVlZCBmb3IgZGlzcGxheSk6ICovCisgIG5faW1hZ2VzX3dhbnRlZCA9IHN3YXBwZXItPnN1cmZfcHJvcHMubWluSW1hZ2VDb3VudCArIDE7CisgIGlmICgoc3dhcHBlci0+c3VyZl9wcm9wcy5tYXhJbWFnZUNvdW50ID4gMCkgJiYKKyAgICAgIChuX2ltYWdlc193YW50ZWQgPiBzd2FwcGVyLT5zdXJmX3Byb3BzLm1heEltYWdlQ291bnQpKSB7CisgICAgLyogQXBwbGljYXRpb24gbXVzdCBzZXR0bGUgZm9yIGZld2VyIGltYWdlcyB0aGFuIGRlc2lyZWQ6ICovCisgICAgbl9pbWFnZXNfd2FudGVkID0gc3dhcHBlci0+c3VyZl9wcm9wcy5tYXhJbWFnZUNvdW50OworICB9CisKKyAgaWYgKHN3YXBwZXItPgorICAgICAgc3VyZl9wcm9wcy5zdXBwb3J0ZWRUcmFuc2Zvcm1zICYgVktfU1VSRkFDRV9UUkFOU0ZPUk1fSURFTlRJVFlfQklUX0tIUikgeworICAgIHByZVRyYW5zZm9ybSA9IFZLX1NVUkZBQ0VfVFJBTlNGT1JNX0lERU5USVRZX0JJVF9LSFI7CisgIH0gZWxzZSB7CisgICAgcHJlVHJhbnNmb3JtID0gc3dhcHBlci0+c3VyZl9wcm9wcy5jdXJyZW50VHJhbnNmb3JtOworICB9CisKKyAgZm9ybWF0ID0KKyAgICAgIF92a19mb3JtYXRfZnJvbV92aWRlb19mb3JtYXQgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJnN3YXBwZXItPnZfaW5mbykpOworICBjb2xvcl9zcGFjZSA9IF92a19jb2xvcl9zcGFjZV9mcm9tX3ZpZGVvX2luZm8gKCZzd2FwcGVyLT52X2luZm8pOworCisgIGlmICgoc3dhcHBlci0+c3VyZl9wcm9wcy5zdXBwb3J0ZWRDb21wb3NpdGVBbHBoYSAmCisgICAgICAgICAgVktfQ09NUE9TSVRFX0FMUEhBX09QQVFVRV9CSVRfS0hSKSAhPSAwKSB7CisgICAgYWxwaGFfZmxhZ3MgPSBWS19DT01QT1NJVEVfQUxQSEFfT1BBUVVFX0JJVF9LSFI7CisgIH0gZWxzZSBpZiAoKHN3YXBwZXItPnN1cmZfcHJvcHMuc3VwcG9ydGVkQ29tcG9zaXRlQWxwaGEgJgorICAgICAgICAgIFZLX0NPTVBPU0lURV9BTFBIQV9QUkVfTVVMVElQTElFRF9CSVRfS0hSKSAhPSAwKSB7CisgICAgYWxwaGFfZmxhZ3MgPSBWS19DT01QT1NJVEVfQUxQSEFfUFJFX01VTFRJUExJRURfQklUX0tIUjsKKyAgfSBlbHNlIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsCisgICAgICAgIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCwKKyAgICAgICAgIkluY29ycmVjdCBhbHBoYSBmbGFncyBhdmFpbGFibGUgZm9yIHRoZSBzd2FwIGltYWdlcyIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmICgoc3dhcHBlci0+c3VyZl9wcm9wcy5zdXBwb3J0ZWRVc2FnZUZsYWdzICYKKyAgICAgICAgICBWS19JTUFHRV9VU0FHRV9UUkFOU0ZFUl9EU1RfQklUKSAhPSAwKSB7CisgICAgdXNhZ2UgfD0gVktfSU1BR0VfVVNBR0VfVFJBTlNGRVJfRFNUX0JJVDsKKyAgfSBlbHNlIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsCisgICAgICAgIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCwKKyAgICAgICAgIkluY29ycmVjdCB1c2FnZSBmbGFncyBhdmFpbGFibGUgZm9yIHRoZSBzd2FwIGltYWdlcyIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorICBpZiAoKHN3YXBwZXItPnN1cmZfcHJvcHMuCisgICAgICAgICAgc3VwcG9ydGVkVXNhZ2VGbGFncyAmIFZLX0lNQUdFX1VTQUdFX0NPTE9SX0FUVEFDSE1FTlRfQklUKQorICAgICAgIT0gMCkgeworICAgIHVzYWdlIHw9IFZLX0lNQUdFX1VTQUdFX0NPTE9SX0FUVEFDSE1FTlRfQklUOworICB9IGVsc2UgeworICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX1ZVTEtBTl9FUlJPUiwKKyAgICAgICAgVktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVELAorICAgICAgICAiSW5jb3JyZWN0IHVzYWdlIGZsYWdzIGF2YWlsYWJsZSBmb3IgdGhlIHN3YXAgaW1hZ2VzIik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgeworICAgIFZrU3dhcGNoYWluQ3JlYXRlSW5mb0tIUiBzd2FwX2NoYWluX2luZm8gPSB7IDAsIH07CisgICAgVmtTd2FwY2hhaW5LSFIgb2xkX3N3YXBfY2hhaW47CisKKyAgICBvbGRfc3dhcF9jaGFpbiA9IHN3YXBwZXItPnN3YXBfY2hhaW47CisKKyAgICBzd2FwX2NoYWluX2luZm8uc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9TV0FQQ0hBSU5fQ1JFQVRFX0lORk9fS0hSOworICAgIHN3YXBfY2hhaW5faW5mby5wTmV4dCA9IE5VTEw7CisgICAgc3dhcF9jaGFpbl9pbmZvLnN1cmZhY2UgPSBzd2FwcGVyLT5zdXJmYWNlOworICAgIHN3YXBfY2hhaW5faW5mby5taW5JbWFnZUNvdW50ID0gbl9pbWFnZXNfd2FudGVkOworICAgIHN3YXBfY2hhaW5faW5mby5pbWFnZUZvcm1hdCA9IGZvcm1hdDsKKyAgICBzd2FwX2NoYWluX2luZm8uaW1hZ2VDb2xvclNwYWNlID0gY29sb3Jfc3BhY2U7CisgICAgc3dhcF9jaGFpbl9pbmZvLmltYWdlRXh0ZW50ID0gc3dhcGNoYWluX2RpbXM7CisgICAgc3dhcF9jaGFpbl9pbmZvLmltYWdlQXJyYXlMYXllcnMgPSAxOworICAgIHN3YXBfY2hhaW5faW5mby5pbWFnZVVzYWdlID0gdXNhZ2U7CisgICAgc3dhcF9jaGFpbl9pbmZvLmltYWdlU2hhcmluZ01vZGUgPSBWS19TSEFSSU5HX01PREVfRVhDTFVTSVZFOworICAgIHN3YXBfY2hhaW5faW5mby5xdWV1ZUZhbWlseUluZGV4Q291bnQgPSAwOworICAgIHN3YXBfY2hhaW5faW5mby5wUXVldWVGYW1pbHlJbmRpY2VzID0gTlVMTDsKKyAgICBzd2FwX2NoYWluX2luZm8ucHJlVHJhbnNmb3JtID0gcHJlVHJhbnNmb3JtOworICAgIHN3YXBfY2hhaW5faW5mby5wcmVzZW50TW9kZSA9IHByZXNlbnRfbW9kZTsKKyAgICBzd2FwX2NoYWluX2luZm8uY29tcG9zaXRlQWxwaGEgPSBhbHBoYV9mbGFnczsKKyAgICBzd2FwX2NoYWluX2luZm8uY2xpcHBlZCA9IFRSVUU7CisgICAgc3dhcF9jaGFpbl9pbmZvLm9sZFN3YXBjaGFpbiA9IHN3YXBwZXItPnN3YXBfY2hhaW47CisKKyAgICBlcnIgPQorICAgICAgICBzd2FwcGVyLT5DcmVhdGVTd2FwY2hhaW5LSFIgKHN3YXBwZXItPmRldmljZS0+ZGV2aWNlLCAmc3dhcF9jaGFpbl9pbmZvLAorICAgICAgICBOVUxMLCAmc3dhcHBlci0+c3dhcF9jaGFpbik7CisgICAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrQ3JlYXRlU3dhcGNoYWluS0hSIikgPCAwKQorICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKG9sZF9zd2FwX2NoYWluICE9IFZLX05VTExfSEFORExFKSB7CisgICAgICBzd2FwcGVyLT5EZXN0cm95U3dhcGNoYWluS0hSIChzd2FwcGVyLT5kZXZpY2UtPmRldmljZSwgb2xkX3N3YXBfY2hhaW4sCisgICAgICAgICAgTlVMTCk7CisgICAgfQorICB9CisKKyAgZXJyID0KKyAgICAgIHN3YXBwZXItPkdldFN3YXBjaGFpbkltYWdlc0tIUiAoc3dhcHBlci0+ZGV2aWNlLT5kZXZpY2UsCisgICAgICBzd2FwcGVyLT5zd2FwX2NoYWluLCAmc3dhcHBlci0+bl9zd2FwX2NoYWluX2ltYWdlcywgTlVMTCk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a0dldFN3YXBjaGFpbkltYWdlc0tIUiIpIDwgMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgc3dhcF9jaGFpbl9pbWFnZXMgPSBnX25ldzAgKFZrSW1hZ2UsIHN3YXBwZXItPm5fc3dhcF9jaGFpbl9pbWFnZXMpOworICBlcnIgPQorICAgICAgc3dhcHBlci0+R2V0U3dhcGNoYWluSW1hZ2VzS0hSIChzd2FwcGVyLT5kZXZpY2UtPmRldmljZSwKKyAgICAgIHN3YXBwZXItPnN3YXBfY2hhaW4sICZzd2FwcGVyLT5uX3N3YXBfY2hhaW5faW1hZ2VzLCBzd2FwX2NoYWluX2ltYWdlcyk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a0dldFN3YXBjaGFpbkltYWdlc0tIUiIpIDwgMCkgeworICAgIGdfZnJlZSAoc3dhcF9jaGFpbl9pbWFnZXMpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHN3YXBwZXItPnN3YXBfY2hhaW5faW1hZ2VzID0KKyAgICAgIGdfbmV3MCAoR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKiwgc3dhcHBlci0+bl9zd2FwX2NoYWluX2ltYWdlcyk7CisgIGZvciAoaSA9IDA7IGkgPCBzd2FwcGVyLT5uX3N3YXBfY2hhaW5faW1hZ2VzOyBpKyspIHsKKyAgICBzd2FwcGVyLT5zd2FwX2NoYWluX2ltYWdlc1tpXSA9IChHc3RWdWxrYW5JbWFnZU1lbW9yeSAqKQorICAgICAgICBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV93cmFwcGVkIChzd2FwcGVyLT5kZXZpY2UsIHN3YXBfY2hhaW5faW1hZ2VzW2ldLAorICAgICAgICBmb3JtYXQsIHN3YXBjaGFpbl9kaW1zLndpZHRoLCBzd2FwY2hhaW5fZGltcy5oZWlnaHQsCisgICAgICAgIFZLX0lNQUdFX1RJTElOR19PUFRJTUFMLCB1c2FnZSwgTlVMTCwgTlVMTCk7CisKKyAgICBpZiAoIV9zd2FwcGVyX3NldF9pbWFnZV9sYXlvdXQgKHN3YXBwZXIsIHN3YXBwZXItPnN3YXBfY2hhaW5faW1hZ2VzW2ldLAorICAgICAgICAgICAgVktfSU1BR0VfTEFZT1VUX0NPTE9SX0FUVEFDSE1FTlRfT1BUSU1BTCwgZXJyb3IpKSB7CisgICAgICBnX2ZyZWUgKHN3YXBfY2hhaW5faW1hZ2VzKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKworICBnX2ZyZWUgKHN3YXBfY2hhaW5faW1hZ2VzKTsKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3N3YXBjaGFpbl9yZXNpemUgKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyLCBHRXJyb3IgKiogZXJyb3IpCit7CisgIGludCBpOworCisgIGlmICghc3dhcHBlci0+cXVldWUpIHsKKyAgICBpZiAoIV92dWxrYW5fc3dhcHBlcl9yZXRyaWV2ZV9zdXJmYWNlX3Byb3BlcnRpZXMgKHN3YXBwZXIsIGVycm9yKSkgeworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfQorCisgIGlmIChzd2FwcGVyLT5zd2FwX2NoYWluX2ltYWdlcykgeworICAgIGZvciAoaSA9IDA7IGkgPCBzd2FwcGVyLT5uX3N3YXBfY2hhaW5faW1hZ2VzOyBpKyspIHsKKyAgICAgIGlmIChzd2FwcGVyLT5zd2FwX2NoYWluX2ltYWdlc1tpXSkKKyAgICAgICAgZ3N0X21lbW9yeV91bnJlZiAoKEdzdE1lbW9yeSAqKSBzd2FwcGVyLT5zd2FwX2NoYWluX2ltYWdlc1tpXSk7CisgICAgfQorICAgIGdfZnJlZSAoc3dhcHBlci0+c3dhcF9jaGFpbl9pbWFnZXMpOworICB9CisKKyAgcmV0dXJuIF9hbGxvY2F0ZV9zd2FwY2hhaW4gKHN3YXBwZXIsIHN3YXBwZXItPmNhcHMsIGVycm9yKTsKK30KKworZ2Jvb2xlYW4KK2dzdF92dWxrYW5fc3dhcHBlcl9zZXRfY2FwcyAoR3N0VnVsa2FuU3dhcHBlciAqIHN3YXBwZXIsIEdzdENhcHMgKiBjYXBzLAorICAgIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZzd2FwcGVyLT52X2luZm8sIGNhcHMpKSB7CisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfVlVMS0FOX0VSUk9SLAorICAgICAgICBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQsCisgICAgICAgICJGYWlsZWQgdG8gZ2V0byBHc3RWaWRlb0luZm8gZnJvbSBjYXBzIik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJnN3YXBwZXItPmNhcHMsIGNhcHMpOworCisgIHJldHVybiBfc3dhcGNoYWluX3Jlc2l6ZSAoc3dhcHBlciwgZXJyb3IpOworfQorCitzdHJ1Y3QgY21kX2RhdGEKK3sKKyAgVmtDb21tYW5kQnVmZmVyIGNtZDsKKyAgVmtGZW5jZSBmZW5jZTsKKyAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5OworICBncG9pbnRlciBkYXRhOworfTsKKworc3RhdGljIGdib29sZWFuCitfYnVpbGRfcmVuZGVyX2J1ZmZlcl9jbWQgKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyLCBndWludDMyIHN3YXBfaWR4LAorICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgc3RydWN0IGNtZF9kYXRhICpjbWRfZGF0YSwgR0Vycm9yICoqIGVycm9yKQoreworICBHc3RWdWxrYW5CdWZmZXJNZW1vcnkgKmJ1Zl9tZW07CisgIEdzdFZ1bGthbkltYWdlTWVtb3J5ICpzd2FwX21lbTsKKyAgVmtDb21tYW5kQnVmZmVyIGNtZDsKKyAgVmtSZXN1bHQgZXJyOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzd2FwX2lkeCA8IHN3YXBwZXItPm5fc3dhcF9jaGFpbl9pbWFnZXMsIEZBTFNFKTsKKyAgc3dhcF9tZW0gPSBzd2FwcGVyLT5zd2FwX2NoYWluX2ltYWdlc1tzd2FwX2lkeF07CisKKyAgY21kX2RhdGEtPm5vdGlmeSA9IE5VTEw7CisKKyAgaWYgKCFnc3RfdnVsa2FuX2RldmljZV9jcmVhdGVfY21kX2J1ZmZlciAoc3dhcHBlci0+ZGV2aWNlLCAmY21kLCBlcnJvcikpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGJ1Zl9tZW0gPSAoR3N0VnVsa2FuQnVmZmVyTWVtb3J5ICopIGdzdF9idWZmZXJfcGVla19tZW1vcnkgKGJ1ZmZlciwgMCk7CisKKyAgeworICAgIFZrQ29tbWFuZEJ1ZmZlckluaGVyaXRhbmNlSW5mbyBidWZfaW5oID0geyAwLCB9OworICAgIFZrQ29tbWFuZEJ1ZmZlckJlZ2luSW5mbyBjbWRfYnVmX2luZm8gPSB7IDAsIH07CisKKyAgICBidWZfaW5oLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9CVUZGRVJfSU5IRVJJVEFOQ0VfSU5GTzsKKyAgICBidWZfaW5oLnBOZXh0ID0gTlVMTDsKKyAgICBidWZfaW5oLnJlbmRlclBhc3MgPSBWS19OVUxMX0hBTkRMRTsKKyAgICBidWZfaW5oLnN1YnBhc3MgPSAwOworICAgIGJ1Zl9pbmguZnJhbWVidWZmZXIgPSBWS19OVUxMX0hBTkRMRTsKKyAgICBidWZfaW5oLm9jY2x1c2lvblF1ZXJ5RW5hYmxlID0gRkFMU0U7CisgICAgYnVmX2luaC5xdWVyeUZsYWdzID0gMDsKKyAgICBidWZfaW5oLnBpcGVsaW5lU3RhdGlzdGljcyA9IDA7CisKKyAgICBjbWRfYnVmX2luZm8uc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9DT01NQU5EX0JVRkZFUl9CRUdJTl9JTkZPOworICAgIGNtZF9idWZfaW5mby5wTmV4dCA9IE5VTEw7CisgICAgY21kX2J1Zl9pbmZvLmZsYWdzID0gVktfQ09NTUFORF9CVUZGRVJfVVNBR0VfT05FX1RJTUVfU1VCTUlUX0JJVDsKKyAgICBjbWRfYnVmX2luZm8ucEluaGVyaXRhbmNlSW5mbyA9ICZidWZfaW5oOworCisgICAgZXJyID0gdmtCZWdpbkNvbW1hbmRCdWZmZXIgKGNtZCwgJmNtZF9idWZfaW5mbyk7CisgICAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrQmVnaW5Db21tYW5kQnVmZmVyIikgPCAwKQorICAgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKCFfc3dhcHBlcl9zZXRfaW1hZ2VfbGF5b3V0X3dpdGhfY21kIChzd2FwcGVyLCBjbWQsIHN3YXBfbWVtLAorICAgICAgICAgIFZLX0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9EU1RfT1BUSU1BTCwgZXJyb3IpKSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgeworICAgIFZrQnVmZmVySW1hZ2VDb3B5IHJlZ2lvbiA9IHsgMCwgfTsKKyAgICBndWludDMyIGRzdF93aWR0aCA9IGdzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2dldF93aWR0aCAoc3dhcF9tZW0pOworICAgIGd1aW50MzIgZHN0X2hlaWdodCA9IGdzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2dldF9oZWlnaHQgKHN3YXBfbWVtKTsKKyAgICBndWludCBzcmNfd2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCAoJnN3YXBwZXItPnZfaW5mbyk7CisgICAgZ3VpbnQgc3JjX2hlaWdodCA9IEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJnN3YXBwZXItPnZfaW5mbyk7CisgICAgZ3VpbnQgeCwgeTsKKworICAgIGlmIChzcmNfd2lkdGggIT0gZHN0X3dpZHRoIHx8IHNyY19oZWlnaHQgIT0gZHN0X2hlaWdodCkgeworLyogRklYTUU6IGJyb2tlbiB3aXRoIEx1bmFyRydzIGRyaXZlcgorICAgICAgeCA9IChzcmNfd2lkdGggLSBkc3Rfd2lkdGgpIC8gMjsKKyAgICAgIHkgPSAoc3JjX2hlaWdodCAtIGRzdF9oZWlnaHQpIC8gMjsqLworICAgICAgeCA9IHkgPSAwOworICAgIH0gZWxzZSB7CisgICAgICB4ID0geSA9IDA7CisgICAgfQorICAgIC8qIEZJWE1FOiBzY2FsZSByZWN0ICovCisgICAgR1NUX1ZLX0JVRkZFUl9JTUFHRV9DT1BZIChyZWdpb24sIDAsIHNyY193aWR0aCwgc3JjX2hlaWdodCwKKyAgICAgICAgR1NUX1ZLX0lNQUdFX1NVQlJFU09VUkNFX0xBWUVSU19JTklUIChWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCAwLCAwLAorICAgICAgICAgICAgMSksIEdTVF9WS19PRkZTRVQzRF9JTklUICh4LCB5LCAwKSwgR1NUX1ZLX0VYVEVOVDNEX0lOSVQgKHNyY193aWR0aCwKKyAgICAgICAgICAgIHNyY19oZWlnaHQsIDEpKTsKKworICAgIHZrQ21kQ29weUJ1ZmZlclRvSW1hZ2UgKGNtZCwgYnVmX21lbS0+YnVmZmVyLCBzd2FwX21lbS0+aW1hZ2UsCisgICAgICAgIHN3YXBfbWVtLT5pbWFnZV9sYXlvdXQsIDEsICZyZWdpb24pOworICB9CisKKyAgaWYgKCFfc3dhcHBlcl9zZXRfaW1hZ2VfbGF5b3V0X3dpdGhfY21kIChzd2FwcGVyLCBjbWQsIHN3YXBfbWVtLAorICAgICAgICAgIFZLX0lNQUdFX0xBWU9VVF9QUkVTRU5UX1NSQ19LSFIsIGVycm9yKSkgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGVyciA9IHZrRW5kQ29tbWFuZEJ1ZmZlciAoY21kKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrRW5kQ29tbWFuZEJ1ZmZlciIpIDwgMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgY21kX2RhdGEtPmNtZCA9IGNtZDsKKyAgY21kX2RhdGEtPm5vdGlmeSA9IE5VTEw7CisKKyAgaWYgKCFfbmV3X2ZlbmNlIChzd2FwcGVyLT5kZXZpY2UsICZjbWRfZGF0YS0+ZmVuY2UsIGVycm9yKSkgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19yZW5kZXJfYnVmZmVyX3VubG9ja2VkIChHc3RWdWxrYW5Td2FwcGVyICogc3dhcHBlciwKKyAgICBHc3RCdWZmZXIgKiBidWZmZXIsIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgVmtTZW1hcGhvcmUgc2VtYXBob3JlID0geyAwLCB9OworICBWa1NlbWFwaG9yZUNyZWF0ZUluZm8gc2VtYXBob3JlX2luZm8gPSB7IDAsIH07CisgIFZrUHJlc2VudEluZm9LSFIgcHJlc2VudDsKKyAgc3RydWN0IGNtZF9kYXRhIGNtZF9kYXRhID0geyAwLCB9OworICBndWludDMyIHN3YXBfaWR4OworICBWa1Jlc3VsdCBlcnIsIHByZXNlbnRfZXJyOworCisgIHNlbWFwaG9yZV9pbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfU0VNQVBIT1JFX0NSRUFURV9JTkZPOworICBzZW1hcGhvcmVfaW5mby5wTmV4dCA9IE5VTEw7CisgIHNlbWFwaG9yZV9pbmZvLmZsYWdzID0gMDsKKworICBpZiAoIWJ1ZmZlcikgeworICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX1ZVTEtBTl9FUlJPUiwKKyAgICAgICAgVktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVELCAiSW52YWxpZCBidWZmZXIiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgaWYgKGdfYXRvbWljX2ludF9nZXQgKCZzd2FwcGVyLT50b19xdWl0KSkgeworICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX1ZVTEtBTl9FUlJPUiwgVktfRVJST1JfU1VSRkFDRV9MT1NUX0tIUiwKKyAgICAgICAgIk91dHB1dCB3aW5kb3cgd2FzIGNsb3NlZCIpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZzd2FwcGVyLT5jdXJyZW50X2J1ZmZlciwgYnVmZmVyKTsKKworcmVhY3F1aXJlOgorICBlcnIgPSB2a0NyZWF0ZVNlbWFwaG9yZSAoc3dhcHBlci0+ZGV2aWNlLT5kZXZpY2UsICZzZW1hcGhvcmVfaW5mbywKKyAgICAgIE5VTEwsICZzZW1hcGhvcmUpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLCAidmtDcmVhdGVTZW1hcGhvcmUiKSA8IDApCisgICAgZ290byBlcnJvcjsKKworICBlcnIgPQorICAgICAgc3dhcHBlci0+QWNxdWlyZU5leHRJbWFnZUtIUiAoc3dhcHBlci0+ZGV2aWNlLT5kZXZpY2UsCisgICAgICBzd2FwcGVyLT5zd2FwX2NoYWluLCAtMSwgc2VtYXBob3JlLCBWS19OVUxMX0hBTkRMRSwgJnN3YXBfaWR4KTsKKyAgLyogVE9ETzogRGVhbCB3aXRoIHRoZSBWS19TVUJPUFRJTUFMX0tIUiBhbmQgVktfRVJST1JfT1VUX09GX0RBVEVfS0hSICovCisgIGlmIChlcnIgPT0gVktfRVJST1JfT1VUX09GX0RBVEVfS0hSKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc3dhcHBlciwgIm91dCBvZiBkYXRlIGZyYW1lIGFjcXVpcmVkIik7CisKKyAgICB2a0Rlc3Ryb3lTZW1hcGhvcmUgKHN3YXBwZXItPmRldmljZS0+ZGV2aWNlLCBzZW1hcGhvcmUsIE5VTEwpOworICAgIGlmICghX3N3YXBjaGFpbl9yZXNpemUgKHN3YXBwZXIsIGVycm9yKSkKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgZ290byByZWFjcXVpcmU7CisgIH0gZWxzZSBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLAorICAgICAgICAgICJ2a0FjcXVpcmVOZXh0SW1hZ2VLSFIiKSA8IDApIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgaWYgKCFfYnVpbGRfcmVuZGVyX2J1ZmZlcl9jbWQgKHN3YXBwZXIsIHN3YXBfaWR4LCBidWZmZXIsICZjbWRfZGF0YSwgZXJyb3IpKQorICAgIGdvdG8gZXJyb3I7CisKKyAgeworICAgIFZrU3VibWl0SW5mbyBzdWJtaXRfaW5mbyA9IHsgMCwgfTsKKworICAgIHN1Ym1pdF9pbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfU1VCTUlUX0lORk87CisgICAgc3VibWl0X2luZm8ucE5leHQgPSBOVUxMOworICAgIHN1Ym1pdF9pbmZvLndhaXRTZW1hcGhvcmVDb3VudCA9IDE7CisgICAgc3VibWl0X2luZm8ucFdhaXRTZW1hcGhvcmVzID0gJnNlbWFwaG9yZTsKKyAgICBzdWJtaXRfaW5mby5jb21tYW5kQnVmZmVyQ291bnQgPSAxOworICAgIHN1Ym1pdF9pbmZvLnBDb21tYW5kQnVmZmVycyA9ICZjbWRfZGF0YS5jbWQ7CisgICAgc3VibWl0X2luZm8uc2lnbmFsU2VtYXBob3JlQ291bnQgPSAwOworICAgIHN1Ym1pdF9pbmZvLnBTaWduYWxTZW1hcGhvcmVzID0gTlVMTDsKKworICAgIGVyciA9CisgICAgICAgIHZrUXVldWVTdWJtaXQgKHN3YXBwZXItPnF1ZXVlLT5xdWV1ZSwgMSwgJnN1Ym1pdF9pbmZvLCBjbWRfZGF0YS5mZW5jZSk7CisgICAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrUXVldWVTdWJtaXQiKSA8IDApIHsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKworICBwcmVzZW50LnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfUFJFU0VOVF9JTkZPX0tIUjsKKyAgcHJlc2VudC5wTmV4dCA9IE5VTEw7CisgIHByZXNlbnQud2FpdFNlbWFwaG9yZUNvdW50ID0gMDsKKyAgcHJlc2VudC5wV2FpdFNlbWFwaG9yZXMgPSBOVUxMOworICBwcmVzZW50LnN3YXBjaGFpbkNvdW50ID0gMTsKKyAgcHJlc2VudC5wU3dhcGNoYWlucyA9ICZzd2FwcGVyLT5zd2FwX2NoYWluOworICBwcmVzZW50LnBJbWFnZUluZGljZXMgPSAmc3dhcF9pZHg7CisgIHByZXNlbnQucFJlc3VsdHMgPSAmcHJlc2VudF9lcnI7CisKKyAgZXJyID0gc3dhcHBlci0+UXVldWVQcmVzZW50S0hSIChzd2FwcGVyLT5xdWV1ZS0+cXVldWUsICZwcmVzZW50KTsKKyAgaWYgKGVyciA9PSBWS19FUlJPUl9PVVRfT0ZfREFURV9LSFIpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzd2FwcGVyLCAib3V0IG9mIGRhdGUgZnJhbWUgc3VibWl0dGVkIik7CisKKyAgICBpZiAoIV9zd2FwY2hhaW5fcmVzaXplIChzd2FwcGVyLCBlcnJvcikpCisgICAgICBnb3RvIGVycm9yOworICB9IGVsc2UgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrUXVldWVQcmVzZW50S0hSIikgPCAwKQorICAgIGdvdG8gZXJyb3I7CisKKyAgZXJyID0gdmtXYWl0Rm9yRmVuY2VzIChzd2FwcGVyLT5kZXZpY2UtPmRldmljZSwgMSwgJmNtZF9kYXRhLmZlbmNlLCBUUlVFLCAtMSk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a1dhaXRGb3JGZW5jZXMiKSA8IDApCisgICAgZ290byBlcnJvcjsKKworICBpZiAoc2VtYXBob3JlKQorICAgIHZrRGVzdHJveVNlbWFwaG9yZSAoc3dhcHBlci0+ZGV2aWNlLT5kZXZpY2UsIHNlbWFwaG9yZSwgTlVMTCk7CisgIGlmIChjbWRfZGF0YS5jbWQpCisgICAgdmtGcmVlQ29tbWFuZEJ1ZmZlcnMgKHN3YXBwZXItPmRldmljZS0+ZGV2aWNlLCBzd2FwcGVyLT5kZXZpY2UtPmNtZF9wb29sLAorICAgICAgICAxLCAmY21kX2RhdGEuY21kKTsKKyAgaWYgKGNtZF9kYXRhLmZlbmNlKQorICAgIHZrRGVzdHJveUZlbmNlIChzd2FwcGVyLT5kZXZpY2UtPmRldmljZSwgY21kX2RhdGEuZmVuY2UsIE5VTEwpOworICBpZiAoY21kX2RhdGEubm90aWZ5KQorICAgIGNtZF9kYXRhLm5vdGlmeSAoY21kX2RhdGEuZGF0YSk7CisgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgeworICAgIGlmIChzZW1hcGhvcmUpCisgICAgICB2a0Rlc3Ryb3lTZW1hcGhvcmUgKHN3YXBwZXItPmRldmljZS0+ZGV2aWNlLCBzZW1hcGhvcmUsIE5VTEwpOworICAgIGlmIChjbWRfZGF0YS5jbWQpCisgICAgICB2a0ZyZWVDb21tYW5kQnVmZmVycyAoc3dhcHBlci0+ZGV2aWNlLT5kZXZpY2UsIHN3YXBwZXItPmRldmljZS0+Y21kX3Bvb2wsCisgICAgICAgICAgMSwgJmNtZF9kYXRhLmNtZCk7CisgICAgaWYgKGNtZF9kYXRhLmZlbmNlKQorICAgICAgdmtEZXN0cm95RmVuY2UgKHN3YXBwZXItPmRldmljZS0+ZGV2aWNlLCBjbWRfZGF0YS5mZW5jZSwgTlVMTCk7CisgICAgaWYgKGNtZF9kYXRhLm5vdGlmeSkKKyAgICAgIGNtZF9kYXRhLm5vdGlmeSAoY21kX2RhdGEuZGF0YSk7CisgICAgcmV0dXJuIEZBTFNFOworICB9Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX3N3YXBwZXJfcmVuZGVyX2J1ZmZlciAoR3N0VnVsa2FuU3dhcHBlciAqIHN3YXBwZXIsCisgICAgR3N0QnVmZmVyICogYnVmZmVyLCBHRXJyb3IgKiogZXJyb3IpCit7CisgIEdzdE1lbW9yeSAqbWVtOworICBnYm9vbGVhbiByZXQ7CisKKyAgbWVtID0gZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeSAoYnVmZmVyLCAwKTsKKyAgaWYgKCFtZW0pIHsKKyAgICBnX3NldF9lcnJvcl9saXRlcmFsIChlcnJvciwgR1NUX1ZVTEtBTl9FUlJPUiwgVktfRVJST1JfRk9STUFUX05PVF9TVVBQT1JURUQsCisgICAgICAgICJCdWZmZXIgaGFzIG5vIG1lbW9yeSIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorICBpZiAoIWdzdF9pc192dWxrYW5fYnVmZmVyX21lbW9yeSAobWVtKSkgeworICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwgKGVycm9yLCBHU1RfVlVMS0FOX0VSUk9SLCBWS19FUlJPUl9GT1JNQVRfTk9UX1NVUFBPUlRFRCwKKyAgICAgICAgIkluY29ycmVjdCBtZW1vcnkgdHlwZSIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIFJFTkRFUl9MT0NLIChzd2FwcGVyKTsKKyAgcmV0ID0gX3JlbmRlcl9idWZmZXJfdW5sb2NrZWQgKHN3YXBwZXIsIGJ1ZmZlciwgZXJyb3IpOworICBSRU5ERVJfVU5MT0NLIChzd2FwcGVyKTsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZAorX29uX3dpbmRvd19kcmF3IChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3csIEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyKQoreworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBSRU5ERVJfTE9DSyAoc3dhcHBlcik7CisgIGlmICghc3dhcHBlci0+Y3VycmVudF9idWZmZXIpIHsKKyAgICBSRU5ERVJfVU5MT0NLIChzd2FwcGVyKTsKKyAgICByZXR1cm47CisgIH0KKworICAvKiBUT0RPOiBwZXJmb3JtIHNvbWUgcmF0ZSBsaW1pdGluZyBvZiB0aGUgbnVtYmVyIG9mIHJlZHJhdyBldmVudHMgKi8KKyAgaWYgKCFfcmVuZGVyX2J1ZmZlcl91bmxvY2tlZCAoc3dhcHBlciwgc3dhcHBlci0+Y3VycmVudF9idWZmZXIsICZlcnJvcikpCisgICAgR1NUX0VSUk9SX09CSkVDVCAoc3dhcHBlciwgIkZhaWxlZCB0byByZWRyYXcgYnVmZmVyICVwICVzIiwKKyAgICAgICAgc3dhcHBlci0+Y3VycmVudF9idWZmZXIsIGVycm9yLT5tZXNzYWdlKTsKKyAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKyAgUkVOREVSX1VOTE9DSyAoc3dhcHBlcik7Cit9CmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3Zrc3dhcHBlci5oIGIvZXh0L3Z1bGthbi92a3N3YXBwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDg2MDM2Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a3N3YXBwZXIuaApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9WS19TV0FQUEVSX0hfCisjZGVmaW5lIF9WS19TV0FQUEVSX0hfCisKKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKworI2luY2x1ZGUgPHZrLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9WVUxLQU5fU1dBUFBFUiAgICAgICAgIChnc3RfdnVsa2FuX3N3YXBwZXJfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9TV0FQUEVSKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfVFlQRV9WVUxLQU5fU1dBUFBFUiwgR3N0VnVsa2FuU3dhcHBlcikpCisjZGVmaW5lIEdTVF9WVUxLQU5fU1dBUFBFUl9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrKSwgR1NUX1RZUEVfVlVMS0FOX1NXQVBQRVIsIEdzdFZ1bGthblN3YXBwZXJDbGFzcykpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fU1dBUFBFUihvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX1RZUEVfVlVMS0FOX1NXQVBQRVIpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX1NXQVBQRVJfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9UWVBFX1ZVTEtBTl9TV0FQUEVSKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9TV0FQUEVSX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9UWVBFX1ZVTEtBTl9TV0FQUEVSLCBHc3RWdWxrYW5Td2FwcGVyQ2xhc3MpKQorR1R5cGUgZ3N0X3Z1bGthbl9zd2FwcGVyX2dldF90eXBlICAgICAgICh2b2lkKTsKKworI2RlZmluZSBHU1RfVlVMS0FOX1NXQVBQRVJfVklERU9fRk9STUFUUyAiIHsgUkdCQSwgQkdSQSwgUkdCLCBCR1IgfSAiCisKK3N0cnVjdCBfR3N0VnVsa2FuU3dhcHBlcgoreworICBHc3RPYmplY3QgcGFyZW50OworCisgIEdzdFZ1bGthbkRldmljZSAqZGV2aWNlOworICBHc3RWdWxrYW5XaW5kb3cgKndpbmRvdzsKKyAgR3N0VnVsa2FuUXVldWUgKnF1ZXVlOworCisgIFZrU3VyZmFjZUtIUiAgICBzdXJmYWNlOworCisgIFZrU3VyZmFjZUNhcGFiaWxpdGllc0tIUiBzdXJmX3Byb3BzOworICBWa1N1cmZhY2VGb3JtYXRLSFIgKnN1cmZfZm9ybWF0czsKKyAgZ3VpbnQzMiBuX3N1cmZfZm9ybWF0czsKKyAgVmtQcmVzZW50TW9kZUtIUiAqc3VyZl9wcmVzZW50X21vZGVzOworICBndWludDMyIG5fc3VyZl9wcmVzZW50X21vZGVzOworCisgIFZrU3dhcGNoYWluS0hSIHN3YXBfY2hhaW47CisgIEdzdFZ1bGthbkltYWdlTWVtb3J5ICoqc3dhcF9jaGFpbl9pbWFnZXM7CisgIGd1aW50MzIgbl9zd2FwX2NoYWluX2ltYWdlczsKKworICBHc3RDYXBzICpjYXBzOworICBHc3RWaWRlb0luZm8gdl9pbmZvOworCisgIFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVN1cHBvcnRLSFIgR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlU3VwcG9ydEtIUjsKKyAgUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzS0hSIEdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGllc0tIUjsKKyAgUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlRm9ybWF0c0tIUiBHZXRQaHlzaWNhbERldmljZVN1cmZhY2VGb3JtYXRzS0hSOworICBQRk5fdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVzZW50TW9kZXNLSFIgR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1vZGVzS0hSOworICBQRk5fdmtDcmVhdGVTd2FwY2hhaW5LSFIgQ3JlYXRlU3dhcGNoYWluS0hSOworICBQRk5fdmtEZXN0cm95U3dhcGNoYWluS0hSIERlc3Ryb3lTd2FwY2hhaW5LSFI7CisgIFBGTl92a0dldFN3YXBjaGFpbkltYWdlc0tIUiBHZXRTd2FwY2hhaW5JbWFnZXNLSFI7CisgIFBGTl92a0FjcXVpcmVOZXh0SW1hZ2VLSFIgQWNxdWlyZU5leHRJbWFnZUtIUjsKKyAgUEZOX3ZrUXVldWVQcmVzZW50S0hSIFF1ZXVlUHJlc2VudEtIUjsKKworICAvKiA8cHJpdmF0ZT4gKi8KKyAgLyogcnVudGltZSB2YXJpYWJsZXMgKi8KKyAgZ2ludCB0b19xdWl0OworICBHc3RCdWZmZXIgKmN1cnJlbnRfYnVmZmVyOworCisgIC8qIHNpZ25hbCBoYW5kbGVycyAqLworICBndWxvbmcgY2xvc2VfaWQ7CisgIGd1bG9uZyBkcmF3X2lkOworCisgIEdzdFZ1bGthblN3YXBwZXJQcml2YXRlICpwcml2OworfTsKKworc3RydWN0IF9Hc3RWdWxrYW5Td2FwcGVyQ2xhc3MKK3sKKyAgR3N0T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworR3N0VnVsa2FuU3dhcHBlciAqICBnc3RfdnVsa2FuX3N3YXBwZXJfbmV3ICAgICAgICAgICAgICAgICAgICAgIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdyk7CisKK0dzdENhcHMgKiAgICAgICAgICAgZ3N0X3Z1bGthbl9zd2FwcGVyX2dldF9zdXBwb3J0ZWRfY2FwcyAgICAgICAoR3N0VnVsa2FuU3dhcHBlciAqIHN3YXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnJvcik7CitnYm9vbGVhbiAgICAgICAgICAgIGdzdF92dWxrYW5fc3dhcHBlcl9zZXRfY2FwcyAgICAgICAgICAgICAgICAgKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICogY2FwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycm9yKTsKK2dib29sZWFuICAgICAgICAgICAgZ3N0X3Z1bGthbl9zd2FwcGVyX3JlbmRlcl9idWZmZXIgICAgICAgICAgICAoR3N0VnVsa2FuU3dhcHBlciAqIHN3YXBwZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycm9yKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9WS19JTlNUQU5DRV9IXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a3VwbG9hZC5jIGIvZXh0L3Z1bGthbi92a3VwbG9hZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1YzM2Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZrdXBsb2FkLmMKQEAgLTAsMCArMSw4MjkgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtdnVsa2FudXBsb2FkCisgKgorICogdnVsa2FudXBsb2FkIHVwbG9hZHMgZGF0YSBpbnRvIFZ1bGthbiBtZW1vcnkgb2JqZWN0cy4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgInZrdXBsb2FkLmgiCisKK0dTVF9ERUJVR19DQVRFR09SWSAoZ3N0X2RlYnVnX3Z1bGthbl91cGxvYWQpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2RlYnVnX3Z1bGthbl91cGxvYWQKKworc3RhdGljIEdzdENhcHMgKgorX3NldF9jYXBzX2ZlYXR1cmVzX3dpdGhfcGFzc3Rocm91Z2ggKGNvbnN0IEdzdENhcHMgKiBjYXBzLAorICAgIGNvbnN0IGdjaGFyICogZmVhdHVyZV9uYW1lLCBHc3RDYXBzRmVhdHVyZXMgKiBwYXNzdGhyb3VnaCkKK3sKKyAgZ3VpbnQgaSwgaiwgbSwgbjsKKyAgR3N0Q2FwcyAqdG1wOworCisgIHRtcCA9IGdzdF9jYXBzX2NvcHkgKGNhcHMpOworCisgIG4gPSBnc3RfY2Fwc19nZXRfc2l6ZSAoY2Fwcyk7CisgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICBHc3RDYXBzRmVhdHVyZXMgKmZlYXR1cmVzLCAqb3JpZ19mZWF0dXJlczsKKworICAgIG9yaWdfZmVhdHVyZXMgPSBnc3RfY2Fwc19nZXRfZmVhdHVyZXMgKGNhcHMsIGkpOworICAgIGZlYXR1cmVzID0gZ3N0X2NhcHNfZmVhdHVyZXNfbmV3IChmZWF0dXJlX25hbWUsIE5VTEwpOworCisgICAgbSA9IGdzdF9jYXBzX2ZlYXR1cmVzX2dldF9zaXplIChvcmlnX2ZlYXR1cmVzKTsKKyAgICBmb3IgKGogPSAwOyBqIDwgbTsgaisrKSB7CisgICAgICBjb25zdCBnY2hhciAqZmVhdHVyZSA9IGdzdF9jYXBzX2ZlYXR1cmVzX2dldF9udGggKG9yaWdfZmVhdHVyZXMsIGopOworCisgICAgICAvKiBpZiB3ZSBhbHJlYWR5IGhhdmUgdGhlIGZlYXR1cmVzICovCisgICAgICBpZiAoZ3N0X2NhcHNfZmVhdHVyZXNfY29udGFpbnMgKGZlYXR1cmVzLCBmZWF0dXJlKSkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIGlmIChnX3N0cmNtcDAgKGZlYXR1cmUsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1NZU1RFTV9NRU1PUlkpID09IDApCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZiAocGFzc3Rocm91Z2ggJiYgZ3N0X2NhcHNfZmVhdHVyZXNfY29udGFpbnMgKHBhc3N0aHJvdWdoLCBmZWF0dXJlKSkgeworICAgICAgICBnc3RfY2Fwc19mZWF0dXJlc19hZGQgKGZlYXR1cmVzLCBmZWF0dXJlKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMgKHRtcCwgaSwgZmVhdHVyZXMpOworICB9CisKKyAgcmV0dXJuIHRtcDsKK30KKworc3RydWN0IEJ1ZmZlclVwbG9hZAoreworICBHc3RWdWxrYW5VcGxvYWQgKnVwbG9hZDsKK307CisKK3N0YXRpYyBncG9pbnRlcgorX2J1ZmZlcl9uZXdfaW1wbCAoR3N0VnVsa2FuVXBsb2FkICogdXBsb2FkKQoreworICBzdHJ1Y3QgQnVmZmVyVXBsb2FkICpyYXcgPSBnX25ldzAgKHN0cnVjdCBCdWZmZXJVcGxvYWQsIDEpOworCisgIHJhdy0+dXBsb2FkID0gdXBsb2FkOworCisgIHJldHVybiByYXc7Cit9CisKK3N0YXRpYyBHc3RDYXBzICoKK19idWZmZXJfdHJhbnNmb3JtX2NhcHMgKGdwb2ludGVyIGltcGwsIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sCisgICAgR3N0Q2FwcyAqIGNhcHMpCit7CisgIHJldHVybiBnc3RfY2Fwc19yZWYgKGNhcHMpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19idWZmZXJfc2V0X2NhcHMgKGdwb2ludGVyIGltcGwsIEdzdENhcHMgKiBpbl9jYXBzLCBHc3RDYXBzICogb3V0X2NhcHMpCit7CisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorX2J1ZmZlcl9wcm9wb3NlX2FsbG9jYXRpb24gKGdwb2ludGVyIGltcGwsIEdzdFF1ZXJ5ICogZGVjaWRlX3F1ZXJ5LAorICAgIEdzdFF1ZXJ5ICogcXVlcnkpCit7CisgIHN0cnVjdCBCdWZmZXJVcGxvYWQgKnJhdyA9IGltcGw7CisgIGdib29sZWFuIG5lZWRfcG9vbDsKKyAgR3N0Q2FwcyAqY2FwczsKKyAgZ3VpbnQgc2l6ZTsKKworICBnc3RfcXVlcnlfcGFyc2VfYWxsb2NhdGlvbiAocXVlcnksICZjYXBzLCAmbmVlZF9wb29sKTsKKworICBpZiAoY2FwcyA9PSBOVUxMKQorICAgIHJldHVybjsKKworICBpZiAobmVlZF9wb29sKSB7CisgICAgR3N0QnVmZmVyUG9vbCAqcG9vbDsKKyAgICBHc3RTdHJ1Y3R1cmUgKmNvbmZpZzsKKyAgICBHc3RWaWRlb0luZm8gaW5mbzsKKworICAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmaW5mbywgY2FwcykpCisgICAgICByZXR1cm47CisKKyAgICAvKiB0aGUgbm9ybWFsIHNpemUgb2YgYSBmcmFtZSAqLworICAgIHNpemUgPSBpbmZvLnNpemU7CisKKyAgICBwb29sID0gZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9uZXcgKHJhdy0+dXBsb2FkLT5kZXZpY2UpOworCisgICAgY29uZmlnID0gZ3N0X2J1ZmZlcl9wb29sX2dldF9jb25maWcgKHBvb2wpOworICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X3BhcmFtcyAoY29uZmlnLCBjYXBzLCBzaXplLCAwLCAwKTsKKworICAgIGlmICghZ3N0X2J1ZmZlcl9wb29sX3NldF9jb25maWcgKHBvb2wsIGNvbmZpZykpIHsKKyAgICAgIGdfb2JqZWN0X3VucmVmIChwb29sKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnc3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fcG9vbCAocXVlcnksIHBvb2wsIHNpemUsIDEsIDApOworICAgIGdfb2JqZWN0X3VucmVmIChwb29sKTsKKyAgfQorCisgIHJldHVybjsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK19idWZmZXJfcGVyZm9ybSAoZ3BvaW50ZXIgaW1wbCwgR3N0QnVmZmVyICogaW5idWYsIEdzdEJ1ZmZlciAqKiBvdXRidWYpCit7CisgIGlmICghZ3N0X2lzX3Z1bGthbl9idWZmZXJfbWVtb3J5IChnc3RfYnVmZmVyX3BlZWtfbWVtb3J5IChpbmJ1ZiwgMCkpKQorICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKworICAqb3V0YnVmID0gaW5idWY7CisKKyAgcmV0dXJuIEdTVF9GTE9XX09LOworfQorCitzdGF0aWMgdm9pZAorX2J1ZmZlcl9mcmVlIChncG9pbnRlciBpbXBsKQoreworICBnX2ZyZWUgKGltcGwpOworfQorCitzdGF0aWMgR3N0U3RhdGljQ2FwcyBfYnVmZmVyX2luX3RlbXBsID0KK0dTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3KCIgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfVlVMS0FOX0JVRkZFUiAiKSIpOworc3RhdGljIEdzdFN0YXRpY0NhcHMgX2J1ZmZlcl9vdXRfdGVtcGwgPQorR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9WVUxLQU5fQlVGRkVSICIpIik7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgVXBsb2FkTWV0aG9kIGJ1ZmZlcl91cGxvYWQgPSB7CisgICJWdWxrYW5CdWZmZXIiLAorICAmX2J1ZmZlcl9pbl90ZW1wbCwKKyAgJl9idWZmZXJfb3V0X3RlbXBsLAorICBfYnVmZmVyX25ld19pbXBsLAorICBfYnVmZmVyX3RyYW5zZm9ybV9jYXBzLAorICBfYnVmZmVyX3NldF9jYXBzLAorICBfYnVmZmVyX3Byb3Bvc2VfYWxsb2NhdGlvbiwKKyAgX2J1ZmZlcl9wZXJmb3JtLAorICBfYnVmZmVyX2ZyZWUsCit9OworCitzdHJ1Y3QgUmF3VG9CdWZmZXJVcGxvYWQKK3sKKyAgR3N0VnVsa2FuVXBsb2FkICp1cGxvYWQ7CisKKyAgR3N0VmlkZW9JbmZvIGluX2luZm87CisgIEdzdFZpZGVvSW5mbyBvdXRfaW5mbzsKKworICBHc3RCdWZmZXJQb29sICpwb29sOworICBnYm9vbGVhbiBwb29sX2FjdGl2ZTsKKworICBnc2l6ZSBhbGxvY19zaXplc1tHU1RfVklERU9fTUFYX1BMQU5FU107Cit9OworCitzdGF0aWMgZ3BvaW50ZXIKK19yYXdfdG9fYnVmZmVyX25ld19pbXBsIChHc3RWdWxrYW5VcGxvYWQgKiB1cGxvYWQpCit7CisgIHN0cnVjdCBSYXdUb0J1ZmZlclVwbG9hZCAqcmF3ID0gZ19uZXcwIChzdHJ1Y3QgUmF3VG9CdWZmZXJVcGxvYWQsIDEpOworCisgIHJhdy0+dXBsb2FkID0gdXBsb2FkOworCisgIHJldHVybiByYXc7Cit9CisKK3N0YXRpYyBHc3RDYXBzICoKK19yYXdfdG9fYnVmZmVyX3RyYW5zZm9ybV9jYXBzIChncG9pbnRlciBpbXBsLCBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLAorICAgIEdzdENhcHMgKiBjYXBzKQoreworICBHc3RDYXBzICpyZXQ7CisKKyAgaWYgKGRpcmVjdGlvbiA9PSBHU1RfUEFEX1NJTkspIHsKKyAgICByZXQgPQorICAgICAgICBfc2V0X2NhcHNfZmVhdHVyZXNfd2l0aF9wYXNzdGhyb3VnaCAoY2FwcywKKyAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfVlVMS0FOX0JVRkZFUiwgTlVMTCk7CisgIH0gZWxzZSB7CisgICAgcmV0ID0KKyAgICAgICAgX3NldF9jYXBzX2ZlYXR1cmVzX3dpdGhfcGFzc3Rocm91Z2ggKGNhcHMsCisgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1NZU1RFTV9NRU1PUlksIE5VTEwpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitfcmF3X3RvX2J1ZmZlcl9zZXRfY2FwcyAoZ3BvaW50ZXIgaW1wbCwgR3N0Q2FwcyAqIGluX2NhcHMsIEdzdENhcHMgKiBvdXRfY2FwcykKK3sKKyAgc3RydWN0IFJhd1RvQnVmZmVyVXBsb2FkICpyYXcgPSBpbXBsOworICBndWludCBvdXRfd2lkdGgsIG91dF9oZWlnaHQ7CisgIGd1aW50IGk7CisKKyAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZyYXctPmluX2luZm8sIGluX2NhcHMpKQorICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJnJhdy0+b3V0X2luZm8sIG91dF9jYXBzKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgb3V0X3dpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEggKCZyYXctPm91dF9pbmZvKTsKKyAgb3V0X2hlaWdodCA9IEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJnJhdy0+b3V0X2luZm8pOworCisgIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJnJhdy0+b3V0X2luZm8pOyBpKyspIHsKKyAgICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJnJhdy0+b3V0X2luZm8pOworICAgIEdzdFZ1bGthbkltYWdlTWVtb3J5ICppbWdfbWVtOworICAgIFZrRm9ybWF0IHZrX2Zvcm1hdDsKKworICAgIHZrX2Zvcm1hdCA9IGdzdF92dWxrYW5fZm9ybWF0X2Zyb21fdmlkZW9fZm9ybWF0ICh2X2Zvcm1hdCwgaSk7CisKKyAgICBpbWdfbWVtID0gKEdzdFZ1bGthbkltYWdlTWVtb3J5ICopCisgICAgICAgIGdzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2FsbG9jIChyYXctPnVwbG9hZC0+ZGV2aWNlLCB2a19mb3JtYXQsCisgICAgICAgIG91dF93aWR0aCwgb3V0X2hlaWdodCwgVktfSU1BR0VfVElMSU5HX09QVElNQUwsCisgICAgICAgIFZLX0lNQUdFX1VTQUdFX1RSQU5TRkVSX0RTVF9CSVQgfCBWS19JTUFHRV9VU0FHRV9JTlBVVF9BVFRBQ0hNRU5UX0JJVCwKKyAgICAgICAgVktfTUVNT1JZX1BST1BFUlRZX0RFVklDRV9MT0NBTF9CSVQpOworCisgICAgcmF3LT5hbGxvY19zaXplc1tpXSA9IGltZ19tZW0tPnJlcXVpcmVtZW50cy5zaXplOworCisgICAgZ3N0X21lbW9yeV91bnJlZiAoR1NUX01FTU9SWV9DQVNUIChpbWdfbWVtKSk7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK19yYXdfdG9fYnVmZmVyX3Byb3Bvc2VfYWxsb2NhdGlvbiAoZ3BvaW50ZXIgaW1wbCwgR3N0UXVlcnkgKiBkZWNpZGVfcXVlcnksCisgICAgR3N0UXVlcnkgKiBxdWVyeSkKK3sKKyAgLyogYSBsaXR0bGUgdHJpY2tlcnkgd2l0aCB0aGUgaW1wbCBwb2ludGVyICovCisgIF9idWZmZXJfcHJvcG9zZV9hbGxvY2F0aW9uIChpbXBsLCBkZWNpZGVfcXVlcnksIHF1ZXJ5KTsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK19yYXdfdG9fYnVmZmVyX3BlcmZvcm0gKGdwb2ludGVyIGltcGwsIEdzdEJ1ZmZlciAqIGluYnVmLCBHc3RCdWZmZXIgKiogb3V0YnVmKQoreworICBzdHJ1Y3QgUmF3VG9CdWZmZXJVcGxvYWQgKnJhdyA9IGltcGw7CisgIEdzdFZpZGVvRnJhbWUgdl9mcmFtZTsKKyAgR3N0Rmxvd1JldHVybiByZXQ7CisgIGd1aW50IGk7CisKKyAgaWYgKCFyYXctPnBvb2wpIHsKKyAgICBHc3RTdHJ1Y3R1cmUgKmNvbmZpZzsKKyAgICBndWludCBtaW4gPSAwLCBtYXggPSAwOworICAgIGdzaXplIHNpemUgPSAxOworCisgICAgcmF3LT5wb29sID0gZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9uZXcgKHJhdy0+dXBsb2FkLT5kZXZpY2UpOworICAgIGNvbmZpZyA9IGdzdF9idWZmZXJfcG9vbF9nZXRfY29uZmlnIChyYXctPnBvb2wpOworICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X3BhcmFtcyAoY29uZmlnLCByYXctPnVwbG9hZC0+b3V0X2NhcHMsIHNpemUsIG1pbiwKKyAgICAgICAgbWF4KTsKKyAgICBnc3RfYnVmZmVyX3Bvb2xfc2V0X2NvbmZpZyAocmF3LT5wb29sLCBjb25maWcpOworICB9CisgIGlmICghcmF3LT5wb29sX2FjdGl2ZSkgeworICAgIGdzdF9idWZmZXJfcG9vbF9zZXRfYWN0aXZlIChyYXctPnBvb2wsIFRSVUUpOworICAgIHJhdy0+cG9vbF9hY3RpdmUgPSBUUlVFOworICB9CisKKyAgaWYgKChyZXQgPQorICAgICAgICAgIGdzdF9idWZmZXJfcG9vbF9hY3F1aXJlX2J1ZmZlciAocmF3LT5wb29sLCBvdXRidWYsCisgICAgICAgICAgICAgIE5VTEwpKSAhPSBHU1RfRkxPV19PSykKKyAgICBnb3RvIG91dDsKKworICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAgKCZ2X2ZyYW1lLCAmcmF3LT5pbl9pbmZvLCBpbmJ1ZiwgR1NUX01BUF9SRUFEKSkgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChyYXctPnVwbG9hZCwgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgKCIlcyIsICJGYWlsZWQgdG8gbWFwIGlucHV0IGJ1ZmZlciIpLCBOVUxMKTsKKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKCZyYXctPm91dF9pbmZvKTsgaSsrKSB7CisgICAgR3N0TWFwSW5mbyBtYXBfaW5mbzsKKyAgICBnc2l6ZSBwbGFuZV9zaXplOworICAgIEdzdE1lbW9yeSAqbWVtOworCisgICAgbWVtID0gZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeSAoKm91dGJ1ZiwgaSk7CisgICAgaWYgKCFnc3RfbWVtb3J5X21hcCAoR1NUX01FTU9SWV9DQVNUIChtZW0pLCAmbWFwX2luZm8sIEdTVF9NQVBfV1JJVEUpKSB7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAocmF3LT51cGxvYWQsIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAgICAgKCIlcyIsICJGYWlsZWQgdG8gbWFwIG91dHB1dCBtZW1vcnkiKSwgTlVMTCk7CisgICAgICBnc3RfYnVmZmVyX3VucmVmICgqb3V0YnVmKTsKKyAgICAgICpvdXRidWYgPSBOVUxMOworICAgICAgcmV0ID0gR1NUX0ZMT1dfRVJST1I7CisgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBwbGFuZV9zaXplID0KKyAgICAgICAgR1NUX1ZJREVPX0lORk9fUExBTkVfU1RSSURFICgmcmF3LT5vdXRfaW5mbywKKyAgICAgICAgaSkgKiBHU1RfVklERU9fSU5GT19DT01QX0hFSUdIVCAoJnJhdy0+b3V0X2luZm8sIGkpOworICAgIGdfYXNzZXJ0IChwbGFuZV9zaXplIDwgbWFwX2luZm8uc2l6ZSk7CisgICAgbWVtY3B5IChtYXBfaW5mby5kYXRhLCB2X2ZyYW1lLmRhdGFbaV0sIHBsYW5lX3NpemUpOworCisgICAgZ3N0X21lbW9yeV91bm1hcCAoR1NUX01FTU9SWV9DQVNUIChtZW0pLCAmbWFwX2luZm8pOworICB9CisKKyAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmdl9mcmFtZSk7CisKKyAgcmV0ID0gR1NUX0ZMT1dfT0s7CisKK291dDoKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQKK19yYXdfdG9fYnVmZmVyX2ZyZWUgKGdwb2ludGVyIGltcGwpCit7CisgIHN0cnVjdCBSYXdUb0J1ZmZlclVwbG9hZCAqcmF3ID0gaW1wbDsKKworICBpZiAocmF3LT5wb29sKSB7CisgICAgaWYgKHJhdy0+cG9vbF9hY3RpdmUpIHsKKyAgICAgIGdzdF9idWZmZXJfcG9vbF9zZXRfYWN0aXZlIChyYXctPnBvb2wsIEZBTFNFKTsKKyAgICB9CisgICAgcmF3LT5wb29sX2FjdGl2ZSA9IEZBTFNFOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHJhdy0+cG9vbCk7CisgICAgcmF3LT5wb29sID0gTlVMTDsKKyAgfQorCisgIGdfZnJlZSAoaW1wbCk7Cit9CisKK3N0YXRpYyBHc3RTdGF0aWNDYXBzIF9yYXdfdG9fYnVmZmVyX2luX3RlbXBsID0gR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXciKTsKK3N0YXRpYyBHc3RTdGF0aWNDYXBzIF9yYXdfdG9fYnVmZmVyX291dF90ZW1wbCA9CitHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdygiIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1ZVTEtBTl9CVUZGRVIgIikiKTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBVcGxvYWRNZXRob2QgcmF3X3RvX2J1ZmZlcl91cGxvYWQgPSB7CisgICJSYXdUb1Z1bGthbkJ1ZmZlciIsCisgICZfcmF3X3RvX2J1ZmZlcl9pbl90ZW1wbCwKKyAgJl9yYXdfdG9fYnVmZmVyX291dF90ZW1wbCwKKyAgX3Jhd190b19idWZmZXJfbmV3X2ltcGwsCisgIF9yYXdfdG9fYnVmZmVyX3RyYW5zZm9ybV9jYXBzLAorICBfcmF3X3RvX2J1ZmZlcl9zZXRfY2FwcywKKyAgX3Jhd190b19idWZmZXJfcHJvcG9zZV9hbGxvY2F0aW9uLAorICBfcmF3X3RvX2J1ZmZlcl9wZXJmb3JtLAorICBfcmF3X3RvX2J1ZmZlcl9mcmVlLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBVcGxvYWRNZXRob2QgKnVwbG9hZF9tZXRob2RzW10gPSB7CisgICZidWZmZXJfdXBsb2FkLAorICAmcmF3X3RvX2J1ZmZlcl91cGxvYWQsCit9OworCitzdGF0aWMgR3N0Q2FwcyAqCitfZ2V0X2lucHV0X3RlbXBsYXRlX2NhcHMgKHZvaWQpCit7CisgIEdzdENhcHMgKnJldCA9IE5VTEw7CisgIGdpbnQgaTsKKworICAvKiBGSVhNRTogY2FjaGUgdGhpcyBhbmQgaW52YWxpZGF0ZSBvbiBjaGFuZ2VzIHRvIHVwbG9hZF9tZXRob2RzICovCisgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKHVwbG9hZF9tZXRob2RzKTsgaSsrKSB7CisgICAgR3N0Q2FwcyAqdGVtcGxhdGUgPSBnc3Rfc3RhdGljX2NhcHNfZ2V0ICh1cGxvYWRfbWV0aG9kc1tpXS0+aW5fdGVtcGxhdGUpOworICAgIHJldCA9IHJldCA9PSBOVUxMID8gdGVtcGxhdGUgOiBnc3RfY2Fwc19tZXJnZSAocmV0LCB0ZW1wbGF0ZSk7CisgIH0KKworICByZXQgPSBnc3RfY2Fwc19zaW1wbGlmeSAocmV0KTsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgR3N0Q2FwcyAqCitfZ2V0X291dHB1dF90ZW1wbGF0ZV9jYXBzICh2b2lkKQoreworICBHc3RDYXBzICpyZXQgPSBOVUxMOworICBnaW50IGk7CisKKyAgLyogRklYTUU6IGNhY2hlIHRoaXMgYW5kIGludmFsaWRhdGUgb24gY2hhbmdlcyB0byB1cGxvYWRfbWV0aG9kcyAqLworICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTICh1cGxvYWRfbWV0aG9kcyk7IGkrKykgeworICAgIEdzdENhcHMgKnRlbXBsYXRlID0gZ3N0X3N0YXRpY19jYXBzX2dldCAodXBsb2FkX21ldGhvZHNbaV0tPm91dF90ZW1wbGF0ZSk7CisgICAgcmV0ID0gcmV0ID09IE5VTEwgPyB0ZW1wbGF0ZSA6IGdzdF9jYXBzX21lcmdlIChyZXQsIHRlbXBsYXRlKTsKKyAgfQorCisgIHJldCA9IGdzdF9jYXBzX3NpbXBsaWZ5IChyZXQpOworCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5fdXBsb2FkX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5fdXBsb2FkX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBhcmFtX3NwZWMpOworc3RhdGljIHZvaWQgZ3N0X3Z1bGthbl91cGxvYWRfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcGFyYW1fc3BlYyk7CisKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdnVsa2FuX3VwbG9hZF9xdWVyeSAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0LAorICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdFF1ZXJ5ICogcXVlcnkpOworc3RhdGljIHZvaWQgZ3N0X3Z1bGthbl91cGxvYWRfc2V0X2NvbnRleHQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgIEdzdENvbnRleHQgKiBjb250ZXh0KTsKK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiBnc3RfdnVsa2FuX3VwbG9hZF9jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKgorICAgIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pOworCitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Z1bGthbl91cGxvYWRfc2V0X2NhcHMgKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCwKKyAgICBHc3RDYXBzICogaW5fY2FwcywgR3N0Q2FwcyAqIG91dF9jYXBzKTsKK3N0YXRpYyBHc3RDYXBzICpnc3RfdnVsa2FuX3VwbG9hZF90cmFuc2Zvcm1fY2FwcyAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0LAorICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdnVsa2FuX3VwbG9hZF9wcm9wb3NlX2FsbG9jYXRpb24gKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCwKKyAgICBHc3RRdWVyeSAqIGRlY2lkZV9xdWVyeSwgR3N0UXVlcnkgKiBxdWVyeSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Z1bGthbl91cGxvYWRfZGVjaWRlX2FsbG9jYXRpb24gKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCwKKyAgICBHc3RRdWVyeSAqIHF1ZXJ5KTsKK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF92dWxrYW5fdXBsb2FkX3RyYW5zZm9ybSAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0LAorICAgIEdzdEJ1ZmZlciAqIGluYnVmLCBHc3RCdWZmZXIgKiBvdXRidWYpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3Z1bGthbl91cGxvYWRfcHJlcGFyZV9vdXRwdXRfYnVmZmVyIChHc3RCYXNlVHJhbnNmb3JtICoKKyAgICBidCwgR3N0QnVmZmVyICogaW5idWYsIEdzdEJ1ZmZlciAqKiBvdXRidWYpOworCitlbnVtCit7CisgIFBST1BfMCwKK307CisKK2VudW0KK3sKKyAgU0lHTkFMXzAsCisgIExBU1RfU0lHTkFMCit9OworCisvKiBzdGF0aWMgZ3VpbnQgZ3N0X3Z1bGthbl91cGxvYWRfc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAgfTsgKi8KKworI2RlZmluZSBnc3RfdnVsa2FuX3VwbG9hZF9wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0VnVsa2FuVXBsb2FkLCBnc3RfdnVsa2FuX3VwbG9hZCwKKyAgICBHU1RfVFlQRV9CQVNFX1RSQU5TRk9STSwgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9kZWJ1Z192dWxrYW5fdXBsb2FkLAorICAgICAgICAidnVsa2FudXBsb2FkIiwgMCwgIlZ1bGthbiBVcGxvYWRlciIpKTsKKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fdXBsb2FkX2NsYXNzX2luaXQgKEdzdFZ1bGthblVwbG9hZENsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKKyAgR3N0RWxlbWVudENsYXNzICpnc3RlbGVtZW50X2NsYXNzOworICBHc3RCYXNlVHJhbnNmb3JtQ2xhc3MgKmdzdGJhc2V0cmFuc2Zvcm1fY2xhc3M7CisKKyAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CisgIGdzdGVsZW1lbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOworICBnc3RiYXNldHJhbnNmb3JtX2NsYXNzID0gKEdzdEJhc2VUcmFuc2Zvcm1DbGFzcyAqKSBrbGFzczsKKworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfdnVsa2FuX3VwbG9hZF9zZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF92dWxrYW5fdXBsb2FkX2dldF9wcm9wZXJ0eTsKKworICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEgKGdzdGVsZW1lbnRfY2xhc3MsICJWdWxrYW4gVXBsb2FkZXIiLAorICAgICAgIkZpbHRlci9WaWRlbyIsICJBIFZ1bGthbiBkYXRhIHVwbG9hZGVyIiwKKyAgICAgICJNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+Iik7CisKKyAgeworICAgIEdzdENhcHMgKmNhcHM7CisKKyAgICBjYXBzID0gX2dldF9pbnB1dF90ZW1wbGF0ZV9jYXBzICgpOworICAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCisgICAgICAgIGdzdF9wYWRfdGVtcGxhdGVfbmV3ICgic2luayIsIEdTVF9QQURfU0lOSywgR1NUX1BBRF9BTFdBWVMsIGNhcHMpKTsKKyAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CisKKyAgICBjYXBzID0gX2dldF9vdXRwdXRfdGVtcGxhdGVfY2FwcyAoKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgICBnc3RfcGFkX3RlbXBsYXRlX25ldyAoInNyYyIsIEdTVF9QQURfU1JDLCBHU1RfUEFEX0FMV0FZUywgY2FwcykpOworICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKKyAgfQorCisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3Z1bGthbl91cGxvYWRfZmluYWxpemU7CisKKyAgZ3N0ZWxlbWVudF9jbGFzcy0+Y2hhbmdlX3N0YXRlID0gZ3N0X3Z1bGthbl91cGxvYWRfY2hhbmdlX3N0YXRlOworICBnc3RlbGVtZW50X2NsYXNzLT5zZXRfY29udGV4dCA9IGdzdF92dWxrYW5fdXBsb2FkX3NldF9jb250ZXh0OworICBnc3RiYXNldHJhbnNmb3JtX2NsYXNzLT5xdWVyeSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnVsa2FuX3VwbG9hZF9xdWVyeSk7CisgIGdzdGJhc2V0cmFuc2Zvcm1fY2xhc3MtPnNldF9jYXBzID0gZ3N0X3Z1bGthbl91cGxvYWRfc2V0X2NhcHM7CisgIGdzdGJhc2V0cmFuc2Zvcm1fY2xhc3MtPnRyYW5zZm9ybV9jYXBzID0gZ3N0X3Z1bGthbl91cGxvYWRfdHJhbnNmb3JtX2NhcHM7CisgIGdzdGJhc2V0cmFuc2Zvcm1fY2xhc3MtPnByb3Bvc2VfYWxsb2NhdGlvbiA9CisgICAgICBnc3RfdnVsa2FuX3VwbG9hZF9wcm9wb3NlX2FsbG9jYXRpb247CisgIGdzdGJhc2V0cmFuc2Zvcm1fY2xhc3MtPmRlY2lkZV9hbGxvY2F0aW9uID0KKyAgICAgIGdzdF92dWxrYW5fdXBsb2FkX2RlY2lkZV9hbGxvY2F0aW9uOworICBnc3RiYXNldHJhbnNmb3JtX2NsYXNzLT50cmFuc2Zvcm0gPSBnc3RfdnVsa2FuX3VwbG9hZF90cmFuc2Zvcm07CisgIGdzdGJhc2V0cmFuc2Zvcm1fY2xhc3MtPnByZXBhcmVfb3V0cHV0X2J1ZmZlciA9CisgICAgICBnc3RfdnVsa2FuX3VwbG9hZF9wcmVwYXJlX291dHB1dF9idWZmZXI7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3VwbG9hZF9pbml0IChHc3RWdWxrYW5VcGxvYWQgKiB2a191cGxvYWQpCit7CisgIGd1aW50IGksIG47CisKKyAgbiA9IEdfTl9FTEVNRU5UUyAodXBsb2FkX21ldGhvZHMpOworICB2a191cGxvYWQtPnVwbG9hZF9pbXBscyA9IGdfbWFsbG9jIChzaXplb2YgKGdwb2ludGVyKSAqIG4pOworICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgdmtfdXBsb2FkLT51cGxvYWRfaW1wbHNbaV0gPSB1cGxvYWRfbWV0aG9kc1tpXS0+bmV3X2ltcGwgKHZrX3VwbG9hZCk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fdXBsb2FkX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RWdWxrYW5VcGxvYWQgKnZrX3VwbG9hZCA9IEdTVF9WVUxLQU5fVVBMT0FEIChvYmplY3QpOworICBndWludCBpOworCisgIGdzdF9jYXBzX3JlcGxhY2UgKCZ2a191cGxvYWQtPmluX2NhcHMsIE5VTEwpOworICBnc3RfY2Fwc19yZXBsYWNlICgmdmtfdXBsb2FkLT5vdXRfY2FwcywgTlVMTCk7CisKKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAodXBsb2FkX21ldGhvZHMpOyBpKyspIHsKKyAgICB1cGxvYWRfbWV0aG9kc1tpXS0+ZnJlZSAodmtfdXBsb2FkLT51cGxvYWRfaW1wbHNbaV0pOworICB9CisKKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl91cGxvYWRfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisvLyAgR3N0VnVsa2FuVXBsb2FkICp2a191cGxvYWQgPSBHU1RfVlVMS0FOX1VQTE9BRCAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3VwbG9hZF9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKy8vICBHc3RWdWxrYW5VcGxvYWQgKnZrX3VwbG9hZCA9IEdTVF9WVUxLQU5fVVBMT0FEIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdnVsa2FuX3VwbG9hZF9xdWVyeSAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0LCBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLAorICAgIEdzdFF1ZXJ5ICogcXVlcnkpCit7CisgIEdzdFZ1bGthblVwbG9hZCAqdmtfdXBsb2FkID0gR1NUX1ZVTEtBTl9VUExPQUQgKGJ0KTsKKyAgZ2Jvb2xlYW4gcmVzID0gRkFMU0U7CisKKyAgc3dpdGNoIChHU1RfUVVFUllfVFlQRSAocXVlcnkpKSB7CisgICAgY2FzZSBHU1RfUVVFUllfQ09OVEVYVDp7CisgICAgICByZXMgPSBnc3RfdnVsa2FuX2hhbmRsZV9jb250ZXh0X3F1ZXJ5IChHU1RfRUxFTUVOVCAodmtfdXBsb2FkKSwgcXVlcnksCisgICAgICAgICAgJnZrX3VwbG9hZC0+ZGlzcGxheSwgJnZrX3VwbG9hZC0+aW5zdGFuY2UsICZ2a191cGxvYWQtPmRldmljZSk7CisKKyAgICAgIGlmIChyZXMpCisgICAgICAgIHJldHVybiByZXM7CisgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmV0dXJuIEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUyAocGFyZW50X2NsYXNzKS0+cXVlcnkgKGJ0LCBkaXJlY3Rpb24sIHF1ZXJ5KTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fdXBsb2FkX3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0Q29udGV4dCAqIGNvbnRleHQpCit7CisgIEdzdFZ1bGthblVwbG9hZCAqdmtfdXBsb2FkID0gR1NUX1ZVTEtBTl9VUExPQUQgKGVsZW1lbnQpOworCisgIGdzdF92dWxrYW5faGFuZGxlX3NldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0LCAmdmtfdXBsb2FkLT5kaXNwbGF5LAorICAgICAgJnZrX3VwbG9hZC0+aW5zdGFuY2UpOworCisgIEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7Cit9CisKK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgorZ3N0X3Z1bGthbl91cGxvYWRfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKK3sKKyAgR3N0VnVsa2FuVXBsb2FkICp2a191cGxvYWQgPSBHU1RfVlVMS0FOX1VQTE9BRCAoZWxlbWVudCk7CisgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJldCA9IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUzsKKworICBHU1RfREVCVUcgKCJjaGFuZ2luZyBzdGF0ZTogJXMgPT4gJXMiLAorICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUgKEdTVF9TVEFURV9UUkFOU0lUSU9OX0NVUlJFTlQgKHRyYW5zaXRpb24pKSwKKyAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lIChHU1RfU1RBVEVfVFJBTlNJVElPTl9ORVhUICh0cmFuc2l0aW9uKSkpOworCisgIHN3aXRjaCAodHJhbnNpdGlvbikgeworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9OVUxMX1RPX1JFQURZOgorICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKKyAgICAgIGlmICghZ3N0X3Z1bGthbl9lbnN1cmVfZWxlbWVudF9kYXRhIChlbGVtZW50LCAmdmtfdXBsb2FkLT5kaXNwbGF5LAorICAgICAgICAgICAgICAmdmtfdXBsb2FkLT5pbnN0YW5jZSkpIHsKKyAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHZrX3VwbG9hZCwgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgICAgICgiRmFpbGVkIHRvIHJldHJlaXZlIHZ1bGthbiBpbnN0YW5jZS9kaXNwbGF5IiksIChOVUxMKSk7CisgICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICB9CisgICAgICBpZiAoIWdzdF92dWxrYW5fZGV2aWNlX3J1bl9jb250ZXh0X3F1ZXJ5IChHU1RfRUxFTUVOVCAodmtfdXBsb2FkKSwKKyAgICAgICAgICAgICAgJnZrX3VwbG9hZC0+ZGV2aWNlKSkgeworICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAodmtfdXBsb2FkLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAorICAgICAgICAgICAgKCJGYWlsZWQgdG8gcmV0cmVpdmUgdnVsa2FuIGRldmljZSIpLCAoTlVMTCkpOworICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmV0ID0gR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmNoYW5nZV9zdGF0ZSAoZWxlbWVudCwgdHJhbnNpdGlvbik7CisgIGlmIChyZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKQorICAgIHJldHVybiByZXQ7CisKKyAgc3dpdGNoICh0cmFuc2l0aW9uKSB7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BMQVlJTkdfVE9fUEFVU0VEOgorICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKKyAgICAgIGlmICh2a191cGxvYWQtPmRpc3BsYXkpCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHZrX3VwbG9hZC0+ZGlzcGxheSk7CisgICAgICB2a191cGxvYWQtPmRpc3BsYXkgPSBOVUxMOworICAgICAgaWYgKHZrX3VwbG9hZC0+ZGV2aWNlKQorICAgICAgICBnc3Rfb2JqZWN0X3VucmVmICh2a191cGxvYWQtPmRldmljZSk7CisgICAgICB2a191cGxvYWQtPmRldmljZSA9IE5VTEw7CisgICAgICBpZiAodmtfdXBsb2FkLT5pbnN0YW5jZSkKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAodmtfdXBsb2FkLT5pbnN0YW5jZSk7CisgICAgICB2a191cGxvYWQtPmluc3RhbmNlID0gTlVMTDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEdzdENhcHMgKgorZ3N0X3Z1bGthbl91cGxvYWRfdHJhbnNmb3JtX2NhcHMgKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCwKKyAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RDYXBzICogY2FwcywgR3N0Q2FwcyAqIGZpbHRlcikKK3sKKyAgR3N0VnVsa2FuVXBsb2FkICp2a191cGxvYWQgPSBHU1RfVlVMS0FOX1VQTE9BRCAoYnQpOworICBHc3RDYXBzICpyZXN1bHQsICp0bXA7CisgIGdpbnQgaTsKKworICB0bXAgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7CisKKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAodXBsb2FkX21ldGhvZHMpOyBpKyspIHsKKyAgICBHc3RDYXBzICp0bXAyOworICAgIEdzdENhcHMgKnRlbXBsOworCisgICAgaWYgKGRpcmVjdGlvbiA9PSBHU1RfUEFEX1NJTkspIHsKKyAgICAgIHRlbXBsID0gZ3N0X3N0YXRpY19jYXBzX2dldCAodXBsb2FkX21ldGhvZHNbaV0tPmluX3RlbXBsYXRlKTsKKyAgICB9IGVsc2UgeworICAgICAgdGVtcGwgPSBnc3Rfc3RhdGljX2NhcHNfZ2V0ICh1cGxvYWRfbWV0aG9kc1tpXS0+b3V0X3RlbXBsYXRlKTsKKyAgICB9CisgICAgaWYgKCFnc3RfY2Fwc19jYW5faW50ZXJzZWN0IChjYXBzLCB0ZW1wbCkpIHsKKyAgICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbCk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsKTsKKworICAgIHRtcDIgPSB1cGxvYWRfbWV0aG9kc1tpXS0+dHJhbnNmb3JtX2NhcHMgKHZrX3VwbG9hZC0+dXBsb2FkX2ltcGxzW2ldLAorICAgICAgICBkaXJlY3Rpb24sIGNhcHMpOworCisgICAgaWYgKHRtcDIpCisgICAgICB0bXAgPSBnc3RfY2Fwc19tZXJnZSAodG1wLCB0bXAyKTsKKyAgfQorCisgIGlmIChmaWx0ZXIpIHsKKyAgICByZXN1bHQgPSBnc3RfY2Fwc19pbnRlcnNlY3RfZnVsbCAoZmlsdGVyLCB0bXAsIEdTVF9DQVBTX0lOVEVSU0VDVF9GSVJTVCk7CisgICAgZ3N0X2NhcHNfdW5yZWYgKHRtcCk7CisgIH0gZWxzZSB7CisgICAgcmVzdWx0ID0gdG1wOworICB9CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdnVsa2FuX3VwbG9hZF9zZXRfY2FwcyAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0LCBHc3RDYXBzICogaW5fY2FwcywKKyAgICBHc3RDYXBzICogb3V0X2NhcHMpCit7CisgIEdzdFZ1bGthblVwbG9hZCAqdmtfdXBsb2FkID0gR1NUX1ZVTEtBTl9VUExPQUQgKGJ0KTsKKyAgZ2Jvb2xlYW4gZm91bmRfbWV0aG9kID0gRkFMU0U7CisgIGd1aW50IGk7CisKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJnZrX3VwbG9hZC0+aW5fY2FwcywgaW5fY2Fwcyk7CisgIGdzdF9jYXBzX3JlcGxhY2UgKCZ2a191cGxvYWQtPm91dF9jYXBzLCBvdXRfY2Fwcyk7CisKKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAodXBsb2FkX21ldGhvZHMpOyBpKyspIHsKKyAgICBHc3RDYXBzICp0ZW1wbDsKKworICAgIHRlbXBsID0gZ3N0X3N0YXRpY19jYXBzX2dldCAodXBsb2FkX21ldGhvZHNbaV0tPmluX3RlbXBsYXRlKTsKKyAgICBpZiAoIWdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKGluX2NhcHMsIHRlbXBsKSkgeworICAgICAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsKTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBnc3RfY2Fwc191bnJlZiAodGVtcGwpOworCisgICAgdGVtcGwgPSBnc3Rfc3RhdGljX2NhcHNfZ2V0ICh1cGxvYWRfbWV0aG9kc1tpXS0+b3V0X3RlbXBsYXRlKTsKKyAgICBpZiAoIWdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKG91dF9jYXBzLCB0ZW1wbCkpIHsKKyAgICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbCk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsKTsKKworICAgIGlmICghdXBsb2FkX21ldGhvZHNbaV0tPnNldF9jYXBzICh2a191cGxvYWQtPnVwbG9hZF9pbXBsc1tpXSwgaW5fY2FwcywKKyAgICAgICAgICAgIG91dF9jYXBzKSkKKyAgICAgIGNvbnRpbnVlOworCisgICAgR1NUX0xPR19PQkpFQ1QgKGJ0LCAidXBsb2FkZXIgJXMgYWNjZXB0ZWQgY2FwcyBpbjogJSIgR1NUX1BUUl9GT1JNQVQKKyAgICAgICAgIiBvdXQ6ICUiIEdTVF9QVFJfRk9STUFULCB1cGxvYWRfbWV0aG9kc1tpXS0+bmFtZSwgaW5fY2Fwcywgb3V0X2NhcHMpOworCisgICAgdmtfdXBsb2FkLT5jdXJyZW50X2ltcGwgPSBpOworICAgIGZvdW5kX21ldGhvZCA9IFRSVUU7CisgICAgYnJlYWs7CisgIH0KKworICBHU1RfREVCVUdfT0JKRUNUIChidCwKKyAgICAgICJzZXQgY2FwcyBpbjogJSIgR1NUX1BUUl9GT1JNQVQgIiBvdXQ6ICUiIEdTVF9QVFJfRk9STUFULCBpbl9jYXBzLAorICAgICAgb3V0X2NhcHMpOworCisgIHJldHVybiBmb3VuZF9tZXRob2Q7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Z1bGthbl91cGxvYWRfcHJvcG9zZV9hbGxvY2F0aW9uIChHc3RCYXNlVHJhbnNmb3JtICogYnQsCisgICAgR3N0UXVlcnkgKiBkZWNpZGVfcXVlcnksIEdzdFF1ZXJ5ICogcXVlcnkpCit7CisgIEdzdFZ1bGthblVwbG9hZCAqdmtfdXBsb2FkID0gR1NUX1ZVTEtBTl9VUExPQUQgKGJ0KTsKKyAgZ3VpbnQgaTsKKworICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTICh1cGxvYWRfbWV0aG9kcyk7IGkrKykgeworICAgIEdzdENhcHMgKnRlbXBsOworCisgICAgdGVtcGwgPSBnc3Rfc3RhdGljX2NhcHNfZ2V0ICh1cGxvYWRfbWV0aG9kc1tpXS0+aW5fdGVtcGxhdGUpOworICAgIGlmICghZ3N0X2NhcHNfY2FuX2ludGVyc2VjdCAodmtfdXBsb2FkLT5pbl9jYXBzLCB0ZW1wbCkpIHsKKyAgICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbCk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsKTsKKworICAgIHRlbXBsID0gZ3N0X3N0YXRpY19jYXBzX2dldCAodXBsb2FkX21ldGhvZHNbaV0tPm91dF90ZW1wbGF0ZSk7CisgICAgaWYgKCFnc3RfY2Fwc19jYW5faW50ZXJzZWN0ICh2a191cGxvYWQtPm91dF9jYXBzLCB0ZW1wbCkpIHsKKyAgICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbCk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsKTsKKworICAgIHVwbG9hZF9tZXRob2RzW2ldLT5wcm9wb3NlX2FsbG9jYXRpb24gKHZrX3VwbG9hZC0+dXBsb2FkX2ltcGxzW2ldLAorICAgICAgICBkZWNpZGVfcXVlcnksIHF1ZXJ5KTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF92dWxrYW5fdXBsb2FkX2RlY2lkZV9hbGxvY2F0aW9uIChHc3RCYXNlVHJhbnNmb3JtICogYnQsIEdzdFF1ZXJ5ICogcXVlcnkpCit7CisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK191cGxvYWRfZmluZF9tZXRob2QgKEdzdFZ1bGthblVwbG9hZCAqIHZrX3VwbG9hZCkKK3sKKyAgdmtfdXBsb2FkLT5jdXJyZW50X2ltcGwrKzsKKworICBpZiAodmtfdXBsb2FkLT5jdXJyZW50X2ltcGwgPiBHX05fRUxFTUVOVFMgKHVwbG9hZF9tZXRob2RzKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAodmtfdXBsb2FkLCAiYXR0ZW1wdGluZyB1cGxvYWQgd2l0aCB1cGxvYWRlciAlcyIsCisgICAgICB1cGxvYWRfbWV0aG9kc1t2a191cGxvYWQtPmN1cnJlbnRfaW1wbF0tPm5hbWUpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X3Z1bGthbl91cGxvYWRfcHJlcGFyZV9vdXRwdXRfYnVmZmVyIChHc3RCYXNlVHJhbnNmb3JtICogYnQsCisgICAgR3N0QnVmZmVyICogaW5idWYsIEdzdEJ1ZmZlciAqKiBvdXRidWYpCit7CisgIEdzdFZ1bGthblVwbG9hZCAqdmtfdXBsb2FkID0gR1NUX1ZVTEtBTl9VUExPQUQgKGJ0KTsKKyAgR3N0Rmxvd1JldHVybiByZXQ7CisKKyAgZG8geworICAgIGdwb2ludGVyIG1ldGhvZF9pbXBsOworICAgIGNvbnN0IHN0cnVjdCBVcGxvYWRNZXRob2QgKm1ldGhvZDsKKworICAgIG1ldGhvZCA9IHVwbG9hZF9tZXRob2RzW3ZrX3VwbG9hZC0+Y3VycmVudF9pbXBsXTsKKyAgICBtZXRob2RfaW1wbCA9IHZrX3VwbG9hZC0+dXBsb2FkX2ltcGxzW3ZrX3VwbG9hZC0+Y3VycmVudF9pbXBsXTsKKworICAgIHJldCA9IG1ldGhvZC0+cGVyZm9ybSAobWV0aG9kX2ltcGwsIGluYnVmLCBvdXRidWYpOworICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spIHsKKyAgICAgIGRvIHsKKyAgICAgICAgaWYgKCFfdXBsb2FkX2ZpbmRfbWV0aG9kICh2a191cGxvYWQpKSB7CisgICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGJ0LCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAorICAgICAgICAgICAgICAoIkNvdWxkIG5vdCBmaW5kIHN1aXRhYmxlIHVwbG9hZGVyIiksIChOVUxMKSk7CisgICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICAgICAgICB9CisKKyAgICAgICAgbWV0aG9kID0gdXBsb2FkX21ldGhvZHNbdmtfdXBsb2FkLT5jdXJyZW50X2ltcGxdOworICAgICAgICBtZXRob2RfaW1wbCA9IHZrX3VwbG9hZC0+dXBsb2FkX2ltcGxzW3ZrX3VwbG9hZC0+Y3VycmVudF9pbXBsXTsKKyAgICAgICAgaWYgKCFtZXRob2QtPnNldF9jYXBzIChtZXRob2RfaW1wbCwgdmtfdXBsb2FkLT5pbl9jYXBzLAorICAgICAgICAgICAgICAgIHZrX3VwbG9hZC0+b3V0X2NhcHMpKQorICAgICAgICAgIC8qIHRyeSB0aGUgbmV4dCBtZXRob2QgKi8KKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgIH0gd2hpbGUgKEZBTFNFKTsKKyAgICAgIC8qIHRyeSB0aGUgdXBsb2FkaW5nIHdpdGggdGhlIG5leHQgbWV0aG9kICovCisgICAgICBjb250aW51ZTsKKyAgICB9CisgIH0gd2hpbGUgKEZBTFNFKTsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X3Z1bGthbl91cGxvYWRfdHJhbnNmb3JtIChHc3RCYXNlVHJhbnNmb3JtICogYnQsIEdzdEJ1ZmZlciAqIGluYnVmLAorICAgIEdzdEJ1ZmZlciAqIG91dGJ1ZikKK3sKKyAgcmV0dXJuIEdTVF9GTE9XX09LOworfQpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a3VwbG9hZC5oIGIvZXh0L3Z1bGthbi92a3VwbG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYTNkNzIKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZrdXBsb2FkLmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE2IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9WS19VUExPQURfSF8KKyNkZWZpbmUgX1ZLX1VQTE9BRF9IXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgorI2luY2x1ZGUgPHZrLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9WVUxLQU5fVVBMT0FEICAgICAgICAgICAgKGdzdF92dWxrYW5fdXBsb2FkX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9WVUxLQU5fVVBMT0FEKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfVlVMS0FOX1VQTE9BRCxHc3RWdWxrYW5VcGxvYWQpKQorI2RlZmluZSBHU1RfVlVMS0FOX1VQTE9BRF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfVlVMS0FOX1VQTE9BRCxHc3RWdWxrYW5VcGxvYWRDbGFzcykpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fVVBMT0FEKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfVlVMS0FOX1VQTE9BRCkpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fVVBMT0FEX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9WVUxLQU5fVVBMT0FEKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthblVwbG9hZCBHc3RWdWxrYW5VcGxvYWQ7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuVXBsb2FkQ2xhc3MgR3N0VnVsa2FuVXBsb2FkQ2xhc3M7CisKK3N0cnVjdCBVcGxvYWRNZXRob2QKK3sKKyAgY29uc3QgZ2NoYXIgICAgICAgKm5hbWU7CisKKyAgR3N0U3RhdGljQ2FwcyAgICAgKmluX3RlbXBsYXRlOworICBHc3RTdGF0aWNDYXBzICAgICAqb3V0X3RlbXBsYXRlOworCisgIGdwb2ludGVyICAgICAgICAgICgqbmV3X2ltcGwpICAgICAgICAgICAgICAgICAoR3N0VnVsa2FuVXBsb2FkICogdXBsb2FkKTsKKyAgR3N0Q2FwcyAqICAgICAgICAgKCp0cmFuc2Zvcm1fY2FwcykgICAgICAgICAgIChncG9pbnRlciBpbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAqIGNhcHMpOworICBnYm9vbGVhbiAgICAgICAgICAoKnNldF9jYXBzKSAgICAgICAgICAgICAgICAgKGdwb2ludGVyIGltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAqIGluX2NhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAqIG91dF9jYXBzKTsKKyAgdm9pZCAgICAgICAgICAgICAgKCpwcm9wb3NlX2FsbG9jYXRpb24pICAgICAgIChncG9pbnRlciBpbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFF1ZXJ5ICogZGVjaWRlX3F1ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFF1ZXJ5ICogcXVlcnkpOworICBHc3RGbG93UmV0dXJuICAgICAoKnBlcmZvcm0pICAgICAgICAgICAgICAgICAgKGdwb2ludGVyIGltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QnVmZmVyICogYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEJ1ZmZlciAqKiBvdXRidWYpOworICB2b2lkICAgICAgICAgICAgICAoKmZyZWUpICAgICAgICAgICAgICAgICAgICAgKGdwb2ludGVyIGltcGwpOworfTsKKworc3RydWN0IF9Hc3RWdWxrYW5VcGxvYWQKK3sKKyAgR3N0QmFzZVRyYW5zZm9ybSAgICAgIHBhcmVudDsKKworICBHc3RWdWxrYW5JbnN0YW5jZSAgICAgKmluc3RhbmNlOworICBHc3RWdWxrYW5EZXZpY2UgICAgICAgKmRldmljZTsKKworICBHc3RWdWxrYW5EaXNwbGF5ICAgICAgKmRpc3BsYXk7CisKKyAgR3N0Q2FwcyAgICAgICAgICAgICAgICppbl9jYXBzOworICBHc3RDYXBzICAgICAgICAgICAgICAgKm91dF9jYXBzOworCisgIC8qIGFsbCBpbXBsIHBvaW50ZXJzICovCisgIGdwb2ludGVyICAgICAgICAgICAgICAqdXBsb2FkX2ltcGxzOworICBndWludCAgICAgICAgICAgICAgICAgY3VycmVudF9pbXBsOworfTsKKworc3RydWN0IF9Hc3RWdWxrYW5VcGxvYWRDbGFzcworeworICBHc3RCYXNlVHJhbnNmb3JtQ2xhc3MgdmlkZW9fc2lua19jbGFzczsKK307CisKK0dUeXBlIGdzdF92dWxrYW5fdXBsb2FkX2dldF90eXBlKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmt1dGlscy5jIGIvZXh0L3Z1bGthbi92a3V0aWxzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIyM2RiNQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmt1dGlscy5jCkBAIC0wLDAgKzEsMzI1IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgInZrdXRpbHMuaCIKKyNpbmNsdWRlICJ2a3V0aWxzX3ByaXZhdGUuaCIKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9DT05URVhUKTsKKworZ2Jvb2xlYW4KK19jaGVja19mb3JfYWxsX2xheWVycyAodWludDMyX3QgY2hlY2tfY291bnQsIGNvbnN0IGNoYXIgKipjaGVja19uYW1lcywKKyAgICB1aW50MzJfdCBsYXllcl9jb3VudCwgVmtMYXllclByb3BlcnRpZXMgKiBsYXllcnMpCit7CisgIHVpbnQzMl90IGksIGo7CisKKyAgZm9yIChpID0gMDsgaSA8IGNoZWNrX2NvdW50OyBpKyspIHsKKyAgICBnYm9vbGVhbiBmb3VuZCA9IEZBTFNFOworICAgIGZvciAoaiA9IDA7IGogPCBsYXllcl9jb3VudDsgaisrKSB7CisgICAgICBpZiAoZ19zdHJjbXAwIChjaGVja19uYW1lc1tpXSwgbGF5ZXJzW2pdLmxheWVyTmFtZSkgPT0gMCkgeworICAgICAgICBmb3VuZCA9IFRSVUU7CisgICAgICB9CisgICAgfQorICAgIGlmICghZm91bmQpIHsKKyAgICAgIEdTVF9FUlJPUiAoIkNhbm5vdCBmaW5kIGxheWVyOiAlcyIsIGNoZWNrX25hbWVzW2ldKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitfaW5pdF9jb250ZXh0X2RlYnVnICh2b2lkKQoreworI2lmbmRlZiBHU1RfRElTQUJMRV9HU1RfREVCVUcKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfR0VUIChHU1RfQ0FUX0NPTlRFWFQsICJHU1RfQ09OVEVYVCIpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9CisjZW5kaWYKK30KKworc3RhdGljIGdib29sZWFuCitfdmtfcGFkX3F1ZXJ5IChjb25zdCBHVmFsdWUgKiBpdGVtLCBHVmFsdWUgKiB2YWx1ZSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQYWQgKnBhZCA9IGdfdmFsdWVfZ2V0X29iamVjdCAoaXRlbSk7CisgIEdzdFF1ZXJ5ICpxdWVyeSA9IHVzZXJfZGF0YTsKKyAgZ2Jvb2xlYW4gcmVzOworCisgIF9pbml0X2NvbnRleHRfZGVidWcgKCk7CisKKyAgcmVzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5IChwYWQsIHF1ZXJ5KTsKKworICBpZiAocmVzKSB7CisgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIFRSVUUpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIEdTVF9DQVRfSU5GT19PQkpFQ1QgKEdTVF9DQVRfQ09OVEVYVCwgcGFkLCAicGFkIHBlZXIgcXVlcnkgZmFpbGVkIik7CisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9ydW5fcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RRdWVyeSAqIHF1ZXJ5LAorICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgIEdzdEl0ZXJhdG9yICppdDsKKyAgR3N0SXRlcmF0b3JGb2xkRnVuY3Rpb24gZnVuYyA9IF92a19wYWRfcXVlcnk7CisgIEdWYWx1ZSByZXMgPSB7IDAgfTsKKworICBnX3ZhbHVlX2luaXQgKCZyZXMsIEdfVFlQRV9CT09MRUFOKTsKKyAgZ192YWx1ZV9zZXRfYm9vbGVhbiAoJnJlcywgRkFMU0UpOworCisgIC8qIEFzayBuZWlnaGJvciAqLworICBpZiAoZGlyZWN0aW9uID09IEdTVF9QQURfU1JDKQorICAgIGl0ID0gZ3N0X2VsZW1lbnRfaXRlcmF0ZV9zcmNfcGFkcyAoZWxlbWVudCk7CisgIGVsc2UKKyAgICBpdCA9IGdzdF9lbGVtZW50X2l0ZXJhdGVfc2lua19wYWRzIChlbGVtZW50KTsKKworICB3aGlsZSAoZ3N0X2l0ZXJhdG9yX2ZvbGQgKGl0LCBmdW5jLCAmcmVzLCBxdWVyeSkgPT0gR1NUX0lURVJBVE9SX1JFU1lOQykKKyAgICBnc3RfaXRlcmF0b3JfcmVzeW5jIChpdCk7CisKKyAgZ3N0X2l0ZXJhdG9yX2ZyZWUgKGl0KTsKKworICByZXR1cm4gZ192YWx1ZV9nZXRfYm9vbGVhbiAoJnJlcyk7Cit9CisKK3ZvaWQKK2dzdF92dWxrYW5fZ2xvYmFsX2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgIGNvbnN0IGdjaGFyICogY29udGV4dF90eXBlKQoreworICBHc3RRdWVyeSAqcXVlcnk7CisgIEdzdE1lc3NhZ2UgKm1zZzsKKworICBpZiAoKHF1ZXJ5ID0gZ3N0X3Z1bGthbl9sb2NhbF9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LCBjb250ZXh0X3R5cGUsIFRSVUUpKSkgeworICAgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworICAgIHJldHVybjsKKyAgfQorCisgIC8qIDMpIFBvc3QgYSBHU1RfTUVTU0FHRV9ORUVEX0NPTlRFWFQgbWVzc2FnZSBvbiB0aGUgYnVzIHdpdGgKKyAgICogICAgdGhlIHJlcXVpcmVkIGNvbnRleHQgdHlwZSBhbmQgYWZ0ZXJ3YXJkcyBjaGVjayBpZiBhCisgICAqICAgIHVzYWJsZSBjb250ZXh0IHdhcyBzZXQgbm93IGFzIGluIDEpLiBUaGUgbWVzc2FnZSBjb3VsZAorICAgKiAgICBiZSBoYW5kbGVkIGJ5IHRoZSBwYXJlbnQgYmlucyBvZiB0aGUgZWxlbWVudCBhbmQgdGhlCisgICAqICAgIGFwcGxpY2F0aW9uLgorICAgKi8KKyAgR1NUX0NBVF9JTkZPX09CSkVDVCAoR1NUX0NBVF9DT05URVhULCBlbGVtZW50LAorICAgICAgInBvc3RpbmcgbmVlZCBjb250ZXh0IG1lc3NhZ2UiKTsKKyAgbXNnID0gZ3N0X21lc3NhZ2VfbmV3X25lZWRfY29udGV4dCAoR1NUX09CSkVDVF9DQVNUIChlbGVtZW50KSwgY29udGV4dF90eXBlKTsKKyAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChlbGVtZW50LCBtc2cpOworCisgIC8qCisgICAqIFdob21ldmVyIHJlc3BvbmRzIHRvIHRoZSBuZWVkLWNvbnRleHQgbWVzc2FnZSBwZXJmb3JtcyBhCisgICAqIEdzdEVsZW1lbnQ6OnNldF9jb250ZXh0KCkgd2l0aCB0aGUgcmVxdWlyZWQgY29udGV4dCBpbiB3aGljaCB0aGUgZWxlbWVudAorICAgKiBpcyByZXF1aXJlZCB0byB1cGRhdGUgdGhlIGRpc3BsYXlfcHRyIG9yIGNhbGwgZ3N0X3Z1bGthbl9oYW5kbGVfc2V0X2NvbnRleHQoKS4KKyAgICovCit9CisKK0dzdFF1ZXJ5ICoKK2dzdF92dWxrYW5fbG9jYWxfY29udGV4dF9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgY29uc3QgZ2NoYXIgKiBjb250ZXh0X3R5cGUsIGdib29sZWFuIHNldF9jb250ZXh0KQoreworICBHc3RRdWVyeSAqcXVlcnk7CisgIEdzdENvbnRleHQgKmN0eHQ7CisKKyAgX2luaXRfY29udGV4dF9kZWJ1ZyAoKTsKKworICAvKiAgMmEpIFF1ZXJ5IGRvd25zdHJlYW0gd2l0aCBHU1RfUVVFUllfQ09OVEVYVCBmb3IgdGhlIGNvbnRleHQgYW5kCisgICAqICAgICAgY2hlY2sgaWYgZG93bnN0cmVhbSBhbHJlYWR5IGhhcyBhIGNvbnRleHQgb2YgdGhlIHNwZWNpZmljIHR5cGUKKyAgICogIDJiKSBRdWVyeSB1cHN0cmVhbSBhcyBhYm92ZS4KKyAgICovCisgIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19jb250ZXh0IChjb250ZXh0X3R5cGUpOworICBpZiAoZ3N0X3Z1bGthbl9ydW5fcXVlcnkgKGVsZW1lbnQsIHF1ZXJ5LCBHU1RfUEFEX1NSQykpIHsKKyAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZjdHh0KTsKKyAgICBHU1RfQ0FUX0lORk9fT0JKRUNUIChHU1RfQ0FUX0NPTlRFWFQsIGVsZW1lbnQsCisgICAgICAgICJmb3VuZCBjb250ZXh0ICglcCkgaW4gZG93bnN0cmVhbSBxdWVyeSIsIGN0eHQpOworICAgIGlmIChzZXRfY29udGV4dCkKKyAgICAgIGdzdF9lbGVtZW50X3NldF9jb250ZXh0IChlbGVtZW50LCBjdHh0KTsKKyAgfSBlbHNlIGlmIChnc3RfdnVsa2FuX3J1bl9xdWVyeSAoZWxlbWVudCwgcXVlcnksIEdTVF9QQURfU0lOSykpIHsKKyAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZjdHh0KTsKKyAgICBHU1RfQ0FUX0lORk9fT0JKRUNUIChHU1RfQ0FUX0NPTlRFWFQsIGVsZW1lbnQsCisgICAgICAgICJmb3VuZCBjb250ZXh0ICglcCkgaW4gdXBzdHJlYW0gcXVlcnkiLCBjdHh0KTsKKyAgICBpZiAoc2V0X2NvbnRleHQpCisgICAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dCAoZWxlbWVudCwgY3R4dCk7CisgIH0gZWxzZSB7CisgICAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7CisgICAgcXVlcnkgPSBOVUxMOworICB9CisKKyAgcmV0dXJuIHF1ZXJ5OworfQorCitzdGF0aWMgdm9pZAorX3ZrX2Rpc3BsYXlfY29udGV4dF9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgR3N0VnVsa2FuRGlzcGxheSAqKiBkaXNwbGF5X3B0cikKK3sKKyAgZ3N0X3Z1bGthbl9nbG9iYWxfY29udGV4dF9xdWVyeSAoZWxlbWVudCwKKyAgICAgIEdTVF9WVUxLQU5fRElTUExBWV9DT05URVhUX1RZUEVfU1RSKTsKK30KKworLyogIDQpIENyZWF0ZSBhIGNvbnRleHQgYnkgaXRzZWxmIGFuZCBwb3N0IGEgR1NUX01FU1NBR0VfSEFWRV9DT05URVhUCisgKiAgICAgbWVzc2FnZS4KKyAqLworLyoKKyAqIEBlbGVtZW50OiAodHJhbnNmZXIgbm9uZSk6CisgKiBAY29udGV4dDogKHRyYW5zZmVyIGZ1bGwpOgorICovCitzdGF0aWMgdm9pZAorX3ZrX2NvbnRleHRfcHJvcGFnYXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0Q29udGV4dCAqIGNvbnRleHQpCit7CisgIEdzdE1lc3NhZ2UgKm1zZzsKKworICBfaW5pdF9jb250ZXh0X2RlYnVnICgpOworCisgIGdzdF9lbGVtZW50X3NldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0KTsKKworICBHU1RfQ0FUX0lORk9fT0JKRUNUIChHU1RfQ0FUX0NPTlRFWFQsIGVsZW1lbnQsCisgICAgICAicG9zdGluZyBoYXZlIGNvbnRleHQgKCUiIEdTVF9QVFJfRk9STUFUICIpIG1lc3NhZ2UiLCBjb250ZXh0KTsKKyAgbXNnID0gZ3N0X21lc3NhZ2VfbmV3X2hhdmVfY29udGV4dCAoR1NUX09CSkVDVF9DQVNUIChlbGVtZW50KSwgY29udGV4dCk7CisgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlRfQ0FTVCAoZWxlbWVudCksIG1zZyk7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX2Vuc3VyZV9lbGVtZW50X2RhdGEgKGdwb2ludGVyIGVsZW1lbnQsCisgICAgR3N0VnVsa2FuRGlzcGxheSAqKiBkaXNwbGF5X3B0ciwgR3N0VnVsa2FuSW5zdGFuY2UgKiogaW5zdGFuY2VfcHRyKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZWxlbWVudCAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkaXNwbGF5X3B0ciAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChpbnN0YW5jZV9wdHIgIT0gTlVMTCwgRkFMU0UpOworCisgIC8qICAxKSBDaGVjayBpZiB0aGUgZWxlbWVudCBhbHJlYWR5IGhhcyBhIGNvbnRleHQgb2YgdGhlIHNwZWNpZmljCisgICAqICAgICB0eXBlLgorICAgKi8KKyAgaWYgKCEqaW5zdGFuY2VfcHRyKSB7CisgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisKKyAgICBnc3RfdnVsa2FuX2dsb2JhbF9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LAorICAgICAgICBHU1RfVlVMS0FOX0lOU1RBTkNFX0NPTlRFWFRfVFlQRV9TVFIpOworCisgICAgLyogTmVpZ2hib3VyIGZvdW5kIGFuZCBpdCB1cGRhdGVkIHRoZSBkaXNwbGF5ICovCisgICAgaWYgKCEqaW5zdGFuY2VfcHRyKSB7CisgICAgICBHc3RDb250ZXh0ICpjb250ZXh0OworCisgICAgICAvKiBJZiBubyBuZWlnaGJvb3IsIG9yIGFwcGxpY2F0aW9uIG5vdCBpbnRlcmVzdGVkLCB1c2Ugc3lzdGVtIGRlZmF1bHQgKi8KKyAgICAgICppbnN0YW5jZV9wdHIgPSBnc3RfdnVsa2FuX2luc3RhbmNlX25ldyAoKTsKKworICAgICAgY29udGV4dCA9IGdzdF9jb250ZXh0X25ldyAoR1NUX1ZVTEtBTl9JTlNUQU5DRV9DT05URVhUX1RZUEVfU1RSLCBUUlVFKTsKKyAgICAgIGdzdF9jb250ZXh0X3NldF92dWxrYW5faW5zdGFuY2UgKGNvbnRleHQsICppbnN0YW5jZV9wdHIpOworCisgICAgICBfdmtfY29udGV4dF9wcm9wYWdhdGUgKGVsZW1lbnQsIGNvbnRleHQpOworICAgIH0KKworICAgIGlmICghZ3N0X3Z1bGthbl9pbnN0YW5jZV9vcGVuICgqaW5zdGFuY2VfcHRyLCAmZXJyb3IpKSB7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZWxlbWVudCwgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgICAoIkZhaWxlZCB0byBjcmVhdGUgdnVsa2FuIGluc3RhbmNlIiksICgiJXMiLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKworICBpZiAoISpkaXNwbGF5X3B0cikgeworICAgIF92a19kaXNwbGF5X2NvbnRleHRfcXVlcnkgKGVsZW1lbnQsIGRpc3BsYXlfcHRyKTsKKworICAgIC8qIE5laWdoYm91ciBmb3VuZCBhbmQgaXQgdXBkYXRlZCB0aGUgZGlzcGxheSAqLworICAgIGlmICghKmRpc3BsYXlfcHRyKSB7CisgICAgICBHc3RDb250ZXh0ICpjb250ZXh0OworCisgICAgICAvKiBpbnN0YW5jZSBpcyByZXF1aXJlZCBiZWZvcmUgdGhlIGRpc3BsYXkgKi8KKyAgICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICgqaW5zdGFuY2VfcHRyICE9IE5VTEwsIEZBTFNFKTsKKworICAgICAgLyogSWYgbm8gbmVpZ2hib29yLCBvciBhcHBsaWNhdGlvbiBub3QgaW50ZXJlc3RlZCwgdXNlIHN5c3RlbSBkZWZhdWx0ICovCisgICAgICAqZGlzcGxheV9wdHIgPSBnc3RfdnVsa2FuX2Rpc3BsYXlfbmV3ICgqaW5zdGFuY2VfcHRyKTsKKworICAgICAgY29udGV4dCA9IGdzdF9jb250ZXh0X25ldyAoR1NUX1ZVTEtBTl9ESVNQTEFZX0NPTlRFWFRfVFlQRV9TVFIsIFRSVUUpOworICAgICAgZ3N0X2NvbnRleHRfc2V0X3Z1bGthbl9kaXNwbGF5IChjb250ZXh0LCAqZGlzcGxheV9wdHIpOworCisgICAgICBfdmtfY29udGV4dF9wcm9wYWdhdGUgKGVsZW1lbnQsIGNvbnRleHQpOworICAgIH0KKyAgfQorCisgIHJldHVybiAqZGlzcGxheV9wdHIgIT0gTlVMTCAmJiAqaW5zdGFuY2VfcHRyICE9IE5VTEw7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX2hhbmRsZV9zZXRfY29udGV4dCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdENvbnRleHQgKiBjb250ZXh0LAorICAgIEdzdFZ1bGthbkRpc3BsYXkgKiogZGlzcGxheSwgR3N0VnVsa2FuSW5zdGFuY2UgKiogaW5zdGFuY2UpCit7CisgIEdzdFZ1bGthbkRpc3BsYXkgKmRpc3BsYXlfcmVwbGFjZW1lbnQgPSBOVUxMOworICBHc3RWdWxrYW5JbnN0YW5jZSAqaW5zdGFuY2VfcmVwbGFjZW1lbnQgPSBOVUxMOworICBjb25zdCBnY2hhciAqY29udGV4dF90eXBlOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkaXNwbGF5ICE9IE5VTEwsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGluc3RhbmNlICE9IE5VTEwsIEZBTFNFKTsKKworICBpZiAoIWNvbnRleHQpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGNvbnRleHRfdHlwZSA9IGdzdF9jb250ZXh0X2dldF9jb250ZXh0X3R5cGUgKGNvbnRleHQpOworCisgIGlmIChnX3N0cmNtcDAgKGNvbnRleHRfdHlwZSwgR1NUX1ZVTEtBTl9ESVNQTEFZX0NPTlRFWFRfVFlQRV9TVFIpID09IDApIHsKKyAgICBpZiAoIWdzdF9jb250ZXh0X2dldF92dWxrYW5fZGlzcGxheSAoY29udGV4dCwgJmRpc3BsYXlfcmVwbGFjZW1lbnQpKSB7CisgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGVsZW1lbnQsICJGYWlsZWQgdG8gZ2V0IGRpc3BsYXkgZnJvbSBjb250ZXh0Iik7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICB9IGVsc2UgaWYgKGdfc3RyY21wMCAoY29udGV4dF90eXBlLAorICAgICAgICAgIEdTVF9WVUxLQU5fSU5TVEFOQ0VfQ09OVEVYVF9UWVBFX1NUUikgPT0gMCkgeworICAgIGlmICghZ3N0X2NvbnRleHRfZ2V0X3Z1bGthbl9pbnN0YW5jZSAoY29udGV4dCwgJmluc3RhbmNlX3JlcGxhY2VtZW50KSkgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbGVtZW50LCAiRmFpbGVkIHRvIGdldCBpbnN0YW5jZSBmcm9tIGNvbnRleHQiKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKworICBpZiAoZGlzcGxheV9yZXBsYWNlbWVudCkgeworICAgIEdzdFZ1bGthbkRpc3BsYXkgKm9sZCA9ICpkaXNwbGF5OworICAgICpkaXNwbGF5ID0gZGlzcGxheV9yZXBsYWNlbWVudDsKKworICAgIGlmIChvbGQpCisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChvbGQpOworICB9CisKKyAgaWYgKGluc3RhbmNlX3JlcGxhY2VtZW50KSB7CisgICAgR3N0VnVsa2FuSW5zdGFuY2UgKm9sZCA9ICppbnN0YW5jZTsKKyAgICAqaW5zdGFuY2UgPSBpbnN0YW5jZV9yZXBsYWNlbWVudDsKKworICAgIGlmIChvbGQpCisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChvbGQpOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX2hhbmRsZV9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0UXVlcnkgKiBxdWVyeSwKKyAgICBHc3RWdWxrYW5EaXNwbGF5ICoqIGRpc3BsYXksIEdzdFZ1bGthbkluc3RhbmNlICoqIGluc3RhbmNlLAorICAgIEdzdFZ1bGthbkRldmljZSAqKiBkZXZpY2UpCit7CisgIGlmIChnc3RfdnVsa2FuX2Rpc3BsYXlfaGFuZGxlX2NvbnRleHRfcXVlcnkgKGVsZW1lbnQsIHF1ZXJ5LCBkaXNwbGF5KSkKKyAgICByZXR1cm4gVFJVRTsKKyAgaWYgKGdzdF92dWxrYW5faW5zdGFuY2VfaGFuZGxlX2NvbnRleHRfcXVlcnkgKGVsZW1lbnQsIHF1ZXJ5LCBpbnN0YW5jZSkpCisgICAgcmV0dXJuIFRSVUU7CisgIGlmIChnc3RfdnVsa2FuX2RldmljZV9oYW5kbGVfY29udGV4dF9xdWVyeSAoZWxlbWVudCwgcXVlcnksIGRldmljZSkpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgcmV0dXJuIEZBTFNFOworfQpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a3V0aWxzLmggYi9leHQvdnVsa2FuL3ZrdXRpbHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGY2Mzk1Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a3V0aWxzLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworI2lmbmRlZiBfVktfVVRJTFNfSF8KKyNkZWZpbmUgX1ZLX1VUSUxTX0hfCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8dmsuaD4KKworR19CRUdJTl9ERUNMUworCitnYm9vbGVhbiBnc3RfdnVsa2FuX2Vuc3VyZV9lbGVtZW50X2RhdGEgKGdwb2ludGVyIGVsZW1lbnQsCisgICAgR3N0VnVsa2FuRGlzcGxheSAqKmRpc3BsYXlfcHRyLCBHc3RWdWxrYW5JbnN0YW5jZSAqKiBpbnN0YW5jZV9wdHIpOworZ2Jvb2xlYW4gZ3N0X3Z1bGthbl9oYW5kbGVfc2V0X2NvbnRleHQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RDb250ZXh0ICogY29udGV4dCwKKyAgICBHc3RWdWxrYW5EaXNwbGF5ICoqIGRpc3BsYXksIEdzdFZ1bGthbkluc3RhbmNlICoqIGluc3RhbmNlKTsKK2dib29sZWFuIGdzdF92dWxrYW5faGFuZGxlX2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RRdWVyeSAqIHF1ZXJ5LAorICAgIEdzdFZ1bGthbkRpc3BsYXkgKiogZGlzcGxheSwgR3N0VnVsa2FuSW5zdGFuY2UgKiogaW5zdGFuY2UsIEdzdFZ1bGthbkRldmljZSAqKiBkZXZpY2UpOworCit2b2lkIGdzdF92dWxrYW5fZ2xvYmFsX2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBjb25zdCBnY2hhciAqIGNvbnRleHRfdHlwZSk7CitHc3RRdWVyeSAqIGdzdF92dWxrYW5fbG9jYWxfY29udGV4dF9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIGNvbnN0IGdjaGFyICogY29udGV4dF90eXBlLCBnYm9vbGVhbiBzZXRfY29udGV4dCk7CitnYm9vbGVhbiBnc3RfdnVsa2FuX3J1bl9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgR3N0UXVlcnkgKiBxdWVyeSwgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKl9WS19VVElMU19IXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L29wdXMvZ3N0b3B1c2NvbW1vbi5oIGIvZXh0L3Z1bGthbi92a3V0aWxzX3ByaXZhdGUuaApzaW1pbGFyaXR5IGluZGV4IDYwJQpyZW5hbWUgZnJvbSBleHQvb3B1cy9nc3RvcHVzY29tbW9uLmgKcmVuYW1lIHRvIGV4dC92dWxrYW4vdmt1dGlsc19wcml2YXRlLmgKaW5kZXggNzE3NzFhZS4uYWViZjQ0YiAxMDA2NDQKLS0tIGEvZXh0L29wdXMvZ3N0b3B1c2NvbW1vbi5oCisrKyBiL2V4dC92dWxrYW4vdmt1dGlsc19wcml2YXRlLmgKQEAgLTEsNSArMSw2IEBACi0vKiBHU3RyZWFtZXIgT3B1cyBFbmNvZGVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNiwyMiArMTcsMTcgQEAKICAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KLQotCi0jaWZuZGVmIF9fR1NUX09QVVNfQ09NTU9OX0hfXwotI2RlZmluZSBfX0dTVF9PUFVTX0NPTU1PTl9IX18KKyNpZm5kZWYgX1ZLX1VUSUxTX1BSSVZBVEVfSF8KKyNkZWZpbmUgX1ZLX1VUSUxTX1BSSVZBVEVfSF8KIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KKyNpbmNsdWRlICJ2ay5oIgogCiBHX0JFR0lOX0RFQ0xTCiAKLWV4dGVybiBjb25zdCBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiBnc3Rfb3B1c19jaGFubmVsX3Bvc2l0aW9uc1tdWzhdOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmdzdF9vcHVzX2NoYW5uZWxfbmFtZXNbXTsKLWV4dGVybiB2b2lkIGdzdF9vcHVzX2NvbW1vbl9sb2dfY2hhbm5lbF9tYXBwaW5nX3RhYmxlIChHc3RFbGVtZW50ICplbGVtZW50LAotICAgIEdzdERlYnVnQ2F0ZWdvcnkgKiBjYXRlZ29yeSwgY29uc3QgY2hhciAqbXNnLAotICAgIGludCBuX2NoYW5uZWxzLCBjb25zdCBndWludDggKnRhYmxlKTsKK2dib29sZWFuIF9jaGVja19mb3JfYWxsX2xheWVycyAodWludDMyX3QgY2hlY2tfY291bnQsIGNvbnN0IGNoYXIgKiogY2hlY2tfbmFtZXMsCisgICAgdWludDMyX3QgbGF5ZXJfY291bnQsIFZrTGF5ZXJQcm9wZXJ0aWVzICogbGF5ZXJzKTsKIAogR19FTkRfREVDTFMKIAotI2VuZGlmIC8qIF9fR1NUX09QVVNfQ09NTU9OX0hfXyAqLworI2VuZGlmIC8qX1ZLX1VUSUxTX0hfICovCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3Zrd2luZG93LmMgYi9leHQvdnVsa2FuL3Zrd2luZG93LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FhM2M0NwotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmt3aW5kb3cuYwpAQCAtMCwwICsxLDMwOCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDEyIE1hdHRoZXcgV2F0ZXJzIDx5c3RyZWV0MDBAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKy8qKgorICogU0VDVElPTjpnc3RnbHdpbmRvdworICogQHNob3J0X2Rlc2NyaXB0aW9uOiB3aW5kb3cvc3VyZmFjZSBhYnN0cmFjdGlvbgorICogQHRpdGxlOiBHc3RWdWxrYW5XaW5kb3cKKyAqIEBzZWVfYWxzbzogI0dzdEdMQ29udGV4dCwgI0dzdEdMRGlzcGxheQorICoKKyAqIEdzdFZ1bGthbldpbmRvdyByZXByZXNlbnRzIGEgd2luZG93IHRoYXQgZWxlbWVudHMgY2FuIHJlbmRlciBpbnRvLiAgQSB3aW5kb3cgY2FuCisgKiBlaXRoZXIgYmUgYSB1c2VyIHZpc2libGUgd2luZG93IChvbnNjcmVlbikgb3IgaGlkZGVuIChvZmZzY3JlZW4pLgorICovCisKKyNpZiBIQVZFX0NPTkZJR19ICisjIGluY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxnbW9kdWxlLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgInZrd2luZG93LmgiCisKKyNpZiBHU1RfVlVMS0FOX0hBVkVfV0lORE9XX1gxMQorI2luY2x1ZGUgIngxMS92a3dpbmRvd194MTEuaCIKKyNlbmRpZgorI2lmIEdTVF9WVUxLQU5fSEFWRV9XSU5ET1dfWENCCisjaW5jbHVkZSAieGNiL3Zrd2luZG93X3hjYi5oIgorI2VuZGlmCisKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF92dWxrYW5fd2luZG93X2RlYnVnCitHU1RfREVCVUdfQ0FURUdPUlkgKEdTVF9DQVRfREVGQVVMVCk7CisKKyNkZWZpbmUgZ3N0X3Z1bGthbl93aW5kb3dfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworR19ERUZJTkVfQUJTVFJBQ1RfVFlQRSAoR3N0VnVsa2FuV2luZG93LCBnc3RfdnVsa2FuX3dpbmRvdywgR1NUX1RZUEVfT0JKRUNUKTsKKworI2RlZmluZSBHU1RfVlVMS0FOX1dJTkRPV19HRVRfUFJJVkFURShvKSBcCisgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG8pLCBHU1RfVFlQRV9WVUxLQU5fV0lORE9XLCBHc3RWdWxrYW5XaW5kb3dQcml2YXRlKSkKKworc3RydWN0IF9Hc3RWdWxrYW5XaW5kb3dQcml2YXRlCit7CisgIGd1aW50IHN1cmZhY2Vfd2lkdGg7CisgIGd1aW50IHN1cmZhY2VfaGVpZ2h0OworfTsKKworc3RhdGljIHZvaWQgZ3N0X3Z1bGthbl93aW5kb3dfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOworCit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuRHVtbXlXaW5kb3cKK3sKKyAgR3N0VnVsa2FuV2luZG93IHBhcmVudDsKKworICBndWludHB0ciBoYW5kbGU7Cit9IEdzdFZ1bGthbkR1bW15V2luZG93OworCit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuRHVtbXlXaW5kb3dDYXNzCit7CisgIEdzdFZ1bGthbldpbmRvd0NsYXNzIHBhcmVudDsKK30gR3N0VnVsa2FuRHVtbXlXaW5kb3dDbGFzczsKKworR3N0VnVsa2FuRHVtbXlXaW5kb3cgKmdzdF92dWxrYW5fZHVtbXlfd2luZG93X25ldyAodm9pZCk7CisKK2VudW0KK3sKKyAgU0lHTkFMXzAsCisgIFNJR05BTF9DTE9TRSwKKyAgU0lHTkFMX0RSQVcsCisgIExBU1RfU0lHTkFMCit9OworCitzdGF0aWMgZ3VpbnQgZ3N0X3Z1bGthbl93aW5kb3dfc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAgfTsKKworc3RhdGljIGdib29sZWFuCitfYWNjdW1fbG9naWNhbF9hbmQgKEdTaWduYWxJbnZvY2F0aW9uSGludCAqIGloaW50LCBHVmFsdWUgKiByZXR1cm5fYWNjdSwKKyAgICBjb25zdCBHVmFsdWUgKiBoYW5kbGVyX3JldHVybiwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgZ2Jvb2xlYW4gdmFsID0gZ192YWx1ZV9nZXRfYm9vbGVhbiAoaGFuZGxlcl9yZXR1cm4pOworICBnYm9vbGVhbiB2YWwyID0gZ192YWx1ZV9nZXRfYm9vbGVhbiAocmV0dXJuX2FjY3UpOworCisgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHJldHVybl9hY2N1LCB2YWwgJiYgdmFsMik7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK0dRdWFyaworZ3N0X3Z1bGthbl93aW5kb3dfZXJyb3JfcXVhcmsgKHZvaWQpCit7CisgIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyAoImdzdC1nbC13aW5kb3ctZXJyb3ItcXVhcmsiKTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdnVsa2FuX3dpbmRvd19kZWZhdWx0X29wZW4gKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdywgR0Vycm9yICoqIGVycm9yKQoreworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fd2luZG93X2RlZmF1bHRfY2xvc2UgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdykKK3sKK30KKworc3RhdGljIHZvaWQKK19pbml0X2RlYnVnICh2b2lkKQoreworICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2luaXQgPSAwOworCisgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJl9pbml0KSkgeworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX0RFRkFVTFQsICJ2dWxrYW53aW5kb3ciLCAwLAorICAgICAgICAiVnVsa2FuIFdpbmRvdyIpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3dpbmRvd19pbml0IChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3cpCit7CisgIHdpbmRvdy0+cHJpdiA9CisgICAgICBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUgKHdpbmRvdywgR1NUX1RZUEVfVlVMS0FOX1dJTkRPVywKKyAgICAgIEdzdFZ1bGthbldpbmRvd1ByaXZhdGUpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl93aW5kb3dfY2xhc3NfaW5pdCAoR3N0VnVsa2FuV2luZG93Q2xhc3MgKiBrbGFzcykKK3sKKyAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlIChrbGFzcywgc2l6ZW9mIChHc3RWdWxrYW5XaW5kb3dQcml2YXRlKSk7CisKKyAga2xhc3MtPm9wZW4gPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Z1bGthbl93aW5kb3dfZGVmYXVsdF9vcGVuKTsKKyAga2xhc3MtPmNsb3NlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92dWxrYW5fd2luZG93X2RlZmF1bHRfY2xvc2UpOworCisgIGdzdF92dWxrYW5fd2luZG93X3NpZ25hbHNbU0lHTkFMX0NMT1NFXSA9CisgICAgICBnX3NpZ25hbF9uZXcgKCJjbG9zZSIsIEdfVFlQRV9GUk9NX0NMQVNTIChrbGFzcyksIEdfU0lHTkFMX1JVTl9MQVNULCAwLAorICAgICAgKEdTaWduYWxBY2N1bXVsYXRvcikgX2FjY3VtX2xvZ2ljYWxfYW5kLCBOVUxMLCBOVUxMLCBHX1RZUEVfQk9PTEVBTiwgMCk7CisKKyAgZ3N0X3Z1bGthbl93aW5kb3dfc2lnbmFsc1tTSUdOQUxfRFJBV10gPQorICAgICAgZ19zaWduYWxfbmV3ICgiZHJhdyIsIEdfVFlQRV9GUk9NX0NMQVNTIChrbGFzcyksIEdfU0lHTkFMX1JVTl9MQVNULCAwLAorICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgR19UWVBFX05PTkUsIDApOworCisgIEdfT0JKRUNUX0NMQVNTIChrbGFzcyktPmZpbmFsaXplID0gZ3N0X3Z1bGthbl93aW5kb3dfZmluYWxpemU7CisKKyAgX2luaXRfZGVidWcgKCk7Cit9CisKKy8qKgorICogZ3N0X3Z1bGthbl93aW5kb3dfbmV3OgorICogQGRpc3BsYXk6IGEgI0dzdEdMRGlzcGxheQorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXcgI0dzdFZ1bGthbldpbmRvdyB1c2luZyBAZGlzcGxheSdzIGNvbm5lY3Rpb24KKyAqCisgKiBTaW5jZTogMS4xMAorICovCitHc3RWdWxrYW5XaW5kb3cgKgorZ3N0X3Z1bGthbl93aW5kb3dfbmV3IChHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSkKK3sKKyAgR3N0VnVsa2FuV2luZG93ICp3aW5kb3cgPSBOVUxMOworICBjb25zdCBnY2hhciAqdXNlcl9jaG9pY2U7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRpc3BsYXkgIT0gTlVMTCwgTlVMTCk7CisKKyAgX2luaXRfZGVidWcgKCk7CisKKyAgdXNlcl9jaG9pY2UgPSBnX2dldGVudiAoIkdTVF9WVUxLQU5fV0lORE9XIik7CisgIEdTVF9JTkZPICgiY3JlYXRpbmcgYSB3aW5kb3csIHVzZXIgY2hvaWNlOiVzIiwgdXNlcl9jaG9pY2UpOworI2lmIEdTVF9WVUxLQU5fSEFWRV9XSU5ET1dfWDExCisgIGlmICghd2luZG93ICYmICghdXNlcl9jaG9pY2UgfHwgZ19zdHJzdHJfbGVuICh1c2VyX2Nob2ljZSwgMywgIngxMSIpKSkKKyAgICB3aW5kb3cgPSBHU1RfVlVMS0FOX1dJTkRPVyAoZ3N0X3Z1bGthbl93aW5kb3dfeDExX25ldyAoZGlzcGxheSkpOworI2VuZGlmCisjaWYgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19YQ0IKKyAgaWYgKCF3aW5kb3cgJiYgKCF1c2VyX2Nob2ljZSB8fCBnX3N0cnN0cl9sZW4gKHVzZXJfY2hvaWNlLCAzLCAieGNiIikpKQorICAgIHdpbmRvdyA9IEdTVF9WVUxLQU5fV0lORE9XIChnc3RfdnVsa2FuX3dpbmRvd194Y2JfbmV3IChkaXNwbGF5KSk7CisjZW5kaWYKKyAgaWYgKCF3aW5kb3cpIHsKKyAgICAvKiBzdWJjbGFzcyByZXR1cm5lZCBhIE5VTEwgd2luZG93ICovCisgICAgR1NUX1dBUk5JTkcgKCJDb3VsZCBub3QgY3JlYXRlIHdpbmRvdy4gdXNlciBzcGVjaWZpZWQgJXMsIGNyZWF0aW5nIGR1bW15IgorICAgICAgICAiIHdpbmRvdyIsIHVzZXJfY2hvaWNlID8gdXNlcl9jaG9pY2UgOiAiKG51bGwpIik7CisKKyAgICB3aW5kb3cgPSBHU1RfVlVMS0FOX1dJTkRPVyAoZ3N0X3Z1bGthbl9kdW1teV93aW5kb3dfbmV3ICgpKTsKKyAgfQorCisgIHdpbmRvdy0+ZGlzcGxheSA9IGdzdF9vYmplY3RfcmVmIChkaXNwbGF5KTsKKworICByZXR1cm4gd2luZG93OworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl93aW5kb3dfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdFZ1bGthbldpbmRvdyAqd2luZG93ID0gR1NUX1ZVTEtBTl9XSU5ET1cgKG9iamVjdCk7CisKKyAgZ3N0X29iamVjdF91bnJlZiAod2luZG93LT5kaXNwbGF5KTsKKworICBHX09CSkVDVF9DTEFTUyAoZ3N0X3Z1bGthbl93aW5kb3dfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK0dzdFZ1bGthbkRpc3BsYXkgKgorZ3N0X3Z1bGthbl93aW5kb3dfZ2V0X2Rpc3BsYXkgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fV0lORE9XICh3aW5kb3cpLCBOVUxMKTsKKworICByZXR1cm4gZ3N0X29iamVjdF9yZWYgKHdpbmRvdy0+ZGlzcGxheSk7Cit9CisKK1ZrU3VyZmFjZUtIUgorZ3N0X3Z1bGthbl93aW5kb3dfZ2V0X3N1cmZhY2UgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdywgR0Vycm9yICoqIGVycm9yKQoreworICBHc3RWdWxrYW5XaW5kb3dDbGFzcyAqa2xhc3M7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fV0lORE9XICh3aW5kb3cpLCBOVUxMKTsKKyAga2xhc3MgPSBHU1RfVlVMS0FOX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChrbGFzcy0+Z2V0X3N1cmZhY2UgIT0gTlVMTCwgTlVMTCk7CisKKyAgcmV0dXJuIGtsYXNzLT5nZXRfc3VyZmFjZSAod2luZG93LCBlcnJvcik7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX3dpbmRvd19nZXRfcHJlc2VudGF0aW9uX3N1cHBvcnQgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdywKKyAgICBHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIGd1aW50MzIgcXVldWVfZmFtaWx5X2lkeCkKK3sKKyAgR3N0VnVsa2FuV2luZG93Q2xhc3MgKmtsYXNzOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfVlVMS0FOX1dJTkRPVyAod2luZG93KSwgRkFMU0UpOworICBrbGFzcyA9IEdTVF9WVUxLQU5fV0lORE9XX0dFVF9DTEFTUyAod2luZG93KTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGtsYXNzLT5nZXRfcHJlc2VudGF0aW9uX3N1cHBvcnQgIT0gTlVMTCwgRkFMU0UpOworCisgIHJldHVybiBrbGFzcy0+Z2V0X3ByZXNlbnRhdGlvbl9zdXBwb3J0ICh3aW5kb3csIGRldmljZSwgcXVldWVfZmFtaWx5X2lkeCk7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX3dpbmRvd19vcGVuIChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3csIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgR3N0VnVsa2FuV2luZG93Q2xhc3MgKmtsYXNzOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfVlVMS0FOX1dJTkRPVyAod2luZG93KSwgRkFMU0UpOworICBrbGFzcyA9IEdTVF9WVUxLQU5fV0lORE9XX0dFVF9DTEFTUyAod2luZG93KTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGtsYXNzLT5vcGVuICE9IE5VTEwsIEZBTFNFKTsKKworICByZXR1cm4ga2xhc3MtPm9wZW4gKHdpbmRvdywgZXJyb3IpOworfQorCit2b2lkCitnc3RfdnVsa2FuX3dpbmRvd19jbG9zZSAoR3N0VnVsa2FuV2luZG93ICogd2luZG93KQoreworICBHc3RWdWxrYW5XaW5kb3dDbGFzcyAqa2xhc3M7CisgIGdib29sZWFuIHRvX2Nsb3NlOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fV0lORE9XICh3aW5kb3cpKTsKKyAga2xhc3MgPSBHU1RfVlVMS0FOX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKGtsYXNzLT5jbG9zZSAhPSBOVUxMKTsKKworICBnX3NpZ25hbF9lbWl0ICh3aW5kb3csIGdzdF92dWxrYW5fd2luZG93X3NpZ25hbHNbU0lHTkFMX0NMT1NFXSwgMCwgJnRvX2Nsb3NlKTsKKworICBpZiAodG9fY2xvc2UpCisgICAga2xhc3MtPmNsb3NlICh3aW5kb3cpOworfQorCit2b2lkCitnc3RfdnVsa2FuX3dpbmRvd19yZXNpemUgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdywgZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fV0lORE9XICh3aW5kb3cpKTsKKworICB3aW5kb3ctPnByaXYtPnN1cmZhY2Vfd2lkdGggPSB3aWR0aDsKKyAgd2luZG93LT5wcml2LT5zdXJmYWNlX2hlaWdodCA9IGhlaWdodDsKKworICAvKiBYWFg6IHBvc3NpYmx5IHF1ZXVlIGEgcmVzaXplL3JlZHJhdyAqLworfQorCit2b2lkCitnc3RfdnVsa2FuX3dpbmRvd19yZWRyYXcgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdykKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1ZVTEtBTl9XSU5ET1cgKHdpbmRvdykpOworCisgIGdfc2lnbmFsX2VtaXQgKHdpbmRvdywgZ3N0X3Z1bGthbl93aW5kb3dfc2lnbmFsc1tTSUdOQUxfRFJBV10sIDApOworfQorCitHVHlwZSBnc3RfdnVsa2FuX2R1bW15X3dpbmRvd19nZXRfdHlwZSAodm9pZCk7CitHX0RFRklORV9UWVBFIChHc3RWdWxrYW5EdW1teVdpbmRvdywgZ3N0X3Z1bGthbl9kdW1teV93aW5kb3csCisgICAgR1NUX1RZUEVfVlVMS0FOX1dJTkRPVyk7CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2R1bW15X3dpbmRvd19jbGFzc19pbml0IChHc3RWdWxrYW5EdW1teVdpbmRvd0NsYXNzICoga2xhc3MpCit7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2R1bW15X3dpbmRvd19pbml0IChHc3RWdWxrYW5EdW1teVdpbmRvdyAqIGR1bW15KQoreworICBkdW1teS0+aGFuZGxlID0gMDsKK30KKworR3N0VnVsa2FuRHVtbXlXaW5kb3cgKgorZ3N0X3Z1bGthbl9kdW1teV93aW5kb3dfbmV3ICh2b2lkKQoreworICByZXR1cm4gZ19vYmplY3RfbmV3IChnc3RfdnVsa2FuX2R1bW15X3dpbmRvd19nZXRfdHlwZSAoKSwgTlVMTCk7Cit9CmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3Zrd2luZG93LmggYi9leHQvdnVsa2FuL3Zrd2luZG93LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThiZTgwYQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmt3aW5kb3cuaApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDA4IEp1bGllbiBJc29yY2UgPGp1bGllbi5pc29yY2VAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDEyIE1hdHRoZXcgV2F0ZXJzIDx5c3RyZWV0MDBAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfVlVMS0FOX1dJTkRPV19IX18KKyNkZWZpbmUgX19HU1RfVlVMS0FOX1dJTkRPV19IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworI2luY2x1ZGUgPHZrLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9WVUxLQU5fV0lORE9XICAgICAgICAgKGdzdF92dWxrYW5fd2luZG93X2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9WVUxLQU5fV0lORE9XKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfVFlQRV9WVUxLQU5fV0lORE9XLCBHc3RWdWxrYW5XaW5kb3cpKQorI2RlZmluZSBHU1RfVlVMS0FOX1dJTkRPV19DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrKSwgR1NUX1RZUEVfVlVMS0FOX1dJTkRPVywgR3N0VnVsa2FuV2luZG93Q2xhc3MpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX1dJTkRPVyhvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX1RZUEVfVlVMS0FOX1dJTkRPVykpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fV0lORE9XX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfVFlQRV9WVUxLQU5fV0lORE9XKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9XSU5ET1dfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX1RZUEVfVlVMS0FOX1dJTkRPVywgR3N0VnVsa2FuV2luZG93Q2xhc3MpKQorR1R5cGUgZ3N0X3Z1bGthbl93aW5kb3dfZ2V0X3R5cGUgICAgICh2b2lkKTsKKworI2RlZmluZSBHU1RfVlVMS0FOX1dJTkRPV19MT0NLKHcpIGdfbXV0ZXhfbG9jaygmR1NUX1ZVTEtBTl9XSU5ET1codyktPmxvY2spCisjZGVmaW5lIEdTVF9WVUxLQU5fV0lORE9XX1VOTE9DSyh3KSBnX211dGV4X3VubG9jaygmR1NUX1ZVTEtBTl9XSU5ET1codyktPmxvY2spCisjZGVmaW5lIEdTVF9WVUxLQU5fV0lORE9XX0dFVF9MT0NLKHcpICgmR1NUX1ZVTEtBTl9XSU5ET1codyktPmxvY2spCisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9XSU5ET1dfRVJST1IgKGdzdF92dWxrYW5fd2luZG93X2Vycm9yX3F1YXJrICgpKQorR1F1YXJrIGdzdF92dWxrYW5fd2luZG93X2Vycm9yX3F1YXJrICh2b2lkKTsKKwordHlwZWRlZiBlbnVtCit7CisgIEdTVF9WVUxLQU5fV0lORE9XX0VSUk9SX0ZBSUxFRCwKKyAgR1NUX1ZVTEtBTl9XSU5ET1dfRVJST1JfT0xEX0xJQlMsCisgIEdTVF9WVUxLQU5fV0lORE9XX0VSUk9SX1JFU09VUkNFX1VOQVZBSUxBQkxFLAorfSBHc3RWdWxrYW5XaW5kb3dFcnJvcjsKKworLyoqCisgKiBHc3RWdWxrYW5XaW5kb3c6CisgKgorICogI0dzdFZ1bGthbldpbmRvdyBpcyBhbiBvcGFxdWUgc3RydWN0IGFuZCBzaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZQorICogcHJvdmlkZWQgYXBpLgorICovCitzdHJ1Y3QgX0dzdFZ1bGthbldpbmRvdyB7CisgIC8qPCBwcml2YXRlID4qLworICBHc3RPYmplY3QgcGFyZW50OworCisgIEdzdFZ1bGthbkRpc3BsYXkgICAgICAgKmRpc3BsYXk7CisKKyAgR011dGV4ICAgICAgICAgICAgICAgICAgbG9jazsKKworICBHc3RWdWxrYW5XaW5kb3dQcml2YXRlICpwcml2OworCisgIGdwb2ludGVyICAgICAgICAgICAgICAgIF9yZXNlcnZlZFtHU1RfUEFERElOR107Cit9OworCisvKioKKyAqIEdzdFZ1bGthbldpbmRvd0NsYXNzOgorICogQHBhcmVudF9jbGFzczogUGFyZW50IGNsYXNzCisgKiBAb3Blbjogb3BlbiB0aGUgY29ubmVjdGlvbiB0byB0aGUgZGlzcGxheQorICogQGNsb3NlOiBjbG9zZSB0aGUgY29ubmVjdGlvbiB0byB0aGUgZGlzcGxheQorICovCitzdHJ1Y3QgX0dzdFZ1bGthbldpbmRvd0NsYXNzIHsKKyAgR3N0T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgIGdib29sZWFuICAgICAgKCpvcGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAoR3N0VnVsa2FuV2luZG93ICp3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqZXJyb3IpOworICB2b2lkICAgICAgICAgICgqY2xvc2UpICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFZ1bGthbldpbmRvdyAqd2luZG93KTsKKworICBWa1N1cmZhY2VLSFIgICgqZ2V0X3N1cmZhY2UpICAgICAgICAgICAgICAgICAgKEdzdFZ1bGthbldpbmRvdyAqd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKmVycm9yKTsKKyAgZ2Jvb2xlYW4gICAgICAoKmdldF9wcmVzZW50YXRpb25fc3VwcG9ydCkgICAgIChHc3RWdWxrYW5XaW5kb3cgKndpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5EZXZpY2UgKmRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyIHF1ZXVlX2ZhbWlseV9pZHgpOworCisgIC8qPCBwcml2YXRlID4qLworICBncG9pbnRlciBfcmVzZXJ2ZWRbR1NUX1BBRERJTkddOworfTsKKworR3N0VnVsa2FuV2luZG93ICogIGdzdF92dWxrYW5fd2luZG93X25ldyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3N0VnVsa2FuRGlzcGxheSAqZGlzcGxheSk7CisKK0dzdFZ1bGthbkRpc3BsYXkgKiBnc3RfdnVsa2FuX3dpbmRvd19nZXRfZGlzcGxheSAgICAgICAgICAgICAgICAgICAgKEdzdFZ1bGthbldpbmRvdyAqd2luZG93KTsKK1ZrU3VyZmFjZUtIUiAgICAgICBnc3RfdnVsa2FuX3dpbmRvd19nZXRfc3VyZmFjZSAgICAgICAgICAgICAgICAgICAgKEdzdFZ1bGthbldpbmRvdyAqd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqZXJyb3IpOworZ2Jvb2xlYW4gICAgICAgICAgIGdzdF92dWxrYW5fd2luZG93X2dldF9wcmVzZW50YXRpb25fc3VwcG9ydCAgICAgICAoR3N0VnVsa2FuV2luZG93ICp3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5EZXZpY2UgKmRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MzIgcXVldWVfZmFtaWx5X2lkeCk7CisKK2dib29sZWFuICAgICAgICAgICBnc3RfdnVsa2FuX3dpbmRvd19vcGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFZ1bGthbldpbmRvdyAqd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycm9yKTsKK3ZvaWQgICAgICAgICAgICAgICBnc3RfdnVsa2FuX3dpbmRvd19jbG9zZSAgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFZ1bGthbldpbmRvdyAqd2luZG93KTsKKwordm9pZCAgICAgICAgICAgICAgIGdzdF92dWxrYW5fd2luZG93X3Jlc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAoR3N0VnVsa2FuV2luZG93ICp3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBoZWlnaHQpOwordm9pZCAgICAgICAgICAgICAgIGdzdF92dWxrYW5fd2luZG93X3JlZHJhdyAgICAgICAgICAgICAgICAgICAgICAgICAoR3N0VnVsa2FuV2luZG93ICp3aW5kb3cpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfVlVMS0FOX1dJTkRPV19IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4veGNiL01ha2VmaWxlLmFtIGIvZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RlYmNmZgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4veGNiL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsMjkgQEAKKyMjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b21ha2UgdG8gcHJvZHVjZSBNYWtlZmlsZS5pbgorCitub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJnc3R2dWxrYW4teGNiLmxhCisKK2xpYmdzdHZ1bGthbl94Y2JfbGFfU09VUkNFUyA9IFwKKwl2a2Rpc3BsYXlfeGNiLmMgXAorCXZrd2luZG93X3hjYi5jIFwKKwl4Y2JfZXZlbnRfc291cmNlLmMKKworbm9pbnN0X0hFQURFUlMgPSBcCisJdmtkaXNwbGF5X3hjYi5oIFwKKwl2a3dpbmRvd194Y2IuaCBcCisJeGNiX2V2ZW50X3NvdXJjZS5oCisKK2xpYmdzdHZ1bGthbl94Y2JfbGFfQ0ZMQUdTID0gXAorCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCisJLUkkKHRvcF9zcmNkaXIpL2V4dC92dWxrYW4gXAorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9DRkxBR1MpIFwKKwkkKFhDQl9DRkxBR1MpCisKK2xpYmdzdHZ1bGthbl94Y2JfbGFfTElCQUREID0gXAorCSQoWENCX0xJQlMpCisKK2xpYmdzdHZ1bGthbl94Y2JfbGFfTERGTEFHUyA9IFwKKwkkKEdTVF9MSUJfTERGTEFHUykgXAorCSQoR1NUX0FMTF9MREZMQUdTKQpkaWZmIC0tZ2l0IGEvZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbiBiL2V4dC92dWxrYW4veGNiL01ha2VmaWxlLmluCnNpbWlsYXJpdHkgaW5kZXggODAlCmNvcHkgZnJvbSBnc3QvbGl2ZWFkZGVyL01ha2VmaWxlLmluCmNvcHkgdG8gZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUuaW4KaW5kZXggYmE5ZTVhMi4uMmU5NzI5ZiAxMDA2NDQKLS0tIGEvZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbgorKysgYi9leHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5pbgpAQCAtOTAsNyArOTAsNyBAQAogYnVpbGRfdHJpcGxldCA9IEBidWlsZEAKIGhvc3RfdHJpcGxldCA9IEBob3N0QAogdGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0QAotc3ViZGlyID0gZ3N0L2xpdmVhZGRlcgorc3ViZGlyID0gZXh0L3Z1bGthbi94Y2IKIEFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKIGFtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hYy1leHBhbmQubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWF1dG8tYWx0Lm00IFwKQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTM0LDQ4ICsxMzMsMjEgQEAKIENPTkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmgKIENPTkZJR19DTEVBTl9GSUxFUyA9CiBDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPQotYW1fX3ZwYXRoX2Fkal9zZXR1cCA9IHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzfC58LnxnJ2A7Ci1hbV9fdnBhdGhfYWRqID0gY2FzZSAkJHAgaW4gXAotICAgICQoc3JjZGlyKS8qKSBmPWBlY2hvICIkJHAiIHwgc2VkICJzfF4kJHNyY2RpcnN0cmlwL3x8ImA7OyBcCi0gICAgKikgZj0kJHA7OyBcCi0gIGVzYWM7Ci1hbV9fc3RyaXBfZGlyID0gZj1gZWNobyAkJHAgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7Ci1hbV9faW5zdGFsbF9tYXggPSA0MAotYW1fX25vYmFzZV9zdHJpcF9zZXR1cCA9IFwKLSAgc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKnxdL1xcXFwmL2cnYAotYW1fX25vYmFzZV9zdHJpcCA9IFwKLSAgZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICIkJHAiOyBkb25lIHwgc2VkIC1lICJzfCQkc3JjZGlyc3RyaXAvfHwiCi1hbV9fbm9iYXNlX2xpc3QgPSAkKGFtX19ub2Jhc2Vfc3RyaXBfc2V0dXApOyBcCi0gIGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAiJCRwICQkcCI7IGRvbmUgfCBcCi0gIHNlZCAic3wgJCRzcmNkaXJzdHJpcC98IHw7IicgLyAuKlwvLyFzLyAuKi8gLi87IHMsXCggLipcKS9bXi9dKiQkLFwxLCcgfCBcCi0gICQoQVdLKSAnQkVHSU4geyBmaWxlc1siLiJdID0gIiIgfSB7IGZpbGVzWyQkMl0gPSBmaWxlc1skJDJdICIgIiAkJDE7IFwKLSAgICBpZiAoKytuWyQkMl0gPT0gJChhbV9faW5zdGFsbF9tYXgpKSBcCi0gICAgICB7IHByaW50ICQkMiwgZmlsZXNbJCQyXTsgblskJDJdID0gMDsgZmlsZXNbJCQyXSA9ICIiIH0gfSBcCi0gICAgRU5EIHsgZm9yIChkaXIgaW4gZmlsZXMpIHByaW50IGRpciwgZmlsZXNbZGlyXSB9JwotYW1fX2Jhc2VfbGlzdCA9IFwKLSAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJyB8IFwKLSAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJwotYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpciA9IHsgXAotICB0ZXN0IC16ICIkJGZpbGVzIiBcCi0gICAgfHwgeyB0ZXN0ICEgLWQgIiQkZGlyIiAmJiB0ZXN0ICEgLWYgIiQkZGlyIiAmJiB0ZXN0ICEgLXIgIiQkZGlyIjsgfSBcCi0gICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAotICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAotICB9Ci1hbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIKLUxUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCitMVExJQlJBUklFUyA9ICQobm9pbnN0X0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KLWxpYmdzdGxpdmVhZGRlcl9sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKLWFtX2xpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTID0gbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbwotbGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTKQorbGliZ3N0dnVsa2FuX3hjYl9sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKK2FtX2xpYmdzdHZ1bGthbl94Y2JfbGFfT0JKRUNUUyA9IGxpYmdzdHZ1bGthbl94Y2JfbGEtdmtkaXNwbGF5X3hjYi5sbyBcCisJbGliZ3N0dnVsa2FuX3hjYl9sYS12a3dpbmRvd194Y2IubG8gXAorCWxpYmdzdHZ1bGthbl94Y2JfbGEteGNiX2V2ZW50X3NvdXJjZS5sbworbGliZ3N0dnVsa2FuX3hjYl9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3R2dWxrYW5feGNiX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CiBhbV9fdl9sdF8xID0gCi1saWJnc3RsaXZlYWRkZXJfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCi0JJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAotCSQoQ0NMRCkgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAotCSQobGliZ3N0bGl2ZWFkZGVyX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK2xpYmdzdHZ1bGthbl94Y2JfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCisJJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpIFwKKwkkKGxpYmdzdHZ1bGthbl94Y2JfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAorCSQobGliZ3N0dnVsa2FuX3hjYl9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACiBBTV9WX1AgPSAkKGFtX192X1BfQEFNX1ZAKQogYW1fX3ZfUF8gPSAkKGFtX192X1BfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9QXzAgPSBmYWxzZQpAQCAtMjEwLDggKzE4Miw4IEBACiBhbV9fdl9DQ0xEXyA9ICQoYW1fX3ZfQ0NMRF9AQU1fREVGQVVMVF9WQCkKIGFtX192X0NDTERfMCA9IEBlY2hvICIgIENDTEQgICAgIiAkQDsKIGFtX192X0NDTERfMSA9IAotU09VUkNFUyA9ICQobGliZ3N0bGl2ZWFkZGVyX2xhX1NPVVJDRVMpCi1ESVNUX1NPVVJDRVMgPSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTKQorU09VUkNFUyA9ICQobGliZ3N0dnVsa2FuX3hjYl9sYV9TT1VSQ0VTKQorRElTVF9TT1VSQ0VTID0gJChsaWJnc3R2dWxrYW5feGNiX2xhX1NPVVJDRVMpCiBhbV9fY2FuX3J1bl9pbnN0YWxsaW5mbyA9IFwKICAgY2FzZSAkJEFNX1VQREFURV9JTkZPX0RJUiBpbiBcCiAgICAgbnxub3xOTykgZmFsc2U7OyBcCkBAIC0yNzQsNiArMjQ2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMjg1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMjk1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzMxMyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzMzMiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzY4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzM5NSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs0OTgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUxMiw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1MjcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs1ODYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjQ5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2NjAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjcwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MDksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc2MSwxNiArNzQ4LDMzIEBACiB0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAogdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAogd2F5bGFuZF9zY2FubmVyID0gQHdheWxhbmRfc2Nhbm5lckAKLXBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdGxpdmVhZGRlci5sYQotbGliZ3N0bGl2ZWFkZGVyX2xhX1NPVVJDRVMgPSBsaXZlYWRkZXIuYwotbGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKQotbGliZ3N0bGl2ZWFkZGVyX2xhX0xJQkFERCA9IFwKLQkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKQorbm9pbnN0X0xUTElCUkFSSUVTID0gbGliZ3N0dnVsa2FuLXhjYi5sYQorbGliZ3N0dnVsa2FuX3hjYl9sYV9TT1VSQ0VTID0gXAorCXZrZGlzcGxheV94Y2IuYyBcCisJdmt3aW5kb3dfeGNiLmMgXAorCXhjYl9ldmVudF9zb3VyY2UuYwogCi1saWJnc3RsaXZlYWRkZXJfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQotbGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCi1ub2luc3RfSEVBREVSUyA9IGxpdmVhZGRlci5oCitub2luc3RfSEVBREVSUyA9IFwKKwl2a2Rpc3BsYXlfeGNiLmggXAorCXZrd2luZG93X3hjYi5oIFwKKwl4Y2JfZXZlbnRfc291cmNlLmgKKworbGliZ3N0dnVsa2FuX3hjYl9sYV9DRkxBR1MgPSBcCisJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKwktSSQodG9wX3NyY2RpcikvZXh0L3Z1bGthbiBcCisJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9CQVNFX0NGTEFHUykgXAorCSQoR1NUX0NGTEFHUykgXAorCSQoWENCX0NGTEFHUykKKworbGliZ3N0dnVsa2FuX3hjYl9sYV9MSUJBREQgPSBcCisJJChYQ0JfTElCUykKKworbGliZ3N0dnVsa2FuX3hjYl9sYV9MREZMQUdTID0gXAorCSQoR1NUX0xJQl9MREZMQUdTKSBcCisJJChHU1RfQUxMX0xERkxBR1MpCisKIGFsbDogYWxsLWFtCiAKIC5TVUZGSVhFUzoKQEAgLTc4NCw5ICs3ODgsOSBAQAogCSAgICAgIGV4aXQgMTs7IFwKIAkgIGVzYWM7IFwKIAlkb25lOyBcCi0JZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L2xpdmVhZGRlci9NYWtlZmlsZSc7IFwKKwllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBleHQvdnVsa2FuL3hjYi9NYWtlZmlsZSc7IFwKIAkkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSAmJiBcCi0JICAkKEFVVE9NQUtFKSAtLWdudSBnc3QvbGl2ZWFkZGVyL01ha2VmaWxlCisJICAkKEFVVE9NQUtFKSAtLWdudSBleHQvdnVsa2FuL3hjYi9NYWtlZmlsZQogTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwogCUBjYXNlICckPycgaW4gXAogCSAgKmNvbmZpZy5zdGF0dXMqKSBcCkBAIC04MDUsMzMgKzgwOSw5IEBACiAJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCiAkKGFtX19hY2xvY2FsX200X2RlcHMpOgogCi1pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTOiAkKHBsdWdpbl9MVExJQlJBUklFUykKLQlAJChOT1JNQUxfSU5TVEFMTCkKLQlAbGlzdD0nJChwbHVnaW5fTFRMSUJSQVJJRVMpJzsgdGVzdCAtbiAiJChwbHVnaW5kaXIpIiB8fCBsaXN0PTsgXAotCWxpc3QyPTsgZm9yIHAgaW4gJCRsaXN0OyBkbyBcCi0JICBpZiB0ZXN0IC1mICQkcDsgdGhlbiBcCi0JICAgIGxpc3QyPSIkJGxpc3QyICQkcCI7IFwKLQkgIGVsc2UgOjsgZmk7IFwKLQlkb25lOyBcCi0JdGVzdCAteiAiJCRsaXN0MiIgfHwgeyBcCi0JICBlY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQocGx1Z2luZGlyKSciOyBcCi0JICAkKE1LRElSX1ApICIkKERFU1RESVIpJChwbHVnaW5kaXIpIiB8fCBleGl0IDE7IFwKLQkgIGVjaG8gIiAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAnJChERVNURElSKSQocGx1Z2luZGlyKSciOyBcCi0JICAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAiJChERVNURElSKSQocGx1Z2luZGlyKSI7IFwKLQl9Ci0KLXVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUzoKLQlAJChOT1JNQUxfVU5JTlNUQUxMKQotCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyB0ZXN0IC1uICIkKHBsdWdpbmRpcikiIHx8IGxpc3Q9OyBcCi0JZm9yIHAgaW4gJCRsaXN0OyBkbyBcCi0JICAkKGFtX19zdHJpcF9kaXIpIFwKLQkgIGVjaG8gIiAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPXVuaW5zdGFsbCBybSAtZiAnJChERVNURElSKSQocGx1Z2luZGlyKS8kJGYnIjsgXAotCSAgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgIiQoREVTVERJUikkKHBsdWdpbmRpcikvJCRmIjsgXAotCWRvbmUKLQotY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVM6Ci0JLXRlc3QgLXogIiQocGx1Z2luX0xUTElCUkFSSUVTKSIgfHwgcm0gLWYgJChwbHVnaW5fTFRMSUJSQVJJRVMpCi0JQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IFwKK2NsZWFuLW5vaW5zdExUTElCUkFSSUVTOgorCS10ZXN0IC16ICIkKG5vaW5zdF9MVExJQlJBUklFUykiIHx8IHJtIC1mICQobm9pbnN0X0xUTElCUkFSSUVTKQorCUBsaXN0PSckKG5vaW5zdF9MVExJQlJBUklFUyknOyBcCiAJbG9jcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IFwKIAkgICAgICBzZWQgJ3N8XlteL10qJCR8Lnw7IHN8L1teL10qJCR8fDsgc3wkJHwvc29fbG9jYXRpb25zfCcgfCBcCiAJICAgICAgc29ydCAtdWA7IFwKQEAgLTg0MCw4ICs4MjAsOCBAQAogCSAgcm0gLWYgJCR7bG9jc307IFwKIAl9CiAKLWxpYmdzdGxpdmVhZGRlci5sYTogJChsaWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdGxpdmVhZGRlcl9sYV9ERVBFTkRFTkNJRVMpIAotCSQoQU1fVl9DQ0xEKSQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCQUREKSAkKExJQlMpCitsaWJnc3R2dWxrYW4teGNiLmxhOiAkKGxpYmdzdHZ1bGthbl94Y2JfbGFfT0JKRUNUUykgJChsaWJnc3R2dWxrYW5feGNiX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3R2dWxrYW5feGNiX2xhX0RFUEVOREVOQ0lFUykgCisJJChBTV9WX0NDTEQpJChsaWJnc3R2dWxrYW5feGNiX2xhX0xJTkspICAkKGxpYmdzdHZ1bGthbl94Y2JfbGFfT0JKRUNUUykgJChsaWJnc3R2dWxrYW5feGNiX2xhX0xJQkFERCkgJChMSUJTKQogCiBtb3N0bHljbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLiQoT0JKRVhUKQpAQCAtODQ5LDcgKzgyOSw5IEBACiBkaXN0Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi50YWIuYwogCi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl94Y2JfbGEtdmtkaXNwbGF5X3hjYi5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl94Y2JfbGEtdmt3aW5kb3dfeGNiLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dnVsa2FuX3hjYl9sYS14Y2JfZXZlbnRfc291cmNlLlBsb0BhbV9fcXVvdGVACiAKIC5jLm86CiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCkBAIC04NzUsMTIgKzg1NywyNiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAogCi1saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvOiBsaXZlYWRkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuVHBvIC1jIC1vIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gYHRlc3QgLWYgJ2xpdmVhZGRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaXZlYWRkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5UcG8gJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbGl2ZWFkZGVyLmMnIG9iamVjdD0nbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0dnVsa2FuX3hjYl9sYS12a2Rpc3BsYXlfeGNiLmxvOiB2a2Rpc3BsYXlfeGNiLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5feGNiX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2dWxrYW5feGNiX2xhLXZrZGlzcGxheV94Y2IubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHZ1bGthbl94Y2JfbGEtdmtkaXNwbGF5X3hjYi5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX3hjYl9sYS12a2Rpc3BsYXlfeGNiLmxvIGB0ZXN0IC1mICd2a2Rpc3BsYXlfeGNiLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrZGlzcGxheV94Y2IuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dnVsa2FuX3hjYl9sYS12a2Rpc3BsYXlfeGNiLlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX3hjYl9sYS12a2Rpc3BsYXlfeGNiLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3ZrZGlzcGxheV94Y2IuYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5feGNiX2xhLXZrZGlzcGxheV94Y2IubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gYHRlc3QgLWYgJ2xpdmVhZGRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaXZlYWRkZXIuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl94Y2JfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dnVsa2FuX3hjYl9sYS12a2Rpc3BsYXlfeGNiLmxvIGB0ZXN0IC1mICd2a2Rpc3BsYXlfeGNiLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrZGlzcGxheV94Y2IuYworCitsaWJnc3R2dWxrYW5feGNiX2xhLXZrd2luZG93X3hjYi5sbzogdmt3aW5kb3dfeGNiLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5feGNiX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2dWxrYW5feGNiX2xhLXZrd2luZG93X3hjYi5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0dnVsa2FuX3hjYl9sYS12a3dpbmRvd194Y2IuVHBvIC1jIC1vIGxpYmdzdHZ1bGthbl94Y2JfbGEtdmt3aW5kb3dfeGNiLmxvIGB0ZXN0IC1mICd2a3dpbmRvd194Y2IuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmt3aW5kb3dfeGNiLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl94Y2JfbGEtdmt3aW5kb3dfeGNiLlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX3hjYl9sYS12a3dpbmRvd194Y2IuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndmt3aW5kb3dfeGNiLmMnIG9iamVjdD0nbGliZ3N0dnVsa2FuX3hjYl9sYS12a3dpbmRvd194Y2IubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5feGNiX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZ1bGthbl94Y2JfbGEtdmt3aW5kb3dfeGNiLmxvIGB0ZXN0IC1mICd2a3dpbmRvd194Y2IuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmt3aW5kb3dfeGNiLmMKKworbGliZ3N0dnVsa2FuX3hjYl9sYS14Y2JfZXZlbnRfc291cmNlLmxvOiB4Y2JfZXZlbnRfc291cmNlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5feGNiX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2dWxrYW5feGNiX2xhLXhjYl9ldmVudF9zb3VyY2UubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHZ1bGthbl94Y2JfbGEteGNiX2V2ZW50X3NvdXJjZS5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX3hjYl9sYS14Y2JfZXZlbnRfc291cmNlLmxvIGB0ZXN0IC1mICd4Y2JfZXZlbnRfc291cmNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHhjYl9ldmVudF9zb3VyY2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dnVsa2FuX3hjYl9sYS14Y2JfZXZlbnRfc291cmNlLlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX3hjYl9sYS14Y2JfZXZlbnRfc291cmNlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3hjYl9ldmVudF9zb3VyY2UuYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5feGNiX2xhLXhjYl9ldmVudF9zb3VyY2UubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5feGNiX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZ1bGthbl94Y2JfbGEteGNiX2V2ZW50X3NvdXJjZS5sbyBgdGVzdCAtZiAneGNiX2V2ZW50X3NvdXJjZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B4Y2JfZXZlbnRfc291cmNlLmMKIAogbW9zdGx5Y2xlYW4tbGlidG9vbDoKIAktcm0gLWYgKi5sbwpAQCAtOTc0LDkgKzk3MCw2IEBACiBjaGVjazogY2hlY2stYW0KIGFsbC1hbTogTWFrZWZpbGUgJChMVExJQlJBUklFUykgJChIRUFERVJTKQogaW5zdGFsbGRpcnM6Ci0JZm9yIGRpciBpbiAiJChERVNURElSKSQocGx1Z2luZGlyKSI7IGRvIFwKLQkgIHRlc3QgLXogIiQkZGlyIiB8fCAkKE1LRElSX1ApICIkJGRpciI7IFwKLQlkb25lCiBpbnN0YWxsOiBpbnN0YWxsLWFtCiBpbnN0YWxsLWV4ZWM6IGluc3RhbGwtZXhlYy1hbQogaW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtYW0KQEAgLTEwMDksNyArMTAwMiw3IEBACiAJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgogY2xlYW46IGNsZWFuLWFtCiAKLWNsZWFuLWFtOiBjbGVhbi1nZW5lcmljIGNsZWFuLWxpYnRvb2wgY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVMgXAorY2xlYW4tYW06IGNsZWFuLWdlbmVyaWMgY2xlYW4tbGlidG9vbCBjbGVhbi1ub2luc3RMVExJQlJBUklFUyBcCiAJbW9zdGx5Y2xlYW4tYW0KIAogZGlzdGNsZWFuOiBkaXN0Y2xlYW4tYW0KQEAgLTEwMzAsNyArMTAyMyw3IEBACiAKIGluZm8tYW06CiAKLWluc3RhbGwtZGF0YS1hbTogaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUworaW5zdGFsbC1kYXRhLWFtOgogCiBpbnN0YWxsLWR2aTogaW5zdGFsbC1kdmktYW0KIApAQCAtMTA3NiwyNCArMTA2OSwyMyBAQAogCiBwcy1hbToKIAotdW5pbnN0YWxsLWFtOiB1bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKK3VuaW5zdGFsbC1hbToKIAogLk1BS0U6IGluc3RhbGwtYW0gaW5zdGFsbC1zdHJpcAogCiAuUEhPTlk6IENUQUdTIEdUQUdTIFRBR1MgYWxsIGFsbC1hbSBjaGVjayBjaGVjay1hbSBjbGVhbiBjbGVhbi1nZW5lcmljIFwKLQljbGVhbi1saWJ0b29sIGNsZWFuLXBsdWdpbkxUTElCUkFSSUVTIGNzY29wZWxpc3QtYW0gY3RhZ3MgXAorCWNsZWFuLWxpYnRvb2wgY2xlYW4tbm9pbnN0TFRMSUJSQVJJRVMgY3Njb3BlbGlzdC1hbSBjdGFncyBcCiAJY3RhZ3MtYW0gZGlzdGNsZWFuIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKIAlkaXN0Y2xlYW4tbGlidG9vbCBkaXN0Y2xlYW4tdGFncyBkaXN0ZGlyIGR2aSBkdmktYW0gaHRtbCBcCiAJaHRtbC1hbSBpbmZvIGluZm8tYW0gaW5zdGFsbCBpbnN0YWxsLWFtIGluc3RhbGwtZGF0YSBcCiAJaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIGluc3RhbGwtZHZpLWFtIGluc3RhbGwtZXhlYyBcCiAJaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBpbnN0YWxsLWh0bWwtYW0gaW5zdGFsbC1pbmZvIFwKIAlpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1tYW4gaW5zdGFsbC1wZGYgaW5zdGFsbC1wZGYtYW0gXAotCWluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMgaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIFwKLQlpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgXAotCW1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIFwKLQltb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4tbGlidG9vbCBcCi0JcGRmIHBkZi1hbSBwcyBwcy1hbSB0YWdzIHRhZ3MtYW0gdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSBcCi0JdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCisJaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIGluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIFwKKwlpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgbWFpbnRhaW5lci1jbGVhbiBcCisJbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIG1vc3RseWNsZWFuLWNvbXBpbGUgXAorCW1vc3RseWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4tbGlidG9vbCBwZGYgcGRmLWFtIHBzIHBzLWFtIFwKKwl0YWdzIHRhZ3MtYW0gdW5pbnN0YWxsIHVuaW5zdGFsbC1hbQogCiAuUFJFQ0lPVVM6IE1ha2VmaWxlCiAKZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4veGNiL3ZrZGlzcGxheV94Y2IuYyBiL2V4dC92dWxrYW4veGNiL3ZrZGlzcGxheV94Y2IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjNmNWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5jCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgInZrZGlzcGxheV94Y2IuaCIKKyNpbmNsdWRlICJ4Y2JfZXZlbnRfc291cmNlLmgiCisKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF92dWxrYW5fZGlzcGxheV9kZWJ1ZworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X3Z1bGthbl9kaXNwbGF5X2RlYnVnKTsKKworR19ERUZJTkVfVFlQRSAoR3N0VnVsa2FuRGlzcGxheVhDQiwgZ3N0X3Z1bGthbl9kaXNwbGF5X3hjYiwKKyAgICBHU1RfVFlQRV9WVUxLQU5fRElTUExBWSk7CisKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5fZGlzcGxheV94Y2JfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOworc3RhdGljIGdwb2ludGVyIGdzdF92dWxrYW5fZGlzcGxheV94Y2JfZ2V0X2hhbmRsZSAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpOworCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9kaXNwbGF5X3hjYl9jbGFzc19pbml0IChHc3RWdWxrYW5EaXNwbGF5WENCQ2xhc3MgKiBrbGFzcykKK3sKKyAgR1NUX1ZVTEtBTl9ESVNQTEFZX0NMQVNTIChrbGFzcyktPmdldF9oYW5kbGUgPQorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92dWxrYW5fZGlzcGxheV94Y2JfZ2V0X2hhbmRsZSk7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKS0+ZmluYWxpemUgPSBnc3RfdnVsa2FuX2Rpc3BsYXlfeGNiX2ZpbmFsaXplOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9kaXNwbGF5X3hjYl9pbml0IChHc3RWdWxrYW5EaXNwbGF5WENCICogZGlzcGxheV94Y2IpCit7CisgIEdzdFZ1bGthbkRpc3BsYXkgKmRpc3BsYXkgPSAoR3N0VnVsa2FuRGlzcGxheSAqKSBkaXNwbGF5X3hjYjsKKworICBkaXNwbGF5LT50eXBlID0gR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfWENCOworICBkaXNwbGF5X3hjYi0+Zm9yZWlnbl9kaXNwbGF5ID0gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2Rpc3BsYXlfeGNiX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RWdWxrYW5EaXNwbGF5WENCICpkaXNwbGF5X3hjYiA9IEdTVF9WVUxLQU5fRElTUExBWV9YQ0IgKG9iamVjdCk7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKGdzdF92dWxrYW5fZGlzcGxheV94Y2JfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7CisKKyAgaWYgKCFkaXNwbGF5X3hjYi0+Zm9yZWlnbl9kaXNwbGF5ICYmIGRpc3BsYXlfeGNiLT5jb25uZWN0aW9uKQorICAgIHhjYl9kaXNjb25uZWN0IChkaXNwbGF5X3hjYi0+Y29ubmVjdGlvbik7CisgIGRpc3BsYXlfeGNiLT5jb25uZWN0aW9uID0gTlVMTDsKK30KKworc3RhdGljIHhjYl9zY3JlZW5fdCAqCitfZ2V0X3NjcmVlbl9mcm9tX2Nvbm5lY3Rpb24gKHhjYl9jb25uZWN0aW9uX3QgKiBjb25uZWN0aW9uLCBpbnQgc2NyZWVuX25vKQoreworICBjb25zdCB4Y2Jfc2V0dXBfdCAqc2V0dXA7CisgIHhjYl9zY3JlZW5faXRlcmF0b3JfdCBpdGVyOworCisgIHNldHVwID0geGNiX2dldF9zZXR1cCAoY29ubmVjdGlvbik7CisgIGl0ZXIgPSB4Y2Jfc2V0dXBfcm9vdHNfaXRlcmF0b3IgKHNldHVwKTsKKyAgd2hpbGUgKHNjcmVlbl9uby0tID4gMCkKKyAgICB4Y2Jfc2NyZWVuX25leHQgKCZpdGVyKTsKKworICByZXR1cm4gaXRlci5kYXRhOworfQorCisvKioKKyAqIGdzdF92dWxrYW5fZGlzcGxheV94Y2JfbmV3OgorICogQG5hbWU6IChhbGxvdy1ub25lKTogYSBkaXNwbGF5IG5hbWUKKyAqCisgKiBDcmVhdGUgYSBuZXcgI0dzdFZ1bGthbkRpc3BsYXlYQ0IgZnJvbSB0aGUgeGNiIGRpc3BsYXkgbmFtZS4gIFNlZSBYT3BlbkRpc3BsYXkoKQorICogZm9yIGRldGFpbHMgb24gd2hhdCBpcyBhIHZhbGlkIG5hbWUuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyAjR3N0VnVsa2FuRGlzcGxheVhDQiBvciAlTlVMTAorICovCitHc3RWdWxrYW5EaXNwbGF5WENCICoKK2dzdF92dWxrYW5fZGlzcGxheV94Y2JfbmV3IChjb25zdCBnY2hhciAqIG5hbWUpCit7CisgIHhjYl9jb25uZWN0aW9uX3QgKmNvbm5lY3Rpb247CisgIEdzdFZ1bGthbkRpc3BsYXlYQ0IgKnJldDsKKyAgaW50IHNjcmVlbl9ubyA9IDA7CisKKyAgR1NUX0RFQlVHX0NBVEVHT1JZX0dFVCAoZ3N0X3Z1bGthbl9kaXNwbGF5X2RlYnVnLCAiZ2xkaXNwbGF5Iik7CisKKyAgY29ubmVjdGlvbiA9IHhjYl9jb25uZWN0IChOVUxMLCAmc2NyZWVuX25vKTsKKyAgaWYgKGNvbm5lY3Rpb24gPT0gTlVMTCB8fCB4Y2JfY29ubmVjdGlvbl9oYXNfZXJyb3IgKGNvbm5lY3Rpb24pKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIG9wZW4gWENCIGRpc3BsYXkgY29ubmVjdGlvbiB3aXRoIG5hbWUsIFwnJXNcJyIsIG5hbWUpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgcmV0ID0gZ3N0X3Z1bGthbl9kaXNwbGF5X3hjYl9uZXdfd2l0aF9jb25uZWN0aW9uIChjb25uZWN0aW9uLCBzY3JlZW5fbm8pOworICBHU1RfVlVMS0FOX0RJU1BMQVkgKHJldCktPmV2ZW50X3NvdXJjZSA9IHhjYl9ldmVudF9zb3VyY2VfbmV3IChyZXQpOworICBnX3NvdXJjZV9hdHRhY2ggKEdTVF9WVUxLQU5fRElTUExBWSAocmV0KS0+ZXZlbnRfc291cmNlLAorICAgICAgR1NUX1ZVTEtBTl9ESVNQTEFZIChyZXQpLT5tYWluX2NvbnRleHQpOworICByZXQtPmZvcmVpZ25fZGlzcGxheSA9IEZBTFNFOworCisgIHJldHVybiByZXQ7Cit9CisKKy8qKgorICogZ3N0X3Z1bGthbl9kaXNwbGF5X3hjYl9uZXdfd2l0aF9jb25uZWN0aW9uOgorICogQGRpc3BsYXk6IGFuIGV4aXN0aW5nLCB4Y2IgZGlzcGxheQorICoKKyAqIENyZWF0ZXMgYSBuZXcgZGlzcGxheSBjb25uZWN0aW9uIGZyb20gYSBYQ0IgRGlzcGxheS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3ICNHc3RWdWxrYW5EaXNwbGF5WENCCisgKi8KK0dzdFZ1bGthbkRpc3BsYXlYQ0IgKgorZ3N0X3Z1bGthbl9kaXNwbGF5X3hjYl9uZXdfd2l0aF9jb25uZWN0aW9uICh4Y2JfY29ubmVjdGlvbl90ICogY29ubmVjdGlvbiwKKyAgICBpbnQgc2NyZWVuX25vKQoreworICBHc3RWdWxrYW5EaXNwbGF5WENCICpyZXQ7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbm5lY3Rpb24gIT0gTlVMTCwgTlVMTCk7CisKKyAgR1NUX0RFQlVHX0NBVEVHT1JZX0dFVCAoZ3N0X3Z1bGthbl9kaXNwbGF5X2RlYnVnLCAiZ2xkaXNwbGF5Iik7CisKKyAgcmV0ID0gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9WVUxLQU5fRElTUExBWV9YQ0IsIE5VTEwpOworCisgIHJldC0+Y29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisgIHJldC0+c2NyZWVuID0gX2dldF9zY3JlZW5fZnJvbV9jb25uZWN0aW9uIChjb25uZWN0aW9uLCBzY3JlZW5fbm8pOworICByZXQtPnJvb3Rfd2luZG93ID0gcmV0LT5zY3JlZW4tPnJvb3Q7CisgIHJldC0+Zm9yZWlnbl9kaXNwbGF5ID0gVFJVRTsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ3BvaW50ZXIKK2dzdF92dWxrYW5fZGlzcGxheV94Y2JfZ2V0X2hhbmRsZSAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpCit7CisgIHJldHVybiAoZ3BvaW50ZXIpIEdTVF9WVUxLQU5fRElTUExBWV9YQ0JfQ09OTkVDVElPTiAoZGlzcGxheSk7Cit9CmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3hjYi92a2Rpc3BsYXlfeGNiLmggYi9leHQvdnVsa2FuL3hjYi92a2Rpc3BsYXlfeGNiLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MwZjFlYwotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4veGNiL3ZrZGlzcGxheV94Y2IuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTWF0dGhldyBXYXRlcnMgPHlzdHJlZXQwMEBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9WVUxLQU5fRElTUExBWV9YQ0JfSF9fCisjZGVmaW5lIF9fR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworI2luY2x1ZGUgPHhjYi94Y2IuaD4KKworI2luY2x1ZGUgPHZrLmg+CisjaWZuZGVmIFZLX1VTRV9QTEFURk9STV9YQ0JfS0hSCisjZXJyb3IgIlZLX1VTRV9QTEFURk9STV9YQ0JfS0hSIG5vdCBkZWZpbmVkIGJlZm9yZSBpbmNsdWRpbmcgdGhpcyBoZWFkZXIiCisjZXJyb3IgIkVpdGhlciBpbmNsdWRlIHZrYXBpLmggb3IgZGVmaW5lIFZLX1VTRV9QTEFURk9STV9YQ0JfS0hSIGJlZm9yZSBpbmNsdWRpbmcgdGhpcyBoZWFkZXIiCisjZW5kaWYKKyNpbmNsdWRlIDx2dWxrYW4vdnVsa2FuLmg+CisKK0dfQkVHSU5fREVDTFMKKworR1R5cGUgZ3N0X3Z1bGthbl9kaXNwbGF5X3hjYl9nZXRfdHlwZSAodm9pZCk7CisKKyNkZWZpbmUgR1NUX1RZUEVfVlVMS0FOX0RJU1BMQVlfWENCICAgICAgICAgICAgIChnc3RfdnVsa2FuX2Rpc3BsYXlfeGNiX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9WVUxLQU5fRElTUExBWV9YQ0Iob2JqKSAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfVlVMS0FOX0RJU1BMQVlfWENCLEdzdFZ1bGthbkRpc3BsYXlYQ0IpKQorI2RlZmluZSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCX0NMQVNTKGtsYXNzKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZX1hDQixHc3RWdWxrYW5EaXNwbGF5WENCQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX0RJU1BMQVlfWENCKG9iaikgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZX1hDQikpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fRElTUExBWV9YQ0JfQ0xBU1Moa2xhc3MpICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgR1NUX1RZUEVfVlVMS0FOX0RJU1BMQVlfWENCKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9DQVNUKG9iaikgICAgICAgICgoR3N0VnVsa2FuRGlzcGxheVhDQiopKG9iaikpCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5EaXNwbGF5WENCIEdzdFZ1bGthbkRpc3BsYXlYQ0I7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuRGlzcGxheVhDQkNsYXNzIEdzdFZ1bGthbkRpc3BsYXlYQ0JDbGFzczsKKworI2RlZmluZSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCX0NPTk5FQ1RJT04oZCkgKEdTVF9WVUxLQU5fRElTUExBWV9YQ0IoZCktPmNvbm5lY3Rpb24pCisjZGVmaW5lIEdTVF9WVUxLQU5fRElTUExBWV9YQ0JfUk9PVF9XSU5ET1coZCkgKEdTVF9WVUxLQU5fRElTUExBWV9YQ0IoZCktPnJvb3Rfd2luZG93KQorI2RlZmluZSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCX1NDUkVFTihkKSAoR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQihkKS0+c2NyZWVuKQorCisvKioKKyAqIEdzdFZ1bGthbkRpc3BsYXlYQ0I6CisgKgorICogdGhlIGNvbnRlbnRzIG9mIGEgI0dzdFZ1bGthbkRpc3BsYXlYQ0IgYXJlIHByaXZhdGUgYW5kIHNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkCisgKiB0aHJvdWdoIHRoZSBwcm92aWRlZCBBUEkKKyAqLworc3RydWN0IF9Hc3RWdWxrYW5EaXNwbGF5WENCCit7CisgIEdzdFZ1bGthbkRpc3BsYXkgICAgICAgICAgcGFyZW50OworCisgIHhjYl9jb25uZWN0aW9uX3QgKmNvbm5lY3Rpb247CisgIHhjYl93aW5kb3dfdCAgICAgIHJvb3Rfd2luZG93OworICB4Y2Jfc2NyZWVuX3QgICAgICpzY3JlZW47CisKKyAgLyogPHByaXZhdGU+ICovCisgIGdib29sZWFuIGZvcmVpZ25fZGlzcGxheTsKKworICBHU291cmNlICpldmVudF9zb3VyY2U7Cit9OworCitzdHJ1Y3QgX0dzdFZ1bGthbkRpc3BsYXlYQ0JDbGFzcworeworICBHc3RWdWxrYW5EaXNwbGF5Q2xhc3Mgb2JqZWN0X2NsYXNzOworfTsKKworR3N0VnVsa2FuRGlzcGxheVhDQiAqIGdzdF92dWxrYW5fZGlzcGxheV94Y2JfbmV3ICAgICAgICAgICAgICAgICAgICAoY29uc3QgZ2NoYXIgKiBuYW1lKTsKK0dzdFZ1bGthbkRpc3BsYXlYQ0IgKiBnc3RfdnVsa2FuX2Rpc3BsYXlfeGNiX25ld193aXRoX2Nvbm5lY3Rpb24gICAgKHhjYl9jb25uZWN0aW9uX3QgKiBjb25uZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlbl9ubyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9WVUxLQU5fRElTUExBWV9YQ0JfSF9fICovCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3hjYi92a3dpbmRvd194Y2IuYyBiL2V4dC92dWxrYW4veGNiL3Zrd2luZG93X3hjYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNjlhMWQKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3hjYi92a3dpbmRvd194Y2IuYwpAQCAtMCwwICsxLDI4NiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8bG9jYWxlLmg+CisKKyNpbmNsdWRlICJ2a3dpbmRvd194Y2IuaCIKKyNpbmNsdWRlICJ2a2Rpc3BsYXlfeGNiLmgiCisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9XSU5ET1dfWENCX0dFVF9QUklWQVRFKG8pICBcCisgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG8pLCBHU1RfVFlQRV9WVUxLQU5fV0lORE9XX1hDQiwgR3N0VnVsa2FuV2luZG93WENCUHJpdmF0ZSkpCisKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF92dWxrYW5fd2luZG93X3hjYl9kZWJ1ZworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9ERUZBVUxUKTsKKworc3RhdGljIHZvaWQKK19pbml0X2RlYnVnICh2b2lkKQoreworICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2luaXQgPSAwOworCisgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJl9pbml0KSkgeworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX0RFRkFVTFQsICJ2dWxrYW53aW5kb3d4Y2IiLCAwLAorICAgICAgICAiVnVsa2FuIFhDQiBXaW5kb3ciKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKyAgfQorfQorCisjZGVmaW5lIGdzdF92dWxrYW5fd2luZG93X3hjYl9wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0VnVsa2FuV2luZG93WENCLCBnc3RfdnVsa2FuX3dpbmRvd194Y2IsCisgICAgR1NUX1RZUEVfVlVMS0FOX1dJTkRPVywgX2luaXRfZGVidWcgKCkpOworCitnYm9vbGVhbiBnc3RfdnVsa2FuX3dpbmRvd194Y2JfaGFuZGxlX2V2ZW50IChHc3RWdWxrYW5XaW5kb3dYQ0IgKiB3aW5kb3dfeGNiKTsKKworZW51bQoreworICBQUk9QXzAsCit9OworCitzdHJ1Y3QgX0dzdFZ1bGthbldpbmRvd1hDQlByaXZhdGUKK3sKKyAgZ2Jvb2xlYW4gYWN0aXZhdGU7CisgIGdib29sZWFuIGFjdGl2YXRlX3Jlc3VsdDsKKworICBnaW50IHByZWZlcnJlZF93aWR0aDsKKyAgZ2ludCBwcmVmZXJyZWRfaGVpZ2h0OworCisgIHhjYl9pbnRlcm5fYXRvbV9yZXBseV90ICphdG9tX3dtX2RlbGV0ZV93aW5kb3c7Cit9OworCitzdGF0aWMgVmtTdXJmYWNlS0hSIGdzdF92dWxrYW5fd2luZG93X3hjYl9nZXRfc3VyZmFjZSAoR3N0VnVsa2FuV2luZG93ICogd2luZG93LAorICAgIEdFcnJvciAqKiBlcnJvcik7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Z1bGthbl93aW5kb3dfeGNiX2dldF9wcmVzZW50YXRpb25fc3VwcG9ydCAoR3N0VnVsa2FuV2luZG93CisgICAgKiB3aW5kb3csIEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgZ3VpbnQzMiBxdWV1ZV9mYW1pbHlfaWR4KTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdnVsa2FuX3dpbmRvd194Y2Jfb3BlbiAoR3N0VnVsa2FuV2luZG93ICogd2luZG93LAorICAgIEdFcnJvciAqKiBlcnJvcik7CitzdGF0aWMgdm9pZCBnc3RfdnVsa2FuX3dpbmRvd194Y2JfY2xvc2UgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdyk7CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3dpbmRvd194Y2JfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fd2luZG93X3hjYl9jbGFzc19pbml0IChHc3RWdWxrYW5XaW5kb3dYQ0JDbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKm9ial9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7CisgIEdzdFZ1bGthbldpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3MgPSAoR3N0VnVsa2FuV2luZG93Q2xhc3MgKikga2xhc3M7CisKKyAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlIChrbGFzcywgc2l6ZW9mIChHc3RWdWxrYW5XaW5kb3dYQ0JQcml2YXRlKSk7CisKKyAgb2JqX2NsYXNzLT5maW5hbGl6ZSA9IGdzdF92dWxrYW5fd2luZG93X3hjYl9maW5hbGl6ZTsKKworICB3aW5kb3dfY2xhc3MtPm9wZW4gPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Z1bGthbl93aW5kb3dfeGNiX29wZW4pOworICB3aW5kb3dfY2xhc3MtPmNsb3NlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92dWxrYW5fd2luZG93X3hjYl9jbG9zZSk7CisgIHdpbmRvd19jbGFzcy0+Z2V0X3N1cmZhY2UgPSBnc3RfdnVsa2FuX3dpbmRvd194Y2JfZ2V0X3N1cmZhY2U7CisgIHdpbmRvd19jbGFzcy0+Z2V0X3ByZXNlbnRhdGlvbl9zdXBwb3J0ID0KKyAgICAgIGdzdF92dWxrYW5fd2luZG93X3hjYl9nZXRfcHJlc2VudGF0aW9uX3N1cHBvcnQ7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3dpbmRvd194Y2JfaW5pdCAoR3N0VnVsa2FuV2luZG93WENCICogd2luZG93KQoreworICB3aW5kb3ctPnByaXYgPSBHU1RfVlVMS0FOX1dJTkRPV19YQ0JfR0VUX1BSSVZBVEUgKHdpbmRvdyk7Cit9CisKKy8qIE11c3QgYmUgY2FsbGVkIGluIHRoZSBnbCB0aHJlYWQgKi8KK0dzdFZ1bGthbldpbmRvd1hDQiAqCitnc3RfdnVsa2FuX3dpbmRvd194Y2JfbmV3IChHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSkKK3sKKyAgX2luaXRfZGVidWcgKCk7CisKKyAgaWYgKChnc3RfdnVsa2FuX2Rpc3BsYXlfZ2V0X2hhbmRsZV90eXBlIChkaXNwbGF5KSAmCisgICAgICAgICAgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfWENCKQorICAgICAgPT0gR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfTk9ORSkgeworICAgIEdTVF9JTkZPICgiV3JvbmcgZGlzcGxheSB0eXBlICV1IGZvciB0aGlzIHdpbmRvdyB0eXBlICV1IiwgZGlzcGxheS0+dHlwZSwKKyAgICAgICAgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfWENCKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHJldHVybiBnX29iamVjdF9uZXcgKEdTVF9UWVBFX1ZVTEtBTl9XSU5ET1dfWENCLCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fd2luZG93X3hjYl9zaG93IChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3cpCit7CisgIEdzdFZ1bGthbldpbmRvd1hDQiAqd2luZG93X3hjYiA9IEdTVF9WVUxLQU5fV0lORE9XX1hDQiAod2luZG93KTsKKyAgR3N0VnVsa2FuRGlzcGxheVhDQiAqZGlzcGxheV94Y2IgPSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCICh3aW5kb3ctPmRpc3BsYXkpOworICB4Y2JfY29ubmVjdGlvbl90ICpjb25uZWN0aW9uID0KKyAgICAgIEdTVF9WVUxLQU5fRElTUExBWV9YQ0JfQ09OTkVDVElPTiAoZGlzcGxheV94Y2IpOworCisgIGlmICghd2luZG93X3hjYi0+dmlzaWJsZSkgeworICAgIHhjYl9tYXBfd2luZG93IChjb25uZWN0aW9uLCB3aW5kb3dfeGNiLT53aW5faWQpOworICAgIHhjYl9mbHVzaCAoY29ubmVjdGlvbik7CisgICAgd2luZG93X3hjYi0+dmlzaWJsZSA9IFRSVUU7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fd2luZG93X3hjYl9oaWRlIChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3cpCit7CisgIEdzdFZ1bGthbldpbmRvd1hDQiAqd2luZG93X3hjYiA9IEdTVF9WVUxLQU5fV0lORE9XX1hDQiAod2luZG93KTsKKyAgR3N0VnVsa2FuRGlzcGxheVhDQiAqZGlzcGxheV94Y2IgPSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCICh3aW5kb3ctPmRpc3BsYXkpOworICB4Y2JfY29ubmVjdGlvbl90ICpjb25uZWN0aW9uID0KKyAgICAgIEdTVF9WVUxLQU5fRElTUExBWV9YQ0JfQ09OTkVDVElPTiAoZGlzcGxheV94Y2IpOworCisgIGlmICh3aW5kb3dfeGNiLT52aXNpYmxlKSB7CisgICAgeGNiX3VubWFwX3dpbmRvdyAoY29ubmVjdGlvbiwgd2luZG93X3hjYi0+d2luX2lkKTsKKyAgICB3aW5kb3dfeGNiLT52aXNpYmxlID0gRkFMU0U7CisgIH0KK30KKworZ2Jvb2xlYW4KK2dzdF92dWxrYW5fd2luZG93X3hjYl9jcmVhdGVfd2luZG93IChHc3RWdWxrYW5XaW5kb3dYQ0IgKiB3aW5kb3dfeGNiKQoreworICBHc3RWdWxrYW5EaXNwbGF5WENCICpkaXNwbGF5X3hjYjsKKyAgeGNiX2Nvbm5lY3Rpb25fdCAqY29ubmVjdGlvbjsKKyAgeGNiX3NjcmVlbl90ICpzY3JlZW47CisgIHhjYl93aW5kb3dfdCByb290X3dpbmRvdzsKKyAgdWludDMyX3QgdmFsdWVfbWFzaywgdmFsdWVfbGlzdFszMl07CisgIHhjYl9pbnRlcm5fYXRvbV9jb29raWVfdCBjb29raWUsIGNvb2tpZTI7CisgIHhjYl9pbnRlcm5fYXRvbV9yZXBseV90ICpyZXBseSwgKnJlcGx5MjsKKy8vICBjb25zdCBnY2hhciAqdGl0bGUgPSAiT3BlbkdMIHJlbmRlcmVyIjsKKyAgZ2ludCB4ID0gMCwgeSA9IDAsIHdpZHRoID0gMzIwLCBoZWlnaHQgPSAyNDA7CisKKyAgZGlzcGxheV94Y2IgPQorICAgICAgR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQiAoR1NUX1ZVTEtBTl9XSU5ET1cgKHdpbmRvd194Y2IpLT5kaXNwbGF5KTsKKyAgY29ubmVjdGlvbiA9IEdTVF9WVUxLQU5fRElTUExBWV9YQ0JfQ09OTkVDVElPTiAoZGlzcGxheV94Y2IpOworICByb290X3dpbmRvdyA9IEdTVF9WVUxLQU5fRElTUExBWV9YQ0JfUk9PVF9XSU5ET1cgKGRpc3BsYXlfeGNiKTsKKyAgc2NyZWVuID0gR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9TQ1JFRU4gKGRpc3BsYXlfeGNiKTsKKworICB3aW5kb3dfeGNiLT53aW5faWQgPSB4Y2JfZ2VuZXJhdGVfaWQgKGNvbm5lY3Rpb24pOworCisgIHZhbHVlX21hc2sgPSBYQ0JfQ1dfQkFDS19QSVhFTCB8IFhDQl9DV19FVkVOVF9NQVNLOworICB2YWx1ZV9saXN0WzBdID0gc2NyZWVuLT5ibGFja19waXhlbDsKKyAgdmFsdWVfbGlzdFsxXSA9CisgICAgICBYQ0JfRVZFTlRfTUFTS19LRVlfUkVMRUFTRSB8IFhDQl9FVkVOVF9NQVNLX0VYUE9TVVJFIHwKKyAgICAgIFhDQl9FVkVOVF9NQVNLX1NUUlVDVFVSRV9OT1RJRlk7CisKKyAgeGNiX2NyZWF0ZV93aW5kb3cgKGNvbm5lY3Rpb24sIFhDQl9DT1BZX0ZST01fUEFSRU5ULCB3aW5kb3dfeGNiLT53aW5faWQsCisgICAgICByb290X3dpbmRvdywgeCwgeSwgd2lkdGgsIGhlaWdodCwgMCwgWENCX1dJTkRPV19DTEFTU19JTlBVVF9PVVRQVVQsCisgICAgICBzY3JlZW4tPnJvb3RfdmlzdWFsLCB2YWx1ZV9tYXNrLCB2YWx1ZV9saXN0KTsKKworICBHU1RfTE9HX09CSkVDVCAod2luZG93X3hjYiwgImdsIHdpbmRvdyBpZDogJXAiLAorICAgICAgKGdwb2ludGVyKSAoZ3VpbnRwdHIpIHdpbmRvd194Y2ItPndpbl9pZCk7CisgIEdTVF9MT0dfT0JKRUNUICh3aW5kb3dfeGNiLCAiZ2wgd2luZG93IHByb3BzOiB4OiVkIHk6JWQiLCB4LCB5KTsKKworICAvKiBNYWdpYyBjb2RlIHRoYXQgd2lsbCBzZW5kIG5vdGlmaWNhdGlvbiB3aGVuIHdpbmRvdyBpcyBkZXN0cm95ZWQgKi8KKyAgY29va2llID0geGNiX2ludGVybl9hdG9tIChjb25uZWN0aW9uLCAxLCAxMiwgIldNX1BST1RPQ09MUyIpOworICByZXBseSA9IHhjYl9pbnRlcm5fYXRvbV9yZXBseSAoY29ubmVjdGlvbiwgY29va2llLCAwKTsKKworICBjb29raWUyID0geGNiX2ludGVybl9hdG9tIChjb25uZWN0aW9uLCAwLCAxNiwgIldNX0RFTEVURV9XSU5ET1ciKTsKKyAgcmVwbHkyID0geGNiX2ludGVybl9hdG9tX3JlcGx5IChjb25uZWN0aW9uLCBjb29raWUyLCAwKTsKKworICB4Y2JfY2hhbmdlX3Byb3BlcnR5IChjb25uZWN0aW9uLCBYQ0JfUFJPUF9NT0RFX1JFUExBQ0UsIHdpbmRvd194Y2ItPndpbl9pZCwKKyAgICAgIHJlcGx5LT5hdG9tLCA0LCAzMiwgMSwgJnJlcGx5Mi0+YXRvbSk7CisgIGdfZnJlZSAocmVwbHkpOworICBnX2ZyZWUgKHJlcGx5Mik7CisKKyAgZ3N0X3Z1bGthbl93aW5kb3dfeGNiX3Nob3cgKEdTVF9WVUxLQU5fV0lORE9XICh3aW5kb3dfeGNiKSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBWa1N1cmZhY2VLSFIKK2dzdF92dWxrYW5fd2luZG93X3hjYl9nZXRfc3VyZmFjZSAoR3N0VnVsa2FuV2luZG93ICogd2luZG93LCBHRXJyb3IgKiogZXJyb3IpCit7CisgIFZrWGNiU3VyZmFjZUNyZWF0ZUluZm9LSFIgaW5mbyA9IHsgMCwgfTsKKyAgVmtTdXJmYWNlS0hSIHJldDsKKyAgVmtSZXN1bHQgZXJyOworCisgIGluZm8uc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9YQ0JfU1VSRkFDRV9DUkVBVEVfSU5GT19LSFI7CisgIGluZm8ucE5leHQgPSBOVUxMOworICBpbmZvLmZsYWdzID0gMDsKKyAgaW5mby5jb25uZWN0aW9uID0gR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9DT05ORUNUSU9OICh3aW5kb3ctPmRpc3BsYXkpOworICBpbmZvLndpbmRvdyA9IEdTVF9WVUxLQU5fV0lORE9XX1hDQiAod2luZG93KS0+d2luX2lkOworCisgIGVyciA9CisgICAgICB2a0NyZWF0ZVhjYlN1cmZhY2VLSFIgKHdpbmRvdy0+ZGlzcGxheS0+aW5zdGFuY2UtPmluc3RhbmNlLCAmaW5mbywgTlVMTCwKKyAgICAgICZyZXQpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLCAidmtDcmVhdGVYY2JTdXJmYWNlS0hSIikgPCAwKQorICAgIHJldHVybiBOVUxMOworCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Z1bGthbl93aW5kb3dfeGNiX2dldF9wcmVzZW50YXRpb25fc3VwcG9ydCAoR3N0VnVsa2FuV2luZG93ICogd2luZG93LAorICAgIEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgZ3VpbnQzMiBxdWV1ZV9mYW1pbHlfaWR4KQoreworICBWa1BoeXNpY2FsRGV2aWNlIGdwdTsKKyAgeGNiX3NjcmVlbl90ICpzY3JlZW47CisKKyAgc2NyZWVuID0gR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9TQ1JFRU4gKHdpbmRvdy0+ZGlzcGxheSk7CisKKyAgZ3B1ID0gZ3N0X3Z1bGthbl9kZXZpY2VfZ2V0X3BoeXNpY2FsX2RldmljZSAoZGV2aWNlKTsKKyAgaWYgKHZrR2V0UGh5c2ljYWxEZXZpY2VYY2JQcmVzZW50YXRpb25TdXBwb3J0S0hSIChncHUsIHF1ZXVlX2ZhbWlseV9pZHgsCisgICAgICAgICAgR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9DT05ORUNUSU9OICh3aW5kb3ctPmRpc3BsYXkpLAorICAgICAgICAgIHNjcmVlbi0+cm9vdF92aXN1YWwpKQorICAgIHJldHVybiBUUlVFOworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Z1bGthbl93aW5kb3dfeGNiX29wZW4gKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdywgR0Vycm9yICoqIGVycm9yKQoreworICBHc3RWdWxrYW5XaW5kb3dYQ0IgKndpbmRvd194Y2IgPSBHU1RfVlVMS0FOX1dJTkRPV19YQ0IgKHdpbmRvdyk7CisgIEdzdFZ1bGthbkRpc3BsYXlYQ0IgKmRpc3BsYXlfeGNiID0gKEdzdFZ1bGthbkRpc3BsYXlYQ0IgKikgd2luZG93LT5kaXNwbGF5OworICB4Y2JfY29ubmVjdGlvbl90ICpjb25uZWN0aW9uOworCisgIGNvbm5lY3Rpb24gPSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCX0NPTk5FQ1RJT04gKGRpc3BsYXlfeGNiKTsKKyAgaWYgKGNvbm5lY3Rpb24gPT0gTlVMTCkgeworICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX1ZVTEtBTl9XSU5ET1dfRVJST1IsCisgICAgICAgIEdTVF9WVUxLQU5fV0lORE9XX0VSUk9SX1JFU09VUkNFX1VOQVZBSUxBQkxFLAorICAgICAgICAiRmFpbGVkIHRvIGNvbm5lY3QgdG8gWCBkaXNwbGF5IHNlcnZlciB3aXRoIFhDQiIpOworICAgIGdvdG8gZmFpbHVyZTsKKyAgfQorCisgIGlmICghR1NUX1ZVTEtBTl9XSU5ET1dfQ0xBU1MgKHBhcmVudF9jbGFzcyktPm9wZW4gKHdpbmRvdywgZXJyb3IpKQorICAgIHJldHVybiBGQUxTRTsKKworICByZXR1cm4gZ3N0X3Z1bGthbl93aW5kb3dfeGNiX2NyZWF0ZV93aW5kb3cgKHdpbmRvd194Y2IpOworCitmYWlsdXJlOgorICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3dpbmRvd194Y2JfY2xvc2UgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdykKK3sKKyAgR3N0VnVsa2FuV2luZG93WENCICp3aW5kb3dfeGNiID0gR1NUX1ZVTEtBTl9XSU5ET1dfWENCICh3aW5kb3cpOworICBHc3RWdWxrYW5EaXNwbGF5WENCICpkaXNwbGF5X3hjYiA9IChHc3RWdWxrYW5EaXNwbGF5WENCICopIHdpbmRvdy0+ZGlzcGxheTsKKyAgeGNiX2Nvbm5lY3Rpb25fdCAqY29ubmVjdGlvbiA9CisgICAgICBHU1RfVlVMS0FOX0RJU1BMQVlfWENCX0NPTk5FQ1RJT04gKGRpc3BsYXlfeGNiKTsKKworICBpZiAoY29ubmVjdGlvbikgeworICAgIGdzdF92dWxrYW5fd2luZG93X3hjYl9oaWRlICh3aW5kb3cpOworCisgICAgZ19mcmVlICh3aW5kb3dfeGNiLT5wcml2LT5hdG9tX3dtX2RlbGV0ZV93aW5kb3cpOworICAgIHdpbmRvd194Y2ItPnByaXYtPmF0b21fd21fZGVsZXRlX3dpbmRvdyA9IE5VTEw7CisgICAgR1NUX0RFQlVHICgiZGlzcGxheSByZWNlaXZlciBjbG9zZWQiKTsKKyAgfQorCisgIEdTVF9WVUxLQU5fV0lORE9XX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5jbG9zZSAod2luZG93KTsKK30KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4veGNiL3Zrd2luZG93X3hjYi5oIGIvZXh0L3Z1bGthbi94Y2Ivdmt3aW5kb3dfeGNiLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE3YTQ4OAotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4veGNiL3Zrd2luZG93X3hjYi5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR0aGV3IFdhdGVycyA8eXN0cmVldDAwQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1ZVTEtBTl9XSU5ET1dfWENCX0hfXworI2RlZmluZSBfX0dTVF9WVUxLQU5fV0lORE9XX1hDQl9IX18KKworI2luY2x1ZGUgPHhjYi94Y2IuaD4KKworI2luY2x1ZGUgPHZrLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9WVUxLQU5fV0lORE9XX1hDQiAgICAgICAgIChnc3RfdnVsa2FuX3dpbmRvd194Y2JfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9XSU5ET1dfWENCKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfVFlQRV9WVUxLQU5fV0lORE9XX1hDQiwgR3N0VnVsa2FuV2luZG93WENCKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9XSU5ET1dfWENCX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTKChrKSwgR1NUX1RZUEVfVlVMS0FOX1dJTkRPV19YQ0IsIEdzdFZ1bGthbldpbmRvd1hDQkNsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9XSU5ET1dfWENCKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfVFlQRV9WVUxLQU5fV0lORE9XX1hDQikpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fV0lORE9XX1hDQl9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX1RZUEVfVlVMS0FOX1dJTkRPV19YQ0IpKQorI2RlZmluZSBHU1RfVlVMS0FOX1dJTkRPV19YQ0JfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX1RZUEVfVlVMS0FOX1dJTkRPV19YQ0IsIEdzdFZ1bGthbldpbmRvd1hDQkNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbldpbmRvd1hDQiAgICAgICAgR3N0VnVsa2FuV2luZG93WENCOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbldpbmRvd1hDQlByaXZhdGUgR3N0VnVsa2FuV2luZG93WENCUHJpdmF0ZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5XaW5kb3dYQ0JDbGFzcyAgIEdzdFZ1bGthbldpbmRvd1hDQkNsYXNzOworCisvKioKKyAqIEdzdFZ1bGthbldpbmRvd1hDQjoKKyAqCisgKiBPcGFxdWUgI0dzdFZ1bGthbldpbmRvd1hDQiBvYmplY3QKKyAqLworc3RydWN0IF9Hc3RWdWxrYW5XaW5kb3dYQ0IKK3sKKyAgLyo8IHByaXZhdGUgPiovCisgIEdzdFZ1bGthbldpbmRvdyBwYXJlbnQ7CisKKyAgLyogWCB3aW5kb3cgKi8KKyAgeGNiX3dpbmRvd190IHdpbl9pZDsKKworICBnaW50ICAgICAgICAgIHZpc2libGUgOjE7CisKKyAgLyo8IHByaXZhdGUgPiovCisgIEdzdFZ1bGthbldpbmRvd1hDQlByaXZhdGUgKnByaXY7CisgIAorICBncG9pbnRlciBfcmVzZXJ2ZWRbR1NUX1BBRERJTkddOworfTsKKworLyoqCisgKiBHc3RWdWxrYW5XaW5kb3dYQ0JDbGFzczoKKyAqCisgKiBPcGFxdWUgI0dzdFZ1bGthbldpbmRvd1hDQkNsYXNzIG9iamVjdAorICovCitzdHJ1Y3QgX0dzdFZ1bGthbldpbmRvd1hDQkNsYXNzIHsKKyAgLyo8IHByaXZhdGUgPiovCisgIEdzdFZ1bGthbldpbmRvd0NsYXNzIHBhcmVudF9jbGFzczsKKworICAvKjwgcHJpdmF0ZSA+Ki8KKyAgZ3BvaW50ZXIgX3Jlc2VydmVkW0dTVF9QQURESU5HX0xBUkdFXTsKK307CisKK0dUeXBlIGdzdF92dWxrYW5fd2luZG93X3hjYl9nZXRfdHlwZSAgICAgKHZvaWQpOworCitHc3RWdWxrYW5XaW5kb3dYQ0IgKiBnc3RfdnVsa2FuX3dpbmRvd194Y2JfbmV3IChHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSk7CisKK2dib29sZWFuIGdzdF92dWxrYW5fd2luZG93X3hjYl9jcmVhdGVfd2luZG93IChHc3RWdWxrYW5XaW5kb3dYQ0IgKiB3aW5kb3dfeGNiKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX1ZVTEtBTl9XSU5ET1dfWENCX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi94Y2IveGNiX2V2ZW50X3NvdXJjZS5jIGIvZXh0L3Z1bGthbi94Y2IveGNiX2V2ZW50X3NvdXJjZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNjhmMTkKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3hjYi94Y2JfZXZlbnRfc291cmNlLmMKQEAgLTAsMCArMSwyNTUgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR0aGV3IFdhdGVycyA8eXN0cmVldDAwQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgInhjYl9ldmVudF9zb3VyY2UuaCIKKyNpbmNsdWRlICJ2a2Rpc3BsYXlfeGNiLmgiCisjaW5jbHVkZSAidmt3aW5kb3dfeGNiLmgiCisKK3N0YXRpYyBnaW50CitfY29tcGFyZV94Y2Jfd2luZG93IChHc3RWdWxrYW5XaW5kb3dYQ0IgKiB3aW5kb3dfeGNiLCB4Y2Jfd2luZG93X3QgKiB3aW5kb3dfaWQpCit7CisgIHJldHVybiB3aW5kb3dfeGNiLT53aW5faWQgLSAqd2luZG93X2lkOworfQorCitzdGF0aWMgR3N0VnVsa2FuV2luZG93WENCICoKK19maW5kX3dpbmRvd19mcm9tX3hjYl93aW5kb3cgKEdzdFZ1bGthbkRpc3BsYXlYQ0IgKiBkaXNwbGF5X3hjYiwKKyAgICB4Y2Jfd2luZG93X3Qgd2luZG93X2lkKQoreworICBHc3RWdWxrYW5EaXNwbGF5ICpkaXNwbGF5ID0gR1NUX1ZVTEtBTl9ESVNQTEFZIChkaXNwbGF5X3hjYik7CisgIEdzdFZ1bGthbldpbmRvd1hDQiAqcmV0ID0gTlVMTDsKKyAgR0xpc3QgKmw7CisKKyAgaWYgKCF3aW5kb3dfaWQpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgR1NUX09CSkVDVF9MT0NLIChkaXNwbGF5KTsKKyAgbCA9IGdfbGlzdF9maW5kX2N1c3RvbSAoZGlzcGxheS0+d2luZG93cywgJndpbmRvd19pZCwKKyAgICAgIChHQ29tcGFyZUZ1bmMpIF9jb21wYXJlX3hjYl93aW5kb3cpOworICBpZiAobCkKKyAgICByZXQgPSBnc3Rfb2JqZWN0X3JlZiAobC0+ZGF0YSk7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChkaXNwbGF5KTsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK194Y2JfaGFuZGxlX2V2ZW50IChHc3RWdWxrYW5EaXNwbGF5WENCICogZGlzcGxheV94Y2IpCit7CisgIHhjYl9jb25uZWN0aW9uX3QgKmNvbm5lY3Rpb24gPQorICAgICAgR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9DT05ORUNUSU9OIChkaXNwbGF5X3hjYik7CisgIHhjYl9nZW5lcmljX2V2ZW50X3QgKmV2ZW50OworICBnYm9vbGVhbiByZXQgPSBUUlVFOworCisgIHdoaWxlICgoZXZlbnQgPSB4Y2JfcG9sbF9mb3JfZXZlbnQgKGNvbm5lY3Rpb24pKSkgeworICAgIHVpbnQ4X3QgZXZlbnRfY29kZSA9IGV2ZW50LT5yZXNwb25zZV90eXBlICYgMHg3ZjsKKworICAgIHN3aXRjaCAoZXZlbnRfY29kZSkgeworICAgICAgY2FzZSBYQ0JfQ0xJRU5UX01FU1NBR0U6eworICAgICAgICB4Y2JfY2xpZW50X21lc3NhZ2VfZXZlbnRfdCAqY2xpZW50X2V2ZW50OworICAgICAgICB4Y2JfaW50ZXJuX2F0b21fY29va2llX3QgY29va2llOworICAgICAgICB4Y2JfaW50ZXJuX2F0b21fcmVwbHlfdCAqcmVwbHk7CisKKyAgICAgICAgY2xpZW50X2V2ZW50ID0gKHhjYl9jbGllbnRfbWVzc2FnZV9ldmVudF90ICopIGV2ZW50OworICAgICAgICBjb29raWUgPSB4Y2JfaW50ZXJuX2F0b20gKGNvbm5lY3Rpb24sIDAsIDE2LCAiV01fREVMRVRFX1dJTkRPVyIpOworICAgICAgICByZXBseSA9IHhjYl9pbnRlcm5fYXRvbV9yZXBseSAoY29ubmVjdGlvbiwgY29va2llLCAwKTsKKworICAgICAgICBpZiAoY2xpZW50X2V2ZW50LT5kYXRhLmRhdGEzMlswXSA9PSByZXBseS0+YXRvbSkgeworICAgICAgICAgIEdzdFZ1bGthbldpbmRvd1hDQiAqd2luZG93X3hjYjsKKworICAgICAgICAgIHdpbmRvd194Y2IgPQorICAgICAgICAgICAgICBfZmluZF93aW5kb3dfZnJvbV94Y2Jfd2luZG93IChkaXNwbGF5X3hjYiwgY2xpZW50X2V2ZW50LT53aW5kb3cpOworCisgICAgICAgICAgaWYgKHdpbmRvd194Y2IpIHsKKyAgICAgICAgICAgIEdTVF9JTkZPX09CSkVDVCAod2luZG93X3hjYiwgIkNsb3NlIHJlcXVlc3RlZCIpOworCisgICAgICAgICAgICBnc3RfdnVsa2FuX3dpbmRvd19jbG9zZSAoR1NUX1ZVTEtBTl9XSU5ET1cgKHdpbmRvd194Y2IpKTsKKyAgICAgICAgICAgIGdzdF92dWxrYW5fZGlzcGxheV9yZW1vdmVfd2luZG93IChHU1RfVlVMS0FOX0RJU1BMQVkgKGRpc3BsYXlfeGNiKSwKKyAgICAgICAgICAgICAgICBHU1RfVlVMS0FOX1dJTkRPVyAod2luZG93X3hjYikpOworICAgICAgICAgICAgZ3N0X29iamVjdF91bnJlZiAod2luZG93X3hjYik7CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZ19mcmVlIChyZXBseSk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgY2FzZSBYQ0JfQ09ORklHVVJFX05PVElGWTp7CisgICAgICAgIHhjYl9jb25maWd1cmVfbm90aWZ5X2V2ZW50X3QgKmNvbmZpZ3VyZV9ldmVudDsKKyAgICAgICAgR3N0VnVsa2FuV2luZG93WENCICp3aW5kb3dfeGNiOworCisgICAgICAgIGNvbmZpZ3VyZV9ldmVudCA9ICh4Y2JfY29uZmlndXJlX25vdGlmeV9ldmVudF90ICopIGV2ZW50OworICAgICAgICB3aW5kb3dfeGNiID0KKyAgICAgICAgICAgIF9maW5kX3dpbmRvd19mcm9tX3hjYl93aW5kb3cgKGRpc3BsYXlfeGNiLCBjb25maWd1cmVfZXZlbnQtPndpbmRvdyk7CisKKyAgICAgICAgaWYgKHdpbmRvd194Y2IpIHsKKyAgICAgICAgICBnc3RfdnVsa2FuX3dpbmRvd19yZXNpemUgKEdTVF9WVUxLQU5fV0lORE9XICh3aW5kb3dfeGNiKSwKKyAgICAgICAgICAgICAgY29uZmlndXJlX2V2ZW50LT53aWR0aCwgY29uZmlndXJlX2V2ZW50LT5oZWlnaHQpOworCisgICAgICAgICAgZ3N0X29iamVjdF91bnJlZiAod2luZG93X3hjYik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBjYXNlIFhDQl9FWFBPU0U6eworICAgICAgICB4Y2JfZXhwb3NlX2V2ZW50X3QgKmV4cG9zZV9ldmVudCA9ICh4Y2JfZXhwb3NlX2V2ZW50X3QgKikgZXZlbnQ7CisgICAgICAgIEdzdFZ1bGthbldpbmRvd1hDQiAqd2luZG93X3hjYjsKKworICAgICAgICAvKiBub24temVybyBtZWFucyB0aGF0IG90aGVyIEV4cG9zZSBmb2xsb3dzCisgICAgICAgICAqIHNvIGp1c3Qgd2FpdCBmb3IgdGhlIGxhc3Qgb25lCisgICAgICAgICAqIGluIHRoZW9yeSB3ZSBzaG91bGQgbm90IHJlY2VpdmUgbm9uLXplcm8gYmVjYXVzZQorICAgICAgICAgKiB3ZSBoYXZlIG5vIHN1YiBhcmVhcyBoZXJlIGJ1dCBqdXN0IGluIGNhc2UgKi8KKyAgICAgICAgaWYgKGV4cG9zZV9ldmVudC0+Y291bnQgIT0gMCkKKyAgICAgICAgICBicmVhazsKKworICAgICAgICB3aW5kb3dfeGNiID0KKyAgICAgICAgICAgIF9maW5kX3dpbmRvd19mcm9tX3hjYl93aW5kb3cgKGRpc3BsYXlfeGNiLCBleHBvc2VfZXZlbnQtPndpbmRvdyk7CisKKyAgICAgICAgaWYgKHdpbmRvd194Y2IpIHsKKyAgICAgICAgICBnc3RfdnVsa2FuX3dpbmRvd19yZWRyYXcgKEdTVF9WVUxLQU5fV0lORE9XICh3aW5kb3dfeGNiKSk7CisgICAgICAgICAgZ3N0X29iamVjdF91bnJlZiAod2luZG93X3hjYik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICB9CisjaWYgMAorICAgICAgY2FzZSBLZXlQcmVzczoKKyAgICAgIGNhc2UgS2V5UmVsZWFzZToKKyAgICAgICAga2V5c3ltID0gWGtiS2V5Y29kZVRvS2V5c3ltICh3aW5kb3dfeGNiLT5kZXZpY2UsCisgICAgICAgICAgICBldmVudC54a2V5LmtleWNvZGUsIDAsIDApOworICAgICAgICBrZXlfc3RyID0gWEtleXN5bVRvU3RyaW5nIChrZXlzeW0pOworICAgICAgICBrZXlfZGF0YSA9IGdfc2xpY2VfbmV3IChzdHJ1Y3Qga2V5X2V2ZW50KTsKKyAgICAgICAga2V5X2RhdGEtPndpbmRvdyA9IHdpbmRvdzsKKyAgICAgICAga2V5X2RhdGEtPmtleV9zdHIgPSBYS2V5c3ltVG9TdHJpbmcgKGtleXN5bSk7CisgICAgICAgIGtleV9kYXRhLT5ldmVudF90eXBlID0KKyAgICAgICAgICAgIGV2ZW50LnR5cGUgPT0gS2V5UHJlc3MgPyAia2V5LXByZXNzIiA6ICJrZXktcmVsZWFzZSI7CisgICAgICAgIEdTVF9ERUJVRyAoImlucHV0IGV2ZW50IGtleSAlZCBwcmVzc2VkIG92ZXIgd2luZG93IGF0ICVkLCVkICglcykiLAorICAgICAgICAgICAgZXZlbnQueGtleS5rZXljb2RlLCBldmVudC54a2V5LngsIGV2ZW50LnhrZXkueSwga2V5X3N0cik7CisgICAgICAgIGdfbWFpbl9jb250ZXh0X2ludm9rZSAod2luZG93LT5uYXZpZ2F0aW9uX2NvbnRleHQsCisgICAgICAgICAgICAoR1NvdXJjZUZ1bmMpIGdzdF92dWxrYW5fd2luZG93X2tleV9ldmVudF9jYiwga2V5X2RhdGEpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgQnV0dG9uUHJlc3M6CisgICAgICBjYXNlIEJ1dHRvblJlbGVhc2U6CisgICAgICAgIEdTVF9ERUJVRyAoImlucHV0IGV2ZW50IG1vdXNlIGJ1dHRvbiAlZCBwcmVzc2VkIG92ZXIgd2luZG93IGF0ICVkLCVkIiwKKyAgICAgICAgICAgIGV2ZW50LnhidXR0b24uYnV0dG9uLCBldmVudC54YnV0dG9uLngsIGV2ZW50LnhidXR0b24ueSk7CisgICAgICAgIG1vdXNlX2RhdGEgPSBnX3NsaWNlX25ldyAoc3RydWN0IG1vdXNlX2V2ZW50KTsKKyAgICAgICAgbW91c2VfZGF0YS0+d2luZG93ID0gd2luZG93OworICAgICAgICBtb3VzZV9kYXRhLT5ldmVudF90eXBlID0KKyAgICAgICAgICAgIGV2ZW50LnR5cGUgPT0KKyAgICAgICAgICAgIEJ1dHRvblByZXNzID8gIm1vdXNlLWJ1dHRvbi1wcmVzcyIgOiAibW91c2UtYnV0dG9uLXJlbGVhc2UiOworICAgICAgICBtb3VzZV9kYXRhLT5idXR0b24gPSBldmVudC54YnV0dG9uLmJ1dHRvbjsKKyAgICAgICAgbW91c2VfZGF0YS0+cG9zeCA9IChkb3VibGUpIGV2ZW50LnhidXR0b24ueDsKKyAgICAgICAgbW91c2VfZGF0YS0+cG9zeSA9IChkb3VibGUpIGV2ZW50LnhidXR0b24ueTsKKworICAgICAgICBnX21haW5fY29udGV4dF9pbnZva2UgKHdpbmRvdy0+bmF2aWdhdGlvbl9jb250ZXh0LAorICAgICAgICAgICAgKEdTb3VyY2VGdW5jKSBnc3RfdnVsa2FuX3dpbmRvd19tb3VzZV9ldmVudF9jYiwgbW91c2VfZGF0YSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBNb3Rpb25Ob3RpZnk6CisgICAgICAgIEdTVF9ERUJVRyAoImlucHV0IGV2ZW50IHBvaW50ZXIgbW92ZWQgb3ZlciB3aW5kb3cgYXQgJWQsJWQiLAorICAgICAgICAgICAgZXZlbnQueG1vdGlvbi54LCBldmVudC54bW90aW9uLnkpOworICAgICAgICBtb3VzZV9kYXRhID0gZ19zbGljZV9uZXcgKHN0cnVjdCBtb3VzZV9ldmVudCk7CisgICAgICAgIG1vdXNlX2RhdGEtPndpbmRvdyA9IHdpbmRvdzsKKyAgICAgICAgbW91c2VfZGF0YS0+ZXZlbnRfdHlwZSA9ICJtb3VzZS1tb3ZlIjsKKyAgICAgICAgbW91c2VfZGF0YS0+YnV0dG9uID0gMDsKKyAgICAgICAgbW91c2VfZGF0YS0+cG9zeCA9IChkb3VibGUpIGV2ZW50LnhidXR0b24ueDsKKyAgICAgICAgbW91c2VfZGF0YS0+cG9zeSA9IChkb3VibGUpIGV2ZW50LnhidXR0b24ueTsKKworICAgICAgICBnX21haW5fY29udGV4dF9pbnZva2UgKHdpbmRvdy0+bmF2aWdhdGlvbl9jb250ZXh0LCAoR1NvdXJjZUZ1bmMpCisgICAgICAgICAgICBnc3RfdnVsa2FuX3dpbmRvd19tb3VzZV9ldmVudF9jYiwgbW91c2VfZGF0YSk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICBkZWZhdWx0OgorICAgICAgICBHU1RfREVCVUcgKCJ1bmhhbmRsZWQgWENCIHR5cGU6ICV1IiwgZXZlbnRfY29kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGdfZnJlZSAoZXZlbnQpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKwordHlwZWRlZiBzdHJ1Y3QgX1hDQkV2ZW50U291cmNlCit7CisgIEdTb3VyY2Ugc291cmNlOworICBHUG9sbEZEIHBmZDsKKyAgdWludDMyX3QgbWFzazsKKyAgR3N0VnVsa2FuRGlzcGxheVhDQiAqZGlzcGxheV94Y2I7Cit9IFhDQkV2ZW50U291cmNlOworCitzdGF0aWMgZ2Jvb2xlYW4KK3hjYl9ldmVudF9zb3VyY2VfcHJlcGFyZSAoR1NvdXJjZSAqIGJhc2UsIGdpbnQgKiB0aW1lb3V0KQoreworICAqdGltZW91dCA9IC0xOworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgoreGNiX2V2ZW50X3NvdXJjZV9jaGVjayAoR1NvdXJjZSAqIGJhc2UpCit7CisgIFhDQkV2ZW50U291cmNlICpzb3VyY2UgPSAoWENCRXZlbnRTb3VyY2UgKikgYmFzZTsKKyAgZ2Jvb2xlYW4gcmV0dmFsOworCisgIHJldHZhbCA9IHNvdXJjZS0+cGZkLnJldmVudHM7CisKKyAgcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGdib29sZWFuCit4Y2JfZXZlbnRfc291cmNlX2Rpc3BhdGNoIChHU291cmNlICogYmFzZSwgR1NvdXJjZUZ1bmMgY2FsbGJhY2ssIGdwb2ludGVyIGRhdGEpCit7CisgIFhDQkV2ZW50U291cmNlICpzb3VyY2UgPSAoWENCRXZlbnRTb3VyY2UgKikgYmFzZTsKKworICBnYm9vbGVhbiByZXQgPSBfeGNiX2hhbmRsZV9ldmVudCAoc291cmNlLT5kaXNwbGF5X3hjYik7CisKKyAgaWYgKGNhbGxiYWNrKQorICAgIGNhbGxiYWNrIChkYXRhKTsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgR1NvdXJjZUZ1bmNzIHhjYl9ldmVudF9zb3VyY2VfZnVuY3MgPSB7CisgIHhjYl9ldmVudF9zb3VyY2VfcHJlcGFyZSwKKyAgeGNiX2V2ZW50X3NvdXJjZV9jaGVjaywKKyAgeGNiX2V2ZW50X3NvdXJjZV9kaXNwYXRjaCwKKyAgTlVMTAorfTsKKworR1NvdXJjZSAqCit4Y2JfZXZlbnRfc291cmNlX25ldyAoR3N0VnVsa2FuRGlzcGxheVhDQiAqIGRpc3BsYXlfeGNiKQoreworICB4Y2JfY29ubmVjdGlvbl90ICpjb25uZWN0aW9uOworICBYQ0JFdmVudFNvdXJjZSAqc291cmNlOworCisgIGNvbm5lY3Rpb24gPSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCX0NPTk5FQ1RJT04gKGRpc3BsYXlfeGNiKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbm5lY3Rpb24gIT0gTlVMTCwgTlVMTCk7CisKKyAgc291cmNlID0gKFhDQkV2ZW50U291cmNlICopCisgICAgICBnX3NvdXJjZV9uZXcgKCZ4Y2JfZXZlbnRfc291cmNlX2Z1bmNzLCBzaXplb2YgKFhDQkV2ZW50U291cmNlKSk7CisgIHNvdXJjZS0+ZGlzcGxheV94Y2IgPSBkaXNwbGF5X3hjYjsKKyAgc291cmNlLT5wZmQuZmQgPSB4Y2JfZ2V0X2ZpbGVfZGVzY3JpcHRvciAoY29ubmVjdGlvbik7CisgIHNvdXJjZS0+cGZkLmV2ZW50cyA9IEdfSU9fSU4gfCBHX0lPX0VSUjsKKyAgZ19zb3VyY2VfYWRkX3BvbGwgKCZzb3VyY2UtPnNvdXJjZSwgJnNvdXJjZS0+cGZkKTsKKworICByZXR1cm4gJnNvdXJjZS0+c291cmNlOworfQpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi94Y2IveGNiX2V2ZW50X3NvdXJjZS5oIGIvZXh0L3Z1bGthbi94Y2IveGNiX2V2ZW50X3NvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkOWI0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3hjYi94Y2JfZXZlbnRfc291cmNlLmgKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDEyIE1hdHRoZXcgV2F0ZXJzIDx5c3RyZWV0MDBAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19WVUxLQU5fWENCX0VWRU5UX1NPVVJDRV9IX18KKyNkZWZpbmUgX19WVUxLQU5fWENCX0VWRU5UX1NPVVJDRV9IX18KKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSAidmtkaXNwbGF5X3hjYi5oIgorCitHU291cmNlICoKK3hjYl9ldmVudF9zb3VyY2VfbmV3IChHc3RWdWxrYW5EaXNwbGF5WENCICpkaXNwbGF5X3hjYik7CisKKyNlbmRpZiAvKiBfX1ZVTEtBTl9YQ0JfRVZFTlRfU09VUkNFX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3dheWxhbmQvTWFrZWZpbGUuYW0gYi9leHQvd2F5bGFuZC9NYWtlZmlsZS5hbQppbmRleCBlMTJkOTlhLi5jNzQyYmZjIDEwMDY0NAotLS0gYS9leHQvd2F5bGFuZC9NYWtlZmlsZS5hbQorKysgYi9leHQvd2F5bGFuZC9NYWtlZmlsZS5hbQpAQCAtMTQsNiArMTQsNyBAQAogbGliZ3N0d2F5bGFuZHNpbmtfbGFfTElCQUREID0gXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCiAJLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0YWxsb2NhdG9ycy0kKEdTVF9BUElfVkVSU0lPTikgXAogCSQoV0FZTEFORF9MSUJTKSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC93YXlsYW5kL2xpYmdzdHdheWxhbmQtJChHU1RfQVBJX1ZFUlNJT04pLmxhCiBsaWJnc3R3YXlsYW5kc2lua19sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCmRpZmYgLS1naXQgYS9leHQvd2F5bGFuZC9NYWtlZmlsZS5pbiBiL2V4dC93YXlsYW5kL01ha2VmaWxlLmluCmluZGV4IDU1ZTM3NjIuLjQyZGVkMDUgMTAwNjQ0Ci0tLSBhL2V4dC93YXlsYW5kL01ha2VmaWxlLmluCisrKyBiL2V4dC93YXlsYW5kL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI4Miw2ICsyODEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxOSw2ICszMjAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNyw3ICszMzAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDYsOCArMzQ4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2NCwxNiArMzY3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5OSw2ICs0MDMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjQsNiArNDMwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI1LDYgKzUzMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzgsOCArNTQ3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU1LDYgKzU2Miw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTIsMTYgKzYyMSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3Myw2ICs2ODQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgzLDYgKzY5NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5Miw2ICs3MDUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI5LDcgKzc0NCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzg1LDYgKzc5OSw3IEBACiBsaWJnc3R3YXlsYW5kc2lua19sYV9MSUJBREQgPSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKIAktbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJLWxnc3RhbGxvY2F0b3JzLSQoR1NUX0FQSV9WRVJTSU9OKSBcCiAJJChXQVlMQU5EX0xJQlMpIFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3dheWxhbmQvbGliZ3N0d2F5bGFuZC0kKEdTVF9BUElfVkVSU0lPTikubGEKIApkaWZmIC0tZ2l0IGEvZXh0L3dheWxhbmQvZ3N0d2F5bGFuZHNpbmsuYyBiL2V4dC93YXlsYW5kL2dzdHdheWxhbmRzaW5rLmMKaW5kZXggN2NjNGJiYS4uZjRmMzRhOCAxMDA2NDQKLS0tIGEvZXh0L3dheWxhbmQvZ3N0d2F5bGFuZHNpbmsuYworKysgYi9leHQvd2F5bGFuZC9nc3R3YXlsYW5kc2luay5jCkBAIC0zMiw3ICszMiw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgd2F5bGFuZHNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHdheWxhbmRzaW5rCiAgKiBdfCB0ZXN0IHRoZSB2aWRlbyByZW5kZXJpbmcgaW4gd2F5bGFuZAogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtMjE5LDggKzIxOSw3IEBACiAgIGlmIChzaW5rLT5wb29sKQogICAgIGdzdF9vYmplY3RfdW5yZWYgKHNpbmstPnBvb2wpOwogCi0gIGlmIChzaW5rLT5kaXNwbGF5X25hbWUpCi0gICAgZ19mcmVlIChzaW5rLT5kaXNwbGF5X25hbWUpOworICBnX2ZyZWUgKHNpbmstPmRpc3BsYXlfbmFtZSk7CiAKICAgZ19tdXRleF9jbGVhciAoJnNpbmstPmRpc3BsYXlfbG9jayk7CiAgIGdfbXV0ZXhfY2xlYXIgKCZzaW5rLT5yZW5kZXJfbG9jayk7CkBAIC0zNjQsMTAgKzM2MywxMyBAQAogICBpZiAoZ3N0X2NvbnRleHRfaGFzX2NvbnRleHRfdHlwZSAoY29udGV4dCwKICAgICAgICAgICBHU1RfV0FZTEFORF9ESVNQTEFZX0hBTkRMRV9DT05URVhUX1RZUEUpKSB7CiAgICAgZ19tdXRleF9sb2NrICgmc2luay0+ZGlzcGxheV9sb2NrKTsKLSAgICBpZiAoR19MSUtFTFkgKCFzaW5rLT5kaXNwbGF5KSkKKyAgICBpZiAoR19MSUtFTFkgKCFzaW5rLT5kaXNwbGF5KSkgewogICAgICAgZ3N0X3dheWxhbmRfc2lua19zZXRfZGlzcGxheV9mcm9tX2NvbnRleHQgKHNpbmssIGNvbnRleHQpOwotICAgIGVsc2UKKyAgICB9IGVsc2UgewogICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbGVtZW50LCAiY2hhbmdpbmcgZGlzcGxheSBoYW5kbGUgaXMgbm90IHN1cHBvcnRlZCIpOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzaW5rLT5kaXNwbGF5X2xvY2spOworICAgICAgcmV0dXJuOworICAgIH0KICAgICBnX211dGV4X3VubG9jayAoJnNpbmstPmRpc3BsYXlfbG9jayk7CiAgIH0KIApAQCAtMzk3LDcgKzM5OSw3IEBACiAgICAgZ192YWx1ZV9pbml0ICgmbGlzdCwgR1NUX1RZUEVfTElTVCk7CiAgICAgZ192YWx1ZV9pbml0ICgmdmFsdWUsIEdfVFlQRV9TVFJJTkcpOwogCi0gICAgZm9ybWF0cyA9IHNpbmstPmRpc3BsYXktPmZvcm1hdHM7CisgICAgZm9ybWF0cyA9IHNpbmstPmRpc3BsYXktPnNobV9mb3JtYXRzOwogICAgIGZvciAoaSA9IDA7IGkgPCBmb3JtYXRzLT5sZW47IGkrKykgewogICAgICAgZm10ID0gZ19hcnJheV9pbmRleCAoZm9ybWF0cywgdWludDMyX3QsIGkpOwogICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICgmdmFsdWUsIGdzdF93bF9zaG1fZm9ybWF0X3RvX3N0cmluZyAoZm10KSk7CkBAIC00NDgsNyArNDUwLDcgQEAKICAgICBnb3RvIGludmFsaWRfZm9ybWF0OwogCiAgIC8qIHZlcmlmeSB3ZSBzdXBwb3J0IHRoZSByZXF1ZXN0ZWQgZm9ybWF0ICovCi0gIGZvcm1hdHMgPSBzaW5rLT5kaXNwbGF5LT5mb3JtYXRzOworICBmb3JtYXRzID0gc2luay0+ZGlzcGxheS0+c2htX2Zvcm1hdHM7CiAgIGZvciAoaSA9IDA7IGkgPCBmb3JtYXRzLT5sZW47IGkrKykgewogICAgIGlmIChnX2FycmF5X2luZGV4IChmb3JtYXRzLCB1aW50MzJfdCwgaSkgPT0gZm9ybWF0KQogICAgICAgYnJlYWs7CkBAIC02NDYsNyArNjQ4LDcgQEAKIAogICAgICAgLyogdGhlIGZpcnN0IHRpbWUgd2UgYWNxdWlyZSBhIGJ1ZmZlciwKICAgICAgICAqIHdlIG5lZWQgdG8gYXR0YWNoIGEgd2xfYnVmZmVyIG9uIGl0ICovCi0gICAgICB3bGJ1ZmZlciA9IGdzdF9idWZmZXJfZ2V0X3dsX2J1ZmZlciAoYnVmZmVyKTsKKyAgICAgIHdsYnVmZmVyID0gZ3N0X2J1ZmZlcl9nZXRfd2xfYnVmZmVyICh0b19yZW5kZXIpOwogICAgICAgaWYgKEdfVU5MSUtFTFkgKCF3bGJ1ZmZlcikpIHsKICAgICAgICAgbWVtID0gZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeSAodG9fcmVuZGVyLCAwKTsKICAgICAgICAgd2J1ZiA9IGdzdF93bF9zaG1fbWVtb3J5X2NvbnN0cnVjdF93bF9idWZmZXIgKG1lbSwgc2luay0+ZGlzcGxheSwKQEAgLTY1NCw3ICs2NTYsNyBAQAogICAgICAgICBpZiAoR19VTkxJS0VMWSAoIXdidWYpKQogICAgICAgICAgIGdvdG8gbm9fd2xfYnVmZmVyOwogCi0gICAgICAgIGdzdF9idWZmZXJfYWRkX3dsX2J1ZmZlciAoYnVmZmVyLCB3YnVmLCBzaW5rLT5kaXNwbGF5KTsKKyAgICAgICAgZ3N0X2J1ZmZlcl9hZGRfd2xfYnVmZmVyICh0b19yZW5kZXIsIHdidWYsIHNpbmstPmRpc3BsYXkpOwogICAgICAgfQogCiAgICAgICBnc3RfYnVmZmVyX21hcCAoYnVmZmVyLCAmc3JjLCBHU1RfTUFQX1JFQUQpOwpAQCAtNzI0LDYgKzcyNiwxMSBAQAogCiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHNpbmsgIT0gTlVMTCk7CiAKKyAgaWYgKHNpbmstPndpbmRvdyAhPSBOVUxMKSB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzaW5rLCAiY2hhbmdpbmcgd2luZG93IGhhbmRsZSBpcyBub3Qgc3VwcG9ydGVkIik7CisgICAgcmV0dXJuOworICB9CisKICAgZ19tdXRleF9sb2NrICgmc2luay0+cmVuZGVyX2xvY2spOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKHNpbmssICJTZXR0aW5nIHdpbmRvdyBoYW5kbGUgJSIgR1NUX1BUUl9GT1JNQVQsCmRpZmYgLS1naXQgYS9leHQvd2F5bGFuZC93bGRpc3BsYXkuYyBiL2V4dC93YXlsYW5kL3dsZGlzcGxheS5jCmluZGV4IDhjNWVlYWYuLjYxNmRlZDMgMTAwNjQ0Ci0tLSBhL2V4dC93YXlsYW5kL3dsZGlzcGxheS5jCisrKyBiL2V4dC93YXlsYW5kL3dsZGlzcGxheS5jCkBAIC00NCw3ICs0NCw3IEBACiBzdGF0aWMgdm9pZAogZ3N0X3dsX2Rpc3BsYXlfaW5pdCAoR3N0V2xEaXNwbGF5ICogc2VsZikKIHsKLSAgc2VsZi0+Zm9ybWF0cyA9IGdfYXJyYXlfbmV3IChGQUxTRSwgRkFMU0UsIHNpemVvZiAodWludDMyX3QpKTsKKyAgc2VsZi0+c2htX2Zvcm1hdHMgPSBnX2FycmF5X25ldyAoRkFMU0UsIEZBTFNFLCBzaXplb2YgKHVpbnQzMl90KSk7CiAgIHNlbGYtPndsX2ZkX3BvbGwgPSBnc3RfcG9sbF9uZXcgKFRSVUUpOwogICBzZWxmLT5idWZmZXJzID0gZ19oYXNoX3RhYmxlX25ldyAoZ19kaXJlY3RfaGFzaCwgZ19kaXJlY3RfZXF1YWwpOwogICBnX211dGV4X2luaXQgKCZzZWxmLT5idWZmZXJzX211dGV4KTsKQEAgLTY5LDcgKzY5LDcgQEAKICAgICAgIChHSEZ1bmMpIGdzdF93bF9idWZmZXJfZm9yY2VfcmVsZWFzZV9hbmRfdW5yZWYsIE5VTEwpOwogICBnX2hhc2hfdGFibGVfcmVtb3ZlX2FsbCAoc2VsZi0+YnVmZmVycyk7CiAKLSAgZ19hcnJheV91bnJlZiAoc2VsZi0+Zm9ybWF0cyk7CisgIGdfYXJyYXlfdW5yZWYgKHNlbGYtPnNobV9mb3JtYXRzKTsKICAgZ3N0X3BvbGxfZnJlZSAoc2VsZi0+d2xfZmRfcG9sbCk7CiAgIGdfaGFzaF90YWJsZV91bnJlZiAoc2VsZi0+YnVmZmVycyk7CiAgIGdfbXV0ZXhfY2xlYXIgKCZzZWxmLT5idWZmZXJzX211dGV4KTsKQEAgLTEzNiw3ICsxMzYsNyBAQAogewogICBHc3RXbERpc3BsYXkgKnNlbGYgPSBkYXRhOwogCi0gIGdfYXJyYXlfYXBwZW5kX3ZhbCAoc2VsZi0+Zm9ybWF0cywgZm9ybWF0KTsKKyAgZ19hcnJheV9hcHBlbmRfdmFsIChzZWxmLT5zaG1fZm9ybWF0cywgZm9ybWF0KTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCB3bF9zaG1fbGlzdGVuZXIgc2htX2xpc3RlbmVyID0gewpkaWZmIC0tZ2l0IGEvZXh0L3dheWxhbmQvd2xkaXNwbGF5LmggYi9leHQvd2F5bGFuZC93bGRpc3BsYXkuaAppbmRleCA1NTA1ZDYwLi5lOWRmNzQ5IDEwMDY0NAotLS0gYS9leHQvd2F5bGFuZC93bGRpc3BsYXkuaAorKysgYi9leHQvd2F5bGFuZC93bGRpc3BsYXkuaApAQCAtNTIsNyArNTIsNyBAQAogICBzdHJ1Y3Qgd2xfc2hlbGwgKnNoZWxsOwogICBzdHJ1Y3Qgd2xfc2htICpzaG07CiAgIHN0cnVjdCB3bF9zY2FsZXIgKnNjYWxlcjsKLSAgR0FycmF5ICpmb3JtYXRzOworICBHQXJyYXkgKnNobV9mb3JtYXRzOwogCiAgIC8qIHByaXZhdGUgKi8KICAgZ2Jvb2xlYW4gb3duX2Rpc3BsYXk7CmRpZmYgLS1naXQgYS9leHQvd2F5bGFuZC93bHNobWFsbG9jYXRvci5jIGIvZXh0L3dheWxhbmQvd2xzaG1hbGxvY2F0b3IuYwppbmRleCA2ZDgyYjIzLi45NGZiYmYxIDEwMDY0NAotLS0gYS9leHQvd2F5bGFuZC93bHNobWFsbG9jYXRvci5jCisrKyBiL2V4dC93YXlsYW5kL3dsc2htYWxsb2NhdG9yLmMKQEAgLTM0LDcgKzM0LDcgQEAKIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4gKGdzdHdheWxhbmRfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0d2F5bGFuZF9kZWJ1ZwogCi1HX0RFRklORV9UWVBFIChHc3RXbFNobUFsbG9jYXRvciwgZ3N0X3dsX3NobV9hbGxvY2F0b3IsIEdTVF9UWVBFX0FMTE9DQVRPUik7CitHX0RFRklORV9UWVBFIChHc3RXbFNobUFsbG9jYXRvciwgZ3N0X3dsX3NobV9hbGxvY2F0b3IsIEdTVF9UWVBFX0ZEX0FMTE9DQVRPUik7CiAKIHN0YXRpYyBHc3RNZW1vcnkgKgogZ3N0X3dsX3NobV9hbGxvY2F0b3JfYWxsb2MgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgZ3NpemUgc2l6ZSwKQEAgLTQ0LDggKzQ0LDggQEAKICAgY2hhciBmaWxlbmFtZVsxMDI0XTsKICAgc3RhdGljIGludCBpbml0ID0gMDsKICAgaW50IGZkOwotICBncG9pbnRlciBkYXRhOwotICBHc3RXbFNobU1lbW9yeSAqbWVtOworICBHc3RNZW1vcnkgKm1lbTsKKyAgR3N0TWFwSW5mbyBpbmZvOwogCiAgIC8qIFRPRE86IG1ha2UgdXNlIG9mIHRoZSBhbGxvY2F0aW9uIHBhcmFtcywgaWYgbmVjZXNzYXJ5ICovCiAKQEAgLTY1LDQ1ICs2NSwyOCBAQAogICAgIHJldHVybiBOVUxMOwogICB9CiAKLSAgZGF0YSA9IG1tYXAgKE5VTEwsIHNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGZkLCAwKTsKLSAgaWYgKGRhdGEgPT0gTUFQX0ZBSUxFRCkgewotICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJtbWFwIGZhaWxlZDogJXMiLCBzdHJlcnJvciAoZXJybm8pKTsKKyAgbWVtID0gZ3N0X2ZkX2FsbG9jYXRvcl9hbGxvYyAoYWxsb2NhdG9yLCBmZCwgc2l6ZSwKKyAgICAgIEdTVF9GRF9NRU1PUllfRkxBR19LRUVQX01BUFBFRCk7CisgIGlmIChHX1VOTElLRUxZICghbWVtKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJHc3RGZE1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCIpOwogICAgIGNsb3NlIChmZCk7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KIAorICAvKiB3ZSBuZWVkIHRvIG1hcCB0aGUgbWVtb3J5IGluIG9yZGVyIHRvIHVubGluayB0aGUgZmlsZSB3aXRob3V0IGxvc2luZyBpdCAqLworICBpZiAoIWdzdF9tZW1vcnlfbWFwIChtZW0sICZpbmZvLCBHU1RfTUFQX1JFQURXUklURSkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiR3N0RmRNZW1vcnkgbWFwIGZhaWxlZCIpOworICAgIGNsb3NlIChmZCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICAvKiB1bm1hcCB3aWxsIG5vdCByZWFsbHkgbXVubWFwKCksIHdlIGp1c3QKKyAgICogbmVlZCBpdCB0byByZWxlYXNlIHRoZSBtaW5pb2JqZWN0IGxvY2sgKi8KKyAgZ3N0X21lbW9yeV91bm1hcCAobWVtLCAmaW5mbyk7CisKICAgdW5saW5rIChmaWxlbmFtZSk7CiAKLSAgbWVtID0gZ19zbGljZV9uZXcwIChHc3RXbFNobU1lbW9yeSk7Ci0gIGdzdF9tZW1vcnlfaW5pdCAoKEdzdE1lbW9yeSAqKSBtZW0sIEdTVF9NRU1PUllfRkxBR19OT19TSEFSRSwgYWxsb2NhdG9yLCBOVUxMLAotICAgICAgc2l6ZSwgMCwgMCwgc2l6ZSk7Ci0gIG1lbS0+ZGF0YSA9IGRhdGE7Ci0gIG1lbS0+ZmQgPSBmZDsKLQotICByZXR1cm4gKEdzdE1lbW9yeSAqKSBtZW07Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfd2xfc2htX2FsbG9jYXRvcl9mcmVlIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIEdzdE1lbW9yeSAqIG1lbW9yeSkKLXsKLSAgR3N0V2xTaG1NZW1vcnkgKnNobV9tZW0gPSAoR3N0V2xTaG1NZW1vcnkgKikgbWVtb3J5OwotCi0gIGlmIChzaG1fbWVtLT5mZCAhPSAtMSkKLSAgICBjbG9zZSAoc2htX21lbS0+ZmQpOwotICBtdW5tYXAgKHNobV9tZW0tPmRhdGEsIG1lbW9yeS0+bWF4c2l6ZSk7Ci0KLSAgZ19zbGljZV9mcmVlIChHc3RXbFNobU1lbW9yeSwgc2htX21lbSk7Ci19Ci0KLXN0YXRpYyBncG9pbnRlcgotZ3N0X3dsX3NobV9tZW1fbWFwIChHc3RNZW1vcnkgKiBtZW0sIGdzaXplIG1heHNpemUsIEdzdE1hcEZsYWdzIGZsYWdzKQotewotICByZXR1cm4gKChHc3RXbFNobU1lbW9yeSAqKSBtZW0pLT5kYXRhOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3dsX3NobV9tZW1fdW5tYXAgKEdzdE1lbW9yeSAqIG1lbSkKLXsKKyAgcmV0dXJuIG1lbTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTExMiwxNyArOTUsMTYgQEAKICAgR3N0QWxsb2NhdG9yQ2xhc3MgKmFsbG9jX2NsYXNzID0gKEdzdEFsbG9jYXRvckNsYXNzICopIGtsYXNzOwogCiAgIGFsbG9jX2NsYXNzLT5hbGxvYyA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfd2xfc2htX2FsbG9jYXRvcl9hbGxvYyk7Ci0gIGFsbG9jX2NsYXNzLT5mcmVlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF93bF9zaG1fYWxsb2NhdG9yX2ZyZWUpOwogfQogCiBzdGF0aWMgdm9pZAogZ3N0X3dsX3NobV9hbGxvY2F0b3JfaW5pdCAoR3N0V2xTaG1BbGxvY2F0b3IgKiBzZWxmKQogewotICBzZWxmLT5wYXJlbnRfaW5zdGFuY2UubWVtX3R5cGUgPSBHU1RfQUxMT0NBVE9SX1dMX1NITTsKLSAgc2VsZi0+cGFyZW50X2luc3RhbmNlLm1lbV9tYXAgPSBnc3Rfd2xfc2htX21lbV9tYXA7Ci0gIHNlbGYtPnBhcmVudF9pbnN0YW5jZS5tZW1fdW5tYXAgPSBnc3Rfd2xfc2htX21lbV91bm1hcDsKKyAgR3N0QWxsb2NhdG9yICphbGxvYyA9IEdTVF9BTExPQ0FUT1JfQ0FTVCAoc2VsZik7CiAKLSAgR1NUX09CSkVDVF9GTEFHX1NFVCAoc2VsZiwgR1NUX0FMTE9DQVRPUl9GTEFHX0NVU1RPTV9BTExPQyk7CisgIGFsbG9jLT5tZW1fdHlwZSA9IEdTVF9BTExPQ0FUT1JfV0xfU0hNOworCisgIEdTVF9PQkpFQ1RfRkxBR19VTlNFVCAoc2VsZiwgR1NUX0FMTE9DQVRPUl9GTEFHX0NVU1RPTV9BTExPQyk7CiB9CiAKIHZvaWQKQEAgLTE0OCw3ICsxMzAsNiBAQAogZ3N0X3dsX3NobV9tZW1vcnlfY29uc3RydWN0X3dsX2J1ZmZlciAoR3N0TWVtb3J5ICogbWVtLCBHc3RXbERpc3BsYXkgKiBkaXNwbGF5LAogICAgIGNvbnN0IEdzdFZpZGVvSW5mbyAqIGluZm8pCiB7Ci0gIEdzdFdsU2htTWVtb3J5ICpzaG1fbWVtID0gKEdzdFdsU2htTWVtb3J5ICopIG1lbTsKICAgZ2ludCB3aWR0aCwgaGVpZ2h0LCBzdHJpZGU7CiAgIGdzaXplIHNpemU7CiAgIGVudW0gd2xfc2htX2Zvcm1hdCBmb3JtYXQ7CkBAIC0xNjMsMTggKzE0NCwxNSBAQAogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChnc3RfaXNfd2xfc2htX21lbW9yeSAobWVtKSwgTlVMTCk7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzaXplIDw9IG1lbS0+c2l6ZSwgTlVMTCk7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzaG1fbWVtLT5mZCAhPSAtMSwgTlVMTCk7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAobWVtLT5hbGxvY2F0b3IsICJDcmVhdGluZyB3bF9idWZmZXIgb2Ygc2l6ZSAlIgogICAgICAgR19HU1NJWkVfRk9STUFUICIgKCVkIHggJWQsIHN0cmlkZSAlZCksIGZvcm1hdCAlcyIsIHNpemUsIHdpZHRoLCBoZWlnaHQsCiAgICAgICBzdHJpZGUsIGdzdF93bF9zaG1fZm9ybWF0X3RvX3N0cmluZyAoZm9ybWF0KSk7CiAKLSAgd2xfcG9vbCA9IHdsX3NobV9jcmVhdGVfcG9vbCAoZGlzcGxheS0+c2htLCBzaG1fbWVtLT5mZCwgbWVtLT5zaXplKTsKKyAgd2xfcG9vbCA9IHdsX3NobV9jcmVhdGVfcG9vbCAoZGlzcGxheS0+c2htLCBnc3RfZmRfbWVtb3J5X2dldF9mZCAobWVtKSwKKyAgICAgIG1lbS0+c2l6ZSk7CiAgIHdidWZmZXIgPSB3bF9zaG1fcG9vbF9jcmVhdGVfYnVmZmVyICh3bF9wb29sLCAwLCB3aWR0aCwgaGVpZ2h0LCBzdHJpZGUsCiAgICAgICBmb3JtYXQpOwotCi0gIGNsb3NlIChzaG1fbWVtLT5mZCk7Ci0gIHNobV9tZW0tPmZkID0gLTE7CiAgIHdsX3NobV9wb29sX2Rlc3Ryb3kgKHdsX3Bvb2wpOwogCiAgIHJldHVybiB3YnVmZmVyOwpkaWZmIC0tZ2l0IGEvZXh0L3dheWxhbmQvd2xzaG1hbGxvY2F0b3IuaCBiL2V4dC93YXlsYW5kL3dsc2htYWxsb2NhdG9yLmgKaW5kZXggZjEyODgyYy4uMDdhZTE3ZiAxMDA2NDQKLS0tIGEvZXh0L3dheWxhbmQvd2xzaG1hbGxvY2F0b3IuaAorKysgYi9leHQvd2F5bGFuZC93bHNobWFsbG9jYXRvci5oCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIF9fR1NUX1dMX1NITV9BTExPQ0FUT1JfSF9fCiAKICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKyNpbmNsdWRlIDxnc3QvYWxsb2NhdG9ycy9hbGxvY2F0b3JzLmg+CiAjaW5jbHVkZSA8d2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaD4KICNpbmNsdWRlICJ3bGRpc3BsYXkuaCIKIApAQCAtMzgsMjYgKzM5LDE3IEBACiAKICNkZWZpbmUgR1NUX0FMTE9DQVRPUl9XTF9TSE0gIndsX3NobSIKIAotdHlwZWRlZiBzdHJ1Y3QgX0dzdFdsU2htTWVtb3J5IEdzdFdsU2htTWVtb3J5OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdFdsU2htQWxsb2NhdG9yIEdzdFdsU2htQWxsb2NhdG9yOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdFdsU2htQWxsb2NhdG9yQ2xhc3MgR3N0V2xTaG1BbGxvY2F0b3JDbGFzczsKIAotc3RydWN0IF9Hc3RXbFNobU1lbW9yeQotewotICBHc3RNZW1vcnkgcGFyZW50OwotCi0gIGdwb2ludGVyIGRhdGE7Ci0gIGdpbnQgZmQ7Ci19OwotCiBzdHJ1Y3QgX0dzdFdsU2htQWxsb2NhdG9yCiB7Ci0gIEdzdEFsbG9jYXRvciBwYXJlbnRfaW5zdGFuY2U7CisgIEdzdEZkQWxsb2NhdG9yIHBhcmVudF9pbnN0YW5jZTsKIH07CiAKIHN0cnVjdCBfR3N0V2xTaG1BbGxvY2F0b3JDbGFzcwogewotICBHc3RBbGxvY2F0b3JDbGFzcyBwYXJlbnRfY2xhc3M7CisgIEdzdEZkQWxsb2NhdG9yQ2xhc3MgcGFyZW50X2NsYXNzOwogfTsKIAogR1R5cGUgZ3N0X3dsX3NobV9hbGxvY2F0b3JfZ2V0X3R5cGUgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZXh0L3dheWxhbmQvd2x3aW5kb3cuYyBiL2V4dC93YXlsYW5kL3dsd2luZG93LmMKaW5kZXggYTk2NDMzNS4uNzkwMDBhZSAxMDA2NDQKLS0tIGEvZXh0L3dheWxhbmQvd2x3aW5kb3cuYworKysgYi9leHQvd2F5bGFuZC93bHdpbmRvdy5jCkBAIC0yMzgsMTIgKzIzOCwxNSBAQAogZ3N0X3dsX3dpbmRvd19yZXNpemVfdmlkZW9fc3VyZmFjZSAoR3N0V2xXaW5kb3cgKiB3aW5kb3csIGdib29sZWFuIGNvbW1pdCkKIHsKICAgR3N0VmlkZW9SZWN0YW5nbGUgc3JjID0geyAwLCB9OworICBHc3RWaWRlb1JlY3RhbmdsZSBkc3QgPSB7IDAsIH07CiAgIEdzdFZpZGVvUmVjdGFuZ2xlIHJlczsKIAogICAvKiBjZW50ZXIgdGhlIHZpZGVvX3N1YnN1cmZhY2UgaW5zaWRlIGFyZWFfc3Vic3VyZmFjZSAqLwogICBzcmMudyA9IHdpbmRvdy0+dmlkZW9fd2lkdGg7CiAgIHNyYy5oID0gd2luZG93LT52aWRlb19oZWlnaHQ7Ci0gIGdzdF92aWRlb19zaW5rX2NlbnRlcl9yZWN0IChzcmMsIHdpbmRvdy0+cmVuZGVyX3JlY3RhbmdsZSwgJnJlcywgVFJVRSk7CisgIGRzdC53ID0gd2luZG93LT5yZW5kZXJfcmVjdGFuZ2xlLnc7CisgIGRzdC5oID0gd2luZG93LT5yZW5kZXJfcmVjdGFuZ2xlLmg7CisgIGdzdF92aWRlb19zaW5rX2NlbnRlcl9yZWN0IChzcmMsIGRzdCwgJnJlcywgVFJVRSk7CiAKICAgd2xfc3Vic3VyZmFjZV9zZXRfcG9zaXRpb24gKHdpbmRvdy0+dmlkZW9fc3Vic3VyZmFjZSwgcmVzLngsIHJlcy55KTsKICAgd2xfdmlld3BvcnRfc2V0X2Rlc3RpbmF0aW9uICh3aW5kb3ctPnZpZGVvX3ZpZXdwb3J0LCByZXMudywgcmVzLmgpOwpkaWZmIC0tZ2l0IGEvZXh0L3dlYnAvTWFrZWZpbGUuaW4gYi9leHQvd2VicC9NYWtlZmlsZS5pbgppbmRleCAyNTk5ODhkLi5mNjRiOTEzIDEwMDY0NAotLS0gYS9leHQvd2VicC9NYWtlZmlsZS5pbgorKysgYi9leHQvd2VicC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC94MjY1L01ha2VmaWxlLmluIGIvZXh0L3gyNjUvTWFrZWZpbGUuaW4KaW5kZXggM2JmZmRkMy4uYmU2ZjJkMiAxMDA2NDQKLS0tIGEvZXh0L3gyNjUvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3gyNjUvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQveDI2NS9nc3R4MjY1ZW5jLmggYi9leHQveDI2NS9nc3R4MjY1ZW5jLmgKaW5kZXggNThiYTdjMC4uNjZhODEzNSAxMDA2NDQKLS0tIGEvZXh0L3gyNjUvZ3N0eDI2NWVuYy5oCisrKyBiL2V4dC94MjY1L2dzdHgyNjVlbmMuaApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9lbmNvZGVyLmg+Ci0jaW5jbHVkZSAiX3N0ZGludC5oIgogI2luY2x1ZGUgPHgyNjUuaD4KIAogR19CRUdJTl9ERUNMUwpkaWZmIC0tZ2l0IGEvZXh0L3h2aWQvTWFrZWZpbGUuaW4gYi9leHQveHZpZC9NYWtlZmlsZS5pbgppbmRleCAwMTE2MTllLi5kNGMxMjBkIDEwMDY0NAotLS0gYS9leHQveHZpZC9NYWtlZmlsZS5pbgorKysgYi9leHQveHZpZC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC96YmFyL01ha2VmaWxlLmluIGIvZXh0L3piYXIvTWFrZWZpbGUuaW4KaW5kZXggNjEwODFmOC4uZjUyNDU3NCAxMDA2NDQKLS0tIGEvZXh0L3piYXIvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3piYXIvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvemJhci9nc3R6YmFyLmMgYi9leHQvemJhci9nc3R6YmFyLmMKaW5kZXggMmJiMGE3ZC4uNjJmYjEwNiAxMDA2NDQKLS0tIGEvZXh0L3piYXIvZ3N0emJhci5jCisrKyBiL2V4dC96YmFyL2dzdHpiYXIuYwpAQCAtNzEsMTAgKzcxLDEwIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLW0gdjRsMnNyYyAhIHZpZGVvY29udmVydCAhIHpiYXIgISB2aWRlb2NvbnZlcnQgISB4dmltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgLW0gdjRsMnNyYyAhIHZpZGVvY29udmVydCAhIHpiYXIgISB2aWRlb2NvbnZlcnQgISB4dmltYWdlc2luawogICogXXwgVGhpcyBwaXBlbGluZSB3aWxsIGRldGVjdCBiYXJjb2RlcyBhbmQgc2VuZCB0aGVtIGFzIG1lc3NhZ2VzLgogICogfFsKLSAqIGdzdC1sYXVuY2ggLW0gdjRsMnNyYyAhIHRlZSBuYW1lPXQgISBxdWV1ZSAhIHZpZGVvY29udmVydCAhIHpiYXIgISBmYWtlc2luayB0LiAhIHF1ZXVlICEgeHZpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC1tIHY0bDJzcmMgISB0ZWUgbmFtZT10ICEgcXVldWUgISB2aWRlb2NvbnZlcnQgISB6YmFyICEgZmFrZXNpbmsgdC4gISBxdWV1ZSAhIHh2aW1hZ2VzaW5rCiAgKiBdfCBTYW1lIGFzIGFib3ZlLCBidXQgcnVubmluZyB0aGUgZmlsdGVyIG9uIGEgYnJhbmNoIHRvIGtlZXAgdGhlIGRpc3BsYXkgaW4gY29sb3IKICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL01ha2VmaWxlLmluIGIvZ3N0LWxpYnMvTWFrZWZpbGUuaW4KaW5kZXggYzVlNTczYi4uYTM3ZmQyMiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvTWFrZWZpbGUuaW4KQEAgLTExNCwxNiArMTE0LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNDgsNiArMjQ3LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODUsNiArMjg2LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTMsNyArMjk2LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzEyLDggKzMxNCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMzAsMTYgKzMzMywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjUsNiArMzY5LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzkwLDYgKzM5Niw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ5MSw2ICs0OTksNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTA0LDggKzUxMyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUyMSw2ICs1MjgsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTc4LDE2ICs1ODcsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzksNiArNjUwLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0OSw2ICs2NjEsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTgsNiArNjcxLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5NSw3ICs3MTAsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9NYWtlZmlsZS5hbQppbmRleCBhNzM4MGY4Li43ZDBiMzA5IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvTWFrZWZpbGUuYW0KKysrIGIvZ3N0LWxpYnMvZ3N0L01ha2VmaWxlLmFtCkBAIC0xMSwyMCArMTEsMjAgQEAKIGVuZGlmCiAKIFNVQkRJUlMgPSB1cmlkb3dubG9hZGVyIGFkYXB0aXZlZGVtdXggaW50ZXJmYWNlcyBiYXNlY2FtZXJhYmluc3JjIGNvZGVjcGFyc2VycyBcCi0JIGluc2VydGJpbiBtcGVndHMgYmFzZSB2aWRlbyAkKEdMX0RJUikgJChXQVlMQU5EX0RJUikKKwkgaW5zZXJ0YmluIG1wZWd0cyBiYXNlIHZpZGVvIGF1ZGlvIHBsYXllciAkKEdMX0RJUikgJChXQVlMQU5EX0RJUikKIAogbm9pbnN0X0hFQURFUlMgPSBnc3QtaTE4bi1wbHVnaW4uaCBnZXR0ZXh0LmggZ2xpYi1jb21wYXQtcHJpdmF0ZS5oCiBESVNUX1NVQkRJUlMgPSB1cmlkb3dubG9hZGVyIGFkYXB0aXZlZGVtdXggaW50ZXJmYWNlcyBnbCBiYXNlY2FtZXJhYmluc3JjIFwKLQljb2RlY3BhcnNlcnMgaW5zZXJ0YmluIG1wZWd0cyB3YXlsYW5kIGJhc2UgdmlkZW8KKwljb2RlY3BhcnNlcnMgaW5zZXJ0YmluIG1wZWd0cyB3YXlsYW5kIGJhc2UgdmlkZW8gYXVkaW8gcGxheWVyCiAKICNkZXBlbmRlbmNpZXMKLXZpZGVvOiBiYXNlCit2aWRlbywgYXVkaW86IGJhc2UKIAogYWRhcHRpdmVkZW11eDogdXJpZG93bmxvYWRlcgogCiBJTkRFUEVOREVOVF9TVUJESVJTID0gXAogCWludGVyZmFjZXMgYmFzZWNhbWVyYWJpbnNyYyBjb2RlY3BhcnNlcnMgaW5zZXJ0YmluIHVyaWRvd25sb2FkZXIgXAotCW1wZWd0cyBiYXNlICQoR0xfRElSKSAkKFdBWUxBTkRfRElSKQorCW1wZWd0cyBiYXNlIHBsYXllciAkKEdMX0RJUikgJChXQVlMQU5EX0RJUikKIAogLlBIT05ZOiBpbmRlcGVuZGVudC1zdWJkaXJzICQoSU5ERVBFTkRFTlRfU1VCRElSUykKIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L01ha2VmaWxlLmluIGIvZ3N0LWxpYnMvZ3N0L01ha2VmaWxlLmluCmluZGV4IDFkOGE3YWUuLjMxMjlkYzcgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjUwLDYgKzI0OSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjg3LDYgKzI4OCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjk1LDcgKzI5OCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxNCw4ICszMTYsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzMyLDE2ICszMzUsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzY3LDYgKzM3MSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM5Miw2ICszOTgsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTMsNiArNTAxLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwNiw4ICs1MTUsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjMsNiArNTMwLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU4MCwxNiArNTg5LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjQxLDYgKzY1Miw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NTEsNiArNjYzLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjYwLDYgKzY3Myw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTcsNyArNzEyLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NDEsMTUgKzc1NSwxNSBAQAogQFVTRV9PUEVOR0xfVFJVRUBHTF9ESVIgPSBnbAogQFVTRV9XQVlMQU5EX1RSVUVAV0FZTEFORF9ESVIgPSB3YXlsYW5kCiBTVUJESVJTID0gdXJpZG93bmxvYWRlciBhZGFwdGl2ZWRlbXV4IGludGVyZmFjZXMgYmFzZWNhbWVyYWJpbnNyYyBjb2RlY3BhcnNlcnMgXAotCSBpbnNlcnRiaW4gbXBlZ3RzIGJhc2UgdmlkZW8gJChHTF9ESVIpICQoV0FZTEFORF9ESVIpCisJIGluc2VydGJpbiBtcGVndHMgYmFzZSB2aWRlbyBhdWRpbyBwbGF5ZXIgJChHTF9ESVIpICQoV0FZTEFORF9ESVIpCiAKIG5vaW5zdF9IRUFERVJTID0gZ3N0LWkxOG4tcGx1Z2luLmggZ2V0dGV4dC5oIGdsaWItY29tcGF0LXByaXZhdGUuaAogRElTVF9TVUJESVJTID0gdXJpZG93bmxvYWRlciBhZGFwdGl2ZWRlbXV4IGludGVyZmFjZXMgZ2wgYmFzZWNhbWVyYWJpbnNyYyBcCi0JY29kZWNwYXJzZXJzIGluc2VydGJpbiBtcGVndHMgd2F5bGFuZCBiYXNlIHZpZGVvCisJY29kZWNwYXJzZXJzIGluc2VydGJpbiBtcGVndHMgd2F5bGFuZCBiYXNlIHZpZGVvIGF1ZGlvIHBsYXllcgogCiBJTkRFUEVOREVOVF9TVUJESVJTID0gXAogCWludGVyZmFjZXMgYmFzZWNhbWVyYWJpbnNyYyBjb2RlY3BhcnNlcnMgaW5zZXJ0YmluIHVyaWRvd25sb2FkZXIgXAotCW1wZWd0cyBiYXNlICQoR0xfRElSKSAkKFdBWUxBTkRfRElSKQorCW1wZWd0cyBiYXNlIHBsYXllciAkKEdMX0RJUikgJChXQVlMQU5EX0RJUikKIAogYWxsOiBhbGwtcmVjdXJzaXZlCiAKQEAgLTEwNjQsNyArMTA3OCw3IEBACiAKIAogI2RlcGVuZGVuY2llcwotdmlkZW86IGJhc2UKK3ZpZGVvLCBhdWRpbzogYmFzZQogCiBhZGFwdGl2ZWRlbXV4OiB1cmlkb3dubG9hZGVyCiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L01ha2VmaWxlLmluIGIvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvTWFrZWZpbGUuaW4KaW5kZXggMDAxZDhiNS4uODcxOTg4MyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc4LDYgKzI3Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE1LDYgKzMxNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIzLDcgKzMyNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Miw4ICszNDQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYwLDE2ICszNjMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk1LDYgKzM5OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMCw2ICs0MjYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjEsNiArNTI5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNCw4ICs1NDMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTEsNiArNTU4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOCwxNiArNjE3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY5LDYgKzY4MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzksNiArNjkxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg4LDYgKzcwMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjUsNyArNzQwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmMgYi9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmMKaW5kZXggOWY3NGM2NS4uZGZlN2JhNyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jCisrKyBiL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYwpAQCAtNjgsNiArNjgsNTMgQEAKICAqIGluZm9ybWF0aW9uLgogICovCiAKKy8qCitNVCBzYWZldHkuCitUaGUgZm9sbG93aW5nIHJ1bGVzIHdlcmUgb2JzZXJ2ZWQgd2hpbGUgaW1wbGVtZW50aW5nIE1UIHNhZmV0eSBpbiBhZGFwdGl2ZSBkZW11eDoKKzEuIElmIGEgdmFyaWFibGUgaXMgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGFuZCBhdCBsZWFzdCBvbmUgdGhyZWFkCit3cml0ZXMgdG8gaXQsIHRoZW4gYWxsIHRoZSBhY2Nlc3NlcyBuZWVkcyB0byBiZSBkb25lIGZyb20gaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbi4KKzIuIElmIHRocmVhZCBBIHdhbnRzIHRvIGpvaW4gdGhyZWFkIEIgdGhlbiBhdCB0aGUgbW9tZW50IGl0IGNhbGxzIGdzdF90YXNrX2pvaW4KK2l0IG11c3Qgbm90IGhvbGQgYW55IG11dGV4ZXMgdGhhdCB0aHJlYWQgQiBtaWdodCB0YWtlLgorCitBZGFwdGl2ZSBkZW11eCBBUEkgY2FuIGJlIGNhbGxlZCBmcm9tIHNldmVyYWwgdGhyZWFkcy4gTW9yZSwgYWRhcHRpdmUgZGVtdXgKK3N0YXJ0cyBzb21lIHRocmVhZHMgdG8gbW9uaXRvciB0aGUgZG93bmxvYWQgb2YgZnJhZ21lbnRzLiBJbiBvcmRlciB0byBwcm90ZWN0CithY2Nlc3NlcyB0byBzaGFyZWQgdmFyaWFibGVzIChkZW11eCBhbmQgc3RyZWFtcykgYWxsIHRoZSBBUEkgZnVuY3Rpb25zIHRoYXQKK2NhbiBiZSBydW4gaW4gZGlmZmVyZW50IHRocmVhZHMgd2lsbCBuZWVkIHRvIGdldCBhIG11dGV4IChtYW5pZmVzdF9sb2NrKQord2hlbiB0aGV5IHN0YXJ0IGFuZCByZWxlYXNlIGl0IHdoZW4gdGhleSBlbmQuIEJlY2F1c2Ugc29tZSBvZiB0aG9zZSBmdW5jdGlvbnMKK2NhbiBpbmRpcmVjdGx5IGNhbGwgb3RoZXIgQVBJIGZ1bmN0aW9ucyAoZWcgdGhleSBjYW4gZ2VuZXJhdGUgZXZlbnRzIG9yIG1lc3NhZ2VzCit0aGF0IGFyZSBwcm9jZXNzZWQgaW4gdGhlIHNhbWUgdGhyZWFkKSB0aGUgbWFuaWZlc3RfbG9jayBtdXN0IGJlIHJlY3Vyc2l2ZS4KKworVGhlIG1hbmlmZXN0X2xvY2sgd2lsbCBzZXJpYWxpemUgdGhlIHB1YmxpYyBBUEkgbWFraW5nIGFjY2VzcyB0byBzaGFyZWQKK3ZhcmlhYmxlcyBzYWZlLiBCdXQgc29tZSBvZiB0aGVzZSBmdW5jdGlvbnMgd2lsbCB0cnkgYXQgc29tZSBtb21lbnQgdG8gam9pbgordGhyZWFkcyBjcmVhdGVkIGJ5IGFkYXB0aXZlIGRlbXV4LCBvciB0byBjaGFuZ2UgdGhlIHN0YXRlIG9mIHNyYyBlbGVtZW50cworKHdoaWNoIHdpbGwgYmxvY2sgdHJ5aW5nIHRvIGpvaW4gdGhlIHNyYyBlbGVtZW50IHN0cmVhbWluZyB0aHJlYWQpLiBCZWNhdXNlCitvZiBydWxlIDIsIHRob3NlIGZ1bmN0aW9ucyB3aWxsIG5lZWQgdG8gcmVsZWFzZSB0aGUgbWFuaWZlc3RfbG9jayBkdXJpbmcgdGhlCitjYWxsIG9mIGdzdF90YXNrX2pvaW4uIER1cmluZyB0aGlzIHRpbWUgdGhleSBjYW4gYmUgaW50ZXJydXB0ZWQgYnkgb3RoZXIgQVBJIGNhbGxzLgorRm9yIGV4YW1wbGUsIGR1cmluZyB0aGUgcHJlY2Vzc2luZyBvZiBhIHNlZWsgZXZlbnQsIGdzdF9hZGFwdGl2ZV9kZW11eF9zdG9wX3Rhc2tzCitpcyBjYWxsZWQgYW5kIHRoaXMgd2lsbCBqb2luIGFsbCB0aHJlYWRzLiBJbiBvcmRlciB0byBwcmV2ZW50IGludGVycnVwdGlvbnMKK2R1cmluZyBzdWNoIHBlcmlvZCwgYWxsIHRoZSBBUEkgZnVuY3Rpb25zIHdpbGwgYWxzbyB1c2UgYSBzZWNvbmQgbG9jazogYXBpX2xvY2suCitUaGlzIHdpbGwgYmUgdGFrZW4gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZnVuY3Rpb24gYW5kIHJlbGVhc2VkIGF0IHRoZSBlbmQsCitidXQgdGhpcyB0aW1lIHRoaXMgbG9jayB3aWxsIG5vdCBiZSB0ZW1wb3JhcmlseSByZWxlYXNlZCBkdXJpbmcgam9pbi4KK1RoaXMgbG9jayB3aWxsIGJlIHVzZWQgb25seSBieSBBUEkgY2FsbHMgKG5vdCBieSBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2Rvd25sb2FkX2xvb3AKK29yIGdzdF9hZGFwdGl2ZV9kZW11eF91cGRhdGVzX2xvb3Agb3IgX3NyY19jaGFpbiBvciBfc3JjX2V2ZW50KSBzbyBpdCBpcyBzYWZlCit0byBob2xkIGl0IHdoaWxlIGpvaW5pbmcgdGhlIHRocmVhZHMgb3IgY2hhbmdpbmcgdGhlIHNyYyBlbGVtZW50IHN0YXRlLiBUaGUKK2FwaV9sb2NrIHdpbGwgc2VyaWFsaXNlIGFsbCBleHRlcm5hbCByZXF1ZXN0cyB0byBhZGFwdGl2ZSBkZW11eC4gSW4gb3JkZXIgdG8KK2F2b2lkIGRlYWRsb2NrcywgaWYgYSBmdW5jdGlvbiBuZWVkcyB0byBhY3F1aXJlIGJvdGggbWFuaWZlc3QgYW5kIGFwaSBsb2NrcywKK3RoZSBhcGlfbG9jayB3aWxsIGJlIHRha2VuIGZpcnN0IGFuZCB0aGUgbWFuaWZlc3RfbG9jayBzZWNvbmQuCisKK0J5IHVzaW5nIHRoZSBhcGlfbG9jayBhIHRocmVhZCBpcyBwcm90ZWN0ZWQgYWdhaW5zdCBvdGhlciBBUEkgY2FsbHMuIEJ1dCB3aGVuCit0ZW1wb3JhcmlseSBkcm9wcGluZyB0aGUgbWFuaWZlc3RfbG9jaywgaXQgd2lsbCBiZSB2dWxuZXJhYmxlIHRvIGNoYW5nZXMgZnJvbQordGhyZWFkcyB0aGF0IHVzZSBvbmx5IHRoZSBtYW5pZmVzdF9sb2NrIGFuZCBub3QgdGhlIGFwaV9sb2NrLiBUaGVzZSB0aHJlYWRzIHJ1bgorb25lIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2Rvd25sb2FkX2xvb3AsCitnc3RfYWRhcHRpdmVfZGVtdXhfdXBkYXRlc19sb29wLCBfc3JjX2NoYWluLCBfc3JjX2V2ZW50LiBJbiBvcmRlciB0byBndWFyYW50ZWUKK3RoYXQgYWxsIG9wZXJhdGlvbnMgZHVyaW5nIGFuIEFQSSBjYWxsIGFyZSBub3QgaW1wYWN0ZWQgYnkgb3RoZXIgd3JpdGVzLCB0aGUKK2Fib3ZlIG1lbnRpb25lZCBmdW5jdGlvbnMgbXVzdCBjaGVjayBhIGNhbmNlbGxlZCBmbGFnIGV2ZXJ5IHRpbWUgdGhleSByZWFjcXVpcmUKK3RoZSBtYW5pZmVzdF9sb2NrLiBJZiB0aGUgZmxhZyBpcyBzZXQsIHRoZXkgbXVzdCBleGl0IGltbWVkaWF0ZWx5LCB3aXRob3V0CitwZXJmb3JtaW5nIGFueSBjaGFuZ2VzIG9uIHRoZSBzaGFyZWQgZGF0YS4gSW4gdGhpcyB3YXksIGFuIEFQSSBjYWxsIChlZyBzZWVrCityZXF1ZXN0KSBjYW4gc2V0IHRoZSBjYW5jZWwgZmxhZyBiZWZvcmUgcmVsZWFzaW5nIHRoZSBtYW5pZmVzdF9sb2NrIGFuZCBiZSBzdXJlCit0aGF0IHRoZSBkZW11eCBvYmplY3QgYW5kIGl0cyBzdHJlYW1zIGFyZSBub3QgY2hhbmdlZCBieSBhbnlib2R5IGVsc2UuCisqLworCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2VuZGlmCkBAIC04NSwxNCArMTMyLDI2IEBACiAKICNkZWZpbmUgTUFYX0RPV05MT0FEX0VSUk9SX0NPVU5UIDMKICNkZWZpbmUgREVGQVVMVF9GQUlMRURfQ09VTlQgMwotI2RlZmluZSBERUZBVUxUX0xPT0tCQUNLX0ZSQUdNRU5UUyAzCiAjZGVmaW5lIERFRkFVTFRfQ09OTkVDVElPTl9TUEVFRCAwCiAjZGVmaW5lIERFRkFVTFRfQklUUkFURV9MSU1JVCAwLjgKKyNkZWZpbmUgU1JDX1FVRVVFX01BWF9CWVRFUyAyMCAqIDEwMjQgKiAxMDI0ICAgIC8qIEZvciBzYWZldHkuIExhcmdlIGVub3VnaCB0byBob2xkIGEgc2VnbWVudC4gKi8KKyNkZWZpbmUgTlVNX0xPT0tCQUNLX0ZSQUdNRU5UUyAzCisKKyNkZWZpbmUgR1NUX01BTklGRVNUX0dFVF9MT0NLKGQpICgmKEdTVF9BREFQVElWRV9ERU1VWF9DQVNUKGQpLT5wcml2LT5tYW5pZmVzdF9sb2NrKSkKKyNkZWZpbmUgR1NUX01BTklGRVNUX0xPQ0soZCkgZ19yZWNfbXV0ZXhfbG9jayAoR1NUX01BTklGRVNUX0dFVF9MT0NLIChkKSk7CisjZGVmaW5lIEdTVF9NQU5JRkVTVF9VTkxPQ0soZCkgZ19yZWNfbXV0ZXhfdW5sb2NrIChHU1RfTUFOSUZFU1RfR0VUX0xPQ0sgKGQpKTsKKworI2RlZmluZSBHU1RfQVBJX0dFVF9MT0NLKGQpICgmKEdTVF9BREFQVElWRV9ERU1VWF9DQVNUKGQpLT5wcml2LT5hcGlfbG9jaykpCisjZGVmaW5lIEdTVF9BUElfTE9DSyhkKSAgIGdfbXV0ZXhfbG9jayAoR1NUX0FQSV9HRVRfTE9DSyAoZCkpOworI2RlZmluZSBHU1RfQVBJX1VOTE9DSyhkKSBnX211dGV4X3VubG9jayAoR1NUX0FQSV9HRVRfTE9DSyAoZCkpOworCisjZGVmaW5lIEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX0dFVF9MT0NLKGQpICgmR1NUX0FEQVBUSVZFX0RFTVVYX0NBU1QoZCktPnByaXYtPnNlZ21lbnRfbG9jaykKKyNkZWZpbmUgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfTE9DSyhkKSBnX211dGV4X2xvY2sgKEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX0dFVF9MT0NLIChkKSkKKyNkZWZpbmUgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfVU5MT0NLKGQpIGdfbXV0ZXhfdW5sb2NrIChHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9HRVRfTE9DSyAoZCkpCiAKIGVudW0KIHsKICAgUFJPUF8wLAotICBQUk9QX0xPT0tCQUNLX0ZSQUdNRU5UUywKICAgUFJPUF9DT05ORUNUSU9OX1NQRUVELAogICBQUk9QX0JJVFJBVEVfTElNSVQsCiAgIFBST1BfTEFTVApAQCAtMTA1LDI0ICsxNjQsNDEgQEAKIAogc3RydWN0IF9Hc3RBZGFwdGl2ZURlbXV4UHJpdmF0ZQogewotICBHc3RBZGFwdGVyICppbnB1dF9hZGFwdGVyOwotICBnYm9vbGVhbiBoYXZlX21hbmlmZXN0OworICBHc3RBZGFwdGVyICppbnB1dF9hZGFwdGVyOyAgICAvKiBwcm90ZWN0ZWQgYnkgbWFuaWZlc3RfbG9jayAqLworICBnYm9vbGVhbiBoYXZlX21hbmlmZXN0OyAgICAgICAvKiBwcm90ZWN0ZWQgYnkgbWFuaWZlc3RfbG9jayAqLwogCi0gIEdzdFVyaURvd25sb2FkZXIgKmRvd25sb2FkZXI7CisgIEdMaXN0ICpvbGRfc3RyZWFtczsgICAgICAgICAgIC8qIHByb3RlY3RlZCBieSBtYW5pZmVzdF9sb2NrICovCiAKLSAgR0xpc3QgKm9sZF9zdHJlYW1zOwotCi0gIEdzdFRhc2sgKnVwZGF0ZXNfdGFzazsKKyAgR3N0VGFzayAqdXBkYXRlc190YXNrOyAgICAgICAgLyogTVQgc2FmZSAqLwogICBHUmVjTXV0ZXggdXBkYXRlc19sb2NrOwogICBHTXV0ZXggdXBkYXRlc190aW1lZF9sb2NrOwotICBHQ29uZCB1cGRhdGVzX3RpbWVkX2NvbmQ7Ci0gIGdib29sZWFuIHN0b3BfdXBkYXRlc190YXNrOworICBHQ29uZCB1cGRhdGVzX3RpbWVkX2NvbmQ7ICAgICAvKiBwcm90ZWN0ZWQgYnkgdXBkYXRlc190aW1lZF9sb2NrICovCisgIGdib29sZWFuIHN0b3BfdXBkYXRlc190YXNrOyAgIC8qIHByb3RlY3RlZCBieSB1cGRhdGVzX3RpbWVkX2xvY2sgKi8KKworICAvKiB1c2VkIG9ubHkgZnJvbSB1cGRhdGVzX3Rhc2ssIG5vIG5lZWQgdG8gcHJvdGVjdCBpdCAqLwogICBnaW50IHVwZGF0ZV9mYWlsZWRfY291bnQ7CiAKLSAgZ2ludDY0IG5leHRfdXBkYXRlOworICBndWludDMyIHNlZ21lbnRfc2VxbnVtOyAgICAgICAvKiBwcm90ZWN0ZWQgYnkgbWFuaWZlc3RfbG9jayAqLwogCi0gIGdib29sZWFuIGV4cG9zaW5nOwotICBndWludDMyIHNlZ21lbnRfc2VxbnVtOworICAvKiBtYWluIGxvY2sgdXNlZCB0byBwcm90ZWN0IGFkYXB0aXZlIGRlbXV4IGFuZCBhbGwgaXRzIHN0cmVhbXMuCisgICAqIEl0IHNlcmlhbGl6ZXMgdGhlIGFkYXB0aXZlIGRlbXV4IHB1YmxpYyBBUEkuCisgICAqLworICBHUmVjTXV0ZXggbWFuaWZlc3RfbG9jazsKKworICAvKiBjb25kaXRpb24gdG8gd2FpdCBmb3IgbWFuaWZlc3QgdXBkYXRlcyBvbiBhIGxpdmUgc3RyZWFtLgorICAgKiBJbiBvcmRlciB0byBzaWduYWwgdGhlIG1hbmlmZXN0X2NvbmQsIHRoZSBjYWxsZXIgbmVlZHMgdG8gaG9sZCBib3RoCisgICAqIG1hbmlmZXN0X2xvY2sgYW5kIG1hbmlmZXN0X3VwZGF0ZV9sb2NrICh0YWtlbiBpbiB0aGlzIG9yZGVyKQorICAgKi8KKyAgR0NvbmQgbWFuaWZlc3RfY29uZDsKKyAgR011dGV4IG1hbmlmZXN0X3VwZGF0ZV9sb2NrOworCisgIEdNdXRleCBhcGlfbG9jazsKKworICAvKiBQcm90ZWN0cyBkZW11eCBhbmQgc3RyZWFtIHNlZ21lbnQgaW5mb3JtYXRpb24KKyAgICogTmVlZGVkIGJlY2F1c2Ugc2Vla3MgY2FuIHVwZGF0ZSBzZWdtZW50IGluZm9ybWF0aW9uCisgICAqIHdpdGhvdXQgbmVlZGluZyB0byBzdG9wIHRhc2tzIHdoZW4gdGhleSBqdXN0IHdhbnQgdG8KKyAgICogdXBkYXRlIHRoZSBzZWdtZW50IGJvdW5kYXJpZXMgKi8KKyAgR011dGV4IHNlZ21lbnRfbG9jazsKIH07CiAKIHN0YXRpYyBHc3RCaW5DbGFzcyAqcGFyZW50X2NsYXNzID0gTlVMTDsKQEAgLTE1NSw3ICsyMzEsOCBAQAogICAgIGdib29sZWFuIGZpcnN0X2FuZF9saXZlKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfYWRhcHRpdmVfZGVtdXhfaXNfbGl2ZSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fc2VlayAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAotICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIEdzdENsb2NrVGltZSB0cyk7CisgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgZ2Jvb2xlYW4gZm9yd2FyZCwgR3N0U2Vla0ZsYWdzIGZsYWdzLAorICAgIEdzdENsb2NrVGltZSB0cywgR3N0Q2xvY2tUaW1lICogZmluYWxfdHMpOwogc3RhdGljIGdib29sZWFuIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1faGFzX25leHRfZnJhZ21lbnQgKEdzdEFkYXB0aXZlRGVtdXggKgogICAgIGRlbXV4LCBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3NlbGVjdF9iaXRyYXRlIChHc3RBZGFwdGl2ZURlbXV4ICoKQEAgLTE3Nyw4ICsyNTQsNiBAQAogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fcHVzaF9ldmVudCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwKICAgICBHc3RFdmVudCAqIGV2ZW50KTsKLXN0YXRpYyB2b2lkIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZG93bmxvYWRfd2FpdCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqCi0gICAgc3RyZWFtLCBHc3RDbG9ja1RpbWUgdGltZV9kaWZmKTsKIAogc3RhdGljIHZvaWQgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0YXJ0X3Rhc2tzIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpOwogc3RhdGljIHZvaWQgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0b3BfdGFza3MgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCk7CkBAIC0xOTMsNiArMjY4LDkgQEAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2ZpbmlzaF9mcmFnbWVudF9kZWZhdWx0IChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCiAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSk7CitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9hZHZhbmNlX2ZyYWdtZW50X3VubG9ja2VkIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCisgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uKTsKIAogCiAvKiB3ZSBjYW4ndCB1c2UgR19ERUZJTkVfQUJTVFJBQ1RfVFlQRSBiZWNhdXNlIHdlIG5lZWQgdGhlIGtsYXNzIGluIHRoZSBfaW5pdApAQCAtMjI5LDEwICszMDcsMTAgQEAKIHsKICAgR3N0QWRhcHRpdmVEZW11eCAqZGVtdXggPSBHU1RfQURBUFRJVkVfREVNVVggKG9iamVjdCk7CiAKKyAgR1NUX0FQSV9MT0NLIChkZW11eCk7CisgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKICAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX0xPT0tCQUNLX0ZSQUdNRU5UUzoKLSAgICAgIGRlbXV4LT5udW1fbG9va2JhY2tfZnJhZ21lbnRzID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOwotICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0NPTk5FQ1RJT05fU1BFRUQ6CiAgICAgICBkZW11eC0+Y29ubmVjdGlvbl9zcGVlZCA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKSAqIDEwMDA7CiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIkNvbm5lY3Rpb24gc3BlZWQgc2V0IHRvICV1IiwKQEAgLTI0NSw2ICszMjMsOSBAQAogICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgIGJyZWFrOwogICB9CisKKyAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICBHU1RfQVBJX1VOTE9DSyAoZGVtdXgpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjUzLDEwICszMzQsOSBAQAogewogICBHc3RBZGFwdGl2ZURlbXV4ICpkZW11eCA9IEdTVF9BREFQVElWRV9ERU1VWCAob2JqZWN0KTsKIAorICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCiAgIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9MT09LQkFDS19GUkFHTUVOVFM6Ci0gICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgZGVtdXgtPm51bV9sb29rYmFja19mcmFnbWVudHMpOwotICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX0NPTk5FQ1RJT05fU1BFRUQ6CiAgICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgZGVtdXgtPmNvbm5lY3Rpb25fc3BlZWQgLyAxMDAwKTsKICAgICAgIGJyZWFrOwpAQCAtMjY3LDYgKzM0Nyw4IEBACiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CiAgIH0KKworICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yOTAsMTMgKzM3Miw2IEBACiAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9hZGFwdGl2ZV9kZW11eF9nZXRfcHJvcGVydHk7CiAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X2FkYXB0aXZlX2RlbXV4X2ZpbmFsaXplOwogCi0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTE9PS0JBQ0tfRlJBR01FTlRTLAotICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJudW0tbG9va2JhY2stZnJhZ21lbnRzIiwKLSAgICAgICAgICAiTnVtYmVyIG9mIGZyYWdtZW50cyB0byBsb29rIGJhY2siLAotICAgICAgICAgICJUaGUgbnVtYmVyIG9mIGZyYWdtZW50cyB0aGUgZGVtdXhlciB3aWxsIGxvb2sgYmFjayB0byBjYWxjdWxhdGUgYW4gYXZlcmFnZSBiaXRyYXRlIiwKLSAgICAgICAgICAxLCBHX01BWFVJTlQsIERFRkFVTFRfTE9PS0JBQ0tfRlJBR01FTlRTLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkpKTsKLQogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0NPTk5FQ1RJT05fU1BFRUQsCiAgICAgICBnX3BhcmFtX3NwZWNfdWludCAoImNvbm5lY3Rpb24tc3BlZWQiLCAiQ29ubmVjdGlvbiBTcGVlZCIsCiAgICAgICAgICAgIk5ldHdvcmsgY29ubmVjdGlvbiBzcGVlZCBpbiBrYnBzICgwID0gY2FsY3VsYXRlIGZyb20gZG93bmxvYWRlZCIKQEAgLTMyNSw3ICs0MDAsNiBAQAogICAgIEdzdEFkYXB0aXZlRGVtdXhDbGFzcyAqIGtsYXNzKQogewogICBHc3RQYWRUZW1wbGF0ZSAqcGFkX3RlbXBsYXRlOwotICBHc3RQYWQgKnBhZDsKIAogICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgImdzdF9hZGFwdGl2ZV9kZW11eF9pbml0Iik7CiAKQEAgLTM0OCwyMSArNDIyLDI0IEBACiAgIGdfbXV0ZXhfaW5pdCAoJmRlbXV4LT5wcml2LT51cGRhdGVzX3RpbWVkX2xvY2spOwogICBnX2NvbmRfaW5pdCAoJmRlbXV4LT5wcml2LT51cGRhdGVzX3RpbWVkX2NvbmQpOwogCi0gIGdfY29uZF9pbml0ICgmZGVtdXgtPm1hbmlmZXN0X2NvbmQpOwotICBnX211dGV4X2luaXQgKCZkZW11eC0+bWFuaWZlc3RfbG9jayk7CisgIGdfY29uZF9pbml0ICgmZGVtdXgtPnByaXYtPm1hbmlmZXN0X2NvbmQpOworICBnX211dGV4X2luaXQgKCZkZW11eC0+cHJpdi0+bWFuaWZlc3RfdXBkYXRlX2xvY2spOworCisgIGdfcmVjX211dGV4X2luaXQgKCZkZW11eC0+cHJpdi0+bWFuaWZlc3RfbG9jayk7CisgIGdfbXV0ZXhfaW5pdCAoJmRlbXV4LT5wcml2LT5hcGlfbG9jayk7CisgIGdfbXV0ZXhfaW5pdCAoJmRlbXV4LT5wcml2LT5zZWdtZW50X2xvY2spOwogCiAgIHBhZF90ZW1wbGF0ZSA9CiAgICAgICBnc3RfZWxlbWVudF9jbGFzc19nZXRfcGFkX3RlbXBsYXRlIChHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpLCAic2luayIpOwogICBnX3JldHVybl9pZl9mYWlsIChwYWRfdGVtcGxhdGUgIT0gTlVMTCk7CiAKLSAgZGVtdXgtPnNpbmtwYWQgPSBwYWQgPSBnc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlIChwYWRfdGVtcGxhdGUsICJzaW5rIik7CisgIGRlbXV4LT5zaW5rcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSAocGFkX3RlbXBsYXRlLCAic2luayIpOwogICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoZGVtdXgtPnNpbmtwYWQsCiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2FkYXB0aXZlX2RlbXV4X3NpbmtfZXZlbnQpKTsKICAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKGRlbXV4LT5zaW5rcGFkLAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hZGFwdGl2ZV9kZW11eF9zaW5rX2NoYWluKSk7CiAKICAgLyogUHJvcGVydGllcyAqLwotICBkZW11eC0+bnVtX2xvb2tiYWNrX2ZyYWdtZW50cyA9IERFRkFVTFRfTE9PS0JBQ0tfRlJBR01FTlRTOwogICBkZW11eC0+Yml0cmF0ZV9saW1pdCA9IERFRkFVTFRfQklUUkFURV9MSU1JVDsKICAgZGVtdXgtPmNvbm5lY3Rpb25fc3BlZWQgPSBERUZBVUxUX0NPTk5FQ1RJT05fU1BFRUQ7CiAKQEAgLTM4MiwxMCArNDU5LDEzIEBACiAKICAgZ19tdXRleF9jbGVhciAoJnByaXYtPnVwZGF0ZXNfdGltZWRfbG9jayk7CiAgIGdfY29uZF9jbGVhciAoJnByaXYtPnVwZGF0ZXNfdGltZWRfY29uZCk7Ci0gIGdfY29uZF9jbGVhciAoJmRlbXV4LT5tYW5pZmVzdF9jb25kKTsKKyAgZ19tdXRleF9jbGVhciAoJmRlbXV4LT5wcml2LT5tYW5pZmVzdF91cGRhdGVfbG9jayk7CisgIGdfY29uZF9jbGVhciAoJmRlbXV4LT5wcml2LT5tYW5pZmVzdF9jb25kKTsKICAgZ19vYmplY3RfdW5yZWYgKHByaXYtPnVwZGF0ZXNfdGFzayk7CiAgIGdfcmVjX211dGV4X2NsZWFyICgmcHJpdi0+dXBkYXRlc19sb2NrKTsKLSAgZ19tdXRleF9jbGVhciAoJmRlbXV4LT5tYW5pZmVzdF9sb2NrKTsKKyAgZ19yZWNfbXV0ZXhfY2xlYXIgKCZkZW11eC0+cHJpdi0+bWFuaWZlc3RfbG9jayk7CisgIGdfbXV0ZXhfY2xlYXIgKCZkZW11eC0+cHJpdi0+YXBpX2xvY2spOworICBnX211dGV4X2NsZWFyICgmZGVtdXgtPnByaXYtPnNlZ21lbnRfbG9jayk7CiAKICAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwogfQpAQCAtMzk3LDE2ICs0NzcsMjYgQEAKICAgR3N0QWRhcHRpdmVEZW11eCAqZGVtdXggPSBHU1RfQURBUFRJVkVfREVNVVhfQ0FTVCAoZWxlbWVudCk7CiAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJlc3VsdCA9IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKIAorICBHU1RfQVBJX0xPQ0sgKGRlbXV4KTsKKwogICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZOgorICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKICAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9yZXNldCAoZGVtdXgpOworICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIGJyZWFrOwogICB9CiAKKyAgLyogdGhpcyBtdXN0IGJlIHJ1biB3aXRob3V0IE1BTklGRVNUX0xPQ0sgdGFrZW4uCisgICAqIEZvciBQTEFZSU5HIHRvIFBMQVlJTkcgc3RhdGUgY2hhbmdlcywgaXQgd2lsbCB3YW50IHRvIHRha2UgYSBsb2NrIGluCisgICAqIHNyYyBlbGVtZW50IGFuZCB0aGF0IGxvY2sgaXMgaGVsZCB3aGlsZSB0aGUgc3RyZWFtaW5nIHRocmVhZCBpcyBydW5uaW5nLgorICAgKiBUaGUgc3RyZWFtaW5nIHRocmVhZCB3aWxsIHRha2UgdGhlIE1BTklGRVNUX0xPQ0ssIGxlYWRpbmcgdG8gYSBkZWFkbG9jay4KKyAgICovCiAgIHJlc3VsdCA9IEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5jaGFuZ2Vfc3RhdGUgKGVsZW1lbnQsIHRyYW5zaXRpb24pOwogCisgIEdTVF9BUElfVU5MT0NLIChkZW11eCk7CiAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQxNiwxMSArNTA2LDIxIEBACiB7CiAgIEdzdEFkYXB0aXZlRGVtdXggKmRlbXV4ID0gR1NUX0FEQVBUSVZFX0RFTVVYX0NBU1QgKHBhcmVudCk7CiAgIEdzdEFkYXB0aXZlRGVtdXhDbGFzcyAqZGVtdXhfY2xhc3M7CisgIGdib29sZWFuIHJldDsKIAogICBzd2l0Y2ggKGV2ZW50LT50eXBlKSB7CiAgICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RPUDoKKyAgICAgIEdTVF9BUElfTE9DSyAoZGVtdXgpOworICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKwogICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Jlc2V0IChkZW11eCk7Ci0gICAgICBicmVhazsKKworICAgICAgcmV0ID0gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOworCisgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisgICAgICBHU1RfQVBJX1VOTE9DSyAoZGVtdXgpOworCisgICAgICByZXR1cm4gcmV0OwogICAgIGNhc2UgR1NUX0VWRU5UX0VPUzp7CiAgICAgICBHc3RRdWVyeSAqcXVlcnk7CiAgICAgICBnYm9vbGVhbiBxdWVyeV9yZXM7CkBAIC00MjgsMTIgKzUyOCwyMSBAQAogICAgICAgZ3NpemUgYXZhaWxhYmxlOwogICAgICAgR3N0QnVmZmVyICptYW5pZmVzdF9idWZmZXI7CiAKKyAgICAgIEdTVF9BUElfTE9DSyAoZGVtdXgpOworICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKwogICAgICAgZGVtdXhfY2xhc3MgPSBHU1RfQURBUFRJVkVfREVNVVhfR0VUX0NMQVNTIChkZW11eCk7CisKICAgICAgIGF2YWlsYWJsZSA9IGdzdF9hZGFwdGVyX2F2YWlsYWJsZSAoZGVtdXgtPnByaXYtPmlucHV0X2FkYXB0ZXIpOwogCiAgICAgICBpZiAoYXZhaWxhYmxlID09IDApIHsKICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwgIlJlY2VpdmVkIEVPUyB3aXRob3V0IGEgbWFuaWZlc3QuIik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXQgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7CisKKyAgICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICAgICAgICBHU1RfQVBJX1VOTE9DSyAoZGVtdXgpOworCisgICAgICAgIHJldHVybiByZXQ7CiAgICAgICB9CiAKICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiR290IEVPUyBvbiB0aGUgc2luayBwYWQ6IG1hbmlmZXN0IGZldGNoZWQiKTsKQEAgLTQ0Miw3ICs1NTEsNiBAQAogICAgICAgICogdXJpcyAqLwogICAgICAgcXVlcnkgPSBnc3RfcXVlcnlfbmV3X3VyaSAoKTsKICAgICAgIHF1ZXJ5X3JlcyA9IGdzdF9wYWRfcGVlcl9xdWVyeSAocGFkLCBxdWVyeSk7Ci0gICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOwogICAgICAgaWYgKHF1ZXJ5X3JlcykgewogICAgICAgICBnY2hhciAqdXJpLCAqcmVkaXJlY3RfdXJpOwogICAgICAgICBnYm9vbGVhbiBwZXJtYW5lbnQ7CkBAIC01MjksNiArNjM3LDcgQEAKIAogICAgICAgfQogICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICAgICAgR1NUX0FQSV9VTkxPQ0sgKGRlbXV4KTsKIAogICAgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7CiAgICAgICByZXR1cm4gcmV0OwpAQCAtNTQ5LDE5ICs2NTgsMzIgQEAKICAgICBHc3RCdWZmZXIgKiBidWZmZXIpCiB7CiAgIEdzdEFkYXB0aXZlRGVtdXggKmRlbXV4ID0gR1NUX0FEQVBUSVZFX0RFTVVYX0NBU1QgKHBhcmVudCk7CisKKyAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKwogICBnc3RfYWRhcHRlcl9wdXNoIChkZW11eC0+cHJpdi0+aW5wdXRfYWRhcHRlciwgYnVmZmVyKTsKIAogICBHU1RfSU5GT19PQkpFQ1QgKGRlbXV4LCAiUmVjZWl2ZWQgbWFuaWZlc3QgYnVmZmVyLCB0b3RhbCBzaXplIGlzICVpIGJ5dGVzIiwKICAgICAgIChnaW50KSBnc3RfYWRhcHRlcl9hdmFpbGFibGUgKGRlbXV4LT5wcml2LT5pbnB1dF9hZGFwdGVyKSk7CiAKKyAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwogICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIHZvaWQKIGdzdF9hZGFwdGl2ZV9kZW11eF9yZXNldCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KQogewogICBHc3RBZGFwdGl2ZURlbXV4Q2xhc3MgKmtsYXNzID0gR1NUX0FEQVBUSVZFX0RFTVVYX0dFVF9DTEFTUyAoZGVtdXgpOwogICBHTGlzdCAqaXRlcjsKKyAgR0xpc3QgKm9sZF9zdHJlYW1zOworICBHc3RFdmVudCAqZW9zOworCisgIC8qIHRha2Ugb3duZXJzaGlwIG9mIG9sZF9zdHJlYW1zIGJlZm9yZSByZWxlYXNpbmcgdGhlIG1hbmlmZXN0X2xvY2sgaW4KKyAgICogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0b3BfdGFza3MKKyAgICovCisgIG9sZF9zdHJlYW1zID0gZGVtdXgtPnByaXYtPm9sZF9zdHJlYW1zOworICBkZW11eC0+cHJpdi0+b2xkX3N0cmVhbXMgPSBOVUxMOwogCiAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdG9wX3Rhc2tzIChkZW11eCk7CiAgIGdzdF91cmlfZG93bmxvYWRlcl9yZXNldCAoZGVtdXgtPmRvd25sb2FkZXIpOwpAQCAtNTY5LDE5ICs2OTEsMjQgQEAKICAgaWYgKGtsYXNzLT5yZXNldCkKICAgICBrbGFzcy0+cmVzZXQgKGRlbXV4KTsKIAorICBlb3MgPSBnc3RfZXZlbnRfbmV3X2VvcyAoKTsKICAgZm9yIChpdGVyID0gZGVtdXgtPnN0cmVhbXM7IGl0ZXI7IGl0ZXIgPSBnX2xpc3RfbmV4dCAoaXRlcikpIHsKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPSBpdGVyLT5kYXRhOwotICAgIGlmIChzdHJlYW0tPnBhZCkKKyAgICBpZiAoc3RyZWFtLT5wYWQpIHsKKyAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoc3RyZWFtLT5wYWQsIGdzdF9ldmVudF9yZWYgKGVvcykpOworICAgICAgZ3N0X3BhZF9zZXRfYWN0aXZlIChzdHJlYW0tPnBhZCwgRkFMU0UpOworCiAgICAgICBnc3RfZWxlbWVudF9yZW1vdmVfcGFkIChHU1RfRUxFTUVOVF9DQVNUIChkZW11eCksIHN0cmVhbS0+cGFkKTsKKyAgICB9CiAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9mcmVlIChzdHJlYW0pOwogICB9CisgIGdzdF9ldmVudF91bnJlZiAoZW9zKTsKICAgZ19saXN0X2ZyZWUgKGRlbXV4LT5zdHJlYW1zKTsKICAgZGVtdXgtPnN0cmVhbXMgPSBOVUxMOwogCi0gIGlmIChkZW11eC0+cHJpdi0+b2xkX3N0cmVhbXMpIHsKLSAgICBnX2xpc3RfZnJlZV9mdWxsIChkZW11eC0+cHJpdi0+b2xkX3N0cmVhbXMsCisgIGlmIChvbGRfc3RyZWFtcykgeworICAgIGdfbGlzdF9mcmVlX2Z1bGwgKG9sZF9zdHJlYW1zLAogICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZnJlZSk7Ci0gICAgZGVtdXgtPnByaXYtPm9sZF9zdHJlYW1zID0gTlVMTDsKICAgfQogCiAgIGdfZnJlZSAoZGVtdXgtPm1hbmlmZXN0X3VyaSk7CkBAIC01OTYsNyArNzIzLDYgQEAKIAogICBkZW11eC0+aGF2ZV9ncm91cF9pZCA9IEZBTFNFOwogICBkZW11eC0+Z3JvdXBfaWQgPSBHX01BWFVJTlQ7Ci0gIGRlbXV4LT5wcml2LT5leHBvc2luZyA9IEZBTFNFOwogICBkZW11eC0+cHJpdi0+c2VnbWVudF9zZXFudW0gPSBnc3RfdXRpbF9zZXFudW1fbmV4dCAoKTsKIH0KIApAQCAtNjEzLDkgKzczOSwxMiBAQAogICAgICAgZ2NoYXIgKmRlYnVnID0gTlVMTDsKICAgICAgIGdjaGFyICpuZXdfZXJyb3IgPSBOVUxMOwogCisgICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCiAgICAgICBmb3IgKGl0ZXIgPSBkZW11eC0+c3RyZWFtczsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0IChpdGVyKSkgewogICAgICAgICBzdHJlYW0gPSBpdGVyLT5kYXRhOwotICAgICAgICBpZiAoR1NUX09CSkVDVF9DQVNUIChzdHJlYW0tPnNyYykgPT0gR1NUX01FU1NBR0VfU1JDIChtc2cpKSB7CisgICAgICAgIGlmIChnc3Rfb2JqZWN0X2hhc19hc19hbmNlc3RvciAoR1NUX01FU1NBR0VfU1JDIChtc2cpLAorICAgICAgICAgICAgICAgIEdTVF9PQkpFQ1RfQ0FTVCAoc3RyZWFtLT5zcmMpKSkgewogICAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yIChtc2csICZlcnIsICZkZWJ1Zyk7CiAKICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKEdTVF9BREFQVElWRV9ERU1VWF9TVFJFQU1fUEFEIChzdHJlYW0pLApAQCAtNjM5LDYgKzc2OCw4IEBACiAgICAgICAgIH0KICAgICAgIH0KIAorICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworCiAgICAgICBnc3RfbWVzc2FnZV91bnJlZiAobXNnKTsKICAgICAgIG1zZyA9IE5VTEw7CiAgICAgfQpAQCAtNjU1LDkgKzc4NiwxNCBAQAogZ3N0X2FkYXB0aXZlX2RlbXV4X3NldF9zdHJlYW1fc3RydWN0X3NpemUgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKICAgICBnc2l6ZSBzdHJ1Y3Rfc2l6ZSkKIHsKKyAgR1NUX0FQSV9MT0NLIChkZW11eCk7CisgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CiAgIGRlbXV4LT5zdHJlYW1fc3RydWN0X3NpemUgPSBzdHJ1Y3Rfc2l6ZTsKKyAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICBHU1RfQVBJX1VOTE9DSyAoZGVtdXgpOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2FkYXB0aXZlX2RlbXV4X2V4cG9zZV9zdHJlYW0gKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKQpAQCAtNzAyLDcgKzgzOCw2IEBACiAgICAgc3RyZWFtLT5wZW5kaW5nX2NhcHMgPSBOVUxMOwogICB9CiAKLSAgc3RyZWFtLT5kb3dubG9hZF9maW5pc2hlZCA9IEZBTFNFOwogICBzdHJlYW0tPmRpc2NvbnQgPSBGQUxTRTsKIAogICBnc3Rfb2JqZWN0X3JlZiAocGFkKTsKQEAgLTcxMCw2ICs4NDUsNyBAQAogICByZXR1cm4gZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlRfQ0FTVCAoZGVtdXgpLCBwYWQpOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyBHc3RDbG9ja1RpbWUKIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZ2V0X3ByZXNlbnRhdGlvbl9vZmZzZXQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKQpAQCAtNzI0LDYgKzg2MCw3IEBACiAgIHJldHVybiBrbGFzcy0+Z2V0X3ByZXNlbnRhdGlvbl9vZmZzZXQgKGRlbXV4LCBzdHJlYW0pOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyBHc3RDbG9ja1RpbWUKIGdzdF9hZGFwdGl2ZV9kZW11eF9nZXRfcGVyaW9kX3N0YXJ0X3RpbWUgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCkKIHsKQEAgLTczNyw2ICs4NzQsNyBAQAogICByZXR1cm4ga2xhc3MtPmdldF9wZXJpb2Rfc3RhcnRfdGltZSAoZGVtdXgpOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2FkYXB0aXZlX2RlbXV4X2V4cG9zZV9zdHJlYW1zIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCiAgICAgZ2Jvb2xlYW4gZmlyc3RfYW5kX2xpdmUpCkBAIC03NDcsNyArODg1LDYgQEAKIAogICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGVtdXgtPm5leHRfc3RyZWFtcyAhPSBOVUxMLCBGQUxTRSk7CiAKLSAgZGVtdXgtPnByaXYtPmV4cG9zaW5nID0gVFJVRTsKICAgb2xkX3N0cmVhbXMgPSBkZW11eC0+c3RyZWFtczsKICAgZGVtdXgtPnN0cmVhbXMgPSBkZW11eC0+bmV4dF9zdHJlYW1zOwogICBkZW11eC0+bmV4dF9zdHJlYW1zID0gTlVMTDsKQEAgLTg2MywxMSArMTAwMCwxNCBAQAogICB9CiAKICAgZ3N0X2VsZW1lbnRfbm9fbW9yZV9wYWRzIChHU1RfRUxFTUVOVF9DQVNUIChkZW11eCkpOwotICBkZW11eC0+cHJpdi0+ZXhwb3NpbmcgPSBGQUxTRTsKIAogICBpZiAob2xkX3N0cmVhbXMpIHsKICAgICBHc3RFdmVudCAqZW9zID0gZ3N0X2V2ZW50X25ld19lb3MgKCk7CiAKKyAgICAvKiBiZWZvcmUgd2UgcHV0IHN0cmVhbXMgaW4gdGhlIGRlbXV4LT5wcml2LT5vbGRfc3RyZWFtcyBsaXN0LAorICAgICAqIHdlIGFzayB0aGUgZG93bmxvYWQgdGFzayB0byBzdG9wLiBJbiB0aGlzIHdheSwgaXQgd2lsbCBubyBsb25nZXIgYmUKKyAgICAgKiBhbGxvd2VkIHRvIGNoYW5nZSB0aGUgZGVtdXggb2JqZWN0LgorICAgICAqLwogICAgIGZvciAoaXRlciA9IG9sZF9zdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQgKGl0ZXIpKSB7CiAgICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPSBpdGVyLT5kYXRhOwogCkBAIC04NzUsMjAgKzEwMTUsMzcgQEAKICAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoc3RyZWFtLT5wYWQsIGdzdF9ldmVudF9yZWYgKGVvcykpOwogICAgICAgZ3N0X3BhZF9zZXRfYWN0aXZlIChzdHJlYW0tPnBhZCwgRkFMU0UpOwogICAgICAgZ3N0X2VsZW1lbnRfcmVtb3ZlX3BhZCAoR1NUX0VMRU1FTlQgKGRlbXV4KSwgc3RyZWFtLT5wYWQpOworCisgICAgICAvKiBhc2sgdGhlIGRvd25sb2FkIHRhc2sgdG8gc3RvcC4KKyAgICAgICAqIFdlIHdpbGwgbm90IGpvaW4gaXQgbm93LCBiZWNhdXNlIG91ciB0aHJlYWQgY2FuIGJlIG9uZSBvZiB0aGVzZSB0YXNrcy4KKyAgICAgICAqIFdlIHdpbGwgZG8gdGhlIGpvaW5pbmcgbGF0ZXIsIGZyb20gYW5vdGhlciBzdHJlYW0gZG93bmxvYWQgdGFzayBvcgorICAgICAgICogZnJvbSBnc3RfYWRhcHRpdmVfZGVtdXhfc3RvcF90YXNrcy4KKyAgICAgICAqIFdlIGFsc28gY2Fubm90IGNoYW5nZSB0aGUgc3RhdGUgb2YgdGhlIHN0cmVhbS0+c3JjIGVsZW1lbnQsIGJlY2F1c2UKKyAgICAgICAqIHRoYXQgd2lsbCB3YWl0IG9uIHRoZSBzdHJlYW1pbmcgdGhyZWFkICh3aGljaCBjb3VsZCBiZSB0aGlzIHRocmVhZCkKKyAgICAgICAqIHRvIHN0b3AgZmlyc3QuCisgICAgICAgKiBCZWNhdXNlIHdlIHNlbnQgYW4gRU9TIHRvIHRoZSBkb3duc3RyZWFtIGVsZW1lbnQsIHRoZSBzdHJlYW0tPnNyYworICAgICAgICogZWxlbWVudCBzaG91bGQgZGV0ZWN0IHRoaXMgaW4gaXRzIHN0cmVhbWluZyB0YXNrIGFuZCBzdG9wLgorICAgICAgICogRXZlbiBpZiBpdCBkb2Vzbid0IGRvIHRoYXQsIHdlIHdpbGwgY2hhbmdlIGl0cyBzdGF0ZSBsYXRlciBpbgorICAgICAgICogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0b3BfdGFza3MuCisgICAgICAgKi8KKyAgICAgIGdzdF90YXNrX3N0b3AgKHN0cmVhbS0+ZG93bmxvYWRfdGFzayk7CisgICAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgc3RyZWFtLT5jYW5jZWxsZWQgPSBUUlVFOworICAgICAgZ19jb25kX3NpZ25hbCAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfY29uZCk7CisgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CiAgICAgfQogICAgIGdzdF9ldmVudF91bnJlZiAoZW9zKTsKIAogICAgIC8qIFRoZSBsaXN0IHNob3VsZCBiZSBmcmVlZCBmcm9tIGFub3RoZXIgdGhyZWFkIGFzIHdlIGNhbid0IHByb3Blcmx5CiAgICAgICogY2xlYW51cCBhIEdzdFRhc2sgZnJvbSBpdHNlbGYgKi8KLSAgICBHU1RfT0JKRUNUX0xPQ0sgKGRlbXV4KTsKICAgICBkZW11eC0+cHJpdi0+b2xkX3N0cmVhbXMgPQogICAgICAgICBnX2xpc3RfY29uY2F0IChkZW11eC0+cHJpdi0+b2xkX3N0cmVhbXMsIG9sZF9zdHJlYW1zKTsKLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZGVtdXgpOwogICB9CiAKICAgcmV0dXJuIFRSVUU7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX25ldyAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LCBHc3RQYWQgKiBwYWQpCiB7CkBAIC05MDYsNyArMTA2Myw3IEBACiAgIHN0cmVhbS0+cGFkID0gcGFkOwogICBzdHJlYW0tPmRlbXV4ID0gZGVtdXg7CiAgIHN0cmVhbS0+ZnJhZ21lbnRfYml0cmF0ZXMgPQotICAgICAgZ19tYWxsb2MwIChzaXplb2YgKGd1aW50NjQpICogZGVtdXgtPm51bV9sb29rYmFja19mcmFnbWVudHMpOworICAgICAgZ19tYWxsb2MwIChzaXplb2YgKGd1aW50NjQpICogTlVNX0xPT0tCQUNLX0ZSQUdNRU5UUyk7CiAgIGdzdF9wYWRfc2V0X2VsZW1lbnRfcHJpdmF0ZSAocGFkLCBzdHJlYW0pOwogCiAgIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uIChwYWQsCkBAIC05MjQsNiArMTA4MSwyNyBAQAogICByZXR1cm4gc3RyZWFtOwogfQogCitHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICoKK2dzdF9hZGFwdGl2ZV9kZW11eF9maW5kX3N0cmVhbV9mb3JfcGFkIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsIEdzdFBhZCAqIHBhZCkKK3sKKyAgR0xpc3QgKml0ZXI7CisKKyAgZm9yIChpdGVyID0gZGVtdXgtPnN0cmVhbXM7IGl0ZXI7IGl0ZXIgPSBnX2xpc3RfbmV4dCAoaXRlcikpIHsKKyAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPSBpdGVyLT5kYXRhOworICAgIGlmIChzdHJlYW0tPnBhZCA9PSBwYWQpIHsKKyAgICAgIHJldHVybiBzdHJlYW07CisgICAgfQorICB9CisgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICByZXR1cm4gTlVMTDsKK30KKworLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuLgorICogSXQgd2lsbCB0ZW1wb3JhcmlseSBkcm9wIHRoZSBtYW5pZmVzdF9sb2NrIGluIG9yZGVyIHRvIGpvaW4gdGhlIHRhc2suCisgKiBJdCB3aWxsIGpvaW4gb25seSB0aGUgb2xkX3N0cmVhbXMgKHRoZSBkZW11eC0+c3RyZWFtcyBhcmUgam9pbmVkIGJ5CisgKiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RvcF90YXNrcyBiZWZvcmUgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9mcmVlIGlzCisgKiBjYWxsZWQpCisgKi8KIHN0YXRpYyB2b2lkCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2ZyZWUgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pCiB7CkBAIC05MzksMTEgKzExMTcsMjIgQEAKICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiTGVhdmluZyBzdHJlYW1pbmcgdGFzayAlczolcyIsCiAgICAgICAgICAgR1NUX0RFQlVHX1BBRF9OQU1FIChzdHJlYW0tPnBhZCkpOwogCi0gICAgICBnX2NvbmRfc2lnbmFsICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9jb25kKTsKICAgICAgIGdzdF90YXNrX3N0b3AgKHN0cmVhbS0+ZG93bmxvYWRfdGFzayk7CisKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICBzdHJlYW0tPmNhbmNlbGxlZCA9IFRSVUU7CisgICAgICBnX2NvbmRfc2lnbmFsICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9jb25kKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKICAgICB9CiAgICAgR1NUX0xPR19PQkpFQ1QgKGRlbXV4LCAiV2FpdGluZyBmb3IgdGFzayB0byBmaW5pc2giKTsKKworICAgIC8qIHRlbXBvcmFyaWx5IGRyb3AgdGhlIG1hbmlmZXN0IGxvY2sgdG8gam9pbiB0aGUgdGFzayAqLworICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKwogICAgIGdzdF90YXNrX2pvaW4gKHN0cmVhbS0+ZG93bmxvYWRfdGFzayk7CisKKyAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCiAgICAgR1NUX0xPR19PQkpFQ1QgKGRlbXV4LCAiRmluaXNoZWQiKTsKICAgICBnc3Rfb2JqZWN0X3VucmVmIChzdHJlYW0tPmRvd25sb2FkX3Rhc2spOwogICAgIGdfcmVjX211dGV4X2NsZWFyICgmc3RyZWFtLT5kb3dubG9hZF9sb2NrKTsKQEAgLTk2Miw2ICsxMTUxLDEwIEBACiAgICAgc3RyZWFtLT5wZW5kaW5nX2V2ZW50cyA9IE5VTEw7CiAgIH0KIAorICBpZiAoc3RyZWFtLT5pbnRlcm5hbF9wYWQpIHsKKyAgICBnc3Rfb2JqZWN0X3VucGFyZW50IChHU1RfT0JKRUNUX0NBU1QgKHN0cmVhbS0+aW50ZXJuYWxfcGFkKSk7CisgIH0KKwogICBpZiAoc3RyZWFtLT5zcmNfc3JjcGFkKSB7CiAgICAgZ3N0X29iamVjdF91bnJlZiAoc3RyZWFtLT5zcmNfc3JjcGFkKTsKICAgICBzdHJlYW0tPnNyY19zcmNwYWQgPSBOVUxMOwpAQCAtOTc1LDcgKzExNjgsNiBAQAogCiAgIGdfY29uZF9jbGVhciAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfY29uZCk7CiAgIGdfbXV0ZXhfY2xlYXIgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwotCiAgIGdfZnJlZSAoc3RyZWFtLT5mcmFnbWVudF9iaXRyYXRlcyk7CiAKICAgaWYgKHN0cmVhbS0+cGFkKSB7CkBAIC05OTAsNiArMTE4Miw3IEBACiAgIGdfZnJlZSAoc3RyZWFtKTsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hZGFwdGl2ZV9kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCiAgICAgZ2ludDY0ICogcmFuZ2Vfc3RhcnQsIGdpbnQ2NCAqIHJhbmdlX3N0b3ApCkBAIC0xMDAzLDYgKzExOTYsNyBAQAogICByZXR1cm4ga2xhc3MtPmdldF9saXZlX3NlZWtfcmFuZ2UgKGRlbXV4LCByYW5nZV9zdGFydCwgcmFuZ2Vfc3RvcCk7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIGdib29sZWFuCiBnc3RfYWRhcHRpdmVfZGVtdXhfY2FuX3NlZWsgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCkKIHsKQEAgLTEwMTYsNiArMTIxMCwxMyBAQAogICByZXR1cm4ga2xhc3MtPnNlZWsgIT0gTlVMTDsKIH0KIAorI2RlZmluZSBJU19TTkFQX1NFRUsoZikgKGYgJiAoR1NUX1NFRUtfRkxBR19TTkFQX0JFRk9SRSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9TRUVLX0ZMQUdfU05BUF9BRlRFUiB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTVF9TRUVLX0ZMQUdfU05BUF9ORUFSRVNUKSkKKyNkZWZpbmUgUkVNT1ZFX1NOQVBfRkxBR1MoZikgKGYgJiB+KEdTVF9TRUVLX0ZMQUdfU05BUF9CRUZPUkUgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1RfU0VFS19GTEFHX1NOQVBfQUZURVIgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1RfU0VFS19GTEFHX1NOQVBfTkVBUkVTVCkpCisKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2FkYXB0aXZlX2RlbXV4X3NyY19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCiAgICAgR3N0RXZlbnQgKiBldmVudCkKQEAgLTEwMjYsNiArMTIyNyw4IEBACiAgIGRlbXV4ID0gR1NUX0FEQVBUSVZFX0RFTVVYX0NBU1QgKHBhcmVudCk7CiAgIGRlbXV4X2NsYXNzID0gR1NUX0FEQVBUSVZFX0RFTVVYX0dFVF9DTEFTUyAoZGVtdXgpOwogCisgIC8qIEZJWE1FIGhhbmRsZSBldmVudHMgcmVjZWl2ZWQgb24gcGFkcyB0aGF0IGFyZSB0byBiZSByZW1vdmVkICovCisKICAgc3dpdGNoIChldmVudC0+dHlwZSkgewogICAgIGNhc2UgR1NUX0VWRU5UX1NFRUs6CiAgICAgewpAQCAtMTA0MSwxOCArMTI0NCwyMiBAQAogCiAgICAgICBHU1RfSU5GT19PQkpFQ1QgKGRlbXV4LCAiUmVjZWl2ZWQgc2VlayBldmVudCIpOwogCisgICAgICBHU1RfQVBJX0xPQ0sgKGRlbXV4KTsKICAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKICAgICAgIGlmICghZ3N0X2FkYXB0aXZlX2RlbXV4X2Nhbl9zZWVrIChkZW11eCkpIHsKICAgICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICAgICAgICBHU1RfQVBJX1VOTE9DSyAoZGVtdXgpOwogICAgICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgfQotICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwogCiAgICAgICBnc3RfZXZlbnRfcGFyc2Vfc2VlayAoZXZlbnQsICZyYXRlLCAmZm9ybWF0LCAmZmxhZ3MsICZzdGFydF90eXBlLCAmc3RhcnQsCiAgICAgICAgICAgJnN0b3BfdHlwZSwgJnN0b3ApOwogCiAgICAgICBpZiAoZm9ybWF0ICE9IEdTVF9GT1JNQVRfVElNRSkgeworICAgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisgICAgICAgIEdTVF9BUElfVU5MT0NLIChkZW11eCk7CiAgICAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICB9CkBAIC0xMDYxLDEwICsxMjY4LDE0IEBACiAgICAgICAgIGdpbnQ2NCByYW5nZV9zdGFydCwgcmFuZ2Vfc3RvcDsKICAgICAgICAgaWYgKCFnc3RfYWRhcHRpdmVfZGVtdXhfZ2V0X2xpdmVfc2Vla19yYW5nZSAoZGVtdXgsICZyYW5nZV9zdGFydCwKICAgICAgICAgICAgICAgICAmcmFuZ2Vfc3RvcCkpIHsKKyAgICAgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisgICAgICAgICAgR1NUX0FQSV9VTkxPQ0sgKGRlbXV4KTsKICAgICAgICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHN0YXJ0IDwgcmFuZ2Vfc3RhcnQgfHwgc3RhcnQgPj0gcmFuZ2Vfc3RvcCkgeworICAgICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKyAgICAgICAgICBHU1RfQVBJX1VOTE9DSyAoZGVtdXgpOwogICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsICJTZWVrIHRvIGludmFsaWQgcG9zaXRpb24iKTsKICAgICAgICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKICAgICAgICAgICByZXR1cm4gRkFMU0U7CkBAIC0xMDczLDE3ICsxMjg0LDExIEBACiAKICAgICAgIHNlcW51bSA9IGdzdF9ldmVudF9nZXRfc2VxbnVtIChldmVudCk7CiAKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LAotICAgICAgICAgICJzZWVrIGV2ZW50LCByYXRlOiAlZiB0eXBlOiAlZCBzdGFydDogJSIgR1NUX1RJTUVfRk9STUFUICIgc3RvcDogJSIKLSAgICAgICAgICBHU1RfVElNRV9GT1JNQVQsIHJhdGUsIHN0YXJ0X3R5cGUsIEdTVF9USU1FX0FSR1MgKHN0YXJ0KSwKLSAgICAgICAgICBHU1RfVElNRV9BUkdTIChzdG9wKSk7CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgInNlZWsgZXZlbnQsICUiIEdTVF9QVFJfRk9STUFULCBldmVudCk7CiAKICAgICAgIC8qIGhhdmUgYSBiYWNrdXAgaW4gY2FzZSBzZWVrIGZhaWxzICovCiAgICAgICBnc3Rfc2VnbWVudF9jb3B5X2ludG8gKCZkZW11eC0+c2VnbWVudCwgJm9sZHNlZ21lbnQpOwogCi0gICAgICBnc3Rfc2VnbWVudF9kb19zZWVrICgmZGVtdXgtPnNlZ21lbnQsIHJhdGUsIGZvcm1hdCwgZmxhZ3MsIHN0YXJ0X3R5cGUsCi0gICAgICAgICAgc3RhcnQsIHN0b3BfdHlwZSwgc3RvcCwgJnVwZGF0ZSk7Ci0KICAgICAgIGlmIChmbGFncyAmIEdTVF9TRUVLX0ZMQUdfRkxVU0gpIHsKICAgICAgICAgR3N0RXZlbnQgKmZldmVudDsKIApAQCAtMTA5MSwxMiArMTI5Niw4NSBAQAogICAgICAgICBmZXZlbnQgPSBnc3RfZXZlbnRfbmV3X2ZsdXNoX3N0YXJ0ICgpOwogICAgICAgICBnc3RfZXZlbnRfc2V0X3NlcW51bSAoZmV2ZW50LCBzZXFudW0pOwogICAgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfcHVzaF9zcmNfZXZlbnQgKGRlbXV4LCBmZXZlbnQpOwotICAgICAgfQotICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0b3BfdGFza3MgKGRlbXV4KTsKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiU2Vla2luZyB0byBzZWdtZW50ICUiIEdTVF9TRUdNRU5UX0ZPUk1BVCwKLSAgICAgICAgICAmZGVtdXgtPnNlZ21lbnQpOwogCi0gICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworICAgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RvcF90YXNrcyAoZGVtdXgpOworICAgICAgfSBlbHNlIGlmICgocmF0ZSA+IDAgJiYgc3RhcnRfdHlwZSAhPSBHU1RfU0VFS19UWVBFX05PTkUpIHx8CisgICAgICAgICAgKHJhdGUgPCAwICYmIHN0b3BfdHlwZSAhPSBHU1RfU0VFS19UWVBFX05PTkUpKSB7CisKKyAgICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0b3BfdGFza3MgKGRlbXV4KTsKKyAgICAgIH0KKworICAgICAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfTE9DSyAoZGVtdXgpOworCisgICAgICAvKgorICAgICAgICogSGFuZGxlIHNuYXAgc2Vla3MgYXMgZm9sbG93czoKKyAgICAgICAqIDEpIGRvIHRoZSBzbmFwIHNlZWtpbmcgb24gdGhlIHN0cmVhbSB0aGF0IHJlY2VpdmVkCisgICAgICAgKiAgICB0aGUgZXZlbnQKKyAgICAgICAqIDIpIHVzZSB0aGUgZmluYWwgcG9zaXRpb24gb24gdGhpcyBzdHJlYW0gdG8gc2VlaworICAgICAgICogICAgb24gdGhlIG90aGVyIHN0cmVhbXMgdG8gdGhlIHNhbWUgcG9zaXRpb24KKyAgICAgICAqCisgICAgICAgKiBXZSBjYW4ndCBzbmFwIGF0IGFsbCBzdHJlYW1zIGF0IHRoZSBzYW1lIHRpbWUgYXMKKyAgICAgICAqIHRoZXkgbWlnaHQgZW5kIGluIGRpZmZlcmVudCBwb3NpdGlvbnMsIHNvIGp1c3QKKyAgICAgICAqIHVzZSB0aGUgb25lIHRoYXQgcmVjZWl2ZWQgdGhlIGV2ZW50IGFzIHRoZSAnbGVhZGluZycKKyAgICAgICAqIG9uZSB0byBkbyB0aGUgc25hcCBzZWVrLgorICAgICAgICovCisgICAgICBpZiAoSVNfU05BUF9TRUVLIChmbGFncykgJiYgZGVtdXhfY2xhc3MtPnN0cmVhbV9zZWVrKSB7CisgICAgICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKnN0cmVhbSA9CisgICAgICAgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfZmluZF9zdHJlYW1fZm9yX3BhZCAoZGVtdXgsIHBhZCk7CisgICAgICAgIEdzdENsb2NrVGltZSB0czsKKyAgICAgICAgR3N0U2Vla0ZsYWdzIHN0cmVhbV9zZWVrX2ZsYWdzID0gZmxhZ3M7CisKKyAgICAgICAgLyogc25hcC1zZWVrIG9uIHRoZSBzdHJlYW0gdGhhdCByZWNlaXZlZCB0aGUgZXZlbnQgYW5kIHRoZW4KKyAgICAgICAgICogdXNlIHRoZSByZXN1bHRpbmcgcG9zaXRpb24gdG8gc2VlayBvbiBhbGwgc3RyZWFtcyAqLworCisgICAgICAgIGlmIChyYXRlID49IDApIHsKKyAgICAgICAgICBpZiAoc3RhcnRfdHlwZSAhPSBHU1RfU0VFS19UWVBFX05PTkUpCisgICAgICAgICAgICB0cyA9IHN0YXJ0OworICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdHMgPSBzdHJlYW0tPnNlZ21lbnQucG9zaXRpb247CisgICAgICAgICAgICBzdGFydF90eXBlID0gR1NUX1NFRUtfVFlQRV9TRVQ7CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGlmIChzdG9wX3R5cGUgIT0gR1NUX1NFRUtfVFlQRV9OT05FKQorICAgICAgICAgICAgdHMgPSBzdG9wOworICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3RvcF90eXBlID0gR1NUX1NFRUtfVFlQRV9TRVQ7CisgICAgICAgICAgICB0cyA9IHN0cmVhbS0+c2VnbWVudC5wb3NpdGlvbjsKKyAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkZW11eF9jbGFzcy0+c3RyZWFtX3NlZWsgKHN0cmVhbSwgcmF0ZSA+PSAwLCBzdHJlYW1fc2Vla19mbGFncywgdHMsCisgICAgICAgICAgICAmdHMpOworCisgICAgICAgIC8qIHJlcGxhY2UgZXZlbnQgd2l0aCBhIG5ldyBvbmUgd2l0aG91dCBzbmFwaW5nIHRvIHNlZWsgb24gYWxsIHN0cmVhbXMgKi8KKyAgICAgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7CisgICAgICAgIGlmIChyYXRlID49IDApIHsKKyAgICAgICAgICBzdGFydCA9IHRzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHN0b3AgPSB0czsKKyAgICAgICAgfQorICAgICAgICBldmVudCA9CisgICAgICAgICAgICBnc3RfZXZlbnRfbmV3X3NlZWsgKHJhdGUsIGZvcm1hdCwgUkVNT1ZFX1NOQVBfRkxBR1MgKGZsYWdzKSwKKyAgICAgICAgICAgIHN0YXJ0X3R5cGUsIHN0YXJ0LCBzdG9wX3R5cGUsIHN0b3ApOworICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIkFkYXB0ZWQgc25hcCBzZWVrIHRvICUiIEdTVF9QVFJfRk9STUFULAorICAgICAgICAgICAgZXZlbnQpOworICAgICAgfQorCisgICAgICBnc3Rfc2VnbWVudF9kb19zZWVrICgmZGVtdXgtPnNlZ21lbnQsIHJhdGUsIGZvcm1hdCwgZmxhZ3MsIHN0YXJ0X3R5cGUsCisgICAgICAgICAgc3RhcnQsIHN0b3BfdHlwZSwgc3RvcCwgJnVwZGF0ZSk7CisKKyAgICAgIC8qIEZJWE1FIC0gdGhpcyBzZWVtcyB1bmF0dXJhbCwgZG9fc2VlaygpIGlzIHVwZGF0aW5nIGJhc2Ugd2hlbiB3ZQorICAgICAgICogb25seSB3YW50IHRoZSBzdGFydC9zdG9wIHBvc2l0aW9uIHRvIGNoYW5nZSwgbWF5YmUgZG9fc2VlaygpIG5lZWRzCisgICAgICAgKiBzb21lIGZpeGluZz8gKi8KKyAgICAgIGlmICghKGZsYWdzICYgR1NUX1NFRUtfRkxBR19GTFVTSCkgJiYgKChyYXRlID4gMAorICAgICAgICAgICAgICAgICAgJiYgc3RhcnRfdHlwZSA9PSBHU1RfU0VFS19UWVBFX05PTkUpIHx8IChyYXRlIDwgMAorICAgICAgICAgICAgICAgICAgJiYgc3RvcF90eXBlID09IEdTVF9TRUVLX1RZUEVfTk9ORSkpKSB7CisgICAgICAgIGRlbXV4LT5zZWdtZW50LmJhc2UgPSBvbGRzZWdtZW50LmJhc2U7CisgICAgICB9CisKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiQ2FsbGluZyBzdWJjbGFzcyBzZWVrOiAlIiBHU1RfUFRSX0ZPUk1BVCwKKyAgICAgICAgICBldmVudCk7CisKICAgICAgIHJldCA9IGRlbXV4X2NsYXNzLT5zZWVrIChkZW11eCwgZXZlbnQpOwogCiAgICAgICBpZiAoIXJldCkgewpAQCAtMTEwNSw2ICsxMzgzLDcgQEAKICAgICAgIH0gZWxzZSB7CiAgICAgICAgIGRlbXV4LT5wcml2LT5zZWdtZW50X3NlcW51bSA9IHNlcW51bTsKICAgICAgIH0KKyAgICAgIEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX1VOTE9DSyAoZGVtdXgpOwogCiAgICAgICBpZiAoZmxhZ3MgJiBHU1RfU0VFS19GTEFHX0ZMVVNIKSB7CiAgICAgICAgIEdzdEV2ZW50ICpmZXZlbnQ7CkBAIC0xMTIyLDYgKzE0MDEsNyBAQAogICAgICAgICBHc3RDbG9ja1RpbWUgcGVyaW9kX3N0YXJ0ID0KICAgICAgICAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9nZXRfcGVyaW9kX3N0YXJ0X3RpbWUgKGRlbXV4KTsKIAorICAgICAgICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9MT0NLIChkZW11eCk7CiAgICAgICAgIGZvciAoaXRlciA9IGRlbXV4LT5zdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQgKGl0ZXIpKSB7CiAgICAgICAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqc3RyZWFtID0gaXRlci0+ZGF0YTsKICAgICAgICAgICBHc3RFdmVudCAqc2VnX2V2dDsKQEAgLTExMzMsNTQgKzE0MTMsNDcgQEAKICAgICAgICAgICBvZmZzZXQgPQogICAgICAgICAgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2dldF9wcmVzZW50YXRpb25fb2Zmc2V0IChkZW11eCwgc3RyZWFtKTsKICAgICAgICAgICBzdHJlYW0tPnNlZ21lbnQuc3RhcnQgKz0gb2Zmc2V0IC0gcGVyaW9kX3N0YXJ0OwotICAgICAgICAgIHN0cmVhbS0+c2VnbWVudC5wb3NpdGlvbiA9IHN0cmVhbS0+c2VnbWVudC5zdGFydDsKKyAgICAgICAgICBpZiAoZGVtdXgtPnNlZ21lbnQucmF0ZSA+IDAgJiYgc3RhcnRfdHlwZSAhPSBHU1RfU0VFS19UWVBFX05PTkUpCisgICAgICAgICAgICBzdHJlYW0tPnNlZ21lbnQucG9zaXRpb24gPSBzdHJlYW0tPnNlZ21lbnQuc3RhcnQ7CisgICAgICAgICAgZWxzZSBpZiAoZGVtdXgtPnNlZ21lbnQucmF0ZSA8IDAgJiYgc3RvcF90eXBlICE9IEdTVF9TRUVLX1RZUEVfTk9ORSkKKyAgICAgICAgICAgIHN0cmVhbS0+c2VnbWVudC5wb3NpdGlvbiA9IHN0cmVhbS0+c2VnbWVudC5zdG9wOwogICAgICAgICAgIHNlZ19ldnQgPSBnc3RfZXZlbnRfbmV3X3NlZ21lbnQgKCZzdHJlYW0tPnNlZ21lbnQpOwogICAgICAgICAgIGdzdF9ldmVudF9zZXRfc2VxbnVtIChzZWdfZXZ0LCBkZW11eC0+cHJpdi0+c2VnbWVudF9zZXFudW0pOwogICAgICAgICAgIGdzdF9ldmVudF9yZXBsYWNlICgmc3RyZWFtLT5wZW5kaW5nX3NlZ21lbnQsIHNlZ19ldnQpOwogICAgICAgICAgIGdzdF9ldmVudF91bnJlZiAoc2VnX2V2dCk7CiAgICAgICAgIH0KKworICAgICAgICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9VTkxPQ0sgKGRlbXV4KTsKICAgICAgIH0KIAogICAgICAgLyogUmVzdGFydCB0aGUgZGVtdXggKi8KICAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdGFydF90YXNrcyAoZGVtdXgpOwogICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICAgICAgR1NUX0FQSV9VTkxPQ0sgKGRlbXV4KTsKIAogICAgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7CiAgICAgICByZXR1cm4gcmV0OwogICAgIH0KICAgICBjYXNlIEdTVF9FVkVOVF9SRUNPTkZJR1VSRTp7Ci0gICAgICBHTGlzdCAqaXRlcjsKKyAgICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKnN0cmVhbTsKIAotICAgICAgLyogV2hlbiBleHBvc2luZyBwYWRzIHJlY29uZmlndXJlIGV2ZW50cyBhcmUgcmVjZWl2ZWQgYXMgcmVzdWx0Ci0gICAgICAgKiBvZiB0aGUgbGlua2luZyBvZiB0aGUgcGFkcy4gVGhlIGV4cG9zaW5nIGFuZCByZWNvbmZpZ3VyZSBoYXBwZW5zCi0gICAgICAgKiBmcm9tIHRoZSBzYW1lIHRocmVhZC4gVGhpcyBwcmV2ZW50cyBhIGRlYWRsb2NrIGFuZCwgYWx0aG91Z2gKLSAgICAgICAqIG5vdCBiZWF1dGlmdWwsIG1ha2VzIHRoaXMgc2FmZSBieSBhdm9pZGluZyB0aGF0IHRoZSBkZW11eC0+c3RyZWFtcwotICAgICAgICogbGlzdCBnZXRzIG1vZGlmaWVkIHdoaWxlIHRoaXMgbG9vcCBpcyBydW5uaW5nICovCi0gICAgICBpZiAoIWRlbXV4LT5wcml2LT5leHBvc2luZykKLSAgICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKyAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisgICAgICBzdHJlYW0gPSBnc3RfYWRhcHRpdmVfZGVtdXhfZmluZF9zdHJlYW1fZm9yX3BhZCAoZGVtdXgsIHBhZCk7CiAKLSAgICAgIGZvciAoaXRlciA9IGRlbXV4LT5zdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQgKGl0ZXIpKSB7Ci0gICAgICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKnN0cmVhbSA9IGl0ZXItPmRhdGE7Ci0KLSAgICAgICAgaWYgKHN0cmVhbS0+cGFkID09IHBhZCkgewotICAgICAgICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7Ci0gICAgICAgICAgaWYgKHN0cmVhbS0+bGFzdF9yZXQgPT0gR1NUX0ZMT1dfTk9UX0xJTktFRCkgewotICAgICAgICAgICAgc3RyZWFtLT5sYXN0X3JldCA9IEdTVF9GTE9XX09LOwotICAgICAgICAgICAgc3RyZWFtLT5yZXN0YXJ0X2Rvd25sb2FkID0gVFJVRTsKLSAgICAgICAgICAgIHN0cmVhbS0+bmVlZF9oZWFkZXIgPSBUUlVFOwotICAgICAgICAgICAgc3RyZWFtLT5kaXNjb250ID0gVFJVRTsKLSAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiUmVzdGFydGluZyBkb3dubG9hZCBsb29wIik7Ci0gICAgICAgICAgICBnc3RfdGFza19zdGFydCAoc3RyZWFtLT5kb3dubG9hZF90YXNrKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwotICAgICAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwotICAgICAgICAgIGlmICghZGVtdXgtPnByaXYtPmV4cG9zaW5nKQotICAgICAgICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwotICAgICAgICAgIHJldHVybiBUUlVFOworICAgICAgaWYgKHN0cmVhbSkgeworICAgICAgICBpZiAoc3RyZWFtLT5sYXN0X3JldCA9PSBHU1RfRkxPV19OT1RfTElOS0VEKSB7CisgICAgICAgICAgc3RyZWFtLT5sYXN0X3JldCA9IEdTVF9GTE9XX09LOworICAgICAgICAgIHN0cmVhbS0+cmVzdGFydF9kb3dubG9hZCA9IFRSVUU7CisgICAgICAgICAgc3RyZWFtLT5uZWVkX2hlYWRlciA9IFRSVUU7CisgICAgICAgICAgc3RyZWFtLT5kaXNjb250ID0gVFJVRTsKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIlJlc3RhcnRpbmcgZG93bmxvYWQgbG9vcCIpOworICAgICAgICAgIGdzdF90YXNrX3N0YXJ0IChzdHJlYW0tPmRvd25sb2FkX3Rhc2spOwogICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBpZiAoIWRlbXV4LT5wcml2LT5leHBvc2luZykKKyAgICAgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7CiAgICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICB9CisgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CiAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfRVZFTlRfTEFURU5DWTp7CkBAIC0xMjE2LDggKzE0ODksMTAgQEAKICAgICAgIEdzdENsb2NrVGltZSBkdXJhdGlvbiA9IC0xOwogICAgICAgR3N0Rm9ybWF0IGZtdDsKIAotICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKICAgICAgIGdzdF9xdWVyeV9wYXJzZV9kdXJhdGlvbiAocXVlcnksICZmbXQsIE5VTEwpOworCisgICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCiAgICAgICBpZiAoZm10ID09IEdTVF9GT1JNQVRfVElNRSAmJiBkZW11eC0+cHJpdi0+aGF2ZV9tYW5pZmVzdAogICAgICAgICAgICYmICFnc3RfYWRhcHRpdmVfZGVtdXhfaXNfbGl2ZSAoZGVtdXgpKSB7CiAgICAgICAgIGR1cmF0aW9uID0gZGVtdXhfY2xhc3MtPmdldF9kdXJhdGlvbiAoZGVtdXgpOwpAQCAtMTIyNyw3ICsxNTAyLDkgQEAKICAgICAgICAgICByZXQgPSBUUlVFOwogICAgICAgICB9CiAgICAgICB9CisKICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKwogICAgICAgR1NUX0xPR19PQkpFQ1QgKGRlbXV4LCAiR1NUX1FVRVJZX0RVUkFUSU9OIHJldHVybnMgJXMgd2l0aCBkdXJhdGlvbiAlIgogICAgICAgICAgIEdTVF9USU1FX0ZPUk1BVCwgcmV0ID8gIlRSVUUiIDogIkZBTFNFIiwgR1NUX1RJTUVfQVJHUyAoZHVyYXRpb24pKTsKICAgICAgIGJyZWFrOwpAQCAtMTI0Myw2ICsxNTIwLDcgQEAKICAgICAgIGdpbnQ2NCBzdGFydCA9IDA7CiAKICAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKICAgICAgIGlmICghZGVtdXgtPnByaXYtPmhhdmVfbWFuaWZlc3QpIHsKICAgICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwogICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKGRlbXV4LApAQCAtMTI2MCw2ICsxNTM4LDExIEBACiAgICAgICAgIGlmIChjYW5fc2VlaykgewogICAgICAgICAgIGlmIChnc3RfYWRhcHRpdmVfZGVtdXhfaXNfbGl2ZSAoZGVtdXgpKSB7CiAgICAgICAgICAgICByZXQgPSBnc3RfYWRhcHRpdmVfZGVtdXhfZ2V0X2xpdmVfc2Vla19yYW5nZSAoZGVtdXgsICZzdGFydCwgJnN0b3ApOworICAgICAgICAgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICAgICAgICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKGRlbXV4LCAiY2FuJ3QgYW5zd2VyIHNlZWtpbmcgcXVlcnkiKTsKKyAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgfQogICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBkdXJhdGlvbiA9IGRlbXV4X2NsYXNzLT5nZXRfZHVyYXRpb24gKGRlbXV4KTsKICAgICAgICAgICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoZHVyYXRpb24pICYmIGR1cmF0aW9uID4gMCkKQEAgLTEyNzUsMTQgKzE1NTgsMTcgQEAKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdTVF9RVUVSWV9VUkk6Ci0gICAgICAvKiBUT0RPIEhMUyBjYW4gYW5zd2VyIHRoaXMgZGlmZmVyZW50bHkgaXQgc2VlbXMgKi8KKwogICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKworICAgICAgLyogVE9ETyBITFMgY2FuIGFuc3dlciB0aGlzIGRpZmZlcmVudGx5IGl0IHNlZW1zICovCiAgICAgICBpZiAoZGVtdXgtPm1hbmlmZXN0X3VyaSkgewogICAgICAgICAvKiBGSVhNRTogKGhscykgRG8gd2UgYW5zd2VyIHdpdGggdGhlIHZhcmlhbnQgcGxheWxpc3QsIHdpdGggdGhlIGN1cnJlbnQKICAgICAgICAgICogcGxheWxpc3Qgb3IgdGhlIHRoZSB1cmkgb2YgdGhlIGxhc3QgZG93bmxvd2FkZWQgZnJhZ21lbnQ/ICovCiAgICAgICAgIGdzdF9xdWVyeV9zZXRfdXJpIChxdWVyeSwgZGVtdXgtPm1hbmlmZXN0X3VyaSk7CiAgICAgICAgIHJldCA9IFRSVUU7CiAgICAgICB9CisKICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xMjk2LDU5ICsxNTgyLDEwMSBAQAogICByZXR1cm4gcmV0OwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyB2b2lkCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RhcnRfdGFza3MgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCkKIHsKICAgR0xpc3QgKml0ZXI7CiAKICAgR1NUX0lORk9fT0JKRUNUIChkZW11eCwgIlN0YXJ0aW5nIHN0cmVhbXMnIHRhc2tzIik7Ci0gIGRlbXV4LT5jYW5jZWxsZWQgPSBGQUxTRTsKICAgZm9yIChpdGVyID0gZGVtdXgtPnN0cmVhbXM7IGl0ZXI7IGl0ZXIgPSBnX2xpc3RfbmV4dCAoaXRlcikpIHsKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPSBpdGVyLT5kYXRhOworCisgICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICBzdHJlYW0tPmNhbmNlbGxlZCA9IEZBTFNFOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKwogICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19PSzsKICAgICBnc3RfdGFza19zdGFydCAoc3RyZWFtLT5kb3dubG9hZF90YXNrKTsKICAgfQogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4KKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCB0ZW1wb3JhcmlseSByZWxlYXNlIG1hbmlmZXN0X2xvY2sgaW4gb3JkZXIgdG8gam9pbiB0aGUKKyAqIGRvd25sb2FkIHRocmVhZHMuCisgKiBUaGUgYXBpX2xvY2sgd2lsbCBzdGlsbCBwcm90ZWN0IGl0IGFnYWluc3Qgb3RoZXIgdGhyZWFkcyB0cnlpbmcgdG8gbW9kaWZ5CisgKiB0aGUgZGVtdXggZWxlbWVudC4KKyAqLwogc3RhdGljIHZvaWQKIGdzdF9hZGFwdGl2ZV9kZW11eF9zdG9wX3Rhc2tzIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpCiB7CiAgIEdMaXN0ICppdGVyOwogCi0gIGRlbXV4LT5jYW5jZWxsZWQgPSBUUlVFOwotCi0gIGRlbXV4LT5wcml2LT5zdG9wX3VwZGF0ZXNfdGFzayA9IFRSVUU7CiAgIGdzdF90YXNrX3N0b3AgKGRlbXV4LT5wcml2LT51cGRhdGVzX3Rhc2spOwotICBnX2NvbmRfc2lnbmFsICgmZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGltZWRfY29uZCk7CiAKLSAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKLSAgZ19jb25kX2Jyb2FkY2FzdCAoJmRlbXV4LT5tYW5pZmVzdF9jb25kKTsKLSAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICBnX211dGV4X2xvY2sgKCZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9sb2NrKTsKKyAgZGVtdXgtPnByaXYtPnN0b3BfdXBkYXRlc190YXNrID0gVFJVRTsKKyAgZ19jb25kX3NpZ25hbCAoJmRlbXV4LT5wcml2LT51cGRhdGVzX3RpbWVkX2NvbmQpOworICBnX211dGV4X3VubG9jayAoJmRlbXV4LT5wcml2LT51cGRhdGVzX3RpbWVkX2xvY2spOwogCiAgIGdzdF91cmlfZG93bmxvYWRlcl9jYW5jZWwgKGRlbXV4LT5kb3dubG9hZGVyKTsKKwogICBmb3IgKGl0ZXIgPSBkZW11eC0+c3RyZWFtczsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0IChpdGVyKSkgewogICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKnN0cmVhbSA9IGl0ZXItPmRhdGE7CiAKLSAgICBnc3RfdGFza19zdG9wIChzdHJlYW0tPmRvd25sb2FkX3Rhc2spOwotICAgIGlmIChzdHJlYW0tPnNyYykKLSAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc3RyZWFtLT5zcmMsIEdTVF9TVEFURV9SRUFEWSk7CiAgICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKLSAgICBzdHJlYW0tPmRvd25sb2FkX2ZpbmlzaGVkID0gVFJVRTsKKyAgICBzdHJlYW0tPmNhbmNlbGxlZCA9IFRSVUU7CisgICAgZ3N0X3Rhc2tfc3RvcCAoc3RyZWFtLT5kb3dubG9hZF90YXNrKTsKICAgICBnX2NvbmRfc2lnbmFsICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9jb25kKTsKICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CiAgIH0KIAorICBnX211dGV4X2xvY2sgKCZkZW11eC0+cHJpdi0+bWFuaWZlc3RfdXBkYXRlX2xvY2spOworICBnX2NvbmRfYnJvYWRjYXN0ICgmZGVtdXgtPnByaXYtPm1hbmlmZXN0X2NvbmQpOworICBnX211dGV4X3VubG9jayAoJmRlbXV4LT5wcml2LT5tYW5pZmVzdF91cGRhdGVfbG9jayk7CisKKyAgLyogbmVlZCB0byByZWxlYXNlIG1hbmlmZXN0X2xvY2sgYmVmb3JlIHN0b3BwaW5nIHRoZSBzcmMgZWxlbWVudC4KKyAgICogVGhlIHN0cmVhbXMgd2VyZSBhc2tlZCB0byBjYW5jZWwsIHNvIHRoZXkgd2lsbCBub3QgbWFrZSBhbnkgd3JpdGVzIHRvIGRlbXV4CisgICAqIG9iamVjdC4gRXZlbiBpZiB3ZSB0ZW1wb3JhcmlseSByZWxlYXNlIG1hbmlmZXN0X2xvY2ssIHRoZSBkZW11eC0+c3RyZWFtcworICAgKiBjYW5ub3QgY2hhbmdlIGFuZCBpdGVyIGNhbm5vdCBiZSBpbnZhbGlkYXRlZC4KKyAgICovCisgIGZvciAoaXRlciA9IGRlbXV4LT5zdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQgKGl0ZXIpKSB7CisgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqc3RyZWFtID0gaXRlci0+ZGF0YTsKKyAgICBHc3RFbGVtZW50ICpzcmMgPSBzdHJlYW0tPnNyYzsKKworICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKworICAgIGlmIChzcmMpIHsKKyAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc3JjLCBHU1RfU1RBVEVfUkVBRFkpOworICAgIH0KKworICAgIC8qIHN0cmVhbS0+ZG93bmxvYWRfdGFzayB2YWx1ZSBuZXZlciBjaGFuZ2VzLCBzbyBpdCBpcyBzYWZlIHRvIHJlYWQgaXQKKyAgICAgKiBvdXRzaWRlIGNyaXRpY2FsIHNlY3Rpb24KKyAgICAgKi8KKyAgICBnc3RfdGFza19qb2luIChzdHJlYW0tPmRvd25sb2FkX3Rhc2spOworCisgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKyAgfQorCisgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKworICAvKiBkZW11eC0+cHJpdi0+dXBkYXRlc190YXNrIHZhbHVlIG5ldmVyIGNoYW5nZXMsIHNvIGl0IGlzIHNhZmUgdG8gcmVhZCBpdAorICAgKiBvdXRzaWRlIGNyaXRpY2FsIHNlY3Rpb24KKyAgICovCisgIGdzdF90YXNrX2pvaW4gKGRlbXV4LT5wcml2LT51cGRhdGVzX3Rhc2spOworCisgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKICAgZm9yIChpdGVyID0gZGVtdXgtPnN0cmVhbXM7IGl0ZXI7IGl0ZXIgPSBnX2xpc3RfbmV4dCAoaXRlcikpIHsKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPSBpdGVyLT5kYXRhOwogCi0gICAgZ3N0X3Rhc2tfam9pbiAoc3RyZWFtLT5kb3dubG9hZF90YXNrKTsKICAgICBzdHJlYW0tPmRvd25sb2FkX2Vycm9yX2NvdW50ID0gMDsKICAgICBzdHJlYW0tPm5lZWRfaGVhZGVyID0gVFJVRTsKICAgICBnc3RfYWRhcHRlcl9jbGVhciAoc3RyZWFtLT5hZGFwdGVyKTsKICAgfQotICBnc3RfdGFza19qb2luIChkZW11eC0+cHJpdi0+dXBkYXRlc190YXNrKTsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hZGFwdGl2ZV9kZW11eF9wdXNoX3NyY19ldmVudCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LCBHc3RFdmVudCAqIGV2ZW50KQogewpAQCAtMTM2NCw2ICsxNjkyLDcgQEAKICAgcmV0dXJuIHJldDsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiB2b2lkCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3NldF9jYXBzIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLAogICAgIEdzdENhcHMgKiBjYXBzKQpAQCAtMTM3NCw2ICsxNzAzLDcgQEAKICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHZvaWQKIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fc2V0X3RhZ3MgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sCiAgICAgR3N0VGFnTGlzdCAqIHRhZ3MpCkBAIC0xMzg2LDYgKzE3MTYsNyBAQAogICBzdHJlYW0tPnBlbmRpbmdfdGFncyA9IHRhZ3M7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogdm9pZAogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9xdWV1ZV9ldmVudCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwKICAgICBHc3RFdmVudCAqIGV2ZW50KQpAQCAtMTM5MywxMSArMTcyNCwxMiBAQAogICBzdHJlYW0tPnBlbmRpbmdfZXZlbnRzID0gZ19saXN0X2FwcGVuZCAoc3RyZWFtLT5wZW5kaW5nX2V2ZW50cywgZXZlbnQpOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyBndWludDY0CiBfdXBkYXRlX2F2ZXJhZ2VfYml0cmF0ZSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAogICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIGd1aW50NjQgbmV3X2JpdHJhdGUpCiB7Ci0gIGdpbnQgaW5kZXggPSBzdHJlYW0tPm1vdmluZ19pbmRleCAlIGRlbXV4LT5udW1fbG9va2JhY2tfZnJhZ21lbnRzOworICBnaW50IGluZGV4ID0gc3RyZWFtLT5tb3ZpbmdfaW5kZXggJSBOVU1fTE9PS0JBQ0tfRlJBR01FTlRTOwogCiAgIHN0cmVhbS0+bW92aW5nX2JpdHJhdGUgLT0gc3RyZWFtLT5mcmFnbWVudF9iaXRyYXRlc1tpbmRleF07CiAgIHN0cmVhbS0+ZnJhZ21lbnRfYml0cmF0ZXNbaW5kZXhdID0gbmV3X2JpdHJhdGU7CkBAIC0xNDA1LDExICsxNzM3LDEyIEBACiAKICAgc3RyZWFtLT5tb3ZpbmdfaW5kZXggKz0gMTsKIAotICBpZiAoc3RyZWFtLT5tb3ZpbmdfaW5kZXggPiBkZW11eC0+bnVtX2xvb2tiYWNrX2ZyYWdtZW50cykKLSAgICByZXR1cm4gc3RyZWFtLT5tb3ZpbmdfYml0cmF0ZSAvIGRlbXV4LT5udW1fbG9va2JhY2tfZnJhZ21lbnRzOworICBpZiAoc3RyZWFtLT5tb3ZpbmdfaW5kZXggPiBOVU1fTE9PS0JBQ0tfRlJBR01FTlRTKQorICAgIHJldHVybiBzdHJlYW0tPm1vdmluZ19iaXRyYXRlIC8gTlVNX0xPT0tCQUNLX0ZSQUdNRU5UUzsKICAgcmV0dXJuIHN0cmVhbS0+bW92aW5nX2JpdHJhdGUgLyBzdHJlYW0tPm1vdmluZ19pbmRleDsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgZ3VpbnQ2NAogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV91cGRhdGVfY3VycmVudF9iaXRyYXRlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCiAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSkKQEAgLTE0MTcsMTEgKzE3NTAsMTYgQEAKICAgZ3VpbnQ2NCBhdmVyYWdlX2JpdHJhdGU7CiAgIGd1aW50NjQgZnJhZ21lbnRfYml0cmF0ZTsKIAotICBmcmFnbWVudF9iaXRyYXRlID0KLSAgICAgIChzdHJlYW0tPmZyYWdtZW50X3RvdGFsX3NpemUgKiA4KSAvCi0gICAgICAoKGRvdWJsZSkgc3RyZWFtLT5mcmFnbWVudF90b3RhbF90aW1lIC8gR19HVUlOVDY0X0NPTlNUQU5UICgxMDAwMDAwKSk7Ci0gIHN0cmVhbS0+ZnJhZ21lbnRfdG90YWxfc2l6ZSA9IDA7Ci0gIHN0cmVhbS0+ZnJhZ21lbnRfdG90YWxfdGltZSA9IDA7CisgIGlmIChkZW11eC0+Y29ubmVjdGlvbl9zcGVlZCkgeworICAgIEdTVF9MT0dfT0JKRUNUIChkZW11eCwgIkNvbm5lY3Rpb24tc3BlZWQgaXMgc2V0IHRvICV1IGticHMsIHVzaW5nIGl0IiwKKyAgICAgICAgZGVtdXgtPmNvbm5lY3Rpb25fc3BlZWQgLyAxMDAwKTsKKyAgICByZXR1cm4gZGVtdXgtPmNvbm5lY3Rpb25fc3BlZWQ7CisgIH0KKworICBnX29iamVjdF9nZXQgKHN0cmVhbS0+cXVldWUsICJhdmctaW4tcmF0ZSIsICZmcmFnbWVudF9iaXRyYXRlLCBOVUxMKTsKKyAgZnJhZ21lbnRfYml0cmF0ZSAqPSA4OworICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIkRvd25sb2FkIGJpdHJhdGUgaXMgOiAlIiBHX0dVSU5UNjRfRk9STUFUICIgYnBzIiwKKyAgICAgIGZyYWdtZW50X2JpdHJhdGUpOwogCiAgIGF2ZXJhZ2VfYml0cmF0ZSA9IF91cGRhdGVfYXZlcmFnZV9iaXRyYXRlIChkZW11eCwgc3RyZWFtLCBmcmFnbWVudF9iaXRyYXRlKTsKIApAQCAtMTQyOSwyNCArMTc2NywxOSBAQAogICAgICAgZnJhZ21lbnRfYml0cmF0ZSk7CiAgIEdTVF9JTkZPX09CSkVDVCAoc3RyZWFtLAogICAgICAgIkxhc3QgJXUgZnJhZ21lbnRzIGF2ZXJhZ2UgYml0cmF0ZSBpcyAlIiBHX0dVSU5UNjRfRk9STUFULAotICAgICAgZGVtdXgtPm51bV9sb29rYmFja19mcmFnbWVudHMsIGF2ZXJhZ2VfYml0cmF0ZSk7CisgICAgICBOVU1fTE9PS0JBQ0tfRlJBR01FTlRTLCBhdmVyYWdlX2JpdHJhdGUpOwogCiAgIC8qIENvbnNlcnZhdGl2ZSBhcHByb2FjaCwgbWFrZSBzdXJlIHdlIGRvbid0IHVwZ3JhZGUgdG9vIGZhc3QgKi8KICAgc3RyZWFtLT5jdXJyZW50X2Rvd25sb2FkX3JhdGUgPSBNSU4gKGF2ZXJhZ2VfYml0cmF0ZSwgZnJhZ21lbnRfYml0cmF0ZSk7CiAKLSAgaWYgKGRlbXV4LT5jb25uZWN0aW9uX3NwZWVkKSB7Ci0gICAgR1NUX0xPR19PQkpFQ1QgKGRlbXV4LCAiQ29ubmVjdGlvbi1zcGVlZCBpcyBzZXQgdG8gJXUga2JwcywgdXNpbmcgaXQiLAotICAgICAgICBkZW11eC0+Y29ubmVjdGlvbl9zcGVlZCAvIDEwMDApOwotICAgIHJldHVybiBkZW11eC0+Y29ubmVjdGlvbl9zcGVlZDsKLSAgfQotCiAgIHN0cmVhbS0+Y3VycmVudF9kb3dubG9hZF9yYXRlICo9IGRlbXV4LT5iaXRyYXRlX2xpbWl0OwogICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIkJpdHJhdGUgYWZ0ZXIgYml0cmF0ZSBsaW1pdCAoJTAuMmYpOiAlIgotICAgICAgR19HVUlOVDY0X0ZPUk1BVCwgZGVtdXgtPmJpdHJhdGVfbGltaXQsIHN0cmVhbS0+Y3VycmVudF9kb3dubG9hZF9yYXRlKTsKLQorICAgICAgR19HVUlOVDY0X0ZPUk1BVCwgZGVtdXgtPmJpdHJhdGVfbGltaXQsCisgICAgICBzdHJlYW0tPmN1cnJlbnRfZG93bmxvYWRfcmF0ZSAqIDgpOwogICByZXR1cm4gc3RyZWFtLT5jdXJyZW50X2Rvd25sb2FkX3JhdGU7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9hZGFwdGl2ZV9kZW11eF9jb21iaW5lX2Zsb3dzIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpCiB7CkBAIC0xNDU3LDcgKzE3OTAsNiBAQAogICBmb3IgKGl0ZXIgPSBkZW11eC0+c3RyZWFtczsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0IChpdGVyKSkgewogICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKnN0cmVhbSA9IGl0ZXItPmRhdGE7CiAKLSAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogICAgIGlmIChzdHJlYW0tPmxhc3RfcmV0ICE9IEdTVF9GTE9XX05PVF9MSU5LRUQpIHsKICAgICAgIGFsbF9ub3RsaW5rZWQgPSBGQUxTRTsKICAgICAgIGlmIChzdHJlYW0tPmxhc3RfcmV0ICE9IEdTVF9GTE9XX0VPUykKQEAgLTE0NjYsMTAgKzE3OTgsOCBAQAogCiAgICAgaWYgKHN0cmVhbS0+bGFzdF9yZXQgPD0gR1NUX0ZMT1dfTk9UX05FR09USUFURUQKICAgICAgICAgfHwgc3RyZWFtLT5sYXN0X3JldCA9PSBHU1RfRkxPV19GTFVTSElORykgewotICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogICAgICAgcmV0dXJuIHN0cmVhbS0+bGFzdF9yZXQ7CiAgICAgfQotICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKICAgfQogICBpZiAoYWxsX25vdGxpbmtlZCkKICAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX0xJTktFRDsKQEAgLTE0NzgsNiArMTgwOCw5IEBACiAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuLgorICogVGVtcG9yYXJpbHkgcmVsZWFzZXMgbWFuaWZlc3RfbG9jaworICovCiBHc3RGbG93UmV0dXJuCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3B1c2hfYnVmZmVyIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLAogICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKQEAgLTE0ODUsNiArMTgxOCw5IEBACiAgIEdzdEFkYXB0aXZlRGVtdXggKmRlbXV4ID0gc3RyZWFtLT5kZW11eDsKICAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKICAgZ2Jvb2xlYW4gZGlzY29udCA9IEZBTFNFOworICAvKiBQZW5kaW5nIGV2ZW50cyAqLworICBHc3RFdmVudCAqcGVuZGluZ19jYXBzID0gTlVMTCwgKnBlbmRpbmdfc2VnbWVudCA9IE5VTEwsICpwZW5kaW5nX3RhZ3MgPSBOVUxMOworICBHTGlzdCAqcGVuZGluZ19ldmVudHMgPSBOVUxMOwogCiAgIGlmIChzdHJlYW0tPmZpcnN0X2ZyYWdtZW50X2J1ZmZlcikgewogICAgIEdzdENsb2NrVGltZSBvZmZzZXQgPQpAQCAtMTQ5Miw2ICsxODI4LDcgQEAKICAgICBHc3RDbG9ja1RpbWUgcGVyaW9kX3N0YXJ0ID0KICAgICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X2dldF9wZXJpb2Rfc3RhcnRfdGltZSAoZGVtdXgpOwogCisgICAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfTE9DSyAoZGVtdXgpOwogICAgIGlmIChkZW11eC0+c2VnbWVudC5yYXRlIDwgMCkKICAgICAgIC8qIFNldCBESVNDT05UIGZsYWcgZm9yIGV2ZXJ5IGZpcnN0IGJ1ZmZlciBpbiByZXZlcnNlIHBsYXliYWNrIG1vZGUKICAgICAgICAqIGFzIGVhY2ggZnJhZ21lbnQgZm9yIGl0cyBvd24gaGFzIHRvIGJlIHJldmVyc2VkICovCkBAIC0xNTExLDYgKzE4NDgsMTEgQEAKICAgICAgICAgZGVtdXgtPnNlZ21lbnQucG9zaXRpb24gPQogICAgICAgICAgICAgc3RyZWFtLT5zZWdtZW50LnBvc2l0aW9uIC0gb2Zmc2V0ICsgcGVyaW9kX3N0YXJ0OwogICAgIH0KKyAgICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9VTkxPQ0sgKGRlbXV4KTsKKworICAgIEdTVF9MT0dfT0JKRUNUIChzdHJlYW0tPnBhZCwKKyAgICAgICAgIkdvaW5nIHRvIHB1c2ggYnVmZmVyIHdpdGggUFRTICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgICAgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcikpKTsKICAgfSBlbHNlIHsKICAgICBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKSA9IEdTVF9DTE9DS19USU1FX05PTkU7CiAgIH0KQEAgLTE1MzEsNDMgKzE4NzMsODUgQEAKIAogICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgR1NUX0JVRkZFUl9EVFMgKGJ1ZmZlcikgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotCiAgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPnBlbmRpbmdfY2FwcykpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIlNldHRpbmcgcGVuZGluZyBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwKLSAgICAgICAgc3RyZWFtLT5wZW5kaW5nX2NhcHMpOwotICAgIGdzdF9wYWRfc2V0X2NhcHMgKHN0cmVhbS0+cGFkLCBzdHJlYW0tPnBlbmRpbmdfY2Fwcyk7CisgICAgcGVuZGluZ19jYXBzID0gZ3N0X2V2ZW50X25ld19jYXBzIChzdHJlYW0tPnBlbmRpbmdfY2Fwcyk7CiAgICAgZ3N0X2NhcHNfdW5yZWYgKHN0cmVhbS0+cGVuZGluZ19jYXBzKTsKICAgICBzdHJlYW0tPnBlbmRpbmdfY2FwcyA9IE5VTEw7CiAgIH0KICAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+cGVuZGluZ19zZWdtZW50KSkgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiU2VuZGluZyBwZW5kaW5nIHNlZzogJSIgR1NUX1BUUl9GT1JNQVQsCi0gICAgICAgIHN0cmVhbS0+cGVuZGluZ19zZWdtZW50KTsKLSAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKHN0cmVhbS0+cGFkLCBzdHJlYW0tPnBlbmRpbmdfc2VnbWVudCk7CisgICAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfTE9DSyAoZGVtdXgpOworICAgIHBlbmRpbmdfc2VnbWVudCA9IHN0cmVhbS0+cGVuZGluZ19zZWdtZW50OwogICAgIHN0cmVhbS0+cGVuZGluZ19zZWdtZW50ID0gTlVMTDsKKyAgICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9VTkxPQ0sgKGRlbXV4KTsKICAgfQotICBpZiAoR19VTkxJS0VMWSAoc3RyZWFtLT5wZW5kaW5nX3RhZ3MpKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJTZW5kaW5nIHBlbmRpbmcgdGFnczogJSIgR1NUX1BUUl9GT1JNQVQsCi0gICAgICAgIHN0cmVhbS0+cGVuZGluZ190YWdzKTsKLSAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKHN0cmVhbS0+cGFkLCBnc3RfZXZlbnRfbmV3X3RhZyAoc3RyZWFtLT5wZW5kaW5nX3RhZ3MpKTsKKyAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+cGVuZGluZ190YWdzIHx8IHN0cmVhbS0+Yml0cmF0ZV9jaGFuZ2VkKSkgeworICAgIEdzdFRhZ0xpc3QgKnRhZ3MgPSBzdHJlYW0tPnBlbmRpbmdfdGFnczsKKwogICAgIHN0cmVhbS0+cGVuZGluZ190YWdzID0gTlVMTDsKKyAgICBzdHJlYW0tPmJpdHJhdGVfY2hhbmdlZCA9IDA7CisKKyAgICBpZiAoc3RyZWFtLT5mcmFnbWVudC5iaXRyYXRlICE9IDApIHsKKyAgICAgIGlmICh0YWdzKQorICAgICAgICB0YWdzID0gZ3N0X3RhZ19saXN0X21ha2Vfd3JpdGFibGUgKHRhZ3MpOworICAgICAgZWxzZQorICAgICAgICB0YWdzID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKKworICAgICAgZ3N0X3RhZ19saXN0X2FkZCAodGFncywgR1NUX1RBR19NRVJHRV9LRUVQLAorICAgICAgICAgIEdTVF9UQUdfTk9NSU5BTF9CSVRSQVRFLCBzdHJlYW0tPmZyYWdtZW50LmJpdHJhdGUsIE5VTEwpOworICAgIH0KKyAgICBwZW5kaW5nX3RhZ3MgPSBnc3RfZXZlbnRfbmV3X3RhZyAodGFncyk7CiAgIH0KLSAgd2hpbGUgKHN0cmVhbS0+cGVuZGluZ19ldmVudHMgIT0gTlVMTCkgewotICAgIEdzdEV2ZW50ICpldmVudCA9IHN0cmVhbS0+cGVuZGluZ19ldmVudHMtPmRhdGE7CisgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPnBlbmRpbmdfZXZlbnRzKSkgeworICAgIHBlbmRpbmdfZXZlbnRzID0gc3RyZWFtLT5wZW5kaW5nX2V2ZW50czsKKyAgICBzdHJlYW0tPnBlbmRpbmdfZXZlbnRzID0gTlVMTDsKKyAgfQorCisgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKworICAvKiBEbyBub3QgcHVzaCBldmVudHMgb3IgYnVmZmVycyBob2xkaW5nIHRoZSBtYW5pZmVzdCBsb2NrICovCisgIGlmIChHX1VOTElLRUxZIChwZW5kaW5nX2NhcHMpKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJTZXR0aW5nIHBlbmRpbmcgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsCisgICAgICAgIHBlbmRpbmdfY2Fwcyk7CisgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChzdHJlYW0tPnBhZCwgcGVuZGluZ19jYXBzKTsKKyAgfQorICBpZiAoR19VTkxJS0VMWSAocGVuZGluZ19zZWdtZW50KSkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiU2VuZGluZyBwZW5kaW5nIHNlZzogJSIgR1NUX1BUUl9GT1JNQVQsCisgICAgICAgIHBlbmRpbmdfc2VnbWVudCk7CisgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChzdHJlYW0tPnBhZCwgcGVuZGluZ19zZWdtZW50KTsKKyAgfQorICBpZiAoR19VTkxJS0VMWSAocGVuZGluZ190YWdzKSkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiU2VuZGluZyBwZW5kaW5nIHRhZ3M6ICUiIEdTVF9QVFJfRk9STUFULAorICAgICAgICBwZW5kaW5nX3RhZ3MpOworICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoc3RyZWFtLT5wYWQsIHBlbmRpbmdfdGFncyk7CisgIH0KKyAgd2hpbGUgKHBlbmRpbmdfZXZlbnRzICE9IE5VTEwpIHsKKyAgICBHc3RFdmVudCAqZXZlbnQgPSBwZW5kaW5nX2V2ZW50cy0+ZGF0YTsKIAogICAgIGlmICghZ3N0X3BhZF9wdXNoX2V2ZW50IChzdHJlYW0tPnBhZCwgZXZlbnQpKQogICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc3RyZWFtLT5wYWQsICJGYWlsZWQgdG8gc2VuZCBwZW5kaW5nIGV2ZW50Iik7CiAKLSAgICBzdHJlYW0tPnBlbmRpbmdfZXZlbnRzID0KLSAgICAgICAgZ19saXN0X2RlbGV0ZV9saW5rIChzdHJlYW0tPnBlbmRpbmdfZXZlbnRzLCBzdHJlYW0tPnBlbmRpbmdfZXZlbnRzKTsKKyAgICBwZW5kaW5nX2V2ZW50cyA9IGdfbGlzdF9kZWxldGVfbGluayAocGVuZGluZ19ldmVudHMsIHBlbmRpbmdfZXZlbnRzKTsKICAgfQogCiAgIHJldCA9IGdzdF9wYWRfcHVzaCAoc3RyZWFtLT5wYWQsIGJ1ZmZlcik7CisKKyAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKworICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICBpZiAoR19VTkxJS0VMWSAoc3RyZWFtLT5jYW5jZWxsZWQpKSB7CisgICAgcmV0ID0gc3RyZWFtLT5sYXN0X3JldCA9IEdTVF9GTE9XX0ZMVVNISU5HOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICByZXR1cm4gcmV0OworICB9CisgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKwogICBHU1RfTE9HX09CSkVDVCAoc3RyZWFtLT5wYWQsICJQdXNoIHJlc3VsdDogJWQgJXMiLCByZXQsCiAgICAgICBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSk7CiAKICAgcmV0dXJuIHJldDsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9maW5pc2hfZnJhZ21lbnRfZGVmYXVsdCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAogICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pCkBAIC0xNTgwLDYgKzE5NjQsOSBAQAogICAgICAgc3RyZWFtLT5mcmFnbWVudC5kdXJhdGlvbik7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbi4KKyAqIENhbiB0ZW1wb3JhcmlseSByZWxlYXNlIG1hbmlmZXN0X2xvY2sKKyAqLwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZGF0YV9yZWNlaXZlZF9kZWZhdWx0IChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCiAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSkKQEAgLTE1OTQsMTIgKzE5ODEsMjggQEAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBfc3JjX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmZmVyKQogewotICBHc3RQYWQgKnNyY3BhZCA9IChHc3RQYWQgKikgcGFyZW50OwotICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPSBnc3RfcGFkX2dldF9lbGVtZW50X3ByaXZhdGUgKHNyY3BhZCk7Ci0gIEdzdEFkYXB0aXZlRGVtdXggKmRlbXV4ID0gc3RyZWFtLT5kZW11eDsKLSAgR3N0QWRhcHRpdmVEZW11eENsYXNzICprbGFzcyA9IEdTVF9BREFQVElWRV9ERU1VWF9HRVRfQ0xBU1MgKGRlbXV4KTsKKyAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqc3RyZWFtOworICBHc3RBZGFwdGl2ZURlbXV4ICpkZW11eDsKKyAgR3N0QWRhcHRpdmVEZW11eENsYXNzICprbGFzczsKICAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKIAorICBkZW11eCA9IEdTVF9BREFQVElWRV9ERU1VWF9DQVNUIChwYXJlbnQpOworICBzdHJlYW0gPSBnc3RfcGFkX2dldF9lbGVtZW50X3ByaXZhdGUgKHBhZCk7CisgIGtsYXNzID0gR1NUX0FEQVBUSVZFX0RFTVVYX0dFVF9DTEFTUyAoZGVtdXgpOworCisgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKKyAgLyogZG8gbm90IG1ha2UgYW55IGNoYW5nZXMgaWYgdGhlIHN0cmVhbSBpcyBjYW5jZWxsZWQgKi8KKyAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgeworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOworICAgIHJldCA9IHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKKyAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisgICAgcmV0dXJuIHJldDsKKyAgfQorICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisKICAgaWYgKHN0cmVhbS0+c3RhcnRpbmdfZnJhZ21lbnQpIHsKICAgICBHc3RDbG9ja1RpbWUgb2Zmc2V0ID0KICAgICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9nZXRfcHJlc2VudGF0aW9uX29mZnNldCAoZGVtdXgsIHN0cmVhbSk7CkBAIC0xNjA4LDcgKzIwMTEsMTAgQEAKIAogICAgIHN0cmVhbS0+c3RhcnRpbmdfZnJhZ21lbnQgPSBGQUxTRTsKICAgICBpZiAoa2xhc3MtPnN0YXJ0X2ZyYWdtZW50KSB7Ci0gICAgICBrbGFzcy0+c3RhcnRfZnJhZ21lbnQgKGRlbXV4LCBzdHJlYW0pOworICAgICAgaWYgKCFrbGFzcy0+c3RhcnRfZnJhZ21lbnQgKGRlbXV4LCBzdHJlYW0pKSB7CisgICAgICAgIHJldCA9IEdTVF9GTE9XX0VSUk9SOworICAgICAgICBnb3RvIGVycm9yOworICAgICAgfQogICAgIH0KIAogICAgIEdTVF9CVUZGRVJfUFRTIChidWZmZXIpID0gc3RyZWFtLT5mcmFnbWVudC50aW1lc3RhbXA7CkBAIC0xNjE5LDYgKzIwMjUsNyBAQAogICAgICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKSkpOwogCiAgICAgaWYgKEdTVF9CVUZGRVJfUFRTX0lTX1ZBTElEIChidWZmZXIpKSB7CisgICAgICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9MT0NLIChkZW11eCk7CiAgICAgICBzdHJlYW0tPnNlZ21lbnQucG9zaXRpb24gPSBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKTsKIAogICAgICAgLyogQ29udmVydCBmcm9tIHBvc2l0aW9uIGluc2lkZSB0aGUgc3RyZWFtJ3Mgc2VnbWVudCB0byB0aGUgZGVtdXhlcidzCkBAIC0xNjI3LDI1ICsyMDM0LDYzIEBACiAgICAgICAgICAgZGVtdXgtPnNlZ21lbnQucG9zaXRpb24pCiAgICAgICAgIGRlbXV4LT5zZWdtZW50LnBvc2l0aW9uID0KICAgICAgICAgICAgIHN0cmVhbS0+c2VnbWVudC5wb3NpdGlvbiAtIG9mZnNldCArIHBlcmlvZF9zdGFydDsKKyAgICAgIEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX1VOTE9DSyAoZGVtdXgpOwogICAgIH0KIAogICB9IGVsc2UgewogICAgIEdTVF9CVUZGRVJfUFRTIChidWZmZXIpID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgfQorICBpZiAoc3RyZWFtLT5kb3dubG9hZGluZ19maXJzdF9idWZmZXIpIHsKKyAgICBnaW50NjQgY2h1bmtfc2l6ZSA9IDA7CisKKyAgICBzdHJlYW0tPmRvd25sb2FkaW5nX2ZpcnN0X2J1ZmZlciA9IEZBTFNFOworCisgICAgaWYgKCFzdHJlYW0tPmRvd25sb2FkaW5nX2hlYWRlciAmJiAhc3RyZWFtLT5kb3dubG9hZGluZ19pbmRleCkgeworICAgICAgLyogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYnVmZmVyIG9mIGEgZnJhZ21lbnQgKG5vdCB0aGUgaGVhZGVycyBvciBpbmRleCkKKyAgICAgICAqIGFuZCB3ZSBkb24ndCBoYXZlIGEgYmlyYXRlIGZyb20gdGhlIHN1Yi1jbGFzcywgdGhlbiBzZWUgaWYgd2UKKyAgICAgICAqIGNhbiB3b3JrIGl0IG91dCBmcm9tIHRoZSBmcmFnbWVudCBzaXplIGFuZCBkdXJhdGlvbiAqLworICAgICAgaWYgKHN0cmVhbS0+ZnJhZ21lbnQuYml0cmF0ZSA9PSAwICYmCisgICAgICAgICAgc3RyZWFtLT5mcmFnbWVudC5kdXJhdGlvbiAhPSAwICYmCisgICAgICAgICAgZ3N0X2VsZW1lbnRfcXVlcnlfZHVyYXRpb24gKHN0cmVhbS0+dXJpX2hhbmRsZXIsIEdTVF9GT1JNQVRfQllURVMsCisgICAgICAgICAgICAgICZjaHVua19zaXplKSkgeworICAgICAgICBndWludCBiaXRyYXRlID0gTUlOIChHX01BWFVJTlQsIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoY2h1bmtfc2l6ZSwKKyAgICAgICAgICAgICAgICA4ICogR1NUX1NFQ09ORCwgc3RyZWFtLT5mcmFnbWVudC5kdXJhdGlvbikpOworICAgICAgICBHU1RfTE9HX09CSkVDVCAoZGVtdXgsCisgICAgICAgICAgICAiRnJhZ21lbnQgaGFzIHNpemUgJSIgR19HVUlOVDY0X0ZPUk1BVCAiIGR1cmF0aW9uICUiIEdTVF9USU1FX0ZPUk1BVAorICAgICAgICAgICAgIiA9IGJpdHJhdGUgJXUiLCBjaHVua19zaXplLAorICAgICAgICAgICAgR1NUX1RJTUVfQVJHUyAoc3RyZWFtLT5mcmFnbWVudC5kdXJhdGlvbiksIGJpdHJhdGUpOworICAgICAgICBzdHJlYW0tPmZyYWdtZW50LmJpdHJhdGUgPSBiaXRyYXRlOworICAgICAgfQorICAgICAgaWYgKHN0cmVhbS0+ZnJhZ21lbnQuYml0cmF0ZSkgeworICAgICAgICBzdHJlYW0tPmJpdHJhdGVfY2hhbmdlZCA9IFRSVUU7CisgICAgICB9IGVsc2UgeworICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LCAiQml0cmF0ZSBmb3IgZnJhZ21lbnQgbm90IGF2YWlsYWJsZSIpOworICAgICAgfQorICAgIH0KKyAgfQogCiAgIHN0cmVhbS0+ZG93bmxvYWRfdG90YWxfdGltZSArPQogICAgICAgZ19nZXRfbW9ub3RvbmljX3RpbWUgKCkgLSBzdHJlYW0tPmRvd25sb2FkX2NodW5rX3N0YXJ0X3RpbWU7CiAgIHN0cmVhbS0+ZG93bmxvYWRfdG90YWxfYnl0ZXMgKz0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKTsKIAotICBzdHJlYW0tPmZyYWdtZW50X3RvdGFsX3NpemUgKz0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKTsKLSAgc3RyZWFtLT5mcmFnbWVudF90b3RhbF90aW1lICs9Ci0gICAgICBnX2dldF9tb25vdG9uaWNfdGltZSAoKSAtIHN0cmVhbS0+ZG93bmxvYWRfY2h1bmtfc3RhcnRfdGltZTsKLQogICBnc3RfYWRhcHRlcl9wdXNoIChzdHJlYW0tPmFkYXB0ZXIsIGJ1ZmZlcik7CiAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiUmVjZWl2ZWQgYnVmZmVyIG9mIHNpemUgJSIgR19HU0laRV9GT1JNQVQKICAgICAgICIuIE5vdyAlIiBHX0dTSVpFX0ZPUk1BVCAiIG9uIGFkYXB0ZXIiLCBnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpLAogICAgICAgZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlIChzdHJlYW0tPmFkYXB0ZXIpKTsKKwogICByZXQgPSBrbGFzcy0+ZGF0YV9yZWNlaXZlZCAoZGVtdXgsIHN0cmVhbSk7CisKKyAgaWYgKHJldCA9PSBHU1RfRkxPV19GTFVTSElORykgeworICAgIC8qIGRvIG5vdCBtYWtlIGFueSBjaGFuZ2VzIGlmIHRoZSBzdHJlYW0gaXMgY2FuY2VsbGVkICovCisgICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICBpZiAoR19VTkxJS0VMWSAoc3RyZWFtLT5jYW5jZWxsZWQpKSB7CisgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisgICAgICByZXR1cm4gcmV0OworICAgIH0KKyAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgIH0KKwogICBzdHJlYW0tPmRvd25sb2FkX2NodW5rX3N0YXJ0X3RpbWUgPSBnX2dldF9tb25vdG9uaWNfdGltZSAoKTsKIAogICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKSB7CkBAIC0xNjY1LDE2ICsyMTEwLDE4IEBACiAgICAgICByZXQgPSBHU1RfRkxPV19FT1M7ICAgICAgIC8qIHJldHVybiBFT1MgdG8gbWFrZSB0aGUgc291cmNlIHN0b3AgKi8KICAgfQogCitlcnJvcjoKKworICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKICAgcmV0dXJuIHJldDsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgdm9pZAogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9mcmFnbWVudF9kb3dubG9hZF9maW5pc2ggKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKgogICAgIHN0cmVhbSwgR3N0Rmxvd1JldHVybiByZXQsIEdFcnJvciAqIGVycikKIHsKLSAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKLSAgc3RyZWFtLT5kb3dubG9hZF9maW5pc2hlZCA9IFRSVUU7Ci0KICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJEb3dubG9hZCBmaW5pc2g6ICVkICVzIC0gZXJyOiAlcCIsIHJldCwKICAgICAgIGdzdF9mbG93X2dldF9uYW1lIChyZXQpLCBlcnIpOwogCkBAIC0xNjg3LDYgKzIxMzQsOCBAQAogICAgICAgc3RyZWFtLT5sYXN0X2Vycm9yID0gZ19lcnJvcl9jb3B5IChlcnIpOwogICAgIH0KICAgfQorICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICBzdHJlYW0tPmRvd25sb2FkX2ZpbmlzaGVkID0gVFJVRTsKICAgZ19jb25kX3NpZ25hbCAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfY29uZCk7CiAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKIH0KQEAgLTE2OTQsMTcgKzIxNDMsMjEgQEAKIHN0YXRpYyBnYm9vbGVhbgogX3NyY19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpCiB7Ci0gIEdzdFBhZCAqc3JjcGFkID0gR1NUX1BBRF9DQVNUIChwYXJlbnQpOwotICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPSBnc3RfcGFkX2dldF9lbGVtZW50X3ByaXZhdGUgKHNyY3BhZCk7CisgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKnN0cmVhbSA9IGdzdF9wYWRfZ2V0X2VsZW1lbnRfcHJpdmF0ZSAocGFkKTsKKyAgR3N0QWRhcHRpdmVEZW11eCAqZGVtdXggPSBzdHJlYW0tPmRlbXV4OwogCiAgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgewogICAgIGNhc2UgR1NUX0VWRU5UX0VPUzp7CiAgICAgICBHc3RBZGFwdGl2ZURlbXV4Q2xhc3MgKmtsYXNzOwogICAgICAgR3N0Rmxvd1JldHVybiByZXQ7CiAKLSAgICAgIGtsYXNzID0gR1NUX0FEQVBUSVZFX0RFTVVYX0dFVF9DTEFTUyAoc3RyZWFtLT5kZW11eCk7Ci0gICAgICByZXQgPSBrbGFzcy0+ZmluaXNoX2ZyYWdtZW50IChzdHJlYW0tPmRlbXV4LCBzdHJlYW0pOworICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKworICAgICAga2xhc3MgPSBHU1RfQURBUFRJVkVfREVNVVhfR0VUX0NMQVNTIChkZW11eCk7CisgICAgICByZXQgPSBrbGFzcy0+ZmluaXNoX2ZyYWdtZW50IChkZW11eCwgc3RyZWFtKTsKICAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZnJhZ21lbnRfZG93bmxvYWRfZmluaXNoIChzdHJlYW0sIHJldCwgTlVMTCk7CisKKyAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtMTcxOSw2ICsyMTcyLDggQEAKIHN0YXRpYyBnYm9vbGVhbgogX3NyY19xdWVyeSAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdFF1ZXJ5ICogcXVlcnkpCiB7CisgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKnN0cmVhbSA9IGdzdF9wYWRfZ2V0X2VsZW1lbnRfcHJpdmF0ZSAocGFkKTsKKwogICBzd2l0Y2ggKEdTVF9RVUVSWV9UWVBFIChxdWVyeSkpIHsKICAgICBjYXNlIEdTVF9RVUVSWV9BTExPQ0FUSU9OOgogICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMTcyNyw5ICsyMTgyLDEyIEBACiAgICAgICBicmVhazsKICAgfQogCi0gIHJldHVybiBnc3RfcGFkX3F1ZXJ5X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBxdWVyeSk7CisgIHJldHVybiBnc3RfcGFkX3BlZXJfcXVlcnkgKHN0cmVhbS0+cGFkLCBxdWVyeSk7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbi4KKyAqIENhbiB0ZW1wb3JhcmlseSByZWxlYXNlIG1hbmlmZXN0X2xvY2sKKyAqLwogc3RhdGljIGdib29sZWFuCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3dhaXRfbWFuaWZlc3RfdXBkYXRlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCiAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSkKQEAgLTE3NDAsMTMgKzIxOTgsMzMgQEAKICAgICogdXMgdG8gZG93bmxvYWQgaW4gdGhlIHBsYXlsaXN0IG9yIHRoZSBwbGF5bGlzdAogICAgKiBiZWNhbWUgbm9uLWxpdmUgKi8KICAgd2hpbGUgKFRSVUUpIHsKLSAgICBpZiAoZGVtdXgtPmNhbmNlbGxlZCkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiTm8gZnJhZ21lbnQgbGVmdCBidXQgbGl2ZSBwbGF5bGlzdCwgd2FpdCBhIGJpdCIpOworCisgICAgLyogZ2V0IHRoZSBtYW5pZmVzdF91cGRhdGVfbG9jayB3aGlsZSBzdGlsbCBob2xkaW5nIHRoZSBtYW5pZmVzdF9sb2NrLgorICAgICAqIFRoaXMgd2lsbCBwcmV2ZW50IG90aGVyIHRocmVhZHMgdG8gc2lnbmFsIHRoZSBjb25kaXRpb24gKHRoZXkgd2lsbCBuZWVkCisgICAgICogYm90aCBtYW5pZmVzdF9sb2NrIGFuZCBtYW5pZmVzdF91cGRhdGVfbG9jayBpbiBvcmRlciB0byBzaWduYWwpLgorICAgICAqIEl0IGNhbm5vdCBkZWFkbG9jayBiZWNhdXNlIGFsbCB0aHJlYWRzIGFsd2F5cyBnZXQgdGhlIG1hbmlmZXN0X2xvY2sgZmlyc3QKKyAgICAgKiBhbmQgbWFuaWZlc3RfdXBkYXRlX2xvY2sgc2Vjb25kLgorICAgICAqLworICAgIGdfbXV0ZXhfbG9jayAoJmRlbXV4LT5wcml2LT5tYW5pZmVzdF91cGRhdGVfbG9jayk7CisKKyAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKKyAgICBnX2NvbmRfd2FpdCAoJmRlbXV4LT5wcml2LT5tYW5pZmVzdF9jb25kLAorICAgICAgICAmZGVtdXgtPnByaXYtPm1hbmlmZXN0X3VwZGF0ZV9sb2NrKTsKKyAgICBnX211dGV4X3VubG9jayAoJmRlbXV4LT5wcml2LT5tYW5pZmVzdF91cGRhdGVfbG9jayk7CisKKyAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCisgICAgLyogY2hlY2sgZm9yIGNhbmNlbGxlZCBldmVyeSB0aW1lIHdlIGdldCB0aGUgbWFuaWZlc3RfbG9jayAqLworICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgewogICAgICAgcmV0ID0gRkFMU0U7CisgICAgICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CiAgICAgICBicmVhazsKICAgICB9Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIk5vIGZyYWdtZW50IGxlZnQgYnV0IGxpdmUgcGxheWxpc3QsIHdhaXQgYSBiaXQiKTsKLSAgICBnX2NvbmRfd2FpdCAoJmRlbXV4LT5tYW5pZmVzdF9jb25kLCBHU1RfTUFOSUZFU1RfR0VUX0xPQ0sgKGRlbXV4KSk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogCiAgICAgLyogR290IGEgbmV3IGZyYWdtZW50IG9yIG5vdCBsaXZlIGFueW1vcmU/ICovCiAgICAgaWYgKGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1faGFzX25leHRfZnJhZ21lbnQgKGRlbXV4LCBzdHJlYW0pKSB7CkBAIC0xNzY3LDM2ICsyMjQ1LDcgQEAKICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGdib29sZWFuCi1fYWRhcHRpdmVfZGVtdXhfcGFkX3JlbW92ZV9lb3Nfc3RpY2t5IChHc3RQYWQgKiBwYWQsIEdzdEV2ZW50ICoqIGV2ZW50LAotICAgIGdwb2ludGVyIHVkYXRhKQotewotICBpZiAoR1NUX0VWRU5UX1RZUEUgKCpldmVudCkgPT0gR1NUX0VWRU5UX0VPUykgewotICAgIGdzdF9ldmVudF9yZXBsYWNlIChldmVudCwgTlVMTCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9jbGVhcl9lb3NfYW5kX2ZsdXNoX3N0YXRlIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICoKLSAgICBzdHJlYW0pCi17Ci0gIEdzdFBhZCAqaW50ZXJuYWxfcGFkOwotCi0gIGludGVybmFsX3BhZCA9Ci0gICAgICBHU1RfUEFEX0NBU1QgKGdzdF9wcm94eV9wYWRfZ2V0X2ludGVybmFsIChHU1RfUFJPWFlfUEFEIChzdHJlYW0tPnBhZCkpKTsKLSAgZ3N0X3BhZF9zdGlja3lfZXZlbnRzX2ZvcmVhY2ggKGludGVybmFsX3BhZCwKLSAgICAgIF9hZGFwdGl2ZV9kZW11eF9wYWRfcmVtb3ZlX2Vvc19zdGlja3ksIE5VTEwpOwotICBHU1RfT0JKRUNUX0ZMQUdfVU5TRVQgKGludGVybmFsX3BhZCwgR1NUX1BBRF9GTEFHX0VPUyk7Ci0gIC8qIEluIGNhc2UgdGhlIHN0cmVhbSBpcyByZWNvdmVyaW5nIGZyb20gYSBmbHVzaGluZyBzZWVrIGl0IGlzIGFsc28gbmVlZGVkCi0gICAqIHRvIHJlbW92ZSB0aGUgZmx1c2hpbmcgc3RhdGUgZnJvbSB0aGlzIHBhZC4gVGhlIGZsdXNoaW5nIHN0YXRlIGlzIHNldAotICAgKiBiZWNhdXNlIG9mIHRoZSBmbG93IHJldHVybiBwcm9wYWdhdGluZyB1bnRpbCB0aGUgc291cmNlIGVsZW1lbnQgKi8KLSAgR1NUX1BBRF9VTlNFVF9GTFVTSElORyAoaW50ZXJuYWxfcGFkKTsKLQotICBnc3Rfb2JqZWN0X3VucmVmIChpbnRlcm5hbF9wYWQpOwotfQotCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV91cGRhdGVfc291cmNlIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLAogICAgIGNvbnN0IGdjaGFyICogdXJpLCBjb25zdCBnY2hhciAqIHJlZmVyZXIsIGdib29sZWFuIHJlZnJlc2gsCkBAIC0xODEzLDcgKzIyNjIsNyBAQAogICAgIGdjaGFyICpvbGRfcHJvdG9jb2wsICpuZXdfcHJvdG9jb2w7CiAgICAgZ2NoYXIgKm9sZF91cmk7CiAKLSAgICBvbGRfdXJpID0gZ3N0X3VyaV9oYW5kbGVyX2dldF91cmkgKEdTVF9VUklfSEFORExFUiAoc3RyZWFtLT5zcmMpKTsKKyAgICBvbGRfdXJpID0gZ3N0X3VyaV9oYW5kbGVyX2dldF91cmkgKEdTVF9VUklfSEFORExFUiAoc3RyZWFtLT51cmlfaGFuZGxlcikpOwogICAgIG9sZF9wcm90b2NvbCA9IGdzdF91cmlfZ2V0X3Byb3RvY29sIChvbGRfdXJpKTsKICAgICBuZXdfcHJvdG9jb2wgPSBnc3RfdXJpX2dldF9wcm90b2NvbCAodXJpKTsKIApAQCAtMTgyOCw3ICsyMjc3LDggQEAKICAgICAgIEdFcnJvciAqZXJyID0gTlVMTDsKIAogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJSZS11c2luZyBvbGQgc291cmNlIGVsZW1lbnQiKTsKLSAgICAgIGlmICghZ3N0X3VyaV9oYW5kbGVyX3NldF91cmkgKEdTVF9VUklfSEFORExFUiAoc3RyZWFtLT5zcmMpLCB1cmksICZlcnIpKSB7CisgICAgICBpZiAoIWdzdF91cmlfaGFuZGxlcl9zZXRfdXJpIChHU1RfVVJJX0hBTkRMRVIgKHN0cmVhbS0+dXJpX2hhbmRsZXIpLCB1cmksCisgICAgICAgICAgICAgICZlcnIpKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiRmFpbGVkIHRvIHJlLXVzZSBvbGQgc291cmNlIGVsZW1lbnQ6ICVzIiwKICAgICAgICAgICAgIGVyci0+bWVzc2FnZSk7CiAgICAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOwpAQCAtMTg0NSwyMiArMjI5NSw0MiBAQAogICB9CiAKICAgaWYgKHN0cmVhbS0+c3JjID09IE5VTEwpIHsKKyAgICBHc3RQYWQgKnVyaV9oYW5kbGVyX3NyYzsKKyAgICBHc3RQYWQgKnF1ZXVlX3Npbms7CisgICAgR3N0UGFkICpxdWV1ZV9zcmM7CisgICAgR3N0RWxlbWVudCAqdXJpX2hhbmRsZXI7CisgICAgR3N0RWxlbWVudCAqcXVldWU7CisgICAgR3N0UGFkTGlua1JldHVybiBwYWRfbGlua19yZXQ7CiAgICAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOwotICAgIEdzdFBhZCAqaW50ZXJuYWxfcGFkOworICAgIGdjaGFyICppbnRlcm5hbF9uYW1lLCAqYmluX25hbWU7CiAKLSAgICBzdHJlYW0tPnNyYyA9IGdzdF9lbGVtZW50X21ha2VfZnJvbV91cmkgKEdTVF9VUklfU1JDLCB1cmksIE5VTEwsIE5VTEwpOwotICAgIGlmIChzdHJlYW0tPnNyYyA9PSBOVUxMKSB7CisgICAgLyogT3VyIHNyYyBjb25zaXN0cyBvZiBhIGJpbiBjb250YWluaW5nIHVyaV9oYW5kbGVyIC0+IHF1ZXVlMiAuIFRoZQorICAgICAqIHB1cnBvc2Ugb2YgdGhlIHF1ZXVlMiBpcyB0byBhbGxvdyB0aGUgdXJpX2hhbmRsZXIgdG8gZG93bmxvYWQgYW4KKyAgICAgKiBlbnRpcmUgZnJhZ21lbnQgd2l0aG91dCBibG9ja2luZywgc28gd2UgY2FuIGFjY3VyYXRlbHkgbWVhc3VyZSB0aGUKKyAgICAgKiBkb3dubG9hZCBiaXRyYXRlLiAqLworCisgICAgcXVldWUgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJxdWV1ZTIiLCBOVUxMKTsKKyAgICBpZiAocXVldWUgPT0gTlVMTCkKKyAgICAgIHJldHVybiBGQUxTRTsKKworICAgIGdfb2JqZWN0X3NldCAocXVldWUsICJtYXgtc2l6ZS1ieXRlcyIsIChndWludCkgU1JDX1FVRVVFX01BWF9CWVRFUywgTlVMTCk7CisgICAgZ19vYmplY3Rfc2V0IChxdWV1ZSwgIm1heC1zaXplLWJ1ZmZlcnMiLCAoZ3VpbnQpIDAsIE5VTEwpOworICAgIGdfb2JqZWN0X3NldCAocXVldWUsICJtYXgtc2l6ZS10aW1lIiwgKGd1aW50NjQpIDAsIE5VTEwpOworCisgICAgdXJpX2hhbmRsZXIgPSBnc3RfZWxlbWVudF9tYWtlX2Zyb21fdXJpIChHU1RfVVJJX1NSQywgdXJpLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAodXJpX2hhbmRsZXIgPT0gTlVMTCkgewogICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGRlbXV4LCBDT1JFLCBNSVNTSU5HX1BMVUdJTiwKICAgICAgICAgICAoIk1pc3NpbmcgcGx1Z2luIHRvIGhhbmRsZSBVUkk6ICclcyciLCB1cmkpLCAoTlVMTCkpOworICAgICAgZ3N0X29iamVjdF91bnJlZiAocXVldWUpOwogICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KIAotICAgIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9HRVRfQ0xBU1MgKHN0cmVhbS0+c3JjKTsKKyAgICBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfR0VUX0NMQVNTICh1cmlfaGFuZGxlcik7CiAKICAgICBpZiAoZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgImNvbXByZXNzIikpCi0gICAgICBnX29iamVjdF9zZXQgKHN0cmVhbS0+c3JjLCAiY29tcHJlc3MiLCBGQUxTRSwgTlVMTCk7CisgICAgICBnX29iamVjdF9zZXQgKHVyaV9oYW5kbGVyLCAiY29tcHJlc3MiLCBGQUxTRSwgTlVMTCk7CiAgICAgaWYgKGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsICJrZWVwLWFsaXZlIikpCi0gICAgICBnX29iamVjdF9zZXQgKHN0cmVhbS0+c3JjLCAia2VlcC1hbGl2ZSIsIFRSVUUsIE5VTEwpOworICAgICAgZ19vYmplY3Rfc2V0ICh1cmlfaGFuZGxlciwgImtlZXAtYWxpdmUiLCBUUlVFLCBOVUxMKTsKICAgICBpZiAoZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgImV4dHJhLWhlYWRlcnMiKSkgewogICAgICAgaWYgKHJlZmVyZXIgfHwgcmVmcmVzaCB8fCAhYWxsb3dfY2FjaGUpIHsKICAgICAgICAgR3N0U3RydWN0dXJlICpleHRyYV9oZWFkZXJzID0gZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkgKCJoZWFkZXJzIik7CkBAIC0xODc2LDM3ICsyMzQ2LDg2IEBACiAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKGV4dHJhX2hlYWRlcnMsICJDYWNoZS1Db250cm9sIiwgR19UWVBFX1NUUklORywKICAgICAgICAgICAgICAgIm1heC1hZ2U9MCIsIE5VTEwpOwogCi0gICAgICAgIGdfb2JqZWN0X3NldCAoc3RyZWFtLT5zcmMsICJleHRyYS1oZWFkZXJzIiwgZXh0cmFfaGVhZGVycywgTlVMTCk7CisgICAgICAgIGdfb2JqZWN0X3NldCAodXJpX2hhbmRsZXIsICJleHRyYS1oZWFkZXJzIiwgZXh0cmFfaGVhZGVycywgTlVMTCk7CiAKICAgICAgICAgZ3N0X3N0cnVjdHVyZV9mcmVlIChleHRyYV9oZWFkZXJzKTsKICAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGdfb2JqZWN0X3NldCAoc3RyZWFtLT5zcmMsICJleHRyYS1oZWFkZXJzIiwgTlVMTCwgTlVMTCk7CisgICAgICAgIGdfb2JqZWN0X3NldCAodXJpX2hhbmRsZXIsICJleHRyYS1oZWFkZXJzIiwgTlVMTCwgTlVMTCk7CiAgICAgICB9CiAgICAgfQogCisgICAgLyogU291cmNlIGJpbiBjcmVhdGlvbiAqLworICAgIGJpbl9uYW1lID0gZ19zdHJkdXBfcHJpbnRmICgic3JjYmluLSVzIiwgR1NUX1BBRF9OQU1FIChzdHJlYW0tPnBhZCkpOworICAgIHN0cmVhbS0+c3JjID0gZ3N0X2Jpbl9uZXcgKGJpbl9uYW1lKTsKKyAgICBnX2ZyZWUgKGJpbl9uYW1lKTsKKyAgICBpZiAoc3RyZWFtLT5zcmMgPT0gTlVMTCkgeworICAgICAgZ3N0X29iamVjdF91bnJlZiAocXVldWUpOworICAgICAgZ3N0X29iamVjdF91bnJlZiAodXJpX2hhbmRsZXIpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGdzdF9iaW5fYWRkIChHU1RfQklOX0NBU1QgKHN0cmVhbS0+c3JjKSwgcXVldWUpOworICAgIGdzdF9iaW5fYWRkIChHU1RfQklOX0NBU1QgKHN0cmVhbS0+c3JjKSwgdXJpX2hhbmRsZXIpOworCisgICAgdXJpX2hhbmRsZXJfc3JjID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHVyaV9oYW5kbGVyLCAic3JjIik7CisgICAgcXVldWVfc2luayA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChxdWV1ZSwgInNpbmsiKTsKKworICAgIHBhZF9saW5rX3JldCA9CisgICAgICAgIGdzdF9wYWRfbGlua19mdWxsICh1cmlfaGFuZGxlcl9zcmMsIHF1ZXVlX3NpbmssCisgICAgICAgIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKTsKKyAgICBpZiAoR1NUX1BBRF9MSU5LX0ZBSUxFRCAocGFkX2xpbmtfcmV0KSkgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwKKyAgICAgICAgICAiQ291bGQgbm90IGxpbmsgcGFkcyAlczolcyB0byAlczolcyBmb3IgcmVhc29uICVkIiwKKyAgICAgICAgICBHU1RfREVCVUdfUEFEX05BTUUgKHVyaV9oYW5kbGVyX3NyYyksIEdTVF9ERUJVR19QQURfTkFNRSAocXVldWVfc2luayksCisgICAgICAgICAgcGFkX2xpbmtfcmV0KTsKKyAgICAgIGdfb2JqZWN0X3VucmVmIChxdWV1ZV9zaW5rKTsKKyAgICAgIGdfb2JqZWN0X3VucmVmICh1cmlfaGFuZGxlcl9zcmMpOworICAgICAgZ3N0X29iamVjdF91bnJlZiAoc3RyZWFtLT5zcmMpOworICAgICAgc3RyZWFtLT5zcmMgPSBOVUxMOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGdfb2JqZWN0X3VucmVmIChxdWV1ZV9zaW5rKTsKKyAgICBnX29iamVjdF91bnJlZiAodXJpX2hhbmRsZXJfc3JjKTsKKyAgICBxdWV1ZV9zcmMgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAocXVldWUsICJzcmMiKTsKKyAgICBzdHJlYW0tPnNyY19zcmNwYWQgPSBnc3RfZ2hvc3RfcGFkX25ldyAoInNyYyIsIHF1ZXVlX3NyYyk7CisgICAgZ19vYmplY3RfdW5yZWYgKHF1ZXVlX3NyYyk7CisgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoc3RyZWFtLT5zcmMsIHN0cmVhbS0+c3JjX3NyY3BhZCk7CisKICAgICBnc3RfZWxlbWVudF9zZXRfbG9ja2VkX3N0YXRlIChzdHJlYW0tPnNyYywgVFJVRSk7CiAgICAgZ3N0X2Jpbl9hZGQgKEdTVF9CSU5fQ0FTVCAoZGVtdXgpLCBzdHJlYW0tPnNyYyk7CiAgICAgc3RyZWFtLT5zcmNfc3JjcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHN0cmVhbS0+c3JjLCAic3JjIik7CiAKLSAgICBnc3RfZ2hvc3RfcGFkX3NldF90YXJnZXQgKEdTVF9HSE9TVF9QQURfQ0FTVCAoc3RyZWFtLT5wYWQpLAotICAgICAgICBzdHJlYW0tPnNyY19zcmNwYWQpOwotCi0gICAgLyogc2V0IHVwIG91ciBpbnRlcm5hbCBwYWQgdG8gZHJvcCBhbGwgZXZlbnRzIGZyb20KKyAgICAvKiBzZXQgdXAgb3VyIGludGVybmFsIGZsb2F0aW5nIHBhZCB0byBkcm9wIGFsbCBldmVudHMgZnJvbQogICAgICAqIHRoZSBodHRwIHNyYyB3ZSBkb24ndCBjYXJlIGFib3V0LiBPbiB0aGUgY2hhaW4gZnVuY3Rpb24KLSAgICAgKiB3ZSBqdXN0IHB1c2ggdGhlIGJ1ZmZlciBmb3J3YXJkLCBidXQgdGhpcyB3YXkgZGFzaCBjYW4gZ2V0Ci0gICAgICogdGhlIGZsb3cgcmV0dXJuIGZyb20gZG93bnN0cmVhbSAqLwotICAgIGludGVybmFsX3BhZCA9Ci0gICAgICAgIEdTVF9QQURfQ0FTVCAoZ3N0X3Byb3h5X3BhZF9nZXRfaW50ZXJuYWwgKEdTVF9QUk9YWV9QQUQgKHN0cmVhbS0+cGFkKSkpOwotICAgIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uIChHU1RfUEFEX0NBU1QgKGludGVybmFsX3BhZCksIF9zcmNfY2hhaW4pOwotICAgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChHU1RfUEFEX0NBU1QgKGludGVybmFsX3BhZCksIF9zcmNfZXZlbnQpOwotICAgIC8qIG5lZWQgdG8gc2V0IHF1ZXJ5IG90aGVyd2lzZSBkZWFkbG9ja3MgaGFwcGVuIHdpdGggYWxsb2NhdGlvbiBxdWVyaWVzICovCi0gICAgZ3N0X3BhZF9zZXRfcXVlcnlfZnVuY3Rpb24gKEdTVF9QQURfQ0FTVCAoaW50ZXJuYWxfcGFkKSwgX3NyY19xdWVyeSk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAoaW50ZXJuYWxfcGFkKTsKKyAgICAgKiB3ZSBqdXN0IHB1c2ggdGhlIGJ1ZmZlciBmb3J3YXJkICovCisgICAgaW50ZXJuYWxfbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoImludGVybmFsLSVzIiwgR1NUX1BBRF9OQU1FIChzdHJlYW0tPnBhZCkpOworICAgIHN0cmVhbS0+aW50ZXJuYWxfcGFkID0gZ3N0X3BhZF9uZXcgKGludGVybmFsX25hbWUsIEdTVF9QQURfU0lOSyk7CisgICAgZ19mcmVlIChpbnRlcm5hbF9uYW1lKTsKKyAgICBnc3Rfb2JqZWN0X3NldF9wYXJlbnQgKEdTVF9PQkpFQ1RfQ0FTVCAoc3RyZWFtLT5pbnRlcm5hbF9wYWQpLAorICAgICAgICBHU1RfT0JKRUNUX0NBU1QgKGRlbXV4KSk7CisgICAgR1NUX09CSkVDVF9GTEFHX1NFVCAoc3RyZWFtLT5pbnRlcm5hbF9wYWQsIEdTVF9QQURfRkxBR19ORUVEX1BBUkVOVCk7CisgICAgZ3N0X3BhZF9zZXRfZWxlbWVudF9wcml2YXRlIChzdHJlYW0tPmludGVybmFsX3BhZCwgc3RyZWFtKTsKKyAgICBnc3RfcGFkX3NldF9hY3RpdmUgKHN0cmVhbS0+aW50ZXJuYWxfcGFkLCBUUlVFKTsKKyAgICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAoc3RyZWFtLT5pbnRlcm5hbF9wYWQsIF9zcmNfY2hhaW4pOworICAgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChzdHJlYW0tPmludGVybmFsX3BhZCwgX3NyY19ldmVudCk7CisgICAgZ3N0X3BhZF9zZXRfcXVlcnlfZnVuY3Rpb24gKHN0cmVhbS0+aW50ZXJuYWxfcGFkLCBfc3JjX3F1ZXJ5KTsKKworICAgIGlmIChnc3RfcGFkX2xpbmtfZnVsbCAoc3RyZWFtLT5zcmNfc3JjcGFkLCBzdHJlYW0tPmludGVybmFsX3BhZCwKKyAgICAgICAgICAgIEdTVF9QQURfTElOS19DSEVDS19OT1RISU5HKSAhPSBHU1RfUEFEX0xJTktfT0spIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiRmFpbGVkIHRvIGxpbmsgaW50ZXJuYWwgcGFkIik7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgc3RyZWFtLT51cmlfaGFuZGxlciA9IHVyaV9oYW5kbGVyOworICAgIHN0cmVhbS0+cXVldWUgPSBxdWV1ZTsKICAgfQogICByZXR1cm4gVFJVRTsKIH0KIAotLyogbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgc3RyZWFtJ3MgZnJhZ21lbnRfZG93bmxvYWRfbG9jayAqLworLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuLgorICogQ2FuIHRlbXBvcmFyaWx5IHJlbGVhc2UgbWFuaWZlc3RfbG9jaworICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9kb3dubG9hZF91cmkgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLCBjb25zdCBnY2hhciAqIHVyaSwgZ2ludDY0IHN0YXJ0LApAQCAtMTkxNiwxOSArMjQzNSwyMSBAQAogICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIkRvd25sb2FkaW5nIHVyaTogJXMsIHJhbmdlOiUiIEdfR0lOVDY0X0ZPUk1BVAogICAgICAgIiAtICUiIEdfR0lOVDY0X0ZPUk1BVCwgdXJpLCBzdGFydCwgZW5kKTsKIAotICBzdHJlYW0tPmRvd25sb2FkX2ZpbmlzaGVkID0gRkFMU0U7Ci0KICAgaWYgKCFnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3VwZGF0ZV9zb3VyY2UgKHN0cmVhbSwgdXJpLCBOVUxMLCBGQUxTRSwgVFJVRSkpIHsKLSAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogICAgIHJldCA9IHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19FUlJPUjsKLSAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CiAgICAgcmV0dXJuIHJldDsKICAgfQogCiAgIGlmIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHN0cmVhbS0+c3JjLAogICAgICAgICAgIEdTVF9TVEFURV9SRUFEWSkgIT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7CiAgICAgaWYgKHN0YXJ0ICE9IDAgfHwgZW5kICE9IC0xKSB7Ci0gICAgICBpZiAoIWdzdF9lbGVtZW50X3NlbmRfZXZlbnQgKHN0cmVhbS0+c3JjLCBnc3RfZXZlbnRfbmV3X3NlZWsgKDEuMCwKKyAgICAgIC8qIEhUVFAgcmFuZ2VzIGFyZSBpbmNsdXNpdmUsIEdTdHJlYW1lciBzZWdtZW50cyBhcmUgZXhjbHVzaXZlIGZvciB0aGUKKyAgICAgICAqIHN0b3AgcG9zaXRpb24gKi8KKyAgICAgIGlmIChlbmQgIT0gLTEpCisgICAgICAgIGVuZCArPSAxOworICAgICAgLyogU2VuZCB0aGUgc2VlayBldmVudCB0byB0aGUgdXJpX2hhbmRsZXIsIGFzIHRoZSBvdGhlciBwaXBlbGluZSBlbGVtZW50cworICAgICAgICogY2FuJ3QgaGFuZGxlIGl0IHdoZW4gUkVBRFkuICovCisgICAgICBpZiAoIWdzdF9lbGVtZW50X3NlbmRfZXZlbnQgKHN0cmVhbS0+dXJpX2hhbmRsZXIsIGdzdF9ldmVudF9uZXdfc2VlayAoMS4wLAogICAgICAgICAgICAgICAgICAgR1NUX0ZPUk1BVF9CWVRFUywgKEdzdFNlZWtGbGFncykgR1NUX1NFRUtfRkxBR19GTFVTSCwKICAgICAgICAgICAgICAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCBzdGFydCwgR1NUX1NFRUtfVFlQRV9TRVQsIGVuZCkpKSB7CiAKQEAgLTE5NDEsNDUgKzI0NjIsOTEgQEAKICAgICAgIH0KICAgICB9CiAKLSAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogICAgIGlmIChHX0xJS0VMWSAoc3RyZWFtLT5sYXN0X3JldCA9PSBHU1RfRkxPV19PSykpIHsKICAgICAgIHN0cmVhbS0+ZG93bmxvYWRfc3RhcnRfdGltZSA9IGdfZ2V0X21vbm90b25pY190aW1lICgpOwogICAgICAgc3RyZWFtLT5kb3dubG9hZF9jaHVua19zdGFydF90aW1lID0gZ19nZXRfbW9ub3RvbmljX3RpbWUgKCk7Ci0gICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7Ci0gICAgICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50IChzdHJlYW0tPnNyYyk7CisKKyAgICAgIC8qIHNyYyBlbGVtZW50IGlzIGluIHN0YXRlIFJFQURZLiBCZWZvcmUgd2Ugc3RhcnQgaXQsIHdlIHJlc2V0CisgICAgICAgKiBkb3dubG9hZF9maW5pc2hlZAorICAgICAgICovCiAgICAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgc3RyZWFtLT5kb3dubG9hZF9maW5pc2hlZCA9IEZBTFNFOworICAgICAgc3RyZWFtLT5kb3dubG9hZGluZ19maXJzdF9idWZmZXIgPSBUUlVFOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworCisgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKKyAgICAgIGlmICghZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudCAoc3RyZWFtLT5zcmMpKSB7CisgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsICJDb3VsZCBub3Qgc3luYyBzdGF0ZSBmb3Igc3JjIGVsZW1lbnQiKTsKKyAgICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKyAgICAgICAgcmV0ID0gc3RyZWFtLT5sYXN0X3JldCA9IEdTVF9GTE9XX0VSUk9SOworICAgICAgICByZXR1cm4gcmV0OworICAgICAgfQogCiAgICAgICAvKiB3YWl0IGZvciB0aGUgZnJhZ21lbnQgdG8gYmUgY29tcGxldGVseSBkb3dubG9hZGVkICovCiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwKICAgICAgICAgICAiV2FpdGluZyBmb3IgZnJhZ21lbnQgZG93bmxvYWQgdG8gZmluaXNoOiAlcyIsIHVyaSk7Ci0gICAgICB3aGlsZSAoIXN0cmVhbS0+ZGVtdXgtPmNhbmNlbGxlZCAmJiAhc3RyZWFtLT5kb3dubG9hZF9maW5pc2hlZCkgeworCisgICAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgeworICAgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisgICAgICAgIHJldCA9IHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgIH0KKyAgICAgIHdoaWxlICghc3RyZWFtLT5jYW5jZWxsZWQgJiYgIXN0cmVhbS0+ZG93bmxvYWRfZmluaXNoZWQpIHsKICAgICAgICAgZ19jb25kX3dhaXQgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2NvbmQsCiAgICAgICAgICAgICAmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKICAgICAgIH0KKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKworICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICBpZiAoR19VTkxJS0VMWSAoc3RyZWFtLT5jYW5jZWxsZWQpKSB7CisgICAgICAgIHJldCA9IHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKKyAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgICByZXR1cm4gcmV0OworICAgICAgfQorICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworCiAgICAgICByZXQgPSBzdHJlYW0tPmxhc3RfcmV0OwogCiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIkZyYWdtZW50IGRvd25sb2FkIGZpbmlzaGVkOiAlcyAlZCAlcyIsCiAgICAgICAgICAgdXJpLCBzdHJlYW0tPmxhc3RfcmV0LCBnc3RfZmxvd19nZXRfbmFtZSAoc3RyZWFtLT5sYXN0X3JldCkpOwogICAgIH0KLSAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CiAgIH0gZWxzZSB7Ci0gICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKICAgICBpZiAoc3RyZWFtLT5sYXN0X3JldCA9PSBHU1RfRkxPV19PSykKICAgICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19DVVNUT01fRVJST1I7CiAgICAgcmV0ID0gR1NUX0ZMT1dfQ1VTVE9NX0VSUk9SOwotICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKICAgfQogCi0gIC8qIGZsdXNoIHRoZSBwcm94eXBhZHMgc28gdGhhdCB0aGUgRU9TIHN0YXRlIGlzIHJlc2V0ICovCi0gIGdzdF9wYWRfcHVzaF9ldmVudCAoc3RyZWFtLT5zcmNfc3JjcGFkLCBnc3RfZXZlbnRfbmV3X2ZsdXNoX3N0YXJ0ICgpKTsKLSAgZ3N0X3BhZF9wdXNoX2V2ZW50IChzdHJlYW0tPnNyY19zcmNwYWQsIGdzdF9ldmVudF9uZXdfZmx1c2hfc3RvcCAoVFJVRSkpOworICAvKiBjaGFuZ2luZyBzcmMgZWxlbWVudCBzdGF0ZSBtaWdodCB0cnkgdG8gam9pbiB0aGUgc3RyZWFtaW5nIHRocmVhZCwgc28KKyAgICogd2UgbXVzdCBub3QgaG9sZCB0aGUgbWFuaWZlc3QgbG9jay4KKyAgICovCisgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKIAogICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHN0cmVhbS0+c3JjLCBHU1RfU1RBVEVfUkVBRFkpOwotICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2NsZWFyX2Vvc19hbmRfZmx1c2hfc3RhdGUgKHN0cmVhbSk7CisKKyAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKyAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgeworICAgIHJldCA9IHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKKyAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgcmV0dXJuIHJldDsKKyAgfQorICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisKKyAgLyogZGVhY3RpdmF0ZSBhbmQgcmVhY3RpdmF0ZSBvdXIgZ2hvc3RwYWQgdG8gbWFrZSBpdCBmcmVzaCBmb3IgYSBuZXcKKyAgICogc3RyZWFtICovCisgIGdzdF9wYWRfc2V0X2FjdGl2ZSAoc3RyZWFtLT5pbnRlcm5hbF9wYWQsIEZBTFNFKTsKKyAgZ3N0X3BhZF9zZXRfYWN0aXZlIChzdHJlYW0tPmludGVybmFsX3BhZCwgVFJVRSk7CiAKICAgcmV0dXJuIHJldDsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuLgorICogQ2FuIHRlbXBvcmFyaWx5IHJlbGVhc2UgbWFuaWZlc3RfbG9jaworICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9kb3dubG9hZF9oZWFkZXJfZnJhZ21lbnQgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKgogICAgIHN0cmVhbSkKQEAgLTIwMDAsNyArMjU2Nyw3IEBACiAgIH0KIAogICAvKiBjaGVjayBpZiB3ZSBoYXZlIGFuIGluZGV4ICovCi0gIGlmICghZGVtdXgtPmNhbmNlbGxlZCAmJiByZXQgPT0gR1NUX0ZMT1dfT0spIHsgICAgICAgIC8qIFRPRE8gY2hlY2sgZm9yIG90aGVyIHZhbGlkIHR5cGVzICovCisgIGlmIChyZXQgPT0gR1NUX0ZMT1dfT0spIHsgICAgIC8qIFRPRE8gY2hlY2sgZm9yIG90aGVyIHZhbGlkIHR5cGVzICovCiAKICAgICBpZiAoc3RyZWFtLT5mcmFnbWVudC5pbmRleF91cmkgIT0gTlVMTCkgewogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsCkBAIC0yMDE4LDYgKzI1ODUsOSBAQAogICByZXR1cm4gcmV0OwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4uCisgKiBDYW4gdGVtcG9yYXJpbHkgcmVsZWFzZSBtYW5pZmVzdF9sb2NrCisgKi8KIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2Rvd25sb2FkX2ZyYWdtZW50IChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKQogewpAQCAtMjAyNSwxMSArMjU5NSw5IEBACiAgIGdjaGFyICp1cmwgPSBOVUxMOwogICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOwogCi0gIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CiAgIHN0cmVhbS0+c3RhcnRpbmdfZnJhZ21lbnQgPSBUUlVFOwogICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfT0s7CiAgIHN0cmVhbS0+Zmlyc3RfZnJhZ21lbnRfYnVmZmVyID0gVFJVRTsKLSAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogCiAgIGlmIChzdHJlYW0tPmZyYWdtZW50LnVyaSA9PSBOVUxMICYmIHN0cmVhbS0+ZnJhZ21lbnQuaGVhZGVyX3VyaSA9PSBOVUxMICYmCiAgICAgICBzdHJlYW0tPmZyYWdtZW50LmluZGV4X3VyaSA9PSBOVUxMKQpAQCAtMjAzNywxMCArMjYwNSwxMCBAQAogCiAgIGlmIChzdHJlYW0tPm5lZWRfaGVhZGVyKSB7CiAgICAgcmV0ID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9kb3dubG9hZF9oZWFkZXJfZnJhZ21lbnQgKHN0cmVhbSk7Ci0gICAgc3RyZWFtLT5uZWVkX2hlYWRlciA9IEZBTFNFOwogICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spIHsKICAgICAgIHJldHVybiByZXQ7CiAgICAgfQorICAgIHN0cmVhbS0+bmVlZF9oZWFkZXIgPSBGQUxTRTsKICAgfQogCiAgIHVybCA9IHN0cmVhbS0+ZnJhZ21lbnQudXJpOwpAQCAtMjA1Miw3ICsyNjIwLDE0IEBACiAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJGcmFnbWVudCBkb3dubG9hZCByZXN1bHQ6ICVkICVzIiwKICAgICAgICAgc3RyZWFtLT5sYXN0X3JldCwgZ3N0X2Zsb3dfZ2V0X25hbWUgKHN0cmVhbS0+bGFzdF9yZXQpKTsKICAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKSB7Ci0gICAgICAvKiBUT0RPIGNoZWNrIGlmIHdlIGFyZSB0cnVseSBzdG9waW5nICovCisgICAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgeworICAgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgICB9CisgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisKKyAgICAgIC8qIFRPRE8gY2hlY2sgaWYgd2UgYXJlIHRydWx5IHN0b3BwaW5nICovCiAgICAgICBpZiAocmV0ID09IEdTVF9GTE9XX0NVU1RPTV9FUlJPUiAmJiBnc3RfYWRhcHRpdmVfZGVtdXhfaXNfbGl2ZSAoZGVtdXgpKSB7CiAgICAgICAgIGlmICgrK3N0cmVhbS0+ZG93bmxvYWRfZXJyb3JfY291bnQgPD0gTUFYX0RPV05MT0FEX0VSUk9SX0NPVU5UKSB7CiAgICAgICAgICAgLyogbG9va3MgbGlrZSB0aGVyZSBpcyBubyB3YXkgb2Yga25vd2luZyB3aGVuIGEgbGl2ZSBzdHJlYW0gaGFzIGVuZGVkCkBAIC0yMDg1LDY4ICsyNjYwLDgxIEBACiAgIH0KIH0KIAorLyogdGhpcyBmdW5jdGlvbiB3aWxsIHRha2UgdGhlIG1hbmlmZXN0X2xvY2sgYW5kIHdpbGwga2VlcCBpdCB1bnRpbCB0aGUgZW5kLgorICogSXQgd2lsbCByZWxlYXNlIGl0IHRlbXBvcmFyaWx5IG9ubHkgd2hlbiBnb2luZyB0byBzbGVlcC4KKyAqIEV2ZXJ5IHRpbWUgaXQgdGFrZXMgdGhlIG1hbmlmZXN0X2xvY2ssIGl0IHdpbGwgY2hlY2sgZm9yIGNhbmNlbGxlZCBjb25kaXRpb24KKyAqLwogc3RhdGljIHZvaWQKIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZG93bmxvYWRfbG9vcCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSkKIHsKICAgR3N0QWRhcHRpdmVEZW11eCAqZGVtdXggPSBzdHJlYW0tPmRlbXV4OwotICBndWludDY0IG5leHRfZG93bmxvYWQgPSAwOworICBndWludDY0IG5leHRfZG93bmxvYWQgPSBnX2dldF9tb25vdG9uaWNfdGltZSAoKTsKICAgR3N0Rmxvd1JldHVybiByZXQ7CiAgIGdib29sZWFuIGxpdmU7CiAKICAgR1NUX0xPR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiZG93bmxvYWQgbG9vcCBzdGFydCIpOwogCisgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKKyAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgeworICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKKyAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgZ290byBjYW5jZWxsZWQ7CisgIH0KKyAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworCiAgIC8qIENoZWNrIGlmIHdlJ3JlIGRvbmUgd2l0aCBvdXIgc2VnbWVudCAqLworICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9MT0NLIChkZW11eCk7CiAgIGlmIChkZW11eC0+c2VnbWVudC5yYXRlID4gMCkgewogICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoZGVtdXgtPnNlZ21lbnQuc3RvcCkKICAgICAgICAgJiYgc3RyZWFtLT5zZWdtZW50LnBvc2l0aW9uID49IHN0cmVhbS0+c2VnbWVudC5zdG9wKSB7CisgICAgICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9VTkxPQ0sgKGRlbXV4KTsKICAgICAgIHJldCA9IEdTVF9GTE9XX0VPUzsKICAgICAgIGdzdF90YXNrX3N0b3AgKHN0cmVhbS0+ZG93bmxvYWRfdGFzayk7CiAgICAgICBnb3RvIGVuZF9vZl9tYW5pZmVzdDsKICAgICB9CiAgIH0gZWxzZSB7CiAgICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChkZW11eC0+c2VnbWVudC5zdGFydCkKLSAgICAgICAgJiYgc3RyZWFtLT5zZWdtZW50LnBvc2l0aW9uIDwgc3RyZWFtLT5zZWdtZW50LnN0YXJ0KSB7CisgICAgICAgICYmIHN0cmVhbS0+c2VnbWVudC5wb3NpdGlvbiA8PSBzdHJlYW0tPnNlZ21lbnQuc3RhcnQpIHsKKyAgICAgIEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX1VOTE9DSyAoZGVtdXgpOwogICAgICAgcmV0ID0gR1NUX0ZMT1dfRU9TOwogICAgICAgZ3N0X3Rhc2tfc3RvcCAoc3RyZWFtLT5kb3dubG9hZF90YXNrKTsKICAgICAgIGdvdG8gZW5kX29mX21hbmlmZXN0OwogICAgIH0KICAgfQotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoZGVtdXgpOwotICBpZiAoZGVtdXgtPmNhbmNlbGxlZCkgewotICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKLSAgICBnb3RvIGNhbmNlbGxlZDsKLSAgfQorICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9VTkxPQ0sgKGRlbXV4KTsKIAogICAvKiBDbGVhbnVwIG9sZCBzdHJlYW1zIGlmIGFueSAqLwogICBpZiAoR19VTkxJS0VMWSAoZGVtdXgtPnByaXYtPm9sZF9zdHJlYW1zICE9IE5VTEwpKSB7CiAgICAgR0xpc3QgKm9sZF9zdHJlYW1zID0gZGVtdXgtPnByaXYtPm9sZF9zdHJlYW1zOwogICAgIGRlbXV4LT5wcml2LT5vbGRfc3RyZWFtcyA9IE5VTEw7Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKGRlbXV4KTsKIAotICAgIC8qIE5lZWQgdG8gdW5sb2NrIGFzIGl0IG1pZ2h0IHBvc3QgbWVzc2FnZXMgdG8gdGhlIGJ1cyAqLwogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiQ2xlYW5pbmcgdXAgb2xkIHN0cmVhbXMiKTsKICAgICBnX2xpc3RfZnJlZV9mdWxsIChvbGRfc3RyZWFtcywKICAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2ZyZWUpOwogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiQ2xlYW5pbmcgdXAgb2xkIHN0cmVhbXMgKGRvbmUpIik7Ci0gIH0gZWxzZSB7Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKGRlbXV4KTsKKworICAgIC8qIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZnJlZSBoYWQgdGVtcG9yYXJpbHkgcmVsZWFzZWQgdGhlIG1hbmlmZXN0X2xvY2suCisgICAgICogUmVjaGVjayB0aGUgY2FuY2VsbGVkIGZsYWcuCisgICAgICovCisgICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICBpZiAoR19VTkxJS0VMWSAoc3RyZWFtLT5jYW5jZWxsZWQpKSB7CisgICAgICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICBnb3RvIGNhbmNlbGxlZDsKKyAgICB9CisgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogICB9CiAKLSAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKICAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+cmVzdGFydF9kb3dubG9hZCkpIHsKLSAgICBHc3RTZWdtZW50IHNlZ21lbnQ7CiAgICAgR3N0RXZlbnQgKnNlZ19ldmVudDsKLSAgICBHc3RDbG9ja1RpbWUgY3VyLCB0czsKKyAgICBHc3RDbG9ja1RpbWUgY3VyLCB0cyA9IDA7CiAgICAgZ2ludDY0IHBvczsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLAogICAgICAgICAiQWN0aXZhdGluZyBzdHJlYW0gZHVlIHRvIHJlY29uZmlndXJlIGV2ZW50Iik7CiAKLSAgICBjdXIgPSB0cyA9Ci0gICAgICAgIGdzdF9zZWdtZW50X3RvX3N0cmVhbV90aW1lICgmc3RyZWFtLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCi0gICAgICAgIHN0cmVhbS0+c2VnbWVudC5wb3NpdGlvbik7Ci0KICAgICBpZiAoZ3N0X3BhZF9wZWVyX3F1ZXJ5X3Bvc2l0aW9uIChzdHJlYW0tPnBhZCwgR1NUX0ZPUk1BVF9USU1FLCAmcG9zKSkgewogICAgICAgdHMgPSAoR3N0Q2xvY2tUaW1lKSBwb3M7CiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIkRvd25zdHJlYW0gcG9zaXRpb246ICUiCkBAIC0yMTcxLDEyICsyNzU5LDE2IEBACiAgICAgICB9CiAgICAgfQogCisgICAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfTE9DSyAoZGVtdXgpOworICAgIGN1ciA9CisgICAgICAgIGdzdF9zZWdtZW50X3RvX3N0cmVhbV90aW1lICgmc3RyZWFtLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCisgICAgICAgIHN0cmVhbS0+c2VnbWVudC5wb3NpdGlvbik7CisKICAgICAvKiB3ZSBtaWdodCBoYXZlIGFscmVhZHkgcHVzaGVkIHRoaXMgZGF0YSAqLwogICAgIHRzID0gTUFYICh0cywgY3VyKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiUmVzdGFydGluZyBzdHJlYW0gYXQgIgogICAgICAgICAicG9zaXRpb24gJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTICh0cykpOwotICAgIGdzdF9zZWdtZW50X2NvcHlfaW50byAoJmRlbXV4LT5zZWdtZW50LCAmc2VnbWVudCk7CiAKICAgICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHRzKSkgewogICAgICAgR3N0Q2xvY2tUaW1lIG9mZnNldCwgcGVyaW9kX3N0YXJ0OwpAQCAtMjE4Niw5ICsyNzc4LDEwIEBACiAgICAgICBwZXJpb2Rfc3RhcnQgPSBnc3RfYWRhcHRpdmVfZGVtdXhfZ2V0X3BlcmlvZF9zdGFydF90aW1lIChkZW11eCk7CiAKICAgICAgIC8qIFRPRE8gY2hlY2sgcmV0dXJuICovCi0gICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3NlZWsgKGRlbXV4LCBzdHJlYW0sIHRzKTsKKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fc2VlayAoZGVtdXgsIHN0cmVhbSwgZGVtdXgtPnNlZ21lbnQucmF0ZSA+PSAwLAorICAgICAgICAgIDAsIHRzLCAmdHMpOwogCi0gICAgICBzZWdtZW50LnBvc2l0aW9uID0gdHMgLSBwZXJpb2Rfc3RhcnQgKyBvZmZzZXQ7CisgICAgICBzdHJlYW0tPnNlZ21lbnQucG9zaXRpb24gPSB0cyAtIHBlcmlvZF9zdGFydCArIG9mZnNldDsKICAgICB9CiAKICAgICAvKiBUaGUgc3RyZWFtJ3Mgc2VnbWVudCBpcyBzdGlsbCBjb3JyZWN0IGV4Y2VwdCBmb3IKQEAgLTIxOTYsMTkgKzI3ODksMTQgQEAKICAgICAgKiB1cGRhdGVkIHBvc2l0aW9uICovCiAgICAgc2VnX2V2ZW50ID0gZ3N0X2V2ZW50X25ld19zZWdtZW50ICgmc3RyZWFtLT5zZWdtZW50KTsKICAgICBnc3RfZXZlbnRfc2V0X3NlcW51bSAoc2VnX2V2ZW50LCBkZW11eC0+cHJpdi0+c2VnbWVudF9zZXFudW0pOworICAgIEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX1VOTE9DSyAoZGVtdXgpOworCiAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJTZW5kaW5nIHJlc3RhcnQgc2VnbWVudDogJSIKICAgICAgICAgR1NUX1BUUl9GT1JNQVQsIHNlZ19ldmVudCk7CiAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChzdHJlYW0tPnBhZCwgc2VnX2V2ZW50KTsKIAogICAgIHN0cmVhbS0+cmVzdGFydF9kb3dubG9hZCA9IEZBTFNFOwogICB9Ci0gIEdTVF9PQkpFQ1RfTE9DSyAoZGVtdXgpOwotICBpZiAoZGVtdXgtPmNhbmNlbGxlZCkgewotICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKLSAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7Ci0gICAgZ290byBjYW5jZWxsZWQ7Ci0gIH0KLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGRlbXV4KTsKIAogICBsaXZlID0gZ3N0X2FkYXB0aXZlX2RlbXV4X2lzX2xpdmUgKGRlbXV4KTsKIApAQCAtMjIyMSwzMiArMjgwOSw1NCBAQAogICAgIGlmIChsaXZlKSB7CiAgICAgICBnaW50NjQgd2FpdF90aW1lID0KICAgICAgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2dldF9mcmFnbWVudF93YWl0aW5nX3RpbWUgKGRlbXV4LCBzdHJlYW0pOwotICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwotICAgICAgaWYgKHdhaXRfdGltZSA+IDApCi0gICAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZG93bmxvYWRfd2FpdCAoc3RyZWFtLCB3YWl0X3RpbWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7Ci0gICAgfQorICAgICAgaWYgKHdhaXRfdGltZSA+IDApIHsKKyAgICAgICAgZ2ludDY0IGVuZF90aW1lID0gZ19nZXRfbW9ub3RvbmljX3RpbWUgKCkgKyB3YWl0X3RpbWUgLyBHU1RfVVNFQ09ORDsKIAotICAgIEdTVF9PQkpFQ1RfTE9DSyAoZGVtdXgpOwotICAgIGlmIChkZW11eC0+Y2FuY2VsbGVkKSB7Ci0gICAgICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7Ci0gICAgICBnb3RvIGNhbmNlbGxlZDsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJEb3dubG9hZCB3YWl0aW5nIGZvciAlIiBHU1RfVElNRV9GT1JNQVQsCisgICAgICAgICAgICBHU1RfVElNRV9BUkdTICh3YWl0X3RpbWUpKTsKKworICAgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKKyAgICAgICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICAgICAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgeworICAgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICAgICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworICAgICAgICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKKyAgICAgICAgICBnb3RvIGNhbmNlbGxlZDsKKyAgICAgICAgfQorICAgICAgICBnX2NvbmRfd2FpdF91bnRpbCAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfY29uZCwKKyAgICAgICAgICAgICZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2ssIGVuZF90aW1lKTsKKyAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworCisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiRG93bmxvYWQgZmluaXNoZWQgd2FpdGluZyIpOworCisgICAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKKyAgICAgICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICAgICAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgeworICAgICAgICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKKyAgICAgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICAgICAgZ290byBjYW5jZWxsZWQ7CisgICAgICAgIH0KKyAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgfQogICAgIH0KLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZGVtdXgpOwogCiAgICAgc3RyZWFtLT5sYXN0X3JldCA9IEdTVF9GTE9XX09LOworCiAgICAgbmV4dF9kb3dubG9hZCA9IGdfZ2V0X21vbm90b25pY190aW1lICgpOwogICAgIHJldCA9IGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZG93bmxvYWRfZnJhZ21lbnQgKHN0cmVhbSk7CiAKLSAgICBHU1RfT0JKRUNUX0xPQ0sgKGRlbXV4KTsKLSAgICBpZiAoZGVtdXgtPmNhbmNlbGxlZCkgewotICAgICAgc3RyZWFtLT5sYXN0X3JldCA9IEdTVF9GTE9XX0ZMVVNISU5HOwotICAgICAgZ290byBjYW5jZWxsZWQ7CisgICAgaWYgKHJldCA9PSBHU1RfRkxPV19GTFVTSElORykgeworICAgICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICAgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPmNhbmNlbGxlZCkpIHsKKyAgICAgICAgc3RyZWFtLT5sYXN0X3JldCA9IEdTVF9GTE9XX0ZMVVNISU5HOworICAgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICAgIGdvdG8gY2FuY2VsbGVkOworICAgICAgfQorICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogICAgIH0KLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZGVtdXgpOwogCi0gICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKICAgfSBlbHNlIHsKICAgICBzdHJlYW0tPmxhc3RfcmV0ID0gcmV0OwogICB9CkBAIC0yMjU5LDggKzI4NjksNyBAQAogICAgICAgLyogd2UgcHVzaCB0aGUgRU9TIGFmdGVyIHJlbGVhc2luZyB0aGUgb2JqZWN0IGxvY2sgKi8KICAgICAgIGlmIChnc3RfYWRhcHRpdmVfZGVtdXhfaXNfbGl2ZSAoZGVtdXgpKSB7CiAgICAgICAgIGlmIChnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3dhaXRfbWFuaWZlc3RfdXBkYXRlIChkZW11eCwgc3RyZWFtKSkgewotICAgICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKLSAgICAgICAgICByZXR1cm47CisgICAgICAgICAgZ290byBlbmQ7CiAgICAgICAgIH0KICAgICAgICAgZ3N0X3Rhc2tfc3RvcCAoc3RyZWFtLT5kb3dubG9hZF90YXNrKTsKICAgICAgIH0gZWxzZSB7CkBAIC0yMzAxLDcgKzI5MTAsNiBAQAogICAgICAgICBnYm9vbGVhbiBpc19saXZlID0gZ3N0X2FkYXB0aXZlX2RlbXV4X2lzX2xpdmUgKGRlbXV4KTsKICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwgIkVycm9yIHdoaWxlIGRvd25sb2FkaW5nIGZyYWdtZW50Iik7CiAgICAgICAgIGlmICgrK3N0cmVhbS0+ZG93bmxvYWRfZXJyb3JfY291bnQgPiBNQVhfRE9XTkxPQURfRVJST1JfQ09VTlQpIHsKLSAgICAgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CiAgICAgICAgICAgZ290byBkb3dubG9hZF9lcnJvcjsKICAgICAgICAgfQogCkBAIC0yMzEzLDEzICsyOTIxLDEyIEBACiAgICAgICAgICAqIGEgYml0IHRvIG5vdCBmbG9vZCB0aGUgc2VydmVyICovCiAgICAgICAgIGlmIChzdHJlYW0tPmRvd25sb2FkX2Vycm9yX2NvdW50ID09IDEgJiYgIWlzX2xpdmUpIHsKICAgICAgICAgICAvKiBUT0RPIGhsc2RlbXV4IGhhZCBtb3JlIG9wdGlvbnMgdG8gdGhpcyBmdW5jdGlvbiAoYm9vbGVhbiBhbmQgZXJyKSAqLwotICAgICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKwogICAgICAgICAgIGlmIChnc3RfYWRhcHRpdmVfZGVtdXhfdXBkYXRlX21hbmlmZXN0IChkZW11eCkgPT0gR1NUX0ZMT1dfT0spIHsKICAgICAgICAgICAgIC8qIFJldHJ5IGltbWVkaWF0ZWx5LCB0aGUgcGxheWxpc3QgYWN0dWFsbHkgaGFzIGNoYW5nZWQgKi8KICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiVXBkYXRlZCB0aGUgcGxheWxpc3QiKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICAgIH0KLSAgICAgICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOwogICAgICAgICB9CiAKICAgICAgICAgLyogV2FpdCBoYWxmIHRoZSBmcmFnbWVudCBkdXJhdGlvbiBiZWZvcmUgcmV0cnlpbmcgKi8KQEAgLTIzMjgsNDAgKzI5MzUsNTMgQEAKICAgICAgICAgICAgIChzdHJlYW0tPmZyYWdtZW50LmR1cmF0aW9uLCBHX1VTRUNfUEVSX1NFQywgMiAqIEdTVF9TRUNPTkQpOwogCiAgICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKwogICAgICAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwotICAgICAgICBpZiAoZGVtdXgtPmNhbmNlbGxlZCkgeworICAgICAgICBpZiAoR19VTkxJS0VMWSAoc3RyZWFtLT5jYW5jZWxsZWQpKSB7CiAgICAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwotICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworICAgICAgICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKKyAgICAgICAgICBnb3RvIGNhbmNlbGxlZDsKICAgICAgICAgfQogICAgICAgICBnX2NvbmRfd2FpdF91bnRpbCAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfY29uZCwKICAgICAgICAgICAgICZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2ssIG5leHRfZG93bmxvYWQpOwogICAgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJSZXRyeWluZyBub3ciKTsKIAorICAgICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCisgICAgICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICAgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPmNhbmNlbGxlZCkpIHsKKyAgICAgICAgICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgICAgIGdvdG8gY2FuY2VsbGVkOworICAgICAgICB9CisgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKwogICAgICAgICAvKiBSZWZldGNoIHRoZSBwbGF5bGlzdCBub3cgYWZ0ZXIgd2Ugd2FpdGVkICovCiAgICAgICAgIGlmICghaXNfbGl2ZQogICAgICAgICAgICAgJiYgZ3N0X2FkYXB0aXZlX2RlbXV4X3VwZGF0ZV9tYW5pZmVzdCAoZGVtdXgpID09IEdTVF9GTE9XX09LKSB7CiAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJVcGRhdGVkIHRoZSBwbGF5bGlzdCIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgZ290byBlbmQ7CiAgICAgICB9CiAgICAgICBicmVhazsKICAgfQogCi0gIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKIGVuZF9vZl9tYW5pZmVzdDoKICAgaWYgKEdfVU5MSUtFTFkgKHJldCA9PSBHU1RfRkxPV19FT1MpKSB7CiAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9wdXNoX2V2ZW50IChzdHJlYW0sIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKICAgfQogCiBlbmQ6CisgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKICAgR1NUX0xPR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiZG93bmxvYWQgbG9vcCBlbmQiKTsKICAgcmV0dXJuOwogCiBjYW5jZWxsZWQ6CiAgIHsKICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIlN0cmVhbSBoYXMgYmVlbiBjYW5jZWxsZWQiKTsKLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZGVtdXgpOwogICAgIGdvdG8gZW5kOwogICB9CiBkb3dubG9hZF9lcnJvcjoKQEAgLTIzODksNyArMzAwOSwxNSBAQAogICAgICAgICAgICJEb3dubG9hZCBlcnJvcjogQ291bGRuJ3QgZG93bmxvYWQgZnJhZ21lbnRzLCB0b28gbWFueSBmYWlsdXJlcyIpOwogICAgIH0KIAorICAgIGdzdF90YXNrX3N0b3AgKHN0cmVhbS0+ZG93bmxvYWRfdGFzayk7CisgICAgaWYgKHN0cmVhbS0+c3JjKSB7CisgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHN0cmVhbS0+c3JjLCBHU1RfU1RBVEVfTlVMTCk7CisgICAgICBnc3RfYmluX3JlbW92ZSAoR1NUX0JJTl9DQVNUIChkZW11eCksIHN0cmVhbS0+c3JjKTsKKyAgICAgIHN0cmVhbS0+c3JjID0gTlVMTDsKKyAgICB9CisKICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UX0NBU1QgKGRlbXV4KSwgbXNnKTsKKwogICAgIGdvdG8gZW5kOwogICB9CiB9CkBAIC0yMzk3LDYgKzMwMjUsNyBAQAogc3RhdGljIHZvaWQKIGdzdF9hZGFwdGl2ZV9kZW11eF91cGRhdGVzX2xvb3AgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCkKIHsKKyAgZ2ludDY0IG5leHRfdXBkYXRlOwogICBHc3RBZGFwdGl2ZURlbXV4Q2xhc3MgKmtsYXNzID0gR1NUX0FEQVBUSVZFX0RFTVVYX0dFVF9DTEFTUyAoZGVtdXgpOwogCiAgIC8qIExvb3AgZm9yIHVwZGF0aW5nIG9mIHRoZSBwbGF5bGlzdC4gVGhpcyBwZXJpb2RpY2FsbHkgY2hlY2tzIGlmCkBAIC0yNDA2LDggKzMwMzUsMTAgQEAKICAgLyogYmxvY2sgdW50aWwgdGhlIG5leHQgc2NoZWR1bGVkIHVwZGF0ZSBvciB0aGUgc2lnbmFsIHRvIHF1aXQgdGhpcyB0aHJlYWQgKi8KICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJTdGFydGVkIHVwZGF0ZXMgdGFzayIpOwogCi0gIGRlbXV4LT5wcml2LT5uZXh0X3VwZGF0ZSA9Ci0gICAgICBnX2dldF9tb25vdG9uaWNfdGltZSAoKSArIGtsYXNzLT5nZXRfbWFuaWZlc3RfdXBkYXRlX2ludGVydmFsIChkZW11eCk7CisgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKKyAgbmV4dF91cGRhdGUgPSBnX2dldF9tb25vdG9uaWNfdGltZSAoKSArCisgICAgICBrbGFzcy0+Z2V0X21hbmlmZXN0X3VwZGF0ZV9pbnRlcnZhbCAoZGVtdXgpOwogCiAgIC8qIFVwZGF0aW5nIHBsYXlsaXN0IG9ubHkgbmVlZGVkIGZvciBsaXZlIHBsYXlsaXN0cyAqLwogICB3aGlsZSAoZ3N0X2FkYXB0aXZlX2RlbXV4X2lzX2xpdmUgKGRlbXV4KSkgewpAQCAtMjQxNiw2MiArMzA0Nyw3MyBAQAogICAgIC8qIFdhaXQgaGVyZSB1bnRpbCB3ZSBzaG91bGQgZG8gdGhlIG5leHQgdXBkYXRlIG9yIHdlJ3JlIGNhbmNlbGxlZCAqLwogICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiV2FpdCBmb3IgbmV4dCBwbGF5bGlzdCB1cGRhdGUiKTsKIAorICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKwogICAgIGdfbXV0ZXhfbG9jayAoJmRlbXV4LT5wcml2LT51cGRhdGVzX3RpbWVkX2xvY2spOwogICAgIGlmIChkZW11eC0+cHJpdi0+c3RvcF91cGRhdGVzX3Rhc2spIHsKICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGltZWRfbG9jayk7CiAgICAgICBnb3RvIHF1aXQ7CiAgICAgfQogICAgIGdfY29uZF93YWl0X3VudGlsICgmZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGltZWRfY29uZCwKLSAgICAgICAgJmRlbXV4LT5wcml2LT51cGRhdGVzX3RpbWVkX2xvY2ssIGRlbXV4LT5wcml2LT5uZXh0X3VwZGF0ZSk7CisgICAgICAgICZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9sb2NrLCBuZXh0X3VwZGF0ZSk7CisgICAgZ19tdXRleF91bmxvY2sgKCZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9sb2NrKTsKKworICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKKyAgICBnX211dGV4X2xvY2sgKCZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9sb2NrKTsKICAgICBpZiAoZGVtdXgtPnByaXYtPnN0b3BfdXBkYXRlc190YXNrKSB7CiAgICAgICBnX211dGV4X3VubG9jayAoJmRlbXV4LT5wcml2LT51cGRhdGVzX3RpbWVkX2xvY2spOworICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwogICAgICAgZ290byBxdWl0OwogICAgIH0KICAgICBnX211dGV4X3VubG9jayAoJmRlbXV4LT5wcml2LT51cGRhdGVzX3RpbWVkX2xvY2spOwogCiAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJVcGRhdGluZyBwbGF5bGlzdCIpOworCiAgICAgcmV0ID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3VwZGF0ZV9tYW5pZmVzdCAoZGVtdXgpOworCiAgICAgaWYgKHJldCA9PSBHU1RfRkxPV19FT1MpIHsKICAgICB9IGVsc2UgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgewotICAgICAgaWYgKGRlbXV4LT5wcml2LT5zdG9wX3VwZGF0ZXNfdGFzaykKLSAgICAgICAgZ290byBxdWl0OworICAgICAgLyogdXBkYXRlX2ZhaWxlZF9jb3VudCBpcyB1c2VkIG9ubHkgaGVyZSwgbm8gbmVlZCB0byBwcm90ZWN0IGl0ICovCiAgICAgICBkZW11eC0+cHJpdi0+dXBkYXRlX2ZhaWxlZF9jb3VudCsrOwogICAgICAgaWYgKGRlbXV4LT5wcml2LT51cGRhdGVfZmFpbGVkX2NvdW50IDw9IERFRkFVTFRfRkFJTEVEX0NPVU5UKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsICJDb3VsZCBub3QgdXBkYXRlIHRoZSBwbGF5bGlzdCIpOwotICAgICAgICBkZW11eC0+cHJpdi0+bmV4dF91cGRhdGUgPQotICAgICAgICAgICAgZ19nZXRfbW9ub3RvbmljX3RpbWUgKCkgKworICAgICAgICBuZXh0X3VwZGF0ZSA9IGdfZ2V0X21vbm90b25pY190aW1lICgpICsKICAgICAgICAgICAgIGtsYXNzLT5nZXRfbWFuaWZlc3RfdXBkYXRlX2ludGVydmFsIChkZW11eCk7CiAgICAgICB9IGVsc2UgewogICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZGVtdXgsIFNUUkVBTSwgRkFJTEVELAogICAgICAgICAgICAgKF8oIkludGVybmFsIGRhdGEgc3RyZWFtIGVycm9yLiIpKSwgKCJDb3VsZCBub3QgdXBkYXRlIHBsYXlsaXN0IikpOwotICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIlN0b3BwZWQgdXBkYXRlcyB0YXNrIGJlY2F1c2Ugb2YgZXJyb3IiKTsKKyAgICAgICAgZ3N0X3Rhc2tfc3RvcCAoZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGFzayk7CisgICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKyAgICAgICAgZ290byBlbmQ7CiAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiVXBkYXRlZCBwbGF5bGlzdCBzdWNjZXNzZnVsbHkiKTsKLSAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7Ci0gICAgICBkZW11eC0+cHJpdi0+bmV4dF91cGRhdGUgPQotICAgICAgICAgIGdfZ2V0X21vbm90b25pY190aW1lICgpICsga2xhc3MtPmdldF9tYW5pZmVzdF91cGRhdGVfaW50ZXJ2YWwgKGRlbXV4KTsKLSAgICAgIC8qIFdha2UgdXAgZG93bmxvYWQgdGFzayAqLwotICAgICAgZ19jb25kX2Jyb2FkY2FzdCAoJmRlbXV4LT5tYW5pZmVzdF9jb25kKTsKLSAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKyAgICAgIG5leHRfdXBkYXRlID0gZ19nZXRfbW9ub3RvbmljX3RpbWUgKCkgKworICAgICAgICAgIGtsYXNzLT5nZXRfbWFuaWZlc3RfdXBkYXRlX2ludGVydmFsIChkZW11eCk7CisKKyAgICAgIC8qIFdha2UgdXAgZG93bmxvYWQgdGFza3MgKi8KKyAgICAgIGdfbXV0ZXhfbG9jayAoJmRlbXV4LT5wcml2LT5tYW5pZmVzdF91cGRhdGVfbG9jayk7CisgICAgICBnX2NvbmRfYnJvYWRjYXN0ICgmZGVtdXgtPnByaXYtPm1hbmlmZXN0X2NvbmQpOworICAgICAgZ19tdXRleF91bmxvY2sgKCZkZW11eC0+cHJpdi0+bWFuaWZlc3RfdXBkYXRlX2xvY2spOwogICAgIH0KICAgfQogCisgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKwogcXVpdDoKICAgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiU3RvcHBlZCB1cGRhdGVzIHRhc2siKTsKLSAgICBnc3RfdGFza19zdG9wIChkZW11eC0+cHJpdi0+dXBkYXRlc190YXNrKTsKLSAgICByZXR1cm47CisgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJTdG9wIHVwZGF0ZXMgdGFzayByZXF1ZXN0IGRldGVjdGVkLiIpOwogICB9CiAKLWVycm9yOgorZW5kOgogICB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJTdG9wcGVkIHVwZGF0ZXMgdGFzayBiZWNhdXNlIG9mIGVycm9yIik7Ci0gICAgZ3N0X3Rhc2tfc3RvcCAoZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGFzayk7CisgICAgcmV0dXJuOwogICB9CiB9CiAKLQorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fcHVzaF9ldmVudCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwKICAgICBHc3RFdmVudCAqIGV2ZW50KQpAQCAtMjQ4Nyw2ICszMTI5LDcgQEAKICAgcmV0dXJuIHJldDsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hZGFwdGl2ZV9kZW11eF9pc19saXZlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpCiB7CkBAIC0yNDk3LDE3ICszMTQwLDIwIEBACiAgIHJldHVybiBGQUxTRTsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9zZWVrIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCi0gICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgR3N0Q2xvY2tUaW1lIHRzKQorICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIGdib29sZWFuIGZvcndhcmQsIEdzdFNlZWtGbGFncyBmbGFncywKKyAgICBHc3RDbG9ja1RpbWUgdHMsIEdzdENsb2NrVGltZSAqIGZpbmFsX3RzKQogewogICBHc3RBZGFwdGl2ZURlbXV4Q2xhc3MgKmtsYXNzID0gR1NUX0FEQVBUSVZFX0RFTVVYX0dFVF9DTEFTUyAoZGVtdXgpOwogCiAgIGlmIChrbGFzcy0+c3RyZWFtX3NlZWspCi0gICAgcmV0dXJuIGtsYXNzLT5zdHJlYW1fc2VlayAoc3RyZWFtLCB0cyk7CisgICAgcmV0dXJuIGtsYXNzLT5zdHJlYW1fc2VlayAoc3RyZWFtLCBmb3J3YXJkLCBmbGFncywgdHMsIGZpbmFsX3RzKTsKICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9oYXNfbmV4dF9mcmFnbWVudCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAogICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pCkBAIC0yNTIxLDI0ICszMTY3LDI0IEBACiAgIHJldHVybiByZXQ7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogR3N0Rmxvd1JldHVybgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9hZHZhbmNlX2ZyYWdtZW50IChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCiAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uKQogewogICBHc3RGbG93UmV0dXJuIHJldDsKIAotICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOwogICBpZiAoc3RyZWFtLT5sYXN0X3JldCA9PSBHU1RfRkxPV19PSykgewogICAgIHN0cmVhbS0+bGFzdF9yZXQgPQogICAgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2FkdmFuY2VfZnJhZ21lbnRfdW5sb2NrZWQgKGRlbXV4LCBzdHJlYW0sCiAgICAgICAgIGR1cmF0aW9uKTsKICAgfQogICByZXQgPSBzdHJlYW0tPmxhc3RfcmV0OwotICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CiAKICAgcmV0dXJuIHJldDsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBHc3RGbG93UmV0dXJuCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2FkdmFuY2VfZnJhZ21lbnRfdW5sb2NrZWQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLCBHc3RDbG9ja1RpbWUgZHVyYXRpb24pCkBAIC0yNTUwLDEwICszMTk2LDYgQEAKIAogICBzdHJlYW0tPmRvd25sb2FkX2Vycm9yX2NvdW50ID0gMDsKICAgZ19jbGVhcl9lcnJvciAoJnN0cmVhbS0+bGFzdF9lcnJvcik7Ci0gIHN0cmVhbS0+ZG93bmxvYWRfdG90YWxfdGltZSArPQotICAgICAgZ19nZXRfbW9ub3RvbmljX3RpbWUgKCkgLSBzdHJlYW0tPmRvd25sb2FkX2NodW5rX3N0YXJ0X3RpbWU7Ci0gIHN0cmVhbS0+ZnJhZ21lbnRfdG90YWxfdGltZSArPQotICAgICAgZ19nZXRfbW9ub3RvbmljX3RpbWUgKCkgLSBzdHJlYW0tPmRvd25sb2FkX2NodW5rX3N0YXJ0X3RpbWU7CiAKICAgLyogRklYTUUgLSB1cmwgaGFzIG5vIGluZGljYXRpb24gb2YgYnl0ZSByYW5nZXMgZm9yIHN1YnNlZ21lbnRzICovCiAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlRfQ0FTVCAoZGVtdXgpLApAQCAtMjU2OSw3ICszMjExLDkgQEAKICAgICAgICAgICAgICAgR1NUX1RZUEVfQ0xPQ0tfVElNRSwKICAgICAgICAgICAgICAgc3RyZWFtLT5kb3dubG9hZF90b3RhbF90aW1lICogR1NUX1VTRUNPTkQsIE5VTEwpKSk7CiAKLSAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChkdXJhdGlvbikpIHsKKyAgLyogRG9uJ3QgdXBkYXRlIHRvIHRoZSBlbmQgb2YgdGhlIHNlZ21lbnQgaWYgaW4gcmV2ZXJzZSBwbGF5YmFjayAqLworICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9MT0NLIChkZW11eCk7CisgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoZHVyYXRpb24pICYmIGRlbXV4LT5zZWdtZW50LnJhdGUgPiAwKSB7CiAgICAgR3N0Q2xvY2tUaW1lIG9mZnNldCA9CiAgICAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZ2V0X3ByZXNlbnRhdGlvbl9vZmZzZXQgKGRlbXV4LCBzdHJlYW0pOwogICAgIEdzdENsb2NrVGltZSBwZXJpb2Rfc3RhcnQgPQpAQCAtMjU4NCw2ICszMjI4LDcgQEAKICAgICAgIGRlbXV4LT5zZWdtZW50LnBvc2l0aW9uID0KICAgICAgICAgICBzdHJlYW0tPnNlZ21lbnQucG9zaXRpb24gLSBvZmZzZXQgKyBwZXJpb2Rfc3RhcnQ7CiAgIH0KKyAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfVU5MT0NLIChkZW11eCk7CiAKICAgaWYgKGdzdF9hZGFwdGl2ZV9kZW11eF9pc19saXZlIChkZW11eCkKICAgICAgIHx8IGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1faGFzX25leHRfZnJhZ21lbnQgKGRlbXV4LCBzdHJlYW0pKSB7CkBAIC0yNjE4LDYgKzMyNjMsNyBAQAogICByZXR1cm4gcmV0OwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9zZWxlY3RfYml0cmF0ZSAoR3N0QWRhcHRpdmVEZW11eCAqCiAgICAgZGVtdXgsIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIGd1aW50NjQgYml0cmF0ZSkKQEAgLTI2MzUsNiArMzI4MSw3IEBACiAgIHJldHVybiBGQUxTRTsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV91cGRhdGVfZnJhZ21lbnRfaW5mbyAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAogICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pCkBAIC0yNjQ0LDkgKzMyOTEsMTQgQEAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGtsYXNzLT5zdHJlYW1fdXBkYXRlX2ZyYWdtZW50X2luZm8gIT0gTlVMTCwKICAgICAgIEdTVF9GTE9XX0VSUk9SKTsKIAorICAvKiBNYWtlIHN1cmUgdGhlIHN1Yi1jbGFzcyB3aWxsIHVwZGF0ZSBiaXRyYXRlLCBvciBlbHNlCisgICAqIHdlIHdpbGwgbGF0ZXIgKi8KKyAgc3RyZWFtLT5mcmFnbWVudC5iaXRyYXRlID0gMDsKKwogICByZXR1cm4ga2xhc3MtPnN0cmVhbV91cGRhdGVfZnJhZ21lbnRfaW5mbyAoc3RyZWFtKTsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgZ2ludDY0CiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2dldF9mcmFnbWVudF93YWl0aW5nX3RpbWUgKEdzdEFkYXB0aXZlRGVtdXggKgogICAgIGRlbXV4LCBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKQpAQCAtMjY1OCw2ICszMzEwLDcgQEAKICAgcmV0dXJuIDA7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9hZGFwdGl2ZV9kZW11eF91cGRhdGVfbWFuaWZlc3RfZGVmYXVsdCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KQogewpAQCAtMjY2OSw3ICszMzIyLDYgQEAKICAgZG93bmxvYWQgPSBnc3RfdXJpX2Rvd25sb2FkZXJfZmV0Y2hfdXJpIChkZW11eC0+ZG93bmxvYWRlciwKICAgICAgIGRlbXV4LT5tYW5pZmVzdF91cmksIE5VTEwsIFRSVUUsIFRSVUUsIFRSVUUsIE5VTEwpOwogICBpZiAoZG93bmxvYWQpIHsKLSAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOwogICAgIGdfZnJlZSAoZGVtdXgtPm1hbmlmZXN0X3VyaSk7CiAgICAgZ19mcmVlIChkZW11eC0+bWFuaWZlc3RfYmFzZV91cmkpOwogICAgIGlmIChkb3dubG9hZC0+cmVkaXJlY3RfcGVybWFuZW50ICYmIGRvd25sb2FkLT5yZWRpcmVjdF91cmkpIHsKQEAgLTI2ODQsNyArMzMzNiw2IEBACiAgICAgZ19vYmplY3RfdW5yZWYgKGRvd25sb2FkKTsKICAgICByZXQgPSBrbGFzcy0+dXBkYXRlX21hbmlmZXN0X2RhdGEgKGRlbXV4LCBidWZmZXIpOwogICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7Ci0gICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwogICAgIC8qIEZJWE1FOiBTaG91bGQgdGhlIG1hbmlmZXN0IHVyaSB2YXJzIGJlIHJldmVydGVkIHRvIG9yaWdpbmFsCiAgICAgICogdmFsdWVzIGlmIHVwZGF0aW5nIGZhaWxzPyAqLwogICB9IGVsc2UgewpAQCAtMjY5NCw2ICszMzQ1LDcgQEAKICAgcmV0dXJuIHJldDsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X2FkYXB0aXZlX2RlbXV4X3VwZGF0ZV9tYW5pZmVzdCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KQogewpAQCAtMjcwNCwxMCArMzM1Niw4IEBACiAKICAgaWYgKHJldCA9PSBHU1RfRkxPV19PSykgewogICAgIEdzdENsb2NrVGltZSBkdXJhdGlvbjsKLSAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOwogICAgIC8qIFNlbmQgYW4gdXBkYXRlZCBkdXJhdGlvbiBtZXNzYWdlICovCiAgICAgZHVyYXRpb24gPSBrbGFzcy0+Z2V0X2R1cmF0aW9uIChkZW11eCk7Ci0gICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwogICAgIGlmIChkdXJhdGlvbiAhPSBHU1RfQ0xPQ0tfVElNRV9OT05FKSB7CiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwKICAgICAgICAgICAiU2VuZGluZyBkdXJhdGlvbiBtZXNzYWdlIDogJSIgR1NUX1RJTUVfRk9STUFULApAQCAtMjc0Miw2ICszMzkyLDcgQEAKICAgZi0+aW5kZXhfcmFuZ2VfZW5kID0gLTE7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIGdib29sZWFuCiBnc3RfYWRhcHRpdmVfZGVtdXhfaGFzX25leHRfcGVyaW9kIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpCiB7CkBAIC0yNzU0LDYgKzM0MDUsNyBAQAogICByZXR1cm4gcmV0OwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyB2b2lkCiBnc3RfYWRhcHRpdmVfZGVtdXhfYWR2YW5jZV9wZXJpb2QgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCkKIHsKQEAgLTI3NjYsMTggKzM0MTgsMyBAQAogICBnc3RfYWRhcHRpdmVfZGVtdXhfZXhwb3NlX3N0cmVhbXMgKGRlbXV4LCBGQUxTRSk7CiAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdGFydF90YXNrcyAoZGVtdXgpOwogfQotCi1zdGF0aWMgdm9pZAotZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9kb3dubG9hZF93YWl0IChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLAotICAgIEdzdENsb2NrVGltZSB0aW1lX2RpZmYpCi17Ci0gIGdpbnQ2NCBlbmRfdGltZSA9IGdfZ2V0X21vbm90b25pY190aW1lICgpICsgdGltZV9kaWZmIC8gR1NUX1VTRUNPTkQ7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJEb3dubG9hZCB3YWl0aW5nIGZvciAlIiBHU1RfVElNRV9GT1JNQVQsCi0gICAgICBHU1RfVElNRV9BUkdTICh0aW1lX2RpZmYpKTsKLSAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKLSAgZ19jb25kX3dhaXRfdW50aWwgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2NvbmQsCi0gICAgICAmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrLCBlbmRfdGltZSk7Ci0gIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKLSAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJEb3dubG9hZCBmaW5pc2hlZCB3YWl0aW5nIik7Ci19CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmggYi9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmgKaW5kZXggYjY1YjZkNi4uYWUyZDg5NSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5oCisrKyBiL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaApAQCAtNzIsMTAgKzcyLDYgQEAKICAqLwogI2RlZmluZSBHU1RfQURBUFRJVkVfREVNVVhfU1RBVElTVElDU19NRVNTQUdFX05BTUUgImFkYXB0aXZlLXN0cmVhbWluZy1zdGF0aXN0aWNzIgogCi0jZGVmaW5lIEdTVF9NQU5JRkVTVF9HRVRfTE9DSyhkKSAoJihHU1RfQURBUFRJVkVfREVNVVhfQ0FTVChkKS0+bWFuaWZlc3RfbG9jaykpCi0jZGVmaW5lIEdTVF9NQU5JRkVTVF9MT0NLKGQpIChnX211dGV4X2xvY2sgKEdTVF9NQU5JRkVTVF9HRVRfTE9DSyAoZCkpKQotI2RlZmluZSBHU1RfTUFOSUZFU1RfVU5MT0NLKGQpIChnX211dGV4X3VubG9jayAoR1NUX01BTklGRVNUX0dFVF9MT0NLIChkKSkpCi0KICNkZWZpbmUgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUihlbCwgbXNnLCBlcnIpIEdfU1RNVF9TVEFSVCB7IFwKICAgZ2NoYXIgKl9fZGJnID0gZ19zdHJkdXBfcHJpbnRmICgiJXM6ICVzIiwgbXNnLCBlcnItPm1lc3NhZ2UpOyAgICAgICAgIFwKICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbCwgImVycm9yOiAlcyIsIF9fZGJnKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTEwOSwxMSArMTA1LDE2IEBACiAgIGdjaGFyICppbmRleF91cmk7CiAgIGdpbnQ2NCBpbmRleF9yYW5nZV9zdGFydDsKICAgZ2ludDY0IGluZGV4X3JhbmdlX2VuZDsKKworICAvKiBOb21pbmFsIGJpdHJhdGUgYXMgcHJvdmlkZWQgYnkKKyAgICogc3ViLWNsYXNzIG9yIGNhbGN1bGF0ZWQgYnkgYmFzZS1jbGFzcyAqLworICBndWludCBiaXRyYXRlOwogfTsKIAogc3RydWN0IF9Hc3RBZGFwdGl2ZURlbXV4U3RyZWFtCiB7CiAgIEdzdFBhZCAqcGFkOworICBHc3RQYWQgKmludGVybmFsX3BhZDsKIAogICBHc3RBZGFwdGl2ZURlbXV4ICpkZW11eDsKIApAQCAtMTM2LDE1ICsxMzcsMjEgQEAKICAgZ2Jvb2xlYW4gcmVzdGFydF9kb3dubG9hZDsKICAgZ2Jvb2xlYW4gZGlzY29udDsKIAorICBnYm9vbGVhbiBkb3dubG9hZGluZ19maXJzdF9idWZmZXI7CiAgIGdib29sZWFuIGRvd25sb2FkaW5nX2hlYWRlcjsKICAgZ2Jvb2xlYW4gZG93bmxvYWRpbmdfaW5kZXg7CiAKKyAgZ2Jvb2xlYW4gYml0cmF0ZV9jaGFuZ2VkOworCiAgIC8qIGRvd25sb2FkIHRvb2xpbmcgKi8KICAgR3N0RWxlbWVudCAqc3JjOwogICBHc3RQYWQgKnNyY19zcmNwYWQ7CisgIEdzdEVsZW1lbnQgKnVyaV9oYW5kbGVyOworICBHc3RFbGVtZW50ICpxdWV1ZTsKICAgR011dGV4IGZyYWdtZW50X2Rvd25sb2FkX2xvY2s7CiAgIEdDb25kIGZyYWdtZW50X2Rvd25sb2FkX2NvbmQ7Ci0gIGdib29sZWFuIGRvd25sb2FkX2ZpbmlzaGVkOworICBnYm9vbGVhbiBkb3dubG9hZF9maW5pc2hlZDsgICAvKiBwcm90ZWN0ZWQgYnkgZnJhZ21lbnRfZG93bmxvYWRfbG9jayAqLworICBnYm9vbGVhbiBjYW5jZWxsZWQ7ICAgICAgICAgICAvKiBwcm90ZWN0ZWQgYnkgZnJhZ21lbnRfZG93bmxvYWRfbG9jayAqLwogICBnYm9vbGVhbiBzdGFydGluZ19mcmFnbWVudDsKICAgZ2Jvb2xlYW4gZmlyc3RfZnJhZ21lbnRfYnVmZmVyOwogICBnaW50NjQgZG93bmxvYWRfc3RhcnRfdGltZTsKQEAgLTE1MywxMCArMTYwLDYgQEAKICAgZ2ludDY0IGRvd25sb2FkX3RvdGFsX2J5dGVzOwogICBndWludDY0IGN1cnJlbnRfZG93bmxvYWRfcmF0ZTsKIAotICAvKiBQZXIgZnJhZ21lbnQgZG93bmxvYWQgaW5mb3JtYXRpb24gKi8KLSAgZ3VpbnQ2NCBmcmFnbWVudF90b3RhbF90aW1lOwotICBndWludDY0IGZyYWdtZW50X3RvdGFsX3NpemU7Ci0KICAgLyogQXZlcmFnZSBmb3IgdGhlIGxhc3QgZnJhZ21lbnRzICovCiAgIGd1aW50NjQgbW92aW5nX2JpdHJhdGU7CiAgIGd1aW50IG1vdmluZ19pbmRleDsKQEAgLTE5MiwxNiArMTk1LDEwIEBACiAKICAgR3N0U2VnbWVudCBzZWdtZW50OwogCi0gIGdib29sZWFuIGNhbmNlbGxlZDsKLQotICBHTXV0ZXggbWFuaWZlc3RfbG9jazsKLSAgR0NvbmQgbWFuaWZlc3RfY29uZDsKLQogICBnY2hhciAqbWFuaWZlc3RfdXJpOwogICBnY2hhciAqbWFuaWZlc3RfYmFzZV91cmk7CiAKICAgLyogUHJvcGVydGllcyAqLwotICBndWludCBudW1fbG9va2JhY2tfZnJhZ21lbnRzOwogICBnZmxvYXQgYml0cmF0ZV9saW1pdDsgICAgICAgICAvKiBsaW1pdCBvZiB0aGUgYXZhaWxhYmxlIGJpdHJhdGUgdG8gdXNlICovCiAgIGd1aW50IGNvbm5lY3Rpb25fc3BlZWQ7CiAKQEAgLTMxOCw3ICszMTUsNyBAQAogICB2b2lkICAgICAgICAgICgqYWR2YW5jZV9wZXJpb2QpICAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KTsKIAogICB2b2lkICAgICAgICAgICgqc3RyZWFtX2ZyZWUpICAgICAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSk7Ci0gIEdzdEZsb3dSZXR1cm4gKCpzdHJlYW1fc2VlaykgICAgIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLCBHc3RDbG9ja1RpbWUgdHMpOworICBHc3RGbG93UmV0dXJuICgqc3RyZWFtX3NlZWspICAgICAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgZ2Jvb2xlYW4gZm9yd2FyZCwgR3N0U2Vla0ZsYWdzIGZsYWdzLCBHc3RDbG9ja1RpbWUgdGFyZ2V0X3RzLCBHc3RDbG9ja1RpbWUgKiBmaW5hbF90cyk7CiAgIGdib29sZWFuICAgICAgKCpzdHJlYW1faGFzX25leHRfZnJhZ21lbnQpICAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSk7CiAgIEdzdEZsb3dSZXR1cm4gKCpzdHJlYW1fYWR2YW5jZV9mcmFnbWVudCkgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pOwogICAvKioKQEAgLTQzOCw2ICs0MzUsOCBAQAogCiBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX25ldyAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFBhZCAqIHBhZCk7CitHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpnc3RfYWRhcHRpdmVfZGVtdXhfZmluZF9zdHJlYW1fZm9yX3BhZCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFBhZCAqIHBhZCk7CiB2b2lkIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fc2V0X2NhcHMgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENhcHMgKiBjYXBzKTsKIHZvaWQgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9zZXRfdGFncyAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwKQEAgLTQ1MSwxMCArNDUwLDYgQEAKIHZvaWQgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9xdWV1ZV9ldmVudCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwKICAgICBHc3RFdmVudCAqIGV2ZW50KTsKIAotR3N0Rmxvd1JldHVybgotZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9hZHZhbmNlX2ZyYWdtZW50X3VubG9ja2VkIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCi0gICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uKTsKLQogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgxMDE0OAotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQpAQCAtMCwwICsxLDI3IEBACisjIHZhcmlhYmxlcyB1c2VkIGZvciBlbnVtIGdlbmVyYXRpb24KK2xpYl9MVExJQlJBUklFUyA9IGxpYmdzdGJhZGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALmxhCisKK0NMRUFORklMRVMgPQorCitsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9TT1VSQ0VTID0gXAorCWdzdGF1ZGlvYWdncmVnYXRvci5jCisKK25vZGlzdF9saWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9TT1VSQ0VTID0gJChCVUlMVF9TT1VSQ0VTKQorCitsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MgPSBcCisJLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCisJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKwktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJJChHU1RfQ0ZMQUdTKSAkKE9SQ19DRkxBR1MpIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQkFTRV9DRkxBR1MpCisKK2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJQkFERCA9IFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2Jhc2UvbGliZ3N0YmFkYmFzZS0kKEdTVF9BUElfVkVSU0lPTikubGEgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKE9SQ19MSUJTKSAkKExJQk0pCisKK2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpICQoR1NUX0xUX0xERkxBR1MpCisKK2xpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2dzdC9hdWRpbworbGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMgPSBnc3RhdWRpb2FnZ3JlZ2F0b3IuaApkaWZmIC0tZ2l0IGEvZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5pbgpzaW1pbGFyaXR5IGluZGV4IDc3JQpjb3B5IGZyb20gZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbgpjb3B5IHRvIGdzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5pbgppbmRleCBiYTllNWEyLi5jODU0ZTkxIDEwMDY0NAotLS0gYS9nc3QvbGl2ZWFkZGVyL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5pbgpAQCAtOTAsNyArOTAsNyBAQAogYnVpbGRfdHJpcGxldCA9IEBidWlsZEAKIGhvc3RfdHJpcGxldCA9IEBob3N0QAogdGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0QAotc3ViZGlyID0gZ3N0L2xpdmVhZGRlcgorc3ViZGlyID0gZ3N0LWxpYnMvZ3N0L2F1ZGlvCiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CiBhbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYWMtZXhwYW5kLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hdXRvLWFsdC5tNCBcCkBAIC0xMTYsMTkgKzExNiwxOSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKLURJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKK0RJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtIFwKKwkkKGxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTKSBcCiAJJChhbV9fRElTVF9DT01NT04pCiBta2luc3RhbGxkaXJzID0gJChpbnN0YWxsX3NoKSAtZAogQ09ORklHX0hFQURFUiA9ICQodG9wX2J1aWxkZGlyKS9jb25maWcuaApAQCAtMTYxLDIxICsxNjEsMjkgQEAKICAgICB8fCB7IGVjaG8gIiAoIGNkICckJGRpcicgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCiAgICAgICAgICAkKGFtX19jZCkgIiQkZGlyIiAmJiBybSAtZiAkJGZpbGVzOyB9OyBcCiAgIH0KLWFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChwbHVnaW5kaXIpIgotTFRMSUJSQVJJRVMgPSAkKHBsdWdpbl9MVExJQlJBUklFUykKK2FtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChsaWJkaXIpIiBcCisJIiQoREVTVERJUikkKGxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpcikiCitMVExJQlJBUklFUyA9ICQobGliX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KLWxpYmdzdGxpdmVhZGRlcl9sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKLWFtX2xpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTID0gbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbwotbGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTKQorbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfREVQRU5ERU5DSUVTID0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9iYXNlL2xpYmdzdGJhZGJhc2UtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkKK2FtX2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMgPSAgXAorCWxpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5sbworbm9kaXN0X2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMgPQorbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfT0JKRUNUUyA9ICBcCisJJChhbV9saWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9PQkpFQ1RTKSBcCisJJChub2Rpc3RfbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKIGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9sdF8wID0gLS1zaWxlbnQKIGFtX192X2x0XzEgPSAKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKLQkkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayBcCi0JJChDQ0xEKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSBcCi0JJChsaWJnc3RsaXZlYWRkZXJfbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAorbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSBcCisJLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayBcCisJJChDQ0xEKSAkKGxpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgXAorCSQoQ0ZMQUdTKSAkKGxpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MpIFwKKwkkKExERkxBR1MpIC1vICRACiBBTV9WX1AgPSAkKGFtX192X1BfQEFNX1ZAKQogYW1fX3ZfUF8gPSAkKGFtX192X1BfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9QXzAgPSBmYWxzZQpAQCAtMjEwLDMzICsyMTgsMTYgQEAKIGFtX192X0NDTERfID0gJChhbV9fdl9DQ0xEX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOwogYW1fX3ZfQ0NMRF8xID0gCi1TT1VSQ0VTID0gJChsaWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUykKLURJU1RfU09VUkNFUyA9ICQobGliZ3N0bGl2ZWFkZGVyX2xhX1NPVVJDRVMpCitTT1VSQ0VTID0gJChsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9TT1VSQ0VTKSBcCisJJChub2Rpc3RfbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfU09VUkNFUykKK0RJU1RfU09VUkNFUyA9ICQobGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfU09VUkNFUykKIGFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0gXAogICBjYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKICAgICBufG5vfE5PKSBmYWxzZTs7IFwKICAgICAqKSAoaW5zdGFsbC1pbmZvIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxOzsgXAogICBlc2FjCi1IRUFERVJTID0gJChub2luc3RfSEVBREVSUykKK0hFQURFUlMgPSAkKGxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTKQogYW1fX3RhZ2dlZF9maWxlcyA9ICQoSEVBREVSUykgJChTT1VSQ0VTKSAkKFRBR1NfRklMRVMpICQoTElTUCkKLSMgUmVhZCBhIGxpc3Qgb2YgbmV3bGluZS1zZXBhcmF0ZWQgc3RyaW5ncyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCwKLSMgYW5kIHByaW50IGVhY2ggb2YgdGhlbSBvbmNlLCB3aXRob3V0IGR1cGxpY2F0ZXMuICBJbnB1dCBvcmRlciBpcwotIyAqbm90KiBwcmVzZXJ2ZWQuCi1hbV9fdW5pcXVpZnlfaW5wdXQgPSAkKEFXSykgJ1wKLSAgQkVHSU4geyBub25lbXB0eSA9IDA7IH0gXAotICB7IGl0ZW1zWyQkMF0gPSAxOyBub25lbXB0eSA9IDE7IH0gXAotICBFTkQgeyBpZiAobm9uZW1wdHkpIHsgZm9yIChpIGluIGl0ZW1zKSBwcmludCBpOyB9OyB9IFwKLScKLSMgTWFrZSBzdXJlIHRoZSBsaXN0IG9mIHNvdXJjZXMgaXMgdW5pcXVlLiAgVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSwKLSMgZS5nLiwgdGhlIHNhbWUgc291cmNlIGZpbGUgbWlnaHQgYmUgc2hhcmVkIGFtb25nIF9TT1VSQ0VTIHZhcmlhYmxlcwotIyBmb3IgZGlmZmVyZW50IHByb2dyYW1zL2xpYnJhcmllcy4KLWFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMgPSBcCi0gIGxpc3Q9JyQoYW1fX3RhZ2dlZF9maWxlcyknOyBcCi0gIHVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcCi0gICAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBlY2hvICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7IGZpOyBcCi0gIGRvbmUgfCAkKGFtX191bmlxdWlmeV9pbnB1dClgCi1FVEFHUyA9IGV0YWdzCi1DVEFHUyA9IGN0YWdzCiBhbV9fRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3Bfc3JjZGlyKS9kZXBjb21wCiBESVNURklMRVMgPSAkKERJU1RfQ09NTU9OKSAkKERJU1RfU09VUkNFUykgJChURVhJTkZPUykgJChFWFRSQV9ESVNUKQogQUNMT0NBTCA9IEBBQ0xPQ0FMQApAQCAtMjc0LDYgKzI2NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMwNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMxNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszMzIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM4Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MTQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTE3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTQ2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjA1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY2OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjc5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY4OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzI4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NjEsMTYgKzc2NywzMCBAQAogdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RsaXZlYWRkZXIubGEKLWxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTID0gbGl2ZWFkZGVyLmMKLWxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSUJBREQgPSBcCi0JJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykKIAotbGliZ3N0bGl2ZWFkZGVyX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQotbm9pbnN0X0hFQURFUlMgPSBsaXZlYWRkZXIuaAorIyB2YXJpYWJsZXMgdXNlZCBmb3IgZW51bSBnZW5lcmF0aW9uCitsaWJfTFRMSUJSQVJJRVMgPSBsaWJnc3RiYWRhdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5sYQorQ0xFQU5GSUxFUyA9IAorbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfU09VUkNFUyA9IFwKKwlnc3RhdWRpb2FnZ3JlZ2F0b3IuYworCitub2Rpc3RfbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfU09VUkNFUyA9ICQoQlVJTFRfU09VUkNFUykKK2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUyA9IFwKKwktREdTVF9VU0VfVU5TVEFCTEVfQVBJIFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkkKEdTVF9DRkxBR1MpICQoT1JDX0NGTEFHUykgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9CQVNFX0NGTEFHUykKKworbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfTElCQUREID0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYmFzZS9saWJnc3RiYWRiYXNlLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKKwkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoT1JDX0xJQlMpICQoTElCTSkKKworbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUyA9ICQoR1NUX0xJQl9MREZMQUdTKSAkKEdTVF9BTExfTERGTEFHUykgJChHU1RfTFRfTERGTEFHUykKK2xpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2dzdC9hdWRpbworbGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMgPSBnc3RhdWRpb2FnZ3JlZ2F0b3IuaAogYWxsOiBhbGwtYW0KIAogLlNVRkZJWEVTOgpAQCAtNzg0LDkgKzgwNCw5IEBACiAJICAgICAgZXhpdCAxOzsgXAogCSAgZXNhYzsgXAogCWRvbmU7IFwKLQllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBnc3QvbGl2ZWFkZGVyL01ha2VmaWxlJzsgXAorCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZ251IGdzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZSc7IFwKIAkkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSAmJiBcCi0JICAkKEFVVE9NQUtFKSAtLWdudSBnc3QvbGl2ZWFkZGVyL01ha2VmaWxlCisJICAkKEFVVE9NQUtFKSAtLWdudSBnc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUKIE1ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKIAlAY2FzZSAnJD8nIGluIFwKIAkgICpjb25maWcuc3RhdHVzKikgXApAQCAtODA1LDMzICs4MjUsMzMgQEAKIAljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKICQoYW1fX2FjbG9jYWxfbTRfZGVwcyk6CiAKLWluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVM6ICQocGx1Z2luX0xUTElCUkFSSUVTKQoraW5zdGFsbC1saWJMVExJQlJBUklFUzogJChsaWJfTFRMSUJSQVJJRVMpCiAJQCQoTk9STUFMX0lOU1RBTEwpCi0JQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQocGx1Z2luZGlyKSIgfHwgbGlzdD07IFwKKwlAbGlzdD0nJChsaWJfTFRMSUJSQVJJRVMpJzsgdGVzdCAtbiAiJChsaWJkaXIpIiB8fCBsaXN0PTsgXAogCWxpc3QyPTsgZm9yIHAgaW4gJCRsaXN0OyBkbyBcCiAJICBpZiB0ZXN0IC1mICQkcDsgdGhlbiBcCiAJICAgIGxpc3QyPSIkJGxpc3QyICQkcCI7IFwKIAkgIGVsc2UgOjsgZmk7IFwKIAlkb25lOyBcCiAJdGVzdCAteiAiJCRsaXN0MiIgfHwgeyBcCi0JICBlY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQocGx1Z2luZGlyKSciOyBcCi0JICAkKE1LRElSX1ApICIkKERFU1RESVIpJChwbHVnaW5kaXIpIiB8fCBleGl0IDE7IFwKLQkgIGVjaG8gIiAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAnJChERVNURElSKSQocGx1Z2luZGlyKSciOyBcCi0JICAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAiJChERVNURElSKSQocGx1Z2luZGlyKSI7IFwKKwkgIGVjaG8gIiAkKE1LRElSX1ApICckKERFU1RESVIpJChsaWJkaXIpJyI7IFwKKwkgICQoTUtESVJfUCkgIiQoREVTVERJUikkKGxpYmRpcikiIHx8IGV4aXQgMTsgXAorCSAgZWNobyAiICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9aW5zdGFsbCAkKElOU1RBTEwpICQoSU5TVEFMTF9TVFJJUF9GTEFHKSAkJGxpc3QyICckKERFU1RESVIpJChsaWJkaXIpJyI7IFwKKwkgICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9aW5zdGFsbCAkKElOU1RBTEwpICQoSU5TVEFMTF9TVFJJUF9GTEFHKSAkJGxpc3QyICIkKERFU1RESVIpJChsaWJkaXIpIjsgXAogCX0KIAotdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTOgordW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTOgogCUAkKE5PUk1BTF9VTklOU1RBTEwpCi0JQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQocGx1Z2luZGlyKSIgfHwgbGlzdD07IFwKKwlAbGlzdD0nJChsaWJfTFRMSUJSQVJJRVMpJzsgdGVzdCAtbiAiJChsaWJkaXIpIiB8fCBsaXN0PTsgXAogCWZvciBwIGluICQkbGlzdDsgZG8gXAogCSAgJChhbV9fc3RyaXBfZGlyKSBcCi0JICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgJyQoREVTVERJUikkKHBsdWdpbmRpcikvJCRmJyI7IFwKLQkgICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9dW5pbnN0YWxsIHJtIC1mICIkKERFU1RESVIpJChwbHVnaW5kaXIpLyQkZiI7IFwKKwkgIGVjaG8gIiAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPXVuaW5zdGFsbCBybSAtZiAnJChERVNURElSKSQobGliZGlyKS8kJGYnIjsgXAorCSAgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgIiQoREVTVERJUikkKGxpYmRpcikvJCRmIjsgXAogCWRvbmUKIAotY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVM6Ci0JLXRlc3QgLXogIiQocGx1Z2luX0xUTElCUkFSSUVTKSIgfHwgcm0gLWYgJChwbHVnaW5fTFRMSUJSQVJJRVMpCi0JQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IFwKK2NsZWFuLWxpYkxUTElCUkFSSUVTOgorCS10ZXN0IC16ICIkKGxpYl9MVExJQlJBUklFUykiIHx8IHJtIC1mICQobGliX0xUTElCUkFSSUVTKQorCUBsaXN0PSckKGxpYl9MVExJQlJBUklFUyknOyBcCiAJbG9jcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IFwKIAkgICAgICBzZWQgJ3N8XlteL10qJCR8Lnw7IHN8L1teL10qJCR8fDsgc3wkJHwvc29fbG9jYXRpb25zfCcgfCBcCiAJICAgICAgc29ydCAtdWA7IFwKQEAgLTg0MCw4ICs4NjAsOCBAQAogCSAgcm0gLWYgJCR7bG9jc307IFwKIAl9CiAKLWxpYmdzdGxpdmVhZGRlci5sYTogJChsaWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdGxpdmVhZGRlcl9sYV9ERVBFTkRFTkNJRVMpIAotCSQoQU1fVl9DQ0xEKSQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCQUREKSAkKExJQlMpCitsaWJnc3RiYWRhdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5sYTogJChsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9PQkpFQ1RTKSAkKGxpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9ERVBFTkRFTkNJRVMpIAorCSQoQU1fVl9DQ0xEKSQobGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfTElOSykgLXJwYXRoICQobGliZGlyKSAkKGxpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMpICQobGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfTElCQUREKSAkKExJQlMpCiAKIG1vc3RseWNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICouJChPQkpFWFQpCkBAIC04NDksNyArODY5LDcgQEAKIGRpc3RjbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLnRhYi5jCiAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0YXVkaW9hZ2dyZWdhdG9yLlBsb0BhbV9fcXVvdGVACiAKIC5jLm86CiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCkBAIC04NzUsNzAgKzg5NSw0NSBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAogCi1saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvOiBsaXZlYWRkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuVHBvIC1jIC1vIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gYHRlc3QgLWYgJ2xpdmVhZGRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaXZlYWRkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5UcG8gJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbGl2ZWFkZGVyLmMnIG9iamVjdD0nbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0YXVkaW9hZ2dyZWdhdG9yLmxvOiBnc3RhdWRpb2FnZ3JlZ2F0b3IuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5UcG8gLWMgLW8gbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0YXVkaW9hZ2dyZWdhdG9yLmxvIGB0ZXN0IC1mICdnc3RhdWRpb2FnZ3JlZ2F0b3IuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0YXVkaW9hZ2dyZWdhdG9yLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5UcG8gJChERVBESVIpL2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RhdWRpb2FnZ3JlZ2F0b3IuYycgb2JqZWN0PSdsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gYHRlc3QgLWYgJ2xpdmVhZGRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaXZlYWRkZXIuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5sbyBgdGVzdCAtZiAnZ3N0YXVkaW9hZ2dyZWdhdG9yLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGF1ZGlvYWdncmVnYXRvci5jCiAKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KIAogY2xlYW4tbGlidG9vbDoKIAktcm0gLXJmIC5saWJzIF9saWJzCitpbnN0YWxsLWxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZUhFQURFUlM6ICQobGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMpCisJQCQoTk9STUFMX0lOU1RBTEwpCisJQGxpc3Q9JyQobGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMpJzsgdGVzdCAtbiAiJChsaWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpIiB8fCBsaXN0PTsgXAorCWlmIHRlc3QgLW4gIiQkbGlzdCI7IHRoZW4gXAorCSAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKGxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciknIjsgXAorCSAgJChNS0RJUl9QKSAiJChERVNURElSKSQobGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIgfHwgZXhpdCAxOyBcCisJZmk7IFwKKwlmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgLWYgIiQkcCI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCisJICBlY2hvICIkJGQkJHAiOyBcCisJZG9uZSB8ICQoYW1fX2Jhc2VfbGlzdCkgfCBcCisJd2hpbGUgcmVhZCBmaWxlczsgZG8gXAorCSAgZWNobyAiICQoSU5TVEFMTF9IRUFERVIpICQkZmlsZXMgJyQoREVTVERJUikkKGxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciknIjsgXAorCSAgJChJTlNUQUxMX0hFQURFUikgJCRmaWxlcyAiJChERVNURElSKSQobGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIgfHwgZXhpdCAkJD87IFwKKwlkb25lCiAKLUlEOiAkKGFtX190YWdnZWRfZmlsZXMpCi0JJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgbWtpZCAtZklEICQkdW5pcXVlCi10YWdzOiB0YWdzLWFtCi1UQUdTOiB0YWdzCit1bmluc3RhbGwtbGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlSEVBREVSUzoKKwlAJChOT1JNQUxfVU5JTlNUQUxMKQorCUBsaXN0PSckKGxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTKSc7IHRlc3QgLW4gIiQobGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIgfHwgbGlzdD07IFwKKwlmaWxlcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IHNlZCAtZSAnc3xeLiovfHwnYDsgXAorCWRpcj0nJChERVNURElSKSQobGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSc7ICQoYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpcikKK3RhZ3MgVEFHUzoKIAotdGFncy1hbTogJChUQUdTX0RFUEVOREVOQ0lFUykgJChhbV9fdGFnZ2VkX2ZpbGVzKQotCXNldCB4OyBcCi0JaGVyZT1gcHdkYDsgXAotCSQoYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyk7IFwKLQlzaGlmdDsgXAotCWlmIHRlc3QgLXogIiQoRVRBR1NfQVJHUykkJCokJHVuaXF1ZSI7IHRoZW4gOjsgZWxzZSBcCi0JICB0ZXN0IC1uICIkJHVuaXF1ZSIgfHwgdW5pcXVlPSQkZW1wdHlfZml4OyBcCi0JICBpZiB0ZXN0ICQkIyAtZ3QgMDsgdGhlbiBcCi0JICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKLQkgICAgICAiJCRAIiAkJHVuaXF1ZTsgXAotCSAgZWxzZSBcCi0JICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKLQkgICAgICAkJHVuaXF1ZTsgXAotCSAgZmk7IFwKLQlmaQotY3RhZ3M6IGN0YWdzLWFtCitjdGFncyBDVEFHUzoKIAotQ1RBR1M6IGN0YWdzCi1jdGFncy1hbTogJChUQUdTX0RFUEVOREVOQ0lFUykgJChhbV9fdGFnZ2VkX2ZpbGVzKQotCSQoYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyk7IFwKLQl0ZXN0IC16ICIkKENUQUdTX0FSR1MpJCR1bmlxdWUiIFwKLQkgIHx8ICQoQ1RBR1MpICQoQ1RBR1NGTEFHUykgJChBTV9DVEFHU0ZMQUdTKSAkKENUQUdTX0FSR1MpIFwKLQkgICAgICQkdW5pcXVlCitjc2NvcGUgY3Njb3BlbGlzdDoKIAotR1RBR1M6Ci0JaGVyZT1gJChhbV9fY2QpICQodG9wX2J1aWxkZGlyKSAmJiBwd2RgIFwKLQkgICYmICQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpIFwKLQkgICYmIGd0YWdzIC1pICQoR1RBR1NfQVJHUykgIiQkaGVyZSIKLWNzY29wZWxpc3Q6IGNzY29wZWxpc3QtYW0KLQotY3Njb3BlbGlzdC1hbTogJChhbV9fdGFnZ2VkX2ZpbGVzKQotCWxpc3Q9JyQoYW1fX3RhZ2dlZF9maWxlcyknOyBcCi0JY2FzZSAiJChzcmNkaXIpIiBpbiBcCi0JICBbXFwvXSogfCA/OltcXC9dKikgc2Rpcj0iJChzcmNkaXIpIiA7OyBcCi0JICAqKSBzZGlyPSQoc3ViZGlyKS8kKHNyY2RpcikgOzsgXAotCWVzYWM7IFwKLQlmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKLQkgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gXAotCSAgICBlY2hvICIkKHN1YmRpcikvJCRpIjsgXAotCSAgZWxzZSBcCi0JICAgIGVjaG8gIiQkc2Rpci8kJGkiOyBcCi0JICBmaTsgXAotCWRvbmUgPj4gJCh0b3BfYnVpbGRkaXIpL2NzY29wZS5maWxlcwotCi1kaXN0Y2xlYW4tdGFnczoKLQktcm0gLWYgVEFHUyBJRCBHVEFHUyBHUlRBR1MgR1NZTVMgR1BBVEggdGFncwogCiBkaXN0ZGlyOiAkKERJU1RGSUxFUykKIAlAc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCkBAIC05NzQsNyArOTY5LDcgQEAKIGNoZWNrOiBjaGVjay1hbQogYWxsLWFtOiBNYWtlZmlsZSAkKExUTElCUkFSSUVTKSAkKEhFQURFUlMpCiBpbnN0YWxsZGlyczoKLQlmb3IgZGlyIGluICIkKERFU1RESVIpJChwbHVnaW5kaXIpIjsgZG8gXAorCWZvciBkaXIgaW4gIiQoREVTVERJUikkKGxpYmRpcikiICIkKERFU1RESVIpJChsaWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpIjsgZG8gXAogCSAgdGVzdCAteiAiJCRkaXIiIHx8ICQoTUtESVJfUCkgIiQkZGlyIjsgXAogCWRvbmUKIGluc3RhbGw6IGluc3RhbGwtYW0KQEAgLTk5OSw2ICs5OTQsNyBAQAogbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKIAogY2xlYW4tZ2VuZXJpYzoKKwktdGVzdCAteiAiJChDTEVBTkZJTEVTKSIgfHwgcm0gLWYgJChDTEVBTkZJTEVTKQogCiBkaXN0Y2xlYW4tZ2VuZXJpYzoKIAktdGVzdCAteiAiJChDT05GSUdfQ0xFQU5fRklMRVMpIiB8fCBybSAtZiAkKENPTkZJR19DTEVBTl9GSUxFUykKQEAgLTEwMDksMTQgKzEwMDUsMTMgQEAKIAlAZWNobyAiaXQgZGVsZXRlcyBmaWxlcyB0aGF0IG1heSByZXF1aXJlIHNwZWNpYWwgdG9vbHMgdG8gcmVidWlsZC4iCiBjbGVhbjogY2xlYW4tYW0KIAotY2xlYW4tYW06IGNsZWFuLWdlbmVyaWMgY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBcCitjbGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBjbGVhbi1saWJMVExJQlJBUklFUyBjbGVhbi1saWJ0b29sIFwKIAltb3N0bHljbGVhbi1hbQogCiBkaXN0Y2xlYW46IGRpc3RjbGVhbi1hbQogCS1ybSAtcmYgLi8kKERFUERJUikKIAktcm0gLWYgTWFrZWZpbGUKLWRpc3RjbGVhbi1hbTogY2xlYW4tYW0gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAotCWRpc3RjbGVhbi10YWdzCitkaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljCiAKIGR2aTogZHZpLWFtCiAKQEAgLTEwMzAsMTMgKzEwMjUsMTMgQEAKIAogaW5mby1hbToKIAotaW5zdGFsbC1kYXRhLWFtOiBpbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCitpbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtbGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlSEVBREVSUwogCiBpbnN0YWxsLWR2aTogaW5zdGFsbC1kdmktYW0KIAogaW5zdGFsbC1kdmktYW06CiAKLWluc3RhbGwtZXhlYy1hbToKK2luc3RhbGwtZXhlYy1hbTogaW5zdGFsbC1saWJMVExJQlJBUklFUwogCiBpbnN0YWxsLWh0bWw6IGluc3RhbGwtaHRtbC1hbQogCkBAIC0xMDc2LDI0ICsxMDcxLDI3IEBACiAKIHBzLWFtOgogCi11bmluc3RhbGwtYW06IHVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUwordW5pbnN0YWxsLWFtOiB1bmluc3RhbGwtbGliTFRMSUJSQVJJRVMgXAorCXVuaW5zdGFsbC1saWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTCiAKIC5NQUtFOiBpbnN0YWxsLWFtIGluc3RhbGwtc3RyaXAKIAotLlBIT05ZOiBDVEFHUyBHVEFHUyBUQUdTIGFsbCBhbGwtYW0gY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBcCi0JY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBjc2NvcGVsaXN0LWFtIGN0YWdzIFwKLQljdGFncy1hbSBkaXN0Y2xlYW4gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAotCWRpc3RjbGVhbi1saWJ0b29sIGRpc3RjbGVhbi10YWdzIGRpc3RkaXIgZHZpIGR2aS1hbSBodG1sIFwKLQlodG1sLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIFwKLQlpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgaW5zdGFsbC1kdmktYW0gaW5zdGFsbC1leGVjIFwKLQlpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIGluc3RhbGwtaHRtbC1hbSBpbnN0YWxsLWluZm8gXAotCWluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBcCi0JaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUyBpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0gXAotCWluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBcCi0JbWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4gXAotCW1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1saWJ0b29sIFwKLQlwZGYgcGRmLWFtIHBzIHBzLWFtIHRhZ3MgdGFncy1hbSB1bmluc3RhbGwgdW5pbnN0YWxsLWFtIFwKLQl1bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKKy5QSE9OWTogYWxsIGFsbC1hbSBjaGVjayBjaGVjay1hbSBjbGVhbiBjbGVhbi1nZW5lcmljIFwKKwljbGVhbi1saWJMVExJQlJBUklFUyBjbGVhbi1saWJ0b29sIGNzY29wZWxpc3QtYW0gY3RhZ3MtYW0gXAorCWRpc3RjbGVhbiBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcCisJZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGRpciBkdmkgZHZpLWFtIGh0bWwgaHRtbC1hbSBpbmZvIGluZm8tYW0gXAorCWluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIFwKKwlpbnN0YWxsLWR2aS1hbSBpbnN0YWxsLWV4ZWMgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBcCisJaW5zdGFsbC1odG1sLWFtIGluc3RhbGwtaW5mbyBpbnN0YWxsLWluZm8tYW0gXAorCWluc3RhbGwtbGliTFRMSUJSQVJJRVMgXAorCWluc3RhbGwtbGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlSEVBREVSUyBcCisJaW5zdGFsbC1tYW4gaW5zdGFsbC1wZGYgaW5zdGFsbC1wZGYtYW0gaW5zdGFsbC1wcyBcCisJaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gXAorCWluc3RhbGxkaXJzIG1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIFwKKwltb3N0bHljbGVhbiBtb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMgXAorCW1vc3RseWNsZWFuLWxpYnRvb2wgcGRmIHBkZi1hbSBwcyBwcy1hbSB0YWdzLWFtIHVuaW5zdGFsbCBcCisJdW5pbnN0YWxsLWFtIHVuaW5zdGFsbC1saWJMVExJQlJBUklFUyBcCisJdW5pbnN0YWxsLWxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZUhFQURFUlMKIAogLlBSRUNJT1VTOiBNYWtlZmlsZQogCmRpZmYgLS1naXQgYS9nc3QvYXVkaW9taXhlci9nc3RhdWRpb2FnZ3JlZ2F0b3IuYyBiL2dzdC1saWJzL2dzdC9hdWRpby9nc3RhdWRpb2FnZ3JlZ2F0b3IuYwpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBnc3QvYXVkaW9taXhlci9nc3RhdWRpb2FnZ3JlZ2F0b3IuYwpyZW5hbWUgdG8gZ3N0LWxpYnMvZ3N0L2F1ZGlvL2dzdGF1ZGlvYWdncmVnYXRvci5jCmluZGV4IDhjYTc5MTMuLjVkN2U4ZDYgMTAwNjQ0Ci0tLSBhL2dzdC9hdWRpb21peGVyL2dzdGF1ZGlvYWdncmVnYXRvci5jCisrKyBiL2dzdC1saWJzL2dzdC9hdWRpby9nc3RhdWRpb2FnZ3JlZ2F0b3IuYwpAQCAtMTc1LDYgKzE3NSw4IEBACiAgICAgR3N0QWdncmVnYXRvclBhZCAqIGJwYWQsIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgR3N0QnVmZmVyICoqIG91dGJ1Zik7CiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfYXVkaW9fYWdncmVnYXRvcl9hZ2dyZWdhdGUgKEdzdEFnZ3JlZ2F0b3IgKiBhZ2csCiAgICAgZ2Jvb2xlYW4gdGltZW91dCk7CitzdGF0aWMgZ2Jvb2xlYW4gc3luY19wYWRfdmFsdWVzIChHc3RBdWRpb0FnZ3JlZ2F0b3IgKiBhYWdnLAorICAgIEdzdEF1ZGlvQWdncmVnYXRvclBhZCAqIHBhZCk7CiAKICNkZWZpbmUgREVGQVVMVF9PVVRQVVRfQlVGRkVSX0RVUkFUSU9OICgxMCAqIEdTVF9NU0VDT05EKQogI2RlZmluZSBERUZBVUxUX0FMSUdOTUVOVF9USFJFU0hPTEQgICAoNDAgKiBHU1RfTVNFQ09ORCkKQEAgLTI0MCw2ICsyNDIsOCBAQAogCiAgIGtsYXNzLT5jcmVhdGVfb3V0cHV0X2J1ZmZlciA9IGdzdF9hdWRpb19hZ2dyZWdhdG9yX2NyZWF0ZV9vdXRwdXRfYnVmZmVyOwogCisgIEdTVF9ERUJVR19SRUdJU1RFUl9GVU5DUFRSIChzeW5jX3BhZF92YWx1ZXMpOworCiAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChhdWRpb19hZ2dyZWdhdG9yX2RlYnVnLCAiYXVkaW9hZ2dyZWdhdG9yIiwKICAgICAgIEdTVF9ERUJVR19GR19NQUdFTlRBLCAiR3N0QXVkaW9BZ2dyZWdhdG9yIik7CiAKQEAgLTgyOSw3ICs4MzMsNyBAQAogICBpZiAoZGlzY29udCkgewogICAgIC8qIEhhdmUgZGlzY29udCwgbmVlZCByZXN5bmMgKi8KICAgICBpZiAocGFkLT5wcml2LT5uZXh0X29mZnNldCAhPSAtMSkKLSAgICAgIEdTVF9JTkZPX09CSkVDVCAocGFkLCAiSGF2ZSBkaXNjb250LiBFeHBlY3RlZCAlIgorICAgICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAiSGF2ZSBkaXNjb250LiBFeHBlY3RlZCAlIgogICAgICAgICAgIEdfR1VJTlQ2NF9GT1JNQVQgIiwgZ290ICUiIEdfR1VJTlQ2NF9GT1JNQVQsCiAgICAgICAgICAgcGFkLT5wcml2LT5uZXh0X29mZnNldCwgc3RhcnRfb2Zmc2V0KTsKICAgICBwYWQtPnByaXYtPm91dHB1dF9vZmZzZXQgPSAtMTsKQEAgLTg1Myw3ICs4NTcsNyBAQAogCiAgICAgLyogQ29udmVydCB0byBwb3NpdGlvbiBpbiB0aGUgb3V0cHV0IHNlZ21lbnQgKi8KICAgICBzdGFydF9vdXRwdXRfb2Zmc2V0ID0KLSAgICAgICAgZ3N0X3NlZ21lbnRfdG9fcG9zaXRpb24gKCZhZ2ctPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwKKyAgICAgICAgZ3N0X3NlZ21lbnRfcG9zaXRpb25fZnJvbV9ydW5uaW5nX3RpbWUgKCZhZ2ctPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwKICAgICAgICAgc3RhcnRfcnVubmluZ190aW1lKTsKICAgICBpZiAoc3RhcnRfb3V0cHV0X29mZnNldCAhPSAtMSkKICAgICAgIHN0YXJ0X291dHB1dF9vZmZzZXQgPQpAQCAtODYxLDcgKzg2NSw3IEBACiAgICAgICAgICAgR1NUX1NFQ09ORCk7CiAKICAgICBlbmRfb3V0cHV0X29mZnNldCA9Ci0gICAgICAgIGdzdF9zZWdtZW50X3RvX3Bvc2l0aW9uICgmYWdnLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCisgICAgICAgIGdzdF9zZWdtZW50X3Bvc2l0aW9uX2Zyb21fcnVubmluZ190aW1lICgmYWdnLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCiAgICAgICAgIGVuZF9ydW5uaW5nX3RpbWUpOwogICAgIGlmIChlbmRfb3V0cHV0X29mZnNldCAhPSAtMSkKICAgICAgIGVuZF9vdXRwdXRfb2Zmc2V0ID0KQEAgLTk5NSw3ICs5OTksNyBAQAogICBpZiAocGFkLT5wcml2LT5wb3NpdGlvbiA9PSBwYWQtPnByaXYtPnNpemUpIHsKICAgICAvKiBCdWZmZXIgZG9uZSwgZHJvcCBpdCAqLwogICAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJnBhZC0+cHJpdi0+YnVmZmVyLCBOVUxMKTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChwYWQsICJGaW5pc2hlZCBtaXhpbmcgYnVmZmVyLCB3YWl0aW5nIGZvciBuZXh0Iik7CisgICAgR1NUX0xPR19PQkpFQ1QgKHBhZCwgIkZpbmlzaGVkIG1peGluZyBidWZmZXIsIHdhaXRpbmcgZm9yIG5leHQiKTsKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KIApAQCAtMTA4OSw3ICsxMDkzLDcgQEAKIAogICAvKiBTeW5jIHBhZCBwcm9wZXJ0aWVzIHRvIHRoZSBzdHJlYW0gdGltZSAqLwogICBnc3RfYWdncmVnYXRvcl9pdGVyYXRlX3NpbmtwYWRzIChhZ2csCi0gICAgICAoR3N0QWdncmVnYXRvclBhZEZvcmVhY2hGdW5jKSBHU1RfREVCVUdfRlVOQ1BUUiAoc3luY19wYWRfdmFsdWVzKSwgTlVMTCk7CisgICAgICAoR3N0QWdncmVnYXRvclBhZEZvcmVhY2hGdW5jKSBzeW5jX3BhZF92YWx1ZXMsIE5VTEwpOwogCiAgIEdTVF9BVURJT19BR0dSRUdBVE9SX0xPQ0sgKGFhZ2cpOwogICBHU1RfT0JKRUNUX0xPQ0sgKGFnZyk7CkBAIC0xMTk0LDggKzExOTgsOCBAQAogICAgICAgaWYgKHRpbWVvdXQpIHsKICAgICAgICAgaWYgKHBhZC0+cHJpdi0+b3V0cHV0X29mZnNldCA8IG5leHRfb2Zmc2V0KSB7CiAgICAgICAgICAgZ2ludDY0IGRpZmYgPSBuZXh0X29mZnNldCAtIHBhZC0+cHJpdi0+b3V0cHV0X29mZnNldDsKLSAgICAgICAgICBHU1RfTE9HX09CSkVDVCAocGFkLCAiVGltZW91dCwgbWlzc2luZyAlIiBHX0dJTlQ2NF9GT1JNQVQgIiBmcmFtZXMgKCUiCi0gICAgICAgICAgICAgIEdTVF9USU1FX0ZPUk1BVCAiKSIsIGRpZmYsCisgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAiVGltZW91dCwgbWlzc2luZyAlIiBHX0dJTlQ2NF9GT1JNQVQKKyAgICAgICAgICAgICAgIiBmcmFtZXMgKCUiIEdTVF9USU1FX0ZPUk1BVCAiKSIsIGRpZmYsCiAgICAgICAgICAgICAgIEdTVF9USU1FX0FSR1MgKGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoZGlmZiwgR1NUX1NFQ09ORCwKICAgICAgICAgICAgICAgICAgICAgICBHU1RfQVVESU9fSU5GT19SQVRFICgmYWFnZy0+aW5mbykpKSk7CiAgICAgICAgIH0KQEAgLTEyNDEsNyArMTI0NSw3IEBACiAgICAgICBwYWQtPnByaXYtPm91dHB1dF9vZmZzZXQgKz0gZGlmZjsKIAogICAgICAgaWYgKHBhZC0+cHJpdi0+cG9zaXRpb24gPT0gcGFkLT5wcml2LT5zaXplKSB7Ci0gICAgICAgIEdTVF9MT0dfT0JKRUNUIChwYWQsICJCdWZmZXIgd2FzIGxhdGUgYnkgJSIgR1NUX1RJTUVfRk9STUFUCisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgIkJ1ZmZlciB3YXMgbGF0ZSBieSAlIiBHU1RfVElNRV9GT1JNQVQKICAgICAgICAgICAgICIsIGRyb3BwaW5nICUiIEdTVF9QVFJfRk9STUFULAogICAgICAgICAgICAgR1NUX1RJTUVfQVJHUyAoZ3N0X3V0aWxfdWludDY0X3NjYWxlIChvZGlmZiwgR1NUX1NFQ09ORCwKICAgICAgICAgICAgICAgICAgICAgR1NUX0FVRElPX0lORk9fUkFURSAoJmFhZ2ctPmluZm8pKSksIHBhZC0+cHJpdi0+YnVmZmVyKTsKQEAgLTEyNjIsOCArMTI2Niw4IEBACiAgICAgICBkcm9wX2J1ZiA9ICFnc3RfYXVkaW9fYWdncmVnYXRvcl9taXhfYnVmZmVyIChhYWdnLCBwYWQsIHBhZC0+cHJpdi0+YnVmZmVyLAogICAgICAgICAgIG91dGJ1Zik7CiAgICAgICBpZiAocGFkLT5wcml2LT5vdXRwdXRfb2Zmc2V0ID49IG5leHRfb2Zmc2V0KSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwKLSAgICAgICAgICAgICJQYWQgaXMgYWZ0ZXIgY3VycmVudCBvZmZzZXQ6ICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiA+PSAlIgorICAgICAgICBHU1RfTE9HX09CSkVDVCAocGFkLAorICAgICAgICAgICAgIlBhZCBpcyBhdCBvciBhZnRlciBjdXJyZW50IG9mZnNldDogJSIgR19HVUlOVDY0X0ZPUk1BVCAiID49ICUiCiAgICAgICAgICAgICBHX0dJTlQ2NF9GT1JNQVQsIHBhZC0+cHJpdi0+b3V0cHV0X29mZnNldCwgbmV4dF9vZmZzZXQpOwogICAgICAgfSBlbHNlIHsKICAgICAgICAgaXNfZG9uZSA9IEZBTFNFOwpAQCAtMTI3OSwxNSArMTI4MywxNSBAQAogCiAgIGlmIChkcm9wcGVkKSB7CiAgICAgLyogV2UgZHJvcHBlZCBhIGJ1ZmZlciwgcmV0cnkgKi8KLSAgICBHU1RfSU5GT19PQkpFQ1QgKGFhZ2csICJBIHBhZCBkcm9wcGVkIGEgYnVmZmVyLCB3YWl0IGZvciB0aGUgbmV4dCBvbmUiKTsKKyAgICBHU1RfTE9HX09CSkVDVCAoYWFnZywgIkEgcGFkIGRyb3BwZWQgYSBidWZmZXIsIHdhaXQgZm9yIHRoZSBuZXh0IG9uZSIpOwogICAgIEdTVF9BVURJT19BR0dSRUdBVE9SX1VOTE9DSyAoYWFnZyk7CiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogICB9CiAKICAgaWYgKCFpc19kb25lICYmICFpc19lb3MpIHsKICAgICAvKiBHZXQgbW9yZSBidWZmZXJzICovCi0gICAgR1NUX0lORk9fT0JKRUNUIChhYWdnLAotICAgICAgICAiV2UncmUgbm90IGRvbmUgeWV0IGZvciB0aGUgY3VycmVudCBvZmZzZXQsIiAiIHdhaXRpbmcgZm9yIG1vcmUgZGF0YSIpOworICAgIEdTVF9MT0dfT0JKRUNUIChhYWdnLAorICAgICAgICAiV2UncmUgbm90IGRvbmUgeWV0IGZvciB0aGUgY3VycmVudCBvZmZzZXQsIHdhaXRpbmcgZm9yIG1vcmUgZGF0YSIpOwogICAgIEdTVF9BVURJT19BR0dSRUdBVE9SX1VOTE9DSyAoYWFnZyk7CiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogICB9CmRpZmYgLS1naXQgYS9nc3QvYXVkaW9taXhlci9nc3RhdWRpb2FnZ3JlZ2F0b3IuaCBiL2dzdC1saWJzL2dzdC9hdWRpby9nc3RhdWRpb2FnZ3JlZ2F0b3IuaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9hZ2dyZWdhdG9yLmgKcmVuYW1lIHRvIGdzdC1saWJzL2dzdC9hdWRpby9nc3RhdWRpb2FnZ3JlZ2F0b3IuaApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYmFzZS9NYWtlZmlsZS5hbQppbmRleCAwZDU1MzY4Li45OTM3MDFkIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvYmFzZS9NYWtlZmlsZS5hbQorKysgYi9nc3QtbGlicy9nc3QvYmFzZS9NYWtlZmlsZS5hbQpAQCAtOSw4ICs5LDggQEAKIGxpYmdzdGJhZGJhc2VfQEdTVF9BUElfVkVSU0lPTkBfbGFfTElCQUREID0gJChHU1RfTElCUykKIGxpYmdzdGJhZGJhc2VfQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUyA9ICQoR1NUX0xJQl9MREZMQUdTKSAkKEdTVF9BTExfTERGTEFHUykgJChHU1RfTFRfTERGTEFHUykKIAotbm9pbnN0X0hFQURFUlMgPQlcCi0JZ3N0YWdncmVnYXRvci5oCitsaWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2dzdC9iYXNlCitsaWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTID0gZ3N0YWdncmVnYXRvci5oCiAKIEVYVFJBX0RJU1QgPSAKIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvYmFzZS9NYWtlZmlsZS5pbgppbmRleCBhZDViNjJlLi5mN2M4NDM4IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvYmFzZS9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvYmFzZS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE5ICsxMTYsMTkgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCi1ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCitESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSBcCisJJChsaWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTKSBcCiAJJChhbV9fRElTVF9DT01NT04pCiBta2luc3RhbGxkaXJzID0gJChpbnN0YWxsX3NoKSAtZAogQ09ORklHX0hFQURFUiA9ICQodG9wX2J1aWxkZGlyKS9jb25maWcuaApAQCAtMTYxLDcgKzE2MSw4IEBACiAgICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAogICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAogICB9Ci1hbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQobGliZGlyKSIKK2FtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChsaWJkaXIpIiBcCisJIiQoREVTVERJUikkKGxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIKIExUTElCUkFSSUVTID0gJChsaWJfTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQogbGliZ3N0YmFkYmFzZV9AR1NUX0FQSV9WRVJTSU9OQF9sYV9ERVBFTkRFTkNJRVMgPSAgXApAQCAtMjE5LDI2ICsyMjAsOCBAQAogICAgIG58bm98Tk8pIGZhbHNlOzsgXAogICAgICopIChpbnN0YWxsLWluZm8gLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjE7OyBcCiAgIGVzYWMKLUhFQURFUlMgPSAkKG5vaW5zdF9IRUFERVJTKQorSEVBREVSUyA9ICQobGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUykKIGFtX190YWdnZWRfZmlsZXMgPSAkKEhFQURFUlMpICQoU09VUkNFUykgJChUQUdTX0ZJTEVTKSAkKExJU1ApCi0jIFJlYWQgYSBsaXN0IG9mIG5ld2xpbmUtc2VwYXJhdGVkIHN0cmluZ3MgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQsCi0jIGFuZCBwcmludCBlYWNoIG9mIHRoZW0gb25jZSwgd2l0aG91dCBkdXBsaWNhdGVzLiAgSW5wdXQgb3JkZXIgaXMKLSMgKm5vdCogcHJlc2VydmVkLgotYW1fX3VuaXF1aWZ5X2lucHV0ID0gJChBV0spICdcCi0gIEJFR0lOIHsgbm9uZW1wdHkgPSAwOyB9IFwKLSAgeyBpdGVtc1skJDBdID0gMTsgbm9uZW1wdHkgPSAxOyB9IFwKLSAgRU5EIHsgaWYgKG5vbmVtcHR5KSB7IGZvciAoaSBpbiBpdGVtcykgcHJpbnQgaTsgfTsgfSBcCi0nCi0jIE1ha2Ugc3VyZSB0aGUgbGlzdCBvZiBzb3VyY2VzIGlzIHVuaXF1ZS4gIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UsCi0jIGUuZy4sIHRoZSBzYW1lIHNvdXJjZSBmaWxlIG1pZ2h0IGJlIHNoYXJlZCBhbW9uZyBfU09VUkNFUyB2YXJpYWJsZXMKLSMgZm9yIGRpZmZlcmVudCBwcm9ncmFtcy9saWJyYXJpZXMuCi1hbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzID0gXAotICBsaXN0PSckKGFtX190YWdnZWRfZmlsZXMpJzsgXAotICB1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXAotICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNyY2RpcikvJCRpOyBmaTsgXAotICBkb25lIHwgJChhbV9fdW5pcXVpZnlfaW5wdXQpYAotRVRBR1MgPSBldGFncwotQ1RBR1MgPSBjdGFncwogYW1fX0RJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX3NyY2RpcikvZGVwY29tcAogRElTVEZJTEVTID0gJChESVNUX0NPTU1PTikgJChESVNUX1NPVVJDRVMpICQoVEVYSU5GT1MpICQoRVhUUkFfRElTVCkKIEFDTE9DQUwgPSBAQUNMT0NBTEAKQEAgLTI3Niw2ICsyNTksOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICsyOTgsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMDgsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzI2LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzQ1LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszODEsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDA4LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUxMSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTI1LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU0MCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzU5OSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NjIsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY3Myw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2ODMsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzcyMiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzcyLDkgKzc3MCw4IEBACiAKIGxpYmdzdGJhZGJhc2VfQEdTVF9BUElfVkVSU0lPTkBfbGFfTElCQUREID0gJChHU1RfTElCUykKIGxpYmdzdGJhZGJhc2VfQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUyA9ICQoR1NUX0xJQl9MREZMQUdTKSAkKEdTVF9BTExfTERGTEFHUykgJChHU1RfTFRfTERGTEFHUykKLW5vaW5zdF9IRUFERVJTID0gXAotCWdzdGFnZ3JlZ2F0b3IuaAotCitsaWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2dzdC9iYXNlCitsaWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTID0gZ3N0YWdncmVnYXRvci5oCiBFWFRSQV9ESVNUID0gCiBhbGw6IGFsbC1hbQogCkBAIC04OTIsNTggKzg4OSwzMyBAQAogCiBjbGVhbi1saWJ0b29sOgogCS1ybSAtcmYgLmxpYnMgX2xpYnMKK2luc3RhbGwtbGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTOiAkKGxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMpCisJQCQoTk9STUFMX0lOU1RBTEwpCisJQGxpc3Q9JyQobGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUyknOyB0ZXN0IC1uICIkKGxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIgfHwgbGlzdD07IFwKKwlpZiB0ZXN0IC1uICIkJGxpc3QiOyB0aGVuIFwKKwkgIGVjaG8gIiAkKE1LRElSX1ApICckKERFU1RESVIpJChsaWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciknIjsgXAorCSAgJChNS0RJUl9QKSAiJChERVNURElSKSQobGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpIiB8fCBleGl0IDE7IFwKKwlmaTsgXAorCWZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAiJCRwIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKKwkgIGVjaG8gIiQkZCQkcCI7IFwKKwlkb25lIHwgJChhbV9fYmFzZV9saXN0KSB8IFwKKwl3aGlsZSByZWFkIGZpbGVzOyBkbyBcCisJICBlY2hvICIgJChJTlNUQUxMX0hFQURFUikgJCRmaWxlcyAnJChERVNURElSKSQobGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpJyI7IFwKKwkgICQoSU5TVEFMTF9IRUFERVIpICQkZmlsZXMgIiQoREVTVERJUikkKGxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIgfHwgZXhpdCAkJD87IFwKKwlkb25lCiAKLUlEOiAkKGFtX190YWdnZWRfZmlsZXMpCi0JJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgbWtpZCAtZklEICQkdW5pcXVlCi10YWdzOiB0YWdzLWFtCi1UQUdTOiB0YWdzCit1bmluc3RhbGwtbGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTOgorCUAkKE5PUk1BTF9VTklOU1RBTEwpCisJQGxpc3Q9JyQobGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUyknOyB0ZXN0IC1uICIkKGxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIgfHwgbGlzdD07IFwKKwlmaWxlcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IHNlZCAtZSAnc3xeLiovfHwnYDsgXAorCWRpcj0nJChERVNURElSKSQobGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpJzsgJChhbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyKQordGFncyBUQUdTOgogCi10YWdzLWFtOiAkKFRBR1NfREVQRU5ERU5DSUVTKSAkKGFtX190YWdnZWRfZmlsZXMpCi0Jc2V0IHg7IFwKLQloZXJlPWBwd2RgOyBcCi0JJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgXAotCXNoaWZ0OyBcCi0JaWYgdGVzdCAteiAiJChFVEFHU19BUkdTKSQkKiQkdW5pcXVlIjsgdGhlbiA6OyBlbHNlIFwKLQkgIHRlc3QgLW4gIiQkdW5pcXVlIiB8fCB1bmlxdWU9JCRlbXB0eV9maXg7IFwKLQkgIGlmIHRlc3QgJCQjIC1ndCAwOyB0aGVuIFwKLQkgICAgJChFVEFHUykgJChFVEFHU0ZMQUdTKSAkKEFNX0VUQUdTRkxBR1MpICQoRVRBR1NfQVJHUykgXAotCSAgICAgICIkJEAiICQkdW5pcXVlOyBcCi0JICBlbHNlIFwKLQkgICAgJChFVEFHUykgJChFVEFHU0ZMQUdTKSAkKEFNX0VUQUdTRkxBR1MpICQoRVRBR1NfQVJHUykgXAotCSAgICAgICQkdW5pcXVlOyBcCi0JICBmaTsgXAotCWZpCi1jdGFnczogY3RhZ3MtYW0KK2N0YWdzIENUQUdTOgogCi1DVEFHUzogY3RhZ3MKLWN0YWdzLWFtOiAkKFRBR1NfREVQRU5ERU5DSUVTKSAkKGFtX190YWdnZWRfZmlsZXMpCi0JJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgXAotCXRlc3QgLXogIiQoQ1RBR1NfQVJHUykkJHVuaXF1ZSIgXAotCSAgfHwgJChDVEFHUykgJChDVEFHU0ZMQUdTKSAkKEFNX0NUQUdTRkxBR1MpICQoQ1RBR1NfQVJHUykgXAotCSAgICAgJCR1bmlxdWUKK2NzY29wZSBjc2NvcGVsaXN0OgogCi1HVEFHUzoKLQloZXJlPWAkKGFtX19jZCkgJCh0b3BfYnVpbGRkaXIpICYmIHB3ZGAgXAotCSAgJiYgJChhbV9fY2QpICQodG9wX3NyY2RpcikgXAotCSAgJiYgZ3RhZ3MgLWkgJChHVEFHU19BUkdTKSAiJCRoZXJlIgotY3Njb3BlbGlzdDogY3Njb3BlbGlzdC1hbQotCi1jc2NvcGVsaXN0LWFtOiAkKGFtX190YWdnZWRfZmlsZXMpCi0JbGlzdD0nJChhbV9fdGFnZ2VkX2ZpbGVzKSc7IFwKLQljYXNlICIkKHNyY2RpcikiIGluIFwKLQkgIFtcXC9dKiB8ID86W1xcL10qKSBzZGlyPSIkKHNyY2RpcikiIDs7IFwKLQkgICopIHNkaXI9JChzdWJkaXIpLyQoc3JjZGlyKSA7OyBcCi0JZXNhYzsgXAotCWZvciBpIGluICQkbGlzdDsgZG8gXAotCSAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBcCi0JICAgIGVjaG8gIiQoc3ViZGlyKS8kJGkiOyBcCi0JICBlbHNlIFwKLQkgICAgZWNobyAiJCRzZGlyLyQkaSI7IFwKLQkgIGZpOyBcCi0JZG9uZSA+PiAkKHRvcF9idWlsZGRpcikvY3Njb3BlLmZpbGVzCi0KLWRpc3RjbGVhbi10YWdzOgotCS1ybSAtZiBUQUdTIElEIEdUQUdTIEdSVEFHUyBHU1lNUyBHUEFUSCB0YWdzCiAKIGRpc3RkaXI6ICQoRElTVEZJTEVTKQogCUBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqXS9cXFxcJi9nJ2A7IFwKQEAgLTk3OSw3ICs5NTEsNyBAQAogY2hlY2s6IGNoZWNrLWFtCiBhbGwtYW06IE1ha2VmaWxlICQoTFRMSUJSQVJJRVMpICQoSEVBREVSUykKIGluc3RhbGxkaXJzOgotCWZvciBkaXIgaW4gIiQoREVTVERJUikkKGxpYmRpcikiOyBkbyBcCisJZm9yIGRpciBpbiAiJChERVNURElSKSQobGliZGlyKSIgIiQoREVTVERJUikkKGxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSI7IGRvIFwKIAkgIHRlc3QgLXogIiQkZGlyIiB8fCAkKE1LRElSX1ApICIkJGRpciI7IFwKIAlkb25lCiBpbnN0YWxsOiBpbnN0YWxsLWFtCkBAIC0xMDIwLDggKzk5Miw3IEBACiBkaXN0Y2xlYW46IGRpc3RjbGVhbi1hbQogCS1ybSAtcmYgLi8kKERFUERJUikKIAktcm0gLWYgTWFrZWZpbGUKLWRpc3RjbGVhbi1hbTogY2xlYW4tYW0gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAotCWRpc3RjbGVhbi10YWdzCitkaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljCiAKIGR2aTogZHZpLWFtCiAKQEAgLTEwMzUsNyArMTAwNiw3IEBACiAKIGluZm8tYW06CiAKLWluc3RhbGwtZGF0YS1hbToKK2luc3RhbGwtZGF0YS1hbTogaW5zdGFsbC1saWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZUhFQURFUlMKIAogaW5zdGFsbC1kdmk6IGluc3RhbGwtZHZpLWFtCiAKQEAgLTEwODEsMjMgKzEwNTIsMjcgQEAKIAogcHMtYW06CiAKLXVuaW5zdGFsbC1hbTogdW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTCit1bmluc3RhbGwtYW06IHVuaW5zdGFsbC1saWJMVExJQlJBUklFUyBcCisJdW5pbnN0YWxsLWxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlSEVBREVSUwogCiAuTUFLRTogaW5zdGFsbC1hbSBpbnN0YWxsLXN0cmlwCiAKLS5QSE9OWTogQ1RBR1MgR1RBR1MgVEFHUyBhbGwgYWxsLWFtIGNoZWNrIGNoZWNrLWFtIGNsZWFuIGNsZWFuLWdlbmVyaWMgXAotCWNsZWFuLWxpYkxUTElCUkFSSUVTIGNsZWFuLWxpYnRvb2wgY3Njb3BlbGlzdC1hbSBjdGFncyBcCi0JY3RhZ3MtYW0gZGlzdGNsZWFuIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKLQlkaXN0Y2xlYW4tbGlidG9vbCBkaXN0Y2xlYW4tdGFncyBkaXN0ZGlyIGR2aSBkdmktYW0gaHRtbCBcCi0JaHRtbC1hbSBpbmZvIGluZm8tYW0gaW5zdGFsbCBpbnN0YWxsLWFtIGluc3RhbGwtZGF0YSBcCi0JaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIGluc3RhbGwtZHZpLWFtIGluc3RhbGwtZXhlYyBcCi0JaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBpbnN0YWxsLWh0bWwtYW0gaW5zdGFsbC1pbmZvIFwKLQlpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1saWJMVExJQlJBUklFUyBpbnN0YWxsLW1hbiBpbnN0YWxsLXBkZiBcCi0JaW5zdGFsbC1wZGYtYW0gaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIGluc3RhbGwtc3RyaXAgXAotCWluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgbWFpbnRhaW5lci1jbGVhbiBcCi0JbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIG1vc3RseWNsZWFuLWNvbXBpbGUgXAotCW1vc3RseWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4tbGlidG9vbCBwZGYgcGRmLWFtIHBzIHBzLWFtIFwKLQl0YWdzIHRhZ3MtYW0gdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSB1bmluc3RhbGwtbGliTFRMSUJSQVJJRVMKKy5QSE9OWTogYWxsIGFsbC1hbSBjaGVjayBjaGVjay1hbSBjbGVhbiBjbGVhbi1nZW5lcmljIFwKKwljbGVhbi1saWJMVExJQlJBUklFUyBjbGVhbi1saWJ0b29sIGNzY29wZWxpc3QtYW0gY3RhZ3MtYW0gXAorCWRpc3RjbGVhbiBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcCisJZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGRpciBkdmkgZHZpLWFtIGh0bWwgaHRtbC1hbSBpbmZvIGluZm8tYW0gXAorCWluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIFwKKwlpbnN0YWxsLWR2aS1hbSBpbnN0YWxsLWV4ZWMgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBcCisJaW5zdGFsbC1odG1sLWFtIGluc3RhbGwtaW5mbyBpbnN0YWxsLWluZm8tYW0gXAorCWluc3RhbGwtbGliTFRMSUJSQVJJRVMgXAorCWluc3RhbGwtbGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTIGluc3RhbGwtbWFuIFwKKwlpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0gXAorCWluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBcCisJbWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4gXAorCW1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1saWJ0b29sIFwKKwlwZGYgcGRmLWFtIHBzIHBzLWFtIHRhZ3MtYW0gdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSBcCisJdW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTIFwKKwl1bmluc3RhbGwtbGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTCiAKIC5QUkVDSU9VUzogTWFrZWZpbGUKIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5jIGIvZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5jCmluZGV4IDE0MTZmNmMuLmVjMjk3ZGYgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuYworKysgYi9nc3QtbGlicy9nc3QvYmFzZS9nc3RhZ2dyZWdhdG9yLmMKQEAgLTIxNSw2ICsyMTUsOCBAQAogICBnYm9vbGVhbiBwZW5kaW5nX2ZsdXNoX3N0b3A7CiAgIGdib29sZWFuIHBlbmRpbmdfZW9zOwogCisgIGdib29sZWFuIGZpcnN0X2J1ZmZlcjsKKwogICBHUXVldWUgYnVmZmVyczsKICAgZ3VpbnQgbnVtX2J1ZmZlcnM7CiAgIEdzdENsb2NrVGltZSBoZWFkX3Bvc2l0aW9uOwpAQCAtMjg4LDcgKzI5MCw3IEBACiAgIGdib29sZWFuIHBlZXJfbGF0ZW5jeV9saXZlOyAgIC8qIHByb3RlY3RlZCBieSBzcmNfbG9jayAqLwogICBHc3RDbG9ja1RpbWUgcGVlcl9sYXRlbmN5X21pbjsgICAgICAgIC8qIHByb3RlY3RlZCBieSBzcmNfbG9jayAqLwogICBHc3RDbG9ja1RpbWUgcGVlcl9sYXRlbmN5X21heDsgICAgICAgIC8qIHByb3RlY3RlZCBieSBzcmNfbG9jayAqLwotICBnYm9vbGVhbiBoYXNfcGVlcl9sYXRlbmN5OworICBnYm9vbGVhbiBoYXNfcGVlcl9sYXRlbmN5OyAgICAvKiBwcm90ZWN0ZWQgYnkgc3JjX2xvY2sgKi8KIAogICBHc3RDbG9ja1RpbWUgc3ViX2xhdGVuY3lfbWluOyAvKiBwcm90ZWN0ZWQgYnkgc3JjX2xvY2sgKi8KICAgR3N0Q2xvY2tUaW1lIHN1Yl9sYXRlbmN5X21heDsgLyogcHJvdGVjdGVkIGJ5IHNyY19sb2NrICovCkBAIC0yOTgsNyArMzAwLDcgQEAKICAgR011dGV4IHNyY19sb2NrOwogICBHQ29uZCBzcmNfY29uZDsKIAotICBnYm9vbGVhbiBmaXJzdF9idWZmZXI7CisgIGdib29sZWFuIGZpcnN0X2J1ZmZlcjsgICAgICAgIC8qIHByb3RlY3RlZCBieSBvYmplY3QgbG9jayAqLwogICBHc3RBZ2dyZWdhdG9yU3RhcnRUaW1lU2VsZWN0aW9uIHN0YXJ0X3RpbWVfc2VsZWN0aW9uOwogICBHc3RDbG9ja1RpbWUgc3RhcnRfdGltZTsKIApAQCAtMzExLDYgKzMxMyw3IEBACiAgIEdzdEV2ZW50ICpldmVudDsKICAgZ2Jvb2xlYW4gcmVzdWx0OwogICBnYm9vbGVhbiBmbHVzaDsKKyAgZ2Jvb2xlYW4gb25seV90b19hY3RpdmVfcGFkczsKIAogICBnYm9vbGVhbiBvbmVfYWN0dWFsbHlfc2Vla2VkOwogfSBFdmVudERhdGE7CkBAIC02OTgsOSArNzAxLDggQEAKICAgICB9CiAKICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLAotICAgICAgICAiY2xvY2sgcmV0dXJuZWQgJWQgKGppdHRlcjogJXMlIiBHU1RfVElNRV9GT1JNQVQgIikiLAotICAgICAgICBzdGF0dXMsIChqaXR0ZXIgPCAwID8gIi0iIDogIiAiKSwKLSAgICAgICAgR1NUX1RJTUVfQVJHUyAoKGppdHRlciA8IDAgPyAtaml0dGVyIDogaml0dGVyKSkpOworICAgICAgICAiY2xvY2sgcmV0dXJuZWQgJWQgKGppdHRlcjogJSIgR1NUX1NUSU1FX0ZPUk1BVCAiKSIsCisgICAgICAgIHN0YXR1cywgR1NUX1NUSU1FX0FSR1MgKGppdHRlcikpOwogCiAgICAgLyogd2UgdGltZWQgb3V0ICovCiAgICAgaWYgKHN0YXR1cyA9PSBHU1RfQ0xPQ0tfT0sgfHwgc3RhdHVzID09IEdTVF9DTE9DS19FQVJMWSkgewpAQCAtODU4LDcgKzg2MCw2IEBACiAgIEdzdEFnZ3JlZ2F0b3JDbGFzcyAqa2xhc3M7CiAgIGdib29sZWFuIHJlc3VsdDsKIAotICBzZWxmLT5wcml2LT5ydW5uaW5nID0gVFJVRTsKICAgc2VsZi0+cHJpdi0+c2VuZF9zdHJlYW1fc3RhcnQgPSBUUlVFOwogICBzZWxmLT5wcml2LT5zZW5kX3NlZ21lbnQgPSBUUlVFOwogICBzZWxmLT5wcml2LT5zZW5kX2VvcyA9IFRSVUU7CkBAIC0xMDg2LDYgKzEwODcsOCBAQAogICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc2VsZik7CiAgICAgICB9CiAKKyAgICAgIGFnZ3BhZC0+cHJpdi0+Zmlyc3RfYnVmZmVyID0gVFJVRTsKKwogICAgICAgLyogV2UgbmV2ZXIgZm9yd2FyZCB0aGUgZXZlbnQgKi8KICAgICAgIGdvdG8gZWF0OwogICAgIH0KQEAgLTEzMDMsNDIgKzEzMDYsNjIgQEAKICAgU1JDX1VOTE9DSyAoc2VsZik7CiB9CiAKK3N0YXRpYyBHc3RBZ2dyZWdhdG9yUGFkICoKK2dzdF9hZ2dyZWdhdG9yX2RlZmF1bHRfY3JlYXRlX25ld19wYWQgKEdzdEFnZ3JlZ2F0b3IgKiBzZWxmLAorICAgIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsIGNvbnN0IGdjaGFyICogcmVxX25hbWUsIGNvbnN0IEdzdENhcHMgKiBjYXBzKQoreworICBHc3RBZ2dyZWdhdG9yUGFkICphZ2dfcGFkOworICBHc3RBZ2dyZWdhdG9yUHJpdmF0ZSAqcHJpdiA9IHNlbGYtPnByaXY7CisgIGdpbnQgc2VyaWFsID0gMDsKKyAgZ2NoYXIgKm5hbWUgPSBOVUxMOworCisgIGlmICh0ZW1wbC0+ZGlyZWN0aW9uICE9IEdTVF9QQURfU0lOSyB8fAorICAgICAgZ19zdHJjbXAwICh0ZW1wbC0+bmFtZV90ZW1wbGF0ZSwgInNpbmtfJXUiKSkKKyAgICBnb3RvIG5vdF9zaW5rOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoc2VsZik7CisgIGlmIChyZXFfbmFtZSA9PSBOVUxMIHx8IHN0cmxlbiAocmVxX25hbWUpIDwgNgorICAgICAgfHwgIWdfc3RyX2hhc19wcmVmaXggKHJlcV9uYW1lLCAic2lua18iKSkgeworICAgIC8qIG5vIG5hbWUgZ2l2ZW4gd2hlbiByZXF1ZXN0aW5nIHRoZSBwYWQsIHVzZSBuZXh0IGF2YWlsYWJsZSBpbnQgKi8KKyAgICBwcml2LT5wYWRjb3VudCsrOworICB9IGVsc2UgeworICAgIC8qIHBhcnNlIHNlcmlhbCBudW1iZXIgZnJvbSByZXF1ZXN0ZWQgcGFkbmFtZSAqLworICAgIHNlcmlhbCA9IGdfYXNjaWlfc3RydG91bGwgKCZyZXFfbmFtZVs1XSwgTlVMTCwgMTApOworICAgIGlmIChzZXJpYWwgPj0gcHJpdi0+cGFkY291bnQpCisgICAgICBwcml2LT5wYWRjb3VudCA9IHNlcmlhbDsKKyAgfQorCisgIG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJzaW5rXyV1IiwgcHJpdi0+cGFkY291bnQpOworICBhZ2dfcGFkID0gZ19vYmplY3RfbmV3IChHU1RfQUdHUkVHQVRPUl9HRVRfQ0xBU1MgKHNlbGYpLT5zaW5rcGFkc190eXBlLAorICAgICAgIm5hbWUiLCBuYW1lLCAiZGlyZWN0aW9uIiwgR1NUX1BBRF9TSU5LLCAidGVtcGxhdGUiLCB0ZW1wbCwgTlVMTCk7CisgIGdfZnJlZSAobmFtZSk7CisKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHNlbGYpOworCisgIHJldHVybiBhZ2dfcGFkOworCisgIC8qIGVycm9ycyAqLworbm90X3Npbms6CisgIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNlbGYsICJyZXF1ZXN0IG5ldyBwYWQgdGhhdCBpcyBub3QgYSBTSU5LIHBhZFxuIik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KK30KKwogc3RhdGljIEdzdFBhZCAqCiBnc3RfYWdncmVnYXRvcl9yZXF1ZXN0X25ld19wYWQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAogICAgIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsIGNvbnN0IGdjaGFyICogcmVxX25hbWUsIGNvbnN0IEdzdENhcHMgKiBjYXBzKQogewogICBHc3RBZ2dyZWdhdG9yICpzZWxmOwogICBHc3RBZ2dyZWdhdG9yUGFkICphZ2dfcGFkOwotCi0gIEdzdEVsZW1lbnRDbGFzcyAqa2xhc3MgPSBHU1RfRUxFTUVOVF9HRVRfQ0xBU1MgKGVsZW1lbnQpOworICBHc3RBZ2dyZWdhdG9yQ2xhc3MgKmtsYXNzID0gR1NUX0FHR1JFR0FUT1JfR0VUX0NMQVNTIChlbGVtZW50KTsKICAgR3N0QWdncmVnYXRvclByaXZhdGUgKnByaXYgPSBHU1RfQUdHUkVHQVRPUiAoZWxlbWVudCktPnByaXY7CiAKICAgc2VsZiA9IEdTVF9BR0dSRUdBVE9SIChlbGVtZW50KTsKIAotICBpZiAodGVtcGwgPT0gZ3N0X2VsZW1lbnRfY2xhc3NfZ2V0X3BhZF90ZW1wbGF0ZSAoa2xhc3MsICJzaW5rXyV1IikpIHsKLSAgICBnaW50IHNlcmlhbCA9IDA7Ci0gICAgZ2NoYXIgKm5hbWUgPSBOVUxMOwotCi0gICAgR1NUX09CSkVDVF9MT0NLIChlbGVtZW50KTsKLSAgICBpZiAocmVxX25hbWUgPT0gTlVMTCB8fCBzdHJsZW4gKHJlcV9uYW1lKSA8IDYKLSAgICAgICAgfHwgIWdfc3RyX2hhc19wcmVmaXggKHJlcV9uYW1lLCAic2lua18iKSkgewotICAgICAgLyogbm8gbmFtZSBnaXZlbiB3aGVuIHJlcXVlc3RpbmcgdGhlIHBhZCwgdXNlIG5leHQgYXZhaWxhYmxlIGludCAqLwotICAgICAgcHJpdi0+cGFkY291bnQrKzsKLSAgICB9IGVsc2UgewotICAgICAgLyogcGFyc2Ugc2VyaWFsIG51bWJlciBmcm9tIHJlcXVlc3RlZCBwYWRuYW1lICovCi0gICAgICBzZXJpYWwgPSBnX2FzY2lpX3N0cnRvdWxsICgmcmVxX25hbWVbNV0sIE5VTEwsIDEwKTsKLSAgICAgIGlmIChzZXJpYWwgPj0gcHJpdi0+cGFkY291bnQpCi0gICAgICAgIHByaXYtPnBhZGNvdW50ID0gc2VyaWFsOwotICAgIH0KLQotICAgIG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJzaW5rXyV1IiwgcHJpdi0+cGFkY291bnQpOwotICAgIGFnZ19wYWQgPSBnX29iamVjdF9uZXcgKEdTVF9BR0dSRUdBVE9SX0dFVF9DTEFTUyAoc2VsZiktPnNpbmtwYWRzX3R5cGUsCi0gICAgICAgICJuYW1lIiwgbmFtZSwgImRpcmVjdGlvbiIsIEdTVF9QQURfU0lOSywgInRlbXBsYXRlIiwgdGVtcGwsIE5VTEwpOwotICAgIGdfZnJlZSAobmFtZSk7Ci0KLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZWxlbWVudCk7Ci0KLSAgfSBlbHNlIHsKKyAgYWdnX3BhZCA9IGtsYXNzLT5jcmVhdGVfbmV3X3BhZCAoc2VsZiwgdGVtcGwsIHJlcV9uYW1lLCBjYXBzKTsKKyAgaWYgKCFhZ2dfcGFkKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoZWxlbWVudCwgIkNvdWxkbid0IGNyZWF0ZSBuZXcgcGFkIik7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KIApAQCAtMTQwMSwxOCArMTQyNCw2IEBACiAgIGVsc2UKICAgICBtYXggPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogCi0gIGlmIChsaXZlICYmIG1pbiA+IG1heCkgewotICAgIEdTVF9FTEVNRU5UX1dBUk5JTkcgKHNlbGYsIENPUkUsIE5FR09USUFUSU9OLAotICAgICAgICAoIiVzIiwgIkxhdGVuY3kgdG9vIGJpZyIpLAotICAgICAgICAoIlRoZSByZXF1ZXN0ZWQgbGF0ZW5jeSB2YWx1ZSBpcyB0b28gYmlnIGZvciB0aGUgY3VycmVudCBwaXBlbGluZS4gIgotICAgICAgICAgICAgIkxpbWl0aW5nIHRvICUiIEdfR0lOVDY0X0ZPUk1BVCwgbWF4KSk7Ci0gICAgbWluID0gbWF4OwotICAgIC8qIEZJWE1FOiBUaGlzIGNvdWxkIGluIHRoZW9yeSBiZWNvbWUgbmVnYXRpdmUsIGJ1dCBpbgotICAgICAqIHRoYXQgY2FzZSBhbGwgaXMgbG9zdCBhbnl3YXkgKi8KLSAgICBzZWxmLT5wcml2LT5sYXRlbmN5IC09IG1pbiAtIG1heDsKLSAgICAvKiBGSVhNRTogc2hvdWxkbid0IHdlIGdfb2JqZWN0X25vdGlmeSgpIHRoZSBjaGFuZ2UgaGVyZT8gKi8KLSAgfQotCiAgIFNSQ19CUk9BRENBU1QgKHNlbGYpOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJjb25maWd1cmVkIGxhdGVuY3kgbGl2ZTolcyBtaW46JSIgR19HSU5UNjRfRk9STUFUCkBAIC0xNTU0LDkgKzE1NjUsMTQgQEAKICAgR3N0QWdncmVnYXRvclBhZCAqYWdncGFkID0gR1NUX0FHR1JFR0FUT1JfUEFEIChwYWQpOwogCiAgIGlmIChwZWVyKSB7Ci0gICAgcmV0ID0gZ3N0X3BhZF9zZW5kX2V2ZW50IChwZWVyLCBnc3RfZXZlbnRfcmVmIChldmRhdGEtPmV2ZW50KSk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAicmV0dXJuIG9mIGV2ZW50IHB1c2ggaXMgJWQiLCByZXQpOwotICAgIGdzdF9vYmplY3RfdW5yZWYgKHBlZXIpOworICAgIGlmIChldmRhdGEtPm9ubHlfdG9fYWN0aXZlX3BhZHMgJiYgYWdncGFkLT5wcml2LT5maXJzdF9idWZmZXIpIHsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgIm5vdCBzZW5kaW5nIGV2ZW50IHRvIGluYWN0aXZlIHBhZCIpOworICAgICAgcmV0ID0gVFJVRTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0ID0gZ3N0X3BhZF9zZW5kX2V2ZW50IChwZWVyLCBnc3RfZXZlbnRfcmVmIChldmRhdGEtPmV2ZW50KSk7CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChwYWQsICJyZXR1cm4gb2YgZXZlbnQgcHVzaCBpcyAlZCIsIHJldCk7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChwZWVyKTsKKyAgICB9CiAgIH0KIAogICBpZiAocmV0ID09IEZBTFNFKSB7CkBAIC0xNjAxLDcgKzE2MTcsNyBAQAogCiBzdGF0aWMgRXZlbnREYXRhCiBnc3RfYWdncmVnYXRvcl9mb3J3YXJkX2V2ZW50X3RvX2FsbF9zaW5rcGFkcyAoR3N0QWdncmVnYXRvciAqIHNlbGYsCi0gICAgR3N0RXZlbnQgKiBldmVudCwgZ2Jvb2xlYW4gZmx1c2gpCisgICAgR3N0RXZlbnQgKiBldmVudCwgZ2Jvb2xlYW4gZmx1c2gsIGdib29sZWFuIG9ubHlfdG9fYWN0aXZlX3BhZHMpCiB7CiAgIEV2ZW50RGF0YSBldmRhdGE7CiAKQEAgLTE2MDksNiArMTYyNSw3IEBACiAgIGV2ZGF0YS5yZXN1bHQgPSBUUlVFOwogICBldmRhdGEuZmx1c2ggPSBmbHVzaDsKICAgZXZkYXRhLm9uZV9hY3R1YWxseV9zZWVrZWQgPSBGQUxTRTsKKyAgZXZkYXRhLm9ubHlfdG9fYWN0aXZlX3BhZHMgPSBvbmx5X3RvX2FjdGl2ZV9wYWRzOwogCiAgIC8qIFdlIGZpcnN0IG5lZWQgdG8gc2V0IGFsbCBwYWRzIGFzIGZsdXNoaW5nIGluIGEgZmlyc3QgcGFzcwogICAgKiBhcyBmbHVzaF9zdGFydCBmbHVzaF9zdG9wIGlzIHNvbWV0aW1lcyBzZW50IHN5bmNocm9ub3VzbHkKQEAgLTE2NjgsNyArMTY4NSw4IEBACiAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzZWxmKTsKIAogICAvKiBmb3J3YXJkIHRoZSBzZWVrIHVwc3RyZWFtICovCi0gIGV2ZGF0YSA9IGdzdF9hZ2dyZWdhdG9yX2ZvcndhcmRfZXZlbnRfdG9fYWxsX3NpbmtwYWRzIChzZWxmLCBldmVudCwgZmx1c2gpOworICBldmRhdGEgPQorICAgICAgZ3N0X2FnZ3JlZ2F0b3JfZm9yd2FyZF9ldmVudF90b19hbGxfc2lua3BhZHMgKHNlbGYsIGV2ZW50LCBmbHVzaCwgRkFMU0UpOwogICBldmVudCA9IE5VTEw7CiAKICAgaWYgKCFldmRhdGEucmVzdWx0IHx8ICFldmRhdGEub25lX2FjdHVhbGx5X3NlZWtlZCkgewpAQCAtMTcxMSw3ICsxNzI5LDEyIEBACiAgICAgfQogICB9CiAKLSAgZXZkYXRhID0gZ3N0X2FnZ3JlZ2F0b3JfZm9yd2FyZF9ldmVudF90b19hbGxfc2lua3BhZHMgKHNlbGYsIGV2ZW50LCBGQUxTRSk7CisgIC8qIERvbid0IGZvcndhcmQgUU9TIGV2ZW50cyB0byBwYWRzIHRoYXQgaGFkIG5vIGFjdGl2ZSBidWZmZXIgeWV0LiBPdGhlcndpc2UKKyAgICogdGhleSB3aWxsIHJlY2VpdmUgYSBRT1MgZXZlbnQgdGhhdCBoYXMgZWFybGllc3RfdGltZT0wIChiZWNhdXNlIHdlIGNhbid0CisgICAqIGhhdmUgbmVnYXRpdmUgdGltZXN0YW1wcyksIGFuZCBjb25zaWRlciB0aGVpciBidWZmZXIgYXMgdG9vIGxhdGUgKi8KKyAgZXZkYXRhID0KKyAgICAgIGdzdF9hZ2dyZWdhdG9yX2ZvcndhcmRfZXZlbnRfdG9fYWxsX3NpbmtwYWRzIChzZWxmLCBldmVudCwgRkFMU0UsCisgICAgICBHU1RfRVZFTlRfVFlQRSAoZXZlbnQpID09IEdTVF9FVkVOVF9RT1MpOwogICByZXMgPSBldmRhdGEucmVzdWx0OwogCiBkb25lOgpAQCAtMTg0OSw3ICsxODcyLDcgQEAKICAqIEdldHMgdGhlIGxhdGVuY3kgdmFsdWUuIFNlZSBnc3RfYWdncmVnYXRvcl9zZXRfbGF0ZW5jeSBmb3IKICAqIG1vcmUgZGV0YWlscy4KICAqCi0gKiBSZXR1cm5zOiBUaGUgdGltZSBpbiBuYW5vc2Vjb25kcyB0byB3YWl0IGZvciBkYXRhIHRvIGFycml2ZSBvbiBhIHNpbmsgcGFkIAorICogUmV0dXJuczogVGhlIHRpbWUgaW4gbmFub3NlY29uZHMgdG8gd2FpdCBmb3IgZGF0YSB0byBhcnJpdmUgb24gYSBzaW5rIHBhZAogICogYmVmb3JlIGEgcGFkIGlzIGRlZW1lZCB1bnJlc3BvbnNpdmUuIEEgdmFsdWUgb2YgLTEgbWVhbnMgYW4KICAqIHVubGltaXRlZCB0aW1lLgogICovCkBAIC0xOTMyLDYgKzE5NTUsOCBAQAogICBrbGFzcy0+c3JjX2V2ZW50ID0gZ3N0X2FnZ3JlZ2F0b3JfZGVmYXVsdF9zcmNfZXZlbnQ7CiAgIGtsYXNzLT5zcmNfcXVlcnkgPSBnc3RfYWdncmVnYXRvcl9kZWZhdWx0X3NyY19xdWVyeTsKIAorICBrbGFzcy0+Y3JlYXRlX25ld19wYWQgPSBnc3RfYWdncmVnYXRvcl9kZWZhdWx0X2NyZWF0ZV9uZXdfcGFkOworCiAgIGdzdGVsZW1lbnRfY2xhc3MtPnJlcXVlc3RfbmV3X3BhZCA9CiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2FnZ3JlZ2F0b3JfcmVxdWVzdF9uZXdfcGFkKTsKICAgZ3N0ZWxlbWVudF9jbGFzcy0+c2VuZF9ldmVudCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYWdncmVnYXRvcl9zZW5kX2V2ZW50KTsKQEAgLTIxMzEsOCArMjE1NiwxMSBAQAogCiAgIGJ1Zl9wdHMgPSBHU1RfQlVGRkVSX1BUUyAoYWN0dWFsX2J1Zik7CiAKKyAgYWdncGFkLT5wcml2LT5maXJzdF9idWZmZXIgPSBGQUxTRTsKKwogICBmb3IgKDs7KSB7CiAgICAgU1JDX0xPQ0sgKHNlbGYpOworICAgIEdTVF9PQkpFQ1RfTE9DSyAoc2VsZik7CiAgICAgUEFEX0xPQ0sgKGFnZ3BhZCk7CiAgICAgaWYgKGdzdF9hZ2dyZWdhdG9yX3BhZF9oYXNfc3BhY2UgKHNlbGYsIGFnZ3BhZCkKICAgICAgICAgJiYgYWdncGFkLT5wcml2LT5mbG93X3JldHVybiA9PSBHU1RfRkxPV19PSykgewpAQCAtMjE0OSwxMCArMjE3NywxMiBAQAogCiAgICAgZmxvd19yZXR1cm4gPSBhZ2dwYWQtPnByaXYtPmZsb3dfcmV0dXJuOwogICAgIGlmIChmbG93X3JldHVybiAhPSBHU1RfRkxPV19PSykgeworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNlbGYpOwogICAgICAgU1JDX1VOTE9DSyAoc2VsZik7CiAgICAgICBnb3RvIGZsdXNoaW5nOwogICAgIH0KICAgICBHU1RfREVCVUdfT0JKRUNUIChhZ2dwYWQsICJXYWl0aW5nIGZvciBidWZmZXIgdG8gYmUgY29uc3VtZWQiKTsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc2VsZik7CiAgICAgU1JDX1VOTE9DSyAoc2VsZik7CiAgICAgUEFEX1dBSVRfRVZFTlQgKGFnZ3BhZCk7CiAKQEAgLTIxNjgsNiArMjE5OCw3IEBACiAgICAgICAgIHN0YXJ0X3RpbWUgPSAwOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR1NUX0FHR1JFR0FUT1JfU1RBUlRfVElNRV9TRUxFQ1RJT05fRklSU1Q6CisgICAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoYWdncGFkKTsKICAgICAgICAgaWYgKGFnZ3BhZC0+c2VnbWVudC5mb3JtYXQgPT0gR1NUX0ZPUk1BVF9USU1FKSB7CiAgICAgICAgICAgc3RhcnRfdGltZSA9IGJ1Zl9wdHM7CiAgICAgICAgICAgaWYgKHN0YXJ0X3RpbWUgIT0gLTEpIHsKQEAgLTIxODMsNiArMjIxNCw3IEBACiAgICAgICAgICAgICAgICJhcyB0aGUgc2VnbWVudCBpcyBhICVzIHNlZ21lbnQgaW5zdGVhZCBvZiBhIHRpbWUgc2VnbWVudCIsCiAgICAgICAgICAgICAgIGdzdF9mb3JtYXRfZ2V0X25hbWUgKGFnZ3BhZC0+c2VnbWVudC5mb3JtYXQpKTsKICAgICAgICAgfQorICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWdncGFkKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdTVF9BR0dSRUdBVE9SX1NUQVJUX1RJTUVfU0VMRUNUSU9OX1NFVDoKICAgICAgICAgc3RhcnRfdGltZSA9IHNlbGYtPnByaXYtPnN0YXJ0X3RpbWU7CkBAIC0yMjAzLDYgKzIyMzUsNyBAQAogICB9CiAKICAgUEFEX1VOTE9DSyAoYWdncGFkKTsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHNlbGYpOwogICBTUkNfVU5MT0NLIChzZWxmKTsKIAogZG9uZToKQEAgLTI0MTQsNiArMjQ0Nyw4IEBACiAKICAgZ19tdXRleF9pbml0ICgmcGFkLT5wcml2LT5mbHVzaF9sb2NrKTsKICAgZ19tdXRleF9pbml0ICgmcGFkLT5wcml2LT5sb2NrKTsKKworICBwYWQtPnByaXYtPmZpcnN0X2J1ZmZlciA9IFRSVUU7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5oIGIvZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5oCmluZGV4IDhlZGE3ZGMuLmUxYWZlYTQgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuaAorKysgYi9nc3QtbGlicy9nc3QvYmFzZS9nc3RhZ2dyZWdhdG9yLmgKQEAgLTI0NSw2ICsyNDUsMTEgQEAKIAogICBHc3RDbG9ja1RpbWUgICAgICAoKmdldF9uZXh0X3RpbWUpICAoR3N0QWdncmVnYXRvciAgICAqICBhZ2dyZWdhdG9yKTsKIAorICBHc3RBZ2dyZWdhdG9yUGFkICogKCpjcmVhdGVfbmV3X3BhZCkgKEdzdEFnZ3JlZ2F0b3IgICogc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICogcmVxX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR3N0Q2FwcyAgKiBjYXBzKTsKKwogICAvKjwgcHJpdmF0ZSA+Ki8KICAgZ3BvaW50ZXIgICAgICAgICAgX2dzdF9yZXNlcnZlZFtHU1RfUEFERElOR19MQVJHRV07CiB9OwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2Jhc2VjYW1lcmFiaW5zcmMvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvYmFzZWNhbWVyYWJpbnNyYy9NYWtlZmlsZS5pbgppbmRleCA2NmRhYTI3Li4yZWFkM2YxIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvYmFzZWNhbWVyYWJpbnNyYy9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvYmFzZWNhbWVyYWJpbnNyYy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSBcCkBAIC0yNjUsNiArMjY0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMDIsNiArMzAzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTAsNyArMzEzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzI5LDggKzMzMSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNDcsMTYgKzM1MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zODIsNiArMzg2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDA3LDYgKzQxMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUwOCw2ICs1MTYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTIxLDggKzUzMCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUzOCw2ICs1NDUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTk1LDE2ICs2MDQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NTYsNiArNjY3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY2Niw2ICs2NzgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NzUsNiArNjg4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcxMiw3ICs3MjcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL01ha2VmaWxlLmFtCmluZGV4IGUyNDk4ZGIuLmIxODA1NzAgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuYW0KKysrIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9NYWtlZmlsZS5hbQpAQCAtNSwxOCArNSwyMCBAQAogCWdzdGgyNjVwYXJzZXIuYyBnc3R2cDhwYXJzZXIuYyBnc3R2cDhyYW5nZWRlY29kZXIuYyBcCiAJcGFyc2VydXRpbHMuYyBuYWx1dGlscy5jIGRib29saHVmZi5jIHZwOHV0aWxzLmMgXAogCWdzdGpwZWdwYXJzZXIuYyBcCi0JZ3N0bXBlZ3ZpZGVvbWV0YS5jCisJZ3N0bXBlZ3ZpZGVvbWV0YS5jIFwKKwlnc3R2cDlwYXJzZXIuYyB2cDl1dGlscy5jCiAKIGxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIgPSBcCiAJJChpbmNsdWRlZGlyKS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvZ3N0L2NvZGVjcGFyc2VycwogCi1ub2luc3RfSEVBREVSUyA9IHBhcnNlcnV0aWxzLmggbmFsdXRpbHMuaCBkYm9vbGh1ZmYuaCB2cDh1dGlscy5oCitub2luc3RfSEVBREVSUyA9IHBhcnNlcnV0aWxzLmggbmFsdXRpbHMuaCBkYm9vbGh1ZmYuaCB2cDh1dGlscy5oIHZwOXV0aWxzLmgKIAogbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTID0gXAogCWdzdG1wZWd2aWRlb3BhcnNlci5oIGdzdGgyNjRwYXJzZXIuaCBnc3R2YzFwYXJzZXIuaCBnc3RtcGVnNHBhcnNlci5oIFwKIAlnc3RoMjY1cGFyc2VyLmggZ3N0dnA4cGFyc2VyLmggZ3N0dnA4cmFuZ2VkZWNvZGVyLmggXAogCWdzdGpwZWdwYXJzZXIuaCBcCi0JZ3N0bXBlZ3ZpZGVvbWV0YS5oCisJZ3N0bXBlZ3ZpZGVvbWV0YS5oIFwKKwlnc3R2cDlwYXJzZXIuaAogCiBsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTID0gXAogCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgXApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuaW4KaW5kZXggN2FiYWQ3Ny4uMTAxMTliYSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtIFwKQEAgLTE4Miw3ICsxODEsOSBAQAogCWxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1kYm9vbGh1ZmYubG8gXAogCWxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS12cDh1dGlscy5sbyBcCiAJbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGpwZWdwYXJzZXIubG8gXAotCWxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RtcGVndmlkZW9tZXRhLmxvCisJbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdG1wZWd2aWRlb21ldGEubG8gXAorCWxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3R2cDlwYXJzZXIubG8gXAorCWxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS12cDl1dGlscy5sbwogbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMgPSAgXAogCSQoYW1fbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCkBAIC0yOTMsNiArMjk0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMzAsNiArMzMzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMzgsNyArMzQzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzU3LDggKzM2MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNzUsMTYgKzM4MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MTAsNiArNDE2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDM1LDYgKzQ0Myw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUzNiw2ICs1NDYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTQ5LDggKzU2MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU2Niw2ICs1NzUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjIzLDE2ICs2MzQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02ODQsNiArNjk3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY5NCw2ICs3MDgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MDMsNiArNzE4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc0MCw3ICs3NTcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc4NiwxNyArODAyLDE5IEBACiAJZ3N0aDI2NXBhcnNlci5jIGdzdHZwOHBhcnNlci5jIGdzdHZwOHJhbmdlZGVjb2Rlci5jIFwKIAlwYXJzZXJ1dGlscy5jIG5hbHV0aWxzLmMgZGJvb2xodWZmLmMgdnA4dXRpbHMuYyBcCiAJZ3N0anBlZ3BhcnNlci5jIFwKLQlnc3RtcGVndmlkZW9tZXRhLmMKKwlnc3RtcGVndmlkZW9tZXRhLmMgXAorCWdzdHZwOXBhcnNlci5jIHZwOXV0aWxzLmMKIAogbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciA9IFwKIAkkKGluY2x1ZGVkaXIpL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9nc3QvY29kZWNwYXJzZXJzCiAKLW5vaW5zdF9IRUFERVJTID0gcGFyc2VydXRpbHMuaCBuYWx1dGlscy5oIGRib29saHVmZi5oIHZwOHV0aWxzLmgKK25vaW5zdF9IRUFERVJTID0gcGFyc2VydXRpbHMuaCBuYWx1dGlscy5oIGRib29saHVmZi5oIHZwOHV0aWxzLmggdnA5dXRpbHMuaAogbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTID0gXAogCWdzdG1wZWd2aWRlb3BhcnNlci5oIGdzdGgyNjRwYXJzZXIuaCBnc3R2YzFwYXJzZXIuaCBnc3RtcGVnNHBhcnNlci5oIFwKIAlnc3RoMjY1cGFyc2VyLmggZ3N0dnA4cGFyc2VyLmggZ3N0dnA4cmFuZ2VkZWNvZGVyLmggXAogCWdzdGpwZWdwYXJzZXIuaCBcCi0JZ3N0bXBlZ3ZpZGVvbWV0YS5oCisJZ3N0bXBlZ3ZpZGVvbWV0YS5oIFwKKwlnc3R2cDlwYXJzZXIuaAogCiBsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTID0gXAogCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgXApAQCAtOTA1LDkgKzkyMywxMSBAQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3R2YzFwYXJzZXIuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0dnA4cGFyc2VyLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHZwOHJhbmdlZGVjb2Rlci5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3R2cDlwYXJzZXIuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtbmFsdXRpbHMuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtcGFyc2VydXRpbHMuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtdnA4dXRpbHMuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtdnA5dXRpbHMuUGxvQGFtX19xdW90ZUAKIAogLmMubzoKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQylkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5vJCR8fCdgO1wKQEAgLTEwMjQsNiArMTA0NCwyMCBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0bXBlZ3ZpZGVvbWV0YS5sbyBgdGVzdCAtZiAnZ3N0bXBlZ3ZpZGVvbWV0YS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RtcGVndmlkZW9tZXRhLmMKIAorbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHZwOXBhcnNlci5sbzogZ3N0dnA5cGFyc2VyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3R2cDlwYXJzZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3R2cDlwYXJzZXIuVHBvIC1jIC1vIGxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3R2cDlwYXJzZXIubG8gYHRlc3QgLWYgJ2dzdHZwOXBhcnNlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3R2cDlwYXJzZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHZwOXBhcnNlci5UcG8gJChERVBESVIpL2xpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3R2cDlwYXJzZXIuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0dnA5cGFyc2VyLmMnIG9iamVjdD0nbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHZwOXBhcnNlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0dnA5cGFyc2VyLmxvIGB0ZXN0IC1mICdnc3R2cDlwYXJzZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dnA5cGFyc2VyLmMKKworbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLXZwOXV0aWxzLmxvOiB2cDl1dGlscy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtdnA5dXRpbHMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS12cDl1dGlscy5UcG8gLWMgLW8gbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLXZwOXV0aWxzLmxvIGB0ZXN0IC1mICd2cDl1dGlscy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2cDl1dGlscy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtdnA5dXRpbHMuVHBvICQoREVQRElSKS9saWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtdnA5dXRpbHMuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndnA5dXRpbHMuYycgb2JqZWN0PSdsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtdnA5dXRpbHMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLXZwOXV0aWxzLmxvIGB0ZXN0IC1mICd2cDl1dGlscy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2cDl1dGlscy5jCisKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9kYm9vbGh1ZmYuaCBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZGJvb2xodWZmLmgKaW5kZXggNWQyN2VhZi4uMWNhNTFjMSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9kYm9vbGh1ZmYuaAorKysgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2Rib29saHVmZi5oCkBAIC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8Z2xpYi5oPgogCiB0eXBlZGVmIHNpemVfdCBWUDhfQkRfVkFMVUU7CiAKQEAgLTQyLDE0ICs0MywxNyBAQAogICAgIHZvaWQgICAgICAgICAgICAgICAgKmRlY3J5cHRfc3RhdGU7CiB9IEJPT0xfREVDT0RFUjsKIAorR19HTlVDX0lOVEVSTkFMCiBleHRlcm4gY29uc3QgdW5zaWduZWQgY2hhciB2cDhfbm9ybVsyNTZdOwogCitHX0dOVUNfSU5URVJOQUwKIGludCB2cDhkeF9zdGFydF9kZWNvZGUoQk9PTF9ERUNPREVSICpiciwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc291cmNlX3N6LAogICAgICAgICAgICAgICAgICAgICAgICB2cDhfZGVjcnlwdF9jYiAqZGVjcnlwdF9jYiwKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGVjcnlwdF9zdGF0ZSk7CiAKK0dfR05VQ19JTlRFUk5BTAogdm9pZCB2cDhkeF9ib29sX2RlY29kZXJfZmlsbChCT09MX0RFQ09ERVIgKmJyKTsKIAogCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdGgyNjRwYXJzZXIuYyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0aDI2NHBhcnNlci5jCmluZGV4IDQwOTJhY2IuLjlkYzk4MjIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0aDI2NHBhcnNlci5jCisrKyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0aDI2NHBhcnNlci5jCkBAIC00MjgsMTcgKzQyOCwxMCBAQAogCiAgIC8qIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgZmllbGRzIHRoYXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIGJpdHN0cmVhbQogICAgICBhbmQgaGF2ZSB2YWxpZCBkZWZhdWx0cyAqLwotICB2dWktPmFzcGVjdF9yYXRpb19pZGMgPSAwOwogICB2dWktPnZpZGVvX2Zvcm1hdCA9IDU7Ci0gIHZ1aS0+dmlkZW9fZnVsbF9yYW5nZV9mbGFnID0gMDsKICAgdnVpLT5jb2xvdXJfcHJpbWFyaWVzID0gMjsKICAgdnVpLT50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MgPSAyOwogICB2dWktPm1hdHJpeF9jb2VmZmljaWVudHMgPSAyOwotICB2dWktPmNocm9tYV9zYW1wbGVfbG9jX3R5cGVfdG9wX2ZpZWxkID0gMDsKLSAgdnVpLT5jaHJvbWFfc2FtcGxlX2xvY190eXBlX2JvdHRvbV9maWVsZCA9IDA7Ci0gIHZ1aS0+bG93X2RlbGF5X2hyZF9mbGFnID0gMDsKLSAgdnVpLT5wYXJfbiA9IDA7Ci0gIHZ1aS0+cGFyX2QgPSAwOwogCiAgIFJFQURfVUlOVDggKG5yLCB2dWktPmFzcGVjdF9yYXRpb19pbmZvX3ByZXNlbnRfZmxhZywgMSk7CiAgIGlmICh2dWktPmFzcGVjdF9yYXRpb19pbmZvX3ByZXNlbnRfZmxhZykgewpAQCAtNzgwLDExICs3NzMsOSBAQAogICBkZWZhdWx0X2x1bWFfd2VpZ2h0ID0gMSA8PCBwLT5sdW1hX2xvZzJfd2VpZ2h0X2Rlbm9tOwogICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChwLT5sdW1hX3dlaWdodF9sMCk7IGkrKykKICAgICBwLT5sdW1hX3dlaWdodF9sMFtpXSA9IGRlZmF1bHRfbHVtYV93ZWlnaHQ7Ci0gIG1lbXNldCAocC0+bHVtYV9vZmZzZXRfbDAsIDAsIHNpemVvZiAocC0+bHVtYV9vZmZzZXRfbDApKTsKICAgaWYgKEdTVF9IMjY0X0lTX0JfU0xJQ0UgKHNsaWNlKSkgewogICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKHAtPmx1bWFfd2VpZ2h0X2wxKTsgaSsrKQogICAgICAgcC0+bHVtYV93ZWlnaHRfbDFbaV0gPSBkZWZhdWx0X2x1bWFfd2VpZ2h0OwotICAgIG1lbXNldCAocC0+bHVtYV9vZmZzZXRfbDEsIDAsIHNpemVvZiAocC0+bHVtYV9vZmZzZXRfbDEpKTsKICAgfQogCiAgIGlmIChjaHJvbWFfYXJyYXlfdHlwZSAhPSAwKSB7CkBAIC03OTUsMTMgKzc4NiwxMSBAQAogICAgICAgcC0+Y2hyb21hX3dlaWdodF9sMFtpXVswXSA9IGRlZmF1bHRfY2hyb21hX3dlaWdodDsKICAgICAgIHAtPmNocm9tYV93ZWlnaHRfbDBbaV1bMV0gPSBkZWZhdWx0X2Nocm9tYV93ZWlnaHQ7CiAgICAgfQotICAgIG1lbXNldCAocC0+Y2hyb21hX29mZnNldF9sMCwgMCwgc2l6ZW9mIChwLT5jaHJvbWFfb2Zmc2V0X2wwKSk7CiAgICAgaWYgKEdTVF9IMjY0X0lTX0JfU0xJQ0UgKHNsaWNlKSkgewogICAgICAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAocC0+Y2hyb21hX3dlaWdodF9sMSk7IGkrKykgewogICAgICAgICBwLT5jaHJvbWFfd2VpZ2h0X2wxW2ldWzBdID0gZGVmYXVsdF9jaHJvbWFfd2VpZ2h0OwogICAgICAgICBwLT5jaHJvbWFfd2VpZ2h0X2wxW2ldWzFdID0gZGVmYXVsdF9jaHJvbWFfd2VpZ2h0OwogICAgICAgfQotICAgICAgbWVtc2V0IChwLT5jaHJvbWFfb2Zmc2V0X2wxLCAwLCBzaXplb2YgKHAtPmNocm9tYV9vZmZzZXRfbDEpKTsKICAgICB9CiAgIH0KIApAQCAtOTg1LDEyICs5NzQsNiBAQAogICAgIGdvdG8gZXJyb3I7CiAgIH0KIAotICAvKiBkZWZhdWx0IHZhbHVlcyAqLwotICB0aW0tPmNwYl9yZW1vdmFsX2RlbGF5ID0gMDsKLSAgdGltLT5kcGJfb3V0cHV0X2RlbGF5ID0gMDsKLSAgdGltLT5waWNfc3RydWN0X3ByZXNlbnRfZmxhZyA9IEZBTFNFOwotICBtZW1zZXQgKHRpbS0+Y2xvY2tfdGltZXN0YW1wX2ZsYWcsIDAsIDMpOwotCiAgIGlmIChuYWxwYXJzZXItPmxhc3Rfc3BzLT52dWlfcGFyYW1ldGVyc19wcmVzZW50X2ZsYWcpIHsKICAgICBHc3RIMjY0VlVJUGFyYW1zICp2dWkgPSAmbmFscGFyc2VyLT5sYXN0X3Nwcy0+dnVpX3BhcmFtZXRlcnM7CiAKQEAgLTExNTQsNyArMTEzNyw4IEBACiAKICAgR1NUX0RFQlVHICgicGFyc2luZyBcIlNlaSBtZXNzYWdlXCIiKTsKIAotICBzZWktPnBheWxvYWRUeXBlID0gMDsKKyAgbWVtc2V0IChzZWksIDAsIHNpemVvZiAoKnNlaSkpOworCiAgIGRvIHsKICAgICBSRUFEX1VJTlQ4IChuciwgcGF5bG9hZF90eXBlX2J5dGUsIDgpOwogICAgIHNlaS0+cGF5bG9hZFR5cGUgKz0gcGF5bG9hZF90eXBlX2J5dGU7CkBAIC0xMjk0LDYgKzEyNzgsOCBAQAogewogICBnaW50IG9mZjE7CiAKKyAgbWVtc2V0IChuYWx1LCAwLCBzaXplb2YgKCpuYWx1KSk7CisKICAgaWYgKHNpemUgPCBvZmZzZXQgKyA0KSB7CiAgICAgR1NUX0RFQlVHICgiQ2FuJ3QgcGFyc2UsIGJ1ZmZlciBoYXMgdG9vIHNtYWxsIHNpemUgJSIgR19HU0laRV9GT1JNQVQKICAgICAgICAgIiwgb2Zmc2V0ICV1Iiwgc2l6ZSwgb2Zmc2V0KTsKQEAgLTE0MTQsNiArMTQwMCw4IEBACiB7CiAgIEdzdEJpdFJlYWRlciBicjsKIAorICBtZW1zZXQgKG5hbHUsIDAsIHNpemVvZiAoKm5hbHUpKTsKKwogICBpZiAoc2l6ZSA8IG9mZnNldCArIG5hbF9sZW5ndGhfc2l6ZSkgewogICAgIEdTVF9ERUJVRyAoIkNhbid0IHBhcnNlLCBidWZmZXIgaGFzIHRvbyBzbWFsbCBzaXplICUiIEdfR1NJWkVfRk9STUFUCiAgICAgICAgICIsIG9mZnNldCAldSIsIHNpemUsIG9mZnNldCk7CkBAIC0xNTEyLDIyICsxNTAwLDE0IEBACiAgIGd1aW50IHN1YmhjW10gPSB7IDEsIDIsIDEsIDEgfTsKICAgR3N0SDI2NFZVSVBhcmFtcyAqdnVpID0gTlVMTDsKIAorICBtZW1zZXQgKHNwcywgMCwgc2l6ZW9mICgqc3BzKSk7CisKICAgLyogc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBmaWVsZHMgdGhhdCBtaWdodCBub3QgYmUgcHJlc2VudCBpbiB0aGUgYml0c3RyZWFtCiAgICAgIGFuZCBoYXZlIHZhbGlkIGRlZmF1bHRzICovCiAgIHNwcy0+ZXh0ZW5zaW9uX3R5cGUgPSBHU1RfSDI2NF9OQUxfRVhURU5TSU9OX05PTkU7CiAgIHNwcy0+Y2hyb21hX2Zvcm1hdF9pZGMgPSAxOwotICBzcHMtPnNlcGFyYXRlX2NvbG91cl9wbGFuZV9mbGFnID0gMDsKLSAgc3BzLT5iaXRfZGVwdGhfbHVtYV9taW51czggPSAwOwotICBzcHMtPmJpdF9kZXB0aF9jaHJvbWFfbWludXM4ID0gMDsKICAgbWVtc2V0IChzcHMtPnNjYWxpbmdfbGlzdHNfNHg0LCAxNiwgOTYpOwogICBtZW1zZXQgKHNwcy0+c2NhbGluZ19saXN0c184eDgsIDE2LCAzODQpOwotICBtZW1zZXQgKCZzcHMtPnZ1aV9wYXJhbWV0ZXJzLCAwLCBzaXplb2YgKHNwcy0+dnVpX3BhcmFtZXRlcnMpKTsKLSAgc3BzLT5tYl9hZGFwdGl2ZV9mcmFtZV9maWVsZF9mbGFnID0gMDsKLSAgc3BzLT5mcmFtZV9jcm9wX2xlZnRfb2Zmc2V0ID0gMDsKLSAgc3BzLT5mcmFtZV9jcm9wX3JpZ2h0X29mZnNldCA9IDA7Ci0gIHNwcy0+ZnJhbWVfY3JvcF90b3Bfb2Zmc2V0ID0gMDsKLSAgc3BzLT5mcmFtZV9jcm9wX2JvdHRvbV9vZmZzZXQgPSAwOwotICBzcHMtPmRlbHRhX3BpY19vcmRlcl9hbHdheXNfemVyb19mbGFnID0gMDsKIAogICBSRUFEX1VJTlQ4IChuciwgc3BzLT5wcm9maWxlX2lkYywgOCk7CiAgIFJFQURfVUlOVDggKG5yLCBzcHMtPmNvbnN0cmFpbnRfc2V0MF9mbGFnLCAxKTsKQEAgLTE2MTYsOSArMTU5Niw3IEBACiAgIH0KIAogICAvKiBjYWxjdWxhdGUgQ2hyb21hQXJyYXlUeXBlICovCi0gIGlmIChzcHMtPnNlcGFyYXRlX2NvbG91cl9wbGFuZV9mbGFnKQotICAgIHNwcy0+Y2hyb21hX2FycmF5X3R5cGUgPSAwOwotICBlbHNlCisgIGlmICghc3BzLT5zZXBhcmF0ZV9jb2xvdXJfcGxhbmVfZmxhZykKICAgICBzcHMtPmNocm9tYV9hcnJheV90eXBlID0gc3BzLT5jaHJvbWFfZm9ybWF0X2lkYzsKIAogICAvKiBDYWxjdWxhdGUgIHdpZHRoIGFuZCBoZWlnaHQgKi8KQEAgLTE5MzYsNiArMTkxNCw4IEBACiAgIG5hbF9yZWFkZXJfaW5pdCAoJm5yLCBuYWx1LT5kYXRhICsgbmFsdS0+b2Zmc2V0ICsgbmFsdS0+aGVhZGVyX2J5dGVzLAogICAgICAgbmFsdS0+c2l6ZSAtIG5hbHUtPmhlYWRlcl9ieXRlcyk7CiAKKyAgbWVtc2V0IChwcHMsIDAsIHNpemVvZiAoKnBwcykpOworCiAgIFJFQURfVUVfTUFYICgmbnIsIHBwcy0+aWQsIEdTVF9IMjY0X01BWF9QUFNfQ09VTlQgLSAxKTsKICAgUkVBRF9VRV9NQVggKCZuciwgc3BzX2lkLCBHU1RfSDI2NF9NQVhfU1BTX0NPVU5UIC0gMSk7CiAKQEAgLTE5NTEsOCArMTkzMSw2IEBACiAKICAgLyogc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBmaWVsZHMgdGhhdCBtaWdodCBub3QgYmUgcHJlc2VudCBpbiB0aGUgYml0c3RyZWFtCiAgICAgIGFuZCBoYXZlIHZhbGlkIGRlZmF1bHRzICovCi0gIHBwcy0+c2xpY2VfZ3JvdXBfaWQgPSBOVUxMOwotICBwcHMtPnRyYW5zZm9ybV84eDhfbW9kZV9mbGFnID0gMDsKICAgbWVtY3B5ICgmcHBzLT5zY2FsaW5nX2xpc3RzXzR4NCwgJnNwcy0+c2NhbGluZ19saXN0c180eDQsIDk2KTsKICAgbWVtY3B5ICgmcHBzLT5zY2FsaW5nX2xpc3RzXzh4OCwgJnNwcy0+c2NhbGluZ19saXN0c184eDgsIDM4NCk7CiAKQEAgLTIxMTMsMTIgKzIwOTEsMTMgQEAKICAgR3N0SDI2NFBQUyAqcHBzOwogICBHc3RIMjY0U1BTICpzcHM7CiAKKyAgbWVtc2V0IChzbGljZSwgMCwgc2l6ZW9mICgqc2xpY2UpKTsKKwogICBpZiAoIW5hbHUtPnNpemUpIHsKICAgICBHU1RfREVCVUcgKCJJbnZhbGlkIE5hbCBVbml0Iik7CiAgICAgcmV0dXJuIEdTVF9IMjY0X1BBUlNFUl9FUlJPUjsKICAgfQogCi0KICAgbmFsX3JlYWRlcl9pbml0ICgmbnIsIG5hbHUtPmRhdGEgKyBuYWx1LT5vZmZzZXQgKyBuYWx1LT5oZWFkZXJfYnl0ZXMsCiAgICAgICBuYWx1LT5zaXplIC0gbmFsdS0+aGVhZGVyX2J5dGVzKTsKIApAQCAtMjE1MywxNyArMjEzMiw4IEBACiAKICAgLyogc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBmaWVsZHMgdGhhdCBtaWdodCBub3QgYmUgcHJlc2VudCBpbiB0aGUgYml0c3RyZWFtCiAgICAgIGFuZCBoYXZlIHZhbGlkIGRlZmF1bHRzICovCi0gIHNsaWNlLT5maWVsZF9waWNfZmxhZyA9IDA7Ci0gIHNsaWNlLT5ib3R0b21fZmllbGRfZmxhZyA9IDA7Ci0gIHNsaWNlLT5kZWx0YV9waWNfb3JkZXJfY250X2JvdHRvbSA9IDA7Ci0gIHNsaWNlLT5kZWx0YV9waWNfb3JkZXJfY250WzBdID0gMDsKLSAgc2xpY2UtPmRlbHRhX3BpY19vcmRlcl9jbnRbMV0gPSAwOwotICBzbGljZS0+cmVkdW5kYW50X3BpY19jbnQgPSAwOwogICBzbGljZS0+bnVtX3JlZl9pZHhfbDBfYWN0aXZlX21pbnVzMSA9IHBwcy0+bnVtX3JlZl9pZHhfbDBfYWN0aXZlX21pbnVzMTsKICAgc2xpY2UtPm51bV9yZWZfaWR4X2wxX2FjdGl2ZV9taW51czEgPSBwcHMtPm51bV9yZWZfaWR4X2wxX2FjdGl2ZV9taW51czE7Ci0gIHNsaWNlLT5kaXNhYmxlX2RlYmxvY2tpbmdfZmlsdGVyX2lkYyA9IDA7Ci0gIHNsaWNlLT5zbGljZV9hbHBoYV9jMF9vZmZzZXRfZGl2MiA9IDA7Ci0gIHNsaWNlLT5zbGljZV9iZXRhX29mZnNldF9kaXYyID0gMDsKIAogICBpZiAoc3BzLT5zZXBhcmF0ZV9jb2xvdXJfcGxhbmVfZmxhZykKICAgICBSRUFEX1VJTlQ4ICgmbnIsIHNsaWNlLT5jb2xvdXJfcGxhbmVfaWQsIDIpOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RoMjY1cGFyc2VyLmMgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdGgyNjVwYXJzZXIuYwppbmRleCA3N2E0NjEwLi41MmExZmMyIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdGgyNjVwYXJzZXIuYworKysgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdGgyNjVwYXJzZXIuYwpAQCAtMjY2LDExICsyNjYsNiBAQAogICBndWludCBpLCBqOwogICBHU1RfREVCVUcgKCJwYXJzaW5nIFwiUHJvZmlsZVRpZXJMZXZlbCBwYXJhbWV0ZXJzXCIiKTsKIAotICAvKiBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIGZpZWxkcyB0aGF0IG1pZ2h0IG5vdCBiZSBwcmVzZW50IGluIHRoZQotICAgKiBiaXRzdHJlYW0gYW5kIGhhdmUgdmFsaWQgZGVmYXVsdHMgKi8KLSAgZm9yIChpID0gMDsgaSA8IG1heE51bVN1YkxheWVyc01pbnVzMTsgaSsrKQotICAgIHB0bC0+c3ViX2xheWVyX3RpZXJfZmxhZ1tpXSA9IDA7Ci0KICAgUkVBRF9VSU5UOCAobnIsIHB0bC0+cHJvZmlsZV9zcGFjZSwgMik7CiAgIFJFQURfVUlOVDggKG5yLCBwdGwtPnRpZXJfZmxhZywgMSk7CiAgIFJFQURfVUlOVDggKG5yLCBwdGwtPnByb2ZpbGVfaWRjLCA1KTsKQEAgLTMzNiwxMSArMzMxLDYgQEAKIAogICBHU1RfREVCVUcgKCJwYXJzaW5nIFwiU3ViTGF5ZXIgSFJEIFBhcmFtZXRlcnNcIiIpOwogCi0gIC8qIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgZmllbGRzIHRoYXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIGJpdHN0cmVhbQotICAgICBhbmQgaGF2ZSB2YWxpZCBkZWZhdWx0cyAqLwotICBmb3IgKGkgPSAwOyBpIDw9IENwYkNudDsgaSsrKQotICAgIHN1Yl9ocmQtPmNicl9mbGFnW2ldID0gMDsKLQogICBmb3IgKGkgPSAwOyBpIDw9IENwYkNudDsgaSsrKSB7CiAgICAgUkVBRF9VRV9NQVggKG5yLCBzdWJfaHJkLT5iaXRfcmF0ZV92YWx1ZV9taW51czFbaV0sIEdfTUFYVUlOVDMyIC0gMSk7CiAgICAgUkVBRF9VRV9NQVggKG5yLCBzdWJfaHJkLT5jcGJfc2l6ZV92YWx1ZV9taW51czFbaV0sIEdfTUFYVUlOVDMyIC0gMSk7CkBAIC0zNzAsMTYgKzM2MCw5IEBACiAKICAgLyogc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBmaWVsZHMgdGhhdCBtaWdodCBub3QgYmUgcHJlc2VudCBpbiB0aGUgYml0c3RyZWFtCiAgICAgIGFuZCBoYXZlIHZhbGlkIGRlZmF1bHRzICovCi0gIGhyZC0+c3ViX3BpY19ocmRfcGFyYW1zX3ByZXNlbnRfZmxhZyA9IDA7Ci0gIGhyZC0+c3ViX3BpY19jcGJfcGFyYW1zX2luX3BpY190aW1pbmdfc2VpX2ZsYWcgPSAwOwogICBocmQtPmluaXRpYWxfY3BiX3JlbW92YWxfZGVsYXlfbGVuZ3RoX21pbnVzMSA9IDIzOwogICBocmQtPmF1X2NwYl9yZW1vdmFsX2RlbGF5X2xlbmd0aF9taW51czEgPSAyMzsKICAgaHJkLT5kcGJfb3V0cHV0X2RlbGF5X2xlbmd0aF9taW51czEgPSAyMzsKLSAgZm9yIChpID0gMDsgaSA8PSBtYXhOdW1TdWJMYXllcnNNaW51czE7IGkrKykgewotICAgIGhyZC0+Zml4ZWRfcGljX3JhdGVfZ2VuZXJhbF9mbGFnW2ldID0gMDsKLSAgICBocmQtPmxvd19kZWxheV9ocmRfZmxhZ1tpXSA9IDA7Ci0gICAgaHJkLT5jcGJfY250X21pbnVzMVtpXSA9IDA7Ci0gIH0KIAogICBpZiAoY29tbW9uSW5mUHJlc2VudEZsYWcpIHsKICAgICBSRUFEX1VJTlQ4IChuciwgaHJkLT5uYWxfaHJkX3BhcmFtZXRlcnNfcHJlc2VudF9mbGFnLCAxKTsKQEAgLTQ1NCwzNSArNDM3LDE5IEBACiAKICAgLyogc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBmaWVsZHMgdGhhdCBtaWdodCBub3QgYmUgcHJlc2VudCBpbiB0aGUgYml0c3RyZWFtCiAgICAgIGFuZCBoYXZlIHZhbGlkIGRlZmF1bHRzICovCi0gIHZ1aS0+YXNwZWN0X3JhdGlvX2lkYyA9IDA7CiAgIHZ1aS0+dmlkZW9fZm9ybWF0ID0gNTsKLSAgdnVpLT52aWRlb19mdWxsX3JhbmdlX2ZsYWcgPSAwOwogICB2dWktPmNvbG91cl9wcmltYXJpZXMgPSAyOwogICB2dWktPnRyYW5zZmVyX2NoYXJhY3RlcmlzdGljcyA9IDI7CiAgIHZ1aS0+bWF0cml4X2NvZWZmaWNpZW50cyA9IDI7Ci0gIHZ1aS0+Y2hyb21hX3NhbXBsZV9sb2NfdHlwZV90b3BfZmllbGQgPSAwOwotICB2dWktPmNocm9tYV9zYW1wbGVfbG9jX3R5cGVfYm90dG9tX2ZpZWxkID0gMDsKLSAgdnVpLT5uZXV0cmFsX2Nocm9tYV9pbmRpY2F0aW9uX2ZsYWcgPSAwOwotICB2dWktPmZpZWxkX3NlcV9mbGFnID0gMDsKLSAgdnVpLT5kZWZfZGlzcF93aW5fbGVmdF9vZmZzZXQgPSAwOwotICB2dWktPmRlZl9kaXNwX3dpbl9yaWdodF9vZmZzZXQgPSAwOwotICB2dWktPmRlZl9kaXNwX3dpbl90b3Bfb2Zmc2V0ID0gMDsKLSAgdnVpLT5kZWZfZGlzcF93aW5fYm90dG9tX29mZnNldCA9IDA7Ci0gIHZ1aS0+dGlsZXNfZml4ZWRfc3RydWN0dXJlX2ZsYWcgPSAwOwogICB2dWktPm1vdGlvbl92ZWN0b3JzX292ZXJfcGljX2JvdW5kYXJpZXNfZmxhZyA9IDE7Ci0gIHZ1aS0+bWluX3NwYXRpYWxfc2VnbWVudGF0aW9uX2lkYyA9IDA7CiAgIHZ1aS0+bWF4X2J5dGVzX3Blcl9waWNfZGVub20gPSAyOwogICB2dWktPm1heF9iaXRzX3Blcl9taW5fY3VfZGVub20gPSAxOwogICB2dWktPmxvZzJfbWF4X212X2xlbmd0aF9ob3Jpem9udGFsID0gMTU7CiAgIHZ1aS0+bG9nMl9tYXhfbXZfbGVuZ3RoX3ZlcnRpY2FsID0gMTU7Ci0gIHZ1aS0+cGFyX24gPSAwOwotICB2dWktPnBhcl9kID0gMDsKIAogICBpZiAoc3BzICYmIHNwcy0+cHJvZmlsZV90aWVyX2xldmVsLnByb2dyZXNzaXZlX3NvdXJjZV9mbGFnCiAgICAgICAmJiBzcHMtPnByb2ZpbGVfdGllcl9sZXZlbC5pbnRlcmxhY2VkX3NvdXJjZV9mbGFnKQogICAgIHZ1aS0+ZnJhbWVfZmllbGRfaW5mb19wcmVzZW50X2ZsYWcgPSAxOwotICBlbHNlCi0gICAgdnVpLT5mcmFtZV9maWVsZF9pbmZvX3ByZXNlbnRfZmxhZyA9IDA7CiAKICAgUkVBRF9VSU5UOCAobnIsIHZ1aS0+YXNwZWN0X3JhdGlvX2luZm9fcHJlc2VudF9mbGFnLCAxKTsKICAgaWYgKHZ1aS0+YXNwZWN0X3JhdGlvX2luZm9fcHJlc2VudF9mbGFnKSB7CkBAIC03NTUsOCArNzIyLDYgQEAKIAogICAvKiBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIGZpZWxkcyB0aGF0IG1pZ2h0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBiaXRzdHJlYW0KICAgICAgYW5kIGhhdmUgdmFsaWQgZGVmYXVsdHMgKi8KLSAgc3RSUFMtPmludGVyX3JlZl9waWNfc2V0X3ByZWRpY3Rpb25fZmxhZyA9IDA7Ci0gIHN0UlBTLT5kZWx0YV9pZHhfbWludXMxID0gMDsKICAgZm9yIChqID0gMDsgaiA8IDE2OyBqKyspCiAgICAgdXNlX2RlbHRhX2ZsYWdbal0gPSAxOwogCkBAIC04OTIsMTQgKzg1Nyw2IEBACiAgIEdzdEgyNjVSZWZQaWNMaXN0TW9kaWZpY2F0aW9uICpycGxfbW9kID0gJnNsaWNlLT5yZWZfcGljX2xpc3RfbW9kaWZpY2F0aW9uOwogICBjb25zdCBndWludCBuID0gY2VpbF9sb2cyIChOdW1Qb2NUb3RhbEN1cnIpOwogCi0gIC8qIHNldCBkZWZhdWx0IHZhbHVlcyAqLwotICBycGxfbW9kLT5yZWZfcGljX2xpc3RfbW9kaWZpY2F0aW9uX2ZsYWdfbDAgPSAwOwotICBycGxfbW9kLT5yZWZfcGljX2xpc3RfbW9kaWZpY2F0aW9uX2ZsYWdfbDEgPSAwOwotICBmb3IgKGkgPSAwOyBpIDwgc2xpY2UtPm51bV9yZWZfaWR4X2wwX2FjdGl2ZV9taW51czE7IGkrKykKLSAgICBycGxfbW9kLT5saXN0X2VudHJ5X2wwW2ldID0gMDsKLSAgZm9yIChpID0gMDsgaSA8PSBzbGljZS0+bnVtX3JlZl9pZHhfbDFfYWN0aXZlX21pbnVzMTsgaSsrKQotICAgIHJwbF9tb2QtPmxpc3RfZW50cnlfbDFbaV0gPSAwOwotCiAgIFJFQURfVUlOVDggKG5yLCBycGxfbW9kLT5yZWZfcGljX2xpc3RfbW9kaWZpY2F0aW9uX2ZsYWdfbDAsIDEpOwogCiAgIGlmIChycGxfbW9kLT5yZWZfcGljX2xpc3RfbW9kaWZpY2F0aW9uX2ZsYWdfbDApIHsKQEAgLTkzOCwxOSArODk1LDYgQEAKIAogICBSRUFEX1VFX01BWCAobnIsIHAtPmx1bWFfbG9nMl93ZWlnaHRfZGVub20sIDcpOwogCi0gIC8qIHNldCBkZWZhdWx0IHZhbHVlcyAqLwotICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChwLT5jaHJvbWFfd2VpZ2h0X2wwX2ZsYWcpOyBpKyspIHsKLSAgICBwLT5jaHJvbWFfd2VpZ2h0X2wwX2ZsYWdbaV0gPSAwOwotICAgIHAtPmx1bWFfb2Zmc2V0X2wwW2ldID0gMDsKLSAgfQotCi0gIGlmIChHU1RfSDI2NV9JU19CX1NMSUNFIChzbGljZSkpIHsKLSAgICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChwLT5sdW1hX3dlaWdodF9sMV9mbGFnKTsgaSsrKSB7Ci0gICAgICBwLT5jaHJvbWFfd2VpZ2h0X2wxX2ZsYWdbaV0gPSAwOwotICAgICAgcC0+bHVtYV9vZmZzZXRfbDFbaV0gPSAwOwotICAgIH0KLSAgfQotCiAgIGlmIChzcHMtPmNocm9tYV9mb3JtYXRfaWRjICE9IDApIHsKICAgICBSRUFEX1NFX0FMTE9XRUQgKG5yLCBwLT5kZWx0YV9jaHJvbWFfbG9nMl93ZWlnaHRfZGVub20sCiAgICAgICAgICgwIC0gcC0+bHVtYV9sb2cyX3dlaWdodF9kZW5vbSksICg3IC0gcC0+bHVtYV9sb2cyX3dlaWdodF9kZW5vbSkpOwpAQCAtMTAyMiwxMSArOTY2LDYgQEAKICAgfQogICBwZXItPnNwcyA9IHNwczsKIAotICAvKiBzZXQgZGVmYXVsdCB2YWx1ZXMgaWYgbm90IHByZXNlbnQgKi8KLSAgcGVyLT5pcmFwX2NwYl9wYXJhbXNfcHJlc2VudF9mbGFnID0gMDsKLSAgcGVyLT5jcGJfZGVsYXlfb2Zmc2V0ID0gMDsKLSAgcGVyLT5kcGJfZGVsYXlfb2Zmc2V0ID0gMDsKLQogICBpZiAoc3BzLT52dWlfcGFyYW1ldGVyc19wcmVzZW50X2ZsYWcpIHsKICAgICBHc3RIMjY1VlVJUGFyYW1zICp2dWkgPSAmc3BzLT52dWlfcGFyYW1zOwogICAgIEdzdEgyNjVIUkRQYXJhbXMgKmhyZCA9ICZ2dWktPmhyZF9wYXJhbXM7CkBAIC0xMDk2LDcgKzEwMzUsNiBAQAogICBwcm9maWxlX3RpZXJfbGV2ZWwgPSAmcGFyc2VyLT5sYXN0X3Nwcy0+cHJvZmlsZV90aWVyX2xldmVsOwogCiAgIC8qIHNldCBkZWZhdWx0IHZhbHVlcyAqLwotICB0aW0tPnBpY19zdHJ1Y3QgPSAwOwogICBpZiAoIXByb2ZpbGVfdGllcl9sZXZlbC0+cHJvZ3Jlc3NpdmVfc291cmNlX2ZsYWcKICAgICAgICYmIHByb2ZpbGVfdGllcl9sZXZlbC0+aW50ZXJsYWNlZF9zb3VyY2VfZmxhZykKICAgICB0aW0tPnNvdXJjZV9zY2FuX3R5cGUgPSAwOwpAQCAtMTIyMCw2ICsxMTU4LDggQEAKIHsKICAgZ2ludCBvZmYxOwogCisgIG1lbXNldCAobmFsdSwgMCwgc2l6ZW9mICgqbmFsdSkpOworCiAgIGlmIChzaXplIDwgb2Zmc2V0ICsgNCkgewogICAgIEdTVF9ERUJVRyAoIkNhbid0IHBhcnNlLCBidWZmZXIgaGFzIHRvbyBzbWFsbCBzaXplICUiIEdfR1NJWkVfRk9STUFUCiAgICAgICAgICIsIG9mZnNldCAldSIsIHNpemUsIG9mZnNldCk7CkBAIC0xMzM1LDYgKzEyNzUsOCBAQAogewogICBHc3RCaXRSZWFkZXIgYnI7CiAKKyAgbWVtc2V0IChuYWx1LCAwLCBzaXplb2YgKCpuYWx1KSk7CisKICAgaWYgKHNpemUgPCBvZmZzZXQgKyBuYWxfbGVuZ3RoX3NpemUpIHsKICAgICBHU1RfREVCVUcgKCJDYW4ndCBwYXJzZSwgYnVmZmVyIGhhcyB0b28gc21hbGwgc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVAogICAgICAgICAiLCBvZmZzZXQgJXUiLCBzaXplLCBvZmZzZXQpOwpAQCAtMTQ1MCw4ICsxMzkyLDggQEAKICAgbmFsX3JlYWRlcl9pbml0ICgmbnIsIG5hbHUtPmRhdGEgKyBuYWx1LT5vZmZzZXQgKyBuYWx1LT5oZWFkZXJfYnl0ZXMsCiAgICAgICBuYWx1LT5zaXplIC0gbmFsdS0+aGVhZGVyX2J5dGVzKTsKIAotICBtZW1zZXQgKCZ2cHMtPnByb2ZpbGVfdGllcl9sZXZlbCwgMCwgc2l6ZW9mICh2cHMtPnByb2ZpbGVfdGllcl9sZXZlbCkpOwotICBtZW1zZXQgKCZ2cHMtPmhyZF9wYXJhbXMsIDAsIHNpemVvZiAodnBzLT5ocmRfcGFyYW1zKSk7CisgIG1lbXNldCAodnBzLCAwLCBzaXplb2YgKCp2cHMpKTsKKwogICB2cHMtPmNwcm1zX3ByZXNlbnRfZmxhZyA9IDE7CiAKICAgUkVBRF9VSU5UOCAoJm5yLCB2cHMtPmlkLCA0KTsKQEAgLTE1OTQsMTcgKzE1MzYsNyBAQAogICBuYWxfcmVhZGVyX2luaXQgKCZuciwgbmFsdS0+ZGF0YSArIG5hbHUtPm9mZnNldCArIG5hbHUtPmhlYWRlcl9ieXRlcywKICAgICAgIG5hbHUtPnNpemUgLSBuYWx1LT5oZWFkZXJfYnl0ZXMpOwogCi0gIC8qIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgZmllbGRzIHRoYXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIGJpdHN0cmVhbQotICAgICBhbmQgaGF2ZSB2YWxpZCBkZWZhdWx0cyAqLwotICBtZW1zZXQgKCZzcHMtPnByb2ZpbGVfdGllcl9sZXZlbCwgMCwgc2l6ZW9mIChzcHMtPnByb2ZpbGVfdGllcl9sZXZlbCkpOwotICBtZW1zZXQgKHNwcy0+c2hvcnRfdGVybV9yZWZfcGljX3NldCwgMCwgc2l6ZW9mIChzcHMtPnNob3J0X3Rlcm1fcmVmX3BpY19zZXQpKTsKLSAgc3BzLT5zY2FsaW5nX2xpc3RfZGF0YV9wcmVzZW50X2ZsYWcgPSAwOwotICBzcHMtPnNlcGFyYXRlX2NvbG91cl9wbGFuZV9mbGFnID0gMDsKLSAgc3BzLT5jb25mX3dpbl9sZWZ0X29mZnNldCA9IDA7Ci0gIHNwcy0+Y29uZl93aW5fcmlnaHRfb2Zmc2V0ID0gMDsKLSAgc3BzLT5jb25mX3dpbl90b3Bfb2Zmc2V0ID0gMDsKLSAgc3BzLT5jb25mX3dpbl9ib3R0b21fb2Zmc2V0ID0gMDsKLSAgc3BzLT5wY21fbG9vcF9maWx0ZXJfZGlzYWJsZWRfZmxhZyA9IDA7CisgIG1lbXNldCAoc3BzLCAwLCBzaXplb2YgKCpzcHMpKTsKIAogICBSRUFEX1VJTlQ4ICgmbnIsIHZwc19pZCwgNCk7CiAgIHZwcyA9IGdzdF9oMjY1X3BhcnNlcl9nZXRfdnBzIChwYXJzZXIsIHZwc19pZCk7CkBAIC0xNzIyLDkgKzE2NTQsNyBAQAogICBSRUFEX1VJTlQ4ICgmbnIsIHNwcy0+c3BzX2V4dGVuc2lvbl9mbGFnLCAxKTsKIAogICAvKiBjYWxjdWxhdGUgQ2hyb21hQXJyYXlUeXBlICovCi0gIGlmIChzcHMtPnNlcGFyYXRlX2NvbG91cl9wbGFuZV9mbGFnKQotICAgIHNwcy0+Y2hyb21hX2FycmF5X3R5cGUgPSAwOwotICBlbHNlCisgIGlmICghc3BzLT5zZXBhcmF0ZV9jb2xvdXJfcGxhbmVfZmxhZykKICAgICBzcHMtPmNocm9tYV9hcnJheV90eXBlID0gc3BzLT5jaHJvbWFfZm9ybWF0X2lkYzsKIAogICAvKiBDYWxjdWxhdGUgIHdpZHRoIGFuZCBoZWlnaHQgKi8KQEAgLTE4MDQsNiArMTczNCw4IEBACiAgIG5hbF9yZWFkZXJfaW5pdCAoJm5yLCBuYWx1LT5kYXRhICsgbmFsdS0+b2Zmc2V0ICsgbmFsdS0+aGVhZGVyX2J5dGVzLAogICAgICAgbmFsdS0+c2l6ZSAtIG5hbHUtPmhlYWRlcl9ieXRlcyk7CiAKKyAgbWVtc2V0IChwcHMsIDAsIHNpemVvZiAoKnBwcykpOworCiAgIFJFQURfVUVfTUFYICgmbnIsIHBwcy0+aWQsIEdTVF9IMjY1X01BWF9QUFNfQ09VTlQgLSAxKTsKICAgUkVBRF9VRV9NQVggKCZuciwgc3BzX2lkLCBHU1RfSDI2NV9NQVhfU1BTX0NPVU5UIC0gMSk7CiAKQEAgLTE4MjYsMTUgKzE3NTgsOCBAQAogCiAgIC8qIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgZmllbGRzIHRoYXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIGJpdHN0cmVhbQogICAgICBhbmQgaGF2ZSB2YWxpZCBkZWZhdWx0cyAqLwotICBwcHMtPmRpZmZfY3VfcXBfZGVsdGFfZGVwdGggPSAwOwotICBwcHMtPm51bV90aWxlX2NvbHVtbnNfbWludXMxID0gMDsKLSAgcHBzLT5udW1fdGlsZV9yb3dzX21pbnVzMSA9IDA7CiAgIHBwcy0+dW5pZm9ybV9zcGFjaW5nX2ZsYWcgPSAxOwogICBwcHMtPmxvb3BfZmlsdGVyX2Fjcm9zc190aWxlc19lbmFibGVkX2ZsYWcgPSAxOwotICBwcHMtPmRlYmxvY2tpbmdfZmlsdGVyX292ZXJyaWRlX2VuYWJsZWRfZmxhZyA9IDA7Ci0gIHBwcy0+ZGVibG9ja2luZ19maWx0ZXJfZGlzYWJsZWRfZmxhZyA9IDA7Ci0gIHBwcy0+YmV0YV9vZmZzZXRfZGl2MiA9IDA7Ci0gIHBwcy0+dGNfb2Zmc2V0X2RpdjIgPSAwOwogCiAgIFJFQURfVUlOVDggKCZuciwgcHBzLT5kZXBlbmRlbnRfc2xpY2Vfc2VnbWVudHNfZW5hYmxlZF9mbGFnLCAxKTsKICAgUkVBRF9VSU5UOCAoJm5yLCBwcHMtPm91dHB1dF9mbGFnX3ByZXNlbnRfZmxhZywgMSk7CkBAIC0xOTkwLDYgKzE5MTUsOCBAQAogICBndWludDMyIFBpY1NpemVJbkN0YnNZOwogICBnaW50IE51bVBvY1RvdGFsQ3VyciA9IDA7CiAKKyAgbWVtc2V0IChzbGljZSwgMCwgc2l6ZW9mICgqc2xpY2UpKTsKKwogICBpZiAoIW5hbHUtPnNpemUpIHsKICAgICBHU1RfREVCVUcgKCJJbnZhbGlkIE5hbCBVbml0Iik7CiAgICAgcmV0dXJuIEdTVF9IMjY1X1BBUlNFUl9FUlJPUjsKQEAgLTIwMjYsMzIgKzE5NTMsMTMgQEAKICAgUGljU2l6ZUluQ3Ric1kgPSBwcHMtPlBpY1dpZHRoSW5DdGJzWSAqIHBwcy0+UGljSGVpZ2h0SW5DdGJzWTsKICAgLyogc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBmaWVsZHMgdGhhdCBtaWdodCBub3QgYmUgcHJlc2VudCBpbiB0aGUgYml0c3RyZWFtCiAgICAqIGFuZCBoYXZlIHZhbGlkIGRlZmF1bHRzICovCi0gIHNsaWNlLT5kZXBlbmRlbnRfc2xpY2Vfc2VnbWVudF9mbGFnID0gMDsKLSAgc2xpY2UtPnNlZ21lbnRfYWRkcmVzcyA9IDA7CiAgIHNsaWNlLT5waWNfb3V0cHV0X2ZsYWcgPSAxOwotICBzbGljZS0+cGljX29yZGVyX2NudF9sc2IgPSAwOwotICBzbGljZS0+c2hvcnRfdGVybV9yZWZfcGljX3NldF9pZHggPSAwOwotICBzbGljZS0+bnVtX2xvbmdfdGVybV9zcHMgPSAwOwotICBzbGljZS0+bnVtX2xvbmdfdGVybV9waWNzID0gMDsKLSAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKLSAgICBzbGljZS0+bHRfaWR4X3Nwc1tpXSA9IDA7Ci0gICAgc2xpY2UtPmRlbHRhX3BvY19tc2JfY3ljbGVfbHRbaV0gPSAwOwotICB9Ci0gIHNsaWNlLT50ZW1wb3JhbF9tdnBfZW5hYmxlZF9mbGFnID0gMDsKLSAgc2xpY2UtPnNhb19sdW1hX2ZsYWcgPSAwOwotICBzbGljZS0+c2FvX2Nocm9tYV9mbGFnID0gMDsKLSAgc2xpY2UtPmNhYmFjX2luaXRfZmxhZyA9IDA7CiAgIHNsaWNlLT5jb2xsb2NhdGVkX2Zyb21fbDBfZmxhZyA9IDE7Ci0gIHNsaWNlLT5jYl9xcF9vZmZzZXQgPSAwOwotICBzbGljZS0+Y3JfcXBfb2Zmc2V0ID0gMDsKLSAgc2xpY2UtPmRlYmxvY2tpbmdfZmlsdGVyX292ZXJyaWRlX2ZsYWcgPSAwOwotICBzbGljZS0+ZGVibG9ja2luZ19maWx0ZXJfZGlzYWJsZWRfZmxhZyA9IDA7CisgIHNsaWNlLT5kZWJsb2NraW5nX2ZpbHRlcl9kaXNhYmxlZF9mbGFnID0gcHBzLT5kZWJsb2NraW5nX2ZpbHRlcl9kaXNhYmxlZF9mbGFnOwogICBzbGljZS0+YmV0YV9vZmZzZXRfZGl2MiA9IHBwcy0+YmV0YV9vZmZzZXRfZGl2MjsKICAgc2xpY2UtPnRjX29mZnNldF9kaXYyID0gcHBzLT50Y19vZmZzZXRfZGl2MjsKICAgc2xpY2UtPmxvb3BfZmlsdGVyX2Fjcm9zc19zbGljZXNfZW5hYmxlZF9mbGFnID0KICAgICAgIHBwcy0+bG9vcF9maWx0ZXJfYWNyb3NzX3NsaWNlc19lbmFibGVkX2ZsYWc7Ci0gIHNsaWNlLT5udW1fZW50cnlfcG9pbnRfb2Zmc2V0cyA9IDA7Ci0gIHNsaWNlLT5lbnRyeV9wb2ludF9vZmZzZXRfbWludXMxID0gTlVMTDsKIAogICBpZiAoIXNsaWNlLT5maXJzdF9zbGljZV9zZWdtZW50X2luX3BpY19mbGFnKSB7CiAgICAgY29uc3QgZ3VpbnQgbiA9IGNlaWxfbG9nMiAoUGljU2l6ZUluQ3Ric1kpOwpAQCAtMjMwMyw3ICsyMjExLDggQEAKIAogICBHU1RfREVCVUcgKCJwYXJzaW5nIFwiU2VpIG1lc3NhZ2VcIiIpOwogCi0gIHNlaS0+cGF5bG9hZFR5cGUgPSAwOworICBtZW1zZXQgKHNlaSwgMCwgc2l6ZW9mICgqc2VpKSk7CisKICAgZG8gewogICAgIFJFQURfVUlOVDggKG5yLCBwYXlsb2FkX3R5cGVfYnl0ZSwgOCk7CiAgICAgc2VpLT5wYXlsb2FkVHlwZSArPSBwYXlsb2FkX3R5cGVfYnl0ZTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0bXBlZzRwYXJzZXIuYyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0bXBlZzRwYXJzZXIuYwppbmRleCBjZTE1NmM1Li5iMjNmYzg3IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdG1wZWc0cGFyc2VyLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RtcGVnNHBhcnNlci5jCkBAIC00ODEsOCArNDgxLDExIEBACiAgIHBhY2tldC0+dHlwZSA9IChHc3RNcGVnNFN0YXJ0Q29kZSkgKGRhdGFbb2ZmMSArIDNdKTsKIAogZmluZF9lbmQ6Ci0gIG9mZjIgPSBnc3RfYnl0ZV9yZWFkZXJfbWFza2VkX3NjYW5fdWludDMyICgmYnIsIDB4ZmZmZmZmMDAsIDB4MDAwMDAxMDAsCi0gICAgICBvZmYxICsgNCwgc2l6ZSAtIG9mZjEgLSA0KTsKKyAgaWYgKG9mZjEgPCBzaXplIC0gNCkKKyAgICBvZmYyID0gZ3N0X2J5dGVfcmVhZGVyX21hc2tlZF9zY2FuX3VpbnQzMiAoJmJyLCAweGZmZmZmZjAwLCAweDAwMDAwMTAwLAorICAgICAgICBvZmYxICsgNCwgc2l6ZSAtIG9mZjEgLSA0KTsKKyAgZWxzZQorICAgIG9mZjIgPSAtMTsKIAogICBpZiAob2ZmMiA9PSAtMSkgewogICAgIEdTVF9ERUJVRyAoIlBhY2tldCBzdGFydCAlZCwgTm8gZW5kIGZvdW5kIiwgb2ZmMSArIDQpOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZXIuYyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0bXBlZ3ZpZGVvcGFyc2VyLmMKaW5kZXggNjM4NDEwNS4uZGViYWZhMCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZXIuYworKysgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdG1wZWd2aWRlb3BhcnNlci5jCkBAIC00MDgsNyArNDA4LDggQEAKICAgfQogCiAgIC8qIHNraXAgcHJvZmlsZSBhbmQgbGV2ZWwgZXNjYXBlIGJpdCAqLwotICBnc3RfYml0X3JlYWRlcl9za2lwX3VuY2hlY2tlZCAoJmJyLCAxKTsKKyAgc2VxZXh0LT5wcm9maWxlX2xldmVsX2VzY2FwZV9iaXQgPQorICAgICAgZ3N0X2JpdF9yZWFkZXJfZ2V0X2JpdHNfdWludDhfdW5jaGVja2VkICgmYnIsIDEpOwogCiAgIHNlcWV4dC0+cHJvZmlsZSA9IGdzdF9iaXRfcmVhZGVyX2dldF9iaXRzX3VpbnQ4X3VuY2hlY2tlZCAoJmJyLCAzKTsKICAgc2VxZXh0LT5sZXZlbCA9IGdzdF9iaXRfcmVhZGVyX2dldF9iaXRzX3VpbnQ4X3VuY2hlY2tlZCAoJmJyLCA0KTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0bXBlZ3ZpZGVvcGFyc2VyLmggYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdG1wZWd2aWRlb3BhcnNlci5oCmluZGV4IDM1ZjdjNmYuLjEyOThlZDcgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0bXBlZ3ZpZGVvcGFyc2VyLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZXIuaApAQCAtMjQ5LDYgKzI0OSw4IEBACiAgKiBvdGhlcndpc2UKICAqIEBmcHNfbl9leHQ6IEZyYW1lcmF0ZSBub21pbmF0b3IgY29kZQogICogQGZwc19kX2V4dDogRnJhbWVyYXRlIGRlbm9taW5hdG9yIGNvZGUKKyAqIEBwcm9maWxlX2xldmVsX2VzY2FwZV9iaXQ6IEVzY2FwZSBiaXQuIElmIHNldCwgdGhlIG1lYW5pbmcgb2YgdGhlCisgKiAgICBAcHJvZmlsZSBhbmQgQGxldmVsIGZpZWxkcyBpcyBkaWZmZXJlbnQuCiAgKgogICogVGhlIE1wZWcyIFZpZGVvIFNlcXVlbmNlIEV4dGVuc2lvbiBzdHJ1Y3R1cmUuCiAgKiovCkBAIC0yNjksNiArMjcxLDggQEAKICAgZ3VpbnQ4IGxvd19kZWxheTsKICAgZ3VpbnQ4IGZwc19uX2V4dCwgZnBzX2RfZXh0OwogCisgIC8qIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gKi8KKyAgZ3VpbnQ4IHByb2ZpbGVfbGV2ZWxfZXNjYXBlX2JpdDsKIH07CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3R2cDlwYXJzZXIuYyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0dnA5cGFyc2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUxOGRlZQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0dnA5cGFyc2VyLmMKQEAgLTAsMCArMSw4MTkgQEAKKy8qIGdzdHZwOXBhcnNlci5jCisgKgorICogIENvcHlyaWdodCAoQykgMjAxMy0yMDE0IEludGVsIENvcnBvcmF0aW9uCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1IEludGVsIENvcnBvcmF0aW9uCisgKiAgICBBdXRob3I6IFh1R3Vhbmd4aW48R3Vhbmd4aW4uWHVAaW50ZWwuY29tPgorICogICAgQXV0aG9yOiBTcmVlcmVuaiBCYWxhY2hhbmRyYW48c3JlZXJlbmouYmFsYWNoYW5kcmFuQGludGVsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworLyoqCisgKiBTRUNUSU9OOmdzdHZwOXBhcnNlcgorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBDb252ZW5pZW5jZSBsaWJyYXJ5IGZvciBwYXJzaW5nIHZwOSB2aWRlbyBiaXRzdHJlYW0uCisgKgorICogRm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgc3RydWN0dXJlcywgeW91IGNhbiByZWZlciB0byB0aGUKKyAqIHNwZWNpZmljYXRpb25zOgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGJpdHJlYWRlci5oPgorI2luY2x1ZGUgInZwOXV0aWxzLmgiCisjaW5jbHVkZSAiZ3N0dnA5cGFyc2VyLmgiCisKKyNkZWZpbmUgTUlOX1RJTEVfV0lEVEhfQjY0IDQKKyNkZWZpbmUgTUFYX1RJTEVfV0lEVEhfQjY0IDY0CisKKy8qIG9yZGVyIG9mIHNiNjQsIHdoZXJlIHNiNjQgPSA2NHg2NCAqLworI2RlZmluZSBBTElHTl9TQjY0KHcpICgodyArIDYzKSA+PiA2KQorCitHU1RfREVCVUdfQ0FURUdPUlkgKGdzdF92cDlfcGFyc2VyX2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF92cDlfcGFyc2VyX2RlYnVnCisKK3N0YXRpYyBnYm9vbGVhbiBpbml0aWFsaXplZCA9IEZBTFNFOworI2RlZmluZSBJTklUSUFMSVpFX0RFQlVHX0NBVEVHT1JZIFwKKyAgaWYgKCFpbml0aWFsaXplZCkgeyBcCisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF92cDlfcGFyc2VyX2RlYnVnLCAiY29kZWNwYXJzZXJzX3ZwOSIsIDAsIFwKKyAgICAgICAgInZwOSBwYXJzZXIgbGlicmFyeSIpOyBcCisgICAgaW5pdGlhbGl6ZWQgPSBUUlVFOyBcCisgIH0KKworI2RlZmluZSBnc3RfdnA5X3JlYWRfYml0KGJyKSBnc3RfYml0X3JlYWRlcl9nZXRfYml0c191aW50OF91bmNoZWNrZWQoYnIsIDEpCisjZGVmaW5lIGdzdF92cDlfcmVhZF9iaXRzKGJyLCBiaXRzKSBnc3RfYml0X3JlYWRlcl9nZXRfYml0c191aW50MzJfdW5jaGVja2VkKGJyLCBiaXRzKQorCisjZGVmaW5lIEdTVF9WUDlfUEFSU0VSX0dFVF9QUklWQVRFKHBhcnNlcikgICgoR3N0VnA5UGFyc2VyUHJpdmF0ZSAqKShwYXJzZXItPnByaXYpKQorCit0eXBlZGVmIHN0cnVjdCBfUmVmZXJlbmNlU2l6ZQoreworICBndWludDMyIHdpZHRoOworICBndWludDMyIGhlaWdodDsKK30gUmVmZXJlbmNlU2l6ZTsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgLyogZm9yIGxvb3AgZmlsdGVycyAqLworICBnaW50OCByZWZfZGVsdGFzW0dTVF9WUDlfTUFYX1JFRl9MRl9ERUxUQVNdOworICBnaW50OCBtb2RlX2RlbHRhc1tHU1RfVlA5X01BWF9NT0RFX0xGX0RFTFRBU107CisKKyAgZ3VpbnQ4IHNlZ21lbnRhdGlvbl9hYnNfZGVsdGE7CisgIEdzdFZwOVNlZ21lbnRhdGlvbkluZm9EYXRhIHNlZ21lbnRhdGlvbltHU1RfVlA5X01BWF9TRUdNRU5UU107CisKKyAgUmVmZXJlbmNlU2l6ZSByZWZlcmVuY2VbR1NUX1ZQOV9SRUZfRlJBTUVTXTsKK30gR3N0VnA5UGFyc2VyUHJpdmF0ZTsKKworc3RhdGljIGdpbnQzMgorZ3N0X3ZwOV9yZWFkX3NpZ25lZF9iaXRzIChHc3RCaXRSZWFkZXIgKiBiciwgaW50IGJpdHMpCit7CisgIGNvbnN0IGdpbnQzMiB2YWx1ZSA9IGdzdF92cDlfcmVhZF9iaXRzIChiciwgYml0cyk7CisgIHJldHVybiBnc3RfdnA5X3JlYWRfYml0IChicikgPyAtdmFsdWUgOiB2YWx1ZTsKK30KKworc3RhdGljIGdib29sZWFuCit2ZXJpZnlfZnJhbWVfbWFya2VyIChHc3RCaXRSZWFkZXIgKiBicikKK3sKKyAgZ3VpbnQ4IGZyYW1lX21hcmtlciA9IGdzdF92cDlfcmVhZF9iaXRzIChiciwgMik7CisgIGlmIChmcmFtZV9tYXJrZXIgIT0gR1NUX1ZQOV9GUkFNRV9NQVJLRVIpIHsKKyAgICBHU1RfRVJST1IgKCJJbnZhbGlkIFZQOSBGcmFtZSBNYXJrZXIgISIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCit2ZXJpZnlfc3luY19jb2RlIChHc3RCaXRSZWFkZXIgKiBjb25zdCBicikKK3sKKyAgcmV0dXJuIChnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDI0KSA9PSBHU1RfVlA5X1NZTkNfQ09ERSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorcGFyc2VfYml0ZGVwdGhfY29sb3JzcGFjZV9zYW1wbGluZyAoR3N0Qml0UmVhZGVyICogY29uc3QgYnIsCisgICAgR3N0VnA5RnJhbWVIZHIgKiBmcmFtZV9oZHIpCit7CisgIGlmIChmcmFtZV9oZHItPnByb2ZpbGUgPiBHU1RfVlA5X1BST0ZJTEVfMSkKKyAgICBmcmFtZV9oZHItPmJpdF9kZXB0aCA9CisgICAgICAgIGdzdF92cDlfcmVhZF9iaXQgKGJyKSA/IEdTVF9WUDlfQklUX0RFUFRIXzEyIDogR1NUX1ZQOV9CSVRfREVQVEhfMTA7CisgIGVsc2UKKyAgICBmcmFtZV9oZHItPmJpdF9kZXB0aCA9IEdTVF9WUDlfQklUX0RFUFRIXzg7CisKKyAgZnJhbWVfaGRyLT5jb2xvcl9zcGFjZSA9IGdzdF92cDlfcmVhZF9iaXRzIChiciwgMyk7CisgIGlmIChmcmFtZV9oZHItPmNvbG9yX3NwYWNlICE9IEdTVF9WUDlfQ1NfU1JHQikgeworICAgIGZyYW1lX2hkci0+Y29sb3JfcmFuZ2UgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisKKyAgICBpZiAoZnJhbWVfaGRyLT5wcm9maWxlID09IEdTVF9WUDlfUFJPRklMRV8xCisgICAgICAgIHx8IGZyYW1lX2hkci0+cHJvZmlsZSA9PSBHU1RfVlA5X1BST0ZJTEVfMykgeworCisgICAgICBmcmFtZV9oZHItPnN1YnNhbXBsaW5nX3ggPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgICAgICBmcmFtZV9oZHItPnN1YnNhbXBsaW5nX3kgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisKKyAgICAgIGlmIChmcmFtZV9oZHItPnN1YnNhbXBsaW5nX3ggPT0gMSAmJiBmcmFtZV9oZHItPnN1YnNhbXBsaW5nX3kgPT0gMSkgeworICAgICAgICBHU1RfRVJST1IKKyAgICAgICAgICAgICgiNDoyOjAgc3Vic2FtcGxpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9maWxlXzEgb3IgcHJvZmlsZV8zIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICB9CisKKyAgICAgIGlmIChnc3RfdnA5X3JlYWRfYml0IChicikpIHsKKyAgICAgICAgR1NUX0VSUk9SICgiUmVzZXJ2ZWQgYml0IHNldCEiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgZnJhbWVfaGRyLT5zdWJzYW1wbGluZ195ID0gZnJhbWVfaGRyLT5zdWJzYW1wbGluZ194ID0gMTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgZnJhbWVfaGRyLT5jb2xvcl9yYW5nZSA9IEdTVF9WUDlfQ1JfRlVMTDsKKworICAgIGlmIChmcmFtZV9oZHItPnByb2ZpbGUgPT0gR1NUX1ZQOV9QUk9GSUxFXzEKKyAgICAgICAgfHwgZnJhbWVfaGRyLT5wcm9maWxlID09IEdTVF9WUDlfUFJPRklMRV8zKSB7CisgICAgICBpZiAoZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpKSB7CisgICAgICAgIEdTVF9FUlJPUiAoIlJlc2VydmVkIGJpdCBzZXQhIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIEdTVF9FUlJPUgorICAgICAgICAgICgiNDo0OjQgc3Vic2FtcGxpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9maWxlXzAgYW5kIHByb2ZpbGVfMiIpOworICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgIH0KKyAgcmV0dXJuIFRSVUU7CisKK2Vycm9yOgorICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBndWludAorcGFyc2VfcHJvZmlsZSAoR3N0Qml0UmVhZGVyICogYnIpCit7CisgIGd1aW50OCBwcm9maWxlID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICBwcm9maWxlIHw9IGdzdF92cDlfcmVhZF9iaXQgKGJyKSA8PCAxOworICBpZiAocHJvZmlsZSA+IDIpCisgICAgcHJvZmlsZSArPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgIHJldHVybiBwcm9maWxlOworfQorCitzdGF0aWMgdm9pZAorcGFyc2VfZnJhbWVfc2l6ZSAoR3N0Qml0UmVhZGVyICogYnIsIGd1aW50MzIgKiB3aWR0aCwgZ3VpbnQzMiAqIGhlaWdodCkKK3sKKyAgY29uc3QgZ3VpbnQzMiB3ID0gZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCAxNikgKyAxOworICBjb25zdCBndWludDMyIGggPSBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDE2KSArIDE7CisgICp3aWR0aCA9IHc7CisgICpoZWlnaHQgPSBoOworfQorCitzdGF0aWMgdm9pZAorcGFyc2VfZGlzcGxheV9mcmFtZV9zaXplIChHc3RCaXRSZWFkZXIgKiBiciwgR3N0VnA5RnJhbWVIZHIgKiBmcmFtZV9oZHIpCit7CisgIGZyYW1lX2hkci0+ZGlzcGxheV9zaXplX2VuYWJsZWQgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgIGlmIChmcmFtZV9oZHItPmRpc3BsYXlfc2l6ZV9lbmFibGVkKQorICAgIHBhcnNlX2ZyYW1lX3NpemUgKGJyLCAmZnJhbWVfaGRyLT5kaXNwbGF5X3dpZHRoLAorICAgICAgICAmZnJhbWVfaGRyLT5kaXNwbGF5X2hlaWdodCk7Cit9CisKK3N0YXRpYyB2b2lkCitwYXJzZV9mcmFtZV9zaXplX2Zyb21fcmVmcyAoY29uc3QgR3N0VnA5UGFyc2VyICogcGFyc2VyLAorICAgIEdzdFZwOUZyYW1lSGRyICogZnJhbWVfaGRyLCBHc3RCaXRSZWFkZXIgKiBicikKK3sKKyAgZ2Jvb2xlYW4gZm91bmQgPSBGQUxTRTsKKyAgaW50IGk7CisgIEdzdFZwOVBhcnNlclByaXZhdGUgKnByaXYgPSBHU1RfVlA5X1BBUlNFUl9HRVRfUFJJVkFURSAocGFyc2VyKTsKKworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZQOV9SRUZTX1BFUl9GUkFNRTsgaSsrKSB7CisgICAgZm91bmQgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisKKyAgICBpZiAoZm91bmQpIHsKKyAgICAgIGd1aW50OCBpZHggPSBmcmFtZV9oZHItPnJlZl9mcmFtZV9pbmRpY2VzW2ldOworICAgICAgZnJhbWVfaGRyLT53aWR0aCA9IHByaXYtPnJlZmVyZW5jZVtpZHhdLndpZHRoOworICAgICAgZnJhbWVfaGRyLT5oZWlnaHQgPSBwcml2LT5yZWZlcmVuY2VbaWR4XS5oZWlnaHQ7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgaWYgKCFmb3VuZCkKKyAgICBwYXJzZV9mcmFtZV9zaXplIChiciwgJmZyYW1lX2hkci0+d2lkdGgsICZmcmFtZV9oZHItPmhlaWdodCk7Cit9CisKK3N0YXRpYyBHc3RWcDlJbnRlcnBvbGF0aW9uRmlsdGVyCitwYXJzZV9pbnRlcnBfZmlsdGVyIChHc3RCaXRSZWFkZXIgKiBicikKK3sKKyAgc3RhdGljIGNvbnN0IEdzdFZwOUludGVycG9sYXRpb25GaWx0ZXIgZmlsdGVyX21hcFtdID0geworICAgIEdTVF9WUDlfSU5URVJQT0xBVElPTl9GSUxURVJfRUlHSFRUQVBfU01PT1RILAorICAgIEdTVF9WUDlfSU5URVJQT0xBVElPTl9GSUxURVJfRUlHSFRUQVAsCisgICAgR1NUX1ZQOV9JTlRFUlBPTEFUSU9OX0ZJTFRFUl9FSUdIVFRBUF9TSEFSUCwKKyAgICBHU1RfVlA5X0lOVEVSUE9MQVRJT05fRklMVEVSX0JJTElORUFSCisgIH07CisKKyAgcmV0dXJuIGdzdF92cDlfcmVhZF9iaXQgKGJyKSA/IEdTVF9WUDlfSU5URVJQT0xBVElPTl9GSUxURVJfU1dJVENIQUJMRSA6CisgICAgICBmaWx0ZXJfbWFwW2dzdF92cDlfcmVhZF9iaXRzIChiciwgMildOworfQorCitzdGF0aWMgdm9pZAorcGFyc2VfbG9vcGZpbHRlciAoR3N0VnA5TG9vcEZpbHRlciAqIGxmLCBHc3RCaXRSZWFkZXIgKiBicikKK3sKKyAgbGYtPmZpbHRlcl9sZXZlbCA9IGdzdF92cDlfcmVhZF9iaXRzIChiciwgNik7CisgIGxmLT5zaGFycG5lc3NfbGV2ZWwgPSBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDMpOworCisgIGxmLT5tb2RlX3JlZl9kZWx0YV91cGRhdGUgPSAwOworCisgIGxmLT5tb2RlX3JlZl9kZWx0YV9lbmFibGVkID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICBpZiAobGYtPm1vZGVfcmVmX2RlbHRhX2VuYWJsZWQpIHsKKyAgICBsZi0+bW9kZV9yZWZfZGVsdGFfdXBkYXRlID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICAgIGlmIChsZi0+bW9kZV9yZWZfZGVsdGFfdXBkYXRlKSB7CisgICAgICBpbnQgaTsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBHU1RfVlA5X01BWF9SRUZfTEZfREVMVEFTOyBpKyspIHsKKyAgICAgICAgbGYtPnVwZGF0ZV9yZWZfZGVsdGFzW2ldID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICAgICAgICBpZiAobGYtPnVwZGF0ZV9yZWZfZGVsdGFzW2ldKQorICAgICAgICAgIGxmLT5yZWZfZGVsdGFzW2ldID0gZ3N0X3ZwOV9yZWFkX3NpZ25lZF9iaXRzIChiciwgNik7CisgICAgICB9CisKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBHU1RfVlA5X01BWF9NT0RFX0xGX0RFTFRBUzsgaSsrKSB7CisgICAgICAgIGxmLT51cGRhdGVfbW9kZV9kZWx0YXNbaV0gPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgICAgICAgIGlmIChsZi0+dXBkYXRlX21vZGVfZGVsdGFzW2ldKQorICAgICAgICAgIGxmLT5tb2RlX2RlbHRhc1tpXSA9IGdzdF92cDlfcmVhZF9zaWduZWRfYml0cyAoYnIsIDYpOworICAgICAgfQorICAgIH0KKyAgfQorfQorCitzdGF0aWMgZ2ludDgKK3BhcnNlX2RlbHRhX3EgKEdzdEJpdFJlYWRlciAqIGJyKQoreworICByZXR1cm4gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpID8gZ3N0X3ZwOV9yZWFkX3NpZ25lZF9iaXRzIChiciwgNCkgOiAwOworfQorCitzdGF0aWMgdm9pZAorcGFyc2VfcXVhbnRpemF0aW9uIChHc3RWcDlRdWFudEluZGljZXMgKiBxdWFudF9pbmRpY2VzLCBHc3RCaXRSZWFkZXIgKiBicikKK3sKKyAgcXVhbnRfaW5kaWNlcy0+eV9hY19xaSA9IGdzdF92cDlfcmVhZF9iaXRzIChiciwgUUlOREVYX0JJVFMpOworICBxdWFudF9pbmRpY2VzLT55X2RjX2RlbHRhID0gcGFyc2VfZGVsdGFfcSAoYnIpOworICBxdWFudF9pbmRpY2VzLT51dl9kY19kZWx0YSA9IHBhcnNlX2RlbHRhX3EgKGJyKTsKKyAgcXVhbnRfaW5kaWNlcy0+dXZfYWNfZGVsdGEgPSBwYXJzZV9kZWx0YV9xIChicik7Cit9CisKK3N0YXRpYyB2b2lkCitwYXJzZV9zZWdtZW50YXRpb24gKEdzdFZwOVNlZ21lbnRhdGlvbkluZm8gKiBzZWcsIEdzdEJpdFJlYWRlciAqIGJyKQoreworICBpbnQgaTsKKworICBzZWctPnVwZGF0ZV9tYXAgPSBGQUxTRTsKKyAgc2VnLT51cGRhdGVfZGF0YSA9IEZBTFNFOworCisgIHNlZy0+ZW5hYmxlZCA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgaWYgKCFzZWctPmVuYWJsZWQpCisgICAgcmV0dXJuOworCisgIC8qIFNlZ21lbnRhdGlvbiBtYXAgdXBkYXRlICovCisgIHNlZy0+dXBkYXRlX21hcCA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgaWYgKHNlZy0+dXBkYXRlX21hcCkgeworICAgIGZvciAoaSA9IDA7IGkgPCBHU1RfVlA5X1NFR19UUkVFX1BST0JTOyBpKyspIHsKKyAgICAgIHNlZy0+dXBkYXRlX3RyZWVfcHJvYnNbaV0gPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgICAgICBzZWctPnRyZWVfcHJvYnNbaV0gPSBzZWctPnVwZGF0ZV90cmVlX3Byb2JzW2ldID8KKyAgICAgICAgICBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDgpIDogR1NUX1ZQOV9NQVhfUFJPQjsKKyAgICB9CisKKyAgICBzZWctPnRlbXBvcmFsX3VwZGF0ZSA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgICBpZiAoc2VnLT50ZW1wb3JhbF91cGRhdGUpIHsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBHU1RfVlA5X1BSRURJQ1RJT05fUFJPQlM7IGkrKykgeworICAgICAgICBzZWctPnVwZGF0ZV9wcmVkX3Byb2JzW2ldID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICAgICAgICBzZWctPnByZWRfcHJvYnNbaV0gPSBzZWctPnVwZGF0ZV9wcmVkX3Byb2JzW2ldID8KKyAgICAgICAgICAgIGdzdF92cDlfcmVhZF9iaXRzIChiciwgOCkgOiBHU1RfVlA5X01BWF9QUk9COworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZQOV9QUkVESUNUSU9OX1BST0JTOyBpKyspCisgICAgICAgIHNlZy0+cHJlZF9wcm9ic1tpXSA9IEdTVF9WUDlfTUFYX1BST0I7CisgICAgfQorICB9CisKKyAgLyogU2VnbWVudGF0aW9uIGRhdGEgdXBkYXRlICovCisgIHNlZy0+dXBkYXRlX2RhdGEgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisKKyAgaWYgKHNlZy0+dXBkYXRlX2RhdGEpIHsKKyAgICAvKiBjbGVhciBhbGwgZmVhdHVyZXMgKi8KKyAgICBtZW1zZXQgKHNlZy0+ZGF0YSwgMCwgc2l6ZW9mIChzZWctPmRhdGEpKTsKKworICAgIHNlZy0+YWJzX2RlbHRhID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworCisgICAgZm9yIChpID0gMDsgaSA8IEdTVF9WUDlfTUFYX1NFR01FTlRTOyBpKyspIHsKKyAgICAgIEdzdFZwOVNlZ21lbnRhdGlvbkluZm9EYXRhICpzZWdfZGF0YSA9IHNlZy0+ZGF0YSArIGk7CisgICAgICBndWludDggZGF0YTsKKworICAgICAgLyogU0VHX0xWTF9BTFRfUSAqLworICAgICAgc2VnX2RhdGEtPmFsdGVybmF0ZV9xdWFudGl6ZXJfZW5hYmxlZCA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgICAgIGlmIChzZWdfZGF0YS0+YWx0ZXJuYXRlX3F1YW50aXplcl9lbmFibGVkKSB7CisgICAgICAgIGRhdGEgPSBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDgpOworICAgICAgICBzZWdfZGF0YS0+YWx0ZXJuYXRlX3F1YW50aXplciA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKSA/IC1kYXRhIDogZGF0YTsKKyAgICAgIH0KKworICAgICAgLyogU0VHX0xWTF9BTFRfTEYgKi8KKyAgICAgIHNlZ19kYXRhLT5hbHRlcm5hdGVfbG9vcF9maWx0ZXJfZW5hYmxlZCA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgICAgIGlmIChzZWdfZGF0YS0+YWx0ZXJuYXRlX2xvb3BfZmlsdGVyX2VuYWJsZWQpIHsKKyAgICAgICAgZGF0YSA9IGdzdF92cDlfcmVhZF9iaXRzIChiciwgNik7CisgICAgICAgIHNlZ19kYXRhLT5hbHRlcm5hdGVfbG9vcF9maWx0ZXIgPSBnc3RfdnA5X3JlYWRfYml0IChicikgPyAtZGF0YSA6IGRhdGE7CisgICAgICB9CisKKyAgICAgIC8qIFNFR19MVkxfUkVGX0ZSQU1FICovCisgICAgICBzZWdfZGF0YS0+cmVmZXJlbmNlX2ZyYW1lX2VuYWJsZWQgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgICAgICBpZiAoc2VnX2RhdGEtPnJlZmVyZW5jZV9mcmFtZV9lbmFibGVkKSB7CisgICAgICAgIHNlZ19kYXRhLT5yZWZlcmVuY2VfZnJhbWUgPSBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDIpOworICAgICAgfQorCisgICAgICBzZWdfZGF0YS0+cmVmZXJlbmNlX3NraXAgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgICAgfQorICB9Cit9CisKK3N0YXRpYyBndWludDMyCitnZXRfbWF4X2xiX3RpbGVfY29scyAoZ3VpbnQzMiBzYl9jb2xzKQoreworICBnaW50IG1heF9sb2cyID0gMTsKKyAgd2hpbGUgKChzYl9jb2xzID4+IG1heF9sb2cyKSA+PSBNSU5fVElMRV9XSURUSF9CNjQpCisgICAgKyttYXhfbG9nMjsKKyAgcmV0dXJuIG1heF9sb2cyIC0gMTsKK30KKworc3RhdGljIGd1aW50MzIKK2dldF9taW5fbGJfdGlsZV9jb2xzIChndWludDMyIHNiX2NvbHMpCit7CisgIGdpbnQgbWluX2xvZzIgPSAwOworICB3aGlsZSAoKE1BWF9USUxFX1dJRFRIX0I2NCA8PCBtaW5fbG9nMikgPCBzYl9jb2xzKQorICAgICsrbWluX2xvZzI7CisgIHJldHVybiBtaW5fbG9nMjsKK30KKworc3RhdGljIGdib29sZWFuCitwYXJzZV90aWxlX2luZm8gKEdzdFZwOUZyYW1lSGRyICogZnJhbWVfaGRyLCBHc3RCaXRSZWFkZXIgKiBicikKK3sKKyAgZ3VpbnQzMiBtYXhfb25lczsKKyAgY29uc3QgZ3VpbnQzMiBzYl9jb2xzID0gQUxJR05fU0I2NCAoZnJhbWVfaGRyLT53aWR0aCk7CisgIGd1aW50MzIgbWluX2xiX3RpbGVfY29scyA9IGdldF9taW5fbGJfdGlsZV9jb2xzIChzYl9jb2xzKTsKKyAgZ3VpbnQzMiBtYXhfbGJfdGlsZV9jb2xzID0gZ2V0X21heF9sYl90aWxlX2NvbHMgKHNiX2NvbHMpOworCisgIGdfYXNzZXJ0IChtaW5fbGJfdGlsZV9jb2xzIDw9IG1heF9sYl90aWxlX2NvbHMpOworICBtYXhfb25lcyA9IG1heF9sYl90aWxlX2NvbHMgLSBtaW5fbGJfdGlsZV9jb2xzOworCisgIC8qIGNvbHVtbnMgKi8KKyAgZnJhbWVfaGRyLT5sb2cyX3RpbGVfY29sdW1ucyA9IG1pbl9sYl90aWxlX2NvbHM7CisgIHdoaWxlIChtYXhfb25lcy0tICYmIGdzdF92cDlfcmVhZF9iaXQgKGJyKSkKKyAgICBmcmFtZV9oZHItPmxvZzJfdGlsZV9jb2x1bW5zKys7CisKKyAgaWYgKGZyYW1lX2hkci0+bG9nMl90aWxlX2NvbHVtbnMgPiA2KSB7CisgICAgR1NUX0VSUk9SICgiSW52YWxpZCBudW1iZXIgb2YgdGlsZSBjb2x1bW5zLi4hIik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgLyogcm93ICovCisgIGZyYW1lX2hkci0+bG9nMl90aWxlX3Jvd3MgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgIGlmIChmcmFtZV9oZHItPmxvZzJfdGlsZV9yb3dzKQorICAgIGZyYW1lX2hkci0+bG9nMl90aWxlX3Jvd3MgKz0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorbG9vcF9maWx0ZXJfdXBkYXRlIChHc3RWcDlQYXJzZXIgKiBwYXJzZXIsIGNvbnN0IEdzdFZwOUxvb3BGaWx0ZXIgKiBsZikKK3sKKyAgR3N0VnA5UGFyc2VyUHJpdmF0ZSAqcHJpdiA9IEdTVF9WUDlfUEFSU0VSX0dFVF9QUklWQVRFIChwYXJzZXIpOworICBpbnQgaTsKKworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZQOV9NQVhfUkVGX0xGX0RFTFRBUzsgaSsrKSB7CisgICAgaWYgKGxmLT51cGRhdGVfcmVmX2RlbHRhc1tpXSkKKyAgICAgIHByaXYtPnJlZl9kZWx0YXNbaV0gPSBsZi0+cmVmX2RlbHRhc1tpXTsKKyAgfQorCisgIGZvciAoaSA9IDA7IGkgPCBHU1RfVlA5X01BWF9NT0RFX0xGX0RFTFRBUzsgaSsrKSB7CisgICAgaWYgKGxmLT51cGRhdGVfbW9kZV9kZWx0YXNbaV0pCisgICAgICBwcml2LT5tb2RlX2RlbHRhc1tpXSA9IGxmLT5tb2RlX2RlbHRhc1tpXTsKKyAgfQorfQorCitzdGF0aWMgZ3VpbnQ4CitzZWdfZ2V0X2Jhc2VfcWluZGV4IChjb25zdCBHc3RWcDlQYXJzZXIgKiBwYXJzZXIsCisgICAgY29uc3QgR3N0VnA5RnJhbWVIZHIgKiBmcmFtZV9oZHIsIGludCBzZWdpZCkKK3sKKyAgaW50IHNlZ19iYXNlID0gZnJhbWVfaGRyLT5xdWFudF9pbmRpY2VzLnlfYWNfcWk7CisgIEdzdFZwOVBhcnNlclByaXZhdGUgKnByaXYgPSBHU1RfVlA5X1BBUlNFUl9HRVRfUFJJVkFURSAocGFyc2VyKTsKKyAgY29uc3QgR3N0VnA5U2VnbWVudGF0aW9uSW5mb0RhdGEgKnNlZyA9IHByaXYtPnNlZ21lbnRhdGlvbiArIHNlZ2lkOworICAvKiBERUJVRygiaWQgPSAlZCwgc2VnX2Jhc2UgPSAlZCwgc2VnIGVuYWJsZSA9ICVkLCBhbHQgZWFuYmxlID0gJWQsIGFicyA9ICVkLCBhbHQ9ICVkXG4iLHNlZ2lkLAorICAgICBzZWdfYmFzZSwgZnJhbWVfaGRyLT5zZWdtZW50YXRpb24uZW5hYmxlZCwgc2VnLT5hbHRlcm5hdGVfcXVhbnRpemVyX2VuYWJsZWQsIHByaXYtPnNlZ21lbnRhdGlvbl9hYnNfZGVsdGEsICBzZWctPmFsdGVybmF0ZV9xdWFudGl6ZXIpOworICAgKi8KKyAgaWYgKGZyYW1lX2hkci0+c2VnbWVudGF0aW9uLmVuYWJsZWQgJiYgc2VnLT5hbHRlcm5hdGVfcXVhbnRpemVyX2VuYWJsZWQpIHsKKyAgICBpZiAocHJpdi0+c2VnbWVudGF0aW9uX2Fic19kZWx0YSkKKyAgICAgIHNlZ19iYXNlID0gc2VnLT5hbHRlcm5hdGVfcXVhbnRpemVyOworICAgIGVsc2UKKyAgICAgIHNlZ19iYXNlICs9IHNlZy0+YWx0ZXJuYXRlX3F1YW50aXplcjsKKyAgfQorICByZXR1cm4gQ0xBTVAgKHNlZ19iYXNlLCAwLCBNQVhRKTsKK30KKworc3RhdGljIGd1aW50OAorc2VnX2dldF9maWx0ZXJfbGV2ZWwgKGNvbnN0IEdzdFZwOVBhcnNlciAqIHBhcnNlciwKKyAgICBjb25zdCBHc3RWcDlGcmFtZUhkciAqIGZyYW1lX2hkciwgaW50IHNlZ2lkKQoreworICBpbnQgc2VnX2ZpbHRlciA9IGZyYW1lX2hkci0+bG9vcGZpbHRlci5maWx0ZXJfbGV2ZWw7CisgIEdzdFZwOVBhcnNlclByaXZhdGUgKnByaXYgPSBHU1RfVlA5X1BBUlNFUl9HRVRfUFJJVkFURSAocGFyc2VyKTsKKyAgY29uc3QgR3N0VnA5U2VnbWVudGF0aW9uSW5mb0RhdGEgKnNlZyA9IHByaXYtPnNlZ21lbnRhdGlvbiArIHNlZ2lkOworCisgIGlmIChmcmFtZV9oZHItPnNlZ21lbnRhdGlvbi5lbmFibGVkICYmIHNlZy0+YWx0ZXJuYXRlX2xvb3BfZmlsdGVyX2VuYWJsZWQpIHsKKyAgICBpZiAocHJpdi0+c2VnbWVudGF0aW9uX2Fic19kZWx0YSkKKyAgICAgIHNlZ19maWx0ZXIgPSBzZWctPmFsdGVybmF0ZV9sb29wX2ZpbHRlcjsKKyAgICBlbHNlCisgICAgICBzZWdfZmlsdGVyICs9IHNlZy0+YWx0ZXJuYXRlX2xvb3BfZmlsdGVyOworICB9CisgIHJldHVybiBDTEFNUCAoc2VnX2ZpbHRlciwgMCwgR1NUX1ZQOV9NQVhfTE9PUF9GSUxURVIpOworfQorCisvKnNhdmUgc2VnbWVudGF0aW9uIGluZm8gZnJvbSBmcmFtZSBoZWFkZXIgdG8gcGFyc2VyKi8KK3N0YXRpYyB2b2lkCitzZWdtZW50YXRpb25fc2F2ZSAoR3N0VnA5UGFyc2VyICogcGFyc2VyLCBjb25zdCBHc3RWcDlGcmFtZUhkciAqIGZyYW1lX2hkcikKK3sKKyAgY29uc3QgR3N0VnA5U2VnbWVudGF0aW9uSW5mbyAqaW5mbyA9ICZmcmFtZV9oZHItPnNlZ21lbnRhdGlvbjsKKyAgaWYgKCFpbmZvLT5lbmFibGVkKQorICAgIHJldHVybjsKKworICBpZiAoaW5mby0+dXBkYXRlX21hcCkgeworICAgIGdfYXNzZXJ0IChHX05fRUxFTUVOVFMgKHBhcnNlci0+bWJfc2VnbWVudF90cmVlX3Byb2JzKSA9PQorICAgICAgICBHX05fRUxFTUVOVFMgKGluZm8tPnRyZWVfcHJvYnMpKTsKKyAgICBnX2Fzc2VydCAoR19OX0VMRU1FTlRTIChwYXJzZXItPnNlZ21lbnRfcHJlZF9wcm9icykgPT0KKyAgICAgICAgR19OX0VMRU1FTlRTIChpbmZvLT5wcmVkX3Byb2JzKSk7CisgICAgbWVtY3B5IChwYXJzZXItPm1iX3NlZ21lbnRfdHJlZV9wcm9icywgaW5mby0+dHJlZV9wcm9icywKKyAgICAgICAgc2l6ZW9mIChpbmZvLT50cmVlX3Byb2JzKSk7CisgICAgbWVtY3B5IChwYXJzZXItPnNlZ21lbnRfcHJlZF9wcm9icywgaW5mby0+cHJlZF9wcm9icywKKyAgICAgICAgc2l6ZW9mIChpbmZvLT5wcmVkX3Byb2JzKSk7CisgIH0KKworICBpZiAoaW5mby0+dXBkYXRlX2RhdGEpIHsKKyAgICBHc3RWcDlQYXJzZXJQcml2YXRlICpwcml2ID0gR1NUX1ZQOV9QQVJTRVJfR0VUX1BSSVZBVEUgKHBhcnNlcik7CisgICAgcHJpdi0+c2VnbWVudGF0aW9uX2Fic19kZWx0YSA9IGluZm8tPmFic19kZWx0YTsKKyAgICBnX2Fzc2VydCAoR19OX0VMRU1FTlRTIChwcml2LT5zZWdtZW50YXRpb24pID09IEdfTl9FTEVNRU5UUyAoaW5mby0+ZGF0YSkpOworICAgIG1lbWNweSAocHJpdi0+c2VnbWVudGF0aW9uLCBpbmZvLT5kYXRhLCBzaXplb2YgKGluZm8tPmRhdGEpKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorc2VnbWVudGF0aW9uX3VwZGF0ZSAoR3N0VnA5UGFyc2VyICogcGFyc2VyLCBjb25zdCBHc3RWcDlGcmFtZUhkciAqIGZyYW1lX2hkcikKK3sKKyAgaW50IGkgPSAwOworICBjb25zdCBHc3RWcDlQYXJzZXJQcml2YXRlICpwcml2ID0gR1NUX1ZQOV9QQVJTRVJfR0VUX1BSSVZBVEUgKHBhcnNlcik7CisgIGNvbnN0IEdzdFZwOUxvb3BGaWx0ZXIgKmxmID0gJmZyYW1lX2hkci0+bG9vcGZpbHRlcjsKKyAgY29uc3QgR3N0VnA5UXVhbnRJbmRpY2VzICpxdWFudF9pbmRpY2VzID0gJmZyYW1lX2hkci0+cXVhbnRfaW5kaWNlczsKKyAgaW50IGRlZmF1bHRfZmlsdGVyID0gbGYtPmZpbHRlcl9sZXZlbDsKKyAgY29uc3QgaW50IHNjYWxlID0gMSA8PCAoZGVmYXVsdF9maWx0ZXIgPj4gNSk7CisKKyAgc2VnbWVudGF0aW9uX3NhdmUgKHBhcnNlciwgZnJhbWVfaGRyKTsKKworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZQOV9NQVhfU0VHTUVOVFM7IGkrKykgeworICAgIGd1aW50OCBxID0gc2VnX2dldF9iYXNlX3FpbmRleCAocGFyc2VyLCBmcmFtZV9oZHIsIGkpOworCisgICAgR3N0VnA5U2VnbWVudGF0aW9uICpzZWcgPSBwYXJzZXItPnNlZ21lbnRhdGlvbiArIGk7CisgICAgY29uc3QgR3N0VnA5U2VnbWVudGF0aW9uSW5mb0RhdGEgKmluZm8gPSBwcml2LT5zZWdtZW50YXRpb24gKyBpOworCisgICAgc2VnLT5sdW1hX2RjX3F1YW50X3NjYWxlID0KKyAgICAgICAgZ3N0X3ZwOV9kY19xdWFudCAocSwgcXVhbnRfaW5kaWNlcy0+eV9kY19kZWx0YSwgZnJhbWVfaGRyLT5iaXRfZGVwdGgpOworICAgIHNlZy0+bHVtYV9hY19xdWFudF9zY2FsZSA9IGdzdF92cDlfYWNfcXVhbnQgKHEsIDAsIGZyYW1lX2hkci0+Yml0X2RlcHRoKTsKKyAgICBzZWctPmNocm9tYV9kY19xdWFudF9zY2FsZSA9CisgICAgICAgIGdzdF92cDlfZGNfcXVhbnQgKHEsIHF1YW50X2luZGljZXMtPnV2X2RjX2RlbHRhLCBmcmFtZV9oZHItPmJpdF9kZXB0aCk7CisgICAgc2VnLT5jaHJvbWFfYWNfcXVhbnRfc2NhbGUgPQorICAgICAgICBnc3RfdnA5X2FjX3F1YW50IChxLCBxdWFudF9pbmRpY2VzLT51dl9hY19kZWx0YSwgZnJhbWVfaGRyLT5iaXRfZGVwdGgpOworCisgICAgaWYgKGxmLT5maWx0ZXJfbGV2ZWwpIHsKKyAgICAgIGd1aW50OCBmaWx0ZXIgPSBzZWdfZ2V0X2ZpbHRlcl9sZXZlbCAocGFyc2VyLCBmcmFtZV9oZHIsIGkpOworCisgICAgICBpZiAoIWxmLT5tb2RlX3JlZl9kZWx0YV9lbmFibGVkKSB7CisgICAgICAgIG1lbXNldCAoc2VnLT5maWx0ZXJfbGV2ZWwsIGZpbHRlciwgc2l6ZW9mIChzZWctPmZpbHRlcl9sZXZlbCkpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IHJlZiwgbW9kZTsKKyAgICAgICAgY29uc3QgaW50IGludHJhX2ZpbHRlciA9CisgICAgICAgICAgICBmaWx0ZXIgKyBwcml2LT5yZWZfZGVsdGFzW0dTVF9WUDlfUkVGX0ZSQU1FX0lOVFJBXSAqIHNjYWxlOworICAgICAgICBzZWctPmZpbHRlcl9sZXZlbFtHU1RfVlA5X1JFRl9GUkFNRV9JTlRSQV1bMF0gPQorICAgICAgICAgICAgQ0xBTVAgKGludHJhX2ZpbHRlciwgMCwgR1NUX1ZQOV9NQVhfTE9PUF9GSUxURVIpOworICAgICAgICBmb3IgKHJlZiA9IEdTVF9WUDlfUkVGX0ZSQU1FX0xBU1Q7IHJlZiA8IEdTVF9WUDlfUkVGX0ZSQU1FX01BWDsgKytyZWYpIHsKKyAgICAgICAgICBmb3IgKG1vZGUgPSAwOyBtb2RlIDwgR1NUX1ZQOV9NQVhfTU9ERV9MRl9ERUxUQVM7ICsrbW9kZSkgeworICAgICAgICAgICAgY29uc3QgaW50IGludGVyX2ZpbHRlciA9IGZpbHRlciArIHByaXYtPnJlZl9kZWx0YXNbcmVmXSAqIHNjYWxlCisgICAgICAgICAgICAgICAgKyBwcml2LT5tb2RlX2RlbHRhc1ttb2RlXSAqIHNjYWxlOworICAgICAgICAgICAgc2VnLT5maWx0ZXJfbGV2ZWxbcmVmXVttb2RlXSA9CisgICAgICAgICAgICAgICAgQ0xBTVAgKGludGVyX2ZpbHRlciwgMCwgR1NUX1ZQOV9NQVhfTE9PUF9GSUxURVIpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBzZWctPnJlZmVyZW5jZV9mcmFtZV9lbmFibGVkID0gaW5mby0+cmVmZXJlbmNlX2ZyYW1lX2VuYWJsZWQ7OworICAgIHNlZy0+cmVmZXJlbmNlX2ZyYW1lID0gaW5mby0+cmVmZXJlbmNlX2ZyYW1lOworICAgIHNlZy0+cmVmZXJlbmNlX3NraXAgPSBpbmZvLT5yZWZlcmVuY2Vfc2tpcDsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorcmVmZXJlbmNlX3VwZGF0ZSAoR3N0VnA5UGFyc2VyICogcGFyc2VyLCBjb25zdCBHc3RWcDlGcmFtZUhkciAqIGNvbnN0IGZyYW1lX2hkcikKK3sKKyAgZ3VpbnQ4IGZsYWcgPSAxOworICBndWludDggcmVmcmVzaF9mcmFtZV9mbGFnczsKKyAgaW50IGk7CisgIEdzdFZwOVBhcnNlclByaXZhdGUgKnByaXYgPSBHU1RfVlA5X1BBUlNFUl9HRVRfUFJJVkFURSAocGFyc2VyKTsKKyAgUmVmZXJlbmNlU2l6ZSAqcmVmZXJlbmNlID0gcHJpdi0+cmVmZXJlbmNlOworICBpZiAoZnJhbWVfaGRyLT5mcmFtZV90eXBlID09IEdTVF9WUDlfS0VZX0ZSQU1FKSB7CisgICAgcmVmcmVzaF9mcmFtZV9mbGFncyA9IDB4ZmY7CisgIH0gZWxzZSB7CisgICAgcmVmcmVzaF9mcmFtZV9mbGFncyA9IGZyYW1lX2hkci0+cmVmcmVzaF9mcmFtZV9mbGFnczsKKyAgfQorICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZQOV9SRUZfRlJBTUVTOyBpKyspIHsKKyAgICBpZiAocmVmcmVzaF9mcmFtZV9mbGFncyAmIGZsYWcpIHsKKyAgICAgIHJlZmVyZW5jZVtpXS53aWR0aCA9IGZyYW1lX2hkci0+d2lkdGg7CisgICAgICByZWZlcmVuY2VbaV0uaGVpZ2h0ID0gZnJhbWVfaGRyLT5oZWlnaHQ7CisgICAgfQorICAgIGZsYWcgPDw9IDE7CisgIH0KK30KKworc3RhdGljIGlubGluZSBpbnQKK2ZyYW1lX2lzX2ludHJhX29ubHkgKGNvbnN0IEdzdFZwOUZyYW1lSGRyICogZnJhbWVfaGRyKQoreworICByZXR1cm4gZnJhbWVfaGRyLT5mcmFtZV90eXBlID09IEdTVF9WUDlfS0VZX0ZSQU1FIHx8IGZyYW1lX2hkci0+aW50cmFfb25seTsKK30KKworc3RhdGljIHZvaWQKK3NldF9kZWZhdWx0X2xmX2RlbHRhcyAoR3N0VnA5UGFyc2VyICogcGFyc2VyKQoreworICBHc3RWcDlQYXJzZXJQcml2YXRlICpwcml2ID0gR1NUX1ZQOV9QQVJTRVJfR0VUX1BSSVZBVEUgKHBhcnNlcik7CisgIHByaXYtPnJlZl9kZWx0YXNbR1NUX1ZQOV9SRUZfRlJBTUVfSU5UUkFdID0gMTsKKyAgcHJpdi0+cmVmX2RlbHRhc1tHU1RfVlA5X1JFRl9GUkFNRV9MQVNUXSA9IDA7CisgIHByaXYtPnJlZl9kZWx0YXNbR1NUX1ZQOV9SRUZfRlJBTUVfR09MREVOXSA9IC0xOworICBwcml2LT5yZWZfZGVsdGFzW0dTVF9WUDlfUkVGX0ZSQU1FX0FMVFJFRl0gPSAtMTsKKworICBwcml2LT5tb2RlX2RlbHRhc1swXSA9IDA7CisgIHByaXYtPm1vZGVfZGVsdGFzWzFdID0gMDsKK30KKworc3RhdGljIHZvaWQKK3NldF9kZWZhdWx0X3NlZ21lbnRhdGlvbl9pbmZvIChHc3RWcDlQYXJzZXIgKiBwYXJzZXIpCit7CisgIEdzdFZwOVBhcnNlclByaXZhdGUgKnByaXYgPSBHU1RfVlA5X1BBUlNFUl9HRVRfUFJJVkFURSAocGFyc2VyKTsKKworICBtZW1zZXQgKHByaXYtPnNlZ21lbnRhdGlvbiwgMCwgc2l6ZW9mIChwcml2LT5zZWdtZW50YXRpb24pKTsKKworICBwcml2LT5zZWdtZW50YXRpb25fYWJzX2RlbHRhID0gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkCitzZXR1cF9wYXN0X2luZGVwZW5kZW5jZSAoR3N0VnA5UGFyc2VyICogcGFyc2VyLAorICAgIEdzdFZwOUZyYW1lSGRyICogY29uc3QgZnJhbWVfaGRyKQoreworICBzZXRfZGVmYXVsdF9sZl9kZWx0YXMgKHBhcnNlcik7CisgIHNldF9kZWZhdWx0X3NlZ21lbnRhdGlvbl9pbmZvIChwYXJzZXIpOworCisgIG1lbXNldCAoZnJhbWVfaGRyLT5yZWZfZnJhbWVfc2lnbl9iaWFzLCAwLAorICAgICAgc2l6ZW9mIChmcmFtZV9oZHItPnJlZl9mcmFtZV9zaWduX2JpYXMpKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92cDlfcGFyc2VyX2luaXQgKEdzdFZwOVBhcnNlciAqIHBhcnNlcikKK3sKKyAgR3N0VnA5UGFyc2VyUHJpdmF0ZSAqcHJpdiA9IHBhcnNlci0+cHJpdjsKKworICBtZW1zZXQgKHBhcnNlciwgMCwgc2l6ZW9mIChHc3RWcDlQYXJzZXIpKTsKKyAgbWVtc2V0IChwcml2LCAwLCBzaXplb2YgKEdzdFZwOVBhcnNlclByaXZhdGUpKTsKKworICBwYXJzZXItPnByaXYgPSBwcml2OworfQorCitzdGF0aWMgR3N0VnA5UGFyc2VyUmVzdWx0Citnc3RfdnA5X3BhcnNlcl91cGRhdGUgKEdzdFZwOVBhcnNlciAqIHBhcnNlciwgR3N0VnA5RnJhbWVIZHIgKiBjb25zdCBmcmFtZV9oZHIpCit7CisgIGlmIChmcmFtZV9oZHItPmZyYW1lX3R5cGUgPT0gR1NUX1ZQOV9LRVlfRlJBTUUpCisgICAgZ3N0X3ZwOV9wYXJzZXJfaW5pdCAocGFyc2VyKTsKKworICBpZiAoZnJhbWVfaXNfaW50cmFfb25seSAoZnJhbWVfaGRyKSB8fCBmcmFtZV9oZHItPmVycm9yX3Jlc2lsaWVudF9tb2RlKQorICAgIHNldHVwX3Bhc3RfaW5kZXBlbmRlbmNlIChwYXJzZXIsIGZyYW1lX2hkcik7CisKKyAgbG9vcF9maWx0ZXJfdXBkYXRlIChwYXJzZXIsICZmcmFtZV9oZHItPmxvb3BmaWx0ZXIpOworICBzZWdtZW50YXRpb25fdXBkYXRlIChwYXJzZXIsIGZyYW1lX2hkcik7CisgIHJlZmVyZW5jZV91cGRhdGUgKHBhcnNlciwgZnJhbWVfaGRyKTsKKworICByZXR1cm4gR1NUX1ZQOV9QQVJTRVJfT0s7Cit9CisKKworLyoqKioqKioqIEFQSSAqKioqKioqKioqKioqLworCisvKioKKyAqIGdzdF92cDlfcGFyc2VyX25ldzoKKyAqCisgKiBDcmVhdGVzIGEgbmV3ICNHc3RWcDlQYXJzZXIuIEl0IHNob3VsZCBiZSBmcmVlZCB3aXRoCisgKiBnc3RfdnA5X3BhcnNlcl9mcmVlKCkgYWZ0ZXIgdXNlLgorICoKKyAqIFJldHVybnM6IGEgbmV3ICNHc3RWcDlQYXJzZXIKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK0dzdFZwOVBhcnNlciAqCitnc3RfdnA5X3BhcnNlcl9uZXcgKHZvaWQpCit7CisgIEdzdFZwOVBhcnNlciAqcGFyc2VyOworICBHc3RWcDlQYXJzZXJQcml2YXRlICpwcml2OworCisgIElOSVRJQUxJWkVfREVCVUdfQ0FURUdPUlk7CisgIEdTVF9ERUJVRyAoIkNyZWF0ZSBWUDkgUGFyc2VyIik7CisKKyAgcGFyc2VyID0gZ19zbGljZV9uZXcgKEdzdFZwOVBhcnNlcik7CisgIGlmICghcGFyc2VyKQorICAgIHJldHVybiBOVUxMOworCisgIHByaXYgPSBnX3NsaWNlX25ldyAoR3N0VnA5UGFyc2VyUHJpdmF0ZSk7CisgIGlmICghcHJpdikKKyAgICByZXR1cm4gTlVMTDsKKworICBwYXJzZXItPnByaXYgPSBwcml2OworICBnc3RfdnA5X3BhcnNlcl9pbml0IChwYXJzZXIpOworCisgIHJldHVybiBwYXJzZXI7Cit9CisKKy8qKgorICogZ3N0X3ZwOV9wYXJzZXJfZnJlZToKKyAqIEBwYXJzZXI6IHRoZSAjR3N0VnA5UGFyc2VyIHRvIGZyZWUKKyAqCisgKiBGcmVlcyBAcGFyc2VyLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X3ZwOV9wYXJzZXJfZnJlZSAoR3N0VnA5UGFyc2VyICogcGFyc2VyKQoreworICBpZiAocGFyc2VyKSB7CisgICAgaWYgKHBhcnNlci0+cHJpdikgeworICAgICAgZ19zbGljZV9mcmVlIChHc3RWcDlQYXJzZXJQcml2YXRlLCBwYXJzZXItPnByaXYpOworICAgICAgcGFyc2VyLT5wcml2ID0gTlVMTDsKKyAgICB9CisgICAgZ19zbGljZV9mcmVlIChHc3RWcDlQYXJzZXIsIHBhcnNlcik7CisgIH0KK30KKworLyoqCisgKiBnc3RfdnA5X3BhcnNlcl9wYXJzZV9mcmFtZV9oZWFkZXI6CisgKiBAcGFyc2VyOiBUaGUgI0dzdFZwOVBhcnNlcgorICogQGZyYW1lX2hkcjogVGhlICNHc3RWcDlGcmFtZUhkciB0byBmaWxsCisgKiBAZGF0YTogVGhlIGRhdGEgdG8gcGFyc2UKKyAqIEBzaXplOiBUaGUgc2l6ZSBvZiB0aGUgQGRhdGEgdG8gcGFyc2UKKyAqCisgKiBQYXJzZXMgdGhlIFZQOSBiaXRzdHJlYW0gY29udGFpbmVkIGluIEBkYXRhLCBhbmQgZmlsbHMgaW4gQGZyYW1lX2hkcgorICogd2l0aCB0aGUgaW5mb3JtYXRpb24uIFRoZSBAc2l6ZSBhcmd1bWVudCByZXByZXNlbnQgdGhlIHdob2xlIGZyYW1lIHNpemUuCisgKgorICogUmV0dXJuczogYSAjR3N0VnA5UGFyc2VyUmVzdWx0CisgKgorICogU2luY2U6IDEuOAorICovCitHc3RWcDlQYXJzZXJSZXN1bHQKK2dzdF92cDlfcGFyc2VyX3BhcnNlX2ZyYW1lX2hlYWRlciAoR3N0VnA5UGFyc2VyICogcGFyc2VyLAorICAgIEdzdFZwOUZyYW1lSGRyICogZnJhbWVfaGRyLCBjb25zdCBndWludDggKiBkYXRhLCBnc2l6ZSBzaXplKQoreworICBHc3RCaXRSZWFkZXIgYml0X3JlYWRlcjsKKyAgR3N0Qml0UmVhZGVyICpiciA9ICZiaXRfcmVhZGVyOworCisgIGdzdF9iaXRfcmVhZGVyX2luaXQgKGJyLCBkYXRhLCBzaXplKTsKKyAgbWVtc2V0IChmcmFtZV9oZHIsIDAsIHNpemVvZiAoKmZyYW1lX2hkcikpOworCisgIC8qIFBhcnNpbmcgVW5jb21wcmVzc2VkIERhdGEgQ2h1bmsgKi8KKworICBpZiAoIXZlcmlmeV9mcmFtZV9tYXJrZXIgKGJyKSkKKyAgICBnb3RvIGVycm9yOworCisgIGZyYW1lX2hkci0+cHJvZmlsZSA9IHBhcnNlX3Byb2ZpbGUgKGJyKTsKKyAgaWYgKGZyYW1lX2hkci0+cHJvZmlsZSA+IEdTVF9WUDlfUFJPRklMRV9VTkRFRklORUQpIHsKKyAgICBHU1RfRVJST1IgKCJTdHJlYW0gaGFzIHVuZGVmaW5lZCBWUDkgIHByb2ZpbGUgISIpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBmcmFtZV9oZHItPnNob3dfZXhpc3RpbmdfZnJhbWUgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgIGlmIChmcmFtZV9oZHItPnNob3dfZXhpc3RpbmdfZnJhbWUpIHsKKyAgICBmcmFtZV9oZHItPmZyYW1lX3RvX3Nob3cgPSBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIEdTVF9WUDlfUkVGX0ZSQU1FU19MT0cyKTsKKyAgICByZXR1cm4gR1NUX1ZQOV9QQVJTRVJfT0s7CisgIH0KKworICBmcmFtZV9oZHItPmZyYW1lX3R5cGUgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgIGZyYW1lX2hkci0+c2hvd19mcmFtZSA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgZnJhbWVfaGRyLT5lcnJvcl9yZXNpbGllbnRfbW9kZSA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKworICBpZiAoZnJhbWVfaGRyLT5mcmFtZV90eXBlID09IEdTVF9WUDlfS0VZX0ZSQU1FKSB7CisKKyAgICBpZiAoIXZlcmlmeV9zeW5jX2NvZGUgKGJyKSkgeworICAgICAgR1NUX0VSUk9SICgiSW52YWxpZCBWUDkgS2V5LWZyYW1lIHN5bmMgY29kZSAhIik7CisgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICghcGFyc2VfYml0ZGVwdGhfY29sb3JzcGFjZV9zYW1wbGluZyAoYnIsIGZyYW1lX2hkcikpIHsKKyAgICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBwYXJzZSBjb2xvcl9zcGFjZS9iaXRfZGVwdGggaW5mbyAhIik7CisgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHBhcnNlX2ZyYW1lX3NpemUgKGJyLCAmZnJhbWVfaGRyLT53aWR0aCwgJmZyYW1lX2hkci0+aGVpZ2h0KTsKKworICAgIHBhcnNlX2Rpc3BsYXlfZnJhbWVfc2l6ZSAoYnIsIGZyYW1lX2hkcik7CisKKyAgfSBlbHNlIHsKKyAgICBmcmFtZV9oZHItPmludHJhX29ubHkgPSBmcmFtZV9oZHItPnNob3dfZnJhbWUgPyAwIDogZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICAgIGZyYW1lX2hkci0+cmVzZXRfZnJhbWVfY29udGV4dCA9IGZyYW1lX2hkci0+ZXJyb3JfcmVzaWxpZW50X21vZGUgPworICAgICAgICAwIDogZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCAyKTsKKworICAgIGlmIChmcmFtZV9oZHItPmludHJhX29ubHkpIHsKKworICAgICAgaWYgKCF2ZXJpZnlfc3luY19jb2RlIChicikpIHsKKyAgICAgICAgR1NUX0VSUk9SICgiSW52YWxpZCBWUDkgc3luYyBjb2RlIGluIGludHJhLW9ubHkgZnJhbWUgISIpOworICAgICAgICBnb3RvIGVycm9yOworICAgICAgfQorCisgICAgICBpZiAoZnJhbWVfaGRyLT5wcm9maWxlID4gR1NUX1ZQOV9QUk9GSUxFXzApIHsKKyAgICAgICAgaWYgKCFwYXJzZV9iaXRkZXB0aF9jb2xvcnNwYWNlX3NhbXBsaW5nIChiciwgZnJhbWVfaGRyKSkgeworICAgICAgICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBwYXJzZSBjb2xvcl9zcGFjZS9iaXRfZGVwdGggaW5mbyAhIik7CisgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgZnJhbWVfaGRyLT5jb2xvcl9zcGFjZSA9IEdTVF9WUDlfQ1NfQlRfNjAxOworICAgICAgICBmcmFtZV9oZHItPmNvbG9yX3JhbmdlID0gR1NUX1ZQOV9DUl9MSU1JVEVEOworICAgICAgICBmcmFtZV9oZHItPnN1YnNhbXBsaW5nX3kgPSBmcmFtZV9oZHItPnN1YnNhbXBsaW5nX3ggPSAxOworICAgICAgICBmcmFtZV9oZHItPmJpdF9kZXB0aCA9IEdTVF9WUDlfQklUX0RFUFRIXzg7CisgICAgICB9CisKKyAgICAgIGZyYW1lX2hkci0+cmVmcmVzaF9mcmFtZV9mbGFncyA9CisgICAgICAgICAgZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCBHU1RfVlA5X1JFRl9GUkFNRVMpOworICAgICAgcGFyc2VfZnJhbWVfc2l6ZSAoYnIsICZmcmFtZV9oZHItPndpZHRoLCAmZnJhbWVfaGRyLT5oZWlnaHQpOworICAgICAgcGFyc2VfZGlzcGxheV9mcmFtZV9zaXplIChiciwgZnJhbWVfaGRyKTsKKworICAgIH0gZWxzZSB7CisgICAgICBpbnQgaTsKKyAgICAgIGZyYW1lX2hkci0+cmVmcmVzaF9mcmFtZV9mbGFncyA9CisgICAgICAgICAgZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCBHU1RfVlA5X1JFRl9GUkFNRVMpOworCisgICAgICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZQOV9SRUZTX1BFUl9GUkFNRTsgaSsrKSB7CisgICAgICAgIGZyYW1lX2hkci0+cmVmX2ZyYW1lX2luZGljZXNbaV0gPQorICAgICAgICAgICAgZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCBHU1RfVlA5X1JFRl9GUkFNRVNfTE9HMik7CisgICAgICAgIGZyYW1lX2hkci0+cmVmX2ZyYW1lX3NpZ25fYmlhc1tpXSA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgICAgIH0KKworICAgICAgcGFyc2VfZnJhbWVfc2l6ZV9mcm9tX3JlZnMgKHBhcnNlciwgZnJhbWVfaGRyLCBicik7CisgICAgICBwYXJzZV9kaXNwbGF5X2ZyYW1lX3NpemUgKGJyLCBmcmFtZV9oZHIpOworCisgICAgICBmcmFtZV9oZHItPmFsbG93X2hpZ2hfcHJlY2lzaW9uX212ID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICAgICAgZnJhbWVfaGRyLT5tY29tcF9maWx0ZXJfdHlwZSA9IHBhcnNlX2ludGVycF9maWx0ZXIgKGJyKTsKKworICAgICAgLyogQXNzaW5nIGRlZmFsdXQgdmFsdWVzICovCisgICAgICBmcmFtZV9oZHItPmNvbG9yX3NwYWNlID0gR1NUX1ZQOV9DU19CVF82MDE7CisgICAgICBmcmFtZV9oZHItPmNvbG9yX3JhbmdlID0gR1NUX1ZQOV9DUl9MSU1JVEVEOworICAgICAgZnJhbWVfaGRyLT5zdWJzYW1wbGluZ195ID0gZnJhbWVfaGRyLT5zdWJzYW1wbGluZ194ID0gMTsKKyAgICAgIGZyYW1lX2hkci0+Yml0X2RlcHRoID0gR1NUX1ZQOV9CSVRfREVQVEhfODsKKyAgICB9CisgIH0KKworICBmcmFtZV9oZHItPnJlZnJlc2hfZnJhbWVfY29udGV4dCA9CisgICAgICBmcmFtZV9oZHItPmVycm9yX3Jlc2lsaWVudF9tb2RlID8gMCA6IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgZnJhbWVfaGRyLT5mcmFtZV9wYXJhbGxlbF9kZWNvZGluZ19tb2RlID0KKyAgICAgIGZyYW1lX2hkci0+ZXJyb3JfcmVzaWxpZW50X21vZGUgPyAxIDogZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICBmcmFtZV9oZHItPmZyYW1lX2NvbnRleHRfaWR4ID0KKyAgICAgIGdzdF92cDlfcmVhZF9iaXRzIChiciwgR1NUX1ZQOV9GUkFNRV9DT05URVhUU19MT0cyKTsKKworICAvKiBsb29wZmlsdGVyIGhlYWRlciAgKi8KKyAgcGFyc2VfbG9vcGZpbHRlciAoJmZyYW1lX2hkci0+bG9vcGZpbHRlciwgYnIpOworCisgIC8qIHF1YW50aXphdGlvbiBoZWFkZXIgKi8KKyAgcGFyc2VfcXVhbnRpemF0aW9uICgmZnJhbWVfaGRyLT5xdWFudF9pbmRpY2VzLCBicik7CisgIC8qIHNldCBsb3NzbGVzc19mbGFnICovCisgIGZyYW1lX2hkci0+bG9zc2xlc3NfZmxhZyA9IGZyYW1lX2hkci0+cXVhbnRfaW5kaWNlcy55X2FjX3FpID09IDAgJiYKKyAgICAgIGZyYW1lX2hkci0+cXVhbnRfaW5kaWNlcy55X2RjX2RlbHRhID09IDAgJiYKKyAgICAgIGZyYW1lX2hkci0+cXVhbnRfaW5kaWNlcy51dl9kY19kZWx0YSA9PSAwCisgICAgICAmJiBmcmFtZV9oZHItPnF1YW50X2luZGljZXMudXZfYWNfZGVsdGEgPT0gMDsKKworICAvKiBzZWdtZW50YXRpb24gaGVhZGVyICovCisgIHBhcnNlX3NlZ21lbnRhdGlvbiAoJmZyYW1lX2hkci0+c2VnbWVudGF0aW9uLCBicik7CisKKyAgLyogdGlsZSBoZWFkZXIgKi8KKyAgaWYgKCFwYXJzZV90aWxlX2luZm8gKGZyYW1lX2hkciwgYnIpKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIHBhcnNlIHRpbGUgaW5mby4uLiEiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgLyogc2l6ZSBvZiB0aGUgcmVzdCBvZiB0aGUgaGVhZGVyICovCisgIGZyYW1lX2hkci0+Zmlyc3RfcGFydGl0aW9uX3NpemUgPSBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDE2KTsKKyAgaWYgKCFmcmFtZV9oZHItPmZpcnN0X3BhcnRpdGlvbl9zaXplKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIHBhcnNlIHRoZSBmaXJzdCBwYXJ0aXRpb24gc2l6ZS4uLiEiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgZnJhbWVfaGRyLT5mcmFtZV9oZWFkZXJfbGVuZ3RoX2luX2J5dGVzID0KKyAgICAgIChnc3RfYml0X3JlYWRlcl9nZXRfcG9zIChicikgKyA3KSAvIDg7CisKKyAgcmV0dXJuIGdzdF92cDlfcGFyc2VyX3VwZGF0ZSAocGFyc2VyLCBmcmFtZV9oZHIpOworCitlcnJvcjoKKyAgcmV0dXJuIEdTVF9WUDlfUEFSU0VSX0VSUk9SOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3R2cDlwYXJzZXIuaCBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0dnA5cGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ0NWU1NAotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0dnA5cGFyc2VyLmgKQEAgLTAsMCArMSw0OTMgQEAKKy8qCisgKiBnc3R2cDlwYXJzZXIuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgorICogIENvcHlyaWdodCAoQykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgorICogICAgQXV0aG9yOiBYdUd1YW5neGluPEd1YW5neGluLlh1QGludGVsLmNvbT4KKyAqICAgIEF1dGhvcjogU3JlZXJlbmogQmFsYWNoYW5kcmFuPHNyZWVyZW5qLmJhbGFjaGFuZHJhbkBpbnRlbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBHU1RfVlA5X1BBUlNFUl9ICisjZGVmaW5lIEdTVF9WUDlfUEFSU0VSX0gKKworI2lmbmRlZiBHU1RfVVNFX1VOU1RBQkxFX0FQSQorI3dhcm5pbmcgIlRoZSBWUDkgcGFyc2luZyBsaWJyYXJ5IGlzIHVuc3RhYmxlIEFQSSBhbmQgbWF5IGNoYW5nZSBpbiBmdXR1cmUuIgorI3dhcm5pbmcgIllvdSBjYW4gZGVmaW5lIEdTVF9VU0VfVU5TVEFCTEVfQVBJIHRvIGF2b2lkIHRoaXMgd2FybmluZy4iCisjZW5kaWYKKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9WUDlfRlJBTUVfTUFSS0VSIDB4MDIKKyNkZWZpbmUgR1NUX1ZQOV9TWU5DX0NPREUgMHg0OTgzNDIKKworI2RlZmluZSBHU1RfVlA5X01BWF9MT09QX0ZJTFRFUiAgICA2MworI2RlZmluZSBHU1RfVlA5X01BWF9QUk9CICAgICAgICAgICAyNTUKKworI2RlZmluZSBHU1RfVlA5X1JFRlNfUEVSX0ZSQU1FICAgICAzCisjZGVmaW5lIEdTVF9WUDlfUkVGX0ZSQU1FU19MT0cyICAgIDMKKyNkZWZpbmUgR1NUX1ZQOV9SRUZfRlJBTUVTICAgICAgICAgKDEgPDwgR1NUX1ZQOV9SRUZfRlJBTUVTX0xPRzIpCisKKyNkZWZpbmUgR1NUX1ZQOV9GUkFNRV9DT05URVhUU19MT0cyIDIKKworI2RlZmluZSBHU1RfVlA5X01BWF9MT09QX0ZJTFRFUiAgICA2MworI2RlZmluZSBHU1RfVlA5X01BWF9TSEFSUE5FU1MgICAgICA3CisKKyNkZWZpbmUgR1NUX1ZQOV9NQVhfUkVGX0xGX0RFTFRBUyAgNAorI2RlZmluZSBHU1RfVlA5X01BWF9NT0RFX0xGX0RFTFRBUyAyCisKKyNkZWZpbmUgR1NUX1ZQOV9TRUdNRU5UX0RFTFRBREFUQSAgMAorI2RlZmluZSBHU1RfVlA5X1NFR01FTlRfQUJTREFUQSAgICAxCisKKyNkZWZpbmUgR1NUX1ZQOV9NQVhfU0VHTUVOVFMgICAgICAgOAorI2RlZmluZSBHU1RfVlA5X1NFR19UUkVFX1BST0JTICAgICAoR1NUX1ZQOV9NQVhfU0VHTUVOVFMtMSkKKworI2RlZmluZSBHU1RfVlA5X1BSRURJQ1RJT05fUFJPQlMgICAzCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWcDlQYXJzZXIgICAgICAgICAgICAgICBHc3RWcDlQYXJzZXI7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnA5RnJhbWVIZHIgICAgICAgICAgICAgR3N0VnA5RnJhbWVIZHI7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnA5TG9vcEZpbHRlciAgICAgICAgICAgR3N0VnA5TG9vcEZpbHRlcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWcDlRdWFudEluZGljZXMgICAgICAgICBHc3RWcDlRdWFudEluZGljZXM7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnA5U2VnbWVudGF0aW9uICAgICAgICAgR3N0VnA5U2VnbWVudGF0aW9uOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZwOVNlZ21lbnRhdGlvbkluZm8gICAgIEdzdFZwOVNlZ21lbnRhdGlvbkluZm87Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnA5U2VnbWVudGF0aW9uSW5mb0RhdGEgR3N0VnA5U2VnbWVudGF0aW9uSW5mb0RhdGE7CisKKy8qKgorICogR3N0VnA5UGFyc2VSZXN1bHQ6CisgKiBAR1NUX1ZQOV9QQVJTRVJfT0s6IFRoZSBwYXJzaW5nIHdlbnQgd2VsbAorICogQEdTVF9WUDlfUEFSU0VSX0JST0tFTl9EQVRBOiBUaGUgZGF0YSB0byBwYXJzZSBpcyBicm9rZW4KKyAqIEBHU1RfVlA5X1BBUlNFUl9OT19QQUNLRVRfRVJST1I6IEFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIHRoZSBwYXJzaW5nCisgKgorICogUmVzdWx0IHR5cGUgb2YgYW55IHBhcnNpbmcgZnVuY3Rpb24uCisgKgorICogU2luY2U6IDEuOAorICovCit0eXBlZGVmIGVudW0KK3sKKyAgR1NUX1ZQOV9QQVJTRVJfT0ssCisgIEdTVF9WUDlfUEFSU0VSX0JST0tFTl9EQVRBLAorICBHU1RfVlA5X1BBUlNFUl9FUlJPUiwKK30gR3N0VnA5UGFyc2VyUmVzdWx0OworCisvKioKKyAqIEdzdFZwOVByb2ZpbGU6IEJpdHN0cmVhbSBwcm9maWxlcyBpbmRpY2F0ZWQgYnkgMi0zIGJpdHMgaW4gdGhlIHVuY29tcHJlc3NlZCBoZWFkZXIKKyAqIEBHU1RfVlA5X1BST0ZJTEVfMDogUHJvZmlsZSAwLCA4LWJpdCA0OjI6MCBvbmx5LgorICogQEdTVF9WUDlfUFJPRklMRV8xOiBQcm9maWxlIDEsIDgtYml0IDQ6NDo0LCA0OjI6MiwgYW5kIDQ6NDowLgorICogQEdTVF9WUDlfUFJPRklMRV8yOiBQcm9maWxlIDIsIDEwLWJpdCBhbmQgMTItYml0IGNvbG9yIG9ubHksIHdpdGggNDoyOjAgc2FtcGxpbmcuCisgKiBAR1NUX1ZQOV9QUk9GSUxFXzM6IFByb2ZpbGUgMywgMTAtYml0IGFuZCAxMi1iaXQgY29sb3Igb25seSwgd2l0aCA0OjI6Mi80OjQ6NC80OjQ6MCBzYW1wbGluZy4KKyAqIEBHU1RfVlA5X1BST0ZJTEVfVU5ERUZJTkVEOiBVbmRlZmluZWQgcHJvZmlsZQorICoKKyAqIFZQOSBQcm9maWxlcworICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgR1NUX1ZQOV9QUk9GSUxFXzAsCisgIEdTVF9WUDlfUFJPRklMRV8xLAorICBHU1RfVlA5X1BST0ZJTEVfMiwKKyAgR1NUX1ZQOV9QUk9GSUxFXzMsCisgIEdTVF9WUDlfUFJPRklMRV9VTkRFRklORUQKK30gR3N0VlA5UHJvZmlsZTsKKworLyoqCisgKiBHc3RWcDlGcmFtZVR5cGU6CisgKiBAR1NUX1ZQOV9LRVlfRlJBTUU6IEtleSBmcmFtZSwgb25seSBoYXZlIGludHJhIGJsb2NrcworICogQEdTVF9WUDlfSU5URVJfRlJBTUU6IEludGVyIGZyYW1lLCBib3RoIGludHJhIGFuZCBpbnRlciBibG9ja3MKKyAqCisgKiBWUDkgZnJhbWUgdHlwZXMKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3R5cGVkZWYgZW51bSB7CisgIEdTVF9WUDlfS0VZX0ZSQU1FICAgPSAwLAorICBHU1RfVlA5X0lOVEVSX0ZSQU1FID0gMQorfSBHc3RWcDlGcmFtZVR5cGU7CisKKy8qKgorICogR3N0VnA5Qml0RGVwdGg6CisgKiBAR1NUX1ZQOV9CSVRfREVQVEhfODogQml0IGRlcHRoIGlzIDgKKyAqIEBHU1RfVlA5X0JJVF9ERVBUSF8xMCBCaXQgZGVwdGggaXMgMTAKKyAqIEBHU1RfVlA5X0JJVF9ERVBUSF8xMjpCaXQgZGVwdGggaXMgMTIKKyAqCisgKiBCaXQgZGVwdGhzIG9mIGVuY29kZWQgZnJhbWVzCisgKgorICogU2luY2U6IDEuOAorICovCit0eXBlZGVmIGVudW0geworICBHU1RfVlA5X0JJVF9ERVBUSF84ICA9IDgsCisgIEdTVF9WUDlfQklUX0RFUFRIXzEwID0gMTAsCisgIEdTVF9WUDlfQklUX0RFUFRIXzEyID0gMTIKK30gR3N0VnA5Qml0RGVwdGg7CisKKy8qKgorICogR3N0VnA5Q29sb3JTcGFjZToKKyAqIEBHU1RfVlA5X0NTX1VOS05PV046IFVua25vd24gY29sb3Igc3BhY2UKKyAqIEBHU1RfVlA5X0NTX0JUXzYwMTogQlQuNjAxCisgKiBAR1NUX1ZQOV9DU19CVF83MDk6IEJULjcwOQorICogQEdTVF9WUDlfQ1NfU01QVEVfMTcwOiBTTVBURS4xNzAKKyAqIEBHU1RfVlA5X0NTX1NNUFRFXzI0MDogU01QVEUuMjQwCisgKiBAR1NUX1ZQOV9DU19CVF8yMDIwOiBCVC4yMDIwCisgKiBAR1NUX1ZQOV9DU19SRVNFUlZFRDogUmVzZXJ2ZWQKKyAqIEBHU1RfVlA5X0NTX1NSR0I6IHNSR0IKKyAqCisgKiBTdXBwb3J0ZWQgQ29sb3JTcGFjZSBzdGFuZGFyZHMKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3R5cGVkZWYgZW51bSB7CisgIEdTVF9WUDlfQ1NfVU5LTk9XTiAgICAgICAgICAgICAgID0gMCwKKyAgR1NUX1ZQOV9DU19CVF82MDEgICAgICAgICAgICAgICAgPSAxLAorICBHU1RfVlA5X0NTX0JUXzcwOSAgICAgICAgICAgICAgICA9IDIsCisgIEdTVF9WUDlfQ1NfU01QVEVfMTcwICAgICAgICAgICAgID0gMywKKyAgR1NUX1ZQOV9DU19TTVBURV8yNDAgICAgICAgICAgICAgPSA0LAorICBHU1RfVlA5X0NTX0JUXzIwMjAgICAgICAgICAgICAgICA9IDUsCisgIEdTVF9WUDlfQ1NfUkVTRVJWRURfMiAgICAgICAgICAgID0gNiwKKyAgR1NUX1ZQOV9DU19TUkdCICAgICAgICAgICAgICAgICAgPSA3Cit9IEdzdFZwOUNvbG9yU3BhY2U7CisKKy8qKgorICogR3N0VnA5Q29sb3JSYW5nZToKKyAqIEBHU1RfVlA5X0NSX0xJTUlURUQ6IFkgcmFuZ2UgaXMgWzE2LTIzNV0sIFVWIHJhbmdlIGlzIFsxNi0yNDBdCisgKiBAR1NUX1ZQOV9DUl9GVUxMOiBGdWxsIHJhbmdlIGZvciBZLFUgYW5kIFYgWzAtMjU1XQorICoKKyAqIFBvc3NpYmxlIGNvbG9yIHZhbHVlIHJhbmdlcworICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgR1NUX1ZQOV9DUl9MSU1JVEVELAorICBHU1RfVlA5X0NSX0ZVTEwKK30gR3N0VnA5Q29sb3JSYW5nZTsKKworLyoqCisgKiBHc3RWcDlJbnRlcnBvbGF0aW9uRmlsdGVyOgorICogQEdTVF9WUDlfSU5URVJQT0xBVElPTl9GSUxURVJfRUlHSFRUQVA6IEVpZ2h0VGFwIGludGVycG9sYXRpb24gZmlsdGVyCisgKiBAR1NUX1ZQOV9JTlRFUlBPTEFUSU9OX0ZJTFRFUl9FSUdIVFRBUF9TTU9PVEg6IFNtb290aCBpbnRlcnBvbGF0aW9uIGZpbHRlcgorICogQEdTVF9WUDlfSU5URVJQT0xBVElPTl9GSUxURVJfRUlHSFRUQVBfU0hBUlA6IFNoYXJ0IGludGVycG9sYXRpb24gZmlsdGVyCisgKiBAR1NUX1ZQOV9JTlRFUlBPTEFUSU9OX0ZJTFRFUl9CSUxJTkVBUjogQmlsaW5lYXIgaW50ZXJwb2xhdGlvbiBmaWx0ZXIKKyAqIEBHU1RfVlA5X0lOVEVSUE9MQVRJT05fRklMVEVSX1NXSVRDSEFCTEU6IFNlbGVjdGFibGUgaW50ZXJwb2xhdGlvbiBmaWx0ZXIKKyAqCisgKiBJbnRlcnBvbGF0aW9uIEZpbHRlcnMgVHlwZXMKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3R5cGVkZWYgZW51bSB7CisgIEdTVF9WUDlfSU5URVJQT0xBVElPTl9GSUxURVJfRUlHSFRUQVAgICAgICAgID0gMCwKKyAgR1NUX1ZQOV9JTlRFUlBPTEFUSU9OX0ZJTFRFUl9FSUdIVFRBUF9TTU9PVEggPSAxLAorICBHU1RfVlA5X0lOVEVSUE9MQVRJT05fRklMVEVSX0VJR0hUVEFQX1NIQVJQICA9IDIsCisgIEdTVF9WUDlfSU5URVJQT0xBVElPTl9GSUxURVJfQklMSU5FQVIgICAgICAgID0gMywKKyAgR1NUX1ZQOV9JTlRFUlBPTEFUSU9OX0ZJTFRFUl9TV0lUQ0hBQkxFICAgICAgPSA0Cit9IEdzdFZwOUludGVycG9sYXRpb25GaWx0ZXI7CisKKy8qKgorICogR3N0VnA5UmVmRnJhbWVUeXBlOgorICogQEdTVF9WUDlfUkVGX0ZSQU1FX0lOVFJBOiBJbnRyYSByZWZlcmVuY2UgZnJhbWUKKyAqIEBHU1RfVlA5X1JFRl9GUkFNRV9MQVNUOiBMYXN0IFJlZmVyZW5jZSBmcmFtZQorICogQEdTVF9WUDlfUkVGX0ZSQU1FX0dPTERFTjogR29sZGVuIFJlZmVyZW5jZSBmcmFtZQorICogQEdTVF9WUDlfUkVGX0ZSQU1FX0FMVFJFRjogQWx0ZXJuYXRlIFJlZmVyZW5jZSBmcmFtZQorICogQEdTVF9WUDlfUkVGX0ZSQU1FX01BWDoKKyAqCisgKiBSZWZlcmVuY2UgRnJhbWUgdHlwZXMKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3R5cGVkZWYgZW51bSB7CisgIEdTVF9WUDlfUkVGX0ZSQU1FX0lOVFJBICA9IDAsCisgIEdTVF9WUDlfUkVGX0ZSQU1FX0xBU1QgICA9IDEsCisgIEdTVF9WUDlfUkVGX0ZSQU1FX0dPTERFTiA9IDIsCisgIEdTVF9WUDlfUkVGX0ZSQU1FX0FMVFJFRiA9IDMsCisgIEdTVF9WUDlfUkVGX0ZSQU1FX01BWCAgICA9IDQKK30gR3N0VnA5UmVmRnJhbWVUeXBlOworCisvKioKKyAqIEdzdFZwOVF1YW50SW5kaWNlczoKKyAqIEB5X2FjX3FpOiBpbmRpY2F0ZXMgdGhlIGRlcXVhbnRpemF0aW9uIHRhYmxlIGluZGV4IHVzZWQgZm9yIHRoZQorICogICBsdW1hIEFDIGNvZWZmaWNpZW50cworICogQHlfZGNfZGVsdGE6IGluZGljYXRlcyB0aGUgZGVsdGEgdmFsdWUgdGhhdCBpcyBhZGRlZCB0byB0aGUKKyAqICAgYmFzZWxpbmUgaW5kZXggdG8gb2J0YWluIHRoZSBsdW1hIERDIGNvZWZmaWNpZW50IGRlcXVhbnRpemF0aW9uCisgKiAgIGluZGV4CisgKiBAdXZfZGNfZGVsdGE6IGluZGljYXRlcyB0aGUgZGVsdGEgdmFsdWUgdGhhdCBpcyBhZGRlZCB0byB0aGUKKyAqICAgYmFzZWxpbmUgaW5kZXggdG8gb2J0YWluIHRoZSBjaHJvbWEgREMgY29lZmZpY2llbnQgZGVxdWFudGl6YXRpb24KKyAqICAgaW5kZXgKKyAqIEB1dl9hY19kZWx0YTogaW5kaWNhdGVzIHRoZSBkZWx0YSB2YWx1ZSB0aGF0IGlzIGFkZGVkIHRvIHRoZQorICogICBiYXNlbGluZSBpbmRleCB0byBvYnRhaW4gdGhlIGNocm9tYSBBQyBjb2VmZmljaWVudCBkZXF1YW50aXphdGlvbgorICogICBpbmRleAorICoKKyAqIERlcXVhbnRpemF0aW9uIGluZGljZXMuCisgKgorICogU2luY2U6IDEuOAorICovCitzdHJ1Y3QgX0dzdFZwOVF1YW50SW5kaWNlcworeworICBndWludDggeV9hY19xaTsKKyAgZ2ludDggeV9kY19kZWx0YTsKKyAgZ2ludDggdXZfZGNfZGVsdGE7CisgIGdpbnQ4IHV2X2FjX2RlbHRhOworfTsKKworLyoqCisgKiBHc3RWcDlMb29wRmlsdGVyOgorICogQGZpbHRlcl9sZXZlbDogaW5kaWNhdGVzIGxvb3AgZmlsdGVyIGxldmVsIGZvciB0aGUgY3VycmVudCBmcmFtZQorICogQHNoYXJwbmVzc19sZXZlbDogaW5kaWNhdGVzIHNoYXJwbmVzcyBsZXZlbCBmb3IgdGhlY3VycmVudCBmcmFtZQorICogQG1vZGVfcmVmX2RlbHRhX2VuYWJsZWQ6IGluZGljYXRlIGlmIGZpbHRlciBhZGp1c3QgaXMgb24KKyAqIEBtb2RlX3JlZl9kZWx0YV91cGRhdGU6IGluZGljYXRlcyBpZiB0aGUgZGVsdGEgdmFsdWVzIHVzZWQgaW4gYW4KKyAqICAgYWRqdXN0bWVudCBhcmUgdXBkYXRlZCBpbiB0aGUgY3VycmVudCBmcmFtZQorICogQHVwZGF0ZV9yZWZfZGVsdGFzOiBpbmRpY2F0ZSB3aGljaCByZWYgZGVsdGFzIGFyZSB1cGRhdGVkCisgKiBAcmVmX2RlbHRhczogIExvb3AgZmlsdGVyIHN0cmVuZ3RoIGFkanVzdG1lbnRzIGJhc2VkIG9uCisgKiAgZnJhbWUgdHlwZSAoaW50cmEsIGludGVyKQorICogQHVwZGF0ZV9tb2RlX2RlbHRhczogaW5kaWNhdGUgd2l0aCBtb2RlIGRlbHRhcyBhcmUgdXBkYXRlZAorICogQG1vZGVfZGVsdGFzOiBMb29wIGZpbHRlciBzdHJlbmd0aCBhZGp1c3RtZW50cyBiYXNlZCBvbgorICogICBtb2RlICh6ZXJvLCBuZXcgbXYpCisgKgorICogTG9vcCBmaWx0ZXIgdmFsdWVzCisgKgorICogU2luY2U6IDEuOAorICovCitzdHJ1Y3QgX0dzdFZwOUxvb3BGaWx0ZXIgeworICBnaW50IGZpbHRlcl9sZXZlbDsKKyAgZ2ludCBzaGFycG5lc3NfbGV2ZWw7CisKKyAgZ3VpbnQ4IG1vZGVfcmVmX2RlbHRhX2VuYWJsZWQ7CisgIGd1aW50OCBtb2RlX3JlZl9kZWx0YV91cGRhdGU7CisgIGd1aW50OCB1cGRhdGVfcmVmX2RlbHRhc1tHU1RfVlA5X01BWF9SRUZfTEZfREVMVEFTXTsKKyAgZ2ludDggcmVmX2RlbHRhc1tHU1RfVlA5X01BWF9SRUZfTEZfREVMVEFTXTsKKyAgZ3VpbnQ4IHVwZGF0ZV9tb2RlX2RlbHRhc1tHU1RfVlA5X01BWF9NT0RFX0xGX0RFTFRBU107CisgIGdpbnQ4IG1vZGVfZGVsdGFzW0dTVF9WUDlfTUFYX01PREVfTEZfREVMVEFTXTsKK307CisKKy8qKgorICogR3N0VnA5U2VnbWVudGF0aW9uSW5mb0RhdGE6CisgKiBAYWx0ZXJuYXRlX3F1YW50aXplcl9lbmFibGVkOiBpbmRpY2F0ZSBhbHRlcm5hdGUgcXVhbnRpemVyIGVuYWJsZWQgYXQgc2VnbWVudCBsZXZlbAorICogQGFsdGVybmF0ZV9xdWFudGl6ZXI6IGFsdGVybmF0ZSBxdWFudGl6ZXIgdmFsdWUKKyAqIEBhbHRlcm5hdGVfbG9vcF9maWx0ZXJfZW5hYmxlZDogaW5kaWNhdGUgYWx0ZXJuYXRlIGxvb3AgZmlsdGVyIGVuYWJsZWQgYXQgc2VnbWVudCBsZXZlbAorICogQGFsdGVybmF0ZV9sb29wX2ZpbHRlcjogYWx0ZXJuYXRlIGxvb3AgZmlsdGVyCisgKiBAcmVmZXJlbmNlX2ZyYW1lX2VuYWJsZWQ6IGluZGljYXRlIGFsdGVybmF0ZSByZWZlcmVuY2UgZnJhbWUgYXQgc2VnbWVudCBsZXZlbAorICogQHJlZmVyZW5jZV9mcmFtZTogYWx0ZXJuYXRlIHJlZmVyZW5jZSBmcmFtZQorICogQHJlZmVyZW5jZV9za2lwOiBhIGJsb2NrIHNraXAgbW9kZSB0aGF0IGltcGxpZXMgYm90aCB0aGUgdXNlIG9mIGEgKDAsMCkKKyAqICAgbW90aW9uIHZlY3RvciBhbmQgdGhhdCBubyByZXNpZHVhbCB3aWxsIGJlIGNvZGVkLgorICoKKyAqIFNlZ21lbnRhdGlvbiBpbmZvIGZvciBlYWNoIHNlZ21lbnQKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3N0cnVjdCBfR3N0VnA5U2VnbWVudGF0aW9uSW5mb0RhdGEgeworICAvKiBTRUdfTFZMX0FMVF9RICovCisgIGd1aW50OCBhbHRlcm5hdGVfcXVhbnRpemVyX2VuYWJsZWQ7CisgIGdpbnQxNiBhbHRlcm5hdGVfcXVhbnRpemVyOworCisgIC8qIFNFR19MVkxfQUxUX0xGICovCisgIGd1aW50OCBhbHRlcm5hdGVfbG9vcF9maWx0ZXJfZW5hYmxlZDsKKyAgZ2ludDggYWx0ZXJuYXRlX2xvb3BfZmlsdGVyOworCisgIC8qIFNFR19MVkxfUkVGX0ZSQU1FICovCisgIGd1aW50OCByZWZlcmVuY2VfZnJhbWVfZW5hYmxlZDsKKyAgZ2ludCByZWZlcmVuY2VfZnJhbWU7CisKKyAgZ3VpbnQ4IHJlZmVyZW5jZV9za2lwOworfTsKKworLyoqCisgKiBHc3RWcDlTZWdtZW50YXRpb25JbmZvOgorICogQGVuYWJsZWQ6IGVuYWJsZXMgdGhlIHNlZ21lbnRhdGlvbiBmZWF0dXJlIGZvciB0aGUgY3VycmVudCBmcmFtZQorICogQHVwZGF0ZV9tYXA6IGRldGVybWluZXMgaWYgc2VnbWVudGF0aW9uIGlzIHVwZGF0ZWQgaW4gdGhlIGN1cnJlbnQgZnJhbWUKKyAqIEB1cGRhdGVfdHJlZV9wcm9iczogZGV0ZXJtaW5lcyBpZiB0cmVlIHByb2JhYmlsaXRpZXMgdXBkYXRlZCBvciBub3QKKyAqIEB0cmVlX3Byb2JzOiBzZWdtZW50IHRyZWUgcHJvYmFiaWxpdGllcworICogQHVwZGF0ZV9wcmVkX3Byb2JzOmRldGVybWluZXMgaWYgcHJlZGljdGlvbiBwcm9iYWJpbGl0aWVzIHVwZGF0ZWQgb3Igbm90CisgKiBAcHJlZF9wcm9iczogcHJlZGljdGlvbiBwcm9iYWJpbGl0aWVzCisgKiBAYWJzX2RlbHRhOiBpbnRlcnByZXRhdGlvbiBvZiBzZWdtZW50IGRhdGEgdmFsdWVzCisgKiBAdGVtcG9yYWxfdXBkYXRlOiB0eXBlIG9mIG1hcCB1cGRhdGUKKyAqIEB1cGRhdGVfZGF0YTogaW5kaWNhdGVzIGlmIHRoZSBzZWdtZW50IGZlYXR1cmUgZGF0YQorICogICBpcyB1cGRhdGVkIGluIHRoZSBjdXJyZW50IGZyYW1lCisgKiBAZGF0YTogc2VnbWVudCBmZWF0dXJlIGRhdGEKKyAqCisgKiBTZWdtZW50YXRpb24gaW5mbworICoKKyAqIFNpbmNlOiAxLjgKKyAqLworc3RydWN0IF9Hc3RWcDlTZWdtZW50YXRpb25JbmZvIHsKKyAgLyogZW5hYmxlIGluIHNldHVwX3NlZ21lbnRhdGlvbiovCisgIGd1aW50OCAgZW5hYmxlZDsKKyAgLyogdXBkYXRlX21hcCBpbiBzZXR1cF9zZWdtZW50YXRpb24qLworICBndWludDggdXBkYXRlX21hcDsKKyAgLyogdHJlZV9wcm9icyBleGlzdCBvciBub3QqLworICBndWludDggdXBkYXRlX3RyZWVfcHJvYnNbR1NUX1ZQOV9TRUdfVFJFRV9QUk9CU107CisgIGd1aW50OCB0cmVlX3Byb2JzW0dTVF9WUDlfU0VHX1RSRUVfUFJPQlNdOworICAvKiBwcmVkX3Byb2JzIGV4aXN0IG9yIG5vdCovCisgIGd1aW50OCB1cGRhdGVfcHJlZF9wcm9ic1tHU1RfVlA5X1BSRURJQ1RJT05fUFJPQlNdOworICBndWludDggcHJlZF9wcm9ic1tHU1RfVlA5X1BSRURJQ1RJT05fUFJPQlNdOworCisgIC8qIGFic19kZWx0YSBpbiBzZXR1cF9zZWdtZW50YXRpb24gKi8KKyAgZ3VpbnQ4IGFic19kZWx0YTsKKyAgLyogdGVtcG9yYWxfdXBkYXRlIGluIHNldHVwX3NlZ21lbnRhdGlvbiAqLworICBndWludDggdGVtcG9yYWxfdXBkYXRlOworCisgIC8qIHVwZGF0ZV9kYXRhIGluIHNldHVwX3NlZ21lbnRhdGlvbiovCisgIGd1aW50OCB1cGRhdGVfZGF0YTsKKyAgR3N0VnA5U2VnbWVudGF0aW9uSW5mb0RhdGEgZGF0YVtHU1RfVlA5X01BWF9TRUdNRU5UU107Cit9OworCisvKioKKyAqIEdzdFZwOUZyYW1lSGRyOgorICogQHByb2ZpbGU6IGVuY29kZWQgcHJvZmlsZQorICogQHNob3dfZXhpc3RpbmdfZnJhbWU6IGRpc3BsYXkgYWxyZWFkeSBkZWNvZGVkIGZyYW1lIGluc3RlYWQgb2YgZG9pbmcgdGhlIGRlY29kaW5nCisgKiBAZnJhbWVfdG9fc2hvdzogd2hpY2ggZnJhbWUgdG8gc2hvdyBpZiBzaG93X2V4aXN0aW5nX2ZyYW1lIGlzIHRydWUKKyAqIEBmcmFtZV90eXBlOiBmcmFtZSB0eXBlCisgKiBAc2hvd19mcmFtZTogaW5kaWNhdGUgd2hldGhlciBpdCBpcyBhIGRpc3BsYXlhYmxlIGZyYW1lIG9yIG5vdAorICogQGVycm9yX3Jlc2lsaWVudF9tb2RlOiBlcnJvciByZXNpbGVudCBtb2RlCisgKiBAc3Vic2FtcGxpbmdfeDogaG9yaXpvbnRhbCBzdWJzYW1wbGluZworICogQHN1YnNhbXBsaW5nX3k6IHZlcnRpY2FsIHN1YnNhbXBsaW5nCisgKiBAd2lkdGg6IGZyYW1lIHdpZHRoCisgKiBAaGVpZ2h0OiBmcmFtZSBoZWlnaHQKKyAqIEBkaXNwbGF5X3NpemVfZW5hYmxlZDogZGlzcGxheSBzaXplIGVuYWJsZWQgKGNyb3BwaW5nKQorICogQGRpc3BsYXlfd2lkdGg6IGRpc3BsYXkgd2lkdGgKKyAqIEBkaXNwbGF5X2hlaWdodDogZGlzcGxheSBoZWlnaHQKKyAqIEBmcmFtZV9jb250ZXh0X2lkeDogZnJhbWUgY29udGV4dCBpbmRleAorICogQGJpdF9kZXB0aDogYml0IGRlcHRoIG9mIHRoZSBzdHJlYW0KKyAqIEBjb2xvcl9zcGFjZTogY29sb3Igc3BhY2Ugc3RhbmRhcmQKKyAqIEBjb2xvcl9yYW5nZTogY29sb3IgcmFuZ2Ugc3RhbmRhcmQKKyAqIEBpbnRyYV9vbmx5OiBpbnRyYSBvbmx5IGZyYW1lCisgKiBAcmVzZXRfZnJhbWVfY29udGV4dDogcmVzZXQgZnJhbWUgY29udGV4dAorICogQHJlZnJlc2hfZnJhbWVfZmxhZ3M6IHJlZnJlc2ggcmVmZXJlbmNlIGZyYW1lIGZsYWdzCisgKiBAcmVmX2ZyYW1lX2luZGljZXM6IHJlZmVyZW5jZSBmcmFtZSBpbmRleAorICogQHJlZl9mcmFtZV9zaWduX2JpYXM6IHNpZ24gYmlhcyBmb3Igc2VsZWN0aW5nIGFsdHJlZixsYXN0IGFuZCBnb2xkZW4gZnJhbWVzCisgKiBAYWxsb3dfaGlnaF9wcmVjaXNpb25fbXY6IGFsbG93IGhpZ2h0IHByZWNpc2lvbiBtb3Rpb24gdmVjdG9yCisgKiBAbWNvbXBfZmlsdGVyX3R5cGU6IGludGVycG9sYXRpb24gZmlsdGVyIHR5cGUKKyAqIEByZWZyZXNoX2ZyYW1lX2NvbnRleHQ6IHJlZnJlc2ggZnJhbWUgY29udGV4dCBpbmRpY2F0b3IKKyAqIEBmcmFtZV9wYXJhbGxlbF9kZWNvZGluZ19tb2RlOiBlbmFibGUgb3IgZGlzYWJsZSBwYXJhbGxlbCBkZWNvZGluZyBzdXBwb3J0LgorICogQGxvb3BmaWx0ZXI6IGxvb3BmaWx0ZXIgdmFsdWVzCisgKiBAcXVhbnRfaW5kaWNlczogcXVhbnRpemF0aW9uIGluZGVjZXMKKyAqIEBzZWdtZW50YXRpb246IHNlZ21lbnRhdGlvbiBpbmZvCisgKiBAbG9nMl90aWxlX3Jvd3M6IHRpbGUgcm93IGluZGljYXRvcgorICogQGxvZzJfdGlsZV9jb2x1bW5zOiAgdGlsZSBjb2x1bW4gaW5kaWNhdG9yCisgKiBAZmlyc3RfcGFydGl0aW9uX3NpemU6IGZpcnN0IHBhcnRpdGlvbiBzaXplIChhZnRlciB0aGUgdW5jb21wcmVzc2VkIGhlYWRlcikKKyAqIEBsb3NzbGVzc19mbGFnOiBsb3NzbGVzcyBtb2RlIGRlY29kZQorICogQGZyYW1lX2hlYWRlcl9sZW5ndGhfaW5fYnl0ZXM6IGxlbmd0aCBvZiB1bmNvbXByZXNzZWQgaGVhZGVyCisgKgorICogRnJhbWUgaGVhZGVyCisgKgorICogU2luY2U6IDEuOAorICovCitzdHJ1Y3QgX0dzdFZwOUZyYW1lSGRyCit7CisgIGd1aW50IHByb2ZpbGU7CisgIGd1aW50OCBzaG93X2V4aXN0aW5nX2ZyYW1lOworICBnaW50ICBmcmFtZV90b19zaG93OworICBndWludCBmcmFtZV90eXBlOworICBndWludDggc2hvd19mcmFtZTsKKyAgZ3VpbnQ4IGVycm9yX3Jlc2lsaWVudF9tb2RlOworICBnaW50IHN1YnNhbXBsaW5nX3g7CisgIGdpbnQgc3Vic2FtcGxpbmdfeTsKKyAgZ3VpbnQzMiB3aWR0aDsKKyAgZ3VpbnQzMiBoZWlnaHQ7CisgIGd1aW50OCBkaXNwbGF5X3NpemVfZW5hYmxlZDsKKyAgZ3VpbnQzMiBkaXNwbGF5X3dpZHRoOworICBndWludDMyIGRpc3BsYXlfaGVpZ2h0OworICBndWludCBmcmFtZV9jb250ZXh0X2lkeDsKKworICBndWludCBiaXRfZGVwdGg7CisgIGd1aW50IGNvbG9yX3NwYWNlOworICBndWludCBjb2xvcl9yYW5nZTsKKworICBndWludDggaW50cmFfb25seTsKKyAgZ2ludCByZXNldF9mcmFtZV9jb250ZXh0OworICBnaW50IHJlZnJlc2hfZnJhbWVfZmxhZ3M7CisKKyAgZ2ludCByZWZfZnJhbWVfaW5kaWNlc1tHU1RfVlA5X1JFRlNfUEVSX0ZSQU1FXTsKKyAgZ2ludCByZWZfZnJhbWVfc2lnbl9iaWFzW0dTVF9WUDlfUkVGU19QRVJfRlJBTUVdOworICBnaW50IGFsbG93X2hpZ2hfcHJlY2lzaW9uX212OworICBndWludDggbWNvbXBfZmlsdGVyX3R5cGU7CisKKyAgZ2ludCByZWZyZXNoX2ZyYW1lX2NvbnRleHQ7CisgIC8qIGZyYW1lX3BhcmFsbGVsX2RlY29kaW5nX21vZGUgaW4gdnA5IGNvZGUqLworICBnaW50IGZyYW1lX3BhcmFsbGVsX2RlY29kaW5nX21vZGU7CisKKyAgR3N0VnA5TG9vcEZpbHRlciBsb29wZmlsdGVyOworICBHc3RWcDlRdWFudEluZGljZXMgcXVhbnRfaW5kaWNlczsKKyAgR3N0VnA5U2VnbWVudGF0aW9uSW5mbyBzZWdtZW50YXRpb247CisKKyAgZ2ludCBsb2cyX3RpbGVfcm93czsKKyAgZ2ludCBsb2cyX3RpbGVfY29sdW1uczsKKworICBndWludDMyIGZpcnN0X3BhcnRpdGlvbl9zaXplOworCisgIC8qIGNhbGN1bGF0ZWQgdmFsdWVzICovCisgIGd1aW50IGxvc3NsZXNzX2ZsYWc7CisgIGd1aW50MzIgZnJhbWVfaGVhZGVyX2xlbmd0aF9pbl9ieXRlczsKK307CisKKy8qKgorICogR3N0VnA5U2VnbWVudGF0aW9uOgorICogQGZpbHRlcl9sZXZlbDogbG9vcCBmaWx0ZXIgbGV2ZWwKKyAqIEBsdW1hX2FjX3F1YW50X3NjYWxlOiBBQyBxdWFudCBzY2FsZSBmb3IgbHVtYShZKSBjb21wb25lbnQKKyAqIEBsdW1hX2RjX3F1YW50X3NjYWxlOiBEQyBxdWFudCBzY2FsZSBmb3IgbHVtYShZKSBjb21wb25lbnQKKyAqIEBjaHJvbWFfYWNfcXVhbnRfc2NhbGUgQUMgcXVhbnQgc2NhbGUgZm9yIGNocm9tYShVL1YpIGNvbXBvbmVudAorICogQGNocm9tYV9kY19xdWFudF9zY2FsZTogREMgcXVhbnQgc2NhbGUgZm9yIGNocm9tYSAoVS9WKSBjb21wb25lbnQKKyAqIEByZWZlcmVuY2VfZnJhbWVfZW5hYmxlZDogYWx0ZXJuYXRlIHJlZmVyZW5jZSBmcmFtZSBlbmFibGVtZW50CisgKiBAcmVmZXJlbmNlX2ZyYW1lOiBhbHRlcm5hdGUgcmVmZXJlbmNlIGZyYW1lCisgKiBAcmVmZXJlbmNlX3NraXA6ICBhIGJsb2NrIHNraXAgbW9kZSB0aGF0IGltcGxpZXMgYm90aCB0aGUgdXNlIG9mIGEgKDAsMCkKKyAqICAgbW90aW9uIHZlY3RvciBhbmQgdGhhdCBubyByZXNpZHVhbCB3aWxsIGJlIGNvZGVkCisgKgorICogU2VnbWVudGF0aW9uIGluZm8ga2VwdCBhY3Jvc3MgbXVsdGlwZSBmcmFtZXMKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3N0cnVjdCBfR3N0VnA5U2VnbWVudGF0aW9uCit7CisgIGd1aW50OCBmaWx0ZXJfbGV2ZWxbNF1bMl07CisgIGdpbnQxNiBsdW1hX2FjX3F1YW50X3NjYWxlOworICBnaW50MTYgbHVtYV9kY19xdWFudF9zY2FsZTsKKyAgZ2ludDE2IGNocm9tYV9hY19xdWFudF9zY2FsZTsKKyAgZ2ludDE2IGNocm9tYV9kY19xdWFudF9zY2FsZTsKKworICBndWludDggcmVmZXJlbmNlX2ZyYW1lX2VuYWJsZWQ7CisgIGdpbnQgcmVmZXJlbmNlX2ZyYW1lOworCisgIGd1aW50OCByZWZlcmVuY2Vfc2tpcDsKK307CisKKy8qKgorICogR3N0VnA5UGFyc2VyOgorICogQHByaXY6IEdzdFZwOVBhcnNlclByaXZhdGUgc3RydWN0IHRvIGtlZXAgdHJhY2sgb2Ygc3RhdGUgdmFyaWFibGVzCisgKiBAbWJfc2VnbWVudF90cmVlX3Byb2JzOiBkZWNvZGluZyB0cmVlIHByb2JhYmlsaXRpZXMKKyAqIEBzZWdtZW50X3ByZWRfcHJvYnM6IHNlZ21lbnQgcHJlZGljdGlvbiBwcm9iYWJpaWx0aWVzCisgKiBAc2VnbWVudGF0aW9uOiBTZWdtZW50YXRpb24gaW5mbworICoKKyAqIFBhcnNlciBjb250ZXh0IHRoYXQgbmVlZHMgdG8gYmUgbGl2ZSBhY3Jvc3MgZnJhbWVzCisgKgorICogU2luY2U6IDEuOAorICovCitzdHJ1Y3QgX0dzdFZwOVBhcnNlcgoreworICAvKiBwcml2YXRlIHN0dWN0IGZvciB0cmFja2luZyBzdGF0ZSB2YXJpYWJsZXMgYWNyb3NzIGZyYW1lcyAqLworICB2b2lkICpwcml2OworCisgIGd1aW50OCBtYl9zZWdtZW50X3RyZWVfcHJvYnNbR1NUX1ZQOV9TRUdfVFJFRV9QUk9CU107CisgIGd1aW50OCBzZWdtZW50X3ByZWRfcHJvYnNbR1NUX1ZQOV9QUkVESUNUSU9OX1BST0JTXTsKKyAgR3N0VnA5U2VnbWVudGF0aW9uIHNlZ21lbnRhdGlvbltHU1RfVlA5X01BWF9TRUdNRU5UU107Cit9OworCitHc3RWcDlQYXJzZXIgKiAgICAgZ3N0X3ZwOV9wYXJzZXJfbmV3ICh2b2lkKTsKKworR3N0VnA5UGFyc2VyUmVzdWx0IGdzdF92cDlfcGFyc2VyX3BhcnNlX2ZyYW1lX2hlYWRlciAoR3N0VnA5UGFyc2VyKiBwYXJzZXIsIEdzdFZwOUZyYW1lSGRyICogZnJhbWVfaGRyLCBjb25zdCBndWludDggKiBkYXRhLCBnc2l6ZSBzaXplKTsKKwordm9pZCAgICAgICAgICAgICAgIGdzdF92cDlfcGFyc2VyX2ZyZWUgKEdzdFZwOVBhcnNlciAqIHBhcnNlcik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBHU1RfVlA5X1BBUlNFUl9IICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL25hbHV0aWxzLmggYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL25hbHV0aWxzLmgKaW5kZXggMTFjYmU3YS4uN2UyM2FiMSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9uYWx1dGlscy5oCisrKyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvbmFsdXRpbHMuaApAQCAtNTMsMTkgKzUzLDM1IEBACiAgIGd1aW50NjQgY2FjaGU7ICAgICAgICAgICAgICAgIC8qIGNhY2hlZCBieXRlcyAqLwogfSBOYWxSZWFkZXI7CiAKK0dfR05VQ19JTlRFUk5BTAogdm9pZCBuYWxfcmVhZGVyX2luaXQgKE5hbFJlYWRlciAqIG5yLCBjb25zdCBndWludDggKiBkYXRhLCBndWludCBzaXplKTsKIAorR19HTlVDX0lOVEVSTkFMCiBnYm9vbGVhbiBuYWxfcmVhZGVyX3JlYWQgKE5hbFJlYWRlciAqIG5yLCBndWludCBuYml0cyk7CisKK0dfR05VQ19JTlRFUk5BTAogZ2Jvb2xlYW4gbmFsX3JlYWRlcl9za2lwIChOYWxSZWFkZXIgKiBuciwgZ3VpbnQgbmJpdHMpOworCitHX0dOVUNfSU5URVJOQUwKIGdib29sZWFuIG5hbF9yZWFkZXJfc2tpcF9sb25nIChOYWxSZWFkZXIgKiBuciwgZ3VpbnQgbmJpdHMpOworCitHX0dOVUNfSU5URVJOQUwKIGd1aW50IG5hbF9yZWFkZXJfZ2V0X3BvcyAoY29uc3QgTmFsUmVhZGVyICogbnIpOworCitHX0dOVUNfSU5URVJOQUwKIGd1aW50IG5hbF9yZWFkZXJfZ2V0X3JlbWFpbmluZyAoY29uc3QgTmFsUmVhZGVyICogbnIpOworCitHX0dOVUNfSU5URVJOQUwKIGd1aW50IG5hbF9yZWFkZXJfZ2V0X2VwYl9jb3VudCAoY29uc3QgTmFsUmVhZGVyICogbnIpOwogCitHX0dOVUNfSU5URVJOQUwKIGdib29sZWFuIG5hbF9yZWFkZXJfaXNfYnl0ZV9hbGlnbmVkIChOYWxSZWFkZXIgKiBucik7CisKK0dfR05VQ19JTlRFUk5BTAogZ2Jvb2xlYW4gbmFsX3JlYWRlcl9oYXNfbW9yZV9kYXRhIChOYWxSZWFkZXIgKiBucik7CiAKICNkZWZpbmUgTkFMX1JFQURFUl9SRUFEX0JJVFNfSChiaXRzKSBcCitHX0dOVUNfSU5URVJOQUwgXAogZ2Jvb2xlYW4gbmFsX3JlYWRlcl9nZXRfYml0c191aW50IyNiaXRzIChOYWxSZWFkZXIgKm5yLCBndWludCMjYml0cyAqdmFsLCBndWludCBuYml0cykKIAogTkFMX1JFQURFUl9SRUFEX0JJVFNfSCAoOCk7CkBAIC03MywxMSArODksMTUgQEAKIE5BTF9SRUFERVJfUkVBRF9CSVRTX0ggKDMyKTsKIAogI2RlZmluZSBOQUxfUkVBREVSX1BFRUtfQklUU19IKGJpdHMpIFwKK0dfR05VQ19JTlRFUk5BTCBcCiBnYm9vbGVhbiBuYWxfcmVhZGVyX3BlZWtfYml0c191aW50IyNiaXRzIChjb25zdCBOYWxSZWFkZXIgKm5yLCBndWludCMjYml0cyAqdmFsLCBndWludCBuYml0cykKIAogTkFMX1JFQURFUl9QRUVLX0JJVFNfSCAoOCk7CiAKK0dfR05VQ19JTlRFUk5BTAogZ2Jvb2xlYW4gbmFsX3JlYWRlcl9nZXRfdWUgKE5hbFJlYWRlciAqIG5yLCBndWludDMyICogdmFsKTsKKworR19HTlVDX0lOVEVSTkFMCiBnYm9vbGVhbiBuYWxfcmVhZGVyX2dldF9zZSAoTmFsUmVhZGVyICogbnIsIGdpbnQzMiAqIHZhbCk7CiAKICNkZWZpbmUgQ0hFQ0tfQUxMT1dFRF9NQVgodmFsLCBtYXgpIHsgXApAQCAtMTU5LDQgKzE3OSw1IEBACiAgIHZhbCA9IHRtcDsgXAogfQogCitHX0dOVUNfSU5URVJOQUwKIGdpbnQgc2Nhbl9mb3Jfc3RhcnRfY29kZXMgKGNvbnN0IGd1aW50OCAqIGRhdGEsIGd1aW50IHNpemUpOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9wYXJzZXJ1dGlscy5oIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9wYXJzZXJ1dGlscy5oCmluZGV4IDZiNTRkZWQuLmUxYmYxOGYgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvcGFyc2VydXRpbHMuaAorKysgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL3BhcnNlcnV0aWxzLmgKQEAgLTEwMSw3ICsxMDEsNyBAQAogICBndWludCBjYml0czsKIH07CiAKLWdib29sZWFuCitHX0dOVUNfSU5URVJOQUwgZ2Jvb2xlYW4KIGRlY29kZV92bGMgKEdzdEJpdFJlYWRlciAqIGJyLCBndWludCAqIHJlcywgY29uc3QgVkxDVGFibGUgKiB0YWJsZSwKICAgICBndWludCBsZW5ndGgpOwogCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL3ZwOHV0aWxzLmggYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL3ZwOHV0aWxzLmgKaW5kZXggYzhmYzk2Yi4uNTcxNWE1YiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy92cDh1dGlscy5oCisrKyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA4dXRpbHMuaApAQCAtMjUsMTkgKzI1LDE5IEBACiAKICNpbmNsdWRlIDxnc3QvY29kZWNwYXJzZXJzL2dzdHZwOHBhcnNlci5oPgogCi12b2lkCitHX0dOVUNfSU5URVJOQUwgdm9pZAogZ3N0X3ZwOF90b2tlbl91cGRhdGVfcHJvYnNfaW5pdCAoR3N0VnA4VG9rZW5Qcm9icyAqIHByb2JzKTsKIAotdm9pZAorR19HTlVDX0lOVEVSTkFMIHZvaWQKIGdzdF92cDhfdG9rZW5fcHJvYnNfaW5pdF9kZWZhdWx0cyAoR3N0VnA4VG9rZW5Qcm9icyAqIHByb2JzKTsKIAotdm9pZAorR19HTlVDX0lOVEVSTkFMIHZvaWQKIGdzdF92cDhfbXZfdXBkYXRlX3Byb2JzX2luaXQgKEdzdFZwOE12UHJvYnMgKiBwcm9icyk7CiAKLXZvaWQKK0dfR05VQ19JTlRFUk5BTCB2b2lkCiBnc3RfdnA4X212X3Byb2JzX2luaXRfZGVmYXVsdHMgKEdzdFZwOE12UHJvYnMgKiBwcm9icyk7CiAKLXZvaWQKK0dfR05VQ19JTlRFUk5BTCB2b2lkCiBnc3RfdnA4X21vZGVfcHJvYnNfaW5pdF9kZWZhdWx0cyAoR3N0VnA4TW9kZVByb2JzICogcHJvYnMsIGdib29sZWFuIGtleV9mcmFtZSk7CiAKICNlbmRpZiAvKiBHU1RfVlA4X1VUSUxTX0ggKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuYyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDlmYTI0Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy92cDl1dGlscy5jCkBAIC0wLDAgKzEsMjkwIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxMCBUaGUgV2ViTSBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorICogICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgICBkaXN0cmlidXRpb24uCisgKgorICogICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlLCBub3IgdGhlIFdlYk0gUHJvamVjdCwgbm9yIHRoZSBuYW1lcworICogICAgIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisgKiAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuCisgKiAgICAgcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gKgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgInZwOXV0aWxzLmgiCisKK3N0YXRpYyBjb25zdCBpbnQxNl90IGRjX3Fsb29rdXBbUUlOREVYX1JBTkdFXSA9IHsKKyAgNCwgOCwgOCwgOSwgMTAsIDExLCAxMiwgMTIsCisgIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAxOSwKKyAgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI2LAorICAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMiwgMzMsCisgIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzgsIDM5LCA0MCwKKyAgNDEsIDQyLCA0MywgNDMsIDQ0LCA0NSwgNDYsIDQ3LAorICA0OCwgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTMsCisgIDU0LCA1NSwgNTYsIDU3LCA1NywgNTgsIDU5LCA2MCwKKyAgNjEsIDYyLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY2LAorICA2NywgNjgsIDY5LCA3MCwgNzAsIDcxLCA3MiwgNzMsCisgIDc0LCA3NCwgNzUsIDc2LCA3NywgNzgsIDc4LCA3OSwKKyAgODAsIDgxLCA4MSwgODIsIDgzLCA4NCwgODUsIDg1LAorICA4NywgODgsIDkwLCA5MiwgOTMsIDk1LCA5NiwgOTgsCisgIDk5LCAxMDEsIDEwMiwgMTA0LCAxMDUsIDEwNywgMTA4LCAxMTAsCisgIDExMSwgMTEzLCAxMTQsIDExNiwgMTE3LCAxMTgsIDEyMCwgMTIxLAorICAxMjMsIDEyNSwgMTI3LCAxMjksIDEzMSwgMTM0LCAxMzYsIDEzOCwKKyAgMTQwLCAxNDIsIDE0NCwgMTQ2LCAxNDgsIDE1MCwgMTUyLCAxNTQsCisgIDE1NiwgMTU4LCAxNjEsIDE2NCwgMTY2LCAxNjksIDE3MiwgMTc0LAorICAxNzcsIDE4MCwgMTgyLCAxODUsIDE4NywgMTkwLCAxOTIsIDE5NSwKKyAgMTk5LCAyMDIsIDIwNSwgMjA4LCAyMTEsIDIxNCwgMjE3LCAyMjAsCisgIDIyMywgMjI2LCAyMzAsIDIzMywgMjM3LCAyNDAsIDI0MywgMjQ3LAorICAyNTAsIDI1MywgMjU3LCAyNjEsIDI2NSwgMjY5LCAyNzIsIDI3NiwKKyAgMjgwLCAyODQsIDI4OCwgMjkyLCAyOTYsIDMwMCwgMzA0LCAzMDksCisgIDMxMywgMzE3LCAzMjIsIDMyNiwgMzMwLCAzMzUsIDM0MCwgMzQ0LAorICAzNDksIDM1NCwgMzU5LCAzNjQsIDM2OSwgMzc0LCAzNzksIDM4NCwKKyAgMzg5LCAzOTUsIDQwMCwgNDA2LCA0MTEsIDQxNywgNDIzLCA0MjksCisgIDQzNSwgNDQxLCA0NDcsIDQ1NCwgNDYxLCA0NjcsIDQ3NSwgNDgyLAorICA0ODksIDQ5NywgNTA1LCA1MTMsIDUyMiwgNTMwLCA1MzksIDU0OSwKKyAgNTU5LCA1NjksIDU3OSwgNTkwLCA2MDIsIDYxNCwgNjI2LCA2NDAsCisgIDY1NCwgNjY4LCA2ODQsIDcwMCwgNzE3LCA3MzYsIDc1NSwgNzc1LAorICA3OTYsIDgxOSwgODQzLCA4NjksIDg5NiwgOTI1LCA5NTUsIDk4OCwKKyAgMTAyMiwgMTA1OCwgMTA5OCwgMTEzOSwgMTE4NCwgMTIzMiwgMTI4MiwgMTMzNiwKK307CisKK3N0YXRpYyBjb25zdCBpbnQxNl90IGRjX3Fsb29rdXBfMTBbUUlOREVYX1JBTkdFXSA9IHsKKyAgNCwgOSwgMTAsIDEzLCAxNSwgMTcsIDIwLCAyMiwKKyAgMjUsIDI4LCAzMSwgMzQsIDM3LCA0MCwgNDMsIDQ3LAorICA1MCwgNTMsIDU3LCA2MCwgNjQsIDY4LCA3MSwgNzUsCisgIDc4LCA4MiwgODYsIDkwLCA5MywgOTcsIDEwMSwgMTA1LAorICAxMDksIDExMywgMTE2LCAxMjAsIDEyNCwgMTI4LCAxMzIsIDEzNiwKKyAgMTQwLCAxNDMsIDE0NywgMTUxLCAxNTUsIDE1OSwgMTYzLCAxNjYsCisgIDE3MCwgMTc0LCAxNzgsIDE4MiwgMTg1LCAxODksIDE5MywgMTk3LAorICAyMDAsIDIwNCwgMjA4LCAyMTIsIDIxNSwgMjE5LCAyMjMsIDIyNiwKKyAgMjMwLCAyMzMsIDIzNywgMjQxLCAyNDQsIDI0OCwgMjUxLCAyNTUsCisgIDI1OSwgMjYyLCAyNjYsIDI2OSwgMjczLCAyNzYsIDI4MCwgMjgzLAorICAyODcsIDI5MCwgMjkzLCAyOTcsIDMwMCwgMzA0LCAzMDcsIDMxMCwKKyAgMzE0LCAzMTcsIDMyMSwgMzI0LCAzMjcsIDMzMSwgMzM0LCAzMzcsCisgIDM0MywgMzUwLCAzNTYsIDM2MiwgMzY5LCAzNzUsIDM4MSwgMzg3LAorICAzOTQsIDQwMCwgNDA2LCA0MTIsIDQxOCwgNDI0LCA0MzAsIDQzNiwKKyAgNDQyLCA0NDgsIDQ1NCwgNDYwLCA0NjYsIDQ3MiwgNDc4LCA0ODQsCisgIDQ5MCwgNDk5LCA1MDcsIDUxNiwgNTI1LCA1MzMsIDU0MiwgNTUwLAorICA1NTksIDU2NywgNTc2LCA1ODQsIDU5MiwgNjAxLCA2MDksIDYxNywKKyAgNjI1LCA2MzQsIDY0NCwgNjU1LCA2NjYsIDY3NiwgNjg3LCA2OTgsCisgIDcwOCwgNzE4LCA3MjksIDczOSwgNzQ5LCA3NTksIDc3MCwgNzgyLAorICA3OTUsIDgwNywgODE5LCA4MzEsIDg0NCwgODU2LCA4NjgsIDg4MCwKKyAgODkxLCA5MDYsIDkyMCwgOTMzLCA5NDcsIDk2MSwgOTc1LCA5ODgsCisgIDEwMDEsIDEwMTUsIDEwMzAsIDEwNDUsIDEwNjEsIDEwNzYsIDEwOTAsIDExMDUsCisgIDExMjAsIDExMzcsIDExNTMsIDExNzAsIDExODYsIDEyMDIsIDEyMTgsIDEyMzYsCisgIDEyNTMsIDEyNzEsIDEyODgsIDEzMDYsIDEzMjMsIDEzNDIsIDEzNjEsIDEzNzksCisgIDEzOTgsIDE0MTYsIDE0MzYsIDE0NTYsIDE0NzYsIDE0OTYsIDE1MTYsIDE1MzcsCisgIDE1NTksIDE1ODAsIDE2MDEsIDE2MjQsIDE2NDcsIDE2NzAsIDE2OTIsIDE3MTcsCisgIDE3NDEsIDE3NjYsIDE3OTEsIDE4MTcsIDE4NDQsIDE4NzEsIDE5MDAsIDE5MjksCisgIDE5NTgsIDE5OTAsIDIwMjEsIDIwNTQsIDIwODgsIDIxMjMsIDIxNTksIDIxOTcsCisgIDIyMzYsIDIyNzYsIDIzMTksIDIzNjMsIDI0MTAsIDI0NTgsIDI1MDgsIDI1NjEsCisgIDI2MTYsIDI2NzUsIDI3MzcsIDI4MDIsIDI4NzEsIDI5NDQsIDMwMjAsIDMxMDIsCisgIDMxODgsIDMyODAsIDMzNzUsIDM0NzgsIDM1ODYsIDM3MDIsIDM4MjMsIDM5NTMsCisgIDQwODksIDQyMzYsIDQzOTQsIDQ1NTksIDQ3MzcsIDQ5MjksIDUxMzAsIDUzNDcsCit9OworCitzdGF0aWMgY29uc3QgaW50MTZfdCBkY19xbG9va3VwXzEyW1FJTkRFWF9SQU5HRV0gPSB7CisgIDQsIDEyLCAxOCwgMjUsIDMzLCA0MSwgNTAsIDYwLAorICA3MCwgODAsIDkxLCAxMDMsIDExNSwgMTI3LCAxNDAsIDE1MywKKyAgMTY2LCAxODAsIDE5NCwgMjA4LCAyMjIsIDIzNywgMjUxLCAyNjYsCisgIDI4MSwgMjk2LCAzMTIsIDMyNywgMzQzLCAzNTgsIDM3NCwgMzkwLAorICA0MDUsIDQyMSwgNDM3LCA0NTMsIDQ2OSwgNDg0LCA1MDAsIDUxNiwKKyAgNTMyLCA1NDgsIDU2NCwgNTgwLCA1OTYsIDYxMSwgNjI3LCA2NDMsCisgIDY1OSwgNjc0LCA2OTAsIDcwNiwgNzIxLCA3MzcsIDc1MiwgNzY4LAorICA3ODMsIDc5OCwgODE0LCA4MjksIDg0NCwgODU5LCA4NzQsIDg4OSwKKyAgOTA0LCA5MTksIDkzNCwgOTQ5LCA5NjQsIDk3OCwgOTkzLCAxMDA4LAorICAxMDIyLCAxMDM3LCAxMDUxLCAxMDY1LCAxMDgwLCAxMDk0LCAxMTA4LCAxMTIyLAorICAxMTM2LCAxMTUxLCAxMTY1LCAxMTc5LCAxMTkyLCAxMjA2LCAxMjIwLCAxMjM0LAorICAxMjQ4LCAxMjYxLCAxMjc1LCAxMjg4LCAxMzAyLCAxMzE1LCAxMzI5LCAxMzQyLAorICAxMzY4LCAxMzkzLCAxNDE5LCAxNDQ0LCAxNDY5LCAxNDk0LCAxNTE5LCAxNTQ0LAorICAxNTY5LCAxNTk0LCAxNjE4LCAxNjQzLCAxNjY4LCAxNjkyLCAxNzE3LCAxNzQxLAorICAxNzY1LCAxNzg5LCAxODE0LCAxODM4LCAxODYyLCAxODg1LCAxOTA5LCAxOTMzLAorICAxOTU3LCAxOTkyLCAyMDI3LCAyMDYxLCAyMDk2LCAyMTMwLCAyMTY1LCAyMTk5LAorICAyMjMzLCAyMjY3LCAyMzAwLCAyMzM0LCAyMzY3LCAyNDAwLCAyNDM0LCAyNDY3LAorICAyNDk5LCAyNTMyLCAyNTc1LCAyNjE4LCAyNjYxLCAyNzA0LCAyNzQ2LCAyNzg4LAorICAyODMwLCAyODcyLCAyOTEzLCAyOTU0LCAyOTk1LCAzMDM2LCAzMDc2LCAzMTI3LAorICAzMTc3LCAzMjI2LCAzMjc1LCAzMzI0LCAzMzczLCAzNDIxLCAzNDY5LCAzNTE3LAorICAzNTY1LCAzNjIxLCAzNjc3LCAzNzMzLCAzNzg4LCAzODQzLCAzODk3LCAzOTUxLAorICA0MDA1LCA0MDU4LCA0MTE5LCA0MTgxLCA0MjQxLCA0MzAxLCA0MzYxLCA0NDIwLAorICA0NDc5LCA0NTQ2LCA0NjEyLCA0Njc3LCA0NzQyLCA0ODA3LCA0ODcxLCA0OTQyLAorICA1MDEzLCA1MDgzLCA1MTUzLCA1MjIyLCA1MjkxLCA1MzY3LCA1NDQyLCA1NTE3LAorICA1NTkxLCA1NjY1LCA1NzQ1LCA1ODI1LCA1OTA1LCA1OTg0LCA2MDYzLCA2MTQ5LAorICA2MjM0LCA2MzE5LCA2NDA0LCA2NDk1LCA2NTg3LCA2Njc4LCA2NzY5LCA2ODY3LAorICA2OTY2LCA3MDY0LCA3MTYzLCA3MjY5LCA3Mzc2LCA3NDgzLCA3NTk5LCA3NzE1LAorICA3ODMyLCA3OTU4LCA4MDg1LCA4MjE0LCA4MzUyLCA4NDkyLCA4NjM1LCA4Nzg4LAorICA4OTQ1LCA5MTA0LCA5Mjc1LCA5NDUwLCA5NjM5LCA5ODMyLCAxMDAzMSwgMTAyNDUsCisgIDEwNDY1LCAxMDcwMiwgMTA5NDYsIDExMjEwLCAxMTQ4MiwgMTE3NzYsIDEyMDgxLCAxMjQwOSwKKyAgMTI3NTAsIDEzMTE4LCAxMzUwMSwgMTM5MTMsIDE0MzQzLCAxNDgwNywgMTUyOTAsIDE1ODEyLAorICAxNjM1NiwgMTY5NDMsIDE3NTc1LCAxODIzNywgMTg5NDksIDE5NzE4LCAyMDUyMSwgMjEzODcsCit9OworCitzdGF0aWMgY29uc3QgaW50MTZfdCBhY19xbG9va3VwW1FJTkRFWF9SQU5HRV0gPSB7CisgIDQsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwKKyAgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLAorICAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsCisgIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwKKyAgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LAorICA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsCisgIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwKKyAgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLAorICA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsCisgIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwKKyAgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LAorICA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsCisgIDEwNCwgMTA2LCAxMDgsIDExMCwgMTEyLCAxMTQsIDExNiwgMTE4LAorICAxMjAsIDEyMiwgMTI0LCAxMjYsIDEyOCwgMTMwLCAxMzIsIDEzNCwKKyAgMTM2LCAxMzgsIDE0MCwgMTQyLCAxNDQsIDE0NiwgMTQ4LCAxNTAsCisgIDE1MiwgMTU1LCAxNTgsIDE2MSwgMTY0LCAxNjcsIDE3MCwgMTczLAorICAxNzYsIDE3OSwgMTgyLCAxODUsIDE4OCwgMTkxLCAxOTQsIDE5NywKKyAgMjAwLCAyMDMsIDIwNywgMjExLCAyMTUsIDIxOSwgMjIzLCAyMjcsCisgIDIzMSwgMjM1LCAyMzksIDI0MywgMjQ3LCAyNTEsIDI1NSwgMjYwLAorICAyNjUsIDI3MCwgMjc1LCAyODAsIDI4NSwgMjkwLCAyOTUsIDMwMCwKKyAgMzA1LCAzMTEsIDMxNywgMzIzLCAzMjksIDMzNSwgMzQxLCAzNDcsCisgIDM1MywgMzU5LCAzNjYsIDM3MywgMzgwLCAzODcsIDM5NCwgNDAxLAorICA0MDgsIDQxNiwgNDI0LCA0MzIsIDQ0MCwgNDQ4LCA0NTYsIDQ2NSwKKyAgNDc0LCA0ODMsIDQ5MiwgNTAxLCA1MTAsIDUyMCwgNTMwLCA1NDAsCisgIDU1MCwgNTYwLCA1NzEsIDU4MiwgNTkzLCA2MDQsIDYxNSwgNjI3LAorICA2MzksIDY1MSwgNjYzLCA2NzYsIDY4OSwgNzAyLCA3MTUsIDcyOSwKKyAgNzQzLCA3NTcsIDc3MSwgNzg2LCA4MDEsIDgxNiwgODMyLCA4NDgsCisgIDg2NCwgODgxLCA4OTgsIDkxNSwgOTMzLCA5NTEsIDk2OSwgOTg4LAorICAxMDA3LCAxMDI2LCAxMDQ2LCAxMDY2LCAxMDg3LCAxMTA4LCAxMTI5LCAxMTUxLAorICAxMTczLCAxMTk2LCAxMjE5LCAxMjQzLCAxMjY3LCAxMjkyLCAxMzE3LCAxMzQzLAorICAxMzY5LCAxMzk2LCAxNDIzLCAxNDUxLCAxNDc5LCAxNTA4LCAxNTM3LCAxNTY3LAorICAxNTk3LCAxNjI4LCAxNjYwLCAxNjkyLCAxNzI1LCAxNzU5LCAxNzkzLCAxODI4LAorfTsKKworc3RhdGljIGNvbnN0IGludDE2X3QgYWNfcWxvb2t1cF8xMFtRSU5ERVhfUkFOR0VdID0geworICA0LCA5LCAxMSwgMTMsIDE2LCAxOCwgMjEsIDI0LAorICAyNywgMzAsIDMzLCAzNywgNDAsIDQ0LCA0OCwgNTEsCisgIDU1LCA1OSwgNjMsIDY3LCA3MSwgNzUsIDc5LCA4MywKKyAgODgsIDkyLCA5NiwgMTAwLCAxMDUsIDEwOSwgMTE0LCAxMTgsCisgIDEyMiwgMTI3LCAxMzEsIDEzNiwgMTQwLCAxNDUsIDE0OSwgMTU0LAorICAxNTgsIDE2MywgMTY4LCAxNzIsIDE3NywgMTgxLCAxODYsIDE5MCwKKyAgMTk1LCAxOTksIDIwNCwgMjA4LCAyMTMsIDIxNywgMjIyLCAyMjYsCisgIDIzMSwgMjM1LCAyNDAsIDI0NCwgMjQ5LCAyNTMsIDI1OCwgMjYyLAorICAyNjcsIDI3MSwgMjc1LCAyODAsIDI4NCwgMjg5LCAyOTMsIDI5NywKKyAgMzAyLCAzMDYsIDMxMSwgMzE1LCAzMTksIDMyNCwgMzI4LCAzMzIsCisgIDMzNywgMzQxLCAzNDUsIDM0OSwgMzU0LCAzNTgsIDM2MiwgMzY3LAorICAzNzEsIDM3NSwgMzc5LCAzODQsIDM4OCwgMzkyLCAzOTYsIDQwMSwKKyAgNDA5LCA0MTcsIDQyNSwgNDMzLCA0NDEsIDQ0OSwgNDU4LCA0NjYsCisgIDQ3NCwgNDgyLCA0OTAsIDQ5OCwgNTA2LCA1MTQsIDUyMywgNTMxLAorICA1MzksIDU0NywgNTU1LCA1NjMsIDU3MSwgNTc5LCA1ODgsIDU5NiwKKyAgNjA0LCA2MTYsIDYyOCwgNjQwLCA2NTIsIDY2NCwgNjc2LCA2ODgsCisgIDcwMCwgNzEzLCA3MjUsIDczNywgNzQ5LCA3NjEsIDc3MywgNzg1LAorICA3OTcsIDgwOSwgODI1LCA4NDEsIDg1NywgODczLCA4ODksIDkwNSwKKyAgOTIyLCA5MzgsIDk1NCwgOTcwLCA5ODYsIDEwMDIsIDEwMTgsIDEwMzgsCisgIDEwNTgsIDEwNzgsIDEwOTgsIDExMTgsIDExMzgsIDExNTgsIDExNzgsIDExOTgsCisgIDEyMTgsIDEyNDIsIDEyNjYsIDEyOTAsIDEzMTQsIDEzMzgsIDEzNjIsIDEzODYsCisgIDE0MTEsIDE0MzUsIDE0NjMsIDE0OTEsIDE1MTksIDE1NDcsIDE1NzUsIDE2MDMsCisgIDE2MzEsIDE2NjMsIDE2OTUsIDE3MjcsIDE3NTksIDE3OTEsIDE4MjMsIDE4NTksCisgIDE4OTUsIDE5MzEsIDE5NjcsIDIwMDMsIDIwMzksIDIwNzksIDIxMTksIDIxNTksCisgIDIxOTksIDIyMzksIDIyODMsIDIzMjcsIDIzNzEsIDI0MTUsIDI0NTksIDI1MDcsCisgIDI1NTUsIDI2MDMsIDI2NTEsIDI3MDMsIDI3NTUsIDI4MDcsIDI4NTksIDI5MTUsCisgIDI5NzEsIDMwMjcsIDMwODMsIDMxNDMsIDMyMDMsIDMyNjMsIDMzMjcsIDMzOTEsCisgIDM0NTUsIDM1MjMsIDM1OTEsIDM2NTksIDM3MzEsIDM4MDMsIDM4NzYsIDM5NTIsCisgIDQwMjgsIDQxMDQsIDQxODQsIDQyNjQsIDQzNDgsIDQ0MzIsIDQ1MTYsIDQ2MDQsCisgIDQ2OTIsIDQ3ODQsIDQ4NzYsIDQ5NzIsIDUwNjgsIDUxNjgsIDUyNjgsIDUzNzIsCisgIDU0NzYsIDU1ODQsIDU2OTIsIDU4MDQsIDU5MTYsIDYwMzIsIDYxNDgsIDYyNjgsCisgIDYzODgsIDY1MTIsIDY2NDAsIDY3NjgsIDY5MDAsIDcwMzYsIDcxNzIsIDczMTIsCit9OworCitzdGF0aWMgY29uc3QgaW50MTZfdCBhY19xbG9va3VwXzEyW1FJTkRFWF9SQU5HRV0gPSB7CisgIDQsIDEzLCAxOSwgMjcsIDM1LCA0NCwgNTQsIDY0LAorICA3NSwgODcsIDk5LCAxMTIsIDEyNiwgMTM5LCAxNTQsIDE2OCwKKyAgMTgzLCAxOTksIDIxNCwgMjMwLCAyNDcsIDI2MywgMjgwLCAyOTcsCisgIDMxNCwgMzMxLCAzNDksIDM2NiwgMzg0LCA0MDIsIDQyMCwgNDM4LAorICA0NTYsIDQ3NSwgNDkzLCA1MTEsIDUzMCwgNTQ4LCA1NjcsIDU4NiwKKyAgNjA0LCA2MjMsIDY0MiwgNjYwLCA2NzksIDY5OCwgNzE2LCA3MzUsCisgIDc1MywgNzcyLCA3OTEsIDgwOSwgODI4LCA4NDYsIDg2NSwgODg0LAorICA5MDIsIDkyMCwgOTM5LCA5NTcsIDk3NiwgOTk0LCAxMDEyLCAxMDMwLAorICAxMDQ5LCAxMDY3LCAxMDg1LCAxMTAzLCAxMTIxLCAxMTM5LCAxMTU3LCAxMTc1LAorICAxMTkzLCAxMjExLCAxMjI5LCAxMjQ2LCAxMjY0LCAxMjgyLCAxMjk5LCAxMzE3LAorICAxMzM1LCAxMzUyLCAxMzcwLCAxMzg3LCAxNDA1LCAxNDIyLCAxNDQwLCAxNDU3LAorICAxNDc0LCAxNDkxLCAxNTA5LCAxNTI2LCAxNTQzLCAxNTYwLCAxNTc3LCAxNTk1LAorICAxNjI3LCAxNjYwLCAxNjkzLCAxNzI1LCAxNzU4LCAxNzkxLCAxODI0LCAxODU2LAorICAxODg5LCAxOTIyLCAxOTU0LCAxOTg3LCAyMDIwLCAyMDUyLCAyMDg1LCAyMTE4LAorICAyMTUwLCAyMTgzLCAyMjE2LCAyMjQ4LCAyMjgxLCAyMzEzLCAyMzQ2LCAyMzc4LAorICAyNDExLCAyNDU5LCAyNTA4LCAyNTU2LCAyNjA1LCAyNjUzLCAyNzAxLCAyNzUwLAorICAyNzk4LCAyODQ3LCAyODk1LCAyOTQzLCAyOTkyLCAzMDQwLCAzMDg4LCAzMTM3LAorICAzMTg1LCAzMjM0LCAzMjk4LCAzMzYyLCAzNDI2LCAzNDkxLCAzNTU1LCAzNjE5LAorICAzNjg0LCAzNzQ4LCAzODEyLCAzODc2LCAzOTQxLCA0MDA1LCA0MDY5LCA0MTQ5LAorICA0MjMwLCA0MzEwLCA0MzkwLCA0NDcwLCA0NTUwLCA0NjMxLCA0NzExLCA0NzkxLAorICA0ODcxLCA0OTY3LCA1MDY0LCA1MTYwLCA1MjU2LCA1MzUyLCA1NDQ4LCA1NTQ0LAorICA1NjQxLCA1NzM3LCA1ODQ5LCA1OTYxLCA2MDczLCA2MTg1LCA2Mjk3LCA2NDEwLAorICA2NTIyLCA2NjUwLCA2Nzc4LCA2OTA2LCA3MDM0LCA3MTYyLCA3MjkwLCA3NDM1LAorICA3NTc5LCA3NzIzLCA3ODY3LCA4MDExLCA4MTU1LCA4MzE1LCA4NDc1LCA4NjM1LAorICA4Nzk1LCA4OTU2LCA5MTMyLCA5MzA4LCA5NDg0LCA5NjYwLCA5ODM2LCAxMDAyOCwKKyAgMTAyMjAsIDEwNDEyLCAxMDYwNCwgMTA4MTIsIDExMDIwLCAxMTIyOCwgMTE0MzcsIDExNjYxLAorICAxMTg4NSwgMTIxMDksIDEyMzMzLCAxMjU3MywgMTI4MTMsIDEzMDUzLCAxMzMwOSwgMTM1NjUsCisgIDEzODIxLCAxNDA5MywgMTQzNjUsIDE0NjM3LCAxNDkyNSwgMTUyMTMsIDE1NTAyLCAxNTgwNiwKKyAgMTYxMTAsIDE2NDE0LCAxNjczNCwgMTcwNTQsIDE3MzkwLCAxNzcyNiwgMTgwNjIsIDE4NDE0LAorICAxODc2NiwgMTkxMzQsIDE5NTAyLCAxOTg4NiwgMjAyNzAsIDIwNjcwLCAyMTA3MCwgMjE0ODYsCisgIDIxOTAyLCAyMjMzNCwgMjI3NjYsIDIzMjE0LCAyMzY2MiwgMjQxMjYsIDI0NTkwLCAyNTA3MCwKKyAgMjU1NTEsIDI2MDQ3LCAyNjU1OSwgMjcwNzEsIDI3NTk5LCAyODE0MywgMjg2ODcsIDI5MjQ3LAorfTsKKworc3RhdGljIGludAorY2xhbXAgKGludCB2YWx1ZSwgaW50IGxvdywgaW50IGhpZ2gpCit7CisgIHJldHVybiB2YWx1ZSA8IGxvdyA/IGxvdyA6ICh2YWx1ZSA+IGhpZ2ggPyBoaWdoIDogdmFsdWUpOworfQorCitpbnQxNl90Citnc3RfdnA5X2RjX3F1YW50IChpbnQgcWluZGV4LCBpbnQgZGVsdGEsIGludCBiaXRfZGVwdGgpCit7CisgIGNvbnN0IHVpbnQ4X3QgcV90YWJsZV9pZHggPSBjbGFtcCAocWluZGV4ICsgZGVsdGEsIDAsIE1BWFEpOworCisgIHN3aXRjaCAoYml0X2RlcHRoKSB7CisgICAgY2FzZSA4OgorICAgICAgcmV0dXJuIGRjX3Fsb29rdXBbcV90YWJsZV9pZHhdOworICAgIGNhc2UgMTA6CisgICAgICByZXR1cm4gZGNfcWxvb2t1cF8xMFtxX3RhYmxlX2lkeF07CisgICAgY2FzZSAxMjoKKyAgICAgIHJldHVybiBkY19xbG9va3VwXzEyW3FfdGFibGVfaWR4XTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIC0xOworICB9CisgIHJldHVybiAtMTsKK30KKworaW50MTZfdAorZ3N0X3ZwOV9hY19xdWFudCAoaW50IHFpbmRleCwgaW50IGRlbHRhLCBpbnQgYml0X2RlcHRoKQoreworICBjb25zdCB1aW50OF90IHFfdGFibGVfaWR4ID0gY2xhbXAgKHFpbmRleCArIGRlbHRhLCAwLCBNQVhRKTsKKworICBzd2l0Y2ggKGJpdF9kZXB0aCkgeworICAgIGNhc2UgODoKKyAgICAgIHJldHVybiBhY19xbG9va3VwW3FfdGFibGVfaWR4XTsKKyAgICBjYXNlIDEwOgorICAgICAgcmV0dXJuIGFjX3Fsb29rdXBfMTBbcV90YWJsZV9pZHhdOworICAgIGNhc2UgMTI6CisgICAgICByZXR1cm4gYWNfcWxvb2t1cF8xMltxX3RhYmxlX2lkeF07CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAtMTsKKyAgfQorICByZXR1cm4gLTE7Cit9CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL3ZwOXV0aWxzLmggYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL3ZwOXV0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y4MjQwYgotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogIENvcHlyaWdodCAoYykgMjAxMCBUaGUgV2ViTSBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorICogICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgICBkaXN0cmlidXRpb24uCisgKgorICogICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlLCBub3IgdGhlIFdlYk0gUHJvamVjdCwgbm9yIHRoZSBuYW1lcworICogICAgIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisgKiAgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuCisgKiAgICAgcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gKgorICovCisKKyNpZm5kZWYgX19WUDlfUVVBTlRfSF9fCisjZGVmaW5lIF9fVlA5X1FVQU5UX0hfXworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorCisjZGVmaW5lIE1BWFEgMjU1CisjZGVmaW5lIFFJTkRFWF9SQU5HRSAyNTYKKyNkZWZpbmUgUUlOREVYX0JJVFMgOAorCitHX0dOVUNfSU5URVJOQUwKK2ludDE2X3QgZ3N0X3ZwOV9kY19xdWFudChpbnQgcWluZGV4LCBpbnQgZGVsdGEsIGludCBiaXRfZGVwdGgpOworCitHX0dOVUNfSU5URVJOQUwKK2ludDE2X3QgZ3N0X3ZwOV9hY19xdWFudChpbnQgcWluZGV4LCBpbnQgZGVsdGEsIGludCBiaXRfZGVwdGgpOworCisKKyNlbmRpZiAvL19fVlA5X1FVQU5UX0hfXwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCmluZGV4IGY5NjgzNTcuLmYxY2I5ZTEgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQorKysgYi9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KQEAgLTQsMjQgKzQsMjYgQEAKIFNVQkRJUlMgPSBnbHByb3RvdHlwZXMKIERJU1RfU1VCRElSUyA9IGdscHJvdG90eXBlcyBhbmRyb2lkIHgxMSB3aW4zMiBjb2NvYSB3YXlsYW5kIGRpc3BtYW54IGVnbCBlYWdsCiAKLW5vaW5zdF9IRUFERVJTID0KLQogYnVpbHRfc3lzX2hlYWRlcl9jb25maWd1cmUgPSBnc3RnbGNvbmZpZy5oCiAKIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX1NPVVJDRVMgPSBcCiAJZ3N0Z2xkaXNwbGF5LmMgXAogCWdzdGdsY29udGV4dC5jIFwKLQlnc3RnbGJhc2VidWZmZXIuYyBcCisJZ3N0Z2xkZWJ1Zy5jIFwKKwlnc3RnbGJhc2VtZW1vcnkuYyBcCisJZ3N0Z2xidWZmZXIuYyBcCiAJZ3N0Z2xtZW1vcnkuYyBcCisJZ3N0Z2xtZW1vcnlwYm8uYyBcCiAJZ3N0Z2xidWZmZXJwb29sLmMgXAogCWdzdGdsZmlsdGVyLmMgXAorCWdzdGdsZm9ybWF0LmMgXAogCWdzdGdsYmFzZWZpbHRlci5jIFwKIAlnc3RnbHNoYWRlci5jIFwKLQlnc3RnbHNoYWRlcnZhcmlhYmxlcy5jIFwKKwlnc3RnbHNoYWRlcnN0cmluZ3MuYyBcCisJZ3N0Z2xzbC5jIFwKKwlnc3RnbHNsc3RhZ2UuYyBcCiAJZ3N0Z2xjb2xvcmNvbnZlcnQuYyBcCi0JZ3N0Z2xkb3dubG9hZC5jIFwKIAlnc3RnbHVwbG9hZC5jIFwKLQlnc3RnbHVwbG9hZG1ldGEuYyBcCiAJZ3N0Z2x3aW5kb3cuYyBcCiAJZ3N0Z2xhcGkuYyBcCiAJZ3N0Z2xmZWF0dXJlLmMgXApAQCAtMzAsMjMgKzMyLDI4IEBACiAJZ3N0Z2xzeW5jbWV0YS5jIFwKIAlnc3RnbHZpZXdjb252ZXJ0LmMgXAogCWdzdGdsb3ZlcmxheWNvbXBvc2l0b3IuYyBcCi0JdXRpbHMvb3BlbmdsX3ZlcnNpb25zLmgKKwlnc3RnbHF1ZXJ5LmMgXAorCWdzdGdsY29udHJvbGJpbmRpbmdwcm94eS5jCiAKIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2dzdC9nbAogbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMgPSBcCiAJZ3N0Z2x3aW5kb3cuaCBcCiAJZ3N0Z2xkaXNwbGF5LmggXAogCWdzdGdsY29udGV4dC5oIFwKLQlnc3RnbGJhc2VidWZmZXIuaCBcCisJZ3N0Z2xkZWJ1Zy5oIFwKKwlnc3RnbGJhc2VtZW1vcnkuaCBcCisJZ3N0Z2xidWZmZXIuaCBcCiAJZ3N0Z2xtZW1vcnkuaCBcCisJZ3N0Z2xtZW1vcnlwYm8uaCBcCiAJZ3N0Z2xidWZmZXJwb29sLmggXAogCWdzdGdsZmlsdGVyLmggXAorCWdzdGdsZm9ybWF0LmggXAogCWdzdGdsYmFzZWZpbHRlci5oIFwKLQlnc3RnbHNoYWRlcnZhcmlhYmxlcy5oIFwKIAlnc3RnbHNoYWRlci5oIFwKKwlnc3RnbHNoYWRlcnN0cmluZ3MuaCBcCisJZ3N0Z2xzbC5oIFwKKwlnc3RnbHNsc3RhZ2UuaCBcCiAJZ3N0Z2xjb2xvcmNvbnZlcnQuaCBcCi0JZ3N0Z2xkb3dubG9hZC5oIFwKLQlnc3RnbHVwbG9hZG1ldGEuaCBcCiAJZ3N0Z2x1cGxvYWQuaCBcCiAJZ3N0Z2xhcGkuaCBcCiAJZ3N0Z2xmZWF0dXJlLmggXApAQCAtNTUsOSArNjIsMTggQEAKIAlnc3RnbHN5bmNtZXRhLmggXAogCWdzdGdsdmlld2NvbnZlcnQuaCBcCiAJZ3N0Z2xvdmVybGF5Y29tcG9zaXRvci5oIFwKKwlnc3RnbHF1ZXJ5LmggXAorCWdzdGdsY29udHJvbGJpbmRpbmdwcm94eS5oIFwKIAlnc3RnbF9md2QuaCBcCisJZ3N0Z2xfZW51bXMuaCBcCiAJZ2wuaAogCitub2luc3RfSEVBREVSUyA9IFwKKwlnc3RnbHNsX3ByaXZhdGUuaCBcCisJdXRpbHMvb3BlbmdsX3ZlcnNpb25zLmggXAorCXV0aWxzL2dsZXNfdmVyc2lvbnMuaAorCisKIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJQkFERCA9IFwKIAkkKEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMpIFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXApAQCAtMTA0LDYgKzEyMCw3IEBACiBpZiBVU0VfRUdMCiBTVUJESVJTICs9IGVnbAogbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfTElCQUREICs9IGVnbC9saWJnc3RnbC1lZ2wubGEKK2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJQkFERCArPSAtbGdzdGFsbG9jYXRvcnMtJChHU1RfQVBJX1ZFUlNJT04pCiBlbmRpZgogCiBjb25maWdleGVjaW5jbHVkZWRpciA9ICQobGliZGlyKS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvaW5jbHVkZS9nc3QvZ2wKQEAgLTEzNyw3ICsxNTQsOCBAQAogCQlHU1RfUExVR0lOX1NZU1RFTV9QQVRIXzFfMD0iIiBHU1RfUExVR0lOX1BBVEhfMV8wPSIiIEdTVF9SRUdJU1RSWV9VUERBVEU9bm8gXAogCQkkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgLXYgLS1uYW1lc3BhY2UgR3N0R0wgXAogCQktLW5zdmVyc2lvbj1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JCS0tc3RyaXAtcHJlZml4PUdzdCBcCisJCS0taWRlbnRpZmllci1wcmVmaXg9R3N0IFwKKwkJLS1zeW1ib2wtcHJlZml4PWdzdCBcCiAJCS0td2Fybi1hbGwgXAogCQktLWMtaW5jbHVkZSAiZ3N0L2dsL2dsLmgiIFwKIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKQEAgLTE1NCw3ICsxNzIsNyBAQAogCQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiAJCS0tcGtnIGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCiAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItZ2wtQEdTVF9BUElfVkVSU0lPTkAgXAotCQktLWFkZC1pbml0LXNlY3Rpb249ImdzdF9pbml0KE5VTEwsTlVMTCk7IiBcCisJCS0tYWRkLWluaXQtc2VjdGlvbj0iJChJTlRST1NQRUNUSU9OX0lOSVQpIiBcCiAJCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAogCQktLW91dHB1dCAkQCBcCiAJCSQoZ2lyX2hlYWRlcnMpIFwKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5pbgppbmRleCA3NWRmNTE4Li40MmU3OTVmIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmluCkBAIC0xMDYsNyArMTA2LDggQEAKIEBIQVZFX1dJTkRPV19FQUdMX1RSVUVAYW1fX2FwcGVuZF8xMyA9IGVhZ2wKIEBIQVZFX1dJTkRPV19FQUdMX1RSVUVAYW1fX2FwcGVuZF8xNCA9IGVhZ2wvbGliZ3N0Z2wtZWFnbC5sYQogQFVTRV9FR0xfVFJVRUBhbV9fYXBwZW5kXzE1ID0gZWdsCi1AVVNFX0VHTF9UUlVFQGFtX19hcHBlbmRfMTYgPSBlZ2wvbGliZ3N0Z2wtZWdsLmxhCitAVVNFX0VHTF9UUlVFQGFtX19hcHBlbmRfMTYgPSBlZ2wvbGliZ3N0Z2wtZWdsLmxhIFwKK0BVU0VfRUdMX1RSVUVACS1sZ3N0YWxsb2NhdG9ycy0kKEdTVF9BUElfVkVSU0lPTikKIHN1YmRpciA9IGdzdC1saWJzL2dzdC9nbAogQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAogYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWFjLWV4cGFuZC5tNCBcCkBAIC0xMzMsMTYgKzEzNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtIFwKQEAgLTE4NSwyNiArMTg1LDMxIEBACiAJIiQoREVTVERJUikkKGNvbmZpZ2V4ZWNpbmNsdWRlZGlyKSIKIExUTElCUkFSSUVTID0gJChsaWJfTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQorQFVTRV9FR0xfVFJVRUBhbV9fREVQRU5ERU5DSUVTXzIgPSBlZ2wvbGliZ3N0Z2wtZWdsLmxhCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fYXBwZW5kXzIpIFwKIAkkKGFtX19hcHBlbmRfNCkgJChhbV9fYXBwZW5kXzYpICQoYW1fX2FwcGVuZF84KSBcCiAJJChhbV9fYXBwZW5kXzEwKSAkKGFtX19hcHBlbmRfMTIpICQoYW1fX2FwcGVuZF8xNCkgXAotCSQoYW1fX2FwcGVuZF8xNikKKwkkKGFtX19ERVBFTkRFTkNJRVNfMikKIGFtX2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMgPSAgXAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZGlzcGxheS5sbyBcCiAJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb250ZXh0LmxvIFwKLQlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VidWZmZXIubG8gXAorCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZGVidWcubG8gXAorCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZW1lbW9yeS5sbyBcCisJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xidWZmZXIubG8gXAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5LmxvIFwKKwlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeXBiby5sbyBcCiAJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xidWZmZXJwb29sLmxvIFwKIAlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGZpbHRlci5sbyBcCisJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmb3JtYXQubG8gXAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZWZpbHRlci5sbyBcCiAJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXIubG8gXAotCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVydmFyaWFibGVzLmxvIFwKKwlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnN0cmluZ3MubG8gXAorCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2wubG8gXAorCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2xzdGFnZS5sbyBcCiAJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb2xvcmNvbnZlcnQubG8gXAotCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZG93bmxvYWQubG8gXAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXBsb2FkLmxvIFwKLQlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZG1ldGEubG8gXAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsd2luZG93LmxvIFwKIAlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGFwaS5sbyBcCiAJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmZWF0dXJlLmxvIFwKQEAgLTIxMiw3ICsyMTcsOSBAQAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZnJhbWVidWZmZXIubG8gXAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc3luY21ldGEubG8gXAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdmlld2NvbnZlcnQubG8gXAotCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsb3ZlcmxheWNvbXBvc2l0b3IubG8KKwlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG92ZXJsYXljb21wb3NpdG9yLmxvIFwKKwlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHF1ZXJ5LmxvIFwKKwlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkubG8KIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMgPSAgXAogCSQoYW1fbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKQEAgLTM2NCw2ICszNzEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTQwMSw2ICs0MTAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTQwOSw3ICs0MjAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC00MjgsOCArNDM4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTQ0NiwxNiArNDU3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQ4MSw2ICs0OTMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC01MDYsNiArNTIwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNjA3LDYgKzYyMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC02MjAsOCArNjM3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNjM3LDYgKzY1Miw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02OTQsMTYgKzcxMSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTc1NSw2ICs3NzQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNzY1LDYgKzc4NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTc3NCw2ICs3OTUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtODExLDcgKzgzNCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtODU2LDIyICs4NzgsMjUgQEAKIAkkKGFtX19hcHBlbmRfNykgJChhbV9fYXBwZW5kXzkpICQoYW1fX2FwcGVuZF8xMSkgXAogCSQoYW1fX2FwcGVuZF8xMykgJChhbV9fYXBwZW5kXzE1KQogRElTVF9TVUJESVJTID0gZ2xwcm90b3R5cGVzIGFuZHJvaWQgeDExIHdpbjMyIGNvY29hIHdheWxhbmQgZGlzcG1hbnggZWdsIGVhZ2wKLW5vaW5zdF9IRUFERVJTID0gCiBidWlsdF9zeXNfaGVhZGVyX2NvbmZpZ3VyZSA9IGdzdGdsY29uZmlnLmgKIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX1NPVVJDRVMgPSBcCiAJZ3N0Z2xkaXNwbGF5LmMgXAogCWdzdGdsY29udGV4dC5jIFwKLQlnc3RnbGJhc2VidWZmZXIuYyBcCisJZ3N0Z2xkZWJ1Zy5jIFwKKwlnc3RnbGJhc2VtZW1vcnkuYyBcCisJZ3N0Z2xidWZmZXIuYyBcCiAJZ3N0Z2xtZW1vcnkuYyBcCisJZ3N0Z2xtZW1vcnlwYm8uYyBcCiAJZ3N0Z2xidWZmZXJwb29sLmMgXAogCWdzdGdsZmlsdGVyLmMgXAorCWdzdGdsZm9ybWF0LmMgXAogCWdzdGdsYmFzZWZpbHRlci5jIFwKIAlnc3RnbHNoYWRlci5jIFwKLQlnc3RnbHNoYWRlcnZhcmlhYmxlcy5jIFwKKwlnc3RnbHNoYWRlcnN0cmluZ3MuYyBcCisJZ3N0Z2xzbC5jIFwKKwlnc3RnbHNsc3RhZ2UuYyBcCiAJZ3N0Z2xjb2xvcmNvbnZlcnQuYyBcCi0JZ3N0Z2xkb3dubG9hZC5jIFwKIAlnc3RnbHVwbG9hZC5jIFwKLQlnc3RnbHVwbG9hZG1ldGEuYyBcCiAJZ3N0Z2x3aW5kb3cuYyBcCiAJZ3N0Z2xhcGkuYyBcCiAJZ3N0Z2xmZWF0dXJlLmMgXApAQCAtODgwLDIzICs5MDUsMjggQEAKIAlnc3RnbHN5bmNtZXRhLmMgXAogCWdzdGdsdmlld2NvbnZlcnQuYyBcCiAJZ3N0Z2xvdmVybGF5Y29tcG9zaXRvci5jIFwKLQl1dGlscy9vcGVuZ2xfdmVyc2lvbnMuaAorCWdzdGdscXVlcnkuYyBcCisJZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmMKIAogbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvZ3N0L2dsCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUyA9IFwKIAlnc3RnbHdpbmRvdy5oIFwKIAlnc3RnbGRpc3BsYXkuaCBcCiAJZ3N0Z2xjb250ZXh0LmggXAotCWdzdGdsYmFzZWJ1ZmZlci5oIFwKKwlnc3RnbGRlYnVnLmggXAorCWdzdGdsYmFzZW1lbW9yeS5oIFwKKwlnc3RnbGJ1ZmZlci5oIFwKIAlnc3RnbG1lbW9yeS5oIFwKKwlnc3RnbG1lbW9yeXBiby5oIFwKIAlnc3RnbGJ1ZmZlcnBvb2wuaCBcCiAJZ3N0Z2xmaWx0ZXIuaCBcCisJZ3N0Z2xmb3JtYXQuaCBcCiAJZ3N0Z2xiYXNlZmlsdGVyLmggXAotCWdzdGdsc2hhZGVydmFyaWFibGVzLmggXAogCWdzdGdsc2hhZGVyLmggXAorCWdzdGdsc2hhZGVyc3RyaW5ncy5oIFwKKwlnc3RnbHNsLmggXAorCWdzdGdsc2xzdGFnZS5oIFwKIAlnc3RnbGNvbG9yY29udmVydC5oIFwKLQlnc3RnbGRvd25sb2FkLmggXAotCWdzdGdsdXBsb2FkbWV0YS5oIFwKIAlnc3RnbHVwbG9hZC5oIFwKIAlnc3RnbGFwaS5oIFwKIAlnc3RnbGZlYXR1cmUuaCBcCkBAIC05MDUsOSArOTM1LDE3IEBACiAJZ3N0Z2xzeW5jbWV0YS5oIFwKIAlnc3RnbHZpZXdjb252ZXJ0LmggXAogCWdzdGdsb3ZlcmxheWNvbXBvc2l0b3IuaCBcCisJZ3N0Z2xxdWVyeS5oIFwKKwlnc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuaCBcCiAJZ3N0Z2xfZndkLmggXAorCWdzdGdsX2VudW1zLmggXAogCWdsLmgKIAorbm9pbnN0X0hFQURFUlMgPSBcCisJZ3N0Z2xzbF9wcml2YXRlLmggXAorCXV0aWxzL29wZW5nbF92ZXJzaW9ucy5oIFwKKwl1dGlscy9nbGVzX3ZlcnNpb25zLmgKKwogbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfTElCQUREID0gJChHTU9EVUxFX05PX0VYUE9SVF9MSUJTKSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKIAkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoR0xfTElCUykgJChhbV9fYXBwZW5kXzIpIFwKQEAgLTEwMjMsMjMgKzEwNjEsMjkgQEAKIAktcm0gLWYgKi50YWIuYwogCiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xhcGkuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VidWZmZXIuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VmaWx0ZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VtZW1vcnkuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlci5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYnVmZmVycG9vbC5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29sb3Jjb252ZXJ0LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb250ZXh0LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkZWJ1Zy5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZGlzcGxheS5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZG93bmxvYWQuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGZlYXR1cmUuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGZpbHRlci5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZm9ybWF0LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmcmFtZWJ1ZmZlci5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xtZW1vcnlwYm8uUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG92ZXJsYXljb21wb3NpdG9yLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xxdWVyeS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVyLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnN0cmluZ3MuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzbHN0YWdlLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzeW5jbWV0YS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXBsb2FkLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1cGxvYWRtZXRhLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1dGlscy5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdmlld2NvbnZlcnQuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHdpbmRvdy5QbG9AYW1fX3F1b3RlQApAQCAtMTA4MiwxMiArMTEyNiwyNiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29udGV4dC5sbyBgdGVzdCAtZiAnZ3N0Z2xjb250ZXh0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsY29udGV4dC5jCiAKLWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZWJ1ZmZlci5sbzogZ3N0Z2xiYXNlYnVmZmVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlYnVmZmVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VidWZmZXIuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZWJ1ZmZlci5sbyBgdGVzdCAtZiAnZ3N0Z2xiYXNlYnVmZmVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsYmFzZWJ1ZmZlci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VidWZmZXIuVHBvICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VidWZmZXIuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2xiYXNlYnVmZmVyLmMnIG9iamVjdD0nbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlYnVmZmVyLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRlYnVnLmxvOiBnc3RnbGRlYnVnLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkZWJ1Zy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkZWJ1Zy5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkZWJ1Zy5sbyBgdGVzdCAtZiAnZ3N0Z2xkZWJ1Zy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGRlYnVnLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZGVidWcuVHBvICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRlYnVnLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsZGVidWcuYycgb2JqZWN0PSdsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRlYnVnLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlYnVmZmVyLmxvIGB0ZXN0IC1mICdnc3RnbGJhc2VidWZmZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xiYXNlYnVmZmVyLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRlYnVnLmxvIGB0ZXN0IC1mICdnc3RnbGRlYnVnLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZGVidWcuYworCitsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VtZW1vcnkubG86IGdzdGdsYmFzZW1lbW9yeS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZW1lbW9yeS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlbWVtb3J5LlRwbyAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VtZW1vcnkubG8gYHRlc3QgLWYgJ2dzdGdsYmFzZW1lbW9yeS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGJhc2VtZW1vcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlbWVtb3J5LlRwbyAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlbWVtb3J5LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsYmFzZW1lbW9yeS5jJyBvYmplY3Q9J2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZW1lbW9yeS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZW1lbW9yeS5sbyBgdGVzdCAtZiAnZ3N0Z2xiYXNlbWVtb3J5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsYmFzZW1lbW9yeS5jCisKK2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYnVmZmVyLmxvOiBnc3RnbGJ1ZmZlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYnVmZmVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlci5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xidWZmZXIubG8gYHRlc3QgLWYgJ2dzdGdsYnVmZmVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsYnVmZmVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYnVmZmVyLlRwbyAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xidWZmZXIuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2xidWZmZXIuYycgb2JqZWN0PSdsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYnVmZmVyLmxvIGB0ZXN0IC1mICdnc3RnbGJ1ZmZlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGJ1ZmZlci5jCiAKIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5LmxvOiBnc3RnbG1lbW9yeS5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeS5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xtZW1vcnkubG8gYHRlc3QgLWYgJ2dzdGdsbWVtb3J5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsbWVtb3J5LmMKQEAgLTEwOTYsNiArMTE1NCwxMyBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5LmxvIGB0ZXN0IC1mICdnc3RnbG1lbW9yeS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbG1lbW9yeS5jCiAKK2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5cGJvLmxvOiBnc3RnbG1lbW9yeXBiby5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5cGJvLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeXBiby5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xtZW1vcnlwYm8ubG8gYHRlc3QgLWYgJ2dzdGdsbWVtb3J5cGJvLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsbWVtb3J5cGJvLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5cGJvLlRwbyAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xtZW1vcnlwYm8uUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2xtZW1vcnlwYm8uYycgb2JqZWN0PSdsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeXBiby5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5cGJvLmxvIGB0ZXN0IC1mICdnc3RnbG1lbW9yeXBiby5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbG1lbW9yeXBiby5jCisKIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYnVmZmVycG9vbC5sbzogZ3N0Z2xidWZmZXJwb29sLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xidWZmZXJwb29sLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlcnBvb2wuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYnVmZmVycG9vbC5sbyBgdGVzdCAtZiAnZ3N0Z2xidWZmZXJwb29sLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsYnVmZmVycG9vbC5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlcnBvb2wuVHBvICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlcnBvb2wuUGxvCkBAIC0xMTEwLDYgKzExNzUsMTMgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGZpbHRlci5sbyBgdGVzdCAtZiAnZ3N0Z2xmaWx0ZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xmaWx0ZXIuYwogCitsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGZvcm1hdC5sbzogZ3N0Z2xmb3JtYXQuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGZvcm1hdC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmb3JtYXQuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZm9ybWF0LmxvIGB0ZXN0IC1mICdnc3RnbGZvcm1hdC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGZvcm1hdC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGZvcm1hdC5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZm9ybWF0LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsZm9ybWF0LmMnIG9iamVjdD0nbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmb3JtYXQubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGZvcm1hdC5sbyBgdGVzdCAtZiAnZ3N0Z2xmb3JtYXQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xmb3JtYXQuYworCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VmaWx0ZXIubG86IGdzdGdsYmFzZWZpbHRlci5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZWZpbHRlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlZmlsdGVyLlRwbyAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VmaWx0ZXIubG8gYHRlc3QgLWYgJ2dzdGdsYmFzZWZpbHRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGJhc2VmaWx0ZXIuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlZmlsdGVyLlRwbyAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlZmlsdGVyLlBsbwpAQCAtMTEyNCwxMiArMTE5NiwyNiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVyLmxvIGB0ZXN0IC1mICdnc3RnbHNoYWRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHNoYWRlci5jCiAKLWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVydmFyaWFibGVzLmxvOiBnc3RnbHNoYWRlcnZhcmlhYmxlcy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVydmFyaWFibGVzLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnZhcmlhYmxlcy5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMubG8gYHRlc3QgLWYgJ2dzdGdsc2hhZGVydmFyaWFibGVzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsc2hhZGVydmFyaWFibGVzLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVydmFyaWFibGVzLlRwbyAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuYycgb2JqZWN0PSdsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnZhcmlhYmxlcy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXJzdHJpbmdzLmxvOiBnc3RnbHNoYWRlcnN0cmluZ3MuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnN0cmluZ3MubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVyc3RyaW5ncy5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXJzdHJpbmdzLmxvIGB0ZXN0IC1mICdnc3RnbHNoYWRlcnN0cmluZ3MuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xzaGFkZXJzdHJpbmdzLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVyc3RyaW5ncy5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVyc3RyaW5ncy5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RnbHNoYWRlcnN0cmluZ3MuYycgb2JqZWN0PSdsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnN0cmluZ3MubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnZhcmlhYmxlcy5sbyBgdGVzdCAtZiAnZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVyc3RyaW5ncy5sbyBgdGVzdCAtZiAnZ3N0Z2xzaGFkZXJzdHJpbmdzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsc2hhZGVyc3RyaW5ncy5jCisKK2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2wubG86IGdzdGdsc2wuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsLlRwbyAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsLmxvIGB0ZXN0IC1mICdnc3RnbHNsLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsc2wuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzbC5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2wuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2xzbC5jJyBvYmplY3Q9J2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2wubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsLmxvIGB0ZXN0IC1mICdnc3RnbHNsLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsc2wuYworCitsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsc3RhZ2UubG86IGdzdGdsc2xzdGFnZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2xzdGFnZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzbHN0YWdlLlRwbyAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsc3RhZ2UubG8gYHRlc3QgLWYgJ2dzdGdsc2xzdGFnZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHNsc3RhZ2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzbHN0YWdlLlRwbyAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzbHN0YWdlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsc2xzdGFnZS5jJyBvYmplY3Q9J2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2xzdGFnZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2xzdGFnZS5sbyBgdGVzdCAtZiAnZ3N0Z2xzbHN0YWdlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsc2xzdGFnZS5jCiAKIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29sb3Jjb252ZXJ0LmxvOiBnc3RnbGNvbG9yY29udmVydC5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29sb3Jjb252ZXJ0LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGNvbG9yY29udmVydC5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb2xvcmNvbnZlcnQubG8gYHRlc3QgLWYgJ2dzdGdsY29sb3Jjb252ZXJ0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsY29sb3Jjb252ZXJ0LmMKQEAgLTExMzgsMTMgKzEyMjQsNiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29sb3Jjb252ZXJ0LmxvIGB0ZXN0IC1mICdnc3RnbGNvbG9yY29udmVydC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGNvbG9yY29udmVydC5jCiAKLWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZG93bmxvYWQubG86IGdzdGdsZG93bmxvYWQuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRvd25sb2FkLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRvd25sb2FkLlRwbyAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRvd25sb2FkLmxvIGB0ZXN0IC1mICdnc3RnbGRvd25sb2FkLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZG93bmxvYWQuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkb3dubG9hZC5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZG93bmxvYWQuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2xkb3dubG9hZC5jJyBvYmplY3Q9J2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZG93bmxvYWQubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRvd25sb2FkLmxvIGB0ZXN0IC1mICdnc3RnbGRvd25sb2FkLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZG93bmxvYWQuYwotCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZC5sbzogZ3N0Z2x1cGxvYWQuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1cGxvYWQuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXBsb2FkLmxvIGB0ZXN0IC1mICdnc3RnbHVwbG9hZC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHVwbG9hZC5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZC5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXBsb2FkLlBsbwpAQCAtMTE1MiwxMyArMTIzMSw2IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1cGxvYWQubG8gYHRlc3QgLWYgJ2dzdGdsdXBsb2FkLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsdXBsb2FkLmMKIAotbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1cGxvYWRtZXRhLmxvOiBnc3RnbHVwbG9hZG1ldGEuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZG1ldGEubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXBsb2FkbWV0YS5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1cGxvYWRtZXRhLmxvIGB0ZXN0IC1mICdnc3RnbHVwbG9hZG1ldGEuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2x1cGxvYWRtZXRhLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXBsb2FkbWV0YS5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXBsb2FkbWV0YS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RnbHVwbG9hZG1ldGEuYycgb2JqZWN0PSdsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZG1ldGEubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZG1ldGEubG8gYHRlc3QgLWYgJ2dzdGdsdXBsb2FkbWV0YS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHVwbG9hZG1ldGEuYwotCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHdpbmRvdy5sbzogZ3N0Z2x3aW5kb3cuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHdpbmRvdy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x3aW5kb3cuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsd2luZG93LmxvIGB0ZXN0IC1mICdnc3RnbHdpbmRvdy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHdpbmRvdy5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHdpbmRvdy5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsd2luZG93LlBsbwpAQCAtMTIxNSw2ICsxMjg3LDIwIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xvdmVybGF5Y29tcG9zaXRvci5sbyBgdGVzdCAtZiAnZ3N0Z2xvdmVybGF5Y29tcG9zaXRvci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbG92ZXJsYXljb21wb3NpdG9yLmMKIAorbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xxdWVyeS5sbzogZ3N0Z2xxdWVyeS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdscXVlcnkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdscXVlcnkuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdscXVlcnkubG8gYHRlc3QgLWYgJ2dzdGdscXVlcnkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xxdWVyeS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHF1ZXJ5LlRwbyAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xxdWVyeS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RnbHF1ZXJ5LmMnIG9iamVjdD0nbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xxdWVyeS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdscXVlcnkubG8gYHRlc3QgLWYgJ2dzdGdscXVlcnkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xxdWVyeS5jCisKK2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29udHJvbGJpbmRpbmdwcm94eS5sbzogZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29udHJvbGJpbmRpbmdwcm94eS5sbyBgdGVzdCAtZiAnZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsY29udHJvbGJpbmRpbmdwcm94eS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuVHBvICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmMnIG9iamVjdD0nbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmxvIGB0ZXN0IC1mICdnc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmMKKwogbW9zdGx5Y2xlYW4tbGlidG9vbDoKIAktcm0gLWYgKi5sbwogCkBAIC0xNjA3LDcgKzE2OTMsOCBAQAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzA9IiIgR1NUX1BMVUdJTl9QQVRIXzFfMD0iIiBHU1RfUkVHSVNUUllfVVBEQVRFPW5vIFwKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCSQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSAtdiAtLW5hbWVzcGFjZSBHc3RHTCBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLW5zdmVyc2lvbj1AR1NUX0FQSV9WRVJTSU9OQCBcCi1ASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXN0cmlwLXByZWZpeD1Hc3QgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1pZGVudGlmaWVyLXByZWZpeD1Hc3QgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1zeW1ib2wtcHJlZml4PWdzdCBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXdhcm4tYWxsIFwKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tYy1pbmNsdWRlICJnc3QvZ2wvZ2wuaCIgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKQEAgLTE2MjQsNyArMTcxMSw3IEBACiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXBrZyBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1nbC1AR1NUX0FQSV9WRVJTSU9OQCBcCi1ASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLWFkZC1pbml0LXNlY3Rpb249ImdzdF9pbml0KE5VTEwsTlVMTCk7IiBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLWFkZC1pbml0LXNlY3Rpb249IiQoSU5UUk9TUEVDVElPTl9JTklUKSIgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLW91dHB1dCAkQCBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQkkKGdpcl9oZWFkZXJzKSBcCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9nbC9hbmRyb2lkL01ha2VmaWxlLmluCmluZGV4IDJhZjBmMTAuLmU1ZTc4MjYgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9hbmRyb2lkL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC9nbC9hbmRyb2lkL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobGliZ3N0Z2xhbmRyb2lkaW5jbHVkZV9IRUFERVJTKSBcCkBAIC0yNzMsNiArMjcyLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTAsNiArMzExLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTgsNyArMzIxLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM3LDggKzMzOSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTUsMTYgKzM1OCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTAsNiArMzk0LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE1LDYgKzQyMSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNiw2ICs1MjQsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTI5LDggKzUzOCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Niw2ICs1NTMsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjAzLDE2ICs2MTIsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjQsNiArNjc1LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NCw2ICs2ODYsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODMsNiArNjk2LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMCw3ICs3MzUsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9hbmRyb2lkL2dzdGdsd2luZG93X2FuZHJvaWRfZWdsLmMgYi9nc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9nc3RnbHdpbmRvd19hbmRyb2lkX2VnbC5jCmluZGV4IDk4Mzc3NTYuLmYyMzRhY2YgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9hbmRyb2lkL2dzdGdsd2luZG93X2FuZHJvaWRfZWdsLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2FuZHJvaWQvZ3N0Z2x3aW5kb3dfYW5kcm9pZF9lZ2wuYwpAQCAtNTcsOCArNTcsNiBAQAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfYW5kcm9pZF9lZ2xfZ2V0X3dpbmRvd19oYW5kbGUpOwogICB3aW5kb3dfY2xhc3MtPnNldF93aW5kb3dfaGFuZGxlID0KICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2FuZHJvaWRfZWdsX3NldF93aW5kb3dfaGFuZGxlKTsKLSAgd2luZG93X2NsYXNzLT5kcmF3X3VubG9ja2VkID0KLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2FuZHJvaWRfZWdsX2RyYXcpOwogICB3aW5kb3dfY2xhc3MtPmRyYXcgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd19hbmRyb2lkX2VnbF9kcmF3KTsKIH0KIApAQCAtMTA4LDcgKzEwNiw3IEBACiAKICAgaWYgKGNvbnRleHRfZWdsLT5lZ2xfc3VyZmFjZSkgewogICAgIGdpbnQgd2lkdGgsIGhlaWdodDsKLSAgICBnaW50IHdpbmRvd193aWR0aCwgd2luZG93X2hlaWdodDsKKyAgICBndWludCB3aW5kb3dfd2lkdGgsIHdpbmRvd19oZWlnaHQ7CiAKICAgICBnc3RfZ2xfd2luZG93X2dldF9zdXJmYWNlX2RpbWVuc2lvbnMgKHdpbmRvdywgJndpbmRvd193aWR0aCwKICAgICAgICAgJndpbmRvd19oZWlnaHQpOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2FuZHJvaWQvZ3N0Z2x3aW5kb3dfYW5kcm9pZF9lZ2wuaCBiL2dzdC1saWJzL2dzdC9nbC9hbmRyb2lkL2dzdGdsd2luZG93X2FuZHJvaWRfZWdsLmgKaW5kZXggZWFhZGE0NC4uYjhkYzY2ZCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2FuZHJvaWQvZ3N0Z2x3aW5kb3dfYW5kcm9pZF9lZ2wuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9nc3RnbHdpbmRvd19hbmRyb2lkX2VnbC5oCkBAIC0zMCw4ICszMCw4IEBACiAjZGVmaW5lIEdTVF9HTF9UWVBFX1dJTkRPV19BTkRST0lEX0VHTCAgICAgICAgIChnc3RfZ2xfd2luZG93X2FuZHJvaWRfZWdsX2dldF90eXBlKCkpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfQU5EUk9JRF9FR0wobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9HTF9UWVBFX1dJTkRPV19BTkRST0lEX0VHTCwgR3N0R0xXaW5kb3dBbmRyb2lkRUdMKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19BTkRST0lEX0VHTF9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTUygoayksIEdTVF9HTF9UWVBFX1dJTkRPV19BTkRST0lEX0VHTCwgR3N0R0xXaW5kb3dBbmRyb2lkRUdMQ2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfV0lORE9XX0FORFJPSURfRUdMKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfQU5EUk9JRF9FR0wpKQotI2RlZmluZSBHU1RfR0xfSVNfV0lORE9XX0FORFJPSURfRUdMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfQU5EUk9JRF9FR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XX0FORFJPSURfRUdMKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfQU5EUk9JRF9FR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XX0FORFJPSURfRUdMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfQU5EUk9JRF9FR0wpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX0FORFJPSURfRUdMX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX1dJTkRPV19BTkRST0lEX0VHTCwgR3N0R0xXaW5kb3dBbmRyb2lkRUdMX0NsYXNzKSkKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMV2luZG93QW5kcm9pZEVHTCAgICAgICAgR3N0R0xXaW5kb3dBbmRyb2lkRUdMOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL01ha2VmaWxlLmluIGIvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL01ha2VmaWxlLmluCmluZGV4IGU2MWRkZDUuLjRjMDIyMzQgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvZ2wvY29jb2EvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChsaWJnc3RnbF9jb2NvYWluY2x1ZGVfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjYW9wZW5nbGxheWVyLm0gYi9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjYW9wZW5nbGxheWVyLm0KaW5kZXggY2M4MmMzYy4uYTExNzAwZCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY2FvcGVuZ2xsYXllci5tCisrKyBiL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbGNhb3BlbmdsbGF5ZXIubQpAQCAtMTI2LDYgKzEyNiw3IEBACiAgIH0KIAogICBnc3RfZ2xfY29udGV4dF9hY3RpdmF0ZSAoc2VsZi0+ZHJhd19jb250ZXh0LCBUUlVFKTsKKyAgZ3N0X2dsX2NvbnRleHRfc2V0X3NoYXJlZF93aXRoIChzZWxmLT5kcmF3X2NvbnRleHQsIHNlbGYtPmdzdF9nbF9jb250ZXh0KTsKICAgaWYgKCFnc3RfZ2xfY29udGV4dF9maWxsX2luZm8gKHNlbGYtPmRyYXdfY29udGV4dCwgJmVycm9yKSkgewogICAgIEdTVF9FUlJPUiAoImZhaWxlZCB0byBmaWxsIHdyYXBwZWQgY29udGV4dCBpbmZvcm1hdGlvbjogJXMiLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjb250ZXh0X2NvY29hLmggYi9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjb250ZXh0X2NvY29hLmgKaW5kZXggMjIwNjllZS4uOGU0ZDFhYyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY29udGV4dF9jb2NvYS5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbGNvbnRleHRfY29jb2EuaApAQCAtMzAsOCArMzAsOCBAQAogI2RlZmluZSBHU1RfR0xfVFlQRV9DT05URVhUX0NPQ09BICAgICAgICAgKGdzdF9nbF9jb250ZXh0X2NvY29hX2dldF90eXBlKCkpCiAjZGVmaW5lIEdTVF9HTF9DT05URVhUX0NPQ09BKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUX0NPQ09BLCBHc3RHTENvbnRleHRDb2NvYSkpCiAjZGVmaW5lIEdTVF9HTF9DT05URVhUX0NPQ09BX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTKChrKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9DT0NPQSwgR3N0R0xDb250ZXh0Q29jb2FDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9JU19DT05URVhUX0NPQ09BKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUX0NPQ09BKSkKLSNkZWZpbmUgR1NUX0dMX0lTX0NPTlRFWFRfQ09DT0FfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX0NPTlRFWFRfQ09DT0EpKQorI2RlZmluZSBHU1RfSVNfR0xfQ09OVEVYVF9DT0NPQShvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9DT0NPQSkpCisjZGVmaW5lIEdTVF9JU19HTF9DT05URVhUX0NPQ09BX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX0NPQ09BKSkKICNkZWZpbmUgR1NUX0dMX0NPTlRFWFRfQ09DT0FfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9DT0NPQSwgR3N0R0xDb250ZXh0Q29jb2FDbGFzcykpCiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTENvbnRleHRDb2NvYSAgICAgICAgR3N0R0xDb250ZXh0Q29jb2E7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjb250ZXh0X2NvY29hLm0gYi9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjb250ZXh0X2NvY29hLm0KaW5kZXggYmRlOTBmMS4uYWMxZTBkNiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY29udGV4dF9jb2NvYS5tCisrKyBiL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbGNvbnRleHRfY29jb2EubQpAQCAtOTAsNyArOTAsNiBAQAogc3RhdGljIHN0cnVjdCBwaXhlbF9hdHRyIHBpeGVsX2F0dHJzW10gPSB7CiAgIHtrQ0dMUEZBQWxsUmVuZGVyZXJzLCAiQWxsIFJlbmRlcmVycyJ9LAogICB7a0NHTFBGQURvdWJsZUJ1ZmZlciwgIkRvdWJsZSBCdWZmZXJlZCJ9LAotICB7a0NHTFBGQVN0ZXJlbywgIlN0ZXJlbyJ9LAogICB7a0NHTFBGQUF1eEJ1ZmZlcnMsICJBdXggQnVmZmVycyJ9LAogICB7a0NHTFBGQUNvbG9yU2l6ZSwgIkNvbG9yIFNpemUifSwKICAge2tDR0xQRkFBbHBoYVNpemUsICJBbHBoYSBTaXplIn0sCkBAIC0xMTUsMjAgKzExNCwyMyBAQAogICB7a0NHTFBGQUFjY2VsZXJhdGVkQ29tcHV0ZSwgIkFjY2VsZXJhdGVkIENvbXB1dGUifSwKICAge2tDR0xQRkFPcGVuR0xQcm9maWxlLCAiT3BlbkdMIFByb2ZpbGUifSwKICAge2tDR0xQRkFWaXJ0dWFsU2NyZWVuQ291bnQsICJWaXJ0dWFsIFNjcmVlbiBDb3VudCJ9LAotI2lmIE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMDkwCisjaWYgTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IE1BQ19PU19YX1ZFUlNJT05fMTBfMTEKKyAge2tDR0xQRkFTdGVyZW8sICJTdGVyZW8ifSwKKyNlbmRpZgorI2lmIE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCBNQUNfT1NfWF9WRVJTSU9OXzEwXzkKICAge2tDR0xQRkFDb21wbGlhbnQsICJDb21wbGlhbnQifSwKICAge2tDR0xQRkFSZW1vdGVQQnVmZmVyLCAiUmVtb3RlIFBCdWZmZXIifSwKICAge2tDR0xQRkFTaW5nbGVSZW5kZXJlciwgIlNpbmdsZSBSZW5kZXJlciJ9LAogICB7a0NHTFBGQVdpbmRvdywgIldpbmRvdyJ9LAogI2VuZGlmCi0jaWYgTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEwNzAKKyNpZiBNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgTUFDX09TX1hfVkVSU0lPTl8xMF83CiAvLyAge2tDR0xQRkFPZmZTY3JlZW4sICJPZmYgU2NyZWVuIn0sCiAvLyAge2tDR0xQRkFQQnVmZmVyLCAiUEJ1ZmZlciJ9LAogI2VuZGlmCi0jaWYgTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IDEwNjAKKyNpZiBNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgTUFDX09TX1hfVkVSU0lPTl8xMF82CiAvLyAge2tDR0xQRkFGdWxsU2NyZWVuLCAiRnVsbCBTY3JlZW4ifSwKICNlbmRpZgotI2lmIE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMDUwCisjaWYgTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IE1BQ19PU19YX1ZFUlNJT05fMTBfNQogLy8gIHtrQ0dMUEZBTVBTYWZlLCAiTVAgU2FmZSJ9LAogLy8gIHtrQ0dMUEZBTXVsdGlTY3JlZW4sICJNdWx0aSBTY3JlZW4ifSwKIC8vICB7a0NHTFBGQVJvYnVzdCwgIlJvYnVzdCJ9LApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsd2luZG93X2NvY29hLmggYi9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2x3aW5kb3dfY29jb2EuaAppbmRleCAyMWM1OTE3Li42ZDE0MDRiIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2x3aW5kb3dfY29jb2EuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2x3aW5kb3dfY29jb2EuaApAQCAtMzAsOCArMzAsOCBAQAogI2RlZmluZSBHU1RfR0xfVFlQRV9XSU5ET1dfQ09DT0EgICAgICAgICAoZ3N0X2dsX3dpbmRvd19jb2NvYV9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX0NPQ09BKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfQ09DT0EsIEdzdEdMV2luZG93Q29jb2EpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX0NPQ09BX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX0NPQ09BLCBHc3RHTFdpbmRvd0NvY29hQ2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfV0lORE9XX0NPQ09BKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfQ09DT0EpKQotI2RlZmluZSBHU1RfR0xfSVNfV0lORE9XX0NPQ09BX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfQ09DT0EpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XX0NPQ09BKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfQ09DT0EpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XX0NPQ09BX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfQ09DT0EpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX0NPQ09BX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX1dJTkRPV19DT0NPQSwgR3N0R0xXaW5kb3dDb2NvYUNsYXNzKSkKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMV2luZG93Q29jb2EgICAgICAgIEdzdEdMV2luZG93Q29jb2E7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2x3aW5kb3dfY29jb2EubSBiL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbHdpbmRvd19jb2NvYS5tCmluZGV4IDljMzdlNmMuLjBkMDI3YzUgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbHdpbmRvd19jb2NvYS5tCisrKyBiL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbHdpbmRvd19jb2NvYS5tCkBAIC0xMDYsNyArMTA2LDYgQEAKICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2NvY29hX2dldF93aW5kb3dfaGFuZGxlKTsKICAgd2luZG93X2NsYXNzLT5zZXRfd2luZG93X2hhbmRsZSA9CiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd19jb2NvYV9zZXRfd2luZG93X2hhbmRsZSk7Ci0gIHdpbmRvd19jbGFzcy0+ZHJhd191bmxvY2tlZCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2NvY29hX2RyYXcpOwogICB3aW5kb3dfY2xhc3MtPmRyYXcgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd19jb2NvYV9kcmF3KTsKICAgd2luZG93X2NsYXNzLT5zZXRfcHJlZmVycmVkX3NpemUgPQogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfY29jb2Ffc2V0X3ByZWZlcnJlZF9zaXplKTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9kaXNwbWFueC9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9nbC9kaXNwbWFueC9NYWtlZmlsZS5pbgppbmRleCBhM2VhZGRhLi5mZDI3YzlhIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZGlzcG1hbngvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2Rpc3BtYW54L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI0NSw2ICsyNDQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4Miw2ICsyODMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5MCw3ICsyOTMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDksOCArMzExLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyNywxNiArMzMwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2Miw2ICszNjYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODcsNiArMzkzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg4LDYgKzQ5Niw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDEsOCArNTEwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE4LDYgKzUyNSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzUsMTYgKzU4NCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzNiw2ICs2NDcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ2LDYgKzY1OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1NSw2ICs2NjgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjkyLDcgKzcwNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2Rpc3BtYW54L2dzdGdsd2luZG93X2Rpc3BtYW54X2VnbC5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2Rpc3BtYW54L2dzdGdsd2luZG93X2Rpc3BtYW54X2VnbC5oCmluZGV4IGRmMjNlYjUuLjMxMzBhNmMgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9kaXNwbWFueC9nc3RnbHdpbmRvd19kaXNwbWFueF9lZ2wuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZGlzcG1hbngvZ3N0Z2x3aW5kb3dfZGlzcG1hbnhfZWdsLmgKQEAgLTQ3LDggKzQ3LDggQEAKICNkZWZpbmUgR1NUX0dMX1RZUEVfV0lORE9XX0RJU1BNQU5YX0VHTCAgICAgICAgIChnc3RfZ2xfd2luZG93X2Rpc3BtYW54X2VnbF9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX0RJU1BNQU5YX0VHTChvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX0RJU1BNQU5YX0VHTCwgR3N0R0xXaW5kb3dEaXNwbWFueEVHTCkpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfRElTUE1BTlhfRUdMX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX0RJU1BNQU5YX0VHTCwgR3N0R0xXaW5kb3dEaXNwbWFueEVHTENsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19ESVNQTUFOWF9FR0wobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX1dJTkRPV19ESVNQTUFOWF9FR0wpKQotI2RlZmluZSBHU1RfR0xfSVNfV0lORE9XX0RJU1BNQU5YX0VHTF9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX0RJU1BNQU5YX0VHTCkpCisjZGVmaW5lIEdTVF9JU19HTF9XSU5ET1dfRElTUE1BTlhfRUdMKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfRElTUE1BTlhfRUdMKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dJTkRPV19ESVNQTUFOWF9FR0xfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX1dJTkRPV19ESVNQTUFOWF9FR0wpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX0RJU1BNQU5YX0VHTF9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfRElTUE1BTlhfRUdMLCBHc3RHTFdpbmRvd0Rpc3BtYW54RUdMX0NsYXNzKSkKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMV2luZG93RGlzcG1hbnhFR0wgICAgICAgIEdzdEdMV2luZG93RGlzcG1hbnhFR0w7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZWFnbC9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9nbC9lYWdsL01ha2VmaWxlLmluCmluZGV4IDI4NjQ1ZmMuLjg2OWVhYmUgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9lYWdsL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC9nbC9lYWdsL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI0NSw2ICsyNDQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4Miw2ICsyODMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5MCw3ICsyOTMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDksOCArMzExLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyNywxNiArMzMwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2Miw2ICszNjYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODcsNiArMzkzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg4LDYgKzQ5Niw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDEsOCArNTEwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE4LDYgKzUyNSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzUsMTYgKzU4NCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzNiw2ICs2NDcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ2LDYgKzY1OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1NSw2ICs2NjgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjkyLDcgKzcwNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2xjb250ZXh0X2VhZ2wuaCBiL2dzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsY29udGV4dF9lYWdsLmgKaW5kZXggYmQ2Y2QyMC4uMjYyMjgxMCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2xjb250ZXh0X2VhZ2wuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbGNvbnRleHRfZWFnbC5oCkBAIC0yOSw4ICsyOSw4IEBACiAjZGVmaW5lIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUFHTCAgICAgICAgIChnc3RfZ2xfY29udGV4dF9lYWdsX2dldF90eXBlKCkpCiAjZGVmaW5lIEdTVF9HTF9DT05URVhUX0VBR0wobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUFHTCwgR3N0R0xDb250ZXh0RWFnbCkpCiAjZGVmaW5lIEdTVF9HTF9DT05URVhUX0VBR0xfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1MoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX0VBR0wsIEdzdEdMQ29udGV4dEVhZ2xDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9JU19DT05URVhUX0VBR0wobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUFHTCkpCi0jZGVmaW5lIEdTVF9HTF9JU19DT05URVhUX0VBR0xfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUFHTCkpCisjZGVmaW5lIEdTVF9JU19HTF9DT05URVhUX0VBR0wobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUFHTCkpCisjZGVmaW5lIEdTVF9JU19HTF9DT05URVhUX0VBR0xfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUFHTCkpCiAjZGVmaW5lIEdTVF9HTF9DT05URVhUX0VBR0xfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9FQUdMLCBHc3RHTENvbnRleHRFYWdsQ2xhc3MpKQogCiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xDb250ZXh0RWFnbCAgICAgICAgR3N0R0xDb250ZXh0RWFnbDsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsd2luZG93X2VhZ2wuaCBiL2dzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsd2luZG93X2VhZ2wuaAppbmRleCBjZTNkMGIzLi4wMDFjOTdjIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbHdpbmRvd19lYWdsLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2x3aW5kb3dfZWFnbC5oCkBAIC0yOSw4ICsyOSw4IEBACiAjZGVmaW5lIEdTVF9HTF9UWVBFX1dJTkRPV19FQUdMICAgICAgICAgKGdzdF9nbF93aW5kb3dfZWFnbF9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX0VBR0wobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9HTF9UWVBFX1dJTkRPV19FQUdMLCBHc3RHTFdpbmRvd0VhZ2wpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX0VBR0xfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1MoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfRUFHTCwgR3N0R0xXaW5kb3dFYWdsQ2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfV0lORE9XX0VBR0wobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX1dJTkRPV19FQUdMKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19FQUdMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfRUFHTCkpCisjZGVmaW5lIEdTVF9JU19HTF9XSU5ET1dfRUFHTChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX0VBR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XX0VBR0xfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX1dJTkRPV19FQUdMKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19FQUdMX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX1dJTkRPV19FQUdMLCBHc3RHTFdpbmRvd0VhZ2xDbGFzcykpCiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFdpbmRvd0VhZ2wgICAgICAgIEdzdEdMV2luZG93RWFnbDsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsd2luZG93X2VhZ2wubSBiL2dzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsd2luZG93X2VhZ2wubQppbmRleCBkZmQ4ODlmLi5lYjlkNGY3IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbHdpbmRvd19lYWdsLm0KKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2x3aW5kb3dfZWFnbC5tCkBAIC02OSw3ICs2OSw2IEBACiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd19lYWdsX2dldF93aW5kb3dfaGFuZGxlKTsKICAgd2luZG93X2NsYXNzLT5zZXRfd2luZG93X2hhbmRsZSA9CiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd19lYWdsX3NldF93aW5kb3dfaGFuZGxlKTsKLSAgd2luZG93X2NsYXNzLT5kcmF3X3VubG9ja2VkID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfZWFnbF9kcmF3KTsKICAgd2luZG93X2NsYXNzLT5kcmF3ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfZWFnbF9kcmF3KTsKICAgd2luZG93X2NsYXNzLT5zZXRfcHJlZmVycmVkX3NpemUgPQogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfZWFnbF9zZXRfcHJlZmVycmVkX3NpemUpOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9nbC9lZ2wvTWFrZWZpbGUuaW4KaW5kZXggNzg4YTFkYS4uMmUzNWE3YSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvZ2wvZWdsL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobGliZ3N0Z2xfZWdsaW5jbHVkZV9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuYyBiL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuYwppbmRleCBlYjQ1ODMwLi40NjA5OGI1IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGVnbGltYWdlbWVtb3J5LmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RlZ2xpbWFnZW1lbW9yeS5jCkBAIC0yNSw2ICsyNSw0NCBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJnc3RlZ2xpbWFnZW1lbW9yeS5oIgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaWYgR1NUX0dMX0hBVkVfRE1BQlVGCisjaW5jbHVkZSA8Z3N0L2FsbG9jYXRvcnMvZ3N0ZG1hYnVmLmg+CisjaW5jbHVkZSA8bGliZHJtL2RybV9mb3VyY2MuaD4KKworI2lmbmRlZiBEUk1fRk9STUFUX1I4CisjZGVmaW5lIERSTV9GT1JNQVRfUjggZm91cmNjX2NvZGUoJ1InLCAnOCcsICcgJywgJyAnKQorI2VuZGlmCisKKyNpZm5kZWYgRFJNX0ZPUk1BVF9SRzg4CisjZGVmaW5lIERSTV9GT1JNQVRfUkc4OCBmb3VyY2NfY29kZSgnUicsICdHJywgJzgnLCAnOCcpCisjZW5kaWYKKworI2lmbmRlZiBEUk1fRk9STUFUX0dSODgKKyNkZWZpbmUgRFJNX0ZPUk1BVF9HUjg4IGZvdXJjY19jb2RlKCdHJywgJ1InLCAnOCcsICc4JykKKyNlbmRpZgorI2VuZGlmCisKKyNpZm5kZWYgRUdMX0xJTlVYX0RNQV9CVUZfRVhUCisjZGVmaW5lIEVHTF9MSU5VWF9ETUFfQlVGX0VYVCAweDMyNzAKKyNlbmRpZgorCisjaWZuZGVmIEVHTF9MSU5VWF9EUk1fRk9VUkNDX0VYVAorI2RlZmluZSBFR0xfTElOVVhfRFJNX0ZPVVJDQ19FWFQgMHgzMjcxCisjZW5kaWYKKworI2lmbmRlZiBFR0xfRE1BX0JVRl9QTEFORTBfRkRfRVhUCisjZGVmaW5lIEVHTF9ETUFfQlVGX1BMQU5FMF9GRF9FWFQgMHgzMjcyCisjZW5kaWYKKworI2lmbmRlZiBFR0xfRE1BX0JVRl9QTEFORTBfT0ZGU0VUX0VYVAorI2RlZmluZSBFR0xfRE1BX0JVRl9QTEFORTBfT0ZGU0VUX0VYVCAweDMyNzMKKyNlbmRpZgorCisjaWZuZGVmIEVHTF9ETUFfQlVGX1BMQU5FMF9QSVRDSF9FWFQKKyNkZWZpbmUgRUdMX0RNQV9CVUZfUExBTkUwX1BJVENIX0VYVCAweDMyNzQKKyNlbmRpZgogCiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0VHTF9JTUFHRV9NRU1PUlkpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgR1NUX0NBVF9FR0xfSU1BR0VfTUVNT1JZCkBAIC0zMTAsOSArMzQ4LDEzNyBAQAogICAgIGdzdF9nbF9idWZmZXJfcG9vbF9yZXBsYWNlX2xhc3RfYnVmZmVyIChHU1RfR0xfQlVGRkVSX1BPT0wgKG1ldGEtPgogICAgICAgICAgICAgYnVmZmVyLT5wb29sKSwgbWV0YS0+YnVmZmVyKTsKIAorCiAgIHJldHVybiBUUlVFOwogfQogCisjaWYgR1NUX0dMX0hBVkVfRE1BQlVGCisvKgorICogR1N0cmVhbWVyIGZvcm1hdCBkZXNjcmlwdGlvbnMgZGlmZmVyIGZyb20gRFJNIGZvcm1hdHMgYXMgdGhlIHJlcHJlc2VudGF0aW9uCisgKiBpcyByZWxhdGl2ZSB0byBhIHJlZ2lzdGVyLCBoZW5jZSBpbiBuYXRpdmUgZW5kaWFubmVzcy4gVG8gcmVkdWNlIHRoZSBkcml2ZXIKKyAqIHJlcXVpcmVtZW50LCB3ZSBvbmx5IGltcG9ydCB3aXRoIGEgc3Vic2V0IG9mIHRleHR1cmUgZm9ybWF0cyBhbmQgdXNlCisgKiBzaGFkZXJzIHRvIGNvbnZlcnQuIFRoaXMgd2F5IHdlIGF2b2lkIGhhdmluZyB0byB1c2UgZXh0ZXJuYWwgdGV4dHVyZQorICogdGFyZ2V0LgorICovCitzdGF0aWMgaW50CitfZHJtX2ZvdXJjY19mcm9tX2luZm8gKEdzdFZpZGVvSW5mbyAqIGluZm8sIGludCBwbGFuZSkKK3sKKyAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0ID0gR1NUX1ZJREVPX0lORk9fRk9STUFUIChpbmZvKTsKKyNpZiBHX0JZVEVfT1JERVIgPT0gR19MSVRUTEVfRU5ESUFOCisgIGNvbnN0IGdpbnQgcmdiYV9mb3VyY2MgPSBEUk1fRk9STUFUX0FCR1I4ODg4OworICBjb25zdCBnaW50IHJnYl9mb3VyY2MgPSBEUk1fRk9STUFUX0JHUjg4ODsKKyAgY29uc3QgZ2ludCByZ19mb3VyY2MgPSBEUk1fRk9STUFUX0dSODg7CisjZWxzZQorICBjb25zdCBnaW50IHJnYmFfZm91cmNjID0gRFJNX0ZPUk1BVF9SR0JBODg4ODsKKyAgY29uc3QgZ2ludCByZ2JfZm91cmNjID0gRFJNX0ZPUk1BVF9SR0I4ODg7CisgIGNvbnN0IGdpbnQgcmdfZm91cmNjID0gRFJNX0ZPUk1BVF9SRzg4OworI2VuZGlmCisKKyAgR1NUX0RFQlVHICgiR2V0dGluZyBEUk0gZm91cmNjIGZvciAlcyBwbGFuZSAlaSIsCisgICAgICBnc3RfdmlkZW9fZm9ybWF0X3RvX3N0cmluZyAoZm9ybWF0KSwgcGxhbmUpOworCisgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQjE2OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1IxNjoKKyAgICAgIHJldHVybiBEUk1fRk9STUFUX1JHQjU2NTsKKworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUjoKKyAgICAgIHJldHVybiByZ2JfZm91cmNjOworCisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQkE6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQng6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUkE6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUng6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0FSR0I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX3hSR0I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0FCR1I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX3hCR1I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0FZVVY6CisgICAgICByZXR1cm4gcmdiYV9mb3VyY2M7CisKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfR1JBWTg6CisgICAgICByZXR1cm4gRFJNX0ZPUk1BVF9SODsKKworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVVkyOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9VWVZZOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9HUkFZMTZfTEU6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVkxNl9CRToKKyAgICAgIHJldHVybiByZ19mb3VyY2M7CisKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYxMjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYyMToKKyAgICAgIHJldHVybiBwbGFuZSA9PSAwID8gRFJNX0ZPUk1BVF9SOCA6IHJnX2ZvdXJjYzsKKworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9JNDIwOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVjEyOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDFCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDJCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDQ0OgorICAgICAgcmV0dXJuIERSTV9GT1JNQVRfUjg7CisKKyAgICBkZWZhdWx0OgorICAgICAgR1NUX0VSUk9SICgiVW5zdXBwb3J0ZWQgZm9ybWF0IGZvciBETUFCdWYuIik7CisgICAgICByZXR1cm4gLTE7CisgIH0KK30KKworR3N0TWVtb3J5ICoKK2dzdF9lZ2xfaW1hZ2VfbWVtb3J5X2Zyb21fZG1hYnVmIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgIGdpbnQgZG1hYnVmLCBHc3RWaWRlb0luZm8gKiBpbl9pbmZvLCBnaW50IHBsYW5lLCBnc2l6ZSBvZmZzZXQpCit7CisgIEdzdEdMQ29udGV4dEVHTCAqY3R4X2VnbCA9IEdTVF9HTF9DT05URVhUX0VHTCAoY29udGV4dCk7CisgIEdzdEVHTEltYWdlQWxsb2NhdG9yICphbGxvY2F0b3I7CisgIGdpbnQgZm91cmNjOworICBnaW50IGF0dGkgPSAwOworICBFR0xpbnQgYXR0cmlic1sxM107CisgIEVHTEltYWdlS0hSIGltZyA9IEVHTF9OT19JTUFHRV9LSFI7CisKKyAgYWxsb2NhdG9yID0gZ3N0X2VnbF9pbWFnZV9hbGxvY2F0b3Jfb2J0YWluICgpOworICBmb3VyY2MgPSBfZHJtX2ZvdXJjY19mcm9tX2luZm8gKGluX2luZm8sIHBsYW5lKTsKKworICBHU1RfREVCVUcgKCJmb3VyY2MgJS40cyAoJWQpIHBsYW5lICVkICglZHglZCkiLAorICAgICAgKGNoYXIgKikgJmZvdXJjYywgZm91cmNjLCBwbGFuZSwKKyAgICAgIEdTVF9WSURFT19JTkZPX0NPTVBfV0lEVEggKGluX2luZm8sIHBsYW5lKSwKKyAgICAgIEdTVF9WSURFT19JTkZPX0NPTVBfSEVJR0hUIChpbl9pbmZvLCBwbGFuZSkpOworCisgIGF0dHJpYnNbYXR0aSsrXSA9IEVHTF9XSURUSDsKKyAgYXR0cmlic1thdHRpKytdID0gR1NUX1ZJREVPX0lORk9fQ09NUF9XSURUSCAoaW5faW5mbywgcGxhbmUpOworICBhdHRyaWJzW2F0dGkrK10gPSBFR0xfSEVJR0hUOworICBhdHRyaWJzW2F0dGkrK10gPSBHU1RfVklERU9fSU5GT19DT01QX0hFSUdIVCAoaW5faW5mbywgcGxhbmUpOworCisgIGF0dHJpYnNbYXR0aSsrXSA9IEVHTF9MSU5VWF9EUk1fRk9VUkNDX0VYVDsKKyAgYXR0cmlic1thdHRpKytdID0gZm91cmNjOworCisgIGF0dHJpYnNbYXR0aSsrXSA9IEVHTF9ETUFfQlVGX1BMQU5FMF9GRF9FWFQ7CisgIGF0dHJpYnNbYXR0aSsrXSA9IGRtYWJ1ZjsKKworICBhdHRyaWJzW2F0dGkrK10gPSBFR0xfRE1BX0JVRl9QTEFORTBfT0ZGU0VUX0VYVDsKKyAgYXR0cmlic1thdHRpKytdID0gb2Zmc2V0OworICBhdHRyaWJzW2F0dGkrK10gPSBFR0xfRE1BX0JVRl9QTEFORTBfUElUQ0hfRVhUOworICBhdHRyaWJzW2F0dGkrK10gPSBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUgKGluX2luZm8sIHBsYW5lKTsKKworICBhdHRyaWJzW2F0dGldID0gRUdMX05PTkU7CisKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdHRpOyBpKyspCisgICAgR1NUX0xPRyAoImF0dHIgJWk6ICUwOFgiLCBpLCBhdHRyaWJzW2ldKTsKKworICBnX2Fzc2VydCAoYXR0aSA9PSAxMik7CisKKyAgaW1nID0gY3R4X2VnbC0+ZWdsQ3JlYXRlSW1hZ2UgKGN0eF9lZ2wtPmVnbF9kaXNwbGF5LCBFR0xfTk9fQ09OVEVYVCwKKyAgICAgIEVHTF9MSU5VWF9ETUFfQlVGX0VYVCwgTlVMTCwgYXR0cmlicyk7CisKKyAgaWYgKCFpbWcpIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGFsbG9jYXRvciwgImVnbENyZWF0ZUltYWdlIGZhaWxlZDogJXMiLAorICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoZWdsR2V0RXJyb3IgKCkpKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHJldHVybiBnc3RfZWdsX2ltYWdlX2FsbG9jYXRvcl93cmFwIChhbGxvY2F0b3IsIGN0eF9lZ2wsIGltZywgMCwgMCwKKyAgICAgIGluX2luZm8tPnNpemUsIE5VTEwsIE5VTEwpOworfQorI2VuZGlmIC8qIEdTVF9HTF9IQVZFX0RNQUJVRiAqLworCiBnYm9vbGVhbgogZ3N0X2VnbF9pbWFnZV9tZW1vcnlfc2V0dXBfYnVmZmVyIChHc3RHTENvbnRleHQgKiBjdHgsIEdzdFZpZGVvSW5mbyAqIGluZm8sCiAgICAgR3N0QnVmZmVyICogYnVmZmVyKQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RlZ2xpbWFnZW1lbW9yeS5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RlZ2xpbWFnZW1lbW9yeS5oCmluZGV4IGNlMWZkNDQuLmFjZWQyNDcgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGVnbGltYWdlbWVtb3J5LmgKQEAgLTY0LDYgKzY0LDExIEBACiB2b2lkIGdzdF9lZ2xfaW1hZ2VfbWVtb3J5X3NldF9vcmllbnRhdGlvbiAoR3N0TWVtb3J5ICogbWVtLAogICAgIEdzdFZpZGVvR0xUZXh0dXJlT3JpZW50YXRpb24gb3JpZW50YXRpb24pOwogCisjaWYgR1NUX0dMX0hBVkVfRE1BQlVGCitHc3RNZW1vcnkgKiBnc3RfZWdsX2ltYWdlX21lbW9yeV9mcm9tX2RtYWJ1ZiAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICBnaW50IGRtYWJ1ZiwgR3N0VmlkZW9JbmZvICogaW5faW5mbywgZ2ludCBwbGFuZSwgZ3NpemUgb2Zmc2V0KTsKKyNlbmRpZgorCiBHX0VORF9ERUNMUwogCiAjZW5kaWYgLyogX0dTVF9HTF9NRU1PUllfSF8gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGNvbnRleHRfZWdsLmMKaW5kZXggM2E0YWEzNS4uY2VhZmRmMyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGNvbnRleHRfZWdsLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGNvbnRleHRfZWdsLmMKQEAgLTMwLDYgKzMwLDggQEAKIAogI2luY2x1ZGUgImdzdGdsY29udGV4dF9lZ2wuaCIKICNpbmNsdWRlIDxnc3QvZ2wvZWdsL2dzdGVnbC5oPgorI2luY2x1ZGUgIi4uL3V0aWxzL29wZW5nbF92ZXJzaW9ucy5oIgorI2luY2x1ZGUgIi4uL3V0aWxzL2dsZXNfdmVyc2lvbnMuaCIKIAogI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19YMTEKICNpbmNsdWRlICIuLi94MTEvZ3N0Z2x3aW5kb3dfeDExLmgiCkBAIC0xMDcsMTIgKzEwOSwxMCBAQAogICByZXR1cm4gZ19vYmplY3RfbmV3IChHU1RfR0xfVFlQRV9DT05URVhUX0VHTCwgTlVMTCk7CiB9CiAKLXN0YXRpYyBjb25zdCBnY2hhciAqCi1nc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAodm9pZCkKK2NvbnN0IGdjaGFyICoKK2dzdF9nbF9jb250ZXh0X2VnbF9nZXRfZXJyb3Jfc3RyaW5nIChFR0xpbnQgZXJyKQogewotICBFR0xpbnQgbkVyciA9IGVnbEdldEVycm9yICgpOwotCi0gIHN3aXRjaCAobkVycikgeworICBzd2l0Y2ggKGVycikgewogICAgIGNhc2UgRUdMX1NVQ0NFU1M6CiAgICAgICByZXR1cm4gIkVHTF9TVUNDRVNTIjsKICAgICBjYXNlIEVHTF9CQURfRElTUExBWToKQEAgLTE1MCw3ICsxNTAsNyBAQAogZ3N0X2dsX2NvbnRleHRfZWdsX2Nob29zZV9mb3JtYXQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdFcnJvciAqKiBlcnJvcikKIHsKICNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfWDExCi0gIGlmIChHU1RfR0xfSVNfV0lORE9XX1gxMSAoY29udGV4dC0+d2luZG93KSkgeworICBpZiAoR1NUX0lTX0dMX1dJTkRPV19YMTEgKGNvbnRleHQtPndpbmRvdykpIHsKICAgICBHc3RHTFdpbmRvdyAqd2luZG93ID0gZ3N0X2dsX2NvbnRleHRfZ2V0X3dpbmRvdyAoY29udGV4dCk7CiAgICAgR3N0R0xXaW5kb3dYMTEgKndpbmRvd194MTEgPSBHU1RfR0xfV0lORE9XX1gxMSAod2luZG93KTsKICAgICBnaW50IHJldDsKQEAgLTE3MywxOSArMTczLDM2IEBACiB9CiAKIHN0YXRpYyBnYm9vbGVhbgotZ3N0X2dsX2NvbnRleHRfZWdsX2Nob29zZV9jb25maWcgKEdzdEdMQ29udGV4dEVHTCAqIGVnbCwKLSAgICBHc3RHTENvbnRleHQgKiBvdGhlcl9jb250ZXh0LCBHRXJyb3IgKiogZXJyb3IpCitnc3RfZ2xfY29udGV4dF9lZ2xfY2hvb3NlX2NvbmZpZyAoR3N0R0xDb250ZXh0RUdMICogZWdsLCBHc3RHTEFQSSBnbF9hcGksCisgICAgZ2ludCBtYWpvciwgR0Vycm9yICoqIGVycm9yKQogeworICBnYm9vbGVhbiBjcmVhdGVfY29udGV4dDsKICAgRUdMaW50IG51bUNvbmZpZ3M7CiAgIGdpbnQgaSA9IDA7CiAgIEVHTGludCBjb25maWdfYXR0cmliWzIwXTsKIAorICBjcmVhdGVfY29udGV4dCA9CisgICAgICBnc3RfZ2xfY2hlY2tfZXh0ZW5zaW9uICgiRUdMX0tIUl9jcmVhdGVfY29udGV4dCIsIGVnbC0+ZWdsX2V4dHMpOworICAvKiBzaWxlbmNlIHVudXNlZCB3YXJuaW5ncyAqLworICAodm9pZCkgY3JlYXRlX2NvbnRleHQ7CisKICAgY29uZmlnX2F0dHJpYltpKytdID0gRUdMX1NVUkZBQ0VfVFlQRTsKICAgY29uZmlnX2F0dHJpYltpKytdID0gRUdMX1dJTkRPV19CSVQ7CiAgIGNvbmZpZ19hdHRyaWJbaSsrXSA9IEVHTF9SRU5ERVJBQkxFX1RZUEU7Ci0gIGlmIChlZ2wtPmdsX2FwaSAmIEdTVF9HTF9BUElfR0xFUzIpCi0gICAgY29uZmlnX2F0dHJpYltpKytdID0gRUdMX09QRU5HTF9FUzJfQklUOwotICBlbHNlCisgIGlmIChnbF9hcGkgJiBHU1RfR0xfQVBJX0dMRVMyKSB7CisgICAgaWYgKG1ham9yID09IDMpIHsKKyNpZiBkZWZpbmVkKEVHTF9LSFJfY3JlYXRlX2NvbnRleHQpCisgICAgICBpZiAoY3JlYXRlX2NvbnRleHQpIHsKKyAgICAgICAgY29uZmlnX2F0dHJpYltpKytdID0gRUdMX09QRU5HTF9FUzNfQklUX0tIUjsKKyAgICAgIH0gZWxzZQorI2VuZGlmCisgICAgICB7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgY29uZmlnX2F0dHJpYltpKytdID0gRUdMX09QRU5HTF9FUzJfQklUOworICAgIH0KKyAgfSBlbHNlCiAgICAgY29uZmlnX2F0dHJpYltpKytdID0gRUdMX09QRU5HTF9CSVQ7CiAjaWYgZGVmaW5lZChVU0VfRUdMX1JQSSkgJiYgR1NUX0dMX0hBVkVfV0lORE9XX1dBWUxBTkQKICAgLyogVGhlIGNvbmZpZ3VyYXRpb25zIHdpdGggYT0wIHNlZW1zIHRvIGJlIGJ1Z2d5IHdoZXJlYXMKQEAgLTIxMCw3ICsyMjcsNyBAQAogICB9IGVsc2UgewogICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMX0NPTlRFWFRfRVJST1IsIEdTVF9HTF9DT05URVhUX0VSUk9SX1dST05HX0NPTkZJRywKICAgICAgICAgIkZhaWxlZCB0byBzZXQgd2luZG93IGNvbmZpZ3VyYXRpb246ICVzIiwKLSAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKCkpOworICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoZWdsR2V0RXJyb3IgKCkpKTsKICAgICBnb3RvIGZhaWx1cmU7CiAgIH0KIApAQCAtMjIwLDYgKzIzNyw3MSBAQAogICByZXR1cm4gRkFMU0U7CiB9CiAKK3N0YXRpYyBFR0xDb250ZXh0CitfY3JlYXRlX2NvbnRleHRfd2l0aF9mbGFncyAoR3N0R0xDb250ZXh0RUdMICogZWdsLCBFR0xDb250ZXh0IHNoYXJlX2NvbnRleHQsCisgICAgR3N0R0xBUEkgZ2xfYXBpLCBnaW50IG1ham9yLCBnaW50IG1pbm9yLCBnaW50IGNvbnRleHRGbGFncywKKyAgICBnaW50IHByb2ZpbGVNYXNrKQoreworICBnYm9vbGVhbiBjcmVhdGVfY29udGV4dDsKKyNkZWZpbmUgTl9BVFRSSUJTIDIwCisgIGdpbnQgYXR0cmlic1tOX0FUVFJJQlNdOworICBnaW50IG4gPSAwOworCisgIC8qIGZhaWwgY3JlYXRpb24gb2YgYXBpcy92ZXJzaW9ucy9mbGFncyB0aGF0IHJlcXVpcmUgRUdMX0tIUl9jcmVhdGVfY29udGV4dAorICAgKiBpZiB0aGUgZXh0ZW5zaW9uIGRvZXNuJ3QgZXhpc3QsIG5hbWVseTowCisgICAqCisgICAqIC0gcHJvZmlsZSBtYXNrCisgICAqIC0gY29udGV4dCBmbGFncworICAgKiAtIEdMMyA+IDMuMQorICAgKiAtIEdMRVMyICYmIG1pbm9yID4gMAorICAgKi8KKyAgY3JlYXRlX2NvbnRleHQgPQorICAgICAgZ3N0X2dsX2NoZWNrX2V4dGVuc2lvbiAoIkVHTF9LSFJfY3JlYXRlX2NvbnRleHQiLCBlZ2wtPmVnbF9leHRzKTsKKyAgKHZvaWQpIGNyZWF0ZV9jb250ZXh0OworICBpZiAoIWNyZWF0ZV9jb250ZXh0ICYmIChwcm9maWxlTWFzayB8fCBjb250ZXh0RmxhZ3MKKyAgICAgICAgICB8fCAoKGdsX2FwaSAmIEdTVF9HTF9BUElfT1BFTkdMMykKKyAgICAgICAgICAgICAgJiYgR1NUX0dMX0NIRUNLX0dMX1ZFUlNJT04gKG1ham9yLCBtaW5vciwgMywgMikpCisgICAgICAgICAgfHwgKChnbF9hcGkgJiBHU1RfR0xfQVBJX0dMRVMyKSAmJiBtaW5vciA+IDApKSkgeworICAgIHJldHVybiAwOworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoZWdsLCAiYXR0ZW1wdGluZyB0byBjcmVhdGUgT3BlbkdMJXMgY29udGV4dCB2ZXJzaW9uICVkLiVkICIKKyAgICAgICJmbGFncyAleCBwcm9maWxlICV4IiwgZ2xfYXBpICYgR1NUX0dMX0FQSV9HTEVTMiA/ICIgRVMiIDogIiIsIG1ham9yLAorICAgICAgbWlub3IsIGNvbnRleHRGbGFncywgcHJvZmlsZU1hc2spOworCisjaWYgZGVmaW5lZChFR0xfS0hSX2NyZWF0ZV9jb250ZXh0KQorICBpZiAoY3JlYXRlX2NvbnRleHQpIHsKKyAgICBpZiAobWFqb3IpIHsKKyAgICAgIGF0dHJpYnNbbisrXSA9IEVHTF9DT05URVhUX01BSk9SX1ZFUlNJT05fS0hSOworICAgICAgYXR0cmlic1tuKytdID0gbWFqb3I7CisgICAgfQorICAgIGlmIChtaW5vcikgeworICAgICAgYXR0cmlic1tuKytdID0gRUdMX0NPTlRFWFRfTUlOT1JfVkVSU0lPTl9LSFI7CisgICAgICBhdHRyaWJzW24rK10gPSBtaW5vcjsKKyAgICB9CisgICAgaWYgKGNvbnRleHRGbGFncykgeworICAgICAgYXR0cmlic1tuKytdID0gRUdMX0NPTlRFWFRfRkxBR1NfS0hSOworICAgICAgYXR0cmlic1tuKytdID0gY29udGV4dEZsYWdzOworICAgIH0KKyAgICBpZiAocHJvZmlsZU1hc2spIHsKKyAgICAgIGF0dHJpYnNbbisrXSA9IEVHTF9DT05URVhUX09QRU5HTF9QUk9GSUxFX01BU0tfS0hSOworICAgICAgYXR0cmlic1tuKytdID0gcHJvZmlsZU1hc2s7CisgICAgfQorICB9IGVsc2UKKyNlbmRpZgorICB7CisgICAgYXR0cmlic1tuKytdID0gRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT047CisgICAgYXR0cmlic1tuKytdID0gbWFqb3I7CisgIH0KKyAgYXR0cmlic1tuKytdID0gRUdMX05PTkU7CisKKyAgZ19hc3NlcnQgKG4gPCBOX0FUVFJJQlMpOworI3VuZGVmIE5fQVRUUklCUworCisgIHJldHVybiBlZ2xDcmVhdGVDb250ZXh0IChlZ2wtPmVnbF9kaXNwbGF5LCBlZ2wtPmVnbF9jb25maWcsIHNoYXJlX2NvbnRleHQsCisgICAgICBhdHRyaWJzKTsKK30KKwogc3RhdGljIGdib29sZWFuCiBnc3RfZ2xfY29udGV4dF9lZ2xfY3JlYXRlX2NvbnRleHQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCiAgICAgR3N0R0xBUEkgZ2xfYXBpLCBHc3RHTENvbnRleHQgKiBvdGhlcl9jb250ZXh0LCBHRXJyb3IgKiogZXJyb3IpCkBAIC0yMjcsMTEgKzMwOSw4IEBACiAgIEdzdEdMQ29udGV4dEVHTCAqZWdsOwogICBHc3RHTFdpbmRvdyAqd2luZG93ID0gTlVMTDsKICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3dfaGFuZGxlID0gKEVHTE5hdGl2ZVdpbmRvd1R5cGUpIDA7Ci0gIGdpbnQgaSA9IDA7Ci0gIEVHTGludCBjb250ZXh0X2F0dHJpYls1XTsKICAgRUdMaW50IG1ham9yVmVyc2lvbjsKICAgRUdMaW50IG1pbm9yVmVyc2lvbjsKLSAgY29uc3QgZ2NoYXIgKmVnbF9leHRzOwogICBnYm9vbGVhbiBuZWVkX3N1cmZhY2UgPSBUUlVFOwogICBndWludHB0ciBleHRlcm5hbF9nbF9jb250ZXh0ID0gMDsKICAgR3N0R0xEaXNwbGF5ICpkaXNwbGF5OwpAQCAtMjUxLDcgKzMzMCw4IEBACiAgICAgZXh0ZXJuYWxfZ2xfY29udGV4dCA9IGdzdF9nbF9jb250ZXh0X2dldF9nbF9jb250ZXh0IChvdGhlcl9jb250ZXh0KTsKICAgfQogCi0gIGlmICgoZ2xfYXBpICYgKEdTVF9HTF9BUElfT1BFTkdMIHwgR1NUX0dMX0FQSV9HTEVTMikpID09IEdTVF9HTF9BUElfTk9ORSkgeworICBpZiAoKGdsX2FwaSAmIChHU1RfR0xfQVBJX09QRU5HTCB8IEdTVF9HTF9BUElfT1BFTkdMMyB8IEdTVF9HTF9BUElfR0xFUzIpKSA9PQorICAgICAgR1NUX0dMX0FQSV9OT05FKSB7CiAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xfQ09OVEVYVF9FUlJPUiwgR1NUX0dMX0NPTlRFWFRfRVJST1JfV1JPTkdfQVBJLAogICAgICAgICAiRUdMIHN1cHBvcnRzIG9wZW5nbCBvciBnbGVzMiIpOwogICAgIGdvdG8gZmFpbHVyZTsKQEAgLTI4OCwxMSArMzY4LDE3IEBACiAgIH0gZWxzZSB7CiAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xfQ09OVEVYVF9FUlJPUiwKICAgICAgICAgR1NUX0dMX0NPTlRFWFRfRVJST1JfUkVTT1VSQ0VfVU5BVkFJTEFCTEUsCi0gICAgICAgICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBlZ2w6ICVzIiwgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKCkpOworICAgICAgICAiRmFpbGVkIHRvIGluaXRpYWxpemUgZWdsOiAlcyIsCisgICAgICAgIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfZXJyb3Jfc3RyaW5nIChlZ2xHZXRFcnJvciAoKSkpOwogICAgIGdvdG8gZmFpbHVyZTsKICAgfQogCi0gIGlmIChnbF9hcGkgJiBHU1RfR0xfQVBJX09QRU5HTCkgeworICBlZ2wtPmVnbF9leHRzID0gZWdsUXVlcnlTdHJpbmcgKGVnbC0+ZWdsX2Rpc3BsYXksIEVHTF9FWFRFTlNJT05TKTsKKworICBpZiAoZ2xfYXBpICYgKEdTVF9HTF9BUElfT1BFTkdMIHwgR1NUX0dMX0FQSV9PUEVOR0wzKSkgeworICAgIEdzdEdMQVBJIGNob3Nlbl9nbF9hcGkgPSAwOworICAgIGdpbnQgaTsKKwogICAgIC8qIGVnbCArIG9wZW5nbCBvbmx5IGF2YWlsYWJsZSB3aXRoIEVHTCAxLjQrICovCiAgICAgaWYgKG1ham9yVmVyc2lvbiA9PSAxICYmIG1pbm9yVmVyc2lvbiA8PSAzKSB7CiAgICAgICBpZiAoKGdsX2FwaSAmIH5HU1RfR0xfQVBJX09QRU5HTCkgPT0gR1NUX0dMX0FQSV9OT05FKSB7CkBAIC0zMTgsNjcgKzQwNCwxMTUgQEAKICAgICBpZiAoIWVnbEJpbmRBUEkgKEVHTF9PUEVOR0xfQVBJKSkgewogICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xfQ09OVEVYVF9FUlJPUiwgR1NUX0dMX0NPTlRFWFRfRVJST1JfRkFJTEVELAogICAgICAgICAgICJGYWlsZWQgdG8gYmluZCBPcGVuR0wgQVBJOiAlcyIsCi0gICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKCkpOworICAgICAgICAgIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfZXJyb3Jfc3RyaW5nIChlZ2xHZXRFcnJvciAoKSkpOwogICAgICAgZ290byBmYWlsdXJlOwogICAgIH0KIAotICAgIEdTVF9JTkZPICgiVXNpbmcgT3BlbkdMIik7Ci0gICAgZWdsLT5nbF9hcGkgPSBHU1RfR0xfQVBJX09QRU5HTDsKKyAgICBHU1RfSU5GTyAoIkJvdW5kIE9wZW5HTCIpOworCisgICAgLyogYXBpLCB2ZXJzaW9uIG9ubHkgbWF0dGVycyBmb3IgZ2xlcyAqLworICAgIGlmICghZ3N0X2dsX2NvbnRleHRfZWdsX2Nob29zZV9jb25maWcgKGVnbCwgR1NUX0dMX0FQSV9PUEVOR0wsIDAsIGVycm9yKSkgeworICAgICAgZ19hc3NlcnQgKGVycm9yID09IE5VTEwgfHwgKmVycm9yICE9IE5VTEwpOworICAgICAgZ290byBmYWlsdXJlOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKG9wZW5nbF92ZXJzaW9ucyk7IGkrKykgeworICAgICAgZ2ludCBwcm9maWxlTWFzayA9IDA7CisgICAgICBnaW50IGNvbnRleHRGbGFncyA9IDA7CisKKyAgICAgIGlmIChHU1RfR0xfQ0hFQ0tfR0xfVkVSU0lPTiAob3BlbmdsX3ZlcnNpb25zW2ldLm1ham9yLAorICAgICAgICAgICAgICBvcGVuZ2xfdmVyc2lvbnNbaV0ubWlub3IsIDMsIDIpKSB7CisgICAgICAgIC8qIHNraXAgZ2wzIGNvbnRleHRzIGlmIHJlcXVlc3RlZCAqLworICAgICAgICBpZiAoKGdsX2FwaSAmIEdTVF9HTF9BUElfT1BFTkdMMykgPT0gMCkKKyAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBjaG9zZW5fZ2xfYXBpID0gR1NUX0dMX0FQSV9PUEVOR0wzOworI2lmIGRlZmluZWQoRUdMX0tIUl9jcmVhdGVfY29udGV4dCkKKyAgICAgICAgcHJvZmlsZU1hc2sgfD0gRUdMX0NPTlRFWFRfT1BFTkdMX0NPUkVfUFJPRklMRV9CSVRfS0hSOworICAgICAgICBjb250ZXh0RmxhZ3MgfD0gRUdMX0NPTlRFWFRfT1BFTkdMX0RFQlVHX0JJVF9LSFI7CisjZW5kaWYKKyAgICAgIH0gZWxzZSBpZiAob3BlbmdsX3ZlcnNpb25zW2ldLm1ham9yID09IDMgJiYgb3BlbmdsX3ZlcnNpb25zW2ldLm1pbm9yID09IDEpIHsKKyAgICAgICAgLyogc2tpcCAzLjEsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBmcmVlIHRvIGdpdmUgdXMgZWl0aGVyIGEgY29yZSBvciBhCisgICAgICAgICAqIGNvbXBhdGliaWxpdHkgY29udGV4dCAod2UgaGF2ZSBubyBzYXkpICovCisgICAgICAgIGNvbnRpbnVlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLyogc2tpcCBsZWdhY3kgY29udGV4dHMgaWYgcmVxdWVzdGVkICovCisgICAgICAgIGlmICgoZ2xfYXBpICYgR1NUX0dMX0FQSV9PUEVOR0wpID09IDApCisgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgY2hvc2VuX2dsX2FwaSA9IEdTVF9HTF9BUElfT1BFTkdMOworICAgICAgfQorCisgICAgICBlZ2wtPmVnbF9jb250ZXh0ID0KKyAgICAgICAgICBfY3JlYXRlX2NvbnRleHRfd2l0aF9mbGFncyAoZWdsLCAoRUdMQ29udGV4dCkgZXh0ZXJuYWxfZ2xfY29udGV4dCwKKyAgICAgICAgICBjaG9zZW5fZ2xfYXBpLCBvcGVuZ2xfdmVyc2lvbnNbaV0ubWFqb3IsCisgICAgICAgICAgb3BlbmdsX3ZlcnNpb25zW2ldLm1pbm9yLCBjb250ZXh0RmxhZ3MsIHByb2ZpbGVNYXNrKTsKKworICAgICAgaWYgKGVnbC0+ZWdsX2NvbnRleHQpCisgICAgICAgIGJyZWFrOworCisjaWYgZGVmaW5lZChFR0xfS0hSX2NyZWF0ZV9jb250ZXh0KQorICAgICAgcHJvZmlsZU1hc2sgJj0gfkVHTF9DT05URVhUX09QRU5HTF9ERUJVR19CSVRfS0hSOworCisgICAgICBlZ2wtPmVnbF9jb250ZXh0ID0KKyAgICAgICAgICBfY3JlYXRlX2NvbnRleHRfd2l0aF9mbGFncyAoZWdsLCAoRUdMQ29udGV4dCkgZXh0ZXJuYWxfZ2xfY29udGV4dCwKKyAgICAgICAgICBjaG9zZW5fZ2xfYXBpLCBvcGVuZ2xfdmVyc2lvbnNbaV0ubWFqb3IsCisgICAgICAgICAgb3BlbmdsX3ZlcnNpb25zW2ldLm1pbm9yLCBjb250ZXh0RmxhZ3MsIHByb2ZpbGVNYXNrKTsKKworICAgICAgaWYgKGVnbC0+ZWdsX2NvbnRleHQpCisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgfQorCisgICAgZWdsLT5nbF9hcGkgPSBjaG9zZW5fZ2xfYXBpOwogICB9IGVsc2UgaWYgKGdsX2FwaSAmIEdTVF9HTF9BUElfR0xFUzIpIHsKKyAgICBnaW50IGk7CisKICAgdHJ5X2dsZXMyOgogICAgIGlmICghZWdsQmluZEFQSSAoRUdMX09QRU5HTF9FU19BUEkpKSB7CiAgICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTF9DT05URVhUX0VSUk9SLCBHU1RfR0xfQ09OVEVYVF9FUlJPUl9GQUlMRUQsCiAgICAgICAgICAgIkZhaWxlZCB0byBiaW5kIE9wZW5HTHxFUyBBUEk6ICVzIiwKLSAgICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoKSk7CisgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKGVnbEdldEVycm9yICgpKSk7CiAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAgfQogCi0gICAgR1NUX0lORk8gKCJVc2luZyBPcGVuR0x8RVMgMi4wIik7CisgICAgR1NUX0lORk8gKCJCb3VuZCBPcGVuR0x8RVMiKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKGdsZXMyX3ZlcnNpb25zKTsgaSsrKSB7CisgICAgICBnaW50IHByb2ZpbGVNYXNrID0gMDsKKyAgICAgIGdpbnQgY29udGV4dEZsYWdzID0gMDsKKworICAgICAgaWYgKCFnc3RfZ2xfY29udGV4dF9lZ2xfY2hvb3NlX2NvbmZpZyAoZWdsLCBHU1RfR0xfQVBJX0dMRVMyLAorICAgICAgICAgICAgICBnbGVzMl92ZXJzaW9uc1tpXS5tYWpvciwgZXJyb3IpKSB7CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorI2lmIGRlZmluZWQoRUdMX0tIUl9jcmVhdGVfY29udGV4dCkKKyAgICAgIC8qIHRyeSBhIGRlYnVnIGNvbnRleHQgKi8KKyAgICAgIGNvbnRleHRGbGFncyB8PSBFR0xfQ09OVEVYVF9PUEVOR0xfREVCVUdfQklUX0tIUjsKKworICAgICAgZWdsLT5lZ2xfY29udGV4dCA9CisgICAgICAgICAgX2NyZWF0ZV9jb250ZXh0X3dpdGhfZmxhZ3MgKGVnbCwgKEVHTENvbnRleHQpIGV4dGVybmFsX2dsX2NvbnRleHQsCisgICAgICAgICAgR1NUX0dMX0FQSV9HTEVTMiwgZ2xlczJfdmVyc2lvbnNbaV0ubWFqb3IsCisgICAgICAgICAgZ2xlczJfdmVyc2lvbnNbaV0ubWlub3IsIGNvbnRleHRGbGFncywgcHJvZmlsZU1hc2spOworCisgICAgICBpZiAoZWdsLT5lZ2xfY29udGV4dCkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIC8qIHRyeSB3aXRob3V0IGEgZGVidWcgY29udGV4dCAqLworICAgICAgY29udGV4dEZsYWdzICY9IH5FR0xfQ09OVEVYVF9PUEVOR0xfREVCVUdfQklUX0tIUjsKKyNlbmRpZgorCisgICAgICBlZ2wtPmVnbF9jb250ZXh0ID0KKyAgICAgICAgICBfY3JlYXRlX2NvbnRleHRfd2l0aF9mbGFncyAoZWdsLCAoRUdMQ29udGV4dCkgZXh0ZXJuYWxfZ2xfY29udGV4dCwKKyAgICAgICAgICBHU1RfR0xfQVBJX0dMRVMyLCBnbGVzMl92ZXJzaW9uc1tpXS5tYWpvciwKKyAgICAgICAgICBnbGVzMl92ZXJzaW9uc1tpXS5taW5vciwgY29udGV4dEZsYWdzLCBwcm9maWxlTWFzayk7CisKKyAgICAgIGlmIChlZ2wtPmVnbF9jb250ZXh0KQorICAgICAgICBicmVhazsKKyAgICB9CiAgICAgZWdsLT5nbF9hcGkgPSBHU1RfR0xfQVBJX0dMRVMyOwogICB9CiAKLSAgaWYgKCFnc3RfZ2xfY29udGV4dF9lZ2xfY2hvb3NlX2NvbmZpZyAoZWdsLCBvdGhlcl9jb250ZXh0LCBlcnJvcikpIHsKLSAgICBnX2Fzc2VydCAoZXJyb3IgPT0gTlVMTCB8fCAqZXJyb3IgIT0gTlVMTCk7Ci0gICAgZ290byBmYWlsdXJlOwotICB9Ci0KLSAgZWdsX2V4dHMgPSBlZ2xRdWVyeVN0cmluZyAoZWdsLT5lZ2xfZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpOwotCi0gIEdTVF9ERUJVRyAoImFib3V0IHRvIGNyZWF0ZSBnbCBjb250ZXh0Iik7Ci0KLSAgaWYgKGVnbC0+Z2xfYXBpICYgR1NUX0dMX0FQSV9HTEVTMikgewotICAgIGNvbnRleHRfYXR0cmliW2krK10gPSBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTjsKLSAgICBjb250ZXh0X2F0dHJpYltpKytdID0gMjsKLSAgfQotI2lmICFkZWZpbmVkKEdTVF9ESVNBQkxFX0dTVF9ERUJVRykgJiYgZGVmaW5lZChFR0xfS0hSX2NyZWF0ZV9jb250ZXh0KQotICBpZiAoZ3N0X2dsX2NoZWNrX2V4dGVuc2lvbiAoIkVHTF9LSFJfY3JlYXRlX2NvbnRleHQiLCBlZ2xfZXh0cykpIHsKLSAgICBjb250ZXh0X2F0dHJpYltpKytdID0gRUdMX0NPTlRFWFRfRkxBR1NfS0hSOwotICAgIGNvbnRleHRfYXR0cmliW2krK10gPSBFR0xfQ09OVEVYVF9PUEVOR0xfREVCVUdfQklUX0tIUjsKLSAgfQotI2VuZGlmCi0gIGNvbnRleHRfYXR0cmliW2krK10gPSBFR0xfTk9ORTsKLQotICBlZ2wtPmVnbF9jb250ZXh0ID0KLSAgICAgIGVnbENyZWF0ZUNvbnRleHQgKGVnbC0+ZWdsX2Rpc3BsYXksIGVnbC0+ZWdsX2NvbmZpZywKLSAgICAgIChFR0xDb250ZXh0KSBleHRlcm5hbF9nbF9jb250ZXh0LCBjb250ZXh0X2F0dHJpYik7Ci0KLSNpZmRlZiBFR0xfS0hSX2NyZWF0ZV9jb250ZXh0Ci0gIGlmIChlZ2wtPmVnbF9jb250ZXh0ID09IEVHTF9OT19DT05URVhUICYmIGVnbC0+Z2xfYXBpICYgR1NUX0dMX0FQSV9HTEVTMgotICAgICAgJiYgZWdsR2V0RXJyb3IgKCkgIT0gRUdMX1NVQ0NFU1MpIHsKLSAgICAvKiB0cnkgd2l0aG91dCBFR0xfQ09OVEVYVF9GTEFHUyBmbGFncyBhcyBpdCB3YXMgYWRkZWQgdG8KLSAgICAgKiBFR0xfS0hSX2NyZWF0ZV9jb250ZXh0IGZvciBnbGVzIGNvbnRleHRzICovCi0gICAgaW50IGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoY29udGV4dF9hdHRyaWIpOyBpKyspIHsKLSAgICAgIGlmIChjb250ZXh0X2F0dHJpYltpXSA9PSBFR0xfQ09OVEVYVF9GTEFHU19LSFIgfHwKLSAgICAgICAgICBjb250ZXh0X2F0dHJpYltpXSA9PSBFR0xfQ09OVEVYVF9PUEVOR0xfREVCVUdfQklUX0tIUikKLSAgICAgICAgY29udGV4dF9hdHRyaWJbaV0gPSBFR0xfTk9ORTsKLSAgICB9Ci0gICAgZWdsLT5lZ2xfY29udGV4dCA9Ci0gICAgICAgIGVnbENyZWF0ZUNvbnRleHQgKGVnbC0+ZWdsX2Rpc3BsYXksIGVnbC0+ZWdsX2NvbmZpZywKLSAgICAgICAgKEVHTENvbnRleHQpIGV4dGVybmFsX2dsX2NvbnRleHQsIGNvbnRleHRfYXR0cmliKTsKLSAgfQotI2VuZGlmCi0KICAgaWYgKGVnbC0+ZWdsX2NvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpIHsKICAgICBHU1RfSU5GTyAoImdsIGNvbnRleHQgY3JlYXRlZDogJSIgR19HVUlOVFBUUl9GT1JNQVQsCiAgICAgICAgIChndWludHB0cikgZWdsLT5lZ2xfY29udGV4dCk7CkBAIC0zODYsMzAgKzUyMCwzMCBAQAogICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMX0NPTlRFWFRfRVJST1IsCiAgICAgICAgIEdTVF9HTF9DT05URVhUX0VSUk9SX0NSRUFURV9DT05URVhULAogICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBhIE9wZW5HTCBjb250ZXh0OiAlcyIsCi0gICAgICAgIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfZXJyb3Jfc3RyaW5nICgpKTsKKyAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKGVnbEdldEVycm9yICgpKSk7CiAgICAgZ290byBmYWlsdXJlOwogICB9CiAgIC8qIEZJWE1FIGRvIHdlIHdhbnQgYSB3aW5kb3cgdmZ1bmMgPyAqLwogI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19YMTEKLSAgaWYgKEdTVF9HTF9JU19XSU5ET1dfWDExIChjb250ZXh0LT53aW5kb3cpKSB7CisgIGlmIChHU1RfSVNfR0xfV0lORE9XX1gxMSAoY29udGV4dC0+d2luZG93KSkgewogICAgIGdzdF9nbF93aW5kb3dfeDExX2NyZWF0ZV93aW5kb3cgKChHc3RHTFdpbmRvd1gxMSAqKSBjb250ZXh0LT53aW5kb3cpOwogICB9CiAjZW5kaWYKIAogICBpZiAob3RoZXJfY29udGV4dCA9PSBOVUxMKSB7CiAjaWYgR1NUX0dMX0hBVkVfV0lORE9XX1dBWUxBTkQKLSAgICBpZiAoR1NUX0dMX0lTX1dJTkRPV19XQVlMQU5EX0VHTCAoY29udGV4dC0+d2luZG93KSkgeworICAgIGlmIChHU1RfSVNfR0xfV0lORE9XX1dBWUxBTkRfRUdMIChjb250ZXh0LT53aW5kb3cpKSB7CiAgICAgICBnc3RfZ2xfd2luZG93X3dheWxhbmRfZWdsX2NyZWF0ZV93aW5kb3cgKChHc3RHTFdpbmRvd1dheWxhbmRFR0wgKikKICAgICAgICAgICBjb250ZXh0LT53aW5kb3cpOwogICAgIH0KICNlbmRpZgogI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19XSU4zMgotICAgIGlmIChHU1RfR0xfSVNfV0lORE9XX1dJTjMyIChjb250ZXh0LT53aW5kb3cpKSB7CisgICAgaWYgKEdTVF9JU19HTF9XSU5ET1dfV0lOMzIgKGNvbnRleHQtPndpbmRvdykpIHsKICAgICAgIGdzdF9nbF93aW5kb3dfd2luMzJfY3JlYXRlX3dpbmRvdyAoKEdzdEdMV2luZG93V2luMzIgKikgY29udGV4dC0+d2luZG93KTsKICAgICB9CiAjZW5kaWYKICNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfRElTUE1BTlgKLSAgICBpZiAoR1NUX0dMX0lTX1dJTkRPV19ESVNQTUFOWF9FR0wgKGNvbnRleHQtPndpbmRvdykpIHsKKyAgICBpZiAoR1NUX0lTX0dMX1dJTkRPV19ESVNQTUFOWF9FR0wgKGNvbnRleHQtPndpbmRvdykpIHsKICAgICAgIGdzdF9nbF93aW5kb3dfZGlzcG1hbnhfZWdsX2NyZWF0ZV93aW5kb3cgKChHc3RHTFdpbmRvd0Rpc3BtYW54RUdMICopCiAgICAgICAgICAgY29udGV4dC0+d2luZG93KTsKICAgICB9CkBAIC00MjgsNyArNTYyLDggQEAKICAgICAgICAgd2luZG93X2hhbmRsZSwgTlVMTCk7CiAgICAgLyogU3RvcmUgd2luZG93IGhhbmRsZSBmb3IgbGF0ZXIgY29tcGFyaXNpb24gKi8KICAgICBlZ2wtPndpbmRvd19oYW5kbGUgPSB3aW5kb3dfaGFuZGxlOwotICB9IGVsc2UgaWYgKCFnc3RfZ2xfY2hlY2tfZXh0ZW5zaW9uICgiRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0IiwgZWdsX2V4dHMpKSB7CisgIH0gZWxzZSBpZiAoIWdzdF9nbF9jaGVja19leHRlbnNpb24gKCJFR0xfS0hSX3N1cmZhY2VsZXNzX2NvbnRleHQiLAorICAgICAgICAgIGVnbC0+ZWdsX2V4dHMpKSB7CiAgICAgRUdMaW50IHN1cmZhY2VfYXR0cmliWzddOwogICAgIGdpbnQgaiA9IDA7CiAKQEAgLTQ1OCw3ICs1OTMsNyBAQAogICAgIH0gZWxzZSB7CiAgICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTF9DT05URVhUX0VSUk9SLCBHU1RfR0xfQ09OVEVYVF9FUlJPUl9GQUlMRUQsCiAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgd2luZG93IHN1cmZhY2U6ICVzIiwKLSAgICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoKSk7CisgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKGVnbEdldEVycm9yICgpKSk7CiAgICAgICBnb3RvIGZhaWx1cmU7CiAgICAgfQogICB9CkBAIC00NjksNyArNjA0LDcgQEAKICAgICAgICAgImVnbENyZWF0ZUltYWdlIik7CiAgICAgZWdsLT5lZ2xEZXN0cm95SW1hZ2UgPSBnc3RfZ2xfY29udGV4dF9nZXRfcHJvY19hZGRyZXNzIChjb250ZXh0LAogICAgICAgICAiZWdsRGVzdHJveUltYWdlIik7Ci0gIH0gZWxzZSBpZiAoZ3N0X2dsX2NoZWNrX2V4dGVuc2lvbiAoIkVHTF9LSFJfaW1hZ2VfYmFzZSIsIGVnbF9leHRzKSkgeworICB9IGVsc2UgaWYgKGdzdF9nbF9jaGVja19leHRlbnNpb24gKCJFR0xfS0hSX2ltYWdlX2Jhc2UiLCBlZ2wtPmVnbF9leHRzKSkgewogICAgIGVnbC0+ZWdsQ3JlYXRlSW1hZ2UgPSBnc3RfZ2xfY29udGV4dF9nZXRfcHJvY19hZGRyZXNzIChjb250ZXh0LAogICAgICAgICAiZWdsQ3JlYXRlSW1hZ2VLSFIiKTsKICAgICBlZ2wtPmVnbERlc3Ryb3lJbWFnZSA9IGdzdF9nbF9jb250ZXh0X2dldF9wcm9jX2FkZHJlc3MgKGNvbnRleHQsCkBAIC01NDAsNyArNjc1LDcgQEAKICAgICAgICAgZWdsLT5lZ2xfc3VyZmFjZSA9IEVHTF9OT19TVVJGQUNFOwogICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNvbnRleHQsICJGYWlsZWQgdG8gZGVzdHJveSBvbGQgd2luZG93IHN1cmZhY2U6ICVzIiwKLSAgICAgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKCkpOworICAgICAgICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoZWdsR2V0RXJyb3IgKCkpKTsKICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTU1MSwyMSArNjg2LDIyIEBACiAKICAgICAgIGlmIChlZ2wtPmVnbF9zdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKSB7CiAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNvbnRleHQsICJGYWlsZWQgdG8gY3JlYXRlIHdpbmRvdyBzdXJmYWNlOiAlcyIsCi0gICAgICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoKSk7CisgICAgICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoZWdsR2V0RXJyb3IgKCkpKTsKICAgICAgICAgcmVzdWx0ID0gRkFMU0U7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgIH0KICAgICB9CiAgICAgcmVzdWx0ID0gZWdsTWFrZUN1cnJlbnQgKGVnbC0+ZWdsX2Rpc3BsYXksIGVnbC0+ZWdsX3N1cmZhY2UsCiAgICAgICAgIGVnbC0+ZWdsX3N1cmZhY2UsIGVnbC0+ZWdsX2NvbnRleHQpOwotICB9IGVsc2UKKyAgfSBlbHNlIHsKICAgICByZXN1bHQgPSBlZ2xNYWtlQ3VycmVudCAoZWdsLT5lZ2xfZGlzcGxheSwgRUdMX05PX1NVUkZBQ0UsCiAgICAgICAgIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7CisgIH0KIAogICBpZiAoIXJlc3VsdCkgewogICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNvbnRleHQsCiAgICAgICAgICJGYWlsZWQgdG8gYmluZCBjb250ZXh0IHRvIHRoZSBjdXJyZW50IHJlbmRlcmluZyB0aHJlYWQ6ICVzIiwKLSAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKCkpOworICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoZWdsR2V0RXJyb3IgKCkpKTsKICAgfQogCiBkb25lOgpAQCAtNjEwLDcgKzc0Niw3IEBACiAjZWxzZQogICAvKiBPbiBMaW51eCB0aGUgLnNvIGlzIG9ubHkgaW4gLWRldiBwYWNrYWdlcywgdHJ5IHdpdGggYSByZWFsIHNvbmFtZQogICAgKiBQcm9wZXIgY29tcGlsZXJzIHdpbGwgb3B0aW1pemUgYXdheSB0aGUgc3RyY21wICovCi0gIGlmIChzdHJjbXAgKEdfTU9EVUxFX1NVRkZJWCwgInNvIikgPT0gMCkKKyAgaWYgKGdfc3RyY21wMCAoR19NT0RVTEVfU1VGRklYLCAic28iKSA9PSAwKQogICAgIG1vZHVsZV9lZ2wgPSBnX21vZHVsZV9vcGVuICgibGliRUdMLnNvLjEiLCBHX01PRFVMRV9CSU5EX0xBWlkpOwogCiAgIC8qIFRoaXMgYXV0b21hdGljYWxseSBoYW5kbGVzIHRoZSBzdWZmaXggYW5kIGV2ZW4gLmxhIGZpbGVzICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsY29udGV4dF9lZ2wuaCBiL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5oCmluZGV4IDg4YjhiZDcuLjkwYWJiMDMgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5oCkBAIC0zNCw4ICszNCw4IEBACiAjZGVmaW5lIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUdMICAgICAgICAgKGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9FR0wobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUdMLCBHc3RHTENvbnRleHRFR0wpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9FR0xfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1MoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX0VHTCwgR3N0R0xDb250ZXh0RUdMQ2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfQ09OVEVYVF9FR0wobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUdMKSkKLSNkZWZpbmUgR1NUX0dMX0lTX0NPTlRFWFRfRUdMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX0VHTCkpCisjZGVmaW5lIEdTVF9JU19HTF9DT05URVhUX0VHTChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9FR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfQ09OVEVYVF9FR0xfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUdMKSkKICNkZWZpbmUgR1NUX0dMX0NPTlRFWFRfRUdMX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUdMLCBHc3RHTENvbnRleHRFR0xDbGFzcykpCiAKIHN0cnVjdCBfR3N0R0xDb250ZXh0RUdMIHsKQEAgLTQ4LDYgKzQ4LDggQEAKIAogICBHc3RHTEFQSSBnbF9hcGk7CiAKKyAgY29uc3QgZ2NoYXIgKmVnbF9leHRzOworCiAgIEVHTEltYWdlS0hSICgqZWdsQ3JlYXRlSW1hZ2UpIChFR0xEaXNwbGF5IGRweSwgRUdMQ29udGV4dCBjdHgsIEVHTGVudW0gdGFyZ2V0LAogICAgICAgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCk7CiAgIEVHTEJvb2xlYW4gKCplZ2xEZXN0cm95SW1hZ2UpIChFR0xEaXNwbGF5IGRweSwgRUdMSW1hZ2VLSFIgaW1hZ2UpOwpAQCAtNjQsNiArNjYsOSBAQAogZ3VpbnRwdHIgICAgICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2N1cnJlbnRfY29udGV4dCAgKHZvaWQpOwogZ3BvaW50ZXIgICAgICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X3Byb2NfYWRkcmVzcyAgICAgKEdzdEdMQVBJIGdsX2FwaSwgY29uc3QgZ2NoYXIgKiBuYW1lKTsKIAorY29uc3QgZ2NoYXIgKiBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoRUdMaW50IGVycik7CisKKwogLyogVE9ETzoKICAqIGFkZCBzdXBwb3J0IGZvciBFR0xfTk9fQ09OVEVYVAogICogYWRkIGdzdF9nbF9jb250ZXh0X2VnbF9uZXdfZ2xfbm9fY29udGV4dCB0aGF0IG9ubHkgbWFuYWdlcyB0aGUgZGlzcGxheQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dsLmggYi9nc3QtbGlicy9nc3QvZ2wvZ2wuaAppbmRleCA0YjFlOGVmLi5iMTdhNGM2IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ2wuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ2wuaApAQCAtMzEsMjMgKzMxLDI4IEBACiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsYXBpLmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZGlzcGxheS5oPgogI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGNvbnRleHQuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xkZWJ1Zy5oPgogI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGZlYXR1cmUuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xmb3JtYXQuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2x1dGlscy5oPgogI2luY2x1ZGUgPGdzdC9nbC9nc3RnbHdpbmRvdy5oPgorI2luY2x1ZGUgPGdzdC9nbC9nc3RnbHNsc3RhZ2UuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xzaGFkZXIuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xzaGFkZXJzdHJpbmdzLmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0Lmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsdXBsb2FkLmg+Ci0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsdXBsb2FkbWV0YS5oPgotI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGRvd25sb2FkLmg+Ci0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsYmFzZWJ1ZmZlci5oPgorI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xidWZmZXIuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xtZW1vcnkuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZnJhbWVidWZmZXIuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xmaWx0ZXIuaD4KLSNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xzeW5jbWV0YS5oPgogI2luY2x1ZGUgPGdzdC9nbC9nc3RnbG92ZXJsYXljb21wb3NpdG9yLmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdscXVlcnkuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5Lmg+CiAKICNlbmRpZiAvKiBfX0dTVF9HTF9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL01ha2VmaWxlLmFtCmluZGV4IDZlYTkwZGIuLjU0ZWJjMjcgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvTWFrZWZpbGUuYW0KKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9NYWtlZmlsZS5hbQpAQCAtMTUsNSArMTUsNiBAQAogCWRlYnVnLmggXAogCXZhby5oIFwKIAlzeW5jLmggXAotCWJ1ZmZlcnMuaAorCWJ1ZmZlcnMuaCBcCisJcXVlcnkuaAogCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL01ha2VmaWxlLmluIGIvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9NYWtlZmlsZS5pbgppbmRleCAxOTU4YmE5Li41MGQ3ZGY2IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChwcm90b3R5cGVfSEVBREVSUykgXApAQCAtMjM3LDYgKzIzNiw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjc0LDYgKzI3NSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjgyLDcgKzI4NSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMwMSw4ICszMDMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzE5LDE2ICszMjIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzU0LDYgKzM1OCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM3OSw2ICszODUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00ODAsNiArNDg4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTQ5Myw4ICs1MDIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MTAsNiArNTE3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU2NywxNiArNTc2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjI4LDYgKzYzOSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02MzgsNiArNjUwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjQ3LDYgKzY2MCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02ODQsNyArNjk5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NDAsNyArNzU0LDggQEAKIAlkZWJ1Zy5oIFwKIAl2YW8uaCBcCiAJc3luYy5oIFwKLQlidWZmZXJzLmgKKwlidWZmZXJzLmggXAorCXF1ZXJ5LmgKIAogYWxsOiBhbGwtYW0KIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9hbGxfZnVuY3Rpb25zLmggYi9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2FsbF9mdW5jdGlvbnMuaAppbmRleCBjNmFmNDE1Li45ZjdlNGYxIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2FsbF9mdW5jdGlvbnMuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2FsbF9mdW5jdGlvbnMuaApAQCAtMzAsMyArMzAsNCBAQAogI2luY2x1ZGUgInZhby5oIgogI2luY2x1ZGUgInN5bmMuaCIKICNpbmNsdWRlICJidWZmZXJzLmgiCisjaW5jbHVkZSAicXVlcnkuaCIKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvYmFzZS5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9iYXNlLmgKaW5kZXggZjA1MjhiNy4uODM5NGEzOCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9iYXNlLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9iYXNlLmgKQEAgLTI1NSw3ICsyNTUsNyBAQAogICAgICAgICAgICAgICAgICAgIkFSQlwwIiwKICAgICAgICAgICAgICAgICAgICJ2ZXJ0ZXhfYnVmZmVyX29iamVjdFwwIikKIEdTVF9HTF9FWFRfRlVOQ1RJT04gKHZvaWQsIEdlbkJ1ZmZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAoR0x1aW50CQkgbiwKKyAgICAgICAgICAgICAgICAgICAgIChHTHNpemVpCQkgbiwKICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQJCSpidWZmZXJzKSkKIEdTVF9HTF9FWFRfRlVOQ1RJT04gKHZvaWQsIEJpbmRCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAoR0xlbnVtCQkgdGFyZ2V0LApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9kZWJ1Zy5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9kZWJ1Zy5oCmluZGV4IDZjNTNlYTIuLjEzNWQ0ZTYgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvZGVidWcuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2RlYnVnLmgKQEAgLTM0LDYgKzM0LDcgQEAKIEdTVF9HTF9FWFRfRlVOQ1RJT04gKHZvaWQsIERlYnVnTWVzc2FnZUluc2VydCwKICAgICAgICAgICAgICAgICAgICAgIChHTGVudW0gc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJpdHksCiAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKm1lc3NhZ2UpKQpAQCAtNTIsNyArNTMsNyBAQAogR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgR2V0UG9pbnRlcnYsCiAgICAgICAgICAgICAgICAgICAgICAoR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICogcGFyYW1zKSkKLUdTVF9HTF9FWFRfRU5EICgpICAgICAgICAgICAgICAgICAgICAgIAorR1NUX0dMX0VYVF9FTkQgKCkKIAogR1NUX0dMX0VYVF9CRUdJTiAoa2hyX2RlYnVnLAogICAgICAgICAgICAgICAgICAgR1NUX0dMX0FQSV9PUEVOR0wzLApAQCAtODgsMyArODksMjkgQEAKICAgICAgICAgICAgICAgICAgICAgICBnY2hhciAqbGFiZWwpKQogR1NUX0dMX0VYVF9FTkQgKCkKIAorR1NUX0dMX0VYVF9CRUdJTiAoZXh0X2RlYnVnX21hcmtlciwKKyAgICAgICAgICAgICAgICAgIEdTVF9HTF9BUElfTk9ORSwKKyAgICAgICAgICAgICAgICAgIDI1NSwgMjU1LAorICAgICAgICAgICAgICAgICAgMjU1LCAyNTUsCisgICAgICAgICAgICAgICAgICAiRVhUXDAiLAorICAgICAgICAgICAgICAgICAgImRlYnVnX21hcmtlclwwIikKK0dTVF9HTF9FWFRfRlVOQ1RJT04gKHZvaWQsIEluc2VydEV2ZW50TWFya2VyLAorICAgICAgICAgICAgICAgICAgICAgKEdMc2l6ZWkgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogbWVzc2FnZSkpCitHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBQdXNoR3JvdXBNYXJrZXIsCisgICAgICAgICAgICAgICAgICAgICAoR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBtZXNzYWdlKSkKK0dTVF9HTF9FWFRfRlVOQ1RJT04gKHZvaWQsIFBvcEdyb3VwTWFya2VyLAorICAgICAgICAgICAgICAgICAgICAgKHZvaWQpKQorR1NUX0dMX0VYVF9FTkQgKCkKKworR1NUX0dMX0VYVF9CRUdJTiAoZ3JlbWVkeV9zdHJpbmdfbWFya2VyLAorICAgICAgICAgICAgICAgICAgR1NUX0dMX0FQSV9OT05FLAorICAgICAgICAgICAgICAgICAgMjU1LCAyNTUsCisgICAgICAgICAgICAgICAgICAyNTUsIDI1NSwKKyAgICAgICAgICAgICAgICAgICJHUkVNRURZXDAiLAorICAgICAgICAgICAgICAgICAgInN0cmluZ19tYXJrZXJcMCIpCitHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBTdHJpbmdNYXJrZXIsCisgICAgICAgICAgICAgICAgICAgICAoR0xzaXplaSBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBtZXNzYWdlKSkKK0dTVF9HTF9FWFRfRU5EICgpCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2dzdGdsX2NvbXBhdC5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9nc3RnbF9jb21wYXQuaAppbmRleCBhNGY5NjNkLi4zMWIxZTAwIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2dzdGdsX2NvbXBhdC5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvZ3N0Z2xfY29tcGF0LmgKQEAgLTQyLDYgKzQyLDkgQEAKICNpZiAhR1NUX0dMX0hBVkVfR0xVSU5UNjQKIHR5cGVkZWYgZ3VpbnQ2NCBHTHVpbnQ2NDsKICNlbmRpZgorI2lmICFHU1RfR0xfSEFWRV9HTElOVDY0Cit0eXBlZGVmIGdpbnQ2NCBHTGludDY0OworI2VuZGlmCiAKICNpZiAhZGVmaW5lZChHU1RfR0xfREVCVUdfUFJPQykKICNpZiBkZWZpbmVkKEdMREVCVUdQUk9DKQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9xdWVyeS5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9xdWVyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZjFiYTIKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL3F1ZXJ5LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE2IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCitHU1RfR0xfRVhUX0JFR0lOICh0aW1lcl9xdWVyeSwKKyAgICAgICAgICAgICAgICAgIEdTVF9HTF9BUElfT1BFTkdMMywKKyAgICAgICAgICAgICAgICAgIDMsIDMsCisgICAgICAgICAgICAgICAgICAzLCAwLAorICAgICAgICAgICAgICAgICAgIkFSQjpcMEFOR0xFXDBFWFRcMCIsCisgICAgICAgICAgICAgICAgICAidGltZXJfcXVlcnlcMGRpc2pvaW50X3RpbWVyX3F1ZXJ5XDAiKQorR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgR2VuUXVlcmllcywKKyAgICAgICAgICAgICAgICAgICAgIChHTHNpemVpIG4sCisgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmlkcykpCitHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBEZWxldGVRdWVyaWVzLAorICAgICAgICAgICAgICAgICAgICAgKEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKmlkcykpCitHU1RfR0xfRVhUX0ZVTkNUSU9OIChHTGJvb2xlYW4sIElzUXVlcnksCisgICAgICAgICAgICAgICAgICAgICAoR0x1aW50IGlkKSkKK0dTVF9HTF9FWFRfRlVOQ1RJT04gKHZvaWQsIEJlZ2luUXVlcnksCisgICAgICAgICAgICAgICAgICAgICAoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQpKQorR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgRW5kUXVlcnksCisgICAgICAgICAgICAgICAgICAgICAoR0xlbnVtIHRhcmdldCkpCitHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBRdWVyeUNvdW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAoR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCkpCitHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBHZXRRdWVyeWl2LAorICAgICAgICAgICAgICAgICAgICAgKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpKQorR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgR2V0UXVlcnlPYmplY3RpdiwKKyAgICAgICAgICAgICAgICAgICAgIChHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpKQorR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgR2V0UXVlcnlPYmplY3R1aXYsCisgICAgICAgICAgICAgICAgICAgICAoR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykpCitHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBHZXRRdWVyeU9iamVjdGk2NHYsCisgICAgICAgICAgICAgICAgICAgICAoR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBHTGludDY0ICpwYXJhbXMpKQorR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgR2V0UXVlcnlPYmplY3R1aTY0diwKKyAgICAgICAgICAgICAgICAgICAgIChHTHVpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0ICpwYXJhbXMpKQorR1NUX0dMX0VYVF9FTkQgKCkKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbF9lbnVtcy5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVjN2IzOQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbF9lbnVtcy5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfR1NUX0dMX0VOVU1TX0hfCisjZGVmaW5lIF9HU1RfR0xfRU5VTVNfSF8KKworLyoqCisgKiBHc3RHTFRleHR1cmVUYXJnZXQ6CisgKiBAR1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkU6IG5vIHRleHR1cmUgdGFyZ2V0CisgKiBAR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEOiAyRCB0ZXh0dXJlIHRhcmdldAorICogQEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU6IHJlY3RhbmdsZSB0ZXh0dXJlIHRhcmdldAorICogQEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVM6IGV4dGVybmFsIG9lcyB0ZXh0dXJlIHRhcmdldAorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordHlwZWRlZiBlbnVtCit7CisgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FLAorICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQsCisgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUsCisgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMsCit9IEdzdEdMVGV4dHVyZVRhcmdldDsKKworI2VuZGlmIC8qIF9HU1RfR0xfRU5VTVNfSF8gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbF9md2QuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbF9md2QuaAppbmRleCBjYjI5YzZkLi5mYjY0ZmY2IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oCkBAIC0zOSwyOSArMzksMzcgQEAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFdpbmRvd1ByaXZhdGUgR3N0R0xXaW5kb3dQcml2YXRlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMV2luZG93Q2xhc3MgICBHc3RHTFdpbmRvd0NsYXNzOwogCi10eXBlZGVmIHN0cnVjdCBfR3N0R0xCYXNlQnVmZmVyIEdzdEdMQmFzZUJ1ZmZlcjsKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3IgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQmFzZU1lbW9yeSBHc3RHTEJhc2VNZW1vcnk7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzczsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQnVmZmVyIEdzdEdMQnVmZmVyOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQnVmZmVyQWxsb2NhdG9yIEdzdEdMQnVmZmVyQWxsb2NhdG9yOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3MgR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzczsKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMTWVtb3J5IEdzdEdMTWVtb3J5OwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQWxsb2NhdG9yIEdzdEdMQWxsb2NhdG9yOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQWxsb2NhdG9yQ2xhc3MgR3N0R0xBbGxvY2F0b3JDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTE1lbW9yeUFsbG9jYXRvciBHc3RHTE1lbW9yeUFsbG9jYXRvcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzIEdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3M7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTE1lbW9yeVBCTyBHc3RHTE1lbW9yeVBCTzsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTE1lbW9yeVBCT0FsbG9jYXRvciBHc3RHTE1lbW9yeVBCT0FsbG9jYXRvcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzIEdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yQ2xhc3M7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTFNMU3RhZ2UgICAgICAgIEdzdEdMU0xTdGFnZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTFNMU3RhZ2VQcml2YXRlIEdzdEdMU0xTdGFnZVByaXZhdGU7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xTTFN0YWdlQ2xhc3MgICBHc3RHTFNMU3RhZ2VDbGFzczsKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMU2hhZGVyICAgICAgICBHc3RHTFNoYWRlcjsKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFNoYWRlclByaXZhdGUgR3N0R0xTaGFkZXJQcml2YXRlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMU2hhZGVyQ2xhc3MgICBHc3RHTFNoYWRlckNsYXNzOwogCi10eXBlZGVmIHN0cnVjdCBfR3N0R0xEb3dubG9hZCBHc3RHTERvd25sb2FkOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMRG93bmxvYWRDbGFzcyBHc3RHTERvd25sb2FkQ2xhc3M7Ci10eXBlZGVmIHN0cnVjdCBfR3N0R0xEb3dubG9hZFByaXZhdGUgR3N0R0xEb3dubG9hZFByaXZhdGU7Ci0KIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFVwbG9hZCBHc3RHTFVwbG9hZDsKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFVwbG9hZENsYXNzIEdzdEdMVXBsb2FkQ2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xVcGxvYWRQcml2YXRlIEdzdEdMVXBsb2FkUHJpdmF0ZTsKIAotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMVXBsb2FkTWV0YSBHc3RHTFVwbG9hZE1ldGE7Ci10eXBlZGVmIHN0cnVjdCBfR3N0R0xVcGxvYWRNZXRhQ2xhc3MgR3N0R0xVcGxvYWRNZXRhQ2xhc3M7Ci10eXBlZGVmIHN0cnVjdCBfR3N0R0xVcGxvYWRNZXRhUHJpdmF0ZSBHc3RHTFVwbG9hZE1ldGFQcml2YXRlOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQnVmZmVyUG9vbCBHc3RHTEJ1ZmZlclBvb2w7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xCdWZmZXJQb29sQ2xhc3MgR3N0R0xCdWZmZXJQb29sQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xCdWZmZXJQb29sUHJpdmF0ZSBHc3RHTEJ1ZmZlclBvb2xQcml2YXRlOwogCiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xDb2xvckNvbnZlcnQgR3N0R0xDb2xvckNvbnZlcnQ7CiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xDb2xvckNvbnZlcnRDbGFzcyBHc3RHTENvbG9yQ29udmVydENsYXNzOwpAQCAtODEsNiArODksNzQgQEAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTE92ZXJsYXlDb21wb3NpdG9yIEdzdEdMT3ZlcmxheUNvbXBvc2l0b3I7CiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xPdmVybGF5Q29tcG9zaXRvckNsYXNzIEdzdEdMT3ZlcmxheUNvbXBvc2l0b3JDbGFzczsKIAordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMUXVlcnkgR3N0R0xRdWVyeTsKKworI2luY2x1ZGUgPGdzdC9nbC9nc3RnbF9lbnVtcy5oPgorCisjaWZkZWYgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdzdEdMQmFzZUZpbHRlciwgZ3N0X29iamVjdF91bnJlZikKKyNlbmRpZgorCisjaWZkZWYgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciwgZ3N0X29iamVjdF91bnJlZikKKyNlbmRpZgorCisjaWZkZWYgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdzdEdMQnVmZmVyQWxsb2NhdG9yLCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKKyNpZmRlZiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQworR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR3N0R0xCdWZmZXJQb29sLCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKKyNpZmRlZiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQworR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR3N0R0xDb2xvckNvbnZlcnQsIGdzdF9vYmplY3RfdW5yZWYpCisjZW5kaWYKKworI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHc3RHTENvbnRleHQsIGdzdF9vYmplY3RfdW5yZWYpCisjZW5kaWYKKworI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHc3RHTERpc3BsYXksIGdzdF9vYmplY3RfdW5yZWYpCisjZW5kaWYKKworI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHc3RHTEZpbHRlciwgZ3N0X29iamVjdF91bnJlZikKKyNlbmRpZgorCisjaWZkZWYgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdzdEdMTWVtb3J5QWxsb2NhdG9yLCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKKyNpZmRlZiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQworR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3IsIGdzdF9vYmplY3RfdW5yZWYpCisjZW5kaWYKKworI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHc3RHTE92ZXJsYXlDb21wb3NpdG9yLCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKKyNpZmRlZiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQworR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR3N0R0xTTFN0YWdlLCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKKyNpZmRlZiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQworR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR3N0R0xTaGFkZXIsIGdzdF9vYmplY3RfdW5yZWYpCisjZW5kaWYKKworI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHc3RHTFVwbG9hZCwgZ3N0X29iamVjdF91bnJlZikKKyNlbmRpZgorCisjaWZkZWYgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdzdEdMVmlld0NvbnZlcnQsIGdzdF9vYmplY3RfdW5yZWYpCisjZW5kaWYKKworI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHc3RHTFdpbmRvdywgZ3N0X29iamVjdF91bnJlZikKKyNlbmRpZgorCiBHX0VORF9ERUNMUwogCiAjZW5kaWYgLyogX19HU1RfR0xfRldEX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYXBpLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xhcGkuYwppbmRleCAzYmVlMTRiLi5mNzlhNmU0IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xhcGkuYworKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xhcGkuYwpAQCAtMTIwLDkgKzEyMCw5IEBACiAKIC8qKgogICogZ3N0X2dsX3BsYXRmb3JtX3RvX3N0cmluZzoKLSAqIEBhcGk6IGEgI0dzdEdMUGxhdGZvcm0gdG8gc3RyaW5naWZ5CisgKiBAcGxhdGZvcm06IGEgI0dzdEdMUGxhdGZvcm0gdG8gc3RyaW5naWZ5CiAgKgotICogUmV0dXJuczogQSBzcGFjZSBzZXBlcmF0ZWQgc3RyaW5nIG9mIHRoZSBPcGVuR0wgcGxhdGZvcm1zIGVuYWJsZWQgaW4gQGFwaQorICogUmV0dXJuczogQSBzcGFjZSBzZXBlcmF0ZWQgc3RyaW5nIG9mIHRoZSBPcGVuR0wgcGxhdGZvcm1zIGVuYWJsZWQgaW4gQHBsYXRmb3JtCiAgKi8KIGdjaGFyICoKIGdzdF9nbF9wbGF0Zm9ybV90b19zdHJpbmcgKEdzdEdMUGxhdGZvcm0gcGxhdGZvcm0pCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xhcGkuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGFwaS5oCmluZGV4IGRkNDRiNDUuLmJlMzgxMTMgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGFwaS5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGFwaS5oCkBAIC0yMyw2ICsyMywxMyBAQAogCiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsY29uZmlnLmg+CiAKKy8qIFRoaXMgbWltaWMgR0NDIGJlaGF2aW91ciB3aXRoIHN5c3RlbSBoZWFkZXJzIGZpbGVzIGV2ZW4gaWYgR0wgaGVhZGVycyBtYXkKKyAqIG5vdCBiZSBpbiB0aGUgc3lzdGVtIGhlYWRlciBwYXRoLiAqLworI2lmZGVmIF9fR05VQ19fCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdyZWR1bmRhbnQtZGVjbHMiCisjZW5kaWYKKwogLyogT3BlbkdMIDIuMCBmb3IgRW1iZWRkZWQgU3lzdGVtcyAqLwogI2lmIEdTVF9HTF9IQVZFX0dMRVMyCiAjaWZuZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKQEAgLTU3LDYgKzY0LDEwIEBACiAjIGVuZGlmCiAjZW5kaWYKIAorI2lmZGVmIF9fR05VQ19fCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKICNpZmRlZiBXSU5BUEkKICNkZWZpbmUgR1NUR0xBUEkgV0lOQVBJCiAjZWxzZQpAQCAtNjgsNiArNzksMTYgQEAKIAogR19CRUdJTl9ERUNMUwogCisvKioKKyAqIEdzdEdMQVBJOgorICogQEdTVF9HTF9BUElfTk9ORTogbm8gQVBJCisgKiBAR1NUX0dMX0FQSV9PUEVOR0w6IERlc2t0b3AgT3BlbkdMIHVwIHRvIGFuZCBpbmNsdWRpbmcgMy4xLiAgVGhlCisgKiAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eSBwcm9maWxlIHdoZW4gdGhlIE9wZW5HTCB2ZXJzaW9uIGlzID49IDMuMgorICogQEdTVF9HTF9BUElfT1BFTkdMMzogRGVza3RvcCBPcGVuR0wgPj0gMy4yIGNvcmUgcHJvZmlsZQorICogQEdTVF9HTF9BUElfR0xFUzE6IE9wZW5HTCBFUyAxLngKKyAqIEBHU1RfR0xfQVBJX0dMRVMyOiBPcGVuR0wgRVMgMi54IGFuZCAzLngKKyAqIEBHU1RfR0xfQVBJX0FOWTogQW55IE9wZW5HTCBBUEkKKyAqLwogdHlwZWRlZiBlbnVtIHsKICAgR1NUX0dMX0FQSV9OT05FID0gMCwKICAgR1NUX0dMX0FQSV9PUEVOR0wgPSAoMSA8PCAwKSwKQEAgLTc4LDExICs5OSw0NSBAQAogICBHU1RfR0xfQVBJX0FOWSA9IEdfTUFYVUlOVDMyCiB9IEdzdEdMQVBJOwogCisvKioKKyAqIEdTVF9HTF9BUElfT1BFTkdMX05BTUU6CisgKgorICogVGhlIG5hbWUgZm9yICVHU1RfR0xfQVBJX09QRU5HTCB1c2VkIGluIHZhcmlvdXMgcGxhY2VzCisgKi8KICNkZWZpbmUgR1NUX0dMX0FQSV9PUEVOR0xfTkFNRSAib3BlbmdsIgorCisvKioKKyAqIEdTVF9HTF9BUElfT1BFTkdMM19OQU1FOgorICoKKyAqIFRoZSBuYW1lIGZvciAlR1NUX0dMX0FQSV9PUEVOR0wzIHVzZWQgaW4gdmFyaW91cyBwbGFjZXMKKyAqLwogI2RlZmluZSBHU1RfR0xfQVBJX09QRU5HTDNfTkFNRSAib3BlbmdsMyIKKworLyoqCisgKiBHU1RfR0xfQVBJX0dMRVMxX05BTUU6CisgKgorICogVGhlIG5hbWUgZm9yICVHU1RfR0xfQVBJX0dMRVMxIHVzZWQgaW4gdmFyaW91cyBwbGFjZXMKKyAqLwogI2RlZmluZSBHU1RfR0xfQVBJX0dMRVMxX05BTUUgImdsZXMxIgorCisvKioKKyAqIEdTVF9HTF9BUElfR0xFUzJfTkFNRToKKyAqCisgKiBUaGUgbmFtZSBmb3IgJUdTVF9HTF9BUElfR0xFUzIgdXNlZCBpbiB2YXJpb3VzIHBsYWNlcworICovCiAjZGVmaW5lIEdTVF9HTF9BUElfR0xFUzJfTkFNRSAiZ2xlczIiCiAKKy8qKgorICogR3N0R0xQbGF0Zm9ybToKKyAqIEBHU1RfR0xfUExBVEZPUk1fTk9ORTogbm8gcGxhdGZvcm0KKyAqIEBHU1RfR0xfUExBVEZPUk1fRUdMOiB0aGUgRUdMIHBsYXRmb3JtIHVzZWQgcHJpbWFyaWx5IHdpdGggdGhlIFgxMSwgd2F5bGFuZAorICogICAgICAgICAgICAgICAgICAgICAgYW5kIGFuZHJvaWQgd2luZG93IHN5c3RlbXMgYXMgd2VsbCBhcyBvbiBlbWJlZGRlZCBMaW51eAorICogQEdTVF9HTF9QTEFURk9STV9HTFg6IHRoZSBHTFggcGxhdGZvcm0gdXNlZCBwcmltYXJpbHkgd2l0aCB0aGUgWDExIHdpbmRvdyBzeXN0ZW0KKyAqIEBHU1RfR0xfUExBVEZPUk1fV0dMOiB0aGUgV0dMIHBsYXRmb3JtIHVzZWQgcHJpbWFyaWx5IG9uIFdpbmRvd3MKKyAqIEBHU1RfR0xfUExBVEZPUk1fQ0dMOiB0aGUgQ0dMIHBsYXRmb3JtIHVzZWQgcHJpbWFyaWx5IG9uIE9TIFgKKyAqIEBHU1RfR0xfUExBVEZPUk1fRUFHTDogdGhlIEVBR0wgcGxhdGZvcm0gdXNlZCBwcmltYXJpbHkgb24gaU9TCisgKiBAR1NUX0dMX1BMQVRGT1JNX0FOWTogYW55IE9wZW5HTCBwbGF0Zm9ybQorICovCiB0eXBlZGVmIGVudW0KIHsKICAgR1NUX0dMX1BMQVRGT1JNX05PTkUgPSAwLApAQCAtMTE0LDcgKzE2OSw3IEBACiBnY2hhciAqIGdzdF9nbF9hcGlfdG9fc3RyaW5nIChHc3RHTEFQSSBhcGkpOwogR3N0R0xBUEkgZ3N0X2dsX2FwaV9mcm9tX3N0cmluZyAoY29uc3QgZ2NoYXIgKiBhcGlfcyk7CiAKLWdjaGFyICogZ3N0X2dsX3BsYXRmb3JtX3RvX3N0cmluZyAoR3N0R0xQbGF0Zm9ybSBhcGkpOworZ2NoYXIgKiBnc3RfZ2xfcGxhdGZvcm1fdG9fc3RyaW5nIChHc3RHTFBsYXRmb3JtIHBsYXRmb3JtKTsKIEdzdEdMUGxhdGZvcm0gZ3N0X2dsX3BsYXRmb3JtX2Zyb21fc3RyaW5nIChjb25zdCBnY2hhciAqIHBsYXRmb3JtX3MpOwogCiBHX0VORF9ERUNMUwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZWJ1ZmZlci5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZWJ1ZmZlci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTVlMTA0Li4wMDAwMDAwCi0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VidWZmZXIuYworKysgL2Rldi9udWxsCkBAIC0xLDY2NiArMCwwIEBACi0vKgotICogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSAiZ3N0Z2xiYXNlYnVmZmVyLmgiCi0jaW5jbHVkZSAiZ3N0Z2x1dGlscy5oIgotCi0vKioKLSAqIFNFQ1RJT046Z3N0Z2xidWZmZXIKLSAqIEBzaG9ydF9kZXNjcmlwdGlvbjogbWVtb3J5IHN1YmNsYXNzIGZvciBHTCBidWZmZXJzCi0gKiBAc2VlX2Fsc286ICNHc3RNZW1vcnksICNHc3RBbGxvY2F0b3IKLSAqCi0gKiBHc3RHTEJhc2VCdWZmZXIgaXMgYSAjR3N0TWVtb3J5IHN1YmNsYXNzIHByb3ZpZGluZyBzdXBwb3J0IGZvciB0aGUgbWFwcGluZyBvZgotICogR0wgYnVmZmVycy4gIAotICoKLSAqIERhdGEgaXMgdXBsb2FkZWQgb3IgZG93bmxvYWRlZCBmcm9tIHRoZSBHUFUgYXMgaXMgbmVjZXNzYXJ5LgotICovCi0KLS8qIEltcGxlbWVudGF0aW9uIG5vdGVzOgotICoKLSAqIEN1cnJlbnRseSBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCBHTEVTMiBkaWZmZXJlbmNlcyAobm8gbWFwYnVmZmVyKQotICovCi0KLSNkZWZpbmUgVVNJTkdfT1BFTkdMKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTCwgMSwgMCkpCi0jZGVmaW5lIFVTSU5HX09QRU5HTDMoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMMywgMywgMSkpCi0jZGVmaW5lIFVTSU5HX0dMRVMoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUywgMSwgMCkpCi0jZGVmaW5lIFVTSU5HX0dMRVMyKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAyLCAwKSkKLSNkZWZpbmUgVVNJTkdfR0xFUzMoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDMsIDApKQotCi0vKiBjb21wYXRpYmlsaXR5IGRlZmluaXRpb25zLi4uICovCi0jaWZuZGVmIEdMX01BUF9SRUFEX0JJVAotI2RlZmluZSBHTF9NQVBfUkVBRF9CSVQgMHgwMDAxCi0jZW5kaWYKLSNpZm5kZWYgR0xfTUFQX1dSSVRFX0JJVAotI2RlZmluZSBHTF9NQVBfV1JJVEVfQklUIDB4MDAwMgotI2VuZGlmCi0jaWZuZGVmIEdMX0NPUFlfUkVBRF9CVUZGRVIKLSNkZWZpbmUgR0xfQ09QWV9SRUFEX0JVRkZFUiAweDhGMzYKLSNlbmRpZgotI2lmbmRlZiBHTF9DT1BZX1dSSVRFX0JVRkZFUgotI2RlZmluZSBHTF9DT1BZX1dSSVRFX0JVRkZFUiAweDhGMzcKLSNlbmRpZgotCi1HU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSKTsKLSNkZWZpbmUgR1NUX0NBVF9ERUZVQUxUIEdTVF9DQVRfR0xfQkFTRV9CVUZGRVIKLQotc3RhdGljIEdzdEFsbG9jYXRvciAqX2dsX2Jhc2VfYnVmZmVyX2FsbG9jYXRvcjsKLQotR1F1YXJrCi1nc3RfZ2xfYmFzZV9idWZmZXJfZXJyb3JfcXVhcmsgKHZvaWQpCi17Ci0gIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyAoImdzdC1nbC1iYXNlLWJ1ZmZlci1lcnJvci1xdWFyayIpOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLV9kZWZhdWx0X2NyZWF0ZSAoR3N0R0xCYXNlQnVmZmVyICogbWVtLCBHRXJyb3IgKiogZXJyb3IpCi17Ci0gIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMX0JBU0VfQlVGRkVSX0VSUk9SLCBHU1RfR0xfQkFTRV9CVUZGRVJfRVJST1JfRkFJTEVELAotICAgICAgInN1YmNsYXNzIHNob3VsZCBkZWZpbmUgY3JlYXRlKCkgdmZ1bmMiKTsKLQotICBnX2NyaXRpY2FsICgic3ViY2xhc3Mgc2hvdWxkIG92ZXJyaWRlICIKLSAgICAgICJHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzczo6Y3JlYXRlKCkgZnVuY3Rpb24iKTsKLQotICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0cnVjdCBjcmVhdGVfZGF0YQotewotICBHc3RHTEJhc2VCdWZmZXIgKm1lbTsKLSAgZ2Jvb2xlYW4gcmVzdWx0OwotfTsKLQotc3RhdGljIHZvaWQKLV9tZW1fY3JlYXRlX2dsIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBzdHJ1Y3QgY3JlYXRlX2RhdGEgKnRyYW5zZmVyKQotewotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7Ci0gIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotCi0gIGFsbG9jX2NsYXNzID0KLSAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1JfR0VUX0NMQVNTICh0cmFuc2Zlci0+bWVtLT5tZW0uYWxsb2NhdG9yKTsKLQotICBnX3JldHVybl9pZl9mYWlsIChhbGxvY19jbGFzcy0+Y3JlYXRlICE9IE5VTEwpOwotCi0gIGlmICgodHJhbnNmZXItPnJlc3VsdCA9IGFsbG9jX2NsYXNzLT5jcmVhdGUgKHRyYW5zZmVyLT5tZW0sICZlcnJvcikpKQotICAgIHJldHVybjsKLQotICBnX2Fzc2VydCAoZXJyb3IgIT0gTlVMTCk7Ci0KLSAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwgIkZhaWxlZCB0byBjcmVhdGUgR0wgYnVmZmVyOiAlcyIsCi0gICAgICBlcnJvci0+bWVzc2FnZSk7Ci0gIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7Ci19Ci0KLXZvaWQKLWdzdF9nbF9iYXNlX2J1ZmZlcl9pbml0IChHc3RHTEJhc2VCdWZmZXIgKiBtZW0sIEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwKLSAgICBHc3RNZW1vcnkgKiBwYXJlbnQsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsCi0gICAgZ3NpemUgc2l6ZSkKLXsKLSAgZ3NpemUgYWxpZ24gPSBnc3RfbWVtb3J5X2FsaWdubWVudCwgb2Zmc2V0ID0gMCwgbWF4c2l6ZSA9IHNpemU7Ci0gIEdzdE1lbW9yeUZsYWdzIGZsYWdzID0gMDsKLSAgc3RydWN0IGNyZWF0ZV9kYXRhIGRhdGE7Ci0KLSAgaWYgKHBhcmFtcykgewotICAgIGZsYWdzID0gcGFyYW1zLT5mbGFnczsKLSAgICBhbGlnbiB8PSBwYXJhbXMtPmFsaWduOwotICAgIG9mZnNldCA9IHBhcmFtcy0+cHJlZml4OwotICAgIG1heHNpemUgKz0gcGFyYW1zLT5wcmVmaXggKyBwYXJhbXMtPnBhZGRpbmcgKyBhbGlnbjsKLSAgfQotCi0gIGdzdF9tZW1vcnlfaW5pdCAoR1NUX01FTU9SWV9DQVNUIChtZW0pLCBmbGFncywgYWxsb2NhdG9yLCBwYXJlbnQsIG1heHNpemUsCi0gICAgICBhbGlnbiwgb2Zmc2V0LCBzaXplKTsKLQotICBtZW0tPmNvbnRleHQgPSBnc3Rfb2JqZWN0X3JlZiAoY29udGV4dCk7Ci0gIG1lbS0+ZGF0YSA9IE5VTEw7Ci0gIG1lbS0+YWxsb2NfZGF0YSA9IE5VTEw7Ci0KLSAgZ19tdXRleF9pbml0ICgmbWVtLT5sb2NrKTsKLQotICBkYXRhLm1lbSA9IG1lbTsKLQotICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChjb250ZXh0LAotICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9tZW1fY3JlYXRlX2dsLCAmZGF0YSk7Ci0gIGlmICghZGF0YS5yZXN1bHQpIHsKLSAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSLAotICAgICAgICAiQ291bGQgbm90IGNyZWF0ZSBHTCBidWZmZXIgd2l0aCBjb250ZXh0OiVwIiwgY29udGV4dCk7Ci0gIH0KLQotICBHU1RfQ0FUX0RFQlVHIChHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSLCAibmV3IEdMIGJ1ZmZlciBtZW1vcnk6JXAgc2l6ZTolIgotICAgICAgR19HU0laRV9GT1JNQVQsIG1lbSwgbWF4c2l6ZSk7Ci19Ci0KLXN0YXRpYyBncG9pbnRlcgotX2FsaWduX2RhdGEgKGdwb2ludGVyIGRhdGEsIGdzaXplIGFsaWduLCBnc2l6ZSAqIG1heHNpemUpCi17Ci0gIGd1aW50OCAqcmV0ID0gZGF0YTsKLSAgZ3NpemUgYW9mZnNldDsKLQotICAvKiBkbyBhbGlnbm1lbnQgKi8KLSAgaWYgKChhb2Zmc2V0ID0gKChndWludHB0cikgcmV0ICYgYWxpZ24pKSkgewotICAgIGFvZmZzZXQgPSAoYWxpZ24gKyAxKSAtIGFvZmZzZXQ7Ci0gICAgcmV0ICs9IGFvZmZzZXQ7Ci0gICAgKm1heHNpemUgLT0gYW9mZnNldDsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci19Ci0KLS8qIHN1YmNsYXNzIHVzYWdlIG9ubHkgKi8KLUdzdEdMQmFzZUJ1ZmZlciAqCi1nc3RfZ2xfYmFzZV9idWZmZXJfYWxsb2NfZGF0YSAoR3N0R0xCYXNlQnVmZmVyICogZ2xfbWVtKQotewotICBHc3RNZW1vcnkgKm1lbSA9IChHc3RNZW1vcnkgKikgZ2xfbWVtOwotCi0gIGlmIChnbF9tZW0tPmRhdGEpCi0gICAgcmV0dXJuIGdsX21lbTsKLQotICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwgIiVwIGF0dGVtcHRpbmcgYWxsb2NhdGlvbiBvZiBkYXRhICIKLSAgICAgICJwb2ludGVyIG9mIHNpemUgJSIgR19HU0laRV9GT1JNQVQsIGdsX21lbSwgbWVtLT5tYXhzaXplKTsKLSAgZ2xfbWVtLT5hbGxvY19kYXRhID0gZ190cnlfbWFsbG9jIChtZW0tPm1heHNpemUpOwotCi0gIGlmIChnbF9tZW0tPmFsbG9jX2RhdGEgPT0gTlVMTCkgewotICAgIGdzdF9tZW1vcnlfdW5yZWYgKG1lbSk7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLQotICBnbF9tZW0tPmRhdGEgPSBfYWxpZ25fZGF0YSAoZ2xfbWVtLT5hbGxvY19kYXRhLCBtZW0tPmFsaWduLCAmbWVtLT5tYXhzaXplKTsKLQotICBHU1RfQ0FUX0RFQlVHIChHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSLCAiJXAgYWxsb2NhdGVkIGRhdGEgcG9pbnRlciBhbGxvYyAlcCwgIgotICAgICAgImRhdGEgJXAiLCBnbF9tZW0sIGdsX21lbS0+YWxsb2NfZGF0YSwgZ2xfbWVtLT5kYXRhKTsKLQotICByZXR1cm4gZ2xfbWVtOwotfQotCi0vKiBYWFg6IGFkZCBhcyBBUEk/ICovCi1zdGF0aWMgZ3BvaW50ZXIKLWdzdF9nbF9iYXNlX2J1ZmZlcl9jcHVfYWNjZXNzIChHc3RHTEJhc2VCdWZmZXIgKiBtZW0sCi0gICAgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCi17Ci0gIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gbWVtLT5jb250ZXh0LT5nbF92dGFibGU7Ci0gIGdwb2ludGVyIGRhdGEsIHJldDsKLQotICBnc3RfZ2xfYmFzZV9idWZmZXJfYWxsb2NfZGF0YSAobWVtKTsKLSAgcmV0ID0gbWVtLT5kYXRhOwotCi0gIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSLCAibWFwcGluZyBpZCAlZCBzaXplICUiIEdfR1NJWkVfRk9STUFULAotICAgICAgbWVtLT5pZCwgc2l6ZSk7Ci0KLSAgLyogVGhlIGV4dHJhIGRhdGEgcG9pbnRlciBpbmRpcmVjdGlvbi9tZW1jcHkgaXMgbmVlZGVkIGZvciBjb2hlcmVudCBhY3Jvc3MKLSAgICogY29uY3VycmVudCBtYXAoKSdzIGluIGJvdGggR0wgYW5kIENQVSAqLwotICBpZiAoR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKQotICAgICAgJiYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgPT0gMCAmJiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1JFQUQpICE9IDApIHsKLSAgICBnbC0+QmluZEJ1ZmZlciAobWVtLT50YXJnZXQsIG1lbS0+aWQpOwotCi0gICAgaWYgKGdsLT5NYXBCdWZmZXJSYW5nZSkgewotICAgICAgLyogRklYTUU6IG9wdGlvbmFsbHkgcmVtb3ZlIHRoaXMgd2l0aCBhIGZsYWcgYW5kIHJldHVybiB0aGUKLSAgICAgICAqIGdsTWFwQnVmZmVyUmFuZ2UgcG9pbnRlciAocmVxdWlyZXMKLSAgICAgICAqIEdMX0FSQl9idWZmZXJfc3RvcmFnZS9HTDQvR0xfQ09IRVJFTlRfQklUKSAqLwotICAgICAgZ3VpbnQgZ2xfbWFwX2ZsYWdzID0gR0xfTUFQX1JFQURfQklUOwotCi0gICAgICBkYXRhID0gZ2wtPk1hcEJ1ZmZlclJhbmdlIChtZW0tPnRhcmdldCwgMCwgc2l6ZSwgZ2xfbWFwX2ZsYWdzKTsKLQotICAgICAgaWYgKGRhdGEpCi0gICAgICAgIG1lbWNweSAobWVtLT5kYXRhLCBkYXRhLCBzaXplKTsKLQotICAgICAgZ2wtPlVubWFwQnVmZmVyIChtZW0tPnRhcmdldCk7Ci0gICAgICByZXQgPSBtZW0tPmRhdGE7Ci0gICAgfSBlbHNlIGlmIChnbC0+R2V0QnVmZmVyU3ViRGF0YSkgewotICAgICAgZ2wtPkdldEJ1ZmZlclN1YkRhdGEgKG1lbS0+dGFyZ2V0LCAwLCBzaXplLCBtZW0tPmRhdGEpOwotICAgICAgcmV0ID0gbWVtLT5kYXRhOwotICAgIH0gZWxzZSB7Ci0gICAgICByZXQgPSBOVUxMOwotICAgIH0KLSAgICBnbC0+QmluZEJ1ZmZlciAobWVtLT50YXJnZXQsIDApOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotLyogWFhYOiBhZGQgYXMgQVBJPyAqLwotc3RhdGljIHZvaWQKLWdzdF9nbF9iYXNlX2J1ZmZlcl91cGxvYWRfY3B1X3dyaXRlIChHc3RHTEJhc2VCdWZmZXIgKiBtZW0sIEdzdE1hcEluZm8gKiBpbmZvLAotICAgIGdzaXplIHNpemUpCi17Ci0gIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gbWVtLT5jb250ZXh0LT5nbF92dGFibGU7Ci0gIGdwb2ludGVyIGRhdGE7Ci0KLSAgaWYgKCFtZW0tPmRhdGEpCi0gICAgLyogbm8gZGF0YSBwb2ludGVyIGhhcyBiZWVuIHdyaXR0ZW4gKi8KLSAgICByZXR1cm47Ci0KLSAgLyogVGhlIGV4dHJhIGRhdGEgcG9pbnRlciBpbmRpcmVjdGlvbi9tZW1jcHkgaXMgbmVlZGVkIGZvciBjb2hlcmVudCBhY3Jvc3MKLSAgICogY29uY3VycmVudCBtYXAoKSdzIGluIGJvdGggR0wgYW5kIENQVSAqLwotICAvKiBGSVhNRTogdXBsb2FkaW5nIHBvdGVudGlhbGx5IGhhbGYtd3JpdHRlbiBkYXRhIGZvciBsaWJhdiBwdXNoaW5nIFJFQURXUklURQotICAgKiBtYXBwZWQgYnVmZmVycyAqLwotICBpZiAoR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCkKLSAgICAgIHx8IChtZW0tPm1hcF9mbGFncyAmIEdTVF9NQVBfV1JJVEUpICE9IDApIHsKLSAgICBnbC0+QmluZEJ1ZmZlciAobWVtLT50YXJnZXQsIG1lbS0+aWQpOwotCi0gICAgaWYgKGdsLT5NYXBCdWZmZXJSYW5nZSkgewotICAgICAgLyogRklYTUU6IG9wdGlvbmFsbHkgcmVtb3ZlIHRoaXMgd2l0aCBhIGZsYWcgYW5kIHJldHVybiB0aGUKLSAgICAgICAqIGdsTWFwQnVmZmVyUmFuZ2UgcG9pbnRlciAocmVxdWlyZXMKLSAgICAgICAqIEdMX0FSQl9idWZmZXJfc3RvcmFnZS9HTDQvR0xfQ09IRVJFTlRfQklUKSAqLwotICAgICAgZ3VpbnQgZ2xfbWFwX2ZsYWdzID0gR0xfTUFQX1dSSVRFX0JJVDsKLQotICAgICAgZGF0YSA9IGdsLT5NYXBCdWZmZXJSYW5nZSAobWVtLT50YXJnZXQsIDAsIHNpemUsIGdsX21hcF9mbGFncyk7Ci0KLSAgICAgIGlmIChkYXRhKQotICAgICAgICBtZW1jcHkgKGRhdGEsIG1lbS0+ZGF0YSwgc2l6ZSk7Ci0KLSAgICAgIGdsLT5Vbm1hcEJ1ZmZlciAobWVtLT50YXJnZXQpOwotICAgIH0gZWxzZSBpZiAoZ2wtPkJ1ZmZlclN1YkRhdGEpIHsKLSAgICAgIGdsLT5CdWZmZXJTdWJEYXRhIChtZW0tPnRhcmdldCwgMCwgc2l6ZSwgbWVtLT5kYXRhKTsKLSAgICB9Ci0gICAgZ2wtPkJpbmRCdWZmZXIgKG1lbS0+dGFyZ2V0LCAwKTsKLSAgfQotfQotCi1zdGF0aWMgZ3BvaW50ZXIKLV9kZWZhdWx0X21hcF9idWZmZXIgKEdzdEdMQmFzZUJ1ZmZlciAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCi17Ci0gIGlmICgoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMKSAhPSAwKSB7Ci0gICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9SRUFEKSB7Ci0gICAgICBnc3RfZ2xfYmFzZV9idWZmZXJfdXBsb2FkX2NwdV93cml0ZSAobWVtLCBpbmZvLCBzaXplKTsKLSAgICB9Ci0gICAgcmV0dXJuICZtZW0tPmlkOwotICB9IGVsc2UgewotICAgIHJldHVybiBnc3RfZ2xfYmFzZV9idWZmZXJfY3B1X2FjY2VzcyAobWVtLCBpbmZvLCBzaXplKTsKLSAgfQotCi0gIHJldHVybiBOVUxMOwotfQotCi1zdHJ1Y3QgbWFwX2RhdGEKLXsKLSAgR3N0R0xCYXNlQnVmZmVyICptZW07Ci0gIEdzdE1hcEluZm8gKmluZm87Ci0gIGdzaXplIHNpemU7Ci0gIGdwb2ludGVyIGRhdGE7Ci19OwotCi1zdGF0aWMgdm9pZAotX21hcF9kYXRhX2dsIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBzdHJ1Y3QgbWFwX2RhdGEgKnRyYW5zZmVyKQotewotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7Ci0gIEdzdEdMQmFzZUJ1ZmZlciAqbWVtID0gdHJhbnNmZXItPm1lbTsKLSAgR3N0TWFwSW5mbyAqaW5mbyA9IHRyYW5zZmVyLT5pbmZvOwotCi0gIGFsbG9jX2NsYXNzID0KLSAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1JfR0VUX0NMQVNTICh0cmFuc2Zlci0+bWVtLT5tZW0uYWxsb2NhdG9yKTsKLQotICBnX3JldHVybl9pZl9mYWlsIChhbGxvY19jbGFzcy0+bWFwX2J1ZmZlciAhPSBOVUxMKTsKLQotICBnX211dGV4X2xvY2sgKCZtZW0tPmxvY2spOwotCi0gIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSLCAibWFwcGluZyBtZW0gJXAgaWQgJWQgZmxhZ3MgJTA0eCIsIG1lbSwKLSAgICAgIG1lbS0+aWQsIGluZm8tPmZsYWdzKTsKLQotICAvKiBGSVhNRTogdmFsaWRhdGUgbWFwIGZsYWdzIGJhc2VkIG9uIHRoZSBtZW1vcnkgZG9tYWluICovCi0gIGlmIChtZW0tPm1hcF9jb3VudCsrID09IDApCi0gICAgbWVtLT5tYXBfZmxhZ3MgPSBpbmZvLT5mbGFnczsKLSAgZWxzZSB7Ci0gICAgLyogYXNzZXJ0IHRoYXQgdGhlIGZsYWdzIGFyZSBhIHN1YnNldCBvZiB0aGUgZmlyc3QgbWFwIGZsYWdzICovCi0gICAgZ19hc3NlcnQgKCgoKEdTVF9NQVBfR0wgLSAxKSAmIGluZm8tPmZsYWdzKSAmIG1lbS0+bWFwX2ZsYWdzKSAhPSAwKTsKLSAgICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwgIm11bHRpcGxlIG1hcCBubyAlZCBmbGFncyAlMDR4ICIKLSAgICAgICAgImFsbCBmbGFncyAlMDR4IiwgbWVtLT5tYXBfY291bnQsIGluZm8tPmZsYWdzLCBtZW0tPm1hcF9mbGFncyk7Ci0gIH0KLQotICBpZiAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgIT0gKG1lbS0+bWFwX2ZsYWdzICYgR1NUX01BUF9HTCkpCi0gICAgbWVtLT5tYXBfZmxhZ3MgfD0gR1NUX01BUF9HTDsKLQotICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMKQotICAgIG1lbS0+Z2xfbWFwX2NvdW50Kys7Ci0KLSAgdHJhbnNmZXItPmRhdGEgPSBhbGxvY19jbGFzcy0+bWFwX2J1ZmZlciAodHJhbnNmZXItPm1lbSwgdHJhbnNmZXItPmluZm8sCi0gICAgICB0cmFuc2Zlci0+c2l6ZSk7Ci0KLSAgaWYgKHRyYW5zZmVyLT5kYXRhKSB7Ci0gICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgewotICAgICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9XUklURSkKLSAgICAgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpOwotICAgICAgR1NUX01FTU9SWV9GTEFHX1VOU0VUIChtZW0sIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEKTsKLSAgICB9IGVsc2UgewotICAgICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9XUklURSkKLSAgICAgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEKTsKLSAgICAgIEdTVF9NRU1PUllfRkxBR19VTlNFVCAobWVtLCBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKTsKLSAgICB9Ci0gIH0KLQotICBnX211dGV4X3VubG9jayAoJm1lbS0+bG9jayk7Ci19Ci0KLXN0YXRpYyBncG9pbnRlcgotX21lbV9tYXBfZnVsbCAoR3N0R0xCYXNlQnVmZmVyICogbWVtLCBHc3RNYXBJbmZvICogaW5mbywgZ3NpemUgc2l6ZSkKLXsKLSAgc3RydWN0IG1hcF9kYXRhIHRyYW5zZmVyOwotCi0gIHRyYW5zZmVyLm1lbSA9IG1lbTsKLSAgdHJhbnNmZXIuaW5mbyA9IGluZm87Ci0gIHRyYW5zZmVyLnNpemUgPSBzaXplOwotICB0cmFuc2Zlci5kYXRhID0gTlVMTDsKLQotICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChtZW0tPmNvbnRleHQsCi0gICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX21hcF9kYXRhX2dsLCAmdHJhbnNmZXIpOwotCi0gIHJldHVybiB0cmFuc2Zlci5kYXRhOwotfQotCi1zdGF0aWMgdm9pZAotX2RlZmF1bHRfdW5tYXBfYnVmZmVyIChHc3RHTEJhc2VCdWZmZXIgKiBtZW0sIEdzdE1hcEluZm8gKiBpbmZvKQotewotICAvKiBYWFg6IG9wdGltaXN0aWNhbGx5IHRyYW5zZmVyIGRhdGEgKi8KLX0KLQotc3RydWN0IHVubWFwX2RhdGEKLXsKLSAgR3N0R0xCYXNlQnVmZmVyICptZW07Ci0gIEdzdE1hcEluZm8gKmluZm87Ci19OwotCi1zdGF0aWMgdm9pZAotX3VubWFwX2RhdGFfZ2wgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIHN0cnVjdCB1bm1hcF9kYXRhICp0cmFuc2ZlcikKLXsKLSAgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ2xhc3MgKmFsbG9jX2NsYXNzOwotICBHc3RHTEJhc2VCdWZmZXIgKm1lbSA9IHRyYW5zZmVyLT5tZW07Ci0gIEdzdE1hcEluZm8gKmluZm8gPSB0cmFuc2Zlci0+aW5mbzsKLQotICBhbGxvY19jbGFzcyA9Ci0gICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SX0dFVF9DTEFTUyAodHJhbnNmZXItPm1lbS0+bWVtLmFsbG9jYXRvcik7Ci0KLSAgZ19yZXR1cm5faWZfZmFpbCAoYWxsb2NfY2xhc3MtPnVubWFwX2J1ZmZlciAhPSBOVUxMKTsKLQotICBnX211dGV4X2xvY2sgKCZtZW0tPmxvY2spOwotCi0gIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSLCAidW5tYXBwaW5nIG1lbSAlcCBpZCAlZCBmbGFncyAlMDR4IiwgbWVtLAotICAgICAgbWVtLT5pZCwgaW5mby0+ZmxhZ3MpOwotCi0gIGFsbG9jX2NsYXNzLT51bm1hcF9idWZmZXIgKHRyYW5zZmVyLT5tZW0sIHRyYW5zZmVyLT5pbmZvKTsKLQotICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMICYmIC0tbWVtLT5nbF9tYXBfY291bnQpCi0gICAgLyogdW5zZXQgdGhlIGdsIGZsYWcgKi8KLSAgICBtZW0tPm1hcF9mbGFncyAmPSB+R1NUX01BUF9HTDsKLQotICBpZiAoLS1tZW0tPm1hcF9jb3VudCA8PSAwKSB7Ci0gICAgbWVtLT5tYXBfZmxhZ3MgPSAwOwotICB9Ci0KLSAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgewotICAgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfV1JJVEUpCi0gICAgICBHU1RfTUlOSV9PQkpFQ1RfRkxBR19TRVQgKG1lbSwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCk7Ci0gIH0gZWxzZSB7Ci0gICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9XUklURSkKLSAgICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCk7Ci0gIH0KLQotICBnX211dGV4X3VubG9jayAoJm1lbS0+bG9jayk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1fbWVtX3VubWFwX2Z1bGwgKEdzdEdMQmFzZUJ1ZmZlciAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8pCi17Ci0gIHN0cnVjdCB1bm1hcF9kYXRhIHRyYW5zZmVyOwotCi0gIHRyYW5zZmVyLm1lbSA9IG1lbTsKLSAgdHJhbnNmZXIuaW5mbyA9IGluZm87Ci0KLSAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAobWVtLT5jb250ZXh0LAotICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF91bm1hcF9kYXRhX2dsLCAmdHJhbnNmZXIpOwotfQotCi1nYm9vbGVhbgotZ3N0X2dsX2Jhc2VfYnVmZmVyX2NvcHlfYnVmZmVyX3N1Yl9kYXRhIChHc3RHTEJhc2VCdWZmZXIgKiBzcmMsCi0gICAgR3N0R0xCYXNlQnVmZmVyICogZGVzdCwgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCi17Ci0gIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gc3JjLT5jb250ZXh0LT5nbF92dGFibGU7Ci0gIEdzdE1hcEluZm8gc2luZm8sIGRpbmZvOwotCi0gIGlmICghZ2wtPkNvcHlCdWZmZXJTdWJEYXRhKQotICAgIC8qIFRoaXMgaXMgR0woRVMpIDMuMCsgb25seSAqLwotICAgIHJldHVybiBGQUxTRTsKLQotICBpZiAoIWdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIHNyYywgJnNpbmZvLCBHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkgewotICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwKLSAgICAgICAgImZhaWxlZCB0byByZWFkIG1hcCBzb3VyY2UgbWVtb3J5ICVwIiwgc3JjKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBpZiAoIWdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIGRlc3QsICZkaW5mbywgR1NUX01BUF9XUklURSB8IEdTVF9NQVBfR0wpKSB7Ci0gICAgR1NUX0NBVF9XQVJOSU5HIChHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSLAotICAgICAgICAiZmFpbGVkIHRvIHdyaXRlIG1hcCBkZXN0aW5hdGlvbiBtZW1vcnkgJXAiLCBkZXN0KTsKLSAgICBnc3RfbWVtb3J5X3VubWFwICgoR3N0TWVtb3J5ICopIHNyYywgJnNpbmZvKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBnbC0+QmluZEJ1ZmZlciAoR0xfQ09QWV9SRUFEX0JVRkZFUiwgc3JjLT5pZCk7Ci0gIGdsLT5CaW5kQnVmZmVyIChHTF9DT1BZX1dSSVRFX0JVRkZFUiwgZGVzdC0+aWQpOwotICBnbC0+Q29weUJ1ZmZlclN1YkRhdGEgKEdMX0NPUFlfUkVBRF9CVUZGRVIsIEdMX0NPUFlfV1JJVEVfQlVGRkVSLAotICAgICAgb2Zmc2V0LCAwLCBzaXplKTsKLQotICBnc3RfbWVtb3J5X3VubWFwICgoR3N0TWVtb3J5ICopIHNyYywgJnNpbmZvKTsKLSAgZ3N0X21lbW9yeV91bm1hcCAoKEdzdE1lbW9yeSAqKSBkZXN0LCAmZGluZm8pOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1nYm9vbGVhbgotZ3N0X2dsX2Jhc2VfYnVmZmVyX21lbWNweSAoR3N0R0xCYXNlQnVmZmVyICogc3JjLCBHc3RHTEJhc2VCdWZmZXIgKiBkZXN0LAotICAgIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQotewotICBHc3RNYXBJbmZvIHNpbmZvLCBkaW5mbzsKLQotICBpZiAoIWdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIHNyYywgJnNpbmZvLCBHU1RfTUFQX1JFQUQpKSB7Ci0gICAgR1NUX0NBVF9XQVJOSU5HIChHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSLAotICAgICAgICAiY291bGQgbm90IHJlYWQgbWFwIHNvdXJjZSBtZW1vcnkgJXAiLCBzcmMpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIGlmICghZ3N0X21lbW9yeV9tYXAgKChHc3RNZW1vcnkgKikgZGVzdCwgJmRpbmZvLCBHU1RfTUFQX1dSSVRFKSkgewotICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwKLSAgICAgICAgImNvdWxkIG5vdCB3cml0ZSBtYXAgZGVzdCBtZW1vcnkgJXAiLCBkZXN0KTsKLSAgICBnc3RfbWVtb3J5X3VubWFwICgoR3N0TWVtb3J5ICopIHNyYywgJnNpbmZvKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBHU1RfQ0FUX0RFQlVHIChHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSLAotICAgICAgIm1lbWNweSAlIiBHX0dTU0laRV9GT1JNQVQgIiBtZW1vcnkgJXAgLT4gJXAiLCBzaXplLCBzcmMsIGRlc3QpOwotICBtZW1jcHkgKGRpbmZvLmRhdGEsIHNpbmZvLmRhdGEgKyBvZmZzZXQsIHNpemUpOwotICBnc3RfbWVtb3J5X3VubWFwICgoR3N0TWVtb3J5ICopIGRlc3QsICZkaW5mbyk7Ci0gIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgc3JjLCAmc2luZm8pOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgR3N0R0xCYXNlQnVmZmVyICoKLV9kZWZhdWx0X2NvcHkgKEdzdEdMQmFzZUJ1ZmZlciAqIHNyYywgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCi17Ci0gIHJldHVybiBOVUxMOwotfQotCi1zdHJ1Y3QgY29weV9wYXJhbXMKLXsKLSAgR3N0R0xCYXNlQnVmZmVyICpzcmM7Ci0gIEdzdEdMQmFzZUJ1ZmZlciAqZGVzdDsKLSAgZ3NzaXplIG9mZnNldDsKLSAgZ3NzaXplIHNpemU7Ci0gIGdib29sZWFuIHJlc3VsdDsKLX07Ci0KLXN0YXRpYyB2b2lkCi1fbWVtX2NvcHlfZ2wgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIHN0cnVjdCBjb3B5X3BhcmFtcyAqdHJhbnNmZXIpCi17Ci0gIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKLQotICBhbGxvY19jbGFzcyA9Ci0gICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SX0dFVF9DTEFTUyAodHJhbnNmZXItPnNyYy0+bWVtLmFsbG9jYXRvcik7Ci0KLSAgZ19yZXR1cm5faWZfZmFpbCAoYWxsb2NfY2xhc3MtPmNvcHkgIT0gTlVMTCk7Ci0KLSAgdHJhbnNmZXItPmRlc3QgPQotICAgICAgYWxsb2NfY2xhc3MtPmNvcHkgKHRyYW5zZmVyLT5zcmMsIHRyYW5zZmVyLT5vZmZzZXQsIHRyYW5zZmVyLT5zaXplKTsKLX0KLQotc3RhdGljIEdzdE1lbW9yeSAqCi1fbWVtX2NvcHkgKEdzdEdMQmFzZUJ1ZmZlciAqIHNyYywgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCi17Ci0gIHN0cnVjdCBjb3B5X3BhcmFtcyB0cmFuc2ZlcjsKLQotICB0cmFuc2Zlci5kZXN0ID0gTlVMTDsKLSAgdHJhbnNmZXIuc3JjID0gc3JjOwotICB0cmFuc2Zlci5vZmZzZXQgPSBvZmZzZXQ7Ci0gIHRyYW5zZmVyLnNpemUgPSBzaXplOwotICBpZiAoc2l6ZSA9PSAtMSB8fCBzaXplID4gMCkKLSAgICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChzcmMtPmNvbnRleHQsCi0gICAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfbWVtX2NvcHlfZ2wsICZ0cmFuc2Zlcik7Ci0KLSAgcmV0dXJuIChHc3RNZW1vcnkgKikgdHJhbnNmZXIuZGVzdDsKLX0KLQotc3RhdGljIEdzdE1lbW9yeSAqCi1fbWVtX3NoYXJlIChHc3RHTEJhc2VCdWZmZXIgKiBtZW0sIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQotewotICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIGdib29sZWFuCi1fbWVtX2lzX3NwYW4gKEdzdEdMQmFzZUJ1ZmZlciAqIG1lbTEsIEdzdEdMQmFzZUJ1ZmZlciAqIG1lbTIsIGdzaXplICogb2Zmc2V0KQotewotICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0YXRpYyBHc3RNZW1vcnkgKgotX21lbV9hbGxvYyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBnc2l6ZSBzaXplLCBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQotewotICBnX2NyaXRpY2FsICgiU3ViY2xhc3Mgc2hvdWxkIG92ZXJyaWRlIEdzdEFsbG9jYXRvckNsYXNzOjphbGxvYygpIGZ1bmN0aW9uIik7Ci0KLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyB2b2lkCi1fZGVmYXVsdF9kZXN0cm95IChHc3RHTEJhc2VCdWZmZXIgKiBtZW0pCi17Ci19Ci0KLXN0YXRpYyB2b2lkCi1fZGVzdHJveV9nbF9vYmplY3RzIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTEJhc2VCdWZmZXIgKiBtZW0pCi17Ci0gIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKLQotICBhbGxvY19jbGFzcyA9IEdTVF9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1JfR0VUX0NMQVNTIChtZW0tPm1lbS5hbGxvY2F0b3IpOwotCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKGFsbG9jX2NsYXNzLT5kZXN0cm95ICE9IE5VTEwpOwotCi0gIGFsbG9jX2NsYXNzLT5kZXN0cm95IChtZW0pOwotfQotCi1zdGF0aWMgdm9pZAotX21lbV9mcmVlIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIEdzdE1lbW9yeSAqIG1lbW9yeSkKLXsKLSAgR3N0R0xCYXNlQnVmZmVyICptZW0gPSAoR3N0R0xCYXNlQnVmZmVyICopIG1lbW9yeTsKLQotICBHU1RfQ0FUX1RSQUNFIChHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSLCAiZnJlZWluZyBidWZmZXIgbWVtb3J5OiVwIGlkOiV1IiwgbWVtLAotICAgICAgbWVtLT5pZCk7Ci0KLSAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAobWVtLT5jb250ZXh0LAotICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9kZXN0cm95X2dsX29iamVjdHMsIG1lbSk7Ci0KLSAgZ19tdXRleF9jbGVhciAoJm1lbS0+bG9jayk7Ci0KLSAgaWYgKG1lbS0+YWxsb2NfZGF0YSkgewotICAgIGdfZnJlZSAobWVtLT5hbGxvY19kYXRhKTsKLSAgICBtZW0tPmFsbG9jX2RhdGEgPSBOVUxMOwotICB9Ci0gIG1lbS0+ZGF0YSA9IE5VTEw7Ci0KLSAgZ3N0X29iamVjdF91bnJlZiAobWVtLT5jb250ZXh0KTsKLX0KLQotR19ERUZJTkVfVFlQRSAoR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yLCBnc3RfZ2xfYmFzZV9idWZmZXJfYWxsb2NhdG9yLAotICAgIEdTVF9UWVBFX0FMTE9DQVRPUik7Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfYmFzZV9idWZmZXJfYWxsb2NhdG9yX2NsYXNzX2luaXQgKEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzICoga2xhc3MpCi17Ci0gIEdzdEFsbG9jYXRvckNsYXNzICphbGxvY2F0b3JfY2xhc3MgPSAoR3N0QWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7Ci0KLSAgYWxsb2NhdG9yX2NsYXNzLT5hbGxvYyA9IF9tZW1fYWxsb2M7Ci0gIGFsbG9jYXRvcl9jbGFzcy0+ZnJlZSA9IF9tZW1fZnJlZTsKLQotICBrbGFzcy0+Y3JlYXRlID0gX2RlZmF1bHRfY3JlYXRlOwotICBrbGFzcy0+bWFwX2J1ZmZlciA9IF9kZWZhdWx0X21hcF9idWZmZXI7Ci0gIGtsYXNzLT51bm1hcF9idWZmZXIgPSBfZGVmYXVsdF91bm1hcF9idWZmZXI7Ci0gIGtsYXNzLT5jb3B5ID0gX2RlZmF1bHRfY29weTsKLSAga2xhc3MtPmRlc3Ryb3kgPSBfZGVmYXVsdF9kZXN0cm95OwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dsX2Jhc2VfYnVmZmVyX2FsbG9jYXRvcl9pbml0IChHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3IgKiBhbGxvY2F0b3IpCi17Ci0gIEdzdEFsbG9jYXRvciAqYWxsb2MgPSBHU1RfQUxMT0NBVE9SX0NBU1QgKGFsbG9jYXRvcik7Ci0KLSAgYWxsb2MtPm1lbV90eXBlID0gR1NUX0dMX01FTU9SWV9BTExPQ0FUT1I7Ci0gIGFsbG9jLT5tZW1fbWFwX2Z1bGwgPSAoR3N0TWVtb3J5TWFwRnVsbEZ1bmN0aW9uKSBfbWVtX21hcF9mdWxsOwotICBhbGxvYy0+bWVtX3VubWFwX2Z1bGwgPSAoR3N0TWVtb3J5VW5tYXBGdWxsRnVuY3Rpb24pIF9tZW1fdW5tYXBfZnVsbDsKLSAgYWxsb2MtPm1lbV9jb3B5ID0gKEdzdE1lbW9yeUNvcHlGdW5jdGlvbikgX21lbV9jb3B5OwotICBhbGxvYy0+bWVtX3NoYXJlID0gKEdzdE1lbW9yeVNoYXJlRnVuY3Rpb24pIF9tZW1fc2hhcmU7Ci0gIGFsbG9jLT5tZW1faXNfc3BhbiA9IChHc3RNZW1vcnlJc1NwYW5GdW5jdGlvbikgX21lbV9pc19zcGFuOwotfQotCi0vKioKLSAqIGdzdF9nbF9iYXNlX2J1ZmZlcl9pbml0X29uY2U6Ci0gKgotICogSW5pdGlhbGl6ZXMgdGhlIEdMIEJ1ZmZlciBhbGxvY2F0b3IuIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uCi0gKiBtdWx0aXBsZSB0aW1lcy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBHc3RHTEJhc2VCdWZmZXIgb3BlcmF0aW9uLgotICovCi12b2lkCi1nc3RfZ2xfYmFzZV9idWZmZXJfaW5pdF9vbmNlICh2b2lkKQotewotICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2luaXQgPSAwOwotCi0gIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJl9pbml0KSkgewotICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSLCAiZ2xidWZmZXIiLCAwLAotICAgICAgICAiT3BlbkdMIEJ1ZmZlciIpOwotCi0gICAgX2dsX2Jhc2VfYnVmZmVyX2FsbG9jYXRvciA9Ci0gICAgICAgIGdfb2JqZWN0X25ldyAoZ3N0X2dsX2Jhc2VfYnVmZmVyX2FsbG9jYXRvcl9nZXRfdHlwZSAoKSwgTlVMTCk7Ci0KLSAgICBnc3RfYWxsb2NhdG9yX3JlZ2lzdGVyIChHU1RfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SX05BTUUsCi0gICAgICAgIGdzdF9vYmplY3RfcmVmIChfZ2xfYmFzZV9idWZmZXJfYWxsb2NhdG9yKSk7Ci0gICAgZ19vbmNlX2luaXRfbGVhdmUgKCZfaW5pdCwgMSk7Ci0gIH0KLX0KLQotLyoqCi0gKiBnc3RfaXNfZ2xfYmFzZV9idWZmZXI6Ci0gKiBAbWVtOmEgI0dzdE1lbW9yeQotICogCi0gKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBtZW1vcnkgYXQgQG1lbSBpcyBhICNHc3RHTEJhc2VCdWZmZXIKLSAqLwotZ2Jvb2xlYW4KLWdzdF9pc19nbF9iYXNlX2J1ZmZlciAoR3N0TWVtb3J5ICogbWVtKQotewotICByZXR1cm4gbWVtICE9IE5VTEwgJiYgbWVtLT5hbGxvY2F0b3IgIT0gTlVMTCAmJgotICAgICAgZ190eXBlX2lzX2EgKEdfT0JKRUNUX1RZUEUgKG1lbS0+YWxsb2NhdG9yKSwKLSAgICAgIEdTVF9UWVBFX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUik7Ci19CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlYnVmZmVyLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlYnVmZmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3YzY4OGQuLjAwMDAwMDAKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZWJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLS8qCi0gKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBfR1NUX0dMX0JBU0VfQlVGRkVSX0hfCi0jZGVmaW5lIF9HU1RfR0xfQkFTRV9CVUZGRVJfSF8KLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvZ3N0YWxsb2NhdG9yLmg+Ci0jaW5jbHVkZSA8Z3N0L2dzdG1lbW9yeS5oPgotCi0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsX2Z3ZC5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgR1NUX1RZUEVfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SIChnc3RfZ2xfYmFzZV9idWZmZXJfYWxsb2NhdG9yX2dldF90eXBlKCkpCi1HVHlwZSBnc3RfZ2xfYmFzZV9idWZmZXJfYWxsb2NhdG9yX2dldF90eXBlKHZvaWQpOwotCi0jZGVmaW5lIEdTVF9JU19HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfR0xfQUxMT0NBVE9SKSkKLSNkZWZpbmUgR1NUX0lTX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEdTVF9UWVBFX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUikpCi0jZGVmaW5lIEdTVF9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1JfR0VUX0NMQVNTKG9iaikgICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1IsIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUihvYmopICAgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1IsIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvcikpCi0jZGVmaW5lIEdTVF9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1IsIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUl9DQVNUKG9iaikgICAgICAgICAgICAoKEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvciAqKShvYmopKQotCi1HUXVhcmsgZ3N0X2dsX2Jhc2VfYnVmZmVyX2Vycm9yX3F1YXJrICh2b2lkKTsKLSNkZWZpbmUgR1NUX0dMX0JBU0VfQlVGRkVSX0VSUk9SIChnc3RfZ2xfYmFzZV9idWZmZXJfZXJyb3JfcXVhcmsgKCkpCi0KLXR5cGVkZWYgZW51bQotewotICBHU1RfR0xfQkFTRV9CVUZGRVJfRVJST1JfRkFJTEVELAotICBHU1RfR0xfQkFTRV9CVUZGRVJfRVJST1JfT0xEX0xJQlMsCi0gIEdTVF9HTF9CQVNFX0JVRkZFUl9FUlJPUl9SRVNPVVJDRV9VTkFWQUlMQUJMRSwKLX0gR3N0R0xCdWZmZXJFcnJvcjsKLQotdHlwZWRlZiBlbnVtCi17Ci0gIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQgICA9IChHU1RfTUVNT1JZX0ZMQUdfTEFTVCA8PCAwKSwKLSAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQgICAgID0gKEdTVF9NRU1PUllfRkxBR19MQVNUIDw8IDEpCi19IEdzdEdMQmFzZUJ1ZmZlckZsYWdzOwotCi0vKioKLSAqIEdTVF9NQVBfR0w6Ci0gKgotICogRmxhZyBpbmRpY2F0aW5nIHRoYXQgd2Ugc2hvdWxkIG1hcCB0aGUgR0wgb2JqZWN0IGluc3RlYWQgb2YgdG8gc3lzdGVtIG1lbW9yeS4KLSAqCi0gKiBDb21iaW5pbmcgI0dTVF9NQVBfR0wgd2l0aCAjR1NUX01BUF9XUklURSBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRob3VnaAotICogeW91IGFyZSB3cml0aW5nIHRvIE9wZW5HTC4gQ29udmVyc2VseSwgY29tYmluaW5nICNHU1RfTUFQX0dMIHdpdGgKLSAqICNHU1RfTUFQX1JFQUQgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aG91Z2ggeW91IGFyZSByZWFkaW5nIGZyb20gT3BlbkdMLgotICovCi0jZGVmaW5lIEdTVF9NQVBfR0wgKEdTVF9NQVBfRkxBR19MQVNUIDw8IDEpCi0KLS8qKgotICogR3N0R0xCYXNlQnVmZmVyOgotICogQG1lbTogdGhlIHBhcmVudCBvYmplY3QKLSAqIEBjb250ZXh0OiB0aGUgI0dzdEdMQ29udGV4dCB0byB1c2UgZm9yIEdMIG9wZXJhdGlvbnMKLSAqIEBpZDogdGhlIGJ1ZmZlciBpZCBmb3IgdGhpcyBtZW1vcnkKLSAqIEB0YXJnZXQ6IHRoZSBHTCB0YXJnZXQgb2YgdGhpcyB0ZXh0dXJlIGZvciBiaW5kaW5nIHB1cnBvc2VzCi0gKgotICogUmVwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBhIEdMIGJ1ZmZlcgotICovCi1zdHJ1Y3QgX0dzdEdMQmFzZUJ1ZmZlcgotewotICBHc3RNZW1vcnkgICAgICAgICAgICAgbWVtOwotCi0gIEdzdEdMQ29udGV4dCAgICAgICAgICpjb250ZXh0OwotICBndWludCAgICAgICAgICAgICAgICAgaWQ7Ci0gIGd1aW50ICAgICAgICAgICAgICAgICB0YXJnZXQ7Ci0KLSAgLyogPHByb3RlY3RlZD4gKi8KLSAgR011dGV4ICAgICAgICAgICAgICAgIGxvY2s7Ci0KLSAgR3N0TWFwRmxhZ3MgICAgICAgICAgIG1hcF9mbGFnczsgICAgICAgLyogY3VtdWxhdGl2ZSBtYXAgZmxhZ3MgKi8KLSAgZ2ludCAgICAgICAgICAgICAgICAgIG1hcF9jb3VudDsKLSAgZ2ludCAgICAgICAgICAgICAgICAgIGdsX21hcF9jb3VudDsKLQotICBncG9pbnRlciAgICAgICAgICAgICAgZGF0YTsKLSAgLyogPHByaXZhdGU+ICovCi0gIGdwb2ludGVyICAgICAgICAgICAgICBhbGxvY19kYXRhOwotfTsKLQotdHlwZWRlZiBnYm9vbGVhbiAgICAgICAgICAoKkdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uKSAgICAgIChHc3RHTEJhc2VCdWZmZXIgKiBidWZmZXIsIEdFcnJvciAqKiBlcnJvcik7Ci10eXBlZGVmIGdwb2ludGVyICAgICAgICAgICgqR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yTWFwQnVmZmVyRnVuY3Rpb24pICAgKEdzdEdMQmFzZUJ1ZmZlciAqIGJ1ZmZlciwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIG1heHNpemUpOwotdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAoKkdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvclVubWFwQnVmZmVyRnVuY3Rpb24pIChHc3RHTEJhc2VCdWZmZXIgKiBidWZmZXIsIEdzdE1hcEluZm8gKiBpbmZvKTsKLXR5cGVkZWYgR3N0R0xCYXNlQnVmZmVyICogKCpHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDb3B5RnVuY3Rpb24pICAgICAgICAoR3N0R0xCYXNlQnVmZmVyICogYnVmZmVyLCBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSk7Ci10eXBlZGVmIHZvaWQgICAgICAgICAgICAgICgqR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uKSAgICAgKEdzdEdMQmFzZUJ1ZmZlciAqIGJ1ZmZlcik7Ci0KLS8qKgotICogR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yCi0gKgotICogT3BhcXVlICNHc3RHTEFsbG9jYXRvciBzdHJ1Y3QKLSAqLwotc3RydWN0IF9Hc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3IKLXsKLSAgR3N0QWxsb2NhdG9yIHBhcmVudDsKLX07Ci0KLS8qKgotICogR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ2xhc3M6Ci0gKgotICogVGhlICNHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyBvbmx5IGNvbnRhaW5zIHByaXZhdGUgZGF0YQotICovCi1zdHJ1Y3QgX0dzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzCi17Ci0gIEdzdEFsbG9jYXRvckNsYXNzIHBhcmVudF9jbGFzczsKLQotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbiAgICAgIGNyZWF0ZTsKLSAgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yTWFwQnVmZmVyRnVuY3Rpb24gICBtYXBfYnVmZmVyOwotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JVbm1hcEJ1ZmZlckZ1bmN0aW9uIHVubWFwX2J1ZmZlcjsKLSAgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ29weUZ1bmN0aW9uICAgICAgICBjb3B5OwotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24gICAgIGRlc3Ryb3k7Ci19OwotCi0jaW5jbHVkZSA8Z3N0L2dsL2dsLmg+Ci0KLSNkZWZpbmUgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfQlVGRkVSICJtZW1vcnk6R0xCdWZmZXIiCi0KLS8qKgotICogR1NUX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUl9OQU1FOgotICoKLSAqIFRoZSBuYW1lIG9mIHRoZSBHTCBidWZmZXIgYWxsb2NhdG9yCi0gKi8KLSNkZWZpbmUgR1NUX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUl9OQU1FICAgIkdMQnVmZmVyIgotCi12b2lkICAgICAgICAgIGdzdF9nbF9iYXNlX2J1ZmZlcl9pbml0X29uY2UgKHZvaWQpOwotZ2Jvb2xlYW4gICAgICBnc3RfaXNfZ2xfYmFzZV9idWZmZXIgICAgICAgIChHc3RNZW1vcnkgKiBtZW0pOwotCi12b2lkICAgICAgICAgIGdzdF9nbF9iYXNlX2J1ZmZlcl9pbml0ICAgICAgKEdzdEdMQmFzZUJ1ZmZlciAqIG1lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RNZW1vcnkgKiBwYXJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplIG1heHNpemUpOwotCi1Hc3RHTEJhc2VCdWZmZXIgKiBnc3RfZ2xfYmFzZV9idWZmZXJfYWxsb2NfZGF0YSAgKEdzdEdMQmFzZUJ1ZmZlciAqIGdsX21lbSk7Ci0KLWdib29sZWFuIGdzdF9nbF9iYXNlX2J1ZmZlcl9jb3B5X2J1ZmZlcl9zdWJfZGF0YSAoR3N0R0xCYXNlQnVmZmVyICogc3JjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTEJhc2VCdWZmZXIgKiBkZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc3NpemUgb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc3NpemUgc2l6ZSk7Ci1nYm9vbGVhbiBnc3RfZ2xfYmFzZV9idWZmZXJfbWVtY3B5ICAgICAgICAgICAgICAgKEdzdEdMQmFzZUJ1ZmZlciAqIHNyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xCYXNlQnVmZmVyICogZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NzaXplIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NzaXplIHNpemUpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogX0dTVF9HTF9CVUZGRVJfSF8gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuYwppbmRleCBlN2IyZTIzLi41NTZjZDQzIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZWZpbHRlci5jCkBAIC0yNiw2ICsyNiwxOCBAQAogCiAjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CiAKKy8qKgorICogU0VDVElPTjpnc3RnbGJhc2VmaWx0ZXIKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogI0dzdEJhc2VUcmFuc2Zvcm0gc3ViY2xhc3MgZm9yIHRyYW5zZm9ybWluIE9wZW5HTCByZXNvdXJjZXMKKyAqIEB0aXRsZTogR3N0R0xCYXNlRmlsdGVyCisgKiBAc2VlX2Fsc286ICNHc3RCYXNlVHJhbnNmb3JtCisgKgorICogI0dzdEdMQmFzZUZpbHRlciBoYW5kbGVzIHRoZSBuaXR0eSBncml0dHkgZGV0YWlscyBvZiByZXRyaWV2aW5nIGFuIE9wZW5HTAorICogY29udGV4dC4gIEl0IGFsc28gcHJvdmlkZWQgc29tZSB3cmFwcGVycyBhcm91bmQgI0dzdEJhc2VUcmFuc2Zvcm0ncworICogc3RhcnQoKSwgc3RvcCgpIGFuZCBzZXRfY2FwcygpIHZpcnR1YWwgbWV0aG9kcyB0aGF0IGVuc3VyZSBhbiBPcGVuR0wgY29udGV4dAorICogaXMgYXZhaWxhYmxlIGFuZCBjdXJyZW50IGluIHRoZSBjYWxsaW5nIHRocmVhZC4KKyAqLworCiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfZ2xfYmFzZV9maWx0ZXJfZGVidWcKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfREVGQVVMVCk7CiAKQEAgLTUzLDYgKzY1LDcgQEAKICAgICAgICAgImdsYmFzZWZpbHRlciIsIDAsICJnbGJhc2VmaWx0ZXIgZWxlbWVudCIpOwogICAgICk7CiAKK3N0YXRpYyB2b2lkIGdzdF9nbF9iYXNlX2ZpbHRlcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CiBzdGF0aWMgdm9pZCBnc3RfZ2xfYmFzZV9maWx0ZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAogICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwogc3RhdGljIHZvaWQgZ3N0X2dsX2Jhc2VfZmlsdGVyX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKQEAgLTY3LDYgKzgwLDggQEAKIHN0YXRpYyB2b2lkIGdzdF9nbF9iYXNlX2ZpbHRlcl9yZXNldCAoR3N0R0xCYXNlRmlsdGVyICogZmlsdGVyKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfYmFzZV9maWx0ZXJfc3RhcnQgKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2Jhc2VfZmlsdGVyX3N0b3AgKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2Jhc2VfZmlsdGVyX3NldF9jYXBzIChHc3RCYXNlVHJhbnNmb3JtICogYnQsCisgICAgR3N0Q2FwcyAqIGluY2FwcywgR3N0Q2FwcyAqIG91dGNhcHMpOwogc3RhdGljIGdib29sZWFuIGdzdF9nbF9iYXNlX2ZpbHRlcl9kZWNpZGVfYWxsb2NhdGlvbiAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zLAogICAgIEdzdFF1ZXJ5ICogcXVlcnkpOwogCkBAIC04NSwxMCArMTAwLDEyIEBACiAgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwogICBlbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKIAorICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9nbF9iYXNlX2ZpbHRlcl9maW5hbGl6ZTsKICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2dsX2Jhc2VfZmlsdGVyX3NldF9wcm9wZXJ0eTsKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2dsX2Jhc2VfZmlsdGVyX2dldF9wcm9wZXJ0eTsKIAogICBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xBU1MgKGtsYXNzKS0+cXVlcnkgPSBnc3RfZ2xfYmFzZV9maWx0ZXJfcXVlcnk7CisgIEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUyAoa2xhc3MpLT5zZXRfY2FwcyA9IGdzdF9nbF9iYXNlX2ZpbHRlcl9zZXRfY2FwczsKICAgR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTIChrbGFzcyktPnN0YXJ0ID0gZ3N0X2dsX2Jhc2VfZmlsdGVyX3N0YXJ0OwogICBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xBU1MgKGtsYXNzKS0+c3RvcCA9IGdzdF9nbF9iYXNlX2ZpbHRlcl9zdG9wOwogICBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xBU1MgKGtsYXNzKS0+ZGVjaWRlX2FsbG9jYXRpb24gPQpAQCAtMTA5LDEwICsxMjYsMjMgQEAKIHN0YXRpYyB2b2lkCiBnc3RfZ2xfYmFzZV9maWx0ZXJfaW5pdCAoR3N0R0xCYXNlRmlsdGVyICogZmlsdGVyKQogeworICBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X3Fvc19lbmFibGVkIChHU1RfQkFTRV9UUkFOU0ZPUk0gKGZpbHRlciksIFRSVUUpOworCiAgIGZpbHRlci0+cHJpdiA9IEdTVF9HTF9CQVNFX0ZJTFRFUl9HRVRfUFJJVkFURSAoZmlsdGVyKTsKIH0KIAogc3RhdGljIHZvaWQKK2dzdF9nbF9iYXNlX2ZpbHRlcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0R0xCYXNlRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfQkFTRV9GSUxURVIgKG9iamVjdCk7CisKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJmZpbHRlci0+aW5fY2FwcywgTlVMTCk7CisgIGdzdF9jYXBzX3JlcGxhY2UgKCZmaWx0ZXItPm91dF9jYXBzLCBOVUxMKTsKKworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCiBnc3RfZ2xfYmFzZV9maWx0ZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAogICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCiB7CkBAIC0xNTAsNiArMTgwLDggQEAKICAgaWYgKGZpbHRlci0+ZGlzcGxheSkKICAgICBnc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpIChmaWx0ZXItPmRpc3BsYXksCiAgICAgICAgIGZpbHRlcl9jbGFzcy0+c3VwcG9ydGVkX2dsX2FwaSk7CisKKyAgR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0KTsKIH0KIAogc3RhdGljIGdib29sZWFuCkBAIC0yOTQsNiArMzI2LDkgQEAKICAgR3N0R0xCYXNlRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfQkFTRV9GSUxURVIgKGRhdGEpOwogICBHc3RHTEJhc2VGaWx0ZXJDbGFzcyAqZmlsdGVyX2NsYXNzID0gR1NUX0dMX0JBU0VfRklMVEVSX0dFVF9DTEFTUyAoZmlsdGVyKTsKIAorICBnc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlciAoZmlsdGVyLT5jb250ZXh0LAorICAgICAgInN0YXJ0aW5nIGVsZW1lbnQgJXMiLCBHU1RfT0JKRUNUX05BTUUgKGZpbHRlcikpOworCiAgIGlmIChmaWx0ZXJfY2xhc3MtPmdsX3N0YXJ0KSB7CiAgICAgZmlsdGVyLT5wcml2LT5nbF9yZXN1bHQgPSBmaWx0ZXJfY2xhc3MtPmdsX3N0YXJ0IChmaWx0ZXIpOwogICB9IGVsc2UgewpAQCAtMzA5LDYgKzM0NCw5IEBACiAgIEdzdEdMQmFzZUZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0JBU0VfRklMVEVSIChkYXRhKTsKICAgR3N0R0xCYXNlRmlsdGVyQ2xhc3MgKmZpbHRlcl9jbGFzcyA9IEdTVF9HTF9CQVNFX0ZJTFRFUl9HRVRfQ0xBU1MgKGZpbHRlcik7CiAKKyAgZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIgKGZpbHRlci0+Y29udGV4dCwKKyAgICAgICJzdG9wcGluZyBlbGVtZW50ICVzIiwgR1NUX09CSkVDVF9OQU1FIChmaWx0ZXIpKTsKKwogICBpZiAoZmlsdGVyLT5wcml2LT5nbF9zdGFydGVkKSB7CiAgICAgaWYgKGZpbHRlcl9jbGFzcy0+Z2xfc3RvcCkKICAgICAgIGZpbHRlcl9jbGFzcy0+Z2xfc3RvcCAoZmlsdGVyKTsKQEAgLTMxNywxMSArMzU1LDIyIEBACiAgIGZpbHRlci0+cHJpdi0+Z2xfc3RhcnRlZCA9IEZBTFNFOwogfQogCitzdGF0aWMgdm9pZAorX2dsX3NldF9jYXBzIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTEJhc2VGaWx0ZXIgKiBmaWx0ZXIpCit7CisgIEdzdEdMQmFzZUZpbHRlckNsYXNzICpmaWx0ZXJfY2xhc3MgPSBHU1RfR0xfQkFTRV9GSUxURVJfR0VUX0NMQVNTIChmaWx0ZXIpOworCisgIGlmIChmaWx0ZXJfY2xhc3MtPmdsX3NldF9jYXBzKQorICAgIGZpbHRlci0+cHJpdi0+Z2xfcmVzdWx0ID0KKyAgICAgICAgZmlsdGVyX2NsYXNzLT5nbF9zZXRfY2FwcyAoZmlsdGVyLCBmaWx0ZXItPmluX2NhcHMsIGZpbHRlci0+b3V0X2NhcHMpOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9nbF9iYXNlX2ZpbHRlcl9kZWNpZGVfYWxsb2NhdGlvbiAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zLAogICAgIEdzdFF1ZXJ5ICogcXVlcnkpCiB7CiAgIEdzdEdMQmFzZUZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0JBU0VfRklMVEVSICh0cmFucyk7CisgIEdzdEdMQmFzZUZpbHRlckNsYXNzICpmaWx0ZXJfY2xhc3MgPSBHU1RfR0xfQkFTRV9GSUxURVJfR0VUX0NMQVNTIChmaWx0ZXIpOwogICBHRXJyb3IgKmVycm9yID0gTlVMTDsKICAgZ2Jvb2xlYW4gbmV3X2NvbnRleHQgPSBGQUxTRTsKIApAQCAtMzQ5LDExICszOTgsMTcgQEAKICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyLT5kaXNwbGF5KTsKICAgfQogCi0gIGlmIChuZXdfY29udGV4dCkgeworICBpZiAobmV3X2NvbnRleHQgfHwgIWZpbHRlci0+cHJpdi0+Z2xfc3RhcnRlZCkgewogICAgIGlmIChmaWx0ZXItPnByaXYtPmdsX3N0YXJ0ZWQpCiAgICAgICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChmaWx0ZXItPmNvbnRleHQsIGdzdF9nbF9iYXNlX2ZpbHRlcl9nbF9zdG9wLAogICAgICAgICAgIGZpbHRlcik7CiAKKyAgICB7CisgICAgICBHc3RHTEFQSSBjdXJyZW50X2dsX2FwaSA9IGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKGZpbHRlci0+Y29udGV4dCk7CisgICAgICBpZiAoKGN1cnJlbnRfZ2xfYXBpICYgZmlsdGVyX2NsYXNzLT5zdXBwb3J0ZWRfZ2xfYXBpKSA9PSAwKQorICAgICAgICBnb3RvIHVuc3VwcG9ydGVkX2dsX2FwaTsKKyAgICB9CisKICAgICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChmaWx0ZXItPmNvbnRleHQsIGdzdF9nbF9iYXNlX2ZpbHRlcl9nbF9zdGFydCwKICAgICAgICAgZmlsdGVyKTsKIApAQCAtMzYxLDkgKzQxNiwyOSBAQAogICAgICAgZ290byBlcnJvcjsKICAgfQogCisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGZpbHRlci0+Y29udGV4dCwKKyAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfZ2xfc2V0X2NhcHMsIGZpbHRlcik7CisgIGlmICghZmlsdGVyLT5wcml2LT5nbF9yZXN1bHQpCisgICAgZ290byBlcnJvcjsKKwogICByZXR1cm4gR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5kZWNpZGVfYWxsb2NhdGlvbiAodHJhbnMsCiAgICAgICBxdWVyeSk7CiAKKwordW5zdXBwb3J0ZWRfZ2xfYXBpOgorICB7CisgICAgR3N0R0xBUEkgZ2xfYXBpID0gZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoZmlsdGVyLT5jb250ZXh0KTsKKyAgICBnY2hhciAqZ2xfYXBpX3N0ciA9IGdzdF9nbF9hcGlfdG9fc3RyaW5nIChnbF9hcGkpOworICAgIGdjaGFyICpzdXBwb3J0ZWRfZ2xfYXBpX3N0ciA9CisgICAgICAgIGdzdF9nbF9hcGlfdG9fc3RyaW5nIChmaWx0ZXJfY2xhc3MtPnN1cHBvcnRlZF9nbF9hcGkpOworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChmaWx0ZXIsIFJFU09VUkNFLCBCVVNZLAorICAgICAgICAoIkdMIEFQSSdzIG5vdCBjb21wYXRpYmxlIGNvbnRleHQ6ICVzIHN1cHBvcnRlZDogJXMiLCBnbF9hcGlfc3RyLAorICAgICAgICAgICAgc3VwcG9ydGVkX2dsX2FwaV9zdHIpLCAoTlVMTCkpOworCisgICAgZ19mcmVlIChzdXBwb3J0ZWRfZ2xfYXBpX3N0cik7CisgICAgZ19mcmVlIChnbF9hcGlfc3RyKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KIGNvbnRleHRfZXJyb3I6CiAgIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAodHJhbnMsIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLCBlcnJvci0+bWVzc2FnZSksCkBAIC0zNzksNiArNDU0LDE4IEBACiAgIH0KIH0KIAorc3RhdGljIGdib29sZWFuCitnc3RfZ2xfYmFzZV9maWx0ZXJfc2V0X2NhcHMgKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCwgR3N0Q2FwcyAqIGluY2FwcywKKyAgICBHc3RDYXBzICogb3V0Y2FwcykKK3sKKyAgR3N0R0xCYXNlRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfQkFTRV9GSUxURVIgKGJ0KTsKKworICBnc3RfY2Fwc19yZXBsYWNlICgmZmlsdGVyLT5pbl9jYXBzLCBpbmNhcHMpOworICBnc3RfY2Fwc19yZXBsYWNlICgmZmlsdGVyLT5vdXRfY2Fwcywgb3V0Y2Fwcyk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgogZ3N0X2dsX2Jhc2VfZmlsdGVyX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCiAgICAgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuaAppbmRleCA1ZWQzOTgwLi5mYTE2ZDA3IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZWZpbHRlci5oCkBAIC00MSwxMiArNDEsMTEgQEAKIAogLyoqCiAgKiBHc3RHTEJhc2VGaWx0ZXI6Ci0gKiBAYmFzZV90cmFuc2Zvcm06IHBhcmVudCAjR3N0QmFzZVRyYW5zZm9ybQorICogQHBhcmVudDogcGFyZW50ICNHc3RCYXNlVHJhbnNmb3JtCiAgKiBAZGlzcGxheTogdGhlIGN1cnJlbnRseSBjb25maWd1cmVkICNHc3RHTERpc3BsYXkKICAqIEBjb250ZXh0OiB0aGUgY3VycmVudGx5IGNvbmZpZ3VyZWQgI0dzdEdMQ29udGV4dAotICoKLSAqICNHc3RHTEJhc2VGaWx0ZXIgaXMgYSBiYXNlIGNsYXNzIHRoYXQgcHJvdmlkZXMgdGhlIGxvZ2ljIG9mIGdldHRpbmcgdGhlCi0gKiBHTCBjb250ZXh0IGZyb20gdGhlIHBpcGVsaW5lLgorICogQGluX2NhcHM6IHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCBpbnB1dCAjR3N0Q2FwcworICogQG91dF9jYXBzOiB0aGUgY3VycmVudGx5IGNvbmZpZ3VyZWQgb3V0cHV0ICNHc3RDYXBzCiAgKi8KIHN0cnVjdCBfR3N0R0xCYXNlRmlsdGVyCiB7CkBAIC01NSw2ICs1NCw5IEBACiAgIEdzdEdMRGlzcGxheSAgICAgICpkaXNwbGF5OwogICBHc3RHTENvbnRleHQgICAgICAqY29udGV4dDsKIAorICBHc3RDYXBzICAgICAgICAgICAqaW5fY2FwczsKKyAgR3N0Q2FwcyAgICAgICAgICAgKm91dF9jYXBzOworCiAgIC8qIDxwcml2YXRlPiAqLwogICBncG9pbnRlciBfcGFkZGluZ1tHU1RfUEFERElOR107CiAKQEAgLTYzLDkgKzY1LDExIEBACiAKIC8qKgogICogR3N0R0xCYXNlRmlsdGVyQ2xhc3M6Ci0gKiBAYmFzZV90cmFuc2Zvcm1fY2xhc3M6IHBhcmVudCBjbGFzcworICogQHBhcmVudF9jbGFzczogcGFyZW50IGNsYXNzCisgKiBAc3VwcG9ydGVkX2dsX2FwaTogdGhlIGxvZ2ljYWwtT1Igb2YgI0dzdEdMQVBJJ3Mgc3VwcG9ydGVkIGJ5IHRoaXMgZWxlbWVudAogICogQGdsX3N0YXJ0OiBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZCB0byBzZXR1cCB0aGUgZWxlbWVudCBHTCBzdGF0ZS4KICAqIEBnbF9zdG9wOiBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZCB0byBzZXR1cCB0aGUgZWxlbWVudCBHTCBzdGF0ZS4KKyAqIEBnbF9zZXRfY2FwczogY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQgd2hlbiBjYXBzIGFyZSBzZXQgb24gQGZpbHRlci4KICAqLwogc3RydWN0IF9Hc3RHTEJhc2VGaWx0ZXJDbGFzcwogewpAQCAtNzQsNyArNzgsOSBAQAogCiAgIGdib29sZWFuICgqZ2xfc3RhcnQpICAgICAgICAgIChHc3RHTEJhc2VGaWx0ZXIgKmZpbHRlcik7CiAgIHZvaWQgICAgICgqZ2xfc3RvcCkgICAgICAgICAgIChHc3RHTEJhc2VGaWx0ZXIgKmZpbHRlcik7CisgIGdib29sZWFuICgqZ2xfc2V0X2NhcHMpICAgICAgIChHc3RHTEJhc2VGaWx0ZXIgKmZpbHRlciwgR3N0Q2FwcyAqIGluY2FwcywgR3N0Q2FwcyAqIG91dGNhcHMpOwogCisgIC8qIDxwcml2YXRlPiAqLwogICBncG9pbnRlciBfcGFkZGluZ1tHU1RfUEFERElOR107CiB9OwogCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5LmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYyYzE5YwotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuYwpAQCAtMCwwICsxLDczMSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaD4KKworLyoqCisgKiBTRUNUSU9OOmdzdGdsYmFzZW1lbW9yeQorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIGJ1ZmZlcnMKKyAqIEBzZWVfYWxzbzogI0dzdE1lbW9yeSwgI0dzdEFsbG9jYXRvcgorICoKKyAqIEdzdEdMQmFzZU1lbW9yeSBpcyBhICNHc3RNZW1vcnkgc3ViY2xhc3MgcHJvdmlkaW5nIHRoZSBiYXNpcyBvZiBzdXBwb3J0CisgKiBmb3IgdGhlIG1hcHBpbmcgb2YgR0wgYnVmZmVycy4KKyAqCisgKiBEYXRhIGlzIHVwbG9hZGVkIG9yIGRvd25sb2FkZWQgZnJvbSB0aGUgR1BVIGFzIGlzIG5lY2Vzc2FyeS4KKyAqLworCisjZGVmaW5lIFVTSU5HX09QRU5HTChjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wsIDEsIDApKQorI2RlZmluZSBVU0lOR19PUEVOR0wzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTDMsIDMsIDEpKQorI2RlZmluZSBVU0lOR19HTEVTKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMsIDEsIDApKQorI2RlZmluZSBVU0lOR19HTEVTMihjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMiwgMCkpCisjZGVmaW5lIFVTSU5HX0dMRVMzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAzLCAwKSkKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9HTF9CQVNFX01FTU9SWSk7CisjZGVmaW5lIEdTVF9DQVRfREVGVUFMVCBHU1RfQ0FUX0dMX0JBU0VfTUVNT1JZCisKK0dRdWFyaworZ3N0X2dsX2Jhc2VfbWVtb3J5X2Vycm9yX3F1YXJrICh2b2lkKQoreworICByZXR1cm4gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcgKCJnc3QtZ2wtYmFzZS1idWZmZXItZXJyb3ItcXVhcmsiKTsKK30KKworc3RhdGljIGdib29sZWFuCitfZGVmYXVsdF9jcmVhdGUgKEdzdEdMQmFzZU1lbW9yeSAqIG1lbSwgR0Vycm9yICoqIGVycm9yKQoreworICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTF9CQVNFX01FTU9SWV9FUlJPUiwgR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX0ZBSUxFRCwKKyAgICAgICJzdWJjbGFzcyBzaG91bGQgZGVmaW5lIGNyZWF0ZSgpIHZmdW5jIik7CisKKyAgZ19jcml0aWNhbCAoInN1YmNsYXNzIHNob3VsZCBvdmVycmlkZSAiCisgICAgICAiR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3M6OmNyZWF0ZSgpIGZ1bmN0aW9uIik7CisKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdHJ1Y3QgY3JlYXRlX2RhdGEKK3sKKyAgR3N0R0xCYXNlTWVtb3J5ICptZW07CisgIGdib29sZWFuIHJlc3VsdDsKK307CisKK3N0YXRpYyB2b2lkCitfbWVtX2NyZWF0ZV9nbCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgc3RydWN0IGNyZWF0ZV9kYXRhICp0cmFuc2ZlcikKK3sKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKmFsbG9jX2NsYXNzOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBHU1RfQ0FUX1RSQUNFIChHU1RfQ0FUX0dMX0JBU0VfTUVNT1JZLCAiQ3JlYXRlIG1lbW9yeSAlcCIsIHRyYW5zZmVyLT5tZW0pOworCisgIGFsbG9jX2NsYXNzID0KKyAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfR0VUX0NMQVNTICh0cmFuc2Zlci0+bWVtLT5tZW0uYWxsb2NhdG9yKTsKKworICBnX3JldHVybl9pZl9mYWlsIChhbGxvY19jbGFzcy0+Y3JlYXRlICE9IE5VTEwpOworCisgIHRyYW5zZmVyLT5tZW0tPnF1ZXJ5ID0gZ3N0X2dsX3F1ZXJ5X25ldyAoY29udGV4dCwgR1NUX0dMX1FVRVJZX1RJTUVfRUxBUFNFRCk7CisKKyAgaWYgKCh0cmFuc2Zlci0+cmVzdWx0ID0gYWxsb2NfY2xhc3MtPmNyZWF0ZSAodHJhbnNmZXItPm1lbSwgJmVycm9yKSkpCisgICAgcmV0dXJuOworCisgIGdfYXNzZXJ0IChlcnJvciAhPSBOVUxMKTsKKworICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX0dMX0JBU0VfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBHTCBidWZmZXI6ICVzIiwKKyAgICAgIGVycm9yLT5tZXNzYWdlKTsKKyAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKK30KKworLyoqCisgKiBnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdDoKKyAqIEBtZW06IHRoZSAjR3N0R0xCYXNlTWVtb3J5IHRvIGluaXRpYWxpemUKKyAqIEBhbGxvY2F0b3I6IHRoZSAjR3N0QWxsb2NhdG9yIHRvIGluaXRpYWxpemUgd2l0aAorICogQHBhcmVudDogKGFsbG93LW5vbmUpOiB0aGUgcGFyZW50ICNHc3RNZW1vcnkgdG8gaW5pdGlhbGl6ZSB3aXRoCisgKiBAY29udGV4dDogdGhlICNHc3RHTENvbnRleHQgdG8gaW5pdGlhbGl6ZSB3aXRoCisgKiBAcGFyYW1zOiAoYWxsb3ctbm9uZSk6IHRoZSBAR3N0QWxsb2NhdGlvblBhcmFtcyB0byBpbml0aWFsaXplIHdpdGgKKyAqIEBzaXplOiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGJlIGFsbG9jYXRlZAorICogQHVzZXJfZGF0YTogKGFsbG93LW5vbmUpOiB1c2VyIGRhdGEgdG8gY2FsbCBAbm90aWZ5IHdpdGgKKyAqIEBub3RpZnk6IChhbGxvdy1ub25lKTogYSAjR0Rlc3Ryb3lOb3RpZnkKKyAqCisgKiBJbml0aWFsaXplcyBAbWVtIHdpdGggdGhlIHJlcXVpcmVkIHBhcmFtZXRlcnMKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9iYXNlX21lbW9yeV9pbml0IChHc3RHTEJhc2VNZW1vcnkgKiBtZW0sIEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICBHc3RNZW1vcnkgKiBwYXJlbnQsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsCisgICAgZ3NpemUgc2l6ZSwgZ3BvaW50ZXIgdXNlcl9kYXRhLCBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIGdzaXplIGFsaWduID0gZ3N0X21lbW9yeV9hbGlnbm1lbnQsIG9mZnNldCA9IDAsIG1heHNpemU7CisgIEdzdE1lbW9yeUZsYWdzIGZsYWdzID0gMDsKKyAgc3RydWN0IGNyZWF0ZV9kYXRhIGRhdGE7CisKKyAgLyogQSBub3RlIG9uIHNpemVzLgorICAgKiBnbF9tZW0tPmFsbG9jX3NpemU6IHRoZSBzaXplIHRvIGFsbG9jYXRlIHdoZW4gd2UgY29udHJvbCB0aGUgYWxsb2NhdGlvbi4KKyAgICogICAgICAgICAgICAgICAgICAgICBTaXplIG9mIHRoZSB1bmFsaWduZWQgYWxsb2NhdGlvbi4KKyAgICogbWVtLT5tYXhzaXplOiB0aGUgc2l6ZSB0aGF0IGlzIHVzZWQgYnkgR3N0TWVtb3J5IGZvciBtYXBwaW5nLCB0byBtYXAgdGhlCisgICAqICAgICAgICAgICAgICAgZW50aXJlIG1lbW9yeS4gVGhlIHNpemUgb2YgdGhlIGFsaWduZWQgYWxsb2NhdGlvbgorICAgKiBtZW0tPnNpemU6IHJlcHJlc2VudHMgdGhlIHNpemUgb2YgdGhlIHZhbGlkIGRhdGEuIENhbiBiZSByZWR1Y2VkIHdpdGgKKyAgICogICAgICAgICAgICBnc3RfbWVtb3J5X3Jlc2l6ZSgpCisgICAqCisgICAqIEl0IGhvbGRzIHRoYXQ6CisgICAqIG1lbS0+c2l6ZSArIG1lbS0+b2Zmc2V0IDw9IG1lbS0+bWF4c2l6ZQorICAgKiBhbmQKKyAgICogbWVtLT5tYXhzaXplICsgYWxpZ25tZW50IG9mZnNldCA8PSBnbF9tZW0tPmFsbG9jX3NpemUKKyAgICoKKyAgICogV2UgbmVlZCB0byBhZGQgdGhlIGFsaWdubWVudCBtYXNrIHRvIHRoZSBhbGxvY2F0ZWQgc2l6ZSBpbiBvcmRlciB0byBoYXZlCisgICAqIHRoZSBmcmVlZG9tIHRvIGFsaWduIHRoZSBnbF9tZW0tPmRhdGEgcG9pbnRlciBjb3JyZWN0bHkgd2hpY2ggbWF5IGJlIG9mZnNldAorICAgKiBieSBhdCBtb3N0IGFsaWduIGJ5dGVzIGluIHRoZSBhbGxvY19kYXRhIHBvaW50ZXIuCisgICAqCisgICAqIG1heHNpemUgaXMgbm90IHN1aXRhYmxlIGZvciB0aGlzIGFzIGl0IGlzIHVzZWQgYnkgR3N0TWVtb3J5IGFzIHRoZSBzaXplCisgICAqIHRvIG1hcCB3aXRoLgorICAgKi8KKyAgbWVtLT5hbGxvY19zaXplID0gbWF4c2l6ZSA9IHNpemU7CisgIGlmIChwYXJhbXMpIHsKKyAgICBmbGFncyA9IHBhcmFtcy0+ZmxhZ3M7CisgICAgYWxpZ24gfD0gcGFyYW1zLT5hbGlnbjsKKyAgICBvZmZzZXQgPSBwYXJhbXMtPnByZWZpeDsKKyAgICBtYXhzaXplICs9IHBhcmFtcy0+cHJlZml4ICsgcGFyYW1zLT5wYWRkaW5nOworCisgICAgLyogZGVhbHMgd2l0aCBhbnkgYWxpZ25tZW50ICovCisgICAgbWVtLT5hbGxvY19zaXplID0gbWF4c2l6ZSArIGFsaWduOworICB9CisKKyAgZ3N0X21lbW9yeV9pbml0IChHU1RfTUVNT1JZX0NBU1QgKG1lbSksIGZsYWdzLCBhbGxvY2F0b3IsIHBhcmVudCwgbWF4c2l6ZSwKKyAgICAgIGFsaWduLCBvZmZzZXQsIHNpemUpOworCisgIG1lbS0+Y29udGV4dCA9IGdzdF9vYmplY3RfcmVmIChjb250ZXh0KTsKKyAgbWVtLT5ub3RpZnkgPSBub3RpZnk7CisgIG1lbS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworCisgIGdfbXV0ZXhfaW5pdCAoJm1lbS0+bG9jayk7CisKKyAgZGF0YS5tZW0gPSBtZW07CisKKyAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoY29udGV4dCwKKyAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfbWVtX2NyZWF0ZV9nbCwgJmRhdGEpOworICBpZiAoIWRhdGEucmVzdWx0KSB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9HTF9CQVNFX01FTU9SWSwKKyAgICAgICAgIkNvdWxkIG5vdCBjcmVhdGUgR0wgYnVmZmVyIHdpdGggY29udGV4dDolcCIsIGNvbnRleHQpOworICB9CisKKyAgR1NUX0NBVF9ERUJVRyAoR1NUX0NBVF9HTF9CQVNFX01FTU9SWSwgIm5ldyBHTCBidWZmZXIgbWVtb3J5OiVwIHNpemU6JSIKKyAgICAgIEdfR1NJWkVfRk9STUFULCBtZW0sIG1heHNpemUpOworfQorCitzdGF0aWMgZ3BvaW50ZXIKK19hbGlnbl9kYXRhIChncG9pbnRlciBkYXRhLCBnc2l6ZSBhbGlnbikKK3sKKyAgZ3VpbnQ4ICpyZXQgPSBkYXRhOworICBnc2l6ZSBhb2Zmc2V0OworCisgIC8qIGRvIGFsaWdubWVudCwgZGF0YSBtdXN0IGhhdmUgZW5vdWdoIHBhZGRpbmcgYXQgdGhlIGVuZCB0byBtb3ZlIGF0IG1vc3QKKyAgICogYWxpZ24gYnl0ZXMgKi8KKyAgaWYgKChhb2Zmc2V0ID0gKChndWludHB0cikgcmV0ICYgYWxpZ24pKSkgeworICAgIGFvZmZzZXQgPSAoYWxpZ24gKyAxKSAtIGFvZmZzZXQ7CisgICAgcmV0ICs9IGFvZmZzZXQ7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCisvKiBzdWJjbGFzcyB1c2FnZSBvbmx5ICovCitnYm9vbGVhbgorZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jX2RhdGEgKEdzdEdMQmFzZU1lbW9yeSAqIGdsX21lbSkKK3sKKyAgR3N0TWVtb3J5ICptZW0gPSAoR3N0TWVtb3J5ICopIGdsX21lbTsKKworICBpZiAoZ2xfbWVtLT5kYXRhKQorICAgIHJldHVybiBUUlVFOworCisgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0dMX0JBU0VfTUVNT1JZLCAiJXAgYXR0ZW1wdGluZyBhbGxvY2F0aW9uIG9mIGRhdGEgIgorICAgICAgInBvaW50ZXIgb2Ygc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCwgZ2xfbWVtLCBnbF9tZW0tPmFsbG9jX3NpemUpOworICBnbF9tZW0tPmFsbG9jX2RhdGEgPSBnX3RyeV9tYWxsb2MgKGdsX21lbS0+YWxsb2Nfc2l6ZSk7CisKKyAgaWYgKGdsX21lbS0+YWxsb2NfZGF0YSA9PSBOVUxMKQorICAgIHJldHVybiBGQUxTRTsKKworICBnbF9tZW0tPmRhdGEgPSBfYWxpZ25fZGF0YSAoZ2xfbWVtLT5hbGxvY19kYXRhLCBtZW0tPmFsaWduKTsKKworICBHU1RfQ0FUX0RFQlVHIChHU1RfQ0FUX0dMX0JBU0VfTUVNT1JZLCAiJXAgYWxsb2NhdGVkIGRhdGEgcG9pbnRlciBhbGxvYyAlcCwgIgorICAgICAgImRhdGEgJXAiLCBnbF9tZW0sIGdsX21lbS0+YWxsb2NfZGF0YSwgZ2xfbWVtLT5kYXRhKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RydWN0IG1hcF9kYXRhCit7CisgIEdzdEdMQmFzZU1lbW9yeSAqbWVtOworICBHc3RNYXBJbmZvICppbmZvOworICBnc2l6ZSBzaXplOworICBncG9pbnRlciBkYXRhOworfTsKKworc3RhdGljIHZvaWQKK19tYXBfZGF0YV9nbCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgc3RydWN0IG1hcF9kYXRhICp0cmFuc2ZlcikKK3sKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKmFsbG9jX2NsYXNzOworICBHc3RHTEJhc2VNZW1vcnkgKm1lbSA9IHRyYW5zZmVyLT5tZW07CisgIEdzdE1hcEluZm8gKmluZm8gPSB0cmFuc2Zlci0+aW5mbzsKKworICBhbGxvY19jbGFzcyA9CisgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUyAodHJhbnNmZXItPm1lbS0+bWVtLmFsbG9jYXRvcik7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAoYWxsb2NfY2xhc3MtPm1hcCAhPSBOVUxMKTsKKworICBnX211dGV4X2xvY2sgKCZtZW0tPmxvY2spOworCisgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0dMX0JBU0VfTUVNT1JZLCAibWFwcGluZyBtZW0gJXAgZmxhZ3MgJTA0eCIsIG1lbSwKKyAgICAgIGluZm8tPmZsYWdzKTsKKworICAvKiBGSVhNRTogdmFsaWRhdGUgbWFwIGZsYWdzIGJhc2VkIG9uIHRoZSBtZW1vcnkgZG9tYWluICovCisgIGlmIChtZW0tPm1hcF9jb3VudCsrID09IDApCisgICAgbWVtLT5tYXBfZmxhZ3MgPSBpbmZvLT5mbGFnczsKKyAgZWxzZSB7CisgICAgLyogYXNzZXJ0IHRoYXQgdGhlIGZsYWdzIGFyZSBhIHN1YnNldCBvZiB0aGUgZmlyc3QgbWFwIGZsYWdzICovCisgICAgZ19hc3NlcnQgKCgoKEdTVF9NQVBfR0wgLSAxKSAmIGluZm8tPmZsYWdzKSAmIG1lbS0+bWFwX2ZsYWdzKSAhPSAwKTsKKyAgICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9CQVNFX01FTU9SWSwgIm11bHRpcGxlIG1hcCBubyAlZCBmbGFncyAlMDR4ICIKKyAgICAgICAgImFsbCBmbGFncyAlMDR4IiwgbWVtLT5tYXBfY291bnQsIGluZm8tPmZsYWdzLCBtZW0tPm1hcF9mbGFncyk7CisgIH0KKworICBpZiAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgIT0gKG1lbS0+bWFwX2ZsYWdzICYgR1NUX01BUF9HTCkpCisgICAgbWVtLT5tYXBfZmxhZ3MgfD0gR1NUX01BUF9HTDsKKworICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMKQorICAgIG1lbS0+Z2xfbWFwX2NvdW50Kys7CisKKyAgdHJhbnNmZXItPmRhdGEgPSBhbGxvY19jbGFzcy0+bWFwICh0cmFuc2Zlci0+bWVtLCB0cmFuc2Zlci0+aW5mbywKKyAgICAgIHRyYW5zZmVyLT5zaXplKTsKKworICBpZiAodHJhbnNmZXItPmRhdGEpIHsKKyAgICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMKSB7CisgICAgICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKQorICAgICAgICBHU1RfTUlOSV9PQkpFQ1RfRkxBR19TRVQgKG1lbSwKKyAgICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKTsKKyAgICAgIEdTVF9NRU1PUllfRkxBR19VTlNFVCAobWVtLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpOworICAgIH0gZWxzZSB7CisgICAgICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKQorICAgICAgICBHU1RfTUlOSV9PQkpFQ1RfRkxBR19TRVQgKG1lbSwgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKTsKKyAgICAgIEdTVF9NRU1PUllfRkxBR19VTlNFVCAobWVtLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCk7CisgICAgfQorICB9CisKKyAgZ19tdXRleF91bmxvY2sgKCZtZW0tPmxvY2spOworfQorCitzdGF0aWMgZ3BvaW50ZXIKK19tZW1fbWFwX2Z1bGwgKEdzdEdMQmFzZU1lbW9yeSAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCit7CisgIHN0cnVjdCBtYXBfZGF0YSB0cmFuc2ZlcjsKKworICB0cmFuc2Zlci5tZW0gPSBtZW07CisgIHRyYW5zZmVyLmluZm8gPSBpbmZvOworICB0cmFuc2Zlci5zaXplID0gc2l6ZTsKKyAgdHJhbnNmZXIuZGF0YSA9IE5VTEw7CisKKyAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAobWVtLT5jb250ZXh0LAorICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9tYXBfZGF0YV9nbCwgJnRyYW5zZmVyKTsKKworICByZXR1cm4gdHJhbnNmZXIuZGF0YTsKK30KKworc3RydWN0IHVubWFwX2RhdGEKK3sKKyAgR3N0R0xCYXNlTWVtb3J5ICptZW07CisgIEdzdE1hcEluZm8gKmluZm87Cit9OworCitzdGF0aWMgdm9pZAorX3VubWFwX2RhdGFfZ2wgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIHN0cnVjdCB1bm1hcF9kYXRhICp0cmFuc2ZlcikKK3sKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKmFsbG9jX2NsYXNzOworICBHc3RHTEJhc2VNZW1vcnkgKm1lbSA9IHRyYW5zZmVyLT5tZW07CisgIEdzdE1hcEluZm8gKmluZm8gPSB0cmFuc2Zlci0+aW5mbzsKKworICBhbGxvY19jbGFzcyA9CisgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUyAodHJhbnNmZXItPm1lbS0+bWVtLmFsbG9jYXRvcik7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAoYWxsb2NfY2xhc3MtPnVubWFwICE9IE5VTEwpOworCisgIGdfbXV0ZXhfbG9jayAoJm1lbS0+bG9jayk7CisKKyAgR1NUX0NBVF9MT0cgKEdTVF9DQVRfR0xfQkFTRV9NRU1PUlksICJ1bm1hcHBpbmcgbWVtICVwIGZsYWdzICUwNHgiLCBtZW0sCisgICAgICBpbmZvLT5mbGFncyk7CisKKyAgYWxsb2NfY2xhc3MtPnVubWFwICh0cmFuc2Zlci0+bWVtLCB0cmFuc2Zlci0+aW5mbyk7CisKKyAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCAmJiAtLW1lbS0+Z2xfbWFwX2NvdW50KQorICAgIC8qIHVuc2V0IHRoZSBnbCBmbGFnICovCisgICAgbWVtLT5tYXBfZmxhZ3MgJj0gfkdTVF9NQVBfR0w7CisKKyAgaWYgKC0tbWVtLT5tYXBfY291bnQgPD0gMCkgeworICAgIG1lbS0+bWFwX2ZsYWdzID0gMDsKKyAgfQorCisgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpIHsKKyAgICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKQorICAgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKTsKKyAgfSBlbHNlIHsKKyAgICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKQorICAgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCk7CisgIH0KKworICBnX211dGV4X3VubG9jayAoJm1lbS0+bG9jayk7Cit9CisKK3N0YXRpYyB2b2lkCitfbWVtX3VubWFwX2Z1bGwgKEdzdEdMQmFzZU1lbW9yeSAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8pCit7CisgIHN0cnVjdCB1bm1hcF9kYXRhIHRyYW5zZmVyOworCisgIHRyYW5zZmVyLm1lbSA9IG1lbTsKKyAgdHJhbnNmZXIuaW5mbyA9IGluZm87CisKKyAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAobWVtLT5jb250ZXh0LAorICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF91bm1hcF9kYXRhX2dsLCAmdHJhbnNmZXIpOworfQorCitzdGF0aWMgR3N0R0xCYXNlTWVtb3J5ICoKK19kZWZhdWx0X2NvcHkgKEdzdEdMQmFzZU1lbW9yeSAqIHNyYywgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCit7CisgIHJldHVybiBOVUxMOworfQorCitzdHJ1Y3QgY29weV9wYXJhbXMKK3sKKyAgR3N0R0xCYXNlTWVtb3J5ICpzcmM7CisgIEdzdEdMQmFzZU1lbW9yeSAqZGVzdDsKKyAgZ3NzaXplIG9mZnNldDsKKyAgZ3NzaXplIHNpemU7CisgIGdib29sZWFuIHJlc3VsdDsKK307CisKK3N0YXRpYyB2b2lkCitfbWVtX2NvcHlfZ2wgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIHN0cnVjdCBjb3B5X3BhcmFtcyAqdHJhbnNmZXIpCit7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKKworICBhbGxvY19jbGFzcyA9CisgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUyAodHJhbnNmZXItPnNyYy0+bWVtLmFsbG9jYXRvcik7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAoYWxsb2NfY2xhc3MtPmNvcHkgIT0gTlVMTCk7CisKKyAgdHJhbnNmZXItPmRlc3QgPQorICAgICAgYWxsb2NfY2xhc3MtPmNvcHkgKHRyYW5zZmVyLT5zcmMsIHRyYW5zZmVyLT5vZmZzZXQsIHRyYW5zZmVyLT5zaXplKTsKK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitfbWVtX2NvcHkgKEdzdEdMQmFzZU1lbW9yeSAqIHNyYywgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCit7CisgIHN0cnVjdCBjb3B5X3BhcmFtcyB0cmFuc2ZlcjsKKworICB0cmFuc2Zlci5kZXN0ID0gTlVMTDsKKyAgdHJhbnNmZXIuc3JjID0gc3JjOworICB0cmFuc2Zlci5vZmZzZXQgPSBvZmZzZXQ7CisgIHRyYW5zZmVyLnNpemUgPSBzaXplOworICBpZiAoc2l6ZSA9PSAtMSB8fCBzaXplID4gMCkKKyAgICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChzcmMtPmNvbnRleHQsCisgICAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfbWVtX2NvcHlfZ2wsICZ0cmFuc2Zlcik7CisKKyAgcmV0dXJuIChHc3RNZW1vcnkgKikgdHJhbnNmZXIuZGVzdDsKK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitfbWVtX3NoYXJlIChHc3RHTEJhc2VNZW1vcnkgKiBtZW0sIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQoreworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGdib29sZWFuCitfbWVtX2lzX3NwYW4gKEdzdEdMQmFzZU1lbW9yeSAqIG1lbTEsIEdzdEdMQmFzZU1lbW9yeSAqIG1lbTIsIGdzaXplICogb2Zmc2V0KQoreworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX21lbV9hbGxvYyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBnc2l6ZSBzaXplLCBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBnX2NyaXRpY2FsICgiU3ViY2xhc3Mgc2hvdWxkIG92ZXJyaWRlIEdzdEFsbG9jYXRvckNsYXNzOjphbGxvYygpIGZ1bmN0aW9uIik7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCitfZGVmYXVsdF9kZXN0cm95IChHc3RHTEJhc2VNZW1vcnkgKiBtZW0pCit7Cit9CisKK3N0YXRpYyB2b2lkCitfZGVzdHJveV9nbF9vYmplY3RzIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTEJhc2VNZW1vcnkgKiBtZW0pCit7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKKworICBhbGxvY19jbGFzcyA9IEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfR0VUX0NMQVNTIChtZW0tPm1lbS5hbGxvY2F0b3IpOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKGFsbG9jX2NsYXNzLT5kZXN0cm95ICE9IE5VTEwpOworCisgIGFsbG9jX2NsYXNzLT5kZXN0cm95IChtZW0pOworCisgIGlmIChtZW0tPnF1ZXJ5KQorICAgIGdzdF9nbF9xdWVyeV9mcmVlIChtZW0tPnF1ZXJ5KTsKK30KKworc3RhdGljIHZvaWQKK19tZW1fZnJlZSAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBtZW1vcnkpCit7CisgIEdzdEdMQmFzZU1lbW9yeSAqbWVtID0gKEdzdEdMQmFzZU1lbW9yeSAqKSBtZW1vcnk7CisKKyAgR1NUX0NBVF9UUkFDRSAoR1NUX0NBVF9HTF9CQVNFX01FTU9SWSwgImZyZWVpbmcgYnVmZmVyIG1lbW9yeTolcCIsIG1lbSk7CisKKyAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAobWVtLT5jb250ZXh0LAorICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9kZXN0cm95X2dsX29iamVjdHMsIG1lbSk7CisKKyAgZ19tdXRleF9jbGVhciAoJm1lbS0+bG9jayk7CisKKyAgaWYgKG1lbS0+YWxsb2NfZGF0YSkgeworICAgIGdfZnJlZSAobWVtLT5hbGxvY19kYXRhKTsKKyAgICBtZW0tPmFsbG9jX2RhdGEgPSBOVUxMOworICB9CisgIG1lbS0+ZGF0YSA9IE5VTEw7CisKKyAgaWYgKG1lbS0+bm90aWZ5KQorICAgIG1lbS0+bm90aWZ5IChtZW0tPnVzZXJfZGF0YSk7CisKKyAgZ3N0X29iamVjdF91bnJlZiAobWVtLT5jb250ZXh0KTsKKworICBnX2ZyZWUgKG1lbW9yeSk7Cit9CisKKy8qKgorICogZ3N0X2dsX2Jhc2VfbWVtb3J5X2luaXRfb25jZToKKyAqCisgKiBJbml0aWFsaXplcyB0aGUgR0wgQmFzZSBNZW1vcnkgYWxsb2NhdG9yLiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgorICogbXVsdGlwbGUgdGltZXMuICBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgR3N0R0xCYXNlTWVtb3J5IG9wZXJhdGlvbi4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9iYXNlX21lbW9yeV9pbml0X29uY2UgKHZvaWQpCit7CisgIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBfaW5pdCA9IDA7CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmX2luaXQpKSB7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfR0xfQkFTRV9NRU1PUlksICJnbGJhc2VtZW1vcnkiLCAwLAorICAgICAgICAiT3BlbkdMIEJhc2VNZW1vcnkiKTsKKworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9Cit9CisKK0dfREVGSU5FX0FCU1RSQUNUX1RZUEUgKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciwgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jYXRvciwKKyAgICBHU1RfVFlQRV9BTExPQ0FUT1IpOworCitzdGF0aWMgdm9pZAorZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jYXRvcl9jbGFzc19pbml0IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyAqIGtsYXNzKQoreworICBHc3RBbGxvY2F0b3JDbGFzcyAqYWxsb2NhdG9yX2NsYXNzID0gKEdzdEFsbG9jYXRvckNsYXNzICopIGtsYXNzOworCisgIGFsbG9jYXRvcl9jbGFzcy0+YWxsb2MgPSBfbWVtX2FsbG9jOworICBhbGxvY2F0b3JfY2xhc3MtPmZyZWUgPSBfbWVtX2ZyZWU7CisKKyAga2xhc3MtPmNyZWF0ZSA9IF9kZWZhdWx0X2NyZWF0ZTsKKyAga2xhc3MtPmNvcHkgPSBfZGVmYXVsdF9jb3B5OworICBrbGFzcy0+ZGVzdHJveSA9IF9kZWZhdWx0X2Rlc3Ryb3k7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NhdG9yX2luaXQgKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqIGFsbG9jYXRvcikKK3sKKyAgR3N0QWxsb2NhdG9yICphbGxvYyA9IEdTVF9BTExPQ0FUT1JfQ0FTVCAoYWxsb2NhdG9yKTsKKworICAvKiBLZWVwIHRoZSBmYWxsYmFjayBjb3B5IGZ1bmN0aW9uIGFyb3VuZCwgd2Ugd2lsbCBuZWVkIGl0IHdoZW4gY29weWluZyB3aXRoCisgICAqIGF0IGFuIG9mZnNldCBvciBzbWFsbGVyIHNpemUgKi8KKyAgYWxsb2NhdG9yLT5mYWxsYmFja19tZW1fY29weSA9IGFsbG9jLT5tZW1fY29weTsKKworICBhbGxvYy0+bWVtX21hcF9mdWxsID0gKEdzdE1lbW9yeU1hcEZ1bGxGdW5jdGlvbikgX21lbV9tYXBfZnVsbDsKKyAgYWxsb2MtPm1lbV91bm1hcF9mdWxsID0gKEdzdE1lbW9yeVVubWFwRnVsbEZ1bmN0aW9uKSBfbWVtX3VubWFwX2Z1bGw7CisgIGFsbG9jLT5tZW1fY29weSA9IChHc3RNZW1vcnlDb3B5RnVuY3Rpb24pIF9tZW1fY29weTsKKyAgYWxsb2MtPm1lbV9zaGFyZSA9IChHc3RNZW1vcnlTaGFyZUZ1bmN0aW9uKSBfbWVtX3NoYXJlOworICBhbGxvYy0+bWVtX2lzX3NwYW4gPSAoR3N0TWVtb3J5SXNTcGFuRnVuY3Rpb24pIF9tZW1faXNfc3BhbjsKK30KKworLyoqCisgKiBnc3RfaXNfZ2xfYmFzZV9tZW1vcnk6CisgKiBAbWVtOmEgI0dzdE1lbW9yeQorICogCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBtZW1vcnkgYXQgQG1lbSBpcyBhICNHc3RHTEJhc2VNZW1vcnkKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK2dib29sZWFuCitnc3RfaXNfZ2xfYmFzZV9tZW1vcnkgKEdzdE1lbW9yeSAqIG1lbSkKK3sKKyAgcmV0dXJuIG1lbSAhPSBOVUxMICYmIG1lbS0+YWxsb2NhdG9yICE9IE5VTEwgJiYKKyAgICAgIGdfdHlwZV9pc19hIChHX09CSkVDVF9UWVBFIChtZW0tPmFsbG9jYXRvciksCisgICAgICBHU1RfVFlQRV9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IpOworfQorCisvKioKKyAqIGdzdF9nbF9iYXNlX21lbW9yeV9tZW1jcHk6CisgKiBAc3JjOiB0aGUgc291cmNlICNHc3RHTEJhc2VNZW1vcnkKKyAqIEBkZXN0OiB0aGUgZGVzdGluYXRpb24gI0dzdEdMQmFzZU1lbW9yeQorICogQG9mZnNldDogdGhlIG9mZnNldCB0byBzdGFydCBhdAorICogQHNpemU6IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gY29weQorICoKKyAqIFJldHVybnM6IHdoZXRoZXIgdGhlIGNvcHkgc3VjZWVkZWQuCisgKgorICogU2luY2U6IDEuOAorICovCitnYm9vbGVhbgorZ3N0X2dsX2Jhc2VfbWVtb3J5X21lbWNweSAoR3N0R0xCYXNlTWVtb3J5ICogc3JjLCBHc3RHTEJhc2VNZW1vcnkgKiBkZXN0LAorICAgIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQoreworICBHc3RNYXBJbmZvIHNpbmZvLCBkaW5mbzsKKworICBpZiAoIWdzdF9nbF9iYXNlX21lbW9yeV9hbGxvY19kYXRhIChHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVCAoZGVzdCkpKQorICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoIWdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIHNyYywgJnNpbmZvLCBHU1RfTUFQX1JFQUQpKSB7CisgICAgR1NUX0NBVF9XQVJOSU5HIChHU1RfQ0FUX0dMX0JBU0VfTUVNT1JZLAorICAgICAgICAiY291bGQgbm90IHJlYWQgbWFwIHNvdXJjZSBtZW1vcnkgJXAiLCBzcmMpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmICghZ3N0X21lbW9yeV9tYXAgKChHc3RNZW1vcnkgKikgZGVzdCwgJmRpbmZvLCBHU1RfTUFQX1dSSVRFKSkgeworICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9CQVNFX01FTU9SWSwKKyAgICAgICAgImNvdWxkIG5vdCB3cml0ZSBtYXAgZGVzdCBtZW1vcnkgJXAiLCBkZXN0KTsKKyAgICBnc3RfbWVtb3J5X3VubWFwICgoR3N0TWVtb3J5ICopIHNyYywgJnNpbmZvKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoc2l6ZSA9PSAtMSkKKyAgICBzaXplID0gc2luZm8uc2l6ZSA+IG9mZnNldCA/IHNpbmZvLnNpemUgLSBvZmZzZXQgOiAwOworCisgIEdTVF9DQVRfREVCVUcgKEdTVF9DQVRfR0xfQkFTRV9NRU1PUlksCisgICAgICAibWVtY3B5ICUiIEdfR1NTSVpFX0ZPUk1BVCAiIG1lbW9yeSAlcCAtPiAlcCIsIHNpemUsIHNyYywgZGVzdCk7CisgIG1lbWNweSAoZGluZm8uZGF0YSwgc2luZm8uZGF0YSArIG9mZnNldCwgc2l6ZSk7CisgIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgZGVzdCwgJmRpbmZvKTsKKyAgZ3N0X21lbW9yeV91bm1hcCAoKEdzdE1lbW9yeSAqKSBzcmMsICZzaW5mbyk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qKgorICogZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2luaXQ6CisgKiBAcGFyYW1zOiB0aGUgI0dzdEdMQWxsb2NhdGlvblBhcmFtcyB0byBpbml0aWFsaXplCisgKiBAc3RydWN0X3NpemU6IHRoZSBzdHJ1Y3Qgc2l6ZSBvZiB0aGUgaW1wbGVtZW50YXRpb24KKyAqIEBhbGxvY19mbGFnczogc29tZSBhbGxvYyBmbGFncworICogQGNvcHk6IGEgY29weSBmdW5jdGlvbgorICogQGZyZWU6IGEgZnJlZSBmdW5jdGlvbgorICogQGNvbnRleHQ6ICh0cmFuc2ZlciBub25lKTogYSAjR3N0R0xDb250ZXh0CisgKiBAYWxsb2Nfc2l6ZTogdGhlIG51bWJlciBvZiBieXRlcyB0byBhbGxvY2F0ZS4KKyAqIEBhbGxvY19wYXJhbXM6ICh0cmFuc2ZlciBub25lKSAoYWxsb3ctbm9uZSk6IGEgI0dzdEFsbG9jYXRpb25QYXJhbXMgdG8gYXBwbHkKKyAqIEB3cmFwcGVkX2RhdGE6ICh0cmFuc2ZlciBub25lKSAoYWxsb3ctbm9uZSk6IGEgc3lzbWVtIGRhdGEgcG9pbnRlciB0byBpbml0aWFsaXplIHRoZSBhbGxvY2F0aW9uIHdpdGgKKyAqIEBnbF9oYW5kbGU6ICh0cmFuc2ZlciBub25lKTogYSBHTCBoYW5kbGUgdG8gaW5pdGlhbGl6ZSB0aGUgYWxsb2NhdGlvbiB3aXRoCisgKiBAdXNlcl9kYXRhOiAodHJhbnNmZXIgbm9uZSkgKGFsbG93LW5vbmUpOiB1c2VyIGRhdGEgdG8gY2FsbCBAbm90aWZ5IHdpdGgKKyAqIEBub3RpZnk6IChhbGxvdy1ub25lKTogYSAjR0Rlc3Ryb3lOb3RpZnkKKyAqCisgKiBAbm90aWZ5IHdpbGwgYmUgY2FsbGVkIG9uY2UgZm9yIGVhY2ggYWxsb2NhdGVkIG1lbW9yeSB1c2luZyB0aGVzZSBAcGFyYW1zCisgKiB3aGVuIGZyZWVpbmcgdGhlIG1lbW9yeS4KKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBwYXJhbWF0ZXJzIGNvdWxkIGJlIGluaXRpYWxpemVkCisgKgorICogU2luY2U6IDEuOAorICovCitnYm9vbGVhbgorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2luaXQgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywKKyAgICBnc2l6ZSBzdHJ1Y3Rfc2l6ZSwgZ3VpbnQgYWxsb2NfZmxhZ3MsIEdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jIGNvcHksCisgICAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMgZnJlZSwgR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICBnc2l6ZSBhbGxvY19zaXplLCBHc3RBbGxvY2F0aW9uUGFyYW1zICogYWxsb2NfcGFyYW1zLAorICAgIGdwb2ludGVyIHdyYXBwZWRfZGF0YSwgZ3VpbnQgZ2xfaGFuZGxlLCBncG9pbnRlciB1c2VyX2RhdGEsCisgICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQoreworICBtZW1zZXQgKHBhcmFtcywgMCwgc2l6ZW9mICgqcGFyYW1zKSk7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHN0cnVjdF9zaXplID4gMCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoY29weSAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChmcmVlICE9IE5VTEwsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOworCisgIHBhcmFtcy0+c3RydWN0X3NpemUgPSBzdHJ1Y3Rfc2l6ZTsKKyAgcGFyYW1zLT5hbGxvY19zaXplID0gYWxsb2Nfc2l6ZTsKKyAgcGFyYW1zLT5jb3B5ID0gY29weTsKKyAgcGFyYW1zLT5mcmVlID0gZnJlZTsKKyAgcGFyYW1zLT5hbGxvY19mbGFncyA9IGFsbG9jX2ZsYWdzOworICBwYXJhbXMtPmNvbnRleHQgPSBnc3Rfb2JqZWN0X3JlZiAoY29udGV4dCk7CisgIGlmIChhbGxvY19wYXJhbXMpCisgICAgcGFyYW1zLT5hbGxvY19wYXJhbXMgPSBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfY29weSAoYWxsb2NfcGFyYW1zKTsKKyAgcGFyYW1zLT5ub3RpZnkgPSBub3RpZnk7CisgIHBhcmFtcy0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworICBwYXJhbXMtPndyYXBwZWRfZGF0YSA9IHdyYXBwZWRfZGF0YTsKKyAgcGFyYW1zLT5nbF9oYW5kbGUgPSBnbF9oYW5kbGU7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qKgorICogZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHk6CisgKiBAc3JjOiB0aGUgI0dzdEdMQWxsb2NhdGlvblBhcmFtcyB0byBpbml0aWFsaXplCisgKgorICogUmV0dXJuczogYSBjb3B5IG9mIHRoZSAjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIHNwZWNpZmllZCBieSBAc3JjIG9yICVOVUxMIG9uCisgKiAgICAgICAgICBmYWlsdXJlCisgKgorICogU2luY2U6IDEuOAorICovCitHc3RHTEFsbG9jYXRpb25QYXJhbXMgKgorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHkgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIHNyYykKK3sKKyAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zICpkZXN0OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzcmMgIT0gTlVMTCwgTlVMTCk7CisKKyAgZGVzdCA9IGdfbWFsbG9jMCAoc3JjLT5zdHJ1Y3Rfc2l6ZSk7CisKKyAgaWYgKHNyYy0+Y29weSkKKyAgICBzcmMtPmNvcHkgKHNyYywgZGVzdCk7CisKKyAgcmV0dXJuIGRlc3Q7Cit9CisKKy8qKgorICogZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWU6CisgKiBAcGFyYW1zOiB0aGUgI0dzdEdMQWxsb2NhdGlvblBhcmFtcyB0byBpbml0aWFsaXplCisgKgorICogRnJlZXMgdGhlICNHc3RHTEFsbG9jYXRpb25QYXJhbXMgYW5kIGFsbCBhc3NvY2lhdGVkIGRhdGEuCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBpZiAocGFyYW1zLT5mcmVlKQorICAgIHBhcmFtcy0+ZnJlZSAocGFyYW1zKTsKKworICBnX2ZyZWUgKHBhcmFtcyk7Cit9CisKKy8qKgorICogZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YToKKyAqIEBwYXJhbXM6IHRoZSBzb3VyY2UgI0dzdEdMQWxsb2NhdGlvblBhcmFtcworICoKKyAqIEZyZWVzIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgZGF0YSBpbiBAcGFyYW1zLiAgRGlyZWN0IHN1YmNsYXNzZXMKKyAqIHNob3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gdGhlaXIgb3duIG92ZXJyaWRlbiBmcmVlIGZ1bmN0aW9uLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YSAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBpZiAocGFyYW1zLT5jb250ZXh0KQorICAgIGdzdF9vYmplY3RfdW5yZWYgKHBhcmFtcy0+Y29udGV4dCk7CisgIGlmIChwYXJhbXMtPmFsbG9jX3BhcmFtcykKKyAgICBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAocGFyYW1zLT5hbGxvY19wYXJhbXMpOworfQorCisvKioKKyAqIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGE6CisgKiBAc3JjOiB0aGUgc291cmNlICNHc3RHTEFsbG9jYXRpb25QYXJhbXMKKyAqIEBkZXN0OiB0aGUgZGVzdGluYXRpb24gI0dzdEdMQWxsb2NhdGlvblBhcmFtcworICoKKyAqIENvcGllcyB0aGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGRhdGEgZnJvbSBAc3JjIHRvIEBkZXN0LiAgRGlyZWN0IHN1YmNsYXNzZXMKKyAqIHNob3VsZCBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gdGhlaXIgb3duIG92ZXJyaWRlbiBjb3B5IGZ1bmN0aW9uLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YSAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogc3JjLAorICAgIEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIGRlc3QpCit7CisgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19pbml0IChkZXN0LCBzcmMtPnN0cnVjdF9zaXplLCBzcmMtPmFsbG9jX2ZsYWdzLAorICAgICAgc3JjLT5jb3B5LCBzcmMtPmZyZWUsIHNyYy0+Y29udGV4dCwgc3JjLT5hbGxvY19zaXplLCBOVUxMLAorICAgICAgc3JjLT53cmFwcGVkX2RhdGEsIHNyYy0+Z2xfaGFuZGxlLCBzcmMtPnVzZXJfZGF0YSwgc3JjLT5ub3RpZnkpOworCisgIGlmIChzcmMtPmFsbG9jX3BhcmFtcykKKyAgICBkZXN0LT5hbGxvY19wYXJhbXMgPSBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfY29weSAoc3JjLT5hbGxvY19wYXJhbXMpOworfQorCitHX0RFRklORV9CT1hFRF9UWVBFIChHc3RHTEFsbG9jYXRpb25QYXJhbXMsIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtcywKKyAgICAoR0JveGVkQ29weUZ1bmMpIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5LAorICAgIChHQm94ZWRGcmVlRnVuYykgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUpOworCisvKioKKyAqIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYzoKKyAqIEBhbGxvY2F0b3I6IGEgI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcgorICogQHBhcmFtczogdGhlICNHc3RHTEFsbG9jYXRpb25QYXJhbXMgdG8gYWxsb2NhdGUgdGhlIG1lbW9yeSB3aXRoCisgKgorICogUmV0dXJuczogYSBuZXcgI0dzdEdMQmFzZU1lbW9yeSBmcm9tIEBhbGxvY2F0b3Igd2l0aCB0aGUgcmVxdWVzdGVkIEBwYXJhbXMuCisgKgorICogU2luY2U6IDEuOAorICovCitHc3RHTEJhc2VNZW1vcnkgKgorZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKiBhbGxvY2F0b3IsCisgICAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7CisKKyAgYWxsb2NfY2xhc3MgPSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUyAoYWxsb2NhdG9yKTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoYWxsb2NfY2xhc3MgIT0gTlVMTCwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChhbGxvY19jbGFzcy0+YWxsb2MgIT0gTlVMTCwgTlVMTCk7CisKKyAgcmV0dXJuIGFsbG9jX2NsYXNzLT5hbGxvYyAoYWxsb2NhdG9yLCBwYXJhbXMpOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4NjJjODUKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5LmgKQEAgLTAsMCArMSwzNjEgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfR1NUX0dMX0JBU0VfTUVNT1JZX0hfCisjZGVmaW5lIF9HU1RfR0xfQkFTRV9NRU1PUllfSF8KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvZ3N0YWxsb2NhdG9yLmg+CisjaW5jbHVkZSA8Z3N0L2dzdG1lbW9yeS5oPgorCisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsX2Z3ZC5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NhdG9yX2dldF90eXBlKCkpCitHVHlwZSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NhdG9yX2dldF90eXBlKHZvaWQpOworCisjZGVmaW5lIEdTVF9JU19HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfR0xfQUxMT0NBVE9SKSkKKyNkZWZpbmUgR1NUX0lTX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEdTVF9UWVBFX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUikpCisjZGVmaW5lIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfR0VUX0NMQVNTKG9iaikgICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IsIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzKSkKKyNkZWZpbmUgR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUihvYmopICAgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IsIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcikpCisjZGVmaW5lIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IsIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzKSkKKyNkZWZpbmUgR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9DQVNUKG9iaikgICAgICAgICAgICAoKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqKShvYmopKQorCisjZGVmaW5lIEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUKG1lbSkgKChHc3RHTEJhc2VNZW1vcnkgKiltZW0pCisKK0dRdWFyayBnc3RfZ2xfYmFzZV9tZW1vcnlfZXJyb3JfcXVhcmsgKHZvaWQpOworI2RlZmluZSBHU1RfR0xfQkFTRV9NRU1PUllfRVJST1IgKGdzdF9nbF9iYXNlX21lbW9yeV9lcnJvcl9xdWFyayAoKSkKKworLyoqCisgKiBHc3RHTEJhc2VNZW1vcnlFcnJvcjoKKyAqIEBHU1RfR0xfQkFTRV9NRU1PUllfRVJST1JfRkFJTEVEOiBnZW5lcmljIGZhbGl1cmUKKyAqIEBHU1RfR0xfQkFTRV9NRU1PUllfRVJST1JfT0xEX0xJQlM6IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyB0b28gb2xkIGFuZCBkb2Vzbid0CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnQgZW5vdWdoIGZlYXR1cmVzCisgKiBAR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX1JFU09VUkNFX1VOQVZBSUxBQkxFOiBhIHJlc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZAorICovCit0eXBlZGVmIGVudW0KK3sKKyAgR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX0ZBSUxFRCwKKyAgR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX09MRF9MSUJTLAorICBHU1RfR0xfQkFTRV9NRU1PUllfRVJST1JfUkVTT1VSQ0VfVU5BVkFJTEFCTEUsCit9IEdzdEdMQmFzZU1lbW9yeUVycm9yOworCisvKioKKyAqIEdzdEdMQmFzZU1lbW9yeVRyYW5zZmVyOgorICogQEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEOiB0aGUgdGV4dHVyZSBuZWVkcyBkb3dubG9hZGluZworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgZGF0YSBwb2ludGVyCisgKiBAR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEOiAgIHRoZSBkYXRhIHBvaW50ZXIgbmVlZHMgdXBsb2FkaW5nCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSB0ZXh0dXJlCisgKi8KK3R5cGVkZWYgZW51bQoreworICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCAgID0gKEdTVF9NRU1PUllfRkxBR19MQVNUIDw8IDApLAorICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQgICAgID0gKEdTVF9NRU1PUllfRkxBR19MQVNUIDw8IDEpCit9IEdzdEdMQmFzZU1lbW9yeVRyYW5zZmVyOworCisvKioKKyAqIEdTVF9NQVBfR0w6CisgKgorICogRmxhZyBpbmRpY2F0aW5nIHRoYXQgd2Ugc2hvdWxkIG1hcCB0aGUgR0wgb2JqZWN0IGluc3RlYWQgb2YgdG8gc3lzdGVtIG1lbW9yeS4KKyAqCisgKiBDb21iaW5pbmcgI0dTVF9NQVBfR0wgd2l0aCAjR1NUX01BUF9XUklURSBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRob3VnaAorICogeW91IGFyZSB3cml0aW5nIHRvIE9wZW5HTC4gQ29udmVyc2VseSwgY29tYmluaW5nICNHU1RfTUFQX0dMIHdpdGgKKyAqICNHU1RfTUFQX1JFQUQgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aG91Z2ggeW91IGFyZSByZWFkaW5nIGZyb20gT3BlbkdMLgorICovCisjZGVmaW5lIEdTVF9NQVBfR0wgKEdTVF9NQVBfRkxBR19MQVNUIDw8IDEpCisKKy8qKgorICogR3N0R0xCYXNlTWVtb3J5OgorICogQG1lbTogdGhlIHBhcmVudCBvYmplY3QKKyAqIEBjb250ZXh0OiB0aGUgI0dzdEdMQ29udGV4dCB0byB1c2UgZm9yIEdMIG9wZXJhdGlvbnMKKyAqCisgKiBSZXByZXNlbnRzIGluZm9ybWF0aW9uIGFib3V0IGEgR0wgbWVtb3J5IG9iamVjdAorICovCitzdHJ1Y3QgX0dzdEdMQmFzZU1lbW9yeQoreworICBHc3RNZW1vcnkgICAgICAgICAgICAgbWVtOworCisgIEdzdEdMQ29udGV4dCAgICAgICAgICpjb250ZXh0OworCisgIC8qIDxwcm90ZWN0ZWQ+ICovCisgIEdNdXRleCAgICAgICAgICAgICAgICBsb2NrOworCisgIEdzdE1hcEZsYWdzICAgICAgICAgICBtYXBfZmxhZ3M7ICAgICAgIC8qIGN1bXVsYXRpdmUgbWFwIGZsYWdzICovCisgIGdpbnQgICAgICAgICAgICAgICAgICBtYXBfY291bnQ7CisgIGdpbnQgICAgICAgICAgICAgICAgICBnbF9tYXBfY291bnQ7CisKKyAgZ3BvaW50ZXIgICAgICAgICAgICAgIGRhdGE7CisKKyAgR3N0R0xRdWVyeSAgICAgICAgICAgKnF1ZXJ5OworCisgIC8qIDxwcml2YXRlPiAqLworICBnc2l6ZSAgICAgICAgICAgICAgICAgYWxsb2Nfc2l6ZTsgICAgIC8qIGJlY2F1c2UgbWF4c2l6ZSBpcyB1c2VkIGZvciBtYXBwaW5nICovCisgIGdwb2ludGVyICAgICAgICAgICAgICBhbGxvY19kYXRhOworCisgIEdEZXN0cm95Tm90aWZ5ICAgICAgICBub3RpZnk7CisgIGdwb2ludGVyICAgICAgICAgICAgICB1c2VyX2RhdGE7Cit9OworCit0eXBlZGVmIHN0cnVjdCBfR3N0R0xBbGxvY2F0aW9uUGFyYW1zIEdzdEdMQWxsb2NhdGlvblBhcmFtczsKKy8qKgorICogR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmM6CisgKiBAc3JjOiB0aGUgc291cmNlICNHc3RHTEFsbG9jYXRpb25QYXJhbXMgdG8gY29weSBmcm9tCisgKiBAZGVzdDogdGhlIHNvdXJjZSAjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIHRvIGNvcHkKKyAqCisgKiBDb3BpZXMgdGhlIHBhcmFtZXRlcnMgZnJvbSBAc3JjIGludG8gQGRlc3QuICBUaGUgc3ViY2xhc3MgbXVzdCBjb21wb3NlIGNvcHkKKyAqIGZ1bmN0aW9ucyBmcm9tIHRoZSBzdXBlcmNsYXNzLgorICovCit0eXBlZGVmIHZvaWQgICAgKCpHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYykgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIHNyYywgR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogZGVzdCk7CisvKioKKyAqIEdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jOgorICogQHBhcmFtczogYSAjR3N0R0xBbGxvY2F0aW9uUGFyYW1zCisgKgorICogRnJlZSBhbnkgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGRhdGEuICBUaGUgc3ViY2xhc3MgbXVzdCBjYWxsIHRoZSBzdXBlcmNsYXNzJworICogZnJlZS4KKyAqLwordHlwZWRlZiB2b2lkICAgICgqR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMpICAgIChncG9pbnRlciBwYXJhbXMpOworCisjZGVmaW5lIEdTVF9UWVBFX0dMX0FMTE9DQVRJT05fUEFSQU1TIChnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZ2V0X3R5cGUoKSkKK0dUeXBlIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19nZXRfdHlwZSAodm9pZCk7CisKKyNkZWZpbmUgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQUxMT0MgKDEgPDwgMCkKKyNkZWZpbmUgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9TWVNNRU0gKDEgPDwgMSkKKyNkZWZpbmUgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9HUFVfSEFORExFICgxIDw8IDIpCisjZGVmaW5lIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1VTRVIgKDEgPDwgMTYpCisKKy8qKgorICogR3N0R0xBbGxvY2F0aW9uUGFyYW1zOgorICogQHN0cnVjdF9zaXplOiB0aGUgc2l6ZSBvZiB0aGUgc3RydWN0IChpbmNsdWRpbmcgYW5kIHN1YmNsYXNzIGRhdGEpCisgKiBAY29weTogYSAjR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMKKyAqIEBmcmVlOiBhICNHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYworICogQGFsbG9jX2ZsYWdzOiBhbGxvY2F0aW9uIGZsYWdzCisgKiBAYWxsb2Nfc2l6ZTogdGhlIGFsbG9jYXRpb24gc2l6ZQorICogQGFsbG9jX3BhcmFtczogdGhlICNHc3RBbGxvY2F0aW9uUGFyYW1zCisgKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0CisgKiBAbm90aWZ5OiBhICNHRGVzdHJveU5vdGlmeQorICogQHVzZXJfZGF0YTogYXJndW1lbnQgdG8gY2FsbCBAbm90aWZ5IHdpdGgKKyAqIEB3cmFwcGVkX2RhdGE6IHRoZSB3cmFwcGVkIGRhdGEgcG9pbnRlcgorICogQGdsX2hhbmRsZTogdGhlIHdyYXBwZWQgT3BlbkdMIGhhbmRsZQorICovCisvKiBCZWNhdXNlIEdzdEFsbG9jYXRpb25QYXJhbXMgaXMgbm90IHN1YmNsYXNzYWJsZSwgc3RhcnQgb3VyIG93biBzdWJjbGFzcworICogY2hhaW4uICBGSVhNRTogMi4wIG1ha2UgR3N0QWxsb2NhdGlvblBhcmFtcyBzdWJjbGFzc2FibGUgKi8KK3N0cnVjdCBfR3N0R0xBbGxvY2F0aW9uUGFyYW1zCit7CisgIGdzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Rfc2l6ZTsKKyAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMgICAgIGNvcHk7CisgIEdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jICAgICBmcmVlOworCisgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY19mbGFnczsKKyAgZ3NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jX3NpemU7CisgIEdzdEFsbG9jYXRpb25QYXJhbXMgICAgICAgICAgICAgICphbGxvY19wYXJhbXM7CisgIEdzdEdMQ29udGV4dCAgICAgICAgICAgICAgICAgICAgICpjb250ZXh0OworICBHRGVzdHJveU5vdGlmeSAgICAgICAgICAgICAgICAgICAgbm90aWZ5OworICBncG9pbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhOworCisgIC8qIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfU1lTTUVNIG9ubHkgKi8KKyAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZWRfZGF0YTsKKyAgLyogR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9HUFVfSEFORExFIG9ubHkgKi8KKyAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX2hhbmRsZTsKK307CisKK2dib29sZWFuICAgICAgICAgICAgICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19pbml0ICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgc3RydWN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgYWxsb2NfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMgY29weSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYyBmcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgYWxsb2Nfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogYWxsb2NfcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHdyYXBwZWRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBnbF9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSk7CisKKy8qIGZyZWUgd2l0aCBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAqLworR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHkgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIHNyYyk7Cit2b2lkICAgICAgICAgICAgICAgICAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKTsKKworLyogc3ViY2xhc3MgdXNhZ2UgKi8KK3ZvaWQgICAgICAgICAgICAgICAgICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGEgIChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpOworLyogc3ViY2xhc3MgdXNhZ2UgKi8KK3ZvaWQgICAgICAgICAgICAgICAgICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGEgIChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKiBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogZGVzdCk7CisKKy8qKgorICogR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbjoKKyAqIEBhbGxvY2F0b3I6IGEgI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcgorICogQHBhcmFtczogdGhlICNHc3RHTEFsbG9jYXRpb25QYXJhbXMgdG8gYWxsb2NhdGUgdGhlIG1lbW9yeSB3aXRoCisgKgorICogTm90ZTogbm90IGNhbGxlZCB3aXRoIGEgR0wgY29udGV4dCBjdXJyZW50CisgKgorICogUmV0dXJuczogYSBuZXdseSBhbGxvY2F0ZWQgI0dzdEdMQmFzZU1lbW9yeSBmcm9tIEBhbGxvY2F0b3IgYW5kIEBwYXJhbXMKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3R5cGVkZWYgR3N0R0xCYXNlTWVtb3J5ICogICAoKkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb24pICAgICAgICAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICogYWxsb2NhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpOworCisvKioKKyAqIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uOgorICogQG1lbTogYSAjR3N0R0xCYXNlTWVtb3J5CisgKiBAZXJyb3I6IGEgI0dFcnJvciB0byB1c2Ugb24gZmFpbHVyZQorICoKKyAqIEFzIHRoaXMgdmlydHVhbCBtZXRob2QgaXMgY2FsbGVkIHdpdGggYW4gT3BlbkdMIGNvbnRleHQgY3VycmVudCwgdXNlIHRoaXMKKyAqIGZ1bmN0aW9uIHRvIGFsbG9jYXRlIGFuZCBPcGVuR0wgcmVzb3VyY2VzIG5lZWRlZCBmb3IgeW91ciBhcHBsaWNhdGlvbgorICoKKyAqIFJldHVybnM6IHdoZXRoZXIgdGhlIGNyZWF0aW9uIHN1Y2NlZWRlZAorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordHlwZWRlZiBnYm9vbGVhbiAgICAgICAgICAgICgqR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24pICAgICAgIChHc3RHTEJhc2VNZW1vcnkgKiBtZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnJvcik7CisKKy8qKgorICogR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb246CisgKiBAbWVtOiBhICNHc3RHTEJhc2VNZW1vcnkKKyAqIEBpbmZvOiBhICNHc3RNYXBJbmZvIHRvIG1hcCB3aXRoCisgKiBAbWF4c2l6ZTogdGhlIHNpemUgdG8gbWFwCisgKgorICogQWxzbyBzZWUgZ3N0X21lbW9yeV9tYXAoKTsKKyAqCisgKiBSZXR1cm5zOiB0aGUgbWFwcGVkIHBvaW50ZXIKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3R5cGVkZWYgZ3BvaW50ZXIgICAgICAgICAgICAoKkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uKSAgICAgICAgICAoR3N0R0xCYXNlTWVtb3J5ICogbWVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RNYXBJbmZvICogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgbWF4c2l6ZSk7CisvKioKKyAqIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb246CisgKiBAbWVtOiBhICNHc3RHTEJhc2VNZW1vcnkKKyAqIEBpbmZvOiBhICNHc3RNYXBJbmZvIHRvIG1hcCB3aXRoCisgKgorICogQWxzbyBzZWUgZ3N0X21lbW9yeV91bm1hcCgpOworICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgICgqR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbikgICAgICAgIChHc3RHTEJhc2VNZW1vcnkgKiBtZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdE1hcEluZm8gKiBpbmZvKTsKKworLyoqCisgKiBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb246CisgKiBAbWVtOiBhICNHc3RHTEJhc2VNZW1vcnkKKyAqIEBvZmZzZXQ6IHRoZSBvZmZzZXQgdG8gY29weSBmcm9tCisgKiBAc2l6ZTogdGhlIG51bWJlciBvZiBieXRlcyB0byBjb3B5CisgKgorICogQWxzbyBzZWUgZ3N0X21lbW9yeV9jb3B5KCk7CisgKgorICogUmV0dXJuczogdGhlIG5ld2x5IGNvcGllZCAjR3N0R0xNZW1vcnkgb3IgJU5VTEwKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3R5cGVkZWYgR3N0R0xCYXNlTWVtb3J5ICogICAoKkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbikgICAgICAgICAoR3N0R0xCYXNlTWVtb3J5ICogbWVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc3NpemUgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc3NpemUgc2l6ZSk7CisKKy8qKgorICogR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uOgorICogQG1lbTogYSAjR3N0R0xCYXNlTWVtb3J5CisgKgorICogRGVzdHJveSBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCB0aHJvdWdob3V0IHRoZSBsaWZldGltZSBvZiBAbWVtCisgKgorICogU2luY2U6IDEuOAorICovCit0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgKCpHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24pICAgICAgKEdzdEdMQmFzZU1lbW9yeSAqIG1lbSk7CisKKy8qKgorICogR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yCisgKgorICogT3BhcXVlICNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3Igc3RydWN0CisgKgorICogU2luY2U6IDEuOAorICovCitzdHJ1Y3QgX0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcgoreworICAvKjwgcHJpdmF0ZSA+Ki8KKyAgR3N0QWxsb2NhdG9yIHBhcmVudDsKKyAgR3N0TWVtb3J5Q29weUZ1bmN0aW9uIGZhbGxiYWNrX21lbV9jb3B5OworfTsKKworLyoqCisgKiBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzczoKKyAqIEBwYXJlbnRfY2xhc3M6IHRoZSBwYXJlbnQgY2xhc3MKKyAqIEBhbGxvYzogYSAjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbnMKKyAqIEBjcmVhdGU6IGEgI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uCisgKiBAbWFwOiBhICNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbgorICogQHVubWFwOiBhICNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uCisgKiBAY29weTogYSAjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uCisgKiBAZGVzdHJveTogYSAjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uCisgKgorICogU2luY2U6IDEuOAorICovCitzdHJ1Y3QgX0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzCit7CisgIEdzdEFsbG9jYXRvckNsYXNzIHBhcmVudF9jbGFzczsKKworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uICAgICAgICAgYWxsb2M7CisKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24gICAgICAgIGNyZWF0ZTsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24gICAgICAgICAgIG1hcDsKKyNpZiAwCisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckZsdXNoRnVuY3Rpb24gICAgICAgICBmbHVzaDsgICAgICAgIC8qIG1ha2UgQ1BVIHdyaXRlcyB2aXNpYmxlIHRvIHRoZSBHUFUgKi8KKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9ySW52YWxpZGF0ZUZ1bmN0aW9uICAgIGludmFsaWRhdGU7ICAgLyogbWFrZSBHUFUgd3JpdGVzIHZpc2libGUgdG8gdGhlIENQVSAqLworI2VuZGlmCisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24gICAgICAgICB1bm1hcDsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uICAgICAgICAgIGNvcHk7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbiAgICAgICBkZXN0cm95OworfTsKKworI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgorCisvKioKKyAqIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfTkFNRToKKyAqCisgKiBUaGUgbmFtZSBvZiB0aGUgR0wgYnVmZmVyIGFsbG9jYXRvcgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworI2RlZmluZSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX05BTUUgICAiR0xCYXNlTWVtb3J5IgorCit2b2lkICAgICAgICAgIGdzdF9nbF9iYXNlX21lbW9yeV9pbml0X29uY2UgKHZvaWQpOworZ2Jvb2xlYW4gICAgICBnc3RfaXNfZ2xfYmFzZV9tZW1vcnkgICAgICAgIChHc3RNZW1vcnkgKiBtZW0pOworCit2b2lkICAgICAgICAgIGdzdF9nbF9iYXNlX21lbW9yeV9pbml0ICAgICAgKEdzdEdMQmFzZU1lbW9yeSAqIG1lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RNZW1vcnkgKiBwYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KTsKKworZ2Jvb2xlYW4gICAgICBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NfZGF0YSAoR3N0R0xCYXNlTWVtb3J5ICogZ2xfbWVtKTsKK2dib29sZWFuICAgICAgZ3N0X2dsX2Jhc2VfbWVtb3J5X21lbWNweSAgICAgKEdzdEdMQmFzZU1lbW9yeSAqIHNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQmFzZU1lbW9yeSAqIGRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc3NpemUgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NzaXplIHNpemUpOworCitHc3RHTEJhc2VNZW1vcnkgKiAgIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAgICAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICogYWxsb2NhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfR1NUX0dMX0JVRkZFUl9IXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWJkZDZkCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmMKQEAgLTAsMCArMSw0NzkgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJnc3RnbGJ1ZmZlci5oIgorI2luY2x1ZGUgImdzdGdsdXRpbHMuaCIKKworLyoqCisgKiBTRUNUSU9OOmdzdGdsYnVmZmVyCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgYnVmZmVycworICogQHNlZV9hbHNvOiAjR3N0TWVtb3J5LCAjR3N0QWxsb2NhdG9yCisgKgorICogR3N0R0xCdWZmZXIgaXMgYSAjR3N0TWVtb3J5IHN1YmNsYXNzIHByb3ZpZGluZyBzdXBwb3J0IGZvciB0aGUgbWFwcGluZyBvZgorICogR0wgYnVmZmVycy4gIAorICoKKyAqIERhdGEgaXMgdXBsb2FkZWQgb3IgZG93bmxvYWRlZCBmcm9tIHRoZSBHUFUgYXMgaXMgbmVjZXNzYXJ5LgorICovCisKKy8qIEltcGxlbWVudGF0aW9uIG5vdGVzOgorICoKKyAqIEN1cnJlbnRseSBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCBHTEVTMiBkaWZmZXJlbmNlcyAobm8gbWFwYnVmZmVyKQorICovCisKKyNkZWZpbmUgVVNJTkdfT1BFTkdMKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTCwgMSwgMCkpCisjZGVmaW5lIFVTSU5HX09QRU5HTDMoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMMywgMywgMSkpCisjZGVmaW5lIFVTSU5HX0dMRVMoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUywgMSwgMCkpCisjZGVmaW5lIFVTSU5HX0dMRVMyKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAyLCAwKSkKKyNkZWZpbmUgVVNJTkdfR0xFUzMoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDMsIDApKQorCisvKiBjb21wYXRpYmlsaXR5IGRlZmluaXRpb25zLi4uICovCisjaWZuZGVmIEdMX01BUF9SRUFEX0JJVAorI2RlZmluZSBHTF9NQVBfUkVBRF9CSVQgMHgwMDAxCisjZW5kaWYKKyNpZm5kZWYgR0xfTUFQX1dSSVRFX0JJVAorI2RlZmluZSBHTF9NQVBfV1JJVEVfQklUIDB4MDAwMgorI2VuZGlmCisjaWZuZGVmIEdMX0NPUFlfUkVBRF9CVUZGRVIKKyNkZWZpbmUgR0xfQ09QWV9SRUFEX0JVRkZFUiAweDhGMzYKKyNlbmRpZgorI2lmbmRlZiBHTF9DT1BZX1dSSVRFX0JVRkZFUgorI2RlZmluZSBHTF9DT1BZX1dSSVRFX0JVRkZFUiAweDhGMzcKKyNlbmRpZgorCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0dMX0JVRkZFUik7CisjZGVmaW5lIEdTVF9DQVRfREVGVUFMVCBHU1RfQ0FUX0dMX0JVRkZFUgorCitzdGF0aWMgR3N0QWxsb2NhdG9yICpfZ2xfYnVmZmVyX2FsbG9jYXRvcjsKKworc3RhdGljIGdib29sZWFuCitfZ2xfYnVmZmVyX2NyZWF0ZSAoR3N0R0xCdWZmZXIgKiBnbF9tZW0sIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBnbF9tZW0tPm1lbS5jb250ZXh0LT5nbF92dGFibGU7CisKKyAgZ2wtPkdlbkJ1ZmZlcnMgKDEsICZnbF9tZW0tPmlkKTsKKyAgZ2wtPkJpbmRCdWZmZXIgKGdsX21lbS0+dGFyZ2V0LCBnbF9tZW0tPmlkKTsKKyAgZ2wtPkJ1ZmZlckRhdGEgKGdsX21lbS0+dGFyZ2V0LCBnbF9tZW0tPm1lbS5tZW0ubWF4c2l6ZSwgTlVMTCwKKyAgICAgIGdsX21lbS0+dXNhZ2VfaGludHMpOworICBnbC0+QmluZEJ1ZmZlciAoZ2xfbWVtLT50YXJnZXQsIDApOworCisgIHJldHVybiBUUlVFOworfQorCitzdHJ1Y3QgY3JlYXRlX2RhdGEKK3sKKyAgR3N0R0xCdWZmZXIgKm1lbTsKKyAgZ2Jvb2xlYW4gcmVzdWx0OworfTsKKworc3RhdGljIHZvaWQKK19nbF9idWZmZXJfaW5pdCAoR3N0R0xCdWZmZXIgKiBtZW0sIEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICBHc3RNZW1vcnkgKiBwYXJlbnQsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGd1aW50IGdsX3RhcmdldCwgZ3VpbnQgZ2xfdXNhZ2UsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywgZ3NpemUgc2l6ZSkKK3sKKyAgbWVtLT50YXJnZXQgPSBnbF90YXJnZXQ7CisgIG1lbS0+dXNhZ2VfaGludHMgPSBnbF91c2FnZTsKKworICBnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdCAoKEdzdEdMQmFzZU1lbW9yeSAqKSBtZW0sIGFsbG9jYXRvciwgcGFyZW50LCBjb250ZXh0LAorICAgICAgcGFyYW1zLCBzaXplLCBOVUxMLCBOVUxMKTsKKworICBHU1RfQ0FUX0RFQlVHIChHU1RfQ0FUX0dMX0JVRkZFUiwgIm5ldyBHTCBidWZmZXIgbWVtb3J5OiVwIHNpemU6JSIKKyAgICAgIEdfR1NJWkVfRk9STUFULCBtZW0sIG1lbS0+bWVtLm1lbS5tYXhzaXplKTsKK30KKworc3RhdGljIEdzdEdMQnVmZmVyICoKK19nbF9idWZmZXJfbmV3IChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIEdzdE1lbW9yeSAqIHBhcmVudCwKKyAgICBHc3RHTENvbnRleHQgKiBjb250ZXh0LCBndWludCBnbF90YXJnZXQsIGd1aW50IGdsX3VzYWdlLAorICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsIGdzaXplIHNpemUpCit7CisgIEdzdEdMQnVmZmVyICpyZXQgPSBnX25ldzAgKEdzdEdMQnVmZmVyLCAxKTsKKyAgX2dsX2J1ZmZlcl9pbml0IChyZXQsIGFsbG9jYXRvciwgcGFyZW50LCBjb250ZXh0LCBnbF90YXJnZXQsIGdsX3VzYWdlLAorICAgICAgcGFyYW1zLCBzaXplKTsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ3BvaW50ZXIKK2dzdF9nbF9idWZmZXJfY3B1X2FjY2VzcyAoR3N0R0xCdWZmZXIgKiBtZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBzaXplKQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IG1lbS0+bWVtLmNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgZ3BvaW50ZXIgZGF0YSwgcmV0OworCisgIGlmICghZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jX2RhdGEgKEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUIChtZW0pKSkKKyAgICByZXR1cm4gTlVMTDsKKworICByZXQgPSBtZW0tPm1lbS5kYXRhOworCisgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0dMX0JVRkZFUiwgIm1hcHBpbmcgaWQgJWQgc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCwKKyAgICAgIG1lbS0+aWQsIHNpemUpOworCisgIC8qIFRoZSBleHRyYSBkYXRhIHBvaW50ZXIgaW5kaXJlY3Rpb24vbWVtY3B5IGlzIG5lZWRlZCBmb3IgY29oZXJlbnQgYWNyb3NzCisgICAqIGNvbmN1cnJlbnQgbWFwKCkncyBpbiBib3RoIEdMIGFuZCBDUFUgKi8KKyAgaWYgKEdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbSwgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpCisgICAgICAmJiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMKSA9PSAwICYmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfUkVBRCkgIT0gMCkgeworICAgIGdsLT5CaW5kQnVmZmVyIChtZW0tPnRhcmdldCwgbWVtLT5pZCk7CisKKyAgICBpZiAoZ2wtPk1hcEJ1ZmZlclJhbmdlKSB7CisgICAgICAvKiBGSVhNRTogb3B0aW9uYWxseSByZW1vdmUgdGhpcyB3aXRoIGEgZmxhZyBhbmQgcmV0dXJuIHRoZQorICAgICAgICogZ2xNYXBCdWZmZXJSYW5nZSBwb2ludGVyIChyZXF1aXJlcworICAgICAgICogR0xfQVJCX2J1ZmZlcl9zdG9yYWdlL0dMNC9HTF9DT0hFUkVOVF9CSVQpICovCisgICAgICBndWludCBnbF9tYXBfZmxhZ3MgPSBHTF9NQVBfUkVBRF9CSVQ7CisKKyAgICAgIGRhdGEgPSBnbC0+TWFwQnVmZmVyUmFuZ2UgKG1lbS0+dGFyZ2V0LCAwLCBzaXplLCBnbF9tYXBfZmxhZ3MpOworCisgICAgICBpZiAoZGF0YSkKKyAgICAgICAgbWVtY3B5IChtZW0tPm1lbS5kYXRhLCBkYXRhLCBzaXplKTsKKworICAgICAgZ2wtPlVubWFwQnVmZmVyIChtZW0tPnRhcmdldCk7CisgICAgICByZXQgPSBtZW0tPm1lbS5kYXRhOworICAgIH0gZWxzZSBpZiAoZ2wtPkdldEJ1ZmZlclN1YkRhdGEpIHsKKyAgICAgIGdsLT5HZXRCdWZmZXJTdWJEYXRhIChtZW0tPnRhcmdldCwgMCwgc2l6ZSwgbWVtLT5tZW0uZGF0YSk7CisgICAgICByZXQgPSBtZW0tPm1lbS5kYXRhOworICAgIH0gZWxzZSB7CisgICAgICByZXQgPSBOVUxMOworICAgIH0KKyAgICBnbC0+QmluZEJ1ZmZlciAobWVtLT50YXJnZXQsIDApOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9idWZmZXJfdXBsb2FkX2NwdV93cml0ZSAoR3N0R0xCdWZmZXIgKiBtZW0sIEdzdE1hcEluZm8gKiBpbmZvLAorICAgIGdzaXplIHNpemUpCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gbWVtLT5tZW0uY29udGV4dC0+Z2xfdnRhYmxlOworICBncG9pbnRlciBkYXRhOworCisgIGlmICghbWVtLT5tZW0uZGF0YSkKKyAgICAvKiBubyBkYXRhIHBvaW50ZXIgaGFzIGJlZW4gd3JpdHRlbiAqLworICAgIHJldHVybjsKKworICAvKiBUaGUgZXh0cmEgZGF0YSBwb2ludGVyIGluZGlyZWN0aW9uL21lbWNweSBpcyBuZWVkZWQgZm9yIGNvaGVyZW50IGFjcm9zcworICAgKiBjb25jdXJyZW50IG1hcCgpJ3MgaW4gYm90aCBHTCBhbmQgQ1BVICovCisgIC8qIEZJWE1FOiB1cGxvYWRpbmcgcG90ZW50aWFsbHkgaGFsZi13cml0dGVuIGRhdGEgZm9yIGxpYmF2IHB1c2hpbmcgUkVBRFdSSVRFCisgICAqIG1hcHBlZCBidWZmZXJzICovCisgIGlmIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0sIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCkKKyAgICAgIHx8IChtZW0tPm1lbS5tYXBfZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKSAhPSAwKSB7CisgICAgZ2wtPkJpbmRCdWZmZXIgKG1lbS0+dGFyZ2V0LCBtZW0tPmlkKTsKKworICAgIGlmIChnbC0+TWFwQnVmZmVyUmFuZ2UpIHsKKyAgICAgIC8qIEZJWE1FOiBvcHRpb25hbGx5IHJlbW92ZSB0aGlzIHdpdGggYSBmbGFnIGFuZCByZXR1cm4gdGhlCisgICAgICAgKiBnbE1hcEJ1ZmZlclJhbmdlIHBvaW50ZXIgKHJlcXVpcmVzCisgICAgICAgKiBHTF9BUkJfYnVmZmVyX3N0b3JhZ2UvR0w0L0dMX0NPSEVSRU5UX0JJVCkgKi8KKyAgICAgIGd1aW50IGdsX21hcF9mbGFncyA9IEdMX01BUF9XUklURV9CSVQ7CisKKyAgICAgIGRhdGEgPSBnbC0+TWFwQnVmZmVyUmFuZ2UgKG1lbS0+dGFyZ2V0LCAwLCBzaXplLCBnbF9tYXBfZmxhZ3MpOworCisgICAgICBpZiAoZGF0YSkKKyAgICAgICAgbWVtY3B5IChkYXRhLCBtZW0tPm1lbS5kYXRhLCBzaXplKTsKKworICAgICAgZ2wtPlVubWFwQnVmZmVyIChtZW0tPnRhcmdldCk7CisgICAgfSBlbHNlIGlmIChnbC0+QnVmZmVyU3ViRGF0YSkgeworICAgICAgZ2wtPkJ1ZmZlclN1YkRhdGEgKG1lbS0+dGFyZ2V0LCAwLCBzaXplLCBtZW0tPm1lbS5kYXRhKTsKKyAgICB9CisgICAgZ2wtPkJpbmRCdWZmZXIgKG1lbS0+dGFyZ2V0LCAwKTsKKyAgfQorfQorCitzdGF0aWMgZ3BvaW50ZXIKK19nbF9idWZmZXJfbWFwIChHc3RHTEJ1ZmZlciAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gbWVtLT5tZW0uY29udGV4dC0+Z2xfdnRhYmxlOworCisgIGlmICgoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMKSAhPSAwKSB7CisgICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9SRUFEKSB7CisgICAgICBnc3RfZ2xfYnVmZmVyX3VwbG9hZF9jcHVfd3JpdGUgKG1lbSwgaW5mbywgc2l6ZSk7CisgICAgfQorICAgIGdsLT5CaW5kQnVmZmVyIChtZW0tPnRhcmdldCwgbWVtLT5pZCk7CisgICAgcmV0dXJuICZtZW0tPmlkOworICB9IGVsc2UgeworICAgIHJldHVybiBnc3RfZ2xfYnVmZmVyX2NwdV9hY2Nlc3MgKG1lbSwgaW5mbywgc2l6ZSk7CisgIH0KKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK19nbF9idWZmZXJfdW5tYXAgKEdzdEdMQnVmZmVyICogbWVtLCBHc3RNYXBJbmZvICogaW5mbykKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBtZW0tPm1lbS5jb250ZXh0LT5nbF92dGFibGU7CisKKyAgaWYgKChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpICE9IDApIHsKKyAgICBnbC0+QmluZEJ1ZmZlciAobWVtLT50YXJnZXQsIDApOworICB9CisgIC8qIFhYWDogb3B0aW1pc3RpY2FsbHkgdHJhbnNmZXIgZGF0YSAqLworfQorCisvKioKKyAqIGdzdF9nbF9idWZmZXJfY29weV9idWZmZXJfc3ViX2RhdGE6CisgKiBAc3JjOiB0aGUgc291cmNlICNHc3RHTEJ1ZmZlcgorICogQGRlc3Q6IHRoZSBkZXN0aW5hdGlvbiAjR3N0R0xCdWZmZXIKKyAqIEBvZmZzZXQ6IHRoZSBvZmZzZXQgdG8gY29weSBmcm9tIEBzcmMKKyAqIEBzaXplOiB0aGUgc2l6ZSB0byBjb3B5IGZyb20gQHNyYworICoKKyAqIENvcGllcyBAc3JjIGludG8gQGRlc3QgdXNpbmcgZ2xDb3B5QnVmZmVyU3ViRGF0YSgpLgorICoKKyAqIFJldHVybnM6IHdoZXRoZXIgdGhlIGNvcHkgb3BlcmF0aW9uIHN1Y2NlZWRlZAorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworc3RhdGljIGdib29sZWFuCitnc3RfZ2xfYnVmZmVyX2NvcHlfYnVmZmVyX3N1Yl9kYXRhIChHc3RHTEJ1ZmZlciAqIHNyYywKKyAgICBHc3RHTEJ1ZmZlciAqIGRlc3QsIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IHNyYy0+bWVtLmNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgR3N0TWFwSW5mbyBzaW5mbywgZGluZm87CisKKyAgaWYgKCFnbC0+Q29weUJ1ZmZlclN1YkRhdGEpCisgICAgLyogVGhpcyBpcyBHTChFUykgMy4wKyBvbmx5ICovCisgICAgcmV0dXJuIEZBTFNFOworCisgIGlmICghZ3N0X21lbW9yeV9tYXAgKChHc3RNZW1vcnkgKikgc3JjLCAmc2luZm8sIEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKSB7CisgICAgR1NUX0NBVF9XQVJOSU5HIChHU1RfQ0FUX0dMX0JVRkZFUiwKKyAgICAgICAgImZhaWxlZCB0byByZWFkIG1hcCBzb3VyY2UgbWVtb3J5ICVwIiwgc3JjKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoIWdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIGRlc3QsICZkaW5mbywgR1NUX01BUF9XUklURSB8IEdTVF9NQVBfR0wpKSB7CisgICAgR1NUX0NBVF9XQVJOSU5HIChHU1RfQ0FUX0dMX0JVRkZFUiwKKyAgICAgICAgImZhaWxlZCB0byB3cml0ZSBtYXAgZGVzdGluYXRpb24gbWVtb3J5ICVwIiwgZGVzdCk7CisgICAgZ3N0X21lbW9yeV91bm1hcCAoKEdzdE1lbW9yeSAqKSBzcmMsICZzaW5mbyk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgZ2wtPkJpbmRCdWZmZXIgKEdMX0NPUFlfUkVBRF9CVUZGRVIsIHNyYy0+aWQpOworICBnbC0+QmluZEJ1ZmZlciAoR0xfQ09QWV9XUklURV9CVUZGRVIsIGRlc3QtPmlkKTsKKyAgZ2wtPkNvcHlCdWZmZXJTdWJEYXRhIChHTF9DT1BZX1JFQURfQlVGRkVSLCBHTF9DT1BZX1dSSVRFX0JVRkZFUiwKKyAgICAgIG9mZnNldCwgMCwgc2l6ZSk7CisKKyAgZ3N0X21lbW9yeV91bm1hcCAoKEdzdE1lbW9yeSAqKSBzcmMsICZzaW5mbyk7CisgIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgZGVzdCwgJmRpbmZvKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEdzdEdMQnVmZmVyICoKK19nbF9idWZmZXJfY29weSAoR3N0R0xCdWZmZXIgKiBzcmMsIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQoreworICBHc3RBbGxvY2F0b3IgKmFsbG9jYXRvciA9IHNyYy0+bWVtLm1lbS5hbGxvY2F0b3I7CisgIEdzdEFsbG9jYXRpb25QYXJhbXMgcGFyYW1zID0geyAwLCBzcmMtPm1lbS5tZW0uYWxpZ24sIDAsIDAgfTsKKyAgR3N0R0xCdWZmZXIgKmRlc3QgPSBOVUxMOworCisgIGRlc3QgPSBfZ2xfYnVmZmVyX25ldyAoYWxsb2NhdG9yLCBOVUxMLCBzcmMtPm1lbS5jb250ZXh0LAorICAgICAgc3JjLT50YXJnZXQsIHNyYy0+dXNhZ2VfaGludHMsICZwYXJhbXMsIHNyYy0+bWVtLm1lbS5tYXhzaXplKTsKKworICAvKiBJZiBub3QgZG9pbmcgYSBmdWxsIGNvcHksIHRoZW4gY29weSB0byBzeXNtZW0sIHRoZSAyRCByZXByZXNlbnRpb24gb2YgdGhlCisgICAqIHRleHR1cmUgd291bGQgYmVjb21lIHdyb25nICovCisgIGlmIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChzcmMsIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCkpIHsKKyAgICBpZiAoIWdzdF9nbF9iYXNlX21lbW9yeV9tZW1jcHkgKEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUIChzcmMpLAorICAgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QgKGRlc3QpLCBvZmZzZXQsIHNpemUpKSB7CisgICAgICBHU1RfQ0FUX1dBUk5JTkcgKEdTVF9DQVRfR0xfQlVGRkVSLCAiQ291bGQgbm90IGNvcHkgR0wgQnVmZmVyIik7CisgICAgICBnc3RfbWVtb3J5X3VucmVmIChHU1RfTUVNT1JZX0NBU1QgKGRlc3QpKTsKKyAgICAgIGRlc3QgPSBOVUxMOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBpZiAoIWdzdF9nbF9idWZmZXJfY29weV9idWZmZXJfc3ViX2RhdGEgKHNyYywgZGVzdCwgb2Zmc2V0LCBzaXplKSkgeworICAgICAgaWYgKCFnc3RfZ2xfYmFzZV9tZW1vcnlfbWVtY3B5IChHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVCAoc3JjKSwKKyAgICAgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QgKGRlc3QpLCBvZmZzZXQsIHNpemUpKSB7CisgICAgICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9CVUZGRVIsICJDb3VsZCBub3QgY29weSBHTCBCdWZmZXIiKTsKKyAgICAgICAgZ3N0X21lbW9yeV91bnJlZiAoR1NUX01FTU9SWV9DQVNUIChkZXN0KSk7CisgICAgICAgIGRlc3QgPSBOVUxMOworICAgICAgfQorICAgIH0KKyAgfQorCisgIHJldHVybiBkZXN0OworfQorCitzdGF0aWMgR3N0TWVtb3J5ICoKK19nbF9idWZmZXJfYWxsb2MgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgZ3NpemUgc2l6ZSwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBnX2NyaXRpY2FsICgiTmVlZCB0byB1c2UgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jKCkgdG8gYWxsb2NhdGUgZnJvbSAiCisgICAgICAidGhpcyBhbGxvY2F0b3IiKTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK19nbF9idWZmZXJfZGVzdHJveSAoR3N0R0xCdWZmZXIgKiBtZW0pCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gbWVtLT5tZW0uY29udGV4dC0+Z2xfdnRhYmxlOworCisgIGdsLT5EZWxldGVCdWZmZXJzICgxLCAmbWVtLT5pZCk7Cit9CisKK3N0YXRpYyB2b2lkCitfZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGEgKEdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyAqIHNyYywKKyAgICBHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMgKiBkZXN0KQoreworICBtZW1zZXQgKGRlc3QsIDAsIHNpemVvZiAoKmRlc3QpKTsKKworICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhICgmc3JjLT5wYXJlbnQsICZkZXN0LT5wYXJlbnQpOworCisgIGRlc3QtPmdsX3RhcmdldCA9IHNyYy0+Z2xfdGFyZ2V0OworICBkZXN0LT5nbF91c2FnZSA9IHNyYy0+Z2xfdXNhZ2U7Cit9CisKK3N0YXRpYyB2b2lkCitfZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGEgKEdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyAqCisgICAgcGFyYW1zKQoreworICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhICgmcGFyYW1zLT5wYXJlbnQpOworfQorCisvKioKKyAqIGdzdF9nbF9idWZmZXJfYWxsb2NhdGlvbl9wYXJhbXNfbmV3OgorICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAorICogQGFsbG9jX3NpemU6IHRoZSBzaXplIGluIGJ5dGVzIHRvIGFsbG9jYXRlCisgKiBAYWxsb2NfcGFyYW1zOiAoYWxsb3ctbm9uZSk6IHRoZSAjR3N0QWxsb2NhdGlvblBhcmFtcyBmb3IgQHRleF9pZAorICogQGdsX3RhcmdldDogdGhlIE9wZW5HTCB0YXJnZXQgdG8gYWxsb2NhdGUKKyAqIEBnbF91c2FnZTogdGhlIE9wZW5HTCB1c2FnZSBoaW50IHRvIGFsbG9jYXRlIHdpdGgKKyAqCisgKiBSZXR1cm5zOiBhIG5ldyAjR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIGZvciBhbGxvY2F0aW5nIE9wZW5HTCBidWZmZXIKKyAqICAgICAgICAgIG9iamVjdHMKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK0dzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyAqCitnc3RfZ2xfYnVmZmVyX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgZ3NpemUgYWxsb2Nfc2l6ZSwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogYWxsb2NfcGFyYW1zLCBndWludCBnbF90YXJnZXQsIGd1aW50IGdsX3VzYWdlKQoreworICBHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGFsbG9jX3NpemUgPiAwLCBOVUxMKTsKKworICBwYXJhbXMgPSBnX25ldzAgKEdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcywgMSk7CisKKyAgaWYgKCFnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdCAoJnBhcmFtcy0+cGFyZW50LCBzaXplb2YgKCpwYXJhbXMpLAorICAgICAgICAgIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0JVRkZFUiB8CisgICAgICAgICAgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQUxMT0MsCisgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jKQorICAgICAgICAgIF9nc3RfZ2xfYnVmZmVyX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YSwKKyAgICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMpCisgICAgICAgICAgX2dzdF9nbF9idWZmZXJfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhLCBjb250ZXh0LCBhbGxvY19zaXplLAorICAgICAgICAgIGFsbG9jX3BhcmFtcywgTlVMTCwgMCwgTlVMTCwgTlVMTCkpIHsKKyAgICBnX2ZyZWUgKHBhcmFtcyk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICBwYXJhbXMtPmdsX3RhcmdldCA9IGdsX3RhcmdldDsKKyAgcGFyYW1zLT5nbF91c2FnZSA9IGdsX3VzYWdlOworCisgIHJldHVybiBwYXJhbXM7Cit9CisKK3N0YXRpYyBHc3RHTEJ1ZmZlciAqCitfZ2xfYnVmZmVyX2FsbG9jX21lbSAoR3N0R0xCdWZmZXJBbGxvY2F0b3IgKiBhbGxvY2F0b3IsCisgICAgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBndWludCBhbGxvY19mbGFncyA9IHBhcmFtcy0+cGFyZW50LmFsbG9jX2ZsYWdzOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChhbGxvY19mbGFncyAmCisgICAgICBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19CVUZGRVIsIE5VTEwpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoYWxsb2NfZmxhZ3MgJiBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19BTExPQywKKyAgICAgIE5VTEwpOworCisgIHJldHVybiBfZ2xfYnVmZmVyX25ldyAoR1NUX0FMTE9DQVRPUiAoYWxsb2NhdG9yKSwgTlVMTCwKKyAgICAgIHBhcmFtcy0+cGFyZW50LmNvbnRleHQsIHBhcmFtcy0+Z2xfdGFyZ2V0LCBwYXJhbXMtPmdsX3VzYWdlLAorICAgICAgcGFyYW1zLT5wYXJlbnQuYWxsb2NfcGFyYW1zLCBwYXJhbXMtPnBhcmVudC5hbGxvY19zaXplKTsKK30KKworR19ERUZJTkVfVFlQRSAoR3N0R0xCdWZmZXJBbGxvY2F0b3IsIGdzdF9nbF9idWZmZXJfYWxsb2NhdG9yLAorICAgIEdTVF9UWVBFX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUik7CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfYnVmZmVyX2FsbG9jYXRvcl9jbGFzc19pbml0IChHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzICoga2xhc3MpCit7CisgIEdzdEFsbG9jYXRvckNsYXNzICphbGxvY2F0b3JfY2xhc3MgPSAoR3N0QWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICpnbF9iYXNlOworCisgIGdsX2Jhc2UgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7CisKKyAgZ2xfYmFzZS0+YWxsb2MgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbikgX2dsX2J1ZmZlcl9hbGxvY19tZW07CisgIGdsX2Jhc2UtPmNyZWF0ZSA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbikgX2dsX2J1ZmZlcl9jcmVhdGU7CisgIGdsX2Jhc2UtPm1hcCA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbikgX2dsX2J1ZmZlcl9tYXA7CisgIGdsX2Jhc2UtPnVubWFwID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24pIF9nbF9idWZmZXJfdW5tYXA7CisgIGdsX2Jhc2UtPmNvcHkgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uKSBfZ2xfYnVmZmVyX2NvcHk7CisgIGdsX2Jhc2UtPmRlc3Ryb3kgPQorICAgICAgKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbikgX2dsX2J1ZmZlcl9kZXN0cm95OworCisgIGFsbG9jYXRvcl9jbGFzcy0+YWxsb2MgPSBfZ2xfYnVmZmVyX2FsbG9jOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0b3JfaW5pdCAoR3N0R0xCdWZmZXJBbGxvY2F0b3IgKiBhbGxvY2F0b3IpCit7CisgIEdzdEFsbG9jYXRvciAqYWxsb2MgPSBHU1RfQUxMT0NBVE9SX0NBU1QgKGFsbG9jYXRvcik7CisKKyAgYWxsb2MtPm1lbV90eXBlID0gR1NUX0dMX0JVRkZFUl9BTExPQ0FUT1JfTkFNRTsKKworICBHU1RfT0JKRUNUX0ZMQUdfU0VUIChhbGxvY2F0b3IsIEdTVF9BTExPQ0FUT1JfRkxBR19DVVNUT01fQUxMT0MpOworfQorCisvKioKKyAqIGdzdF9nbF9idWZmZXJfaW5pdF9vbmNlOgorICoKKyAqIEluaXRpYWxpemVzIHRoZSBHTCBCdWZmZXIgYWxsb2NhdG9yLiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgorICogbXVsdGlwbGUgdGltZXMuICBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgI0dzdEdMQnVmZmVyIG9wZXJhdGlvbi4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9idWZmZXJfaW5pdF9vbmNlICh2b2lkKQoreworICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2luaXQgPSAwOworCisgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJl9pbml0KSkgeworICAgIGdzdF9nbF9iYXNlX21lbW9yeV9pbml0X29uY2UgKCk7CisKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9HTF9CVUZGRVIsICJnbGJ1ZmZlciIsIDAsICJPcGVuR0wgQnVmZmVyIik7CisKKyAgICBfZ2xfYnVmZmVyX2FsbG9jYXRvciA9CisgICAgICAgIGdfb2JqZWN0X25ldyAoZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0b3JfZ2V0X3R5cGUgKCksIE5VTEwpOworCisgICAgZ3N0X2FsbG9jYXRvcl9yZWdpc3RlciAoR1NUX0dMX0JVRkZFUl9BTExPQ0FUT1JfTkFNRSwKKyAgICAgICAgZ3N0X29iamVjdF9yZWYgKF9nbF9idWZmZXJfYWxsb2NhdG9yKSk7CisgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZfaW5pdCwgMSk7CisgIH0KK30KKworLyoqCisgKiBnc3RfaXNfZ2xfYnVmZmVyOgorICogQG1lbTphICNHc3RNZW1vcnkKKyAqIAorICogUmV0dXJuczogd2hldGhlciB0aGUgbWVtb3J5IGF0IEBtZW0gaXMgYSAjR3N0R0xCdWZmZXIKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK2dib29sZWFuCitnc3RfaXNfZ2xfYnVmZmVyIChHc3RNZW1vcnkgKiBtZW0pCit7CisgIHJldHVybiBtZW0gIT0gTlVMTCAmJiBtZW0tPmFsbG9jYXRvciAhPSBOVUxMICYmCisgICAgICBnX3R5cGVfaXNfYSAoR19PQkpFQ1RfVFlQRSAobWVtLT5hbGxvY2F0b3IpLAorICAgICAgR1NUX1RZUEVfR0xfQlVGRkVSX0FMTE9DQVRPUik7Cit9CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNTE5ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuaApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9HU1RfR0xfQlVGRkVSX0hfCisjZGVmaW5lIF9HU1RfR0xfQlVGRkVSX0hfCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2dzdGFsbG9jYXRvci5oPgorI2luY2x1ZGUgPGdzdC9nc3RtZW1vcnkuaD4KKworI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX0dMX0JVRkZFUl9BTExPQ0FUT1IgKGdzdF9nbF9idWZmZXJfYWxsb2NhdG9yX2dldF90eXBlKCkpCitHVHlwZSBnc3RfZ2xfYnVmZmVyX2FsbG9jYXRvcl9nZXRfdHlwZSh2b2lkKTsKKworI2RlZmluZSBHU1RfSVNfR0xfQlVGRkVSX0FMTE9DQVRPUihvYmopICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9HTF9BTExPQ0FUT1IpKQorI2RlZmluZSBHU1RfSVNfR0xfQlVGRkVSX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEdTVF9UWVBFX0dMX0JVRkZFUl9BTExPQ0FUT1IpKQorI2RlZmluZSBHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9HRVRfQ0xBU1Mob2JqKSAgICAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEdTVF9UWVBFX0dMX0JVRkZFUl9BTExPQ0FUT1IsIEdzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3MpKQorI2RlZmluZSBHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUihvYmopICAgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9HTF9CVUZGRVJfQUxMT0NBVE9SLCBHc3RHTEJ1ZmZlckFsbG9jYXRvcikpCisjZGVmaW5lIEdTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfR0xfQlVGRkVSX0FMTE9DQVRPUiwgR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzcykpCisjZGVmaW5lIEdTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX0NBU1Qob2JqKSAgICAgICAgICAgICgoR3N0R0xCdWZmZXJBbGxvY2F0b3IgKikob2JqKSkKKworLyoqCisgKiBHc3RHTEJ1ZmZlcjoKKyAqIEBtZW06IHRoZSBwYXJlbnQgb2JqZWN0CisgKiBAY29udGV4dDogdGhlICNHc3RHTENvbnRleHQgdG8gdXNlIGZvciBHTCBvcGVyYXRpb25zCisgKiBAaWQ6IHRoZSBidWZmZXIgaWQgZm9yIHRoaXMgbWVtb3J5CisgKiBAdGFyZ2V0OiB0aGUgT3BlbkdMIHRhcmdldCBvZiB0aGlzIHRleHR1cmUgZm9yIGJpbmRpbmcgcHVycG9zZXMKKyAqIEB1c2FnZV9oaW50czogdGhlIE9wZW5HTCB1c2FnZSBoaW50cyB0aGlzIGJ1ZmZlciB3YXMgY3JlYXRlZCB3aXRoCisgKgorICogUmVwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBhIEdMIGJ1ZmZlcgorICovCitzdHJ1Y3QgX0dzdEdMQnVmZmVyCit7CisgIEdzdEdMQmFzZU1lbW9yeSAgICAgICBtZW07CisKKyAgZ3VpbnQgICAgICAgICAgICAgICAgIGlkOworICBndWludCAgICAgICAgICAgICAgICAgdGFyZ2V0OyAgICAgICAgIC8qIFhYWDogcHV0IHRoaXMgaW4gdGhlIGFsbG9jYXRvcj8gKi8KKyAgZ3VpbnQgICAgICAgICAgICAgICAgIHVzYWdlX2hpbnRzOyAgICAgLyogWFhYOiBwdXQgdGhpcyBpbiB0aGUgYWxsb2NhdG9yPyAqLworfTsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyBHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXM7CisKKyNkZWZpbmUgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQlVGRkVSICgxIDw8IDQpCisKKy8qKgorICogR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zOgorICogQHBhcmVudDogcGFyZW50IG9iamVjdAorICogQGdsX3RhcmdldDogdGhlIE9wZW5HTCB0YXJnZXQgdG8gYmluZCB0aGUgYnVmZmVyIHRvCisgKiBAZ2xfdXNhZ2U6IHRoZSBPcGVuR0wgdXNhZ2UgaGludCB0byBjcmVhdGUgdGhlIGJ1ZmZlciB3aXRoCisgKi8KK3N0cnVjdCBfR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zCit7CisgIEdzdEdMQWxsb2NhdGlvblBhcmFtcyAgICAgcGFyZW50OworCisgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgZ2xfdGFyZ2V0OworICBndWludCAgICAgICAgICAgICAgICAgICAgIGdsX3VzYWdlOworfTsKKworR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zICogICBnc3RfZ2xfYnVmZmVyX2FsbG9jYXRpb25fcGFyYW1zX25ldyAgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgYWxsb2Nfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogYWxsb2NfcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGdsX3RhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBnbF91c2FnZSk7CisKKy8qKgorICogR3N0R0xCdWZmZXJBbGxvY2F0b3IKKyAqCisgKiBPcGFxdWUgI0dzdEdMQWxsb2NhdG9yIHN0cnVjdAorICovCitzdHJ1Y3QgX0dzdEdMQnVmZmVyQWxsb2NhdG9yCit7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciBwYXJlbnQ7Cit9OworCisvKioKKyAqIEdzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3M6CisgKgorICogVGhlICNHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzIG9ubHkgY29udGFpbnMgcHJpdmF0ZSBkYXRhCisgKi8KK3N0cnVjdCBfR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzcworeworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCisjZGVmaW5lIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX0JVRkZFUiAibWVtb3J5OkdMQnVmZmVyIgorCisvKioKKyAqIEdTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX05BTUU6CisgKgorICogVGhlIG5hbWUgb2YgdGhlIEdMIGJ1ZmZlciBhbGxvY2F0b3IKKyAqLworI2RlZmluZSBHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9OQU1FICAgIkdMQnVmZmVyIgorCit2b2lkICAgICAgICAgIGdzdF9nbF9idWZmZXJfaW5pdF9vbmNlICh2b2lkKTsKK2dib29sZWFuICAgICAgZ3N0X2lzX2dsX2J1ZmZlciAgICAgICAgKEdzdE1lbW9yeSAqIG1lbSk7CisKK0dzdEdMQnVmZmVyICogZ3N0X2dsX2J1ZmZlcl9hbGxvYyAgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBnbF90YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBnbF91c2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSBtYXhzaXplKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9HU1RfR0xfQlVGRkVSX0hfICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmMKaW5kZXggNjlhYzJkOC4uOTA1MzZiMCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlcnBvb2wuYwpAQCAtNDcsMTMgKzQ3LDkgQEAKIHN0cnVjdCBfR3N0R0xCdWZmZXJQb29sUHJpdmF0ZQogewogICBHc3RBbGxvY2F0b3IgKmFsbG9jYXRvcjsKLSAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXM7CisgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpnbF9wYXJhbXM7CiAgIEdzdENhcHMgKmNhcHM7Ci0gIGdpbnQgaW1fZm9ybWF0OwotICBHc3RWaWRlb0luZm8gaW5mbzsKLSAgR3N0VmlkZW9BbGlnbm1lbnQgdmFsaWduOwogICBnYm9vbGVhbiBhZGRfdmlkZW9tZXRhOwotICBnYm9vbGVhbiBhZGRfdXBsb2FkbWV0YTsKICAgZ2Jvb2xlYW4gYWRkX2dsc3luY21ldGE7CiAgIGdib29sZWFuIHdhbnRfZWdsaW1hZ2U7CiAgIEdzdEJ1ZmZlciAqbGFzdF9idWZmZXI7CkBAIC03Niw5ICs3MiwxMCBAQAogZ3N0X2dsX2J1ZmZlcl9wb29sX2dldF9vcHRpb25zIChHc3RCdWZmZXJQb29sICogcG9vbCkKIHsKICAgc3RhdGljIGNvbnN0IGdjaGFyICpvcHRpb25zW10gPSB7IEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fVklERU9fTUVUQSwKLSAgICBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX1ZJREVPX0dMX1RFWFRVUkVfVVBMT0FEX01FVEEsCiAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9TWU5DX01FVEEsCiAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9WSURFT19BTElHTk1FTlQsCisgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF8yRCwKKyAgICBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSwKICAgICBOVUxMCiAgIH07CiAKQEAgLTk2LDcgKzkzLDggQEAKICAgZ3VpbnQgbWF4X2FsaWduLCBuOwogICBHc3RBbGxvY2F0b3IgKmFsbG9jYXRvciA9IE5VTEw7CiAgIEdzdEFsbG9jYXRpb25QYXJhbXMgYWxsb2NfcGFyYW1zOwotICBnYm9vbGVhbiByZXNldCA9IFRSVUU7CisgIEdzdEdMVGV4dHVyZVRhcmdldCB0ZXhfdGFyZ2V0OworICBnYm9vbGVhbiByZXQgPSBUUlVFOwogICBnaW50IHA7CiAKICAgaWYgKCFnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF9wYXJhbXMgKGNvbmZpZywgJmNhcHMsIE5VTEwsICZtaW5fYnVmZmVycywKQEAgLTExNiw2MyArMTE0LDYxIEBACiAgIGlmICghZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfYWxsb2NhdG9yIChjb25maWcsICZhbGxvY2F0b3IsICZhbGxvY19wYXJhbXMpKQogICAgIGdvdG8gd3JvbmdfY29uZmlnOwogCisgIGdzdF9jYXBzX3JlcGxhY2UgKCZwcml2LT5jYXBzLCBjYXBzKTsKKwogICBpZiAocHJpdi0+YWxsb2NhdG9yKQogICAgIGdzdF9vYmplY3RfdW5yZWYgKHByaXYtPmFsbG9jYXRvcik7CiAKLSAgaWYgKCFhbGxvY2F0b3IpIHsKLSAgICBnc3RfZ2xfbWVtb3J5X2luaXQgKCk7Ci0gICAgcHJpdi0+YWxsb2NhdG9yID0gZ3N0X2FsbG9jYXRvcl9maW5kIChHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUik7Ci0gIH0gZWxzZSB7CisgIGlmIChhbGxvY2F0b3IgLyogJiYgR1NUX0lTX0dMX01FTU9SWV9BTExPQ0FUT1IgKGFsbG9jYXRvcikgRklYTUUgRUdMSW1hZ2UgKi8gKSB7CiAgICAgcHJpdi0+YWxsb2NhdG9yID0gZ3N0X29iamVjdF9yZWYgKGFsbG9jYXRvcik7CisgIH0gZWxzZSB7CisgICAgcHJpdi0+YWxsb2NhdG9yID0KKyAgICAgICAgR1NUX0FMTE9DQVRPUiAoZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHQgKGdscG9vbC0+Y29udGV4dCkpOworICAgIGdfYXNzZXJ0IChwcml2LT5hbGxvY2F0b3IpOwogICB9CiAKLSAgcHJpdi0+cGFyYW1zID0gYWxsb2NfcGFyYW1zOwotCi0gIHByaXYtPmltX2Zvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJmluZm8pOwotICBpZiAocHJpdi0+aW1fZm9ybWF0ID09IC0xKQotICAgIGdvdG8gdW5rbm93bl9mb3JtYXQ7Ci0KLSAgaWYgKHByaXYtPmNhcHMpCi0gICAgcmVzZXQgPSAhZ3N0X2NhcHNfaXNfZXF1YWwgKHByaXYtPmNhcHMsIGNhcHMpOwotCi0gIGdzdF9jYXBzX3JlcGxhY2UgKCZwcml2LT5jYXBzLCBjYXBzKTsKLSAgcHJpdi0+aW5mbyA9IGluZm87Ci0KICAgcHJpdi0+YWRkX3ZpZGVvbWV0YSA9IGdzdF9idWZmZXJfcG9vbF9jb25maWdfaGFzX29wdGlvbiAoY29uZmlnLAogICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9WSURFT19NRVRBKTsKLSAgcHJpdi0+YWRkX3VwbG9hZG1ldGEgPSBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2hhc19vcHRpb24gKGNvbmZpZywKLSAgICAgIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fVklERU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQSk7CiAgIHByaXYtPmFkZF9nbHN5bmNtZXRhID0gZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19oYXNfb3B0aW9uIChjb25maWcsCiAgICAgICBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1NZTkNfTUVUQSk7CiAKICNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wKLSAgZ19hc3NlcnQgKHByaXYtPmFsbG9jYXRvciAhPSBOVUxMKTsKLSAgcHJpdi0+d2FudF9lZ2xpbWFnZSA9Ci0gICAgICAoZ19zdHJjbXAwIChwcml2LT5hbGxvY2F0b3ItPm1lbV90eXBlLCBHU1RfRUdMX0lNQUdFX01FTU9SWV9UWVBFKSA9PSAwKTsKLSNlbHNlCi0gIHByaXYtPndhbnRfZWdsaW1hZ2UgPSBGQUxTRTsKKyAgaWYgKHByaXYtPmFsbG9jYXRvcikgeworICAgIHByaXYtPndhbnRfZWdsaW1hZ2UgPQorICAgICAgICAoZ19zdHJjbXAwIChwcml2LT5hbGxvY2F0b3ItPm1lbV90eXBlLCBHU1RfRUdMX0lNQUdFX01FTU9SWV9UWVBFKSA9PSAwKTsKKyAgfSBlbHNlCiAjZW5kaWYKKyAgeworICAgIHByaXYtPndhbnRfZWdsaW1hZ2UgPSBGQUxTRTsKKyAgfQorCisgIGlmIChwcml2LT5nbF9wYXJhbXMpCisgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcHJpdi0+Z2xfcGFyYW1zKTsKKyAgcHJpdi0+Z2xfcGFyYW1zID0gKEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICopCisgICAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF9nbF9hbGxvY2F0aW9uX3BhcmFtcyAoY29uZmlnKTsKKyAgaWYgKCFwcml2LT5nbF9wYXJhbXMpCisgICAgcHJpdi0+Z2xfcGFyYW1zID0gZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoZ2xwb29sLT5jb250ZXh0LAorICAgICAgICAmYWxsb2NfcGFyYW1zLCAmaW5mbywgLTEsIE5VTEwsIDApOwogCiAgIG1heF9hbGlnbiA9IGFsbG9jX3BhcmFtcy5hbGlnbjsKIAogICBpZiAoZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19oYXNfb3B0aW9uIChjb25maWcsCiAgICAgICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9WSURFT19BTElHTk1FTlQpKSB7Ci0KICAgICBwcml2LT5hZGRfdmlkZW9tZXRhID0gVFJVRTsKIAotICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfZ2V0X3ZpZGVvX2FsaWdubWVudCAoY29uZmlnLCAmcHJpdi0+dmFsaWduKTsKKyAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF92aWRlb19hbGlnbm1lbnQgKGNvbmZpZywKKyAgICAgICAgcHJpdi0+Z2xfcGFyYW1zLT52YWxpZ24pOwogCiAgICAgZm9yIChuID0gMDsgbiA8IEdTVF9WSURFT19NQVhfUExBTkVTOyArK24pCi0gICAgICBtYXhfYWxpZ24gfD0gcHJpdi0+dmFsaWduLnN0cmlkZV9hbGlnbltuXTsKKyAgICAgIG1heF9hbGlnbiB8PSBwcml2LT5nbF9wYXJhbXMtPnZhbGlnbi0+c3RyaWRlX2FsaWduW25dOwogCiAgICAgZm9yIChuID0gMDsgbiA8IEdTVF9WSURFT19NQVhfUExBTkVTOyArK24pCi0gICAgICBwcml2LT52YWxpZ24uc3RyaWRlX2FsaWduW25dID0gbWF4X2FsaWduOworICAgICAgcHJpdi0+Z2xfcGFyYW1zLT52YWxpZ24tPnN0cmlkZV9hbGlnbltuXSA9IG1heF9hbGlnbjsKIAotICAgIGdzdF92aWRlb19pbmZvX2FsaWduICgmcHJpdi0+aW5mbywgJnByaXYtPnZhbGlnbik7CisgICAgZ3N0X3ZpZGVvX2luZm9fYWxpZ24gKHByaXYtPmdsX3BhcmFtcy0+dl9pbmZvLCBwcml2LT5nbF9wYXJhbXMtPnZhbGlnbik7CiAKLSAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF92aWRlb19hbGlnbm1lbnQgKGNvbmZpZywgJnByaXYtPnZhbGlnbik7Ci0gIH0gZWxzZSB7Ci0gICAgZ3N0X3ZpZGVvX2FsaWdubWVudF9yZXNldCAoJnByaXYtPnZhbGlnbik7CisgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfdmlkZW9fYWxpZ25tZW50IChjb25maWcsCisgICAgICAgIHByaXYtPmdsX3BhcmFtcy0+dmFsaWduKTsKICAgfQogCiAgIGlmIChhbGxvY19wYXJhbXMuYWxpZ24gPCBtYXhfYWxpZ24pIHsKQEAgLTE4MiwyOCArMTc4LDY1IEBACiAKICAgICBhbGxvY19wYXJhbXMuYWxpZ24gPSBtYXhfYWxpZ247CiAgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfYWxsb2NhdG9yIChjb25maWcsIGFsbG9jYXRvciwgJmFsbG9jX3BhcmFtcyk7Ci0gICAgcHJpdi0+cGFyYW1zID0gYWxsb2NfcGFyYW1zOworICAgIGlmIChwcml2LT5nbF9wYXJhbXMtPnBhcmVudC5hbGxvY19wYXJhbXMpCisgICAgICBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAocHJpdi0+Z2xfcGFyYW1zLT5wYXJlbnQuYWxsb2NfcGFyYW1zKTsKKyAgICBwcml2LT5nbF9wYXJhbXMtPnBhcmVudC5hbGxvY19wYXJhbXMgPQorICAgICAgICBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfY29weSAoJmFsbG9jX3BhcmFtcyk7CiAgIH0KIAotICBpZiAocmVzZXQpIHsKLSAgICBpZiAoZ2xwb29sLT51cGxvYWQpCi0gICAgICBnc3Rfb2JqZWN0X3VucmVmIChnbHBvb2wtPnVwbG9hZCk7CisgIHsKKyAgICBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKKyAgICBjb25zdCBnY2hhciAqdGFyZ2V0X3N0ciA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAocywgInRleHR1cmUtdGFyZ2V0Iik7CisgICAgZ2Jvb2xlYW4gbXVsdGlwbGVfdGV4dHVyZV90YXJnZXRzID0gRkFMU0U7CiAKLSAgICBnbHBvb2wtPnVwbG9hZCA9IGdzdF9nbF91cGxvYWRfbWV0YV9uZXcgKGdscG9vbC0+Y29udGV4dCk7CisgICAgdGV4X3RhcmdldCA9IHByaXYtPmdsX3BhcmFtcy0+dGFyZ2V0OworICAgIGlmICh0YXJnZXRfc3RyKQorICAgICAgdGV4X3RhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZyAodGFyZ2V0X3N0cik7CisKKyAgICBpZiAoZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19oYXNfb3B0aW9uIChjb25maWcsCisgICAgICAgICAgICBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUXzJEKSkgeworICAgICAgaWYgKHRleF90YXJnZXQgJiYgdGV4X3RhcmdldCAhPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpCisgICAgICAgIG11bHRpcGxlX3RleHR1cmVfdGFyZ2V0cyA9IFRSVUU7CisgICAgICB0ZXhfdGFyZ2V0ID0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEOworICAgIH0KKyAgICBpZiAoZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19oYXNfb3B0aW9uIChjb25maWcsCisgICAgICAgICAgICBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSkpIHsKKyAgICAgIGlmICh0ZXhfdGFyZ2V0ICYmIHRleF90YXJnZXQgIT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSkKKyAgICAgICAgbXVsdGlwbGVfdGV4dHVyZV90YXJnZXRzID0gVFJVRTsKKyAgICAgIHRleF90YXJnZXQgPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFOworICAgIH0KKyAgICBpZiAoZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19oYXNfb3B0aW9uIChjb25maWcsCisgICAgICAgICAgICBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykpIHsKKyAgICAgIGlmICh0ZXhfdGFyZ2V0ICYmIHRleF90YXJnZXQgIT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykKKyAgICAgICAgbXVsdGlwbGVfdGV4dHVyZV90YXJnZXRzID0gVFJVRTsKKyAgICAgIHRleF90YXJnZXQgPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTOworICAgIH0KKworICAgIGlmICghdGV4X3RhcmdldCkKKyAgICAgIHRleF90YXJnZXQgPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ7CisKKyAgICBpZiAobXVsdGlwbGVfdGV4dHVyZV90YXJnZXRzKSB7CisgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHBvb2wsICJNdWx0aXBsZSB0ZXh0dXJlIHRhcmdldHMgY29uZmlndXJlZCBlaXRoZXIgIgorICAgICAgICAgICJ0aHJvdWdoIGNhcHMgb3IgYnVmZmVyIHBvb2wgb3B0aW9ucyIpOworICAgICAgcmV0ID0gRkFMU0U7CisgICAgfQorCisgICAgcHJpdi0+Z2xfcGFyYW1zLT50YXJnZXQgPSB0ZXhfdGFyZ2V0OwogICB9CiAKICAgLyogUmVjYWx1bGF0ZSB0aGUgc2l6ZSBhbmQgb2Zmc2V0IGFzIHdlIGRvbid0IGFkZCBwYWRkaW5nIGJldHdlZW4gcGxhbmVzLiAqLwotICBwcml2LT5pbmZvLnNpemUgPSAwOwotICBmb3IgKHAgPSAwOyBwIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKCZwcml2LT5pbmZvKTsgcCsrKSB7Ci0gICAgcHJpdi0+aW5mby5vZmZzZXRbcF0gPSBwcml2LT5pbmZvLnNpemU7Ci0gICAgcHJpdi0+aW5mby5zaXplICs9Ci0gICAgICAgIGdzdF9nbF9nZXRfcGxhbmVfZGF0YV9zaXplICgmcHJpdi0+aW5mbywgJnByaXYtPnZhbGlnbiwgcCk7CisgIHByaXYtPmdsX3BhcmFtcy0+dl9pbmZvLT5zaXplID0gMDsKKyAgZm9yIChwID0gMDsgcCA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChwcml2LT5nbF9wYXJhbXMtPnZfaW5mbyk7IHArKykgeworICAgIHByaXYtPmdsX3BhcmFtcy0+dl9pbmZvLT5vZmZzZXRbcF0gPSBwcml2LT5nbF9wYXJhbXMtPnZfaW5mby0+c2l6ZTsKKyAgICBwcml2LT5nbF9wYXJhbXMtPnZfaW5mby0+c2l6ZSArPQorICAgICAgICBnc3RfZ2xfZ2V0X3BsYW5lX2RhdGFfc2l6ZSAocHJpdi0+Z2xfcGFyYW1zLT52X2luZm8sCisgICAgICAgIHByaXYtPmdsX3BhcmFtcy0+dmFsaWduLCBwKTsKICAgfQogCi0gIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X3BhcmFtcyAoY29uZmlnLCBjYXBzLCBwcml2LT5pbmZvLnNpemUsCi0gICAgICBtaW5fYnVmZmVycywgbWF4X2J1ZmZlcnMpOworICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9wYXJhbXMgKGNvbmZpZywgY2FwcywKKyAgICAgIHByaXYtPmdsX3BhcmFtcy0+dl9pbmZvLT5zaXplLCBtaW5fYnVmZmVycywgbWF4X2J1ZmZlcnMpOwogCi0gIHJldHVybiBHU1RfQlVGRkVSX1BPT0xfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNldF9jb25maWcgKHBvb2wsIGNvbmZpZyk7CisgIHJldHVybiBHU1RfQlVGRkVSX1BPT0xfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNldF9jb25maWcgKHBvb2wsIGNvbmZpZykgJiYgcmV0OwogCiAgIC8qIEVSUk9SUyAqLwogd3JvbmdfY29uZmlnOgpAQCAtMjIyLDI2ICsyNTUsMTEgQEAKICAgICAgICAgImZhaWxlZCBnZXR0aW5nIGdlb21ldHJ5IGZyb20gY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CiAgICAgcmV0dXJuIEZBTFNFOwogICB9Ci11bmtub3duX2Zvcm1hdDoKLSAgewotICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZ2xwb29sLCAiZmFpbGVkIHRvIGdldCBmb3JtYXQgZnJvbSBjYXBzICUiCi0gICAgICAgIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZ2xwb29sLCBSRVNPVVJDRSwgV1JJVEUsCi0gICAgICAgICgiRmFpbGVkIHRvIGNyZWF0ZSBvdXRwdXQgaW1hZ2UgYnVmZmVyIG9mICVkeCVkIHBpeGVscyIsCi0gICAgICAgICAgICBwcml2LT5pbmZvLndpZHRoLCBwcml2LT5pbmZvLmhlaWdodCksCi0gICAgICAgICgiSW52YWxpZCBpbnB1dCBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKSk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2dsX2J1ZmZlcl9wb29sX3N0YXJ0IChHc3RCdWZmZXJQb29sICogcG9vbCkKIHsKLSAgR3N0R0xCdWZmZXJQb29sICpnbHBvb2wgPSBHU1RfR0xfQlVGRkVSX1BPT0xfQ0FTVCAocG9vbCk7Ci0gIEdzdEdMQnVmZmVyUG9vbFByaXZhdGUgKnByaXYgPSBnbHBvb2wtPnByaXY7Ci0KLSAgZ3N0X2dsX3VwbG9hZF9tZXRhX3NldF9mb3JtYXQgKGdscG9vbC0+dXBsb2FkLCAmcHJpdi0+aW5mbyk7Ci0KICAgcmV0dXJuIEdTVF9CVUZGRVJfUE9PTF9DTEFTUyAocGFyZW50X2NsYXNzKS0+c3RhcnQgKHBvb2wpOwogfQogCkBAIC0yNTAsMTUgKzI2OCwxMSBAQAogZ3N0X2dsX2J1ZmZlcl9wb29sX2FsbG9jIChHc3RCdWZmZXJQb29sICogcG9vbCwgR3N0QnVmZmVyICoqIGJ1ZmZlciwKICAgICBHc3RCdWZmZXJQb29sQWNxdWlyZVBhcmFtcyAqIHBhcmFtcykKIHsKKyAgR3N0R0xNZW1vcnlBbGxvY2F0b3IgKmFsbG9jOwogICBHc3RHTEJ1ZmZlclBvb2wgKmdscG9vbCA9IEdTVF9HTF9CVUZGRVJfUE9PTF9DQVNUIChwb29sKTsKICAgR3N0R0xCdWZmZXJQb29sUHJpdmF0ZSAqcHJpdiA9IGdscG9vbC0+cHJpdjsKLSAgR3N0VmlkZW9JbmZvICppbmZvOwotICBHc3RWaWRlb0FsaWdubWVudCAqdmFsaWduOwogICBHc3RCdWZmZXIgKmJ1ZjsKIAotICBpbmZvID0gJnByaXYtPmluZm87Ci0gIHZhbGlnbiA9ICZwcml2LT52YWxpZ247Ci0KICAgaWYgKCEoYnVmID0gZ3N0X2J1ZmZlcl9uZXcgKCkpKSB7CiAgICAgZ290byBub19idWZmZXI7CiAgIH0KQEAgLTI2Niw3ICsyODAsOCBAQAogICBpZiAocHJpdi0+d2FudF9lZ2xpbWFnZSkgewogICAgIC8qIGFsbG9jIGFuZCBhcHBlbmQgbWVtb3JpZXMsIGFsc28gYWRkIHZpZGVvX21ldGEgYW5kCiAgICAgICogdGV4dHVyZV91cGxvYWRfbWV0YSAqLwotICAgIGlmICghZ3N0X2VnbF9pbWFnZV9tZW1vcnlfc2V0dXBfYnVmZmVyIChnbHBvb2wtPmNvbnRleHQsIGluZm8sIGJ1ZikpCisgICAgaWYgKCFnc3RfZWdsX2ltYWdlX21lbW9yeV9zZXR1cF9idWZmZXIgKGdscG9vbC0+Y29udGV4dCwKKyAgICAgICAgICAgIHByaXYtPmdsX3BhcmFtcy0+dl9pbmZvLCBidWYpKQogICAgICAgZ290byBlZ2xfaW1hZ2VfbWVtX2NyZWF0ZV9mYWlsZWQ7CiAKICAgICAqYnVmZmVyID0gYnVmOwpAQCAtMjc1LDEzICsyOTAsMTAgQEAKICAgfQogI2VuZGlmCiAKLSAgaWYgKCFnc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlciAoZ2xwb29sLT5jb250ZXh0LCAmcHJpdi0+cGFyYW1zLCBpbmZvLAotICAgICAgICAgIHZhbGlnbiwgYnVmKSkKKyAgYWxsb2MgPSBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUiAocHJpdi0+YWxsb2NhdG9yKTsKKyAgaWYgKCFnc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlciAoYWxsb2MsIGJ1ZiwgcHJpdi0+Z2xfcGFyYW1zKSkKICAgICBnb3RvIG1lbV9jcmVhdGVfZmFpbGVkOwogCi0gIGlmIChwcml2LT5hZGRfdXBsb2FkbWV0YSkKLSAgICBnc3RfZ2xfdXBsb2FkX21ldGFfYWRkX3RvX2J1ZmZlciAoZ2xwb29sLT51cGxvYWQsIGJ1Zik7Ci0KICAgaWYgKHByaXYtPmFkZF9nbHN5bmNtZXRhKQogICAgIGdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YSAoZ2xwb29sLT5jb250ZXh0LCBidWYpOwogCkBAIC00MDksMTQgKzQyMSwxMCBAQAogCiAgIHByaXYtPmFsbG9jYXRvciA9IE5VTEw7CiAgIHByaXYtPmNhcHMgPSBOVUxMOwotICBwcml2LT5pbV9mb3JtYXQgPSBHU1RfVklERU9fRk9STUFUX1VOS05PV047CiAgIHByaXYtPmFkZF92aWRlb21ldGEgPSBUUlVFOwogICBwcml2LT5hZGRfZ2xzeW5jbWV0YSA9IEZBTFNFOwogICBwcml2LT53YW50X2VnbGltYWdlID0gRkFMU0U7CiAgIHByaXYtPmxhc3RfYnVmZmVyID0gRkFMU0U7Ci0KLSAgZ3N0X3ZpZGVvX2luZm9faW5pdCAoJnByaXYtPmluZm8pOwotICBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdCAoJnByaXYtPnBhcmFtcyk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC00MzIsOSArNDQwLDYgQEAKICAgaWYgKHByaXYtPmNhcHMpCiAgICAgZ3N0X2NhcHNfdW5yZWYgKHByaXYtPmNhcHMpOwogCi0gIGlmIChwb29sLT51cGxvYWQpCi0gICAgZ3N0X29iamVjdF91bnJlZiAocG9vbC0+dXBsb2FkKTsKLQogICBHX09CSkVDVF9DTEFTUyAoZ3N0X2dsX2J1ZmZlcl9wb29sX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwogCiAgIC8qIG9ubHkgcmVsZWFzZSB0aGUgY29udGV4dCBvbmNlIGFsbCBvdXIgbWVtb3J5IGhhdmUgYmVlbiBkZWxldGVkICovCkBAIC00NDcsNCArNDUyLDQ0IEBACiAgICAgZ3N0X29iamVjdF91bnJlZiAocHJpdi0+YWxsb2NhdG9yKTsKICAgICBwcml2LT5hbGxvY2F0b3IgPSBOVUxMOwogICB9CisKKyAgaWYgKHByaXYtPmdsX3BhcmFtcykKKyAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwcml2LT5nbF9wYXJhbXMpOworICBwcml2LT5nbF9wYXJhbXMgPSBOVUxMOworfQorCisvKioKKyAqIGdzdF9idWZmZXJfcG9vbF9jb25maWdfZ2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zOgorICogQGNvbmZpZzogYSBidWZmZXIgcG9vbCBjb25maWcKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IHRoZSBjdXJyZW50bHkgc2V0ICNHc3RHTEFsbG9jYXRpb25QYXJhbXMgb3IgJU5VTEwKKyAqLworR3N0R0xBbGxvY2F0aW9uUGFyYW1zICoKK2dzdF9idWZmZXJfcG9vbF9jb25maWdfZ2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zIChHc3RTdHJ1Y3R1cmUgKiBjb25maWcpCit7CisgIEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqcmV0OworCisgIGlmICghZ3N0X3N0cnVjdHVyZV9nZXQgKGNvbmZpZywgImdsLWFsbG9jYXRpb24tcGFyYW1zIiwKKyAgICAgICAgICBHU1RfVFlQRV9HTF9BTExPQ0FUSU9OX1BBUkFNUywgJnJldCwgTlVMTCkpCisgICAgcmV0ID0gTlVMTDsKKworICByZXR1cm4gcmV0OworfQorCisvKioKKyAqIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zOgorICogQGNvbmZpZzogYSBidWZmZXIgcG9vbCBjb25maWcKKyAqIEBwYXJhbXM6ICh0cmFuc2ZlciBub25lKTogYSAjR3N0R0xBbGxvY2F0aW9uUGFyYW1zCisgKgorICogU2V0cyBAcGFyYW1zIG9uIEBjb25maWcKKyAqLwordm9pZAorZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXMgKEdzdFN0cnVjdHVyZSAqIGNvbmZpZywKKyAgICBHc3RHTEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKGNvbmZpZyAhPSBOVUxMKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAocGFyYW1zICE9IE5VTEwpOworCisgIGdzdF9zdHJ1Y3R1cmVfc2V0IChjb25maWcsICJnbC1hbGxvY2F0aW9uLXBhcmFtcyIsCisgICAgICBHU1RfVFlQRV9HTF9BTExPQ0FUSU9OX1BBUkFNUywgcGFyYW1zLCBOVUxMKTsKIH0KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlcnBvb2wuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlcnBvb2wuaAppbmRleCBjZWExMTc1Li5lZTEzMzY2IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5oCkBAIC0yNSwxNCArMjUsMTAgQEAKICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9tZXRhLmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvcG9vbC5oPgogCi0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsX2Z3ZC5oPgorI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTEJ1ZmZlclBvb2wgR3N0R0xCdWZmZXJQb29sOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQnVmZmVyUG9vbENsYXNzIEdzdEdMQnVmZmVyUG9vbENsYXNzOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQnVmZmVyUG9vbFByaXZhdGUgR3N0R0xCdWZmZXJQb29sUHJpdmF0ZTsKLQogLyogYnVmZmVyIHBvb2wgZnVuY3Rpb25zICovCiBHVHlwZSBnc3RfZ2xfYnVmZmVyX3Bvb2xfZ2V0X3R5cGUgKHZvaWQpOwogI2RlZmluZSBHU1RfVFlQRV9HTF9CVUZGRVJfUE9PTCAgICAgIChnc3RfZ2xfYnVmZmVyX3Bvb2xfZ2V0X3R5cGUoKSkKQEAgLTUwLDcgKzQ2LDYgQEAKICAgR3N0QnVmZmVyUG9vbCBidWZmZXJwb29sOwogCiAgIEdzdEdMQ29udGV4dCAqY29udGV4dDsKLSAgR3N0R0xVcGxvYWRNZXRhICp1cGxvYWQ7CiAKICAgR3N0R0xCdWZmZXJQb29sUHJpdmF0ZSAqcHJpdjsKIH07CkBAIC02OSw2ICs2NCwxMCBAQAogdm9pZCBnc3RfZ2xfYnVmZmVyX3Bvb2xfcmVwbGFjZV9sYXN0X2J1ZmZlciAoR3N0R0xCdWZmZXJQb29sICogcG9vbCwKICAgICBHc3RCdWZmZXIgKiBidWZmZXIpOwogCitHc3RHTEFsbG9jYXRpb25QYXJhbXMgKiBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF9nbF9hbGxvY2F0aW9uX3BhcmFtcyAgICAoR3N0U3RydWN0dXJlICogY29uZmlnKTsKK3ZvaWQgICAgICAgICAgICAgICAgICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zICAgIChHc3RTdHJ1Y3R1cmUgKiBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmIC8qIF9HU1RfR0xfQlVGRkVSX1BPT0xfSF8gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmMKaW5kZXggNTkxNWEzOS4uZWIzYjRhOCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNlbmRpZgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2luY2x1ZGUgImdsLmgiCkBAIC0zMCwxNSArMzEsMTIgQEAKIC8qKgogICogU0VDVElPTjpnc3RnbGNvbG9yY29udmVydAogICogQHNob3J0X2Rlc2NyaXB0aW9uOiBhbiBvYmplY3QgdGhhdCBjb252ZXJ0cyBiZXR3ZWVuIGNvbG9yIHNwYWNlcy9mb3JtYXRzCi0gKiBAc2VlX2Fsc286ICNHc3RHTFVwbG9hZCwgI0dzdEdMRG93bmxvYWQsICNHc3RHTE1lbW9yeQorICogQHNlZV9hbHNvOiAjR3N0R0xVcGxvYWQsICNHc3RHTE1lbW9yeSwgI0dzdEdMQmFzZU1lbW9yeQogICoKICAqICNHc3RHTENvbG9yQ29udmVydCBpcyBhbiBvYmplY3QgdGhhdCBjb252ZXJ0cyBiZXR3ZWVuIGNvbG9yIHNwYWNlcyBhbmQvb3IKICAqIGZvcm1hdHMgdXNpbmcgT3BlbkdMIFNoYWRlcnMuCiAgKgogICogQSAjR3N0R0xDb2xvckNvbnZlcnQgY2FuIGJlIGNyZWF0ZWQgd2l0aCBnc3RfZ2xfY29sb3JfY29udmVydF9uZXcoKS4KLSAqCi0gKiBGb3IgaGFuZGxpbmcgc3RyaWRlIHNjYWxpbmcgaW4gdGhlIHNoYWRlciwgc2VlCi0gKiBnc3RfZ2xfY29sb3JfY29udmVydF9zZXRfdGV4dHVyZV9zY2FsaW5nKCkuCiAgKi8KIAogI2RlZmluZSBVU0lOR19PUEVOR0woY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMLCAxLCAwKSkKQEAgLTEwOSw3ICsxMDcsNiBAQAogc3RhdGljIGNvbnN0IGdmbG9hdCBmcm9tX3JnYl9idDcwOV91Y29lZmZbXSA9IHsgLTAuMTAwNjQwLCAtMC4zMzg2ODgsIDAuNDM5MzI3IH07CiBzdGF0aWMgY29uc3QgZ2Zsb2F0IGZyb21fcmdiX2J0NzA5X3Zjb2VmZltdID0geyAwLjQ0MDY1NCwgLTAuNDAwMjg1LCAtMC4wNDAzNzAgfTsKIAotCiAvKiBHUkFZMTYgdG8gUkdCIGNvbnZlcnNpb24KICAqICBkYXRhIHRyYW5zZmVyZWQgYXMgR0xfTFVNSU5BTkNFX0FMUEhBIHRoZW4gY29udmVydCBiYWNrIHRvIEdSQVkxNiAKICAqICBoaWdoIGJ5dGUgd2VpZ2h0IGFzIDogMjU1KjI1Ni82NTUzNSAKQEAgLTExOSwzOSArMTE2LDYyIEBACiAjZGVmaW5lIENPTVBPU0VfV0VJR0hUIFwKICAgICAiY29uc3QgdmVjMiBjb21wb3NlX3dlaWdodCA9IHZlYzIoMC45OTYxMDksIDAuMDAzODkxKTtcbiIKIAotLyogQ2hhbm5lbCByZW9yZGVyaW5nIGZvciBYWVogPC0+IFpZWCBjb252ZXJzaW9uICovCi1zdGF0aWMgY29uc3QgZ2NoYXIgZnJhZ19SRU9SREVSW10gPQotICAgICAgIiNpZmRlZiBHTF9FU1xuIgotICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgIiNlbmRpZlxuIgotICAgICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgotICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIKLSAgICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMDtcbiIKLSAgICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMTtcbiIKLSAgICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMjtcbiIKLSAgICAgICJ2b2lkIG1haW4odm9pZClcbiIKLSAgICAgICJ7XG4iCi0gICAgICAiIHZlYzQgdCA9IHRleHR1cmUyRCh0ZXgsIHZfdGV4Y29vcmQgKiB0ZXhfc2NhbGUwKTtcbiIKLSAgICAgICIgJXNcbiIgLyogY2xvYmJlciBhbHBoYSBjaGFubmVsPyAqLwotICAgICAgIiBnbF9GcmFnQ29sb3IgPSB2ZWM0KHQuJWMsIHQuJWMsIHQuJWMsIHQuJWMpO1xuIgotICAgICAgIn0iOworI2RlZmluZSBERUZBVUxUX1VOSUZPUk1TICAgICAgICAgXAorICAgICIjaWZkZWYgR0xfRVNcbiIgICAgICAgICAgICAgXAorICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIgXAorICAgICIjZW5kaWZcbiIgICAgICAgICAgICAgICAgICAgXAorICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMDtcbiIgXAorICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMTtcbiIgXAorICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMjtcbiIgXAorICAgICJ1bmlmb3JtIGZsb2F0IHdpZHRoO1xuIiAgICAgXAorICAgICJ1bmlmb3JtIGZsb2F0IGhlaWdodDtcbiIgICAgXAorICAgICJ1bmlmb3JtIGZsb2F0IHBvZmZzZXRfeDtcbiIgXAorICAgICJ1bmlmb3JtIGZsb2F0IHBvZmZzZXRfeTtcbiIKIAotc3RhdGljIGNvbnN0IGdjaGFyIGZyYWdfQVBQTEVfWVVWX1RPX1JHQltdID0KLSAgICAgICIjaWZkZWYgR0xfRVNcbiIKLSAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICIjZW5kaWZcbiIKLSAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKLSAgICAgICJ1bmlmb3JtIGZsb2F0IHdpZHRoO1xuIgotICAgICAgInVuaWZvcm0gZmxvYXQgaGVpZ2h0O1xuIgotICAgICAgInVuaWZvcm0gc2FtcGxlcjJEUmVjdCB0ZXg7XG4iCi0gICAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTA7XG4iCi0gICAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTE7XG4iCi0gICAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTI7XG4iCi0gICAgICAidm9pZCBtYWluKHZvaWQpXG4iCi0gICAgICAie1xuIgotICAgICAgIiB2ZWM0IHQgPSB0ZXh0dXJlMkRSZWN0KHRleCwgdl90ZXhjb29yZCAqIHZlYzIod2lkdGgsIGhlaWdodCkgKiB0ZXhfc2NhbGUwKTtcbiIKLSAgICAgICIgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0LiVjLCB0LiVjLCB0LiVjLCB0LiVjKTtcbiIKLSAgICAgICJ9IjsKKyNkZWZpbmUgTUFYX0ZVTkNUSU9OUyA0CisKKyNkZWZpbmUgZ2xzbF9PRVNfZXh0ZW5zaW9uX3N0cmluZyAiI2V4dGVuc2lvbiBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIDogcmVxdWlyZSBcbiIKKworc3RydWN0IHNoYWRlcl90ZW1wbAoreworICBjb25zdCBnY2hhciAqZXh0ZW5zaW9uczsKKyAgY29uc3QgZ2NoYXIgKnVuaWZvcm1zOworICBjb25zdCBnY2hhciAqZnVuY3Rpb25zW01BWF9GVU5DVElPTlNdOworICBjb25zdCBnY2hhciAqYm9keTsKKworICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0OworfTsKKworI2RlZmluZSBnbHNsX2Z1bmNfeXV2X3RvX3JnYiBcCisgICAgInZlYzMgeXV2X3RvX3JnYiAodmVjMyB2YWwsIHZlYzMgb2Zmc2V0LCB2ZWMzIHljb2VmZiwgdmVjMyB1Y29lZmYsIHZlYzMgdmNvZWZmKSB7XG4iIFwKKyAgICAiICB2ZWMzIHJnYjtcbiIgICAgICAgICAgICAgICAgIFwKKyAgICAiICB2YWwgKz0gb2Zmc2V0O1xuIiAgICAgICAgICAgIFwKKyAgICAiICByZ2IuciA9IGRvdCh2YWwsIHljb2VmZik7XG4iIFwKKyAgICAiICByZ2IuZyA9IGRvdCh2YWwsIHVjb2VmZik7XG4iIFwKKyAgICAiICByZ2IuYiA9IGRvdCh2YWwsIHZjb2VmZik7XG4iIFwKKyAgICAiICByZXR1cm4gcmdiO1xuIiAgICAgICAgICAgICAgIFwKKyAgICAifVxuIgorCisjZGVmaW5lIGdsc2xfZnVuY19yZ2JfdG9feXV2IFwKKyAgICAidmVjMyByZ2JfdG9feXV2ICh2ZWMzIHZhbCwgdmVjMyBvZmZzZXQsIHZlYzMgcmNvZWZmLCB2ZWMzIGdjb2VmZiwgdmVjMyBiY29lZmYpIHtcbiIgXAorICAgICIgIHZlYzMgeXV2O1xuIiAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIiAgeXV2LnIgPSBkb3QodmFsLnJnYiwgcmNvZWZmKTtcbiIgICAgIFwKKyAgICAiICB5dXYuZyA9IGRvdCh2YWwucmdiLCBnY29lZmYpO1xuIiAgICAgXAorICAgICIgIHl1di5iID0gZG90KHZhbC5yZ2IsIGJjb2VmZik7XG4iICAgICBcCisgICAgIiAgeXV2ICs9IG9mZnNldDtcbiIgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiICByZXR1cm4geXV2O1xuIiAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJ9XG4iCisKKy8qIENoYW5uZWwgcmVvcmRlcmluZyBmb3IgWFlaIDwtPiBaWVggY29udmVyc2lvbiAqLworc3RhdGljIGNvbnN0IHN0cnVjdCBzaGFkZXJfdGVtcGwgdGVtcGxfUkVPUkRFUiA9CisgIHsgTlVMTCwKKyAgICBERUZBVUxUX1VOSUZPUk1TICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iLAorICAgIHsgTlVMTCwgfSwKKyAgICAidmVjNCB0ID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQgKiB0ZXhfc2NhbGUwKTtcbiIKKyAgICAiJXNcbiIgLyogY2xvYmJlciBhbHBoYSBjaGFubmVsPyAqLworICAgICJnbF9GcmFnQ29sb3IgPSB2ZWM0KHQuJWMsIHQuJWMsIHQuJWMsIHQuJWMpO1xuIiwKKyAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQKKyAgfTsKIAogLyogR1JBWTE2IHRvIFJHQiBjb252ZXJzaW9uCiAgKiAgZGF0YSB0cmFuc2ZlcmVkIGFzIEdMX0xVTUlOQU5DRV9BTFBIQSB0aGVuIGNvbnZlcnQgYmFjayB0byBHUkFZMTYgCkBAIC0xNTksMjc0ICsxNzksMTkxIEBACiAgKiAgKFswfjFdIGRlbm9ybWFsaXplIHRvIFswfjI1NV0sc2hpZnQgdG8gaGlnaCBieXRlLG5vcm1hbGl6ZSB0byBbMH4xXSkKICAqICBsb3cgYnl0ZSB3ZWlnaHQgYXMgOiAyNTUvNjU1MzUgKHNpbWlsYXIpCiAgKiAqLwotc3RhdGljIGNvbnN0IGdjaGFyIGZyYWdfQ09NUE9TRVtdID0KLSAgICAgICIjaWZkZWYgR0xfRVNcbiIKLSAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICIjZW5kaWZcbiIKLSAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKLSAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTA7XG4iCi0gICAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTE7XG4iCi0gICAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTI7XG4iCi0gICAgICBDT01QT1NFX1dFSUdIVAotICAgICAgInZvaWQgbWFpbih2b2lkKVxuIgotICAgICAgIntcbiIKLSAgICAgICIgZmxvYXQgciwgZywgYiwgYTtcbiIKLSAgICAgICIgdmVjNCB0ID0gdGV4dHVyZTJEKHRleCwgdl90ZXhjb29yZCAqIHRleF9zY2FsZTApO1xuIgotICAgICAgIiByID0gZG90KHQuJWMlYywgY29tcG9zZV93ZWlnaHQpOyIKLSAgICAgICIgZyA9IHI7XG4iCi0gICAgICAiIGIgPSByO1xuIgotICAgICAgIiBhID0gMS4wO1xuIgotICAgICAgIiBnbF9GcmFnQ29sb3IgPSB2ZWM0KCVjLCAlYywgJWMsICVjKTtcbiIKLSAgICAgICJ9IjsKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2hhZGVyX3RlbXBsIHRlbXBsX0NPTVBPU0UgPQorICB7IE5VTEwsCisgICAgREVGQVVMVF9VTklGT1JNUyBDT01QT1NFX1dFSUdIVCAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIiwKKyAgICB7IE5VTEwsIH0sCisgICAgInZlYzQgcmdiYTtcbiIKKyAgICAidmVjNCB0ID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQgKiB0ZXhfc2NhbGUwKTtcbiIKKyAgICAicmdiYS5yZ2IgPSB2ZWMzIChkb3QodC4lYyVjLCBjb21wb3NlX3dlaWdodCkpOyIKKyAgICAicmdiYS5hID0gMS4wO1xuIgorICAgICJnbF9GcmFnQ29sb3IgPSB2ZWM0KHJnYmEuJWMsIHJnYmEuJWMsIHJnYmEuJWMsIHJnYmEuJWMpO1xuIiwKKyAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQKKyAgfTsKIAotc3RhdGljIGNvbnN0IGNoYXIgZnJhZ19BWVVWX3RvX1JHQltdID0KLSAgICAiI2lmZGVmIEdMX0VTXG4iCi0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICIjZW5kaWZcbiIKLSAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCi0gICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIKLSAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTA7XG4iCi0gICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUxO1xuIgotICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMjtcbiIKLSAgICBZVVZfVE9fUkdCX0NPRUZGSUNJRU5UUwotICAgICJ2b2lkIG1haW4odm9pZCkge1xuIgotICAgICIgIGZsb2F0IHIsZyxiLGE7XG4iCi0gICAgIiAgdmVjNCB0ZXhlbDtcbiIKLSAgICAiICB0ZXhlbCA9IHRleHR1cmUyRCh0ZXgsIHZfdGV4Y29vcmQgKiB0ZXhfc2NhbGUwKTtcbiIKLSAgICAiICB0ZXhlbC5nYmEgKz0gb2Zmc2V0O1xuIgotICAgICIgIHIgPSBkb3QodGV4ZWwuZ2JhLCBjb2VmZjEpO1xuIgotICAgICIgIGcgPSBkb3QodGV4ZWwuZ2JhLCBjb2VmZjIpO1xuIgotICAgICIgIGIgPSBkb3QodGV4ZWwuZ2JhLCBjb2VmZjMpO1xuIgotICAgICIgIGEgPSB0ZXhlbC5yO1xuIgotICAgICIgIGdsX0ZyYWdDb2xvcj12ZWM0KCVjLCVjLCVjLCVjKTtcbiIKLSAgICAifSI7CitzdGF0aWMgY29uc3Qgc3RydWN0IHNoYWRlcl90ZW1wbCB0ZW1wbF9BWVVWX3RvX1JHQiA9CisgIHsgTlVMTCwKKyAgICBERUZBVUxUX1VOSUZPUk1TIFlVVl9UT19SR0JfQ09FRkZJQ0lFTlRTICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iLAorICAgIHsgZ2xzbF9mdW5jX3l1dl90b19yZ2IsIE5VTEwsIH0sCisgICAgInZlYzQgdGV4ZWwsIHJnYmE7XG4iCisgICAgInRleGVsID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQgKiB0ZXhfc2NhbGUwKTtcbiIKKyAgICAicmdiYS5yZ2IgPSB5dXZfdG9fcmdiICh0ZXhlbC55encsIG9mZnNldCwgY29lZmYxLCBjb2VmZjIsIGNvZWZmMyk7XG4iCisgICAgInJnYmEuYSA9IHRleGVsLnI7XG4iCisgICAgImdsX0ZyYWdDb2xvcj12ZWM0KHJnYmEuJWMscmdiYS4lYyxyZ2JhLiVjLHJnYmEuJWMpO1xuIiwKKyAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQKKyAgfTsKIAotc3RhdGljIGNvbnN0IGdjaGFyIGZyYWdfUkdCX3RvX0FZVVZbXSA9Ci0gICAgIiNpZmRlZiBHTF9FU1xuIgotICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAiI2VuZGlmXG4iCi0gICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgotICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgUkdCX1RPX1lVVl9DT0VGRklDSUVOVFMKLSAgICAidm9pZCBtYWluKHZvaWQpIHtcbiIKLSAgICAiICB2ZWM0IHRleGVsO1xuIgotICAgICIgIGZsb2F0IHksIHUsIHYsIGE7XG4iCi0gICAgIiAgdGV4ZWwgPSB0ZXh0dXJlMkQodGV4LCB2X3RleGNvb3JkKS4lYyVjJWMlYztcbiIKLSAgICAiICB5ID0gZG90KHRleGVsLnJnYiwgY29lZmYxKTtcbiIKLSAgICAiICB1ID0gZG90KHRleGVsLnJnYiwgY29lZmYyKTtcbiIKLSAgICAiICB2ID0gZG90KHRleGVsLnJnYiwgY29lZmYzKTtcbiIKLSAgICAiICB5ICs9IG9mZnNldC54O1xuIgotICAgICIgIHUgKz0gb2Zmc2V0Lnk7XG4iCi0gICAgIiAgdiArPSBvZmZzZXQuejtcbiIKLSAgICAiICBhID0gJXM7XG4iCi0gICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChhLHksdSx2KTtcbiIKLSAgICAifVxuIjsKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2hhZGVyX3RlbXBsIHRlbXBsX1JHQl90b19BWVVWID0KKyAgeyBOVUxMLAorICAgIERFRkFVTFRfVU5JRk9STVMgUkdCX1RPX1lVVl9DT0VGRklDSUVOVFMgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIsCisgICAgeyBnbHNsX2Z1bmNfcmdiX3RvX3l1diwgTlVMTCwgfSwKKyAgICAidmVjNCB0ZXhlbCwgYXl1djtcbiIKKyAgICAidGV4ZWwgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCkuJWMlYyVjJWM7XG4iCisgICAgImF5dXYueXp3ID0gcmdiX3RvX3l1diAodGV4ZWwucmdiLCBvZmZzZXQsIGNvZWZmMSwgY29lZmYyLCBjb2VmZjMpO1xuIgorICAgICJheXV2LnggPSAlcztcbiIKKyAgICAiZ2xfRnJhZ0NvbG9yID0gYXl1djtcbiIsCisgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJECisgIH07CiAKIC8qIFlVViB0byBSR0IgY29udmVyc2lvbiAqLwotc3RhdGljIGNvbnN0IGNoYXIgZnJhZ19QTEFOQVJfWVVWX3RvX1JHQltdID0KLSAgICAiI2lmZGVmIEdMX0VTXG4iCi0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICIjZW5kaWZcbiIKLSAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCi0gICAgInVuaWZvcm0gc2FtcGxlcjJEIFl0ZXgsIFV0ZXgsIFZ0ZXg7XG4iCi0gICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUwO1xuIgotICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMTtcbiIKLSAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTI7XG4iCi0gICAgWVVWX1RPX1JHQl9DT0VGRklDSUVOVFMKLSAgICAidm9pZCBtYWluKHZvaWQpIHtcbiIKLSAgICAiICBmbG9hdCByLCBnLCBiLCBhO1xuIgotICAgICIgIHZlYzMgeXV2O1xuIgotICAgICIgIHl1di54ID0gdGV4dHVyZTJEKFl0ZXgsdl90ZXhjb29yZCAqIHRleF9zY2FsZTApLnI7XG4iCi0gICAgIiAgeXV2LnkgPSB0ZXh0dXJlMkQoVXRleCx2X3RleGNvb3JkICogdGV4X3NjYWxlMSkucjtcbiIKLSAgICAiICB5dXYueiA9IHRleHR1cmUyRChWdGV4LHZfdGV4Y29vcmQgKiB0ZXhfc2NhbGUyKS5yO1xuIgotICAgICIgIHl1diArPSBvZmZzZXQ7XG4iCi0gICAgIiAgciA9IGRvdCh5dXYsIGNvZWZmMSk7XG4iCi0gICAgIiAgZyA9IGRvdCh5dXYsIGNvZWZmMik7XG4iCi0gICAgIiAgYiA9IGRvdCh5dXYsIGNvZWZmMyk7XG4iCi0gICAgIiAgYSA9IDEuMDtcbiIKLSAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KCVjLCAlYywgJWMsICVjKTtcbiIKLSAgICAifVxuIjsKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2hhZGVyX3RlbXBsIHRlbXBsX1BMQU5BUl9ZVVZfdG9fUkdCID0KKyAgeyBOVUxMLAorICAgIERFRkFVTFRfVU5JRk9STVMgWVVWX1RPX1JHQl9DT0VGRklDSUVOVFMgInVuaWZvcm0gc2FtcGxlcjJEIFl0ZXgsIFV0ZXgsIFZ0ZXg7XG4iLAorICAgIHsgZ2xzbF9mdW5jX3l1dl90b19yZ2IsIE5VTEwsIH0sCisgICAgInZlYzQgdGV4ZWwsIHJnYmE7XG4iCisgICAgLyogRklYTUU6IHNob3VsZCBnZXQgdGhlIHNhbXBsaW5nIHJpZ2h0Li4uICovCisgICAgInRleGVsLnggPSB0ZXh0dXJlMkQoWXRleCwgdGV4Y29vcmQgKiB0ZXhfc2NhbGUwKS5yO1xuIgorICAgICJ0ZXhlbC55ID0gdGV4dHVyZTJEKFV0ZXgsIHRleGNvb3JkICogdGV4X3NjYWxlMSkucjtcbiIKKyAgICAidGV4ZWwueiA9IHRleHR1cmUyRChWdGV4LCB0ZXhjb29yZCAqIHRleF9zY2FsZTIpLnI7XG4iCisgICAgInJnYmEucmdiID0geXV2X3RvX3JnYiAodGV4ZWwueHl6LCBvZmZzZXQsIGNvZWZmMSwgY29lZmYyLCBjb2VmZjMpO1xuIgorICAgICJyZ2JhLmEgPSAxLjA7XG4iCisgICAgImdsX0ZyYWdDb2xvcj12ZWM0KHJnYmEuJWMscmdiYS4lYyxyZ2JhLiVjLHJnYmEuJWMpO1xuIiwKKyAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQKKyAgfTsKIAotc3RhdGljIGNvbnN0IGdjaGFyIGZyYWdfUkdCX3RvX1BMQU5BUl9ZVVZbXSA9Ci0gICAgIiNpZmRlZiBHTF9FU1xuIgotICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAiI2VuZGlmXG4iCi0gICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgotICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgInVuaWZvcm0gZmxvYXQgd2lkdGg7XG4iCi0gICAgInVuaWZvcm0gZmxvYXQgaGVpZ2h0O1xuIgotICAgICJ1bmlmb3JtIHZlYzIgY2hyb21hX3NhbXBsaW5nO1xuIgotICAgIFJHQl9UT19ZVVZfQ09FRkZJQ0lFTlRTCi0gICAgInZvaWQgbWFpbih2b2lkKSB7XG4iCi0gICAgIiAgZmxvYXQgeSwgdSwgdjtcbiIKLSAgICAiICB2ZWM0IHV2X3RleGVsO1xuIgotICAgICIgIHZlYzQgdGV4ZWwgPSB0ZXh0dXJlMkQodGV4LCB2X3RleGNvb3JkKS4lYyVjJWMlYztcbiIKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2hhZGVyX3RlbXBsIHRlbXBsX1JHQl90b19QTEFOQVJfWVVWID0KKyAgeyBOVUxMLAorICAgIERFRkFVTFRfVU5JRk9STVMgUkdCX1RPX1lVVl9DT0VGRklDSUVOVFMgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIKKyAgICAidW5pZm9ybSB2ZWMyIGNocm9tYV9zYW1wbGluZztcbiIsCisgICAgeyBnbHNsX2Z1bmNfcmdiX3RvX3l1diwgTlVMTCwgfSwKKyAgICAidmVjNCB0ZXhlbDtcbiIKKyAgICAidmVjMyB5dXY7XG4iCisgICAgInRleGVsID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpLiVjJWMlYyVjO1xuIgorICAgIC8qIEZJWE1FOiB0aGlzIGlzIG5vdCBxdWl0ZSBjb3JyZWN0IHlldCAqLworICAgICJ2ZWM0IHV2X3RleGVsID0gdmVjNCgwLjApO1xuIgogICAgIC8qIE9uZSB1IGFuZCB2IHNhbXBsZSBjYW4gYmUgZ2VuZXJhdGVkIGJ5IGEgbnhtIHNpemVkIGJsb2NrIGdpdmVuIGJ5CiAgICAgICogQGNocm9tYV9zYW1wbGluZy4gIFRoZSByZXN1bHQgaXMgdGhlIGF2ZXJhZ2Ugb2YgYWxsIHRoZSB2YWx1ZXMgaW4gdGhlCiAgICAgICogYmxvY2sgY29tcHV0ZWQgd2l0aCBhIHJvbGxpbmcgYXZlcmFnZS4KICAgICAgKi8KLSAgICAiICB2ZWMyIHNpemUgPSB2ZWMyKHdpZHRoLCBoZWlnaHQpO1xuIgotICAgICIgIHZlYzIgcG9zID0gdl90ZXhjb29yZCAqIHNpemU7XG4iCi0gICAgICAgLyogc2NhbGUgZm9yIGNocm9tYSBzaXplICovCi0gICAgIiAgdmVjMiBjaHJvbWFfcG9zID0gdl90ZXhjb29yZCAqIGNocm9tYV9zYW1wbGluZyAqIHNpemU7XG4iCi0gICAgICAgLyogb2Zmc2V0IGNocm9tYSB0byB0aGUgY2VudGVyIG9mIHRoZSBmaXJzdCB0ZXhlbCBpbiB0aGUgYmxvY2sgKi8KLSAgICAiICBjaHJvbWFfcG9zIC09IGNsYW1wKGNocm9tYV9zYW1wbGluZyAqIDAuNSAtIDAuNSwgdmVjMigwLjApLCBjaHJvbWFfc2FtcGxpbmcpO1xuIgotICAgICIgIGlmIChjaHJvbWFfcG9zLnggPCB3aWR0aCAmJiBjaHJvbWFfcG9zLnkgPCBoZWlnaHQpIHtcbiIKLSAgICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaW50KGNocm9tYV9zYW1wbGluZy54KTsgaSsrKSB7XG4iCi0gICAgIiAgICAgIHZlYzIgZGVsdGEgPSB2ZWMyIChmbG9hdChpKSwgMC4wKTtcbiIKLSAgICAiICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBpbnQoY2hyb21hX3NhbXBsaW5nLnkpOyBqKyspIHtcbiIKLSAgICAiICAgICAgICBpbnQgbiA9IChpKzEpKihqKzEpO1xuIgotICAgICIgICAgICAgIGRlbHRhLnkgPSBmbG9hdChqKTtcbiIKLSAgICAiICAgICAgICB2ZWM0IHNhbXBsZSA9IHRleHR1cmUyRCh0ZXgsIChjaHJvbWFfcG9zICsgZGVsdGEpIC8gc2l6ZSkuJWMlYyVjJWM7XG4iCi0gICAgICAgICAgICAgLyogcm9sbGluZyBhdmVyYWdlICovCi0gICAgIiAgICAgICAgdXZfdGV4ZWwgPSAoZmxvYXQobi0xKSAqIHV2X3RleGVsICsgc2FtcGxlKSAvIGZsb2F0KG4pO1xuIgotICAgICIgICAgICB9XG4iCisgICAgInZlYzIgdW5ub3JtYWxpemF0aW9uO1xuIgorICAgICJpZiAodGV4Y29vcmQueCA9PSB2X3RleGNvb3JkLngpIHtcbiIKKyAgICAiICB1bm5vcm1hbGl6YXRpb24gPSB2ZWMyKHdpZHRoLCBoZWlnaHQpO1xuIgorICAgICJ9IGVsc2Uge1xuIgorICAgICIgIHVubm9ybWFsaXphdGlvbiA9IHZlYzIgKDEuMCk7XG4iCisgICAgIn1cbiIKKyAgICAgLyogc2NhbGUgZm9yIGNocm9tYSBzaXplICovCisgICAgInZlYzIgY2hyb21hX3BvcyA9IHRleGNvb3JkICogY2hyb21hX3NhbXBsaW5nICogdW5ub3JtYWxpemF0aW9uO1xuIgorICAgICAvKiBvZmZzZXQgY2hyb21hIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGZpcnN0IHRleGVsIGluIHRoZSBibG9jayAqLworICAgICJjaHJvbWFfcG9zIC09IGNsYW1wKGNocm9tYV9zYW1wbGluZyAqIDAuNSAtIDAuNSwgdmVjMigwLjApLCBjaHJvbWFfc2FtcGxpbmcpO1xuIgorICAgICJpZiAoY2hyb21hX3Bvcy54IDwgd2lkdGggJiYgY2hyb21hX3Bvcy55IDwgaGVpZ2h0KSB7XG4iCisgICAgIiAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnQoY2hyb21hX3NhbXBsaW5nLngpOyBpKyspIHtcbiIKKyAgICAiICAgIHZlYzIgZGVsdGEgPSB2ZWMyIChmbG9hdChpKSwgMC4wKTtcbiIKKyAgICAiICAgIGZvciAoaW50IGogPSAwOyBqIDwgaW50KGNocm9tYV9zYW1wbGluZy55KTsgaisrKSB7XG4iCisgICAgIiAgICAgIGludCBuID0gKGkrMSkqKGorMSk7XG4iCisgICAgIiAgICAgIGRlbHRhLnkgPSBmbG9hdChqKTtcbiIKKyAgICAiICAgICAgdmVjNCBzYW1wbGUgPSB0ZXh0dXJlMkQodGV4LCAoY2hyb21hX3BvcyArIGRlbHRhKSAvIHVubm9ybWFsaXphdGlvbikuJWMlYyVjJWM7XG4iCisgICAgICAgICAgIC8qIHJvbGxpbmcgYXZlcmFnZSAqLworICAgICIgICAgICB1dl90ZXhlbCA9IChmbG9hdChuLTEpICogdXZfdGV4ZWwgKyBzYW1wbGUpIC8gZmxvYXQobik7XG4iCiAgICAgIiAgICB9XG4iCiAgICAgIiAgfVxuIgotICAgICIgIHkgPSBkb3QodGV4ZWwucmdiLCBjb2VmZjEpO1xuIgotICAgICIgIHUgPSBkb3QodXZfdGV4ZWwucmdiLCBjb2VmZjIpO1xuIgotICAgICIgIHYgPSBkb3QodXZfdGV4ZWwucmdiLCBjb2VmZjMpO1xuIgotICAgICIgIHkgKz0gb2Zmc2V0Lng7XG4iCi0gICAgIiAgdSArPSBvZmZzZXQueTtcbiIKLSAgICAiICB2ICs9IG9mZnNldC56O1xuIgotICAgICIgIGdsX0ZyYWdEYXRhWzBdID0gdmVjNCh5LCAwLjAsIDAuMCwgMS4wKTtcbiIKLSAgICAiICBnbF9GcmFnRGF0YVsxXSA9IHZlYzQodSwgMC4wLCAwLjAsIDEuMCk7XG4iCi0gICAgIiAgZ2xfRnJhZ0RhdGFbMl0gPSB2ZWM0KHYsIDAuMCwgMC4wLCAxLjApO1xuIgotICAgICJ9XG4iOworICAgICJ9XG4iCisgICAgInl1di54ID0gcmdiX3RvX3l1diAodGV4ZWwucmdiLCBvZmZzZXQsIGNvZWZmMSwgY29lZmYyLCBjb2VmZjMpLng7XG4iCisgICAgInl1di55eiA9IHJnYl90b195dXYgKHV2X3RleGVsLnJnYiwgb2Zmc2V0LCBjb2VmZjEsIGNvZWZmMiwgY29lZmYzKS55ejtcbiIKKyAgICAiZ2xfRnJhZ0RhdGFbMF0gPSB2ZWM0KHl1di54LCAwLjAsIDAuMCwgMS4wKTtcbiIKKyAgICAiZ2xfRnJhZ0RhdGFbMV0gPSB2ZWM0KHl1di55LCAwLjAsIDAuMCwgMS4wKTtcbiIKKyAgICAiZ2xfRnJhZ0RhdGFbMl0gPSB2ZWM0KHl1di56LCAwLjAsIDAuMCwgMS4wKTtcbiIsCisgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJECisgIH07CiAKIC8qIE5WMTIvTlYyMSB0byBSR0IgY29udmVyc2lvbiAqLwotc3RhdGljIGNvbnN0IGNoYXIgZnJhZ19OVjEyX05WMjFfdG9fUkdCW10gPSB7Ci0gICAgICAiI2lmZGVmIEdMX0VTXG4iCi0gICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAiI2VuZGlmXG4iCi0gICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCi0gICAgICAidW5pZm9ybSBzYW1wbGVyMkQgWXRleCxVVnRleDtcbiIKLSAgICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMDtcbiIKLSAgICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMTtcbiIKLSAgICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMjtcbiIKLSAgICAgIFlVVl9UT19SR0JfQ09FRkZJQ0lFTlRTCi0gICAgICAidm9pZCBtYWluKHZvaWQpIHtcbiIKLSAgICAgICIgIGZsb2F0IHIsIGcsIGIsIGE7XG4iCi0gICAgICAiICB2ZWMzIHl1djtcbiIKLSAgICAgICIgIHl1di54PXRleHR1cmUyRChZdGV4LCB2X3RleGNvb3JkICogdGV4X3NjYWxlMCkucjtcbiIKLSAgICAgICIgIHl1di55ej10ZXh0dXJlMkQoVVZ0ZXgsIHZfdGV4Y29vcmQgKiB0ZXhfc2NhbGUxKS4lYyVjO1xuIgotICAgICAgIiAgeXV2ICs9IG9mZnNldDtcbiIKLSAgICAgICIgIHIgPSBkb3QoeXV2LCBjb2VmZjEpO1xuIgotICAgICAgIiAgZyA9IGRvdCh5dXYsIGNvZWZmMik7XG4iCi0gICAgICAiICBiID0gZG90KHl1diwgY29lZmYzKTtcbiIKLSAgICAgICIgIGEgPSAxLjA7XG4iCi0gICAgICAiICBnbF9GcmFnQ29sb3I9dmVjNCglYywgJWMsICVjLCAlYyk7XG4iCi0gICAgICAifSIKLX07CitzdGF0aWMgY29uc3Qgc3RydWN0IHNoYWRlcl90ZW1wbCB0ZW1wbF9OVjEyX05WMjFfdG9fUkdCID0KKyAgeyBOVUxMLAorICAgIERFRkFVTFRfVU5JRk9STVMgWVVWX1RPX1JHQl9DT0VGRklDSUVOVFMgInVuaWZvcm0gc2FtcGxlcjJEIFl0ZXgsIFVWdGV4O1xuIiwKKyAgICB7IGdsc2xfZnVuY195dXZfdG9fcmdiLCBOVUxMLCB9LAorICAgICJ2ZWM0IHJnYmE7XG4iCisgICAgInZlYzMgeXV2O1xuIgorICAgIC8qIEZJWE1FOiBzaG91bGQgZ2V0IHRoZSBzYW1wbGluZyByaWdodC4uLiAqLworICAgICJ5dXYueD10ZXh0dXJlMkQoWXRleCwgdGV4Y29vcmQgKiB0ZXhfc2NhbGUwKS5yO1xuIgorICAgICJ5dXYueXo9dGV4dHVyZTJEKFVWdGV4LCB0ZXhjb29yZCAqIHRleF9zY2FsZTEpLiVjJWM7XG4iCisgICAgInJnYmEucmdiID0geXV2X3RvX3JnYiAoeXV2LCBvZmZzZXQsIGNvZWZmMSwgY29lZmYyLCBjb2VmZjMpO1xuIgorICAgICJyZ2JhLmEgPSAxLjA7XG4iCisgICAgImdsX0ZyYWdDb2xvcj12ZWM0KHJnYmEuJWMscmdiYS4lYyxyZ2JhLiVjLHJnYmEuJWMpO1xuIiwKKyAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQKKyAgfTsKIAogLyogUkdCIHRvIE5WMTIvTlYyMSBjb252ZXJzaW9uICovCiAvKiBOVjEyOiB1LCB2CiAgICBOVjIxOiB2LCB1ICovCi1zdGF0aWMgY29uc3QgY2hhciBmcmFnX1JHQl90b19OVjEyX05WMjFbXSA9IHsKLSAgICAiI2lmZGVmIEdMX0VTXG4iCi0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICIjZW5kaWZcbiIKLSAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCi0gICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIKLSAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTA7XG4iCi0gICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUxO1xuIgotICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMjtcbiIKLSAgICBSR0JfVE9fWVVWX0NPRUZGSUNJRU5UUwotICAgICJ2b2lkIG1haW4odm9pZCkge1xuIgotICAgICIgIGZsb2F0IHksIHUsIHY7XG4iCi0gICAgIiAgdmVjNCB0ZXhlbCwgdXZfdGV4ZWw7XG4iCi0gICAgIiAgdGV4ZWwgPSB0ZXh0dXJlMkQodGV4LCB2X3RleGNvb3JkICogdGV4X3NjYWxlMCkuJWMlYyVjJWM7XG4iCi0gICAgIiAgdXZfdGV4ZWwgPSB0ZXh0dXJlMkQodGV4LCB2X3RleGNvb3JkICogdGV4X3NjYWxlMCAqIDIuMCkuJWMlYyVjJWM7XG4iCi0gICAgIiAgeSA9IGRvdCh0ZXhlbC5yZ2IsIGNvZWZmMSk7XG4iCi0gICAgIiAgdSA9IGRvdCh1dl90ZXhlbC5yZ2IsIGNvZWZmMik7XG4iCi0gICAgIiAgdiA9IGRvdCh1dl90ZXhlbC5yZ2IsIGNvZWZmMyk7XG4iCi0gICAgIiAgeSArPSBvZmZzZXQueDtcbiIKLSAgICAiICB1ICs9IG9mZnNldC55O1xuIgotICAgICIgIHYgKz0gb2Zmc2V0Lno7XG4iCi0gICAgIiAgZ2xfRnJhZ0RhdGFbMF0gPSB2ZWM0KHksIDAuMCwgMC4wLCAxLjApO1xuIgotICAgICIgIGdsX0ZyYWdEYXRhWzFdID0gdmVjNCglYywgJWMsIDAuMCwgMS4wKTtcbiIKLSAgICAifSIKLX07CitzdGF0aWMgY29uc3Qgc3RydWN0IHNoYWRlcl90ZW1wbCB0ZW1wbF9SR0JfdG9fTlYxMl9OVjIxID0KKyAgeyBOVUxMLAorICAgIERFRkFVTFRfVU5JRk9STVMgUkdCX1RPX1lVVl9DT0VGRklDSUVOVFMgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIsCisgICAgeyBnbHNsX2Z1bmNfcmdiX3RvX3l1diwgTlVMTCwgfSwKKyAgICAidmVjNCB0ZXhlbCwgdXZfdGV4ZWw7XG4iCisgICAgInZlYzMgeXV2O1xuIgorICAgICJ0ZXhlbCA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKS4lYyVjJWMlYztcbiIKKyAgICAidXZfdGV4ZWwgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCAqIHRleF9zY2FsZTAgKiAyLjApLiVjJWMlYyVjO1xuIgorICAgICJ5dXYueCA9IHJnYl90b195dXYgKHRleGVsLnJnYiwgb2Zmc2V0LCBjb2VmZjEsIGNvZWZmMiwgY29lZmYzKS54O1xuIgorICAgICJ5dXYueXogPSByZ2JfdG9feXV2ICh1dl90ZXhlbC5yZ2IsIG9mZnNldCwgY29lZmYxLCBjb2VmZjIsIGNvZWZmMykueXo7XG4iCisgICAgImdsX0ZyYWdEYXRhWzBdID0gdmVjNCh5dXYueCwgMC4wLCAwLjAsIDEuMCk7XG4iCisgICAgImdsX0ZyYWdEYXRhWzFdID0gdmVjNCh5dXYuJWMsIHl1di4lYywgMC4wLCAxLjApO1xuIiwKKyAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQKKyAgfTsKIAogLyogWVVZMjpyLGcsYQogICAgVVlWWTphLGIsciAqLwotc3RhdGljIGNvbnN0IGdjaGFyIGZyYWdfWVVZMl9VWVZZX3RvX1JHQltdID0KLSAgICAiI2lmZGVmIEdMX0VTXG4iCi0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICIjZW5kaWZcbiIKLSAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCi0gICAgInVuaWZvcm0gc2FtcGxlcjJEIFl0ZXgsIFVWdGV4O1xuIgotICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMDtcbiIKLSAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTE7XG4iCi0gICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUyO1xuIgotICAgICJ1bmlmb3JtIGZsb2F0IHdpZHRoO1xuIgotICAgIFlVVl9UT19SR0JfQ09FRkZJQ0lFTlRTCi0gICAgInZvaWQgbWFpbih2b2lkKSB7XG4iCi0gICAgIiAgdmVjMyB5dXY7XG4iCi0gICAgIiAgdmVjNCB1dl90ZXhlbDtcbiIKLSAgICAiICBmbG9hdCByLCBnLCBiLCBhO1xuIgotICAgICIgIGZsb2F0IGR4MSA9IC0xLjAgLyB3aWR0aDtcbiIKLSAgICAiICBmbG9hdCBkeDIgPSAwLjA7XG4iCi0gICAgIiAgeXV2LnggPSB0ZXh0dXJlMkQoWXRleCwgdl90ZXhjb29yZCAqIHRleF9zY2FsZTApLiVjO1xuIgotICAgICIgIGZsb2F0IGlub3JkZXIgPSBtb2QgKHZfdGV4Y29vcmQueCAqIHdpZHRoLCAyLjApO1xuIgotICAgICIgIGlmIChpbm9yZGVyIDwgMS4wKSB7XG4iCi0gICAgIiAgICBkeDIgPSAtZHgxO1xuIgotICAgICIgICAgZHgxID0gMC4wO1xuIgotICAgICIgIH1cbiIKLSAgICAiICB1dl90ZXhlbC5yZyA9IHRleHR1cmUyRChZdGV4LCB2X3RleGNvb3JkICogdGV4X3NjYWxlMCArIGR4MSkuciVjO1xuIgotICAgICIgIHV2X3RleGVsLmJhID0gdGV4dHVyZTJEKFl0ZXgsIHZfdGV4Y29vcmQgKiB0ZXhfc2NhbGUwICsgZHgyKS5yJWM7XG4iCi0gICAgIiAgeXV2Lnl6ID0gdXZfdGV4ZWwuJWMlYztcbiIKLSAgICAiICB5dXYgKz0gb2Zmc2V0O1xuIgotICAgICIgIHIgPSBkb3QoeXV2LCBjb2VmZjEpO1xuIgotICAgICIgIGcgPSBkb3QoeXV2LCBjb2VmZjIpO1xuIgotICAgICIgIGIgPSBkb3QoeXV2LCBjb2VmZjMpO1xuIgotICAgICIgIGEgPSAxLjA7XG4iCi0gICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCglYywgJWMsICVjLCAlYyk7XG4iCi0gICAgIn1cbiI7CitzdGF0aWMgY29uc3Qgc3RydWN0IHNoYWRlcl90ZW1wbCB0ZW1wbF9ZVVkyX1VZVllfdG9fUkdCID0KKyAgeyBOVUxMLAorICAgIERFRkFVTFRfVU5JRk9STVMgWVVWX1RPX1JHQl9DT0VGRklDSUVOVFMgInVuaWZvcm0gc2FtcGxlcjJEIFl0ZXg7XG4iLAorICAgIHsgZ2xzbF9mdW5jX3l1dl90b19yZ2IsIE5VTEwsIH0sCisgICAgInZlYzQgcmdiYSwgdXZfdGV4ZWw7XG4iCisgICAgInZlYzMgeXV2O1xuIgorICAgIC8qIEZJWE1FOiBzaG91bGQgZ2V0IHRoZSBzYW1wbGluZyByaWdodC4uLiAqLworICAgICJmbG9hdCBkeDEgPSAtcG9mZnNldF94O1xuIgorICAgICJmbG9hdCBkeDIgPSAwLjA7XG4iCisgICAgInl1di54ID0gdGV4dHVyZTJEKFl0ZXgsIHRleGNvb3JkICogdGV4X3NjYWxlMCkuJWM7XG4iCisgICAgLyogdl90ZXhjb29yZCBhcmUgbm9ybWFsaXplZCwgdGV4Y29vcmQgbWF5IG5vdCBiZSBlLmcuIHJlY3RhbmdsZSB0ZXh0dXJlcyAqLworICAgICJmbG9hdCBpbm9yZGVyID0gbW9kICh2X3RleGNvb3JkLnggKiB3aWR0aCwgMi4wKTtcbiIKKyAgICAiaWYgKGlub3JkZXIgPCAxLjApIHtcbiIKKyAgICAiICBkeDIgPSAtZHgxO1xuIgorICAgICIgIGR4MSA9IDAuMDtcbiIKKyAgICAifVxuIgorICAgICJ1dl90ZXhlbC5yZyA9IHRleHR1cmUyRChZdGV4LCB0ZXhjb29yZCAqIHRleF9zY2FsZTAgKyB2ZWMyKGR4MSwgMC4wKSkuciVjO1xuIgorICAgICJ1dl90ZXhlbC5iYSA9IHRleHR1cmUyRChZdGV4LCB0ZXhjb29yZCAqIHRleF9zY2FsZTAgKyB2ZWMyKGR4MiwgMC4wKSkuciVjO1xuIgorICAgICJ5dXYueXogPSB1dl90ZXhlbC4lYyVjO1xuIgorICAgICJyZ2JhLnJnYiA9IHl1dl90b19yZ2IgKHl1diwgb2Zmc2V0LCBjb2VmZjEsIGNvZWZmMiwgY29lZmYzKTtcbiIKKyAgICAicmdiYS5hID0gMS4wO1xuIgorICAgICJnbF9GcmFnQ29sb3IgPSB2ZWM0KHJnYmEuJWMscmdiYS4lYyxyZ2JhLiVjLHJnYmEuJWMpO1xuIiwKKyAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQKKyAgfTsKIAotc3RhdGljIGNvbnN0IGdjaGFyIGZyYWdfUkdCX3RvX1lVWTJfVVlWWVtdID0KLSAgICAiI2lmZGVmIEdMX0VTXG4iCi0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICIjZW5kaWZcbiIKLSAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCi0gICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIKLSAgICAidW5pZm9ybSBmbG9hdCB3aWR0aDtcbiIKLSAgICBSR0JfVE9fWVVWX0NPRUZGSUNJRU5UUwotICAgICJ2b2lkIG1haW4odm9pZCkge1xuIgotICAgICIgIHZlYzQgdGV4ZWwxLCB0ZXhlbDI7XG4iCi0gICAgIiAgdmVjMiB0ZXhlbDM7XG4iCi0gICAgIiAgZmxvYXQgZngsIGR4LCBmeSwgeSwgdSwgdTEsIHUyLCB2LCB2MSwgdjI7XG4iCi0gICAgIiAgZmxvYXQgaW5vcmRlciA9IG1vZCAodl90ZXhjb29yZC54ICogd2lkdGgsIDIuMCk7XG4iCi0gICAgIiAgZnggPSB2X3RleGNvb3JkLng7XG4iCi0gICAgIiAgZHggPSAxLjAgLyB3aWR0aDtcbiIKLSAgICAiICBpZiAodl90ZXhjb29yZC54ID49ICgxLjAgLSAwLjUgKiBkeCkgfHwgKHZfdGV4Y29vcmQueCA+IDAuNSAqIGR4ICYmIGlub3JkZXIgPCAxLjApKSB7XG4iCi0gICAgIiAgICBkeCA9IC1keDtcbiIKLSAgICAiICB9XG4iCi0gICAgIiAgZnkgPSB2X3RleGNvb3JkLnk7XG4iCi0gICAgIiAgdGV4ZWwxID0gdGV4dHVyZTJEKHRleCwgdmVjMihmeCwgZnkpKS4lYyVjJWMlYztcbiIKLSAgICAiICB0ZXhlbDIgPSB0ZXh0dXJlMkQodGV4LCB2ZWMyKGZ4ICsgZHgsIGZ5KSkuJWMlYyVjJWM7XG4iCi0gICAgIiAgeSA9IGRvdCh0ZXhlbDEucmdiLCBjb2VmZjEpO1xuIgotICAgICIgIHUxID0gZG90KHRleGVsMS5yZ2IsIGNvZWZmMik7XG4iCi0gICAgIiAgdTIgPSBkb3QodGV4ZWwyLnJnYiwgY29lZmYyKTtcbiIKLSAgICAiICB2MSA9IGRvdCh0ZXhlbDEucmdiLCBjb2VmZjMpO1xuIgotICAgICIgIHYyID0gZG90KHRleGVsMi5yZ2IsIGNvZWZmMyk7XG4iCi0gICAgIiAgeSArPSBvZmZzZXQueDtcbiIKLSAgICAiICB1MSArPSBvZmZzZXQueTtcbiIKLSAgICAiICB1MiArPSBvZmZzZXQueTtcbiIKLSAgICAiICB2MSArPSBvZmZzZXQuejtcbiIKLSAgICAiICB2MiArPSBvZmZzZXQuejtcbiIKLSAgICAiICB1ID0gKHUxICsgdTIpIC8gMi4wO1xuIgotICAgICIgIHYgPSAodjEgKyB2MikgLyAyLjA7XG4iCi0gICAgIiAgaWYgKGlub3JkZXIgPCAxLjApIHtcbiIKLSAgICAiICAgIHRleGVsMy5yID0lcztcbiIKLSAgICAiICAgIHRleGVsMy5nID0gJXM7XG4iCi0gICAgIiAgfSBlbHNlIHtcbiIKLSAgICAiICAgIHRleGVsMy5yID0lcztcbiIKLSAgICAiICAgIHRleGVsMy5nID0gJXM7XG4iCi0gICAgIiAgfVxuIgotICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQodGV4ZWwzLnIsIHRleGVsMy5nLCAwLjAsIDAuMCk7XG4iCi0gICAgIn1cbiI7CitzdGF0aWMgY29uc3Qgc3RydWN0IHNoYWRlcl90ZW1wbCB0ZW1wbF9SR0JfdG9fWVVZMl9VWVZZID0KKyAgeyBOVUxMLAorICAgIERFRkFVTFRfVU5JRk9STVMgUkdCX1RPX1lVVl9DT0VGRklDSUVOVFMgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIsCisgICAgeyBnbHNsX2Z1bmNfcmdiX3RvX3l1diwgTlVMTCwgfSwKKyAgICAidmVjNCB0ZXhlbDEsIHRleGVsMjtcbiIKKyAgICAidmVjMyB5dXYsIHl1djEsIHl1djI7XG4iCisgICAgImZsb2F0IGZ4LCBkeCwgZnk7XG4iCisgICAgLyogdl90ZXhjb29yZCBhcmUgbm9ybWFsaXplZCwgdGV4Y29vcmQgbWF5IG5vdCBiZSBlLmcuIHJlY3RhbmdsZSB0ZXh0dXJlcyAqLworICAgICJmbG9hdCBpbm9yZGVyID0gbW9kICh2X3RleGNvb3JkLnggKiB3aWR0aCwgMi4wKTtcbiIKKyAgICAiZnggPSB0ZXhjb29yZC54O1xuIgorICAgICJkeCA9IHBvZmZzZXRfeDtcbiIKKyAgICAiaWYgKGlub3JkZXIgPiAxLjApIHtcbiIKKyAgICAiICBkeCA9IC1keDtcbiIKKyAgICAifVxuIgorICAgICJmeSA9IHRleGNvb3JkLnk7XG4iCisgICAgInRleGVsMSA9IHRleHR1cmUyRCh0ZXgsIHZlYzIoZngsIGZ5KSkuJWMlYyVjJWM7XG4iCisgICAgInRleGVsMiA9IHRleHR1cmUyRCh0ZXgsIHZlYzIoZnggKyBkeCwgZnkpKS4lYyVjJWMlYztcbiIKKyAgICAieXV2MSA9IHJnYl90b195dXYgKHRleGVsMS5yZ2IsIG9mZnNldCwgY29lZmYxLCBjb2VmZjIsIGNvZWZmMyk7XG4iCisgICAgInl1djIgPSByZ2JfdG9feXV2ICh0ZXhlbDIucmdiLCBvZmZzZXQsIGNvZWZmMSwgY29lZmYyLCBjb2VmZjMpO1xuIgorICAgICJ5dXYueCA9IHl1djEueDtcbiIKKyAgICAieXV2Lnl6ID0gKHl1djEueXogKyB5dXYyLnl6KSAqIDAuNTtcbiIKKyAgICAiaWYgKGlub3JkZXIgPCAxLjApIHtcbiIKKyAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHl1di4lYywgeXV2LiVjLCAwLjAsIDAuMCk7XG4iCisgICAgIn0gZWxzZSB7XG4iCisgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh5dXYuJWMsIHl1di4lYywgMC4wLCAwLjApO1xuIgorICAgICJ9XG4iLAorICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRAorICB9OwogCiBzdGF0aWMgY29uc3QgZ2NoYXIgdGV4dF92ZXJ0ZXhfc2hhZGVyW10gPQogICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOyAgIFxuIgpAQCAtNDM0LDggKzM3MSw4IEBACiAgICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkOyAgICAgXG4iCiAgICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgXG4iCiAgICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgIiAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgXG4iCi0gICAgIiAgIHZfdGV4Y29vcmQgPSBhX3RleGNvb3JkOyAgXG4iCisgICAgIiAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyBcbiIKKyAgICAiICB2X3RleGNvb3JkID0gYV90ZXhjb29yZDsgIFxuIgogICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKIAogc3RhdGljIGNvbnN0IEdMZmxvYXQgdmVydGljZXNbXSA9IHsKQEAgLTQ1Myw2ICszOTAsOCBAQAogewogICBnaW50IGluX25fdGV4dHVyZXM7CiAgIGdpbnQgb3V0X25fdGV4dHVyZXM7CisgIGNvbnN0IHN0cnVjdCBzaGFkZXJfdGVtcGwgKnRlbXBsOworICBnY2hhciAqZnJhZ19ib2R5OwogICBnY2hhciAqZnJhZ19wcm9nOwogICBjb25zdCBnY2hhciAqc2hhZGVyX3RleF9uYW1lc1tHU1RfVklERU9fTUFYX1BMQU5FU107CiAgIGdmbG9hdCAqY21zX29mZnNldDsKQEAgLTQ2OCw2ICs0MDcsOSBAQAogCiAgIHN0cnVjdCBDb252ZXJ0SW5mbyBjb252ZXJ0X2luZm87CiAKKyAgR3N0R0xUZXh0dXJlVGFyZ2V0IGZyb21fdGV4dHVyZV90YXJnZXQ7CisgIEdzdEdMVGV4dHVyZVRhcmdldCB0b190ZXh0dXJlX3RhcmdldDsKKwogICBHc3RHTE1lbW9yeSAqaW5fdGV4W0dTVF9WSURFT19NQVhfUExBTkVTXTsKICAgR3N0R0xNZW1vcnkgKm91dF90ZXhbR1NUX1ZJREVPX01BWF9QTEFORVNdOwogCkBAIC00NzYsNiArNDE4LDEyIEBACiAgIEdMdWludCB2Ym9faW5kaWNlczsKICAgR0x1aW50IGF0dHJfcG9zaXRpb247CiAgIEdMdWludCBhdHRyX3RleHR1cmU7CisKKyAgR3N0Q2FwcyAqaW5fY2FwczsKKyAgR3N0Q2FwcyAqb3V0X2NhcHM7CisKKyAgR3N0QnVmZmVyUG9vbCAqcG9vbDsKKyAgZ2Jvb2xlYW4gcG9vbF9zdGFydGVkOwogfTsKIAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZGVidWcpOwpAQCAtNTkyLDExICs1NDAsMjggQEAKICAgY29udmVydC0+cHJpdi0+Y29udmVydF9pbmZvLmNocm9tYV9zYW1wbGluZ1swXSA9IDEuMGY7CiAgIGNvbnZlcnQtPnByaXYtPmNvbnZlcnRfaW5mby5jaHJvbWFfc2FtcGxpbmdbMV0gPSAxLjBmOwogCisgIGlmIChjb252ZXJ0LT5wcml2LT5jb252ZXJ0X2luZm8uZnJhZ19wcm9nKSB7CisgICAgZ19mcmVlIChjb252ZXJ0LT5wcml2LT5jb252ZXJ0X2luZm8uZnJhZ19wcm9nKTsKKyAgICBjb252ZXJ0LT5wcml2LT5jb252ZXJ0X2luZm8uZnJhZ19wcm9nID0gTlVMTDsKKyAgfQorICBpZiAoY29udmVydC0+cHJpdi0+Y29udmVydF9pbmZvLmZyYWdfYm9keSkgeworICAgIGdfZnJlZSAoY29udmVydC0+cHJpdi0+Y29udmVydF9pbmZvLmZyYWdfYm9keSk7CisgICAgY29udmVydC0+cHJpdi0+Y29udmVydF9pbmZvLmZyYWdfYm9keSA9IE5VTEw7CisgIH0KICAgaWYgKGNvbnZlcnQtPnNoYWRlcikgewogICAgIGdzdF9vYmplY3RfdW5yZWYgKGNvbnZlcnQtPnNoYWRlcik7CiAgICAgY29udmVydC0+c2hhZGVyID0gTlVMTDsKICAgfQogCisgIGlmIChjb252ZXJ0LT5wcml2LT5wb29sKSB7CisgICAgY29udmVydC0+cHJpdi0+cG9vbF9zdGFydGVkID0gRkFMU0U7CisKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChjb252ZXJ0LT5wcml2LT5wb29sKTsKKyAgICBjb252ZXJ0LT5wcml2LT5wb29sID0gTlVMTDsKKyAgfQorICBnc3RfY2Fwc19yZXBsYWNlICgmY29udmVydC0+cHJpdi0+aW5fY2FwcywgTlVMTCk7CisgIGdzdF9jYXBzX3JlcGxhY2UgKCZjb252ZXJ0LT5wcml2LT5vdXRfY2FwcywgTlVMTCk7CisKICAgaWYgKGNvbnZlcnQtPmNvbnRleHQpIHsKICAgICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChjb252ZXJ0LT5jb250ZXh0LAogICAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX3Jlc2V0X2dsLCBjb252ZXJ0KTsKQEAgLTYwNCw3ICs1NjksOCBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KLV9nc3RfZ2xfY29sb3JfY29udmVydF9jYW5fcGFzc3Rocm91Z2ggKEdzdFZpZGVvSW5mbyAqIGluLCBHc3RWaWRlb0luZm8gKiBvdXQpCitfZ3N0X2dsX2NvbG9yX2NvbnZlcnRfY2FuX3Bhc3N0aHJvdWdoX2luZm8gKEdzdFZpZGVvSW5mbyAqIGluLAorICAgIEdzdFZpZGVvSW5mbyAqIG91dCkKIHsKICAgZ2ludCBpOwogCkBAIC02MzgsNiArNjA0LDggQEAKIHsKICAgR3N0VmlkZW9JbmZvIGluX2luZm8sIG91dF9pbmZvOwogICBHc3RDYXBzRmVhdHVyZXMgKmluX2ZlYXR1cmVzLCAqb3V0X2ZlYXR1cmVzOworICBHc3RHTFRleHR1cmVUYXJnZXQgZnJvbV90YXJnZXQsIHRvX3RhcmdldDsKKyAgZ2Jvb2xlYW4gcGFzc3Rocm91Z2g7CiAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbnZlcnQgIT0gTlVMTCwgRkFMU0UpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAoaW5fY2FwcywgRkFMU0UpOwpAQCAtNjcxLDE4ICs2MzksNjggQEAKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KIAorICB7CisgICAgR3N0U3RydWN0dXJlICppbl9zID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoaW5fY2FwcywgMCk7CisgICAgR3N0U3RydWN0dXJlICpvdXRfcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKG91dF9jYXBzLCAwKTsKKworICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19maWVsZF90eXBlZCAoaW5fcywgInRleHR1cmUtdGFyZ2V0IiwgR19UWVBFX1NUUklORykpCisgICAgICBmcm9tX3RhcmdldCA9CisgICAgICAgICAgZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nIChnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKGluX3MsCisgICAgICAgICAgICAgICJ0ZXh0dXJlLXRhcmdldCIpKTsKKyAgICBlbHNlCisgICAgICBmcm9tX3RhcmdldCA9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDsKKworICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19maWVsZF90eXBlZCAob3V0X3MsICJ0ZXh0dXJlLXRhcmdldCIsIEdfVFlQRV9TVFJJTkcpKQorICAgICAgdG9fdGFyZ2V0ID0KKyAgICAgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmcgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAob3V0X3MsCisgICAgICAgICAgICAgICJ0ZXh0dXJlLXRhcmdldCIpKTsKKyAgICBlbHNlCisgICAgICB0b190YXJnZXQgPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ7CisKKyAgICBpZiAodG9fdGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FCisgICAgICAgIHx8IGZyb21fdGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FKQorICAgICAgLyogaW52YWxpZCBjYXBzICovCisgICAgICByZXR1cm4gRkFMU0U7CisgIH0KKwogICBpZiAoZ3N0X3ZpZGVvX2luZm9faXNfZXF1YWwgKCZjb252ZXJ0LT5pbl9pbmZvLCAmaW5faW5mbykgJiYKLSAgICAgIGdzdF92aWRlb19pbmZvX2lzX2VxdWFsICgmY29udmVydC0+b3V0X2luZm8sICZvdXRfaW5mbykpCisgICAgICBnc3RfdmlkZW9faW5mb19pc19lcXVhbCAoJmNvbnZlcnQtPm91dF9pbmZvLCAmb3V0X2luZm8pICYmCisgICAgICBjb252ZXJ0LT5wcml2LT5mcm9tX3RleHR1cmVfdGFyZ2V0ID09IGZyb21fdGFyZ2V0ICYmCisgICAgICBjb252ZXJ0LT5wcml2LT50b190ZXh0dXJlX3RhcmdldCA9PSB0b190YXJnZXQpCiAgICAgcmV0dXJuIFRSVUU7CiAKKyAgLyogSWYgaW5wdXQgYW5kIG91dHB1dCBhcmUgaWRlbnRpY2FsLCBwYXNzIHRocm91Z2ggZGlyZWN0bHkgKi8KKyAgcGFzc3Rocm91Z2ggPQorICAgICAgX2dzdF9nbF9jb2xvcl9jb252ZXJ0X2Nhbl9wYXNzdGhyb3VnaF9pbmZvICgmaW5faW5mbywgJm91dF9pbmZvKSAmJgorICAgICAgZnJvbV90YXJnZXQgPT0gdG9fdGFyZ2V0OworCisgIGlmICghcGFzc3Rocm91Z2ggJiYgdG9fdGFyZ2V0ICE9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRAorICAgICAgJiYgdG9fdGFyZ2V0ICE9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpCisgICAgcmV0dXJuIEZBTFNFOworCisgIHsKKyAgICBndWludCB5dXZfZ3JheV9mbGFncywgaW5fZmxhZ3MsIG91dF9mbGFnczsKKworICAgIGluX2ZsYWdzID0gR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX0ZMQUdTIChpbl9pbmZvLmZpbmZvKTsKKyAgICBvdXRfZmxhZ3MgPSBHU1RfVklERU9fRk9STUFUX0lORk9fRkxBR1MgKG91dF9pbmZvLmZpbmZvKTsKKyAgICB5dXZfZ3JheV9mbGFncyA9IEdTVF9WSURFT19GT1JNQVRfRkxBR19ZVVYgfCBHU1RfVklERU9fRk9STUFUX0ZMQUdfR1JBWTsKKworICAgIC8qIEdSQVkvWVVWIC0+IEdSQVkvWVVWIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG5vbi1wYXNzdGhyb3VnaCAqLworICAgIGlmICghcGFzc3Rocm91Z2ggJiYgKGluX2ZsYWdzICYgeXV2X2dyYXlfZmxhZ3MpICE9IDAKKyAgICAgICAgJiYgKG91dF9mbGFncyAmIHl1dl9ncmF5X2ZsYWdzKSAhPSAwKQorICAgICAgcmV0dXJuIEZBTFNFOworICB9CisKICAgZ3N0X2dsX2NvbG9yX2NvbnZlcnRfcmVzZXQgKGNvbnZlcnQpOwogICBjb252ZXJ0LT5pbl9pbmZvID0gaW5faW5mbzsKICAgY29udmVydC0+b3V0X2luZm8gPSBvdXRfaW5mbzsKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJmNvbnZlcnQtPnByaXYtPmluX2NhcHMsIGluX2NhcHMpOworICBnc3RfY2Fwc19yZXBsYWNlICgmY29udmVydC0+cHJpdi0+b3V0X2NhcHMsIG91dF9jYXBzKTsKKyAgY29udmVydC0+cHJpdi0+ZnJvbV90ZXh0dXJlX3RhcmdldCA9IGZyb21fdGFyZ2V0OworICBjb252ZXJ0LT5wcml2LT50b190ZXh0dXJlX3RhcmdldCA9IHRvX3RhcmdldDsKICAgY29udmVydC0+aW5pdHRlZCA9IEZBTFNFOwogCi0gIC8qIElmIGlucHV0IGFuZCBvdXRwdXQgYXJlIGlkZW50aWNhbCwgcGFzcyB0aHJvdWdoIGRpcmVjdGx5ICovCi0gIGNvbnZlcnQtPnBhc3N0aHJvdWdoID0KLSAgICAgIF9nc3RfZ2xfY29sb3JfY29udmVydF9jYW5fcGFzc3Rocm91Z2ggKCZpbl9pbmZvLCAmb3V0X2luZm8pOworICBjb252ZXJ0LT5wYXNzdGhyb3VnaCA9IHBhc3N0aHJvdWdoOwogI2lmbmRlZiBHU1RfRElTQUJMRV9HU1RfREVCVUcKICAgaWYgKEdfVU5MSUtFTFkgKGNvbnZlcnQtPnBhc3N0aHJvdWdoKSkKICAgICBHU1RfREVCVUdfT0JKRUNUIChjb252ZXJ0LApAQCAtNzE3LDM1ICs3MzUsMTg0IEBACiAgIHJldHVybiByZXQ7CiB9CiAKK2dib29sZWFuCitnc3RfZ2xfY29sb3JfY29udmVydF9kZWNpZGVfYWxsb2NhdGlvbiAoR3N0R0xDb2xvckNvbnZlcnQgKiBjb252ZXJ0LAorICAgIEdzdFF1ZXJ5ICogcXVlcnkpCit7CisgIEdzdEJ1ZmZlclBvb2wgKnBvb2wgPSBOVUxMOworICBHc3RTdHJ1Y3R1cmUgKmNvbmZpZzsKKyAgR3N0Q2FwcyAqY2FwczsKKyAgZ3VpbnQgbWluLCBtYXgsIHNpemUsIG4sIGk7CisgIGdib29sZWFuIHVwZGF0ZV9wb29sOworICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOworICBHc3RWaWRlb0luZm8gdmluZm87CisKKyAgZ3N0X3F1ZXJ5X3BhcnNlX2FsbG9jYXRpb24gKHF1ZXJ5LCAmY2FwcywgTlVMTCk7CisgIGlmICghY2FwcykKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmdmluZm8sIGNhcHMpOworCisgIG4gPSBnc3RfcXVlcnlfZ2V0X25fYWxsb2NhdGlvbl9wb29scyAocXVlcnkpOworICBpZiAobiA+IDApIHsKKyAgICB1cGRhdGVfcG9vbCA9IFRSVUU7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgZ3N0X3F1ZXJ5X3BhcnNlX250aF9hbGxvY2F0aW9uX3Bvb2wgKHF1ZXJ5LCBpLCAmcG9vbCwgJnNpemUsICZtaW4sICZtYXgpOworCisgICAgICBpZiAoIXBvb2wgfHwgIUdTVF9JU19HTF9CVUZGRVJfUE9PTCAocG9vbCkpIHsKKyAgICAgICAgaWYgKHBvb2wpCisgICAgICAgICAgZ3N0X29iamVjdF91bnJlZiAocG9vbCk7CisgICAgICAgIHBvb2wgPSBOVUxMOworICAgICAgfQorICAgIH0KKyAgfQorCisgIGlmICghcG9vbCkgeworICAgIEdzdFZpZGVvSW5mbyB2aW5mbzsKKworICAgIGdzdF92aWRlb19pbmZvX2luaXQgKCZ2aW5mbyk7CisgICAgc2l6ZSA9IHZpbmZvLnNpemU7CisgICAgbWluID0gbWF4ID0gMDsKKyAgICB1cGRhdGVfcG9vbCA9IEZBTFNFOworICB9CisKKyAgaWYgKCFwb29sKQorICAgIHBvb2wgPSBnc3RfZ2xfYnVmZmVyX3Bvb2xfbmV3IChjb252ZXJ0LT5jb250ZXh0KTsKKworICBjb25maWcgPSBnc3RfYnVmZmVyX3Bvb2xfZ2V0X2NvbmZpZyAocG9vbCk7CisKKyAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfcGFyYW1zIChjb25maWcsIGNhcHMsIHNpemUsIG1pbiwgbWF4KTsKKyAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19hZGRfb3B0aW9uIChjb25maWcsIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fVklERU9fTUVUQSk7CisgIGlmIChnc3RfcXVlcnlfZmluZF9hbGxvY2F0aW9uX21ldGEgKHF1ZXJ5LCBHU1RfR0xfU1lOQ19NRVRBX0FQSV9UWVBFLCBOVUxMKSkKKyAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2FkZF9vcHRpb24gKGNvbmZpZywKKyAgICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9TWU5DX01FVEEpOworCisgIHBhcmFtcyA9IGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXcgKGNvbnZlcnQtPmNvbnRleHQsIE5VTEwsICZ2aW5mbywKKyAgICAgIDAsIE5VTEwsIGNvbnZlcnQtPnByaXYtPnRvX3RleHR1cmVfdGFyZ2V0KTsKKyAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXMgKGNvbmZpZywKKyAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKyAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKworICBpZiAoIWdzdF9idWZmZXJfcG9vbF9zZXRfY29uZmlnIChwb29sLCBjb25maWcpKQorICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoY29udmVydCwgIkZhaWxlZCB0byBzZXQgYnVmZmVyIHBvb2wgY29uZmlnIik7CisKKyAgaWYgKHVwZGF0ZV9wb29sKQorICAgIGdzdF9xdWVyeV9zZXRfbnRoX2FsbG9jYXRpb25fcG9vbCAocXVlcnksIDAsIHBvb2wsIHNpemUsIG1pbiwgbWF4KTsKKyAgZWxzZQorICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9wb29sIChxdWVyeSwgcG9vbCwgc2l6ZSwgbWluLCBtYXgpOworCisgIGlmIChjb252ZXJ0LT5wcml2LT5wb29sKSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoY29udmVydC0+cHJpdi0+cG9vbCk7CisgICAgY29udmVydC0+cHJpdi0+cG9vbF9zdGFydGVkID0gRkFMU0U7CisgIH0KKyAgY29udmVydC0+cHJpdi0+cG9vbCA9IHBvb2w7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitfaW5pdF92YWx1ZV9zdHJpbmdfbGlzdCAoR1ZhbHVlICogbGlzdCwgLi4uKQoreworICBHVmFsdWUgaXRlbSA9IEdfVkFMVUVfSU5JVDsKKyAgZ2NoYXIgKnN0cjsKKyAgdmFfbGlzdCBhcmdzOworCisgIGdfdmFsdWVfaW5pdCAobGlzdCwgR1NUX1RZUEVfTElTVCk7CisKKyAgdmFfc3RhcnQgKGFyZ3MsIGxpc3QpOworICB3aGlsZSAoKHN0ciA9IHZhX2FyZyAoYXJncywgZ2NoYXIgKikpKSB7CisgICAgZ192YWx1ZV9pbml0ICgmaXRlbSwgR19UWVBFX1NUUklORyk7CisgICAgZ192YWx1ZV9zZXRfc3RyaW5nICgmaXRlbSwgc3RyKTsKKworICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAobGlzdCwgJml0ZW0pOworICAgIGdfdmFsdWVfdW5zZXQgKCZpdGVtKTsKKyAgfQorICB2YV9lbmQgKGFyZ3MpOworfQorCiAvKiBjb3BpZXMgdGhlIGdpdmVuIGNhcHMgKi8KIHN0YXRpYyBHc3RDYXBzICoKLWdzdF9nbF9jb2xvcl9jb252ZXJ0X2NhcHNfcmVtb3ZlX2Zvcm1hdF9pbmZvIChHc3RDYXBzICogY2FwcykKK2dzdF9nbF9jb2xvcl9jb252ZXJ0X2NhcHNfdHJhbnNmb3JtX2Zvcm1hdF9pbmZvIChHc3RDYXBzICogY2FwcykKIHsKICAgR3N0U3RydWN0dXJlICpzdDsKICAgR3N0Q2Fwc0ZlYXR1cmVzICpmOwogICBnaW50IGksIG47CiAgIEdzdENhcHMgKnJlczsKKyAgR1ZhbHVlIHJnYl9mb3JtYXRzID0gR19WQUxVRV9JTklUOworCisgIF9pbml0X3ZhbHVlX3N0cmluZ19saXN0ICgmcmdiX2Zvcm1hdHMsICJSR0JBIiwgIkFSR0IiLCAiQkdSQSIsICJBQkdSIiwgIlJHQngiLAorICAgICAgInhSR0IiLCAiQkdSeCIsICJ4QkdSIiwgIlJHQiIsICJCR1IiLCBOVUxMKTsKIAogICByZXMgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7CiAKICAgbiA9IGdzdF9jYXBzX2dldF9zaXplIChjYXBzKTsKICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgIGNvbnN0IEdWYWx1ZSAqZm9ybWF0OworCiAgICAgc3QgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCBpKTsKICAgICBmID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChjYXBzLCBpKTsKIAotICAgIC8qIElmIHRoaXMgaXMgYWxyZWFkeSBleHByZXNzZWQgYnkgdGhlIGV4aXN0aW5nIGNhcHMKLSAgICAgKiBza2lwIHRoaXMgc3RydWN0dXJlICovCi0gICAgaWYgKGkgPiAwICYmIGdzdF9jYXBzX2lzX3N1YnNldF9zdHJ1Y3R1cmVfZnVsbCAocmVzLCBzdCwgZikpCi0gICAgICBjb250aW51ZTsKLQorICAgIGZvcm1hdCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChzdCwgImZvcm1hdCIpOwogICAgIHN0ID0gZ3N0X3N0cnVjdHVyZV9jb3B5IChzdCk7Ci0gICAgZ3N0X3N0cnVjdHVyZV9yZW1vdmVfZmllbGRzIChzdCwgImZvcm1hdCIsICJjb2xvcmltZXRyeSIsICJjaHJvbWEtc2l0ZSIsCi0gICAgICAgIE5VTEwpOworICAgIGlmIChHU1RfVkFMVUVfSE9MRFNfTElTVCAoZm9ybWF0KSkgeworICAgICAgZ2Jvb2xlYW4gaGF2ZV9yZ2JfZm9ybWF0cyA9IEZBTFNFOworICAgICAgR1ZhbHVlIHBhc3N0aHJvdWdoX2Zvcm1hdHMgPSBHX1ZBTFVFX0lOSVQ7CisgICAgICBnaW50IGosIGxlbjsKIAotICAgIGdzdF9jYXBzX2FwcGVuZF9zdHJ1Y3R1cmVfZnVsbCAocmVzLCBzdCwKLSAgICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfbmV3IChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksIE5VTEwpKTsKKyAgICAgIGdfdmFsdWVfaW5pdCAoJnBhc3N0aHJvdWdoX2Zvcm1hdHMsIEdTVF9UWVBFX0xJU1QpOworICAgICAgbGVuID0gZ3N0X3ZhbHVlX2xpc3RfZ2V0X3NpemUgKGZvcm1hdCk7CisgICAgICBmb3IgKGogPSAwOyBqIDwgbGVuOyBqKyspIHsKKyAgICAgICAgY29uc3QgR1ZhbHVlICp2YWw7CisKKyAgICAgICAgdmFsID0gZ3N0X3ZhbHVlX2xpc3RfZ2V0X3ZhbHVlIChmb3JtYXQsIGopOworICAgICAgICBpZiAoR19WQUxVRV9IT0xEU19TVFJJTkcgKHZhbCkpIHsKKyAgICAgICAgICBjb25zdCBnY2hhciAqZm9ybWF0X3N0ciA9IGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsKTsKKyAgICAgICAgICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdCA9IGdzdF92aWRlb19mb3JtYXRfZnJvbV9zdHJpbmcgKGZvcm1hdF9zdHIpOworICAgICAgICAgIGNvbnN0IEdzdFZpZGVvRm9ybWF0SW5mbyAqdF9pbmZvID0KKyAgICAgICAgICAgICAgZ3N0X3ZpZGVvX2Zvcm1hdF9nZXRfaW5mbyAodl9mb3JtYXQpOworICAgICAgICAgIGlmIChHU1RfVklERU9fRk9STUFUX0lORk9fRkxBR1MgKHRfaW5mbykgJiAoR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX1lVVgorICAgICAgICAgICAgICAgICAgfCBHU1RfVklERU9fRk9STUFUX0ZMQUdfR1JBWSkpIHsKKyAgICAgICAgICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJnBhc3N0aHJvdWdoX2Zvcm1hdHMsIHZhbCk7CisgICAgICAgICAgfSBlbHNlIGlmIChHU1RfVklERU9fRk9STUFUX0lORk9fRkxBR1MgKHRfaW5mbykgJgorICAgICAgICAgICAgICBHU1RfVklERU9fRk9STUFUX0ZMQUdfUkdCKSB7CisgICAgICAgICAgICBoYXZlX3JnYl9mb3JtYXRzID0gVFJVRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgaWYgKGhhdmVfcmdiX2Zvcm1hdHMpIHsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9yZW1vdmVfZmllbGRzIChzdCwgImZvcm1hdCIsIE5VTEwpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgLyogYWRkIHBhc3N0aHJvdWdoIHN0cnVjdHVyZSwgdGhlbiB0aGUgcmdiIGNvbnZlcnNpb24gc3RydWN0dXJlICovCisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzdCwgImZvcm1hdCIsICZwYXNzdGhyb3VnaF9mb3JtYXRzKTsKKyAgICAgICAgZ3N0X2NhcHNfYXBwZW5kX3N0cnVjdHVyZV9mdWxsIChyZXMsIGdzdF9zdHJ1Y3R1cmVfY29weSAoc3QpLAorICAgICAgICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfY29weSAoZikpOworICAgICAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAoc3QsICJmb3JtYXQiLCAmcmdiX2Zvcm1hdHMpOworICAgICAgfQorICAgICAgZ192YWx1ZV91bnNldCAoJnBhc3N0aHJvdWdoX2Zvcm1hdHMpOworICAgIH0gZWxzZSBpZiAoR19WQUxVRV9IT0xEU19TVFJJTkcgKGZvcm1hdCkpIHsKKyAgICAgIGNvbnN0IGdjaGFyICpmb3JtYXRfc3RyID0gZ192YWx1ZV9nZXRfc3RyaW5nIChmb3JtYXQpOworICAgICAgR3N0VmlkZW9Gb3JtYXQgdl9mb3JtYXQgPSBnc3RfdmlkZW9fZm9ybWF0X2Zyb21fc3RyaW5nIChmb3JtYXRfc3RyKTsKKyAgICAgIGNvbnN0IEdzdFZpZGVvRm9ybWF0SW5mbyAqdF9pbmZvID0gZ3N0X3ZpZGVvX2Zvcm1hdF9nZXRfaW5mbyAodl9mb3JtYXQpOworICAgICAgaWYgKEdTVF9WSURFT19GT1JNQVRfSU5GT19GTEFHUyAodF9pbmZvKSAmIChHU1RfVklERU9fRk9STUFUX0ZMQUdfWVVWIHwKKyAgICAgICAgICAgICAgR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX0dSQVkpKSB7CisgICAgICAgIC8qIGFkZCBwYXNzdGhyb3VnaCBzdHJ1Y3R1cmUsIHRoZW4gdGhlIHJnYiBjb252ZXJzaW9uIHN0cnVjdHVyZSAqLworICAgICAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAoc3QsICJmb3JtYXQiLCBmb3JtYXQpOworICAgICAgICBnc3RfY2Fwc19hcHBlbmRfc3RydWN0dXJlX2Z1bGwgKHJlcywgZ3N0X3N0cnVjdHVyZV9jb3B5IChzdCksCisgICAgICAgICAgICBnc3RfY2Fwc19mZWF0dXJlc19jb3B5IChmKSk7CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzdCwgImZvcm1hdCIsICZyZ2JfZm9ybWF0cyk7CisgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgIC8qIFJHQiAqLworICAgICAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZHMgKHN0LCAiZm9ybWF0IiwgTlVMTCk7CisgICAgICB9CisgICAgfQorICAgIGdzdF9zdHJ1Y3R1cmVfcmVtb3ZlX2ZpZWxkcyAoc3QsICJjb2xvcmltZXRyeSIsICJjaHJvbWEtc2l0ZSIsCisgICAgICAgICJ0ZXh0dXJlLXRhcmdldCIsIE5VTEwpOworCisgICAgZ3N0X2NhcHNfYXBwZW5kX3N0cnVjdHVyZV9mdWxsIChyZXMsIHN0LCBnc3RfY2Fwc19mZWF0dXJlc19jb3B5IChmKSk7CiAgIH0KIAorICBnX3ZhbHVlX3Vuc2V0ICgmcmdiX2Zvcm1hdHMpOworCiAgIHJldHVybiByZXM7CiB9CiAKQEAgLTc1MywyNiArOTIwLDI1MCBAQAogZ3N0X2dsX2NvbG9yX2NvbnZlcnRfdHJhbnNmb3JtX2NhcHMgKEdzdEdMQ29udGV4dCAqIGNvbnZlcnQsCiAgICAgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyAqIGNhcHMsIEdzdENhcHMgKiBmaWx0ZXIpCiB7Ci0gIEdzdENhcHMgKnRlbXBsLCAqcmVzdWx0OwotCi0gIHRlbXBsID0KLSAgICAgIGdzdF9jYXBzX2Zyb21fc3RyaW5nIChHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKLSAgICAgIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksIEdTVF9HTF9DT0xPUl9DT05WRVJUX0ZPUk1BVFMpKTsKLQotICBjYXBzID0gZ3N0X2dsX2NvbG9yX2NvbnZlcnRfY2Fwc19yZW1vdmVfZm9ybWF0X2luZm8gKGNhcHMpOwotCi0gIHJlc3VsdCA9IGdzdF9jYXBzX2ludGVyc2VjdCAoY2FwcywgdGVtcGwpOwotICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gIGdzdF9jYXBzX3VucmVmICh0ZW1wbCk7Ci0KLSAgcmVzdWx0ID0gZ3N0X2dsX292ZXJsYXlfY29tcG9zaXRvcl9hZGRfY2FwcyAocmVzdWx0KTsKKyAgY2FwcyA9IGdzdF9nbF9jb2xvcl9jb252ZXJ0X2NhcHNfdHJhbnNmb3JtX2Zvcm1hdF9pbmZvIChjYXBzKTsKIAogICBpZiAoZmlsdGVyKSB7CiAgICAgR3N0Q2FwcyAqdG1wOwogCi0gICAgdG1wID0gZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGZpbHRlciwgcmVzdWx0LCBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOworICAgIHRtcCA9IGdzdF9jYXBzX2ludGVyc2VjdF9mdWxsIChmaWx0ZXIsIGNhcHMsIEdTVF9DQVBTX0lOVEVSU0VDVF9GSVJTVCk7CisgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworICAgIGNhcHMgPSB0bXA7CisgIH0KKworICByZXR1cm4gY2FwczsKK30KKworLyogZml4YXRpb24gZnJvbSB2aWRlb2NvbnZlcnQgKi8KKyNkZWZpbmUgU0NPUkVfRk9STUFUX0NIQU5HRSAgICAgICAgICAgICAxCisjZGVmaW5lIFNDT1JFX0RFUFRIX0NIQU5HRSAgICAgICAgICAgICAgMQorI2RlZmluZSBTQ09SRV9BTFBIQV9DSEFOR0UgICAgICAgICAgICAgIDEKKyNkZWZpbmUgU0NPUkVfQ0hST01BX1dfQ0hBTkdFICAgICAgICAgICAxCisjZGVmaW5lIFNDT1JFX0NIUk9NQV9IX0NIQU5HRSAgICAgICAgICAgMQorI2RlZmluZSBTQ09SRV9QQUxFVFRFX0NIQU5HRSAgICAgICAgICAgIDEKKworI2RlZmluZSBTQ09SRV9DT0xPUlNQQUNFX0xPU1MgICAgICAgICAgIDIgICAgICAgLyogUkdCIDwtPiBZVVYgKi8KKyNkZWZpbmUgU0NPUkVfREVQVEhfTE9TUyAgICAgICAgICAgICAgICA0ICAgICAgIC8qIGNoYW5nZSBiaXQgZGVwdGggKi8KKyNkZWZpbmUgU0NPUkVfQUxQSEFfTE9TUyAgICAgICAgICAgICAgICA4ICAgICAgIC8qIGxvc2UgdGhlIGFscGhhIGNoYW5uZWwgKi8KKyNkZWZpbmUgU0NPUkVfQ0hST01BX1dfTE9TUyAgICAgICAgICAgICAxNiAgICAgIC8qIHZlcnRpY2FsIHN1YnNhbXBsZSAqLworI2RlZmluZSBTQ09SRV9DSFJPTUFfSF9MT1NTICAgICAgICAgICAgIDMyICAgICAgLyogaG9yaXpvbnRhbCBzdWJzYW1wbGUgKi8KKyNkZWZpbmUgU0NPUkVfUEFMRVRURV9MT1NTICAgICAgICAgICAgICA2NCAgICAgIC8qIGNvbnZlcnQgdG8gcGFsZXR0ZSBmb3JtYXQgKi8KKyNkZWZpbmUgU0NPUkVfQ09MT1JfTE9TUyAgICAgICAgICAgICAgICAxMjggICAgIC8qIGNvbnZlcnQgdG8gR1JBWSAqLworCisjZGVmaW5lIENPTE9SU1BBQ0VfTUFTSyAoR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX1lVViB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHU1RfVklERU9fRk9STUFUX0ZMQUdfUkdCIHwgR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX0dSQVkpCisjZGVmaW5lIEFMUEhBX01BU0sgICAgICAoR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX0FMUEhBKQorI2RlZmluZSBQQUxFVFRFX01BU0sgICAgKEdTVF9WSURFT19GT1JNQVRfRkxBR19QQUxFVFRFKQorCitzdGF0aWMgR3N0R0xUZXh0dXJlVGFyZ2V0CitfdGV4dHVyZV90YXJnZXRfZGVtYXNrIChndWludCB0YXJnZXRfbWFzaykKK3sKKyAgaWYgKHRhcmdldF9tYXNrICYgKDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKSkgeworICAgIHJldHVybiBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ7CisgIH0KKyAgaWYgKHRhcmdldF9tYXNrICYgKDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSkpIHsKKyAgICByZXR1cm4gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRTsKKyAgfQorICBpZiAodGFyZ2V0X21hc2sgJiAoMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKSkgeworICAgIHJldHVybiBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTOworICB9CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIGNhbGN1bGF0ZSBob3cgbXVjaCBsb3NzIGEgY29udmVyc2lvbiB3b3VsZCBiZSAqLworc3RhdGljIHZvaWQKK3Njb3JlX2Zvcm1hdF90YXJnZXQgKGNvbnN0IEdzdFZpZGVvRm9ybWF0SW5mbyAqIGluX2luZm8sIGd1aW50IHRhcmdldHNfbWFzaywKKyAgICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdCwgZ3VpbnQgb3RoZXJfdGFyZ2V0c19tYXNrLCBnaW50ICogbWluX2xvc3MsCisgICAgY29uc3QgR3N0VmlkZW9Gb3JtYXRJbmZvICoqIG91dF9pbmZvLCBHc3RHTFRleHR1cmVUYXJnZXQgKiByZXN1bHQpCit7CisgIGNvbnN0IEdzdFZpZGVvRm9ybWF0SW5mbyAqdF9pbmZvOworICBHc3RWaWRlb0Zvcm1hdEZsYWdzIGluX2ZsYWdzLCB0X2ZsYWdzOworICBnaW50IGxvc3M7CisKKyAgdF9pbmZvID0gZ3N0X3ZpZGVvX2Zvcm1hdF9nZXRfaW5mbyAodl9mb3JtYXQpOworICBpZiAoIXRfaW5mbykKKyAgICByZXR1cm47CisKKyAgLyogYWNjZXB0IGlucHV0IGZvcm1hdCBpbW1lZGlhdGVseSB3aXRob3V0IGxvc3MgKi8KKyAgaWYgKGluX2luZm8gPT0gdF9pbmZvICYmICh0YXJnZXRzX21hc2sgJiBvdGhlcl90YXJnZXRzX21hc2spICE9IDApIHsKKyAgICAqbWluX2xvc3MgPSAwOworICAgICpvdXRfaW5mbyA9IHRfaW5mbzsKKyAgICAqcmVzdWx0ID0gX3RleHR1cmVfdGFyZ2V0X2RlbWFzayAodGFyZ2V0c19tYXNrICYgb3RoZXJfdGFyZ2V0c19tYXNrKTsKKyAgICByZXR1cm47CisgIH0KKworICAvKiBjYW4gb25seSBwYXNzdGhyb3VnaCBleHRlcm5hbC1vZXMgdGV4dHVyZXMgKi8KKyAgb3RoZXJfdGFyZ2V0c19tYXNrICY9IH4oMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKTsKKyAgaWYgKG90aGVyX3RhcmdldHNfbWFzayA9PSAwKQorICAgIHJldHVybjsKKyAgLyogdHJ5IHRvIGtlZXAgdGhlIHNhbWUgdGFyZ2V0ICovCisgIGlmICh0YXJnZXRzX21hc2sgJiBvdGhlcl90YXJnZXRzX21hc2spCisgICAgb3RoZXJfdGFyZ2V0c19tYXNrID0gdGFyZ2V0c19tYXNrICYgb3RoZXJfdGFyZ2V0c19tYXNrOworCisgIGxvc3MgPSBTQ09SRV9GT1JNQVRfQ0hBTkdFOworCisgIGluX2ZsYWdzID0gR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX0ZMQUdTIChpbl9pbmZvKTsKKyAgaW5fZmxhZ3MgJj0gfkdTVF9WSURFT19GT1JNQVRfRkxBR19MRTsKKyAgaW5fZmxhZ3MgJj0gfkdTVF9WSURFT19GT1JNQVRfRkxBR19DT01QTEVYOworICBpbl9mbGFncyAmPSB+R1NUX1ZJREVPX0ZPUk1BVF9GTEFHX1VOUEFDSzsKKworICB0X2ZsYWdzID0gR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX0ZMQUdTICh0X2luZm8pOworICB0X2ZsYWdzICY9IH5HU1RfVklERU9fRk9STUFUX0ZMQUdfTEU7CisgIHRfZmxhZ3MgJj0gfkdTVF9WSURFT19GT1JNQVRfRkxBR19DT01QTEVYOworICB0X2ZsYWdzICY9IH5HU1RfVklERU9fRk9STUFUX0ZMQUdfVU5QQUNLOworCisgIC8qIEdSQVkvWVVWIC0+IEdSQVkvWVVWIGlzIG5vdCBzdXBwb3J0ZWQgKi8KKyAgaWYgKChpbl9mbGFncyAmIChHU1RfVklERU9fRk9STUFUX0ZMQUdfWVVWIHwgR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX0dSQVkpKSAhPSAwCisgICAgICAmJiAodF9mbGFncyAmIChHU1RfVklERU9fRk9STUFUX0ZMQUdfWVVWIHwgR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX0dSQVkpKSAhPQorICAgICAgMCkKKyAgICByZXR1cm47CisKKyAgaWYgKCh0X2ZsYWdzICYgUEFMRVRURV9NQVNLKSAhPSAoaW5fZmxhZ3MgJiBQQUxFVFRFX01BU0spKSB7CisgICAgbG9zcyArPSBTQ09SRV9QQUxFVFRFX0NIQU5HRTsKKyAgICBpZiAodF9mbGFncyAmIFBBTEVUVEVfTUFTSykKKyAgICAgIGxvc3MgKz0gU0NPUkVfUEFMRVRURV9MT1NTOworICB9CisKKyAgaWYgKCh0X2ZsYWdzICYgQ09MT1JTUEFDRV9NQVNLKSAhPSAoaW5fZmxhZ3MgJiBDT0xPUlNQQUNFX01BU0spKSB7CisgICAgbG9zcyArPSBTQ09SRV9DT0xPUlNQQUNFX0xPU1M7CisgICAgaWYgKHRfZmxhZ3MgJiBHU1RfVklERU9fRk9STUFUX0ZMQUdfR1JBWSkKKyAgICAgIGxvc3MgKz0gU0NPUkVfQ09MT1JfTE9TUzsKKyAgfQorCisgIGlmICgodF9mbGFncyAmIEFMUEhBX01BU0spICE9IChpbl9mbGFncyAmIEFMUEhBX01BU0spKSB7CisgICAgbG9zcyArPSBTQ09SRV9BTFBIQV9DSEFOR0U7CisgICAgaWYgKGluX2ZsYWdzICYgQUxQSEFfTUFTSykKKyAgICAgIGxvc3MgKz0gU0NPUkVfQUxQSEFfTE9TUzsKKyAgfQorCisgIGlmICgoaW5faW5mby0+aF9zdWJbMV0pICE9ICh0X2luZm8tPmhfc3ViWzFdKSkgeworICAgIGxvc3MgKz0gU0NPUkVfQ0hST01BX0hfQ0hBTkdFOworICAgIGlmICgoaW5faW5mby0+aF9zdWJbMV0pIDwgKHRfaW5mby0+aF9zdWJbMV0pKQorICAgICAgbG9zcyArPSBTQ09SRV9DSFJPTUFfSF9MT1NTOworICB9CisgIGlmICgoaW5faW5mby0+d19zdWJbMV0pICE9ICh0X2luZm8tPndfc3ViWzFdKSkgeworICAgIGxvc3MgKz0gU0NPUkVfQ0hST01BX1dfQ0hBTkdFOworICAgIGlmICgoaW5faW5mby0+d19zdWJbMV0pIDwgKHRfaW5mby0+d19zdWJbMV0pKQorICAgICAgbG9zcyArPSBTQ09SRV9DSFJPTUFfV19MT1NTOworICB9CisKKyAgaWYgKChpbl9pbmZvLT5iaXRzKSAhPSAodF9pbmZvLT5iaXRzKSkgeworICAgIGxvc3MgKz0gU0NPUkVfREVQVEhfQ0hBTkdFOworICAgIGlmICgoaW5faW5mby0+Yml0cykgPiAodF9pbmZvLT5iaXRzKSkKKyAgICAgIGxvc3MgKz0gU0NPUkVfREVQVEhfTE9TUzsKKyAgfQorCisgIGlmIChsb3NzIDwgKm1pbl9sb3NzKSB7CisgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCA9IF90ZXh0dXJlX3RhcmdldF9kZW1hc2sgKG90aGVyX3RhcmdldHNfbWFzayk7CisKKyAgICBpZiAodGFyZ2V0ICE9IDApIHsKKyAgICAgICpvdXRfaW5mbyA9IHRfaW5mbzsKKyAgICAgICptaW5fbG9zcyA9IGxvc3M7CisgICAgICAqcmVzdWx0ID0gdGFyZ2V0OworICAgIH0KKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZml4YXRlX2Zvcm1hdF90YXJnZXQgKEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogcmVzdWx0KQoreworICBHc3RTdHJ1Y3R1cmUgKmlucywgKm91dHM7CisgIGNvbnN0IGdjaGFyICppbl9mb3JtYXQ7CisgIGNvbnN0IEdzdFZpZGVvRm9ybWF0SW5mbyAqaW5faW5mbywgKm91dF9pbmZvID0gTlVMTDsKKyAgY29uc3QgR1ZhbHVlICp0YXJnZXRzOworICBndWludCB0YXJnZXRzX21hc2sgPSAwOworICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0OworICBnaW50IG1pbl9sb3NzID0gR19NQVhJTlQ7CisgIGd1aW50IGksIGNhcHNsZW47CisKKyAgaW5zID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7CisgIGluX2Zvcm1hdCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoaW5zLCAiZm9ybWF0Iik7CisgIGlmICghaW5fZm9ybWF0KQorICAgIHJldHVybjsKKyAgdGFyZ2V0cyA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChpbnMsICJ0ZXh0dXJlLXRhcmdldCIpOworICB0YXJnZXRzX21hc2sgPSBnc3RfZ2xfdmFsdWVfZ2V0X3RleHR1cmVfdGFyZ2V0X21hc2sgKHRhcmdldHMpOworICBpZiAoIXRhcmdldHNfbWFzaykKKyAgICByZXR1cm47CisKKyAgaW5faW5mbyA9CisgICAgICBnc3RfdmlkZW9fZm9ybWF0X2dldF9pbmZvIChnc3RfdmlkZW9fZm9ybWF0X2Zyb21fc3RyaW5nIChpbl9mb3JtYXQpKTsKKyAgaWYgKCFpbl9pbmZvKQorICAgIHJldHVybjsKKworICBvdXRzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAocmVzdWx0LCAwKTsKKworICBjYXBzbGVuID0gZ3N0X2NhcHNfZ2V0X3NpemUgKHJlc3VsdCk7CisgIGZvciAoaSA9IDA7IGkgPCBjYXBzbGVuOyBpKyspIHsKKyAgICBHc3RTdHJ1Y3R1cmUgKnRlc3RzOworICAgIGNvbnN0IEdWYWx1ZSAqZm9ybWF0OworICAgIGNvbnN0IEdWYWx1ZSAqb3RoZXJfdGFyZ2V0czsKKyAgICBndWludCBvdGhlcl90YXJnZXRzX21hc2sgPSAwOworCisgICAgdGVzdHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChyZXN1bHQsIGkpOworCisgICAgZm9ybWF0ID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHRlc3RzLCAiZm9ybWF0Iik7CisgICAgb3RoZXJfdGFyZ2V0cyA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlICh0ZXN0cywgInRleHR1cmUtdGFyZ2V0Iik7CisgICAgLyogc2hvdWxkIG5vdCBoYXBwZW4gKi8KKyAgICBpZiAoZm9ybWF0ID09IE5VTEwgfHwgb3RoZXJfdGFyZ2V0cyA9PSBOVUxMKQorICAgICAgY29udGludWU7CisKKyAgICBvdGhlcl90YXJnZXRzX21hc2sgPSBnc3RfZ2xfdmFsdWVfZ2V0X3RleHR1cmVfdGFyZ2V0X21hc2sgKG90aGVyX3RhcmdldHMpOworCisgICAgaWYgKEdTVF9WQUxVRV9IT0xEU19MSVNUIChmb3JtYXQpKSB7CisgICAgICBnaW50IGosIGxlbjsKKworICAgICAgbGVuID0gZ3N0X3ZhbHVlX2xpc3RfZ2V0X3NpemUgKGZvcm1hdCk7CisgICAgICBmb3IgKGogPSAwOyBqIDwgbGVuOyBqKyspIHsKKyAgICAgICAgY29uc3QgR1ZhbHVlICp2YWw7CisKKyAgICAgICAgdmFsID0gZ3N0X3ZhbHVlX2xpc3RfZ2V0X3ZhbHVlIChmb3JtYXQsIGopOworICAgICAgICBpZiAoR19WQUxVRV9IT0xEU19TVFJJTkcgKHZhbCkpIHsKKyAgICAgICAgICBjb25zdCBnY2hhciAqZm9ybWF0X3N0ciA9IGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsKTsKKyAgICAgICAgICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdCA9IGdzdF92aWRlb19mb3JtYXRfZnJvbV9zdHJpbmcgKGZvcm1hdF9zdHIpOworICAgICAgICAgIHNjb3JlX2Zvcm1hdF90YXJnZXQgKGluX2luZm8sIHRhcmdldHNfbWFzaywgdl9mb3JtYXQsCisgICAgICAgICAgICAgIG90aGVyX3RhcmdldHNfbWFzaywgJm1pbl9sb3NzLCAmb3V0X2luZm8sICZ0YXJnZXQpOworICAgICAgICAgIGlmIChtaW5fbG9zcyA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKEdfVkFMVUVfSE9MRFNfU1RSSU5HIChmb3JtYXQpKSB7CisgICAgICBjb25zdCBnY2hhciAqZm9ybWF0X3N0ciA9IGdfdmFsdWVfZ2V0X3N0cmluZyAoZm9ybWF0KTsKKyAgICAgIEdzdFZpZGVvRm9ybWF0IHZfZm9ybWF0ID0gZ3N0X3ZpZGVvX2Zvcm1hdF9mcm9tX3N0cmluZyAoZm9ybWF0X3N0cik7CisgICAgICBzY29yZV9mb3JtYXRfdGFyZ2V0IChpbl9pbmZvLCB0YXJnZXRzX21hc2ssIHZfZm9ybWF0LCBvdGhlcl90YXJnZXRzX21hc2ssCisgICAgICAgICAgJm1pbl9sb3NzLCAmb3V0X2luZm8sICZ0YXJnZXQpOworICAgIH0KKyAgfQorICBpZiAob3V0X2luZm8pCisgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKG91dHMsICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLAorICAgICAgICBHU1RfVklERU9fRk9STUFUX0lORk9fTkFNRSAob3V0X2luZm8pLCBOVUxMKTsKKyAgaWYgKHRhcmdldCkKKyAgICBnc3Rfc3RydWN0dXJlX3NldCAob3V0cywgInRleHR1cmUtdGFyZ2V0IiwgR19UWVBFX1NUUklORywKKyAgICAgICAgZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX3N0cmluZyAodGFyZ2V0KSwgTlVMTCk7Cit9CisKK0dzdENhcHMgKgorZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZml4YXRlX2NhcHMgKEdzdEdMQ29udGV4dCAqIGNvbnZlcnQsCisgICAgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyAqIGNhcHMsIEdzdENhcHMgKiBvdGhlcikKK3sKKyAgR3N0Q2FwcyAqcmVzdWx0OworCisgIHJlc3VsdCA9IGdzdF9jYXBzX2ludGVyc2VjdCAob3RoZXIsIGNhcHMpOworICBpZiAoZ3N0X2NhcHNfaXNfZW1wdHkgKHJlc3VsdCkpIHsKICAgICBnc3RfY2Fwc191bnJlZiAocmVzdWx0KTsKLSAgICByZXN1bHQgPSB0bXA7CisgICAgcmVzdWx0ID0gb3RoZXI7CisgIH0gZWxzZSB7CisgICAgZ3N0X2NhcHNfdW5yZWYgKG90aGVyKTsKKyAgfQorCisgIHJlc3VsdCA9IGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKHJlc3VsdCk7CisgIGdzdF9nbF9jb2xvcl9jb252ZXJ0X2ZpeGF0ZV9mb3JtYXRfdGFyZ2V0IChjYXBzLCByZXN1bHQpOworCisgIHJlc3VsdCA9IGdzdF9jYXBzX2ZpeGF0ZSAocmVzdWx0KTsKKworICBpZiAoZGlyZWN0aW9uID09IEdTVF9QQURfU0lOSykgeworICAgIGlmIChnc3RfY2Fwc19pc19zdWJzZXQgKGNhcHMsIHJlc3VsdCkpIHsKKyAgICAgIGdzdF9jYXBzX3JlcGxhY2UgKCZyZXN1bHQsIGNhcHMpOworICAgIH0KICAgfQogCiAgIHJldHVybiByZXN1bHQ7CkBAIC05NjEsNyArMTM1Miw4IEBACiAgICAgfQogICAgIGFscGhhID0gZ19zdHJkdXBfcHJpbnRmICgidC4lYyA9IDEuMDsiLCBpbnB1dF9hbHBoYV9jaGFubmVsKTsKICAgfQotICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfUkVPUkRFUiwgYWxwaGEgPyBhbHBoYSA6ICIiLAorICBpbmZvLT50ZW1wbCA9ICZ0ZW1wbF9SRU9SREVSOworICBpbmZvLT5mcmFnX2JvZHkgPSBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LCBhbHBoYSA/IGFscGhhIDogIiIsCiAgICAgICBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSk7CiAgIGluZm8tPnNoYWRlcl90ZXhfbmFtZXNbMF0gPSAidGV4IjsKIApAQCAtOTkyLDcgKzEzODQsNyBAQAogICBpZiAoZ3N0X2lzX2dsX21lbW9yeSAobWVtb3J5KSAmJiAoVVNJTkdfT1BFTkdMIChjb252ZXJ0LT5jb250ZXh0KQogICAgICAgICAgIHx8IFVTSU5HX09QRU5HTDMgKGNvbnZlcnQtPmNvbnRleHQpKSkgewogICAgIGluX3RleF9yZWN0YW5ndWxhciA9Ci0gICAgICAgICgoR3N0R0xNZW1vcnkgKikgbWVtb3J5KS0+dGV4X3RhcmdldCA9PSBHTF9URVhUVVJFX1JFQ1RBTkdMRTsKKyAgICAgICAgY29udmVydC0+cHJpdi0+ZnJvbV90ZXh0dXJlX3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFOwogICB9CiAjZW5kaWYKIApAQCAtMTAwNCwxNSArMTM5NiwxOSBAQAogICAgICAqIHRoZSBBcHBsZSBZQ2JDcjQyMiBleHRlbnNpb24uIEl0IGNvdWxkIGFsc28gYmUgYSBub3JtYWwgVVlWWSB0ZXh0dXJlCiAgICAgICogd2l0aCBSQiBvciBMdW0vQWxwaGEKICAgICAgKi8KLSAgICBpbmZvLT5mcmFnX3Byb2cgPQotICAgICAgICBnX3N0cmR1cF9wcmludGYgKGZyYWdfQVBQTEVfWVVWX1RPX1JHQiwgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLAorICAgIC8qIFRoZSBtYW5nbGluZyB3aWxsIGNoYW5nZSB0aGlzIHRvIHRoZSBjb3JyZWN0IHRleHR1cmUyRFJlY3QsIHNhbXBsZXIyRFJlY3QKKyAgICAgKiBmb3IgdXMgKi8KKyAgICBpbmZvLT50ZW1wbCA9ICZ0ZW1wbF9SRU9SREVSOworICAgIGluZm8tPmZyYWdfYm9keSA9CisgICAgICAgIGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclsxXSwKICAgICAgICAgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdKTsKICAgICBpbmZvLT5pbl9uX3RleHR1cmVzID0gMTsKICAgICBpbmZvLT5zaGFkZXJfdGV4X25hbWVzWzBdID0gInRleCI7CiAgIH0gZWxzZSB7CiAgICAgc3dpdGNoIChHU1RfVklERU9fSU5GT19GT1JNQVQgKCZjb252ZXJ0LT5pbl9pbmZvKSkgewogICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0FZVVY6Ci0gICAgICAgIGluZm8tPmZyYWdfcHJvZyA9IGdfc3RyZHVwX3ByaW50ZiAoZnJhZ19BWVVWX3RvX1JHQiwgcGl4ZWxfb3JkZXJbMF0sCisgICAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX0FZVVZfdG9fUkdCOworICAgICAgICBpbmZvLT5mcmFnX2JvZHkgPSBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LCBwaXhlbF9vcmRlclswXSwKICAgICAgICAgICAgIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10pOwogICAgICAgICBpbmZvLT5pbl9uX3RleHR1cmVzID0gMTsKICAgICAgICAgaW5mby0+c2hhZGVyX3RleF9uYW1lc1swXSA9ICJ0ZXgiOwpAQCAtMTAyMSw4ICsxNDE3LDkgQEAKICAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDQ0OgogICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1k0MkI6CiAgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQxQjoKLSAgICAgICAgaW5mby0+ZnJhZ19wcm9nID0KLSAgICAgICAgICAgIGdfc3RyZHVwX3ByaW50ZiAoZnJhZ19QTEFOQVJfWVVWX3RvX1JHQiwgcGl4ZWxfb3JkZXJbMF0sCisgICAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX1BMQU5BUl9ZVVZfdG9fUkdCOworICAgICAgICBpbmZvLT5mcmFnX2JvZHkgPQorICAgICAgICAgICAgZ19zdHJkdXBfcHJpbnRmIChpbmZvLT50ZW1wbC0+Ym9keSwgcGl4ZWxfb3JkZXJbMF0sCiAgICAgICAgICAgICBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdKTsKICAgICAgICAgaW5mby0+aW5fbl90ZXh0dXJlcyA9IDM7CiAgICAgICAgIGluZm8tPnNoYWRlcl90ZXhfbmFtZXNbMF0gPSAiWXRleCI7CkBAIC0xMDMwLDggKzE0MjcsOSBAQAogICAgICAgICBpbmZvLT5zaGFkZXJfdGV4X25hbWVzWzJdID0gIlZ0ZXgiOwogICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVjEyOgotICAgICAgICBpbmZvLT5mcmFnX3Byb2cgPQotICAgICAgICAgICAgZ19zdHJkdXBfcHJpbnRmIChmcmFnX1BMQU5BUl9ZVVZfdG9fUkdCLCBwaXhlbF9vcmRlclswXSwKKyAgICAgICAgaW5mby0+dGVtcGwgPSAmdGVtcGxfUExBTkFSX1lVVl90b19SR0I7CisgICAgICAgIGluZm8tPmZyYWdfYm9keSA9CisgICAgICAgICAgICBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LCBwaXhlbF9vcmRlclswXSwKICAgICAgICAgICAgIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10pOwogICAgICAgICBpbmZvLT5pbl9uX3RleHR1cmVzID0gMzsKICAgICAgICAgaW5mby0+c2hhZGVyX3RleF9uYW1lc1swXSA9ICJZdGV4IjsKQEAgLTEwNDEsMTcgKzE0MzksMzAgQEAKICAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVVkyOgogICAgICAgewogICAgICAgICBjaGFyIHV2X3ZhbCA9IHRleHR1cmVfcmcgPyAnZycgOiAnYSc7Ci0gICAgICAgIGluZm8tPmZyYWdfcHJvZyA9IGdfc3RyZHVwX3ByaW50ZiAoZnJhZ19ZVVkyX1VZVllfdG9fUkdCLCAncicsIHV2X3ZhbCwKKyAgICAgICAgaW5mby0+dGVtcGwgPSAmdGVtcGxfWVVZMl9VWVZZX3RvX1JHQjsKKyAgICAgICAgaW5mby0+ZnJhZ19ib2R5ID0gZ19zdHJkdXBfcHJpbnRmIChpbmZvLT50ZW1wbC0+Ym9keSwgJ3InLCB1dl92YWwsCiAgICAgICAgICAgICB1dl92YWwsICdnJywgJ2EnLCBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLAogICAgICAgICAgICAgcGl4ZWxfb3JkZXJbM10pOwogICAgICAgICBpbmZvLT5pbl9uX3RleHR1cmVzID0gMTsKICAgICAgICAgaW5mby0+c2hhZGVyX3RleF9uYW1lc1swXSA9ICJZdGV4IjsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CisgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfVVlWWToKKyAgICAgIHsKKyAgICAgICAgY2hhciB5X3ZhbCA9IHRleHR1cmVfcmcgPyAnZycgOiAnYSc7CisgICAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX1lVWTJfVVlWWV90b19SR0I7CisgICAgICAgIGluZm8tPmZyYWdfYm9keSA9IGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksIHlfdmFsLCAnZycsCisgICAgICAgICAgICAnZycsICdyJywgJ2InLCBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLAorICAgICAgICAgICAgcGl4ZWxfb3JkZXJbM10pOworICAgICAgICBpbmZvLT5pbl9uX3RleHR1cmVzID0gMTsKKyAgICAgICAgaW5mby0+c2hhZGVyX3RleF9uYW1lc1swXSA9ICJZdGV4IjsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CiAgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYxMjoKICAgICAgIHsKICAgICAgICAgY2hhciB2YWwyID0gdGV4dHVyZV9yZyA/ICdnJyA6ICdhJzsKLSAgICAgICAgaW5mby0+ZnJhZ19wcm9nID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnX05WMTJfTlYyMV90b19SR0IsICdyJywgdmFsMiwKKyAgICAgICAgaW5mby0+dGVtcGwgPSAmdGVtcGxfTlYxMl9OVjIxX3RvX1JHQjsKKyAgICAgICAgaW5mby0+ZnJhZ19ib2R5ID0gZ19zdHJkdXBfcHJpbnRmIChpbmZvLT50ZW1wbC0+Ym9keSwgJ3InLCB2YWwyLAogICAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10pOwogICAgICAgICBpbmZvLT5pbl9uX3RleHR1cmVzID0gMjsKICAgICAgICAgaW5mby0+c2hhZGVyX3RleF9uYW1lc1swXSA9ICJZdGV4IjsKQEAgLTEwNjEsMjMgKzE0NzIsMTQgQEAKICAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjIxOgogICAgICAgewogICAgICAgICBjaGFyIHZhbDIgPSB0ZXh0dXJlX3JnID8gJ2cnIDogJ2EnOwotICAgICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfTlYxMl9OVjIxX3RvX1JHQiwgdmFsMiwgJ3InLAorICAgICAgICBpbmZvLT50ZW1wbCA9ICZ0ZW1wbF9OVjEyX05WMjFfdG9fUkdCOworICAgICAgICBpbmZvLT5mcmFnX2JvZHkgPSBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LCB2YWwyLCAncicsCiAgICAgICAgICAgICBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSk7CiAgICAgICAgIGluZm8tPmluX25fdGV4dHVyZXMgPSAyOwogICAgICAgICBpbmZvLT5zaGFkZXJfdGV4X25hbWVzWzBdID0gIll0ZXgiOwogICAgICAgICBpbmZvLT5zaGFkZXJfdGV4X25hbWVzWzFdID0gIlVWdGV4IjsKICAgICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfVVlWWToKLSAgICAgIHsKLSAgICAgICAgY2hhciB5X3ZhbCA9IHRleHR1cmVfcmcgPyAnZycgOiAnYSc7Ci0gICAgICAgIGluZm8tPmZyYWdfcHJvZyA9IGdfc3RyZHVwX3ByaW50ZiAoZnJhZ19ZVVkyX1VZVllfdG9fUkdCLCB5X3ZhbCwgJ2cnLAotICAgICAgICAgICAgJ2cnLCAncicsICdiJywgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwKLSAgICAgICAgICAgIHBpeGVsX29yZGVyWzNdKTsKLSAgICAgICAgaW5mby0+aW5fbl90ZXh0dXJlcyA9IDE7Ci0gICAgICAgIGluZm8tPnNoYWRlcl90ZXhfbmFtZXNbMF0gPSAiWXRleCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQogICAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTExOCw3ICsxNTIwLDggQEAKICAgc3dpdGNoIChvdXRfZm9ybWF0KSB7CiAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0FZVVY6CiAgICAgICBhbHBoYSA9IF9pc19SR0J4IChpbl9mb3JtYXQpID8gIjEuMCIgOiAidGV4ZWwuYSI7Ci0gICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfUkdCX3RvX0FZVVYsIHBpeGVsX29yZGVyWzBdLAorICAgICAgaW5mby0+dGVtcGwgPSAmdGVtcGxfUkdCX3RvX0FZVVY7CisgICAgICBpbmZvLT5mcmFnX2JvZHkgPSBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LCBwaXhlbF9vcmRlclswXSwKICAgICAgICAgICBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdLCBhbHBoYSk7CiAgICAgICBpbmZvLT5vdXRfbl90ZXh0dXJlcyA9IDE7CiAgICAgICBicmVhazsKQEAgLTExMjcsNyArMTUzMCw4IEBACiAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1k0NDQ6CiAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1k0MkI6CiAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1k0MUI6Ci0gICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfUkdCX3RvX1BMQU5BUl9ZVVYsCisgICAgICBpbmZvLT50ZW1wbCA9ICZ0ZW1wbF9SR0JfdG9fUExBTkFSX1lVVjsKKyAgICAgIGluZm8tPmZyYWdfYm9keSA9IGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksCiAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10sCiAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10pOwogICAgICAgaW5mby0+b3V0X25fdGV4dHVyZXMgPSAzOwpAQCAtMTE0NCwzMSArMTU0OCwzNSBAQAogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1lVWTI6Ci0gICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfUkdCX3RvX1lVWTJfVVlWWSwKKyAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX1JHQl90b19ZVVkyX1VZVlk7CisgICAgICBpbmZvLT5mcmFnX2JvZHkgPSBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LAogICAgICAgICAgIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdLAogICAgICAgICAgIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdLAotICAgICAgICAgICJ5IiwgInUiLCAieSIsICJ2Iik7CisgICAgICAgICAgJ3gnLCAneScsICd4JywgJ3onKTsKICAgICAgIGluZm8tPm91dF9uX3RleHR1cmVzID0gMTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9VWVZZOgotICAgICAgaW5mby0+ZnJhZ19wcm9nID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnX1JHQl90b19ZVVkyX1VZVlksCisgICAgICBpbmZvLT50ZW1wbCA9ICZ0ZW1wbF9SR0JfdG9fWVVZMl9VWVZZLAorICAgICAgICAgIGluZm8tPmZyYWdfYm9keSA9IGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksCiAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10sCiAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10sCi0gICAgICAgICAgInUiLCAieSIsICJ2IiwgInkiKTsKKyAgICAgICAgICAneScsICd4JywgJ3onLCAneCcpOwogICAgICAgaW5mby0+b3V0X25fdGV4dHVyZXMgPSAxOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX05WMTI6Ci0gICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfUkdCX3RvX05WMTJfTlYyMSwKKyAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX1JHQl90b19OVjEyX05WMjEsCisgICAgICAgICAgaW5mby0+ZnJhZ19ib2R5ID0gZ19zdHJkdXBfcHJpbnRmIChpbmZvLT50ZW1wbC0+Ym9keSwKICAgICAgICAgICBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSwKICAgICAgICAgICBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSwKLSAgICAgICAgICAndScsICd2Jyk7CisgICAgICAgICAgJ3knLCAneicpOwogICAgICAgaW5mby0+b3V0X25fdGV4dHVyZXMgPSAyOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX05WMjE6Ci0gICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfUkdCX3RvX05WMTJfTlYyMSwKKyAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX1JHQl90b19OVjEyX05WMjEsCisgICAgICAgICAgaW5mby0+ZnJhZ19ib2R5ID0gZ19zdHJkdXBfcHJpbnRmIChpbmZvLT50ZW1wbC0+Ym9keSwKICAgICAgICAgICBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSwKICAgICAgICAgICBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSwKLSAgICAgICAgICAndicsICd1Jyk7CisgICAgICAgICAgJ3onLCAneScpOwogICAgICAgaW5mby0+b3V0X25fdGV4dHVyZXMgPSAyOwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTEyMTAsNyArMTYxOCw4IEBACiAKICAgc3dpdGNoIChHU1RfVklERU9fSU5GT19GT1JNQVQgKCZjb252ZXJ0LT5vdXRfaW5mbykpIHsKICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfR1JBWTg6Ci0gICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfUkVPUkRFUiwgYWxwaGEgPyBhbHBoYSA6ICIiLAorICAgICAgaW5mby0+dGVtcGwgPSAmdGVtcGxfUkVPUkRFUjsKKyAgICAgIGluZm8tPmZyYWdfYm9keSA9IGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksIGFscGhhID8gYWxwaGEgOiAiIiwKICAgICAgICAgICBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclszXSk7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTI0MiwyMCArMTY1MSwyMyBAQAogCiAgIHN3aXRjaCAoR1NUX1ZJREVPX0lORk9fRk9STUFUICgmY29udmVydC0+aW5faW5mbykpIHsKICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfR1JBWTg6Ci0gICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfUkVPUkRFUiwgIiIsIHBpeGVsX29yZGVyWzBdLAorICAgICAgaW5mby0+dGVtcGwgPSAmdGVtcGxfUkVPUkRFUjsKKyAgICAgIGluZm8tPmZyYWdfYm9keSA9IGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksICIiLCBwaXhlbF9vcmRlclswXSwKICAgICAgICAgICBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzNdKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9HUkFZMTZfTEU6CiAgICAgewogICAgICAgY2hhciB2YWwyID0gdGV4dHVyZV9yZyA/ICdnJyA6ICdhJzsKLSAgICAgIGluZm8tPmZyYWdfcHJvZyA9IGdfc3RyZHVwX3ByaW50ZiAoZnJhZ19DT01QT1NFLCB2YWwyLCAncicsCisgICAgICBpbmZvLT50ZW1wbCA9ICZ0ZW1wbF9DT01QT1NFOworICAgICAgaW5mby0+ZnJhZ19ib2R5ID0gZ19zdHJkdXBfcHJpbnRmIChpbmZvLT50ZW1wbC0+Ym9keSwgdmFsMiwgJ3InLAogICAgICAgICAgIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfR1JBWTE2X0JFOgogICAgIHsKICAgICAgIGNoYXIgdmFsMiA9IHRleHR1cmVfcmcgPyAnZycgOiAnYSc7Ci0gICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfQ09NUE9TRSwgJ3InLCB2YWwyLAorICAgICAgaW5mby0+dGVtcGwgPSAmdGVtcGxfQ09NUE9TRTsKKyAgICAgIGluZm8tPmZyYWdfYm9keSA9IGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksICdyJywgdmFsMiwKICAgICAgICAgICBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSk7CiAgICAgICBicmVhazsKICAgICB9CkBAIC0xMjk4LDEyICsxNzEwLDMwOSBAQAogICBnbC0+RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IChjb252ZXJ0LT5wcml2LT5hdHRyX3RleHR1cmUpOwogfQogCitzdGF0aWMgZ2NoYXIgKgorX21hbmdsZV90ZXh0dXJlX2FjY2VzcyAoY29uc3QgZ2NoYXIgKiBzdHIsIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tLAorICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0bywgR3N0R0xBUEkgZ2xfYXBpKQoreworICBjb25zdCBnY2hhciAqZnJvbV9zdHIgPSBOVUxMLCAqdG9fc3RyID0gTlVMTDsKKyAgZ2NoYXIgKnJldCwgKnRtcDsKKyAgZ2NoYXIgKnJlZ2V4X2ZpbmQ7CisgIEdSZWdleCAqcmVnZXg7CisKKyAgaWYgKGZyb20gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKQorICAgIGZyb21fc3RyID0gInRleHR1cmUyRCI7CisgIGlmIChmcm9tID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpCisgICAgZnJvbV9zdHIgPSAidGV4dHVyZTJEUmVjdCI7CisgIGlmIChmcm9tID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpCisgICAgZnJvbV9zdHIgPSAidGV4dHVyZTJEIjsKKworICBpZiAoZ2xfYXBpICYgR1NUX0dMX0FQSV9PUEVOR0wzKSB7CisgICAgdG9fc3RyID0gInRleHR1cmUiOworICB9IGVsc2UgeworICAgIGlmICh0byA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpCisgICAgICB0b19zdHIgPSAidGV4dHVyZTJEIjsKKyAgICBpZiAodG8gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSkKKyAgICAgIHRvX3N0ciA9ICJ0ZXh0dXJlMkRSZWN0IjsKKyAgICBpZiAodG8gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykKKyAgICAgIHRvX3N0ciA9ICJ0ZXh0dXJlMkQiOworICB9CisKKyAgLyogZm9sbG93ZWQgYnkgYW55IGFtb3VudCBvZiB3aGl0ZXNwYWNlIHRoZW4gYSBicmFja2V0ICovCisgIHJlZ2V4X2ZpbmQgPSBnX3N0cmR1cF9wcmludGYgKCIlcyg/PVxccypcXCgpIiwgZnJvbV9zdHIpOworICByZWdleCA9IGdfcmVnZXhfbmV3IChyZWdleF9maW5kLCAwLCAwLCBOVUxMKTsKKyAgdG1wID0gZ19yZWdleF9yZXBsYWNlX2xpdGVyYWwgKHJlZ2V4LCBzdHIsIC0xLCAwLCB0b19zdHIsIDAsIE5VTEwpOworICBnX2ZyZWUgKHJlZ2V4X2ZpbmQpOworICBnX3JlZ2V4X3VucmVmIChyZWdleCk7CisKKyAgaWYgKHRtcCkgeworICAgIHJldCA9IHRtcDsKKyAgfSBlbHNlIHsKKyAgICBHU1RfRklYTUUgKCJDb3VsZG4ndCBtYW5nbGUgdGV4dHVyZSBhY2Nlc3Mgc3VjY2Vzc2Z1bGx5IGZyb20gJXMgdG8gJXMiLAorICAgICAgICBmcm9tX3N0ciwgdG9fc3RyKTsKKyAgICByZXQgPSBnX3N0cmR1cCAoc3RyKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnY2hhciAqCitfbWFuZ2xlX3NhbXBsZXJfdHlwZSAoY29uc3QgZ2NoYXIgKiBzdHIsIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tLAorICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0bykKK3sKKyAgY29uc3QgZ2NoYXIgKmZyb21fc3RyID0gTlVMTCwgKnRvX3N0ciA9IE5VTEw7CisgIGdjaGFyICpyZXQsICp0bXA7CisgIGdjaGFyICpyZWdleF9maW5kOworICBHUmVnZXggKnJlZ2V4OworCisgIGlmIChmcm9tID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCkKKyAgICBmcm9tX3N0ciA9ICJzYW1wbGVyMkQiOworICBpZiAoZnJvbSA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKQorICAgIGZyb21fc3RyID0gInNhbXBsZXIyRFJlY3QiOworICBpZiAoZnJvbSA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKQorICAgIGZyb21fc3RyID0gInNhbXBsZXJFeHRlcm5hbE9FUyI7CisKKyAgaWYgKHRvID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCkKKyAgICB0b19zdHIgPSAic2FtcGxlcjJEIjsKKyAgaWYgKHRvID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpCisgICAgdG9fc3RyID0gInNhbXBsZXIyRFJlY3QiOworICBpZiAodG8gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykKKyAgICB0b19zdHIgPSAic2FtcGxlckV4dGVybmFsT0VTIjsKKworICAvKiBmb2xsb3dlZCBieSBzb21lIHdoaXRlc3BhY2UgICovCisgIHJlZ2V4X2ZpbmQgPSBnX3N0cmR1cF9wcmludGYgKCIlcyg/PVxccykiLCBmcm9tX3N0cik7CisgIHJlZ2V4ID0gZ19yZWdleF9uZXcgKHJlZ2V4X2ZpbmQsIDAsIDAsIE5VTEwpOworICB0bXAgPSBnX3JlZ2V4X3JlcGxhY2VfbGl0ZXJhbCAocmVnZXgsIHN0ciwgLTEsIDAsIHRvX3N0ciwgMCwgTlVMTCk7CisgIGdfZnJlZSAocmVnZXhfZmluZCk7CisgIGdfcmVnZXhfdW5yZWYgKHJlZ2V4KTsKKworICBpZiAodG1wKSB7CisgICAgcmV0ID0gdG1wOworICB9IGVsc2UgeworICAgIEdTVF9GSVhNRSAoIkNvdWxkbid0IG1hbmdsZSBzYW1wbGVyIHR5cGUgc3VjY2Vzc2Z1bGx5IGZyb20gJXMgdG8gJXMiLAorICAgICAgICBmcm9tX3N0ciwgdG9fc3RyKTsKKyAgICByZXQgPSBnX3N0cmR1cCAoc3RyKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnY2hhciAqCitfbWFuZ2xlX3ZhcnlpbmdfYXR0cmlidXRlIChjb25zdCBnY2hhciAqIHN0ciwgZ3VpbnQgc2hhZGVyX3R5cGUsCisgICAgR3N0R0xBUEkgZ2xfYXBpKQoreworICBpZiAoZ2xfYXBpICYgR1NUX0dMX0FQSV9PUEVOR0wzKSB7CisgICAgaWYgKHNoYWRlcl90eXBlID09IEdMX1ZFUlRFWF9TSEFERVIpIHsKKyAgICAgIGdjaGFyICp0bXAsICp0bXAyOworICAgICAgR1JlZ2V4ICpyZWdleDsKKworICAgICAgLyogZm9sbG93ZWQgYnkgc29tZSB3aGl0ZXNwYWNlICAqLworICAgICAgcmVnZXggPSBnX3JlZ2V4X25ldyAoInZhcnlpbmcoPz1cXHMpIiwgMCwgMCwgTlVMTCk7CisgICAgICB0bXAgPSBnX3JlZ2V4X3JlcGxhY2VfbGl0ZXJhbCAocmVnZXgsIHN0ciwgLTEsIDAsICJvdXQiLCAwLCBOVUxMKTsKKyAgICAgIGdfcmVnZXhfdW5yZWYgKHJlZ2V4KTsKKworICAgICAgLyogZm9sbG93ZWQgYnkgc29tZSB3aGl0ZXNwYWNlICAqLworICAgICAgcmVnZXggPSBnX3JlZ2V4X25ldyAoImF0dHJpYnV0ZSg/PVxccykiLCAwLCAwLCBOVUxMKTsKKyAgICAgIHRtcDIgPSBnX3JlZ2V4X3JlcGxhY2VfbGl0ZXJhbCAocmVnZXgsIHRtcCwgLTEsIDAsICJpbiIsIDAsIE5VTEwpOworICAgICAgZ19yZWdleF91bnJlZiAocmVnZXgpOworCisgICAgICBnX2ZyZWUgKHRtcCk7CisgICAgICByZXR1cm4gdG1wMjsKKyAgICB9IGVsc2UgaWYgKHNoYWRlcl90eXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUikgeworICAgICAgZ2NoYXIgKnRtcDsKKyAgICAgIEdSZWdleCAqcmVnZXg7CisKKyAgICAgIC8qIGZvbGxvd2VkIGJ5IHNvbWUgd2hpdGVzcGFjZSAgKi8KKyAgICAgIHJlZ2V4ID0gZ19yZWdleF9uZXcgKCJ2YXJ5aW5nKD89XFxzKSIsIDAsIDAsIE5VTEwpOworICAgICAgdG1wID0gZ19yZWdleF9yZXBsYWNlX2xpdGVyYWwgKHJlZ2V4LCBzdHIsIC0xLCAwLCAiaW4iLCAwLCBOVUxMKTsKKyAgICAgIGdfcmVnZXhfdW5yZWYgKHJlZ2V4KTsKKworICAgICAgcmV0dXJuIHRtcDsKKyAgICB9CisgIH0KKyAgcmV0dXJuIGdfc3RyZHVwIChzdHIpOworfQorCitzdGF0aWMgZ2NoYXIgKgorX21hbmdsZV9mcmFnX2NvbG9yIChjb25zdCBnY2hhciAqIHN0cikKK3sKKyAgR1JlZ2V4ICpyZWdleDsKKyAgZ2NoYXIgKnJldDsKKworICByZWdleCA9IGdfcmVnZXhfbmV3ICgiZ2xfRnJhZ0NvbG9yIiwgMCwgMCwgTlVMTCk7CisgIHJldCA9IGdfcmVnZXhfcmVwbGFjZV9saXRlcmFsIChyZWdleCwgc3RyLCAtMSwgMCwgImZyYWdDb2xvciIsIDAsIE5VTEwpOworICBnX3JlZ2V4X3VucmVmIChyZWdleCk7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQKK19tYW5nbGVfdmVyc2lvbl9wcm9maWxlX2Zyb21fZ2xfYXBpIChHc3RHTEFQSSBnbF9hcGksIEdzdEdMU0xWZXJzaW9uICogdmVyc2lvbiwKKyAgICBHc3RHTFNMUHJvZmlsZSAqIHByb2ZpbGUpCit7CisgIGlmIChnbF9hcGkgJiBHU1RfR0xfQVBJX09QRU5HTDMpIHsKKyAgICAqdmVyc2lvbiA9IEdTVF9HTFNMX1ZFUlNJT05fMTUwOworICAgICpwcm9maWxlID0gR1NUX0dMU0xfUFJPRklMRV9OT05FOworICB9IGVsc2UgaWYgKGdsX2FwaSAmIEdTVF9HTF9BUElfR0xFUzIpIHsKKyAgICAqdmVyc2lvbiA9IEdTVF9HTFNMX1ZFUlNJT05fMTAwOworICAgICpwcm9maWxlID0gR1NUX0dMU0xfUFJPRklMRV9FUzsKKyAgfSBlbHNlIGlmIChnbF9hcGkgJiBHU1RfR0xfQVBJX09QRU5HTCkgeworICAgICp2ZXJzaW9uID0gR1NUX0dMU0xfVkVSU0lPTl8xMTA7CisgICAgKnByb2ZpbGUgPSBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFk7CisgIH0KK30KKworc3RhdGljIGdjaGFyICoKK19tYW5nbGVfc2hhZGVyIChjb25zdCBnY2hhciAqIHN0ciwgZ3VpbnQgc2hhZGVyX3R5cGUsIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tLAorICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0bywgR3N0R0xBUEkgZ2xfYXBpLCBHc3RHTFNMVmVyc2lvbiAqIHZlcnNpb24sCisgICAgR3N0R0xTTFByb2ZpbGUgKiBwcm9maWxlKQoreworICBnY2hhciAqdG1wLCAqdG1wMjsKKworICB0bXAgPSBfbWFuZ2xlX3RleHR1cmVfYWNjZXNzIChzdHIsIGZyb20sIHRvLCBnbF9hcGkpOworICB0bXAyID0gX21hbmdsZV9zYW1wbGVyX3R5cGUgKHRtcCwgZnJvbSwgdG8pOworICBnX2ZyZWUgKHRtcCk7CisgIHRtcCA9IF9tYW5nbGVfdmFyeWluZ19hdHRyaWJ1dGUgKHRtcDIsIHNoYWRlcl90eXBlLCBnbF9hcGkpOworICBnX2ZyZWUgKHRtcDIpOworICBpZiAoc2hhZGVyX3R5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSICYmIGdsX2FwaSAmIEdTVF9HTF9BUElfT1BFTkdMMykgeworICAgIHRtcDIgPSBfbWFuZ2xlX2ZyYWdfY29sb3IgKHRtcCk7CisgICAgZ19mcmVlICh0bXApOworICAgIHRtcCA9IHRtcDI7CisgIH0KKyAgX21hbmdsZV92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9nbF9hcGkgKGdsX2FwaSwgdmVyc2lvbiwgcHJvZmlsZSk7CisgIHJldHVybiB0bXA7Cit9CisKK3N0YXRpYyBHc3RHTFNoYWRlciAqCitfY3JlYXRlX3NoYWRlciAoR3N0R0xDb2xvckNvbnZlcnQgKiBjb252ZXJ0KQoreworICBzdHJ1Y3QgQ29udmVydEluZm8gKmluZm8gPSAmY29udmVydC0+cHJpdi0+Y29udmVydF9pbmZvOworICBHU3RyaW5nICpzdHIgPSBnX3N0cmluZ19uZXcgKE5VTEwpOworICBHc3RHTFNoYWRlciAqcmV0ID0gTlVMTDsKKyAgR3N0R0xTTFN0YWdlICpzdGFnZTsKKyAgR3N0R0xTTFZlcnNpb24gdmVyc2lvbjsKKyAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZTsKKyAgZ2NoYXIgKnZlcnNpb25fc3RyLCAqdG1wLCAqdG1wMTsKKyAgY29uc3QgZ2NoYXIgKnN0cmluZ3NbMl07CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworICBHc3RHTEFQSSBnbF9hcGk7CisgIGludCBpOworCisgIGdsX2FwaSA9IGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKGNvbnZlcnQtPmNvbnRleHQpOworCisgIHJldCA9IGdzdF9nbF9zaGFkZXJfbmV3IChjb252ZXJ0LT5jb250ZXh0KTsKKworICB0bXAgPQorICAgICAgX21hbmdsZV9zaGFkZXIgKHRleHRfdmVydGV4X3NoYWRlciwgR0xfVkVSVEVYX1NIQURFUiwgaW5mby0+dGVtcGwtPnRhcmdldCwKKyAgICAgIGNvbnZlcnQtPnByaXYtPmZyb21fdGV4dHVyZV90YXJnZXQsIGdsX2FwaSwgJnZlcnNpb24sICZwcm9maWxlKTsKKworICB0bXAxID0gZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX3RvX3N0cmluZyAodmVyc2lvbiwgcHJvZmlsZSk7CisgIHZlcnNpb25fc3RyID0gZ19zdHJkdXBfcHJpbnRmICgiI3ZlcnNpb24gJXNcbiIsIHRtcDEpOworICBnX2ZyZWUgKHRtcDEpOworCisgIHN0cmluZ3NbMF0gPSB2ZXJzaW9uX3N0cjsKKyAgc3RyaW5nc1sxXSA9IHRtcDsKKyAgaWYgKCEoc3RhZ2UgPSBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmdzIChjb252ZXJ0LT5jb250ZXh0LAorICAgICAgICAgICAgICBHTF9WRVJURVhfU0hBREVSLCB2ZXJzaW9uLCBwcm9maWxlLCAyLCBzdHJpbmdzKSkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChjb252ZXJ0LCAiRmFpbGVkIHRvIGNyZWF0ZSB2ZXJ0ZXggc3RhZ2UiKTsKKyAgICBnX2ZyZWUgKHZlcnNpb25fc3RyKTsKKyAgICBnX2ZyZWUgKHRtcCk7CisgICAgZ3N0X29iamVjdF91bnJlZiAocmV0KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorICBnX2ZyZWUgKHRtcCk7CisKKyAgaWYgKCFnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYXR0YWNoX3N0YWdlIChyZXQsIHN0YWdlLCAmZXJyb3IpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoY29udmVydCwgIkZhaWxlZCB0byBjb21waWxlIHZlcnRleCBzaGFkZXIgJXMiLAorICAgICAgICBlcnJvci0+bWVzc2FnZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKyAgICBnX2ZyZWUgKHZlcnNpb25fc3RyKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzdGFnZSk7CisgICAgZ3N0X29iamVjdF91bnJlZiAocmV0KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIGlmIChpbmZvLT50ZW1wbC0+ZXh0ZW5zaW9ucykKKyAgICBnX3N0cmluZ19hcHBlbmQgKHN0ciwgaW5mby0+dGVtcGwtPmV4dGVuc2lvbnMpOworCisgIGlmIChjb252ZXJ0LT5wcml2LT5mcm9tX3RleHR1cmVfdGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMKKyAgICAgICYmIGluZm8tPnRlbXBsLT50YXJnZXQgIT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykKKyAgICBnX3N0cmluZ19hcHBlbmQgKHN0ciwgZ2xzbF9PRVNfZXh0ZW5zaW9uX3N0cmluZyk7CisKKyAgaWYgKGluZm8tPnRlbXBsLT51bmlmb3JtcykKKyAgICBnX3N0cmluZ19hcHBlbmQgKHN0ciwgaW5mby0+dGVtcGwtPnVuaWZvcm1zKTsKKworICBpZiAoZ2xfYXBpICYgR1NUX0dMX0FQSV9PUEVOR0wzKSB7CisgICAgZ19zdHJpbmdfYXBwZW5kX2MgKHN0ciwgJ1xuJyk7CisgICAgZ19zdHJpbmdfYXBwZW5kIChzdHIsICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4iKTsKKyAgfQorCisgIGZvciAoaSA9IDA7IGkgPCBNQVhfRlVOQ1RJT05TOyBpKyspIHsKKyAgICBpZiAoaW5mby0+dGVtcGwtPmZ1bmN0aW9uc1tpXSA9PSBOVUxMKQorICAgICAgYnJlYWs7CisKKyAgICBnX3N0cmluZ19hcHBlbmRfYyAoc3RyLCAnXG4nKTsKKyAgICBnX3N0cmluZ19hcHBlbmQgKHN0ciwgaW5mby0+dGVtcGwtPmZ1bmN0aW9uc1tpXSk7CisgICAgZ19zdHJpbmdfYXBwZW5kX2MgKHN0ciwgJ1xuJyk7CisgIH0KKworICBnX3N0cmluZ19hcHBlbmQgKHN0ciwgIlxudmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG52b2lkIG1haW4gKHZvaWQpIHtcbiIpOworICBpZiAoaW5mby0+ZnJhZ19ib2R5KSB7CisgICAgZ19zdHJpbmdfYXBwZW5kIChzdHIsICJ2ZWMyIHRleGNvb3JkO1xuIik7CisgICAgaWYgKGNvbnZlcnQtPnByaXYtPmZyb21fdGV4dHVyZV90YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRQorICAgICAgICAmJiBpbmZvLT50ZW1wbC0+dGFyZ2V0ICE9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpIHsKKyAgICAgIGdfc3RyaW5nX2FwcGVuZCAoc3RyLCAidGV4Y29vcmQgPSB2X3RleGNvb3JkICogdmVjMiAod2lkdGgsIGhlaWdodCk7XG4iKTsKKyAgICB9IGVsc2UgeworICAgICAgZ19zdHJpbmdfYXBwZW5kIChzdHIsICJ0ZXhjb29yZCA9IHZfdGV4Y29vcmQ7XG4iKTsKKyAgICB9CisKKyAgICBnX3N0cmluZ19hcHBlbmQgKHN0ciwgaW5mby0+ZnJhZ19ib2R5KTsKKyAgfQorICBnX3N0cmluZ19hcHBlbmQgKHN0ciwgIlxufSIpOworICB0bXAgPSBnX3N0cmluZ19mcmVlIChzdHIsIEZBTFNFKTsKKyAgaW5mby0+ZnJhZ19wcm9nID0gX21hbmdsZV9zaGFkZXIgKHRtcCwgR0xfRlJBR01FTlRfU0hBREVSLAorICAgICAgaW5mby0+dGVtcGwtPnRhcmdldCwgY29udmVydC0+cHJpdi0+ZnJvbV90ZXh0dXJlX3RhcmdldCwgZ2xfYXBpLAorICAgICAgJnZlcnNpb24sICZwcm9maWxlKTsKKyAgZ19mcmVlICh0bXApOworCisgIHN0cmluZ3NbMV0gPSBpbmZvLT5mcmFnX3Byb2c7CisgIGlmICghKHN0YWdlID0gZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5ncyAoY29udmVydC0+Y29udGV4dCwKKyAgICAgICAgICAgICAgR0xfRlJBR01FTlRfU0hBREVSLCB2ZXJzaW9uLCBwcm9maWxlLCAyLCBzdHJpbmdzKSkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChjb252ZXJ0LCAiRmFpbGVkIHRvIGNyZWF0ZSBmcmFnbWVudCBzdGFnZSIpOworICAgIGdfZnJlZSAoaW5mby0+ZnJhZ19wcm9nKTsKKyAgICBpbmZvLT5mcmFnX3Byb2cgPSBOVUxMOworICAgIGdfZnJlZSAodmVyc2lvbl9zdHIpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHJldCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKyAgZ19mcmVlICh2ZXJzaW9uX3N0cik7CisgIGlmICghZ3N0X2dsX3NoYWRlcl9jb21waWxlX2F0dGFjaF9zdGFnZSAocmV0LCBzdGFnZSwgJmVycm9yKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNvbnZlcnQsICJGYWlsZWQgdG8gY29tcGlsZSBmcmFnbWVudCBzaGFkZXIgJXMiLAorICAgICAgICBlcnJvci0+bWVzc2FnZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKyAgICBnX2ZyZWUgKGluZm8tPmZyYWdfcHJvZyk7CisgICAgaW5mby0+ZnJhZ19wcm9nID0gTlVMTDsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzdGFnZSk7CisgICAgZ3N0X29iamVjdF91bnJlZiAocmV0KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIGlmICghZ3N0X2dsX3NoYWRlcl9saW5rIChyZXQsICZlcnJvcikpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChjb252ZXJ0LCAiRmFpbGVkIHRvIGxpbmsgc2hhZGVyICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgZ19mcmVlIChpbmZvLT5mcmFnX3Byb2cpOworICAgIGluZm8tPmZyYWdfcHJvZyA9IE5VTEw7CisgICAgZ3N0X29iamVjdF91bnJlZiAocmV0KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKIC8qIENhbGxlZCBpbiB0aGUgZ2wgdGhyZWFkICovCiBzdGF0aWMgZ2Jvb2xlYW4KIF9pbml0X2NvbnZlcnQgKEdzdEdMQ29sb3JDb252ZXJ0ICogY29udmVydCkKIHsKICAgR3N0R0xGdW5jcyAqZ2w7Ci0gIGdib29sZWFuIHJlczsKICAgc3RydWN0IENvbnZlcnRJbmZvICppbmZvID0gJmNvbnZlcnQtPnByaXYtPmNvbnZlcnRfaW5mbzsKICAgZ2ludCBpOwogCkBAIC0xMzUyLDEzICsyMDYxLDExIEBACiAgICAgfQogICB9CiAKLSAgaWYgKCFpbmZvLT5mcmFnX3Byb2cgfHwgaW5mby0+aW5fbl90ZXh0dXJlcyA9PSAwIHx8IGluZm8tPm91dF9uX3RleHR1cmVzID09IDApCisgIGlmICghaW5mby0+ZnJhZ19ib2R5IHx8IGluZm8tPmluX25fdGV4dHVyZXMgPT0gMCB8fCBpbmZvLT5vdXRfbl90ZXh0dXJlcyA9PSAwKQogICAgIGdvdG8gdW5oYW5kbGVkX2Zvcm1hdDsKIAotICAvKiBtdWx0aXBsZSBkcmF3IHRhcmdldHMgbm90IHN1cHBvcnRlZCBvbiBHTEVTMi4uLnlldCAqLwotICBpZiAoaW5mby0+b3V0X25fdGV4dHVyZXMgPiAxICYmICghZ2wtPkRyYXdCdWZmZXJzIHx8Ci0gICAgICAgICAgVVNJTkdfR0xFUzIgKGNvbnZlcnQtPmNvbnRleHQpKSkgewotICAgIGdfZnJlZSAoaW5mby0+ZnJhZ19wcm9nKTsKKyAgLyogbXVsdGlwbGUgZHJhdyB0YXJnZXRzIG5vdCBzdXBwb3J0ZWQgb24gR0xFUzIuLi4gKi8KKyAgaWYgKGluZm8tPm91dF9uX3RleHR1cmVzID4gMSAmJiAhZ2wtPkRyYXdCdWZmZXJzKSB7CiAgICAgR1NUX0VSUk9SICgiQ29udmVyc2lvbiByZXF1aXJlcyBvdXRwdXQgdG8gbXVsdGlwbGUgZHJhdyBidWZmZXJzIik7CiAgICAgZ290byBpbmNvbXBhdGlibGVfYXBpOwogICB9CkBAIC0xMzY4LDE2ICsyMDc1LDExIEBACiAgICAgICAoR1NUX1ZJREVPX0lORk9fRk9STUFUICgmY29udmVydC0+b3V0X2luZm8pID09IEdTVF9WSURFT19GT1JNQVRfWVVZMiB8fAogICAgICAgICAgIEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJmNvbnZlcnQtPm91dF9pbmZvKSA9PQogICAgICAgICAgIEdTVF9WSURFT19GT1JNQVRfVVlWWSkpIHsKLSAgICBnX2ZyZWUgKGluZm8tPmZyYWdfcHJvZyk7CiAgICAgR1NUX0VSUk9SICgiQ29udmVyc2lvbiByZXF1aXJlcyByZWFkaW5nIHdpdGggYW4gdW5zdXBwb3J0ZWQgZm9ybWF0Iik7CiAgICAgZ290byBpbmNvbXBhdGlibGVfYXBpOwogICB9CiAKLSAgcmVzID0KLSAgICAgIGdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXIgKGNvbnZlcnQtPmNvbnRleHQsIHRleHRfdmVydGV4X3NoYWRlciwKLSAgICAgIGluZm8tPmZyYWdfcHJvZywgJmNvbnZlcnQtPnNoYWRlcik7Ci0gIGdfZnJlZSAoaW5mby0+ZnJhZ19wcm9nKTsKLSAgaWYgKCFyZXMpCisgIGlmICghKGNvbnZlcnQtPnNoYWRlciA9IF9jcmVhdGVfc2hhZGVyIChjb252ZXJ0KSkpCiAgICAgZ290byBlcnJvcjsKIAogICBjb252ZXJ0LT5wcml2LT5hdHRyX3Bvc2l0aW9uID0KQEAgLTE0MTAsNiArMjExMiwxNiBAQAogICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChjb252ZXJ0LT5zaGFkZXIsICJoZWlnaHQiLAogICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmY29udmVydC0+aW5faW5mbykpOwogCisgIGlmIChjb252ZXJ0LT5wcml2LT5mcm9tX3RleHR1cmVfdGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpIHsKKyAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChjb252ZXJ0LT5zaGFkZXIsICJwb2Zmc2V0X3giLCAxLik7CisgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoY29udmVydC0+c2hhZGVyLCAicG9mZnNldF95IiwgMS4pOworICB9IGVsc2UgeworICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKGNvbnZlcnQtPnNoYWRlciwgInBvZmZzZXRfeCIsCisgICAgICAgIDEuIC8gKGdmbG9hdCkgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZjb252ZXJ0LT5pbl9pbmZvKSk7CisgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoY29udmVydC0+c2hhZGVyLCAicG9mZnNldF95IiwKKyAgICAgICAgMS4gLyAoZ2Zsb2F0KSBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZjb252ZXJ0LT5pbl9pbmZvKSk7CisgIH0KKwogICBpZiAoaW5mby0+Y2hyb21hX3NhbXBsaW5nWzBdID4gMC4wZiAmJiBpbmZvLT5jaHJvbWFfc2FtcGxpbmdbMV0gPiAwLjBmKSB7CiAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnYgKGNvbnZlcnQtPnNoYWRlciwgImNocm9tYV9zYW1wbGluZyIsIDEsCiAgICAgICAgIGluZm8tPmNocm9tYV9zYW1wbGluZyk7CkBAIC0xNjEyLDE1ICsyMzI0LDI3IEBACiAgICAgICAvKiBMdW1pbmFuY2UgZm9ybWF0cyBhcmUgbm90IGNvbG9yIHJlbmRlcmFibGUgKi8KICAgICAgIC8qIHJlbmRlcmVyaW5nIHRvIGEgZnJhbWVidWZmZXIgb25seSByZW5kZXJzIHRoZSBpbnRlcnNlY3Rpb24gb2YgYWxsCiAgICAgICAgKiB0aGUgYXR0YWNobWVudHMgaS5lLiB0aGUgc21hbGxlc3QgYXR0YWNobWVudCBzaXplICovCi0gICAgICBHc3RWaWRlb0luZm8gdGVtcF9pbmZvOworICAgICAgaWYgKCFjb252ZXJ0LT5wcml2LT5vdXRfdGV4W2pdKSB7CisgICAgICAgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7CisgICAgICAgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqYmFzZV9tZW1fYWxsb2NhdG9yOworICAgICAgICBHc3RBbGxvY2F0b3IgKmFsbG9jYXRvcjsKKyAgICAgICAgR3N0VmlkZW9JbmZvIHRlbXBfaW5mbzsKIAotICAgICAgZ3N0X3ZpZGVvX2luZm9fc2V0X2Zvcm1hdCAoJnRlbXBfaW5mbywgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBLCBvdXRfd2lkdGgsCi0gICAgICAgICAgb3V0X2hlaWdodCk7CisgICAgICAgIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZ0ZW1wX2luZm8sIEdTVF9WSURFT19GT1JNQVRfUkdCQSwgb3V0X3dpZHRoLAorICAgICAgICAgICAgb3V0X2hlaWdodCk7CiAKLSAgICAgIGlmICghY29udmVydC0+cHJpdi0+b3V0X3RleFtqXSkKKyAgICAgICAgYWxsb2NhdG9yID0gZ3N0X2FsbG9jYXRvcl9maW5kIChHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9OQU1FKTsKKyAgICAgICAgYmFzZV9tZW1fYWxsb2NhdG9yID0gR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUiAoYWxsb2NhdG9yKTsKKyAgICAgICAgcGFyYW1zID0gZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoY29udGV4dCwgTlVMTCwgJnRlbXBfaW5mbywKKyAgICAgICAgICAgIDAsIE5VTEwsIGNvbnZlcnQtPnByaXYtPnRvX3RleHR1cmVfdGFyZ2V0KTsKKwogICAgICAgICBjb252ZXJ0LT5wcml2LT5vdXRfdGV4W2pdID0KLSAgICAgICAgICAgIChHc3RHTE1lbW9yeSAqKSBnc3RfZ2xfbWVtb3J5X2FsbG9jIChjb250ZXh0LCBOVUxMLCAmdGVtcF9pbmZvLCAwLAotICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICAoR3N0R0xNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChiYXNlX21lbV9hbGxvY2F0b3IsCisgICAgICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisKKyAgICAgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAoYWxsb2NhdG9yKTsKKyAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgY29udmVydC0+cHJpdi0+b3V0X3RleFtqXSA9IG91dF90ZXg7CiAgICAgfQpAQCAtMTY3NSw5ICsyMzk5LDkgQEAKICAgICAgICAgcmVzID0gRkFMU0U7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQotICAgICAgZ3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZSAoY29udmVydC0+cHJpdi0+b3V0X3RleFtqXSwKLSAgICAgICAgICBvdXRfdGV4LT50ZXhfaWQsIG91dF90ZXgtPnRleF90eXBlLCBtZW1fd2lkdGgsIG1lbV9oZWlnaHQsCi0gICAgICAgICAgR1NUX1ZJREVPX0lORk9fUExBTkVfU1RSSURFICgmb3V0X3RleC0+aW5mbywgb3V0X3RleC0+cGxhbmUpLCBGQUxTRSk7CisgICAgICBnc3RfZ2xfbWVtb3J5X2NvcHlfaW50byAoY29udmVydC0+cHJpdi0+b3V0X3RleFtqXSwKKyAgICAgICAgICBvdXRfdGV4LT50ZXhfaWQsIGNvbnZlcnQtPnByaXYtPnRvX3RleHR1cmVfdGFyZ2V0LCBvdXRfdGV4LT50ZXhfdHlwZSwKKyAgICAgICAgICBtZW1fd2lkdGgsIG1lbV9oZWlnaHQpOwogICAgICAgZ3N0X21lbW9yeV91bm1hcCAoKEdzdE1lbW9yeSAqKSBjb252ZXJ0LT5wcml2LT5vdXRfdGV4W2pdLCAmZnJvbV9pbmZvKTsKICAgICAgIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgb3V0X3RleCwgJnRvX2luZm8pOwogICAgIH0gZWxzZSB7CkBAIC0xNzExLDYgKzI0MzUsOCBAQAogICBnYm9vbGVhbiByZXMgPSBUUlVFOwogICBnaW50IHZpZXdzLCB2OwogICBHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbk1ldGEgKmNvbXBvc2l0aW9uX21ldGE7CisgIEdzdEdMU3luY01ldGEgKnN5bmNfbWV0YTsKKyAgR3N0Rmxvd1JldHVybiByZXQ7CiAKICAgY29udmVydC0+b3V0YnVmID0gTlVMTDsKIApAQCAtMTcxOSw5ICsyNDQ1LDQ1IEBACiAgICAgcmV0dXJuOwogICB9CiAKLSAgY29udmVydC0+b3V0YnVmID0gZ3N0X2J1ZmZlcl9uZXcgKCk7Ci0gIGlmICghZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIgKGNvbnZlcnQtPmNvbnRleHQsIE5VTEwsICZjb252ZXJ0LT5vdXRfaW5mbywKLSAgICAgICAgICBOVUxMLCBjb252ZXJ0LT5vdXRidWYpKSB7CisgIHN5bmNfbWV0YSA9IGdzdF9idWZmZXJfZ2V0X2dsX3N5bmNfbWV0YSAoY29udmVydC0+aW5idWYpOworICBpZiAoc3luY19tZXRhKQorICAgIGdzdF9nbF9zeW5jX21ldGFfd2FpdCAoc3luY19tZXRhLCBjb252ZXJ0LT5jb250ZXh0KTsKKworICBpZiAoIWNvbnZlcnQtPnByaXYtPnBvb2wpIHsKKyAgICBnYm9vbGVhbiByZXQ7CisgICAgLyogTm8gcG9vbCEgKi8KKyAgICBHc3RRdWVyeSAqcXVlcnkgPSBnc3RfcXVlcnlfbmV3X2FsbG9jYXRpb24gKGNvbnZlcnQtPnByaXYtPm91dF9jYXBzLCBUUlVFKTsKKyAgICByZXQgPSBnc3RfZ2xfY29sb3JfY29udmVydF9kZWNpZGVfYWxsb2NhdGlvbiAoY29udmVydCwgcXVlcnkpOworICAgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworCisgICAgaWYgKCFyZXQpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNvbnZlcnQsICJGYWlsZWQgdG8gY2hvb3NlIGFsbG9jYXRpb24gcGFyYW1ldGVycyIpOworICAgICAgY29udmVydC0+cHJpdi0+cmVzdWx0ID0gRkFMU0U7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFjb252ZXJ0LT5wcml2LT5wb29sKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChjb252ZXJ0LCAiRmFpbGVkIHRvIGNyZWF0ZSBhIGJ1ZmZlciBwb29sIik7CisgICAgICBjb252ZXJ0LT5wcml2LT5yZXN1bHQgPSBGQUxTRTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0KKworICBpZiAoIWNvbnZlcnQtPnByaXYtPnBvb2xfc3RhcnRlZCkgeworICAgIGlmICghZ3N0X2J1ZmZlcl9wb29sX3NldF9hY3RpdmUgKGNvbnZlcnQtPnByaXYtPnBvb2wsIFRSVUUpKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChjb252ZXJ0LCAiRmFpbGVkIHRvIHN0YXJ0IGJ1ZmZlciBwb29sIik7CisgICAgICBjb252ZXJ0LT5wcml2LT5yZXN1bHQgPSBGQUxTRTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29udmVydC0+cHJpdi0+cG9vbF9zdGFydGVkID0gVFJVRTsKKyAgfQorCisgIHJldCA9CisgICAgICBnc3RfYnVmZmVyX3Bvb2xfYWNxdWlyZV9idWZmZXIgKGNvbnZlcnQtPnByaXYtPnBvb2wsICZjb252ZXJ0LT5vdXRidWYsCisgICAgICBOVUxMKTsKKyAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNvbnZlcnQsICJGYWlsZWQgdG8gYWNxdWlyZSBidWZmZXIgZnJvbSBwb29sOiAlcyIsCisgICAgICAgIGdzdF9mbG93X2dldF9uYW1lIChyZXQpKTsKICAgICBjb252ZXJ0LT5wcml2LT5yZXN1bHQgPSBGQUxTRTsKICAgICByZXR1cm47CiAgIH0KQEAgLTE3MzIsNiArMjQ5NCwxMCBAQAogICBlbHNlCiAgICAgdmlld3MgPSAxOwogCisgIGdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyIChjb250ZXh0LCAiJXMgY29udmVydGluZyBmcm9tICVzIHRvICVzIiwKKyAgICAgIEdTVF9PQkpFQ1RfTkFNRSAoY29udmVydCksCisgICAgICBnc3RfdmlkZW9fZm9ybWF0X3RvX3N0cmluZyAoR1NUX1ZJREVPX0lORk9fRk9STUFUIChpbl9pbmZvKSksCisgICAgICBnc3RfdmlkZW9fZm9ybWF0X3RvX3N0cmluZyAoR1NUX1ZJREVPX0lORk9fRk9STUFUICgmY29udmVydC0+b3V0X2luZm8pKSk7CiAgIC8qIEhhbmRsZSBhbGwgdmlld3Mgb24gaW5wdXQgYW5kIG91dHB1dCBvbmUgYXQgYSB0aW1lICovCiAgIGZvciAodiA9IDA7IHJlcyAmJiB2IDwgdmlld3M7IHYrKykKICAgICByZXMgPSBfZG9fY29udmVydF9vbmVfdmlldyAoY29udGV4dCwgY29udmVydCwgdik7CkBAIC0xNzg2LDExICsyNTUyLDE0IEBACiAKICAgLyogYXR0YWNoIHRoZSB0ZXh0dXJlIHRvIHRoZSBGQk8gdG8gcmVuZGVyZXIgdG8gKi8KICAgZm9yIChpID0gMDsgaSA8IGNfaW5mby0+b3V0X25fdGV4dHVyZXM7IGkrKykgeworICAgIGd1aW50IGdsX3RhcmdldCA9CisgICAgICAgIGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoY29udmVydC0+cHJpdi0+dG9fdGV4dHVyZV90YXJnZXQpOworCiAgICAgLyogbmVlZGVkPyAqLwotICAgIGdsLT5CaW5kVGV4dHVyZSAoR0xfVEVYVFVSRV8yRCwgY29udmVydC0+cHJpdi0+b3V0X3RleFtpXS0+dGV4X2lkKTsKKyAgICBnbC0+QmluZFRleHR1cmUgKGdsX3RhcmdldCwgY29udmVydC0+cHJpdi0+b3V0X3RleFtpXS0+dGV4X2lkKTsKIAogICAgIGdsLT5GcmFtZWJ1ZmZlclRleHR1cmUyRCAoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgaSwKLSAgICAgICAgR0xfVEVYVFVSRV8yRCwgY29udmVydC0+cHJpdi0+b3V0X3RleFtpXS0+dGV4X2lkLCAwKTsKKyAgICAgICAgZ2xfdGFyZ2V0LCBjb252ZXJ0LT5wcml2LT5vdXRfdGV4W2ldLT50ZXhfaWQsIDApOwogICB9CiAKICAgaWYgKGdsLT5EcmF3QnVmZmVycykKQEAgLTE4MTEsMTUgKzI1ODAsMTUgQEAKIAogICBmb3IgKGkgPSBjX2luZm8tPmluX25fdGV4dHVyZXMgLSAxOyBpID49IDA7IGktLSkgewogICAgIGdjaGFyICpzY2FsZV9uYW1lID0gZ19zdHJkdXBfcHJpbnRmICgidGV4X3NjYWxlJXUiLCBpKTsKLSAgICBHc3RHTE1lbW9yeSAqbSA9IGNvbnZlcnQtPnByaXYtPmluX3RleFtpXTsKLSAgICBndWludCB0ZXhfdGFyZ2V0ID0gbS0+dGV4X3RhcmdldDsKKyAgICBndWludCBnbF90YXJnZXQgPQorICAgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKGNvbnZlcnQtPnByaXYtPmZyb21fdGV4dHVyZV90YXJnZXQpOwogCiAgICAgZ2wtPkFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwICsgaSk7Ci0gICAgZ2wtPkJpbmRUZXh0dXJlICh0ZXhfdGFyZ2V0LCBjb252ZXJ0LT5wcml2LT5pbl90ZXhbaV0tPnRleF9pZCk7Ci0gICAgZ2wtPlRleFBhcmFtZXRlcmkgKHRleF90YXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbC0+VGV4UGFyYW1ldGVyaSAodGV4X3RhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsLT5UZXhQYXJhbWV0ZXJpICh0ZXhfdGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2wtPlRleFBhcmFtZXRlcmkgKHRleF90YXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbC0+QmluZFRleHR1cmUgKGdsX3RhcmdldCwgY29udmVydC0+cHJpdi0+aW5fdGV4W2ldLT50ZXhfaWQpOworICAgIGdsLT5UZXhQYXJhbWV0ZXJpIChnbF90YXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICBnbC0+VGV4UGFyYW1ldGVyaSAoZ2xfdGFyZ2V0LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2wtPlRleFBhcmFtZXRlcmkgKGdsX3RhcmdldCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsLT5UZXhQYXJhbWV0ZXJpIChnbF90YXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKIAogICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmZ2IChjb252ZXJ0LT5zaGFkZXIsIHNjYWxlX25hbWUsIDEsCiAgICAgICAgIGNvbnZlcnQtPnByaXYtPmluX3RleFtpXS0+dGV4X3NjYWxpbmcpOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuaAppbmRleCA4ZTY2YmU0Li41OTgwY2ZhIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuaApAQCAtODQsNyArODQsNyBAQAogICoKICAqIFRoZSBjdXJyZW50bHkgc3VwcG9ydGVkIGZvcm1hdHMgdGhhdCBjYW4gYmUgY29udmVydGVkCiAgKi8KLSNkZWZpbmUgR1NUX0dMX0NPTE9SX0NPTlZFUlRfRk9STUFUUyAieyBSR0IsIFJHQngsIFJHQkEsIEJHUiwgQkdSeCwgQkdSQSwgeFJHQiwgIiBcCisjZGVmaW5lIEdTVF9HTF9DT0xPUl9DT05WRVJUX0ZPUk1BVFMgInsgUkdCQSwgUkdCLCBSR0J4LCBCR1IsIEJHUngsIEJHUkEsIHhSR0IsICIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4QkdSLCBBUkdCLCBBQkdSLCBZNDQ0LCBJNDIwLCBZVjEyLCBZNDJCLCAiIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWTQxQiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgQVlVViwgIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSwgUkdCMTYsIEJHUjE2IH0iCkBAIC05NSwxMyArOTUsMjAgQEAKICAqIFRoZSBjdXJyZW50bHkgc3VwcG9ydGVkICNHc3RDYXBzIHRoYXQgY2FuIGJlIGNvbnZlcnRlZAogICovCiAjZGVmaW5lIEdTVF9HTF9DT0xPUl9DT05WRVJUX1ZJREVPX0NBUFMgXAotICAgIEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUyAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBcCi0gICAgICAgIEdTVF9HTF9DT0xPUl9DT05WRVJUX0ZPUk1BVFMpCi0KLSNkZWZpbmUgR1NUX0dMX0NPTE9SX0NPTlZFUlRfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTl9DQVBTIFwKLSAgICBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSBcCi0gICAgICAgICIsIiBHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT04sIFwKLSAgICAgICAgR1NUX0dMX0NPTE9SX0NPTlZFUlRfRk9STUFUUykKKyAgICAidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgIiksICIgICAgICAgICAgICAgIFwKKyAgICAiZm9ybWF0ID0gKHN0cmluZykgIiBHU1RfR0xfQ09MT1JfQ09OVkVSVF9GT1JNQVRTICIsICIgICAgICAgICAgICAgIFwKKyAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFICIsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSB7IDJELCByZWN0YW5nbGUsIGV4dGVybmFsLW9lcyB9ICIgICAgICAgIFwKKyAgICAiIDsgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgIiwiICAgICAgICAgICAgICAgIFwKKyAgICBHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT04gIiksICIgICAgICAgICAgIFwKKyAgICAiZm9ybWF0ID0gKHN0cmluZykgIiBHU1RfR0xfQ09MT1JfQ09OVkVSVF9GT1JNQVRTICIsICIgICAgICAgICAgICAgIFwKKyAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFICIsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSB7IDJELCByZWN0YW5nbGUsIGV4dGVybmFsLW9lcyB9IgogCiBHc3RHTENvbG9yQ29udmVydCAqIGdzdF9nbF9jb2xvcl9jb252ZXJ0X25ldyAoR3N0R0xDb250ZXh0ICogY29udGV4dCk7CiAKQEAgLTEwOSw5ICsxMTYsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENhcHMgKiBjYXBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENhcHMgKiBmaWx0ZXIpOworR3N0Q2FwcyAqICAgZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZml4YXRlX2NhcHMgICAgKEdzdEdMQ29udGV4dCAqIGNvbnZlcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICogY2FwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICogb3RoZXIpOwogZ2Jvb2xlYW4gICAgZ3N0X2dsX2NvbG9yX2NvbnZlcnRfc2V0X2NhcHMgICAgKEdzdEdMQ29sb3JDb252ZXJ0ICogY29udmVydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICAgICAgICAgICAqIGluX2NhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAgICAgICAgICAgKiBvdXRfY2Fwcyk7CitnYm9vbGVhbiAgICBnc3RfZ2xfY29sb3JfY29udmVydF9kZWNpZGVfYWxsb2NhdGlvbiAoR3N0R0xDb2xvckNvbnZlcnQgICAqIGNvbnZlcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0UXVlcnkgICAgICAgICAgICAqIHF1ZXJ5KTsKIAogR3N0QnVmZmVyICogZ3N0X2dsX2NvbG9yX2NvbnZlcnRfcGVyZm9ybSAgICAoR3N0R0xDb2xvckNvbnZlcnQgKiBjb252ZXJ0LCBHc3RCdWZmZXIgKiBpbmJ1Zik7CiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuYwppbmRleCBkMTc3ZGY4Li4yYzIwOGVkIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250ZXh0LmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jCkBAIC00MSw2ICs0MSw4IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPGdtb2R1bGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgogCiAjaW5jbHVkZSAiZ2wuaCIKICNpbmNsdWRlICJnc3RnbGNvbnRleHQuaCIKQEAgLTY1LDcgKzY3LDggQEAKICNpbmNsdWRlICJlYWdsL2dzdGdsY29udGV4dF9lYWdsLmgiCiAjZW5kaWYKIAotR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X3BlcmZvcm1hbmNlKTsKK2V4dGVybiB2b2lkIF9nc3RfZ2xfZGVidWdfZW5hYmxlIChHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKKwogc3RhdGljIEdQcml2YXRlIGN1cnJlbnRfY29udGV4dF9rZXk7CiAKIHN0YXRpYyBHTW9kdWxlICptb2R1bGVfc2VsZjsKQEAgLTgzLDcgKzg2LDcgQEAKICNlbHNlCiAgIC8qIE9uIExpbnV4IHRoZSAuc28gaXMgb25seSBpbiAtZGV2IHBhY2thZ2VzLCB0cnkgd2l0aCBhIHJlYWwgc29uYW1lCiAgICAqIFByb3BlciBjb21waWxlcnMgd2lsbCBvcHRpbWl6ZSBhd2F5IHRoZSBzdHJjbXAgKi8KLSAgaWYgKHN0cmNtcCAoR19NT0RVTEVfU1VGRklYLCAic28iKSA9PSAwKQorICBpZiAoZ19zdHJjbXAwIChHX01PRFVMRV9TVUZGSVgsICJzbyIpID09IDApCiAgICAgbW9kdWxlX29wZW5nbCA9IGdfbW9kdWxlX29wZW4gKCJsaWJHTC5zby4xIiwgR19NT0RVTEVfQklORF9MQVpZKTsKIAogICAvKiBUaGlzIGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB0aGUgc3VmZml4IGFuZCBldmVuIC5sYSBmaWxlcyAqLwpAQCAtMTA4LDcgKzExMSw3IEBACiAjZWxzZQogICAvKiBPbiBMaW51eCB0aGUgLnNvIGlzIG9ubHkgaW4gLWRldiBwYWNrYWdlcywgdHJ5IHdpdGggYSByZWFsIHNvbmFtZQogICAgKiBQcm9wZXIgY29tcGlsZXJzIHdpbGwgb3B0aW1pemUgYXdheSB0aGUgc3RyY21wICovCi0gIGlmIChzdHJjbXAgKEdfTU9EVUxFX1NVRkZJWCwgInNvIikgPT0gMCkKKyAgaWYgKGdfc3RyY21wMCAoR19NT0RVTEVfU1VGRklYLCAic28iKSA9PSAwKQogICAgIG1vZHVsZV9nbGVzMiA9IGdfbW9kdWxlX29wZW4gKCJsaWJHTEVTdjIuc28uMiIsIEdfTU9EVUxFX0JJTkRfTEFaWSk7CiAKICAgLyogVGhpcyBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdGhlIHN1ZmZpeCBhbmQgZXZlbiAubGEgZmlsZXMgKi8KQEAgLTEzMywzNyArMTM2LDU1IEBACiAjZXJyb3IgIkFkZCBtb2R1bGUgbG9hZGluZyBzdXBwb3J0IGZvciBHTEVTMyIKICNlbmRpZgogCi0vKiBDb250ZXh0IHNoYXJlZG5lc3MgZXMgdHJhY2tlZCBieSBhIHVuaXF1ZSBpZCBzdG9yZWQgaW4gZWFjaCBjb250ZXh0IG9iamVjdAotICogaW4gb3JkZXIgdHJhY2sgY29tcGxleCBjcmVhdGlvbi9kZWxldGlvbiBzY2VuYXJpb3MuICBBcyBhIHJlc3VsdCwgc2hhcmVkbmVzcwotICogY2FuIG9ubHkgYmUgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCBiZXR3ZWVuIHR3byBHc3RHTENvbnRleHQncyB3aGVyZSBvbmUgaXMKLSAqIG5vdCBhIHdyYXBwZWQgY29udGV4dC4KKy8qIENvbnRleHQgc2hhcmVkbmVzcyBpcyB0cmFja2VkIGJ5IGEgcmVmY291bnRlZCBwb2ludGVyIHN0b3JlZCBpbiBlYWNoIGNvbnRleHQKKyAqIG9iamVjdCB0byB0cmFjayBjb21wbGV4IGNyZWF0aW9uL2RlbGV0aW9uIHNjZW5hcmlvcy4gIEFzIGEgcmVzdWx0LAorICogc2hhcmVkbmVzcyBjYW4gb25seSBiZSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkIGJldHdlZW4gdHdvIEdzdEdMQ29udGV4dCdzCisgKiB3aGVyZSBvbmUgaXMgbm90IGEgd3JhcHBlZCBjb250ZXh0LgogICoKICAqIEFzIHRoZXJlIGlzIG5vIEFQSSBhdCB0aGUgd2luc3lzIGxldmVsIHRvIHRlbGwgd2hldGhlciB0d28gT3BlbkdMIGNvbnRleHRzCiAgKiBjYW4gc2hhcmUgR0wgcmVzb3VyY2VzLCB0aGlzIGlzIHRoZSBuZXh0IGJlc3QgdGhpbmcuCisgKgorICogWFhYOiB3ZSBtYXkgbmVlZCBhIHdheSB0byBhc3NvY2lhdGUgdHdvIHdyYXBwZWQgR3N0R0xDb250ZXh0J3MgYXMgYmVpbmcKKyAqIHNoYXJlZCBob3dldmVyIEkgaGF2ZSBub3QgY29tZSBhY3Jvc3MgYSB1c2UgY2FzZSB0aGF0IHJlcXVyaWVzIHRoaXMgeWV0LgogICovCi1zdGF0aWMgdm9sYXRpbGUgZ3VpbnQgc2hhcmVncm91cF9pZHg7Ci0KLXN0YXRpYyBndWludAotX25ld19zaGFyZWdyb3VwX2lkICh2b2lkKQorc3RydWN0IENvbnRleHRTaGFyZUdyb3VwCiB7Ci0gIGd1aW50IGN1cnJlbnQsIHJldDsKKyAgdm9sYXRpbGUgaW50IHJlZmNvdW50OworfTsKIAotICBkbyB7Ci0gICAgY3VycmVudCA9IGdfYXRvbWljX2ludF9nZXQgKCZzaGFyZWdyb3VwX2lkeCk7Ci0gICAgcmV0ID0gY3VycmVudCArIDE7CitzdGF0aWMgc3RydWN0IENvbnRleHRTaGFyZUdyb3VwICoKK19jb250ZXh0X3NoYXJlX2dyb3VwX25ldyAodm9pZCkKK3sKKyAgc3RydWN0IENvbnRleHRTaGFyZUdyb3VwICpyZXQgPSBnX25ldzAgKHN0cnVjdCBDb250ZXh0U2hhcmVHcm91cCwgMSk7CiAKLSAgICAvKiAwIGlzIHNwZWNpYWwgKi8KLSAgICBpZiAocmV0ID09IDApCi0gICAgICByZXQrKzsKLSAgfSB3aGlsZSAoIWdfYXRvbWljX2ludF9jb21wYXJlX2FuZF9leGNoYW5nZSAoJnNoYXJlZ3JvdXBfaWR4LCBjdXJyZW50LCByZXQpKTsKLQotICBHU1RfVFJBQ0UgKCJnZW5lcmF0ZWQgbmV3IHNoYXJlIGdyb3VwIGlkICV1IiwgcmV0KTsKKyAgcmV0LT5yZWZjb3VudCA9IDE7CiAKICAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHN0cnVjdCBDb250ZXh0U2hhcmVHcm91cCAqCitfY29udGV4dF9zaGFyZV9ncm91cF9yZWYgKHN0cnVjdCBDb250ZXh0U2hhcmVHcm91cCAqc2hhcmUpCit7CisgIGdfYXRvbWljX2ludF9pbmMgKCZzaGFyZS0+cmVmY291bnQpOworICByZXR1cm4gc2hhcmU7Cit9CisKK3N0YXRpYyB2b2lkCitfY29udGV4dF9zaGFyZV9ncm91cF91bnJlZiAoc3RydWN0IENvbnRleHRTaGFyZUdyb3VwICpzaGFyZSkKK3sKKyAgaWYgKGdfYXRvbWljX2ludF9kZWNfYW5kX3Rlc3QgKCZzaGFyZS0+cmVmY291bnQpKQorICAgIGdfZnJlZSAoc2hhcmUpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19jb250ZXh0X3NoYXJlX2dyb3VwX2lzX3NoYXJlZCAoc3RydWN0IENvbnRleHRTaGFyZUdyb3VwICpzaGFyZSkKK3sKKyAgcmV0dXJuIGdfYXRvbWljX2ludF9nZXQgKCZzaGFyZS0+cmVmY291bnQpID4gMTsKK30KKwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2dsX2NvbnRleHRfZGVidWcKIEdTVF9ERUJVR19DQVRFR09SWSAoR1NUX0NBVF9ERUZBVUxUKTsKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9nbF9kZWJ1Zyk7CiAKICNkZWZpbmUgZ3N0X2dsX2NvbnRleHRfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcwogR19ERUZJTkVfQUJTVFJBQ1RfVFlQRSAoR3N0R0xDb250ZXh0LCBnc3RfZ2xfY29udGV4dCwgR1NUX1RZUEVfT0JKRUNUKTsKQEAgLTE4NCwxMyArMjA1LDEyIEBACiAgIC8qIGNvbmRpdGlvbnMgKi8KICAgR011dGV4IHJlbmRlcl9sb2NrOwogICBHQ29uZCBjcmVhdGVfY29uZDsKLSAgR0NvbmQgZGVzdHJveV9jb25kOwogCiAgIGdib29sZWFuIGNyZWF0ZWQ7CiAgIGdib29sZWFuIGFsaXZlOwogCiAgIEdXZWFrUmVmIG90aGVyX2NvbnRleHRfcmVmOwotICBndWludCBzaGFyZWdyb3VwX2lkOworICBzdHJ1Y3QgQ29udGV4dFNoYXJlR3JvdXAgKnNoYXJlZ3JvdXA7CiAgIEdFcnJvciAqKmVycm9yOwogCiAgIGdpbnQgZ2xfbWFqb3I7CkBAIC0yMjAsOCArMjQwLDggQEAKIAogI2RlZmluZSBHU1RfR0xfV1JBUFBFRF9DT05URVhUKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfR0xfVFlQRV9XUkFQUEVEX0NPTlRFWFQsIEdzdEdMV3JhcHBlZENvbnRleHQpKQogI2RlZmluZSBHU1RfR0xfV1JBUFBFRF9DT05URVhUX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTKChrKSwgR1NUX0dMX1RZUEVfQ09OVEVYVCwgR3N0R0xDb250ZXh0Q2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfV1JBUFBFRF9DT05URVhUKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XUkFQUEVEX0NPTlRFWFQpKQotI2RlZmluZSBHU1RfR0xfSVNfV1JBUFBFRF9DT05URVhUX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XUkFQUEVEX0NPTlRFWFQpKQorI2RlZmluZSBHU1RfSVNfR0xfV1JBUFBFRF9DT05URVhUKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XUkFQUEVEX0NPTlRFWFQpKQorI2RlZmluZSBHU1RfSVNfR0xfV1JBUFBFRF9DT05URVhUX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XUkFQUEVEX0NPTlRFWFQpKQogI2RlZmluZSBHU1RfR0xfV1JBUFBFRF9DT05URVhUX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX1dSQVBQRURfQ09OVEVYVCwgR3N0R0xXcmFwcGVkQ29udGV4dENsYXNzKSkKIAogR1F1YXJrCkBAIC0yNTYsNyArMjc2LDYgQEAKICAgZ19tdXRleF9pbml0ICgmY29udGV4dC0+cHJpdi0+cmVuZGVyX2xvY2spOwogCiAgIGdfY29uZF9pbml0ICgmY29udGV4dC0+cHJpdi0+Y3JlYXRlX2NvbmQpOwotICBnX2NvbmRfaW5pdCAoJmNvbnRleHQtPnByaXYtPmRlc3Ryb3lfY29uZCk7CiAgIGNvbnRleHQtPnByaXYtPmNyZWF0ZWQgPSBGQUxTRTsKIAogICBnX3dlYWtfcmVmX2luaXQgKCZjb250ZXh0LT5wcml2LT5vdGhlcl9jb250ZXh0X3JlZiwgTlVMTCk7CkBAIC0yODMsNyArMzAyLDcgQEAKICAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmX2luaXQpKSB7CiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9nbF9jb250ZXh0X2RlYnVnLCAiZ2xjb250ZXh0IiwgMCwKICAgICAgICAgImdsY29udGV4dCBlbGVtZW50Iik7Ci0gICAgR1NUX0RFQlVHX0NBVEVHT1JZX0dFVCAoZ3N0X3BlcmZvcm1hbmNlLCAiR1NUX1BFUkZPUk1BTkNFIik7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9nbF9kZWJ1ZywgImdsZGVidWciLCAwLCAiT3BlbkdMIERlYnVnZ2luZyIpOwogICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOwogICB9CiB9CkBAIC0zMTAsNyArMzI5LDcgQEAKICAgR1NUX0lORk8gKCJjcmVhdGluZyBhIGNvbnRleHQgZm9yIGRpc3BsYXkgJSIgR1NUX1BUUl9GT1JNQVQKICAgICAgICIsIHVzZXIgY2hvaWNlOiVzIiwgZGlzcGxheSwgdXNlcl9jaG9pY2UpOwogI2lmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0NHTAotICBpZiAoIWNvbnRleHQgJiYgKCF1c2VyX2Nob2ljZSB8fCBnX3N0cnN0cl9sZW4gKHVzZXJfY2hvaWNlLCA1LCAiY2dsIikpKQorICBpZiAoIWNvbnRleHQgJiYgKCF1c2VyX2Nob2ljZSB8fCBnX3N0cnN0cl9sZW4gKHVzZXJfY2hvaWNlLCAzLCAiY2dsIikpKQogICAgIGNvbnRleHQgPSBHU1RfR0xfQ09OVEVYVCAoZ3N0X2dsX2NvbnRleHRfY29jb2FfbmV3IChkaXNwbGF5KSk7CiAjZW5kaWYKICNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9HTFgKQEAgLTMxOCwxNiArMzM3LDE1IEBACiAgICAgY29udGV4dCA9IEdTVF9HTF9DT05URVhUIChnc3RfZ2xfY29udGV4dF9nbHhfbmV3IChkaXNwbGF5KSk7CiAjZW5kaWYKICNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wKLSAgaWYgKCFjb250ZXh0ICYmICghdXNlcl9jaG9pY2UgfHwgZ19zdHJzdHJfbGVuICh1c2VyX2Nob2ljZSwgNywgImVnbCIpKSkKKyAgaWYgKCFjb250ZXh0ICYmICghdXNlcl9jaG9pY2UgfHwgZ19zdHJzdHJfbGVuICh1c2VyX2Nob2ljZSwgMywgImVnbCIpKSkKICAgICBjb250ZXh0ID0gR1NUX0dMX0NPTlRFWFQgKGdzdF9nbF9jb250ZXh0X2VnbF9uZXcgKGRpc3BsYXkpKTsKICNlbmRpZgogI2lmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX1dHTAotICBpZiAoIWNvbnRleHQgJiYgKCF1c2VyX2Nob2ljZSB8fCBnX3N0cnN0cl9sZW4gKHVzZXJfY2hvaWNlLCAzLCAid2dsIikpKSB7CisgIGlmICghY29udGV4dCAmJiAoIXVzZXJfY2hvaWNlIHx8IGdfc3Ryc3RyX2xlbiAodXNlcl9jaG9pY2UsIDMsICJ3Z2wiKSkpCiAgICAgY29udGV4dCA9IEdTVF9HTF9DT05URVhUIChnc3RfZ2xfY29udGV4dF93Z2xfbmV3IChkaXNwbGF5KSk7Ci0gIH0KICNlbmRpZgogI2lmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0VBR0wKLSAgaWYgKCFjb250ZXh0ICYmICghdXNlcl9jaG9pY2UgfHwgZ19zdHJzdHJfbGVuICh1c2VyX2Nob2ljZSwgNSwgImVhZ2wiKSkpCisgIGlmICghY29udGV4dCAmJiAoIXVzZXJfY2hvaWNlIHx8IGdfc3Ryc3RyX2xlbiAodXNlcl9jaG9pY2UsIDQsICJlYWdsIikpKQogICAgIGNvbnRleHQgPSBHU1RfR0xfQ09OVEVYVCAoZ3N0X2dsX2NvbnRleHRfZWFnbF9uZXcgKGRpc3BsYXkpKTsKICNlbmRpZgogCkBAIC0zODgsNyArNDA2LDcgQEAKICAgY29udGV4dCA9IChHc3RHTENvbnRleHQgKikgY29udGV4dF93cmFwOwogCiAgIGNvbnRleHQtPmRpc3BsYXkgPSBnc3Rfb2JqZWN0X3JlZiAoZGlzcGxheSk7Ci0gIGNvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXBfaWQgPSBfbmV3X3NoYXJlZ3JvdXBfaWQgKCk7CisgIGNvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXAgPSBfY29udGV4dF9zaGFyZV9ncm91cF9uZXcgKCk7CiAgIGNvbnRleHRfd3JhcC0+aGFuZGxlID0gaGFuZGxlOwogICBjb250ZXh0X3dyYXAtPnBsYXRmb3JtID0gY29udGV4dF90eXBlOwogICBjb250ZXh0X3dyYXAtPmF2YWlsYWJsZV9hcGlzID0gYXZhaWxhYmxlX2FwaXM7CkBAIC02MjQsMjggKzY0MiwyMiBAQAogICAgIGdzdF9nbF93aW5kb3dfc2V0X2RyYXdfY2FsbGJhY2sgKGNvbnRleHQtPndpbmRvdywgTlVMTCwgTlVMTCwgTlVMTCk7CiAKICAgICBpZiAoY29udGV4dC0+cHJpdi0+YWxpdmUpIHsKLSAgICAgIGdfbXV0ZXhfbG9jayAoJmNvbnRleHQtPnByaXYtPnJlbmRlcl9sb2NrKTsKICAgICAgIEdTVF9JTkZPX09CSkVDVCAoY29udGV4dCwgInNlbmQgcXVpdCBnbCB3aW5kb3cgbG9vcCIpOwogICAgICAgZ3N0X2dsX3dpbmRvd19xdWl0IChjb250ZXh0LT53aW5kb3cpOwotICAgICAgd2hpbGUgKGNvbnRleHQtPnByaXYtPmFsaXZlKSB7Ci0gICAgICAgIGdfY29uZF93YWl0ICgmY29udGV4dC0+cHJpdi0+ZGVzdHJveV9jb25kLCAmY29udGV4dC0+cHJpdi0+cmVuZGVyX2xvY2spOwotICAgICAgfQotICAgICAgZ19tdXRleF91bmxvY2sgKCZjb250ZXh0LT5wcml2LT5yZW5kZXJfbG9jayk7Ci0gICAgfQogCi0gICAgZ3N0X2dsX3dpbmRvd19zZXRfY2xvc2VfY2FsbGJhY2sgKGNvbnRleHQtPndpbmRvdywgTlVMTCwgTlVMTCwgTlVMTCk7Ci0KLSAgICBpZiAoY29udGV4dC0+cHJpdi0+Z2xfdGhyZWFkKSB7Ci0gICAgICBncG9pbnRlciByZXQgPSBnX3RocmVhZF9qb2luIChjb250ZXh0LT5wcml2LT5nbF90aHJlYWQpOworICAgICAgR1NUX0lORk9fT0JKRUNUIChjb250ZXh0LCAiam9pbmluZyBnbCB0aHJlYWQiKTsKKyAgICAgIGdfdGhyZWFkX2pvaW4gKGNvbnRleHQtPnByaXYtPmdsX3RocmVhZCk7CiAgICAgICBHU1RfSU5GT19PQkpFQ1QgKGNvbnRleHQsICJnbCB0aHJlYWQgam9pbmVkIik7Ci0gICAgICBpZiAocmV0ICE9IE5VTEwpCi0gICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNvbnRleHQsICJnbCB0aHJlYWQgcmV0dXJuZWQgYSBub24tbnVsbCBwb2ludGVyIik7CiAgICAgICBjb250ZXh0LT5wcml2LT5nbF90aHJlYWQgPSBOVUxMOwogICAgIH0KIAorICAgIGdzdF9nbF93aW5kb3dfc2V0X2Nsb3NlX2NhbGxiYWNrIChjb250ZXh0LT53aW5kb3csIE5VTEwsIE5VTEwsIE5VTEwpOwogICAgIGdzdF9vYmplY3RfdW5yZWYgKGNvbnRleHQtPndpbmRvdyk7CiAgIH0KIAorICBpZiAoY29udGV4dC0+cHJpdi0+c2hhcmVncm91cCkKKyAgICBfY29udGV4dF9zaGFyZV9ncm91cF91bnJlZiAoY29udGV4dC0+cHJpdi0+c2hhcmVncm91cCk7CisKICAgZ3N0X29iamVjdF91bnJlZiAoY29udGV4dC0+ZGlzcGxheSk7CiAKICAgaWYgKGNvbnRleHQtPmdsX3Z0YWJsZSkgewpAQCAtNjU1LDcgKzY2Nyw2IEBACiAKICAgZ19tdXRleF9jbGVhciAoJmNvbnRleHQtPnByaXYtPnJlbmRlcl9sb2NrKTsKIAotICBnX2NvbmRfY2xlYXIgKCZjb250ZXh0LT5wcml2LT5kZXN0cm95X2NvbmQpOwogICBnX2NvbmRfY2xlYXIgKCZjb250ZXh0LT5wcml2LT5jcmVhdGVfY29uZCk7CiAKICAgZ19mcmVlIChjb250ZXh0LT5wcml2LT5nbF9leHRzKTsKQEAgLTY4NSw3ICs2OTYsNyBAQAogICBHc3RHTENvbnRleHRDbGFzcyAqY29udGV4dF9jbGFzczsKICAgZ2Jvb2xlYW4gcmVzdWx0OwogCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOwogICBjb250ZXh0X2NsYXNzID0gR1NUX0dMX0NPTlRFWFRfR0VUX0NMQVNTIChjb250ZXh0KTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbnRleHRfY2xhc3MtPmFjdGl2YXRlICE9IE5VTEwsIEZBTFNFKTsKIApAQCAtNzQ2LDcgKzc1Nyw3IEBACiB7CiAgIEdzdEdMQ29udGV4dENsYXNzICpjb250ZXh0X2NsYXNzOwogCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCksIEdTVF9HTF9BUElfTk9ORSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIEdTVF9HTF9BUElfTk9ORSk7CiAgIGNvbnRleHRfY2xhc3MgPSBHU1RfR0xfQ09OVEVYVF9HRVRfQ0xBU1MgKGNvbnRleHQpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAoY29udGV4dF9jbGFzcy0+Z2V0X2dsX2FwaSAhPSBOVUxMLCBHU1RfR0xfQVBJX05PTkUpOwogCkBAIC03NzUsNyArNzg2LDcgQEAKICAgR3N0R0xDb250ZXh0Q2xhc3MgKmNvbnRleHRfY2xhc3M7CiAgIEdzdEdMQVBJIGdsX2FwaTsKIAotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpLCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgTlVMTCk7CiAgIGNvbnRleHRfY2xhc3MgPSBHU1RfR0xfQ09OVEVYVF9HRVRfQ0xBU1MgKGNvbnRleHQpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAoY29udGV4dF9jbGFzcy0+Z2V0X3Byb2NfYWRkcmVzcyAhPSBOVUxMLCBOVUxMKTsKIApAQCAtODMxLDcgKzg0Miw3IEBACiBnYm9vbGVhbgogZ3N0X2dsX2NvbnRleHRfc2V0X3dpbmRvdyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xXaW5kb3cgKiB3aW5kb3cpCiB7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICghR1NUX0dMX0lTX1dSQVBQRURfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKCFHU1RfSVNfR0xfV1JBUFBFRF9DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKGNvbnRleHQsICJ3aW5kb3c6JSIgR1NUX1BUUl9GT1JNQVQsIHdpbmRvdyk7CiAKQEAgLTg2NSw5ICs4NzYsOSBAQAogR3N0R0xXaW5kb3cgKgogZ3N0X2dsX2NvbnRleHRfZ2V0X3dpbmRvdyAoR3N0R0xDb250ZXh0ICogY29udGV4dCkKIHsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUIChjb250ZXh0KSwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIE5VTEwpOwogCi0gIGlmIChHU1RfR0xfSVNfV1JBUFBFRF9DT05URVhUIChjb250ZXh0KSkgeworICBpZiAoR1NUX0lTX0dMX1dSQVBQRURfQ09OVEVYVCAoY29udGV4dCkpIHsKICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGNvbnRleHQsICJjb250ZXh0IGlzIG5vdCB0b3BsZXZlbCwgcmV0dXJuaW5nIE5VTEwiKTsKICAgICByZXR1cm4gTlVMTDsKICAgfQpAQCAtODkyLDEyICs5MDMsMTIgQEAKIGdib29sZWFuCiBnc3RfZ2xfY29udGV4dF9jYW5fc2hhcmUgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMQ29udGV4dCAqIG90aGVyX2NvbnRleHQpCiB7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUIChvdGhlcl9jb250ZXh0KSwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAob3RoZXJfY29udGV4dCksIEZBTFNFKTsKIAogICAvKiBjaGVjayBpZiB0aGUgY29udGV4dHMgYXJlIGRlc2NlbmRhbnRzIG9yIHRoZSByb290IG5vZGVzIGFyZSB0aGUgc2FtZSAqLwotICByZXR1cm4gY29udGV4dC0+cHJpdi0+c2hhcmVncm91cF9pZCAhPSAwCi0gICAgICAmJiBjb250ZXh0LT5wcml2LT5zaGFyZWdyb3VwX2lkID09IG90aGVyX2NvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXBfaWQ7CisgIHJldHVybiBjb250ZXh0LT5wcml2LT5zaGFyZWdyb3VwICE9IE5VTEwKKyAgICAgICYmIGNvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXAgPT0gb3RoZXJfY29udGV4dC0+cHJpdi0+c2hhcmVncm91cDsKIH0KIAogLyoqCkBAIC05MjUsOCArOTM2LDggQEAKIHsKICAgZ2Jvb2xlYW4gYWxpdmUgPSBGQUxTRTsKIAotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICghR1NUX0dMX0lTX1dSQVBQRURfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoIUdTVF9JU19HTF9XUkFQUEVEX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAoY29udGV4dCwgIiBvdGhlcl9jb250ZXh0OiUiIEdTVF9QVFJfRk9STUFULCBvdGhlcl9jb250ZXh0KTsKIApAQCAtOTM4LDE2ICs5NDksMTYgQEAKICAgICBnX3dlYWtfcmVmX3NldCAoJmNvbnRleHQtPnByaXYtPm90aGVyX2NvbnRleHRfcmVmLCBvdGhlcl9jb250ZXh0KTsKICAgICBjb250ZXh0LT5wcml2LT5lcnJvciA9IGVycm9yOwogICAgIGlmIChvdGhlcl9jb250ZXh0ID09IE5VTEwpCi0gICAgICBjb250ZXh0LT5wcml2LT5zaGFyZWdyb3VwX2lkID0gX25ld19zaGFyZWdyb3VwX2lkICgpOworICAgICAgY29udGV4dC0+cHJpdi0+c2hhcmVncm91cCA9IF9jb250ZXh0X3NoYXJlX2dyb3VwX25ldyAoKTsKICAgICBlbHNlCi0gICAgICBjb250ZXh0LT5wcml2LT5zaGFyZWdyb3VwX2lkID0gb3RoZXJfY29udGV4dC0+cHJpdi0+c2hhcmVncm91cF9pZDsKKyAgICAgIGNvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXAgPQorICAgICAgICAgIF9jb250ZXh0X3NoYXJlX2dyb3VwX3JlZiAob3RoZXJfY29udGV4dC0+cHJpdi0+c2hhcmVncm91cCk7CiAKICAgICBjb250ZXh0LT5wcml2LT5nbF90aHJlYWQgPSBnX3RocmVhZF9uZXcgKCJnc3RnbGNvbnRleHQiLAogICAgICAgICAoR1RocmVhZEZ1bmMpIGdzdF9nbF9jb250ZXh0X2NyZWF0ZV90aHJlYWQsIGNvbnRleHQpOwogCi0gICAgZ19jb25kX3dhaXQgKCZjb250ZXh0LT5wcml2LT5jcmVhdGVfY29uZCwgJmNvbnRleHQtPnByaXYtPnJlbmRlcl9sb2NrKTsKLQotICAgIGNvbnRleHQtPnByaXYtPmNyZWF0ZWQgPSBUUlVFOworICAgIHdoaWxlICghY29udGV4dC0+cHJpdi0+Y3JlYXRlZCkKKyAgICAgIGdfY29uZF93YWl0ICgmY29udGV4dC0+cHJpdi0+Y3JlYXRlX2NvbmQsICZjb250ZXh0LT5wcml2LT5yZW5kZXJfbG9jayk7CiAKICAgICBHU1RfSU5GT19PQkpFQ1QgKGNvbnRleHQsICJnbCB0aHJlYWQgY3JlYXRlZCIpOwogICB9CkBAIC05NTksMTU0ICs5NzAsNiBAQAogICByZXR1cm4gYWxpdmU7CiB9CiAKLSNpZm5kZWYgR0xfREVCVUdfVFlQRV9FUlJPUgotI2RlZmluZSBHTF9ERUJVR19UWVBFX0VSUk9SIDB4ODI0QwotI2VuZGlmCi0jaWZuZGVmIEdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPVVIKLSNkZWZpbmUgR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9VUiAweDgyNEQKLSNlbmRpZgotI2lmbmRlZiBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPVVIKLSNkZWZpbmUgR0xfREVCVUdfVFlQRV9VTkRFRklORURfQkVIQVZJT1VSIDB4ODI0RQotI2VuZGlmCi0jaWZuZGVmIEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkKLSNkZWZpbmUgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWSAweDgyNEYKLSNlbmRpZgotI2lmbmRlZiBHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFCi0jZGVmaW5lIEdMX0RFQlVHX1RZUEVfUEVSRk9STUFOQ0UgMHg4MjUwCi0jZW5kaWYKLSNpZm5kZWYgR0xfREVCVUdfVFlQRV9NQVJLRVIKLSNkZWZpbmUgR0xfREVCVUdfVFlQRV9NQVJLRVIgMHg4MjY4Ci0jZW5kaWYKLSNpZm5kZWYgR0xfREVCVUdfVFlQRV9PVEhFUgotI2RlZmluZSBHTF9ERUJVR19UWVBFX09USEVSIDB4ODI1MQotI2VuZGlmCi0KLSNpZm5kZWYgR0xfREVCVUdfU0VWRVJJVFlfSElHSAotI2RlZmluZSBHTF9ERUJVR19TRVZFUklUWV9ISUdIIDB4OTE0NgotI2VuZGlmCi0jaWZuZGVmIEdMX0RFQlVHX1NFVkVSSVRZX01FRElVTQotI2RlZmluZSBHTF9ERUJVR19TRVZFUklUWV9NRURJVU0gMHg5MTQ3Ci0jZW5kaWYKLSNpZm5kZWYgR0xfREVCVUdfU0VWRVJJVFlfTE9XCi0jZGVmaW5lIEdMX0RFQlVHX1NFVkVSSVRZX0xPVyAweDkxNDgKLSNlbmRpZgotI2lmbmRlZiBHTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT04KLSNkZWZpbmUgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OIDB4ODI2QgotI2VuZGlmCi0KLSNpZm5kZWYgR0xfREVCVUdfU09VUkNFX0FQSQotI2RlZmluZSBHTF9ERUJVR19TT1VSQ0VfQVBJIDB4ODI0NgotI2VuZGlmCi0jaWZuZGVmIEdMX0RFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNCi0jZGVmaW5lIEdMX0RFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNIDB4ODI0NwotI2VuZGlmCi0jaWZuZGVmIEdMX0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIKLSNkZWZpbmUgR0xfREVCVUdfU09VUkNFX1NIQURFUl9DT01QSUxFUiAweDgyNDgKLSNlbmRpZgotI2lmbmRlZiBHTF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFkKLSNkZWZpbmUgR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZIDB4ODI0OQotI2VuZGlmCi0jaWZuZGVmIEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTgotI2RlZmluZSBHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04gMHg4MjRBCi0jZW5kaWYKLSNpZm5kZWYgR0xfREVCVUdfU09VUkNFX09USEVSCi0jZGVmaW5lIEdMX0RFQlVHX1NPVVJDRV9PVEhFUiAweDgyNEIKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoR1NUX0RJU0FCTEVfR1NUX0RFQlVHKQotc3RhdGljIGlubGluZSBjb25zdCBnY2hhciAqCi1fZGVidWdfc2V2ZXJpdHlfdG9fc3RyaW5nIChHTGVudW0gc2V2ZXJpdHkpCi17Ci0gIHN3aXRjaCAoc2V2ZXJpdHkpIHsKLSAgICBjYXNlIEdMX0RFQlVHX1NFVkVSSVRZX0hJR0g6Ci0gICAgICByZXR1cm4gImhpZ2giOwotICAgIGNhc2UgR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNOgotICAgICAgcmV0dXJuICJtZWRpdW0iOwotICAgIGNhc2UgR0xfREVCVUdfU0VWRVJJVFlfTE9XOgotICAgICAgcmV0dXJuICJsb3ciOwotICAgIGNhc2UgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OOgotICAgICAgcmV0dXJuICJub3RpZmljYXRpb24iOwotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gImludmFsaWQiOwotICB9Ci19Ci0KLXN0YXRpYyBpbmxpbmUgY29uc3QgZ2NoYXIgKgotX2RlYnVnX3NvdXJjZV90b19zdHJpbmcgKEdMZW51bSBzb3VyY2UpCi17Ci0gIHN3aXRjaCAoc291cmNlKSB7Ci0gICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfQVBJOgotICAgICAgcmV0dXJuICJBUEkiOwotICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX1dJTkRPV19TWVNURU06Ci0gICAgICByZXR1cm4gIndpbnN5cyI7Ci0gICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJTEVSOgotICAgICAgcmV0dXJuICJzaGFkZXIgY29tcGlsZXIiOwotICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZOgotICAgICAgcmV0dXJuICJ0aGlyZCBwYXJ0eSI7Ci0gICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT046Ci0gICAgICByZXR1cm4gImFwcGxpY2F0aW9uIjsKLSAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9PVEhFUjoKLSAgICAgIHJldHVybiAib3RoZXIiOwotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gImludmFsaWQiOwotICB9Ci19Ci0KLXN0YXRpYyBpbmxpbmUgY29uc3QgZ2NoYXIgKgotX2RlYnVnX3R5cGVfdG9fc3RyaW5nIChHTGVudW0gdHlwZSkKLXsKLSAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBHTF9ERUJVR19UWVBFX0VSUk9SOgotICAgICAgcmV0dXJuICJlcnJvciI7Ci0gICAgY2FzZSBHTF9ERUJVR19UWVBFX0RFUFJFQ0FURURfQkVIQVZJT1VSOgotICAgICAgcmV0dXJuICJkZXByZWNhdGVkIjsKLSAgICBjYXNlIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9VUjoKLSAgICAgIHJldHVybiAidW5kZWZpbmVkIjsKLSAgICBjYXNlIEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFk6Ci0gICAgICByZXR1cm4gInBvcnRhYmlsaXR5IjsKLSAgICBjYXNlIEdMX0RFQlVHX1RZUEVfUEVSRk9STUFOQ0U6Ci0gICAgICByZXR1cm4gInBlcmZvcm1hbmNlIjsKLSAgICBjYXNlIEdMX0RFQlVHX1RZUEVfTUFSS0VSOgotICAgICAgcmV0dXJuICJkZWJ1ZyBtYXJrZXIiOwotICAgIGNhc2UgR0xfREVCVUdfVFlQRV9PVEhFUjoKLSAgICAgIHJldHVybiAib3RoZXIiOwotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gImludmFsaWQiOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkIEdTVEdMQVBJCi1fZ3N0X2dsX2RlYnVnX2NhbGxiYWNrIChHTGVudW0gc291cmNlLCBHTGVudW0gdHlwZSwgR0x1aW50IGlkLCBHTGVudW0gc2V2ZXJpdHksCi0gICAgR0xzaXplaSBsZW5ndGgsIGNvbnN0IGdjaGFyICogbWVzc2FnZSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotewotICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSB1c2VyX2RhdGE7Ci0gIGNvbnN0IGdjaGFyICpzZXZlcml0eV9zdHIgPSBfZGVidWdfc2V2ZXJpdHlfdG9fc3RyaW5nIChzZXZlcml0eSk7Ci0gIGNvbnN0IGdjaGFyICpzb3VyY2Vfc3RyID0gX2RlYnVnX3NvdXJjZV90b19zdHJpbmcgKHNvdXJjZSk7Ci0gIGNvbnN0IGdjaGFyICp0eXBlX3N0ciA9IF9kZWJ1Z190eXBlX3RvX3N0cmluZyAodHlwZSk7Ci0KLSAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBHTF9ERUJVR19UWVBFX0VSUk9SOgotICAgIGNhc2UgR0xfREVCVUdfVFlQRV9VTkRFRklORURfQkVIQVZJT1VSOgotICAgICAgR1NUX0VSUk9SX09CSkVDVCAoY29udGV4dCwgIiVzOiBHTCAlcyBmcm9tICVzIGlkOiV1LCAlcyIsIHNldmVyaXR5X3N0ciwKLSAgICAgICAgICB0eXBlX3N0ciwgc291cmNlX3N0ciwgaWQsIG1lc3NhZ2UpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHTF9ERUJVR19UWVBFX0RFUFJFQ0FURURfQkVIQVZJT1VSOgotICAgIGNhc2UgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWToKLSAgICAgIEdTVF9GSVhNRV9PQkpFQ1QgKGNvbnRleHQsICIlczogR0wgJXMgZnJvbSAlcyBpZDoldSwgJXMiLCBzZXZlcml0eV9zdHIsCi0gICAgICAgICAgdHlwZV9zdHIsIHNvdXJjZV9zdHIsIGlkLCBtZXNzYWdlKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRToKLSAgICAgIEdTVF9DQVRfREVCVUdfT0JKRUNUIChnc3RfcGVyZm9ybWFuY2UsIGNvbnRleHQsICIlczogR0wgJXMgZnJvbSAlcyBpZDoldSwiCi0gICAgICAgICAgIiAlcyIsIHNldmVyaXR5X3N0ciwgdHlwZV9zdHIsIHNvdXJjZV9zdHIsIGlkLCBtZXNzYWdlKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHU1RfREVCVUdfT0JKRUNUIChjb250ZXh0LCAiJXM6IEdMICVzIGZyb20gJXMgaWQ6JXUsICVzIiwgc2V2ZXJpdHlfc3RyLAotICAgICAgICAgIHR5cGVfc3RyLCBzb3VyY2Vfc3RyLCBpZCwgbWVzc2FnZSk7Ci0gICAgICBicmVhazsKLSAgfQotfQotI2VuZGlmCi0KIHN0YXRpYyBnYm9vbGVhbgogX2NyZWF0ZV9jb250ZXh0X2luZm8gKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMQVBJIGdsX2FwaSwgZ2ludCAqIGdsX21ham9yLAogICAgIGdpbnQgKiBnbF9taW5vciwgR0Vycm9yICoqIGVycm9yKQpAQCAtMTE5MCw2ICsxMDUzLDkgQEAKIHN0YXRpYyB2b2lkCiBfdW5sb2NrX2NyZWF0ZV90aHJlYWQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCiB7CisgIGNvbnRleHQtPnByaXYtPmNyZWF0ZWQgPSBUUlVFOworICBHU1RfSU5GT19PQkpFQ1QgKGNvbnRleHQsICJnbCB0aHJlYWQgcnVubmluZyIpOworICBnX2NvbmRfc2lnbmFsICgmY29udGV4dC0+cHJpdi0+Y3JlYXRlX2NvbmQpOwogICBnX211dGV4X3VubG9jayAoJmNvbnRleHQtPnByaXYtPnJlbmRlcl9sb2NrKTsKIH0KIApAQCAtMTIyMCw3ICsxMDg2LDYgQEAKIHsKICAgR3N0R0xDb250ZXh0Q2xhc3MgKmNvbnRleHRfY2xhc3M7CiAgIEdzdEdMV2luZG93Q2xhc3MgKndpbmRvd19jbGFzczsKLSAgR3N0R0xGdW5jcyAqZ2w7CiAgIEdzdEdMQVBJIGNvbXBpbGVkX2FwaSwgdXNlcl9hcGksIGdsX2FwaSwgZGlzcGxheV9hcGk7CiAgIGdjaGFyICphcGlfc3RyaW5nOwogICBnY2hhciAqY29tcGlsZWRfYXBpX3M7CkBAIC0xMjU2LDcgKzExMjEsNiBAQAogICAgIH0KICAgfQogCi0gIGdsID0gY29udGV4dC0+Z2xfdnRhYmxlOwogICBjb21waWxlZF9hcGkgPSBfY29tcGlsZWRfYXBpICgpOwogICBjb21waWxlZF9hcGlfcyA9IGdzdF9nbF9hcGlfdG9fc3RyaW5nIChjb21waWxlZF9hcGkpOwogCkBAIC0xMzQ0LDE1ICsxMjA4LDkgQEAKIAogICBjb250ZXh0LT5wcml2LT5hbGl2ZSA9IFRSVUU7CiAKLSAgaWYgKGdsLT5EZWJ1Z01lc3NhZ2VDYWxsYmFjaykgewogI2lmICFkZWZpbmVkKEdTVF9ESVNBQkxFX0dTVF9ERUJVRykKLSAgICBHU1RfSU5GT19PQkpFQ1QgKGNvbnRleHQsICJFbmFibGluZyBHTCBjb250ZXh0IGRlYnVnZ2luZyIpOwotICAgIC8qIGVuYWJsZSB0aGVtIGFsbCAqLwotICAgIGdsLT5EZWJ1Z01lc3NhZ2VDb250cm9sIChHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgR0xfRE9OVF9DQVJFLCAwLCAwLAotICAgICAgICBHTF9UUlVFKTsKLSAgICBnbC0+RGVidWdNZXNzYWdlQ2FsbGJhY2sgKF9nc3RfZ2xfZGVidWdfY2FsbGJhY2ssIGNvbnRleHQpOworICBfZ3N0X2dsX2RlYnVnX2VuYWJsZSAoY29udGV4dCk7CiAjZW5kaWYKLSAgfQogCiAgIGlmIChvdGhlcl9jb250ZXh0KSB7CiAgICAgR1NUX0RFQlVHX09CSkVDVCAoY29udGV4dCwgIlVucmVmZmluZyBvdGhlcl9jb250ZXh0ICUiIEdTVF9QVFJfRk9STUFULApAQCAtMTM2MCw5ICsxMjE4LDggQEAKICAgICBnc3Rfb2JqZWN0X3VucmVmIChvdGhlcl9jb250ZXh0KTsKICAgfQogCi0gIGdfY29uZF9zaWduYWwgKCZjb250ZXh0LT5wcml2LT5jcmVhdGVfY29uZCk7Ci0KLS8vICBnX211dGV4X3VubG9jayAoJmNvbnRleHQtPnByaXYtPnJlbmRlcl9sb2NrKTsKKyAgLyogdW5sb2NraW5nIG9mIHRoZSByZW5kZXJfbG9jayBoYXBwZW5zIHdoZW4gdGhlCisgICAqIGNvbnRleHQncyBsb29wIGlzIHJ1bm5pbmcgZnJvbSBpbnNpZGUgdGhhdCBsb29wICovCiAgIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlX2FzeW5jIChjb250ZXh0LT53aW5kb3csCiAgICAgICAoR3N0R0xXaW5kb3dDQikgX3VubG9ja19jcmVhdGVfdGhyZWFkLCBjb250ZXh0LCBOVUxMKTsKIApAQCAtMTM3MSw3ICsxMjI4LDYgQEAKICAgR1NUX0lORk9fT0JKRUNUIChjb250ZXh0LCAibG9vcCBleGl0ZWQiKTsKIAogICBnX211dGV4X2xvY2sgKCZjb250ZXh0LT5wcml2LT5yZW5kZXJfbG9jayk7Ci0KICAgY29udGV4dC0+cHJpdi0+YWxpdmUgPSBGQUxTRTsKIAogICBnc3RfZ2xfY29udGV4dF9hY3RpdmF0ZSAoY29udGV4dCwgRkFMU0UpOwpAQCAtMTM4Nyw4ICsxMjQzLDcgQEAKICAgICB3aW5kb3dfY2xhc3MtPmNsb3NlIChjb250ZXh0LT53aW5kb3cpOwogICB9CiAKLSAgZ19jb25kX3NpZ25hbCAoJmNvbnRleHQtPnByaXYtPmRlc3Ryb3lfY29uZCk7Ci0KKyAgY29udGV4dC0+cHJpdi0+Y3JlYXRlZCA9IEZBTFNFOwogICBnX211dGV4X3VubG9jayAoJmNvbnRleHQtPnByaXYtPnJlbmRlcl9sb2NrKTsKIAogICByZXR1cm4gTlVMTDsKQEAgLTEzOTgsNiArMTI1Myw5IEBACiAgICAgaWYgKG90aGVyX2NvbnRleHQpCiAgICAgICBnc3Rfb2JqZWN0X3VucmVmIChvdGhlcl9jb250ZXh0KTsKIAorICAgIC8qIEEgY29udGV4dCB0aGF0IGZhaWxzIHRvIGJlIGNyZWF0ZWQgaXMgY29uc2lkZXJlZCBjcmVhdGVkIGJ1dCBub3QgYWxpdmUKKyAgICAgKiBhbmQgd2lsbCBuZXZlciBiZSBhYmxlIHRvIGJlIGFsaXZlIGFzIGNyZWF0aW9uIGNhbid0IGhhcHBlbiAqLworICAgIGNvbnRleHQtPnByaXYtPmNyZWF0ZWQgPSBUUlVFOwogICAgIGdfY29uZF9zaWduYWwgKCZjb250ZXh0LT5wcml2LT5jcmVhdGVfY29uZCk7CiAgICAgZ19tdXRleF91bmxvY2sgKCZjb250ZXh0LT5wcml2LT5yZW5kZXJfbG9jayk7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDIwLDcgKzEyNzgsNyBAQAogewogICBHc3RHTENvbnRleHRDbGFzcyAqY29udGV4dF9jbGFzczsKIAotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCkpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCkpOwogICBjb250ZXh0X2NsYXNzID0gR1NUX0dMX0NPTlRFWFRfR0VUX0NMQVNTIChjb250ZXh0KTsKICAgZ19yZXR1cm5faWZfZmFpbCAoY29udGV4dF9jbGFzcy0+ZGVzdHJveV9jb250ZXh0ICE9IE5VTEwpOwogCkBAIC0xNDQ2LDcgKzEzMDQsNyBAQAogICBHc3RHTEFQSSBnbF9hcGk7CiAgIGdib29sZWFuIHJldDsKIAotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbnRleHQtPnByaXYtPmFjdGl2ZV90aHJlYWQgPT0gZ190aHJlYWRfc2VsZiAoKSwKICAgICAgIEZBTFNFKTsKIApAQCAtMTUzOCw3ICsxMzk2LDcgQEAKICAgR3N0R0xDb250ZXh0Q2xhc3MgKmNvbnRleHRfY2xhc3M7CiAgIGd1aW50cHRyIHJlc3VsdDsKIAotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpLCAwKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgMCk7CiAgIGNvbnRleHRfY2xhc3MgPSBHU1RfR0xfQ09OVEVYVF9HRVRfQ0xBU1MgKGNvbnRleHQpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAoY29udGV4dF9jbGFzcy0+Z2V0X2dsX2NvbnRleHQgIT0gTlVMTCwgMCk7CiAKQEAgLTE1NjIsNyArMTQyMCw3IEBACiB7CiAgIEdzdEdMQ29udGV4dENsYXNzICpjb250ZXh0X2NsYXNzOwogCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCksIDApOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCAwKTsKICAgY29udGV4dF9jbGFzcyA9IEdTVF9HTF9DT05URVhUX0dFVF9DTEFTUyAoY29udGV4dCk7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb250ZXh0X2NsYXNzLT5nZXRfZ2xfcGxhdGZvcm0gIT0gTlVMTCwgMCk7CiAKQEAgLTE1ODAsNyArMTQzOCw3IEBACiBHc3RHTERpc3BsYXkgKgogZ3N0X2dsX2NvbnRleHRfZ2V0X2Rpc3BsYXkgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCiB7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCksIE5VTEwpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBOVUxMKTsKIAogICByZXR1cm4gZ3N0X29iamVjdF9yZWYgKGNvbnRleHQtPmRpc3BsYXkpOwogfQpAQCAtMTYyMCwxMSArMTQ3OCwxMyBAQAogICBHc3RHTFdpbmRvdyAqd2luZG93OwogICBSdW5HZW5lcmljRGF0YSByZGF0YTsKIAotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCkpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCkpOwogICBnX3JldHVybl9pZl9mYWlsIChmdW5jICE9IE5VTEwpOwogCi0gIGlmIChHU1RfR0xfSVNfV1JBUFBFRF9DT05URVhUIChjb250ZXh0KSkgeworICBpZiAoR1NUX0lTX0dMX1dSQVBQRURfQ09OVEVYVCAoY29udGV4dCkpCiAgICAgZ19yZXR1cm5faWZfZmFpbCAoY29udGV4dC0+cHJpdi0+YWN0aXZlX3RocmVhZCA9PSBnX3RocmVhZF9zZWxmICgpKTsKKworICBpZiAoY29udGV4dC0+cHJpdi0+YWN0aXZlX3RocmVhZCA9PSBnX3RocmVhZF9zZWxmICgpKSB7CiAgICAgZnVuYyAoY29udGV4dCwgZGF0YSk7CiAgICAgcmV0dXJuOwogICB9CkBAIC0xNjU2LDcgKzE1MTYsNyBAQAogdm9pZAogZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX3ZlcnNpb24gKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGdpbnQgKiBtYWosIGdpbnQgKiBtaW4pCiB7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUIChjb250ZXh0KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSk7CiAgIGdfcmV0dXJuX2lmX2ZhaWwgKG1haiAhPSBOVUxMICYmIG1pbiAhPSBOVUxMKTsKIAogICBpZiAobWFqKQpAQCAtMTY4Miw3ICsxNTQyLDcgQEAKIGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMQVBJIGFwaSwKICAgICBnaW50IG1haiwgZ2ludCBtaW4pCiB7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOwogCiAgIGlmIChtYWogPiBjb250ZXh0LT5wcml2LT5nbF9tYWpvcikKICAgICByZXR1cm4gRkFMU0U7CkBAIC0xNzE2LDcgKzE1NzYsNyBAQAogewogICBHc3RHTENvbnRleHRDbGFzcyAqY29udGV4dF9jbGFzczsKIAotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGZlYXR1cmUgIT0gTlVMTCwgRkFMU0UpOwogCiAgIGNvbnRleHRfY2xhc3MgPSBHU1RfR0xfQ09OVEVYVF9HRVRfQ0xBU1MgKGNvbnRleHQpOwpAQCAtMTc0NSw2ICsxNjA1LDUwIEBACiAgIHJldHVybiBnX3ByaXZhdGVfZ2V0ICgmY3VycmVudF9jb250ZXh0X2tleSk7CiB9CiAKKy8qKgorICogZ3N0X2dsX2NvbnRleHRfaXNfc2hhcmVkOgorICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAorICoKKyAqIFJldHVybnM6IFdoZXRoZXIgdGhlICNHc3RHTENvbnRleHQgaGFzIGJlZW4gc2hhcmVkIHdpdGggYW5vdGhlciAjR3N0R0xDb250ZXh0CisgKgorICogU2luY2U6IDEuOAorICovCitnYm9vbGVhbgorZ3N0X2dsX2NvbnRleHRfaXNfc2hhcmVkIChHc3RHTENvbnRleHQgKiBjb250ZXh0KQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CisgIGlmIChHU1RfSVNfR0xfV1JBUFBFRF9DT05URVhUIChjb250ZXh0KSkKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoY29udGV4dC0+cHJpdi0+YWN0aXZlX3RocmVhZCwgRkFMU0UpOworICBlbHNlCisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbnRleHQtPnByaXYtPmFsaXZlLCBGQUxTRSk7CisKKyAgcmV0dXJuIF9jb250ZXh0X3NoYXJlX2dyb3VwX2lzX3NoYXJlZCAoY29udGV4dC0+cHJpdi0+c2hhcmVncm91cCk7Cit9CisKKy8qKgorICogZ3N0X2dsX2NvbnRleHRfc2V0X3NoYXJlZF93aXRoOgorICogQGNvbnRleHQ6IGEgd3JhcHBlZCAjR3N0R0xDb250ZXh0CisgKiBAc2hhcmU6IGFub3RoZXIgI0dzdEdMQ29udGV4dAorICoKKyAqIFdpbGwgaW50ZXJuYWxseSBzZXQgQGNvbnRleHQgYXMgc2hhcmVkIHdpdGggQHNoYXJlCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfY29udGV4dF9zZXRfc2hhcmVkX3dpdGggKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMQ29udGV4dCAqIHNoYXJlKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCkpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoc2hhcmUpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoIWdzdF9nbF9jb250ZXh0X2lzX3NoYXJlZCAoY29udGV4dCkpOworICAvKiBYWFg6IG1heSBiZSBhIGxpdHRsZSB0b28gc3RyaWN0ICovCisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XUkFQUEVEX0NPTlRFWFQgKGNvbnRleHQpKTsKKworICBpZiAoY29udGV4dC0+cHJpdi0+c2hhcmVncm91cCkKKyAgICBfY29udGV4dF9zaGFyZV9ncm91cF91bnJlZiAoY29udGV4dC0+cHJpdi0+c2hhcmVncm91cCk7CisgIGNvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXAgPQorICAgICAgX2NvbnRleHRfc2hhcmVfZ3JvdXBfcmVmIChzaGFyZS0+cHJpdi0+c2hhcmVncm91cCk7Cit9CisKIHN0YXRpYyBHc3RHTEFQSQogZ3N0X2dsX3dyYXBwZWRfY29udGV4dF9nZXRfZ2xfYXBpIChHc3RHTENvbnRleHQgKiBjb250ZXh0KQogewpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5oCmluZGV4IDE2YjlkMTEuLjVjYmM4YWQgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250ZXh0LmgKQEAgLTMwLDggKzMwLDggQEAKICNkZWZpbmUgR1NUX0dMX1RZUEVfQ09OVEVYVCAgICAgICAgIChnc3RfZ2xfY29udGV4dF9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVChvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVCwgR3N0R0xDb250ZXh0KSkKICNkZWZpbmUgR1NUX0dMX0NPTlRFWFRfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoayksIEdTVF9HTF9UWVBFX0NPTlRFWFQsIEdzdEdMQ29udGV4dENsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0lTX0NPTlRFWFQobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFQpKQotI2RlZmluZSBHU1RfR0xfSVNfQ09OVEVYVF9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfQ09OVEVYVCkpCisjZGVmaW5lIEdTVF9JU19HTF9DT05URVhUKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUKSkKKyNkZWZpbmUgR1NUX0lTX0dMX0NPTlRFWFRfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX0NPTlRFWFQpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhULCBHc3RHTENvbnRleHRDbGFzcykpCiBHVHlwZSBnc3RfZ2xfY29udGV4dF9nZXRfdHlwZSAgICAgKHZvaWQpOwogCkBAIC0xMzYsNyArMTM2LDcgQEAKIHZvaWQgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZGVzdHJveSAgICAgICAgICAoR3N0R0xDb250ZXh0ICpjb250ZXh0KTsKIAogZ3BvaW50ZXIgICAgICBnc3RfZ2xfY29udGV4dF9kZWZhdWx0X2dldF9wcm9jX2FkZHJlc3MgKEdzdEdMQVBJIGdsX2FwaSwgY29uc3QgZ2NoYXIgKm5hbWUpOwotZ3BvaW50ZXIgICAgICBnc3RfZ2xfY29udGV4dF9nZXRfcHJvY19hZGRyZXNzX3dpdGhfcGxhdGZvcm0gKEdzdEdMUGxhdGZvcm0sIEdzdEdMQVBJIGdsX2FwaSwgY29uc3QgZ2NoYXIgKm5hbWUpOworZ3BvaW50ZXIgICAgICBnc3RfZ2xfY29udGV4dF9nZXRfcHJvY19hZGRyZXNzX3dpdGhfcGxhdGZvcm0gKEdzdEdMUGxhdGZvcm0gY29udGV4dF90eXBlLCBHc3RHTEFQSSBnbF9hcGksIGNvbnN0IGdjaGFyICpuYW1lKTsKIAogZ2Jvb2xlYW4gICAgICBnc3RfZ2xfY29udGV4dF9zZXRfd2luZG93IChHc3RHTENvbnRleHQgKmNvbnRleHQsIEdzdEdMV2luZG93ICp3aW5kb3cpOwogR3N0R0xXaW5kb3cgKiBnc3RfZ2xfY29udGV4dF9nZXRfd2luZG93IChHc3RHTENvbnRleHQgKmNvbnRleHQpOwpAQCAtMTQ1LDkgKzE0NSwxMiBAQAogZ2Jvb2xlYW4gICAgICBnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTEFQSSBhcGksIGdpbnQgbWFqLCBnaW50IG1pbik7CiBnYm9vbGVhbiAgICAgIGdzdF9nbF9jb250ZXh0X2NoZWNrX2ZlYXR1cmUgKEdzdEdMQ29udGV4dCAqY29udGV4dCwgY29uc3QgZ2NoYXIgKmZlYXR1cmUpOwogCi1ndWludHB0ciAgICAgIGdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50X2dsX2NvbnRleHQgICAgIChHc3RHTFBsYXRmb3JtIHBsYXRmb3JtKTsKK2d1aW50cHRyICAgICAgZ3N0X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnRfZ2xfY29udGV4dCAgICAgKEdzdEdMUGxhdGZvcm0gY29udGV4dF90eXBlKTsKIEdzdEdMQVBJICAgICAgZ3N0X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnRfZ2xfYXBpICAgICAgICAgKEdzdEdMUGxhdGZvcm0gcGxhdGZvcm0sIGd1aW50ICptYWpvciwgZ3VpbnQgKm1pbm9yKTsKIAorZ2Jvb2xlYW4gICAgICBnc3RfZ2xfY29udGV4dF9pc19zaGFyZWQgICAgICAgICAgICAgICAgICAoR3N0R0xDb250ZXh0ICogY29udGV4dCk7Cit2b2lkICAgICAgICAgIGdzdF9nbF9jb250ZXh0X3NldF9zaGFyZWRfd2l0aCAgICAgICAgICAgIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTENvbnRleHQgKiBzaGFyZSk7CisKIGdib29sZWFuIGdzdF9nbF9jb250ZXh0X2ZpbGxfaW5mbyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR0Vycm9yICoqIGVycm9yKTsKIAogLyogRklYTUU6IHJlbW92ZSAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udHJvbGJpbmRpbmdwcm94eS5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udHJvbGJpbmRpbmdwcm94eS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNGRkZDgKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmMKQEAgLTAsMCArMSwxNTUgQEAKKy8qIAorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuaCIKKworR19ERUZJTkVfVFlQRSAoR3N0R0xDb250cm9sQmluZGluZ1Byb3h5LAorICAgIGdzdF9nbF9jb250cm9sX2JpbmRpbmdfcHJveHksIEdTVF9UWVBFX0NPTlRST0xfQklORElORyk7CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5X2luaXQgKEdzdEdMQ29udHJvbEJpbmRpbmdQcm94eSAqIHNlbGYpCit7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2dsX2NvbnRyb2xfYmluZGluZ19wcm94eV9zeW5jX3ZhbHVlcyAoR3N0Q29udHJvbEJpbmRpbmcgKiBiaW5kaW5nLAorICAgIEdzdE9iamVjdCAqIG9iamVjdCwgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCwgR3N0Q2xvY2tUaW1lIGxhc3Rfc3luYykKK3sKKyAgR3N0R0xDb250cm9sQmluZGluZ1Byb3h5ICpzZWxmID0gKEdzdEdMQ29udHJvbEJpbmRpbmdQcm94eSAqKQorICAgICAgYmluZGluZzsKKyAgR3N0Q29udHJvbEJpbmRpbmcgKnJlZl9iaW5kaW5nOworICBnYm9vbGVhbiByZXQgPSBUUlVFOworCisgIHJlZl9iaW5kaW5nID0gZ3N0X29iamVjdF9nZXRfY29udHJvbF9iaW5kaW5nIChzZWxmLT5yZWZfb2JqZWN0LAorICAgICAgc2VsZi0+cHJvcGVydHlfbmFtZSk7CisKKyAgaWYgKHJlZl9iaW5kaW5nKSB7CisgICAgcmV0ID0gZ3N0X2NvbnRyb2xfYmluZGluZ19zeW5jX3ZhbHVlcyAocmVmX2JpbmRpbmcsIHNlbGYtPnJlZl9vYmplY3QsCisgICAgICAgIHRpbWVzdGFtcCwgbGFzdF9zeW5jKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChyZWZfYmluZGluZyk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgR1ZhbHVlICoKK2dzdF9nbF9jb250cm9sX2JpbmRpbmdfcHJveHlfZ2V0X3ZhbHVlIChHc3RDb250cm9sQmluZGluZyAqIGJpbmRpbmcsCisgICAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCkKK3sKKyAgR3N0R0xDb250cm9sQmluZGluZ1Byb3h5ICpzZWxmID0gKEdzdEdMQ29udHJvbEJpbmRpbmdQcm94eSAqKQorICAgICAgYmluZGluZzsKKyAgR3N0Q29udHJvbEJpbmRpbmcgKnJlZl9iaW5kaW5nOworICBHVmFsdWUgKnJldCA9IE5VTEw7CisKKyAgcmVmX2JpbmRpbmcgPSBnc3Rfb2JqZWN0X2dldF9jb250cm9sX2JpbmRpbmcgKHNlbGYtPnJlZl9vYmplY3QsCisgICAgICBzZWxmLT5wcm9wZXJ0eV9uYW1lKTsKKworICBpZiAocmVmX2JpbmRpbmcpIHsKKyAgICByZXQgPSBnc3RfY29udHJvbF9iaW5kaW5nX2dldF92YWx1ZSAocmVmX2JpbmRpbmcsIHRpbWVzdGFtcCk7CisgICAgZ3N0X29iamVjdF91bnJlZiAocmVmX2JpbmRpbmcpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF92YWx1ZV9hcnJheSAoR3N0Q29udHJvbEJpbmRpbmcgKiBiaW5kaW5nLAorICAgIEdzdENsb2NrVGltZSB0aW1lc3RhbXAsIEdzdENsb2NrVGltZSBpbnRlcnZhbCwgZ3VpbnQgbl92YWx1ZXMsCisgICAgZ3BvaW50ZXIgdmFsdWVzKQoreworICBHc3RHTENvbnRyb2xCaW5kaW5nUHJveHkgKnNlbGYgPSAoR3N0R0xDb250cm9sQmluZGluZ1Byb3h5ICopCisgICAgICBiaW5kaW5nOworICBHc3RDb250cm9sQmluZGluZyAqcmVmX2JpbmRpbmc7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIHJlZl9iaW5kaW5nID0gZ3N0X29iamVjdF9nZXRfY29udHJvbF9iaW5kaW5nIChzZWxmLT5yZWZfb2JqZWN0LAorICAgICAgc2VsZi0+cHJvcGVydHlfbmFtZSk7CisKKyAgaWYgKHJlZl9iaW5kaW5nKSB7CisgICAgcmV0ID0gZ3N0X2NvbnRyb2xfYmluZGluZ19nZXRfdmFsdWVfYXJyYXkgKHJlZl9iaW5kaW5nLCB0aW1lc3RhbXAsCisgICAgICAgIGludGVydmFsLCBuX3ZhbHVlcywgdmFsdWVzKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChyZWZfYmluZGluZyk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9nbF9jb250cm9sX2JpbmRpbmdfcHJveHlfZ2V0X2dfdmFsdWVfYXJyYXkgKEdzdENvbnRyb2xCaW5kaW5nICoKKyAgICBiaW5kaW5nLCBHc3RDbG9ja1RpbWUgdGltZXN0YW1wLCBHc3RDbG9ja1RpbWUgaW50ZXJ2YWwsIGd1aW50IG5fdmFsdWVzLAorICAgIEdWYWx1ZSAqIHZhbHVlcykKK3sKKyAgR3N0R0xDb250cm9sQmluZGluZ1Byb3h5ICpzZWxmID0gKEdzdEdMQ29udHJvbEJpbmRpbmdQcm94eSAqKQorICAgICAgYmluZGluZzsKKyAgR3N0Q29udHJvbEJpbmRpbmcgKnJlZl9iaW5kaW5nOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICByZWZfYmluZGluZyA9IGdzdF9vYmplY3RfZ2V0X2NvbnRyb2xfYmluZGluZyAoc2VsZi0+cmVmX29iamVjdCwKKyAgICAgIHNlbGYtPnByb3BlcnR5X25hbWUpOworCisgIGlmIChyZWZfYmluZGluZykgeworICAgIHJldCA9IGdzdF9jb250cm9sX2JpbmRpbmdfZ2V0X2dfdmFsdWVfYXJyYXkgKHJlZl9iaW5kaW5nLCB0aW1lc3RhbXAsCisgICAgICAgIGludGVydmFsLCBuX3ZhbHVlcywgdmFsdWVzKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChyZWZfYmluZGluZyk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCisKK3N0YXRpYyB2b2lkCisgICAgZ3N0X2dsX2NvbnRyb2xfYmluZGluZ19wcm94eV9jbGFzc19pbml0CisgICAgKEdzdEdMQ29udHJvbEJpbmRpbmdQcm94eUNsYXNzICoga2xhc3MpCit7CisgIEdzdENvbnRyb2xCaW5kaW5nQ2xhc3MgKmNiX2NsYXNzID0gR1NUX0NPTlRST0xfQklORElOR19DTEFTUyAoa2xhc3MpOworCisgIGNiX2NsYXNzLT5zeW5jX3ZhbHVlcyA9IGdzdF9nbF9jb250cm9sX2JpbmRpbmdfcHJveHlfc3luY192YWx1ZXM7CisgIGNiX2NsYXNzLT5nZXRfdmFsdWUgPSBnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF92YWx1ZTsKKyAgY2JfY2xhc3MtPmdldF92YWx1ZV9hcnJheSA9IGdzdF9nbF9jb250cm9sX2JpbmRpbmdfcHJveHlfZ2V0X3ZhbHVlX2FycmF5OworICBjYl9jbGFzcy0+Z2V0X2dfdmFsdWVfYXJyYXkgPSBnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF9nX3ZhbHVlX2FycmF5OworfQorCitHc3RDb250cm9sQmluZGluZyAqCitnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5X25ldyAoR3N0T2JqZWN0ICogb2JqZWN0LAorICAgIGNvbnN0IGdjaGFyICogcHJvcGVydHlfbmFtZSwgR3N0T2JqZWN0ICogcmVmX29iamVjdCwKKyAgICBjb25zdCBnY2hhciAqIHJlZl9wcm9wZXJ0eV9uYW1lKQoreworICBHc3RHTENvbnRyb2xCaW5kaW5nUHJveHkgKnNlbGYgPQorICAgICAgZ19vYmplY3RfbmV3IChHU1RfVFlQRV9HTF9DT05UUk9MX0JJTkRJTkdfUFJPWFksICJvYmplY3QiLCBvYmplY3QsCisgICAgICAibmFtZSIsIHByb3BlcnR5X25hbWUsIE5VTEwpOworCisgIHNlbGYtPnJlZl9vYmplY3QgPSByZWZfb2JqZWN0OworICBzZWxmLT5wcm9wZXJ0eV9uYW1lID0gcmVmX3Byb3BlcnR5X25hbWU7CisKKyAgcmV0dXJuIChHc3RDb250cm9sQmluZGluZyAqKSBzZWxmOworfQorCit2b2lkCitnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdzdE9iamVjdCAqIG9iamVjdCwKKyAgICBHc3RPYmplY3QgKiByZWZfb2JqZWN0LCBjb25zdCBnY2hhciAqIHByb3ApCit7CisgIEdzdENvbnRyb2xCaW5kaW5nICpjYjsKKworICBjYiA9IGdzdF9nbF9jb250cm9sX2JpbmRpbmdfcHJveHlfbmV3IChvYmplY3QsIHByb3AsIHJlZl9vYmplY3QsIHByb3ApOworICBnc3Rfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmcgKG9iamVjdCwgY2IpOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udHJvbGJpbmRpbmdwcm94eS5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udHJvbGJpbmRpbmdwcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYTkzMTAKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE2IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX0dMX1BST1hZX0NPTlRST0xfQklORElOR19IX18KKyNkZWZpbmUgX19HU1RfR0xfUFJPWFlfQ09OVFJPTF9CSU5ESU5HX0hfXworCisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisKK0dfQkVHSU5fREVDTFMKKworR1R5cGUgZ3N0X2dsX2NvbnRyb2xfYmluZGluZ19wcm94eV9nZXRfdHlwZSAodm9pZCk7CisjZGVmaW5lIEdTVF9UWVBFX0dMX0NPTlRST0xfQklORElOR19QUk9YWSAgKGdzdF9nbF9jb250cm9sX2JpbmRpbmdfcHJveHlfZ2V0X3R5cGUoKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQ29udHJvbEJpbmRpbmdQcm94eSBHc3RHTENvbnRyb2xCaW5kaW5nUHJveHk7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xDb250cm9sQmluZGluZ1Byb3h5Q2xhc3MgR3N0R0xDb250cm9sQmluZGluZ1Byb3h5Q2xhc3M7CisKK3N0cnVjdCBfR3N0R0xDb250cm9sQmluZGluZ1Byb3h5Cit7CisgIEdzdENvbnRyb2xCaW5kaW5nIHBhcmVudDsKKworICBHc3RPYmplY3QgKnJlZl9vYmplY3Q7CisgIGNvbnN0IGdjaGFyICpwcm9wZXJ0eV9uYW1lOworfTsKKworc3RydWN0IF9Hc3RHTENvbnRyb2xCaW5kaW5nUHJveHlDbGFzcworeworICBHc3RDb250cm9sQmluZGluZ0NsYXNzIHBhcmVudF9jbGFzczsKK307CisKK0dzdENvbnRyb2xCaW5kaW5nICogICAgIGdzdF9nbF9jb250cm9sX2JpbmRpbmdfcHJveHlfbmV3ICAgICAgICAgICAgKEdzdE9iamVjdCAqIG9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogcHJvcGVydHlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdE9iamVjdCAqIHJlZl9vYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIHJlZl9wcm9wZXJ0eV9uYW1lKTsKKwordm9pZCAgICAgICAgICAgICAgICAgICAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5ICAgICAoR3N0T2JqZWN0ICogb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0T2JqZWN0ICogcmVmX29iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogcHJvcCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9HTF9QUk9YWV9DT05UUk9MX0JJTkRJTkdfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkZWJ1Zy5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yjg5YmY2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuYwpAQCAtMCwwICsxLDUxOCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnbC5oIgorI2luY2x1ZGUgImdzdGdsZGVidWcuaCIKKyNpbmNsdWRlIDxnbGliL2dwcmludGYuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworLyoqCisgKiBTRUNUSU9OOmdzdGdsZGVidWcKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogaGVscGVyIHJvdXRpbmVzIGZvciBkZWFsaW5nIHdpdGggT3BlbkdMIGRlYnVnZ2luZworICogQHRpdGxlOiBPcGVuR0wgZGVidWdnaW5nCisgKiBAc2VlX2Fsc286ICNHc3RHTENvbnRleHQKKyAqLworCisjZGVmaW5lIEFTWU5DX0RFQlVHX0ZJTExFRCAoMSA8PCAwKQorI2RlZmluZSBBU1lOQ19ERUJVR19GUk9aRU4gKDEgPDwgMSkKKworLyogY29tcGF0aWJpbGl0eSBkZWZpbmVzICovCisjaWZuZGVmIEdMX0RFQlVHX1RZUEVfRVJST1IKKyNkZWZpbmUgR0xfREVCVUdfVFlQRV9FUlJPUiAweDgyNEMKKyNlbmRpZgorI2lmbmRlZiBHTF9ERUJVR19UWVBFX0RFUFJFQ0FURURfQkVIQVZJT1IKKyNkZWZpbmUgR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SIDB4ODI0RAorI2VuZGlmCisjaWZuZGVmIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SCisjZGVmaW5lIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SIDB4ODI0RQorI2VuZGlmCisjaWZuZGVmIEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkKKyNkZWZpbmUgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWSAweDgyNEYKKyNlbmRpZgorI2lmbmRlZiBHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFCisjZGVmaW5lIEdMX0RFQlVHX1RZUEVfUEVSRk9STUFOQ0UgMHg4MjUwCisjZW5kaWYKKyNpZm5kZWYgR0xfREVCVUdfVFlQRV9NQVJLRVIKKyNkZWZpbmUgR0xfREVCVUdfVFlQRV9NQVJLRVIgMHg4MjY4CisjZW5kaWYKKyNpZm5kZWYgR0xfREVCVUdfVFlQRV9PVEhFUgorI2RlZmluZSBHTF9ERUJVR19UWVBFX09USEVSIDB4ODI1MQorI2VuZGlmCisKKyNpZm5kZWYgR0xfREVCVUdfU0VWRVJJVFlfSElHSAorI2RlZmluZSBHTF9ERUJVR19TRVZFUklUWV9ISUdIIDB4OTE0NgorI2VuZGlmCisjaWZuZGVmIEdMX0RFQlVHX1NFVkVSSVRZX01FRElVTQorI2RlZmluZSBHTF9ERUJVR19TRVZFUklUWV9NRURJVU0gMHg5MTQ3CisjZW5kaWYKKyNpZm5kZWYgR0xfREVCVUdfU0VWRVJJVFlfTE9XCisjZGVmaW5lIEdMX0RFQlVHX1NFVkVSSVRZX0xPVyAweDkxNDgKKyNlbmRpZgorI2lmbmRlZiBHTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT04KKyNkZWZpbmUgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OIDB4ODI2QgorI2VuZGlmCisKKyNpZm5kZWYgR0xfREVCVUdfU09VUkNFX0FQSQorI2RlZmluZSBHTF9ERUJVR19TT1VSQ0VfQVBJIDB4ODI0NgorI2VuZGlmCisjaWZuZGVmIEdMX0RFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNCisjZGVmaW5lIEdMX0RFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNIDB4ODI0NworI2VuZGlmCisjaWZuZGVmIEdMX0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIKKyNkZWZpbmUgR0xfREVCVUdfU09VUkNFX1NIQURFUl9DT01QSUxFUiAweDgyNDgKKyNlbmRpZgorI2lmbmRlZiBHTF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFkKKyNkZWZpbmUgR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZIDB4ODI0OQorI2VuZGlmCisjaWZuZGVmIEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTgorI2RlZmluZSBHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04gMHg4MjRBCisjZW5kaWYKKyNpZm5kZWYgR0xfREVCVUdfU09VUkNFX09USEVSCisjZGVmaW5lIEdMX0RFQlVHX1NPVVJDRV9PVEhFUiAweDgyNEIKKyNlbmRpZgorCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfcGVyZm9ybWFuY2UpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2dsX2RlYnVnCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0RFRkFVTFQpOworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZGVmYXVsdF9kZWJ1Zyk7CitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfZ2xfbWFya2VyX2RlYnVnKTsKKworc3RhdGljIHZvaWQKK19pbml0X2RlYnVnICh2b2lkKQoreworICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2luaXQgPSAwOworCisgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJl9pbml0KSkgeworICAgIEdTVF9ERUJVR19DQVRFR09SWV9HRVQgKGdzdF9wZXJmb3JtYW5jZSwgIkdTVF9QRVJGT1JNQU5DRSIpOworICAgIEdTVF9ERUJVR19DQVRFR09SWV9HRVQgKGdzdF9nbF9kZWJ1ZywgImdsZGVidWciKTsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfR0VUIChkZWZhdWx0X2RlYnVnLCAiZGVmYXVsdCIpOworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfZ2xfbWFya2VyX2RlYnVnLCAiZ2xkZWJ1Z21hcmtlciIsIDAsCisgICAgICAgICJPcGVuR0wgTWFya2VycyIpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitfZnJlZV9hc3luY19kZWJ1Z19kYXRhIChHc3RHTEFzeW5jRGVidWcgKiBhZCkKK3sKKyAgaWYgKGFkLT5kZWJ1Z19tc2cpIHsKKyAgICBnX2ZyZWUgKGFkLT5kZWJ1Z19tc2cpOworICAgIGFkLT5kZWJ1Z19tc2cgPSBOVUxMOworICAgIGlmIChhZC0+b2JqZWN0KQorICAgICAgZ19vYmplY3RfdW5yZWYgKGFkLT5vYmplY3QpOworICAgIGFkLT5vYmplY3QgPSBOVUxMOworICAgIGFkLT5zdGF0ZV9mbGFncyAmPSB+QVNZTkNfREVCVUdfRklMTEVEOworICB9Cit9CisKKy8qKgorICogZ3N0X2dsX2FzeW5jX2RlYnVnX2luaXQ6CisgKiBAYWQ6IGEgI0dzdEdMQXN5bmNEZWJ1ZworICoKKyAqIEluaXRpYWxpemUgQGFkLiAgSW50ZW5kZWQgZm9yIHVzZSB3aXRoICNHc3RHTEFzeW5jRGVidWcncyB0aGF0IGFyZSBlbWJlZGRlZAorICogaW4gb3RoZXIgc3RydWN0cy4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9hc3luY19kZWJ1Z19pbml0IChHc3RHTEFzeW5jRGVidWcgKiBhZCkKK3sKKyAgX2luaXRfZGVidWcgKCk7CisKKyAgbWVtc2V0IChhZCwgMCwgc2l6ZW9mICgqYWQpKTsKK30KKworLyoqCisgKiBnc3RfZ2xfYXN5bmNfZGVidWdfdW5zZXQ6CisgKiBAYWQ6IGEgI0dzdEdMQXN5bmNEZWJ1ZworICoKKyAqIFVuc2V0IGFueSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgZGF0YS4gIEludGVuZGVkIGZvciB1c2Ugd2l0aAorICogI0dzdEdMQXN5bmNEZWJ1ZydzIHRoYXQgYXJlIGVtYmVkZGVkIGluIG90aGVyIHN0cnVjdHMuCisgKi8KK3ZvaWQKK2dzdF9nbF9hc3luY19kZWJ1Z191bnNldCAoR3N0R0xBc3luY0RlYnVnICogYWQpCit7CisgIGdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZyAoYWQpOworCisgIF9mcmVlX2FzeW5jX2RlYnVnX2RhdGEgKGFkKTsKKworICBpZiAoYWQtPm5vdGlmeSkKKyAgICBhZC0+bm90aWZ5IChhZC0+dXNlcl9kYXRhKTsKK30KKworLyoqCisgKiBnc3RfZ2xfYXN5bmNfZGVidWdfbmV3OgorICogQGFkOiBhICNHc3RHTEFzeW5jRGVidWcKKyAqCisgKiBGcmVlIHdpdGggZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWUoKQorICoKKyAqIFJldHVybnM6IGEgbmV3ICNHc3RHTEFzeW5jRGVidWcKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK0dzdEdMQXN5bmNEZWJ1ZyAqCitnc3RfZ2xfYXN5bmNfZGVidWdfbmV3ICh2b2lkKQoreworICByZXR1cm4gZ19uZXcwIChHc3RHTEFzeW5jRGVidWcsIDEpOworfQorCisvKioKKyAqIGdzdF9nbF9hc3luY19kZWJ1Z19mcmVlOgorICogQGFkOiBhICNHc3RHTEFzeW5jRGVidWcKKyAqCisgKiBGcmVlcyBAYWQKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9hc3luY19kZWJ1Z19mcmVlIChHc3RHTEFzeW5jRGVidWcgKiBhZCkKK3sKKyAgZ3N0X2dsX2FzeW5jX2RlYnVnX3Vuc2V0IChhZCk7CisgIGdfZnJlZSAoYWQpOworfQorCisvKioKKyAqIGdzdF9nbF9hc3luY19kZWJ1Z19mcmVlemU6CisgKiBAYWQ6IGEgI0dzdEdMQXN5bmNEZWJ1ZworICoKKyAqIGZyZWV6ZSB0aGUgZGVidWcgb3V0cHV0LiAgV2hpbGUgZnJvemVuLCBhbnkgY2FsbCB0bworICogZ3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnKCkgd2lsbCBub3Qgb3V0cHV0IGFueSBtZXNzYWdlcyBidXQKKyAqIHN1YnNlcXVlbnQgY2FsbHMgdG8gZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2coKSB3aWxsIG92ZXJ3cml0ZSBwcmV2aW91cworICogbWVzc2FnZXMuCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplIChHc3RHTEFzeW5jRGVidWcgKiBhZCkKK3sKKyAgYWQtPnN0YXRlX2ZsYWdzIHw9IEFTWU5DX0RFQlVHX0ZST1pFTjsKK30KKworLyoqCisgKiBnc3RfZ2xfYXN5bmNfZGVidWdfdGhhdzoKKyAqIEBhZDogYSAjR3N0R0xBc3luY0RlYnVnCisgKgorICogdW5mcmVlemUgdGhlIGRlYnVnIG91dHB1dC4gIFNlZSBnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplKCkgZm9yIHdoYXQgZnJlZXppbmcgbWVhbnMKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9hc3luY19kZWJ1Z190aGF3IChHc3RHTEFzeW5jRGVidWcgKiBhZCkKK3sKKyAgYWQtPnN0YXRlX2ZsYWdzICY9IH5BU1lOQ19ERUJVR19GUk9aRU47Cit9CisKKyNpZiAhZGVmaW5lZChHU1RfRElTQUJMRV9HU1RfREVCVUcpCisKK3N0YXRpYyBpbmxpbmUgY29uc3QgZ2NoYXIgKgorX2RlYnVnX3NldmVyaXR5X3RvX3N0cmluZyAoR0xlbnVtIHNldmVyaXR5KQoreworICBzd2l0Y2ggKHNldmVyaXR5KSB7CisgICAgY2FzZSBHTF9ERUJVR19TRVZFUklUWV9ISUdIOgorICAgICAgcmV0dXJuICJoaWdoIjsKKyAgICBjYXNlIEdMX0RFQlVHX1NFVkVSSVRZX01FRElVTToKKyAgICAgIHJldHVybiAibWVkaXVtIjsKKyAgICBjYXNlIEdMX0RFQlVHX1NFVkVSSVRZX0xPVzoKKyAgICAgIHJldHVybiAibG93IjsKKyAgICBjYXNlIEdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPTjoKKyAgICAgIHJldHVybiAibm90aWZpY2F0aW9uIjsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgfQorfQorCitzdGF0aWMgaW5saW5lIGNvbnN0IGdjaGFyICoKK19kZWJ1Z19zb3VyY2VfdG9fc3RyaW5nIChHTGVudW0gc291cmNlKQoreworICBzd2l0Y2ggKHNvdXJjZSkgeworICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX0FQSToKKyAgICAgIHJldHVybiAiQVBJIjsKKyAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNOgorICAgICAgcmV0dXJuICJ3aW5zeXMiOworICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX1NIQURFUl9DT01QSUxFUjoKKyAgICAgIHJldHVybiAic2hhZGVyIGNvbXBpbGVyIjsKKyAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWToKKyAgICAgIHJldHVybiAidGhpcmQgcGFydHkiOworICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OOgorICAgICAgcmV0dXJuICJhcHBsaWNhdGlvbiI7CisgICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfT1RIRVI6CisgICAgICByZXR1cm4gIm90aGVyIjsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgfQorfQorCitzdGF0aWMgaW5saW5lIGNvbnN0IGdjaGFyICoKK19kZWJ1Z190eXBlX3RvX3N0cmluZyAoR0xlbnVtIHR5cGUpCit7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgR0xfREVCVUdfVFlQRV9FUlJPUjoKKyAgICAgIHJldHVybiAiZXJyb3IiOworICAgIGNhc2UgR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SOgorICAgICAgcmV0dXJuICJkZXByZWNhdGVkIjsKKyAgICBjYXNlIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9SOgorICAgICAgcmV0dXJuICJ1bmRlZmluZWQiOworICAgIGNhc2UgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWToKKyAgICAgIHJldHVybiAicG9ydGFiaWxpdHkiOworICAgIGNhc2UgR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRToKKyAgICAgIHJldHVybiAicGVyZm9ybWFuY2UiOworICAgIGNhc2UgR0xfREVCVUdfVFlQRV9NQVJLRVI6CisgICAgICByZXR1cm4gImRlYnVnIG1hcmtlciI7CisgICAgY2FzZSBHTF9ERUJVR19UWVBFX09USEVSOgorICAgICAgcmV0dXJuICJvdGhlciI7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAiaW52YWxpZCI7CisgIH0KK30KKworc3RhdGljIHZvaWQgR1NUR0xBUEkKK19nc3RfZ2xfZGVidWdfY2FsbGJhY2sgKEdMZW51bSBzb3VyY2UsIEdMZW51bSB0eXBlLCBHTHVpbnQgaWQsIEdMZW51bSBzZXZlcml0eSwKKyAgICBHTHNpemVpIGxlbmd0aCwgY29uc3QgZ2NoYXIgKiBtZXNzYWdlLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IHVzZXJfZGF0YTsKKyAgY29uc3QgZ2NoYXIgKnNldmVyaXR5X3N0ciA9IF9kZWJ1Z19zZXZlcml0eV90b19zdHJpbmcgKHNldmVyaXR5KTsKKyAgY29uc3QgZ2NoYXIgKnNvdXJjZV9zdHIgPSBfZGVidWdfc291cmNlX3RvX3N0cmluZyAoc291cmNlKTsKKyAgY29uc3QgZ2NoYXIgKnR5cGVfc3RyID0gX2RlYnVnX3R5cGVfdG9fc3RyaW5nICh0eXBlKTsKKworICBfaW5pdF9kZWJ1ZyAoKTsKKworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEdMX0RFQlVHX1RZUEVfRVJST1I6CisgICAgY2FzZSBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUjoKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNvbnRleHQsICIlczogR0wgJXMgZnJvbSAlcyBpZDoldSwgJXMiLCBzZXZlcml0eV9zdHIsCisgICAgICAgICAgdHlwZV9zdHIsIHNvdXJjZV9zdHIsIGlkLCBtZXNzYWdlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SOgorICAgIGNhc2UgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWToKKyAgICAgIEdTVF9GSVhNRV9PQkpFQ1QgKGNvbnRleHQsICIlczogR0wgJXMgZnJvbSAlcyBpZDoldSwgJXMiLCBzZXZlcml0eV9zdHIsCisgICAgICAgICAgdHlwZV9zdHIsIHNvdXJjZV9zdHIsIGlkLCBtZXNzYWdlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRToKKyAgICAgIEdTVF9DQVRfREVCVUdfT0JKRUNUIChnc3RfcGVyZm9ybWFuY2UsIGNvbnRleHQsICIlczogR0wgJXMgZnJvbSAlcyBpZDoldSwiCisgICAgICAgICAgIiAlcyIsIHNldmVyaXR5X3N0ciwgdHlwZV9zdHIsIHNvdXJjZV9zdHIsIGlkLCBtZXNzYWdlKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChjb250ZXh0LCAiJXM6IEdMICVzIGZyb20gJXMgaWQ6JXUsICVzIiwgc2V2ZXJpdHlfc3RyLAorICAgICAgICAgIHR5cGVfc3RyLCBzb3VyY2Vfc3RyLCBpZCwgbWVzc2FnZSk7CisgICAgICBicmVhazsKKyAgfQorfQorCitHX0dOVUNfSU5URVJOQUwgdm9pZCBfZ3N0X2dsX2RlYnVnX2VuYWJsZSAoR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisKK0dfR05VQ19JTlRFUk5BTCB2b2lkCitfZ3N0X2dsX2RlYnVnX2VuYWJsZSAoR3N0R0xDb250ZXh0ICogY29udGV4dCkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisgIEdzdERlYnVnTGV2ZWwgbGV2ZWw7CisgIEdMZW51bSBkZWJ1Z190eXBlc1s4XTsKKyAgZ3VpbnQgaSwgbiA9IDA7CisKKyAgX2luaXRfZGVidWcgKCk7CisKKyAgaWYgKCFnbC0+RGVidWdNZXNzYWdlQ2FsbGJhY2spIHsKKyAgICBHU1RfQ0FUX0lORk9fT0JKRUNUIChnc3RfZ2xfY29udGV4dF9kZWJ1ZywgY29udGV4dCwKKyAgICAgICAgIk5vIGRlYnVnZ2luZyBzdXBwb3J0IGF2YWlsYWJsZSIpOworICAgIHJldHVybjsKKyAgfQorCisgIGxldmVsID0gZ3N0X2RlYnVnX2NhdGVnb3J5X2dldF90aHJlc2hvbGQgKGdzdF9nbF9kZWJ1Zyk7CisKKyAgaWYgKGxldmVsIDwgR1NUX0xFVkVMX0VSUk9SKSB7CisgICAgR1NUX0NBVF9JTkZPX09CSkVDVCAoZ3N0X2dsX2NvbnRleHRfZGVidWcsIGNvbnRleHQsCisgICAgICAgICJEaXNhYmxpbmcgR0wgY29udGV4dCBkZWJ1Z2dpbmcgKGdsZGVidWcgY2F0ZWdvcnkgZGVidWcgbGV2ZWwgPCBlcnJvcikiKTsKKyAgICByZXR1cm47CisgIH0KKworICBHU1RfQ0FUX0lORk9fT0JKRUNUIChnc3RfZ2xfY29udGV4dF9kZWJ1ZywgY29udGV4dCwKKyAgICAgICJFbmFibGluZyBHTCBjb250ZXh0IGRlYnVnZ2luZyIpOworCisgIGdsLT5EZWJ1Z01lc3NhZ2VDYWxsYmFjayAoX2dzdF9nbF9kZWJ1Z19jYWxsYmFjaywgY29udGV4dCk7CisgIGlmIChsZXZlbCA+PSBHU1RfTEVWRUxfREVCVUcpIHsKKyAgICAvKiBlbmFibGUgdGhlbSBhbGwgKi8KKyAgICBnbC0+RGVidWdNZXNzYWdlQ29udHJvbCAoR0xfRE9OVF9DQVJFLCBHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgMCwgMCwKKyAgICAgICAgR0xfVFJVRSk7CisgIH0gZWxzZSB7CisgICAgaWYgKGxldmVsID49IEdTVF9MRVZFTF9GSVhNRSkgeworICAgICAgZGVidWdfdHlwZXNbbisrXSA9IEdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUjsKKyAgICAgIGRlYnVnX3R5cGVzW24rK10gPSBHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZOworICAgIH0KKyAgICBpZiAobGV2ZWwgPj0gR1NUX0xFVkVMX0VSUk9SKSB7CisgICAgICBkZWJ1Z190eXBlc1tuKytdID0gR0xfREVCVUdfVFlQRV9FUlJPUjsKKyAgICAgIGRlYnVnX3R5cGVzW24rK10gPSBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUjsKKyAgICB9CisgICAgZ19hc3NlcnQgKG4gPCBHX05fRUxFTUVOVFMgKGRlYnVnX3R5cGVzKSk7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgZ2wtPkRlYnVnTWVzc2FnZUNvbnRyb2wgKEdMX0RPTlRfQ0FSRSwgZGVidWdfdHlwZXNbaV0sIEdMX0RPTlRfQ0FSRSwKKyAgICAgICAgICAwLCAwLCBHTF9UUlVFKTsKKyAgICB9CisgIH0KK30KKworLyoqCisgKiBnc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlcjoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEBmb3JtYXQ6IGEgcHJpbnRmLXN0eWxlIGZvcm1hdCBzdHJpbmcKKyAqIEAuLi46IGFyZ3VtZW50cyBmb3JtIEBmb3JtYXQKKyAqCisgKiBJbnNlcnRzIGEgbWFya2VyIGludG8gYSBHTCBkZWJ1ZyBzdHJlYW0uICBSZXF1aXJlcyB0aGUgJ2dsZGVidWdtYXJrZXInCisgKiBkZWJ1ZyBjYXRlZ29yeSB0byBiZSBhdCBsZWFzdCAlR1NUX0xFVkVMX0ZJWE1FLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGNvbnN0IGdjaGFyICogZm9ybWF0LCAuLi4pCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworICBnY2hhciAqc3RyaW5nOworICBnaW50IGxlbjsKKyAgdmFfbGlzdCBhcmdzOworCisgIF9pbml0X2RlYnVnICgpOworCisgIC8qIGFyZSB3ZSBlbmFibGVkICovCisgIGlmIChnc3RfZGVidWdfY2F0ZWdvcnlfZ2V0X3RocmVzaG9sZCAoZ3N0X2dsX21hcmtlcl9kZWJ1ZykgPCBHU1RfTEVWRUxfRklYTUUpCisgICAgcmV0dXJuOworCisgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOworICBsZW4gPSBnc3RfaW5mb192YXNwcmludGYgKCZzdHJpbmcsIGZvcm1hdCwgYXJncyk7CisgIHZhX2VuZCAoYXJncyk7CisKKyAgLyogZ3N0X2luZm9fdmFzcHJpbnRmKCkgcmV0dXJucyAtMSBvbiBlcnJvciwgdGhlIHZhcmlvdXMgZGVidWcgbWFya2VyCisgICAqIGZ1bmN0aW9ucyB0YWtlIGxlbj0tMSB0byBtZWFuIG51bGwgdGVybWluYXRlZCAqLworICBpZiAobGVuIDwgMCB8fCBzdHJpbmcgPT0gTlVMTCkKKyAgICAvKiBubyBkZWJ1ZyBvdXRwdXQgKi8KKyAgICByZXR1cm47CisKKyAgaWYgKGdsLT5EZWJ1Z01lc3NhZ2VJbnNlcnQpCisgICAgZ2wtPkRlYnVnTWVzc2FnZUluc2VydCAoR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZLCBHTF9ERUJVR19UWVBFX01BUktFUiwKKyAgICAgICAgMCwgR0xfREVCVUdfU0VWRVJJVFlfTE9XLCAoZ3NpemUpIGxlbiwgc3RyaW5nKTsKKyAgZWxzZSBpZiAoZ2wtPkluc2VydEV2ZW50TWFya2VyKQorICAgIGdsLT5JbnNlcnRFdmVudE1hcmtlciAobGVuLCBzdHJpbmcpOworICBlbHNlIGlmIChnbC0+U3RyaW5nTWFya2VyKQorICAgIGdsLT5TdHJpbmdNYXJrZXIgKGxlbiwgc3RyaW5nKTsKKworICBnX2ZyZWUgKHN0cmluZyk7Cit9CisKKy8qKgorICogZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2dfdmFsaXN0OgorICogQGFkOiB0aGUgI0dzdEdMQXN5bmNEZWJ1ZyB0byBzdG9yZSB0aGUgbWVzc2FnZSBpbgorICogQGNhdDogdGhlICNHc3REZWJ1Z0NhdGVnb3J5IHRvIG91dHB1dCB0aGUgbWVzc2FnZSBpbgorICogQGxldmVsOiB0aGUgI0dzdExldmVsCisgKiBAZmlsZTogdGhlIGZpbGUgd2hlcmUgdGhlIGRlYnVnIG1lc3NhZ2Ugb3JpZ2luYXRlcyBmcm9tCisgKiBAZnVuY3Rpb246IHRoZSBmdW5jdGlvbiB3aGVyZSB0aGUgZGVidWcgbWVzc2FnZSBvcmlnaW5hdGVzIGZyb20KKyAqIEBsaW5lOiB0aGUgbGluZSBpbiBAZmlsZSB3aGVyZSB0aGUgZGVidWcgbWVzc2FnZSBvcmlnaW5hdGVzIGZyb20KKyAqIEBvYmplY3Q6IChhbGxvdy1ub25lKTogYSAjR09iamVjdCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgZGVidWcgbWVzc2FnZQorICogQGZvcm1hdDogYSBwcmludGYgc3R5bGUgZm9ybWF0IHN0cmluZworICogQHZhcmFyZ3M6IHRoZSBsaXN0IG9mIGFyZ3VtZW50cyBmb3IgQGZvcm1hdAorICoKKyAqIFN0b3JlcyBhIGRlYnVnIG1lc3NhZ2UgZm9yIGxhdGVyIG91dHB1dCBieSBnc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2coKQorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2dfdmFsaXN0IChHc3RHTEFzeW5jRGVidWcgKiBhZCwKKyAgICBHc3REZWJ1Z0NhdGVnb3J5ICogY2F0LCBHc3REZWJ1Z0xldmVsIGxldmVsLCBjb25zdCBnY2hhciAqIGZpbGUsCisgICAgY29uc3QgZ2NoYXIgKiBmdW5jdGlvbiwgZ2ludCBsaW5lLCBHT2JqZWN0ICogb2JqZWN0LCBjb25zdCBnY2hhciAqIGZvcm1hdCwKKyAgICB2YV9saXN0IHZhcmFyZ3MpCit7CisgIGdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZyAoYWQpOworICBfZnJlZV9hc3luY19kZWJ1Z19kYXRhIChhZCk7CisKKyAgaWYgKEdfVU5MSUtFTFkgKGxldmVsIDw9IEdTVF9MRVZFTF9NQVggJiYgbGV2ZWwgPD0gX2dzdF9kZWJ1Z19taW4pKSB7CisgICAgaWYgKCFjYXQpCisgICAgICBjYXQgPSBkZWZhdWx0X2RlYnVnOworCisgICAgYWQtPmNhdCA9IGNhdDsKKyAgICBhZC0+bGV2ZWwgPSBsZXZlbDsKKyAgICBhZC0+ZmlsZSA9IGZpbGU7CisgICAgYWQtPmZ1bmN0aW9uID0gZnVuY3Rpb247CisgICAgYWQtPmxpbmUgPSBsaW5lOworICAgIGlmIChvYmplY3QpCisgICAgICBhZC0+b2JqZWN0ID0gZ19vYmplY3RfcmVmIChvYmplY3QpOworICAgIGVsc2UKKyAgICAgIGFkLT5vYmplY3QgPSBOVUxMOworCisgICAgYWQtPmRlYnVnX21zZyA9IGdzdF9pbmZvX3N0cmR1cF92cHJpbnRmIChmb3JtYXQsIHZhcmFyZ3MpOworICAgIGFkLT5zdGF0ZV9mbGFncyB8PSBBU1lOQ19ERUJVR19GSUxMRUQ7CisgIH0KK30KKworLyoqCisgKiBnc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2c6CisgKiBAYWQ6IHRoZSAjR3N0R0xBc3luY0RlYnVnIHRvIHN0b3JlIHRoZSBtZXNzYWdlIGluCisgKgorICogT3V0cHV0cyBhIHByZXZpb3VzbHkgc3RvcmVkIGRlYnVnIG1lc3NhZ2UuCisgKi8KK3ZvaWQKK2dzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZyAoR3N0R0xBc3luY0RlYnVnICogYWQpCit7CisgIGlmICgoYWQtPnN0YXRlX2ZsYWdzICYgQVNZTkNfREVCVUdfRklMTEVEKSAhPSAwCisgICAgICAmJiAoYWQtPnN0YXRlX2ZsYWdzICYgQVNZTkNfREVCVUdfRlJPWkVOKSA9PSAwKSB7CisgICAgZ2NoYXIgKm1zZyA9IE5VTEw7CisKKyAgICBpZiAoYWQtPmNhbGxiYWNrKQorICAgICAgbXNnID0gYWQtPmNhbGxiYWNrIChhZC0+dXNlcl9kYXRhKTsKKworICAgIGdzdF9kZWJ1Z19sb2cgKGFkLT5jYXQsIGFkLT5sZXZlbCwgYWQtPmZpbGUsIGFkLT5mdW5jdGlvbiwgYWQtPmxpbmUsCisgICAgICAgIGFkLT5vYmplY3QsICIlcyAlcyIsIEdTVF9TVFJfTlVMTCAoYWQtPmRlYnVnX21zZyksIG1zZyA/IG1zZyA6ICIiKTsKKyAgICBnX2ZyZWUgKG1zZyk7CisgICAgX2ZyZWVfYXN5bmNfZGVidWdfZGF0YSAoYWQpOworICB9Cit9CisKKy8qKgorICogZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2c6CisgKiBAYWQ6IHRoZSAjR3N0R0xBc3luY0RlYnVnIHRvIHN0b3JlIHRoZSBtZXNzYWdlIGluCisgKiBAY2F0OiB0aGUgI0dzdERlYnVnQ2F0ZWdvcnkgdG8gb3V0cHV0IHRoZSBtZXNzYWdlIGluCisgKiBAbGV2ZWw6IHRoZSAjR3N0TGV2ZWwKKyAqIEBmaWxlOiB0aGUgZmlsZSB3aGVyZSB0aGUgZGVidWcgbWVzc2FnZSBvcmlnaW5hdGVzIGZyb20KKyAqIEBmdW5jdGlvbjogdGhlIGZ1bmN0aW9uIHdoZXJlIHRoZSBkZWJ1ZyBtZXNzYWdlIG9yaWdpbmF0ZXMgZnJvbQorICogQGxpbmU6IHRoZSBsaW5lIGluIEBmaWxlIHdoZXJlIHRoZSBkZWJ1ZyBtZXNzYWdlIG9yaWdpbmF0ZXMgZnJvbQorICogQG9iamVjdDogKGFsbG93LW5vbmUpOiBhICNHT2JqZWN0IHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBkZWJ1ZyBtZXNzYWdlCisgKiBAZm9ybWF0OiBhIHByaW50ZiBzdHlsZSBmb3JtYXQgc3RyaW5nCisgKiBALi4uOiB0aGUgbGlzdCBvZiBhcmd1bWVudHMgZm9yIEBmb3JtYXQKKyAqCisgKiBTdG9yZXMgYSBkZWJ1ZyBtZXNzYWdlIGZvciBsYXRlciBvdXRwdXQgYnkgZ3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnKCkKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnIChHc3RHTEFzeW5jRGVidWcgKiBhZCwgR3N0RGVidWdDYXRlZ29yeSAqIGNhdCwKKyAgICBHc3REZWJ1Z0xldmVsIGxldmVsLCBjb25zdCBnY2hhciAqIGZpbGUsIGNvbnN0IGdjaGFyICogZnVuY3Rpb24sIGdpbnQgbGluZSwKKyAgICBHT2JqZWN0ICogb2JqZWN0LCBjb25zdCBnY2hhciAqIGZvcm1hdCwgLi4uKQoreworICB2YV9saXN0IHZhcmFyZ3M7CisKKyAgaWYgKEdfVU5MSUtFTFkgKGxldmVsIDw9IEdTVF9MRVZFTF9NQVggJiYgbGV2ZWwgPD0gX2dzdF9kZWJ1Z19taW4pKSB7CisgICAgdmFfc3RhcnQgKHZhcmFyZ3MsIGZvcm1hdCk7CisgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2dfdmFsaXN0IChhZCwgY2F0LCBsZXZlbCwgZmlsZSwgZnVuY3Rpb24sCisgICAgICAgIGxpbmUsIG9iamVjdCwgZm9ybWF0LCB2YXJhcmdzKTsKKyAgICB2YV9lbmQgKHZhcmFyZ3MpOworICB9Cit9CisjZWxzZQorR19HTlVDX0lOVEVSTkFMIHZvaWQgX2dzdF9nbF9kZWJ1Z19lbmFibGUgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworI2VuZGlmCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkZWJ1Zy5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTY4YTJiCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuaApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX0dMX0RFQlVHX0hfXworI2RlZmluZSBfX0dTVF9HTF9ERUJVR19IX18KKworI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgorCitHX0JFR0lOX0RFQ0xTCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTEFzeW5jRGVidWcgR3N0R0xBc3luY0RlYnVnOworCit0eXBlZGVmIGdjaGFyICogKCpHc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlKSAoZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworLyoqCisgKiBHc3RHTEFzeW5jRGVidWc6CisgKgorICogI0dzdEdMQXN5bmNEZWJ1ZyBhbiBvcGFxdWUgc3RydWN0dXJlIGFuZCBzaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZQorICogcHJvdmlkZWQgQVBJLgorICovCitzdHJ1Y3QgX0dzdEdMQXN5bmNEZWJ1ZworeworICAvKiA8cHJpdmF0ZT4gKi8KKyAgZ3VpbnQgICAgICAgICAgICAgc3RhdGVfZmxhZ3M7CisgIEdzdERlYnVnQ2F0ZWdvcnkgKmNhdDsKKyAgR3N0RGVidWdMZXZlbCAgICAgbGV2ZWw7CisgIGNvbnN0IGdjaGFyICAgICAgKmZpbGU7CisgIGNvbnN0IGdjaGFyICAgICAgKmZ1bmN0aW9uOworICBnaW50ICAgICAgICAgICAgICBsaW5lOworICBHT2JqZWN0ICAgICAgICAgICpvYmplY3Q7CisgIGdjaGFyICAgICAgICAgICAgKmRlYnVnX21zZzsKKworICAvKiA8cHJvdGVjdGVkPiAqLworICBHc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlIGNhbGxiYWNrOworICBncG9pbnRlciAgICAgICAgICB1c2VyX2RhdGE7CisgIEdEZXN0cm95Tm90aWZ5ICAgIG5vdGlmeTsKK307CisKK0dzdEdMQXN5bmNEZWJ1ZyAqICAgZ3N0X2dsX2FzeW5jX2RlYnVnX25ldyAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7Cit2b2lkICAgICAgICAgICAgICAgIGdzdF9nbF9hc3luY19kZWJ1Z19mcmVlICAgICAgICAgICAgICAgICAgICAgKEdzdEdMQXN5bmNEZWJ1ZyAqIGFkKTsKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX2luaXQgICAgICAgICAgICAgICAgICAgICAoR3N0R0xBc3luY0RlYnVnICogYWQpOwordm9pZCAgICAgICAgICAgICAgICBnc3RfZ2xfYXN5bmNfZGVidWdfdW5zZXQgICAgICAgICAgICAgICAgICAgIChHc3RHTEFzeW5jRGVidWcgKiBhZCk7Cit2b2lkICAgICAgICAgICAgICAgIGdzdF9nbF9hc3luY19kZWJ1Z19mcmVlemUgICAgICAgICAgICAgICAgICAgKEdzdEdMQXN5bmNEZWJ1ZyAqIGFkKTsKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX3RoYXcgICAgICAgICAgICAgICAgICAgICAoR3N0R0xBc3luY0RlYnVnICogYWQpOworCisvKioKKyAqIEdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HX3ZhbGlzdDoKKyAqIEBhZDogdGhlICNHc3RHTEFzeW5jRGVidWcgdG8gc3RvcmUgdGhlIG1lc3NhZ2UgaW4KKyAqIEBjYXQ6IHRoZSAjR3N0RGVidWdDYXRlZ29yeSB0byBvdXRwdXQgdGhlIG1lc3NhZ2UgaW4KKyAqIEBsZXZlbDogdGhlICNHc3RMZXZlbAorICogQG9iamVjdDogKGFsbG93LW5vbmUpOiBhICNHT2JqZWN0IHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBkZWJ1ZyBtZXNzYWdlCisgKiBAZm9ybWF0OiBhIHByaW50ZiBzdHlsZSBmb3JtYXQgc3RyaW5nCisgKiBAdmFyYXJnczogdGhlIGxpc3Qgb2YgYXJndW1lbnRzIGZvciBAZm9ybWF0CisgKgorICogU3RvcmVzIGEgZGVidWcgbWVzc2FnZSBpbiBAYWQgZm9yIGxhdGVyIG91dHB1dAorICovCisjZGVmaW5lIEdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HX3ZhbGlzdChhZCxjYXQsbGV2ZWwsb2JqZWN0LGZvcm1hdCx2YXJhcmdzKSAgIFwKKyAgICBnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZ192YWxpc3QgKGFkLCBjYXQsIGxldmVsLCBfX0ZJTEVfXywgICAgICAgICAgXAorICAgICAgICBHU1RfRlVOQ1RJT04sIF9fTElORV9fLCBvYmplY3QsIGZvcm1hdCwgdmFyYXJncykKKworLyoqCisgKiBHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPRzoKKyAqIEBhZDogdGhlICNHc3RHTEFzeW5jRGVidWcgdG8gc3RvcmUgdGhlIG1lc3NhZ2UgaW4KKyAqIEBjYXQ6IHRoZSAjR3N0RGVidWdDYXRlZ29yeSB0byBvdXRwdXQgdGhlIG1lc3NhZ2UgaW4KKyAqIEBsZXZlbDogdGhlICNHc3RMZXZlbAorICogQG9iamVjdDogKGFsbG93LW5vbmUpOiBhICNHT2JqZWN0IHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBkZWJ1ZyBtZXNzYWdlCisgKiBAZm9ybWF0OiBhIHByaW50ZiBzdHlsZSBmb3JtYXQgc3RyaW5nCisgKiBALi4uOiB0aGUgbGlzdCBvZiBhcmd1bWVudHMgZm9yIEBmb3JtYXQKKyAqCisgKiBTdG9yZXMgYSBkZWJ1ZyBtZXNzYWdlIGluIEBhZCBmb3IgbGF0ZXIgb3V0cHV0CisgKi8KKyNpZiBHX0hBVkVfSVNPX1ZBUkFSR1MKKyNkZWZpbmUgR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0coYWQsY2F0LGxldmVsLG9iamVjdCxmb3JtYXQsLi4uKSAgICAgICAgICAgICAgXAorICAgIGdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnIChhZCwgY2F0LCBsZXZlbCwgX19GSUxFX18sIEdTVF9GVU5DVElPTiwgICBcCisgICAgICAgIF9fTElORV9fLCBvYmplY3QsIGZvcm1hdCwgX19WQV9BUkdTX18pCisjZWxzZSAvKiBHX0hBVkVfSVNPX1ZBUkFSR1MgKi8KKyNpZiBHX0hBVkVfR05VQ19WQVJBUkdTCisjZGVmaW5lIEdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HKGFkLGNhdCxsZXZlbCxvYmplY3QsZm9ybWF0LGFyZ3MuLi4pICAgICAgICAgIFwKKyAgICBnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZyAoYWQsIGNhdCwgbGV2ZWwsIF9fRklMRV9fLCBHU1RfRlVOQ1RJT04sICAgXAorICAgICAgICBfX0xJTkVfXywgb2JqZWN0LCBmb3JtYXQsICMjYXJncykKKyNlbHNlIC8qIEdfSEFWRV9HTlVDX1ZBUkFSR1MgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0coR3N0R0xBc3luY0RlYnVnICogYWQsIEdzdERlYnVnQ2F0ZWdvcnkgKiBjYXQsCisgICAgR3N0RGVidWdMZXZlbCBsZXZlbCwgR09iamVjdCAqIG9iamVjdCwgY29uc3QgZ2NoYXIgKiBmb3JtYXQsIC4uLikKK3sKKyAgdmFfbGlzdCB2YXJhcmdzOworCisgIHZhX3N0YXJ0ICh2YXJhcmdzLCBmb3JtYXQpOworICBHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPR192YWxpc3QgKGFkLCBjYXQsIGxldmVsLCBvYmplY3QsIGZvcm1hdCwgdmFyYXJncyk7CisgIHZhX2VuZCAodmFyYXJncyk7Cit9CisjZW5kaWYgLyogR19IQVZFX0dOVUNfVkFSQVJHUyAqLworI2VuZGlmIC8qIEdfSEFWRV9JU09fVkFSQVJHUyAqLworCisjaWYgIWRlZmluZWQoR1NUX0RJU0FCTEVfR1NUX0RFQlVHKQorCit2b2lkICAgICAgICBnc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlciAgICAgICAgICAgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogZm9ybWF0LCAuLi4pIEdfR05VQ19QUklOVEYgKDIsIDMpOwordm9pZCAgICAgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnICAgICAgIChHc3RHTEFzeW5jRGVidWcgKiBhZCk7Cit2b2lkICAgICAgICBnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZyAgICAgICAgKEdzdEdMQXN5bmNEZWJ1ZyAqIGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3REZWJ1Z0NhdGVnb3J5ICogY2F0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3REZWJ1Z0xldmVsIGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR09iamVjdCAqIG9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBmb3JtYXQsIC4uLikgR19HTlVDX1BSSU5URiAoOCwgOSk7Cit2b2lkICAgICAgICBnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZ192YWxpc3QgKEdzdEdMQXN5bmNEZWJ1ZyAqIGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3REZWJ1Z0NhdGVnb3J5ICogY2F0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3REZWJ1Z0xldmVsIGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR09iamVjdCAqIG9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgdmFyYXJncykgR19HTlVDX1BSSU5URiAoOCwgMCk7CisKKyNlbHNlIC8qIEdTVF9ESVNBQkxFX0dTVF9ERUJVRyAqLworCisjZGVmaW5lIGdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZyhhZCkgR19TVE1UX1NUQVJUeyB9R19TVE1UX0VORAorI2RlZmluZSBnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZ192YWxpc3QoYWQsY2F0LGxldmVsLGZpbGUsZnVuY3Rpb24sbGluZSxvYmplY3QsZm9ybWF0LGFyZ3MpIEdfU1RNVF9TVEFSVHsgfUdfU1RNVF9FTkQKKworI2lmIEdfSEFWRV9JU09fVkFSQVJHUworCisjZGVmaW5lIGdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyKC4uLikgR19TVE1UX1NUQVJUeyB9R19TVE1UX0VORAorI2RlZmluZSBnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZyguLi4pIEdfU1RNVF9TVEFSVHsgfUdfU1RNVF9FTkQKKworI2Vsc2UgLyogR19IQVZFX0lTT19WQVJBUkdTICovCisjaWYgR19IQVZFX0dOVUNfVkFSQVJHUworCisjZGVmaW5lIGdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyKGFyZ3MuLi4pIEdfU1RNVF9TVEFSVHsgfUdfU1RNVF9FTkQKKyNkZWZpbmUgZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2coYXJncy4uLikgR19TVE1UX1NUQVJUeyB9R19TVE1UX0VORAorCisjZWxzZSAvKiBHX0hBVkVfR05VQ19WQVJBUkdTICovCisKK3N0YXRpYyBpbmxpbmUgdm9pZAorZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGNvbnN0IGdjaGFyICogZm9ybWF0LCAuLi4pCit7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2cgKEdzdEdMQXN5bmNEZWJ1ZyAqIGFkLAorICAgIEdzdERlYnVnQ2F0ZWdvcnkgKiBjYXQsIEdzdERlYnVnTGV2ZWwgbGV2ZWwsIGNvbnN0IGdjaGFyICogZmlsZSwKKyAgICBjb25zdCBnY2hhciAqIGZ1bmN0aW9uLCBnaW50IGxpbmUsIEdzdE9iamVjdCAqIG9iamVjdCwKKyAgICBjb25zdCBnY2hhciAqIGZvcm1hdCwgLi4uKQoreworfQorCisjZW5kaWYgLyogR19IQVZFX0dOVUNfVkFSQVJHUyAqLworI2VuZGlmIC8qIEdfSEFWRV9JU09fVkFSQVJHUyAqLworI2VuZGlmIC8qIEdTVF9ESVNBQkxFX0dTVF9ERUJVRyAqLworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfR0xfREVCVUdfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkaXNwbGF5LmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkaXNwbGF5LmMKaW5kZXggNTFjMWRmNS4uNWNhZTJmNCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRpc3BsYXkuYwpAQCAtMTM5LDggKzEzOSw4IEBACiAKICAgR1NUX1RSQUNFICgiaW5pdCAlcCIsIGRpc3BsYXkpOwogCi0gIGdzdF9nbF9iYXNlX2J1ZmZlcl9pbml0X29uY2UgKCk7Ci0gIGdzdF9nbF9tZW1vcnlfaW5pdCAoKTsKKyAgZ3N0X2dsX2J1ZmZlcl9pbml0X29uY2UgKCk7CisgIGdzdF9nbF9tZW1vcnlfcGJvX2luaXRfb25jZSAoKTsKIAogI2lmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0VHTAogICBnc3RfZWdsX2ltYWdlX21lbW9yeV9pbml0ICgpOwpAQCAtNDM3LDggKzQzNywxMSBAQAogICAgICAgY29udGludWU7CiAgICAgfQogCisgICAgaWYgKHRocmVhZCA9PSBOVUxMKQorICAgICAgcmV0dXJuIGNvbnRleHQ7CisKICAgICBjb250ZXh0X3RocmVhZCA9IGdzdF9nbF9jb250ZXh0X2dldF90aHJlYWQgKGNvbnRleHQpOwotICAgIGlmICh0aHJlYWQgIT0gTlVMTCAmJiB0aHJlYWQgPT0gY29udGV4dF90aHJlYWQpIHsKKyAgICBpZiAodGhyZWFkICE9IGNvbnRleHRfdGhyZWFkKSB7CiAgICAgICBnX3RocmVhZF91bnJlZiAoY29udGV4dF90aHJlYWQpOwogICAgICAgZ3N0X29iamVjdF91bnJlZiAoY29udGV4dCk7CiAgICAgICBwcmV2ID0gbDsKQEAgLTQ5Nyw3ICs1MDAsNyBAQAogICAgIGdvdG8gb3V0OwogICB9CiAKLSAgaWYgKGNvbGxpc2lvbiA9PSBjb250ZXh0KSB7CisgIGlmICh0aHJlYWQgPT0gY29sbGlzaW9uX3RocmVhZCkgewogICAgIHJldCA9IFRSVUU7CiAgICAgZ290byBvdXQ7CiAgIH0KQEAgLTUzMyw3ICs1MzYsNyBAQAogICBHV2Vha1JlZiAqcmVmOwogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfRElTUExBWSAoZGlzcGxheSksIEZBTFNFKTsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CiAKICAgY29udGV4dF9kaXNwbGF5ID0gZ3N0X2dsX2NvbnRleHRfZ2V0X2Rpc3BsYXkgKGNvbnRleHQpOwogICBnX2Fzc2VydCAoY29udGV4dF9kaXNwbGF5ID09IGRpc3BsYXkpOwpAQCAtNTQzLDYgKzU0NiwxMyBAQAogICBpZiAodGhyZWFkKSB7CiAgICAgY29sbGlzaW9uID0gX2dldF9nbF9jb250ZXh0X2Zvcl90aHJlYWRfdW5sb2NrZWQgKGRpc3BsYXksIHRocmVhZCk7CiAgICAgZ190aHJlYWRfdW5yZWYgKHRocmVhZCk7CisKKyAgICAvKiBhZGRpbmcgdGhlIHNhbWUgY29udGV4dCBpcyBhIG5vLW9wICovCisgICAgaWYgKGNvbnRleHQgPT0gY29sbGlzaW9uKSB7CisgICAgICByZXQgPSBUUlVFOworICAgICAgZ290byBvdXQ7CisgICAgfQorCiAgICAgaWYgKF9jaGVja19jb2xsaXNpb24gKGNvbnRleHQsIGNvbGxpc2lvbikpIHsKICAgICAgIHJldCA9IEZBTFNFOwogICAgICAgZ290byBvdXQ7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkaXNwbGF5LmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkaXNwbGF5LmgKaW5kZXggOTM0MTg4NC4uN2Y0OWE0NCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRpc3BsYXkuaApAQCAtNDAsNiArNDAsMTcgQEAKICNkZWZpbmUgR1NUX0dMX0RJU1BMQVlfQ0FTVChvYmopICAgICAgICAoKEdzdEdMRGlzcGxheSopKG9iaikpCiAjZGVmaW5lIEdTVF9HTF9ESVNQTEFZX0dFVF9DTEFTUyhvKSAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfVFlQRV9HTF9ESVNQTEFZLCBHc3RHTERpc3BsYXlDbGFzcykpCiAKKy8qKgorICogR3N0R0xEaXNwbGF5VHlwZToKKyAqIEBHU1RfR0xfRElTUExBWV9UWVBFX05PTkU6IG5vIGRpc3BsYXkgdHlwZQorICogQEdTVF9HTF9ESVNQTEFZX1RZUEVfWDExOiBYMTEgZGlzcGxheQorICogQEdTVF9HTF9ESVNQTEFZX1RZUEVfV0FZTEFORDogV2F5bGFuZCBkaXNwbGF5CisgKiBAR1NUX0dMX0RJU1BMQVlfVFlQRV9DT0NPQTogQ29jb2EgZGlzcGxheQorICogQEdTVF9HTF9ESVNQTEFZX1RZUEVfV0lOMzI6IFdpbjMyIGRpc3BsYXkKKyAqIEBHU1RfR0xfRElTUExBWV9UWVBFX0RJU1BNQU5YOiBEaXNwbWFueCBkaXNwbGF5CisgKiBAR1NUX0dMX0RJU1BMQVlfVFlQRV9FR0w6IEVHTCBkaXNwbGF5CisgKiBAR1NUX0dMX0RJU1BMQVlfVFlQRV9BTlk6IGFueSBkaXNwbGF5IHR5cGUKKyAqLwogdHlwZWRlZiBlbnVtCiB7CiAgIEdTVF9HTF9ESVNQTEFZX1RZUEVfTk9ORSA9IDAsCkBAIC04NCw3ICs5NSw3IEBACiBndWludHB0ciAgICAgICAgIGdzdF9nbF9kaXNwbGF5X2dldF9oYW5kbGUgICAgICAgICAgICAgKEdzdEdMRGlzcGxheSAqIGRpc3BsYXkpOwogR3N0R0xEaXNwbGF5VHlwZSBnc3RfZ2xfZGlzcGxheV9nZXRfaGFuZGxlX3R5cGUgICAgICAgIChHc3RHTERpc3BsYXkgKiBkaXNwbGF5KTsKIHZvaWQgICAgICAgICAgICAgZ3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwaSAgICAgICAgICAoR3N0R0xEaXNwbGF5ICogZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xBUEkgYXBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xBUEkgZ2xfYXBpKTsKIEdzdEdMQVBJICAgICAgICAgZ3N0X2dsX2Rpc3BsYXlfZ2V0X2dsX2FwaSAgICAgICAgICAgICAoR3N0R0xEaXNwbGF5ICogZGlzcGxheSk7CiBHc3RHTEFQSSAgICAgICAgIGdzdF9nbF9kaXNwbGF5X2dldF9nbF9hcGlfdW5sb2NrZWQgICAgKEdzdEdMRGlzcGxheSAqIGRpc3BsYXkpOwogCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkb3dubG9hZC5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZG93bmxvYWQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGYwNDVjNy4uMDAwMDAwMAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkb3dubG9hZC5jCisrKyAvZGV2L251bGwKQEAgLTEsNTA0ICswLDAgQEAKLS8qCi0gKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR0aGV3IFdhdGVycyA8eXN0cmVlMDBAZ21haWwuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNpbmNsdWRlICJnbC5oIgotI2luY2x1ZGUgImdzdGdsZG93bmxvYWQuaCIKLQotLyoqCi0gKiBTRUNUSU9OOmdzdGdsZG93bmxvYWQKLSAqIEBzaG9ydF9kZXNjcmlwdGlvbjogYW4gb2JqZWN0IHRoYXQgZG93bmxvYWRzIEdMIHRleHR1cmVzCi0gKiBAc2VlX2Fsc286ICNHc3RHTFVwbG9hZCwgI0dzdEdMTWVtb3J5Ci0gKgotICogI0dzdEdMRG93bmxvYWQgaXMgYW4gb2JqZWN0IHRoYXQgZG93bmxvYWRzIEdMIHRleHR1cmVzIGludG8gc3lzdGVtIG1lbW9yeS4KLSAqCi0gKiBBICNHc3RHTERvd25sb2FkIGNhbiBiZSBjcmVhdGVkIHdpdGggZ3N0X2dsX2Rvd25sb2FkX25ldygpCi0gKi8KLQotI2RlZmluZSBVU0lOR19PUEVOR0woY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMLCAxLCAwKSkKLSNkZWZpbmUgVVNJTkdfT1BFTkdMMyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wzLCAzLCAxKSkKLSNkZWZpbmUgVVNJTkdfR0xFUyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTLCAxLCAwKSkKLSNkZWZpbmUgVVNJTkdfR0xFUzIoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDIsIDApKQotI2RlZmluZSBVU0lOR19HTEVTMyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMywgMCkpCi0KLXN0YXRpYyBnYm9vbGVhbiBfZG9fZG93bmxvYWQgKEdzdEdMRG93bmxvYWQgKiBkb3dubG9hZCwgR3N0QnVmZmVyICogaW5idWYpOwotc3RhdGljIGdib29sZWFuIF9pbml0X2Rvd25sb2FkIChHc3RHTERvd25sb2FkICogZG93bmxvYWQpOwotc3RhdGljIGdib29sZWFuIF9nc3RfZ2xfZG93bmxvYWRfcGVyZm9ybV93aXRoX2RhdGFfdW5sb2NrZWQgKEdzdEdMRG93bmxvYWQgKgotICAgIGRvd25sb2FkLCBHTHVpbnQgdGV4dHVyZV9pZCwgR0x1aW50IHRleHR1cmVfdGFyZ2V0LAotICAgIGdwb2ludGVyIGRhdGFbR1NUX1ZJREVPX01BWF9QTEFORVNdKTsKLXN0YXRpYyB2b2lkIGdzdF9nbF9kb3dubG9hZF9yZXNldCAoR3N0R0xEb3dubG9hZCAqIGRvd25sb2FkKTsKLQotLyogKklOREVOVC1PTiogKi8KLS8qIERlZmluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGxhbmVzIHdlIGNhbiBoYW5kbGUgLSBtYXggMiB2aWV3cyBwZXIgYnVmZmVyICovCi0jZGVmaW5lIEdTVF9HTF9ET1dOTE9BRF9NQVhfVklFV1MgMgotI2RlZmluZSBHU1RfR0xfRE9XTkxPQURfTUFYX1BMQU5FUyAoR1NUX1ZJREVPX01BWF9QTEFORVMgKiBHU1RfR0xfRE9XTkxPQURfTUFYX1ZJRVdTKQotCi1zdHJ1Y3QgX0dzdEdMRG93bmxvYWRQcml2YXRlCi17Ci0gIGNvbnN0IGdjaGFyICpZVVkyX1VZVlk7Ci0gIGNvbnN0IGdjaGFyICpJNDIwX1lWMTI7Ci0gIGNvbnN0IGdjaGFyICpBWVVWOwotICBjb25zdCBnY2hhciAqQVJHQjsKLSAgY29uc3QgZ2NoYXIgKnZlcnRfc2hhZGVyOwotCi0gIEdzdEJ1ZmZlciAqaW5idWY7Ci0gIC8qIFRlbXBvcmFyeSB3cmFwcGVkIHRleHR1cmUgZm9yIHBlcmZvcm1fd2l0aF9kYXRhIGRvd25sb2FkICovCi0gIEdzdEdMTWVtb3J5ICppbl90ZXg7Ci0KLSAgLyogT3V0cHV0IGRhdGEgcGxhbmVzICovCi0gIGdwb2ludGVyIG91dF9kYXRhW0dTVF9HTF9ET1dOTE9BRF9NQVhfUExBTkVTXTsKLX07Ci0KLUdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9nbF9kb3dubG9hZF9kZWJ1Zyk7Ci0jZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfZ2xfZG93bmxvYWRfZGVidWcKLQotI2RlZmluZSBERUJVR19JTklUIFwKLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9nbF9kb3dubG9hZF9kZWJ1ZywgImdsZG93bmxvYWQiLCAwLCAiZG93bmxvYWQiKTsKLQotR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdEdMRG93bmxvYWQsIGdzdF9nbF9kb3dubG9hZCwgR1NUX1RZUEVfT0JKRUNULAotICAgIERFQlVHX0lOSVQpOwotc3RhdGljIHZvaWQgZ3N0X2dsX2Rvd25sb2FkX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKLQotI2RlZmluZSBHU1RfR0xfRE9XTkxPQURfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFICgob2JqKSwgXAotICAgIEdTVF9UWVBFX0dMX0RPV05MT0FELCBHc3RHTERvd25sb2FkUHJpdmF0ZSkpCi0KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfZG93bmxvYWRfY2xhc3NfaW5pdCAoR3N0R0xEb3dubG9hZENsYXNzICoga2xhc3MpCi17Ci0gIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoa2xhc3MsIHNpemVvZiAoR3N0R0xEb3dubG9hZFByaXZhdGUpKTsKLQotICBHX09CSkVDVF9DTEFTUyAoa2xhc3MpLT5maW5hbGl6ZSA9IGdzdF9nbF9kb3dubG9hZF9maW5hbGl6ZTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nbF9kb3dubG9hZF9pbml0IChHc3RHTERvd25sb2FkICogZG93bmxvYWQpCi17Ci0KLSAgZG93bmxvYWQtPnByaXYgPSBHU1RfR0xfRE9XTkxPQURfR0VUX1BSSVZBVEUgKGRvd25sb2FkKTsKLQotICBnc3RfdmlkZW9faW5mb19pbml0ICgmZG93bmxvYWQtPmluZm8pOwotfQotCi0vKioKLSAqIGdzdF9nbF9kb3dubG9hZF9uZXc6Ci0gKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0Ci0gKgotICogUmV0dXJuczogYSBuZXcgI0dzdEdMRG93bmxvYWQgb2JqZWN0Ci0gKi8KLUdzdEdMRG93bmxvYWQgKgotZ3N0X2dsX2Rvd25sb2FkX25ldyAoR3N0R0xDb250ZXh0ICogY29udGV4dCkKLXsKLSAgR3N0R0xEb3dubG9hZCAqZG93bmxvYWQ7Ci0KLSAgZG93bmxvYWQgPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX0dMX0RPV05MT0FELCBOVUxMKTsKLQotICBkb3dubG9hZC0+Y29udGV4dCA9IGdzdF9vYmplY3RfcmVmIChjb250ZXh0KTsKLSAgZG93bmxvYWQtPmNvbnZlcnQgPSBnc3RfZ2xfY29sb3JfY29udmVydF9uZXcgKGNvbnRleHQpOwotCi0gIHJldHVybiBkb3dubG9hZDsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nbF9kb3dubG9hZF9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKLXsKLSAgR3N0R0xEb3dubG9hZCAqZG93bmxvYWQ7Ci0KLSAgZG93bmxvYWQgPSBHU1RfR0xfRE9XTkxPQUQgKG9iamVjdCk7Ci0KLSAgZ3N0X2dsX2Rvd25sb2FkX3Jlc2V0IChkb3dubG9hZCk7Ci0KLSAgaWYgKGRvd25sb2FkLT5jb252ZXJ0KSB7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAoZG93bmxvYWQtPmNvbnZlcnQpOwotICAgIGRvd25sb2FkLT5jb252ZXJ0ID0gTlVMTDsKLSAgfQotCi0gIGlmIChkb3dubG9hZC0+Y29udGV4dCkgewotICAgIGdzdF9vYmplY3RfdW5yZWYgKGRvd25sb2FkLT5jb250ZXh0KTsKLSAgICBkb3dubG9hZC0+Y29udGV4dCA9IE5VTEw7Ci0gIH0KLQotICBHX09CSkVDVF9DTEFTUyAoZ3N0X2dsX2Rvd25sb2FkX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dsX2Rvd25sb2FkX3Jlc2V0IChHc3RHTERvd25sb2FkICogZG93bmxvYWQpCi17Ci0gIGlmIChkb3dubG9hZC0+cHJpdi0+aW5fdGV4KSB7Ci0gICAgZ3N0X21lbW9yeV91bnJlZiAoKEdzdE1lbW9yeSAqKSBkb3dubG9hZC0+cHJpdi0+aW5fdGV4KTsKLSAgICBkb3dubG9hZC0+cHJpdi0+aW5fdGV4ID0gTlVMTDsKLSAgfQotfQotCi0vKioKLSAqIGdzdF9nbF9kb3dubG9hZF9zZXRfZm9ybWF0OgotICogQGRvd25sb2FkOiBhICNHc3RHTERvd25sb2FkCi0gKiBAb3V0X2luZm86IGEgI0dzdFZpZGVvSW5mbwotICoKLSAqIEluaXRpYWxpemVzIEBkb3dubG9hZCB3aXRoIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgZG93bmxvYWQuCi0gKi8KLXZvaWQKLWdzdF9nbF9kb3dubG9hZF9zZXRfZm9ybWF0IChHc3RHTERvd25sb2FkICogZG93bmxvYWQsIEdzdFZpZGVvSW5mbyAqIG91dF9pbmZvKQotewotICBnX3JldHVybl9pZl9mYWlsIChkb3dubG9hZCAhPSBOVUxMKTsKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX1ZJREVPX0lORk9fRk9STUFUIChvdXRfaW5mbykgIT0KLSAgICAgIEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTik7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAob3V0X2luZm8pICE9Ci0gICAgICBHU1RfVklERU9fRk9STUFUX0VOQ09ERUQpOwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoZG93bmxvYWQpOwotCi0gIGlmIChnc3RfdmlkZW9faW5mb19pc19lcXVhbCAoJmRvd25sb2FkLT5pbmZvLCBvdXRfaW5mbykpIHsKLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZG93bmxvYWQpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGdzdF9nbF9kb3dubG9hZF9yZXNldCAoZG93bmxvYWQpOwotICBkb3dubG9hZC0+aW5pdHRlZCA9IEZBTFNFOwotICBkb3dubG9hZC0+aW5mbyA9ICpvdXRfaW5mbzsKLQotICBHU1RfT0JKRUNUX1VOTE9DSyAoZG93bmxvYWQpOwotfQotCi1zdGF0aWMgR3N0Q2FwcyAqCi1fc2V0X2NhcHNfZmVhdHVyZXMgKGNvbnN0IEdzdENhcHMgKiBjYXBzLCBjb25zdCBnY2hhciAqIGZlYXR1cmVfbmFtZSkKLXsKLSAgR3N0Q2FwcyAqdG1wID0gZ3N0X2NhcHNfY29weSAoY2Fwcyk7Ci0gIGd1aW50IG4gPSBnc3RfY2Fwc19nZXRfc2l6ZSAodG1wKTsKLSAgZ3VpbnQgaSA9IDA7Ci0KLSAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgIEdzdENhcHNGZWF0dXJlcyAqZmVhdHVyZXM7Ci0KLSAgICBmZWF0dXJlcyA9IGdzdF9jYXBzX2ZlYXR1cmVzX25ldyAoZmVhdHVyZV9uYW1lLCBOVUxMKTsKLSAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMgKHRtcCwgaSwgZmVhdHVyZXMpOwotICB9Ci0KLSAgcmV0dXJuIHRtcDsKLX0KLQotR3N0Q2FwcyAqCi1nc3RfZ2xfZG93bmxvYWRfdHJhbnNmb3JtX2NhcHMgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCi0gICAgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyAqIGNhcHMsIEdzdENhcHMgKiBmaWx0ZXIpCi17Ci0gIEdzdENhcHMgKmdsX3RlbXBsLCAqdGVtcGwsICpyZXN1bHQsICp0bXA7Ci0KLSAgdGVtcGwgPQotICAgICAgZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKEdTVF9WSURFT19DQVBTX01BS0UgKEdTVF9HTF9DT0xPUl9DT05WRVJUX0ZPUk1BVFMpKTsKLSAgZ2xfdGVtcGwgPQotICAgICAgZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUwotICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwgR1NUX0dMX0NPTE9SX0NPTlZFUlRfRk9STUFUUykpOwotCi0gIGlmIChkaXJlY3Rpb24gPT0gR1NUX1BBRF9TUkMpIHsKLSAgICB0bXAgPSBnc3RfY2Fwc19pbnRlcnNlY3RfZnVsbCAoY2FwcywgdGVtcGwsIEdTVF9DQVBTX0lOVEVSU0VDVF9GSVJTVCk7Ci0gICAgcmVzdWx0ID0gX3NldF9jYXBzX2ZlYXR1cmVzICh0bXAsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYgKHRtcCk7Ci0gICAgdG1wID0gcmVzdWx0OwotICB9IGVsc2UgewotICAgIHRtcCA9IGdzdF9jYXBzX3JlZiAoY2Fwcyk7Ci0gIH0KLQotICByZXN1bHQgPQotICAgICAgZ3N0X2dsX2NvbG9yX2NvbnZlcnRfdHJhbnNmb3JtX2NhcHMgKGNvbnRleHQsIGRpcmVjdGlvbiwgdG1wLCBmaWx0ZXIpOwotICBnc3RfY2Fwc191bnJlZiAodG1wKTsKLSAgdG1wID0gcmVzdWx0OwotCi0gIGlmIChkaXJlY3Rpb24gPT0gR1NUX1BBRF9TSU5LKSB7Ci0gICAgcmVzdWx0ID0gX3NldF9jYXBzX2ZlYXR1cmVzICh0bXAsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1NZU1RFTV9NRU1PUlkpOwotICAgIGdzdF9jYXBzX3VucmVmICh0bXApOwotICAgIHRtcCA9IHJlc3VsdDsKLSAgICByZXN1bHQgPSBnc3RfY2Fwc19pbnRlcnNlY3RfZnVsbCAodG1wLCB0ZW1wbCwgR1NUX0NBUFNfSU5URVJTRUNUX0ZJUlNUKTsKLSAgICBnc3RfY2Fwc191bnJlZiAodG1wKTsKLSAgICB0bXAgPSByZXN1bHQ7Ci0gIH0KLQotICBpZiAoZmlsdGVyKSB7Ci0gICAgcmVzdWx0ID0gZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGZpbHRlciwgdG1wLCBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOwotICAgIGdzdF9jYXBzX3VucmVmICh0bXApOwotICB9IGVsc2UgewotICAgIHJlc3VsdCA9IHRtcDsKLSAgfQotICBnc3RfY2Fwc191bnJlZiAodGVtcGwpOwotICBnc3RfY2Fwc191bnJlZiAoZ2xfdGVtcGwpOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qKgotICogZ3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fd2l0aF9kYXRhOgotICogQGRvd25sb2FkOiBhICNHc3RHTERvd25sb2FkCi0gKiBAdGV4dHVyZV9pZDogdGhlIHRleHR1cmUgaWQgdG8gZG93bmxvYWQKLSAqIEB0ZXh0dXJlX3RhcmdldDogdGhlIEdMIHRleHR1cmUgdGFyZ2V0Ci0gKiBAZGF0YTogKG91dCk6IHdoZXJlIHRoZSBkb3dubG9hZGVkIGRhdGEgc2hvdWxkIGdvCi0gKgotICogRG93bmxvYWRzIEB0ZXh0dXJlX2lkIGludG8gQGRhdGEuIEBkYXRhIHNpemUgYW5kIGZvcm1hdCBpcyBzcGVjaWZpZWQgYnkKLSAqIHRoZSAjR3N0VmlkZW9Gb3JtYXQgcGFzc2VkIHRvIGdzdF9nbF9kb3dubG9hZF9zZXRfZm9ybWF0KCkKLSAqCi0gKiBUaGlzIG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIGZvciBkb3dubG9hZCBhIHNpbmdsZSB2aWV3LgotICoKLSAqIFJldHVybnM6IHdoZXRoZXIgdGhlIGRvd25sb2FkIHdhcyBzdWNjZXNzZnVsCi0gKi8KLWdib29sZWFuCi1nc3RfZ2xfZG93bmxvYWRfcGVyZm9ybV93aXRoX2RhdGEgKEdzdEdMRG93bmxvYWQgKiBkb3dubG9hZCwKLSAgICBHTHVpbnQgdGV4dHVyZV9pZCwgR0x1aW50IHRleHR1cmVfdGFyZ2V0LAotICAgIGdwb2ludGVyIGRhdGFbR1NUX1ZJREVPX01BWF9QTEFORVNdKQotewotICBnYm9vbGVhbiByZXQ7Ci0KLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRvd25sb2FkICE9IE5VTEwsIEZBTFNFKTsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKGRvd25sb2FkKTsKLSAgcmV0ID0KLSAgICAgIF9nc3RfZ2xfZG93bmxvYWRfcGVyZm9ybV93aXRoX2RhdGFfdW5sb2NrZWQgKGRvd25sb2FkLAotICAgICAgdGV4dHVyZV9pZCwgdGV4dHVyZV90YXJnZXQsIGRhdGEpOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoZG93bmxvYWQpOwotCi0gIHJldHVybiByZXQ7Ci19Ci0KLS8qIFRoaXMgbWV0aG9kIG9ubHkgc3VwcG9ydHMgb25lIGlucHV0IHRleHR1cmUgKi8KLXN0YXRpYyBnYm9vbGVhbgotX2dzdF9nbF9kb3dubG9hZF9wZXJmb3JtX3dpdGhfZGF0YV91bmxvY2tlZCAoR3N0R0xEb3dubG9hZCAqIGRvd25sb2FkLAotICAgIEdMdWludCB0ZXh0dXJlX2lkLCBHTHVpbnQgdGV4dHVyZV90YXJnZXQsCi0gICAgZ3BvaW50ZXIgZGF0YVtHU1RfVklERU9fTUFYX1BMQU5FU10pCi17Ci0gIGd1aW50IGk7Ci0gIGdib29sZWFuIHJlczsKLSAgR3N0QnVmZmVyICppbmJ1ZjsKLSAgZ3VpbnQgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0OwotCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkb3dubG9hZCAhPSBOVUxMLCBGQUxTRSk7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh0ZXh0dXJlX2lkID4gMCwgRkFMU0UpOwotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX1ZJREVPX0lORk9fRk9STUFUICgmZG93bmxvYWQtPmluZm8pICE9Ci0gICAgICBHU1RfVklERU9fRk9STUFUX1VOS05PV04KLSAgICAgICYmIEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJmRvd25sb2FkLT5pbmZvKSAhPSBHU1RfVklERU9fRk9STUFUX0VOQ09ERUQsCi0gICAgICBGQUxTRSk7Ci0KLSAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTICgmZG93bmxvYWQtPmluZm8pOyBpKyspIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGF0YVtpXSAhPSBOVUxMLCBGQUxTRSk7Ci0gIH0KLQotICBpZiAoIWRvd25sb2FkLT5wcml2LT5pbl90ZXgpIHsKLSAgICBHc3RWaWRlb0luZm8gdGVtcF9pbmZvOwotCi0gICAgZ3N0X3ZpZGVvX2luZm9fc2V0X2Zvcm1hdCAoJnRlbXBfaW5mbywgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBLAotICAgICAgICBHU1RfVklERU9fSU5GT19XSURUSCAoJmRvd25sb2FkLT5pbmZvKSwKLSAgICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmZG93bmxvYWQtPmluZm8pKTsKLQotICAgIGRvd25sb2FkLT5wcml2LT5pbl90ZXggPQotICAgICAgICBnc3RfZ2xfbWVtb3J5X3dyYXBwZWRfdGV4dHVyZSAoZG93bmxvYWQtPmNvbnRleHQsCi0gICAgICAgIHRleHR1cmVfaWQsIHRleHR1cmVfdGFyZ2V0LCAmdGVtcF9pbmZvLCAwLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgfQotCi0KLSAgb3V0X3dpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEggKCZkb3dubG9hZC0+aW5mbyk7Ci0gIG91dF9oZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZkb3dubG9hZC0+aW5mbyk7Ci0KLSAgR1NUX1RSQUNFICgiZG9pbmcgZG93bmxvYWQgb2YgdGV4dHVyZToldSAoJXV4JXUpIiwKLSAgICAgIGRvd25sb2FkLT5wcml2LT5pbl90ZXgtPnRleF9pZCwgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0KTsKLQotICBkb3dubG9hZC0+cHJpdi0+aW5fdGV4LT50ZXhfaWQgPSB0ZXh0dXJlX2lkOwotCi0gIGluYnVmID0gZ3N0X2J1ZmZlcl9uZXcgKCk7Ci0gIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAoaW5idWYsCi0gICAgICBnc3RfbWVtb3J5X3JlZiAoKEdzdE1lbW9yeSAqKSBkb3dubG9hZC0+cHJpdi0+aW5fdGV4KSk7Ci0KLSAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19NQVhfUExBTkVTOyBpKyspCi0gICAgZG93bmxvYWQtPnByaXYtPm91dF9kYXRhW2ldID0gZGF0YVtpXTsKLSAgLyogQ2xlYXIgcmVtYWluaW5nIHBsYW5lcyBmb3Igc2FmZXR5ICovCi0gIHdoaWxlIChpIDwgR1NUX0dMX0RPV05MT0FEX01BWF9QTEFORVMpCi0gICAgZG93bmxvYWQtPnByaXYtPm91dF9kYXRhW2krK10gPSBOVUxMOwotCi0gIHJlcyA9IF9kb19kb3dubG9hZCAoZG93bmxvYWQsIGluYnVmKTsKLQotICBkb3dubG9hZC0+cHJpdi0+aW5idWYgPSBOVUxMOwotICBnc3RfYnVmZmVyX3VucmVmIChpbmJ1Zik7Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotc3RhdGljIGdib29sZWFuCi1faW5pdF9kb3dubG9hZCAoR3N0R0xEb3dubG9hZCAqIGRvd25sb2FkKQotewotICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdDsKLSAgR3N0Q2FwcyAqaW5fY2FwcywgKm91dF9jYXBzOwotICBHc3RDYXBzRmVhdHVyZXMgKm91dF9nbF9mZWF0dXJlczsKLSAgZ2Jvb2xlYW4gcmVzOwotCi0gIHZfZm9ybWF0ID0gR1NUX1ZJREVPX0lORk9fRk9STUFUICgmZG93bmxvYWQtPmluZm8pOwotCi0gIGlmIChkb3dubG9hZC0+aW5pdHRlZCkKLSAgICByZXR1cm4gVFJVRTsKLQotICBHU1RfVFJBQ0UgKCJpbml0aWFsaXppbmcgdGV4dHVyZSBkb3dubG9hZCBmb3IgZm9ybWF0ICVzIiwKLSAgICAgIGdzdF92aWRlb19mb3JtYXRfdG9fc3RyaW5nICh2X2Zvcm1hdCkpOwotCi0gIGlmIChVU0lOR19HTEVTMiAoZG93bmxvYWQtPmNvbnRleHQpICYmICFVU0lOR19HTEVTMyAoZG93bmxvYWQtPmNvbnRleHQpKSB7Ci0gICAgLyogR0xfUkdCQSBpcyB0aGUgb25seSBvZmZpY2lhbGx5IHN1cHBvcnRlZCB0ZXh0dXJlIGZvcm1hdCBpbiBHTEVTMiAqLwotICAgIGlmICh2X2Zvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX1JHQiB8fCB2X2Zvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX0JHUikgewotICAgICAgZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yIChkb3dubG9hZC0+Y29udGV4dCwgIkNhbm5vdCBkb3dubG9hZCBSR0IgIgotICAgICAgICAgICJ0ZXh0dXJlcyBpbiBHTEVTMiIpOwotICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLSAgfQotCi0gIG91dF9nbF9mZWF0dXJlcyA9Ci0gICAgICBnc3RfY2Fwc19mZWF0dXJlc19mcm9tX3N0cmluZyAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKTsKLSAgb3V0X2NhcHMgPSBnc3RfdmlkZW9faW5mb190b19jYXBzICgmZG93bmxvYWQtPmluZm8pOwotICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMgKG91dF9jYXBzLCAwLCBvdXRfZ2xfZmVhdHVyZXMpOwotCi0gIGluX2NhcHMgPSBnc3RfY2Fwc19jb3B5IChvdXRfY2Fwcyk7Ci0gIGdzdF9jYXBzX3NldF9zaW1wbGUgKGluX2NhcHMsICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCAiUkdCQSIsIE5VTEwpOwotCi0gIHJlcyA9IGdzdF9nbF9jb2xvcl9jb252ZXJ0X3NldF9jYXBzIChkb3dubG9hZC0+Y29udmVydCwgaW5fY2Fwcywgb3V0X2NhcHMpOwotCi0gIGdzdF9jYXBzX3VucmVmIChpbl9jYXBzKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKG91dF9jYXBzKTsKLQotICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLV9kb19kb3dubG9hZCAoR3N0R0xEb3dubG9hZCAqIGRvd25sb2FkLCBHc3RCdWZmZXIgKiBpbmJ1ZikKLXsKLSAgR3N0QnVmZmVyICpvdXRidWY7Ci0gIEdzdE1hcEluZm8gbWFwX2luZm87Ci0gIGdib29sZWFuIHJldCA9IFRSVUU7Ci0gIGdpbnQgaTsKLSAgR3N0VmlkZW9JbmZvICppbmZvOwotICBndWludCB2aWV3cywgb3V0X3BsYW5lczsKLSAgZ3BvaW50ZXIgKmRhdGEgPSBkb3dubG9hZC0+cHJpdi0+b3V0X2RhdGE7Ci0KLSAgaWYgKCFkb3dubG9hZC0+aW5pdHRlZCkgewotICAgIGlmICghX2luaXRfZG93bmxvYWQgKGRvd25sb2FkKSkgewotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZG93bmxvYWQsICJGYWlsZWQgdG8gaW5pdGlhbGlzZSIpOwotICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLSAgfQotCi0gIG91dGJ1ZiA9IGdzdF9nbF9jb2xvcl9jb252ZXJ0X3BlcmZvcm0gKGRvd25sb2FkLT5jb252ZXJ0LCBpbmJ1Zik7Ci0gIGlmICghb3V0YnVmKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZG93bmxvYWQsICJGYWlsZWQgdG8gY29sb3VyIGNvbnZlcnQgZm9yIG91dHB1dCIpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIGluZm8gPSAmZG93bmxvYWQtPmluZm87Ci0gIGlmIChHU1RfVklERU9fSU5GT19NVUxUSVZJRVdfTU9ERSAoaW5mbykgPT0KLSAgICAgIEdTVF9WSURFT19NVUxUSVZJRVdfTU9ERV9TRVBBUkFURUQpCi0gICAgdmlld3MgPSBHU1RfVklERU9fSU5GT19WSUVXUyAoaW5mbyk7Ci0gIGVsc2UKLSAgICB2aWV3cyA9IDE7Ci0gIG91dF9wbGFuZXMgPSBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoaW5mbykgKiB2aWV3czsKLQotICBmb3IgKGkgPSAwOyBpIDwgb3V0X3BsYW5lczsgaSsrKSB7Ci0gICAgR3N0TWVtb3J5ICpvdXRfbWVtID0gZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeSAob3V0YnVmLCBpKTsKLSAgICBncG9pbnRlciB0ZW1wX2RhdGEgPSAoKEdzdEdMQmFzZUJ1ZmZlciAqKSBvdXRfbWVtKS0+ZGF0YTsKLSAgICAoKEdzdEdMQmFzZUJ1ZmZlciAqKSBvdXRfbWVtKS0+ZGF0YSA9IGRhdGFbaV07Ci0KLSAgICBpZiAoIWdzdF9tZW1vcnlfbWFwIChvdXRfbWVtLCAmbWFwX2luZm8sIEdTVF9NQVBfUkVBRCkpIHsKLSAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGRvd25sb2FkLCAiRmFpbGVkIHRvIG1hcCBtZW1vcnkiKTsKLSAgICAgIHJldCA9IEZBTFNFOwotICAgIH0KLSAgICBnc3RfbWVtb3J5X3VubWFwIChvdXRfbWVtLCAmbWFwX2luZm8pOwotICAgICgoR3N0R0xCYXNlQnVmZmVyICopIG91dF9tZW0pLT5kYXRhID0gdGVtcF9kYXRhOwotICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAob3V0X21lbSwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCk7Ci0gIH0KLQotICBnc3RfYnVmZmVyX3VucmVmIChvdXRidWYpOwotCi0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotX2dzdF9nbF9kb3dubG9hZF9wZXJmb3JtX3VubG9ja2VkIChHc3RHTERvd25sb2FkICogZG93bmxvYWQsCi0gICAgR3N0QnVmZmVyICogaW5idWYsIEdzdEJ1ZmZlciAqIG91dGJ1ZikKLXsKLSAgZ3VpbnQgaTsKLSAgZ2Jvb2xlYW4gcmVzID0gRkFMU0U7Ci0gIGd1aW50IG91dF93aWR0aCwgb3V0X2hlaWdodDsKLSAgR3N0VmlkZW9GcmFtZSBvdXRfZnJhbWU7Ci0KLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRvd25sb2FkICE9IE5VTEwsIEZBTFNFKTsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJmRvd25sb2FkLT5pbmZvKSAhPQotICAgICAgR1NUX1ZJREVPX0ZPUk1BVF9VTktOT1dOCi0gICAgICAmJiBHU1RfVklERU9fSU5GT19GT1JNQVQgKCZkb3dubG9hZC0+aW5mbykgIT0gR1NUX1ZJREVPX0ZPUk1BVF9FTkNPREVELAotICAgICAgRkFMU0UpOwotCi0gIG91dF93aWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIICgmZG93bmxvYWQtPmluZm8pOwotICBvdXRfaGVpZ2h0ID0gR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmZG93bmxvYWQtPmluZm8pOwotCi0gIEdTVF9UUkFDRV9PQkpFQ1QgKGRvd25sb2FkLCAiZG9pbmcgZG93bmxvYWQgb2YgYnVmZmVyICUiIEdTVF9QVFJfRk9STUFUCi0gICAgICAiICgldXgldSkiLCBpbmJ1Ziwgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0KTsKLQotICAvKiBGSVhNRTogTWFwIG11bHRpcGxlIHZpZXdzICovCi0gIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJm91dF9mcmFtZSwgJmRvd25sb2FkLT5pbmZvLCBvdXRidWYsIEdTVF9NQVBfV1JJVEUpKQotICAgIHJldHVybiBGQUxTRTsKLQotICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKCZkb3dubG9hZC0+aW5mbyk7IGkrKykgewotICAgIGlmIChvdXRfZnJhbWUuZGF0YVtpXSA9PSBOVUxMKQotICAgICAgZ290byBmYWlsOwotICAgIGRvd25sb2FkLT5wcml2LT5vdXRfZGF0YVtpXSA9IG91dF9mcmFtZS5kYXRhW2ldOwotICB9Ci0gIHdoaWxlIChpIDwgR1NUX0dMX0RPV05MT0FEX01BWF9QTEFORVMpCi0gICAgZG93bmxvYWQtPnByaXYtPm91dF9kYXRhW2krK10gPSBOVUxMOwotCi0gIHJlcyA9IF9kb19kb3dubG9hZCAoZG93bmxvYWQsIGluYnVmKTsKLQotZmFpbDoKLSAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmb3V0X2ZyYW1lKTsKLSAgZG93bmxvYWQtPnByaXYtPmluYnVmID0gTlVMTDsKLQotICByZXR1cm4gcmVzOwotfQotCi0vKioKLSAqIGdzdF9nbF9kb3dubG9hZF9wZXJmb3JtOgotICogQGRvd25sb2FkOiBhICNHc3RHTERvd25sb2FkCi0gKiBAaW5idWY6ICh0cmFuc2ZlciBub25lKTogYSAjR3N0QnVmZmVyIGlucHV0IGJ1ZmZlcgotICogQG91dGJ1ZjogKHRyYW5zZmVyIG5vbmUpIChvdXQpOiBhICNHc3RCdWZmZXIgb3V0cHV0IGJ1ZmZlcgotICoKLSAqIERvd25sb2FkcyB0aGUgY29udGVudHMgb2YgQGluYnVmIGludG8gQG91dGJ1Zi4KLSAqCi0gKiBUaGUgb3V0cHV0IGJ1ZmZlciBjb250ZW50cyBtdXN0IG1hdGNoIHRoZSAjR3N0VmlkZW9Gb3JtYXQgcGFzc2VkCi0gKiB0byBnc3RfZ2xfZG93bmxvYWRfc2V0X2Zvcm1hdCgpLCBhbmQgdGhlIGlucHV0IGJ1ZmZlciBtdXN0Ci0gKiBjb250YWluICNHc3RHTE1lbW9yeSBtZW1vcnkgaXRlbXMuCi0gKgotICogVGhpcyBtZXRob2Qgc3VwcG9ydHMgZG93bmxvYWRpbmcgbXVsdGlwbGUgdmlld3MuCi0gKgotICogUmV0dXJuczogd2hldGhlciB0aGUgZG93bmxvYWQgd2FzIHN1Y2Nlc3NmdWwKLSAqLwotZ2Jvb2xlYW4KLWdzdF9nbF9kb3dubG9hZF9wZXJmb3JtIChHc3RHTERvd25sb2FkICogZG93bmxvYWQsCi0gICAgR3N0QnVmZmVyICogaW5idWYsIEdzdEJ1ZmZlciAqIG91dGJ1ZikKLXsKLSAgZ2Jvb2xlYW4gcmV0OwotCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkb3dubG9hZCAhPSBOVUxMLCBGQUxTRSk7Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChkb3dubG9hZCk7Ci0gIHJldCA9IF9nc3RfZ2xfZG93bmxvYWRfcGVyZm9ybV91bmxvY2tlZCAoZG93bmxvYWQsIGluYnVmLCBvdXRidWYpOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoZG93bmxvYWQpOwotCi0gIHJldHVybiByZXQ7Ci19CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkb3dubG9hZC5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZG93bmxvYWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ3Njg1NC4uMDAwMDAwMAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkb3dubG9hZC5oCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDEyIE1hdHRoZXcgV2F0ZXJzIDx5c3RyZWUwMEBnbWFpbC5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBfX0dTVF9HTF9ET1dOTE9BRF9IX18KLSNkZWZpbmUgX19HU1RfR0xfRE9XTkxPQURfSF9fCi0KLSNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KLSNpbmNsdWRlIDxnc3QvZ3N0bWVtb3J5Lmg+Ci0KLSNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KLQotR19CRUdJTl9ERUNMUwotCi1HVHlwZSBnc3RfZ2xfZG93bmxvYWRfZ2V0X3R5cGUgKHZvaWQpOwotI2RlZmluZSBHU1RfVFlQRV9HTF9ET1dOTE9BRCAoZ3N0X2dsX2Rvd25sb2FkX2dldF90eXBlKCkpCi0jZGVmaW5lIEdTVF9HTF9ET1dOTE9BRChvYmopIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9HTF9ET1dOTE9BRCxHc3RHTERvd25sb2FkKSkKLSNkZWZpbmUgR1NUX0dMX0RPV05MT0FEX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9HTF9ESVNQTEFZLEdzdEdMRG93bmxvYWRDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19HTF9ET1dOTE9BRChvYmopIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9HTF9ET1dOTE9BRCkpCi0jZGVmaW5lIEdTVF9JU19HTF9ET1dOTE9BRF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfR0xfRE9XTkxPQUQpKQotI2RlZmluZSBHU1RfR0xfRE9XTkxPQURfQ0FTVChvYmopICgoR3N0R0xEb3dubG9hZCopKG9iaikpCi0KLS8qKgotICogR3N0R0xEb3dubG9hZDoKLSAqCi0gKiBPcGFxdWUgI0dzdEdMRG93bmxvYWQgb2JqZWN0Ci0gKi8KLXN0cnVjdCBfR3N0R0xEb3dubG9hZAotewotICAvKiA8cHJpdmF0ZT4gKi8KLSAgR3N0T2JqZWN0ICAgICAgICBwYXJlbnQ7Ci0KLSAgR3N0R0xDb250ZXh0ICAgICAqY29udGV4dDsKLSAgR3N0R0xDb2xvckNvbnZlcnQgKmNvbnZlcnQ7Ci0KLSAgLyogb3V0cHV0IGRhdGEgKi8KLSAgR3N0VmlkZW9JbmZvICAgICBpbmZvOwotCi0gIGdib29sZWFuICAgICAgICAgaW5pdHRlZDsKLQotICBHc3RHTERvd25sb2FkUHJpdmF0ZSAqcHJpdjsKLQotICBncG9pbnRlciBfcmVzZXJ2ZWRbR1NUX1BBRERJTkddOwotfTsKLQotLyoqCi0gKiBHc3RHTERvd25sb2FkQ2xhc3M6Ci0gKgotICogVGhlICNHc3RHTERvd25sb2FkQ2xhc3Mgc3RydWN0IG9ubHkgY29udGFpbnMgcHJpdmF0ZSBkYXRhCi0gKi8KLXN0cnVjdCBfR3N0R0xEb3dubG9hZENsYXNzCi17Ci0gIC8qIDxwcml2YXRlPiAqLwotICBHc3RPYmplY3RDbGFzcyBvYmplY3RfY2xhc3M7Ci19OwotCi1Hc3RHTERvd25sb2FkICogZ3N0X2dsX2Rvd25sb2FkX25ldyAgICAgICAgICAoR3N0R0xDb250ZXh0ICogY29udGV4dCk7Ci0KLXZvaWQgZ3N0X2dsX2Rvd25sb2FkX3NldF9mb3JtYXQgICAgICAgICAgICAgICAgKEdzdEdMRG93bmxvYWQgKiBkb3dubG9hZCwgR3N0VmlkZW9JbmZvICogb3V0X2luZm8pOwotR3N0Q2FwcyAqIGdzdF9nbF9kb3dubG9hZF90cmFuc2Zvcm1fY2FwcyAgICAgICAoR3N0R0xDb250ZXh0ICogY29udmVydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICogY2FwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENhcHMgKiBmaWx0ZXIpOwotCi1nYm9vbGVhbiBnc3RfZ2xfZG93bmxvYWRfcGVyZm9ybV93aXRoX2RhdGEgICAgICAgICAgKEdzdEdMRG93bmxvYWQgKiBkb3dubG9hZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmVfaWQsIEdMdWludCB0ZXh0dXJlX3RhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgZGF0YVtHU1RfVklERU9fTUFYX1BMQU5FU10pOwotZ2Jvb2xlYW4gZ3N0X2dsX2Rvd25sb2FkX3BlcmZvcm0gKEdzdEdMRG93bmxvYWQgKiBkb3dubG9hZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RCdWZmZXIgKmluYnVmLCBHc3RCdWZmZXIgKm91dGJ1Zik7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBfX0dTVF9HTF9ET1dOTE9BRF9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZlYXR1cmUuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZlYXR1cmUuYwppbmRleCA0YTVkODc2Li5iYWYyOWIxIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmZWF0dXJlLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmVhdHVyZS5jCkBAIC0yNyw2ICsyNywyMSBAQAogI2luY2x1ZGUgImdsLmgiCiAjaW5jbHVkZSAiZ3N0Z2xmZWF0dXJlLmgiCiAKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdsX2ZlYXR1cmUKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfREVGQVVMVCk7CisKK3N0YXRpYyB2b2lkCitfaW5pdF9kZWJ1ZyAodm9pZCkKK3sKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9ERUZBVUxULCAiZ2xmZWF0dXJlIiwgMCwKKyAgICAgICAgIk9wZW5HTCBmZWF0dXJlIGRldGVjdGlvbiIpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9Cit9CisKIGdib29sZWFuCiBnc3RfZ2xfY2hlY2tfZXh0ZW5zaW9uIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBnY2hhciAqIGV4dCkKIHsKQEAgLTE4OSw4ICsyMDQsNyBAQAogICBmb3IgKGZ1bmNfbnVtID0gMDsgZGF0YS0+ZnVuY3Rpb25zW2Z1bmNfbnVtXS5uYW1lOyBmdW5jX251bSsrKSB7CiAgICAgdm9pZCAqZnVuYzsKIAotICAgIGlmIChmdWxsX2Z1bmN0aW9uX25hbWUpCi0gICAgICBnX2ZyZWUgKGZ1bGxfZnVuY3Rpb25fbmFtZSk7CisgICAgZ19mcmVlIChmdWxsX2Z1bmN0aW9uX25hbWUpOwogCiAgICAgZnVsbF9mdW5jdGlvbl9uYW1lID0gZ19zdHJjb25jYXQgKCJnbCIsIGRhdGEtPmZ1bmN0aW9uc1tmdW5jX251bV0ubmFtZSwKICAgICAgICAgc3VmZml4LCBOVUxMKTsKQEAgLTI1MSw2ICsyNjUsOCBAQAogewogICBpbnQgaTsKIAorICBfaW5pdF9kZWJ1ZyAoKTsKKwogICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChnc3RfZ2xfZmVhdHVyZV9leHRfZnVuY3Rpb25zX2RhdGEpOyBpKyspIHsKICAgICBfZ3N0X2dsX2ZlYXR1cmVfY2hlY2sgKGNvbnRleHQsICJHTCIsCiAgICAgICAgIGdzdF9nbF9mZWF0dXJlX2V4dF9mdW5jdGlvbnNfZGF0YSArIGksIGdsX21ham9yLCBnbF9taW5vciwKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZlYXR1cmUuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZlYXR1cmUuaAppbmRleCAwYmJjZGE2Li5mZGMzMTM3IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmZWF0dXJlLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmVhdHVyZS5oCkBAIC05Nyw3ICs5Nyw3IEBACiBnYm9vbGVhbgogZ3N0X2dsX2NoZWNrX2V4dGVuc2lvbiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKiBleHQpOwogCi1nYm9vbGVhbgorR19HTlVDX0lOVEVSTkFMIGdib29sZWFuCiBfZ3N0X2dsX2ZlYXR1cmVfY2hlY2sgKEdzdEdMQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRyaXZlcl9wcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHc3RHTEZlYXR1cmVEYXRhICpkYXRhLApAQCAtMTA1LDcgKzEwNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICBpbnQgZ2xfbWlub3IsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpleHRlbnNpb25zX3N0cmluZyk7CiAKLXZvaWQKK0dfR05VQ19JTlRFUk5BTCB2b2lkCiBfZ3N0X2dsX2ZlYXR1cmVfY2hlY2tfZXh0X2Z1bmN0aW9ucyAoR3N0R0xDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ2xfbWFqb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBnbF9taW5vciwKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmlsdGVyLmMKaW5kZXggNzhiY2JjOS4uMWUxOGU0MSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmlsdGVyLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmlsdGVyLmMKQEAgLTM1LDI0ICszNSwzMSBAQAogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2dsX2ZpbHRlcl9kZWJ1ZwogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9ERUZBVUxUKTsKIAotCisvKiAqSU5ERU5ULU9GRiogKi8KIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfZ2xfZmlsdGVyX3NyY19wYWRfdGVtcGxhdGUgPQogR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAogICAgIEdTVF9QQURfU1JDLAogICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTCi0gICAgICAgIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksCi0gICAgICAgICAgICAiUkdCQSIpKQotICAgICk7CisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgIiksICIKKyAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSBSR0JBLCAiCisgICAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAgICJoZWlnaHQgPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAgICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIiwiCisgICAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSAyRCIKKyAgICApKTsKIAogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF9nbF9maWx0ZXJfc2lua19wYWRfdGVtcGxhdGUgPQogR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKICAgICBHU1RfUEFEX1NJTkssCiAgICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKLSAgICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwKLSAgICAgICAgICAgICJSR0JBIikpCi0gICAgKTsKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdygiIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSAiKSwgIgorICAgICAgImZvcm1hdCA9IChzdHJpbmcpIFJHQkEsICIKKyAgICAgICJ3aWR0aCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgImhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgImZyYW1lcmF0ZSA9ICIgR1NUX1ZJREVPX0ZQU19SQU5HRSAiLCIKKyAgICAgICJ0ZXh0dXJlLXRhcmdldCA9IChzdHJpbmcpIDJEIgorICAgICkpOworLyogKklOREVOVC1PTiogKi8KIAogLyogUHJvcGVydGllcyAqLwogZW51bQpAQCAtNjMsNyArNzAsOCBAQAogI2RlZmluZSBnc3RfZ2xfZmlsdGVyX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKIEdfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RHTEZpbHRlciwgZ3N0X2dsX2ZpbHRlciwgR1NUX1RZUEVfR0xfQkFTRV9GSUxURVIsCiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9nbF9maWx0ZXJfZGVidWcsICJnbGZpbHRlciIsIDAsCi0gICAgICAgICJnbGZpbHRlciBlbGVtZW50Iik7KTsKKyAgICAgICAgImdsZmlsdGVyIGVsZW1lbnQiKTsKKyAgICApOwogCiBzdGF0aWMgdm9pZCBnc3RfZ2xfZmlsdGVyX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKQEAgLTkwLDYgKzk4LDggQEAKICAgICBHc3RDYXBzICogb3V0Y2Fwcyk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2ZpbHRlcl9nbF9zdGFydCAoR3N0R0xCYXNlRmlsdGVyICogZmlsdGVyKTsKIHN0YXRpYyB2b2lkIGdzdF9nbF9maWx0ZXJfZ2xfc3RvcCAoR3N0R0xCYXNlRmlsdGVyICogZmlsdGVyKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfZmlsdGVyX2dsX3NldF9jYXBzIChHc3RHTEJhc2VGaWx0ZXIgKiBidCwKKyAgICBHc3RDYXBzICogaW5jYXBzLCBHc3RDYXBzICogb3V0Y2Fwcyk7CiAKIHN0YXRpYyB2b2lkCiBnc3RfZ2xfZmlsdGVyX2NsYXNzX2luaXQgKEdzdEdMRmlsdGVyQ2xhc3MgKiBrbGFzcykKQEAgLTExNyw2ICsxMjcsNyBAQAogCiAgIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5nbF9zdGFydCA9IGdzdF9nbF9maWx0ZXJfZ2xfc3RhcnQ7CiAgIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5nbF9zdG9wID0gZ3N0X2dsX2ZpbHRlcl9nbF9zdG9wOworICBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+Z2xfc2V0X2NhcHMgPSBnc3RfZ2xfZmlsdGVyX2dsX3NldF9jYXBzOwogCiAgIGtsYXNzLT50cmFuc2Zvcm1faW50ZXJuYWxfY2FwcyA9IGRlZmF1bHRfdHJhbnNmb3JtX2ludGVybmFsX2NhcHM7CiAKQEAgLTE3Niw0NCArMTg3LDExIEBACiB7CiAgIEdzdEdMRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfRklMVEVSIChiYXNlX2ZpbHRlcik7CiAgIEdzdEdMRmlsdGVyQ2xhc3MgKmZpbHRlcl9jbGFzcyA9IEdTVF9HTF9GSUxURVJfR0VUX0NMQVNTIChmaWx0ZXIpOwotICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQ7Ci0gIGdpbnQgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0OwotCi0gIG91dF93aWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIICgmZmlsdGVyLT5vdXRfaW5mbyk7Ci0gIG91dF9oZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZmaWx0ZXItPm91dF9pbmZvKTsKLQotICBpZiAoZmlsdGVyLT5mYm8pIHsKLSAgICBnc3RfZ2xfY29udGV4dF9kZWxfZmJvIChjb250ZXh0LCBmaWx0ZXItPmZibywgZmlsdGVyLT5kZXB0aGJ1ZmZlcik7Ci0gICAgZmlsdGVyLT5mYm8gPSAwOwotICAgIGZpbHRlci0+ZGVwdGhidWZmZXIgPSAwOwotICB9Ci0gIC8vYmxvY2tpbmcgY2FsbCwgZ2VuZXJhdGUgYSBGQk8KLSAgaWYgKCFnc3RfZ2xfY29udGV4dF9nZW5fZmJvIChjb250ZXh0LCBvdXRfd2lkdGgsIG91dF9oZWlnaHQsCi0gICAgICAgICAgJmZpbHRlci0+ZmJvLCAmZmlsdGVyLT5kZXB0aGJ1ZmZlcikpCi0gICAgZ290byBjb250ZXh0X2Vycm9yOwogCiAgIGlmIChmaWx0ZXJfY2xhc3MtPmRpc3BsYXlfaW5pdF9jYikKICAgICBmaWx0ZXJfY2xhc3MtPmRpc3BsYXlfaW5pdF9jYiAoZmlsdGVyKTsKIAotICBpZiAoZmlsdGVyX2NsYXNzLT5pbml0X2ZibykgewotICAgIGlmICghZmlsdGVyX2NsYXNzLT5pbml0X2ZibyAoZmlsdGVyKSkKLSAgICAgIGdvdG8gZXJyb3I7Ci0gIH0KLQogICByZXR1cm4gVFJVRTsKLQotY29udGV4dF9lcnJvcjoKLSAgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChmaWx0ZXIsIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiQ291bGQgbm90IGdlbmVyYXRlIEZCTyIpLAotICAgICAgICAoTlVMTCkpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotZXJyb3I6Ci0gIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmlsdGVyLCBMSUJSQVJZLCBJTklULAotICAgICAgICAoIlN1YmNsYXNzIGZhaWxlZCB0byBpbml0aWFsaXplLiIpLCAoTlVMTCkpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQogfQogCiBzdGF0aWMgdm9pZApAQCAtMjYyLDggKzI0MCw4IEBACiAgIEdWYWx1ZSBmcGFyID0geyAwLCB9LCB0cGFyID0gewogICAwLH07CiAKLSAgb3RoZXJjYXBzID0gZ3N0X2NhcHNfdHJ1bmNhdGUgKG90aGVyY2Fwcyk7CiAgIG90aGVyY2FwcyA9IGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKG90aGVyY2Fwcyk7CisgIG90aGVyY2FwcyA9IGdzdF9jYXBzX3RydW5jYXRlIChvdGhlcmNhcHMpOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKGJ0LCAidHJ5aW5nIHRvIGZpeGF0ZSBvdGhlcmNhcHMgJSIgR1NUX1BUUl9GT1JNQVQKICAgICAgICIgYmFzZWQgb24gY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgb3RoZXJjYXBzLCBjYXBzKTsKQEAgLTM1OCw3ICszMzYsMTMgQEAKICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGJ0LCAiaGVpZ2h0IGlzIGZpeGVkICglZCkiLCBoKTsKIAogICAgICAgaWYgKCFnc3RfdmFsdWVfaXNfZml4ZWQgKHRvX3BhcikpIHsKLSAgICAgICAgZ3N0X3ZhbHVlX3NldF9mcmFjdGlvbiAoJnRwYXIsIDEsIDEpOworICAgICAgICAvKiAoc2hvcnRjdXQpIGNvcHktcGFzdGUgKD8/KSBvZiB2aWRlb3NjYWxlIHNlZW1zIHRvIGFpbSBmb3IgMS8xLAorICAgICAgICAgKiBzbyBsZXQncyBtYWtlIGl0IHNvIC4uLgorICAgICAgICAgKiBlc3BlY2lhbGx5IGlmIGZvbGxvd2luZyBjb2RlIGFzc3VtZXMgZml4ZWQgKi8KKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYnQsICJmaXhhdGluZyB0b19wYXIgdG8gMXgxIik7CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24gKG91dHMsCisgICAgICAgICAgICAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgMSwgMSk7CisgICAgICAgIHRvX3BhciA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChvdXRzLCAicGl4ZWwtYXNwZWN0LXJhdGlvIik7CiAgICAgICB9CiAKICAgICAgIC8qIFBBUiBpcyBmaXhlZCwgY2hvb3NlIHRoZSBoZWlnaHQgdGhhdCBpcyBuZWFyZXN0IHRvIHRoZQpAQCAtMzg1LDcgKzM2OSwxMyBAQAogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYnQsICJ3aWR0aCBpcyBmaXhlZCAoJWQpIiwgdyk7CiAKICAgICAgIGlmICghZ3N0X3ZhbHVlX2lzX2ZpeGVkICh0b19wYXIpKSB7Ci0gICAgICAgIGdzdF92YWx1ZV9zZXRfZnJhY3Rpb24gKCZ0cGFyLCAxLCAxKTsKKyAgICAgICAgLyogKHNob3J0Y3V0KSBjb3B5LXBhc3RlICg/Pykgb2YgdmlkZW9zY2FsZSBzZWVtcyB0byBhaW0gZm9yIDEvMSwKKyAgICAgICAgICogc28gbGV0J3MgbWFrZSBpdCBzbyAuLi4KKyAgICAgICAgICogZXNwZWNpYWxseSBpZiBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIGZpeGVkICovCisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGJ0LCAiZml4YXRpbmcgdG9fcGFyIHRvIDF4MSIpOworICAgICAgICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ZyYWN0aW9uIChvdXRzLAorICAgICAgICAgICAgInBpeGVsLWFzcGVjdC1yYXRpbyIsIDEsIDEpOworICAgICAgICB0b19wYXIgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAob3V0cywgInBpeGVsLWFzcGVjdC1yYXRpbyIpOwogICAgICAgfQogCiAgICAgICAvKiBQQVIgaXMgZml4ZWQsIGNob29zZSB0aGUgaGVpZ2h0IHRoYXQgaXMgbmVhcmVzdCB0byB0aGUKQEAgLTY3Nyw2ICs2NjcsNDkgQEAKIH0KIAogc3RhdGljIGdib29sZWFuCitnc3RfZ2xfZmlsdGVyX2dsX3NldF9jYXBzIChHc3RHTEJhc2VGaWx0ZXIgKiBidCwgR3N0Q2FwcyAqIGluY2FwcywKKyAgICBHc3RDYXBzICogb3V0Y2FwcykKK3sKKyAgR3N0R0xGaWx0ZXIgKmZpbHRlciA9IEdTVF9HTF9GSUxURVIgKGJ0KTsKKyAgR3N0R0xGaWx0ZXJDbGFzcyAqZmlsdGVyX2NsYXNzID0gR1NUX0dMX0ZJTFRFUl9HRVRfQ0xBU1MgKGZpbHRlcik7CisgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dDsKKyAgZ2ludCBvdXRfd2lkdGgsIG91dF9oZWlnaHQ7CisKKyAgb3V0X3dpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEggKCZmaWx0ZXItPm91dF9pbmZvKTsKKyAgb3V0X2hlaWdodCA9IEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJmZpbHRlci0+b3V0X2luZm8pOworCisgIGlmIChmaWx0ZXItPmZibykgeworICAgIGdzdF9nbF9jb250ZXh0X2RlbF9mYm8gKGNvbnRleHQsIGZpbHRlci0+ZmJvLCBmaWx0ZXItPmRlcHRoYnVmZmVyKTsKKyAgICBmaWx0ZXItPmZibyA9IDA7CisgICAgZmlsdGVyLT5kZXB0aGJ1ZmZlciA9IDA7CisgIH0KKyAgLy9ibG9ja2luZyBjYWxsLCBnZW5lcmF0ZSBhIEZCTworICBpZiAoIWdzdF9nbF9jb250ZXh0X2dlbl9mYm8gKGNvbnRleHQsIG91dF93aWR0aCwgb3V0X2hlaWdodCwKKyAgICAgICAgICAmZmlsdGVyLT5mYm8sICZmaWx0ZXItPmRlcHRoYnVmZmVyKSkKKyAgICBnb3RvIGNvbnRleHRfZXJyb3I7CisKKyAgaWYgKGZpbHRlcl9jbGFzcy0+aW5pdF9mYm8pIHsKKyAgICBpZiAoIWZpbHRlcl9jbGFzcy0+aW5pdF9mYm8gKGZpbHRlcikpCisgICAgICBnb3RvIGVycm9yOworICB9CisKKyAgcmV0dXJuIFRSVUU7CisKK2NvbnRleHRfZXJyb3I6CisgIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmlsdGVyLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIkNvdWxkIG5vdCBnZW5lcmF0ZSBGQk8iKSwKKyAgICAgICAgKE5VTEwpKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KK2Vycm9yOgorICB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKGZpbHRlciwgTElCUkFSWSwgSU5JVCwKKyAgICAgICAgKCJTdWJjbGFzcyBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4iKSwgKE5VTEwpKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KK30KKworc3RhdGljIGdib29sZWFuCiBnc3RfZ2xfZmlsdGVyX3NldF9jYXBzIChHc3RCYXNlVHJhbnNmb3JtICogYnQsIEdzdENhcHMgKiBpbmNhcHMsCiAgICAgR3N0Q2FwcyAqIG91dGNhcHMpCiB7CkBAIC03MDMsNyArNzM2LDggQEAKICAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIICgmZmlsdGVyLT5vdXRfaW5mbyksCiAgICAgICBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZmaWx0ZXItPm91dF9pbmZvKSwgaW5jYXBzLCBvdXRjYXBzKTsKIAotICByZXR1cm4gVFJVRTsKKyAgcmV0dXJuIEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUyAocGFyZW50X2NsYXNzKS0+c2V0X2NhcHMgKGJ0LCBpbmNhcHMsCisgICAgICBvdXRjYXBzKTsKIAogLyogRVJST1JTICovCiB3cm9uZ19jYXBzOgpAQCAtODk0LDYgKzkyOCwxMyBAQAogICByZXR1cm4gcmV0OwogfQogCitzdGF0aWMgdm9pZAorX2RlYnVnX21hcmtlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xGaWx0ZXIgKiBmaWx0ZXIpCit7CisgIGdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyIChjb250ZXh0LAorICAgICAgInByb2Nlc3NpbmcgaW4gZWxlbWVudCAlcyIsIEdTVF9PQkpFQ1RfTkFNRSAoZmlsdGVyKSk7Cit9CisKIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfZ2xfZmlsdGVyX3RyYW5zZm9ybSAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0LCBHc3RCdWZmZXIgKiBpbmJ1ZiwKICAgICBHc3RCdWZmZXIgKiBvdXRidWYpCkBAIC05MTQsNiArOTU1LDggQEAKICAgaWYgKGluX3N5bmNfbWV0YSkKICAgICBnc3RfZ2xfc3luY19tZXRhX3dhaXQgKGluX3N5bmNfbWV0YSwgY29udGV4dCk7CiAKKyAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoY29udGV4dCwgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9kZWJ1Z19tYXJrZXIsCisgICAgICBmaWx0ZXIpOwogICBpZiAoZmlsdGVyX2NsYXNzLT5maWx0ZXIpCiAgICAgcmV0ID0gZmlsdGVyX2NsYXNzLT5maWx0ZXIgKGZpbHRlciwgaW5idWYsIG91dGJ1Zik7CiAgIGVsc2UKQEAgLTk4OSw2ICsxMDMyLDI4IEBACiB9CiAKIHN0YXRpYyB2b2lkCitfZ2V0X2F0dHJpYnV0ZXMgKEdzdEdMRmlsdGVyICogZmlsdGVyKQoreworICBpZiAoIWZpbHRlci0+ZGVmYXVsdF9zaGFkZXIpCisgICAgcmV0dXJuOworCisgIGlmIChmaWx0ZXItPnZhbGlkX2F0dHJpYnV0ZXMpCisgICAgcmV0dXJuOworCisgIGlmIChmaWx0ZXItPmRyYXdfYXR0cl9wb3NpdGlvbl9sb2MgPT0gLTEpCisgICAgZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jID0KKyAgICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChmaWx0ZXItPmRlZmF1bHRfc2hhZGVyLAorICAgICAgICAiYV9wb3NpdGlvbiIpOworCisgIGlmIChmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYyA9PSAtMSkKKyAgICBmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYyA9CisgICAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoZmlsdGVyLT5kZWZhdWx0X3NoYWRlciwKKyAgICAgICAgImFfdGV4Y29vcmQiKTsKKworICBmaWx0ZXItPnZhbGlkX2F0dHJpYnV0ZXMgPSBUUlVFOworfQorCitzdGF0aWMgdm9pZAogX2RyYXdfd2l0aF9zaGFkZXJfY2IgKGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0LCBndWludCB0ZXh0dXJlLCBncG9pbnRlciBzdHVmZikKIHsKICAgR3N0R0xGaWx0ZXIgKmZpbHRlciA9IEdTVF9HTF9GSUxURVIgKHN0dWZmKTsKQEAgLTEwMDIsNiArMTA2Nyw3IEBACiAgIH0KICNlbmRpZgogCisgIF9nZXRfYXR0cmlidXRlcyAoZmlsdGVyKTsKICAgZ3N0X2dsX3NoYWRlcl91c2UgKGZpbHRlci0+ZGVmYXVsdF9zaGFkZXIpOwogCiAgIGdsLT5BY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMSk7CkBAIC0xMDE0LDIzICsxMDgwLDYgQEAKICAgZ3N0X2dsX2ZpbHRlcl9kcmF3X3RleHR1cmUgKGZpbHRlciwgdGV4dHVyZSwgd2lkdGgsIGhlaWdodCk7CiB9CiAKLXN0YXRpYyB2b2lkCi1fZ2V0X2F0dHJpYnV0ZXMgKEdzdEdMRmlsdGVyICogZmlsdGVyKQotewotICBpZiAoIWZpbHRlci0+ZGVmYXVsdF9zaGFkZXIpCi0gICAgcmV0dXJuOwotCi0gIGlmIChmaWx0ZXItPmRyYXdfYXR0cl9wb3NpdGlvbl9sb2MgPT0gLTEpCi0gICAgZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jID0KLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChmaWx0ZXItPmRlZmF1bHRfc2hhZGVyLAotICAgICAgICAiYV9wb3NpdGlvbiIpOwotCi0gIGlmIChmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYyA9PSAtMSkKLSAgICBmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYyA9Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoZmlsdGVyLT5kZWZhdWx0X3NoYWRlciwKLSAgICAgICAgImFfdGV4Y29vcmQiKTsKLX0KLQogLyoqCiAgKiBnc3RfZ2xfZmlsdGVyX3JlbmRlcl90b190YXJnZXRfd2l0aF9zaGFkZXI6CiAgKiBAZmlsdGVyOiBhICNHc3RHTEZpbHRlcgpAQCAtMTA1MSw4ICsxMTAwLDkgQEAKIGdzdF9nbF9maWx0ZXJfcmVuZGVyX3RvX3RhcmdldF93aXRoX3NoYWRlciAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIsCiAgICAgZ2Jvb2xlYW4gcmVzaXplLCBHTHVpbnQgaW5wdXQsIEdMdWludCB0YXJnZXQsIEdzdEdMU2hhZGVyICogc2hhZGVyKQogeworICBpZiAoZmlsdGVyLT5kZWZhdWx0X3NoYWRlciAhPSBzaGFkZXIpCisgICAgZmlsdGVyLT52YWxpZF9hdHRyaWJ1dGVzID0gRkFMU0U7CiAgIGZpbHRlci0+ZGVmYXVsdF9zaGFkZXIgPSBzaGFkZXI7Ci0gIF9nZXRfYXR0cmlidXRlcyAoZmlsdGVyKTsKIAogICBnc3RfZ2xfZmlsdGVyX3JlbmRlcl90b190YXJnZXQgKGZpbHRlciwgcmVzaXplLCBpbnB1dCwgdGFyZ2V0LAogICAgICAgX2RyYXdfd2l0aF9zaGFkZXJfY2IsIGZpbHRlcik7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmaWx0ZXIuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5oCmluZGV4IDk0YWIzMzMuLmE4MThiYWIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5oCkBAIC03MSw2ICs3MSw3IEBACiAgIEdMdWludCAgICAgICAgICAgICBvdXRfdGV4X2lkOwogCiAgIEdzdEdMU2hhZGVyICAgICAgICpkZWZhdWx0X3NoYWRlcjsKKyAgZ2Jvb2xlYW4gICAgICAgICAgIHZhbGlkX2F0dHJpYnV0ZXM7CiAKICAgR0x1aW50ICAgICAgICAgICAgIHZhbzsKICAgR0x1aW50ICAgICAgICAgICAgIHZib19pbmRpY2VzOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZm9ybWF0LmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmb3JtYXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzdlMjUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZm9ybWF0LmMKQEAgLTAsMCArMSw0MzYgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZm9ybWF0Lmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsY29udGV4dC5oPgorCisjZGVmaW5lIFVTSU5HX09QRU5HTChjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wsIDEsIDApKQorI2RlZmluZSBVU0lOR19PUEVOR0wzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTDMsIDMsIDEpKQorI2RlZmluZSBVU0lOR19HTEVTKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMsIDEsIDApKQorI2RlZmluZSBVU0lOR19HTEVTMihjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMiwgMCkpCisjZGVmaW5lIFVTSU5HX0dMRVMzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAzLCAwKSkKKworI2lmbmRlZiBHTF9SR0JBOAorI2RlZmluZSBHTF9SR0JBOCAweDgwNTgKKyNlbmRpZgorI2lmbmRlZiBHTF9SRUQKKyNkZWZpbmUgR0xfUkVEIDB4MTkwMworI2VuZGlmCisjaWZuZGVmIEdMX1JHCisjZGVmaW5lIEdMX1JHIDB4ODIyNworI2VuZGlmCisjaWZuZGVmIEdMX1I4CisjZGVmaW5lIEdMX1I4IDB4ODIyOQorI2VuZGlmCisjaWZuZGVmIEdMX1JHOAorI2RlZmluZSBHTF9SRzggMHg4MjJCCisjZW5kaWYKKworI2lmbmRlZiBHTF9URVhUVVJFX1JFQ1RBTkdMRQorI2RlZmluZSBHTF9URVhUVVJFX1JFQ1RBTkdMRSAweDg0RjUKKyNlbmRpZgorI2lmbmRlZiBHTF9URVhUVVJFX0VYVEVSTkFMX09FUworI2RlZmluZSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUyAweDhENjUKKyNlbmRpZgorCitzdGF0aWMgaW5saW5lIGd1aW50CitfZ2xfZm9ybWF0X25fY29tcG9uZW50cyAoZ3VpbnQgZm9ybWF0KQoreworICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0JBOgorICAgIGNhc2UgR0xfUkdCQToKKyAgICAgIHJldHVybiA0OworICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0I6CisgICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2OgorICAgIGNhc2UgR0xfUkdCOgorICAgICAgcmV0dXJuIDM7CisgICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX0xVTUlOQU5DRV9BTFBIQToKKyAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkc6CisgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgY2FzZSBHTF9SRzoKKyAgICAgIHJldHVybiAyOworICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0U6CisgICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1I6CisgICAgY2FzZSBHTF9MVU1JTkFOQ0U6CisgICAgY2FzZSBHTF9SRUQ6CisgICAgICByZXR1cm4gMTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIDA7CisgIH0KK30KKworc3RhdGljIGlubGluZSBndWludAorX2dsX3R5cGVfbl9jb21wb25lbnRzIChndWludCB0eXBlKQoreworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgorICAgICAgcmV0dXJuIDM7CisgICAgZGVmYXVsdDoKKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgICAgcmV0dXJuIDA7CisgIH0KK30KKworc3RhdGljIGlubGluZSBndWludAorX2dsX3R5cGVfbl9ieXRlcyAoZ3VpbnQgdHlwZSkKK3sKKyAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToKKyAgICAgIHJldHVybiAyOworICAgIGRlZmF1bHQ6CisgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICAgIHJldHVybiAwOworICB9Cit9CisKKy8qKgorICogZ3N0X2dsX2Zvcm1hdF90eXBlX25fYnl0ZXM6CisgKiBAZm9ybWF0OiB0aGUgT3BlbkdMIGZvcm1hdCwgJUdMX1JHQkEsICVHTF9MVU1JTkFOQ0UsIGV0YworICogQHR5cGU6IHRoZSBPcGVuR0wgdHlwZSwgJUdMX1VOU0lHTkVEX0JZVEUsICVHTF9GTE9BVCwgZXRjCisgKgorICogUmV0dXJuczogdGhlIG51bWJlciBvZiBieXRlcyB0aGUgc3BlY2lmaWVkIEBmb3JtYXQsIEB0eXBlIGNvbWJpbmF0aW9uIHRha2VzCisgKiBwZXIgcGl4ZWwKKyAqLworZ3VpbnQKK2dzdF9nbF9mb3JtYXRfdHlwZV9uX2J5dGVzIChndWludCBmb3JtYXQsIGd1aW50IHR5cGUpCit7CisgIHJldHVybiBfZ2xfZm9ybWF0X25fY29tcG9uZW50cyAoZm9ybWF0KSAvIF9nbF90eXBlX25fY29tcG9uZW50cyAodHlwZSkgKgorICAgICAgX2dsX3R5cGVfbl9ieXRlcyAodHlwZSk7Cit9CisKKy8qKgorICogZ3N0X2dsX3RleHR1cmVfdHlwZV9uX2J5dGVzOgorICogQHRleF9mb3JtYXQ6IGEgI0dzdFZpZGVvR0xUZXh0dXJlVHlwZQorICoKKyAqIFJldHVybnM6IHRoZSBudW1iZXIgb2YgYnl0ZXMgQHRleF9mb3JtYXQgdXNlZCBwZXIgcGl4ZWwKKyAqLworZ3VpbnQKK2dzdF9nbF90ZXh0dXJlX3R5cGVfbl9ieXRlcyAoR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF9mb3JtYXQpCit7CisgIGd1aW50IGZvcm1hdCwgdHlwZTsKKworICBmb3JtYXQgPSBnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlICh0ZXhfZm9ybWF0KTsKKyAgdHlwZSA9IEdMX1VOU0lHTkVEX0JZVEU7CisgIGlmICh0ZXhfZm9ybWF0ID09IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTYpCisgICAgdHlwZSA9IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OworCisgIHJldHVybiBnc3RfZ2xfZm9ybWF0X3R5cGVfbl9ieXRlcyAoZm9ybWF0LCB0eXBlKTsKK30KKworLyoqCisgKiBnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlOgorICogQHRleF9mb3JtYXQ6IGEgI0dzdFZpZGVvR0xUZXh0dXJlVHlwZQorICoKKyAqIFJldHVybnM6IHRoZSBPcGVuR0wgZm9ybWF0IHNwZWNpZmllZCBieSBAdGV4X2Zvcm1hdAorICovCitndWludAorZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZSAoR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF9mb3JtYXQpCit7CisgIHN3aXRjaCAodGV4X2Zvcm1hdCkgeworICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhBOworICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0U6CisgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFOworICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0JBOgorICAgICAgcmV0dXJuIEdMX1JHQkE7CisgICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjoKKyAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTY6CisgICAgICByZXR1cm4gR0xfUkdCOworICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SRzoKKyAgICAgIHJldHVybiBHTF9SRzsKKyAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUjoKKyAgICAgIHJldHVybiBHTF9SRUQ7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQkE7CisgIH0KK30KKworLyoqCisgKiBnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0OgorICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAorICogQHZfZm9ybWF0OiBhICNHc3RWaWRlb0Zvcm1hdAorICogQHBsYW5lOiB0aGUgcGxhbmUgbnVtYmVyIChzdGFydGluZyBmcm9tIDApCisgKgorICogUmV0dXJuczogdGhlICNHc3RWaWRlb0dMVGV4dHVyZVR5cGUgZm9yIHRoZSBzcGVjaWZpZWQgQGZvcm1hdCBhbmQgQHBsYW5lCisgKiAgICAgICAgICB0aGF0IGNhbiBiZSBhbGxvY2F0ZWQgdXNpbmcgQGNvbnRleHQKKyAqLworR3N0VmlkZW9HTFRleHR1cmVUeXBlCitnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0IChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgIEdzdFZpZGVvRm9ybWF0IHZfZm9ybWF0LCBndWludCBwbGFuZSkKK3sKKyAgZ2Jvb2xlYW4gdGV4dHVyZV9yZyA9CisgICAgICBnc3RfZ2xfY29udGV4dF9jaGVja19mZWF0dXJlIChjb250ZXh0LCAiR0xfRVhUX3RleHR1cmVfcmciKQorICAgICAgfHwgZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMywgMCkKKyAgICAgIHx8IGdzdF9nbF9jb250ZXh0X2NoZWNrX2ZlYXR1cmUgKGNvbnRleHQsICJHTF9BUkJfdGV4dHVyZV9yZyIpCisgICAgICB8fCBnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTDMsIDMsIDApOworICBndWludCBuX3BsYW5lX2NvbXBvbmVudHM7CisKKyAgc3dpdGNoICh2X2Zvcm1hdCkgeworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0J4OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1J4OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF94UkdCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF94QkdSOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1JBOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BUkdCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BQkdSOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BWVVWOgorICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gNDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUjoKKyAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IDM7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCMTY6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUjE2OgorICAgICAgcmV0dXJuIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTY7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVkxNl9CRToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfR1JBWTE2X0xFOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVVkyOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9VWVZZOgorICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gMjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjIxOgorICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gcGxhbmUgPT0gMCA/IDEgOiAyOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVk4OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDQ0OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDJCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDFCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9JNDIwOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVjEyOgorICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gMTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBuX3BsYW5lX2NvbXBvbmVudHMgPSA0OworICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICBicmVhazsKKyAgfQorCisgIHN3aXRjaCAobl9wbGFuZV9jb21wb25lbnRzKSB7CisgICAgY2FzZSA0OgorICAgICAgcmV0dXJuIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCQTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgIHJldHVybiBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAgIHJldHVybiB0ZXh0dXJlX3JnID8gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SRyA6CisgICAgICAgICAgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0VfQUxQSEE7CisgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICByZXR1cm4gdGV4dHVyZV9yZyA/IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUiA6CisgICAgICAgICAgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0U7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQkE7Cit9CisKKy8qKgorICogZ3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlOgorICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAorICogQGZvcm1hdDogYW4gT3BlbkdMIGZvcm1hdCwgJUdMX1JHQkEsICVHTF9MVU1JTkFOQ0UsIGV0YworICogQHR5cGU6IGFuIE9wZW5HTCB0eXBlLCAlR0xfVU5TSUdORURfQllURSwgJUdMX0ZMT0FULCBldGMKKyAqCisgKiBSZXR1cm5zOiB0aGUgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0IHNwZWNpZmllZCBieSBAZm9ybWF0IGFuZCBAdHlwZSB0aGF0IGNhbgorICogICAgICAgICAgYmUgdXNlZCBpbiBAY29udGV4dAorICovCitndWludAorZ3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgIGd1aW50IGZvcm1hdCwgZ3VpbnQgdHlwZSkKK3sKKyAgZ2Jvb2xlYW4gZXh0X3RleHR1cmVfcmcgPQorICAgICAgZ3N0X2dsX2NvbnRleHRfY2hlY2tfZmVhdHVyZSAoY29udGV4dCwgIkdMX0VYVF90ZXh0dXJlX3JnIik7CisKKyAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEdMX1JHQkE6CisgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgIHJldHVybiBVU0lOR19HTEVTMiAoY29udGV4dCkKKyAgICAgICAgICAgICAgJiYgIVVTSU5HX0dMRVMzIChjb250ZXh0KSA/IEdMX1JHQkEgOiBHTF9SR0JBODsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgR0xfUkdCOgorICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICByZXR1cm4gR0xfUkdCODsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToKKyAgICAgICAgICByZXR1cm4gR0xfUkdCOworICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBHTF9SRzoKKyAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgaWYgKCFVU0lOR19HTEVTMyAoY29udGV4dCkgJiYgVVNJTkdfR0xFUzIgKGNvbnRleHQpICYmIGV4dF90ZXh0dXJlX3JnKQorICAgICAgICAgICAgcmV0dXJuIEdMX1JHOworICAgICAgICAgIHJldHVybiBHTF9SRzg7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIEdMX1JFRDoKKyAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgaWYgKCFVU0lOR19HTEVTMyAoY29udGV4dCkgJiYgVVNJTkdfR0xFUzIgKGNvbnRleHQpICYmIGV4dF90ZXh0dXJlX3JnKQorICAgICAgICAgICAgcmV0dXJuIEdMX1JFRDsKKyAgICAgICAgICByZXR1cm4gR0xfUjg7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0U7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0VfQUxQSEE7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgcmV0dXJuIEdMX0FMUEhBOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgIHJldHVybiAwOworfQorCisvKioKKyAqIGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19zdHJpbmc6CisgKiBAdGFyZ2V0OiBhICNHc3RHTFRleHR1cmVUYXJnZXQKKyAqCisgKiBSZXR1cm5zOiB0aGUgc3RyaW5naWZpZWQgdmVyc2lvbiBvZiBAdGFyZ2V0IG9yICVOVUxMCisgKi8KK2NvbnN0IGdjaGFyICoKK2dzdF9nbF90ZXh0dXJlX3RhcmdldF90b19zdHJpbmcgKEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQpCit7CisgIHN3aXRjaCAodGFyZ2V0KSB7CisgICAgY2FzZSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ6CisgICAgICByZXR1cm4gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUjsKKyAgICBjYXNlIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU6CisgICAgICByZXR1cm4gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFI7CisgICAgY2FzZSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTOgorICAgICAgcmV0dXJuIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVNfU1RSOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gTlVMTDsKKyAgfQorfQorCisvKioKKyAqIGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19zdHJpbmc6CisgKiBAc3RyOiBhIHN0cmluZyBlcXVpdmFsYW50IHRvIG9uZSBvZiB0aGUgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXypfU1RSIHZhbHVlcworICoKKyAqIFJldHVybnM6IHRoZSAjR3N0R0xUZXh0dXJlVGFyZ2V0IHJlcHJlc2VudGVkIGJ5IEBzdHIgb3IKKyAqICAgICAgICAgICVHU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORQorICovCitHc3RHTFRleHR1cmVUYXJnZXQKK2dzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZyAoY29uc3QgZ2NoYXIgKiBzdHIpCit7CisgIGlmICghc3RyKQorICAgIHJldHVybiBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORTsKKworICBpZiAoZ19zdHJjbXAwIChzdHIsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFIpID09IDApCisgICAgcmV0dXJuIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDsKKyAgaWYgKGdfc3RyY21wMCAoc3RyLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFX1NUUikgPT0gMCkKKyAgICByZXR1cm4gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRTsKKyAgaWYgKGdfc3RyY21wMCAoc3RyLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTX1NUUikgPT0gMCkKKyAgICByZXR1cm4gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUzsKKworICByZXR1cm4gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkU7Cit9CisKKy8qKgorICogZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dsOgorICogQHRhcmdldDogYSAjR3N0R0xUZXh0dXJlVGFyZ2V0CisgKgorICogUmV0dXJuczogdGhlIE9wZW5HTCB2YWx1ZSBmb3IgYmluZGluZyB0aGUgQHRhcmdldCB3aXRoIGdsQmluZFRleHR1cmUoKSBhbmQKKyAqICAgICAgICAgIHNpbWlsYXIgZnVuY3Rpb25zIG9yIDAKKyAqLworZ3VpbnQKK2dzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCkKK3sKKyAgc3dpdGNoICh0YXJnZXQpIHsKKyAgICBjYXNlIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDoKKyAgICAgIHJldHVybiBHTF9URVhUVVJFXzJEOworICAgIGNhc2UgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRToKKyAgICAgIHJldHVybiBHTF9URVhUVVJFX1JFQ1RBTkdMRTsKKyAgICBjYXNlIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVM6CisgICAgICByZXR1cm4gR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAwOworICB9Cit9CisKKy8qKgorICogZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fZ2w6CisgKiBAdGFyZ2V0OiBhbiBPcGVuR0wgdGV4dHVyZSBiaW5kaW5nIHRhcmdldAorICoKKyAqIFJldHVybnM6IHRoZSAjR3N0R0xUZXh0dXJlVGFyZ2V0IHRoYXQncyBlcXVpYXZhbGFudCB0byBAdGFyZ2V0IG9yCisgKiAgICAgICAgICAlR1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkUKKyAqLworR3N0R0xUZXh0dXJlVGFyZ2V0Citnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9nbCAoZ3VpbnQgdGFyZ2V0KQoreworICBzd2l0Y2ggKHRhcmdldCkgeworICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgIHJldHVybiBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ7CisgICAgY2FzZSBHTF9URVhUVVJFX1JFQ1RBTkdMRToKKyAgICAgIHJldHVybiBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFOworICAgIGNhc2UgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM6CisgICAgICByZXR1cm4gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUzsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FOworICB9Cit9CisKKy8qKgorICogZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2J1ZmZlcl9wb29sX29wdGlvbjoKKyAqIEB0YXJnZXQ6IGEgI0dzdEdMVGV4dHVyZVRhcmdldAorICoKKyAqIFJldHVybnM6IGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgQEdzdEJ1ZmZlclBvb2xPcHRpb24gc3BlY2lmaWVkIGJ5IEB0YXJnZXQKKyAqLworY29uc3QgZ2NoYXIgKgorZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2J1ZmZlcl9wb29sX29wdGlvbiAoR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCkKK3sKKyAgc3dpdGNoICh0YXJnZXQpIHsKKyAgICBjYXNlIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDoKKyAgICAgIHJldHVybiBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUXzJEOworICAgIGNhc2UgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRToKKyAgICAgIHJldHVybiBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRTsKKyAgICBjYXNlIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVM6CisgICAgICByZXR1cm4gR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVM7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBOVUxMOworICB9Cit9CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmb3JtYXQuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZvcm1hdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZDYxOGEKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmb3JtYXQuaApAQCAtMCwwICsxLDkyIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX0dTVF9HTF9GT1JNQVRfSF8KKyNkZWZpbmUgX0dTVF9HTF9GT1JNQVRfSF8KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworI2luY2x1ZGUgPGdzdC9nbC9nc3RnbF9md2QuaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKworLyoqCisgKiBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSOgorICoKKyAqIFN0cmluZyB1c2VkIGZvciAlR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEIGluIHRoaW5ncyBsaWtlIGNhcHMgdmFsdWVzCisgKi8KKyNkZWZpbmUgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUiAiMkQiCisKKy8qKgorICogR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFI6CisgKgorICogU3RyaW5nIHVzZWQgZm9yICVHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFIGluIHRoaW5ncyBsaWtlIGNhcHMgdmFsdWVzCisgKi8KKyNkZWZpbmUgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFIgInJlY3RhbmdsZSIKKworLyoqCisgKiBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTX1NUUjoKKyAqCisgKiBTdHJpbmcgdXNlZCBmb3IgJUdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMgaW4gdGhpbmdzIGxpa2UgY2FwcyB2YWx1ZXMKKyAqLworI2RlZmluZSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTX1NUUiAiZXh0ZXJuYWwtb2VzIgorCisvKioKKyAqIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfMkQ6CisgKgorICogU3RyaW5nIHVzZWQgZm9yICVHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQgYXMgYSAjR3N0QnVmZmVyUG9vbCBwb29sIG9wdGlvbgorICovCisjZGVmaW5lIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfMkQgIkdzdEJ1ZmZlclBvb2xPcHRpb25HTFRleHR1cmVUYXJnZXQyRCIKKworLyoqCisgKiBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRToKKyAqCisgKiBTdHJpbmcgdXNlZCBmb3IgJUdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUgYXMgYSAjR3N0QnVmZmVyUG9vbCBwb29sIG9wdGlvbgorICovCisjZGVmaW5lIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFICJHc3RCdWZmZXJQb29sT3B0aW9uR0xUZXh0dXJlVGFyZ2V0UmVjdGFuZ2xlIgorCisvKioKKyAqIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTOgorICoKKyAqIFN0cmluZyB1c2VkIGZvciAlR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VTVEVSTkFMX09FUyBhcyBhICNHc3RCdWZmZXJQb29sIHBvb2wgb3B0aW9uCisgKi8KKyNkZWZpbmUgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMgIkdzdEJ1ZmZlclBvb2xPcHRpb25HTFRleHR1cmVUYXJnZXRFeHRlcm5hbE9FUyIKKworR19CRUdJTl9ERUNMUworCitndWludCAgICAgICAgICAgICAgICAgICBnc3RfZ2xfZm9ybWF0X3R5cGVfbl9ieXRlcyAgICAgICAgICAgICAgICAgIChndWludCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCB0eXBlKTsKK2d1aW50ICAgICAgICAgICAgICAgICAgIGdzdF9nbF90ZXh0dXJlX3R5cGVfbl9ieXRlcyAgICAgICAgICAgICAgICAgKEdzdFZpZGVvR0xUZXh0dXJlVHlwZSB0ZXhfZm9ybWF0KTsKK2d1aW50ICAgICAgICAgICAgICAgICAgIGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgICAgICAgICAgKEdzdFZpZGVvR0xUZXh0dXJlVHlwZSB0ZXhfZm9ybWF0KTsKK0dzdFZpZGVvR0xUZXh0dXJlVHlwZSAgIGdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQgICAgICAgICAgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHBsYW5lKTsKK2d1aW50ICAgICAgICAgICAgICAgICAgIGdzdF9nbF9zaXplZF9nbF9mb3JtYXRfZnJvbV9nbF9mb3JtYXRfdHlwZSAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCB0eXBlKTsKKworR3N0R0xUZXh0dXJlVGFyZ2V0ICAgICAgZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nICAgICAgICAgICAoY29uc3QgZ2NoYXIgKiBzdHIpOworY29uc3QgZ2NoYXIgKiAgICAgICAgICAgZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX3N0cmluZyAgICAgICAgICAgICAoR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCk7CitndWludCAgICAgICAgICAgICAgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgICAgICAgICAgICAgICAgIChHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0KTsKK0dzdEdMVGV4dHVyZVRhcmdldCAgICAgIGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX2dsICAgICAgICAgICAgICAgKGd1aW50IHRhcmdldCk7Citjb25zdCBnY2hhciAqICAgICAgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fYnVmZmVyX3Bvb2xfb3B0aW9uIChHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9HU1RfR0xfRk9STUFUX0hfICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmcmFtZWJ1ZmZlci5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZnJhbWVidWZmZXIuaAppbmRleCAxZmM5MjIyLi40NzY4YWZiIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmcmFtZWJ1ZmZlci5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZyYW1lYnVmZmVyLmgKQEAgLTY0LDYgKzY0LDEwIEBACiAKIHZvaWQgZ3N0X2dsX2ZyYW1lYnVmZmVyX2RlbGV0ZSAoR3N0R0xGcmFtZWJ1ZmZlciAqZnJhbWUsIGd1aW50IGZibywgZ3VpbnQgZGVwdGgpOwogCisjaWZkZWYgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdzdEdMRnJhbWVidWZmZXIsIGdzdF9vYmplY3RfdW5yZWYpCisjZW5kaWYKKwogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5jCmluZGV4IDBhNTI4ZWMuLjAyMGJjN2MgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5jCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDEyIE1hdHRoZXcgV2F0ZXJzIDx5c3RyZWV0MDBAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjYsMzAgKzI2LDIzIEBACiAKICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KIAotI2luY2x1ZGUgImdzdGdsbWVtb3J5LmgiCi0jaW5jbHVkZSAiZ3N0Z2x1dGlscy5oIgorI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xtZW1vcnkuaD4KIAogLyoqCiAgKiBTRUNUSU9OOmdzdGdsbWVtb3J5CiAgKiBAc2hvcnRfZGVzY3JpcHRpb246IG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgdGV4dHVyZXMKICAqIEBzZWVfYWxzbzogI0dzdE1lbW9yeSwgI0dzdEFsbG9jYXRvciwgI0dzdEdMQnVmZmVyUG9vbAogICoKLSAqIEdzdEdMTWVtb3J5IGlzIGEgI0dzdEdMQmFzZUJ1ZmZlciBzdWJjbGFzcyBwcm92aWRpbmcgc3VwcG9ydCBmb3IgdGhlIG1hcHBpbmcgb2YKLSAqIEdMIHRleHR1cmVzLiAgCisgKiBHc3RHTE1lbW9yeSBpcyBhICNHc3RHTEJhc2VNZW1vcnkgc3ViY2xhc3MgcHJvdmlkaW5nIHN1cHBvcnQgZm9yIHRoZSBtYXBwaW5nIG9mCisgKiBPcGVuR0wgdGV4dHVyZXMuICAKICAqCi0gKiAjR3N0R0xNZW1vcnkgaXMgY3JlYXRlZCB0aHJvdWdoIGdzdF9nbF9tZW1vcnlfYWxsb2MoKSBvciBzeXN0ZW0gbWVtb3J5IGNhbgotICogYmUgd3JhcHBlZCB0aHJvdWdoIGdzdF9nbF9tZW1vcnlfd3JhcHBlZCgpLgorICogI0dzdEdMTWVtb3J5IGlzIGNyZWF0ZWQgb3Igd3JhcHBlZCB0aHJvdWdoIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYygpCisgKiB3aXRoICNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcy4KICAqCiAgKiBEYXRhIGlzIHVwbG9hZGVkIG9yIGRvd25sb2FkZWQgZnJvbSB0aGUgR1BVIGFzIGlzIG5lY2Vzc2FyeS4KICAqLwogCi0vKiBJbXBsZW1lbnRhdGlvbiBub3RlcwotICoKLSAqIFBCTyB0cmFuc2ZlcidzIGFyZSBpbXBsZW1lbnRlZCB1c2luZyBHc3RHTEJhc2VCdWZmZXIuICBXZSBqdXN0IG5lZWQgdG8KLSAqIGVuc3VyZSB0aGF0IHRoZSB0ZXh0dXJlIGRhdGEgaXMgd3JpdHRlbi9yZWFkIHRvL2Zyb20gYmVmb3JlL2FmdGVyIGNhbGxpbmcKLSAqIHRoZSBwYXJlbnQgY2xhc3Mgd2hpY2ggcGVyZm9ybXMgdGhlIHBibyBidWZmZXIgdHJhbnNmZXIuCi0gKi8KLQogI2RlZmluZSBVU0lOR19PUEVOR0woY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMLCAxLCAwKSkKICNkZWZpbmUgVVNJTkdfT1BFTkdMMyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wzLCAzLCAxKSkKICNkZWZpbmUgVVNJTkdfR0xFUyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTLCAxLCAwKSkKQEAgLTYwLDU2ICs1MywyNSBAQAogI2RlZmluZSBHTF9NRU1fSEVJR0hUKGdsX21lbSkgX2dldF9wbGFuZV9oZWlnaHQgKCZnbF9tZW0tPmluZm8sIGdsX21lbS0+cGxhbmUpCiAjZGVmaW5lIEdMX01FTV9TVFJJREUoZ2xfbWVtKSBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUgKCZnbF9tZW0tPmluZm8sIGdsX21lbS0+cGxhbmUpCiAKLSNkZWZpbmUgQ09OVEVYVF9TVVBQT1JUU19QQk9fVVBMT0FEKGNvbnRleHQpIFwKLSAgICAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgXAotICAgICAgICBHU1RfR0xfQVBJX09QRU5HTCB8IEdTVF9HTF9BUElfT1BFTkdMMywgMiwgMSkgXAotICAgICAgICB8fCBnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAzLCAwKSkKLSNkZWZpbmUgQ09OVEVYVF9TVVBQT1JUU19QQk9fRE9XTkxPQUQoY29udGV4dCkgXAotICAgIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBcCi0gICAgICAgIEdTVF9HTF9BUElfT1BFTkdMIHwgR1NUX0dMX0FQSV9PUEVOR0wzIHwgR1NUX0dMX0FQSV9HTEVTMiwgMywgMCkpCitzdGF0aWMgR3N0QWxsb2NhdG9yICpfZ2xfbWVtb3J5X2FsbG9jYXRvcjsKIAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9HTF9NRU1PUlkpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgR1NUX0NBVF9HTF9NRU1PUlkKIAotc3RhdGljIEdzdEFsbG9jYXRvciAqX2dsX2FsbG9jYXRvcjsKLQogLyogY29tcGF0YWJpbGl0eSBkZWZpbml0aW9ucy4uLiAqLwotI2lmbmRlZiBHTF9SR0JBOAotI2RlZmluZSBHTF9SR0JBOCAweDgwNTgKLSNlbmRpZgotI2lmbmRlZiBHTF9SRUQKLSNkZWZpbmUgR0xfUkVEIDB4MTkwMwotI2VuZGlmCi0jaWZuZGVmIEdMX1JHCi0jZGVmaW5lIEdMX1JHIDB4ODIyNwotI2VuZGlmCi0jaWZuZGVmIEdMX1I4Ci0jZGVmaW5lIEdMX1I4IDB4ODIyOQotI2VuZGlmCi0jaWZuZGVmIEdMX1JHOAotI2RlZmluZSBHTF9SRzggMHg4MjJCCi0jZW5kaWYKLSNpZm5kZWYgR0xfUElYRUxfUEFDS19CVUZGRVIKLSNkZWZpbmUgR0xfUElYRUxfUEFDS19CVUZGRVIgMHg4OEVCCi0jZW5kaWYKLSNpZm5kZWYgR0xfUElYRUxfVU5QQUNLX0JVRkZFUgotI2RlZmluZSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSIDB4ODhFQwotI2VuZGlmCi0jaWZuZGVmIEdMX1NUUkVBTV9SRUFECi0jZGVmaW5lIEdMX1NUUkVBTV9SRUFEIDB4ODhFMQotI2VuZGlmCi0jaWZuZGVmIEdMX1NUUkVBTV9EUkFXCi0jZGVmaW5lIEdMX1NUUkVBTV9EUkFXIDB4ODhFMAotI2VuZGlmCi0jaWZuZGVmIEdMX1NUUkVBTV9DT1BZCi0jZGVmaW5lIEdMX1NUUkVBTV9DT1BZIDB4ODhFMgotI2VuZGlmCiAjaWZuZGVmIEdMX1VOUEFDS19ST1dfTEVOR1RICiAjZGVmaW5lIEdMX1VOUEFDS19ST1dfTEVOR1RIIDB4MENGMgogI2VuZGlmCiAKLUdfREVGSU5FX1RZUEUgKEdzdEdMQWxsb2NhdG9yLCBnc3RfZ2xfYWxsb2NhdG9yLAotICAgIEdTVF9UWVBFX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUik7CisjaWZuZGVmIEdMX1RFWFRVUkVfUkVDVEFOR0xFCisjZGVmaW5lIEdMX1RFWFRVUkVfUkVDVEFOR0xFIDB4ODRGNQorI2VuZGlmCisjaWZuZGVmIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTCisjZGVmaW5lIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTIDB4OEQ2NQorI2VuZGlmCisKK0dfREVGSU5FX1RZUEUgKEdzdEdMTWVtb3J5QWxsb2NhdG9yLCBnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvciwKKyAgICBHU1RfVFlQRV9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IpOwogCiB0eXBlZGVmIHN0cnVjdAogewpAQCAtMTE3LDkgKzc5LDggQEAKICAgR3N0R0xNZW1vcnkgKnNyYzsKICAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIG91dF9mb3JtYXQ7CiAgIGd1aW50IG91dF93aWR0aCwgb3V0X2hlaWdodDsKLSAgZ3VpbnQgb3V0X3N0cmlkZTsKLSAgZ2Jvb2xlYW4gcmVzcGVjaWZ5OwotICBndWludCB0ZXhfdGFyZ2V0OworICBHc3RHTFRleHR1cmVUYXJnZXQgdGV4X3RhcmdldDsKKyAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF90eXBlOwogICAvKiBpbm91dCAqLwogICBndWludCB0ZXhfaWQ7CiAgIC8qIG91dCAqLwpAQCAtMTI3LDI0MCArODgsNiBAQAogfSBHc3RHTE1lbW9yeUNvcHlQYXJhbXM7CiAKIHN0YXRpYyBpbmxpbmUgZ3VpbnQKLV9nbF9mb3JtYXRfbl9jb21wb25lbnRzIChndWludCBmb3JtYXQpCi17Ci0gIHN3aXRjaCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQkE6Ci0gICAgY2FzZSBHTF9SR0JBOgotICAgICAgcmV0dXJuIDQ7Ci0gICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjoKLSAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTY6Ci0gICAgY2FzZSBHTF9SR0I6Ci0gICAgICByZXR1cm4gMzsKLSAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFX0FMUEhBOgotICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SRzoKLSAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKLSAgICBjYXNlIEdMX1JHOgotICAgICAgcmV0dXJuIDI7Ci0gICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX0xVTUlOQU5DRToKLSAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUjoKLSAgICBjYXNlIEdMX0xVTUlOQU5DRToKLSAgICBjYXNlIEdMX1JFRDoKLSAgICAgIHJldHVybiAxOwotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gMDsKLSAgfQotfQotCi1zdGF0aWMgaW5saW5lIGd1aW50Ci1fZ2xfdHlwZV9uX2NvbXBvbmVudHMgKGd1aW50IHR5cGUpCi17Ci0gIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgIHJldHVybiAxOwotICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6Ci0gICAgICByZXR1cm4gMzsKLSAgICBkZWZhdWx0OgotICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Ci0gICAgICByZXR1cm4gMDsKLSAgfQotfQotCi1zdGF0aWMgaW5saW5lIGd1aW50Ci1fZ2xfdHlwZV9uX2J5dGVzIChndWludCB0eXBlKQotewotICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICByZXR1cm4gMTsKLSAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgotICAgICAgcmV0dXJuIDI7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotICAgICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotc3RhdGljIGlubGluZSBndWludAotX2dsX2Zvcm1hdF90eXBlX25fYnl0ZXMgKGd1aW50IGZvcm1hdCwgZ3VpbnQgdHlwZSkKLXsKLSAgcmV0dXJuIF9nbF9mb3JtYXRfbl9jb21wb25lbnRzIChmb3JtYXQpIC8gX2dsX3R5cGVfbl9jb21wb25lbnRzICh0eXBlKSAqCi0gICAgICBfZ2xfdHlwZV9uX2J5dGVzICh0eXBlKTsKLX0KLQotc3RhdGljIGlubGluZSBndWludAotX2dsX3RleHR1cmVfdHlwZV9uX2J5dGVzIChHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4X2Zvcm1hdCkKLXsKLSAgZ3VpbnQgZm9ybWF0LCB0eXBlOwotCi0gIGZvcm1hdCA9IGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKHRleF9mb3JtYXQpOwotICB0eXBlID0gR0xfVU5TSUdORURfQllURTsKLSAgaWYgKHRleF9mb3JtYXQgPT0gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0IxNikKLSAgICB0eXBlID0gR0xfVU5TSUdORURfU0hPUlRfNV82XzU7Ci0KLSAgcmV0dXJuIF9nbF9mb3JtYXRfdHlwZV9uX2J5dGVzIChmb3JtYXQsIHR5cGUpOwotfQotCi1ndWludAotZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZSAoR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF9mb3JtYXQpCi17Ci0gIHN3aXRjaCAodGV4X2Zvcm1hdCkgewotICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0VfQUxQSEE6Ci0gICAgICByZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhBOwotICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0U6Ci0gICAgICByZXR1cm4gR0xfTFVNSU5BTkNFOwotICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0JBOgotICAgICAgcmV0dXJuIEdMX1JHQkE7Ci0gICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjoKLSAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTY6Ci0gICAgICByZXR1cm4gR0xfUkdCOwotICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SRzoKLSAgICAgIHJldHVybiBHTF9SRzsKLSAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUjoKLSAgICAgIHJldHVybiBHTF9SRUQ7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQkE7Ci0gIH0KLX0KLQotR3N0VmlkZW9HTFRleHR1cmVUeXBlCi1nc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0IChHc3RHTENvbnRleHQgKiBjb250ZXh0LAotICAgIEdzdFZpZGVvRm9ybWF0IHZfZm9ybWF0LCBndWludCBwbGFuZSkKLXsKLSAgZ2Jvb2xlYW4gdGV4dHVyZV9yZyA9Ci0gICAgICBnc3RfZ2xfY29udGV4dF9jaGVja19mZWF0dXJlIChjb250ZXh0LCAiR0xfRVhUX3RleHR1cmVfcmciKQotICAgICAgfHwgZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMywgMCkKLSAgICAgIHx8IGdzdF9nbF9jb250ZXh0X2NoZWNrX2ZlYXR1cmUgKGNvbnRleHQsICJHTF9BUkJfdGV4dHVyZV9yZyIpCi0gICAgICB8fCBnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTDMsIDMsIDApOwotICBndWludCBuX3BsYW5lX2NvbXBvbmVudHM7Ci0KLSAgc3dpdGNoICh2X2Zvcm1hdCkgewotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0J4OgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1J4OgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF94UkdCOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF94QkdSOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1JBOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BUkdCOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BQkdSOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BWVVWOgotICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gNDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0I6Ci0gICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUjoKLSAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IDM7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCMTY6Ci0gICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUjE2OgotICAgICAgcmV0dXJuIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTY7Ci0gICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVkxNl9CRToKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfR1JBWTE2X0xFOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVVkyOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9VWVZZOgotICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gMjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjIxOgotICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gcGxhbmUgPT0gMCA/IDEgOiAyOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVk4OgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDQ0OgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDJCOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDFCOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9JNDIwOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVjEyOgotICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gMTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBuX3BsYW5lX2NvbXBvbmVudHMgPSA0OwotICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHN3aXRjaCAobl9wbGFuZV9jb21wb25lbnRzKSB7Ci0gICAgY2FzZSA0OgotICAgICAgcmV0dXJuIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCQTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgMzoKLSAgICAgIHJldHVybiBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgIHJldHVybiB0ZXh0dXJlX3JnID8gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SRyA6Ci0gICAgICAgICAgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0VfQUxQSEE7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIDE6Ci0gICAgICByZXR1cm4gdGV4dHVyZV9yZyA/IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUiA6Ci0gICAgICAgICAgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0U7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQkE7Ci19Ci0KLWd1aW50Ci1nc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGUgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCi0gICAgZ3VpbnQgZm9ybWF0LCBndWludCB0eXBlKQotewotICBnYm9vbGVhbiBleHRfdGV4dHVyZV9yZyA9Ci0gICAgICBnc3RfZ2xfY29udGV4dF9jaGVja19mZWF0dXJlIChjb250ZXh0LCAiR0xfRVhUX3RleHR1cmVfcmciKTsKLQotICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgR0xfUkdCQToKLSAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAgICAgcmV0dXJuIFVTSU5HX0dMRVMyIChjb250ZXh0KQotICAgICAgICAgICAgICAmJiAhVVNJTkdfR0xFUzMgKGNvbnRleHQpID8gR0xfUkdCQSA6IEdMX1JHQkE4OwotICAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHTF9SR0I6Ci0gICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgIHJldHVybiBHTF9SR0I4OwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgotICAgICAgICAgIHJldHVybiBHTF9SR0I7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdMX1JHOgotICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgICBpZiAoIVVTSU5HX0dMRVMzIChjb250ZXh0KSAmJiBVU0lOR19HTEVTMiAoY29udGV4dCkgJiYgZXh0X3RleHR1cmVfcmcpCi0gICAgICAgICAgICByZXR1cm4gR0xfUkc7Ci0gICAgICAgICAgcmV0dXJuIEdMX1JHODsKLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR0xfUkVEOgotICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgICBpZiAoIVVTSU5HX0dMRVMzIChjb250ZXh0KSAmJiBVU0lOR19HTEVTMiAoY29udGV4dCkgJiYgZXh0X3RleHR1cmVfcmcpCi0gICAgICAgICAgICByZXR1cm4gR0xfUkVEOwotICAgICAgICAgIHJldHVybiBHTF9SODsKLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR0xfTFVNSU5BTkNFOgotICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgotICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRV9BTFBIQTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR0xfQUxQSEE6Ci0gICAgICByZXR1cm4gR0xfQUxQSEE7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKLSAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgZ3VpbnQKIF9nZXRfcGxhbmVfd2lkdGggKEdzdFZpZGVvSW5mbyAqIGluZm8sIGd1aW50IHBsYW5lKQogewogICBpZiAoR1NUX1ZJREVPX0lORk9fSVNfWVVWIChpbmZvKSkKQEAgLTM4NCw5NiArMTExLDYgQEAKICAgICByZXR1cm4gR1NUX1ZJREVPX0lORk9fSEVJR0hUIChpbmZvKTsKIH0KIAotdHlwZWRlZiBzdHJ1Y3QgX0dlblRleHR1cmUKLXsKLSAgZ3VpbnQgd2lkdGgsIGhlaWdodDsKLSAgR0xlbnVtIGdsX3RhcmdldDsKLSAgR0xlbnVtIGdsX2Zvcm1hdDsKLSAgR0xlbnVtIGdsX3R5cGU7Ci0gIGd1aW50IHJlc3VsdDsKLX0gR2VuVGV4dHVyZTsKLQotLyogZmluZCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBzdGFydCBvZiB0aGUgcGxhbmUgYW5kIHdoZXJlIHRoZSB2aWRlbwotICogZGF0YSBzdGFydHMgaW4gdGhlIHBsYW5lICovCi1zdGF0aWMgZ3NpemUKLV9maW5kX3BsYW5lX2ZyYW1lX3N0YXJ0IChHc3RHTE1lbW9yeSAqIGdsX21lbSkKLXsKLSAgZ3NpemUgcGxhbmVfc3RhcnQ7Ci0gIGdpbnQgaTsKLQotICAvKiBmaW5kIHRoZSBzdGFydCBvZiB0aGUgcGxhbmUgZGF0YSBpbmNsdWRpbmcgcGFkZGluZyAqLwotICBwbGFuZV9zdGFydCA9IDA7Ci0gIGZvciAoaSA9IDA7IGkgPCBnbF9tZW0tPnBsYW5lOyBpKyspIHsKLSAgICBwbGFuZV9zdGFydCArPQotICAgICAgICBnc3RfZ2xfZ2V0X3BsYW5lX2RhdGFfc2l6ZSAoJmdsX21lbS0+aW5mbywgJmdsX21lbS0+dmFsaWduLCBpKTsKLSAgfQotCi0gIC8qIG9mZnNldCBiZXR3ZWVuIHRoZSBwbGFuZSBkYXRhIHN0YXJ0IGFuZCB3aGVyZSB0aGUgdmlkZW8gZnJhbWUgc3RhcnRzICovCi0gIHJldHVybiAoR1NUX1ZJREVPX0lORk9fUExBTkVfT0ZGU0VUICgmZ2xfbWVtLT5pbmZvLAotICAgICAgICAgIGdsX21lbS0+cGxhbmUpKSAtIHBsYW5lX3N0YXJ0ICsgZ2xfbWVtLT5tZW0ubWVtLm9mZnNldDsKLX0KLQotc3RhdGljIHZvaWQKLV91cGxvYWRfbWVtb3J5IChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIG1heHNpemUpCi17Ci0gIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IGdsX21lbS0+bWVtLmNvbnRleHQ7Ci0gIGNvbnN0IEdzdEdMRnVuY3MgKmdsOwotICBHTGVudW0gZ2xfZm9ybWF0LCBnbF90eXBlLCBnbF90YXJnZXQ7Ci0gIGdwb2ludGVyIGRhdGE7Ci0gIGdzaXplIHBsYW5lX3N0YXJ0OwotCi0gIGlmICgoZ2xfbWVtLT50cmFuc2Zlcl9zdGF0ZSAmIEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpID09IDApCi0gICAgcmV0dXJuOwotCi0gIGdsID0gY29udGV4dC0+Z2xfdnRhYmxlOwotCi0gIGdsX3R5cGUgPSBHTF9VTlNJR05FRF9CWVRFOwotICBpZiAoZ2xfbWVtLT50ZXhfdHlwZSA9PSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2KQotICAgIGdsX3R5cGUgPSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNTsKLQotICBnbF9mb3JtYXQgPSBnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlIChnbF9tZW0tPnRleF90eXBlKTsKLSAgZ2xfdGFyZ2V0ID0gZ2xfbWVtLT50ZXhfdGFyZ2V0OwotCi0gIGlmIChVU0lOR19PUEVOR0wgKGNvbnRleHQpIHx8IFVTSU5HX0dMRVMzIChjb250ZXh0KQotICAgICAgfHwgVVNJTkdfT1BFTkdMMyAoY29udGV4dCkpIHsKLSAgICBnbC0+UGl4ZWxTdG9yZWkgKEdMX1VOUEFDS19ST1dfTEVOR1RILCBnbF9tZW0tPnVucGFja19sZW5ndGgpOwotICB9IGVsc2UgaWYgKFVTSU5HX0dMRVMyIChjb250ZXh0KSkgewotICAgIGdsLT5QaXhlbFN0b3JlaSAoR0xfVU5QQUNLX0FMSUdOTUVOVCwgZ2xfbWVtLT51bnBhY2tfbGVuZ3RoKTsKLSAgfQotCi0gIEdTVF9MT0cgKCJ1cGxvYWQgZm9yIHRleHR1cmUgaWQ6JXUsIHdpdGggcGJvICV1ICV1eCV1IiwKLSAgICAgIGdsX21lbS0+dGV4X2lkLCBnbF9tZW0tPm1lbS5pZCwgZ2xfbWVtLT50ZXhfd2lkdGgsCi0gICAgICBHTF9NRU1fSEVJR0hUIChnbF9tZW0pKTsKLQotICAvKiBmaW5kIHRoZSBzdGFydCBvZiB0aGUgcGxhbmUgZGF0YSBpbmNsdWRpbmcgcGFkZGluZyAqLwotICBwbGFuZV9zdGFydCA9IF9maW5kX3BsYW5lX2ZyYW1lX3N0YXJ0IChnbF9tZW0pOwotCi0gIGlmIChnbF9tZW0tPm1lbS5pZCAmJiBDT05URVhUX1NVUFBPUlRTX1BCT19VUExPQUQgKGNvbnRleHQpKSB7Ci0gICAgZ2wtPkJpbmRCdWZmZXIgKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIGdsX21lbS0+bWVtLmlkKTsKLSAgICBkYXRhID0gKHZvaWQgKikgcGxhbmVfc3RhcnQ7Ci0gIH0gZWxzZSB7Ci0gICAgZGF0YSA9IChncG9pbnRlcikgKChnaW50cHRyKSBwbGFuZV9zdGFydCArIChnaW50cHRyKSBnbF9tZW0tPm1lbS5kYXRhKTsKLSAgfQotCi0gIGdsLT5CaW5kVGV4dHVyZSAoZ2xfdGFyZ2V0LCBnbF9tZW0tPnRleF9pZCk7Ci0gIGdsLT5UZXhTdWJJbWFnZTJEIChnbF90YXJnZXQsIDAsIDAsIDAsIGdsX21lbS0+dGV4X3dpZHRoLAotICAgICAgR0xfTUVNX0hFSUdIVCAoZ2xfbWVtKSwgZ2xfZm9ybWF0LCBnbF90eXBlLCBkYXRhKTsKLQotICBpZiAoZ2xfbWVtLT5tZW0uaWQgJiYgQ09OVEVYVF9TVVBQT1JUU19QQk9fVVBMT0FEIChjb250ZXh0KSkKLSAgICBnbC0+QmluZEJ1ZmZlciAoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCk7Ci0KLSAgLyogUmVzZXQgdG8gZGVmYXVsdCB2YWx1ZXMgKi8KLSAgaWYgKFVTSU5HX09QRU5HTCAoY29udGV4dCkgfHwgVVNJTkdfR0xFUzMgKGNvbnRleHQpKSB7Ci0gICAgZ2wtPlBpeGVsU3RvcmVpIChHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgMCk7Ci0gIH0gZWxzZSBpZiAoVVNJTkdfR0xFUzIgKGNvbnRleHQpKSB7Ci0gICAgZ2wtPlBpeGVsU3RvcmVpIChHTF9VTlBBQ0tfQUxJR05NRU5ULCA0KTsKLSAgfQotCi0gIGdsLT5CaW5kVGV4dHVyZSAoZ2xfdGFyZ2V0LCAwKTsKLQotICBnbF9tZW0tPnRyYW5zZmVyX3N0YXRlICY9IH5HU1RfR0xfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEOwotfQotCiBzdGF0aWMgaW5saW5lIHZvaWQKIF9jYWxjdWxhdGVfdW5wYWNrX2xlbmd0aCAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCiB7CkBAIC00ODQsNyArMTIxLDcgQEAKICAgZ2xfbWVtLT51bnBhY2tfbGVuZ3RoID0gMTsKICAgZ2xfbWVtLT50ZXhfd2lkdGggPSBHTF9NRU1fV0lEVEggKGdsX21lbSk7CiAKLSAgbl9nbF9ieXRlcyA9IF9nbF90ZXh0dXJlX3R5cGVfbl9ieXRlcyAoZ2xfbWVtLT50ZXhfdHlwZSk7CisgIG5fZ2xfYnl0ZXMgPSBnc3RfZ2xfdGV4dHVyZV90eXBlX25fYnl0ZXMgKGdsX21lbS0+dGV4X3R5cGUpOwogICBpZiAobl9nbF9ieXRlcyA9PSAwKSB7CiAgICAgR1NUX0VSUk9SICgiVW5zdXBwb3J0ZWQgdGV4dHVyZSB0eXBlICVkIiwgZ2xfbWVtLT50ZXhfdHlwZSk7CiAgICAgcmV0dXJuOwpAQCAtNTAyLDggKzEzOSw4IEBACiAgICAgICAgICAgKChHTF9NRU1fV0lEVEggKGdsX21lbSkgKiBuX2dsX2J5dGVzKSArIGogLSAxKSAmIH4oaiAtIDEpOwogCiAgICAgICBpZiAocm91bmRfdXBfaiA9PSBHTF9NRU1fU1RSSURFIChnbF9tZW0pKSB7Ci0gICAgICAgIEdTVF9MT0cgKCJGb3VuZCBhbGlnbm1lbnQgb2YgJXUgYmFzZWQgb24gd2lkdGggIgotICAgICAgICAgICAgIih3aXRoIHBsYW5lIHdpZHRoOiV1LCBwbGFuZSBzdHJpZGU6JXUgYW5kIHBpeGVsIHN0cmlkZToldS4gIgorICAgICAgICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9NRU1PUlksICJGb3VuZCBhbGlnbm1lbnQgb2YgJXUgYmFzZWQgb24gIgorICAgICAgICAgICAgIndpZHRoICh3aXRoIHBsYW5lIHdpZHRoOiV1LCBwbGFuZSBzdHJpZGU6JXUgYW5kIHBpeGVsIHN0cmlkZToldS4gIgogICAgICAgICAgICAgIlJVJXUoJXUqJXUpID0gJXUpIiwgaiwgR0xfTUVNX1dJRFRIIChnbF9tZW0pLAogICAgICAgICAgICAgR0xfTUVNX1NUUklERSAoZ2xfbWVtKSwgbl9nbF9ieXRlcywgaiwgR0xfTUVNX1dJRFRIIChnbF9tZW0pLAogICAgICAgICAgICAgbl9nbF9ieXRlcywgcm91bmRfdXBfaik7CkBAIC01MjUsOCArMTYyLDggQEAKICAgICAgICAgZ3VpbnQgcm91bmRfdXBfaiA9ICgoR0xfTUVNX1NUUklERSAoZ2xfbWVtKSkgKyBqIC0gMSkgJiB+KGogLSAxKTsKIAogICAgICAgICBpZiAocm91bmRfdXBfaiA9PSAoR0xfTUVNX1NUUklERSAoZ2xfbWVtKSkpIHsKLSAgICAgICAgICBHU1RfTE9HICgiRm91bmQgYWxpZ25tZW50IG9mICV1IGJhc2VkIG9uICIKLSAgICAgICAgICAgICAgInN0cmlkZSAod2l0aCBwbGFuZSBzdHJpZGU6JXUgYW5kIHBpeGVsIHN0cmlkZToldS4gIgorICAgICAgICAgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0dMX01FTU9SWSwgIkZvdW5kIGFsaWdubWVudCBvZiAldSBiYXNlZCAiCisgICAgICAgICAgICAgICJvbiBzdHJpZGUgKHdpdGggcGxhbmUgc3RyaWRlOiV1IGFuZCBwaXhlbCBzdHJpZGU6JXUuICIKICAgICAgICAgICAgICAgIlJVJXUoJXUpID0gJXUpIiwgaiwgR0xfTUVNX1NUUklERSAoZ2xfbWVtKSwgbl9nbF9ieXRlcywgaiwKICAgICAgICAgICAgICAgR0xfTUVNX1NUUklERSAoZ2xfbWVtKSwgcm91bmRfdXBfaik7CiAKQEAgLTU0MSwxNCArMTc4LDI1IEBACiAgICAgICB9CiAKICAgICAgIGlmIChqIDwgbl9nbF9ieXRlcykgewotICAgICAgICBHU1RfRVJST1IKLSAgICAgICAgICAgICgiRmFpbGVkIHRvIGZpbmQgbWF0Y2hpbmcgYWxpZ25tZW50LiBJbWFnZSBtYXkgIgotICAgICAgICAgICAgImxvb2sgY29ycnVwdGVkLiBwbGFuZSB3aWR0aDoldSwgcGxhbmUgc3RyaWRlOiV1IGFuZCBwaXhlbCAiCi0gICAgICAgICAgICAic3RyaWRlOiV1IiwgR0xfTUVNX1dJRFRIIChnbF9tZW0pLCBHTF9NRU1fU1RSSURFIChnbF9tZW0pLAotICAgICAgICAgICAgbl9nbF9ieXRlcyk7CisgICAgICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfR0xfTUVNT1JZLCAiRmFpbGVkIHRvIGZpbmQgbWF0Y2hpbmcgIgorICAgICAgICAgICAgImFsaWdubWVudC4gSW1hZ2UgbWF5IGxvb2sgY29ycnVwdGVkLiBwbGFuZSB3aWR0aDoldSwgIgorICAgICAgICAgICAgInBsYW5lIHN0cmlkZToldSBhbmQgcGl4ZWwgc3RyaWRlOiV1IiwgR0xfTUVNX1dJRFRIIChnbF9tZW0pLAorICAgICAgICAgICAgR0xfTUVNX1NUUklERSAoZ2xfbWVtKSwgbl9nbF9ieXRlcyk7CiAgICAgICB9CiAgICAgfQogICB9CisKKyAgaWYgKGdsX21lbS0+dGV4X3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKSB7CisgICAgZ3VpbnQgd19zdWIgPQorICAgICAgICBHU1RfVklERU9fRk9STUFUX0lORk9fV19TVUIgKGdsX21lbS0+aW5mby5maW5mbywgZ2xfbWVtLT5wbGFuZSk7CisgICAgZ3VpbnQgaF9zdWIgPQorICAgICAgICBHU1RfVklERU9fRk9STUFUX0lORk9fSF9TVUIgKGdsX21lbS0+aW5mby5maW5mbywgZ2xfbWVtLT5wbGFuZSk7CisKKyAgICBpZiAod19zdWIpCisgICAgICBnbF9tZW0tPnRleF9zY2FsaW5nWzBdIC89ICgxIDw8IHdfc3ViKTsKKyAgICBpZiAoaF9zdWIpCisgICAgICBnbF9tZW0tPnRleF9zY2FsaW5nWzFdIC89ICgxIDw8IGhfc3ViKTsKKyAgfQogfQogCiBzdGF0aWMgZ3VpbnQKQEAgLTU2MCwyMiArMjA4LDI0IEBACiAKICAgZ2wtPkdlblRleHR1cmVzICgxLCAmdGV4X2lkKTsKICAgZ2wtPkJpbmRUZXh0dXJlICh0YXJnZXQsIHRleF9pZCk7Ci0gIGdsLT5UZXhJbWFnZTJEICh0YXJnZXQsIDAsIGludGVybmFsX2Zvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLAotICAgICAgTlVMTCk7CisgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCB8fCB0YXJnZXQgPT0gR0xfVEVYVFVSRV9SRUNUQU5HTEUpCisgICAgZ2wtPlRleEltYWdlMkQgKHRhcmdldCwgMCwgaW50ZXJuYWxfZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsCisgICAgICAgIE5VTEwpOwogCiAgIGdsLT5UZXhQYXJhbWV0ZXJpICh0YXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKICAgZ2wtPlRleFBhcmFtZXRlcmkgKHRhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwogICBnbC0+VGV4UGFyYW1ldGVyaSAodGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CiAgIGdsLT5UZXhQYXJhbWV0ZXJpICh0YXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKIAorICBnbC0+QmluZFRleHR1cmUgKHRhcmdldCwgMCk7CisKICAgcmV0dXJuIHRleF9pZDsKIH0KIAogc3RhdGljIGdib29sZWFuCi1fZ2xfbWVtX2NyZWF0ZSAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdFcnJvciAqKiBlcnJvcikKK19nbF90ZXhfY3JlYXRlIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR0Vycm9yICoqIGVycm9yKQogewogICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBnbF9tZW0tPm1lbS5jb250ZXh0OwotICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKICAgR0xlbnVtIGludGVybmFsX2Zvcm1hdDsKICAgR0xlbnVtIHRleF9mb3JtYXQ7CiAgIEdMZW51bSB0ZXhfdHlwZTsKQEAgLTU4NSw0MiArMjM1LDUwIEBACiAgIGlmIChnbF9tZW0tPnRleF90eXBlID09IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTYpCiAgICAgdGV4X3R5cGUgPSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNTsKIAotICBHU1RfVFJBQ0UgKCJHZW5lcmF0aW5nIHRleHR1cmUgZm9ybWF0OiV1IHR5cGU6JXUgZGltZW5zaW9uczoldXgldSIsCi0gICAgICB0ZXhfZm9ybWF0LCB0ZXhfdHlwZSwgZ2xfbWVtLT50ZXhfd2lkdGgsIEdMX01FTV9IRUlHSFQgKGdsX21lbSkpOwotCiAgIGludGVybmFsX2Zvcm1hdCA9CiAgICAgICBnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGUgKGNvbnRleHQsIHRleF9mb3JtYXQsCiAgICAgICB0ZXhfdHlwZSk7CiAKICAgaWYgKCFnbF9tZW0tPnRleHR1cmVfd3JhcHBlZCkgewogICAgIGdsX21lbS0+dGV4X2lkID0KLSAgICAgICAgX25ld190ZXh0dXJlIChjb250ZXh0LCBnbF9tZW0tPnRleF90YXJnZXQsIGludGVybmFsX2Zvcm1hdCwgdGV4X2Zvcm1hdCwKLSAgICAgICAgdGV4X3R5cGUsIGdsX21lbS0+dGV4X3dpZHRoLCBHTF9NRU1fSEVJR0hUIChnbF9tZW0pKTsKLSAgfQorICAgICAgICBfbmV3X3RleHR1cmUgKGNvbnRleHQsIGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoZ2xfbWVtLT50ZXhfdGFyZ2V0KSwKKyAgICAgICAgaW50ZXJuYWxfZm9ybWF0LCB0ZXhfZm9ybWF0LCB0ZXhfdHlwZSwgZ2xfbWVtLT50ZXhfd2lkdGgsCisgICAgICAgIEdMX01FTV9IRUlHSFQgKGdsX21lbSkpOwogCi0gIEdTVF9MT0cgKCJnZW5lcmF0ZWQgdGV4dHVyZSBpZDolZCIsIGdsX21lbS0+dGV4X2lkKTsKLQotICBpZiAoVVNJTkdfT1BFTkdMIChjb250ZXh0KSB8fCBVU0lOR19PUEVOR0wzIChjb250ZXh0KQotICAgICAgfHwgVVNJTkdfR0xFUzMgKGNvbnRleHQpKSB7Ci0gICAgLyogRklYTUU6IGxhenkgaW5pdCB0aGlzIGZvciByZXNvdXJjZSBjb25zdHJhaW5lZCBwbGF0Zm9ybXMKLSAgICAgKiBXaWxsIG5lZWQgdG8gZml4IHBibyBkZXRlY3Rpb24gYmFzZWQgb24gdGhlIGV4aXN0ZW5jZSBvZiB0aGUgbWVtLmlkIHRoZW4gKi8KLSAgICBnbC0+R2VuQnVmZmVycyAoMSwgJmdsX21lbS0+bWVtLmlkKTsKLSAgICBnbC0+QmluZEJ1ZmZlciAoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgZ2xfbWVtLT5tZW0uaWQpOwotICAgIGdsLT5CdWZmZXJEYXRhIChHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBnbF9tZW0tPm1lbS5tZW0ubWF4c2l6ZSwgTlVMTCwKLSAgICAgICAgR0xfU1RSRUFNX0RSQVcpOwotICAgIGdsLT5CaW5kQnVmZmVyIChHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwKTsKLSAgICBHU1RfTE9HICgiZ2VuZXJhdGVkIHBibyAldSIsIGdsX21lbS0+bWVtLmlkKTsKKyAgICBHU1RfVFJBQ0UgKCJHZW5lcmF0aW5nIHRleHR1cmUgaWQ6JXUgZm9ybWF0OiV1IHR5cGU6JXUgZGltZW5zaW9uczoldXgldSIsCisgICAgICAgIGdsX21lbS0+dGV4X2lkLCB0ZXhfZm9ybWF0LCB0ZXhfdHlwZSwgZ2xfbWVtLT50ZXhfd2lkdGgsCisgICAgICAgIEdMX01FTV9IRUlHSFQgKGdsX21lbSkpOwogICB9CiAKICAgcmV0dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyB2b2lkCi1fZ2xfbWVtX2luaXQgKEdzdEdMTWVtb3J5ICogbWVtLCBHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIEdzdE1lbW9yeSAqIHBhcmVudCwKLSAgICBHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLCBHc3RWaWRlb0luZm8gKiBpbmZvLAotICAgIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLCBndWludCBwbGFuZSwgZ3BvaW50ZXIgdXNlcl9kYXRhLAotICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKKy8qKgorICogZ3N0X2dsX21lbW9yeV9pbml0OgorICogQG1lbTogdGhlICNHc3RHTEJhc2VNZW1vcnkgdG8gaW5pdGlhbGl6ZQorICogQGFsbG9jYXRvcjogdGhlICNHc3RBbGxvY2F0b3IgdG8gaW5pdGlhbGl6ZSB3aXRoCisgKiBAcGFyZW50OiAoYWxsb3ctbm9uZSk6IHRoZSBwYXJlbnQgI0dzdE1lbW9yeSB0byBpbml0aWFsaXplIHdpdGgKKyAqIEBjb250ZXh0OiB0aGUgI0dzdEdMQ29udGV4dCB0byBpbml0aWFsaXplIHdpdGgKKyAqIEB0YXJnZXQ6IHRoZSAjR3N0R0xUZXh0dXJlVGFyZ2V0IGZvciB0aGlzICNHc3RHTE1lbW9yeQorICogQHBhcmFtczogKGFsbG93LW5vbmUpOiB0aGUgQEdzdEFsbG9jYXRpb25QYXJhbXMgdG8gaW5pdGlhbGl6ZSB3aXRoCisgKiBAaW5mbzogdGhlICNHc3RWaWRlb0luZm8gZm9yIHRoaXMgI0dzdEdMTWVtb3J5CisgKiBAcGxhbmU6IHRoZSBwbGFuZSBudW1iZXIgKHN0YXJ0aW5nIGZyb20gMCkgZm9yIHRoaXMgI0dzdEdMTWVtb3J5CisgKiBAdmFsaWduOiAoYWxsb3ctbm9uZSk6IG9wdGlvbmFsICNHc3RWaWRlb0FsaWdubWVudCBwYXJhbWV0ZXJzCisgKiBAbm90aWZ5OiAoYWxsb3ctbm9uZSk6IGEgI0dEZXN0cm95Tm90aWZ5CisgKiBAdXNlcl9kYXRhOiAoYWxsb3ctbm9uZSk6IHVzZXIgZGF0YSB0byBjYWxsIEBub3RpZnkgd2l0aAorICoKKyAqIEluaXRpYWxpemVzIEBtZW0gd2l0aCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVycy4gIEBpbmZvIGlzIGFzc3VtZWQgdG8gaGF2ZQorICogYWxyZWFkeSBoYXZlIGJlZW4gbW9kaWZpZWQgd2l0aCBnc3RfdmlkZW9faW5mb19hbGlnbigpLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX21lbW9yeV9pbml0IChHc3RHTE1lbW9yeSAqIG1lbSwgR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLAorICAgIEdzdE1lbW9yeSAqIHBhcmVudCwgR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLCBHc3RWaWRlb0luZm8gKiBpbmZvLCBndWludCBwbGFuZSwKKyAgICBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwgZ3BvaW50ZXIgdXNlcl9kYXRhLCBHRGVzdHJveU5vdGlmeSBub3RpZnkpCiB7CisgIGNvbnN0IGdjaGFyICp0YXJnZXRfc3RyOwogICBnc2l6ZSBzaXplOwogCiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHBsYW5lIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKGluZm8pKTsKQEAgLTY0OCw0NSArMzA2LDQyIEBACiAKICAgc2l6ZSA9IGdzdF9nbF9nZXRfcGxhbmVfZGF0YV9zaXplIChpbmZvLCB2YWxpZ24sIHBsYW5lKTsKIAotICAvKiB3ZSBhbHdheXMgb3BlcmF0ZSBvbiAyRCB0ZXh0dXJlcyB1bmxlc3Mgd2UncmUgZGVhbGluZyB3aXRoIHdyYXBwZWQgdGV4dHVyZXMgKi8KLSAgbWVtLT50ZXhfdGFyZ2V0ID0gR0xfVEVYVFVSRV8yRDsKKyAgbWVtLT50ZXhfdGFyZ2V0ID0gdGFyZ2V0OwogICBtZW0tPnRleF90eXBlID0KICAgICAgIGdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQgKGNvbnRleHQsIEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoaW5mbyksCiAgICAgICBwbGFuZSk7CiAgIG1lbS0+cGxhbmUgPSBwbGFuZTsKLSAgbWVtLT5ub3RpZnkgPSBub3RpZnk7Ci0gIG1lbS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwogCiAgIF9jYWxjdWxhdGVfdW5wYWNrX2xlbmd0aCAobWVtLCBjb250ZXh0KTsKIAotICAvKiBjYWxscyBfZ2xfbWVtX2NyZWF0ZSgpICovCi0gIGdzdF9nbF9iYXNlX2J1ZmZlcl9pbml0ICgoR3N0R0xCYXNlQnVmZmVyICopIG1lbSwgYWxsb2NhdG9yLCBwYXJlbnQsIGNvbnRleHQsCi0gICAgICBwYXJhbXMsIHNpemUpOworICBnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdCAoKEdzdEdMQmFzZU1lbW9yeSAqKSBtZW0sIGFsbG9jYXRvciwgcGFyZW50LCBjb250ZXh0LAorICAgICAgcGFyYW1zLCBzaXplLCB1c2VyX2RhdGEsIG5vdGlmeSk7CiAKLSAgR1NUX0RFQlVHICgibmV3IEdMIHRleHR1cmUgY29udGV4dDolIiBHU1RfUFRSX0ZPUk1BVCAiIG1lbW9yeTolcCBmb3JtYXQ6JXUgIgotICAgICAgImRpbWVuc2lvbnM6JXV4JXUgc3RyaWRlOiV1IHNpemU6JSIgR19HU0laRV9GT1JNQVQsIGNvbnRleHQsIG1lbSwKKyAgdGFyZ2V0X3N0ciA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19zdHJpbmcgKHRhcmdldCk7CisgIEdTVF9DQVRfREVCVUcgKEdTVF9DQVRfR0xfTUVNT1JZLCAibmV3IEdMIHRleHR1cmUgY29udGV4dDolIgorICAgICAgR1NUX1BUUl9GT1JNQVQgIiBtZW1vcnk6JXAgdGFyZ2V0OiVzIGZvcm1hdDoldSBkaW1lbnNpb25zOiV1eCV1ICIKKyAgICAgICJzdHJpZGU6JXUgc2l6ZTolIiBHX0dTSVpFX0ZPUk1BVCwgY29udGV4dCwgbWVtLCB0YXJnZXRfc3RyLAogICAgICAgbWVtLT50ZXhfdHlwZSwgbWVtLT50ZXhfd2lkdGgsIEdMX01FTV9IRUlHSFQgKG1lbSksIEdMX01FTV9TVFJJREUgKG1lbSksCiAgICAgICBtZW0tPm1lbS5tZW0uc2l6ZSk7CiB9CiAKLXN0YXRpYyBHc3RHTE1lbW9yeSAqCi1fZ2xfbWVtX25ldyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBwYXJlbnQsCi0gICAgR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywgR3N0VmlkZW9JbmZvICogaW5mbywKLSAgICBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwgZ3VpbnQgcGxhbmUsIGdwb2ludGVyIHVzZXJfZGF0YSwKLSAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpCi17Ci0gIEdzdEdMTWVtb3J5ICptZW07Ci0gIG1lbSA9IGdfc2xpY2VfbmV3MCAoR3N0R0xNZW1vcnkpOwotICBtZW0tPnRleHR1cmVfd3JhcHBlZCA9IEZBTFNFOwotCi0gIF9nbF9tZW1faW5pdCAobWVtLCBhbGxvY2F0b3IsIHBhcmVudCwgY29udGV4dCwgcGFyYW1zLCBpbmZvLCB2YWxpZ24sIHBsYW5lLAotICAgICAgdXNlcl9kYXRhLCBub3RpZnkpOwotCi0gIHJldHVybiBtZW07Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotX2dsX21lbV9yZWFkX3BpeGVscyAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIGdwb2ludGVyIHJlYWRfcG9pbnRlcikKKy8qKgorICogZ3N0X2dsX21lbW9yeV9yZWFkX3BpeGVsczoKKyAqIEBnbF9tZW06IGEgI0dzdEdMTWVtb3J5CisgKiBAcmVhZF9wb2ludGVyOiB0aGUgZGF0YSBwb2ludGVyIHRvIHBhc3MgdG8gZ2xSZWFkUGl4ZWxzCisgKgorICogUmVhZHMgdGhlIHRleHR1cmUgaW4gI0dzdEdMTWVtb3J5IGludG8gQHJlYWRfcG9pbnRlciBpZiBubyBidWZmZXIgaXMgYm91bmQKKyAqIHRvICVHTF9QSVhFTF9QQUNLX0JVRkZFUi4gIE90aGVyd2lzZSBAcmVhZF9wb2ludGVyIGlzIHRoZSBieXRlIG9mZnNldCBpbnRvCisgKiB0aGUgY3VycmVudGx5IGJvdW5kICVHTF9QSVhFTF9QQUNLX0JVRkZFUiBidWZmZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZgorICogZ2xSZWFkUGl4ZWxzLiAgU2VlIHRoZSBPcGVuR0wgc3BlY2lmaWNhdGlvbiBmb3IgZ2xSZWFkUGl4ZWxzIGZvciBtb3JlCisgKiBkZXRhaWxzLgorICoKKyAqIFJldHVybnM6IHdoZXRoZXIgdGhlcmVhZCBvcGVyYXRpb24gc3VjY2VlZGVkCisgKgorICogU2luY2U6IDEuOAorICovCitnYm9vbGVhbgorZ3N0X2dsX21lbW9yeV9yZWFkX3BpeGVscyAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIGdwb2ludGVyIHJlYWRfcG9pbnRlcikKIHsKICAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gZ2xfbWVtLT5tZW0uY29udGV4dDsKICAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CkBAIC03MDMsNyArMzU4LDcgQEAKICAgZ2wtPkJpbmRGcmFtZWJ1ZmZlciAoR0xfRlJBTUVCVUZGRVIsIGZibyk7CiAKICAgZ2wtPkZyYW1lYnVmZmVyVGV4dHVyZTJEIChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsCi0gICAgICBnbF9tZW0tPnRleF90YXJnZXQsIGdsX21lbS0+dGV4X2lkLCAwKTsKKyAgICAgIGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoZ2xfbWVtLT50ZXhfdGFyZ2V0KSwgZ2xfbWVtLT50ZXhfaWQsIDApOwogCiAgIGlmICghZ3N0X2dsX2NvbnRleHRfY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzIChjb250ZXh0KSkgewogICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9NRU1PUlksCkBAIC03MTIsOCArMzY3LDExIEBACiAgICAgcmV0dXJuIEZBTFNFOwogICB9CiAKKyAgZ3N0X2dsX3F1ZXJ5X3N0YXJ0X2xvZyAoR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QgKGdsX21lbSktPnF1ZXJ5LAorICAgICAgR1NUX0NBVF9HTF9NRU1PUlksIEdTVF9MRVZFTF9MT0csIE5VTEwsICIlcyIsICJnbFJlYWRQaXhlbHMgdG9vayIpOwogICBnbC0+UmVhZFBpeGVscyAoMCwgMCwgZ2xfbWVtLT50ZXhfd2lkdGgsIEdMX01FTV9IRUlHSFQgKGdsX21lbSksIGZvcm1hdCwKICAgICAgIHR5cGUsIHJlYWRfcG9pbnRlcik7CisgIGdzdF9nbF9xdWVyeV9lbmQgKEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUIChnbF9tZW0pLT5xdWVyeSk7CiAKICAgZ2wtPkJpbmRGcmFtZWJ1ZmZlciAoR0xfRlJBTUVCVUZGRVIsIDApOwogCkBAIC03MjIsNjQgKzM4MCw4IEBACiAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4KLV9yZWFkX3BpeGVsc190b19wYm8gKEdzdEdMTWVtb3J5ICogZ2xfbWVtKQotewotICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGdsX21lbS0+bWVtLmNvbnRleHQtPmdsX3Z0YWJsZTsKLQotICBpZiAoIWdsX21lbS0+bWVtLmlkIHx8ICFDT05URVhUX1NVUFBPUlRTX1BCT19ET1dOTE9BRCAoZ2xfbWVtLT5tZW0uY29udGV4dCkKLSAgICAgIHx8IGdsX21lbS0+dGV4X3R5cGUgPT0gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0UKLSAgICAgIHx8IGdsX21lbS0+dGV4X3R5cGUgPT0gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0VfQUxQSEEpCi0gICAgLyogdW5zdXBwb3J0ZWQgKi8KLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgaWYgKGdsX21lbS0+dHJhbnNmZXJfc3RhdGUgJiBHU1RfR0xfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpIHsKLSAgICAvKiBjb3B5IHRleHR1cmUgZGF0YSBpbnRvIGludG8gdGhlIHBibyBhbmQgbWFwIHRoYXQgKi8KLSAgICBnc2l6ZSBwbGFuZV9zdGFydCA9IF9maW5kX3BsYW5lX2ZyYW1lX3N0YXJ0IChnbF9tZW0pOwotCi0gICAgZ2wtPkJpbmRCdWZmZXIgKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBnbF9tZW0tPm1lbS5pZCk7Ci0KLSAgICBpZiAoIV9nbF9tZW1fcmVhZF9waXhlbHMgKGdsX21lbSwgKGdwb2ludGVyKSBwbGFuZV9zdGFydCkpIHsKLSAgICAgIGdsLT5CaW5kQnVmZmVyIChHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCk7Ci0gICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotCi0gICAgZ2wtPkJpbmRCdWZmZXIgKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwKTsKLSAgICBnbF9tZW0tPnRyYW5zZmVyX3N0YXRlICY9IH5HU1RfR0xfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQ7Ci0gIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQogc3RhdGljIGdwb2ludGVyCi1fcGJvX2Rvd25sb2FkX3RyYW5zZmVyIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCi17Ci0gIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKLSAgZ3BvaW50ZXIgZGF0YSA9IE5VTEw7Ci0KLSAgYWxsb2NfY2xhc3MgPQotICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUl9DTEFTUyAoZ3N0X2dsX2FsbG9jYXRvcl9wYXJlbnRfY2xhc3MpOwotCi0gIC8qIHRleHR1cmUgLT4gcGJvICovCi0gIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfUkVBRAotICAgICAgJiYgZ2xfbWVtLT50cmFuc2Zlcl9zdGF0ZSAmIEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCkgewotICAgIEdTVF9DQVRfVFJBQ0UgKEdTVF9DQVRfR0xfTUVNT1JZLCAiYXR0ZW1wdGluZyBkb3dubG9hZCBvZiB0ZXh0dXJlICV1ICIKLSAgICAgICAgInVzaW5nIHBibyAldSIsIGdsX21lbS0+dGV4X2lkLCBnbF9tZW0tPm1lbS5pZCk7Ci0KLSAgICBpZiAoIV9yZWFkX3BpeGVsc190b19wYm8gKGdsX21lbSkpCi0gICAgICByZXR1cm4gTlVMTDsKLSAgfQotCi0gIC8qIGdldCBhIGNwdSBhY2Nlc3NpYmxlIG1hcHBpbmcgZnJvbSB0aGUgcGJvICovCi0gIGdsX21lbS0+bWVtLnRhcmdldCA9IEdMX1BJWEVMX1BBQ0tfQlVGRkVSOwotICAvKiBwYm8gLT4gZGF0YSAqLwotICBkYXRhID0gYWxsb2NfY2xhc3MtPm1hcF9idWZmZXIgKChHc3RHTEJhc2VCdWZmZXIgKikgZ2xfbWVtLCBpbmZvLCBzaXplKTsKLQotICByZXR1cm4gZGF0YTsKLX0KLQotc3RhdGljIGdwb2ludGVyCi1fZ2xfbWVtX2Rvd25sb2FkX2dldF90ZXhfaW1hZ2UgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBHc3RNYXBJbmZvICogaW5mbywKK19nbF90ZXhfZG93bmxvYWRfZ2V0X3RleF9pbWFnZSAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvLAogICAgIGdzaXplIHNpemUpCiB7CiAgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IGdsX21lbS0+bWVtLmNvbnRleHQ7CkBAIC03OTcsOCArMzk5LDEwIEBACiAgICAgcmV0dXJuIE5VTEw7CiAKICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9SRUFECi0gICAgICAmJiBnbF9tZW0tPnRyYW5zZmVyX3N0YXRlICYgR1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKSB7CisgICAgICAmJiBHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChnbF9tZW0sCisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKSB7CiAgICAgZ3VpbnQgZm9ybWF0LCB0eXBlOworICAgIGd1aW50IHRhcmdldDsKIAogICAgIEdTVF9DQVRfVFJBQ0UgKEdTVF9DQVRfR0xfTUVNT1JZLCAiYXR0ZW1wdGluZyBkb3dubG9hZCBvZiB0ZXh0dXJlICV1ICIKICAgICAgICAgInVzaW5nIGdsR2V0VGV4SW1hZ2UiLCBnbF9tZW0tPnRleF9pZCk7CkBAIC04MDgsMjYgKzQxMiwzMiBAQAogICAgIGlmIChnbF9tZW0tPnRleF90eXBlID09IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTYpCiAgICAgICB0eXBlID0gR0xfVU5TSUdORURfU0hPUlRfNV82XzU7CiAKLSAgICBnbC0+QmluZFRleHR1cmUgKGdsX21lbS0+dGV4X3RhcmdldCwgZ2xfbWVtLT50ZXhfaWQpOwotICAgIGdsLT5HZXRUZXhJbWFnZSAoZ2xfbWVtLT50ZXhfdGFyZ2V0LCAwLCBmb3JtYXQsIHR5cGUsIGdsX21lbS0+bWVtLmRhdGEpOwotICAgIGdsLT5CaW5kVGV4dHVyZSAoZ2xfbWVtLT50ZXhfdGFyZ2V0LCAwKTsKKyAgICB0YXJnZXQgPSBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKGdsX21lbS0+dGV4X3RhcmdldCk7CisgICAgZ2wtPkJpbmRUZXh0dXJlICh0YXJnZXQsIGdsX21lbS0+dGV4X2lkKTsKKyAgICBnc3RfZ2xfcXVlcnlfc3RhcnRfbG9nIChHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVCAoZ2xfbWVtKS0+cXVlcnksCisgICAgICAgIEdTVF9DQVRfR0xfTUVNT1JZLCBHU1RfTEVWRUxfTE9HLCBOVUxMLCAiJXMiLCAiZ2xHZXRUZXhJbWFnZSB0b29rIik7CisgICAgZ2wtPkdldFRleEltYWdlICh0YXJnZXQsIDAsIGZvcm1hdCwgdHlwZSwgZ2xfbWVtLT5tZW0uZGF0YSk7CisgICAgZ3N0X2dsX3F1ZXJ5X2VuZCAoR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QgKGdsX21lbSktPnF1ZXJ5KTsKKyAgICBnbC0+QmluZFRleHR1cmUgKHRhcmdldCwgMCk7CiAgIH0KIAogICByZXR1cm4gZ2xfbWVtLT5tZW0uZGF0YTsKIH0KIAogc3RhdGljIGdwb2ludGVyCi1fZ2xfbWVtX2Rvd25sb2FkX3JlYWRfcGl4ZWxzIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sCitfZ2xfdGV4X2Rvd25sb2FkX3JlYWRfcGl4ZWxzIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sCiAgICAgZ3NpemUgc2l6ZSkKIHsKICAgaWYgKHNpemUgIT0gLTEgJiYgc2l6ZSAhPSAoKEdzdE1lbW9yeSAqKSBnbF9tZW0pLT5tYXhzaXplKQogICAgIHJldHVybiBOVUxMOwogCiAgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfUkVBRAotICAgICAgJiYgZ2xfbWVtLT50cmFuc2Zlcl9zdGF0ZSAmIEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCkgewotICAgIEdTVF9DQVRfVFJBQ0UgKEdTVF9DQVRfR0xfTUVNT1JZLCAiYXR0ZW1wdGluZyBkb3dubG9hZCBvZiB0ZXh0dXJlICV1ICIKLSAgICAgICAgInVzaW5nIGdsUmVhZFBpeGVscyIsIGdsX21lbS0+dGV4X2lkKTsKLSAgICBpZiAoIV9nbF9tZW1fcmVhZF9waXhlbHMgKGdsX21lbSwgZ2xfbWVtLT5tZW0uZGF0YSkpCisgICAgICAmJiBHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChnbF9tZW0sCisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKSB7CisgICAgR1NUX0NBVF9UUkFDRSAoR1NUX0NBVF9HTF9NRU1PUlksCisgICAgICAgICJhdHRlbXB0aW5nIGRvd25sb2FkIG9mIHRleHR1cmUgJXUgIiAidXNpbmcgZ2xSZWFkUGl4ZWxzIiwKKyAgICAgICAgZ2xfbWVtLT50ZXhfaWQpOworICAgIGlmICghZ3N0X2dsX21lbW9yeV9yZWFkX3BpeGVscyAoZ2xfbWVtLCBnbF9tZW0tPm1lbS5kYXRhKSkKICAgICAgIHJldHVybiBOVUxMOwogICB9CiAKQEAgLTgzNSwxNDkgKzQ0NSwyMzQgQEAKIH0KIAogc3RhdGljIGdwb2ludGVyCi1fZ2xfbWVtX21hcF9jcHVfYWNjZXNzIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCitfZ2xfdGV4X21hcF9jcHVfYWNjZXNzIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCiB7CiAgIGdwb2ludGVyIGRhdGEgPSBOVUxMOwogCi0gIGdzdF9nbF9iYXNlX2J1ZmZlcl9hbGxvY19kYXRhICgoR3N0R0xCYXNlQnVmZmVyICopIGdsX21lbSk7Ci0KLSAgaWYgKCFkYXRhICYmIGdsX21lbS0+bWVtLmlkCi0gICAgICAmJiBDT05URVhUX1NVUFBPUlRTX1BCT19ET1dOTE9BRCAoZ2xfbWVtLT5tZW0uY29udGV4dCkpCi0gICAgZGF0YSA9IF9wYm9fZG93bmxvYWRfdHJhbnNmZXIgKGdsX21lbSwgaW5mbywgc2l6ZSk7Ci0gIGlmICghZGF0YSkKLSAgICBkYXRhID0gX2dsX21lbV9kb3dubG9hZF9nZXRfdGV4X2ltYWdlIChnbF9tZW0sIGluZm8sIHNpemUpOworICBpZiAoIWdzdF9nbF9iYXNlX21lbW9yeV9hbGxvY19kYXRhIChHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVCAoZ2xfbWVtKSkpCisgICAgcmV0dXJuIE5VTEw7CiAKICAgaWYgKCFkYXRhKQotICAgIGRhdGEgPSBfZ2xfbWVtX2Rvd25sb2FkX3JlYWRfcGl4ZWxzIChnbF9tZW0sIGluZm8sIHNpemUpOworICAgIGRhdGEgPSBfZ2xfdGV4X2Rvd25sb2FkX2dldF90ZXhfaW1hZ2UgKGdsX21lbSwgaW5mbywgc2l6ZSk7CisKKyAgaWYgKCFkYXRhKQorICAgIGRhdGEgPSBfZ2xfdGV4X2Rvd25sb2FkX3JlYWRfcGl4ZWxzIChnbF9tZW0sIGluZm8sIHNpemUpOwogCiAgIHJldHVybiBkYXRhOwogfQogCitzdGF0aWMgdm9pZAorX3VwbG9hZF9jcHVfd3JpdGUgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBHc3RNYXBJbmZvICogaW5mbywgZ3NpemUgbWF4c2l6ZSkKK3sKKyAgZ3N0X2dsX21lbW9yeV90ZXhzdWJpbWFnZSAoZ2xfbWVtLCBnbF9tZW0tPm1lbS5kYXRhKTsKK30KKworLyoqCisgKiBnc3RfZ2xfbWVtb3J5X3RleHN1YmltYWdlOgorICogQGdsX21lbTogYSAjR3N0R0xNZW1vcnkKKyAqIEByZWFkX3BvaW50ZXI6IHRoZSBkYXRhIHBvaW50ZXIgdG8gcGFzcyB0byBnbFRleFN1YkltYWdlCisgKgorICogU2VlIGdzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHMoKSBmb3Igd2hhdCBAcmVhZF9wb2ludGVyIHNpZ25pZmllcy4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9tZW1vcnlfdGV4c3ViaW1hZ2UgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBncG9pbnRlciByZWFkX3BvaW50ZXIpCit7CisgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IGdsX21lbS0+bWVtLmNvbnRleHQ7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsOworICBHTGVudW0gZ2xfZm9ybWF0LCBnbF90eXBlLCBnbF90YXJnZXQ7CisgIGdwb2ludGVyIGRhdGE7CisgIGdzaXplIHBsYW5lX3N0YXJ0OworCisgIGlmICghR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAoZ2xfbWVtLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpKQorICAgIHJldHVybjsKKworICBnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBnbF90eXBlID0gR0xfVU5TSUdORURfQllURTsKKyAgaWYgKGdsX21lbS0+dGV4X3R5cGUgPT0gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0IxNikKKyAgICBnbF90eXBlID0gR0xfVU5TSUdORURfU0hPUlRfNV82XzU7CisKKyAgZ2xfZm9ybWF0ID0gZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZSAoZ2xfbWVtLT50ZXhfdHlwZSk7CisgIGdsX3RhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoZ2xfbWVtLT50ZXhfdGFyZ2V0KTsKKworICBpZiAoVVNJTkdfT1BFTkdMIChjb250ZXh0KSB8fCBVU0lOR19HTEVTMyAoY29udGV4dCkKKyAgICAgIHx8IFVTSU5HX09QRU5HTDMgKGNvbnRleHQpKSB7CisgICAgZ2wtPlBpeGVsU3RvcmVpIChHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgZ2xfbWVtLT51bnBhY2tfbGVuZ3RoKTsKKyAgfSBlbHNlIGlmIChVU0lOR19HTEVTMiAoY29udGV4dCkpIHsKKyAgICBnbC0+UGl4ZWxTdG9yZWkgKEdMX1VOUEFDS19BTElHTk1FTlQsIGdsX21lbS0+dW5wYWNrX2xlbmd0aCk7CisgIH0KKworICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9NRU1PUlksICJ1cGxvYWQgZm9yIHRleHR1cmUgaWQ6JXUsICV1eCV1IiwKKyAgICAgIGdsX21lbS0+dGV4X2lkLCBnbF9tZW0tPnRleF93aWR0aCwgR0xfTUVNX0hFSUdIVCAoZ2xfbWVtKSk7CisKKyAgLyogZmluZCB0aGUgc3RhcnQgb2YgdGhlIHBsYW5lIGRhdGEgaW5jbHVkaW5nIHBhZGRpbmcgKi8KKyAgcGxhbmVfc3RhcnQgPQorICAgICAgZ3N0X2dsX2dldF9wbGFuZV9zdGFydCAoJmdsX21lbS0+aW5mbywgJmdsX21lbS0+dmFsaWduLAorICAgICAgZ2xfbWVtLT5wbGFuZSkgKyBnbF9tZW0tPm1lbS5tZW0ub2Zmc2V0OworCisgIGRhdGEgPSAoZ3BvaW50ZXIpICgoZ2ludHB0cikgcGxhbmVfc3RhcnQgKyAoZ2ludHB0cikgcmVhZF9wb2ludGVyKTsKKworICBnbC0+QmluZFRleHR1cmUgKGdsX3RhcmdldCwgZ2xfbWVtLT50ZXhfaWQpOworICBnc3RfZ2xfcXVlcnlfc3RhcnRfbG9nIChHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVCAoZ2xfbWVtKS0+cXVlcnksCisgICAgICBHU1RfQ0FUX0dMX01FTU9SWSwgR1NUX0xFVkVMX0xPRywgTlVMTCwgIiVzIiwgImdsVGV4U3ViSW1hZ2UgdG9vayIpOworICBnbC0+VGV4U3ViSW1hZ2UyRCAoZ2xfdGFyZ2V0LCAwLCAwLCAwLCBnbF9tZW0tPnRleF93aWR0aCwKKyAgICAgIEdMX01FTV9IRUlHSFQgKGdsX21lbSksIGdsX2Zvcm1hdCwgZ2xfdHlwZSwgZGF0YSk7CisgIGdzdF9nbF9xdWVyeV9lbmQgKEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUIChnbF9tZW0pLT5xdWVyeSk7CisKKyAgLyogUmVzZXQgdG8gZGVmYXVsdCB2YWx1ZXMgKi8KKyAgaWYgKFVTSU5HX09QRU5HTCAoY29udGV4dCkgfHwgVVNJTkdfR0xFUzMgKGNvbnRleHQpKSB7CisgICAgZ2wtPlBpeGVsU3RvcmVpIChHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgMCk7CisgIH0gZWxzZSBpZiAoVVNJTkdfR0xFUzIgKGNvbnRleHQpKSB7CisgICAgZ2wtPlBpeGVsU3RvcmVpIChHTF9VTlBBQ0tfQUxJR05NRU5ULCA0KTsKKyAgfQorCisgIGdsLT5CaW5kVGV4dHVyZSAoZ2xfdGFyZ2V0LCAwKTsKK30KKwogc3RhdGljIGdwb2ludGVyCi1fZ2xfbWVtX21hcF9idWZmZXIgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBHc3RNYXBJbmZvICogaW5mbywgZ3NpemUgbWF4c2l6ZSkKK19kZWZhdWx0X2dsX3RleF9tYXAgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBHc3RNYXBJbmZvICogaW5mbywgZ3NpemUgc2l6ZSkKIHsKLSAgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ2xhc3MgKmFsbG9jX2NsYXNzOworICBpZiAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgPT0gR1NUX01BUF9HTCkgeworICAgIF91cGxvYWRfY3B1X3dyaXRlIChnbF9tZW0sIGluZm8sIHNpemUpOworICAgIHJldHVybiAmZ2xfbWVtLT50ZXhfaWQ7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIF9nbF90ZXhfbWFwX2NwdV9hY2Nlc3MgKGdsX21lbSwgaW5mbywgc2l6ZSk7CisgIH0KK30KKworc3RhdGljIGdwb2ludGVyCitfZ2xfdGV4X21hcCAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBtYXhzaXplKQoreworICBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKICAgZ3BvaW50ZXIgZGF0YTsKIAotICBhbGxvY19jbGFzcyA9Ci0gICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SX0NMQVNTIChnc3RfZ2xfYWxsb2NhdG9yX3BhcmVudF9jbGFzcyk7CisgIGFsbG9jX2NsYXNzID0gR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfR0VUX0NMQVNTIChnbF9tZW0tPm1lbS5tZW0uYWxsb2NhdG9yKTsKIAogICBpZiAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgPT0gR1NUX01BUF9HTCkgewotICAgIGlmICgoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1JFQUQpID09IEdTVF9NQVBfUkVBRCkgewotICAgICAgR1NUX1RSQUNFICgibWFwcGluZyBHTCB0ZXh0dXJlOiV1IGZvciByZWFkaW5nIiwgZ2xfbWVtLT50ZXhfaWQpOwotCi0gICAgICBpZiAoZ2xfbWVtLT5tZW0uaWQgJiYgQ09OVEVYVF9TVVBQT1JUU19QQk9fVVBMT0FEIChnbF9tZW0tPm1lbS5jb250ZXh0KSkgewotICAgICAgICBnbF9tZW0tPm1lbS50YXJnZXQgPSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSOwotICAgICAgICAvKiBkYXRhIC0+IHBibyAqLwotICAgICAgICBhbGxvY19jbGFzcy0+bWFwX2J1ZmZlciAoKEdzdEdMQmFzZUJ1ZmZlciAqKSBnbF9tZW0sIGluZm8sIG1heHNpemUpOwotICAgICAgfQotICAgICAgLyogcGJvIC0+IHRleHR1cmUgKi8KLSAgICAgIF91cGxvYWRfbWVtb3J5IChnbF9tZW0sIGluZm8sIG1heHNpemUpOwotICAgIH0KLQotICAgIGlmICgoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKSA9PSBHU1RfTUFQX1dSSVRFKSB7Ci0gICAgICBHU1RfVFJBQ0UgKCJtYXBwaW5nIEdMIHRleHR1cmU6JXUgZm9yIHdyaXRpbmciLCBnbF9tZW0tPnRleF9pZCk7Ci0gICAgICBnbF9tZW0tPnRyYW5zZmVyX3N0YXRlIHw9IEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRDsKLSAgICB9Ci0gICAgZ2xfbWVtLT50cmFuc2Zlcl9zdGF0ZSAmPSB+R1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRDsKLQotICAgIGRhdGEgPSAmZ2xfbWVtLT50ZXhfaWQ7CisgICAgaWYgKGdsX21lbS0+dGV4X3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKQorICAgICAgcmV0dXJuICZnbF9tZW0tPnRleF9pZDsKICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgLyogbm90IEdMICovCi0gICAgZGF0YSA9IF9nbF9tZW1fbWFwX2NwdV9hY2Nlc3MgKGdsX21lbSwgaW5mbywgbWF4c2l6ZSk7Ci0gICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9XUklURSkKLSAgICAgIGdsX21lbS0+dHJhbnNmZXJfc3RhdGUgfD0gR1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRDsKLSAgICBnbF9tZW0tPnRyYW5zZmVyX3N0YXRlICY9IH5HU1RfR0xfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQ7CisgICAgaWYgKGdsX21lbS0+dGV4X3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKSB7CisgICAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX0dMX01FTU9SWSwgIkNhbm5vdCBtYXAgRXh0ZXJuYWwgT0VTIHRleHR1cmVzIik7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgIH0KIAorICBnX3JldHVybl92YWxfaWZfZmFpbCAoYWxsb2NfY2xhc3MtPm1hcCAhPSBOVUxMLCBOVUxMKTsKKyAgZGF0YSA9IGFsbG9jX2NsYXNzLT5tYXAgKEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUIChnbF9tZW0pLCBpbmZvLCBtYXhzaXplKTsKKwogICByZXR1cm4gZGF0YTsKIH0KIAogc3RhdGljIHZvaWQKLV9nbF9tZW1fdW5tYXBfY3B1X2FjY2VzcyAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvKQorX2RlZmF1bHRfZ2xfdGV4X3VubWFwIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8pCiB7Ci0gIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKLSAgY29uc3QgR3N0R0xGdW5jcyAqZ2w7Ci0KLSAgYWxsb2NfY2xhc3MgPQotICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUl9DTEFTUyAoZ3N0X2dsX2FsbG9jYXRvcl9wYXJlbnRfY2xhc3MpOwotICBnbCA9IGdsX21lbS0+bWVtLmNvbnRleHQtPmdsX3Z0YWJsZTsKLQotICBpZiAoIWdsX21lbS0+bWVtLmlkKQotICAgIC8qIFBCTydzIG5vdCBzdXBwb3J0ZWQgKi8KLSAgICByZXR1cm47Ci0KLSAgZ2xfbWVtLT5tZW0udGFyZ2V0ID0gR0xfUElYRUxfUEFDS19CVUZGRVI7Ci0gIGFsbG9jX2NsYXNzLT51bm1hcF9idWZmZXIgKChHc3RHTEJhc2VCdWZmZXIgKikgZ2xfbWVtLCBpbmZvKTsKLSAgZ2wtPkJpbmRCdWZmZXIgKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwKTsKIH0KIAogc3RhdGljIHZvaWQKLV9nbF9tZW1fdW5tYXBfYnVmZmVyIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8pCitfZ2xfdGV4X3VubWFwIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8pCiB7Ci0gIGlmICgoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMKSA9PSAwKSB7Ci0gICAgX2dsX21lbV91bm1hcF9jcHVfYWNjZXNzIChnbF9tZW0sIGluZm8pOwotICAgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfV1JJVEUpCi0gICAgICBnbF9tZW0tPnRyYW5zZmVyX3N0YXRlIHw9IEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQ7Ci0gIH0gZWxzZSB7Ci0gICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9XUklURSkKLSAgICAgIGdsX21lbS0+dHJhbnNmZXJfc3RhdGUgfD0gR1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEOwotICB9CisgIEdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKmFsbG9jX2NsYXNzOworCisgIGFsbG9jX2NsYXNzID0gR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfR0VUX0NMQVNTIChnbF9tZW0tPm1lbS5tZW0uYWxsb2NhdG9yKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoYWxsb2NfY2xhc3MtPnVubWFwICE9IE5VTEwpOworCisgIGFsbG9jX2NsYXNzLT51bm1hcCAoR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QgKGdsX21lbSksIGluZm8pOwogfQogCi1zdGF0aWMgdm9pZAotX2dsX21lbV9jb3B5X3RocmVhZCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgZ3BvaW50ZXIgZGF0YSkKKy8qKgorICogZ3N0X2dsX21lbW9yeV9jb3B5X3RleGlhbWdlOgorICogQGdsX21lbTogdGhlIHNvdXJjZSAjR3N0R0xNZW1vcnkKKyAqIEB0ZXhfaWQ6IHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIGlkCisgKiBAb3V0X3RhcmdldDogdGhlIGRlc3RpbmF0aW9uICNHc3RHTFRleHR1cmVUYXJnZXQKKyAqIEBvdXRfdGV4X3R5cGU6IHRoZSBkZXN0aW5hdGlvbiAjR3N0VmlkZW9HTFRleHR1cmVUeXBlCisgKiBAb3V0X3dpZHRoOiB0aGUgZGVzdGluYXRpb24gd2lkdGgKKyAqIEBvdXRfaGVpZ2h0OiB0aGUgZGVzdGluYXRpb24gaGVpZ2h0CisgKgorICogQ29waWVzIHRoZSB0ZXh0dXJlIGluICNHc3RHTE1lbW9yeSBpbnRvIHRoZSB0ZXh0dXJlIHNwZWNpZmllZCBieSBAdGV4X2lkLAorICogQG91dF90YXJnZXQsIEBvdXRfdGV4X3R5cGUsIEBvdXRfd2lkdGggYW5kIEBvdXRfaGVpZ2h0LgorICoKKyAqIFJldHVybnM6IHdoZXRoZXIgdGhlIGNvcHkgc3VjY2VlZGVkLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworZ2Jvb2xlYW4KK2dzdF9nbF9tZW1vcnlfY29weV90ZXhpbWFnZSAoR3N0R0xNZW1vcnkgKiBzcmMsIGd1aW50IHRleF9pZCwKKyAgICBHc3RHTFRleHR1cmVUYXJnZXQgb3V0X3RhcmdldCwgR3N0VmlkZW9HTFRleHR1cmVUeXBlIG91dF90ZXhfdHlwZSwKKyAgICBnaW50IG91dF93aWR0aCwgZ2ludCBvdXRfaGVpZ2h0KQogewogICBjb25zdCBHc3RHTEZ1bmNzICpnbDsKLSAgR3N0R0xNZW1vcnlDb3B5UGFyYW1zICpjb3B5X3BhcmFtczsKLSAgR3N0R0xNZW1vcnkgKnNyYzsKLSAgZ3VpbnQgdGV4X2lkOwotICBHTHVpbnQgb3V0X3RleF90YXJnZXQ7Ci0gIEdMdWludCBmYm9JZDsKLSAgZ3NpemUgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0LCBvdXRfc3RyaWRlOwotICBHTHVpbnQgb3V0X2dsX2Zvcm1hdCwgb3V0X2dsX3R5cGU7Ci0gIEdMdWludCBpbl9nbF9mb3JtYXQsIGluX2dsX3R5cGU7Ci0gIGdzaXplIGluX3NpemUsIG91dF9zaXplOworICBndWludCBvdXRfZ2xfZm9ybWF0LCBvdXRfdGV4X3RhcmdldDsKKyAgR3N0TWFwSW5mbyBzaW5mbzsKKyAgZ3VpbnQgc3JjX3RleF9pZDsKKyAgZ3VpbnQgZmJvOwogCi0gIGNvcHlfcGFyYW1zID0gKEdzdEdMTWVtb3J5Q29weVBhcmFtcyAqKSBkYXRhOwotICBzcmMgPSBjb3B5X3BhcmFtcy0+c3JjOwotICB0ZXhfaWQgPSBjb3B5X3BhcmFtcy0+dGV4X2lkOwotICBvdXRfdGV4X3RhcmdldCA9IGNvcHlfcGFyYW1zLT50ZXhfdGFyZ2V0OwotICBvdXRfd2lkdGggPSBjb3B5X3BhcmFtcy0+b3V0X3dpZHRoOwotICBvdXRfaGVpZ2h0ID0gY29weV9wYXJhbXMtPm91dF9oZWlnaHQ7Ci0gIG91dF9zdHJpZGUgPSBjb3B5X3BhcmFtcy0+b3V0X3N0cmlkZTsKLQotICBnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKLSAgb3V0X2dsX2Zvcm1hdCA9IGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKGNvcHlfcGFyYW1zLT5vdXRfZm9ybWF0KTsKLSAgb3V0X2dsX3R5cGUgPSBHTF9VTlNJR05FRF9CWVRFOwotICBpZiAoY29weV9wYXJhbXMtPm91dF9mb3JtYXQgPT0gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0IxNikKLSAgICBvdXRfZ2xfdHlwZSA9IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OwotICBpbl9nbF9mb3JtYXQgPSBnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlIChzcmMtPnRleF90eXBlKTsKLSAgaW5fZ2xfdHlwZSA9IEdMX1VOU0lHTkVEX0JZVEU7Ci0gIGlmIChzcmMtPnRleF90eXBlID09IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTYpCi0gICAgaW5fZ2xfdHlwZSA9IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OworICBnbCA9IHNyYy0+bWVtLmNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgb3V0X3RleF90YXJnZXQgPSBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKG91dF90YXJnZXQpOworICBvdXRfZ2xfZm9ybWF0ID0gZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZSAob3V0X3RleF90eXBlKTsKIAogICBpZiAoIWdsLT5HZW5GcmFtZWJ1ZmZlcnMpIHsKLSAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IgKGNvbnRleHQsCi0gICAgICAgICJDb250ZXh0LCBFWFRfZnJhbWVidWZmZXJfb2JqZWN0IG5vdCBzdXBwb3J0ZWQiKTsKKyAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX0dMX01FTU9SWSwgIkZyYW1lYnVmZmVyIG9iamVjdHMgbm90IHN1cHBvcnRlZCIpOwogICAgIGdvdG8gZXJyb3I7CiAgIH0KIAotICBpbl9zaXplID0gR0xfTUVNX0hFSUdIVCAoc3JjKSAqIEdMX01FTV9TVFJJREUgKHNyYyk7Ci0gIG91dF9zaXplID0gb3V0X2hlaWdodCAqIG91dF9zdHJpZGU7Ci0KLSAgaWYgKGNvcHlfcGFyYW1zLT5yZXNwZWNpZnkpIHsKLSAgICBpZiAoaW5fc2l6ZSAhPSBvdXRfc2l6ZSkgewotICAgICAgR1NUX0VSUk9SICgiQ2Fubm90IGNvcHkgYmV0d2VlbiB0ZXh0dXJlcyB3aXRoIGJhY2tpbmcgZGF0YSBvZiBkaWZmZXJlbnQiCi0gICAgICAgICAgInNpemVzLiBpbnB1dCAlIiBHX0dTSVpFX0ZPUk1BVCAiIG91dHB1dCAlIiBHX0dTSVpFX0ZPUk1BVCwgaW5fc2l6ZSwKLSAgICAgICAgICBvdXRfc2l6ZSk7Ci0gICAgICBnb3RvIGVycm9yOwotICAgIH0KKyAgaWYgKCFnc3RfbWVtb3J5X21hcCAoR1NUX01FTU9SWV9DQVNUIChzcmMpLCAmc2luZm8sCisgICAgICAgICAgR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpIHsKKyAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX0dMX01FTU9SWSwKKyAgICAgICAgIkZhaWxlZCB0byBtYXAgc291cmNlIG1lbW9yeSBmb3IgY29weWluZyIpOworICAgIGdvdG8gZXJyb3I7CiAgIH0KKyAgc3JjX3RleF9pZCA9ICooZ3VpbnQgKikgc2luZm8uZGF0YTsKIAotICBpZiAoIXRleF9pZCkgewotICAgIGd1aW50IGludGVybmFsX2Zvcm1hdDsKLSAgICBndWludCBvdXRfZ2xfdHlwZTsKKyAgR1NUX0NBVF9MT0cgKEdTVF9DQVRfR0xfTUVNT1JZLCAiY29weWluZyBtZW1vcnkgJXAsIHRleCAldSBpbnRvICIKKyAgICAgICJ0ZXh0dXJlICVpIiwgc3JjLCBzcmNfdGV4X2lkLCB0ZXhfaWQpOwogCisgIC8qIEZJWE1FOiB0cnkgYW5kIGF2b2lkIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIGZibydzIGV2ZXJ5IGNvcHkuLi4gKi8KKyAgLyogY3JlYXRlIGEgZnJhbWVidWZmZXIgb2JqZWN0ICovCisgIGdsLT5HZW5GcmFtZWJ1ZmZlcnMgKDEsICZmYm8pOworICBnbC0+QmluZEZyYW1lYnVmZmVyIChHTF9GUkFNRUJVRkZFUiwgZmJvKTsKKworICBnbC0+RnJhbWVidWZmZXJUZXh0dXJlMkQgKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwKKyAgICAgIGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoc3JjLT50ZXhfdGFyZ2V0KSwgc3JjX3RleF9pZCwgMCk7CisKKy8vICBpZiAoIWdzdF9nbF9jb250ZXh0X2NoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1cyAoc3JjLT5jb250ZXh0KSkKKy8vICAgIGdvdG8gZmJvX2Vycm9yOworCisgIGdsLT5CaW5kVGV4dHVyZSAob3V0X3RleF90YXJnZXQsIHRleF9pZCk7CisgIGdzdF9nbF9xdWVyeV9zdGFydF9sb2cgKEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUIChzcmMpLT5xdWVyeSwKKyAgICAgIEdTVF9DQVRfR0xfTUVNT1JZLCBHU1RfTEVWRUxfTE9HLCBOVUxMLCAiJXMiLCAiQ29weVRleEltYWdlMkQgdG9vayIpOworICBnbC0+Q29weVRleEltYWdlMkQgKG91dF90ZXhfdGFyZ2V0LCAwLCBvdXRfZ2xfZm9ybWF0LCAwLCAwLCBvdXRfd2lkdGgsCisgICAgICBvdXRfaGVpZ2h0LCAwKTsKKyAgZ3N0X2dsX3F1ZXJ5X2VuZCAoR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QgKHNyYyktPnF1ZXJ5KTsKKworICBnbC0+QmluZFRleHR1cmUgKG91dF90ZXhfdGFyZ2V0LCAwKTsKKyAgZ2wtPkJpbmRGcmFtZWJ1ZmZlciAoR0xfRlJBTUVCVUZGRVIsIDApOworCisgIGdsLT5EZWxldGVGcmFtZWJ1ZmZlcnMgKDEsICZmYm8pOworCisgIGdzdF9tZW1vcnlfdW5tYXAgKEdTVF9NRU1PUllfQ0FTVCAoc3JjKSwgJnNpbmZvKTsKKworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKK19nbF90ZXhfY29weV90aHJlYWQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGdwb2ludGVyIGRhdGEpCit7CisgIEdzdEdMTWVtb3J5Q29weVBhcmFtcyAqY29weV9wYXJhbXM7CisKKyAgY29weV9wYXJhbXMgPSAoR3N0R0xNZW1vcnlDb3B5UGFyYW1zICopIGRhdGE7CisKKyAgaWYgKCFjb3B5X3BhcmFtcy0+dGV4X2lkKSB7CisgICAgZ3VpbnQgaW50ZXJuYWxfZm9ybWF0LCBvdXRfZ2xfZm9ybWF0LCBvdXRfZ2xfdHlwZSwgb3V0X3RleF90YXJnZXQ7CisKKyAgICBvdXRfdGV4X3RhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoY29weV9wYXJhbXMtPnRleF90YXJnZXQpOworICAgIG91dF9nbF9mb3JtYXQgPQorICAgICAgICBnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlIChjb3B5X3BhcmFtcy0+c3JjLT50ZXhfdHlwZSk7CiAgICAgb3V0X2dsX3R5cGUgPSBHTF9VTlNJR05FRF9CWVRFOwogICAgIGlmIChjb3B5X3BhcmFtcy0+b3V0X2Zvcm1hdCA9PSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2KQogICAgICAgb3V0X2dsX3R5cGUgPSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNTsKQEAgLTk4Niw0MzcgKzY4MSwyMjQgQEAKICAgICAgICAgZ3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlIChjb250ZXh0LCBvdXRfZ2xfZm9ybWF0LAogICAgICAgICBvdXRfZ2xfdHlwZSk7CiAKLSAgICB0ZXhfaWQgPQotICAgICAgICBfbmV3X3RleHR1cmUgKGNvbnRleHQsIG91dF90ZXhfdGFyZ2V0LCBpbnRlcm5hbF9mb3JtYXQsIG91dF9nbF9mb3JtYXQsCi0gICAgICAgIG91dF9nbF90eXBlLCBjb3B5X3BhcmFtcy0+b3V0X3dpZHRoLCBjb3B5X3BhcmFtcy0+b3V0X2hlaWdodCk7CisgICAgY29weV9wYXJhbXMtPnRleF9pZCA9CisgICAgICAgIF9uZXdfdGV4dHVyZSAoY29udGV4dCwgb3V0X3RleF90YXJnZXQsCisgICAgICAgIGludGVybmFsX2Zvcm1hdCwgb3V0X2dsX2Zvcm1hdCwgb3V0X2dsX3R5cGUsIGNvcHlfcGFyYW1zLT5vdXRfd2lkdGgsCisgICAgICAgIGNvcHlfcGFyYW1zLT5vdXRfaGVpZ2h0KTsKICAgfQogCi0gIGlmICghdGV4X2lkKSB7Ci0gICAgR1NUX1dBUk5JTkcgKCJDb3VsZCBub3QgY3JlYXRlIEdMIHRleHR1cmUgd2l0aCBjb250ZXh0OiVwIiwgY29udGV4dCk7Ci0gIH0KLQotICBHU1RfTE9HICgiY29weWluZyBtZW1vcnkgJXAsIHRleCAldSBpbnRvIHRleHR1cmUgJWkiLAotICAgICAgc3JjLCBzcmMtPnRleF9pZCwgdGV4X2lkKTsKLQotICAvKiBGSVhNRTogdHJ5IGFuZCBhdm9pZCBjcmVhdGluZyBhbmQgZGVzdHJveWluZyBmYm8ncyBldmVyeSBjb3B5Li4uICovCi0gIC8qIGNyZWF0ZSBhIGZyYW1lYnVmZmVyIG9iamVjdCAqLwotICBnbC0+R2VuRnJhbWVidWZmZXJzICgxLCAmZmJvSWQpOwotICBnbC0+QmluZEZyYW1lYnVmZmVyIChHTF9GUkFNRUJVRkZFUiwgZmJvSWQpOwotCi0gIGdsLT5GcmFtZWJ1ZmZlclRleHR1cmUyRCAoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLAotICAgICAgc3JjLT50ZXhfdGFyZ2V0LCBzcmMtPnRleF9pZCwgMCk7Ci0KLS8vICBpZiAoIWdzdF9nbF9jb250ZXh0X2NoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1cyAoc3JjLT5jb250ZXh0KSkKLS8vICAgIGdvdG8gZmJvX2Vycm9yOwotCi0gIGdsLT5CaW5kVGV4dHVyZSAob3V0X3RleF90YXJnZXQsIHRleF9pZCk7Ci0gIGlmIChjb3B5X3BhcmFtcy0+cmVzcGVjaWZ5KSB7Ci0gICAgaWYgKCFnbC0+R2VuQnVmZmVycyB8fCAhc3JjLT5tZW0uaWQpIHsKLSAgICAgIGdzdF9nbF9jb250ZXh0X3NldF9lcnJvciAoY29udGV4dCwgIkNhbm5vdCByZWludGVycHJldCB0ZXh0dXJlIGNvbnRlbnRzICIKLSAgICAgICAgICAid2l0aG91dCBwaXhlbCBidWZmZXIgb2JqZWN0cyIpOwotICAgICAgZ2wtPkJpbmRUZXh0dXJlIChvdXRfdGV4X3RhcmdldCwgMCk7Ci0gICAgICBnb3RvIGZib19lcnJvcjsKLSAgICB9Ci0KLSAgICBpZiAoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoY29udGV4dCkgJiBHU1RfR0xfQVBJX0dMRVMyCi0gICAgICAgICYmIChpbl9nbF9mb3JtYXQgIT0gR0xfUkdCQSB8fCBpbl9nbF90eXBlICE9IEdMX1VOU0lHTkVEX0JZVEUpKSB7Ci0gICAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IgKGNvbnRleHQsICJDYW5ub3QgY29weSBub24gUkdCQS9VTlNJR05FRF9CWVRFICIKLSAgICAgICAgICAidGV4dHVyZXMgb24gR0xFUzIiKTsKLSAgICAgIGdsLT5CaW5kVGV4dHVyZSAob3V0X3RleF90YXJnZXQsIDApOwotICAgICAgZ290byBmYm9fZXJyb3I7Ci0gICAgfQotCi0gICAgR1NUX1RSQUNFICgiY29weWluZyB0ZXh0dXJlIGRhdGEgd2l0aCBzaXplIG9mICV1KiV1KiV1IiwKLSAgICAgICAgX2dsX2Zvcm1hdF90eXBlX25fYnl0ZXMgKGluX2dsX2Zvcm1hdCwgaW5fZ2xfdHlwZSksIHNyYy0+dGV4X3dpZHRoLAotICAgICAgICBHTF9NRU1fSEVJR0hUIChzcmMpKTsKLQotICAgIC8qIGNvcHkgdGV4ICovCi0gICAgZ2wtPkJpbmRCdWZmZXIgKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBzcmMtPm1lbS5pZCk7Ci0gICAgZ2wtPkJ1ZmZlckRhdGEgKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBpbl9zaXplLCBOVUxMLCBHTF9TVFJFQU1fQ09QWSk7Ci0gICAgZ2wtPlJlYWRQaXhlbHMgKDAsIDAsIHNyYy0+dGV4X3dpZHRoLCBHTF9NRU1fSEVJR0hUIChzcmMpLCBpbl9nbF9mb3JtYXQsCi0gICAgICAgIGluX2dsX3R5cGUsIDApOwotICAgIGdsLT5CaW5kQnVmZmVyIChHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCk7Ci0KLSAgICBnbC0+QmluZEJ1ZmZlciAoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgc3JjLT5tZW0uaWQpOwotICAgIGdsLT5UZXhTdWJJbWFnZTJEIChvdXRfdGV4X3RhcmdldCwgMCwgMCwgMCwgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0LAotICAgICAgICBvdXRfZ2xfZm9ybWF0LCBvdXRfZ2xfdHlwZSwgMCk7Ci0KLSAgICBnbC0+QmluZEJ1ZmZlciAoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCk7Ci0gIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGRpZmZlcmVudCBzaXplcyAqLwotICAgIGdsLT5Db3B5VGV4SW1hZ2UyRCAob3V0X3RleF90YXJnZXQsIDAsIG91dF9nbF9mb3JtYXQsIDAsIDAsIG91dF93aWR0aCwKLSAgICAgICAgb3V0X2hlaWdodCwgMCk7Ci0gIH0KLQotICBnbC0+QmluZFRleHR1cmUgKG91dF90ZXhfdGFyZ2V0LCAwKTsKLSAgZ2wtPkJpbmRGcmFtZWJ1ZmZlciAoR0xfRlJBTUVCVUZGRVIsIDApOwotCi0gIGdsLT5EZWxldGVGcmFtZWJ1ZmZlcnMgKDEsICZmYm9JZCk7Ci0KLSAgY29weV9wYXJhbXMtPnRleF9pZCA9IHRleF9pZDsKLSAgY29weV9wYXJhbXMtPnJlc3VsdCA9IFRSVUU7Ci0KLSAgcmV0dXJuOwotCi0vKiBFUlJPUlMgKi8KLWZib19lcnJvcjoKLSAgewotICAgIGdsLT5EZWxldGVGcmFtZWJ1ZmZlcnMgKDEsICZmYm9JZCk7Ci0KLSAgICBjb3B5X3BhcmFtcy0+dGV4X2lkID0gMDsKLSAgICBjb3B5X3BhcmFtcy0+cmVzdWx0ID0gRkFMU0U7Ci0gICAgcmV0dXJuOwotICB9Ci0KLWVycm9yOgotICB7Ci0gICAgY29weV9wYXJhbXMtPnJlc3VsdCA9IEZBTFNFOwotICAgIHJldHVybjsKLSAgfQorICBjb3B5X3BhcmFtcy0+cmVzdWx0ID0gZ3N0X2dsX21lbW9yeV9jb3B5X3RleGltYWdlIChjb3B5X3BhcmFtcy0+c3JjLAorICAgICAgY29weV9wYXJhbXMtPnRleF9pZCwgY29weV9wYXJhbXMtPnRleF90YXJnZXQsIGNvcHlfcGFyYW1zLT50ZXhfdHlwZSwKKyAgICAgIGNvcHlfcGFyYW1zLT5vdXRfd2lkdGgsIGNvcHlfcGFyYW1zLT5vdXRfaGVpZ2h0KTsKIH0KIAogc3RhdGljIEdzdE1lbW9yeSAqCi1fZ2xfbWVtX2NvcHkgKEdzdEdMTWVtb3J5ICogc3JjLCBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSkKK19kZWZhdWx0X2dsX3RleF9jb3B5IChHc3RHTE1lbW9yeSAqIHNyYywgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCiB7Ci0gIEdzdEdMQWxsb2NhdG9yICphbGxvY2F0b3IgPSAoR3N0R0xBbGxvY2F0b3IgKikgc3JjLT5tZW0ubWVtLmFsbG9jYXRvcjsKLSAgR3N0TWVtb3J5ICpyZXQgPSBOVUxMOworICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtcyA9IHsgMCwgR1NUX01FTU9SWV9DQVNUIChzcmMpLT5hbGlnbiwgMCwgMCB9OworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKmJhc2VfbWVtX2FsbG9jYXRvcjsKKyAgR3N0QWxsb2NhdG9yICphbGxvY2F0b3I7CisgIEdzdEdMTWVtb3J5ICpkZXN0ID0gTlVMTDsKKworICBhbGxvY2F0b3IgPSBHU1RfTUVNT1JZX0NBU1QgKHNyYyktPmFsbG9jYXRvcjsKKyAgYmFzZV9tZW1fYWxsb2NhdG9yID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqKSBhbGxvY2F0b3I7CisKKyAgaWYgKHNyYy0+dGV4X3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKSB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9HTF9NRU1PUlksICJDYW5ub3QgY29weSBFeHRlcm5hbCBPRVMgdGV4dHVyZXMiKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQogCiAgIC8qIElmIG5vdCBkb2luZyBhIGZ1bGwgY29weSwgdGhlbiBjb3B5IHRvIHN5c21lbSwgdGhlIDJEIHJlcHJlc2VudGlvbiBvZiB0aGUKICAgICogdGV4dHVyZSB3b3VsZCBiZWNvbWUgd3JvbmcgKi8KLSAgaWYgKG9mZnNldCA+IDAgfHwgc2l6ZSA8IHNyYy0+bWVtLm1lbS5zaXplKSB7Ci0gICAgcmV0ID0gYWxsb2NhdG9yLT5mYWxsYmFja19tZW1fY29weSAoJnNyYy0+bWVtLm1lbSwgb2Zmc2V0LCBzaXplKTsKLSAgfSBlbHNlIGlmIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChzcmMsIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEKSkgewotICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgcGFyYW1zID0geyAwLCBzcmMtPm1lbS5tZW0uYWxpZ24sIDAsIDAgfTsKLSAgICBHc3RHTE1lbW9yeSAqZGVzdDsKLQotICAgIGRlc3QgPSBfZ2xfbWVtX25ldyAoc3JjLT5tZW0ubWVtLmFsbG9jYXRvciwgTlVMTCwgc3JjLT5tZW0uY29udGV4dCwgJnBhcmFtcywKLSAgICAgICAgJnNyYy0+aW5mbywgJnNyYy0+dmFsaWduLCBzcmMtPnBsYW5lLCBOVUxMLCBOVUxMKTsKLSAgICBkZXN0ID0gKEdzdEdMTWVtb3J5ICopIGdzdF9nbF9iYXNlX2J1ZmZlcl9hbGxvY19kYXRhICgoR3N0R0xCYXNlQnVmZmVyICopCi0gICAgICAgIGRlc3QpOwotCi0gICAgaWYgKGRlc3QgPT0gTlVMTCkgewotICAgICAgR1NUX1dBUk5JTkcgKCJDb3VsZCBub3QgY29weSBHTCBNZW1vcnkiKTsKLSAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICBtZW1jcHkgKGRlc3QtPm1lbS5kYXRhLCAoZ3VpbnQ4ICopIHNyYy0+bWVtLmRhdGEgKyBzcmMtPm1lbS5tZW0ub2Zmc2V0LAotICAgICAgICBzcmMtPm1lbS5tZW0uc2l6ZSk7Ci0gICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChkZXN0LCBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCk7Ci0gICAgZGVzdC0+dHJhbnNmZXJfc3RhdGUgfD0gR1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRDsKLSAgICByZXQgPSAoR3N0TWVtb3J5ICopIGRlc3Q7Ci0gIH0gZWxzZSB7Ci0gICAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXMgPSB7IDAsIHNyYy0+bWVtLm1lbS5hbGlnbiwgMCwgMCB9OwotICAgIEdzdEdMTWVtb3J5Q29weVBhcmFtcyBjb3B5X3BhcmFtczsKLSAgICBHc3RHTE1lbW9yeSAqZGVzdDsKLQotICAgIGNvcHlfcGFyYW1zLnNyYyA9IHNyYzsKLSAgICBjb3B5X3BhcmFtcy50ZXhfaWQgPSAwOwotICAgIGNvcHlfcGFyYW1zLm91dF9mb3JtYXQgPSBzcmMtPnRleF90eXBlOwotICAgIGNvcHlfcGFyYW1zLnRleF90YXJnZXQgPSBzcmMtPnRleF90YXJnZXQ7Ci0gICAgY29weV9wYXJhbXMub3V0X3dpZHRoID0gc3JjLT50ZXhfd2lkdGg7Ci0gICAgY29weV9wYXJhbXMub3V0X2hlaWdodCA9IEdMX01FTV9IRUlHSFQgKHNyYyk7Ci0gICAgY29weV9wYXJhbXMub3V0X3N0cmlkZSA9IEdMX01FTV9TVFJJREUgKHNyYyk7Ci0gICAgY29weV9wYXJhbXMucmVzcGVjaWZ5ID0gRkFMU0U7Ci0KLSAgICBfZ2xfbWVtX2NvcHlfdGhyZWFkIChzcmMtPm1lbS5jb250ZXh0LCAmY29weV9wYXJhbXMpOwotCi0gICAgaWYgKCFjb3B5X3BhcmFtcy5yZXN1bHQpIHsKLSAgICAgIEdTVF9XQVJOSU5HICgiQ291bGQgbm90IGNvcHkgR0wgTWVtb3J5Iik7Ci0gICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgZGVzdCA9IGdfc2xpY2VfbmV3MCAoR3N0R0xNZW1vcnkpOwotICAgIC8qIGRvbid0IGNyZWF0ZSBvdXIgb3duIHRleHR1cmUgKi8KLSAgICBkZXN0LT50ZXh0dXJlX3dyYXBwZWQgPSBUUlVFOwotICAgIF9nbF9tZW1faW5pdCAoZGVzdCwgc3JjLT5tZW0ubWVtLmFsbG9jYXRvciwgTlVMTCwgc3JjLT5tZW0uY29udGV4dCwgJnBhcmFtcywKLSAgICAgICAgJnNyYy0+aW5mbywgJnNyYy0+dmFsaWduLCBzcmMtPnBsYW5lLCBOVUxMLCBOVUxMKTsKLSAgICBkZXN0LT50ZXh0dXJlX3dyYXBwZWQgPSBGQUxTRTsKLQotICAgIGRlc3QtPnRleF9pZCA9IGNvcHlfcGFyYW1zLnRleF9pZDsKLSAgICBkZXN0LT50ZXhfdGFyZ2V0ID0gY29weV9wYXJhbXMudGV4X3RhcmdldDsKLSAgICBkZXN0ID0gKEdzdEdMTWVtb3J5ICopIGdzdF9nbF9iYXNlX2J1ZmZlcl9hbGxvY19kYXRhICgoR3N0R0xCYXNlQnVmZmVyICopCi0gICAgICAgIGRlc3QpOwotICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAoZGVzdCwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCk7Ci0gICAgZGVzdC0+dHJhbnNmZXJfc3RhdGUgfD0gR1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEOwotICAgIHJldCA9IChHc3RNZW1vcnkgKikgZGVzdDsKKyAgaWYgKG9mZnNldCA+IDAgfHwgc2l6ZSA8IEdTVF9NRU1PUllfQ0FTVCAoc3JjKS0+c2l6ZSkgeworICAgIHJldHVybiBiYXNlX21lbV9hbGxvY2F0b3ItPmZhbGxiYWNrX21lbV9jb3B5IChHU1RfTUVNT1JZX0NBU1QgKHNyYyksIG9mZnNldCwKKyAgICAgICAgc2l6ZSk7CiAgIH0KIAotZG9uZToKLSAgcmV0dXJuIHJldDsKKyAgZGVzdCA9IGdfbmV3MCAoR3N0R0xNZW1vcnksIDEpOworCisgIGdzdF9nbF9tZW1vcnlfaW5pdCAoZGVzdCwgYWxsb2NhdG9yLCBOVUxMLCBzcmMtPm1lbS5jb250ZXh0LCBzcmMtPnRleF90YXJnZXQsCisgICAgICAmcGFyYW1zLCAmc3JjLT5pbmZvLCBzcmMtPnBsYW5lLCAmc3JjLT52YWxpZ24sIE5VTEwsIE5VTEwpOworCisgIGlmIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChzcmMsIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCkpIHsKKyAgICBpZiAoIWdzdF9nbF9iYXNlX21lbW9yeV9tZW1jcHkgKChHc3RHTEJhc2VNZW1vcnkgKikgc3JjLAorICAgICAgICAgICAgKEdzdEdMQmFzZU1lbW9yeSAqKSBkZXN0LCBvZmZzZXQsIHNpemUpKSB7CisgICAgICBHU1RfQ0FUX1dBUk5JTkcgKEdTVF9DQVRfR0xfTUVNT1JZLCAiQ291bGQgbm90IGNvcHkgR0wgTWVtb3J5Iik7CisgICAgICBnc3RfbWVtb3J5X3VucmVmIChHU1RfTUVNT1JZX0NBU1QgKGRlc3QpKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBHc3RNYXBJbmZvIGRpbmZvOworCisgICAgaWYgKCFnc3RfbWVtb3J5X21hcCAoR1NUX01FTU9SWV9DQVNUIChkZXN0KSwgJmRpbmZvLAorICAgICAgICAgICAgR1NUX01BUF9XUklURSB8IEdTVF9NQVBfR0wpKSB7CisgICAgICBHU1RfQ0FUX1dBUk5JTkcgKEdTVF9DQVRfR0xfTUVNT1JZLAorICAgICAgICAgICJGYWlsZWQgbm90IG1hcCBkZXN0aW5hdGlvbiAiICJmb3Igd3JpdGluZyIpOworICAgICAgZ3N0X21lbW9yeV91bnJlZiAoR1NUX01FTU9SWV9DQVNUIChkZXN0KSk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIWdzdF9nbF9tZW1vcnlfY29weV9pbnRvICgoR3N0R0xNZW1vcnkgKikgc3JjLAorICAgICAgICAgICAgKChHc3RHTE1lbW9yeSAqKSBkZXN0KS0+dGV4X2lkLCBzcmMtPnRleF90YXJnZXQsCisgICAgICAgICAgICBzcmMtPnRleF90eXBlLCBzcmMtPnRleF93aWR0aCwgR0xfTUVNX0hFSUdIVCAoc3JjKSkpIHsKKyAgICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9NRU1PUlksICJDb3VsZCBub3QgY29weSBHTCBNZW1vcnkiKTsKKyAgICAgIGdzdF9tZW1vcnlfdW5tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZGVzdCksICZkaW5mbyk7CisgICAgICBnc3RfbWVtb3J5X3VucmVmIChHU1RfTUVNT1JZX0NBU1QgKGRlc3QpKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGdzdF9tZW1vcnlfdW5tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZGVzdCksICZkaW5mbyk7CisgIH0KKworICByZXR1cm4gKEdzdE1lbW9yeSAqKSBkZXN0OwogfQogCiBzdGF0aWMgR3N0TWVtb3J5ICoKLV9nbF9tZW1fYWxsb2MgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgZ3NpemUgc2l6ZSwKK19nbF90ZXhfY29weSAoR3N0R0xNZW1vcnkgKiBzcmMsIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQoreworICBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKKworICBhbGxvY19jbGFzcyA9IEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUyAoc3JjLT5tZW0ubWVtLmFsbG9jYXRvcik7CisKKyAgaWYgKHNyYy0+dGV4X3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKSB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9HTF9NRU1PUlksICJDYW5ub3QgY29weSBFeHRlcm5hbCBPRVMgdGV4dHVyZXMiKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChhbGxvY19jbGFzcy0+Y29weSwgTlVMTCk7CisgIHJldHVybiAoR3N0TWVtb3J5ICopIGFsbG9jX2NsYXNzLT5jb3B5IChHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVCAoc3JjKSwgb2Zmc2V0LAorICAgICAgc2l6ZSk7Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX2dsX3RleF9hbGxvYyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBnc2l6ZSBzaXplLAogICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpCiB7Ci0gIGdfd2FybmluZyAoInVzZSBnc3RfZ2xfbWVtb3J5X2FsbG9jICgpIHRvIGFsbG9jYXRlIGZyb20gdGhpcyAiCi0gICAgICAiR3N0R0xNZW1vcnkgYWxsb2NhdG9yIik7CisgIGdfd2FybmluZyAoIlVzZSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgdG8gYWxsb2NhdGUgZnJvbSB0aGlzIGFsbG9jYXRvciIpOwogCiAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgdm9pZAotX2dsX21lbV9kZXN0cm95IChHc3RHTE1lbW9yeSAqIGdsX21lbSkKK19nbF90ZXhfZGVzdHJveSAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pCiB7CiAgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gZ2xfbWVtLT5tZW0uY29udGV4dC0+Z2xfdnRhYmxlOwogCiAgIGlmIChnbF9tZW0tPnRleF9pZCAmJiAhZ2xfbWVtLT50ZXh0dXJlX3dyYXBwZWQpCiAgICAgZ2wtPkRlbGV0ZVRleHR1cmVzICgxLCAmZ2xfbWVtLT50ZXhfaWQpOworfQogCi0gIGlmIChnbF9tZW0tPm1lbS5pZCkKLSAgICBnbC0+RGVsZXRlQnVmZmVycyAoMSwgJmdsX21lbS0+bWVtLmlkKTsKK3N0YXRpYyBHc3RHTE1lbW9yeSAqCitfZGVmYXVsdF9nbF90ZXhfYWxsb2MgKEdzdEdMTWVtb3J5QWxsb2NhdG9yICogYWxsb2NhdG9yLAorICAgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBndWludCBhbGxvY19mbGFncyA9IHBhcmFtcy0+cGFyZW50LmFsbG9jX2ZsYWdzOworICBHc3RHTE1lbW9yeSAqbWVtOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChhbGxvY19mbGFncyAmIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPLAorICAgICAgTlVMTCk7CisKKyAgbWVtID0gZ19uZXcwIChHc3RHTE1lbW9yeSwgMSk7CisKKyAgaWYgKGFsbG9jX2ZsYWdzICYgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9HUFVfSEFORExFKSB7CisgICAgbWVtLT50ZXhfaWQgPSBwYXJhbXMtPnBhcmVudC5nbF9oYW5kbGU7CisgICAgbWVtLT50ZXh0dXJlX3dyYXBwZWQgPSBUUlVFOworICB9CisKKyAgZ3N0X2dsX21lbW9yeV9pbml0IChtZW0sIEdTVF9BTExPQ0FUT1JfQ0FTVCAoYWxsb2NhdG9yKSwgTlVMTCwKKyAgICAgIHBhcmFtcy0+cGFyZW50LmNvbnRleHQsIHBhcmFtcy0+dGFyZ2V0LCBwYXJhbXMtPnBhcmVudC5hbGxvY19wYXJhbXMsCisgICAgICBwYXJhbXMtPnZfaW5mbywgcGFyYW1zLT5wbGFuZSwgcGFyYW1zLT52YWxpZ24sIHBhcmFtcy0+cGFyZW50LnVzZXJfZGF0YSwKKyAgICAgIHBhcmFtcy0+cGFyZW50Lm5vdGlmeSk7CisKKyAgaWYgKGFsbG9jX2ZsYWdzICYgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9HUFVfSEFORExFKSB7CisgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKTsKKyAgfQorICBpZiAoYWxsb2NfZmxhZ3MgJiBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX1NZU01FTSkgeworICAgIG1lbS0+bWVtLmRhdGEgPSBwYXJhbXMtPnBhcmVudC53cmFwcGVkX2RhdGE7CisgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCk7CisgIH0KKworICByZXR1cm4gbWVtOwogfQogCiBzdGF0aWMgdm9pZAotX2dsX21lbV9mcmVlIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIEdzdE1lbW9yeSAqIG1lbSkKK2dzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2NsYXNzX2luaXQgKEdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKiBrbGFzcykKIHsKLSAgR3N0R0xNZW1vcnkgKmdsX21lbSA9IChHc3RHTE1lbW9yeSAqKSBtZW07Ci0KLSAgR1NUX0FMTE9DQVRPUl9DTEFTUyAoZ3N0X2dsX2FsbG9jYXRvcl9wYXJlbnRfY2xhc3MpLT5mcmVlIChhbGxvY2F0b3IsIG1lbSk7Ci0KLSAgaWYgKGdsX21lbS0+bm90aWZ5KQotICAgIGdsX21lbS0+bm90aWZ5IChnbF9tZW0tPnVzZXJfZGF0YSk7Ci0KLSAgZ19zbGljZV9mcmVlIChHc3RHTE1lbW9yeSwgZ2xfbWVtKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nbF9hbGxvY2F0b3JfY2xhc3NfaW5pdCAoR3N0R0xBbGxvY2F0b3JDbGFzcyAqIGtsYXNzKQotewotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyAqZ2xfYmFzZTsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKmdsX2Jhc2U7CiAgIEdzdEFsbG9jYXRvckNsYXNzICphbGxvY2F0b3JfY2xhc3M7CiAKLSAgZ2xfYmFzZSA9IChHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyAqKSBrbGFzczsKKyAgZ2xfYmFzZSA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyAqKSBrbGFzczsKICAgYWxsb2NhdG9yX2NsYXNzID0gKEdzdEFsbG9jYXRvckNsYXNzICopIGtsYXNzOwogCi0gIGdsX2Jhc2UtPmNyZWF0ZSA9IChHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbikgX2dsX21lbV9jcmVhdGU7Ci0gIGdsX2Jhc2UtPm1hcF9idWZmZXIgPQotICAgICAgKEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvck1hcEJ1ZmZlckZ1bmN0aW9uKSBfZ2xfbWVtX21hcF9idWZmZXI7Ci0gIGdsX2Jhc2UtPnVubWFwX2J1ZmZlciA9Ci0gICAgICAoR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yVW5tYXBCdWZmZXJGdW5jdGlvbikgX2dsX21lbV91bm1hcF9idWZmZXI7Ci0gIGdsX2Jhc2UtPmNvcHkgPSAoR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ29weUZ1bmN0aW9uKSBfZ2xfbWVtX2NvcHk7Ci0gIGdsX2Jhc2UtPmRlc3Ryb3kgPSAoR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uKSBfZ2xfbWVtX2Rlc3Ryb3k7CisgIGtsYXNzLT5tYXAgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24pIF9kZWZhdWx0X2dsX3RleF9tYXA7CisgIGtsYXNzLT51bm1hcCA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uKSBfZGVmYXVsdF9nbF90ZXhfdW5tYXA7CisgIGtsYXNzLT5jb3B5ID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbikgX2RlZmF1bHRfZ2xfdGV4X2NvcHk7CiAKLSAgYWxsb2NhdG9yX2NsYXNzLT5hbGxvYyA9IF9nbF9tZW1fYWxsb2M7Ci0gIGFsbG9jYXRvcl9jbGFzcy0+ZnJlZSA9IF9nbF9tZW1fZnJlZTsKKyAgZ2xfYmFzZS0+YWxsb2MgPQorICAgICAgKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb24pIF9kZWZhdWx0X2dsX3RleF9hbGxvYzsKKyAgZ2xfYmFzZS0+Y3JlYXRlID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uKSBfZ2xfdGV4X2NyZWF0ZTsKKyAgZ2xfYmFzZS0+bWFwID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uKSBfZ2xfdGV4X21hcDsKKyAgZ2xfYmFzZS0+dW5tYXAgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbikgX2dsX3RleF91bm1hcDsKKyAgZ2xfYmFzZS0+Y29weSA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb24pIF9nbF90ZXhfY29weTsKKyAgZ2xfYmFzZS0+ZGVzdHJveSA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24pIF9nbF90ZXhfZGVzdHJveTsKKworICBhbGxvY2F0b3JfY2xhc3MtPmFsbG9jID0gX2dsX3RleF9hbGxvYzsKIH0KIAogc3RhdGljIHZvaWQKLWdzdF9nbF9hbGxvY2F0b3JfaW5pdCAoR3N0R0xBbGxvY2F0b3IgKiBhbGxvY2F0b3IpCitnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9pbml0IChHc3RHTE1lbW9yeUFsbG9jYXRvciAqIGFsbG9jYXRvcikKIHsKICAgR3N0QWxsb2NhdG9yICphbGxvYyA9IEdTVF9BTExPQ0FUT1JfQ0FTVCAoYWxsb2NhdG9yKTsKIAotICAvKiBLZWVwIHRoZSBmYWxsYmFjayBjb3B5IGZ1bmN0aW9uIGFyb3VuZCwgd2Ugd2lsbCBuZWVkIGl0IHdoZW4gY29weWluZyB3aXRoCi0gICAqIGF0IGFuIG9mZnNldCBvciBzbWFsbGVyIHNpemUgKi8KLSAgYWxsb2NhdG9yLT5mYWxsYmFja19tZW1fY29weSA9IGFsbG9jLT5tZW1fY29weTsKLQotICBhbGxvYy0+bWVtX3R5cGUgPSBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUjsKKyAgYWxsb2MtPm1lbV90eXBlID0gR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRTsKIAogICBHU1RfT0JKRUNUX0ZMQUdfU0VUIChhbGxvY2F0b3IsIEdTVF9BTExPQ0FUT1JfRkxBR19DVVNUT01fQUxMT0MpOwogfQogCiAvKioKLSAqIGdzdF9nbF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmU6CisgKiBnc3RfZ2xfbWVtb3J5X2NvcHlfaW50bzoKICAqIEBnbF9tZW06YSAjR3N0R0xNZW1vcnkKICAqIEB0ZXhfaWQ6T3BlbkdMIHRleHR1cmUgaWQKLSAqIEB0ZXhfdHlwZTogYSAjR3N0VmlkZW9HTFRleHR1cmVUeXBlCisgKiBAdGFyZ2V0OiB0aGUgI0dzdEdMVGV4dHVyZVRhcmdldAorICogQHRleF90eXBlOiB0aGUgI0dzdFZpZGVvR0xUZXh0dXJlVHlwZQogICogQHdpZHRoOiB3aWR0aCBvZiBAdGV4X2lkCiAgKiBAaGVpZ2h0OiBoZWlnaHQgb2YgQHRleF9pZAotICogQHN0cmlkZTogc3RyaWRlIG9mIHRoZSBiYWNraW5nIHRleHR1cmUgZGF0YQotICogQHJlc3BlY2lmeTogd2hldGhlciB0byBjb3B5IHRoZSBkYXRhIG9yIGNvcHkgcGVyIHRleGVsCiAgKgogICogQ29waWVzIEBnbF9tZW0gaW50byB0aGUgdGV4dHVyZSBzcGVjZmlmaWVkIGJ5IEB0ZXhfaWQuICBUaGUgZm9ybWF0IG9mIEB0ZXhfaWQKICAqIGlzIHNwZWNpZmllZCBieSBAdGV4X3R5cGUsIEB3aWR0aCBhbmQgQGhlaWdodC4KICAqCi0gKiBJZiBAcmVzcGVjaWZ5IGlzICVUUlVFLCB0aGVuIHRoZSBjb3B5IGlzIHBlcmZvcm1lZCBpbiB0ZXJtcyBvZiB0aGUgdGV4dHVyZQotICogZGF0YS4gIFRoaXMgaXMgdXNlZnVsIGZvciBzcGxpdHRpbmcgUkdCQSB0ZXh0dXJlcyBpbnRvIFJHIG9yIFIgdGV4dHVyZXMgb3IKLSAqIHZpY2UgdmVyc2EuIFRoZSByZXF1aXJlbWVudCBmb3IgdGhpcyB0byBzdWNjZWVkIGlzIHRoYXQgdGhlIGJhY2tpbmcgdGV4dHVyZQotICogZGF0YSBtdXN0IGJlIHRoZSBzYW1lIHNpemUsIGkuZS4gc2F5IGEgUkdCQTggdGV4dHVyZSBpcyBjb252ZXJ0ZWQgaW50byBhIFJHOAotICogdGV4dHVyZSwgdGhlbiB0aGUgUkcgdGV4dHVyZSBtdXN0IGhhdmUgdHdpY2UgYXMgbWFueSBwaXhlbHMgYXZhaWxhYmxlIGZvcgotICogb3V0cHV0IGFzIHRoZSBSR0JBIHRleHR1cmUuCi0gKgotICogT3RoZXJ3aXNlLCBpZiBAcmVzcGVjaWZ5IGlzICVGQUxTRSwgdGhlbiB0aGUgY29weSBpcyBwZXJmb3JtZWQgcGVyIHRleGVsCi0gKiB1c2luZyBnbENvcHlUZXhJbWFnZS4gIFNlZSB0aGUgT3BlbkdMIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb24gdGhlCi0gKiBtYXBwaW5ncyBiZXR3ZWVuIHRleHR1cmUgZm9ybWF0cy4KLSAqCiAgKiBSZXR1cm5zOiBXaGV0aGVyIHRoZSBjb3B5IHN1Y2VlZGVkCisgKgorICogU2luY2U6IDEuOAogICovCiBnYm9vbGVhbgotZ3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZSAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIGd1aW50IHRleF9pZCwKLSAgICBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4X3R5cGUsIGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0LCBnaW50IHN0cmlkZSwKLSAgICBnYm9vbGVhbiByZXNwZWNpZnkpCitnc3RfZ2xfbWVtb3J5X2NvcHlfaW50byAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIGd1aW50IHRleF9pZCwKKyAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0LCBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4X3R5cGUsIGdpbnQgd2lkdGgsCisgICAgZ2ludCBoZWlnaHQpCiB7CiAgIEdzdEdMTWVtb3J5Q29weVBhcmFtcyBjb3B5X3BhcmFtczsKIAogICBjb3B5X3BhcmFtcy5zcmMgPSBnbF9tZW07Ci0gIGNvcHlfcGFyYW1zLnRleF90YXJnZXQgPSBnbF9tZW0tPnRleF90YXJnZXQ7CiAgIGNvcHlfcGFyYW1zLnRleF9pZCA9IHRleF9pZDsKLSAgY29weV9wYXJhbXMub3V0X2Zvcm1hdCA9IHRleF90eXBlOworICBjb3B5X3BhcmFtcy50ZXhfdGFyZ2V0ID0gdGFyZ2V0OworICBjb3B5X3BhcmFtcy50ZXhfdHlwZSA9IHRleF90eXBlOwogICBjb3B5X3BhcmFtcy5vdXRfd2lkdGggPSB3aWR0aDsKICAgY29weV9wYXJhbXMub3V0X2hlaWdodCA9IGhlaWdodDsKLSAgY29weV9wYXJhbXMub3V0X3N0cmlkZSA9IHN0cmlkZTsKLSAgY29weV9wYXJhbXMucmVzcGVjaWZ5ID0gcmVzcGVjaWZ5OwogCi0gIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGdsX21lbS0+bWVtLmNvbnRleHQsIF9nbF9tZW1fY29weV90aHJlYWQsCisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGdsX21lbS0+bWVtLmNvbnRleHQsIF9nbF90ZXhfY29weV90aHJlYWQsCiAgICAgICAmY29weV9wYXJhbXMpOwogCiAgIHJldHVybiBjb3B5X3BhcmFtcy5yZXN1bHQ7CiB9CiAKIC8qKgotICogZ3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmU6Ci0gKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0Ci0gKiBAdGV4dHVyZV9pZDogdGhlIEdMIHRleHR1cmUgaGFuZGxlCi0gKiBAdGV4dHVyZV90YXJnZXQ6IHRoZSBHTCB0ZXh0dXJlIHRhcmdldAotICogQGluZm86IHRoZSAjR3N0VmlkZW9JbmZvIG9mIHRoZSBtZW1vcnkKLSAqIEBwbGFuZTogVGhlIHBsYW5lIHRoaXMgbWVtb3J5IHdpbGwgcmVwcmVzZW50Ci0gKiBAdXNlcl9kYXRhOiB1c2VyIGRhdGEKLSAqIEBub3RpZnk6IERlc3Ryb3kgY2FsbGJhY2sgZm9yIHRoZSB1c2VyIGRhdGEKKyAqIGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfd2lkdGg6CisgKiBAZ2xfbWVtOiBhICNHc3RHTE1lbW9yeQogICoKLSAqIFdyYXBzIGEgdGV4dHVyZSBoYW5kbGUgaW50byBhICNHc3RHTE1lbW9yeS4KKyAqIFJldHVybnM6IHRoZSB0ZXh0dXJlIHdpZHRoIG9mIEBnbF9tZW0KICAqCi0gKiBSZXR1cm5zOiBhIG5ld2x5IGFsbG9jYXRlZCAjR3N0R0xNZW1vcnkKKyAqIFNpbmNlOiAxLjgKICAqLwotR3N0R0xNZW1vcnkgKgotZ3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmUgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCi0gICAgZ3VpbnQgdGV4dHVyZV9pZCwgZ3VpbnQgdGV4dHVyZV90YXJnZXQsCi0gICAgR3N0VmlkZW9JbmZvICogaW5mbywgZ3VpbnQgcGxhbmUsIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLAotICAgIGdwb2ludGVyIHVzZXJfZGF0YSwgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQotewotICBHc3RHTE1lbW9yeSAqbWVtOwotCi0gIG1lbSA9IGdfc2xpY2VfbmV3MCAoR3N0R0xNZW1vcnkpOwotCi0gIG1lbS0+dGV4X2lkID0gdGV4dHVyZV9pZDsKLSAgbWVtLT50ZXh0dXJlX3dyYXBwZWQgPSBUUlVFOwotCi0gIF9nbF9tZW1faW5pdCAobWVtLCBfZ2xfYWxsb2NhdG9yLCBOVUxMLCBjb250ZXh0LCBOVUxMLCBpbmZvLCB2YWxpZ24sIHBsYW5lLAotICAgICAgdXNlcl9kYXRhLCBub3RpZnkpOwotCi0gIG1lbS0+dGV4X3RhcmdldCA9IHRleHR1cmVfdGFyZ2V0OwotCi0gIG1lbSA9IChHc3RHTE1lbW9yeSAqKSBnc3RfZ2xfYmFzZV9idWZmZXJfYWxsb2NfZGF0YSAoKEdzdEdMQmFzZUJ1ZmZlciAqKSBtZW0pOwotICBHU1RfTUlOSV9PQkpFQ1RfRkxBR19TRVQgKG1lbSwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCk7Ci0gIG1lbS0+dHJhbnNmZXJfc3RhdGUgfD0gR1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEOwotCi0gIHJldHVybiBtZW07Ci19Ci0KLS8qKgotICogZ3N0X2dsX21lbW9yeV9hbGxvYzoKLSAqIEBjb250ZXh0OmEgI0dzdEdMQ29udGV4dAotICogQHBhcmFtczogYSAjR3N0QWxsb2NhdGlvblBhcmFtcwotICogQGluZm86IHRoZSAjR3N0VmlkZW9JbmZvIG9mIHRoZSBtZW1vcnkKLSAqIEBwbGFuZTogdGhlIHBsYW5lIHRoaXMgbWVtb3J5IHdpbGwgcmVwcmVzZW50Ci0gKiBAdmFsaWduOiB0aGUgI0dzdFZpZGVvQWxpZ25tZW50IGFwcGxpZWQgdG8gQGluZm8KLSAqCi0gKiBBbGxvY2F0ZWQgYSBuZXcgI0dzdEdsTWVtb3J5LgotICoKLSAqIFJldHVybnM6IGEgI0dzdE1lbW9yeSBvYmplY3Qgd2l0aCBhIEdMIHRleHR1cmUgc3BlY2lmaWVkIGJ5IEB2aW5mbwotICogICAgICAgICAgZnJvbSBAY29udGV4dAotICovCi1Hc3RNZW1vcnkgKgotZ3N0X2dsX21lbW9yeV9hbGxvYyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywKLSAgICBHc3RWaWRlb0luZm8gKiBpbmZvLCBndWludCBwbGFuZSwgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24pCi17Ci0gIEdzdEdMTWVtb3J5ICptZW07Ci0KLSAgbWVtID0gX2dsX21lbV9uZXcgKF9nbF9hbGxvY2F0b3IsIE5VTEwsIGNvbnRleHQsIHBhcmFtcywgaW5mbywgdmFsaWduLCBwbGFuZSwKLSAgICAgIE5VTEwsIE5VTEwpOwotICBtZW0gPSAoR3N0R0xNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfYnVmZmVyX2FsbG9jX2RhdGEgKChHc3RHTEJhc2VCdWZmZXIgKikgbWVtKTsKLQotICByZXR1cm4gKEdzdE1lbW9yeSAqKSBtZW07Ci19Ci0KLS8qKgotICogZ3N0X2dsX21lbW9yeV93cmFwcGVkOgotICogQGNvbnRleHQ6YSAjR3N0R0xDb250ZXh0Ci0gKiBAaW5mbzogdGhlICNHc3RWaWRlb0luZm8gb2YgdGhlIG1lbW9yeSBhbmQgZGF0YQotICogQHBsYW5lOiB0aGUgcGxhbmUgdGhpcyBtZW1vcnkgd2lsbCByZXByZXNlbnQKLSAqIEB2YWxpZ246IHRoZSAjR3N0VmlkZW9BbGlnbm1lbnQgYXBwbGllZCB0byBAaW5mbwotICogQGRhdGE6IHRoZSBkYXRhIHRvIHdyYXAKLSAqIEB1c2VyX2RhdGE6IGRhdGEgY2FsbGVkIHdpdGggZm9yIEBub3RpZnkKLSAqIEBub3RpZnk6IGZ1bmN0aW9uIGNhbGxlZCB3aXRoIEB1c2VyX2RhdGEgd2hlbiBAZGF0YSBuZWVkcyB0byBiZSBmcmVlZAotICogCi0gKiBXcmFwcGVkIEBkYXRhIGludG8gYSAjR3N0R0xNZW1vcnkuIFRoaXMgdmVyc2lvbiB3aWxsIGFjY291bnQgZm9yIHBhZGRpbmcKLSAqIGFkZGVkIHRvIHRoZSBhbGxvY2F0aW9uIGFuZCBleHByZXNzZWQgdGhyb3VnaCBAdmFsaWduLgotICoKLSAqIFJldHVybnM6IGEgI0dzdEdMTWVtb3J5IG9iamVjdCB3aXRoIGEgR0wgdGV4dHVyZSBzcGVjaWZpZWQgYnkgQHZfaW5mbwotICogICAgICAgICAgZnJvbSBAY29udGV4dCBhbmQgY29udGVudHMgc3BlY2lmaWVkIGJ5IEBkYXRhCi0gKi8KLUdzdEdMTWVtb3J5ICoKLWdzdF9nbF9tZW1vcnlfd3JhcHBlZCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0VmlkZW9JbmZvICogaW5mbywKLSAgICBndWludCBwbGFuZSwgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sIGdwb2ludGVyIGRhdGEsIGdwb2ludGVyIHVzZXJfZGF0YSwKLSAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpCi17Ci0gIEdzdEdMTWVtb3J5ICptZW07Ci0KLSAgbWVtID0gX2dsX21lbV9uZXcgKF9nbF9hbGxvY2F0b3IsIE5VTEwsIGNvbnRleHQsIE5VTEwsIGluZm8sIHZhbGlnbiwgcGxhbmUsCi0gICAgICB1c2VyX2RhdGEsIG5vdGlmeSk7Ci0gIGlmICghbWVtKQotICAgIHJldHVybiBOVUxMOwotCi0gIG1lbS0+bWVtLmRhdGEgPSBkYXRhOwotCi0gIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCk7Ci0gIG1lbS0+dHJhbnNmZXJfc3RhdGUgfD0gR1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRDsKLQotICByZXR1cm4gbWVtOwotfQotCi1zdGF0aWMgdm9pZAotX2Rvd25sb2FkX3RyYW5zZmVyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTE1lbW9yeSAqIGdsX21lbSkKLXsKLSAgR3N0R0xCYXNlQnVmZmVyICptZW0gPSAoR3N0R0xCYXNlQnVmZmVyICopIGdsX21lbTsKLQotICBnX211dGV4X2xvY2sgKCZtZW0tPmxvY2spOwotICBpZiAoX3JlYWRfcGl4ZWxzX3RvX3BibyAoZ2xfbWVtKSkKLSAgICBHU1RfQ0FUX1RSQUNFIChHU1RfQ0FUX0dMX01FTU9SWSwgIm9wdGltaXN0aWMgZG93bmxvYWQgb2YgdGV4dHVyZSAldSAiCi0gICAgICAgICJ1c2luZyBwYm8gJXUiLCBnbF9tZW0tPnRleF9pZCwgZ2xfbWVtLT5tZW0uaWQpOwotICBnX211dGV4X3VubG9jayAoJm1lbS0+bG9jayk7Ci19Ci0KLXZvaWQKLWdzdF9nbF9tZW1vcnlfZG93bmxvYWRfdHJhbnNmZXIgKEdzdEdMTWVtb3J5ICogZ2xfbWVtKQotewotICBnX3JldHVybl9pZl9mYWlsIChnc3RfaXNfZ2xfbWVtb3J5ICgoR3N0TWVtb3J5ICopIGdsX21lbSkpOwotCi0gIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGdsX21lbS0+bWVtLmNvbnRleHQsCi0gICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2Rvd25sb2FkX3RyYW5zZmVyLCBnbF9tZW0pOwotfQotCi1zdGF0aWMgdm9pZAotX3VwbG9hZF90cmFuc2ZlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xNZW1vcnkgKiBnbF9tZW0pCi17Ci0gIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKLSAgR3N0R0xCYXNlQnVmZmVyICptZW0gPSAoR3N0R0xCYXNlQnVmZmVyICopIGdsX21lbTsKLSAgR3N0TWFwSW5mbyBpbmZvOwotCi0gIGFsbG9jX2NsYXNzID0KLSAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1JfQ0xBU1MgKGdzdF9nbF9hbGxvY2F0b3JfcGFyZW50X2NsYXNzKTsKLQotICBpbmZvLmZsYWdzID0gR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTDsKLSAgaW5mby5tZW1vcnkgPSAoR3N0TWVtb3J5ICopIG1lbTsKLSAgLyogZnJvbSBnc3RfbWVtb3J5X21hcCgpICovCi0gIGluZm8uc2l6ZSA9IG1lbS0+bWVtLnNpemU7Ci0gIGluZm8ubWF4c2l6ZSA9IG1lbS0+bWVtLm1heHNpemUgLSBtZW0tPm1lbS5vZmZzZXQ7Ci0KLSAgZ19tdXRleF9sb2NrICgmbWVtLT5sb2NrKTsKLSAgbWVtLT50YXJnZXQgPSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSOwotICBhbGxvY19jbGFzcy0+bWFwX2J1ZmZlciAobWVtLCAmaW5mbywgbWVtLT5tZW0ubWF4c2l6ZSk7Ci0gIGFsbG9jX2NsYXNzLT51bm1hcF9idWZmZXIgKG1lbSwgJmluZm8pOwotICBnX211dGV4X3VubG9jayAoJm1lbS0+bG9jayk7Ci19Ci0KLXZvaWQKLWdzdF9nbF9tZW1vcnlfdXBsb2FkX3RyYW5zZmVyIChHc3RHTE1lbW9yeSAqIGdsX21lbSkKLXsKLSAgZ19yZXR1cm5faWZfZmFpbCAoZ3N0X2lzX2dsX21lbW9yeSAoKEdzdE1lbW9yeSAqKSBnbF9tZW0pKTsKLQotICBpZiAoQ09OVEVYVF9TVVBQT1JUU19QQk9fVVBMT0FEIChnbF9tZW0tPm1lbS5jb250ZXh0KSkKLSAgICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChnbF9tZW0tPm1lbS5jb250ZXh0LAotICAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX3VwbG9hZF90cmFuc2ZlciwgZ2xfbWVtKTsKLX0KLQogZ2ludAogZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV93aWR0aCAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pCiB7CkBAIC0xNDI1LDYgKzkwNywxNCBAQAogICByZXR1cm4gZ2xfbWVtLT50ZXhfd2lkdGg7CiB9CiAKKy8qKgorICogZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9oZWlnaHQ6CisgKiBAZ2xfbWVtOiBhICNHc3RHTE1lbW9yeQorICoKKyAqIFJldHVybnM6IHRoZSB0ZXh0dXJlIGhlaWdodCBvZiBAZ2xfbWVtCisgKgorICogU2luY2U6IDEuOAorICovCiBnaW50CiBnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2hlaWdodCAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pCiB7CkBAIC0xNDM0LDIzICs5MjQsNzYgQEAKIH0KIAogLyoqCi0gKiBnc3RfZ2xfbWVtb3J5X2luaXQ6CisgKiBnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3R5cGU6CisgKiBAZ2xfbWVtOiBhICNHc3RHTE1lbW9yeQogICoKLSAqIEluaXRpYWxpemVzIHRoZSBHTCBNZW1vcnkgYWxsb2NhdG9yLiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgorICogUmV0dXJuczogdGhlICNHc3RWaWRlb0dMVGV4dHVyZVR5cGUgb2YgQGdsX21lbQorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworR3N0VmlkZW9HTFRleHR1cmVUeXBlCitnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3R5cGUgKEdzdEdMTWVtb3J5ICogZ2xfbWVtKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ3N0X2lzX2dsX21lbW9yeSAoKEdzdE1lbW9yeSAqKSBnbF9tZW0pLCAwKTsKKworICByZXR1cm4gZ2xfbWVtLT50ZXhfdHlwZTsKK30KKworLyoqCisgKiBnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3RhcmdldDoKKyAqIEBnbF9tZW06IGEgI0dzdEdMTWVtb3J5CisgKgorICogUmV0dXJuczogdGhlICNHc3RHTFRleHR1cmVUYXJnZXQgb2YgQGdsX21lbQorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworR3N0R0xUZXh0dXJlVGFyZ2V0Citnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3RhcmdldCAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChnc3RfaXNfZ2xfbWVtb3J5ICgoR3N0TWVtb3J5ICopIGdsX21lbSksIDApOworCisgIHJldHVybiBnbF9tZW0tPnRleF90YXJnZXQ7Cit9CisKKy8qKgorICogZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9pZDoKKyAqIEBnbF9tZW06IGEgI0dzdEdMTWVtb3J5CisgKgorICogUmV0dXJuczogdGhlIE9wZW5HTCB0ZXh0dXJlIGhhbmRsZSBvZiBAZ2xfbWVtCisgKgorICogU2luY2U6IDEuOAorICovCitndWludAorZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9pZCAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChnc3RfaXNfZ2xfbWVtb3J5ICgoR3N0TWVtb3J5ICopIGdsX21lbSksIDApOworCisgIHJldHVybiBnbF9tZW0tPnRleF9pZDsKK30KKworLyoqCisgKiBnc3RfZ2xfbWVtb3J5X2luaXRfb25jZToKKyAqCisgKiBJbml0aWFsaXplcyB0aGUgR0wgQmFzZSBUZXh0dXJlIGFsbG9jYXRvci4gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgZnVuY3Rpb24KICAqIG11bHRpcGxlIHRpbWVzLiAgVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyIEdzdEdMTWVtb3J5IG9wZXJhdGlvbi4KKyAqCisgKiBTaW5jZTogMS40CiAgKi8KIHZvaWQKLWdzdF9nbF9tZW1vcnlfaW5pdCAodm9pZCkKK2dzdF9nbF9tZW1vcnlfaW5pdF9vbmNlICh2b2lkKQogewogICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2luaXQgPSAwOwogCiAgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJl9pbml0KSkgewotICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX0dMX01FTU9SWSwgImdsbWVtb3J5IiwgMCwgIk9wZW5HTCBNZW1vcnkiKTsKKyAgICBnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdF9vbmNlICgpOwogCi0gICAgX2dsX2FsbG9jYXRvciA9IGdfb2JqZWN0X25ldyAoZ3N0X2dsX2FsbG9jYXRvcl9nZXRfdHlwZSAoKSwgTlVMTCk7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfR0xfTUVNT1JZLCAiZ2xiYXNldGV4dHVyZSIsIDAsCisgICAgICAgICJPcGVuR0wgQmFzZSBUZXh0dXJlIE1lbW9yeSIpOwogCi0gICAgZ3N0X2FsbG9jYXRvcl9yZWdpc3RlciAoR1NUX0dMX01FTU9SWV9BTExPQ0FUT1IsCi0gICAgICAgIGdzdF9vYmplY3RfcmVmIChfZ2xfYWxsb2NhdG9yKSk7CisgICAgX2dsX21lbW9yeV9hbGxvY2F0b3IgPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX0dMX01FTU9SWV9BTExPQ0FUT1IsIE5VTEwpOworCisgICAgZ3N0X2FsbG9jYXRvcl9yZWdpc3RlciAoR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRSwgX2dsX21lbW9yeV9hbGxvY2F0b3IpOworCiAgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZfaW5pdCwgMSk7CiAgIH0KIH0KQEAgLTE0NjAsOTAgKzEwMDMsMzQzIEBACiAgKiBAbWVtOmEgI0dzdE1lbW9yeQogICogCiAgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBtZW1vcnkgYXQgQG1lbSBpcyBhICNHc3RHTE1lbW9yeQorICoKKyAqIFNpbmNlOiAxLjQKICAqLwogZ2Jvb2xlYW4KIGdzdF9pc19nbF9tZW1vcnkgKEdzdE1lbW9yeSAqIG1lbSkKIHsKICAgcmV0dXJuIG1lbSAhPSBOVUxMICYmIG1lbS0+YWxsb2NhdG9yICE9IE5VTEwKLSAgICAgICYmIGdfdHlwZV9pc19hIChHX09CSkVDVF9UWVBFIChtZW0tPmFsbG9jYXRvciksIEdTVF9UWVBFX0dMX0FMTE9DQVRPUik7CisgICAgICAmJiBnX3R5cGVfaXNfYSAoR19PQkpFQ1RfVFlQRSAobWVtLT5hbGxvY2F0b3IpLAorICAgICAgR1NUX1RZUEVfR0xfTUVNT1JZX0FMTE9DQVRPUik7Cit9CisKK3N0YXRpYyB2b2lkCitfZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX3NldF92aWRlb19hbGlnbm1lbnQgKEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zCisgICAgKiBwYXJhbXMsIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduKQoreworICBnX3JldHVybl9pZl9mYWlsIChwYXJhbXMgIT0gTlVMTCk7CisKKyAgaWYgKCFwYXJhbXMtPnZhbGlnbikKKyAgICBwYXJhbXMtPnZhbGlnbiA9IGdfbmV3MCAoR3N0VmlkZW9BbGlnbm1lbnQsIDEpOworCisgIGlmICh2YWxpZ24pIHsKKyAgICAqcGFyYW1zLT52YWxpZ24gPSAqdmFsaWduOworICB9IGVsc2UgeworICAgIGdzdF92aWRlb19hbGlnbm1lbnRfcmVzZXQgKHBhcmFtcy0+dmFsaWduKTsKKyAgfQorfQorCisvKioKKyAqIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19pbml0X2Z1bGw6CisgKiBAcGFyYW1zOiBhICNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyB0byBpbml0aWFsaXplCisgKiBAc3RydWN0X3NpemU6IHRoZSBzaXplIG9mIHRoZSBzdHJ1Y3QgaW4gQHBhcmFtcworICogQGFsbG9jX2ZsYWdzOiBzb21lIGFsbG9jYXRpb24gZmxhZ3MKKyAqIEBjb3B5OiBhIGNvcHkgZnVuY3Rpb24KKyAqIEBmcmVlOiBhIGZyZWUgZnVuY3Rpb24KKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEBhbGxvY19wYXJhbXM6IChhbGxvdy1ub25lKTogdGhlICNHc3RBbGxvY2F0aW9uUGFyYW1zIGZvciBAd3JhcHBlZF9kYXRhCisgKiBAdl9pbmZvOiB0aGUgI0dzdFZpZGVvSW5mbyBmb3IgQHdyYXBwZWRfZGF0YQorICogQHBsYW5lOiB0aGUgdmlkZW8gcGxhbmUgQHdyYXBwZWRfZGF0YSByZXByZXNlbnRzCisgKiBAdmFsaWduOiAoYWxsb3ctbm9uZSk6IGFueSAjR3N0VmlkZW9BbGlnbm1lbnQgYXBwbGllZCB0byBzeW1lbSBtYXBwaW5ncyBvZiBAd3JhcHBlZF9kYXRhCisgKiBAdGFyZ2V0OiB0aGUgI0dzdEdMVGV4dHVyZVRhcmdldAorICogQHdyYXBwZWRfZGF0YTogKGFsbG93LW5vbmUpOiB0aGUgb3B0aW9uYWwgZGF0YSBwb2ludGVyIHRvIHdyYXAKKyAqIEBnbF9oYW5kbGU6IHRoZSBvcHRpb25hbCBPcGVuR0wgaGFuZGxlIHRvIHdyYXAgb3IgMAorICogQHVzZXJfZGF0YTogKGFsbG93LW5vbmUpOiB1c2VyIGRhdGEgdG8gY2FsbCBAbm90aWZ5IHdpdGgKKyAqIEBub3RpZnk6IChhbGxvdy1ub25lKTogYSAjR0Rlc3Ryb3lOb3RpZnkKKyAqCisgKiBJbnRlbmRlZCBmb3Igc3ViY2xhc3MgdXNhZ2UKKyAqCisgKiBSZXR1cm5zOiBpbml0aWFsaXplcyBAcGFyYW1zIHdpdGggdGhlIHBhcmFtZXRlcnMgc3BlY2lmaWVkCisgKgorICogU2luY2U6IDEuOAorICovCitnYm9vbGVhbgorZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2luaXRfZnVsbCAoR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsCisgICAgZ3NpemUgc3RydWN0X3NpemUsIGd1aW50IGFsbG9jX2ZsYWdzLCBHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYyBjb3B5LAorICAgIEdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jIGZyZWUsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIGFsbG9jX3BhcmFtcywgR3N0VmlkZW9JbmZvICogdl9pbmZvLAorICAgIGd1aW50IHBsYW5lLCBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwKKyAgICBncG9pbnRlciB3cmFwcGVkX2RhdGEsIGd1aW50IGdsX2hhbmRsZSwgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgZ3VpbnQgaTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAocGFyYW1zICE9IE5VTEwsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvcHkgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZnJlZSAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHZfaW5mbyAhPSBOVUxMLCBGQUxTRSk7CisKKyAgbWVtc2V0IChwYXJhbXMsIDAsIHNpemVvZiAoKnBhcmFtcykpOworCisgIGlmICghZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2luaXQgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zLAorICAgICAgICAgIHN0cnVjdF9zaXplLCBhbGxvY19mbGFncywgY29weSwgZnJlZSwgY29udGV4dCwgMCwgYWxsb2NfcGFyYW1zLAorICAgICAgICAgIHdyYXBwZWRfZGF0YSwgZ2xfaGFuZGxlLCB1c2VyX2RhdGEsIG5vdGlmeSkpCisgICAgcmV0dXJuIEZBTFNFOworCisgIHBhcmFtcy0+dl9pbmZvID0gZ19uZXcwIChHc3RWaWRlb0luZm8sIDEpOworICAqcGFyYW1zLT52X2luZm8gPSAqdl9pbmZvOworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX01BWF9QTEFORVM7IGkrKykgeworICAgIHBhcmFtcy0+dl9pbmZvLT5vZmZzZXRbaV0gPSB2X2luZm8tPm9mZnNldFtpXTsKKyAgICBwYXJhbXMtPnZfaW5mby0+c3RyaWRlW2ldID0gdl9pbmZvLT5zdHJpZGVbaV07CisgIH0KKyAgX2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19zZXRfdmlkZW9fYWxpZ25tZW50IChwYXJhbXMsIHZhbGlnbik7CisgIHBhcmFtcy0+dGFyZ2V0ID0gdGFyZ2V0OworICBwYXJhbXMtPnBsYW5lID0gcGxhbmU7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qKgorICogZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldzoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEBhbGxvY19wYXJhbXM6IChhbGxvdy1ub25lKTogdGhlICNHc3RBbGxvY2F0aW9uUGFyYW1zIGZvciBAd3JhcHBlZF9kYXRhCisgKiBAdl9pbmZvOiB0aGUgI0dzdFZpZGVvSW5mbyBmb3IgQHdyYXBwZWRfZGF0YQorICogQHBsYW5lOiB0aGUgdmlkZW8gcGxhbmUgQHdyYXBwZWRfZGF0YSByZXByZXNlbnRzCisgKiBAdmFsaWduOiAoYWxsb3ctbm9uZSk6IGFueSAjR3N0VmlkZW9BbGlnbm1lbnQgYXBwbGllZCB0byBzeW1lbSBtYXBwaW5ncyBvZiBAd3JhcHBlZF9kYXRhCisgKiBAdGFyZ2V0OiB0aGUgI0dzdEdMVGV4dHVyZVRhcmdldCBmb3IgQHdyYXBwZWRfZGF0YQorICoKKyAqIFJldHVybnM6IGEgbmV3ICNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyBmb3IgYWxsb2NhdGluZyAjR3N0R0xNZW1vcnkncworICoKKyAqIFNpbmNlOiAxLjgKKyAqLworR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKgorZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogYWxsb2NfcGFyYW1zLCBHc3RWaWRlb0luZm8gKiB2X2luZm8sIGd1aW50IHBsYW5lLAorICAgIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLCBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0KQoreworICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zID0gZ19uZXcwIChHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcywgMSk7CisKKyAgaWYgKCFnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfaW5pdF9mdWxsIChwYXJhbXMsCisgICAgICAgICAgc2l6ZW9mIChHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyksCisgICAgICAgICAgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQUxMT0MgfAorICAgICAgICAgIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPLAorICAgICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYykKKyAgICAgICAgICBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhLAorICAgICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYykKKyAgICAgICAgICBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhLCBjb250ZXh0LCBhbGxvY19wYXJhbXMsCisgICAgICAgICAgdl9pbmZvLCBwbGFuZSwgdmFsaWduLCB0YXJnZXQsIE5VTEwsIDAsIE5VTEwsIE5VTEwpKSB7CisgICAgZ19mcmVlIChwYXJhbXMpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgcmV0dXJuIHBhcmFtczsKK30KKworLyoqCisgKiBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfZGF0YToKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEBhbGxvY19wYXJhbXM6IChhbGxvdy1ub25lKTogdGhlICNHc3RBbGxvY2F0aW9uUGFyYW1zIGZvciBAd3JhcHBlZF9kYXRhCisgKiBAdl9pbmZvOiB0aGUgI0dzdFZpZGVvSW5mbyBmb3IgQHdyYXBwZWRfZGF0YQorICogQHBsYW5lOiB0aGUgdmlkZW8gcGxhbmUgQHdyYXBwZWRfZGF0YSByZXByZXNlbnRzCisgKiBAdmFsaWduOiAoYWxsb3ctbm9uZSk6IGFueSAjR3N0VmlkZW9BbGlnbm1lbnQgYXBwbGllZCB0byBzeW1lbSBtYXBwaW5ncyBvZiBAd3JhcHBlZF9kYXRhCisgKiBAdGFyZ2V0OiB0aGUgI0dzdEdMVGV4dHVyZVRhcmdldCBmb3IgQHdyYXBwZWRfZGF0YQorICogQHdyYXBwZWRfZGF0YTogdGhlIGRhdGEgcG9pbnRlciB0byB3cmFwCisgKiBAdXNlcl9kYXRhOiAoYWxsb3ctbm9uZSk6IHVzZXIgZGF0YSB0byBjYWxsIEBub3RpZnkgd2l0aAorICogQG5vdGlmeTogKGFsbG93LW5vbmUpOiBhICNHRGVzdHJveU5vdGlmeQorICoKKyAqIFJldHVybnM6IGEgbmV3ICNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyBmb3Igd3JhcHBpbmcgQHdyYXBwZWRfZGF0YQorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKgorZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX2RhdGEgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIGFsbG9jX3BhcmFtcywgR3N0VmlkZW9JbmZvICogdl9pbmZvLCBndWludCBwbGFuZSwKKyAgICBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwKKyAgICBncG9pbnRlciB3cmFwcGVkX2RhdGEsIGdwb2ludGVyIHVzZXJfZGF0YSwgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQoreworICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zID0gZ19uZXcwIChHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcywgMSk7CisKKyAgaWYgKCFnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfaW5pdF9mdWxsIChwYXJhbXMsCisgICAgICAgICAgc2l6ZW9mIChHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyksCisgICAgICAgICAgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9TWVNNRU0gfAorICAgICAgICAgIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPLAorICAgICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYykKKyAgICAgICAgICBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhLAorICAgICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYykKKyAgICAgICAgICBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhLCBjb250ZXh0LCBhbGxvY19wYXJhbXMsCisgICAgICAgICAgdl9pbmZvLCBwbGFuZSwgdmFsaWduLCB0YXJnZXQsIHdyYXBwZWRfZGF0YSwgMCwgdXNlcl9kYXRhLCBub3RpZnkpKSB7CisgICAgZ19mcmVlIChwYXJhbXMpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgcmV0dXJuIHBhcmFtczsKK30KKworLyoqCisgKiBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfdGV4dHVyZToKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEBhbGxvY19wYXJhbXM6IChhbGxvdy1ub25lKTogdGhlICNHc3RBbGxvY2F0aW9uUGFyYW1zIGZvciBAdGV4X2lkCisgKiBAdl9pbmZvOiB0aGUgI0dzdFZpZGVvSW5mbyBmb3IgQHRleF9pZAorICogQHBsYW5lOiB0aGUgdmlkZW8gcGxhbmUgQHRleF9pZCByZXByZXNlbnRzCisgKiBAdmFsaWduOiAoYWxsb3ctbm9uZSk6IGFueSAjR3N0VmlkZW9BbGlnbm1lbnQgYXBwbGllZCB0byBzeW1lbSBtYXBwaW5ncyBvZiBAdGV4X2lkCisgKiBAdGFyZ2V0OiB0aGUgI0dzdEdMVGV4dHVyZVRhcmdldCBmb3IgQHRleF9pZAorICogQHRleF9pZDogdGhlIEdMIHRleHR1cmUgdG8gd3JhcAorICogQHVzZXJfZGF0YTogKGFsbG93LW5vbmUpOiB1c2VyIGRhdGEgdG8gY2FsbCBAbm90aWZ5IHdpdGgKKyAqIEBub3RpZnk6IChhbGxvdy1ub25lKTogYSAjR0Rlc3Ryb3lOb3RpZnkKKyAqCisgKiBSZXR1cm5zOiBhIG5ldyAjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgZm9yIHdyYXBwaW5nIEB0ZXhfaWQKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICoKK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF90ZXh0dXJlIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBhbGxvY19wYXJhbXMsIEdzdFZpZGVvSW5mbyAqIHZfaW5mbywgZ3VpbnQgcGxhbmUsCisgICAgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQsCisgICAgZ3VpbnQgdGV4X2lkLCBncG9pbnRlciB1c2VyX2RhdGEsIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtcyA9IGdfbmV3MCAoR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMsIDEpOworCisgIGlmICghZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2luaXRfZnVsbCAocGFyYW1zLAorICAgICAgICAgIHNpemVvZiAoR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMpLAorICAgICAgICAgIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRSB8CisgICAgICAgICAgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfVklERU8sCisgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jKQorICAgICAgICAgIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGEsCisgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jKQorICAgICAgICAgIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGEsIGNvbnRleHQsIGFsbG9jX3BhcmFtcywKKyAgICAgICAgICB2X2luZm8sIHBsYW5lLCB2YWxpZ24sIHRhcmdldCwgTlVMTCwgdGV4X2lkLCB1c2VyX2RhdGEsIG5vdGlmeSkpIHsKKyAgICBnX2ZyZWUgKHBhcmFtcyk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICByZXR1cm4gcGFyYW1zOworfQorCisvKioKKyAqIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGE6CisgKiBAcGFyYW1zOiBhICNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcworICoKKyAqIFVuc2V0IGFuZCBmcmVlIGFueSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgcmVzb3VyY2VzLiAgSW50ZW5kZWQgZm9yIHN1YmNsYXNzCisgKiB1c2FnZSBvbmx5IHRvIGNoYWluIHVwIGF0IHRoZSBlbmQgb2YgYSBzdWJjbGFzcyBmcmVlIGZ1bmN0aW9uLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YSAoR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpCit7CisgIGdfZnJlZSAocGFyYW1zLT52X2luZm8pOworICBnX2ZyZWUgKHBhcmFtcy0+dmFsaWduKTsKKworICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhICgmcGFyYW1zLT5wYXJlbnQpOworfQorCisvKioKKyAqIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGE6CisgKiBAc3JjX3ZpZDogc291cmNlICNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyB0byBjb3B5IGZyb20KKyAqIEBkZXN0X3ZpZDogZGVzdGluYXRpb24gI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIHRvIGNvcHkgaW50bworICoKKyAqIENvcHkgYW5kIHNldCBhbnkgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHJlc291cmNlcyBpbiBAZGVzdF92aWQuICBJbnRlbmRlZAorICogZm9yIHN1YmNsYXNzIHVzYWdlIG9ubHkgdG8gY2hhaW4gdXAgYXQgdGhlIGVuZCBvZiBhIHN1YmNsYXNzIGNvcHkgZnVuY3Rpb24uCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhIChHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqIHNyY192aWQsCisgICAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKiBkZXN0X3ZpZCkKK3sKKyAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zICpzcmMgPSAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHNyY192aWQ7CisgIEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqZGVzdCA9IChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgZGVzdF92aWQ7CisgIGd1aW50IGk7CisKKyAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YSAoc3JjLCBkZXN0KTsKKworICBkZXN0X3ZpZC0+dl9pbmZvID0gZ19uZXcwIChHc3RWaWRlb0luZm8sIDEpOworICAqZGVzdF92aWQtPnZfaW5mbyA9ICpzcmNfdmlkLT52X2luZm87CisgIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fTUFYX1BMQU5FUzsgaSsrKSB7CisgICAgZGVzdF92aWQtPnZfaW5mby0+b2Zmc2V0W2ldID0gc3JjX3ZpZC0+dl9pbmZvLT5vZmZzZXRbaV07CisgICAgZGVzdF92aWQtPnZfaW5mby0+c3RyaWRlW2ldID0gc3JjX3ZpZC0+dl9pbmZvLT5zdHJpZGVbaV07CisgIH0KKyAgX2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19zZXRfdmlkZW9fYWxpZ25tZW50IChkZXN0X3ZpZCwKKyAgICAgIHNyY192aWQtPnZhbGlnbik7CisgIGRlc3RfdmlkLT50YXJnZXQgPSBzcmNfdmlkLT50YXJnZXQ7CisgIGRlc3RfdmlkLT5wbGFuZSA9IHNyY192aWQtPnBsYW5lOwogfQogCiAvKioKICAqIGdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyOgotICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAotICogQHBhcmFtczogYSAjR3N0QWxsb2NhdGlvblBhcmFtcwotICogQGluZm86IGEgI0dzdFZpZGVvSW5mbwotICogQHZhbGlnbjogdGhlICNHc3RWaWRlb0FsaWdubWVudCBhcHBsaWVkIHRvIEBpbmZvCi0gKiBAYnVmZmVyOiBhICNHc3RCdWZmZXIKKyAqIEBhbGxvY2F0b3I6IHRoZSBAR3N0R0xNZW1vcnlBbGxvY2F0b3IgdG8gYWxsb2NhdGUgZnJvbQorICogQGJ1ZmZlcjogYSAjR3N0QnVmZmVyIHRvIHNldHVwCisgKiBAcGFyYW1zOiB0aGUgI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIHRvIGFsbG9jYXRlIHdpdGgKICAqCi0gKiBBZGRzIHRoZSByZXF1aXJlZCAjR3N0R0xNZW1vcnk8IS0tICAtLT5zIHdpdGggdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiB0bwotICogQGJ1ZmZlciBiYXNlZCBvbiBAaW5mby4gVGhpcyB2ZXJzaW9uIGhhbmRsZXMgcGFkZGluZyB0aHJvdWdoIEB2YWxpZ24uCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBidWZmZXIgd2FzIGNvcnJlY3RseSBzZXR1cAogICoKLSAqIFJldHVybnM6IHdoZXRoZXIgdGhlIG1lbW9yeSdzIHdlcmUgc3VjZXNzZnVsbHkgYWRkZWQuCisgKiBTaW5jZTogMS44CiAgKi8KIGdib29sZWFuCi1nc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKLSAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLCBHc3RWaWRlb0luZm8gKiBpbmZvLAotICAgIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLCBHc3RCdWZmZXIgKiBidWZmZXIpCitnc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlciAoR3N0R0xNZW1vcnlBbGxvY2F0b3IgKiBhbGxvY2F0b3IsCisgICAgR3N0QnVmZmVyICogYnVmZmVyLCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcykKIHsKLSAgR3N0R0xNZW1vcnkgKmdsX21lbVtHU1RfVklERU9fTUFYX1BMQU5FU10gPSB7IE5VTEwsIH07CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqYmFzZV9hbGxvY2F0b3I7CiAgIGd1aW50IG5fbWVtLCBpLCB2LCB2aWV3czsKKyAgZ3VpbnQgYWxsb2NfZmxhZ3MgPSBwYXJhbXMtPnBhcmVudC5hbGxvY19mbGFnczsKIAotICBuX21lbSA9IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChpbmZvKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHBhcmFtcyAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICgoYWxsb2NfZmxhZ3MgJgorICAgICAgICAgIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfU1lTTUVNKQorICAgICAgPT0gMCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoKHBhcmFtcy0+cGFyZW50LmFsbG9jX2ZsYWdzICYKKyAgICAgICAgICBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX0dQVV9IQU5ETEUpID09IDAsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGFsbG9jX2ZsYWdzICYgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfVklERU8sCisgICAgICBGQUxTRSk7CiAKLSAgaWYgKEdTVF9WSURFT19JTkZPX01VTFRJVklFV19NT0RFIChpbmZvKSA9PQorICBiYXNlX2FsbG9jYXRvciA9IEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IgKGFsbG9jYXRvcik7CisgIG5fbWVtID0gR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKHBhcmFtcy0+dl9pbmZvKTsKKworICBpZiAoR1NUX1ZJREVPX0lORk9fTVVMVElWSUVXX01PREUgKHBhcmFtcy0+dl9pbmZvKSA9PQogICAgICAgR1NUX1ZJREVPX01VTFRJVklFV19NT0RFX1NFUEFSQVRFRCkKLSAgICB2aWV3cyA9IGluZm8tPnZpZXdzOworICAgIHZpZXdzID0gcGFyYW1zLT52X2luZm8tPnZpZXdzOwogICBlbHNlCiAgICAgdmlld3MgPSAxOwogCiAgIGZvciAodiA9IDA7IHYgPCB2aWV3czsgdisrKSB7CiAgICAgZm9yIChpID0gMDsgaSA8IG5fbWVtOyBpKyspIHsKLSAgICAgIGdsX21lbVtpXSA9Ci0gICAgICAgICAgKEdzdEdMTWVtb3J5ICopIGdzdF9nbF9tZW1vcnlfYWxsb2MgKGNvbnRleHQsIHBhcmFtcywgaW5mbywgaSwKLSAgICAgICAgICB2YWxpZ24pOwotICAgICAgaWYgKGdsX21lbVtpXSA9PSBOVUxMKQorICAgICAgR3N0R0xNZW1vcnkgKmdsX21lbTsKKworICAgICAgcGFyYW1zLT5wbGFuZSA9IGk7CisKKyAgICAgIGlmICghKGdsX21lbSA9IChHc3RHTE1lbW9yeSAqKSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKGJhc2VfYWxsb2NhdG9yLAorICAgICAgICAgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKGJ1ZmZlciwgKEdzdE1lbW9yeSAqKSBnbF9tZW1baV0pOworICAgICAgZ3N0X2J1ZmZlcl9hcHBlbmRfbWVtb3J5IChidWZmZXIsIChHc3RNZW1vcnkgKikgZ2xfbWVtKTsKICAgICB9CiAKICAgICBnc3RfYnVmZmVyX2FkZF92aWRlb19tZXRhX2Z1bGwgKGJ1ZmZlciwgdiwKLSAgICAgICAgR1NUX1ZJREVPX0lORk9fRk9STUFUIChpbmZvKSwgR1NUX1ZJREVPX0lORk9fV0lEVEggKGluZm8pLAotICAgICAgICBHU1RfVklERU9fSU5GT19IRUlHSFQgKGluZm8pLCBuX21lbSwgaW5mby0+b2Zmc2V0LCBpbmZvLT5zdHJpZGUpOworICAgICAgICBHU1RfVklERU9fSU5GT19GT1JNQVQgKHBhcmFtcy0+dl9pbmZvKSwKKyAgICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKHBhcmFtcy0+dl9pbmZvKSwKKyAgICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUIChwYXJhbXMtPnZfaW5mbyksIG5fbWVtLCBwYXJhbXMtPnZfaW5mby0+b2Zmc2V0LAorICAgICAgICBwYXJhbXMtPnZfaW5mby0+c3RyaWRlKTsKICAgfQogCiAgIHJldHVybiBUUlVFOwogfQogCiAvKioKLSAqIGdzdF9nbF9tZW1vcnlfc2V0dXBfd3JhcHBlZDoKKyAqIGdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0OgogICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAotICogQGluZm86IGEgI0dzdFZpZGVvSW5mbwotICogQHZhbGlnbjogYSAjR3N0VmlkZW9JbmZvCi0gKiBAZGF0YTogYSBsaXN0IG9mIHBlciBwbGFuZSBkYXRhIHBvaW50ZXJzCi0gKiBAdGV4dHVyZXM6ICh0cmFuc2ZlciBvdXQpOiBhIGxpc3Qgb2YgI0dzdEdMTWVtb3J5Ci0gKiBAdXNlcl9kYXRhOiB1c2VyIGRhdGEgZm9yIHRoZSBkZXN0cm95IGZ1bmN0aW9uCi0gKiBAbm90aWZ5OiBBIGZ1bmN0aW9uIGNhbGxlZCBlYWNoIHRpbWUgYSBtZW1vcnkgaXMgZnJlZWQKICAqCi0gKiBXcmFwcyBwZXIgcGxhbmUgZGF0YSBwb2ludGVyIGluIEBkYXRhIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgZW50cnkgaW4KLSAqIEB0ZXh0dXJlcyBiYXNlZCBvbiBAaW5mbyBhbmQgcGFkZGluZyBmcm9tIEB2YWxpZ24uIE5vdGUgdGhhdCB0aGUgQG5vdGlmeQotICogd2lsbCBiZSBjYWxsZWQgYXMgbWFueSB0aW1lIGFzIHRoZXJlIGlzIHBsYW5lcy4KKyAqIFJldHVybnM6IHRoZSBkZWZhdWx0ICNHc3RHTE1lbW9yeUFsbG9jYXRvciBzdXBwb3J0ZWQgYnkgQGNvbnRleHQKICAqCi0gKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBtZW1vcnkncyB3ZXJlIHN1Y2Vzc2Z1bGx5IGNyZWF0ZWQuCisgKiBTaW5jZTogMS44CiAgKi8KLWdib29sZWFuCi1nc3RfZ2xfbWVtb3J5X3NldHVwX3dyYXBwZWQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdFZpZGVvSW5mbyAqIGluZm8sCi0gICAgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sIGdwb2ludGVyIGRhdGFbR1NUX1ZJREVPX01BWF9QTEFORVNdLAotICAgIEdzdEdMTWVtb3J5ICogdGV4dHVyZXNbR1NUX1ZJREVPX01BWF9QTEFORVNdLCBncG9pbnRlciB1c2VyX2RhdGEsCi0gICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQorR3N0R0xNZW1vcnlBbGxvY2F0b3IgKgorZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCiB7Ci0gIGdpbnQgaTsKKyAgR3N0R0xNZW1vcnlBbGxvY2F0b3IgKmFsbG9jYXRvciA9IE5VTEw7CiAKLSAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChpbmZvKTsgaSsrKSB7Ci0gICAgdGV4dHVyZXNbaV0gPSAoR3N0R0xNZW1vcnkgKikgZ3N0X2dsX21lbW9yeV93cmFwcGVkIChjb250ZXh0LCBpbmZvLCBpLAotICAgICAgICB2YWxpZ24sIGRhdGFbaV0sIHVzZXJfZGF0YSwgbm90aWZ5KTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgTlVMTCk7CisKKyAgLyogd2UgY2FuIG9ubHkgdXNlIHRoZSBwYm8gYWxsb2NhdG9yIHdpdGggR0wgPiAzLjAgY29udGV4dHMgKi8KKyAgaWYgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsCisgICAgICAgICAgR1NUX0dMX0FQSV9PUEVOR0wgfCBHU1RfR0xfQVBJX09QRU5HTDMgfCBHU1RfR0xfQVBJX0dMRVMyLCAzLCAwKSkgeworICAgIGFsbG9jYXRvciA9IChHc3RHTE1lbW9yeUFsbG9jYXRvciAqKQorICAgICAgICBnc3RfYWxsb2NhdG9yX2ZpbmQgKEdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FKTsKKyAgfSBlbHNlIHsKKyAgICBhbGxvY2F0b3IgPSAoR3N0R0xNZW1vcnlBbGxvY2F0b3IgKikKKyAgICAgICAgZ3N0X2FsbG9jYXRvcl9maW5kIChHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9OQU1FKTsKICAgfQogCi0gIHJldHVybiBUUlVFOworICByZXR1cm4gYWxsb2NhdG9yOwogfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuaAppbmRleCA3YmM0NjA3Li5iMDMyYTVjIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR0aGV3IFdhdGVycyA8eXN0cmVldDAwQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI2LDI5ICsyNiwyNyBAQAogI2luY2x1ZGUgPGdzdC9nc3RtZW1vcnkuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KIAotI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGJhc2VidWZmZXIuaD4KLSNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5Lmg+CiAKIEdfQkVHSU5fREVDTFMKIAotI2RlZmluZSBHU1RfVFlQRV9HTF9BTExPQ0FUT1IgKGdzdF9nbF9hbGxvY2F0b3JfZ2V0X3R5cGUoKSkKLUdUeXBlIGdzdF9nbF9hbGxvY2F0b3JfZ2V0X3R5cGUodm9pZCk7CisjZGVmaW5lIEdTVF9UWVBFX0dMX01FTU9SWV9BTExPQ0FUT1IgKGdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF90eXBlKCkpCitHVHlwZSBnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfdHlwZSh2b2lkKTsKIAotI2RlZmluZSBHU1RfSVNfR0xfQUxMT0NBVE9SKG9iaikgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX0dMX0FMTE9DQVRPUikpCi0jZGVmaW5lIEdTVF9JU19HTF9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9HTF9BTExPQ0FUT1IpKQotI2RlZmluZSBHU1RfR0xfQUxMT0NBVE9SX0dFVF9DTEFTUyhvYmopICAgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgR1NUX1RZUEVfR0xfQUxMT0NBVE9SLCBHc3RHTEFsbG9jYXRvckNsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0FMTE9DQVRPUihvYmopICAgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9HTF9BTExPQ0FUT1IsIEdzdEdMQWxsb2NhdG9yKSkKLSNkZWZpbmUgR1NUX0dMX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgICAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX0dMX0FMTE9DQVRPUiwgR3N0R0xBbGxvY2F0b3JDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9BTExPQ0FUT1JfQ0FTVChvYmopICAgICAgICAgICAgKChHc3RHTEFsbG9jYXRvciAqKShvYmopKQorI2RlZmluZSBHU1RfSVNfR0xfTUVNT1JZX0FMTE9DQVRPUihvYmopICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9HTF9NRU1PUllfQUxMT0NBVE9SKSkKKyNkZWZpbmUgR1NUX0lTX0dMX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9HTF9NRU1PUllfQUxMT0NBVE9SKSkKKyNkZWZpbmUgR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfR0VUX0NMQVNTKG9iaikgICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9HTF9NRU1PUllfQUxMT0NBVE9SLCBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzKSkKKyNkZWZpbmUgR1NUX0dMX01FTU9SWV9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfR0xfTUVNT1JZX0FMTE9DQVRPUiwgR3N0R0xNZW1vcnlBbGxvY2F0b3IpKQorI2RlZmluZSBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgICAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX0dMX01FTU9SWV9BTExPQ0FUT1IsIEdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MpKQorI2RlZmluZSBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9DQVNUKG9iaikgICAgICAgICAgICAoKEdzdEdMTWVtb3J5QWxsb2NhdG9yICopKG9iaikpCiAKLXR5cGVkZWYgZW51bSBfR3N0R0xNZW1vcnlUcmFuc2ZlcgotewotICAvKiBmb3JjZSBhIHRyYW5zZmVyIGJldHdlZW4gdGhlIHRleHR1cmUgYW5kIHRoZSBQQk8gKGlmIGF2YWlsYWJsZSkgKi8KLSAgR1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCA9ICgxIDw8IDApLAotICBHU1RfR0xfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQgPSAoMSA8PCAxKSwKLX0gR3N0R0xNZW1vcnlUcmFuc2ZlcjsKKyNkZWZpbmUgR1NUX0dMX01FTU9SWV9DQVNUKG9iaikgKChHc3RHTE1lbW9yeSAqKSBvYmopCiAKLSNkZWZpbmUgR1NUX0dMX01FTU9SWV9BRERfVFJBTlNGRVIobWVtLHN0YXRlKSAoKEdzdEdMTWVtb3J5ICopbWVtKS0+dHJhbnNmZXJfc3RhdGUgfD0gc3RhdGUKKyNkZWZpbmUgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZICJtZW1vcnk6R0xNZW1vcnkiCisjZGVmaW5lIEdTVF9HTF9NRU1PUllfVklERU9fRk9STUFUU19TVFIgXAorICAgICJ7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsICIgXAorICAgICJBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCAiIFwKKyAgICAiR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0iCiAKIC8qKgogICogR3N0R0xNZW1vcnk6CkBAIC02NiwxMTggKzY0LDE2MiBAQAogICovCiBzdHJ1Y3QgX0dzdEdMTWVtb3J5CiB7Ci0gIEdzdEdMQmFzZUJ1ZmZlciAgICAgICBtZW07CisgIEdzdEdMQmFzZU1lbW9yeSAgICAgICAgICAgbWVtOwogCi0gIGd1aW50ICAgICAgICAgICAgICAgICB0ZXhfaWQ7Ci0gIGd1aW50ICAgICAgICAgICAgICAgICB0ZXhfdGFyZ2V0OwotICBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4X3R5cGU7Ci0gIEdzdFZpZGVvSW5mbyAgICAgICAgICBpbmZvOwotICBHc3RWaWRlb0FsaWdubWVudCAgICAgdmFsaWduOwotICBndWludCAgICAgICAgICAgICAgICAgcGxhbmU7Ci0gIGdmbG9hdCAgICAgICAgICAgICAgICB0ZXhfc2NhbGluZ1syXTsKKyAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICB0ZXhfaWQ7CisgIEdzdEdMVGV4dHVyZVRhcmdldCAgICAgICAgdGV4X3RhcmdldDsKKyAgR3N0VmlkZW9HTFRleHR1cmVUeXBlICAgICB0ZXhfdHlwZTsKKyAgR3N0VmlkZW9JbmZvICAgICAgICAgICAgICBpbmZvOworICBHc3RWaWRlb0FsaWdubWVudCAgICAgICAgIHZhbGlnbjsKKyAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICBwbGFuZTsKKyAgZ2Zsb2F0ICAgICAgICAgICAgICAgICAgICB0ZXhfc2NhbGluZ1syXTsKIAotICAvKiA8cHJpdmF0ZT4gKi8KLSAgR3N0R0xNZW1vcnlUcmFuc2ZlciAgIHRyYW5zZmVyX3N0YXRlOwotICBnYm9vbGVhbiAgICAgICAgICAgICAgdGV4dHVyZV93cmFwcGVkOwotICBHRGVzdHJveU5vdGlmeSAgICAgICAgbm90aWZ5OwotICBncG9pbnRlciAgICAgICAgICAgICAgdXNlcl9kYXRhOwotICBndWludCAgICAgICAgICAgICAgICAgdW5wYWNrX2xlbmd0aDsKLSAgZ3VpbnQgICAgICAgICAgICAgICAgIHRleF93aWR0aDsKKyAgLyogPHByb3RlY3RlZD4gKi8KKyAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICB0ZXh0dXJlX3dyYXBwZWQ7CisgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgdW5wYWNrX2xlbmd0aDsKKyAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICB0ZXhfd2lkdGg7CiB9OwogCi0jZGVmaW5lIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSAibWVtb3J5OkdMTWVtb3J5IgotI2RlZmluZSBHU1RfR0xfTUVNT1JZX1ZJREVPX0ZPUk1BVFNfU1RSIFwKLSAgICAieyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCAiIFwKLSAgICAiQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgIiBcCi0gICAgIkdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9IgordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zOworCisjZGVmaW5lIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPICgxIDw8IDMpCisKK3N0cnVjdCBfR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMKK3sKKyAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zICBwYXJlbnQ7CisKKyAgR3N0VmlkZW9JbmZvICAgICAgICAgICp2X2luZm87CisgIGd1aW50ICAgICAgICAgICAgICAgICAgcGxhbmU7CisgIEdzdFZpZGVvQWxpZ25tZW50ICAgICAqdmFsaWduOworICBHc3RHTFRleHR1cmVUYXJnZXQgICAgIHRhcmdldDsKK307CisKK2dib29sZWFuICAgICAgICBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfaW5pdF9mdWxsICAgICAgICAoR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplIHN0cnVjdF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBhbGxvY19mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMgY29weSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMgZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIGFsbG9jX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9JbmZvICogdl9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBwbGFuZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHdyYXBwZWRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgZ2xfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSk7CitHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXcgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBhbGxvY19wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvSW5mbyAqIHZfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgcGxhbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0KTsKK0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICogZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX2RhdGEgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogYWxsb2NfcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9JbmZvICogdl9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgcGxhbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB3cmFwcGVkX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpOworCitHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF90ZXh0dXJlIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIGFsbG9jX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvSW5mbyAqIHZfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHBsYW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgdGV4X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KTsKKworLyogc3ViY2xhc3MgdXNhZ2UgKi8KK3ZvaWQgICAgICAgICAgICBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhICAgIChHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcyk7CisvKiBzdWJjbGFzcyB1c2FnZSAqLwordm9pZCAgICAgICAgICAgIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGEgICAgKEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICogc3JjX3ZpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqIGRlc3RfdmlkKTsKIAogLyoqCi0gKiBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUjoKKyAqIEdzdEdMTWVtb3J5QWxsb2NhdG9yCisgKgorICogT3BhcXVlICNHc3RHTE1lbW9yeUFsbG9jYXRvciBzdHJ1Y3QKKyAqLworc3RydWN0IF9Hc3RHTE1lbW9yeUFsbG9jYXRvcgoreworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgcGFyZW50OworfTsKKworLyoqCisgKiBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzOgorICoKKyAqIFRoZSAjR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyBvbmx5IGNvbnRhaW5zIHByaXZhdGUgZGF0YQorICovCitzdHJ1Y3QgX0dzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MKK3sKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgICAgICAgICAgICAgcGFyZW50X2NsYXNzOworCisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uICAgICAgIG1hcDsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uICAgICAgY29weTsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbiAgICAgdW5tYXA7Cit9OworCisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5oPgorCisvKioKKyAqIEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUU6CiAgKgogICogVGhlIG5hbWUgb2YgdGhlIEdMIG1lbW9yeSBhbGxvY2F0b3IKICAqLwotI2RlZmluZSBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUiAgICJHTE1lbW9yeSIKKyNkZWZpbmUgR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRSAgICJHTE1lbW9yeSIKIAotdm9pZCAgICAgICAgICBnc3RfZ2xfbWVtb3J5X2luaXQgKHZvaWQpOwotZ2Jvb2xlYW4gICAgICBnc3RfaXNfZ2xfbWVtb3J5IChHc3RNZW1vcnkgKiBtZW0pOwordm9pZCAgICAgICAgICAgIGdzdF9nbF9tZW1vcnlfaW5pdF9vbmNlICh2b2lkKTsKK2dib29sZWFuICAgICAgICBnc3RfaXNfZ2xfbWVtb3J5IChHc3RNZW1vcnkgKiBtZW0pOwogCi1Hc3RNZW1vcnkgKiAgIGdzdF9nbF9tZW1vcnlfYWxsb2MgICAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICpwYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9JbmZvICogaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBwbGFuZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0FsaWdubWVudCAqdmFsaWduKTsKLUdzdEdMTWVtb3J5ICogZ3N0X2dsX21lbW9yeV93cmFwcGVkIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvSW5mbyAqIGluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgcGxhbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9BbGlnbm1lbnQgKnZhbGlnbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpOwotR3N0R0xNZW1vcnkgKiBnc3RfZ2xfbWVtb3J5X3dyYXBwZWRfdGV4dHVyZSAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHRleHR1cmVfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCB0ZXh0dXJlX3RhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvSW5mbyAqIGluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBwbGFuZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvQWxpZ25tZW50ICp2YWxpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpOwordm9pZCAgICAgICAgICAgIGdzdF9nbF9tZW1vcnlfaW5pdCAgICAgICAgICAgICAgKEdzdEdMTWVtb3J5ICogbWVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RNZW1vcnkgKiBwYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKnBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0luZm8gKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHBsYW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvQWxpZ25tZW50ICp2YWxpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSk7CiAKLXZvaWQgICAgICAgICAgZ3N0X2dsX21lbW9yeV9kb3dubG9hZF90cmFuc2ZlciAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pOwotdm9pZCAgICAgICAgICBnc3RfZ2xfbWVtb3J5X3VwbG9hZF90cmFuc2ZlciAgIChHc3RHTE1lbW9yeSAqIGdsX21lbSk7CitnYm9vbGVhbiAgICAgICAgZ3N0X2dsX21lbW9yeV9jb3B5X2ludG8gICAgICAgICAoR3N0R0xNZW1vcnkgKmdsX21lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCB0ZXhfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IGhlaWdodCk7CitnYm9vbGVhbiAgICAgICAgZ3N0X2dsX21lbW9yeV9jb3B5X3RleGltYWdlICAgICAoR3N0R0xNZW1vcnkgKiBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgdGV4X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMVGV4dHVyZVRhcmdldCBvdXRfdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvR0xUZXh0dXJlVHlwZSBvdXRfdGV4X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IGhlaWdodCk7CiAKLWdib29sZWFuICAgICAgZ3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZSAoR3N0R0xNZW1vcnkgKmdsX21lbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgdGV4X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IHN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gcmVzcGVjaWZ5KTsKK2dib29sZWFuICAgICAgICBnc3RfZ2xfbWVtb3J5X3JlYWRfcGl4ZWxzICAgICAgIChHc3RHTE1lbW9yeSAqIGdsX21lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciByZWFkX3BvaW50ZXIpOwordm9pZCAgICAgICAgICAgIGdzdF9nbF9tZW1vcnlfdGV4c3ViaW1hZ2UgICAgICAgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHJlYWRfcG9pbnRlcik7CiAKLWdib29sZWFuICAgICAgZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIgIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9JbmZvICogaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0FsaWdubWVudCAqdmFsaWduLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7Ci1nYm9vbGVhbiAgICAgIGdzdF9nbF9tZW1vcnlfc2V0dXBfd3JhcHBlZCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0luZm8gKiBpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvQWxpZ25tZW50ICp2YWxpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgZGF0YVtHU1RfVklERU9fTUFYX1BMQU5FU10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xNZW1vcnkgKnRleHR1cmVzW0dTVF9WSURFT19NQVhfUExBTkVTXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KTsKKy8qIGFjY2Vzc29ycyAqLworZ2ludCAgICAgICAgICAgICAgICAgICAgZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV93aWR0aCAgICAgKEdzdEdMTWVtb3J5ICogZ2xfbWVtKTsKK2dpbnQgICAgICAgICAgICAgICAgICAgIGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaGVpZ2h0ICAgIChHc3RHTE1lbW9yeSAqIGdsX21lbSk7CitHc3RWaWRlb0dMVGV4dHVyZVR5cGUgICBnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3R5cGUgICAgICAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pOworR3N0R0xUZXh0dXJlVGFyZ2V0ICAgICAgZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90YXJnZXQgICAgKEdzdEdMTWVtb3J5ICogZ2xfbWVtKTsKK2d1aW50ICAgICAgICAgICAgICAgICAgIGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaWQgICAgICAgIChHc3RHTE1lbW9yeSAqIGdsX21lbSk7CiAKLWdpbnQgICAgICAgICAgZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV93aWR0aCAgKEdzdEdMTWVtb3J5ICogZ2xfbWVtKTsKLWdpbnQgICAgICAgICAgZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9oZWlnaHQgKEdzdEdMTWVtb3J5ICogZ2xfbWVtKTsKK2dib29sZWFuICAgICAgICAgICAgICAgIGdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyICAgICAgICAgIChHc3RHTE1lbW9yeUFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RCdWZmZXIgKiBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpOwogCi0vKiB1dGlsaXR5IGZ1bmN0aW9ucyAqLwotR3N0VmlkZW9HTFRleHR1cmVUeXBlIGdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQgKEdzdEdMQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBwbGFuZSk7Ci1ndWludCAgICAgICAgICAgICAgICAgZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZSAoR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF9mb3JtYXQpOwotZ3VpbnQgICAgICAgICAgICAgICAgIGdzdF9nbF9zaXplZF9nbF9mb3JtYXRfZnJvbV9nbF9mb3JtYXRfdHlwZSAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHR5cGUpOwogCi0vKioKLSAqIEdzdEdMQWxsb2NhdG9yCi0gKgotICogT3BhcXVlICNHc3RHTEFsbG9jYXRvciBzdHJ1Y3QKLSAqLwotc3RydWN0IF9Hc3RHTEFsbG9jYXRvcgotewotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3IgcGFyZW50OwotICBHc3RNZW1vcnlDb3B5RnVuY3Rpb24gZmFsbGJhY2tfbWVtX2NvcHk7Ci19OwotCi0vKioKLSAqIEdzdEdMQWxsb2NhdG9yQ2xhc3M6Ci0gKgotICogVGhlICNHc3RHTEFsbG9jYXRvckNsYXNzIG9ubHkgY29udGFpbnMgcHJpdmF0ZSBkYXRhCi0gKi8KLXN0cnVjdCBfR3N0R0xBbGxvY2F0b3JDbGFzcwotewotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OworR3N0R0xNZW1vcnlBbGxvY2F0b3IgKiAgZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHQgKEdzdEdMQ29udGV4dCAqY29udGV4dCk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY1M2UxYwotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jCkBAIC0wLDAgKzEsODg1IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0dGhldyBXYXRlcnMgPHlzdHJlZXQwMEBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uaD4KKworLyoqCisgKiBTRUNUSU9OOmdzdGdsbWVtb3J5cGJvCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgdGV4dHVyZXMKKyAqIEBzZWVfYWxzbzogI0dzdE1lbW9yeSwgI0dzdEFsbG9jYXRvciwgI0dzdEdMQnVmZmVyUG9vbAorICoKKyAqICNHc3RHTE1lbW9yeVBCTyBpcyBjcmVhdGVkIG9yIHdyYXBwZWQgdGhyb3VnaCBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MoKQorICogd2l0aCAjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMuCisgKgorICogI0dzdEdMTWVtb3J5UEJPIGlzIGNyZWF0ZWQgdGhyb3VnaCBnc3RfZ2xfbWVtb3J5X3Bib19hbGxvYygpIG9yIHN5c3RlbSBtZW1vcnkgY2FuCisgKiBiZSB3cmFwcGVkIHRocm91Z2ggZ3N0X2dsX21lbW9yeV9wYm9fd3JhcHBlZCgpLgorICoKKyAqIERhdGEgaXMgdXBsb2FkZWQgb3IgZG93bmxvYWRlZCBmcm9tIHRoZSBHUFUgYXMgaXMgbmVjZXNzYXJ5LgorICovCisKKy8qIEltcGxlbWVudGF0aW9uIG5vdGVzCisgKgorICogUEJPIHRyYW5zZmVyJ3MgYXJlIGltcGxlbWVudGVkIHVzaW5nIEdzdEdMQnVmZmVyLiAgV2UganVzdCBuZWVkIHRvCisgKiBlbnN1cmUgdGhhdCB0aGUgdGV4dHVyZSBkYXRhIGlzIHdyaXR0ZW4vcmVhZCB0by9mcm9tIGJlZm9yZS9hZnRlciBjYWxsaW5nCisgKiBtYXAgKG1lbS0+cGJvLCBSRUFEKSB3aGljaCBwZXJmb3JtcyB0aGUgcGJvIGJ1ZmZlciB0cmFuc2Zlci4KKyAqLworCisjZGVmaW5lIFVTSU5HX09QRU5HTChjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wsIDEsIDApKQorI2RlZmluZSBVU0lOR19PUEVOR0wzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTDMsIDMsIDEpKQorI2RlZmluZSBVU0lOR19HTEVTKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMsIDEsIDApKQorI2RlZmluZSBVU0lOR19HTEVTMihjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMiwgMCkpCisjZGVmaW5lIFVTSU5HX0dMRVMzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAzLCAwKSkKKworI2RlZmluZSBHTF9NRU1fSEVJR0hUKGdsX21lbSkgX2dldF9wbGFuZV9oZWlnaHQgKCZnbF9tZW0tPm1lbS5pbmZvLCBnbF9tZW0tPm1lbS5wbGFuZSkKKyNkZWZpbmUgR0xfTUVNX1NUUklERShnbF9tZW0pIEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSAoJmdsX21lbS0+bWVtLmluZm8sIGdsX21lbS0+bWVtLnBsYW5lKQorCisjZGVmaW5lIENPTlRFWFRfU1VQUE9SVFNfUEJPX1VQTE9BRChjb250ZXh0KSBcCisgICAgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIFwKKyAgICAgICAgR1NUX0dMX0FQSV9PUEVOR0wgfCBHU1RfR0xfQVBJX09QRU5HTDMsIDIsIDEpIFwKKyAgICAgICAgfHwgZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMywgMCkpCisjZGVmaW5lIENPTlRFWFRfU1VQUE9SVFNfUEJPX0RPV05MT0FEKGNvbnRleHQpIFwKKyAgICAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgXAorICAgICAgICBHU1RfR0xfQVBJX09QRU5HTCB8IEdTVF9HTF9BUElfT1BFTkdMMyB8IEdTVF9HTF9BUElfR0xFUzIsIDMsIDApKQorCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0dMX01FTU9SWSk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBHU1RfQ0FUX0dMX01FTU9SWQorCitzdGF0aWMgR3N0QWxsb2NhdG9yICpfZ2xfYWxsb2NhdG9yOworCisvKiBjb21wYXRhYmlsaXR5IGRlZmluaXRpb25zLi4uICovCisjaWZuZGVmIEdMX1BJWEVMX1BBQ0tfQlVGRkVSCisjZGVmaW5lIEdMX1BJWEVMX1BBQ0tfQlVGRkVSIDB4ODhFQgorI2VuZGlmCisjaWZuZGVmIEdMX1BJWEVMX1VOUEFDS19CVUZGRVIKKyNkZWZpbmUgR0xfUElYRUxfVU5QQUNLX0JVRkZFUiAweDg4RUMKKyNlbmRpZgorI2lmbmRlZiBHTF9TVFJFQU1fUkVBRAorI2RlZmluZSBHTF9TVFJFQU1fUkVBRCAweDg4RTEKKyNlbmRpZgorI2lmbmRlZiBHTF9TVFJFQU1fRFJBVworI2RlZmluZSBHTF9TVFJFQU1fRFJBVyAweDg4RTAKKyNlbmRpZgorI2lmbmRlZiBHTF9TVFJFQU1fQ09QWQorI2RlZmluZSBHTF9TVFJFQU1fQ09QWSAweDg4RTIKKyNlbmRpZgorI2lmbmRlZiBHTF9VTlBBQ0tfUk9XX0xFTkdUSAorI2RlZmluZSBHTF9VTlBBQ0tfUk9XX0xFTkdUSCAweDBDRjIKKyNlbmRpZgorCisjaWZuZGVmIEdMX1RFWFRVUkVfUkVDVEFOR0xFCisjZGVmaW5lIEdMX1RFWFRVUkVfUkVDVEFOR0xFIDB4ODRGNQorI2VuZGlmCisjaWZuZGVmIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTCisjZGVmaW5lIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTIDB4OEQ2NQorI2VuZGlmCisKKyNkZWZpbmUgcGFyZW50X2NsYXNzIGdzdF9nbF9tZW1vcnlfcGJvX2FsbG9jYXRvcl9wYXJlbnRfY2xhc3MKK0dfREVGSU5FX1RZUEUgKEdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yLCBnc3RfZ2xfbWVtb3J5X3Bib19hbGxvY2F0b3IsCisgICAgR1NUX1RZUEVfR0xfTUVNT1JZX0FMTE9DQVRPUik7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIC8qIGluICovCisgIEdzdEdMTWVtb3J5UEJPICpzcmM7CisgIEdzdFZpZGVvR0xUZXh0dXJlVHlwZSBvdXRfZm9ybWF0OworICBndWludCBvdXRfd2lkdGgsIG91dF9oZWlnaHQ7CisgIGd1aW50IG91dF9zdHJpZGU7CisgIGdib29sZWFuIHJlc3BlY2lmeTsKKyAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRleF90YXJnZXQ7CisgIC8qIGlub3V0ICovCisgIGd1aW50IHRleF9pZDsKKyAgLyogb3V0ICovCisgIGdib29sZWFuIHJlc3VsdDsKK30gR3N0R0xNZW1vcnlQQk9Db3B5UGFyYW1zOworCitzdGF0aWMgaW5saW5lIGd1aW50CitfZ2V0X3BsYW5lX2hlaWdodCAoR3N0VmlkZW9JbmZvICogaW5mbywgZ3VpbnQgcGxhbmUpCit7CisgIGlmIChHU1RfVklERU9fSU5GT19JU19ZVVYgKGluZm8pKQorICAgIC8qIEZvciBub3cgY29tcG9uZW50IHdpZHRoIGFuZCBwbGFuZSB3aWR0aCBhcmUgdGhlIHNhbWUgYW5kIHRoZQorICAgICAqIHBsYW5lLWNvbXBvbmVudCBtYXBwaW5nIG1hdGNoZXMKKyAgICAgKi8KKyAgICByZXR1cm4gR1NUX1ZJREVPX0lORk9fQ09NUF9IRUlHSFQgKGluZm8sIHBsYW5lKTsKKyAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkdCLCBHUkFZICovCisgICAgcmV0dXJuIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoaW5mbyk7Cit9CisKK3N0YXRpYyB2b2lkCitfdXBsb2FkX3Bib19tZW1vcnkgKEdzdEdMTWVtb3J5UEJPICogZ2xfbWVtLCBHc3RNYXBJbmZvICogaW5mbywKKyAgICBHc3RHTEJ1ZmZlciAqIHBibywgR3N0TWFwSW5mbyAqIHBib19pbmZvKQoreworICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBnbF9tZW0tPm1lbS5tZW0uY29udGV4dDsKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2w7CisgIGd1aW50IHBib19pZDsKKworICBpZiAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKGdsX21lbSwgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKSkKKyAgICByZXR1cm47CisKKyAgZ19yZXR1cm5faWZfZmFpbCAoQ09OVEVYVF9TVVBQT1JUU19QQk9fVVBMT0FEIChjb250ZXh0KSk7CisKKyAgZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisgIHBib19pZCA9ICooZ3VpbnQgKikgcGJvX2luZm8tPmRhdGE7CisKKyAgR1NUX0NBVF9MT0cgKEdTVF9DQVRfR0xfTUVNT1JZLCAidXBsb2FkIGZvciB0ZXh0dXJlIGlkOiV1LCB3aXRoIHBibyAldSAldXgldSIsCisgICAgICBnbF9tZW0tPm1lbS50ZXhfaWQsIHBib19pZCwgZ2xfbWVtLT5tZW0udGV4X3dpZHRoLAorICAgICAgR0xfTUVNX0hFSUdIVCAoZ2xfbWVtKSk7CisKKyAgZ2wtPkJpbmRCdWZmZXIgKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIHBib19pZCk7CisgIGdzdF9nbF9tZW1vcnlfdGV4c3ViaW1hZ2UgKEdTVF9HTF9NRU1PUllfQ0FTVCAoZ2xfbWVtKSwgTlVMTCk7CisgIGdsLT5CaW5kQnVmZmVyIChHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwKTsKK30KKworc3RhdGljIGd1aW50CitfbmV3X3RleHR1cmUgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGd1aW50IHRhcmdldCwgZ3VpbnQgaW50ZXJuYWxfZm9ybWF0LAorICAgIGd1aW50IGZvcm1hdCwgZ3VpbnQgdHlwZSwgZ3VpbnQgd2lkdGgsIGd1aW50IGhlaWdodCkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisgIGd1aW50IHRleF9pZDsKKworICBnbC0+R2VuVGV4dHVyZXMgKDEsICZ0ZXhfaWQpOworICBnbC0+QmluZFRleHR1cmUgKHRhcmdldCwgdGV4X2lkKTsKKyAgaWYgKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEIHx8IHRhcmdldCA9PSBHTF9URVhUVVJFX1JFQ1RBTkdMRSkKKyAgICBnbC0+VGV4SW1hZ2UyRCAodGFyZ2V0LCAwLCBpbnRlcm5hbF9mb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwgdHlwZSwKKyAgICAgICAgTlVMTCk7CisKKyAgZ2wtPlRleFBhcmFtZXRlcmkgKHRhcmdldCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOworICBnbC0+VGV4UGFyYW1ldGVyaSAodGFyZ2V0LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7CisgIGdsLT5UZXhQYXJhbWV0ZXJpICh0YXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgZ2wtPlRleFBhcmFtZXRlcmkgKHRhcmdldCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworCisgIGdsLT5CaW5kVGV4dHVyZSAodGFyZ2V0LCAwKTsKKworICByZXR1cm4gdGV4X2lkOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19nbF9tZW1fY3JlYXRlIChHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSwgR0Vycm9yICoqIGVycm9yKQoreworICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBnbF9tZW0tPm1lbS5tZW0uY29udGV4dDsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKmFsbG9jX2NsYXNzOworCisgIGFsbG9jX2NsYXNzID0gR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUyAocGFyZW50X2NsYXNzKTsKKyAgaWYgKCFhbGxvY19jbGFzcy0+Y3JlYXRlICgoR3N0R0xCYXNlTWVtb3J5ICopIGdsX21lbSwgZXJyb3IpKQorICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoQ09OVEVYVF9TVVBQT1JUU19QQk9fRE9XTkxPQUQgKGNvbnRleHQpCisgICAgICB8fCBDT05URVhUX1NVUFBPUlRTX1BCT19VUExPQUQgKGNvbnRleHQpKSB7CisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyBhbGxvY19wYXJhbXMgPQorICAgICAgICB7IDAsIEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtKS0+YWxpZ24sIDAsIDAgfTsKKyAgICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKmJ1Zl9hbGxvY2F0b3I7CisgICAgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7CisKKyAgICBidWZfYWxsb2NhdG9yID0KKyAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUiAoZ3N0X2FsbG9jYXRvcl9maW5kCisgICAgICAgIChHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9OQU1FKSk7CisgICAgcGFyYW1zID0KKyAgICAgICAgZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0aW9uX3BhcmFtc19uZXcgKGNvbnRleHQsCisgICAgICAgIEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtKS0+c2l6ZSwgJmFsbG9jX3BhcmFtcywgR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwKKyAgICAgICAgR0xfU1RSRUFNX0RSQVcpOworCisgICAgLyogRklYTUU6IGxhenkgaW5pdCB0aGlzIGZvciByZXNvdXJjZSBjb25zdHJhaW5lZCBwbGF0Zm9ybXMKKyAgICAgKiBXaWxsIG5lZWQgdG8gZml4IHBibyBkZXRlY3Rpb24gYmFzZWQgb24gdGhlIGV4aXN0ZW5jZSBvZiB0aGUgbWVtLmlkIHRoZW4gKi8KKyAgICBnbF9tZW0tPnBibyA9IChHc3RHTEJ1ZmZlciAqKSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKGJ1Zl9hbGxvY2F0b3IsCisgICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKworICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgICAgZ3N0X29iamVjdF91bnJlZiAoYnVmX2FsbG9jYXRvcik7CisKKyAgICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9NRU1PUlksICJnZW5lcmF0ZWQgcGJvICV1IiwgZ2xfbWVtLT5wYm8tPmlkKTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorX2dsX21lbV9pbml0IChHc3RHTE1lbW9yeVBCTyAqIG1lbSwgR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLAorICAgIEdzdE1lbW9yeSAqIHBhcmVudCwgR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLCBHc3RWaWRlb0luZm8gKiBpbmZvLAorICAgIGd1aW50IHBsYW5lLCBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgZ3N0X2dsX21lbW9yeV9pbml0ICgoR3N0R0xNZW1vcnkgKikgbWVtLCBhbGxvY2F0b3IsIHBhcmVudCwKKyAgICAgIGNvbnRleHQsIHRhcmdldCwgcGFyYW1zLCBpbmZvLCBwbGFuZSwgdmFsaWduLCB1c2VyX2RhdGEsIG5vdGlmeSk7Cit9CisKK3N0YXRpYyBHc3RHTE1lbW9yeVBCTyAqCitfZ2xfbWVtX25ldyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBwYXJlbnQsCisgICAgR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLCBHc3RWaWRlb0luZm8gKiBpbmZvLAorICAgIGd1aW50IHBsYW5lLCBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgR3N0R0xNZW1vcnlQQk8gKm1lbTsKKyAgbWVtID0gZ19uZXcwIChHc3RHTE1lbW9yeVBCTywgMSk7CisgIG1lbS0+bWVtLnRleHR1cmVfd3JhcHBlZCA9IEZBTFNFOworCisgIF9nbF9tZW1faW5pdCAobWVtLCBhbGxvY2F0b3IsIHBhcmVudCwgY29udGV4dCwgdGFyZ2V0LCBwYXJhbXMsIGluZm8sIHBsYW5lLAorICAgICAgdmFsaWduLCB1c2VyX2RhdGEsIG5vdGlmeSk7CisKKyAgcmV0dXJuIG1lbTsKK30KKworc3RhdGljIGdib29sZWFuCitfcmVhZF9waXhlbHNfdG9fcGJvIChHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSkKK3sKKyAgaWYgKCFnbF9tZW0tPnBibyB8fCAhQ09OVEVYVF9TVVBQT1JUU19QQk9fRE9XTkxPQUQgKGdsX21lbS0+bWVtLm1lbS5jb250ZXh0KQorICAgICAgfHwgZ2xfbWVtLT5tZW0udGV4X3R5cGUgPT0gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0UKKyAgICAgIHx8IGdsX21lbS0+bWVtLnRleF90eXBlID09IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFX0FMUEhBKQorICAgIC8qIHVuc3VwcG9ydGVkICovCisgICAgcmV0dXJuIEZBTFNFOworCisgIGlmIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChnbF9tZW0sCisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKSB7CisgICAgLyogY29weSB0ZXh0dXJlIGRhdGEgaW50byBpbnRvIHRoZSBwYm8gYW5kIG1hcCB0aGF0ICovCisgICAgZ3NpemUgcGxhbmVfc3RhcnQ7CisgICAgR3N0TWFwSW5mbyBwYm9faW5mbzsKKworICAgIHBsYW5lX3N0YXJ0ID0KKyAgICAgICAgZ3N0X2dsX2dldF9wbGFuZV9zdGFydCAoJmdsX21lbS0+bWVtLmluZm8sICZnbF9tZW0tPm1lbS52YWxpZ24sCisgICAgICAgIGdsX21lbS0+bWVtLnBsYW5lKSArIEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtKS0+b2Zmc2V0OworCisgICAgZ2xfbWVtLT5wYm8tPnRhcmdldCA9IEdMX1BJWEVMX1BBQ0tfQlVGRkVSOworICAgIGlmICghZ3N0X21lbW9yeV9tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtLT5wYm8pLCAmcGJvX2luZm8sCisgICAgICAgICAgICBHU1RfTUFQX1dSSVRFIHwgR1NUX01BUF9HTCkpIHsKKyAgICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfR0xfTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBwYm8gZm9yIHdyaXRpbmciKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBpZiAoIWdzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHMgKChHc3RHTE1lbW9yeSAqKSBnbF9tZW0sCisgICAgICAgICAgICAoZ3BvaW50ZXIpIHBsYW5lX3N0YXJ0KSkgeworICAgICAgZ3N0X21lbW9yeV91bm1hcCAoR1NUX01FTU9SWV9DQVNUIChnbF9tZW0tPnBibyksICZwYm9faW5mbyk7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgZ3N0X21lbW9yeV91bm1hcCAoR1NUX01FTU9SWV9DQVNUIChnbF9tZW0tPnBibyksICZwYm9faW5mbyk7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdwb2ludGVyCitfcGJvX2Rvd25sb2FkX3RyYW5zZmVyIChHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCit7CisgIEdzdE1hcEluZm8gKnBib19pbmZvOworCisgIGdsX21lbS0+cGJvLT50YXJnZXQgPSBHTF9QSVhFTF9QQUNLX0JVRkZFUjsKKyAgLyogdGV4dHVyZSAtPiBwYm8gKi8KKyAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9SRUFECisgICAgICAmJiBHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChnbF9tZW0sCisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKSB7CisgICAgR3N0TWFwSW5mbyBpbmZvOworCisgICAgR1NUX0NBVF9UUkFDRSAoR1NUX0NBVF9HTF9NRU1PUlksCisgICAgICAgICJhdHRlbXB0aW5nIGRvd25sb2FkIG9mIHRleHR1cmUgJXUgIiAidXNpbmcgcGJvICV1IiwgZ2xfbWVtLT5tZW0udGV4X2lkLAorICAgICAgICBnbF9tZW0tPnBiby0+aWQpOworCisgICAgaWYgKCFnc3RfbWVtb3J5X21hcCAoR1NUX01FTU9SWV9DQVNUIChnbF9tZW0tPnBibyksICZpbmZvLAorICAgICAgICAgICAgR1NUX01BUF9XUklURSB8IEdTVF9NQVBfR0wpKSB7CisgICAgICBHU1RfQ0FUX1dBUk5JTkcgKEdTVF9DQVRfR0xfTUVNT1JZLCAiRmFpbGVkIHRvIHdyaXRlIHRvIFBCTyIpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFfcmVhZF9waXhlbHNfdG9fcGJvIChnbF9tZW0pKQorICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBnc3RfbWVtb3J5X3VubWFwIChHU1RfTUVNT1JZX0NBU1QgKGdsX21lbS0+cGJvKSwgJmluZm8pOworICB9CisKKyAgcGJvX2luZm8gPSBnX25ldzAgKEdzdE1hcEluZm8sIDEpOworCisgIC8qIHBibyAtPiBkYXRhICovCisgIC8qIGdldCBhIGNwdSBhY2Nlc3NpYmxlIG1hcHBpbmcgZnJvbSB0aGUgcGJvICovCisgIGlmICghZ3N0X21lbW9yeV9tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtLT5wYm8pLCBwYm9faW5mbywgaW5mby0+ZmxhZ3MpKSB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9HTF9NRU1PUlksICJGYWlsZWQgdG8gbWFwIHBibyIpOworICAgIGdfZnJlZSAocGJvX2luZm8pOworICAgIHJldHVybiBOVUxMOworICB9CisgIGluZm8tPnVzZXJfZGF0YVswXSA9IHBib19pbmZvOworCisgIHJldHVybiBwYm9faW5mby0+ZGF0YTsKK30KKworc3RhdGljIGdwb2ludGVyCitfZ2xfbWVtX21hcF9jcHVfYWNjZXNzIChHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCit7CisgIGdwb2ludGVyIGRhdGEgPSBOVUxMOworCisgIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvY19kYXRhICgoR3N0R0xCYXNlTWVtb3J5ICopIGdsX21lbSk7CisKKyAgaWYgKCFkYXRhICYmIGdsX21lbS0+cGJvCisgICAgICAmJiBDT05URVhUX1NVUFBPUlRTX1BCT19ET1dOTE9BRCAoZ2xfbWVtLT5tZW0ubWVtLmNvbnRleHQpKQorICAgIGRhdGEgPSBfcGJvX2Rvd25sb2FkX3RyYW5zZmVyIChnbF9tZW0sIGluZm8sIHNpemUpOworCisgIGlmICghZGF0YSkgeworICAgIEdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKmFsbG9jX2NsYXNzOworCisgICAgYWxsb2NfY2xhc3MgPSBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUyAocGFyZW50X2NsYXNzKTsKKworICAgIGRhdGEgPSBhbGxvY19jbGFzcy0+bWFwICgoR3N0R0xCYXNlTWVtb3J5ICopIGdsX21lbSwgaW5mbywgc2l6ZSk7CisgIH0KKworICByZXR1cm4gZGF0YTsKK30KKworc3RhdGljIGdwb2ludGVyCitfZ2xfbWVtX21hcF9ncHVfYWNjZXNzIChHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCit7CisgIGdwb2ludGVyIGRhdGEgPSAmZ2xfbWVtLT5tZW0udGV4X2lkOworCisgIGlmICgoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1JFQUQpID09IEdTVF9NQVBfUkVBRCkgeworICAgIGlmIChnbF9tZW0tPnBibyAmJiBDT05URVhUX1NVUFBPUlRTX1BCT19VUExPQUQgKGdsX21lbS0+bWVtLm1lbS5jb250ZXh0KSkgeworICAgICAgR3N0TWFwSW5mbyBwYm9faW5mbzsKKworICAgICAgLyogZGF0YSAtPiBwYm8gKi8KKyAgICAgIGlmICghZ3N0X21lbW9yeV9tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtLT5wYm8pLCAmcGJvX2luZm8sCisgICAgICAgICAgICAgIEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKSB7CisgICAgICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfR0xfTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBwYm8iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICB9CisKKyAgICAgIC8qIHBibyAtPiB0ZXh0dXJlICovCisgICAgICBfdXBsb2FkX3Bib19tZW1vcnkgKGdsX21lbSwgaW5mbywgZ2xfbWVtLT5wYm8sICZwYm9faW5mbyk7CisKKyAgICAgIGdzdF9tZW1vcnlfdW5tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtLT5wYm8pLCAmcGJvX2luZm8pOworICAgIH0gZWxzZSB7CisgICAgICBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKKworICAgICAgYWxsb2NfY2xhc3MgPSBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUyAocGFyZW50X2NsYXNzKTsKKworICAgICAgZGF0YSA9IGFsbG9jX2NsYXNzLT5tYXAgKChHc3RHTEJhc2VNZW1vcnkgKikgZ2xfbWVtLCBpbmZvLCBzaXplKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gZGF0YTsKK30KKworc3RhdGljIGdwb2ludGVyCitfZ2xfbWVtX21hcCAoR3N0R0xNZW1vcnlQQk8gKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBtYXhzaXplKQoreworICBncG9pbnRlciBkYXRhOworCisgIGlmICgoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMKSA9PSBHU1RfTUFQX0dMKSB7CisgICAgaWYgKGdsX21lbS0+bWVtLnRleF90YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykKKyAgICAgIHJldHVybiAmZ2xfbWVtLT5tZW0udGV4X2lkOworCisgICAgZGF0YSA9IF9nbF9tZW1fbWFwX2dwdV9hY2Nlc3MgKGdsX21lbSwgaW5mbywgbWF4c2l6ZSk7CisgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIG5vdCBHTCAqLworICAgIGlmIChnbF9tZW0tPm1lbS50ZXhfdGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpIHsKKyAgICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfR0xfTUVNT1JZLCAiQ2Fubm90IG1hcCBFeHRlcm5hbCBPRVMgdGV4dHVyZXMiKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGRhdGEgPSBfZ2xfbWVtX21hcF9jcHVfYWNjZXNzIChnbF9tZW0sIGluZm8sIG1heHNpemUpOworICB9CisKKyAgcmV0dXJuIGRhdGE7Cit9CisKK3N0YXRpYyB2b2lkCitfZ2xfbWVtX3VubWFwX2NwdV9hY2Nlc3MgKEdzdEdMTWVtb3J5UEJPICogZ2xfbWVtLCBHc3RNYXBJbmZvICogaW5mbykKK3sKKyAgaWYgKCFnbF9tZW0tPnBibyB8fCAhQ09OVEVYVF9TVVBQT1JUU19QQk9fRE9XTkxPQUQgKGdsX21lbS0+bWVtLm1lbS5jb250ZXh0KSkKKyAgICAvKiBQQk8ncyBub3Qgc3VwcG9ydGVkICovCisgICAgcmV0dXJuOworCisgIGdsX21lbS0+cGJvLT50YXJnZXQgPSBHTF9QSVhFTF9QQUNLX0JVRkZFUjsKKyAgZ3N0X21lbW9yeV91bm1hcCAoR1NUX01FTU9SWV9DQVNUIChnbF9tZW0tPnBibyksCisgICAgICAoR3N0TWFwSW5mbyAqKSBpbmZvLT51c2VyX2RhdGFbMF0pOworICBnX2ZyZWUgKGluZm8tPnVzZXJfZGF0YVswXSk7Cit9CisKK3N0YXRpYyB2b2lkCitfZ2xfbWVtX3VubWFwIChHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8pCit7CisgIGlmICgoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMKSA9PSAwKSB7CisgICAgX2dsX21lbV91bm1hcF9jcHVfYWNjZXNzIChnbF9tZW0sIGluZm8pOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitfZ2xfbWVtX2NvcHlfdGhyZWFkIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBncG9pbnRlciBkYXRhKQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbDsKKyAgR3N0R0xNZW1vcnlQQk9Db3B5UGFyYW1zICpjb3B5X3BhcmFtczsKKyAgR3N0R0xNZW1vcnlQQk8gKnNyYzsKKyAgZ3VpbnQgdGV4X2lkOworICBndWludCBvdXRfdGV4X3RhcmdldDsKKyAgR0x1aW50IGZib0lkOworICBnc2l6ZSBvdXRfd2lkdGgsIG91dF9oZWlnaHQsIG91dF9zdHJpZGU7CisgIEdMdWludCBvdXRfZ2xfZm9ybWF0LCBvdXRfZ2xfdHlwZTsKKyAgR0x1aW50IGluX2dsX2Zvcm1hdCwgaW5fZ2xfdHlwZTsKKyAgZ3NpemUgaW5fc2l6ZSwgb3V0X3NpemU7CisKKyAgY29weV9wYXJhbXMgPSAoR3N0R0xNZW1vcnlQQk9Db3B5UGFyYW1zICopIGRhdGE7CisgIHNyYyA9IGNvcHlfcGFyYW1zLT5zcmM7CisgIHRleF9pZCA9IGNvcHlfcGFyYW1zLT50ZXhfaWQ7CisgIG91dF90ZXhfdGFyZ2V0ID0gZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dsIChjb3B5X3BhcmFtcy0+dGV4X3RhcmdldCk7CisgIG91dF93aWR0aCA9IGNvcHlfcGFyYW1zLT5vdXRfd2lkdGg7CisgIG91dF9oZWlnaHQgPSBjb3B5X3BhcmFtcy0+b3V0X2hlaWdodDsKKyAgb3V0X3N0cmlkZSA9IGNvcHlfcGFyYW1zLT5vdXRfc3RyaWRlOworCisgIGdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworICBvdXRfZ2xfZm9ybWF0ID0gZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZSAoY29weV9wYXJhbXMtPm91dF9mb3JtYXQpOworICBvdXRfZ2xfdHlwZSA9IEdMX1VOU0lHTkVEX0JZVEU7CisgIGlmIChjb3B5X3BhcmFtcy0+b3V0X2Zvcm1hdCA9PSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2KQorICAgIG91dF9nbF90eXBlID0gR0xfVU5TSUdORURfU0hPUlRfNV82XzU7CisgIGluX2dsX2Zvcm1hdCA9IGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKHNyYy0+bWVtLnRleF90eXBlKTsKKyAgaW5fZ2xfdHlwZSA9IEdMX1VOU0lHTkVEX0JZVEU7CisgIGlmIChzcmMtPm1lbS50ZXhfdHlwZSA9PSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2KQorICAgIGluX2dsX3R5cGUgPSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNTsKKworICBpZiAoIWdsLT5HZW5GcmFtZWJ1ZmZlcnMpIHsKKyAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IgKGNvbnRleHQsCisgICAgICAgICJDb250ZXh0LCBFWFRfZnJhbWVidWZmZXJfb2JqZWN0IG5vdCBzdXBwb3J0ZWQiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgaW5fc2l6ZSA9IEdMX01FTV9IRUlHSFQgKHNyYykgKiBHTF9NRU1fU1RSSURFIChzcmMpOworICBvdXRfc2l6ZSA9IG91dF9oZWlnaHQgKiBvdXRfc3RyaWRlOworCisgIGlmIChjb3B5X3BhcmFtcy0+cmVzcGVjaWZ5KSB7CisgICAgaWYgKGluX3NpemUgIT0gb3V0X3NpemUpIHsKKyAgICAgIEdTVF9FUlJPUiAoIkNhbm5vdCBjb3B5IGJldHdlZW4gdGV4dHVyZXMgd2l0aCBiYWNraW5nIGRhdGEgb2YgZGlmZmVyZW50IgorICAgICAgICAgICJzaXplcy4gaW5wdXQgJSIgR19HU0laRV9GT1JNQVQgIiBvdXRwdXQgJSIgR19HU0laRV9GT1JNQVQsIGluX3NpemUsCisgICAgICAgICAgb3V0X3NpemUpOworICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgIH0KKworICBpZiAoIXRleF9pZCkgeworICAgIGd1aW50IGludGVybmFsX2Zvcm1hdDsKKyAgICBndWludCBvdXRfZ2xfdHlwZTsKKworICAgIG91dF9nbF90eXBlID0gR0xfVU5TSUdORURfQllURTsKKyAgICBpZiAoY29weV9wYXJhbXMtPm91dF9mb3JtYXQgPT0gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0IxNikKKyAgICAgIG91dF9nbF90eXBlID0gR0xfVU5TSUdORURfU0hPUlRfNV82XzU7CisKKyAgICBpbnRlcm5hbF9mb3JtYXQgPQorICAgICAgICBnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGUgKGNvbnRleHQsIG91dF9nbF9mb3JtYXQsCisgICAgICAgIG91dF9nbF90eXBlKTsKKworICAgIHRleF9pZCA9CisgICAgICAgIF9uZXdfdGV4dHVyZSAoY29udGV4dCwgb3V0X3RleF90YXJnZXQsCisgICAgICAgIGludGVybmFsX2Zvcm1hdCwgb3V0X2dsX2Zvcm1hdCwgb3V0X2dsX3R5cGUsIGNvcHlfcGFyYW1zLT5vdXRfd2lkdGgsCisgICAgICAgIGNvcHlfcGFyYW1zLT5vdXRfaGVpZ2h0KTsKKyAgfQorCisgIGlmICghdGV4X2lkKSB7CisgICAgR1NUX1dBUk5JTkcgKCJDb3VsZCBub3QgY3JlYXRlIEdMIHRleHR1cmUgd2l0aCBjb250ZXh0OiVwIiwgY29udGV4dCk7CisgIH0KKworICBHU1RfTE9HICgiY29weWluZyBtZW1vcnkgJXAsIHRleCAldSBpbnRvIHRleHR1cmUgJWkiLAorICAgICAgc3JjLCBzcmMtPm1lbS50ZXhfaWQsIHRleF9pZCk7CisKKyAgLyogRklYTUU6IHRyeSBhbmQgYXZvaWQgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgZmJvJ3MgZXZlcnkgY29weS4uLiAqLworICAvKiBjcmVhdGUgYSBmcmFtZWJ1ZmZlciBvYmplY3QgKi8KKyAgZ2wtPkdlbkZyYW1lYnVmZmVycyAoMSwgJmZib0lkKTsKKyAgZ2wtPkJpbmRGcmFtZWJ1ZmZlciAoR0xfRlJBTUVCVUZGRVIsIGZib0lkKTsKKworICBnbC0+RnJhbWVidWZmZXJUZXh0dXJlMkQgKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwKKyAgICAgIGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoc3JjLT5tZW0udGV4X3RhcmdldCksIHNyYy0+bWVtLnRleF9pZCwgMCk7CisKKy8vICBpZiAoIWdzdF9nbF9jb250ZXh0X2NoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1cyAoc3JjLT5tZW0ubWVtLmNvbnRleHQpKQorLy8gICAgZ290byBmYm9fZXJyb3I7CisKKyAgZ2wtPkJpbmRUZXh0dXJlIChvdXRfdGV4X3RhcmdldCwgdGV4X2lkKTsKKyAgaWYgKGNvcHlfcGFyYW1zLT5yZXNwZWNpZnkpIHsKKyAgICBHc3RNYXBJbmZvIHBib19pbmZvOworCisgICAgaWYgKCFnbC0+R2VuQnVmZmVycyB8fCAhc3JjLT5wYm8pIHsKKyAgICAgIGdzdF9nbF9jb250ZXh0X3NldF9lcnJvciAoY29udGV4dCwgIkNhbm5vdCByZWludGVycHJldCB0ZXh0dXJlIGNvbnRlbnRzICIKKyAgICAgICAgICAid2l0aG91dCBwaXhlbCBidWZmZXIgb2JqZWN0cyIpOworICAgICAgZ2wtPkJpbmRUZXh0dXJlIChvdXRfdGV4X3RhcmdldCwgMCk7CisgICAgICBnb3RvIGZib19lcnJvcjsKKyAgICB9CisKKyAgICBpZiAoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoY29udGV4dCkgJiBHU1RfR0xfQVBJX0dMRVMyCisgICAgICAgICYmIChpbl9nbF9mb3JtYXQgIT0gR0xfUkdCQSB8fCBpbl9nbF90eXBlICE9IEdMX1VOU0lHTkVEX0JZVEUpKSB7CisgICAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IgKGNvbnRleHQsICJDYW5ub3QgY29weSBub24gUkdCQS9VTlNJR05FRF9CWVRFICIKKyAgICAgICAgICAidGV4dHVyZXMgb24gR0xFUzIiKTsKKyAgICAgIGdsLT5CaW5kVGV4dHVyZSAob3V0X3RleF90YXJnZXQsIDApOworICAgICAgZ290byBmYm9fZXJyb3I7CisgICAgfQorCisgICAgR1NUX1RSQUNFICgiY29weWluZyB0ZXh0dXJlIGRhdGEgd2l0aCBzaXplIG9mICV1KiV1KiV1IiwKKyAgICAgICAgZ3N0X2dsX2Zvcm1hdF90eXBlX25fYnl0ZXMgKGluX2dsX2Zvcm1hdCwgaW5fZ2xfdHlwZSksCisgICAgICAgIHNyYy0+bWVtLnRleF93aWR0aCwgR0xfTUVNX0hFSUdIVCAoc3JjKSk7CisKKyAgICAvKiBjb3B5IHRleCAqLworICAgIF9yZWFkX3BpeGVsc190b19wYm8gKHNyYyk7CisKKyAgICBzcmMtPnBiby0+dGFyZ2V0ID0gR0xfUElYRUxfVU5QQUNLX0JVRkZFUjsKKyAgICBpZiAoIWdzdF9tZW1vcnlfbWFwIChHU1RfTUVNT1JZX0NBU1QgKHNyYy0+cGJvKSwgJnBib19pbmZvLAorICAgICAgICAgICAgR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpIHsKKyAgICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfR0xfTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBwYm8gZm9yIHJlYWRpbmciKTsKKyAgICAgIGdvdG8gZmJvX2Vycm9yOworICAgIH0KKyAgICBnbC0+VGV4U3ViSW1hZ2UyRCAob3V0X3RleF90YXJnZXQsIDAsIDAsIDAsIG91dF93aWR0aCwgb3V0X2hlaWdodCwKKyAgICAgICAgb3V0X2dsX2Zvcm1hdCwgb3V0X2dsX3R5cGUsIDApOworICAgIGdzdF9tZW1vcnlfdW5tYXAgKEdTVF9NRU1PUllfQ0FTVCAoc3JjLT5wYm8pLCAmcGJvX2luZm8pOworICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAvKiBkaWZmZXJlbnQgc2l6ZXMgKi8KKyAgICBnc3RfZ2xfbWVtb3J5X2NvcHlfdGV4aW1hZ2UgKEdTVF9HTF9NRU1PUllfQ0FTVCAoc3JjKSwKKyAgICAgICAgdGV4X2lkLCBjb3B5X3BhcmFtcy0+dGV4X3RhcmdldCwgY29weV9wYXJhbXMtPm91dF9mb3JtYXQsIG91dF93aWR0aCwKKyAgICAgICAgb3V0X2hlaWdodCk7CisgIH0KKworICBnbC0+QmluZFRleHR1cmUgKG91dF90ZXhfdGFyZ2V0LCAwKTsKKyAgZ2wtPkJpbmRGcmFtZWJ1ZmZlciAoR0xfRlJBTUVCVUZGRVIsIDApOworCisgIGdsLT5EZWxldGVGcmFtZWJ1ZmZlcnMgKDEsICZmYm9JZCk7CisKKyAgY29weV9wYXJhbXMtPnRleF9pZCA9IHRleF9pZDsKKyAgY29weV9wYXJhbXMtPnJlc3VsdCA9IFRSVUU7CisKKyAgcmV0dXJuOworCisvKiBFUlJPUlMgKi8KK2Zib19lcnJvcjoKKyAgeworICAgIGdsLT5EZWxldGVGcmFtZWJ1ZmZlcnMgKDEsICZmYm9JZCk7CisKKyAgICBjb3B5X3BhcmFtcy0+dGV4X2lkID0gMDsKKyAgICBjb3B5X3BhcmFtcy0+cmVzdWx0ID0gRkFMU0U7CisgICAgcmV0dXJuOworICB9CisKK2Vycm9yOgorICB7CisgICAgY29weV9wYXJhbXMtPnJlc3VsdCA9IEZBTFNFOworICAgIHJldHVybjsKKyAgfQorfQorCitzdGF0aWMgR3N0TWVtb3J5ICoKK19nbF9tZW1fY29weSAoR3N0R0xNZW1vcnlQQk8gKiBzcmMsIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQoreworICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtcyA9IHsgMCwgR1NUX01FTU9SWV9DQVNUIChzcmMpLT5hbGlnbiwgMCwgMCB9OworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKmJhc2VfbWVtX2FsbG9jYXRvcjsKKyAgR3N0QWxsb2NhdG9yICphbGxvY2F0b3I7CisgIEdzdE1lbW9yeSAqZGVzdCA9IE5VTEw7CisKKyAgYWxsb2NhdG9yID0gR1NUX01FTU9SWV9DQVNUIChzcmMpLT5hbGxvY2F0b3I7CisgIGJhc2VfbWVtX2FsbG9jYXRvciA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKikgYWxsb2NhdG9yOworCisgIGlmIChzcmMtPm1lbS50ZXhfdGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpIHsKKyAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX0dMX01FTU9SWSwgIkNhbm5vdCBjb3B5IEV4dGVybmFsIE9FUyB0ZXh0dXJlcyIpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgLyogSWYgbm90IGRvaW5nIGEgZnVsbCBjb3B5LCB0aGVuIGNvcHkgdG8gc3lzbWVtLCB0aGUgMkQgcmVwcmVzZW50aW9uIG9mIHRoZQorICAgKiB0ZXh0dXJlIHdvdWxkIGJlY29tZSB3cm9uZyAqLworICBpZiAob2Zmc2V0ID4gMCB8fCBzaXplIDwgR1NUX01FTU9SWV9DQVNUIChzcmMpLT5zaXplKSB7CisgICAgcmV0dXJuIGJhc2VfbWVtX2FsbG9jYXRvci0+ZmFsbGJhY2tfbWVtX2NvcHkgKEdTVF9NRU1PUllfQ0FTVCAoc3JjKSwgb2Zmc2V0LAorICAgICAgICBzaXplKTsKKyAgfQorCisgIGRlc3QgPSAoR3N0TWVtb3J5ICopIF9nbF9tZW1fbmV3IChhbGxvY2F0b3IsIE5VTEwsIHNyYy0+bWVtLm1lbS5jb250ZXh0LAorICAgICAgc3JjLT5tZW0udGV4X3RhcmdldCwgJnBhcmFtcywgJnNyYy0+bWVtLmluZm8sIHNyYy0+bWVtLnBsYW5lLAorICAgICAgJnNyYy0+bWVtLnZhbGlnbiwgTlVMTCwgTlVMTCk7CisKKyAgaWYgKEdTVF9NRU1PUllfRkxBR19JU19TRVQgKHNyYywgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKSkgeworICAgIGlmICghZ3N0X2dsX2Jhc2VfbWVtb3J5X21lbWNweSAoKEdzdEdMQmFzZU1lbW9yeSAqKSBzcmMsCisgICAgICAgICAgICAoR3N0R0xCYXNlTWVtb3J5ICopIGRlc3QsIG9mZnNldCwgc2l6ZSkpIHsKKyAgICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9NRU1PUlksICJDb3VsZCBub3QgY29weSBHTCBNZW1vcnkiKTsKKyAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKEdTVF9NRU1PUllfQ0FTVCAoZGVzdCkpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICB9IGVsc2UgeworICAgIEdzdE1hcEluZm8gZGluZm87CisKKyAgICBpZiAoIWdzdF9tZW1vcnlfbWFwIChHU1RfTUVNT1JZX0NBU1QgKGRlc3QpLCAmZGluZm8sCisgICAgICAgICAgICBHU1RfTUFQX1dSSVRFIHwgR1NUX01BUF9HTCkpIHsKKyAgICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9NRU1PUlksCisgICAgICAgICAgIkZhaWxlZCBub3QgbWFwIGRlc3RpbmF0aW9uICIgImZvciB3cml0aW5nIik7CisgICAgICBnc3RfbWVtb3J5X3VucmVmIChHU1RfTUVNT1JZX0NBU1QgKGRlc3QpKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghZ3N0X2dsX21lbW9yeV9jb3B5X2ludG8gKChHc3RHTE1lbW9yeSAqKSBzcmMsCisgICAgICAgICAgICAoKEdzdEdMTWVtb3J5ICopIGRlc3QpLT50ZXhfaWQsIHNyYy0+bWVtLnRleF90YXJnZXQsCisgICAgICAgICAgICBzcmMtPm1lbS50ZXhfdHlwZSwgc3JjLT5tZW0udGV4X3dpZHRoLCBHTF9NRU1fSEVJR0hUIChzcmMpKSkgeworICAgICAgR1NUX0NBVF9XQVJOSU5HIChHU1RfQ0FUX0dMX01FTU9SWSwgIkNvdWxkIG5vdCBjb3B5IEdMIE1lbW9yeSIpOworICAgICAgZ3N0X21lbW9yeV91bm1hcCAoR1NUX01FTU9SWV9DQVNUIChkZXN0KSwgJmRpbmZvKTsKKyAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKEdTVF9NRU1PUllfQ0FTVCAoZGVzdCkpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZ3N0X21lbW9yeV91bm1hcCAoR1NUX01FTU9SWV9DQVNUIChkZXN0KSwgJmRpbmZvKTsKKyAgfQorCisgIHJldHVybiBkZXN0OworfQorCitzdGF0aWMgR3N0TWVtb3J5ICoKK19nbF9tZW1fYWxsb2MgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgZ3NpemUgc2l6ZSwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBnX3dhcm5pbmcgKCJVc2UgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jICgpIHRvIGFsbG9jYXRlIGZyb20gdGhpcyAiCisgICAgICAiR3N0R0xNZW1vcnlQQk8gYWxsb2NhdG9yIik7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCitfZ2xfbWVtX2Rlc3Ryb3kgKEdzdEdMTWVtb3J5UEJPICogZ2xfbWVtKQoreworICBpZiAoZ2xfbWVtLT5wYm8pCisgICAgZ3N0X21lbW9yeV91bnJlZiAoR1NUX01FTU9SWV9DQVNUIChnbF9tZW0tPnBibykpOworICBnbF9tZW0tPnBibyA9IE5VTEw7CisKKyAgR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZGVzdHJveSAoKEdzdEdMQmFzZU1lbW9yeQorICAgICAgICAgICopIGdsX21lbSk7Cit9CisKK3N0YXRpYyBHc3RHTE1lbW9yeVBCTyAqCitfZ2xfbWVtX3Bib19hbGxvYyAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICogYWxsb2NhdG9yLAorICAgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBHc3RHTE1lbW9yeVBCTyAqbWVtOworICBndWludCBhbGxvY19mbGFnczsKKworICBhbGxvY19mbGFncyA9IHBhcmFtcy0+cGFyZW50LmFsbG9jX2ZsYWdzOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChhbGxvY19mbGFncyAmIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPLAorICAgICAgTlVMTCk7CisKKyAgbWVtID0gZ19uZXcwIChHc3RHTE1lbW9yeVBCTywgMSk7CisKKyAgaWYgKGFsbG9jX2ZsYWdzICYgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9HUFVfSEFORExFKSB7CisgICAgbWVtLT5tZW0udGV4X2lkID0gcGFyYW1zLT5wYXJlbnQuZ2xfaGFuZGxlOworICAgIG1lbS0+bWVtLnRleHR1cmVfd3JhcHBlZCA9IFRSVUU7CisgIH0KKworICBfZ2xfbWVtX2luaXQgKG1lbSwgR1NUX0FMTE9DQVRPUl9DQVNUIChhbGxvY2F0b3IpLCBOVUxMLAorICAgICAgcGFyYW1zLT5wYXJlbnQuY29udGV4dCwgcGFyYW1zLT50YXJnZXQsIHBhcmFtcy0+cGFyZW50LmFsbG9jX3BhcmFtcywKKyAgICAgIHBhcmFtcy0+dl9pbmZvLCBwYXJhbXMtPnBsYW5lLCBwYXJhbXMtPnZhbGlnbiwgcGFyYW1zLT5wYXJlbnQudXNlcl9kYXRhLAorICAgICAgcGFyYW1zLT5wYXJlbnQubm90aWZ5KTsKKworICBpZiAoYWxsb2NfZmxhZ3MgJiBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX0dQVV9IQU5ETEUpIHsKKyAgICBHU1RfTUlOSV9PQkpFQ1RfRkxBR19TRVQgKG1lbSwgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpOworICB9CisgIGlmIChhbGxvY19mbGFncyAmIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfU1lTTUVNKSB7CisgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCk7CisgICAgaWYgKG1lbS0+cGJvKSB7CisgICAgICBHU1RfTUlOSV9PQkpFQ1RfRkxBR19TRVQgKG1lbS0+cGJvLAorICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCk7CisgICAgICBtZW0tPnBiby0+bWVtLmRhdGEgPSBwYXJhbXMtPnBhcmVudC53cmFwcGVkX2RhdGE7CisgICAgfQorICAgIG1lbS0+bWVtLm1lbS5kYXRhID0gcGFyYW1zLT5wYXJlbnQud3JhcHBlZF9kYXRhOworICB9CisKKyAgcmV0dXJuIG1lbTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9tZW1vcnlfcGJvX2FsbG9jYXRvcl9jbGFzc19pbml0IChHc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzICoga2xhc3MpCit7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICpnbF9iYXNlOworICBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzICpnbF90ZXg7CisgIEdzdEFsbG9jYXRvckNsYXNzICphbGxvY2F0b3JfY2xhc3M7CisKKyAgZ2xfdGV4ID0gKEdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7CisgIGdsX2Jhc2UgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7CisgIGFsbG9jYXRvcl9jbGFzcyA9IChHc3RBbGxvY2F0b3JDbGFzcyAqKSBrbGFzczsKKworICBnbF9iYXNlLT5hbGxvYyA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uKSBfZ2xfbWVtX3Bib19hbGxvYzsKKyAgZ2xfYmFzZS0+Y3JlYXRlID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uKSBfZ2xfbWVtX2NyZWF0ZTsKKyAgZ2xfdGV4LT5tYXAgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24pIF9nbF9tZW1fbWFwOworICBnbF90ZXgtPnVubWFwID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24pIF9nbF9tZW1fdW5tYXA7CisgIGdsX3RleC0+Y29weSA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb24pIF9nbF9tZW1fY29weTsKKyAgZ2xfYmFzZS0+ZGVzdHJveSA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24pIF9nbF9tZW1fZGVzdHJveTsKKworICBhbGxvY2F0b3JfY2xhc3MtPmFsbG9jID0gX2dsX21lbV9hbGxvYzsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9tZW1vcnlfcGJvX2FsbG9jYXRvcl9pbml0IChHc3RHTE1lbW9yeVBCT0FsbG9jYXRvciAqIGFsbG9jYXRvcikKK3sKKyAgR3N0QWxsb2NhdG9yICphbGxvYyA9IEdTVF9BTExPQ0FUT1JfQ0FTVCAoYWxsb2NhdG9yKTsKKworICBhbGxvYy0+bWVtX3R5cGUgPSBHU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfTkFNRTsKKworICBHU1RfT0JKRUNUX0ZMQUdfU0VUIChhbGxvY2F0b3IsIEdTVF9BTExPQ0FUT1JfRkxBR19DVVNUT01fQUxMT0MpOworfQorCisvKioKKyAqIGdzdF9nbF9tZW1vcnlfcGJvX2NvcHlfaW50b190ZXh0dXJlOgorICogQGdsX21lbTphICNHc3RHTE1lbW9yeVBCTworICogQHRleF9pZDogdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUgaWQKKyAqIEB0YXJnZXQ6IHRoZSBkZXN0aW5hdGlvbiAjR3N0R0xUZXh0dXJlVGFyZ2V0CisgKiBAdGV4X3R5cGU6IHRoZSBkZXN0aW5hdGlvbiAjR3N0VmlkZW9HTFRleHR1cmVUeXBlCisgKiBAd2lkdGg6IHdpZHRoIG9mIEB0ZXhfaWQKKyAqIEBoZWlnaHQ6IGhlaWdodCBvZiBAdGV4X2lkCisgKiBAc3RyaWRlOiBzdHJpZGUgb2YgdGhlIGJhY2tpbmcgdGV4dHVyZSBkYXRhCisgKiBAcmVzcGVjaWZ5OiB3aGV0aGVyIHRvIGNvcHkgdGhlIGRhdGEgb3IgY29weSBwZXIgdGV4ZWwKKyAqCisgKiBDb3BpZXMgQGdsX21lbSBpbnRvIHRoZSB0ZXh0dXJlIHNwZWNmaWZpZWQgYnkgQHRleF9pZC4gIFRoZSBmb3JtYXQgb2YgQHRleF9pZAorICogaXMgc3BlY2lmaWVkIGJ5IEB0ZXhfdHlwZSwgQHdpZHRoIGFuZCBAaGVpZ2h0LgorICoKKyAqIElmIEByZXNwZWNpZnkgaXMgJVRSVUUsIHRoZW4gdGhlIGNvcHkgaXMgcGVyZm9ybWVkIGluIHRlcm1zIG9mIHRoZSB0ZXh0dXJlCisgKiBkYXRhLiAgVGhpcyBpcyB1c2VmdWwgZm9yIHNwbGl0dGluZyBSR0JBIHRleHR1cmVzIGludG8gUkcgb3IgUiB0ZXh0dXJlcyBvcgorICogdmljZSB2ZXJzYS4gVGhlIHJlcXVpcmVtZW50IGZvciB0aGlzIHRvIHN1Y2NlZWQgaXMgdGhhdCB0aGUgYmFja2luZyB0ZXh0dXJlCisgKiBkYXRhIG11c3QgYmUgdGhlIHNhbWUgc2l6ZSwgaS5lLiBzYXkgYSBSR0JBOCB0ZXh0dXJlIGlzIGNvbnZlcnRlZCBpbnRvIGEgUkc4CisgKiB0ZXh0dXJlLCB0aGVuIHRoZSBSRyB0ZXh0dXJlIG11c3QgaGF2ZSB0d2ljZSBhcyBtYW55IHBpeGVscyBhdmFpbGFibGUgZm9yCisgKiBvdXRwdXQgYXMgdGhlIFJHQkEgdGV4dHVyZS4KKyAqCisgKiBPdGhlcndpc2UsIGlmIEByZXNwZWNpZnkgaXMgJUZBTFNFLCB0aGVuIHRoZSBjb3B5IGlzIHBlcmZvcm1lZCBwZXIgdGV4ZWwKKyAqIHVzaW5nIGdsQ29weVRleEltYWdlLiAgU2VlIHRoZSBPcGVuR0wgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscyBvbiB0aGUKKyAqIG1hcHBpbmdzIGJldHdlZW4gdGV4dHVyZSBmb3JtYXRzLgorICoKKyAqIFJldHVybnM6IFdoZXRoZXIgdGhlIGNvcHkgc3VjZWVkZWQKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK2dib29sZWFuCitnc3RfZ2xfbWVtb3J5X3Bib19jb3B5X2ludG9fdGV4dHVyZSAoR3N0R0xNZW1vcnlQQk8gKiBnbF9tZW0sIGd1aW50IHRleF9pZCwKKyAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0LCBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4X3R5cGUsIGdpbnQgd2lkdGgsCisgICAgZ2ludCBoZWlnaHQsIGdpbnQgc3RyaWRlLCBnYm9vbGVhbiByZXNwZWNpZnkpCit7CisgIEdzdEdMTWVtb3J5UEJPQ29weVBhcmFtcyBjb3B5X3BhcmFtczsKKworICBjb3B5X3BhcmFtcy5zcmMgPSBnbF9tZW07CisgIGNvcHlfcGFyYW1zLnRleF90YXJnZXQgPSB0YXJnZXQ7CisgIGNvcHlfcGFyYW1zLnRleF9pZCA9IHRleF9pZDsKKyAgY29weV9wYXJhbXMub3V0X2Zvcm1hdCA9IHRleF90eXBlOworICBjb3B5X3BhcmFtcy5vdXRfd2lkdGggPSB3aWR0aDsKKyAgY29weV9wYXJhbXMub3V0X2hlaWdodCA9IGhlaWdodDsKKyAgY29weV9wYXJhbXMub3V0X3N0cmlkZSA9IHN0cmlkZTsKKyAgY29weV9wYXJhbXMucmVzcGVjaWZ5ID0gcmVzcGVjaWZ5OworCisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGdsX21lbS0+bWVtLm1lbS5jb250ZXh0LCBfZ2xfbWVtX2NvcHlfdGhyZWFkLAorICAgICAgJmNvcHlfcGFyYW1zKTsKKworICByZXR1cm4gY29weV9wYXJhbXMucmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorX2Rvd25sb2FkX3RyYW5zZmVyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSkKK3sKKyAgR3N0R0xCYXNlTWVtb3J5ICptZW0gPSAoR3N0R0xCYXNlTWVtb3J5ICopIGdsX21lbTsKKworICBnX211dGV4X2xvY2sgKCZtZW0tPmxvY2spOworICBpZiAoX3JlYWRfcGl4ZWxzX3RvX3BibyAoZ2xfbWVtKSkKKyAgICBHU1RfQ0FUX1RSQUNFIChHU1RfQ0FUX0dMX01FTU9SWSwgIm9wdGltaXN0aWMgZG93bmxvYWQgb2YgdGV4dHVyZSAldSAiCisgICAgICAgICJ1c2luZyBwYm8gJXUiLCBnbF9tZW0tPm1lbS50ZXhfaWQsIGdsX21lbS0+cGJvLT5pZCk7CisgIEdTVF9NRU1PUllfRkxBR19VTlNFVCAoZ2xfbWVtLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCk7CisgIGdfbXV0ZXhfdW5sb2NrICgmbWVtLT5sb2NrKTsKK30KKworLyoqCisgKiBnc3RfZ2xfbWVtb3J5X3Bib19kb3dubG9hZF90cmFuc2ZlcjoKKyAqIEBnbF9tZW06IGEgI0dzdEdMTWVtb3J5UEJPCisgKgorICogVHJhbnNmZXIgdGhlIHRleHR1cmUgZGF0YSBmcm9tIHRoZSB0ZXh0dXJlIGludG8gdGhlIFBCTyBpZiBuZWNlc3NhcnkuCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfbWVtb3J5X3Bib19kb3dubG9hZF90cmFuc2ZlciAoR3N0R0xNZW1vcnlQQk8gKiBnbF9tZW0pCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKGdzdF9pc19nbF9tZW1vcnkgKChHc3RNZW1vcnkgKikgZ2xfbWVtKSk7CisKKyAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoZ2xfbWVtLT5tZW0ubWVtLmNvbnRleHQsCisgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2Rvd25sb2FkX3RyYW5zZmVyLCBnbF9tZW0pOworfQorCitzdGF0aWMgdm9pZAorX3VwbG9hZF90cmFuc2ZlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xNZW1vcnlQQk8gKiBnbF9tZW0pCit7CisgIEdzdEdMQmFzZU1lbW9yeSAqbWVtID0gKEdzdEdMQmFzZU1lbW9yeSAqKSBnbF9tZW07CisgIEdzdE1hcEluZm8gaW5mbzsKKworICBnX211dGV4X2xvY2sgKCZtZW0tPmxvY2spOworICBnbF9tZW0tPnBiby0+dGFyZ2V0ID0gR0xfUElYRUxfVU5QQUNLX0JVRkZFUjsKKyAgaWYgKCFnc3RfbWVtb3J5X21hcCAoR1NUX01FTU9SWV9DQVNUIChnbF9tZW0tPnBibyksICZpbmZvLAorICAgICAgICAgIEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKSB7CisgICAgR1NUX0NBVF9XQVJOSU5HIChHU1RfQ0FUX0dMX01FTU9SWSwgIkZhaWxlZCB0byBtYXAgcGJvIGZvciByZWFkaW5nIik7CisgIH0gZWxzZSB7CisgICAgZ3N0X21lbW9yeV91bm1hcCAoR1NUX01FTU9SWV9DQVNUIChnbF9tZW0tPnBibyksICZpbmZvKTsKKyAgfQorICBnX211dGV4X3VubG9jayAoJm1lbS0+bG9jayk7Cit9CisKKy8qKgorICogZ3N0X2dsX21lbW9yeV9wYm9fZG93bmxvYWRfdHJhbnNmZXI6CisgKiBAZ2xfbWVtOiBhICNHc3RHTE1lbW9yeVBCTworICoKKyAqIFRyYW5zZmVyIHRoZSB0ZXh0dXJlIGRhdGEgZnJvbSB0aGUgUEJPIGludG8gdGhlIHRleHR1cmUgaWYgbmVjZXNzYXJ5LgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX21lbW9yeV9wYm9fdXBsb2FkX3RyYW5zZmVyIChHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoZ3N0X2lzX2dsX21lbW9yeSAoKEdzdE1lbW9yeSAqKSBnbF9tZW0pKTsKKworICBpZiAoZ2xfbWVtLT5wYm8gJiYgQ09OVEVYVF9TVVBQT1JUU19QQk9fVVBMT0FEIChnbF9tZW0tPm1lbS5tZW0uY29udGV4dCkpCisgICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoZ2xfbWVtLT5tZW0ubWVtLmNvbnRleHQsCisgICAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfdXBsb2FkX3RyYW5zZmVyLCBnbF9tZW0pOworfQorCisvKioKKyAqIGdzdF9nbF9tZW1vcnlfcGJvX2luaXQ6CisgKgorICogSW5pdGlhbGl6ZXMgdGhlIEdMIE1lbW9yeSBhbGxvY2F0b3IuIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uCisgKiBtdWx0aXBsZSB0aW1lcy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBHc3RHTE1lbW9yeVBCTyBvcGVyYXRpb24uCisgKi8KK3ZvaWQKK2dzdF9nbF9tZW1vcnlfcGJvX2luaXRfb25jZSAodm9pZCkKK3sKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBnc3RfZ2xfbWVtb3J5X2luaXRfb25jZSAoKTsKKworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX0dMX01FTU9SWSwgImdsbWVtb3J5IiwgMCwgIk9wZW5HTCBNZW1vcnkiKTsKKworICAgIF9nbF9hbGxvY2F0b3IgPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SLCBOVUxMKTsKKworICAgIGdzdF9hbGxvY2F0b3JfcmVnaXN0ZXIgKEdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FLAorICAgICAgICBnc3Rfb2JqZWN0X3JlZiAoX2dsX2FsbG9jYXRvcikpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9Cit9CisKKy8qKgorICogZ3N0X2lzX2dsX21lbW9yeV9wYm86CisgKiBAbWVtOmEgI0dzdE1lbW9yeQorICogCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBtZW1vcnkgYXQgQG1lbSBpcyBhICNHc3RHTE1lbW9yeVBCTworICoKKyAqIFNpbmNlOiAxLjgKKyAqLworZ2Jvb2xlYW4KK2dzdF9pc19nbF9tZW1vcnlfcGJvIChHc3RNZW1vcnkgKiBtZW0pCit7CisgIHJldHVybiBtZW0gIT0gTlVMTCAmJiBtZW0tPmFsbG9jYXRvciAhPSBOVUxMCisgICAgICAmJiBnX3R5cGVfaXNfYSAoR19PQkpFQ1RfVFlQRSAobWVtLT5hbGxvY2F0b3IpLAorICAgICAgR1NUX1RZUEVfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1IpOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTQxMTBlCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR0aGV3IFdhdGVycyA8eXN0cmVldDAwQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfR1NUX0dMX01FTU9SWV9QQk9fSF8KKyNkZWZpbmUgX0dTVF9HTF9NRU1PUllfUEJPX0hfCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2dzdGFsbG9jYXRvci5oPgorI2luY2x1ZGUgPGdzdC9nc3RtZW1vcnkuaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKworI2luY2x1ZGUgPGdzdC9nbC9nc3RnbG1lbW9yeS5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1IgKGdzdF9nbF9tZW1vcnlfcGJvX2FsbG9jYXRvcl9nZXRfdHlwZSgpKQorR1R5cGUgZ3N0X2dsX21lbW9yeV9wYm9fYWxsb2NhdG9yX2dldF90eXBlKHZvaWQpOworCisjZGVmaW5lIEdTVF9JU19HTF9NRU1PUllfUEJPX0FMTE9DQVRPUihvYmopICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUikpCisjZGVmaW5lIEdTVF9JU19HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEdTVF9UWVBFX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SKSkKKyNkZWZpbmUgR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX0dFVF9DTEFTUyhvYmopICAgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgR1NUX1RZUEVfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1IsIEdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yQ2xhc3MpKQorI2RlZmluZSBHU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1IsIEdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yKSkKKyNkZWZpbmUgR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1IsIEdzdEdMQWxsb2NhdG9yQ2xhc3MpKQorI2RlZmluZSBHU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfQ0FTVChvYmopICAgICAgICAgICAgKChHc3RHTE1lbW9yeVBCT0FsbG9jYXRvciAqKShvYmopKQorCisvKioKKyAqIEdzdEdMTWVtb3J5UEJPOgorICoKKyAqIFByaXZhdGUgaW5zdGFuY2UKKyAqLworc3RydWN0IF9Hc3RHTE1lbW9yeVBCTworeworICBHc3RHTE1lbW9yeSAgICAgIG1lbTsKKworICAvKiA8cHJpdmF0ZT4gKi8KKyAgR3N0R0xCdWZmZXIgICAgICAgICAgKnBibzsKK307CisKKy8qKgorICogR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SOgorICoKKyAqIFRoZSBuYW1lIG9mIHRoZSBHTCBNZW1vcnkgUEJPIGFsbG9jYXRvcgorICovCisjZGVmaW5lIEdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FICAgIkdMTWVtb3J5UEJPIgorCit2b2lkICAgICAgICAgIGdzdF9nbF9tZW1vcnlfcGJvX2luaXRfb25jZSAgICAgICAgICAgICAgICh2b2lkKTsKK2dib29sZWFuICAgICAgZ3N0X2lzX2dsX21lbW9yeV9wYm8gICAgICAgICAgICAgICAgICAgICAgKEdzdE1lbW9yeSAqIG1lbSk7CisKK3ZvaWQgICAgICAgICAgZ3N0X2dsX21lbW9yeV9wYm9fZG93bmxvYWRfdHJhbnNmZXIgICAgICAgKEdzdEdMTWVtb3J5UEJPICogZ2xfbWVtKTsKK3ZvaWQgICAgICAgICAgZ3N0X2dsX21lbW9yeV9wYm9fdXBsb2FkX3RyYW5zZmVyICAgICAgICAgKEdzdEdMTWVtb3J5UEJPICogZ2xfbWVtKTsKKworZ2Jvb2xlYW4gICAgICBnc3RfZ2xfbWVtb3J5X3Bib19jb3B5X2ludG9fdGV4dHVyZSAgICAgICAoR3N0R0xNZW1vcnlQQk8gKmdsX21lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHRleF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIHJlc3BlY2lmeSk7CisKKy8qKgorICogR3N0R0xBbGxvY2F0b3IKKyAqCisgKiBPcGFxdWUgI0dzdEdMQWxsb2NhdG9yIHN0cnVjdAorICovCitzdHJ1Y3QgX0dzdEdMTWVtb3J5UEJPQWxsb2NhdG9yCit7CisgIEdzdEdMTWVtb3J5QWxsb2NhdG9yIHBhcmVudDsKK307CisKKy8qKgorICogR3N0R0xBbGxvY2F0b3JDbGFzczoKKyAqCisgKiBUaGUgI0dzdEdMQWxsb2NhdG9yQ2xhc3Mgb25seSBjb250YWlucyBwcml2YXRlIGRhdGEKKyAqLworc3RydWN0IF9Hc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzCit7CisgIEdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9HU1RfR0xfTUVNT1JZX1BCT19IXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsb3ZlcmxheWNvbXBvc2l0b3IuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbG92ZXJsYXljb21wb3NpdG9yLmMKaW5kZXggOTdhNGFhYi4uZjdkMDYzOSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsb3ZlcmxheWNvbXBvc2l0b3IuYworKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xvdmVybGF5Y29tcG9zaXRvci5jCkBAIC0zNDQsMTIgKzM0NCwyNyBAQAogICB2aW5mby5zdHJpZGVbMF0gPSB2bWV0YS0+c3RyaWRlWzBdOwogCiAgIGlmIChnc3RfdmlkZW9fZnJhbWVfbWFwIChjb21wX2ZyYW1lLCAmdmluZm8sIGNvbXBfYnVmZmVyLCBHU1RfTUFQX1JFQUQpKSB7CisgICAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKKyAgICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKm1lbV9hbGxvY2F0b3I7CisgICAgR3N0QWxsb2NhdG9yICphbGxvY2F0b3I7CisKKyAgICBhbGxvY2F0b3IgPQorICAgICAgICBHU1RfQUxMT0NBVE9SIChnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdCAob3ZlcmxheS0+Y29udGV4dCkpOworICAgIG1lbV9hbGxvY2F0b3IgPSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChhbGxvY2F0b3IpOworCiAgICAgZ3N0X2dsX2NvbXBvc2l0aW9uX292ZXJsYXlfYWRkX3RyYW5zZm9ybWF0aW9uIChvdmVybGF5LCBidWYpOwogCi0gICAgY29tcF9nbF9tZW1vcnkgPQotICAgICAgICBnc3RfZ2xfbWVtb3J5X3dyYXBwZWQgKG92ZXJsYXktPmNvbnRleHQsICZjb21wX2ZyYW1lLT5pbmZvLCAwLCBOVUxMLAorICAgIHBhcmFtcyA9IGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhIChvdmVybGF5LT5jb250ZXh0LAorICAgICAgICBOVUxMLCAmY29tcF9mcmFtZS0+aW5mbywgMCwgTlVMTCwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJELAogICAgICAgICBjb21wX2ZyYW1lLT5kYXRhWzBdLCBjb21wX2ZyYW1lLCBfdmlkZW9fZnJhbWVfdW5tYXBfYW5kX2ZyZWUpOwogCisgICAgY29tcF9nbF9tZW1vcnkgPQorICAgICAgICAoR3N0R0xNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChtZW1fYWxsb2NhdG9yLAorICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisKKyAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKGFsbG9jYXRvcik7CisKICAgICBvdmVybGF5X2J1ZmZlciA9IGdzdF9idWZmZXJfbmV3ICgpOwogICAgIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAob3ZlcmxheV9idWZmZXIsIChHc3RNZW1vcnkgKikgY29tcF9nbF9tZW1vcnkpOwogCkBAIC00MjUsMTIgKzQ0MCwyNCBAQAogewogICBHc3RHTE92ZXJsYXlDb21wb3NpdG9yICpjb21wb3NpdG9yID0KICAgICAgIChHc3RHTE92ZXJsYXlDb21wb3NpdG9yICopIGNvbXBvc2l0b3JfcG9pbnRlcjsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CiAKLSAgaWYgKCFnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrIChjb21wb3NpdG9yLT5zaGFkZXIsCi0gICAgICAgICAgZnJhZ21lbnRfc2hhZGVyLCAmY29tcG9zaXRvci0+cG9zaXRpb25fYXR0cmliLAotICAgICAgICAgICZjb21wb3NpdG9yLT50ZXhjb29yZF9hdHRyaWIpKSB7Ci0gICAgR1NUX0VSUk9SICgiY291bGQgbm90IGluaXRpYWxpemUgc2hhZGVyLiIpOworICBpZiAoIShjb21wb3NpdG9yLT5zaGFkZXIgPQorICAgICAgICAgIGdzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXMgKGNvbnRleHQsICZlcnJvciwKKyAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfdmVydGV4IChjb250ZXh0KSwKKyAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCBHTF9GUkFHTUVOVF9TSEFERVIsCisgICAgICAgICAgICAgICAgICBHU1RfR0xTTF9WRVJTSU9OX05PTkUsCisgICAgICAgICAgICAgICAgICBHU1RfR0xTTF9QUk9GSUxFX0VTIHwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLAorICAgICAgICAgICAgICAgICAgZnJhZ21lbnRfc2hhZGVyKSwgTlVMTCkpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoY29tcG9zaXRvciwgImNvdWxkIG5vdCBpbml0aWFsaXplIHNoYWRlcjogJXMiLAorICAgICAgICBlcnJvci0+bWVzc2FnZSk7CisgICAgcmV0dXJuOwogICB9CisKKyAgY29tcG9zaXRvci0+cG9zaXRpb25fYXR0cmliID0KKyAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoY29tcG9zaXRvci0+c2hhZGVyLCAiYV9wb3NpdGlvbiIpOworICBjb21wb3NpdG9yLT50ZXhjb29yZF9hdHRyaWIgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChjb21wb3NpdG9yLT5zaGFkZXIsICJhX3RleGNvb3JkIik7CiB9CiAKIEdzdEdMT3ZlcmxheUNvbXBvc2l0b3IgKgpAQCAtNDQxLDggKzQ2OCw2IEBACiAKICAgY29tcG9zaXRvci0+Y29udGV4dCA9IGdzdF9vYmplY3RfcmVmIChjb250ZXh0KTsKIAotICBjb21wb3NpdG9yLT5zaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ldyAoY29tcG9zaXRvci0+Y29udGV4dCk7Ci0KICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoY29tcG9zaXRvci0+Y29udGV4dCwKICAgICAgIGdzdF9nbF9vdmVybGF5X2NvbXBvc2l0b3JfaW5pdF9nbCwgY29tcG9zaXRvcik7CiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHF1ZXJ5LmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xxdWVyeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZTYzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xxdWVyeS5jCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJnc3RnbHF1ZXJ5LmgiCisKKyNpZm5kZWYgR0xfVElNRV9FTEFQU0VECisjZGVmaW5lIEdMX1RJTUVfRUxBUFNFRCAweDg4QkYKKyNlbmRpZgorCisjaWZuZGVmIEdMX1RJTUVTVEFNUAorI2RlZmluZSBHTF9USU1FU1RBTVAgMHg4RTI4CisjZW5kaWYKKworI2lmbmRlZiBHTF9RVUVSWV9SRVNVTFQKKyNkZWZpbmUgR0xfUVVFUllfUkVTVUxUIDB4ODg2NgorI2VuZGlmCisKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9nbF9xdWVyeV9kZWJ1ZworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9ERUZBVUxUKTsKKworc3RhdGljIHZvaWQKK19pbml0X2RlYnVnICh2b2lkKQoreworICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2luaXQgPSAwOworCisgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJl9pbml0KSkgeworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX0RFRkFVTFQsICJnbHF1ZXJ5IiwgMCwgImdscXVlcnkgZWxlbWVudCIpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9Cit9CisKK3N0YXRpYyBjb25zdCBnY2hhciAqCitfcXVlcnlfdHlwZV90b19zdHJpbmcgKGd1aW50IHF1ZXJ5X3R5cGUpCit7CisgIHN3aXRjaCAocXVlcnlfdHlwZSkgeworICAgIGNhc2UgR1NUX0dMX1FVRVJZX1RJTUVfRUxBUFNFRDoKKyAgICBjYXNlIEdMX1RJTUVfRUxBUFNFRDoKKyAgICAgIHJldHVybiAidGltZSBlbGFwc2VkIjsKKyAgICBjYXNlIEdMX1RJTUVTVEFNUDoKKyAgICBjYXNlIEdTVF9HTF9RVUVSWV9USU1FU1RBTVA6CisgICAgICByZXR1cm4gInRpbWVzdGFtcCI7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAidW5rbm93biI7CisgIH0KK30KKworc3RhdGljIGd1aW50CitfZ3N0X2dsX3F1ZXJ5X3R5cGVfdG9fZ2wgKEdzdEdMUXVlcnlUeXBlIHF1ZXJ5X3R5cGUpCit7CisgIGlmIChxdWVyeV90eXBlID09IEdTVF9HTF9RVUVSWV9USU1FX0VMQVBTRUQpCisgICAgcmV0dXJuIEdMX1RJTUVfRUxBUFNFRDsKKyAgaWYgKHF1ZXJ5X3R5cGUgPT0gR1NUX0dMX1FVRVJZX1RJTUVTVEFNUCkKKyAgICByZXR1cm4gR0xfVElNRVNUQU1QOworCisgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICByZXR1cm4gMDsKK30KKworc3RhdGljIGdib29sZWFuCitfcXVlcnlfdHlwZV9zdXBwb3J0c19jb3VudGVyIChndWludCBnbF9xdWVyeV90eXBlKQoreworICByZXR1cm4gZ2xfcXVlcnlfdHlwZSA9PSBHTF9USU1FU1RBTVA7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3F1ZXJ5X3R5cGVfc3VwcG9ydHNfYmVnaW5fZW5kIChndWludCBnbF9xdWVyeV90eXBlKQoreworICByZXR1cm4gZ2xfcXVlcnlfdHlwZSA9PSBHTF9USU1FX0VMQVBTRUQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2NvbnRleHRfc3VwcG9ydHNfcXVlcnlfdHlwZSAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgZ3VpbnQgZ2xfcXVlcnlfdHlwZSkKK3sKKyAgcmV0dXJuIGdsX3F1ZXJ5X3R5cGUgIT0gMCAmJiBjb250ZXh0LT5nbF92dGFibGUtPkdlblF1ZXJpZXMgIT0gTlVMTDsKK30KKworc3RhdGljIGdjaGFyICoKK19sb2dfdGltZSAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RHTFF1ZXJ5ICpxdWVyeSA9IHVzZXJfZGF0YTsKKyAgZ2ludDY0IHJlc3VsdDsKKworICByZXN1bHQgPSBnc3RfZ2xfcXVlcnlfcmVzdWx0IChxdWVyeSk7CisKKyAgcmV0dXJuIGdzdF9pbmZvX3N0cmR1cF9wcmludGYgKCIlIiBHU1RfVElNRV9GT1JNQVQsIEdTVF9USU1FX0FSR1MgKHJlc3VsdCkpOworfQorCit2b2lkCitnc3RfZ2xfcXVlcnlfaW5pdCAoR3N0R0xRdWVyeSAqIHF1ZXJ5LCBHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgIEdzdEdMUXVlcnlUeXBlIHF1ZXJ5X3R5cGUpCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKHF1ZXJ5ICE9IE5VTEwpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCkpOworICBnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBtZW1zZXQgKHF1ZXJ5LCAwLCBzaXplb2YgKCpxdWVyeSkpOworCisgIF9pbml0X2RlYnVnICgpOworCisgIHF1ZXJ5LT5jb250ZXh0ID0gZ3N0X29iamVjdF9yZWYgKGNvbnRleHQpOworICBxdWVyeS0+cXVlcnlfdHlwZSA9IF9nc3RfZ2xfcXVlcnlfdHlwZV90b19nbCAocXVlcnlfdHlwZSk7CisgIHF1ZXJ5LT5zdXBwb3J0ZWQgPSBfY29udGV4dF9zdXBwb3J0c19xdWVyeV90eXBlIChjb250ZXh0LCBxdWVyeS0+cXVlcnlfdHlwZSk7CisKKyAgaWYgKHF1ZXJ5LT5zdXBwb3J0ZWQpCisgICAgZ2wtPkdlblF1ZXJpZXMgKDEsICZxdWVyeS0+cXVlcnlfaWQpOworCisgIGdzdF9nbF9hc3luY19kZWJ1Z19pbml0ICgmcXVlcnktPmRlYnVnKTsKKyAgcXVlcnktPmRlYnVnLmNhbGxiYWNrID0gX2xvZ190aW1lOworICBxdWVyeS0+ZGVidWcudXNlcl9kYXRhID0gcXVlcnk7Cit9CisKK3ZvaWQKK2dzdF9nbF9xdWVyeV91bnNldCAoR3N0R0xRdWVyeSAqIHF1ZXJ5KQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbDsKKworICBnX3JldHVybl9pZl9mYWlsIChxdWVyeSAhPSBOVUxMKTsKKyAgaWYgKHF1ZXJ5LT5zdGFydF9jYWxsZWQpCisgICAgZ19jcml0aWNhbCAoIlVuc2V0dGluZyBhIHJ1bm5pbmcgcXVlcnkuIFRoaXMgbWF5IG5vdCBiZSB3aGF0IHlvdSB3YW50ZWQuIgorICAgICAgICAiQmUgc3VyZSB0byBwYWlyIGNhbGxzIHRvIGdzdF9nbF9xdWVyeV9zdGFydCgpIGFuZCBnc3RfZ2xfcXVlcnlfZW5kKCkiKTsKKworICBHU1RfVFJBQ0UgKCIlcCB1bnNldHRpbmcgcXVlcnkgJXUiLCBxdWVyeSwgcXVlcnktPnF1ZXJ5X2lkKTsKKworICBnbCA9IHF1ZXJ5LT5jb250ZXh0LT5nbF92dGFibGU7CisKKyAgLyogdW5zZXQgdGhlIGRlYnVnIG9iamVjdCBhcyBpdCBtYXkgY2FsbGJhY2sgdG8gcHJpbnQgdGhlIGxhc3QgbWVzc2FnZSAqLworICBnc3RfZ2xfYXN5bmNfZGVidWdfdW5zZXQgKCZxdWVyeS0+ZGVidWcpOworCisgIGlmIChxdWVyeS0+cXVlcnlfaWQpCisgICAgZ2wtPkRlbGV0ZVF1ZXJpZXMgKDEsICZxdWVyeS0+cXVlcnlfaWQpOworCisgIGdzdF9vYmplY3RfdW5yZWYgKHF1ZXJ5LT5jb250ZXh0KTsKK30KKworR3N0R0xRdWVyeSAqCitnc3RfZ2xfcXVlcnlfbmV3IChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTFF1ZXJ5VHlwZSBxdWVyeV90eXBlKQoreworICBHc3RHTFF1ZXJ5ICpxdWVyeSA9IGdfbmV3MCAoR3N0R0xRdWVyeSwgMSk7CisKKyAgZ3N0X2dsX3F1ZXJ5X2luaXQgKHF1ZXJ5LCBjb250ZXh0LCBxdWVyeV90eXBlKTsKKworICByZXR1cm4gcXVlcnk7Cit9CisKK3ZvaWQKK2dzdF9nbF9xdWVyeV9mcmVlIChHc3RHTFF1ZXJ5ICogcXVlcnkpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKHF1ZXJ5ICE9IE5VTEwpOworCisgIGdzdF9nbF9xdWVyeV91bnNldCAocXVlcnkpOworICBnX2ZyZWUgKHF1ZXJ5KTsKK30KKwordm9pZAorZ3N0X2dsX3F1ZXJ5X3N0YXJ0IChHc3RHTFF1ZXJ5ICogcXVlcnkpCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKHF1ZXJ5ICE9IE5VTEwpOworICBnX3JldHVybl9pZl9mYWlsIChfcXVlcnlfdHlwZV9zdXBwb3J0c19iZWdpbl9lbmQgKHF1ZXJ5LT5xdWVyeV90eXBlKSk7CisKKyAgaWYgKCFxdWVyeS0+c3VwcG9ydGVkKQorICAgIHJldHVybjsKKworICBxdWVyeS0+c3RhcnRfY2FsbGVkID0gVFJVRTsKKyAgZ3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnICgmcXVlcnktPmRlYnVnKTsKKworICBHU1RfVFJBQ0UgKCIlcCBzdGFydCBxdWVyeSB0eXBlIFwnJXNcJyBpZCAldSIsIHF1ZXJ5LAorICAgICAgX3F1ZXJ5X3R5cGVfdG9fc3RyaW5nIChxdWVyeS0+cXVlcnlfdHlwZSksIHF1ZXJ5LT5xdWVyeV9pZCk7CisKKyAgZ2wgPSBxdWVyeS0+Y29udGV4dC0+Z2xfdnRhYmxlOworICBnbC0+QmVnaW5RdWVyeSAocXVlcnktPnF1ZXJ5X3R5cGUsIHF1ZXJ5LT5xdWVyeV9pZCk7Cit9CisKK3ZvaWQKK2dzdF9nbF9xdWVyeV9lbmQgKEdzdEdMUXVlcnkgKiBxdWVyeSkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2w7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAocXVlcnkgIT0gTlVMTCk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKF9xdWVyeV90eXBlX3N1cHBvcnRzX2JlZ2luX2VuZCAocXVlcnktPnF1ZXJ5X3R5cGUpKTsKKworICBpZiAoIXF1ZXJ5LT5zdXBwb3J0ZWQpCisgICAgcmV0dXJuOworICBnX3JldHVybl9pZl9mYWlsIChxdWVyeS0+c3RhcnRfY2FsbGVkKTsKKworICBHU1RfVFJBQ0UgKCIlcCBlbmQgcXVlcnkgdHlwZSBcJyVzXCcgaWQgJXUiLCBxdWVyeSwKKyAgICAgIF9xdWVyeV90eXBlX3RvX3N0cmluZyAocXVlcnktPnF1ZXJ5X3R5cGUpLCBxdWVyeS0+cXVlcnlfaWQpOworCisgIGdsID0gcXVlcnktPmNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBnbC0+RW5kUXVlcnkgKHF1ZXJ5LT5xdWVyeV90eXBlKTsKKyAgcXVlcnktPnN0YXJ0X2NhbGxlZCA9IEZBTFNFOworfQorCit2b2lkCitnc3RfZ2xfcXVlcnlfY291bnRlciAoR3N0R0xRdWVyeSAqIHF1ZXJ5KQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbDsKKworICBnX3JldHVybl9pZl9mYWlsIChxdWVyeSAhPSBOVUxMKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoX3F1ZXJ5X3R5cGVfc3VwcG9ydHNfY291bnRlciAocXVlcnktPnF1ZXJ5X3R5cGUpKTsKKworICBpZiAoIXF1ZXJ5LT5zdXBwb3J0ZWQpCisgICAgcmV0dXJuOworCisgIEdTVF9UUkFDRSAoIiVwIHF1ZXJ5IGNvdW50ZXIgdHlwZSBcJyVzXCcgaWQgJXUiLCBxdWVyeSwKKyAgICAgIF9xdWVyeV90eXBlX3RvX3N0cmluZyAocXVlcnktPnF1ZXJ5X3R5cGUpLCBxdWVyeS0+cXVlcnlfaWQpOworCisgIGdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZyAoJnF1ZXJ5LT5kZWJ1Zyk7CisKKyAgZ2wgPSBxdWVyeS0+Y29udGV4dC0+Z2xfdnRhYmxlOworICBnbC0+UXVlcnlDb3VudGVyIChxdWVyeS0+cXVlcnlfaWQsIHF1ZXJ5LT5xdWVyeV90eXBlKTsKK30KKworZ3VpbnQ2NAorZ3N0X2dsX3F1ZXJ5X3Jlc3VsdCAoR3N0R0xRdWVyeSAqIHF1ZXJ5KQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbDsKKyAgZ3VpbnQ2NCByZXQ7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHF1ZXJ5ICE9IE5VTEwsIDApOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoIXF1ZXJ5LT5zdGFydF9jYWxsZWQsIDApOworCisgIGlmICghcXVlcnktPnN1cHBvcnRlZCkKKyAgICByZXR1cm4gMDsKKworICBnbCA9IHF1ZXJ5LT5jb250ZXh0LT5nbF92dGFibGU7CisgIGlmIChnbC0+R2V0UXVlcnlPYmplY3R1aTY0dikgeworICAgIGdsLT5HZXRRdWVyeU9iamVjdHVpNjR2IChxdWVyeS0+cXVlcnlfaWQsIEdMX1FVRVJZX1JFU1VMVCwgJnJldCk7CisgIH0gZWxzZSB7CisgICAgZ3VpbnQgdG1wOworICAgIGdsLT5HZXRRdWVyeU9iamVjdHVpdiAocXVlcnktPnF1ZXJ5X2lkLCBHTF9RVUVSWV9SRVNVTFQsICZ0bXApOworICAgIHJldCA9IHRtcDsKKyAgfQorCisgIEdTVF9UUkFDRSAoIiVwIGdldCByZXN1bHQgJSIgR19HVUlOVDY0X0ZPUk1BVCAiIHR5cGUgXCclc1wnIGlkICV1IiwgcXVlcnksCisgICAgICByZXQsIF9xdWVyeV90eXBlX3RvX3N0cmluZyAocXVlcnktPnF1ZXJ5X3R5cGUpLCBxdWVyeS0+cXVlcnlfaWQpOworCisgIHJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xxdWVyeS5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdscXVlcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2YwNmZhCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdscXVlcnkuaApAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE2IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX0dMX1FVRVJZX0hfXworI2RlZmluZSBfX0dTVF9HTF9RVUVSWV9IX18KKworI2luY2x1ZGUgPGdzdC9nbC9nc3RnbF9md2QuaD4KKworR19CRUdJTl9ERUNMUworCit0eXBlZGVmIGVudW0KK3sKKyAgR1NUX0dMX1FVRVJZX05PTkUsCisgIEdTVF9HTF9RVUVSWV9USU1FX0VMQVBTRUQsCisgIEdTVF9HTF9RVUVSWV9USU1FU1RBTVAsCit9IEdzdEdMUXVlcnlUeXBlOworCitzdHJ1Y3QgX0dzdEdMUXVlcnkKK3sKKyAgLyogPHByaXZhdGU+ICovCisgIEdzdEdMQ29udGV4dCAqICAgIGNvbnRleHQ7CisgIGd1aW50ICAgICAgICAgICAgIHF1ZXJ5X3R5cGU7CisgIGd1aW50ICAgICAgICAgICAgIHF1ZXJ5X2lkOworICBnYm9vbGVhbiAgICAgICAgICBzdXBwb3J0ZWQ7CisKKyAgZ2Jvb2xlYW4gICAgICAgICAgc3RhcnRfY2FsbGVkOworICBHc3RHTEFzeW5jRGVidWcgICBkZWJ1ZzsKK307CisKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X2dsX3F1ZXJ5X2luaXQgICAgICAgICAgICAgICAoR3N0R0xRdWVyeSAqIHF1ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFF1ZXJ5VHlwZSBxdWVyeV90eXBlKTsKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X2dsX3F1ZXJ5X3Vuc2V0ICAgICAgICAgICAgICAoR3N0R0xRdWVyeSAqIHF1ZXJ5KTsKK0dzdEdMUXVlcnkgKiAgICAgICAgZ3N0X2dsX3F1ZXJ5X25ldyAgICAgICAgICAgICAgICAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xRdWVyeVR5cGUgcXVlcnlfdHlwZSk7Cit2b2lkICAgICAgICAgICAgICAgIGdzdF9nbF9xdWVyeV9mcmVlICAgICAgICAgICAgICAgKEdzdEdMUXVlcnkgKiBxdWVyeSk7CisKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X2dsX3F1ZXJ5X3N0YXJ0ICAgICAgICAgICAgICAoR3N0R0xRdWVyeSAqIHF1ZXJ5KTsKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X2dsX3F1ZXJ5X2VuZCAgICAgICAgICAgICAgICAoR3N0R0xRdWVyeSAqIHF1ZXJ5KTsKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X2dsX3F1ZXJ5X2NvdW50ZXIgICAgICAgICAgICAoR3N0R0xRdWVyeSAqIHF1ZXJ5KTsKK2d1aW50NjQgICAgICAgICAgICAgZ3N0X2dsX3F1ZXJ5X3Jlc3VsdCAgICAgICAgICAgICAoR3N0R0xRdWVyeSAqIHF1ZXJ5KTsKKworI2RlZmluZSBnc3RfZ2xfcXVlcnlfc3RhcnRfbG9nX3ZhbGlzdChxdWVyeSxjYXQsbGV2ZWwsb2JqZWN0LGZvcm1hdCx2YXJhcmdzKSBcCisgIEdfU1RNVF9TVEFSVCB7ICAgIFwKKyAgICBHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPR192YWxpc3QgKCYocXVlcnkpLT5kZWJ1ZywgY2F0LCBsZXZlbCwgb2JqZWN0LCBmb3JtYXQsIHZhcmFyZ3MpOyBcCisgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZSAoJihxdWVyeSktPmRlYnVnKTsgXAorICAgIGdzdF9nbF9xdWVyeV9zdGFydCAocXVlcnkpOyBcCisgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX3RoYXcgKCYocXVlcnkpLT5kZWJ1Zyk7IFwKKyAgfSBHX1NUTVRfRU5ECisKKyNkZWZpbmUgZ3N0X2dsX3F1ZXJ5X2NvdW50ZXJfbG9nX3ZhbGlzdChxdWVyeSxjYXQsbGV2ZWwsb2JqZWN0LGZvcm1hdCx2YXJhcmdzKSBcCisgIEdfU1RNVF9TVEFSVCB7ICAgIFwKKyAgICBHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPR192YWxpc3QgKCYocXVlcnkpLT5kZWJ1ZywgY2F0LCBsZXZlbCwgb2JqZWN0LCBmb3JtYXQsIHZhcmFyZ3MpOyBcCisgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZSAoJihxdWVyeSktPmRlYnVnKTsgXAorICAgIGdzdF9nbF9xdWVyeV9jb3VudGVyIChxdWVyeSk7IFwKKyAgICBnc3RfZ2xfYXN5bmNfZGVidWdfdGhhdyAoJihxdWVyeSktPmRlYnVnKTsgXAorICB9IEdfU1RNVF9FTkQKKworI2lmIEdfSEFWRV9JU09fVkFSQVJHUworCisjZGVmaW5lIGdzdF9nbF9xdWVyeV9zdGFydF9sb2cocXVlcnksY2F0LGxldmVsLG9iamVjdCxmb3JtYXQsLi4uKSBcCisgIEdfU1RNVF9TVEFSVCB7ICAgIFwKKyAgICBHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPRyAoJihxdWVyeSktPmRlYnVnLCBjYXQsIGxldmVsLCBvYmplY3QsIGZvcm1hdCwgX19WQV9BUkdTX18pOyBcCisgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZSAoJihxdWVyeSktPmRlYnVnKTsgXAorICAgIGdzdF9nbF9xdWVyeV9zdGFydCAocXVlcnkpOyBcCisgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX3RoYXcgKCYocXVlcnkpLT5kZWJ1Zyk7IFwKKyAgfSBHX1NUTVRfRU5ECisjZGVmaW5lIGdzdF9nbF9xdWVyeV9jb3VudGVyX2xvZyhxdWVyeSxjYXQsbGV2ZWwsb2JqZWN0LGZvcm1hdCwuLi4pIFwKKyAgR19TVE1UX1NUQVJUIHsgICAgXAorICAgIEdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HICgmKHF1ZXJ5KS0+ZGVidWcsIGNhdCwgbGV2ZWwsIG9iamVjdCwgZm9ybWF0LCBfX1ZBX0FSR1NfXyk7IFwKKyAgICBnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplICgmKHF1ZXJ5KS0+ZGVidWcpOyBcCisgICAgZ3N0X2dsX3F1ZXJ5X2NvdW50ZXIgKHF1ZXJ5KTsgXAorICAgIGdzdF9nbF9hc3luY19kZWJ1Z190aGF3ICgmKHF1ZXJ5KS0+ZGVidWcpOyBcCisgIH0gR19TVE1UX0VORAorCisjZWxzZSAvKiBHX0hBVkVfSVNPX1ZBUkFSR1MgKi8KKyNpZiBHX0hBVkVfR05VQ19WQVJBUkdTCisKKyNkZWZpbmUgZ3N0X2dsX3F1ZXJ5X3N0YXJ0X2xvZyhxdWVyeSxjYXQsbGV2ZWwsb2JqZWN0LGZvcm1hdCxhcmdzLi4uKSBcCisgIEdfU1RNVF9TVEFSVCB7ICAgIFwKKyAgICBHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPRyAoJihxdWVyeSktPmRlYnVnLCBjYXQsIGxldmVsLCBvYmplY3QsIGZvcm1hdCwgIyNhcmdzKTsgXAorICAgIGdzdF9nbF9hc3luY19kZWJ1Z19mcmVlemUgKCYocXVlcnkpLT5kZWJ1Zyk7IFwKKyAgICBnc3RfZ2xfcXVlcnlfc3RhcnQgKHF1ZXJ5KTsgXAorICAgIGdzdF9nbF9hc3luY19kZWJ1Z190aGF3ICgmKHF1ZXJ5KS0+ZGVidWcpOyBcCisgIH0gR19TVE1UX0VORAorI2RlZmluZSBnc3RfZ2xfcXVlcnlfY291bnRlcl9sb2cocXVlcnksY2F0LGxldmVsLG9iamVjdCxmb3JtYXQsYXJncy4uLikgXAorICBHX1NUTVRfU1RBUlQgeyAgICBcCisgICAgR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0cgKCYocXVlcnkpLT5kZWJ1ZywgY2F0LCBsZXZlbCwgb2JqZWN0LCBmb3JtYXQsICMjYXJncyk7IFwKKyAgICBnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplICgmKHF1ZXJ5KS0+ZGVidWcpOyBcCisgICAgZ3N0X2dsX3F1ZXJ5X2NvdW50ZXIgKHF1ZXJ5KTsgXAorICAgIGdzdF9nbF9hc3luY19kZWJ1Z190aGF3ICgmKHF1ZXJ5KS0+ZGVidWcpOyBcCisgIH0gR19TVE1UX0VORAorCisjZWxzZSAvKiBHX0hBVkVfR05VQ19WQVJBUkdTICovCisKK3N0YXRpYyBpbmxpbmUgdm9pZAorZ3N0X2dsX3F1ZXJ5X3N0YXJ0X2xvZyhHc3RHTFF1ZXJ5ICogcXVlcnksIEdzdERlYnVnQ2F0ZWdvcnkgKiBjYXQsCisgICAgR3N0RGVidWdMZXZlbCBsZXZlbCwgR09iamVjdCAqIG9iamVjdCwgY29uc3QgZ2NoYXIgKiBmb3JtYXQsIC4uLikKK3sKKyAgdmFfbGlzdCB2YXJhcmdzOworCisgIHZhX3N0YXJ0ICh2YXJhcmdzLCBmb3JtYXQpOworICBnc3RfZ2xfcXVlcnlfc3RhcnRfbG9nX3ZhbGlzdCAocXVlcnksIGNhdCwgbGV2ZWwsIG9iamVjdCwgZm9ybWF0LCB2YXJhcmdzKTsKKyAgdmFfZW5kICh2YXJhcmdzKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitnc3RfZ2xfcXVlcnlfY291bnRlcl9sb2coR3N0R0xRdWVyeSAqIHF1ZXJ5LCBHc3REZWJ1Z0NhdGVnb3J5ICogY2F0LAorICAgIEdzdERlYnVnTGV2ZWwgbGV2ZWwsIEdPYmplY3QgKiBvYmplY3QsIGNvbnN0IGdjaGFyICogZm9ybWF0LCAuLi4pCit7CisgIHZhX2xpc3QgdmFyYXJnczsKKworICB2YV9zdGFydCAodmFyYXJncywgZm9ybWF0KTsKKyAgZ3N0X2dsX3F1ZXJ5X2NvdW50ZXJfbG9nX3ZhbGlzdCAocXVlcnksIGNhdCwgbGV2ZWwsIG9iamVjdCwgZm9ybWF0LCB2YXJhcmdzKTsKKyAgdmFfZW5kICh2YXJhcmdzKTsKK30KKworI2VuZGlmIC8qIEdfSEFWRV9HTlVDX1ZBUkFSR1MgKi8KKyNlbmRpZiAvKiBHX0hBVkVfSVNPX1ZBUkFSR1MgKi8KKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX0dMX1FVRVJZX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXIuYwppbmRleCBhNDFiZjM4Li45ZDk2Nzg0IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXIuYworKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXIuYwpAQCAtMjUsMzggKzI1LDE0IEBACiAKICNpbmNsdWRlICJnbC5oIgogI2luY2x1ZGUgImdzdGdsc2hhZGVyLmgiCisjaW5jbHVkZSAiZ3N0Z2xzbF9wcml2YXRlLmgiCiAKLS8qIEZJWE1FOiBzZXBhcmF0ZSBpbnRvIHNlcGFyYXRlIHNoYWRlciBzdGFnZSBvYmplY3RzIHRoYXQgY2FuIGJlIGFkZGVkL3JlbW92ZWQKLSAqIGluZGVwZW5kZW50bHkgb2YgdGhlIHNoYWRlciBwcm9ncmFtICovCisvKioKKyAqIFNFQ1RJT046Z3N0Z2xzaGFkZXIKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogb2JqZWN0IHJlcHJlc2VudGluZyBhbiBPcGVuR0wgc2hhZGVyIHByb2dyYW0KKyAqIEBzZWVfYWxzbzogI0dzdEdMU0xTdGFnZQorICovCiAKLXN0YXRpYyBjb25zdCBnY2hhciAqZXMyX3ZlcnNpb25faGVhZGVyID0gIiN2ZXJzaW9uIDEwMFxuIjsKLQotLyogKklOREVOVC1PRkYqICovCi1zdGF0aWMgY29uc3QgZ2NoYXIgKnNpbXBsZV92ZXJ0ZXhfc2hhZGVyX3N0cl9nbGVzMiA9Ci0gICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjtcbiIKLSAgICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleGNvb3JkO1xuIgotICAgICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgotICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAie1xuIgotICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbiIKLSAgICAgICIgICB2X3RleGNvb3JkID0gYV90ZXhjb29yZDtcbiIKLSAgICAgICJ9XG4iOwotCi1zdGF0aWMgY29uc3QgZ2NoYXIgKnNpbXBsZV9mcmFnbWVudF9zaGFkZXJfc3RyX2dsZXMyID0KLSAgICAgICIjaWZkZWYgR0xfRVNcbiIKLSAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICIjZW5kaWZcbiIKLSAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKLSAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICJ7XG4iCi0gICAgICAiICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB2X3RleGNvb3JkKTtcbiIKLSAgICAgICJ9IjsKLS8qICpJTkRFTlQtT04qICovCi0KLSNpZm5kZWYgR0xfQ09NUElMRV9TVEFUVVMKLSNkZWZpbmUgR0xfQ09NUElMRV9TVEFUVVMgICAgICAgICAgICAgMHg4QjgxCi0jZW5kaWYKICNpZm5kZWYgR0xoYW5kbGVBUkIKICNkZWZpbmUgR0xoYW5kbGVBUkIgR0x1aW50CiAjZW5kaWYKQEAgLTk0LDI3ICs3MCwxOCBAQAogZW51bQogewogICBQUk9QXzAsCi0gIFBST1BfVkVSVEVYX1NSQywKLSAgUFJPUF9GUkFHTUVOVF9TUkMsCi0gIFBST1BfQ09NUElMRUQsCi0gIFBST1BfQUNUSVZFICAgICAgICAgICAgICAgICAgIC8qIHVudXNlZCAqLworICBQUk9QX0xJTktFRCwKIH07CiAKIHN0cnVjdCBfR3N0R0xTaGFkZXJQcml2YXRlCiB7Ci0gIGdjaGFyICp2ZXJ0ZXhfc3JjOwotICBnY2hhciAqZnJhZ21lbnRfc3JjOwotCi0gIEdMaGFuZGxlQVJCIHZlcnRleF9oYW5kbGU7Ci0gIEdMaGFuZGxlQVJCIGZyYWdtZW50X2hhbmRsZTsKICAgR0xoYW5kbGVBUkIgcHJvZ3JhbV9oYW5kbGU7CisgIEdMaXN0ICpzdGFnZXM7CiAKLSAgZ2Jvb2xlYW4gY29tcGlsZWQ7Ci0gIGdib29sZWFuIGFjdGl2ZTsKKyAgZ2Jvb2xlYW4gbGlua2VkOworICBHSGFzaFRhYmxlICp1bmlmb3JtX2xvY2F0aW9uczsKIAotICBHc3RHTEFQSSBnbF9hcGk7Ci0KLSAgR3N0R0xTaGFkZXJWVGFibGUgdnRhYmxlOworICBHc3RHTFNMRnVuY3MgdnRhYmxlOwogfTsKIAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X2dsX3NoYWRlcl9kZWJ1Zyk7CkBAIC0xMzAsMjEgKzk3LDIxIEBACiB7CiAgIEdzdEdMU2hhZGVyUHJpdmF0ZSAqcHJpdiA9IHNoYWRlci0+cHJpdjsKIAorICBHU1RfT0JKRUNUX0xPQ0sgKHNoYWRlcik7CisKICAgLyogcmVsZWFzZSBzaGFkZXIgb2JqZWN0cyAqLwotICBnc3RfZ2xfc2hhZGVyX3JlbGVhc2UgKHNoYWRlcik7CisgIGdzdF9nbF9zaGFkZXJfcmVsZWFzZV91bmxvY2tlZCAoc2hhZGVyKTsKIAogICAvKiBkZWxldGUgcHJvZ3JhbSAqLwogICBpZiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUpIHsKICAgICBHU1RfVFJBQ0UgKCJmaW5hbGl6aW5nIHByb2dyYW0gc2hhZGVyICV1IiwgcHJpdi0+cHJvZ3JhbV9oYW5kbGUpOwogCiAgICAgcHJpdi0+dnRhYmxlLkRlbGV0ZVByb2dyYW0gKHByaXYtPnByb2dyYW1faGFuZGxlKTsKLSAgICAvKiBlcnIgPSBnbEdldEVycm9yICgpOyAqLwotICAgIC8qIEdTVF9XQVJOSU5HICgiZXJyb3I6IDB4JXgiLCBlcnIpOyAgKi8KLSAgICAvKiBnbEdldE9iamVjdFBhcmFtZXRlcml2KHByaXYtPnByb2dyYW1faGFuZGxlLCBHTF9PQkpFQ1RfREVMRVRFX1NUQVRVU18sICZzdGF0dXMpOyAqLwotICAgIC8qIEdTVF9JTkZPICgicHJvZ3JhbSBkZWxldGlvbiBzdGF0dXM6JXMiLCBzdGF0dXMgPT0gR0xfVFJVRSA/ICJ0cnVlIiA6ICJmYWxzZSIgKTsgKi8KICAgfQogCiAgIEdTVF9ERUJVRyAoInNoYWRlciBkZWxldGVkICV1IiwgcHJpdi0+cHJvZ3JhbV9oYW5kbGUpOworCisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaGFkZXIpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTU4LDE1ICsxMjUsMTEgQEAKIAogICBHU1RfVFJBQ0VfT0JKRUNUIChzaGFkZXIsICJmaW5hbGl6aW5nIHNoYWRlciAldSIsIHByaXYtPnByb2dyYW1faGFuZGxlKTsKIAotICBnX2ZyZWUgKHByaXYtPnZlcnRleF9zcmMpOwotICBnX2ZyZWUgKHByaXYtPmZyYWdtZW50X3NyYyk7Ci0KICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoc2hhZGVyLT5jb250ZXh0LAogICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9jbGVhbnVwX3NoYWRlciwgc2hhZGVyKTsKIAotICBwcml2LT5mcmFnbWVudF9oYW5kbGUgPSAwOwotICBwcml2LT52ZXJ0ZXhfaGFuZGxlID0gMDsKICAgcHJpdi0+cHJvZ3JhbV9oYW5kbGUgPSAwOworICBnX2hhc2hfdGFibGVfZGVzdHJveSAocHJpdi0+dW5pZm9ybV9sb2NhdGlvbnMpOwogCiAgIGlmIChzaGFkZXItPmNvbnRleHQpIHsKICAgICBnc3Rfb2JqZWN0X3VucmVmIChzaGFkZXItPmNvbnRleHQpOwpAQCAtMTgwLDE1ICsxNDMsNyBAQAogZ3N0X2dsX3NoYWRlcl9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCiAgICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKIHsKLSAgR3N0R0xTaGFkZXIgKnNoYWRlciA9IEdTVF9HTF9TSEFERVIgKG9iamVjdCk7Ci0KICAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX1ZFUlRFWF9TUkM6Ci0gICAgICBnc3RfZ2xfc2hhZGVyX3NldF92ZXJ0ZXhfc291cmNlIChzaGFkZXIsIGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9GUkFHTUVOVF9TUkM6Ci0gICAgICBnc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2UgKHNoYWRlciwgZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSkpOwotICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKQEAgLTIwMywyNyArMTU4LDEzIEBACiAgIEdzdEdMU2hhZGVyUHJpdmF0ZSAqcHJpdiA9IHNoYWRlci0+cHJpdjsKIAogICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfVkVSVEVYX1NSQzoKLSAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIHByaXYtPnZlcnRleF9zcmMpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0ZSQUdNRU5UX1NSQzoKLSAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIHByaXYtPmZyYWdtZW50X3NyYyk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQ09NUElMRUQ6Ci0gICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgcHJpdi0+Y29tcGlsZWQpOworICAgIGNhc2UgUFJPUF9MSU5LRUQ6CisgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgcHJpdi0+bGlua2VkKTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CiAgIH0KLQotfQotCi1pbnQKLWdzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlIChHc3RHTFNoYWRlciAqIHNoYWRlcikKLXsKLSAgR3N0R0xTaGFkZXJQcml2YXRlICpwcml2ID0gc2hhZGVyLT5wcml2OwotICByZXR1cm4gKGludCkgcHJpdi0+cHJvZ3JhbV9oYW5kbGU7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yMzksODIgKzE4MCwxNCBAQAogICBvYmpfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9nbF9zaGFkZXJfZ2V0X3Byb3BlcnR5OwogCiAgIC8qIC4uIGFuZCBpbnN0YWxsIHByb3BlcnRpZXMgKi8KLQogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChvYmpfY2xhc3MsCi0gICAgICBQUk9QX1ZFUlRFWF9TUkMsCi0gICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgidmVydGV4LXNyYyIsCi0gICAgICAgICAgIlZlcnRleCBTb3VyY2UiLAotICAgICAgICAgICJHTFNMIFZlcnRleCBTaGFkZXIgc291cmNlIGNvZGUiLCBOVUxMLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChvYmpfY2xhc3MsCi0gICAgICBQUk9QX0ZSQUdNRU5UX1NSQywKLSAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJmcmFnbWVudC1zcmMiLAotICAgICAgICAgICJGcmFnbWVudCBTb3VyY2UiLAotICAgICAgICAgICJHTFNMIEZyYWdtZW50IFNoYWRlciBzb3VyY2UgY29kZSIsIE5VTEwsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKG9ial9jbGFzcywKLSAgICAgIFBST1BfQUNUSVZFLAotICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoImFjdGl2ZSIsCi0gICAgICAgICAgIkFjdGl2ZSIsICJFbmFibGUvRGlzYWJsZSB0aGUgc2hhZGVyIiwgTlVMTCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAob2JqX2NsYXNzLAotICAgICAgUFJPUF9DT01QSUxFRCwKLSAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiY29tcGlsZWQiLAotICAgICAgICAgICJDb21waWxlZCIsCi0gICAgICAgICAgIlNoYWRlciBjb21waWxlIGFuZCBsaW5rIHN0YXR1cyIsIEZBTFNFLAorICAgICAgUFJPUF9MSU5LRUQsCisgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImxpbmtlZCIsCisgICAgICAgICAgIkxpbmtlZCIsCisgICAgICAgICAgIlNoYWRlciBsaW5rIHN0YXR1cyIsIEZBTFNFLAogICAgICAgICAgIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CiB9CiAKLXZvaWQKLWdzdF9nbF9zaGFkZXJfc2V0X3ZlcnRleF9zb3VyY2UgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBjb25zdCBnY2hhciAqIHNyYykKLXsKLSAgR3N0R0xTaGFkZXJQcml2YXRlICpwcml2OwotCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19TSEFERVIgKHNoYWRlcikpOwotICBnX3JldHVybl9pZl9mYWlsIChzcmMgIT0gTlVMTCk7Ci0KLSAgcHJpdiA9IHNoYWRlci0+cHJpdjsKLQotICBpZiAoZ3N0X2dsX3NoYWRlcl9pc19jb21waWxlZCAoc2hhZGVyKSkKLSAgICBnc3RfZ2xfc2hhZGVyX3JlbGVhc2UgKHNoYWRlcik7Ci0KLSAgZ19mcmVlIChwcml2LT52ZXJ0ZXhfc3JjKTsKLQotICBwcml2LT52ZXJ0ZXhfc3JjID0gZ19zdHJkdXAgKHNyYyk7Ci19Ci0KLXZvaWQKLWdzdF9nbF9zaGFkZXJfc2V0X2ZyYWdtZW50X3NvdXJjZSAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIGNvbnN0IGdjaGFyICogc3JjKQotewotICBHc3RHTFNoYWRlclByaXZhdGUgKnByaXY7Ci0KLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1NIQURFUiAoc2hhZGVyKSk7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKHNyYyAhPSBOVUxMKTsKLQotICBwcml2ID0gc2hhZGVyLT5wcml2OwotCi0gIGlmIChnc3RfZ2xfc2hhZGVyX2lzX2NvbXBpbGVkIChzaGFkZXIpKQotICAgIGdzdF9nbF9zaGFkZXJfcmVsZWFzZSAoc2hhZGVyKTsKLQotICBnX2ZyZWUgKHByaXYtPmZyYWdtZW50X3NyYyk7Ci0KLSAgcHJpdi0+ZnJhZ21lbnRfc3JjID0gZ19zdHJkdXAgKHNyYyk7Ci19Ci0KLWNvbnN0IGdjaGFyICoKLWdzdF9nbF9zaGFkZXJfZ2V0X3ZlcnRleF9zb3VyY2UgKEdzdEdMU2hhZGVyICogc2hhZGVyKQotewotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX1NIQURFUiAoc2hhZGVyKSwgTlVMTCk7Ci0gIHJldHVybiBzaGFkZXItPnByaXYtPnZlcnRleF9zcmM7Ci19Ci0KLWNvbnN0IGdjaGFyICoKLWdzdF9nbF9zaGFkZXJfZ2V0X2ZyYWdtZW50X3NvdXJjZSAoR3N0R0xTaGFkZXIgKiBzaGFkZXIpCi17Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfU0hBREVSIChzaGFkZXIpLCBOVUxMKTsKLSAgcmV0dXJuIHNoYWRlci0+cHJpdi0+ZnJhZ21lbnRfc3JjOwotfQotCiBzdGF0aWMgdm9pZAogZ3N0X2dsX3NoYWRlcl9pbml0IChHc3RHTFNoYWRlciAqIHNlbGYpCiB7CkBAIC0zMjMsMjY4ICsxOTYsNDkwIEBACiAKICAgcHJpdiA9IHNlbGYtPnByaXYgPSBHU1RfR0xfU0hBREVSX0dFVF9QUklWQVRFIChzZWxmKTsKIAotICBwcml2LT52ZXJ0ZXhfc3JjID0gTlVMTDsKLSAgcHJpdi0+ZnJhZ21lbnRfc3JjID0gTlVMTDsKKyAgcHJpdi0+bGlua2VkID0gRkFMU0U7CisgIHByaXYtPnVuaWZvcm1fbG9jYXRpb25zID0KKyAgICAgIGdfaGFzaF90YWJsZV9uZXdfZnVsbCAoZ19zdHJfaGFzaCwgZ19zdHJfZXF1YWwsIGdfZnJlZSwgTlVMTCk7Cit9CiAKLSAgcHJpdi0+ZnJhZ21lbnRfaGFuZGxlID0gMDsKLSAgcHJpdi0+dmVydGV4X2hhbmRsZSA9IDA7CitzdGF0aWMgaW50CitfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKEdzdEdMU2hhZGVyICogc2hhZGVyLCBjb25zdCBnY2hhciAqIG5hbWUpCit7CisgIEdzdEdMU2hhZGVyUHJpdmF0ZSAqcHJpdiA9IHNoYWRlci0+cHJpdjsKKyAgaW50IGxvY2F0aW9uOworICBncG9pbnRlciB2YWx1ZTsKIAotICBwcml2LT5jb21waWxlZCA9IEZBTFNFOwotICBwcml2LT5hY3RpdmUgPSBGQUxTRTsgICAgICAgICAvKiB1bnVzZWQgYXQgdGhlIG1vbWVudCAqLworICBnX3JldHVybl92YWxfaWZfZmFpbCAocHJpdi0+bGlua2VkLCAwKTsKIAotICAvKiBGSVhNRTogYWRkIEFQSSB0byBnZXQvc2V0IHRoaXMgZm9yIGVhY2ggc2hhZGVyICovCi0gIHByaXYtPmdsX2FwaSA9IEdTVF9HTF9BUElfQU5ZOworICBpZiAoIWdfaGFzaF90YWJsZV9sb29rdXBfZXh0ZW5kZWQgKHByaXYtPnVuaWZvcm1fbG9jYXRpb25zLCBuYW1lLCBOVUxMLAorICAgICAgICAgICZ2YWx1ZSkpIHsKKyAgICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOworICAgIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHByaXYtPnVuaWZvcm1fbG9jYXRpb25zLCBnX3N0cmR1cCAobmFtZSksCisgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAobG9jYXRpb24pKTsKKyAgfSBlbHNlIHsKKyAgICBsb2NhdGlvbiA9IEdQT0lOVEVSX1RPX0lOVCAodmFsdWUpOworICB9CisKKyAgcmV0dXJuIGxvY2F0aW9uOworfQorCitzdGF0aWMgR3N0R0xTaGFkZXIgKgorX25ld193aXRoX3N0YWdlc192YV9saXN0IChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHRXJyb3IgKiogZXJyb3IsCisgICAgdmFfbGlzdCB2YXJhcmdzKQoreworICBHc3RHTFNoYWRlciAqc2hhZGVyOworICBHc3RHTFNMU3RhZ2UgKnN0YWdlOworICBnYm9vbGVhbiB0b191bnJlZl9hbmRfb3V0ID0gRkFMU0U7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgTlVMTCk7CisKKyAgc2hhZGVyID0gZ19vYmplY3RfbmV3IChHU1RfR0xfVFlQRV9TSEFERVIsIE5VTEwpOworICBzaGFkZXItPmNvbnRleHQgPSBnc3Rfb2JqZWN0X3JlZiAoY29udGV4dCk7CisKKyAgd2hpbGUgKChzdGFnZSA9IHZhX2FyZyAodmFyYXJncywgR3N0R0xTTFN0YWdlICopKSkgeworICAgIGlmICh0b191bnJlZl9hbmRfb3V0KSB7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChzdGFnZSk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICBpZiAoIWdzdF9nbHNsX3N0YWdlX2NvbXBpbGUgKHN0YWdlLCBlcnJvcikpIHsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHN0YWdlKTsKKyAgICAgIHRvX3VucmVmX2FuZF9vdXQgPSBUUlVFOworICAgICAgY29udGludWU7CisgICAgfQorICAgIGlmICghZ3N0X2dsX3NoYWRlcl9hdHRhY2ggKHNoYWRlciwgc3RhZ2UpKSB7CisgICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTFNMX0VSUk9SLCBHU1RfR0xTTF9FUlJPUl9QUk9HUkFNLAorICAgICAgICAgICJGYWlsZWQgdG8gYXR0YWNoIHN0YWdlIHRvIHByb2dyYW0iKTsKKyAgICAgIHRvX3VucmVmX2FuZF9vdXQgPSBUUlVFOworICAgICAgY29udGludWU7CisgICAgfQorICB9CisKKyAgaWYgKHRvX3VucmVmX2FuZF9vdXQpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzaGFkZXIpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgcmV0dXJuIHNoYWRlcjsKK30KKworLyoqCisgKiBnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzOgorICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAorICogQGVycm9yOiBhICNHRXJyb3IKKyAqIEAuLi46IGEgTlVMTCB0ZXJtaW5hdGVkIGxpc3Qgb2YgI0dzdEdMU0xTdGFnZSdzCisgKgorICogRWFjaCBzdGFnZSB3aWxsIGF0dGVtcHQgdG8gYmUgY29tcGlsZWQgYW5kIGF0dGFjaGVkIHRvIEBzaGFkZXIuICBUaGVuCisgKiB0aGUgc2hhZGVyIHdpbGwgYmUgbGlua2VkLiBPbiBlcnJvciwgJU5VTEwgd2lsbCBiZSByZXR1cm5lZCBhbmQgQGVycm9yIHdpbGwKKyAqIGNvbnRhaW4gdGhlIGRldGFpbHMgb2YgdGhlIGVycm9yLgorICoKKyAqIE5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3IEBzaGFkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHN0YWdlcy4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK0dzdEdMU2hhZGVyICoKK2dzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXMgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdFcnJvciAqKiBlcnJvciwKKyAgICAuLi4pCit7CisgIEdzdEdMU2hhZGVyICpzaGFkZXI7CisgIHZhX2xpc3QgdmFyYXJnczsKKworICB2YV9zdGFydCAodmFyYXJncywgZXJyb3IpOworICBzaGFkZXIgPSBfbmV3X3dpdGhfc3RhZ2VzX3ZhX2xpc3QgKGNvbnRleHQsIGVycm9yLCB2YXJhcmdzKTsKKyAgdmFfZW5kICh2YXJhcmdzKTsKKworICBpZiAoIXNoYWRlcikKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAoIWdzdF9nbF9zaGFkZXJfbGluayAoc2hhZGVyLCBlcnJvcikpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgcmV0dXJuIHNoYWRlcjsKK30KKworLyoqCisgKiBnc3RfZ2xfc2hhZGVyX25ld193aXRoX3N0YWdlczoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEBlcnJvcjogYSAjR0Vycm9yCisgKiBALi4uOiBhIE5VTEwgdGVybWluYXRlZCBsaXN0IG9mICNHc3RHTFNMU3RhZ2UncworICoKKyAqIEVhY2ggc3RhZ2Ugd2lsbCBhdHRlbXB0IHRvIGJlIGNvbXBpbGVkIGFuZCBhdHRhY2hlZCB0byBAc2hhZGVyLiAgT24gZXJyb3IsCisgKiAlTlVMTCB3aWxsIGJlIHJldHVybmVkIGFuZCBAZXJyb3Igd2lsbCBjb250YWluIHRoZSBkZXRhaWxzIG9mIHRoZSBlcnJvci4KKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyBAc2hhZGVyIHdpdGggdGhlIHNwZWNpZmllZCBzdGFnZXMuCisgKgorICogU2luY2U6IDEuOAorICovCitHc3RHTFNoYWRlciAqCitnc3RfZ2xfc2hhZGVyX25ld193aXRoX3N0YWdlcyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR0Vycm9yICoqIGVycm9yLCAuLi4pCit7CisgIEdzdEdMU2hhZGVyICpzaGFkZXI7CisgIHZhX2xpc3QgdmFyYXJnczsKKworICB2YV9zdGFydCAodmFyYXJncywgZXJyb3IpOworICBzaGFkZXIgPSBfbmV3X3dpdGhfc3RhZ2VzX3ZhX2xpc3QgKGNvbnRleHQsIGVycm9yLCB2YXJhcmdzKTsKKyAgdmFfZW5kICh2YXJhcmdzKTsKKworICByZXR1cm4gc2hhZGVyOworfQorCisvKioKKyAqIGdzdF9nbF9zaGFkZXJfbmV3OgorICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAorICoKKyAqIE5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3IGVtcHR5IEBzaGFkZXIKKyAqLworR3N0R0xTaGFkZXIgKgorZ3N0X2dsX3NoYWRlcl9uZXcgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCit7CisgIHJldHVybiBnc3RfZ2xfc2hhZGVyX25ld193aXRoX3N0YWdlcyAoY29udGV4dCwgTlVMTCwgTlVMTCk7Cit9CisKKy8qKgorICogZ3N0X2dsX3NoYWRlcl9uZXdfZGVmYXVsdDoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEBlcnJvcjogYSAjR0Vycm9yIHRoYXQgaXMgZmlsbGVkIG9uIGZhaWx1cmUKKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIGRlZmF1bHQgQHNoYWRlciBvciAlTlVMTCBvbiBmYWlsdXJlCisgKgorICogU2luY2U6IDEuOAorICovCitHc3RHTFNoYWRlciAqCitnc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0IChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHRXJyb3IgKiogZXJyb3IpCit7CisgIHJldHVybiBnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzIChjb250ZXh0LCBlcnJvciwKKyAgICAgIGdzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X3ZlcnRleCAoY29udGV4dCksCisgICAgICBnc3RfZ2xzbF9zdGFnZV9uZXdfZGVmYXVsdF9mcmFnbWVudCAoY29udGV4dCksIE5VTEwpOworfQorCisvKioKKyAqIGdzdF9nbF9zaGFkZXJfaXNfbGlua2VkOgorICogQHNoYWRlcjogYSAjR3N0R0xTaGFkZXIKKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkCisgKgorICogUmV0dXJuczogd2hldGhlciBAc2hhZGVyIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBsaW5rZWQKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK2dib29sZWFuCitnc3RfZ2xfc2hhZGVyX2lzX2xpbmtlZCAoR3N0R0xTaGFkZXIgKiBzaGFkZXIpCit7CisgIGdib29sZWFuIHJldDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX1NIQURFUiAoc2hhZGVyKSwgRkFMU0UpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoc2hhZGVyKTsKKyAgcmV0ID0gc2hhZGVyLT5wcml2LT5saW5rZWQ7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaGFkZXIpOworCisgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgotX2ZpbGxfdnRhYmxlIChHc3RHTFNoYWRlciAqIHNoYWRlciwgR3N0R0xDb250ZXh0ICogY29udGV4dCkKK19lbnN1cmVfcHJvZ3JhbSAoR3N0R0xTaGFkZXIgKiBzaGFkZXIpCiB7Ci0gIEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOwotICBHc3RHTFNoYWRlclZUYWJsZSAqdnRhYmxlID0gJnNoYWRlci0+cHJpdi0+dnRhYmxlOworICBpZiAoc2hhZGVyLT5wcml2LT5wcm9ncmFtX2hhbmRsZSkKKyAgICByZXR1cm4gVFJVRTsKIAotICBpZiAoZ2wtPkNyZWF0ZVByb2dyYW0pIHsKLSAgICB2dGFibGUtPkNyZWF0ZVByb2dyYW0gPSBnbC0+Q3JlYXRlUHJvZ3JhbTsKLSAgICB2dGFibGUtPkRlbGV0ZVByb2dyYW0gPSBnbC0+RGVsZXRlUHJvZ3JhbTsKLSAgICB2dGFibGUtPlVzZVByb2dyYW0gPSBnbC0+VXNlUHJvZ3JhbTsKKyAgc2hhZGVyLT5wcml2LT5wcm9ncmFtX2hhbmRsZSA9IHNoYWRlci0+cHJpdi0+dnRhYmxlLkNyZWF0ZVByb2dyYW0gKCk7CisgIHJldHVybiBzaGFkZXItPnByaXYtPnByb2dyYW1faGFuZGxlICE9IDA7Cit9CiAKLSAgICB2dGFibGUtPkNyZWF0ZVNoYWRlciA9IGdsLT5DcmVhdGVTaGFkZXI7Ci0gICAgdnRhYmxlLT5EZWxldGVTaGFkZXIgPSBnbC0+RGVsZXRlU2hhZGVyOwotICAgIHZ0YWJsZS0+QXR0YWNoU2hhZGVyID0gZ2wtPkF0dGFjaFNoYWRlcjsKLSAgICB2dGFibGUtPkRldGFjaFNoYWRlciA9IGdsLT5EZXRhY2hTaGFkZXI7CisvKioKKyAqIGdzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlOgorICogQHNoYWRlcjogYSAjR3N0R0xTaGFkZXIKKyAqCisgKiBSZXR1cm5zOiB0aGUgR0wgcHJvZ3JhbSBoYW5kbGUgZm9yIHRoaXMgc2hhZGVyCisgKgorICogU2luY2U6IDEuOAorICovCitpbnQKK2dzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlIChHc3RHTFNoYWRlciAqIHNoYWRlcikKK3sKKyAgaW50IHJldDsKIAotICAgIHZ0YWJsZS0+R2V0QXR0YWNoZWRTaGFkZXJzID0gZ2wtPkdldEF0dGFjaGVkU2hhZGVyczsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9TSEFERVIgKHNoYWRlciksIDApOwogCi0gICAgdnRhYmxlLT5HZXRTaGFkZXJJbmZvTG9nID0gZ2wtPkdldFNoYWRlckluZm9Mb2c7Ci0gICAgdnRhYmxlLT5HZXRTaGFkZXJpdiA9IGdsLT5HZXRTaGFkZXJpdjsKLSAgICB2dGFibGUtPkdldFByb2dyYW1JbmZvTG9nID0gZ2wtPkdldFByb2dyYW1JbmZvTG9nOwotICAgIHZ0YWJsZS0+R2V0UHJvZ3JhbWl2ID0gZ2wtPkdldFByb2dyYW1pdjsKLSAgfSBlbHNlIGlmIChnbC0+Q3JlYXRlUHJvZ3JhbU9iamVjdCkgewotICAgIHZ0YWJsZS0+Q3JlYXRlUHJvZ3JhbSA9IGdsLT5DcmVhdGVQcm9ncmFtT2JqZWN0OwotICAgIHZ0YWJsZS0+RGVsZXRlUHJvZ3JhbSA9IGdsLT5EZWxldGVPYmplY3Q7Ci0gICAgdnRhYmxlLT5Vc2VQcm9ncmFtID0gZ2wtPlVzZVByb2dyYW1PYmplY3Q7CisgIEdTVF9PQkpFQ1RfTE9DSyAoc2hhZGVyKTsKKyAgcmV0ID0gKGludCkgc2hhZGVyLT5wcml2LT5wcm9ncmFtX2hhbmRsZTsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHNoYWRlcik7CiAKLSAgICB2dGFibGUtPkNyZWF0ZVNoYWRlciA9IGdsLT5DcmVhdGVTaGFkZXJPYmplY3Q7Ci0gICAgdnRhYmxlLT5EZWxldGVTaGFkZXIgPSBnbC0+RGVsZXRlT2JqZWN0OwotICAgIHZ0YWJsZS0+QXR0YWNoU2hhZGVyID0gZ2wtPkF0dGFjaE9iamVjdDsKLSAgICB2dGFibGUtPkRldGFjaFNoYWRlciA9IGdsLT5EZXRhY2hPYmplY3Q7CisgIHJldHVybiByZXQ7Cit9CiAKLSAgICB2dGFibGUtPkdldEF0dGFjaGVkU2hhZGVycyA9IGdsLT5HZXRBdHRhY2hlZE9iamVjdHM7CisvKioKKyAqIGdzdF9nbF9zaGFkZXJfZGV0YWNoX3VubG9ja2VkOgorICogQHNoYWRlcjogYSAjR3N0R0xTaGFkZXIKKyAqIEBzdGFnZTogYSAjR3N0R0xTTFN0YWdlIHRvIGF0dGFjaAorICoKKyAqIERldGFjaGVzIEBzdGFnZSBmcm9tIEBzaGFkZXIuICBAc3RhZ2UgbXVzdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGF0dGFjaGVkCisgKiB0byBAc2hhZGVyIHdpdGggZ3N0X2dsX3NoYWRlcl9hdHRhY2goKSBvciBnc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZCgpLgorICoKKyAqIE5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9zaGFkZXJfZGV0YWNoX3VubG9ja2VkIChHc3RHTFNoYWRlciAqIHNoYWRlciwgR3N0R0xTTFN0YWdlICogc3RhZ2UpCit7CisgIGd1aW50IHN0YWdlX2hhbmRsZTsKKyAgR0xpc3QgKmVsZW07CiAKLSAgICB2dGFibGUtPkdldFNoYWRlckluZm9Mb2cgPSBnbC0+R2V0SW5mb0xvZzsKLSAgICB2dGFibGUtPkdldFNoYWRlcml2ID0gZ2wtPkdldE9iamVjdFBhcmFtZXRlcml2OwotICAgIHZ0YWJsZS0+R2V0UHJvZ3JhbUluZm9Mb2cgPSBnbC0+R2V0SW5mb0xvZzsKLSAgICB2dGFibGUtPkdldFByb2dyYW1pdiA9IGdsLT5HZXRPYmplY3RQYXJhbWV0ZXJpdjsKLSAgfSBlbHNlIHsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1NIQURFUiAoc2hhZGVyKSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTFNMX1NUQUdFIChzdGFnZSkpOworCisgIGlmICghX2dzdF9nbHNsX2Z1bmNzX2ZpbGwgKCZzaGFkZXItPnByaXYtPnZ0YWJsZSwgc2hhZGVyLT5jb250ZXh0KSkgeworICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoc2hhZGVyLCAiRmFpbGVkIHRvIHJldHJlaXZlIHJlcXVpcmVkIEdMU0wgZnVuY3Rpb25zIik7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKCFzaGFkZXItPnByaXYtPnByb2dyYW1faGFuZGxlKQorICAgIHJldHVybjsKKworICBlbGVtID0gZ19saXN0X2ZpbmQgKHNoYWRlci0+cHJpdi0+c3RhZ2VzLCBzdGFnZSk7CisgIGlmICghZWxlbSkgeworICAgIEdTVF9GSVhNRV9PQkpFQ1QgKHNoYWRlciwgIkNvdWxkIG5vdCBmaW5kIHN0YWdlICVwIGluIHNoYWRlciAlcCIsIHN0YWdlLAorICAgICAgICBzaGFkZXIpOworICAgIHJldHVybjsKKyAgfQorCisgIHN0YWdlX2hhbmRsZSA9IGdzdF9nbHNsX3N0YWdlX2dldF9oYW5kbGUgKHN0YWdlKTsKKyAgaWYgKCFzdGFnZV9oYW5kbGUpIHsKKyAgICBHU1RfRklYTUVfT0JKRUNUIChzaGFkZXIsICJTdGFnZSAlcCBkb2Vzbid0IGhhdmUgYSBHTCBoYW5kbGUiLCBzdGFnZSk7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlLT5Jc1Byb2dyYW0pCisgICAgZ19hc3NlcnQgKHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlLT5Jc1Byb2dyYW0gKHNoYWRlci0+CisgICAgICAgICAgICBwcml2LT5wcm9ncmFtX2hhbmRsZSkpOworICBpZiAoc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGUtPklzU2hhZGVyKQorICAgIGdfYXNzZXJ0IChzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZS0+SXNTaGFkZXIgKHN0YWdlX2hhbmRsZSkpOworCisgIEdTVF9MT0dfT0JKRUNUIChzaGFkZXIsICJkZXRhY2hpbmcgc2hhZGVyICVpIGZyb20gcHJvZ3JhbSAlaSIsIHN0YWdlX2hhbmRsZSwKKyAgICAgIChpbnQpIHNoYWRlci0+cHJpdi0+cHJvZ3JhbV9oYW5kbGUpOworICBzaGFkZXItPnByaXYtPnZ0YWJsZS5EZXRhY2hTaGFkZXIgKHNoYWRlci0+cHJpdi0+cHJvZ3JhbV9oYW5kbGUsCisgICAgICBzdGFnZV9oYW5kbGUpOworCisgIHNoYWRlci0+cHJpdi0+c3RhZ2VzID0gZ19saXN0X2RlbGV0ZV9saW5rIChzaGFkZXItPnByaXYtPnN0YWdlcywgZWxlbSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHN0YWdlKTsKK30KKworLyoqCisgKiBnc3RfZ2xfc2hhZGVyX2RldGFjaDoKKyAqIEBzaGFkZXI6IGEgI0dzdEdMU2hhZGVyCisgKiBAc3RhZ2U6IGEgI0dzdEdMU0xTdGFnZSB0byBhdHRhY2gKKyAqCisgKiBEZXRhY2hlcyBAc3RhZ2UgZnJvbSBAc2hhZGVyLiAgQHN0YWdlIG11c3QgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBhdHRhY2hlZAorICogdG8gQHNoYWRlciB3aXRoIGdzdF9nbF9zaGFkZXJfYXR0YWNoKCkgb3IgZ3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWQoKS4KKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfc2hhZGVyX2RldGFjaCAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIEdzdEdMU0xTdGFnZSAqIHN0YWdlKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfU0hBREVSIChzaGFkZXIpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMU0xfU1RBR0UgKHN0YWdlKSk7CisKKyAgR1NUX09CSkVDVF9MT0NLIChzaGFkZXIpOworICBnc3RfZ2xfc2hhZGVyX2RldGFjaF91bmxvY2tlZCAoc2hhZGVyLCBzdGFnZSk7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaGFkZXIpOworfQorCisvKioKKyAqIGdzdF9nbF9zaGFkZXJfYXR0YWNoX3VubG9ja2VkOgorICogQHNoYWRlcjogYSAjR3N0R0xTaGFkZXIKKyAqIEBzdGFnZTogYSAjR3N0R0xTTFN0YWdlIHRvIGF0dGFjaAorICoKKyAqIEF0dGFjaGVzIEBzdGFnZSB0byBAc2hhZGVyLiAgQHN0YWdlIG11c3QgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBjb21waWxlZAorICogd2l0aCBnc3RfZ2xzbF9zdGFnZV9jb21waWxlKCkuCisgKgorICogTm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZAorICoKKyAqIFJldHVybnM6IHdoZXRoZXIgQHN0YWdlIGNvdWxkIGJlIGF0dGFjaGVkIHRvIEBzaGFkZXIKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK2dib29sZWFuCitnc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZCAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIEdzdEdMU0xTdGFnZSAqIHN0YWdlKQoreworICBndWludCBzdGFnZV9oYW5kbGU7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9TSEFERVIgKHNoYWRlciksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTFNMX1NUQUdFIChzdGFnZSksIEZBTFNFKTsKKworICBpZiAoIV9nc3RfZ2xzbF9mdW5jc19maWxsICgmc2hhZGVyLT5wcml2LT52dGFibGUsIHNoYWRlci0+Y29udGV4dCkpIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNoYWRlciwgIkZhaWxlZCB0byByZXRyZWl2ZSByZXF1aXJlZCBHTFNMIGZ1bmN0aW9ucyIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmICghX2Vuc3VyZV9wcm9ncmFtIChzaGFkZXIpKQorICAgIHJldHVybiBGQUxTRTsKKworICAvKiBhbHJlYWR5IGF0dGFjaGVkPyAqLworICBpZiAoZ19saXN0X2ZpbmQgKHNoYWRlci0+cHJpdi0+c3RhZ2VzLCBzdGFnZSkpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgc3RhZ2VfaGFuZGxlID0gZ3N0X2dsc2xfc3RhZ2VfZ2V0X2hhbmRsZSAoc3RhZ2UpOworICBpZiAoIXN0YWdlX2hhbmRsZSkgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmIChzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZS0+SXNQcm9ncmFtKQorICAgIGdfYXNzZXJ0IChzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZS0+SXNQcm9ncmFtIChzaGFkZXItPgorICAgICAgICAgICAgcHJpdi0+cHJvZ3JhbV9oYW5kbGUpKTsKKyAgaWYgKHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlLT5Jc1NoYWRlcikKKyAgICBnX2Fzc2VydCAoc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGUtPklzU2hhZGVyIChzdGFnZV9oYW5kbGUpKTsKKworICBzaGFkZXItPnByaXYtPnN0YWdlcyA9CisgICAgICBnX2xpc3RfcHJlcGVuZCAoc2hhZGVyLT5wcml2LT5zdGFnZXMsIGdzdF9vYmplY3RfcmVmX3NpbmsgKHN0YWdlKSk7CisgIEdTVF9MT0dfT0JKRUNUIChzaGFkZXIsICJhdHRhY2hpbmcgc2hhZGVyICVpIHRvIHByb2dyYW0gJWkiLCBzdGFnZV9oYW5kbGUsCisgICAgICAoaW50KSBzaGFkZXItPnByaXYtPnByb2dyYW1faGFuZGxlKTsKKyAgc2hhZGVyLT5wcml2LT52dGFibGUuQXR0YWNoU2hhZGVyIChzaGFkZXItPnByaXYtPnByb2dyYW1faGFuZGxlLAorICAgICAgc3RhZ2VfaGFuZGxlKTsKKworICByZXR1cm4gVFJVRTsKK30KKworLyoqCisgKiBnc3RfZ2xfc2hhZGVyX2F0dGFjaDoKKyAqIEBzaGFkZXI6IGEgI0dzdEdMU2hhZGVyCisgKiBAc3RhZ2U6IGEgI0dzdEdMU0xTdGFnZSB0byBhdHRhY2gKKyAqCisgKiBBdHRhY2hlcyBAc3RhZ2UgdG8gQHNoYWRlci4gIEBzdGFnZSBtdXN0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGlsZWQKKyAqIHdpdGggZ3N0X2dsc2xfc3RhZ2VfY29tcGlsZSgpLgorICoKKyAqIE5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQKKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIEBzdGFnZSBjb3VsZCBiZSBhdHRhY2hlZCB0byBAc2hhZGVyCisgKgorICogU2luY2U6IDEuOAorICovCitnYm9vbGVhbgorZ3N0X2dsX3NoYWRlcl9hdHRhY2ggKEdzdEdMU2hhZGVyICogc2hhZGVyLCBHc3RHTFNMU3RhZ2UgKiBzdGFnZSkKK3sKKyAgZ2Jvb2xlYW4gcmV0OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfU0hBREVSIChzaGFkZXIpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xTTF9TVEFHRSAoc3RhZ2UpLCBGQUxTRSk7CisKKyAgR1NUX09CSkVDVF9MT0NLIChzaGFkZXIpOworICByZXQgPSBnc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZCAoc2hhZGVyLCBzdGFnZSk7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaGFkZXIpOworCisgIHJldHVybiByZXQ7Cit9CisKKy8qKgorICogZ3N0X2dsX3NoYWRlcl9jb21waWxlX2F0dGFjaF9zdGFnZToKKyAqIEBzaGFkZXI6IGEgI0dzdEdMU2hhZGVyCisgKiBAc3RhZ2U6IGEgI0dzdEdMU0xTdGFnZSB0byBhdHRhY2gKKyAqIEBlcnJvcjogYSAjR0Vycm9yCisgKgorICogQ29tcGlsZXMgQHN0YWdlIGFuZCBhdHRhY2hlcyBpdCB0byBAc2hhZGVyLgorICoKKyAqIE5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQKKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIEBzdGFnZSBjb3VsZCBiZSBjb21waWxlZCBhbmQgYXR0YWNoZWQgdG8gQHNoYWRlcgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworZ2Jvb2xlYW4KK2dzdF9nbF9zaGFkZXJfY29tcGlsZV9hdHRhY2hfc3RhZ2UgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBHc3RHTFNMU3RhZ2UgKiBzdGFnZSwKKyAgICBHRXJyb3IgKiogZXJyb3IpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xTTF9TVEFHRSAoc3RhZ2UpLCBGQUxTRSk7CisKKyAgaWYgKCFnc3RfZ2xzbF9zdGFnZV9jb21waWxlIChzdGFnZSwgZXJyb3IpKSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKCFnc3RfZ2xfc2hhZGVyX2F0dGFjaCAoc2hhZGVyLCBzdGFnZSkpIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTFNMX0VSUk9SLCBHU1RfR0xTTF9FUlJPUl9DT01QSUxFLAorICAgICAgICAiRmFpbGVkIHRvIGF0dGFjaCBzdGFnZSB0byBzaGFkZXIiKTsKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KIAogICByZXR1cm4gVFJVRTsKIH0KIAotR3N0R0xTaGFkZXIgKgotZ3N0X2dsX3NoYWRlcl9uZXcgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCi17Ci0gIEdzdEdMU2hhZGVyICpzaGFkZXI7Ci0KLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUIChjb250ZXh0KSwgTlVMTCk7Ci0KLSAgc2hhZGVyID0gZ19vYmplY3RfbmV3IChHU1RfR0xfVFlQRV9TSEFERVIsIE5VTEwpOwotICBzaGFkZXItPmNvbnRleHQgPSBnc3Rfb2JqZWN0X3JlZiAoY29udGV4dCk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoc2hhZGVyLCAiQ3JlYXRlZCBuZXcgR0xTaGFkZXIgZm9yIGNvbnRleHQgJSIgR1NUX1BUUl9GT1JNQVQsCi0gICAgICBjb250ZXh0KTsKLQotICByZXR1cm4gc2hhZGVyOwotfQotCisvKioKKyAqIGdzdF9nbF9zaGFkZXJfbGluazoKKyAqIEBzaGFkZXI6IGEgI0dzdEdMU2hhZGVyCisgKiBAZXJyb3I6IGEgI0dFcnJvcgorICoKKyAqIExpbmtzIHRoZSBjdXJyZW50IGxpc3Qgb2YgI0dzdEdMU0xTdGFnZSdzIGluIEBzaGFkZXIuCisgKgorICogTm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZAorICoKKyAqIFJldHVybnM6IHdoZXRoZXIgQHNoYWRlciBjb3VsZCBiZSBsaW5rZWQgdG9nZXRoZXIuCisgKgorICogU2luY2U6IDEuOAorICovCiBnYm9vbGVhbgotZ3N0X2dsX3NoYWRlcl9pc19jb21waWxlZCAoR3N0R0xTaGFkZXIgKiBzaGFkZXIpCi17Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfU0hBREVSIChzaGFkZXIpLCBGQUxTRSk7Ci0KLSAgcmV0dXJuIHNoYWRlci0+cHJpdi0+Y29tcGlsZWQ7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotX3NoYWRlcl9zdHJpbmdfaGFzX3ZlcnNpb24gKGNvbnN0IGdjaGFyICogc3RyKQotewotICBnYm9vbGVhbiBzbF9jb21tZW50ID0gRkFMU0U7Ci0gIGdib29sZWFuIG1sX2NvbW1lbnQgPSBGQUxTRTsKLSAgZ2Jvb2xlYW4gaGFzX3ZlcnNpb24gPSBGQUxTRTsKLSAgZ2ludCBpID0gMDsKLQotICAvKiBzZWFyY2ggZm9yICN2ZXJzaW9uIHRvIGFsbG93IGZvciBwcmVjZWVkaW5nIGNvbW1lbnRzIGFzIGFsbG93ZWQgYnkgdGhlCi0gICAqIEdMU0wgc3BlY2lmaWNhdGlvbiAqLwotICB3aGlsZSAoc3RyICYmIHN0cltpXSAhPSAnXDAnICYmIGkgPCAxMDI0KSB7Ci0gICAgaWYgKHNsX2NvbW1lbnQpIHsKLSAgICAgIGlmIChzdHJbaV0gIT0gJ1xuJykKLSAgICAgICAgc2xfY29tbWVudCA9IEZBTFNFOwotICAgICAgaSsrOwotICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAgaWYgKG1sX2NvbW1lbnQpIHsKLSAgICAgIGlmIChnX3N0cnN0cl9sZW4gKCZzdHJbaV0sIDIsICIqLyIpKSB7Ci0gICAgICAgIG1sX2NvbW1lbnQgPSBGQUxTRTsKLSAgICAgICAgaSArPSAyOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgaSsrOwotICAgICAgfQotICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAgaWYgKGdfc3Ryc3RyX2xlbiAoJnN0cltpXSwgMiwgIi8vIikpIHsKLSAgICAgIHNsX2NvbW1lbnQgPSBUUlVFOwotICAgICAgaSArPSAyOwotICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAgaWYgKGdfc3Ryc3RyX2xlbiAoJnN0cltpXSwgMiwgIi8qIikpIHsKLSAgICAgIG1sX2NvbW1lbnQgPSBUUlVFOwotICAgICAgaSArPSAyOwotICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAgaWYgKGdfc3Ryc3RyX2xlbiAoJnN0cltpXSwgMSwgIiMiKSkgewotICAgICAgaWYgKGdfc3Ryc3RyX2xlbiAoJnN0cltpXSwgOCwgIiN2ZXJzaW9uIikpCi0gICAgICAgIGhhc192ZXJzaW9uID0gVFJVRTsKLSAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGkrKzsKLSAgfQotCi0gIHJldHVybiBoYXNfdmVyc2lvbjsKLX0KLQotc3RhdGljIHZvaWQKLV9tYXliZV9wcmVwZW5kX3ZlcnNpb24gKEdzdEdMU2hhZGVyICogc2hhZGVyLCBjb25zdCBnY2hhciAqIHNoYWRlcl9zdHIsCi0gICAgZ2ludCAqIG5fdmVydGV4X3NvdXJjZXMsIGNvbnN0IGdjaGFyICoqKiB2ZXJ0ZXhfc291cmNlcykKLXsKLSAgZ2ludCBuID0gMTsKLQotICAvKiBGSVhNRTogdGhpcyBhbGwgYW4gZWR1Y2F0ZWQgZ3Vlc3MgKi8KLSAgaWYgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKHNoYWRlci0+Y29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wzLCAzLAotICAgICAgICAgIDApCi0gICAgICAmJiAoc2hhZGVyLT5wcml2LT5nbF9hcGkgJiBHU1RfR0xfQVBJX0dMRVMyKSAhPSAwCi0gICAgICAmJiAhX3NoYWRlcl9zdHJpbmdfaGFzX3ZlcnNpb24gKHNoYWRlcl9zdHIpKQotICAgIG4gPSAyOwotCi0gICp2ZXJ0ZXhfc291cmNlcyA9IGdfbWFsbG9jMCAobiAqIHNpemVvZiAoZ2NoYXIgKikpOwotCi0gIGlmIChuID4gMSkKLSAgICAqdmVydGV4X3NvdXJjZXNbMF0gPSBlczJfdmVyc2lvbl9oZWFkZXI7Ci0KLSAgKCp2ZXJ0ZXhfc291cmNlcylbbiAtIDFdID0gc2hhZGVyX3N0cjsKLSAgKm5fdmVydGV4X3NvdXJjZXMgPSBuOwotfQotCi1nYm9vbGVhbgotZ3N0X2dsX3NoYWRlcl9jb21waWxlIChHc3RHTFNoYWRlciAqIHNoYWRlciwgR0Vycm9yICoqIGVycm9yKQorZ3N0X2dsX3NoYWRlcl9saW5rIChHc3RHTFNoYWRlciAqIHNoYWRlciwgR0Vycm9yICoqIGVycm9yKQogewogICBHc3RHTFNoYWRlclByaXZhdGUgKnByaXY7Ci0gIEdzdEdMRnVuY3MgKmdsOwotCisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsOwogICBnY2hhciBpbmZvX2J1ZmZlclsyMDQ4XTsKLSAgZ2ludCBsZW4gPSAwOwogICBHTGludCBzdGF0dXMgPSBHTF9GQUxTRTsKKyAgZ2ludCBsZW4gPSAwOworICBnYm9vbGVhbiByZXQ7CisgIEdMaXN0ICplbGVtOwogCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfU0hBREVSIChzaGFkZXIpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfU0hBREVSIChzaGFkZXIpLCBGQUxTRSk7CisKKyAgR1NUX09CSkVDVF9MT0NLIChzaGFkZXIpOwogCiAgIHByaXYgPSBzaGFkZXItPnByaXY7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgaWYgKHByaXYtPmNvbXBpbGVkKQotICAgIHJldHVybiBwcml2LT5jb21waWxlZDsKKyAgaWYgKHByaXYtPmxpbmtlZCkgeworICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaGFkZXIpOworICAgIHJldHVybiBUUlVFOworICB9CiAKLSAgaWYgKCFfZmlsbF92dGFibGUgKHNoYWRlciwgc2hhZGVyLT5jb250ZXh0KSkKKyAgaWYgKCFfZ3N0X2dsc2xfZnVuY3NfZmlsbCAoJnNoYWRlci0+cHJpdi0+dnRhYmxlLCBzaGFkZXItPmNvbnRleHQpKSB7CisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xTTF9FUlJPUiwgR1NUX0dMU0xfRVJST1JfUFJPR1JBTSwKKyAgICAgICAgIkZhaWxlZCB0byByZXRyZWl2ZSByZXF1aXJlZCBHTFNMIGZ1bmN0aW9ucyIpOworICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaGFkZXIpOwogICAgIHJldHVybiBGQUxTRTsKKyAgfQogCi0gIHNoYWRlci0+cHJpdi0+cHJvZ3JhbV9oYW5kbGUgPSBzaGFkZXItPnByaXYtPnZ0YWJsZS5DcmVhdGVQcm9ncmFtICgpOworICBpZiAoIV9lbnN1cmVfcHJvZ3JhbSAoc2hhZGVyKSkgeworICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMU0xfRVJST1IsIEdTVF9HTFNMX0VSUk9SX1BST0dSQU0sCisgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIEdMIHByb2dyYW0gb2JqZWN0Iik7CisgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNoYWRlcik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CiAKICAgR1NUX1RSQUNFICgic2hhZGVyIGNyZWF0ZWQgJXUiLCBzaGFkZXItPnByaXYtPnByb2dyYW1faGFuZGxlKTsKIAotICBnX3JldHVybl92YWxfaWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIEZBTFNFKTsKKyAgZm9yIChlbGVtID0gc2hhZGVyLT5wcml2LT5zdGFnZXM7IGVsZW07IGVsZW0gPSBlbGVtLT5uZXh0KSB7CisgICAgR3N0R0xTTFN0YWdlICpzdGFnZSA9IGVsZW0tPmRhdGE7CiAKLSAgaWYgKHByaXYtPnZlcnRleF9zcmMpIHsKLSAgICBnaW50IG5fdmVydGV4X3NvdXJjZXM7Ci0gICAgY29uc3QgZ2NoYXIgKip2ZXJ0ZXhfc291cmNlczsKLQotICAgIF9tYXliZV9wcmVwZW5kX3ZlcnNpb24gKHNoYWRlciwgcHJpdi0+dmVydGV4X3NyYywgJm5fdmVydGV4X3NvdXJjZXMsCi0gICAgICAgICZ2ZXJ0ZXhfc291cmNlcyk7Ci0KLSAgICAvKiBjcmVhdGUgdmVydGV4IG9iamVjdCAqLwotICAgIHByaXYtPnZlcnRleF9oYW5kbGUgPSBwcml2LT52dGFibGUuQ3JlYXRlU2hhZGVyIChHTF9WRVJURVhfU0hBREVSKTsKLSAgICBnbC0+U2hhZGVyU291cmNlIChwcml2LT52ZXJ0ZXhfaGFuZGxlLCBuX3ZlcnRleF9zb3VyY2VzLCB2ZXJ0ZXhfc291cmNlcywKLSAgICAgICAgTlVMTCk7Ci0gICAgZ19mcmVlICh2ZXJ0ZXhfc291cmNlcyk7Ci0KLSAgICAvKiBjb21waWxlICovCi0gICAgZ2wtPkNvbXBpbGVTaGFkZXIgKHByaXYtPnZlcnRleF9oYW5kbGUpOwotICAgIC8qIGNoZWNrIGV2ZXJ5dGhpbmcgaXMgb2sgKi8KLSAgICBzdGF0dXMgPSBHTF9GQUxTRTsKLSAgICBnbC0+R2V0U2hhZGVyaXYgKHByaXYtPnZlcnRleF9oYW5kbGUsIEdMX0NPTVBJTEVfU1RBVFVTLCAmc3RhdHVzKTsKLQotICAgIHByaXYtPnZ0YWJsZS5HZXRTaGFkZXJJbmZvTG9nIChwcml2LT52ZXJ0ZXhfaGFuZGxlLAotICAgICAgICBzaXplb2YgKGluZm9fYnVmZmVyKSAtIDEsICZsZW4sIGluZm9fYnVmZmVyKTsKLSAgICBpbmZvX2J1ZmZlcltsZW5dID0gJ1wwJzsKLQotICAgIGlmIChzdGF0dXMgIT0gR0xfVFJVRSkgewotICAgICAgR1NUX0VSUk9SICgiVmVydGV4IFNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQ6XG4lcyIsIGluZm9fYnVmZmVyKTsKLQotICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xfU0hBREVSX0VSUk9SLAotICAgICAgICAgIEdTVF9HTF9TSEFERVJfRVJST1JfQ09NUElMRSwKLSAgICAgICAgICAiVmVydGV4IFNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQ6XG4lcyIsIGluZm9fYnVmZmVyKTsKLQotICAgICAgcHJpdi0+dnRhYmxlLkRlbGV0ZVNoYWRlciAocHJpdi0+dmVydGV4X2hhbmRsZSk7Ci0gICAgICBwcml2LT5jb21waWxlZCA9IEZBTFNFOwotICAgICAgcmV0dXJuIHByaXYtPmNvbXBpbGVkOwotICAgIH0gZWxzZSBpZiAobGVuID4gMSkgewotICAgICAgR1NUX0ZJWE1FICgidmVydGV4IHNoYWRlciBpbmZvIGxvZzpcbiVzXG4iLCBpbmZvX2J1ZmZlcik7CisgICAgaWYgKCFnc3RfZ2xzbF9zdGFnZV9jb21waWxlIChzdGFnZSwgZXJyb3IpKSB7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc2hhZGVyKTsKKyAgICAgIHJldHVybiBGQUxTRTsKICAgICB9Ci0gICAgcHJpdi0+dnRhYmxlLkF0dGFjaFNoYWRlciAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIHByaXYtPnZlcnRleF9oYW5kbGUpOwogCi0gICAgR1NUX0xPRyAoInZlcnRleCBzaGFkZXIgYXR0YWNoZWQgJXUiLCBwcml2LT52ZXJ0ZXhfaGFuZGxlKTsKLSAgfQotCi0gIGlmIChwcml2LT5mcmFnbWVudF9zcmMpIHsKLSAgICBnaW50IG5fZnJhZ21lbnRfc291cmNlczsKLSAgICBjb25zdCBnY2hhciAqKmZyYWdtZW50X3NvdXJjZXM7Ci0KLSAgICBfbWF5YmVfcHJlcGVuZF92ZXJzaW9uIChzaGFkZXIsIHByaXYtPmZyYWdtZW50X3NyYywgJm5fZnJhZ21lbnRfc291cmNlcywKLSAgICAgICAgJmZyYWdtZW50X3NvdXJjZXMpOwotCi0gICAgLyogY3JlYXRlIGZyYWdtZW50IG9iamVjdCAqLwotICAgIHByaXYtPmZyYWdtZW50X2hhbmRsZSA9IHByaXYtPnZ0YWJsZS5DcmVhdGVTaGFkZXIgKEdMX0ZSQUdNRU5UX1NIQURFUik7Ci0gICAgZ2wtPlNoYWRlclNvdXJjZSAocHJpdi0+ZnJhZ21lbnRfaGFuZGxlLCBuX2ZyYWdtZW50X3NvdXJjZXMsCi0gICAgICAgIGZyYWdtZW50X3NvdXJjZXMsIE5VTEwpOwotICAgIGdfZnJlZSAoZnJhZ21lbnRfc291cmNlcyk7Ci0gICAgLyogY29tcGlsZSAqLwotICAgIGdsLT5Db21waWxlU2hhZGVyIChwcml2LT5mcmFnbWVudF9oYW5kbGUpOwotICAgIC8qIGNoZWNrIGV2ZXJ5dGhpbmcgaXMgb2sgKi8KLSAgICBzdGF0dXMgPSBHTF9GQUxTRTsKLSAgICBwcml2LT52dGFibGUuR2V0U2hhZGVyaXYgKHByaXYtPmZyYWdtZW50X2hhbmRsZSwKLSAgICAgICAgR0xfQ09NUElMRV9TVEFUVVMsICZzdGF0dXMpOwotCi0gICAgcHJpdi0+dnRhYmxlLkdldFNoYWRlckluZm9Mb2cgKHByaXYtPmZyYWdtZW50X2hhbmRsZSwKLSAgICAgICAgc2l6ZW9mIChpbmZvX2J1ZmZlcikgLSAxLCAmbGVuLCBpbmZvX2J1ZmZlcik7Ci0gICAgaW5mb19idWZmZXJbbGVuXSA9ICdcMCc7Ci0gICAgaWYgKHN0YXR1cyAhPSBHTF9UUlVFKSB7Ci0gICAgICBHU1RfRVJST1IgKCJGcmFnbWVudCBTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkOlxuJXMiLCBpbmZvX2J1ZmZlcik7Ci0KLSAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMX1NIQURFUl9FUlJPUiwKLSAgICAgICAgICBHU1RfR0xfU0hBREVSX0VSUk9SX0NPTVBJTEUsCi0gICAgICAgICAgIkZyYWdtZW50IFNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQ6XG4lcyIsIGluZm9fYnVmZmVyKTsKLQotICAgICAgcHJpdi0+dnRhYmxlLkRlbGV0ZVNoYWRlciAocHJpdi0+ZnJhZ21lbnRfaGFuZGxlKTsKLSAgICAgIHByaXYtPmNvbXBpbGVkID0gRkFMU0U7Ci0gICAgICByZXR1cm4gcHJpdi0+Y29tcGlsZWQ7Ci0gICAgfSBlbHNlIGlmIChsZW4gPiAxKSB7Ci0gICAgICBHU1RfRklYTUUgKCJ2ZXJ0ZXggc2hhZGVyIGluZm8gbG9nOlxuJXNcbiIsIGluZm9fYnVmZmVyKTsKKyAgICBpZiAoIWdzdF9nbF9zaGFkZXJfYXR0YWNoX3VubG9ja2VkIChzaGFkZXIsIHN0YWdlKSkgeworICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xTTF9FUlJPUiwgR1NUX0dMU0xfRVJST1JfQ09NUElMRSwKKyAgICAgICAgICAiRmFpbGVkIHRvIGF0dGFjaCBzaGFkZXIgJSIgR1NUX1BUUl9GT1JNQVQgInRvIHByb2dyYW0gJSIKKyAgICAgICAgICBHU1RfUFRSX0ZPUk1BVCwgc3RhZ2UsIHNoYWRlcik7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc2hhZGVyKTsKKyAgICAgIHJldHVybiBGQUxTRTsKICAgICB9Ci0gICAgcHJpdi0+dnRhYmxlLkF0dGFjaFNoYWRlciAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIHByaXYtPmZyYWdtZW50X2hhbmRsZSk7Ci0KLSAgICBHU1RfTE9HICgiZnJhZ21lbnQgc2hhZGVyIGF0dGFjaGVkICV1IiwgcHJpdi0+ZnJhZ21lbnRfaGFuZGxlKTsKICAgfQogCiAgIC8qIGlmIG5vdGhpbmcgZmFpbGVkIGxpbmsgc2hhZGVycyAqLwpAQCAtNTk5LDU5ICs2OTQsOTQgQEAKICAgaWYgKHN0YXR1cyAhPSBHTF9UUlVFKSB7CiAgICAgR1NUX0VSUk9SICgiU2hhZGVyIGxpbmtpbmcgZmFpbGVkOlxuJXMiLCBpbmZvX2J1ZmZlcik7CiAKLSAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTF9TSEFERVJfRVJST1IsCi0gICAgICAgIEdTVF9HTF9TSEFERVJfRVJST1JfTElOSywgIlNoYWRlciBMaW5raW5nIGZhaWxlZDpcbiVzIiwgaW5mb19idWZmZXIpOwotICAgIHByaXYtPmNvbXBpbGVkID0gRkFMU0U7Ci0gICAgcmV0dXJuIHByaXYtPmNvbXBpbGVkOworICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMU0xfRVJST1IsIEdTVF9HTFNMX0VSUk9SX0xJTkssCisgICAgICAgICJTaGFkZXIgTGlua2luZyBmYWlsZWQ6XG4lcyIsIGluZm9fYnVmZmVyKTsKKyAgICByZXQgPSBwcml2LT5saW5rZWQgPSBGQUxTRTsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc2hhZGVyKTsKKyAgICByZXR1cm4gcmV0OwogICB9IGVsc2UgaWYgKGxlbiA+IDEpIHsKICAgICBHU1RfRklYTUUgKCJzaGFkZXIgbGluayBsb2c6XG4lc1xuIiwgaW5mb19idWZmZXIpOwogICB9Ci0gIC8qIHN1Y2Nlc3MhICovCi0gIHByaXYtPmNvbXBpbGVkID0gVFJVRTsKLSAgZ19vYmplY3Rfbm90aWZ5IChHX09CSkVDVCAoc2hhZGVyKSwgImNvbXBpbGVkIik7CiAKLSAgcmV0dXJuIHByaXYtPmNvbXBpbGVkOworICByZXQgPSBwcml2LT5saW5rZWQgPSBUUlVFOworICBHU1RfT0JKRUNUX1VOTE9DSyAoc2hhZGVyKTsKKworICBnX29iamVjdF9ub3RpZnkgKEdfT0JKRUNUIChzaGFkZXIpLCAibGlua2VkIik7CisKKyAgcmV0dXJuIHJldDsKIH0KIAorLyoqCisgKiBnc3RfZ2xfc2hhZGVyX3JlbGVhc2VfdW5sb2NrZWQ6CisgKiBAc2hhZGVyOiBhICNHc3RHTFNoYWRlcgorICoKKyAqIFJlbGVhc2VzIHRoZSBzaGFkZXIgYW5kIHN0YWdlcy4KKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkCisgKgorICogU2luY2U6IDEuOAorICovCiB2b2lkCi1nc3RfZ2xfc2hhZGVyX3JlbGVhc2UgKEdzdEdMU2hhZGVyICogc2hhZGVyKQorZ3N0X2dsX3NoYWRlcl9yZWxlYXNlX3VubG9ja2VkIChHc3RHTFNoYWRlciAqIHNoYWRlcikKIHsKICAgR3N0R0xTaGFkZXJQcml2YXRlICpwcml2OworICBHTGlzdCAqZWxlbTsKIAotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfU0hBREVSIChzaGFkZXIpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1NIQURFUiAoc2hhZGVyKSk7CiAKICAgcHJpdiA9IHNoYWRlci0+cHJpdjsKIAotICBpZiAoIXByaXYtPmNvbXBpbGVkIHx8ICFwcml2LT5wcm9ncmFtX2hhbmRsZSkKLSAgICByZXR1cm47CisgIGZvciAoZWxlbSA9IHNoYWRlci0+cHJpdi0+c3RhZ2VzOyBlbGVtOykgeworICAgIEdzdEdMU0xTdGFnZSAqc3RhZ2UgPSBlbGVtLT5kYXRhOworICAgIEdMaXN0ICpuZXh0ID0gZWxlbS0+bmV4dDsKIAotICBpZiAocHJpdi0+dmVydGV4X2hhbmRsZSkgeyAgICAvKiBub3QgbmVlZGVkIGJ1dCBudmlkaWEgZG9lc24ndCBjYXJlIHRvIHJlc3BlY3QgdGhlIHNwZWMgKi8KLSAgICBHU1RfVFJBQ0UgKCJmaW5hbGl6aW5nIHZlcnRleCBzaGFkZXIgJXUiLCBwcml2LT52ZXJ0ZXhfaGFuZGxlKTsKLQotICAgIHByaXYtPnZ0YWJsZS5EZWxldGVTaGFkZXIgKHByaXYtPnZlcnRleF9oYW5kbGUpOworICAgIGdzdF9nbF9zaGFkZXJfZGV0YWNoX3VubG9ja2VkIChzaGFkZXIsIHN0YWdlKTsKKyAgICBlbGVtID0gbmV4dDsKICAgfQogCi0gIGlmIChwcml2LT5mcmFnbWVudF9oYW5kbGUpIHsKLSAgICBHU1RfVFJBQ0UgKCJmaW5hbGl6aW5nIGZyYWdtZW50IHNoYWRlciAldSIsIHByaXYtPmZyYWdtZW50X2hhbmRsZSk7CisgIGdfbGlzdF9mcmVlX2Z1bGwgKHNoYWRlci0+cHJpdi0+c3RhZ2VzLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYpOworICBzaGFkZXItPnByaXYtPnN0YWdlcyA9IE5VTEw7CiAKLSAgICBwcml2LT52dGFibGUuRGVsZXRlU2hhZGVyIChwcml2LT5mcmFnbWVudF9oYW5kbGUpOwotICB9CisgIHByaXYtPmxpbmtlZCA9IEZBTFNFOworICBnX2hhc2hfdGFibGVfcmVtb3ZlX2FsbCAocHJpdi0+dW5pZm9ybV9sb2NhdGlvbnMpOwogCi0gIGlmIChwcml2LT52ZXJ0ZXhfaGFuZGxlKQotICAgIHByaXYtPnZ0YWJsZS5EZXRhY2hTaGFkZXIgKHByaXYtPnByb2dyYW1faGFuZGxlLCBwcml2LT52ZXJ0ZXhfaGFuZGxlKTsKLSAgaWYgKHByaXYtPmZyYWdtZW50X2hhbmRsZSkKLSAgICBwcml2LT52dGFibGUuRGV0YWNoU2hhZGVyIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgcHJpdi0+ZnJhZ21lbnRfaGFuZGxlKTsKLQotICBwcml2LT5jb21waWxlZCA9IEZBTFNFOwotICBnX29iamVjdF9ub3RpZnkgKEdfT0JKRUNUIChzaGFkZXIpLCAiY29tcGlsZWQiKTsKKyAgZ19vYmplY3Rfbm90aWZ5IChHX09CSkVDVCAoc2hhZGVyKSwgImxpbmtlZCIpOwogfQogCisvKioKKyAqIGdzdF9nbF9zaGFkZXJfcmVsZWFzZToKKyAqIEBzaGFkZXI6IGEgI0dzdEdMU2hhZGVyCisgKgorICogUmVsZWFzZXMgdGhlIHNoYWRlciBhbmQgc3RhZ2VzLgorICoKKyAqIE5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9zaGFkZXJfcmVsZWFzZSAoR3N0R0xTaGFkZXIgKiBzaGFkZXIpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9TSEFERVIgKHNoYWRlcikpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoc2hhZGVyKTsKKyAgZ3N0X2dsX3NoYWRlcl9yZWxlYXNlX3VubG9ja2VkIChzaGFkZXIpOworICBHU1RfT0JKRUNUX1VOTE9DSyAoc2hhZGVyKTsKK30KKworLyoqCisgKiBnc3RfZ2xfc2hhZGVyX3VzZToKKyAqIEBzaGFkZXI6IGEgI0dzdEdMU2hhZGVyCisgKgorICogTWFyaydzIEBzaGFkZXIgYXMgYmVpbmcgdXNlZCBmb3IgdGhlIG5leHQgR0wgZHJhdyBjb21tYW5kLgorICoKKyAqIE5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQgYW5kIEBzaGFkZXIgbXVzdCBoYXZlIGJlZW4gbGlua2VkLgorICovCiB2b2lkCiBnc3RfZ2xfc2hhZGVyX3VzZSAoR3N0R0xTaGFkZXIgKiBzaGFkZXIpCiB7CiAgIEdzdEdMU2hhZGVyUHJpdmF0ZSAqcHJpdjsKIAotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfU0hBREVSIChzaGFkZXIpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1NIQURFUiAoc2hhZGVyKSk7CiAKICAgcHJpdiA9IHNoYWRlci0+cHJpdjsKIApAQCAtNjYyLDEyICs3OTIsMjAgQEAKICAgcmV0dXJuOwogfQogCisvKioKKyAqIGdzdF9nbF9jb250ZXh0X2NsZWFyX3NoYWRlcjoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqCisgKiBDbGVhcidzIHRoZSBjdXJyZW50bHkgc2V0IHNoYWRlciBmcm9tIHRoZSBHTCBzdGF0ZSBtYWNoaW5lLgorICoKKyAqIE5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQuCisgKi8KIHZvaWQKIGdzdF9nbF9jb250ZXh0X2NsZWFyX3NoYWRlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCkKIHsKICAgR3N0R0xGdW5jcyAqZ2w7CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpKTsKIAogICBnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKIApAQCAtNjc3LDEwNCArODE1LDYgQEAKICAgICBnbC0+VXNlUHJvZ3JhbU9iamVjdCAoMCk7CiB9CiAKLWdib29sZWFuCi1nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYW5kX2NoZWNrIChHc3RHTFNoYWRlciAqIHNoYWRlciwKLSAgICBjb25zdCBnY2hhciAqIHNvdXJjZSwgR3N0R0xTaGFkZXJTb3VyY2VUeXBlIHR5cGUpCi17Ci0gIGdib29sZWFuIGlzX2NvbXBpbGVkID0gRkFMU0U7Ci0KLSAgZ19vYmplY3RfZ2V0IChHX09CSkVDVCAoc2hhZGVyKSwgImNvbXBpbGVkIiwgJmlzX2NvbXBpbGVkLCBOVUxMKTsKLQotICBpZiAoIWlzX2NvbXBpbGVkKSB7Ci0gICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0KLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgIGNhc2UgR1NUX0dMX1NIQURFUl9GUkFHTUVOVF9TT1VSQ0U6Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X2ZyYWdtZW50X3NvdXJjZSAoc2hhZGVyLCBzb3VyY2UpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR1NUX0dMX1NIQURFUl9WRVJURVhfU09VUkNFOgotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF92ZXJ0ZXhfc291cmNlIChzaGFkZXIsIHNvdXJjZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGdzdF9nbF9zaGFkZXJfY29tcGlsZSAoc2hhZGVyLCAmZXJyb3IpOwotICAgIGlmIChlcnJvcikgewotICAgICAgZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yIChzaGFkZXItPmNvbnRleHQsICIlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotICAgICAgZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVyIChzaGFkZXItPmNvbnRleHQpOwotCi0gICAgICByZXR1cm4gRkFMU0U7Ci0gICAgfQotICB9Ci0gIHJldHVybiBUUlVFOwotfQotCi1nYm9vbGVhbgotZ3N0X2dsX3NoYWRlcl9jb21waWxlX2FsbF93aXRoX2F0dHJpYnNfYW5kX2NoZWNrIChHc3RHTFNoYWRlciAqIHNoYWRlciwKLSAgICBjb25zdCBnY2hhciAqIHZfc3JjLCBjb25zdCBnY2hhciAqIGZfc3JjLCBjb25zdCBnaW50IG5fYXR0cmlicywKLSAgICBjb25zdCBnY2hhciAqIGF0dHJpYl9uYW1lc1tdLCBHTGludCBhdHRyaWJfbG9jc1tdKQotewotICBnaW50IGkgPSAwOwotICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLQotICBnc3RfZ2xfc2hhZGVyX3NldF92ZXJ0ZXhfc291cmNlIChzaGFkZXIsIHZfc3JjKTsKLSAgZ3N0X2dsX3NoYWRlcl9zZXRfZnJhZ21lbnRfc291cmNlIChzaGFkZXIsIGZfc3JjKTsKLQotICBnc3RfZ2xfc2hhZGVyX2NvbXBpbGUgKHNoYWRlciwgJmVycm9yKTsKLSAgaWYgKGVycm9yKSB7Ci0gICAgZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yIChzaGFkZXItPmNvbnRleHQsICIlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLSAgICBnc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXIgKHNoYWRlci0+Y29udGV4dCk7Ci0KLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBmb3IgKGkgPSAwOyBpIDwgbl9hdHRyaWJzOyBpKyspCi0gICAgYXR0cmliX2xvY3NbaV0gPQotICAgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgYXR0cmliX25hbWVzW2ldKTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotZ2Jvb2xlYW4KLWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfZl9hbmRfY2hlY2sgKEdzdEdMU2hhZGVyICogc2hhZGVyLAotICAgIGNvbnN0IGdjaGFyICogdl9zcmMsIGNvbnN0IGdpbnQgbl9hdHRyaWJzLCBjb25zdCBnY2hhciAqIGF0dHJpYl9uYW1lc1tdLAotICAgIEdMaW50IGF0dHJpYl9sb2NzW10pCi17Ci0gIHJldHVybiBnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYWxsX3dpdGhfYXR0cmlic19hbmRfY2hlY2sgKHNoYWRlciwgdl9zcmMsCi0gICAgICBzaW1wbGVfZnJhZ21lbnRfc2hhZGVyX3N0cl9nbGVzMiwgbl9hdHRyaWJzLCBhdHRyaWJfbmFtZXMsIGF0dHJpYl9sb2NzKTsKLX0KLQotZ2Jvb2xlYW4KLWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdl9hbmRfY2hlY2sgKEdzdEdMU2hhZGVyICogc2hhZGVyLAotICAgIGNvbnN0IGdjaGFyICogZl9zcmMsIEdMaW50ICogcG9zX2xvYywgR0xpbnQgKiB0ZXhfbG9jKQotewotICBjb25zdCBnY2hhciAqYXR0cmliX25hbWVzWzJdID0geyAiYV9wb3NpdGlvbiIsICJhX3RleGNvb3JkIiB9OwotICBHTGludCBhdHRyaWJfbG9jc1syXSA9IHsgMCB9OwotICBnYm9vbGVhbiByZXQgPSBUUlVFOwotCi0gIHJldCA9IGdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbGxfd2l0aF9hdHRyaWJzX2FuZF9jaGVjayAoc2hhZGVyLAotICAgICAgc2ltcGxlX3ZlcnRleF9zaGFkZXJfc3RyX2dsZXMyLCBmX3NyYywgMiwgYXR0cmliX25hbWVzLCBhdHRyaWJfbG9jcyk7Ci0KLSAgaWYgKHJldCkgewotICAgICpwb3NfbG9jID0gYXR0cmliX2xvY3NbMF07Ci0gICAgKnRleF9sb2MgPSBhdHRyaWJfbG9jc1sxXTsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci19Ci0KLWdib29sZWFuCi1nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVjayAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsCi0gICAgR0xpbnQgKiBwb3NfbG9jLCBHTGludCAqIHRleF9sb2MpCi17Ci0gIHJldHVybiBnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrIChzaGFkZXIsCi0gICAgICBzaW1wbGVfZnJhZ21lbnRfc2hhZGVyX3N0cl9nbGVzMiwgcG9zX2xvYywgdGV4X2xvYyk7Ci19Ci0KIHZvaWQKIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBjb25zdCBnY2hhciAqIG5hbWUsCiAgICAgZ2Zsb2F0IHZhbHVlKQpAQCAtNzg5LDcgKzgyOSw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTFmIChsb2NhdGlvbiwgdmFsdWUpOwogfQpAQCAtODA3LDcgKzg0Nyw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTFmdiAobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CiB9CkBAIC04MjUsNyArODY1LDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtMWkgKGxvY2F0aW9uLCB2YWx1ZSk7CiB9CkBAIC04NDMsNyArODgzLDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtMWl2IChsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKIH0KQEAgLTg2MSw3ICs5MDEsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm0yZiAobG9jYXRpb24sIHZhbHVlMCwgdmFsdWUxKTsKIH0KQEAgLTg3OSw3ICs5MTksNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm0yZnYgKGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogfQpAQCAtODk3LDcgKzkzNyw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTJpIChsb2NhdGlvbiwgdjAsIHYxKTsKIH0KQEAgLTkxNSw3ICs5NTUsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm0yaXYgKGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogfQpAQCAtOTMzLDcgKzk3Myw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTNmIChsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CkBAIC05NTEsNyArOTkxLDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtM2Z2IChsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKIH0KQEAgLTk2OSw3ICsxMDA5LDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtM2kgKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KQEAgLTk4Nyw3ICsxMDI3LDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtM2l2IChsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKIH0KQEAgLTEwMDUsNyArMTA0NSw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTRmIChsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQpAQCAtMTAyMyw3ICsxMDYzLDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtNGZ2IChsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKIH0KQEAgLTEwNDEsNyArMTA4MSw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTRpIChsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQpAQCAtMTA1OSw3ICsxMDk5LDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtNGl2IChsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKIH0KQEAgLTEwNzcsNyArMTExNyw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybU1hdHJpeDJmdiAobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KQEAgLTEwOTUsNyArMTEzNSw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybU1hdHJpeDNmdiAobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KQEAgLTExMTMsNyArMTE1Myw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybU1hdHJpeDRmdiAobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KQEAgLTExMzIsNyArMTE3Miw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybU1hdHJpeDJ4M2Z2IChsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogfQpAQCAtMTE1MCw3ICsxMTkwLDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtTWF0cml4Mng0ZnYgKGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CkBAIC0xMTY4LDcgKzEyMDgsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm1NYXRyaXgzeDJmdiAobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KQEAgLTExODYsNyArMTIyNiw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybU1hdHJpeDN4NGZ2IChsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogfQpAQCAtMTIwNCw3ICsxMjQ0LDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtTWF0cml4NHgyZnYgKGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CkBAIC0xMjIyLDcgKzEyNjIsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm1NYXRyaXg0eDNmdiAobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KQEAgLTEyMzMsMTYgKzEyNzMsMjAgQEAKIHsKICAgR3N0R0xTaGFkZXJQcml2YXRlICpwcml2OwogICBHc3RHTEZ1bmNzICpnbDsKKyAgZ2ludCByZXQ7CiAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHNoYWRlciAhPSBOVUxMLCAtMSk7CiAgIHByaXYgPSBzaGFkZXItPnByaXY7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwLCAtMSk7Ci0gIGlmICgwID09IHByaXYtPnZlcnRleF9oYW5kbGUpCi0gICAgcmV0dXJuIC0xOwogCiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgcmV0dXJuIGdsLT5HZXRBdHRyaWJMb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICByZXQgPSBnbC0+R2V0QXR0cmliTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKworICBHU1RfVFJBQ0VfT0JKRUNUIChzaGFkZXIsICJyZXRyZWl2ZWQgcHJvZ3JhbSAlaSBhdHRyaWJ1dGUgXCclc1wnIGxvY2F0aW9uICVpIiwKKyAgICAgIChpbnQpIHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lLCByZXQpOworCisgIHJldHVybiByZXQ7CiB9CiAKIHZvaWQKQEAgLTEyNTcsMTEgKzEzMDEsOCBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBnbC0+QmluZEF0dHJpYkxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgaW5kZXgsIG5hbWUpOwotfQorICBHU1RfVFJBQ0VfT0JKRUNUIChzaGFkZXIsICJiaW5kaW5nIHByb2dyYW0gJWkgYXR0cmlidXRlIFwnJXNcJyBsb2NhdGlvbiAlaSIsCisgICAgICAoaW50KSBwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSwgaW5kZXgpOwogCi1HUXVhcmsKLWdzdF9nbF9zaGFkZXJfZXJyb3JfcXVhcmsgKHZvaWQpCi17Ci0gIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyAoImdzdC1nbC1zaGFkZXItZXJyb3IiKTsKKyAgZ2wtPkJpbmRBdHRyaWJMb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIGluZGV4LCBuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmgKaW5kZXggOTdmOThmYy4uMjE0MTBlMiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmgKQEAgLTI2LDI2ICsyNiwxNCBAQAogCiBHX0JFR0lOX0RFQ0xTCiAKK0dUeXBlIGdzdF9nbF9zaGFkZXJfZ2V0X3R5cGUgKHZvaWQpOwogI2RlZmluZSBHU1RfR0xfVFlQRV9TSEFERVIgICAgICAgICAoZ3N0X2dsX3NoYWRlcl9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfU0hBREVSKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfR0xfVFlQRV9TSEFERVIsIEdzdEdMU2hhZGVyKSkKICNkZWZpbmUgR1NUX0dMX1NIQURFUl9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTUygoayksIEdTVF9HTF9UWVBFX1NIQURFUiwgR3N0R0xTaGFkZXJDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9JU19TSEFERVIobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX1NIQURFUikpCi0jZGVmaW5lIEdTVF9HTF9JU19TSEFERVJfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX1NIQURFUikpCisjZGVmaW5lIEdTVF9JU19HTF9TSEFERVIobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX1NIQURFUikpCisjZGVmaW5lIEdTVF9JU19HTF9TSEFERVJfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX1NIQURFUikpCiAjZGVmaW5lIEdTVF9HTF9TSEFERVJfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX0dMX1RZUEVfU0hBREVSLCBHc3RHTFNoYWRlckNsYXNzKSkKIAotI2RlZmluZSBHU1RfR0xfU0hBREVSX0VSUk9SIChnc3RfZ2xfc2hhZGVyX2Vycm9yX3F1YXJrICgpKQotCi10eXBlZGVmIGVudW0gewotICBHU1RfR0xfU0hBREVSX0VSUk9SX0NPTVBJTEUsCi0gIEdTVF9HTF9TSEFERVJfRVJST1JfTElOSywKLSAgR1NUX0dMX1NIQURFUl9FUlJPUl9QUk9HUkFNCi19IEdzdEdMU2hhZGVyRXJyb3I7Ci0KLXR5cGVkZWYgZW51bSB7Ci0gIEdTVF9HTF9TSEFERVJfRlJBR01FTlRfU09VUkNFLAotICBHU1RfR0xfU0hBREVSX1ZFUlRFWF9TT1VSQ0UKLX0gR3N0R0xTaGFkZXJTb3VyY2VUeXBlOwotCiBzdHJ1Y3QgX0dzdEdMU2hhZGVyIHsKICAgLyo8IHByaXZhdGUgPiovCiAgIEdzdE9iamVjdCBwYXJlbnQ7CkBAIC01Myw2ICs0MSw4IEBACiAgIEdzdEdMQ29udGV4dCAqY29udGV4dDsKIAogICBHc3RHTFNoYWRlclByaXZhdGUgKnByaXY7CisKKyAgZ3BvaW50ZXIgX3BhZGRpbmdbR1NUX1BBRERJTkddOwogfTsKIAogc3RydWN0IF9Hc3RHTFNoYWRlckNsYXNzIHsKQEAgLTYwLDMzICs1MCwyOSBAQAogICBHc3RPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CiB9OwogCi0vKiBtZXRob2RzICovCitHc3RHTFNoYWRlciAqIGdzdF9nbF9zaGFkZXJfbmV3ICAgICAgICAgICAgICAgICAgICAgKEdzdEdMQ29udGV4dCAqY29udGV4dCk7CitHc3RHTFNoYWRlciAqIGdzdF9nbF9zaGFkZXJfbmV3X3dpdGhfc3RhZ2VzICAgICAgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdFcnJvciAqKiBlcnJvciwgLi4uKTsKK0dzdEdMU2hhZGVyICogZ3N0X2dsX3NoYWRlcl9uZXdfbGlua193aXRoX3N0YWdlcyAgICAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR0Vycm9yICoqIGVycm9yLCAuLi4pOworR3N0R0xTaGFkZXIgKiBnc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0ICAgICAgICAgICAgIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHRXJyb3IgKiogZXJyb3IpOwogCi1HUXVhcmsgZ3N0X2dsX3NoYWRlcl9lcnJvcl9xdWFyayAodm9pZCk7Ci1HVHlwZSBnc3RfZ2xfc2hhZGVyX2dldF90eXBlICh2b2lkKTsKK2dib29sZWFuIGdzdF9nbF9zaGFkZXJfYXR0YWNoICAgICAgICAgICAgICAgICAgICAgICAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIEdzdEdMU0xTdGFnZSAqIHN0YWdlKTsKK2dib29sZWFuIGdzdF9nbF9zaGFkZXJfYXR0YWNoX3VubG9ja2VkICAgICAgICAgICAgICAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIEdzdEdMU0xTdGFnZSAqIHN0YWdlKTsKIAotR3N0R0xTaGFkZXIgKiBnc3RfZ2xfc2hhZGVyX25ldyAoR3N0R0xDb250ZXh0ICpjb250ZXh0KTsKK3ZvaWQgICAgIGdzdF9nbF9zaGFkZXJfZGV0YWNoICAgICAgICAgICAgICAgICAgICAgICAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIEdzdEdMU0xTdGFnZSAqIHN0YWdlKTsKK3ZvaWQgICAgIGdzdF9nbF9zaGFkZXJfZGV0YWNoX3VubG9ja2VkICAgICAgICAgICAgICAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIEdzdEdMU0xTdGFnZSAqIHN0YWdlKTsKIAotaW50IGdzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlKEdzdEdMU2hhZGVyICogc2hhZGVyKTsKK2dib29sZWFuIGdzdF9nbF9zaGFkZXJfY29tcGlsZV9hdHRhY2hfc3RhZ2UgICAgICAgICAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMU0xTdGFnZSAqc3RhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnJvcik7CitnYm9vbGVhbiBnc3RfZ2xfc2hhZGVyX2xpbmsgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBHRXJyb3IgKiogZXJyb3IpOworZ2Jvb2xlYW4gZ3N0X2dsX3NoYWRlcl9pc19saW5rZWQgICAgICAgICAgICAgICAgICAgIChHc3RHTFNoYWRlciAqc2hhZGVyKTsKIAotdm9pZCAgICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF92ZXJ0ZXhfc291cmNlICAgKEdzdEdMU2hhZGVyICpzaGFkZXIsIGNvbnN0IGdjaGFyICpzcmMpOwotdm9pZCAgICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2UgKEdzdEdMU2hhZGVyICpzaGFkZXIsIGNvbnN0IGdjaGFyICpzcmMpOwotY29uc3QgZ2NoYXIgKiBnc3RfZ2xfc2hhZGVyX2dldF92ZXJ0ZXhfc291cmNlICAgKEdzdEdMU2hhZGVyICpzaGFkZXIpOwotY29uc3QgZ2NoYXIgKiBnc3RfZ2xfc2hhZGVyX2dldF9mcmFnbWVudF9zb3VyY2UgKEdzdEdMU2hhZGVyICpzaGFkZXIpOworaW50IGdzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlICAgICAgICAgICAgICAgIChHc3RHTFNoYWRlciAqIHNoYWRlcik7CiAKLXZvaWQgICAgIGdzdF9nbF9zaGFkZXJfc2V0X2FjdGl2ZSAgICAgICAgKEdzdEdMU2hhZGVyICpzaGFkZXIsIGdib29sZWFuIGFjdGl2ZSk7Ci1nYm9vbGVhbiBnc3RfZ2xfc2hhZGVyX2lzX2NvbXBpbGVkICAgICAgIChHc3RHTFNoYWRlciAqc2hhZGVyKTsKLWdib29sZWFuIGdzdF9nbF9zaGFkZXJfY29tcGlsZSAgICAgICAgICAgKEdzdEdMU2hhZGVyICpzaGFkZXIsIEdFcnJvciAqKmVycm9yKTsKLWdib29sZWFuIGdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbmRfY2hlY2sgKEdzdEdMU2hhZGVyICpzaGFkZXIsIGNvbnN0IGdjaGFyICpzb3VyY2UsIEdzdEdMU2hhZGVyU291cmNlVHlwZSB0eXBlKTsKLWdib29sZWFuIGdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbGxfd2l0aF9hdHRyaWJzX2FuZF9jaGVjayAoR3N0R0xTaGFkZXIgKnNoYWRlciwgY29uc3QgZ2NoYXIgKnZfc3JjLCBjb25zdCBnY2hhciAqZl9zcmMsIGNvbnN0IGdpbnQgbl9hdHRyaWJzLCBjb25zdCBnY2hhciAqYXR0cmliX25hbWVzW10sIEdMaW50IGF0dHJpYl9sb2NzW10pOwotCi1nYm9vbGVhbiBnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X2ZfYW5kX2NoZWNrICAgKEdzdEdMU2hhZGVyICpzaGFkZXIsIGNvbnN0IGdjaGFyICp2X3NyYywgY29uc3QgZ2ludCBuX2F0dHJpYnMsIGNvbnN0IGdjaGFyICphdHRyaWJfbmFtZXNbXSwgR0xpbnQgYXR0cmliX2xvY3NbXSk7Ci1nYm9vbGVhbiBnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrICAgKEdzdEdMU2hhZGVyICpzaGFkZXIsIGNvbnN0IGdjaGFyICpmX3NyYywgR0xpbnQgKnBvc19sb2MsIEdMaW50ICp0ZXhfbG9jKTsKLWdib29sZWFuIGdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdmZfYW5kX2NoZWNrICAoR3N0R0xTaGFkZXIgKnNoYWRlciwgR0xpbnQgKnBvc19sb2MsIEdMaW50ICp0ZXhfbG9jKTsKLQotdm9pZCBnc3RfZ2xfc2hhZGVyX3JlbGVhc2UgICAgICAgKEdzdEdMU2hhZGVyICpzaGFkZXIpOwotdm9pZCBnc3RfZ2xfc2hhZGVyX3VzZSAgICAgICAgICAgKEdzdEdMU2hhZGVyICpzaGFkZXIpOwotdm9pZCBnc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXIgKEdzdEdMQ29udGV4dCAqY29udGV4dCk7Cit2b2lkIGdzdF9nbF9zaGFkZXJfcmVsZWFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdEdMU2hhZGVyICpzaGFkZXIpOwordm9pZCBnc3RfZ2xfc2hhZGVyX3JlbGVhc2VfdW5sb2NrZWQgICAgICAgICAgICAgICAgIChHc3RHTFNoYWRlciAqIHNoYWRlcik7Cit2b2lkIGdzdF9nbF9zaGFkZXJfdXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdEdMU2hhZGVyICpzaGFkZXIpOwordm9pZCBnc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXIgICAgICAgICAgICAgICAgICAgIChHc3RHTENvbnRleHQgKmNvbnRleHQpOwogCiB2b2lkIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgICAgICAgICAgIChHc3RHTFNoYWRlciAqc2hhZGVyLCBjb25zdCBnY2hhciAqbmFtZSwgZ2ludCB2YWx1ZSk7CiB2b2lkIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWl2ICAgICAgICAgIChHc3RHTFNoYWRlciAqc2hhZGVyLCBjb25zdCBnY2hhciAqbmFtZSwgZ3VpbnQgY291bnQsIGdpbnQgKnZhbHVlKTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlcnN0cmluZ3MuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlcnN0cmluZ3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjliZTZmCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyc3RyaW5ncy5jCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0Z2xzaGFkZXJzdHJpbmdzLmgiCisKKy8qICpJTkRFTlQtT0ZGKiAqLworY29uc3QgZ2NoYXIgKmdzdF9nbF9zaGFkZXJfc3RyaW5nX3ZlcnRleF9kZWZhdWx0ID0KKyAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjtcbiIKKyAgICAiYXR0cmlidXRlIHZlYzIgYV90ZXhjb29yZDtcbiIKKyAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCisgICAgInZvaWQgbWFpbigpXG4iCisgICAgIntcbiIKKyAgICAiICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuIgorICAgICIgICB2X3RleGNvb3JkID0gYV90ZXhjb29yZDtcbiIKKyAgICAifVxuIjsKKworY29uc3QgZ2NoYXIgKmdzdF9nbF9zaGFkZXJfc3RyaW5nX3ZlcnRleF9tYXQ0X3RleHR1cmVfdHJhbnNmb3JtID0KKyAgICAidW5pZm9ybSBtYXQ0IHVfdHJhbnNmb3JtYXRpb247XG4iCisgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247XG4iCisgICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Y29vcmQ7XG4iCisgICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgorICAgICJ2b2lkIG1haW4oKVxuIgorICAgICJ7XG4iCisgICAgIiAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbiIKKyAgICAiICAgdl90ZXhjb29yZCA9ICh1X3RyYW5zZm9ybWF0aW9uICogdmVjNChhX3RleGNvb3JkLCAwLCAxKSkueHk7XG4iCisgICAgIn1cbiI7CisKK2NvbnN0IGdjaGFyICpnc3RfZ2xfc2hhZGVyX3N0cmluZ19mcmFnbWVudF9kZWZhdWx0ID0KKyAgICAiI2lmZGVmIEdMX0VTXG4iCisgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICIjZW5kaWZcbiIKKyAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCisgICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIKKyAgICAidm9pZCBtYWluKClcbiIKKyAgICAie1xuIgorICAgICIgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHZfdGV4Y29vcmQpO1xuIgorICAgICJ9IjsKKworY29uc3QgZ2NoYXIgKmdzdF9nbF9zaGFkZXJfc3RyaW5nX2ZyYWdtZW50X2V4dGVybmFsX29lc19kZWZhdWx0ID0KKyAgICAiI2V4dGVuc2lvbiBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIDogcmVxdWlyZVxuIgorICAgICIjaWZkZWYgR0xfRVNcbiIKKyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCisgICAgIiNlbmRpZlxuIgorICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKKyAgICAidW5pZm9ybSBzYW1wbGVyRXh0ZXJuYWxPRVMgdGV4O1xuIgorICAgICJ2b2lkIG1haW4oKVxuIgorICAgICJ7XG4iCisgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdl90ZXhjb29yZCk7XG4iCisgICAgIn0iOworLyogKklOREVOVC1PTiogKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlcnN0cmluZ3MuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlcnN0cmluZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWVhOGRlCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyc3RyaW5ncy5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9HTF9TSEFERVJfU1RSSU5HU19IX18KKyNkZWZpbmUgX19HU1RfR0xfU0hBREVSX1NUUklOR1NfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKworR19CRUdJTl9ERUNMUworCitleHRlcm4gY29uc3QgZ2NoYXIgKmdzdF9nbF9zaGFkZXJfc3RyaW5nX3ZlcnRleF9kZWZhdWx0OworZXh0ZXJuIGNvbnN0IGdjaGFyICpnc3RfZ2xfc2hhZGVyX3N0cmluZ19mcmFnbWVudF9kZWZhdWx0OworCitleHRlcm4gY29uc3QgZ2NoYXIgKmdzdF9nbF9zaGFkZXJfc3RyaW5nX3ZlcnRleF9tYXQ0X3RleHR1cmVfdHJhbnNmb3JtOworZXh0ZXJuIGNvbnN0IGdjaGFyICpnc3RfZ2xfc2hhZGVyX3N0cmluZ19mcmFnbWVudF9leHRlcm5hbF9vZXNfZGVmYXVsdDsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX0dMX1NIQURFUl9TVFJJTkdTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVydmFyaWFibGVzLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmUwNGM5NC4uMDAwMDAwMAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuYworKysgL2Rldi9udWxsCkBAIC0xLDE0ODggKzAsMCBAQAotLyoKLSAqIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDA5IEx1YyBEZXNjaGVuYXV4IDxsdWMuZGVzY2hlbmF1eEBmcmVlc3VyZi5jaD4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlICJnc3RnbHNoYWRlcnZhcmlhYmxlcy5oIgotCi0jaWYgIWRlZmluZWQoc3RydG9rX3IpICYmIGRlZmluZWQoR19PU19XSU4zMikKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQotI2RlZmluZSBzdHJ0b2tfciBzdHJ0b2tfcwotI2Vsc2UKLSNkZWZpbmUgc3RydG9rX3IocyxkLHApIHN0cnRvayhzLGQpCi0jZW5kaWYKLSNlbmRpZgotCi0jZGVmaW5lIHRyaW1sZWZ0KHMsY2hhcnMpIHdoaWxlKHNbMF0gJiYgc3RyY2hyKGNoYXJzLHNbMF0pKSArK3M7Ci0jZGVmaW5lIHRyaW1yaWdodChzLGNoYXJzKSB7IFwKLQljaGFyICplbmQ7IFwKLQllbmQ9cytzdHJsZW4ocyktMTsgXAotCXdoaWxlKGVuZD49cyAmJiBzdHJjaHIoY2hhcnMsZW5kWzBdKSkgKGVuZC0tKVswXT0wOyBcCi19Ci0KLWNvbnN0IGNoYXIgKmdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kYXRhdHlwZVtdID0gewotICAiYm9vbCIsCi0gICJpbnQiLAotICAidWludCIsCi0gICJmbG9hdCIsCi0gICJ2ZWMyIiwKLSAgInZlYzMiLAotICAidmVjNCIsCi0gICJidmVjMiIsCi0gICJidmVjMyIsCi0gICJidmVjNCIsCi0gICJpdmVjMiIsCi0gICJpdmVjMyIsCi0gICJpdmVjNCIsCi0gICJ1dmVjMiIsCi0gICJ1dmVjMyIsCi0gICJ1dmVjNCIsCi0gICJtYXQyIiwKLSAgIm1hdDMiLAotICAibWF0NCIsCi0gICJtYXQyeDIiLAotICAibWF0MngzIiwKLSAgIm1hdDJ4NCIsCi0gICJtYXQzeDIiLAotICAibWF0M3gzIiwKLSAgIm1hdDN4NCIsCi0gICJtYXQ0eDIiLAotICAibWF0NHgzIiwKLSAgIm1hdDR4NCIsCi0gIDAKLX07Ci0KLXR5cGVkZWYgZW51bQotewotICBfYm9vbCwKLSAgX2ludCwKLSAgX3VpbnQsCi0gIF9mbG9hdCwKLSAgX3ZlYzIsCi0gIF92ZWMzLAotICBfdmVjNCwKLSAgX2J2ZWMyLAotICBfYnZlYzMsCi0gIF9idmVjNCwKLSAgX2l2ZWMyLAotICBfaXZlYzMsCi0gIF9pdmVjNCwKLSAgX3V2ZWMyLAotICBfdXZlYzMsCi0gIF91dmVjNCwKLSAgX21hdDIsCi0gIF9tYXQzLAotICBfbWF0NCwKLSAgX21hdDJ4MiwKLSAgX21hdDJ4MywKLSAgX21hdDJ4NCwKLSAgX21hdDN4MiwKLSAgX21hdDN4MywKLSAgX21hdDN4NCwKLSAgX21hdDR4MiwKLSAgX21hdDR4MywKLSAgX21hdDR4NCwKLSAgX2RhdGF0eXBlY291bnQKLX0gZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2RhdGF0eXBlaW5kZXg7Ci0KLXR5cGVkZWYgc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjCi17Ci0gIGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kYXRhdHlwZWluZGV4IHR5cGU7Ci0gIGNoYXIgKm5hbWU7Ci0gIGludCBhcnJheXNpemU7Ci0gIGludCBjb3VudDsKLSAgdm9pZCAqdmFsdWU7Ci0KLX0gZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2M7Ci0KLWNoYXIgKnBhcnNlbmFtZSAoY2hhciAqKnZhcm5hbWUsIGludCAqYXJyYXlzaXplLCBjaGFyICoqc2F2ZXB0cik7Ci1jaGFyICpwYXJzZXZhbHVlIChjaGFyICp2YWx1ZSwgY2hhciAqX3NhdmVwdHIsCi0gICAgc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQpOwotY2hhciAqdmVjX3BhcnNldmFsdWUgKGludCBuLCBjaGFyICp2YWx1ZSwgY2hhciAqX3NhdmVwdHIsCi0gICAgc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQpOwotY2hhciAqYnZlY19wYXJzZXZhbHVlIChpbnQgbiwgY2hhciAqdmFsdWUsIGNoYXIgKl9zYXZlcHRyLAotICAgIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0KTsKLWNoYXIgKml2ZWNfcGFyc2V2YWx1ZSAoaW50IG4sIGNoYXIgKnZhbHVlLCBjaGFyICpfc2F2ZXB0ciwKLSAgICBzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKnJldCk7Ci1jaGFyICp1dmVjX3BhcnNldmFsdWUgKGludCBuLCBjaGFyICp2YWx1ZSwgY2hhciAqX3NhdmVwdHIsCi0gICAgc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQpOwotY2hhciAqbWF0X3BhcnNldmFsdWUgKGludCBuLCBpbnQgbSwgY2hhciAqdmFsdWUsIGNoYXIgKl9zYXZlcHRyLAotICAgIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0KTsKLQotLyoKLQlGdW5jdGlvbjoKLQkJZ3N0X2dsX3NoYWRlcnZhcmlhYmxlc19wYXJzZQotCi0JRGVzY3JpcHRpb246Ci0JCVBhcnNlIHVuaWZvcm0gdmFyaWFibGVzIGRlY2xhcmF0aW9ucyBhbmQgc2V0IHRoZWlyIHZhbHVlcyBpbgotCQl0aGUgc3BlY2lmaWVkIHNoYWRlci4KLQotCUFyZ3VtZW50czoKLQotCQlHc3RHTFNoYWRlciAqc2hhZGVyOgotCQkJU2hhZGVyIGluIHdoaWNoIHZhcmlhYmxlcyBhcmUgdG8gYmUgc2V0LgotCi0JCWNoYXIgKnZhcmlhYmxlczoKLQkJCVRoZSB0ZXh0IHRvIGJlIHBhcnNlZC4KLQotCQlpbnQgKCpfc2V0dmFyaWFibGUpKCk6Ci0JCQlEZWZhdWx0cyB0byBnc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0KCkuCi0JCQlZb3UgY2FuIHNwZWNpZnkgaGVyZSBhIHVzZXIgZnVuY3Rpb24gZm9yIG1hbmFnaW5nIHRoZQotCQkJcGFyc2VkIHZhcmlhYmxlIGRlc2NyaXB0aW9uLgotCi0JcmV0dXJuIHZhbHVlczoKLQkJIDA6IAlObyBlcnJvci4KLQkJLTE6CUVycm9yLgotCi0qLwotCi1pbnQKLWdzdF9nbF9zaGFkZXJ2YXJpYWJsZXNfcGFyc2UgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBjaGFyICp2YXJpYWJsZXMsCi0gICAgaW50ICgqX3NldHZhcmlhYmxlKSAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsCi0gICAgICAgIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqIHYpKQotewotICBjaGFyICpwID0gMDsKLSAgY2hhciAqcDA7Ci0gIGNoYXIgKmU7Ci0gIGNoYXIgZTEgPSAwOwotICBjaGFyICp0ID0gMDsKLSAgY2hhciAqdmFybmFtZTsKLSAgY2hhciAqdmFydHlwZTsKLSAgY2hhciAqdmFydmFsdWU7Ci0gIGludCBhcnJheXNpemUgPSAwOwotICBjaGFyICpzYXZlcHRyID0gdmFyaWFibGVzOwotICBpbnQgbGluZSA9IDE7Ci0gIGNoYXIgKmxpbTsKLSAgaW50IGk7Ci0gIGludCBsZW47Ci0gIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyByZXQ7Ci0KLSAgaWYgKCFfc2V0dmFyaWFibGUpIHsKLSAgICBfc2V0dmFyaWFibGUgPSBnc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0OwotICB9Ci0KLSAgaWYgKCF2YXJpYWJsZXMpCi0gICAgcmV0dXJuIDA7Ci0KLSAgcDAgPSB2YXJpYWJsZXM7Ci0gIHRyaW1yaWdodCAocDAsICIgXHRcclxuIik7Ci0gIGxpbSA9IHZhcmlhYmxlcyArIHN0cmxlbiAodmFyaWFibGVzKTsKLSAgZSA9IHN0cmNociAocDAsICc7Jyk7Ci0gIHdoaWxlIChwMCA8IGxpbSkgewotCi0gICAgaWYgKCFlKSB7Ci0gICAgICBpZiAocDBbMF0pCi0gICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0gICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBlMSA9IGVbMV07Ci0gICAgZVsxXSA9IDA7Ci0gICAgcCA9IGdfc3RyZHVwIChwMCk7Ci0gICAgZVsxXSA9IGUxOwotCi0gICAgdHJpbXJpZ2h0IChwLCAiIFx0Iik7Ci0gICAgdHJpbWxlZnQgKHAsICIgXHRcclxuIik7Ci0KLSAgICB0ID0gc3RydG9rX3IgKHAsICIgXHQiLCAmc2F2ZXB0cik7Ci0gICAgaWYgKCF0KQotICAgICAgZ290byBwYXJzZV9lcnJvcjsKLSAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgIHRyaW1yaWdodCAodCwgIiBcdFxyXG4iKTsKLQotICAgIGlmICh0WzBdKSB7Ci0KLSAgICAgIGlmICghc3RyY21wICh0LCAiY29uc3QiKSkgewotICAgICAgICB0ID0gc3RydG9rX3IgKDAsICIgXHQiLCAmc2F2ZXB0cik7Ci0gICAgICAgIGlmICghdCkKLSAgICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotICAgICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgICBpZiAoIXRbMF0pCi0gICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLSAgICAgIH0KLSAgICAgIC8vIHBhcnNlIGRhdGEgdHlwZQotICAgICAgZm9yIChpID0gMDsgaSA8IF9kYXRhdHlwZWNvdW50OyArK2kpIHsKLSAgICAgICAgaWYgKCFzdHJjbXAgKHQsIGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kYXRhdHlwZVtpXSkpIHsKLSAgICAgICAgICByZXQudHlwZSA9IChnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVpbmRleCkgaTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgaWYgKGkgPT0gX2RhdGF0eXBlY291bnQpCi0gICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0KLSAgICAgIHZhcnR5cGUgPSBnX3N0cmR1cCAodCk7Ci0gICAgICBHU1RfSU5GTyAoInZhcnR5cGUgOiAnJXMnXG4iLCB2YXJ0eXBlKTsKLQotICAgICAgdHJpbWxlZnQgKHNhdmVwdHIsICIgXHQiKTsKLSAgICAgIHQgPSBzYXZlcHRyOwotICAgICAgaWYgKCpzYXZlcHRyID09ICc9JykKLSAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLQotICAgICAgLy8gcGFyc2UgdmFyaWFibGUgbmFtZSBhbmQgYXJyYXkgc2l6ZQotICAgICAgdCA9IHBhcnNlbmFtZSAoJnZhcm5hbWUsICZhcnJheXNpemUsICZzYXZlcHRyKTsKLSAgICAgIGlmICh0KQotICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotCi0gICAgICB0cmltcmlnaHQgKHZhcm5hbWUsICIgXHQiKTsKLSAgICAgIEdTVF9JTkZPICgidmFybmFtZSA6ICclcydcbiIsIHZhcm5hbWUpOwotICAgICAgR1NUX0lORk8gKCJhcnJheXNpemUgOiAlZFxuIiwgYXJyYXlzaXplKTsKLQotICAgICAgLy8gY2hlY2sgdHlwZSBjYXN0IGFmdGVyIGFzc2lnbmVtZW50IG9wZXJhdG9yCi0gICAgICB0ID0gc3RydG9rX3IgKDAsICIoIiwgJnNhdmVwdHIpOwotICAgICAgaWYgKCF0KQotICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotCi0gICAgICBpZiAoYXJyYXlzaXplKSB7Ci0gICAgICAgIGdjaGFyICpzID0gZ19zdHJkdXBfcHJpbnRmICgiJXNbJWRdIiwgdmFydHlwZSwgYXJyYXlzaXplKTsKLSAgICAgICAgaWYgKHN0cmNtcCAodCwgcykpIHsKLSAgICAgICAgICBnX2ZyZWUgKHMpOwotICAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgZ19mcmVlIChzKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChzdHJjbXAgKHQsIHZhcnR5cGUpKQotICAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0gICAgICB9Ci0KLSAgICAgIC8vIGV4dHJhY3QgdmFyaWFibGUgdmFsdWUKLSAgICAgIHQgPSBzdHJ0b2tfciAoMCwgIjsiLCAmc2F2ZXB0cik7Ci0gICAgICBpZiAoIXQpCi0gICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0gICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgdHJpbXJpZ2h0ICh0LCAiIFx0Iik7Ci0KLSAgICAgIGlmICghdFswXSkKLSAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLSAgICAgIGlmICgqKHNhdmVwdHIgLSAyKSAhPSAnKScpCi0gICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0gICAgICAqKHNhdmVwdHIgLSAyKSA9IDA7Ci0gICAgICBpZiAoIXRbMF0pCi0gICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0KLSAgICAgIHZhcnZhbHVlID0gZ19zdHJkdXAgKHQpOwotICAgICAgR1NUX0lORk8gKCJ2YWx1ZTogJXNcblxuIiwgdmFydmFsdWUpOwotCi0gICAgICB0ID0gc2F2ZXB0cjsKLSAgICAgIGlmICh0WzBdKQotICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotCi0gICAgICAvLyBwYXJzZSB2YXJpYWJsZSB2YWx1ZQotICAgICAgbGVuID0gc3RybGVuICh2YXJ2YWx1ZSk7Ci0gICAgICByZXQubmFtZSA9IHZhcm5hbWU7Ci0gICAgICByZXQuYXJyYXlzaXplID0gYXJyYXlzaXplOwotICAgICAgdCA9IHBhcnNldmFsdWUgKHZhcnZhbHVlLCBzYXZlcHRyLCAmcmV0KTsKLSAgICAgIGlmICh0KSB7Ci0gICAgICAgIHQgLT0gbGVuOwotICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotICAgICAgfQotICAgICAgLy8gc2V0IHZhcmlhYmxlIHZhbHVlCi0gICAgICBfc2V0dmFyaWFibGUgKHNoYWRlciwgJnJldCk7Ci0KLSAgICAgIGZmbHVzaCAoMCk7Ci0gICAgfQotICAgIC8vIFRlbGwgbWUgd2h5IHdlIGNhbm5vdCBmcmVlKHApIHdoaXRob3V0IHNlZ2ZhdWx0LgotICAgIC8vZ19mcmVlKHApOwotICAgIHAwID0gZSArIDE7Ci0gICAgKytsaW5lOwotICAgIGUgPSBzdHJjaHIgKHAwLCAnOycpOwotICB9Ci0KLSAgcmV0dXJuIDA7Ci0KLXBhcnNlX2Vycm9yOgotICBpZiAoIXQpIHsKLSAgICB0ID0gc2F2ZXB0cjsKLSAgfQotICBpZiAoIWUpIHsKLSAgICB0ID0gcCA9IHAwOwotICB9IGVsc2UgewotICAgIGVbMV0gPSAwOwotICAgIHRyaW1sZWZ0IChwMCwgIiBcdFxyXG4iKTsKLSAgICBHU1RfRVJST1IgKCJcbiVzIiwgcDApOwotICAgIGVbMV0gPSBlMTsKLSAgfQotICBHU1RfRVJST1IgKCJwYXJzZSBlcnJvciBvbiBsaW5lICVkLCBwb3NpdGlvbiAlbGQgKCVzKSIsIGxpbmUsIChnbG9uZykgKHQgLSBwKSwKLSAgICAgIHQpOwotICByZXR1cm4gLTE7Ci19Ci0KLS8qCi0JRnVuY3Rpb246Ci0JCXBhcnNlbmFtZQotCi0JRGVzY3JpcHRpb246Ci0JCVBhcnNlIHRleHQgYmV0d2VlbiB0aGUgZGF0YSB0eXBlIGFuZCB0aGUgYXNzaWduZW1lbnQgb3BlcmF0b3IKLQkJKGllOiB2YXJpYWJsZSBuYW1lIGFuZCBhcnJheSBzaXplKS4KLQotCUFyZ3VtZW50czoKLQotCQljaGFyICoqdmFybmFtZToKLQkJCVRleHQgdG8gcGFyc2UuCi0KLQkJaW50ICphcnJheXNpemU6Ci0JCQlQb2ludGVyIHRvIGFycmF5IHNpemUuIFNldCB0byAwIGlmIG5vIGFycmF5LgotCi0JCWNoYXIgKipzYXZlcHRyOgotCQkJQWRkcmVzcyBvZiBjaGFyICpzYXZlcHRyIGZvciBzdHJ0b2tfcigpCi0KLQlyZXR1cm4gdmFsdWVzOgotCQkgMDogCU5vIGVycm9yLgotCQkhMDoJUG9pbnRlciB0byBwYXJzZSBlcnJvci4KLQotKi8KLQotY2hhciAqCi1wYXJzZW5hbWUgKGNoYXIgKip2YXJuYW1lLCBpbnQgKmFycmF5c2l6ZSwgY2hhciAqKnNhdmVwdHIpCi17Ci0gIGNoYXIgKnQ7Ci0gIGNoYXIgKmk7Ci0gIGdpbnQgajsKLQotICAqYXJyYXlzaXplID0gMDsKLSAgdCA9IHN0cnRva19yICgwLCAiPSIsIHNhdmVwdHIpOwotICBpZiAoIXQpCi0gICAgcmV0dXJuICpzYXZlcHRyOwotCi0gIHRyaW1sZWZ0ICh0LCAiIFx0Iik7Ci0gIHRyaW1yaWdodCAodCwgIiBcdCIpOwotCi0gIGkgPSBzdHJjaHIgKHQsICdbJyk7Ci0gIGlmICghaSkgeyAgICAgICAgICAgICAgICAgICAgIC8vIG5vdCBhbiBhcnJheQotICAgIGlmICghdFswXSkKLSAgICAgIHJldHVybiB0OwotICAgIGZvciAoaiA9IDA7IGogPCAoZ2ludCkgc3RybGVuICh0KTsgKytqKSB7Ci0gICAgICBpZiAoIXN0cmNociAoVkFMSURfVkFSTkFNRV9DSEFSUywgdFtqXSkpCi0gICAgICAgIHJldHVybiB0ICsgajsKLSAgICB9Ci0gICAgKnZhcm5hbWUgPSBnX3N0cmR1cCAodCk7Ci0gIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGFuIGFycmF5Ci0KLSAgICBjaGFyICppMjsKLSAgICBjaGFyICpjOwotCi0gICAgaTIgPSBzdHJjaHIgKGkgKyAxLCAnXScpOwotICAgIGlmICghaTIpCi0gICAgICByZXR1cm4gaSArIDE7Ci0gICAgKmkgPSAwOwotCi0gICAgaWYgKCF0WzBdKQotICAgICAgcmV0dXJuIHQ7Ci0gICAgZm9yIChqID0gMDsgaiA8IChnaW50KSBzdHJsZW4gKHQpOyArK2opIHsKLSAgICAgIGlmICghc3RyY2hyIChWQUxJRF9WQVJOQU1FX0NIQVJTLCB0W2pdKSkKLSAgICAgICAgcmV0dXJuIHQ7Ci0gICAgfQotCi0gICAgKnZhcm5hbWUgPSBnX3N0cmR1cCAodCk7Ci0gICAgKmkgPSAnWyc7Ci0KLSAgICBmb3IgKGMgPSBpICsgMTsgYyA8IGkyOyArK2MpCi0gICAgICBpZiAoKmMgPCAnMCcgfHwgKmMgPiAnOScpCi0gICAgICAgIHJldHVybiBjOwotCi0gICAgKmkyID0gMDsKLSAgICAqYXJyYXlzaXplID0gYXRvaSAoaSArIDEpOwotICAgICppMiA9ICddJzsKLQotICAgIGlmICghKmFycmF5c2l6ZSkKLSAgICAgIHJldHVybiBpICsgMTsKLSAgfQotCi0gIHJldHVybiAwOwotfQotCi0vKgotCUZ1bmN0aW9uOgotCQlnc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0Ci0KLQlEZXNjcmlwdGlvbjoKLQkJU2V0IHZhcmlhYmxlIHZhbHVlIGluIHRoZSBzcGVjaWZpZWQgc2hhZGVyCi0KLQlBcmd1bWVudHM6Ci0KLQkJR3N0R2xTaGFkZXIgKnNoYWRlcjoKLQkJCVRoZSBzaGFkZXIgd2hlcmUgdG8gc2V0IHRoZSB2YXJpYWJsZS4KLQotCQlzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKnJldDoKLQkJCVRoZSB2YXJpYWJsZSBkZXNjcmlwdGlvbi4KLQotCXJldHVybiB2YWx1ZXM6Ci0JCSAwOiAJTm8gZXJyb3IuCi0JCSEwOglWYXJpYWJsZSB0eXBlIHVua25vd24vaW5jb3JyZWN0LgotCi0qLwotCi1pbnQKLWdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9zZXQgKEdzdEdMU2hhZGVyICogc2hhZGVyLAotICAgIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0KQotewotCi0gIHN3aXRjaCAocmV0LT50eXBlKSB7Ci0gICAgY2FzZSBfYm9vbDoKLSAgICAgIGlmIChyZXQtPmFycmF5c2l6ZSkgewotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsCi0gICAgICAgICAgICAoaW50ICopIHJldC0+dmFsdWUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaSAoc2hhZGVyLCByZXQtPm5hbWUsCi0gICAgICAgICAgICAoKGludCAqKSByZXQtPnZhbHVlKVswXSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIF9pbnQ6Ci0gICAgICBpZiAocmV0LT5hcnJheXNpemUpIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaXYgKHNoYWRlciwgcmV0LT5uYW1lLCByZXQtPmNvdW50LAotICAgICAgICAgICAgKGludCAqKSByZXQtPnZhbHVlKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKHNoYWRlciwgcmV0LT5uYW1lLAotICAgICAgICAgICAgKChpbnQgKikgcmV0LT52YWx1ZSlbMF0pOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF91aW50OgotICAgICAgaWYgKHJldC0+YXJyYXlzaXplKSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWl2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwKLSAgICAgICAgICAgIChpbnQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpIChzaGFkZXIsIHJldC0+bmFtZSwKLSAgICAgICAgICAgICgodW5zaWduZWQgaW50ICopIHJldC0+dmFsdWUpWzBdKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfZmxvYXQ6Ci0gICAgICBpZiAocmV0LT5hcnJheXNpemUpIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZnYgKHNoYWRlciwgcmV0LT5uYW1lLCByZXQtPmNvdW50LAotICAgICAgICAgICAgKGZsb2F0ICopIHJldC0+dmFsdWUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoc2hhZGVyLCByZXQtPm5hbWUsCi0gICAgICAgICAgICAoKGZsb2F0ICopIHJldC0+dmFsdWUpWzBdKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfdmVjMjoKLSAgICAgIGlmIChyZXQtPmFycmF5c2l6ZSkgewotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsCi0gICAgICAgICAgICAoZmxvYXQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmIChzaGFkZXIsIHJldC0+bmFtZSwKLSAgICAgICAgICAgICgoZmxvYXQgKikgcmV0LT52YWx1ZSlbMF0sICgoZmxvYXQgKikgcmV0LT52YWx1ZSlbMV0pOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9idmVjMjoKLSAgICBjYXNlIF9pdmVjMjoKLSAgICBjYXNlIF91dmVjMjoKLSAgICAgIGlmIChyZXQtPmFycmF5c2l6ZSkgewotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsCi0gICAgICAgICAgICAoaW50ICopIHJldC0+dmFsdWUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaSAoc2hhZGVyLCByZXQtPm5hbWUsCi0gICAgICAgICAgICAoKGludCAqKSByZXQtPnZhbHVlKVswXSwgKChpbnQgKikgcmV0LT52YWx1ZSlbMV0pOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF92ZWMzOgotICAgICAgaWYgKHJldC0+YXJyYXlzaXplKSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Z2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwKLSAgICAgICAgICAgIChmbG9hdCAqKSByZXQtPnZhbHVlKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2YgKHNoYWRlciwgcmV0LT5uYW1lLAotICAgICAgICAgICAgKChmbG9hdCAqKSByZXQtPnZhbHVlKVswXSwgKChmbG9hdCAqKSByZXQtPnZhbHVlKVsxXSwKLSAgICAgICAgICAgICgoZmxvYXQgKikgcmV0LT52YWx1ZSlbMl0pOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9idmVjMzoKLSAgICBjYXNlIF9pdmVjMzoKLSAgICBjYXNlIF91dmVjMzoKLSAgICAgIGlmIChyZXQtPmFycmF5c2l6ZSkgewotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsCi0gICAgICAgICAgICAoaW50ICopIHJldC0+dmFsdWUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaSAoc2hhZGVyLCByZXQtPm5hbWUsCi0gICAgICAgICAgICAoKGludCAqKSByZXQtPnZhbHVlKVswXSwgKChpbnQgKikgcmV0LT52YWx1ZSlbMV0sCi0gICAgICAgICAgICAoKGludCAqKSByZXQtPnZhbHVlKVsyXSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX3ZlYzQ6Ci0gICAgICBpZiAocmV0LT5hcnJheXNpemUpIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZnYgKHNoYWRlciwgcmV0LT5uYW1lLCByZXQtPmNvdW50LAotICAgICAgICAgICAgKGZsb2F0ICopIHJldC0+dmFsdWUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZiAoc2hhZGVyLCByZXQtPm5hbWUsCi0gICAgICAgICAgICAoKGZsb2F0ICopIHJldC0+dmFsdWUpWzBdLCAoKGZsb2F0ICopIHJldC0+dmFsdWUpWzFdLAotICAgICAgICAgICAgKChmbG9hdCAqKSByZXQtPnZhbHVlKVsyXSwgKChmbG9hdCAqKSByZXQtPnZhbHVlKVszXSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX2J2ZWM0OgotICAgIGNhc2UgX2l2ZWM0OgotICAgIGNhc2UgX3V2ZWM0OgotICAgICAgaWYgKHJldC0+YXJyYXlzaXplKSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGl2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwKLSAgICAgICAgICAgIChpbnQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpIChzaGFkZXIsIHJldC0+bmFtZSwKLSAgICAgICAgICAgICgoaW50ICopIHJldC0+dmFsdWUpWzBdLCAoKGludCAqKSByZXQtPnZhbHVlKVsxXSwKLSAgICAgICAgICAgICgoaW50ICopIHJldC0+dmFsdWUpWzJdLCAoKGludCAqKSByZXQtPnZhbHVlKVszXSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDI6Ci0gICAgY2FzZSBfbWF0MngyOgotICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMmZ2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwgMCwKLSAgICAgICAgICAoZmxvYXQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDM6Ci0gICAgY2FzZSBfbWF0M3gzOgotICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwgMCwKLSAgICAgICAgICAoZmxvYXQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDQ6Ci0gICAgY2FzZSBfbWF0NHg0OgotICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNGZ2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwgMCwKLSAgICAgICAgICAoZmxvYXQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICBicmVhazsKLQotI2lmIEdTVF9HTF9IQVZFX09QRU5HTAotICAgIGNhc2UgX21hdDJ4MzoKLSAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4M2Z2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwgMCwKLSAgICAgICAgICAoZmxvYXQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDN4MjoKLSAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4MmZ2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwgMCwKLSAgICAgICAgICAoZmxvYXQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDJ4NDoKLSAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4NGZ2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwgMCwKLSAgICAgICAgICAoZmxvYXQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDR4MjoKLSAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4MmZ2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwgMCwKLSAgICAgICAgICAoZmxvYXQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDN4NDoKLSAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwgMCwKLSAgICAgICAgICAoZmxvYXQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDR4MzoKLSAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4M2Z2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwgMCwKLSAgICAgICAgICAoZmxvYXQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICBicmVhazsKLSNlbmRpZgotCi0gICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiAtMTsKLSAgfQotICByZXR1cm4gMDsKLX0KLQotLyoKLQlGdW5jdGlvbjoKLQkJcGFyc2V2YWx1ZQotCi0JRGVzY3JpcHRpb246Ci0JCVBhcnNlIHRleHQgY29taW5nIGFmdGVyIHRoZSBhc3NpZ25lbWVudCBvcGVyYXRvciBmb3Igc2NhbGFyCi0JCXZhcmlhYmxlcyBvciBjYWxsIHRoZSBhcHByb3ByaWF0ZSBzdWJyb3V0aW5lIHRvIHBhcnNlIHZlY3RvcgotCQl2YXJpYWJsZXMuCi0KLQlBcmd1bWVudHM6Ci0KLQkJY2hhciAqdmFsdWU6Ci0JCQlUZXh0IHRvIGJlIHBhcnNlZC4KLQotCQljaGFyICpfc2F2ZXB0cjoKLQkJCUluZGV4IG9mIGVuZCBvZiB2YWx1ZS4KLQotCQlzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKnJldDoKLQkJCVRoZSB2YXJpYWJsZSBkZXNjcmlwdGlvbiB0byBiZSBjb21wbGV0ZWQKLQkJCUF0IGlucHV0IHRpbWUgaXQgY29udGFpbnMgdGhlIGRhdGEgdHlwZSBpbmRleCAodHlwZSksCi0JCQl2YXJpYWJsZSBuYW1lIChuYW1lKSBhbmQgYXJyYXkgc2l6ZSAoYXJyYXlzaXplKS4KLQotCXJldHVybiB2YWx1ZXM6Ci0JCSAwOiAJTm8gZXJyb3IuCi0JCSEwOglQb2ludGVyIHRvIHBhcnNlIGVycm9yLgotCi0qLwotCi1jaGFyICoKLXBhcnNldmFsdWUgKGNoYXIgKnZhbHVlLCBjaGFyICpfc2F2ZXB0ciwgc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQpCi17Ci0KLSAgaW50IGksIGo7Ci0gIGNoYXIgKnQ7Ci0gIGNoYXIgKnNhdmVwdHIgPSB2YWx1ZTsKLQotICBzd2l0Y2ggKHJldC0+dHlwZSkgewotICAgIGNhc2UgX2Jvb2w6Ci0gICAgICByZXQtPmNvdW50ID0gKHJldC0+YXJyYXlzaXplKSA/IHJldC0+YXJyYXlzaXplIDogMTsKLSAgICAgIGlmIChyZXQtPmNvdW50ID09IDEpIHsgICAgLy8gbm8gYXJyYXkKLSAgICAgICAgaWYgKHN0cmNtcCAodmFsdWUsICJ0cnVlIikgJiYgc3RyY21wICh2YWx1ZSwgImZhbHNlIikpCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyOwotICAgICAgICByZXQtPnZhbHVlID0gKHZvaWQgKikgZ19tYWxsb2MgKHNpemVvZiAoaW50KSk7Ci0gICAgICAgICgoaW50ICopIHJldC0+dmFsdWUpWzBdID0gc3RyY21wICh2YWx1ZSwgImZhbHNlIik7Ci0KLSAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgLy8gYXJyYXkKLSAgICAgICAgcmV0LT52YWx1ZSA9IGdfbWFsbG9jIChzaXplb2YgKGludCAqKSAqIHJldC0+Y291bnQpOwotICAgICAgICB0ID0gc3RydG9rX3IgKHZhbHVlLCAiLCIsICZzYXZlcHRyKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHJldC0+Y291bnQ7ICsraSkgewotICAgICAgICAgIGlmICghdCkKLSAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdmFsdWUpOwotICAgICAgICAgIHRyaW1sZWZ0ICh0LCAiIFx0Iik7Ci0gICAgICAgICAgdHJpbXJpZ2h0ICh0LCAiIFx0Iik7Ci0gICAgICAgICAgaWYgKHN0cmNtcCAodCwgInRydWUiKSAmJiBzdHJjbXAgKHQsICJmYWxzZSIpKQotICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB0KTsKLSAgICAgICAgICAoKGludCAqKSByZXQtPnZhbHVlKVtpXSA9IHN0cmNtcCAodCwgImZhbHNlIik7Ci0gICAgICAgICAgdCA9IHN0cnRva19yICgwLCAiLCIsICZzYXZlcHRyKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBfaW50OgotICAgICAgcmV0LT5jb3VudCA9IChyZXQtPmFycmF5c2l6ZSkgPyByZXQtPmFycmF5c2l6ZSA6IDE7Ci0gICAgICBpZiAocmV0LT5jb3VudCA9PSAxKSB7Ci0gICAgICAgIGZvciAoaiA9IDA7IGogPCAoZ2ludCkgc3RybGVuICh2YWx1ZSk7ICsraikgewotICAgICAgICAgIGlmICghc3RyY2hyICgiLTAxMjM0NTY3ODkiLCB2YWx1ZVtqXSkpCi0gICAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyBqOwotICAgICAgICB9Ci0gICAgICAgIHJldC0+dmFsdWUgPSAodm9pZCAqKSBnX21hbGxvYyAoc2l6ZW9mIChpbnQpKTsKLSAgICAgICAgKigoaW50ICopIHJldC0+dmFsdWUpID0gYXRvaSAodmFsdWUpOwotCi0gICAgICB9IGVsc2UgewotICAgICAgICByZXQtPnZhbHVlID0gZ19tYWxsb2MgKHNpemVvZiAoaW50KSAqIHJldC0+Y291bnQpOwotICAgICAgICB0ID0gc3RydG9rX3IgKHZhbHVlLCAiLCIsICZzYXZlcHRyKTsKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcmV0LT5jb3VudDsgKytpKSB7Ci0KLSAgICAgICAgICBpZiAoIXQpCi0gICAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHZhbHVlKTsKLQotICAgICAgICAgIHRyaW1sZWZ0ICh0LCAiIFx0Iik7Ci0gICAgICAgICAgdHJpbXJpZ2h0ICh0LCAiIFx0Iik7Ci0gICAgICAgICAgaWYgKCF0WzBdKQotICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB0KTsKLQotICAgICAgICAgIGZvciAoaiA9IDA7IGogPCAoZ2ludCkgc3RybGVuICh2YWx1ZSk7ICsraikgewotICAgICAgICAgICAgaWYgKCFzdHJjaHIgKCItMDEyMzQ1Njc4OSIsIHZhbHVlW2pdKSkKLSAgICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB0KSArIGo7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgKChpbnQgKikgcmV0LT52YWx1ZSlbaV0gPSBhdG9pICh0KTsKLSAgICAgICAgICB0ID0gc3RydG9rX3IgKDAsICIsIiwgJnNhdmVwdHIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX3VpbnQ6Ci0gICAgICByZXQtPmNvdW50ID0gKHJldC0+YXJyYXlzaXplKSA/IHJldC0+YXJyYXlzaXplIDogMTsKLSAgICAgIGlmIChyZXQtPmNvdW50ID09IDEpIHsKLSAgICAgICAgZm9yIChqID0gMDsgaiA8IChnaW50KSBzdHJsZW4gKHZhbHVlKTsgKytqKSB7Ci0gICAgICAgICAgaWYgKCFzdHJjaHIgKCIwMTIzNDU2Nzg5IiwgdmFsdWVbal0pKQotICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgajsKLSAgICAgICAgfQotICAgICAgICByZXQtPnZhbHVlID0gKHZvaWQgKikgZ19tYWxsb2MgKHNpemVvZiAodW5zaWduZWQgaW50KSk7Ci0gICAgICAgICooKHVuc2lnbmVkIGludCAqKSByZXQtPnZhbHVlKSA9IGF0b2kgKHZhbHVlKTsKLQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0LT52YWx1ZSA9IGdfbWFsbG9jIChzaXplb2YgKHVuc2lnbmVkIGludCkgKiByZXQtPmNvdW50KTsKLSAgICAgICAgdCA9IHN0cnRva19yICh2YWx1ZSwgIiwiLCAmc2F2ZXB0cik7Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHJldC0+Y291bnQ7ICsraSkgewotCi0gICAgICAgICAgaWYgKCF0KQotICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB2YWx1ZSk7Ci0KLSAgICAgICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotICAgICAgICAgIGlmICghdFswXSkKLSAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCk7Ci0KLSAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodmFsdWUpOyArK2opIHsKLSAgICAgICAgICAgIGlmICghc3RyY2hyICgiMDEyMzQ1Njc4OSIsIHZhbHVlW2pdKSkKLSAgICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB0KSArIGo7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgKCh1bnNpZ25lZCBpbnQgKikgcmV0LT52YWx1ZSlbaV0gPSBhdG9pICh0KTsKLSAgICAgICAgICB0ID0gc3RydG9rX3IgKDAsICIsIiwgJnNhdmVwdHIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX2Zsb2F0OgotICAgICAgcmV0LT5jb3VudCA9IChyZXQtPmFycmF5c2l6ZSkgPyByZXQtPmFycmF5c2l6ZSA6IDE7Ci0gICAgICBpZiAocmV0LT5jb3VudCA9PSAxKSB7Ci0gICAgICAgIGZvciAoaiA9IDA7IGogPCAoZ2ludCkgc3RybGVuICh2YWx1ZSk7ICsraikgewotICAgICAgICAgIGlmICghc3RyY2hyICgiMDEyMzQ1Njc4OS4tIiwgdmFsdWVbal0pKQotICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgajsKLSAgICAgICAgfQotICAgICAgICByZXQtPnZhbHVlID0gKHZvaWQgKikgZ19tYWxsb2MgKHNpemVvZiAoZmxvYXQpKTsKLSAgICAgICAgKigoZmxvYXQgKikgcmV0LT52YWx1ZSkgPSAoZmxvYXQpIGdfYXNjaWlfc3RydG9kICh2YWx1ZSwgTlVMTCk7Ci0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldC0+dmFsdWUgPSBnX21hbGxvYyAoc2l6ZW9mIChmbG9hdCkgKiByZXQtPmNvdW50KTsKLSAgICAgICAgdCA9IHN0cnRva19yICh2YWx1ZSwgIiwiLCAmc2F2ZXB0cik7Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHJldC0+Y291bnQ7ICsraSkgewotCi0gICAgICAgICAgaWYgKCF0KQotICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB2YWx1ZSk7Ci0KLSAgICAgICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotICAgICAgICAgIGlmICghdFswXSkKLSAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCk7Ci0KLSAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodmFsdWUpOyArK2opIHsKLSAgICAgICAgICAgIGlmICghc3RyY2hyICgiMDEyMzQ1Njc4OS4tIiwgdmFsdWVbal0pKQotICAgICAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHQpICsgajsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAoKGZsb2F0ICopIHJldC0+dmFsdWUpW2ldID0gKGZsb2F0KSBnX2FzY2lpX3N0cnRvZCAodCwgTlVMTCk7Ci0gICAgICAgICAgdCA9IHN0cnRva19yICgwLCAiLCIsICZzYXZlcHRyKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF92ZWMyOgotICAgICAgcmV0dXJuIHZlY19wYXJzZXZhbHVlICgyLCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX2J2ZWMyOgotICAgICAgcmV0dXJuIGJ2ZWNfcGFyc2V2YWx1ZSAoMiwgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9pdmVjMjoKLSAgICAgIHJldHVybiBpdmVjX3BhcnNldmFsdWUgKDIsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfdXZlYzI6Ci0gICAgICByZXR1cm4gdXZlY19wYXJzZXZhbHVlICgyLCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX3ZlYzM6Ci0gICAgICByZXR1cm4gdmVjX3BhcnNldmFsdWUgKDMsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfYnZlYzM6Ci0gICAgICByZXR1cm4gYnZlY19wYXJzZXZhbHVlICgzLCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX2l2ZWMzOgotICAgICAgcmV0dXJuIHV2ZWNfcGFyc2V2YWx1ZSAoMywgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF91dmVjMzoKLSAgICAgIHJldHVybiB1dmVjX3BhcnNldmFsdWUgKDMsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfdmVjNDoKLSAgICAgIHJldHVybiB2ZWNfcGFyc2V2YWx1ZSAoNCwgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9idmVjNDoKLSAgICAgIHJldHVybiBidmVjX3BhcnNldmFsdWUgKDQsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfaXZlYzQ6Ci0gICAgICByZXR1cm4gaXZlY19wYXJzZXZhbHVlICg0LCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX3V2ZWM0OgotICAgICAgcmV0dXJuIHV2ZWNfcGFyc2V2YWx1ZSAoNCwgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQyOgotICAgIGNhc2UgX21hdDJ4MjoKLSAgICAgIHJldHVybiBtYXRfcGFyc2V2YWx1ZSAoMiwgMiwgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQyeDM6Ci0gICAgICByZXR1cm4gbWF0X3BhcnNldmFsdWUgKDIsIDMsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfbWF0M3gyOgotICAgICAgcmV0dXJuIG1hdF9wYXJzZXZhbHVlICgzLCAyLCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDJ4NDoKLSAgICAgIHJldHVybiBtYXRfcGFyc2V2YWx1ZSAoMiwgNCwgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQ0eDI6Ci0gICAgICByZXR1cm4gbWF0X3BhcnNldmFsdWUgKDQsIDIsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfbWF0MzoKLSAgICBjYXNlIF9tYXQzeDM6Ci0gICAgICByZXR1cm4gbWF0X3BhcnNldmFsdWUgKDMsIDMsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfbWF0M3g0OgotICAgICAgcmV0dXJuIG1hdF9wYXJzZXZhbHVlICgzLCA0LCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDR4MzoKLSAgICAgIHJldHVybiBtYXRfcGFyc2V2YWx1ZSAoNCwgMywgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQ0OgotICAgIGNhc2UgX21hdDR4NDoKLSAgICAgIHJldHVybiBtYXRfcGFyc2V2YWx1ZSAoNCwgNCwgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLSAgcmV0dXJuIDA7Ci19Ci0KLS8qCi0JRnVuY3Rpb246Ci0JCXZlY19wYXJzZXZhbHVlCi0KLQlEZXNjcmlwdGlvbjoKLQkJUGFyc2UgdGV4dCBjb21pbmcgYWZ0ZXIgdGhlIGFzc2lnbmVtZW50IG9wZXJhdG9yIGZvciB2ZWMKLQkJdHlwZSB2YXJpYWJsZXMuCi0KLQlBcmd1bWVudHM6Ci0KLQkJaW50IG47Ci0JCQlWZWN0b3IgZGltZW5zaW9uLgotCi0JCWNoYXIgKnZhbHVlOgotCQkJVGV4dCB0byBiZSBwYXJzZWQuCi0KLQkJY2hhciAqX3NhdmVwdHI6Ci0JCQlJbmRleCBvZiBlbmQgb2YgdmFsdWUuCi0KLQkJc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQ6Ci0JCQlUaGUgdmFyaWFibGUgZGVzY3JpcHRpb24gdG8gYmUgY29tcGxldGVkCi0JCQlBdCBpbnB1dCB0aW1lIGl0IGNvbnRhaW5zIHRoZSBkYXRhIHR5cGUgaW5kZXggKHR5cGUpLAotCQkJdmFyaWFibGUgbmFtZSAobmFtZSkgYW5kIGFycmF5IHNpemUgKGFycmF5c2l6ZSkuCi0KLQlyZXR1cm4gdmFsdWVzOgotCQkgMDogCU5vIGVycm9yLgotCQkhMDoJUG9pbnRlciB0byBwYXJzZSBlcnJvci4KLQotKi8KLQotY2hhciAqCi12ZWNfcGFyc2V2YWx1ZSAoaW50IG4sIGNoYXIgKnZhbHVlLCBjaGFyICpfc2F2ZXB0ciwKLSAgICBzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKnJldCkKLXsKLQotICBpbnQgaTsKLSAgaW50IGo7Ci0gIGludCBrOwotICBjaGFyICpzYXZlcHRyID0gdmFsdWU7Ci0gIGNoYXIgKnNhdmVwdHIyOwotICBjaGFyICp0OwotICBjaGFyICp1OwotCi0gIHJldC0+Y291bnQgPSAocmV0LT5hcnJheXNpemUpID8gcmV0LT5hcnJheXNpemUgKiBuIDogbjsKLSAgcmV0LT52YWx1ZSA9IGdfbWFsbG9jIChzaXplb2YgKGZsb2F0KSAqIHJldC0+Y291bnQpOwotCi0gIGlmICghcmV0LT5hcnJheXNpemUpIHsKLSAgICB0ID0gc3RydG9rX3IgKHZhbHVlLCAiLCIsICZzYXZlcHRyKTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCByZXQtPmNvdW50OyArK2kpIHsKLQotICAgICAgaWYgKCF0KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHZhbHVlKTsKLQotICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotICAgICAgaWYgKCF0WzBdKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHQpOwotCi0gICAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodmFsdWUpOyArK2opIHsKLSAgICAgICAgaWYgKCFzdHJjaHIgKCIwMTIzNDU2Nzg5Li0iLCB2YWx1ZVtqXSkpCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB0KSArIGo7Ci0gICAgICB9Ci0KLSAgICAgICgoZmxvYXQgKikgcmV0LT52YWx1ZSlbaV0gPSAoZmxvYXQpIGdfYXNjaWlfc3RydG9kICh0LCBOVUxMKTsKLSAgICAgIHQgPSBzdHJ0b2tfciAoMCwgIiwiLCAmc2F2ZXB0cik7Ci0gICAgfQotCi0gIH0gZWxzZSB7Ci0KLSAgICBzYXZlcHRyMiA9IHZhbHVlOwotICAgIHUgPSBzdHJ0b2tfciAodmFsdWUsICIpIiwgJnNhdmVwdHIyKTsKLQotICAgIGZvciAoayA9IDA7IGsgPCByZXQtPmFycmF5c2l6ZTsgKytrKSB7Ci0KLSAgICAgIGlmICghdSkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIyIC0gdmFsdWUpOwotCi0gICAgICB0cmltbGVmdCAodSwgIiBcdCIpOwotICAgICAgdHJpbXJpZ2h0ICh1LCAiIFx0Iik7Ci0KLSAgICAgIGlmIChrKSB7Ci0gICAgICAgIGlmICh1WzBdICE9ICcsJykKLSAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLSAgICAgICAgKyt1OwotICAgICAgICB0cmltbGVmdCAodSwgIiBcdCIpOwotICAgICAgfQotCi0gICAgICBpZiAoc3RybmNtcCAodSwgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2RhdGF0eXBlW3JldC0+dHlwZV0sCi0gICAgICAgICAgICAgIHN0cmxlbiAoZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2RhdGF0eXBlW3JldC0+dHlwZV0pKSkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHUgLSB2YWx1ZSk7Ci0KLSAgICAgIHUgKz0gc3RybGVuIChnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbcmV0LT50eXBlXSk7Ci0gICAgICB0cmltbGVmdCAodSwgIiBcdCIpOwotICAgICAgaWYgKHVbMF0gIT0gJygnKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLSAgICAgICsrdTsKLQotICAgICAgdCA9IHN0cnRva19yICh1LCAiLCIsICZzYXZlcHRyKTsKLSAgICAgIGlmICghdCkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHUgLSB2YWx1ZSk7Ci0KLSAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKLQotICAgICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgICB0cmltcmlnaHQgKHQsICIgXHQiKTsKLSAgICAgICAgaWYgKCF0WzBdKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh0IC0gdmFsdWUpOwotCi0gICAgICAgIGZvciAoaiA9IDA7IGogPCAoZ2ludCkgc3RybGVuICh0KTsgKytqKSB7Ci0gICAgICAgICAgaWYgKCFzdHJjaHIgKCIwMTIzNDU2Nzg5Li0iLCB0W2pdKSkKLSAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh0IC0gdmFsdWUpICsgajsKLSAgICAgICAgfQotCi0gICAgICAgICgoZmxvYXQgKikgcmV0LT52YWx1ZSlbayAqIG4gKyBpXSA9IChmbG9hdCkgZ19hc2NpaV9zdHJ0b2QgKHQsIE5VTEwpOwotICAgICAgICB0ID0gc3RydG9rX3IgKDAsICIsIiwgJnNhdmVwdHIpOwotICAgICAgICBpZiAoaSA8IChuIC0gMSkgJiYgIXQpCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB2YWx1ZSk7Ci0KLSAgICAgIH0KLSAgICAgIHUgPSBzdHJ0b2tfciAoMCwgIikiLCAmc2F2ZXB0cjIpOwotICAgIH0KLSAgfQotICByZXR1cm4gMDsKLX0KLQotLyoKLQlGdW5jdGlvbjoKLQkJYnZlY19wYXJzZXZhbHVlCi0KLQlEZXNjcmlwdGlvbjoKLQkJUGFyc2UgdGV4dCBjb21pbmcgYWZ0ZXIgdGhlIGFzc2lnbmVtZW50IG9wZXJhdG9yIGZvciBidmVjCi0JCXR5cGUgdmFyaWFibGVzLgotCi0JQXJndW1lbnRzOgotCi0JCWludCBuOwotCQkJVmVjdG9yIGRpbWVuc2lvbi4KLQotCQljaGFyICp2YWx1ZToKLQkJCVRleHQgdG8gYmUgcGFyc2VkLgotCi0JCWNoYXIgKl9zYXZlcHRyOgotCQkJSW5kZXggb2YgZW5kIG9mIHZhbHVlLgotCi0JCXN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0OgotCQkJVGhlIHZhcmlhYmxlIGRlc2NyaXB0aW9uIHRvIGJlIGNvbXBsZXRlZAotCQkJQXQgaW5wdXQgdGltZSBpdCBjb250YWlucyB0aGUgZGF0YSB0eXBlIGluZGV4ICh0eXBlKSwKLQkJCXZhcmlhYmxlIG5hbWUgKG5hbWUpIGFuZCBhcnJheSBzaXplIChhcnJheXNpemUpLgotCi0JcmV0dXJuIHZhbHVlczoKLQkJIDA6IAlObyBlcnJvci4KLQkJITA6CVBvaW50ZXIgdG8gcGFyc2UgZXJyb3IuCi0KLSovCi0KLWNoYXIgKgotYnZlY19wYXJzZXZhbHVlIChpbnQgbiwgY2hhciAqdmFsdWUsIGNoYXIgKl9zYXZlcHRyLAotICAgIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0KQotewotCi0gIGludCBpOwotICBpbnQgazsKLSAgY2hhciAqc2F2ZXB0ciA9IHZhbHVlOwotICBjaGFyICpzYXZlcHRyMjsKLSAgY2hhciAqdDsKLSAgY2hhciAqdTsKLQotICByZXQtPmNvdW50ID0gKHJldC0+YXJyYXlzaXplKSA/IHJldC0+YXJyYXlzaXplICogbiA6IG47Ci0gIHJldC0+dmFsdWUgPSBnX21hbGxvYyAoc2l6ZW9mIChjaGFyICoqKSAqIHJldC0+Y291bnQpOwotCi0gIGlmICghcmV0LT5hcnJheXNpemUpIHsKLSAgICB0ID0gc3RydG9rX3IgKHZhbHVlLCAiLCIsICZzYXZlcHRyKTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCByZXQtPmNvdW50OyArK2kpIHsKLQotICAgICAgaWYgKCF0KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHZhbHVlKTsKLQotICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotICAgICAgaWYgKCF0WzBdKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHQpOwotCi0gICAgICBpZiAoc3RyY21wICgidHJ1ZSIsIHZhbHVlKSB8fCBzdHJjbXAgKCJmYWxzZSIsIHZhbHVlKSkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB0KTsKLQotICAgICAgKChpbnQgKikgcmV0LT52YWx1ZSlbaV0gPSBzdHJjbXAgKHQsICJmYWxzZSIpOwotICAgICAgdCA9IHN0cnRva19yICgwLCAiLCIsICZzYXZlcHRyKTsKLSAgICB9Ci0KLSAgfSBlbHNlIHsKLQotICAgIHNhdmVwdHIyID0gdmFsdWU7Ci0gICAgdSA9IHN0cnRva19yICh2YWx1ZSwgIikiLCAmc2F2ZXB0cjIpOwotCi0gICAgZm9yIChrID0gMDsgayA8IHJldC0+YXJyYXlzaXplOyArK2spIHsKLQotICAgICAgaWYgKCF1KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0cjIgLSB2YWx1ZSk7Ci0KLSAgICAgIHRyaW1sZWZ0ICh1LCAiIFx0Iik7Ci0gICAgICB0cmltcmlnaHQgKHUsICIgXHQiKTsKLQotICAgICAgaWYgKGspIHsKLSAgICAgICAgaWYgKHVbMF0gIT0gJywnKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh1IC0gdmFsdWUpOwotICAgICAgICArK3U7Ci0gICAgICAgIHRyaW1sZWZ0ICh1LCAiIFx0Iik7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChzdHJuY21wICh1LCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbcmV0LT50eXBlXSwKLSAgICAgICAgICAgICAgc3RybGVuIChnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbcmV0LT50eXBlXSkpKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLQotICAgICAgdSArPSBzdHJsZW4gKGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kYXRhdHlwZVtyZXQtPnR5cGVdKTsKLSAgICAgIHRyaW1sZWZ0ICh1LCAiIFx0Iik7Ci0gICAgICBpZiAodVswXSAhPSAnKCcpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh1IC0gdmFsdWUpOwotICAgICAgKyt1OwotCi0gICAgICB0ID0gc3RydG9rX3IgKHUsICIsIiwgJnNhdmVwdHIpOwotICAgICAgaWYgKCF0KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLQotICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgewotCi0gICAgICAgIHRyaW1sZWZ0ICh0LCAiIFx0Iik7Ci0gICAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotICAgICAgICBpZiAoIXRbMF0pCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHQgLSB2YWx1ZSk7Ci0KLSAgICAgICAgaWYgKHN0cmNtcCAoInRydWUiLCB0KSB8fCBzdHJjbXAgKCJmYWxzZSIsIHQpKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCk7Ci0KLSAgICAgICAgKChpbnQgKikgcmV0LT52YWx1ZSlbayAqIG4gKyBpXSA9IHN0cmNtcCAodCwgImZhbHNlIik7Ci0gICAgICAgIHQgPSBzdHJ0b2tfciAoMCwgIiwiLCAmc2F2ZXB0cik7Ci0gICAgICAgIGlmIChpIDwgKG4gLSAxKSAmJiAhdCkKLSAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHZhbHVlKTsKLQotICAgICAgfQotICAgICAgdSA9IHN0cnRva19yICgwLCAiKSIsICZzYXZlcHRyMik7Ci0gICAgfQotICB9Ci0gIHJldHVybiAwOwotfQotCi0vKgotCUZ1bmN0aW9uOgotCQlpdmVjX3BhcnNldmFsdWUKLQotCURlc2NyaXB0aW9uOgotCQlQYXJzZSB0ZXh0IGNvbWluZyBhZnRlciB0aGUgYXNzaWduZW1lbnQgb3BlcmF0b3IgZm9yIGl2ZWMKLQkJdHlwZSB2YXJpYWJsZXMuCi0KLQlBcmd1bWVudHM6Ci0KLQkJaW50IG47Ci0JCQlWZWN0b3IgZGltZW5zaW9uLgotCi0JCWNoYXIgKnZhbHVlOgotCQkJVGV4dCB0byBiZSBwYXJzZWQuCi0KLQkJY2hhciAqX3NhdmVwdHI6Ci0JCQlJbmRleCBvZiBlbmQgb2YgdmFsdWUuCi0KLQkJc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQ6Ci0JCQlUaGUgdmFyaWFibGUgZGVzY3JpcHRpb24gdG8gYmUgY29tcGxldGVkCi0JCQlBdCBpbnB1dCB0aW1lIGl0IGNvbnRhaW5zIHRoZSBkYXRhIHR5cGUgaW5kZXggKHR5cGUpLAotCQkJdmFyaWFibGUgbmFtZSAobmFtZSkgYW5kIGFycmF5IHNpemUgKGFycmF5c2l6ZSkuCi0KLQlyZXR1cm4gdmFsdWVzOgotCQkgMDogCU5vIGVycm9yLgotCQkhMDoJUG9pbnRlciB0byBwYXJzZSBlcnJvci4KLQotKi8KLQotY2hhciAqCi1pdmVjX3BhcnNldmFsdWUgKGludCBuLCBjaGFyICp2YWx1ZSwgY2hhciAqX3NhdmVwdHIsCi0gICAgc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQpCi17Ci0KLSAgaW50IGk7Ci0gIGludCBqOwotICBpbnQgazsKLSAgY2hhciAqc2F2ZXB0ciA9IHZhbHVlOwotICBjaGFyICpzYXZlcHRyMjsKLSAgY2hhciAqdDsKLSAgY2hhciAqdTsKLQotICByZXQtPmNvdW50ID0gKHJldC0+YXJyYXlzaXplKSA/IHJldC0+YXJyYXlzaXplICogbiA6IG47Ci0gIHJldC0+dmFsdWUgPSBnX21hbGxvYyAoc2l6ZW9mIChpbnQpICogcmV0LT5jb3VudCk7Ci0KLSAgaWYgKCFyZXQtPmFycmF5c2l6ZSkgewotICAgIHQgPSBzdHJ0b2tfciAodmFsdWUsICIsIiwgJnNhdmVwdHIpOwotCi0gICAgZm9yIChpID0gMDsgaSA8IHJldC0+Y291bnQ7ICsraSkgewotCi0gICAgICBpZiAoIXQpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdmFsdWUpOwotCi0gICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgdHJpbXJpZ2h0ICh0LCAiIFx0Iik7Ci0gICAgICBpZiAoIXRbMF0pCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCk7Ci0KLSAgICAgIGZvciAoaiA9IDA7IGogPCAoZ2ludCkgc3RybGVuICh2YWx1ZSk7ICsraikgewotICAgICAgICBpZiAoIXN0cmNociAoIjAxMjM0NTY3ODktIiwgdmFsdWVbal0pKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCkgKyBqOwotICAgICAgfQotCi0gICAgICAoKGludCAqKSByZXQtPnZhbHVlKVtpXSA9IGF0b2kgKHQpOwotICAgICAgdCA9IHN0cnRva19yICgwLCAiLCIsICZzYXZlcHRyKTsKLSAgICB9Ci0KLSAgfSBlbHNlIHsKLQotICAgIHNhdmVwdHIyID0gdmFsdWU7Ci0gICAgdSA9IHN0cnRva19yICh2YWx1ZSwgIikiLCAmc2F2ZXB0cjIpOwotCi0gICAgZm9yIChrID0gMDsgayA8IHJldC0+YXJyYXlzaXplOyArK2spIHsKLQotICAgICAgaWYgKCF1KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0cjIgLSB2YWx1ZSk7Ci0KLSAgICAgIHRyaW1sZWZ0ICh1LCAiIFx0Iik7Ci0gICAgICB0cmltcmlnaHQgKHUsICIgXHQiKTsKLQotICAgICAgaWYgKGspIHsKLSAgICAgICAgaWYgKHVbMF0gIT0gJywnKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh1IC0gdmFsdWUpOwotICAgICAgICArK3U7Ci0gICAgICAgIHRyaW1sZWZ0ICh1LCAiIFx0Iik7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChzdHJuY21wICh1LCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbcmV0LT50eXBlXSwKLSAgICAgICAgICAgICAgc3RybGVuIChnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbcmV0LT50eXBlXSkpKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLQotICAgICAgdSArPSBzdHJsZW4gKGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kYXRhdHlwZVtyZXQtPnR5cGVdKTsKLSAgICAgIHRyaW1sZWZ0ICh1LCAiIFx0Iik7Ci0gICAgICBpZiAodVswXSAhPSAnKCcpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh1IC0gdmFsdWUpOwotICAgICAgKyt1OwotCi0gICAgICB0ID0gc3RydG9rX3IgKHUsICIsIiwgJnNhdmVwdHIpOwotICAgICAgaWYgKCF0KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLQotICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgewotCi0gICAgICAgIHRyaW1sZWZ0ICh0LCAiIFx0Iik7Ci0gICAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotICAgICAgICBpZiAoIXRbMF0pCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHQgLSB2YWx1ZSk7Ci0KLSAgICAgICAgZm9yIChqID0gMDsgaiA8IChnaW50KSBzdHJsZW4gKHQpOyArK2opIHsKLSAgICAgICAgICBpZiAoIXN0cmNociAoIjAxMjM0NTY3ODktIiwgdFtqXSkpCi0gICAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodCAtIHZhbHVlKSArIGo7Ci0gICAgICAgIH0KLQotICAgICAgICAoKGludCAqKSByZXQtPnZhbHVlKVtrICogbiArIGldID0gYXRvaSAodCk7Ci0gICAgICAgIHQgPSBzdHJ0b2tfciAoMCwgIiwiLCAmc2F2ZXB0cik7Ci0gICAgICAgIGlmIChpIDwgKG4gLSAxKSAmJiAhdCkKLSAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHZhbHVlKTsKLQotICAgICAgfQotICAgICAgdSA9IHN0cnRva19yICgwLCAiKSIsICZzYXZlcHRyMik7Ci0gICAgfQotICB9Ci0gIHJldHVybiAwOwotfQotCi0vKgotCUZ1bmN0aW9uOgotCQl1dmVjX3BhcnNldmFsdWUKLQotCURlc2NyaXB0aW9uOgotCQlQYXJzZSB0ZXh0IGNvbWluZyBhZnRlciB0aGUgYXNzaWduZW1lbnQgb3BlcmF0b3IgZm9yIHV2ZWMKLQkJdHlwZSB2YXJpYWJsZXMuCi0KLQlBcmd1bWVudHM6Ci0KLQkJaW50IG47Ci0JCQlWZWN0b3IgZGltZW5zaW9uLgotCi0JCWNoYXIgKnZhbHVlOgotCQkJVGV4dCB0byBiZSBwYXJzZWQuCi0KLQkJY2hhciAqX3NhdmVwdHI6Ci0JCQlJbmRleCBvZiBlbmQgb2YgdmFsdWUuCi0KLQkJc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQ6Ci0JCQlUaGUgdmFyaWFibGUgZGVzY3JpcHRpb24gdG8gYmUgY29tcGxldGVkCi0JCQlBdCBpbnB1dCB0aW1lIGl0IGNvbnRhaW5zIHRoZSBkYXRhIHR5cGUgaW5kZXggKHR5cGUpLAotCQkJdmFyaWFibGUgbmFtZSAobmFtZSkgYW5kIGFycmF5IHNpemUgKGFycmF5c2l6ZSkuCi0KLQlyZXR1cm4gdmFsdWVzOgotCQkgMDogCU5vIGVycm9yLgotCQkhMDoJUG9pbnRlciB0byBwYXJzZSBlcnJvci4KLQotKi8KLQotY2hhciAqCi11dmVjX3BhcnNldmFsdWUgKGludCBuLCBjaGFyICp2YWx1ZSwgY2hhciAqX3NhdmVwdHIsCi0gICAgc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQpCi17Ci0KLSAgaW50IGk7Ci0gIGludCBqOwotICBpbnQgazsKLSAgY2hhciAqc2F2ZXB0ciA9IHZhbHVlOwotICBjaGFyICpzYXZlcHRyMjsKLSAgY2hhciAqdDsKLSAgY2hhciAqdTsKLQotICByZXQtPmNvdW50ID0gKHJldC0+YXJyYXlzaXplKSA/IHJldC0+YXJyYXlzaXplICogbiA6IG47Ci0gIHJldC0+dmFsdWUgPSBnX21hbGxvYyAoc2l6ZW9mICh1bnNpZ25lZCBpbnQpICogcmV0LT5jb3VudCk7Ci0KLSAgaWYgKCFyZXQtPmFycmF5c2l6ZSkgewotICAgIHQgPSBzdHJ0b2tfciAodmFsdWUsICIsIiwgJnNhdmVwdHIpOwotCi0gICAgZm9yIChpID0gMDsgaSA8IHJldC0+Y291bnQ7ICsraSkgewotCi0gICAgICBpZiAoIXQpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdmFsdWUpOwotCi0gICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgdHJpbXJpZ2h0ICh0LCAiIFx0Iik7Ci0gICAgICBpZiAoIXRbMF0pCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCk7Ci0KLSAgICAgIGZvciAoaiA9IDA7IGogPCAoZ2ludCkgc3RybGVuICh2YWx1ZSk7ICsraikgewotICAgICAgICBpZiAoIXN0cmNociAoIjAxMjM0NTY3ODkiLCB2YWx1ZVtqXSkpCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB0KSArIGo7Ci0gICAgICB9Ci0KLSAgICAgICgodW5zaWduZWQgaW50ICopIHJldC0+dmFsdWUpW2ldID0gYXRvaSAodCk7Ci0gICAgICB0ID0gc3RydG9rX3IgKDAsICIsIiwgJnNhdmVwdHIpOwotICAgIH0KLQotICB9IGVsc2UgewotCi0gICAgc2F2ZXB0cjIgPSB2YWx1ZTsKLSAgICB1ID0gc3RydG9rX3IgKHZhbHVlLCAiKSIsICZzYXZlcHRyMik7Ci0KLSAgICBmb3IgKGsgPSAwOyBrIDwgcmV0LT5hcnJheXNpemU7ICsraykgewotCi0gICAgICBpZiAoIXUpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyMiAtIHZhbHVlKTsKLQotICAgICAgdHJpbWxlZnQgKHUsICIgXHQiKTsKLSAgICAgIHRyaW1yaWdodCAodSwgIiBcdCIpOwotCi0gICAgICBpZiAoaykgewotICAgICAgICBpZiAodVswXSAhPSAnLCcpCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHUgLSB2YWx1ZSk7Ci0gICAgICAgICsrdTsKLSAgICAgICAgdHJpbWxlZnQgKHUsICIgXHQiKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHN0cm5jbXAgKHUsIGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kYXRhdHlwZVtyZXQtPnR5cGVdLAotICAgICAgICAgICAgICBzdHJsZW4gKGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kYXRhdHlwZVtyZXQtPnR5cGVdKSkpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh1IC0gdmFsdWUpOwotCi0gICAgICB1ICs9IHN0cmxlbiAoZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2RhdGF0eXBlW3JldC0+dHlwZV0pOwotICAgICAgdHJpbWxlZnQgKHUsICIgXHQiKTsKLSAgICAgIGlmICh1WzBdICE9ICcoJykKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHUgLSB2YWx1ZSk7Ci0gICAgICArK3U7Ci0KLSAgICAgIHQgPSBzdHJ0b2tfciAodSwgIiwiLCAmc2F2ZXB0cik7Ci0gICAgICBpZiAoIXQpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh1IC0gdmFsdWUpOwotCi0gICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0KLSAgICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgICAgdHJpbXJpZ2h0ICh0LCAiIFx0Iik7Ci0gICAgICAgIGlmICghdFswXSkKLSAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodCAtIHZhbHVlKTsKLQotICAgICAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodCk7ICsraikgewotICAgICAgICAgIGlmICghc3RyY2hyICgiMDEyMzQ1Njc4OSIsIHRbal0pKQotICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHQgLSB2YWx1ZSkgKyBqOwotICAgICAgICB9Ci0KLSAgICAgICAgKCh1bnNpZ25lZCBpbnQgKikgcmV0LT52YWx1ZSlbayAqIG4gKyBpXSA9IGF0b2kgKHQpOwotICAgICAgICB0ID0gc3RydG9rX3IgKDAsICIsIiwgJnNhdmVwdHIpOwotICAgICAgICBpZiAoaSA8IChuIC0gMSkgJiYgIXQpCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB2YWx1ZSk7Ci0KLSAgICAgIH0KLSAgICAgIHUgPSBzdHJ0b2tfciAoMCwgIikiLCAmc2F2ZXB0cjIpOwotICAgIH0KLSAgfQotICByZXR1cm4gMDsKLX0KLQotLyoKLQlGdW5jdGlvbjoKLQkJbWF0X3BhcnNldmFsdWUKLQotCURlc2NyaXB0aW9uOgotCQlQYXJzZSB0ZXh0IGNvbWluZyBhZnRlciB0aGUgYXNzaWduZW1lbnQgb3BlcmF0b3IgZm9yIG1hdHJpeAotCQl0eXBlIHZhcmlhYmxlcy4KLQotCUFyZ3VtZW50czoKLQotCQlpbnQgbixtOwotCQkJTWF0cml4IGRpbWVuc2lvbnMuCi0KLQkJY2hhciAqdmFsdWU6Ci0JCQlUZXh0IHRvIGJlIHBhcnNlZC4KLQotCQljaGFyICpfc2F2ZXB0cjoKLQkJCUluZGV4IG9mIGVuZCBvZiB2YWx1ZS4KLQotCQlzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKnJldDoKLQkJCVRoZSB2YXJpYWJsZSBkZXNjcmlwdGlvbiB0byBiZSBjb21wbGV0ZWQKLQkJCUF0IGlucHV0IHRpbWUgaXQgY29udGFpbnMgdGhlIGRhdGEgdHlwZSBpbmRleCAodHlwZSksCi0JCQl2YXJpYWJsZSBuYW1lIChuYW1lKSBhbmQgYXJyYXkgc2l6ZSAoYXJyYXlzaXplKS4KLQotCXJldHVybiB2YWx1ZXM6Ci0JCSAwOiAJTm8gZXJyb3IuCi0JCSEwOglQb2ludGVyIHRvIHBhcnNlIGVycm9yLgotCi0qLwotCi1jaGFyICoKLW1hdF9wYXJzZXZhbHVlIChpbnQgbiwgaW50IG0sIGNoYXIgKnZhbHVlLCBjaGFyICpfc2F2ZXB0ciwKLSAgICBzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKnJldCkKLXsKLQotICBpbnQgaTsKLSAgaW50IGo7Ci0gIGludCBrOwotICBjaGFyICpzYXZlcHRyID0gdmFsdWU7Ci0gIGNoYXIgKnNhdmVwdHIyOwotICBjaGFyICp0OwotICBjaGFyICp1OwotCi0gIHJldC0+Y291bnQgPSAocmV0LT5hcnJheXNpemUpID8gcmV0LT5hcnJheXNpemUgKiBuICogbSA6IG4gKiBtOwotICByZXQtPnZhbHVlID0gZ19tYWxsb2MgKHNpemVvZiAoZmxvYXQpICogcmV0LT5jb3VudCk7Ci0KLSAgaWYgKCFyZXQtPmFycmF5c2l6ZSkgewotICAgIHQgPSBzdHJ0b2tfciAodmFsdWUsICIsIiwgJnNhdmVwdHIpOwotCi0gICAgZm9yIChpID0gMDsgaSA8IHJldC0+Y291bnQ7ICsraSkgewotCi0gICAgICBpZiAoIXQpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdmFsdWUpOwotCi0gICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgdHJpbXJpZ2h0ICh0LCAiIFx0Iik7Ci0gICAgICBpZiAoIXRbMF0pCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCk7Ci0KLSAgICAgIGZvciAoaiA9IDA7IGogPCAoZ2ludCkgc3RybGVuICh2YWx1ZSk7ICsraikgewotICAgICAgICBpZiAoIXN0cmNociAoIjAxMjM0NTY3ODkuLSIsIHZhbHVlW2pdKSkKLSAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHQpICsgajsKLSAgICAgIH0KLQotICAgICAgKChmbG9hdCAqKSByZXQtPnZhbHVlKVtpXSA9IChmbG9hdCkgZ19hc2NpaV9zdHJ0b2QgKHQsIE5VTEwpOwotICAgICAgdCA9IHN0cnRva19yICgwLCAiLCIsICZzYXZlcHRyKTsKLSAgICB9Ci0KLSAgfSBlbHNlIHsKLQotICAgIHNhdmVwdHIyID0gdmFsdWU7Ci0gICAgdSA9IHN0cnRva19yICh2YWx1ZSwgIikiLCAmc2F2ZXB0cjIpOwotCi0gICAgZm9yIChrID0gMDsgayA8IHJldC0+YXJyYXlzaXplOyArK2spIHsKLQotICAgICAgaWYgKCF1KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0cjIgLSB2YWx1ZSk7Ci0KLSAgICAgIHRyaW1sZWZ0ICh1LCAiIFx0Iik7Ci0gICAgICB0cmltcmlnaHQgKHUsICIgXHQiKTsKLQotICAgICAgaWYgKGspIHsKLSAgICAgICAgaWYgKHVbMF0gIT0gJywnKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh1IC0gdmFsdWUpOwotICAgICAgICArK3U7Ci0gICAgICAgIHRyaW1sZWZ0ICh1LCAiIFx0Iik7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChzdHJuY21wICh1LCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbcmV0LT50eXBlXSwKLSAgICAgICAgICAgICAgc3RybGVuIChnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbcmV0LT50eXBlXSkpKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLQotICAgICAgdSArPSBzdHJsZW4gKGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kYXRhdHlwZVtyZXQtPnR5cGVdKTsKLSAgICAgIHRyaW1sZWZ0ICh1LCAiIFx0Iik7Ci0gICAgICBpZiAodVswXSAhPSAnKCcpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh1IC0gdmFsdWUpOwotICAgICAgKyt1OwotCi0gICAgICB0ID0gc3RydG9rX3IgKHUsICIsIiwgJnNhdmVwdHIpOwotICAgICAgaWYgKCF0KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLQotICAgICAgZm9yIChpID0gMDsgaSA8IG4gKiBtOyArK2kpIHsKLQotICAgICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgICB0cmltcmlnaHQgKHQsICIgXHQiKTsKLSAgICAgICAgaWYgKCF0WzBdKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh0IC0gdmFsdWUpOwotCi0gICAgICAgIGZvciAoaiA9IDA7IGogPCAoZ2ludCkgc3RybGVuICh0KTsgKytqKSB7Ci0gICAgICAgICAgaWYgKCFzdHJjaHIgKCIwMTIzNDU2Nzg5Li0iLCB0W2pdKSkKLSAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh0IC0gdmFsdWUpICsgajsKLSAgICAgICAgfQotCi0gICAgICAgICgoZmxvYXQgKikgcmV0LT52YWx1ZSlbayAqIG4gKiBtICsgaV0gPQotICAgICAgICAgICAgKGZsb2F0KSBnX2FzY2lpX3N0cnRvZCAodCwgTlVMTCk7Ci0gICAgICAgIHQgPSBzdHJ0b2tfciAoMCwgIiwiLCAmc2F2ZXB0cik7Ci0gICAgICAgIGlmIChpIDwgKG4gKiBtIC0gMSkgJiYgIXQpCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB2YWx1ZSk7Ci0KLSAgICAgIH0KLSAgICAgIHUgPSBzdHJ0b2tfciAoMCwgIikiLCAmc2F2ZXB0cjIpOwotICAgIH0KLSAgfQotICByZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlcnZhcmlhYmxlcy5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVydmFyaWFibGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzN2UxYTUuLjAwMDAwMDAKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVydmFyaWFibGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vKgotICogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgTHVjIERlc2NoZW5hdXggPGx1Yy5kZXNjaGVuYXV4QGZyZWVzdXJmLmNoPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgR1NUX0dMU0hBREVSX1ZBUklBQkxFUwotI2RlZmluZSBHU1RfR0xTSEFERVJfVkFSSUFCTEVTCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPGdzdC9nbC9nc3RnbHNoYWRlci5oPgotCi0jZGVmaW5lIFZBTElEX1ZBUk5BTUVfQ0hBUlMgImFiY2RlZmdoaWprbG1ub3BxdXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OV8iCi0KLXN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYzsKLQotaW50IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZXNfcGFyc2UgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBjaGFyICp2YXJpYWJsZXMsCi0gICAgaW50ICgqX3NldHZhcmlhYmxlKSAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsCi0gICAgICAgIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqIHYpKTsKLWludCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0IChHc3RHTFNoYWRlciAqIHNoYWRlciwKLSAgICBzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKnJldCk7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2wuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA3NDU1MgotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsLmMKQEAgLTAsMCArMSw1NTMgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisKKyNpbmNsdWRlICJnc3RnbHNsLmgiCisjaW5jbHVkZSAiZ3N0Z2xzbF9wcml2YXRlLmgiCisKKy8qKgorICogU0VDVElPTjpnc3RnbHNsCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IGhlbHBlcnMgZm9yIGRlYWxpbmcgd2l0aCBPcGVuR0wgc2hhZGVycworICogQHNlZV9hbHNvOiAjR3N0R0xTTFN0YWdlLCAjR3N0R0xTaGFkZXIKKyAqLworCitHUXVhcmsKK2dzdF9nbHNsX2Vycm9yX3F1YXJrICh2b2lkKQoreworICByZXR1cm4gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcgKCJnc3QtZ2xzbC1lcnJvciIpOworfQorCitzdHJ1Y3QgZ2xzbF92ZXJzaW9uX3N0cmluZworeworICBHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uOworICBjb25zdCBnY2hhciAqbmFtZTsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2xzbF92ZXJzaW9uX3N0cmluZyBnbHNsX3ZlcnNpb25zW10gPSB7CisgIC8qIGtlZXAgaW4gc3luYyB3aXRoIGRlZmluaXRpb24gaW4gdGhlIGhlYWRlciAqLworICB7R1NUX0dMU0xfVkVSU0lPTl8xMDAsICIxMDAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTEwLCAiMTEwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzEyMCwgIjEyMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xMzAsICIxMzAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTQwLCAiMTQwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzE1MCwgIjE1MCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMDAsICIzMDAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzEwLCAiMzEwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMyMCwgIjMyMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMzAsICIzMzAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDAwLCAiNDAwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQxMCwgIjQxMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80MjAsICI0MjAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDMwLCAiNDMwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQ0MCwgIjQ0MCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80NTAsICI0NTAifSwKK307CisKK3N0cnVjdCBnbHNsX3Byb2ZpbGVfc3RyaW5nCit7CisgIEdzdEdMU0xQcm9maWxlIHByb2ZpbGU7CisgIGNvbnN0IGdjaGFyICpuYW1lOworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBnbHNsX3Byb2ZpbGVfc3RyaW5nIGdsc2xfcHJvZmlsZXNbXSA9IHsKKyAgLyoga2VlcCBpbiBzeW5jIHdpdGggZGVmaW5pdGlvbiBpbiB0aGUgaGVhZGVyICovCisgIHtHU1RfR0xTTF9QUk9GSUxFX0VTLCAiZXMifSwKKyAge0dTVF9HTFNMX1BST0ZJTEVfQ09SRSwgImNvcmUifSwKKyAge0dTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwgImNvbXBhdGliaWxpdHkifSwKK307CisKK2NvbnN0IGdjaGFyICoKK2dzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nIChHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uKQoreworICBpbnQgaTsKKworICBpZiAodmVyc2lvbiA9PSBHU1RfR0xTTF9WRVJTSU9OX05PTkUpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoZ2xzbF92ZXJzaW9ucyk7IGkrKykgeworICAgIGlmICh2ZXJzaW9uID09IGdsc2xfdmVyc2lvbnNbaV0udmVyc2lvbikKKyAgICAgIHJldHVybiBnbHNsX3ZlcnNpb25zW2ldLm5hbWU7CisgIH0KKworICByZXR1cm4gTlVMTDsKK30KKworR3N0R0xTTFZlcnNpb24KK2dzdF9nbHNsX3ZlcnNpb25fZnJvbV9zdHJpbmcgKGNvbnN0IGdjaGFyICogc3RyaW5nKQoreworICBnY2hhciAqc3RyOworICBpbnQgaTsKKworICBpZiAoc3RyaW5nID09IE5VTEwpCisgICAgcmV0dXJuIDA7CisKKyAgc3RyID0gZ19zdHJkdXAgKHN0cmluZyk7CisgIHN0ciA9IGdfc3Ryc3RyaXAgKHN0cik7CisKKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoZ2xzbF92ZXJzaW9ucyk7IGkrKykgeworICAgIGlmIChnX3N0cmNtcDAgKHN0ciwgZ2xzbF92ZXJzaW9uc1tpXS5uYW1lKSA9PSAwKSB7CisgICAgICBnX2ZyZWUgKHN0cik7CisgICAgICByZXR1cm4gZ2xzbF92ZXJzaW9uc1tpXS52ZXJzaW9uOworICAgIH0KKyAgfQorCisgIGdfZnJlZSAoc3RyKTsKKyAgcmV0dXJuIDA7Cit9CisKK2NvbnN0IGdjaGFyICoKK2dzdF9nbHNsX3Byb2ZpbGVfdG9fc3RyaW5nIChHc3RHTFNMUHJvZmlsZSBwcm9maWxlKQoreworICBpbnQgaTsKKworICBpZiAocHJvZmlsZSA9PSBHU1RfR0xTTF9QUk9GSUxFX05PTkUpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgLyogbXVsdGlwbGUgcHJvZmlsZXMgYXJlIG5vdCBhbGxvd2VkICovCisgIGlmICgocHJvZmlsZSAmIChwcm9maWxlIC0gMSkpICE9IDApCisgICAgcmV0dXJuIE5VTEw7CisKKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoZ2xzbF9wcm9maWxlcyk7IGkrKykgeworICAgIGlmIChwcm9maWxlID09IGdsc2xfcHJvZmlsZXNbaV0ucHJvZmlsZSkKKyAgICAgIHJldHVybiBnbHNsX3Byb2ZpbGVzW2ldLm5hbWU7CisgIH0KKworICByZXR1cm4gTlVMTDsKK30KKworR3N0R0xTTFByb2ZpbGUKK2dzdF9nbHNsX3Byb2ZpbGVfZnJvbV9zdHJpbmcgKGNvbnN0IGdjaGFyICogc3RyaW5nKQoreworICBnY2hhciAqc3RyOworICBpbnQgaTsKKworICBpZiAoc3RyaW5nID09IE5VTEwpCisgICAgcmV0dXJuIEdTVF9HTFNMX1BST0ZJTEVfTk9ORTsKKworICBzdHIgPSBnX3N0cmR1cCAoc3RyaW5nKTsKKyAgc3RyID0gZ19zdHJzdHJpcCAoc3RyKTsKKworICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChnbHNsX3Byb2ZpbGVzKTsgaSsrKSB7CisgICAgaWYgKGdfc3RyY21wMCAoc3RyLCBnbHNsX3Byb2ZpbGVzW2ldLm5hbWUpID09IDApIHsKKyAgICAgIGdfZnJlZSAoc3RyKTsKKyAgICAgIHJldHVybiBnbHNsX3Byb2ZpbGVzW2ldLnByb2ZpbGU7CisgICAgfQorICB9CisKKyAgZ19mcmVlIChzdHIpOworICByZXR1cm4gR1NUX0dMU0xfUFJPRklMRV9OT05FOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19pc192YWxpZF92ZXJzaW9uX3Byb2ZpbGUgKEdzdEdMU0xWZXJzaW9uIHZlcnNpb24sIEdzdEdMU0xQcm9maWxlIHByb2ZpbGUpCit7CisgIGlmICh2ZXJzaW9uID09IEdTVF9HTFNMX1ZFUlNJT05fTk9ORSkKKyAgICByZXR1cm4gVFJVRTsKKworICAvKiB2ZXJzaW9ucyB0aGF0IG1heSBub3QgbmVlZCBhbiBleHBsaWNpdCBwcm9maWxlICovCisgIGlmICh2ZXJzaW9uIDw9IEdTVF9HTFNMX1ZFUlNJT05fMTUwICYmIHByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9OT05FKQorICAgIHJldHVybiBUUlVFOworCisgIC8qIEVTIHZlcnNpb25zIHJlcXVpcmUgYW4gRVMgcHJvZmlsZSAqLworICBpZiAodmVyc2lvbiA9PSBHU1RfR0xTTF9WRVJTSU9OXzEwMCB8fCB2ZXJzaW9uID09IEdTVF9HTFNMX1ZFUlNJT05fMzAwCisgICAgICB8fCB2ZXJzaW9uID09IEdTVF9HTFNMX1ZFUlNJT05fMzEwIHx8IHZlcnNpb24gPT0gR1NUX0dMU0xfVkVSU0lPTl8zMjApCisgICAgcmV0dXJuIHByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9FUzsKKworICAvKiByZXF1aXJlZCBwcm9maWxlIGFuZCBubyBFUyBwcm9maWxlIGZvciBub3JtYWwgR0wgY29udGV4dHMgKi8KKyAgaWYgKHZlcnNpb24gPj0gR1NUX0dMU0xfVkVSU0lPTl8zMzApCisgICAgcmV0dXJuIHByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9OT05FIHx8IHByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9DT1JFCisgICAgICAgIHx8IHByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZOworCisgIGlmICh2ZXJzaW9uIDw9IEdTVF9HTFNMX1ZFUlNJT05fMTUwKQorICAgIHJldHVybiBwcm9maWxlID09IEdTVF9HTFNMX1BST0ZJTEVfTk9ORQorICAgICAgICB8fCBwcm9maWxlID09IEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWTsKKworICByZXR1cm4gRkFMU0U7Cit9CisKK2djaGFyICoKK2dzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV90b19zdHJpbmcgKEdzdEdMU0xWZXJzaW9uIHZlcnNpb24sCisgICAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZSkKK3sKKyAgY29uc3QgZ2NoYXIgKnZlcnNpb25fcywgKnByb2ZpbGVfczsKKworICBpZiAoIV9pc192YWxpZF92ZXJzaW9uX3Byb2ZpbGUgKHZlcnNpb24sIHByb2ZpbGUpKQorICAgIHJldHVybiBOVUxMOworCisgIHZlcnNpb25fcyA9IGdzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nICh2ZXJzaW9uKTsKKyAgLyogbm8gcHJvZmlsZXMgaW4gR0wvRVMgPD0gMTUwICovCisgIGlmICh2ZXJzaW9uIDw9IEdTVF9HTFNMX1ZFUlNJT05fMTUwKQorICAgIHByb2ZpbGVfcyA9IE5VTEw7CisgIGVsc2UKKyAgICBwcm9maWxlX3MgPSBnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZyAocHJvZmlsZSk7CisKKyAgaWYgKCF2ZXJzaW9uX3MpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKHByb2ZpbGVfcykKKyAgICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmICgiJXMgJXMiLCB2ZXJzaW9uX3MsIHByb2ZpbGVfcyk7CisKKyAgcmV0dXJuIGdfc3RyZHVwICh2ZXJzaW9uX3MpOworfQorCitzdGF0aWMgdm9pZAorX2ZpeHVwX3ZlcnNpb25fcHJvZmlsZSAoR3N0R0xTTFZlcnNpb24gKiB2ZXJzaW9uLCBHc3RHTFNMUHJvZmlsZSAqIHByb2ZpbGUpCit7CisgIGlmICgqdmVyc2lvbiA9PSBHU1RfR0xTTF9WRVJTSU9OXzEwMCB8fCAqdmVyc2lvbiA9PSBHU1RfR0xTTF9WRVJTSU9OXzMwMAorICAgICAgfHwgKnZlcnNpb24gPT0gR1NUX0dMU0xfVkVSU0lPTl8zMTAgfHwgKnZlcnNpb24gPT0gR1NUX0dMU0xfVkVSU0lPTl8zMjApCisgICAgKnByb2ZpbGUgPSBHU1RfR0xTTF9QUk9GSUxFX0VTOworICBlbHNlIGlmICgqdmVyc2lvbiA8PSBHU1RfR0xTTF9WRVJTSU9OXzE1MCkKKyAgICAqcHJvZmlsZSA9IEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWTsKKyAgZWxzZSBpZiAoKnByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9OT05FCisgICAgICAmJiAqdmVyc2lvbiA+PSBHU1RfR0xTTF9WRVJTSU9OXzMzMCkKKyAgICAqcHJvZmlsZSA9IEdTVF9HTFNMX1BST0ZJTEVfQ09SRTsKK30KKworLyogQHN0ciBwb2ludHMgdG8gdGhlIHN0YXJ0IG9mICIjdmVyc2lvbiIsICIjICAgIHZlcnNpb24iIG9yICIjXHR2ZXJzaW9uIiwgZXRjICovCitzdGF0aWMgY29uc3QgZ2NoYXIgKgorX2NoZWNrX3ZhbGlkX3ZlcnNpb25fcHJlcHJvY2Vzc29yX3N0cmluZyAoY29uc3QgZ2NoYXIgKiBzdHIpCit7CisgIGdpbnQgaSA9IDA7CisKKyAgaWYgKCFzdHIgfHwgIXN0cltpXSkKKyAgICByZXR1cm4gTlVMTDsKKworICAvKiB0aGVyZSBjYW4gYmUgd2hpdGVzcGFjZSBiZXR3ZWVuIHRoZSAnIycgYW5kICd2ZXJzaW9uJyAqLworICBkbyB7CisgICAgaSsrOworICAgIGlmIChzdHJbaV0gPT0gJ1wwJyB8fCBzdHJbaV0gPT0gJ1xuJyB8fCBzdHJbaV0gPT0gJ1xyJykKKyAgICAgIHJldHVybiBOVUxMOworICB9IHdoaWxlIChnX2FzY2lpX2lzc3BhY2UgKHN0cltpXSkpOworICBpZiAoZ19zdHJzdHJfbGVuICgmc3RyW2ldLCA3LCAidmVyc2lvbiIpKQorICAgIHJldHVybiAmc3RyW2kgKyA3XTsKKworICByZXR1cm4gTlVMTDsKK30KKworZ2Jvb2xlYW4KK2dzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV9mcm9tX3N0cmluZyAoY29uc3QgZ2NoYXIgKiBzdHJpbmcsCisgICAgR3N0R0xTTFZlcnNpb24gKiB2ZXJzaW9uX3JldCwgR3N0R0xTTFByb2ZpbGUgKiBwcm9maWxlX3JldCkKK3sKKyAgZ2NoYXIgKnN0ciwgKnZlcnNpb25fcywgKnByb2ZpbGVfczsKKyAgR3N0R0xTTFZlcnNpb24gdmVyc2lvbiA9IEdTVF9HTFNMX1ZFUlNJT05fTk9ORTsKKyAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZSA9IEdTVF9HTFNMX1BST0ZJTEVfTk9ORTsKKyAgZ2ludCBpOworCisgIGlmICghc3RyaW5nKQorICAgIGdvdG8gZXJyb3I7CisKKyAgc3RyID0gZ19zdHJkdXAgKHN0cmluZyk7CisgIHZlcnNpb25fcyA9IGdfc3Ryc3RyaXAgKHN0cik7CisKKyAgLyogc2tpcCBwb3NzaWJsZSAjdmVyc2lvbiBwcmVmaXggKi8KKyAgaWYgKHN0clswXSA9PSAnIycpIHsKKyAgICBpZiAoISh2ZXJzaW9uX3MgPQorICAgICAgICAgICAgKGdjaGFyICopIF9jaGVja192YWxpZF92ZXJzaW9uX3ByZXByb2Nlc3Nvcl9zdHJpbmcgKHZlcnNpb25fcykpKSB7CisgICAgICBnX2ZyZWUgKHN0cik7CisgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgfQorCisgIHZlcnNpb25fcyA9IGdfc3Ryc3RyaXAgKHZlcnNpb25fcyk7CisKKyAgaSA9IDA7CisgIHdoaWxlICh2ZXJzaW9uX3MgJiYgdmVyc2lvbl9zW2ldICE9ICdcMCcgJiYgZ19hc2NpaV9pc2RpZ2l0ICh2ZXJzaW9uX3NbaV0pKQorICAgIGkrKzsKKyAgLyogd3JvbmcgdmVyc2lvbiBsZW5ndGggKi8KKyAgaWYgKGkgIT0gMykgeworICAgIGdfZnJlZSAoc3RyKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgaWYgKHZlcnNpb25fc1tpXSAhPSAwKSB7CisgICAgdmVyc2lvbl9zW2ldID0gJ1wwJzsKKyAgICBpKys7CisgICAgcHJvZmlsZV9zID0gJnZlcnNpb25fc1tpXTsKKyAgICBwcm9maWxlX3MgPSBnX3N0cnN0cmlwIChwcm9maWxlX3MpOworCisgICAgcHJvZmlsZSA9IGdzdF9nbHNsX3Byb2ZpbGVfZnJvbV9zdHJpbmcgKHByb2ZpbGVfcyk7CisgIH0KKyAgdmVyc2lvbiA9IGdzdF9nbHNsX3ZlcnNpb25fZnJvbV9zdHJpbmcgKHZlcnNpb25fcyk7CisgIGdfZnJlZSAoc3RyKTsKKworICAvKiBjaGVjayB3aGV0aGVyIHRoZSBwYXJzZWQgZGF0YSBpcyB2YWxpZCAqLworICBpZiAoIXZlcnNpb24pCisgICAgZ290byBlcnJvcjsKKyAgaWYgKCFfaXNfdmFsaWRfdmVyc2lvbl9wcm9maWxlICh2ZXJzaW9uLCBwcm9maWxlKSkKKyAgICBnb3RvIGVycm9yOworICAvKiBnb3QgYSBwcm9maWxlIHdoZW4gbm9uZSB3YXMgZXhwZWN0ZWQgKi8KKyAgaWYgKHZlcnNpb24gPD0gR1NUX0dMU0xfVkVSU0lPTl8xNTAgJiYgcHJvZmlsZSAhPSBHU1RfR0xTTF9QUk9GSUxFX05PTkUpCisgICAgZ290byBlcnJvcjsKKworICBfZml4dXBfdmVyc2lvbl9wcm9maWxlICgmdmVyc2lvbiwgJnByb2ZpbGUpOworCisgIGlmIChwcm9maWxlX3JldCkKKyAgICAqcHJvZmlsZV9yZXQgPSBwcm9maWxlOworICBpZiAodmVyc2lvbl9yZXQpCisgICAgKnZlcnNpb25fcmV0ID0gdmVyc2lvbjsKKworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIHsKKyAgICBpZiAocHJvZmlsZV9yZXQpCisgICAgICAqcHJvZmlsZV9yZXQgPSBHU1RfR0xTTF9QUk9GSUxFX05PTkU7CisgICAgaWYgKHZlcnNpb25fcmV0KQorICAgICAgKnZlcnNpb25fcmV0ID0gR1NUX0dMU0xfVkVSU0lPTl9OT05FOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorfQorCisvKiByZXR1cm5zIHRoZSBwb2ludGVyIGluIEBzdHIgdG8gdGhlICN2ZXJzaW9uIGRlY2xhcmF0aW9uICovCitjb25zdCBnY2hhciAqCitfZ3N0X2dsc2xfc2hhZGVyX3N0cmluZ19maW5kX3ZlcnNpb24gKGNvbnN0IGdjaGFyICogc3RyKQoreworICBnYm9vbGVhbiBzbF9jb21tZW50ID0gRkFMU0U7CisgIGdib29sZWFuIG1sX2NvbW1lbnQgPSBGQUxTRTsKKyAgZ2Jvb2xlYW4gbmV3bGluZSA9IFRSVUU7CisgIGdpbnQgaSA9IDA7CisKKyAgLyogc2VhcmNoIGZvciAjdmVyc2lvbiB3aGlsZSBhbGxvd2luZyBmb3IgcHJlY2VlZGluZyBjb21tZW50cy93aGl0ZXNwYWNlIGFzCisgICAqIHBlcm1pdHRlZCBieSB0aGUgR0xTTCBzcGVjaWZpY2F0aW9uICovCisgIHdoaWxlIChzdHIgJiYgc3RyW2ldICE9ICdcMCcgJiYgaSA8IDEwMjQpIHsKKyAgICBpZiAoc3RyW2ldID09ICdcbicgfHwgc3RyW2ldID09ICdccicpIHsKKyAgICAgIG5ld2xpbmUgPSBUUlVFOworICAgICAgc2xfY29tbWVudCA9IEZBTFNFOworICAgICAgaSsrOworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgaWYgKGdfYXNjaWlfaXNzcGFjZSAoc3RyW2ldKSkKKyAgICAgIGdvdG8gbmV4dDsKKworICAgIGlmIChzbF9jb21tZW50KQorICAgICAgZ290byBuZXh0OworCisgICAgaWYgKG1sX2NvbW1lbnQpIHsKKyAgICAgIGlmIChnX3N0cnN0cl9sZW4gKCZzdHJbaV0sIDIsICIqLyIpKSB7CisgICAgICAgIG1sX2NvbW1lbnQgPSBGQUxTRTsKKyAgICAgICAgaSsrOworICAgICAgfQorICAgICAgZ290byBuZXh0OworICAgIH0KKworICAgIGlmIChnX3N0cnN0cl9sZW4gKCZzdHJbaV0sIDIsICIvLyIpKSB7CisgICAgICBzbF9jb21tZW50ID0gVFJVRTsKKyAgICAgIGkrKzsKKyAgICAgIGdvdG8gbmV4dDsKKyAgICB9CisKKyAgICBpZiAoZ19zdHJzdHJfbGVuICgmc3RyW2ldLCAyLCAiLyoiKSkgeworICAgICAgbWxfY29tbWVudCA9IFRSVUU7CisgICAgICBpKys7CisgICAgICBnb3RvIG5leHQ7CisgICAgfQorCisgICAgaWYgKHN0cltpXSA9PSAnIycpIHsKKyAgICAgIGlmIChuZXdsaW5lICYmIF9jaGVja192YWxpZF92ZXJzaW9uX3ByZXByb2Nlc3Nvcl9zdHJpbmcgKCZzdHJbaV0pKQorICAgICAgICByZXR1cm4gJnN0cltpXTsKKyAgICAgIGJyZWFrOworICAgIH0KKworICBuZXh0OgorICAgIG5ld2xpbmUgPSBGQUxTRTsKKyAgICBpKys7CisgIH0KKworICByZXR1cm4gTlVMTDsKK30KKworZ2Jvb2xlYW4KK2dzdF9nbHNsX3N0cmluZ19nZXRfdmVyc2lvbl9wcm9maWxlIChjb25zdCBnY2hhciAqIHMsIEdzdEdMU0xWZXJzaW9uICogdmVyc2lvbiwKKyAgICBHc3RHTFNMUHJvZmlsZSAqIHByb2ZpbGUpCit7CisgIGNvbnN0IGdjaGFyICp2ZXJzaW9uX3Byb2ZpbGVfczsKKworICB2ZXJzaW9uX3Byb2ZpbGVfcyA9IF9nc3RfZ2xzbF9zaGFkZXJfc3RyaW5nX2ZpbmRfdmVyc2lvbiAocyk7CisgIGlmICghdmVyc2lvbl9wcm9maWxlX3MpCisgICAgZ290byBlcnJvcjsKKworICBpZiAoIWdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV9mcm9tX3N0cmluZyAodmVyc2lvbl9wcm9maWxlX3MsIHZlcnNpb24sCisgICAgICAgICAgcHJvZmlsZSkpCisgICAgZ290byBlcnJvcjsKKworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIHsKKyAgICBpZiAodmVyc2lvbikKKyAgICAgICp2ZXJzaW9uID0gR1NUX0dMU0xfVkVSU0lPTl9OT05FOworICAgIGlmIChwcm9maWxlKQorICAgICAgKnByb2ZpbGUgPSBHU1RfR0xTTF9QUk9GSUxFX05PTkU7CisgICAgcmV0dXJuIEZBTFNFOworICB9Cit9CisKK0dzdEdMU0xWZXJzaW9uCitnc3RfZ2xfdmVyc2lvbl90b19nbHNsX3ZlcnNpb24gKEdzdEdMQVBJIGdsX2FwaSwgZ2ludCBtYWosIGdpbnQgbWluKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ2xfYXBpICE9IEdTVF9HTF9BUElfTk9ORSwgMCk7CisKKyAgaWYgKGdsX2FwaSAmIEdTVF9HTF9BUElfR0xFUzIpIHsKKyAgICBpZiAobWFqID09IDIgJiYgbWluID09IDApCisgICAgICByZXR1cm4gMTAwOworCisgICAgaWYgKG1haiA9PSAzICYmIG1pbiA+PSAwICYmIG1pbiA8PSAyKQorICAgICAgcmV0dXJuIG1haiAqIDEwMCArIG1pbiAqIDEwOworCisgICAgcmV0dXJuIDA7CisgIH0KKworICAvKiB2ZXJzaW9ucyBtYXRjaCBmb3IgPj0gMy4zICovCisgIGlmIChnbF9hcGkgJiAoR1NUX0dMX0FQSV9PUEVOR0wzIHwgR1NUX0dMX0FQSV9PUEVOR0wpKSB7CisgICAgaWYgKG1haiA+IDMgfHwgKG1haiA9PSAzICYmIG1pbiA+PSAzKSkKKyAgICAgIHJldHVybiBtYWogKiAxMDAgKyBtaW4gKiAxMDsKKworICAgIGlmIChtYWogPT0gMyAmJiBtaW4gPT0gMikKKyAgICAgIHJldHVybiAxNTA7CisgICAgaWYgKG1haiA9PSAzICYmIG1pbiA9PSAxKQorICAgICAgcmV0dXJuIDE0MDsKKyAgICBpZiAobWFqID09IDMgJiYgbWluID09IDApCisgICAgICByZXR1cm4gMTMwOworICAgIGlmIChtYWogPT0gMiAmJiBtaW4gPT0gMSkKKyAgICAgIHJldHVybiAxMjA7CisgICAgaWYgKG1haiA9PSAyICYmIG1pbiA9PSAwKQorICAgICAgcmV0dXJuIDExMDsKKworICAgIHJldHVybiAwOworICB9CisKKyAgcmV0dXJuIDA7Cit9CisKK2dib29sZWFuCitnc3RfZ2xfY29udGV4dF9zdXBwb3J0c19nbHNsX3Byb2ZpbGVfdmVyc2lvbiAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICBHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uLCBHc3RHTFNMUHJvZmlsZSBwcm9maWxlKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CisKKyAgaWYgKCFfaXNfdmFsaWRfdmVyc2lvbl9wcm9maWxlICh2ZXJzaW9uLCBwcm9maWxlKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKHByb2ZpbGUgIT0gR1NUX0dMU0xfUFJPRklMRV9OT05FKSB7CisgICAgaWYgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDIsIDApKSB7CisgICAgICBpZiAoKHByb2ZpbGUgJiBHU1RfR0xTTF9QUk9GSUxFX0VTKSA9PSAwKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfSBlbHNlIGlmICgoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoY29udGV4dCkgJiBHU1RfR0xfQVBJX09QRU5HTCkgIT0gMCkgeworICAgICAgaWYgKChwcm9maWxlICYgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZKSA9PSAwKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfSBlbHNlIGlmICgoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoY29udGV4dCkgJiBHU1RfR0xfQVBJX09QRU5HTDMpICE9IDApIHsKKyAgICAgIC8qIEdMX0FSQl9lczJfY29tcGF0aWJpbGl0eSBpcyByZXF1cmllZCBmb3IgR0wzIGNvbnRleHRzICovCisgICAgICBpZiAoKHByb2ZpbGUgJiAoR1NUX0dMU0xfUFJPRklMRV9DT1JFIHwgR1NUX0dMU0xfUFJPRklMRV9FUykpID09IDApCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9IGVsc2UgeworICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgfQorICB9CisKKyAgaWYgKHZlcnNpb24gIT0gR1NUX0dMU0xfVkVSU0lPTl9OT05FKSB7CisgICAgR3N0R0xBUEkgZ2xfYXBpOworICAgIGdpbnQgbWFqLCBtaW4sIGdsc2xfdmVyc2lvbjsKKworICAgIGlmIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAzLCAxKSkgeworICAgICAgaWYgKHZlcnNpb24gPiBHU1RfR0xTTF9WRVJTSU9OXzMxMCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0gZWxzZSBpZiAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMywKKyAgICAgICAgICAgIDApKSB7CisgICAgICBpZiAodmVyc2lvbiA+IEdTVF9HTFNMX1ZFUlNJT05fMzAwKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfSBlbHNlIGlmIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAyLAorICAgICAgICAgICAgMCkpIHsKKyAgICAgIGlmICh2ZXJzaW9uID4gR1NUX0dMU0xfVkVSU0lPTl8xMDApCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBnbF9hcGkgPSBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChjb250ZXh0KTsKKyAgICBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfdmVyc2lvbiAoY29udGV4dCwgJm1haiwgJm1pbik7CisgICAgZ2xzbF92ZXJzaW9uID0gZ3N0X2dsX3ZlcnNpb25fdG9fZ2xzbF92ZXJzaW9uIChnbF9hcGksIG1haiwgbWluKTsKKyAgICBpZiAodmVyc2lvbiA+IGdsc2xfdmVyc2lvbikKKyAgICAgIHJldHVybiBGQUxTRTsKKworICAgIGlmIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTDMsIDEsIDApKQorICAgICAgLyogR0xfQVJCX2VzMl9jb21wYXRpYmlsaXR5IGlzIHJlcXVyaWVkIGZvciBHTDMgY29udGV4dHMgKi8KKyAgICAgIGlmICh2ZXJzaW9uIDwgR1NUX0dMU0xfVkVSU0lPTl8xNTAgJiYgdmVyc2lvbiAhPSBHU1RfR0xTTF9WRVJTSU9OXzEwMCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMLCAxLCAwKQorICAgICAgICAmJiB2ZXJzaW9uIDwgR1NUX0dMU0xfVkVSU0lPTl8xMTApCisgICAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK19nc3RfZ2xzbF9mdW5jc19maWxsIChHc3RHTFNMRnVuY3MgKiB2dGFibGUsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCit7CisgIEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworCisgIGlmICh2dGFibGUtPmluaXRpYWxpemVkKQorICAgIHJldHVybiBUUlVFOworCisgIGlmIChnbC0+Q3JlYXRlUHJvZ3JhbSkgeworICAgIHZ0YWJsZS0+Q3JlYXRlUHJvZ3JhbSA9IGdsLT5DcmVhdGVQcm9ncmFtOworICAgIHZ0YWJsZS0+RGVsZXRlUHJvZ3JhbSA9IGdsLT5EZWxldGVQcm9ncmFtOworICAgIHZ0YWJsZS0+VXNlUHJvZ3JhbSA9IGdsLT5Vc2VQcm9ncmFtOworCisgICAgdnRhYmxlLT5DcmVhdGVTaGFkZXIgPSBnbC0+Q3JlYXRlU2hhZGVyOworICAgIHZ0YWJsZS0+RGVsZXRlU2hhZGVyID0gZ2wtPkRlbGV0ZVNoYWRlcjsKKyAgICB2dGFibGUtPkF0dGFjaFNoYWRlciA9IGdsLT5BdHRhY2hTaGFkZXI7CisgICAgdnRhYmxlLT5EZXRhY2hTaGFkZXIgPSBnbC0+RGV0YWNoU2hhZGVyOworCisgICAgdnRhYmxlLT5HZXRBdHRhY2hlZFNoYWRlcnMgPSBnbC0+R2V0QXR0YWNoZWRTaGFkZXJzOworCisgICAgdnRhYmxlLT5HZXRTaGFkZXJJbmZvTG9nID0gZ2wtPkdldFNoYWRlckluZm9Mb2c7CisgICAgdnRhYmxlLT5HZXRTaGFkZXJpdiA9IGdsLT5HZXRTaGFkZXJpdjsKKyAgICB2dGFibGUtPkdldFByb2dyYW1JbmZvTG9nID0gZ2wtPkdldFByb2dyYW1JbmZvTG9nOworICAgIHZ0YWJsZS0+R2V0UHJvZ3JhbWl2ID0gZ2wtPkdldFByb2dyYW1pdjsKKyAgfSBlbHNlIGlmIChnbC0+Q3JlYXRlUHJvZ3JhbU9iamVjdCkgeworICAgIHZ0YWJsZS0+Q3JlYXRlUHJvZ3JhbSA9IGdsLT5DcmVhdGVQcm9ncmFtT2JqZWN0OworICAgIHZ0YWJsZS0+RGVsZXRlUHJvZ3JhbSA9IGdsLT5EZWxldGVPYmplY3Q7CisgICAgdnRhYmxlLT5Vc2VQcm9ncmFtID0gZ2wtPlVzZVByb2dyYW1PYmplY3Q7CisKKyAgICB2dGFibGUtPkNyZWF0ZVNoYWRlciA9IGdsLT5DcmVhdGVTaGFkZXJPYmplY3Q7CisgICAgdnRhYmxlLT5EZWxldGVTaGFkZXIgPSBnbC0+RGVsZXRlT2JqZWN0OworICAgIHZ0YWJsZS0+QXR0YWNoU2hhZGVyID0gZ2wtPkF0dGFjaE9iamVjdDsKKyAgICB2dGFibGUtPkRldGFjaFNoYWRlciA9IGdsLT5EZXRhY2hPYmplY3Q7CisKKyAgICB2dGFibGUtPkdldEF0dGFjaGVkU2hhZGVycyA9IGdsLT5HZXRBdHRhY2hlZE9iamVjdHM7CisKKyAgICB2dGFibGUtPkdldFNoYWRlckluZm9Mb2cgPSBnbC0+R2V0SW5mb0xvZzsKKyAgICB2dGFibGUtPkdldFNoYWRlcml2ID0gZ2wtPkdldE9iamVjdFBhcmFtZXRlcml2OworICAgIHZ0YWJsZS0+R2V0UHJvZ3JhbUluZm9Mb2cgPSBnbC0+R2V0SW5mb0xvZzsKKyAgICB2dGFibGUtPkdldFByb2dyYW1pdiA9IGdsLT5HZXRPYmplY3RQYXJhbWV0ZXJpdjsKKyAgfSBlbHNlIHsKKyAgICB2dGFibGUtPmluaXRpYWxpemVkID0gRkFMU0U7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgdnRhYmxlLT5pbml0aWFsaXplZCA9IFRSVUU7CisgIHJldHVybiBUUlVFOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2wuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWYwNTFmNgotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsLmgKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX0dMU0xfSF9fCisjZGVmaW5lIF9fR1NUX0dMU0xfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xfZndkLmg+CisKK0dfQkVHSU5fREVDTFMKKworR1F1YXJrIGdzdF9nbHNsX2Vycm9yX3F1YXJrICh2b2lkKTsKKyNkZWZpbmUgR1NUX0dMU0xfRVJST1IgKGdzdF9nbHNsX2Vycm9yX3F1YXJrICgpKQorCit0eXBlZGVmIGVudW0geworICBHU1RfR0xTTF9FUlJPUl9DT01QSUxFLAorICBHU1RfR0xTTF9FUlJPUl9MSU5LLAorICBHU1RfR0xTTF9FUlJPUl9QUk9HUkFNLAorfSBHc3RHTFNMRXJyb3I7CisKK3R5cGVkZWYgZW51bQoreworICBHU1RfR0xTTF9WRVJTSU9OX05PTkUgPSAwLAorCisgIEdTVF9HTFNMX1ZFUlNJT05fMTAwID0gMTAwLCAvKiBFUyAqLworICBHU1RfR0xTTF9WRVJTSU9OXzExMCA9IDExMCwgLyogR0wgKi8KKyAgR1NUX0dMU0xfVkVSU0lPTl8xMjAgPSAxMjAsIC8qIEdMICovCisgIEdTVF9HTFNMX1ZFUlNJT05fMTMwID0gMTMwLCAvKiBHTCAqLworICBHU1RfR0xTTF9WRVJTSU9OXzE0MCA9IDE0MCwgLyogR0wgKi8KKyAgR1NUX0dMU0xfVkVSU0lPTl8xNTAgPSAxNTAsIC8qIEdMICovCisgIEdTVF9HTFNMX1ZFUlNJT05fMzAwID0gMzAwLCAvKiBFUyAqLworICBHU1RfR0xTTF9WRVJTSU9OXzMxMCA9IDMxMCwgLyogRVMgKi8KKyAgR1NUX0dMU0xfVkVSU0lPTl8zMjAgPSAzMjAsIC8qIEVTICovCisgIEdTVF9HTFNMX1ZFUlNJT05fMzMwID0gMzMwLCAvKiBHTCAqLworICBHU1RfR0xTTF9WRVJTSU9OXzQwMCA9IDQwMCwgLyogR0wgKi8KKyAgR1NUX0dMU0xfVkVSU0lPTl80MTAgPSA0MTAsIC8qIEdMICovCisgIEdTVF9HTFNMX1ZFUlNJT05fNDIwID0gNDIwLCAvKiBHTCAqLworICBHU1RfR0xTTF9WRVJTSU9OXzQzMCA9IDQzMCwgLyogR0wgKi8KKyAgR1NUX0dMU0xfVkVSU0lPTl80NDAgPSA0NDAsIC8qIEdMICovCisgIEdTVF9HTFNMX1ZFUlNJT05fNDUwID0gNDUwLCAvKiBHTCAqLworCisgIEdTVF9HTFNMX1ZFUlNJT05fQU5ZID0gLTEsCit9IEdzdEdMU0xWZXJzaW9uOworCit0eXBlZGVmIGVudW0KK3sKKyAgLyogWFhYOiBtYXliZSBtYWtlIEdzdEdMQVBJIGluc3RlYWQgKi8KKyAgR1NUX0dMU0xfUFJPRklMRV9OT05FID0gMCwKKworICBHU1RfR0xTTF9QUk9GSUxFX0VTID0gKDEgPDwgMCksCisgIEdTVF9HTFNMX1BST0ZJTEVfQ09SRSA9ICgxIDw8IDEpLAorICBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFkgPSAoMSA8PCAyKSwKKworICBHU1RfR0xTTF9QUk9GSUxFX0FOWSA9IC0xLAorfSBHc3RHTFNMUHJvZmlsZTsKKworR3N0R0xTTFZlcnNpb24gZ3N0X2dsc2xfdmVyc2lvbl9mcm9tX3N0cmluZyAgICAgICAgIChjb25zdCBnY2hhciAqIHN0cmluZyk7Citjb25zdCBnY2hhciAqICBnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZyAgICAgICAgICAgKEdzdEdMU0xWZXJzaW9uIHZlcnNpb24pOworCitHc3RHTFNMUHJvZmlsZSBnc3RfZ2xzbF9wcm9maWxlX2Zyb21fc3RyaW5nICAgICAgICAgKGNvbnN0IGdjaGFyICogc3RyaW5nKTsKK2NvbnN0IGdjaGFyICogIGdzdF9nbHNsX3Byb2ZpbGVfdG9fc3RyaW5nICAgICAgICAgICAoR3N0R0xTTFByb2ZpbGUgcHJvZmlsZSk7CisKK2djaGFyICogICAgICAgIGdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV90b19zdHJpbmcgICAoR3N0R0xTTFZlcnNpb24gdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZSk7CitnYm9vbGVhbiAgICAgICBnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmcgKGNvbnN0IGdjaGFyICogc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFNMVmVyc2lvbiAqIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMU0xQcm9maWxlICogcHJvZmlsZSk7CisKK2dib29sZWFuICAgICAgIGdzdF9nbHNsX3N0cmluZ19nZXRfdmVyc2lvbl9wcm9maWxlICAoY29uc3QgZ2NoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMU0xWZXJzaW9uICogdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xTTFByb2ZpbGUgKiBwcm9maWxlKTsKKworR3N0R0xTTFZlcnNpb24gZ3N0X2dsX3ZlcnNpb25fdG9fZ2xzbF92ZXJzaW9uICAgICAgIChHc3RHTEFQSSBnbF9hcGksIGdpbnQgbWFqLCBnaW50IG1pbik7CitnYm9vbGVhbiAgICAgICBnc3RfZ2xfY29udGV4dF9zdXBwb3J0c19nbHNsX3Byb2ZpbGVfdmVyc2lvbiAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMU0xQcm9maWxlIHByb2ZpbGUpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfR0xTTF9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsX3ByaXZhdGUuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsX3ByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWJlNjc3Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xfcHJpdmF0ZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9HTFNMX1BSSVZBVEVfSF9fCisjZGVmaW5lIF9fR1NUX0dMU0xfUFJJVkFURV9IX18KKworI2luY2x1ZGUgPGdzdC9nbC9nc3RnbF9md2QuaD4KKworR19CRUdJTl9ERUNMUworCisjaWZuZGVmIEdMX0NPTVBJTEVfU1RBVFVTCisjZGVmaW5lIEdMX0NPTVBJTEVfU1RBVFVTICAgICAgICAgICAgIDB4OEI4MQorI2VuZGlmCisjaWZuZGVmIEdMaGFuZGxlQVJCCisjZGVmaW5lIEdMaGFuZGxlQVJCIEdMdWludAorI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTFNMRnVuY3MKK3sKKyAgZ2Jvb2xlYW4gaW5pdGlhbGl6ZWQ7CisKKyAgR0x1aW50IEdTVEdMQVBJICgqQ3JlYXRlUHJvZ3JhbSkgKHZvaWQpOworICB2b2lkIEdTVEdMQVBJICgqRGVsZXRlUHJvZ3JhbSkgKEdMdWludCBwcm9ncmFtKTsKKyAgdm9pZCBHU1RHTEFQSSAoKlVzZVByb2dyYW0pIChHTHVpbnQgcHJvZ3JhbSk7CisgIHZvaWQgR1NUR0xBUEkgKCpHZXRBdHRhY2hlZFNoYWRlcnMpIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhjb3VudCwKKyAgICAgIEdMc2l6ZWkgKiBjb3VudCwgR0x1aW50ICogc2hhZGVycyk7CisKKyAgR0x1aW50IEdTVEdMQVBJICgqQ3JlYXRlU2hhZGVyKSAoR0xlbnVtIHNoYWRlclR5cGUpOworICB2b2lkIEdTVEdMQVBJICgqRGVsZXRlU2hhZGVyKSAoR0x1aW50IHNoYWRlcik7CisgIHZvaWQgR1NUR0xBUEkgKCpBdHRhY2hTaGFkZXIpIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcik7CisgIHZvaWQgR1NUR0xBUEkgKCpEZXRhY2hTaGFkZXIpIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcik7CisKKyAgdm9pZCBHU1RHTEFQSSAoKkdldFNoYWRlcml2KSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOworICB2b2lkIEdTVEdMQVBJICgqR2V0UHJvZ3JhbWl2KSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgKiBwYXJhbXMpOworICB2b2lkIEdTVEdMQVBJICgqR2V0U2hhZGVySW5mb0xvZykgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgbWF4TGVuZ3RoLAorICAgICAgR0xzaXplaSAqIGxlbmd0aCwgY2hhciAqbG9nKTsKKyAgdm9pZCBHU1RHTEFQSSAoKkdldFByb2dyYW1JbmZvTG9nKSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBtYXhMZW5ndGgsCisgICAgICBHTHNpemVpICogbGVuZ3RoLCBjaGFyICpsb2cpOworfSBHc3RHTFNMRnVuY3M7CisKK0dfR05VQ19JTlRFUk5BTCBnYm9vbGVhbiBfZ3N0X2dsc2xfZnVuY3NfZmlsbCAoR3N0R0xTTEZ1bmNzICogdnRhYmxlLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKK0dfR05VQ19JTlRFUk5BTCBjb25zdCBnY2hhciAqIF9nc3RfZ2xzbF9zaGFkZXJfc3RyaW5nX2ZpbmRfdmVyc2lvbiAoY29uc3QgZ2NoYXIgKiBzdHIpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfR0xTTF9QUklWQVRFX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MGIxZDAKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmMKQEAgLTAsMCArMSw1MjkgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisKKyNpbmNsdWRlICJnc3RnbHNsc3RhZ2UuaCIKKyNpbmNsdWRlICJnc3RnbHNsX3ByaXZhdGUuaCIKKworLyoqCisgKiBTRUNUSU9OOmdzdGdsc2xzdGFnZQorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBvYmplY3QgZm9yIGRlYWxpbmcgd2l0aCBPcGVuR0wgc2hhZGVyIHN0YWdlcworICogQHRpdGxlOiBHc3RHTFNMU3RhZ2UKKyAqIEBzZWVfYWxzbzogI0dzdEdMU2hhZGVyCisgKgorICogI0dzdEdMU0xTdGFnZSBob2xkcyBhbmQgcmVwcmVzZW50cyBhIHNpbmdsZSBPcGVuR0wgc2hhZGVyIHN0YWdlLgorICovCisKK3N0YXRpYyBjb25zdCBnY2hhciAqZXMyX3ZlcnNpb25faGVhZGVyID0gIiN2ZXJzaW9uIDEwMFxuIjsKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X2dsc2xfc3RhZ2VfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2dsc2xfc3RhZ2VfZGVidWcKKworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdEdMU0xTdGFnZSwgZ3N0X2dsc2xfc3RhZ2UsIEdTVF9UWVBFX09CSkVDVCwKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X2dsc2xfc3RhZ2VfZGVidWcsICJnbHNsc3RhZ2UiLCAwLAorICAgICAgICAiR0xTTCBTdGFnZSIpOworICAgICk7CisKKyNkZWZpbmUgR1NUX0dMU0xfU1RBR0VfR0VUX1BSSVZBVEUobykgXAorICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvKSwgR1NUX1RZUEVfR0xTTF9TVEFHRSwgR3N0R0xTTFN0YWdlUHJpdmF0ZSkpCisKK3N0cnVjdCBfR3N0R0xTTFN0YWdlUHJpdmF0ZQoreworICBHc3RHTFNMRnVuY3MgdnRhYmxlOworCisgIEdMZW51bSB0eXBlOworICBHTGhhbmRsZUFSQiBoYW5kbGU7CisgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb247CisgIEdzdEdMU0xQcm9maWxlIHByb2ZpbGU7CisgIGdjaGFyICoqc3RyaW5nczsKKyAgZ2ludCBuX3N0cmluZ3M7CisKKyAgZ2Jvb2xlYW4gY29tcGlsZWQ7Cit9OworCitzdGF0aWMgdm9pZAorZ3N0X2dsc2xfc3RhZ2VfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdEdMU0xTdGFnZSAqc3RhZ2UgPSBHU1RfR0xTTF9TVEFHRSAob2JqZWN0KTsKKyAgZ2ludCBpOworCisgIGlmIChzdGFnZS0+Y29udGV4dCkgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKHN0YWdlLT5jb250ZXh0KTsKKyAgICBzdGFnZS0+Y29udGV4dCA9IE5VTEw7CisgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgc3RhZ2UtPnByaXYtPm5fc3RyaW5nczsgaSsrKSB7CisgICAgZ19mcmVlIChzdGFnZS0+cHJpdi0+c3RyaW5nc1tpXSk7CisgIH0KKyAgZ19mcmVlIChzdGFnZS0+cHJpdi0+c3RyaW5ncyk7CisgIHN0YWdlLT5wcml2LT5zdHJpbmdzID0gTlVMTDsKKworICBHX09CSkVDVF9DTEFTUyAoZ3N0X2dsc2xfc3RhZ2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xzbF9zdGFnZV9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCisgICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsc2xfc3RhZ2VfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAorICAgIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KKworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsc2xfc3RhZ2VfY2xhc3NfaW5pdCAoR3N0R0xTTFN0YWdlQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpvYmpfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworCisgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoa2xhc3MsIHNpemVvZiAoR3N0R0xTTFN0YWdlUHJpdmF0ZSkpOworCisgIG9ial9jbGFzcy0+ZmluYWxpemUgPSBnc3RfZ2xzbF9zdGFnZV9maW5hbGl6ZTsKKyAgb2JqX2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfZ2xzbF9zdGFnZV9zZXRfcHJvcGVydHk7CisgIG9ial9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2dsc2xfc3RhZ2VfZ2V0X3Byb3BlcnR5OworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsc2xfc3RhZ2VfaW5pdCAoR3N0R0xTTFN0YWdlICogc3RhZ2UpCit7CisgIHN0YWdlLT5wcml2ID0gR1NUX0dMU0xfU1RBR0VfR0VUX1BSSVZBVEUgKHN0YWdlKTsKK30KKworc3RhdGljIGdib29sZWFuCitfaXNfdmFsaWRfc2hhZGVyX3R5cGUgKEdMZW51bSB0eXBlKQoreworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6CisgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CisjaWZkZWYgR0xfVEVTU19DT05UUk9MX1NIQURFUgorICAgIGNhc2UgR0xfVEVTU19DT05UUk9MX1NIQURFUjoKKyNlbmRpZgorI2lmZGVmIEdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVIKKyAgICBjYXNlIEdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVI6CisjZW5kaWYKKyNpZmRlZiBHTF9HRU9NRVRSWV9TSEFERVIKKyAgICBjYXNlIEdMX0dFT01FVFJZX1NIQURFUjoKKyNlbmRpZgorI2lmZGVmIEdMX0NPTVBVVEVfU0hBREVSCisgICAgY2FzZSBHTF9DT01QVVRFX1NIQURFUjoKKyNlbmRpZgorICAgICAgcmV0dXJuIFRSVUU7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgfQorfQorCitzdGF0aWMgY29uc3QgZ2NoYXIgKgorX3NoYWRlcl90eXBlX3RvX3N0cmluZyAoR0xlbnVtIHR5cGUpCit7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgR0xfVkVSVEVYX1NIQURFUjoKKyAgICAgIHJldHVybiAidmVydGV4IjsKKyAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURFUjoKKyAgICAgIHJldHVybiAiZnJhZ21lbnQiOworI2lmZGVmIEdMX1RFU1NfQ09OVFJPTF9TSEFERVIKKyAgICBjYXNlIEdMX1RFU1NfQ09OVFJPTF9TSEFERVI6CisgICAgICByZXR1cm4gInRlc3NlbGF0aW9uIGNvbnRyb2wiOworI2VuZGlmCisjaWZkZWYgR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUgorICAgIGNhc2UgR0xfVEVTU19FVkFMVUFUSU9OX1NIQURFUjoKKyAgICAgIHJldHVybiAidGVzc2VsYXRpb24gZXZhbHVhdGlvbiI7CisjZW5kaWYKKyNpZmRlZiBHTF9HRU9NRVRSWV9TSEFERVIKKyAgICBjYXNlIEdMX0dFT01FVFJZX1NIQURFUjoKKyAgICAgIHJldHVybiAiZ2VvbWV0cnkiOworI2VuZGlmCisjaWZkZWYgR0xfQ09NUFVURV9TSEFERVIKKyAgICBjYXNlIEdMX0NPTVBVVEVfU0hBREVSOgorICAgICAgcmV0dXJuICJjb21wdXRlIjsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gInVua25vd24iOworICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2Vuc3VyZV9zaGFkZXIgKEdzdEdMU0xTdGFnZSAqIHN0YWdlKQoreworICBpZiAoc3RhZ2UtPnByaXYtPmhhbmRsZSkKKyAgICByZXR1cm4gVFJVRTsKKworICBpZiAoIShzdGFnZS0+cHJpdi0+aGFuZGxlID0KKyAgICAgICAgICBzdGFnZS0+cHJpdi0+dnRhYmxlLkNyZWF0ZVNoYWRlciAoc3RhZ2UtPnByaXYtPnR5cGUpKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgcmV0dXJuIHN0YWdlLT5wcml2LT5oYW5kbGUgIT0gMDsKK30KKworLyoqCisgKiBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmdzOgorICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAorICogQHR5cGU6IHRoZSBHTCBlbnVtIHNoYWRlciBzdGFnZSB0eXBlCisgKiBAdmVyc2lvbjogdGhlICNHc3RHTFNMVmVyc2lvbgorICogQHByb2ZpbGU6IHRoZSAjR3N0R0xTTFByb2ZpbGUKKyAqIEBuX3N0cmluZ3M6IHRoZSBudW1iZXIgb2Ygc3RyaW5ncyBpbiBAc3RyCisgKiBAc3RyOiBhbiBhcnJheSBvZiBzdHJpbmdzIGNvbmNhdHRlZCB0b2dldGhlciB0byBwcm9kdWNlIGEgc2hhZGVyCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyAjR3N0R0xTTFN0YWdlIG9mIHRoZSBzcGVjaWZpZWQgQHR5cGUKKyAqLworR3N0R0xTTFN0YWdlICoKK2dzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZ3MgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGd1aW50IHR5cGUsCisgICAgR3N0R0xTTFZlcnNpb24gdmVyc2lvbiwgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZSwgZ2ludCBuX3N0cmluZ3MsCisgICAgY29uc3QgZ2NoYXIgKiogc3RyKQoreworICBHc3RHTFNMU3RhZ2UgKnN0YWdlOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIE5VTEwpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoX2lzX3ZhbGlkX3NoYWRlcl90eXBlICh0eXBlKSwgTlVMTCk7CisKKyAgc3RhZ2UgPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX0dMU0xfU1RBR0UsIE5VTEwpOworICAvKiBGSVhNRTogR0luaXR0YWJsZSAqLworICBpZiAoIV9nc3RfZ2xzbF9mdW5jc19maWxsICgmc3RhZ2UtPnByaXYtPnZ0YWJsZSwgY29udGV4dCkpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzdGFnZSk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICBzdGFnZS0+Y29udGV4dCA9IGdzdF9vYmplY3RfcmVmIChjb250ZXh0KTsKKyAgc3RhZ2UtPnByaXYtPnR5cGUgPSB0eXBlOworICBpZiAoIWdzdF9nbHNsX3N0YWdlX3NldF9zdHJpbmdzIChzdGFnZSwgdmVyc2lvbiwgcHJvZmlsZSwgbl9zdHJpbmdzLCBzdHIpKSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc3RhZ2UpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgcmV0dXJuIHN0YWdlOworfQorCisvKioKKyAqIGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZzoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEB0eXBlOiB0aGUgR0wgZW51bSBzaGFkZXIgc3RhZ2UgdHlwZQorICogQHZlcnNpb246IHRoZSAjR3N0R0xTTFZlcnNpb24KKyAqIEBwcm9maWxlOiB0aGUgI0dzdEdMU0xQcm9maWxlCisgKiBAc3RyOiBhIHNoYWRlciBzdHJpbmcKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3ICNHc3RHTFNMU3RhZ2Ugb2YgdGhlIHNwZWNpZmllZCBAdHlwZQorICovCitHc3RHTFNMU3RhZ2UgKgorZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBndWludCB0eXBlLAorICAgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb24sIEdzdEdMU0xQcm9maWxlIHByb2ZpbGUsIGNvbnN0IGdjaGFyICogc3RyKQoreworICByZXR1cm4gZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5ncyAoY29udGV4dCwgdHlwZSwgdmVyc2lvbiwgcHJvZmlsZSwgMSwKKyAgICAgICZzdHIpOworfQorCisvKioKKyAqIGdzdF9nbHNsX3N0YWdlX25ldzoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEB0eXBlOiB0aGUgR0wgZW51bSBzaGFkZXIgc3RhZ2UgdHlwZQorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXcgI0dzdEdMU0xTdGFnZSBvZiB0aGUgc3BlY2lmaWVkIEB0eXBlCisgKi8KK0dzdEdMU0xTdGFnZSAqCitnc3RfZ2xzbF9zdGFnZV9uZXcgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGd1aW50IHR5cGUpCit7CisgIHJldHVybiBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmcgKGNvbnRleHQsIHR5cGUsIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwKKyAgICAgIEdTVF9HTFNMX1BST0ZJTEVfTk9ORSwgTlVMTCk7Cit9CisKKy8qKgorICogZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfZGVmYXVsdF92ZXJ0ZXg6CisgKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0CisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyAjR3N0R0xTTFN0YWdlIHdpdGggdGhlIGRlZmF1bHQgdmVydGV4IHNoYWRlcgorICovCitHc3RHTFNMU3RhZ2UgKgorZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfdmVydGV4IChHc3RHTENvbnRleHQgKiBjb250ZXh0KQoreworICByZXR1cm4gZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCBHTF9WRVJURVhfU0hBREVSLAorICAgICAgR1NUX0dMU0xfVkVSU0lPTl9OT05FLAorICAgICAgR1NUX0dMU0xfUFJPRklMRV9FUyB8IEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwKKyAgICAgIGdzdF9nbF9zaGFkZXJfc3RyaW5nX3ZlcnRleF9kZWZhdWx0KTsKK30KKworLyoqCisgKiBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9kZWZhdWx0X2ZyYWdtZW50OgorICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXcgI0dzdEdMU0xTdGFnZSB3aXRoIHRoZSBkZWZhdWx0IGZyYWdtZW50IHNoYWRlcgorICovCitHc3RHTFNMU3RhZ2UgKgorZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfZnJhZ21lbnQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCit7CisgIHJldHVybiBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmcgKGNvbnRleHQsIEdMX0ZSQUdNRU5UX1NIQURFUiwKKyAgICAgIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwKKyAgICAgIEdTVF9HTFNMX1BST0ZJTEVfRVMgfCBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFksCisgICAgICBnc3RfZ2xfc2hhZGVyX3N0cmluZ19mcmFnbWVudF9kZWZhdWx0KTsKK30KKworLyoqCisgKiBnc3RfZ2xzbF9zdGFnZV9zZXRfc3RyaW5nczoKKyAqIEBzdGFnZTogYSAjR3N0R0xTTFN0YWdlCisgKiBAdmVyc2lvbjogYSAjR3N0R0xTTFZlcnNpb24KKyAqIEBwcm9maWxlOiBhICNHc3RHTFNMUHJvZmlsZQorICogQG5fc3RyaW5nczogbnVtYmVyIG9mIHN0cmluZ3MgaW4gQHN0cgorICogQHN0cjogKHRyYW5zZmVyIG5vbmUpOiBhIEdMU0wgc2hhZGVyIHN0cmluZworICoKKyAqIFJlcGxhY2VzIHRoZSBjdXJyZW50IHNoYWRlciBzdHJpbmcgd2l0aCBAc3RyLgorICovCitnYm9vbGVhbgorZ3N0X2dsc2xfc3RhZ2Vfc2V0X3N0cmluZ3MgKEdzdEdMU0xTdGFnZSAqIHN0YWdlLCBHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uLAorICAgIEdzdEdMU0xQcm9maWxlIHByb2ZpbGUsIGdpbnQgbl9zdHJpbmdzLCBjb25zdCBnY2hhciAqKiBzdHIpCit7CisgIGdpbnQgaTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMU0xfU1RBR0UgKHN0YWdlKSwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAobl9zdHJpbmdzID4gMCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoc3RyICE9IE5VTEwsIEZBTFNFKTsKKworICBpZiAoIWdzdF9nbF9jb250ZXh0X3N1cHBvcnRzX2dsc2xfcHJvZmlsZV92ZXJzaW9uIChzdGFnZS0+Y29udGV4dCwgdmVyc2lvbiwKKyAgICAgICAgICBwcm9maWxlKSkgeworICAgIGNvbnN0IGdjaGFyICp2ZXJzaW9uX3N0ciA9IGdzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nICh2ZXJzaW9uKTsKKyAgICBjb25zdCBnY2hhciAqcHJvZmlsZV9zdHIgPSBnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZyAocHJvZmlsZSk7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc3RhZ2UsICJHTCBjb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgdmVyc2lvbiAlcyBhbmQgIgorICAgICAgICAicHJvZmlsZSAlcyIsIHZlcnNpb25fc3RyLCBwcm9maWxlX3N0cik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgc3RhZ2UtPnByaXYtPnZlcnNpb24gPSB2ZXJzaW9uOworICBzdGFnZS0+cHJpdi0+cHJvZmlsZSA9IHByb2ZpbGU7CisKKyAgZm9yIChpID0gMDsgaSA8IHN0YWdlLT5wcml2LT5uX3N0cmluZ3M7IGkrKykgeworICAgIGdfZnJlZSAoc3RhZ2UtPnByaXYtPnN0cmluZ3NbaV0pOworICB9CisKKyAgaWYgKHN0YWdlLT5wcml2LT5uX3N0cmluZ3MgPCBuX3N0cmluZ3MpIHsKKyAgICAvKiBvbmx5IHJlYWxsb2MgaWYgd2UgbmVlZCBtb3JlIHNwYWNlICovCisgICAgZ19mcmVlIChzdGFnZS0+cHJpdi0+c3RyaW5ncyk7CisgICAgc3RhZ2UtPnByaXYtPnN0cmluZ3MgPSBnX25ldzAgKGdjaGFyICosIG5fc3RyaW5ncyk7CisgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgbl9zdHJpbmdzOyBpKyspCisgICAgc3RhZ2UtPnByaXYtPnN0cmluZ3NbaV0gPSBnX3N0cmR1cCAoc3RyW2ldKTsKKyAgc3RhZ2UtPnByaXYtPm5fc3RyaW5ncyA9IG5fc3RyaW5nczsKKworICByZXR1cm4gVFJVRTsKK30KKworLyoqCisgKiBnc3RfZ2xzbF9zdGFnZV9nZXRfc2hhZGVyX3R5cGU6CisgKiBAc3RhZ2U6IGEgI0dzdEdMU0xTdGFnZQorICoKKyAqIFJldHVybnM6IFRoZSBHTCBzaGFkZXIgdHlwZSBmb3IgdGhpcyBzaGFkZXIgc3RhZ2UKKyAqLworZ3VpbnQKK2dzdF9nbHNsX3N0YWdlX2dldF9zaGFkZXJfdHlwZSAoR3N0R0xTTFN0YWdlICogc3RhZ2UpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xTTF9TVEFHRSAoc3RhZ2UpLCAwKTsKKworICByZXR1cm4gc3RhZ2UtPnByaXYtPnR5cGU7Cit9CisKKy8qKgorICogZ3N0X2dsc2xfc3RhZ2VfZ2V0X2hhbmRsZToKKyAqIEBzdGFnZTogYSAjR3N0R0xTTFN0YWdlCisgKgorICogUmV0dXJuczogVGhlIEdMIGhhbmRsZSBmb3IgdGhpcyBzaGFkZXIgc3RhZ2UKKyAqLworZ3VpbnQKK2dzdF9nbHNsX3N0YWdlX2dldF9oYW5kbGUgKEdzdEdMU0xTdGFnZSAqIHN0YWdlKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMU0xfU1RBR0UgKHN0YWdlKSwgMCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzdGFnZS0+cHJpdi0+Y29tcGlsZWQsIDApOworCisgIHJldHVybiBzdGFnZS0+cHJpdi0+aGFuZGxlOworfQorCisvKioKKyAqIGdzdF9nbHNsX3N0YWdlX2dldF92ZXJzaW9uOgorICogQHN0YWdlOiBhICNHc3RHTFNMU3RhZ2UKKyAqCisgKiBSZXR1cm5zOiBUaGUgR0xTTCB2ZXJzaW9uIGZvciB0aGUgY3VycmVudCBzaGFkZXIgc3RhZ2UKKyAqLworR3N0R0xTTFZlcnNpb24KK2dzdF9nbHNsX3N0YWdlX2dldF92ZXJzaW9uIChHc3RHTFNMU3RhZ2UgKiBzdGFnZSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTFNMX1NUQUdFIChzdGFnZSksIDApOworCisgIHJldHVybiBzdGFnZS0+cHJpdi0+dmVyc2lvbjsKK30KKworLyoqCisgKiBnc3RfZ2xzbF9zdGFnZV9nZXRfcHJvZmlsZToKKyAqIEBzdGFnZTogYSAjR3N0R0xTTFN0YWdlCisgKgorICogUmV0dXJuczogVGhlIEdMU0wgcHJvZmlsZSBmb3IgdGhlIGN1cnJlbnQgc2hhZGVyIHN0YWdlCisgKi8KK0dzdEdMU0xQcm9maWxlCitnc3RfZ2xzbF9zdGFnZV9nZXRfcHJvZmlsZSAoR3N0R0xTTFN0YWdlICogc3RhZ2UpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xTTF9TVEFHRSAoc3RhZ2UpLCAwKTsKKworICByZXR1cm4gc3RhZ2UtPnByaXYtPnByb2ZpbGU7Cit9CisKK3N0YXRpYyB2b2lkCitfbWF5YmVfcHJlcGVuZF92ZXJzaW9uIChHc3RHTFNMU3RhZ2UgKiBzdGFnZSwgZ2NoYXIgKiogc2hhZGVyX3N0ciwKKyAgICBnaW50ICogbl92ZXJ0ZXhfc291cmNlcywgY29uc3QgZ2NoYXIgKioqIHZlcnRleF9zb3VyY2VzKQoreworICBnaW50IG4gPSAqbl92ZXJ0ZXhfc291cmNlczsKKyAgZ2Jvb2xlYW4gYWRkX2hlYWRlciA9IEZBTFNFOworICBnaW50IGksIGo7CisKKyAgLyogRklYTUU6IHRoaXMgYWxsIGFuIGVkdWNhdGVkIGd1ZXNzICovCisgIGlmIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChzdGFnZS0+Y29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wzLCAzLCAwKQorICAgICAgJiYgKHN0YWdlLT5wcml2LT5wcm9maWxlICYgR1NUX0dMU0xfUFJPRklMRV9FUykgIT0gMAorICAgICAgJiYgIV9nc3RfZ2xzbF9zaGFkZXJfc3RyaW5nX2ZpbmRfdmVyc2lvbiAoc2hhZGVyX3N0clswXSkpIHsKKyAgICBhZGRfaGVhZGVyID0gVFJVRTsKKyAgICBuKys7CisgIH0KKworICAqdmVydGV4X3NvdXJjZXMgPSBnX21hbGxvYzAgKG4gKiBzaXplb2YgKGdjaGFyICopKTsKKworICBpID0gMDsKKyAgaWYgKGFkZF9oZWFkZXIpCisgICAgKCp2ZXJ0ZXhfc291cmNlcylbaSsrXSA9IGVzMl92ZXJzaW9uX2hlYWRlcjsKKworICBmb3IgKGogPSAwOyBqIDwgc3RhZ2UtPnByaXYtPm5fc3RyaW5nczsgaSsrLCBqKyspCisgICAgKCp2ZXJ0ZXhfc291cmNlcylbaV0gPSBzaGFkZXJfc3RyW2pdOworICAqbl92ZXJ0ZXhfc291cmNlcyA9IG47Cit9CisKK3N0cnVjdCBjb21waWxlCit7CisgIEdzdEdMU0xTdGFnZSAqc3RhZ2U7CisgIEdFcnJvciAqKmVycm9yOworICBnYm9vbGVhbiByZXN1bHQ7Cit9OworCitzdGF0aWMgdm9pZAorX2NvbXBpbGVfc2hhZGVyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBzdHJ1Y3QgY29tcGlsZSAqZGF0YSkKK3sKKyAgR3N0R0xTTFN0YWdlUHJpdmF0ZSAqcHJpdiA9IGRhdGEtPnN0YWdlLT5wcml2OworICBHc3RHTFNMRnVuY3MgKnZ0YWJsZSA9ICZkYXRhLT5zdGFnZS0+cHJpdi0+dnRhYmxlOworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgY29uc3QgZ2NoYXIgKip2ZXJ0ZXhfc291cmNlczsKKyAgZ2NoYXIgaW5mb19idWZmZXJbMjA0OF07CisgIGdpbnQgbl92ZXJ0ZXhfc291cmNlczsKKyAgR0xpbnQgc3RhdHVzOworICBnaW50IGxlbjsKKyAgZ2ludCBpOworCisgIGlmIChkYXRhLT5zdGFnZS0+cHJpdi0+Y29tcGlsZWQpIHsKKyAgICBkYXRhLT5yZXN1bHQgPSBUUlVFOworICAgIHJldHVybjsKKyAgfQorCisgIGlmICghX2Vuc3VyZV9zaGFkZXIgKGRhdGEtPnN0YWdlKSkgeworICAgIGdfc2V0X2Vycm9yIChkYXRhLT5lcnJvciwgR1NUX0dMU0xfRVJST1IsIEdTVF9HTFNMX0VSUk9SX0NPTVBJTEUsCisgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBvYmplY3QiKTsKKyAgICBkYXRhLT5yZXN1bHQgPSBGQUxTRTsKKyAgICByZXR1cm47CisgIH0KKworICBuX3ZlcnRleF9zb3VyY2VzID0gZGF0YS0+c3RhZ2UtPnByaXYtPm5fc3RyaW5nczsKKyAgX21heWJlX3ByZXBlbmRfdmVyc2lvbiAoZGF0YS0+c3RhZ2UsIHByaXYtPnN0cmluZ3MsICZuX3ZlcnRleF9zb3VyY2VzLAorICAgICAgJnZlcnRleF9zb3VyY2VzKTsKKworICBHU1RfVFJBQ0VfT0JKRUNUIChkYXRhLT5zdGFnZSwgImNvbXBpbGluZyBzaGFkZXI6Iik7CisgIGZvciAoaSA9IDA7IGkgPCBuX3ZlcnRleF9zb3VyY2VzOyBpKyspIHsKKyAgICBHU1RfVFJBQ0VfT0JKRUNUIChkYXRhLT5zdGFnZSwgIiVzIiwgdmVydGV4X3NvdXJjZXNbaV0pOworICB9CisKKyAgZ2wtPlNoYWRlclNvdXJjZSAocHJpdi0+aGFuZGxlLCBuX3ZlcnRleF9zb3VyY2VzLAorICAgICAgKGNvbnN0IGdjaGFyICoqKSB2ZXJ0ZXhfc291cmNlcywgTlVMTCk7CisgIGdsLT5Db21waWxlU2hhZGVyIChwcml2LT5oYW5kbGUpOworICBnX2ZyZWUgKHZlcnRleF9zb3VyY2VzKTsKKyAgLyogRklYTUU6IHN1cHBvcnRlZCB0aHJlYWRlZCBHTFNMIGNvbXBpbGVycyBhbmQgZG9uJ3QgZGVzdHJveSBjb21waWxhdGlvbgorICAgKiBwZXJmb3JtYW5jZSBieSBnZXR0aW5nIHRoZSBjb21waWxhdGlvbiByZXN1bHQgZGlyZWN0bHkgYWZ0ZXIgY29tcGlsYXRpb24gKi8KKyAgc3RhdHVzID0gR0xfRkFMU0U7CisgIHZ0YWJsZS0+R2V0U2hhZGVyaXYgKHByaXYtPmhhbmRsZSwgR0xfQ09NUElMRV9TVEFUVVMsICZzdGF0dXMpOworCisgIGxlbiA9IDA7CisgIHZ0YWJsZS0+R2V0U2hhZGVySW5mb0xvZyAocHJpdi0+aGFuZGxlLCBzaXplb2YgKGluZm9fYnVmZmVyKSAtIDEsICZsZW4sCisgICAgICBpbmZvX2J1ZmZlcik7CisgIGluZm9fYnVmZmVyW2xlbl0gPSAnXDAnOworCisgIGlmIChzdGF0dXMgIT0gR0xfVFJVRSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGRhdGEtPnN0YWdlLCAiJXMgc2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZDolcyIsCisgICAgICAgIF9zaGFkZXJfdHlwZV90b19zdHJpbmcgKHByaXYtPnR5cGUpLCBpbmZvX2J1ZmZlcik7CisKKyAgICBnX3NldF9lcnJvciAoZGF0YS0+ZXJyb3IsIEdTVF9HTFNMX0VSUk9SLCBHU1RfR0xTTF9FUlJPUl9DT01QSUxFLAorICAgICAgICAiJXMgc2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZDolcyIsCisgICAgICAgIF9zaGFkZXJfdHlwZV90b19zdHJpbmcgKHByaXYtPnR5cGUpLCBpbmZvX2J1ZmZlcik7CisKKyAgICB2dGFibGUtPkRlbGV0ZVNoYWRlciAocHJpdi0+aGFuZGxlKTsKKyAgICBkYXRhLT5yZXN1bHQgPSBGQUxTRTsKKyAgICByZXR1cm47CisgIH0gZWxzZSBpZiAobGVuID4gMSkgeworICAgIEdTVF9GSVhNRV9PQkpFQ1QgKGRhdGEtPnN0YWdlLCAiJXMgc2hhZGVyIGluZm8gbG9nOiVzIiwKKyAgICAgICAgX3NoYWRlcl90eXBlX3RvX3N0cmluZyAocHJpdi0+dHlwZSksIGluZm9fYnVmZmVyKTsKKyAgfQorCisgIGRhdGEtPnJlc3VsdCA9IFRSVUU7Cit9CisKKy8qKgorICogZ3N0X2dsc2xfc3RhZ2VfY29tcGlsZToKKyAqIEBzdGFnZTogYSAjR3N0R0xTTFN0YWdlCisgKiBAZXJyb3I6IGEgI0dFcnJvciB0byB1c2Ugb24gZmFpbHVyZQorICoKKyAqIFJldHVybnM6IHdoZXRoZXIgdGhlIGNvbXBpbGF0aW9uIHN1Y2VlZGVkCisgKi8KK2dib29sZWFuCitnc3RfZ2xzbF9zdGFnZV9jb21waWxlIChHc3RHTFNMU3RhZ2UgKiBzdGFnZSwgR0Vycm9yICoqIGVycm9yKQoreworICBzdHJ1Y3QgY29tcGlsZSBkYXRhOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xTTF9TVEFHRSAoc3RhZ2UpLCBGQUxTRSk7CisKKyAgaWYgKCFzdGFnZS0+cHJpdi0+c3RyaW5ncykgeworICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMU0xfRVJST1IsIEdTVF9HTFNMX0VSUk9SX0NPTVBJTEUsCisgICAgICAgICJObyBzaGFkZXIgc291cmNlIHRvIGNvbXBpbGUiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBkYXRhLnN0YWdlID0gc3RhZ2U7CisgIGRhdGEuZXJyb3IgPSBlcnJvcjsKKworICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChzdGFnZS0+Y29udGV4dCwKKyAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfY29tcGlsZV9zaGFkZXIsICZkYXRhKTsKKworICBzdGFnZS0+cHJpdi0+Y29tcGlsZWQgPSBUUlVFOworCisgIHJldHVybiBkYXRhLnJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsc3RhZ2UuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsc3RhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWRjYmVjCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5oCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9HTFNMX1NUQUdFX0hfXworI2RlZmluZSBfX0dTVF9HTFNMX1NUQUdFX0hfXworCisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsc2wuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX0dMU0xfU1RBR0UgICAgICAgICAoZ3N0X2dsc2xfc3RhZ2VfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX0dMU0xfU1RBR0UobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9UWVBFX0dMU0xfU1RBR0UsIEdzdEdMU0xTdGFnZSkpCisjZGVmaW5lIEdTVF9HTFNMX1NUQUdFX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTKChrKSwgR1NUX1RZUEVfR0xTTF9TVEFHRSwgR3N0R0xTTFN0YWdlQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfR0xTTF9TVEFHRShvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX1RZUEVfR0xTTF9TVEFHRSkpCisjZGVmaW5lIEdTVF9JU19HTFNMX1NUQUdFX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfVFlQRV9HTFNMX1NUQUdFKSkKKyNkZWZpbmUgR1NUX0dMU0xfU1RBR0VfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX1RZUEVfR0xTTF9TVEFHRSwgR3N0R0xTTFN0YWdlQ2xhc3MpKQorCisvKioKKyAqIEdzdEdMU0xTdGFnZToKKyAqCisgKiBPcGFxdWUgI0dzdEdMU0xTdGFnZSBzdHJ1Y3QKKyAqLworc3RydWN0IF9Hc3RHTFNMU3RhZ2UKK3sKKyAgLyo8IHByaXZhdGUgPiovCisgIEdzdE9iamVjdCBwYXJlbnQ7CisKKyAgR3N0R0xDb250ZXh0ICpjb250ZXh0OworCisgIEdzdEdMU0xTdGFnZVByaXZhdGUgKnByaXY7CisKKyAgZ3BvaW50ZXIgX3BhZGRpbmdbR1NUX1BBRERJTkddOworfTsKKworLyoqCisgKiBHc3RHTFNMU3RhZ2VDbGFzczoKKyAqCisgKiBPcGFxdWUgI0dzdEdMU0xTdGFnZUNsYXNzIHN0cnVjdAorICovCitzdHJ1Y3QgX0dzdEdMU0xTdGFnZUNsYXNzCit7CisgIC8qPCBwcml2YXRlID4qLworICBHc3RPYmplY3RDbGFzcyBwYXJlbnQ7Cit9OworCitHVHlwZSAgICAgICAgICBnc3RfZ2xzbF9zdGFnZV9nZXRfdHlwZSAgICAgICAgICAodm9pZCk7CitHc3RHTFNMU3RhZ2UgKiBnc3RfZ2xzbF9zdGFnZV9uZXcgICAgICAgICAgICAgICAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgZ3VpbnQgdHlwZSk7CitHc3RHTFNMU3RhZ2UgKiBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmcgICAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIHN0cik7CitHc3RHTFNMU3RhZ2UgKiBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmdzICAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IG5fc3RyaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqKiBzdHIpOworCitHc3RHTFNMU3RhZ2UgKiBnc3RfZ2xzbF9zdGFnZV9uZXdfZGVmYXVsdF9mcmFnbWVudCAoR3N0R0xDb250ZXh0ICogY29udGV4dCk7CitHc3RHTFNMU3RhZ2UgKiBnc3RfZ2xzbF9zdGFnZV9uZXdfZGVmYXVsdF92ZXJ0ZXggICAoR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisKK2d1aW50ICAgICAgICAgIGdzdF9nbHNsX3N0YWdlX2dldF9oYW5kbGUgICAgICAgIChHc3RHTFNMU3RhZ2UgKiBzdGFnZSk7CitHc3RHTFNMUHJvZmlsZSBnc3RfZ2xzbF9zdGFnZV9nZXRfcHJvZmlsZSAgICAgICAoR3N0R0xTTFN0YWdlICogc3RhZ2UpOworR3N0R0xTTFZlcnNpb24gZ3N0X2dsc2xfc3RhZ2VfZ2V0X3ZlcnNpb24gICAgICAgKEdzdEdMU0xTdGFnZSAqIHN0YWdlKTsKK2d1aW50ICAgICAgICAgIGdzdF9nbHNsX3N0YWdlX2dldF9zaGFkZXJfdHlwZSAgIChHc3RHTFNMU3RhZ2UgKiBzdGFnZSk7CitnYm9vbGVhbiAgICAgICBnc3RfZ2xzbF9zdGFnZV9zZXRfc3RyaW5ncyAgICAgICAoR3N0R0xTTFN0YWdlICogc3RhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xTTFZlcnNpb24gdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFNMUHJvZmlsZSBwcm9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgbl9zdHJpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICoqIHN0cik7CitnYm9vbGVhbiAgICAgICBnc3RfZ2xzbF9zdGFnZV9jb21waWxlICAgICAgICAgICAoR3N0R0xTTFN0YWdlICogc3RhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycm9yKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX0dMU0xfU1RBR0VfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzeW5jbWV0YS5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc3luY21ldGEuYwppbmRleCBmNjgwMzUzLi5iNDA2MWQzIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzeW5jbWV0YS5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmMKQEAgLTM3LDEzICszNyw5MSBAQAogI2lmbmRlZiBHTF9USU1FT1VUX0VYUElSRUQKICNkZWZpbmUgR0xfVElNRU9VVF9FWFBJUkVEIDB4OTExQgogI2VuZGlmCisjaWZuZGVmIEdMX1RJTUVPVVRfSUdOT1JFRAorI2RlZmluZSBHTF9USU1FT1VUX0lHTk9SRUQgR19HVUlOVDY0X0NPTlNUQU5UKDB4RkZGRkZGRkZGRkZGRkZGRikKKyNlbmRpZgorCitzdGF0aWMgdm9pZAorX2RlZmF1bHRfc2V0X3N5bmNfZ2wgKEdzdEdMU3luY01ldGEgKiBzeW5jX21ldGEsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworCisgIGlmIChnbC0+RmVuY2VTeW5jKSB7CisgICAgaWYgKHN5bmNfbWV0YS0+ZGF0YSkgeworICAgICAgR1NUX0xPRyAoImRlbGV0aW5nIHN5bmMgb2JqZWN0ICVwIiwgc3luY19tZXRhLT5kYXRhKTsKKyAgICAgIGdsLT5EZWxldGVTeW5jICgoR0xzeW5jKSBzeW5jX21ldGEtPmRhdGEpOworICAgIH0KKyAgICBzeW5jX21ldGEtPmRhdGEgPQorICAgICAgICAoZ3BvaW50ZXIpIGdsLT5GZW5jZVN5bmMgKEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFLCAwKTsKKworICAgIGlmIChnc3RfZ2xfY29udGV4dF9pc19zaGFyZWQgKGNvbnRleHQpKQorICAgICAgLyogaWYgd2Ugb25seSBoYXZlIGEgc2luZ2xlIGNvbnRleHQsIHRoZSB3YWl0IHdpbGwgZmx1c2ggZm9yIHVzICovCisgICAgICBnbC0+Rmx1c2ggKCk7CisgICAgR1NUX0xPRyAoInNldHRpbmcgc3luYyBvYmplY3QgJXAiLCBzeW5jX21ldGEtPmRhdGEpOworICB9IGVsc2UgeworICAgIC8qIFhYWDogdGhpcyBhIGxpdHRsZSBvdmVyIHRoZSB0b3AgaWYgdGhlIENQVSBpcyBuZXZlciBnb2luZyB0bworICAgICAqIGFjY2VzcyB0aGUgZGF0YSwgaG93ZXZlciB0aGlzIGlzIHRoZSBsZWdhY3kgcGF0aCwgc28uLi4gKi8KKyAgICBnbC0+RmluaXNoICgpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitfZGVmYXVsdF93YWl0X2dsIChHc3RHTFN5bmNNZXRhICogc3luY19tZXRhLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBpZiAoc3luY19tZXRhLT5kYXRhICYmIGdsLT5XYWl0U3luYykgeworICAgIEdTVF9MT0cgKCJ3YWl0aW5nIG9uIHN5bmMgb2JqZWN0ICVwIiwgc3luY19tZXRhLT5kYXRhKTsKKyAgICBnbC0+V2FpdFN5bmMgKChHTHN5bmMpIHN5bmNfbWV0YS0+ZGF0YSwgMCwgR0xfVElNRU9VVF9JR05PUkVEKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorX2RlZmF1bHRfd2FpdF9jcHVfZ2wgKEdzdEdMU3luY01ldGEgKiBzeW5jX21ldGEsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworICBHTGVudW0gcmVzOworCisgIGlmIChzeW5jX21ldGEtPmRhdGEgJiYgZ2wtPkNsaWVudFdhaXRTeW5jKSB7CisgICAgZG8geworICAgICAgR1NUX0xPRyAoIndhaXRpbmcgb24gc3luYyBvYmplY3QgJXAiLCBzeW5jX21ldGEtPmRhdGEpOworICAgICAgcmVzID0KKyAgICAgICAgICBnbC0+Q2xpZW50V2FpdFN5bmMgKChHTHN5bmMpIHN5bmNfbWV0YS0+ZGF0YSwKKyAgICAgICAgICBHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVCwgMTAwMDAwMDAwMCAvKiAxcyAqLyApOworICAgIH0gd2hpbGUgKHJlcyA9PSBHTF9USU1FT1VUX0VYUElSRUQpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitfZGVmYXVsdF9jb3B5IChHc3RHTFN5bmNNZXRhICogc3JjLCBHc3RCdWZmZXIgKiBzYnVmZmVyLCBHc3RHTFN5bmNNZXRhICogZGVzdCwKKyAgICBHc3RCdWZmZXIgKiBkYnVmZmVyKQoreworICBHU1RfTE9HICgiY29weSBzeW5jIG9iamVjdCAlcCBmcm9tIG1ldGEgJXAgdG8gJXAiLCBzcmMtPmRhdGEsIHNyYywgZGVzdCk7CisKKyAgLyogU2V0dGluZyBhIHN5bmMgcG9pbnQgaGVyZSByZWxpZXMgb24gR3N0QnVmZmVyIGNvcHlpbmcKKyAgICogbWV0YXMgYWZ0ZXIgZGF0YSAqLworICBnc3RfZ2xfc3luY19tZXRhX3NldF9zeW5jX3BvaW50IChzcmMsIHNyYy0+Y29udGV4dCk7Cit9CisKK3N0YXRpYyB2b2lkCitfZGVmYXVsdF9mcmVlX2dsIChHc3RHTFN5bmNNZXRhICogc3luY19tZXRhLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBpZiAoc3luY19tZXRhLT5kYXRhKSB7CisgICAgR1NUX0xPRyAoImRlbGV0aW5nIHN5bmMgb2JqZWN0ICVwIiwgc3luY19tZXRhLT5kYXRhKTsKKyAgICBnbC0+RGVsZXRlU3luYyAoKEdMc3luYykgc3luY19tZXRhLT5kYXRhKTsKKyAgICBzeW5jX21ldGEtPmRhdGEgPSBOVUxMOworICB9Cit9CiAKIEdzdEdMU3luY01ldGEgKgotZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RCdWZmZXIgKiBidWZmZXIpCitnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGFfZnVsbCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0QnVmZmVyICogYnVmZmVyLAorICAgIGdwb2ludGVyIGRhdGEpCiB7CiAgIEdzdEdMU3luY01ldGEgKm1ldGE7CiAKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUIChjb250ZXh0KSwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIE5VTEwpOwogCiAgIG1ldGEgPQogICAgICAgKEdzdEdMU3luY01ldGEgKikgZ3N0X2J1ZmZlcl9hZGRfbWV0YSAoKGJ1ZmZlciksIEdTVF9HTF9TWU5DX01FVEFfSU5GTywKQEAgLTUzLDYwICsxMzEsODMgQEAKICAgICByZXR1cm4gTlVMTDsKIAogICBtZXRhLT5jb250ZXh0ID0gZ3N0X29iamVjdF9yZWYgKGNvbnRleHQpOwotICBtZXRhLT5nbHN5bmMgPSBOVUxMOworICBtZXRhLT5kYXRhID0gZGF0YTsKIAogICByZXR1cm4gbWV0YTsKIH0KIAorR3N0R0xTeW5jTWV0YSAqCitnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGEgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKK3sKKyAgR3N0R0xTeW5jTWV0YSAqcmV0ID0gZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhX2Z1bGwgKGNvbnRleHQsIGJ1ZmZlciwgTlVMTCk7CisgIGlmICghcmV0KQorICAgIHJldHVybiBOVUxMOworCisgIHJldC0+c2V0X3N5bmNfZ2wgPSBfZGVmYXVsdF9zZXRfc3luY19nbDsKKyAgcmV0LT53YWl0X2dsID0gX2RlZmF1bHRfd2FpdF9nbDsKKyAgcmV0LT53YWl0X2NwdV9nbCA9IF9kZWZhdWx0X3dhaXRfY3B1X2dsOworICByZXQtPmNvcHkgPSBfZGVmYXVsdF9jb3B5OworICByZXQtPmZyZWVfZ2wgPSBfZGVmYXVsdF9mcmVlX2dsOworCisgIHJldHVybiByZXQ7Cit9CisKIHN0YXRpYyB2b2lkCiBfc2V0X3N5bmNfcG9pbnQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMU3luY01ldGEgKiBzeW5jX21ldGEpCiB7Ci0gIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworICBnX2Fzc2VydCAoc3luY19tZXRhLT5zZXRfc3luY19nbCAhPSBOVUxMKTsKIAotICBpZiAoZ2wtPkZlbmNlU3luYykgewotICAgIGlmIChzeW5jX21ldGEtPmdsc3luYykgewotICAgICAgR1NUX0xPRyAoImRlbGV0aW5nIHN5bmMgb2JqZWN0ICVwIiwgc3luY19tZXRhLT5nbHN5bmMpOwotICAgICAgZ2wtPkRlbGV0ZVN5bmMgKHN5bmNfbWV0YS0+Z2xzeW5jKTsKLSAgICB9Ci0gICAgc3luY19tZXRhLT5nbHN5bmMgPSBnbC0+RmVuY2VTeW5jIChHTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURSwgMCk7Ci0gICAgZ2wtPkZsdXNoICgpOwotICAgIEdTVF9MT0cgKCJzZXR0aW5nIHN5bmMgb2JqZWN0ICVwIiwgc3luY19tZXRhLT5nbHN5bmMpOwotICB9IGVsc2UgewotICAgIGdsLT5GaW5pc2ggKCk7Ci0gIH0KKyAgR1NUX0xPRyAoInNldHRpbmcgc3luYyBwb2ludCAlcCIsIHN5bmNfbWV0YSk7CisgIHN5bmNfbWV0YS0+c2V0X3N5bmNfZ2wgKHN5bmNfbWV0YSwgY29udGV4dCk7CiB9CiAKIHZvaWQKIGdzdF9nbF9zeW5jX21ldGFfc2V0X3N5bmNfcG9pbnQgKEdzdEdMU3luY01ldGEgKiBzeW5jX21ldGEsCiAgICAgR3N0R0xDb250ZXh0ICogY29udGV4dCkKIHsKLSAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoY29udGV4dCwKLSAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfc2V0X3N5bmNfcG9pbnQsIHN5bmNfbWV0YSk7CisgIGlmIChzeW5jX21ldGEtPnNldF9zeW5jKQorICAgIHN5bmNfbWV0YS0+c2V0X3N5bmMgKHN5bmNfbWV0YSwgY29udGV4dCk7CisgIGVsc2UKKyAgICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChjb250ZXh0LAorICAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX3NldF9zeW5jX3BvaW50LCBzeW5jX21ldGEpOwogfQogCiBzdGF0aWMgdm9pZAogX3dhaXQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMU3luY01ldGEgKiBzeW5jX21ldGEpCiB7Ci0gIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOwotICBHTGVudW0gcmVzOworICBnX2Fzc2VydCAoc3luY19tZXRhLT53YWl0X2dsICE9IE5VTEwpOwogCi0gIGlmIChnbC0+Q2xpZW50V2FpdFN5bmMpIHsKLSAgICBkbyB7Ci0gICAgICBHU1RfTE9HICgid2FpdGluZyBvbiBzeW5jIG9iamVjdCAlcCIsIHN5bmNfbWV0YS0+Z2xzeW5jKTsKLSAgICAgIHJlcyA9Ci0gICAgICAgICAgZ2wtPkNsaWVudFdhaXRTeW5jIChzeW5jX21ldGEtPmdsc3luYywgR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVQsCi0gICAgICAgICAgMTAwMDAwMDAwMCAvKiAxcyAqLyApOwotICAgIH0gd2hpbGUgKHJlcyA9PSBHTF9USU1FT1VUX0VYUElSRUQpOwotICB9CisgIEdTVF9MT0cgKCJ3YWl0aW5nICVwIiwgc3luY19tZXRhKTsKKyAgc3luY19tZXRhLT53YWl0X2dsIChzeW5jX21ldGEsIGNvbnRleHQpOwogfQogCiB2b2lkCiBnc3RfZ2xfc3luY19tZXRhX3dhaXQgKEdzdEdMU3luY01ldGEgKiBzeW5jX21ldGEsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCiB7Ci0gIGlmIChzeW5jX21ldGEtPmdsc3luYykgeworICBpZiAoc3luY19tZXRhLT53YWl0KQorICAgIHN5bmNfbWV0YS0+d2FpdCAoc3luY19tZXRhLCBjb250ZXh0KTsKKyAgZWxzZQogICAgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGNvbnRleHQsCiAgICAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfd2FpdCwgc3luY19tZXRhKTsKLSAgfQorfQorCitzdGF0aWMgdm9pZAorX3dhaXRfY3B1IChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTFN5bmNNZXRhICogc3luY19tZXRhKQoreworICBnX2Fzc2VydCAoc3luY19tZXRhLT53YWl0X2NwdV9nbCAhPSBOVUxMKTsKKworICBHU1RfTE9HICgid2FpdGluZyAlcCIsIHN5bmNfbWV0YSk7CisgIHN5bmNfbWV0YS0+d2FpdF9jcHVfZ2wgKHN5bmNfbWV0YSwgY29udGV4dCk7Cit9CisKK3ZvaWQKK2dzdF9nbF9zeW5jX21ldGFfd2FpdF9jcHUgKEdzdEdMU3luY01ldGEgKiBzeW5jX21ldGEsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCit7CisgIGlmIChzeW5jX21ldGEtPndhaXRfY3B1KQorICAgIHN5bmNfbWV0YS0+d2FpdF9jcHUgKHN5bmNfbWV0YSwgY29udGV4dCk7CisgIGVsc2UKKyAgICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChjb250ZXh0LAorICAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX3dhaXRfY3B1LCBzeW5jX21ldGEpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KQEAgLTEyMCwxOSArMjIxLDI2IEBACiAgIGlmIChHU1RfTUVUQV9UUkFOU0ZPUk1fSVNfQ09QWSAodHlwZSkpIHsKICAgICBHc3RNZXRhVHJhbnNmb3JtQ29weSAqY29weSA9IGRhdGE7CiAKKyAgICBnX2Fzc2VydCAoc21ldGEtPmNvcHkgIT0gTlVMTCk7CisKICAgICBpZiAoIWNvcHktPnJlZ2lvbikgewogICAgICAgLyogb25seSBjb3B5IGlmIHRoZSBjb21wbGV0ZSBkYXRhIGlzIGNvcGllZCBhcyB3ZWxsICovCi0gICAgICBkbWV0YSA9IGdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YSAoc21ldGEtPmNvbnRleHQsIGRlc3QpOwotCisgICAgICBkbWV0YSA9IGdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YV9mdWxsIChzbWV0YS0+Y29udGV4dCwgZGVzdCwgTlVMTCk7CiAgICAgICBpZiAoIWRtZXRhKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICAgIEdTVF9MT0cgKCJjb3B5IHN5bmMgb2JqZWN0ICVwIGZyb20gbWV0YSAlcCB0byAlcCIsIHNtZXRhLT5nbHN5bmMsCi0gICAgICAgICAgc21ldGEsIGRtZXRhKTsKKyAgICAgIGRtZXRhLT5zZXRfc3luYyA9IHNtZXRhLT5zZXRfc3luYzsKKyAgICAgIGRtZXRhLT5zZXRfc3luY19nbCA9IHNtZXRhLT5zZXRfc3luY19nbDsKKyAgICAgIGRtZXRhLT53YWl0ID0gc21ldGEtPndhaXQ7CisgICAgICBkbWV0YS0+d2FpdF9nbCA9IHNtZXRhLT53YWl0X2dsOworICAgICAgZG1ldGEtPndhaXRfY3B1ID0gc21ldGEtPndhaXRfY3B1OworICAgICAgZG1ldGEtPndhaXRfY3B1X2dsID0gc21ldGEtPndhaXRfY3B1X2dsOworICAgICAgZG1ldGEtPmNvcHkgPSBzbWV0YS0+Y29weTsKKyAgICAgIGRtZXRhLT5mcmVlID0gc21ldGEtPmZyZWU7CisgICAgICBkbWV0YS0+ZnJlZV9nbCA9IHNtZXRhLT5mcmVlX2dsOwogCi0gICAgICAvKiBTZXR0aW5nIGEgc3luYyBwb2ludCBoZXJlIHJlbGllcyBvbiBHc3RCdWZmZXIgY29weWluZwotICAgICAgICogbWV0YXMgYWZ0ZXIgZGF0YSAqLwotICAgICAgZ3N0X2dsX3N5bmNfbWV0YV9zZXRfc3luY19wb2ludCAoZG1ldGEsIHNtZXRhLT5jb250ZXh0KTsKKyAgICAgIEdTVF9MT0cgKCJjb3B5aW5nIHN5bmMgbWV0YSAlcCBpbnRvICVwIiwgc21ldGEsIGRtZXRhKTsKKyAgICAgIHNtZXRhLT5jb3B5IChzbWV0YSwgYnVmZmVyLCBkbWV0YSwgZGVzdCk7CiAgICAgfQogICB9IGVsc2UgewogICAgIC8qIHJldHVybiBGQUxTRSwgaWYgdHJhbnNmb3JtIHR5cGUgaXMgbm90IHN1cHBvcnRlZCAqLwpAQCAtMTQ1LDIyICsyNTMsMjEgQEAKIHN0YXRpYyB2b2lkCiBfZnJlZV9nbF9zeW5jX21ldGEgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMU3luY01ldGEgKiBzeW5jX21ldGEpCiB7Ci0gIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworICBnX2Fzc2VydCAoc3luY19tZXRhLT5mcmVlX2dsICE9IE5VTEwpOwogCi0gIGlmIChzeW5jX21ldGEtPmdsc3luYykgewotICAgIEdTVF9MT0cgKCJkZWxldGluZyBzeW5jIG9iamVjdCAlcCIsIHN5bmNfbWV0YS0+Z2xzeW5jKTsKLSAgICBnbC0+RGVsZXRlU3luYyAoc3luY19tZXRhLT5nbHN5bmMpOwotICAgIHN5bmNfbWV0YS0+Z2xzeW5jID0gTlVMTDsKLSAgfQorICBHU1RfTE9HICgiZnJlZSBzeW5jIG1ldGEgJXAiLCBzeW5jX21ldGEpOworICBzeW5jX21ldGEtPmZyZWVfZ2wgKHN5bmNfbWV0YSwgY29udGV4dCk7CiB9CiAKIHN0YXRpYyB2b2lkCiBfZ3N0X2dsX3N5bmNfbWV0YV9mcmVlIChHc3RHTFN5bmNNZXRhICogc3luY19tZXRhLCBHc3RCdWZmZXIgKiBidWZmZXIpCiB7Ci0gIGlmIChzeW5jX21ldGEtPmdsc3luYykgeworICBpZiAoc3luY19tZXRhLT5mcmVlKQorICAgIHN5bmNfbWV0YS0+ZnJlZSAoc3luY19tZXRhLCBzeW5jX21ldGEtPmNvbnRleHQpOworICBlbHNlCiAgICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoc3luY19tZXRhLT5jb250ZXh0LAogICAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2ZyZWVfZ2xfc3luY19tZXRhLCBzeW5jX21ldGEpOwotICB9CisKICAgZ3N0X29iamVjdF91bnJlZiAoc3luY19tZXRhLT5jb250ZXh0KTsKIH0KIApAQCAtMTc3LDcgKzI4NCwxNiBAQAogICB9CiAKICAgc3luY19tZXRhLT5jb250ZXh0ID0gTlVMTDsKLSAgc3luY19tZXRhLT5nbHN5bmMgPSBOVUxMOworICBzeW5jX21ldGEtPmRhdGEgPSBOVUxMOworICBzeW5jX21ldGEtPnNldF9zeW5jID0gTlVMTDsKKyAgc3luY19tZXRhLT5zZXRfc3luY19nbCA9IE5VTEw7CisgIHN5bmNfbWV0YS0+d2FpdCA9IE5VTEw7CisgIHN5bmNfbWV0YS0+d2FpdF9nbCA9IE5VTEw7CisgIHN5bmNfbWV0YS0+d2FpdF9jcHUgPSBOVUxMOworICBzeW5jX21ldGEtPndhaXRfY3B1X2dsID0gTlVMTDsKKyAgc3luY19tZXRhLT5jb3B5ID0gTlVMTDsKKyAgc3luY19tZXRhLT5mcmVlID0gTlVMTDsKKyAgc3luY19tZXRhLT5mcmVlX2dsID0gTlVMTDsKIAogICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzeW5jbWV0YS5oCmluZGV4IDlkNzk0MzUuLmU1ZWIxN2IgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc3luY21ldGEuaApAQCAtMzIsMTIgKzMyLDIxIEBACiAjZGVmaW5lIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfU1lOQ19NRVRBICJHc3RCdWZmZXJQb29sT3B0aW9uR0xTeW5jTWV0YSIKIAogc3RydWN0IF9Hc3RHTFN5bmNNZXRhIHsKLSAgLyo8IHByaXZhdGUgPiovCiAgIEdzdE1ldGEgcGFyZW50OwogCiAgIEdzdEdMQ29udGV4dCAqY29udGV4dDsKIAotICBHTHN5bmMgICAgICAgIGdsc3luYzsKKyAgZ3BvaW50ZXIgICAgICBkYXRhOworCisgIHZvaWQgKCpzZXRfc3luYykgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKKyAgdm9pZCAoKnNldF9zeW5jX2dsKSAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworICB2b2lkICgqd2FpdCkgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKKyAgdm9pZCAoKndhaXRfZ2wpIChHc3RHTFN5bmNNZXRhICogc3luYywgR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisgIHZvaWQgKCp3YWl0X2NwdSkgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKKyAgdm9pZCAoKndhaXRfY3B1X2dsKSAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworICB2b2lkICgqY29weSkgKEdzdEdMU3luY01ldGEgKiBzcmMsIEdzdEJ1ZmZlciAqIHNidWZmZXIsIEdzdEdMU3luY01ldGEgKiBkZXN0LCBHc3RCdWZmZXIgKiBkYnVmZmVyKTsKKyAgdm9pZCAoKmZyZWUpIChHc3RHTFN5bmNNZXRhICogc3luYywgR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisgIHZvaWQgKCpmcmVlX2dsKSAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOwogfTsKIAogR1R5cGUgZ3N0X2dsX3N5bmNfbWV0YV9hcGlfZ2V0X3R5cGUgKHZvaWQpOwpAQCAtNDYsOCArNTUsMTEgQEAKICNkZWZpbmUgZ3N0X2J1ZmZlcl9nZXRfZ2xfc3luY19tZXRhKGIpICgoR3N0R0xTeW5jTWV0YSopZ3N0X2J1ZmZlcl9nZXRfbWV0YSgoYiksR1NUX0dMX1NZTkNfTUVUQV9BUElfVFlQRSkpCiAKIEdzdEdMU3luY01ldGEgKiAgICAgZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhICAgICAgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEJ1ZmZlciAqYnVmZmVyKTsKK0dzdEdMU3luY01ldGEgKiAgICAgZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhX2Z1bGwgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEJ1ZmZlciAqIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIGRhdGEpOwogdm9pZCAgICAgICAgICAgICAgICBnc3RfZ2xfc3luY19tZXRhX3NldF9zeW5jX3BvaW50ICAgICAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOwogdm9pZCAgICAgICAgICAgICAgICBnc3RfZ2xfc3luY19tZXRhX3dhaXQgICAgICAgICAgICAgICAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOwordm9pZCAgICAgICAgICAgICAgICBnc3RfZ2xfc3luY19tZXRhX3dhaXRfY3B1ICAgICAgICAgICAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jCmluZGV4IDBhZGRjYTEuLmViMjVlMTUgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jCkBAIC0zMSw2ICszMSwxMCBAQAogI2luY2x1ZGUgImVnbC9nc3RlZ2xpbWFnZW1lbW9yeS5oIgogI2VuZGlmCiAKKyNpZiBHU1RfR0xfSEFWRV9ETUFCVUYKKyNpbmNsdWRlIDxnc3QvYWxsb2NhdG9ycy9nc3RkbWFidWYuaD4KKyNlbmRpZgorCiAvKioKICAqIFNFQ1RJT046Z3N0Z2x1cGxvYWQKICAqIEBzaG9ydF9kZXNjcmlwdGlvbjogYW4gb2JqZWN0IHRoYXQgdXBsb2FkcyB0byBHTCB0ZXh0dXJlcwpAQCAtNTYsMTEgKzYwLDI3IEBACiBHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0R0xVcGxvYWQsIGdzdF9nbF91cGxvYWQsIEdTVF9UWVBFX09CSkVDVCwKICAgICBERUJVR19JTklUKTsKIHN0YXRpYyB2b2lkIGdzdF9nbF91cGxvYWRfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOwotc3RhdGljIHZvaWQgZ3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlcl91bmxvY2tlZCAoR3N0R0xVcGxvYWQgKiB1cGxvYWQpOwogCiAjZGVmaW5lIEdTVF9HTF9VUExPQURfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFICgob2JqKSwgXAogICAgIEdTVF9UWVBFX0dMX1VQTE9BRCwgR3N0R0xVcGxvYWRQcml2YXRlKSkKIAorc3RhdGljIEdzdEdMVGV4dHVyZVRhcmdldAorX2NhcHNfZ2V0X3RleHR1cmVfdGFyZ2V0IChHc3RDYXBzICogY2FwcywgR3N0R0xUZXh0dXJlVGFyZ2V0IGRlZmF1bHRfdGFyZ2V0KQoreworICBHc3RHTFRleHR1cmVUYXJnZXQgcmV0ID0gMDsKKyAgR3N0U3RydWN0dXJlICpzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7CisKKyAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkX3R5cGVkIChzLCAidGV4dHVyZS10YXJnZXQiLCBHX1RZUEVfU1RSSU5HKSkgeworICAgIGNvbnN0IGdjaGFyICp0YXJnZXRfc3RyID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzLCAidGV4dHVyZS10YXJnZXQiKTsKKyAgICByZXQgPSBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmcgKHRhcmdldF9zdHIpOworICB9CisKKyAgaWYgKCFyZXQpCisgICAgcmV0ID0gZGVmYXVsdF90YXJnZXQ7CisKKyAgcmV0dXJuIHJldDsKK30KKwogLyogRGVmaW5lIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwbGFuZXMgd2UgY2FuIHVwbG9hZCAtIGhhbmRsZSAyIHZpZXdzIHBlciBidWZmZXIgKi8KICNkZWZpbmUgR1NUX0dMX1VQTE9BRF9NQVhfUExBTkVTIChHU1RfVklERU9fTUFYX1BMQU5FUyAqIDIpCiAKQEAgLTg1LDIyICsxMDUsNTkgQEAKIH07CiAKIHN0YXRpYyBHc3RDYXBzICoKLV9zZXRfY2Fwc19mZWF0dXJlcyAoY29uc3QgR3N0Q2FwcyAqIGNhcHMsIGNvbnN0IGdjaGFyICogZmVhdHVyZV9uYW1lKQorX3NldF9jYXBzX2ZlYXR1cmVzX3dpdGhfcGFzc3Rocm91Z2ggKGNvbnN0IEdzdENhcHMgKiBjYXBzLAorICAgIGNvbnN0IGdjaGFyICogZmVhdHVyZV9uYW1lLCBHc3RDYXBzRmVhdHVyZXMgKiBwYXNzdGhyb3VnaCkKIHsKLSAgR3N0Q2FwcyAqdG1wID0gZ3N0X2NhcHNfY29weSAoY2Fwcyk7Ci0gIGd1aW50IG4gPSBnc3RfY2Fwc19nZXRfc2l6ZSAodG1wKTsKLSAgZ3VpbnQgaSA9IDA7CisgIGd1aW50IGksIGosIG0sIG47CisgIEdzdENhcHMgKnRtcDsKIAorICB0bXAgPSBnc3RfY2Fwc19jb3B5IChjYXBzKTsKKworICBuID0gZ3N0X2NhcHNfZ2V0X3NpemUgKGNhcHMpOwogICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgR3N0Q2Fwc0ZlYXR1cmVzICpmZWF0dXJlczsKKyAgICBHc3RDYXBzRmVhdHVyZXMgKmZlYXR1cmVzLCAqb3JpZ19mZWF0dXJlczsKIAorICAgIG9yaWdfZmVhdHVyZXMgPSBnc3RfY2Fwc19nZXRfZmVhdHVyZXMgKGNhcHMsIGkpOwogICAgIGZlYXR1cmVzID0gZ3N0X2NhcHNfZmVhdHVyZXNfbmV3IChmZWF0dXJlX25hbWUsIE5VTEwpOworCisgICAgbSA9IGdzdF9jYXBzX2ZlYXR1cmVzX2dldF9zaXplIChvcmlnX2ZlYXR1cmVzKTsKKyAgICBmb3IgKGogPSAwOyBqIDwgbTsgaisrKSB7CisgICAgICBjb25zdCBnY2hhciAqZmVhdHVyZSA9IGdzdF9jYXBzX2ZlYXR1cmVzX2dldF9udGggKG9yaWdfZmVhdHVyZXMsIGopOworCisgICAgICAvKiBpZiB3ZSBhbHJlYWR5IGhhdmUgdGhlIGZlYXR1cmVzICovCisgICAgICBpZiAoZ3N0X2NhcHNfZmVhdHVyZXNfY29udGFpbnMgKGZlYXR1cmVzLCBmZWF0dXJlKSkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIGlmIChnX3N0cmNtcDAgKGZlYXR1cmUsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1NZU1RFTV9NRU1PUlkpID09IDApCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZiAoZ3N0X2NhcHNfZmVhdHVyZXNfY29udGFpbnMgKHBhc3N0aHJvdWdoLCBmZWF0dXJlKSkgeworICAgICAgICBnc3RfY2Fwc19mZWF0dXJlc19hZGQgKGZlYXR1cmVzLCBmZWF0dXJlKTsKKyAgICAgIH0KKyAgICB9CisKICAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMgKHRtcCwgaSwgZmVhdHVyZXMpOwogICB9CiAKICAgcmV0dXJuIHRtcDsKIH0KIAorc3RhdGljIEdzdENhcHMgKgorX2NhcHNfaW50ZXJzZWN0X3RleHR1cmVfdGFyZ2V0IChHc3RDYXBzICogY2FwcywgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldF9tYXNrKQoreworICBHVmFsdWUgdGFyZ2V0cyA9IEdfVkFMVUVfSU5JVDsKKyAgR3N0Q2FwcyAqcmV0LCAqdGFyZ2V0OworCisgIHRhcmdldCA9IGdzdF9jYXBzX2NvcHkgKGNhcHMpOworICBnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0X2Zyb21fbWFzayAoJnRhcmdldHMsIHRhcmdldF9tYXNrKTsKKyAgZ3N0X2NhcHNfc2V0X3ZhbHVlICh0YXJnZXQsICJ0ZXh0dXJlLXRhcmdldCIsICZ0YXJnZXRzKTsKKworICByZXQgPSBnc3RfY2Fwc19pbnRlcnNlY3RfZnVsbCAoY2FwcywgdGFyZ2V0LCBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOworCisgIGdzdF9jYXBzX3VucmVmICh0YXJnZXQpOworICByZXR1cm4gcmV0OworfQorCiB0eXBlZGVmIGVudW0KIHsKICAgTUVUSE9EX0ZMQUdfQ0FOX1NIQVJFX0NPTlRFWFQgPSAxLApAQCAtMTIyLDcgKzE3OSw2IEBACiAgICAgICBHc3RRdWVyeSAqIHF1ZXJ5KTsKICAgICBHc3RHTFVwbG9hZFJldHVybiAoKnBlcmZvcm0pIChncG9pbnRlciBpbXBsLCBHc3RCdWZmZXIgKiBidWZmZXIsCiAgICAgICBHc3RCdWZmZXIgKiogb3V0YnVmKTsKLSAgdm9pZCAoKnJlbGVhc2UpIChncG9pbnRlciBpbXBsLCBHc3RCdWZmZXIgKiBidWZmZXIpOwogICB2b2lkICgqZnJlZSkgKGdwb2ludGVyIGltcGwpOwogfSBfVXBsb2FkTWV0aG9kOwogCkBAIC0xNDUsNyArMjAxLDM5IEBACiBfZ2xfbWVtb3J5X3VwbG9hZF90cmFuc2Zvcm1fY2FwcyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKICAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RDYXBzICogY2FwcykKIHsKLSAgcmV0dXJuIF9zZXRfY2Fwc19mZWF0dXJlcyAoY2FwcywgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKTsKKyAgR3N0Q2Fwc0ZlYXR1cmVzICpwYXNzdGhyb3VnaCA9CisgICAgICBnc3RfY2Fwc19mZWF0dXJlc19mcm9tX3N0cmluZworICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTik7CisgIEdzdENhcHMgKnJldDsKKworICByZXQgPQorICAgICAgX3NldF9jYXBzX2ZlYXR1cmVzX3dpdGhfcGFzc3Rocm91Z2ggKGNhcHMsCisgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksIHBhc3N0aHJvdWdoKTsKKworICBnc3RfY2Fwc19mZWF0dXJlc19mcmVlIChwYXNzdGhyb3VnaCk7CisKKyAgaWYgKGRpcmVjdGlvbiA9PSBHU1RfUEFEX1NJTkspIHsKKyAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0X21hc2sgPSAwOworICAgIEdzdENhcHMgKnRtcDsKKworICAgIHRhcmdldF9tYXNrIHw9IDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEOworICAgIHRhcmdldF9tYXNrIHw9IDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRTsKKyAgICB0YXJnZXRfbWFzayB8PSAxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVM7CisgICAgdG1wID0gX2NhcHNfaW50ZXJzZWN0X3RleHR1cmVfdGFyZ2V0IChyZXQsIHRhcmdldF9tYXNrKTsKKyAgICBnc3RfY2Fwc191bnJlZiAocmV0KTsKKyAgICByZXQgPSB0bXA7CisgIH0gZWxzZSB7CisgICAgZ2ludCBpLCBuOworCisgICAgbiA9IGdzdF9jYXBzX2dldF9zaXplIChyZXQpOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgIEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHJldCwgaSk7CisKKyAgICAgIGdzdF9zdHJ1Y3R1cmVfcmVtb3ZlX2ZpZWxkcyAocywgInRleHR1cmUtdGFyZ2V0IiwgTlVMTCk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGdib29sZWFuCkBAIC0xOTQsMTYgKzI4MiwyNiBAQAogICAgIEdzdFF1ZXJ5ICogcXVlcnkpCiB7CiAgIHN0cnVjdCBHTE1lbW9yeVVwbG9hZCAqdXBsb2FkID0gaW1wbDsKLSAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXM7Ci0gIEdzdEFsbG9jYXRvciAqYWxsb2NhdG9yOwogICBHc3RCdWZmZXJQb29sICpwb29sID0gTlVMTDsKICAgZ3VpbnQgbl9wb29scywgaTsKKyAgR3N0Q2FwcyAqY2FwczsKKyAgR3N0Q2Fwc0ZlYXR1cmVzICpmZWF0dXJlczsKIAotICBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdCAoJnBhcmFtcyk7CisgIGdzdF9xdWVyeV9wYXJzZV9hbGxvY2F0aW9uIChxdWVyeSwgJmNhcHMsIE5VTEwpOworICBmZWF0dXJlcyA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAoY2FwcywgMCk7CiAKLSAgYWxsb2NhdG9yID0gZ3N0X2FsbG9jYXRvcl9maW5kIChHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUik7Ci0gIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9wYXJhbSAocXVlcnksIGFsbG9jYXRvciwgJnBhcmFtcyk7Ci0gIGdzdF9vYmplY3RfdW5yZWYgKGFsbG9jYXRvcik7CisgIC8qIE9ubHkgb2ZmZXIgb3VyIGN1c3RvbSBhbGxvY2F0b3IgaWYgdGhhdCB0eXBlIG9mIG1lbW9yeSB3YXMgbmVnb3RpYXRlZC4gKi8KKyAgaWYgKGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmZWF0dXJlcywgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKSkgeworICAgIEdzdEFsbG9jYXRvciAqYWxsb2NhdG9yOworICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgcGFyYW1zOworICAgIGdzdF9hbGxvY2F0aW9uX3BhcmFtc19pbml0ICgmcGFyYW1zKTsKKworICAgIGFsbG9jYXRvciA9CisgICAgICAgIEdTVF9BTExPQ0FUT1IgKGdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0ICh1cGxvYWQtPnVwbG9hZC0+CisgICAgICAgICAgICBjb250ZXh0KSk7CisgICAgZ3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX3BhcmFtIChxdWVyeSwgYWxsb2NhdG9yLCAmcGFyYW1zKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChhbGxvY2F0b3IpOworICB9CiAKICAgbl9wb29scyA9IGdzdF9xdWVyeV9nZXRfbl9hbGxvY2F0aW9uX3Bvb2xzIChxdWVyeSk7CiAgIGZvciAoaSA9IDA7IGkgPCBuX3Bvb2xzOyBpKyspIHsKQEAgLTIxNywxMCArMzE1LDggQEAKICAgaWYgKCFwb29sKSB7CiAgICAgR3N0U3RydWN0dXJlICpjb25maWc7CiAgICAgR3N0VmlkZW9JbmZvIGluZm87Ci0gICAgR3N0Q2FwcyAqY2FwczsKICAgICBnc2l6ZSBzaXplOwogCi0gICAgZ3N0X3F1ZXJ5X3BhcnNlX2FsbG9jYXRpb24gKHF1ZXJ5LCAmY2FwcywgTlVMTCk7CiAKICAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluZm8sIGNhcHMpKQogICAgICAgZ290byBpbnZhbGlkX2NhcHM7CkBAIC0yMzMsNiArMzI5LDE3IEBACiAgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfcGFyYW1zIChjb25maWcsIGNhcHMsIHNpemUsIDAsIDApOwogICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfYWRkX29wdGlvbiAoY29uZmlnLAogICAgICAgICBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1NZTkNfTUVUQSk7CisgICAgaWYgKHVwbG9hZC0+dXBsb2FkLT5wcml2LT5vdXRfY2FwcykgeworICAgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldDsKKyAgICAgIGNvbnN0IGdjaGFyICp0YXJnZXRfcG9vbF9vcHRpb25fc3RyOworCisgICAgICB0YXJnZXQgPQorICAgICAgICAgIF9jYXBzX2dldF90ZXh0dXJlX3RhcmdldCAodXBsb2FkLT51cGxvYWQtPnByaXYtPm91dF9jYXBzLAorICAgICAgICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCk7CisgICAgICB0YXJnZXRfcG9vbF9vcHRpb25fc3RyID0KKyAgICAgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fYnVmZmVyX3Bvb2xfb3B0aW9uICh0YXJnZXQpOworICAgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19hZGRfb3B0aW9uIChjb25maWcsIHRhcmdldF9wb29sX29wdGlvbl9zdHIpOworICAgIH0KIAogICAgIGlmICghZ3N0X2J1ZmZlcl9wb29sX3NldF9jb25maWcgKHBvb2wsIGNvbmZpZykpIHsKICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHBvb2wpOwpAQCAtMjc2LDcgKzM4Myw4IEBACiAgICAgICAgICAgICBnbF9tZW0tPm1lbS5jb250ZXh0KSkKICAgICAgIHJldHVybiBHU1RfR0xfVVBMT0FEX1VOU0hBUkVEX0dMX0NPTlRFWFQ7CiAKLSAgICBnc3RfZ2xfbWVtb3J5X3VwbG9hZF90cmFuc2ZlciAoZ2xfbWVtKTsKKyAgICBpZiAoZ3N0X2lzX2dsX21lbW9yeV9wYm8gKG1lbSkpCisgICAgICBnc3RfZ2xfbWVtb3J5X3Bib191cGxvYWRfdHJhbnNmZXIgKChHc3RHTE1lbW9yeVBCTyAqKSBtZW0pOwogICB9CiAKICAgKm91dGJ1ZiA9IGdzdF9idWZmZXJfcmVmIChidWZmZXIpOwpAQCAtMjg1LDExICszOTMsNiBAQAogfQogCiBzdGF0aWMgdm9pZAotX2dsX21lbW9yeV91cGxvYWRfcmVsZWFzZSAoZ3BvaW50ZXIgaW1wbCwgR3N0QnVmZmVyICogYnVmZmVyKQotewotfQotCi1zdGF0aWMgdm9pZAogX2dsX21lbW9yeV91cGxvYWRfZnJlZSAoZ3BvaW50ZXIgaW1wbCkKIHsKICAgZ19mcmVlIChpbXBsKTsKQEAgLTMwOSw3ICs0MTIsNiBAQAogICAmX2dsX21lbW9yeV91cGxvYWRfYWNjZXB0LAogICAmX2dsX21lbW9yeV91cGxvYWRfcHJvcG9zZV9hbGxvY2F0aW9uLAogICAmX2dsX21lbW9yeV91cGxvYWRfcGVyZm9ybSwKLSAgJl9nbF9tZW1vcnlfdXBsb2FkX3JlbGVhc2UsCiAgICZfZ2xfbWVtb3J5X3VwbG9hZF9mcmVlCiB9OwogCkBAIC0zMTksNiArNDIxLDcgQEAKICAgR3N0R0xVcGxvYWQgKnVwbG9hZDsKICAgR3N0QnVmZmVyICpidWZmZXI7CiAgIEdzdEJ1ZmZlciAqKm91dGJ1ZjsKKyAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKIH07CiAKIHN0YXRpYyBncG9pbnRlcgpAQCAtMzM1LDE1ICs0MzgsMzkgQEAKIF9lZ2xfaW1hZ2VfdXBsb2FkX3RyYW5zZm9ybV9jYXBzIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAogICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMgKiBjYXBzKQogeworICBHc3RDYXBzRmVhdHVyZXMgKnBhc3N0aHJvdWdoID0KKyAgICAgIGdzdF9jYXBzX2ZlYXR1cmVzX2Zyb21fc3RyaW5nCisgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRVRBX0dTVF9WSURFT19PVkVSTEFZX0NPTVBPU0lUSU9OKTsKICAgR3N0Q2FwcyAqcmV0OwogCiAgIGlmIChkaXJlY3Rpb24gPT0gR1NUX1BBRF9TSU5LKSB7Ci0gICAgcmV0ID0gX3NldF9jYXBzX2ZlYXR1cmVzIChjYXBzLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpOworICAgIEdzdENhcHMgKnRtcDsKKworICAgIHJldCA9CisgICAgICAgIF9zZXRfY2Fwc19mZWF0dXJlc193aXRoX3Bhc3N0aHJvdWdoIChjYXBzLAorICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksIHBhc3N0aHJvdWdoKTsKKworICAgIHRtcCA9IF9jYXBzX2ludGVyc2VjdF90ZXh0dXJlX3RhcmdldCAocmV0LCAxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCk7CisgICAgZ3N0X2NhcHNfdW5yZWYgKHJldCk7CisgICAgcmV0ID0gdG1wOwogICB9IGVsc2UgewotICAgIHJldCA9IF9zZXRfY2Fwc19mZWF0dXJlcyAoY2FwcywgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfRUdMX0lNQUdFKTsKKyAgICBnaW50IGksIG47CisKKyAgICByZXQgPQorICAgICAgICBfc2V0X2NhcHNfZmVhdHVyZXNfd2l0aF9wYXNzdGhyb3VnaCAoY2FwcywKKyAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfRUdMX0lNQUdFLCBwYXNzdGhyb3VnaCk7CiAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAocmV0LCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgIlJHQkEiLCBOVUxMKTsKKworICAgIG4gPSBnc3RfY2Fwc19nZXRfc2l6ZSAocmV0KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChyZXQsIGkpOworCisgICAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZHMgKHMsICJ0ZXh0dXJlLXRhcmdldCIsIE5VTEwpOworICAgIH0KICAgfQogCisgIGdzdF9jYXBzX2ZlYXR1cmVzX2ZyZWUgKHBhc3N0aHJvdWdoKTsKKwogICByZXR1cm4gcmV0OwogfQogCkBAIC0zNjcsNiArNDk0LDE0IEBACiAgIGlmICghcmV0KQogICAgIHJldHVybiBGQUxTRTsKIAorICBpZiAoaW1hZ2UtPnBhcmFtcykKKyAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBpbWFnZS0+cGFyYW1zKTsKKyAgaWYgKCEoaW1hZ2UtPnBhcmFtcyA9CisgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoaW1hZ2UtPnVwbG9hZC0+Y29udGV4dCwgTlVMTCwKKyAgICAgICAgICAgICAgJmltYWdlLT51cGxvYWQtPnByaXYtPmluX2luZm8sIC0xLCBOVUxMLAorICAgICAgICAgICAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpKSkKKyAgICByZXR1cm4gRkFMU0U7CisKICAgaWYgKGJ1ZmZlcikgewogICAgIEdzdFZpZGVvSW5mbyAqaW5faW5mbyA9ICZpbWFnZS0+dXBsb2FkLT5wcml2LT5pbl9pbmZvOwogICAgIGd1aW50IGV4cGVjdGVkX21lbW9yaWVzID0gR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKGluX2luZm8pOwpAQCAtMzk1LDEzICs1MzAsMjIgQEAKICAgICBHc3RRdWVyeSAqIHF1ZXJ5KQogewogICBzdHJ1Y3QgRUdMSW1hZ2VVcGxvYWQgKmltYWdlID0gaW1wbDsKLSAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXM7Ci0gIEdzdEFsbG9jYXRvciAqYWxsb2NhdG9yOworICBHc3RDYXBzICpjYXBzOworICBHc3RDYXBzRmVhdHVyZXMgKmZlYXR1cmVzOwogCi0gIGdzdF9hbGxvY2F0aW9uX3BhcmFtc19pbml0ICgmcGFyYW1zKTsKKyAgZ3N0X3F1ZXJ5X3BhcnNlX2FsbG9jYXRpb24gKHF1ZXJ5LCAmY2FwcywgTlVMTCk7CisgIGZlYXR1cmVzID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChjYXBzLCAwKTsKIAotICBpZiAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZmVhdHVyZSAoaW1hZ2UtPnVwbG9hZC0+Y29udGV4dCwKKyAgLyogT25seSBvZmZlciBvdXIgY3VzdG9tIGFsbG9jYXRvciBpZiB0aGF0IHR5cGUgb2YgbWVtb3J5IHdhcyBuZWdvdGlhdGVkLiAqLworICBpZiAoZ3N0X2NhcHNfZmVhdHVyZXNfY29udGFpbnMgKGZlYXR1cmVzLAorICAgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0VHTF9JTUFHRSkgJiYKKyAgICAgIGdzdF9nbF9jb250ZXh0X2NoZWNrX2ZlYXR1cmUgKGltYWdlLT51cGxvYWQtPmNvbnRleHQsCiAgICAgICAgICAgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpKSB7CisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXM7CisgICAgR3N0QWxsb2NhdG9yICphbGxvY2F0b3I7CisKKyAgICBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdCAoJnBhcmFtcyk7CisKICAgICBhbGxvY2F0b3IgPSBnc3RfYWxsb2NhdG9yX2ZpbmQgKEdTVF9FR0xfSU1BR0VfTUVNT1JZX1RZUEUpOwogICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9wYXJhbSAocXVlcnksIGFsbG9jYXRvciwgJnBhcmFtcyk7CiAgICAgZ3N0X29iamVjdF91bnJlZiAoYWxsb2NhdG9yKTsKQEAgLTQxMiwxMiArNTU2LDE3IEBACiBfZWdsX2ltYWdlX3VwbG9hZF9wZXJmb3JtX2dsX3RocmVhZCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKICAgICBzdHJ1Y3QgRUdMSW1hZ2VVcGxvYWQgKmltYWdlKQogeworICBHc3RHTE1lbW9yeUFsbG9jYXRvciAqYWxsb2NhdG9yOwogICBndWludCBpLCBuOwogCisgIGFsbG9jYXRvciA9CisgICAgICBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUiAoZ3N0X2FsbG9jYXRvcl9maW5kCisgICAgICAoR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX05BTUUpKTsKKwogICAvKiBGSVhNRTogYnVmZmVyIHBvb2wgKi8KICAgKmltYWdlLT5vdXRidWYgPSBnc3RfYnVmZmVyX25ldyAoKTsKLSAgZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIgKGltYWdlLT51cGxvYWQtPmNvbnRleHQsCi0gICAgICBOVUxMLCAmaW1hZ2UtPnVwbG9hZC0+cHJpdi0+b3V0X2luZm8sIE5VTEwsICppbWFnZS0+b3V0YnVmKTsKKyAgZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIgKGFsbG9jYXRvciwgKmltYWdlLT5vdXRidWYsIGltYWdlLT5wYXJhbXMpOworICBnc3Rfb2JqZWN0X3VucmVmIChhbGxvY2F0b3IpOwogCiAgIG4gPSBnc3RfYnVmZmVyX25fbWVtb3J5IChpbWFnZS0+YnVmZmVyKTsKICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewpAQCAtNDM1LDggKzU4NCw4IEBACiAgIH0KIAogICBpZiAoR1NUX0lTX0dMX0JVRkZFUl9QT09MIChpbWFnZS0+YnVmZmVyLT5wb29sKSkKLSAgICBnc3RfZ2xfYnVmZmVyX3Bvb2xfcmVwbGFjZV9sYXN0X2J1ZmZlciAoR1NUX0dMX0JVRkZFUl9QT09MIChpbWFnZS0+Ci0gICAgICAgICAgICBidWZmZXItPnBvb2wpLCBpbWFnZS0+YnVmZmVyKTsKKyAgICBnc3RfZ2xfYnVmZmVyX3Bvb2xfcmVwbGFjZV9sYXN0X2J1ZmZlciAoR1NUX0dMX0JVRkZFUl9QT09MIChpbWFnZS0+YnVmZmVyLT4KKyAgICAgICAgICAgIHBvb2wpLCBpbWFnZS0+YnVmZmVyKTsKIH0KIAogc3RhdGljIEdzdEdMVXBsb2FkUmV0dXJuCkBAIC00NTgsMTMgKzYwNywxMyBAQAogfQogCiBzdGF0aWMgdm9pZAotX2VnbF9pbWFnZV91cGxvYWRfcmVsZWFzZSAoZ3BvaW50ZXIgaW1wbCwgR3N0QnVmZmVyICogYnVmZmVyKQotewotfQotCi1zdGF0aWMgdm9pZAogX2VnbF9pbWFnZV91cGxvYWRfZnJlZSAoZ3BvaW50ZXIgaW1wbCkKIHsKKyAgc3RydWN0IEVHTEltYWdlVXBsb2FkICppbWFnZSA9IGltcGw7CisKKyAgaWYgKGltYWdlLT5wYXJhbXMpCisgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgaW1hZ2UtPnBhcmFtcyk7CisKICAgZ19mcmVlIChpbXBsKTsKIH0KIApAQCAtNDgxLDEwICs2MzAsMjgyIEBACiAgICZfZWdsX2ltYWdlX3VwbG9hZF9hY2NlcHQsCiAgICZfZWdsX2ltYWdlX3VwbG9hZF9wcm9wb3NlX2FsbG9jYXRpb24sCiAgICZfZWdsX2ltYWdlX3VwbG9hZF9wZXJmb3JtLAotICAmX2VnbF9pbWFnZV91cGxvYWRfcmVsZWFzZSwKICAgJl9lZ2xfaW1hZ2VfdXBsb2FkX2ZyZWUKIH07Ci0jZW5kaWYKKyNlbmRpZiAvKiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wgKi8KKworI2lmIEdTVF9HTF9IQVZFX0RNQUJVRgorc3RydWN0IERtYWJ1ZlVwbG9hZAoreworICBHc3RHTFVwbG9hZCAqdXBsb2FkOworCisgIEdzdE1lbW9yeSAqZWdsaW1hZ2VbR1NUX1ZJREVPX01BWF9QTEFORVNdOworICBHc3RCdWZmZXIgKm91dGJ1ZjsKKyAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKK307CisKK3N0YXRpYyBHc3RTdGF0aWNDYXBzIF9kbWFfYnVmX3VwbG9hZF9jYXBzID0KK0dTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoR1NUX0dMX01FTU9SWV9WSURFT19GT1JNQVRTX1NUUikpOworCitzdGF0aWMgZ3BvaW50ZXIKK19kbWFfYnVmX3VwbG9hZF9uZXcgKEdzdEdMVXBsb2FkICogdXBsb2FkKQoreworICBzdHJ1Y3QgRG1hYnVmVXBsb2FkICpkbWFidWYgPSBnX25ldzAgKHN0cnVjdCBEbWFidWZVcGxvYWQsIDEpOworICBkbWFidWYtPnVwbG9hZCA9IHVwbG9hZDsKKyAgcmV0dXJuIGRtYWJ1ZjsKK30KKworc3RhdGljIEdzdENhcHMgKgorX2RtYV9idWZfdXBsb2FkX3RyYW5zZm9ybV9jYXBzIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMgKiBjYXBzKQoreworICBHc3RDYXBzRmVhdHVyZXMgKnBhc3N0aHJvdWdoID0KKyAgICAgIGdzdF9jYXBzX2ZlYXR1cmVzX2Zyb21fc3RyaW5nCisgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRVRBX0dTVF9WSURFT19PVkVSTEFZX0NPTVBPU0lUSU9OKTsKKyAgR3N0Q2FwcyAqcmV0OworCisgIGlmIChkaXJlY3Rpb24gPT0gR1NUX1BBRF9TSU5LKSB7CisgICAgR3N0Q2FwcyAqdG1wOworCisgICAgcmV0ID0KKyAgICAgICAgX3NldF9jYXBzX2ZlYXR1cmVzX3dpdGhfcGFzc3Rocm91Z2ggKGNhcHMsCisgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwgcGFzc3Rocm91Z2gpOworCisgICAgdG1wID0gX2NhcHNfaW50ZXJzZWN0X3RleHR1cmVfdGFyZ2V0IChyZXQsIDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKTsKKyAgICBnc3RfY2Fwc191bnJlZiAocmV0KTsKKyAgICByZXQgPSB0bXA7CisgIH0gZWxzZSB7CisgICAgZ2ludCBpLCBuOworCisgICAgcmV0ID0KKyAgICAgICAgX3NldF9jYXBzX2ZlYXR1cmVzX3dpdGhfcGFzc3Rocm91Z2ggKGNhcHMsCisgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1NZU1RFTV9NRU1PUlksIHBhc3N0aHJvdWdoKTsKKworICAgIG4gPSBnc3RfY2Fwc19nZXRfc2l6ZSAocmV0KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChyZXQsIGkpOworCisgICAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZHMgKHMsICJ0ZXh0dXJlLXRhcmdldCIsIE5VTEwpOworICAgIH0KKyAgfQorCisgIGdzdF9jYXBzX2ZlYXR1cmVzX2ZyZWUgKHBhc3N0aHJvdWdoKTsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgR1F1YXJrCitfZWdsaW1hZ2VfcXVhcmsgKGdpbnQgcGxhbmUpCit7CisgIHN0YXRpYyBHUXVhcmsgcXVhcmtbNF0gPSB7IDAgfTsKKyAgc3RhdGljIGNvbnN0IGdjaGFyICpxdWFya19zdHJbXSA9IHsKKyAgICAiR3N0R0xETUFCdWZFR0xJbWFnZTAiLAorICAgICJHc3RHTERNQUJ1ZkVHTEltYWdlMSIsCisgICAgIkdzdEdMRE1BQnVmRUdMSW1hZ2UyIiwKKyAgICAiR3N0R0xETUFCdWZFR0xJbWFnZTMiLAorICB9OworCisgIGlmICghcXVhcmtbcGxhbmVdKQorICAgIHF1YXJrW3BsYW5lXSA9IGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nIChxdWFya19zdHJbcGxhbmVdKTsKKworICByZXR1cm4gcXVhcmtbcGxhbmVdOworfQorCitzdGF0aWMgR3N0TWVtb3J5ICoKK19nZXRfY2FjaGVkX2VnbGltYWdlIChHc3RNZW1vcnkgKiBtZW0sIGdpbnQgcGxhbmUpCit7CisgIHJldHVybiBnc3RfbWluaV9vYmplY3RfZ2V0X3FkYXRhIChHU1RfTUlOSV9PQkpFQ1QgKG1lbSksCisgICAgICBfZWdsaW1hZ2VfcXVhcmsgKHBsYW5lKSk7Cit9CisKK3N0YXRpYyB2b2lkCitfc2V0X2NhY2hlZF9lZ2xpbWFnZSAoR3N0TWVtb3J5ICogbWVtLCBHc3RNZW1vcnkgKiBlZ2xpbWFnZSwgZ2ludCBwbGFuZSkKK3sKKyAgcmV0dXJuIGdzdF9taW5pX29iamVjdF9zZXRfcWRhdGEgKEdTVF9NSU5JX09CSkVDVCAobWVtKSwKKyAgICAgIF9lZ2xpbWFnZV9xdWFyayAocGxhbmUpLCBlZ2xpbWFnZSwgKEdEZXN0cm95Tm90aWZ5KSBnc3RfbWVtb3J5X3VucmVmKTsKK30KKworc3RhdGljIGdib29sZWFuCitfZG1hX2J1Zl91cGxvYWRfYWNjZXB0IChncG9pbnRlciBpbXBsLCBHc3RCdWZmZXIgKiBidWZmZXIsIEdzdENhcHMgKiBpbl9jYXBzLAorICAgIEdzdENhcHMgKiBvdXRfY2FwcykKK3sKKyAgc3RydWN0IERtYWJ1ZlVwbG9hZCAqZG1hYnVmID0gaW1wbDsKKyAgR3N0VmlkZW9JbmZvICppbl9pbmZvID0gJmRtYWJ1Zi0+dXBsb2FkLT5wcml2LT5pbl9pbmZvOworICBndWludCBuX3BsYW5lcyA9IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChpbl9pbmZvKTsKKyAgR3N0VmlkZW9NZXRhICptZXRhOworICBndWludCBuX21lbTsKKyAgZ3VpbnQgbWVtc19pZHhbR1NUX1ZJREVPX01BWF9QTEFORVNdOworICBnc2l6ZSBtZW1zX3NraXBbR1NUX1ZJREVPX01BWF9QTEFORVNdOworICBHc3RNZW1vcnkgKm1lbXNbR1NUX1ZJREVPX01BWF9QTEFORVNdOworICBndWludCBpOworCisgIG5fbWVtID0gZ3N0X2J1ZmZlcl9uX21lbW9yeSAoYnVmZmVyKTsKKyAgbWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX21ldGEgKGJ1ZmZlcik7CisKKyAgLyogZG1hYnVmIHVwbG9hZCBpcyBvbmx5IHN1cHBvcnRlZCB3aXRoIEVHTCBjb250ZXh0cy4gKi8KKyAgaWYgKCFHU1RfSVNfR0xfQ09OVEVYVF9FR0wgKGRtYWJ1Zi0+dXBsb2FkLT5jb250ZXh0KSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKCFnc3RfZ2xfY29udGV4dF9jaGVja19mZWF0dXJlIChkbWFidWYtPnVwbG9hZC0+Y29udGV4dCwKKyAgICAgICAgICAiRUdMX0tIUl9pbWFnZV9iYXNlIikpCisgICAgcmV0dXJuIEZBTFNFOworCisgIC8qIFRoaXMgd2lsbCBlbGltaW5hdGUgbW9zdCBub24tZG1hYnVmIG91dCB0aGVyZSAqLworICBpZiAoIWdzdF9pc19kbWFidWZfbWVtb3J5IChnc3RfYnVmZmVyX3BlZWtfbWVtb3J5IChidWZmZXIsIDApKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogV2UgY2Fubm90IGhhdmUgbXVsdGlwbGUgZG1hYnVmIHBlciBwbGFuZSAqLworICBpZiAobl9tZW0gPiBuX3BsYW5lcykKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogVXBkYXRlIHZpZGVvIGluZm8gYmFzZWQgb24gdmlkZW8gbWV0YSAqLworICBpZiAobWV0YSkgeworICAgIGluX2luZm8tPndpZHRoID0gbWV0YS0+d2lkdGg7CisgICAgaW5faW5mby0+aGVpZ2h0ID0gbWV0YS0+aGVpZ2h0OworCisgICAgZm9yIChpID0gMDsgaSA8IG1ldGEtPm5fcGxhbmVzOyBpKyspIHsKKyAgICAgIGluX2luZm8tPm9mZnNldFtpXSA9IG1ldGEtPm9mZnNldFtpXTsKKyAgICAgIGluX2luZm8tPnN0cmlkZVtpXSA9IG1ldGEtPnN0cmlkZVtpXTsKKyAgICB9CisgIH0KKworICBpZiAoZG1hYnVmLT5wYXJhbXMpCisgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgZG1hYnVmLT5wYXJhbXMpOworICBpZiAoIShkbWFidWYtPnBhcmFtcyA9CisgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoZG1hYnVmLT51cGxvYWQtPmNvbnRleHQsIE5VTEwsCisgICAgICAgICAgICAgICZkbWFidWYtPnVwbG9hZC0+cHJpdi0+aW5faW5mbywgLTEsIE5VTEwsCisgICAgICAgICAgICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCkpKQorICAgIHJldHVybiBGQUxTRTsKKworICAvKiBGaW5kIGFuZCB2YWxpZGF0ZSBhbGwgbWVtb3JpZXMgKi8KKyAgZm9yIChpID0gMDsgaSA8IG5fcGxhbmVzOyBpKyspIHsKKyAgICBndWludCBwbGFuZV9zaXplOworICAgIGd1aW50IGxlbmd0aDsKKworICAgIHBsYW5lX3NpemUgPSBnc3RfZ2xfZ2V0X3BsYW5lX2RhdGFfc2l6ZSAoaW5faW5mbywgTlVMTCwgaSk7CisKKyAgICBpZiAoIWdzdF9idWZmZXJfZmluZF9tZW1vcnkgKGJ1ZmZlciwgaW5faW5mby0+b2Zmc2V0W2ldLCBwbGFuZV9zaXplLAorICAgICAgICAgICAgJm1lbXNfaWR4W2ldLCAmbGVuZ3RoLCAmbWVtc19za2lwW2ldKSkKKyAgICAgIHJldHVybiBGQUxTRTsKKworICAgIC8qIFdlIGNhbid0IGhhdmUgbW9yZSB0aGVuIG9uZSBkbWFidWYgcGVyIHBsYW5lICovCisgICAgaWYgKGxlbmd0aCAhPSAxKQorICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgbWVtc1tpXSA9IGdzdF9idWZmZXJfcGVla19tZW1vcnkgKGJ1ZmZlciwgbWVtc19pZHhbaV0pOworCisgICAgLyogQW5kIGFsbCBtZW1vcnkgZm91bmQgbXVzdCBiZSBkbWFidWYgKi8KKyAgICBpZiAoIWdzdF9pc19kbWFidWZfbWVtb3J5IChtZW1zW2ldKSkKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIC8qIE5vdyBjcmVhdGUgYW4gRUdMSW1hZ2UgZm9yIGVhY2ggZG1hYnVmcyAqLworICBmb3IgKGkgPSAwOyBpIDwgbl9wbGFuZXM7IGkrKykgeworICAgIC8qIGNoZWNrIGlmIG9uZSBpcyBjYWNoZWQgKi8KKyAgICBkbWFidWYtPmVnbGltYWdlW2ldID0gX2dldF9jYWNoZWRfZWdsaW1hZ2UgKG1lbXNbaV0sIGkpOworICAgIGlmIChkbWFidWYtPmVnbGltYWdlW2ldKQorICAgICAgY29udGludWU7CisKKyAgICAvKiBvdGhlcndpc2UgY3JlYXRlIG9uZSBhbmQgY2FjaGUgaXQgKi8KKyAgICBkbWFidWYtPmVnbGltYWdlW2ldID0KKyAgICAgICAgZ3N0X2VnbF9pbWFnZV9tZW1vcnlfZnJvbV9kbWFidWYgKGRtYWJ1Zi0+dXBsb2FkLT5jb250ZXh0LAorICAgICAgICBnc3RfZG1hYnVmX21lbW9yeV9nZXRfZmQgKG1lbXNbaV0pLCBpbl9pbmZvLCBpLCBtZW1zX3NraXBbaV0pOworCisgICAgaWYgKCFkbWFidWYtPmVnbGltYWdlW2ldKQorICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgX3NldF9jYWNoZWRfZWdsaW1hZ2UgKG1lbXNbaV0sIGRtYWJ1Zi0+ZWdsaW1hZ2VbaV0sIGkpOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitfZG1hX2J1Zl91cGxvYWRfcHJvcG9zZV9hbGxvY2F0aW9uIChncG9pbnRlciBpbXBsLCBHc3RRdWVyeSAqIGRlY2lkZV9xdWVyeSwKKyAgICBHc3RRdWVyeSAqIHF1ZXJ5KQoreworICAvKiBub3RoaW5nIHRvIGRvIGZvciBub3cuICovCit9CisKK3N0YXRpYyB2b2lkCitfZG1hX2J1Zl91cGxvYWRfcGVyZm9ybV9nbF90aHJlYWQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgc3RydWN0IERtYWJ1ZlVwbG9hZCAqZG1hYnVmKQoreworICBHc3RHTE1lbW9yeUFsbG9jYXRvciAqYWxsb2NhdG9yOworICBndWludCBpLCBuOworCisgIGFsbG9jYXRvciA9CisgICAgICBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUiAoZ3N0X2FsbG9jYXRvcl9maW5kCisgICAgICAoR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX05BTUUpKTsKKworICAvKiBGSVhNRTogYnVmZmVyIHBvb2wgKi8KKyAgZG1hYnVmLT5vdXRidWYgPSBnc3RfYnVmZmVyX25ldyAoKTsKKyAgZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIgKGFsbG9jYXRvciwgZG1hYnVmLT5vdXRidWYsIGRtYWJ1Zi0+cGFyYW1zKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoYWxsb2NhdG9yKTsKKworICBuID0gZ3N0X2J1ZmZlcl9uX21lbW9yeSAoZG1hYnVmLT5vdXRidWYpOworICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBOVUxMOworICAgIEdzdEdMTWVtb3J5ICpnbF9tZW0gPQorICAgICAgICAoR3N0R0xNZW1vcnkgKikgZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeSAoZG1hYnVmLT5vdXRidWYsIGkpOworCisgICAgaWYgKCFkbWFidWYtPmVnbGltYWdlW2ldKSB7CisgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZkbWFidWYtPm91dGJ1ZiwgZ3N0X2J1ZmZlcl91bnJlZik7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ2wgPSBHU1RfR0xfQ09OVEVYVCAoKChHc3RFR0xJbWFnZU1lbW9yeSAqKSBnbF9tZW0pLT5jb250ZXh0KS0+Z2xfdnRhYmxlOworCisgICAgZ2wtPkFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwICsgaSk7CisgICAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCBnbF9tZW0tPnRleF9pZCk7CisgICAgZ2wtPkVHTEltYWdlVGFyZ2V0VGV4dHVyZTJEIChHTF9URVhUVVJFXzJELAorICAgICAgICBnc3RfZWdsX2ltYWdlX21lbW9yeV9nZXRfaW1hZ2UgKGRtYWJ1Zi0+ZWdsaW1hZ2VbaV0pKTsKKyAgfQorfQorCitzdGF0aWMgR3N0R0xVcGxvYWRSZXR1cm4KK19kbWFfYnVmX3VwbG9hZF9wZXJmb3JtIChncG9pbnRlciBpbXBsLCBHc3RCdWZmZXIgKiBidWZmZXIsIEdzdEJ1ZmZlciAqKiBvdXRidWYpCit7CisgIHN0cnVjdCBEbWFidWZVcGxvYWQgKmRtYWJ1ZiA9IGltcGw7CisKKyAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoZG1hYnVmLT51cGxvYWQtPmNvbnRleHQsCisgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2RtYV9idWZfdXBsb2FkX3BlcmZvcm1fZ2xfdGhyZWFkLCBkbWFidWYpOworCisgIGlmICghZG1hYnVmLT5vdXRidWYpCisgICAgcmV0dXJuIEdTVF9HTF9VUExPQURfRVJST1I7CisKKyAgZ3N0X2J1ZmZlcl9hZGRfcGFyZW50X2J1ZmZlcl9tZXRhIChkbWFidWYtPm91dGJ1ZiwgYnVmZmVyKTsKKworICAqb3V0YnVmID0gZG1hYnVmLT5vdXRidWY7CisgIGRtYWJ1Zi0+b3V0YnVmID0gTlVMTDsKKworICByZXR1cm4gR1NUX0dMX1VQTE9BRF9ET05FOworfQorCitzdGF0aWMgdm9pZAorX2RtYV9idWZfdXBsb2FkX2ZyZWUgKGdwb2ludGVyIGltcGwpCit7CisgIHN0cnVjdCBEbWFidWZVcGxvYWQgKmRtYWJ1ZiA9IGltcGw7CisKKyAgaWYgKGRtYWJ1Zi0+cGFyYW1zKQorICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIGRtYWJ1Zi0+cGFyYW1zKTsKKworICBnX2ZyZWUgKGltcGwpOworfQorCitzdGF0aWMgY29uc3QgVXBsb2FkTWV0aG9kIF9kbWFfYnVmX3VwbG9hZCA9IHsKKyAgIkRtYWJ1ZiIsCisgIDAsCisgICZfZG1hX2J1Zl91cGxvYWRfY2FwcywKKyAgJl9kbWFfYnVmX3VwbG9hZF9uZXcsCisgICZfZG1hX2J1Zl91cGxvYWRfdHJhbnNmb3JtX2NhcHMsCisgICZfZG1hX2J1Zl91cGxvYWRfYWNjZXB0LAorICAmX2RtYV9idWZfdXBsb2FkX3Byb3Bvc2VfYWxsb2NhdGlvbiwKKyAgJl9kbWFfYnVmX3VwbG9hZF9wZXJmb3JtLAorICAmX2RtYV9idWZfdXBsb2FkX2ZyZWUKK307CisKKyNlbmRpZiAvKiBHU1RfR0xfSEFWRV9ETUFCVUYgKi8KIAogc3RydWN0IEdMVXBsb2FkTWV0YQogewpAQCAtNDkzLDYgKzkxNCw3IEBACiAgIGdib29sZWFuIHJlc3VsdDsKICAgR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhICptZXRhOwogICBndWludCB0ZXh0dXJlX2lkc1tHU1RfR0xfVVBMT0FEX01BWF9QTEFORVNdOworICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOwogfTsKIAogc3RhdGljIGdwb2ludGVyCkBAIC01MDksMTcgKzkzMSwzOSBAQAogX3VwbG9hZF9tZXRhX3VwbG9hZF90cmFuc2Zvcm1fY2FwcyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKICAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RDYXBzICogY2FwcykKIHsKKyAgR3N0Q2Fwc0ZlYXR1cmVzICpwYXNzdGhyb3VnaCA9CisgICAgICBnc3RfY2Fwc19mZWF0dXJlc19mcm9tX3N0cmluZworICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTik7CiAgIEdzdENhcHMgKnJldDsKIAogICBpZiAoZGlyZWN0aW9uID09IEdTVF9QQURfU0lOSykgewotICAgIHJldCA9IF9zZXRfY2Fwc19mZWF0dXJlcyAoY2FwcywgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKTsKLSAgfSBlbHNlIHsKKyAgICBHc3RDYXBzICp0bXA7CisKICAgICByZXQgPQotICAgICAgICBfc2V0X2NhcHNfZmVhdHVyZXMgKGNhcHMsCi0gICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQSk7CisgICAgICAgIF9zZXRfY2Fwc19mZWF0dXJlc193aXRoX3Bhc3N0aHJvdWdoIChjYXBzLAorICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksIHBhc3N0aHJvdWdoKTsKKworICAgIHRtcCA9IF9jYXBzX2ludGVyc2VjdF90ZXh0dXJlX3RhcmdldCAocmV0LCAxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCk7CisgICAgZ3N0X2NhcHNfdW5yZWYgKHJldCk7CisgICAgcmV0ID0gdG1wOworICB9IGVsc2UgeworICAgIGdpbnQgaSwgbjsKKworICAgIHJldCA9CisgICAgICAgIF9zZXRfY2Fwc19mZWF0dXJlc193aXRoX3Bhc3N0aHJvdWdoIChjYXBzLAorICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX0dMX1RFWFRVUkVfVVBMT0FEX01FVEEsIHBhc3N0aHJvdWdoKTsKICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChyZXQsICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCAiUkdCQSIsIE5VTEwpOworCisgICAgbiA9IGdzdF9jYXBzX2dldF9zaXplIChyZXQpOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgIEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHJldCwgaSk7CisKKyAgICAgIGdzdF9zdHJ1Y3R1cmVfcmVtb3ZlX2ZpZWxkcyAocywgInRleHR1cmUtdGFyZ2V0IiwgTlVMTCk7CisgICAgfQogICB9CiAKKyAgZ3N0X2NhcHNfZmVhdHVyZXNfZnJlZSAocGFzc3Rocm91Z2gpOworCiAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTU0NSw2ICs5ODksMTQgQEAKICAgaWYgKCFyZXQpCiAgICAgcmV0dXJuIHJldDsKIAorICBpZiAodXBsb2FkLT5wYXJhbXMpCisgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgdXBsb2FkLT5wYXJhbXMpOworICBpZiAoISh1cGxvYWQtPnBhcmFtcyA9CisgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAodXBsb2FkLT51cGxvYWQtPmNvbnRleHQsIE5VTEwsCisgICAgICAgICAgICAgICZ1cGxvYWQtPnVwbG9hZC0+cHJpdi0+aW5faW5mbywgLTEsIE5VTEwsCisgICAgICAgICAgICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCkpKQorICAgIHJldHVybiBGQUxTRTsKKwogICBpZiAoYnVmZmVyKSB7CiAgICAgaWYgKChtZXRhID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fZ2xfdGV4dHVyZV91cGxvYWRfbWV0YSAoYnVmZmVyKSkgPT0gTlVMTCkKICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTU3NCwxMSArMTAyNiwxMSBAQAogICBncG9pbnRlciBoYW5kbGU7CiAKICAgZ2xfYXBpcyA9Ci0gICAgICBnc3RfZ2xfYXBpX3RvX3N0cmluZyAoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAodXBsb2FkLT51cGxvYWQtPgotICAgICAgICAgIGNvbnRleHQpKTsKLSAgcGxhdGZvcm0gPQotICAgICAgZ3N0X2dsX3BsYXRmb3JtX3RvX3N0cmluZyAoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX3BsYXRmb3JtICh1cGxvYWQtPgorICAgICAgZ3N0X2dsX2FwaV90b19zdHJpbmcgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKHVwbG9hZC0+CiAgICAgICAgICAgdXBsb2FkLT5jb250ZXh0KSk7CisgIHBsYXRmb3JtID0KKyAgICAgIGdzdF9nbF9wbGF0Zm9ybV90b19zdHJpbmcgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9wbGF0Zm9ybQorICAgICAgKHVwbG9hZC0+dXBsb2FkLT5jb250ZXh0KSk7CiAgIGhhbmRsZSA9IChncG9pbnRlcikgZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2NvbnRleHQgKHVwbG9hZC0+dXBsb2FkLT5jb250ZXh0KTsKIAogICBnbF9jb250ZXh0ID0KQEAgLTYxOCw2ICsxMDcwLDkgQEAKICAgaW50IGk7CiAgIEdzdFZpZGVvSW5mbyAqaW5faW5mbyA9ICZ1cGxvYWQtPnVwbG9hZC0+cHJpdi0+aW5faW5mbzsKICAgZ3VpbnQgbWF4X3BsYW5lcyA9IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChpbl9pbmZvKTsKKyAgR3N0R0xNZW1vcnlBbGxvY2F0b3IgKmFsbG9jYXRvcjsKKworICBhbGxvY2F0b3IgPSBnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdCAodXBsb2FkLT51cGxvYWQtPmNvbnRleHQpOwogCiAgIC8qIFN1cHBvcnQgc3RlcmVvIHZpZXdzIGZvciBzZXBhcmF0ZWQgbXVsdGl2aWV3IG1vZGUgKi8KICAgaWYgKEdTVF9WSURFT19JTkZPX01VTFRJVklFV19NT0RFIChpbl9pbmZvKSA9PQpAQCAtNjMwLDggKzEwODUsOCBAQAogCiAgIC8qIEZJWE1FOiBidWZmZXIgcG9vbCAqLwogICAqb3V0YnVmID0gZ3N0X2J1ZmZlcl9uZXcgKCk7Ci0gIGdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyICh1cGxvYWQtPnVwbG9hZC0+Y29udGV4dCwKLSAgICAgIE5VTEwsICZ1cGxvYWQtPnVwbG9hZC0+cHJpdi0+aW5faW5mbywgTlVMTCwgKm91dGJ1Zik7CisgIGdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyIChhbGxvY2F0b3IsICpvdXRidWYsIHVwbG9hZC0+cGFyYW1zKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoYWxsb2NhdG9yKTsKIAogICBmb3IgKGkgPSAwOyBpIDwgR1NUX0dMX1VQTE9BRF9NQVhfUExBTkVTOyBpKyspIHsKICAgICBndWludCB0ZXhfaWQgPSAwOwpAQCAtNjYxLDExICsxMTE2LDYgQEAKIH0KIAogc3RhdGljIHZvaWQKLV91cGxvYWRfbWV0YV91cGxvYWRfcmVsZWFzZSAoZ3BvaW50ZXIgaW1wbCwgR3N0QnVmZmVyICogYnVmZmVyKQotewotfQotCi1zdGF0aWMgdm9pZAogX3VwbG9hZF9tZXRhX3VwbG9hZF9mcmVlIChncG9pbnRlciBpbXBsKQogewogICBzdHJ1Y3QgR0xVcGxvYWRNZXRhICp1cGxvYWQgPSBpbXBsOwpAQCAtNjc4LDYgKzExMjgsMTAgQEAKICAgICAgIGdzdF9nbF9jb250ZXh0X2RlbF90ZXh0dXJlICh1cGxvYWQtPnVwbG9hZC0+Y29udGV4dCwKICAgICAgICAgICAmdXBsb2FkLT50ZXh0dXJlX2lkc1tpXSk7CiAgIH0KKworICBpZiAodXBsb2FkLT5wYXJhbXMpCisgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgdXBsb2FkLT5wYXJhbXMpOworCiAgIGdfZnJlZSAodXBsb2FkKTsKIH0KIApAQCAtNjk0LDcgKzExNDgsNiBAQAogICAmX3VwbG9hZF9tZXRhX3VwbG9hZF9hY2NlcHQsCiAgICZfdXBsb2FkX21ldGFfdXBsb2FkX3Byb3Bvc2VfYWxsb2NhdGlvbiwKICAgJl91cGxvYWRfbWV0YV91cGxvYWRfcGVyZm9ybSwKLSAgJl91cGxvYWRfbWV0YV91cGxvYWRfcmVsZWFzZSwKICAgJl91cGxvYWRfbWV0YV91cGxvYWRfZnJlZQogfTsKIApAQCAtNzA4LDYgKzExNjEsNyBAQAogewogICBHc3RHTFVwbG9hZCAqdXBsb2FkOwogICBzdHJ1Y3QgUmF3VXBsb2FkRnJhbWUgKmluX2ZyYW1lOworICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOwogfTsKIAogc3RhdGljIHN0cnVjdCBSYXdVcGxvYWRGcmFtZSAqCkBAIC03NzEsMTQgKzEyMjUsNDEgQEAKIF9yYXdfZGF0YV91cGxvYWRfdHJhbnNmb3JtX2NhcHMgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCiAgICAgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyAqIGNhcHMpCiB7CisgIEdzdENhcHNGZWF0dXJlcyAqcGFzc3Rocm91Z2ggPQorICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfZnJvbV9zdHJpbmcKKyAgICAgIChHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT04pOwogICBHc3RDYXBzICpyZXQ7CiAKICAgaWYgKGRpcmVjdGlvbiA9PSBHU1RfUEFEX1NJTkspIHsKLSAgICByZXQgPSBfc2V0X2NhcHNfZmVhdHVyZXMgKGNhcHMsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSk7CisgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldF9tYXNrID0gMDsKKyAgICBHc3RDYXBzICp0bXA7CisKKyAgICByZXQgPQorICAgICAgICBfc2V0X2NhcHNfZmVhdHVyZXNfd2l0aF9wYXNzdGhyb3VnaCAoY2FwcywKKyAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBwYXNzdGhyb3VnaCk7CisKKyAgICB0YXJnZXRfbWFzayB8PSAxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDsKKyAgICB0YXJnZXRfbWFzayB8PSAxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU7CisgICAgdG1wID0gX2NhcHNfaW50ZXJzZWN0X3RleHR1cmVfdGFyZ2V0IChyZXQsIHRhcmdldF9tYXNrKTsKKyAgICBnc3RfY2Fwc191bnJlZiAocmV0KTsKKyAgICByZXQgPSB0bXA7CiAgIH0gZWxzZSB7Ci0gICAgcmV0ID0gX3NldF9jYXBzX2ZlYXR1cmVzIChjYXBzLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9TWVNURU1fTUVNT1JZKTsKKyAgICBnaW50IGksIG47CisKKyAgICByZXQgPQorICAgICAgICBfc2V0X2NhcHNfZmVhdHVyZXNfd2l0aF9wYXNzdGhyb3VnaCAoY2FwcywKKyAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfU1lTVEVNX01FTU9SWSwgcGFzc3Rocm91Z2gpOworCisgICAgbiA9IGdzdF9jYXBzX2dldF9zaXplIChyZXQpOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgIEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHJldCwgaSk7CisKKyAgICAgIGdzdF9zdHJ1Y3R1cmVfcmVtb3ZlX2ZpZWxkcyAocywgInRleHR1cmUtdGFyZ2V0IiwgTlVMTCk7CisgICAgfQogICB9CiAKKyAgZ3N0X2NhcHNfZmVhdHVyZXNfZnJlZSAocGFzc3Rocm91Z2gpOworCiAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTc5Myw4ICsxMjc0LDE5IEBACiAgIGlmICghZ3N0X2NhcHNfZmVhdHVyZXNfY29udGFpbnMgKGZlYXR1cmVzLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpKQogICAgIHJldHVybiBGQUxTRTsKIAorICBpZiAocmF3LT5pbl9mcmFtZSkKKyAgICBfcmF3X3VwbG9hZF9mcmFtZV91bnJlZiAocmF3LT5pbl9mcmFtZSk7CiAgIHJhdy0+aW5fZnJhbWUgPSBfcmF3X3VwbG9hZF9mcmFtZV9uZXcgKHJhdywgYnVmZmVyKTsKIAorICBpZiAocmF3LT5wYXJhbXMpCisgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcmF3LT5wYXJhbXMpOworICBpZiAoIShyYXctPnBhcmFtcyA9CisgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX2RhdGEgKHJhdy0+dXBsb2FkLT5jb250ZXh0LAorICAgICAgICAgICAgICBOVUxMLCAmcmF3LT51cGxvYWQtPnByaXYtPmluX2luZm8sIC0xLCBOVUxMLAorICAgICAgICAgICAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQsIE5VTEwsIHJhdy0+aW5fZnJhbWUsCisgICAgICAgICAgICAgIChHRGVzdHJveU5vdGlmeSkgX3Jhd191cGxvYWRfZnJhbWVfdW5yZWYpKSkKKyAgICByZXR1cm4gRkFMU0U7CisKICAgcmV0dXJuIChyYXctPmluX2ZyYW1lICE9IE5VTEwpOwogfQogCkBAIC04MDksMzcgKzEzMDEsNDMgQEAKIF9yYXdfZGF0YV91cGxvYWRfcGVyZm9ybSAoZ3BvaW50ZXIgaW1wbCwgR3N0QnVmZmVyICogYnVmZmVyLAogICAgIEdzdEJ1ZmZlciAqKiBvdXRidWYpCiB7Ci0gIEdzdEdMTWVtb3J5ICppbl90ZXhbR1NUX0dMX1VQTE9BRF9NQVhfUExBTkVTXSA9IHsgMCwgfTsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICphbGxvY2F0b3I7CiAgIHN0cnVjdCBSYXdVcGxvYWQgKnJhdyA9IGltcGw7CiAgIGludCBpOwogICBHc3RWaWRlb0luZm8gKmluX2luZm8gPSAmcmF3LT51cGxvYWQtPnByaXYtPmluX2luZm87Ci0gIGd1aW50IG1heF9wbGFuZXMgPSBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoaW5faW5mbyk7CisgIGd1aW50IG5fbWVtID0gR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKGluX2luZm8pOwogCi0gIC8qIFN1cHBvcnQgc3RlcmVvIHZpZXdzIGZvciBzZXBhcmF0ZWQgbXVsdGl2aWV3IG1vZGUgKi8KLSAgaWYgKEdTVF9WSURFT19JTkZPX01VTFRJVklFV19NT0RFIChpbl9pbmZvKSA9PQotICAgICAgR1NUX1ZJREVPX01VTFRJVklFV19NT0RFX1NFUEFSQVRFRCkKLSAgICBtYXhfcGxhbmVzICo9IEdTVF9WSURFT19JTkZPX1ZJRVdTIChpbl9pbmZvKTsKLQotICBnc3RfZ2xfbWVtb3J5X3NldHVwX3dyYXBwZWQgKHJhdy0+dXBsb2FkLT5jb250ZXh0LAotICAgICAgJnJhdy0+dXBsb2FkLT5wcml2LT5pbl9pbmZvLCBOVUxMLCByYXctPmluX2ZyYW1lLT5mcmFtZS5kYXRhLCBpbl90ZXgsCi0gICAgICByYXctPmluX2ZyYW1lLCAoR0Rlc3Ryb3lOb3RpZnkpIF9yYXdfdXBsb2FkX2ZyYW1lX3VucmVmKTsKKyAgYWxsb2NhdG9yID0KKyAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IgKGdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0CisgICAgICAocmF3LT51cGxvYWQtPmNvbnRleHQpKTsKIAogICAvKiBGSVhNRSBVc2UgYSBidWZmZXIgcG9vbCB0byBjYWNoZSB0aGUgZ2VuZXJhdGVkIHRleHR1cmVzICovCisgIC8qIEZJWE1FOiBtdWx0aXZpZXcgc3VwcG9ydCB3aXRoIHNlcGFyYXRlZCBsZWZ0L3JpZ2h0IGZyYW1lcz8gKi8KICAgKm91dGJ1ZiA9IGdzdF9idWZmZXJfbmV3ICgpOwotICBmb3IgKGkgPSAwOyBpIDwgbWF4X3BsYW5lczsgaSsrKSB7CisgIGZvciAoaSA9IDA7IGkgPCBuX21lbTsgaSsrKSB7CisgICAgR3N0R0xCYXNlTWVtb3J5ICp0ZXg7CisKKyAgICByYXctPnBhcmFtcy0+cGFyZW50LndyYXBwZWRfZGF0YSA9IHJhdy0+aW5fZnJhbWUtPmZyYW1lLmRhdGFbaV07CisgICAgcmF3LT5wYXJhbXMtPnBsYW5lID0gaTsKKworICAgIHRleCA9CisgICAgICAgIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoYWxsb2NhdG9yLAorICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHJhdy0+cGFyYW1zKTsKKyAgICBpZiAoIXRleCkgeworICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoKm91dGJ1Zik7CisgICAgICAqb3V0YnVmID0gTlVMTDsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHJhdy0+dXBsb2FkLCAiRmFpbGVkIHRvIGFsbG9jYXRlIHdyYXBwZWQgdGV4dHVyZSIpOworICAgICAgcmV0dXJuIEdTVF9HTF9VUExPQURfRVJST1I7CisgICAgfQorCiAgICAgX3Jhd191cGxvYWRfZnJhbWVfcmVmIChyYXctPmluX2ZyYW1lKTsKLSAgICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKCpvdXRidWYsIChHc3RNZW1vcnkgKikgaW5fdGV4W2ldKTsKKyAgICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKCpvdXRidWYsIChHc3RNZW1vcnkgKikgdGV4KTsKICAgfQorICBnc3Rfb2JqZWN0X3VucmVmIChhbGxvY2F0b3IpOwogCi0gIHJldHVybiBHU1RfR0xfVVBMT0FEX0RPTkU7Ci19Ci0KLXN0YXRpYyB2b2lkCi1fcmF3X2RhdGFfdXBsb2FkX3JlbGVhc2UgKGdwb2ludGVyIGltcGwsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLXsKLSAgc3RydWN0IFJhd1VwbG9hZCAqcmF3ID0gaW1wbDsKICAgX3Jhd191cGxvYWRfZnJhbWVfdW5yZWYgKHJhdy0+aW5fZnJhbWUpOwogICByYXctPmluX2ZyYW1lID0gTlVMTDsKKyAgcmV0dXJuIEdTVF9HTF9VUExPQURfRE9ORTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTg0Nyw2ICsxMzQ1LDkgQEAKIHsKICAgc3RydWN0IFJhd1VwbG9hZCAqcmF3ID0gaW1wbDsKIAorICBpZiAocmF3LT5wYXJhbXMpCisgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcmF3LT5wYXJhbXMpOworCiAgIGdfZnJlZSAocmF3KTsKIH0KIApAQCAtODYyLDcgKzEzNjMsNiBAQAogICAmX3Jhd19kYXRhX3VwbG9hZF9hY2NlcHQsCiAgICZfcmF3X2RhdGFfdXBsb2FkX3Byb3Bvc2VfYWxsb2NhdGlvbiwKICAgJl9yYXdfZGF0YV91cGxvYWRfcGVyZm9ybSwKLSAgJl9yYXdfZGF0YV91cGxvYWRfcmVsZWFzZSwKICAgJl9yYXdfZGF0YV91cGxvYWRfZnJlZQogfTsKIApAQCAtODcwLDYgKzEzNzAsOSBAQAogI2lmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0VHTAogICAmX2VnbF9pbWFnZV91cGxvYWQsCiAjZW5kaWYKKyNpZiBHU1RfR0xfSEFWRV9ETUFCVUYKKyAgJl9kbWFfYnVmX3VwbG9hZCwKKyNlbmRpZgogICAmX3VwbG9hZF9tZXRhX3VwbG9hZCwgJl9yYXdfZGF0YV91cGxvYWQKIH07CiAKQEAgLTk0NSw4ICsxNDQ4LDYgQEAKIAogICB1cGxvYWQgPSBHU1RfR0xfVVBMT0FEIChvYmplY3QpOwogCi0gIGdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXJfdW5sb2NrZWQgKHVwbG9hZCk7Ci0KICAgaWYgKHVwbG9hZC0+cHJpdi0+bWV0aG9kX2ltcGwpCiAgICAgdXBsb2FkLT5wcml2LT5tZXRob2QtPmZyZWUgKHVwbG9hZC0+cHJpdi0+bWV0aG9kX2ltcGwpOwogICB1cGxvYWQtPnByaXYtPm1ldGhvZF9pID0gMDsKQEAgLTk5NCw5ICsxNDk1LDYgQEAKICAgICAgIHRtcCA9IGdzdF9jYXBzX21lcmdlICh0bXAsIHRtcDIpOwogICB9CiAKLSAgdG1wID0gZ3N0X2dsX292ZXJsYXlfY29tcG9zaXRvcl9hZGRfY2FwcyAodG1wKTsKLQotCiAgIGlmIChmaWx0ZXIpIHsKICAgICByZXN1bHQgPSBnc3RfY2Fwc19pbnRlcnNlY3RfZnVsbCAoZmlsdGVyLCB0bXAsIEdTVF9DQVBTX0lOVEVSU0VDVF9GSVJTVCk7CiAgICAgZ3N0X2NhcHNfdW5yZWYgKHRtcCk7CkBAIC0xMDk3LDMyICsxNTk1LDYgQEAKICAgR1NUX09CSkVDVF9VTkxPQ0sgKHVwbG9hZCk7CiB9CiAKLXN0YXRpYyB2b2lkCi1nc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyX3VubG9ja2VkIChHc3RHTFVwbG9hZCAqIHVwbG9hZCkKLXsKLSAgaWYgKHVwbG9hZC0+cHJpdi0+b3V0YnVmICYmIHVwbG9hZC0+cHJpdi0+bWV0aG9kX2ltcGwpIHsKLSAgICB1cGxvYWQtPnByaXYtPm1ldGhvZC0+cmVsZWFzZSAodXBsb2FkLT5wcml2LT5tZXRob2RfaW1wbCwKLSAgICAgICAgdXBsb2FkLT5wcml2LT5vdXRidWYpOwotICAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJnVwbG9hZC0+cHJpdi0+b3V0YnVmLCBOVUxMKTsKLSAgfQotfQotCi0vKioKLSAqIGdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXI6Ci0gKiBAdXBsb2FkOiBhICNHc3RHTFVwbG9hZAotICoKLSAqIFJlbGVhc2VzIGFueSBidWZmZXJzIGN1cnJlbnRseSByZWZlcmVuY2VkIGJ5IEB1cGxvYWQKLSAqLwotdm9pZAotZ3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlciAoR3N0R0xVcGxvYWQgKiB1cGxvYWQpCi17Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKHVwbG9hZCAhPSBOVUxMKTsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKHVwbG9hZCk7Ci0gIGdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXJfdW5sb2NrZWQgKHVwbG9hZCk7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLICh1cGxvYWQpOwotfQotCiBzdGF0aWMgZ2Jvb2xlYW4KIF91cGxvYWRfZmluZF9tZXRob2QgKEdzdEdMVXBsb2FkICogdXBsb2FkKQogewpAQCAtMTE0OCwxMSArMTYyMCwxMSBAQAogLyoqCiAgKiBnc3RfZ2xfdXBsb2FkX3BlcmZvcm1fd2l0aF9idWZmZXI6CiAgKiBAdXBsb2FkOiBhICNHc3RHTFVwbG9hZAotICogQGJ1ZmZlcjogYSAjR3N0QnVmZmVyCi0gKiBAb3V0YnVmX3B0cjogKGFsbG93LW5vbmUpOiByZXN1bHRpbmcgYnVmZmVyCisgKiBAYnVmZmVyOiBpbnB1dCAjR3N0QnVmZmVyCisgKiBAb3V0YnVmX3B0cjogcmVzdWx0aW5nICNHc3RCdWZmZXIKICAqCi0gKiBVcGxvYWRzIEBidWZmZXIgdG8gdGhlIHRleHR1cmUgZ2l2ZW4gYnkgQHRleF9pZC4gIEB0ZXhfaWQgaXMgdmFsaWQKLSAqIHVudGlsIGdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXIoKSBpcyBjYWxsZWQuCisgKiBVcGxvYWRzIEBidWZmZXIgdXNpbmcgdGhlIHRyYW5zZm9ybWF0aW9uIHNwZWNpZmllZCBieQorICogZ3N0X2dsX3VwbG9hZF9zZXRfY2FwcygpIGNyZWF0aW5nIGEgbmV3ICNHc3RCdWZmZXIgaW4gQG91dGJ1Zl9wdHIuCiAgKgogICogUmV0dXJuczogd2hldGhlciB0aGUgdXBsb2FkIHdhcyBzdWNjZXNzZnVsCiAgKi8KQEAgLTExNjEsMTQgKzE2MzMsMTQgQEAKICAgICBHc3RCdWZmZXIgKiogb3V0YnVmX3B0cikKIHsKICAgR3N0R0xVcGxvYWRSZXR1cm4gcmV0ID0gR1NUX0dMX1VQTE9BRF9FUlJPUjsKKyAgR3N0QnVmZmVyICpvdXRidWY7CiAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9VUExPQUQgKHVwbG9hZCksIEZBTFNFKTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19CVUZGRVIgKGJ1ZmZlciksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKG91dGJ1Zl9wdHIgIT0gTlVMTCwgRkFMU0UpOwogCiAgIEdTVF9PQkpFQ1RfTE9DSyAodXBsb2FkKTsKIAotICBnc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyX3VubG9ja2VkICh1cGxvYWQpOwotCiAjZGVmaW5lIE5FWFRfTUVUSE9EIFwKIGRvIHsgXAogICBpZiAoIV91cGxvYWRfZmluZF9tZXRob2QgKHVwbG9hZCkpIHsgXApAQCAtMTE4OCw3ICsxNjYwLDcgQEAKIAogICByZXQgPQogICAgICAgdXBsb2FkLT5wcml2LT5tZXRob2QtPnBlcmZvcm0gKHVwbG9hZC0+cHJpdi0+bWV0aG9kX2ltcGwsIGJ1ZmZlciwKLSAgICAgICZ1cGxvYWQtPnByaXYtPm91dGJ1Zik7CisgICAgICAmb3V0YnVmKTsKICAgaWYgKHJldCA9PSBHU1RfR0xfVVBMT0FEX1VOU0hBUkVEX0dMX0NPTlRFWFQpIHsKICAgICB1cGxvYWQtPnByaXYtPm1ldGhvZC0+ZnJlZSAodXBsb2FkLT5wcml2LT5tZXRob2RfaW1wbCk7CiAgICAgdXBsb2FkLT5wcml2LT5tZXRob2QgPSAmX3Jhd19kYXRhX3VwbG9hZDsKQEAgLTExOTcsMTggKzE2NjksMTUgQEAKICAgfSBlbHNlIGlmIChyZXQgPT0gR1NUX0dMX1VQTE9BRF9ET05FKSB7CiAgICAgLyogd2UgYXJlIGRvbmUgKi8KICAgfSBlbHNlIHsKLSAgICBnc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyX3VubG9ja2VkICh1cGxvYWQpOwogICAgIHVwbG9hZC0+cHJpdi0+bWV0aG9kLT5mcmVlICh1cGxvYWQtPnByaXYtPm1ldGhvZF9pbXBsKTsKICAgICB1cGxvYWQtPnByaXYtPm1ldGhvZF9pbXBsID0gTlVMTDsKICAgICBORVhUX01FVEhPRDsKICAgfQogCi0gIGlmIChvdXRidWZfcHRyKSB7Ci0gICAgaWYgKGJ1ZmZlciAhPSB1cGxvYWQtPnByaXYtPm91dGJ1ZikKLSAgICAgIGdzdF9idWZmZXJfY29weV9pbnRvICh1cGxvYWQtPnByaXYtPm91dGJ1ZiwgYnVmZmVyLAotICAgICAgICAgIEdTVF9CVUZGRVJfQ09QWV9GTEFHUyB8IEdTVF9CVUZGRVJfQ09QWV9USU1FU1RBTVBTLCAwLCAtMSk7Ci0gICAgKm91dGJ1Zl9wdHIgPSBnc3RfYnVmZmVyX3JlZiAodXBsb2FkLT5wcml2LT5vdXRidWYpOwotICB9CisgIGlmIChidWZmZXIgIT0gb3V0YnVmKQorICAgIGdzdF9idWZmZXJfY29weV9pbnRvIChvdXRidWYsIGJ1ZmZlciwKKyAgICAgICAgR1NUX0JVRkZFUl9DT1BZX0ZMQUdTIHwgR1NUX0JVRkZFUl9DT1BZX1RJTUVTVEFNUFMsIDAsIC0xKTsKKyAgKm91dGJ1Zl9wdHIgPSBvdXRidWY7CiAKICAgR1NUX09CSkVDVF9VTkxPQ0sgKHVwbG9hZCk7CiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmgKaW5kZXggNWJjNDM0Ni4uNTc3Yzk0YiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmgKQEAgLTk4LDggKzk4LDcgQEAKIAogR3N0R0xVcGxvYWRSZXR1cm4gZ3N0X2dsX3VwbG9hZF9wZXJmb3JtX3dpdGhfYnVmZmVyIChHc3RHTFVwbG9hZCAqIHVwbG9hZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RCdWZmZXIgKiBidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QnVmZmVyICoqIG91dGJ1Zik7Ci12b2lkICAgICAgICAgICAgICBnc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyICAgICAoR3N0R0xVcGxvYWQgKiB1cGxvYWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEJ1ZmZlciAqKiBvdXRidWZfcHRyKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkbWV0YS5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkbWV0YS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDdlMDA2Li4wMDAwMDAwCi0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZG1ldGEuYworKysgL2Rldi9udWxsCkBAIC0xLDM4MCArMCwwIEBACi0vKgotICogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNCBNYXR0aGV3IFdhdGVycyA8eXN0cmVlMDBAZ21haWwuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSNpbmNsdWRlICJnbC5oIgotI2luY2x1ZGUgImdzdGdsdXBsb2FkbWV0YS5oIgotCi0vKioKLSAqIFNFQ1RJT046Z3N0Z2x1cGxvYWRtZXRhCi0gKiBAc2hvcnRfZGVzY3JpcHRpb246IGFuIG9iamVjdCB0aGF0IHByb3ZpZGVzICNHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEKLSAqIEBzZWVfYWxzbzogI0dzdEdMVXBsb2FkLCAjR3N0R0xNZW1vcnkKLSAqCi0gKiAjR3N0R0xVcGxvYWRNZXRhIGlzIGFuIG9iamVjdCB0aGF0IHVwbG9hZHMgZGF0YSBmcm9tIHN5c3RlbSBtZW1vcnkgaW50byBHTCB0ZXh0dXJlcy4KLSAqCi0gKiBBICNHc3RHTFVwbG9hZCBjYW4gYmUgY3JlYXRlZCB3aXRoIGdzdF9nbF91cGxvYWRfbmV3KCkKLSAqLwotCi0jZGVmaW5lIFVTSU5HX09QRU5HTChjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wsIDEsIDApKQotI2RlZmluZSBVU0lOR19PUEVOR0wzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTDMsIDMsIDEpKQotI2RlZmluZSBVU0lOR19HTEVTKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMsIDEsIDApKQotI2RlZmluZSBVU0lOR19HTEVTMihjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMiwgMCkpCi0jZGVmaW5lIFVTSU5HX0dMRVMzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAzLCAwKSkKLQotLyogKklOREVOVC1PRkYqICovCi0KLXN0cnVjdCBfR3N0R0xVcGxvYWRNZXRhUHJpdmF0ZQotewotICBHc3RCdWZmZXIgKmJ1ZmZlcjsKLSAgZ2Jvb2xlYW4gaW5pdHRlZDsKLQotICBHc3RHTE1lbW9yeSAqaW5fdGV4W0dTVF9WSURFT19NQVhfUExBTkVTXTsKLSAgR3N0R0xNZW1vcnkgKm91dF90ZXhbR1NUX1ZJREVPX01BWF9QTEFORVNdOwotfTsKLQotR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X2dsX3VwbG9hZF9tZXRhX2RlYnVnKTsKLSNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9nbF91cGxvYWRfbWV0YV9kZWJ1ZwotCi0jZGVmaW5lIERFQlVHX0lOSVQgXAotICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X2dsX3VwbG9hZF9tZXRhX2RlYnVnLCAiZ2x1cGxvYWRtZXRhIiwgMCwgInVwbG9hZG1ldGEiKTsKLQotR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdEdMVXBsb2FkTWV0YSwgZ3N0X2dsX3VwbG9hZF9tZXRhLCBHU1RfVFlQRV9PQkpFQ1QsIERFQlVHX0lOSVQpOwotc3RhdGljIHZvaWQgZ3N0X2dsX3VwbG9hZF9tZXRhX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKLXN0YXRpYyB2b2lkIGdzdF9nbF91cGxvYWRfbWV0YV9yZXNldCAoR3N0R0xVcGxvYWRNZXRhICogdXBsb2FkKTsKLQotI2RlZmluZSBHU1RfR0xfVVBMT0FEX01FVEFfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFICgob2JqKSwgXAotICAgIEdTVF9UWVBFX0dMX1VQTE9BRF9NRVRBLCBHc3RHTFVwbG9hZE1ldGFQcml2YXRlKSkKLQotc3RhdGljIHZvaWQKLWdzdF9nbF91cGxvYWRfbWV0YV9jbGFzc19pbml0IChHc3RHTFVwbG9hZE1ldGFDbGFzcyAqIGtsYXNzKQotewotICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUgKGtsYXNzLCBzaXplb2YgKEdzdEdMVXBsb2FkTWV0YVByaXZhdGUpKTsKLQotICBHX09CSkVDVF9DTEFTUyAoa2xhc3MpLT5maW5hbGl6ZSA9IGdzdF9nbF91cGxvYWRfbWV0YV9maW5hbGl6ZTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nbF91cGxvYWRfbWV0YV9pbml0IChHc3RHTFVwbG9hZE1ldGEgKiB1cGxvYWQpCi17Ci0gIHVwbG9hZC0+cHJpdiA9IEdTVF9HTF9VUExPQURfTUVUQV9HRVRfUFJJVkFURSAodXBsb2FkKTsKLQotICB1cGxvYWQtPmNvbnRleHQgPSBOVUxMOwotCi0gIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZ1cGxvYWQtPmluZm8sIEdTVF9WSURFT19GT1JNQVRfRU5DT0RFRCwgMCwgMCk7Ci19Ci0KLS8qKgotICogZ3N0X2dsX3VwbG9hZF9tZXRhX25ldzoKLSAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKLSAqCi0gKiBSZXR1cm5zOiBhIG5ldyAjR3N0R0xVcGxvYWRNZXRhIG9iamVjdAotICovCi1Hc3RHTFVwbG9hZE1ldGEgKgotZ3N0X2dsX3VwbG9hZF9tZXRhX25ldyAoR3N0R0xDb250ZXh0ICogY29udGV4dCkKLXsKLSAgR3N0R0xVcGxvYWRNZXRhICp1cGxvYWQ7Ci0KLSAgdXBsb2FkID0gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9HTF9VUExPQURfTUVUQSwgTlVMTCk7Ci0KLSAgdXBsb2FkLT5jb250ZXh0ID0gZ3N0X29iamVjdF9yZWYgKGNvbnRleHQpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHVwbG9hZCwgIkNyZWF0ZWQgdXBsb2FkIGZvciBjb250ZXh0ICUiR1NUX1BUUl9GT1JNQVQsIHVwbG9hZC0+Y29udGV4dCk7Ci0gIAotICByZXR1cm4gdXBsb2FkOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dsX3VwbG9hZF9tZXRhX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQotewotICBHc3RHTFVwbG9hZE1ldGEgKnVwbG9hZDsKLQotICBHU1RfREVCVUdfT0JKRUNUIChvYmplY3QsICJGaW5hbGl6aW5nIik7Ci0gIHVwbG9hZCA9IEdTVF9HTF9VUExPQURfTUVUQSAob2JqZWN0KTsKLQotICBnc3RfZ2xfdXBsb2FkX21ldGFfcmVzZXQgKHVwbG9hZCk7Ci0KLSAgaWYgKHVwbG9hZC0+Y29udGV4dCkgewotICAgIGdzdF9vYmplY3RfdW5yZWYgKHVwbG9hZC0+Y29udGV4dCk7Ci0gICAgdXBsb2FkLT5jb250ZXh0ID0gTlVMTDsKLSAgfQotCi0gIEdfT0JKRUNUX0NMQVNTIChnc3RfZ2xfdXBsb2FkX21ldGFfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfdXBsb2FkX21ldGFfcmVzZXQgKEdzdEdMVXBsb2FkTWV0YSAqIHVwbG9hZCkKLXsKLSAgZ3VpbnQgaTsKLQotICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX01BWF9QTEFORVM7IGkrKykgewotICAgIGlmICh1cGxvYWQtPnByaXYtPm91dF90ZXhbaV0pIHsKLSAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKChHc3RNZW1vcnkgKikgdXBsb2FkLT5wcml2LT5vdXRfdGV4W2ldKTsKLSAgICAgIHVwbG9hZC0+cHJpdi0+b3V0X3RleFtpXSA9IE5VTEw7Ci0gICAgfQotICB9Ci0KLSAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19NQVhfUExBTkVTOyBpKyspIHsKLSAgICBpZiAodXBsb2FkLT5wcml2LT5pbl90ZXhbaV0pIHsKLSAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKChHc3RNZW1vcnkgKikgdXBsb2FkLT5wcml2LT5pbl90ZXhbaV0pOwotICAgICAgdXBsb2FkLT5wcml2LT5pbl90ZXhbaV0gPSBOVUxMOwotICAgIH0KLSAgfQotfQotCi1zdGF0aWMgdm9pZAotX2dzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0X3VubG9ja2VkIChHc3RHTFVwbG9hZE1ldGEgKiB1cGxvYWQsCi0gICAgR3N0VmlkZW9JbmZvICppbmZvKQotewotICBnX3JldHVybl9pZl9mYWlsICh1cGxvYWQgIT0gTlVMTCk7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoaW5mbykgIT0KLSAgICAgIEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTik7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoaW5mbykgIT0KLSAgICAgIEdTVF9WSURFT19GT1JNQVRfRU5DT0RFRCk7Ci0KLSAgaWYgKGdzdF92aWRlb19pbmZvX2lzX2VxdWFsICgmdXBsb2FkLT5pbmZvLCBpbmZvKSkKLSAgICByZXR1cm47Ci0KLSAgZ3N0X2dsX3VwbG9hZF9tZXRhX3Jlc2V0ICh1cGxvYWQpOwotICB1cGxvYWQtPmluZm8gPSAqaW5mbzsKLSAgdXBsb2FkLT5wcml2LT5pbml0dGVkID0gRkFMU0U7Ci19Ci0KLS8qKgotICogZ3N0X2dsX3VwbG9hZF9tZXRhX3NldF9mb3JtYXQ6Ci0gKiBAdXBsb2FkOiBhICNHc3RHTFVwbG9hZAotICogQGluZm86IGlucHV0ICNHc3RWaWRlb0luZm8KLSAqCi0gKiBJbml0aWFsaXplcyBAdXBsb2FkIHdpdGggdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciB1cGxvYWQuCi0gKi8KLXZvaWQKLWdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0IChHc3RHTFVwbG9hZE1ldGEgKiB1cGxvYWQsIEdzdFZpZGVvSW5mbyAqIGluZm8pCi17Ci0gIEdTVF9PQkpFQ1RfTE9DSyAodXBsb2FkKTsKLSAgX2dzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0X3VubG9ja2VkICh1cGxvYWQsIGluZm8pOwotICBHU1RfT0JKRUNUX1VOTE9DSyAodXBsb2FkKTsKLX0KLQotLyoqCi0gKiBnc3RfZ2xfdXBsb2FkX21ldGFfZ2V0X2Zvcm1hdDoKLSAqIEB1cGxvYWQ6IGEgI0dzdEdMVXBsb2FkCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiBUaGUgI0dzdFZpZGVvSW5mbyBzZXQgYnkKLSAqIGdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0KCkKLSAqLwotR3N0VmlkZW9JbmZvICoKLWdzdF9nbF91cGxvYWRfbWV0YV9nZXRfZm9ybWF0IChHc3RHTFVwbG9hZE1ldGEgKiB1cGxvYWQpCi17Ci0gIEdzdFZpZGVvSW5mbyAqcmV0OwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAodXBsb2FkKTsKLSAgcmV0ID0gJnVwbG9hZC0+aW5mbzsKLSAgR1NUX09CSkVDVF9MT0NLICh1cGxvYWQpOwotCi0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotX3BlcmZvcm1fd2l0aF9nbF9tZW1vcnkgKEdzdEdMVXBsb2FkTWV0YSAqIHVwbG9hZCwgR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhICoKLSAgICBtZXRhLCBndWludCB0ZXh0dXJlX2lkWzRdKQotewotICBnYm9vbGVhbiByZXMgPSBUUlVFOwotICBnaW50IGk7Ci0KLSAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTICgmdXBsb2FkLT5pbmZvKTsgaSsrKSB7Ci0gICAgR3N0R0xNZW1vcnkgKmluX21lbSA9IHVwbG9hZC0+cHJpdi0+aW5fdGV4W2ldOwotCi0gICAgaWYgKEdTVF9NRU1PUllfRkxBR19JU19TRVQgKGluX21lbSwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpKSB7Ci0gICAgICBHc3RNYXBJbmZvIG1hcF9pbmZvOwotICAgICAgZ3VpbnQgdGV4X2lkOwotCi0gICAgICB0ZXhfaWQgPSBpbl9tZW0tPnRleF9pZDsKLSAgICAgIGluX21lbS0+dGV4X2lkID0gdGV4dHVyZV9pZFtpXTsKLQotICAgICAgaWYgKCFnc3RfbWVtb3J5X21hcCAoKEdzdE1lbW9yeSAqKSBpbl9tZW0sICZtYXBfaW5mbywgR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpIHsKLSAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUICh1cGxvYWQsICJGYWlsZWQgdG8gbWFwIEdMIG1lbW9yeSIpOwotICAgICAgICByZXMgPSBGQUxTRTsKLSAgICAgIH0KLSAgICAgIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgaW5fbWVtLCAmbWFwX2luZm8pOwotCi0gICAgICBpbl9tZW0tPnRleF9pZCA9IHRleF9pZDsKLSAgICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAoaW5fbWVtLCBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEdzdEdMTWVtb3J5ICpvdXRfbWVtOwotICAgICAgZ2ludCBtZW1fd2lkdGgsIG1lbV9oZWlnaHQ7Ci0KLSAgICAgIGlmICghdXBsb2FkLT5wcml2LT5vdXRfdGV4W2ldKSB7Ci0gICAgICAgIC8qIHRoZSBHTCB1cGxvYWQgbWV0YSBjcmVhdGVzIEdMX1RFWFRVUkVfMkQgdGV4dHVyZXMgKi8KLSAgICAgICAgdXBsb2FkLT5wcml2LT5vdXRfdGV4W2ldID0gZ3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmUgKHVwbG9hZC0+Y29udGV4dCwKLSAgICAgICAgICAgIHRleHR1cmVfaWRbaV0sIEdMX1RFWFRVUkVfMkQsICZ1cGxvYWQtPmluZm8sIGksIE5VTEwsIE5VTEwsIE5VTEwpOwotICAgICAgfQotCi0gICAgICBvdXRfbWVtID0gdXBsb2FkLT5wcml2LT5vdXRfdGV4W2ldOwotCi0gICAgICBpZiAob3V0X21lbS0+dGV4X2lkICE9IHRleHR1cmVfaWRbaV0pIHsKLSAgICAgICAgb3V0X21lbS0+dGV4X2lkID0gdGV4dHVyZV9pZFtpXTsKLSAgICAgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChvdXRfbWVtLCBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKTsKLSAgICAgIH0KLQotICAgICAgbWVtX3dpZHRoID0gZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV93aWR0aCAob3V0X21lbSk7Ci0gICAgICBtZW1faGVpZ2h0ID0gZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9oZWlnaHQgKG91dF9tZW0pOwotCi0gICAgICBpZiAoIShyZXMgPSBnc3RfZ2xfbWVtb3J5X2NvcHlfaW50b190ZXh0dXJlIChpbl9tZW0sIG91dF9tZW0tPnRleF9pZCwKLSAgICAgICAgICAgIG91dF9tZW0tPnRleF90eXBlLCBtZW1fd2lkdGgsIG1lbV9oZWlnaHQsCi0gICAgICAgICAgICBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUgKCZvdXRfbWVtLT5pbmZvLCBvdXRfbWVtLT5wbGFuZSksCi0gICAgICAgICAgICBGQUxTRSkpKQotICAgICAgICBicmVhazsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLV9wZXJmb3JtX3dpdGhfZGF0YV91bmxvY2tlZCAoR3N0R0xVcGxvYWRNZXRhICogdXBsb2FkLAotICAgIEdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSAqIG1ldGEsIAotICAgIGdwb2ludGVyIGRhdGFbR1NUX1ZJREVPX01BWF9QTEFORVNdLCBndWludCB0ZXh0dXJlX2lkWzRdKQotewotICBndWludCBpOwotCi0gIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJnVwbG9hZC0+aW5mbyk7IGkrKykgewotICAgIGlmICghdXBsb2FkLT5wcml2LT5pbl90ZXhbaV0pCi0gICAgICB1cGxvYWQtPnByaXYtPmluX3RleFtpXSA9IGdzdF9nbF9tZW1vcnlfd3JhcHBlZCAodXBsb2FkLT5jb250ZXh0LAotICAgICAgICAgICZ1cGxvYWQtPmluZm8sIGksIE5VTEwsIGRhdGFbaV0sIE5VTEwsIE5VTEwpOwotICB9Ci0KLSAgcmV0dXJuIF9wZXJmb3JtX3dpdGhfZ2xfbWVtb3J5ICh1cGxvYWQsIG1ldGEsIHRleHR1cmVfaWQpOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLV9wZXJmb3JtX2Zvcl9nbF90ZXh0dXJlX3VwbG9hZF9tZXRhIChHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEgKgotICAgIG1ldGEsIGd1aW50IHRleHR1cmVfaWRbNF0pCi17Ci0gIEdzdEdMVXBsb2FkTWV0YSAqdXBsb2FkOwotICBHc3RWaWRlb0ZyYW1lIGZyYW1lOwotICBHc3RNZW1vcnkgKm1lbTsKLSAgZ2Jvb2xlYW4gcmV0OwotICBndWludCBpLCBuOwotCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChtZXRhICE9IE5VTEwsIEZBTFNFKTsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHRleHR1cmVfaWQgIT0gTlVMTCwgRkFMU0UpOwotCi0gIHVwbG9hZCA9IG1ldGEtPnVzZXJfZGF0YTsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKHVwbG9hZCk7Ci0KLSAgaWYgKCF1cGxvYWQtPnByaXYtPmluaXR0ZWQpIHsKLSAgICBHc3RWaWRlb0luZm8gaW5mbzsKLSAgICBHc3RWaWRlb01ldGEgKnZfbWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX21ldGEgKHVwbG9hZC0+cHJpdi0+YnVmZmVyKTsKLSAgICBnaW50IGk7Ci0KLSAgICBpZiAoIShyZXQgPSB2X21ldGEgIT0gTlVMTCkpCi0gICAgICBnb3RvIG91dDsKLQotICAgIGdzdF92aWRlb19pbmZvX2luaXQgKCZpbmZvKTsKLSAgICBpbmZvLmZpbmZvID0gZ3N0X3ZpZGVvX2Zvcm1hdF9nZXRfaW5mbyAodl9tZXRhLT5mb3JtYXQpOwotICAgIGluZm8ud2lkdGggPSB2X21ldGEtPndpZHRoOwotICAgIGluZm8uaGVpZ2h0ID0gdl9tZXRhLT5oZWlnaHQ7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgaW5mby5maW5mby0+bl9wbGFuZXM7IGkrKykgewotICAgICAgaW5mby5vZmZzZXRbaV0gPSB2X21ldGEtPm9mZnNldFtpXTsKLSAgICAgIGluZm8uc3RyaWRlW2ldID0gdl9tZXRhLT5zdHJpZGVbaV07Ci0gICAgfQotCi0gICAgX2dzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0X3VubG9ja2VkICh1cGxvYWQsICZpbmZvKTsKLSAgICB1cGxvYWQtPnByaXYtPmluaXR0ZWQgPSBUUlVFOwotICB9Ci0KLSAgR1NUX0xPRyAoIlVwbG9hZGluZyBmb3IgbWV0YSB3aXRoIHRleHR1cmVzICVpLCVpLCVpLCVpIiwgdGV4dHVyZV9pZFswXSwKLSAgICAgIHRleHR1cmVfaWRbMV0sIHRleHR1cmVfaWRbMl0sIHRleHR1cmVfaWRbM10pOwotCi0gIC8qIEdzdEdMTWVtb3J5ICovCi0gIG4gPSBnc3RfYnVmZmVyX25fbWVtb3J5ICh1cGxvYWQtPnByaXYtPmJ1ZmZlcik7Ci0gIG1lbSA9IGdzdF9idWZmZXJfcGVla19tZW1vcnkgKHVwbG9hZC0+cHJpdi0+YnVmZmVyLCAwKTsKLQotICBpZiAoZ3N0X2lzX2dsX21lbW9yeSAobWVtKSAmJiBuID09IEdTVF9WSURFT19JTkZPX05fUExBTkVTICgmdXBsb2FkLT5pbmZvKSkgewotICAgIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJnVwbG9hZC0+aW5mbyk7IGkrKykKLSAgICAgIHVwbG9hZC0+cHJpdi0+aW5fdGV4W2ldID0gKEdzdEdMTWVtb3J5ICopIGdzdF9idWZmZXJfcGVla19tZW1vcnkgKHVwbG9hZC0+cHJpdi0+YnVmZmVyLCBpKTsKLQotICAgIHJldCA9IF9wZXJmb3JtX3dpdGhfZ2xfbWVtb3J5ICh1cGxvYWQsIG1ldGEsIHRleHR1cmVfaWQpOwotCi0gICAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTICgmdXBsb2FkLT5pbmZvKTsgaSsrKQotICAgICAgdXBsb2FkLT5wcml2LT5pbl90ZXhbaV0gPSBOVUxMOwotCi0gICAgaWYgKHJldCkKLSAgICAgIGdvdG8gb3V0OwotICB9Ci0KLSAgaWYgKCEocmV0ID0gZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJmZyYW1lLCAmdXBsb2FkLT5pbmZvLCB1cGxvYWQtPnByaXYtPmJ1ZmZlciwKLSAgICAgICAgICBHU1RfTUFQX1JFQUQpKSkgewotICAgIEdTVF9FUlJPUiAoImZhaWxlZCB0byBtYXAgdmlkZW8gZnJhbWUiKTsKLSAgICBnb3RvIG91dDsKLSAgfQotCi0gIC8qIHVwZGF0ZSB0aGUgdmlkZW8gaW5mbyBmcm9tIHRoZSBvbmUgdXBkYXRlZCBieSBmcmFtZV9tYXAgdXNpbmcgdmlkZW8gbWV0YSAqLwotICBfZ3N0X2dsX3VwbG9hZF9tZXRhX3NldF9mb3JtYXRfdW5sb2NrZWQgKHVwbG9hZCwgJmZyYW1lLmluZm8pOwotCi0gIHJldCA9IF9wZXJmb3JtX3dpdGhfZGF0YV91bmxvY2tlZCAodXBsb2FkLCBtZXRhLCBmcmFtZS5kYXRhLCB0ZXh0dXJlX2lkKTsKLQotICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAgKCZmcmFtZSk7Ci0KLW91dDoKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHVwbG9hZCk7Ci0gIHJldHVybiByZXQ7Ci19Ci0KLS8qKgotICogZ3N0X2dsX3VwbG9hZF9tZXRhX2FkZF90b19idWZmZXI6Ci0gKiBAdXBsb2FkOiBhICNHc3RHTFVwbG9hZE1ldGEKLSAqIEBidWZmZXI6IGEgI0dzdEJ1ZmZlcgotICoKLSAqIEFkZHMgYSAjR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhIG9uIEBidWZmZXIgdXNpbmcgQHVwbG9hZAotICoKLSAqIFJldHVybnM6IHdoZXRoZXIgaXQgd2FzIHN1Y2Nlc3NmdWwKLSAqLwotZ2Jvb2xlYW4KLWdzdF9nbF91cGxvYWRfbWV0YV9hZGRfdG9fYnVmZmVyIChHc3RHTFVwbG9hZE1ldGEgKiB1cGxvYWQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLXsKLSAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleHR1cmVfdHlwZXNbR1NUX1ZJREVPX01BWF9QTEFORVNdOwotICBHc3RWaWRlb01ldGEgKnZfbWV0YTsKLSAgZ2ludCBpOwotCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh1cGxvYWQgIT0gTlVMTCwgRkFMU0UpOwotICBnX3JldHVybl92YWxfaWZfZmFpbCAoYnVmZmVyICE9IE5VTEwsIEZBTFNFKTsKLSAgdl9tZXRhID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fbWV0YSAoYnVmZmVyKTsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHZfbWV0YSAhPSBOVUxMLCBGQUxTRSk7Ci0KLSAgdXBsb2FkLT5wcml2LT5idWZmZXIgPSBidWZmZXI7Ci0KLSAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19NQVhfUExBTkVTOyBpKyspIHsKLSAgICB0ZXh0dXJlX3R5cGVzW2ldID0gZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdCAodXBsb2FkLT5jb250ZXh0LCB2X21ldGEtPmZvcm1hdCwgaSk7Ci0gIH0KLQotICBnc3RfYnVmZmVyX2FkZF92aWRlb19nbF90ZXh0dXJlX3VwbG9hZF9tZXRhIChidWZmZXIsCi0gICAgICBHU1RfVklERU9fR0xfVEVYVFVSRV9PUklFTlRBVElPTl9YX05PUk1BTF9ZX05PUk1BTCwgMSwgdGV4dHVyZV90eXBlcywKLSAgICAgIF9wZXJmb3JtX2Zvcl9nbF90ZXh0dXJlX3VwbG9hZF9tZXRhLCBnc3Rfb2JqZWN0X3JlZiAodXBsb2FkKSwKLSAgICAgIGdzdF9vYmplY3RfcmVmLCBnc3Rfb2JqZWN0X3VucmVmKTsKLQotICByZXR1cm4gVFJVRTsKLX0KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZG1ldGEuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZG1ldGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk5YmUyYS4uMDAwMDAwMAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWRtZXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0vKgotICogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0dGhldyBXYXRlcnMgPHlzdHJlZTAwQGdtYWlsLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIF9fR1NUX0dMX1VQTE9BRF9NRVRBX0hfXwotI2RlZmluZSBfX0dTVF9HTF9VUExPQURfTUVUQV9IX18KLQotI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgotI2luY2x1ZGUgPGdzdC9nc3RtZW1vcnkuaD4KLQotI2luY2x1ZGUgPGdzdC9nbC9nc3RnbF9md2QuaD4KLQotR19CRUdJTl9ERUNMUwotCi1HVHlwZSBnc3RfZ2xfdXBsb2FkX21ldGFfZ2V0X3R5cGUgKHZvaWQpOwotI2RlZmluZSBHU1RfVFlQRV9HTF9VUExPQURfTUVUQSAoZ3N0X2dsX3VwbG9hZF9tZXRhX2dldF90eXBlKCkpCi0jZGVmaW5lIEdTVF9HTF9VUExPQURfTUVUQShvYmopIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9HTF9VUExPQURfTUVUQSxHc3RHTFVwbG9hZE1ldGEpKQotI2RlZmluZSBHU1RfR0xfVVBMT0FEX01FVEFfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX0dMX1VQTE9BRF9NRVRBLEdzdEdMVXBsb2FkTWV0YUNsYXNzKSkKLSNkZWZpbmUgR1NUX0lTX0dMX1VQTE9BRF9NRVRBKG9iaikgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX0dMX1VQTE9BRF9NRVRBKSkKLSNkZWZpbmUgR1NUX0lTX0dMX1VQTE9BRF9NRVRBX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9HTF9VUExPQURfTUVUQSkpCi0jZGVmaW5lIEdTVF9HTF9VUExPQURfTUVUQV9DQVNUKG9iaikgKChHc3RHTFVwbG9hZE1ldGEqKShvYmopKQotCi0vKioKLSAqIEdzdEdMVXBsb2FkTWV0YQotICoKLSAqIE9wYXF1ZSAjR3N0R0xVcGxvYWRNZXRhIG9iamVjdAotICovCi1zdHJ1Y3QgX0dzdEdMVXBsb2FkTWV0YQotewotICAvKiA8cHJpdmF0ZT4gKi8KLSAgR3N0T2JqZWN0ICAgICAgICBwYXJlbnQ7Ci0KLSAgR3N0R0xDb250ZXh0ICAgICpjb250ZXh0OwotCi0gIC8qIGlucHV0IGRhdGEgKi8KLSAgR3N0VmlkZW9JbmZvICAgICBpbmZvOwotCi0gIC8qIDxwcml2YXRlPiAqLwotICBHc3RHTFVwbG9hZE1ldGFQcml2YXRlICpwcml2OwotCi0gIGdwb2ludGVyIF9yZXNlcnZlZFtHU1RfUEFERElOR107Ci19OwotCi0vKioKLSAqIEdzdEdMVXBsb2FkTWV0YUNsYXNzOgotICoKLSAqIFRoZSAjR3N0R0xVcGxvYWRNZXRhQ2xhc3Mgc3RydWN0IG9ubHkgY29udGFpbnMgcHJpdmF0ZSBkYXRhCi0gKi8KLXN0cnVjdCBfR3N0R0xVcGxvYWRNZXRhQ2xhc3MKLXsKLSAgR3N0T2JqZWN0Q2xhc3Mgb2JqZWN0X2NsYXNzOwotfTsKLQotR3N0R0xVcGxvYWRNZXRhICogZ3N0X2dsX3VwbG9hZF9tZXRhX25ldyAgICAgICAgICAgIChHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKLQotdm9pZCAgICAgICAgICAgZ3N0X2dsX3VwbG9hZF9tZXRhX3NldF9mb3JtYXQgICAgKEdzdEdMVXBsb2FkTWV0YSAqIHVwbG9hZCwgR3N0VmlkZW9JbmZvICogaW5mbyk7Ci1Hc3RWaWRlb0luZm8gKiBnc3RfZ2xfdXBsb2FkX21ldGFfZ2V0X2Zvcm1hdCAgICAoR3N0R0xVcGxvYWRNZXRhICogdXBsb2FkKTsKLQotZ2Jvb2xlYW4gICAgICAgZ3N0X2dsX3VwbG9hZF9tZXRhX2FkZF90b19idWZmZXIgKEdzdEdMVXBsb2FkTWV0YSAqIHVwbG9hZCwgR3N0QnVmZmVyICogYnVmZmVyKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIF9fR1NUX0dMX1VQTE9BRF9NRVRBX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmMKaW5kZXggMGMwNjQyYS4uMDI5MGVmYiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuYworKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5jCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnbGliL2dwcmludGYuaD4KIAogI2luY2x1ZGUgImdsLmgiCiAjaW5jbHVkZSAiZ3N0Z2x1dGlscy5oIgpAQCAtMzc0LDIwICszNzUsNjUgQEAKICAgZ3N0X29iamVjdF91bnJlZiAoZnJhbWUpOwogfQogCi1zdGF0aWMgdm9pZAotX2NvbXBpbGVfc2hhZGVyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTFNoYWRlciAqKiBzaGFkZXIpCitzdHJ1Y3QgX2NvbXBpbGVfc2hhZGVyCiB7CisgIEdzdEdMU2hhZGVyICoqc2hhZGVyOworICBjb25zdCBnY2hhciAqdmVydGV4X3NyYzsKKyAgY29uc3QgZ2NoYXIgKmZyYWdtZW50X3NyYzsKK307CisKK3N0YXRpYyB2b2lkCitfY29tcGlsZV9zaGFkZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIHN0cnVjdCBfY29tcGlsZV9zaGFkZXIgKmRhdGEpCit7CisgIEdzdEdMU2hhZGVyICpzaGFkZXI7CisgIEdzdEdMU0xTdGFnZSAqdmVydCwgKmZyYWc7CiAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwogCi0gIGdzdF9nbF9zaGFkZXJfY29tcGlsZSAoKnNoYWRlciwgJmVycm9yKTsKLSAgaWYgKGVycm9yKSB7Ci0gICAgZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yIChjb250ZXh0LCAiJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgIHNoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3IChjb250ZXh0KTsKKworICBpZiAoZGF0YS0+dmVydGV4X3NyYykgeworICAgIHZlcnQgPSBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmcgKGNvbnRleHQsIEdMX1ZFUlRFWF9TSEFERVIsCisgICAgICAgIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwKKyAgICAgICAgR1NUX0dMU0xfUFJPRklMRV9FUyB8IEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwgZGF0YS0+dmVydGV4X3NyYyk7CisgICAgaWYgKCFnc3RfZ2xzbF9zdGFnZV9jb21waWxlICh2ZXJ0LCAmZXJyb3IpKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUICh2ZXJ0LCAiJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmICh2ZXJ0KTsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHNoYWRlcik7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghZ3N0X2dsX3NoYWRlcl9hdHRhY2ggKHNoYWRlciwgdmVydCkpIHsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHNoYWRlcik7CisgICAgICByZXR1cm47CisgICAgfQorICB9CisKKyAgaWYgKGRhdGEtPmZyYWdtZW50X3NyYykgeworICAgIGZyYWcgPSBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmcgKGNvbnRleHQsIEdMX0ZSQUdNRU5UX1NIQURFUiwKKyAgICAgICAgR1NUX0dMU0xfVkVSU0lPTl9OT05FLAorICAgICAgICBHU1RfR0xTTF9QUk9GSUxFX0VTIHwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLAorICAgICAgICBkYXRhLT5mcmFnbWVudF9zcmMpOworICAgIGlmICghZ3N0X2dsc2xfc3RhZ2VfY29tcGlsZSAoZnJhZywgJmVycm9yKSkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoZnJhZywgIiVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgZ3N0X29iamVjdF91bnJlZiAoZnJhZyk7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChzaGFkZXIpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWdzdF9nbF9zaGFkZXJfYXR0YWNoIChzaGFkZXIsIGZyYWcpKSB7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChzaGFkZXIpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorCisgIGlmICghZ3N0X2dsX3NoYWRlcl9saW5rIChzaGFkZXIsICZlcnJvcikpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzaGFkZXIsICIlcyIsIGVycm9yLT5tZXNzYWdlKTsKICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKICAgICBlcnJvciA9IE5VTEw7CiAgICAgZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVyIChjb250ZXh0KTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmICgqc2hhZGVyKTsKLSAgICAqc2hhZGVyID0gTlVMTDsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzaGFkZXIpOworICAgIHJldHVybjsKICAgfQorCisgICpkYXRhLT5zaGFkZXIgPSBzaGFkZXI7CiB9CiAKIC8qIENhbGxlZCBieSBnbGZpbHRlciAqLwpAQCAtMzk1LDE4ICs0NDEsMTcgQEAKIGdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGNvbnN0IGdjaGFyICogdmVydF9zcmMsCiAgICAgY29uc3QgZ2NoYXIgKiBmcmFnX3NyYywgR3N0R0xTaGFkZXIgKiogc2hhZGVyKQogeworICBzdHJ1Y3QgX2NvbXBpbGVfc2hhZGVyIGRhdGE7CisKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGZyYWdfc3JjICE9IE5VTEwgfHwgdmVydF9zcmMgIT0gTlVMTCwgRkFMU0UpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2hhZGVyICE9IE5VTEwsIEZBTFNFKTsKIAotICAqc2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXcgKGNvbnRleHQpOwotCi0gIGlmIChmcmFnX3NyYykKLSAgICBnc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2UgKCpzaGFkZXIsIGZyYWdfc3JjKTsKLSAgaWYgKHZlcnRfc3JjKQotICAgIGdzdF9nbF9zaGFkZXJfc2V0X3ZlcnRleF9zb3VyY2UgKCpzaGFkZXIsIHZlcnRfc3JjKTsKKyAgZGF0YS5zaGFkZXIgPSBzaGFkZXI7CisgIGRhdGEudmVydGV4X3NyYyA9IHZlcnRfc3JjOworICBkYXRhLmZyYWdtZW50X3NyYyA9IGZyYWdfc3JjOwogCiAgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGNvbnRleHQsIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfY29tcGlsZV9zaGFkZXIsCi0gICAgICBzaGFkZXIpOworICAgICAgJmRhdGEpOwogCiAgIHJldHVybiAqc2hhZGVyICE9IE5VTEw7CiB9CkBAIC00MTYsOCArNDYxLDcgQEAKIHsKICAgdmFfbGlzdCBhcmdzOwogCi0gIGlmIChlcnJvcl9tZXNzYWdlKQotICAgIGdfZnJlZSAoZXJyb3JfbWVzc2FnZSk7CisgIGdfZnJlZSAoZXJyb3JfbWVzc2FnZSk7CiAKICAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7CiAgIGVycm9yX21lc3NhZ2UgPSBnX3N0cmR1cF92cHJpbnRmIChmb3JtYXQsIGFyZ3MpOwpAQCAtNDUyLDYgKzQ5NiwxOSBAQAogCiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0NPTlRFWFQpOwogCitzdGF0aWMgdm9pZAorX2luaXRfY29udGV4dF9kZWJ1ZyAodm9pZCkKK3sKKyNpZm5kZWYgR1NUX0RJU0FCTEVfR1NUX0RFQlVHCisgIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBfaW5pdCA9IDA7CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmX2luaXQpKSB7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0dFVCAoR1NUX0NBVF9DT05URVhULCAiR1NUX0NPTlRFWFQiKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKyAgfQorI2VuZGlmCit9CisKIHN0YXRpYyBnYm9vbGVhbgogcGFkX3F1ZXJ5IChjb25zdCBHVmFsdWUgKiBpdGVtLCBHVmFsdWUgKiB2YWx1ZSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQogewpAQCAtNDU5LDYgKzUxNiw4IEBACiAgIEdzdFF1ZXJ5ICpxdWVyeSA9IHVzZXJfZGF0YTsKICAgZ2Jvb2xlYW4gcmVzOwogCisgIF9pbml0X2NvbnRleHRfZGVidWcgKCk7CisKICAgcmVzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5IChwYWQsIHF1ZXJ5KTsKIAogICBpZiAocmVzKSB7CkBAIC00OTUsMTMgKzU1NCwxNCBAQAogICByZXR1cm4gZ192YWx1ZV9nZXRfYm9vbGVhbiAoJnJlcyk7CiB9CiAKLXN0YXRpYyBHc3RRdWVyeSAqCi1fZ3N0X2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAotICAgIGdwb2ludGVyIHB0ciwgY29uc3QgZ2NoYXIgKiBkaXNwbGF5X3R5cGUpCitzdGF0aWMgdm9pZAorX2dzdF9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwgY29uc3QgZ2NoYXIgKiBkaXNwbGF5X3R5cGUpCiB7CiAgIEdzdFF1ZXJ5ICpxdWVyeTsKICAgR3N0Q29udGV4dCAqY3R4dDsKIAorICBfaW5pdF9jb250ZXh0X2RlYnVnICgpOworCiAgIC8qICAyYSkgUXVlcnkgZG93bnN0cmVhbSB3aXRoIEdTVF9RVUVSWV9DT05URVhUIGZvciB0aGUgY29udGV4dCBhbmQKICAgICogICAgICBjaGVjayBpZiBkb3duc3RyZWFtIGFscmVhZHkgaGFzIGEgY29udGV4dCBvZiB0aGUgc3BlY2lmaWMgdHlwZQogICAgKiAgMmIpIFF1ZXJ5IHVwc3RyZWFtIGFzIGFib3ZlLgpAQCAtNTExLDEwICs1NzEsMTIgQEAKICAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZjdHh0KTsKICAgICBHU1RfQ0FUX0lORk9fT0JKRUNUIChHU1RfQ0FUX0NPTlRFWFQsIGVsZW1lbnQsCiAgICAgICAgICJmb3VuZCBjb250ZXh0ICglcCkgaW4gZG93bnN0cmVhbSBxdWVyeSIsIGN0eHQpOworICAgIGdzdF9lbGVtZW50X3NldF9jb250ZXh0IChlbGVtZW50LCBjdHh0KTsKICAgfSBlbHNlIGlmIChnc3RfZ2xfcnVuX3F1ZXJ5IChlbGVtZW50LCBxdWVyeSwgR1NUX1BBRF9TSU5LKSkgewogICAgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0IChxdWVyeSwgJmN0eHQpOwogICAgIEdTVF9DQVRfSU5GT19PQkpFQ1QgKEdTVF9DQVRfQ09OVEVYVCwgZWxlbWVudCwKICAgICAgICAgImZvdW5kIGNvbnRleHQgKCVwKSBpbiB1cHN0cmVhbSBxdWVyeSIsIGN0eHQpOworICAgIGdzdF9lbGVtZW50X3NldF9jb250ZXh0IChlbGVtZW50LCBjdHh0KTsKICAgfSBlbHNlIHsKICAgICAvKiAzKSBQb3N0IGEgR1NUX01FU1NBR0VfTkVFRF9DT05URVhUIG1lc3NhZ2Ugb24gdGhlIGJ1cyB3aXRoCiAgICAgICogICAgdGhlIHJlcXVpcmVkIGNvbnRleHQgdHlwZSBhbmQgYWZ0ZXJ3YXJkcyBjaGVjayBpZiBhCkBAIC01MzcsMTAzICs1OTksMzMgQEAKICAgICogaXMgcmVxdWlyZWQgdG8gdXBkYXRlIHRoZSBkaXNwbGF5X3B0ciBvciBjYWxsIGdzdF9nbF9oYW5kbGVfc2V0X2NvbnRleHQoKS4KICAgICovCiAKLSAgcmV0dXJuIHF1ZXJ5OworICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKIH0KIAogc3RhdGljIHZvaWQKIGdzdF9nbF9kaXNwbGF5X2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RHTERpc3BsYXkgKiogZGlzcGxheV9wdHIpCiB7Ci0gIEdzdENvbnRleHQgKmN0eHQgPSBOVUxMOwotICBHc3RRdWVyeSAqcXVlcnkgPSBOVUxMOwotCi0jaWZuZGVmIEdTVF9ESVNBQkxFX0dTVF9ERUJVRwotICBpZiAoIUdTVF9DQVRfQ09OVEVYVCkKLSAgICBHU1RfREVCVUdfQ0FURUdPUllfR0VUIChHU1RfQ0FUX0NPTlRFWFQsICJHU1RfQ09OVEVYVCIpOwotI2VuZGlmCi0KLSAgcXVlcnkgPQotICAgICAgX2dzdF9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LCBkaXNwbGF5X3B0ciwgR1NUX0dMX0RJU1BMQVlfQ09OVEVYVF9UWVBFKTsKLSAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY3R4dCk7Ci0KLSAgaWYgKGN0eHQgJiYgZ3N0X2NvbnRleHRfaGFzX2NvbnRleHRfdHlwZSAoY3R4dCwgR1NUX0dMX0RJU1BMQVlfQ09OVEVYVF9UWVBFKSkgewotICAgIEdzdEdMRGlzcGxheSAqdG1wX2Rpc3AgPSBOVUxMOwotICAgIGlmIChnc3RfY29udGV4dF9nZXRfZ2xfZGlzcGxheSAoY3R4dCwgJnRtcF9kaXNwKSAmJiB0bXBfZGlzcCkKLSAgICAgICpkaXNwbGF5X3B0ciA9IHRtcF9kaXNwOwotICB9Ci0KKyAgX2dzdF9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LCBHU1RfR0xfRElTUExBWV9DT05URVhUX1RZUEUpOwogICBpZiAoKmRpc3BsYXlfcHRyKQotICAgIGdvdG8gb3V0OworICAgIHJldHVybjsKIAogI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19YMTEKLSAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7Ci0gIHF1ZXJ5ID0gX2dzdF9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LCBkaXNwbGF5X3B0ciwgImdzdC54MTEuZGlzcGxheS5oYW5kbGUiKTsKLSAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY3R4dCk7Ci0gIGlmIChjdHh0ICYmIGdzdF9jb250ZXh0X2hhc19jb250ZXh0X3R5cGUgKGN0eHQsICJnc3QueDExLmRpc3BsYXkuaGFuZGxlIikpIHsKLSAgICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnM7Ci0gICAgRGlzcGxheSAqZGlzcGxheTsKLQotICAgIHMgPSBnc3RfY29udGV4dF9nZXRfc3RydWN0dXJlIChjdHh0KTsKLSAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXQgKHMsICJkaXNwbGF5IiwgR19UWVBFX1BPSU5URVIsICZkaXNwbGF5LCBOVUxMKQotICAgICAgICAmJiBkaXNwbGF5KSB7Ci0gICAgICAqZGlzcGxheV9wdHIgPQotICAgICAgICAgIChHc3RHTERpc3BsYXkgKikgZ3N0X2dsX2Rpc3BsYXlfeDExX25ld193aXRoX2Rpc3BsYXkgKGRpc3BsYXkpOwotICAgIH0KLSAgfQotCisgIF9nc3RfY29udGV4dF9xdWVyeSAoZWxlbWVudCwgImdzdC54MTEuZGlzcGxheS5oYW5kbGUiKTsKICAgaWYgKCpkaXNwbGF5X3B0cikKLSAgICBnb3RvIG91dDsKKyAgICByZXR1cm47CiAjZW5kaWYKIAogI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19XQVlMQU5ECi0gIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOwotICBxdWVyeSA9Ci0gICAgICBfZ3N0X2NvbnRleHRfcXVlcnkgKGVsZW1lbnQsIGRpc3BsYXlfcHRyLAotICAgICAgIkdzdFdheWxhbmREaXNwbGF5SGFuZGxlQ29udGV4dFR5cGUiKTsKLSAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY3R4dCk7Ci0gIGlmIChjdHh0Ci0gICAgICAmJiBnc3RfY29udGV4dF9oYXNfY29udGV4dF90eXBlIChjdHh0LAotICAgICAgICAgICJHc3RXYXlsYW5kRGlzcGxheUhhbmRsZUNvbnRleHRUeXBlIikpIHsKLSAgICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnM7Ci0gICAgc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXk7Ci0KLSAgICBzID0gZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZSAoY3R4dCk7Ci0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0IChzLCAiZGlzcGxheSIsIEdfVFlQRV9QT0lOVEVSLCAmZGlzcGxheSwgTlVMTCkKLSAgICAgICAgJiYgZGlzcGxheSkgewotICAgICAgKmRpc3BsYXlfcHRyID0KLSAgICAgICAgICAoR3N0R0xEaXNwbGF5ICopIGdzdF9nbF9kaXNwbGF5X3dheWxhbmRfbmV3X3dpdGhfZGlzcGxheSAoZGlzcGxheSk7Ci0gICAgfQotICB9Ci0KKyAgX2dzdF9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LCAiR3N0V2F5bGFuZERpc3BsYXlIYW5kbGVDb250ZXh0VHlwZSIpOwogICBpZiAoKmRpc3BsYXlfcHRyKQotICAgIGdvdG8gb3V0OworICAgIHJldHVybjsKICNlbmRpZgotCi1vdXQ6Ci0gIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOwogfQogCiBzdGF0aWMgdm9pZAotZ3N0X2dsX2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RHTENvbnRleHQgKiogY29udGV4dF9wdHIpCitnc3RfZ2xfY29udGV4dF9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQpCiB7Ci0gIEdzdENvbnRleHQgKmN0eHQ7Ci0gIEdzdFF1ZXJ5ICpxdWVyeTsKLQotI2lmbmRlZiBHU1RfRElTQUJMRV9HU1RfREVCVUcKLSAgaWYgKCFHU1RfQ0FUX0NPTlRFWFQpCi0gICAgR1NUX0RFQlVHX0NBVEVHT1JZX0dFVCAoR1NUX0NBVF9DT05URVhULCAiR1NUX0NPTlRFWFQiKTsKLSNlbmRpZgotCi0gIHF1ZXJ5ID0gX2dzdF9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LCBjb250ZXh0X3B0ciwgImdzdC5nbC5hcHBfY29udGV4dCIpOwotICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZjdHh0KTsKLSAgaWYgKGN0eHQgJiYgZ3N0X2NvbnRleHRfaGFzX2NvbnRleHRfdHlwZSAoY3R4dCwgImdzdC5nbC5hcHBfY29udGV4dCIpKSB7Ci0gICAgY29uc3QgR3N0U3RydWN0dXJlICpzID0gZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZSAoY3R4dCk7Ci0gICAgR3N0R0xDb250ZXh0ICp0bXBfY3R4ID0gTlVMTDsKLSAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXQgKHMsICJjb250ZXh0IiwgR1NUX0dMX1RZUEVfQ09OVEVYVCwgJnRtcF9jdHgsIE5VTEwpCi0gICAgICAgICYmIHRtcF9jdHgpCi0gICAgICAqY29udGV4dF9wdHIgPSB0bXBfY3R4OwotICB9Ci0KLSAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7CisgIF9nc3RfY29udGV4dF9xdWVyeSAoZWxlbWVudCwgImdzdC5nbC5hcHBfY29udGV4dCIpOwogfQogCiAvKiAgNCkgQ3JlYXRlIGEgY29udGV4dCBieSBpdHNlbGYgYW5kIHBvc3QgYSBHU1RfTUVTU0FHRV9IQVZFX0NPTlRFWFQKQEAgLTY1MCw5ICs2NDIsMTMgQEAKICAgICByZXR1cm47CiAgIH0KIAorICBfaW5pdF9jb250ZXh0X2RlYnVnICgpOworCiAgIGNvbnRleHQgPSBnc3RfY29udGV4dF9uZXcgKEdTVF9HTF9ESVNQTEFZX0NPTlRFWFRfVFlQRSwgVFJVRSk7CiAgIGdzdF9jb250ZXh0X3NldF9nbF9kaXNwbGF5IChjb250ZXh0LCBkaXNwbGF5KTsKIAorICBnc3RfZWxlbWVudF9zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7CisKICAgR1NUX0NBVF9JTkZPX09CSkVDVCAoR1NUX0NBVF9DT05URVhULCBlbGVtZW50LAogICAgICAgInBvc3RpbmcgaGF2ZSBjb250ZXh0ICglcCkgbWVzc2FnZSB3aXRoIGRpc3BsYXkgKCVwKSIsIGNvbnRleHQsIGRpc3BsYXkpOwogICBtc2cgPSBnc3RfbWVzc2FnZV9uZXdfaGF2ZV9jb250ZXh0IChHU1RfT0JKRUNUX0NBU1QgKGVsZW1lbnQpLCBjb250ZXh0KTsKQEAgLTY5Myw3ICs2ODksNyBAQAogICBpZiAoKmNvbnRleHRfcHRyKQogICAgIGdvdG8gZG9uZTsKIAotICBnc3RfZ2xfY29udGV4dF9xdWVyeSAoZWxlbWVudCwgY29udGV4dF9wdHIpOworICBnc3RfZ2xfY29udGV4dF9xdWVyeSAoZWxlbWVudCk7CiAKIGRvbmU6CiAgIHJldHVybiAqZGlzcGxheV9wdHIgIT0gTlVMTDsKQEAgLTkwOCw2ICs5MDQsMjUgQEAKICAgcmV0dXJuIHBsYW5lX3NpemU7CiB9CiAKKy8qIGZpbmQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgc3RhcnQgb2YgdGhlIHBsYW5lIGFuZCB3aGVyZSB0aGUgdmlkZW8KKyAqIGRhdGEgc3RhcnRzIGluIHRoZSBwbGFuZSAqLworZ3NpemUKK2dzdF9nbF9nZXRfcGxhbmVfc3RhcnQgKEdzdFZpZGVvSW5mbyAqIGluZm8sIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLAorICAgIGd1aW50IHBsYW5lKQoreworICBnc2l6ZSBwbGFuZV9zdGFydDsKKyAgZ2ludCBpOworCisgIC8qIGZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBwbGFuZSBkYXRhIGluY2x1ZGluZyBwYWRkaW5nICovCisgIHBsYW5lX3N0YXJ0ID0gMDsKKyAgZm9yIChpID0gMDsgaSA8IHBsYW5lOyBpKyspIHsKKyAgICBwbGFuZV9zdGFydCArPSBnc3RfZ2xfZ2V0X3BsYW5lX2RhdGFfc2l6ZSAoaW5mbywgdmFsaWduLCBpKTsKKyAgfQorCisgIC8qIG9mZnNldCBiZXR3ZWVuIHRoZSBwbGFuZSBkYXRhIHN0YXJ0IGFuZCB3aGVyZSB0aGUgdmlkZW8gZnJhbWUgc3RhcnRzICovCisgIHJldHVybiAoR1NUX1ZJREVPX0lORk9fUExBTkVfT0ZGU0VUIChpbmZvLCBwbGFuZSkpIC0gcGxhbmVfc3RhcnQ7Cit9CisKIEdzdENhcHMgKgogZ3N0X2dsX2NhcHNfcmVwbGFjZV9hbGxfY2Fwc19mZWF0dXJlcyAoY29uc3QgR3N0Q2FwcyAqIGNhcHMsCiAgICAgY29uc3QgZ2NoYXIgKiBmZWF0dXJlX25hbWUpCkBAIC05MzIsMyArOTQ3LDEzMiBAQAogCiAgIHJldHVybiB0bXA7CiB9CisKKy8qKgorICogZ3N0X2dsX3ZhbHVlX2dldF90ZXh0dXJlX3RhcmdldF9tYXNrOgorICogQHZhbHVlOiBhbiBpbml0aWFsaXplZCAjR1ZhbHVlIG9mIHR5cGUgR19UWVBFX1NUUklORworICoKKyAqIFNlZSBnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0X2Zyb21fbWFzaygpIGZvciB3aGF0IGVudGFpbHMgYSBtYXNrCisgKgorICogUmV0dXJuczogdGhlIG1hc2sgb2YgI0dzdEdMVGV4dHVyZVRhcmdldCdzIGluIEB2YWx1ZQorICovCitHc3RHTFRleHR1cmVUYXJnZXQKK2dzdF9nbF92YWx1ZV9nZXRfdGV4dHVyZV90YXJnZXRfbWFzayAoY29uc3QgR1ZhbHVlICogdGFyZ2V0cykKK3sKKyAgZ3VpbnQgbmV3X3RhcmdldHMgPSAwOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh0YXJnZXRzICE9IE5VTEwsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FKTsKKworICBpZiAoR19UWVBFX0NIRUNLX1ZBTFVFX1RZUEUgKHRhcmdldHMsIEdfVFlQRV9TVFJJTkcpKSB7CisgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldDsKKyAgICBjb25zdCBnY2hhciAqc3RyOworCisgICAgc3RyID0gZ192YWx1ZV9nZXRfc3RyaW5nICh0YXJnZXRzKTsKKyAgICB0YXJnZXQgPSBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmcgKHN0cik7CisKKyAgICBpZiAodGFyZ2V0KQorICAgICAgbmV3X3RhcmdldHMgfD0gMSA8PCB0YXJnZXQ7CisgIH0gZWxzZSBpZiAoR19UWVBFX0NIRUNLX1ZBTFVFX1RZUEUgKHRhcmdldHMsIEdTVF9UWVBFX0xJU1QpKSB7CisgICAgZ2ludCBqLCBtOworCisgICAgbSA9IGdzdF92YWx1ZV9saXN0X2dldF9zaXplICh0YXJnZXRzKTsKKyAgICBmb3IgKGogPSAwOyBqIDwgbTsgaisrKSB7CisgICAgICBjb25zdCBHVmFsdWUgKnZhbCA9IGdzdF92YWx1ZV9saXN0X2dldF92YWx1ZSAodGFyZ2V0cywgaik7CisgICAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0OworICAgICAgY29uc3QgZ2NoYXIgKnN0cjsKKworICAgICAgc3RyID0gZ192YWx1ZV9nZXRfc3RyaW5nICh2YWwpOworICAgICAgdGFyZ2V0ID0gZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nIChzdHIpOworICAgICAgaWYgKHRhcmdldCkKKyAgICAgICAgbmV3X3RhcmdldHMgfD0gMSA8PCB0YXJnZXQ7CisgICAgfQorICB9CisKKyAgcmV0dXJuIG5ld190YXJnZXRzOworfQorCisvKioKKyAqIGdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXQ6CisgKiBAdmFsdWU6IGFuIGluaXRpYWxpemVkICNHVmFsdWUgb2YgdHlwZSBHX1RZUEVfU1RSSU5HCisgKiBAdGFyZ2V0OiBhICNHc3RHTFRleHR1cmVUYXJnZXQncworICoKKyAqIFJldHVybnM6IHdoZXRoZXIgdGhlIEB0YXJnZXQgY291bGQgYmUgc2V0IG9uIEB2YWx1ZQorICovCitnYm9vbGVhbgorZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldCAoR1ZhbHVlICogdmFsdWUsIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh2YWx1ZSAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh0YXJnZXQgIT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkUsIEZBTFNFKTsKKworICBpZiAodGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCkgeworICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKHZhbHVlLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSKTsKKyAgfSBlbHNlIGlmICh0YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSkgeworICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKHZhbHVlLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFX1NUUik7CisgIH0gZWxzZSBpZiAodGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICh2YWx1ZSwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FU19TVFIpOworICB9IGVsc2UgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ3VpbnQ2NAorX2dzdF9nbF9sb2cyX2ludDY0IChndWludDY0IHZhbHVlKQoreworICBndWludDY0IHJldCA9IDA7CisKKyAgd2hpbGUgKHZhbHVlID4+PSAxKQorICAgIHJldCsrOworCisgIHJldHVybiByZXQ7Cit9CisKKy8qKgorICogZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2s6CisgKiBAdmFsdWU6IGFuIHVuaW5pdGlhbGl6ZWQgI0dWYWx1ZQorICogQHRhcmdldF9tYXNrOiBhIGJpdHdpc2UgbWFzayBvZiAjR3N0R0xUZXh0dXJlVGFyZ2V0J3MKKyAqCisgKiBBIG1hc2sgaXMgYSBiaXR3aXNlIE9SIG9mICgxIDw8IHRhcmdldCkgd2hlcmUgdGFyZ2V0IGlzIGEgdmFsaWQKKyAqICNHc3RHTFRleHR1cmVUYXJnZXQKKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBAdGFyZ2V0X21hc2sgY291bGQgYmUgc2V0IG9uIEB2YWx1ZQorICovCitnYm9vbGVhbgorZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2sgKEdWYWx1ZSAqIHZhbHVlLAorICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXRfbWFzaykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHZhbHVlICE9IE5VTEwsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHRhcmdldF9tYXNrICE9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FLCBGQUxTRSk7CisKKyAgaWYgKCh0YXJnZXRfbWFzayAmICh0YXJnZXRfbWFzayAtIDEpKSA9PSAwKSB7CisgICAgLyogb25seSBvbmUgdGV4dHVyZSB0YXJnZXQgc2V0ICovCisgICAgZ192YWx1ZV9pbml0ICh2YWx1ZSwgR19UWVBFX1NUUklORyk7CisgICAgcmV0dXJuIGdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXQgKHZhbHVlLAorICAgICAgICBfZ3N0X2dsX2xvZzJfaW50NjQgKHRhcmdldF9tYXNrKSk7CisgIH0gZWxzZSB7CisgICAgR1ZhbHVlIGl0ZW0gPSBHX1ZBTFVFX0lOSVQ7CisgICAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgICBnX3ZhbHVlX2luaXQgKHZhbHVlLCBHU1RfVFlQRV9MSVNUKTsKKyAgICBnX3ZhbHVlX2luaXQgKCZpdGVtLCBHX1RZUEVfU1RSSU5HKTsKKyAgICBpZiAodGFyZ2V0X21hc2sgJiAoMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpKSB7CisgICAgICBnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0ICgmaXRlbSwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKTsKKyAgICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAodmFsdWUsICZpdGVtKTsKKyAgICAgIHJldCA9IFRSVUU7CisgICAgfQorICAgIGlmICh0YXJnZXRfbWFzayAmICgxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpKSB7CisgICAgICBnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0ICgmaXRlbSwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSk7CisgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKHZhbHVlLCAmaXRlbSk7CisgICAgICByZXQgPSBUUlVFOworICAgIH0KKyAgICBpZiAodGFyZ2V0X21hc2sgJiAoMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKSkgeworICAgICAgZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldCAoJml0ZW0sCisgICAgICAgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUyk7CisgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKHZhbHVlLCAmaXRlbSk7CisgICAgICByZXQgPSBUUlVFOworICAgIH0KKworICAgIHJldHVybiByZXQ7CisgIH0KK30KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5oCmluZGV4IGVlNjA2ZTAuLjFjNWFiMTIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuaApAQCAtMTA2LDkgKzEwNiwxNiBAQAogICAgIEdzdFF1ZXJ5ICogcXVlcnksIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24pOwogZ3NpemUgZ3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemUgKEdzdFZpZGVvSW5mbyAqIGluZm8sIEdzdFZpZGVvQWxpZ25tZW50ICogYWxpZ24sCiAgICAgZ3VpbnQgcGxhbmUpOworZ3NpemUgZ3N0X2dsX2dldF9wbGFuZV9zdGFydCAoR3N0VmlkZW9JbmZvICogaW5mbywgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sCisgICAgZ3VpbnQgcGxhbmUpOwogR3N0Q2FwcyAqIGdzdF9nbF9jYXBzX3JlcGxhY2VfYWxsX2NhcHNfZmVhdHVyZXMgKGNvbnN0IEdzdENhcHMgKiBjYXBzLAogICAgIGNvbnN0IGdjaGFyICogZmVhdHVyZV9uYW1lKTsKIAorZ2Jvb2xlYW4gZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2sgKEdWYWx1ZSAqIHZhbHVlLAorICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXRfbWFzayk7CitnYm9vbGVhbiBnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0IChHVmFsdWUgKiB2YWx1ZSwgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCk7CitHc3RHTFRleHR1cmVUYXJnZXQgZ3N0X2dsX3ZhbHVlX2dldF90ZXh0dXJlX3RhcmdldF9tYXNrIChjb25zdCBHVmFsdWUgKiB2YWx1ZSk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZiAvKiBfX0dTVF9HTF9VVElMU19IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5jCmluZGV4IGViZTRlZDMuLjdkNDQ4NjAgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuYwpAQCAtMjEsNyArMjEsNyBAQAogICovCiAKIC8qKgotICogU0VDVElPTjp2aWV3Y29udmVydAorICogU0VDVElPTjpnc3RnbHZpZXdjb252ZXJ0CiAgKgogICogQ29udmVydCBzdGVyZW9zY29waWMvbXVsdGl2aWV3IHZpZGVvIHVzaW5nIGZyYWdtZW50IHNoYWRlcnMuCiAgKi8KQEAgLTMxLDYgKzMxLDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSAiZ3N0Z2x2aWV3Y29udmVydC5oIgorI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb2FmZmluZXRyYW5zZm9ybWF0aW9ubWV0YS5oPgogCiAjZGVmaW5lIFVTSU5HX09QRU5HTChjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wsIDEsIDApKQogI2RlZmluZSBVU0lOR19PUEVOR0wzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTDMsIDMsIDEpKQpAQCAtMzksOCArNDAsMTIgQEAKICNkZWZpbmUgVVNJTkdfR0xFUzMoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDMsIDApKQogCiBzdGF0aWMgR3N0U3RhdGljQ2FwcyBjYXBzX3RlbXBsYXRlID0KLUdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTCi0gICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwgIlJHQkEiKSk7CitHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdygiIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSAiKSwgIgorICAgICJmb3JtYXQgPSAoc3RyaW5nKSBSR0JBLCAiCisgICAgIndpZHRoID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiCisgICAgImhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIiwgIgorICAgICJ0ZXh0dXJlLXRhcmdldCA9IChzdHJpbmcpIHsgMkQsIHJlY3RhbmdsZSwgZXh0ZXJuYWwtb2VzIH0gIik7CiAKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9nbF92aWV3X2NvbnZlcnRfZGVidWcKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfREVGQVVMVCk7CkBAIC0xNDAsNiArMTQ1LDEzIEBACiAgICAgICB9CiB9OwogCitzdGF0aWMgZ2Zsb2F0IGlkZW50aXR5X21hdHJpeFtdID0geworICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAorICAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLAorICAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLAorICAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLAorfTsKKwogLyogKklOREVOVC1PRkYqICovCiBzdGF0aWMgY29uc3QgZ2NoYXIgKmZyYWdtZW50X3NvdXJjZSA9CiAgICIjaWZkZWYgR0xfRVNcbiIKQEAgLTIyNCwxNiArMjM2LDYgQEAKIHN0YXRpYyBjb25zdCBnY2hhciAqZnJhZ19vdXRwdXRfc2VwYXJhdGVkID0KICAgImdsX0ZyYWdEYXRhWzBdID0gbDtcbiIKICAgImdsX0ZyYWdEYXRhWzFdID0gcjtcbiI7Ci0KLXN0YXRpYyBjb25zdCBnY2hhciB0ZXh0X3ZlcnRleF9zaGFkZXJbXSA9Ci0gICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOyAgIFxuIgotICAiYXR0cmlidXRlIHZlYzIgYV90ZXhjb29yZDsgICBcbiIKLSAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkOyAgICAgXG4iCi0gICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgIFxuIgotICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgIiAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgXG4iCi0gICIgICB2X3RleGNvb3JkID0gYV90ZXhjb29yZDsgIFxuIgotICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7CiAvKiAqSU5ERU5ULU9OKiAqLwogCiBzdGF0aWMgY29uc3QgR0xmbG9hdCB2ZXJ0aWNlc1tdID0gewpAQCAtMzQ4LDE0ICszNTAsMTggQEAKICAgICBnc3RfZ2xfdmlld19jb252ZXJ0X3Jlc2V0ICh2aWV3Y29udmVydCk7CiB9CiAKLWdib29sZWFuCi1nc3RfZ2xfdmlld19jb252ZXJ0X3NldF9mb3JtYXQgKEdzdEdMVmlld0NvbnZlcnQgKiB2aWV3Y29udmVydCwKLSAgICBHc3RWaWRlb0luZm8gKiBpbl9pbmZvLCBHc3RWaWRlb0luZm8gKiBvdXRfaW5mbykKK3N0YXRpYyBnYm9vbGVhbgorX3ZpZXdfY29udmVydF9zZXRfZm9ybWF0IChHc3RHTFZpZXdDb252ZXJ0ICogdmlld2NvbnZlcnQsCisgICAgR3N0VmlkZW9JbmZvICogaW5faW5mbywgR3N0R0xUZXh0dXJlVGFyZ2V0IGZyb21fdGFyZ2V0LAorICAgIEdzdFZpZGVvSW5mbyAqIG91dF9pbmZvLCBHc3RHTFRleHR1cmVUYXJnZXQgdG9fdGFyZ2V0KQogeworICBnYm9vbGVhbiBwYXNzdGhyb3VnaDsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9WSUVXX0NPTlZFUlQgKHZpZXdjb252ZXJ0KSwgRkFMU0UpOwogCiAgIGlmIChnc3RfdmlkZW9faW5mb19pc19lcXVhbCAoaW5faW5mbywgJnZpZXdjb252ZXJ0LT5pbl9pbmZvKSAmJgotICAgICAgZ3N0X3ZpZGVvX2luZm9faXNfZXF1YWwgKG91dF9pbmZvLCAmdmlld2NvbnZlcnQtPm91dF9pbmZvKSkKKyAgICAgIGdzdF92aWRlb19pbmZvX2lzX2VxdWFsIChvdXRfaW5mbywgJnZpZXdjb252ZXJ0LT5vdXRfaW5mbykgJiYKKyAgICAgIHZpZXdjb252ZXJ0LT5mcm9tX3RleHR1cmVfdGFyZ2V0ID09IGZyb21fdGFyZ2V0ICYmCisgICAgICB2aWV3Y29udmVydC0+dG9fdGV4dHVyZV90YXJnZXQgPT0gdG9fdGFyZ2V0KQogICAgIHJldHVybiBUUlVFOwogCiAgIGlmIChHU1RfVklERU9fSU5GT19GT1JNQVQgKGluX2luZm8pICE9IEdTVF9WSURFT19GT1JNQVRfUkdCQSB8fApAQCAtMzY1LDEyICszNzEsMjIgQEAKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KIAorICBwYXNzdGhyb3VnaCA9IGdzdF92aWRlb19pbmZvX2lzX2VxdWFsIChpbl9pbmZvLCBvdXRfaW5mbykgJiYKKyAgICAgIGZyb21fdGFyZ2V0ID09IHRvX3RhcmdldDsKKworICBpZiAoIXBhc3N0aHJvdWdoICYmIHRvX3RhcmdldCAhPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQKKyAgICAgICYmIHRvX3RhcmdldCAhPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKQorICAgIHJldHVybiBGQUxTRTsKKwogICAvKiBGSVhNRTogQ29tcGFyZSB3aGF0IGNoYW5nZWQgYW5kIGRlY2lkZSBpZiB3ZSBuZWVkIGEgZnVsbCByZXNldCBvciBub3QgKi8KICAgR1NUX09CSkVDVF9MT0NLICh2aWV3Y29udmVydCk7CiAgIGdzdF9nbF92aWV3X2NvbnZlcnRfcmVzZXQgKHZpZXdjb252ZXJ0KTsKIAogICB2aWV3Y29udmVydC0+aW5faW5mbyA9ICppbl9pbmZvOwogICB2aWV3Y29udmVydC0+b3V0X2luZm8gPSAqb3V0X2luZm87CisgIHZpZXdjb252ZXJ0LT5mcm9tX3RleHR1cmVfdGFyZ2V0ID0gZnJvbV90YXJnZXQ7CisgIHZpZXdjb252ZXJ0LT50b190ZXh0dXJlX3RhcmdldCA9IHRvX3RhcmdldDsKKyAgdmlld2NvbnZlcnQtPmNhcHNfcGFzc3Rocm91Z2ggPSBwYXNzdGhyb3VnaDsKIAogICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZ2aWV3Y29udmVydC0+cHJpdi0+cHJpbWFyeV9pbiwgTlVMTCk7CiAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJnZpZXdjb252ZXJ0LT5wcml2LT5hdXhpbGxpYXJ5X2luLCBOVUxMKTsKQEAgLTM5NSw2ICs0MTEsOCBAQAogewogICBHc3RWaWRlb0luZm8gaW5faW5mbywgb3V0X2luZm87CiAgIEdzdENhcHNGZWF0dXJlcyAqaW5fZmVhdHVyZXMsICpvdXRfZmVhdHVyZXM7CisgIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tX3RhcmdldCA9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDsKKyAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRvX3RhcmdldCA9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDsKIAogICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX1ZJRVdfQ09OVkVSVCAodmlld2NvbnZlcnQpLCBGQUxTRSk7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfQ0FQUyAoaW5fY2FwcyksIEZBTFNFKTsKQEAgLTQxOSw3ICs0MzcsMzAgQEAKICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZvdXRfaW5mbywgb3V0X2NhcHMpKQogICAgIHJldHVybiBGQUxTRTsKIAotICByZXR1cm4gZ3N0X2dsX3ZpZXdfY29udmVydF9zZXRfZm9ybWF0ICh2aWV3Y29udmVydCwgJmluX2luZm8sICZvdXRfaW5mbyk7CisgIHsKKyAgICBHc3RTdHJ1Y3R1cmUgKmluX3MgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChpbl9jYXBzLCAwKTsKKyAgICBHc3RTdHJ1Y3R1cmUgKm91dF9zID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAob3V0X2NhcHMsIDApOworCisgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkX3R5cGVkIChpbl9zLCAidGV4dHVyZS10YXJnZXQiLCBHX1RZUEVfU1RSSU5HKSkgeworICAgICAgZnJvbV90YXJnZXQgPQorICAgICAgICAgIGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZyAoZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChpbl9zLAorICAgICAgICAgICAgICAidGV4dHVyZS10YXJnZXQiKSk7CisgICAgfQorCisgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkX3R5cGVkIChvdXRfcywgInRleHR1cmUtdGFyZ2V0IiwgR19UWVBFX1NUUklORykpIHsKKyAgICAgIHRvX3RhcmdldCA9CisgICAgICAgICAgZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nIChnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKG91dF9zLAorICAgICAgICAgICAgICAidGV4dHVyZS10YXJnZXQiKSk7CisgICAgfQorCisgICAgaWYgKHRvX3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORQorICAgICAgICB8fCBmcm9tX3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORSkKKyAgICAgIC8qIGludmFsaWQgY2FwcyAqLworICAgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgcmV0dXJuIF92aWV3X2NvbnZlcnRfc2V0X2Zvcm1hdCAodmlld2NvbnZlcnQsICZpbl9pbmZvLCBmcm9tX3RhcmdldCwKKyAgICAgICZvdXRfaW5mbywgdG9fdGFyZ2V0KTsKIH0KIAogLyogRnVuY3Rpb24gdGhhdCBjYW4gaGFsdmUgdGhlIHZhbHVlCkBAIC0xMDAzLDEyICsxMDQ0LDExIEBACiAgIHJldHVybiByZXN1bHQ7CiB9CiAKLQogR3N0Q2FwcyAqCiBnc3RfZ2xfdmlld19jb252ZXJ0X3RyYW5zZm9ybV9jYXBzIChHc3RHTFZpZXdDb252ZXJ0ICogdmlld2NvbnZlcnQsCiAgICAgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyAqIGNhcHMsIEdzdENhcHMgKiBmaWx0ZXIpCiB7Ci0gIGdpbnQgaTsKKyAgZ2ludCBpLCBuOwogICBHc3RDYXBzICpiYXNlX2NhcHMgPSBnc3Rfc3RhdGljX2NhcHNfZ2V0ICgmY2Fwc190ZW1wbGF0ZSk7CiAgIEdzdENhcHMgKm91dF9jYXBzLCAqdG1wX2NhcHM7CiAKQEAgLTEwODMsMTAgKzExMjMsMTA0IEBACiBvdXQ6CiAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKIAorICBuID0gZ3N0X2NhcHNfZ2V0X3NpemUgKG91dF9jYXBzKTsKKyAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgIEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKG91dF9jYXBzLCBpKTsKKworICAgIGdzdF9zdHJ1Y3R1cmVfcmVtb3ZlX2ZpZWxkcyAocywgInRleHR1cmUtdGFyZ2V0IiwgTlVMTCk7CisgIH0KKwogICBHU1RfREVCVUdfT0JKRUNUICh2aWV3Y29udmVydCwgIlJldHVybmluZyBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBvdXRfY2Fwcyk7CiAgIHJldHVybiBvdXRfY2FwczsKIH0KIAorc3RhdGljIGd1aW50CitfZ2V0X3RhcmdldF9iaXRtYXNrX2Zyb21fZ192YWx1ZSAoY29uc3QgR1ZhbHVlICogdGFyZ2V0cykKK3sKKyAgZ3VpbnQgbmV3X3RhcmdldHMgPSAwOworCisgIGlmICh0YXJnZXRzID09IE5VTEwpIHsKKyAgICBuZXdfdGFyZ2V0cyA9IDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEOworICB9IGVsc2UgaWYgKEdfVFlQRV9DSEVDS19WQUxVRV9UWVBFICh0YXJnZXRzLCBHX1RZUEVfU1RSSU5HKSkgeworICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQ7CisgICAgY29uc3QgZ2NoYXIgKnN0cjsKKworICAgIHN0ciA9IGdfdmFsdWVfZ2V0X3N0cmluZyAodGFyZ2V0cyk7CisgICAgdGFyZ2V0ID0gZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nIChzdHIpOworCisgICAgaWYgKHRhcmdldCkKKyAgICAgIG5ld190YXJnZXRzIHw9IDEgPDwgdGFyZ2V0OworICB9IGVsc2UgaWYgKEdfVFlQRV9DSEVDS19WQUxVRV9UWVBFICh0YXJnZXRzLCBHU1RfVFlQRV9MSVNUKSkgeworICAgIGdpbnQgaiwgbTsKKworICAgIG0gPSBnc3RfdmFsdWVfbGlzdF9nZXRfc2l6ZSAodGFyZ2V0cyk7CisgICAgZm9yIChqID0gMDsgaiA8IG07IGorKykgeworICAgICAgY29uc3QgR1ZhbHVlICp2YWwgPSBnc3RfdmFsdWVfbGlzdF9nZXRfdmFsdWUgKHRhcmdldHMsIGopOworICAgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldDsKKyAgICAgIGNvbnN0IGdjaGFyICpzdHI7CisKKyAgICAgIHN0ciA9IGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsKTsKKyAgICAgIHRhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZyAoc3RyKTsKKyAgICAgIGlmICh0YXJnZXQpCisgICAgICAgIG5ld190YXJnZXRzIHw9IDEgPDwgdGFyZ2V0OworICAgIH0KKyAgfQorCisgIHJldHVybiBuZXdfdGFyZ2V0czsKK30KKworc3RhdGljIEdzdENhcHMgKgorX2ZpeGF0ZV90ZXh0dXJlX3RhcmdldCAoR3N0R0xWaWV3Q29udmVydCAqIHZpZXdjb252ZXJ0LAorICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogb3RoZXIpCit7CisgIEdWYWx1ZSBpdGVtID0gR19WQUxVRV9JTklUOworICBjb25zdCBHVmFsdWUgKnRhcmdldHMsICpvdGhlcl90YXJnZXRzOworICBndWludCB0YXJnZXRzX21hc2sgPSAwLCBvdGhlcl90YXJnZXRzX21hc2sgPSAwLCByZXN1bHRfbWFzazsKKyAgR3N0U3RydWN0dXJlICpzLCAqc19vdGhlcjsKKworICBvdGhlciA9IGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKG90aGVyKTsKKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworICBzX290aGVyID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAob3RoZXIsIDApOworCisgIG90aGVyX3RhcmdldHMgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoc19vdGhlciwgInRleHR1cmUtdGFyZ2V0Iik7CisgIHRhcmdldHMgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAocywgInRleHR1cmUtdGFyZ2V0Iik7CisKKyAgdGFyZ2V0c19tYXNrID0gX2dldF90YXJnZXRfYml0bWFza19mcm9tX2dfdmFsdWUgKHRhcmdldHMpOworICBvdGhlcl90YXJnZXRzX21hc2sgPSBfZ2V0X3RhcmdldF9iaXRtYXNrX2Zyb21fZ192YWx1ZSAob3RoZXJfdGFyZ2V0cyk7CisKKyAgcmVzdWx0X21hc2sgPSB0YXJnZXRzX21hc2sgJiBvdGhlcl90YXJnZXRzX21hc2s7CisgIGlmIChyZXN1bHRfbWFzayA9PSAwKSB7CisgICAgLyogbm90aGluZyB3ZSBjYW4gZG8gaGVyZSAqLworICAgIHJldHVybiBnc3RfY2Fwc19maXhhdGUgKG90aGVyKTsKKyAgfQorCisgIGlmIChkaXJlY3Rpb24gPT0gR1NUX1BBRF9TSU5LKSB7CisgICAgcmVzdWx0X21hc2sgJj0KKyAgICAgICAgKDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEIHwgMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKTsKKyAgfSBlbHNlIHsKKyAgICAvKiBpZiB0aGUgc3JjIGNhcHMgaGFzIDJEIHN1cHBvcnQgd2UgY2FuICdjb252ZXJ0JyB0byBhbnl0aGluZyAqLworICAgIGlmICh0YXJnZXRzX21hc2sgJiAoMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpKQorICAgICAgcmVzdWx0X21hc2sgPSAtMTsKKyAgICBlbHNlCisgICAgICByZXN1bHRfbWFzayA9IG90aGVyX3RhcmdldHNfbWFzazsKKyAgfQorCisgIGdfdmFsdWVfaW5pdCAoJml0ZW0sIEdfVFlQRV9TVFJJTkcpOworICBpZiAocmVzdWx0X21hc2sgJiAoMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpKSB7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJml0ZW0sIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFIpOworICB9IGVsc2UgaWYgKHJlc3VsdF9tYXNrICYgKDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSkpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmaXRlbSwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFIpOworICB9IGVsc2UgaWYgKHJlc3VsdF9tYXNrICYgKDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmaXRlbSwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FU19TVFIpOworICB9CisKKyAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHMsICJ0ZXh0dXJlLXRhcmdldCIsICZpdGVtKTsKKworICBnX3ZhbHVlX3Vuc2V0ICgmaXRlbSk7CisKKyAgcmV0dXJuIGdzdF9jYXBzX2ZpeGF0ZSAob3RoZXIpOworfQorCiBHc3RDYXBzICoKIGdzdF9nbF92aWV3X2NvbnZlcnRfZml4YXRlX2NhcHMgKEdzdEdMVmlld0NvbnZlcnQgKiB2aWV3Y29udmVydCwKICAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RDYXBzICogY2FwcywgR3N0Q2FwcyAqIG90aGVyY2FwcykKQEAgLTExNTgsNiArMTI5MiwxMCBAQAogICAgIH0KICAgfQogCisgIHRtcCA9IF9maXhhdGVfdGV4dHVyZV90YXJnZXQgKHZpZXdjb252ZXJ0LCBkaXJlY3Rpb24sIGNhcHMsIG90aGVyY2Fwcyk7CisgIGdzdF9jYXBzX3VucmVmIChvdGhlcmNhcHMpOworICBvdGhlcmNhcHMgPSB0bXA7CisKIGRvbmU6CiAgIEdTVF9ERUJVR19PQkpFQ1QgKHZpZXdjb252ZXJ0LCAiZGlyICVzIGZpeGF0ZWQgdG8gJSIgR1NUX1BUUl9GT1JNQVQKICAgICAgICIgYWdhaW5zdCBjYXBzICUiIEdTVF9QVFJfRk9STUFULApAQCAtMTI1NSw2ICsxMzkzLDcgQEAKICAgZ3VpbnQgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0OwogICBHTHVpbnQgZmFrZV90ZXh0dXJlID0gMDsgICAgICAvKiBhIEZCTyBtdXN0IGhhdmEgdGV4dHVyZSB0byBpbml0ICovCiAgIEdMZW51bSBpbnRlcm5hbF9mb3JtYXQ7CisgIGdib29sZWFuIHJldCA9IFRSVUU7CiAKICAgZ2wgPSB2aWV3Y29udmVydC0+Y29udGV4dC0+Z2xfdnRhYmxlOwogICBvdXRfd2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCAoJnZpZXdjb252ZXJ0LT5vdXRfaW5mbyk7CkBAIC0xMzEwLDE0ICsxNDQ5LDExMSBAQAogICBpZiAoIWdzdF9nbF9jb250ZXh0X2NoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1cyAodmlld2NvbnZlcnQtPmNvbnRleHQpKSB7CiAgICAgZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yICh2aWV3Y29udmVydC0+Y29udGV4dCwKICAgICAgICAgIkdMIGZyYW1lYnVmZmVyIHN0YXR1cyBpbmNvbXBsZXRlIik7Ci0gICAgZ2wtPkRlbGV0ZVRleHR1cmVzICgxLCAmZmFrZV90ZXh0dXJlKTsKLSAgICByZXR1cm4gRkFMU0U7CisgICAgcmV0ID0gRkFMU0U7CiAgIH0KIAogICAvKiB1bmJpbmQgdGhlIEZCTyAqLworICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIDApOwogICBnbC0+QmluZEZyYW1lYnVmZmVyIChHTF9GUkFNRUJVRkZFUiwgMCk7CiAgIGdsLT5EZWxldGVUZXh0dXJlcyAoMSwgJmZha2VfdGV4dHVyZSk7Ci0gIHJldHVybiBUUlVFOworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2NoYXIgKgorX21hbmdsZV90ZXh0dXJlX2FjY2VzcyAoY29uc3QgZ2NoYXIgKiBzdHIsIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tLAorICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0bykKK3sKKyAgY29uc3QgZ2NoYXIgKmZyb21fc3RyID0gTlVMTCwgKnRvX3N0ciA9IE5VTEw7CisgIGdjaGFyICpyZXQsICp0bXA7CisgIGdjaGFyICpyZWdleF9maW5kOworICBHUmVnZXggKnJlZ2V4OworCisgIGlmIChmcm9tID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCkKKyAgICBmcm9tX3N0ciA9ICJ0ZXh0dXJlMkQiOworICBpZiAoZnJvbSA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKQorICAgIGZyb21fc3RyID0gInRleHR1cmUyRFJlY3QiOworICBpZiAoZnJvbSA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKQorICAgIGZyb21fc3RyID0gInRleHR1cmUyRCI7CisKKyAgaWYgKHRvID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCkKKyAgICB0b19zdHIgPSAidGV4dHVyZTJEIjsKKyAgaWYgKHRvID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpCisgICAgdG9fc3RyID0gInRleHR1cmUyRFJlY3QiOworICBpZiAodG8gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykKKyAgICB0b19zdHIgPSAidGV4dHVyZTJEIjsKKworICAvKiBmb2xsb3dlZCBieSBhbnkgYW1vdW50IG9mIHdoaXRlc3BhY2UgdGhlbiBhIGJyYWNrZXQgKi8KKyAgcmVnZXhfZmluZCA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzKD89XFxzKlxcKCkiLCBmcm9tX3N0cik7CisgIHJlZ2V4ID0gZ19yZWdleF9uZXcgKHJlZ2V4X2ZpbmQsIDAsIDAsIE5VTEwpOworICB0bXAgPSBnX3JlZ2V4X3JlcGxhY2VfbGl0ZXJhbCAocmVnZXgsIHN0ciwgLTEsIDAsIHRvX3N0ciwgMCwgTlVMTCk7CisgIGdfZnJlZSAocmVnZXhfZmluZCk7CisgIGdfcmVnZXhfdW5yZWYgKHJlZ2V4KTsKKworICBpZiAodG1wKSB7CisgICAgcmV0ID0gdG1wOworICB9IGVsc2UgeworICAgIEdTVF9GSVhNRSAoIkNvdWxkbid0IG1hbmdsZSB0ZXh0dXJlIGFjY2VzcyBzdWNjZXNzZnVsbHkgZnJvbSAlcyB0byAlcyIsCisgICAgICAgIGZyb21fc3RyLCB0b19zdHIpOworICAgIHJldCA9IGdfc3RyZHVwIChzdHIpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdjaGFyICoKK19tYW5nbGVfc2FtcGxlcl90eXBlIChjb25zdCBnY2hhciAqIHN0ciwgR3N0R0xUZXh0dXJlVGFyZ2V0IGZyb20sCisgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRvKQoreworICBjb25zdCBnY2hhciAqZnJvbV9zdHIgPSBOVUxMLCAqdG9fc3RyID0gTlVMTDsKKyAgZ2NoYXIgKnJldCwgKnRtcDsKKyAgZ2NoYXIgKnJlZ2V4X2ZpbmQ7CisgIEdSZWdleCAqcmVnZXg7CisKKyAgaWYgKGZyb20gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKQorICAgIGZyb21fc3RyID0gInNhbXBsZXIyRCI7CisgIGlmIChmcm9tID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpCisgICAgZnJvbV9zdHIgPSAic2FtcGxlcjJEUmVjdCI7CisgIGlmIChmcm9tID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpCisgICAgZnJvbV9zdHIgPSAic2FtcGxlckV4dGVybmFsT0VTIjsKKworICBpZiAodG8gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKQorICAgIHRvX3N0ciA9ICJzYW1wbGVyMkQiOworICBpZiAodG8gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSkKKyAgICB0b19zdHIgPSAic2FtcGxlcjJEUmVjdCI7CisgIGlmICh0byA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKQorICAgIHRvX3N0ciA9ICJzYW1wbGVyRXh0ZXJuYWxPRVMiOworCisgIC8qIGZvbGxvd2VkIGJ5IHNvbWUgd2hpdGVzcGFjZSAgKi8KKyAgcmVnZXhfZmluZCA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzKD89XFxzKSIsIGZyb21fc3RyKTsKKyAgcmVnZXggPSBnX3JlZ2V4X25ldyAocmVnZXhfZmluZCwgMCwgMCwgTlVMTCk7CisgIHRtcCA9IGdfcmVnZXhfcmVwbGFjZV9saXRlcmFsIChyZWdleCwgc3RyLCAtMSwgMCwgdG9fc3RyLCAwLCBOVUxMKTsKKyAgZ19mcmVlIChyZWdleF9maW5kKTsKKyAgZ19yZWdleF91bnJlZiAocmVnZXgpOworCisgIGlmICh0bXApIHsKKyAgICByZXQgPSB0bXA7CisgIH0gZWxzZSB7CisgICAgR1NUX0ZJWE1FICgiQ291bGRuJ3QgbWFuZ2xlIHNhbXBsZXIgdHlwZSBzdWNjZXNzZnVsbHkgZnJvbSAlcyB0byAlcyIsCisgICAgICAgIGZyb21fc3RyLCB0b19zdHIpOworICAgIHJldCA9IGdfc3RyZHVwIChzdHIpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdjaGFyICoKK19tYW5nbGVfZXh0ZW5zaW9ucyAoY29uc3QgZ2NoYXIgKiBzdHIsIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tKQoreworICBjb25zdCBnY2hhciAqZXh0X3N0ciA9IE5VTEw7CisKKyAgaWYgKGZyb20gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykKKyAgICBleHRfc3RyID0gIiNleHRlbnNpb24gR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCA6IHJlcXVpcmVcbiI7CisKKyAgaWYgKGV4dF9zdHIpIHsKKyAgICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmICgiJXMlcyIsIGV4dF9zdHIsIHN0cik7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIGdfc3RyZHVwIChzdHIpOworICB9CiB9CiAKIC8qIGZyZWUgYWZ0ZXIgdXNlICovCkBAIC0xMzI3LDYgKzE1NjMsOCBAQAogewogICBjb25zdCBnY2hhciAqaW5wdXRfc3RyLCAqb3V0cHV0X3N0cjsKICAgZ2Jvb2xlYW4gbW9ub19pbnB1dCA9IEZBTFNFOworICBnY2hhciAqdG1wLCAqdG1wMjsKKwogICBzd2l0Y2ggKGluX21vZGUpIHsKICAgICBjYXNlIEdTVF9WSURFT19NVUxUSVZJRVdfTU9ERV9OT05FOgogICAgIGNhc2UgR1NUX1ZJREVPX01VTFRJVklFV19NT0RFX01PTk86CkBAIC0xMzc3LDcgKzE2MTUsMTcgQEAKICAgICAgIGJyZWFrOwogICB9CiAKLSAgcmV0dXJuIGdfc3RyZHVwX3ByaW50ZiAoZnJhZ21lbnRfc291cmNlLCBpbnB1dF9zdHIsIG91dHB1dF9zdHIpOworICB0bXAgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdtZW50X3NvdXJjZSwgaW5wdXRfc3RyLCBvdXRwdXRfc3RyKTsKKyAgdG1wMiA9IF9tYW5nbGVfc2FtcGxlcl90eXBlICh0bXAsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCwKKyAgICAgIHZpZXdjb252ZXJ0LT5mcm9tX3RleHR1cmVfdGFyZ2V0KTsKKyAgZ19mcmVlICh0bXApOworICB0bXAgPSBfbWFuZ2xlX3RleHR1cmVfYWNjZXNzICh0bXAyLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQsCisgICAgICB2aWV3Y29udmVydC0+ZnJvbV90ZXh0dXJlX3RhcmdldCk7CisgIGdfZnJlZSAodG1wMik7CisgIHRtcDIgPSBfbWFuZ2xlX2V4dGVuc2lvbnMgKHRtcCwgdmlld2NvbnZlcnQtPmZyb21fdGV4dHVyZV90YXJnZXQpOworICBnX2ZyZWUgKHRtcCk7CisKKyAgcmV0dXJuIHRtcDI7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDQ5LDYgKzE2OTcsMTcgQEAKICAgICAgICAgIkNhbm5vdCBwZXJmb3JtIG11bHRpdmlldyBjb252ZXJzaW9uIHdpdGhvdXQgT3BlbkdMIHNoYWRlcnMiKTsKICAgICBnb3RvIGVycm9yOwogICB9CisKKyAgaWYgKG91dF9tb2RlID09IEdTVF9WSURFT19NVUxUSVZJRVdfTU9ERV9TRVBBUkFURUQKKyAgICAgIHx8IG91dF9tb2RlID09IEdTVF9WSURFT19NVUxUSVZJRVdfTU9ERV9GUkFNRV9CWV9GUkFNRSkgeworICAgIGlmICghZ2wtPkRyYXdCdWZmZXJzKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUICh2aWV3Y29udmVydCwKKyAgICAgICAgICAiU2VwYXJhdGUgdGV4dHVyZSBvdXRwdXQgbW9kZSByZXF1ZXN0ZWQgaG93ZXZlciB0aGUgY3VycmVudCAiCisgICAgICAgICAgIk9wZW5HTCBBUEkgZG9lcyBub3Qgc3VwcG9ydCBkcmF3aW5nIHRvIG11bHRpcGxlIGJ1ZmZlcnMiKTsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICB9CisKICAgaWYgKChpbl9mbGFncyAmIEdTVF9WSURFT19NVUxUSVZJRVdfRkxBR1NfUklHSFRfVklFV19GSVJTVCkgPT0KICAgICAgIChvdXRfZmxhZ3MgJiBHU1RfVklERU9fTVVMVElWSUVXX0ZMQUdTX1JJR0hUX1ZJRVdfRklSU1QpKSB7CiAgICAgbF9pbmRleCA9IDA7CkBAIC0xNTE2LDkgKzE3NzUsOSBAQAogICAgICAgdGV4X3NjYWxlWzFdWzBdLCB0ZXhfc2NhbGVbMV1bMV0sCiAgICAgICBvZmZzZXRzWzBdWzBdLCBvZmZzZXRzWzBdWzFdLCBvZmZzZXRzWzFdWzBdLCBvZmZzZXRzWzFdWzFdKTsKICAgZnJhZ21lbnRfc291cmNlX3N0ciA9IF9nZXRfc2hhZGVyX3N0cmluZyAodmlld2NvbnZlcnQsIGluX21vZGUsIG91dF9tb2RlKTsKLS8vIGdfcHJpbnQgKCIlc1xuIiwgZnJhZ21lbnRfc291cmNlX3N0cik7Ci0gIHJlcyA9IGdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXIgKHZpZXdjb252ZXJ0LT5jb250ZXh0LCB0ZXh0X3ZlcnRleF9zaGFkZXIsCi0gICAgICBmcmFnbWVudF9zb3VyY2Vfc3RyLCAmdmlld2NvbnZlcnQtPnNoYWRlcik7CisgIHJlcyA9IGdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXIgKHZpZXdjb252ZXJ0LT5jb250ZXh0LAorICAgICAgZ3N0X2dsX3NoYWRlcl9zdHJpbmdfdmVydGV4X21hdDRfdGV4dHVyZV90cmFuc2Zvcm0sIGZyYWdtZW50X3NvdXJjZV9zdHIsCisgICAgICAmdmlld2NvbnZlcnQtPnNoYWRlcik7CiAgIGdfZnJlZSAoZnJhZ21lbnRfc291cmNlX3N0cik7CiAgIGlmICghcmVzKQogICAgIGdvdG8gZXJyb3I7CkBAIC0xNTM2LDYgKzE3OTUsOCBAQAogICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmdmlld2NvbnZlcnQtPm91dF9pbmZvKSk7CiAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzNmdiAodmlld2NvbnZlcnQtPnNoYWRlciwgImRvd25taXgiLAogICAgICAgMiwgRkFMU0UsICZkb3dubWl4X21hdHJpY2VzW3ZpZXdjb252ZXJ0LT5kb3dubWl4X21vZGVdWzBdWzBdKTsKKyAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNGZ2ICh2aWV3Y29udmVydC0+c2hhZGVyLCAidV90cmFuc2Zvcm1hdGlvbiIsCisgICAgICAxLCBGQUxTRSwgaWRlbnRpdHlfbWF0cml4KTsKICAgaWYgKGluX21vZGUgPT0gR1NUX1ZJREVPX01VTFRJVklFV19NT0RFX1NFUEFSQVRFRCB8fAogICAgICAgaW5fbW9kZSA9PSBHU1RfVklERU9fTVVMVElWSUVXX01PREVfRlJBTUVfQllfRlJBTUUpIHsKICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpICh2aWV3Y29udmVydC0+c2hhZGVyLCAidGV4X2wiLCBsX2luZGV4KTsKQEAgLTE1NzIsNyArMTgzMyw2IEBACiAgICAgZ2wtPkJpbmRCdWZmZXIgKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCAwKTsKICAgfQogCi0gIGdsLT5CaW5kVGV4dHVyZSAoR0xfVEVYVFVSRV8yRCwgMCk7CiAgIHZpZXdjb252ZXJ0LT5pbml0dGVkID0gVFJVRTsKICAgcmV0dXJuIFRSVUU7CiBlcnJvcjoKQEAgLTE1OTQsNiArMTg1NCw5IEBACiAgIH07CiAgIEdzdFZpZGVvTXVsdGl2aWV3TW9kZSBpbl9tb2RlID0gcHJpdi0+aW5wdXRfbW9kZTsKICAgR3N0VmlkZW9NdWx0aXZpZXdNb2RlIG91dF9tb2RlID0gcHJpdi0+b3V0cHV0X21vZGU7CisgIGd1aW50IGZyb21fZ2xfdGFyZ2V0ID0KKyAgICAgIGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAodmlld2NvbnZlcnQtPmZyb21fdGV4dHVyZV90YXJnZXQpOworICBHc3RWaWRlb0FmZmluZVRyYW5zZm9ybWF0aW9uTWV0YSAqYWZfbWV0YTsKIAogICBnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKICAgb3V0X3dpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEggKCZ2aWV3Y29udmVydC0+b3V0X2luZm8pOwpAQCAtMTYwNSwxMiArMTg2OCwyMiBAQAogICB9IGVsc2UgewogICAgIG91dF92aWV3cyA9IDE7CiAgIH0KKworICAvKiBGSVhNRTogdGhlIGF1eGlsbGFyeSBidWZmZXIgY291bGQgaGF2ZSBhIGRpZmZlcmVudCB0cmFuc2Zvcm0gbWF0cml4ICovCisgIGFmX21ldGEgPSBnc3RfYnVmZmVyX2dldF92aWRlb19hZmZpbmVfdHJhbnNmb3JtYXRpb25fbWV0YSAocHJpdi0+cHJpbWFyeV9pbik7CisgIGlmIChhZl9tZXRhKQorICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdiAodmlld2NvbnZlcnQtPnNoYWRlciwKKyAgICAgICAgInVfdHJhbnNmb3JtYXRpb24iLCAxLCBGQUxTRSwgYWZfbWV0YS0+bWF0cml4KTsKKwogICAvKiBhdHRhY2ggdGhlIHRleHR1cmUgdG8gdGhlIEZCTyB0byByZW5kZXJlciB0byAqLwogICBmb3IgKGkgPSAwOyBpIDwgb3V0X3ZpZXdzOyBpKyspIHsKKyAgICBndWludCBnbF90YXJnZXQgPQorICAgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKHZpZXdjb252ZXJ0LT50b190ZXh0dXJlX3RhcmdldCk7CisKICAgICAvKiBuZWVkZWQ/ICovCi0gICAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCBwcml2LT5vdXRfdGV4W2ldLT50ZXhfaWQpOworICAgIGdsLT5CaW5kVGV4dHVyZSAoZ2xfdGFyZ2V0LCBwcml2LT5vdXRfdGV4W2ldLT50ZXhfaWQpOwogICAgIGdsLT5GcmFtZWJ1ZmZlclRleHR1cmUyRCAoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgaSwKLSAgICAgICAgR0xfVEVYVFVSRV8yRCwgcHJpdi0+b3V0X3RleFtpXS0+dGV4X2lkLCAwKTsKKyAgICAgICAgZ2xfdGFyZ2V0LCBwcml2LT5vdXRfdGV4W2ldLT50ZXhfaWQsIDApOwogICB9CiAKICAgaWYgKGdsLT5EcmF3QnVmZmVycykKQEAgLTE2MzIsMTEgKzE5MDUsMTEgQEAKICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAgICAgZ2wtPkFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUxKTsKLSAgICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIHByaXYtPmluX3RleFsxXS0+dGV4X2lkKTsKKyAgICBnbC0+QmluZFRleHR1cmUgKGZyb21fZ2xfdGFyZ2V0LCBwcml2LT5pbl90ZXhbMV0tPnRleF9pZCk7CiAgIH0KIAogICBnbC0+QWN0aXZlVGV4dHVyZSAoR0xfVEVYVFVSRTApOwotICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIHByaXYtPmluX3RleFswXS0+dGV4X2lkKTsKKyAgZ2wtPkJpbmRUZXh0dXJlIChmcm9tX2dsX3RhcmdldCwgcHJpdi0+aW5fdGV4WzBdLT50ZXhfaWQpOwogICBnbC0+RHJhd0VsZW1lbnRzIChHTF9UUklBTkdMRVMsIDYsIEdMX1VOU0lHTkVEX1NIT1JULCBOVUxMKTsKICAgaWYgKGdsLT5CaW5kVmVydGV4QXJyYXkpCiAgICAgZ2wtPkJpbmRWZXJ0ZXhBcnJheSAoMCk7CkBAIC0xNjU2LDExICsxOTI5LDI3IEBACiBzdGF0aWMgZ2Jvb2xlYW4KIF9nZW5fYnVmZmVyIChHc3RHTFZpZXdDb252ZXJ0ICogdmlld2NvbnZlcnQsIEdzdEJ1ZmZlciAqKiB0YXJnZXQpCiB7CisgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7CisgIEdzdEdMTWVtb3J5QWxsb2NhdG9yICptZW1fYWxsb2NhdG9yOworICBHc3RBbGxvY2F0b3IgKmFsbG9jYXRvcjsKKwogICAqdGFyZ2V0ID0gZ3N0X2J1ZmZlcl9uZXcgKCk7Ci0gIGlmICghZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIgKHZpZXdjb252ZXJ0LT5jb250ZXh0LCBOVUxMLAotICAgICAgICAgICZ2aWV3Y29udmVydC0+b3V0X2luZm8sIE5VTEwsICp0YXJnZXQpKSB7CisKKyAgYWxsb2NhdG9yID0KKyAgICAgIEdTVF9BTExPQ0FUT1IgKGdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0CisgICAgICAodmlld2NvbnZlcnQtPmNvbnRleHQpKTsKKyAgbWVtX2FsbG9jYXRvciA9IEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SIChhbGxvY2F0b3IpOworICBwYXJhbXMgPSBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3ICh2aWV3Y29udmVydC0+Y29udGV4dCwgTlVMTCwKKyAgICAgICZ2aWV3Y29udmVydC0+b3V0X2luZm8sIDAsIE5VTEwsIHZpZXdjb252ZXJ0LT50b190ZXh0dXJlX3RhcmdldCk7CisKKyAgaWYgKCFnc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlciAobWVtX2FsbG9jYXRvciwgKnRhcmdldCwgcGFyYW1zKSkgeworICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgICAgZ3N0X29iamVjdF91bnJlZiAoYWxsb2NhdG9yKTsKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KKyAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoYWxsb2NhdG9yKTsKKwogICBnc3RfYnVmZmVyX2FkZF92aWRlb19tZXRhX2Z1bGwgKCp0YXJnZXQsIDAsCiAgICAgICBHU1RfVklERU9fSU5GT19GT1JNQVQgKCZ2aWV3Y29udmVydC0+b3V0X2luZm8pLAogICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZ2aWV3Y29udmVydC0+b3V0X2luZm8pLApAQCAtMTc3OSwxMCArMjA2OCwyOCBAQAogICAgICAgLyogTHVtaW5hbmNlIGZvcm1hdHMgYXJlIG5vdCBjb2xvciByZW5kZXJhYmxlICovCiAgICAgICAvKiByZW5kZXJlcmluZyB0byBhIGZyYW1lYnVmZmVyIG9ubHkgcmVuZGVycyB0aGUgaW50ZXJzZWN0aW9uIG9mIGFsbAogICAgICAgICogdGhlIGF0dGFjaG1lbnRzIGkuZS4gdGhlIHNtYWxsZXN0IGF0dGFjaG1lbnQgc2l6ZSAqLwotICAgICAgaWYgKCFwcml2LT5vdXRfdGV4W2pdKQorICAgICAgaWYgKCFwcml2LT5vdXRfdGV4W2pdKSB7CisgICAgICAgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7CisgICAgICAgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqYmFzZV9tZW1fYWxsb2NhdG9yOworICAgICAgICBHc3RBbGxvY2F0b3IgKmFsbG9jYXRvcjsKKyAgICAgICAgR3N0VmlkZW9JbmZvIHRlbXBfaW5mbzsKKworICAgICAgICBnc3RfdmlkZW9faW5mb19zZXRfZm9ybWF0ICgmdGVtcF9pbmZvLCBHU1RfVklERU9fRk9STUFUX1JHQkEsIG91dF93aWR0aCwKKyAgICAgICAgICAgIG91dF9oZWlnaHQpOworCisgICAgICAgIGFsbG9jYXRvciA9CisgICAgICAgICAgICBHU1RfQUxMT0NBVE9SIChnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdCAoY29udGV4dCkpOworICAgICAgICBiYXNlX21lbV9hbGxvY2F0b3IgPSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChhbGxvY2F0b3IpOworICAgICAgICBwYXJhbXMgPSBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3IChjb250ZXh0LCBOVUxMLCAmdGVtcF9pbmZvLAorICAgICAgICAgICAgMCwgTlVMTCwgdmlld2NvbnZlcnQtPnRvX3RleHR1cmVfdGFyZ2V0KTsKKwogICAgICAgICBwcml2LT5vdXRfdGV4W2pdID0KLSAgICAgICAgICAgIChHc3RHTE1lbW9yeSAqKSBnc3RfZ2xfbWVtb3J5X2FsbG9jIChjb250ZXh0LCBOVUxMLCAmdGVtcF9pbmZvLCAwLAotICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICAoR3N0R0xNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChiYXNlX21lbV9hbGxvY2F0b3IsCisgICAgICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisKKyAgICAgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAoYWxsb2NhdG9yKTsKKyAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgcHJpdi0+b3V0X3RleFtqXSA9IG91dF90ZXg7CiAgICAgfQpAQCAtMTgzMyw5ICsyMTQwLDggQEAKICAgICAgICAgcmVzID0gRkFMU0U7CiAgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQotICAgICAgZ3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZSAocHJpdi0+b3V0X3RleFtqXSwKLSAgICAgICAgICBvdXRfdGV4LT50ZXhfaWQsIG91dF90ZXgtPnRleF90eXBlLCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgIEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSAoJm91dF90ZXgtPmluZm8sIG91dF90ZXgtPnBsYW5lKSwgRkFMU0UpOworICAgICAgZ3N0X2dsX21lbW9yeV9jb3B5X2ludG8gKHByaXYtPm91dF90ZXhbal0sIG91dF90ZXgtPnRleF9pZCwKKyAgICAgICAgICB2aWV3Y29udmVydC0+dG9fdGV4dHVyZV90YXJnZXQsIG91dF90ZXgtPnRleF90eXBlLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgb3V0X3RleCwgJnRvX2luZm8pOwogICAgIH0KIApAQCAtMTg5OSw3ICsyMjA1LDcgQEAKICAgR3N0VmlkZW9NdWx0aXZpZXdGbGFncyBpbl9mbGFncywgb3V0X2ZsYWdzOwogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfVklFV19DT05WRVJUICh2aWV3Y29udmVydCksIEdTVF9GTE9XX0VSUk9SKTsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUICh2aWV3Y29udmVydC0+Y29udGV4dCksCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAodmlld2NvbnZlcnQtPmNvbnRleHQpLAogICAgICAgR1NUX0ZMT1dfRVJST1IpOwogCiAgIEdTVF9PQkpFQ1RfTE9DSyAodmlld2NvbnZlcnQpOwpAQCAtMTk1MCw3ICsyMjU2LDggQEAKICAgaWYgKHByaXYtPmlucHV0X21vZGUgPT0gcHJpdi0+b3V0cHV0X21vZGUgJiYKICAgICAgIHByaXYtPmlucHV0X2ZsYWdzID09IHByaXYtPm91dHB1dF9mbGFncyAmJgogICAgICAgdmlld2NvbnZlcnQtPmluX2luZm8ud2lkdGggPT0gdmlld2NvbnZlcnQtPm91dF9pbmZvLndpZHRoICYmCi0gICAgICB2aWV3Y29udmVydC0+aW5faW5mby5oZWlnaHQgPT0gdmlld2NvbnZlcnQtPm91dF9pbmZvLmhlaWdodCkgeworICAgICAgdmlld2NvbnZlcnQtPmluX2luZm8uaGVpZ2h0ID09IHZpZXdjb252ZXJ0LT5vdXRfaW5mby5oZWlnaHQgJiYKKyAgICAgIHZpZXdjb252ZXJ0LT5mcm9tX3RleHR1cmVfdGFyZ2V0ID09IHZpZXdjb252ZXJ0LT50b190ZXh0dXJlX3RhcmdldCkgewogICAgIC8qIHBhc3N0aHJvdWdoIC0ganVzdCBwYXNzIGlucHV0IGJ1ZmZlcnMgKi8KICAgICBvdXRidWYgPSBnc3RfYnVmZmVyX3JlZiAocHJpdi0+cHJpbWFyeV9pbik7CiAgICAgaWYgKGluX21vZGUgPT0gR1NUX1ZJREVPX01VTFRJVklFV19NT0RFX0ZSQU1FX0JZX0ZSQU1FKQpAQCAtMTk1OCw2ICsyMjY1LDEyIEBACiAgICAgZ290byBkb25lX2NsZWFyX2lucHV0OwogICB9CiAKKyAgLyogV2UgY2FuJ3Qgb3V0cHV0IHRvIE9FUyB0ZXh0dXJlcywgdGhleSdyZSBvbmx5IHN1cHBvcnRlZCBmb3IgcGFzc3Rocm91Z2ggKi8KKyAgaWYgKHZpZXdjb252ZXJ0LT50b190ZXh0dXJlX3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKSB7CisgICAgcmV0ID0gR1NUX0ZMT1dfRVJST1I7CisgICAgZ290byBkb25lX2NsZWFyX2lucHV0OworICB9CisKICAgLyogR2VuZXJhdGUgbmV3IG91dHB1dCBidWZmZXIocykgKi8KICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAodmlld2NvbnZlcnQtPmNvbnRleHQsCiAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2RvX3ZpZXdfY29udmVydCwgdmlld2NvbnZlcnQpOwpAQCAtMTk3NCwxMSArMjI4NywxMyBAQAogICB9CiAKICAgb3V0YnVmID0gcHJpdi0+cHJpbWFyeV9vdXQ7Ci0gIGdzdF9idWZmZXJfY29weV9pbnRvIChvdXRidWYsIHByaXYtPnByaW1hcnlfaW4sCi0gICAgICBHU1RfQlVGRkVSX0NPUFlfRkxBR1MgfCBHU1RfQlVGRkVSX0NPUFlfVElNRVNUQU1QUywgMCwgLTEpOwotICBHU1RfQlVGRkVSX0ZMQUdfU0VUIChvdXRidWYsCi0gICAgICBHU1RfVklERU9fQlVGRkVSX0ZMQUdfRklSU1RfSU5fQlVORExFIHwKLSAgICAgIEdTVF9WSURFT19CVUZGRVJfRkxBR19NVUxUSVBMRV9WSUVXKTsKKyAgaWYgKG91dGJ1ZikgeworICAgIGdzdF9idWZmZXJfY29weV9pbnRvIChvdXRidWYsIHByaXYtPnByaW1hcnlfaW4sCisgICAgICAgIEdTVF9CVUZGRVJfQ09QWV9GTEFHUyB8IEdTVF9CVUZGRVJfQ09QWV9USU1FU1RBTVBTLCAwLCAtMSk7CisgICAgR1NUX0JVRkZFUl9GTEFHX1NFVCAob3V0YnVmLAorICAgICAgICBHU1RfVklERU9fQlVGRkVSX0ZMQUdfRklSU1RfSU5fQlVORExFIHwKKyAgICAgICAgR1NUX1ZJREVPX0JVRkZFUl9GTEFHX01VTFRJUExFX1ZJRVcpOworICB9CiAKICAgaWYgKHByaXYtPmF1eGlsbGlhcnlfb3V0KSB7CiAgICAgZ3N0X2J1ZmZlcl9jb3B5X2ludG8gKHByaXYtPmF1eGlsbGlhcnlfb3V0LApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmgKaW5kZXggMjZhNmRmOS4uOGNmYTFiMiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5oCkBAIC02MSw2ICs2MSwxMCBAQAogICBHc3RWaWRlb0luZm8gaW5faW5mbzsKICAgR3N0VmlkZW9JbmZvIG91dF9pbmZvOwogCisgIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tX3RleHR1cmVfdGFyZ2V0OworICBHc3RHTFRleHR1cmVUYXJnZXQgdG9fdGV4dHVyZV90YXJnZXQ7CisgIGdib29sZWFuIGNhcHNfcGFzc3Rocm91Z2g7CisKICAgZ2Jvb2xlYW4gaW5pdHRlZDsKICAgZ2Jvb2xlYW4gcmVjb25maWd1cmU7CiAKQEAgLTc4LDggKzgyLDYgQEAKIEdUeXBlIGdzdF9nbF92aWV3X2NvbnZlcnRfZ2V0X3R5cGUgKHZvaWQpOwogR3N0R0xWaWV3Q29udmVydCAqIGdzdF9nbF92aWV3X2NvbnZlcnRfbmV3ICh2b2lkKTsKIAotZ2Jvb2xlYW4gZ3N0X2dsX3ZpZXdfY29udmVydF9zZXRfZm9ybWF0IChHc3RHTFZpZXdDb252ZXJ0ICp2aWV3Y29udmVydCwgR3N0VmlkZW9JbmZvICppbl9pbmZvLAotICAgIEdzdFZpZGVvSW5mbyAqb3V0X2luZm8pOwogZ2Jvb2xlYW4gIGdzdF9nbF92aWV3X2NvbnZlcnRfc2V0X2NhcHMgKEdzdEdMVmlld0NvbnZlcnQgKiB2aWV3Y29udmVydCwgR3N0Q2FwcyAqIGluX2NhcHMsIEdzdENhcHMgKiBvdXRfY2Fwcyk7CiBHc3RDYXBzICogZ3N0X2dsX3ZpZXdfY29udmVydF90cmFuc2Zvcm1fY2FwcyAoR3N0R0xWaWV3Q29udmVydCAqIHZpZXdjb252ZXJ0LAogICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmMKaW5kZXggNGYyN2NkMC4uNjk1ZjRjNCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmMKQEAgLTg1LDIxICs4NSwyMyBAQAogc3RhdGljIHZvaWQgZ3N0X2dsX3dpbmRvd19kZWZhdWx0X3NlbmRfbWVzc2FnZV9hc3luYyAoR3N0R0xXaW5kb3cgKiB3aW5kb3csCiAgICAgR3N0R0xXaW5kb3dDQiBjYWxsYmFjaywgZ3BvaW50ZXIgZGF0YSwgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveSk7CiBzdGF0aWMgZ3BvaW50ZXIgZ3N0X2dsX3dpbmRvd19uYXZpZ2F0aW9uX3RocmVhZCAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpOwotdm9pZCBnc3RfZ2xfd2luZG93X3J1bl9uYXZpZ2F0aW9uIChHc3RHTFdpbmRvdyAqIHdpbmRvdyk7Ci12b2lkIGdzdF9nbF93aW5kb3dfb3Blbl9uYXZpZ2F0aW9uIChHc3RHTFdpbmRvdyAqIHdpbmRvdyk7Ci12b2lkIGdzdF9nbF93aW5kb3dfY2xvc2VfbmF2aWdhdGlvbiAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpOwotdm9pZCBnc3RfZ2xfd2luZG93X3F1aXRfbmF2aWdhdGlvbiAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpOwogCiBzdHJ1Y3QgX0dzdEdMV2luZG93UHJpdmF0ZQogewogICBHTWFpbkNvbnRleHQgKm1haW5fY29udGV4dDsKICAgR01haW5Mb29wICpsb29wOwotICBHVGhyZWFkICpuYXZpZ2F0aW9uX3RocmVhZDsKIAogICBndWludCBzdXJmYWNlX3dpZHRoOwogICBndWludCBzdXJmYWNlX2hlaWdodDsKIAogICBnYm9vbGVhbiBhbGl2ZTsKKworICBHVGhyZWFkICpuYXZpZ2F0aW9uX3RocmVhZDsKKyAgR01haW5Db250ZXh0ICpuYXZpZ2F0aW9uX2NvbnRleHQ7CisgIEdNYWluTG9vcCAqbmF2aWdhdGlvbl9sb29wOworICBHTXV0ZXggbmF2X2xvY2s7CisgIEdDb25kIG5hdl9jcmVhdGVfY29uZDsKKyAgZ2Jvb2xlYW4gbmF2X2FsaXZlOwogfTsKIAogc3RhdGljIHZvaWQgZ3N0X2dsX3dpbmRvd19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CkBAIC0xODcsMTcgKzE4OSwxNyBAQAogICB3aW5kb3ctPnByaXYgPSBwcml2OwogCiAgIGdfbXV0ZXhfaW5pdCAoJndpbmRvdy0+bG9jayk7Ci0gIGdfbXV0ZXhfaW5pdCAoJndpbmRvdy0+bmF2X2xvY2spOwotICBnX2NvbmRfaW5pdCAoJndpbmRvdy0+bmF2X2NyZWF0ZV9jb25kKTsKLSAgZ19jb25kX2luaXQgKCZ3aW5kb3ctPm5hdl9kZXN0cm95X2NvbmQpOwotICB3aW5kb3ctPm5hdl9jcmVhdGVkID0gRkFMU0U7Ci0gIHdpbmRvdy0+bmF2X2FsaXZlID0gRkFMU0U7CiAgIHdpbmRvdy0+aXNfZHJhd2luZyA9IEZBTFNFOwogCisgIGdfbXV0ZXhfaW5pdCAoJndpbmRvdy0+cHJpdi0+bmF2X2xvY2spOworICBnX2NvbmRfaW5pdCAoJndpbmRvdy0+cHJpdi0+bmF2X2NyZWF0ZV9jb25kKTsKKyAgd2luZG93LT5wcml2LT5uYXZfYWxpdmUgPSBGQUxTRTsKKwogICBnX3dlYWtfcmVmX2luaXQgKCZ3aW5kb3ctPmNvbnRleHRfcmVmLCBOVUxMKTsKIAogICBwcml2LT5tYWluX2NvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcgKCk7CiAgIHByaXYtPmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKHByaXYtPm1haW5fY29udGV4dCwgRkFMU0UpOworICBwcml2LT5uYXZpZ2F0aW9uX2xvb3AgPSBOVUxMOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjA5LDcgKzIxMSw2IEBACiAgIGtsYXNzLT5jbG9zZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2RlZmF1bHRfY2xvc2UpOwogICBrbGFzcy0+cnVuID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfZGVmYXVsdF9ydW4pOwogICBrbGFzcy0+cXVpdCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2RlZmF1bHRfcXVpdCk7Ci0gIGtsYXNzLT5kcmF3X3VubG9ja2VkID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfZGVmYXVsdF9kcmF3KTsKICAga2xhc3MtPmRyYXcgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd19kZWZhdWx0X2RyYXcpOwogICBrbGFzcy0+c2VuZF9tZXNzYWdlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfZGVmYXVsdF9zZW5kX21lc3NhZ2UpOwogICBrbGFzcy0+c2VuZF9tZXNzYWdlX2FzeW5jID0KQEAgLTMxMSwxNiArMzEyLDEzIEBACiAKICAgd2luZG93LT5kaXNwbGF5ID0gZ3N0X29iamVjdF9yZWYgKGRpc3BsYXkpOwogCi0gIGdfbXV0ZXhfbG9jayAoJndpbmRvdy0+bmF2X2xvY2spOworICBnX211dGV4X2xvY2sgKCZ3aW5kb3ctPnByaXYtPm5hdl9sb2NrKTsKKyAgd2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX3RocmVhZCA9IGdfdGhyZWFkX25ldyAoImdzdGdsbmF2aWdhdGlvbiIsCisgICAgICAoR1RocmVhZEZ1bmMpIGdzdF9nbF93aW5kb3dfbmF2aWdhdGlvbl90aHJlYWQsIHdpbmRvdyk7CiAKLSAgaWYgKCF3aW5kb3ctPm5hdl9jcmVhdGVkKSB7Ci0gICAgd2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX3RocmVhZCA9IGdfdGhyZWFkX25ldyAoImdzdGdsbmF2aWdhdGlvbiIsCi0gICAgICAgIChHVGhyZWFkRnVuYykgZ3N0X2dsX3dpbmRvd19uYXZpZ2F0aW9uX3RocmVhZCwgd2luZG93KTsKLQotICAgIGdfY29uZF93YWl0ICgmd2luZG93LT5uYXZfY3JlYXRlX2NvbmQsICZ3aW5kb3ctPm5hdl9sb2NrKTsKLSAgICB3aW5kb3ctPm5hdl9jcmVhdGVkID0gVFJVRTsKLSAgfQotICBnX211dGV4X3VubG9jayAoJndpbmRvdy0+bmF2X2xvY2spOworICB3aGlsZSAoIXdpbmRvdy0+cHJpdi0+bmF2X2FsaXZlKQorICAgIGdfY29uZF93YWl0ICgmd2luZG93LT5wcml2LT5uYXZfY3JlYXRlX2NvbmQsICZ3aW5kb3ctPnByaXYtPm5hdl9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZ3aW5kb3ctPnByaXYtPm5hdl9sb2NrKTsKIAogICByZXR1cm4gd2luZG93OwogfQpAQCAtMzMxLDE0ICszMjksMTIgQEAKICAgR3N0R0xXaW5kb3cgKndpbmRvdyA9IEdTVF9HTF9XSU5ET1cgKG9iamVjdCk7CiAgIEdzdEdMV2luZG93UHJpdmF0ZSAqcHJpdiA9IHdpbmRvdy0+cHJpdjsKIAotICBpZiAod2luZG93LT5uYXZfYWxpdmUpIHsKLSAgICBnX211dGV4X2xvY2sgKCZ3aW5kb3ctPm5hdl9sb2NrKTsKLSAgICBHU1RfSU5GTyAoInNlbmQgcXVpdCBuYXZpZ2F0aW9uIGxvb3AiKTsKLSAgICBnc3RfZ2xfd2luZG93X3F1aXRfbmF2aWdhdGlvbiAod2luZG93KTsKLSAgICB3aGlsZSAod2luZG93LT5uYXZfYWxpdmUpIHsKLSAgICAgIGdfY29uZF93YWl0ICgmd2luZG93LT5uYXZfZGVzdHJveV9jb25kLCAmd2luZG93LT5uYXZfbG9jayk7Ci0gICAgfQotICAgIGdfbXV0ZXhfdW5sb2NrICgmd2luZG93LT5uYXZfbG9jayk7CisgIEdTVF9JTkZPICgicXVpdCBuYXZpZ2F0aW9uIGxvb3AiKTsKKyAgaWYgKHdpbmRvdy0+cHJpdi0+bmF2aWdhdGlvbl9sb29wKSB7CisgICAgZ19tYWluX2xvb3BfcXVpdCAod2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX2xvb3ApOworICAgIC8qIHdhaXQgdW50aWwgbmF2aWdhdGlvbiB0aHJlYWQgZmluaXNoZWQgKi8KKyAgICBnX3RocmVhZF9qb2luICh3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fdGhyZWFkKTsKKyAgICB3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fdGhyZWFkID0gTlVMTDsKICAgfQogCiAgIGlmIChwcml2LT5sb29wKQpAQCAtMzUwLDkgKzM0Niw4IEBACiAgIGdfd2Vha19yZWZfY2xlYXIgKCZ3aW5kb3ctPmNvbnRleHRfcmVmKTsKIAogICBnX211dGV4X2NsZWFyICgmd2luZG93LT5sb2NrKTsKLSAgZ19tdXRleF9jbGVhciAoJndpbmRvdy0+bmF2X2xvY2spOwotICBnX2NvbmRfY2xlYXIgKCZ3aW5kb3ctPm5hdl9jcmVhdGVfY29uZCk7Ci0gIGdfY29uZF9jbGVhciAoJndpbmRvdy0+bmF2X2Rlc3Ryb3lfY29uZCk7CisgIGdfbXV0ZXhfY2xlYXIgKCZ3aW5kb3ctPnByaXYtPm5hdl9sb2NrKTsKKyAgZ19jb25kX2NsZWFyICgmd2luZG93LT5wcml2LT5uYXZfY3JlYXRlX2NvbmQpOwogICBnc3Rfb2JqZWN0X3VucmVmICh3aW5kb3ctPmRpc3BsYXkpOwogCiAgIEdfT0JKRUNUX0NMQVNTIChnc3RfZ2xfd2luZG93X3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwpAQCAtNDE2LDcgKzQxMSw3IEBACiAgIEdzdEdMV2luZG93Q2xhc3MgKndpbmRvd19jbGFzczsKICAgR3N0U2V0V2luZG93SGFuZGxlQ2IgKmRhdGE7CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdykpOwogICBnX3JldHVybl9pZl9mYWlsIChoYW5kbGUgIT0gMCk7CiAgIHdpbmRvd19jbGFzcyA9IEdTVF9HTF9XSU5ET1dfR0VUX0NMQVNTICh3aW5kb3cpOwogICBnX3JldHVybl9pZl9mYWlsICh3aW5kb3dfY2xhc3MtPnNldF93aW5kb3dfaGFuZGxlICE9IE5VTEwpOwpAQCAtNDYyLDI5ICs0NTcsNiBAQAogICBnc3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZSAod2luZG93LCAoR3N0R0xXaW5kb3dDQikgZHJhd19jYiwgd2luZG93KTsKIH0KIAotCi0vKioKLSAqIGdzdF9nbF93aW5kb3dfZHJhd191bmxvY2tlZDoKLSAqIEB3aW5kb3c6IGEgI0dzdEdMV2luZG93Ci0gKgotICogUmVkcmF3IHRoZSB3aW5kb3cgY29udGVudHMuICBJbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGludm9rZSB0aGUgZHJhdyBjYWxsYmFjay4KLSAqCi0gKiBTaW5jZTogMS40Ci0gKi8KLXZvaWQKLWdzdF9nbF93aW5kb3dfZHJhd191bmxvY2tlZCAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpCi17Ci0gIEdzdEdMV2luZG93Q2xhc3MgKndpbmRvd19jbGFzczsKLQotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKLSAgd2luZG93X2NsYXNzID0gR1NUX0dMX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKHdpbmRvd19jbGFzcy0+ZHJhd191bmxvY2tlZCAhPSBOVUxMKTsKLQotICB3aW5kb3dfY2xhc3MtPmRyYXdfdW5sb2NrZWQgKHdpbmRvdyk7Ci0KLSAgd2luZG93LT5xdWV1ZV9yZXNpemUgPSBGQUxTRTsKLX0KLQogLyoqCiAgKiBnc3RfZ2xfd2luZG93X2RyYXc6CiAgKiBAd2luZG93OiBhICNHc3RHTFdpbmRvdwpAQCAtNDk4LDcgKzQ3MCw3IEBACiB7CiAgIEdzdEdMV2luZG93Q2xhc3MgKndpbmRvd19jbGFzczsKIAotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1dJTkRPVyAod2luZG93KSk7CiAgIHdpbmRvd19jbGFzcyA9IEdTVF9HTF9XSU5ET1dfR0VUX0NMQVNTICh3aW5kb3cpOwogICBnX3JldHVybl9pZl9mYWlsICh3aW5kb3dfY2xhc3MtPmRyYXcgIT0gTlVMTCk7CiAKQEAgLTUyOCw3ICs1MDAsNyBAQAogewogICBHc3RHTFdpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3M7CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdykpOwogICB3aW5kb3dfY2xhc3MgPSBHU1RfR0xfV0lORE9XX0dFVF9DTEFTUyAod2luZG93KTsKIAogICBpZiAod2luZG93X2NsYXNzLT5zZXRfcHJlZmVycmVkX3NpemUpCkBAIC01NDgsNyArNTIwLDcgQEAKIHsKICAgR3N0R0xXaW5kb3dDbGFzcyAqd2luZG93X2NsYXNzOwogCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdykpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpKTsKICAgd2luZG93X2NsYXNzID0gR1NUX0dMX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CiAKICAgaWYgKHdpbmRvd19jbGFzcy0+c2hvdykKQEAgLTU3NCw3ICs1NDYsNyBAQAogewogICBHc3RHTFdpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3M7CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdykpOwogICB3aW5kb3dfY2xhc3MgPSBHU1RfR0xfV0lORE9XX0dFVF9DTEFTUyAod2luZG93KTsKICAgZ19yZXR1cm5faWZfZmFpbCAod2luZG93X2NsYXNzLT5ydW4gIT0gTlVMTCk7CiAKQEAgLTU4MiwyMyArNTU0LDYgQEAKICAgd2luZG93X2NsYXNzLT5ydW4gKHdpbmRvdyk7CiB9CiAKLS8qKgotICogZ3N0X2dsX3dpbmRvd19ydW5fbmF2aWdhdGlvbjoKLSAqIEB3aW5kb3c6IGEgI0dzdEdMV2luZG93Ci0gKgotICogU3RhcnQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgbmF2aWdhdGlvbiBydW5sb29wLgotICoKLSAqIFNpbmNlOiAxLjYKLSAqLwotdm9pZAotZ3N0X2dsX3dpbmRvd19ydW5fbmF2aWdhdGlvbiAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpCi17Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdykpOwotICBnX3JldHVybl9pZl9mYWlsICh3aW5kb3ctPm5hdmlnYXRpb25fY29udGV4dCAhPSBOVUxMKTsKLSAgZ19yZXR1cm5faWZfZmFpbCAod2luZG93LT5uYXZpZ2F0aW9uX2xvb3AgIT0gTlVMTCk7Ci0gIGdfbWFpbl9sb29wX3J1biAod2luZG93LT5uYXZpZ2F0aW9uX2xvb3ApOwotfQotCiBzdGF0aWMgdm9pZAogZ3N0X2dsX3dpbmRvd19kZWZhdWx0X3F1aXQgKEdzdEdMV2luZG93ICogd2luZG93KQogewpAQCAtNjE4LDcgKzU3Myw3IEBACiB7CiAgIEdzdEdMV2luZG93Q2xhc3MgKndpbmRvd19jbGFzczsKIAotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1dJTkRPVyAod2luZG93KSk7CiAgIHdpbmRvd19jbGFzcyA9IEdTVF9HTF9XSU5ET1dfR0VUX0NMQVNTICh3aW5kb3cpOwogICBnX3JldHVybl9pZl9mYWlsICh3aW5kb3dfY2xhc3MtPnF1aXQgIT0gTlVMTCk7CiAKQEAgLTY5OSw3ICs2NTQsNyBAQAogewogICBHc3RHTFdpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3M7CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdykpOwogICBnX3JldHVybl9pZl9mYWlsIChjYWxsYmFjayAhPSBOVUxMKTsKICAgd2luZG93X2NsYXNzID0gR1NUX0dMX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHdpbmRvd19jbGFzcy0+c2VuZF9tZXNzYWdlICE9IE5VTEwpOwpAQCAtNzYxLDcgKzcxNiw3IEBACiB7CiAgIEdzdEdMV2luZG93Q2xhc3MgKndpbmRvd19jbGFzczsKIAotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1dJTkRPVyAod2luZG93KSk7CiAgIGdfcmV0dXJuX2lmX2ZhaWwgKGNhbGxiYWNrICE9IE5VTEwpOwogICB3aW5kb3dfY2xhc3MgPSBHU1RfR0xfV0lORE9XX0dFVF9DTEFTUyAod2luZG93KTsKICAgZ19yZXR1cm5faWZfZmFpbCAod2luZG93X2NsYXNzLT5zZW5kX21lc3NhZ2VfYXN5bmMgIT0gTlVMTCk7CkBAIC03ODQsNyArNzM5LDcgQEAKIGdzdF9nbF93aW5kb3dfc2V0X2RyYXdfY2FsbGJhY2sgKEdzdEdMV2luZG93ICogd2luZG93LCBHc3RHTFdpbmRvd0NCIGNhbGxiYWNrLAogICAgIGdwb2ludGVyIGRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3lfbm90aWZ5KQogewotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1dJTkRPVyAod2luZG93KSk7CiAKICAgR1NUX0dMX1dJTkRPV19MT0NLICh3aW5kb3cpOwogCkBAIC04MTMsNyArNzY4LDcgQEAKIGdzdF9nbF93aW5kb3dfc2V0X3Jlc2l6ZV9jYWxsYmFjayAoR3N0R0xXaW5kb3cgKiB3aW5kb3csCiAgICAgR3N0R0xXaW5kb3dSZXNpemVDQiBjYWxsYmFjaywgZ3BvaW50ZXIgZGF0YSwgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveV9ub3RpZnkpCiB7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdykpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpKTsKIAogICBHU1RfR0xfV0lORE9XX0xPQ0sgKHdpbmRvdyk7CiAKQEAgLTg0Miw3ICs3OTcsNyBAQAogZ3N0X2dsX3dpbmRvd19zZXRfY2xvc2VfY2FsbGJhY2sgKEdzdEdMV2luZG93ICogd2luZG93LCBHc3RHTFdpbmRvd0NCIGNhbGxiYWNrLAogICAgIGdwb2ludGVyIGRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3lfbm90aWZ5KQogewotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1dJTkRPVyAod2luZG93KSk7CiAKICAgR1NUX0dMX1dJTkRPV19MT0NLICh3aW5kb3cpOwogCkBAIC04ODUsNyArODQwLDcgQEAKIHsKICAgR3N0R0xXaW5kb3dDbGFzcyAqd2luZG93X2NsYXNzOwogCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpLCAwKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdyksIDApOwogICB3aW5kb3dfY2xhc3MgPSBHU1RfR0xfV0lORE9XX0dFVF9DTEFTUyAod2luZG93KTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHdpbmRvd19jbGFzcy0+Z2V0X2Rpc3BsYXkgIT0gTlVMTCwgMCk7CiAKQEAgLTkwNSw3ICs4NjAsNyBAQAogewogICBHc3RHTFdpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3M7CiAKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdyksIDApOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX1dJTkRPVyAod2luZG93KSwgMCk7CiAgIHdpbmRvd19jbGFzcyA9IEdTVF9HTF9XSU5ET1dfR0VUX0NMQVNTICh3aW5kb3cpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAod2luZG93X2NsYXNzLT5nZXRfd2luZG93X2hhbmRsZSAhPSBOVUxMLCAwKTsKIApAQCAtOTIzLDcgKzg3OCw3IEBACiBHc3RHTENvbnRleHQgKgogZ3N0X2dsX3dpbmRvd19nZXRfY29udGV4dCAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpCiB7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpLCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdyksIE5VTEwpOwogCiAgIHJldHVybiAoR3N0R0xDb250ZXh0ICopIGdfd2Vha19yZWZfZ2V0ICgmd2luZG93LT5jb250ZXh0X3JlZik7CiB9CkBAIC05NTAsNTAgKzkwNSw0NyBAQAogCiBHX0RFRklORV9UWVBFIChHc3RHTER1bW15V2luZG93LCBnc3RfZ2xfZHVtbXlfd2luZG93LCBHU1RfR0xfVFlQRV9XSU5ET1cpOwogCi12b2lkCi1nc3RfZ2xfd2luZG93X29wZW5fbmF2aWdhdGlvbiAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9nbF93aW5kb3dfbmF2aWdhdGlvbl9zdGFydGVkIChncG9pbnRlciBkYXRhKQogewotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKLSAgZ19tdXRleF9sb2NrICgmd2luZG93LT5uYXZfbG9jayk7Ci0gIHdpbmRvdy0+bmF2aWdhdGlvbl9jb250ZXh0ID0gZ19tYWluX2NvbnRleHRfbmV3ICgpOwotICB3aW5kb3ctPm5hdmlnYXRpb25fbG9vcCA9IGdfbWFpbl9sb29wX25ldyAod2luZG93LT5uYXZpZ2F0aW9uX2NvbnRleHQsIEZBTFNFKTsKLSAgZ19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdCAod2luZG93LT5uYXZpZ2F0aW9uX2NvbnRleHQpOwotICB3aW5kb3ctPm5hdl9hbGl2ZSA9IFRSVUU7Ci0gIGdfY29uZF9zaWduYWwgKCZ3aW5kb3ctPm5hdl9jcmVhdGVfY29uZCk7Ci0gIGdfbXV0ZXhfdW5sb2NrICgmd2luZG93LT5uYXZfbG9jayk7Ci19CisgIEdzdEdMV2luZG93ICp3aW5kb3cgPSBkYXRhOwogCi12b2lkCi1nc3RfZ2xfd2luZG93X2Nsb3NlX25hdmlnYXRpb24gKEdzdEdMV2luZG93ICogd2luZG93KQotewotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKLSAgZ19yZXR1cm5faWZfZmFpbCAod2luZG93LT5uYXZpZ2F0aW9uX2NvbnRleHQgIT0gTlVMTCk7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKHdpbmRvdy0+bmF2aWdhdGlvbl9sb29wICE9IE5VTEwpOworICBnX211dGV4X2xvY2sgKCZ3aW5kb3ctPnByaXYtPm5hdl9sb2NrKTsKKyAgd2luZG93LT5wcml2LT5uYXZfYWxpdmUgPSBUUlVFOworICBnX2NvbmRfc2lnbmFsICgmd2luZG93LT5wcml2LT5uYXZfY3JlYXRlX2NvbmQpOworICBnX211dGV4X3VubG9jayAoJndpbmRvdy0+cHJpdi0+bmF2X2xvY2spOwogCi0gIGdfbXV0ZXhfbG9jayAoJndpbmRvdy0+bmF2X2xvY2spOwotICB3aW5kb3ctPm5hdl9hbGl2ZSA9IEZBTFNFOwotICBnX21haW5fY29udGV4dF9wb3BfdGhyZWFkX2RlZmF1bHQgKHdpbmRvdy0+bmF2aWdhdGlvbl9jb250ZXh0KTsKLSAgZ19tYWluX2xvb3BfdW5yZWYgKHdpbmRvdy0+bmF2aWdhdGlvbl9sb29wKTsKLSAgZ19tYWluX2NvbnRleHRfdW5yZWYgKHdpbmRvdy0+bmF2aWdhdGlvbl9jb250ZXh0KTsKLSAgZ19jb25kX3NpZ25hbCAoJndpbmRvdy0+bmF2X2Rlc3Ryb3lfY29uZCk7Ci0gIGdfbXV0ZXhfdW5sb2NrICgmd2luZG93LT5uYXZfbG9jayk7Ci19Ci0KLXZvaWQKLWdzdF9nbF93aW5kb3dfcXVpdF9uYXZpZ2F0aW9uIChHc3RHTFdpbmRvdyAqIHdpbmRvdykKLXsKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7Ci0KLSAgZ19tYWluX2xvb3BfcXVpdCAod2luZG93LT5uYXZpZ2F0aW9uX2xvb3ApOworICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOwogfQogCiBzdGF0aWMgZ3BvaW50ZXIKIGdzdF9nbF93aW5kb3dfbmF2aWdhdGlvbl90aHJlYWQgKEdzdEdMV2luZG93ICogd2luZG93KQogewotICBnc3RfZ2xfd2luZG93X29wZW5fbmF2aWdhdGlvbiAod2luZG93KTsKLSAgZ3N0X2dsX3dpbmRvd19ydW5fbmF2aWdhdGlvbiAod2luZG93KTsKKyAgR1NvdXJjZSAqc291cmNlOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpLCBOVUxMKTsKKworICB3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fY29udGV4dCA9IGdfbWFpbl9jb250ZXh0X25ldyAoKTsKKyAgd2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX2xvb3AgPQorICAgICAgZ19tYWluX2xvb3BfbmV3ICh3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fY29udGV4dCwgRkFMU0UpOworICBnX21haW5fY29udGV4dF9wdXNoX3RocmVhZF9kZWZhdWx0ICh3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fY29udGV4dCk7CisKKyAgc291cmNlID0gZ19pZGxlX3NvdXJjZV9uZXcgKCk7CisgIGdfc291cmNlX3NldF9jYWxsYmFjayAoc291cmNlLCAoR1NvdXJjZUZ1bmMpIGdzdF9nbF93aW5kb3dfbmF2aWdhdGlvbl9zdGFydGVkLAorICAgICAgd2luZG93LCBOVUxMKTsKKyAgZ19zb3VyY2VfYXR0YWNoIChzb3VyY2UsIHdpbmRvdy0+cHJpdi0+bmF2aWdhdGlvbl9jb250ZXh0KTsKKyAgZ19zb3VyY2VfdW5yZWYgKHNvdXJjZSk7CisKKyAgZ19tYWluX2xvb3BfcnVuICh3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fbG9vcCk7CisKKyAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZhdWx0ICh3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fY29udGV4dCk7CisKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHdpbmRvdy0+cHJpdi0+bmF2aWdhdGlvbl9sb29wKTsKKyAgZ19tYWluX2NvbnRleHRfdW5yZWYgKHdpbmRvdy0+cHJpdi0+bmF2aWdhdGlvbl9jb250ZXh0KTsKKyAgd2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX2xvb3AgPSBOVUxMOworICB3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fY29udGV4dCA9IE5VTEw7CisKICAgR1NUX0lORk8gKCJuYXZpZ2F0aW9uIGxvb3AgZXhpdGVkXG4iKTsKLSAgZ3N0X2dsX3dpbmRvd19jbG9zZV9uYXZpZ2F0aW9uICh3aW5kb3cpOwogCiAgIHJldHVybiBOVUxMOwogfQpAQCAtMTA0NSwyMCArOTk3LDYgQEAKICAgcmV0dXJuIGdfb2JqZWN0X25ldyAoZ3N0X2dsX2R1bW15X3dpbmRvd19nZXRfdHlwZSAoKSwgTlVMTCk7CiB9CiAKLWdib29sZWFuCi1nc3RfZ2xfd2luZG93X2tleV9ldmVudF9jYiAoZ3BvaW50ZXIgZGF0YSkKLXsKLSAgc3RydWN0IGtleV9ldmVudCAqa2V5X2RhdGEgPSAoc3RydWN0IGtleV9ldmVudCAqKSBkYXRhOwotICBHU1RfREVCVUcKLSAgICAgICgiJXMgY2FsbGVkIGRhdGEgc3RydWN0ICVwIHdpbmRvdyAlcCBrZXkgJXMgZXZlbnQgJXMgIiwKLSAgICAgIF9fZnVuY19fLCBrZXlfZGF0YSwga2V5X2RhdGEtPndpbmRvdywga2V5X2RhdGEtPmtleV9zdHIsCi0gICAgICBrZXlfZGF0YS0+ZXZlbnRfdHlwZSk7Ci0gIGdzdF9nbF93aW5kb3dfc2VuZF9rZXlfZXZlbnQgKEdTVF9HTF9XSU5ET1cgKGtleV9kYXRhLT53aW5kb3cpLAotICAgICAga2V5X2RhdGEtPmV2ZW50X3R5cGUsIGtleV9kYXRhLT5rZXlfc3RyKTsKLSAgZ19zbGljZV9mcmVlIChzdHJ1Y3Qga2V5X2V2ZW50LCBrZXlfZGF0YSk7Ci0gIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Ci19Ci0KIHZvaWQKIGdzdF9nbF93aW5kb3dfc2VuZF9rZXlfZXZlbnQgKEdzdEdMV2luZG93ICogd2luZG93LCBjb25zdCBjaGFyICpldmVudF90eXBlLAogICAgIGNvbnN0IGNoYXIgKmtleV9zdHIpCkBAIC0xMDY3LDIxICsxMDA1LDQ1IEBACiAgICAgICBldmVudF90eXBlLCBrZXlfc3RyKTsKIH0KIAotZ2Jvb2xlYW4KLWdzdF9nbF93aW5kb3dfbW91c2VfZXZlbnRfY2IgKGdwb2ludGVyIGRhdGEpCit0eXBlZGVmIHN0cnVjdAogewotICBzdHJ1Y3QgbW91c2VfZXZlbnQgKm1vdXNlX2RhdGEgPSAoc3RydWN0IG1vdXNlX2V2ZW50ICopIGRhdGE7Ci0gIEdTVF9ERUJVRyAoIiVzIGNhbGxlZCBkYXRhIHN0cnVjdCAlcCBtb3VzZSBldmVudCAlcyBidXR0b24gJWQgYXQgJWcsICVnIiwKLSAgICAgIF9fZnVuY19fLCBtb3VzZV9kYXRhLCBtb3VzZV9kYXRhLT5ldmVudF90eXBlLCBtb3VzZV9kYXRhLT5idXR0b24sCi0gICAgICBtb3VzZV9kYXRhLT5wb3N4LCBtb3VzZV9kYXRhLT5wb3N5KTsKLSAgZ3N0X2dsX3dpbmRvd19zZW5kX21vdXNlX2V2ZW50IChHU1RfR0xfV0lORE9XIChtb3VzZV9kYXRhLT53aW5kb3cpLAotICAgICAgbW91c2VfZGF0YS0+ZXZlbnRfdHlwZSwgbW91c2VfZGF0YS0+YnV0dG9uLCBtb3VzZV9kYXRhLT5wb3N4LAotICAgICAgbW91c2VfZGF0YS0+cG9zeSk7Ci0gIGdfc2xpY2VfZnJlZSAoc3RydWN0IG1vdXNlX2V2ZW50LCBtb3VzZV9kYXRhKTsKKyAgR3N0R0xXaW5kb3cgKndpbmRvdzsKKyAgY29uc3QgY2hhciAqZXZlbnRfdHlwZTsKKyAgY29uc3QgY2hhciAqa2V5X3N0cjsKK30gS2V5RXZlbnREYXRhOworCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9nbF93aW5kb3dfa2V5X2V2ZW50X2NiIChncG9pbnRlciBkYXRhKQoreworICBLZXlFdmVudERhdGEgKmtleV9kYXRhID0gZGF0YTsKKworICBHU1RfREVCVUcKKyAgICAgICgiJXMgY2FsbGVkIGRhdGEgc3RydWN0ICVwIHdpbmRvdyAlcCBrZXkgJXMgZXZlbnQgJXMgIiwKKyAgICAgIF9fZnVuY19fLCBrZXlfZGF0YSwga2V5X2RhdGEtPndpbmRvdywga2V5X2RhdGEtPmtleV9zdHIsCisgICAgICBrZXlfZGF0YS0+ZXZlbnRfdHlwZSk7CisKKyAgZ3N0X2dsX3dpbmRvd19zZW5kX2tleV9ldmVudCAoR1NUX0dMX1dJTkRPVyAoa2V5X2RhdGEtPndpbmRvdyksCisgICAgICBrZXlfZGF0YS0+ZXZlbnRfdHlwZSwga2V5X2RhdGEtPmtleV9zdHIpOworCiAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7CiB9CiAKIHZvaWQKK2dzdF9nbF93aW5kb3dfc2VuZF9rZXlfZXZlbnRfYXN5bmMgKEdzdEdMV2luZG93ICogd2luZG93LAorICAgIGNvbnN0IGNoYXIgKmV2ZW50X3R5cGUsIGNvbnN0IGNoYXIgKmtleV9zdHIpCit7CisgIEtleUV2ZW50RGF0YSAqa2V5X2RhdGEgPSBnX25ldzAgKEtleUV2ZW50RGF0YSwgMSk7CisKKyAga2V5X2RhdGEtPndpbmRvdyA9IHdpbmRvdzsKKyAga2V5X2RhdGEtPmtleV9zdHIgPSBrZXlfc3RyOworICBrZXlfZGF0YS0+ZXZlbnRfdHlwZSA9IGV2ZW50X3R5cGU7CisKKyAgZ19tYWluX2NvbnRleHRfaW52b2tlX2Z1bGwgKHdpbmRvdy0+cHJpdi0+bmF2aWdhdGlvbl9jb250ZXh0LAorICAgICAgR19QUklPUklUWV9ERUZBVUxULCAoR1NvdXJjZUZ1bmMpIGdzdF9nbF93aW5kb3dfa2V5X2V2ZW50X2NiLCBrZXlfZGF0YSwKKyAgICAgIChHRGVzdHJveU5vdGlmeSkgZ19mcmVlKTsKK30KKwordm9pZAogZ3N0X2dsX3dpbmRvd19zZW5kX21vdXNlX2V2ZW50IChHc3RHTFdpbmRvdyAqIHdpbmRvdywgY29uc3QgY2hhciAqZXZlbnRfdHlwZSwKICAgICBpbnQgYnV0dG9uLCBkb3VibGUgcG9zeCwgZG91YmxlIHBvc3kpCiB7CkBAIC0xMDg5LDYgKzEwNTEsNDggQEAKICAgICAgIGV2ZW50X3R5cGUsIGJ1dHRvbiwgcG9zeCwgcG9zeSk7CiB9CiAKK3R5cGVkZWYgc3RydWN0Cit7CisgIEdzdEdMV2luZG93ICp3aW5kb3c7CisgIGNvbnN0IGNoYXIgKmV2ZW50X3R5cGU7CisgIGludCBidXR0b247CisgIGRvdWJsZSBwb3N4OworICBkb3VibGUgcG9zeTsKK30gTW91c2VFdmVudERhdGE7CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2dsX3dpbmRvd19tb3VzZV9ldmVudF9jYiAoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgTW91c2VFdmVudERhdGEgKm1vdXNlX2RhdGEgPSBkYXRhOworCisgIEdTVF9ERUJVRyAoIiVzIGNhbGxlZCBkYXRhIHN0cnVjdCAlcCBtb3VzZSBldmVudCAlcyBidXR0b24gJWQgYXQgJWcsICVnIiwKKyAgICAgIF9fZnVuY19fLCBtb3VzZV9kYXRhLCBtb3VzZV9kYXRhLT5ldmVudF90eXBlLCBtb3VzZV9kYXRhLT5idXR0b24sCisgICAgICBtb3VzZV9kYXRhLT5wb3N4LCBtb3VzZV9kYXRhLT5wb3N5KTsKKworICBnc3RfZ2xfd2luZG93X3NlbmRfbW91c2VfZXZlbnQgKEdTVF9HTF9XSU5ET1cgKG1vdXNlX2RhdGEtPndpbmRvdyksCisgICAgICBtb3VzZV9kYXRhLT5ldmVudF90eXBlLCBtb3VzZV9kYXRhLT5idXR0b24sIG1vdXNlX2RhdGEtPnBvc3gsCisgICAgICBtb3VzZV9kYXRhLT5wb3N5KTsKKworICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworfQorCit2b2lkCitnc3RfZ2xfd2luZG93X3NlbmRfbW91c2VfZXZlbnRfYXN5bmMgKEdzdEdMV2luZG93ICogd2luZG93LAorICAgIGNvbnN0IGNoYXIgKmV2ZW50X3R5cGUsIGludCBidXR0b24sIGRvdWJsZSBwb3N4LCBkb3VibGUgcG9zeSkKK3sKKyAgTW91c2VFdmVudERhdGEgKm1vdXNlX2RhdGEgPSBnX25ldzAgKE1vdXNlRXZlbnREYXRhLCAxKTsKKworICBtb3VzZV9kYXRhLT53aW5kb3cgPSB3aW5kb3c7CisgIG1vdXNlX2RhdGEtPmV2ZW50X3R5cGUgPSBldmVudF90eXBlOworICBtb3VzZV9kYXRhLT5idXR0b24gPSBidXR0b247CisgIG1vdXNlX2RhdGEtPnBvc3ggPSBwb3N4OworICBtb3VzZV9kYXRhLT5wb3N5ID0gcG9zeTsKKworICBnX21haW5fY29udGV4dF9pbnZva2VfZnVsbCAod2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX2NvbnRleHQsCisgICAgICBHX1BSSU9SSVRZX0RFRkFVTFQsIChHU291cmNlRnVuYykgZ3N0X2dsX3dpbmRvd19tb3VzZV9ldmVudF9jYiwKKyAgICAgIG1vdXNlX2RhdGEsIChHRGVzdHJveU5vdGlmeSkgZ19mcmVlKTsKK30KKwogLyoqCiAgKiBnc3RfZ2xfd2luZG93X2hhbmRsZV9ldmVudHM6CiAgKiBAd2luZG93OiBhICNHc3RHTFdpbmRvdwpAQCAtMTEwNSw3ICsxMTA5LDcgQEAKIHsKICAgR3N0R0xXaW5kb3dDbGFzcyAqd2luZG93X2NsYXNzOwogCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdykpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpKTsKICAgd2luZG93X2NsYXNzID0gR1NUX0dMX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CiAKICAgaWYgKHdpbmRvd19jbGFzcy0+aGFuZGxlX2V2ZW50cykKQEAgLTExMzIsNyArMTEzNiw3IEBACiAgIEdzdEdMV2luZG93Q2xhc3MgKndpbmRvd19jbGFzczsKICAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CiAKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdyksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdyksIEZBTFNFKTsKICAgd2luZG93X2NsYXNzID0gR1NUX0dMX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CiAKICAgaWYgKHggPCAwIHx8IHkgPCAwIHx8IHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApCkBAIC0xMTQ5LDcgKzExNTMsNyBAQAogewogICBHc3RHTFdpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3M7CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdykpOwogICB3aW5kb3dfY2xhc3MgPSBHU1RfR0xfV0lORE9XX0dFVF9DTEFTUyAod2luZG93KTsKIAogICB3aW5kb3ctPnF1ZXVlX3Jlc2l6ZSA9IFRSVUU7CkBAIC0xMTYwLDcgKzExNjQsNyBAQAogdm9pZAogZ3N0X2dsX3dpbmRvd19yZXNpemUgKEdzdEdMV2luZG93ICogd2luZG93LCBndWludCB3aWR0aCwgZ3VpbnQgaGVpZ2h0KQogewotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1dJTkRPVyAod2luZG93KSk7CiAKICAgaWYgKHdpbmRvdy0+cmVzaXplKQogICAgIHdpbmRvdy0+cmVzaXplICh3aW5kb3ctPnJlc2l6ZV9kYXRhLCB3aWR0aCwgaGVpZ2h0KTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmgKaW5kZXggZTQ3ODFjNy4uMWNmNWMzZSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmgKQEAgLTMzLDggKzMzLDggQEAKICNkZWZpbmUgR1NUX0dMX1RZUEVfV0lORE9XICAgICAgICAgKGdzdF9nbF93aW5kb3dfZ2V0X3R5cGUoKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPVyhvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XLCBHc3RHTFdpbmRvdykpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoayksIEdTVF9HTF9UWVBFX1dJTkRPVywgR3N0R0xXaW5kb3dDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9JU19XSU5ET1cobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX1dJTkRPVykpCi0jZGVmaW5lIEdTVF9HTF9JU19XSU5ET1dfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX1dJTkRPVykpCisjZGVmaW5lIEdTVF9JU19HTF9XSU5ET1cobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX1dJTkRPVykpCisjZGVmaW5lIEdTVF9JU19HTF9XSU5ET1dfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX1dJTkRPVykpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XLCBHc3RHTFdpbmRvd0NsYXNzKSkKIAogI2RlZmluZSBHU1RfR0xfV0lORE9XX0xPQ0sodykgZ19tdXRleF9sb2NrKCZHU1RfR0xfV0lORE9XKHcpLT5sb2NrKQpAQCAtNjcsMTEgKzY3LDYgQEAKICAgR3N0T2JqZWN0IHBhcmVudDsKIAogICBHTXV0ZXggICAgICAgIGxvY2s7Ci0gIEdNdXRleCAgICAgICAgbmF2X2xvY2s7Ci0gIEdDb25kICAgICAgICAgbmF2X2NyZWF0ZV9jb25kOwotICBHQ29uZCAgICAgICAgIG5hdl9kZXN0cm95X2NvbmQ7Ci0gIGdib29sZWFuICAgICAgbmF2X2NyZWF0ZWQ7Ci0gIGdib29sZWFuICAgICAgbmF2X2FsaXZlOwogCiAgIEdzdEdMRGlzcGxheSAqZGlzcGxheTsKICAgR1dlYWtSZWYgICAgICBjb250ZXh0X3JlZjsKQEAgLTkzLDkgKzg4LDYgQEAKICAgZ2Jvb2xlYW4gICAgICAgICAgICAgIHF1ZXVlX3Jlc2l6ZTsKIAogICAvKjwgcHJpdmF0ZSA+Ki8KLSAgR01haW5Db250ZXh0ICpuYXZpZ2F0aW9uX2NvbnRleHQ7Ci0gIEdNYWluTG9vcCAqbmF2aWdhdGlvbl9sb29wOwotCiAgIEdzdEdMV2luZG93UHJpdmF0ZSAqcHJpdjsKIAogICBncG9pbnRlciBfcmVzZXJ2ZWRbR1NUX1BBRERJTkddOwpAQCAtMTA4LDcgKzEwMCw2IEBACiAgKiBAc2V0X3dpbmRvd19oYW5kbGU6IFNldCBhIHdpbmRvdyB0byByZW5kZXIgaW50bwogICogQGdldF93aW5kb3dfaGFuZGxlOiBHZXRzIHRoZSBjdXJyZW50IHdpbmRvdyB0aGF0IHRoaXMgI0dzdEdMV2luZG93IGlzCiAgKiAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmluZyBpbnRvCi0gKiBAZHJhd191bmxvY2tlZDogcmVkcmF3IHRoZSB3aW5kb3cgd2l0aCB0aGUgc3BlY2lmaWVkIGRpbWVuc2lvbnMKICAqIEBkcmF3OiByZWRyYXcgdGhlIHdpbmRvdyB3aXRoIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9ucwogICogQHJ1bjogcnVuIHRoZSBtYWlubG9vcAogICogQHF1aXQ6IHNlbmQgYSBxdWl0IHRvIHRoZSBtYWlubG9vcApAQCAtMTMxLDcgKzEyMiw2IEBACiAgIGd1aW50cHRyICgqZ2V0X2Rpc3BsYXkpICAgICAgICAoR3N0R0xXaW5kb3cgKndpbmRvdyk7CiAgIHZvaWQgICAgICgqc2V0X3dpbmRvd19oYW5kbGUpICAoR3N0R0xXaW5kb3cgKndpbmRvdywgZ3VpbnRwdHIgaWQpOwogICBndWludHB0ciAoKmdldF93aW5kb3dfaGFuZGxlKSAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwotICB2b2lkICAgICAoKmRyYXdfdW5sb2NrZWQpICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwogICB2b2lkICAgICAoKmRyYXcpICAgICAgICAgICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwogICB2b2lkICAgICAoKnJ1bikgICAgICAgICAgICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwogICB2b2lkICAgICAoKnF1aXQpICAgICAgICAgICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwpAQCAtMTUwLDIyICsxNDAsNiBAQAogICBncG9pbnRlciBfcmVzZXJ2ZWRbR1NUX1BBRERJTkddOwogfTsKIAotc3RydWN0IGtleV9ldmVudAotewotICBHc3RHTFdpbmRvdyAqd2luZG93OwotICBjb25zdCBjaGFyICpldmVudF90eXBlOwotICBjb25zdCBjaGFyICprZXlfc3RyOwotfTsKLQotc3RydWN0IG1vdXNlX2V2ZW50Ci17Ci0gIEdzdEdMV2luZG93ICp3aW5kb3c7Ci0gIGNvbnN0IGNoYXIgKmV2ZW50X3R5cGU7Ci0gIGludCBidXR0b247Ci0gIGRvdWJsZSBwb3N4OwotICBkb3VibGUgcG9zeTsKLX07Ci0KIEdRdWFyayBnc3RfZ2xfd2luZG93X2Vycm9yX3F1YXJrICh2b2lkKTsKIEdUeXBlIGdzdF9nbF93aW5kb3dfZ2V0X3R5cGUgICAgICh2b2lkKTsKIApAQCAtMjAzLDIwICsxNzcsMjYgQEAKIC8qIG5hdmlnYXRpb24gKi8KIHZvaWQgICAgIGdzdF9nbF93aW5kb3dfaGFuZGxlX2V2ZW50cyAgICAgICAgKEdzdEdMV2luZG93ICogd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gaGFuZGxlX2V2ZW50cyk7Ci1nYm9vbGVhbiBnc3RfZ2xfd2luZG93X2tleV9ldmVudF9jYiAgICAgICAgIChncG9pbnRlciBkYXRhKTsKLWdib29sZWFuIGdzdF9nbF93aW5kb3dfbW91c2VfZXZlbnRfY2IgICAgICAgKGdwb2ludGVyIGRhdGEpOworCiB2b2lkICAgICBnc3RfZ2xfd2luZG93X3NlbmRfa2V5X2V2ZW50ICAgICAgIChHc3RHTFdpbmRvdyAqIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBldmVudF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGtleV9zdHIpOwordm9pZCAgICAgZ3N0X2dsX3dpbmRvd19zZW5kX2tleV9ldmVudF9hc3luYyAoR3N0R0xXaW5kb3cgKiB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogZXZlbnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBrZXlfc3RyKTsKIHZvaWQgICAgIGdzdF9nbF93aW5kb3dfc2VuZF9tb3VzZV9ldmVudCAgICAgKEdzdEdMV2luZG93ICogd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGV2ZW50X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnV0dG9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHBvc3gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgcG9zeSk7Cit2b2lkICAgICBnc3RfZ2xfd2luZG93X3NlbmRfbW91c2VfZXZlbnRfYXN5bmMgKEdzdEdMV2luZG93ICogd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGV2ZW50X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnV0dG9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHBvc3gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgcG9zeSk7CiAKIC8qIHN1cmZhY2VzL3JlbmRlcmluZyAqLwogdm9pZCAgICAgZ3N0X2dsX3dpbmRvd19xdWV1ZV9yZXNpemUgICAgICAgICAoR3N0R0xXaW5kb3cgKndpbmRvdyk7Ci12b2lkICAgICBnc3RfZ2xfd2luZG93X2RyYXdfdW5sb2NrZWQgICAgICAgIChHc3RHTFdpbmRvdyAqd2luZG93KTsKIHZvaWQgICAgIGdzdF9nbF93aW5kb3dfZHJhdyAgICAgICAgICAgICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwogdm9pZCAgICAgZ3N0X2dsX3dpbmRvd19zaG93ICAgICAgICAgICAgICAgICAoR3N0R0xXaW5kb3cgKndpbmRvdyk7CiB2b2lkICAgICBnc3RfZ2xfd2luZG93X3NldF9wcmVmZXJyZWRfc2l6ZSAgIChHc3RHTFdpbmRvdyAqIHdpbmRvdywKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC91dGlscy9nbGVzX3ZlcnNpb25zLmggYi9nc3QtbGlicy9nc3QvZ2wvdXRpbHMvZ2xlc192ZXJzaW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4MGJmMWUKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvdXRpbHMvZ2xlc192ZXJzaW9ucy5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfR0xFU19WRVJTSU9OU19IXworI2RlZmluZSBfR0xFU19WRVJTSU9OU19IXworCisvKiBsaXN0IG9mIGtub3duIE9wZW5HTCB2ZXJzaW9ucyAqLworLyogKklOREVOVC1PRkYqICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeyBpbnQgbWFqb3IsIG1pbm9yOyB9IGdsZXMyX3ZlcnNpb25zW10gPSB7CisgICB7MywgMn0sCisgICB7MywgMX0sCisgICB7MywgMH0sCisKKyAgIHsyLCAwfSwKKworICAgezAsIDB9IC8qIGVuZCBvZiBsaXN0ICovCit9OworLyogKklOREVOVC1PTiogKi8KKworI2VuZGlmIC8qIF9HTEVTX1ZFUlNJT05TX0hfICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvdXRpbHMvb3BlbmdsX3ZlcnNpb25zLmggYi9nc3QtbGlicy9nc3QvZ2wvdXRpbHMvb3BlbmdsX3ZlcnNpb25zLmgKaW5kZXggYmVlZWFiNi4uMDgxY2FlYiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL3V0aWxzL29wZW5nbF92ZXJzaW9ucy5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC91dGlscy9vcGVuZ2xfdmVyc2lvbnMuaApAQCAtNDgsNiArNDgsNyBAQAogCiAgICB7MCwgMH0gLyogZW5kIG9mIGxpc3QgKi8KIH07CisKIC8qICpJTkRFTlQtT04qICovCiAKICNlbmRpZiAvKiBfT1BFTkdMX1ZFUlNJT05TX0hfICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9nbC93YXlsYW5kL01ha2VmaWxlLmluCmluZGV4IDU1NDYyZDQuLjMwNzdmYzMgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC93YXlsYW5kL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC9nbC93YXlsYW5kL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI0Nyw2ICsyNDYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4NCw2ICsyODUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5Miw3ICsyOTUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTEsOCArMzEzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyOSwxNiArMzMyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2NCw2ICszNjgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODksNiArMzk1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDkwLDYgKzQ5OCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDMsOCArNTEyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTIwLDYgKzUyNyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzcsMTYgKzU4NiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzOCw2ICs2NDksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ4LDYgKzY2MCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1Nyw2ICs2NzAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjk0LDcgKzcwOSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL3dheWxhbmQvZ3N0Z2x3aW5kb3dfd2F5bGFuZF9lZ2wuYyBiL2dzdC1saWJzL2dzdC9nbC93YXlsYW5kL2dzdGdsd2luZG93X3dheWxhbmRfZWdsLmMKaW5kZXggYjM0YWQ0Mi4uNmUxZjBjNSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL3dheWxhbmQvZ3N0Z2x3aW5kb3dfd2F5bGFuZF9lZ2wuYworKysgYi9nc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9nc3RnbHdpbmRvd193YXlsYW5kX2VnbC5jCkBAIC0zMzQsOCArMzM0LDYgQEAKICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X3dheWxhbmRfZWdsX2dldF93aW5kb3dfaGFuZGxlKTsKICAgd2luZG93X2NsYXNzLT5zZXRfd2luZG93X2hhbmRsZSA9CiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd193YXlsYW5kX2VnbF9zZXRfd2luZG93X2hhbmRsZSk7Ci0gIHdpbmRvd19jbGFzcy0+ZHJhd191bmxvY2tlZCA9Ci0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd193YXlsYW5kX2VnbF9kcmF3KTsKICAgd2luZG93X2NsYXNzLT5zaG93ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfd2F5bGFuZF9lZ2xfc2hvdyk7CiAgIHdpbmRvd19jbGFzcy0+ZHJhdyA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X3dheWxhbmRfZWdsX2RyYXcpOwogICB3aW5kb3dfY2xhc3MtPmNsb3NlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfd2F5bGFuZF9lZ2xfY2xvc2UpOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL3dheWxhbmQvZ3N0Z2x3aW5kb3dfd2F5bGFuZF9lZ2wuaCBiL2dzdC1saWJzL2dzdC9nbC93YXlsYW5kL2dzdGdsd2luZG93X3dheWxhbmRfZWdsLmgKaW5kZXggZjc2YjViMC4uZTAxNjZkYSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL3dheWxhbmQvZ3N0Z2x3aW5kb3dfd2F5bGFuZF9lZ2wuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9nc3RnbHdpbmRvd193YXlsYW5kX2VnbC5oCkBAIC0zMiw4ICszMiw4IEBACiAjZGVmaW5lIEdTVF9HTF9UWVBFX1dJTkRPV19XQVlMQU5EX0VHTCAgICAgICAgIChnc3RfZ2xfd2luZG93X3dheWxhbmRfZWdsX2dldF90eXBlKCkpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfV0FZTEFORF9FR0wobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9HTF9UWVBFX1dJTkRPV19XQVlMQU5EX0VHTCwgR3N0R0xXaW5kb3dXYXlsYW5kRUdMKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19XQVlMQU5EX0VHTF9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTUygoayksIEdTVF9HTF9UWVBFX1dJTkRPV19XQVlMQU5EX0VHTCwgR3N0R0xXaW5kb3dXYXlsYW5kRUdMQ2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfV0lORE9XX1dBWUxBTkRfRUdMKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfV0FZTEFORF9FR0wpKQotI2RlZmluZSBHU1RfR0xfSVNfV0lORE9XX1dBWUxBTkRfRUdMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfV0FZTEFORF9FR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XX1dBWUxBTkRfRUdMKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfV0FZTEFORF9FR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XX1dBWUxBTkRfRUdMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfV0FZTEFORF9FR0wpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX1dBWUxBTkRfRUdMX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX1dJTkRPV19XQVlMQU5EX0VHTCwgR3N0R0xXaW5kb3dXYXlsYW5kRUdMX0NsYXNzKSkKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMV2luZG93V2F5bGFuZEVHTCAgICAgICAgR3N0R0xXaW5kb3dXYXlsYW5kRUdMOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL3dheWxhbmQvd2F5bGFuZF9ldmVudF9zb3VyY2UuaCBiL2dzdC1saWJzL2dzdC9nbC93YXlsYW5kL3dheWxhbmRfZXZlbnRfc291cmNlLmgKaW5kZXggOTQwYTVlMC4uZmEyMDg5MiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL3dheWxhbmQvd2F5bGFuZF9ldmVudF9zb3VyY2UuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC93YXlsYW5kX2V2ZW50X3NvdXJjZS5oCkBAIC0zNiw3ICszNiw3IEBACiBHU291cmNlICogd2F5bGFuZF9ldmVudF9zb3VyY2VfbmV3IChzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3bF9ldmVudF9xdWV1ZSAqcXVldWUpOwogCi1naW50ICAgICAgZ3N0X2dsX3dsX2Rpc3BsYXlfcm91bmR0cmlwX3F1ZXVlIChzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSwKK0dfR05VQ19JTlRFUk5BTCBnaW50ICAgICAgZ3N0X2dsX3dsX2Rpc3BsYXlfcm91bmR0cmlwX3F1ZXVlIChzdHJ1Y3Qgd2xfZGlzcGxheSAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB3bF9ldmVudF9xdWV1ZSAqcXVldWUpOwogCiAjZW5kaWYgLyogX19XQVlMQU5EX0VWRU5UX1NPVVJDRV9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC93aW4zMi9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9nbC93aW4zMi9NYWtlZmlsZS5pbgppbmRleCBjY2Y5OGU5Li43MGM3ZWFjIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvd2luMzIvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL01ha2VmaWxlLmluCkBAIC0xMTgsMTYgKzExOCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX25vaW5zdF9IRUFERVJTX0RJU1QpIFwKQEAgLTI1Miw2ICsyNTEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4OSw2ICsyOTAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5Nyw3ICszMDAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTYsOCArMzE4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMzNCwxNiArMzM3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2OSw2ICszNzMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zOTQsNiArNDAwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDk1LDYgKzUwMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDgsOCArNTE3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTI1LDYgKzUzMiw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01ODIsMTYgKzU5MSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY0Myw2ICs2NTQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjUzLDYgKzY2NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY2Miw2ICs2NzUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjk5LDcgKzcxNCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsY29udGV4dF93Z2wuaCBiL2dzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbGNvbnRleHRfd2dsLmgKaW5kZXggNjRiZjE0MS4uMjQ1OGRlOCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsY29udGV4dF93Z2wuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvd2luMzIvZ3N0Z2xjb250ZXh0X3dnbC5oCkBAIC0yOCw4ICsyOCw4IEBACiAjZGVmaW5lIEdTVF9HTF9UWVBFX0NPTlRFWFRfV0dMICAgICAgICAgKGdzdF9nbF9jb250ZXh0X3dnbF9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9XR0wobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfV0dMLCBHc3RHTENvbnRleHRXR0wpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9XR0xfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1MoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX1dHTCwgR3N0R0xDb250ZXh0V0dMQ2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfQ09OVEVYVF9XR0wobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfV0dMKSkKLSNkZWZpbmUgR1NUX0dMX0lTX0NPTlRFWFRfV0dMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX1dHTCkpCisjZGVmaW5lIEdTVF9JU19HTF9DT05URVhUX1dHTChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9XR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfQ09OVEVYVF9XR0xfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX0NPTlRFWFRfV0dMKSkKICNkZWZpbmUgR1NUX0dMX0NPTlRFWFRfV0dMX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfV0dMLCBHc3RHTENvbnRleHRXR0xDbGFzcykpCiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTENvbnRleHRXR0wgICAgICAgIEdzdEdMQ29udGV4dFdHTDsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbHdpbmRvd193aW4zMi5jIGIvZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsd2luZG93X3dpbjMyLmMKaW5kZXggYTJlZDNlNi4uMWZmMThiYiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsd2luZG93X3dpbjMyLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsd2luZG93X3dpbjMyLmMKQEAgLTc0LDcgKzc0LDYgQEAKIAogICB3aW5kb3dfY2xhc3MtPnNldF93aW5kb3dfaGFuZGxlID0KICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X3dpbjMyX3NldF93aW5kb3dfaGFuZGxlKTsKLSAgd2luZG93X2NsYXNzLT5kcmF3X3VubG9ja2VkID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfd2luMzJfZHJhdyk7CiAgIHdpbmRvd19jbGFzcy0+ZHJhdyA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X3dpbjMyX2RyYXcpOwogICB3aW5kb3dfY2xhc3MtPmdldF9kaXNwbGF5ID0KICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X3dpbjMyX2dldF9kaXNwbGF5KTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbHdpbmRvd193aW4zMi5oIGIvZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsd2luZG93X3dpbjMyLmgKaW5kZXggMDgwYTRkNC4uYzE3YjQ5MiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsd2luZG93X3dpbjMyLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsd2luZG93X3dpbjMyLmgKQEAgLTMyLDggKzMyLDggQEAKICNkZWZpbmUgR1NUX0dMX1RZUEVfV0lORE9XX1dJTjMyICAgICAgICAgKGdzdF9nbF93aW5kb3dfd2luMzJfZ2V0X3R5cGUoKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19XSU4zMihvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX1dJTjMyLCBHc3RHTFdpbmRvd1dpbjMyKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19XSU4zMl9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTUygoayksIEdTVF9HTF9UWVBFX1dJTkRPV19XSU4zMiwgR3N0R0xXaW5kb3dXaW4zMkNsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19XSU4zMihvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX1dJTjMyKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19XSU4zMl9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX1dJTjMyKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dJTkRPV19XSU4zMihvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX1dJTjMyKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dJTkRPV19XSU4zMl9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX1dJTjMyKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19XSU4zMl9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfV0lOMzIsIEdzdEdMV2luZG93V2luMzJDbGFzcykpCiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFdpbmRvd1dpbjMyICAgICAgICBHc3RHTFdpbmRvd1dpbjMyOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9nbC94MTEvTWFrZWZpbGUuaW4KaW5kZXggYTkxOWNhNS4uZjNjODgzNSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvZ2wveDExL01ha2VmaWxlLmluCkBAIC0xMTgsMTYgKzExOCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobGliZ3N0Z2xfeDExaW5jbHVkZV9IRUFERVJTKSBcCkBAIC0yODEsNiArMjgwLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTgsNiArMzE5LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjYsNyArMzI5LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ1LDggKzM0Nyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjMsMTYgKzM2NiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTgsNiArNDAyLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIzLDYgKzQyOSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNCw2ICs1MzIsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM3LDggKzU0Niw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1NCw2ICs1NjEsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjExLDE2ICs2MjAsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzIsNiArNjgzLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4Miw2ICs2OTQsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTEsNiArNzA0LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyOCw3ICs3NDMsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2xjb250ZXh0X2dseC5oIGIvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbGNvbnRleHRfZ2x4LmgKaW5kZXggZTAxNTEwOC4uZjk1MjA0YSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbGNvbnRleHRfZ2x4LmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbGNvbnRleHRfZ2x4LmgKQEAgLTMwLDggKzMwLDggQEAKICNkZWZpbmUgR1NUX0dMX1RZUEVfQ09OVEVYVF9HTFggICAgICAgICAoZ3N0X2dsX2NvbnRleHRfZ2x4X2dldF90eXBlKCkpCiAjZGVmaW5lIEdTVF9HTF9DT05URVhUX0dMWChvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9HTFgsIEdzdEdMQ29udGV4dEdMWCkpCiAjZGVmaW5lIEdTVF9HTF9DT05URVhUX0dMWF9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTUygoayksIEdTVF9HTF9UWVBFX0NPTlRFWFRfR0xYLCBHc3RHTENvbnRleHRHTFhDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9JU19DT05URVhUX0dMWChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9HTFgpKQotI2RlZmluZSBHU1RfR0xfSVNfQ09OVEVYVF9HTFhfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX0NPTlRFWFRfR0xYKSkKKyNkZWZpbmUgR1NUX0lTX0dMX0NPTlRFWFRfR0xYKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUX0dMWCkpCisjZGVmaW5lIEdTVF9JU19HTF9DT05URVhUX0dMWF9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9HTFgpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9HTFhfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9HTFgsIEdzdEdMQ29udGV4dEdMWF9DbGFzcykpCiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTENvbnRleHRHTFggICAgICAgIEdzdEdMQ29udGV4dEdMWDsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2xkaXNwbGF5X3gxMS5jIGIvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbGRpc3BsYXlfeDExLmMKaW5kZXggZTYwODZiNy4uNjk2OTI5ZSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbGRpc3BsYXlfeDExLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbGRpc3BsYXlfeDExLmMKQEAgLTU1LDggKzU1LDcgQEAKIHsKICAgR3N0R0xEaXNwbGF5WDExICpkaXNwbGF5X3gxMSA9IEdTVF9HTF9ESVNQTEFZX1gxMSAob2JqZWN0KTsKIAotICBpZiAoZGlzcGxheV94MTEtPm5hbWUpCi0gICAgZ19mcmVlIChkaXNwbGF5X3gxMS0+bmFtZSk7CisgIGdfZnJlZSAoZGlzcGxheV94MTEtPm5hbWUpOwogCiAgIGlmICghZGlzcGxheV94MTEtPmZvcmVpZ25fZGlzcGxheSAmJiBkaXNwbGF5X3gxMS0+ZGlzcGxheSkgewogICAgIFhDbG9zZURpc3BsYXkgKGRpc3BsYXlfeDExLT5kaXNwbGF5KTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2x3aW5kb3dfeDExLmMgYi9nc3QtbGlicy9nc3QvZ2wveDExL2dzdGdsd2luZG93X3gxMS5jCmluZGV4IDI5YzJhZWEuLmEzMzA4MjUgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2x3aW5kb3dfeDExLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbHdpbmRvd194MTEuYwpAQCAtNzQsNyArNzQsNiBAQAogc3RhdGljIHZvaWQgZ3N0X2dsX3dpbmRvd194MTFfc2V0X3ByZWZlcnJlZF9zaXplIChHc3RHTFdpbmRvdyAqIHdpbmRvdywKICAgICBnaW50IHdpZHRoLCBnaW50IGhlaWdodCk7CiB2b2lkIGdzdF9nbF93aW5kb3dfeDExX3Nob3cgKEdzdEdMV2luZG93ICogd2luZG93KTsKLXZvaWQgZ3N0X2dsX3dpbmRvd194MTFfZHJhd191bmxvY2tlZCAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpOwogdm9pZCBnc3RfZ2xfd2luZG93X3gxMV9kcmF3IChHc3RHTFdpbmRvdyAqIHdpbmRvdyk7CiBnYm9vbGVhbiBnc3RfZ2xfd2luZG93X3gxMV9jcmVhdGVfY29udGV4dCAoR3N0R0xXaW5kb3cgKiB3aW5kb3csCiAgICAgR3N0R0xBUEkgZ2xfYXBpLCBndWludHB0ciBleHRlcm5hbF9nbF9jb250ZXh0LCBHRXJyb3IgKiogZXJyb3IpOwpAQCAtMTA0LDggKzEwMyw2IEBACiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd194MTFfc2V0X3dpbmRvd19oYW5kbGUpOwogICB3aW5kb3dfY2xhc3MtPmdldF93aW5kb3dfaGFuZGxlID0KICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X3gxMV9nZXRfd2luZG93X2hhbmRsZSk7Ci0gIHdpbmRvd19jbGFzcy0+ZHJhd191bmxvY2tlZCA9Ci0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd194MTFfZHJhd191bmxvY2tlZCk7CiAgIHdpbmRvd19jbGFzcy0+ZHJhdyA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X3gxMV9kcmF3KTsKICAgd2luZG93X2NsYXNzLT5vcGVuID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfeDExX29wZW4pOwogICB3aW5kb3dfY2xhc3MtPmNsb3NlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfeDExX2Nsb3NlKTsKQEAgLTM4NywzOSArMzg0LDEzIEBACiAgIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlICh3aW5kb3csIChHc3RHTFdpbmRvd0NCKSBfc2hvd193aW5kb3csIHdpbmRvdyk7CiB9CiAKLS8qIENhbGxlZCBpbiB0aGUgZ2wgdGhyZWFkICovCi12b2lkCi1nc3RfZ2xfd2luZG93X3gxMV9kcmF3X3VubG9ja2VkIChHc3RHTFdpbmRvdyAqIHdpbmRvdykKLXsKLSAgR3N0R0xXaW5kb3dYMTEgKndpbmRvd194MTEgPSBHU1RfR0xfV0lORE9XX1gxMSAod2luZG93KTsKLQotICBpZiAoZ3N0X2dsX3dpbmRvd19pc19ydW5uaW5nIChHU1RfR0xfV0lORE9XICh3aW5kb3dfeDExKSkKLSAgICAgICYmIHdpbmRvd194MTEtPmFsbG93X2V4dHJhX2V4cG9zZV9ldmVudHMpIHsKLSAgICBpZiAod2luZG93LT5xdWV1ZV9yZXNpemUpIHsKLSAgICAgIGd1aW50IHdpZHRoLCBoZWlnaHQ7Ci0KLSAgICAgIGdzdF9nbF93aW5kb3dfZ2V0X3N1cmZhY2VfZGltZW5zaW9ucyAod2luZG93LCAmd2lkdGgsICZoZWlnaHQpOwotICAgICAgZ3N0X2dsX3dpbmRvd19yZXNpemUgKHdpbmRvdywgd2lkdGgsIGhlaWdodCk7Ci0gICAgfQotCi0gICAgaWYgKHdpbmRvdy0+ZHJhdykgewotICAgICAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gZ3N0X2dsX3dpbmRvd19nZXRfY29udGV4dCAod2luZG93KTsKLSAgICAgIEdzdEdMQ29udGV4dENsYXNzICpjb250ZXh0X2NsYXNzID0gR1NUX0dMX0NPTlRFWFRfR0VUX0NMQVNTIChjb250ZXh0KTsKLQotICAgICAgd2luZG93LT5kcmF3ICh3aW5kb3ctPmRyYXdfZGF0YSk7Ci0gICAgICBjb250ZXh0X2NsYXNzLT5zd2FwX2J1ZmZlcnMgKGNvbnRleHQpOwotCi0gICAgICBnc3Rfb2JqZWN0X3VucmVmIChjb250ZXh0KTsKLSAgICB9Ci0gIH0KLX0KLQogc3RhdGljIHZvaWQKIGRyYXdfY2IgKGdwb2ludGVyIGRhdGEpCiB7CiAgIEdzdEdMV2luZG93WDExICp3aW5kb3dfeDExID0gZGF0YTsKKyAgR3N0R0xXaW5kb3cgKndpbmRvdyA9IEdTVF9HTF9XSU5ET1cgKHdpbmRvd194MTEpOwogCi0gIGlmIChnc3RfZ2xfd2luZG93X2lzX3J1bm5pbmcgKEdTVF9HTF9XSU5ET1cgKHdpbmRvd194MTEpKSkgeworICBpZiAoZ3N0X2dsX3dpbmRvd19pc19ydW5uaW5nICh3aW5kb3cpKSB7CiAgICAgWFdpbmRvd0F0dHJpYnV0ZXMgYXR0cjsKIAogICAgIFhHZXRXaW5kb3dBdHRyaWJ1dGVzICh3aW5kb3dfeDExLT5kZXZpY2UsIHdpbmRvd194MTEtPmludGVybmFsX3dpbl9pZCwKQEAgLTQ0Myw3ICs0MTQsMjQgQEAKICAgICAgIH0KICAgICB9CiAKLSAgICBnc3RfZ2xfd2luZG93X3gxMV9kcmF3X3VubG9ja2VkIChHU1RfR0xfV0lORE9XICh3aW5kb3dfeDExKSk7CisgICAgaWYgKHdpbmRvd194MTEtPmFsbG93X2V4dHJhX2V4cG9zZV9ldmVudHMpIHsKKyAgICAgIGlmICh3aW5kb3ctPnF1ZXVlX3Jlc2l6ZSkgeworICAgICAgICBndWludCB3aWR0aCwgaGVpZ2h0OworCisgICAgICAgIGdzdF9nbF93aW5kb3dfZ2V0X3N1cmZhY2VfZGltZW5zaW9ucyAod2luZG93LCAmd2lkdGgsICZoZWlnaHQpOworICAgICAgICBnc3RfZ2xfd2luZG93X3Jlc2l6ZSAod2luZG93LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgIH0KKworICAgICAgaWYgKHdpbmRvdy0+ZHJhdykgeworICAgICAgICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBnc3RfZ2xfd2luZG93X2dldF9jb250ZXh0ICh3aW5kb3cpOworICAgICAgICBHc3RHTENvbnRleHRDbGFzcyAqY29udGV4dF9jbGFzcyA9IEdTVF9HTF9DT05URVhUX0dFVF9DTEFTUyAoY29udGV4dCk7CisKKyAgICAgICAgd2luZG93LT5kcmF3ICh3aW5kb3ctPmRyYXdfZGF0YSk7CisgICAgICAgIGNvbnRleHRfY2xhc3MtPnN3YXBfYnVmZmVycyAoY29udGV4dCk7CisKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAoY29udGV4dCk7CisgICAgICB9CisgICAgfQogICB9CiB9CiAKQEAgLTUxMiw3ICs1MDAsOCBAQAogICAgIGlmIChoYW5kbGVfZXZlbnRzKSB7CiAgICAgICBYU2VsZWN0SW5wdXQgKHdpbmRvd194MTEtPmRldmljZSwgd2luZG93X3gxMS0+aW50ZXJuYWxfd2luX2lkLAogICAgICAgICAgIFN0cnVjdHVyZU5vdGlmeU1hc2sgfCBFeHBvc3VyZU1hc2sgfCBWaXNpYmlsaXR5Q2hhbmdlTWFzayB8Ci0gICAgICAgICAgUG9pbnRlck1vdGlvbk1hc2sgfCBLZXlQcmVzc01hc2sgfCBLZXlSZWxlYXNlTWFzayk7CisgICAgICAgICAgUG9pbnRlck1vdGlvbk1hc2sgfCBLZXlQcmVzc01hc2sgfCBLZXlSZWxlYXNlTWFzayB8IEJ1dHRvblByZXNzTWFzayB8CisgICAgICAgICAgQnV0dG9uUmVsZWFzZU1hc2spOwogICAgIH0gZWxzZSB7CiAgICAgICBYU2VsZWN0SW5wdXQgKHdpbmRvd194MTEtPmRldmljZSwgd2luZG93X3gxMS0+aW50ZXJuYWxfd2luX2lkLAogICAgICAgICAgIFN0cnVjdHVyZU5vdGlmeU1hc2sgfCBFeHBvc3VyZU1hc2sgfCBWaXNpYmlsaXR5Q2hhbmdlTWFzayk7CkBAIC01MjcsMTAgKzUxNiw2IEBACiAgIEdzdEdMQ29udGV4dENsYXNzICpjb250ZXh0X2NsYXNzOwogICBHc3RHTFdpbmRvdyAqd2luZG93OwogICBnYm9vbGVhbiByZXQgPSBUUlVFOwotICBjb25zdCBjaGFyICprZXlfc3RyID0gTlVMTDsKLSAgS2V5U3ltIGtleXN5bTsKLSAgc3RydWN0IG1vdXNlX2V2ZW50ICptb3VzZV9kYXRhOwotICBzdHJ1Y3Qga2V5X2V2ZW50ICprZXlfZGF0YTsKIAogICB3aW5kb3cgPSBHU1RfR0xfV0lORE9XICh3aW5kb3dfeDExKTsKIApAQCAtNjAzLDQ3ICs1ODgsMzkgQEAKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEtleVByZXNzOgogICAgICAgY2FzZSBLZXlSZWxlYXNlOgorICAgICAgeworICAgICAgICBjb25zdCBjaGFyICprZXlfc3RyID0gTlVMTCwgKmtleV90eXBlID0gTlVMTDsKKyAgICAgICAgS2V5U3ltIGtleXN5bTsKKwogICAgICAgICBrZXlzeW0gPSBYa2JLZXljb2RlVG9LZXlzeW0gKHdpbmRvd194MTEtPmRldmljZSwKICAgICAgICAgICAgIGV2ZW50LnhrZXkua2V5Y29kZSwgMCwgMCk7CiAgICAgICAgIGtleV9zdHIgPSBYS2V5c3ltVG9TdHJpbmcgKGtleXN5bSk7Ci0gICAgICAgIGtleV9kYXRhID0gZ19zbGljZV9uZXcgKHN0cnVjdCBrZXlfZXZlbnQpOwotICAgICAgICBrZXlfZGF0YS0+d2luZG93ID0gd2luZG93OwotICAgICAgICBrZXlfZGF0YS0+a2V5X3N0ciA9IFhLZXlzeW1Ub1N0cmluZyAoa2V5c3ltKTsKLSAgICAgICAga2V5X2RhdGEtPmV2ZW50X3R5cGUgPQotICAgICAgICAgICAgZXZlbnQudHlwZSA9PSBLZXlQcmVzcyA/ICJrZXktcHJlc3MiIDogImtleS1yZWxlYXNlIjsKLSAgICAgICAgR1NUX0RFQlVHICgiaW5wdXQgZXZlbnQga2V5ICVkIHByZXNzZWQgb3ZlciB3aW5kb3cgYXQgJWQsJWQgKCVzKSIsCi0gICAgICAgICAgICBldmVudC54a2V5LmtleWNvZGUsIGV2ZW50LnhrZXkueCwgZXZlbnQueGtleS55LCBrZXlfc3RyKTsKLSAgICAgICAgZ19tYWluX2NvbnRleHRfaW52b2tlICh3aW5kb3ctPm5hdmlnYXRpb25fY29udGV4dCwKLSAgICAgICAgICAgIChHU291cmNlRnVuYykgZ3N0X2dsX3dpbmRvd19rZXlfZXZlbnRfY2IsIGtleV9kYXRhKTsKKyAgICAgICAga2V5X3R5cGUgPSBldmVudC50eXBlID09IEtleVByZXNzID8gImtleS1wcmVzcyIgOiAia2V5LXJlbGVhc2UiOworICAgICAgICBHU1RfREVCVUcgKCJpbnB1dCBldmVudCBrZXkgJWQgJXMgb3ZlciB3aW5kb3cgYXQgJWQsJWQgKCVzKSIsCisgICAgICAgICAgICBldmVudC54a2V5LmtleWNvZGUsIGtleV90eXBlLCBldmVudC54a2V5LngsIGV2ZW50LnhrZXkueSwga2V5X3N0cik7CisgICAgICAgIGdzdF9nbF93aW5kb3dfc2VuZF9rZXlfZXZlbnRfYXN5bmMgKHdpbmRvdywga2V5X3R5cGUsIGtleV9zdHIpOwogICAgICAgICBicmVhazsKKyAgICAgIH0KICAgICAgIGNhc2UgQnV0dG9uUHJlc3M6Ci0gICAgICBjYXNlIEJ1dHRvblJlbGVhc2U6Ci0gICAgICAgIEdTVF9ERUJVRyAoImlucHV0IGV2ZW50IG1vdXNlIGJ1dHRvbiAlZCBwcmVzc2VkIG92ZXIgd2luZG93IGF0ICVkLCVkIiwKLSAgICAgICAgICAgIGV2ZW50LnhidXR0b24uYnV0dG9uLCBldmVudC54YnV0dG9uLngsIGV2ZW50LnhidXR0b24ueSk7Ci0gICAgICAgIG1vdXNlX2RhdGEgPSBnX3NsaWNlX25ldyAoc3RydWN0IG1vdXNlX2V2ZW50KTsKLSAgICAgICAgbW91c2VfZGF0YS0+d2luZG93ID0gd2luZG93OwotICAgICAgICBtb3VzZV9kYXRhLT5ldmVudF90eXBlID0KLSAgICAgICAgICAgIGV2ZW50LnR5cGUgPT0KLSAgICAgICAgICAgIEJ1dHRvblByZXNzID8gIm1vdXNlLWJ1dHRvbi1wcmVzcyIgOiAibW91c2UtYnV0dG9uLXJlbGVhc2UiOwotICAgICAgICBtb3VzZV9kYXRhLT5idXR0b24gPSBldmVudC54YnV0dG9uLmJ1dHRvbjsKLSAgICAgICAgbW91c2VfZGF0YS0+cG9zeCA9IChkb3VibGUpIGV2ZW50LnhidXR0b24ueDsKLSAgICAgICAgbW91c2VfZGF0YS0+cG9zeSA9IChkb3VibGUpIGV2ZW50LnhidXR0b24ueTsKKyAgICAgIGNhc2UgQnV0dG9uUmVsZWFzZTp7CisgICAgICAgIGNvbnN0IGNoYXIgKm1vdXNlX3R5cGUgPSBOVUxMOwogCi0gICAgICAgIGdfbWFpbl9jb250ZXh0X2ludm9rZSAod2luZG93LT5uYXZpZ2F0aW9uX2NvbnRleHQsCi0gICAgICAgICAgICAoR1NvdXJjZUZ1bmMpIGdzdF9nbF93aW5kb3dfbW91c2VfZXZlbnRfY2IsIG1vdXNlX2RhdGEpOworICAgICAgICBtb3VzZV90eXBlID0gZXZlbnQudHlwZSA9PQorICAgICAgICAgICAgQnV0dG9uUHJlc3MgPyAibW91c2UtYnV0dG9uLXByZXNzIiA6ICJtb3VzZS1idXR0b24tcmVsZWFzZSI7CisKKyAgICAgICAgR1NUX0RFQlVHICgiaW5wdXQgZXZlbnQgbW91c2UgYnV0dG9uICVkICVzIG92ZXIgd2luZG93IGF0ICVkLCVkIiwKKyAgICAgICAgICAgIGV2ZW50LnhidXR0b24uYnV0dG9uLCBtb3VzZV90eXBlLCBldmVudC54YnV0dG9uLngsIGV2ZW50LnhidXR0b24ueSk7CisKKyAgICAgICAgZ3N0X2dsX3dpbmRvd19zZW5kX21vdXNlX2V2ZW50X2FzeW5jICh3aW5kb3csIG1vdXNlX3R5cGUsCisgICAgICAgICAgICBldmVudC54YnV0dG9uLmJ1dHRvbiwgZXZlbnQueGJ1dHRvbi54LCBldmVudC54YnV0dG9uLnkpOwogICAgICAgICBicmVhazsKKyAgICAgIH0KICAgICAgIGNhc2UgTW90aW9uTm90aWZ5OgogICAgICAgICBHU1RfREVCVUcgKCJpbnB1dCBldmVudCBwb2ludGVyIG1vdmVkIG92ZXIgd2luZG93IGF0ICVkLCVkIiwKICAgICAgICAgICAgIGV2ZW50Lnhtb3Rpb24ueCwgZXZlbnQueG1vdGlvbi55KTsKLSAgICAgICAgbW91c2VfZGF0YSA9IGdfc2xpY2VfbmV3IChzdHJ1Y3QgbW91c2VfZXZlbnQpOwotICAgICAgICBtb3VzZV9kYXRhLT53aW5kb3cgPSB3aW5kb3c7Ci0gICAgICAgIG1vdXNlX2RhdGEtPmV2ZW50X3R5cGUgPSAibW91c2UtbW92ZSI7Ci0gICAgICAgIG1vdXNlX2RhdGEtPmJ1dHRvbiA9IDA7Ci0gICAgICAgIG1vdXNlX2RhdGEtPnBvc3ggPSAoZG91YmxlKSBldmVudC54YnV0dG9uLng7Ci0gICAgICAgIG1vdXNlX2RhdGEtPnBvc3kgPSAoZG91YmxlKSBldmVudC54YnV0dG9uLnk7CiAKLSAgICAgICAgZ19tYWluX2NvbnRleHRfaW52b2tlICh3aW5kb3ctPm5hdmlnYXRpb25fY29udGV4dCwgKEdTb3VyY2VGdW5jKQotICAgICAgICAgICAgZ3N0X2dsX3dpbmRvd19tb3VzZV9ldmVudF9jYiwgbW91c2VfZGF0YSk7CisgICAgICAgIGdzdF9nbF93aW5kb3dfc2VuZF9tb3VzZV9ldmVudF9hc3luYyAod2luZG93LCAibW91c2UtbW92ZSIsIDAsCisgICAgICAgICAgICBldmVudC54YnV0dG9uLngsIGV2ZW50LnhidXR0b24ueSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKICAgICAgICAgR1NUX0RFQlVHICgidW5rbm93biBYRXZlbnQgdHlwZTogJXUiLCBldmVudC50eXBlKTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2x3aW5kb3dfeDExLmggYi9nc3QtbGlicy9nc3QvZ2wveDExL2dzdGdsd2luZG93X3gxMS5oCmluZGV4IGMxNmE2MzcuLmI0YTRiMTcgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2x3aW5kb3dfeDExLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbHdpbmRvd194MTEuaApAQCAtMzEsOCArMzEsOCBAQAogI2RlZmluZSBHU1RfR0xfVFlQRV9XSU5ET1dfWDExICAgICAgICAgKGdzdF9nbF93aW5kb3dfeDExX2dldF90eXBlKCkpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfWDExKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfWDExLCBHc3RHTFdpbmRvd1gxMSkpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfWDExX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX1gxMSwgR3N0R0xXaW5kb3dYMTFDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9JU19XSU5ET1dfWDExKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfWDExKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19YMTFfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX1dJTkRPV19YMTEpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XX1gxMShvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX1gxMSkpCisjZGVmaW5lIEdTVF9JU19HTF9XSU5ET1dfWDExX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfWDExKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19YMTFfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX1gxMSwgR3N0R0xXaW5kb3dYMTFDbGFzcykpCiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFdpbmRvd1gxMSAgICAgICAgR3N0R0xXaW5kb3dYMTE7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2xpYi1jb21wYXQtcHJpdmF0ZS5oIGIvZ3N0LWxpYnMvZ3N0L2dsaWItY29tcGF0LXByaXZhdGUuaAppbmRleCBjOTZjMDA1Li4xYTRhYTdkIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2xpYi1jb21wYXQtcHJpdmF0ZS5oCisrKyBiL2dzdC1saWJzL2dzdC9nbGliLWNvbXBhdC1wcml2YXRlLmgKQEAgLTI3LDExNCArMjcsNiBAQAogCiBHX0JFR0lOX0RFQ0xTCiAKLSNpZiAhR0xJQl9DSEVDS19WRVJTSU9OKDIsMjUsMCkKLQotI2lmIGRlZmluZWQgKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChfV0lONjQpCi10eXBlZGVmIHN0cnVjdCBfc3RhdDMyIEdTdGF0QnVmOwotI2Vsc2UKLXR5cGVkZWYgc3RydWN0IHN0YXQgR1N0YXRCdWY7Ci0jZW5kaWYKLQotI2VuZGlmCi0KLSNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwyNiwwKQotI2RlZmluZSBHTElCX0hBU19HREFURVRJTUUKLSNlbmRpZgotCi0vKiBTZWUgYnVnICM2NTE1MTQgKi8KLSNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwyOSw1KQotI2RlZmluZSBHX0FUT01JQ19QT0lOVEVSX0NPTVBBUkVfQU5EX0VYQ0hBTkdFKGEsYixjKSBcCi0gICAgZ19hdG9taWNfcG9pbnRlcl9jb21wYXJlX2FuZF9leGNoYW5nZSAoKGEpLChiKSwoYykpCi0jZGVmaW5lIEdfQVRPTUlDX0lOVF9DT01QQVJFX0FORF9FWENIQU5HRShhLGIsYykgXAotICAgIGdfYXRvbWljX2ludF9jb21wYXJlX2FuZF9leGNoYW5nZSAoKGEpLChiKSwoYykpCi0jZWxzZQotI2RlZmluZSBHX0FUT01JQ19QT0lOVEVSX0NPTVBBUkVfQU5EX0VYQ0hBTkdFKGEsYixjKSBcCi0gICAgZ19hdG9taWNfcG9pbnRlcl9jb21wYXJlX2FuZF9leGNoYW5nZSAoKHZvbGF0aWxlIGdwb2ludGVyICopKGEpLChiKSwoYykpCi0jZGVmaW5lIEdfQVRPTUlDX0lOVF9DT01QQVJFX0FORF9FWENIQU5HRShhLGIsYykgXAotICAgIGdfYXRvbWljX2ludF9jb21wYXJlX2FuZF9leGNoYW5nZSAoKHZvbGF0aWxlIGludCAqKShhKSwoYiksKGMpKQotI2VuZGlmCi0KLS8qIFNlZSBidWcgIzY1MTUxNCAqLwotI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLDI5LDUpCi0jZGVmaW5lIEdfQVRPTUlDX0lOVF9BREQoYSxiKSBnX2F0b21pY19pbnRfYWRkICgoYSksKGIpKQotI2Vsc2UKLSNkZWZpbmUgR19BVE9NSUNfSU5UX0FERChhLGIpIGdfYXRvbWljX2ludF9leGNoYW5nZV9hbmRfYWRkICgoYSksKGIpKQotI2VuZGlmCi0KLS8qIGNvcGllcyAqLwotCi0jaWYgR0xJQl9DSEVDS19WRVJTSU9OICgyLCAzMSwgMCkKLSNkZWZpbmUgZ19tdXRleF9uZXcgZ3N0X2dfbXV0ZXhfbmV3Ci1zdGF0aWMgaW5saW5lIEdNdXRleCAqCi1nc3RfZ19tdXRleF9uZXcgKHZvaWQpCi17Ci0gIEdNdXRleCAqbXV0ZXggPSBnX3NsaWNlX25ldyAoR011dGV4KTsKLSAgZ19tdXRleF9pbml0IChtdXRleCk7Ci0gIHJldHVybiBtdXRleDsKLX0KLSNkZWZpbmUgZ19tdXRleF9mcmVlIGdzdF9nX211dGV4X2ZyZWUKLXN0YXRpYyBpbmxpbmUgdm9pZAotZ3N0X2dfbXV0ZXhfZnJlZSAoR011dGV4ICptdXRleCkKLXsKLSAgZ19tdXRleF9jbGVhciAobXV0ZXgpOwotICBnX3NsaWNlX2ZyZWUgKEdNdXRleCwgbXV0ZXgpOwotfQotI2RlZmluZSBnX2NvbmRfbmV3IGdzdF9nX2NvbmRfbmV3Ci1zdGF0aWMgaW5saW5lIEdDb25kICoKLWdzdF9nX2NvbmRfbmV3ICh2b2lkKQotewotICBHQ29uZCAqY29uZCA9IGdfc2xpY2VfbmV3IChHQ29uZCk7Ci0gIGdfY29uZF9pbml0IChjb25kKTsKLSAgcmV0dXJuIGNvbmQ7Ci19Ci0jZGVmaW5lIGdfY29uZF9mcmVlIGdzdF9nX2NvbmRfZnJlZQotc3RhdGljIGlubGluZSB2b2lkCi1nc3RfZ19jb25kX2ZyZWUgKEdDb25kICpjb25kKQotewotICBnX2NvbmRfY2xlYXIgKGNvbmQpOwotICBnX3NsaWNlX2ZyZWUgKEdDb25kLCBjb25kKTsKLX0KLSNkZWZpbmUgZ19jb25kX3RpbWVkX3dhaXQgZ3N0X2dfY29uZF90aW1lZF93YWl0Ci1zdGF0aWMgaW5saW5lIGdib29sZWFuCi1nc3RfZ19jb25kX3RpbWVkX3dhaXQgKEdDb25kICpjb25kLCBHTXV0ZXggKm11dGV4LCBHVGltZVZhbCAqYWJzX3RpbWUpCi17Ci0gIGdpbnQ2NCBlbmRfdGltZTsKLQotICBpZiAoYWJzX3RpbWUgPT0gTlVMTCkgewotICAgIGdfY29uZF93YWl0IChjb25kLCBtdXRleCk7Ci0gICAgcmV0dXJuIFRSVUU7Ci0gIH0KLQotICBlbmRfdGltZSA9IGFic190aW1lLT50dl9zZWM7Ci0gIGVuZF90aW1lICo9IDEwMDAwMDA7Ci0gIGVuZF90aW1lICs9IGFic190aW1lLT50dl91c2VjOwotCi0gIC8qIHdvdWxkIGJlIG5pY2UgaWYgd2UgaGFkIGNsb2NrX3J0b2Zmc2V0LCBidXQgdGhhdCBkaWRuJ3Qgc2VlbSB0bwotICAgKiBtYWtlIGl0IGludG8gdGhlIGtlcm5lbCB5ZXQuLi4KLSAgICovCi0gIC8qIGlmIENMT0NLX01PTk9UT05JQyBpcyBub3QgZGVmaW5lZCB0aGVuIGdfZ2V0X21vbnRvbmljX3RpbWUoKSBhbmQKLSAgICogZ19nZXRfcmVhbF90aW1lKCkgYXJlIHJldHVybmluZyB0aGUgc2FtZSBjbG9jayBhbmQgd2UnZCBhZGQgfjAKLSAgICovCi0gIGVuZF90aW1lICs9IGdfZ2V0X21vbm90b25pY190aW1lICgpIC0gZ19nZXRfcmVhbF90aW1lICgpOwotICByZXR1cm4gZ19jb25kX3dhaXRfdW50aWwgKGNvbmQsIG11dGV4LCBlbmRfdGltZSk7Ci19Ci0jZW5kaWYgLyogR0xJQl9DSEVDS19WRVJTSU9OICgyLCAzMSwgMCkgKi8KLQotI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTiAoMiwgMzEsIDApCi0jZGVmaW5lIGdfdGhyZWFkX2NyZWF0ZSBnc3RfZ190aHJlYWRfY3JlYXRlCi1zdGF0aWMgaW5saW5lIEdUaHJlYWQgKgotZ3N0X2dfdGhyZWFkX2NyZWF0ZSAoR1RocmVhZEZ1bmMgZnVuYywgZ3BvaW50ZXIgZGF0YSwgZ2Jvb2xlYW4gam9pbmFibGUsCi0gICAgR0Vycm9yICoqZXJyb3IpCi17Ci0gIEdUaHJlYWQgKnRocmVhZCA9IGdfdGhyZWFkX3RyeV9uZXcgKCJnc3QtY2hlY2siLCBmdW5jLCBkYXRhLCBlcnJvcik7Ci0gIGlmICgham9pbmFibGUpCi0gICAgZ190aHJlYWRfdW5yZWYgKHRocmVhZCk7Ci0gIHJldHVybiB0aHJlYWQ7Ci19Ci0jZW5kaWYgLyogR0xJQl9DSEVDS19WRVJTSU9OICgyLCAzMSwgMCkgKi8KLQotLyogYWRhcHRhdGlvbnMgKi8KLQogR19FTkRfREVDTFMKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbQppbmRleCAwOWViOTdjLi44MzY4ZjQxIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtCisrKyBiL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KQEAgLTMzLDcgKzMzLDggQEAKIAkJR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzA9IiIgR1NUX1BMVUdJTl9QQVRIXzFfMD0iIiBHU1RfUkVHSVNUUllfVVBEQVRFPW5vIFwKIAkJJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIC12IC0tbmFtZXNwYWNlIEdzdEluc2VydEJpbiBcCiAJCS0tbnN2ZXJzaW9uPUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkJLS1zdHJpcC1wcmVmaXg9R3N0IFwKKwkJLS1pZGVudGlmaWVyLXByZWZpeD1Hc3QgXAorCQktLXN5bWJvbC1wcmVmaXg9Z3N0IFwKIAkJLS13YXJuLWFsbCBcCiAJCS0tYy1pbmNsdWRlICJnc3QvaW5zZXJ0YmluL2dzdGluc2VydGJpbi5oIiBcCiAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCkBAIC00Nyw3ICs0OCw3IEBACiAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCiAJCS0tcGtnIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1pbnNlcnRiaW4tQEdTVF9BUElfVkVSU0lPTkAgXAotCQktLWFkZC1pbml0LXNlY3Rpb249ImdzdF9pbml0KE5VTEwsTlVMTCk7IiBcCisJCS0tYWRkLWluaXQtc2VjdGlvbj0iJChJTlRST1NQRUNUSU9OX0lOSVQpIiBcCiAJCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAogCQktLW91dHB1dCAkQCBcCiAJCSQoZ2lyX2hlYWRlcnMpIFwKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmluCmluZGV4IDJjYTQ4YzguLjUwY2Y3M2YgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5pbgpAQCAtMTE3LDE2ICsxMTcsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSBcCkBAIC0yNjQsNiArMjYzLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMDEsNiArMzAyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMDksNyArMzEyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzI4LDggKzMzMCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNDYsMTYgKzM0OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zODEsNiArMzg1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDA2LDYgKzQxMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUwNyw2ICs1MTUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTIwLDggKzUyOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUzNyw2ICs1NDQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTk0LDE2ICs2MDMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NTUsNiArNjY2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY2NSw2ICs2NzcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NzQsNiArNjg3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcxMSw3ICs3MjYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTExNDMsNyArMTE1Nyw4IEBACiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQlHU1RfUExVR0lOX1NZU1RFTV9QQVRIXzFfMD0iIiBHU1RfUExVR0lOX1BBVEhfMV8wPSIiIEdTVF9SRUdJU1RSWV9VUERBVEU9bm8gXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIC12IC0tbmFtZXNwYWNlIEdzdEluc2VydEJpbiBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLW5zdmVyc2lvbj1AR1NUX0FQSV9WRVJTSU9OQCBcCi1ASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXN0cmlwLXByZWZpeD1Hc3QgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1pZGVudGlmaWVyLXByZWZpeD1Hc3QgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1zeW1ib2wtcHJlZml4PWdzdCBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXdhcm4tYWxsIFwKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tYy1pbmNsdWRlICJnc3QvaW5zZXJ0YmluL2dzdGluc2VydGJpbi5oIiBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXApAQCAtMTE1Nyw3ICsxMTcyLDcgQEAKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLWluc2VydGJpbi1AR1NUX0FQSV9WRVJTSU9OQCBcCi1ASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLWFkZC1pbml0LXNlY3Rpb249ImdzdF9pbml0KE5VTEwsTlVMTCk7IiBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLWFkZC1pbml0LXNlY3Rpb249IiQoSU5UUk9TUEVDVElPTl9JTklUKSIgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLW91dHB1dCAkQCBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQkkKGdpcl9oZWFkZXJzKSBcCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL2dzdGluc2VydGJpbi5oIGIvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9nc3RpbnNlcnRiaW4uaAppbmRleCAwNTFhMTdhLi41ODMyNmY0IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL2dzdGluc2VydGJpbi5oCisrKyBiL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vZ3N0aW5zZXJ0YmluLmgKQEAgLTEwMiw1ICsxMDIsOSBAQAogICAgIEdzdEluc2VydEJpbkNhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyX2RhdGEpOwogCiAKKyNpZmRlZiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQworR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR3N0SW5zZXJ0QmluLCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKIEdfRU5EX0RFQ0xTCiAjZW5kaWYgLyogX19HU1RfSU5TRVJUX0JJTl9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzL01ha2VmaWxlLmluIGIvZ3N0LWxpYnMvZ3N0L2ludGVyZmFjZXMvTWFrZWZpbGUuaW4KaW5kZXggNjJjMDM5Ny4uNGYyNzNkNiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2ludGVyZmFjZXMvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L2ludGVyZmFjZXMvTWFrZWZpbGUuaW4KQEAgLTEyNCwxNiArMTI0LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gXApAQCAtMjk0LDYgKzI5Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzMxLDYgKzMzMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzM5LDcgKzM0Miw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM1OCw4ICszNjAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzc2LDE2ICszNzksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDExLDYgKzQxNSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQzNiw2ICs0NDIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MzcsNiArNTQ1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU1MCw4ICs1NTksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NjcsNiArNTc0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYyNCwxNiArNjMzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjg1LDYgKzY5Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02OTUsNiArNzA3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzA0LDYgKzcxNyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03NDEsNyArNzU2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvaW50ZXJmYWNlcy9waG90b2dyYXBoeS5jIGIvZ3N0LWxpYnMvZ3N0L2ludGVyZmFjZXMvcGhvdG9ncmFwaHkuYwppbmRleCA1NDgxMDM3Li4xNzk5YzUyIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvaW50ZXJmYWNlcy9waG90b2dyYXBoeS5jCisrKyBiL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzL3Bob3RvZ3JhcGh5LmMKQEAgLTI5OSw4ICsyOTksNiBAQAogICogU2V0IHRoZSBub2lzZSByZWR1Y3Rpb24gbW9kZSBmb3IgdGhlICNHc3RFbGVtZW50CiAgKgogICogUmV0dXJuczogJVRSVUUgaWYgc2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCAlRkFMU0Ugb3RoZXJ3aXNlCi0gKgotICogU2luY2U6IDAuMTAuMjEKICAqLwogLyoqCiAgKiBnc3RfcGhvdG9ncmFwaHlfZ2V0X25vaXNlX3JlZHVjdGlvbjoKQEAgLTMxMCw4ICszMDgsNiBAQAogICogR2V0IHRoZSBub2lzZSByZWR1Y3Rpb24gbW9kZSBmb3IgdGhlICNHc3RFbGVtZW50CiAgKgogICogUmV0dXJuczogJVRSVUUgaWYgZ2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCAlRkFMU0Ugb3RoZXJ3aXNlCi0gKgotICogU2luY2U6IDAuMTAuMjEKICAqLwogR1NUX1BIT1RPR1JBUEhZX0ZVTkNfVEVNUExBVEUgKG5vaXNlX3JlZHVjdGlvbiwgR3N0UGhvdG9ncmFwaHlOb2lzZVJlZHVjdGlvbik7CiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzL3Bob3RvZ3JhcGh5LmggYi9nc3QtbGlicy9nc3QvaW50ZXJmYWNlcy9waG90b2dyYXBoeS5oCmluZGV4IGU2NWMwZDkuLjhjNDQ5NjYgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzL3Bob3RvZ3JhcGh5LmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2ludGVyZmFjZXMvcGhvdG9ncmFwaHkuaApAQCAtMTU5LDggKzE1OSw2IEBACiAgKiByZW1haW5pbmcgbm9pc2UuCiAgKgogICogTm9pc2UgUmVkdWN0aW9uIGZlYXR1cmVzIG9mIGEgcGhvdG9ncmFwaHkgY2FwdHVyZSBvciBmaWx0ZXIgZWxlbWVudC4KLSAqCi0gKiBTaW5jZTogMC4xMC4yMQogICovCiB0eXBlZGVmIGVudW0KIHsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCmluZGV4IDI1MTFkNDkuLmNkOGI4YWQgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuYW0KKysrIGIvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbQpAQCAtODIsNyArODIsNyBAQAogCQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAogCQktLXBrZyBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAogCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLW1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JCS0tYWRkLWluaXQtc2VjdGlvbj0iZ3N0X2luaXQoTlVMTCxOVUxMKTsiIFwKKwkJLS1hZGQtaW5pdC1zZWN0aW9uPSIkKElOVFJPU1BFQ1RJT05fSU5JVCkiIFwKIAkJLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCiAJCS0tb3V0cHV0ICRAIFwKIAkJJChnaXJfaGVhZGVycykgXApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuaW4KaW5kZXggY2JkNDg0OC4uM2QxNDI0NyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmluCkBAIC0xMjYsMTYgKzEyNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtIFwKQEAgLTMwMiw2ICszMDEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMzOSw2ICszNDAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTM0Nyw3ICszNTAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNjYsOCArMzY4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM4NCwxNiArMzg3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQxOSw2ICs0MjMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00NDQsNiArNDUwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTQ1LDYgKzU1Myw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NTgsOCArNTY3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTc1LDYgKzU4Miw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MzIsMTYgKzY0MSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY5Myw2ICs3MDQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNzAzLDYgKzcxNSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcxMiw2ICs3MjUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzQ5LDcgKzc2NCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtMTM0Nyw3ICsxMzYxLDcgQEAKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXBrZyBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1tcGVndHMtQEdTVF9BUElfVkVSU0lPTkAgXAotQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1hZGQtaW5pdC1zZWN0aW9uPSJnc3RfaW5pdChOVUxMLE5VTEwpOyIgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1hZGQtaW5pdC1zZWN0aW9uPSIkKElOVFJPU1BFQ1RJT05fSU5JVCkiIFwKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1vdXRwdXQgJEAgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJJChnaXJfaGVhZGVycykgXApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L21wZWd0cy9nc3RtcGVndHNkZXNjcmlwdG9yLmMgYi9nc3QtbGlicy9nc3QvbXBlZ3RzL2dzdG1wZWd0c2Rlc2NyaXB0b3IuYwppbmRleCBkYTg0MTljLi5kNDgxN2QyIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvbXBlZ3RzL2dzdG1wZWd0c2Rlc2NyaXB0b3IuYworKysgYi9nc3QtbGlicy9nc3QvbXBlZ3RzL2dzdG1wZWd0c2Rlc2NyaXB0b3IuYwpAQCAtNjM1LDcgKzYzNSw2IEBACiBfcGFja2V0aXplX2Rlc2NyaXB0b3JfYXJyYXkgKEdQdHJBcnJheSAqIGFycmF5LCBndWludDggKiogb3V0X2RhdGEpCiB7CiAgIGd1aW50IGk7Ci0gIGd1aW50OCBoZWFkZXJfc2l6ZTsKICAgR3N0TXBlZ3RzRGVzY3JpcHRvciAqZGVzY3JpcHRvcjsKIAogICBnX3JldHVybl9pZl9mYWlsIChvdXRfZGF0YSAhPSBOVUxMKTsKQEAgLTY0NywxMyArNjQ2LDggQEAKICAgZm9yIChpID0gMDsgaSA8IGFycmF5LT5sZW47IGkrKykgewogICAgIGRlc2NyaXB0b3IgPSBnX3B0cl9hcnJheV9pbmRleCAoYXJyYXksIGkpOwogCi0gICAgaWYgKGRlc2NyaXB0b3ItPnRhZyA9PSBHU1RfTVRTX0RFU0NfRFZCX0VYVEVOU0lPTikKLSAgICAgIGhlYWRlcl9zaXplID0gMzsKLSAgICBlbHNlCi0gICAgICBoZWFkZXJfc2l6ZSA9IDI7Ci0KLSAgICBtZW1jcHkgKCpvdXRfZGF0YSwgZGVzY3JpcHRvci0+ZGF0YSwgZGVzY3JpcHRvci0+bGVuZ3RoICsgaGVhZGVyX3NpemUpOwotICAgICpvdXRfZGF0YSArPSBkZXNjcmlwdG9yLT5sZW5ndGggKyBoZWFkZXJfc2l6ZTsKKyAgICBtZW1jcHkgKCpvdXRfZGF0YSwgZGVzY3JpcHRvci0+ZGF0YSwgZGVzY3JpcHRvci0+bGVuZ3RoICsgMik7CisgICAgKm91dF9kYXRhICs9IGRlc2NyaXB0b3ItPmxlbmd0aCArIDI7CiAgIH0KIH0KIApAQCAtNjg5LDE1ICs2ODMsMTUgQEAKIAogICBkZXNjcmlwdG9yLT50YWcgPSB0YWc7CiAgIGRlc2NyaXB0b3ItPnRhZ19leHRlbnNpb24gPSB0YWdfZXh0ZW5zaW9uOwotICBkZXNjcmlwdG9yLT5sZW5ndGggPSBsZW5ndGg7CisgIGRlc2NyaXB0b3ItPmxlbmd0aCA9IGxlbmd0aCArIDE7CiAKICAgZGVzY3JpcHRvci0+ZGF0YSA9IGdfbWFsbG9jIChsZW5ndGggKyAzKTsKIAogICBkYXRhID0gZGVzY3JpcHRvci0+ZGF0YTsKIAogICAqZGF0YSsrID0gZGVzY3JpcHRvci0+dGFnOwotICAqZGF0YSsrID0gZGVzY3JpcHRvci0+dGFnX2V4dGVuc2lvbjsKLSAgKmRhdGEgPSBkZXNjcmlwdG9yLT5sZW5ndGg7CisgICpkYXRhKysgPSBkZXNjcmlwdG9yLT5sZW5ndGg7CisgICpkYXRhID0gZGVzY3JpcHRvci0+dGFnX2V4dGVuc2lvbjsKIAogICByZXR1cm4gZGVzY3JpcHRvcjsKIH0KQEAgLTExMDUsMyArMTA5OSwyOCBAQAogCiAgIHJldHVybiBkZXNjcmlwdG9yOwogfQorCisvKioKKyAqIGdzdF9tcGVndHNfZGVzY3JpcHRvcl9mcm9tX2N1c3RvbV93aXRoX2V4dGVuc2lvbjoKKyAqIEB0YWc6IGRlc2NyaXB0b3IgdGFnCisgKiBAdGFnX2V4dGVuc2lvbjogZGVzY3JpcHRvciB0YWcgZXh0ZW5zaW9uCisgKiBAZGF0YTogKHRyYW5zZmVyIG5vbmUpOiBkZXNjcmlwdG9yIGRhdGEgKGFmdGVyIHRhZyBhbmQgbGVuZ3RoIGZpZWxkKQorICogQGxlbmd0aDogbGVuZ3RoIG9mIEBkYXRhCisgKgorICogQ3JlYXRlcyBhICNHc3RNcGVndHNEZXNjcmlwdG9yIHdpdGggY3VzdG9tIEB0YWcsIEB0YWdfZXh0ZW5zaW9uIGFuZCBAZGF0YQorICoKKyAqIFJldHVybnM6ICNHc3RNcGVndHNEZXNjcmlwdG9yCisgKi8KK0dzdE1wZWd0c0Rlc2NyaXB0b3IgKgorZ3N0X21wZWd0c19kZXNjcmlwdG9yX2Zyb21fY3VzdG9tX3dpdGhfZXh0ZW5zaW9uIChndWludDggdGFnLAorICAgIGd1aW50OCB0YWdfZXh0ZW5zaW9uLCBjb25zdCBndWludDggKiBkYXRhLCBnc2l6ZSBsZW5ndGgpCit7CisgIEdzdE1wZWd0c0Rlc2NyaXB0b3IgKmRlc2NyaXB0b3I7CisKKyAgZGVzY3JpcHRvciA9IF9uZXdfZGVzY3JpcHRvcl93aXRoX2V4dGVuc2lvbiAodGFnLCB0YWdfZXh0ZW5zaW9uLCBsZW5ndGgpOworCisgIGlmIChkYXRhICYmIChsZW5ndGggPiAwKSkKKyAgICBtZW1jcHkgKGRlc2NyaXB0b3ItPmRhdGEgKyAzLCBkYXRhLCBsZW5ndGgpOworCisgIHJldHVybiBkZXNjcmlwdG9yOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L21wZWd0cy9nc3RtcGVndHNkZXNjcmlwdG9yLmggYi9nc3QtbGlicy9nc3QvbXBlZ3RzL2dzdG1wZWd0c2Rlc2NyaXB0b3IuaAppbmRleCBiYmVmOTdkLi5hZjU2YmUwIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvbXBlZ3RzL2dzdG1wZWd0c2Rlc2NyaXB0b3IuaAorKysgYi9nc3QtbGlicy9nc3QvbXBlZ3RzL2dzdG1wZWd0c2Rlc2NyaXB0b3IuaApAQCAtMzQxLDYgKzM0MSw4IEBACiAKIEdzdE1wZWd0c0Rlc2NyaXB0b3IgKgogZ3N0X21wZWd0c19kZXNjcmlwdG9yX2Zyb21fY3VzdG9tIChndWludDggdGFnLCBjb25zdCBndWludDggKmRhdGEsIGdzaXplIGxlbmd0aCk7CitHc3RNcGVndHNEZXNjcmlwdG9yICoKK2dzdF9tcGVndHNfZGVzY3JpcHRvcl9mcm9tX2N1c3RvbV93aXRoX2V4dGVuc2lvbiAoZ3VpbnQ4IHRhZywgZ3VpbnQ4IHRhZ19leHRlbnNpb24sIGNvbnN0IGd1aW50OCAqZGF0YSwgZ3NpemUgbGVuZ3RoKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjExZDFmYwotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUuYW0KQEAgLTAsMCArMSwxMDMgQEAKK2xpYl9MVExJQlJBUklFUyA9IGxpYmdzdHBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC5sYQorCitsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfU09VUkNFUyA9IFwKKwlnc3RwbGF5ZXIuYyAgXAorCWdzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5jICBcCisJZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmMgIFwKKwlnc3RwbGF5ZXItbWVkaWEtaW5mby5jIFwKKwlnc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuYyAgXAorCWdzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmMgXAorCWdzdHBsYXllci12aXN1YWxpemF0aW9uLmMKKworbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUyA9IFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9DRkxBR1MpCisKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gXAorCSQoR1NUX0xJQl9MREZMQUdTKSBcCisJJChHU1RfQUxMX0xERkxBR1MpIFwKKwkkKEdTVF9MVF9MREZMQUdTKQorCitsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfTElCQUREID0gXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCisJLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0YXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKKwktbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0cGJ1dGlscy0kKEdTVF9BUElfVkVSU0lPTikgXAorCSQoR1NUX0xJQlMpIFwKKwkkKExJQk0pCisKK2xpYmdzdHBsYXllcmRpciA9ICQoaW5jbHVkZWRpcikvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2dzdC9wbGF5ZXIKKworbm9pbnN0X0hFQURFUlMgPSBcCisJZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLXByaXZhdGUuaCBcCisJZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLXByaXZhdGUuaCBcCisJZ3N0cGxheWVyLW1lZGlhLWluZm8tcHJpdmF0ZS5oCisKK2xpYmdzdHBsYXllcl9IRUFERVJTID0gXAorCXBsYXllci5oIFwKKwlnc3RwbGF5ZXIuaCBcCisJZ3N0cGxheWVyLXR5cGVzLmggXAorCWdzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5oIFwKKwlnc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuaCBcCisJZ3N0cGxheWVyLW1lZGlhLWluZm8uaCBcCisJZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmggIFwKKwlnc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5oIFwKKwlnc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5oCisKK0NMRUFORklMRVMgPQorCitpZiBIQVZFX0lOVFJPU1BFQ1RJT04KK0JVSUxUX0dJUlNPVVJDRVMgPSBHc3RQbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAuZ2lyCisKK2dpcl9oZWFkZXJzPSQocGF0c3Vic3QgJSwkKHNyY2RpcikvJSwgJChsaWJnc3RwbGF5ZXJfSEVBREVSUykpCitnaXJfc291cmNlcz0kKHBhdHN1YnN0ICUsJChzcmNkaXIpLyUsICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX1NPVVJDRVMpKQorCitHc3RQbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0cGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ALmxhCisJJChBTV9WX0dFTilQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiIFwKKwkJJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIC12IC0tbmFtZXNwYWNlIEdzdFBsYXllciBcCisJCS0tbnN2ZXJzaW9uPUBHU1RfQVBJX1ZFUlNJT05AIFwKKwkJLS13YXJuLWFsbCBcCisJCS0tc3RyaXAtcHJlZml4PUdzdCBcCisJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCisJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkJLS1jLWluY2x1ZGUgImdzdC9wbGF5ZXIvcGxheWVyLmgiIFwKKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci0xLjBgIFwKKwkJLS1saWJyYXJ5LXBhdGg9JCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkJLS1saWJyYXJ5PWxpYmdzdHBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAorCQktLWxpYnRvb2w9IiR7TElCVE9PTH0iIFwKKwkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKKwkJLS1wa2cgZ3N0cmVhbWVyLWF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKKwkJLS1wa2cgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKKwkJLS1wa2cgZ3N0cmVhbWVyLXRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCisJCS0tcGtnIGdzdHJlYW1lci1wYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05AIFwKKwkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1wbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAgXAorCQktLWFkZC1pbml0LXNlY3Rpb249IiQoSU5UUk9TUEVDVElPTl9JTklUKSIgXAorCQktLW91dHB1dCAkQCBcCisJCSQoZ2lyX2hlYWRlcnMpIFwKKwkJJChnaXJfc291cmNlcykKKworIyBJTlRST1NQRUNUSU9OX0dJUkRJUi9JTlRST1NQRUNUSU9OX1RZUEVMSUJESVIgYXJlbid0IHRoZSByaWdodCBwbGFjZSB0bworIyBpbnN0YWxsIGFueXRoaW5nIC0gd2UgbmVlZCB0byBpbnN0YWxsIGluc2lkZSBvdXIgcHJlZml4LgorZ2lyZGlyID0gJChkYXRhZGlyKS9naXItMS4wCitnaXJfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUykKKwordHlwZWxpYnNkaXIgPSAkKGxpYmRpcikvZ2lyZXBvc2l0b3J5LTEuMC8KKwordHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQorCislLnR5cGVsaWI6ICUuZ2lyICQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikKKwkkKEFNX1ZfR0VOKVBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgXAorCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKKwkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKS9nc3QtbGlicyBcCisJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKS9nc3QtbGlicyBcCisJCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci0xLjBgIFwKKwkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCisKK0NMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCitlbmRpZgpkaWZmIC0tZ2l0IGEvZXh0L2dzZXR0aW5ncy9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUuaW4Kc2ltaWxhcml0eSBpbmRleCA2MCUKcmVuYW1lIGZyb20gZXh0L2dzZXR0aW5ncy9NYWtlZmlsZS5pbgpyZW5hbWUgdG8gZ3N0LWxpYnMvZ3N0L3BsYXllci9NYWtlZmlsZS5pbgppbmRleCA0NTYwYjE4Li41NDRjNzg1IDEwMDY0NAotLS0gYS9leHQvZ3NldHRpbmdzL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUuaW4KQEAgLTE1LDYgKzE1LDcgQEAKIEBTRVRfTUFLRUAKIAogCisKIFZQQVRIID0gQHNyY2RpckAKIGFtX19pc19nbnVfbWFrZSA9IHsgXAogICBpZiB0ZXN0IC16ICckKE1BS0VMRVZFTCknOyB0aGVuIFwKQEAgLTkwLDcgKzkxLDggQEAKIGJ1aWxkX3RyaXBsZXQgPSBAYnVpbGRACiBob3N0X3RyaXBsZXQgPSBAaG9zdEAKIHRhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKLXN1YmRpciA9IGV4dC9nc2V0dGluZ3MKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUBhbV9fYXBwZW5kXzEgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKK3N1YmRpciA9IGdzdC1saWJzL2dzdC9wbGF5ZXIKIEFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKIGFtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hYy1leHBhbmQubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWF1dG8tYWx0Lm00IFwKQEAgLTExNiwyNCArMTE4LDIyIEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQotRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXAotCSQoYW1fX0RJU1RfQ09NTU9OKQorRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChsaWJnc3RwbGF5ZXJfSEVBREVSUykgXAorCSQobm9pbnN0X0hFQURFUlMpICQoYW1fX0RJU1RfQ09NTU9OKQogbWtpbnN0YWxsZGlycyA9ICQoaW5zdGFsbF9zaCkgLWQKIENPTkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmgKLUNPTkZJR19DTEVBTl9GSUxFUyA9ICBcCi0Jb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sCitDT05GSUdfQ0xFQU5fRklMRVMgPQogQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KIGFtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOwogYW1fX3ZwYXRoX2FkaiA9IGNhc2UgJCRwIGluIFwKQEAgLTE2MiwzMCArMTYyLDMxIEBACiAgICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAogICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAogICB9Ci1hbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIKLUxUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCithbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQobGliZGlyKSIgIiQoREVTVERJUikkKGdpcmRpcikiIFwKKwkiJChERVNURElSKSQodHlwZWxpYnNkaXIpIiAiJChERVNURElSKSQobGliZ3N0cGxheWVyZGlyKSIKK0xUTElCUkFSSUVTID0gJChsaWJfTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQotbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9ERVBFTkRFTkNJRVMgPSAgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKQotYW1fbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfT0JKRUNUUyA9ICBcCi0JbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmxvIFwKLQlsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NyYy5sbyBcCi0JbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmxvIFwKLQlsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3N2aWRlb3NyYy5sbyBcCi0JbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc2luay5sbyBcCi0JbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc3JjLmxvIFwKLQlsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1wbHVnaW4ubG8KLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX09CSkVDVFMgPSAgXAotCSQoYW1fbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfT0JKRUNUUykKK2FtX2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9PQkpFQ1RTID0gIFwKKwlsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLmxvIFwKKwlsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmxvIFwKKwlsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmxvIFwKKwlsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLW1lZGlhLWluZm8ubG8gXAorCWxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIubG8gXAorCWxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5sbyBcCisJbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmxvCitsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfT0JKRUNUUyA9ICBcCisJJChhbV9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKIGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9sdF8wID0gLS1zaWxlbnQKIGFtX192X2x0XzEgPSAKLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAotCSQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgXAotCS0tbW9kZT1saW5rICQoQ0NMRCkgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9DRkxBR1MpIFwKLQkkKENGTEFHUykgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vIFwKLQkkQAorbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgXAorCS0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAorCSQoQ0NMRCkgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAorCSQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKIEFNX1ZfUCA9ICQoYW1fX3ZfUF9AQU1fVkApCiBhbV9fdl9QXyA9ICQoYW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkKIGFtX192X1BfMCA9IGZhbHNlCkBAIC0yMjAsMTQgKzIyMSwxNSBAQAogYW1fX3ZfQ0NMRF8gPSAkKGFtX192X0NDTERfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9DQ0xEXzAgPSBAZWNobyAiICBDQ0xEICAgICIgJEA7CiBhbV9fdl9DQ0xEXzEgPSAKLVNPVVJDRVMgPSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX1NPVVJDRVMpCi1ESVNUX1NPVVJDRVMgPSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX1NPVVJDRVMpCitTT1VSQ0VTID0gJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfU09VUkNFUykKK0RJU1RfU09VUkNFUyA9ICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX1NPVVJDRVMpCiBhbV9fY2FuX3J1bl9pbnN0YWxsaW5mbyA9IFwKICAgY2FzZSAkJEFNX1VQREFURV9JTkZPX0RJUiBpbiBcCiAgICAgbnxub3xOTykgZmFsc2U7OyBcCiAgICAgKikgKGluc3RhbGwtaW5mbyAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMTs7IFwKICAgZXNhYwotSEVBREVSUyA9ICQobm9pbnN0X0hFQURFUlMpCitEQVRBID0gJChnaXJfREFUQSkgJCh0eXBlbGlic19EQVRBKQorSEVBREVSUyA9ICQobGliZ3N0cGxheWVyX0hFQURFUlMpICQobm9pbnN0X0hFQURFUlMpCiBhbV9fdGFnZ2VkX2ZpbGVzID0gJChIRUFERVJTKSAkKFNPVVJDRVMpICQoVEFHU19GSUxFUykgJChMSVNQKQogIyBSZWFkIGEgbGlzdCBvZiBuZXdsaW5lLXNlcGFyYXRlZCBzdHJpbmdzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0LAogIyBhbmQgcHJpbnQgZWFjaCBvZiB0aGVtIG9uY2UsIHdpdGhvdXQgZHVwbGljYXRlcy4gIElucHV0IG9yZGVyIGlzCkBAIC0yNDcsOSArMjQ5LDcgQEAKICAgZG9uZSB8ICQoYW1fX3VuaXF1aWZ5X2lucHV0KWAKIEVUQUdTID0gZXRhZ3MKIENUQUdTID0gY3RhZ3MKLWFtX19ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiBcCi0JJChzcmNkaXIpL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbiBcCi0JJCh0b3Bfc3JjZGlyKS9kZXBjb21wCithbV9fRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3Bfc3JjZGlyKS9kZXBjb21wCiBESVNURklMRVMgPSAkKERJU1RfQ09NTU9OKSAkKERJU1RfU09VUkNFUykgJChURVhJTkZPUykgJChFWFRSQV9ESVNUKQogQUNMT0NBTCA9IEBBQ0xPQ0FMQAogQUNMT0NBTF9BTUZMQUdTID0gQEFDTE9DQUxfQU1GTEFHU0AKQEAgLTI4Niw2ICsyODYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMyMyw2ICszMjUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMzMSw3ICszMzUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNTAsOCArMzUzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2OCwxNiArMzcyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQwMyw2ICs0MDgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjgsNiArNDM1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI5LDYgKzUzOCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NDIsOCArNTUyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU5LDYgKzU2Nyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTYsMTYgKzYyNiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjg3LDYgKzcwMCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5Niw2ICs3MTAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzMzLDcgKzc0OSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzczLDM3ICs3ODgsNjUgQEAKIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAotZ3NldHRpbmdzX1NDSEVNQVMgPSBvcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ALmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwKLXBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzLmxhCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9TT1VSQ0VTID0gXAotICAgICAgICBnc3Rnc2V0dGluZ3NhdWRpb3NpbmsuYyBcCi0gICAgICAgIGdzdGdzZXR0aW5nc2F1ZGlvc3JjLmMgXAotICAgICAgICBnc3Rnc2V0dGluZ3N2aWRlb3NpbmsuYyBcCi0gICAgICAgIGdzdGdzZXR0aW5nc3ZpZGVvc3JjLmMgXAotICAgICAgICBnc3Rzd2l0Y2hzaW5rLmMgXAotICAgICAgICBnc3Rzd2l0Y2hzcmMuYyBcCi0JcGx1Z2luLmMKK2xpYl9MVExJQlJBUklFUyA9IGxpYmdzdHBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC5sYQorbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX1NPVVJDRVMgPSBcCisJZ3N0cGxheWVyLmMgIFwKKwlnc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuYyAgXAorCWdzdHBsYXllci12aWRlby1yZW5kZXJlci5jICBcCisJZ3N0cGxheWVyLW1lZGlhLWluZm8uYyBcCisJZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmMgIFwKKwlnc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5jIFwKKwlnc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5jCiAKLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEdTRVRUSU5HU19DRkxBR1MpICQoRElSX0NGTEFHUykgXAotCS1ER3N0U3dpdGNoU3JjPUdzdEdTZXR0aW5nc1N3aXRjaFNyYyBcCi0JLURHc3RTd2l0Y2hTcmNDbGFzcz1Hc3RHU2V0dGluZ3NTd2l0Y2hTcmNDbGFzcyBcCi0JLURHc3RTd2l0Y2hTaW5rPUdzdEdTZXR0aW5nc1N3aXRjaFNpbmsgXAotCS1ER3N0U3dpdGNoU2lua0NsYXNzPUdzdEdTZXR0aW5nc1N3aXRjaFNpbmtDbGFzcworbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUyA9IFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9DRkxBR1MpCiAKLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQkFERCA9ICQoR1NUX0xJQlMpICQoR1NFVFRJTkdTX0xJQlMpCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQorbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSBcCisJJChHU1RfTElCX0xERkxBR1MpIFwKKwkkKEdTVF9BTExfTERGTEFHUykgXAorCSQoR1NUX0xUX0xERkxBR1MpCisKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MSUJBREQgPSBcCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKKwktbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJLWxnc3RhdWRpby0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJLWxnc3RwYnV0aWxzLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJJChHU1RfTElCUykgXAorCSQoTElCTSkKKworbGliZ3N0cGxheWVyZGlyID0gJChpbmNsdWRlZGlyKS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvZ3N0L3BsYXllcgogbm9pbnN0X0hFQURFUlMgPSBcCi0gICAgICAgIGdzdGdzZXR0aW5nc2F1ZGlvc2luay5oIFwKLSAgICAgICAgZ3N0Z3NldHRpbmdzYXVkaW9zcmMuaCBcCi0gICAgICAgIGdzdGdzZXR0aW5nc3ZpZGVvc2luay5oIFwKLSAgICAgICAgZ3N0Z3NldHRpbmdzdmlkZW9zcmMuaCBcCi0gICAgICAgIGdzdHN3aXRjaHNpbmsuaCBcCi0gICAgICAgIGdzdHN3aXRjaHNyYy5oIFwKLQlnc3Rnc2V0dGluZ3MuaAorCWdzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci1wcml2YXRlLmggXAorCWdzdHBsYXllci12aWRlby1yZW5kZXJlci1wcml2YXRlLmggXAorCWdzdHBsYXllci1tZWRpYS1pbmZvLXByaXZhdGUuaAogCi1FWFRSQV9ESVNUID0gb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sCi1DTEVBTkZJTEVTID0gJChnc2V0dGluZ3NfU0NIRU1BUykKK2xpYmdzdHBsYXllcl9IRUFERVJTID0gXAorCXBsYXllci5oIFwKKwlnc3RwbGF5ZXIuaCBcCisJZ3N0cGxheWVyLXR5cGVzLmggXAorCWdzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5oIFwKKwlnc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuaCBcCisJZ3N0cGxheWVyLW1lZGlhLWluZm8uaCBcCisJZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmggIFwKKwlnc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5oIFwKKwlnc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5oCisKK0NMRUFORklMRVMgPSAkKGFtX19hcHBlbmRfMSkKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUBCVUlMVF9HSVJTT1VSQ0VTID0gR3N0UGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ALmdpcgorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQGdpcl9oZWFkZXJzID0gJChwYXRzdWJzdCAlLCQoc3JjZGlyKS8lLCAkKGxpYmdzdHBsYXllcl9IRUFERVJTKSkKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUBnaXJfc291cmNlcyA9ICQocGF0c3Vic3QgJSwkKHNyY2RpcikvJSwgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfU09VUkNFUykpCisKKyMgSU5UUk9TUEVDVElPTl9HSVJESVIvSU5UUk9TUEVDVElPTl9UWVBFTElCRElSIGFyZW4ndCB0aGUgcmlnaHQgcGxhY2UgdG8KKyMgaW5zdGFsbCBhbnl0aGluZyAtIHdlIG5lZWQgdG8gaW5zdGFsbCBpbnNpZGUgb3VyIHByZWZpeC4KK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUBnaXJkaXIgPSAkKGRhdGFkaXIpL2dpci0xLjAKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUBnaXJfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUykKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUB0eXBlbGlic2RpciA9ICQobGliZGlyKS9naXJlcG9zaXRvcnktMS4wLworQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKIGFsbDogYWxsLWFtCiAKIC5TVUZGSVhFUzoKQEAgLTgxNyw5ICs4NjAsOSBAQAogCSAgICAgIGV4aXQgMTs7IFwKIAkgIGVzYWM7IFwKIAlkb25lOyBcCi0JZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgZXh0L2dzZXR0aW5ncy9NYWtlZmlsZSc7IFwKKwllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBnc3QtbGlicy9nc3QvcGxheWVyL01ha2VmaWxlJzsgXAogCSQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpICYmIFwKLQkgICQoQVVUT01BS0UpIC0tZ251IGV4dC9nc2V0dGluZ3MvTWFrZWZpbGUKKwkgICQoQVVUT01BS0UpIC0tZ251IGdzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUKIE1ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKIAlAY2FzZSAnJD8nIGluIFwKIAkgICpjb25maWcuc3RhdHVzKikgXApAQCAtODM3LDM2ICs4ODAsMzQgQEAKICQoQUNMT0NBTF9NNCk6IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChhbV9fYWNsb2NhbF9tNF9kZXBzKQogCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAogJChhbV9fYWNsb2NhbF9tNF9kZXBzKToKLW9yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbDogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbgotCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRACiAKLWluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVM6ICQocGx1Z2luX0xUTElCUkFSSUVTKQoraW5zdGFsbC1saWJMVExJQlJBUklFUzogJChsaWJfTFRMSUJSQVJJRVMpCiAJQCQoTk9STUFMX0lOU1RBTEwpCi0JQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQocGx1Z2luZGlyKSIgfHwgbGlzdD07IFwKKwlAbGlzdD0nJChsaWJfTFRMSUJSQVJJRVMpJzsgdGVzdCAtbiAiJChsaWJkaXIpIiB8fCBsaXN0PTsgXAogCWxpc3QyPTsgZm9yIHAgaW4gJCRsaXN0OyBkbyBcCiAJICBpZiB0ZXN0IC1mICQkcDsgdGhlbiBcCiAJICAgIGxpc3QyPSIkJGxpc3QyICQkcCI7IFwKIAkgIGVsc2UgOjsgZmk7IFwKIAlkb25lOyBcCiAJdGVzdCAteiAiJCRsaXN0MiIgfHwgeyBcCi0JICBlY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQocGx1Z2luZGlyKSciOyBcCi0JICAkKE1LRElSX1ApICIkKERFU1RESVIpJChwbHVnaW5kaXIpIiB8fCBleGl0IDE7IFwKLQkgIGVjaG8gIiAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAnJChERVNURElSKSQocGx1Z2luZGlyKSciOyBcCi0JICAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAiJChERVNURElSKSQocGx1Z2luZGlyKSI7IFwKKwkgIGVjaG8gIiAkKE1LRElSX1ApICckKERFU1RESVIpJChsaWJkaXIpJyI7IFwKKwkgICQoTUtESVJfUCkgIiQoREVTVERJUikkKGxpYmRpcikiIHx8IGV4aXQgMTsgXAorCSAgZWNobyAiICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9aW5zdGFsbCAkKElOU1RBTEwpICQoSU5TVEFMTF9TVFJJUF9GTEFHKSAkJGxpc3QyICckKERFU1RESVIpJChsaWJkaXIpJyI7IFwKKwkgICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9aW5zdGFsbCAkKElOU1RBTEwpICQoSU5TVEFMTF9TVFJJUF9GTEFHKSAkJGxpc3QyICIkKERFU1RESVIpJChsaWJkaXIpIjsgXAogCX0KIAotdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTOgordW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTOgogCUAkKE5PUk1BTF9VTklOU1RBTEwpCi0JQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQocGx1Z2luZGlyKSIgfHwgbGlzdD07IFwKKwlAbGlzdD0nJChsaWJfTFRMSUJSQVJJRVMpJzsgdGVzdCAtbiAiJChsaWJkaXIpIiB8fCBsaXN0PTsgXAogCWZvciBwIGluICQkbGlzdDsgZG8gXAogCSAgJChhbV9fc3RyaXBfZGlyKSBcCi0JICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgJyQoREVTVERJUikkKHBsdWdpbmRpcikvJCRmJyI7IFwKLQkgICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9dW5pbnN0YWxsIHJtIC1mICIkKERFU1RESVIpJChwbHVnaW5kaXIpLyQkZiI7IFwKKwkgIGVjaG8gIiAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPXVuaW5zdGFsbCBybSAtZiAnJChERVNURElSKSQobGliZGlyKS8kJGYnIjsgXAorCSAgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgIiQoREVTVERJUikkKGxpYmRpcikvJCRmIjsgXAogCWRvbmUKIAotY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVM6Ci0JLXRlc3QgLXogIiQocGx1Z2luX0xUTElCUkFSSUVTKSIgfHwgcm0gLWYgJChwbHVnaW5fTFRMSUJSQVJJRVMpCi0JQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IFwKK2NsZWFuLWxpYkxUTElCUkFSSUVTOgorCS10ZXN0IC16ICIkKGxpYl9MVExJQlJBUklFUykiIHx8IHJtIC1mICQobGliX0xUTElCUkFSSUVTKQorCUBsaXN0PSckKGxpYl9MVExJQlJBUklFUyknOyBcCiAJbG9jcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IFwKIAkgICAgICBzZWQgJ3N8XlteL10qJCR8Lnw7IHN8L1teL10qJCR8fDsgc3wkJHwvc29fbG9jYXRpb25zfCcgfCBcCiAJICAgICAgc29ydCAtdWA7IFwKQEAgLTg3NSw4ICs5MTYsOCBAQAogCSAgcm0gLWYgJCR7bG9jc307IFwKIAl9CiAKLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzLmxhOiAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX09CSkVDVFMpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0RFUEVOREVOQ0lFUykgCi0JJChBTV9WX0NDTEQpJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSU5LKSAtcnBhdGggJChwbHVnaW5kaXIpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfT0JKRUNUUykgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJBREQpICQoTElCUykKK2xpYmdzdHBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC5sYTogJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfT0JKRUNUUykgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9ERVBFTkRFTkNJRVMpIAorCSQoQU1fVl9DQ0xEKSQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJTkspIC1ycGF0aCAkKGxpYmRpcikgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfT0JKRUNUUykgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfTElCQUREKSAkKExJQlMpCiAKIG1vc3RseWNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICouJChPQkpFWFQpCkBAIC04ODQsMTMgKzkyNSwxMyBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc2luay5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc3JjLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zcmMuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzaW5rLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc3JjLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtcGx1Z2luLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItbWVkaWEtaW5mby5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aXN1YWxpemF0aW9uLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci5QbG9AYW1fX3F1b3RlQAogCiAuYy5vOgogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XApAQCAtOTE2LDYwICs5NTcsMTIzIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMVENPTVBJTEUpIC1jIC1vICRAICQ8CiAKLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc2luay5sbzogZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NpbmsuVHBvIC1jIC1vIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc2luay5sbyBgdGVzdCAtZiAnZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdzZXR0aW5nc2F1ZGlvc2luay5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NpbmsuVHBvICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NpbmsuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmMnIG9iamVjdD0nbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLmxvOiBnc3RwbGF5ZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci5UcG8gLWMgLW8gbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci5sbyBgdGVzdCAtZiAnZ3N0cGxheWVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHBsYXllci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLlRwbyAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RwbGF5ZXIuYycgb2JqZWN0PSdsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmxvIGB0ZXN0IC1mICdnc3Rnc2V0dGluZ3NhdWRpb3NpbmsuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci5sbyBgdGVzdCAtZiAnZ3N0cGxheWVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHBsYXllci5jCiAKLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc3JjLmxvOiBnc3Rnc2V0dGluZ3NhdWRpb3NyYy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc3JjLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NyYy5UcG8gLWMgLW8gbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzYXVkaW9zcmMubG8gYHRlc3QgLWYgJ2dzdGdzZXR0aW5nc2F1ZGlvc3JjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdzZXR0aW5nc2F1ZGlvc3JjLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc3JjLlRwbyAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzYXVkaW9zcmMuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z3NldHRpbmdzYXVkaW9zcmMuYycgb2JqZWN0PSdsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NyYy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5sbzogZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuVHBvIC1jIC1vIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIubG8gYHRlc3QgLWYgJ2dzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5UcG8gJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmMnIG9iamVjdD0nbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc3JjLmxvIGB0ZXN0IC1mICdnc3Rnc2V0dGluZ3NhdWRpb3NyYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rnc2V0dGluZ3NhdWRpb3NyYy5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIubG8gYHRlc3QgLWYgJ2dzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuYwogCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3N2aWRlb3NpbmsubG86IGdzdGdzZXR0aW5nc3ZpZGVvc2luay5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc2luay5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLlRwbyAtYyAtbyBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3N2aWRlb3NpbmsubG8gYHRlc3QgLWYgJ2dzdGdzZXR0aW5nc3ZpZGVvc2luay5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rnc2V0dGluZ3N2aWRlb3NpbmsuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLlRwbyAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdzZXR0aW5nc3ZpZGVvc2luay5jJyBvYmplY3Q9J2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc2luay5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aWRlby1yZW5kZXJlci5sbzogZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuVHBvIC1jIC1vIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIubG8gYHRlc3QgLWYgJ2dzdHBsYXllci12aWRlby1yZW5kZXJlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aWRlby1yZW5kZXJlci5UcG8gJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmMnIG9iamVjdD0nbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aWRlby1yZW5kZXJlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc2luay5sbyBgdGVzdCAtZiAnZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdzZXR0aW5nc3ZpZGVvc2luay5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIubG8gYHRlc3QgLWYgJ2dzdHBsYXllci12aWRlby1yZW5kZXJlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuYwogCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3N2aWRlb3NyYy5sbzogZ3N0Z3NldHRpbmdzdmlkZW9zcmMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3N2aWRlb3NyYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zcmMuVHBvIC1jIC1vIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc3JjLmxvIGB0ZXN0IC1mICdnc3Rnc2V0dGluZ3N2aWRlb3NyYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rnc2V0dGluZ3N2aWRlb3NyYy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3N2aWRlb3NyYy5UcG8gJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc3JjLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdzZXR0aW5nc3ZpZGVvc3JjLmMnIG9iamVjdD0nbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zcmMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItbWVkaWEtaW5mby5sbzogZ3N0cGxheWVyLW1lZGlhLWluZm8uYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1tZWRpYS1pbmZvLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLW1lZGlhLWluZm8uVHBvIC1jIC1vIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItbWVkaWEtaW5mby5sbyBgdGVzdCAtZiAnZ3N0cGxheWVyLW1lZGlhLWluZm8uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGxheWVyLW1lZGlhLWluZm8uYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1tZWRpYS1pbmZvLlRwbyAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1tZWRpYS1pbmZvLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHBsYXllci1tZWRpYS1pbmZvLmMnIG9iamVjdD0nbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1tZWRpYS1pbmZvLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zcmMubG8gYHRlc3QgLWYgJ2dzdGdzZXR0aW5nc3ZpZGVvc3JjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdzZXR0aW5nc3ZpZGVvc3JjLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1tZWRpYS1pbmZvLmxvIGB0ZXN0IC1mICdnc3RwbGF5ZXItbWVkaWEtaW5mby5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbGF5ZXItbWVkaWEtaW5mby5jCiAKLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNpbmsubG86IGdzdHN3aXRjaHNpbmsuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzaW5rLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzaW5rLlRwbyAtYyAtbyBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzaW5rLmxvIGB0ZXN0IC1mICdnc3Rzd2l0Y2hzaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHN3aXRjaHNpbmsuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc2luay5UcG8gJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNpbmsuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0c3dpdGNoc2luay5jJyBvYmplY3Q9J2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNpbmsubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIubG86IGdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLlRwbyAtYyAtbyBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmxvIGB0ZXN0IC1mICdnc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuVHBvICQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5jJyBvYmplY3Q9J2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzaW5rLmxvIGB0ZXN0IC1mICdnc3Rzd2l0Y2hzaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHN3aXRjaHNpbmsuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmxvIGB0ZXN0IC1mICdnc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmMKIAotbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc3JjLmxvOiBnc3Rzd2l0Y2hzcmMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzcmMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNyYy5UcG8gLWMgLW8gbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc3JjLmxvIGB0ZXN0IC1mICdnc3Rzd2l0Y2hzcmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0c3dpdGNoc3JjLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNyYy5UcG8gJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNyYy5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3Rzd2l0Y2hzcmMuYycgb2JqZWN0PSdsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzcmMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5sbzogZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuVHBvIC1jIC1vIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5sbyBgdGVzdCAtZiAnZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLlRwbyAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmMnIG9iamVjdD0nbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc3JjLmxvIGB0ZXN0IC1mICdnc3Rzd2l0Y2hzcmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0c3dpdGNoc3JjLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmxvIGB0ZXN0IC1mICdnc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5jCiAKLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLXBsdWdpbi5sbzogcGx1Z2luLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtcGx1Z2luLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1wbHVnaW4uVHBvIC1jIC1vIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLXBsdWdpbi5sbyBgdGVzdCAtZiAncGx1Z2luLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHBsdWdpbi5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1wbHVnaW4uVHBvICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1wbHVnaW4uUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ncGx1Z2luLmMnIG9iamVjdD0nbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtcGx1Z2luLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ubG86IGdzdHBsYXllci12aXN1YWxpemF0aW9uLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aXN1YWxpemF0aW9uLlRwbyAtYyAtbyBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ubG8gYHRlc3QgLWYgJ2dzdHBsYXllci12aXN1YWxpemF0aW9uLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHBsYXllci12aXN1YWxpemF0aW9uLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5UcG8gJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5jJyBvYmplY3Q9J2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLXBsdWdpbi5sbyBgdGVzdCAtZiAncGx1Z2luLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHBsdWdpbi5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5sbyBgdGVzdCAtZiAnZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uYwogCiBtb3N0bHljbGVhbi1saWJ0b29sOgogCS1ybSAtZiAqLmxvCiAKIGNsZWFuLWxpYnRvb2w6CiAJLXJtIC1yZiAubGlicyBfbGlicworaW5zdGFsbC1naXJEQVRBOiAkKGdpcl9EQVRBKQorCUAkKE5PUk1BTF9JTlNUQUxMKQorCUBsaXN0PSckKGdpcl9EQVRBKSc7IHRlc3QgLW4gIiQoZ2lyZGlyKSIgfHwgbGlzdD07IFwKKwlpZiB0ZXN0IC1uICIkJGxpc3QiOyB0aGVuIFwKKwkgIGVjaG8gIiAkKE1LRElSX1ApICckKERFU1RESVIpJChnaXJkaXIpJyI7IFwKKwkgICQoTUtESVJfUCkgIiQoREVTVERJUikkKGdpcmRpcikiIHx8IGV4aXQgMTsgXAorCWZpOyBcCisJZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0IC1mICIkJHAiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAorCSAgZWNobyAiJCRkJCRwIjsgXAorCWRvbmUgfCAkKGFtX19iYXNlX2xpc3QpIHwgXAorCXdoaWxlIHJlYWQgZmlsZXM7IGRvIFwKKwkgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAnJChERVNURElSKSQoZ2lyZGlyKSciOyBcCisJICAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAiJChERVNURElSKSQoZ2lyZGlyKSIgfHwgZXhpdCAkJD87IFwKKwlkb25lCisKK3VuaW5zdGFsbC1naXJEQVRBOgorCUAkKE5PUk1BTF9VTklOU1RBTEwpCisJQGxpc3Q9JyQoZ2lyX0RBVEEpJzsgdGVzdCAtbiAiJChnaXJkaXIpIiB8fCBsaXN0PTsgXAorCWZpbGVzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRwOyBkb25lIHwgc2VkIC1lICdzfF4uKi98fCdgOyBcCisJZGlyPSckKERFU1RESVIpJChnaXJkaXIpJzsgJChhbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyKQoraW5zdGFsbC10eXBlbGlic0RBVEE6ICQodHlwZWxpYnNfREFUQSkKKwlAJChOT1JNQUxfSU5TVEFMTCkKKwlAbGlzdD0nJCh0eXBlbGlic19EQVRBKSc7IHRlc3QgLW4gIiQodHlwZWxpYnNkaXIpIiB8fCBsaXN0PTsgXAorCWlmIHRlc3QgLW4gIiQkbGlzdCI7IHRoZW4gXAorCSAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKHR5cGVsaWJzZGlyKSciOyBcCisJICAkKE1LRElSX1ApICIkKERFU1RESVIpJCh0eXBlbGlic2RpcikiIHx8IGV4aXQgMTsgXAorCWZpOyBcCisJZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0IC1mICIkJHAiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAorCSAgZWNobyAiJCRkJCRwIjsgXAorCWRvbmUgfCAkKGFtX19iYXNlX2xpc3QpIHwgXAorCXdoaWxlIHJlYWQgZmlsZXM7IGRvIFwKKwkgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAnJChERVNURElSKSQodHlwZWxpYnNkaXIpJyI7IFwKKwkgICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICIkKERFU1RESVIpJCh0eXBlbGlic2RpcikiIHx8IGV4aXQgJCQ/OyBcCisJZG9uZQorCit1bmluc3RhbGwtdHlwZWxpYnNEQVRBOgorCUAkKE5PUk1BTF9VTklOU1RBTEwpCisJQGxpc3Q9JyQodHlwZWxpYnNfREFUQSknOyB0ZXN0IC1uICIkKHR5cGVsaWJzZGlyKSIgfHwgbGlzdD07IFwKKwlmaWxlcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IHNlZCAtZSAnc3xeLiovfHwnYDsgXAorCWRpcj0nJChERVNURElSKSQodHlwZWxpYnNkaXIpJzsgJChhbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyKQoraW5zdGFsbC1saWJnc3RwbGF5ZXJIRUFERVJTOiAkKGxpYmdzdHBsYXllcl9IRUFERVJTKQorCUAkKE5PUk1BTF9JTlNUQUxMKQorCUBsaXN0PSckKGxpYmdzdHBsYXllcl9IRUFERVJTKSc7IHRlc3QgLW4gIiQobGliZ3N0cGxheWVyZGlyKSIgfHwgbGlzdD07IFwKKwlpZiB0ZXN0IC1uICIkJGxpc3QiOyB0aGVuIFwKKwkgIGVjaG8gIiAkKE1LRElSX1ApICckKERFU1RESVIpJChsaWJnc3RwbGF5ZXJkaXIpJyI7IFwKKwkgICQoTUtESVJfUCkgIiQoREVTVERJUikkKGxpYmdzdHBsYXllcmRpcikiIHx8IGV4aXQgMTsgXAorCWZpOyBcCisJZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0IC1mICIkJHAiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAorCSAgZWNobyAiJCRkJCRwIjsgXAorCWRvbmUgfCAkKGFtX19iYXNlX2xpc3QpIHwgXAorCXdoaWxlIHJlYWQgZmlsZXM7IGRvIFwKKwkgIGVjaG8gIiAkKElOU1RBTExfSEVBREVSKSAkJGZpbGVzICckKERFU1RESVIpJChsaWJnc3RwbGF5ZXJkaXIpJyI7IFwKKwkgICQoSU5TVEFMTF9IRUFERVIpICQkZmlsZXMgIiQoREVTVERJUikkKGxpYmdzdHBsYXllcmRpcikiIHx8IGV4aXQgJCQ/OyBcCisJZG9uZQorCit1bmluc3RhbGwtbGliZ3N0cGxheWVySEVBREVSUzoKKwlAJChOT1JNQUxfVU5JTlNUQUxMKQorCUBsaXN0PSckKGxpYmdzdHBsYXllcl9IRUFERVJTKSc7IHRlc3QgLW4gIiQobGliZ3N0cGxheWVyZGlyKSIgfHwgbGlzdD07IFwKKwlmaWxlcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IHNlZCAtZSAnc3xeLiovfHwnYDsgXAorCWRpcj0nJChERVNURElSKSQobGliZ3N0cGxheWVyZGlyKSc7ICQoYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpcikKIAogSUQ6ICQoYW1fX3RhZ2dlZF9maWxlcykKIAkkKGFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMpOyBta2lkIC1mSUQgJCR1bmlxdWUKQEAgLTEwNTUsOSArMTE1OSw5IEBACiAJZG9uZQogY2hlY2stYW06IGFsbC1hbQogY2hlY2s6IGNoZWNrLWFtCi1hbGwtYW06IE1ha2VmaWxlICQoTFRMSUJSQVJJRVMpICQoSEVBREVSUykKK2FsbC1hbTogTWFrZWZpbGUgJChMVExJQlJBUklFUykgJChEQVRBKSAkKEhFQURFUlMpCiBpbnN0YWxsZGlyczoKLQlmb3IgZGlyIGluICIkKERFU1RESVIpJChwbHVnaW5kaXIpIjsgZG8gXAorCWZvciBkaXIgaW4gIiQoREVTVERJUikkKGxpYmRpcikiICIkKERFU1RESVIpJChnaXJkaXIpIiAiJChERVNURElSKSQodHlwZWxpYnNkaXIpIiAiJChERVNURElSKSQobGliZ3N0cGxheWVyZGlyKSI7IGRvIFwKIAkgIHRlc3QgLXogIiQkZGlyIiB8fCAkKE1LRElSX1ApICIkJGRpciI7IFwKIAlkb25lCiBpbnN0YWxsOiBpbnN0YWxsLWFtCkBAIC0xMDkzLDcgKzExOTcsNyBAQAogCUBlY2hvICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiIKIGNsZWFuOiBjbGVhbi1hbQogCi1jbGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBjbGVhbi1saWJ0b29sIGNsZWFuLXBsdWdpbkxUTElCUkFSSUVTIFwKK2NsZWFuLWFtOiBjbGVhbi1nZW5lcmljIGNsZWFuLWxpYkxUTElCUkFSSUVTIGNsZWFuLWxpYnRvb2wgXAogCW1vc3RseWNsZWFuLWFtCiAKIGRpc3RjbGVhbjogZGlzdGNsZWFuLWFtCkBAIC0xMTE0LDEzICsxMjE4LDE0IEBACiAKIGluZm8tYW06CiAKLWluc3RhbGwtZGF0YS1hbTogaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUworaW5zdGFsbC1kYXRhLWFtOiBpbnN0YWxsLWdpckRBVEEgaW5zdGFsbC1saWJnc3RwbGF5ZXJIRUFERVJTIFwKKwlpbnN0YWxsLXR5cGVsaWJzREFUQQogCiBpbnN0YWxsLWR2aTogaW5zdGFsbC1kdmktYW0KIAogaW5zdGFsbC1kdmktYW06CiAKLWluc3RhbGwtZXhlYy1hbToKK2luc3RhbGwtZXhlYy1hbTogaW5zdGFsbC1saWJMVExJQlJBUklFUwogCiBpbnN0YWxsLWh0bWw6IGluc3RhbGwtaHRtbC1hbQogCkBAIC0xMTYwLDMyICsxMjY1LDY0IEBACiAKIHBzLWFtOgogCi11bmluc3RhbGwtYW06IHVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUwordW5pbnN0YWxsLWFtOiB1bmluc3RhbGwtZ2lyREFUQSB1bmluc3RhbGwtbGliTFRMSUJSQVJJRVMgXAorCXVuaW5zdGFsbC1saWJnc3RwbGF5ZXJIRUFERVJTIHVuaW5zdGFsbC10eXBlbGlic0RBVEEKIAogLk1BS0U6IGluc3RhbGwtYW0gaW5zdGFsbC1zdHJpcAogCiAuUEhPTlk6IENUQUdTIEdUQUdTIFRBR1MgYWxsIGFsbC1hbSBjaGVjayBjaGVjay1hbSBjbGVhbiBjbGVhbi1nZW5lcmljIFwKLQljbGVhbi1saWJ0b29sIGNsZWFuLXBsdWdpbkxUTElCUkFSSUVTIGNzY29wZWxpc3QtYW0gY3RhZ3MgXAorCWNsZWFuLWxpYkxUTElCUkFSSUVTIGNsZWFuLWxpYnRvb2wgY3Njb3BlbGlzdC1hbSBjdGFncyBcCiAJY3RhZ3MtYW0gZGlzdGNsZWFuIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKIAlkaXN0Y2xlYW4tbGlidG9vbCBkaXN0Y2xlYW4tdGFncyBkaXN0ZGlyIGR2aSBkdmktYW0gaHRtbCBcCiAJaHRtbC1hbSBpbmZvIGluZm8tYW0gaW5zdGFsbCBpbnN0YWxsLWFtIGluc3RhbGwtZGF0YSBcCiAJaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIGluc3RhbGwtZHZpLWFtIGluc3RhbGwtZXhlYyBcCi0JaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBpbnN0YWxsLWh0bWwtYW0gaW5zdGFsbC1pbmZvIFwKLQlpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1tYW4gaW5zdGFsbC1wZGYgaW5zdGFsbC1wZGYtYW0gXAotCWluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMgaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIFwKLQlpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgXAorCWluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWdpckRBVEEgaW5zdGFsbC1odG1sIGluc3RhbGwtaHRtbC1hbSBcCisJaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBpbnN0YWxsLWxpYkxUTElCUkFSSUVTIFwKKwlpbnN0YWxsLWxpYmdzdHBsYXllckhFQURFUlMgaW5zdGFsbC1tYW4gaW5zdGFsbC1wZGYgXAorCWluc3RhbGwtcGRmLWFtIGluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXN0cmlwIFwKKwlpbnN0YWxsLXR5cGVsaWJzREFUQSBpbnN0YWxsY2hlY2sgaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIFwKIAltYWludGFpbmVyLWNsZWFuIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbiBcCiAJbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWxpYnRvb2wgXAogCXBkZiBwZGYtYW0gcHMgcHMtYW0gdGFncyB0YWdzLWFtIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0gXAotCXVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUworCXVuaW5zdGFsbC1naXJEQVRBIHVuaW5zdGFsbC1saWJMVExJQlJBUklFUyBcCisJdW5pbnN0YWxsLWxpYmdzdHBsYXllckhFQURFUlMgdW5pbnN0YWxsLXR5cGVsaWJzREFUQQogCiAuUFJFQ0lPVVM6IE1ha2VmaWxlCiAKIAotb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sOiBvcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwKLQljcCBvcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwgb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVAR3N0UGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC5sYQorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkkKEFNX1ZfR0VOKVBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIC12IC0tbmFtZXNwYWNlIEdzdFBsYXllciBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLW5zdmVyc2lvbj1AR1NUX0FQSV9WRVJTSU9OQCBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXdhcm4tYWxsIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tc3RyaXAtcHJlZml4PUdzdCBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1jLWluY2x1ZGUgImdzdC9wbGF5ZXIvcGxheWVyLmgiIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLTEuMGAgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1saWJyYXJ5LXBhdGg9JCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tbGlicmFyeT1saWJnc3RwbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAubGEgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLWxpYnRvb2w9IiR7TElCVE9PTH0iIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXBrZyBnc3RyZWFtZXItYXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1wa2cgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tcGtnIGdzdHJlYW1lci10YWctQEdTVF9BUElfVkVSU0lPTkAgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1wa2cgZ3N0cmVhbWVyLXBidXRpbHMtQEdTVF9BUElfVkVSU0lPTkAgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1wbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1hZGQtaW5pdC1zZWN0aW9uPSIkKElOVFJPU1BFQ1RJT05fSU5JVCkiIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tb3V0cHV0ICRAIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCSQoZ2lyX2hlYWRlcnMpIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCSQoZ2lyX3NvdXJjZXMpCiAKLUBVU0VfR1NFVFRJTkdTX1RSVUVAQEdTRVRUSU5HU19SVUxFU0AKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAlLnR5cGVsaWI6ICUuZ2lyICQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJJChBTV9WX0dFTilQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKS9nc3QtbGlicyBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvZ3N0LWxpYnMgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLTEuMGAgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCiAKICMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSB0byBub3QgZXhwb3J0IGFsbCB2YXJpYWJsZXMuCiAjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmMgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZjU3ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5jCkBAIC0wLDAgKzEsMjEyIEBACisvKiBHU3RyZWFtZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKy8qKgorICogU0VDVElPTjpnc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlcgorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBQbGF5ZXIgR0xpYiBNYWluQ29udGV4dCBkaXNwYXRjaGVyCisgKgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5oIgorCitzdHJ1Y3QgX0dzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXIKK3sKKyAgR09iamVjdCBwYXJlbnQ7CisgIEdNYWluQ29udGV4dCAqYXBwbGljYXRpb25fY29udGV4dDsKK307CisKK3N0cnVjdCBfR3N0UGxheWVyR01haW5Db250ZXh0U2lnbmFsRGlzcGF0Y2hlckNsYXNzCit7CisgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitzdGF0aWMgdm9pZAorICAgIGdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2luaXQKKyAgICAoR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZSAqIGlmYWNlKTsKKworZW51bQoreworICBHX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9QUk9QXzAsCisgIEdfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSX1BST1BfQVBQTElDQVRJT05fQ09OVEVYVCwKKyAgR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfUFJPUF9MQVNUCit9OworCitHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0UGxheWVyR01haW5Db250ZXh0U2lnbmFsRGlzcGF0Y2hlciwKKyAgICBnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyLCBHX1RZUEVfT0JKRUNULAorICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRSAoR1NUX1RZUEVfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSLAorICAgICAgICBnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2ludGVyZmFjZV9pbml0KSk7CisKK3N0YXRpYyBHUGFyYW1TcGVjCisgICAgKiBnX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9wYXJhbV9zcGVjcworICAgIFtHX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9QUk9QX0xBU1RdID0geyBOVUxMLCB9OworCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0UGxheWVyR01haW5Db250ZXh0U2lnbmFsRGlzcGF0Y2hlciAqc2VsZiA9CisgICAgICBHU1RfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSIChvYmplY3QpOworCisgIGlmIChzZWxmLT5hcHBsaWNhdGlvbl9jb250ZXh0KQorICAgIGdfbWFpbl9jb250ZXh0X3VucmVmIChzZWxmLT5hcHBsaWNhdGlvbl9jb250ZXh0KTsKKworICBHX09CSkVDVF9DTEFTUworICAgICAgKGdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUKKyAgICAgIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCisgICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0UGxheWVyR01haW5Db250ZXh0U2lnbmFsRGlzcGF0Y2hlciAqc2VsZiA9CisgICAgICBHU1RfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfUFJPUF9BUFBMSUNBVElPTl9DT05URVhUOgorICAgICAgc2VsZi0+YXBwbGljYXRpb25fY29udGV4dCA9IGdfdmFsdWVfZHVwX2JveGVkICh2YWx1ZSk7CisgICAgICBpZiAoIXNlbGYtPmFwcGxpY2F0aW9uX2NvbnRleHQpCisgICAgICAgIHNlbGYtPmFwcGxpY2F0aW9uX2NvbnRleHQgPSBnX21haW5fY29udGV4dF9yZWZfdGhyZWFkX2RlZmF1bHQgKCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKKyAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3RQbGF5ZXJHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyICpzZWxmID0KKyAgICAgIEdTVF9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBHX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9QUk9QX0FQUExJQ0FUSU9OX0NPTlRFWFQ6CisgICAgICBnX3ZhbHVlX3NldF9ib3hlZCAodmFsdWUsIHNlbGYtPmFwcGxpY2F0aW9uX2NvbnRleHQpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorICAgIGdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfY2xhc3NfaW5pdAorICAgIChHc3RQbGF5ZXJHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9CisgICAgICBnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2ZpbmFsaXplOworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPQorICAgICAgZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9zZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9CisgICAgICBnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2dldF9wcm9wZXJ0eTsKKworICBnX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9wYXJhbV9zcGVjcworICAgICAgW0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSX1BST1BfQVBQTElDQVRJT05fQ09OVEVYVF0gPQorICAgICAgZ19wYXJhbV9zcGVjX2JveGVkICgiYXBwbGljYXRpb24tY29udGV4dCIsICJBcHBsaWNhdGlvbiBDb250ZXh0IiwKKyAgICAgICJBcHBsaWNhdGlvbiBHTWFpbkNvbnRleHQgdG8gZGlzcGF0Y2ggc2lnbmFscyB0byIsIEdfVFlQRV9NQUlOX0NPTlRFWFQsCisgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnRpZXMgKGdvYmplY3RfY2xhc3MsCisgICAgICBHX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9QUk9QX0xBU1QsCisgICAgICBnX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9wYXJhbV9zcGVjcyk7Cit9CisKK3N0YXRpYyB2b2lkCisgICAgZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9pbml0CisgICAgKEdfR05VQ19VTlVTRUQgR3N0UGxheWVyR01haW5Db250ZXh0U2lnbmFsRGlzcGF0Y2hlciAqIHNlbGYpCit7Cit9CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIHZvaWQgKCplbWl0dGVyKSAoZ3BvaW50ZXIgZGF0YSk7CisgIGdwb2ludGVyIGRhdGE7CisgIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3k7Cit9IEdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXJEYXRhOworCitzdGF0aWMgZ2Jvb2xlYW4KK2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2Rpc3BhdGNoX2dzb3VyY2VmdW5jIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXJEYXRhICpkYXRhID0gdXNlcl9kYXRhOworCisgIGRhdGEtPmVtaXR0ZXIgKGRhdGEtPmRhdGEpOworCisgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cit9CisKK3N0YXRpYyB2b2lkCitnX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaF9kZXN0cm95IChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXJEYXRhICpkYXRhID0gdXNlcl9kYXRhOworCisgIGlmIChkYXRhLT5kZXN0cm95KQorICAgIGRhdGEtPmRlc3Ryb3kgKGRhdGEtPmRhdGEpOworICBnX2ZyZWUgKGRhdGEpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaCAoR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcgorICAgICogaWZhY2UsIEdfR05VQ19VTlVTRUQgR3N0UGxheWVyICogcGxheWVyLCB2b2lkICgqZW1pdHRlcikgKGdwb2ludGVyIGRhdGEpLAorICAgIGdwb2ludGVyIGRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3kpCit7CisgIEdzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXIgKnNlbGYgPQorICAgICAgR1NUX1BMQVlFUl9HX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUiAoaWZhY2UpOworICBHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyRGF0YSAqZ3NvdXJjZWZ1bmNfZGF0YSA9CisgICAgICBnX25ldyAoR01haW5Db250ZXh0U2lnbmFsRGlzcGF0Y2hlckRhdGEsIDEpOworCisgIGdzb3VyY2VmdW5jX2RhdGEtPmVtaXR0ZXIgPSBlbWl0dGVyOworICBnc291cmNlZnVuY19kYXRhLT5kYXRhID0gZGF0YTsKKyAgZ3NvdXJjZWZ1bmNfZGF0YS0+ZGVzdHJveSA9IGRlc3Ryb3k7CisKKyAgZ19tYWluX2NvbnRleHRfaW52b2tlX2Z1bGwgKHNlbGYtPmFwcGxpY2F0aW9uX2NvbnRleHQsCisgICAgICBHX1BSSU9SSVRZX0RFRkFVTFQsIGdfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2Rpc3BhdGNoX2dzb3VyY2VmdW5jLAorICAgICAgZ3NvdXJjZWZ1bmNfZGF0YSwgZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2hfZGVzdHJveSk7Cit9CisKK3N0YXRpYyB2b2lkCisgICAgZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfaW5pdAorICAgIChHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlICogaWZhY2UpCit7CisgIGlmYWNlLT5kaXNwYXRjaCA9IGdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2g7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9uZXc6CisgKiBAYXBwbGljYXRpb25fY29udGV4dDogKGFsbG93LW5vbmUpOiBHTWFpbkNvbnRleHQgdG8gdXNlIG9yICVOVUxMCisgKgorICogQ3JlYXRlcyBhIG5ldyBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIHRoYXQgdXNlcyBAYXBwbGljYXRpb25fY29udGV4dCwKKyAqIG9yIHRoZSB0aHJlYWQgZGVmYXVsdCBvbmUgaWYgJU5VTEwgaXMgdXNlZC4gU2VlIGdzdF9wbGF5ZXJfbmV3X2Z1bGwoKS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IHRoZSBuZXcgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcgorICovCitHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyICoKK2dzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfbmV3IChHTWFpbkNvbnRleHQgKgorICAgIGFwcGxpY2F0aW9uX2NvbnRleHQpCit7CisgIHJldHVybiBnX29iamVjdF9uZXcgKEdTVF9UWVBFX1BMQVlFUl9HX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUiwKKyAgICAgICJhcHBsaWNhdGlvbi1jb250ZXh0IiwgYXBwbGljYXRpb25fY29udGV4dCwgTlVMTCk7Cit9CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5oIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzEwMzJiCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuaApAQCAtMCwwICsxLDQ4IEBACisvKiBHU3RyZWFtZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSX0hfXworI2RlZmluZSBfX0dTVF9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfSF9fCisKKyNpbmNsdWRlIDxnc3QvcGxheWVyL2dzdHBsYXllci10eXBlcy5oPgorI2luY2x1ZGUgPGdzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmg+CisKK0dfQkVHSU5fREVDTFMKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXIKKyAgICBHc3RQbGF5ZXJHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXJDbGFzcworICAgIEdzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXJDbGFzczsKKworI2RlZmluZSBHU1RfVFlQRV9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIgICAgICAgICAgICAgKGdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIob2JqKSAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIpKQorI2RlZmluZSBHU1RfSVNfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSX0NMQVNTKGtsYXNzKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIpKQorI2RlZmluZSBHU1RfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSX0dFVF9DTEFTUyhvYmopICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIsIEdzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXJDbGFzcykpCisjZGVmaW5lIEdTVF9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIob2JqKSAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIsIEdzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXIpKQorI2RlZmluZSBHU1RfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSX0NMQVNTKGtsYXNzKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIsIEdzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXJDbGFzcykpCisjZGVmaW5lIEdTVF9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfQ0FTVChvYmopICAgICAgICAoKEdzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXIqKShvYmopKQorCitHVHlwZSBnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2dldF90eXBlICh2b2lkKTsKKworR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciAqIGdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfbmV3IChHTWFpbkNvbnRleHQgKiBhcHBsaWNhdGlvbl9jb250ZXh0KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX1BMQVlFUl9HX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLW1lZGlhLWluZm8tcHJpdmF0ZS5oIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItbWVkaWEtaW5mby1wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg3NTdiZQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLW1lZGlhLWluZm8tcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMTI1IEBACisvKiBHU3RyZWFtZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQnJpamVzaCBTaW5naCA8YnJpamVzaC5rc2luZ2hAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJnc3RwbGF5ZXItbWVkaWEtaW5mby5oIgorCisjaWZuZGVmIF9fR1NUX1BMQVlFUl9NRURJQV9JTkZPX1BSSVZBVEVfSF9fCisjZGVmaW5lIF9fR1NUX1BMQVlFUl9NRURJQV9JTkZPX1BSSVZBVEVfSF9fCisKK3N0cnVjdCBfR3N0UGxheWVyU3RyZWFtSW5mbworeworICBHT2JqZWN0IHBhcmVudDsKKworICBnY2hhciAqY29kZWM7CisKKyAgR3N0Q2FwcyAqY2FwczsKKyAgZ2ludCBzdHJlYW1faW5kZXg7CisgIEdzdFRhZ0xpc3QgICp0YWdzOworfTsKKworc3RydWN0IF9Hc3RQbGF5ZXJTdHJlYW1JbmZvQ2xhc3MKK3sKKyAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK3N0cnVjdCBfR3N0UGxheWVyU3VidGl0bGVJbmZvCit7CisgIEdzdFBsYXllclN0cmVhbUluZm8gIHBhcmVudDsKKworICBnY2hhciAqbGFuZ3VhZ2U7Cit9OworCitzdHJ1Y3QgX0dzdFBsYXllclN1YnRpdGxlSW5mb0NsYXNzCit7CisgIEdzdFBsYXllclN0cmVhbUluZm9DbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitzdHJ1Y3QgX0dzdFBsYXllckF1ZGlvSW5mbworeworICBHc3RQbGF5ZXJTdHJlYW1JbmZvICBwYXJlbnQ7CisKKyAgZ2ludCBjaGFubmVsczsKKyAgZ2ludCBzYW1wbGVfcmF0ZTsKKworICBndWludCBiaXRyYXRlOworICBndWludCBtYXhfYml0cmF0ZTsKKworICBnY2hhciAqbGFuZ3VhZ2U7Cit9OworCitzdHJ1Y3QgX0dzdFBsYXllckF1ZGlvSW5mb0NsYXNzCit7CisgIEdzdFBsYXllclN0cmVhbUluZm9DbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitzdHJ1Y3QgX0dzdFBsYXllclZpZGVvSW5mbworeworICBHc3RQbGF5ZXJTdHJlYW1JbmZvICBwYXJlbnQ7CisKKyAgZ2ludCB3aWR0aDsKKyAgZ2ludCBoZWlnaHQ7CisgIGdpbnQgZnJhbWVyYXRlX251bTsKKyAgZ2ludCBmcmFtZXJhdGVfZGVub207CisgIGdpbnQgcGFyX251bTsKKyAgZ2ludCBwYXJfZGVub207CisKKyAgZ3VpbnQgYml0cmF0ZTsKKyAgZ3VpbnQgbWF4X2JpdHJhdGU7Cit9OworCitzdHJ1Y3QgX0dzdFBsYXllclZpZGVvSW5mb0NsYXNzCit7CisgIEdzdFBsYXllclN0cmVhbUluZm9DbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitzdHJ1Y3QgX0dzdFBsYXllck1lZGlhSW5mbworeworICBHT2JqZWN0IHBhcmVudDsKKworICBnY2hhciAqdXJpOworICBnY2hhciAqdGl0bGU7CisgIGdjaGFyICpjb250YWluZXI7CisgIGdib29sZWFuIHNlZWthYmxlOworICBHc3RUYWdMaXN0ICp0YWdzOworICBHc3RTYW1wbGUgKmltYWdlX3NhbXBsZTsKKworICBHTGlzdCAqc3RyZWFtX2xpc3Q7CisgIEdMaXN0ICphdWRpb19zdHJlYW1fbGlzdDsKKyAgR0xpc3QgKnZpZGVvX3N0cmVhbV9saXN0OworICBHTGlzdCAqc3VidGl0bGVfc3RyZWFtX2xpc3Q7CisKKyAgR3N0Q2xvY2tUaW1lICBkdXJhdGlvbjsKK307CisKK3N0cnVjdCBfR3N0UGxheWVyTWVkaWFJbmZvQ2xhc3MKK3sKKyAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK0dfR05VQ19JTlRFUk5BTCBHc3RQbGF5ZXJNZWRpYUluZm8qICAgZ3N0X3BsYXllcl9tZWRpYV9pbmZvX25ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgZ2NoYXIgKnVyaSk7CitHX0dOVUNfSU5URVJOQUwgR3N0UGxheWVyTWVkaWFJbmZvKiAgIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19jb3B5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXJNZWRpYUluZm8gKnJlZik7CitHX0dOVUNfSU5URVJOQUwgR3N0UGxheWVyU3RyZWFtSW5mbyogIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnaW50IHN0cmVhbV9pbmRleCwgR1R5cGUgdHlwZSk7CitHX0dOVUNfSU5URVJOQUwgR3N0UGxheWVyU3RyZWFtSW5mbyogIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fY29weQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyU3RyZWFtSW5mbyAqcmVmKTsKKworI2VuZGlmIC8qIF9fR1NUX1BMQVlFUl9NRURJQV9JTkZPX1BSSVZBVEVfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1tZWRpYS1pbmZvLmMgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1tZWRpYS1pbmZvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQyYjYxMQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLW1lZGlhLWluZm8uYwpAQCAtMCwwICsxLDc3NSBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEJyaWplc2ggU2luZ2ggPGJyaWplc2gua3NpbmdoQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKioKKyAqIFNFQ1RJT046Z3N0cGxheWVyLW1lZGlhaW5mbworICogQHNob3J0X2Rlc2NyaXB0aW9uOiBQbGF5ZXIgTWVkaWEgSW5mb3JtYXRpb24KKyAqCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0cGxheWVyLW1lZGlhLWluZm8uaCIKKyNpbmNsdWRlICJnc3RwbGF5ZXItbWVkaWEtaW5mby1wcml2YXRlLmgiCisKKy8qIFBlci1zdHJlYW0gaW5mb3JtYXRpb24gKi8KK0dfREVGSU5FX0FCU1RSQUNUX1RZUEUgKEdzdFBsYXllclN0cmVhbUluZm8sIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm8sCisgICAgR19UWVBFX09CSkVDVCk7CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2luaXQgKEdzdFBsYXllclN0cmVhbUluZm8gKiBzaW5mbykKK3sKKyAgc2luZm8tPnN0cmVhbV9pbmRleCA9IC0xOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9zdHJlYW1faW5mb19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0UGxheWVyU3RyZWFtSW5mbyAqc2luZm8gPSBHU1RfUExBWUVSX1NUUkVBTV9JTkZPIChvYmplY3QpOworCisgIGdfZnJlZSAoc2luZm8tPmNvZGVjKTsKKworICBpZiAoc2luZm8tPmNhcHMpCisgICAgZ3N0X2NhcHNfdW5yZWYgKHNpbmZvLT5jYXBzKTsKKworICBpZiAoc2luZm8tPnRhZ3MpCisgICAgZ3N0X3RhZ19saXN0X3VucmVmIChzaW5mby0+dGFncyk7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2NsYXNzX2luaXQgKEdzdFBsYXllclN0cmVhbUluZm9DbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworCisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3BsYXllcl9zdHJlYW1faW5mb19maW5hbGl6ZTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9pbmRleDoKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJTdHJlYW1JbmZvCisgKgorICogRnVuY3Rpb24gdG8gZ2V0IHN0cmVhbSBpbmRleCBmcm9tICNHc3RQbGF5ZXJTdHJlYW1JbmZvIGluc3RhbmNlLgorICoKKyAqIFJldHVybnM6IHRoZSBzdHJlYW0gaW5kZXggb2YgdGhpcyBzdHJlYW0uCisgKi8KK2dpbnQKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2luZGV4IChjb25zdCBHc3RQbGF5ZXJTdHJlYW1JbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfU1RSRUFNX0lORk8gKGluZm8pLCAtMSk7CisKKyAgcmV0dXJuIGluZm8tPnN0cmVhbV9pbmRleDsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9zdHJlYW1fdHlwZToKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJTdHJlYW1JbmZvCisgKgorICogRnVuY3Rpb24gdG8gcmV0dXJuIGh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIHRoZSBzdHJlYW0gdHlwZQorICogb2YgdGhlIGdpdmVuIEBpbmZvIChleDogImF1ZGlvIiwgInZpZGVvIiwgInN1YnRpdGxlIikKKyAqCisgKiBSZXR1cm5zOiBhIGh1bWFuIHJlYWRhYmxlIG5hbWUKKyAqLworY29uc3QgZ2NoYXIgKgorZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfc3RyZWFtX3R5cGUgKGNvbnN0IEdzdFBsYXllclN0cmVhbUluZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9TVFJFQU1fSU5GTyAoaW5mbyksIE5VTEwpOworCisgIGlmIChHU1RfSVNfUExBWUVSX1ZJREVPX0lORk8gKGluZm8pKQorICAgIHJldHVybiAidmlkZW8iOworICBlbHNlIGlmIChHU1RfSVNfUExBWUVSX0FVRElPX0lORk8gKGluZm8pKQorICAgIHJldHVybiAiYXVkaW8iOworICBlbHNlCisgICAgcmV0dXJuICJzdWJ0aXRsZSI7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFnczoKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJTdHJlYW1JbmZvCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgdGFncyBjb250YWluZWQgaW4gdGhpcyBzdHJlYW0uCisgKi8KK0dzdFRhZ0xpc3QgKgorZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFncyAoY29uc3QgR3N0UGxheWVyU3RyZWFtSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX1NUUkVBTV9JTkZPIChpbmZvKSwgTlVMTCk7CisKKyAgcmV0dXJuIGluZm8tPnRhZ3M7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY29kZWM6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyU3RyZWFtSW5mbworICoKKyAqIEEgc3RyaW5nIGRlc2NyaWJpbmcgY29kZWMgdXNlZCBpbiAjR3N0UGxheWVyU3RyZWFtSW5mby4KKyAqCisgKiBSZXR1cm5zOiBjb2RlYyBzdHJpbmcgb3IgTlVMTCBvbiB1bmtub3duLgorICovCitjb25zdCBnY2hhciAqCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jb2RlYyAoY29uc3QgR3N0UGxheWVyU3RyZWFtSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX1NUUkVBTV9JTkZPIChpbmZvKSwgTlVMTCk7CisKKyAgcmV0dXJuIGluZm8tPmNvZGVjOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NhcHM6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyU3RyZWFtSW5mbworICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlICNHc3RDYXBzIG9mIHRoZSBzdHJlYW0uCisgKi8KK0dzdENhcHMgKgorZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY2FwcyAoY29uc3QgR3N0UGxheWVyU3RyZWFtSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX1NUUkVBTV9JTkZPIChpbmZvKSwgTlVMTCk7CisKKyAgcmV0dXJuIGluZm8tPmNhcHM7Cit9CisKKy8qIFZpZGVvIGluZm9ybWF0aW9uICovCitHX0RFRklORV9UWVBFIChHc3RQbGF5ZXJWaWRlb0luZm8sIGdzdF9wbGF5ZXJfdmlkZW9faW5mbywKKyAgICBHU1RfVFlQRV9QTEFZRVJfU1RSRUFNX0lORk8pOworCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl92aWRlb19pbmZvX2luaXQgKEdzdFBsYXllclZpZGVvSW5mbyAqIGluZm8pCit7CisgIGluZm8tPndpZHRoID0gLTE7CisgIGluZm8tPmhlaWdodCA9IC0xOworICBpbmZvLT5mcmFtZXJhdGVfbnVtID0gMDsKKyAgaW5mby0+ZnJhbWVyYXRlX2Rlbm9tID0gMTsKKyAgaW5mby0+cGFyX251bSA9IDE7CisgIGluZm8tPnBhcl9kZW5vbSA9IDE7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3ZpZGVvX2luZm9fY2xhc3NfaW5pdCAoR19HTlVDX1VOVVNFRCBHc3RQbGF5ZXJWaWRlb0luZm9DbGFzcyAqIGtsYXNzKQoreworICAvKiBub3RoaW5nIHRvIGRvIGhlcmUgKi8KK30KKworLyoqCisgKiBnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3dpZHRoOgorICogQGluZm86IGEgI0dzdFBsYXllclZpZGVvSW5mbworICoKKyAqIFJldHVybnM6IHRoZSB3aWR0aCBvZiB2aWRlbyBpbiAjR3N0UGxheWVyVmlkZW9JbmZvLgorICovCitnaW50Citnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3dpZHRoIChjb25zdCBHc3RQbGF5ZXJWaWRlb0luZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9WSURFT19JTkZPIChpbmZvKSwgLTEpOworCisgIHJldHVybiBpbmZvLT53aWR0aDsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2hlaWdodDoKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJWaWRlb0luZm8KKyAqCisgKiBSZXR1cm5zOiB0aGUgaGVpZ2h0IG9mIHZpZGVvIGluICNHc3RQbGF5ZXJWaWRlb0luZm8uCisgKi8KK2dpbnQKK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfaGVpZ2h0IChjb25zdCBHc3RQbGF5ZXJWaWRlb0luZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9WSURFT19JTkZPIChpbmZvKSwgLTEpOworCisgIHJldHVybiBpbmZvLT5oZWlnaHQ7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9mcmFtZXJhdGVfbnVtOgorICogQGluZm86IGEgI0dzdFBsYXllclZpZGVvSW5mbworICoKKyAqLwordm9pZAorZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9mcmFtZXJhdGUgKGNvbnN0IEdzdFBsYXllclZpZGVvSW5mbyAqIGluZm8sCisgICAgZ2ludCAqIGZwc19uLCBnaW50ICogZnBzX2QpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfVklERU9fSU5GTyAoaW5mbykpOworCisgICpmcHNfbiA9IGluZm8tPmZyYW1lcmF0ZV9udW07CisgICpmcHNfZCA9IGluZm8tPmZyYW1lcmF0ZV9kZW5vbTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3BpeGVsX2FzcGVjdF9yYXRpbzoKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJWaWRlb0luZm8KKyAqIEBwYXJfbjogKG91dCk6IG51bWVyYXRvcgorICogQHBhcl9kOiAob3V0KTogZGVub21pbmF0b3IKKyAqCisgKiBSZXR1cm5zIHRoZSBwaXhlbCBhc3BlY3QgcmF0aW8gaW4gQHBhcl9uIGFuZCBAcGFyX2QKKyAqCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfcGl4ZWxfYXNwZWN0X3JhdGlvIChjb25zdCBHc3RQbGF5ZXJWaWRlb0luZm8gKiBpbmZvLAorICAgIGd1aW50ICogcGFyX24sIGd1aW50ICogcGFyX2QpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfVklERU9fSU5GTyAoaW5mbykpOworCisgICpwYXJfbiA9IGluZm8tPnBhcl9udW07CisgICpwYXJfZCA9IGluZm8tPnBhcl9kZW5vbTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2JpdHJhdGU6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyVmlkZW9JbmZvCisgKgorICogUmV0dXJuczogdGhlIGN1cnJlbnQgYml0cmF0ZSBvZiB2aWRlbyBpbiAjR3N0UGxheWVyVmlkZW9JbmZvLgorICovCitnaW50Citnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2JpdHJhdGUgKGNvbnN0IEdzdFBsYXllclZpZGVvSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX1ZJREVPX0lORk8gKGluZm8pLCAtMSk7CisKKyAgcmV0dXJuIGluZm8tPmJpdHJhdGU7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9tYXhfYml0cmF0ZToKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJWaWRlb0luZm8KKyAqCisgKiBSZXR1cm5zOiB0aGUgbWF4aW11bSBiaXRyYXRlIG9mIHZpZGVvIGluICNHc3RQbGF5ZXJWaWRlb0luZm8uCisgKi8KK2dpbnQKK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfbWF4X2JpdHJhdGUgKGNvbnN0IEdzdFBsYXllclZpZGVvSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX1ZJREVPX0lORk8gKGluZm8pLCAtMSk7CisKKyAgcmV0dXJuIGluZm8tPm1heF9iaXRyYXRlOworfQorCisvKiBBdWRpbyBpbmZvcm1hdGlvbiAqLworR19ERUZJTkVfVFlQRSAoR3N0UGxheWVyQXVkaW9JbmZvLCBnc3RfcGxheWVyX2F1ZGlvX2luZm8sCisgICAgR1NUX1RZUEVfUExBWUVSX1NUUkVBTV9JTkZPKTsKKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19pbml0IChHc3RQbGF5ZXJBdWRpb0luZm8gKiBpbmZvKQoreworICBpbmZvLT5jaGFubmVscyA9IDA7CisgIGluZm8tPnNhbXBsZV9yYXRlID0gMDsKKyAgaW5mby0+Yml0cmF0ZSA9IC0xOworICBpbmZvLT5tYXhfYml0cmF0ZSA9IC0xOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9hdWRpb19pbmZvX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RQbGF5ZXJBdWRpb0luZm8gKmluZm8gPSBHU1RfUExBWUVSX0FVRElPX0lORk8gKG9iamVjdCk7CisKKyAgZ19mcmVlIChpbmZvLT5sYW5ndWFnZSk7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKGdzdF9wbGF5ZXJfYXVkaW9faW5mb19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19jbGFzc19pbml0IChHc3RQbGF5ZXJBdWRpb0luZm9DbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworCisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3BsYXllcl9hdWRpb19pbmZvX2ZpbmFsaXplOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbGFuZ3VhZ2U6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyQXVkaW9JbmZvCisgKgorICogUmV0dXJuczogdGhlIGxhbmd1YWdlIG9mIHRoZSBzdHJlYW0sIG9yIE5VTEwgaWYgdW5rbm93bi4KKyAqLworY29uc3QgZ2NoYXIgKgorZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9sYW5ndWFnZSAoY29uc3QgR3N0UGxheWVyQXVkaW9JbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfQVVESU9fSU5GTyAoaW5mbyksIE5VTEwpOworCisgIHJldHVybiBpbmZvLT5sYW5ndWFnZTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2NoYW5uZWxzOgorICogQGluZm86IGEgI0dzdFBsYXllckF1ZGlvSW5mbworICoKKyAqIFJldHVybnM6IHRoZSBudW1iZXIgb2YgYXVkaW8gY2hhbm5lbHMgaW4gI0dzdFBsYXllckF1ZGlvSW5mby4KKyAqLworZ2ludAorZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9jaGFubmVscyAoY29uc3QgR3N0UGxheWVyQXVkaW9JbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfQVVESU9fSU5GTyAoaW5mbyksIDApOworCisgIHJldHVybiBpbmZvLT5jaGFubmVsczsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X3NhbXBsZV9yYXRlOgorICogQGluZm86IGEgI0dzdFBsYXllckF1ZGlvSW5mbworICoKKyAqIFJldHVybnM6IHRoZSBhdWRpbyBzYW1wbGUgcmF0ZSBpbiAjR3N0UGxheWVyQXVkaW9JbmZvLgorICovCitnaW50Citnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X3NhbXBsZV9yYXRlIChjb25zdCBHc3RQbGF5ZXJBdWRpb0luZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9BVURJT19JTkZPIChpbmZvKSwgMCk7CisKKyAgcmV0dXJuIGluZm8tPnNhbXBsZV9yYXRlOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfYml0cmF0ZToKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJBdWRpb0luZm8KKyAqCisgKiBSZXR1cm5zOiB0aGUgYXVkaW8gYml0cmF0ZSBpbiAjR3N0UGxheWVyQXVkaW9JbmZvLgorICovCitnaW50Citnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2JpdHJhdGUgKGNvbnN0IEdzdFBsYXllckF1ZGlvSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX0FVRElPX0lORk8gKGluZm8pLCAtMSk7CisKKyAgcmV0dXJuIGluZm8tPmJpdHJhdGU7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9tYXhfYml0cmF0ZToKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJBdWRpb0luZm8KKyAqCisgKiBSZXR1cm5zOiB0aGUgYXVkaW8gbWF4aW11bSBiaXRyYXRlIGluICNHc3RQbGF5ZXJBdWRpb0luZm8uCisgKi8KK2dpbnQKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbWF4X2JpdHJhdGUgKGNvbnN0IEdzdFBsYXllckF1ZGlvSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX0FVRElPX0lORk8gKGluZm8pLCAtMSk7CisKKyAgcmV0dXJuIGluZm8tPm1heF9iaXRyYXRlOworfQorCisvKiBTdWJ0aXRsZSBpbmZvcm1hdGlvbiAqLworR19ERUZJTkVfVFlQRSAoR3N0UGxheWVyU3VidGl0bGVJbmZvLCBnc3RfcGxheWVyX3N1YnRpdGxlX2luZm8sCisgICAgR1NUX1RZUEVfUExBWUVSX1NUUkVBTV9JTkZPKTsKKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19pbml0IChHX0dOVUNfVU5VU0VEIEdzdFBsYXllclN1YnRpdGxlSW5mbyAqIGluZm8pCit7CisgIC8qIG5vdGhpbmcgdG8gZG8gKi8KK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0UGxheWVyU3VidGl0bGVJbmZvICppbmZvID0gR1NUX1BMQVlFUl9TVUJUSVRMRV9JTkZPIChvYmplY3QpOworCisgIGdfZnJlZSAoaW5mby0+bGFuZ3VhZ2UpOworCisgIEdfT0JKRUNUX0NMQVNTIChnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fY2xhc3NfaW5pdCAoR3N0UGxheWVyU3VidGl0bGVJbmZvQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKKworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19maW5hbGl6ZTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZ2V0X2xhbmd1YWdlOgorICogQGluZm86IGEgI0dzdFBsYXllclN1YnRpdGxlSW5mbworICoKKyAqIFJldHVybnM6IHRoZSBsYW5ndWFnZSBvZiB0aGUgc3RyZWFtLCBvciBOVUxMIGlmIHVua25vd24uCisgKi8KK2NvbnN0IGdjaGFyICoKK2dzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19nZXRfbGFuZ3VhZ2UgKGNvbnN0IEdzdFBsYXllclN1YnRpdGxlSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX1NVQlRJVExFX0lORk8gKGluZm8pLCBOVUxMKTsKKworICByZXR1cm4gaW5mby0+bGFuZ3VhZ2U7Cit9CisKKy8qIEdsb2JhbCBtZWRpYSBpbmZvcm1hdGlvbiAqLworR19ERUZJTkVfVFlQRSAoR3N0UGxheWVyTWVkaWFJbmZvLCBnc3RfcGxheWVyX21lZGlhX2luZm8sIEdfVFlQRV9PQkpFQ1QpOworCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2luaXQgKEdzdFBsYXllck1lZGlhSW5mbyAqIGluZm8pCit7CisgIGluZm8tPmR1cmF0aW9uID0gLTE7CisgIGluZm8tPnNlZWthYmxlID0gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX21lZGlhX2luZm9fZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdFBsYXllck1lZGlhSW5mbyAqaW5mbyA9IEdTVF9QTEFZRVJfTUVESUFfSU5GTyAob2JqZWN0KTsKKworICBnX2ZyZWUgKGluZm8tPnVyaSk7CisKKyAgaWYgKGluZm8tPnRhZ3MpCisgICAgZ3N0X3RhZ19saXN0X3VucmVmIChpbmZvLT50YWdzKTsKKworICBnX2ZyZWUgKGluZm8tPnRpdGxlKTsKKworICBnX2ZyZWUgKGluZm8tPmNvbnRhaW5lcik7CisKKyAgaWYgKGluZm8tPmltYWdlX3NhbXBsZSkKKyAgICBnc3Rfc2FtcGxlX3VucmVmIChpbmZvLT5pbWFnZV9zYW1wbGUpOworCisgIGlmIChpbmZvLT5hdWRpb19zdHJlYW1fbGlzdCkKKyAgICBnX2xpc3RfZnJlZSAoaW5mby0+YXVkaW9fc3RyZWFtX2xpc3QpOworCisgIGlmIChpbmZvLT52aWRlb19zdHJlYW1fbGlzdCkKKyAgICBnX2xpc3RfZnJlZSAoaW5mby0+dmlkZW9fc3RyZWFtX2xpc3QpOworCisgIGlmIChpbmZvLT5zdWJ0aXRsZV9zdHJlYW1fbGlzdCkKKyAgICBnX2xpc3RfZnJlZSAoaW5mby0+c3VidGl0bGVfc3RyZWFtX2xpc3QpOworCisgIGlmIChpbmZvLT5zdHJlYW1fbGlzdCkKKyAgICBnX2xpc3RfZnJlZV9mdWxsIChpbmZvLT5zdHJlYW1fbGlzdCwgZ19vYmplY3RfdW5yZWYpOworCisgIEdfT0JKRUNUX0NMQVNTIChnc3RfcGxheWVyX21lZGlhX2luZm9fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX21lZGlhX2luZm9fY2xhc3NfaW5pdCAoR3N0UGxheWVyTWVkaWFJbmZvQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpvY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworCisgIG9jbGFzcy0+ZmluYWxpemUgPSBnc3RfcGxheWVyX21lZGlhX2luZm9fZmluYWxpemU7Cit9CisKK3N0YXRpYyBHc3RQbGF5ZXJWaWRlb0luZm8gKgorZ3N0X3BsYXllcl92aWRlb19pbmZvX25ldyAodm9pZCkKK3sKKyAgcmV0dXJuIGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfUExBWUVSX1ZJREVPX0lORk8sIE5VTEwpOworfQorCitzdGF0aWMgR3N0UGxheWVyQXVkaW9JbmZvICoKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19uZXcgKHZvaWQpCit7CisgIHJldHVybiBnX29iamVjdF9uZXcgKEdTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPLCBOVUxMKTsKK30KKworc3RhdGljIEdzdFBsYXllclN1YnRpdGxlSW5mbyAqCitnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fbmV3ICh2b2lkKQoreworICByZXR1cm4gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9QTEFZRVJfU1VCVElUTEVfSU5GTywgTlVMTCk7Cit9CisKK3N0YXRpYyBHc3RQbGF5ZXJTdHJlYW1JbmZvICoKK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19jb3B5IChHc3RQbGF5ZXJWaWRlb0luZm8gKiByZWYpCit7CisgIEdzdFBsYXllclZpZGVvSW5mbyAqcmV0OworCisgIHJldCA9IGdzdF9wbGF5ZXJfdmlkZW9faW5mb19uZXcgKCk7CisKKyAgcmV0LT53aWR0aCA9IHJlZi0+d2lkdGg7CisgIHJldC0+aGVpZ2h0ID0gcmVmLT5oZWlnaHQ7CisgIHJldC0+ZnJhbWVyYXRlX251bSA9IHJlZi0+ZnJhbWVyYXRlX251bTsKKyAgcmV0LT5mcmFtZXJhdGVfZGVub20gPSByZWYtPmZyYW1lcmF0ZV9kZW5vbTsKKyAgcmV0LT5wYXJfbnVtID0gcmVmLT5wYXJfbnVtOworICByZXQtPnBhcl9kZW5vbSA9IHJlZi0+cGFyX2Rlbm9tOworICByZXQtPmJpdHJhdGUgPSByZWYtPmJpdHJhdGU7CisgIHJldC0+bWF4X2JpdHJhdGUgPSByZWYtPm1heF9iaXRyYXRlOworCisgIHJldHVybiAoR3N0UGxheWVyU3RyZWFtSW5mbyAqKSByZXQ7Cit9CisKK3N0YXRpYyBHc3RQbGF5ZXJTdHJlYW1JbmZvICoKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19jb3B5IChHc3RQbGF5ZXJBdWRpb0luZm8gKiByZWYpCit7CisgIEdzdFBsYXllckF1ZGlvSW5mbyAqcmV0OworCisgIHJldCA9IGdzdF9wbGF5ZXJfYXVkaW9faW5mb19uZXcgKCk7CisKKyAgcmV0LT5zYW1wbGVfcmF0ZSA9IHJlZi0+c2FtcGxlX3JhdGU7CisgIHJldC0+Y2hhbm5lbHMgPSByZWYtPmNoYW5uZWxzOworICByZXQtPmJpdHJhdGUgPSByZWYtPmJpdHJhdGU7CisgIHJldC0+bWF4X2JpdHJhdGUgPSByZWYtPm1heF9iaXRyYXRlOworCisgIGlmIChyZWYtPmxhbmd1YWdlKQorICAgIHJldC0+bGFuZ3VhZ2UgPSBnX3N0cmR1cCAocmVmLT5sYW5ndWFnZSk7CisKKyAgcmV0dXJuIChHc3RQbGF5ZXJTdHJlYW1JbmZvICopIHJldDsKK30KKworc3RhdGljIEdzdFBsYXllclN0cmVhbUluZm8gKgorZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX2NvcHkgKEdzdFBsYXllclN1YnRpdGxlSW5mbyAqIHJlZikKK3sKKyAgR3N0UGxheWVyU3VidGl0bGVJbmZvICpyZXQ7CisKKyAgcmV0ID0gZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX25ldyAoKTsKKyAgaWYgKHJlZi0+bGFuZ3VhZ2UpCisgICAgcmV0LT5sYW5ndWFnZSA9IGdfc3RyZHVwIChyZWYtPmxhbmd1YWdlKTsKKworICByZXR1cm4gKEdzdFBsYXllclN0cmVhbUluZm8gKikgcmV0OworfQorCitHc3RQbGF5ZXJTdHJlYW1JbmZvICoKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fY29weSAoR3N0UGxheWVyU3RyZWFtSW5mbyAqIHJlZikKK3sKKyAgR3N0UGxheWVyU3RyZWFtSW5mbyAqaW5mbyA9IE5VTEw7CisKKyAgaWYgKCFyZWYpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKEdTVF9JU19QTEFZRVJfVklERU9fSU5GTyAocmVmKSkKKyAgICBpbmZvID0gZ3N0X3BsYXllcl92aWRlb19pbmZvX2NvcHkgKChHc3RQbGF5ZXJWaWRlb0luZm8gKikgcmVmKTsKKyAgZWxzZSBpZiAoR1NUX0lTX1BMQVlFUl9BVURJT19JTkZPIChyZWYpKQorICAgIGluZm8gPSBnc3RfcGxheWVyX2F1ZGlvX2luZm9fY29weSAoKEdzdFBsYXllckF1ZGlvSW5mbyAqKSByZWYpOworICBlbHNlCisgICAgaW5mbyA9IGdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19jb3B5ICgoR3N0UGxheWVyU3VidGl0bGVJbmZvICopIHJlZik7CisKKyAgaW5mby0+c3RyZWFtX2luZGV4ID0gcmVmLT5zdHJlYW1faW5kZXg7CisgIGlmIChyZWYtPnRhZ3MpCisgICAgaW5mby0+dGFncyA9IGdzdF90YWdfbGlzdF9yZWYgKHJlZi0+dGFncyk7CisgIGlmIChyZWYtPmNhcHMpCisgICAgaW5mby0+Y2FwcyA9IGdzdF9jYXBzX2NvcHkgKHJlZi0+Y2Fwcyk7CisgIGlmIChyZWYtPmNvZGVjKQorICAgIGluZm8tPmNvZGVjID0gZ19zdHJkdXAgKHJlZi0+Y29kZWMpOworCisgIHJldHVybiBpbmZvOworfQorCitHc3RQbGF5ZXJNZWRpYUluZm8gKgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2NvcHkgKEdzdFBsYXllck1lZGlhSW5mbyAqIHJlZikKK3sKKyAgR0xpc3QgKmw7CisgIEdzdFBsYXllck1lZGlhSW5mbyAqaW5mbzsKKworICBpZiAoIXJlZikKKyAgICByZXR1cm4gTlVMTDsKKworICBpbmZvID0gZ3N0X3BsYXllcl9tZWRpYV9pbmZvX25ldyAocmVmLT51cmkpOworICBpbmZvLT5kdXJhdGlvbiA9IHJlZi0+ZHVyYXRpb247CisgIGluZm8tPnNlZWthYmxlID0gcmVmLT5zZWVrYWJsZTsKKyAgaWYgKHJlZi0+dGFncykKKyAgICBpbmZvLT50YWdzID0gZ3N0X3RhZ19saXN0X3JlZiAocmVmLT50YWdzKTsKKyAgaWYgKHJlZi0+dGl0bGUpCisgICAgaW5mby0+dGl0bGUgPSBnX3N0cmR1cCAocmVmLT50aXRsZSk7CisgIGlmIChyZWYtPmNvbnRhaW5lcikKKyAgICBpbmZvLT5jb250YWluZXIgPSBnX3N0cmR1cCAocmVmLT5jb250YWluZXIpOworICBpZiAocmVmLT5pbWFnZV9zYW1wbGUpCisgICAgaW5mby0+aW1hZ2Vfc2FtcGxlID0gZ3N0X3NhbXBsZV9yZWYgKHJlZi0+aW1hZ2Vfc2FtcGxlKTsKKworICBmb3IgKGwgPSByZWYtPnN0cmVhbV9saXN0OyBsICE9IE5VTEw7IGwgPSBsLT5uZXh0KSB7CisgICAgR3N0UGxheWVyU3RyZWFtSW5mbyAqczsKKworICAgIHMgPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2NvcHkgKChHc3RQbGF5ZXJTdHJlYW1JbmZvICopIGwtPmRhdGEpOworICAgIGluZm8tPnN0cmVhbV9saXN0ID0gZ19saXN0X2FwcGVuZCAoaW5mby0+c3RyZWFtX2xpc3QsIHMpOworCisgICAgaWYgKEdTVF9JU19QTEFZRVJfQVVESU9fSU5GTyAocykpCisgICAgICBpbmZvLT5hdWRpb19zdHJlYW1fbGlzdCA9IGdfbGlzdF9hcHBlbmQgKGluZm8tPmF1ZGlvX3N0cmVhbV9saXN0LCBzKTsKKyAgICBlbHNlIGlmIChHU1RfSVNfUExBWUVSX1ZJREVPX0lORk8gKHMpKQorICAgICAgaW5mby0+dmlkZW9fc3RyZWFtX2xpc3QgPSBnX2xpc3RfYXBwZW5kIChpbmZvLT52aWRlb19zdHJlYW1fbGlzdCwgcyk7CisgICAgZWxzZQorICAgICAgaW5mby0+c3VidGl0bGVfc3RyZWFtX2xpc3QgPQorICAgICAgICAgIGdfbGlzdF9hcHBlbmQgKGluZm8tPnN1YnRpdGxlX3N0cmVhbV9saXN0LCBzKTsKKyAgfQorCisgIHJldHVybiBpbmZvOworfQorCitHc3RQbGF5ZXJTdHJlYW1JbmZvICoKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fbmV3IChnaW50IHN0cmVhbV9pbmRleCwgR1R5cGUgdHlwZSkKK3sKKyAgR3N0UGxheWVyU3RyZWFtSW5mbyAqaW5mbyA9IE5VTEw7CisKKyAgaWYgKHR5cGUgPT0gR1NUX1RZUEVfUExBWUVSX0FVRElPX0lORk8pCisgICAgaW5mbyA9IChHc3RQbGF5ZXJTdHJlYW1JbmZvICopIGdzdF9wbGF5ZXJfYXVkaW9faW5mb19uZXcgKCk7CisgIGVsc2UgaWYgKHR5cGUgPT0gR1NUX1RZUEVfUExBWUVSX1ZJREVPX0lORk8pCisgICAgaW5mbyA9IChHc3RQbGF5ZXJTdHJlYW1JbmZvICopIGdzdF9wbGF5ZXJfdmlkZW9faW5mb19uZXcgKCk7CisgIGVsc2UKKyAgICBpbmZvID0gKEdzdFBsYXllclN0cmVhbUluZm8gKikgZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX25ldyAoKTsKKworICBpbmZvLT5zdHJlYW1faW5kZXggPSBzdHJlYW1faW5kZXg7CisKKyAgcmV0dXJuIGluZm87Cit9CisKK0dzdFBsYXllck1lZGlhSW5mbyAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fbmV3IChjb25zdCBnY2hhciAqIHVyaSkKK3sKKyAgR3N0UGxheWVyTWVkaWFJbmZvICppbmZvOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh1cmkgIT0gTlVMTCwgTlVMTCk7CisKKyAgaW5mbyA9IGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfUExBWUVSX01FRElBX0lORk8sIE5VTEwpOworICBpbmZvLT51cmkgPSBnX3N0cmR1cCAodXJpKTsKKworICByZXR1cm4gaW5mbzsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3VyaToKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJNZWRpYUluZm8KKyAqCisgKiBSZXR1cm5zOiB0aGUgVVJJIGFzc29jaWF0ZWQgd2l0aCAjR3N0UGxheWVyTWVkaWFJbmZvLgorICovCitjb25zdCBnY2hhciAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3VyaSAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfTUVESUFfSU5GTyAoaW5mbyksIE5VTEwpOworCisgIHJldHVybiBpbmZvLT51cmk7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2lzX3NlZWthYmxlOgorICogQGluZm86IGEgI0dzdFBsYXllck1lZGlhSW5mbworICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHRoZSBtZWRpYSBpcyBzZWVrYWJsZS4KKyAqLworZ2Jvb2xlYW4KK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19pc19zZWVrYWJsZSAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfTUVESUFfSU5GTyAoaW5mbyksIEZBTFNFKTsKKworICByZXR1cm4gaW5mby0+c2Vla2FibGU7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9zdHJlYW1fbGlzdDoKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJNZWRpYUluZm8KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSkgKGVsZW1lbnQtdHlwZSBHc3RQbGF5ZXJTdHJlYW1JbmZvKTogQSAjR0xpc3Qgb2YKKyAqIG1hdGNoaW5nICNHc3RQbGF5ZXJTdHJlYW1JbmZvLgorICovCitHTGlzdCAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3N0cmVhbV9saXN0IChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9NRURJQV9JTkZPIChpbmZvKSwgTlVMTCk7CisKKyAgcmV0dXJuIGluZm8tPnN0cmVhbV9saXN0OworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXM6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyTWVkaWFJbmZvCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpIChlbGVtZW50LXR5cGUgR3N0UGxheWVyVmlkZW9JbmZvKTogQSAjR0xpc3Qgb2YKKyAqIG1hdGNoaW5nICNHc3RQbGF5ZXJWaWRlb0luZm8uCisgKi8KK0dMaXN0ICoKK2dzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXMgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX01FRElBX0lORk8gKGluZm8pLCBOVUxMKTsKKworICByZXR1cm4gaW5mby0+dmlkZW9fc3RyZWFtX2xpc3Q7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfc3RyZWFtczoKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJNZWRpYUluZm8KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSkgKGVsZW1lbnQtdHlwZSBHc3RQbGF5ZXJTdWJ0aXRsZUluZm8pOiBBICNHTGlzdCBvZgorICogbWF0Y2hpbmcgI0dzdFBsYXllclN1YnRpdGxlSW5mby4KKyAqLworR0xpc3QgKgorZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfc3RyZWFtcyAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfTUVESUFfSU5GTyAoaW5mbyksIE5VTEwpOworCisgIHJldHVybiBpbmZvLT5zdWJ0aXRsZV9zdHJlYW1fbGlzdDsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX2dldF9hdWRpb19zdHJlYW1zOgorICogQGluZm86IGEgI0dzdFBsYXllck1lZGlhSW5mbworICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKSAoZWxlbWVudC10eXBlIEdzdFBsYXllckF1ZGlvSW5mbyk6IEEgI0dMaXN0IG9mCisgKiBtYXRjaGluZyAjR3N0UGxheWVyQXVkaW9JbmZvLgorICovCitHTGlzdCAqCitnc3RfcGxheWVyX2dldF9hdWRpb19zdHJlYW1zIChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9NRURJQV9JTkZPIChpbmZvKSwgTlVMTCk7CisKKyAgcmV0dXJuIGluZm8tPmF1ZGlvX3N0cmVhbV9saXN0OworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfZHVyYXRpb246CisgKiBAaW5mbzogYSAjR3N0UGxheWVyTWVkaWFJbmZvCisgKgorICogUmV0dXJuczogZHVyYXRpb24gb2YgdGhlIG1lZGlhLgorICovCitHc3RDbG9ja1RpbWUKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfZHVyYXRpb24gKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX01FRElBX0lORk8gKGluZm8pLCAtMSk7CisKKyAgcmV0dXJuIGluZm8tPmR1cmF0aW9uOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGFnczoKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJNZWRpYUluZm8KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRoZSB0YWdzIGNvbnRhaW5lZCBpbiBtZWRpYSBpbmZvLgorICovCitHc3RUYWdMaXN0ICoKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGFncyAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfTUVESUFfSU5GTyAoaW5mbyksIE5VTEwpOworCisgIHJldHVybiBpbmZvLT50YWdzOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGl0bGU6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyTWVkaWFJbmZvCisgKgorICogUmV0dXJuczogdGhlIG1lZGlhIHRpdGxlLgorICovCitjb25zdCBnY2hhciAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RpdGxlIChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9NRURJQV9JTkZPIChpbmZvKSwgTlVMTCk7CisKKyAgcmV0dXJuIGluZm8tPnRpdGxlOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfY29udGFpbmVyX2Zvcm1hdDoKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJNZWRpYUluZm8KKyAqCisgKiBSZXR1cm5zOiB0aGUgY29udGFpbmVyIGZvcm1hdC4KKyAqLworY29uc3QgZ2NoYXIgKgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9jb250YWluZXJfZm9ybWF0IChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9NRURJQV9JTkZPIChpbmZvKSwgTlVMTCk7CisKKyAgcmV0dXJuIGluZm8tPmNvbnRhaW5lcjsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2ltYWdlX3NhbXBsZToKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJNZWRpYUluZm8KKyAqCisgKiBGdW5jdGlvbiB0byBnZXQgdGhlIGltYWdlIChvciBwcmV2aWV3LWltYWdlKSBzdG9yZWQgaW4gdGFnbGlzdC4KKyAqIEFwcGxpY2F0aW9uIGNhbiB1c2UgZ3N0X3NhbXBsZV8qXygpIEFQSSdzIHRvIGdldCBjYXBzLCBidWZmZXIgZXRjLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogR3N0U2FtcGxlIG9yIE5VTEwuCisgKi8KK0dzdFNhbXBsZSAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2ltYWdlX3NhbXBsZSAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfTUVESUFfSU5GTyAoaW5mbyksIE5VTEwpOworCisgIHJldHVybiBpbmZvLT5pbWFnZV9zYW1wbGU7Cit9CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1tZWRpYS1pbmZvLmggYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1tZWRpYS1pbmZvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ1OGI3NQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLW1lZGlhLWluZm8uaApAQCAtMCwwICsxLDE5MiBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEJyaWplc2ggU2luZ2ggPGJyaWplc2gua3NpbmdoQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1BMQVlFUl9NRURJQV9JTkZPX0hfXworI2RlZmluZSBfX0dTVF9QTEFZRVJfTUVESUFfSU5GT19IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX1BMQVlFUl9TVFJFQU1fSU5GTyBcCisgIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF90eXBlICgpKQorI2RlZmluZSBHU1RfUExBWUVSX1NUUkVBTV9JTkZPKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfUExBWUVSX1NUUkVBTV9JTkZPLEdzdFBsYXllclN0cmVhbUluZm8pKQorI2RlZmluZSBHU1RfUExBWUVSX1NUUkVBTV9JTkZPX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1BMQVlFUl9TVFJFQU1fSU5GTyxHc3RQbGF5ZXJTdHJlYW1JbmZvKSkKKyNkZWZpbmUgR1NUX0lTX1BMQVlFUl9TVFJFQU1fSU5GTyhvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX1BMQVlFUl9TVFJFQU1fSU5GTykpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfU1RSRUFNX0lORk9fQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfUExBWUVSX1NUUkVBTV9JTkZPKSkKKworLyoqCisgKiBHc3RQbGF5ZXJTdHJlYW1JbmZvOgorICoKKyAqIEJhc2Ugc3RydWN0dXJlIGZvciBpbmZvcm1hdGlvbiBjb25jZXJpbmcgYSBtZWRpYSBzdHJlYW0uIERlcGVuZGluZyBvbgorICogdGhlIHN0cmVhbSB0eXBlLCBvbmUgY2FuIGZpbmQgbW9yZSBtZWRpYS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBpbgorICogI0dzdFBsYXllclZpZGVvSW5mbywgI0dzdFBsYXllckF1ZGlvSW5mbywgI0dzdFBsYXllclN1YnRpdGxlSW5mby4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllclN0cmVhbUluZm8gR3N0UGxheWVyU3RyZWFtSW5mbzsKK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJTdHJlYW1JbmZvQ2xhc3MgR3N0UGxheWVyU3RyZWFtSW5mb0NsYXNzOworR1R5cGUgZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdHlwZSAodm9pZCk7CisKK2dpbnQgICAgICAgICAgZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfaW5kZXgKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyU3RyZWFtSW5mbyAqaW5mbyk7Citjb25zdCBnY2hhciogIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3N0cmVhbV90eXBlCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllclN0cmVhbUluZm8gKmluZm8pOworR3N0VGFnTGlzdCogICBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF90YWdzCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllclN0cmVhbUluZm8gKmluZm8pOworR3N0Q2FwcyogICAgICBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jYXBzCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllclN0cmVhbUluZm8gKmluZm8pOworY29uc3QgZ2NoYXIqICBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jb2RlYworICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJTdHJlYW1JbmZvICppbmZvKTsKKworI2RlZmluZSBHU1RfVFlQRV9QTEFZRVJfVklERU9fSU5GTyBcCisgIChnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3R5cGUgKCkpCisjZGVmaW5lIEdTVF9QTEFZRVJfVklERU9fSU5GTyhvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX1BMQVlFUl9WSURFT19JTkZPLCBHc3RQbGF5ZXJWaWRlb0luZm8pKQorI2RlZmluZSBHU1RfUExBWUVSX1ZJREVPX0lORk9fQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChvYmopLEdTVF9UWVBFX1BMQVlFUl9WSURFT19JTkZPLCBHc3RQbGF5ZXJWaWRlb0luZm9DbGFzcykpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfVklERU9fSU5GTyhvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX1BMQVlFUl9WSURFT19JTkZPKSkKKyNkZWZpbmUgR1NUX0lTX1BMQVlFUl9WSURFT19JTkZPX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgob2JqKSxHU1RfVFlQRV9QTEFZRVJfVklERU9fSU5GTykpCisKKy8qKgorICogR3N0UGxheWVyVmlkZW9JbmZvOgorICoKKyAqICNHc3RQbGF5ZXJTdHJlYW1JbmZvIHNwZWNpZmljIHRvIHZpZGVvIHN0cmVhbXMuCisgKi8KK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJWaWRlb0luZm8gR3N0UGxheWVyVmlkZW9JbmZvOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllclZpZGVvSW5mb0NsYXNzIEdzdFBsYXllclZpZGVvSW5mb0NsYXNzOworR1R5cGUgZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF90eXBlICh2b2lkKTsKKworZ2ludCAgICAgICAgICBnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2JpdHJhdGUKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyVmlkZW9JbmZvKiBpbmZvKTsKK2dpbnQgICAgICAgICAgZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9tYXhfYml0cmF0ZQorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJWaWRlb0luZm8qIGluZm8pOworZ2ludCAgICAgICAgICBnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3dpZHRoCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllclZpZGVvSW5mbyogaW5mbyk7CitnaW50ICAgICAgICAgIGdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfaGVpZ2h0CisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllclZpZGVvSW5mbyogaW5mbyk7Cit2b2lkICAgICAgICAgIGdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfZnJhbWVyYXRlCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllclZpZGVvSW5mbyogaW5mbywgZ2ludCAqZnBzX24sIGdpbnQgKmZwc19kKTsKK3ZvaWQgICAgICAgICAgZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9waXhlbF9hc3BlY3RfcmF0aW8KKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyVmlkZW9JbmZvKiBpbmZvLCBndWludCAqcGFyX24sIGd1aW50ICpwYXJfZCk7CisKKyNkZWZpbmUgR1NUX1RZUEVfUExBWUVSX0FVRElPX0lORk8gXAorICAoZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF90eXBlICgpKQorI2RlZmluZSBHU1RfUExBWUVSX0FVRElPX0lORk8ob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9QTEFZRVJfQVVESU9fSU5GTywgR3N0UGxheWVyQXVkaW9JbmZvKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9BVURJT19JTkZPX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPLCBHc3RQbGF5ZXJBdWRpb0luZm9DbGFzcykpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfQVVESU9fSU5GTyhvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPKSkKKyNkZWZpbmUgR1NUX0lTX1BMQVlFUl9BVURJT19JTkZPX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPKSkKKworLyoqCisgKiBHc3RQbGF5ZXJBdWRpb0luZm86CisgKgorICogI0dzdFBsYXllclN0cmVhbUluZm8gc3BlY2lmaWMgdG8gYXVkaW8gc3RyZWFtcy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllckF1ZGlvSW5mbyBHc3RQbGF5ZXJBdWRpb0luZm87Cit0eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyQXVkaW9JbmZvQ2xhc3MgR3N0UGxheWVyQXVkaW9JbmZvQ2xhc3M7CitHVHlwZSBnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X3R5cGUgKHZvaWQpOworCitnaW50ICAgICAgICAgIGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfY2hhbm5lbHMKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyQXVkaW9JbmZvKiBpbmZvKTsKK2dpbnQgICAgICAgICAgZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9zYW1wbGVfcmF0ZQorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJBdWRpb0luZm8qIGluZm8pOworZ2ludCAgICAgICAgICBnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2JpdHJhdGUKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyQXVkaW9JbmZvKiBpbmZvKTsKK2dpbnQgICAgICAgICAgZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9tYXhfYml0cmF0ZQorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJBdWRpb0luZm8qIGluZm8pOworY29uc3QgZ2NoYXIqICBnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2xhbmd1YWdlCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllckF1ZGlvSW5mbyogaW5mbyk7CisKKyNkZWZpbmUgR1NUX1RZUEVfUExBWUVSX1NVQlRJVExFX0lORk8gXAorICAoZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX2dldF90eXBlICgpKQorI2RlZmluZSBHU1RfUExBWUVSX1NVQlRJVExFX0lORk8ob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9QTEFZRVJfU1VCVElUTEVfSU5GTywgR3N0UGxheWVyU3VidGl0bGVJbmZvKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9TVUJUSVRMRV9JTkZPX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1BMQVlFUl9TVUJUSVRMRV9JTkZPLEdzdFBsYXllclN1YnRpdGxlSW5mb0NsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX1BMQVlFUl9TVUJUSVRMRV9JTkZPKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfUExBWUVSX1NVQlRJVExFX0lORk8pKQorI2RlZmluZSBHU1RfSVNfUExBWUVSX1NVQlRJVExFX0lORk9fQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfUExBWUVSX1NVQlRJVExFX0lORk8pKQorCisvKioKKyAqIEdzdFBsYXllclN1YnRpdGxlSW5mbzoKKyAqCisgKiAjR3N0UGxheWVyU3RyZWFtSW5mbyBzcGVjaWZpYyB0byBzdWJ0aXRsZSBzdHJlYW1zLgorICovCit0eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyU3VidGl0bGVJbmZvIEdzdFBsYXllclN1YnRpdGxlSW5mbzsKK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJTdWJ0aXRsZUluZm9DbGFzcyBHc3RQbGF5ZXJTdWJ0aXRsZUluZm9DbGFzczsKK0dUeXBlIGdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19nZXRfdHlwZSAodm9pZCk7CisKK2NvbnN0IGdjaGFyKiAgZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX2dldF9sYW5ndWFnZQorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJTdWJ0aXRsZUluZm8qIGluZm8pOworCisjZGVmaW5lIEdTVF9UWVBFX1BMQVlFUl9NRURJQV9JTkZPIFwKKyAgKGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfUExBWUVSX01FRElBX0lORk8ob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9QTEFZRVJfTUVESUFfSU5GTyxHc3RQbGF5ZXJNZWRpYUluZm8pKQorI2RlZmluZSBHU1RfUExBWUVSX01FRElBX0lORk9fQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfUExBWUVSX01FRElBX0lORk8sR3N0UGxheWVyTWVkaWFJbmZvQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfUExBWUVSX01FRElBX0lORk8ob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9QTEFZRVJfTUVESUFfSU5GTykpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfTUVESUFfSU5GT19DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9QTEFZRVJfTUVESUFfSU5GTykpCisKKy8qKgorICogR3N0UGxheWVyTWVkaWFJbmZvOgorICoKKyAqIFN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBtZWRpYSBpbmZvcm1hdGlvbiBvZiBhIFVSSS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllck1lZGlhSW5mbyBHc3RQbGF5ZXJNZWRpYUluZm87Cit0eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyTWVkaWFJbmZvQ2xhc3MgR3N0UGxheWVyTWVkaWFJbmZvQ2xhc3M7CitHVHlwZSBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3R5cGUgKHZvaWQpOworCitjb25zdCBnY2hhciogIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdXJpCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqaW5mbyk7CitnYm9vbGVhbiAgICAgIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19pc19zZWVrYWJsZQorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKmluZm8pOworR3N0Q2xvY2tUaW1lICBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2R1cmF0aW9uCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqaW5mbyk7CitHTGlzdCogICAgICAgIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfc3RyZWFtX2xpc3QKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICppbmZvKTsKK0dMaXN0KiAgICAgICAgZ3N0X3BsYXllcl9nZXRfdmlkZW9fc3RyZWFtcworICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKmluZm8pOworR0xpc3QqICAgICAgICBnc3RfcGxheWVyX2dldF9hdWRpb19zdHJlYW1zCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqaW5mbyk7CitHTGlzdCogICAgICAgIGdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3N0cmVhbXMKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICppbmZvKTsKK0dzdFRhZ0xpc3QqICAgZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90YWdzCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqaW5mbyk7Citjb25zdCBnY2hhciogIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGl0bGUKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICppbmZvKTsKK2NvbnN0IGdjaGFyKiAgZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9jb250YWluZXJfZm9ybWF0CisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqaW5mbyk7CitHc3RTYW1wbGUqICAgIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfaW1hZ2Vfc2FtcGxlCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqaW5mbyk7CitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfUExBWUVSX01FRElBX0lORk9fSCAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXItcHJpdmF0ZS5oIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXItcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczOTkxNjEKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci1wcml2YXRlLmgKQEAgLTAsMCArMSwzNCBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUl9QUklWQVRFX0hfXworI2RlZmluZSBfX0dTVF9QTEFZRVJfU0lHTkFMX0RJU1BBVENIRVJfUFJJVkFURV9IX18KKworI2luY2x1ZGUgPGdzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmg+CisKK0dfQkVHSU5fREVDTFMKKworR19HTlVDX0lOVEVSTkFMIHZvaWQgZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaCAoR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciAqIHNlbGYsCisgICAgR3N0UGxheWVyICogcGxheWVyLCBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyRnVuYyBlbWl0dGVyLCBncG9pbnRlciBkYXRhLAorICAgIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3kpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSX1BSSVZBVEVfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5jIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2U3YjczCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuYwpAQCAtMCwwICsxLDU3IEBACisvKiBHU3RyZWFtZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImdzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5oIgorI2luY2x1ZGUgImdzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci1wcml2YXRlLmgiCisKK0dfREVGSU5FX0lOVEVSRkFDRSAoR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciwgZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlciwKKyAgICBHX1RZUEVfT0JKRUNUKTsKKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZGVmYXVsdF9pbml0IChHX0dOVUNfVU5VU0VECisgICAgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZSAqIGlmYWNlKQoreworCit9CisKK3ZvaWQKK2dzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2ggKEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIgKiBzZWxmLAorICAgIEdzdFBsYXllciAqIHBsYXllciwgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckZ1bmMgZW1pdHRlciwgZ3BvaW50ZXIgZGF0YSwKKyAgICBHRGVzdHJveU5vdGlmeSBkZXN0cm95KQoreworICBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlICppZmFjZTsKKworICBpZiAoIXNlbGYpIHsKKyAgICBlbWl0dGVyIChkYXRhKTsKKyAgICBpZiAoZGVzdHJveSkKKyAgICAgIGRlc3Ryb3kgKGRhdGEpOworICAgIHJldHVybjsKKyAgfQorCisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfU0lHTkFMX0RJU1BBVENIRVIgKHNlbGYpKTsKKyAgaWZhY2UgPSBHU1RfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSX0dFVF9JTlRFUkZBQ0UgKHNlbGYpOworICBnX3JldHVybl9pZl9mYWlsIChpZmFjZS0+ZGlzcGF0Y2ggIT0gTlVMTCk7CisKKyAgaWZhY2UtPmRpc3BhdGNoIChzZWxmLCBwbGF5ZXIsIGVtaXR0ZXIsIGRhdGEsIGRlc3Ryb3kpOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuaCBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYzMzhiMgotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmgKQEAgLTAsMCArMSw1MyBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUl9IX18KKyNkZWZpbmUgX19HU1RfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSX0hfXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9wbGF5ZXIvZ3N0cGxheWVyLXR5cGVzLmg+CisKK0dfQkVHSU5fREVDTFMKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXIgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlIEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2U7CisKKyNkZWZpbmUgR1NUX1RZUEVfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSICAgICAgICAgICAgICAgIChnc3RfcGxheWVyX3NpZ25hbF9kaXNwYXRjaGVyX2dldF90eXBlICgpKQorI2RlZmluZSBHU1RfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSKG9iaikgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSLCBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyKSkKKyNkZWZpbmUgR1NUX0lTX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUihvYmopICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUikpCisjZGVmaW5lIEdTVF9QTEFZRVJfU0lHTkFMX0RJU1BBVENIRVJfR0VUX0lOVEVSRkFDRShpbnN0KSAoR19UWVBFX0lOU1RBTkNFX0dFVF9JTlRFUkZBQ0UgKChpbnN0KSwgR1NUX1RZUEVfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSLCBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlKSkKKwordHlwZWRlZiB2b2lkICgqR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckZ1bmMpIChncG9pbnRlciBkYXRhKTsKKworc3RydWN0IF9Hc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlIHsKKyAgR1R5cGVJbnRlcmZhY2UgcGFyZW50X2lmYWNlOworCisgIHZvaWQgKCpkaXNwYXRjaCkgKEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIgKiBzZWxmLAorICAgICAgICAgICAgICAgICAgICBHc3RQbGF5ZXIgKiBwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgIEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJGdW5jIGVtaXR0ZXIsCisgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIGRhdGEsCisgICAgICAgICAgICAgICAgICAgIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3kpOworfTsKKworR1R5cGUgICAgICAgIGdzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZ2V0X3R5cGUgICAgKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L29wdXMvZ3N0b3B1c2NvbW1vbi5oIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdHlwZXMuaApzaW1pbGFyaXR5IGluZGV4IDYwJQpjb3B5IGZyb20gZXh0L29wdXMvZ3N0b3B1c2NvbW1vbi5oCmNvcHkgdG8gZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdHlwZXMuaAppbmRleCA3MTc3MWFlLi5mNjYyN2U2IDEwMDY0NAotLS0gYS9leHQvb3B1cy9nc3RvcHVzY29tbW9uLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdHlwZXMuaApAQCAtMSw1ICsxLDYgQEAKLS8qIEdTdHJlYW1lciBPcHVzIEVuY29kZXIKLSAqIENvcHlyaWdodCAoQykgMjAwOSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKy8qIEdTdHJlYW1lcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNywyMSArMTgsMTggQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLQotI2lmbmRlZiBfX0dTVF9PUFVTX0NPTU1PTl9IX18KLSNkZWZpbmUgX19HU1RfT1BVU19DT01NT05fSF9fCisjaWZuZGVmIF9fR1NUX1BMQVlFUl9UWVBFU19IX18KKyNkZWZpbmUgX19HU1RfUExBWUVSX1RZUEVTX0hfXwogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKLWV4dGVybiBjb25zdCBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiBnc3Rfb3B1c19jaGFubmVsX3Bvc2l0aW9uc1tdWzhdOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmdzdF9vcHVzX2NoYW5uZWxfbmFtZXNbXTsKLWV4dGVybiB2b2lkIGdzdF9vcHVzX2NvbW1vbl9sb2dfY2hhbm5lbF9tYXBwaW5nX3RhYmxlIChHc3RFbGVtZW50ICplbGVtZW50LAotICAgIEdzdERlYnVnQ2F0ZWdvcnkgKiBjYXRlZ29yeSwgY29uc3QgY2hhciAqbXNnLAotICAgIGludCBuX2NoYW5uZWxzLCBjb25zdCBndWludDggKnRhYmxlKTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXIgR3N0UGxheWVyOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllckNsYXNzIEdzdFBsYXllckNsYXNzOwogCiBHX0VORF9ERUNMUwogCi0jZW5kaWYgLyogX19HU1RfT1BVU19DT01NT05fSF9fICovCisjZW5kaWYgLyogX19HU1RfUExBWUVSX1RZUEVTX0hfXyAqLworCisKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuYyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmEzNWUwCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5jCkBAIC0wLDAgKzEsMzA5IEBACisvKiBHU3RyZWFtZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKy8qKgorICogU0VDVElPTjpnc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlcgorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBQbGF5ZXIgVmlkZW8gT3ZlcmxheSBWaWRlbyBSZW5kZXJlcgorICoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5oIgorI2luY2x1ZGUgImdzdHBsYXllci5oIgorCisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisKK3N0cnVjdCBfR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlcgoreworICBHT2JqZWN0IHBhcmVudDsKKworICBHc3RWaWRlb092ZXJsYXkgKnZpZGVvX292ZXJsYXk7CisgIGdwb2ludGVyIHdpbmRvd19oYW5kbGU7CisgIGdpbnQgeCwgeSwgd2lkdGgsIGhlaWdodDsKK307CisKK3N0cnVjdCBfR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlckNsYXNzCit7CisgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitzdGF0aWMgdm9pZAorICAgIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9pbnRlcmZhY2VfaW5pdAorICAgIChHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlICogaWZhY2UpOworCitlbnVtCit7CisgIFZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVJfUFJPUF8wLAorICBWSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX1BST1BfV0lORE9XX0hBTkRMRSwKKyAgVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9QUk9QX0xBU1QKK307CisKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyLAorICAgIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlciwgR19UWVBFX09CSkVDVCwKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UgKEdTVF9UWVBFX1BMQVlFUl9WSURFT19SRU5ERVJFUiwKKyAgICAgICAgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2ludGVyZmFjZV9pbml0KSk7CisKK3N0YXRpYyBHUGFyYW1TcGVjCisgICAgKiB2aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3BhcmFtX3NwZWNzCisgICAgW1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVJfUFJPUF9MQVNUXSA9IHsgTlVMTCwgfTsKKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCisgICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciAqc2VsZiA9CisgICAgICBHU1RfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBWSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX1BST1BfV0lORE9XX0hBTkRMRToKKyAgICAgIHNlbGYtPndpbmRvd19oYW5kbGUgPSBnX3ZhbHVlX2dldF9wb2ludGVyICh2YWx1ZSk7CisgICAgICBpZiAoc2VsZi0+dmlkZW9fb3ZlcmxheSkKKyAgICAgICAgZ3N0X3ZpZGVvX292ZXJsYXlfc2V0X3dpbmRvd19oYW5kbGUgKHNlbGYtPnZpZGVvX292ZXJsYXksCisgICAgICAgICAgICAoZ3VpbnRwdHIpIHNlbGYtPndpbmRvd19oYW5kbGUpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKKyAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyICpzZWxmID0KKyAgICAgIEdTVF9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUiAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVJfUFJPUF9XSU5ET1dfSEFORExFOgorICAgICAgZ192YWx1ZV9zZXRfcG9pbnRlciAodmFsdWUsIHNlbGYtPndpbmRvd19oYW5kbGUpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyICpzZWxmID0KKyAgICAgIEdTVF9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUiAob2JqZWN0KTsKKworICBpZiAoc2VsZi0+dmlkZW9fb3ZlcmxheSkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzZWxmLT52aWRlb19vdmVybGF5KTsKKworICBHX09CSkVDVF9DTEFTUworICAgICAgKGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQKKyAgICBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfY2xhc3NfaW5pdAorICAgIChHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPQorICAgICAgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF9wcm9wZXJ0eTsKKyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0KKyAgICAgIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2ZpbmFsaXplOworCisgIHZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfcGFyYW1fc3BlY3MKKyAgICAgIFtWSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX1BST1BfV0lORE9XX0hBTkRMRV0gPQorICAgICAgZ19wYXJhbV9zcGVjX3BvaW50ZXIgKCJ3aW5kb3ctaGFuZGxlIiwgIldpbmRvdyBIYW5kbGUiLAorICAgICAgIldpbmRvdyBoYW5kbGUgdG8gZW1iZWQgdGhlIHZpZGVvIGludG8iLAorICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydGllcyAoZ29iamVjdF9jbGFzcywKKyAgICAgIFZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVJfUFJPUF9MQVNULAorICAgICAgdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9wYXJhbV9zcGVjcyk7Cit9CisKK3N0YXRpYyB2b2lkCisgICAgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2luaXQKKyAgICAoR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciAqIHNlbGYpCit7CisgIHNlbGYtPnggPSBzZWxmLT55ID0gc2VsZi0+d2lkdGggPSBzZWxmLT5oZWlnaHQgPSAtMTsKK30KKworc3RhdGljIEdzdEVsZW1lbnQgKmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9jcmVhdGVfdmlkZW9fc2luaworICAgIChHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyICogaWZhY2UsIEdzdFBsYXllciAqIHBsYXllcikKK3sKKyAgR3N0RWxlbWVudCAqdmlkZW9fb3ZlcmxheTsKKyAgR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciAqc2VsZiA9CisgICAgICBHU1RfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIgKGlmYWNlKTsKKworICBpZiAoc2VsZi0+dmlkZW9fb3ZlcmxheSkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzZWxmLT52aWRlb19vdmVybGF5KTsKKworICB2aWRlb19vdmVybGF5ID0gZ3N0X3BsYXllcl9nZXRfcGlwZWxpbmUgKHBsYXllcik7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfVklERU9fT1ZFUkxBWSAodmlkZW9fb3ZlcmxheSksIE5VTEwpOworCisgIHNlbGYtPnZpZGVvX292ZXJsYXkgPSBHU1RfVklERU9fT1ZFUkxBWSAodmlkZW9fb3ZlcmxheSk7CisKKyAgZ3N0X3ZpZGVvX292ZXJsYXlfc2V0X3dpbmRvd19oYW5kbGUgKHNlbGYtPnZpZGVvX292ZXJsYXksCisgICAgICAoZ3VpbnRwdHIpIHNlbGYtPndpbmRvd19oYW5kbGUpOworICBpZiAoc2VsZi0+d2lkdGggIT0gLTEgfHwgc2VsZi0+aGVpZ2h0ICE9IC0xKQorICAgIGdzdF92aWRlb19vdmVybGF5X3NldF9yZW5kZXJfcmVjdGFuZ2xlIChzZWxmLT52aWRlb19vdmVybGF5LCBzZWxmLT54LAorICAgICAgICBzZWxmLT55LCBzZWxmLT53aWR0aCwgc2VsZi0+aGVpZ2h0KTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQKKyAgICBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfaW50ZXJmYWNlX2luaXQKKyAgICAoR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSAqIGlmYWNlKQoreworICBpZmFjZS0+Y3JlYXRlX3ZpZGVvX3NpbmsgPQorICAgICAgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2NyZWF0ZV92aWRlb19zaW5rOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9uZXc6CisgKiBAd2luZG93X2hhbmRsZTogKGFsbG93LW5vbmUpOiBXaW5kb3cgaGFuZGxlIHRvIHVzZSBvciAlTlVMTAorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKToKKyAqLworR3N0UGxheWVyVmlkZW9SZW5kZXJlciAqCitnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfbmV3IChncG9pbnRlciB3aW5kb3dfaGFuZGxlKQoreworICByZXR1cm4gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUiwKKyAgICAgICJ3aW5kb3ctaGFuZGxlIiwgd2luZG93X2hhbmRsZSwgTlVMTCk7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF93aW5kb3dfaGFuZGxlOgorICogQHNlbGY6ICNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIGluc3RhbmNlCisgKiBAd2luZG93X2hhbmRsZTogaGFuZGxlIHJlZmVyZW5jaW5nIHRvIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyB3aW5kb3cKKyAqCisgKiBTZXRzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyB3aW5kb3cgaGFuZGxlIGludG8gd2hpY2ggdGhlIHZpZGVvCisgKiBzaG91bGQgYmUgcmVuZGVyZWQKKyAqKi8KK3ZvaWQgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF93aW5kb3dfaGFuZGxlCisgICAgKEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIgKiBzZWxmLCBncG9pbnRlciB3aW5kb3dfaGFuZGxlKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIgKHNlbGYpKTsKKworICBnX29iamVjdF9zZXQgKHNlbGYsICJ3aW5kb3ctaGFuZGxlIiwgd2luZG93X2hhbmRsZSwgTlVMTCk7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF93aW5kb3dfaGFuZGxlOgorICogQHNlbGY6ICNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIGluc3RhbmNlCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiBUaGUgY3VycmVudGx5IHNldCwgcGxhdGZvcm0gc3BlY2lmaWMgd2luZG93CisgKiBoYW5kbGUKKyAqLworZ3BvaW50ZXIKKyAgICBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3dpbmRvd19oYW5kbGUKKyAgICAoR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciAqIHNlbGYpIHsKKyAgZ3BvaW50ZXIgd2luZG93X2hhbmRsZTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSIChzZWxmKSwKKyAgICAgIE5VTEwpOworCisgIGdfb2JqZWN0X2dldCAoc2VsZiwgIndpbmRvdy1oYW5kbGUiLCAmd2luZG93X2hhbmRsZSwgTlVMTCk7CisKKyAgcmV0dXJuIHdpbmRvd19oYW5kbGU7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2V4cG9zZToKKyAqIEBzZWxmOiBhICNHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyIGluc3RhbmNlLgorICoKKyAqIFRlbGwgYW4gb3ZlcmxheSB0aGF0IGl0IGhhcyBiZWVuIGV4cG9zZWQuIFRoaXMgd2lsbCByZWRyYXcgdGhlIGN1cnJlbnQgZnJhbWUKKyAqIGluIHRoZSBkcmF3YWJsZSBldmVuIGlmIHRoZSBwaXBlbGluZSBpcyBQQVVTRUQuCisgKi8KK3ZvaWQgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2V4cG9zZQorICAgIChHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyICogc2VsZikKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSIChzZWxmKSk7CisKKyAgaWYgKHNlbGYtPnZpZGVvX292ZXJsYXkpCisgICAgZ3N0X3ZpZGVvX292ZXJsYXlfZXhwb3NlIChzZWxmLT52aWRlb19vdmVybGF5KTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3JlbmRlcl9yZWN0YW5nbGU6CisgKiBAc2VsZjogYSAjR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciBpbnN0YW5jZQorICogQHg6IHRoZSBob3Jpem9udGFsIG9mZnNldCBvZiB0aGUgcmVuZGVyIGFyZWEgaW5zaWRlIHRoZSB3aW5kb3cKKyAqIEB5OiB0aGUgdmVydGljYWwgb2Zmc2V0IG9mIHRoZSByZW5kZXIgYXJlYSBpbnNpZGUgdGhlIHdpbmRvdworICogQHdpZHRoOiB0aGUgd2lkdGggb2YgdGhlIHJlbmRlciBhcmVhIGluc2lkZSB0aGUgd2luZG93CisgKiBAaGVpZ2h0OiB0aGUgaGVpZ2h0IG9mIHRoZSByZW5kZXIgYXJlYSBpbnNpZGUgdGhlIHdpbmRvdworICoKKyAqIENvbmZpZ3VyZSBhIHN1YnJlZ2lvbiBhcyBhIHZpZGVvIHRhcmdldCB3aXRoaW4gdGhlIHdpbmRvdyBzZXQgYnkKKyAqIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZSgpLiBJZiB0aGlzIGlzIG5vdAorICogdXNlZCBvciBub3Qgc3VwcG9ydGVkIHRoZSB2aWRlbyB3aWxsIGZpbGwgdGhlIGFyZWEgb2YgdGhlIHdpbmRvdyBzZXQgYXMgdGhlCisgKiBvdmVybGF5IHRvIDEwMCUuIEJ5IHNwZWNpZnlpbmcgdGhlIHJlY3RhbmdsZSwgdGhlIHZpZGVvIGNhbiBiZSBvdmVybGF5ZWQgdG8KKyAqIGEgc3BlY2lmaWMgcmVnaW9uIG9mIHRoYXQgd2luZG93IG9ubHkuIEFmdGVyIHNldHRpbmcgdGhlIG5ldyByZWN0YW5nbGUgb25lCisgKiBzaG91bGQgY2FsbCBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZXhwb3NlKCkgdG8gZm9yY2UgYQorICogcmVkcmF3LiBUbyB1bnNldCB0aGUgcmVnaW9uIHBhc3MgLTEgZm9yIHRoZSBAd2lkdGggYW5kIEBoZWlnaHQgcGFyYW1ldGVycy4KKyAqCisgKiBUaGlzIG1ldGhvZCBpcyBuZWVkZWQgZm9yIG5vbiBmdWxsc2NyZWVuIHZpZGVvIG92ZXJsYXkgaW4gVUkgdG9vbGtpdHMgdGhhdAorICogZG8gbm90IHN1cHBvcnQgc3Vid2luZG93cy4KKyAqCisgKi8KK3ZvaWQgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF9yZW5kZXJfcmVjdGFuZ2xlCisgICAgKEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIgKiBzZWxmLCBnaW50IHgsIGdpbnQgeSwgZ2ludCB3aWR0aCwKKyAgICBnaW50IGhlaWdodCkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSIChzZWxmKSk7CisKKyAgc2VsZi0+eCA9IHg7CisgIHNlbGYtPnkgPSB5OworICBzZWxmLT53aWR0aCA9IHdpZHRoOworICBzZWxmLT5oZWlnaHQgPSBoZWlnaHQ7CisKKyAgaWYgKHNlbGYtPnZpZGVvX292ZXJsYXkpCisgICAgZ3N0X3ZpZGVvX292ZXJsYXlfc2V0X3JlbmRlcl9yZWN0YW5nbGUgKHNlbGYtPnZpZGVvX292ZXJsYXksCisgICAgICAgIHgsIHksIHdpZHRoLCBoZWlnaHQpOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfcmVuZGVyX3JlY3RhbmdsZToKKyAqIEBzZWxmOiBhICNHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyIGluc3RhbmNlCisgKiBAeDogKG91dCkgKGFsbG93LW5vbmUpOiB0aGUgaG9yaXpvbnRhbCBvZmZzZXQgb2YgdGhlIHJlbmRlciBhcmVhIGluc2lkZSB0aGUgd2luZG93CisgKiBAeTogKG91dCkgKGFsbG93LW5vbmUpOiB0aGUgdmVydGljYWwgb2Zmc2V0IG9mIHRoZSByZW5kZXIgYXJlYSBpbnNpZGUgdGhlIHdpbmRvdworICogQHdpZHRoOiAob3V0KSAoYWxsb3ctbm9uZSk6IHRoZSB3aWR0aCBvZiB0aGUgcmVuZGVyIGFyZWEgaW5zaWRlIHRoZSB3aW5kb3cKKyAqIEBoZWlnaHQ6IChvdXQpIChhbGxvdy1ub25lKTogdGhlIGhlaWdodCBvZiB0aGUgcmVuZGVyIGFyZWEgaW5zaWRlIHRoZSB3aW5kb3cKKyAqCisgKiBSZXR1cm4gdGhlIGN1cnJlbnRseSBjb25maWd1cmVkIHJlbmRlciByZWN0YW5nbGUuIFNlZSBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3JlbmRlcl9yZWN0YW5nbGUoKQorICogZm9yIGRldGFpbHMuCisgKgorICovCit2b2lkIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfcmVuZGVyX3JlY3RhbmdsZQorICAgIChHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyICogc2VsZiwgZ2ludCAqIHgsIGdpbnQgKiB5LAorICAgIGdpbnQgKiB3aWR0aCwgZ2ludCAqIGhlaWdodCkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSIChzZWxmKSk7CisKKyAgaWYgKHgpCisgICAgKnggPSBzZWxmLT54OworICBpZiAoeSkKKyAgICAqeSA9IHNlbGYtPnk7CisgIGlmICh3aWR0aCkKKyAgICAqd2lkdGggPSBzZWxmLT53aWR0aDsKKyAgaWYgKGhlaWdodCkKKyAgICAqaGVpZ2h0ID0gc2VsZi0+aGVpZ2h0OworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5oIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMDkxMTMKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmgKQEAgLTAsMCArMSw1MyBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX0hfXworI2RlZmluZSBfX0dTVF9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9IX18KKworI2luY2x1ZGUgPGdzdC9wbGF5ZXIvZ3N0cGxheWVyLXR5cGVzLmg+CisjaW5jbHVkZSA8Z3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuaD4KKworR19CRUdJTl9ERUNMUworCit0eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlcgorICAgIEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXI7Cit0eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlckNsYXNzCisgICAgR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlckNsYXNzOworCisjZGVmaW5lIEdTVF9UWVBFX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSICAgICAgICAgICAgIChnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUihvYmopICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSKSkKKyNkZWZpbmUgR1NUX0lTX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX0NMQVNTKGtsYXNzKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUikpCisjZGVmaW5lIEdTVF9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9HRVRfQ0xBU1Mob2JqKSAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgR1NUX1RZUEVfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIsIEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXJDbGFzcykpCisjZGVmaW5lIEdTVF9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUihvYmopICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSLCBHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX0NMQVNTKGtsYXNzKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUiwgR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlckNsYXNzKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX0NBU1Qob2JqKSAgICAgICAgKChHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyKikob2JqKSkKKworR1R5cGUgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF90eXBlICh2b2lkKTsKK0dzdFBsYXllclZpZGVvUmVuZGVyZXIgKiBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfbmV3IChncG9pbnRlciB3aW5kb3dfaGFuZGxlKTsKK3ZvaWQgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF93aW5kb3dfaGFuZGxlIChHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyICogc2VsZiwgZ3BvaW50ZXIgd2luZG93X2hhbmRsZSk7CitncG9pbnRlciBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3dpbmRvd19oYW5kbGUgKEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIgKiBzZWxmKTsKKwordm9pZCBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZXhwb3NlIChHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyICogc2VsZik7Cit2b2lkIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfcmVuZGVyX3JlY3RhbmdsZSAoR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciAqIHNlbGYsIGdpbnQgeCwgZ2ludCB5LCBnaW50IHdpZHRoLCBnaW50IGhlaWdodCk7Cit2b2lkIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfcmVuZGVyX3JlY3RhbmdsZSAoR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciAqIHNlbGYsIGdpbnQgKngsIGdpbnQgKnksIGdpbnQgKndpZHRoLCBnaW50ICpoZWlnaHQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVJfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1yZW5kZXJlci1wcml2YXRlLmggYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1yZW5kZXJlci1wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVjYWIxNQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLXByaXZhdGUuaApAQCAtMCwwICsxLDMzIEBACisvKiBHU3RyZWFtZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfUExBWUVSX1ZJREVPX1JFTkRFUkVSX1BSSVZBVEVfSF9fCisjZGVmaW5lIF9fR1NUX1BMQVlFUl9WSURFT19SRU5ERVJFUl9QUklWQVRFX0hfXworCisjaW5jbHVkZSA8Z3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuaD4KKworR19CRUdJTl9ERUNMUworCitHX0dOVUNfSU5URVJOQUwgR3N0RWxlbWVudCAqIGdzdF9wbGF5ZXJfdmlkZW9fcmVuZGVyZXJfY3JlYXRlX3ZpZGVvX3NpbmsgKEdzdFBsYXllclZpZGVvUmVuZGVyZXIgKgorICAgIHNlbGYsIEdzdFBsYXllciAqIHBsYXllcik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9QTEFZRVJfVklERU9fUkVOREVSRVJfUFJJVkFURV9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmMgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1yZW5kZXJlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYWY2YTgKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1yZW5kZXJlci5jCkBAIC0wLDAgKzEsNDkgQEAKKy8qIEdTdHJlYW1lcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmgiCisjaW5jbHVkZSAiZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLXByaXZhdGUuaCIKKworR19ERUZJTkVfSU5URVJGQUNFIChHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyLCBnc3RfcGxheWVyX3ZpZGVvX3JlbmRlcmVyLAorICAgIEdfVFlQRV9PQkpFQ1QpOworCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl92aWRlb19yZW5kZXJlcl9kZWZhdWx0X2luaXQgKEdfR05VQ19VTlVTRUQKKyAgICBHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlICogaWZhY2UpCit7CisKK30KKworR3N0RWxlbWVudCAqCitnc3RfcGxheWVyX3ZpZGVvX3JlbmRlcmVyX2NyZWF0ZV92aWRlb19zaW5rIChHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXIgKiBwbGF5ZXIpCit7CisgIEdzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2UgKmlmYWNlOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX1ZJREVPX1JFTkRFUkVSIChzZWxmKSwgTlVMTCk7CisgIGlmYWNlID0gR1NUX1BMQVlFUl9WSURFT19SRU5ERVJFUl9HRVRfSU5URVJGQUNFIChzZWxmKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGlmYWNlLT5jcmVhdGVfdmlkZW9fc2luayAhPSBOVUxMLCBOVUxMKTsKKworICByZXR1cm4gaWZhY2UtPmNyZWF0ZV92aWRlb19zaW5rIChzZWxmLCBwbGF5ZXIpOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuaCBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlkZjVjOQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmgKQEAgLTAsMCArMSw0NyBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1BMQVlFUl9WSURFT19SRU5ERVJFUl9IX18KKyNkZWZpbmUgX19HU1RfUExBWUVSX1ZJREVPX1JFTkRFUkVSX0hfXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9wbGF5ZXIvZ3N0cGxheWVyLXR5cGVzLmg+CisKK0dfQkVHSU5fREVDTFMKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllclZpZGVvUmVuZGVyZXIgR3N0UGxheWVyVmlkZW9SZW5kZXJlcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlIEdzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2U7CisKKyNkZWZpbmUgR1NUX1RZUEVfUExBWUVSX1ZJREVPX1JFTkRFUkVSICAgICAgICAgICAgICAgIChnc3RfcGxheWVyX3ZpZGVvX3JlbmRlcmVyX2dldF90eXBlICgpKQorI2RlZmluZSBHU1RfUExBWUVSX1ZJREVPX1JFTkRFUkVSKG9iaikgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfUExBWUVSX1ZJREVPX1JFTkRFUkVSLCBHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyKSkKKyNkZWZpbmUgR1NUX0lTX1BMQVlFUl9WSURFT19SRU5ERVJFUihvYmopICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX1BMQVlFUl9WSURFT19SRU5ERVJFUikpCisjZGVmaW5lIEdTVF9QTEFZRVJfVklERU9fUkVOREVSRVJfR0VUX0lOVEVSRkFDRShpbnN0KSAoR19UWVBFX0lOU1RBTkNFX0dFVF9JTlRFUkZBQ0UgKChpbnN0KSwgR1NUX1RZUEVfUExBWUVSX1ZJREVPX1JFTkRFUkVSLCBHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlKSkKKworc3RydWN0IF9Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlIHsKKyAgR1R5cGVJbnRlcmZhY2UgcGFyZW50X2lmYWNlOworCisgIEdzdEVsZW1lbnQgKiAoKmNyZWF0ZV92aWRlb19zaW5rKSAoR3N0UGxheWVyVmlkZW9SZW5kZXJlciAqIHNlbGYsIEdzdFBsYXllciAqIHBsYXllcik7Cit9OworCitHVHlwZSAgICAgICAgZ3N0X3BsYXllcl92aWRlb19yZW5kZXJlcl9nZXRfdHlwZSAgICAgICAodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9QTEFZRVJfVklERU9fUkVOREVSRVJfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aXN1YWxpemF0aW9uLmMgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aXN1YWxpemF0aW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk5NzZhNwotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uYwpAQCAtMCwwICsxLDE3OCBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBCcmlqZXNoIFNpbmdoIDxicmlqZXNoLmtzaW5naEBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworLyoqCisgKiBTRUNUSU9OOmdzdHBsYXllci12aXN1YWxpemF0aW9uCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IFBsYXllciBWaXN1YWxpemF0aW9uCisgKgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImdzdHBsYXllci12aXN1YWxpemF0aW9uLmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworc3RhdGljIEdNdXRleCB2aXNfbG9jazsKK3N0YXRpYyBHUXVldWUgdmlzX2xpc3QgPSBHX1FVRVVFX0lOSVQ7CitzdGF0aWMgZ3VpbnQzMiB2aXNfY29va2llOworCitHX0RFRklORV9CT1hFRF9UWVBFIChHc3RQbGF5ZXJWaXN1YWxpemF0aW9uLCBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb24sCisgICAgKEdCb3hlZENvcHlGdW5jKSBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fY29weSwKKyAgICAoR0JveGVkRnJlZUZ1bmMpIGdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9mcmVlKTsKKworLyoqCisgKiBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZnJlZToKKyAqIEB2aXM6ICNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIGluc3RhbmNlCisgKgorICogRnJlZXMgYSAjR3N0UGxheWVyVmlzdWFsaXphdGlvbi4KKyAqLwordm9pZAorZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2ZyZWUgKEdzdFBsYXllclZpc3VhbGl6YXRpb24gKiB2aXMpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKHZpcyAhPSBOVUxMKTsKKworICBnX2ZyZWUgKHZpcy0+bmFtZSk7CisgIGdfZnJlZSAodmlzLT5kZXNjcmlwdGlvbik7CisgIGdfZnJlZSAodmlzKTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fY29weToKKyAqIEB2aXM6ICNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIGluc3RhbmNlCisgKgorICogTWFrZXMgYSBjb3B5IG9mIHRoZSAjR3N0UGxheWVyVmlzdWFsaXphdGlvbi4gVGhlIHJlc3VsdCBtdXN0IGJlCisgKiBmcmVlZCB1c2luZyBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZnJlZSgpLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYW4gYWxsb2NhdGVkIGNvcHkgb2YgQHZpcy4KKyAqLworR3N0UGxheWVyVmlzdWFsaXphdGlvbiAqCitnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fY29weSAoY29uc3QgR3N0UGxheWVyVmlzdWFsaXphdGlvbiAqIHZpcykKK3sKKyAgR3N0UGxheWVyVmlzdWFsaXphdGlvbiAqcmV0OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh2aXMgIT0gTlVMTCwgTlVMTCk7CisKKyAgcmV0ID0gZ19uZXcwIChHc3RQbGF5ZXJWaXN1YWxpemF0aW9uLCAxKTsKKyAgcmV0LT5uYW1lID0gdmlzLT5uYW1lID8gZ19zdHJkdXAgKHZpcy0+bmFtZSkgOiBOVUxMOworICByZXQtPmRlc2NyaXB0aW9uID0gdmlzLT5kZXNjcmlwdGlvbiA/IGdfc3RyZHVwICh2aXMtPmRlc2NyaXB0aW9uKSA6IE5VTEw7CisKKyAgcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2ZyZWU6CisgKiBAdmlzczogYSAlTlVMTCB0ZXJtaW5hdGVkIGFycmF5IG9mICNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIHRvIGZyZWUKKyAqCisgKiBGcmVlcyBhICVOVUxMIHRlcm1pbmF0ZWQgYXJyYXkgb2YgI0dzdFBsYXllclZpc3VhbGl6YXRpb24uCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZnJlZSAoR3N0UGxheWVyVmlzdWFsaXphdGlvbiAqKiB2aXNzKQoreworICBHc3RQbGF5ZXJWaXN1YWxpemF0aW9uICoqcDsKKworICBnX3JldHVybl9pZl9mYWlsICh2aXNzICE9IE5VTEwpOworCisgIHAgPSB2aXNzOworICB3aGlsZSAoKnApIHsKKyAgICBnX2ZyZWUgKCgqcCktPm5hbWUpOworICAgIGdfZnJlZSAoKCpwKS0+ZGVzY3JpcHRpb24pOworICAgIGdfZnJlZSAoKnApOworICAgIHArKzsKKyAgfQorICBnX2ZyZWUgKHZpc3MpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl91cGRhdGVfdmlzdWFsaXphdGlvbl9saXN0ICh2b2lkKQoreworICBHTGlzdCAqZmVhdHVyZXM7CisgIEdMaXN0ICpsOworICBndWludDMyIGNvb2tpZTsKKyAgR3N0UGxheWVyVmlzdWFsaXphdGlvbiAqdmlzOworCisgIGdfbXV0ZXhfbG9jayAoJnZpc19sb2NrKTsKKworICAvKiBjaGVjayBpZiB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbGlzdCAqLworICBjb29raWUgPSBnc3RfcmVnaXN0cnlfZ2V0X2ZlYXR1cmVfbGlzdF9jb29raWUgKGdzdF9yZWdpc3RyeV9nZXQgKCkpOworICBpZiAodmlzX2Nvb2tpZSA9PSBjb29raWUpIHsKKyAgICBnX211dGV4X3VubG9jayAoJnZpc19sb2NrKTsKKyAgICByZXR1cm47CisgIH0KKworICAvKiBpZiB1cGRhdGUgaXMgbmVlZGVkIHRoZW4gZmlyc3QgZnJlZSB0aGUgZXhpc3RpbmcgbGlzdCAqLworICB3aGlsZSAoKHZpcyA9IGdfcXVldWVfcG9wX2hlYWQgKCZ2aXNfbGlzdCkpKQorICAgIGdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9mcmVlICh2aXMpOworCisgIGZlYXR1cmVzID0gZ3N0X3JlZ2lzdHJ5X2dldF9mZWF0dXJlX2xpc3QgKGdzdF9yZWdpc3RyeV9nZXQgKCksCisgICAgICBHU1RfVFlQRV9FTEVNRU5UX0ZBQ1RPUlkpOworCisgIGZvciAobCA9IGZlYXR1cmVzOyBsOyBsID0gbC0+bmV4dCkgeworICAgIEdzdFBsdWdpbkZlYXR1cmUgKmZlYXR1cmUgPSBsLT5kYXRhOworICAgIGNvbnN0IGdjaGFyICprbGFzczsKKworICAgIGtsYXNzID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEgKEdTVF9FTEVNRU5UX0ZBQ1RPUlkgKGZlYXR1cmUpLAorICAgICAgICBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFTUyk7CisKKyAgICBpZiAoc3Ryc3RyIChrbGFzcywgIlZpc3VhbGl6YXRpb24iKSkgeworICAgICAgdmlzID0gZ19uZXcwIChHc3RQbGF5ZXJWaXN1YWxpemF0aW9uLCAxKTsKKworICAgICAgdmlzLT5uYW1lID0gZ19zdHJkdXAgKGdzdF9wbHVnaW5fZmVhdHVyZV9nZXRfbmFtZSAoZmVhdHVyZSkpOworICAgICAgdmlzLT5kZXNjcmlwdGlvbiA9CisgICAgICAgICAgZ19zdHJkdXAgKGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFkYXRhIChHU1RfRUxFTUVOVF9GQUNUT1JZCisgICAgICAgICAgICAgIChmZWF0dXJlKSwgR1NUX0VMRU1FTlRfTUVUQURBVEFfREVTQ1JJUFRJT04pKTsKKyAgICAgIGdfcXVldWVfcHVzaF90YWlsICgmdmlzX2xpc3QsIHZpcyk7CisgICAgfQorICB9CisgIGdzdF9wbHVnaW5fZmVhdHVyZV9saXN0X2ZyZWUgKGZlYXR1cmVzKTsKKworICB2aXNfY29va2llID0gY29va2llOworCisgIGdfbXV0ZXhfdW5sb2NrICgmdmlzX2xvY2spOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZ2V0OgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKSAoYXJyYXkgemVyby10ZXJtaW5hdGVkPTEpIChlbGVtZW50LXR5cGUgR3N0UGxheWVyVmlzdWFsaXphdGlvbik6CisgKiAgYSAlTlVMTCB0ZXJtaW5hdGVkIGFycmF5IGNvbnRhaW5pbmcgYWxsIGF2YWlsYWJsZQorICogIHZpc3VhbGl6YXRpb25zLiBVc2UgZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19mcmVlKCkgYWZ0ZXIKKyAqICB1c2FnZS4KKyAqLworR3N0UGxheWVyVmlzdWFsaXphdGlvbiAqKgorZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19nZXQgKHZvaWQpCit7CisgIGdpbnQgaSA9IDA7CisgIEdMaXN0ICpsOworICBHc3RQbGF5ZXJWaXN1YWxpemF0aW9uICoqcmV0OworCisgIGdzdF9wbGF5ZXJfdXBkYXRlX3Zpc3VhbGl6YXRpb25fbGlzdCAoKTsKKworICBnX211dGV4X2xvY2sgKCZ2aXNfbG9jayk7CisgIHJldCA9IGdfbmV3MCAoR3N0UGxheWVyVmlzdWFsaXphdGlvbiAqLCBnX3F1ZXVlX2dldF9sZW5ndGggKCZ2aXNfbGlzdCkgKyAxKTsKKyAgZm9yIChsID0gdmlzX2xpc3QuaGVhZDsgbDsgbCA9IGwtPm5leHQpCisgICAgcmV0W2krK10gPSBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fY29weSAobC0+ZGF0YSk7CisgIGdfbXV0ZXhfdW5sb2NrICgmdmlzX2xvY2spOworCisgIHJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aXN1YWxpemF0aW9uLmggYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aXN1YWxpemF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM4Mjc3MwotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaApAQCAtMCwwICsxLDUyIEBACisvKiBHU3RyZWFtZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE1IEJyaWplc2ggU2luZ2ggPGJyaWplc2gua3NpbmdoQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1BMQVlFUl9WSVNVQUxJWkFUSU9OX0hfXworI2RlZmluZSBfX0dTVF9QTEFZRVJfVklTVUFMSVpBVElPTl9IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCit0eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyVmlzdWFsaXphdGlvbiBHc3RQbGF5ZXJWaXN1YWxpemF0aW9uOworLyoqCisgKiBHc3RQbGF5ZXJWaXN1YWxpemF0aW9uOgorICogQG5hbWU6IG5hbWUgb2YgdGhlIHZpc3VhbGl6YXRpb24uCisgKiBAZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uIG9mIHRoZSB2aXN1YWxpemF0aW9uLgorICoKKyAqIEEgI0dzdFBsYXllclZpc3VhbGl6YXRpb24gZGVzY3JpcHRvci4KKyAqLworc3RydWN0IF9Hc3RQbGF5ZXJWaXN1YWxpemF0aW9uIHsKKyAgZ2NoYXIgKm5hbWU7CisgIGdjaGFyICpkZXNjcmlwdGlvbjsKK307CisKK0dUeXBlICAgICAgICAgICAgICAgICAgICAgZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2dldF90eXBlICh2b2lkKTsKKworR3N0UGxheWVyVmlzdWFsaXphdGlvbiAqICBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fY29weSAgKGNvbnN0IEdzdFBsYXllclZpc3VhbGl6YXRpb24gKnZpcyk7Cit2b2lkICAgICAgICAgICAgICAgICAgICAgIGdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9mcmVlICAoR3N0UGxheWVyVmlzdWFsaXphdGlvbiAqdmlzKTsKKworR3N0UGxheWVyVmlzdWFsaXphdGlvbiAqKiBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2dldCAgKHZvaWQpOwordm9pZCAgICAgICAgICAgICAgICAgICAgICBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2ZyZWUgKEdzdFBsYXllclZpc3VhbGl6YXRpb24gKip2aXNzKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX1BMQVlFUl9WSVNVQUxJWkFUSU9OX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUwMDgwZQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMKQEAgLTAsMCArMSwzNzkxIEBACisvKiBHU3RyZWFtZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE1IEJyaWplc2ggU2luZ2ggPGJyaWplc2gua3NpbmdoQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKioKKyAqIFNFQ1RJT046Z3N0cGxheWVyCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IFBsYXllcgorICoKKyAqLworCisvKiBUT0RPOgorICoKKyAqIC0gRXF1YWxpemVyCisgKiAtIEdhcGxlc3MgcGxheWJhY2sKKyAqIC0gRnJhbWUgc3RlcHBpbmcKKyAqIC0gU3VidGl0bGUgZm9udCwgY29ubmVjdGlvbiBzcGVlZAorICogLSBEZWludGVybGFjaW5nCisgKiAtIEJ1ZmZlcmluZyBjb250cm9sICgtPiBwcm9ncmVzc2l2ZSBkb3dubG9hZGluZykKKyAqIC0gUGxheWxpc3QvcXVldWUgb2JqZWN0CisgKiAtIEN1c3RvbSB2aWRlbyBzaW5rIChlLmcuIGVtYmVkIGluIEdMIHNjZW5lKQorICoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3RwbGF5ZXIuaCIKKyNpbmNsdWRlICJnc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXItcHJpdmF0ZS5oIgorI2luY2x1ZGUgImdzdHBsYXllci12aWRlby1yZW5kZXJlci1wcml2YXRlLmgiCisjaW5jbHVkZSAiZ3N0cGxheWVyLW1lZGlhLWluZm8tcHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgorI2luY2x1ZGUgPGdzdC92aWRlby9jb2xvcmJhbGFuY2UuaD4KKyNpbmNsdWRlIDxnc3QvdGFnL3RhZy5oPgorI2luY2x1ZGUgPGdzdC9wYnV0aWxzL2Rlc2NyaXB0aW9ucy5oPgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9wbGF5ZXJfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X3BsYXllcl9kZWJ1ZworCisjZGVmaW5lIERFRkFVTFRfVVJJIE5VTEwKKyNkZWZpbmUgREVGQVVMVF9QT1NJVElPTiBHU1RfQ0xPQ0tfVElNRV9OT05FCisjZGVmaW5lIERFRkFVTFRfRFVSQVRJT04gR1NUX0NMT0NLX1RJTUVfTk9ORQorI2RlZmluZSBERUZBVUxUX1ZPTFVNRSAxLjAKKyNkZWZpbmUgREVGQVVMVF9NVVRFIEZBTFNFCisjZGVmaW5lIERFRkFVTFRfUkFURSAxLjAKKyNkZWZpbmUgREVGQVVMVF9QT1NJVElPTl9VUERBVEVfSU5URVJWQUxfTVMgMTAwCisKK0dRdWFyaworZ3N0X3BsYXllcl9lcnJvcl9xdWFyayAodm9pZCkKK3sKKyAgc3RhdGljIEdRdWFyayBxdWFyazsKKworICBpZiAoIXF1YXJrKQorICAgIHF1YXJrID0gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcgKCJnc3QtcGxheWVyLWVycm9yLXF1YXJrIik7CisKKyAgcmV0dXJuIHF1YXJrOworfQorCitlbnVtCit7CisgIFBST1BfMCwKKyAgUFJPUF9WSURFT19SRU5ERVJFUiwKKyAgUFJPUF9TSUdOQUxfRElTUEFUQ0hFUiwKKyAgUFJPUF9VUkksCisgIFBST1BfU1VCVVJJLAorICBQUk9QX1BPU0lUSU9OLAorICBQUk9QX0RVUkFUSU9OLAorICBQUk9QX01FRElBX0lORk8sCisgIFBST1BfQ1VSUkVOVF9BVURJT19UUkFDSywKKyAgUFJPUF9DVVJSRU5UX1ZJREVPX1RSQUNLLAorICBQUk9QX0NVUlJFTlRfU1VCVElUTEVfVFJBQ0ssCisgIFBST1BfVk9MVU1FLAorICBQUk9QX01VVEUsCisgIFBST1BfUkFURSwKKyAgUFJPUF9QSVBFTElORSwKKyAgUFJPUF9QT1NJVElPTl9VUERBVEVfSU5URVJWQUwsCisgIFBST1BfTEFTVAorfTsKKworZW51bQoreworICBTSUdOQUxfUE9TSVRJT05fVVBEQVRFRCwKKyAgU0lHTkFMX0RVUkFUSU9OX0NIQU5HRUQsCisgIFNJR05BTF9TVEFURV9DSEFOR0VELAorICBTSUdOQUxfQlVGRkVSSU5HLAorICBTSUdOQUxfRU5EX09GX1NUUkVBTSwKKyAgU0lHTkFMX0VSUk9SLAorICBTSUdOQUxfV0FSTklORywKKyAgU0lHTkFMX1ZJREVPX0RJTUVOU0lPTlNfQ0hBTkdFRCwKKyAgU0lHTkFMX01FRElBX0lORk9fVVBEQVRFRCwKKyAgU0lHTkFMX1ZPTFVNRV9DSEFOR0VELAorICBTSUdOQUxfTVVURV9DSEFOR0VELAorICBTSUdOQUxfU0VFS19ET05FLAorICBTSUdOQUxfTEFTVAorfTsKKworZW51bQoreworICBHU1RfUExBWV9GTEFHX1ZJREVPID0gKDEgPDwgMCksCisgIEdTVF9QTEFZX0ZMQUdfQVVESU8gPSAoMSA8PCAxKSwKKyAgR1NUX1BMQVlfRkxBR19TVUJUSVRMRSA9ICgxIDw8IDIpLAorICBHU1RfUExBWV9GTEFHX1ZJUyA9ICgxIDw8IDMpCit9OworCitzdHJ1Y3QgX0dzdFBsYXllcgoreworICBHc3RPYmplY3QgcGFyZW50OworCisgIEdzdFBsYXllclZpZGVvUmVuZGVyZXIgKnZpZGVvX3JlbmRlcmVyOworICBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyICpzaWduYWxfZGlzcGF0Y2hlcjsKKworICBnY2hhciAqdXJpOworICBnY2hhciAqc3VidXJpOworCisgIEdUaHJlYWQgKnRocmVhZDsKKyAgR011dGV4IGxvY2s7CisgIEdDb25kIGNvbmQ7CisgIEdNYWluQ29udGV4dCAqY29udGV4dDsKKyAgR01haW5Mb29wICpsb29wOworCisgIEdzdEVsZW1lbnQgKnBsYXliaW47CisgIEdzdEJ1cyAqYnVzOworICBHc3RTdGF0ZSB0YXJnZXRfc3RhdGUsIGN1cnJlbnRfc3RhdGU7CisgIGdib29sZWFuIGlzX2xpdmUsIGlzX2VvczsKKyAgR1NvdXJjZSAqdGlja19zb3VyY2UsICpyZWFkeV90aW1lb3V0X3NvdXJjZTsKKworICBnZG91YmxlIHJhdGU7CisgIGd1aW50IHBvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbF9tczsKKworICBHc3RQbGF5ZXJTdGF0ZSBhcHBfc3RhdGU7CisgIGdpbnQgYnVmZmVyaW5nOworCisgIEdzdFRhZ0xpc3QgKmdsb2JhbF90YWdzOworICBHc3RQbGF5ZXJNZWRpYUluZm8gKm1lZGlhX2luZm87CisKKyAgR3N0RWxlbWVudCAqY3VycmVudF92aXNfZWxlbWVudDsKKworICAvKiBQcm90ZWN0ZWQgYnkgbG9jayAqLworICBnYm9vbGVhbiBzZWVrX3BlbmRpbmc7ICAgICAgICAvKiBPbmx5IHNldCBmcm9tIG1haW4gY29udGV4dCAqLworICBHc3RDbG9ja1RpbWUgbGFzdF9zZWVrX3RpbWU7ICAvKiBPbmx5IHNldCBmcm9tIG1haW4gY29udGV4dCAqLworICBHU291cmNlICpzZWVrX3NvdXJjZTsKKyAgR3N0Q2xvY2tUaW1lIHNlZWtfcG9zaXRpb247Cit9OworCitzdHJ1Y3QgX0dzdFBsYXllckNsYXNzCit7CisgIEdzdE9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKKyNkZWZpbmUgcGFyZW50X2NsYXNzIGdzdF9wbGF5ZXJfcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFIChHc3RQbGF5ZXIsIGdzdF9wbGF5ZXIsIEdTVF9UWVBFX09CSkVDVCk7CisKK3N0YXRpYyBndWludCBzaWduYWxzW1NJR05BTF9MQVNUXSA9IHsgMCwgfTsKK3N0YXRpYyBHUGFyYW1TcGVjICpwYXJhbV9zcGVjc1tQUk9QX0xBU1RdID0geyBOVUxMLCB9OworCitzdGF0aWMgdm9pZCBnc3RfcGxheWVyX2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmplY3QpOworc3RhdGljIHZvaWQgZ3N0X3BsYXllcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CitzdGF0aWMgdm9pZCBnc3RfcGxheWVyX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKK3N0YXRpYyB2b2lkIGdzdF9wbGF5ZXJfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOworc3RhdGljIHZvaWQgZ3N0X3BsYXllcl9jb25zdHJ1Y3RlZCAoR09iamVjdCAqIG9iamVjdCk7CisKK3N0YXRpYyBncG9pbnRlciBnc3RfcGxheWVyX21haW4gKGdwb2ludGVyIGRhdGEpOworCitzdGF0aWMgdm9pZCBnc3RfcGxheWVyX3NlZWtfaW50ZXJuYWxfbG9ja2VkIChHc3RQbGF5ZXIgKiBzZWxmKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfcGxheWVyX3N0b3BfaW50ZXJuYWwgKGdwb2ludGVyIHVzZXJfZGF0YSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3BsYXllcl9wYXVzZV9pbnRlcm5hbCAoZ3BvaW50ZXIgdXNlcl9kYXRhKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfcGxheWVyX3BsYXlfaW50ZXJuYWwgKGdwb2ludGVyIHVzZXJfZGF0YSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3BsYXllcl9zZXRfcmF0ZV9pbnRlcm5hbCAoZ3BvaW50ZXIgdXNlcl9kYXRhKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWxfaW50ZXJuYWwgKGdwb2ludGVyCisgICAgdXNlcl9kYXRhKTsKK3N0YXRpYyB2b2lkIGNoYW5nZV9zdGF0ZSAoR3N0UGxheWVyICogc2VsZiwgR3N0UGxheWVyU3RhdGUgc3RhdGUpOworCitzdGF0aWMgR3N0UGxheWVyTWVkaWFJbmZvICpnc3RfcGxheWVyX21lZGlhX2luZm9fY3JlYXRlIChHc3RQbGF5ZXIgKiBzZWxmKTsKKworc3RhdGljIHZvaWQgZ3N0X3BsYXllcl9zdHJlYW1zX2luZm9fY3JlYXRlIChHc3RQbGF5ZXIgKiBzZWxmLAorICAgIEdzdFBsYXllck1lZGlhSW5mbyAqIG1lZGlhX2luZm8sIGNvbnN0IGdjaGFyICogcHJvcCwgR1R5cGUgdHlwZSk7CitzdGF0aWMgdm9pZCBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX3VwZGF0ZSAoR3N0UGxheWVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXJTdHJlYW1JbmZvICogcyk7CitzdGF0aWMgdm9pZCBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX3VwZGF0ZV90YWdzX2FuZF9jYXBzIChHc3RQbGF5ZXIgKiBzZWxmLAorICAgIEdzdFBsYXllclN0cmVhbUluZm8gKiBzKTsKK3N0YXRpYyBHc3RQbGF5ZXJTdHJlYW1JbmZvICpnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2ZpbmQgKEdzdFBsYXllck1lZGlhSW5mbyAqCisgICAgbWVkaWFfaW5mbywgR1R5cGUgdHlwZSwgZ2ludCBzdHJlYW1faW5kZXgpOworc3RhdGljIEdzdFBsYXllclN0cmVhbUluZm8gKmdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2N1cnJlbnQgKEdzdFBsYXllciAqCisgICAgc2VsZiwgY29uc3QgZ2NoYXIgKiBwcm9wLCBHVHlwZSB0eXBlKTsKKworc3RhdGljIHZvaWQgZ3N0X3BsYXllcl92aWRlb19pbmZvX3VwZGF0ZSAoR3N0UGxheWVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXJTdHJlYW1JbmZvICogc3RyZWFtX2luZm8pOworc3RhdGljIHZvaWQgZ3N0X3BsYXllcl9hdWRpb19pbmZvX3VwZGF0ZSAoR3N0UGxheWVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXJTdHJlYW1JbmZvICogc3RyZWFtX2luZm8pOworc3RhdGljIHZvaWQgZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX3VwZGF0ZSAoR3N0UGxheWVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXJTdHJlYW1JbmZvICogc3RyZWFtX2luZm8pOworCitzdGF0aWMgdm9pZCBlbWl0X21lZGlhX2luZm9fdXBkYXRlZF9zaWduYWwgKEdzdFBsYXllciAqIHNlbGYpOworCitzdGF0aWMgdm9pZCAqZ2V0X3RpdGxlIChHc3RUYWdMaXN0ICogdGFncyk7CitzdGF0aWMgdm9pZCAqZ2V0X2NvbnRhaW5lcl9mb3JtYXQgKEdzdFRhZ0xpc3QgKiB0YWdzKTsKK3N0YXRpYyB2b2lkICpnZXRfZnJvbV90YWdzIChHc3RQbGF5ZXIgKiBzZWxmLCBHc3RQbGF5ZXJNZWRpYUluZm8gKiBtZWRpYV9pbmZvLAorICAgIHZvaWQgKigqZnVuYykgKEdzdFRhZ0xpc3QgKikpOworc3RhdGljIHZvaWQgKmdldF9jb3Zlcl9zYW1wbGUgKEdzdFRhZ0xpc3QgKiB0YWdzKTsKKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfaW5pdCAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgR1NUX1RSQUNFX09CSkVDVCAoc2VsZiwgIkluaXRpYWxpemluZyIpOworCisgIHNlbGYgPSBnc3RfcGxheWVyX2dldF9pbnN0YW5jZV9wcml2YXRlIChzZWxmKTsKKworICBnX211dGV4X2luaXQgKCZzZWxmLT5sb2NrKTsKKyAgZ19jb25kX2luaXQgKCZzZWxmLT5jb25kKTsKKworICBzZWxmLT5jb250ZXh0ID0gZ19tYWluX2NvbnRleHRfbmV3ICgpOworICBzZWxmLT5sb29wID0gZ19tYWluX2xvb3BfbmV3IChzZWxmLT5jb250ZXh0LCBGQUxTRSk7CisKKyAgc2VsZi0+cG9zaXRpb25fdXBkYXRlX2ludGVydmFsX21zID0gREVGQVVMVF9QT1NJVElPTl9VUERBVEVfSU5URVJWQUxfTVM7CisgIHNlbGYtPnNlZWtfcGVuZGluZyA9IEZBTFNFOworICBzZWxmLT5zZWVrX3Bvc2l0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgc2VsZi0+bGFzdF9zZWVrX3RpbWUgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworCisgIEdTVF9UUkFDRV9PQkpFQ1QgKHNlbGYsICJJbml0aWFsaXplZCIpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9jbGFzc19pbml0IChHc3RQbGF5ZXJDbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworCisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9wbGF5ZXJfc2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfcGxheWVyX2dldF9wcm9wZXJ0eTsKKyAgZ29iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IGdzdF9wbGF5ZXJfZGlzcG9zZTsKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfcGxheWVyX2ZpbmFsaXplOworICBnb2JqZWN0X2NsYXNzLT5jb25zdHJ1Y3RlZCA9IGdzdF9wbGF5ZXJfY29uc3RydWN0ZWQ7CisKKyAgcGFyYW1fc3BlY3NbUFJPUF9WSURFT19SRU5ERVJFUl0gPQorICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCAoInZpZGVvLXJlbmRlcmVyIiwKKyAgICAgICJWaWRlbyBSZW5kZXJlciIsICJWaWRlbyByZW5kZXJlciB0byB1c2UgZm9yIHJlbmRlcmluZyB2aWRlb3MiLAorICAgICAgR1NUX1RZUEVfUExBWUVSX1ZJREVPX1JFTkRFUkVSLAorICAgICAgR19QQVJBTV9XUklUQUJMRSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX1NJR05BTF9ESVNQQVRDSEVSXSA9CisgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0ICgic2lnbmFsLWRpc3BhdGNoZXIiLAorICAgICAgIlNpZ25hbCBEaXNwYXRjaGVyIiwgIkRpc3BhdGNoZXIgZm9yIHRoZSBzaWduYWxzIHRvIGUuZy4gZXZlbnQgbG9vcHMiLAorICAgICAgR1NUX1RZUEVfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSLAorICAgICAgR19QQVJBTV9XUklUQUJMRSB8IEdfUEFSQU1fQ09OU1RSVUNUX09OTFkgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX1VSSV0gPSBnX3BhcmFtX3NwZWNfc3RyaW5nICgidXJpIiwgIlVSSSIsICJDdXJyZW50IFVSSSIsCisgICAgICBERUZBVUxUX1VSSSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX1NVQlVSSV0gPSBnX3BhcmFtX3NwZWNfc3RyaW5nICgic3VidXJpIiwgIlN1YnRpdGxlIFVSSSIsCisgICAgICAiQ3VycmVudCBTdWJ0aXRsZSBVUkkiLCBOVUxMLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworCisgIHBhcmFtX3NwZWNzW1BST1BfUE9TSVRJT05dID0KKyAgICAgIGdfcGFyYW1fc3BlY191aW50NjQgKCJwb3NpdGlvbiIsICJQb3NpdGlvbiIsICJDdXJyZW50IFBvc2l0aW9uIiwKKyAgICAgIDAsIEdfTUFYVUlOVDY0LCBERUZBVUxUX1BPU0lUSU9OLAorICAgICAgR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworCisgIHBhcmFtX3NwZWNzW1BST1BfTUVESUFfSU5GT10gPQorICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCAoIm1lZGlhLWluZm8iLCAiTWVkaWEgSW5mbyIsCisgICAgICAiQ3VycmVudCBtZWRpYSBpbmZvcm1hdGlvbiIsIEdTVF9UWVBFX1BMQVlFUl9NRURJQV9JTkZPLAorICAgICAgR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworCisgIHBhcmFtX3NwZWNzW1BST1BfQ1VSUkVOVF9BVURJT19UUkFDS10gPQorICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCAoImN1cnJlbnQtYXVkaW8tdHJhY2siLCAiQ3VycmVudCBBdWRpbyBUcmFjayIsCisgICAgICAiQ3VycmVudCBhdWRpbyB0cmFjayBpbmZvcm1hdGlvbiIsIEdTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPLAorICAgICAgR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworCisgIHBhcmFtX3NwZWNzW1BST1BfQ1VSUkVOVF9WSURFT19UUkFDS10gPQorICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCAoImN1cnJlbnQtdmlkZW8tdHJhY2siLCAiQ3VycmVudCBWaWRlbyBUcmFjayIsCisgICAgICAiQ3VycmVudCB2aWRlbyB0cmFjayBpbmZvcm1hdGlvbiIsIEdTVF9UWVBFX1BMQVlFUl9WSURFT19JTkZPLAorICAgICAgR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworCisgIHBhcmFtX3NwZWNzW1BST1BfQ1VSUkVOVF9TVUJUSVRMRV9UUkFDS10gPQorICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCAoImN1cnJlbnQtc3VidGl0bGUtdHJhY2siLCAiQ3VycmVudCBTdWJ0aXRsZSBUcmFjayIsCisgICAgICAiQ3VycmVudCBhdWRpbyBzdWJ0aXRsZSBpbmZvcm1hdGlvbiIsIEdTVF9UWVBFX1BMQVlFUl9TVUJUSVRMRV9JTkZPLAorICAgICAgR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworCisgIHBhcmFtX3NwZWNzW1BST1BfRFVSQVRJT05dID0KKyAgICAgIGdfcGFyYW1fc3BlY191aW50NjQgKCJkdXJhdGlvbiIsICJEdXJhdGlvbiIsICJEdXJhdGlvbiIsCisgICAgICAwLCBHX01BWFVJTlQ2NCwgREVGQVVMVF9EVVJBVElPTiwKKyAgICAgIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX1ZPTFVNRV0gPQorICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoInZvbHVtZSIsICJWb2x1bWUiLCAiVm9sdW1lIiwKKyAgICAgIDAsIDEwLjAsIERFRkFVTFRfVk9MVU1FLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworCisgIHBhcmFtX3NwZWNzW1BST1BfTVVURV0gPQorICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJtdXRlIiwgIk11dGUiLCAiTXV0ZSIsCisgICAgICBERUZBVUxUX01VVEUsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisKKyAgcGFyYW1fc3BlY3NbUFJPUF9QSVBFTElORV0gPQorICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCAoInBpcGVsaW5lIiwgIlBpcGVsaW5lIiwKKyAgICAgICJHU3RyZWFtZXIgcGlwZWxpbmUgdGhhdCBpcyB1c2VkIiwKKyAgICAgIEdTVF9UWVBFX0VMRU1FTlQsIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX1JBVEVdID0KKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJyYXRlIiwgInJhdGUiLCAiUGxheWJhY2sgcmF0ZSIsCisgICAgICAtNjQuMCwgNjQuMCwgREVGQVVMVF9SQVRFLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworCisgIHBhcmFtX3NwZWNzW1BST1BfUE9TSVRJT05fVVBEQVRFX0lOVEVSVkFMXSA9CisgICAgICBnX3BhcmFtX3NwZWNfdWludCAoInBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCIsICJQb3NpdGlvbiB1cGRhdGUgaW50ZXJ2YWwiLAorICAgICAgIkludGVydmFsIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHR3byBwb3NpdGlvbi11cGRhdGVkIHNpZ25hbHMuIgorICAgICAgIlBhc3MgMCB0byBzdG9wIHVwZGF0aW5nIHRoZSBwb3NpdGlvbi4iLAorICAgICAgMCwgMTAwMDAsIERFRkFVTFRfUE9TSVRJT05fVVBEQVRFX0lOVEVSVkFMX01TLAorICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnRpZXMgKGdvYmplY3RfY2xhc3MsIFBST1BfTEFTVCwgcGFyYW1fc3BlY3MpOworCisgIHNpZ25hbHNbU0lHTkFMX1BPU0lUSU9OX1VQREFURURdID0KKyAgICAgIGdfc2lnbmFsX25ldyAoInBvc2l0aW9uLXVwZGF0ZWQiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9OT19SRUNVUlNFIHwgR19TSUdOQUxfTk9fSE9PS1MsIDAsIE5VTEwsCisgICAgICBOVUxMLCBOVUxMLCBHX1RZUEVfTk9ORSwgMSwgR1NUX1RZUEVfQ0xPQ0tfVElNRSk7CisKKyAgc2lnbmFsc1tTSUdOQUxfRFVSQVRJT05fQ0hBTkdFRF0gPQorICAgICAgZ19zaWduYWxfbmV3ICgiZHVyYXRpb24tY2hhbmdlZCIsIEdfVFlQRV9GUk9NX0NMQVNTIChrbGFzcyksCisgICAgICBHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX05PX1JFQ1VSU0UgfCBHX1NJR05BTF9OT19IT09LUywgMCwgTlVMTCwKKyAgICAgIE5VTEwsIE5VTEwsIEdfVFlQRV9OT05FLCAxLCBHU1RfVFlQRV9DTE9DS19USU1FKTsKKworICBzaWduYWxzW1NJR05BTF9TVEFURV9DSEFOR0VEXSA9CisgICAgICBnX3NpZ25hbF9uZXcgKCJzdGF0ZS1jaGFuZ2VkIiwgR19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKKyAgICAgIEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfTk9fUkVDVVJTRSB8IEdfU0lHTkFMX05PX0hPT0tTLCAwLCBOVUxMLAorICAgICAgTlVMTCwgTlVMTCwgR19UWVBFX05PTkUsIDEsIEdTVF9UWVBFX1BMQVlFUl9TVEFURSk7CisKKyAgc2lnbmFsc1tTSUdOQUxfQlVGRkVSSU5HXSA9CisgICAgICBnX3NpZ25hbF9uZXcgKCJidWZmZXJpbmciLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9OT19SRUNVUlNFIHwgR19TSUdOQUxfTk9fSE9PS1MsIDAsIE5VTEwsCisgICAgICBOVUxMLCBOVUxMLCBHX1RZUEVfTk9ORSwgMSwgR19UWVBFX0lOVCk7CisKKyAgc2lnbmFsc1tTSUdOQUxfRU5EX09GX1NUUkVBTV0gPQorICAgICAgZ19zaWduYWxfbmV3ICgiZW5kLW9mLXN0cmVhbSIsIEdfVFlQRV9GUk9NX0NMQVNTIChrbGFzcyksCisgICAgICBHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX05PX1JFQ1VSU0UgfCBHX1NJR05BTF9OT19IT09LUywgMCwgTlVMTCwKKyAgICAgIE5VTEwsIE5VTEwsIEdfVFlQRV9OT05FLCAwLCBHX1RZUEVfSU5WQUxJRCk7CisKKyAgc2lnbmFsc1tTSUdOQUxfRVJST1JdID0KKyAgICAgIGdfc2lnbmFsX25ldyAoImVycm9yIiwgR19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKKyAgICAgIEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfTk9fUkVDVVJTRSB8IEdfU0lHTkFMX05PX0hPT0tTLCAwLCBOVUxMLAorICAgICAgTlVMTCwgTlVMTCwgR19UWVBFX05PTkUsIDEsIEdfVFlQRV9FUlJPUik7CisKKyAgc2lnbmFsc1tTSUdOQUxfVklERU9fRElNRU5TSU9OU19DSEFOR0VEXSA9CisgICAgICBnX3NpZ25hbF9uZXcgKCJ2aWRlby1kaW1lbnNpb25zLWNoYW5nZWQiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9OT19SRUNVUlNFIHwgR19TSUdOQUxfTk9fSE9PS1MsIDAsIE5VTEwsCisgICAgICBOVUxMLCBOVUxMLCBHX1RZUEVfTk9ORSwgMiwgR19UWVBFX0lOVCwgR19UWVBFX0lOVCk7CisKKyAgc2lnbmFsc1tTSUdOQUxfTUVESUFfSU5GT19VUERBVEVEXSA9CisgICAgICBnX3NpZ25hbF9uZXcgKCJtZWRpYS1pbmZvLXVwZGF0ZWQiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9OT19SRUNVUlNFIHwgR19TSUdOQUxfTk9fSE9PS1MsIDAsIE5VTEwsCisgICAgICBOVUxMLCBOVUxMLCBHX1RZUEVfTk9ORSwgMSwgR1NUX1RZUEVfUExBWUVSX01FRElBX0lORk8pOworCisgIHNpZ25hbHNbU0lHTkFMX1ZPTFVNRV9DSEFOR0VEXSA9CisgICAgICBnX3NpZ25hbF9uZXcgKCJ2b2x1bWUtY2hhbmdlZCIsIEdfVFlQRV9GUk9NX0NMQVNTIChrbGFzcyksCisgICAgICBHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX05PX1JFQ1VSU0UgfCBHX1NJR05BTF9OT19IT09LUywgMCwgTlVMTCwKKyAgICAgIE5VTEwsIE5VTEwsIEdfVFlQRV9OT05FLCAwLCBHX1RZUEVfSU5WQUxJRCk7CisKKyAgc2lnbmFsc1tTSUdOQUxfTVVURV9DSEFOR0VEXSA9CisgICAgICBnX3NpZ25hbF9uZXcgKCJtdXRlLWNoYW5nZWQiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9OT19SRUNVUlNFIHwgR19TSUdOQUxfTk9fSE9PS1MsIDAsIE5VTEwsCisgICAgICBOVUxMLCBOVUxMLCBHX1RZUEVfTk9ORSwgMCwgR19UWVBFX0lOVkFMSUQpOworCisgIHNpZ25hbHNbU0lHTkFMX1dBUk5JTkddID0KKyAgICAgIGdfc2lnbmFsX25ldyAoIndhcm5pbmciLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9OT19SRUNVUlNFIHwgR19TSUdOQUxfTk9fSE9PS1MsIDAsIE5VTEwsCisgICAgICBOVUxMLCBOVUxMLCBHX1RZUEVfTk9ORSwgMSwgR19UWVBFX0VSUk9SKTsKKworICBzaWduYWxzW1NJR05BTF9TRUVLX0RPTkVdID0KKyAgICAgIGdfc2lnbmFsX25ldyAoInNlZWstZG9uZSIsIEdfVFlQRV9GUk9NX0NMQVNTIChrbGFzcyksCisgICAgICBHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX05PX1JFQ1VSU0UgfCBHX1NJR05BTF9OT19IT09LUywgMCwgTlVMTCwKKyAgICAgIE5VTEwsIE5VTEwsIEdfVFlQRV9OT05FLCAxLCBHU1RfVFlQRV9DTE9DS19USU1FKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfZGlzcG9zZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAob2JqZWN0KTsKKworICBHU1RfVFJBQ0VfT0JKRUNUIChzZWxmLCAiU3RvcHBpbmcgbWFpbiB0aHJlYWQiKTsKKworICBpZiAoc2VsZi0+bG9vcCkgeworICAgIGdfbWFpbl9sb29wX3F1aXQgKHNlbGYtPmxvb3ApOworCisgICAgZ190aHJlYWRfam9pbiAoc2VsZi0+dGhyZWFkKTsKKyAgICBzZWxmLT50aHJlYWQgPSBOVUxMOworCisgICAgZ19tYWluX2xvb3BfdW5yZWYgKHNlbGYtPmxvb3ApOworICAgIHNlbGYtPmxvb3AgPSBOVUxMOworCisgICAgZ19tYWluX2NvbnRleHRfdW5yZWYgKHNlbGYtPmNvbnRleHQpOworICAgIHNlbGYtPmNvbnRleHQgPSBOVUxMOworICB9CisKKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmRpc3Bvc2UgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSIChvYmplY3QpOworCisgIEdTVF9UUkFDRV9PQkpFQ1QgKHNlbGYsICJGaW5hbGl6aW5nIik7CisKKyAgZ19mcmVlIChzZWxmLT51cmkpOworICBnX2ZyZWUgKHNlbGYtPnN1YnVyaSk7CisgIGlmIChzZWxmLT5nbG9iYWxfdGFncykKKyAgICBnc3RfdGFnX2xpc3RfdW5yZWYgKHNlbGYtPmdsb2JhbF90YWdzKTsKKyAgaWYgKHNlbGYtPnZpZGVvX3JlbmRlcmVyKQorICAgIGdfb2JqZWN0X3VucmVmIChzZWxmLT52aWRlb19yZW5kZXJlcik7CisgIGlmIChzZWxmLT5zaWduYWxfZGlzcGF0Y2hlcikKKyAgICBnX29iamVjdF91bnJlZiAoc2VsZi0+c2lnbmFsX2Rpc3BhdGNoZXIpOworICBpZiAoc2VsZi0+Y3VycmVudF92aXNfZWxlbWVudCkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzZWxmLT5jdXJyZW50X3Zpc19lbGVtZW50KTsKKyAgZ19tdXRleF9jbGVhciAoJnNlbGYtPmxvY2spOworICBnX2NvbmRfY2xlYXIgKCZzZWxmLT5jb25kKTsKKworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX2NvbnN0cnVjdGVkIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSIChvYmplY3QpOworCisgIEdTVF9UUkFDRV9PQkpFQ1QgKHNlbGYsICJDb25zdHJ1Y3RlZCIpOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBzZWxmLT50aHJlYWQgPSBnX3RocmVhZF9uZXcgKCJHc3RQbGF5ZXIiLCBnc3RfcGxheWVyX21haW4sIHNlbGYpOworICB3aGlsZSAoIXNlbGYtPmxvb3AgfHwgIWdfbWFpbl9sb29wX2lzX3J1bm5pbmcgKHNlbGYtPmxvb3ApKQorICAgIGdfY29uZF93YWl0ICgmc2VsZi0+Y29uZCwgJnNlbGYtPmxvY2spOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZCAob2JqZWN0KTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfcGxheWVyX3NldF91cmlfaW50ZXJuYWwgKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gdXNlcl9kYXRhOworCisgIGdzdF9wbGF5ZXJfc3RvcF9pbnRlcm5hbCAoc2VsZik7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkNoYW5naW5nIFVSSSB0byAnJXMnIiwgR1NUX1NUUl9OVUxMIChzZWxmLT51cmkpKTsKKworICBnX29iamVjdF9zZXQgKHNlbGYtPnBsYXliaW4sICJ1cmkiLCBzZWxmLT51cmksIE5VTEwpOworCisgIC8qIGlmIGhhdmUgc3VidXJpIGZyb20gcHJldmlvdXMgcGxheWJhY2sgdGhlbiBmcmVlIGl0ICovCisgIGlmIChzZWxmLT5zdWJ1cmkpIHsKKyAgICBnX2ZyZWUgKHNlbGYtPnN1YnVyaSk7CisgICAgc2VsZi0+c3VidXJpID0gTlVMTDsKKyAgICBnX29iamVjdF9zZXQgKHNlbGYtPnBsYXliaW4sICJzdWJ1cmkiLCBOVUxMLCBOVUxMKTsKKyAgfQorCisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfcGxheWVyX3NldF9zdWJ1cmlfaW50ZXJuYWwgKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gdXNlcl9kYXRhOworICBHc3RDbG9ja1RpbWUgcG9zaXRpb247CisgIEdzdFN0YXRlIHRhcmdldF9zdGF0ZTsKKworICAvKiBzYXZlIHRoZSBzdGF0ZSBhbmQgcG9zaXRpb24gKi8KKyAgdGFyZ2V0X3N0YXRlID0gc2VsZi0+dGFyZ2V0X3N0YXRlOworICBwb3NpdGlvbiA9IGdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uIChzZWxmKTsKKworICBnc3RfcGxheWVyX3N0b3BfaW50ZXJuYWwgKHNlbGYpOworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiQ2hhbmdpbmcgU1VCVVJJIHRvICclcyciLAorICAgICAgR1NUX1NUUl9OVUxMIChzZWxmLT5zdWJ1cmkpKTsKKworICBnX29iamVjdF9zZXQgKHNlbGYtPnBsYXliaW4sICJzdWJ1cmkiLCBzZWxmLT5zdWJ1cmksIE5VTEwpOworICBnX29iamVjdF9zZXQgKHNlbGYtPnBsYXliaW4sICJ1cmkiLCBzZWxmLT51cmksIE5VTEwpOworCisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgLyogcmVzdG9yZSBzdGF0ZSBhbmQgcG9zaXRpb24gKi8KKyAgaWYgKHBvc2l0aW9uICE9IEdTVF9DTE9DS19USU1FX05PTkUpCisgICAgZ3N0X3BsYXllcl9zZWVrIChzZWxmLCBwb3NpdGlvbik7CisgIGlmICh0YXJnZXRfc3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCkKKyAgICBnc3RfcGxheWVyX3BhdXNlX2ludGVybmFsIChzZWxmKTsKKyAgZWxzZSBpZiAodGFyZ2V0X3N0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HKQorICAgIGdzdF9wbGF5ZXJfcGxheV9pbnRlcm5hbCAoc2VsZik7CisKKyAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX1ZJREVPX1JFTkRFUkVSOgorICAgICAgc2VsZi0+dmlkZW9fcmVuZGVyZXIgPSBnX3ZhbHVlX2R1cF9vYmplY3QgKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TSUdOQUxfRElTUEFUQ0hFUjoKKyAgICAgIHNlbGYtPnNpZ25hbF9kaXNwYXRjaGVyID0gZ192YWx1ZV9kdXBfb2JqZWN0ICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVVJJOnsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICAgICAgZ19mcmVlIChzZWxmLT51cmkpOworCisgICAgICBzZWxmLT51cmkgPSBnX3ZhbHVlX2R1cF9zdHJpbmcgKHZhbHVlKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTZXQgdXJpPSVzIiwgc2VsZi0+dXJpKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgICAgIGdfbWFpbl9jb250ZXh0X2ludm9rZV9mdWxsIChzZWxmLT5jb250ZXh0LCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgICAgZ3N0X3BsYXllcl9zZXRfdXJpX2ludGVybmFsLCBzZWxmLCBOVUxMKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfU1VCVVJJOnsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICAgICAgZ19mcmVlIChzZWxmLT5zdWJ1cmkpOworCisgICAgICBzZWxmLT5zdWJ1cmkgPSBnX3ZhbHVlX2R1cF9zdHJpbmcgKHZhbHVlKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTZXQgc3VidXJpPSVzIiwgc2VsZi0+c3VidXJpKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgICAgIGdfbWFpbl9jb250ZXh0X2ludm9rZV9mdWxsIChzZWxmLT5jb250ZXh0LCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICAgICAgZ3N0X3BsYXllcl9zZXRfc3VidXJpX2ludGVybmFsLCBzZWxmLCBOVUxMKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfVk9MVU1FOgorICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlNldCB2b2x1bWU9JWxmIiwgZ192YWx1ZV9nZXRfZG91YmxlICh2YWx1ZSkpOworICAgICAgZ19vYmplY3Rfc2V0X3Byb3BlcnR5IChHX09CSkVDVCAoc2VsZi0+cGxheWJpbiksICJ2b2x1bWUiLCB2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUkFURToKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICAgICAgc2VsZi0+cmF0ZSA9IGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlNldCByYXRlPSVsZiIsIGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgICAgIGdzdF9wbGF5ZXJfc2V0X3JhdGVfaW50ZXJuYWwgKHNlbGYpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01VVEU6CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU2V0IG11dGU9JWQiLCBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSkpOworICAgICAgZ19vYmplY3Rfc2V0X3Byb3BlcnR5IChHX09CSkVDVCAoc2VsZi0+cGxheWJpbiksICJtdXRlIiwgdmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BPU0lUSU9OX1VQREFURV9JTlRFUlZBTDoKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICAgICAgc2VsZi0+cG9zaXRpb25fdXBkYXRlX2ludGVydmFsX21zID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlNldCBwb3NpdGlvbiB1cGRhdGUgaW50ZXJ2YWw9JXUgbXMiLAorICAgICAgICAgIGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKSk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgICAgICBnc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWxfaW50ZXJuYWwgKHNlbGYpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfVVJJOgorICAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBzZWxmLT51cmkpOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TVUJVUkk6CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIHNlbGYtPnN1YnVyaSk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlJldHVybmluZyBoYXMtc3VidXJpPSVkIiwKKyAgICAgICAgICBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BPU0lUSU9OOnsKKyAgICAgIGdpbnQ2NCBwb3NpdGlvbiA9IDA7CisKKyAgICAgIGdzdF9lbGVtZW50X3F1ZXJ5X3Bvc2l0aW9uIChzZWxmLT5wbGF5YmluLCBHU1RfRk9STUFUX1RJTUUsICZwb3NpdGlvbik7CisgICAgICBnX3ZhbHVlX3NldF91aW50NjQgKHZhbHVlLCBwb3NpdGlvbik7CisgICAgICBHU1RfVFJBQ0VfT0JKRUNUIChzZWxmLCAiUmV0dXJuaW5nIHBvc2l0aW9uPSUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgICAgICBHU1RfVElNRV9BUkdTIChnX3ZhbHVlX2dldF91aW50NjQgKHZhbHVlKSkpOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9EVVJBVElPTjp7CisgICAgICBnaW50NjQgZHVyYXRpb24gPSAwOworCisgICAgICBnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbiAoc2VsZi0+cGxheWJpbiwgR1NUX0ZPUk1BVF9USU1FLCAmZHVyYXRpb24pOworICAgICAgZ192YWx1ZV9zZXRfdWludDY0ICh2YWx1ZSwgZHVyYXRpb24pOworICAgICAgR1NUX1RSQUNFX09CSkVDVCAoc2VsZiwgIlJldHVybmluZyBkdXJhdGlvbj0lIiBHU1RfVElNRV9GT1JNQVQsCisgICAgICAgICAgR1NUX1RJTUVfQVJHUyAoZ192YWx1ZV9nZXRfdWludDY0ICh2YWx1ZSkpKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfTUVESUFfSU5GTzp7CisgICAgICBHc3RQbGF5ZXJNZWRpYUluZm8gKm1lZGlhX2luZm8gPSBnc3RfcGxheWVyX2dldF9tZWRpYV9pbmZvIChzZWxmKTsKKyAgICAgIGdfdmFsdWVfc2V0X29iamVjdCAodmFsdWUsIG1lZGlhX2luZm8pOworICAgICAgZ19vYmplY3RfdW5yZWYgKG1lZGlhX2luZm8pOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9DVVJSRU5UX0FVRElPX1RSQUNLOnsKKyAgICAgIEdzdFBsYXllckF1ZGlvSW5mbyAqYXVkaW9faW5mbyA9CisgICAgICAgICAgZ3N0X3BsYXllcl9nZXRfY3VycmVudF9hdWRpb190cmFjayAoc2VsZik7CisgICAgICBnX3ZhbHVlX3NldF9vYmplY3QgKHZhbHVlLCBhdWRpb19pbmZvKTsKKyAgICAgIGdfb2JqZWN0X3VucmVmIChhdWRpb19pbmZvKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfQ1VSUkVOVF9WSURFT19UUkFDSzp7CisgICAgICBHc3RQbGF5ZXJWaWRlb0luZm8gKnZpZGVvX2luZm8gPQorICAgICAgICAgIGdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlkZW9fdHJhY2sgKHNlbGYpOworICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0ICh2YWx1ZSwgdmlkZW9faW5mbyk7CisgICAgICBnX29iamVjdF91bnJlZiAodmlkZW9faW5mbyk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX0NVUlJFTlRfU1VCVElUTEVfVFJBQ0s6eworICAgICAgR3N0UGxheWVyU3VidGl0bGVJbmZvICpzdWJ0aXRsZV9pbmZvID0KKyAgICAgICAgICBnc3RfcGxheWVyX2dldF9jdXJyZW50X3N1YnRpdGxlX3RyYWNrIChzZWxmKTsKKyAgICAgIGdfdmFsdWVfc2V0X29iamVjdCAodmFsdWUsIHN1YnRpdGxlX2luZm8pOworICAgICAgZ19vYmplY3RfdW5yZWYgKHN1YnRpdGxlX2luZm8pOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9WT0xVTUU6CisgICAgICBnX29iamVjdF9nZXRfcHJvcGVydHkgKEdfT0JKRUNUIChzZWxmLT5wbGF5YmluKSwgInZvbHVtZSIsIHZhbHVlKTsKKyAgICAgIEdTVF9UUkFDRV9PQkpFQ1QgKHNlbGYsICJSZXR1cm5pbmcgdm9sdW1lPSVsZiIsCisgICAgICAgICAgZ192YWx1ZV9nZXRfZG91YmxlICh2YWx1ZSkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1JBVEU6CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSAodmFsdWUsIGdzdF9wbGF5ZXJfZ2V0X3JhdGUgKHNlbGYpKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTVVURToKKyAgICAgIGdfb2JqZWN0X2dldF9wcm9wZXJ0eSAoR19PQkpFQ1QgKHNlbGYtPnBsYXliaW4pLCAibXV0ZSIsIHZhbHVlKTsKKyAgICAgIEdTVF9UUkFDRV9PQkpFQ1QgKHNlbGYsICJSZXR1cm5pbmcgbXV0ZT0lZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUElQRUxJTkU6CisgICAgICBnX3ZhbHVlX3NldF9vYmplY3QgKHZhbHVlLCBzZWxmLT5wbGF5YmluKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QT1NJVElPTl9VUERBVEVfSU5URVJWQUw6CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBnc3RfcGxheWVyX2dldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWwgKHNlbGYpKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorbWFpbl9sb29wX3J1bm5pbmdfY2IgKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKKworICBHU1RfVFJBQ0VfT0JKRUNUIChzZWxmLCAiTWFpbiBsb29wIHJ1bm5pbmcgbm93Iik7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGdfY29uZF9zaWduYWwgKCZzZWxmLT5jb25kKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworfQorCit0eXBlZGVmIHN0cnVjdAoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgR3N0UGxheWVyU3RhdGUgc3RhdGU7Cit9IFN0YXRlQ2hhbmdlZFNpZ25hbERhdGE7CisKK3N0YXRpYyB2b2lkCitzdGF0ZV9jaGFuZ2VkX2Rpc3BhdGNoIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIFN0YXRlQ2hhbmdlZFNpZ25hbERhdGEgKmRhdGEgPSB1c2VyX2RhdGE7CisKKyAgZ19zaWduYWxfZW1pdCAoZGF0YS0+cGxheWVyLCBzaWduYWxzW1NJR05BTF9TVEFURV9DSEFOR0VEXSwgMCwgZGF0YS0+c3RhdGUpOworfQorCitzdGF0aWMgdm9pZAorc3RhdGVfY2hhbmdlZF9zaWduYWxfZGF0YV9mcmVlIChTdGF0ZUNoYW5nZWRTaWduYWxEYXRhICogZGF0YSkKK3sKKyAgZ19vYmplY3RfdW5yZWYgKGRhdGEtPnBsYXllcik7CisgIGdfZnJlZSAoZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkCitjaGFuZ2Vfc3RhdGUgKEdzdFBsYXllciAqIHNlbGYsIEdzdFBsYXllclN0YXRlIHN0YXRlKQoreworICBpZiAoc3RhdGUgPT0gc2VsZi0+YXBwX3N0YXRlKQorICAgIHJldHVybjsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiQ2hhbmdpbmcgYXBwIHN0YXRlIGZyb20gJXMgdG8gJXMiLAorICAgICAgZ3N0X3BsYXllcl9zdGF0ZV9nZXRfbmFtZSAoc2VsZi0+YXBwX3N0YXRlKSwKKyAgICAgIGdzdF9wbGF5ZXJfc3RhdGVfZ2V0X25hbWUgKHN0YXRlKSk7CisgIHNlbGYtPmFwcF9zdGF0ZSA9IHN0YXRlOworCisgIGlmIChnX3NpZ25hbF9oYW5kbGVyX2ZpbmQgKHNlbGYsIEdfU0lHTkFMX01BVENIX0lELAorICAgICAgICAgIHNpZ25hbHNbU0lHTkFMX1NUQVRFX0NIQU5HRURdLCAwLCBOVUxMLCBOVUxMLCBOVUxMKSAhPSAwKSB7CisgICAgU3RhdGVDaGFuZ2VkU2lnbmFsRGF0YSAqZGF0YSA9IGdfbmV3IChTdGF0ZUNoYW5nZWRTaWduYWxEYXRhLCAxKTsKKworICAgIGRhdGEtPnBsYXllciA9IGdfb2JqZWN0X3JlZiAoc2VsZik7CisgICAgZGF0YS0+c3RhdGUgPSBzdGF0ZTsKKyAgICBnc3RfcGxheWVyX3NpZ25hbF9kaXNwYXRjaGVyX2Rpc3BhdGNoIChzZWxmLT5zaWduYWxfZGlzcGF0Y2hlciwgc2VsZiwKKyAgICAgICAgc3RhdGVfY2hhbmdlZF9kaXNwYXRjaCwgZGF0YSwKKyAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBzdGF0ZV9jaGFuZ2VkX3NpZ25hbF9kYXRhX2ZyZWUpOworICB9Cit9CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBHc3RDbG9ja1RpbWUgcG9zaXRpb247Cit9IFBvc2l0aW9uVXBkYXRlZFNpZ25hbERhdGE7CisKK3N0YXRpYyB2b2lkCitwb3NpdGlvbl91cGRhdGVkX2Rpc3BhdGNoIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIFBvc2l0aW9uVXBkYXRlZFNpZ25hbERhdGEgKmRhdGEgPSB1c2VyX2RhdGE7CisKKyAgaWYgKGRhdGEtPnBsYXllci0+dGFyZ2V0X3N0YXRlID49IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICBnX3NpZ25hbF9lbWl0IChkYXRhLT5wbGF5ZXIsIHNpZ25hbHNbU0lHTkFMX1BPU0lUSU9OX1VQREFURURdLCAwLAorICAgICAgICBkYXRhLT5wb3NpdGlvbik7CisgICAgZ19vYmplY3Rfbm90aWZ5X2J5X3BzcGVjIChHX09CSkVDVCAoZGF0YS0+cGxheWVyKSwKKyAgICAgICAgcGFyYW1fc3BlY3NbUFJPUF9QT1NJVElPTl0pOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitwb3NpdGlvbl91cGRhdGVkX3NpZ25hbF9kYXRhX2ZyZWUgKFBvc2l0aW9uVXBkYXRlZFNpZ25hbERhdGEgKiBkYXRhKQoreworICBnX29iamVjdF91bnJlZiAoZGF0YS0+cGxheWVyKTsKKyAgZ19mcmVlIChkYXRhKTsKK30KKworc3RhdGljIGdib29sZWFuCit0aWNrX2NiIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisgIGdpbnQ2NCBwb3NpdGlvbjsKKworICBpZiAoc2VsZi0+dGFyZ2V0X3N0YXRlID49IEdTVF9TVEFURV9QQVVTRUQKKyAgICAgICYmIGdzdF9lbGVtZW50X3F1ZXJ5X3Bvc2l0aW9uIChzZWxmLT5wbGF5YmluLCBHU1RfRk9STUFUX1RJTUUsCisgICAgICAgICAgJnBvc2l0aW9uKSkgeworICAgIEdTVF9MT0dfT0JKRUNUIChzZWxmLCAiUG9zaXRpb24gJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgICBHU1RfVElNRV9BUkdTIChwb3NpdGlvbikpOworCisgICAgaWYgKGdfc2lnbmFsX2hhbmRsZXJfZmluZCAoc2VsZiwgR19TSUdOQUxfTUFUQ0hfSUQsCisgICAgICAgICAgICBzaWduYWxzW1NJR05BTF9QT1NJVElPTl9VUERBVEVEXSwgMCwgTlVMTCwgTlVMTCwgTlVMTCkgIT0gMCkgeworICAgICAgUG9zaXRpb25VcGRhdGVkU2lnbmFsRGF0YSAqZGF0YSA9IGdfbmV3IChQb3NpdGlvblVwZGF0ZWRTaWduYWxEYXRhLCAxKTsKKworICAgICAgZGF0YS0+cGxheWVyID0gZ19vYmplY3RfcmVmIChzZWxmKTsKKyAgICAgIGRhdGEtPnBvc2l0aW9uID0gcG9zaXRpb247CisgICAgICBnc3RfcGxheWVyX3NpZ25hbF9kaXNwYXRjaGVyX2Rpc3BhdGNoIChzZWxmLT5zaWduYWxfZGlzcGF0Y2hlciwgc2VsZiwKKyAgICAgICAgICBwb3NpdGlvbl91cGRhdGVkX2Rpc3BhdGNoLCBkYXRhLAorICAgICAgICAgIChHRGVzdHJveU5vdGlmeSkgcG9zaXRpb25fdXBkYXRlZF9zaWduYWxfZGF0YV9mcmVlKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gR19TT1VSQ0VfQ09OVElOVUU7Cit9CisKK3N0YXRpYyB2b2lkCithZGRfdGlja19zb3VyY2UgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGlmIChzZWxmLT50aWNrX3NvdXJjZSkKKyAgICByZXR1cm47CisKKyAgaWYgKCFzZWxmLT5wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWxfbXMpCisgICAgcmV0dXJuOworCisgIHNlbGYtPnRpY2tfc291cmNlID0gZ190aW1lb3V0X3NvdXJjZV9uZXcgKHNlbGYtPnBvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbF9tcyk7CisgIGdfc291cmNlX3NldF9jYWxsYmFjayAoc2VsZi0+dGlja19zb3VyY2UsIChHU291cmNlRnVuYykgdGlja19jYiwgc2VsZiwgTlVMTCk7CisgIGdfc291cmNlX2F0dGFjaCAoc2VsZi0+dGlja19zb3VyY2UsIHNlbGYtPmNvbnRleHQpOworfQorCitzdGF0aWMgdm9pZAorcmVtb3ZlX3RpY2tfc291cmNlIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBpZiAoIXNlbGYtPnRpY2tfc291cmNlKQorICAgIHJldHVybjsKKworICBnX3NvdXJjZV9kZXN0cm95IChzZWxmLT50aWNrX3NvdXJjZSk7CisgIGdfc291cmNlX3VucmVmIChzZWxmLT50aWNrX3NvdXJjZSk7CisgIHNlbGYtPnRpY2tfc291cmNlID0gTlVMTDsKK30KKworc3RhdGljIGdib29sZWFuCityZWFkeV90aW1lb3V0X2NiIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IHVzZXJfZGF0YTsKKworICBpZiAoc2VsZi0+dGFyZ2V0X3N0YXRlIDw9IEdTVF9TVEFURV9SRUFEWSkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTZXR0aW5nIHBpcGVsaW5lIHRvIE5VTEwgc3RhdGUiKTsKKyAgICBzZWxmLT50YXJnZXRfc3RhdGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgICBzZWxmLT5jdXJyZW50X3N0YXRlID0gR1NUX1NUQVRFX05VTEw7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChzZWxmLT5wbGF5YmluLCBHU1RfU1RBVEVfTlVMTCk7CisgIH0KKworICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworfQorCitzdGF0aWMgdm9pZAorYWRkX3JlYWR5X3RpbWVvdXRfc291cmNlIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBpZiAoc2VsZi0+cmVhZHlfdGltZW91dF9zb3VyY2UpCisgICAgcmV0dXJuOworCisgIHNlbGYtPnJlYWR5X3RpbWVvdXRfc291cmNlID0gZ190aW1lb3V0X3NvdXJjZV9uZXdfc2Vjb25kcyAoNjApOworICBnX3NvdXJjZV9zZXRfY2FsbGJhY2sgKHNlbGYtPnJlYWR5X3RpbWVvdXRfc291cmNlLAorICAgICAgKEdTb3VyY2VGdW5jKSByZWFkeV90aW1lb3V0X2NiLCBzZWxmLCBOVUxMKTsKKyAgZ19zb3VyY2VfYXR0YWNoIChzZWxmLT5yZWFkeV90aW1lb3V0X3NvdXJjZSwgc2VsZi0+Y29udGV4dCk7Cit9CisKK3N0YXRpYyB2b2lkCityZW1vdmVfcmVhZHlfdGltZW91dF9zb3VyY2UgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGlmICghc2VsZi0+cmVhZHlfdGltZW91dF9zb3VyY2UpCisgICAgcmV0dXJuOworCisgIGdfc291cmNlX2Rlc3Ryb3kgKHNlbGYtPnJlYWR5X3RpbWVvdXRfc291cmNlKTsKKyAgZ19zb3VyY2VfdW5yZWYgKHNlbGYtPnJlYWR5X3RpbWVvdXRfc291cmNlKTsKKyAgc2VsZi0+cmVhZHlfdGltZW91dF9zb3VyY2UgPSBOVUxMOworfQorCit0eXBlZGVmIHN0cnVjdAoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgR0Vycm9yICplcnI7Cit9IEVycm9yU2lnbmFsRGF0YTsKKworc3RhdGljIHZvaWQKK2Vycm9yX2Rpc3BhdGNoIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEVycm9yU2lnbmFsRGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKKworICBnX3NpZ25hbF9lbWl0IChkYXRhLT5wbGF5ZXIsIHNpZ25hbHNbU0lHTkFMX0VSUk9SXSwgMCwgZGF0YS0+ZXJyKTsKK30KKworc3RhdGljIHZvaWQKK2ZyZWVfZXJyb3Jfc2lnbmFsX2RhdGEgKEVycm9yU2lnbmFsRGF0YSAqIGRhdGEpCit7CisgIGdfb2JqZWN0X3VucmVmIChkYXRhLT5wbGF5ZXIpOworICBnX2NsZWFyX2Vycm9yICgmZGF0YS0+ZXJyKTsKKyAgZ19mcmVlIChkYXRhKTsKK30KKworc3RhdGljIHZvaWQKK2VtaXRfZXJyb3IgKEdzdFBsYXllciAqIHNlbGYsIEdFcnJvciAqIGVycikKK3sKKyAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkVycm9yOiAlcyAoJXMsICVkKSIsIGVyci0+bWVzc2FnZSwKKyAgICAgIGdfcXVhcmtfdG9fc3RyaW5nIChlcnItPmRvbWFpbiksIGVyci0+Y29kZSk7CisKKyAgaWYgKGdfc2lnbmFsX2hhbmRsZXJfZmluZCAoc2VsZiwgR19TSUdOQUxfTUFUQ0hfSUQsCisgICAgICAgICAgc2lnbmFsc1tTSUdOQUxfRVJST1JdLCAwLCBOVUxMLCBOVUxMLCBOVUxMKSAhPSAwKSB7CisgICAgRXJyb3JTaWduYWxEYXRhICpkYXRhID0gZ19uZXcgKEVycm9yU2lnbmFsRGF0YSwgMSk7CisKKyAgICBkYXRhLT5wbGF5ZXIgPSBnX29iamVjdF9yZWYgKHNlbGYpOworICAgIGRhdGEtPmVyciA9IGdfZXJyb3JfY29weSAoZXJyKTsKKyAgICBnc3RfcGxheWVyX3NpZ25hbF9kaXNwYXRjaGVyX2Rpc3BhdGNoIChzZWxmLT5zaWduYWxfZGlzcGF0Y2hlciwgc2VsZiwKKyAgICAgICAgZXJyb3JfZGlzcGF0Y2gsIGRhdGEsIChHRGVzdHJveU5vdGlmeSkgZnJlZV9lcnJvcl9zaWduYWxfZGF0YSk7CisgIH0KKworICBnX2Vycm9yX2ZyZWUgKGVycik7CisKKyAgcmVtb3ZlX3RpY2tfc291cmNlIChzZWxmKTsKKyAgcmVtb3ZlX3JlYWR5X3RpbWVvdXRfc291cmNlIChzZWxmKTsKKworICBzZWxmLT50YXJnZXRfc3RhdGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgc2VsZi0+Y3VycmVudF9zdGF0ZSA9IEdTVF9TVEFURV9OVUxMOworICBzZWxmLT5pc19saXZlID0gRkFMU0U7CisgIHNlbGYtPmlzX2VvcyA9IEZBTFNFOworICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNlbGYtPnBsYXliaW4sIEdTVF9TVEFURV9OVUxMKTsKKyAgY2hhbmdlX3N0YXRlIChzZWxmLCBHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQpOworICBzZWxmLT5idWZmZXJpbmcgPSAxMDA7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGlmIChzZWxmLT5tZWRpYV9pbmZvKSB7CisgICAgZ19vYmplY3RfdW5yZWYgKHNlbGYtPm1lZGlhX2luZm8pOworICAgIHNlbGYtPm1lZGlhX2luZm8gPSBOVUxMOworICB9CisKKyAgaWYgKHNlbGYtPmdsb2JhbF90YWdzKSB7CisgICAgZ3N0X3RhZ19saXN0X3VucmVmIChzZWxmLT5nbG9iYWxfdGFncyk7CisgICAgc2VsZi0+Z2xvYmFsX3RhZ3MgPSBOVUxMOworICB9CisKKyAgc2VsZi0+c2Vla19wZW5kaW5nID0gRkFMU0U7CisgIGlmIChzZWxmLT5zZWVrX3NvdXJjZSkgeworICAgIGdfc291cmNlX2Rlc3Ryb3kgKHNlbGYtPnNlZWtfc291cmNlKTsKKyAgICBnX3NvdXJjZV91bnJlZiAoc2VsZi0+c2Vla19zb3VyY2UpOworICAgIHNlbGYtPnNlZWtfc291cmNlID0gTlVMTDsKKyAgfQorICBzZWxmLT5zZWVrX3Bvc2l0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgc2VsZi0+bGFzdF9zZWVrX3RpbWUgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworfQorCitzdGF0aWMgdm9pZAorZHVtcF9kb3RfZmlsZSAoR3N0UGxheWVyICogc2VsZiwgY29uc3QgZ2NoYXIgKiBuYW1lKQoreworICBnY2hhciAqZnVsbF9uYW1lOworCisgIGZ1bGxfbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoImdzdC1wbGF5ZXIuJXAuJXMiLCBzZWxmLCBuYW1lKTsKKworICBHU1RfREVCVUdfQklOX1RPX0RPVF9GSUxFX1dJVEhfVFMgKEdTVF9CSU4gKHNlbGYtPnBsYXliaW4pLAorICAgICAgR1NUX0RFQlVHX0dSQVBIX1NIT1dfQUxMLCBmdWxsX25hbWUpOworCisgIGdfZnJlZSAoZnVsbF9uYW1lKTsKK30KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIEdFcnJvciAqZXJyOworfSBXYXJuaW5nU2lnbmFsRGF0YTsKKworc3RhdGljIHZvaWQKK3dhcm5pbmdfZGlzcGF0Y2ggKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgV2FybmluZ1NpZ25hbERhdGEgKmRhdGEgPSB1c2VyX2RhdGE7CisKKyAgZ19zaWduYWxfZW1pdCAoZGF0YS0+cGxheWVyLCBzaWduYWxzW1NJR05BTF9XQVJOSU5HXSwgMCwgZGF0YS0+ZXJyKTsKK30KKworc3RhdGljIHZvaWQKK2ZyZWVfd2FybmluZ19zaWduYWxfZGF0YSAoV2FybmluZ1NpZ25hbERhdGEgKiBkYXRhKQoreworICBnX29iamVjdF91bnJlZiAoZGF0YS0+cGxheWVyKTsKKyAgZ19jbGVhcl9lcnJvciAoJmRhdGEtPmVycik7CisgIGdfZnJlZSAoZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkCitlbWl0X3dhcm5pbmcgKEdzdFBsYXllciAqIHNlbGYsIEdFcnJvciAqIGVycikKK3sKKyAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIldhcm5pbmc6ICVzICglcywgJWQpIiwgZXJyLT5tZXNzYWdlLAorICAgICAgZ19xdWFya190b19zdHJpbmcgKGVyci0+ZG9tYWluKSwgZXJyLT5jb2RlKTsKKworICBpZiAoZ19zaWduYWxfaGFuZGxlcl9maW5kIChzZWxmLCBHX1NJR05BTF9NQVRDSF9JRCwKKyAgICAgICAgICBzaWduYWxzW1NJR05BTF9XQVJOSU5HXSwgMCwgTlVMTCwgTlVMTCwgTlVMTCkgIT0gMCkgeworICAgIFdhcm5pbmdTaWduYWxEYXRhICpkYXRhID0gZ19uZXcgKFdhcm5pbmdTaWduYWxEYXRhLCAxKTsKKworICAgIGRhdGEtPnBsYXllciA9IGdfb2JqZWN0X3JlZiAoc2VsZik7CisgICAgZGF0YS0+ZXJyID0gZ19lcnJvcl9jb3B5IChlcnIpOworICAgIGdzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2ggKHNlbGYtPnNpZ25hbF9kaXNwYXRjaGVyLCBzZWxmLAorICAgICAgICB3YXJuaW5nX2Rpc3BhdGNoLCBkYXRhLCAoR0Rlc3Ryb3lOb3RpZnkpIGZyZWVfd2FybmluZ19zaWduYWxfZGF0YSk7CisgIH0KKworICBnX2Vycm9yX2ZyZWUgKGVycik7Cit9CisKK3N0YXRpYyB2b2lkCitlcnJvcl9jYiAoR19HTlVDX1VOVVNFRCBHc3RCdXMgKiBidXMsIEdzdE1lc3NhZ2UgKiBtc2csIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKKyAgR0Vycm9yICplcnIsICpwbGF5ZXJfZXJyOworICBnY2hhciAqbmFtZSwgKmRlYnVnLCAqbWVzc2FnZSwgKmZ1bGxfbWVzc2FnZTsKKworICBkdW1wX2RvdF9maWxlIChzZWxmLCAiZXJyb3IiKTsKKworICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvciAobXNnLCAmZXJyLCAmZGVidWcpOworCisgIG5hbWUgPSBnc3Rfb2JqZWN0X2dldF9wYXRoX3N0cmluZyAobXNnLT5zcmMpOworICBtZXNzYWdlID0gZ3N0X2Vycm9yX2dldF9tZXNzYWdlIChlcnItPmRvbWFpbiwgZXJyLT5jb2RlKTsKKworICBpZiAoZGVidWcpCisgICAgZnVsbF9tZXNzYWdlID0KKyAgICAgICAgZ19zdHJkdXBfcHJpbnRmICgiRXJyb3IgZnJvbSBlbGVtZW50ICVzOiAlc1xuJXNcbiVzIiwgbmFtZSwgbWVzc2FnZSwKKyAgICAgICAgZXJyLT5tZXNzYWdlLCBkZWJ1Zyk7CisgIGVsc2UKKyAgICBmdWxsX21lc3NhZ2UgPQorICAgICAgICBnX3N0cmR1cF9wcmludGYgKCJFcnJvciBmcm9tIGVsZW1lbnQgJXM6ICVzXG4lcyIsIG5hbWUsIG1lc3NhZ2UsCisgICAgICAgIGVyci0+bWVzc2FnZSk7CisKKyAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkVSUk9SOiBmcm9tIGVsZW1lbnQgJXM6ICVzXG4iLCBuYW1lLCBlcnItPm1lc3NhZ2UpOworICBpZiAoZGVidWcgIT0gTlVMTCkKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiQWRkaXRpb25hbCBkZWJ1ZyBpbmZvOlxuJXNcbiIsIGRlYnVnKTsKKworICBwbGF5ZXJfZXJyID0KKyAgICAgIGdfZXJyb3JfbmV3X2xpdGVyYWwgKEdTVF9QTEFZRVJfRVJST1IsIEdTVF9QTEFZRVJfRVJST1JfRkFJTEVELAorICAgICAgZnVsbF9tZXNzYWdlKTsKKyAgZW1pdF9lcnJvciAoc2VsZiwgcGxheWVyX2Vycik7CisKKyAgZ19jbGVhcl9lcnJvciAoJmVycik7CisgIGdfZnJlZSAoZGVidWcpOworICBnX2ZyZWUgKG5hbWUpOworICBnX2ZyZWUgKGZ1bGxfbWVzc2FnZSk7CisgIGdfZnJlZSAobWVzc2FnZSk7Cit9CisKK3N0YXRpYyB2b2lkCit3YXJuaW5nX2NiIChHX0dOVUNfVU5VU0VEIEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworICBHRXJyb3IgKmVyciwgKnBsYXllcl9lcnI7CisgIGdjaGFyICpuYW1lLCAqZGVidWcsICptZXNzYWdlLCAqZnVsbF9tZXNzYWdlOworCisgIGR1bXBfZG90X2ZpbGUgKHNlbGYsICJ3YXJuaW5nIik7CisKKyAgZ3N0X21lc3NhZ2VfcGFyc2Vfd2FybmluZyAobXNnLCAmZXJyLCAmZGVidWcpOworCisgIG5hbWUgPSBnc3Rfb2JqZWN0X2dldF9wYXRoX3N0cmluZyAobXNnLT5zcmMpOworICBtZXNzYWdlID0gZ3N0X2Vycm9yX2dldF9tZXNzYWdlIChlcnItPmRvbWFpbiwgZXJyLT5jb2RlKTsKKworICBpZiAoZGVidWcpCisgICAgZnVsbF9tZXNzYWdlID0KKyAgICAgICAgZ19zdHJkdXBfcHJpbnRmICgiV2FybmluZyBmcm9tIGVsZW1lbnQgJXM6ICVzXG4lc1xuJXMiLCBuYW1lLCBtZXNzYWdlLAorICAgICAgICBlcnItPm1lc3NhZ2UsIGRlYnVnKTsKKyAgZWxzZQorICAgIGZ1bGxfbWVzc2FnZSA9CisgICAgICAgIGdfc3RyZHVwX3ByaW50ZiAoIldhcm5pbmcgZnJvbSBlbGVtZW50ICVzOiAlc1xuJXMiLCBuYW1lLCBtZXNzYWdlLAorICAgICAgICBlcnItPm1lc3NhZ2UpOworCisgIEdTVF9XQVJOSU5HX09CSkVDVCAoc2VsZiwgIldBUk5JTkc6IGZyb20gZWxlbWVudCAlczogJXNcbiIsIG5hbWUsCisgICAgICBlcnItPm1lc3NhZ2UpOworICBpZiAoZGVidWcgIT0gTlVMTCkKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNlbGYsICJBZGRpdGlvbmFsIGRlYnVnIGluZm86XG4lc1xuIiwgZGVidWcpOworCisgIHBsYXllcl9lcnIgPQorICAgICAgZ19lcnJvcl9uZXdfbGl0ZXJhbCAoR1NUX1BMQVlFUl9FUlJPUiwgR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQsCisgICAgICBmdWxsX21lc3NhZ2UpOworICBlbWl0X3dhcm5pbmcgKHNlbGYsIHBsYXllcl9lcnIpOworCisgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOworICBnX2ZyZWUgKGRlYnVnKTsKKyAgZ19mcmVlIChuYW1lKTsKKyAgZ19mcmVlIChmdWxsX21lc3NhZ2UpOworICBnX2ZyZWUgKG1lc3NhZ2UpOworfQorCitzdGF0aWMgdm9pZAorZW9zX2Rpc3BhdGNoIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIGdfc2lnbmFsX2VtaXQgKHVzZXJfZGF0YSwgc2lnbmFsc1tTSUdOQUxfRU5EX09GX1NUUkVBTV0sIDApOworfQorCitzdGF0aWMgdm9pZAorZW9zX2NiIChHX0dOVUNfVU5VU0VEIEdzdEJ1cyAqIGJ1cywgR19HTlVDX1VOVVNFRCBHc3RNZXNzYWdlICogbXNnLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiRW5kIG9mIHN0cmVhbSIpOworCisgIHRpY2tfY2IgKHNlbGYpOworICByZW1vdmVfdGlja19zb3VyY2UgKHNlbGYpOworCisgIGlmIChnX3NpZ25hbF9oYW5kbGVyX2ZpbmQgKHNlbGYsIEdfU0lHTkFMX01BVENIX0lELAorICAgICAgICAgIHNpZ25hbHNbU0lHTkFMX0VORF9PRl9TVFJFQU1dLCAwLCBOVUxMLCBOVUxMLCBOVUxMKSAhPSAwKSB7CisgICAgZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaCAoc2VsZi0+c2lnbmFsX2Rpc3BhdGNoZXIsIHNlbGYsCisgICAgICAgIGVvc19kaXNwYXRjaCwgZ19vYmplY3RfcmVmIChzZWxmKSwgKEdEZXN0cm95Tm90aWZ5KSBnX29iamVjdF91bnJlZik7CisgIH0KKyAgY2hhbmdlX3N0YXRlIChzZWxmLCBHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQpOworICBzZWxmLT5idWZmZXJpbmcgPSAxMDA7CisgIHNlbGYtPmlzX2VvcyA9IFRSVUU7Cit9CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBnaW50IHBlcmNlbnQ7Cit9IEJ1ZmZlcmluZ1NpZ25hbERhdGE7CisKK3N0YXRpYyB2b2lkCitidWZmZXJpbmdfZGlzcGF0Y2ggKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgQnVmZmVyaW5nU2lnbmFsRGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKKworICBpZiAoZGF0YS0+cGxheWVyLT50YXJnZXRfc3RhdGUgPj0gR1NUX1NUQVRFX1BBVVNFRCkgeworICAgIGdfc2lnbmFsX2VtaXQgKGRhdGEtPnBsYXllciwgc2lnbmFsc1tTSUdOQUxfQlVGRkVSSU5HXSwgMCwgZGF0YS0+cGVyY2VudCk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2J1ZmZlcmluZ19zaWduYWxfZGF0YV9mcmVlIChCdWZmZXJpbmdTaWduYWxEYXRhICogZGF0YSkKK3sKKyAgZ19vYmplY3RfdW5yZWYgKGRhdGEtPnBsYXllcik7CisgIGdfZnJlZSAoZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkCitidWZmZXJpbmdfY2IgKEdfR05VQ19VTlVTRUQgR3N0QnVzICogYnVzLCBHc3RNZXNzYWdlICogbXNnLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisgIGdpbnQgcGVyY2VudDsKKworICBpZiAoc2VsZi0+dGFyZ2V0X3N0YXRlIDwgR1NUX1NUQVRFX1BBVVNFRCkKKyAgICByZXR1cm47CisgIGlmIChzZWxmLT5pc19saXZlKQorICAgIHJldHVybjsKKworICBnc3RfbWVzc2FnZV9wYXJzZV9idWZmZXJpbmcgKG1zZywgJnBlcmNlbnQpOworICBHU1RfTE9HX09CSkVDVCAoc2VsZiwgIkJ1ZmZlcmluZyAlZCUlIiwgcGVyY2VudCk7CisKKyAgaWYgKHBlcmNlbnQgPCAxMDAgJiYgc2VsZi0+dGFyZ2V0X3N0YXRlID49IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzdGF0ZV9yZXQ7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiV2FpdGluZyBmb3IgYnVmZmVyaW5nIHRvIGZpbmlzaCIpOworICAgIHN0YXRlX3JldCA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc2VsZi0+cGxheWJpbiwgR1NUX1NUQVRFX1BBVVNFRCk7CisKKyAgICBpZiAoc3RhdGVfcmV0ID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgeworICAgICAgZW1pdF9lcnJvciAoc2VsZiwgZ19lcnJvcl9uZXcgKEdTVF9QTEFZRVJfRVJST1IsIEdTVF9QTEFZRVJfRVJST1JfRkFJTEVELAorICAgICAgICAgICAgICAiRmFpbGVkIHRvIGhhbmRsZSBidWZmZXJpbmciKSk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2hhbmdlX3N0YXRlIChzZWxmLCBHU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORyk7CisgIH0KKworICBpZiAoc2VsZi0+YnVmZmVyaW5nICE9IHBlcmNlbnQpIHsKKyAgICBpZiAoZ19zaWduYWxfaGFuZGxlcl9maW5kIChzZWxmLCBHX1NJR05BTF9NQVRDSF9JRCwKKyAgICAgICAgICAgIHNpZ25hbHNbU0lHTkFMX0JVRkZFUklOR10sIDAsIE5VTEwsIE5VTEwsIE5VTEwpICE9IDApIHsKKyAgICAgIEJ1ZmZlcmluZ1NpZ25hbERhdGEgKmRhdGEgPSBnX25ldyAoQnVmZmVyaW5nU2lnbmFsRGF0YSwgMSk7CisKKyAgICAgIGRhdGEtPnBsYXllciA9IGdfb2JqZWN0X3JlZiAoc2VsZik7CisgICAgICBkYXRhLT5wZXJjZW50ID0gcGVyY2VudDsKKyAgICAgIGdzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2ggKHNlbGYtPnNpZ25hbF9kaXNwYXRjaGVyLCBzZWxmLAorICAgICAgICAgIGJ1ZmZlcmluZ19kaXNwYXRjaCwgZGF0YSwKKyAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGJ1ZmZlcmluZ19zaWduYWxfZGF0YV9mcmVlKTsKKyAgICB9CisKKyAgICBzZWxmLT5idWZmZXJpbmcgPSBwZXJjZW50OworICB9CisKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgaWYgKHBlcmNlbnQgPT0gMTAwICYmIChzZWxmLT5zZWVrX3Bvc2l0aW9uICE9IEdTVF9DTE9DS19USU1FX05PTkUgfHwKKyAgICAgICAgICBzZWxmLT5zZWVrX3BlbmRpbmcpKSB7CisgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJCdWZmZXJpbmcgZmluaXNoZWQgLSBzZWVrIHBlbmRpbmciKTsKKyAgfSBlbHNlIGlmIChwZXJjZW50ID09IDEwMCAmJiBzZWxmLT50YXJnZXRfc3RhdGUgPj0gR1NUX1NUQVRFX1BMQVlJTkcKKyAgICAgICYmIHNlbGYtPmN1cnJlbnRfc3RhdGUgPj0gR1NUX1NUQVRFX1BBVVNFRCkgeworICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlX3JldDsKKworICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiQnVmZmVyaW5nIGZpbmlzaGVkIC0gZ29pbmcgdG8gUExBWUlORyIpOworICAgIHN0YXRlX3JldCA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc2VsZi0+cGxheWJpbiwgR1NUX1NUQVRFX1BMQVlJTkcpOworICAgIC8qIEFwcGxpY2F0aW9uIHN0YXRlIGNoYW5nZSBpcyBoYXBwZW5pbmcgd2hlbiB0aGUgc3RhdGUgY2hhbmdlIGhhcHBlbmVkICovCisgICAgaWYgKHN0YXRlX3JldCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpCisgICAgICBlbWl0X2Vycm9yIChzZWxmLCBnX2Vycm9yX25ldyAoR1NUX1BMQVlFUl9FUlJPUiwgR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQsCisgICAgICAgICAgICAgICJGYWlsZWQgdG8gaGFuZGxlIGJ1ZmZlcmluZyIpKTsKKyAgfSBlbHNlIGlmIChwZXJjZW50ID09IDEwMCAmJiBzZWxmLT50YXJnZXRfc3RhdGUgPj0gR1NUX1NUQVRFX1BBVVNFRCkgeworICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiQnVmZmVyaW5nIGZpbmlzaGVkIC0gc3RheWluZyBQQVVTRUQiKTsKKyAgICBjaGFuZ2Vfc3RhdGUgKHNlbGYsIEdTVF9QTEFZRVJfU1RBVEVfUEFVU0VEKTsKKyAgfSBlbHNlIHsKKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitjbG9ja19sb3N0X2NiIChHX0dOVUNfVU5VU0VEIEdzdEJ1cyAqIGJ1cywgR19HTlVDX1VOVVNFRCBHc3RNZXNzYWdlICogbXNnLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKKyAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gc3RhdGVfcmV0OworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJDbG9jayBsb3N0Iik7CisgIGlmIChzZWxmLT50YXJnZXRfc3RhdGUgPj0gR1NUX1NUQVRFX1BMQVlJTkcpIHsKKyAgICBzdGF0ZV9yZXQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNlbGYtPnBsYXliaW4sIEdTVF9TVEFURV9QQVVTRUQpOworICAgIGlmIChzdGF0ZV9yZXQgIT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKQorICAgICAgc3RhdGVfcmV0ID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChzZWxmLT5wbGF5YmluLCBHU1RfU1RBVEVfUExBWUlORyk7CisKKyAgICBpZiAoc3RhdGVfcmV0ID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkKKyAgICAgIGVtaXRfZXJyb3IgKHNlbGYsIGdfZXJyb3JfbmV3IChHU1RfUExBWUVSX0VSUk9SLCBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCwKKyAgICAgICAgICAgICAgIkZhaWxlZCB0byBoYW5kbGUgY2xvY2sgbG9zcyIpKTsKKyAgfQorfQorCit0eXBlZGVmIHN0cnVjdAoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgZ2ludCB3aWR0aCwgaGVpZ2h0OworfSBWaWRlb0RpbWVuc2lvbnNDaGFuZ2VkU2lnbmFsRGF0YTsKKworc3RhdGljIHZvaWQKK3ZpZGVvX2RpbWVuc2lvbnNfY2hhbmdlZF9kaXNwYXRjaCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBWaWRlb0RpbWVuc2lvbnNDaGFuZ2VkU2lnbmFsRGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKKworICBpZiAoZGF0YS0+cGxheWVyLT50YXJnZXRfc3RhdGUgPj0gR1NUX1NUQVRFX1BBVVNFRCkgeworICAgIGdfc2lnbmFsX2VtaXQgKGRhdGEtPnBsYXllciwgc2lnbmFsc1tTSUdOQUxfVklERU9fRElNRU5TSU9OU19DSEFOR0VEXSwgMCwKKyAgICAgICAgZGF0YS0+d2lkdGgsIGRhdGEtPmhlaWdodCk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK3ZpZGVvX2RpbWVuc2lvbnNfY2hhbmdlZF9zaWduYWxfZGF0YV9mcmVlIChWaWRlb0RpbWVuc2lvbnNDaGFuZ2VkU2lnbmFsRGF0YSAqCisgICAgZGF0YSkKK3sKKyAgZ19vYmplY3RfdW5yZWYgKGRhdGEtPnBsYXllcik7CisgIGdfZnJlZSAoZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkCitjaGVja192aWRlb19kaW1lbnNpb25zX2NoYW5nZWQgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIEdzdEVsZW1lbnQgKnZpZGVvX3Npbms7CisgIEdzdFBhZCAqdmlkZW9fc2lua19wYWQ7CisgIEdzdENhcHMgKmNhcHM7CisgIEdzdFZpZGVvSW5mbyBpbmZvOworICBnaW50IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKKworICBnX29iamVjdF9nZXQgKHNlbGYtPnBsYXliaW4sICJ2aWRlby1zaW5rIiwgJnZpZGVvX3NpbmssIE5VTEwpOworICBpZiAoIXZpZGVvX3NpbmspCisgICAgZ290byBvdXQ7CisKKyAgdmlkZW9fc2lua19wYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAodmlkZW9fc2luaywgInNpbmsiKTsKKyAgaWYgKCF2aWRlb19zaW5rX3BhZCkgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKHZpZGVvX3NpbmspOworICAgIGdvdG8gb3V0OworICB9CisKKyAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAodmlkZW9fc2lua19wYWQpOworCisgIGlmIChjYXBzKSB7CisgICAgaWYgKGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluZm8sIGNhcHMpKSB7CisgICAgICBpbmZvLndpZHRoID0gaW5mby53aWR0aCAqIGluZm8ucGFyX24gLyBpbmZvLnBhcl9kOworCisgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiVmlkZW8gZGltZW5zaW9ucyBjaGFuZ2VkOiAlZHglZCIsIGluZm8ud2lkdGgsCisgICAgICAgICAgaW5mby5oZWlnaHQpOworICAgICAgd2lkdGggPSBpbmZvLndpZHRoOworICAgICAgaGVpZ2h0ID0gaW5mby5oZWlnaHQ7CisgICAgfQorCisgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworICB9CisgIGdzdF9vYmplY3RfdW5yZWYgKHZpZGVvX3NpbmtfcGFkKTsKKyAgZ3N0X29iamVjdF91bnJlZiAodmlkZW9fc2luayk7CisKK291dDoKKyAgaWYgKGdfc2lnbmFsX2hhbmRsZXJfZmluZCAoc2VsZiwgR19TSUdOQUxfTUFUQ0hfSUQsCisgICAgICAgICAgc2lnbmFsc1tTSUdOQUxfVklERU9fRElNRU5TSU9OU19DSEFOR0VEXSwgMCwgTlVMTCwgTlVMTCwgTlVMTCkgIT0gMCkgeworICAgIFZpZGVvRGltZW5zaW9uc0NoYW5nZWRTaWduYWxEYXRhICpkYXRhID0KKyAgICAgICAgZ19uZXcgKFZpZGVvRGltZW5zaW9uc0NoYW5nZWRTaWduYWxEYXRhLCAxKTsKKworICAgIGRhdGEtPnBsYXllciA9IGdfb2JqZWN0X3JlZiAoc2VsZik7CisgICAgZGF0YS0+d2lkdGggPSB3aWR0aDsKKyAgICBkYXRhLT5oZWlnaHQgPSBoZWlnaHQ7CisgICAgZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaCAoc2VsZi0+c2lnbmFsX2Rpc3BhdGNoZXIsIHNlbGYsCisgICAgICAgIHZpZGVvX2RpbWVuc2lvbnNfY2hhbmdlZF9kaXNwYXRjaCwgZGF0YSwKKyAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSB2aWRlb19kaW1lbnNpb25zX2NoYW5nZWRfc2lnbmFsX2RhdGFfZnJlZSk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK25vdGlmeV9jYXBzX2NiIChHX0dOVUNfVU5VU0VEIEdPYmplY3QgKiBvYmplY3QsCisgICAgR19HTlVDX1VOVVNFRCBHUGFyYW1TcGVjICogcHNwZWMsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKKworICBjaGVja192aWRlb19kaW1lbnNpb25zX2NoYW5nZWQgKHNlbGYpOworfQorCit0eXBlZGVmIHN0cnVjdAoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uOworfSBEdXJhdGlvbkNoYW5nZWRTaWduYWxEYXRhOworCitzdGF0aWMgdm9pZAorZHVyYXRpb25fY2hhbmdlZF9kaXNwYXRjaCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBEdXJhdGlvbkNoYW5nZWRTaWduYWxEYXRhICpkYXRhID0gdXNlcl9kYXRhOworCisgIGlmIChkYXRhLT5wbGF5ZXItPnRhcmdldF9zdGF0ZSA+PSBHU1RfU1RBVEVfUEFVU0VEKSB7CisgICAgZ19zaWduYWxfZW1pdCAoZGF0YS0+cGxheWVyLCBzaWduYWxzW1NJR05BTF9EVVJBVElPTl9DSEFOR0VEXSwgMCwKKyAgICAgICAgZGF0YS0+ZHVyYXRpb24pOworICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyAoR19PQkpFQ1QgKGRhdGEtPnBsYXllciksCisgICAgICAgIHBhcmFtX3NwZWNzW1BST1BfRFVSQVRJT05dKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZHVyYXRpb25fY2hhbmdlZF9zaWduYWxfZGF0YV9mcmVlIChEdXJhdGlvbkNoYW5nZWRTaWduYWxEYXRhICogZGF0YSkKK3sKKyAgZ19vYmplY3RfdW5yZWYgKGRhdGEtPnBsYXllcik7CisgIGdfZnJlZSAoZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkCitlbWl0X2R1cmF0aW9uX2NoYW5nZWQgKEdzdFBsYXllciAqIHNlbGYsIEdzdENsb2NrVGltZSBkdXJhdGlvbikKK3sKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkR1cmF0aW9uIGNoYW5nZWQgJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgR1NUX1RJTUVfQVJHUyAoZHVyYXRpb24pKTsKKworICBpZiAoZ19zaWduYWxfaGFuZGxlcl9maW5kIChzZWxmLCBHX1NJR05BTF9NQVRDSF9JRCwKKyAgICAgICAgICBzaWduYWxzW1NJR05BTF9EVVJBVElPTl9DSEFOR0VEXSwgMCwgTlVMTCwgTlVMTCwgTlVMTCkgIT0gMCkgeworICAgIER1cmF0aW9uQ2hhbmdlZFNpZ25hbERhdGEgKmRhdGEgPSBnX25ldyAoRHVyYXRpb25DaGFuZ2VkU2lnbmFsRGF0YSwgMSk7CisKKyAgICBkYXRhLT5wbGF5ZXIgPSBnX29iamVjdF9yZWYgKHNlbGYpOworICAgIGRhdGEtPmR1cmF0aW9uID0gZHVyYXRpb247CisgICAgZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaCAoc2VsZi0+c2lnbmFsX2Rpc3BhdGNoZXIsIHNlbGYsCisgICAgICAgIGR1cmF0aW9uX2NoYW5nZWRfZGlzcGF0Y2gsIGRhdGEsCisgICAgICAgIChHRGVzdHJveU5vdGlmeSkgZHVyYXRpb25fY2hhbmdlZF9zaWduYWxfZGF0YV9mcmVlKTsKKyAgfQorfQorCit0eXBlZGVmIHN0cnVjdAoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgR3N0Q2xvY2tUaW1lIHBvc2l0aW9uOworfSBTZWVrRG9uZVNpZ25hbERhdGE7CisKK3N0YXRpYyB2b2lkCitzZWVrX2RvbmVfZGlzcGF0Y2ggKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgU2Vla0RvbmVTaWduYWxEYXRhICpkYXRhID0gdXNlcl9kYXRhOworCisgIGdfc2lnbmFsX2VtaXQgKGRhdGEtPnBsYXllciwgc2lnbmFsc1tTSUdOQUxfU0VFS19ET05FXSwgMCwgZGF0YS0+cG9zaXRpb24pOworfQorCitzdGF0aWMgdm9pZAorc2Vla19kb25lX3NpZ25hbF9kYXRhX2ZyZWUgKFNlZWtEb25lU2lnbmFsRGF0YSAqIGRhdGEpCit7CisgIGdfb2JqZWN0X3VucmVmIChkYXRhLT5wbGF5ZXIpOworICBnX2ZyZWUgKGRhdGEpOworfQorCitzdGF0aWMgdm9pZAorZW1pdF9zZWVrX2RvbmUgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGlmIChnX3NpZ25hbF9oYW5kbGVyX2ZpbmQgKHNlbGYsIEdfU0lHTkFMX01BVENIX0lELAorICAgICAgICAgIHNpZ25hbHNbU0lHTkFMX1NFRUtfRE9ORV0sIDAsIE5VTEwsIE5VTEwsIE5VTEwpICE9IDApIHsKKyAgICBTZWVrRG9uZVNpZ25hbERhdGEgKmRhdGEgPSBnX25ldyAoU2Vla0RvbmVTaWduYWxEYXRhLCAxKTsKKworICAgIGRhdGEtPnBsYXllciA9IGdfb2JqZWN0X3JlZiAoc2VsZik7CisgICAgZGF0YS0+cG9zaXRpb24gPSBnc3RfcGxheWVyX2dldF9wb3NpdGlvbiAoc2VsZik7CisgICAgZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaCAoc2VsZi0+c2lnbmFsX2Rpc3BhdGNoZXIsIHNlbGYsCisgICAgICAgIHNlZWtfZG9uZV9kaXNwYXRjaCwgZGF0YSwgKEdEZXN0cm95Tm90aWZ5KSBzZWVrX2RvbmVfc2lnbmFsX2RhdGFfZnJlZSk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK3N0YXRlX2NoYW5nZWRfY2IgKEdfR05VQ19VTlVTRUQgR3N0QnVzICogYnVzLCBHc3RNZXNzYWdlICogbXNnLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKKyAgR3N0U3RhdGUgb2xkX3N0YXRlLCBuZXdfc3RhdGUsIHBlbmRpbmdfc3RhdGU7CisKKyAgZ3N0X21lc3NhZ2VfcGFyc2Vfc3RhdGVfY2hhbmdlZCAobXNnLCAmb2xkX3N0YXRlLCAmbmV3X3N0YXRlLCAmcGVuZGluZ19zdGF0ZSk7CisKKyAgaWYgKEdTVF9NRVNTQUdFX1NSQyAobXNnKSA9PSBHU1RfT0JKRUNUIChzZWxmLT5wbGF5YmluKSkgeworICAgIGdjaGFyICp0cmFuc2l0aW9uX25hbWU7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiQ2hhbmdlZCBzdGF0ZSBvbGQ6ICVzIG5ldzogJXMgcGVuZGluZzogJXMiLAorICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSAob2xkX3N0YXRlKSwKKyAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUgKG5ld19zdGF0ZSksCisgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lIChwZW5kaW5nX3N0YXRlKSk7CisKKyAgICB0cmFuc2l0aW9uX25hbWUgPSBnX3N0cmR1cF9wcmludGYgKCIlc18lcyIsCisgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lIChvbGRfc3RhdGUpLAorICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSAobmV3X3N0YXRlKSk7CisgICAgZHVtcF9kb3RfZmlsZSAoc2VsZiwgdHJhbnNpdGlvbl9uYW1lKTsKKyAgICBnX2ZyZWUgKHRyYW5zaXRpb25fbmFtZSk7CisKKyAgICBzZWxmLT5jdXJyZW50X3N0YXRlID0gbmV3X3N0YXRlOworCisgICAgaWYgKG9sZF9zdGF0ZSA9PSBHU1RfU1RBVEVfUkVBRFkgJiYgbmV3X3N0YXRlID09IEdTVF9TVEFURV9QQVVTRUQKKyAgICAgICAgJiYgcGVuZGluZ19zdGF0ZSA9PSBHU1RfU1RBVEVfVk9JRF9QRU5ESU5HKSB7CisgICAgICBHc3RFbGVtZW50ICp2aWRlb19zaW5rOworICAgICAgR3N0UGFkICp2aWRlb19zaW5rX3BhZDsKKyAgICAgIGdpbnQ2NCBkdXJhdGlvbiA9IC0xOworCisgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiSW5pdGlhbCBQQVVTRUQgLSBwcmUtcm9sbGVkIik7CisKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICAgICAgaWYgKHNlbGYtPm1lZGlhX2luZm8pCisgICAgICAgIGdfb2JqZWN0X3VucmVmIChzZWxmLT5tZWRpYV9pbmZvKTsKKyAgICAgIHNlbGYtPm1lZGlhX2luZm8gPSBnc3RfcGxheWVyX21lZGlhX2luZm9fY3JlYXRlIChzZWxmKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisgICAgICBlbWl0X21lZGlhX2luZm9fdXBkYXRlZF9zaWduYWwgKHNlbGYpOworCisgICAgICBnX29iamVjdF9nZXQgKHNlbGYtPnBsYXliaW4sICJ2aWRlby1zaW5rIiwgJnZpZGVvX3NpbmssIE5VTEwpOworCisgICAgICBpZiAodmlkZW9fc2luaykgeworICAgICAgICB2aWRlb19zaW5rX3BhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkICh2aWRlb19zaW5rLCAic2luayIpOworCisgICAgICAgIGlmICh2aWRlb19zaW5rX3BhZCkgeworICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKHZpZGVvX3NpbmtfcGFkLCAibm90aWZ5OjpjYXBzIiwKKyAgICAgICAgICAgICAgKEdDYWxsYmFjaykgbm90aWZ5X2NhcHNfY2IsIHNlbGYpOworICAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHZpZGVvX3NpbmtfcGFkKTsKKyAgICAgICAgfQorICAgICAgICBnc3Rfb2JqZWN0X3VucmVmICh2aWRlb19zaW5rKTsKKyAgICAgIH0KKworICAgICAgY2hlY2tfdmlkZW9fZGltZW5zaW9uc19jaGFuZ2VkIChzZWxmKTsKKyAgICAgIGdzdF9lbGVtZW50X3F1ZXJ5X2R1cmF0aW9uIChzZWxmLT5wbGF5YmluLCBHU1RfRk9STUFUX1RJTUUsICZkdXJhdGlvbik7CisgICAgICBlbWl0X2R1cmF0aW9uX2NoYW5nZWQgKHNlbGYsIGR1cmF0aW9uKTsKKyAgICB9CisKKyAgICBpZiAobmV3X3N0YXRlID09IEdTVF9TVEFURV9QQVVTRUQKKyAgICAgICAgJiYgcGVuZGluZ19zdGF0ZSA9PSBHU1RfU1RBVEVfVk9JRF9QRU5ESU5HKSB7CisgICAgICByZW1vdmVfdGlja19zb3VyY2UgKHNlbGYpOworCisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIGlmIChzZWxmLT5zZWVrX3BlbmRpbmcpIHsKKyAgICAgICAgc2VsZi0+c2Vla19wZW5kaW5nID0gRkFMU0U7CisKKyAgICAgICAgaWYgKCFzZWxmLT5tZWRpYV9pbmZvLT5zZWVrYWJsZSkgeworICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJNZWRpYSBpcyBub3Qgc2Vla2FibGUiKTsKKyAgICAgICAgICBpZiAoc2VsZi0+c2Vla19zb3VyY2UpIHsKKyAgICAgICAgICAgIGdfc291cmNlX2Rlc3Ryb3kgKHNlbGYtPnNlZWtfc291cmNlKTsKKyAgICAgICAgICAgIGdfc291cmNlX3VucmVmIChzZWxmLT5zZWVrX3NvdXJjZSk7CisgICAgICAgICAgICBzZWxmLT5zZWVrX3NvdXJjZSA9IE5VTEw7CisgICAgICAgICAgfQorICAgICAgICAgIHNlbGYtPnNlZWtfcG9zaXRpb24gPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICAgICAgICAgIHNlbGYtPmxhc3Rfc2Vla190aW1lID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICAgICAgfSBlbHNlIGlmIChzZWxmLT5zZWVrX3NvdXJjZSkgeworICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTZWVrIGZpbmlzaGVkIGJ1dCBuZXcgc2VlayBpcyBwZW5kaW5nIik7CisgICAgICAgICAgZ3N0X3BsYXllcl9zZWVrX2ludGVybmFsX2xvY2tlZCAoc2VsZik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlNlZWsgZmluaXNoZWQiKTsKKyAgICAgICAgICBlbWl0X3NlZWtfZG9uZSAoc2VsZik7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgaWYgKHNlbGYtPnNlZWtfcG9zaXRpb24gIT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkgeworICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU2Vla2luZyBub3cgdGhhdCB3ZSByZWFjaGVkIFBBVVNFRCBzdGF0ZSIpOworICAgICAgICBnc3RfcGxheWVyX3NlZWtfaW50ZXJuYWxfbG9ja2VkIChzZWxmKTsKKyAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIH0gZWxzZSBpZiAoIXNlbGYtPnNlZWtfcGVuZGluZykgeworICAgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgICAgICAgIHRpY2tfY2IgKHNlbGYpOworCisgICAgICAgIGlmIChzZWxmLT50YXJnZXRfc3RhdGUgPj0gR1NUX1NUQVRFX1BMQVlJTkcgJiYgc2VsZi0+YnVmZmVyaW5nID09IDEwMCkgeworICAgICAgICAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlX3JldDsKKworICAgICAgICAgIHN0YXRlX3JldCA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc2VsZi0+cGxheWJpbiwgR1NUX1NUQVRFX1BMQVlJTkcpOworICAgICAgICAgIGlmIChzdGF0ZV9yZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKQorICAgICAgICAgICAgZW1pdF9lcnJvciAoc2VsZiwgZ19lcnJvcl9uZXcgKEdTVF9QTEFZRVJfRVJST1IsCisgICAgICAgICAgICAgICAgICAgIEdTVF9QTEFZRVJfRVJST1JfRkFJTEVELCAiRmFpbGVkIHRvIHBsYXkiKSk7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZi0+YnVmZmVyaW5nID09IDEwMCkgeworICAgICAgICAgIGNoYW5nZV9zdGF0ZSAoc2VsZiwgR1NUX1BMQVlFUl9TVEFURV9QQVVTRUQpOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICAgICAgfQorICAgIH0gZWxzZSBpZiAobmV3X3N0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HCisgICAgICAgICYmIHBlbmRpbmdfc3RhdGUgPT0gR1NUX1NUQVRFX1ZPSURfUEVORElORykgeworCisgICAgICAvKiBJZiBubyBzZWVrIGlzIGN1cnJlbnRseSBwZW5kaW5nLCBhZGQgdGhlIHRpY2sgc291cmNlLiBUaGlzIGNhbiBoYXBwZW4KKyAgICAgICAqIGlmIHdlIHNlZWtlZCBhbHJlYWR5IGJ1dCB0aGUgc3RhdGUtY2hhbmdlIG1lc3NhZ2Ugd2FzIHN0aWxsIHF1ZXVlZCB1cCAqLworICAgICAgaWYgKCFzZWxmLT5zZWVrX3BlbmRpbmcpIHsKKyAgICAgICAgYWRkX3RpY2tfc291cmNlIChzZWxmKTsKKyAgICAgICAgY2hhbmdlX3N0YXRlIChzZWxmLCBHU1RfUExBWUVSX1NUQVRFX1BMQVlJTkcpOworICAgICAgfQorICAgIH0gZWxzZSBpZiAobmV3X3N0YXRlID09IEdTVF9TVEFURV9SRUFEWSAmJiBvbGRfc3RhdGUgPiBHU1RfU1RBVEVfUkVBRFkpIHsKKyAgICAgIGNoYW5nZV9zdGF0ZSAoc2VsZiwgR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEKTsKKyAgICB9IGVsc2UgeworICAgICAgLyogT3RoZXJ3aXNlIHdlIG5laXRoZXIgcmVhY2hlZCBQTEFZSU5HIG5vciBQQVVTRUQsIHNvIG11c3QKKyAgICAgICAqIHdhaXQgZm9yIHNvbWV0aGluZyB0byBoYXBwZW4uLi4gaS5lLiBhcmUgQlVGRkVSSU5HIG5vdyAqLworICAgICAgY2hhbmdlX3N0YXRlIChzZWxmLCBHU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORyk7CisgICAgfQorICB9Cit9CisKK3N0YXRpYyB2b2lkCitkdXJhdGlvbl9jaGFuZ2VkX2NiIChHX0dOVUNfVU5VU0VEIEdzdEJ1cyAqIGJ1cywgR19HTlVDX1VOVVNFRCBHc3RNZXNzYWdlICogbXNnLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKKyAgZ2ludDY0IGR1cmF0aW9uOworCisgIGlmIChnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbiAoc2VsZi0+cGxheWJpbiwgR1NUX0ZPUk1BVF9USU1FLCAmZHVyYXRpb24pKSB7CisgICAgZW1pdF9kdXJhdGlvbl9jaGFuZ2VkIChzZWxmLCBkdXJhdGlvbik7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2xhdGVuY3lfY2IgKEdfR05VQ19VTlVTRUQgR3N0QnVzICogYnVzLCBHX0dOVUNfVU5VU0VEIEdzdE1lc3NhZ2UgKiBtc2csCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJMYXRlbmN5IGNoYW5nZWQiKTsKKworICBnc3RfYmluX3JlY2FsY3VsYXRlX2xhdGVuY3kgKEdTVF9CSU4gKHNlbGYtPnBsYXliaW4pKTsKK30KKworc3RhdGljIHZvaWQKK3JlcXVlc3Rfc3RhdGVfY2IgKEdfR05VQ19VTlVTRUQgR3N0QnVzICogYnVzLCBHc3RNZXNzYWdlICogbXNnLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKKyAgR3N0U3RhdGUgc3RhdGU7CisgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlX3JldDsKKworICBnc3RfbWVzc2FnZV9wYXJzZV9yZXF1ZXN0X3N0YXRlIChtc2csICZzdGF0ZSk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlN0YXRlICVzIHJlcXVlc3RlZCIsCisgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSAoc3RhdGUpKTsKKworICBzZWxmLT50YXJnZXRfc3RhdGUgPSBzdGF0ZTsKKyAgc3RhdGVfcmV0ID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChzZWxmLT5wbGF5YmluLCBzdGF0ZSk7CisgIGlmIChzdGF0ZV9yZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKQorICAgIGVtaXRfZXJyb3IgKHNlbGYsIGdfZXJyb3JfbmV3IChHU1RfUExBWUVSX0VSUk9SLCBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCwKKyAgICAgICAgICAgICJGYWlsZWQgdG8gY2hhbmdlIHRvIHJlcXVlc3RlZCBzdGF0ZSAlcyIsCisgICAgICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSAoc3RhdGUpKSk7Cit9CisKK3N0YXRpYyB2b2lkCittZWRpYV9pbmZvX3VwZGF0ZSAoR3N0UGxheWVyICogc2VsZiwgR3N0UGxheWVyTWVkaWFJbmZvICogaW5mbykKK3sKKyAgZ19mcmVlIChpbmZvLT50aXRsZSk7CisgIGluZm8tPnRpdGxlID0gZ2V0X2Zyb21fdGFncyAoc2VsZiwgaW5mbywgZ2V0X3RpdGxlKTsKKworICBnX2ZyZWUgKGluZm8tPmNvbnRhaW5lcik7CisgIGluZm8tPmNvbnRhaW5lciA9IGdldF9mcm9tX3RhZ3MgKHNlbGYsIGluZm8sIGdldF9jb250YWluZXJfZm9ybWF0KTsKKworICBpZiAoaW5mby0+aW1hZ2Vfc2FtcGxlKQorICAgIGdzdF9zYW1wbGVfdW5yZWYgKGluZm8tPmltYWdlX3NhbXBsZSk7CisgIGluZm8tPmltYWdlX3NhbXBsZSA9IGdldF9mcm9tX3RhZ3MgKHNlbGYsIGluZm8sIGdldF9jb3Zlcl9zYW1wbGUpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJ0aXRsZTogJXMsIGNvbnRhaW5lcjogJXMgIgorICAgICAgImltYWdlX3NhbXBsZTogJXAiLCBpbmZvLT50aXRsZSwgaW5mby0+Y29udGFpbmVyLCBpbmZvLT5pbWFnZV9zYW1wbGUpOworfQorCitzdGF0aWMgdm9pZAordGFnc19jYiAoR19HTlVDX1VOVVNFRCBHc3RCdXMgKiBidXMsIEdzdE1lc3NhZ2UgKiBtc2csIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKKyAgR3N0VGFnTGlzdCAqdGFncyA9IE5VTEw7CisKKyAgZ3N0X21lc3NhZ2VfcGFyc2VfdGFnIChtc2csICZ0YWdzKTsKKworICAvKgorICAgKiBOT1RFOiBJbm9yZGVyIHRvIGdldCBnbG9iYWwgdGFnIHlvdSBtdXN0IGFwcGx5IHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyBpbgorICAgKiB5b3VyIGdzdHJlYW1lciBidWlsZC4KKyAgICoKKyAgICogaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1nb29kL2NvbW1pdC8/aWQ9OTExOWZiZDc3NDA5M2UzYWU3NjJjODY1MmFjZDgwZDU0YjJjM2I0NQorICAgKiBodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdHJlYW1lci9jb21taXQvP2lkPTE4YjA1ODEwMDk0MGJkY2FlZDg2ZmE0MTJlMzU4MmEwMjg3MWY5OTUKKyAgICovCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJyZWNpZXZlZCAlcyB0YWdzIiwKKyAgICAgIGdzdF90YWdfbGlzdF9nZXRfc2NvcGUgKHRhZ3MpID09CisgICAgICBHU1RfVEFHX1NDT1BFX0dMT0JBTCA/ICJnbG9iYWwiIDogInN0cmVhbSIpOworCisgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3Njb3BlICh0YWdzKSA9PSBHU1RfVEFHX1NDT1BFX0dMT0JBTCkgeworICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICAgIGlmIChzZWxmLT5tZWRpYV9pbmZvKSB7CisgICAgICBpZiAoc2VsZi0+bWVkaWFfaW5mby0+dGFncykKKyAgICAgICAgZ3N0X3RhZ19saXN0X3VucmVmIChzZWxmLT5tZWRpYV9pbmZvLT50YWdzKTsKKyAgICAgIHNlbGYtPm1lZGlhX2luZm8tPnRhZ3MgPSBnc3RfdGFnX2xpc3RfcmVmICh0YWdzKTsKKyAgICAgIG1lZGlhX2luZm9fdXBkYXRlIChzZWxmLCBzZWxmLT5tZWRpYV9pbmZvKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisgICAgICBlbWl0X21lZGlhX2luZm9fdXBkYXRlZF9zaWduYWwgKHNlbGYpOworICAgIH0gZWxzZSB7CisgICAgICBpZiAoc2VsZi0+Z2xvYmFsX3RhZ3MpCisgICAgICAgIGdzdF90YWdfbGlzdF91bnJlZiAoc2VsZi0+Z2xvYmFsX3RhZ3MpOworICAgICAgc2VsZi0+Z2xvYmFsX3RhZ3MgPSBnc3RfdGFnX2xpc3RfcmVmICh0YWdzKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisgICAgfQorICB9CisKKyAgZ3N0X3RhZ19saXN0X3VucmVmICh0YWdzKTsKK30KKworc3RhdGljIHZvaWQKK2VsZW1lbnRfY2IgKEdfR05VQ19VTlVTRUQgR3N0QnVzICogYnVzLCBHc3RNZXNzYWdlICogbXNnLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisgIGNvbnN0IEdzdFN0cnVjdHVyZSAqczsKKworICBzID0gZ3N0X21lc3NhZ2VfZ2V0X3N0cnVjdHVyZSAobXNnKTsKKyAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUgKHMsICJyZWRpcmVjdCIpKSB7CisgICAgY29uc3QgZ2NoYXIgKm5ld19sb2NhdGlvbjsKKworICAgIG5ld19sb2NhdGlvbiA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAocywgIm5ldy1sb2NhdGlvbiIpOworICAgIGlmICghbmV3X2xvY2F0aW9uKSB7CisgICAgICBjb25zdCBHVmFsdWUgKmxvY2F0aW9uc19saXN0LCAqbG9jYXRpb25fdmFsOworICAgICAgZ3VpbnQgaSwgc2l6ZTsKKworICAgICAgbG9jYXRpb25zX2xpc3QgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAocywgImxvY2F0aW9ucyIpOworICAgICAgc2l6ZSA9IGdzdF92YWx1ZV9saXN0X2dldF9zaXplIChsb2NhdGlvbnNfbGlzdCk7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGNvbnN0IEdzdFN0cnVjdHVyZSAqbG9jYXRpb25fczsKKworICAgICAgICBsb2NhdGlvbl92YWwgPSBnc3RfdmFsdWVfbGlzdF9nZXRfdmFsdWUgKGxvY2F0aW9uc19saXN0LCBpKTsKKyAgICAgICAgaWYgKCFHU1RfVkFMVUVfSE9MRFNfU1RSVUNUVVJFIChsb2NhdGlvbl92YWwpKQorICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGxvY2F0aW9uX3MgPSAoY29uc3QgR3N0U3RydWN0dXJlICopIGdfdmFsdWVfZ2V0X2JveGVkIChsb2NhdGlvbl92YWwpOworICAgICAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUgKGxvY2F0aW9uX3MsICJyZWRpcmVjdCIpKQorICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG5ld19sb2NhdGlvbiA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAobG9jYXRpb25fcywgIm5ldy1sb2NhdGlvbiIpOworICAgICAgICBpZiAobmV3X2xvY2F0aW9uKQorICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIGlmIChuZXdfbG9jYXRpb24pIHsKKyAgICAgIEdzdFN0YXRlIHRhcmdldF9zdGF0ZTsKKworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlJlZGlyZWN0IHRvICclcyciLCBuZXdfbG9jYXRpb24pOworCisgICAgICAvKiBSZW1lbWJlciB0YXJnZXQgc3RhdGUgYW5kIHJlc3RvcmUgYWZ0ZXIgc2V0dGluZyB0aGUgVVJJICovCisgICAgICB0YXJnZXRfc3RhdGUgPSBzZWxmLT50YXJnZXRfc3RhdGU7CisKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICAgICAgZ19mcmVlIChzZWxmLT51cmkpOworCisgICAgICBzZWxmLT51cmkgPSBnX3N0cmR1cCAobmV3X2xvY2F0aW9uKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgICAgIGdzdF9wbGF5ZXJfc2V0X3VyaV9pbnRlcm5hbCAoc2VsZik7CisKKyAgICAgIGlmICh0YXJnZXRfc3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCkKKyAgICAgICAgZ3N0X3BsYXllcl9wYXVzZV9pbnRlcm5hbCAoc2VsZik7CisgICAgICBlbHNlIGlmICh0YXJnZXRfc3RhdGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcpCisgICAgICAgIGdzdF9wbGF5ZXJfcGxheV9pbnRlcm5hbCAoc2VsZik7CisgICAgfQorICB9Cit9CisKK3N0YXRpYyB2b2lkCitwbGF5ZXJfc2V0X2ZsYWcgKEdzdFBsYXllciAqIHNlbGYsIGdpbnQgcG9zKQoreworICBnaW50IGZsYWdzOworCisgIGdfb2JqZWN0X2dldCAoc2VsZi0+cGxheWJpbiwgImZsYWdzIiwgJmZsYWdzLCBOVUxMKTsKKyAgZmxhZ3MgfD0gcG9zOworICBnX29iamVjdF9zZXQgKHNlbGYtPnBsYXliaW4sICJmbGFncyIsIGZsYWdzLCBOVUxMKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAic2V0dGluZyBmbGFncz0lI3giLCBmbGFncyk7Cit9CisKK3N0YXRpYyB2b2lkCitwbGF5ZXJfY2xlYXJfZmxhZyAoR3N0UGxheWVyICogc2VsZiwgZ2ludCBwb3MpCit7CisgIGdpbnQgZmxhZ3M7CisKKyAgZ19vYmplY3RfZ2V0IChzZWxmLT5wbGF5YmluLCAiZmxhZ3MiLCAmZmxhZ3MsIE5VTEwpOworICBmbGFncyAmPSB+cG9zOworICBnX29iamVjdF9zZXQgKHNlbGYtPnBsYXliaW4sICJmbGFncyIsIGZsYWdzLCBOVUxMKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAic2V0dGluZyBmbGFncz0lI3giLCBmbGFncyk7Cit9CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBHc3RQbGF5ZXJNZWRpYUluZm8gKmluZm87Cit9IE1lZGlhSW5mb1VwZGF0ZWRTaWduYWxEYXRhOworCitzdGF0aWMgdm9pZAorbWVkaWFfaW5mb191cGRhdGVkX2Rpc3BhdGNoIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIE1lZGlhSW5mb1VwZGF0ZWRTaWduYWxEYXRhICpkYXRhID0gdXNlcl9kYXRhOworCisgIGlmIChkYXRhLT5wbGF5ZXItPnRhcmdldF9zdGF0ZSA+PSBHU1RfU1RBVEVfUEFVU0VEKSB7CisgICAgZ19zaWduYWxfZW1pdCAoZGF0YS0+cGxheWVyLCBzaWduYWxzW1NJR05BTF9NRURJQV9JTkZPX1VQREFURURdLCAwLAorICAgICAgICBkYXRhLT5pbmZvKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZnJlZV9tZWRpYV9pbmZvX3VwZGF0ZWRfc2lnbmFsX2RhdGEgKE1lZGlhSW5mb1VwZGF0ZWRTaWduYWxEYXRhICogZGF0YSkKK3sKKyAgZ19vYmplY3RfdW5yZWYgKGRhdGEtPnBsYXllcik7CisgIGdfb2JqZWN0X3VucmVmIChkYXRhLT5pbmZvKTsKKyAgZ19mcmVlIChkYXRhKTsKK30KKworLyoKKyAqIGVtaXRfbWVkaWFfaW5mb191cGRhdGVkX3NpZ25hbDoKKyAqCisgKiBjcmVhdGUgYSBuZXcgY29weSBvZiBzZWxmLT5tZWRpYV9pbmZvIG9iamVjdCBhbmQgZW1pdHMgdGhlIG5ld2x5IGNyZWF0ZWQKKyAqIGNvcHkgdG8gdXNlciBhcHBsaWNhdGlvbi4gVGhlIG5ld2x5IGNyZWF0ZWQgbWVkaWFfaW5mbyB3aWxsIGJlIHVucmVmJ2VkCisgKiBhcyBwYXJ0IG9mIHNpZ25hbCBmaW5hbGl6ZSBtZXRob2QuCisgKi8KK3N0YXRpYyB2b2lkCitlbWl0X21lZGlhX2luZm9fdXBkYXRlZF9zaWduYWwgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIE1lZGlhSW5mb1VwZGF0ZWRTaWduYWxEYXRhICpkYXRhID0gZ19uZXcgKE1lZGlhSW5mb1VwZGF0ZWRTaWduYWxEYXRhLCAxKTsKKyAgZGF0YS0+cGxheWVyID0gZ19vYmplY3RfcmVmIChzZWxmKTsKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGRhdGEtPmluZm8gPSBnc3RfcGxheWVyX21lZGlhX2luZm9fY29weSAoc2VsZi0+bWVkaWFfaW5mbyk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaCAoc2VsZi0+c2lnbmFsX2Rpc3BhdGNoZXIsIHNlbGYsCisgICAgICBtZWRpYV9pbmZvX3VwZGF0ZWRfZGlzcGF0Y2gsIGRhdGEsCisgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGZyZWVfbWVkaWFfaW5mb191cGRhdGVkX3NpZ25hbF9kYXRhKTsKK30KKworc3RhdGljIEdzdENhcHMgKgorZ2V0X2NhcHMgKEdzdFBsYXllciAqIHNlbGYsIGdpbnQgc3RyZWFtX2luZGV4LCBHVHlwZSB0eXBlKQoreworICBHc3RQYWQgKnBhZCA9IE5VTEw7CisgIEdzdENhcHMgKmNhcHMgPSBOVUxMOworCisgIGlmICh0eXBlID09IEdTVF9UWVBFX1BMQVlFUl9WSURFT19JTkZPKQorICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSAoR19PQkpFQ1QgKHNlbGYtPnBsYXliaW4pLAorICAgICAgICAiZ2V0LXZpZGVvLXBhZCIsIHN0cmVhbV9pbmRleCwgJnBhZCk7CisgIGVsc2UgaWYgKHR5cGUgPT0gR1NUX1RZUEVfUExBWUVSX0FVRElPX0lORk8pCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lIChHX09CSkVDVCAoc2VsZi0+cGxheWJpbiksCisgICAgICAgICJnZXQtYXVkaW8tcGFkIiwgc3RyZWFtX2luZGV4LCAmcGFkKTsKKyAgZWxzZQorICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSAoR19PQkpFQ1QgKHNlbGYtPnBsYXliaW4pLAorICAgICAgICAiZ2V0LXRleHQtcGFkIiwgc3RyZWFtX2luZGV4LCAmcGFkKTsKKworICBpZiAocGFkKSB7CisgICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAocGFkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChwYWQpOworICB9CisKKyAgcmV0dXJuIGNhcHM7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fdXBkYXRlIChHc3RQbGF5ZXIgKiBzZWxmLAorICAgIEdzdFBsYXllclN0cmVhbUluZm8gKiBzdHJlYW1faW5mbykKK3sKKyAgR3N0UGxheWVyU3VidGl0bGVJbmZvICppbmZvID0gKEdzdFBsYXllclN1YnRpdGxlSW5mbyAqKSBzdHJlYW1faW5mbzsKKworICBpZiAoc3RyZWFtX2luZm8tPnRhZ3MpIHsKKworICAgIC8qIGZyZWUgdGhlIG9sZCBsYW5ndWFnZSBpbmZvICovCisgICAgZ19mcmVlIChpbmZvLT5sYW5ndWFnZSk7CisgICAgaW5mby0+bGFuZ3VhZ2UgPSBOVUxMOworCisgICAgLyogRmlyc3QgdHJ5IHRvIGdldCB0aGUgbGFuZ3VhZ2UgZnVsbCBuYW1lIGZyb20gdGFnLCBpZiBuYW1lIGlzIG5vdAorICAgICAqIGF2YWlsYWJsZSB0aGVuIHRyeSBsYW5ndWFnZSBjb2RlLiBJZiB3ZSBmaW5kIHRoZSBsYW5ndWFnZSBjb2RlCisgICAgICogdGhlbiB1c2UgZ3N0cmVhbWVyIGFwaSB0byB0cmFuc2xhdGUgY29kZSB0byBmdWxsIG5hbWUuCisgICAgICovCisgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcgKHN0cmVhbV9pbmZvLT50YWdzLCBHU1RfVEFHX0xBTkdVQUdFX05BTUUsCisgICAgICAgICZpbmZvLT5sYW5ndWFnZSk7CisgICAgaWYgKCFpbmZvLT5sYW5ndWFnZSkgeworICAgICAgZ2NoYXIgKmxhbmdfY29kZSA9IE5VTEw7CisKKyAgICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nIChzdHJlYW1faW5mby0+dGFncywgR1NUX1RBR19MQU5HVUFHRV9DT0RFLAorICAgICAgICAgICZsYW5nX2NvZGUpOworICAgICAgaWYgKGxhbmdfY29kZSkgeworICAgICAgICBpbmZvLT5sYW5ndWFnZSA9IGdfc3RyZHVwIChnc3RfdGFnX2dldF9sYW5ndWFnZV9uYW1lIChsYW5nX2NvZGUpKTsKKyAgICAgICAgZ19mcmVlIChsYW5nX2NvZGUpOworICAgICAgfQorICAgIH0KKworICAgIC8qIElmIHdlIGFyZSBzdGlsbCBmYWlsZWQgdG8gZmluZCBsYW5ndWFnZSBuYW1lIHRoZW4gY2hlY2sgaWYgZXh0ZXJuYWwKKyAgICAgKiBzdWJ0aXRsZSBpcyBsb2FkZWQgYW5kIGNvbXBhcmUgdGhlIHN0cmVhbSBpbmRleCBiZXR3ZWVuIGN1cnJlbnQgc3ViCisgICAgICogc3RyZWFtIGluZGV4IHdpdGggb3VyIHN0cmVhbSBpbmRleCBhbmQgaWYgbWF0Y2hlcyB0aGVuIGRlY2xhcmUgaXQgYXMKKyAgICAgKiBleHRlcm5hbCBzdWJ0aXRsZSBhbmQgdXNlIHRoZSBmaWxlbmFtZS4KKyAgICAgKi8KKyAgICBpZiAoIWluZm8tPmxhbmd1YWdlKSB7CisgICAgICBnaW50IHRleHRfaW5kZXggPSAtMTsKKyAgICAgIGdjaGFyICpzdWJ1cmkgPSBOVUxMOworCisgICAgICBnX29iamVjdF9nZXQgKEdfT0JKRUNUIChzZWxmLT5wbGF5YmluKSwgImN1cnJlbnQtc3VidXJpIiwgJnN1YnVyaSwgTlVMTCk7CisgICAgICBpZiAoc3VidXJpKSB7CisgICAgICAgIGdfb2JqZWN0X2dldCAoR19PQkpFQ1QgKHNlbGYtPnBsYXliaW4pLCAiY3VycmVudC10ZXh0IiwgJnRleHRfaW5kZXgsCisgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgaWYgKHRleHRfaW5kZXggPT0gZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfaW5kZXggKHN0cmVhbV9pbmZvKSkKKyAgICAgICAgICBpbmZvLT5sYW5ndWFnZSA9IGdfcGF0aF9nZXRfYmFzZW5hbWUgKHN1YnVyaSk7CisgICAgICAgIGdfZnJlZSAoc3VidXJpKTsKKyAgICAgIH0KKyAgICB9CisKKyAgfSBlbHNlIHsKKyAgICBnX2ZyZWUgKGluZm8tPmxhbmd1YWdlKTsKKyAgICBpbmZvLT5sYW5ndWFnZSA9IE5VTEw7CisgIH0KKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAibGFuZ3VhZ2U9JXMiLCBpbmZvLT5sYW5ndWFnZSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3ZpZGVvX2luZm9fdXBkYXRlIChHc3RQbGF5ZXIgKiBzZWxmLAorICAgIEdzdFBsYXllclN0cmVhbUluZm8gKiBzdHJlYW1faW5mbykKK3sKKyAgR3N0UGxheWVyVmlkZW9JbmZvICppbmZvID0gKEdzdFBsYXllclZpZGVvSW5mbyAqKSBzdHJlYW1faW5mbzsKKworICBpZiAoc3RyZWFtX2luZm8tPmNhcHMpIHsKKyAgICBHc3RTdHJ1Y3R1cmUgKnM7CisKKyAgICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoc3RyZWFtX2luZm8tPmNhcHMsIDApOworICAgIGlmIChzKSB7CisgICAgICBnaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgICBnaW50IGZwc19uLCBmcHNfZDsKKyAgICAgIGdpbnQgcGFyX24sIHBhcl9kOworCisgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzLCAid2lkdGgiLCAmd2lkdGgpKQorICAgICAgICBpbmZvLT53aWR0aCA9IHdpZHRoOworICAgICAgZWxzZQorICAgICAgICBpbmZvLT53aWR0aCA9IC0xOworCisgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzLCAiaGVpZ2h0IiwgJmhlaWdodCkpCisgICAgICAgIGluZm8tPmhlaWdodCA9IGhlaWdodDsKKyAgICAgIGVsc2UKKyAgICAgICAgaW5mby0+aGVpZ2h0ID0gLTE7CisKKyAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9mcmFjdGlvbiAocywgImZyYW1lcmF0ZSIsICZmcHNfbiwgJmZwc19kKSkgeworICAgICAgICBpbmZvLT5mcmFtZXJhdGVfbnVtID0gZnBzX247CisgICAgICAgIGluZm8tPmZyYW1lcmF0ZV9kZW5vbSA9IGZwc19kOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaW5mby0+ZnJhbWVyYXRlX251bSA9IDA7CisgICAgICAgIGluZm8tPmZyYW1lcmF0ZV9kZW5vbSA9IDE7CisgICAgICB9CisKKworICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uIChzLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgJnBhcl9uLCAmcGFyX2QpKSB7CisgICAgICAgIGluZm8tPnBhcl9udW0gPSBwYXJfbjsKKyAgICAgICAgaW5mby0+cGFyX2Rlbm9tID0gcGFyX2Q7CisgICAgICB9IGVsc2UgeworICAgICAgICBpbmZvLT5wYXJfbnVtID0gMTsKKyAgICAgICAgaW5mby0+cGFyX2Rlbm9tID0gMTsKKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSB7CisgICAgaW5mby0+d2lkdGggPSBpbmZvLT5oZWlnaHQgPSAtMTsKKyAgICBpbmZvLT5wYXJfbnVtID0gaW5mby0+cGFyX2Rlbm9tID0gMTsKKyAgICBpbmZvLT5mcmFtZXJhdGVfbnVtID0gMDsKKyAgICBpbmZvLT5mcmFtZXJhdGVfZGVub20gPSAxOworICB9CisKKyAgaWYgKHN0cmVhbV9pbmZvLT50YWdzKSB7CisgICAgZ3VpbnQgYml0cmF0ZSwgbWF4X2JpdHJhdGU7CisKKyAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF91aW50IChzdHJlYW1faW5mby0+dGFncywgR1NUX1RBR19CSVRSQVRFLCAmYml0cmF0ZSkpCisgICAgICBpbmZvLT5iaXRyYXRlID0gYml0cmF0ZTsKKyAgICBlbHNlCisgICAgICBpbmZvLT5iaXRyYXRlID0gLTE7CisKKyAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF91aW50IChzdHJlYW1faW5mby0+dGFncywgR1NUX1RBR19NQVhJTVVNX0JJVFJBVEUsCisgICAgICAgICAgICAmbWF4X2JpdHJhdGUpIHx8IGdzdF90YWdfbGlzdF9nZXRfdWludCAoc3RyZWFtX2luZm8tPnRhZ3MsCisgICAgICAgICAgICBHU1RfVEFHX05PTUlOQUxfQklUUkFURSwgJm1heF9iaXRyYXRlKSkKKyAgICAgIGluZm8tPm1heF9iaXRyYXRlID0gbWF4X2JpdHJhdGU7CisgICAgZWxzZQorICAgICAgaW5mby0+bWF4X2JpdHJhdGUgPSAtMTsKKyAgfSBlbHNlIHsKKyAgICBpbmZvLT5iaXRyYXRlID0gaW5mby0+bWF4X2JpdHJhdGUgPSAtMTsKKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJ3aWR0aD0lZCBoZWlnaHQ9JWQgZnBzPSUuMmYgcGFyPSVkOiVkICIKKyAgICAgICJiaXRyYXRlPSVkIG1heF9iaXRyYXRlPSVkIiwgaW5mby0+d2lkdGgsIGluZm8tPmhlaWdodCwKKyAgICAgIChnZG91YmxlKSBpbmZvLT5mcmFtZXJhdGVfbnVtIC8gaW5mby0+ZnJhbWVyYXRlX2Rlbm9tLAorICAgICAgaW5mby0+cGFyX251bSwgaW5mby0+cGFyX2Rlbm9tLCBpbmZvLT5iaXRyYXRlLCBpbmZvLT5tYXhfYml0cmF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX2F1ZGlvX2luZm9fdXBkYXRlIChHc3RQbGF5ZXIgKiBzZWxmLAorICAgIEdzdFBsYXllclN0cmVhbUluZm8gKiBzdHJlYW1faW5mbykKK3sKKyAgR3N0UGxheWVyQXVkaW9JbmZvICppbmZvID0gKEdzdFBsYXllckF1ZGlvSW5mbyAqKSBzdHJlYW1faW5mbzsKKworICBpZiAoc3RyZWFtX2luZm8tPmNhcHMpIHsKKyAgICBHc3RTdHJ1Y3R1cmUgKnM7CisKKyAgICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoc3RyZWFtX2luZm8tPmNhcHMsIDApOworICAgIGlmIChzKSB7CisgICAgICBnaW50IHJhdGUsIGNoYW5uZWxzOworCisgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzLCAicmF0ZSIsICZyYXRlKSkKKyAgICAgICAgaW5mby0+c2FtcGxlX3JhdGUgPSByYXRlOworICAgICAgZWxzZQorICAgICAgICBpbmZvLT5zYW1wbGVfcmF0ZSA9IC0xOworCisgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzLCAiY2hhbm5lbHMiLCAmY2hhbm5lbHMpKQorICAgICAgICBpbmZvLT5jaGFubmVscyA9IGNoYW5uZWxzOworICAgICAgZWxzZQorICAgICAgICBpbmZvLT5jaGFubmVscyA9IDA7CisgICAgfQorICB9IGVsc2UgeworICAgIGluZm8tPnNhbXBsZV9yYXRlID0gLTE7CisgICAgaW5mby0+Y2hhbm5lbHMgPSAwOworICB9CisKKyAgaWYgKHN0cmVhbV9pbmZvLT50YWdzKSB7CisgICAgZ3VpbnQgYml0cmF0ZSwgbWF4X2JpdHJhdGU7CisKKyAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF91aW50IChzdHJlYW1faW5mby0+dGFncywgR1NUX1RBR19CSVRSQVRFLCAmYml0cmF0ZSkpCisgICAgICBpbmZvLT5iaXRyYXRlID0gYml0cmF0ZTsKKyAgICBlbHNlCisgICAgICBpbmZvLT5iaXRyYXRlID0gLTE7CisKKyAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF91aW50IChzdHJlYW1faW5mby0+dGFncywgR1NUX1RBR19NQVhJTVVNX0JJVFJBVEUsCisgICAgICAgICAgICAmbWF4X2JpdHJhdGUpIHx8IGdzdF90YWdfbGlzdF9nZXRfdWludCAoc3RyZWFtX2luZm8tPnRhZ3MsCisgICAgICAgICAgICBHU1RfVEFHX05PTUlOQUxfQklUUkFURSwgJm1heF9iaXRyYXRlKSkKKyAgICAgIGluZm8tPm1heF9iaXRyYXRlID0gbWF4X2JpdHJhdGU7CisgICAgZWxzZQorICAgICAgaW5mby0+bWF4X2JpdHJhdGUgPSAtMTsKKworICAgIC8qIGlmIHdlIGhhdmUgb2xkIGxhbmd1YWdlIHRoZSBmcmVlIGl0ICovCisgICAgZ19mcmVlIChpbmZvLT5sYW5ndWFnZSk7CisgICAgaW5mby0+bGFuZ3VhZ2UgPSBOVUxMOworCisgICAgLyogRmlyc3QgdHJ5IHRvIGdldCB0aGUgbGFuZ3VhZ2UgZnVsbCBuYW1lIGZyb20gdGFnLCBpZiBuYW1lIGlzIG5vdAorICAgICAqIGF2YWlsYWJsZSB0aGVuIHRyeSBsYW5ndWFnZSBjb2RlLiBJZiB3ZSBmaW5kIHRoZSBsYW5ndWFnZSBjb2RlCisgICAgICogdGhlbiB1c2UgZ3N0cmVhbWVyIGFwaSB0byB0cmFuc2xhdGUgY29kZSB0byBmdWxsIG5hbWUuCisgICAgICovCisgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcgKHN0cmVhbV9pbmZvLT50YWdzLCBHU1RfVEFHX0xBTkdVQUdFX05BTUUsCisgICAgICAgICZpbmZvLT5sYW5ndWFnZSk7CisgICAgaWYgKCFpbmZvLT5sYW5ndWFnZSkgeworICAgICAgZ2NoYXIgKmxhbmdfY29kZSA9IE5VTEw7CisKKyAgICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nIChzdHJlYW1faW5mby0+dGFncywgR1NUX1RBR19MQU5HVUFHRV9DT0RFLAorICAgICAgICAgICZsYW5nX2NvZGUpOworICAgICAgaWYgKGxhbmdfY29kZSkgeworICAgICAgICBpbmZvLT5sYW5ndWFnZSA9IGdfc3RyZHVwIChnc3RfdGFnX2dldF9sYW5ndWFnZV9uYW1lIChsYW5nX2NvZGUpKTsKKyAgICAgICAgZ19mcmVlIChsYW5nX2NvZGUpOworICAgICAgfQorICAgIH0KKyAgfSBlbHNlIHsKKyAgICBnX2ZyZWUgKGluZm8tPmxhbmd1YWdlKTsKKyAgICBpbmZvLT5sYW5ndWFnZSA9IE5VTEw7CisgICAgaW5mby0+bWF4X2JpdHJhdGUgPSBpbmZvLT5iaXRyYXRlID0gLTE7CisgIH0KKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAibGFuZ3VhZ2U9JXMgcmF0ZT0lZCBjaGFubmVscz0lZCBiaXRyYXRlPSVkICIKKyAgICAgICJtYXhfYml0cmF0ZT0lZCIsIGluZm8tPmxhbmd1YWdlLCBpbmZvLT5zYW1wbGVfcmF0ZSwgaW5mby0+Y2hhbm5lbHMsCisgICAgICBpbmZvLT5iaXRyYXRlLCBpbmZvLT5iaXRyYXRlKTsKK30KKworc3RhdGljIEdzdFBsYXllclN0cmVhbUluZm8gKgorZ3N0X3BsYXllcl9zdHJlYW1faW5mb19maW5kIChHc3RQbGF5ZXJNZWRpYUluZm8gKiBtZWRpYV9pbmZvLAorICAgIEdUeXBlIHR5cGUsIGdpbnQgc3RyZWFtX2luZGV4KQoreworICBHTGlzdCAqbGlzdCwgKmw7CisgIEdzdFBsYXllclN0cmVhbUluZm8gKmluZm8gPSBOVUxMOworCisgIGlmICghbWVkaWFfaW5mbykKKyAgICByZXR1cm4gTlVMTDsKKworICBsaXN0ID0gZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9zdHJlYW1fbGlzdCAobWVkaWFfaW5mbyk7CisgIGZvciAobCA9IGxpc3Q7IGwgIT0gTlVMTDsgbCA9IGwtPm5leHQpIHsKKyAgICBpbmZvID0gKEdzdFBsYXllclN0cmVhbUluZm8gKikgbC0+ZGF0YTsKKyAgICBpZiAoKEdfT0JKRUNUX1RZUEUgKGluZm8pID09IHR5cGUpICYmIChpbmZvLT5zdHJlYW1faW5kZXggPT0gc3RyZWFtX2luZGV4KSkgeworICAgICAgcmV0dXJuIGluZm87CisgICAgfQorICB9CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgoraXNfdHJhY2tfZW5hYmxlZCAoR3N0UGxheWVyICogc2VsZiwgZ2ludCBwb3MpCit7CisgIGdpbnQgZmxhZ3M7CisKKyAgZ19vYmplY3RfZ2V0IChHX09CSkVDVCAoc2VsZi0+cGxheWJpbiksICJmbGFncyIsICZmbGFncywgTlVMTCk7CisKKyAgaWYgKChmbGFncyAmIHBvcykpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgR3N0UGxheWVyU3RyZWFtSW5mbyAqCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jdXJyZW50IChHc3RQbGF5ZXIgKiBzZWxmLCBjb25zdCBnY2hhciAqIHByb3AsCisgICAgR1R5cGUgdHlwZSkKK3sKKyAgZ2ludCBjdXJyZW50OworICBHc3RQbGF5ZXJTdHJlYW1JbmZvICppbmZvOworCisgIGlmICghc2VsZi0+bWVkaWFfaW5mbykKKyAgICByZXR1cm4gTlVMTDsKKworICBnX29iamVjdF9nZXQgKEdfT0JKRUNUIChzZWxmLT5wbGF5YmluKSwgcHJvcCwgJmN1cnJlbnQsIE5VTEwpOworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgaW5mbyA9IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZmluZCAoc2VsZi0+bWVkaWFfaW5mbywgdHlwZSwgY3VycmVudCk7CisgIGlmIChpbmZvKQorICAgIGluZm8gPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2NvcHkgKGluZm8pOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIHJldHVybiBpbmZvOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9zdHJlYW1faW5mb191cGRhdGUgKEdzdFBsYXllciAqIHNlbGYsIEdzdFBsYXllclN0cmVhbUluZm8gKiBzKQoreworICBpZiAoR1NUX0lTX1BMQVlFUl9WSURFT19JTkZPIChzKSkKKyAgICBnc3RfcGxheWVyX3ZpZGVvX2luZm9fdXBkYXRlIChzZWxmLCBzKTsKKyAgZWxzZSBpZiAoR1NUX0lTX1BMQVlFUl9BVURJT19JTkZPIChzKSkKKyAgICBnc3RfcGxheWVyX2F1ZGlvX2luZm9fdXBkYXRlIChzZWxmLCBzKTsKKyAgZWxzZQorICAgIGdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb191cGRhdGUgKHNlbGYsIHMpOworfQorCitzdGF0aWMgZ2NoYXIgKgorc3RyZWFtX2luZm9fZ2V0X2NvZGVjIChHc3RQbGF5ZXJTdHJlYW1JbmZvICogcykKK3sKKyAgY29uc3QgZ2NoYXIgKnR5cGU7CisgIEdzdFRhZ0xpc3QgKnRhZ3M7CisgIGdjaGFyICpjb2RlYyA9IE5VTEw7CisKKyAgaWYgKEdTVF9JU19QTEFZRVJfVklERU9fSU5GTyAocykpCisgICAgdHlwZSA9IEdTVF9UQUdfVklERU9fQ09ERUM7CisgIGVsc2UgaWYgKEdTVF9JU19QTEFZRVJfQVVESU9fSU5GTyAocykpCisgICAgdHlwZSA9IEdTVF9UQUdfQVVESU9fQ09ERUM7CisgIGVsc2UKKyAgICB0eXBlID0gR1NUX1RBR19TVUJUSVRMRV9DT0RFQzsKKworICB0YWdzID0gZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFncyAocyk7CisgIGlmICh0YWdzKSB7CisgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcgKHRhZ3MsIHR5cGUsICZjb2RlYyk7CisgICAgaWYgKCFjb2RlYykKKyAgICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nICh0YWdzLCBHU1RfVEFHX0NPREVDLCAmY29kZWMpOworICB9CisKKyAgaWYgKCFjb2RlYykgeworICAgIEdzdENhcHMgKmNhcHM7CisgICAgY2FwcyA9IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NhcHMgKHMpOworICAgIGlmIChjYXBzKSB7CisgICAgICBjb2RlYyA9IGdzdF9wYl91dGlsc19nZXRfY29kZWNfZGVzY3JpcHRpb24gKGNhcHMpOworICAgIH0KKyAgfQorCisgIHJldHVybiBjb2RlYzsKK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fdXBkYXRlX3RhZ3NfYW5kX2NhcHMgKEdzdFBsYXllciAqIHNlbGYsCisgICAgR3N0UGxheWVyU3RyZWFtSW5mbyAqIHMpCit7CisgIEdzdFRhZ0xpc3QgKnRhZ3M7CisgIGdpbnQgc3RyZWFtX2luZGV4OworCisgIHN0cmVhbV9pbmRleCA9IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2luZGV4IChzKTsKKworICBpZiAoR1NUX0lTX1BMQVlFUl9WSURFT19JTkZPIChzKSkKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUgKHNlbGYtPnBsYXliaW4sICJnZXQtdmlkZW8tdGFncyIsCisgICAgICAgIHN0cmVhbV9pbmRleCwgJnRhZ3MpOworICBlbHNlIGlmIChHU1RfSVNfUExBWUVSX0FVRElPX0lORk8gKHMpKQorICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSAoc2VsZi0+cGxheWJpbiwgImdldC1hdWRpby10YWdzIiwKKyAgICAgICAgc3RyZWFtX2luZGV4LCAmdGFncyk7CisgIGVsc2UKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUgKHNlbGYtPnBsYXliaW4sICJnZXQtdGV4dC10YWdzIiwgc3RyZWFtX2luZGV4LCAmdGFncyk7CisKKyAgaWYgKHMtPnRhZ3MpCisgICAgZ3N0X3RhZ19saXN0X3VucmVmIChzLT50YWdzKTsKKyAgcy0+dGFncyA9IHRhZ3M7CisKKyAgaWYgKHMtPmNhcHMpCisgICAgZ3N0X2NhcHNfdW5yZWYgKHMtPmNhcHMpOworICBzLT5jYXBzID0gZ2V0X2NhcHMgKHNlbGYsIHN0cmVhbV9pbmRleCwgR19PQkpFQ1RfVFlQRSAocykpOworCisgIGdfZnJlZSAocy0+Y29kZWMpOworICBzLT5jb2RlYyA9IHN0cmVhbV9pbmZvX2dldF9jb2RlYyAocyk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIiVzIGluZGV4OiAlZCB0YWdzOiAlcCBjYXBzOiAlcCIsCisgICAgICBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9zdHJlYW1fdHlwZSAocyksIHN0cmVhbV9pbmRleCwKKyAgICAgIHMtPnRhZ3MsIHMtPmNhcHMpOworCisgIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fdXBkYXRlIChzZWxmLCBzKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfc3RyZWFtc19pbmZvX2NyZWF0ZSAoR3N0UGxheWVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXJNZWRpYUluZm8gKiBtZWRpYV9pbmZvLCBjb25zdCBnY2hhciAqIHByb3AsIEdUeXBlIHR5cGUpCit7CisgIGdpbnQgaTsKKyAgZ2ludCB0b3RhbCA9IC0xOworICBHc3RQbGF5ZXJTdHJlYW1JbmZvICpzOworCisgIGlmICghbWVkaWFfaW5mbykKKyAgICByZXR1cm47CisKKyAgZ19vYmplY3RfZ2V0IChHX09CSkVDVCAoc2VsZi0+cGxheWJpbiksIHByb3AsICZ0b3RhbCwgTlVMTCk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIiVzOiAlZCIsIHByb3AsIHRvdGFsKTsKKworICBmb3IgKGkgPSAwOyBpIDwgdG90YWw7IGkrKykgeworICAgIC8qIGNoZWNrIGlmIHN0cmVhbSBhbHJlYWR5IGV4aXN0IGluIHRoZSBsaXN0ICovCisgICAgcyA9IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZmluZCAobWVkaWFfaW5mbywgdHlwZSwgaSk7CisKKyAgICBpZiAoIXMpIHsKKyAgICAgIC8qIGNyZWF0ZSBhIG5ldyBzdHJlYW0gaW5mbyBpbnN0YW5jZSAqLworICAgICAgcyA9IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fbmV3IChpLCB0eXBlKTsKKworICAgICAgLyogYWRkIHRoZSBvYmplY3QgaW4gc3RyZWFtIGxpc3QgKi8KKyAgICAgIG1lZGlhX2luZm8tPnN0cmVhbV9saXN0ID0gZ19saXN0X2FwcGVuZCAobWVkaWFfaW5mby0+c3RyZWFtX2xpc3QsIHMpOworCisgICAgICAvKiBiYXNlZCBvbiB0eXBlLCBhZGQgdGhlIG9iamVjdCBpbiBpdHMgY29ycmVzcG9uZGluZyBzdHJlYW1fIGxpc3QgKi8KKyAgICAgIGlmIChHU1RfSVNfUExBWUVSX0FVRElPX0lORk8gKHMpKQorICAgICAgICBtZWRpYV9pbmZvLT5hdWRpb19zdHJlYW1fbGlzdCA9IGdfbGlzdF9hcHBlbmQKKyAgICAgICAgICAgIChtZWRpYV9pbmZvLT5hdWRpb19zdHJlYW1fbGlzdCwgcyk7CisgICAgICBlbHNlIGlmIChHU1RfSVNfUExBWUVSX1ZJREVPX0lORk8gKHMpKQorICAgICAgICBtZWRpYV9pbmZvLT52aWRlb19zdHJlYW1fbGlzdCA9IGdfbGlzdF9hcHBlbmQKKyAgICAgICAgICAgIChtZWRpYV9pbmZvLT52aWRlb19zdHJlYW1fbGlzdCwgcyk7CisgICAgICBlbHNlCisgICAgICAgIG1lZGlhX2luZm8tPnN1YnRpdGxlX3N0cmVhbV9saXN0ID0gZ19saXN0X2FwcGVuZAorICAgICAgICAgICAgKG1lZGlhX2luZm8tPnN1YnRpdGxlX3N0cmVhbV9saXN0LCBzKTsKKworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgImNyZWF0ZSAlcyBzdHJlYW0gc3RyZWFtX2luZGV4OiAlZCIsCisgICAgICAgICAgZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfc3RyZWFtX3R5cGUgKHMpLCBpKTsKKyAgICB9CisKKyAgICBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX3VwZGF0ZV90YWdzX2FuZF9jYXBzIChzZWxmLCBzKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAordmlkZW9fY2hhbmdlZF9jYiAoR19HTlVDX1VOVVNFRCBHT2JqZWN0ICogb2JqZWN0LCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGdzdF9wbGF5ZXJfc3RyZWFtc19pbmZvX2NyZWF0ZSAoc2VsZiwgc2VsZi0+bWVkaWFfaW5mbywKKyAgICAgICJuLXZpZGVvIiwgR1NUX1RZUEVfUExBWUVSX1ZJREVPX0lORk8pOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworfQorCitzdGF0aWMgdm9pZAorYXVkaW9fY2hhbmdlZF9jYiAoR19HTlVDX1VOVVNFRCBHT2JqZWN0ICogb2JqZWN0LCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGdzdF9wbGF5ZXJfc3RyZWFtc19pbmZvX2NyZWF0ZSAoc2VsZiwgc2VsZi0+bWVkaWFfaW5mbywKKyAgICAgICJuLWF1ZGlvIiwgR1NUX1RZUEVfUExBWUVSX0FVRElPX0lORk8pOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworfQorCitzdGF0aWMgdm9pZAorc3VidGl0bGVfY2hhbmdlZF9jYiAoR19HTlVDX1VOVVNFRCBHT2JqZWN0ICogb2JqZWN0LCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGdzdF9wbGF5ZXJfc3RyZWFtc19pbmZvX2NyZWF0ZSAoc2VsZiwgc2VsZi0+bWVkaWFfaW5mbywKKyAgICAgICJuLXRleHQiLCBHU1RfVFlQRV9QTEFZRVJfU1VCVElUTEVfSU5GTyk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7Cit9CisKK3N0YXRpYyB2b2lkICoKK2dldF90aXRsZSAoR3N0VGFnTGlzdCAqIHRhZ3MpCit7CisgIGdjaGFyICp0aXRsZSA9IE5VTEw7CisKKyAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcgKHRhZ3MsIEdTVF9UQUdfVElUTEUsICZ0aXRsZSk7CisgIGlmICghdGl0bGUpCisgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcgKHRhZ3MsIEdTVF9UQUdfVElUTEVfU09SVE5BTUUsICZ0aXRsZSk7CisKKyAgcmV0dXJuIHRpdGxlOworfQorCitzdGF0aWMgdm9pZCAqCitnZXRfY29udGFpbmVyX2Zvcm1hdCAoR3N0VGFnTGlzdCAqIHRhZ3MpCit7CisgIGdjaGFyICpjb250YWluZXIgPSBOVUxMOworCisgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nICh0YWdzLCBHU1RfVEFHX0NPTlRBSU5FUl9GT1JNQVQsICZjb250YWluZXIpOworCisgIC8qIFRPRE86IElmIGNvbnRhaW5lciBpcyBub3QgYXZhaWxhYmxlIHRoZW4gbWF5YmUgY29uc2lkZXIKKyAgICogcGFyc2luZyBjYXBzIG9yIGZpbGUgZXh0ZW5zaW9uIHRvIGd1ZXNzIHRoZSBjb250YWluZXIgZm9ybWF0LgorICAgKi8KKworICByZXR1cm4gY29udGFpbmVyOworfQorCitzdGF0aWMgdm9pZCAqCitnZXRfZnJvbV90YWdzIChHc3RQbGF5ZXIgKiBzZWxmLCBHc3RQbGF5ZXJNZWRpYUluZm8gKiBtZWRpYV9pbmZvLAorICAgIHZvaWQgKigqZnVuYykgKEdzdFRhZ0xpc3QgKikpCit7CisgIEdMaXN0ICpsOworICB2b2lkICpyZXQgPSBOVUxMOworCisgIGlmIChtZWRpYV9pbmZvLT50YWdzKSB7CisgICAgcmV0ID0gZnVuYyAobWVkaWFfaW5mby0+dGFncyk7CisgICAgaWYgKHJldCkKKyAgICAgIHJldHVybiByZXQ7CisgIH0KKworICAvKiBpZiBnbG9iYWwgdGFnIGRvZXMgbm90IGV4aXQgdGhlbiB0cnkgdmlkZW8gYW5kIGF1ZGlvIHN0cmVhbXMgKi8KKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInRyeWluZyB2aWRlbyB0YWdzIik7CisgIGZvciAobCA9IGdzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXMgKG1lZGlhX2luZm8pOyBsICE9IE5VTEw7IGwgPSBsLT5uZXh0KSB7CisgICAgR3N0VGFnTGlzdCAqdGFnczsKKworICAgIHRhZ3MgPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF90YWdzICgoR3N0UGxheWVyU3RyZWFtSW5mbyAqKSBsLT5kYXRhKTsKKyAgICBpZiAodGFncykKKyAgICAgIHJldCA9IGZ1bmMgKHRhZ3MpOworCisgICAgaWYgKHJldCkKKyAgICAgIHJldHVybiByZXQ7CisgIH0KKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAidHJ5aW5nIGF1ZGlvIHRhZ3MiKTsKKyAgZm9yIChsID0gZ3N0X3BsYXllcl9nZXRfYXVkaW9fc3RyZWFtcyAobWVkaWFfaW5mbyk7IGwgIT0gTlVMTDsgbCA9IGwtPm5leHQpIHsKKyAgICBHc3RUYWdMaXN0ICp0YWdzOworCisgICAgdGFncyA9IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3RhZ3MgKChHc3RQbGF5ZXJTdHJlYW1JbmZvICopIGwtPmRhdGEpOworICAgIGlmICh0YWdzKQorICAgICAgcmV0ID0gZnVuYyAodGFncyk7CisKKyAgICBpZiAocmV0KQorICAgICAgcmV0dXJuIHJldDsKKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJmYWlsZWQgdG8gZ2V0IHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRhZ3MiKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkICoKK2dldF9jb3Zlcl9zYW1wbGUgKEdzdFRhZ0xpc3QgKiB0YWdzKQoreworICBHc3RTYW1wbGUgKmNvdmVyX3NhbXBsZSA9IE5VTEw7CisKKyAgZ3N0X3RhZ19saXN0X2dldF9zYW1wbGUgKHRhZ3MsIEdTVF9UQUdfSU1BR0UsICZjb3Zlcl9zYW1wbGUpOworICBpZiAoIWNvdmVyX3NhbXBsZSkKKyAgICBnc3RfdGFnX2xpc3RfZ2V0X3NhbXBsZSAodGFncywgR1NUX1RBR19QUkVWSUVXX0lNQUdFLCAmY292ZXJfc2FtcGxlKTsKKworICByZXR1cm4gY292ZXJfc2FtcGxlOworfQorCitzdGF0aWMgR3N0UGxheWVyTWVkaWFJbmZvICoKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19jcmVhdGUgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIEdzdFBsYXllck1lZGlhSW5mbyAqbWVkaWFfaW5mbzsKKyAgR3N0UXVlcnkgKnF1ZXJ5OworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJiZWdpbiIpOworICBtZWRpYV9pbmZvID0gZ3N0X3BsYXllcl9tZWRpYV9pbmZvX25ldyAoc2VsZi0+dXJpKTsKKyAgbWVkaWFfaW5mby0+ZHVyYXRpb24gPSBnc3RfcGxheWVyX2dldF9kdXJhdGlvbiAoc2VsZik7CisgIG1lZGlhX2luZm8tPnRhZ3MgPSBzZWxmLT5nbG9iYWxfdGFnczsKKyAgc2VsZi0+Z2xvYmFsX3RhZ3MgPSBOVUxMOworCisgIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19zZWVraW5nIChHU1RfRk9STUFUX1RJTUUpOworICBpZiAoZ3N0X2VsZW1lbnRfcXVlcnkgKHNlbGYtPnBsYXliaW4sIHF1ZXJ5KSkKKyAgICBnc3RfcXVlcnlfcGFyc2Vfc2Vla2luZyAocXVlcnksIE5VTEwsICZtZWRpYV9pbmZvLT5zZWVrYWJsZSwgTlVMTCwgTlVMTCk7CisgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworCisgIC8qIGNyZWF0ZSBhdWRpby92aWRlby9zdWIgc3RyZWFtcyAqLworICBnc3RfcGxheWVyX3N0cmVhbXNfaW5mb19jcmVhdGUgKHNlbGYsIG1lZGlhX2luZm8sICJuLXZpZGVvIiwKKyAgICAgIEdTVF9UWVBFX1BMQVlFUl9WSURFT19JTkZPKTsKKyAgZ3N0X3BsYXllcl9zdHJlYW1zX2luZm9fY3JlYXRlIChzZWxmLCBtZWRpYV9pbmZvLCAibi1hdWRpbyIsCisgICAgICBHU1RfVFlQRV9QTEFZRVJfQVVESU9fSU5GTyk7CisgIGdzdF9wbGF5ZXJfc3RyZWFtc19pbmZvX2NyZWF0ZSAoc2VsZiwgbWVkaWFfaW5mbywgIm4tdGV4dCIsCisgICAgICBHU1RfVFlQRV9QTEFZRVJfU1VCVElUTEVfSU5GTyk7CisKKyAgbWVkaWFfaW5mby0+dGl0bGUgPSBnZXRfZnJvbV90YWdzIChzZWxmLCBtZWRpYV9pbmZvLCBnZXRfdGl0bGUpOworICBtZWRpYV9pbmZvLT5jb250YWluZXIgPQorICAgICAgZ2V0X2Zyb21fdGFncyAoc2VsZiwgbWVkaWFfaW5mbywgZ2V0X2NvbnRhaW5lcl9mb3JtYXQpOworICBtZWRpYV9pbmZvLT5pbWFnZV9zYW1wbGUgPSBnZXRfZnJvbV90YWdzIChzZWxmLCBtZWRpYV9pbmZvLCBnZXRfY292ZXJfc2FtcGxlKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAidXJpOiAlcyB0aXRsZTogJXMgZHVyYXRpb246ICUiIEdTVF9USU1FX0ZPUk1BVAorICAgICAgIiBzZWVrYWJsZTogJXMgY29udGFpbmVyOiAlcyBpbWFnZV9zYW1wbGUgJXAiLAorICAgICAgbWVkaWFfaW5mby0+dXJpLCBtZWRpYV9pbmZvLT50aXRsZSwgR1NUX1RJTUVfQVJHUyAobWVkaWFfaW5mby0+ZHVyYXRpb24pLAorICAgICAgbWVkaWFfaW5mby0+c2Vla2FibGUgPyAieWVzIiA6ICJubyIsIG1lZGlhX2luZm8tPmNvbnRhaW5lciwKKyAgICAgIG1lZGlhX2luZm8tPmltYWdlX3NhbXBsZSk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgImVuZCIpOworICByZXR1cm4gbWVkaWFfaW5mbzsKK30KKworc3RhdGljIHZvaWQKK3RhZ3NfY2hhbmdlZF9jYiAoR3N0UGxheWVyICogc2VsZiwgZ2ludCBzdHJlYW1faW5kZXgsIEdUeXBlIHR5cGUpCit7CisgIEdzdFBsYXllclN0cmVhbUluZm8gKnM7CisKKyAgaWYgKCFzZWxmLT5tZWRpYV9pbmZvKQorICAgIHJldHVybjsKKworICAvKiB1cGRhdGUgdGhlIHN0cmVhbSBpbmZvcm1hdGlvbiAqLworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgcyA9IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZmluZCAoc2VsZi0+bWVkaWFfaW5mbywgdHlwZSwgc3RyZWFtX2luZGV4KTsKKyAgZ3N0X3BsYXllcl9zdHJlYW1faW5mb191cGRhdGVfdGFnc19hbmRfY2FwcyAoc2VsZiwgcyk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgZW1pdF9tZWRpYV9pbmZvX3VwZGF0ZWRfc2lnbmFsIChzZWxmKTsKK30KKworc3RhdGljIHZvaWQKK3ZpZGVvX3RhZ3NfY2hhbmdlZF9jYiAoR19HTlVDX1VOVVNFRCBHc3RFbGVtZW50ICogcGxheWJpbiwgZ2ludCBzdHJlYW1faW5kZXgsCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICB0YWdzX2NoYW5nZWRfY2IgKEdTVF9QTEFZRVIgKHVzZXJfZGF0YSksIHN0cmVhbV9pbmRleCwKKyAgICAgIEdTVF9UWVBFX1BMQVlFUl9WSURFT19JTkZPKTsKK30KKworc3RhdGljIHZvaWQKK2F1ZGlvX3RhZ3NfY2hhbmdlZF9jYiAoR19HTlVDX1VOVVNFRCBHc3RFbGVtZW50ICogcGxheWJpbiwgZ2ludCBzdHJlYW1faW5kZXgsCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICB0YWdzX2NoYW5nZWRfY2IgKEdTVF9QTEFZRVIgKHVzZXJfZGF0YSksIHN0cmVhbV9pbmRleCwKKyAgICAgIEdTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPKTsKK30KKworc3RhdGljIHZvaWQKK3N1YnRpdGxlX3RhZ3NfY2hhbmdlZF9jYiAoR19HTlVDX1VOVVNFRCBHc3RFbGVtZW50ICogcGxheWJpbiwgZ2ludCBzdHJlYW1faW5kZXgsCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICB0YWdzX2NoYW5nZWRfY2IgKEdTVF9QTEFZRVIgKHVzZXJfZGF0YSksIHN0cmVhbV9pbmRleCwKKyAgICAgIEdTVF9UWVBFX1BMQVlFUl9TVUJUSVRMRV9JTkZPKTsKK30KKworc3RhdGljIHZvaWQKK3ZvbHVtZV9jaGFuZ2VkX2Rpc3BhdGNoIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIGdfc2lnbmFsX2VtaXQgKHVzZXJfZGF0YSwgc2lnbmFsc1tTSUdOQUxfVk9MVU1FX0NIQU5HRURdLCAwKTsKKyAgZ19vYmplY3Rfbm90aWZ5X2J5X3BzcGVjIChHX09CSkVDVCAodXNlcl9kYXRhKSwgcGFyYW1fc3BlY3NbUFJPUF9WT0xVTUVdKTsKK30KKworc3RhdGljIHZvaWQKK3ZvbHVtZV9ub3RpZnlfY2IgKEdfR05VQ19VTlVTRUQgR09iamVjdCAqIG9iaiwgR19HTlVDX1VOVVNFRCBHUGFyYW1TcGVjICogcHNwZWMsCisgICAgR3N0UGxheWVyICogc2VsZikKK3sKKyAgaWYgKGdfc2lnbmFsX2hhbmRsZXJfZmluZCAoc2VsZiwgR19TSUdOQUxfTUFUQ0hfSUQsCisgICAgICAgICAgc2lnbmFsc1tTSUdOQUxfVk9MVU1FX0NIQU5HRURdLCAwLCBOVUxMLCBOVUxMLCBOVUxMKSAhPSAwKSB7CisgICAgZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaCAoc2VsZi0+c2lnbmFsX2Rpc3BhdGNoZXIsIHNlbGYsCisgICAgICAgIHZvbHVtZV9jaGFuZ2VkX2Rpc3BhdGNoLCBnX29iamVjdF9yZWYgKHNlbGYpLAorICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdfb2JqZWN0X3VucmVmKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorbXV0ZV9jaGFuZ2VkX2Rpc3BhdGNoIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIGdfc2lnbmFsX2VtaXQgKHVzZXJfZGF0YSwgc2lnbmFsc1tTSUdOQUxfTVVURV9DSEFOR0VEXSwgMCk7CisgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyAoR19PQkpFQ1QgKHVzZXJfZGF0YSksIHBhcmFtX3NwZWNzW1BST1BfTVVURV0pOworfQorCitzdGF0aWMgdm9pZAorbXV0ZV9ub3RpZnlfY2IgKEdfR05VQ19VTlVTRUQgR09iamVjdCAqIG9iaiwgR19HTlVDX1VOVVNFRCBHUGFyYW1TcGVjICogcHNwZWMsCisgICAgR3N0UGxheWVyICogc2VsZikKK3sKKyAgaWYgKGdfc2lnbmFsX2hhbmRsZXJfZmluZCAoc2VsZiwgR19TSUdOQUxfTUFUQ0hfSUQsCisgICAgICAgICAgc2lnbmFsc1tTSUdOQUxfTVVURV9DSEFOR0VEXSwgMCwgTlVMTCwgTlVMTCwgTlVMTCkgIT0gMCkgeworICAgIGdzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2ggKHNlbGYtPnNpZ25hbF9kaXNwYXRjaGVyLCBzZWxmLAorICAgICAgICBtdXRlX2NoYW5nZWRfZGlzcGF0Y2gsIGdfb2JqZWN0X3JlZiAoc2VsZiksCisgICAgICAgIChHRGVzdHJveU5vdGlmeSkgZ19vYmplY3RfdW5yZWYpOworICB9Cit9CisKK3N0YXRpYyBncG9pbnRlcgorZ3N0X3BsYXllcl9tYWluIChncG9pbnRlciBkYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSIChkYXRhKTsKKyAgR3N0QnVzICpidXM7CisgIEdTb3VyY2UgKnNvdXJjZTsKKyAgR1NvdXJjZSAqYnVzX3NvdXJjZTsKKyAgR3N0RWxlbWVudCAqc2NhbGV0ZW1wbzsKKworICBHU1RfVFJBQ0VfT0JKRUNUIChzZWxmLCAiU3RhcnRpbmcgbWFpbiB0aHJlYWQiKTsKKworICBnX21haW5fY29udGV4dF9wdXNoX3RocmVhZF9kZWZhdWx0IChzZWxmLT5jb250ZXh0KTsKKworICBzb3VyY2UgPSBnX2lkbGVfc291cmNlX25ldyAoKTsKKyAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrIChzb3VyY2UsIChHU291cmNlRnVuYykgbWFpbl9sb29wX3J1bm5pbmdfY2IsIHNlbGYsCisgICAgICBOVUxMKTsKKyAgZ19zb3VyY2VfYXR0YWNoIChzb3VyY2UsIHNlbGYtPmNvbnRleHQpOworICBnX3NvdXJjZV91bnJlZiAoc291cmNlKTsKKworICBzZWxmLT5wbGF5YmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgicGxheWJpbiIsICJwbGF5YmluIik7CisKKyAgaWYgKHNlbGYtPnZpZGVvX3JlbmRlcmVyKSB7CisgICAgR3N0RWxlbWVudCAqdmlkZW9fc2luayA9CisgICAgICAgIGdzdF9wbGF5ZXJfdmlkZW9fcmVuZGVyZXJfY3JlYXRlX3ZpZGVvX3NpbmsgKHNlbGYtPnZpZGVvX3JlbmRlcmVyLAorICAgICAgICBzZWxmKTsKKworICAgIGlmICh2aWRlb19zaW5rKQorICAgICAgZ19vYmplY3Rfc2V0IChzZWxmLT5wbGF5YmluLCAidmlkZW8tc2luayIsIHZpZGVvX3NpbmssIE5VTEwpOworICB9CisKKyAgc2NhbGV0ZW1wbyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoInNjYWxldGVtcG8iLCBOVUxMKTsKKyAgaWYgKHNjYWxldGVtcG8pIHsKKyAgICBpZiAoZ3N0X3BsdWdpbl9mZWF0dXJlX2NoZWNrX3ZlcnNpb24gKEdTVF9QTFVHSU5fRkVBVFVSRQorICAgICAgICAgICAgKGdzdF9lbGVtZW50X2dldF9mYWN0b3J5IChzY2FsZXRlbXBvKSksIDEsIDYsIDEpKSB7CisgICAgICBnX29iamVjdF9zZXQgKHNlbGYtPnBsYXliaW4sICJhdWRpby1maWx0ZXIiLCBzY2FsZXRlbXBvLCBOVUxMKTsKKyAgICB9IGVsc2UgeworICAgICAgZ3N0X29iamVjdF91bnJlZiAoc2NhbGV0ZW1wbyk7CisgICAgICBnX3dhcm5pbmcgKCJHc3RQbGF5ZXI6IHNjYWxldGVtcG8gPj0gMS42LjEgaXMgbmVlZGVkIGZvciBwcmVzZXJ2aW5nICIKKyAgICAgICAgICAiYXVkaW8gcGl0Y2ggZHVyaW5nIHRyaWNrIG1vZGVzIik7CisgICAgfQorICB9IGVsc2UgeworICAgIGdfd2FybmluZyAoIkdzdFBsYXllcjogc2NhbGV0ZW1wbyBlbGVtZW50IG5vdCBhdmFpbGFibGUuIEF1ZGlvIHBpdGNoICIKKyAgICAgICAgIndpbGwgbm90IGJlIHByZXNlcnZlZCBkdXJpbmcgdHJpY2sgbW9kZXMiKTsKKyAgfQorCisgIHNlbGYtPmJ1cyA9IGJ1cyA9IGdzdF9lbGVtZW50X2dldF9idXMgKHNlbGYtPnBsYXliaW4pOworICBidXNfc291cmNlID0gZ3N0X2J1c19jcmVhdGVfd2F0Y2ggKGJ1cyk7CisgIGdfc291cmNlX3NldF9jYWxsYmFjayAoYnVzX3NvdXJjZSwgKEdTb3VyY2VGdW5jKSBnc3RfYnVzX2FzeW5jX3NpZ25hbF9mdW5jLAorICAgICAgTlVMTCwgTlVMTCk7CisgIGdfc291cmNlX2F0dGFjaCAoYnVzX3NvdXJjZSwgc2VsZi0+Y29udGV4dCk7CisKKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjplcnJvciIsIEdfQ0FMTEJBQ0sgKGVycm9yX2NiKSwKKyAgICAgIHNlbGYpOworICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoYnVzKSwgIm1lc3NhZ2U6Ondhcm5pbmciLCBHX0NBTExCQUNLICh3YXJuaW5nX2NiKSwKKyAgICAgIHNlbGYpOworICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoYnVzKSwgIm1lc3NhZ2U6OmVvcyIsIEdfQ0FMTEJBQ0sgKGVvc19jYiksIHNlbGYpOworICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoYnVzKSwgIm1lc3NhZ2U6OnN0YXRlLWNoYW5nZWQiLAorICAgICAgR19DQUxMQkFDSyAoc3RhdGVfY2hhbmdlZF9jYiksIHNlbGYpOworICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoYnVzKSwgIm1lc3NhZ2U6OmJ1ZmZlcmluZyIsCisgICAgICBHX0NBTExCQUNLIChidWZmZXJpbmdfY2IpLCBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjpjbG9jay1sb3N0IiwKKyAgICAgIEdfQ0FMTEJBQ0sgKGNsb2NrX2xvc3RfY2IpLCBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjpkdXJhdGlvbi1jaGFuZ2VkIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKGR1cmF0aW9uX2NoYW5nZWRfY2IpLCBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjpsYXRlbmN5IiwKKyAgICAgIEdfQ0FMTEJBQ0sgKGxhdGVuY3lfY2IpLCBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjpyZXF1ZXN0LXN0YXRlIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKHJlcXVlc3Rfc3RhdGVfY2IpLCBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjplbGVtZW50IiwKKyAgICAgIEdfQ0FMTEJBQ0sgKGVsZW1lbnRfY2IpLCBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjp0YWciLCBHX0NBTExCQUNLICh0YWdzX2NiKSwgc2VsZik7CisKKyAgZ19zaWduYWxfY29ubmVjdCAoc2VsZi0+cGxheWJpbiwgInZpZGVvLWNoYW5nZWQiLAorICAgICAgR19DQUxMQkFDSyAodmlkZW9fY2hhbmdlZF9jYiksIHNlbGYpOworICBnX3NpZ25hbF9jb25uZWN0IChzZWxmLT5wbGF5YmluLCAiYXVkaW8tY2hhbmdlZCIsCisgICAgICBHX0NBTExCQUNLIChhdWRpb19jaGFuZ2VkX2NiKSwgc2VsZik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKHNlbGYtPnBsYXliaW4sICJ0ZXh0LWNoYW5nZWQiLAorICAgICAgR19DQUxMQkFDSyAoc3VidGl0bGVfY2hhbmdlZF9jYiksIHNlbGYpOworCisgIGdfc2lnbmFsX2Nvbm5lY3QgKHNlbGYtPnBsYXliaW4sICJ2aWRlby10YWdzLWNoYW5nZWQiLAorICAgICAgR19DQUxMQkFDSyAodmlkZW9fdGFnc19jaGFuZ2VkX2NiKSwgc2VsZik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKHNlbGYtPnBsYXliaW4sICJhdWRpby10YWdzLWNoYW5nZWQiLAorICAgICAgR19DQUxMQkFDSyAoYXVkaW9fdGFnc19jaGFuZ2VkX2NiKSwgc2VsZik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKHNlbGYtPnBsYXliaW4sICJ0ZXh0LXRhZ3MtY2hhbmdlZCIsCisgICAgICBHX0NBTExCQUNLIChzdWJ0aXRsZV90YWdzX2NoYW5nZWRfY2IpLCBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoc2VsZi0+cGxheWJpbiwgIm5vdGlmeTo6dm9sdW1lIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKHZvbHVtZV9ub3RpZnlfY2IpLCBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoc2VsZi0+cGxheWJpbiwgIm5vdGlmeTo6bXV0ZSIsCisgICAgICBHX0NBTExCQUNLIChtdXRlX25vdGlmeV9jYiksIHNlbGYpOworCisgIHNlbGYtPnRhcmdldF9zdGF0ZSA9IEdTVF9TVEFURV9OVUxMOworICBzZWxmLT5jdXJyZW50X3N0YXRlID0gR1NUX1NUQVRFX05VTEw7CisgIGNoYW5nZV9zdGF0ZSAoc2VsZiwgR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEKTsKKyAgc2VsZi0+YnVmZmVyaW5nID0gMTAwOworICBzZWxmLT5pc19lb3MgPSBGQUxTRTsKKyAgc2VsZi0+aXNfbGl2ZSA9IEZBTFNFOworCisgIEdTVF9UUkFDRV9PQkpFQ1QgKHNlbGYsICJTdGFydGluZyBtYWluIGxvb3AiKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzZWxmLT5sb29wKTsKKyAgR1NUX1RSQUNFX09CSkVDVCAoc2VsZiwgIlN0b3BwZWQgbWFpbiBsb29wIik7CisKKyAgZ19zb3VyY2VfZGVzdHJveSAoYnVzX3NvdXJjZSk7CisgIGdfc291cmNlX3VucmVmIChidXNfc291cmNlKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoYnVzKTsKKworICByZW1vdmVfdGlja19zb3VyY2UgKHNlbGYpOworICByZW1vdmVfcmVhZHlfdGltZW91dF9zb3VyY2UgKHNlbGYpOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBpZiAoc2VsZi0+bWVkaWFfaW5mbykgeworICAgIGdfb2JqZWN0X3VucmVmIChzZWxmLT5tZWRpYV9pbmZvKTsKKyAgICBzZWxmLT5tZWRpYV9pbmZvID0gTlVMTDsKKyAgfQorCisgIGlmIChzZWxmLT5zZWVrX3NvdXJjZSkKKyAgICBnX3NvdXJjZV91bnJlZiAoc2VsZi0+c2Vla19zb3VyY2UpOworICBzZWxmLT5zZWVrX3NvdXJjZSA9IE5VTEw7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZhdWx0IChzZWxmLT5jb250ZXh0KTsKKworICBzZWxmLT50YXJnZXRfc3RhdGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgc2VsZi0+Y3VycmVudF9zdGF0ZSA9IEdTVF9TVEFURV9OVUxMOworICBpZiAoc2VsZi0+cGxheWJpbikgeworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc2VsZi0+cGxheWJpbiwgR1NUX1NUQVRFX05VTEwpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHNlbGYtPnBsYXliaW4pOworICAgIHNlbGYtPnBsYXliaW4gPSBOVUxMOworICB9CisKKyAgR1NUX1RSQUNFX09CSkVDVCAoc2VsZiwgIlN0b3BwZWQgbWFpbiB0aHJlYWQiKTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGdwb2ludGVyCitnc3RfcGxheWVyX2luaXRfb25jZSAoR19HTlVDX1VOVVNFRCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIGdzdF9pbml0IChOVUxMLCBOVUxMKTsKKworICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X3BsYXllcl9kZWJ1ZywgImdzdC1wbGF5ZXIiLCAwLCAiR3N0UGxheWVyIik7CisgIGdzdF9wbGF5ZXJfZXJyb3JfcXVhcmsgKCk7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9uZXc6CisgKiBAdmlkZW9fcmVuZGVyZXI6ICh0cmFuc2ZlciBmdWxsKSAoYWxsb3ctbm9uZSk6IEdzdFBsYXllclZpZGVvUmVuZGVyZXIgdG8gdXNlCisgKiBAc2lnbmFsX2Rpc3BhdGNoZXI6ICh0cmFuc2ZlciBmdWxsKSAoYWxsb3ctbm9uZSk6IEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIgdG8gdXNlCisgKgorICogQ3JlYXRlcyBhIG5ldyAjR3N0UGxheWVyIGluc3RhbmNlIHRoYXQgdXNlcyBAc2lnbmFsX2Rpc3BhdGNoZXIgdG8gZGlzcGF0Y2gKKyAqIHNpZ25hbHMgdG8gc29tZSBldmVudCBsb29wIHN5c3RlbSwgb3IgZW1pdHMgc2lnbmFscyBkaXJlY3RseSBpZiBOVUxMIGlzCisgKiBwYXNzZWQuIFNlZSBnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX25ldygpLgorICoKKyAqIFZpZGVvIGlzIGdvaW5nIHRvIGJlIHJlbmRlcmVkIGJ5IEB2aWRlb19yZW5kZXJlciwgb3IgaWYgJU5VTEwgaXMgcHJvdmlkZWQKKyAqIG5vIHNwZWNpYWwgdmlkZW8gc2V0IHVwIHdpbGwgYmUgZG9uZSBhbmQgc29tZSBkZWZhdWx0IGhhbmRsaW5nIHdpbGwgYmUKKyAqIHBlcmZvcm1lZC4KKyAqCisgKiBSZXR1cm5zOiBhIG5ldyAjR3N0UGxheWVyIGluc3RhbmNlCisgKi8KK0dzdFBsYXllciAqCitnc3RfcGxheWVyX25ldyAoR3N0UGxheWVyVmlkZW9SZW5kZXJlciAqIHZpZGVvX3JlbmRlcmVyLAorICAgIEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIgKiBzaWduYWxfZGlzcGF0Y2hlcikKK3sKKyAgc3RhdGljIEdPbmNlIG9uY2UgPSBHX09OQ0VfSU5JVDsKKyAgR3N0UGxheWVyICpzZWxmOworCisgIGdfb25jZSAoJm9uY2UsIGdzdF9wbGF5ZXJfaW5pdF9vbmNlLCBOVUxMKTsKKworICBzZWxmID0KKyAgICAgIGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfUExBWUVSLCAidmlkZW8tcmVuZGVyZXIiLCB2aWRlb19yZW5kZXJlciwKKyAgICAgICJzaWduYWwtZGlzcGF0Y2hlciIsIHNpZ25hbF9kaXNwYXRjaGVyLCBOVUxMKTsKKworICBpZiAodmlkZW9fcmVuZGVyZXIpCisgICAgZ19vYmplY3RfdW5yZWYgKHZpZGVvX3JlbmRlcmVyKTsKKyAgaWYgKHNpZ25hbF9kaXNwYXRjaGVyKQorICAgIGdfb2JqZWN0X3VucmVmIChzaWduYWxfZGlzcGF0Y2hlcik7CisKKyAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3BsYXllcl9wbGF5X2ludGVybmFsIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlX3JldDsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiUGxheSIpOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBpZiAoIXNlbGYtPnVyaSkgeworICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKKyAgfQorICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIHJlbW92ZV9yZWFkeV90aW1lb3V0X3NvdXJjZSAoc2VsZik7CisgIHNlbGYtPnRhcmdldF9zdGF0ZSA9IEdTVF9TVEFURV9QTEFZSU5HOworCisgIGlmIChzZWxmLT5jdXJyZW50X3N0YXRlIDwgR1NUX1NUQVRFX1BBVVNFRCkKKyAgICBjaGFuZ2Vfc3RhdGUgKHNlbGYsIEdTVF9QTEFZRVJfU1RBVEVfQlVGRkVSSU5HKTsKKworICBpZiAoc2VsZi0+Y3VycmVudF9zdGF0ZSA+PSBHU1RfU1RBVEVfUEFVU0VEICYmICFzZWxmLT5pc19lb3MKKyAgICAgICYmIHNlbGYtPmJ1ZmZlcmluZyA+PSAxMDApIHsKKyAgICBzdGF0ZV9yZXQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNlbGYtPnBsYXliaW4sIEdTVF9TVEFURV9QTEFZSU5HKTsKKyAgfSBlbHNlIHsKKyAgICBzdGF0ZV9yZXQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNlbGYtPnBsYXliaW4sIEdTVF9TVEFURV9QQVVTRUQpOworICB9CisKKyAgaWYgKHN0YXRlX3JldCA9PSBHU1RfU1RBVEVfQ0hBTkdFX05PX1BSRVJPTEwpIHsKKyAgICBzZWxmLT5pc19saXZlID0gVFJVRTsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiUGlwZWxpbmUgaXMgbGl2ZSIpOworICB9CisKKyAgaWYgKHN0YXRlX3JldCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKKyAgICBlbWl0X2Vycm9yIChzZWxmLCBnX2Vycm9yX25ldyAoR1NUX1BMQVlFUl9FUlJPUiwgR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQsCisgICAgICAgICAgICAiRmFpbGVkIHRvIHBsYXkiKSk7CisgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKKyAgfSBlbHNlIGlmIChzdGF0ZV9yZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9OT19QUkVST0xMKSB7CisgICAgc2VsZi0+aXNfbGl2ZSA9IFRSVUU7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlBpcGVsaW5lIGlzIGxpdmUiKTsKKyAgfQorCisgIGlmIChzZWxmLT5pc19lb3MpIHsKKyAgICBnYm9vbGVhbiByZXQ7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiV2FzIEVPUywgc2Vla2luZyB0byBiZWdpbm5pbmciKTsKKyAgICBzZWxmLT5pc19lb3MgPSBGQUxTRTsKKyAgICByZXQgPQorICAgICAgICBnc3RfZWxlbWVudF9zZWVrX3NpbXBsZSAoc2VsZi0+cGxheWJpbiwgR1NUX0ZPUk1BVF9USU1FLAorICAgICAgICBHU1RfU0VFS19GTEFHX0ZMVVNILCAwKTsKKyAgICBpZiAoIXJldCkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIlNlZWsgdG8gYmVnaW5uaW5nIGZhaWxlZCIpOworICAgICAgZ3N0X3BsYXllcl9zdG9wX2ludGVybmFsIChzZWxmKTsKKyAgICAgIGdzdF9wbGF5ZXJfcGxheV9pbnRlcm5hbCAoc2VsZik7CisgICAgfQorICB9CisKKyAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3BsYXk6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogUmVxdWVzdCB0byBwbGF5IHRoZSBsb2FkZWQgc3RyZWFtLgorICovCit2b2lkCitnc3RfcGxheWVyX3BsYXkgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpKTsKKworICBnX21haW5fY29udGV4dF9pbnZva2VfZnVsbCAoc2VsZi0+Y29udGV4dCwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgZ3N0X3BsYXllcl9wbGF5X2ludGVybmFsLCBzZWxmLCBOVUxMKTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfcGxheWVyX3BhdXNlX2ludGVybmFsIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlX3JldDsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiUGF1c2UiKTsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgaWYgKCFzZWxmLT51cmkpIHsKKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7CisgIH0KKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICB0aWNrX2NiIChzZWxmKTsKKyAgcmVtb3ZlX3RpY2tfc291cmNlIChzZWxmKTsKKyAgcmVtb3ZlX3JlYWR5X3RpbWVvdXRfc291cmNlIChzZWxmKTsKKworICBzZWxmLT50YXJnZXRfc3RhdGUgPSBHU1RfU1RBVEVfUEFVU0VEOworCisgIGlmIChzZWxmLT5jdXJyZW50X3N0YXRlIDwgR1NUX1NUQVRFX1BBVVNFRCkKKyAgICBjaGFuZ2Vfc3RhdGUgKHNlbGYsIEdTVF9QTEFZRVJfU1RBVEVfQlVGRkVSSU5HKTsKKworICBzdGF0ZV9yZXQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNlbGYtPnBsYXliaW4sIEdTVF9TVEFURV9QQVVTRUQpOworICBpZiAoc3RhdGVfcmV0ID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgeworICAgIGVtaXRfZXJyb3IgKHNlbGYsIGdfZXJyb3JfbmV3IChHU1RfUExBWUVSX0VSUk9SLCBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCwKKyAgICAgICAgICAgICJGYWlsZWQgdG8gcGF1c2UiKSk7CisgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKKyAgfSBlbHNlIGlmIChzdGF0ZV9yZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9OT19QUkVST0xMKSB7CisgICAgc2VsZi0+aXNfbGl2ZSA9IFRSVUU7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlBpcGVsaW5lIGlzIGxpdmUiKTsKKyAgfQorCisgIGlmIChzZWxmLT5pc19lb3MpIHsKKyAgICBnYm9vbGVhbiByZXQ7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiV2FzIEVPUywgc2Vla2luZyB0byBiZWdpbm5pbmciKTsKKyAgICBzZWxmLT5pc19lb3MgPSBGQUxTRTsKKyAgICByZXQgPQorICAgICAgICBnc3RfZWxlbWVudF9zZWVrX3NpbXBsZSAoc2VsZi0+cGxheWJpbiwgR1NUX0ZPUk1BVF9USU1FLAorICAgICAgICBHU1RfU0VFS19GTEFHX0ZMVVNILCAwKTsKKyAgICBpZiAoIXJldCkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIlNlZWsgdG8gYmVnaW5uaW5nIGZhaWxlZCIpOworICAgICAgZ3N0X3BsYXllcl9zdG9wX2ludGVybmFsIChzZWxmKTsKKyAgICAgIGdzdF9wbGF5ZXJfcGF1c2VfaW50ZXJuYWwgKHNlbGYpOworICAgIH0KKyAgfQorCisgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9wYXVzZToKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqCisgKiBQYXVzZXMgdGhlIGN1cnJlbnQgc3RyZWFtLgorICovCit2b2lkCitnc3RfcGxheWVyX3BhdXNlIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSk7CisKKyAgZ19tYWluX2NvbnRleHRfaW52b2tlX2Z1bGwgKHNlbGYtPmNvbnRleHQsIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgIGdzdF9wbGF5ZXJfcGF1c2VfaW50ZXJuYWwsIHNlbGYsIE5VTEwpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9wbGF5ZXJfc3RvcF9pbnRlcm5hbCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTdG9wIik7CisKKyAgdGlja19jYiAoc2VsZik7CisgIHJlbW92ZV90aWNrX3NvdXJjZSAoc2VsZik7CisKKyAgYWRkX3JlYWR5X3RpbWVvdXRfc291cmNlIChzZWxmKTsKKworICBzZWxmLT50YXJnZXRfc3RhdGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgc2VsZi0+Y3VycmVudF9zdGF0ZSA9IEdTVF9TVEFURV9SRUFEWTsKKyAgc2VsZi0+aXNfbGl2ZSA9IEZBTFNFOworICBzZWxmLT5pc19lb3MgPSBGQUxTRTsKKyAgZ3N0X2J1c19zZXRfZmx1c2hpbmcgKHNlbGYtPmJ1cywgVFJVRSk7CisgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc2VsZi0+cGxheWJpbiwgR1NUX1NUQVRFX1JFQURZKTsKKyAgZ3N0X2J1c19zZXRfZmx1c2hpbmcgKHNlbGYtPmJ1cywgRkFMU0UpOworICBjaGFuZ2Vfc3RhdGUgKHNlbGYsIEdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRCk7CisgIHNlbGYtPmJ1ZmZlcmluZyA9IDEwMDsKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGlmIChzZWxmLT5tZWRpYV9pbmZvKSB7CisgICAgZ19vYmplY3RfdW5yZWYgKHNlbGYtPm1lZGlhX2luZm8pOworICAgIHNlbGYtPm1lZGlhX2luZm8gPSBOVUxMOworICB9CisgIGlmIChzZWxmLT5nbG9iYWxfdGFncykgeworICAgIGdzdF90YWdfbGlzdF91bnJlZiAoc2VsZi0+Z2xvYmFsX3RhZ3MpOworICAgIHNlbGYtPmdsb2JhbF90YWdzID0gTlVMTDsKKyAgfQorICBzZWxmLT5zZWVrX3BlbmRpbmcgPSBGQUxTRTsKKyAgaWYgKHNlbGYtPnNlZWtfc291cmNlKSB7CisgICAgZ19zb3VyY2VfZGVzdHJveSAoc2VsZi0+c2Vla19zb3VyY2UpOworICAgIGdfc291cmNlX3VucmVmIChzZWxmLT5zZWVrX3NvdXJjZSk7CisgICAgc2VsZi0+c2Vla19zb3VyY2UgPSBOVUxMOworICB9CisgIHNlbGYtPnNlZWtfcG9zaXRpb24gPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICBzZWxmLT5sYXN0X3NlZWtfdGltZSA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgIHNlbGYtPnJhdGUgPSAxLjA7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3N0b3A6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogU3RvcHMgcGxheWluZyB0aGUgY3VycmVudCBzdHJlYW0gYW5kIHJlc2V0cyB0byB0aGUgZmlyc3QgcG9zaXRpb24KKyAqIGluIHRoZSBzdHJlYW0uCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfc3RvcCAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZikpOworCisgIGdfbWFpbl9jb250ZXh0X2ludm9rZV9mdWxsIChzZWxmLT5jb250ZXh0LCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICBnc3RfcGxheWVyX3N0b3BfaW50ZXJuYWwsIHNlbGYsIE5VTEwpOworfQorCisvKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGxvY2sgZnJvbSBtYWluIGNvbnRleHQsIHJlbGVhc2VzIGxvY2shICovCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9zZWVrX2ludGVybmFsX2xvY2tlZCAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgZ2Jvb2xlYW4gcmV0OworICBHc3RDbG9ja1RpbWUgcG9zaXRpb247CisgIGdkb3VibGUgcmF0ZTsKKyAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gc3RhdGVfcmV0OworICBHc3RFdmVudCAqc19ldmVudDsKKyAgR3N0U2Vla0ZsYWdzIGZsYWdzID0gMDsKKworICBpZiAoc2VsZi0+c2Vla19zb3VyY2UpIHsKKyAgICBnX3NvdXJjZV9kZXN0cm95IChzZWxmLT5zZWVrX3NvdXJjZSk7CisgICAgZ19zb3VyY2VfdW5yZWYgKHNlbGYtPnNlZWtfc291cmNlKTsKKyAgICBzZWxmLT5zZWVrX3NvdXJjZSA9IE5VTEw7CisgIH0KKworICAvKiBPbmx5IHNlZWsgaW4gUEFVU0VEICovCisgIGlmIChzZWxmLT5jdXJyZW50X3N0YXRlIDwgR1NUX1NUQVRFX1BBVVNFRCkgeworICAgIHJldHVybjsKKyAgfSBlbHNlIGlmIChzZWxmLT5jdXJyZW50X3N0YXRlICE9IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICAgIHN0YXRlX3JldCA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc2VsZi0+cGxheWJpbiwgR1NUX1NUQVRFX1BBVVNFRCk7CisgICAgaWYgKHN0YXRlX3JldCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKKyAgICAgIGVtaXRfZXJyb3IgKHNlbGYsIGdfZXJyb3JfbmV3IChHU1RfUExBWUVSX0VSUk9SLCBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCwKKyAgICAgICAgICAgICAgIkZhaWxlZCB0byBzZWVrIikpOworICAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICAgIHJldHVybjsKKyAgfQorCisgIHNlbGYtPmxhc3Rfc2Vla190aW1lID0gZ3N0X3V0aWxfZ2V0X3RpbWVzdGFtcCAoKTsKKyAgcG9zaXRpb24gPSBzZWxmLT5zZWVrX3Bvc2l0aW9uOworICBzZWxmLT5zZWVrX3Bvc2l0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgc2VsZi0+c2Vla19wZW5kaW5nID0gVFJVRTsKKyAgcmF0ZSA9IHNlbGYtPnJhdGU7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgcmVtb3ZlX3RpY2tfc291cmNlIChzZWxmKTsKKyAgc2VsZi0+aXNfZW9zID0gRkFMU0U7CisKKyAgZmxhZ3MgfD0gR1NUX1NFRUtfRkxBR19GTFVTSDsKKworI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsNSwwKQorICBpZiAocmF0ZSAhPSAxLjApIHsKKyAgICBmbGFncyB8PSBHU1RfU0VFS19GTEFHX1RSSUNLTU9ERTsKKyAgfQorI2VuZGlmCisKKyAgaWYgKHJhdGUgPj0gMC4wKSB7CisgICAgc19ldmVudCA9IGdzdF9ldmVudF9uZXdfc2VlayAocmF0ZSwgR1NUX0ZPUk1BVF9USU1FLCBmbGFncywKKyAgICAgICAgR1NUX1NFRUtfVFlQRV9TRVQsIHBvc2l0aW9uLCBHU1RfU0VFS19UWVBFX05PTkUsIEdTVF9DTE9DS19USU1FX05PTkUpOworICB9IGVsc2UgeworICAgIHNfZXZlbnQgPSBnc3RfZXZlbnRfbmV3X3NlZWsgKHJhdGUsIEdTVF9GT1JNQVRfVElNRSwgZmxhZ3MsCisgICAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCBHX0dJTlQ2NF9DT05TVEFOVCAoMCksIEdTVF9TRUVLX1RZUEVfU0VULCBwb3NpdGlvbik7CisgIH0KKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU2VlayB3aXRoIHJhdGUgJS4ybGYgdG8gJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgcmF0ZSwgR1NUX1RJTUVfQVJHUyAocG9zaXRpb24pKTsKKworICByZXQgPSBnc3RfZWxlbWVudF9zZW5kX2V2ZW50IChzZWxmLT5wbGF5YmluLCBzX2V2ZW50KTsKKyAgaWYgKCFyZXQpCisgICAgZW1pdF9lcnJvciAoc2VsZiwgZ19lcnJvcl9uZXcgKEdTVF9QTEFZRVJfRVJST1IsIEdTVF9QTEFZRVJfRVJST1JfRkFJTEVELAorICAgICAgICAgICAgIkZhaWxlZCB0byBzZWVrIHRvICUiIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyAocG9zaXRpb24pKSk7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3BsYXllcl9zZWVrX2ludGVybmFsIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGdzdF9wbGF5ZXJfc2Vla19pbnRlcm5hbF9sb2NrZWQgKHNlbGYpOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3BsYXllcl9zZXRfcmF0ZV9pbnRlcm5hbCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSB1c2VyX2RhdGE7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgc2VsZi0+c2Vla19wb3NpdGlvbiA9IGdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uIChzZWxmKTsKKworICAvKiBJZiB0aGVyZSBpcyBubyBzZWVrIGJlaW5nIGRpc3BhdGNoIHRvIHRoZSBtYWluIGNvbnRleHQgY3VycmVudGx5IGRvIHRoYXQsCisgICAqIG90aGVyd2lzZSB3ZSBqdXN0IHVwZGF0ZWQgdGhlIHJhdGUgc28gdGhhdCBpdCB3aWxsIGJlIHRha2VuIGJ5CisgICAqIHRoZSBzZWVrIGhhbmRsZXIgZnJvbSB0aGUgbWFpbiBjb250ZXh0IGluc3RlYWQgb2YgdGhlIG9sZCBvbmUuCisgICAqLworICBpZiAoIXNlbGYtPnNlZWtfc291cmNlKSB7CisgICAgLyogSWYgbm8gc2VlayBpcyBwZW5kaW5nIHRoZW4gY3JlYXRlIG5ldyBzZWVrIHNvdXJjZSAqLworICAgIGlmICghc2VsZi0+c2Vla19wZW5kaW5nKSB7CisgICAgICBzZWxmLT5zZWVrX3NvdXJjZSA9IGdfaWRsZV9zb3VyY2VfbmV3ICgpOworICAgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrIChzZWxmLT5zZWVrX3NvdXJjZSwKKyAgICAgICAgICAoR1NvdXJjZUZ1bmMpIGdzdF9wbGF5ZXJfc2Vla19pbnRlcm5hbCwgc2VsZiwgTlVMTCk7CisgICAgICBnX3NvdXJjZV9hdHRhY2ggKHNlbGYtPnNlZWtfc291cmNlLCBzZWxmLT5jb250ZXh0KTsKKyAgICB9CisgIH0KKworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zZXRfcmF0ZToKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEByYXRlOiBwbGF5YmFjayByYXRlCisgKgorICogUGxheWJhY2sgYXQgc3BlY2lmaWVkIHJhdGUKKyAqLwordm9pZAorZ3N0X3BsYXllcl9zZXRfcmF0ZSAoR3N0UGxheWVyICogc2VsZiwgZ2RvdWJsZSByYXRlKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKHJhdGUgIT0gMC4wKTsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgc2VsZi0+cmF0ZSA9IHJhdGU7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgZ3N0X3BsYXllcl9zZXRfcmF0ZV9pbnRlcm5hbCAoc2VsZik7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfcmF0ZToKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqCisgKiBSZXR1cm5zOiBjdXJyZW50IHBsYXliYWNrIHJhdGUKKyAqLworZ2RvdWJsZQorZ3N0X3BsYXllcl9nZXRfcmF0ZSAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBERUZBVUxUX1JBVEUpOworCisgIHJldHVybiBzZWxmLT5yYXRlOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9wbGF5ZXJfc2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbF9pbnRlcm5hbCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSB1c2VyX2RhdGE7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgaWYgKHNlbGYtPnRpY2tfc291cmNlKSB7CisgICAgcmVtb3ZlX3RpY2tfc291cmNlIChzZWxmKTsKKyAgICBhZGRfdGlja19zb3VyY2UgKHNlbGYpOworICB9CisKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfc2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbDoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEBpbnRlcnZhbDogaW50ZXJ2YWwgaW4gbXMKKyAqCisgKiBTZXQgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gdHdvIHBvc2l0aW9uLXVwZGF0ZWQgc2lnbmFscy4KKyAqIFBhc3MgMCB0byBzdG9wIHVwZGF0aW5nIHRoZSBwb3NpdGlvbi4KKyAqLwordm9pZAorZ3N0X3BsYXllcl9zZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsIChHc3RQbGF5ZXIgKiBzZWxmLCBndWludCBpbnRlcnZhbCkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZikpOworICBnX3JldHVybl9pZl9mYWlsIChpbnRlcnZhbCA8PSAxMDAwMCk7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIHNlbGYtPnBvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbF9tcyA9IGludGVydmFsOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIGdzdF9wbGF5ZXJfc2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbF9pbnRlcm5hbCAoc2VsZik7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICoKKyAqIFJldHVybnM6IGN1cnJlbnQgcG9zaXRpb24gdXBkYXRlIGludGVydmFsIGluIG1pbGxpc2Vjb25kcworICovCitndWludAorZ3N0X3BsYXllcl9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZiksCisgICAgICBERUZBVUxUX1BPU0lUSU9OX1VQREFURV9JTlRFUlZBTF9NUyk7CisKKyAgcmV0dXJuIHNlbGYtPnBvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbF9tczsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NlZWs6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKiBAcG9zaXRpb246IHBvc2l0aW9uIHRvIHNlZWsgaW4gbmFub3NlY29uZHMKKyAqCisgKiBTZWVrcyB0aGUgY3VycmVudGx5LXBsYXlpbmcgc3RyZWFtIHRvIHRoZSBhYnNvbHV0ZSBAcG9zaXRpb24gdGltZQorICogaW4gbmFub3NlY29uZHMuCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfc2VlayAoR3N0UGxheWVyICogc2VsZiwgR3N0Q2xvY2tUaW1lIHBvc2l0aW9uKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChwb3NpdGlvbikpOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBpZiAoc2VsZi0+bWVkaWFfaW5mbyAmJiAhc2VsZi0+bWVkaWFfaW5mby0+c2Vla2FibGUpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiTWVkaWEgaXMgbm90IHNlZWthYmxlIik7CisgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICByZXR1cm47CisgIH0KKworICBzZWxmLT5zZWVrX3Bvc2l0aW9uID0gcG9zaXRpb247CisKKyAgLyogSWYgdGhlcmUgaXMgbm8gc2VlayBiZWluZyBkaXNwYXRjaCB0byB0aGUgbWFpbiBjb250ZXh0IGN1cnJlbnRseSBkbyB0aGF0LAorICAgKiBvdGhlcndpc2Ugd2UganVzdCB1cGRhdGVkIHRoZSBzZWVrIHBvc2l0aW9uIHNvIHRoYXQgaXQgd2lsbCBiZSB0YWtlbiBieQorICAgKiB0aGUgc2VlayBoYW5kbGVyIGZyb20gdGhlIG1haW4gY29udGV4dCBpbnN0ZWFkIG9mIHRoZSBvbGQgb25lLgorICAgKi8KKyAgaWYgKCFzZWxmLT5zZWVrX3NvdXJjZSkgeworICAgIEdzdENsb2NrVGltZSBub3cgPSBnc3RfdXRpbF9nZXRfdGltZXN0YW1wICgpOworCisgICAgLyogSWYgbm8gc2VlayBpcyBwZW5kaW5nIG9yIGl0IHdhcyBzdGFydGVkIG1vcmUgdGhhbiAyNTAgbXNlY29uZHMgYWdvIHNlZWsKKyAgICAgKiBpbW1lZGlhdGVseSwgb3RoZXJ3aXNlIHdhaXQgdW50aWwgdGhlIDI1MCBtc2Vjb25kcyBoYXZlIHBhc3NlZCAqLworICAgIGlmICghc2VsZi0+c2Vla19wZW5kaW5nIHx8IChub3cgLSBzZWxmLT5sYXN0X3NlZWtfdGltZSA+IDI1MCAqIEdTVF9NU0VDT05EKSkgeworICAgICAgc2VsZi0+c2Vla19zb3VyY2UgPSBnX2lkbGVfc291cmNlX25ldyAoKTsKKyAgICAgIGdfc291cmNlX3NldF9jYWxsYmFjayAoc2VsZi0+c2Vla19zb3VyY2UsCisgICAgICAgICAgKEdTb3VyY2VGdW5jKSBnc3RfcGxheWVyX3NlZWtfaW50ZXJuYWwsIHNlbGYsIE5VTEwpOworICAgICAgR1NUX1RSQUNFX09CSkVDVCAoc2VsZiwgIkRpc3BhdGNoaW5nIHNlZWsgdG8gcG9zaXRpb24gJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgICAgIEdTVF9USU1FX0FSR1MgKHBvc2l0aW9uKSk7CisgICAgICBnX3NvdXJjZV9hdHRhY2ggKHNlbGYtPnNlZWtfc291cmNlLCBzZWxmLT5jb250ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICAgZ3VpbnQgZGVsYXkgPSAyNTAwMDAgLSAobm93IC0gc2VsZi0+bGFzdF9zZWVrX3RpbWUpIC8gMTAwMDsKKworICAgICAgLyogTm90ZSB0aGF0IGxhc3Rfc2Vla190aW1lIG11c3QgYmUgc2V0IHRvIHNvbWV0aGluZyBhdCB0aGlzIHBvaW50IGFuZAorICAgICAgICogaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gMjUwIG1zZWNvbmRzICovCisgICAgICBzZWxmLT5zZWVrX3NvdXJjZSA9IGdfdGltZW91dF9zb3VyY2VfbmV3IChkZWxheSk7CisgICAgICBnX3NvdXJjZV9zZXRfY2FsbGJhY2sgKHNlbGYtPnNlZWtfc291cmNlLAorICAgICAgICAgIChHU291cmNlRnVuYykgZ3N0X3BsYXllcl9zZWVrX2ludGVybmFsLCBzZWxmLCBOVUxMKTsKKworICAgICAgR1NUX1RSQUNFX09CSkVDVCAoc2VsZiwKKyAgICAgICAgICAiRGVsYXlpbmcgc2VlayB0byBwb3NpdGlvbiAlIiBHU1RfVElNRV9GT1JNQVQgIiBieSAldSB1cyIsCisgICAgICAgICAgR1NUX1RJTUVfQVJHUyAocG9zaXRpb24pLCBkZWxheSk7CisgICAgICBnX3NvdXJjZV9hdHRhY2ggKHNlbGYtPnNlZWtfc291cmNlLCBzZWxmLT5jb250ZXh0KTsKKyAgICB9CisgIH0KKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX2dldF91cmk6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogR2V0cyB0aGUgVVJJIG9mIHRoZSBjdXJyZW50bHktcGxheWluZyBzdHJlYW0uCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBVUkkgb2YgdGhlCisgKiBjdXJyZW50bHktcGxheWluZyBzdHJlYW0uIGdfZnJlZSgpIGFmdGVyIHVzYWdlLgorICovCitnY2hhciAqCitnc3RfcGxheWVyX2dldF91cmkgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGdjaGFyICp2YWw7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBERUZBVUxUX1VSSSk7CisKKyAgZ19vYmplY3RfZ2V0IChzZWxmLCAidXJpIiwgJnZhbCwgTlVMTCk7CisKKyAgcmV0dXJuIHZhbDsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NldF91cmk6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKiBAdXJpOiBuZXh0IFVSSSB0byBwbGF5LgorICoKKyAqIFNldHMgdGhlIG5leHQgVVJJIHRvIHBsYXkuCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfc2V0X3VyaSAoR3N0UGxheWVyICogc2VsZiwgY29uc3QgZ2NoYXIgKiB2YWwpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpKTsKKworICBnX29iamVjdF9zZXQgKHNlbGYsICJ1cmkiLCB2YWwsIE5VTEwpOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICoKKyAqIFJldHVybnM6IHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiB0aW1lLCBpbiBuYW5vc2Vjb25kcywgb2YgdGhlCisgKiBjdXJyZW50bHktcGxheWluZyBzdHJlYW0uCisgKi8KK0dzdENsb2NrVGltZQorZ3N0X3BsYXllcl9nZXRfcG9zaXRpb24gKEdzdFBsYXllciAqIHNlbGYpCit7CisgIEdzdENsb2NrVGltZSB2YWw7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBERUZBVUxUX1BPU0lUSU9OKTsKKworICBnX29iamVjdF9nZXQgKHNlbGYsICJwb3NpdGlvbiIsICZ2YWwsIE5VTEwpOworCisgIHJldHVybiB2YWw7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfZHVyYXRpb246CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogUmV0cmlldmVzIHRoZSBkdXJhdGlvbiBvZiB0aGUgbWVkaWEgc3RyZWFtIHRoYXQgc2VsZiByZXByZXNlbnRzLgorICoKKyAqIFJldHVybnM6IHRoZSBkdXJhdGlvbiBvZiB0aGUgY3VycmVudGx5LXBsYXlpbmcgbWVkaWEgc3RyZWFtLCBpbgorICogbmFub3NlY29uZHMuCisgKi8KK0dzdENsb2NrVGltZQorZ3N0X3BsYXllcl9nZXRfZHVyYXRpb24gKEdzdFBsYXllciAqIHNlbGYpCit7CisgIEdzdENsb2NrVGltZSB2YWw7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBERUZBVUxUX0RVUkFUSU9OKTsKKworICBnX29iamVjdF9nZXQgKHNlbGYsICJkdXJhdGlvbiIsICZ2YWwsIE5VTEwpOworCisgIHJldHVybiB2YWw7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfdm9sdW1lOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICoKKyAqIFJldHVybnMgdGhlIGN1cnJlbnQgdm9sdW1lIGxldmVsLCBhcyBhIHBlcmNlbnRhZ2UgYmV0d2VlbiAwIGFuZCAxLgorICoKKyAqIFJldHVybnM6IHRoZSB2b2x1bWUgYXMgcGVyY2VudGFnZSBiZXR3ZWVuIDAgYW5kIDEuCisgKi8KK2dkb3VibGUKK2dzdF9wbGF5ZXJfZ2V0X3ZvbHVtZSAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgZ2RvdWJsZSB2YWw7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBERUZBVUxUX1ZPTFVNRSk7CisKKyAgZ19vYmplY3RfZ2V0IChzZWxmLCAidm9sdW1lIiwgJnZhbCwgTlVMTCk7CisKKyAgcmV0dXJuIHZhbDsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NldF92b2x1bWU6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKiBAdmFsOiB0aGUgbmV3IHZvbHVtZSBsZXZlbCwgYXMgYSBwZXJjZW50YWdlIGJldHdlZW4gMCBhbmQgMQorICoKKyAqIFNldHMgdGhlIHZvbHVtZSBsZXZlbCBvZiB0aGUgc3RyZWFtIGFzIGEgcGVyY2VudGFnZSBiZXR3ZWVuIDAgYW5kIDEuCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfc2V0X3ZvbHVtZSAoR3N0UGxheWVyICogc2VsZiwgZ2RvdWJsZSB2YWwpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpKTsKKworICBnX29iamVjdF9zZXQgKHNlbGYsICJ2b2x1bWUiLCB2YWwsIE5VTEwpOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X211dGU6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgdGhlIGN1cnJlbnRseS1wbGF5aW5nIHN0cmVhbSBpcyBtdXRlZC4KKyAqLworZ2Jvb2xlYW4KK2dzdF9wbGF5ZXJfZ2V0X211dGUgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGdib29sZWFuIHZhbDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZiksIERFRkFVTFRfTVVURSk7CisKKyAgZ19vYmplY3RfZ2V0IChzZWxmLCAibXV0ZSIsICZ2YWwsIE5VTEwpOworCisgIHJldHVybiB2YWw7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zZXRfbXV0ZToKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEB2YWw6IE11dGUgc3RhdGUgdGhlIHNob3VsZCBiZSBzZXQKKyAqCisgKiAlVFJVRSBpZiB0aGUgY3VycmVudGx5LXBsYXlpbmcgc3RyZWFtIHNob3VsZCBiZSBtdXRlZC4KKyAqLwordm9pZAorZ3N0X3BsYXllcl9zZXRfbXV0ZSAoR3N0UGxheWVyICogc2VsZiwgZ2Jvb2xlYW4gdmFsKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSk7CisKKyAgZ19vYmplY3Rfc2V0IChzZWxmLCAibXV0ZSIsIHZhbCwgTlVMTCk7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfcGlwZWxpbmU6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBUaGUgaW50ZXJuYWwgcGxheWJpbiBpbnN0YW5jZQorICovCitHc3RFbGVtZW50ICoKK2dzdF9wbGF5ZXJfZ2V0X3BpcGVsaW5lIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBHc3RFbGVtZW50ICp2YWw7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBOVUxMKTsKKworICBnX29iamVjdF9nZXQgKHNlbGYsICJwaXBlbGluZSIsICZ2YWwsIE5VTEwpOworCisgIHJldHVybiB2YWw7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfbWVkaWFfaW5mbzoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqCisgKiBBIEZ1bmN0aW9uIHRvIGdldCB0aGUgY3VycmVudCBtZWRpYSBpbmZvICNHc3RQbGF5ZXJNZWRpYUluZm8gaW5zdGFuY2UuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBtZWRpYSBpbmZvIGluc3RhbmNlLgorICoKKyAqIFRoZSBjYWxsZXIgc2hvdWxkIGZyZWUgaXQgd2l0aCBnX29iamVjdF91bnJlZigpCisgKi8KK0dzdFBsYXllck1lZGlhSW5mbyAqCitnc3RfcGxheWVyX2dldF9tZWRpYV9pbmZvIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBHc3RQbGF5ZXJNZWRpYUluZm8gKmluZm87CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBOVUxMKTsKKworICBpZiAoIXNlbGYtPm1lZGlhX2luZm8pCisgICAgcmV0dXJuIE5VTEw7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGluZm8gPSBnc3RfcGxheWVyX21lZGlhX2luZm9fY29weSAoc2VsZi0+bWVkaWFfaW5mbyk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgcmV0dXJuIGluZm87Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfY3VycmVudF9hdWRpb190cmFjazoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqCisgKiBBIEZ1bmN0aW9uIHRvIGdldCBjdXJyZW50IGF1ZGlvICNHc3RQbGF5ZXJBdWRpb0luZm8gaW5zdGFuY2UuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBjdXJyZW50IGF1ZGlvIHRyYWNrLgorICoKKyAqIFRoZSBjYWxsZXIgc2hvdWxkIGZyZWUgaXQgd2l0aCBnX29iamVjdF91bnJlZigpCisgKi8KK0dzdFBsYXllckF1ZGlvSW5mbyAqCitnc3RfcGxheWVyX2dldF9jdXJyZW50X2F1ZGlvX3RyYWNrIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBHc3RQbGF5ZXJBdWRpb0luZm8gKmluZm87CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBOVUxMKTsKKworICBpZiAoIWlzX3RyYWNrX2VuYWJsZWQgKHNlbGYsIEdTVF9QTEFZX0ZMQUdfQVVESU8pKQorICAgIHJldHVybiBOVUxMOworCisgIGluZm8gPSAoR3N0UGxheWVyQXVkaW9JbmZvICopIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2N1cnJlbnQgKHNlbGYsCisgICAgICAiY3VycmVudC1hdWRpbyIsIEdTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPKTsKKyAgcmV0dXJuIGluZm87Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfY3VycmVudF92aWRlb190cmFjazoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqCisgKiBBIEZ1bmN0aW9uIHRvIGdldCBjdXJyZW50IHZpZGVvICNHc3RQbGF5ZXJWaWRlb0luZm8gaW5zdGFuY2UuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBjdXJyZW50IHZpZGVvIHRyYWNrLgorICoKKyAqIFRoZSBjYWxsZXIgc2hvdWxkIGZyZWUgaXQgd2l0aCBnX29iamVjdF91bnJlZigpCisgKi8KK0dzdFBsYXllclZpZGVvSW5mbyAqCitnc3RfcGxheWVyX2dldF9jdXJyZW50X3ZpZGVvX3RyYWNrIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBHc3RQbGF5ZXJWaWRlb0luZm8gKmluZm87CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBOVUxMKTsKKworICBpZiAoIWlzX3RyYWNrX2VuYWJsZWQgKHNlbGYsIEdTVF9QTEFZX0ZMQUdfVklERU8pKQorICAgIHJldHVybiBOVUxMOworCisgIGluZm8gPSAoR3N0UGxheWVyVmlkZW9JbmZvICopIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2N1cnJlbnQgKHNlbGYsCisgICAgICAiY3VycmVudC12aWRlbyIsIEdTVF9UWVBFX1BMQVlFUl9WSURFT19JTkZPKTsKKyAgcmV0dXJuIGluZm87Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfY3VycmVudF9zdWJ0aXRsZV90cmFjazoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqCisgKiBBIEZ1bmN0aW9uIHRvIGdldCBjdXJyZW50IHN1YnRpdGxlICNHc3RQbGF5ZXJTdWJ0aXRsZUluZm8gaW5zdGFuY2UuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiBjdXJyZW50IHN1YnRpdGxlIHRyYWNrLgorICoKKyAqIFRoZSBjYWxsZXIgc2hvdWxkIGZyZWUgaXQgd2l0aCBnX29iamVjdF91bnJlZigpCisgKi8KK0dzdFBsYXllclN1YnRpdGxlSW5mbyAqCitnc3RfcGxheWVyX2dldF9jdXJyZW50X3N1YnRpdGxlX3RyYWNrIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBHc3RQbGF5ZXJTdWJ0aXRsZUluZm8gKmluZm87CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBOVUxMKTsKKworICBpZiAoIWlzX3RyYWNrX2VuYWJsZWQgKHNlbGYsIEdTVF9QTEFZX0ZMQUdfU1VCVElUTEUpKQorICAgIHJldHVybiBOVUxMOworCisgIGluZm8gPSAoR3N0UGxheWVyU3VidGl0bGVJbmZvICopIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2N1cnJlbnQgKHNlbGYsCisgICAgICAiY3VycmVudC10ZXh0IiwgR1NUX1RZUEVfUExBWUVSX1NVQlRJVExFX0lORk8pOworICByZXR1cm4gaW5mbzsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NldF9hdWRpb190cmFjazoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEBzdHJlYW1faW5kZXg6IHN0cmVhbSBpbmRleAorICoKKyAqIFJldHVybnM6ICVUUlVFIG9yICVGQUxTRQorICoKKyAqIFNldHMgdGhlIGF1ZGlvIHRyYWNrIEBzdHJlYW1faWRleC4KKyAqLworZ2Jvb2xlYW4KK2dzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrIChHc3RQbGF5ZXIgKiBzZWxmLCBnaW50IHN0cmVhbV9pbmRleCkKK3sKKyAgR3N0UGxheWVyU3RyZWFtSW5mbyAqaW5mbzsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZiksIDApOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBpbmZvID0gZ3N0X3BsYXllcl9zdHJlYW1faW5mb19maW5kIChzZWxmLT5tZWRpYV9pbmZvLAorICAgICAgR1NUX1RZUEVfUExBWUVSX0FVRElPX0lORk8sIHN0cmVhbV9pbmRleCk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisgIGlmICghaW5mbykgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJpbnZhbGlkIGF1ZGlvIHN0cmVhbSBpbmRleCAlZCIsIHN0cmVhbV9pbmRleCk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgZ19vYmplY3Rfc2V0IChHX09CSkVDVCAoc2VsZi0+cGxheWJpbiksICJjdXJyZW50LWF1ZGlvIiwgc3RyZWFtX2luZGV4LCBOVUxMKTsKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInNldCBzdHJlYW0gaW5kZXggJyVkJyIsIHN0cmVhbV9pbmRleCk7CisgIHJldHVybiBUUlVFOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfc2V0X3ZpZGVvX3RyYWNrOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICogQHN0cmVhbV9pbmRleDogc3RyZWFtIGluZGV4CisgKgorICogUmV0dXJuczogJVRSVUUgb3IgJUZBTFNFCisgKgorICogU2V0cyB0aGUgdmlkZW8gdHJhY2sgQHN0cmVhbV9pbmRleC4KKyAqLworZ2Jvb2xlYW4KK2dzdF9wbGF5ZXJfc2V0X3ZpZGVvX3RyYWNrIChHc3RQbGF5ZXIgKiBzZWxmLCBnaW50IHN0cmVhbV9pbmRleCkKK3sKKyAgR3N0UGxheWVyU3RyZWFtSW5mbyAqaW5mbzsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZiksIDApOworCisgIC8qIGNoZWNrIGlmIHN0cmVhbV9pbmRleCBleGlzdCBpbiBvdXIgaW50ZXJuYWwgbWVkaWFfaW5mbyBsaXN0ICovCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBpbmZvID0gZ3N0X3BsYXllcl9zdHJlYW1faW5mb19maW5kIChzZWxmLT5tZWRpYV9pbmZvLAorICAgICAgR1NUX1RZUEVfUExBWUVSX1ZJREVPX0lORk8sIHN0cmVhbV9pbmRleCk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisgIGlmICghaW5mbykgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJpbnZhbGlkIHZpZGVvIHN0cmVhbSBpbmRleCAlZCIsIHN0cmVhbV9pbmRleCk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgZ19vYmplY3Rfc2V0IChHX09CSkVDVCAoc2VsZi0+cGxheWJpbiksICJjdXJyZW50LXZpZGVvIiwgc3RyZWFtX2luZGV4LCBOVUxMKTsKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInNldCBzdHJlYW0gaW5kZXggJyVkJyIsIHN0cmVhbV9pbmRleCk7CisgIHJldHVybiBUUlVFOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICogQHN0cmVhbV9pbmRleDogc3RyZWFtIGluZGV4CisgKgorICogUmV0dXJuczogJVRSVUUgb3IgJUZBTFNFCisgKgorICogU2V0cyB0aGUgc3VidGl0bGUgc3RyYWNrIEBzdHJlYW1faW5kZXguCisgKi8KK2dib29sZWFuCitnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFjayAoR3N0UGxheWVyICogc2VsZiwgZ2ludCBzdHJlYW1faW5kZXgpCit7CisgIEdzdFBsYXllclN0cmVhbUluZm8gKmluZm87CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCAwKTsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgaW5mbyA9IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZmluZCAoc2VsZi0+bWVkaWFfaW5mbywKKyAgICAgIEdTVF9UWVBFX1BMQVlFUl9TVUJUSVRMRV9JTkZPLCBzdHJlYW1faW5kZXgpOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICBpZiAoIWluZm8pIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiaW52YWxpZCBzdWJ0aXRsZSBzdHJlYW0gaW5kZXggJWQiLCBzdHJlYW1faW5kZXgpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGdfb2JqZWN0X3NldCAoR19PQkpFQ1QgKHNlbGYtPnBsYXliaW4pLCAiY3VycmVudC10ZXh0Iiwgc3RyZWFtX2luZGV4LCBOVUxMKTsKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInNldCBzdHJlYW0gaW5kZXggJyVkJyIsIHN0cmVhbV9pbmRleCk7CisgIHJldHVybiBUUlVFOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrX2VuYWJsZWQ6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKiBAZW5hYmxlZDogVFJVRSBvciBGQUxTRQorICoKKyAqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBjdXJyZW50IGF1ZGlvIHRyYWNrLgorICovCit2b2lkCitnc3RfcGxheWVyX3NldF9hdWRpb190cmFja19lbmFibGVkIChHc3RQbGF5ZXIgKiBzZWxmLCBnYm9vbGVhbiBlbmFibGVkKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSk7CisKKyAgaWYgKGVuYWJsZWQpCisgICAgcGxheWVyX3NldF9mbGFnIChzZWxmLCBHU1RfUExBWV9GTEFHX0FVRElPKTsKKyAgZWxzZQorICAgIHBsYXllcl9jbGVhcl9mbGFnIChzZWxmLCBHU1RfUExBWV9GTEFHX0FVRElPKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAidHJhY2sgaXMgJyVzJyIsIGVuYWJsZWQgPyAiRW5hYmxlZCIgOiAiRGlzYWJsZWQiKTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NldF92aWRlb190cmFja19lbmFibGVkOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICogQGVuYWJsZWQ6IFRSVUUgb3IgRkFMU0UKKyAqCisgKiBFbmFibGUgb3IgZGlzYWJsZSB0aGUgY3VycmVudCB2aWRlbyB0cmFjay4KKyAqLwordm9pZAorZ3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2tfZW5hYmxlZCAoR3N0UGxheWVyICogc2VsZiwgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZikpOworCisgIGlmIChlbmFibGVkKQorICAgIHBsYXllcl9zZXRfZmxhZyAoc2VsZiwgR1NUX1BMQVlfRkxBR19WSURFTyk7CisgIGVsc2UKKyAgICBwbGF5ZXJfY2xlYXJfZmxhZyAoc2VsZiwgR1NUX1BMQVlfRkxBR19WSURFTyk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInRyYWNrIGlzICclcyciLCBlbmFibGVkID8gIkVuYWJsZWQiIDogIkRpc2FibGVkIik7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2tfZW5hYmxlZDoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEBlbmFibGVkOiBUUlVFIG9yIEZBTFNFCisgKgorICogRW5hYmxlIG9yIGRpc2FibGUgdGhlIGN1cnJlbnQgc3VidGl0bGUgdHJhY2suCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrX2VuYWJsZWQgKEdzdFBsYXllciAqIHNlbGYsIGdib29sZWFuIGVuYWJsZWQpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpKTsKKworICBpZiAoZW5hYmxlZCkKKyAgICBwbGF5ZXJfc2V0X2ZsYWcgKHNlbGYsIEdTVF9QTEFZX0ZMQUdfU1VCVElUTEUpOworICBlbHNlCisgICAgcGxheWVyX2NsZWFyX2ZsYWcgKHNlbGYsIEdTVF9QTEFZX0ZMQUdfU1VCVElUTEUpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJ0cmFjayBpcyAnJXMnIiwgZW5hYmxlZCA/ICJFbmFibGVkIiA6ICJEaXNhYmxlZCIpOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3VyaToKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEB1cmk6IHN1YnRpdGxlIFVSSQorICoKKyAqIFJldHVybnM6ICVUUlVFIG9yICVGQUxTRQorICoKKyAqIFNldHMgdGhlIGV4dGVybmFsIHN1YnRpdGxlIFVSSS4KKyAqLworZ2Jvb2xlYW4KK2dzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3VyaSAoR3N0UGxheWVyICogc2VsZiwgY29uc3QgZ2NoYXIgKiBzdWJ1cmkpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgRkFMU0UpOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBnX2ZyZWUgKHNlbGYtPnN1YnVyaSk7CisgIHNlbGYtPnN1YnVyaSA9IGdfc3RyZHVwIChzdWJ1cmkpOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIGdzdF9wbGF5ZXJfc2V0X3N1YnVyaV9pbnRlcm5hbCAoc2VsZik7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfdXJpOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICoKKyAqIGN1cnJlbnQgc3VidGl0bGUgVVJJCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBVUkkgb2YgdGhlIGN1cnJlbnQgZXh0ZXJuYWwgc3VidGl0bGUuCisgKiAgIGdfZnJlZSgpIGFmdGVyIHVzYWdlLgorICovCitnY2hhciAqCitnc3RfcGxheWVyX2dldF9zdWJ0aXRsZV91cmkgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGdjaGFyICp2YWwgPSBOVUxMOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgTlVMTCk7CisKKyAgZ19vYmplY3RfZ2V0IChzZWxmLCAic3VidXJpIiwgJnZhbCwgTlVMTCk7CisKKyAgcmV0dXJuIHZhbDsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NldF92aXN1YWxpemF0aW9uOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICogQG5hbWU6IHZpc3VhbGl6YXRpb24gZWxlbWVudCBvYnRhaW5lZCBmcm9tCisgKiAjZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19nZXQoKQorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHRoZSB2aXN1YWxpemF0aW9ucyB3YXMgc2V0IGNvcnJlY3RseS4gT3RoZXJ3aXNlLAorICogJUZBTFNFLgorICovCitnYm9vbGVhbgorZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbiAoR3N0UGxheWVyICogc2VsZiwgY29uc3QgZ2NoYXIgKiBuYW1lKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZiksIEZBTFNFKTsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgaWYgKHNlbGYtPmN1cnJlbnRfdmlzX2VsZW1lbnQpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzZWxmLT5jdXJyZW50X3Zpc19lbGVtZW50KTsKKyAgICBzZWxmLT5jdXJyZW50X3Zpc19lbGVtZW50ID0gTlVMTDsKKyAgfQorCisgIGlmIChuYW1lKSB7CisgICAgc2VsZi0+Y3VycmVudF92aXNfZWxlbWVudCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAobmFtZSwgTlVMTCk7CisgICAgaWYgKCFzZWxmLT5jdXJyZW50X3Zpc19lbGVtZW50KQorICAgICAgZ290byBlcnJvcl9ub19lbGVtZW50OworICAgIGdzdF9vYmplY3RfcmVmX3NpbmsgKHNlbGYtPmN1cnJlbnRfdmlzX2VsZW1lbnQpOworICB9CisgIGdfb2JqZWN0X3NldCAoc2VsZi0+cGxheWJpbiwgInZpcy1wbHVnaW4iLCBzZWxmLT5jdXJyZW50X3Zpc19lbGVtZW50LCBOVUxMKTsKKworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAic2V0IHZpcy1wbHVnaW4gdG8gJyVzJyIsIG5hbWUpOworCisgIHJldHVybiBUUlVFOworCitlcnJvcl9ub19lbGVtZW50OgorICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICBHU1RfV0FSTklOR19PQkpFQ1QgKHNlbGYsICJjb3VsZCBub3QgZmluZCB2aXN1YWxpemF0aW9uICclcyciLCBuYW1lKTsKKyAgcmV0dXJuIEZBTFNFOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlzdWFsaXphdGlvbjoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IE5hbWUgb2YgdGhlIGN1cnJlbnRseSBlbmFibGVkIHZpc3VhbGl6YXRpb24uCisgKiAgIGdfZnJlZSgpIGFmdGVyIHVzYWdlLgorICovCitnY2hhciAqCitnc3RfcGxheWVyX2dldF9jdXJyZW50X3Zpc3VhbGl6YXRpb24gKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGdjaGFyICpuYW1lID0gTlVMTDsKKyAgR3N0RWxlbWVudCAqdmlzX3BsdWdpbiA9IE5VTEw7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBOVUxMKTsKKworICBpZiAoIWlzX3RyYWNrX2VuYWJsZWQgKHNlbGYsIEdTVF9QTEFZX0ZMQUdfVklTKSkKKyAgICByZXR1cm4gTlVMTDsKKworICBnX29iamVjdF9nZXQgKHNlbGYtPnBsYXliaW4sICJ2aXMtcGx1Z2luIiwgJnZpc19wbHVnaW4sIE5VTEwpOworCisgIGlmICh2aXNfcGx1Z2luKSB7CisgICAgR3N0RWxlbWVudEZhY3RvcnkgKmZhY3RvcnkgPSBnc3RfZWxlbWVudF9nZXRfZmFjdG9yeSAodmlzX3BsdWdpbik7CisgICAgaWYgKGZhY3RvcnkpCisgICAgICBuYW1lID0gZ19zdHJkdXAgKGdzdF9wbHVnaW5fZmVhdHVyZV9nZXRfbmFtZSAoZmFjdG9yeSkpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHZpc19wbHVnaW4pOworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInZpcy1wbHVnaW4gJyVzJyAlcCIsIG5hbWUsIHZpc19wbHVnaW4pOworCisgIHJldHVybiBuYW1lOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZDoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEBlbmFibGVkOiBUUlVFIG9yIEZBTFNFCisgKgorICogRW5hYmxlIG9yIGRpc2FibGUgdGhlIHZpc3VhbGl6YXRpb24uCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZCAoR3N0UGxheWVyICogc2VsZiwgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZikpOworCisgIGlmIChlbmFibGVkKQorICAgIHBsYXllcl9zZXRfZmxhZyAoc2VsZiwgR1NUX1BMQVlfRkxBR19WSVMpOworICBlbHNlCisgICAgcGxheWVyX2NsZWFyX2ZsYWcgKHNlbGYsIEdTVF9QTEFZX0ZMQUdfVklTKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAidmlzdWFsaXphdGlvbiBpcyAnJXMnIiwKKyAgICAgIGVuYWJsZWQgPyAiRW5hYmxlZCIgOiAiRGlzYWJsZWQiKTsKK30KKworc3RydWN0IENCQ2hhbm5lbE1hcAoreworICBjb25zdCBnY2hhciAqbGFiZWw7ICAgICAgICAgICAvKiBjaGFubmVsIGxhYmVsIG5hbWUgKi8KKyAgY29uc3QgZ2NoYXIgKm5hbWU7ICAgICAgICAgICAgLyogZ2V0X25hbWUgKCkgKi8KK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ0JDaGFubmVsTWFwIGNiX2NoYW5uZWxfbWFwW10gPSB7CisgIC8qIEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9CUklHSFRORVNTICovIHsiQlJJR0hUTkVTUyIsICJicmlnaHRuZXNzIn0sCisgIC8qIEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9DT05UUkFTVCAgICovIHsiQ09OVFJBU1QiLCAiY29udHJhc3QifSwKKyAgLyogR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX1NBVFVSQVRJT04gKi8geyJTQVRVUkFUSU9OIiwgInNhdHVyYXRpb24ifSwKKyAgLyogR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0hVRSAgICAgICAgKi8geyJIVUUiLCAiaHVlIn0sCit9OworCitzdGF0aWMgR3N0Q29sb3JCYWxhbmNlQ2hhbm5lbCAqCitnc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfZmluZF9jaGFubmVsIChHc3RQbGF5ZXIgKiBzZWxmLAorICAgIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUgdHlwZSkKK3sKKyAgR3N0Q29sb3JCYWxhbmNlQ2hhbm5lbCAqY2hhbm5lbDsKKyAgY29uc3QgR0xpc3QgKmwsICpjaGFubmVsczsKKworICBpZiAodHlwZSA8IEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9CUklHSFRORVNTIHx8CisgICAgICB0eXBlID4gR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0hVRSkKKyAgICByZXR1cm4gTlVMTDsKKworICBjaGFubmVscyA9CisgICAgICBnc3RfY29sb3JfYmFsYW5jZV9saXN0X2NoYW5uZWxzIChHU1RfQ09MT1JfQkFMQU5DRSAoc2VsZi0+cGxheWJpbikpOworICBmb3IgKGwgPSBjaGFubmVsczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICBjaGFubmVsID0gbC0+ZGF0YTsKKyAgICBpZiAoZ19zdHJyc3RyIChjaGFubmVsLT5sYWJlbCwgY2JfY2hhbm5lbF9tYXBbdHlwZV0ubGFiZWwpKQorICAgICAgcmV0dXJuIGNoYW5uZWw7CisgIH0KKworICByZXR1cm4gTlVMTDsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX2hhc19jb2xvcl9iYWxhbmNlOgorICogQHBsYXllcjojR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogQ2hlY2tzIHdoZXRoZXIgdGhlIEBwbGF5ZXIgaGFzIGNvbG9yIGJhbGFuY2Ugc3VwcG9ydCBhdmFpbGFibGUuCisgKgorICogUmV0dXJuczogJVRSVUUgaWYgQHBsYXllciBoYXMgY29sb3IgYmFsYW5jZSBzdXBwb3J0LiBPdGhlcndpc2UsCisgKiAgICVGQUxTRS4KKyAqLworZ2Jvb2xlYW4KK2dzdF9wbGF5ZXJfaGFzX2NvbG9yX2JhbGFuY2UgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGNvbnN0IEdMaXN0ICpjaGFubmVsczsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZiksIEZBTFNFKTsKKworICBpZiAoIUdTVF9JU19DT0xPUl9CQUxBTkNFIChzZWxmLT5wbGF5YmluKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgY2hhbm5lbHMgPQorICAgICAgZ3N0X2NvbG9yX2JhbGFuY2VfbGlzdF9jaGFubmVscyAoR1NUX0NPTE9SX0JBTEFOQ0UgKHNlbGYtPnBsYXliaW4pKTsKKyAgcmV0dXJuIChjaGFubmVscyAhPSBOVUxMKTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NldF9jb2xvcl9iYWxhbmNlOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICogQHR5cGU6ICNHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlCisgKiBAdmFsdWU6IFRoZSBuZXcgdmFsdWUgZm9yIHRoZSBAdHlwZSwgcmFuZ2VkIFswLDFdCisgKgorICogU2V0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5kaWNhdGVkIGNoYW5uZWwgQHR5cGUgdG8gdGhlIHBhc3NlZAorICogdmFsdWUuCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfc2V0X2NvbG9yX2JhbGFuY2UgKEdzdFBsYXllciAqIHNlbGYsIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUgdHlwZSwKKyAgICBnZG91YmxlIHZhbHVlKQoreworICBHc3RDb2xvckJhbGFuY2VDaGFubmVsICpjaGFubmVsOworICBnZG91YmxlIG5ld192YWw7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZikpOworICBnX3JldHVybl9pZl9mYWlsICh2YWx1ZSA+PSAwLjAgJiYgdmFsdWUgPD0gMS4wKTsKKworICBpZiAoIUdTVF9JU19DT0xPUl9CQUxBTkNFIChzZWxmLT5wbGF5YmluKSkKKyAgICByZXR1cm47CisKKyAgY2hhbm5lbCA9IGdzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV9maW5kX2NoYW5uZWwgKHNlbGYsIHR5cGUpOworICBpZiAoIWNoYW5uZWwpCisgICAgcmV0dXJuOworCisgIHZhbHVlID0gQ0xBTVAgKHZhbHVlLCAwLjAsIDEuMCk7CisKKyAgLyogQ29udmVydCB0byBjaGFubmVsIHJhbmdlICovCisgIG5ld192YWwgPSBjaGFubmVsLT5taW5fdmFsdWUgKyB2YWx1ZSAqICgoZ2RvdWJsZSkgY2hhbm5lbC0+bWF4X3ZhbHVlIC0KKyAgICAgIChnZG91YmxlKSBjaGFubmVsLT5taW5fdmFsdWUpOworCisgIGdzdF9jb2xvcl9iYWxhbmNlX3NldF92YWx1ZSAoR1NUX0NPTE9SX0JBTEFOQ0UgKHNlbGYtPnBsYXliaW4pLCBjaGFubmVsLAorICAgICAgbmV3X3ZhbCk7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfY29sb3JfYmFsYW5jZToKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEB0eXBlOiAjR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZQorICoKKyAqIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpbmRpY2F0ZWQgQHR5cGUuCisgKgorICogUmV0dXJuczogVGhlIGN1cnJlbnQgdmFsdWUgb2YgQHR5cGUsIGJldHdlZW4gWzAsMV0uIEluIGNhc2Ugb2YKKyAqICAgZXJyb3IgLTEgaXMgcmV0dXJuZWQuCisgKi8KK2dkb3VibGUKK2dzdF9wbGF5ZXJfZ2V0X2NvbG9yX2JhbGFuY2UgKEdzdFBsYXllciAqIHNlbGYsIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUgdHlwZSkKK3sKKyAgR3N0Q29sb3JCYWxhbmNlQ2hhbm5lbCAqY2hhbm5lbDsKKyAgZ2ludCB2YWx1ZTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZiksIC0xKTsKKworICBpZiAoIUdTVF9JU19DT0xPUl9CQUxBTkNFIChzZWxmLT5wbGF5YmluKSkKKyAgICByZXR1cm4gLTE7CisKKyAgY2hhbm5lbCA9IGdzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV9maW5kX2NoYW5uZWwgKHNlbGYsIHR5cGUpOworICBpZiAoIWNoYW5uZWwpCisgICAgcmV0dXJuIC0xOworCisgIHZhbHVlID0gZ3N0X2NvbG9yX2JhbGFuY2VfZ2V0X3ZhbHVlIChHU1RfQ09MT1JfQkFMQU5DRSAoc2VsZi0+cGxheWJpbiksCisgICAgICBjaGFubmVsKTsKKworICByZXR1cm4gKChnZG91YmxlKSB2YWx1ZSAtCisgICAgICAoZ2RvdWJsZSkgY2hhbm5lbC0+bWluX3ZhbHVlKSAvICgoZ2RvdWJsZSkgY2hhbm5lbC0+bWF4X3ZhbHVlIC0KKyAgICAgIChnZG91YmxlKSBjaGFubmVsLT5taW5fdmFsdWUpOworfQorCisjZGVmaW5lIENfRU5VTSh2KSAoKGdpbnQpIHYpCisjZGVmaW5lIENfRkxBR1ModikgKChndWludCkgdikKKworR1R5cGUKK2dzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV90eXBlX2dldF90eXBlICh2b2lkKQoreworICBzdGF0aWMgZ3NpemUgaWQgPSAwOworICBzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSB2YWx1ZXNbXSA9IHsKKyAgICB7Q19FTlVNIChHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfSFVFKSwgIkdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9IVUUiLAorICAgICAgICAiaHVlIn0sCisgICAge0NfRU5VTSAoR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0JSSUdIVE5FU1MpLAorICAgICAgICAiR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0JSSUdIVE5FU1MiLCAiYnJpZ2h0bmVzcyJ9LAorICAgIHtDX0VOVU0gKEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9TQVRVUkFUSU9OKSwKKyAgICAgICAgIkdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9TQVRVUkFUSU9OIiwgInNhdHVyYXRpb24ifSwKKyAgICB7Q19FTlVNIChHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfQ09OVFJBU1QpLAorICAgICAgICAiR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0NPTlRSQVNUIiwgImNvbnRyYXN0In0sCisgICAgezAsIE5VTEwsIE5VTEx9CisgIH07CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmaWQpKSB7CisgICAgR1R5cGUgdG1wID0gZ19lbnVtX3JlZ2lzdGVyX3N0YXRpYyAoIkdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiLCB2YWx1ZXMpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmaWQsIHRtcCk7CisgIH0KKworICByZXR1cm4gKEdUeXBlKSBpZDsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfdHlwZV9nZXRfbmFtZToKKyAqIEB0eXBlOiBhICNHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlCisgKgorICogR2V0cyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGdpdmVuIGNvbG9yIGJhbGFuY2UgdHlwZS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IGEgc3RyaW5nIHdpdGggdGhlIG5hbWUgb2YgdGhlIGNvbG9yCisgKiAgIGJhbGFuY2UgdHlwZS4KKyAqLworY29uc3QgZ2NoYXIgKgorZ3N0X3BsYXllcl9jb2xvcl9iYWxhbmNlX3R5cGVfZ2V0X25hbWUgKEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUgdHlwZSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHR5cGUgPj0gR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0JSSUdIVE5FU1MgJiYKKyAgICAgIHR5cGUgPD0gR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0hVRSwgTlVMTCk7CisKKyAgcmV0dXJuIGNiX2NoYW5uZWxfbWFwW3R5cGVdLm5hbWU7Cit9CisKK0dUeXBlCitnc3RfcGxheWVyX3N0YXRlX2dldF90eXBlICh2b2lkKQoreworICBzdGF0aWMgZ3NpemUgaWQgPSAwOworICBzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSB2YWx1ZXNbXSA9IHsKKyAgICB7Q19FTlVNIChHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQpLCAiR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEIiwgInN0b3BwZWQifSwKKyAgICB7Q19FTlVNIChHU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORyksICJHU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORyIsCisgICAgICAgICJidWZmZXJpbmcifSwKKyAgICB7Q19FTlVNIChHU1RfUExBWUVSX1NUQVRFX1BBVVNFRCksICJHU1RfUExBWUVSX1NUQVRFX1BBVVNFRCIsICJwYXVzZWQifSwKKyAgICB7Q19FTlVNIChHU1RfUExBWUVSX1NUQVRFX1BMQVlJTkcpLCAiR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HIiwgInBsYXlpbmcifSwKKyAgICB7MCwgTlVMTCwgTlVMTH0KKyAgfTsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZpZCkpIHsKKyAgICBHVHlwZSB0bXAgPSBnX2VudW1fcmVnaXN0ZXJfc3RhdGljICgiR3N0UGxheWVyU3RhdGUiLCB2YWx1ZXMpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmaWQsIHRtcCk7CisgIH0KKworICByZXR1cm4gKEdUeXBlKSBpZDsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3N0YXRlX2dldF9uYW1lOgorICogQHN0YXRlOiBhICNHc3RQbGF5ZXJTdGF0ZQorICoKKyAqIEdldHMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiBzdGF0ZS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IGEgc3RyaW5nIHdpdGggdGhlIG5hbWUgb2YgdGhlIHN0YXRlLgorICovCitjb25zdCBnY2hhciAqCitnc3RfcGxheWVyX3N0YXRlX2dldF9uYW1lIChHc3RQbGF5ZXJTdGF0ZSBzdGF0ZSkKK3sKKyAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEOgorICAgICAgcmV0dXJuICJzdG9wcGVkIjsKKyAgICBjYXNlIEdTVF9QTEFZRVJfU1RBVEVfQlVGRkVSSU5HOgorICAgICAgcmV0dXJuICJidWZmZXJpbmciOworICAgIGNhc2UgR1NUX1BMQVlFUl9TVEFURV9QQVVTRUQ6CisgICAgICByZXR1cm4gInBhdXNlZCI7CisgICAgY2FzZSBHU1RfUExBWUVSX1NUQVRFX1BMQVlJTkc6CisgICAgICByZXR1cm4gInBsYXlpbmciOworICB9CisKKyAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgIHJldHVybiBOVUxMOworfQorCitHVHlwZQorZ3N0X3BsYXllcl9lcnJvcl9nZXRfdHlwZSAodm9pZCkKK3sKKyAgc3RhdGljIGdzaXplIGlkID0gMDsKKyAgc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgdmFsdWVzW10gPSB7CisgICAge0NfRU5VTSAoR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQpLCAiR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQiLCAiZmFpbGVkIn0sCisgICAgezAsIE5VTEwsIE5VTEx9CisgIH07CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmaWQpKSB7CisgICAgR1R5cGUgdG1wID0gZ19lbnVtX3JlZ2lzdGVyX3N0YXRpYyAoIkdzdFBsYXllckVycm9yIiwgdmFsdWVzKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJmlkLCB0bXApOworICB9CisKKyAgcmV0dXJuIChHVHlwZSkgaWQ7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9lcnJvcl9nZXRfbmFtZToKKyAqIEBlcnJvcjogYSAjR3N0UGxheWVyRXJyb3IKKyAqCisgKiBHZXRzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gZXJyb3IuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhIHN0cmluZyB3aXRoIHRoZSBnaXZlbiBlcnJvci4KKyAqLworY29uc3QgZ2NoYXIgKgorZ3N0X3BsYXllcl9lcnJvcl9nZXRfbmFtZSAoR3N0UGxheWVyRXJyb3IgZXJyb3IpCit7CisgIHN3aXRjaCAoZXJyb3IpIHsKKyAgICBjYXNlIEdTVF9QTEFZRVJfRVJST1JfRkFJTEVEOgorICAgICAgcmV0dXJuICJmYWlsZWQiOworICB9CisKKyAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgIHJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaCBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM5MWIwZgotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmgKQEAgLTAsMCArMSwxODMgQEAKKy8qIEdTdHJlYW1lcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9QTEFZRVJfSF9fCisjZGVmaW5lIF9fR1NUX1BMQVlFUl9IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvcGxheWVyL2dzdHBsYXllci10eXBlcy5oPgorI2luY2x1ZGUgPGdzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8Z3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuaD4KKyNpbmNsdWRlIDxnc3QvcGxheWVyL2dzdHBsYXllci1tZWRpYS1pbmZvLmg+CisKK0dfQkVHSU5fREVDTFMKKworR1R5cGUgICAgICAgIGdzdF9wbGF5ZXJfc3RhdGVfZ2V0X3R5cGUgICAgICAgICAgICAgICAgKHZvaWQpOworI2RlZmluZSAgICAgIEdTVF9UWVBFX1BMQVlFUl9TVEFURSAgICAgICAgICAgICAgICAgICAgKGdzdF9wbGF5ZXJfc3RhdGVfZ2V0X3R5cGUgKCkpCisKKy8qKgorICogR3N0UGxheWVyU3RhdGU6CisgKiBAR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEOiB0aGUgcGxheWVyIGlzIHN0b3BwZWQuCisgKiBAR1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkc6IHRoZSBwbGF5ZXIgaXMgYnVmZmVyaW5nLgorICogQEdTVF9QTEFZRVJfU1RBVEVfUEFVU0VEOiB0aGUgcGxheWVyIGlzIHBhdXNlZC4KKyAqIEBHU1RfUExBWUVSX1NUQVRFX1BMQVlJTkc6IHRoZSBwbGF5ZXIgaXMgY3VycmVudGx5IHBsYXlpbmcgYQorICogc3RyZWFtLgorICovCit0eXBlZGVmIGVudW0KK3sKKyAgR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVELAorICBHU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORywKKyAgR1NUX1BMQVlFUl9TVEFURV9QQVVTRUQsCisgIEdTVF9QTEFZRVJfU1RBVEVfUExBWUlORworfSBHc3RQbGF5ZXJTdGF0ZTsKKworY29uc3QgZ2NoYXIgKmdzdF9wbGF5ZXJfc3RhdGVfZ2V0X25hbWUgICAgICAgICAgICAgICAgKEdzdFBsYXllclN0YXRlIHN0YXRlKTsKKworR1F1YXJrICAgICAgIGdzdF9wbGF5ZXJfZXJyb3JfcXVhcmsgICAgICAgICAgICAgICAgICAgKHZvaWQpOworR1R5cGUgICAgICAgIGdzdF9wbGF5ZXJfZXJyb3JfZ2V0X3R5cGUgICAgICAgICAgICAgICAgKHZvaWQpOworI2RlZmluZSAgICAgIEdTVF9QTEFZRVJfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgKGdzdF9wbGF5ZXJfZXJyb3JfcXVhcmsgKCkpCisjZGVmaW5lICAgICAgR1NUX1RZUEVfUExBWUVSX0VSUk9SICAgICAgICAgICAgICAgICAgICAoZ3N0X3BsYXllcl9lcnJvcl9nZXRfdHlwZSAoKSkKKworLyoqCisgKiBHc3RQbGF5ZXJFcnJvcjoKKyAqIEBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRDogZ2VuZXJpYyBlcnJvci4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQgPSAwCit9IEdzdFBsYXllckVycm9yOworCitjb25zdCBnY2hhciAqZ3N0X3BsYXllcl9lcnJvcl9nZXRfbmFtZSAgICAgICAgICAgICAgICAoR3N0UGxheWVyRXJyb3IgZXJyb3IpOworCitHVHlwZSBnc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfdHlwZV9nZXRfdHlwZSAgICAgICAgICAodm9pZCk7CisjZGVmaW5lIEdTVF9UWVBFX1BMQVlFUl9DT0xPUl9CQUxBTkNFX1RZUEUgICAgICAgICAgICAoZ3N0X3BsYXllcl9jb2xvcl9iYWxhbmNlX3R5cGVfZ2V0X3R5cGUgKCkpCisKKy8qKgorICogR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZToKKyAqIEBHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfQlJJR0hUTkVTUzogYnJpZ2h0bmVzcyBvciBibGFjayBsZXZlbC4KKyAqIEBHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfQ09OVFJBU1Q6IGNvbnRyYXN0IG9yIGx1bWEgZ2Fpbi4KKyAqIEBHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfU0FUVVJBVElPTjogY29sb3Igc2F0dXJhdGlvbiBvciBjaHJvbWEKKyAqIGdhaW4uCisgKiBAR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0hVRTogaHVlIG9yIGNvbG9yIGJhbGFuY2UuCisgKi8KK3R5cGVkZWYgZW51bQoreworICBHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfQlJJR0hUTkVTUywKKyAgR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0NPTlRSQVNULAorICBHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfU0FUVVJBVElPTiwKKyAgR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0hVRSwKK30gR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZTsKKworY29uc3QgZ2NoYXIgKmdzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV90eXBlX2dldF9uYW1lICAgKEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUgdHlwZSk7CisKKyNkZWZpbmUgR1NUX1RZUEVfUExBWUVSICAgICAgICAgICAgIChnc3RfcGxheWVyX2dldF90eXBlICgpKQorI2RlZmluZSBHU1RfSVNfUExBWUVSKG9iaikgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfUExBWUVSKSkKKyNkZWZpbmUgR1NUX0lTX1BMQVlFUl9DTEFTUyhrbGFzcykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfUExBWUVSKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9HRVRfQ0xBU1Mob2JqKSAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgR1NUX1RZUEVfUExBWUVSLCBHc3RQbGF5ZXJDbGFzcykpCisjZGVmaW5lIEdTVF9QTEFZRVIob2JqKSAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9QTEFZRVIsIEdzdFBsYXllcikpCisjZGVmaW5lIEdTVF9QTEFZRVJfQ0xBU1Moa2xhc3MpICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX1BMQVlFUiwgR3N0UGxheWVyQ2xhc3MpKQorI2RlZmluZSBHU1RfUExBWUVSX0NBU1Qob2JqKSAgICAgICAgKChHc3RQbGF5ZXIqKShvYmopKQorCisKK0dUeXBlICAgICAgICBnc3RfcGxheWVyX2dldF90eXBlICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKKworR3N0UGxheWVyICogIGdzdF9wbGF5ZXJfbmV3ICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllclZpZGVvUmVuZGVyZXIgKiB2aWRlb19yZW5kZXJlciwgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciAqIHNpZ25hbF9kaXNwYXRjaGVyKTsKKwordm9pZCAgICAgICAgIGdzdF9wbGF5ZXJfcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7Cit2b2lkICAgICAgICAgZ3N0X3BsYXllcl9wYXVzZSAgICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKK3ZvaWQgICAgICAgICBnc3RfcGxheWVyX3N0b3AgICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOworCit2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zZWVrICAgICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENsb2NrVGltZSAgIHBvc2l0aW9uKTsKK3ZvaWQgICAgICAgICBnc3RfcGxheWVyX3NldF9yYXRlICAgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAgICAgcmF0ZSk7CitnZG91YmxlICAgICAgZ3N0X3BsYXllcl9nZXRfcmF0ZSAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKKwordm9pZCAgICAgICAgIGdzdF9wbGF5ZXJfc2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbCAgKEdzdFBsYXllciAgICAqIHBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICBpbnRlcnZhbCk7CitndWludCAgICAgICAgZ3N0X3BsYXllcl9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKKworZ2NoYXIgKiAgICAgIGdzdF9wbGF5ZXJfZ2V0X3VyaSAgICAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7Cit2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zZXRfdXJpICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAqIHVyaSk7CisKK0dzdENsb2NrVGltZSBnc3RfcGxheWVyX2dldF9wb3NpdGlvbiAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOworR3N0Q2xvY2tUaW1lIGdzdF9wbGF5ZXJfZ2V0X2R1cmF0aW9uICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7CisKK2dkb3VibGUgICAgICBnc3RfcGxheWVyX2dldF92b2x1bWUgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOwordm9pZCAgICAgICAgIGdzdF9wbGF5ZXJfc2V0X3ZvbHVtZSAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlICAgICAgICB2YWwpOworCitnYm9vbGVhbiAgICAgZ3N0X3BsYXllcl9nZXRfbXV0ZSAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKK3ZvaWQgICAgICAgICBnc3RfcGxheWVyX3NldF9tdXRlICAgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgdmFsKTsKKworR3N0RWxlbWVudCAqIGdzdF9wbGF5ZXJfZ2V0X3BpcGVsaW5lICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7CisKK3ZvaWQgICAgICAgICBnc3RfcGxheWVyX3NldF92aWRlb190cmFja19lbmFibGVkICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK3ZvaWQgICAgICAgICBnc3RfcGxheWVyX3NldF9hdWRpb190cmFja19lbmFibGVkICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK3ZvaWQgICAgICAgICBnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFja19lbmFibGVkICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gZW5hYmxlZCk7CisKK2dib29sZWFuICAgICBnc3RfcGxheWVyX3NldF9hdWRpb190cmFjayAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKnBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IHN0cmVhbV9pbmRleCk7CisKK2dib29sZWFuICAgICBnc3RfcGxheWVyX3NldF92aWRlb190cmFjayAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKnBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IHN0cmVhbV9pbmRleCk7CisKK2dib29sZWFuICAgICBnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFjayAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKnBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IHN0cmVhbV9pbmRleCk7CisKK0dzdFBsYXllck1lZGlhSW5mbyAqIGdzdF9wbGF5ZXJfZ2V0X21lZGlhX2luZm8gICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOworCitHc3RQbGF5ZXJBdWRpb0luZm8gKiBnc3RfcGxheWVyX2dldF9jdXJyZW50X2F1ZGlvX3RyYWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKKworR3N0UGxheWVyVmlkZW9JbmZvICogZ3N0X3BsYXllcl9nZXRfY3VycmVudF92aWRlb190cmFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7CisKK0dzdFBsYXllclN1YnRpdGxlSW5mbyAqIGdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfc3VidGl0bGVfdHJhY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOworCitnYm9vbGVhbiAgICAgZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdXJpICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICp1cmkpOworZ2NoYXIgKiAgICAgIGdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3VyaSAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7CisKK2dib29sZWFuICAgICBnc3RfcGxheWVyX3NldF92aXN1YWxpemF0aW9uICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKm5hbWUpOworCit2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbl9lbmFibGVkICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitnY2hhciAqICAgICAgZ3N0X3BsYXllcl9nZXRfY3VycmVudF92aXN1YWxpemF0aW9uICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKKworZ2Jvb2xlYW4gICAgIGdzdF9wbGF5ZXJfaGFzX2NvbG9yX2JhbGFuY2UgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7Cit2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zZXRfY29sb3JfYmFsYW5jZSAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlIHZhbHVlKTsKK2dkb3VibGUgICAgICBnc3RfcGxheWVyX2dldF9jb2xvcl9iYWxhbmNlICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZSB0eXBlKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX1BMQVlFUl9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wbGF5ZXIvcGxheWVyLmggYi9nc3QtbGlicy9nc3QvcGxheWVyL3BsYXllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYzkxZDYKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL3BsYXllci5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qIEdTdHJlYW1lcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19QTEFZRVJfSF9fCisjZGVmaW5lIF9fUExBWUVSX0hfXworCisjaW5jbHVkZSA8Z3N0L3BsYXllci9nc3RwbGF5ZXIuaD4KKyNpbmNsdWRlIDxnc3QvcGxheWVyL2dzdHBsYXllci1tZWRpYS1pbmZvLmg+CisjaW5jbHVkZSA8Z3N0L3BsYXllci9nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDxnc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmg+CisjaW5jbHVkZSA8Z3N0L3BsYXllci9nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5oPgorCisjZW5kaWYgLyogX19QTEFZRVJfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL01ha2VmaWxlLmluCmluZGV4IDRmYjVkYTguLmM3MWZhZTkgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtIFwKQEAgLTI2Miw2ICsyNjEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI5OSw2ICszMDAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMwNyw3ICszMTAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMjYsOCArMzI4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM0NCwxNiArMzQ3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM3OSw2ICszODMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MDQsNiArNDEwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTA1LDYgKzUxMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MTgsOCArNTI3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTM1LDYgKzU0Miw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01OTIsMTYgKzYwMSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY1Myw2ICs2NjQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjYzLDYgKzY3NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY3Miw2ICs2ODUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzA5LDcgKzcyNCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCmluZGV4IDUxMDgyODEuLjZjZGFkNmYgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQorKysgYi9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KQEAgLTIzLDQgKzIzLDUgQEAKIAogbGliZ3N0YmFkdmlkZW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUyA9ICQoR1NUX0xJQl9MREZMQUdTKSAkKEdTVF9BTExfTERGTEFHUykgJChHU1RfTFRfTERGTEFHUykKIAotbm9pbnN0X0hFQURFUlMgPSBnc3R2aWRlb2FnZ3JlZ2F0b3JwYWQuaCBnc3R2aWRlb2FnZ3JlZ2F0b3IuaAorbGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvZ3N0L3ZpZGVvCitsaWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUyA9IGdzdHZpZGVvYWdncmVnYXRvcnBhZC5oIGdzdHZpZGVvYWdncmVnYXRvci5oCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuaW4KaW5kZXggM2E0YTZkNC4uZGYxMTdmNCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5pbgpAQCAtMTE2LDE5ICsxMTYsMTkgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCi1ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCitESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSBcCisJJChsaWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUykgXAogCSQoYW1fX0RJU1RfQ09NTU9OKQogbWtpbnN0YWxsZGlycyA9ICQoaW5zdGFsbF9zaCkgLWQKIENPTkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmgKQEAgLTE2MSw3ICsxNjEsOCBAQAogICAgIHx8IHsgZWNobyAiICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKICAgICAgICAgICQoYW1fX2NkKSAiJCRkaXIiICYmIHJtIC1mICQkZmlsZXM7IH07IFwKICAgfQotYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGxpYmRpcikiCithbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQobGliZGlyKSIgXAorCSIkKERFU1RESVIpJChsaWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpIgogTFRMSUJSQVJJRVMgPSAkKGxpYl9MVExJQlJBUklFUykKIGFtX19ERVBFTkRFTkNJRVNfMSA9CiBsaWJnc3RiYWR2aWRlb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9ERVBFTkRFTkNJRVMgPSAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2Jhc2UvbGliZ3N0YmFkYmFzZS0kKEdTVF9BUElfVkVSU0lPTikubGEgXApAQCAtMjI1LDI2ICsyMjYsOCBAQAogICAgIG58bm98Tk8pIGZhbHNlOzsgXAogICAgICopIChpbnN0YWxsLWluZm8gLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjE7OyBcCiAgIGVzYWMKLUhFQURFUlMgPSAkKG5vaW5zdF9IRUFERVJTKQorSEVBREVSUyA9ICQobGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMpCiBhbV9fdGFnZ2VkX2ZpbGVzID0gJChIRUFERVJTKSAkKFNPVVJDRVMpICQoVEFHU19GSUxFUykgJChMSVNQKQotIyBSZWFkIGEgbGlzdCBvZiBuZXdsaW5lLXNlcGFyYXRlZCBzdHJpbmdzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0LAotIyBhbmQgcHJpbnQgZWFjaCBvZiB0aGVtIG9uY2UsIHdpdGhvdXQgZHVwbGljYXRlcy4gIElucHV0IG9yZGVyIGlzCi0jICpub3QqIHByZXNlcnZlZC4KLWFtX191bmlxdWlmeV9pbnB1dCA9ICQoQVdLKSAnXAotICBCRUdJTiB7IG5vbmVtcHR5ID0gMDsgfSBcCi0gIHsgaXRlbXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcCi0gIEVORCB7IGlmIChub25lbXB0eSkgeyBmb3IgKGkgaW4gaXRlbXMpIHByaW50IGk7IH07IH0gXAotJwotIyBNYWtlIHN1cmUgdGhlIGxpc3Qgb2Ygc291cmNlcyBpcyB1bmlxdWUuICBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlLAotIyBlLmcuLCB0aGUgc2FtZSBzb3VyY2UgZmlsZSBtaWdodCBiZSBzaGFyZWQgYW1vbmcgX1NPVVJDRVMgdmFyaWFibGVzCi0jIGZvciBkaWZmZXJlbnQgcHJvZ3JhbXMvbGlicmFyaWVzLgotYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyA9IFwKLSAgbGlzdD0nJChhbV9fdGFnZ2VkX2ZpbGVzKSc7IFwKLSAgdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKLSAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsgZmk7IFwKLSAgZG9uZSB8ICQoYW1fX3VuaXF1aWZ5X2lucHV0KWAKLUVUQUdTID0gZXRhZ3MKLUNUQUdTID0gY3RhZ3MKIGFtX19ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9zcmNkaXIpL2RlcGNvbXAKIERJU1RGSUxFUyA9ICQoRElTVF9DT01NT04pICQoRElTVF9TT1VSQ0VTKSAkKFRFWElORk9TKSAkKEVYVFJBX0RJU1QpCiBBQ0xPQ0FMID0gQEFDTE9DQUxACkBAIC0yODIsNiArMjY1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTksNiArMzA0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjcsNyArMzE0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ2LDggKzMzMiw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjQsMTYgKzM1MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTksNiArMzg3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI0LDYgKzQxNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNSw2ICs1MTcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM4LDggKzUzMSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1NSw2ICs1NDYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjEyLDE2ICs2MDUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzMsNiArNjY4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4Myw2ICs2NzksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTIsNiArNjg5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyOSw3ICs3MjgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc5MSw3ICs3ODksOCBAQAogCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChPUkNfTElCUykgJChMSUJNKQogCiBsaWJnc3RiYWR2aWRlb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKSAkKEdTVF9MVF9MREZMQUdTKQotbm9pbnN0X0hFQURFUlMgPSBnc3R2aWRlb2FnZ3JlZ2F0b3JwYWQuaCBnc3R2aWRlb2FnZ3JlZ2F0b3IuaAorbGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvZ3N0L3ZpZGVvCitsaWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUyA9IGdzdHZpZGVvYWdncmVnYXRvcnBhZC5oIGdzdHZpZGVvYWdncmVnYXRvci5oCiBhbGw6IGFsbC1hbQogCiAuU1VGRklYRVM6CkBAIC05MDgsNTggKzkwNywzMyBAQAogCiBjbGVhbi1saWJ0b29sOgogCS1ybSAtcmYgLmxpYnMgX2xpYnMKK2luc3RhbGwtbGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlSEVBREVSUzogJChsaWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUykKKwlAJChOT1JNQUxfSU5TVEFMTCkKKwlAbGlzdD0nJChsaWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUyknOyB0ZXN0IC1uICIkKGxpYmdzdHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpcikiIHx8IGxpc3Q9OyBcCisJaWYgdGVzdCAtbiAiJCRsaXN0IjsgdGhlbiBcCisJICBlY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQobGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSciOyBcCisJICAkKE1LRElSX1ApICIkKERFU1RESVIpJChsaWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpIiB8fCBleGl0IDE7IFwKKwlmaTsgXAorCWZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAiJCRwIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKKwkgIGVjaG8gIiQkZCQkcCI7IFwKKwlkb25lIHwgJChhbV9fYmFzZV9saXN0KSB8IFwKKwl3aGlsZSByZWFkIGZpbGVzOyBkbyBcCisJICBlY2hvICIgJChJTlNUQUxMX0hFQURFUikgJCRmaWxlcyAnJChERVNURElSKSQobGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSciOyBcCisJICAkKElOU1RBTExfSEVBREVSKSAkJGZpbGVzICIkKERFU1RESVIpJChsaWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpIiB8fCBleGl0ICQkPzsgXAorCWRvbmUKIAotSUQ6ICQoYW1fX3RhZ2dlZF9maWxlcykKLQkkKGFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMpOyBta2lkIC1mSUQgJCR1bmlxdWUKLXRhZ3M6IHRhZ3MtYW0KLVRBR1M6IHRhZ3MKK3VuaW5zdGFsbC1saWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTOgorCUAkKE5PUk1BTF9VTklOU1RBTEwpCisJQGxpc3Q9JyQobGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMpJzsgdGVzdCAtbiAiJChsaWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpIiB8fCBsaXN0PTsgXAorCWZpbGVzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRwOyBkb25lIHwgc2VkIC1lICdzfF4uKi98fCdgOyBcCisJZGlyPSckKERFU1RESVIpJChsaWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpJzsgJChhbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyKQordGFncyBUQUdTOgogCi10YWdzLWFtOiAkKFRBR1NfREVQRU5ERU5DSUVTKSAkKGFtX190YWdnZWRfZmlsZXMpCi0Jc2V0IHg7IFwKLQloZXJlPWBwd2RgOyBcCi0JJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgXAotCXNoaWZ0OyBcCi0JaWYgdGVzdCAteiAiJChFVEFHU19BUkdTKSQkKiQkdW5pcXVlIjsgdGhlbiA6OyBlbHNlIFwKLQkgIHRlc3QgLW4gIiQkdW5pcXVlIiB8fCB1bmlxdWU9JCRlbXB0eV9maXg7IFwKLQkgIGlmIHRlc3QgJCQjIC1ndCAwOyB0aGVuIFwKLQkgICAgJChFVEFHUykgJChFVEFHU0ZMQUdTKSAkKEFNX0VUQUdTRkxBR1MpICQoRVRBR1NfQVJHUykgXAotCSAgICAgICIkJEAiICQkdW5pcXVlOyBcCi0JICBlbHNlIFwKLQkgICAgJChFVEFHUykgJChFVEFHU0ZMQUdTKSAkKEFNX0VUQUdTRkxBR1MpICQoRVRBR1NfQVJHUykgXAotCSAgICAgICQkdW5pcXVlOyBcCi0JICBmaTsgXAotCWZpCi1jdGFnczogY3RhZ3MtYW0KK2N0YWdzIENUQUdTOgogCi1DVEFHUzogY3RhZ3MKLWN0YWdzLWFtOiAkKFRBR1NfREVQRU5ERU5DSUVTKSAkKGFtX190YWdnZWRfZmlsZXMpCi0JJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgXAotCXRlc3QgLXogIiQoQ1RBR1NfQVJHUykkJHVuaXF1ZSIgXAotCSAgfHwgJChDVEFHUykgJChDVEFHU0ZMQUdTKSAkKEFNX0NUQUdTRkxBR1MpICQoQ1RBR1NfQVJHUykgXAotCSAgICAgJCR1bmlxdWUKK2NzY29wZSBjc2NvcGVsaXN0OgogCi1HVEFHUzoKLQloZXJlPWAkKGFtX19jZCkgJCh0b3BfYnVpbGRkaXIpICYmIHB3ZGAgXAotCSAgJiYgJChhbV9fY2QpICQodG9wX3NyY2RpcikgXAotCSAgJiYgZ3RhZ3MgLWkgJChHVEFHU19BUkdTKSAiJCRoZXJlIgotY3Njb3BlbGlzdDogY3Njb3BlbGlzdC1hbQotCi1jc2NvcGVsaXN0LWFtOiAkKGFtX190YWdnZWRfZmlsZXMpCi0JbGlzdD0nJChhbV9fdGFnZ2VkX2ZpbGVzKSc7IFwKLQljYXNlICIkKHNyY2RpcikiIGluIFwKLQkgIFtcXC9dKiB8ID86W1xcL10qKSBzZGlyPSIkKHNyY2RpcikiIDs7IFwKLQkgICopIHNkaXI9JChzdWJkaXIpLyQoc3JjZGlyKSA7OyBcCi0JZXNhYzsgXAotCWZvciBpIGluICQkbGlzdDsgZG8gXAotCSAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBcCi0JICAgIGVjaG8gIiQoc3ViZGlyKS8kJGkiOyBcCi0JICBlbHNlIFwKLQkgICAgZWNobyAiJCRzZGlyLyQkaSI7IFwKLQkgIGZpOyBcCi0JZG9uZSA+PiAkKHRvcF9idWlsZGRpcikvY3Njb3BlLmZpbGVzCi0KLWRpc3RjbGVhbi10YWdzOgotCS1ybSAtZiBUQUdTIElEIEdUQUdTIEdSVEFHUyBHU1lNUyBHUEFUSCB0YWdzCiAKIGRpc3RkaXI6ICQoRElTVEZJTEVTKQogCUBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqXS9cXFxcJi9nJ2A7IFwKQEAgLTk5NSw3ICs5NjksNyBAQAogY2hlY2s6IGNoZWNrLWFtCiBhbGwtYW06IE1ha2VmaWxlICQoTFRMSUJSQVJJRVMpICQoSEVBREVSUykKIGluc3RhbGxkaXJzOgotCWZvciBkaXIgaW4gIiQoREVTVERJUikkKGxpYmRpcikiOyBkbyBcCisJZm9yIGRpciBpbiAiJChERVNURElSKSQobGliZGlyKSIgIiQoREVTVERJUikkKGxpYmdzdHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpcikiOyBkbyBcCiAJICB0ZXN0IC16ICIkJGRpciIgfHwgJChNS0RJUl9QKSAiJCRkaXIiOyBcCiAJZG9uZQogaW5zdGFsbDogaW5zdGFsbC1hbQpAQCAtMTAzNyw4ICsxMDExLDcgQEAKIGRpc3RjbGVhbjogZGlzdGNsZWFuLWFtCiAJLXJtIC1yZiAuLyQoREVQRElSKQogCS1ybSAtZiBNYWtlZmlsZQotZGlzdGNsZWFuLWFtOiBjbGVhbi1hbSBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcCi0JZGlzdGNsZWFuLXRhZ3MKK2Rpc3RjbGVhbi1hbTogY2xlYW4tYW0gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMKIAogZHZpOiBkdmktYW0KIApAQCAtMTA1Miw3ICsxMDI1LDcgQEAKIAogaW5mby1hbToKIAotaW5zdGFsbC1kYXRhLWFtOgoraW5zdGFsbC1kYXRhLWFtOiBpbnN0YWxsLWxpYmdzdHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZUhFQURFUlMKIAogaW5zdGFsbC1kdmk6IGluc3RhbGwtZHZpLWFtCiAKQEAgLTEwOTgsMjMgKzEwNzEsMjcgQEAKIAogcHMtYW06CiAKLXVuaW5zdGFsbC1hbTogdW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTCit1bmluc3RhbGwtYW06IHVuaW5zdGFsbC1saWJMVExJQlJBUklFUyBcCisJdW5pbnN0YWxsLWxpYmdzdHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZUhFQURFUlMKIAogLk1BS0U6IGluc3RhbGwtYW0gaW5zdGFsbC1zdHJpcAogCi0uUEhPTlk6IENUQUdTIEdUQUdTIFRBR1MgYWxsIGFsbC1hbSBjaGVjayBjaGVjay1hbSBjbGVhbiBjbGVhbi1nZW5lcmljIFwKLQljbGVhbi1saWJMVExJQlJBUklFUyBjbGVhbi1saWJ0b29sIGNzY29wZWxpc3QtYW0gY3RhZ3MgXAotCWN0YWdzLWFtIGRpc3RjbGVhbiBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcCi0JZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGNsZWFuLXRhZ3MgZGlzdGRpciBkdmkgZHZpLWFtIGh0bWwgXAotCWh0bWwtYW0gaW5mbyBpbmZvLWFtIGluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgXAotCWluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBpbnN0YWxsLWR2aS1hbSBpbnN0YWxsLWV4ZWMgXAotCWluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgaW5zdGFsbC1odG1sLWFtIGluc3RhbGwtaW5mbyBcCi0JaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbGliTFRMSUJSQVJJRVMgaW5zdGFsbC1tYW4gaW5zdGFsbC1wZGYgXAotCWluc3RhbGwtcGRmLWFtIGluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXN0cmlwIFwKLQlpbnN0YWxsY2hlY2sgaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIG1haW50YWluZXItY2xlYW4gXAotCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbiBtb3N0bHljbGVhbi1jb21waWxlIFwKLQltb3N0bHljbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWxpYnRvb2wgcGRmIHBkZi1hbSBwcyBwcy1hbSBcCi0JdGFncyB0YWdzLWFtIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0gdW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTCisuUEhPTlk6IGFsbCBhbGwtYW0gY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBcCisJY2xlYW4tbGliTFRMSUJSQVJJRVMgY2xlYW4tbGlidG9vbCBjc2NvcGVsaXN0LWFtIGN0YWdzLWFtIFwKKwlkaXN0Y2xlYW4gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAorCWRpc3RjbGVhbi1saWJ0b29sIGRpc3RkaXIgZHZpIGR2aS1hbSBodG1sIGh0bWwtYW0gaW5mbyBpbmZvLWFtIFwKKwlpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIGluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBcCisJaW5zdGFsbC1kdmktYW0gaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgXAorCWluc3RhbGwtaHRtbC1hbSBpbnN0YWxsLWluZm8gaW5zdGFsbC1pbmZvLWFtIFwKKwlpbnN0YWxsLWxpYkxUTElCUkFSSUVTIFwKKwlpbnN0YWxsLWxpYmdzdHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZUhFQURFUlMgXAorCWluc3RhbGwtbWFuIGluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIGluc3RhbGwtcHMgXAorCWluc3RhbGwtcHMtYW0gaW5zdGFsbC1zdHJpcCBpbnN0YWxsY2hlY2sgaW5zdGFsbGNoZWNrLWFtIFwKKwlpbnN0YWxsZGlycyBtYWludGFpbmVyLWNsZWFuIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBcCisJbW9zdGx5Y2xlYW4gbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljIFwKKwltb3N0bHljbGVhbi1saWJ0b29sIHBkZiBwZGYtYW0gcHMgcHMtYW0gdGFncy1hbSB1bmluc3RhbGwgXAorCXVuaW5zdGFsbC1hbSB1bmluc3RhbGwtbGliTFRMSUJSQVJJRVMgXAorCXVuaW5zdGFsbC1saWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTCiAKIC5QUkVDSU9VUzogTWFrZWZpbGUKIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvYWdncmVnYXRvci5jIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvYWdncmVnYXRvci5jCmluZGV4IGVhMWU4MTAuLjFiZjZlYTAgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2FnZ3JlZ2F0b3IuYworKysgYi9nc3QtbGlicy9nc3QvdmlkZW8vZ3N0dmlkZW9hZ2dyZWdhdG9yLmMKQEAgLTUzMiw4NiArNTMyLDYgQEAKICAgZ19oYXNoX3RhYmxlX3VucmVmIChmb3JtYXRzX3RhYmxlKTsKIH0KIAotLyogV0lUSCBHU1RfVklERU9fQUdHUkVHQVRPUl9MT0NLIFRBS0VOCi0gKiBOT1RFOiBBZnRlciBjYWxsaW5nIHRoYXQgbWV0aG9kIHlvdSAqKmhhdmUgdG8qKiBjYWxsCi0gKiAgICAgICBnc3RfdmlkZW9hZ2dyZWdhdG9yX3VwZGF0ZV9zcmNfY2FwcyAod2l0aG91dCByZWxlYXNpbmcKLSAqICAgICAgIHRoZSBHU1RfVklERU9fQUdHUkVHQVRPUl9MT0NLIGluIGJldHdlZW4pCi0gKi8KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3ZpZGVvYWdncmVnYXRvcl91cGRhdGVfY29udmVydGVycyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZykKLXsKLSAgR0xpc3QgKnRtcDsKLSAgR3N0VmlkZW9Gb3JtYXQgYmVzdF9mb3JtYXQ7Ci0gIEdzdFZpZGVvSW5mbyBiZXN0X2luZm87Ci0gIGdib29sZWFuIGF0X2xlYXN0X29uZV9hbHBoYSA9IEZBTFNFOwotICBHc3RDYXBzICpkb3duc3RyZWFtX2NhcHM7Ci0gIEdzdEFnZ3JlZ2F0b3IgKmFnZyA9IEdTVF9BR0dSRUdBVE9SICh2YWdnKTsKLQotICBHc3RWaWRlb0FnZ3JlZ2F0b3JDbGFzcyAqdmFnZ19jbGFzcyA9IEdTVF9WSURFT19BR0dSRUdBVE9SX0dFVF9DTEFTUyAodmFnZyk7Ci0gIEdzdFZpZGVvQWdncmVnYXRvclBhZENsYXNzICp2YWdncGFkX2NsYXNzID0gZ190eXBlX2NsYXNzX3BlZWsKLSAgICAgIChHU1RfQUdHUkVHQVRPUl9HRVRfQ0xBU1MgKHZhZ2cpLT5zaW5rcGFkc190eXBlKTsKLQotICBiZXN0X2Zvcm1hdCA9IEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTjsKLSAgZ3N0X3ZpZGVvX2luZm9faW5pdCAoJmJlc3RfaW5mbyk7Ci0KLSAgZG93bnN0cmVhbV9jYXBzID0gZ3N0X3BhZF9nZXRfYWxsb3dlZF9jYXBzIChhZ2ctPnNyY3BhZCk7Ci0KLSAgaWYgKCFkb3duc3RyZWFtX2NhcHMgfHwgZ3N0X2NhcHNfaXNfZW1wdHkgKGRvd25zdHJlYW1fY2FwcykpIHsKLSAgICBHU1RfSU5GT19PQkpFQ1QgKHZhZ2csICJObyBkb3duc3RyZWFtIGNhcHMgZm91bmQgJSIKLSAgICAgICAgR1NUX1BUUl9GT1JNQVQsIGRvd25zdHJlYW1fY2Fwcyk7Ci0gICAgaWYgKGRvd25zdHJlYW1fY2FwcykKLSAgICAgIGdzdF9jYXBzX3VucmVmIChkb3duc3RyZWFtX2NhcHMpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0KLSAgaWYgKHZhZ2dfY2xhc3MtPmZpbmRfYmVzdF9mb3JtYXQpIHsKLSAgICB2YWdnX2NsYXNzLT5maW5kX2Jlc3RfZm9ybWF0ICh2YWdnLCBkb3duc3RyZWFtX2NhcHMsICZiZXN0X2luZm8sCi0gICAgICAgICZhdF9sZWFzdF9vbmVfYWxwaGEpOwotCi0gICAgYmVzdF9mb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQgKCZiZXN0X2luZm8pOwotICB9Ci0KLSAgaWYgKGJlc3RfZm9ybWF0ID09IEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTikgewotICAgIGRvd25zdHJlYW1fY2FwcyA9IGdzdF9jYXBzX2ZpeGF0ZSAoZG93bnN0cmVhbV9jYXBzKTsKLSAgICBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZiZXN0X2luZm8sIGRvd25zdHJlYW1fY2Fwcyk7Ci0gICAgYmVzdF9mb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQgKCZiZXN0X2luZm8pOwotICB9Ci0KLSAgZ3N0X2NhcHNfdW5yZWYgKGRvd25zdHJlYW1fY2Fwcyk7Ci0KLSAgaWYgKGF0X2xlYXN0X29uZV9hbHBoYQotICAgICAgJiYgIShiZXN0X2luZm8uZmluZm8tPmZsYWdzICYgR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX0FMUEhBKSkgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SICh2YWdnLCBDT1JFLCBORUdPVElBVElPTiwKLSAgICAgICAgKCJBdCBsZWFzdCBvbmUgb2YgdGhlIGlucHV0IHBhZHMgY29udGFpbnMgYWxwaGEsIGJ1dCBkb3duc3RyZWFtIGNhbid0IHN1cHBvcnQgYWxwaGEuIiksCi0gICAgICAgICgiRWl0aGVyIGNvbnZlcnQgeW91ciBpbnB1dHMgdG8gbm90IGNvbnRhaW4gYWxwaGEgb3IgYWRkIGEgdmlkZW9jb252ZXJ0IGFmdGVyIHRoZSBhZ2dyZWdhdG9yIikpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIHZhZ2ctPmluZm8gPSBiZXN0X2luZm87Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAodmFnZywKLSAgICAgICJUaGUgb3V0cHV0IGZvcm1hdCB3aWxsIG5vdyBiZSA6ICVkIHdpdGggY2hyb21hIDogJXMiLAotICAgICAgYmVzdF9mb3JtYXQsIGdzdF92aWRlb19jaHJvbWFfdG9fc3RyaW5nIChiZXN0X2luZm8uY2hyb21hX3NpdGUpKTsKLQotICBpZiAodmFnZ3BhZF9jbGFzcy0+c2V0X2luZm8pIHsKLSAgICBHU1RfT0JKRUNUX0xPQ0sgKHZhZ2cpOwotICAgIC8qIFRoZW4gYnJvd3NlIHRoZSBzaW5rcyBvbmNlIG1vcmUsIHNldHRpbmcgb3IgdW5zZXR0aW5nIGNvbnZlcnNpb24gaWYgbmVlZGVkICovCi0gICAgZm9yICh0bXAgPSBHU1RfRUxFTUVOVCAodmFnZyktPnNpbmtwYWRzOyB0bXA7IHRtcCA9IHRtcC0+bmV4dCkgewotICAgICAgR3N0VmlkZW9BZ2dyZWdhdG9yUGFkICpwYWQgPSBHU1RfVklERU9fQUdHUkVHQVRPUl9QQUQgKHRtcC0+ZGF0YSk7Ci0KLSAgICAgIGlmICghdmFnZ3BhZF9jbGFzcy0+c2V0X2luZm8gKHBhZCwgdmFnZywgJnBhZC0+aW5mbywgJmJlc3RfaW5mbykpIHsKLSAgICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHZhZ2cpOwotCi0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgIH0KLSAgICB9Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKHZhZ2cpOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KIC8qIFdJVEggR1NUX1ZJREVPX0FHR1JFR0FUT1JfTE9DSyBUQUtFTiAqLwogc3RhdGljIGdib29sZWFuCiBnc3RfdmlkZW9hZ2dyZWdhdG9yX3NyY19zZXRjYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnLCBHc3RDYXBzICogY2FwcykKQEAgLTY2MiwyNSArNTgyLDIyIEBACiAgIHJldHVybiByZXQ7CiB9CiAKLS8qIFdJVEggR1NUX1ZJREVPX0FHR1JFR0FUT1JfTE9DSyBUQUtFTiAqLwotc3RhdGljIGdib29sZWFuCi1nc3RfdmlkZW9hZ2dyZWdhdG9yX3VwZGF0ZV9zcmNfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZykKK3N0YXRpYyBHc3RDYXBzICoKK2dzdF92aWRlb2FnZ3JlZ2F0b3JfZGVmYXVsdF9maXhhdGVfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywKKyAgICBHc3RDYXBzICogY2FwcykKIHsKLSAgR0xpc3QgKmw7CiAgIGdpbnQgYmVzdF93aWR0aCA9IC0xLCBiZXN0X2hlaWdodCA9IC0xOwotICBnZG91YmxlIGJlc3RfZnBzID0gLTEsIGN1cl9mcHM7CiAgIGdpbnQgYmVzdF9mcHNfbiA9IC0xLCBiZXN0X2Zwc19kID0gLTE7Ci0gIGdib29sZWFuIHJldCA9IFRSVUU7Ci0gIEdzdEVsZW1lbnRDbGFzcyAqa2xhc3MgPSBHU1RfRUxFTUVOVF9HRVRfQ0xBU1MgKHZhZ2cpOwotICBHc3RWaWRlb0FnZ3JlZ2F0b3JDbGFzcyAqdmFnZ19rbGFzcyA9IChHc3RWaWRlb0FnZ3JlZ2F0b3JDbGFzcyAqKSBrbGFzczsKLSAgR3N0QWdncmVnYXRvciAqYWdnID0gR1NUX0FHR1JFR0FUT1IgKHZhZ2cpOworICBnZG91YmxlIGJlc3RfZnBzID0gLTEuOworICBHc3RTdHJ1Y3R1cmUgKnM7CisgIEdMaXN0ICpsOwogCiAgIEdTVF9PQkpFQ1RfTE9DSyAodmFnZyk7CiAgIGZvciAobCA9IEdTVF9FTEVNRU5UICh2YWdnKS0+c2lua3BhZHM7IGw7IGwgPSBsLT5uZXh0KSB7CiAgICAgR3N0VmlkZW9BZ2dyZWdhdG9yUGFkICptcGFkID0gbC0+ZGF0YTsKLSAgICBnaW50IHRoaXNfd2lkdGgsIHRoaXNfaGVpZ2h0OwogICAgIGdpbnQgZnBzX24sIGZwc19kOwogICAgIGdpbnQgd2lkdGgsIGhlaWdodDsKKyAgICBnZG91YmxlIGN1cl9mcHM7CiAKICAgICBmcHNfbiA9IEdTVF9WSURFT19JTkZPX0ZQU19OICgmbXBhZC0+aW5mbyk7CiAgICAgZnBzX2QgPSBHU1RfVklERU9fSU5GT19GUFNfRCAoJm1wYWQtPmluZm8pOwpAQCAtNjkwLDEzICs2MDcsMTAgQEAKICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKICAgICAgIGNvbnRpbnVlOwogCi0gICAgdGhpc193aWR0aCA9IHdpZHRoOwotICAgIHRoaXNfaGVpZ2h0ID0gaGVpZ2h0OwotCi0gICAgaWYgKGJlc3Rfd2lkdGggPCB0aGlzX3dpZHRoKQotICAgICAgYmVzdF93aWR0aCA9IHRoaXNfd2lkdGg7Ci0gICAgaWYgKGJlc3RfaGVpZ2h0IDwgdGhpc19oZWlnaHQpCi0gICAgICBiZXN0X2hlaWdodCA9IHRoaXNfaGVpZ2h0OworICAgIGlmIChiZXN0X3dpZHRoIDwgd2lkdGgpCisgICAgICBiZXN0X3dpZHRoID0gd2lkdGg7CisgICAgaWYgKGJlc3RfaGVpZ2h0IDwgaGVpZ2h0KQorICAgICAgYmVzdF9oZWlnaHQgPSBoZWlnaHQ7CiAKICAgICBpZiAoZnBzX2QgPT0gMCkKICAgICAgIGN1cl9mcHMgPSAwLjA7CkBAIC03MTcsODggKzYzMSwxNDIgQEAKICAgICBiZXN0X2ZwcyA9IDI1LjA7CiAgIH0KIAotICBpZiAoYmVzdF93aWR0aCA+IDAgJiYgYmVzdF9oZWlnaHQgPiAwICYmIGJlc3RfZnBzID4gMCkgewotICAgIEdzdENhcHMgKmNhcHMsICpwZWVyY2FwcywgKmluZm9fY2FwczsKLSAgICBHc3RTdHJ1Y3R1cmUgKnM7Ci0gICAgR3N0VmlkZW9JbmZvIGluZm87Ci0gICAgaW50IGk7CisgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKKyAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9pbnQgKHMsICJ3aWR0aCIsIGJlc3Rfd2lkdGgpOworICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ludCAocywgImhlaWdodCIsIGJlc3RfaGVpZ2h0KTsKKyAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9mcmFjdGlvbiAocywgImZyYW1lcmF0ZSIsIGJlc3RfZnBzX24sCisgICAgICBiZXN0X2Zwc19kKTsKKyAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkIChzLCAicGl4ZWwtYXNwZWN0LXJhdGlvIikpCisgICAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9mcmFjdGlvbiAocywgInBpeGVsLWFzcGVjdC1yYXRpbyIsIDEsIDEpOworICBjYXBzID0gZ3N0X2NhcHNfZml4YXRlIChjYXBzKTsKIAotICAgIC8qIEluaXRpYWxpemUgdGhlIHZpZGVvIGluZm8gd2l0aCBvdXIgdGFyZ2V0IGZvcm1hdCBhbmQKLSAgICAgKiB0aGUgYmVzdCB3aWR0aCBhbmQgaGVpZ2h0IGFuZCBmcmFtZXJhdGUuIFRoZW4gY29weSBvdmVyCi0gICAgICogYWxsIG90aGVyIGZpZWxkcyBhcyB3ZSBuZWdvdGlhdGVkIHRoZW0gYmVmb3JlCi0gICAgICovCi0gICAgZ3N0X3ZpZGVvX2luZm9fc2V0X2Zvcm1hdCAoJmluZm8sIEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJnZhZ2ctPmluZm8pLAotICAgICAgICBiZXN0X3dpZHRoLCBiZXN0X2hlaWdodCk7Ci0gICAgaW5mby5mcHNfbiA9IGJlc3RfZnBzX247Ci0gICAgaW5mby5mcHNfZCA9IGJlc3RfZnBzX2Q7Ci0gICAgaW5mby5jaHJvbWFfc2l0ZSA9IHZhZ2ctPmluZm8uY2hyb21hX3NpdGU7Ci0gICAgaW5mby5wYXJfbiA9IHZhZ2ctPmluZm8ucGFyX247Ci0gICAgaW5mby5wYXJfZCA9IHZhZ2ctPmluZm8ucGFyX2Q7Ci0gICAgaW5mby5jb2xvcmltZXRyeSA9IHZhZ2ctPmluZm8uY29sb3JpbWV0cnk7Ci0gICAgaW5mby5mbGFncyA9IHZhZ2ctPmluZm8uZmxhZ3M7Ci0gICAgaW5mby5pbnRlcmxhY2VfbW9kZSA9IHZhZ2ctPmluZm8uaW50ZXJsYWNlX21vZGU7CisgIHJldHVybiBjYXBzOworfQogCi0gICAgaW5mb19jYXBzID0gZ3N0X3ZpZGVvX2luZm9fdG9fY2FwcyAoJmluZm8pOworc3RhdGljIEdzdENhcHMgKgorZ3N0X3ZpZGVvYWdncmVnYXRvcl9kZWZhdWx0X3VwZGF0ZV9jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnLAorICAgIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKQoreworICBHc3RDYXBzICpyZXQ7CiAKLSAgICBpZiAodmFnZ19rbGFzcy0+dXBkYXRlX2NhcHMpIHsKLSAgICAgIGlmICghKGNhcHMgPSB2YWdnX2tsYXNzLT51cGRhdGVfY2FwcyAodmFnZywgaW5mb19jYXBzKSkpIHsKLSAgICAgICAgZ3N0X2NhcHNfdW5yZWYgKGluZm9fY2Fwcyk7Ci0gICAgICAgIHJldCA9IEZBTFNFOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICB9Ci0gICAgICBnc3RfY2Fwc191bnJlZiAoaW5mb19jYXBzKTsKLSAgICB9IGVsc2UgewotICAgICAgY2FwcyA9IGluZm9fY2FwczsKKyAgaWYgKGZpbHRlcikgeworICAgIHJldCA9IGdzdF9jYXBzX2ludGVyc2VjdCAoY2FwcywgZmlsdGVyKTsKKyAgfSBlbHNlIHsKKyAgICByZXQgPSBnc3RfY2Fwc19yZWYgKGNhcHMpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworLyogV0lUSCBHU1RfVklERU9fQUdHUkVHQVRPUl9MT0NLIFRBS0VOICovCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF92aWRlb2FnZ3JlZ2F0b3JfdXBkYXRlX3NyY19jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnKQoreworICBHc3RWaWRlb0FnZ3JlZ2F0b3JDbGFzcyAqdmFnZ19rbGFzcyA9IEdTVF9WSURFT19BR0dSRUdBVE9SX0dFVF9DTEFTUyAodmFnZyk7CisgIEdzdFZpZGVvQWdncmVnYXRvclBhZENsYXNzICp2YWdncGFkX2tsYXNzID0gZ190eXBlX2NsYXNzX3BlZWsKKyAgICAgIChHU1RfQUdHUkVHQVRPUl9HRVRfQ0xBU1MgKHZhZ2cpLT5zaW5rcGFkc190eXBlKTsKKyAgR3N0QWdncmVnYXRvciAqYWdnID0gR1NUX0FHR1JFR0FUT1IgKHZhZ2cpOworICBnYm9vbGVhbiByZXQgPSBUUlVFLCBhdF9sZWFzdF9vbmVfcGFkX2NvbmZpZ3VyZWQgPSBGQUxTRTsKKyAgR3N0VmlkZW9Gb3JtYXQgYmVzdF9mb3JtYXQ7CisgIEdzdFZpZGVvSW5mbyBiZXN0X2luZm87CisgIGdib29sZWFuIGF0X2xlYXN0X29uZV9hbHBoYSA9IEZBTFNFOworICBHc3RDYXBzICpkb3duc3RyZWFtX2NhcHM7CisgIEdMaXN0ICpsOworCisgIGJlc3RfZm9ybWF0ID0gR1NUX1ZJREVPX0ZPUk1BVF9VTktOT1dOOworICBnc3RfdmlkZW9faW5mb19pbml0ICgmYmVzdF9pbmZvKTsKKworICBkb3duc3RyZWFtX2NhcHMgPSBnc3RfcGFkX2dldF9hbGxvd2VkX2NhcHMgKGFnZy0+c3JjcGFkKTsKKworICBpZiAoIWRvd25zdHJlYW1fY2FwcyB8fCBnc3RfY2Fwc19pc19lbXB0eSAoZG93bnN0cmVhbV9jYXBzKSkgeworICAgIEdTVF9JTkZPX09CSkVDVCAodmFnZywgIk5vIGRvd25zdHJlYW0gY2FwcyBmb3VuZCAlIgorICAgICAgICBHU1RfUFRSX0ZPUk1BVCwgZG93bnN0cmVhbV9jYXBzKTsKKyAgICBpZiAoZG93bnN0cmVhbV9jYXBzKQorICAgICAgZ3N0X2NhcHNfdW5yZWYgKGRvd25zdHJlYW1fY2Fwcyk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKHZhZ2dfa2xhc3MtPmZpbmRfYmVzdF9mb3JtYXQpIHsKKyAgICB2YWdnX2tsYXNzLT5maW5kX2Jlc3RfZm9ybWF0ICh2YWdnLCBkb3duc3RyZWFtX2NhcHMsICZiZXN0X2luZm8sCisgICAgICAgICZhdF9sZWFzdF9vbmVfYWxwaGEpOworCisgICAgYmVzdF9mb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQgKCZiZXN0X2luZm8pOworICB9CisKKyAgaWYgKGJlc3RfZm9ybWF0ID09IEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTikgeworICAgIEdzdENhcHMgKnRtcCA9IGdzdF9jYXBzX2ZpeGF0ZSAoZ3N0X2NhcHNfcmVmIChkb3duc3RyZWFtX2NhcHMpKTsKKyAgICBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZiZXN0X2luZm8sIHRtcCk7CisgICAgYmVzdF9mb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQgKCZiZXN0X2luZm8pOworICAgIGdzdF9jYXBzX3VucmVmICh0bXApOworICB9CisKKyAgaWYgKGF0X2xlYXN0X29uZV9hbHBoYQorICAgICAgJiYgIShiZXN0X2luZm8uZmluZm8tPmZsYWdzICYgR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX0FMUEhBKSkgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SICh2YWdnLCBDT1JFLCBORUdPVElBVElPTiwKKyAgICAgICAgKCJBdCBsZWFzdCBvbmUgb2YgdGhlIGlucHV0IHBhZHMgY29udGFpbnMgYWxwaGEsIGJ1dCBkb3duc3RyZWFtIGNhbid0IHN1cHBvcnQgYWxwaGEuIiksCisgICAgICAgICgiRWl0aGVyIGNvbnZlcnQgeW91ciBpbnB1dHMgdG8gbm90IGNvbnRhaW4gYWxwaGEgb3IgYWRkIGEgdmlkZW9jb252ZXJ0IGFmdGVyIHRoZSBhZ2dyZWdhdG9yIikpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKHZhZ2csCisgICAgICAiVGhlIG91dHB1dCBmb3JtYXQgd2lsbCBub3cgYmUgOiAlZCB3aXRoIGNocm9tYSA6ICVzIiwKKyAgICAgIGJlc3RfZm9ybWF0LCBnc3RfdmlkZW9fY2hyb21hX3RvX3N0cmluZyAoYmVzdF9pbmZvLmNocm9tYV9zaXRlKSk7CisKKyAgR1NUX09CSkVDVF9MT0NLICh2YWdnKTsKKyAgZm9yIChsID0gR1NUX0VMRU1FTlQgKHZhZ2cpLT5zaW5rcGFkczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICBHc3RWaWRlb0FnZ3JlZ2F0b3JQYWQgKm1wYWQgPSBsLT5kYXRhOworCisgICAgaWYgKEdTVF9WSURFT19JTkZPX1dJRFRIICgmbXBhZC0+aW5mbykgPT0gMAorICAgICAgICB8fCBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZtcGFkLT5pbmZvKSA9PSAwKQorICAgICAgY29udGludWU7CisKKyAgICBhdF9sZWFzdF9vbmVfcGFkX2NvbmZpZ3VyZWQgPSBUUlVFOworICAgIGJyZWFrOworICB9CisgIEdTVF9PQkpFQ1RfVU5MT0NLICh2YWdnKTsKKworICBpZiAoYXRfbGVhc3Rfb25lX3BhZF9jb25maWd1cmVkKSB7CisgICAgR3N0Q2FwcyAqY2FwcywgKnBlZXJjYXBzOworCisgICAgcGVlcmNhcHMgPSBnc3RfcGFkX3BlZXJfcXVlcnlfY2FwcyAoYWdnLT5zcmNwYWQsIE5VTEwpOworCisgICAgZ19hc3NlcnQgKHZhZ2dfa2xhc3MtPnVwZGF0ZV9jYXBzKTsKKyAgICBpZiAoIShjYXBzID0gdmFnZ19rbGFzcy0+dXBkYXRlX2NhcHMgKHZhZ2csIGRvd25zdHJlYW1fY2FwcywgcGVlcmNhcHMpKSkgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUICh2YWdnLCAiU3ViY2xhc3MgZmFpbGVkIHRvIHVwZGF0ZSBwcm92aWRlZCBjYXBzIik7CisgICAgICBnc3RfY2Fwc191bnJlZiAoZG93bnN0cmVhbV9jYXBzKTsKKyAgICAgIGlmIChwZWVyY2FwcykKKyAgICAgICAgZ3N0X2NhcHNfdW5yZWYgKHBlZXJjYXBzKTsKKyAgICAgIHJldCA9IEZBTFNFOworICAgICAgZ290byBkb25lOwogICAgIH0KLQotICAgIC8qIElmIHRoZSBzdWItY2xhc3MgYWxsb3dzIGl0LCBhbGxvdyBzaXplL2ZyYW1lcmF0ZSBjaGFuZ2VzICovCi0gICAgaWYgKCF2YWdnX2tsYXNzLT5wcmVzZXJ2ZV91cGRhdGVfY2Fwc19yZXN1bHQpIHsKLSAgICAgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLSAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0IChzLCAid2lkdGgiLCBHX1RZUEVfSU5ULCAmYmVzdF93aWR0aCwgImhlaWdodCIsCi0gICAgICAgICAgR19UWVBFX0lOVCwgJmJlc3RfaGVpZ2h0LCBOVUxMKTsKLQotICAgICAgZm9yIChpID0gMDsgaSA8IGdzdF9jYXBzX2dldF9zaXplIChjYXBzKTsgaSsrKSB7Ci0gICAgICAgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCBpKTsKLSAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJ3aWR0aCIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgMSwgR19NQVhJTlQsCi0gICAgICAgICAgICAiaGVpZ2h0IiwgR1NUX1RZUEVfSU5UX1JBTkdFLCAxLCBHX01BWElOVCwgImZyYW1lcmF0ZSIsCi0gICAgICAgICAgICBHU1RfVFlQRV9GUkFDVElPTl9SQU5HRSwgMCwgMSwgR19NQVhJTlQsIDEsIE5VTEwpOwotICAgICAgfQotICAgIH0KLQotICAgIHBlZXJjYXBzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKGFnZy0+c3JjcGFkLCBjYXBzKTsKLSAgICBpZiAocGVlcmNhcHMpIHsKLSAgICAgIEdzdENhcHMgKnRtcDsKLQotICAgICAgdG1wID0gZ3N0X2NhcHNfaW50ZXJzZWN0IChjYXBzLCBwZWVyY2Fwcyk7Ci0gICAgICBHU1RfREVCVUdfT0JKRUNUICh2YWdnLCAiaW50ZXJzZWN0aW5nICUiIEdTVF9QVFJfRk9STUFUCi0gICAgICAgICAgIiB3aXRoIHBlZXIgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCAiIHJlc3VsdCAlIiBHU1RfUFRSX0ZPUk1BVCwgY2FwcywKLSAgICAgICAgICBwZWVyY2FwcywgdG1wKTsKLQotICAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworICAgIGdzdF9jYXBzX3VucmVmIChkb3duc3RyZWFtX2NhcHMpOworICAgIGlmIChwZWVyY2FwcykKICAgICAgIGdzdF9jYXBzX3VucmVmIChwZWVyY2Fwcyk7Ci0gICAgICBjYXBzID0gdG1wOyAgICAgICAgICAgICAgIC8qIHBhc3Mgb3duZXJzaGlwICovCi0gICAgICBpZiAoZ3N0X2NhcHNfaXNfZW1wdHkgKGNhcHMpKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHZhZ2csICJlbXB0eSBjYXBzIik7CisKKyAgICBpZiAoIWdzdF9jYXBzX2lzX2ZpeGVkIChjYXBzKSkgeworICAgICAgZ19hc3NlcnQgKHZhZ2dfa2xhc3MtPmZpeGF0ZV9jYXBzKTsKKworICAgICAgY2FwcyA9IGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKGNhcHMpOworICAgICAgaWYgKCEoY2FwcyA9IHZhZ2dfa2xhc3MtPmZpeGF0ZV9jYXBzICh2YWdnLCBjYXBzKSkpIHsKKyAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUICh2YWdnLCAiU3ViY2xhc3MgZmFpbGVkIHRvIGZpeGF0ZSBwcm92aWRlZCBjYXBzIik7CiAgICAgICAgIHJldCA9IEZBTFNFOwotICAgICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgIH0KKyAgICB9CiAKLSAgICAgIGNhcHMgPSBnc3RfY2Fwc190cnVuY2F0ZSAoY2Fwcyk7Ci0gICAgICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0gICAgICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ludCAocywgIndpZHRoIiwgYmVzdF93aWR0aCk7Ci0gICAgICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ludCAocywgImhlaWdodCIsIGJlc3RfaGVpZ2h0KTsKLSAgICAgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24gKHMsICJmcmFtZXJhdGUiLCBiZXN0X2Zwc19uLAotICAgICAgICAgIGJlc3RfZnBzX2QpOwotICAgICAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9mcmFjdGlvbiAocywgInBpeGVsLWFzcGVjdC1yYXRpbyIsIDEsCi0gICAgICAgICAgMSk7CisgICAgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmdmFnZy0+aW5mbywgY2Fwcyk7CiAKLSAgICAgIC8qIGZpeGF0ZSB0aGUgdGhlIHJlc3Qgb2YgdGhlIGZpZWxkcyAqLwotICAgICAgY2FwcyA9IGdzdF9jYXBzX2ZpeGF0ZSAoY2Fwcyk7CisgICAgaWYgKHZhZ2dwYWRfa2xhc3MtPnNldF9pbmZvKSB7CisgICAgICAvKiBUaGVuIGJyb3dzZSB0aGUgc2lua3Mgb25jZSBtb3JlLCBzZXR0aW5nIG9yIHVuc2V0dGluZyBjb252ZXJzaW9uIGlmIG5lZWRlZCAqLworICAgICAgZm9yIChsID0gR1NUX0VMRU1FTlQgKHZhZ2cpLT5zaW5rcGFkczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICAgICAgR3N0VmlkZW9BZ2dyZWdhdG9yUGFkICpwYWQgPSBHU1RfVklERU9fQUdHUkVHQVRPUl9QQUQgKGwtPmRhdGEpOwogCi0gICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHMsICJ3aWR0aCIsICZpbmZvLndpZHRoKTsKLSAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgImhlaWdodCIsICZpbmZvLmhlaWdodCk7Ci0gICAgICBnc3Rfc3RydWN0dXJlX2dldF9mcmFjdGlvbiAocywgImZyYW1lcmF0ZSIsICZpbmZvLmZwc19uLCAmaW5mby5mcHNfZCk7CisgICAgICAgIGlmICghdmFnZ3BhZF9rbGFzcy0+c2V0X2luZm8gKHBhZCwgdmFnZywgJnBhZC0+aW5mbywgJnZhZ2ctPmluZm8pKSB7CisgICAgICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHZhZ2cpOworCisgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGdzdF92aWRlb2FnZ3JlZ2F0b3Jfc3JjX3NldGNhcHMgKHZhZ2csIGNhcHMpKSB7CkBAIC05MjQsMTUgKzg5Miw3IEBACiAKICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAiR2V0IGNhcHMgd2l0aCBmaWx0ZXI6ICUiIEdTVF9QVFJfRk9STUFULCBmaWx0ZXIpOwogCi0gIHNyY2NhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKHNyY3BhZCk7Ci0gIGlmIChzcmNjYXBzID09IE5VTEwpIHsKLSAgICBzcmNjYXBzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKHNyY3BhZCwgdGVtcGxhdGVfY2Fwcyk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAiTm8gb3V0cHV0IGNhcHMsIHVzaW5nIHBvc3NpYmxlIGZvcm1hdHM6ICUiCi0gICAgICAgIEdTVF9QVFJfRk9STUFULCBzcmNjYXBzKTsKLSAgfSBlbHNlIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChwYWQsICJVc2luZyBvdXRwdXQgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsIHNyY2NhcHMpOwotICB9Ci0KKyAgc3JjY2FwcyA9IGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzIChzcmNwYWQsIHRlbXBsYXRlX2NhcHMpOwogICBzcmNjYXBzID0gZ3N0X2NhcHNfbWFrZV93cml0YWJsZSAoc3JjY2Fwcyk7CiAgIGhhc19hbHBoYSA9IGdzdF92aWRlb2FnZ3JlZ2F0b3JfY2Fwc19oYXNfYWxwaGEgKHNyY2NhcHMpOwogCkBAIC05ODIsOSArOTQyLDkgQEAKICAgZ2Jvb2xlYW4gbGl2ZTsKIAogICBHU1RfREVCVUdfT0JKRUNUICh2YWdnLAotICAgICAgIlVwZGF0aW5nIFFvUzogcHJvcG9ydGlvbiAlbGYsIGRpZmYgJXMlIiBHU1RfVElNRV9GT1JNQVQgIiwgdGltZXN0YW1wICUiCi0gICAgICBHU1RfVElNRV9GT1JNQVQsIHByb3BvcnRpb24sIChkaWZmIDwgMCkgPyAiLSIgOiAiIiwKLSAgICAgIEdTVF9USU1FX0FSR1MgKEFCUyAoZGlmZikpLCBHU1RfVElNRV9BUkdTICh0aW1lc3RhbXApKTsKKyAgICAgICJVcGRhdGluZyBRb1M6IHByb3BvcnRpb24gJWxmLCBkaWZmICUiIEdTVF9TVElNRV9GT1JNQVQgIiwgdGltZXN0YW1wICUiCisgICAgICBHU1RfVElNRV9GT1JNQVQsIHByb3BvcnRpb24sIEdTVF9TVElNRV9BUkdTIChkaWZmKSwKKyAgICAgIEdTVF9USU1FX0FSR1MgKHRpbWVzdGFtcCkpOwogCiAgIGxpdmUgPQogICAgICAgR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGdzdF9hZ2dyZWdhdG9yX2dldF9sYXRlbmN5IChHU1RfQUdHUkVHQVRPUgpAQCAtMTQxNCwxMCArMTM3NCw3IEBACiAgICAgICB8fCBnc3RfcGFkX2NoZWNrX3JlY29uZmlndXJlIChHU1RfQUdHUkVHQVRPUl9TUkNfUEFEICh2YWdnKSkpIHsKICAgICBnYm9vbGVhbiByZXQ7CiAKLSAgICByZXQgPSBnc3RfdmlkZW9hZ2dyZWdhdG9yX3VwZGF0ZV9jb252ZXJ0ZXJzICh2YWdnKTsKLSAgICBpZiAocmV0KQotICAgICAgcmV0ID0gZ3N0X3ZpZGVvYWdncmVnYXRvcl91cGRhdGVfc3JjX2NhcHMgKHZhZ2cpOwotCisgICAgcmV0ID0gZ3N0X3ZpZGVvYWdncmVnYXRvcl91cGRhdGVfc3JjX2NhcHMgKHZhZ2cpOwogICAgIGlmICghcmV0KSB7CiAgICAgICBpZiAodGltZW91dCAmJiBnc3RfcGFkX25lZWRzX3JlY29uZmlndXJlIChHU1RfQUdHUkVHQVRPUl9TUkNfUEFEICh2YWdnKSkpIHsKICAgICAgICAgZ3VpbnQ2NCBmcmFtZV9kdXJhdGlvbjsKQEAgLTIwOTksNiArMjA1Niw4IEBACiAKICAga2xhc3MtPmZpbmRfYmVzdF9mb3JtYXQgPSBnc3RfdmlkZW9hZ2dyZWFnYXRvcl9maW5kX2Jlc3RfZm9ybWF0OwogICBrbGFzcy0+Z2V0X291dHB1dF9idWZmZXIgPSBnc3RfdmlkZW9hZ2dyZWdhdG9yX2dldF9vdXRwdXRfYnVmZmVyOworICBrbGFzcy0+dXBkYXRlX2NhcHMgPSBnc3RfdmlkZW9hZ2dyZWdhdG9yX2RlZmF1bHRfdXBkYXRlX2NhcHM7CisgIGtsYXNzLT5maXhhdGVfY2FwcyA9IGdzdF92aWRlb2FnZ3JlZ2F0b3JfZGVmYXVsdF9maXhhdGVfY2FwczsKIAogICAvKiBSZWdpc3RlciB0aGUgcGFkIGNsYXNzICovCiAgIGdfdHlwZV9jbGFzc19yZWYgKEdTVF9UWVBFX1ZJREVPX0FHR1JFR0FUT1JfUEFEKTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2FnZ3JlZ2F0b3IuaCBiL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2FnZ3JlZ2F0b3IuaAppbmRleCBmOTVkMGQyLi44NmRmMGI2IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vZ3N0dmlkZW9hZ2dyZWdhdG9yLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvYWdncmVnYXRvci5oCkBAIC03Myw2ICs3Myw5IEBACiAgKiBAdXBkYXRlX2NhcHM6ICAgICAgICAgICAgICBPcHRpb25hbC4KICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIExldHMgc3ViY2xhc3NlcyB1cGRhdGUgdGhlICNHc3RDYXBzIHJlcHJlc2VudGluZwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNyYyBwYWQgY2FwcyBiZWZvcmUgdXNhZ2UuICBSZXR1cm4gJU5VTEwgdG8gaW5kaWNhdGUgZmFpbHVyZS4KKyAqIEBmaXhhdGVfY2FwczogICAgICAgICAgICAgIEZpeGF0ZSBhbmQgcmV0dXJuIHRoZSBzcmMgcGFkIGNhcHMgcHJvdmlkZWQuICBUaGUgZnVuY3Rpb24gdGFrZXMKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyc2hpcCBvZiBAY2FwcyBhbmQgcmV0dXJucyBhIGZpeGF0ZWQgdmVyc2lvbiBvZgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhcHMuIEBjYXBzIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHdyaXRhYmxlLgogICogQGFnZ3JlZ2F0ZV9mcmFtZXM6ICAgICAgICAgTGV0cyBzdWJjbGFzc2VzIGFnZ3JlZ2F0ZSBmcmFtZXMgdGhhdCBhcmUgcmVhZHkuIFN1YmNsYXNzZXMKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBpdGVyYXRlIHRoZSBHc3RFbGVtZW50LnNpbmtwYWRzIGFuZCB1c2UgdGhlIGFscmVhZHkKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBlZCAjR3N0VmlkZW9GcmFtZSBmcm9tIEdzdFZpZGVvQWdncmVnYXRvclBhZC5hZ2dyZWdhdGVkX2ZyYW1lCkBAIC04Niw5ICs4OSw2IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmllcyBzdWJjbGFzc2VzIHdoYXQgY2FwcyBmb3JtYXQgaGFzIGJlZW4gbmVnb3RpYXRlZAogICogQGZpbmRfYmVzdF9mb3JtYXQ6ICAgICAgICAgT3B0aW9uYWwuCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXRzIHN1YmNsYXNzZXMgZGVjaWRlIG9mIHRoZSBiZXN0IGNvbW1vbiBmb3JtYXQgdG8gdXNlLgotICogQHByZXNlcnZlX3VwZGF0ZV9jYXBzX3Jlc3VsdDogU3ViLWNsYXNzZXMgc2hvdWxkIHNldCB0aGlzIHRvIHRydWUgaWYgdGhlIHJldHVybiByZXN1bHQKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB1cGRhdGVfY2FwcygpIG1ldGhvZCBzaG91bGQgbm90IGJlIGZ1cnRoZXIgbW9kaWZpZWQKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IEdzdFZpZGVvQWdncmVnYXRvciBieSByZW1vdmluZyBmaWVsZHMuCiAgKiovCiBzdHJ1Y3QgX0dzdFZpZGVvQWdncmVnYXRvckNsYXNzCiB7CkBAIC05Nyw2ICs5Nyw5IEBACiAKICAgLyo8IHB1YmxpYyA+Ki8KICAgR3N0Q2FwcyAqICAgICAgICAgICgqdXBkYXRlX2NhcHMpICAgICAgICAgICAgICAgKEdzdFZpZGVvQWdncmVnYXRvciAqICB2aWRlb2FnZ3JlZ2F0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICAgICAgICAgICAgKiAgY2FwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENhcHMgICAgICAgICAgICAqICBmaWx0ZXJfY2Fwcyk7CisgIEdzdENhcHMgKiAgICAgICAgICAoKmZpeGF0ZV9jYXBzKSAgICAgICAgICAgICAgIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiAgdmlkZW9hZ2dyZWdhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAgICAgICAgICAgICogIGNhcHMpOwogICBHc3RGbG93UmV0dXJuICAgICAgKCphZ2dyZWdhdGVfZnJhbWVzKSAgICAgICAgICAoR3N0VmlkZW9BZ2dyZWdhdG9yICogIHZpZGVvYWdncmVnYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEJ1ZmZlciAgICAgICAgICAqICBvdXRidWZmZXIpOwpAQCAtMTA5LDggKzExMiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0luZm8gICAgICAgKiAgYmVzdF9pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICogIGF0X2xlYXN0X29uZV9hbHBoYSk7CiAKLSAgZ2Jvb2xlYW4gICAgICAgICAgIHByZXNlcnZlX3VwZGF0ZV9jYXBzX3Jlc3VsdDsKLQogICBHc3RDYXBzICAgICAgICAgICAqc2lua19ub25fYWxwaGFfY2FwczsKIAogICAvKiA8IHByaXZhdGUgPiAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3dheWxhbmQvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3Qvd2F5bGFuZC9NYWtlZmlsZS5pbgppbmRleCBkZDg3NDIzLi5mZDBjMzllIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3Qvd2F5bGFuZC9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3Qvd2F5bGFuZC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC1wbHVnaW5zLWJhZC5kb2FwIGIvZ3N0LXBsdWdpbnMtYmFkLmRvYXAKaW5kZXggODhiNjE4MC4uZTM2OTc5YSAxMDA2NDQKLS0tIGEvZ3N0LXBsdWdpbnMtYmFkLmRvYXAKKysrIGIvZ3N0LXBsdWdpbnMtYmFkLmRvYXAKQEAgLTM1LDExICszNSw0MSBAQAogCiAgPHJlbGVhc2U+CiAgIDxWZXJzaW9uPgotICAgPHJldmlzaW9uPjEuNi4zPC9yZXZpc2lvbj4KLSAgIDxicmFuY2g+MS42PC9icmFuY2g+CisgICA8cmV2aXNpb24+MS43LjkxPC9yZXZpc2lvbj4KKyAgIDxicmFuY2g+bWFzdGVyPC9icmFuY2g+CiAgICA8bmFtZT48L25hbWU+Ci0gICA8Y3JlYXRlZD4yMDE2LTAxLTIwPC9jcmVhdGVkPgotICAgPGZpbGUtcmVsZWFzZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLTEuNi4zLnRhci54eiIgLz4KKyAgIDxjcmVhdGVkPjIwMTYtMDMtMTU8L2NyZWF0ZWQ+CisgICA8ZmlsZS1yZWxlYXNlIHJkZjpyZXNvdXJjZT0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhZC9nc3QtcGx1Z2lucy1iYWQtMS43LjkxLnRhci54eiIgLz4KKyAgPC9WZXJzaW9uPgorIDwvcmVsZWFzZT4KKworIDxyZWxlYXNlPgorICA8VmVyc2lvbj4KKyAgIDxyZXZpc2lvbj4xLjcuOTA8L3JldmlzaW9uPgorICAgPGJyYW5jaD5tYXN0ZXI8L2JyYW5jaD4KKyAgIDxuYW1lPjwvbmFtZT4KKyAgIDxjcmVhdGVkPjIwMTYtMDMtMDE8L2NyZWF0ZWQ+CisgICA8ZmlsZS1yZWxlYXNlIHJkZjpyZXNvdXJjZT0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhZC9nc3QtcGx1Z2lucy1iYWQtMS43LjkwLnRhci54eiIgLz4KKyAgPC9WZXJzaW9uPgorIDwvcmVsZWFzZT4KKworIDxyZWxlYXNlPgorICA8VmVyc2lvbj4KKyAgIDxyZXZpc2lvbj4xLjcuMjwvcmV2aXNpb24+CisgICA8YnJhbmNoPm1hc3RlcjwvYnJhbmNoPgorICAgPG5hbWU+PC9uYW1lPgorICAgPGNyZWF0ZWQ+MjAxNi0wMi0xOTwvY3JlYXRlZD4KKyAgIDxmaWxlLXJlbGVhc2UgcmRmOnJlc291cmNlPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0xLjcuMi50YXIueHoiIC8+CisgIDwvVmVyc2lvbj4KKyA8L3JlbGVhc2U+CisKKyA8cmVsZWFzZT4KKyAgPFZlcnNpb24+CisgICA8cmV2aXNpb24+MS43LjE8L3JldmlzaW9uPgorICAgPGJyYW5jaD5tYXN0ZXI8L2JyYW5jaD4KKyAgIDxuYW1lPjwvbmFtZT4KKyAgIDxjcmVhdGVkPjIwMTUtMTItMjQ8L2NyZWF0ZWQ+CisgICA8ZmlsZS1yZWxlYXNlIHJkZjpyZXNvdXJjZT0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhZC9nc3QtcGx1Z2lucy1iYWQtMS43LjEudGFyLnh6IiAvPgogICA8L1ZlcnNpb24+CiAgPC9yZWxlYXNlPgogCmRpZmYgLS1naXQgYS9nc3QtcGx1Z2lucy1iYWQuc3BlYyBiL2dzdC1wbHVnaW5zLWJhZC5zcGVjCmluZGV4IDE4MGYzNTkuLjBjNjM2NzQgMTAwNjQ0Ci0tLSBhL2dzdC1wbHVnaW5zLWJhZC5zcGVjCisrKyBiL2dzdC1wbHVnaW5zLWJhZC5zcGVjCkBAIC02LDcgKzYsNyBAQAogCiBTdW1tYXJ5OiBHU3RyZWFtZXIgc3RyZWFtaW5nIG1lZGlhIGZyYW1ld29yayAiYmFkIiBwbHVnLWlucwogTmFtZTogJXtnc3RyZWFtZXJ9LXBsdWdpbnMtYmFkCi1WZXJzaW9uOiAxLjYuMworVmVyc2lvbjogMS43LjkxCiBSZWxlYXNlOiAxLmdzdAogIyBUaGUgZnJlZXplIGFuZCBuZnMgcGx1Z2lucyBhcmUgTEdQTHYyIChvbmx5KQogTGljZW5zZTogTEdQTHYyKyBhbmQgTEdQTHYyCkBAIC0yMjMsNyArMjIzLDYgQEAKICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0ZnJlZXZlcmIuc28KICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0aXZ0Yy5zbwogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RtaWRpLnNvCi0le19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdG1wZzEyMy5zbwogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RyZmJzcmMuc28KICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0c21vb3Roc3RyZWFtaW5nLnNvCiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdHZpZGVvZmlsdGVyc2JhZC5zbwpAQCAtMjMxLDcgKzIzMCw3IEBACiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdHNpcmVuLnNvCiAKICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0ZHZic3Vib3ZlcmxheS5zbwotJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RmcmFnbWVudGVkLnNvCisle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdGhscy5zbwogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3R2aWRlb3BhcnNlcnNiYWQuc28KICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0eTRtZGVjLnNvCiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdGF1ZGlvdmlzdWFsaXplcnMuc28KZGlmZiAtLWdpdCBhL2dzdC1wbHVnaW5zLWJhZC5zcGVjLmluIGIvZ3N0LXBsdWdpbnMtYmFkLnNwZWMuaW4KaW5kZXggOTA3YzYzMi4uNGZiMTdkNyAxMDA2NDQKLS0tIGEvZ3N0LXBsdWdpbnMtYmFkLnNwZWMuaW4KKysrIGIvZ3N0LXBsdWdpbnMtYmFkLnNwZWMuaW4KQEAgLTIyMyw3ICsyMjMsNiBAQAogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RmcmVldmVyYi5zbwogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RpdnRjLnNvCiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdG1pZGkuc28KLSV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0bXBnMTIzLnNvCiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdHJmYnNyYy5zbwogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RzbW9vdGhzdHJlYW1pbmcuc28KICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0dmlkZW9maWx0ZXJzYmFkLnNvCkBAIC0yMzEsNyArMjMwLDcgQEAKICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0c2lyZW4uc28KIAogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RkdmJzdWJvdmVybGF5LnNvCi0le19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdGZyYWdtZW50ZWQuc28KKyV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0aGxzLnNvCiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdHZpZGVvcGFyc2Vyc2JhZC5zbwogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3R5NG1kZWMuc28KICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0YXVkaW92aXN1YWxpemVycy5zbwpkaWZmIC0tZ2l0IGEvZ3N0L01ha2VmaWxlLmluIGIvZ3N0L01ha2VmaWxlLmluCmluZGV4IDNlNGJhODguLjQ2YWU5OTYgMTAwNjQ0Ci0tLSBhL2dzdC9NYWtlZmlsZS5pbgorKysgYi9nc3QvTWFrZWZpbGUuaW4KQEAgLTExOSwxNiArMTE5LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNTMsNiArMjUyLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yOTAsNiArMjkxLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTgsNyArMzAxLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzE3LDggKzMxOSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMzUsMTYgKzMzOCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNzAsNiArMzc0LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzk1LDYgKzQwMSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ5Niw2ICs1MDQsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTA5LDggKzUxOCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUyNiw2ICs1MzMsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTgzLDE2ICs1OTIsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NDQsNiArNjU1LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY1NCw2ICs2NjYsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NjMsNiArNjc2LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcwMCw3ICs3MTUsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9hY2N1cmlwL01ha2VmaWxlLmluIGIvZ3N0L2FjY3VyaXAvTWFrZWZpbGUuaW4KaW5kZXggNGVkNmFhOC4uZWI4MDZhMCAxMDA2NDQKLS0tIGEvZ3N0L2FjY3VyaXAvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2FjY3VyaXAvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvYWRwY21kZWMvTWFrZWZpbGUuaW4gYi9nc3QvYWRwY21kZWMvTWFrZWZpbGUuaW4KaW5kZXggZjEwOWQ2OC4uOTU5OTg0OSAxMDA2NDQKLS0tIGEvZ3N0L2FkcGNtZGVjL01ha2VmaWxlLmluCisrKyBiL2dzdC9hZHBjbWRlYy9NYWtlZmlsZS5pbgpAQCAtMTE1LDE2ICsxMTUsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI3MSw2ICsyNzAsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMwOCw2ICszMDksOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxNiw3ICszMTksNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzUsOCArMzM3LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1MywxNiArMzU2LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM4OCw2ICszOTIsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTMsNiArNDE5LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE0LDYgKzUyMiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MjcsOCArNTM2LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ0LDYgKzU1MSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDEsMTYgKzYxMCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Miw2ICs2NzMsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjcyLDYgKzY4NCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4MSw2ICs2OTQsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzE4LDcgKzczMyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2FkcGNtZW5jL01ha2VmaWxlLmluIGIvZ3N0L2FkcGNtZW5jL01ha2VmaWxlLmluCmluZGV4IGQzMDNlZDAuLjYwODcyY2IgMTAwNjQ0Ci0tLSBhL2dzdC9hZHBjbWVuYy9NYWtlZmlsZS5pbgorKysgYi9nc3QvYWRwY21lbmMvTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNzEsNiArMjcwLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMDgsNiArMzA5LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTYsNyArMzE5LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM1LDggKzMzNyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTMsMTYgKzM1NiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zODgsNiArMzkyLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDEzLDYgKzQxOSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNCw2ICs1MjIsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTI3LDggKzUzNiw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0NCw2ICs1NTEsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjAxLDE2ICs2MTAsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjIsNiArNjczLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Miw2ICs2ODQsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODEsNiArNjk0LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcxOCw3ICs3MzMsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9haWZmL01ha2VmaWxlLmluIGIvZ3N0L2FpZmYvTWFrZWZpbGUuaW4KaW5kZXggZGQ0MjdmMS4uYTQ4YmYyNiAxMDA2NDQKLS0tIGEvZ3N0L2FpZmYvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2FpZmYvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvYWlmZi9haWZmcGFyc2UuYyBiL2dzdC9haWZmL2FpZmZwYXJzZS5jCmluZGV4IDc4ODU0YWUuLjU2MDBhN2UgMTAwNjQ0Ci0tLSBhL2dzdC9haWZmL2FpZmZwYXJzZS5jCisrKyBiL2dzdC9haWZmL2FpZmZwYXJzZS5jCkBAIC0zNSwxNCArMzUsMTQgQEAKICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIDxwYXJhPgogICogPHByb2dyYW1saXN0aW5nPgotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPXNpbmUuYWlmZiAhIGFpZmZwYXJzZSAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPXNpbmUuYWlmZiAhIGFpZmZwYXJzZSAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rCiAgKiA8L3Byb2dyYW1saXN0aW5nPgogICogUmVhZCBhIGFpZmYgZmlsZSBhbmQgb3V0cHV0IHRvIHRoZSBzb3VuZGNhcmQgdXNpbmcgdGhlIEFMU0EgZWxlbWVudC4gVGhlCiAgKiBhaWZmIGZpbGUgaXMgYXNzdW1lZCB0byBjb250YWluIHJhdyB1bmNvbXByZXNzZWQgc2FtcGxlcy4KICAqIDwvcGFyYT4KICAqIDxwYXJhPgogICogPHByb2dyYW1saXN0aW5nPgotICogZ3N0LWxhdW5jaCBzb3VwaGh0cHNyYyBsb2NhdGlvbj1odHRwOi8vd3d3LmV4YW1wbGUub3JnL3NpbmUuYWlmZiAhIHF1ZXVlICEgYWlmZnBhcnNlICEgYXVkaW9jb252ZXJ0ICEgYWxzYXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIHNvdXBodHRwc3JjIGxvY2F0aW9uPWh0dHA6Ly93d3cuZXhhbXBsZS5vcmcvc2luZS5haWZmICEgcXVldWUgISBhaWZmcGFyc2UgISBhdWRpb2NvbnZlcnQgISBhbHNhc2luawogICogPC9wcm9ncmFtbGlzdGluZz4KICAqIFN0cmVhbSBkYXRhIGZyb20gYSBuZXR3b3JrIHVybC4KICAqIDwvcGFyYT4KQEAgLTgxNiwxMSArODE2LDE0IEBACiAKIH0KIAorI2RlZmluZSBfUChwb3MpIChHX0dVSU5UNjRfQ09OU1RBTlQgKDEpIDw8IEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OXyAjI3BvcykKKwogc3RhdGljIEdzdENhcHMgKgogZ3N0X2FpZmZfcGFyc2VfY3JlYXRlX2NhcHMgKEdzdEFpZmZQYXJzZSAqIGFpZmYpCiB7CiAgIEdzdENhcHMgKmNhcHMgPSBOVUxMOwogICBjb25zdCBnY2hhciAqZm9ybWF0ID0gTlVMTDsKKyAgZ3VpbnQ2NCBjaGFubmVsX21hc2s7CiAKICAgaWYgKGFpZmYtPmZsb2F0aW5nX3BvaW50KSB7CiAgICAgaWYgKGFpZmYtPmVuZGlhbm5lc3MgPT0gR19CSUdfRU5ESUFOKSB7CkBAIC04NTgsNiArODYxLDQ0IEBACiAgICAgICAgICJyYXRlIiwgR19UWVBFX0lOVCwgYWlmZi0+cmF0ZSwgTlVMTCk7CiAgIH0KIAorICBpZiAoYWlmZi0+Y2hhbm5lbHMgPiAyKSB7CisgICAgR1NUX0ZJWE1FX09CSkVDVCAoYWlmZiwgInVzaW5nIGZhbGxiYWNrIGNoYW5uZWwgbGF5b3V0IGZvciAlZCBjaGFubmVscyIsCisgICAgICAgIGFpZmYtPmNoYW5uZWxzKTsKKworICAgIC8qIGJhc2VkIG9uIEFJRkYtMS4zLnBkZiAqLworICAgIHN3aXRjaCAoYWlmZi0+Y2hhbm5lbHMpIHsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgY2hhbm5lbF9tYXNrID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDI6CisgICAgICAgIGNoYW5uZWxfbWFzayA9IF9QIChGUk9OVF9MRUZUKSB8IF9QIChGUk9OVF9SSUdIVCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAzOgorICAgICAgICBjaGFubmVsX21hc2sgPSBfUCAoRlJPTlRfTEVGVCkgfCBfUCAoRlJPTlRfUklHSFQpIHwgX1AgKEZST05UX0NFTlRFUik7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA0OgorICAgICAgICAvKiBsaXN0cyBib3RoIHRoaXMgYW5kICdxdWFkJyBidXQgZG9lc24ndCBzYXkgaG93IHRvIGRpc3Rpbmd1aXNoIHRoZSB0d28gKi8KKyAgICAgICAgY2hhbm5lbF9tYXNrID0KKyAgICAgICAgICAgIF9QIChGUk9OVF9MRUZUKSB8IF9QIChGUk9OVF9SSUdIVCkgfCBfUCAoUkVBUl9MRUZUKSB8CisgICAgICAgICAgICBfUCAoUkVBUl9SSUdIVCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2OgorICAgICAgICBjaGFubmVsX21hc2sgPQorICAgICAgICAgICAgX1AgKEZST05UX0xFRlQpIHwgX1AgKEZST05UX0xFRlRfT0ZfQ0VOVEVSKSB8IF9QIChGUk9OVF9DRU5URVIpIHwKKyAgICAgICAgICAgIF9QIChGUk9OVF9SSUdIVCkgfCBfUCAoRlJPTlRfUklHSFRfT0ZfQ0VOVEVSKSB8IF9QIChMRkUxKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBjaGFubmVsX21hc2sgPSBnc3RfYXVkaW9fY2hhbm5lbF9nZXRfZmFsbGJhY2tfbWFzayAoYWlmZi0+Y2hhbm5lbHMpOworICAgICAgICBicmVhazsKKyAgICB9CisKKworICAgIGlmIChjaGFubmVsX21hc2sgIT0gMCkgeworICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgImNoYW5uZWwtbWFzayIsIEdTVF9UWVBFX0JJVE1BU0ssIGNoYW5uZWxfbWFzaywKKyAgICAgICAgICBOVUxMKTsKKyAgICB9CisgIH0KKwogICBHU1RfREVCVUdfT0JKRUNUIChhaWZmLCAiQ3JlYXRlZCBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CiAKICAgcmV0dXJuIGNhcHM7CkBAIC0xMDUwLDYgKzEwOTEsMTEgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICAgIH0KKyAgICAgIGNhc2UgR1NUX01BS0VfRk9VUkNDICgnQycsICdIJywgJ0EnLCAnTicpOnsKKyAgICAgICAgR1NUX0ZJWE1FX09CSkVDVCAoYWlmZiwgIkhhbmRsZSBDSEFOIGNodW5rIHdpdGggY2hhbm5lbCBsYXlvdXRzIik7CisgICAgICAgIGdzdF9haWZmX3BhcnNlX2lnbm9yZV9jaHVuayAoYWlmZiwgdGFnLCBzaXplKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CiAgICAgICBkZWZhdWx0OgogICAgICAgICBnc3RfYWlmZl9wYXJzZV9pZ25vcmVfY2h1bmsgKGFpZmYsIHRhZywgc2l6ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3N0L2FzZm11eC9NYWtlZmlsZS5pbiBiL2dzdC9hc2ZtdXgvTWFrZWZpbGUuaW4KaW5kZXggMDhjZWU0Zi4uODRjZGNiOSAxMDA2NDQKLS0tIGEvZ3N0L2FzZm11eC9NYWtlZmlsZS5pbgorKysgYi9nc3QvYXNmbXV4L01ha2VmaWxlLmluCkBAIC0xMTgsMTYgKzExOCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OSw2ICsyNzgsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNiw2ICszMTcsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNCw3ICszMjcsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDMsOCArMzQ1LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MSwxNiArMzY0LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Niw2ICs0MDAsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjEsNiArNDI3LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIyLDYgKzUzMCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzUsOCArNTQ0LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUyLDYgKzU1OSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDksMTYgKzYxOCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3MCw2ICs2ODEsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgwLDYgKzY5Miw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OSw2ICs3MDIsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI2LDcgKzc0MSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2FzZm11eC9nc3Rhc2ZtdXguYyBiL2dzdC9hc2ZtdXgvZ3N0YXNmbXV4LmMKaW5kZXggYzc3ZjhiNi4uNDU2MTdiZSAxMDA2NDQKLS0tIGEvZ3N0L2FzZm11eC9nc3Rhc2ZtdXguYworKysgYi9nc3QvYXNmbXV4L2dzdGFzZm11eC5jCkBAIC0zNSwxMSArMzUsMTEgQEAKICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lczwvdGl0bGU+CiAgKiA8cGFyYT4od3JpdGUgZXZlcnl0aGluZyBpbiBvbmUgbGluZSwgd2l0aG91dCB0aGUgYmFja3NsYXNoIGNoYXJhY3RlcnMpPC9wYXJhPgogICogfFsKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTI1MCBcCi0gKiAhICJ2aWRlby94LXJhdyxmb3JtYXQ9KHN0cmluZylJNDIwLGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjUvMSIgISBmZmVuY193bXYyIFwKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0yNTAgXAorICogISAidmlkZW8veC1yYXcsZm9ybWF0PShzdHJpbmcpSTQyMCxmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEiICEgYXZlbmNfd212MiBcCiAgKiAhIGFzZm11eCBuYW1lPW11eCAhIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3QuYXNmIFwKICAqIGF1ZGlvdGVzdHNyYyBudW0tYnVmZmVycz00NDAgISBhdWRpb2NvbnZlcnQgXAotICogISAiYXVkaW8veC1yYXcscmF0ZT00NDEwMCIgISBmZmVuY193bWF2MiAhIG11eC4KKyAqICEgImF1ZGlvL3gtcmF3LHJhdGU9NDQxMDAiICEgYXZlbmNfd21hdjIgISBtdXguCiAgKiBdfCBUaGlzIGNyZWF0ZXMgYW4gQVNGIGZpbGUgY29udGFpbmluZyBhbiBXTVYgdmlkZW8gc3RyZWFtCiAgKiB3aXRoIGEgdGVzdCBwaWN0dXJlIGFuZCBXTUEgYXVkaW8gc3RyZWFtIG9mIGEgdGVzdCBzb3VuZC4KICAqCkBAIC01NCwxMyArNTQsMTMgQEAKICAqIDxwYXJhPih3cml0ZSBldmVyeXRoaW5nIGluIG9uZSBsaW5lLCB3aXRob3V0IHRoZSBiYWNrc2xhc2ggY2hhcmFjdGVycyk8L3BhcmE+CiAgKiBTZXJ2ZXIgKHNlbmRlcikKICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12ZSB2aWRlb3Rlc3RzcmMgISBmZmVuY193bXYyICEgYXNmbXV4IG5hbWU9bXV4IHN0cmVhbWFibGU9dHJ1ZSBcCisgKiBnc3QtbGF1bmNoLTEuMCAtdmUgdmlkZW90ZXN0c3JjICEgYXZlbmNfd212MiAhIGFzZm11eCBuYW1lPW11eCBzdHJlYW1hYmxlPXRydWUgXAogICogISBydHBhc2ZwYXkgISB1ZHBzaW5rIGhvc3Q9MTI3LjAuMC4xIHBvcnQ9MzMzMyBcCi0gKiBhdWRpb3Rlc3RzcmMgISBmZmVuY193bWF2MiAhIG11eC4KKyAqIGF1ZGlvdGVzdHNyYyAhIGF2ZW5jX3dtYXYyICEgbXV4LgogICogXXwKICAqIENsaWVudCAocmVjZWl2ZXIpCiAgKiB8WwotICogZ3N0LWxhdW5jaCB1ZHBzcmMgcG9ydD0zMzMzICEgImNhcHNfZnJvbV9ydHBhc2ZwYXlfYXRfc2VuZGVyIiBcCisgKiBnc3QtbGF1bmNoLTEuMCB1ZHBzcmMgcG9ydD0zMzMzICEgImNhcHNfZnJvbV9ydHBhc2ZwYXlfYXRfc2VuZGVyIiBcCiAgKiAhIHJ0cGFzZmRlcGF5ICEgZGVjb2RlYmluIG5hbWU9ZCAhIHF1ZXVlIFwKICAqICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luayBcCiAgKiBkLiAhIHF1ZXVlICEgYXVkaW9jb252ZXJ0ICEgYXV0b2F1ZGlvc2luawpkaWZmIC0tZ2l0IGEvZ3N0L2F1ZGlvZnhiYWQvTWFrZWZpbGUuaW4gYi9nc3QvYXVkaW9meGJhZC9NYWtlZmlsZS5pbgppbmRleCBjNTYwODFmLi4wMjhkOGM5IDEwMDY0NAotLS0gYS9nc3QvYXVkaW9meGJhZC9NYWtlZmlsZS5pbgorKysgYi9nc3QvYXVkaW9meGJhZC9NYWtlZmlsZS5pbgpAQCAtMTE1LDE2ICsxMTUsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI3Myw2ICsyNzIsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMCw2ICszMTEsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOCw3ICszMjEsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzcsOCArMzM5LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NSwxNiArMzU4LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MCw2ICszOTQsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTUsNiArNDIxLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE2LDYgKzUyNCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MjksOCArNTM4LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ2LDYgKzU1Myw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDMsMTYgKzYxMiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NCw2ICs2NzUsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc0LDYgKzY4Niw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Myw2ICs2OTYsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIwLDcgKzczNSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2F1ZGlvZnhiYWQvZ3N0YXVkaW9jaGFubmVsbWl4LmMgYi9nc3QvYXVkaW9meGJhZC9nc3RhdWRpb2NoYW5uZWxtaXguYwppbmRleCBmYTQ4YzI2Li5hZWJlODRhIDEwMDY0NAotLS0gYS9nc3QvYXVkaW9meGJhZC9nc3RhdWRpb2NoYW5uZWxtaXguYworKysgYi9nc3QvYXVkaW9meGJhZC9nc3RhdWRpb2NoYW5uZWxtaXguYwpAQCAtMjcsNyArMjcsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgYXVkaW90ZXN0c3JjICEgYXVkaW9jaGFubmVsbWl4ICEgYXV0b2F1ZGlvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgYXVkaW90ZXN0c3JjICEgYXVkaW9jaGFubmVsbWl4ICEgYXV0b2F1ZGlvc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC9hdWRpb21peGVyL01ha2VmaWxlLmFtIGIvZ3N0L2F1ZGlvbWl4ZXIvTWFrZWZpbGUuYW0KaW5kZXggYTEyNmY5MC4uOTEwNGMxYiAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvbWl4ZXIvTWFrZWZpbGUuYW0KKysrIGIvZ3N0L2F1ZGlvbWl4ZXIvTWFrZWZpbGUuYW0KQEAgLTQsNyArNCw3IEBACiBpbmNsdWRlICQodG9wX3NyY2RpcikvY29tbW9uL29yYy5tYWsKIAogCi1saWJnc3RhdWRpb21peGVyX2xhX1NPVVJDRVMgPSBnc3RhdWRpb21peGVyLmMgZ3N0YXVkaW9hZ2dyZWdhdG9yLmMgZ3N0YXVkaW9pbnRlcmxlYXZlLmMKK2xpYmdzdGF1ZGlvbWl4ZXJfbGFfU09VUkNFUyA9IGdzdGF1ZGlvbWl4ZXIuYyBnc3RhdWRpb2ludGVybGVhdmUuYwogbm9kaXN0X2xpYmdzdGF1ZGlvbWl4ZXJfbGFfU09VUkNFUyA9ICQoT1JDX05PRElTVF9TT1VSQ0VTKQogbGliZ3N0YXVkaW9taXhlcl9sYV9DRkxBR1MgPSBcCiAJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKQEAgLTE0LDkgKzE0LDEwIEBACiBsaWJnc3RhdWRpb21peGVyX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdGF1ZGlvbWl4ZXJfbGFfTElCQUREID0gIFwKIAkJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9iYXNlL2xpYmdzdGJhZGJhc2UtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKKwkJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hdWRpby9saWJnc3RiYWRhdWRpby0kKEdTVF9BUElfVkVSU0lPTikubGEgXAogCQkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCiAJCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChPUkNfTElCUykKIGxpYmdzdGF1ZGlvbWl4ZXJfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKIAotbm9pbnN0X0hFQURFUlMgPSBnc3RhdWRpb21peGVyLmggZ3N0YXVkaW9hZ2dyZWdhdG9yLmggZ3N0YXVkaW9pbnRlcmxlYXZlLmgKK25vaW5zdF9IRUFERVJTID0gZ3N0YXVkaW9taXhlci5oIGdzdGF1ZGlvaW50ZXJsZWF2ZS5oCiAKZGlmZiAtLWdpdCBhL2dzdC9hdWRpb21peGVyL01ha2VmaWxlLmluIGIvZ3N0L2F1ZGlvbWl4ZXIvTWFrZWZpbGUuaW4KaW5kZXggYTRlYjcxOS4uMzg5YzRkMiAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvbWl4ZXIvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2F1ZGlvbWl4ZXIvTWFrZWZpbGUuaW4KQEAgLTEzOCwxNiArMTM4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTg3LDEwICsxODYsMTAgQEAKIExUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQogbGliZ3N0YXVkaW9taXhlcl9sYV9ERVBFTkRFTkNJRVMgPSAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2Jhc2UvbGliZ3N0YmFkYmFzZS0kKEdTVF9BUElfVkVSU0lPTikubGEgXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYXVkaW8vbGliZ3N0YmFkYXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpCiBhbV9saWJnc3RhdWRpb21peGVyX2xhX09CSkVDVFMgPSBsaWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvbWl4ZXIubG8gXAotCWxpYmdzdGF1ZGlvbWl4ZXJfbGEtZ3N0YXVkaW9hZ2dyZWdhdG9yLmxvIFwKIAlsaWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvaW50ZXJsZWF2ZS5sbwogYW1fX29iamVjdHNfMSA9IGxpYmdzdGF1ZGlvbWl4ZXJfbGEtdG1wLW9yYy5sbwogbm9kaXN0X2xpYmdzdGF1ZGlvbWl4ZXJfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMSkKQEAgLTMwNCw2ICszMDMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTM0MSw2ICszNDIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTM0OSw3ICszNTIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNjgsOCArMzcwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM4NiwxNiArMzg5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQyMSw2ICs0MjUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00NDYsNiArNDUyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTQ3LDYgKzU1NSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NjAsOCArNTY5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTc3LDYgKzU4NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MzQsMTYgKzY0MywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY5NSw2ICs3MDYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNzA1LDYgKzcxNyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcxNCw2ICs3MjcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzUxLDcgKzc2Niw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtODAyLDcgKzgxNiw3IEBACiBjcF92X2dlbiA9ICQoY3Bfdl9nZW5fJChWKSkKIGNwX3ZfZ2VuXyA9ICQoY3Bfdl9nZW5fJChBTV9ERUZBVUxUX1ZFUkJPU0lUWSkpCiBjcF92X2dlbl8wID0gQGVjaG8gIiAgQ1AgICAgICRAIjsKLWxpYmdzdGF1ZGlvbWl4ZXJfbGFfU09VUkNFUyA9IGdzdGF1ZGlvbWl4ZXIuYyBnc3RhdWRpb2FnZ3JlZ2F0b3IuYyBnc3RhdWRpb2ludGVybGVhdmUuYworbGliZ3N0YXVkaW9taXhlcl9sYV9TT1VSQ0VTID0gZ3N0YXVkaW9taXhlci5jIGdzdGF1ZGlvaW50ZXJsZWF2ZS5jCiBub2Rpc3RfbGliZ3N0YXVkaW9taXhlcl9sYV9TT1VSQ0VTID0gJChPUkNfTk9ESVNUX1NPVVJDRVMpCiBsaWJnc3RhdWRpb21peGVyX2xhX0NGTEFHUyA9IFwKIAktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXApAQCAtODEzLDExICs4MjcsMTIgQEAKIGxpYmdzdGF1ZGlvbWl4ZXJfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQogbGliZ3N0YXVkaW9taXhlcl9sYV9MSUJBREQgPSBcCiAJCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYmFzZS9saWJnc3RiYWRiYXNlLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCisJCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYXVkaW8vbGliZ3N0YmFkYXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKIAkJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAogCQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoT1JDX0xJQlMpCiAKIGxpYmdzdGF1ZGlvbWl4ZXJfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKLW5vaW5zdF9IRUFERVJTID0gZ3N0YXVkaW9taXhlci5oIGdzdGF1ZGlvYWdncmVnYXRvci5oIGdzdGF1ZGlvaW50ZXJsZWF2ZS5oCitub2luc3RfSEVBREVSUyA9IGdzdGF1ZGlvbWl4ZXIuaCBnc3RhdWRpb2ludGVybGVhdmUuaAogYWxsOiAkKEJVSUxUX1NPVVJDRVMpCiAJJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYWxsLWFtCiAKQEAgLTg5OCw3ICs5MTMsNiBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGF1ZGlvbWl4ZXJfbGEtZ3N0YXVkaW9hZ2dyZWdhdG9yLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb2ludGVybGVhdmUuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvbWl4ZXIuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhdWRpb21peGVyX2xhLXRtcC1vcmMuUGxvQGFtX19xdW90ZUAKQEAgLTkzNCwxMyArOTQ4LDYgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhdWRpb21peGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGF1ZGlvbWl4ZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb21peGVyLmxvIGB0ZXN0IC1mICdnc3RhdWRpb21peGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGF1ZGlvbWl4ZXIuYwogCi1saWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5sbzogZ3N0YXVkaW9hZ2dyZWdhdG9yLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhdWRpb21peGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGF1ZGlvbWl4ZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGF1ZGlvbWl4ZXJfbGEtZ3N0YXVkaW9hZ2dyZWdhdG9yLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5UcG8gLWMgLW8gbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IubG8gYHRlc3QgLWYgJ2dzdGF1ZGlvYWdncmVnYXRvci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhdWRpb2FnZ3JlZ2F0b3IuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IuVHBvICQoREVQRElSKS9saWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RhdWRpb2FnZ3JlZ2F0b3IuYycgb2JqZWN0PSdsaWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGF1ZGlvbWl4ZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXVkaW9taXhlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5sbyBgdGVzdCAtZiAnZ3N0YXVkaW9hZ2dyZWdhdG9yLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGF1ZGlvYWdncmVnYXRvci5jCi0KIGxpYmdzdGF1ZGlvbWl4ZXJfbGEtZ3N0YXVkaW9pbnRlcmxlYXZlLmxvOiBnc3RhdWRpb2ludGVybGVhdmUuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGF1ZGlvbWl4ZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXVkaW9taXhlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb2ludGVybGVhdmUubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGF1ZGlvbWl4ZXJfbGEtZ3N0YXVkaW9pbnRlcmxlYXZlLlRwbyAtYyAtbyBsaWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvaW50ZXJsZWF2ZS5sbyBgdGVzdCAtZiAnZ3N0YXVkaW9pbnRlcmxlYXZlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGF1ZGlvaW50ZXJsZWF2ZS5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvaW50ZXJsZWF2ZS5UcG8gJChERVBESVIpL2xpYmdzdGF1ZGlvbWl4ZXJfbGEtZ3N0YXVkaW9pbnRlcmxlYXZlLlBsbwpkaWZmIC0tZ2l0IGEvZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9pbnRlcmxlYXZlLmggYi9nc3QvYXVkaW9taXhlci9nc3RhdWRpb2ludGVybGVhdmUuaAppbmRleCAwNDczYjQ1Li42ZGQ4MmQzIDEwMDY0NAotLS0gYS9nc3QvYXVkaW9taXhlci9nc3RhdWRpb2ludGVybGVhdmUuaAorKysgYi9nc3QvYXVkaW9taXhlci9nc3RhdWRpb2ludGVybGVhdmUuaApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KIAotI2luY2x1ZGUgImdzdGF1ZGlvYWdncmVnYXRvci5oIgorI2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb2FnZ3JlZ2F0b3IuaD4KIAogR19CRUdJTl9ERUNMUwogCmRpZmYgLS1naXQgYS9nc3QvYXVkaW9taXhlci9nc3RhdWRpb21peGVyLmMgYi9nc3QvYXVkaW9taXhlci9nc3RhdWRpb21peGVyLmMKaW5kZXggMzk2NmE4Zi4uYjIxMWY3ZCAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9taXhlci5jCisrKyBiL2dzdC9hdWRpb21peGVyL2dzdGF1ZGlvbWl4ZXIuYwpAQCAtNDQsNyArNDQsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggYXVkaW90ZXN0c3JjIGZyZXE9MTAwICEgYXVkaW9taXhlciBuYW1lPW1peCAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rIGF1ZGlvdGVzdHNyYyBmcmVxPTUwMCAhIG1peC4KKyAqIGdzdC1sYXVuY2gtMS4wIGF1ZGlvdGVzdHNyYyBmcmVxPTEwMCAhIGF1ZGlvbWl4ZXIgbmFtZT1taXggISBhdWRpb2NvbnZlcnQgISBhbHNhc2luayBhdWRpb3Rlc3RzcmMgZnJlcT01MDAgISBtaXguCiAgKiBdfCBUaGlzIHBpcGVsaW5lIHByb2R1Y2VzIHR3byBzaW5lIHdhdmVzIG1peGVkIHRvZ2V0aGVyLgogICogPC9yZWZzZWN0Mj4KICAqCkBAIC03ODEsNiArNzgxLDk3IEBACiAgIGlmYWNlLT5nZXRfY2hpbGRyZW5fY291bnQgPSBnc3RfYXVkaW9taXhlcl9jaGlsZF9wcm94eV9nZXRfY2hpbGRyZW5fY291bnQ7CiB9CiAKKy8qIEVtcHR5IGxpdmVhZGRlciBhbGlhcyB3aXRoIG5vbi16ZXJvIGxhdGVuY3kgKi8KKwordHlwZWRlZiBHc3RBdWRpb01peGVyIEdzdExpdmVBZGRlcjsKK3R5cGVkZWYgR3N0QXVkaW9NaXhlckNsYXNzIEdzdExpdmVBZGRlckNsYXNzOworCitzdGF0aWMgR1R5cGUgZ3N0X2xpdmVfYWRkZXJfZ2V0X3R5cGUgKHZvaWQpOworI2RlZmluZSBHU1RfVFlQRV9MSVZFX0FEREVSIGdzdF9saXZlX2FkZGVyX2dldF90eXBlICgpCisKK0dfREVGSU5FX1RZUEUgKEdzdExpdmVBZGRlciwgZ3N0X2xpdmVfYWRkZXIsIEdTVF9UWVBFX0FVRElPX01JWEVSKTsKKworZW51bQoreworICBMSVZFQURERVJfUFJPUF9MQVRFTkNZID0gMQorfTsKKworc3RhdGljIHZvaWQKK2dzdF9saXZlX2FkZGVyX2luaXQgKEdzdExpdmVBZGRlciAqIHNlbGYpCit7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbGl2ZV9hZGRlcl9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBMSVZFQURERVJfUFJPUF9MQVRFTkNZOgorICAgIHsKKyAgICAgIEdQYXJhbVNwZWMgKnBhcmVudF9zcGVjID0KKyAgICAgICAgICBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChHX09CSkVDVF9DTEFTUworICAgICAgICAgIChnc3RfbGl2ZV9hZGRlcl9wYXJlbnRfY2xhc3MpLCAibGF0ZW5jeSIpOworICAgICAgR09iamVjdENsYXNzICpwc3BlY19jbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVrIChwYXJlbnRfc3BlYy0+b3duZXJfdHlwZSk7CisgICAgICBHVmFsdWUgdiA9IHsgMCB9OworCisgICAgICBnX3ZhbHVlX2luaXQgKCZ2LCBHX1RZUEVfSU5UNjQpOworCisgICAgICBnX3ZhbHVlX3NldF9pbnQ2NCAoJnYsIGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKSAqIEdTVF9NU0VDT05EKTsKKworICAgICAgR19PQkpFQ1RfQ0xBU1MgKHBzcGVjX2NsYXNzKS0+c2V0X3Byb3BlcnR5IChvYmplY3QsCisgICAgICAgICAgcGFyZW50X3NwZWMtPnBhcmFtX2lkLCAmdiwgcGFyZW50X3NwZWMpOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9saXZlX2FkZGVyX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsCisgICAgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIExJVkVBRERFUl9QUk9QX0xBVEVOQ1k6CisgICAgeworICAgICAgR1BhcmFtU3BlYyAqcGFyZW50X3NwZWMgPQorICAgICAgICAgIGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKEdfT0JKRUNUX0NMQVNTCisgICAgICAgICAgKGdzdF9saXZlX2FkZGVyX3BhcmVudF9jbGFzcyksICJsYXRlbmN5Iik7CisgICAgICBHT2JqZWN0Q2xhc3MgKnBzcGVjX2NsYXNzID0gZ190eXBlX2NsYXNzX3BlZWsgKHBhcmVudF9zcGVjLT5vd25lcl90eXBlKTsKKyAgICAgIEdWYWx1ZSB2ID0geyAwIH07CisKKyAgICAgIGdfdmFsdWVfaW5pdCAoJnYsIEdfVFlQRV9JTlQ2NCk7CisKKyAgICAgIEdfT0JKRUNUX0NMQVNTIChwc3BlY19jbGFzcyktPmdldF9wcm9wZXJ0eSAob2JqZWN0LAorICAgICAgICAgIHBhcmVudF9zcGVjLT5wYXJhbV9pZCwgJnYsIHBhcmVudF9zcGVjKTsKKworICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIGdfdmFsdWVfZ2V0X2ludDY0ICgmdikgLyBHU1RfTVNFQ09ORCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCisKK3N0YXRpYyB2b2lkCitnc3RfbGl2ZV9hZGRlcl9jbGFzc19pbml0IChHc3RMaXZlQWRkZXJDbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworCisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9saXZlX2FkZGVyX3NldF9wcm9wZXJ0eTsKKyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2xpdmVfYWRkZXJfZ2V0X3Byb3BlcnR5OworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIExJVkVBRERFUl9QUk9QX0xBVEVOQ1ksCisgICAgICBnX3BhcmFtX3NwZWNfdWludCAoImxhdGVuY3kiLCAiQnVmZmVyIGxhdGVuY3kiLAorICAgICAgICAgICJBZGRpdGlvbmFsIGxhdGVuY3kgaW4gbGl2ZSBtb2RlIHRvIGFsbG93IHVwc3RyZWFtICIKKyAgICAgICAgICAidG8gdGFrZSBsb25nZXIgdG8gcHJvZHVjZSBidWZmZXJzIGZvciB0aGUgY3VycmVudCAiCisgICAgICAgICAgInBvc2l0aW9uIChpbiBtaWxsaXNlY29uZHMpIiwgMCwgR19NQVhVSU5ULAorICAgICAgICAgIDMwLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfCBHX1BBUkFNX0NPTlNUUlVDVCkpOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4KIHBsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCiB7CkBAIC03OTEsNiArODgyLDEwIEBACiAgICAgICAgICAgR1NUX1RZUEVfQVVESU9fTUlYRVIpKQogICAgIHJldHVybiBGQUxTRTsKIAorICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJsaXZlYWRkZXIiLCBHU1RfUkFOS19OT05FLAorICAgICAgICAgIEdTVF9UWVBFX0xJVkVfQURERVIpKQorICAgIHJldHVybiBGQUxTRTsKKwogICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJhdWRpb2ludGVybGVhdmUiLCBHU1RfUkFOS19OT05FLAogICAgICAgICAgIEdTVF9UWVBFX0FVRElPX0lOVEVSTEVBVkUpKQogICAgIHJldHVybiBGQUxTRTsKZGlmZiAtLWdpdCBhL2dzdC9hdWRpb21peGVyL2dzdGF1ZGlvbWl4ZXIuaCBiL2dzdC9hdWRpb21peGVyL2dzdGF1ZGlvbWl4ZXIuaAppbmRleCBhZGQ2ZTMyLi4wZTQwOThkIDEwMDY0NAotLS0gYS9nc3QvYXVkaW9taXhlci9nc3RhdWRpb21peGVyLmgKKysrIGIvZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9taXhlci5oCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0jaW5jbHVkZSAiZ3N0YXVkaW9hZ2dyZWdhdG9yLmgiCisjaW5jbHVkZSA8Z3N0L2F1ZGlvL2dzdGF1ZGlvYWdncmVnYXRvci5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL01ha2VmaWxlLmFtIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvTWFrZWZpbGUuYW0KaW5kZXggYTY2OTkwMC4uZWM5YjA1ZiAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvTWFrZWZpbGUuYW0KKysrIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvTWFrZWZpbGUuYW0KQEAgLTEsNyArMSw2IEBACiBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzLmxhCiAKIGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGFfU09VUkNFUyA9IHBsdWdpbi5jIFwKLSAgICBnc3RhdWRpb3Zpc3VhbGl6ZXIuYyBnc3RhdWRpb3Zpc3VhbGl6ZXIuaCBcCiAgICAgZ3N0c3BhY2VzY29wZS5jIGdzdHNwYWNlc2NvcGUuaCBcCiAgICAgZ3N0c3BlY3RyYXNjb3BlLmMgZ3N0c3BlY3RyYXNjb3BlLmggXAogICAgIGdzdHN5bmFlc2NvcGUuYyBnc3RzeW5hZXNjb3BlLmggXApAQCAtMTMsOSArMTIsMTIgQEAKIGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGFfTElCQUREID0gXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCiAJLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgLWxnc3RmZnQtJChHU1RfQVBJX1ZFUlNJT04pIFwKLQkkKEdTVF9CQVNFX0xJQlMpICAkKEdTVF9MSUJTKSAkKExJQk0pCisJLWxnc3RwYnV0aWxzLSQoR1NUX0FQSV9WRVJTSU9OKSAkKEdTVF9CQVNFX0xJQlMpICAkKEdTVF9MSUJTKSAkKExJQk0pCiBsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKIAotbm9pbnN0X0hFQURFUlMgPSBnc3RhdWRpb3Zpc3VhbGl6ZXIuaCBnc3RkcmF3aGVscGVycy5oIFwKLQlnc3RzcGFjZXNjb3BlLmggZ3N0c3BlY3RyYXNjb3BlLmggZ3N0c3luYWVzY29wZS5oIGdzdHdhdmVzY29wZS5oCitub2luc3RfSEVBREVSUyA9IGdzdGRyYXdoZWxwZXJzLmggXAorCWdzdHNwYWNlc2NvcGUuaCBcCisJZ3N0c3BlY3RyYXNjb3BlLmggXAorCWdzdHN5bmFlc2NvcGUuaCBcCisJZ3N0d2F2ZXNjb3BlLmgKZGlmZiAtLWdpdCBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL01ha2VmaWxlLmluIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvTWFrZWZpbGUuaW4KaW5kZXggYzkzMDE0MS4uNGJmZGY5ZSAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTY5LDcgKzE2OCw2IEBACiAJJChhbV9fREVQRU5ERU5DSUVTXzEpCiBhbV9saWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhX09CSkVDVFMgPSAgXAogCWxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtcGx1Z2luLmxvIFwKLQlsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdGF1ZGlvdmlzdWFsaXplci5sbyBcCiAJbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RzcGFjZXNjb3BlLmxvIFwKIAlsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdHNwZWN0cmFzY29wZS5sbyBcCiAJbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RzeW5hZXNjb3BlLmxvIFwKQEAgLTI4Myw2ICsyODEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMyMCw2ICszMjAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyOCw3ICszMzAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDcsOCArMzQ4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2NSwxNiArMzY3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQwMCw2ICs0MDMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjUsNiArNDMwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI2LDYgKzUzMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzksOCArNTQ3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU2LDYgKzU2Miw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTMsMTYgKzYyMSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3NCw2ICs2ODQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjg0LDYgKzY5NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5Myw2ICs3MDUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzMwLDcgKzc0NCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzcyLDcgKzc4NSw2IEBACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAogcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0YXVkaW92aXN1YWxpemVycy5sYQogbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYV9TT1VSQ0VTID0gcGx1Z2luLmMgXAotICAgIGdzdGF1ZGlvdmlzdWFsaXplci5jIGdzdGF1ZGlvdmlzdWFsaXplci5oIFwKICAgICBnc3RzcGFjZXNjb3BlLmMgZ3N0c3BhY2VzY29wZS5oIFwKICAgICBnc3RzcGVjdHJhc2NvcGUuYyBnc3RzcGVjdHJhc2NvcGUuaCBcCiAgICAgZ3N0c3luYWVzY29wZS5jIGdzdHN5bmFlc2NvcGUuaCBcCkBAIC03ODUsMTIgKzc5NywxNSBAQAogbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYV9MSUJBREQgPSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKIAktbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKSAtbGdzdGZmdC0kKEdTVF9BUElfVkVSU0lPTikgXAotCSQoR1NUX0JBU0VfTElCUykgICQoR1NUX0xJQlMpICQoTElCTSkKKwktbGdzdHBidXRpbHMtJChHU1RfQVBJX1ZFUlNJT04pICQoR1NUX0JBU0VfTElCUykgICQoR1NUX0xJQlMpICQoTElCTSkKIAogbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCiBsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCi1ub2luc3RfSEVBREVSUyA9IGdzdGF1ZGlvdmlzdWFsaXplci5oIGdzdGRyYXdoZWxwZXJzLmggXAotCWdzdHNwYWNlc2NvcGUuaCBnc3RzcGVjdHJhc2NvcGUuaCBnc3RzeW5hZXNjb3BlLmggZ3N0d2F2ZXNjb3BlLmgKK25vaW5zdF9IRUFERVJTID0gZ3N0ZHJhd2hlbHBlcnMuaCBcCisJZ3N0c3BhY2VzY29wZS5oIFwKKwlnc3RzcGVjdHJhc2NvcGUuaCBcCisJZ3N0c3luYWVzY29wZS5oIFwKKwlnc3R3YXZlc2NvcGUuaAogCiBhbGw6IGFsbC1hbQogCkBAIC04NzAsNyArODg1LDYgQEAKIGRpc3RjbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLnRhYi5jCiAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdGF1ZGlvdmlzdWFsaXplci5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0c3BhY2VzY29wZS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0c3BlY3RyYXNjb3BlLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RzeW5hZXNjb3BlLlBsb0BhbV9fcXVvdGVACkBAIC05MDgsMTMgKzkyMiw2IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YXVkaW92aXN1YWxpemVyc19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtcGx1Z2luLmxvIGB0ZXN0IC1mICdwbHVnaW4uYycgfHwgZWNobyAnJChzcmNkaXIpLydgcGx1Z2luLmMKIAotbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RhdWRpb3Zpc3VhbGl6ZXIubG86IGdzdGF1ZGlvdmlzdWFsaXplci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YXVkaW92aXN1YWxpemVyc19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdGF1ZGlvdmlzdWFsaXplci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RhdWRpb3Zpc3VhbGl6ZXIuVHBvIC1jIC1vIGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0YXVkaW92aXN1YWxpemVyLmxvIGB0ZXN0IC1mICdnc3RhdWRpb3Zpc3VhbGl6ZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0YXVkaW92aXN1YWxpemVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0YXVkaW92aXN1YWxpemVyLlRwbyAkKERFUERJUikvbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RhdWRpb3Zpc3VhbGl6ZXIuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0YXVkaW92aXN1YWxpemVyLmMnIG9iamVjdD0nbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RhdWRpb3Zpc3VhbGl6ZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RhdWRpb3Zpc3VhbGl6ZXIubG8gYHRlc3QgLWYgJ2dzdGF1ZGlvdmlzdWFsaXplci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhdWRpb3Zpc3VhbGl6ZXIuYwotCiBsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdHNwYWNlc2NvcGUubG86IGdzdHNwYWNlc2NvcGUuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXVkaW92aXN1YWxpemVyc19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RzcGFjZXNjb3BlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdHNwYWNlc2NvcGUuVHBvIC1jIC1vIGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0c3BhY2VzY29wZS5sbyBgdGVzdCAtZiAnZ3N0c3BhY2VzY29wZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RzcGFjZXNjb3BlLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0c3BhY2VzY29wZS5UcG8gJChERVBESVIpL2xpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0c3BhY2VzY29wZS5QbG8KZGlmZiAtLWdpdCBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdGF1ZGlvdmlzdWFsaXplci5jIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0YXVkaW92aXN1YWxpemVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNGExNzcuLjAwMDAwMDAKLS0tIGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0YXVkaW92aXN1YWxpemVyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDU5ICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSA8MjAxMT4gU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgotICogQ29weXJpZ2h0IChDKSA8MjAxNT4gTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc0BkZWJldGhlbmNvdXJ0LmNvbT4KLSAqCi0gKiBnc3RhdWRpb3Zpc3VhbGl6ZXIuaDogYmFzZSBjbGFzcyBmb3IgYXVkaW8gdmlzdWFsaXNhdGlvbiBlbGVtZW50cwotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0vKioKLSAqIFNFQ1RJT046Z3N0YXVkaW92aXN1YWxpemVyCi0gKgotICogQSBiYXNlY2xhc3MgZm9yIHNjb3BlcyAodmlzdWFsaXplcnMpLiBJdCB0YWtlcyBjYXJlIG9mIHJlLWZpdHRpbmcgdGhlCi0gKiBhdWRpby1yYXRlIHRvIHZpZGVvLXJhdGUgYW5kIGhhbmRsZXMgcmVuZWdvdGlhdGlvbiAoZG93bnN0cmVhbSB2aWRlbyBzaXplCi0gKiBjaGFuZ2VzKS4KLSAqIAotICogSXQgYWxzbyBwcm92aWRlcyBzZXZlcmFsIGJhY2tncm91bmQgc2hhZGluZyBlZmZlY3RzLiBUaGVzZSBlZmZlY3RzIGFyZQotICogYXBwbGllZCB0byBhIHByZXZpb3VzIHBpY3R1cmUgYmVmb3JlIHRoZSByZW5kZXIoKSBpbXBsZW1lbnRhdGlvbiBjYW4gZHJhdyBhCi0gKiBuZXcgZnJhbWUuCi0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KLSNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9tZXRhLmg+Ci0jaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvcG9vbC5oPgotCi0jaW5jbHVkZSAiZ3N0YXVkaW92aXN1YWxpemVyLmgiCi0KLUdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGF1ZGlvX3Zpc3VhbGl6ZXJfZGVidWcpOwotI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgKGF1ZGlvX3Zpc3VhbGl6ZXJfZGVidWcpCi0KLSNkZWZpbmUgREVGQVVMVF9TSEFERVIgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREUKLSNkZWZpbmUgREVGQVVMVF9TSEFERV9BTU9VTlQgICAweDAwMGEwYTBhCi0KLWVudW0KLXsKLSAgUFJPUF8wLAotICBQUk9QX1NIQURFUiwKLSAgUFJPUF9TSEFERV9BTU9VTlQKLX07Ci0KLXN0YXRpYyBHc3RCYXNlVHJhbnNmb3JtQ2xhc3MgKnBhcmVudF9jbGFzcyA9IE5VTEw7Ci0KLXN0YXRpYyB2b2lkIGdzdF9hdWRpb192aXN1YWxpemVyX2NsYXNzX2luaXQgKEdzdEF1ZGlvVmlzdWFsaXplckNsYXNzICoga2xhc3MpOwotc3RhdGljIHZvaWQgZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfaW5pdCAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsCi0gICAgR3N0QXVkaW9WaXN1YWxpemVyQ2xhc3MgKiBnX2NsYXNzKTsKLXN0YXRpYyB2b2lkIGdzdF9hdWRpb192aXN1YWxpemVyX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKLSAgICBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLXN0YXRpYyB2b2lkIGdzdF9hdWRpb192aXN1YWxpemVyX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKLSAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLXN0YXRpYyB2b2lkIGdzdF9hdWRpb192aXN1YWxpemVyX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKLQotc3RhdGljIGdib29sZWFuIGdzdF9hdWRpb192aXN1YWxpemVyX3NyY19uZWdvdGlhdGUgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfYXVkaW9fdmlzdWFsaXplcl9zcmNfc2V0Y2FwcyAoR3N0QXVkaW9WaXN1YWxpemVyICoKLSAgICBzY29wZSwgR3N0Q2FwcyAqIGNhcHMpOwotc3RhdGljIGdib29sZWFuIGdzdF9hdWRpb192aXN1YWxpemVyX3Npbmtfc2V0Y2FwcyAoR3N0QXVkaW9WaXN1YWxpemVyICoKLSAgICBzY29wZSwgR3N0Q2FwcyAqIGNhcHMpOwotCi1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfYXVkaW9fdmlzdWFsaXplcl9jaGFpbiAoR3N0UGFkICogcGFkLAotICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmZmVyKTsKLQotc3RhdGljIGdib29sZWFuIGdzdF9hdWRpb192aXN1YWxpemVyX3NyY19ldmVudCAoR3N0UGFkICogcGFkLAotICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc2lua19ldmVudCAoR3N0UGFkICogcGFkLAotICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCk7Ci0KLXN0YXRpYyBnYm9vbGVhbiBnc3RfYXVkaW9fdmlzdWFsaXplcl9zcmNfcXVlcnkgKEdzdFBhZCAqIHBhZCwKLSAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdFF1ZXJ5ICogcXVlcnkpOwotCi1zdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICoKLSAgICBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKLQotc3RhdGljIGdib29sZWFuIGdzdF9hdWRpb192aXN1YWxpemVyX2RvX2J1ZmZlcnBvb2wgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlLAotICAgIEdzdENhcHMgKiBvdXRjYXBzKTsKLQotc3RhdGljIGdib29sZWFuCi1kZWZhdWx0X2RlY2lkZV9hbGxvY2F0aW9uIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwgR3N0UXVlcnkgKiBxdWVyeSk7Ci0KLSNkZWZpbmUgR1NUX0FVRElPX1ZJU1VBTElaRVJfR0VUX1BSSVZBVEUob2JqKSAgXAotICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUgKChvYmopLCBHU1RfVFlQRV9BVURJT19WSVNVQUxJWkVSLCBHc3RBdWRpb1Zpc3VhbGl6ZXJQcml2YXRlKSkKLQotc3RydWN0IF9Hc3RBdWRpb1Zpc3VhbGl6ZXJQcml2YXRlCi17Ci0gIGdib29sZWFuIG5lZ290aWF0ZWQ7Ci0KLSAgR3N0QnVmZmVyUG9vbCAqcG9vbDsKLSAgZ2Jvb2xlYW4gcG9vbF9hY3RpdmU7Ci0gIEdzdEFsbG9jYXRvciAqYWxsb2NhdG9yOwotICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtczsKLSAgR3N0UXVlcnkgKnF1ZXJ5OwotCi0gIC8qIHBhZHMgKi8KLSAgR3N0UGFkICpzcmNwYWQsICpzaW5rcGFkOwotCi0gIEdzdEF1ZGlvVmlzdWFsaXplclNoYWRlciBzaGFkZXJfdHlwZTsKLSAgR3N0QXVkaW9WaXN1YWxpemVyU2hhZGVyRnVuYyBzaGFkZXI7Ci0gIGd1aW50MzIgc2hhZGVfYW1vdW50OwotCi0gIEdzdEFkYXB0ZXIgKmFkYXB0ZXI7Ci0KLSAgR3N0QnVmZmVyICppbmJ1ZjsKLSAgR3N0QnVmZmVyICp0ZW1wYnVmOwotICBHc3RWaWRlb0ZyYW1lIHRlbXBmcmFtZTsKLQotICBndWludCBzcGY7ICAgICAgICAgICAgICAgICAgICAvKiBzYW1wbGVzIHBlciB2aWRlbyBmcmFtZSAqLwotICBndWludDY0IGZyYW1lX2R1cmF0aW9uOwotCi0gIC8qIFFvUyBzdHVmZiAqLy8qIHdpdGggTE9DSyAqLwotICBnZG91YmxlIHByb3BvcnRpb247Ci0gIEdzdENsb2NrVGltZSBlYXJsaWVzdF90aW1lOwotCi0gIGd1aW50IGRyb3BwZWQ7ICAgICAgICAgICAgICAgIC8qIGZyYW1lcyBkcm9wcGVkIC8gbm90IGRyb3BwZWQgKi8KLSAgZ3VpbnQgcHJvY2Vzc2VkOwotCi0gIC8qIGNvbmZpZ3VyYXRpb24gbXV0ZXggKi8KLSAgR011dGV4IGNvbmZpZ19sb2NrOwotCi0gIEdzdFNlZ21lbnQgc2VnbWVudDsKLX07Ci0KLQotLyogc2hhZGluZyBmdW5jdGlvbnMgKi8KLQotI2RlZmluZSBHU1RfVFlQRV9BVURJT19WSVNVQUxJWkVSX1NIQURFUiAoZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc2hhZGVyX2dldF90eXBlKCkpCi1zdGF0aWMgR1R5cGUKLWdzdF9hdWRpb192aXN1YWxpemVyX3NoYWRlcl9nZXRfdHlwZSAodm9pZCkKLXsKLSAgc3RhdGljIEdUeXBlIHNoYWRlcl90eXBlID0gMDsKLSAgc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgc2hhZGVyc1tdID0gewotICAgIHtHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfTk9ORSwgIk5vbmUiLCAibm9uZSJ9LAotICAgIHtHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERSwgIkZhZGUiLCAiZmFkZSJ9LAotICAgIHtHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9VUCwgIkZhZGUgYW5kIG1vdmUgdXAiLAotICAgICAgICAiZmFkZS1hbmQtbW92ZS11cCJ9LAotICAgIHtHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9ET1dOLCAiRmFkZSBhbmQgbW92ZSBkb3duIiwKLSAgICAgICAgImZhZGUtYW5kLW1vdmUtZG93biJ9LAotICAgIHtHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9MRUZULCAiRmFkZSBhbmQgbW92ZSBsZWZ0IiwKLSAgICAgICAgImZhZGUtYW5kLW1vdmUtbGVmdCJ9LAotICAgIHtHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9SSUdIVCwKLSAgICAgICAgICAiRmFkZSBhbmQgbW92ZSByaWdodCIsCi0gICAgICAgICJmYWRlLWFuZC1tb3ZlLXJpZ2h0In0sCi0gICAge0dTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX0hPUklaX09VVCwKLSAgICAgICAgIkZhZGUgYW5kIG1vdmUgaG9yaXpvbnRhbGx5IG91dCIsICJmYWRlLWFuZC1tb3ZlLWhvcml6LW91dCJ9LAotICAgIHtHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9IT1JJWl9JTiwKLSAgICAgICAgIkZhZGUgYW5kIG1vdmUgaG9yaXpvbnRhbGx5IGluIiwgImZhZGUtYW5kLW1vdmUtaG9yaXotaW4ifSwKLSAgICB7R1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfVkVSVF9PVVQsCi0gICAgICAgICJGYWRlIGFuZCBtb3ZlIHZlcnRpY2FsbHkgb3V0IiwgImZhZGUtYW5kLW1vdmUtdmVydC1vdXQifSwKLSAgICB7R1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfVkVSVF9JTiwKLSAgICAgICAgIkZhZGUgYW5kIG1vdmUgdmVydGljYWxseSBpbiIsICJmYWRlLWFuZC1tb3ZlLXZlcnQtaW4ifSwKLSAgICB7MCwgTlVMTCwgTlVMTH0sCi0gIH07Ci0KLSAgaWYgKEdfVU5MSUtFTFkgKHNoYWRlcl90eXBlID09IDApKSB7Ci0gICAgLyogVE9ETzogcmVuYW1lIHdoZW4gZXhwb3J0aW5nIGl0IGFzIGEgbGlicmFyeSAqLwotICAgIHNoYWRlcl90eXBlID0KLSAgICAgICAgZ19lbnVtX3JlZ2lzdGVyX3N0YXRpYwotICAgICAgICAoIkdzdEF1ZGlvVmlzdWFsaXplclNoYWRlci1CYWRHc3RBdWRpb1Zpc3VhbGl6ZXJzIiwgc2hhZGVycyk7Ci0gIH0KLSAgcmV0dXJuIHNoYWRlcl90eXBlOwotfQotCi0vKiB3ZSdyZSBvbmx5IHN1cHBvcnRpbmcgR1NUX1ZJREVPX0ZPUk1BVF94UkdCIHJpZ2h0IG5vdykgKi8KLSNpZiBHX0JZVEVfT1JERVIgPT0gR19MSVRUTEVfRU5ESUFOCi0KLSNkZWZpbmUgU0hBREUoX2QsIF9zLCBfaSwgX3IsIF9nLCBfYikgICAgICAgICAgICAgICAgICAgICBcCi1HX1NUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIF9kW19pICogNCArIDBdID0gKF9zW19pICogNCArIDBdID4gX2IpID8gX3NbX2kgKiA0ICsgMF0gLSBfYiA6IDA7IFwKLSAgICBfZFtfaSAqIDQgKyAxXSA9IChfc1tfaSAqIDQgKyAxXSA+IF9nKSA/IF9zW19pICogNCArIDFdIC0gX2cgOiAwOyBcCi0gICAgX2RbX2kgKiA0ICsgMl0gPSAoX3NbX2kgKiA0ICsgMl0gPiBfcikgPyBfc1tfaSAqIDQgKyAyXSAtIF9yIDogMDsgXAotICAgIF9kW19pICogNCArIDNdID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19IEdfU1RNVF9FTkQKLQotI2Vsc2UgLyogR19CWVRFX09SREVSID09IEdfTElUVExFX0VORElBTiAqLwotCi0jZGVmaW5lIFNIQURFKF9kLCBfcywgX2ksIF9yLCBfZywgX2IpICAgICAgICAgICAgICAgICAgICAgXAotR19TVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBfZFtfaSAqIDQgKyAwXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIF9kW19pICogNCArIDFdID0gKF9zW19pICogNCArIDFdID4gX3IpID8gX3NbX2kgKiA0ICsgMV0gLSBfciA6IDA7IFwKLSAgICBfZFtfaSAqIDQgKyAyXSA9IChfc1tfaSAqIDQgKyAyXSA+IF9nKSA/IF9zW19pICogNCArIDJdIC0gX2cgOiAwOyBcCi0gICAgX2RbX2kgKiA0ICsgM10gPSAoX3NbX2kgKiA0ICsgM10gPiBfYikgPyBfc1tfaSAqIDQgKyAzXSAtIF9iIDogMDsgXAotfSBHX1NUTVRfRU5ECi0KLSNlbmRpZgotCi1zdGF0aWMgdm9pZAotc2hhZGVyX2ZhZGUgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlLCBjb25zdCBHc3RWaWRlb0ZyYW1lICogc2ZyYW1lLAotICAgIEdzdFZpZGVvRnJhbWUgKiBkZnJhbWUpCi17Ci0gIGd1aW50IGksIGo7Ci0gIGd1aW50MzIgc2hhZGVfYW1vdW50ID0gc2NvcGUtPnByaXYtPnNoYWRlX2Ftb3VudDsKLSAgZ3VpbnQgciA9IChzaGFkZV9hbW91bnQgPj4gMTYpICYgMHhmZjsKLSAgZ3VpbnQgZyA9IChzaGFkZV9hbW91bnQgPj4gOCkgJiAweGZmOwotICBndWludCBiID0gKHNoYWRlX2Ftb3VudCA+PiAwKSAmIDB4ZmY7Ci0gIGd1aW50OCAqcywgKmQ7Ci0gIGdpbnQgc3MsIGRzLCB3aWR0aCwgaGVpZ2h0OwotCi0gIHMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoc2ZyYW1lLCAwKTsKLSAgc3MgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFIChzZnJhbWUsIDApOwotICBkID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEgKGRmcmFtZSwgMCk7Ci0gIGRzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSAoZGZyYW1lLCAwKTsKLQotICB3aWR0aCA9IEdTVF9WSURFT19GUkFNRV9XSURUSCAoc2ZyYW1lKTsKLSAgaGVpZ2h0ID0gR1NUX1ZJREVPX0ZSQU1FX0hFSUdIVCAoc2ZyYW1lKTsKLQotICBmb3IgKGogPSAwOyBqIDwgaGVpZ2h0OyBqKyspIHsKLSAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykgewotICAgICAgU0hBREUgKGQsIHMsIGksIHIsIGcsIGIpOwotICAgIH0KLSAgICBzICs9IHNzOwotICAgIGQgKz0gZHM7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKLXNoYWRlcl9mYWRlX2FuZF9tb3ZlX3VwIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwKLSAgICBjb25zdCBHc3RWaWRlb0ZyYW1lICogc2ZyYW1lLCBHc3RWaWRlb0ZyYW1lICogZGZyYW1lKQotewotICBndWludCBpLCBqOwotICBndWludDMyIHNoYWRlX2Ftb3VudCA9IHNjb3BlLT5wcml2LT5zaGFkZV9hbW91bnQ7Ci0gIGd1aW50IHIgPSAoc2hhZGVfYW1vdW50ID4+IDE2KSAmIDB4ZmY7Ci0gIGd1aW50IGcgPSAoc2hhZGVfYW1vdW50ID4+IDgpICYgMHhmZjsKLSAgZ3VpbnQgYiA9IChzaGFkZV9hbW91bnQgPj4gMCkgJiAweGZmOwotICBndWludDggKnMsICpkOwotICBnaW50IHNzLCBkcywgd2lkdGgsIGhlaWdodDsKLQotICBzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEgKHNmcmFtZSwgMCk7Ci0gIHNzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSAoc2ZyYW1lLCAwKTsKLSAgZCA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChkZnJhbWUsIDApOwotICBkcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKGRmcmFtZSwgMCk7Ci0KLSAgd2lkdGggPSBHU1RfVklERU9fRlJBTUVfV0lEVEggKHNmcmFtZSk7Ci0gIGhlaWdodCA9IEdTVF9WSURFT19GUkFNRV9IRUlHSFQgKHNmcmFtZSk7Ci0KLSAgZm9yIChqID0gMTsgaiA8IGhlaWdodDsgaisrKSB7Ci0gICAgcyArPSBzczsKLSAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykgewotICAgICAgU0hBREUgKGQsIHMsIGksIHIsIGcsIGIpOwotICAgIH0KLSAgICBkICs9IGRzOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1zaGFkZXJfZmFkZV9hbmRfbW92ZV9kb3duIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwKLSAgICBjb25zdCBHc3RWaWRlb0ZyYW1lICogc2ZyYW1lLCBHc3RWaWRlb0ZyYW1lICogZGZyYW1lKQotewotICBndWludCBpLCBqOwotICBndWludDMyIHNoYWRlX2Ftb3VudCA9IHNjb3BlLT5wcml2LT5zaGFkZV9hbW91bnQ7Ci0gIGd1aW50IHIgPSAoc2hhZGVfYW1vdW50ID4+IDE2KSAmIDB4ZmY7Ci0gIGd1aW50IGcgPSAoc2hhZGVfYW1vdW50ID4+IDgpICYgMHhmZjsKLSAgZ3VpbnQgYiA9IChzaGFkZV9hbW91bnQgPj4gMCkgJiAweGZmOwotICBndWludDggKnMsICpkOwotICBnaW50IHNzLCBkcywgd2lkdGgsIGhlaWdodDsKLQotICBzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEgKHNmcmFtZSwgMCk7Ci0gIHNzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSAoc2ZyYW1lLCAwKTsKLSAgZCA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChkZnJhbWUsIDApOwotICBkcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKGRmcmFtZSwgMCk7Ci0KLSAgd2lkdGggPSBHU1RfVklERU9fRlJBTUVfV0lEVEggKHNmcmFtZSk7Ci0gIGhlaWdodCA9IEdTVF9WSURFT19GUkFNRV9IRUlHSFQgKHNmcmFtZSk7Ci0KLSAgZm9yIChqID0gMTsgaiA8IGhlaWdodDsgaisrKSB7Ci0gICAgZCArPSBkczsKLSAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykgewotICAgICAgU0hBREUgKGQsIHMsIGksIHIsIGcsIGIpOwotICAgIH0KLSAgICBzICs9IHNzOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1zaGFkZXJfZmFkZV9hbmRfbW92ZV9sZWZ0IChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwKLSAgICBjb25zdCBHc3RWaWRlb0ZyYW1lICogc2ZyYW1lLCBHc3RWaWRlb0ZyYW1lICogZGZyYW1lKQotewotICBndWludCBpLCBqOwotICBndWludDMyIHNoYWRlX2Ftb3VudCA9IHNjb3BlLT5wcml2LT5zaGFkZV9hbW91bnQ7Ci0gIGd1aW50IHIgPSAoc2hhZGVfYW1vdW50ID4+IDE2KSAmIDB4ZmY7Ci0gIGd1aW50IGcgPSAoc2hhZGVfYW1vdW50ID4+IDgpICYgMHhmZjsKLSAgZ3VpbnQgYiA9IChzaGFkZV9hbW91bnQgPj4gMCkgJiAweGZmOwotICBndWludDggKnMsICpkOwotICBnaW50IHNzLCBkcywgd2lkdGgsIGhlaWdodDsKLQotICBzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEgKHNmcmFtZSwgMCk7Ci0gIHNzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSAoc2ZyYW1lLCAwKTsKLSAgZCA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChkZnJhbWUsIDApOwotICBkcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKGRmcmFtZSwgMCk7Ci0KLSAgd2lkdGggPSBHU1RfVklERU9fRlJBTUVfV0lEVEggKHNmcmFtZSk7Ci0gIGhlaWdodCA9IEdTVF9WSURFT19GUkFNRV9IRUlHSFQgKHNmcmFtZSk7Ci0KLSAgd2lkdGggLT0gMTsKLSAgcyArPSA0OwotCi0gIC8qIG1vdmUgdG8gdGhlIGxlZnQgKi8KLSAgZm9yIChqID0gMDsgaiA8IGhlaWdodDsgaisrKSB7Ci0gICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspIHsKLSAgICAgIFNIQURFIChkLCBzLCBpLCByLCBnLCBiKTsKLSAgICB9Ci0gICAgZCArPSBkczsKLSAgICBzICs9IHNzOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1zaGFkZXJfZmFkZV9hbmRfbW92ZV9yaWdodCAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsCi0gICAgY29uc3QgR3N0VmlkZW9GcmFtZSAqIHNmcmFtZSwgR3N0VmlkZW9GcmFtZSAqIGRmcmFtZSkKLXsKLSAgZ3VpbnQgaSwgajsKLSAgZ3VpbnQzMiBzaGFkZV9hbW91bnQgPSBzY29wZS0+cHJpdi0+c2hhZGVfYW1vdW50OwotICBndWludCByID0gKHNoYWRlX2Ftb3VudCA+PiAxNikgJiAweGZmOwotICBndWludCBnID0gKHNoYWRlX2Ftb3VudCA+PiA4KSAmIDB4ZmY7Ci0gIGd1aW50IGIgPSAoc2hhZGVfYW1vdW50ID4+IDApICYgMHhmZjsKLSAgZ3VpbnQ4ICpzLCAqZDsKLSAgZ2ludCBzcywgZHMsIHdpZHRoLCBoZWlnaHQ7Ci0KLSAgcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChzZnJhbWUsIDApOwotICBzcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKHNmcmFtZSwgMCk7Ci0gIGQgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoZGZyYW1lLCAwKTsKLSAgZHMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFIChkZnJhbWUsIDApOwotCi0gIHdpZHRoID0gR1NUX1ZJREVPX0ZSQU1FX1dJRFRIIChzZnJhbWUpOwotICBoZWlnaHQgPSBHU1RfVklERU9fRlJBTUVfSEVJR0hUIChzZnJhbWUpOwotCi0gIHdpZHRoIC09IDE7Ci0gIGQgKz0gNDsKLQotICAvKiBtb3ZlIHRvIHRoZSByaWdodCAqLwotICBmb3IgKGogPSAwOyBqIDwgaGVpZ2h0OyBqKyspIHsKLSAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykgewotICAgICAgU0hBREUgKGQsIHMsIGksIHIsIGcsIGIpOwotICAgIH0KLSAgICBkICs9IGRzOwotICAgIHMgKz0gc3M7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKLXNoYWRlcl9mYWRlX2FuZF9tb3ZlX2hvcml6X291dCAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsCi0gICAgY29uc3QgR3N0VmlkZW9GcmFtZSAqIHNmcmFtZSwgR3N0VmlkZW9GcmFtZSAqIGRmcmFtZSkKLXsKLSAgZ3VpbnQgaSwgajsKLSAgZ3VpbnQzMiBzaGFkZV9hbW91bnQgPSBzY29wZS0+cHJpdi0+c2hhZGVfYW1vdW50OwotICBndWludCByID0gKHNoYWRlX2Ftb3VudCA+PiAxNikgJiAweGZmOwotICBndWludCBnID0gKHNoYWRlX2Ftb3VudCA+PiA4KSAmIDB4ZmY7Ci0gIGd1aW50IGIgPSAoc2hhZGVfYW1vdW50ID4+IDApICYgMHhmZjsKLSAgZ3VpbnQ4ICpzLCAqZDsKLSAgZ2ludCBzcywgZHMsIHdpZHRoLCBoZWlnaHQ7Ci0KLSAgcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChzZnJhbWUsIDApOwotICBzcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKHNmcmFtZSwgMCk7Ci0gIGQgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoZGZyYW1lLCAwKTsKLSAgZHMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFIChkZnJhbWUsIDApOwotCi0gIHdpZHRoID0gR1NUX1ZJREVPX0ZSQU1FX1dJRFRIIChzZnJhbWUpOwotICBoZWlnaHQgPSBHU1RfVklERU9fRlJBTUVfSEVJR0hUIChzZnJhbWUpOwotCi0gIC8qIG1vdmUgdXBwZXIgaGFsZiB1cCAqLwotICBmb3IgKGogPSAwOyBqIDwgaGVpZ2h0IC8gMjsgaisrKSB7Ci0gICAgcyArPSBzczsKLSAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykgewotICAgICAgU0hBREUgKGQsIHMsIGksIHIsIGcsIGIpOwotICAgIH0KLSAgICBkICs9IGRzOwotICB9Ci0gIC8qIG1vdmUgbG93ZXIgaGFsZiBkb3duICovCi0gIGZvciAoaiA9IDA7IGogPCBoZWlnaHQgLyAyOyBqKyspIHsKLSAgICBkICs9IGRzOwotICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7Ci0gICAgICBTSEFERSAoZCwgcywgaSwgciwgZywgYik7Ci0gICAgfQotICAgIHMgKz0gc3M7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKLXNoYWRlcl9mYWRlX2FuZF9tb3ZlX2hvcml6X2luIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwKLSAgICBjb25zdCBHc3RWaWRlb0ZyYW1lICogc2ZyYW1lLCBHc3RWaWRlb0ZyYW1lICogZGZyYW1lKQotewotICBndWludCBpLCBqOwotICBndWludDMyIHNoYWRlX2Ftb3VudCA9IHNjb3BlLT5wcml2LT5zaGFkZV9hbW91bnQ7Ci0gIGd1aW50IHIgPSAoc2hhZGVfYW1vdW50ID4+IDE2KSAmIDB4ZmY7Ci0gIGd1aW50IGcgPSAoc2hhZGVfYW1vdW50ID4+IDgpICYgMHhmZjsKLSAgZ3VpbnQgYiA9IChzaGFkZV9hbW91bnQgPj4gMCkgJiAweGZmOwotICBndWludDggKnMsICpkOwotICBnaW50IHNzLCBkcywgd2lkdGgsIGhlaWdodDsKLQotICBzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEgKHNmcmFtZSwgMCk7Ci0gIHNzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSAoc2ZyYW1lLCAwKTsKLSAgZCA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChkZnJhbWUsIDApOwotICBkcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKGRmcmFtZSwgMCk7Ci0KLSAgd2lkdGggPSBHU1RfVklERU9fRlJBTUVfV0lEVEggKHNmcmFtZSk7Ci0gIGhlaWdodCA9IEdTVF9WSURFT19GUkFNRV9IRUlHSFQgKHNmcmFtZSk7Ci0KLSAgLyogbW92ZSB1cHBlciBoYWxmIGRvd24gKi8KLSAgZm9yIChqID0gMDsgaiA8IGhlaWdodCAvIDI7IGorKykgewotICAgIGQgKz0gZHM7Ci0gICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspIHsKLSAgICAgIFNIQURFIChkLCBzLCBpLCByLCBnLCBiKTsKLSAgICB9Ci0gICAgcyArPSBzczsKLSAgfQotICAvKiBtb3ZlIGxvd2VyIGhhbGYgdXAgKi8KLSAgZm9yIChqID0gMDsgaiA8IGhlaWdodCAvIDI7IGorKykgewotICAgIHMgKz0gc3M7Ci0gICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspIHsKLSAgICAgIFNIQURFIChkLCBzLCBpLCByLCBnLCBiKTsKLSAgICB9Ci0gICAgZCArPSBkczsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAotc2hhZGVyX2ZhZGVfYW5kX21vdmVfdmVydF9vdXQgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlLAotICAgIGNvbnN0IEdzdFZpZGVvRnJhbWUgKiBzZnJhbWUsIEdzdFZpZGVvRnJhbWUgKiBkZnJhbWUpCi17Ci0gIGd1aW50IGksIGo7Ci0gIGd1aW50MzIgc2hhZGVfYW1vdW50ID0gc2NvcGUtPnByaXYtPnNoYWRlX2Ftb3VudDsKLSAgZ3VpbnQgciA9IChzaGFkZV9hbW91bnQgPj4gMTYpICYgMHhmZjsKLSAgZ3VpbnQgZyA9IChzaGFkZV9hbW91bnQgPj4gOCkgJiAweGZmOwotICBndWludCBiID0gKHNoYWRlX2Ftb3VudCA+PiAwKSAmIDB4ZmY7Ci0gIGd1aW50OCAqcywgKnMxLCAqZCwgKmQxOwotICBnaW50IHNzLCBkcywgd2lkdGgsIGhlaWdodDsKLQotICBzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEgKHNmcmFtZSwgMCk7Ci0gIHNzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSAoc2ZyYW1lLCAwKTsKLSAgZCA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChkZnJhbWUsIDApOwotICBkcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKGRmcmFtZSwgMCk7Ci0KLSAgd2lkdGggPSBHU1RfVklERU9fRlJBTUVfV0lEVEggKHNmcmFtZSk7Ci0gIGhlaWdodCA9IEdTVF9WSURFT19GUkFNRV9IRUlHSFQgKHNmcmFtZSk7Ci0KLSAgZm9yIChqID0gMDsgaiA8IGhlaWdodDsgaisrKSB7Ci0gICAgLyogbW92ZSBsZWZ0IGhhbGYgdG8gdGhlIGxlZnQgKi8KLSAgICBzMSA9IHMgKyAxOwotICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0aCAvIDI7IGkrKykgewotICAgICAgU0hBREUgKGQsIHMxLCBpLCByLCBnLCBiKTsKLSAgICB9Ci0gICAgLyogbW92ZSByaWdodCBoYWxmIHRvIHRoZSByaWdodCAqLwotICAgIGQxID0gZCArIDE7Ci0gICAgZm9yICg7IGkgPCB3aWR0aCAtIDE7IGkrKykgewotICAgICAgU0hBREUgKGQxLCBzLCBpLCByLCBnLCBiKTsKLSAgICB9Ci0gICAgcyArPSBzczsKLSAgICBkICs9IGRzOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1zaGFkZXJfZmFkZV9hbmRfbW92ZV92ZXJ0X2luIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwKLSAgICBjb25zdCBHc3RWaWRlb0ZyYW1lICogc2ZyYW1lLCBHc3RWaWRlb0ZyYW1lICogZGZyYW1lKQotewotICBndWludCBpLCBqOwotICBndWludDMyIHNoYWRlX2Ftb3VudCA9IHNjb3BlLT5wcml2LT5zaGFkZV9hbW91bnQ7Ci0gIGd1aW50IHIgPSAoc2hhZGVfYW1vdW50ID4+IDE2KSAmIDB4ZmY7Ci0gIGd1aW50IGcgPSAoc2hhZGVfYW1vdW50ID4+IDgpICYgMHhmZjsKLSAgZ3VpbnQgYiA9IChzaGFkZV9hbW91bnQgPj4gMCkgJiAweGZmOwotICBndWludDggKnMsICpzMSwgKmQsICpkMTsKLSAgZ2ludCBzcywgZHMsIHdpZHRoLCBoZWlnaHQ7Ci0KLSAgcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChzZnJhbWUsIDApOwotICBzcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKHNmcmFtZSwgMCk7Ci0gIGQgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoZGZyYW1lLCAwKTsKLSAgZHMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFIChkZnJhbWUsIDApOwotCi0gIHdpZHRoID0gR1NUX1ZJREVPX0ZSQU1FX1dJRFRIIChzZnJhbWUpOwotICBoZWlnaHQgPSBHU1RfVklERU9fRlJBTUVfSEVJR0hUIChzZnJhbWUpOwotCi0gIGZvciAoaiA9IDA7IGogPCBoZWlnaHQ7IGorKykgewotICAgIC8qIG1vdmUgbGVmdCBoYWxmIHRvIHRoZSByaWdodCAqLwotICAgIGQxID0gZCArIDE7Ci0gICAgZm9yIChpID0gMDsgaSA8IHdpZHRoIC8gMjsgaSsrKSB7Ci0gICAgICBTSEFERSAoZDEsIHMsIGksIHIsIGcsIGIpOwotICAgIH0KLSAgICAvKiBtb3ZlIHJpZ2h0IGhhbGYgdG8gdGhlIGxlZnQgKi8KLSAgICBzMSA9IHMgKyAxOwotICAgIGZvciAoOyBpIDwgd2lkdGggLSAxOyBpKyspIHsKLSAgICAgIFNIQURFIChkLCBzMSwgaSwgciwgZywgYik7Ci0gICAgfQotICAgIHMgKz0gc3M7Ci0gICAgZCArPSBkczsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfY2hhbmdlX3NoYWRlciAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUpCi17Ci0gIEdzdEF1ZGlvVmlzdWFsaXplclNoYWRlckZ1bmMgc2hhZGVyOwotCi0gIHN3aXRjaCAoc2NvcGUtPnByaXYtPnNoYWRlcl90eXBlKSB7Ci0gICAgY2FzZSBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfTk9ORToKLSAgICAgIHNoYWRlciA9IE5VTEw7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFOgotICAgICAgc2hhZGVyID0gc2hhZGVyX2ZhZGU7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX1VQOgotICAgICAgc2hhZGVyID0gc2hhZGVyX2ZhZGVfYW5kX21vdmVfdXA7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX0RPV046Ci0gICAgICBzaGFkZXIgPSBzaGFkZXJfZmFkZV9hbmRfbW92ZV9kb3duOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9MRUZUOgotICAgICAgc2hhZGVyID0gc2hhZGVyX2ZhZGVfYW5kX21vdmVfbGVmdDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfUklHSFQ6Ci0gICAgICBzaGFkZXIgPSBzaGFkZXJfZmFkZV9hbmRfbW92ZV9yaWdodDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfSE9SSVpfT1VUOgotICAgICAgc2hhZGVyID0gc2hhZGVyX2ZhZGVfYW5kX21vdmVfaG9yaXpfb3V0OwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9IT1JJWl9JTjoKLSAgICAgIHNoYWRlciA9IHNoYWRlcl9mYWRlX2FuZF9tb3ZlX2hvcml6X2luOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9WRVJUX09VVDoKLSAgICAgIHNoYWRlciA9IHNoYWRlcl9mYWRlX2FuZF9tb3ZlX3ZlcnRfb3V0OwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9WRVJUX0lOOgotICAgICAgc2hhZGVyID0gc2hhZGVyX2ZhZGVfYW5kX21vdmVfdmVydF9pbjsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHU1RfRVJST1IgKCJpbnZhbGlkIHNoYWRlciBmdW5jdGlvbiIpOwotICAgICAgc2hhZGVyID0gTlVMTDsKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgc2NvcGUtPnByaXYtPnNoYWRlciA9IHNoYWRlcjsKLX0KLQotLyogYmFzZSBjbGFzcyAqLwotCi1HVHlwZQotZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfZ2V0X3R5cGUgKHZvaWQpCi17Ci0gIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBhdWRpb192aXN1YWxpemVyX3R5cGUgPSAwOwotCi0gIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJmF1ZGlvX3Zpc3VhbGl6ZXJfdHlwZSkpIHsKLSAgICBzdGF0aWMgY29uc3QgR1R5cGVJbmZvIGF1ZGlvX3Zpc3VhbGl6ZXJfaW5mbyA9IHsKLSAgICAgIHNpemVvZiAoR3N0QXVkaW9WaXN1YWxpemVyQ2xhc3MpLAotICAgICAgTlVMTCwKLSAgICAgIE5VTEwsCi0gICAgICAoR0NsYXNzSW5pdEZ1bmMpIGdzdF9hdWRpb192aXN1YWxpemVyX2NsYXNzX2luaXQsCi0gICAgICBOVUxMLAotICAgICAgTlVMTCwKLSAgICAgIHNpemVvZiAoR3N0QXVkaW9WaXN1YWxpemVyKSwKLSAgICAgIDAsCi0gICAgICAoR0luc3RhbmNlSW5pdEZ1bmMpIGdzdF9hdWRpb192aXN1YWxpemVyX2luaXQsCi0gICAgfTsKLSAgICBHVHlwZSBfdHlwZTsKLQotICAgIC8qIFRPRE86IHJlbmFtZSB3aGVuIGV4cG9ydGluZyBpdCBhcyBhIGxpYnJhcnkgKi8KLSAgICBfdHlwZSA9IGdfdHlwZV9yZWdpc3Rlcl9zdGF0aWMgKEdTVF9UWVBFX0VMRU1FTlQsCi0gICAgICAgICJHc3RBdWRpb1Zpc3VhbGl6ZXItQmFkR3N0QXVkaW9WaXN1YWxpemVycyIsICZhdWRpb192aXN1YWxpemVyX2luZm8sCi0gICAgICAgIEdfVFlQRV9GTEFHX0FCU1RSQUNUKTsKLSAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJmF1ZGlvX3Zpc3VhbGl6ZXJfdHlwZSwgX3R5cGUpOwotICB9Ci0gIHJldHVybiAoR1R5cGUpIGF1ZGlvX3Zpc3VhbGl6ZXJfdHlwZTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9hdWRpb192aXN1YWxpemVyX2NsYXNzX2luaXQgKEdzdEF1ZGlvVmlzdWFsaXplckNsYXNzICoga2xhc3MpCi17Ci0gIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7Ci0gIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IChHc3RFbGVtZW50Q2xhc3MgKikga2xhc3M7Ci0KLSAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlIChrbGFzcywgc2l6ZW9mIChHc3RBdWRpb1Zpc3VhbGl6ZXJQcml2YXRlKSk7Ci0KLSAgcGFyZW50X2NsYXNzID0gZ190eXBlX2NsYXNzX3BlZWtfcGFyZW50IChrbGFzcyk7Ci0KLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGF1ZGlvX3Zpc3VhbGl6ZXJfZGVidWcsICJiYXNlYXVkaW92aXN1YWxpemVyIiwKLSAgICAgIDAsICJzY29wZSBhdWRpbyB2aXN1YWxpc2F0aW9uIGJhc2UgY2xhc3MiKTsKLQotICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfYXVkaW9fdmlzdWFsaXplcl9zZXRfcHJvcGVydHk7Ci0gIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9hdWRpb192aXN1YWxpemVyX2dldF9wcm9wZXJ0eTsKLSAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfYXVkaW9fdmlzdWFsaXplcl9maW5hbGl6ZTsKLQotICBlbGVtZW50X2NsYXNzLT5jaGFuZ2Vfc3RhdGUgPQotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hdWRpb192aXN1YWxpemVyX2NoYW5nZV9zdGF0ZSk7Ci0KLSAga2xhc3MtPmRlY2lkZV9hbGxvY2F0aW9uID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGRlZmF1bHRfZGVjaWRlX2FsbG9jYXRpb24pOwotCi0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0hBREVSLAotICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJzaGFkZXIiLCAic2hhZGVyIHR5cGUiLAotICAgICAgICAgICJTaGFkZXIgZnVuY3Rpb24gdG8gYXBwbHkgb24gZWFjaCBmcmFtZSIsCi0gICAgICAgICAgR1NUX1RZUEVfQVVESU9fVklTVUFMSVpFUl9TSEFERVIsIERFRkFVTFRfU0hBREVSLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TSEFERV9BTU9VTlQsCi0gICAgICBnX3BhcmFtX3NwZWNfdWludCAoInNoYWRlLWFtb3VudCIsICJzaGFkZSBhbW91bnQiLAotICAgICAgICAgICJTaGFkaW5nIGNvbG9yIHRvIHVzZSAoYmlnLWVuZGlhbiBBUkdCKSIsIDAsIEdfTUFYVUlOVDMyLAotICAgICAgICAgIERFRkFVTFRfU0hBREVfQU1PVU5ULAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9hdWRpb192aXN1YWxpemVyX2luaXQgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlLAotICAgIEdzdEF1ZGlvVmlzdWFsaXplckNsYXNzICogZ19jbGFzcykKLXsKLSAgR3N0UGFkVGVtcGxhdGUgKnBhZF90ZW1wbGF0ZTsKLQotICBzY29wZS0+cHJpdiA9IEdTVF9BVURJT19WSVNVQUxJWkVSX0dFVF9QUklWQVRFIChzY29wZSk7Ci0KLSAgLyogY3JlYXRlIHRoZSBzaW5rIGFuZCBzcmMgcGFkcyAqLwotICBwYWRfdGVtcGxhdGUgPQotICAgICAgZ3N0X2VsZW1lbnRfY2xhc3NfZ2V0X3BhZF90ZW1wbGF0ZSAoR1NUX0VMRU1FTlRfQ0xBU1MgKGdfY2xhc3MpLCAic2luayIpOwotICBnX3JldHVybl9pZl9mYWlsIChwYWRfdGVtcGxhdGUgIT0gTlVMTCk7Ci0gIHNjb3BlLT5wcml2LT5zaW5rcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSAocGFkX3RlbXBsYXRlLCAic2luayIpOwotICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAoc2NvcGUtPnByaXYtPnNpbmtwYWQsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfY2hhaW4pKTsKLSAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKHNjb3BlLT5wcml2LT5zaW5rcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hdWRpb192aXN1YWxpemVyX3NpbmtfZXZlbnQpKTsKLSAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKHNjb3BlKSwgc2NvcGUtPnByaXYtPnNpbmtwYWQpOwotCi0gIHBhZF90ZW1wbGF0ZSA9Ci0gICAgICBnc3RfZWxlbWVudF9jbGFzc19nZXRfcGFkX3RlbXBsYXRlIChHU1RfRUxFTUVOVF9DTEFTUyAoZ19jbGFzcyksICJzcmMiKTsKLSAgZ19yZXR1cm5faWZfZmFpbCAocGFkX3RlbXBsYXRlICE9IE5VTEwpOwotICBzY29wZS0+cHJpdi0+c3JjcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSAocGFkX3RlbXBsYXRlLCAic3JjIik7Ci0gIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChzY29wZS0+cHJpdi0+c3JjcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hdWRpb192aXN1YWxpemVyX3NyY19ldmVudCkpOwotICBnc3RfcGFkX3NldF9xdWVyeV9mdW5jdGlvbiAoc2NvcGUtPnByaXYtPnNyY3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYXVkaW9fdmlzdWFsaXplcl9zcmNfcXVlcnkpKTsKLSAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKHNjb3BlKSwgc2NvcGUtPnByaXYtPnNyY3BhZCk7Ci0KLSAgc2NvcGUtPnByaXYtPmFkYXB0ZXIgPSBnc3RfYWRhcHRlcl9uZXcgKCk7Ci0gIHNjb3BlLT5wcml2LT5pbmJ1ZiA9IGdzdF9idWZmZXJfbmV3ICgpOwotCi0gIC8qIHByb3BlcnRpZXMgKi8KLSAgc2NvcGUtPnByaXYtPnNoYWRlcl90eXBlID0gREVGQVVMVF9TSEFERVI7Ci0gIGdzdF9hdWRpb192aXN1YWxpemVyX2NoYW5nZV9zaGFkZXIgKHNjb3BlKTsKLSAgc2NvcGUtPnByaXYtPnNoYWRlX2Ftb3VudCA9IERFRkFVTFRfU0hBREVfQU1PVU5UOwotCi0gIC8qIHJlc2V0IHRoZSBpbml0aWFsIHZpZGVvIHN0YXRlICovCi0gIGdzdF92aWRlb19pbmZvX2luaXQgKCZzY29wZS0+dmluZm8pOwotICBzY29wZS0+cHJpdi0+ZnJhbWVfZHVyYXRpb24gPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotCi0gIC8qIHJlc2V0IHRoZSBpbml0aWFsIHN0YXRlICovCi0gIGdzdF9hdWRpb19pbmZvX2luaXQgKCZzY29wZS0+YWluZm8pOwotICBnc3RfdmlkZW9faW5mb19pbml0ICgmc2NvcGUtPnZpbmZvKTsKLQotICBnX211dGV4X2luaXQgKCZzY29wZS0+cHJpdi0+Y29uZmlnX2xvY2spOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIEdzdEF1ZGlvVmlzdWFsaXplciAqc2NvcGUgPSBHU1RfQVVESU9fVklTVUFMSVpFUiAob2JqZWN0KTsKLQotICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfU0hBREVSOgotICAgICAgc2NvcGUtPnByaXYtPnNoYWRlcl90eXBlID0gZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOwotICAgICAgZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfY2hhbmdlX3NoYWRlciAoc2NvcGUpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX1NIQURFX0FNT1VOVDoKLSAgICAgIHNjb3BlLT5wcml2LT5zaGFkZV9hbW91bnQgPSBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0gICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLXsKLSAgR3N0QXVkaW9WaXN1YWxpemVyICpzY29wZSA9IEdTVF9BVURJT19WSVNVQUxJWkVSIChvYmplY3QpOwotCi0gIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9TSEFERVI6Ci0gICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgc2NvcGUtPnByaXYtPnNoYWRlcl90eXBlKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9TSEFERV9BTU9VTlQ6Ci0gICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgc2NvcGUtPnByaXYtPnNoYWRlX2Ftb3VudCk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKLXsKLSAgR3N0QXVkaW9WaXN1YWxpemVyICpzY29wZSA9IEdTVF9BVURJT19WSVNVQUxJWkVSIChvYmplY3QpOwotICBHc3RBdWRpb1Zpc3VhbGl6ZXJQcml2YXRlICpwcml2ID0gc2NvcGUtPnByaXY7Ci0KLSAgaWYgKHByaXYtPmFkYXB0ZXIpIHsKLSAgICBnX29iamVjdF91bnJlZiAocHJpdi0+YWRhcHRlcik7Ci0gICAgcHJpdi0+YWRhcHRlciA9IE5VTEw7Ci0gIH0KLSAgaWYgKHByaXYtPmluYnVmKSB7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAocHJpdi0+aW5idWYpOwotICAgIHByaXYtPmluYnVmID0gTlVMTDsKLSAgfQotICBpZiAocHJpdi0+dGVtcGJ1ZikgewotICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJnByaXYtPnRlbXBmcmFtZSk7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAocHJpdi0+dGVtcGJ1Zik7Ci0gICAgcHJpdi0+dGVtcGJ1ZiA9IE5VTEw7Ci0gIH0KLQotICBnX211dGV4X2NsZWFyICgmcHJpdi0+Y29uZmlnX2xvY2spOwotCi0gIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9hdWRpb192aXN1YWxpemVyX3Jlc2V0IChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSkKLXsKLSAgR3N0QXVkaW9WaXN1YWxpemVyUHJpdmF0ZSAqcHJpdiA9IHNjb3BlLT5wcml2OwotCi0gIGdzdF9hZGFwdGVyX2NsZWFyIChwcml2LT5hZGFwdGVyKTsKLSAgZ3N0X3NlZ21lbnRfaW5pdCAoJnByaXYtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVU5ERUZJTkVEKTsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKHNjb3BlKTsKLSAgcHJpdi0+cHJvcG9ydGlvbiA9IDEuMDsKLSAgcHJpdi0+ZWFybGllc3RfdGltZSA9IC0xOwotICBwcml2LT5kcm9wcGVkID0gMDsKLSAgcHJpdi0+cHJvY2Vzc2VkID0gMDsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHNjb3BlKTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9zaW5rX3NldGNhcHMgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlLCBHc3RDYXBzICogY2FwcykKLXsKLSAgR3N0QXVkaW9JbmZvIGluZm87Ci0KLSAgaWYgKCFnc3RfYXVkaW9faW5mb19mcm9tX2NhcHMgKCZpbmZvLCBjYXBzKSkKLSAgICBnb3RvIHdyb25nX2NhcHM7Ci0KLSAgc2NvcGUtPmFpbmZvID0gaW5mbzsKLQotICBHU1RfREVCVUdfT0JKRUNUIChzY29wZSwgImF1ZGlvOiBjaGFubmVscyAlZCwgcmF0ZSAlZCIsCi0gICAgICBHU1RfQVVESU9fSU5GT19DSEFOTkVMUyAoJmluZm8pLCBHU1RfQVVESU9fSU5GT19SQVRFICgmaW5mbykpOwotCi0gIGlmICghZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc3JjX25lZ290aWF0ZSAoc2NvcGUpKSB7Ci0gICAgZ290byBub3RfbmVnb3RpYXRlZDsKLSAgfQotCi0gIHJldHVybiBUUlVFOwotCi0gIC8qIEVycm9ycyAqLwotd3JvbmdfY2FwczoKLSAgewotICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoc2NvcGUsICJjb3VsZCBub3QgcGFyc2UgY2FwcyIpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotbm90X25lZ290aWF0ZWQ6Ci0gIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNjb3BlLCAiZmFpbGVkIHRvIG5lZ290aWF0ZSIpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9hdWRpb192aXN1YWxpemVyX3NyY19zZXRjYXBzIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwgR3N0Q2FwcyAqIGNhcHMpCi17Ci0gIEdzdFZpZGVvSW5mbyBpbmZvOwotICBHc3RBdWRpb1Zpc3VhbGl6ZXJDbGFzcyAqa2xhc3M7Ci0gIEdzdEF1ZGlvVmlzdWFsaXplclByaXZhdGUgKnByaXY7Ci0gIGdib29sZWFuIHJlczsKLQotICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluZm8sIGNhcHMpKQotICAgIGdvdG8gd3JvbmdfY2FwczsKLQotICBrbGFzcyA9IEdTVF9BVURJT19WSVNVQUxJWkVSX0NMQVNTIChHX09CSkVDVF9HRVRfQ0xBU1MgKHNjb3BlKSk7Ci0KLSAgcHJpdiA9IHNjb3BlLT5wcml2OwotCi0gIHNjb3BlLT52aW5mbyA9IGluZm87Ci0KLSAgcHJpdi0+ZnJhbWVfZHVyYXRpb24gPSBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChHU1RfU0VDT05ELAotICAgICAgR1NUX1ZJREVPX0lORk9fRlBTX0QgKCZpbmZvKSwgR1NUX1ZJREVPX0lORk9fRlBTX04gKCZpbmZvKSk7Ci0gIHByaXYtPnNwZiA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKEdTVF9BVURJT19JTkZPX1JBVEUgKCZzY29wZS0+YWluZm8pLAotICAgICAgR1NUX1ZJREVPX0lORk9fRlBTX0QgKCZpbmZvKSwgR1NUX1ZJREVPX0lORk9fRlBTX04gKCZpbmZvKSk7Ci0gIHNjb3BlLT5yZXFfc3BmID0gcHJpdi0+c3BmOwotCi0gIGlmIChwcml2LT50ZW1wYnVmKSB7Ci0gICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmcHJpdi0+dGVtcGZyYW1lKTsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChwcml2LT50ZW1wYnVmKTsKLSAgfQotICBwcml2LT50ZW1wYnVmID0gZ3N0X2J1ZmZlcl9uZXdfd3JhcHBlZCAoZ19tYWxsb2MwIChzY29wZS0+dmluZm8uc2l6ZSksCi0gICAgICBzY29wZS0+dmluZm8uc2l6ZSk7Ci0gIGdzdF92aWRlb19mcmFtZV9tYXAgKCZwcml2LT50ZW1wZnJhbWUsICZzY29wZS0+dmluZm8sIHByaXYtPnRlbXBidWYsCi0gICAgICBHU1RfTUFQX1JFQURXUklURSk7Ci0KLSAgaWYgKGtsYXNzLT5zZXR1cCAmJiAha2xhc3MtPnNldHVwIChzY29wZSkpCi0gICAgZ290byBzZXR1cF9mYWlsZWQ7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsICJ2aWRlbzogZGltZW5zaW9uICVkeCVkLCBmcmFtZXJhdGUgJWQvJWQiLAotICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZpbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmaW5mbyksCi0gICAgICBHU1RfVklERU9fSU5GT19GUFNfTiAoJmluZm8pLCBHU1RfVklERU9fSU5GT19GUFNfRCAoJmluZm8pKTsKLSAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsICJibG9ja3M6IHNwZiAldSwgcmVxX3NwZiAldSIsIHByaXYtPnNwZiwKLSAgICAgIHNjb3BlLT5yZXFfc3BmKTsKLQotICBnc3RfcGFkX3NldF9jYXBzIChwcml2LT5zcmNwYWQsIGNhcHMpOwotCi0gIC8qIGZpbmQgYSBwb29sIGZvciB0aGUgbmVnb3RpYXRlZCBjYXBzIG5vdyAqLwotICByZXMgPSBnc3RfYXVkaW9fdmlzdWFsaXplcl9kb19idWZmZXJwb29sIChzY29wZSwgY2Fwcyk7Ci0gIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLQotICByZXR1cm4gcmVzOwotCi0gIC8qIEVSUk9SUyAqLwotd3JvbmdfY2FwczoKLSAgewotICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzY29wZSwgImVycm9yIHBhcnNpbmcgY2FwcyIpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi1zZXR1cF9mYWlsZWQ6Ci0gIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNjb3BlLCAiZmFpbGVkIHRvIHNldCB1cCIpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9hdWRpb192aXN1YWxpemVyX3NyY19uZWdvdGlhdGUgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlKQotewotICBHc3RDYXBzICpvdGhlcmNhcHMsICp0YXJnZXQ7Ci0gIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwotICBHc3RDYXBzICp0ZW1wbDsKLSAgZ2Jvb2xlYW4gcmV0OwotCi0gIHRlbXBsID0gZ3N0X3BhZF9nZXRfcGFkX3RlbXBsYXRlX2NhcHMgKHNjb3BlLT5wcml2LT5zcmNwYWQpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHNjb3BlLCAicGVyZm9ybWluZyBuZWdvdGlhdGlvbiIpOwotCi0gIC8qIHNlZSB3aGF0IHRoZSBwZWVyIGNhbiBkbyAqLwotICBvdGhlcmNhcHMgPSBnc3RfcGFkX3BlZXJfcXVlcnlfY2FwcyAoc2NvcGUtPnByaXYtPnNyY3BhZCwgTlVMTCk7Ci0gIGlmIChvdGhlcmNhcHMpIHsKLSAgICB0YXJnZXQgPSBnc3RfY2Fwc19pbnRlcnNlY3QgKG90aGVyY2FwcywgdGVtcGwpOwotICAgIGdzdF9jYXBzX3VucmVmIChvdGhlcmNhcHMpOwotICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbCk7Ci0KLSAgICBpZiAoZ3N0X2NhcHNfaXNfZW1wdHkgKHRhcmdldCkpCi0gICAgICBnb3RvIG5vX2Zvcm1hdDsKLQotICAgIHRhcmdldCA9IGdzdF9jYXBzX3RydW5jYXRlICh0YXJnZXQpOwotICB9IGVsc2UgewotICAgIHRhcmdldCA9IHRlbXBsOwotICB9Ci0KLSAgdGFyZ2V0ID0gZ3N0X2NhcHNfbWFrZV93cml0YWJsZSAodGFyZ2V0KTsKLSAgc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAodGFyZ2V0LCAwKTsKLSAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9pbnQgKHN0cnVjdHVyZSwgIndpZHRoIiwgMzIwKTsKLSAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9pbnQgKHN0cnVjdHVyZSwgImhlaWdodCIsIDIwMCk7Ci0gIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24gKHN0cnVjdHVyZSwgImZyYW1lcmF0ZSIsIDI1LCAxKTsKLQotICB0YXJnZXQgPSBnc3RfY2Fwc19maXhhdGUgKHRhcmdldCk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsICJmaW5hbCBjYXBzIGFyZSAlIiBHU1RfUFRSX0ZPUk1BVCwgdGFyZ2V0KTsKLQotICByZXQgPSBnc3RfYXVkaW9fdmlzdWFsaXplcl9zcmNfc2V0Y2FwcyAoc2NvcGUsIHRhcmdldCk7Ci0KLSAgcmV0dXJuIHJldDsKLQotbm9fZm9ybWF0OgotICB7Ci0gICAgZ3N0X2NhcHNfdW5yZWYgKHRhcmdldCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci19Ci0KLS8qIHRha2VzIG93bmVyc2hpcCBvZiB0aGUgcG9vbCwgYWxsb2NhdG9yIGFuZCBxdWVyeSAqLwotc3RhdGljIGdib29sZWFuCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9zZXRfYWxsb2NhdGlvbiAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsCi0gICAgR3N0QnVmZmVyUG9vbCAqIHBvb2wsIEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwKLSAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLCBHc3RRdWVyeSAqIHF1ZXJ5KQotewotICBHc3RBbGxvY2F0b3IgKm9sZGFsbG9jOwotICBHc3RCdWZmZXJQb29sICpvbGRwb29sOwotICBHc3RRdWVyeSAqb2xkcXVlcnk7Ci0gIEdzdEF1ZGlvVmlzdWFsaXplclByaXZhdGUgKnByaXYgPSBzY29wZS0+cHJpdjsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKHNjb3BlKTsKLSAgb2xkcG9vbCA9IHByaXYtPnBvb2w7Ci0gIHByaXYtPnBvb2wgPSBwb29sOwotICBwcml2LT5wb29sX2FjdGl2ZSA9IEZBTFNFOwotCi0gIG9sZGFsbG9jID0gcHJpdi0+YWxsb2NhdG9yOwotICBwcml2LT5hbGxvY2F0b3IgPSBhbGxvY2F0b3I7Ci0KLSAgb2xkcXVlcnkgPSBwcml2LT5xdWVyeTsKLSAgcHJpdi0+cXVlcnkgPSBxdWVyeTsKLQotICBpZiAocGFyYW1zKQotICAgIHByaXYtPnBhcmFtcyA9ICpwYXJhbXM7Ci0gIGVsc2UKLSAgICBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdCAoJnByaXYtPnBhcmFtcyk7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzY29wZSk7Ci0KLSAgaWYgKG9sZHBvb2wpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzY29wZSwgImRlYWN0aXZhdGluZyBvbGQgcG9vbCAlcCIsIG9sZHBvb2wpOwotICAgIGdzdF9idWZmZXJfcG9vbF9zZXRfYWN0aXZlIChvbGRwb29sLCBGQUxTRSk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAob2xkcG9vbCk7Ci0gIH0KLSAgaWYgKG9sZGFsbG9jKSB7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAob2xkYWxsb2MpOwotICB9Ci0gIGlmIChvbGRxdWVyeSkgewotICAgIGdzdF9xdWVyeV91bnJlZiAob2xkcXVlcnkpOwotICB9Ci0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9hdWRpb192aXN1YWxpemVyX2RvX2J1ZmZlcnBvb2wgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlLAotICAgIEdzdENhcHMgKiBvdXRjYXBzKQotewotICBHc3RRdWVyeSAqcXVlcnk7Ci0gIGdib29sZWFuIHJlc3VsdCA9IFRSVUU7Ci0gIEdzdEJ1ZmZlclBvb2wgKnBvb2wgPSBOVUxMOwotICBHc3RBdWRpb1Zpc3VhbGl6ZXJDbGFzcyAqa2xhc3M7Ci0gIEdzdEFsbG9jYXRvciAqYWxsb2NhdG9yOwotICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtczsKLQotICAvKiBub3QgcGFzc3Rocm91Z2gsIHdlIG5lZWQgdG8gYWxsb2NhdGUgKi8KLSAgLyogZmluZCBhIHBvb2wgZm9yIHRoZSBuZWdvdGlhdGVkIGNhcHMgbm93ICovCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHNjb3BlLCAiZG9pbmcgYWxsb2NhdGlvbiBxdWVyeSIpOwotICBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfYWxsb2NhdGlvbiAob3V0Y2FwcywgVFJVRSk7Ci0KLSAgaWYgKCFnc3RfcGFkX3BlZXJfcXVlcnkgKHNjb3BlLT5wcml2LT5zcmNwYWQsIHF1ZXJ5KSkgewotICAgIC8qIG5vdCBhIHByb2JsZW0sIHdlIHVzZSB0aGUgcXVlcnkgZGVmYXVsdHMgKi8KLSAgICBHU1RfREVCVUdfT0JKRUNUIChzY29wZSwgImFsbG9jYXRpb24gcXVlcnkgZmFpbGVkIik7Ci0gIH0KLQotICBrbGFzcyA9IEdTVF9BVURJT19WSVNVQUxJWkVSX0dFVF9DTEFTUyAoc2NvcGUpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHNjb3BlLCAiY2FsbGluZyBkZWNpZGVfYWxsb2NhdGlvbiIpOwotICBnX2Fzc2VydCAoa2xhc3MtPmRlY2lkZV9hbGxvY2F0aW9uICE9IE5VTEwpOwotICByZXN1bHQgPSBrbGFzcy0+ZGVjaWRlX2FsbG9jYXRpb24gKHNjb3BlLCBxdWVyeSk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsICJBTExPQ0FUSU9OICglZCkgcGFyYW1zOiAlIiBHU1RfUFRSX0ZPUk1BVCwgcmVzdWx0LAotICAgICAgcXVlcnkpOwotCi0gIGlmICghcmVzdWx0KQotICAgIGdvdG8gbm9fZGVjaWRlX2FsbG9jYXRpb247Ci0KLSAgLyogd2UgZ290IGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgcGVlciBvciB0aGUgZGVjaWRlX2FsbG9jYXRpb24gbWV0aG9kLAotICAgKiBwYXJzZSB0aGVtICovCi0gIGlmIChnc3RfcXVlcnlfZ2V0X25fYWxsb2NhdGlvbl9wYXJhbXMgKHF1ZXJ5KSA+IDApIHsKLSAgICBnc3RfcXVlcnlfcGFyc2VfbnRoX2FsbG9jYXRpb25fcGFyYW0gKHF1ZXJ5LCAwLCAmYWxsb2NhdG9yLCAmcGFyYW1zKTsKLSAgfSBlbHNlIHsKLSAgICBhbGxvY2F0b3IgPSBOVUxMOwotICAgIGdzdF9hbGxvY2F0aW9uX3BhcmFtc19pbml0ICgmcGFyYW1zKTsKLSAgfQotCi0gIGlmIChnc3RfcXVlcnlfZ2V0X25fYWxsb2NhdGlvbl9wb29scyAocXVlcnkpID4gMCkKLSAgICBnc3RfcXVlcnlfcGFyc2VfbnRoX2FsbG9jYXRpb25fcG9vbCAocXVlcnksIDAsICZwb29sLCBOVUxMLCBOVUxMLCBOVUxMKTsKLQotICAvKiBub3cgc3RvcmUgKi8KLSAgcmVzdWx0ID0KLSAgICAgIGdzdF9hdWRpb192aXN1YWxpemVyX3NldF9hbGxvY2F0aW9uIChzY29wZSwgcG9vbCwgYWxsb2NhdG9yLCAmcGFyYW1zLAotICAgICAgcXVlcnkpOwotCi0gIHJldHVybiByZXN1bHQ7Ci0KLSAgLyogRXJyb3JzICovCi1ub19kZWNpZGVfYWxsb2NhdGlvbjoKLSAgewotICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoc2NvcGUsICJTdWJjbGFzcyBmYWlsZWQgdG8gZGVjaWRlIGFsbG9jYXRpb24iKTsKLSAgICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLX0KLQotc3RhdGljIGdib29sZWFuCi1kZWZhdWx0X2RlY2lkZV9hbGxvY2F0aW9uIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwgR3N0UXVlcnkgKiBxdWVyeSkKLXsKLSAgR3N0Q2FwcyAqb3V0Y2FwczsKLSAgR3N0QnVmZmVyUG9vbCAqcG9vbDsKLSAgZ3VpbnQgc2l6ZSwgbWluLCBtYXg7Ci0gIEdzdEFsbG9jYXRvciAqYWxsb2NhdG9yOwotICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtczsKLSAgR3N0U3RydWN0dXJlICpjb25maWc7Ci0gIGdib29sZWFuIHVwZGF0ZV9hbGxvY2F0b3I7Ci0gIGdib29sZWFuIHVwZGF0ZV9wb29sOwotCi0gIGdzdF9xdWVyeV9wYXJzZV9hbGxvY2F0aW9uIChxdWVyeSwgJm91dGNhcHMsIE5VTEwpOwotCi0gIC8qIHdlIGdvdCBjb25maWd1cmF0aW9uIGZyb20gb3VyIHBlZXIgb3IgdGhlIGRlY2lkZV9hbGxvY2F0aW9uIG1ldGhvZCwKLSAgICogcGFyc2UgdGhlbSAqLwotICBpZiAoZ3N0X3F1ZXJ5X2dldF9uX2FsbG9jYXRpb25fcGFyYW1zIChxdWVyeSkgPiAwKSB7Ci0gICAgLyogdHJ5IHRoZSBhbGxvY2F0b3IgKi8KLSAgICBnc3RfcXVlcnlfcGFyc2VfbnRoX2FsbG9jYXRpb25fcGFyYW0gKHF1ZXJ5LCAwLCAmYWxsb2NhdG9yLCAmcGFyYW1zKTsKLSAgICB1cGRhdGVfYWxsb2NhdG9yID0gVFJVRTsKLSAgfSBlbHNlIHsKLSAgICBhbGxvY2F0b3IgPSBOVUxMOwotICAgIGdzdF9hbGxvY2F0aW9uX3BhcmFtc19pbml0ICgmcGFyYW1zKTsKLSAgICB1cGRhdGVfYWxsb2NhdG9yID0gRkFMU0U7Ci0gIH0KLQotICBpZiAoZ3N0X3F1ZXJ5X2dldF9uX2FsbG9jYXRpb25fcG9vbHMgKHF1ZXJ5KSA+IDApIHsKLSAgICBnc3RfcXVlcnlfcGFyc2VfbnRoX2FsbG9jYXRpb25fcG9vbCAocXVlcnksIDAsICZwb29sLCAmc2l6ZSwgJm1pbiwgJm1heCk7Ci0gICAgdXBkYXRlX3Bvb2wgPSBUUlVFOwotICB9IGVsc2UgewotICAgIHBvb2wgPSBOVUxMOwotICAgIHNpemUgPSBHU1RfVklERU9fSU5GT19TSVpFICgmc2NvcGUtPnZpbmZvKTsKLSAgICBtaW4gPSBtYXggPSAwOwotICAgIHVwZGF0ZV9wb29sID0gRkFMU0U7Ci0gIH0KLQotICBpZiAocG9vbCA9PSBOVUxMKSB7Ci0gICAgLyogd2UgZGlkIG5vdCBnZXQgYSBwb29sLCBtYWtlIG9uZSBvdXJzZWx2ZXMgdGhlbiAqLwotICAgIHBvb2wgPSBnc3RfdmlkZW9fYnVmZmVyX3Bvb2xfbmV3ICgpOwotICB9Ci0KLSAgY29uZmlnID0gZ3N0X2J1ZmZlcl9wb29sX2dldF9jb25maWcgKHBvb2wpOwotICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9wYXJhbXMgKGNvbmZpZywgb3V0Y2Fwcywgc2l6ZSwgbWluLCBtYXgpOwotICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9hbGxvY2F0b3IgKGNvbmZpZywgYWxsb2NhdG9yLCAmcGFyYW1zKTsKLSAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19hZGRfb3B0aW9uIChjb25maWcsIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fVklERU9fTUVUQSk7Ci0gIGdzdF9idWZmZXJfcG9vbF9zZXRfY29uZmlnIChwb29sLCBjb25maWcpOwotCi0gIGlmICh1cGRhdGVfYWxsb2NhdG9yKQotICAgIGdzdF9xdWVyeV9zZXRfbnRoX2FsbG9jYXRpb25fcGFyYW0gKHF1ZXJ5LCAwLCBhbGxvY2F0b3IsICZwYXJhbXMpOwotICBlbHNlCi0gICAgZ3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX3BhcmFtIChxdWVyeSwgYWxsb2NhdG9yLCAmcGFyYW1zKTsKLQotICBpZiAoYWxsb2NhdG9yKQotICAgIGdzdF9vYmplY3RfdW5yZWYgKGFsbG9jYXRvcik7Ci0KLSAgaWYgKHVwZGF0ZV9wb29sKQotICAgIGdzdF9xdWVyeV9zZXRfbnRoX2FsbG9jYXRpb25fcG9vbCAocXVlcnksIDAsIHBvb2wsIHNpemUsIG1pbiwgbWF4KTsKLSAgZWxzZQotICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9wb29sIChxdWVyeSwgcG9vbCwgc2l6ZSwgbWluLCBtYXgpOwotCi0gIGlmIChwb29sKQotICAgIGdzdF9vYmplY3RfdW5yZWYgKHBvb2wpOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybgotZGVmYXVsdF9wcmVwYXJlX291dHB1dF9idWZmZXIgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlLCBHc3RCdWZmZXIgKiogb3V0YnVmKQotewotICBHc3RBdWRpb1Zpc3VhbGl6ZXJQcml2YXRlICpwcml2OwotCi0gIHByaXYgPSBzY29wZS0+cHJpdjsKLQotICBnX2Fzc2VydCAocHJpdi0+cG9vbCAhPSBOVUxMKTsKLQotICAvKiB3ZSBjYW4ndCByZXVzZSB0aGUgaW5wdXQgYnVmZmVyICovCi0gIGlmICghcHJpdi0+cG9vbF9hY3RpdmUpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzY29wZSwgInNldHRpbmcgcG9vbCAlcCBhY3RpdmUiLCBwcml2LT5wb29sKTsKLSAgICBpZiAoIWdzdF9idWZmZXJfcG9vbF9zZXRfYWN0aXZlIChwcml2LT5wb29sLCBUUlVFKSkKLSAgICAgIGdvdG8gYWN0aXZhdGVfZmFpbGVkOwotICAgIHByaXYtPnBvb2xfYWN0aXZlID0gVFJVRTsKLSAgfQotICBHU1RfREVCVUdfT0JKRUNUIChzY29wZSwgInVzaW5nIHBvb2wgYWxsb2MiKTsKLQotICByZXR1cm4gZ3N0X2J1ZmZlcl9wb29sX2FjcXVpcmVfYnVmZmVyIChwcml2LT5wb29sLCBvdXRidWYsIE5VTEwpOwotCi0gIC8qIEVSUk9SUyAqLwotYWN0aXZhdGVfZmFpbGVkOgotICB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKHNjb3BlLCBSRVNPVVJDRSwgU0VUVElOR1MsCi0gICAgICAgICgiZmFpbGVkIHRvIGFjdGl2YXRlIGJ1ZmZlcnBvb2wiKSwgKCJmYWlsZWQgdG8gYWN0aXZhdGUgYnVmZmVycG9vbCIpKTsKLSAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7Ci0gIH0KLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9hdWRpb192aXN1YWxpemVyX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RCdWZmZXIgKiBidWZmZXIpCi17Ci0gIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7Ci0gIEdzdEF1ZGlvVmlzdWFsaXplciAqc2NvcGU7Ci0gIEdzdEF1ZGlvVmlzdWFsaXplclByaXZhdGUgKnByaXY7Ci0gIEdzdEF1ZGlvVmlzdWFsaXplckNsYXNzICprbGFzczsKLSAgR3N0QnVmZmVyICppbmJ1ZjsKLSAgZ3VpbnQ2NCBkaXN0LCB0czsKLSAgZ3VpbnQgYXZhaWwsIHNicGY7Ci0gIGdwb2ludGVyIGFkYXRhOwotICBnaW50IGJwcywgY2hhbm5lbHMsIHJhdGU7Ci0KLSAgc2NvcGUgPSBHU1RfQVVESU9fVklTVUFMSVpFUiAocGFyZW50KTsKLSAgcHJpdiA9IHNjb3BlLT5wcml2OwotICBrbGFzcyA9IEdTVF9BVURJT19WSVNVQUxJWkVSX0NMQVNTIChHX09CSkVDVF9HRVRfQ0xBU1MgKHNjb3BlKSk7Ci0KLSAgR1NUX0xPR19PQkpFQ1QgKHNjb3BlLCAiY2hhaW5mdW5jIGNhbGxlZCIpOwotCi0gIC8qIHJlc3luYyBvbiBESVNDT05UICovCi0gIGlmIChHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUIChidWZmZXIsIEdTVF9CVUZGRVJfRkxBR19ESVNDT05UKSkgewotICAgIGdzdF9hZGFwdGVyX2NsZWFyIChwcml2LT5hZGFwdGVyKTsKLSAgfQotCi0gIC8qIE1ha2Ugc3VyZSBoYXZlIGFuIG91dHB1dCBmb3JtYXQgKi8KLSAgaWYgKGdzdF9wYWRfY2hlY2tfcmVjb25maWd1cmUgKHByaXYtPnNyY3BhZCkpIHsKLSAgICBpZiAoIWdzdF9hdWRpb192aXN1YWxpemVyX3NyY19uZWdvdGlhdGUgKHNjb3BlKSkgewotICAgICAgZ3N0X3BhZF9tYXJrX3JlY29uZmlndXJlIChwcml2LT5zcmNwYWQpOwotICAgICAgZ290byBub3RfbmVnb3RpYXRlZDsKLSAgICB9Ci0gIH0KLQotICBjaGFubmVscyA9IEdTVF9BVURJT19JTkZPX0NIQU5ORUxTICgmc2NvcGUtPmFpbmZvKTsKLSAgcmF0ZSA9IEdTVF9BVURJT19JTkZPX1JBVEUgKCZzY29wZS0+YWluZm8pOwotICBicHMgPSBHU1RfQVVESU9fSU5GT19CUFMgKCZzY29wZS0+YWluZm8pOwotCi0gIGlmIChicHMgPT0gMCkgewotICAgIHJldCA9IEdTVF9GTE9XX05PVF9ORUdPVElBVEVEOwotICAgIGdvdG8gYmVhY2g7Ci0gIH0KLQotICBnc3RfYWRhcHRlcl9wdXNoIChwcml2LT5hZGFwdGVyLCBidWZmZXIpOwotCi0gIGdfbXV0ZXhfbG9jayAoJnByaXYtPmNvbmZpZ19sb2NrKTsKLQotICAvKiB0aGlzIGlzIHdoYXQgd2Ugd2FudCAqLwotICBzYnBmID0gc2NvcGUtPnJlcV9zcGYgKiBjaGFubmVscyAqIHNpemVvZiAoZ2ludDE2KTsKLQotICBpbmJ1ZiA9IHByaXYtPmluYnVmOwotICAvKiBGSVhNRTogdGhlIHRpbWVzdGFtcCBpbiB0aGUgYWRhcHRlciB3b3VsZCBiZSBkaWZmZXJlbnQgKi8KLSAgZ3N0X2J1ZmZlcl9jb3B5X2ludG8gKGluYnVmLCBidWZmZXIsIEdTVF9CVUZGRVJfQ09QWV9NRVRBREFUQSwgMCwgLTEpOwotCi0gIC8qIHRoaXMgaXMgd2hhdCB3ZSBoYXZlICovCi0gIGF2YWlsID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlIChwcml2LT5hZGFwdGVyKTsKLSAgR1NUX0xPR19PQkpFQ1QgKHNjb3BlLCAiYXZhaWw6ICV1LCBicGY6ICV1IiwgYXZhaWwsIHNicGYpOwotICB3aGlsZSAoYXZhaWwgPj0gc2JwZikgewotICAgIEdzdEJ1ZmZlciAqb3V0YnVmOwotICAgIEdzdFZpZGVvRnJhbWUgb3V0ZnJhbWU7Ci0KLSAgICAvKiBnZXQgdGltZXN0YW1wIG9mIHRoZSBjdXJyZW50IGFkYXB0ZXIgY29udGVudCAqLwotICAgIHRzID0gZ3N0X2FkYXB0ZXJfcHJldl9wdHMgKHByaXYtPmFkYXB0ZXIsICZkaXN0KTsKLSAgICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHRzKSkgewotICAgICAgLyogY29udmVydCBieXRlcyB0byB0aW1lICovCi0gICAgICBkaXN0IC89IGJwczsKLSAgICAgIHRzICs9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKGRpc3QsIEdTVF9TRUNPTkQsIHJhdGUpOwotICAgIH0KLQotICAgIC8qIGNoZWNrIGZvciBRb1MsIGRvbid0IGNvbXB1dGUgYnVmZmVycyB0aGF0IGFyZSBrbm93biB0byBiZSBsYXRlICovCi0gICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEICh0cykpIHsKLSAgICAgIEdzdENsb2NrVGltZSBlYXJsaWVzdF90aW1lOwotICAgICAgZ2RvdWJsZSBwcm9wb3J0aW9uOwotICAgICAgZ2ludDY0IHFvc3RpbWU7Ci0KLSAgICAgIHFvc3RpbWUgPQotICAgICAgICAgIGdzdF9zZWdtZW50X3RvX3J1bm5pbmdfdGltZSAoJnByaXYtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwKLSAgICAgICAgICB0cykgKyBwcml2LT5mcmFtZV9kdXJhdGlvbjsKLQotICAgICAgR1NUX09CSkVDVF9MT0NLIChzY29wZSk7Ci0gICAgICBlYXJsaWVzdF90aW1lID0gcHJpdi0+ZWFybGllc3RfdGltZTsKLSAgICAgIHByb3BvcnRpb24gPSBwcml2LT5wcm9wb3J0aW9uOwotICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNjb3BlKTsKLQotICAgICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChlYXJsaWVzdF90aW1lKSAmJiBxb3N0aW1lIDw9IGVhcmxpZXN0X3RpbWUpIHsKLSAgICAgICAgR3N0Q2xvY2tUaW1lIHN0cmVhbV90aW1lLCBqaXR0ZXI7Ci0gICAgICAgIEdzdE1lc3NhZ2UgKnFvc19tc2c7Ci0KLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsCi0gICAgICAgICAgICAiUW9TOiBza2lwIHRzOiAlIiBHU1RfVElNRV9GT1JNQVQgIiwgZWFybGllc3Q6ICUiIEdTVF9USU1FX0ZPUk1BVCwKLSAgICAgICAgICAgIEdTVF9USU1FX0FSR1MgKHFvc3RpbWUpLCBHU1RfVElNRV9BUkdTIChlYXJsaWVzdF90aW1lKSk7Ci0KLSAgICAgICAgKytwcml2LT5kcm9wcGVkOwotICAgICAgICBzdHJlYW1fdGltZSA9IGdzdF9zZWdtZW50X3RvX3N0cmVhbV90aW1lICgmcHJpdi0+c2VnbWVudCwKLSAgICAgICAgICAgIEdTVF9GT1JNQVRfVElNRSwgdHMpOwotICAgICAgICBqaXR0ZXIgPSBHU1RfQ0xPQ0tfRElGRiAocW9zdGltZSwgZWFybGllc3RfdGltZSk7Ci0gICAgICAgIHFvc19tc2cgPSBnc3RfbWVzc2FnZV9uZXdfcW9zIChHU1RfT0JKRUNUIChzY29wZSksIEZBTFNFLCBxb3N0aW1lLAotICAgICAgICAgICAgc3RyZWFtX3RpbWUsIHRzLCBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpKTsKLSAgICAgICAgZ3N0X21lc3NhZ2Vfc2V0X3Fvc192YWx1ZXMgKHFvc19tc2csIGppdHRlciwgcHJvcG9ydGlvbiwgMTAwMDAwMCk7Ci0gICAgICAgIGdzdF9tZXNzYWdlX3NldF9xb3Nfc3RhdHMgKHFvc19tc2csIEdTVF9GT1JNQVRfQlVGRkVSUywKLSAgICAgICAgICAgIHByaXYtPnByb2Nlc3NlZCwgcHJpdi0+ZHJvcHBlZCk7Ci0gICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKHNjb3BlKSwgcW9zX21zZyk7Ci0KLSAgICAgICAgZ290byBza2lwOwotICAgICAgfQotICAgIH0KLQotICAgICsrcHJpdi0+cHJvY2Vzc2VkOwotCi0gICAgZ19tdXRleF91bmxvY2sgKCZwcml2LT5jb25maWdfbG9jayk7Ci0gICAgcmV0ID0gZGVmYXVsdF9wcmVwYXJlX291dHB1dF9idWZmZXIgKHNjb3BlLCAmb3V0YnVmKTsKLSAgICBnX211dGV4X2xvY2sgKCZwcml2LT5jb25maWdfbG9jayk7Ci0gICAgLyogcmVjaGVjayBhcyB0aGUgdmFsdWUgY291bGQgaGF2ZSBjaGFuZ2VkICovCi0gICAgc2JwZiA9IHNjb3BlLT5yZXFfc3BmICogY2hhbm5lbHMgKiBzaXplb2YgKGdpbnQxNik7Ci0KLSAgICAvKiBubyBidWZmZXIgYWxsb2NhdGVkLCB3ZSBkb24ndCBjYXJlIHdoeS4gKi8KLSAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKQotICAgICAgYnJlYWs7Ci0KLSAgICAvKiBzeW5jIGNvbnRyb2xsZWQgcHJvcGVydGllcyAqLwotICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAodHMpKQotICAgICAgZ3N0X29iamVjdF9zeW5jX3ZhbHVlcyAoR1NUX09CSkVDVCAoc2NvcGUpLCB0cyk7Ci0KLSAgICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAob3V0YnVmKSA9IHRzOwotICAgIEdTVF9CVUZGRVJfRFVSQVRJT04gKG91dGJ1ZikgPSBwcml2LT5mcmFtZV9kdXJhdGlvbjsKLQotICAgIC8qIHRoaXMgY2FuIGZhaWwgYXMgdGhlIGRhdGEgc2l6ZSB3ZSBuZWVkIGNvdWxkIGhhdmUgY2hhbmdlZCAqLwotICAgIGlmICghKGFkYXRhID0gKGdwb2ludGVyKSBnc3RfYWRhcHRlcl9tYXAgKHByaXYtPmFkYXB0ZXIsIHNicGYpKSkKLSAgICAgIGJyZWFrOwotCi0gICAgZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJm91dGZyYW1lLCAmc2NvcGUtPnZpbmZvLCBvdXRidWYsIEdTVF9NQVBfUkVBRFdSSVRFKTsKLQotICAgIGlmIChwcml2LT5zaGFkZXIpIHsKLSAgICAgIGdzdF92aWRlb19mcmFtZV9jb3B5ICgmb3V0ZnJhbWUsICZwcml2LT50ZW1wZnJhbWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAvKiBnc3RfdmlkZW9fZnJhbWVfY2xlYXIoKSBvciBpcyBvdXRwdXQgZnJhbWUgYWxyZWFkeSBjbGVhcmVkICovCi0gICAgICBnaW50IGk7Ci0KLSAgICAgIGZvciAoaSA9IDA7IGkgPCBzY29wZS0+dmluZm8uZmluZm8tPm5fcGxhbmVzOyBpKyspIHsKLSAgICAgICAgbWVtc2V0IChvdXRmcmFtZS5kYXRhW2ldLCAwLCBvdXRmcmFtZS5tYXBbaV0uc2l6ZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgZ3N0X2J1ZmZlcl9yZXBsYWNlX2FsbF9tZW1vcnkgKGluYnVmLAotICAgICAgICBnc3RfbWVtb3J5X25ld193cmFwcGVkIChHU1RfTUVNT1JZX0ZMQUdfUkVBRE9OTFksIGFkYXRhLCBzYnBmLCAwLAotICAgICAgICAgICAgc2JwZiwgTlVMTCwgTlVMTCkpOwotCi0gICAgLyogY2FsbCBjbGFzcy0+cmVuZGVyKCkgdm1ldGhvZCAqLwotICAgIGlmIChrbGFzcy0+cmVuZGVyKSB7Ci0gICAgICBpZiAoIWtsYXNzLT5yZW5kZXIgKHNjb3BlLCBpbmJ1ZiwgJm91dGZyYW1lKSkgewotICAgICAgICByZXQgPSBHU1RfRkxPV19FUlJPUjsKLSAgICAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmb3V0ZnJhbWUpOwotICAgICAgICBnb3RvIGJlYWNoOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgLyogcnVuIHZhcmlvdXMgcG9zdCBwcm9jZXNzaW5nIChzaGFkaW5nIGFuZCBnZW9tZXRyaWMgdHJhbnNmb3JtYXRpb24pICovCi0gICAgICAgIC8qIEZJWE1FOiBTSEFERVIgYXNzdW1lcyAzMmJwcCAqLwotICAgICAgICBpZiAocHJpdi0+c2hhZGVyICYmIEdTVF9WSURFT19JTkZPX0NPTVBfUFNUUklERSAoJnNjb3BlLT52aW5mbywgMCkgPT0gNCkgewotICAgICAgICAgIHByaXYtPnNoYWRlciAoc2NvcGUsICZvdXRmcmFtZSwgJnByaXYtPnRlbXBmcmFtZSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmb3V0ZnJhbWUpOwotCi0gICAgZ19tdXRleF91bmxvY2sgKCZwcml2LT5jb25maWdfbG9jayk7Ci0gICAgcmV0ID0gZ3N0X3BhZF9wdXNoIChwcml2LT5zcmNwYWQsIG91dGJ1Zik7Ci0gICAgb3V0YnVmID0gTlVMTDsKLSAgICBnX211dGV4X2xvY2sgKCZwcml2LT5jb25maWdfbG9jayk7Ci0KLSAgc2tpcDoKLSAgICAvKiByZWNoZWNrIGFzIHRoZSB2YWx1ZSBjb3VsZCBoYXZlIGNoYW5nZWQgKi8KLSAgICBzYnBmID0gc2NvcGUtPnJlcV9zcGYgKiBjaGFubmVscyAqIHNpemVvZiAoZ2ludDE2KTsKLSAgICBHU1RfTE9HX09CSkVDVCAoc2NvcGUsICJhdmFpbDogJXUsIGJwZjogJXUiLCBhdmFpbCwgc2JwZik7Ci0gICAgLyogd2Ugd2FudCB0byB0YWtlIGxlc3Mgb3IgbW9yZSwgZGVwZW5kaW5nIG9uIHNwZiA6IHJlcV9zcGYgKi8KLSAgICBpZiAoYXZhaWwgLSBzYnBmID49IHNicGYpIHsKLSAgICAgIGdzdF9hZGFwdGVyX2ZsdXNoIChwcml2LT5hZGFwdGVyLCBzYnBmKTsKLSAgICAgIGdzdF9hZGFwdGVyX3VubWFwIChwcml2LT5hZGFwdGVyKTsKLSAgICB9IGVsc2UgaWYgKGF2YWlsID49IHNicGYpIHsKLSAgICAgIC8qIGp1c3QgZmx1c2ggYSBiaXQgYW5kIHN0b3AgKi8KLSAgICAgIGdzdF9hZGFwdGVyX2ZsdXNoIChwcml2LT5hZGFwdGVyLCAoYXZhaWwgLSBzYnBmKSk7Ci0gICAgICBnc3RfYWRhcHRlcl91bm1hcCAocHJpdi0+YWRhcHRlcik7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgYXZhaWwgPSBnc3RfYWRhcHRlcl9hdmFpbGFibGUgKHByaXYtPmFkYXB0ZXIpOwotCi0gICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgZ19tdXRleF91bmxvY2sgKCZwcml2LT5jb25maWdfbG9jayk7Ci0KLWJlYWNoOgotICByZXR1cm4gcmV0OwotCi0gIC8qIEVSUk9SUyAqLwotbm90X25lZ290aWF0ZWQ6Ci0gIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzY29wZSwgIkZhaWxlZCB0byByZW5lZ290aWF0ZSIpOwotICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKLSAgfQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9hdWRpb192aXN1YWxpemVyX3NyY19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCi0gICAgR3N0RXZlbnQgKiBldmVudCkKLXsKLSAgZ2Jvb2xlYW4gcmVzOwotICBHc3RBdWRpb1Zpc3VhbGl6ZXIgKnNjb3BlOwotICBHc3RBdWRpb1Zpc3VhbGl6ZXJQcml2YXRlICpwcml2OwotCi0gIHNjb3BlID0gR1NUX0FVRElPX1ZJU1VBTElaRVIgKHBhcmVudCk7Ci0gIHByaXYgPSBzY29wZS0+cHJpdjsKLQotICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKLSAgICBjYXNlIEdTVF9FVkVOVF9RT1M6Ci0gICAgewotICAgICAgZ2RvdWJsZSBwcm9wb3J0aW9uOwotICAgICAgR3N0Q2xvY2tUaW1lRGlmZiBkaWZmOwotICAgICAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcDsKLQotICAgICAgZ3N0X2V2ZW50X3BhcnNlX3FvcyAoZXZlbnQsIE5VTEwsICZwcm9wb3J0aW9uLCAmZGlmZiwgJnRpbWVzdGFtcCk7Ci0KLSAgICAgIC8qIHNhdmUgc3R1ZmYgZm9yIHRoZSBfY2hhaW4oKSBmdW5jdGlvbiAqLwotICAgICAgR1NUX09CSkVDVF9MT0NLIChzY29wZSk7Ci0gICAgICBwcml2LT5wcm9wb3J0aW9uID0gcHJvcG9ydGlvbjsKLSAgICAgIGlmIChkaWZmID49IDApCi0gICAgICAgIC8qIHdlJ3JlIGxhdGUsIHRoaXMgaXMgYSBnb29kIGVzdGltYXRlIGZvciBuZXh0IGRpc3BsYXlhYmxlCi0gICAgICAgICAqIGZyYW1lIChzZWUgcGFydC1xb3MudHh0KSAqLwotICAgICAgICBwcml2LT5lYXJsaWVzdF90aW1lID0gdGltZXN0YW1wICsgMiAqIGRpZmYgKyBwcml2LT5mcmFtZV9kdXJhdGlvbjsKLSAgICAgIGVsc2UKLSAgICAgICAgcHJpdi0+ZWFybGllc3RfdGltZSA9IHRpbWVzdGFtcCArIGRpZmY7Ci0gICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc2NvcGUpOwotCi0gICAgICByZXMgPSBnc3RfcGFkX3B1c2hfZXZlbnQgKHByaXYtPnNpbmtwYWQsIGV2ZW50KTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEdTVF9FVkVOVF9SRUNPTkZJR1VSRToKLSAgICAgIC8qIGRvbnQndCBmb3J3YXJkICovCi0gICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKLSAgICAgIHJlcyA9IFRSVUU7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgcmVzID0gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOwotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9hdWRpb192aXN1YWxpemVyX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdEV2ZW50ICogZXZlbnQpCi17Ci0gIGdib29sZWFuIHJlczsKLSAgR3N0QXVkaW9WaXN1YWxpemVyICpzY29wZTsKLQotICBzY29wZSA9IEdTVF9BVURJT19WSVNVQUxJWkVSIChwYXJlbnQpOwotCi0gIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgewotICAgIGNhc2UgR1NUX0VWRU5UX0NBUFM6Ci0gICAgewotICAgICAgR3N0Q2FwcyAqY2FwczsKLQotICAgICAgZ3N0X2V2ZW50X3BhcnNlX2NhcHMgKGV2ZW50LCAmY2Fwcyk7Ci0gICAgICByZXMgPSBnc3RfYXVkaW9fdmlzdWFsaXplcl9zaW5rX3NldGNhcHMgKHNjb3BlLCBjYXBzKTsKLSAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUT1A6Ci0gICAgICBnc3RfYXVkaW9fdmlzdWFsaXplcl9yZXNldCAoc2NvcGUpOwotICAgICAgcmVzID0gZ3N0X3BhZF9wdXNoX2V2ZW50IChzY29wZS0+cHJpdi0+c3JjcGFkLCBldmVudCk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9FVkVOVF9TRUdNRU5UOgotICAgIHsKLSAgICAgIC8qIHRoZSBuZXdzZWdtZW50IHZhbHVlcyBhcmUgdXNlZCB0byBjbGlwIHRoZSBpbnB1dCBzYW1wbGVzCi0gICAgICAgKiBhbmQgdG8gY29udmVydCB0aGUgaW5jb21taW5nIHRpbWVzdGFtcHMgdG8gcnVubmluZyB0aW1lIHNvCi0gICAgICAgKiB3ZSBjYW4gZG8gUW9TICovCi0gICAgICBnc3RfZXZlbnRfY29weV9zZWdtZW50IChldmVudCwgJnNjb3BlLT5wcml2LT5zZWdtZW50KTsKLQotICAgICAgcmVzID0gZ3N0X3BhZF9wdXNoX2V2ZW50IChzY29wZS0+cHJpdi0+c3JjcGFkLCBldmVudCk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJlcyA9IGdzdF9wYWRfZXZlbnRfZGVmYXVsdCAocGFkLCBwYXJlbnQsIGV2ZW50KTsKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9zcmNfcXVlcnkgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdFF1ZXJ5ICogcXVlcnkpCi17Ci0gIGdib29sZWFuIHJlcyA9IEZBTFNFOwotICBHc3RBdWRpb1Zpc3VhbGl6ZXIgKnNjb3BlOwotCi0gIHNjb3BlID0gR1NUX0FVRElPX1ZJU1VBTElaRVIgKHBhcmVudCk7Ci0KLSAgc3dpdGNoIChHU1RfUVVFUllfVFlQRSAocXVlcnkpKSB7Ci0gICAgY2FzZSBHU1RfUVVFUllfTEFURU5DWToKLSAgICB7Ci0gICAgICAvKiBXZSBuZWVkIHRvIHNlbmQgdGhlIHF1ZXJ5IHVwc3RyZWFtIGFuZCBhZGQgdGhlIHJldHVybmVkIGxhdGVuY3kgdG8gb3VyCi0gICAgICAgKiBvd24gKi8KLSAgICAgIEdzdENsb2NrVGltZSBtaW5fbGF0ZW5jeSwgbWF4X2xhdGVuY3k7Ci0gICAgICBnYm9vbGVhbiB1c19saXZlOwotICAgICAgR3N0Q2xvY2tUaW1lIG91cl9sYXRlbmN5OwotICAgICAgZ3VpbnQgbWF4X3NhbXBsZXM7Ci0gICAgICBnaW50IHJhdGUgPSBHU1RfQVVESU9fSU5GT19SQVRFICgmc2NvcGUtPmFpbmZvKTsKLQotICAgICAgaWYgKHJhdGUgPT0gMCkKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGlmICgocmVzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5IChzY29wZS0+cHJpdi0+c2lua3BhZCwgcXVlcnkpKSkgewotICAgICAgICBnc3RfcXVlcnlfcGFyc2VfbGF0ZW5jeSAocXVlcnksICZ1c19saXZlLCAmbWluX2xhdGVuY3ksICZtYXhfbGF0ZW5jeSk7Ci0KLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsICJQZWVyIGxhdGVuY3k6IG1pbiAlIgotICAgICAgICAgICAgR1NUX1RJTUVfRk9STUFUICIgbWF4ICUiIEdTVF9USU1FX0ZPUk1BVCwKLSAgICAgICAgICAgIEdTVF9USU1FX0FSR1MgKG1pbl9sYXRlbmN5KSwgR1NUX1RJTUVfQVJHUyAobWF4X2xhdGVuY3kpKTsKLQotICAgICAgICAvKiB0aGUgbWF4IHNhbXBsZXMgd2UgbXVzdCBidWZmZXIgYnVmZmVyICovCi0gICAgICAgIG1heF9zYW1wbGVzID0gTUFYIChzY29wZS0+cmVxX3NwZiwgc2NvcGUtPnByaXYtPnNwZik7Ci0gICAgICAgIG91cl9sYXRlbmN5ID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCAobWF4X3NhbXBsZXMsIEdTVF9TRUNPTkQsIHJhdGUpOwotCi0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNjb3BlLCAiT3VyIGxhdGVuY3k6ICUiIEdTVF9USU1FX0ZPUk1BVCwKLSAgICAgICAgICAgIEdTVF9USU1FX0FSR1MgKG91cl9sYXRlbmN5KSk7Ci0KLSAgICAgICAgLyogd2UgYWRkIHNvbWUgbGF0ZW5jeSBidXQgb25seSBpZiB3ZSBuZWVkIHRvIGJ1ZmZlciBtb3JlIHRoYW4gd2hhdAotICAgICAgICAgKiB1cHN0cmVhbSBnaXZlcyB1cyAqLwotICAgICAgICBtaW5fbGF0ZW5jeSArPSBvdXJfbGF0ZW5jeTsKLSAgICAgICAgaWYgKG1heF9sYXRlbmN5ICE9IC0xKQotICAgICAgICAgIG1heF9sYXRlbmN5ICs9IG91cl9sYXRlbmN5OwotCi0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNjb3BlLCAiQ2FsY3VsYXRlZCB0b3RhbCBsYXRlbmN5IDogbWluICUiCi0gICAgICAgICAgICBHU1RfVElNRV9GT1JNQVQgIiBtYXggJSIgR1NUX1RJTUVfRk9STUFULAotICAgICAgICAgICAgR1NUX1RJTUVfQVJHUyAobWluX2xhdGVuY3kpLCBHU1RfVElNRV9BUkdTIChtYXhfbGF0ZW5jeSkpOwotCi0gICAgICAgIGdzdF9xdWVyeV9zZXRfbGF0ZW5jeSAocXVlcnksIFRSVUUsIG1pbl9sYXRlbmN5LCBtYXhfbGF0ZW5jeSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJlcyA9IGdzdF9wYWRfcXVlcnlfZGVmYXVsdCAocGFkLCBwYXJlbnQsIHF1ZXJ5KTsKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAotICAgIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCi17Ci0gIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJldDsKLSAgR3N0QXVkaW9WaXN1YWxpemVyICpzY29wZTsKLQotICBzY29wZSA9IEdTVF9BVURJT19WSVNVQUxJWkVSIChlbGVtZW50KTsKLQotICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgotICAgICAgZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfcmVzZXQgKHNjb3BlKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldCA9IEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5jaGFuZ2Vfc3RhdGUgKGVsZW1lbnQsIHRyYW5zaXRpb24pOwotCi0gIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6Ci0gICAgICBnc3RfYXVkaW9fdmlzdWFsaXplcl9zZXRfYWxsb2NhdGlvbiAoc2NvcGUsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEw6Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXR1cm4gcmV0OwotfQpkaWZmIC0tZ2l0IGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0YXVkaW92aXN1YWxpemVyLmggYi9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RhdWRpb3Zpc3VhbGl6ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgxZGU4MS4uMDAwMDAwMAotLS0gYS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RhdWRpb3Zpc3VhbGl6ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgPDIwMTE+IFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KLSAqIENvcHlyaWdodCAoQykgPDIwMTU+IEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNAZGViZXRoZW5jb3VydC5jb20+Ci0gKgotICogZ3N0YXVkaW92aXN1YWxpemVyLmM6IGJhc2UgY2xhc3MgZm9yIGF1ZGlvIHZpc3VhbGlzYXRpb24gZWxlbWVudHMKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIF9fR1NUX0FVRElPX1ZJU1VBTElaRVJfSF9fCi0jZGVmaW5lIF9fR1NUX0FVRElPX1ZJU1VBTElaRVJfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0YmFzZXRyYW5zZm9ybS5oPgotCi0jaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+Ci0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0jaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0YWRhcHRlci5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgR1NUX1RZUEVfQVVESU9fVklTVUFMSVpFUiAgICAgICAgICAgIChnc3RfYXVkaW9fdmlzdWFsaXplcl9nZXRfdHlwZSgpKQotI2RlZmluZSBHU1RfQVVESU9fVklTVUFMSVpFUihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX0FVRElPX1ZJU1VBTElaRVIsR3N0QXVkaW9WaXN1YWxpemVyKSkKLSNkZWZpbmUgR1NUX0FVRElPX1ZJU1VBTElaRVJfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX0FVRElPX1ZJU1VBTElaRVIsR3N0QXVkaW9WaXN1YWxpemVyQ2xhc3MpKQotI2RlZmluZSBHU1RfQVVESU9fVklTVUFMSVpFUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksR1NUX1RZUEVfQVVESU9fVklTVUFMSVpFUixHc3RBdWRpb1Zpc3VhbGl6ZXJDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19BVURJT19WSVNVQUxJWkVSKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfQVVESU9fVklTVUFMSVpFUikpCi0jZGVmaW5lIEdTVF9JU19BVURJT19WSVNVQUxJWkVSX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9BVURJT19WSVNVQUxJWkVSKSkKLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdEF1ZGlvVmlzdWFsaXplciBHc3RBdWRpb1Zpc3VhbGl6ZXI7Ci10eXBlZGVmIHN0cnVjdCBfR3N0QXVkaW9WaXN1YWxpemVyQ2xhc3MgR3N0QXVkaW9WaXN1YWxpemVyQ2xhc3M7Ci10eXBlZGVmIHN0cnVjdCBfR3N0QXVkaW9WaXN1YWxpemVyUHJpdmF0ZSBHc3RBdWRpb1Zpc3VhbGl6ZXJQcml2YXRlOwotCi10eXBlZGVmIHZvaWQgKCpHc3RBdWRpb1Zpc3VhbGl6ZXJTaGFkZXJGdW5jKShHc3RBdWRpb1Zpc3VhbGl6ZXIgKnNjb3BlLCBjb25zdCBHc3RWaWRlb0ZyYW1lICpzLCBHc3RWaWRlb0ZyYW1lICpkKTsKLQotLyoqCi0gKiBHc3RBdWRpb1Zpc3VhbGl6ZXJTaGFkZXI6Ci0gKiBAR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX05PTkU6IG5vIHNoYWRpbmcKLSAqIEBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERTogcGxhaW4gZmFkaW5nCi0gKiBAR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfVVA6IGZhZGUgYW5kIG1vdmUgdXAKLSAqIEBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9ET1dOOiBmYWRlIGFuZCBtb3ZlIGRvd24KLSAqIEBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9MRUZUOiBmYWRlIGFuZCBtb3ZlIGxlZnQKLSAqIEBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9SSUdIVDogZmFkZSBhbmQgbW92ZSByaWdodAotICogQEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX0hPUklaX09VVDogZmFkZSBhbmQgbW92ZSBob3Jpem9udGFsbHkgb3V0Ci0gKiBAR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfSE9SSVpfSU46IGZhZGUgYW5kIG1vdmUgaG9yaXpvbnRhbGx5IGluCi0gKiBAR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfVkVSVF9PVVQ6IGZhZGUgYW5kIG1vdmUgdmVydGljYWxseSBvdXQKLSAqIEBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9WRVJUX0lOOiBmYWRlIGFuZCBtb3ZlIHZlcnRpY2FsbHkgaW4KLSAqCi0gKiBEaWZmZXJlbnQgdHlwZXMgb2Ygc3VwcG9ydGVkIGJhY2tncm91bmQgc2hhZGluZyBmdW5jdGlvbnMuCi0gKi8KLXR5cGVkZWYgZW51bSB7Ci0gIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9OT05FLAotICBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERSwKLSAgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfVVAsCi0gIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX0RPV04sCi0gIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX0xFRlQsCi0gIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX1JJR0hULAotICBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9IT1JJWl9PVVQsCi0gIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX0hPUklaX0lOLAotICBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9WRVJUX09VVCwKLSAgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfVkVSVF9JTgotfSBHc3RBdWRpb1Zpc3VhbGl6ZXJTaGFkZXI7Ci0KLXN0cnVjdCBfR3N0QXVkaW9WaXN1YWxpemVyCi17Ci0gIEdzdEVsZW1lbnQgcGFyZW50OwotCi0gIGd1aW50IHJlcV9zcGY7ICAgICAgICAgICAgICAgIC8qIG1pbiBzYW1wbGVzIHBlciBmcmFtZSB3YW50ZWQgYnkgdGhlIHN1YmNsYXNzICovCi0KLSAgLyogdmlkZW8gc3RhdGUgKi8KLSAgR3N0VmlkZW9JbmZvIHZpbmZvOwotCi0gIC8qIGF1ZGlvIHN0YXRlICovCi0gIEdzdEF1ZGlvSW5mbyBhaW5mbzsKLQotICAvKiA8cHJpdmF0ZT4gKi8KLSAgR3N0QXVkaW9WaXN1YWxpemVyUHJpdmF0ZSAqcHJpdjsKLX07Ci0KLXN0cnVjdCBfR3N0QXVkaW9WaXN1YWxpemVyQ2xhc3MKLXsKLSAgR3N0RWxlbWVudENsYXNzIHBhcmVudF9jbGFzczsKLQotICAvKiB2aXJ0dWFsIGZ1bmN0aW9uLCBjYWxsZWQgd2hlbmV2ZXIgdGhlIGZvcm1hdCBjaGFuZ2VzICovCi0gIGdib29sZWFuICgqc2V0dXApIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSk7Ci0KLSAgLyogdmlydHVhbCBmdW5jdGlvbiBmb3IgcmVuZGVyaW5nIGEgZnJhbWUgKi8KLSAgZ2Jvb2xlYW4gKCpyZW5kZXIpIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwgR3N0QnVmZmVyICogYXVkaW8sIEdzdFZpZGVvRnJhbWUgKiB2aWRlbyk7Ci0KLSAgZ2Jvb2xlYW4gKCpkZWNpZGVfYWxsb2NhdGlvbikgICAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsIEdzdFF1ZXJ5ICpxdWVyeSk7Ci19OwotCi1HVHlwZSBnc3RfYXVkaW9fdmlzdWFsaXplcl9nZXRfdHlwZSAodm9pZCk7Ci0KLUdfRU5EX0RFQ0xTCi0jZW5kaWYgLyogX19HU1RfQVVESU9fVklTVUFMSVpFUl9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwYWNlc2NvcGUuYyBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwYWNlc2NvcGUuYwppbmRleCBiMDgyOGE4Li42Y2RlMDY2IDEwMDY0NAotLS0gYS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGFjZXNjb3BlLmMKKysrIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3BhY2VzY29wZS5jCkBAIC0yOCw3ICsyOCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBhdWRpb3Rlc3RzcmMgISBhdWRpb2NvbnZlcnQgISBzcGFjZXNjb3BlICEgeGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgYXVkaW90ZXN0c3JjICEgYXVkaW9jb252ZXJ0ICEgc3BhY2VzY29wZSAhIHhpbWFnZXNpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGFjZXNjb3BlLmggYi9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGFjZXNjb3BlLmgKaW5kZXggYTMwNWFiNS4uMTA2NTlmZSAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3BhY2VzY29wZS5oCisrKyBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwYWNlc2NvcGUuaApAQCAtMjIsNyArMjIsNyBAQAogI2lmbmRlZiBfX0dTVF9TUEFDRV9TQ09QRV9IX18KICNkZWZpbmUgX19HU1RfU1BBQ0VfU0NPUEVfSF9fCiAKLSNpbmNsdWRlICJnc3RhdWRpb3Zpc3VhbGl6ZXIuaCIKKyNpbmNsdWRlICJnc3QvcGJ1dGlscy9nc3RhdWRpb3Zpc3VhbGl6ZXIuaCIKIAogR19CRUdJTl9ERUNMUwogI2RlZmluZSBHU1RfVFlQRV9TUEFDRV9TQ09QRSAgICAgICAgICAgIChnc3Rfc3BhY2Vfc2NvcGVfZ2V0X3R5cGUoKSkKZGlmZiAtLWdpdCBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwZWN0cmFzY29wZS5jIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3BlY3RyYXNjb3BlLmMKaW5kZXggZmY0M2NmZC4uMjk3ZDNlZiAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3BlY3RyYXNjb3BlLmMKKysrIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3BlY3RyYXNjb3BlLmMKQEAgLTI5LDcgKzI5LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY29udmVydCAhIHNwZWN0cmFzY29wZSAhIHhpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY29udmVydCAhIHNwZWN0cmFzY29wZSAhIHhpbWFnZXNpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGVjdHJhc2NvcGUuaCBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwZWN0cmFzY29wZS5oCmluZGV4IDBiMjFkMDguLmQwNjM3MzQgMTAwNjQ0Ci0tLSBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwZWN0cmFzY29wZS5oCisrKyBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwZWN0cmFzY29wZS5oCkBAIC0yMiw3ICsyMiw3IEBACiAjaWZuZGVmIF9fR1NUX1NQRUNUUkFfU0NPUEVfSF9fCiAjZGVmaW5lIF9fR1NUX1NQRUNUUkFfU0NPUEVfSF9fCiAKLSNpbmNsdWRlICJnc3RhdWRpb3Zpc3VhbGl6ZXIuaCIKKyNpbmNsdWRlICJnc3QvcGJ1dGlscy9nc3RhdWRpb3Zpc3VhbGl6ZXIuaCIKICNpbmNsdWRlIDxnc3QvZmZ0L2dzdGZmdHMxNi5oPgogCiBHX0JFR0lOX0RFQ0xTCmRpZmYgLS1naXQgYS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzeW5hZXNjb3BlLmMgYi9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzeW5hZXNjb3BlLmMKaW5kZXggMjNkMTVmMC4uZGZhZGYwOSAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3luYWVzY29wZS5jCisrKyBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHN5bmFlc2NvcGUuYwpAQCAtMjgsNyArMjgsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggYXVkaW90ZXN0c3JjICEgYXVkaW9jb252ZXJ0ICEgc3luYWVzY29wZSAhIHhpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY29udmVydCAhIHN5bmFlc2NvcGUgISB4aW1hZ2VzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3luYWVzY29wZS5oIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3luYWVzY29wZS5oCmluZGV4IGEzMTQ4ZWQuLmY2ZWMyNjQgMTAwNjQ0Ci0tLSBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHN5bmFlc2NvcGUuaAorKysgYi9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzeW5hZXNjb3BlLmgKQEAgLTIyLDcgKzIyLDcgQEAKICNpZm5kZWYgX19HU1RfU1lOQUVfU0NPUEVfSF9fCiAjZGVmaW5lIF9fR1NUX1NZTkFFX1NDT1BFX0hfXwogCi0jaW5jbHVkZSAiZ3N0YXVkaW92aXN1YWxpemVyLmgiCisjaW5jbHVkZSAiZ3N0L3BidXRpbHMvZ3N0YXVkaW92aXN1YWxpemVyLmgiCiAjaW5jbHVkZSA8Z3N0L2ZmdC9nc3RmZnRzMTYuaD4KIAogR19CRUdJTl9ERUNMUwpkaWZmIC0tZ2l0IGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0d2F2ZXNjb3BlLmMgYi9nc3QvYXVkaW92aXN1YWxpemVycy9nc3R3YXZlc2NvcGUuYwppbmRleCBiODdkMDVjLi5hZDEyNWIwIDEwMDY0NAotLS0gYS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3R3YXZlc2NvcGUuYworKysgYi9nc3QvYXVkaW92aXN1YWxpemVycy9nc3R3YXZlc2NvcGUuYwpAQCAtMjgsNyArMjgsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggYXVkaW90ZXN0c3JjICEgYXVkaW9jb252ZXJ0ICEgd2F2ZXNjb3BlICEgeGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgYXVkaW90ZXN0c3JjICEgYXVkaW9jb252ZXJ0ICEgd2F2ZXNjb3BlICEgeGltYWdlc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTE3Niw4ICsxNzYsNyBAQAogewogICBHc3RXYXZlU2NvcGUgKnNjb3BlID0gR1NUX1dBVkVfU0NPUEUgKGJzY29wZSk7CiAKLSAgaWYgKHNjb3BlLT5mbHQpCi0gICAgZ19mcmVlIChzY29wZS0+Zmx0KTsKKyAgZ19mcmVlIChzY29wZS0+Zmx0KTsKIAogICBzY29wZS0+Zmx0ID0gZ19uZXcwIChnZG91YmxlLCA2ICogR1NUX0FVRElPX0lORk9fQ0hBTk5FTFMgKCZic2NvcGUtPmFpbmZvKSk7CiAKZGlmZiAtLWdpdCBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHdhdmVzY29wZS5oIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0d2F2ZXNjb3BlLmgKaW5kZXggMDg3ZjE3OS4uZjM2N2Y4OCAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0d2F2ZXNjb3BlLmgKKysrIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0d2F2ZXNjb3BlLmgKQEAgLTIyLDcgKzIyLDcgQEAKICNpZm5kZWYgX19HU1RfV0FWRV9TQ09QRV9IX18KICNkZWZpbmUgX19HU1RfV0FWRV9TQ09QRV9IX18KIAotI2luY2x1ZGUgImdzdGF1ZGlvdmlzdWFsaXplci5oIgorI2luY2x1ZGUgImdzdC9wYnV0aWxzL2dzdGF1ZGlvdmlzdWFsaXplci5oIgogCiBHX0JFR0lOX0RFQ0xTCiAjZGVmaW5lIEdTVF9UWVBFX1dBVkVfU0NPUEUgICAgICAgICAgICAoZ3N0X3dhdmVfc2NvcGVfZ2V0X3R5cGUoKSkKZGlmZiAtLWdpdCBhL2dzdC9hdXRvY29udmVydC9NYWtlZmlsZS5pbiBiL2dzdC9hdXRvY29udmVydC9NYWtlZmlsZS5pbgppbmRleCA0YzliNjFkLi5lYTJlN2ZhIDEwMDY0NAotLS0gYS9nc3QvYXV0b2NvbnZlcnQvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2F1dG9jb252ZXJ0L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2F1dG9jb252ZXJ0L2dzdGF1dG9jb252ZXJ0LmMgYi9nc3QvYXV0b2NvbnZlcnQvZ3N0YXV0b2NvbnZlcnQuYwppbmRleCAyMzBhMTVjLi5iNWExMDM1IDEwMDY0NAotLS0gYS9nc3QvYXV0b2NvbnZlcnQvZ3N0YXV0b2NvbnZlcnQuYworKysgYi9nc3QvYXV0b2NvbnZlcnQvZ3N0YXV0b2NvbnZlcnQuYwpAQCAtMTA2LDYgKzEwNiw4IEBACiAgICAgR3N0Q2FwcyAqIGZpbHRlciwgR3N0UGFkRGlyZWN0aW9uIGRpcik7CiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfYXV0b19jb252ZXJ0X3NpbmtfY2hhaW4gKEdzdFBhZCAqIHBhZCwKICAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7CitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfYXV0b19jb252ZXJ0X3NpbmtfY2hhaW5fbGlzdCAoR3N0UGFkICogcGFkLAorICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyTGlzdCAqIGxpc3QpOwogc3RhdGljIGdib29sZWFuIGdzdF9hdXRvX2NvbnZlcnRfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCiAgICAgR3N0RXZlbnQgKiBldmVudCk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2F1dG9fY29udmVydF9zaW5rX3F1ZXJ5IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKQEAgLTExOCw2ICsxMjAsOCBAQAogCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfYXV0b19jb252ZXJ0X2ludGVybmFsX3NpbmtfY2hhaW4gKEdzdFBhZCAqIHBhZCwKICAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7CitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfYXV0b19jb252ZXJ0X2ludGVybmFsX3NpbmtfY2hhaW5fbGlzdCAoR3N0UGFkICogcGFkLAorICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyTGlzdCAqIGxpc3QpOwogc3RhdGljIGdib29sZWFuIGdzdF9hdXRvX2NvbnZlcnRfaW50ZXJuYWxfc2lua19ldmVudCAoR3N0UGFkICogcGFkLAogICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2F1dG9fY29udmVydF9pbnRlcm5hbF9zaW5rX3F1ZXJ5IChHc3RQYWQgKiBwYWQsCkBAIC0xODgsNiArMTkyLDggQEAKIAogICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAoYXV0b2NvbnZlcnQtPnNpbmtwYWQsCiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2F1dG9fY29udmVydF9zaW5rX2NoYWluKSk7CisgIGdzdF9wYWRfc2V0X2NoYWluX2xpc3RfZnVuY3Rpb24gKGF1dG9jb252ZXJ0LT5zaW5rcGFkLAorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hdXRvX2NvbnZlcnRfc2lua19jaGFpbl9saXN0KSk7CiAgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChhdXRvY29udmVydC0+c2lua3BhZCwKICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYXV0b19jb252ZXJ0X3NpbmtfZXZlbnQpKTsKICAgZ3N0X3BhZF9zZXRfcXVlcnlfZnVuY3Rpb24gKGF1dG9jb252ZXJ0LT5zaW5rcGFkLApAQCAtNDc5LDYgKzQ4NSw4IEBACiAKICAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKGludGVybmFsX3NpbmtwYWQsCiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2F1dG9fY29udmVydF9pbnRlcm5hbF9zaW5rX2NoYWluKSk7CisgIGdzdF9wYWRfc2V0X2NoYWluX2xpc3RfZnVuY3Rpb24gKGludGVybmFsX3NpbmtwYWQsCisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2F1dG9fY29udmVydF9pbnRlcm5hbF9zaW5rX2NoYWluX2xpc3QpKTsKICAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKGludGVybmFsX3NpbmtwYWQsCiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2F1dG9fY29udmVydF9pbnRlcm5hbF9zaW5rX2V2ZW50KSk7CiAgIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uIChpbnRlcm5hbF9zaW5rcGFkLApAQCAtOTIxLDYgKzkyOSwyNyBAQAogICByZXR1cm4gcmV0OwogfQogCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X2F1dG9fY29udmVydF9zaW5rX2NoYWluX2xpc3QgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAorICAgIEdzdEJ1ZmZlckxpc3QgKiBsaXN0KQoreworICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX05PVF9ORUdPVElBVEVEOworICBHc3RBdXRvQ29udmVydCAqYXV0b2NvbnZlcnQgPSBHU1RfQVVUT19DT05WRVJUIChwYXJlbnQpOworCisgIGlmIChhdXRvY29udmVydC0+Y3VycmVudF9pbnRlcm5hbF9zcmNwYWQpIHsKKyAgICByZXQgPSBnc3RfcGFkX3B1c2hfbGlzdCAoYXV0b2NvbnZlcnQtPmN1cnJlbnRfaW50ZXJuYWxfc3JjcGFkLCBsaXN0KTsKKyAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKQorICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYXV0b2NvbnZlcnQsCisgICAgICAgICAgIkNoaWxkIGVsZW1lbnQgJSIgR1NUX1BUUl9GT1JNQVQgInJldHVybmVkIGZsb3cgJXMiLAorICAgICAgICAgIGF1dG9jb252ZXJ0LT5jdXJyZW50X3N1YmVsZW1lbnQsIGdzdF9mbG93X2dldF9uYW1lIChyZXQpKTsKKyAgfSBlbHNlIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChhdXRvY29udmVydCwgIkdvdCBidWZmZXIgd2l0aG91dCBhbiBuZWdvdGlhdGVkIGVsZW1lbnQsIgorICAgICAgICAiIHJldHVybmluZyBub3QtbmVnb3RpYXRlZCIpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKwogc3RhdGljIGdib29sZWFuCiBnc3RfYXV0b19jb252ZXJ0X3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQogewpAQCAtMTIxMiw2ICsxMjQxLDE3IEBACiAgIHJldHVybiBnc3RfcGFkX3B1c2ggKGF1dG9jb252ZXJ0LT5zcmNwYWQsIGJ1ZmZlcik7CiB9CiAKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitnc3RfYXV0b19jb252ZXJ0X2ludGVybmFsX3NpbmtfY2hhaW5fbGlzdCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCisgICAgR3N0QnVmZmVyTGlzdCAqIGxpc3QpCit7CisgIEdzdEF1dG9Db252ZXJ0ICphdXRvY29udmVydCA9CisgICAgICBHU1RfQVVUT19DT05WRVJUIChnX29iamVjdF9nZXRfcWRhdGEgKEdfT0JKRUNUIChwYWQpLAorICAgICAgICAgIHBhcmVudF9xdWFyaykpOworCisgIHJldHVybiBnc3RfcGFkX3B1c2hfbGlzdCAoYXV0b2NvbnZlcnQtPnNyY3BhZCwgbGlzdCk7Cit9CisKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2F1dG9fY29udmVydF9pbnRlcm5hbF9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKICAgICBHc3RFdmVudCAqIGV2ZW50KQpAQCAtMTI0Myw3ICsxMjgzLDMxIEBACiAgICAgICBHU1RfQVVUT19DT05WRVJUIChnX29iamVjdF9nZXRfcWRhdGEgKEdfT0JKRUNUIChwYWQpLAogICAgICAgICAgIHBhcmVudF9xdWFyaykpOwogCi0gIHJldHVybiBnc3RfcGFkX3BlZXJfcXVlcnkgKGF1dG9jb252ZXJ0LT5zcmNwYWQsIHF1ZXJ5KTsKKyAgaWYgKCFnc3RfcGFkX3BlZXJfcXVlcnkgKGF1dG9jb252ZXJ0LT5zcmNwYWQsIHF1ZXJ5KSkgeworICAgIHN3aXRjaCAoR1NUX1FVRVJZX1RZUEUgKHF1ZXJ5KSkgeworICAgICAgY2FzZSBHU1RfUVVFUllfQ0FQUzoKKyAgICAgIHsKKyAgICAgICAgR3N0Q2FwcyAqZmlsdGVyOworCisgICAgICAgIGdzdF9xdWVyeV9wYXJzZV9jYXBzIChxdWVyeSwgJmZpbHRlcik7CisgICAgICAgIGlmIChmaWx0ZXIpIHsKKyAgICAgICAgICBnc3RfcXVlcnlfc2V0X2NhcHNfcmVzdWx0IChxdWVyeSwgZmlsdGVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBmaWx0ZXIgPSBnc3RfY2Fwc19uZXdfYW55ICgpOworICAgICAgICAgIGdzdF9xdWVyeV9zZXRfY2Fwc19yZXN1bHQgKHF1ZXJ5LCBmaWx0ZXIpOworICAgICAgICAgIGdzdF9jYXBzX3VucmVmIChmaWx0ZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBUUlVFOworICAgICAgfQorICAgICAgY2FzZSBHU1RfUVVFUllfQUNDRVBUX0NBUFM6CisgICAgICAgIGdzdF9xdWVyeV9zZXRfYWNjZXB0X2NhcHNfcmVzdWx0IChxdWVyeSwgVFJVRSk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfQorCisgIHJldHVybiBUUlVFOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KZGlmZiAtLWdpdCBhL2dzdC9hdXRvY29udmVydC9nc3RhdXRvdmlkZW9jb252ZXJ0LmMgYi9nc3QvYXV0b2NvbnZlcnQvZ3N0YXV0b3ZpZGVvY29udmVydC5jCmluZGV4IDI3MWQ2ZjUuLjExZmM5NzQgMTAwNjQ0Ci0tLSBhL2dzdC9hdXRvY29udmVydC9nc3RhdXRvdmlkZW9jb252ZXJ0LmMKKysrIGIvZ3N0L2F1dG9jb252ZXJ0L2dzdGF1dG92aWRlb2NvbnZlcnQuYwpAQCAtMjAsMTEgKzIwLDExIEBACiAvKgogICogdGVzdCBhdXRvdmlkZW9jb252ZXJ0OgogICogaWYgcmdiMmJheWVyIGlzIHByZXNlbnQKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTIgISAidmlkZW8veC1yYXcsd2lkdGg9MTAwLGhlaWdodD0xMDAsZnJhbWVyYXRlPTEwLzEiICEgYXV0b3ZpZGVvY29udmVydCAhICJ2aWRlby94LXJhdy1iYXllcix3aWR0aD0xMDAsaGVpZ2h0PTEwMCxmb3JtYXQ9YmdncixmcmFtZXJhdGU9MTAvMSIgISBmYWtlc2luayAtdgorICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTIgISAidmlkZW8veC1yYXcsd2lkdGg9MTAwLGhlaWdodD0xMDAsZnJhbWVyYXRlPTEwLzEiICEgYXV0b3ZpZGVvY29udmVydCAhICJ2aWRlby94LWJheWVyLHdpZHRoPTEwMCxoZWlnaHQ9MTAwLGZvcm1hdD1iZ2dyLGZyYW1lcmF0ZT0xMC8xIiAhIGZha2VzaW5rIC12CiAgKiBpZiBiYXllcjJyZ2IgaXMgcHJlc2VudAotICogZ3N0LWxhdW5jaCB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MiAhICJ2aWRlby94LXJhdy1iYXllcix3aWR0aD0xMDAsaGVpZ2h0PTEwMCxmb3JtYXQ9YmdncixmcmFtZXJhdGU9MTAvMSIgISBhdXRvdmlkZW9jb252ZXJ0ICEgInZpZGVvL3gtcmF3LHdpZHRoPTEwMCxoZWlnaHQ9MTAwLGZyYW1lcmF0ZT0xMC8xIiAhIGZha2VzaW5rIC12CisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MiAhICJ2aWRlby94LWJheWVyLHdpZHRoPTEwMCxoZWlnaHQ9MTAwLGZvcm1hdD1iZ2dyLGZyYW1lcmF0ZT0xMC8xIiAhIGF1dG92aWRlb2NvbnZlcnQgISAidmlkZW8veC1yYXcsd2lkdGg9MTAwLGhlaWdodD0xMDAsZnJhbWVyYXRlPTEwLzEiICEgZmFrZXNpbmsgLXYKICAqIHRlc3Qgd2l0aCB2aWRlb2NvbnZlcnQKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTIgISAidmlkZW8veC1yYXcsZm9ybWF0PVJHQngsd2lkdGg9MTAwLGhlaWdodD0xMDAsZnJhbWVyYXRlPTEwLzEiICEgYXV0b3ZpZGVvY29udmVydCAhICJ2aWRlby94LXJhdyxmb3JtYXQ9UkdCMTYsd2lkdGg9MTAwLGhlaWdodD0xMDAsZnJhbWVyYXRlPTEwLzEiICEgZmFrZXNpbmsgLXYKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0yICEgInZpZGVvL3gtcmF3LGZvcm1hdD1SR0J4LHdpZHRoPTEwMCxoZWlnaHQ9MTAwLGZyYW1lcmF0ZT0xMC8xIiAhIGF1dG92aWRlb2NvbnZlcnQgISAidmlkZW8veC1yYXcsZm9ybWF0PVJHQjE2LHdpZHRoPTEwMCxoZWlnaHQ9MTAwLGZyYW1lcmF0ZT0xMC8xIiAhIGZha2VzaW5rIC12CiAgKi8KICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjaW5jbHVkZSAiY29uZmlnLmgiCmRpZmYgLS1naXQgYS9nc3QvYmF5ZXIvTWFrZWZpbGUuaW4gYi9nc3QvYmF5ZXIvTWFrZWZpbGUuaW4KaW5kZXggMDY0MThkMS4uOTdkNTJjNyAxMDA2NDQKLS0tIGEvZ3N0L2JheWVyL01ha2VmaWxlLmluCisrKyBiL2dzdC9iYXllci9NYWtlZmlsZS5pbgpAQCAtMTM3LDE2ICsxMzcsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI5OCw2ICsyOTcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMzNSw2ICszMzYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIAogIyBvcmMtZ2VuZXJhdGVkIGNvZGUgY3JlYXRlcyB3YXJuaW5ncwpAQCAtMzQ1LDcgKzM0OCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM2NCw4ICszNjYsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzgyLDE2ICszODUsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQ0Miw2ICs0NDgsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01NDMsNiArNTUxLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU1Niw4ICs1NjUsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NzMsNiArNTgwLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYzMCwxNiArNjM5LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjkxLDYgKzcwMiw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC03MDEsNiArNzEzLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzEwLDYgKzcyMyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03NDcsNyArNzYyLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvY2FtZXJhYmluMi9NYWtlZmlsZS5pbiBiL2dzdC9jYW1lcmFiaW4yL01ha2VmaWxlLmluCmluZGV4IDg5ODE0YjcuLjNjYjAzNGQgMTAwNjQ0Ci0tLSBhL2dzdC9jYW1lcmFiaW4yL01ha2VmaWxlLmluCisrKyBiL2dzdC9jYW1lcmFiaW4yL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI4Miw2ICsyODEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxOSw2ICszMjAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNyw3ICszMzAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDYsOCArMzQ4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2NCwxNiArMzY3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5OSw2ICs0MDMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjQsNiArNDMwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI1LDYgKzUzMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzgsOCArNTQ3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU1LDYgKzU2Miw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTIsMTYgKzYyMSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3Myw2ICs2ODQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgzLDYgKzY5NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5Miw2ICs3MDUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI5LDcgKzc0NCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2NhbWVyYWJpbjIvZ3N0Y2FtZXJhYmluMi5jIGIvZ3N0L2NhbWVyYWJpbjIvZ3N0Y2FtZXJhYmluMi5jCmluZGV4IDc0NTg2NzUuLmQwODc2ZDUgMTAwNjQ0Ci0tLSBhL2dzdC9jYW1lcmFiaW4yL2dzdGNhbWVyYWJpbjIuYworKysgYi9nc3QvY2FtZXJhYmluMi9nc3RjYW1lcmFiaW4yLmMKQEAgLTEyMSwxMSArMTIxLDExIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiA8cGFyYT4KLSAqIFVuZm9ydHVuYXRlbHksIGNhbWVyYWJpbiBjYW4ndCBiZSByZWFsbHkgdXNlZCBmcm9tIGdzdC1sYXVuY2gsIGFzIHlvdSBuZWVkCisgKiBVbmZvcnR1bmF0ZWx5LCBjYW1lcmFiaW4gY2FuJ3QgYmUgcmVhbGx5IHVzZWQgZnJvbSBnc3QtbGF1bmNoLTEuMCwgYXMgeW91IG5lZWQKICAqIHRvIHNlbmQgc2lnbmFscyB0byBjb250cm9sIGl0LiBUaGUgZm9sbG93aW5nIHBpcGVsaW5lIG1pZ2h0IGJlIGFibGUKICAqIHRvIHNob3cgdGhlIHZpZXdmaW5kZXIgdXNpbmcgYWxsIHRoZSBkZWZhdWx0IGVsZW1lbnRzLgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgLW0gY2FtZXJhYmluCisgKiBnc3QtbGF1bmNoLTEuMCAtdiAtbSBjYW1lcmFiaW4KICAqIF18CiAgKiA8L3BhcmE+CiAgKiA8L3JlZnNlY3QyPgpkaWZmIC0tZ2l0IGEvZ3N0L2NhbWVyYWJpbjIvZ3N0dmlld2ZpbmRlcmJpbi5jIGIvZ3N0L2NhbWVyYWJpbjIvZ3N0dmlld2ZpbmRlcmJpbi5jCmluZGV4IDk3MzIzNDAuLjNhZTZjMzEgMTAwNjQ0Ci0tLSBhL2dzdC9jYW1lcmFiaW4yL2dzdHZpZXdmaW5kZXJiaW4uYworKysgYi9nc3QvY2FtZXJhYmluMi9nc3R2aWV3ZmluZGVyYmluLmMKQEAgLTI0LDcgKzI0LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhIHZpZXdmaW5kZXJiaW4KKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHZpZXdmaW5kZXJiaW4KICAqIF18CiAgKiBGZWVkcyB0aGUgdmlld2ZpbmRlcmJpbiB3aXRoIHZpZGVvIHRlc3QgZGF0YS4KICAqIDwvcmVmc2VjdDI+CmRpZmYgLS1naXQgYS9nc3QvY2R4YXBhcnNlL01ha2VmaWxlLmluIGIvZ3N0L2NkeGFwYXJzZS9NYWtlZmlsZS5pbgppbmRleCA3Yjc3ODI3Li5jNDNlYzhhIDEwMDY0NAotLS0gYS9nc3QvY2R4YXBhcnNlL01ha2VmaWxlLmluCisrKyBiL2dzdC9jZHhhcGFyc2UvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvY29sb3JlZmZlY3RzL01ha2VmaWxlLmluIGIvZ3N0L2NvbG9yZWZmZWN0cy9NYWtlZmlsZS5pbgppbmRleCAxYzU0MzJmLi5mMDQ5ZDgwIDEwMDY0NAotLS0gYS9nc3QvY29sb3JlZmZlY3RzL01ha2VmaWxlLmluCisrKyBiL2dzdC9jb2xvcmVmZmVjdHMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvY29sb3JlZmZlY3RzL2dzdGNocm9tYWhvbGQuYyBiL2dzdC9jb2xvcmVmZmVjdHMvZ3N0Y2hyb21haG9sZC5jCmluZGV4IGZhNTcwOWQuLjA5NzMxMmEgMTAwNjQ0Ci0tLSBhL2dzdC9jb2xvcmVmZmVjdHMvZ3N0Y2hyb21haG9sZC5jCisrKyBiL2dzdC9jb2xvcmVmZmVjdHMvZ3N0Y2hyb21haG9sZC5jCkBAIC0yOSw3ICsyOSw3IEBACiAgKgogICogU2FtcGxlIHBpcGVsaW5lOgogICogfFsKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjIHBhdHRlcm49c21wdGU3NSAhIFwKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyBwYXR0ZXJuPXNtcHRlNzUgISBcCiAgKiAgIGNocm9tYWhvbGQgdGFyZ2V0LXI9MCB0YXJnZXQtZz0wIHRhcmdldC1iPTI1NSAhIFwKICAqICAgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luayAgICAgXAogICogXXwgVGhpcyBwaXBlbGluZSBvbmx5IGtlZXBzIHRoZSByZWQgY29sb3IuCmRpZmYgLS1naXQgYS9nc3QvY29sb3JlZmZlY3RzL2dzdGNvbG9yZWZmZWN0cy5jIGIvZ3N0L2NvbG9yZWZmZWN0cy9nc3Rjb2xvcmVmZmVjdHMuYwppbmRleCAzMzU1ODhkLi5hNjJhNDVkIDEwMDY0NAotLS0gYS9nc3QvY29sb3JlZmZlY3RzL2dzdGNvbG9yZWZmZWN0cy5jCisrKyBiL2dzdC9jb2xvcmVmZmVjdHMvZ3N0Y29sb3JlZmZlY3RzLmMKQEAgLTI1LDcgKzI1LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhIGNvbG9yZWZmZWN0cyBwcmVzZXQ9aGVhdCAhIHZpZGVvY29udmVydCAhCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBjb2xvcmVmZmVjdHMgcHJlc2V0PWhlYXQgISB2aWRlb2NvbnZlcnQgIQogICogICAgIGF1dG92aWRlb3NpbmsKICAqIF18IFRoaXMgcGlwZWxpbmUgc2hvd3MgdGhlIGVmZmVjdCBvZiBjb2xvcmVmZmVjdHMgb24gYSB0ZXN0IHN0cmVhbS4KICAqIDwvcmVmc2VjdDI+CmRpZmYgLS1naXQgYS9nc3QvY29sb3JlZmZlY3RzL2dzdGNvbG9yZWZmZWN0cy5oIGIvZ3N0L2NvbG9yZWZmZWN0cy9nc3Rjb2xvcmVmZmVjdHMuaAppbmRleCAzMmYyMjMwLi41MGM5YWEwIDEwMDY0NAotLS0gYS9nc3QvY29sb3JlZmZlY3RzL2dzdGNvbG9yZWZmZWN0cy5oCisrKyBiL2dzdC9jb2xvcmVmZmVjdHMvZ3N0Y29sb3JlZmZlY3RzLmgKQEAgLTQ1LDcgKzQ1LDcgQEAKICAqIEBHU1RfQ0xVVF9QUkVTRVRfU0VQSUE6IFNlcGlhIHRvbmluZyBmaWx0ZXIKICAqIEBHU1RfQ0xVVF9QUkVTRVRfWFJBWTogSW52ZXJ0IGNvbG9ycyBhbmQgc2xpZ2h0bHkgc2hhZGUgdG8gY3lhbgogICogQEdTVF9DTFVUX1BSRVNFVF9YUFJPOiBDcm9zcyBQcm9jZXNzaW5nIGZpbHRlcgotICogQEdTVF9DTFVUX1BSRVNFVF9ZRUxMT1dCTFVFOiBWaXN1YWwgbWFnbmlmaWVyIGhpZ2gtY29udHJhc3QgY29sb3IgZmlsdGVyLiBTaW5jZTogMC4xMC4yNAorICogQEdTVF9DTFVUX1BSRVNFVF9ZRUxMT1dCTFVFOiBWaXN1YWwgbWFnbmlmaWVyIGhpZ2gtY29udHJhc3QgY29sb3IgZmlsdGVyCiAgKgogICogVGhlIGxvb2t1cCB0YWJsZSB0byB1c2UgdG8gY29udmVydCBpbnB1dCBjb2xvcnMKICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L2NvbXBvc2l0b3IvTWFrZWZpbGUuaW4gYi9nc3QvY29tcG9zaXRvci9NYWtlZmlsZS5pbgppbmRleCA1ZDM4NjhkLi4yODZmYmFkIDEwMDY0NAotLS0gYS9nc3QvY29tcG9zaXRvci9NYWtlZmlsZS5pbgorKysgYi9nc3QvY29tcG9zaXRvci9NYWtlZmlsZS5pbgpAQCAtMTM4LDE2ICsxMzgsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0zMDUsNiArMzA0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zNDIsNiArMzQzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zNTAsNyArMzUzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzY5LDggKzM3MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zODcsMTYgKzM5MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MjIsNiArNDI2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDQ3LDYgKzQ1Myw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTU0OCw2ICs1NTYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTYxLDggKzU3MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU3OCw2ICs1ODUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjM1LDE2ICs2NDQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02OTYsNiArNzA3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTcwNiw2ICs3MTgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MTUsNiArNzI4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc1Miw3ICs3NjcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9jb21wb3NpdG9yL2NvbXBvc2l0b3IuYyBiL2dzdC9jb21wb3NpdG9yL2NvbXBvc2l0b3IuYwppbmRleCBkMDE1ZDg1Li5jNWIxYTlhIDEwMDY0NAotLS0gYS9nc3QvY29tcG9zaXRvci9jb21wb3NpdG9yLmMKKysrIGIvZ3N0L2NvbXBvc2l0b3IvY29tcG9zaXRvci5jCkBAIC0yMTYsOSArMjE2LDkgQEAKIAogc3RhdGljIHZvaWQKIF9taXhlcl9wYWRfZ2V0X291dHB1dF9zaXplIChHc3RDb21wb3NpdG9yICogY29tcCwKLSAgICBHc3RDb21wb3NpdG9yUGFkICogY29tcF9wYWQsIGdpbnQgKiB3aWR0aCwgZ2ludCAqIGhlaWdodCkKKyAgICBHc3RDb21wb3NpdG9yUGFkICogY29tcF9wYWQsIGdpbnQgb3V0X3Bhcl9uLCBnaW50IG91dF9wYXJfZCwgZ2ludCAqIHdpZHRoLAorICAgIGdpbnQgKiBoZWlnaHQpCiB7Ci0gIEdzdFZpZGVvQWdncmVnYXRvciAqdmFnZyA9IEdTVF9WSURFT19BR0dSRUdBVE9SIChjb21wKTsKICAgR3N0VmlkZW9BZ2dyZWdhdG9yUGFkICp2YWdnX3BhZCA9IEdTVF9WSURFT19BR0dSRUdBVE9SX1BBRCAoY29tcF9wYWQpOwogICBnaW50IHBhZF93aWR0aCwgcGFkX2hlaWdodDsKICAgZ3VpbnQgZGFyX24sIGRhcl9kOwpAQCAtMjQxLDEzICsyNDEsMTAgQEAKIAogICBnc3RfdmlkZW9fY2FsY3VsYXRlX2Rpc3BsYXlfcmF0aW8gKCZkYXJfbiwgJmRhcl9kLCBwYWRfd2lkdGgsIHBhZF9oZWlnaHQsCiAgICAgICBHU1RfVklERU9fSU5GT19QQVJfTiAoJnZhZ2dfcGFkLT5pbmZvKSwKLSAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZ19wYWQtPmluZm8pLAotICAgICAgR1NUX1ZJREVPX0lORk9fUEFSX04gKCZ2YWdnLT5pbmZvKSwgR1NUX1ZJREVPX0lORk9fUEFSX0QgKCZ2YWdnLT5pbmZvKQotICAgICAgKTsKKyAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZ19wYWQtPmluZm8pLCBvdXRfcGFyX24sIG91dF9wYXJfZCk7CiAgIEdTVF9MT0dfT0JKRUNUIChjb21wX3BhZCwgInNjYWxpbmcgJXV4JXUgYnkgJXUvJXUgKCV1LyV1IC8gJXUvJXUpIiwgcGFkX3dpZHRoLAogICAgICAgcGFkX2hlaWdodCwgZGFyX24sIGRhcl9kLCBHU1RfVklERU9fSU5GT19QQVJfTiAoJnZhZ2dfcGFkLT5pbmZvKSwKLSAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZ19wYWQtPmluZm8pLAotICAgICAgR1NUX1ZJREVPX0lORk9fUEFSX04gKCZ2YWdnLT5pbmZvKSwgR1NUX1ZJREVPX0lORk9fUEFSX0QgKCZ2YWdnLT5pbmZvKSk7CisgICAgICBHU1RfVklERU9fSU5GT19QQVJfRCAoJnZhZ2dfcGFkLT5pbmZvKSwgb3V0X3Bhcl9uLCBvdXRfcGFyX2QpOwogCiAgIGlmIChwYWRfaGVpZ2h0ICUgZGFyX24gPT0gMCkgewogICAgIHBhZF93aWR0aCA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKHBhZF9oZWlnaHQsIGRhcl9uLCBkYXJfZCk7CkBAIC0yOTIsNyArMjg5LDggQEAKICAgICAgIGdzdF92aWRlb19jb2xvcmltZXRyeV90b19zdHJpbmcgKCYod2FudGVkX2luZm8tPmNvbG9yaW1ldHJ5KSk7CiAgIGJlc3RfY2hyb21hID0gZ3N0X3ZpZGVvX2Nocm9tYV90b19zdHJpbmcgKHdhbnRlZF9pbmZvLT5jaHJvbWFfc2l0ZSk7CiAKLSAgX21peGVyX3BhZF9nZXRfb3V0cHV0X3NpemUgKGNvbXAsIGNwYWQsICZ3aWR0aCwgJmhlaWdodCk7CisgIF9taXhlcl9wYWRfZ2V0X291dHB1dF9zaXplIChjb21wLCBjcGFkLCBHU1RfVklERU9fSU5GT19QQVJfTiAoJnZhZ2ctPmluZm8pLAorICAgICAgR1NUX1ZJREVPX0lORk9fUEFSX0QgKCZ2YWdnLT5pbmZvKSwgJndpZHRoLCAmaGVpZ2h0KTsKIAogICBpZiAoR1NUX1ZJREVPX0lORk9fRk9STUFUICh3YW50ZWRfaW5mbykgIT0KICAgICAgIEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoY3VycmVudF9pbmZvKQpAQCAtMzEwLDggKzMwOCw4IEBACiAgICAgICAgIHdpZHRoLCBoZWlnaHQpOwogICAgIHRtcF9pbmZvLmNocm9tYV9zaXRlID0gd2FudGVkX2luZm8tPmNocm9tYV9zaXRlOwogICAgIHRtcF9pbmZvLmNvbG9yaW1ldHJ5ID0gd2FudGVkX2luZm8tPmNvbG9yaW1ldHJ5OwotICAgIHRtcF9pbmZvLnBhcl9uID0gdmFnZy0+aW5mby5wYXJfbjsKLSAgICB0bXBfaW5mby5wYXJfZCA9IHZhZ2ctPmluZm8ucGFyX2Q7CisgICAgdG1wX2luZm8ucGFyX24gPSB3YW50ZWRfaW5mby0+cGFyX247CisgICAgdG1wX2luZm8ucGFyX2QgPSB3YW50ZWRfaW5mby0+cGFyX2Q7CiAgICAgdG1wX2luZm8uZnBzX24gPSBjdXJyZW50X2luZm8tPmZwc19uOwogICAgIHRtcF9pbmZvLmZwc19kID0gY3VycmVudF9pbmZvLT5mcHNfZDsKICAgICB0bXBfaW5mby5mbGFncyA9IGN1cnJlbnRfaW5mby0+ZmxhZ3M7CkBAIC00MDMsNyArNDAxLDggQEAKICAgICogICAgIHdpZHRoL2hlaWdodC4gU2VlIC0+c2V0X2luZm8oKQogICAgKiAqLwogCi0gIF9taXhlcl9wYWRfZ2V0X291dHB1dF9zaXplIChjb21wLCBjcGFkLCAmd2lkdGgsICZoZWlnaHQpOworICBfbWl4ZXJfcGFkX2dldF9vdXRwdXRfc2l6ZSAoY29tcCwgY3BhZCwgR1NUX1ZJREVPX0lORk9fUEFSX04gKCZ2YWdnLT5pbmZvKSwKKyAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZy0+aW5mbyksICZ3aWR0aCwgJmhlaWdodCk7CiAKICAgLyogVGhlIG9ubHkgdGhpbmcgdGhhdCBjYW4gY2hhbmdlIGhlcmUgaXMgdGhlIHdpZHRoCiAgICAqIGFuZCBoZWlnaHQsIG90aGVyd2lzZSBzZXRfaW5mbyB3b3VsZCd2ZSBiZWVuIGNhbGxlZCAqLwpAQCAtNDk4LDcgKzQ5Nyw4IEBACiAgICAgR3N0Q29tcG9zaXRvclBhZCAqY3BhZDIgPSBHU1RfQ09NUE9TSVRPUl9QQUQgKHBhZDIpOwogICAgIGdpbnQgcGFkMl93aWR0aCwgcGFkMl9oZWlnaHQ7CiAKLSAgICBfbWl4ZXJfcGFkX2dldF9vdXRwdXRfc2l6ZSAoY29tcCwgY3BhZDIsICZwYWQyX3dpZHRoLCAmcGFkMl9oZWlnaHQpOworICAgIF9taXhlcl9wYWRfZ2V0X291dHB1dF9zaXplIChjb21wLCBjcGFkMiwgR1NUX1ZJREVPX0lORk9fUEFSX04gKCZ2YWdnLT5pbmZvKSwKKyAgICAgICAgR1NUX1ZJREVPX0lORk9fUEFSX0QgKCZ2YWdnLT5pbmZvKSwgJnBhZDJfd2lkdGgsICZwYWQyX2hlaWdodCk7CiAKICAgICAvKiBXZSBkb24ndCBuZWVkIHRvIGNsYW1wIHRoZSBjb29yZHMgb2YgdGhlIHNlY29uZCByZWN0YW5nbGUgKi8KICAgICBmcmFtZTJfcmVjdC54ID0gY3BhZDItPnhwb3M7CkBAIC04ODMsMTcgKzg4MywyNiBAQAogfQogCiBzdGF0aWMgR3N0Q2FwcyAqCi1fdXBkYXRlX2NhcHMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2csIEdzdENhcHMgKiBjYXBzKQorX2ZpeGF0ZV9jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnLCBHc3RDYXBzICogY2FwcykKIHsKICAgR0xpc3QgKmw7CiAgIGdpbnQgYmVzdF93aWR0aCA9IC0xLCBiZXN0X2hlaWdodCA9IC0xOwotICBHc3RWaWRlb0luZm8gaW5mbzsKKyAgZ2ludCBiZXN0X2Zwc19uID0gLTEsIGJlc3RfZnBzX2QgPSAtMTsKKyAgZ2ludCBwYXJfbiwgcGFyX2Q7CisgIGdkb3VibGUgYmVzdF9mcHMgPSAwLjsKICAgR3N0Q2FwcyAqcmV0ID0gTlVMTDsKKyAgR3N0U3RydWN0dXJlICpzOwogCi0gIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluZm8sIGNhcHMpOworICByZXQgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChjYXBzKTsKIAotICAvKiBGSVhNRTogdGhpcyBkb2Vzbid0IHdvcmsgZm9yIG5vbiAxLzEgb3V0cHV0IHBhcidzIGFzIHdlIGRvbid0IGhhdmUgdGhhdAotICAgKiBpbmZvcm1hdGlvbiBhdmFpbGFibGUgYXQgdGhpcyB0aW1lICovCisgIC8qIHdlIG5lZWQgdGhpcyB0byBjYWxjdWxhdGUgaG93IGxhcmdlIHRvIG1ha2UgdGhlIG91dHB1dCBmcmFtZSAqLworICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAocmV0LCAwKTsKKyAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkIChzLCAicGl4ZWwtYXNwZWN0LXJhdGlvIikpIHsKKyAgICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ZyYWN0aW9uIChzLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgMSwgMSk7CisgICAgZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24gKHMsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCAmcGFyX24sICZwYXJfZCk7CisgIH0gZWxzZSB7CisgICAgcGFyX24gPSBwYXJfZCA9IDE7CisgIH0KIAogICBHU1RfT0JKRUNUX0xPQ0sgKHZhZ2cpOwogICBmb3IgKGwgPSBHU1RfRUxFTUVOVCAodmFnZyktPnNpbmtwYWRzOyBsOyBsID0gbC0+bmV4dCkgewpAQCAtOTAxLDkgKzkxMCwxMyBAQAogICAgIEdzdENvbXBvc2l0b3JQYWQgKmNvbXBvc2l0b3JfcGFkID0gR1NUX0NPTVBPU0lUT1JfUEFEICh2YWdncGFkKTsKICAgICBnaW50IHRoaXNfd2lkdGgsIHRoaXNfaGVpZ2h0OwogICAgIGdpbnQgd2lkdGgsIGhlaWdodDsKKyAgICBnaW50IGZwc19uLCBmcHNfZDsKKyAgICBnZG91YmxlIGN1cl9mcHM7CiAKLSAgICBfbWl4ZXJfcGFkX2dldF9vdXRwdXRfc2l6ZSAoR1NUX0NPTVBPU0lUT1IgKHZhZ2cpLCBjb21wb3NpdG9yX3BhZCwgJndpZHRoLAotICAgICAgICAmaGVpZ2h0KTsKKyAgICBmcHNfbiA9IEdTVF9WSURFT19JTkZPX0ZQU19OICgmdmFnZ3BhZC0+aW5mbyk7CisgICAgZnBzX2QgPSBHU1RfVklERU9fSU5GT19GUFNfRCAoJnZhZ2dwYWQtPmluZm8pOworICAgIF9taXhlcl9wYWRfZ2V0X291dHB1dF9zaXplIChHU1RfQ09NUE9TSVRPUiAodmFnZyksIGNvbXBvc2l0b3JfcGFkLCBwYXJfbiwKKyAgICAgICAgcGFyX2QsICZ3aWR0aCwgJmhlaWdodCk7CiAKICAgICBpZiAod2lkdGggPT0gMCB8fCBoZWlnaHQgPT0gMCkKICAgICAgIGNvbnRpbnVlOwpAQCAtOTE1LDE3ICs5MjgsNDAgQEAKICAgICAgIGJlc3Rfd2lkdGggPSB0aGlzX3dpZHRoOwogICAgIGlmIChiZXN0X2hlaWdodCA8IHRoaXNfaGVpZ2h0KQogICAgICAgYmVzdF9oZWlnaHQgPSB0aGlzX2hlaWdodDsKKworICAgIGlmIChmcHNfZCA9PSAwKQorICAgICAgY3VyX2ZwcyA9IDAuMDsKKyAgICBlbHNlCisgICAgICBnc3RfdXRpbF9mcmFjdGlvbl90b19kb3VibGUgKGZwc19uLCBmcHNfZCwgJmN1cl9mcHMpOworCisgICAgaWYgKGJlc3RfZnBzIDwgY3VyX2ZwcykgeworICAgICAgYmVzdF9mcHMgPSBjdXJfZnBzOworICAgICAgYmVzdF9mcHNfbiA9IGZwc19uOworICAgICAgYmVzdF9mcHNfZCA9IGZwc19kOworICAgIH0KICAgfQogICBHU1RfT0JKRUNUX1VOTE9DSyAodmFnZyk7CiAKLSAgaWYgKGJlc3Rfd2lkdGggPiAwICYmIGJlc3RfaGVpZ2h0ID4gMCkgewotICAgIGluZm8ud2lkdGggPSBiZXN0X3dpZHRoOwotICAgIGluZm8uaGVpZ2h0ID0gYmVzdF9oZWlnaHQ7Ci0gICAgaWYgKHNldF9mdW5jdGlvbnMgKEdTVF9DT01QT1NJVE9SICh2YWdnKSwgJmluZm8pKQotICAgICAgcmV0ID0gZ3N0X3ZpZGVvX2luZm9fdG9fY2FwcyAoJmluZm8pOworICBpZiAoYmVzdF9mcHNfbiA8PSAwIHx8IGJlc3RfZnBzX2QgPD0gMCB8fCBiZXN0X2ZwcyA9PSAwLjApIHsKKyAgICBiZXN0X2Zwc19uID0gMjU7CisgICAgYmVzdF9mcHNfZCA9IDE7CisgICAgYmVzdF9mcHMgPSAyNS4wOworICB9CiAKLSAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChyZXQsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCBHU1RfVFlQRV9GUkFDVElPTl9SQU5HRSwKLSAgICAgICAgMSwgR19NQVhJTlQsIEdfTUFYSU5ULCAxLCBOVUxMKTsKKyAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9pbnQgKHMsICJ3aWR0aCIsIGJlc3Rfd2lkdGgpOworICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ludCAocywgImhlaWdodCIsIGJlc3RfaGVpZ2h0KTsKKyAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9mcmFjdGlvbiAocywgImZyYW1lcmF0ZSIsIGJlc3RfZnBzX24sCisgICAgICBiZXN0X2Zwc19kKTsKKyAgcmV0ID0gZ3N0X2NhcHNfZml4YXRlIChyZXQpOworCisgIGlmIChiZXN0X3dpZHRoID4gMCAmJiBiZXN0X2hlaWdodCA+IDApIHsKKyAgICBHc3RWaWRlb0luZm8gdl9pbmZvOworCisgICAgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmdl9pbmZvLCByZXQpOworICAgIGlmICghc2V0X2Z1bmN0aW9ucyAoR1NUX0NPTVBPU0lUT1IgKHZhZ2cpLCAmdl9pbmZvKSkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAodmFnZywgIkZhaWxlZCB0byBzZXR1cCB2ZnVuY3MiKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgfQogCiAgIHJldHVybiByZXQ7CkBAIC0xMDU5LDcgKzEwOTUsNyBAQAogCiAgIGFnZ19jbGFzcy0+c2lua3BhZHNfdHlwZSA9IEdTVF9UWVBFX0NPTVBPU0lUT1JfUEFEOwogICBhZ2dfY2xhc3MtPnNpbmtfcXVlcnkgPSBfc2lua19xdWVyeTsKLSAgdmlkZW9hZ2dyZWdhdG9yX2NsYXNzLT51cGRhdGVfY2FwcyA9IF91cGRhdGVfY2FwczsKKyAgdmlkZW9hZ2dyZWdhdG9yX2NsYXNzLT5maXhhdGVfY2FwcyA9IF9maXhhdGVfY2FwczsKICAgdmlkZW9hZ2dyZWdhdG9yX2NsYXNzLT5hZ2dyZWdhdGVfZnJhbWVzID0gZ3N0X2NvbXBvc2l0b3JfYWdncmVnYXRlX2ZyYW1lczsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0JBQ0tHUk9VTkQsCmRpZmYgLS1naXQgYS9nc3QvZGF0YXVyaXNyYy9NYWtlZmlsZS5pbiBiL2dzdC9kYXRhdXJpc3JjL01ha2VmaWxlLmluCmluZGV4IGM4ODFkMjkuLjYwYzA5NDAgMTAwNjQ0Ci0tLSBhL2dzdC9kYXRhdXJpc3JjL01ha2VmaWxlLmluCisrKyBiL2dzdC9kYXRhdXJpc3JjL01ha2VmaWxlLmluCkBAIC0xMTUsMTYgKzExNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjcxLDYgKzI3MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzA4LDYgKzMwOSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE2LDcgKzMxOSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzNSw4ICszMzcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzUzLDE2ICszNTYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzg4LDYgKzM5Miw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxMyw2ICs0MTksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTQsNiArNTIyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyNyw4ICs1MzYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDQsNiArNTUxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwMSwxNiArNjEwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjYyLDYgKzY3Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzIsNiArNjg0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjgxLDYgKzY5NCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MTgsNyArNzMzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvZGF0YXVyaXNyYy9nc3RkYXRhdXJpc3JjLmMgYi9nc3QvZGF0YXVyaXNyYy9nc3RkYXRhdXJpc3JjLmMKaW5kZXggMWZkZTM2ZC4uZmUwMThiMCAxMDA2NDQKLS0tIGEvZ3N0L2RhdGF1cmlzcmMvZ3N0ZGF0YXVyaXNyYy5jCisrKyBiL2dzdC9kYXRhdXJpc3JjL2dzdGRhdGF1cmlzcmMuYwpAQCAtMjcsNyArMjcsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2gtMC4xMCAtdiBkYXRhdXJpc3JjIHVyaT0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQWZFbEVRVlE0amUyTXdRbkFJQXhGZ3ppQTRFbmN6SXNPNE1FUk9vL2d6WldjNHhkVGJlMVI2TEdSUjc0aGVZUzdpS0VsemZjTWlSbnQ0aGY4Z2s4RWF5QjZsdWVmdWUvSHpsSmZDQTUwWHNOallSeHByWm1lblhOSUtTR0VzQytRVXFLMWhoZ2o1MjFCemhuV1dpaWxVR3ZkRjVSUzRMMkhNUVpDQ0p5OHNITW0yVFlkSkFBQUFBQkpSVTVFcmtKZ2dnPT0iICEgcG5nZGVjICEgdmlkZW9jb252ZXJ0ICEgZnJlZXplICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgZGF0YXVyaXNyYyB1cmk9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFmRWxFUVZRNGplMk13UW5BSUF4Rmd6aUE0RW5jeklzTzRNRVJPby9nelpXYzR4ZFRiZTFSNkxHUlI3NGhlWVM3aUtFbHpmY01pUm50NGhmOGdrOEVheUI2bHVlZnVlL0h6bEpmQ0E1MFhzTmpZUnhwclptZW5YTklLU0dFc0MrUVVxSzFoaGdqNTIxQnpobldXaWlsVUd2ZEY1UlM0TDJITVFaQ0NKeThzSE1tMlRZZEpBQUFBQUJKUlU1RXJrSmdnZz09IiAhIHBuZ2RlYyAhIHZpZGVvY29udmVydCAhIGltYWdlZnJlZXplICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwgVGhpcyBwaXBlbGluZSBkaXNwbGF5cyBhIHNtYWxsIDE2eDE2IFBORyBpbWFnZSBmcm9tIHRoZSBkYXRhIFVSSS4KICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTE3Nyw5ICsxNzcsOCBAQAogICBHc3RDYXBzICpjYXBzOwogCiAgIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKLSAgaWYgKGdzdF9wYWRfaGFzX2N1cnJlbnRfY2FwcyAoR1NUX0JBU0VfU1JDX1BBRCAoYmFzZXNyYykpKQotICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9CQVNFX1NSQ19QQUQgKGJhc2VzcmMpKTsKLSAgZWxzZQorICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQkFTRV9TUkNfUEFEIChiYXNlc3JjKSk7CisgIGlmICghY2FwcykKICAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X2FueSAoKTsKICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7CiAKZGlmZiAtLWdpdCBhL2dzdC9kY2NwL01ha2VmaWxlLmluIGIvZ3N0L2RjY3AvTWFrZWZpbGUuaW4KaW5kZXggYWU5MGYxZC4uM2I3YjVmNyAxMDA2NDQKLS0tIGEvZ3N0L2RjY3AvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2RjY3AvTWFrZWZpbGUuaW4KQEAgLTExOCwxNiArMTE4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjgxLDYgKzI4MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE4LDYgKzMxOSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI2LDcgKzMyOSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0NSw4ICszNDcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYzLDE2ICszNjYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk4LDYgKzQwMiw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMyw2ICs0MjksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjQsNiArNTMyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNyw4ICs1NDYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTQsNiArNTYxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxMSwxNiArNjIwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcyLDYgKzY4Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODIsNiArNjk0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjkxLDYgKzcwNCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjgsNyArNzQzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvZGVidWd1dGlscy9NYWtlZmlsZS5hbSBiL2dzdC9kZWJ1Z3V0aWxzL01ha2VmaWxlLmFtCmluZGV4IGFmZjc4YTIuLjc4M2E5Y2UgMTAwNjQ0Ci0tLSBhL2dzdC9kZWJ1Z3V0aWxzL01ha2VmaWxlLmFtCisrKyBiL2dzdC9kZWJ1Z3V0aWxzL01ha2VmaWxlLmFtCkBAIC0xLDE3ICsxLDMgQEAKLWdsaWJfZ2VuX3ByZWZpeCA9IF9fZ3N0X2RlYnVndXRpbHMKLWdsaWJfZ2VuX2Jhc2VuYW1lID0gZGVidWd1dGlscwotCi1pbmNsdWRlICQodG9wX3NyY2RpcikvY29tbW9uL2dzdC1nbGliLWdlbi5tYWsKLQotYnVpbHRfc291cmNlcyA9IGRlYnVndXRpbHMtbWFyc2hhbC5jCi1idWlsdF9oZWFkZXJzID0gZGVidWd1dGlscy1tYXJzaGFsLmgKLQotQlVJTFRfU09VUkNFUyA9ICQoYnVpbHRfc291cmNlcykgJChidWlsdF9oZWFkZXJzKQotCi1DTEVBTkZJTEVTID0gJChCVUlMVF9TT1VSQ0VTKQotCi1FWFRSQV9ESVNUID0gZGVidWd1dGlscy1tYXJzaGFsLmxpc3QKLQogcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0ZGVidWd1dGlsc2JhZC5sYQogCiBsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX1NPVVJDRVMgPSBcCkBAIC0yNCw3ICsxMCw2IEBACiAJZ3N0d2F0Y2hkb2cuYyBcCiAJZ3N0ZXJyb3JpZ25vcmUuYwogCi1ub2Rpc3RfbGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9TT1VSQ0VTID0gJChCVUlMVF9TT1VSQ0VTKQogbGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9DRkxBR1MgPSAkKEdTVF9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKQogbGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9MSUJBREQgPSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCiAJLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgXApkaWZmIC0tZ2l0IGEvZ3N0L2RlYnVndXRpbHMvTWFrZWZpbGUuaW4gYi9nc3QvZGVidWd1dGlscy9NYWtlZmlsZS5pbgppbmRleCA0OGZhNWRlLi5lNDk2MzZlIDEwMDY0NAotLS0gYS9nc3QvZGVidWd1dGlscy9NYWtlZmlsZS5pbgorKysgYi9nc3QvZGVidWd1dGlscy9NYWtlZmlsZS5pbgpAQCAtMTQsMTQgKzE0LDYgQEAKIAogQFNFVF9NQUtFQAogCi0jIHRoZXNlIGFyZSB0aGUgdmFyaWFibGVzIHlvdXIgTWFrZWZpbGUuYW0gc2hvdWxkIHNldAotIyB0aGUgZXhhbXBsZSBpcyBiYXNlZCBvbiB0aGUgY29sb3JiYWxhbmNlIGludGVyZmFjZQotCi0jZ2xpYl9lbnVtX2hlYWRlcnM9JChjb2xvcmJhbGFuY2VfaGVhZGVycykKLSNnbGliX2VudW1fZGVmaW5lPUdTVF9DT0xPUl9CQUxBTkNFCi0jZ2xpYl9nZW5fcHJlZml4PWdzdF9jb2xvcl9iYWxhbmNlCi0jZ2xpYl9nZW5fYmFzZW5hbWU9Y29sb3JiYWxhbmNlCi0KIAogVlBBVEggPSBAc3JjZGlyQAogYW1fX2lzX2dudV9tYWtlID0geyBcCkBAIC0xMjQsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE4MywxMiArMTc0LDcgQEAKIAlsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhLWdzdGNvbXBhcmUubG8gXAogCWxpYmdzdGRlYnVndXRpbHNiYWRfbGEtZ3N0d2F0Y2hkb2cubG8gXAogCWxpYmdzdGRlYnVndXRpbHNiYWRfbGEtZ3N0ZXJyb3JpZ25vcmUubG8KLWFtX19vYmplY3RzXzEgPSBsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhLWRlYnVndXRpbHMtbWFyc2hhbC5sbwotYW1fX29iamVjdHNfMiA9Ci1hbV9fb2JqZWN0c18zID0gJChhbV9fb2JqZWN0c18xKSAkKGFtX19vYmplY3RzXzIpCi1ub2Rpc3RfbGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0c18zKQotbGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX09CSkVDVFMpIFwKLQkkKG5vZGlzdF9saWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX09CSkVDVFMpCitsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdGRlYnVndXRpbHNiYWRfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKIGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9sdF8wID0gLS1zaWxlbnQKQEAgLTIzMSw4ICsyMTcsNyBAQAogYW1fX3ZfQ0NMRF8gPSAkKGFtX192X0NDTERfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9DQ0xEXzAgPSBAZWNobyAiICBDQ0xEICAgICIgJEA7CiBhbV9fdl9DQ0xEXzEgPSAKLVNPVVJDRVMgPSAkKGxpYmdzdGRlYnVndXRpbHNiYWRfbGFfU09VUkNFUykgXAotCSQobm9kaXN0X2xpYmdzdGRlYnVndXRpbHNiYWRfbGFfU09VUkNFUykKK1NPVVJDRVMgPSAkKGxpYmdzdGRlYnVndXRpbHNiYWRfbGFfU09VUkNFUykKIERJU1RfU09VUkNFUyA9ICQobGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9TT1VSQ0VTKQogYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCiAgIGNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXApAQCAtMjU5LDggKzI0NCw3IEBACiAgIGRvbmUgfCAkKGFtX191bmlxdWlmeV9pbnB1dClgCiBFVEFHUyA9IGV0YWdzCiBDVEFHUyA9IGN0YWdzCi1hbV9fRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gXAotCSQodG9wX3NyY2RpcikvY29tbW9uL2dzdC1nbGliLWdlbi5tYWsgJCh0b3Bfc3JjZGlyKS9kZXBjb21wCithbV9fRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3Bfc3JjZGlyKS9kZXBjb21wCiBESVNURklMRVMgPSAkKERJU1RfQ09NTU9OKSAkKERJU1RfU09VUkNFUykgJChURVhJTkZPUykgJChFWFRSQV9ESVNUKQogQUNMT0NBTCA9IEBBQ0xPQ0FMQAogQUNMT0NBTF9BTUZMQUdTID0gQEFDTE9DQUxfQU1GTEFHU0AKQEAgLTI5Nyw2ICsyODEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMzNCw2ICszMjAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTM0Miw3ICszMzAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNjEsOCArMzQ4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM3OSwxNiArMzY3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQxNCw2ICs0MDMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MzksNiArNDMwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTQwLDYgKzUzMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NTMsOCArNTQ3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTcwLDYgKzU2Miw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MjcsMTYgKzYyMSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY4OCw2ICs2ODQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjk4LDYgKzY5NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcwNyw2ICs3MDUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzQ0LDcgKzc0NCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzg0LDE0ICs3ODMsNiBAQAogdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACi1nbGliX2dlbl9wcmVmaXggPSBfX2dzdF9kZWJ1Z3V0aWxzCi1nbGliX2dlbl9iYXNlbmFtZSA9IGRlYnVndXRpbHMKLWVudW1faGVhZGVycyA9ICQoZm9yZWFjaCBoLCQoZ2xpYl9lbnVtX2hlYWRlcnMpLFxuXCNpbmNsdWRlIFwiJChoKVwiKQotYnVpbHRfc291cmNlcyA9IGRlYnVndXRpbHMtbWFyc2hhbC5jCi1idWlsdF9oZWFkZXJzID0gZGVidWd1dGlscy1tYXJzaGFsLmgKLUJVSUxUX1NPVVJDRVMgPSAkKGJ1aWx0X3NvdXJjZXMpICQoYnVpbHRfaGVhZGVycykKLUNMRUFORklMRVMgPSAkKEJVSUxUX1NPVVJDRVMpCi1FWFRSQV9ESVNUID0gZGVidWd1dGlscy1tYXJzaGFsLmxpc3QKIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdGRlYnVndXRpbHNiYWQubGEKIGxpYmdzdGRlYnVndXRpbHNiYWRfbGFfU09VUkNFUyA9IFwKIAlnc3RkZWJ1Z3NweS5jIFwKQEAgLTgwMyw3ICs3OTQsNiBAQAogCWdzdHdhdGNoZG9nLmMgXAogCWdzdGVycm9yaWdub3JlLmMKIAotbm9kaXN0X2xpYmdzdGRlYnVndXRpbHNiYWRfbGFfU09VUkNFUyA9ICQoQlVJTFRfU09VUkNFUykKIGxpYmdzdGRlYnVndXRpbHNiYWRfbGFfQ0ZMQUdTID0gJChHU1RfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykKIGxpYmdzdGRlYnVndXRpbHNiYWRfbGFfTElCQUREID0gJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAogCS1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKQEAgLTgxOSwxMiArODA5LDExIEBACiAJZ3N0d2F0Y2hkb2cuaCBcCiAJZ3N0ZXJyb3JpZ25vcmUuaAogCi1hbGw6ICQoQlVJTFRfU09VUkNFUykKLQkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbGwtYW0KK2FsbDogYWxsLWFtCiAKIC5TVUZGSVhFUzoKIC5TVUZGSVhFUzogLmMgLmxvIC5vIC5vYmoKLSQoc3JjZGlyKS9NYWtlZmlsZS5pbjogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJCh0b3Bfc3JjZGlyKS9jb21tb24vZ3N0LWdsaWItZ2VuLm1hayAkKGFtX19jb25maWd1cmVfZGVwcykKKyQoc3JjZGlyKS9NYWtlZmlsZS5pbjogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKHNyY2RpcikvTWFrZWZpbGUuYW0gICQoYW1fX2NvbmZpZ3VyZV9kZXBzKQogCUBmb3IgZGVwIGluICQ/OyBkbyBcCiAJICBjYXNlICckKGFtX19jb25maWd1cmVfZGVwcyknIGluIFwKIAkgICAgKiQkZGVwKikgXApAQCAtODQ0LDcgKzgzMyw2IEBACiAJICAgIGVjaG8gJyBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQCAkKGFtX19kZXBmaWxlc19tYXliZSknOyBcCiAJICAgIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRAICQoYW1fX2RlcGZpbGVzX21heWJlKTs7IFwKIAllc2FjOwotJCh0b3Bfc3JjZGlyKS9jb21tb24vZ3N0LWdsaWItZ2VuLm1hayAkKGFtX19lbXB0eSk6CiAKICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzOiAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSAkKENPTkZJR19TVEFUVVNfREVQRU5ERU5DSUVTKQogCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaApAQCAtODk5LDcgKzg4Nyw2IEBACiBkaXN0Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi50YWIuYwogCi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1kZWJ1Z3V0aWxzLW1hcnNoYWwuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RkZWJ1Z3V0aWxzYmFkX2xhLWRlYnVndXRpbHNiYWQuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RkZWJ1Z3V0aWxzYmFkX2xhLWZwc2Rpc3BsYXlzaW5rLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1nc3RjaGVja3N1bXNpbmsuUGxvQGFtX19xdW90ZUAKQEAgLTk4OSwxMyArOTc2LDYgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGRlYnVndXRpbHNiYWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1nc3RlcnJvcmlnbm9yZS5sbyBgdGVzdCAtZiAnZ3N0ZXJyb3JpZ25vcmUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0ZXJyb3JpZ25vcmUuYwogCi1saWJnc3RkZWJ1Z3V0aWxzYmFkX2xhLWRlYnVndXRpbHMtbWFyc2hhbC5sbzogZGVidWd1dGlscy1tYXJzaGFsLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGRlYnVndXRpbHNiYWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGRlYnVndXRpbHNiYWRfbGEtZGVidWd1dGlscy1tYXJzaGFsLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RkZWJ1Z3V0aWxzYmFkX2xhLWRlYnVndXRpbHMtbWFyc2hhbC5UcG8gLWMgLW8gbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1kZWJ1Z3V0aWxzLW1hcnNoYWwubG8gYHRlc3QgLWYgJ2RlYnVndXRpbHMtbWFyc2hhbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BkZWJ1Z3V0aWxzLW1hcnNoYWwuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1kZWJ1Z3V0aWxzLW1hcnNoYWwuVHBvICQoREVQRElSKS9saWJnc3RkZWJ1Z3V0aWxzYmFkX2xhLWRlYnVndXRpbHMtbWFyc2hhbC5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdkZWJ1Z3V0aWxzLW1hcnNoYWwuYycgb2JqZWN0PSdsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhLWRlYnVndXRpbHMtbWFyc2hhbC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGRlYnVndXRpbHNiYWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhLWRlYnVndXRpbHMtbWFyc2hhbC5sbyBgdGVzdCAtZiAnZGVidWd1dGlscy1tYXJzaGFsLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGRlYnVndXRpbHMtbWFyc2hhbC5jCi0KIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KIApAQCAtMTA4NSwxNSArMTA2NSwxMyBAQAogCSAgZmk7IFwKIAlkb25lCiBjaGVjay1hbTogYWxsLWFtCi1jaGVjazogJChCVUlMVF9TT1VSQ0VTKQotCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGNoZWNrLWFtCitjaGVjazogY2hlY2stYW0KIGFsbC1hbTogTWFrZWZpbGUgJChMVExJQlJBUklFUykgJChIRUFERVJTKQogaW5zdGFsbGRpcnM6CiAJZm9yIGRpciBpbiAiJChERVNURElSKSQocGx1Z2luZGlyKSI7IGRvIFwKIAkgIHRlc3QgLXogIiQkZGlyIiB8fCAkKE1LRElSX1ApICIkJGRpciI7IFwKIAlkb25lCi1pbnN0YWxsOiAkKEJVSUxUX1NPVVJDRVMpCi0JJChNQUtFKSAkKEFNX01BS0VGTEFHUykgaW5zdGFsbC1hbQoraW5zdGFsbDogaW5zdGFsbC1hbQogaW5zdGFsbC1leGVjOiBpbnN0YWxsLWV4ZWMtYW0KIGluc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLWFtCiB1bmluc3RhbGw6IHVuaW5zdGFsbC1hbQpAQCAtMTExNSw3ICsxMDkzLDYgQEAKIG1vc3RseWNsZWFuLWdlbmVyaWM6CiAKIGNsZWFuLWdlbmVyaWM6Ci0JLXRlc3QgLXogIiQoQ0xFQU5GSUxFUykiIHx8IHJtIC1mICQoQ0xFQU5GSUxFUykKIAogZGlzdGNsZWFuLWdlbmVyaWM6CiAJLXRlc3QgLXogIiQoQ09ORklHX0NMRUFOX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fRklMRVMpCkBAIC0xMTI0LDcgKzExMDEsNiBAQAogbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljOgogCUBlY2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzIHRvIHVzZSIKIAlAZWNobyAiaXQgZGVsZXRlcyBmaWxlcyB0aGF0IG1heSByZXF1aXJlIHNwZWNpYWwgdG9vbHMgdG8gcmVidWlsZC4iCi0JLXRlc3QgLXogIiQoQlVJTFRfU09VUkNFUykiIHx8IHJtIC1mICQoQlVJTFRfU09VUkNFUykKIGNsZWFuOiBjbGVhbi1hbQogCiBjbGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBjbGVhbi1saWJ0b29sIGNsZWFuLXBsdWdpbkxUTElCUkFSSUVTIFwKQEAgLTExOTYsNyArMTE3Miw3IEBACiAKIHVuaW5zdGFsbC1hbTogdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCiAKLS5NQUtFOiBhbGwgY2hlY2sgaW5zdGFsbCBpbnN0YWxsLWFtIGluc3RhbGwtc3RyaXAKKy5NQUtFOiBpbnN0YWxsLWFtIGluc3RhbGwtc3RyaXAKIAogLlBIT05ZOiBDVEFHUyBHVEFHUyBUQUdTIGFsbCBhbGwtYW0gY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBcCiAJY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBjc2NvcGVsaXN0LWFtIGN0YWdzIFwKQEAgLTEyMTYsNDIgKzExOTIsNiBAQAogLlBSRUNJT1VTOiBNYWtlZmlsZQogCiAKLSMgdGhlc2UgYXJlIGFsbCB0aGUgcnVsZXMgZ2VuZXJhdGluZyB0aGUgcmVsZXZhbnQgZmlsZXMKLSQoZ2xpYl9nZW5fYmFzZW5hbWUpLW1hcnNoYWwuaDogJChnbGliX2dlbl9iYXNlbmFtZSktbWFyc2hhbC5saXN0Ci0JJChBTV9WX0dFTikkKEdMSUJfR0VOTUFSU0hBTCkgLS1oZWFkZXIgLS1wcmVmaXg9JChnbGliX2dlbl9wcmVmaXgpX21hcnNoYWwgJF4gPiAkKGdsaWJfZ2VuX2Jhc2VuYW1lKS1tYXJzaGFsLmgudG1wICYmIFwKLQltdiAkKGdsaWJfZ2VuX2Jhc2VuYW1lKS1tYXJzaGFsLmgudG1wICQoZ2xpYl9nZW5fYmFzZW5hbWUpLW1hcnNoYWwuaAotCi0kKGdsaWJfZ2VuX2Jhc2VuYW1lKS1tYXJzaGFsLmM6ICQoZ2xpYl9nZW5fYmFzZW5hbWUpLW1hcnNoYWwubGlzdAotCSQoQU1fVl9HRU4pZWNobyAiI2luY2x1ZGUgXCIkKGdsaWJfZ2VuX2Jhc2VuYW1lKS1tYXJzaGFsLmhcIiIgPj4gJChnbGliX2dlbl9iYXNlbmFtZSktbWFyc2hhbC5jLnRtcCAmJiBcCi0JJChHTElCX0dFTk1BUlNIQUwpIC0tYm9keSAtLXByZWZpeD0kKGdsaWJfZ2VuX3ByZWZpeClfbWFyc2hhbCAkXiA+PiAkKGdsaWJfZ2VuX2Jhc2VuYW1lKS1tYXJzaGFsLmMudG1wICYmIFwKLQltdiAkKGdsaWJfZ2VuX2Jhc2VuYW1lKS1tYXJzaGFsLmMudG1wICQoZ2xpYl9nZW5fYmFzZW5hbWUpLW1hcnNoYWwuYwotCi0kKGdsaWJfZ2VuX2Jhc2VuYW1lKS1lbnVtdHlwZXMuaDogJChnbGliX2VudW1faGVhZGVycykKLQkkKEFNX1ZfR0VOKSQoR0xJQl9NS0VOVU1TKSBcCi0JLS1maGVhZCAiI2lmbmRlZiBfXyQoZ2xpYl9lbnVtX2RlZmluZSlfRU5VTV9UWVBFU19IX19cbiNkZWZpbmUgX18kKGdsaWJfZW51bV9kZWZpbmUpX0VOVU1fVFlQRVNfSF9fXG5cbiNpbmNsdWRlIDxnbGliLW9iamVjdC5oPlxuXG5HX0JFR0lOX0RFQ0xTXG4iIFwKLQktLWZwcm9kICJcbi8qIGVudW1lcmF0aW9ucyBmcm9tIFwiQGZpbGVuYW1lQFwiICovXG4iIFwKLQktLXZoZWFkICJHVHlwZSBAZW51bV9uYW1lQF9nZXRfdHlwZSAodm9pZCk7XG4jZGVmaW5lIEdTVF9UWVBFX0BFTlVNU0hPUlRAIChAZW51bV9uYW1lQF9nZXRfdHlwZSgpKVxuIiAgICAgICAgIFwKLQktLWZ0YWlsICJHX0VORF9ERUNMU1xuXG4jZW5kaWYgLyogX18kKGdsaWJfZW51bV9kZWZpbmUpX0VOVU1fVFlQRVNfSF9fICovIiBcCi0JJF4gPiAkQAotCi0kKGdsaWJfZ2VuX2Jhc2VuYW1lKS1lbnVtdHlwZXMuYzogJChnbGliX2VudW1faGVhZGVycykKLQlAaWYgdGVzdCAieCQoZ2xpYl9lbnVtX2hlYWRlcnMpIiA9ICJ4IjsgdGhlbiBlY2hvICJFUlJPUjogZ2xpYl9lbnVtX2hlYWRlcnMgaXMgZW1wdHksIHBsZWFzZSBmaXggTWFrZWZpbGUiOyBleGl0IDE7IGZpCi0JJChBTV9WX0dFTikkKEdMSUJfTUtFTlVNUykgXAotCS0tZmhlYWQgIiNpbmNsdWRlIFwiJChnbGliX2dlbl9iYXNlbmFtZSktZW51bXR5cGVzLmhcIlxuJChlbnVtX2hlYWRlcnMpIiBcCi0JLS1mcHJvZCAiXG4vKiBlbnVtZXJhdGlvbnMgZnJvbSBcIkBmaWxlbmFtZUBcIiAqLyIgXAotCS0tdmhlYWQgIkdUeXBlXG5AZW51bV9uYW1lQF9nZXRfdHlwZSAodm9pZClcbntcbiAgc3RhdGljIHZvbGF0aWxlIGdzaXplIGdfZGVmaW5lX3R5cGVfaWRfX3ZvbGF0aWxlID0gMDtcbiAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmZ19kZWZpbmVfdHlwZV9pZF9fdm9sYXRpbGUpKSB7XG4gICAgc3RhdGljIGNvbnN0IEdAVHlwZUBWYWx1ZSB2YWx1ZXNbXSA9IHsiICAgICBcCi0JLS12cHJvZCAiICAgICAgeyBAVkFMVUVOQU1FQCwgXCJAVkFMVUVOQU1FQFwiLCBcIkB2YWx1ZW5pY2tAXCIgfSwiIFwKLQktLXZ0YWlsICIgICAgICB7IDAsIE5VTEwsIE5VTEwgfVxuICAgIH07XG4gICAgR1R5cGUgZ19kZWZpbmVfdHlwZV9pZCA9IGdfQHR5cGVAX3JlZ2lzdGVyX3N0YXRpYyAoXCJARW51bU5hbWVAXCIsIHZhbHVlcyk7XG4gICAgZ19vbmNlX2luaXRfbGVhdmUgKCZnX2RlZmluZV90eXBlX2lkX192b2xhdGlsZSwgZ19kZWZpbmVfdHlwZV9pZCk7XG4gIH1cbiAgcmV0dXJuIGdfZGVmaW5lX3R5cGVfaWRfX3ZvbGF0aWxlO1xufVxuIiBcCi0JJF4gPiAkQAotCi0jIGEgaGFjayBydWxlIHRvIG1ha2Ugc3VyZSAuUGxvIGZpbGVzIGV4aXN0IGJlY2F1c2UgdGhleSBnZXQgaW5jbHVkZSdkCi0jIGZyb20gTWFrZWZpbGUncwotLmRlcHMvJS1tYXJzaGFsLlBsbzoKLQlAdG91Y2ggJEAKLQotLmRlcHMvJS1lbnVtdHlwZXMuUGxvOgotCUB0b3VjaCAkQAotCiAjIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2UgdG8gbm90IGV4cG9ydCBhbGwgdmFyaWFibGVzLgogIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCiAuTk9FWFBPUlQ6CmRpZmYgLS1naXQgYS9nc3QvZGVidWd1dGlscy9kZWJ1Z3V0aWxzLW1hcnNoYWwubGlzdCBiL2dzdC9kZWJ1Z3V0aWxzL2RlYnVndXRpbHMtbWFyc2hhbC5saXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDczZmQzLi4wMDAwMDAwCi0tLSBhL2dzdC9kZWJ1Z3V0aWxzL2RlYnVndXRpbHMtbWFyc2hhbC5saXN0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1WT0lEOkRPVUJMRSxET1VCTEUsRE9VQkxFCi0KZGlmZiAtLWdpdCBhL2dzdC9kZWJ1Z3V0aWxzL2Zwc2Rpc3BsYXlzaW5rLmMgYi9nc3QvZGVidWd1dGlscy9mcHNkaXNwbGF5c2luay5jCmluZGV4IGRjZWY2NzkuLjkyYjMyMDEgMTAwNjQ0Ci0tLSBhL2dzdC9kZWJ1Z3V0aWxzL2Zwc2Rpc3BsYXlzaW5rLmMKKysrIGIvZ3N0L2RlYnVndXRpbHMvZnBzZGlzcGxheXNpbmsuYwpAQCAtMjUsMTAgKzI1LDEwIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjICEgZnBzZGlzcGxheXNpbmsKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjICEgZnBzZGlzcGxheXNpbmsgdGV4dC1vdmVybGF5PWZhbHNlCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249dmlkZW8uYXZpICEgZGVjb2RlYmluIG5hbWU9ZCAhIHF1ZXVlICEgZnBzZGlzcGxheXNpbmsgZC4gISBxdWV1ZSAhIGZha2VzaW5rIHN5bmM9dHJ1ZQotICogZ3N0LWxhdW5jaCBwbGF5YmluIHVyaT1maWxlOi8vL3BhdGgvdG8vdmlkZW8uYXZpIHZpZGVvLXNpbms9ImZwc2Rpc3BsYXlzaW5rIiBhdWRpby1zaW5rPWZha2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBmcHNkaXNwbGF5c2luaworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgZnBzZGlzcGxheXNpbmsgdGV4dC1vdmVybGF5PWZhbHNlCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPXZpZGVvLmF2aSAhIGRlY29kZWJpbiBuYW1lPWQgISBxdWV1ZSAhIGZwc2Rpc3BsYXlzaW5rIGQuICEgcXVldWUgISBmYWtlc2luayBzeW5jPXRydWUKKyAqIGdzdC1sYXVuY2gtMS4wIHBsYXliaW4gdXJpPWZpbGU6Ly8vcGF0aC90by92aWRlby5hdmkgdmlkZW8tc2luaz0iZnBzZGlzcGxheXNpbmsiIGF1ZGlvLXNpbms9ZmFrZXNpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjZW5kaWYKIAotI2luY2x1ZGUgImRlYnVndXRpbHMtbWFyc2hhbC5oIgogI2luY2x1ZGUgImZwc2Rpc3BsYXlzaW5rLmgiCiAKICNkZWZpbmUgREVGQVVMVF9TSUdOQUxfRlBTX01FQVNVUkVNRU5UUyBGQUxTRQpAQCAtMTk4LDEzICsxOTcsMTAgQEAKICAgICogQGF2Z2ZwczogVGhlIGF2ZXJhZ2UgZnBzCiAgICAqCiAgICAqIFNpZ25hbHMgdGhlIGFwcGxpY2F0aW9uIGFib3V0IHRoZSBtZWFzdXJlZCBmcHMKLSAgICoKLSAgICogU2luY2U6IDAuMTAuMjAKICAgICovCiAgIGZwc2Rpc3BsYXlzaW5rX3NpZ25hbHNbU0lHTkFMX0ZQU19NRUFTVVJFTUVOVFNdID0KICAgICAgIGdfc2lnbmFsX25ldyAoImZwcy1tZWFzdXJlbWVudHMiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAotICAgICAgR19TSUdOQUxfUlVOX0xBU1QsIDAsIE5VTEwsIE5VTEwsCi0gICAgICBfX2dzdF9kZWJ1Z3V0aWxzX21hcnNoYWxfVk9JRF9fRE9VQkxFX0RPVUJMRV9ET1VCTEUsCisgICAgICBHX1NJR05BTF9SVU5fTEFTVCwgMCwgTlVMTCwgTlVMTCwgTlVMTCwKICAgICAgIEdfVFlQRV9OT05FLCAzLCBHX1RZUEVfRE9VQkxFLCBHX1RZUEVfRE9VQkxFLCBHX1RZUEVfRE9VQkxFKTsKIAogICBnc3RlbGVtZW50X2tsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBmcHNfZGlzcGxheV9zaW5rX2NoYW5nZV9zdGF0ZTsKZGlmZiAtLWdpdCBhL2dzdC9kZWJ1Z3V0aWxzL2dzdGNob3BteWRhdGEuYyBiL2dzdC9kZWJ1Z3V0aWxzL2dzdGNob3BteWRhdGEuYwppbmRleCBlNzgwMGQ1Li5jZWZmN2U1IDEwMDY0NAotLS0gYS9nc3QvZGVidWd1dGlscy9nc3RjaG9wbXlkYXRhLmMKKysrIGIvZ3N0L2RlYnVndXRpbHMvZ3N0Y2hvcG15ZGF0YS5jCkBAIC0yNiw3ICsyNiw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBhdWRpb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MTAgISBnc3RjaG9wbXlkYXRhIG1pbi1zaXplPTEwMAorICogZ3N0LWxhdW5jaC0xLjAgLXYgYXVkaW90ZXN0c3JjIG51bS1idWZmZXJzPTEwICEgY2hvcG15ZGF0YSBtaW4tc2l6ZT0xMDAKICAqIG1heC1zaXplPTIwMCBzdGVwLXNpemU9MiAhIGZha2VzaW5rIC12CiAgKiBdfAogICogCmRpZmYgLS1naXQgYS9nc3QvZGVidWd1dGlscy9nc3RkZWJ1Z3NweS5jIGIvZ3N0L2RlYnVndXRpbHMvZ3N0ZGVidWdzcHkuYwppbmRleCBiNzQ2YjUxLi4xOWU3Y2YyIDEwMDY0NAotLS0gYS9nc3QvZGVidWd1dGlscy9nc3RkZWJ1Z3NweS5jCisrKyBiL2dzdC9kZWJ1Z3V0aWxzL2dzdGRlYnVnc3B5LmMKQEAgLTI5LDcgKzI5LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC1tIHZpZGVvdGVzdHNyYyAhIGRlYnVnc3B5ICEgZmFrZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC1tIHZpZGVvdGVzdHNyYyAhIGRlYnVnc3B5ICEgZmFrZXNpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvZGVidWd1dGlscy9nc3R3YXRjaGRvZy5jIGIvZ3N0L2RlYnVndXRpbHMvZ3N0d2F0Y2hkb2cuYwppbmRleCAzMjkyYjQzLi4wYTRjMTJlIDEwMDY0NAotLS0gYS9nc3QvZGVidWd1dGlscy9nc3R3YXRjaGRvZy5jCisrKyBiL2dzdC9kZWJ1Z3V0aWxzL2dzdHdhdGNoZG9nLmMKQEAgLTM1LDcgKzM1LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZha2VzcmMgISB3YXRjaGRvZyAhIGZha2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmYWtlc3JjICEgd2F0Y2hkb2cgISBmYWtlc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC9kdmJzdWJvdmVybGF5L01ha2VmaWxlLmluIGIvZ3N0L2R2YnN1Ym92ZXJsYXkvTWFrZWZpbGUuaW4KaW5kZXggZDUzMmM2My4uZjJmMGYyZSAxMDA2NDQKLS0tIGEvZ3N0L2R2YnN1Ym92ZXJsYXkvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2R2YnN1Ym92ZXJsYXkvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvZHZic3Vib3ZlcmxheS9kdmItc3ViLmMgYi9nc3QvZHZic3Vib3ZlcmxheS9kdmItc3ViLmMKaW5kZXggNjVhNDNhYi4uNzU5NjU2MyAxMDA2NDQKLS0tIGEvZ3N0L2R2YnN1Ym92ZXJsYXkvZHZiLXN1Yi5jCisrKyBiL2dzdC9kdmJzdWJvdmVybGF5L2R2Yi1zdWIuYwpAQCAtMjc3LDggKzI3Nyw3IEBACiAgICAgZHZiX3N1Yi0+cmVnaW9uX2xpc3QgPSByZWdpb24tPm5leHQ7CiAKICAgICBkZWxldGVfcmVnaW9uX2Rpc3BsYXlfbGlzdCAoZHZiX3N1YiwgcmVnaW9uKTsKLSAgICBpZiAocmVnaW9uLT5wYnVmKQotICAgICAgZ19mcmVlIChyZWdpb24tPnBidWYpOworICAgIGdfZnJlZSAocmVnaW9uLT5wYnVmKTsKIAogICAgIGdfc2xpY2VfZnJlZSAoRFZCU3ViUmVnaW9uLCByZWdpb24pOwogICB9CkBAIC00NzIsOCArNDcxLDcgQEAKICAgYnVmICs9IDI7CiAKICAgaWYgKHJlZ2lvbi0+d2lkdGggKiByZWdpb24tPmhlaWdodCAhPSByZWdpb24tPmJ1Zl9zaXplKSB7ICAgICAvKiBGSVhNRTogUmVhZCBjbG9zZXIgZnJvbSBzcGVjIHdoYXQgaGFwcGVucyB3aGVuIGRpbWVuc2lvbnMgY2hhbmdlICovCi0gICAgaWYgKHJlZ2lvbi0+cGJ1ZikKLSAgICAgIGdfZnJlZSAocmVnaW9uLT5wYnVmKTsKKyAgICBnX2ZyZWUgKHJlZ2lvbi0+cGJ1Zik7CiAKICAgICByZWdpb24tPmJ1Zl9zaXplID0gcmVnaW9uLT53aWR0aCAqIHJlZ2lvbi0+aGVpZ2h0OwogCmRpZmYgLS1naXQgYS9nc3QvZHZic3Vib3ZlcmxheS9nc3RkdmJzdWJvdmVybGF5LmMgYi9nc3QvZHZic3Vib3ZlcmxheS9nc3RkdmJzdWJvdmVybGF5LmMKaW5kZXggNjM1OTlkYi4uMzY1ODIwMSAxMDA2NDQKLS0tIGEvZ3N0L2R2YnN1Ym92ZXJsYXkvZ3N0ZHZic3Vib3ZlcmxheS5jCisrKyBiL2dzdC9kdmJzdWJvdmVybGF5L2dzdGR2YnN1Ym92ZXJsYXkuYwpAQCAtMjYsNyArMjYsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsgRklYTUUKLSAqIGdzdC1sYXVuY2ggLXYgZmlsZXNyYyBsb2NhdGlvbj0vcGF0aC90by90cyAhIG1wZWd0c2RlbXV4IG5hbWU9ZCAhIHF1ZXVlICEgbXAzcGFyc2UgISBtYWQgISBhdWRpb2NvbnZlcnQgISBhdXRvYXVkaW9zaW5rIFwKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZpbGVzcmMgbG9jYXRpb249L3BhdGgvdG8vdHMgISBtcGVndHNkZW11eCBuYW1lPWQgISBxdWV1ZSAhIG1wZWdhdWRpb3BhcnNlICEgbWFkICEgYXVkaW9jb252ZXJ0ICEgYXV0b2F1ZGlvc2luayBcCiAgKiAgICAgZC4gISBxdWV1ZSAhIG1wZWcyZGVjICEgdmlkZW9jb252ZXJ0ICEgci4gXAogICogICAgIGQuICEgcXVldWUgISAic3VicGljdHVyZS94LWR2YiIgISBkdmJzdWJvdmVybGF5IG5hbWU9ciAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18IFRoaXMgcGlwZWxpbmUgZGVtdXhlcyBhIE1QRUctVFMgZmlsZSB3aXRoIE1QRUcyIHZpZGVvLCBNUDMgYXVkaW8gYW5kIGVtYmVkZGVkIERWQiBzdWJ0aXRsZXMgYW5kIHJlbmRlcnMgdGhlIHN1YnRpdGxlcyBvbiB0b3Agb2YgdGhlIHZpZGVvLgpkaWZmIC0tZ2l0IGEvZ3N0L2R2ZHNwdS9NYWtlZmlsZS5pbiBiL2dzdC9kdmRzcHUvTWFrZWZpbGUuaW4KaW5kZXggNTFjNzc3Yy4uMTEzNDg5NCAxMDA2NDQKLS0tIGEvZ3N0L2R2ZHNwdS9NYWtlZmlsZS5pbgorKysgYi9nc3QvZHZkc3B1L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OCw2ICsyNzcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNSw2ICszMTYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMyw3ICszMjYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDIsOCArMzQ0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MCwxNiArMzYzLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NSw2ICszOTksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjAsNiArNDI2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIxLDYgKzUyOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzQsOCArNTQzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUxLDYgKzU1OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDgsMTYgKzYxNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OSw2ICs2ODAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc5LDYgKzY5MSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OCw2ICs3MDEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI1LDcgKzc0MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYyBiL2dzdC9kdmRzcHUvZ3N0ZHZkc3B1LmMKaW5kZXggNjJlZTU0NC4uMDRhNDM4NyAxMDA2NDQKLS0tIGEvZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYworKysgYi9nc3QvZHZkc3B1L2dzdGR2ZHNwdS5jCkBAIC0yNCw3ICsyNCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogRklYTUU6IGdzdC1sYXVuY2ggLi4uCisgKiBGSVhNRTogZ3N0LWxhdW5jaC0xLjAgLi4uCiAgKiBdfCBGSVhNRTogZGVzY3JpcHRpb24gZm9yIHRoZSBzYW1wbGUgbGF1bmNoIHBpcGVsaW5lCiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC05MCw3ICs5MCw4IEBACiAKIHN0YXRpYyBHc3RDYXBzICpnc3RfZHZkX3NwdV92aWRlb19wcm94eV9nZXRjYXBzIChHc3RQYWQgKiBwYWQsCiAgICAgR3N0Q2FwcyAqIGZpbHRlcik7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2R2ZF9zcHVfdmlkZW9fc2V0X2NhcHMgKEdzdFBhZCAqIHBhZCwgR3N0Q2FwcyAqIGNhcHMpOworc3RhdGljIGdib29sZWFuIGdzdF9kdmRfc3B1X3ZpZGVvX3NldF9jYXBzIChHc3REVkRTcHUgKiBkdmRzcHUsIEdzdFBhZCAqIHBhZCwKKyAgICBHc3RDYXBzICogY2Fwcyk7CiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfZHZkX3NwdV92aWRlb19jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCiAgICAgR3N0QnVmZmVyICogYnVmKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfZHZkX3NwdV92aWRlb19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCkBAIC0xMDQsNyArMTA1LDggQEAKICAgICBHc3RCdWZmZXIgKiBidWYpOwogc3RhdGljIGdib29sZWFuIGdzdF9kdmRfc3B1X3N1YnBpY19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCiAgICAgR3N0RXZlbnQgKiBldmVudCk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2R2ZF9zcHVfc3VicGljX3NldF9jYXBzIChHc3RQYWQgKiBwYWQsIEdzdENhcHMgKiBjYXBzKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfZHZkX3NwdV9zdWJwaWNfc2V0X2NhcHMgKEdzdERWRFNwdSAqIGR2ZHNwdSwgR3N0UGFkICogcGFkLAorICAgIEdzdENhcHMgKiBjYXBzKTsKIAogc3RhdGljIHZvaWQgZ3N0X2R2ZF9zcHVfY2xlYXIgKEdzdERWRFNwdSAqIGR2ZHNwdSk7CiBzdGF0aWMgdm9pZCBnc3RfZHZkX3NwdV9mbHVzaF9zcHVfaW5mbyAoR3N0RFZEU3B1ICogZHZkc3B1LApAQCAtMzE1LDkgKzMxNyw4IEBACiB9CiAKIHN0YXRpYyBnYm9vbGVhbgotZ3N0X2R2ZF9zcHVfdmlkZW9fc2V0X2NhcHMgKEdzdFBhZCAqIHBhZCwgR3N0Q2FwcyAqIGNhcHMpCitnc3RfZHZkX3NwdV92aWRlb19zZXRfY2FwcyAoR3N0RFZEU3B1ICogZHZkc3B1LCBHc3RQYWQgKiBwYWQsIEdzdENhcHMgKiBjYXBzKQogewotICBHc3REVkRTcHUgKmR2ZHNwdSA9IEdTVF9EVkRfU1BVIChnc3RfcGFkX2dldF9wYXJlbnQgKHBhZCkpOwogICBnYm9vbGVhbiByZXMgPSBGQUxTRTsKICAgR3N0VmlkZW9JbmZvIGluZm87CiAgIGdpbnQgaTsKQEAgLTMzOSw3ICszNDAsNiBAQAogCiAgIHJlcyA9IFRSVUU7CiBkb25lOgotICBnc3Rfb2JqZWN0X3VucmVmIChkdmRzcHUpOwogICByZXR1cm4gcmVzOwogfQogCkBAIC00MDUsNyArNDA1LDcgQEAKICAgICAgIEdzdENhcHMgKmNhcHM7CiAKICAgICAgIGdzdF9ldmVudF9wYXJzZV9jYXBzIChldmVudCwgJmNhcHMpOwotICAgICAgcmVzID0gZ3N0X2R2ZF9zcHVfdmlkZW9fc2V0X2NhcHMgKHBhZCwgY2Fwcyk7CisgICAgICByZXMgPSBnc3RfZHZkX3NwdV92aWRlb19zZXRfY2FwcyAoZHZkc3B1LCBwYWQsIGNhcHMpOwogICAgICAgaWYgKHJlcykKICAgICAgICAgcmVzID0gZ3N0X3BhZF9wdXNoX2V2ZW50IChkdmRzcHUtPnNyY3BhZCwgZXZlbnQpOwogICAgICAgZWxzZQpAQCAtMTA1Nyw3ICsxMDU3LDcgQEAKICAgICAgIEdzdENhcHMgKmNhcHM7CiAKICAgICAgIGdzdF9ldmVudF9wYXJzZV9jYXBzIChldmVudCwgJmNhcHMpOwotICAgICAgcmVzID0gZ3N0X2R2ZF9zcHVfc3VicGljX3NldF9jYXBzIChwYWQsIGNhcHMpOworICAgICAgcmVzID0gZ3N0X2R2ZF9zcHVfc3VicGljX3NldF9jYXBzIChkdmRzcHUsIHBhZCwgY2Fwcyk7CiAgICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEwNjYsOSArMTA2NiwxMCBAQAogICAgIGNhc2UgR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQjoKICAgICB7CiAgICAgICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IGdzdF9ldmVudF9nZXRfc3RydWN0dXJlIChldmVudCk7CisgICAgICBjb25zdCBnY2hhciAqbmFtZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUgKHN0cnVjdHVyZSk7CiAgICAgICBnYm9vbGVhbiBuZWVkX3B1c2g7CiAKLSAgICAgIGlmICghZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZSAoc3RydWN0dXJlLCAiYXBwbGljYXRpb24veC1nc3QtZHZkIikpIHsKKyAgICAgIGlmICghZ19zdHJfaGFzX3ByZWZpeCAobmFtZSwgImFwcGxpY2F0aW9uL3gtZ3N0LWR2ZCIpKSB7CiAgICAgICAgIHJlcyA9IGdzdF9wYWRfZXZlbnRfZGVmYXVsdCAocGFkLCBwYXJlbnQsIGV2ZW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CkBAIC0xMTg0LDkgKzExODUsOCBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KLWdzdF9kdmRfc3B1X3N1YnBpY19zZXRfY2FwcyAoR3N0UGFkICogcGFkLCBHc3RDYXBzICogY2FwcykKK2dzdF9kdmRfc3B1X3N1YnBpY19zZXRfY2FwcyAoR3N0RFZEU3B1ICogZHZkc3B1LCBHc3RQYWQgKiBwYWQsIEdzdENhcHMgKiBjYXBzKQogewotICBHc3REVkRTcHUgKmR2ZHNwdSA9IEdTVF9EVkRfU1BVIChnc3RfcGFkX2dldF9wYXJlbnQgKHBhZCkpOwogICBnYm9vbGVhbiByZXMgPSBGQUxTRTsKICAgR3N0U3RydWN0dXJlICpzOwogICBTcHVJbnB1dFR5cGUgaW5wdXRfdHlwZTsKQEAgLTEyMTIsNyArMTIxMiw2IEBACiAgIERWRF9TUFVfVU5MT0NLIChkdmRzcHUpOwogICByZXMgPSBUUlVFOwogZG9uZToKLSAgZ3N0X29iamVjdF91bnJlZiAoZHZkc3B1KTsKICAgcmV0dXJuIHJlczsKIH0KIApkaWZmIC0tZ2l0IGEvZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmMgYi9nc3QvZHZkc3B1L2dzdHNwdS1wZ3MuYwppbmRleCBmYzU5NzE2Li42MTA4ZGUwIDEwMDY0NAotLS0gYS9nc3QvZHZkc3B1L2dzdHNwdS1wZ3MuYworKysgYi9nc3QvZHZkc3B1L2dzdHNwdS1wZ3MuYwpAQCAtODEsNyArODEsOCBAQAogc3RhdGljIHZvaWQKIGR1bXBfcmxlX2RhdGEgKEdzdERWRFNwdSAqIGR2ZHNwdSwgZ3VpbnQ4ICogZGF0YSwgZ3VpbnQzMiBsZW4pCiB7Ci0gIGd1aW50MTYgb2JqX2ggR19HTlVDX1VOVVNFRDsKKyNpZiBEVU1QX0ZVTExfSU1BR0UKKyAgZ3VpbnQxNiBvYmpfaDsKICAgZ3VpbnQxNiBvYmpfdzsKICAgZ3VpbnQ4ICplbmQgPSBkYXRhICsgbGVuOwogICBndWludCB4ID0gMDsKQEAgLTE0MSw3ICsxNDIsNiBAQAogICAgICAgfQogICAgIH0KIAotI2lmIERVTVBfRlVMTF9JTUFHRQogICAgIHsKICAgICAgIGdpbnQgaTsKICNpZiAxCkBAIC0xNTksNyArMTU5LDYgQEAKICAgICAgIFBHU19EVU1QICgiUnVuIHg6ICVkIHBpeDogJWQgY29sOiAlZFxuIiwgeCwgcnVuX2xlbiwgcGFsX2lkKTsKICNlbmRpZgogICAgIH0KLSNlbmRpZgogCiAgICAgeCArPSBydW5fbGVuOwogICAgIGlmICghcnVuX2xlbiB8fCB4ID4gb2JqX3cpCkBAIC0xNjcsNiArMTY2LDcgQEAKICAgfTsKIAogICBQR1NfRFVNUCAoIlxuIik7CisjZW5kaWYKIH0KIAogc3RhdGljIHZvaWQKQEAgLTMxOCw2ICszMTgsOCBAQAogICAgIGd1aW50OCBuX29iamVjdHMpCiB7CiAgIGlmIChwcy0+b2JqZWN0cyA9PSBOVUxMKSB7CisgICAgaWYgKG5fb2JqZWN0cyA9PSAwKQorICAgICAgcmV0dXJuOwogICAgIHBzLT5vYmplY3RzID0KICAgICAgICAgZ19hcnJheV9zaXplZF9uZXcgKEZBTFNFLCBUUlVFLCBzaXplb2YgKFBnc0NvbXBvc2l0aW9uT2JqZWN0KSwKICAgICAgICAgbl9vYmplY3RzKTsKZGlmZiAtLWdpdCBhL2dzdC9mYWNlb3ZlcmxheS9NYWtlZmlsZS5pbiBiL2dzdC9mYWNlb3ZlcmxheS9NYWtlZmlsZS5pbgppbmRleCBmNjUxYzk1Li41YWI4YzE4IDEwMDY0NAotLS0gYS9nc3QvZmFjZW92ZXJsYXkvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2ZhY2VvdmVybGF5L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2Zlc3RpdmFsL01ha2VmaWxlLmluIGIvZ3N0L2Zlc3RpdmFsL01ha2VmaWxlLmluCmluZGV4IDk5NTkwNjYuLjUzMGIwYWUgMTAwNjQ0Ci0tLSBhL2dzdC9mZXN0aXZhbC9NYWtlZmlsZS5pbgorKysgYi9nc3QvZmVzdGl2YWwvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvZmVzdGl2YWwvZ3N0ZmVzdGl2YWwuYyBiL2dzdC9mZXN0aXZhbC9nc3RmZXN0aXZhbC5jCmluZGV4IGNiMmQxY2IuLjAwZWY4MmQgMTAwNjQ0Ci0tLSBhL2dzdC9mZXN0aXZhbC9nc3RmZXN0aXZhbC5jCisrKyBiL2dzdC9mZXN0aXZhbC9nc3RmZXN0aXZhbC5jCkBAIC03MSw3ICs3MSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZTwvdGl0bGU+CiAgKiB8WwotICogZWNobyAnSGVsbG8gRy1TdHJlYW1lciEnIHwgZ3N0LWxhdW5jaCBmZHNyYyBmZD0wICEgZmVzdGl2YWwgISB3YXZwYXJzZSAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rCisgKiBlY2hvICdIZWxsbyBHLVN0cmVhbWVyIScgfCBnc3QtbGF1bmNoLTEuMCBmZHNyYyBmZD0wICEgZmVzdGl2YWwgISB3YXZwYXJzZSAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L2ZpZWxkYW5hbHlzaXMvTWFrZWZpbGUuaW4gYi9nc3QvZmllbGRhbmFseXNpcy9NYWtlZmlsZS5pbgppbmRleCAwZDJmMzU5Li42M2I0ODBlIDEwMDY0NAotLS0gYS9nc3QvZmllbGRhbmFseXNpcy9NYWtlZmlsZS5pbgorKysgYi9nc3QvZmllbGRhbmFseXNpcy9NYWtlZmlsZS5pbgpAQCAtMTM4LDE2ICsxMzgsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0zMDMsNiArMzAyLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zNDAsNiArMzQxLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zNDgsNyArMzUxLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzY3LDggKzM2OSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zODUsMTYgKzM4OCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MjAsNiArNDI0LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDQ1LDYgKzQ1MSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTU0Niw2ICs1NTQsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTU5LDggKzU2OCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU3Niw2ICs1ODMsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjMzLDE2ICs2NDIsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02OTQsNiArNzA1LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTcwNCw2ICs3MTYsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MTMsNiArNzI2LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc1MCw3ICs3NjUsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9maWVsZGFuYWx5c2lzL2dzdGZpZWxkYW5hbHlzaXMuYyBiL2dzdC9maWVsZGFuYWx5c2lzL2dzdGZpZWxkYW5hbHlzaXMuYwppbmRleCBiN2ZmZDg3Li4yNjBlYWYzIDEwMDY0NAotLS0gYS9nc3QvZmllbGRhbmFseXNpcy9nc3RmaWVsZGFuYWx5c2lzLmMKKysrIGIvZ3N0L2ZpZWxkYW5hbHlzaXMvZ3N0ZmllbGRhbmFseXNpcy5jCkBAIC01MSw3ICs1MSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB1cmlkZWNvZGViaW4gdXJpPS9wYXRoL3RvL2Zvby5iYXIgISBmaWVsZGFuYWx5c2lzICEgZGVpbnRlcmxhY2UgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB1cmlkZWNvZGViaW4gdXJpPS9wYXRoL3RvL2Zvby5iYXIgISBmaWVsZGFuYWx5c2lzICEgZGVpbnRlcmxhY2UgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCiAgKiBdfCBUaGlzIHBpcGVsaW5lIHdpbGwgYW5hbHlzZSBhIHZpZGVvIHN0cmVhbSB3aXRoIGRlZmF1bHQgbWV0cmljcyBhbmQgdGhyZXNob2xkcyBhbmQgb3V0cHV0IHByb2dyZXNzaXZlIGZyYW1lcy4KICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC9mcmVldmVyYi9NYWtlZmlsZS5pbiBiL2dzdC9mcmVldmVyYi9NYWtlZmlsZS5pbgppbmRleCAzYTA5OTdlLi43MWZiNDg0IDEwMDY0NAotLS0gYS9nc3QvZnJlZXZlcmIvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2ZyZWV2ZXJiL01ha2VmaWxlLmluCkBAIC0xMTcsMTYgKzExNywxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Nyw2ICsyNzYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNCw2ICszMTUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMiw3ICszMjUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDEsOCArMzQzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OSwxNiArMzYyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NCw2ICszOTgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTksNiArNDI1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIwLDYgKzUyOCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzMsOCArNTQyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUwLDYgKzU1Nyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDcsMTYgKzYxNiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OCw2ICs2NzksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc4LDYgKzY5MCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Nyw2ICs3MDAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI0LDcgKzczOSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2ZyZWV2ZXJiL2dzdGZyZWV2ZXJiLmMgYi9nc3QvZnJlZXZlcmIvZ3N0ZnJlZXZlcmIuYwppbmRleCA0ZWUzNzc5Li45NTAwMzM0IDEwMDY0NAotLS0gYS9nc3QvZnJlZXZlcmIvZ3N0ZnJlZXZlcmIuYworKysgYi9nc3QvZnJlZXZlcmIvZ3N0ZnJlZXZlcmIuYwpAQCAtMzYsOCArMzYsOCBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggYXVkaW90ZXN0c3JjIHdhdmU9c2F3ICEgZnJlZXZlcmIgISBhdXRvYXVkaW9zaW5rCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249Im1lbG8xLm9nZyIgISBkZWNvZGViaW4gISBhdWRpb2NvbnZlcnQgISBmcmVldmVyYiAhIGF1dG9hdWRpb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGF1ZGlvdGVzdHNyYyB3YXZlPXNhdyAhIGZyZWV2ZXJiICEgYXV0b2F1ZGlvc2luaworICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj0ibWVsbzEub2dnIiAhIGRlY29kZWJpbiAhIGF1ZGlvY29udmVydCAhIGZyZWV2ZXJiICEgYXV0b2F1ZGlvc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC9mcmVpMHIvTWFrZWZpbGUuaW4gYi9nc3QvZnJlaTByL01ha2VmaWxlLmluCmluZGV4IGI4MjlkMTYuLmI3ZWY5MzggMTAwNjQ0Ci0tLSBhL2dzdC9mcmVpMHIvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2ZyZWkwci9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzgsNiArMjc3LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTUsNiArMzE2LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjMsNyArMzI2LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQyLDggKzM0NCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjAsMTYgKzM2MywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTUsNiArMzk5LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIwLDYgKzQyNiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMSw2ICs1MjksNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM0LDggKzU0Myw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1MSw2ICs1NTgsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA4LDE2ICs2MTcsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjksNiArNjgwLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3OSw2ICs2OTEsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODgsNiArNzAxLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNSw3ICs3NDAsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9mcmVpMHIvZ3N0ZnJlaTBybWl4ZXIuYyBiL2dzdC9mcmVpMHIvZ3N0ZnJlaTBybWl4ZXIuYwppbmRleCA4ZDVmNTliLi5mMmM4NDUzIDEwMDY0NAotLS0gYS9nc3QvZnJlaTByL2dzdGZyZWkwcm1peGVyLmMKKysrIGIvZ3N0L2ZyZWkwci9nc3RmcmVpMHJtaXhlci5jCkBAIC0yMTYsOCArMjE2LDEyIEBACiAgICAgICB9CiAgICAgfQogICB9IGVsc2UgaWYgKCFnc3RfY2Fwc19pc19lcXVhbCAoY2Fwcywgc2VsZi0+Y2FwcykpIHsKLSAgICBpZiAoZ3N0X3BhZF9wZWVyX3F1ZXJ5X2FjY2VwdF9jYXBzIChwYWQsIHNlbGYtPmNhcHMpKQorICAgIEdzdENhcHMgKnVwc3RyZWFtX2NhcHM7CisKKyAgICB1cHN0cmVhbV9jYXBzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKHBhZCwgTlVMTCk7CisgICAgaWYgKGdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKHNlbGYtPmNhcHMsIHVwc3RyZWFtX2NhcHMpKQogICAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChwYWQsIGdzdF9ldmVudF9uZXdfcmVjb25maWd1cmUgKCkpOworICAgIGdzdF9jYXBzX3VucmVmICh1cHN0cmVhbV9jYXBzKTsKICAgICByZXQgPSBGQUxTRTsKICAgfQogCmRpZmYgLS1naXQgYS9nc3QvZ2F1ZGllZmZlY3RzL01ha2VmaWxlLmluIGIvZ3N0L2dhdWRpZWZmZWN0cy9NYWtlZmlsZS5pbgppbmRleCBmODFkYjliLi5hNGVkYmVhIDEwMDY0NAotLS0gYS9nc3QvZ2F1ZGllZmZlY3RzL01ha2VmaWxlLmluCisrKyBiL2dzdC9nYXVkaWVmZmVjdHMvTWFrZWZpbGUuaW4KQEAgLTEzOCwxNiArMTM4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMzA5LDYgKzMwOCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzQ2LDYgKzM0Nyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzU0LDcgKzM1Nyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM3Myw4ICszNzUsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzkxLDE2ICszOTQsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDI2LDYgKzQzMCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQ1MSw2ICs0NTcsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01NTIsNiArNTYwLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU2NSw4ICs1NzQsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01ODIsNiArNTg5LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYzOSwxNiArNjQ4LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNzAwLDYgKzcxMSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC03MTAsNiArNzIyLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzE5LDYgKzczMiw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03NTYsNyArNzcxLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvZ2F1ZGllZmZlY3RzL2dzdGJ1cm4uYyBiL2dzdC9nYXVkaWVmZmVjdHMvZ3N0YnVybi5jCmluZGV4IGM4MmM4YWYuLmEzYTNjNTUgMTAwNjQ0Ci0tLSBhL2dzdC9nYXVkaWVmZmVjdHMvZ3N0YnVybi5jCisrKyBiL2dzdC9nYXVkaWVmZmVjdHMvZ3N0YnVybi5jCkBAIC01Miw3ICs1Miw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgISBidXJuICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgYnVybiAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18IFRoaXMgcGlwZWxpbmUgc2hvd3MgdGhlIGVmZmVjdCBvZiBidXJuIG9uIGEgdGVzdCBzdHJlYW0KICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC9nYXVkaWVmZmVjdHMvZ3N0Y2hyb21pdW0uYyBiL2dzdC9nYXVkaWVmZmVjdHMvZ3N0Y2hyb21pdW0uYwppbmRleCA4ZGFjYTNhLi4yNjRiYjY1IDEwMDY0NAotLS0gYS9nc3QvZ2F1ZGllZmZlY3RzL2dzdGNocm9taXVtLmMKKysrIGIvZ3N0L2dhdWRpZWZmZWN0cy9nc3RjaHJvbWl1bS5jCkBAIC01Miw3ICs1Miw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgISBjaHJvbWl1bSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIGNocm9taXVtICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwgVGhpcyBwaXBlbGluZSBzaG93cyB0aGUgZWZmZWN0IG9mIGNocm9taXVtIG9uIGEgdGVzdCBzdHJlYW0KICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC9nYXVkaWVmZmVjdHMvZ3N0ZGlsYXRlLmMgYi9nc3QvZ2F1ZGllZmZlY3RzL2dzdGRpbGF0ZS5jCmluZGV4IDk4ZmEwNTMuLjgzYTM1MTMgMTAwNjQ0Ci0tLSBhL2dzdC9nYXVkaWVmZmVjdHMvZ3N0ZGlsYXRlLmMKKysrIGIvZ3N0L2dhdWRpZWZmZWN0cy9nc3RkaWxhdGUuYwpAQCAtNTIsNyArNTIsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgZGlsYXRlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgZGlsYXRlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwgVGhpcyBwaXBlbGluZSBzaG93cyB0aGUgZWZmZWN0IG9mIGRpbGF0ZSBvbiBhIHRlc3Qgc3RyZWFtCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvZ2F1ZGllZmZlY3RzL2dzdGRvZGdlLmMgYi9nc3QvZ2F1ZGllZmZlY3RzL2dzdGRvZGdlLmMKaW5kZXggOGNmOGM2ZS4uOTk2ZDg5NCAxMDA2NDQKLS0tIGEvZ3N0L2dhdWRpZWZmZWN0cy9nc3Rkb2RnZS5jCisrKyBiL2dzdC9nYXVkaWVmZmVjdHMvZ3N0ZG9kZ2UuYwpAQCAtNTIsNyArNTIsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgZG9kZ2UgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBkb2RnZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18IFRoaXMgcGlwZWxpbmUgc2hvd3MgdGhlIGVmZmVjdCBvZiBkb2RnZSBvbiBhIHRlc3Qgc3RyZWFtCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvZ2F1ZGllZmZlY3RzL2dzdGV4Y2x1c2lvbi5jIGIvZ3N0L2dhdWRpZWZmZWN0cy9nc3RleGNsdXNpb24uYwppbmRleCA4NjBjNWI0Li5hNzIzZjY5IDEwMDY0NAotLS0gYS9nc3QvZ2F1ZGllZmZlY3RzL2dzdGV4Y2x1c2lvbi5jCisrKyBiL2dzdC9nYXVkaWVmZmVjdHMvZ3N0ZXhjbHVzaW9uLmMKQEAgLTUyLDcgKzUyLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhIGV4Y2x1c2lvbiAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIGV4Y2x1c2lvbiAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18IFRoaXMgcGlwZWxpbmUgc2hvd3MgdGhlIGVmZmVjdCBvZiBleGNsdXNpb24gb24gYSB0ZXN0IHN0cmVhbQogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L2dhdWRpZWZmZWN0cy9nc3RnYXVzc2JsdXIuYyBiL2dzdC9nYXVkaWVmZmVjdHMvZ3N0Z2F1c3NibHVyLmMKaW5kZXggYmJmMjJiNi4uNmJhOWI4NCAxMDA2NDQKLS0tIGEvZ3N0L2dhdWRpZWZmZWN0cy9nc3RnYXVzc2JsdXIuYworKysgYi9nc3QvZ2F1ZGllZmZlY3RzL2dzdGdhdXNzYmx1ci5jCkBAIC01Myw3ICs1Myw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgISBnYXVzc2lhbmJsdXIgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBnYXVzc2lhbmJsdXIgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCiAgKiBdfCBUaGlzIHBpcGVsaW5lIHNob3dzIHRoZSBlZmZlY3Qgb2YgZ2F1c3NpYW5ibHVyIG9uIGEgdGVzdCBzdHJlYW0KICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC9nYXVkaWVmZmVjdHMvZ3N0c29sYXJpemUuYyBiL2dzdC9nYXVkaWVmZmVjdHMvZ3N0c29sYXJpemUuYwppbmRleCBhNDVmZWIyLi5mNWQ5OGI4IDEwMDY0NAotLS0gYS9nc3QvZ2F1ZGllZmZlY3RzL2dzdHNvbGFyaXplLmMKKysrIGIvZ3N0L2dhdWRpZWZmZWN0cy9nc3Rzb2xhcml6ZS5jCkBAIC01Miw3ICs1Miw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgISBzb2xhcml6ZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHNvbGFyaXplICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwgVGhpcyBwaXBlbGluZSBzaG93cyB0aGUgZWZmZWN0IG9mIHNvbGFyaXplIG9uIGEgdGVzdCBzdHJlYW0KICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC9nZHAvTWFrZWZpbGUuaW4gYi9nc3QvZ2RwL01ha2VmaWxlLmluCmluZGV4IGEzODlmOTEuLjcyNTUzMWYgMTAwNjQ0Ci0tLSBhL2dzdC9nZHAvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2dkcC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9nZHAvUkVBRE1FIGIvZ3N0L2dkcC9SRUFETUUKaW5kZXggNmI4NGFmYy4uMTA1NjcwMyAxMDA2NDQKLS0tIGEvZ3N0L2dkcC9SRUFETUUKKysrIGIvZ3N0L2dkcC9SRUFETUUKQEAgLTIsMjEgKzIsMjEgQEAKIC0gcmVwbGFjaW5nIHRjcHNlcnZlcnNpbmsgcHJvdG9jb2w9Z2RwIHdpdGggZ2RwcGF5ICEgdGNwc2VydmVyc2luazoKICAgLSByYXcgYXVkaW86CiAgICAgLSBzZXJ2ZXI6Ci0gICAgICBnc3QtbGF1bmNoIC12IGF1ZGlvdGVzdHNyYyAhIGdkcHBheSB2ZXJzaW9uPTAuMiAhIHRjcHNlcnZlcnNpbmsKKyAgICAgIGdzdC1sYXVuY2gtMS4wIC12IGF1ZGlvdGVzdHNyYyAhIGdkcHBheSB2ZXJzaW9uPTAuMiAhIHRjcHNlcnZlcnNpbmsKICAgICAtIGNsaWVudDoKLSAgICAgIGdzdC1sYXVuY2ggLXYgdGNwY2xpZW50c3JjIHByb3RvY29sPWdkcCAhIGFsc2FzaW5rIHN5bmM9RkFMU0UKKyAgICAgIGdzdC1sYXVuY2gtMS4wIC12IHRjcGNsaWVudHNyYyBwcm90b2NvbD1nZHAgISBhbHNhc2luayBzeW5jPUZBTFNFCiAKICAgLSB2b3JiaXMgcGFja2V0czoKICAgICAtIHNlcnZlcjoKLSAgICAgIGdzdC1sYXVuY2ggLXYgYXVkaW90ZXN0c3JjICEgYXVkaW9jb252ZXJ0ICEgdm9yYmlzZW5jICEgZ2RwcGF5IHZlcnNpb249MC4yICEgdGNwc2VydmVyc2luaworICAgICAgZ3N0LWxhdW5jaC0xLjAgLXYgYXVkaW90ZXN0c3JjICEgYXVkaW9jb252ZXJ0ICEgdm9yYmlzZW5jICEgZ2RwcGF5IHZlcnNpb249MC4yICEgdGNwc2VydmVyc2luawogICAgIC0gY2xpZW50OgotICAgICAgZ3N0LWxhdW5jaCAtdiB0Y3BjbGllbnRzcmMgcHJvdG9jb2w9Z2RwICEgdm9yYmlzZGVjICEgYXVkaW9jb252ZXJ0ICEgYWxzYXNpbmsgc3luYz1GQUxTRQorICAgICAgZ3N0LWxhdW5jaC0xLjAgLXYgdGNwY2xpZW50c3JjIHByb3RvY29sPWdkcCAhIHZvcmJpc2RlYyAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rIHN5bmM9RkFMU0UKIAogICAtIG9nZyBwYWNrZXRzOgogICAgIC0gc2VydmVyOgotICAgICAgZ3N0LWxhdW5jaCAtdiBhdWRpb3Rlc3RzcmMgISBhdWRpb2NvbnZlcnQgISB2b3JiaXNlbmMgISBvZ2dtdXggISBnZHBwYXkgdmVyc2lvbj0wLjIgISB0Y3BzZXJ2ZXJzaW5rCisgICAgICBnc3QtbGF1bmNoLTEuMCAtdiBhdWRpb3Rlc3RzcmMgISBhdWRpb2NvbnZlcnQgISB2b3JiaXNlbmMgISBvZ2dtdXggISBnZHBwYXkgdmVyc2lvbj0wLjIgISB0Y3BzZXJ2ZXJzaW5rCiAgICAgLSBjbGllbnQ6Ci0gICAgICBnc3QtbGF1bmNoIC12IHRjcGNsaWVudHNyYyBwcm90b2NvbD1nZHAgISBvZ2dkZW11eCAhIHZvcmJpc2RlYyAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rIHN5bmM9RkFMU0UKKyAgICAgIGdzdC1sYXVuY2gtMS4wIC12IHRjcGNsaWVudHNyYyBwcm90b2NvbD1nZHAgISBvZ2dkZW11eCAhIHZvcmJpc2RlYyAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rIHN5bmM9RkFMU0UKIAogICBJbiBhbGwgdGhlIGNsaWVudCBwaXBlbGluZXMsIHRjcGNsaWVudHNyYyBwcm90b2NvbD1nZHAgY2FuIGJlIHJlcGxhY2VkIHdpdGgKICAgdGNwY2xpZW50c3JjICEgZ2RwZGVwYXkKZGlmZiAtLWdpdCBhL2dzdC9nZHAvZ3N0Z2RwZGVwYXkuYyBiL2dzdC9nZHAvZ3N0Z2RwZGVwYXkuYwppbmRleCBmYWEzNjQyLi5iNzc5YTg1IDEwMDY0NAotLS0gYS9nc3QvZ2RwL2dzdGdkcGRlcGF5LmMKKysrIGIvZ3N0L2dkcC9nc3RnZHBkZXBheS5jCkBAIC0yNiw3ICsyNiw3IEBACiAgKgogICogPHJlZnNlY3QyPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgLW0gZmlsZXNyYyBsb2NhdGlvbj10ZXN0LmdkcCAhIGdkcGRlcGF5ICEgeHZpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IC1tIGZpbGVzcmMgbG9jYXRpb249dGVzdC5nZHAgISBnZHBkZXBheSAhIHh2aW1hZ2VzaW5rCiAgKiBdfCBUaGlzIHBpcGVsaW5lIHBsYXlzIGJhY2sgYSBzZXJpYWxpemVkIHZpZGVvIHN0cmVhbSBhcyBjcmVhdGVkIGluIHRoZQogICogZXhhbXBsZSBmb3IgZ2RwcGF5LgogICogPC9yZWZzZWN0Mj4KQEAgLTQ1LDYgKzQ1LDcgQEAKIGVudW0KIHsKICAgUFJPUF8wLAorICBQUk9QX1RTX09GRlNFVAogfTsKIAogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdkcF9kZXBheV9zaW5rX3RlbXBsYXRlID0KQEAgLTgxLDYgKzgyLDEwIEBACiAgICAgZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7CiAKIHN0YXRpYyB2b2lkIGdzdF9nZHBfZGVwYXlfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOworc3RhdGljIHZvaWQgZ3N0X2dkcF9kZXBheV9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CitzdGF0aWMgdm9pZCBnc3RfZ2RwX2RlcGF5X2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIAogc3RhdGljIHZvaWQKIGdzdF9nZHBfZGVwYXlfY2xhc3NfaW5pdCAoR3N0R0RQRGVwYXlDbGFzcyAqIGtsYXNzKQpAQCAtOTEsNiArOTYsMTUgQEAKICAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CiAgIGdzdGVsZW1lbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOwogCisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9nZHBfZGVwYXlfc2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfZ2RwX2RlcGF5X2dldF9wcm9wZXJ0eTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1RTX09GRlNFVCwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQ2NCAoInRzLW9mZnNldCIsICJUaW1lc3RhbXAgT2Zmc2V0IiwKKyAgICAgICAgICAiVGltZXN0YW1wIE9mZnNldCIsCisgICAgICAgICAgR19NSU5JTlQ2NCwgR19NQVhJTlQ2NCwgMCwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKwogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLAogICAgICAgIkdEUCBEZXBheWxvYWRlciIsICJHRFAvRGVwYXlsb2FkZXIiLAogICAgICAgIkRlcGF5bG9hZHMgR1N0cmVhbWVyIERhdGEgUHJvdG9jb2wgYnVmZmVycyIsCkBAIC0xNDMsNiArMTU3LDQyIEBACiAgIEdTVF9DQUxMX1BBUkVOVCAoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAoZ29iamVjdCkpOwogfQogCitzdGF0aWMgdm9pZAorZ3N0X2dkcF9kZXBheV9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0R0RQRGVwYXkgKnRoaXM7CisKKyAgdGhpcyA9IEdTVF9HRFBfREVQQVkgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX1RTX09GRlNFVDoKKyAgICAgIHRoaXMtPnRzX29mZnNldCA9IGdfdmFsdWVfZ2V0X2ludDY0ICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2RwX2RlcGF5X2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3RHRFBEZXBheSAqdGhpczsKKworICB0aGlzID0gR1NUX0dEUF9ERVBBWSAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfVFNfT0ZGU0VUOgorICAgICAgZ192YWx1ZV9zZXRfaW50NjQgKHZhbHVlLCB0aGlzLT50c19vZmZzZXQpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9nZHBfZGVwYXlfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpCiB7CkBAIC0zMTcsNiArMzY3LDE2IEBACiAgICAgICAgICAgZ3N0X2FkYXB0ZXJfZmx1c2ggKHRoaXMtPmFkYXB0ZXIsIHRoaXMtPnBheWxvYWRfbGVuZ3RoKTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSA+IC10aGlzLT50c19vZmZzZXQpCisgICAgICAgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgKz0gdGhpcy0+dHNfb2Zmc2V0OworICAgICAgICBlbHNlCisgICAgICAgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgPSAwOworCisgICAgICAgIGlmIChHU1RfQlVGRkVSX0RUUyAoYnVmKSA+IC10aGlzLT50c19vZmZzZXQpCisgICAgICAgICAgR1NUX0JVRkZFUl9EVFMgKGJ1ZikgKz0gdGhpcy0+dHNfb2Zmc2V0OworICAgICAgICBlbHNlCisgICAgICAgICAgR1NUX0JVRkZFUl9EVFMgKGJ1ZikgPSAwOworCiAgICAgICAgIC8qIHNldCBjYXBzIGFuZCBwdXNoICovCiAgICAgICAgIEdTVF9MT0dfT0JKRUNUICh0aGlzLCAiZGVzZXJpYWxpemVkIGJ1ZmZlciAlcCwgcHVzaGluZywgdGltZXN0YW1wICUiCiAgICAgICAgICAgICBHU1RfVElNRV9GT1JNQVQgIiwgZHVyYXRpb24gJSIgR1NUX1RJTUVfRk9STUFUCmRpZmYgLS1naXQgYS9nc3QvZ2RwL2dzdGdkcGRlcGF5LmggYi9nc3QvZ2RwL2dzdGdkcGRlcGF5LmgKaW5kZXggY2EyMmMwOC4uNDNiYmY5ZCAxMDA2NDQKLS0tIGEvZ3N0L2dkcC9nc3RnZHBkZXBheS5oCisrKyBiL2dzdC9nZHAvZ3N0Z2RwZGVwYXkuaApAQCAtNjYsNiArNjYsOCBAQAogICBndWludDggKmhlYWRlcjsKICAgZ3VpbnQzMiBwYXlsb2FkX2xlbmd0aDsKICAgR3N0RFBQYXlsb2FkVHlwZSBwYXlsb2FkX3R5cGU7CisKKyAgZ2ludDY0IHRzX29mZnNldDsKIH07CiAKIHN0cnVjdCBfR3N0R0RQRGVwYXlDbGFzcwpkaWZmIC0tZ2l0IGEvZ3N0L2dkcC9nc3RnZHBwYXkuYyBiL2dzdC9nZHAvZ3N0Z2RwcGF5LmMKaW5kZXggMzNhYzU5MS4uYjQyODQ2MiAxMDA2NDQKLS0tIGEvZ3N0L2dkcC9nc3RnZHBwYXkuYworKysgYi9nc3QvZ2RwL2dzdGdkcHBheS5jCkBAIC0yNyw3ICsyNyw3IEBACiAgKgogICogPHJlZnNlY3QyPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgLW0gdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTUwICEgZ2RwcGF5ICEgZmlsZXNpbmsgbG9jYXRpb249dGVzdC5nZHAKKyAqIGdzdC1sYXVuY2gtMS4wIC12IC1tIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz01MCAhIGdkcHBheSAhIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3QuZ2RwCiAgKiBdfCBUaGlzIHBpcGVsaW5lIGNyZWF0ZXMgYSBzZXJpYWxpemVkIHZpZGVvIHN0cmVhbSB0aGF0IGNhbiBiZSBwbGF5ZWQgYmFjawogICogd2l0aCB0aGUgZXhhbXBsZSBzaG93biBpbiBnZHBkZXBheS4KICAqIDwvcmVmc2VjdDI+CkBAIC01NzcsNiArNTc3LDggQEAKICAgICBmbG93cmV0ID0gZ3N0X2dkcF9xdWV1ZV9idWZmZXIgKHRoaXMsIG91dGJ1ZmZlcik7CiAgICAgaWYgKGZsb3dyZXQgIT0gR1NUX0ZMT1dfT0spCiAgICAgICBnb3RvIHB1c2hfZXJyb3I7CisgIH0gZWxzZSB7CisgICAgZ3N0X2J1ZmZlcl91bnJlZiAob3V0YnVmZmVyKTsKICAgfQogCiBkb25lOgpkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9NYWtlZmlsZS5pbiBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vTWFrZWZpbGUuaW4KaW5kZXggNGJlODg2Ny4uOTYxZTAzNyAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9NYWtlZmlsZS5pbgorKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI5Nyw2ICsyOTYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMzNCw2ICszMzUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTM0Miw3ICszNDUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNjEsOCArMzYzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM3OSwxNiArMzgyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQxNCw2ICs0MTgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MzksNiArNDQ1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTQwLDYgKzU0OCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NTMsOCArNTYyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTcwLDYgKzU3Nyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MjcsMTYgKzYzNiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY4OCw2ICs2OTksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjk4LDYgKzcxMCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcwNyw2ICs3MjAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzQ0LDcgKzc1OSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nZW9tZXRyaWNtYXRoLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dlb21ldHJpY21hdGguYwppbmRleCAxY2E1YTc4Li42Yzc5NDllIDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dlb21ldHJpY21hdGguYworKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dlb21ldHJpY21hdGguYwpAQCAtNTQsNyArNTQsNyBAQAogI2RlZmluZSBCICAweDEwMAogI2RlZmluZSBCTSAweGZmCiAKLXN0cnVjdCBfTm9pc2UKK3N0cnVjdCBfR3N0R01Ob2lzZQogewogICBnZG91YmxlIHBbMiAqIEIgKyAyXTsKICAgZ2RvdWJsZSBnMlsyICogQiArIDJdWzJdOwpAQCAtNjksMTAgKzY5LDEwIEBACiAgIHZbMV0gPSB2WzFdIC8gczsKIH0KIAotTm9pc2UgKgotbm9pc2VfbmV3ICh2b2lkKQorR3N0R01Ob2lzZSAqCitnc3RfZ21fbm9pc2VfbmV3ICh2b2lkKQogewotICBOb2lzZSAqbm9pc2UgPSBnX25ldzAgKE5vaXNlLCAxKTsKKyAgR3N0R01Ob2lzZSAqbm9pc2UgPSBnX25ldzAgKEdzdEdNTm9pc2UsIDEpOwogICBnaW50IGksIGosIGs7CiAKICAgZm9yIChpID0gMDsgaSA8IEI7IGkrKykgewpAQCAtMTAyLDcgKzEwMiw3IEBACiB9CiAKIHZvaWQKLW5vaXNlX2ZyZWUgKE5vaXNlICogbm9pc2UpCitnc3RfZ21fbm9pc2VfZnJlZSAoR3N0R01Ob2lzZSAqIG5vaXNlKQogewogICBnX2ZyZWUgKG5vaXNlKTsKIH0KQEAgLTEyMCw3ICsxMjAsNyBAQAogfQogCiBnZG91YmxlCi1ub2lzZV8yIChOb2lzZSAqIG5vaXNlLCBnZG91YmxlIHgsIGdkb3VibGUgeSkKK2dzdF9nbV9ub2lzZV8yIChHc3RHTU5vaXNlICogbm9pc2UsIGdkb3VibGUgeCwgZ2RvdWJsZSB5KQogewogICBnaW50IGJ4MCwgYngxLCBieTAsIGJ5MSwgYjAwLCBiMTAsIGIwMSwgYjExOwogICBnZG91YmxlIHJ4MCwgcngxLCByeTAsIHJ5MSwgc3gsIHN5LCBhLCBiLCB0LCB1LCB2OwpAQCAtMTY5LDcgKzE2OSw3IEBACiAgKiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgJSBvcGVyYXRvciB3aXRoIHJlc3BlY3QgdG8gbmVnYXRpdmUgbnVtYmVycwogICovCiBnZG91YmxlCi1tb2RfZmxvYXQgKGdkb3VibGUgYSwgZ2RvdWJsZSBiKQorZ3N0X2dtX21vZF9mbG9hdCAoZ2RvdWJsZSBhLCBnZG91YmxlIGIpCiB7CiAgIGdpbnQgbiA9IChnaW50KSAoYSAvIGIpOwogCkBAIC0xODMsOSArMTgzLDkgQEAKICAqIFJldHVybnMgYSByZXBlYXRpbmcgdHJpYW5nbGUgc2hhcGUgaW4gdGhlIHJhbmdlIDAuLjEgd2l0aCB3YXZlbGVuZ3RoIDEuMAogICovCiBnZG91YmxlCi1nZW9tZXRyaWNfbWF0aF90cmlhbmdsZSAoZ2RvdWJsZSB4KQorZ3N0X2dtX3RyaWFuZ2xlIChnZG91YmxlIHgpCiB7Ci0gIGdkb3VibGUgciA9IG1vZF9mbG9hdCAoeCwgMS4wKTsKKyAgZ2RvdWJsZSByID0gZ3N0X2dtX21vZF9mbG9hdCAoeCwgMS4wKTsKIAogICByZXR1cm4gMi4wICogKHIgPCAwLjUgPyByIDogMSAtIHIpOwogfQpAQCAtMTk0LDcgKzE5NCw3IEBACiAgKiBIZXJtaXRlIGludGVycG9sYXRpb24KICAqLwogZ2RvdWJsZQotc21vb3Roc3RlcCAoZ2RvdWJsZSBlZGdlMCwgZ2RvdWJsZSBlZGdlMSwgZ2RvdWJsZSB4KQorZ3N0X2dtX3Ntb290aHN0ZXAgKGdkb3VibGUgZWRnZTAsIGdkb3VibGUgZWRnZTEsIGdkb3VibGUgeCkKIHsKICAgZ2RvdWJsZSB0ID0gQ0xBTVAgKCh4IC0gZWRnZTApIC8gKGVkZ2UxIC0gZWRnZTApLCAwLjAsIDEuMCk7CiAgIHJldHVybiB0ICogdCAqICgzLjAgLSAyLjAgKiB0KTsKZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ2VvbWV0cmljbWF0aC5oIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nZW9tZXRyaWNtYXRoLmgKaW5kZXggMGM2Y2NkYy4uNDA0NTFkOCAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nZW9tZXRyaWNtYXRoLmgKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nZW9tZXRyaWNtYXRoLmgKQEAgLTU0LDE2ICs1NCwxNiBAQAogCiBHX0JFR0lOX0RFQ0xTCiAKLXR5cGVkZWYgc3RydWN0IF9Ob2lzZSBOb2lzZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTU5vaXNlIEdzdEdNTm9pc2U7CiAKLU5vaXNlICogbm9pc2VfbmV3ICh2b2lkKTsKLXZvaWQgbm9pc2VfZnJlZSAoTm9pc2UgKiBub2lzZSk7Ci1nZG91YmxlIG5vaXNlXzIgKE5vaXNlICogbm9pc2UsIGdkb3VibGUgeCwgZ2RvdWJsZSB5KTsKK0dzdEdNTm9pc2UgKiBnc3RfZ21fbm9pc2VfbmV3ICh2b2lkKTsKK3ZvaWQgZ3N0X2dtX25vaXNlX2ZyZWUgKEdzdEdNTm9pc2UgKiBub2lzZSk7CitnZG91YmxlIGdzdF9nbV9ub2lzZV8yIChHc3RHTU5vaXNlICogbm9pc2UsIGdkb3VibGUgeCwgZ2RvdWJsZSB5KTsKIAotZ2RvdWJsZSBtb2RfZmxvYXQgKGdkb3VibGUgYSwgZ2RvdWJsZSBiKTsKLWdkb3VibGUgZ2VvbWV0cmljX21hdGhfdHJpYW5nbGUgKGdkb3VibGUgeCk7CitnZG91YmxlIGdzdF9nbV9tb2RfZmxvYXQgKGdkb3VibGUgYSwgZ2RvdWJsZSBiKTsKK2dkb3VibGUgZ3N0X2dtX3RyaWFuZ2xlIChnZG91YmxlIHgpOwogCi1nZG91YmxlIHNtb290aHN0ZXAgKGdkb3VibGUgZWRnZTAsIGdkb3VibGUgZWRnZTEsIGdkb3VibGUgeCk7CitnZG91YmxlIGdzdF9nbV9zbW9vdGhzdGVwIChnZG91YmxlIGVkZ2UwLCBnZG91YmxlIGVkZ2UxLCBnZG91YmxlIHgpOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGJ1bGdlLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGJ1bGdlLmMKaW5kZXggNTg2NGM4My4uOThhNzg0OSAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RidWxnZS5jCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0YnVsZ2UuYwpAQCAtNDEsNiArNDEsMjEgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LWJ1bGdlCisgKiBAc2VlX2Fsc286IGdlb21ldHJpY3RyYW5zZm9ybQorICoKKyAqIEJ1Z2xlIGlzIGEgZ2VvbWV0cmljIGltYWdlIHRyYW5zZm9ybSBlbGVtZW50LiBJdCBhZGRzIGEgcHJvdHViZXJhbmNlIGluIHRoZQorICogY2VudGVyIHBvaW50LgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBidWxnZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCisKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgpAQCAtMTQwLDggKzE1NSw4IEBACiAgICAqIHpvb20gaXMgYWNoaWV2ZWQgZGl2aWRpbmcgKi8KIAogICBzY2FsZSA9Ci0gICAgICAxLjAgLyAoYnVsZ2UtPnpvb20gKyAoKDEuMCAtIGJ1bGdlLT56b29tKSAqIHNtb290aHN0ZXAgKDAsIGNndC0+cmFkaXVzLAotICAgICAgICAgICAgICByKSkpOworICAgICAgMS4wIC8gKGJ1bGdlLT56b29tICsgKCgxLjAgLSBidWxnZS0+em9vbSkgKiBnc3RfZ21fc21vb3Roc3RlcCAoMCwKKyAgICAgICAgICAgICAgY2d0LT5yYWRpdXMsIHIpKSk7CiAKICAgbm9ybV94ICo9IHNjYWxlOwogICBub3JtX3kgKj0gc2NhbGU7CmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGNpcmNsZS5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RjaXJjbGUuYwppbmRleCBjYmJkNDE1Li5kYTRmNDhiIDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGNpcmNsZS5jCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0Y2lyY2xlLmMKQEAgLTQ3LDYgKzQ3LDIwIEBACiAgKiBoaXMgY29kZS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1jaXJjbGUKKyAqIEBzZWVfYWxzbzogZ2VvbWV0cmljdHJhbnNmb3JtCisgKgorICogQ2lyY2xlIGlzIGEgZ2VvbWV0cmljIGltYWdlIHRyYW5zZm9ybSBlbGVtZW50LiBJdCB3YXJwcyB0aGUgcGljdHVyZSBpbnRvIGFuCisgKiBhcmMgc2hhcGVkIGZvcm0uCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIGNpcmNsZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCiAKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KQEAgLTE1OCw3ICsxNzIsNyBAQAogICBkaXN0YW5jZSA9IHNxcnQgKGR4ICogZHggKyBkeSAqIGR5KTsKICAgdGhldGEgPSBhdGFuMiAoLWR5LCAtZHgpICsgY2lyY2xlLT5hbmdsZTsKIAotICB0aGV0YSA9IG1vZF9mbG9hdCAodGhldGEsIDIgKiBHX1BJKTsKKyAgdGhldGEgPSBnc3RfZ21fbW9kX2Zsb2F0ICh0aGV0YSwgMiAqIEdfUEkpOwogCiAgICppbl94ID0gZ3QtPndpZHRoICogdGhldGEgLyAoY2lyY2xlLT5zcHJlYWRfYW5nbGUgKyAwLjAwMDEpOwogICAqaW5feSA9CmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGRpZmZ1c2UuYyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0ZGlmZnVzZS5jCmluZGV4IDk3MjI1YzEuLjAzMDA5YzcgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0ZGlmZnVzZS5jCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0ZGlmZnVzZS5jCkBAIC00Nyw2ICs0NywyMCBAQAogICogaGlzIGNvZGUuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtZGlmZnVzZQorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBEaWZmdXNlIGlzIGEgZ2VvbWV0cmljIGltYWdlIHRyYW5zZm9ybSBlbGVtZW50LiBJdCBkaWZmdXNlcyB0aGUgaW1hZ2UgYnkKKyAqIG1vdmluZyBpdHMgcGl4ZWxzIGluIHJhbmRvbSBkaXJlY3Rpb25zLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBkaWZmdXNlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KIAogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgpkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RmaXNoZXllLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGZpc2hleWUuYwppbmRleCAwZDlmMmI5Li5kMDgwNjljIDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGZpc2hleWUuYworKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGZpc2hleWUuYwpAQCAtNDEsNiArNDEsMjEgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LWZpc2hleWUKKyAqIEBzZWVfYWxzbzogZ2VvbWV0cmljdHJhbnNmb3JtCisgKgorICogRmlzaGV5ZSBpcyBhIGdlb21ldHJpYyBpbWFnZSB0cmFuc2Zvcm0gZWxlbWVudC4gSXQgc2ltdWxhdGVzIGEgZmlzaGV5ZSBsZW5zCisgKiBieSB6b29taW5nIG9uIHRoZSBjZW50ZXIgb2YgdGhlIGltYWdlIGFuZCBjb21wcmVzc2luZyB0aGUgZWRnZXMuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIGZpc2hleWUgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLworCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0Z2VvbWV0cmljdHJhbnNmb3JtLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGdlb21ldHJpY3RyYW5zZm9ybS5jCmluZGV4IDdjZmFhZmQuLjk0OTEwZWQgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0Z2VvbWV0cmljdHJhbnNmb3JtLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RnZW9tZXRyaWN0cmFuc2Zvcm0uYwpAQCAtMTgxLDggKzE4MSw4IEBACiAgICAgICBicmVhazsKIAogICAgIGNhc2UgR1NUX0dUX09GRl9FREdFU19QSVhFTFNfV1JBUDoKLSAgICAgIGluX3ggPSBtb2RfZmxvYXQgKGluX3gsIGd0LT53aWR0aCk7Ci0gICAgICBpbl95ID0gbW9kX2Zsb2F0IChpbl95LCBndC0+aGVpZ2h0KTsKKyAgICAgIGluX3ggPSBnc3RfZ21fbW9kX2Zsb2F0IChpbl94LCBndC0+d2lkdGgpOworICAgICAgaW5feSA9IGdzdF9nbV9tb2RfZmxvYXQgKGluX3ksIGd0LT5oZWlnaHQpOwogICAgICAgaWYgKGluX3ggPCAwKQogICAgICAgICBpbl94ICs9IGd0LT53aWR0aDsKICAgICAgIGlmIChpbl95IDwgMCkKZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0a2FsZWlkb3Njb3BlLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGthbGVpZG9zY29wZS5jCmluZGV4IDljYWY3ZjQuLmJiMWJkZmMgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0a2FsZWlkb3Njb3BlLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RrYWxlaWRvc2NvcGUuYwpAQCAtNDcsNiArNDcsMjAgQEAKICAqIGhpcyBjb2RlLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LWthbGVpZG9zY29wZQorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBUaGUga2FsZWlkc2NvcGUgZWxlbWVudCBhcHBsaWVzICdrYWxlaWRvc2NvcGUnIGdlb21ldHJpYyB0cmFuc2Zvcm0gdG8gdGhlCisgKiBpbWFnZS4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEga2FsZWlkb3Njb3BlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KIAogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgpAQCAtMTU4LDEyICsxNzIsMTIgQEAKICAgZGlzdGFuY2UgPSBzcXJ0IChkeCAqIGR4ICsgZHkgKiBkeSk7CiAgIHRoZXRhID0gYXRhbjIgKGR5LCBkeCkgLSBrYWxlaWRvc2NvcGUtPmFuZ2xlIC0ga2FsZWlkb3Njb3BlLT5hbmdsZTI7CiAKLSAgdGhldGEgPSBnZW9tZXRyaWNfbWF0aF90cmlhbmdsZSAodGhldGEgLyBHX1BJICoga2FsZWlkb3Njb3BlLT5zaWRlcyAqIDAuNSk7CisgIHRoZXRhID0gZ3N0X2dtX3RyaWFuZ2xlICh0aGV0YSAvIEdfUEkgKiBrYWxlaWRvc2NvcGUtPnNpZGVzICogMC41KTsKIAogICBpZiAoY2d0LT5wcmVjYWxjX3JhZGl1cyAhPSAwKSB7CiAgICAgZ2RvdWJsZSByYWRpdXNjID0gY2d0LT5wcmVjYWxjX3JhZGl1cyAvIGNvcyAodGhldGEpOwogCi0gICAgZGlzdGFuY2UgPSByYWRpdXNjICogZ2VvbWV0cmljX21hdGhfdHJpYW5nbGUgKGRpc3RhbmNlIC8gcmFkaXVzYyk7CisgICAgZGlzdGFuY2UgPSByYWRpdXNjICogZ3N0X2dtX3RyaWFuZ2xlIChkaXN0YW5jZSAvIHJhZGl1c2MpOwogICB9CiAgIHRoZXRhICs9IGthbGVpZG9zY29wZS0+YW5nbGU7CiAKZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWFyYmxlLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdG1hcmJsZS5jCmluZGV4IDA4YmJkM2MuLjY4OTg0NTMgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWFyYmxlLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtYXJibGUuYwpAQCAtNDcsNiArNDcsMjAgQEAKICAqIGhpcyBjb2RlLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LW1hcmJsZQorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBNYXJibGUgaXMgYSBnZW9tZXRyaWMgaW1hZ2UgdHJhbnNmb3JtIGVsZW1lbnQuIEl0IGFwcGxpZXMgYSBtYXJibGluZyBlZmZlY3QKKyAqIHRvIHRoZSBpbWFnZS4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgbWFyYmxlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KIAogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgpAQCAtMTU4LDcgKzE3Miw3IEBACiB7CiAgIEdzdE1hcmJsZSAqbWFyYmxlID0gR1NUX01BUkJMRV9DQVNUIChvYmopOwogCi0gIG5vaXNlX2ZyZWUgKG1hcmJsZS0+bm9pc2UpOworICBnc3RfZ21fbm9pc2VfZnJlZSAobWFyYmxlLT5ub2lzZSk7CiAgIGdfZnJlZSAobWFyYmxlLT5zaW5fdGFibGUpOwogICBnX2ZyZWUgKG1hcmJsZS0+Y29zX3RhYmxlKTsKIApAQCAtMTcyLDcgKzE4Niw3IEBACiAgIGdpbnQgaTsKIAogICBpZiAoIW1hcmJsZS0+bm9pc2UpIHsKLSAgICBtYXJibGUtPm5vaXNlID0gbm9pc2VfbmV3ICgpOworICAgIG1hcmJsZS0+bm9pc2UgPSBnc3RfZ21fbm9pc2VfbmV3ICgpOwogICB9CiAKICAgZ19mcmVlIChtYXJibGUtPnNpbl90YWJsZSk7CkBAIC0xOTcsNyArMjExLDcgQEAKICAgR3N0TWFyYmxlICptYXJibGUgPSBHU1RfTUFSQkxFX0NBU1QgKGd0KTsKICAgZ2ludCBkaXNwbGFjZW1lbnQ7CiAKLSAgZGlzcGxhY2VtZW50ID0gMTI3ICogKDEgKyBub2lzZV8yIChtYXJibGUtPm5vaXNlLCB4IC8gbWFyYmxlLT54c2NhbGUsCisgIGRpc3BsYWNlbWVudCA9IDEyNyAqICgxICsgZ3N0X2dtX25vaXNlXzIgKG1hcmJsZS0+bm9pc2UsIHggLyBtYXJibGUtPnhzY2FsZSwKICAgICAgICAgICB5IC8gbWFyYmxlLT54c2NhbGUpKTsKICAgZGlzcGxhY2VtZW50ID0gQ0xBTVAgKGRpc3BsYWNlbWVudCwgMCwgMjU1KTsKIApkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtYXJibGUuaCBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWFyYmxlLmgKaW5kZXggYjc0NzY4Zi4uMjY2NTc3NSAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtYXJibGUuaAorKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdG1hcmJsZS5oCkBAIC03Niw3ICs3Niw3IEBACiAgIGdkb3VibGUgdHVyYnVsZW5jZTsKICAgZ2RvdWJsZSBhbW91bnQ7CiAKLSAgTm9pc2UgKm5vaXNlOworICBHc3RHTU5vaXNlICpub2lzZTsKICAgZ2RvdWJsZSAqc2luX3RhYmxlOwogICBnZG91YmxlICpjb3NfdGFibGU7CiB9OwpkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtaXJyb3IuYyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWlycm9yLmMKaW5kZXggZGI4YWZiZi4uZGYxODIzNCAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtaXJyb3IuYworKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdG1pcnJvci5jCkBAIC00MSw2ICs0MSwyMSBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtbWlycm9yCisgKiBAc2VlX2Fsc286IGdlb21ldHJpY3RyYW5zZm9ybQorICoKKyAqIE1pcnJvciBpcyBhIGdlb21ldHJpYyB0cmFuc2Zvcm0gZWxlbWVudC4gSXQgc3BsaXRzIHRoZSBpbWFnZSBpbnRvIHR3byBoYWx2ZXMKKyAqIGFuZCByZWZsZWN0cyBvbmUgb3ZlciBlYWNoIG90aGVyLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBtaXJyb3IgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLworCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKQEAgLTk3LDIzICsxMTIsMjMgQEAKIAogICBzd2l0Y2ggKHByb3BfaWQpIHsKICAgICBjYXNlIFBST1BfTU9ERToKLSAgICAgIHsKLSAgICAgICAgZ2ludCBtb2RlOworICAgIHsKKyAgICAgIGdpbnQgbW9kZTsKIAotICAgICAgICBHU1RfT0JKRUNUX0xPQ0sgKGZpbHRlcik7Ci0gICAgICAgIG1vZGUgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKGZpbHRlcik7CisgICAgICBtb2RlID0gZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOwogCi0gICAgICAgIGlmIChtb2RlICE9IGZpbHRlci0+bW9kZSkgewotICAgICAgICAgIEdzdEdlb21ldHJpY1RyYW5zZm9ybSAqZ3Q7CisgICAgICBpZiAobW9kZSAhPSBmaWx0ZXItPm1vZGUpIHsKKyAgICAgICAgR3N0R2VvbWV0cmljVHJhbnNmb3JtICpndDsKIAotICAgICAgICAgIGd0ID0gR1NUX0dFT01FVFJJQ19UUkFOU0ZPUk1fQ0FTVCAob2JqZWN0KTsKLSAgICAgICAgICBmaWx0ZXItPm1vZGUgPSBtb2RlOwotICAgICAgICAgIGdzdF9nZW9tZXRyaWNfdHJhbnNmb3JtX3NldF9uZWVkX3JlbWFwIChndCk7Ci0gICAgICAgIH0KLQotICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGd0ID0gR1NUX0dFT01FVFJJQ19UUkFOU0ZPUk1fQ0FTVCAob2JqZWN0KTsKKyAgICAgICAgZmlsdGVyLT5tb2RlID0gbW9kZTsKKyAgICAgICAgZ3N0X2dlb21ldHJpY190cmFuc2Zvcm1fc2V0X25lZWRfcmVtYXAgKGd0KTsKICAgICAgIH0KKworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcik7CisgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0cGVyc3BlY3RpdmUuYyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0cGVyc3BlY3RpdmUuYwppbmRleCBlOWVkMjMwLi5iYWZhMWZjIDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHBlcnNwZWN0aXZlLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RwZXJzcGVjdGl2ZS5jCkBAIC00Nyw2ICs0NywyMCBAQAogICogaHR0cDovL2RvY3Mub3JhY2xlLmNvbS9jZC9FMTc4MDJfMDEvcHJvZHVjdHMvcHJvZHVjdHMvamF2YS1tZWRpYS9qYWkvZm9yRGV2ZWxvcGVycy9qYWktYXBpZG9jcy9qYXZheC9tZWRpYS9qYWkvUGVyc3BlY3RpdmVUcmFuc2Zvcm0uaHRtbAogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LXBlcnNwZWN0aXZlCisgKiBAc2VlX2Fsc286IGdlb21ldHJpY3RyYW5zZm9ybQorICoKKyAqIFRoZSBwZXJzcGVjdGl2ZSBlbGVtZW50IGFwcGxpZXMgYSAyRCBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm0uCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHBlcnNwZWN0aXZlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KKwogLyogRklYTUU6IHN1cHByZXNzIHdhcm5pbmdzIGZvciBkZXByZWNhdGVkIEFQSSBzdWNoIGFzIEdWYWx1ZUFycmF5CiAgKiB3aXRoIG5ld2VyIEdMaWIgdmVyc2lvbnMgKD49IDIuMzEuMCkKICAqCmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHBpbmNoLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHBpbmNoLmMKaW5kZXggMjk2Yjg0YS4uZDY4ZGNkMSAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RwaW5jaC5jCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0cGluY2guYwpAQCAtNDcsNiArNDcsMTkgQEAKICAqIGhpcyBjb2RlLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LXBpbmNoCisgKiBAc2VlX2Fsc286IGdlb21ldHJpY3RyYW5zZm9ybQorICoKKyAqIFBpbmNoIGFwcGxpZXMgYSAncGluY2gnIGdlb21ldHJpYyB0cmFuc2Zvcm0gdG8gdGhlIGltYWdlLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBwaW5jaCAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCiAKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0cm90YXRlLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHJvdGF0ZS5jCmluZGV4IDY5M2M4OTguLjFlMDMzMzkgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0cm90YXRlLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3Ryb3RhdGUuYwpAQCAtNDcsNiArNDcsMTkgQEAKICAqIGhpcyBjb2RlLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LXJvdGF0ZQorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBUaGUgcm90YXRlIGVsZW1lbnQgdHJhbnNmb3JtcyB0aGUgaW1hZ2UgYnkgcm90YXRpbmcgaXQgYnkgYSBzcGVjaWZpZWQgYW5nbGUuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHJvdGF0ZSBhbmdsZT0wLjc4ICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KIAogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgpkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RzcGhlcmUuYyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0c3BoZXJlLmMKaW5kZXggYTQyNTQ3MC4uNWYzOWE0NyAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RzcGhlcmUuYworKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHNwaGVyZS5jCkBAIC00Nyw2ICs0NywxOSBAQAogICogaGlzIGNvZGUuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtc3BoZXJlCisgKiBAc2VlX2Fsc286IGdlb21ldHJpY3RyYW5zZm9ybQorICoKKyAqIFRoZSBzcGhlcmUgZWxlbWVudCBhcHBsaWVzIGEgJ3NwaGVyZScgZ2VvbWV0cmljIHRyYW5zZm9ybSB0byB0aGUgaW1hZ2UuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHNwaGVyZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCiAKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0c3F1YXJlLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHNxdWFyZS5jCmluZGV4IDhlNGM5OWMuLjRiMDQ0ZjEgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0c3F1YXJlLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RzcXVhcmUuYwpAQCAtNDEsNiArNDEsMjAgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LXNxdWFyZQorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBUaGUgc3F1YXJlIGVsZW1lbnQgZGlzdG9ydHMgdGhlIGNlbnRlciBwYXJ0IG9mIHRoZSBpbWFnZSBpbnRvIGEgc3F1YXJlLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBzcXVhcmUgem9vbT0xMDAgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLworCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKQEAgLTE1NywxMiArMTcxLDEyIEBACiAgIC8qIHpvb20gYXQgdGhlIGNlbnRlciwgc21vb3Roc3RlcCBhcm91bmQgaGFsZiBxdWFkcmFudCBhbmQgZ2V0IGJhY2sgdG8gbm9ybWFsICovCiAgIG5vcm1feCAqPQogICAgICAgKDEuMCAvIHNxdWFyZS0+em9vbSkgKiAoMS4wICsgKHNxdWFyZS0+em9vbSAtCi0gICAgICAgICAgMS4wKSAqIHNtb290aHN0ZXAgKHNxdWFyZS0+d2lkdGggLSAwLjEyNSwgc3F1YXJlLT53aWR0aCArIDAuMTI1LAotICAgICAgICAgIEFCUyAobm9ybV94KSkpOworICAgICAgICAgIDEuMCkgKiBnc3RfZ21fc21vb3Roc3RlcCAoc3F1YXJlLT53aWR0aCAtIDAuMTI1LAorICAgICAgICAgIHNxdWFyZS0+d2lkdGggKyAwLjEyNSwgQUJTIChub3JtX3gpKSk7CiAgIG5vcm1feSAqPQogICAgICAgKDEuMCAvIHNxdWFyZS0+em9vbSkgKiAoMS4wICsgKHNxdWFyZS0+em9vbSAtCi0gICAgICAgICAgMS4wKSAqIHNtb290aHN0ZXAgKHNxdWFyZS0+aGVpZ2h0IC0gMC4xMjUsIHNxdWFyZS0+aGVpZ2h0ICsgMC4xMjUsCi0gICAgICAgICAgQUJTIChub3JtX3kpKSk7CisgICAgICAgICAgMS4wKSAqIGdzdF9nbV9zbW9vdGhzdGVwIChzcXVhcmUtPmhlaWdodCAtIDAuMTI1LAorICAgICAgICAgIHNxdWFyZS0+aGVpZ2h0ICsgMC4xMjUsIEFCUyAobm9ybV95KSkpOwogCiAgIC8qIHVubm9ybWFsaXplICovCiAgICppbl94ID0gMC41ICogKG5vcm1feCArIDEuMCkgKiB3aWR0aDsKZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0c3RyZXRjaC5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RzdHJldGNoLmMKaW5kZXggZjliMzM0NC4uNjFlZWQzNyAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RzdHJldGNoLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RzdHJldGNoLmMKQEAgLTQxLDYgKzQxLDIwIEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1zdHJldGNoCisgKiBAc2VlX2Fsc286IGdlb21ldHJpY3RyYW5zZm9ybQorICoKKyAqIFRoZSBzdHJldGNoIGVsZW1lbnQgc3RyZXRjaGVzIHRoZSBpbWFnZSBpbiBhIGNpcmNsZSBhcm91bmQgdGhlIGNlbnRlciBwb2ludC4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgc3RyZXRjaCAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCisKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgpAQCAtMTQ1LDggKzE1OSw4IEBACiAgIGEgPSAxLjAgKyAoTUFYX1NIUklOS19BTU9VTlQgLSAxLjApICogc3RyZXRjaC0+aW50ZW5zaXR5OwogICBiID0gYSAtIDEuMDsKIAotICBub3JtX3ggKj0gYSAtIGIgKiBzbW9vdGhzdGVwICgwLjAsIGNndC0+cmFkaXVzLCByKTsKLSAgbm9ybV95ICo9IGEgLSBiICogc21vb3Roc3RlcCAoMC4wLCBjZ3QtPnJhZGl1cywgcik7CisgIG5vcm1feCAqPSBhIC0gYiAqIGdzdF9nbV9zbW9vdGhzdGVwICgwLjAsIGNndC0+cmFkaXVzLCByKTsKKyAgbm9ybV95ICo9IGEgLSBiICogZ3N0X2dtX3Ntb290aHN0ZXAgKDAuMCwgY2d0LT5yYWRpdXMsIHIpOwogCiAgIC8qIHVubm9ybWFsaXplICovCiAgICppbl94ID0gKDAuNSAqIG5vcm1feCArIGNndC0+eF9jZW50ZXIpICogd2lkdGg7CmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHR1bm5lbC5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3R0dW5uZWwuYwppbmRleCBhNzFmMGVmLi45NGI2MDcwIDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHR1bm5lbC5jCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0dHVubmVsLmMKQEAgLTQxLDYgKzQxLDIxIEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC10dW5uZWwKKyAqIEBzZWVfYWxzbzogZ2VvbWV0cmljdHJhbnNmb3JtCisgKgorICogVHVubmVsIGlzIGEgZ2VvbWV0cmljIGltYWdlIHRyYW5zZm9ybSBlbGVtZW50LiBJdCBhcHBsaWVzIGEgbGlnaHQgdHVubmVsCisgKiBlZmZlY3QuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHR1bm5lbCAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCisKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3R0d2lybC5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3R0d2lybC5jCmluZGV4IDMzMjIyYzguLjk2MmQzYmEgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0dHdpcmwuYworKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHR3aXJsLmMKQEAgLTQ3LDYgKzQ3LDE5IEBACiAgKiBoaXMgY29kZS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC10d2lybAorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBUaGUgdHdpcmwgZWxlbWVudCB0d2lzdHMgdGhlIGltYWdlIGZyb20gdGhlIGNlbnRlciBvdXQuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHR3aXJsICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KIAogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgpkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3R3YXRlcnJpcHBsZS5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3R3YXRlcnJpcHBsZS5jCmluZGV4IDRkYWZmMmEuLjk2YWY2ZTggMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0d2F0ZXJyaXBwbGUuYworKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHdhdGVycmlwcGxlLmMKQEAgLTQ3LDYgKzQ3LDE5IEBACiAgKiBoaXMgY29kZS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC13YXRlcnJpcHBsZQorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBUaGUgd2F0ZXJyaXBwbGUgZWxlbWVudCBjcmVhdGVzIGEgd2F0ZXIgcmlwcGxlIGVmZmVjdCBvbiB0aGUgaW1hZ2UuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHdhdGVycmlwcGxlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KIAogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgpkaWZmIC0tZ2l0IGEvZ3N0L2hkdnBhcnNlL01ha2VmaWxlLmluIGIvZ3N0L2hkdnBhcnNlL01ha2VmaWxlLmluCmluZGV4IDIwNzJiOTAuLmMzZjM5MTAgMTAwNjQ0Ci0tLSBhL2dzdC9oZHZwYXJzZS9NYWtlZmlsZS5pbgorKysgYi9nc3QvaGR2cGFyc2UvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvaWQzdGFnL01ha2VmaWxlLmluIGIvZ3N0L2lkM3RhZy9NYWtlZmlsZS5pbgppbmRleCBiZGIxMmQyLi5kMTg4NGE4IDEwMDY0NAotLS0gYS9nc3QvaWQzdGFnL01ha2VmaWxlLmluCisrKyBiL2dzdC9pZDN0YWcvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvaWQzdGFnL2dzdGlkM211eC5jIGIvZ3N0L2lkM3RhZy9nc3RpZDNtdXguYwppbmRleCA4OWE4MTI3Li42NDE3NTM4IDEwMDY0NAotLS0gYS9nc3QvaWQzdGFnL2dzdGlkM211eC5jCisrKyBiL2dzdC9pZDN0YWcvZ3N0aWQzbXV4LmMKQEAgLTM3LDEyICszNywxMiBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249Zm9vLm9nZyAhIGRlY29kZWJpbiAhIGF1ZGlvY29udmVydCAhIGxhbWUgISBpZDNtdXggISBmaWxlc2luayBsb2NhdGlvbj1mb28ubXAzCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPWZvby5vZ2cgISBkZWNvZGViaW4gISBhdWRpb2NvbnZlcnQgISBpZDNtdXggISBmaWxlc2luayBsb2NhdGlvbj1mb28ubXAzCiAgKiBdfCBBIHBpcGVsaW5lIHRoYXQgdHJhbnNjb2RlcyBhIGZpbGUgZnJvbSBPZ2cvVm9yYmlzIHRvIG1wMyBmb3JtYXQgd2l0aAogICogSUQzIHRhZ3MgdGhhdCBjb250YWluIHRoZSBzYW1lIG1ldGFkYXRhIGFzIHRoZSB0aGUgT2dnL1ZvcmJpcyBmaWxlLgogICogTWFrZSBzdXJlIHRoZSBPZ2cvVm9yYmlzIGZpbGUgYWN0dWFsbHkgaGFzIGNvbW1lbnRzIHRvIHByZXNlcnZlLgogICogfFsKLSAqIGdzdC1sYXVuY2ggLW0gZmlsZXNyYyBsb2NhdGlvbj1mb28ubXAzICEgaWQzZGVtdXggISBmYWtlc2luayBzaWxlbnQ9VFJVRSAyJmd0OyAvZGV2L251bGwgfCBncmVwIHRhZ2xpc3QKKyAqIGdzdC1sYXVuY2gtMS4wIC1tIGZpbGVzcmMgbG9jYXRpb249Zm9vLm1wMyAhIGlkM2RlbXV4ICEgZmFrZXNpbmsgc2lsZW50PVRSVUUKICAqIF18IFZlcmlmeSB0aGF0IHRhZ3MgaGF2ZSBiZWVuIHdyaXR0ZW4uCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvaWQzdGFnL2lkM3RhZy5jIGIvZ3N0L2lkM3RhZy9pZDN0YWcuYwppbmRleCBjMTJhNzdjLi4zYTYwMmQxIDEwMDY0NAotLS0gYS9nc3QvaWQzdGFnL2lkM3RhZy5jCisrKyBiL2dzdC9pZDN0YWcvaWQzdGFnLmMKQEAgLTQ2Miw3ICs0NjIsNTggQEAKICAgZ19mcmVlIChzdHJpbmdzKTsKIH0KIAotLyogRklYTUU6IGlkM3YyLXByaXZhdGUgZnJhbWVzIG5lZWQgdG8gYmUgZXh0cmFjdGVkIGFzIHNhbXBsZXMgKi8KK3N0YXRpYyB2b2lkCithZGRfcHJpdmF0ZV9kYXRhX3RhZyAoR3N0SWQzdjJUYWcgKiBpZDN2MnRhZywgY29uc3QgR3N0VGFnTGlzdCAqIGxpc3QsCisgICAgY29uc3QgZ2NoYXIgKiB0YWcsIGd1aW50IG51bV90YWdzLCBjb25zdCBnY2hhciAqIGZyYW1lX2lkKQoreworICBnaW50IG47CisKKyAgZm9yIChuID0gMDsgbiA8IG51bV90YWdzOyArK24pIHsKKyAgICBHc3RJZDN2MkZyYW1lIGZyYW1lOworICAgIEdzdFNhbXBsZSAqc2FtcGxlID0gTlVMTDsKKyAgICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IE5VTEw7CisgICAgR3N0QnVmZmVyICpiaW5hcnkgPSBOVUxMOworICAgIEdzdEJ1ZmZlciAqcHJpdl9mcmFtZSA9IE5VTEw7CisgICAgY29uc3QgZ2NoYXIgKm93bmVyX3N0ciA9IE5VTEw7CisgICAgZ3VpbnQgb3duZXJfbGVuID0gMDsKKyAgICBHc3RNYXBJbmZvIG1hcGluZm87CisKKyAgICBpZiAoIWdzdF90YWdfbGlzdF9nZXRfc2FtcGxlX2luZGV4IChsaXN0LCB0YWcsIG4sICZzYW1wbGUpKQorICAgICAgY29udGludWU7CisKKyAgICBzdHJ1Y3R1cmUgPSBnc3Rfc2FtcGxlX2dldF9pbmZvIChzYW1wbGUpOworICAgIGlmIChzdHJ1Y3R1cmUgIT0gTlVMTAorICAgICAgICAmJiAhc3RyY21wIChnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzdHJ1Y3R1cmUpLCAiSUQzUHJpdmF0ZUZyYW1lIikpIHsKKyAgICAgIG93bmVyX3N0ciA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoc3RydWN0dXJlLCAib3duZXIiKTsKKworICAgICAgaWYgKG93bmVyX3N0ciAhPSBOVUxMKSB7CisgICAgICAgIG93bmVyX2xlbiA9IHN0cmxlbiAob3duZXJfc3RyKSArIDE7CisgICAgICAgIHByaXZfZnJhbWUgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKG93bmVyX2xlbik7CisgICAgICAgIGdzdF9idWZmZXJfZmlsbCAocHJpdl9mcmFtZSwgMCwgb3duZXJfc3RyLCBvd25lcl9sZW4pOworCisgICAgICAgIGJpbmFyeSA9IGdzdF9idWZmZXJfcmVmIChnc3Rfc2FtcGxlX2dldF9idWZmZXIgKHNhbXBsZSkpOworICAgICAgICBwcml2X2ZyYW1lID0gZ3N0X2J1ZmZlcl9hcHBlbmQgKHByaXZfZnJhbWUsIGJpbmFyeSk7CisKKyAgICAgICAgaWQzdjJfZnJhbWVfaW5pdCAoJmZyYW1lLCBmcmFtZV9pZCwgMCk7CisKKyAgICAgICAgaWYgKGdzdF9idWZmZXJfbWFwIChwcml2X2ZyYW1lLCAmbWFwaW5mbywgR1NUX01BUF9SRUFEKSkgeworICAgICAgICAgIGlkM3YyX2ZyYW1lX3dyaXRlX2J5dGVzICgmZnJhbWUsIG1hcGluZm8uZGF0YSwgbWFwaW5mby5zaXplKTsKKyAgICAgICAgICBnX2FycmF5X2FwcGVuZF92YWwgKGlkM3YydGFnLT5mcmFtZXMsIGZyYW1lKTsKKyAgICAgICAgICBnc3RfYnVmZmVyX3VubWFwIChwcml2X2ZyYW1lLCAmbWFwaW5mbyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgR1NUX1dBUk5JTkcgKCJDb3VsZG4ndCBtYXAgcHJpdiBmcmFtZSB0YWcgYnVmZmVyIik7CisgICAgICAgICAgaWQzdjJfZnJhbWVfdW5zZXQgKCZmcmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBnc3RfYnVmZmVyX3VucmVmIChwcml2X2ZyYW1lKTsKKyAgICAgICAgZ3N0X3NhbXBsZV91bnJlZiAoc2FtcGxlKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgR1NUX1dBUk5JTkcgKCJDb3VsZG4ndCBmaW5kIElEM1ByaXZhdGVGcmFtZSBzdHJ1Y3R1cmUiKTsKKyAgICB9CisgIH0KK30KKwogc3RhdGljIHZvaWQKIGFkZF9pZDN2MmZyYW1lX3RhZyAoR3N0SWQzdjJUYWcgKiBpZDN2MnRhZywgY29uc3QgR3N0VGFnTGlzdCAqIGxpc3QsCiAgICAgY29uc3QgZ2NoYXIgKiB0YWcsIGd1aW50IG51bV90YWdzLCBjb25zdCBnY2hhciAqIHVudXNlZCkKQEAgLTEwOTUsNiArMTE0Niw3IEBACiAgIEdTVF9UQUdfTVVTSUNBTF9LRVksIGFkZF90ZXh0X3RhZywgIlRLRVkifSwgewogCiAgICAgLyogUHJpdmF0ZSBmcmFtZXMgKi8KKyAgR1NUX1RBR19QUklWQVRFX0RBVEEsIGFkZF9wcml2YXRlX2RhdGFfdGFnLCAiUFJJViJ9LCB7CiAgIEdTVF9JRDNfREVNVVhfVEFHX0lEM1YyX0ZSQU1FLCBhZGRfaWQzdjJmcmFtZV90YWcsIE5VTEx9LCB7CiAKICAgICAvKiBUcmFjayBhbmQgYWxidW0gbnVtYmVycyAqLwpkaWZmIC0tZ2l0IGEvZ3N0L2ludGVyL01ha2VmaWxlLmluIGIvZ3N0L2ludGVyL01ha2VmaWxlLmluCmluZGV4IDliODliMzcuLjQ3ZDdjY2QgMTAwNjQ0Ci0tLSBhL2dzdC9pbnRlci9NYWtlZmlsZS5pbgorKysgYi9nc3QvaW50ZXIvTWFrZWZpbGUuaW4KQEAgLTExOCwxNiArMTE4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjkxLDYgKzI5MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzI4LDYgKzMyOSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzM2LDcgKzMzOSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM1NSw4ICszNTcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzczLDE2ICszNzYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDA4LDYgKzQxMiw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQzMyw2ICs0MzksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MzQsNiArNTQyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU0Nyw4ICs1NTYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NjQsNiArNTcxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYyMSwxNiArNjMwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjgyLDYgKzY5Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02OTIsNiArNzA0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzAxLDYgKzcxNCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MzgsNyArNzUzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvaW50ZXIvZ3N0aW50ZXJhdWRpb3NpbmsuYyBiL2dzdC9pbnRlci9nc3RpbnRlcmF1ZGlvc2luay5jCmluZGV4IDU4ZTc4MzIuLjI2MWVkMjUgMTAwNjQ0Ci0tLSBhL2dzdC9pbnRlci9nc3RpbnRlcmF1ZGlvc2luay5jCisrKyBiL2dzdC9pbnRlci9nc3RpbnRlcmF1ZGlvc2luay5jCkBAIC0yNiwxMCArMjYsMTAgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGF1ZGlvdGVzdHNyYyAhIHF1ZXVlICEgaW50ZXJhdWRpb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGF1ZGlvdGVzdHNyYyAhIHF1ZXVlICEgaW50ZXJhdWRpb3NpbmsKICAqIF18CiAgKgotICogVGhlIGludGVyYXVkaW9zaW5rIGVsZW1lbnQgY2Fubm90IGJlIHVzZWQgZWZmZWN0aXZlbHkgd2l0aCBnc3QtbGF1bmNoLAorICogVGhlIGludGVyYXVkaW9zaW5rIGVsZW1lbnQgY2Fubm90IGJlIHVzZWQgZWZmZWN0aXZlbHkgd2l0aCBnc3QtbGF1bmNoLTEuMCwKICAqIGFzIGl0IHJlcXVpcmVzIGEgc2Vjb25kIHBpcGVsaW5lIGluIHRoZSBhcHBsaWNhdGlvbiB0byByZWNlaXZlIHRoZQogICogYXVkaW8uCiAgKiBTZWUgdGhlIGdzdGludGVydGVzdC5jIGV4YW1wbGUgaW4gdGhlIGdzdC1wbHVnaW5zLWJhZCBzb3VyY2UgY29kZSBmb3IKZGlmZiAtLWdpdCBhL2dzdC9pbnRlci9nc3RpbnRlcmF1ZGlvc3JjLmMgYi9nc3QvaW50ZXIvZ3N0aW50ZXJhdWRpb3NyYy5jCmluZGV4IDJlZWZmNjUuLjFkNGI2OGIgMTAwNjQ0Ci0tLSBhL2dzdC9pbnRlci9nc3RpbnRlcmF1ZGlvc3JjLmMKKysrIGIvZ3N0L2ludGVyL2dzdGludGVyYXVkaW9zcmMuYwpAQCAtMjUsMTAgKzI1LDEwIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBpbnRlcmF1ZGlvc3JjICEgcXVldWUgISBhdWRpb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGludGVyYXVkaW9zcmMgISBxdWV1ZSAhIGF1dG9hdWRpb3NpbmsKICAqIF18CiAgKiAKLSAqIFRoZSBpbnRlcmF1ZGlvc3JjIGVsZW1lbnQgY2Fubm90IGJlIHVzZWQgZWZmZWN0aXZlbHkgd2l0aCBnc3QtbGF1bmNoLAorICogVGhlIGludGVyYXVkaW9zcmMgZWxlbWVudCBjYW5ub3QgYmUgdXNlZCBlZmZlY3RpdmVseSB3aXRoIGdzdC1sYXVuY2gtMS4wLAogICogYXMgaXQgcmVxdWlyZXMgYSBzZWNvbmQgcGlwZWxpbmUgaW4gdGhlIGFwcGxpY2F0aW9uIHRvIHNlbmQgYXVkaW8uCiAgKiBTZWUgdGhlIGdzdGludGVydGVzdC5jIGV4YW1wbGUgaW4gdGhlIGdzdC1wbHVnaW5zLWJhZCBzb3VyY2UgY29kZSBmb3IKICAqIG1vcmUgZGV0YWlscy4KZGlmZiAtLWdpdCBhL2dzdC9pbnRlci9nc3RpbnRlcnN1YnNpbmsuYyBiL2dzdC9pbnRlci9nc3RpbnRlcnN1YnNpbmsuYwppbmRleCBiOTA3YzBhLi43N2JjNDg0IDEwMDY0NAotLS0gYS9nc3QvaW50ZXIvZ3N0aW50ZXJzdWJzaW5rLmMKKysrIGIvZ3N0L2ludGVyL2dzdGludGVyc3Vic2luay5jCkBAIC0yNSwxMCArMjUsMTAgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IC4uLiAhIGludGVyc3Vic2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgLi4uICEgaW50ZXJzdWJzaW5rCiAgKiBdfAogICogCi0gKiBUaGUgaW50ZXJzdWJzaW5rIGVsZW1lbnQgY2Fubm90IGJlIHVzZWQgZWZmZWN0aXZlbHkgd2l0aCBnc3QtbGF1bmNoLAorICogVGhlIGludGVyc3Vic2luayBlbGVtZW50IGNhbm5vdCBiZSB1c2VkIGVmZmVjdGl2ZWx5IHdpdGggZ3N0LWxhdW5jaC0xLjAsCiAgKiBhcyBpdCByZXF1aXJlcyBhIHNlY29uZCBwaXBlbGluZSBpbiB0aGUgYXBwbGljYXRpb24gdG8gc2VuZCBhdWRpby4KICAqIFNlZSB0aGUgZ3N0aW50ZXJ0ZXN0LmMgZXhhbXBsZSBpbiB0aGUgZ3N0LXBsdWdpbnMtYmFkIHNvdXJjZSBjb2RlIGZvcgogICogbW9yZSBkZXRhaWxzLgpkaWZmIC0tZ2l0IGEvZ3N0L2ludGVyL2dzdGludGVyc3Vic3JjLmMgYi9nc3QvaW50ZXIvZ3N0aW50ZXJzdWJzcmMuYwppbmRleCAyNGVmYzlmLi40ODJhMjBmIDEwMDY0NAotLS0gYS9nc3QvaW50ZXIvZ3N0aW50ZXJzdWJzcmMuYworKysgYi9nc3QvaW50ZXIvZ3N0aW50ZXJzdWJzcmMuYwpAQCAtMjYsMTAgKzI2LDEwIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBpbnRlcnN1YnNyYyAhIGthdGVlbmMgISBvZ2dtdXggISBmaWxlc2luayBsb2NhdGlvbj1vdXQub2d2CisgKiBnc3QtbGF1bmNoLTEuMCAtdiBpbnRlcnN1YnNyYyAhIGthdGVlbmMgISBvZ2dtdXggISBmaWxlc2luayBsb2NhdGlvbj1vdXQub2d2CiAgKiBdfAogICogCi0gKiBUaGUgaW50ZXJzdWJzcmMgZWxlbWVudCBjYW5ub3QgYmUgdXNlZCBlZmZlY3RpdmVseSB3aXRoIGdzdC1sYXVuY2gsCisgKiBUaGUgaW50ZXJzdWJzcmMgZWxlbWVudCBjYW5ub3QgYmUgdXNlZCBlZmZlY3RpdmVseSB3aXRoIGdzdC1sYXVuY2gtMS4wLAogICogYXMgaXQgcmVxdWlyZXMgYSBzZWNvbmQgcGlwZWxpbmUgaW4gdGhlIGFwcGxpY2F0aW9uIHRvIHNlbmQgc3VidGl0bGVzLgogICogU2VlIHRoZSBnc3RpbnRlcnRlc3QuYyBleGFtcGxlIGluIHRoZSBnc3QtcGx1Z2lucy1iYWQgc291cmNlIGNvZGUgZm9yCiAgKiBtb3JlIGRldGFpbHMuCmRpZmYgLS1naXQgYS9nc3QvaW50ZXIvZ3N0aW50ZXJ0ZXN0LmMgYi9nc3QvaW50ZXIvZ3N0aW50ZXJ0ZXN0LmMKaW5kZXggY2ZmNGYwZC4uM2IxYWJkYiAxMDA2NDQKLS0tIGEvZ3N0L2ludGVyL2dzdGludGVydGVzdC5jCisrKyBiL2dzdC9pbnRlci9nc3RpbnRlcnRlc3QuYwpAQCAtODUsNiArODUsOCBAQAogICBnX29wdGlvbl9jb250ZXh0X2FkZF9ncm91cCAoY29udGV4dCwgZ3N0X2luaXRfZ2V0X29wdGlvbl9ncm91cCAoKSk7CiAgIGlmICghZ19vcHRpb25fY29udGV4dF9wYXJzZSAoY29udGV4dCwgJmFyZ2MsICZhcmd2LCAmZXJyb3IpKSB7CiAgICAgZ19wcmludCAoIm9wdGlvbiBwYXJzaW5nIGZhaWxlZDogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICBnX29wdGlvbl9jb250ZXh0X2ZyZWUgKGNvbnRleHQpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CiAgICAgZXhpdCAoMSk7CiAgIH0KICAgZ19vcHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKQEAgLTE5OSw2ICsyMDEsNyBAQAogICBpZiAoZXJyb3IpIHsKICAgICBnX3ByaW50ICgicGlwZWxpbmUgcGFyc2luZyBlcnJvcjogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKICAgICBnc3Rfb2JqZWN0X3VucmVmIChwaXBlbGluZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKICAgICByZXR1cm47CiAgIH0KIApAQCAtMjM2LDYgKzIzOSw3IEBACiAgIGlmIChlcnJvcikgewogICAgIGdfcHJpbnQgKCJwaXBlbGluZSBwYXJzaW5nIGVycm9yOiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOwogICAgIGdzdF9vYmplY3RfdW5yZWYgKHBpcGVsaW5lKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOwogICAgIHJldHVybjsKICAgfQogCkBAIC0zNTIsNyArMzU2LDcgQEAKIAogICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IgKG1lc3NhZ2UsICZlcnJvciwgJmRlYnVnKTsKICAgICAgIGdzdF9pbnRlcl90ZXN0X2hhbmRsZV9lcnJvciAoaW50ZXJ0ZXN0LCBlcnJvciwgZGVidWcpOwotICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7CisgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOwogICAgICAgZ19mcmVlIChkZWJ1Zyk7CiAgICAgfQogICAgICAgYnJlYWs7CkBAIC0zNjMsNyArMzY3LDcgQEAKIAogICAgICAgZ3N0X21lc3NhZ2VfcGFyc2Vfd2FybmluZyAobWVzc2FnZSwgJmVycm9yLCAmZGVidWcpOwogICAgICAgZ3N0X2ludGVyX3Rlc3RfaGFuZGxlX3dhcm5pbmcgKGludGVydGVzdCwgZXJyb3IsIGRlYnVnKTsKLSAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOworICAgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKICAgICAgIGdfZnJlZSAoZGVidWcpOwogICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMzc0LDcgKzM3OCw3IEBACiAKICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2luZm8gKG1lc3NhZ2UsICZlcnJvciwgJmRlYnVnKTsKICAgICAgIGdzdF9pbnRlcl90ZXN0X2hhbmRsZV9pbmZvIChpbnRlcnRlc3QsIGVycm9yLCBkZWJ1Zyk7Ci0gICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKKyAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CiAgICAgICBnX2ZyZWUgKGRlYnVnKTsKICAgICB9CiAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL2dzdC9pbnRlci9nc3RpbnRlcnZpZGVvc2luay5jIGIvZ3N0L2ludGVyL2dzdGludGVydmlkZW9zaW5rLmMKaW5kZXggYWViY2UyOC4uY2EzNTdkNiAxMDA2NDQKLS0tIGEvZ3N0L2ludGVyL2dzdGludGVydmlkZW9zaW5rLmMKKysrIGIvZ3N0L2ludGVyL2dzdGludGVydmlkZW9zaW5rLmMKQEAgLTI2LDEwICsyNiwxMCBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgaW50ZXJ2aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIGludGVydmlkZW9zaW5rCiAgKiBdfAogICogCi0gKiBUaGUgaW50ZXJ2aWRlb3NpbmsgZWxlbWVudCBjYW5ub3QgYmUgdXNlZCBlZmZlY3RpdmVseSB3aXRoIGdzdC1sYXVuY2gsCisgKiBUaGUgaW50ZXJ2aWRlb3NpbmsgZWxlbWVudCBjYW5ub3QgYmUgdXNlZCBlZmZlY3RpdmVseSB3aXRoIGdzdC1sYXVuY2gtMS4wLAogICogYXMgaXQgcmVxdWlyZXMgYSBzZWNvbmQgcGlwZWxpbmUgaW4gdGhlIGFwcGxpY2F0aW9uIHRvIHNlbmQgdmlkZW8gdG8uCiAgKiBTZWUgdGhlIGdzdGludGVydGVzdC5jIGV4YW1wbGUgaW4gdGhlIGdzdC1wbHVnaW5zLWJhZCBzb3VyY2UgY29kZSBmb3IKICAqIG1vcmUgZGV0YWlscy4KZGlmZiAtLWdpdCBhL2dzdC9pbnRlci9nc3RpbnRlcnZpZGVvc3JjLmMgYi9nc3QvaW50ZXIvZ3N0aW50ZXJ2aWRlb3NyYy5jCmluZGV4IDY1NTNlZDEuLjhjYWI2NDggMTAwNjQ0Ci0tLSBhL2dzdC9pbnRlci9nc3RpbnRlcnZpZGVvc3JjLmMKKysrIGIvZ3N0L2ludGVyL2dzdGludGVydmlkZW9zcmMuYwpAQCAtMjYsMTAgKzI2LDEwIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBpbnRlcnZpZGVvc3JjICEgcXVldWUgISB4dmltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgaW50ZXJ2aWRlb3NyYyAhIHF1ZXVlICEgeHZpbWFnZXNpbmsKICAqIF18CiAgKiAKLSAqIFRoZSBpbnRlcnN1YnNyYyBlbGVtZW50IGNhbm5vdCBiZSB1c2VkIGVmZmVjdGl2ZWx5IHdpdGggZ3N0LWxhdW5jaCwKKyAqIFRoZSBpbnRlcnN1YnNyYyBlbGVtZW50IGNhbm5vdCBiZSB1c2VkIGVmZmVjdGl2ZWx5IHdpdGggZ3N0LWxhdW5jaC0xLjAsCiAgKiBhcyBpdCByZXF1aXJlcyBhIHNlY29uZCBwaXBlbGluZSBpbiB0aGUgYXBwbGljYXRpb24gdG8gc2VuZCBzdWJ0aXRsZXMuCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvaW50ZXJsYWNlL01ha2VmaWxlLmluIGIvZ3N0L2ludGVybGFjZS9NYWtlZmlsZS5pbgppbmRleCAzNTZiNWE2Li43YjhlOTc3IDEwMDY0NAotLS0gYS9nc3QvaW50ZXJsYWNlL01ha2VmaWxlLmluCisrKyBiL2dzdC9pbnRlcmxhY2UvTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNzEsNiArMjcwLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMDgsNiArMzA5LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTYsNyArMzE5LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM1LDggKzMzNyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTMsMTYgKzM1NiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zODgsNiArMzkyLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDEzLDYgKzQxOSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNCw2ICs1MjIsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTI3LDggKzUzNiw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0NCw2ICs1NTEsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjAxLDE2ICs2MTAsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjIsNiArNjczLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Miw2ICs2ODQsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODEsNiArNjk0LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcxOCw3ICs3MzMsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9pbnRlcmxhY2UvZ3N0aW50ZXJsYWNlLmMgYi9nc3QvaW50ZXJsYWNlL2dzdGludGVybGFjZS5jCmluZGV4IDZjZDM2OWIuLjI2OWE4NDcgMTAwNjQ0Ci0tLSBhL2dzdC9pbnRlcmxhY2UvZ3N0aW50ZXJsYWNlLmMKKysrIGIvZ3N0L2ludGVybGFjZS9nc3RpbnRlcmxhY2UuYwpAQCAtMjgsMjMgKzI4LDIzIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgcGF0dGVybj1iYWxsICEgaW50ZXJsYWNlICEgeHZpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyBwYXR0ZXJuPWJhbGwgISBpbnRlcmxhY2UgISB4dmltYWdlc2luawogICogXXwKICAqIFRoaXMgcGlwZWxpbmUgaWxsdXN0cmF0ZXMgdGhlIGNvbWJpbmcgZWZmZWN0cyBjYXVzZWQgYnkgZGlzcGxheWluZwogICogdHdvIGludGVybGFjZWQgZmllbGRzIGFzIG9uZSBwcm9ncmVzc2l2ZSBmcmFtZS4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249L3BhdGgvdG8vZmlsZSAhIGRlY29kZWJpbiAhIHZpZGVvcmF0ZSAhCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPS9wYXRoL3RvL2ZpbGUgISBkZWNvZGViaW4gISB2aWRlb3JhdGUgIQogICogICB2aWRlb3NjYWxlICEgdmlkZW8veC1yYXcsZm9ybWF0PVwoc3RyaW5nXClJNDIwLHdpZHRoPTcyMCxoZWlnaHQ9NDgwLAogICogICBmcmFtZXJhdGU9NjAwMDAvMTAwMSxwaXhlbC1hc3BlY3QtcmF0aW89MTEvMTAgISAKLSAqICAgaW50ZXJsYWNlIHRvcC1maWVsZC1maXJzdD1mYWxzZSAhIC4uLgorICogICBpbnRlcmxhY2UgdG9wLWZpZWxkLWZpcnN0PWZhbHNlICEgYXV0b3ZpZGVvc2luawogICogXXwKICAqIFRoaXMgcGlwZWxpbmUgY29udmVydHMgYSBwcm9ncmVzc2l2ZSB2aWRlbyBzdHJlYW0gaW50byBhbiBpbnRlcmxhY2VkCiAgKiBzdHJlYW0gc3VpdGFibGUgZm9yIHN0YW5kYXJkIGRlZmluaXRpb24gTlRTQy4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyBwYXR0ZXJuPWJhbGwgISB2aWRlby94LXJhdywKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyBwYXR0ZXJuPWJhbGwgISB2aWRlby94LXJhdywKICAqICAgZm9ybWF0PVwoc3RyaW5nXClJNDIwLHdpZHRoPTcyMCxoZWlnaHQ9NDgwLGZyYW1lcmF0ZT0yNDAwMC8xMDAxLAotICogICBwaXhlbC1hc3BlY3QtcmF0aW89MTEvMTAgISBpbnRlcmxhY2UgcGF0dGVybj0yOjMgIQotICogICAuLi4KKyAqICAgcGl4ZWwtYXNwZWN0LXJhdGlvPTExLzEwICEgaW50ZXJsYWNlICEKKyAqICAgYXV0b3ZpZGVvc2luawogICogXXwKICAqIFRoaXMgcGlwZWxpbmUgY29udmVydHMgYSAyNCBmcmFtZXMgcGVyIHNlY29uZCBwcm9ncmVzc2l2ZSBmaWxtIHN0cmVhbSBpbnRvIGEKICAqIDMwMDAwLzEwMDEgMjozOjI6My4uLiBwYXR0ZXJuIHRlbGVjaW5lZCBzdHJlYW0gc3VpdGFibGUgZm9yIGRpc3BsYXlpbmcgZmlsbQpkaWZmIC0tZ2l0IGEvZ3N0L2l2ZnBhcnNlL01ha2VmaWxlLmluIGIvZ3N0L2l2ZnBhcnNlL01ha2VmaWxlLmluCmluZGV4IDRmNDA4MGYuLmFhZjI5YWIgMTAwNjQ0Ci0tLSBhL2dzdC9pdmZwYXJzZS9NYWtlZmlsZS5pbgorKysgYi9nc3QvaXZmcGFyc2UvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvaXZmcGFyc2UvZ3N0aXZmcGFyc2UuYyBiL2dzdC9pdmZwYXJzZS9nc3RpdmZwYXJzZS5jCmluZGV4IDRlM2VhOGIuLmJlYTFlMTkgMTAwNjQ0Ci0tLSBhL2dzdC9pdmZwYXJzZS9nc3RpdmZwYXJzZS5jCisrKyBiL2dzdC9pdmZwYXJzZS9nc3RpdmZwYXJzZS5jCkBAIC0zMzEsMTUgKzMzMSwyMCBAQAogCiAgICAgLyogRGV0ZWN0IHJlc29sdXRpb24gY2hhbmdlcyBvbiBrZXkgZnJhbWVzICovCiAgICAgaWYgKGdzdF9idWZmZXJfbWFwIChmcmFtZS0+b3V0X2J1ZmZlciwgJm1hcCwgR1NUX01BUF9SRUFEKSkgewotICAgICAgZ3VpbnQzMiBmcmFtZV90YWcsIHdpZHRoLCBoZWlnaHQ7CisgICAgICBndWludDMyIHdpZHRoLCBoZWlnaHQ7CiAKLSAgICAgIGZyYW1lX3RhZyA9IEdTVF9SRUFEX1VJTlQyNF9MRSAobWFwLmRhdGEpOwotICAgICAgaWYgKCEoZnJhbWVfdGFnICYgMHgwMSkgJiYgbWFwLnNpemUgPj0gMTApIHsgICAgICAvKiBrZXkgZnJhbWUgKi8KLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoaXZmLCAia2V5IGZyYW1lIGRldGVjdGVkIik7CisgICAgICBpZiAoaXZmLT5mb3VyY2MgPT0gR1NUX01BS0VfRk9VUkNDICgnVicsICdQJywgJzgnLCAnMCcpKSB7CisgICAgICAgIGd1aW50MzIgZnJhbWVfdGFnOworICAgICAgICBmcmFtZV90YWcgPSBHU1RfUkVBRF9VSU5UMjRfTEUgKG1hcC5kYXRhKTsKKyAgICAgICAgaWYgKCEoZnJhbWVfdGFnICYgMHgwMSkgJiYgbWFwLnNpemUgPj0gMTApIHsgICAgLyoga2V5IGZyYW1lICovCisgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoaXZmLCAia2V5IGZyYW1lIGRldGVjdGVkIik7CiAKLSAgICAgICAgd2lkdGggPSBHU1RfUkVBRF9VSU5UMTZfTEUgKG1hcC5kYXRhICsgNikgJiAweDNmZmY7Ci0gICAgICAgIGhlaWdodCA9IEdTVF9SRUFEX1VJTlQxNl9MRSAobWFwLmRhdGEgKyA4KSAmIDB4M2ZmZjsKLSAgICAgICAgZ3N0X2l2Zl9wYXJzZV9zZXRfc2l6ZSAoaXZmLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICB3aWR0aCA9IEdTVF9SRUFEX1VJTlQxNl9MRSAobWFwLmRhdGEgKyA2KSAmIDB4M2ZmZjsKKyAgICAgICAgICBoZWlnaHQgPSBHU1RfUkVBRF9VSU5UMTZfTEUgKG1hcC5kYXRhICsgOCkgJiAweDNmZmY7CisgICAgICAgICAgZ3N0X2l2Zl9wYXJzZV9zZXRfc2l6ZSAoaXZmLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgLyogRml4bWU6IEFkZCB2cDkgZnJhbWUgaGVhZGVyIHBhcnNpbmc/ICovCiAgICAgICB9CiAgICAgICBnc3RfYnVmZmVyX3VubWFwIChmcmFtZS0+b3V0X2J1ZmZlciwgJm1hcCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ3N0L2l2dGMvTWFrZWZpbGUuaW4gYi9nc3QvaXZ0Yy9NYWtlZmlsZS5pbgppbmRleCAxYmJiYzM3Li5mZTkyMzVmIDEwMDY0NAotLS0gYS9nc3QvaXZ0Yy9NYWtlZmlsZS5pbgorKysgYi9nc3QvaXZ0Yy9NYWtlZmlsZS5pbgpAQCAtMTE1LDE2ICsxMTUsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI3Miw2ICsyNzEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMwOSw2ICszMTAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxNyw3ICszMjAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzYsOCArMzM4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NCwxNiArMzU3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM4OSw2ICszOTMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTQsNiArNDIwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE1LDYgKzUyMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MjgsOCArNTM3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ1LDYgKzU1Miw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDIsMTYgKzYxMSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Myw2ICs2NzQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjczLDYgKzY4NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Miw2ICs2OTUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzE5LDcgKzczNCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2l2dGMvZ3N0Y29tYmRldGVjdC5jIGIvZ3N0L2l2dGMvZ3N0Y29tYmRldGVjdC5jCmluZGV4IGY2OWU2NTYuLjIzNTZiOTYgMTAwNjQ0Ci0tLSBhL2dzdC9pdnRjL2dzdGNvbWJkZXRlY3QuYworKysgYi9nc3QvaXZ0Yy9nc3Rjb21iZGV0ZWN0LmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249ZmlsZS5tb3YgISBkZWNvZGViaW4gISBjb21iZGV0ZWN0ICEKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZpbGVzcmMgbG9jYXRpb249ZmlsZS5tb3YgISBkZWNvZGViaW4gISBjb21iZGV0ZWN0ICEKICAqICAgICB4dmltYWdlc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CkBAIC0xNTMsOCArMTUzLDggQEAKICAgICAgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAob3RoZXJjYXBzLCBpKTsKICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzdHJ1Y3R1cmUsICJpbnRlcmxhY2UtbW9kZSIsICZ2YWx1ZSk7CiAgICAgfQotICAgIGdfdmFsdWVfcmVzZXQgKCZ2YWx1ZSk7Ci0gICAgZ192YWx1ZV9yZXNldCAoJnYpOworICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWx1ZSk7CisgICAgZ192YWx1ZV91bnNldCAoJnYpOwogICB9IGVsc2UgewogICAgIGZvciAoaSA9IDA7IGkgPCBnc3RfY2Fwc19nZXRfc2l6ZSAob3RoZXJjYXBzKTsgaSsrKSB7CiAgICAgICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKG90aGVyY2FwcywgaSk7CmRpZmYgLS1naXQgYS9nc3QvaXZ0Yy9nc3RpdnRjLmMgYi9nc3QvaXZ0Yy9nc3RpdnRjLmMKaW5kZXggMDJmMzgyYi4uNmRkMGM4ZCAxMDA2NDQKLS0tIGEvZ3N0L2l2dGMvZ3N0aXZ0Yy5jCisrKyBiL2dzdC9pdnRjL2dzdGl2dGMuYwpAQCAtMjcsOCArMjcsOCBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjIHBhdHRlcm49YmFsbCAhIHZpZGVvL3gtcmF3LGZyYW1lcmF0ZT0yNC8xICEKLSAqICAgICBpbnRlcmxhY2UgZmllbGQtcGF0dGVybj0zOjIgIQorICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjIHBhdHRlcm49YmFsbCAhIHZpZGVvL3gtcmF3LGZyYW1lcmF0ZT0yNC8xICEKKyAqICAgICBpbnRlcmxhY2UgIQogICogICAgIGl2dGMgISB2aWRlby94LXJhdyxmcmFtZXJhdGU9MjQvMSAhIGZha2VzaW5rCiAgKiBdfAogICoKQEAgLTE2OSw4ICsxNjksOCBAQAogICAgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHN0cnVjdHVyZSwgImludGVybGFjZS1tb2RlIiwgJnZhbHVlKTsKICAgICAgIGdzdF9zdHJ1Y3R1cmVfcmVtb3ZlX2ZpZWxkIChzdHJ1Y3R1cmUsICJmcmFtZXJhdGUiKTsKICAgICB9Ci0gICAgZ192YWx1ZV9yZXNldCAoJnZhbHVlKTsKLSAgICBnX3ZhbHVlX3Jlc2V0ICgmdik7CisgICAgZ192YWx1ZV91bnNldCAoJnZhbHVlKTsKKyAgICBnX3ZhbHVlX3Vuc2V0ICgmdik7CiAgIH0gZWxzZSB7CiAgICAgZm9yIChpID0gMDsgaSA8IGdzdF9jYXBzX2dldF9zaXplIChvdGhlcmNhcHMpOyBpKyspIHsKICAgICAgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAob3RoZXJjYXBzLCBpKTsKZGlmZiAtLWdpdCBhL2dzdC9qcDJrZGVjaW1hdG9yL01ha2VmaWxlLmluIGIvZ3N0L2pwMmtkZWNpbWF0b3IvTWFrZWZpbGUuaW4KaW5kZXggMDVkNjA3My4uNTAwZmI1MyAxMDA2NDQKLS0tIGEvZ3N0L2pwMmtkZWNpbWF0b3IvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2pwMmtkZWNpbWF0b3IvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvanAya2RlY2ltYXRvci9nc3RqcDJrZGVjaW1hdG9yLmMgYi9nc3QvanAya2RlY2ltYXRvci9nc3RqcDJrZGVjaW1hdG9yLmMKaW5kZXggNzhjMWZkNC4uY2I5NWNjMCAxMDA2NDQKLS0tIGEvZ3N0L2pwMmtkZWNpbWF0b3IvZ3N0anAya2RlY2ltYXRvci5jCisrKyBiL2dzdC9qcDJrZGVjaW1hdG9yL2dzdGpwMmtkZWNpbWF0b3IuYwpAQCAtMjUsNyArMjUsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTEgISBqcDJrZW5jICEgXAorICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTEgISBqcDJrZW5jICEgXAogICogICBnc3RqcDJrZGVjaW1hdG9yIG1heC1kZWNvbXBvc2l0aW9uLWxldmVscz0yICEganAya2RlYyAhIFwKICAqICAgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwKZGlmZiAtLWdpdCBhL2dzdC9qcGVnZm9ybWF0L01ha2VmaWxlLmluIGIvZ3N0L2pwZWdmb3JtYXQvTWFrZWZpbGUuaW4KaW5kZXggYWM2MjBmYi4uMWNmODhjOCAxMDA2NDQKLS0tIGEvZ3N0L2pwZWdmb3JtYXQvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2pwZWdmb3JtYXQvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvanBlZ2Zvcm1hdC9nc3RqaWZtdXguYyBiL2dzdC9qcGVnZm9ybWF0L2dzdGppZm11eC5jCmluZGV4IDcxOTA2N2EuLjNhNmI2ZmQgMTAwNjQ0Ci0tLSBhL2dzdC9qcGVnZm9ybWF0L2dzdGppZm11eC5jCisrKyBiL2dzdC9qcGVnZm9ybWF0L2dzdGppZm11eC5jCkBAIC0zMSw3ICszMSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MSAhIGpwZWdlbmMgISBqaWZtdXggISBmaWxlc2luayBsb2NhdGlvbj0uLi4KKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xICEganBlZ2VuYyAhIGppZm11eCAhIGZpbGVzaW5rIGxvY2F0aW9uPS4uLgogICogXXwKICAqIFRoZSBhYm92ZSBwaXBlbGluZSByZW5kZXJzIGEgZnJhbWUsIGVuY29kZXMgdG8ganBlZywgYWRkcyBtZXRhZGF0YSBhbmQgd3JpdGVzCiAgKiBpdCB0byBkaXNrLgpAQCAtNDYsOCArNDYsOCBAQAogZmlsZSB0cmFpbGVyOiBFT0kKIAogdGVzdHM6Ci1nc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xICEganBlZ2VuYyAhIGppZm11eCAhIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3QxLmpwZWcKLWdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTEgISBqcGVnZW5jICEgdGFnaW5qZWN0IHRhZ3M9ImNvbW1lbnQ9XCJ0ZXN0IGltYWdlXCIiICEgamlmbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249dGVzdDIuanBlZworZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTEgISBqcGVnZW5jICEgamlmbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249dGVzdDEuanBlZworZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTEgISBqcGVnZW5jICEgdGFnaW5qZWN0IHRhZ3M9ImNvbW1lbnQ9dGVzdCBpbWFnZSIgISBqaWZtdXggISBmaWxlc2luayBsb2NhdGlvbj10ZXN0Mi5qcGVnCiAqLwogCiAjaWZkZWYgSEFWRV9DT05GSUdfSApkaWZmIC0tZ2l0IGEvZ3N0L2pwZWdmb3JtYXQvZ3N0anBlZ3BhcnNlLmMgYi9nc3QvanBlZ2Zvcm1hdC9nc3RqcGVncGFyc2UuYwppbmRleCBkNTViODRmLi43N2U1M2E2IDEwMDY0NAotLS0gYS9nc3QvanBlZ2Zvcm1hdC9nc3RqcGVncGFyc2UuYworKysgYi9nc3QvanBlZ2Zvcm1hdC9nc3RqcGVncGFyc2UuYwpAQCAtMzMsNyArMzMsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgc291cGh0dHBzcmMgbG9jYXRpb249Li4uICEganBlZ3BhcnNlICEgbWF0cm9za2FtdXggISBmaWxlc2luayBsb2NhdGlvbj0uLi4KKyAqIGdzdC1sYXVuY2gtMS4wIC12IHNvdXBodHRwc3JjIGxvY2F0aW9uPS4uLiAhIGpwZWdwYXJzZSAhIG1hdHJvc2thbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249Li4uCiAgKiBdfAogICogVGhlIGFib3ZlIHBpcGVsaW5lIGZldGNoZXMgYSBtb3Rpb24gSlBFRyBzdHJlYW0gZnJvbSBhbiBJUCBjYW1lcmEgb3ZlcgogICogSFRUUCBhbmQgc3RvcmVzIGl0IGluIGEgbWF0cm9za2EgZmlsZS4KZGlmZiAtLWdpdCBhL2dzdC9saWJyZmIvTWFrZWZpbGUuaW4gYi9nc3QvbGlicmZiL01ha2VmaWxlLmluCmluZGV4IDM4YTFhYjkuLmYyYmNmMTAgMTAwNjQ0Ci0tLSBhL2dzdC9saWJyZmIvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2xpYnJmYi9NYWtlZmlsZS5pbgpAQCAtMTE4LDE2ICsxMTgsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yODQsNiArMjgzLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMjEsNiArMzIyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjksNyArMzMyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ4LDggKzM1MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjYsMTYgKzM2OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MDEsNiArNDA1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI2LDYgKzQzMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNyw2ICs1MzUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTQwLDggKzU0OSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1Nyw2ICs1NjQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjE0LDE2ICs2MjMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzUsNiArNjg2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4NSw2ICs2OTcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTQsNiArNzA3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTczMSw3ICs3NDYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9saWJyZmIvcmZiZGVjb2Rlci5jIGIvZ3N0L2xpYnJmYi9yZmJkZWNvZGVyLmMKaW5kZXggODhmM2IwMy4uYmQyMjVhZCAxMDA2NDQKLS0tIGEvZ3N0L2xpYnJmYi9yZmJkZWNvZGVyLmMKKysrIGIvZ3N0L2xpYnJmYi9yZmJkZWNvZGVyLmMKQEAgLTg5LDggKzg5LDcgQEAKIAogICBnX2NsZWFyX2Vycm9yICgmZGVjb2Rlci0+ZXJyb3IpOwogCi0gIGlmIChkZWNvZGVyLT5kYXRhKQotICAgIGdfZnJlZSAoZGVjb2Rlci0+ZGF0YSk7CisgIGdfZnJlZSAoZGVjb2Rlci0+ZGF0YSk7CiAKICAgZ19mcmVlIChkZWNvZGVyKTsKIH0KQEAgLTIzNCw4ICsyMzMsNyBAQAogICBnX3JldHVybl92YWxfaWZfZmFpbCAobGVuID4gMCwgTlVMTCk7CiAKICAgaWYgKEdfVU5MSUtFTFkgKGxlbiA+IGRlY29kZXItPmRhdGFfbGVuKSkgewotICAgIGlmIChkZWNvZGVyLT5kYXRhKQotICAgICAgZ19mcmVlIChkZWNvZGVyLT5kYXRhKTsKKyAgICBnX2ZyZWUgKGRlY29kZXItPmRhdGEpOwogICAgIGRlY29kZXItPmRhdGEgPSBnX21hbGxvYyAobGVuKTsKICAgICBkZWNvZGVyLT5kYXRhX2xlbiA9IGxlbjsKICAgfQpkaWZmIC0tZ2l0IGEvZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5hbSBiL2dzdC9saXZlYWRkZXIvTWFrZWZpbGUuYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZjVkNDQuLjAwMDAwMDAKLS0tIGEvZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5hbQorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdGxpdmVhZGRlci5sYQotCi1saWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUyA9IGxpdmVhZGRlci5jCi1saWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpCi1saWJnc3RsaXZlYWRkZXJfbGFfTElCQUREID0gXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpCi1saWJnc3RsaXZlYWRkZXJfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQotbGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCi0KLW5vaW5zdF9IRUFERVJTID0gbGl2ZWFkZGVyLmgKZGlmZiAtLWdpdCBhL2dzdC9saXZlYWRkZXIvbGl2ZWFkZGVyLmMgYi9nc3QvbGl2ZWFkZGVyL2xpdmVhZGRlci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjYwNDE5Li4wMDAwMDAwCi0tLSBhL2dzdC9saXZlYWRkZXIvbGl2ZWFkZGVyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTM4ICswLDAgQEAKLS8qCi0gKiBHU3RyZWFtZXIKLSAqCi0gKiAgQ29weXJpZ2h0IDIwMTIgQ29sbGFib3JhIEx0ZAotICogIENvcHlyaWdodCAyMDA4IE5va2lhIENvcnBvcmF0aW9uCi0gKiAgIEBhdXRob3I6IE9saXZpZXIgQ3JldGUgPG9saXZpZXIuY3JldGVAY29sbGFib3JhLmNvLnVrPgotICoKLSAqIFdpdGggcGFydHMgY29waWVkIGZyb20gdGhlIGFkZGVyIHBsdWdpbiB3aGljaCBpcwotICogQ29weXJpZ2h0IChDKSAxOTk5LDIwMDAgRXJpayBXYWx0aGluc2VuIDxvbWVnYUBjc2Uub2dpLmVkdT4KLSAqICAgICAgICAgICAgICAgICAgICAyMDAxIFRob21hcyA8dGhvbWFzQGFwZXN0YWFydC5vcmc+Ci0gKiAgICAgICAgICAgICAgIDIwMDUsMjAwNiBXaW0gVGF5bWFucyA8d2ltQGZsdWVuZG8uY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKLSAqCi0gKi8KLS8qKgotICogU0VDVElPTjplbGVtZW50LWxpdmVhZGRlcgotICogQHNlZV9hbHNvOiBhZGRlcgotICoKLSAqIFRoZSBsaXZlIGFkZGVyIGFsbG93cyB0byBtaXggc2V2ZXJhbCBzdHJlYW1zIGludG8gb25lIGJ5IGFkZGluZyB0aGUgZGF0YS4KLSAqIE1peGVkIGRhdGEgaXMgY2xhbXBlZCB0byB0aGUgbWluL21heCB2YWx1ZXMgb2YgdGhlIGRhdGEgZm9ybWF0LgotICoKLSAqIFVubGlrZSB0aGUgYWRkZXIsIHRoZSBsaXZlYWRkZXIgbWl4ZXMgdGhlIHN0cmVhbXMgYWNjb3JkaW5nIHRoZSB0aGVpcgotICogdGltZXN0YW1wcyBhbmQgd2FpdHMgZm9yIHNvbWUgbWlsbGktc2Vjb25kcyBiZWZvcmUgdHJ5aW5nIGRvaW5nIHRoZSBtaXhpbmcuCi0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSAibGl2ZWFkZGVyLmgiCi0KLSNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jZGVmaW5lIERFRkFVTFRfTEFURU5DWV9NUyA2MAotCi1HU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChsaXZlX2FkZGVyX2RlYnVnKTsKLSNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIChsaXZlX2FkZGVyX2RlYnVnKQotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X2xpdmVfYWRkZXJfc2lua190ZW1wbGF0ZSA9Ci1HU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmtfJXUiLAotICAgIEdTVF9QQURfU0lOSywKLSAgICBHU1RfUEFEX1JFUVVFU1QsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfQVVESU9fQ0FQU19NQUtFICgieyBTOCwgVTgsICIKLSAgICAgICAgICAgIEdTVF9BVURJT19ORSAoUzE2KSAiLCIgR1NUX0FVRElPX05FIChVMTYpICIsIgotICAgICAgICAgICAgR1NUX0FVRElPX05FIChTMzIpICIsIiBHU1RfQVVESU9fTkUgKFUzMikgIiwiCi0gICAgICAgICAgICBHU1RfQVVESU9fTkUgKEYzMikgIiwiIEdTVF9BVURJT19ORSAoRjY0KSAifSIpKQotICAgICk7Ci0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfbGl2ZV9hZGRlcl9zcmNfdGVtcGxhdGUgPQotR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAotICAgIEdTVF9QQURfU1JDLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX0FVRElPX0NBUFNfTUFLRSAoInsgUzgsIFU4LCAiCi0gICAgICAgICAgICBHU1RfQVVESU9fTkUgKFMxNikgIiwiIEdTVF9BVURJT19ORSAoVTE2KSAiLCIKLSAgICAgICAgICAgIEdTVF9BVURJT19ORSAoUzMyKSAiLCIgR1NUX0FVRElPX05FIChVMzIpICIsIgotICAgICAgICAgICAgR1NUX0FVRElPX05FIChGMzIpICIsIiBHU1RfQVVESU9fTkUgKEY2NCkgIn0iKSkKLSAgICApOwotCi0vKiBWYWx2ZSBzaWduYWxzIGFuZCBhcmdzICovCi1lbnVtCi17Ci0gIC8qIEZJTEwgTUUgKi8KLSAgTEFTVF9TSUdOQUwKLX07Ci0KLWVudW0KLXsKLSAgUFJPUF8wLAotICBQUk9QX0xBVEVOQ1ksCi19OwotCi10eXBlZGVmIHN0cnVjdCBfR3N0TGl2ZUFkZGVyUGFkUHJpdmF0ZQotewotICBHc3RTZWdtZW50IHNlZ21lbnQ7Ci0gIGdib29sZWFuIGVvczsKLQotICBHc3RDbG9ja1RpbWUgZXhwZWN0ZWRfdGltZXN0YW1wOwotCi19IEdzdExpdmVBZGRlclBhZFByaXZhdGU7Ci0KLUdfREVGSU5FX1RZUEUgKEdzdExpdmVBZGRlciwgZ3N0X2xpdmVfYWRkZXIsIEdTVF9UWVBFX0VMRU1FTlQpOwotCi1zdGF0aWMgdm9pZCBnc3RfbGl2ZV9hZGRlcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7Ci1zdGF0aWMgdm9pZAotZ3N0X2xpdmVfYWRkZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAotICAgIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotc3RhdGljIHZvaWQKLWdzdF9saXZlX2FkZGVyX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKLSAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLQotc3RhdGljIEdzdFBhZCAqZ3N0X2xpdmVfYWRkZXJfcmVxdWVzdF9uZXdfcGFkIChHc3RFbGVtZW50ICogZWxlbWVudCwKLSAgICBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLCBjb25zdCBnY2hhciAqIG5hbWUsIGNvbnN0IEdzdENhcHMgKiBjYXBzKTsKLXN0YXRpYyB2b2lkIGdzdF9saXZlX2FkZGVyX3JlbGVhc2VfcGFkIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0UGFkICogcGFkKTsKLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotZ3N0X2xpdmVfYWRkZXJfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7Ci0KLXN0YXRpYyBnYm9vbGVhbiBnc3RfbGl2ZV9hZGRlcl9zZXRjYXBzIChHc3RMaXZlQWRkZXIgKiBhZGRlciwgR3N0UGFkICogcGFkLAotICAgIEdzdENhcHMgKiBjYXBzKTsKLXN0YXRpYyBHc3RDYXBzICpnc3RfbGl2ZV9hZGRlcl9zaW5rX2dldGNhcHMgKEdzdExpdmVBZGRlciAqIGFkZGVyLCBHc3RQYWQgKiBwYWQsCi0gICAgR3N0Q2FwcyAqIGZpbHRlcik7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2xpdmVfYWRkZXJfc3JjX2FjdGl2YXRlX21vZGUgKEdzdFBhZCAqIHBhZCwKLSAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdFBhZE1vZGUgbW9kZSwgZ2Jvb2xlYW4gYWN0aXZlKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfbGl2ZV9hZGRlcl9zcmNfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdEV2ZW50ICogZXZlbnQpOwotCi1zdGF0aWMgdm9pZCBnc3RfbGl2ZV9hZGRlcl9sb29wIChncG9pbnRlciBkYXRhKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfbGl2ZV9hZGRlcl9zcmNfcXVlcnkgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdFF1ZXJ5ICogcXVlcnkpOwotc3RhdGljIGdib29sZWFuIGdzdF9saXZlX2FkZGVyX3NpbmtfcXVlcnkgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdFF1ZXJ5ICogcXVlcnkpOwotc3RhdGljIGdib29sZWFuIGdzdF9saXZlX2FkZGVyX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdEV2ZW50ICogZXZlbnQpOwotCi0KLXN0YXRpYyB2b2lkIHJlc2V0X3BhZF9wcml2YXRlIChHc3RQYWQgKiBwYWQpOwotCi0vKiBjbGlwcGluZyB2ZXJzaW9ucyAqLwotI2RlZmluZSBNQUtFX0ZVTkMobmFtZSx0eXBlLHR0eXBlLG1pbixtYXgpICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyB2b2lkIG5hbWUgKHR5cGUgKm91dCwgdHlwZSAqaW4sIGdpbnQgYnl0ZXMpIHsgICAgICAgICAgICBcCi0gIGdpbnQgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmb3IgKGkgPSAwOyBpIDwgYnl0ZXMgLyBzaXplb2YgKHR5cGUpOyBpKyspICAgICAgICAgICAgICAgICAgIFwKLSAgICBvdXRbaV0gPSBDTEFNUCAoKHR0eXBlKW91dFtpXSArICh0dHlwZSlpbltpXSwgbWluLCBtYXgpOyAgICBcCi19Ci0KLS8qIG5vbi1jbGlwcGluZyB2ZXJzaW9ucyAoZm9yIGZsb2F0KSAqLwotI2RlZmluZSBNQUtFX0ZVTkNfTkMobmFtZSx0eXBlLHR0eXBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyB2b2lkIG5hbWUgKHR5cGUgKm91dCwgdHlwZSAqaW4sIGdpbnQgYnl0ZXMpIHsgICAgICAgICAgICBcCi0gIGdpbnQgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmb3IgKGkgPSAwOyBpIDwgYnl0ZXMgLyBzaXplb2YgKHR5cGUpOyBpKyspICAgICAgICAgICAgICAgICAgIFwKLSAgICBvdXRbaV0gPSAodHR5cGUpb3V0W2ldICsgKHR0eXBlKWluW2ldOyAgICAgICAgICAgICAgICAgICAgICBcCi19Ci0KLS8qICpJTkRFTlQtT0ZGKiAqLwotTUFLRV9GVU5DIChhZGRfaW50MzIsIGdpbnQzMiwgZ2ludDY0LCBHX01JTklOVDMyLCBHX01BWElOVDMyKQotTUFLRV9GVU5DIChhZGRfaW50MTYsIGdpbnQxNiwgZ2ludDMyLCBHX01JTklOVDE2LCBHX01BWElOVDE2KQotTUFLRV9GVU5DIChhZGRfaW50OCwgZ2ludDgsIGdpbnQxNiwgR19NSU5JTlQ4LCBHX01BWElOVDgpCi1NQUtFX0ZVTkMgKGFkZF91aW50MzIsIGd1aW50MzIsIGd1aW50NjQsIDAsIEdfTUFYVUlOVDMyKQotTUFLRV9GVU5DIChhZGRfdWludDE2LCBndWludDE2LCBndWludDMyLCAwLCBHX01BWFVJTlQxNikKLU1BS0VfRlVOQyAoYWRkX3VpbnQ4LCBndWludDgsIGd1aW50MTYsIDAsIEdfTUFYVUlOVDgpCi1NQUtFX0ZVTkNfTkMgKGFkZF9mbG9hdDY0LCBnZG91YmxlLCBnZG91YmxlKQotTUFLRV9GVU5DX05DIChhZGRfZmxvYXQzMiwgZ2Zsb2F0LCBnZmxvYXQpCi0vKiAqSU5ERU5ULU9OKiAqLwotCi0KLXN0YXRpYyB2b2lkCi1nc3RfbGl2ZV9hZGRlcl9jbGFzc19pbml0IChHc3RMaXZlQWRkZXJDbGFzcyAqIGtsYXNzKQotewotICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwotICBHc3RFbGVtZW50Q2xhc3MgKmdzdGVsZW1lbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOwotCi0gIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChsaXZlX2FkZGVyX2RlYnVnLCAibGl2ZWFkZGVyIiwgMCwgIkxpdmUgQWRkZXIiKTsKLQotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X2xpdmVfYWRkZXJfc3JjX3RlbXBsYXRlKSk7Ci0gIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCi0gICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfbGl2ZV9hZGRlcl9zaW5rX3RlbXBsYXRlKSk7Ci0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGdzdGVsZW1lbnRfY2xhc3MsICJMaXZlIEFkZGVyIGVsZW1lbnQiLAotICAgICAgIkdlbmVyaWMvQXVkaW8iLAotICAgICAgIk1peGVzIGxpdmUvZGlzY29udGludW91cyBhdWRpbyBzdHJlYW1zIiwKLSAgICAgICJPbGl2aWVyIENyZXRlIDxvbGl2aWVyLmNyZXRlQGNvbGxhYm9yYS5jby51az4iKTsKLQotICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9saXZlX2FkZGVyX2ZpbmFsaXplOwotICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfbGl2ZV9hZGRlcl9zZXRfcHJvcGVydHk7Ci0gIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9saXZlX2FkZGVyX2dldF9wcm9wZXJ0eTsKLQotICBnc3RlbGVtZW50X2NsYXNzLT5yZXF1ZXN0X25ld19wYWQgPSBnc3RfbGl2ZV9hZGRlcl9yZXF1ZXN0X25ld19wYWQ7Ci0gIGdzdGVsZW1lbnRfY2xhc3MtPnJlbGVhc2VfcGFkID0gZ3N0X2xpdmVfYWRkZXJfcmVsZWFzZV9wYWQ7Ci0gIGdzdGVsZW1lbnRfY2xhc3MtPmNoYW5nZV9zdGF0ZSA9IGdzdF9saXZlX2FkZGVyX2NoYW5nZV9zdGF0ZTsKLQotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0xBVEVOQ1ksCi0gICAgICBnX3BhcmFtX3NwZWNfdWludCAoImxhdGVuY3kiLCAiQnVmZmVyaW5nIGxhdGVuY3kiLAotICAgICAgICAgICJBbW91bnQgb2YgZGF0YSB0byBidWZmZXIgKGluIG1pbGxpc2Vjb25kcykiLAotICAgICAgICAgIDAsIEdfTUFYVUlOVCwgREVGQVVMVF9MQVRFTkNZX01TLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2xpdmVfYWRkZXJfaW5pdCAoR3N0TGl2ZUFkZGVyICogYWRkZXIpCi17Ci0gIGFkZGVyLT5zcmNwYWQgPQotICAgICAgZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZnc3RfbGl2ZV9hZGRlcl9zcmNfdGVtcGxhdGUsICJzcmMiKTsKLSAgZ3N0X3BhZF9zZXRfcXVlcnlfZnVuY3Rpb24gKGFkZGVyLT5zcmNwYWQsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2xpdmVfYWRkZXJfc3JjX3F1ZXJ5KSk7Ci0gIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChhZGRlci0+c3JjcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9saXZlX2FkZGVyX3NyY19ldmVudCkpOwotICBnc3RfcGFkX3NldF9hY3RpdmF0ZW1vZGVfZnVuY3Rpb24gKGFkZGVyLT5zcmNwYWQsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2xpdmVfYWRkZXJfc3JjX2FjdGl2YXRlX21vZGUpKTsKLSAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKGFkZGVyKSwgYWRkZXItPnNyY3BhZCk7Ci0KLSAgYWRkZXItPnBhZGNvdW50ID0gMDsKLSAgYWRkZXItPmZ1bmMgPSBOVUxMOwotICBnX2NvbmRfaW5pdCAoJmFkZGVyLT5ub3RfZW1wdHlfY29uZCk7Ci0KLSAgYWRkZXItPm5leHRfdGltZXN0YW1wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLQotICBhZGRlci0+bGF0ZW5jeV9tcyA9IERFRkFVTFRfTEFURU5DWV9NUzsKLQotICBhZGRlci0+YnVmZmVycyA9IGdfcXVldWVfbmV3ICgpOwotfQotCi0KLXN0YXRpYyB2b2lkCi1nc3RfbGl2ZV9hZGRlcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKLXsKLSAgR3N0TGl2ZUFkZGVyICphZGRlciA9IEdTVF9MSVZFX0FEREVSIChvYmplY3QpOwotCi0gIGdfY29uZF9jbGVhciAoJmFkZGVyLT5ub3RfZW1wdHlfY29uZCk7Ci0KLSAgZ19xdWV1ZV9mb3JlYWNoIChhZGRlci0+YnVmZmVycywgKEdGdW5jKSBnc3RfbWluaV9vYmplY3RfdW5yZWYsIE5VTEwpOwotICB3aGlsZSAoZ19xdWV1ZV9wb3BfaGVhZCAoYWRkZXItPmJ1ZmZlcnMpKSB7Ci0gIH0KLSAgZ19xdWV1ZV9mcmVlIChhZGRlci0+YnVmZmVycyk7Ci0KLSAgZ19saXN0X2ZyZWUgKGFkZGVyLT5zaW5rcGFkcyk7Ci0KLSAgR19PQkpFQ1RfQ0xBU1MgKGdzdF9saXZlX2FkZGVyX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwotfQotCi0KLXN0YXRpYyB2b2lkCi1nc3RfbGl2ZV9hZGRlcl9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCi0gICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLXsKLSAgR3N0TGl2ZUFkZGVyICphZGRlciA9IEdTVF9MSVZFX0FEREVSIChvYmplY3QpOwotCi0gIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9MQVRFTkNZOgotICAgIHsKLSAgICAgIGd1aW50NjQgbmV3X2xhdGVuY3ksIG9sZF9sYXRlbmN5OwotCi0gICAgICBuZXdfbGF0ZW5jeSA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKLQotICAgICAgR1NUX09CSkVDVF9MT0NLIChhZGRlcik7Ci0gICAgICBvbGRfbGF0ZW5jeSA9IGFkZGVyLT5sYXRlbmN5X21zOwotICAgICAgYWRkZXItPmxhdGVuY3lfbXMgPSBuZXdfbGF0ZW5jeTsKLSAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci0KLSAgICAgIC8qIHBvc3QgbWVzc2FnZSBpZiBsYXRlbmN5IGNoYW5nZWQsIHRoaXMgd2lsbCBpbmZvcm0gdGhlIHBhcmVudCBwaXBlbGluZQotICAgICAgICogdGhhdCBhIGxhdGVuY3kgcmVjb25maWd1cmF0aW9uIGlzIHBvc3NpYmxlL25lZWRlZC4gKi8KLSAgICAgIGlmIChuZXdfbGF0ZW5jeSAhPSBvbGRfbGF0ZW5jeSkgewotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgImxhdGVuY3kgY2hhbmdlZCB0bzogJSIgR1NUX1RJTUVfRk9STUFULAotICAgICAgICAgICAgR1NUX1RJTUVfQVJHUyAobmV3X2xhdGVuY3kpKTsKLQotICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UX0NBU1QgKGFkZGVyKSwKLSAgICAgICAgICAgIGdzdF9tZXNzYWdlX25ld19sYXRlbmN5IChHU1RfT0JKRUNUX0NBU1QgKGFkZGVyKSkpOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotCi1zdGF0aWMgdm9pZAotZ3N0X2xpdmVfYWRkZXJfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAotICAgIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIEdzdExpdmVBZGRlciAqYWRkZXIgPSBHU1RfTElWRV9BRERFUiAob2JqZWN0KTsKLQotICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfTEFURU5DWToKLSAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIGFkZGVyLT5sYXRlbmN5X21zKTsKLSAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KLQotLyogd2UgY2FuIG9ubHkgYWNjZXB0IGNhcHMgdGhhdCB3ZSBhbmQgZG93bnN0cmVhbSBjYW4gaGFuZGxlLiAqLwotc3RhdGljIEdzdENhcHMgKgotZ3N0X2xpdmVfYWRkZXJfc2lua19nZXRjYXBzIChHc3RMaXZlQWRkZXIgKiBhZGRlciwgR3N0UGFkICogcGFkLAotICAgIEdzdENhcHMgKiBmaWx0ZXIpCi17Ci0gIEdzdENhcHMgKnJlc3VsdCwgKnBlZXJjYXBzLCAqc2lua2NhcHM7Ci0KLSAgLyogZ2V0IHRoZSBkb3duc3RyZWFtIHBvc3NpYmxlIGNhcHMgKi8KLSAgcGVlcmNhcHMgPSBnc3RfcGFkX3BlZXJfcXVlcnlfY2FwcyAoYWRkZXItPnNyY3BhZCwgZmlsdGVyKTsKLSAgLyogZ2V0IHRoZSBhbGxvd2VkIGNhcHMgb24gdGhpcyBzaW5rcGFkLCB3ZSB1c2UgdGhlIGZpeGVkIGNhcHMgZnVuY3Rpb24gc28KLSAgICogdGhhdCBpdCBkb2VzIG5vdCBjYWxsIHJlY3Vyc2l2ZWx5IGluIHRoaXMgZnVuY3Rpb24uICovCi0gIHNpbmtjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChwYWQpOwotICBpZiAoIXNpbmtjYXBzKQotICAgIHNpbmtjYXBzID0gZ3N0X3BhZF9nZXRfcGFkX3RlbXBsYXRlX2NhcHMgKHBhZCk7Ci0gIGlmIChwZWVyY2FwcykgewotICAgIC8qIGlmIHRoZSBwZWVyIGhhcyBjYXBzLCBpbnRlcnNlY3QgKi8KLSAgICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgImludGVyc2VjdGluZyBwZWVyIGFuZCB0ZW1wbGF0ZSBjYXBzIik7Ci0gICAgcmVzdWx0ID0gZ3N0X2NhcHNfaW50ZXJzZWN0IChwZWVyY2Fwcywgc2lua2NhcHMpOwotICAgIGdzdF9jYXBzX3VucmVmIChzaW5rY2Fwcyk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYgKHBlZXJjYXBzKTsKLSAgfSBlbHNlIHsKLSAgICAvKiB0aGUgcGVlciBoYXMgbm8gY2FwcyAob3IgdGhlcmUgaXMgbm8gcGVlciksIGp1c3QgdXNlIHRoZSBhbGxvd2VkIGNhcHMKLSAgICAgKiBvZiB0aGlzIHNpbmtwYWQuICovCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJubyBwZWVyIGNhcHMsIHVzaW5nIHNpbmtjYXBzIik7Ci0gICAgcmVzdWx0ID0gc2lua2NhcHM7Ci0gIH0KLQotICByZXR1cm4gcmVzdWx0OwotfQotCi1zdHJ1Y3QgU2V0Q2Fwc0l0ZXJDdHgKLXsKLSAgR3N0UGFkICpwYWQ7Ci0gIEdzdENhcHMgKmNhcHM7Ci0gIGdib29sZWFuIGFsbF92YWxpZDsKLX07Ci0KLXN0YXRpYyB2b2lkCi1jaGVja19vdGhlcl9jYXBzIChjb25zdCBHVmFsdWUgKiBpdGVtLCBncG9pbnRlciB1c2VyX2RhdGEpCi17Ci0gIEdzdFBhZCAqb3RoZXJwYWQgPSBHU1RfUEFEIChnX3ZhbHVlX2dldF9vYmplY3QgKGl0ZW0pKTsKLSAgc3RydWN0IFNldENhcHNJdGVyQ3R4ICpjdHggPSB1c2VyX2RhdGE7Ci0KLSAgaWYgKG90aGVycGFkID09IGN0eC0+cGFkKQotICAgIHJldHVybjsKLQotICBpZiAoIWdzdF9wYWRfcGVlcl9xdWVyeV9hY2NlcHRfY2FwcyAob3RoZXJwYWQsIGN0eC0+Y2FwcykpCi0gICAgY3R4LT5hbGxfdmFsaWQgPSBGQUxTRTsKLX0KLQotc3RhdGljIHZvaWQKLXNldF9vdGhlcl9jYXBzIChjb25zdCBHVmFsdWUgKiBpdGVtLCBncG9pbnRlciB1c2VyX2RhdGEpCi17Ci0gIEdzdFBhZCAqb3RoZXJwYWQgPSBHU1RfUEFEIChnX3ZhbHVlX2dldF9vYmplY3QgKGl0ZW0pKTsKLSAgc3RydWN0IFNldENhcHNJdGVyQ3R4ICpjdHggPSB1c2VyX2RhdGE7Ci0KLSAgaWYgKG90aGVycGFkID09IGN0eC0+cGFkKQotICAgIHJldHVybjsKLQotICBpZiAoIWdzdF9wYWRfc2V0X2NhcHMgKG90aGVycGFkLCBjdHgtPmNhcHMpKQotICAgIGN0eC0+YWxsX3ZhbGlkID0gRkFMU0U7Ci19Ci0KLS8qIHRoZSBmaXJzdCBjYXBzIHdlIHJlY2VpdmUgb24gYW55IG9mIHRoZSBzaW5rcGFkcyB3aWxsIGRlZmluZSB0aGUgY2FwcyBmb3IgYWxsCi0gKiB0aGUgb3RoZXIgc2lua3BhZHMgYmVjYXVzZSB3ZSBjYW4gb25seSBtaXggc3RyZWFtcyB3aXRoIHRoZSBzYW1lIGNhcHMuCi0gKiAqLwotc3RhdGljIGdib29sZWFuCi1nc3RfbGl2ZV9hZGRlcl9zZXRjYXBzIChHc3RMaXZlQWRkZXIgKiBhZGRlciwgR3N0UGFkICogcGFkLCBHc3RDYXBzICogY2FwcykKLXsKLSAgR3N0SXRlcmF0b3IgKml0ZXI7Ci0gIHN0cnVjdCBTZXRDYXBzSXRlckN0eCBjdHg7Ci0KLSAgR1NUX0xPR19PQkpFQ1QgKGFkZGVyLCAic2V0dGluZyBjYXBzIG9uIHBhZCAlcCwlcyB0byAlIiBHU1RfUFRSX0ZPUk1BVCwgcGFkLAotICAgICAgR1NUX1BBRF9OQU1FIChwYWQpLCBjYXBzKTsKLQotICAvKiBGSVhNRSwgc2VlIGlmIHRoZSBvdGhlciBwYWRzIGNhbiBhY2NlcHQgdGhlIGZvcm1hdC4gQWxzbyBsb2NrIHRoZQotICAgKiBmb3JtYXQgb24gdGhlIG90aGVyIHBhZHMgdG8gdGhpcyBuZXcgZm9ybWF0LiAqLwotICBpdGVyID0gZ3N0X2VsZW1lbnRfaXRlcmF0ZV9zaW5rX3BhZHMgKEdTVF9FTEVNRU5UIChhZGRlcikpOwotICBjdHgucGFkID0gcGFkOwotICBjdHguY2FwcyA9IGNhcHM7Ci0gIGN0eC5hbGxfdmFsaWQgPSBUUlVFOwotICB3aGlsZSAoZ3N0X2l0ZXJhdG9yX2ZvcmVhY2ggKGl0ZXIsIGNoZWNrX290aGVyX2NhcHMsICZjdHgpID09Ci0gICAgICBHU1RfSVRFUkFUT1JfUkVTWU5DKSB7Ci0gICAgY3R4LmFsbF92YWxpZCA9IFRSVUU7Ci0gICAgZ3N0X2l0ZXJhdG9yX3Jlc3luYyAoaXRlcik7Ci0gIH0KLSAgaWYgKCFjdHguYWxsX3ZhbGlkKSB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChhZGRlciwgIkNhcHMgYXJlIG5vdCBhY2NlcHRhYmxlIGJ5IG90aGVyIHNpbmtwYWRzIik7Ci0gICAgZ3N0X2l0ZXJhdG9yX2ZyZWUgKGl0ZXIpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIHdoaWxlIChnc3RfaXRlcmF0b3JfZm9yZWFjaCAoaXRlciwgc2V0X290aGVyX2NhcHMsICZjdHgpID09Ci0gICAgICBHU1RfSVRFUkFUT1JfUkVTWU5DKSB7Ci0gICAgY3R4LmFsbF92YWxpZCA9IFRSVUU7Ci0gICAgZ3N0X2l0ZXJhdG9yX3Jlc3luYyAoaXRlcik7Ci0gIH0KLSAgZ3N0X2l0ZXJhdG9yX2ZyZWUgKGl0ZXIpOwotCi0gIGlmICghY3R4LmFsbF92YWxpZCkgewotICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoYWRkZXIsICJDb3VsZCBub3Qgc2V0IGNhcHMgb24gdGhlIG90aGVyIHNpbmsgcGFkcyIpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIGlmICghZ3N0X3BhZF9zZXRfY2FwcyAoYWRkZXItPnNyY3BhZCwgY2FwcykpIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGFkZGVyLCAiQ291bGQgbm90IHNldCBjYXBzIGRvd25zdHJlYW0iKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBHU1RfT0JKRUNUX0xPQ0sgKGFkZGVyKTsKLSAgLyogcGFyc2UgY2FwcyBub3cgKi8KLSAgaWYgKCFnc3RfYXVkaW9faW5mb19mcm9tX2NhcHMgKCZhZGRlci0+aW5mbywgY2FwcykpCi0gICAgZ290byBub3Rfc3VwcG9ydGVkOwotCi0gIGlmIChHU1RfQVVESU9fSU5GT19JU19JTlRFR0VSICgmYWRkZXItPmluZm8pKSB7Ci0gICAgc3dpdGNoIChHU1RfQVVESU9fSU5GT19XSURUSCAoJmFkZGVyLT5pbmZvKSkgewotICAgICAgY2FzZSA4OgotICAgICAgICBhZGRlci0+ZnVuYyA9IEdTVF9BVURJT19JTkZPX0lTX1NJR05FRCAoJmFkZGVyLT5pbmZvKSA/Ci0gICAgICAgICAgICAoR3N0TGl2ZUFkZGVyRnVuY3Rpb24pIGFkZF9pbnQ4IDogKEdzdExpdmVBZGRlckZ1bmN0aW9uKSBhZGRfdWludDg7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAxNjoKLSAgICAgICAgYWRkZXItPmZ1bmMgPSBHU1RfQVVESU9fSU5GT19JU19TSUdORUQgKCZhZGRlci0+aW5mbykgPwotICAgICAgICAgICAgKEdzdExpdmVBZGRlckZ1bmN0aW9uKSBhZGRfaW50MTYgOiAoR3N0TGl2ZUFkZGVyRnVuY3Rpb24pCi0gICAgICAgICAgICBhZGRfdWludDE2OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMzI6Ci0gICAgICAgIGFkZGVyLT5mdW5jID0gR1NUX0FVRElPX0lORk9fSVNfU0lHTkVEICgmYWRkZXItPmluZm8pID8KLSAgICAgICAgICAgIChHc3RMaXZlQWRkZXJGdW5jdGlvbikgYWRkX2ludDMyIDogKEdzdExpdmVBZGRlckZ1bmN0aW9uKQotICAgICAgICAgICAgYWRkX3VpbnQzMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBnb3RvIG5vdF9zdXBwb3J0ZWQ7Ci0gICAgfQotICB9IGVsc2UgaWYgKEdTVF9BVURJT19JTkZPX0lTX0ZMT0FUICgmYWRkZXItPmluZm8pKSB7Ci0gICAgc3dpdGNoIChHU1RfQVVESU9fSU5GT19XSURUSCAoJmFkZGVyLT5pbmZvKSkgewotICAgICAgY2FzZSAzMjoKLSAgICAgICAgYWRkZXItPmZ1bmMgPSAoR3N0TGl2ZUFkZGVyRnVuY3Rpb24pIGFkZF9mbG9hdDMyOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgNjQ6Ci0gICAgICAgIGFkZGVyLT5mdW5jID0gKEdzdExpdmVBZGRlckZ1bmN0aW9uKSBhZGRfZmxvYXQ2NDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBnb3RvIG5vdF9zdXBwb3J0ZWQ7Ci0gICAgfQotICB9IGVsc2UgewotICAgIGdvdG8gbm90X3N1cHBvcnRlZDsKLSAgfQotCi0gIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci0gIHJldHVybiBUUlVFOwotCi0gIC8qIEVSUk9SUyAqLwotbm90X3N1cHBvcnRlZDoKLSAgewotICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJ1bnN1cHBvcnRlZCBmb3JtYXQgc2V0IGFzIGNhcHMiKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKLWdzdF9saXZlX2FkZGVyX2ZsdXNoX3N0YXJ0IChHc3RMaXZlQWRkZXIgKiBhZGRlcikKLXsKLSAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJEaXNhYmxpbmcgcG9wIG9uIHF1ZXVlIik7Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChhZGRlcik7Ci0gIC8qIG1hcmsgb3Vyc2VsdmVzIGFzIGZsdXNoaW5nICovCi0gIGFkZGVyLT5zcmNyZXN1bHQgPSBHU1RfRkxPV19GTFVTSElORzsKLQotICAvKiBFbXB0eSB0aGUgcXVldWUgKi8KLSAgZ19xdWV1ZV9mb3JlYWNoIChhZGRlci0+YnVmZmVycywgKEdGdW5jKSBnc3RfbWluaV9vYmplY3RfdW5yZWYsIE5VTEwpOwotICB3aGlsZSAoZ19xdWV1ZV9wb3BfaGVhZCAoYWRkZXItPmJ1ZmZlcnMpKTsKLQotICAvKiB1bmxvY2sgY2xvY2ssIHdlIGp1c3QgdW5zY2hlZHVsZSwgdGhlIGVudHJ5IHdpbGwgYmUgcmVsZWFzZWQgYnkgdGhlCi0gICAqIGxvY2tpbmcgc3RyZWFtaW5nIHRocmVhZC4gKi8KLSAgaWYgKGFkZGVyLT5jbG9ja19pZCkKLSAgICBnc3RfY2xvY2tfaWRfdW5zY2hlZHVsZSAoYWRkZXItPmNsb2NrX2lkKTsKLQotICBnX2NvbmRfYnJvYWRjYXN0ICgmYWRkZXItPm5vdF9lbXB0eV9jb25kKTsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfbGl2ZV9hZGRlcl9zcmNfYWN0aXZhdGVfbW9kZSAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCi0gICAgR3N0UGFkTW9kZSBtb2RlLCBnYm9vbGVhbiBhY3RpdmUpCi17Ci0gIEdzdExpdmVBZGRlciAqYWRkZXIgPSBHU1RfTElWRV9BRERFUiAocGFyZW50KTsKLSAgZ2Jvb2xlYW4gcmVzdWx0ID0gVFJVRTsKLQotICBpZiAobW9kZSA9PSBHU1RfUEFEX01PREVfUFVMTCkKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgaWYgKGFjdGl2ZSkgewotICAgIC8qIE1hcmsgYXMgbm9uIGZsdXNoaW5nICovCi0gICAgR1NUX09CSkVDVF9MT0NLIChhZGRlcik7Ci0gICAgYWRkZXItPnNyY3Jlc3VsdCA9IEdTVF9GTE9XX09LOwotICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci0KLSAgICAvKiBzdGFydCBwdXNoaW5nIG91dCBidWZmZXJzICovCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJTdGFydGluZyB0YXNrIG9uIHNyY3BhZCIpOwotICAgIGdzdF9wYWRfc3RhcnRfdGFzayAoYWRkZXItPnNyY3BhZCwKLSAgICAgICAgKEdzdFRhc2tGdW5jdGlvbikgZ3N0X2xpdmVfYWRkZXJfbG9vcCwgYWRkZXIsIE5VTEwpOwotICB9IGVsc2UgewotICAgIC8qIG1ha2Ugc3VyZSBhbGwgZGF0YSBwcm9jZXNzaW5nIHN0b3BzIEFTQVAgKi8KLSAgICBnc3RfbGl2ZV9hZGRlcl9mbHVzaF9zdGFydCAoYWRkZXIpOwotCi0gICAgLyogTk9URSB0aGlzIHdpbGwgaGFyZGxvY2sgaWYgdGhlIHN0YXRlIGNoYW5nZSBpcyBjYWxsZWQgZnJvbSB0aGUgc3JjIHBhZAotICAgICAqIHRhc2sgdGhyZWFkIGJlY2F1c2Ugd2Ugd2lsbCBfam9pbigpIHRoZSB0aHJlYWQuICovCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJTdG9wcGluZyB0YXNrIG9uIHNyY3BhZCIpOwotICAgIHJlc3VsdCA9IGdzdF9wYWRfc3RvcF90YXNrIChwYWQpOwotICB9Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfbGl2ZV9hZGRlcl9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCkKLXsKLSAgR3N0TGl2ZUFkZGVyICphZGRlciA9IEdTVF9MSVZFX0FEREVSIChwYXJlbnQpOwotICBHc3RMaXZlQWRkZXJQYWRQcml2YXRlICpwYWRwcml2YXRlID0gTlVMTDsKLSAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKLQotICBwYWRwcml2YXRlID0gZ3N0X3BhZF9nZXRfZWxlbWVudF9wcml2YXRlIChwYWQpOwotCi0gIGlmICghcGFkcHJpdmF0ZSkKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgR1NUX0xPR19PQkpFQ1QgKGFkZGVyLCAicmVjZWl2ZWQgJXMiLCBHU1RfRVZFTlRfVFlQRV9OQU1FIChldmVudCkpOwotCi0gIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgewotICAgIGNhc2UgR1NUX0VWRU5UX0NBUFM6Ci0gICAgewotICAgICAgR3N0Q2FwcyAqY2FwczsKLQotICAgICAgZ3N0X2V2ZW50X3BhcnNlX2NhcHMgKGV2ZW50LCAmY2Fwcyk7Ci0gICAgICByZXQgPSBnc3RfbGl2ZV9hZGRlcl9zZXRjYXBzIChhZGRlciwgcGFkLCBjYXBzKTsKLSAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgR1NUX0VWRU5UX1NFR01FTlQ6Ci0gICAgewotICAgICAgY29uc3QgR3N0U2VnbWVudCAqc2VnbWVudDsKLSAgICAgIEdzdFNlZ21lbnQgbGl2ZXNlZ21lbnQ7Ci0KLSAgICAgIGdzdF9ldmVudF9wYXJzZV9zZWdtZW50IChldmVudCwgJnNlZ21lbnQpOwotCi0gICAgICAvKiB3ZSBuZWVkIHRpbWUgZm9yIG5vdyAqLwotICAgICAgaWYgKHNlZ21lbnQtPmZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUpCi0gICAgICAgIGdvdG8gbmV3c2VnX3dyb25nX2Zvcm1hdDsKLQotICAgICAgLyogbm93IGNvbmZpZ3VyZSB0aGUgdmFsdWVzLCB3ZSBuZWVkIHRoZXNlIHRvIHRpbWUgdGhlIHJlbGVhc2Ugb2YgdGhlCi0gICAgICAgKiBidWZmZXJzIG9uIHRoZSBzcmNwYWQuICovCi0gICAgICBHU1RfT0JKRUNUX0xPQ0sgKGFkZGVyKTsKLSAgICAgIGdzdF9zZWdtZW50X2NvcHlfaW50byAoc2VnbWVudCwgJnBhZHByaXZhdGUtPnNlZ21lbnQpOwotICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLSAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwotCi0gICAgICBnc3Rfc2VnbWVudF9pbml0ICgmbGl2ZXNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSk7Ci0gICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKGFkZGVyLT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfc2VnbWVudCAoJmxpdmVzZWdtZW50KSk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RBUlQ6Ci0gICAgICBnc3RfbGl2ZV9hZGRlcl9mbHVzaF9zdGFydCAoYWRkZXIpOwotICAgICAgcmV0ID0gZ3N0X3BhZF9wdXNoX2V2ZW50IChhZGRlci0+c3JjcGFkLCBldmVudCk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVE9QOgotICAgICAgR1NUX09CSkVDVF9MT0NLIChhZGRlcik7Ci0gICAgICBhZGRlci0+bmV4dF90aW1lc3RhbXAgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotICAgICAgcmVzZXRfcGFkX3ByaXZhdGUgKHBhZCk7Ci0gICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotICAgICAgcmV0ID0gZ3N0X3BhZF9wdXNoX2V2ZW50IChhZGRlci0+c3JjcGFkLCBldmVudCk7Ci0gICAgICByZXQgJj0KLSAgICAgICAgICBnc3RfbGl2ZV9hZGRlcl9zcmNfYWN0aXZhdGVfbW9kZSAoYWRkZXItPnNyY3BhZCwgR1NUX09CSkVDVCAoYWRkZXIpLAotICAgICAgICAgIEdTVF9QQURfTU9ERV9QVVNILCBUUlVFKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX0VWRU5UX0VPUzoKLSAgICB7Ci0gICAgICBHU1RfT0JKRUNUX0xPQ0sgKGFkZGVyKTsKLQotICAgICAgcmV0ID0gYWRkZXItPnNyY3Jlc3VsdCA9PSBHU1RfRkxPV19PSzsKLSAgICAgIGlmIChyZXQgJiYgIXBhZHByaXZhdGUtPmVvcykgewotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgInF1ZXVpbmcgRU9TIik7Ci0gICAgICAgIHBhZHByaXZhdGUtPmVvcyA9IFRSVUU7Ci0gICAgICAgIGdfY29uZF9icm9hZGNhc3QgKCZhZGRlci0+bm90X2VtcHR5X2NvbmQpOwotICAgICAgfSBlbHNlIGlmIChwYWRwcml2YXRlLT5lb3MpIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJkcm9wcGluZyBFT1MsIHdlIGFyZSBhbHJlYWR5IEVPUyIpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJkcm9wcGluZyBFT1MsIHJlYXNvbiAlcyIsCi0gICAgICAgICAgICBnc3RfZmxvd19nZXRfbmFtZSAoYWRkZXItPnNyY3Jlc3VsdCkpOwotICAgICAgfQotCi0gICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotCi0gICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgcmV0ID0gZ3N0X3BhZF9wdXNoX2V2ZW50IChhZGRlci0+c3JjcGFkLCBldmVudCk7Ci0gICAgICBicmVhazsKLSAgfQotCi1kb25lOgotCi0gIHJldHVybiByZXQ7Ci0KLSAgLyogRVJST1JTICovCi1uZXdzZWdfd3JvbmdfZm9ybWF0OgotICB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJyZWNlaXZlZCBub24gVElNRSBzZWdtZW50Iik7Ci0gICAgcmV0ID0gRkFMU0U7Ci0gICAgZ290byBkb25lOwotICB9Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2xpdmVfYWRkZXJfcXVlcnlfcG9zX2R1ciAoR3N0TGl2ZUFkZGVyICogYWRkZXIsIEdzdEZvcm1hdCBmb3JtYXQsCi0gICAgZ2Jvb2xlYW4gcG9zaXRpb24sIGdpbnQ2NCAqIG91dHZhbHVlKQotewotICBHVmFsdWUgaXRlbSA9IHsgMCB9OwotICBnaW50NjQgbWF4ID0gR19NSU5JTlQ2NDsKLSAgZ2Jvb2xlYW4gcmVzID0gVFJVRTsKLSAgR3N0SXRlcmF0b3IgKml0OwotICBnYm9vbGVhbiBkb25lID0gRkFMU0U7Ci0KLSAgaXQgPSBnc3RfZWxlbWVudF9pdGVyYXRlX3NpbmtfcGFkcyAoR1NUX0VMRU1FTlRfQ0FTVCAoYWRkZXIpKTsKLSAgd2hpbGUgKCFkb25lKSB7Ci0gICAgc3dpdGNoIChnc3RfaXRlcmF0b3JfbmV4dCAoaXQsICZpdGVtKSkgewotICAgICAgY2FzZSBHU1RfSVRFUkFUT1JfRE9ORToKLSAgICAgICAgZG9uZSA9IFRSVUU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHU1RfSVRFUkFUT1JfT0s6Ci0gICAgICB7Ci0gICAgICAgIEdzdFBhZCAqcGFkID0gR1NUX1BBRF9DQVNUIChnX3ZhbHVlX2dldF9vYmplY3QgKCZpdGVtKSk7Ci0gICAgICAgIGdpbnQ2NCB2YWx1ZTsKLSAgICAgICAgZ2Jvb2xlYW4gY3VycmVzOwotCi0gICAgICAgIC8qIGFzayBzaW5rIHBlZXIgZm9yIGR1cmF0aW9uICovCi0gICAgICAgIGlmIChwb3NpdGlvbikKLSAgICAgICAgICBjdXJyZXMgPSBnc3RfcGFkX3BlZXJfcXVlcnlfcG9zaXRpb24gKHBhZCwgZm9ybWF0LCAmdmFsdWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgY3VycmVzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X2R1cmF0aW9uIChwYWQsIGZvcm1hdCwgJnZhbHVlKTsKLQotICAgICAgICAvKiB0YWtlIG1heCBmcm9tIGFsbCB2YWxpZCByZXR1cm4gdmFsdWVzICovCi0gICAgICAgIC8qIE9ubHkgaWYgdGhlIGZvcm1hdCBpcyB0aGUgb25lIHdlIHJlcXVlc3RlZCwgb3RoZXJ3aXNlIGlnbm9yZSBpdCA/Ci0gICAgICAgICAqLwotCi0gICAgICAgIGlmIChjdXJyZXMpIHsKLSAgICAgICAgICByZXMgJj0gY3VycmVzOwotCi0gICAgICAgICAgLyogdmFsaWQgdW5rbm93biBsZW5ndGgsIHN0b3Agc2VhcmNoaW5nICovCi0gICAgICAgICAgaWYgKHZhbHVlID09IC0xKSB7Ci0gICAgICAgICAgICBtYXggPSB2YWx1ZTsKLSAgICAgICAgICAgIGRvbmUgPSBUUlVFOwotICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPiBtYXgpIHsKLSAgICAgICAgICAgIG1heCA9IHZhbHVlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBnX3ZhbHVlX3Jlc2V0ICgmaXRlbSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgY2FzZSBHU1RfSVRFUkFUT1JfUkVTWU5DOgotICAgICAgICBtYXggPSAtMTsKLSAgICAgICAgcmVzID0gVFJVRTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXMgPSBGQUxTRTsKLSAgICAgICAgZG9uZSA9IFRSVUU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgfQotCi0gIGdfdmFsdWVfdW5zZXQgKCZpdGVtKTsKLSAgZ3N0X2l0ZXJhdG9yX2ZyZWUgKGl0KTsKLQotICBpZiAocmVzKQotICAgICpvdXR2YWx1ZSA9IG1heDsKLQotICByZXR1cm4gcmVzOwotfQotCi0vKiBGSVhNRToKLSAqCi0gKiBXaGVuIHdlIGFkZCBhIG5ldyBzdHJlYW0gKG9yIHJlbW92ZSBhIHN0cmVhbSkgdGhlIGR1cmF0aW9uIG1pZ2h0Ci0gKiBhbHNvIGJlY29tZSBpbnZhbGlkIGFnYWluIGFuZCB3ZSBuZWVkIHRvIHBvc3QgYSBuZXcgRFVSQVRJT04KLSAqIG1lc3NhZ2UgdG8gbm90aWZ5IHRoaXMgZmFjdCB0byB0aGUgcGFyZW50LgotICogRm9yIG5vdyB3ZSB0YWtlIHRoZSBtYXggb2YgYWxsIHRoZSB1cHN0cmVhbSBlbGVtZW50cyBzbyB0aGUgc2ltcGxlCi0gKiBjYXNlcyB3b3JrIGF0IGxlYXN0IHNvbWV3aGF0LgotICovCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9saXZlX2FkZGVyX3F1ZXJ5X2R1cmF0aW9uIChHc3RMaXZlQWRkZXIgKiBhZGRlciwgR3N0UXVlcnkgKiBxdWVyeSkKLXsKLSAgR3N0Rm9ybWF0IGZvcm1hdDsKLSAgZ2ludDY0IG1heDsKLSAgZ2Jvb2xlYW4gcmVzOwotCi0gIC8qIHBhcnNlIGZvcm1hdCAqLwotICBnc3RfcXVlcnlfcGFyc2VfZHVyYXRpb24gKHF1ZXJ5LCAmZm9ybWF0LCBOVUxMKTsKLQotICByZXMgPSBnc3RfbGl2ZV9hZGRlcl9xdWVyeV9wb3NfZHVyIChhZGRlciwgZm9ybWF0LCBGQUxTRSwgJm1heCk7Ci0KLSAgaWYgKHJlcykgewotICAgIC8qIGFuZCBzdG9yZSB0aGUgbWF4ICovCi0gICAgZ3N0X3F1ZXJ5X3NldF9kdXJhdGlvbiAocXVlcnksIGZvcm1hdCwgbWF4KTsKLSAgfQotCi0gIHJldHVybiByZXM7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2xpdmVfYWRkZXJfcXVlcnlfcG9zaXRpb24gKEdzdExpdmVBZGRlciAqIGFkZGVyLCBHc3RRdWVyeSAqIHF1ZXJ5KQotewotICBHc3RGb3JtYXQgZm9ybWF0OwotICBnaW50NjQgbWF4OwotICBnYm9vbGVhbiByZXM7Ci0KLSAgLyogcGFyc2UgZm9ybWF0ICovCi0gIGdzdF9xdWVyeV9wYXJzZV9wb3NpdGlvbiAocXVlcnksICZmb3JtYXQsIE5VTEwpOwotCi0gIHJlcyA9IGdzdF9saXZlX2FkZGVyX3F1ZXJ5X3Bvc19kdXIgKGFkZGVyLCBmb3JtYXQsIFRSVUUsICZtYXgpOwotCi0gIGlmIChyZXMpIHsKLSAgICAvKiBhbmQgc3RvcmUgdGhlIG1heCAqLwotICAgIGdzdF9xdWVyeV9zZXRfcG9zaXRpb24gKHF1ZXJ5LCBmb3JtYXQsIG1heCk7Ci0gIH0KLQotICByZXR1cm4gcmVzOwotfQotCi0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfbGl2ZV9hZGRlcl9zcmNfcXVlcnkgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RRdWVyeSAqIHF1ZXJ5KQotewotICBHc3RMaXZlQWRkZXIgKmFkZGVyID0gR1NUX0xJVkVfQURERVIgKHBhcmVudCk7Ci0gIGdib29sZWFuIHJlcyA9IEZBTFNFOwotCi0gIHN3aXRjaCAoR1NUX1FVRVJZX1RZUEUgKHF1ZXJ5KSkgewotICAgIGNhc2UgR1NUX1FVRVJZX0xBVEVOQ1k6Ci0gICAgewotICAgICAgLyogV2UgbmVlZCB0byBzZW5kIHRoZSBxdWVyeSB1cHN0cmVhbSBhbmQgYWRkIHRoZSByZXR1cm5lZCBsYXRlbmN5IHRvIG91cgotICAgICAgICogb3duICovCi0gICAgICByZXMgPSBnc3RfcGFkX3F1ZXJ5X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBxdWVyeSk7Ci0KLSAgICAgIGlmIChyZXMpIHsKLSAgICAgICAgR3N0Q2xvY2tUaW1lIG15X2xhdGVuY3kgPSBhZGRlci0+bGF0ZW5jeV9tcyAqIEdTVF9NU0VDT05EOwotICAgICAgICBHc3RDbG9ja1RpbWUgbWluX2xhdGVuY3ksIG1heF9sYXRlbmN5OwotICAgICAgICBnYm9vbGVhbiBsaXZlOwotCi0gICAgICAgIGdzdF9xdWVyeV9wYXJzZV9sYXRlbmN5IChxdWVyeSwgJmxpdmUsICZtaW5fbGF0ZW5jeSwgJm1heF9sYXRlbmN5KTsKLQotICAgICAgICBHU1RfT0JKRUNUX0xPQ0sgKGFkZGVyKTsKLSAgICAgICAgYWRkZXItPnBlZXJfbGF0ZW5jeSA9IG1pbl9sYXRlbmN5OwotICAgICAgICBtaW5fbGF0ZW5jeSArPSBteV9sYXRlbmN5OwotICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotCi0gICAgICAgIC8qIE1ha2Ugc3VyZSB3ZSBkb24ndCByaXNrIGFuIG92ZXJmbG93ICovCi0gICAgICAgIGlmIChtYXhfbGF0ZW5jeSA8IEdfTUFYVUlOVDY0IC0gbXlfbGF0ZW5jeSkKLSAgICAgICAgICBtYXhfbGF0ZW5jeSArPSBteV9sYXRlbmN5OwotICAgICAgICBlbHNlCi0gICAgICAgICAgbWF4X2xhdGVuY3kgPSBHX01BWFVJTlQ2NDsKLSAgICAgICAgZ3N0X3F1ZXJ5X3NldF9sYXRlbmN5IChxdWVyeSwgVFJVRSwgbWluX2xhdGVuY3ksIG1heF9sYXRlbmN5KTsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJDYWxjdWxhdGVkIHRvdGFsIGxhdGVuY3kgOiBtaW4gJSIKLSAgICAgICAgICAgIEdTVF9USU1FX0ZPUk1BVCAiIG1heCAlIiBHU1RfVElNRV9GT1JNQVQsCi0gICAgICAgICAgICBHU1RfVElNRV9BUkdTIChtaW5fbGF0ZW5jeSksIEdTVF9USU1FX0FSR1MgKG1heF9sYXRlbmN5KSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBHU1RfUVVFUllfRFVSQVRJT046Ci0gICAgICByZXMgPSBnc3RfbGl2ZV9hZGRlcl9xdWVyeV9kdXJhdGlvbiAoYWRkZXIsIHF1ZXJ5KTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1FVRVJZX1BPU0lUSU9OOgotICAgICAgcmVzID0gZ3N0X2xpdmVfYWRkZXJfcXVlcnlfcG9zaXRpb24gKGFkZGVyLCBxdWVyeSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgcmVzID0gZ3N0X3BhZF9xdWVyeV9kZWZhdWx0IChwYWQsIHBhcmVudCwgcXVlcnkpOwotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9saXZlX2FkZGVyX3NpbmtfcXVlcnkgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RRdWVyeSAqIHF1ZXJ5KQotewotICBHc3RMaXZlQWRkZXIgKmFkZGVyID0gR1NUX0xJVkVfQURERVIgKHBhcmVudCk7Ci0gIGdib29sZWFuIHJlczsKLQotICBzd2l0Y2ggKEdTVF9RVUVSWV9UWVBFIChxdWVyeSkpIHsKLSAgICBjYXNlIEdTVF9RVUVSWV9DQVBTOgotICAgIHsKLSAgICAgIEdzdENhcHMgKmZpbHRlcjsKLSAgICAgIEdzdENhcHMgKnJlc3VsdDsKLQotICAgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NhcHMgKHF1ZXJ5LCAmZmlsdGVyKTsKLSAgICAgIHJlc3VsdCA9IGdzdF9saXZlX2FkZGVyX3NpbmtfZ2V0Y2FwcyAoYWRkZXIsIHBhZCwgZmlsdGVyKTsKLSAgICAgIGdzdF9xdWVyeV9zZXRfY2Fwc19yZXN1bHQgKHF1ZXJ5LCByZXN1bHQpOwotICAgICAgZ3N0X2NhcHNfdW5yZWYgKHJlc3VsdCk7Ci0gICAgICByZXMgPSBUUlVFOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICByZXMgPSBnc3RfcGFkX3F1ZXJ5X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBxdWVyeSk7Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiByZXM7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZm9yd2FyZF9ldmVudF9mdW5jIChjb25zdCBHVmFsdWUgKiBpdGVtLCBHVmFsdWUgKiByZXQsIGdwb2ludGVyIHVzZXJfZGF0YSkKLXsKLSAgR3N0UGFkICpwYWQgPSBHU1RfUEFEIChnX3ZhbHVlX2dldF9vYmplY3QgKGl0ZW0pKTsKLSAgR3N0RXZlbnQgKmV2ZW50ID0gdXNlcl9kYXRhOwotCi0gIGdzdF9ldmVudF9yZWYgKGV2ZW50KTsKLSAgR1NUX0xPR19PQkpFQ1QgKHBhZCwgIkFib3V0IHRvIHNlbmQgZXZlbnQgJXMiLCBHU1RfRVZFTlRfVFlQRV9OQU1FIChldmVudCkpOwotICBpZiAoIWdzdF9wYWRfcHVzaF9ldmVudCAocGFkLCBldmVudCkpIHsKLSAgICBnX3ZhbHVlX3NldF9ib29sZWFuIChyZXQsIEZBTFNFKTsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHBhZCwgIlNlbmRpbmcgZXZlbnQgICVwICglcykgZmFpbGVkLiIsCi0gICAgICAgIGV2ZW50LCBHU1RfRVZFTlRfVFlQRV9OQU1FIChldmVudCkpOwotICB9IGVsc2UgewotICAgIEdTVF9MT0dfT0JKRUNUIChwYWQsICJTZW50IGV2ZW50ICAlcCAoJXMpLiIsCi0gICAgICAgIGV2ZW50LCBHU1RfRVZFTlRfVFlQRV9OQU1FIChldmVudCkpOwotICB9Ci0gIHJldHVybiBUUlVFOwotfQotCi0vKiBmb3J3YXJkcyB0aGUgZXZlbnQgdG8gYWxsIHNpbmtwYWRzLCB0YWtlcyBvd25lcnNoaXAgb2YgdGhlCi0gKiBldmVudAotICoKLSAqIFJldHVybnM6IFRSVUUgaWYgdGhlIGV2ZW50IGNvdWxkIGJlIGZvcndhcmRlZCBvbiBhbGwKLSAqIHNpbmtwYWRzLgotICovCi1zdGF0aWMgZ2Jvb2xlYW4KLWZvcndhcmRfZXZlbnQgKEdzdExpdmVBZGRlciAqIGFkZGVyLCBHc3RFdmVudCAqIGV2ZW50KQotewotICBHc3RJdGVyYXRvciAqaXQ7Ci0gIEdWYWx1ZSB2cmV0ID0geyAwIH07Ci0KLSAgR1NUX0xPR19PQkpFQ1QgKGFkZGVyLCAiRm9yd2FyZGluZyBldmVudCAlcCAoJXMpIiwgZXZlbnQsCi0gICAgICBHU1RfRVZFTlRfVFlQRV9OQU1FIChldmVudCkpOwotCi0gIGdfdmFsdWVfaW5pdCAoJnZyZXQsIEdfVFlQRV9CT09MRUFOKTsKLSAgZ192YWx1ZV9zZXRfYm9vbGVhbiAoJnZyZXQsIFRSVUUpOwotICBpdCA9IGdzdF9lbGVtZW50X2l0ZXJhdGVfc2lua19wYWRzIChHU1RfRUxFTUVOVF9DQVNUIChhZGRlcikpOwotICBnc3RfaXRlcmF0b3JfZm9sZCAoaXQsIGZvcndhcmRfZXZlbnRfZnVuYywgJnZyZXQsIGV2ZW50KTsKLSAgZ3N0X2l0ZXJhdG9yX2ZyZWUgKGl0KTsKLQotICByZXR1cm4gZ192YWx1ZV9nZXRfYm9vbGVhbiAoJnZyZXQpOwotfQotCi0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2xpdmVfYWRkZXJfc3JjX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCkKLXsKLSAgR3N0TGl2ZUFkZGVyICphZGRlciA9IEdTVF9MSVZFX0FEREVSIChwYXJlbnQpOwotICBnYm9vbGVhbiByZXN1bHQ7Ci0KLSAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7Ci0gICAgY2FzZSBHU1RfRVZFTlRfUU9TOgotICAgICAgLyogVE9ETyA6IFFvUyBtaWdodCBiZSB0cmlja3kgKi8KLSAgICAgIHJlc3VsdCA9IEZBTFNFOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfRVZFTlRfTkFWSUdBVElPTjoKLSAgICAgIC8qIFRPRE8gOiBuYXZpZ2F0aW9uIGlzIHJhdGhlciBwb2ludGxlc3MuICovCi0gICAgICByZXN1bHQgPSBGQUxTRTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAvKiBqdXN0IGZvcndhcmQgdGhlIHJlc3QgZm9yIG5vdyAqLwotICAgICAgcmVzdWx0ID0gZm9yd2FyZF9ldmVudCAoYWRkZXIsIGV2ZW50KTsKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIGd1aW50Ci1nc3RfbGl2ZV9hZGRlcl9sZW5ndGhfZnJvbV9kdXJhdGlvbiAoR3N0TGl2ZUFkZGVyICogYWRkZXIsCi0gICAgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uKQotewotICBndWludDY0IHJldCA9IEdTVF9BVURJT19JTkZPX0JQRiAoJmFkZGVyLT5pbmZvKSAqCi0gICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50X3JvdW5kIChkdXJhdGlvbiwKLSAgICAgIEdTVF9BVURJT19JTkZPX1JBVEUgKCZhZGRlci0+aW5mbyksIEdTVF9TRUNPTkQpOwotCi0gIHJldHVybiAoZ3VpbnQpIHJldDsKLX0KLQotc3RhdGljIEdzdENsb2NrVGltZQotZ3N0X2xpdmVfYWRkZXJfbGVuZ3RoX3RvX2R1cmF0aW9uIChHc3RMaXZlQWRkZXIgKiBhZGRlciwgZ3VpbnQgc2l6ZSkKLXsKLSAgcmV0dXJuIEdTVF9GUkFNRVNfVE9fQ0xPQ0tfVElNRSAoKHNpemUgLwotICAgICAgICAgIEdTVF9BVURJT19JTkZPX0JQRiAoJmFkZGVyLT5pbmZvKSksCi0gICAgICBHU1RfQVVESU9fSU5GT19SQVRFICgmYWRkZXItPmluZm8pKTsKLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9saXZlX2FkZGVyX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmZmVyKQotewotICBHc3RMaXZlQWRkZXIgKmFkZGVyID0gR1NUX0xJVkVfQURERVIgKHBhcmVudCk7Ci0gIEdzdExpdmVBZGRlclBhZFByaXZhdGUgKnBhZHByaXZhdGUgPSBOVUxMOwotICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOwotICBHTGlzdCAqaXRlbSA9IE5VTEw7Ci0gIEdzdENsb2NrVGltZSBza2lwID0gMDsKLSAgZ2ludDY0IGRyaWZ0ID0gMDsgICAgICAgICAgICAgLyogUG9zaXRpdmUgaWYgbmV3IGJ1ZmZlciBhZnRlciBvbGQgYnVmZmVyICovCi0gIGdzaXplIGJ1ZmZlcl9zaXplID0gMDsKLSAgZ3NpemUgc3ViYnVmZmVyX3NpemUgPSAwOwotICBnc2l6ZSBvZmZzZXQgPSAwOwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotCi0gIHJldCA9IGFkZGVyLT5zcmNyZXN1bHQ7Ci0KLSAgR1NUX0RFQlVHICgiSW5jb21pbmcgYnVmZmVyIHRpbWU6JSIgR1NUX1RJTUVfRk9STUFUICIgZHVyYXRpb246JSIKLSAgICAgIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikpLAotICAgICAgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKSkpOwotCi0gIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgIlBhc3Npbmcgbm9uLW9rIHJlc3VsdCBmcm9tIHNyYzogJXMiLAotICAgICAgICBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSk7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKLSAgICBnb3RvIG91dDsKLSAgfQotCi0gIHBhZHByaXZhdGUgPSBnc3RfcGFkX2dldF9lbGVtZW50X3ByaXZhdGUgKHBhZCk7Ci0KLSAgaWYgKCFwYWRwcml2YXRlKSB7Ci0gICAgcmV0ID0gR1NUX0ZMT1dfTk9UX0xJTktFRDsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwotICAgIGdvdG8gb3V0OwotICB9Ci0KLSAgaWYgKHBhZHByaXZhdGUtPmVvcykgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAiUmVjZWl2ZWQgYnVmZmVyIGFmdGVyIEVPUyIpOwotICAgIHJldCA9IEdTVF9GTE9XX0VPUzsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwotICAgIGdvdG8gb3V0OwotICB9Ci0KLSAgaWYgKCFHU1RfQlVGRkVSX1RJTUVTVEFNUF9JU19WQUxJRCAoYnVmZmVyKSkKLSAgICBnb3RvIGludmFsaWRfdGltZXN0YW1wOwotCi0gIGlmIChwYWRwcml2YXRlLT5zZWdtZW50LmZvcm1hdCA9PSBHU1RfRk9STUFUX1VOREVGSU5FRCkgewotICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoYWRkZXIsICJObyBuZXctc2VnbWVudCByZWNlaXZlZCwiCi0gICAgICAgICIgaW5pdGlhbGl6aW5nIHNlZ21lbnQgd2l0aCB0aW1lIDAuLi0xIik7Ci0gICAgZ3N0X3NlZ21lbnRfaW5pdCAoJnBhZHByaXZhdGUtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSk7Ci0gIH0KLQotICBidWZmZXIgPSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUgKGJ1ZmZlcik7Ci0KLSAgZHJpZnQgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSAtIHBhZHByaXZhdGUtPmV4cGVjdGVkX3RpbWVzdGFtcDsKLQotICAvKiBKdXN0IHNlZSBpZiB3ZSByZWNlaXZlIGludmFsaWQgdGltZXN0YW1wL2R1cmF0aW9ucyAqLwotICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHBhZHByaXZhdGUtPmV4cGVjdGVkX3RpbWVzdGFtcCkgJiYKLSAgICAgICFHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUIChidWZmZXIsIEdTVF9CVUZGRVJfRkxBR19ESVNDT05UKSAmJgotICAgICAgKGRyaWZ0ICE9IDApKSB7Ci0gICAgR1NUX0xPR19PQkpFQ1QgKGFkZGVyLAotICAgICAgICAiVGltZXN0YW1wIGRpc2NvbnRpbnVpdHkgd2l0aG91dCB0aGUgRElTQ09OVCBmbGFnIHNldCIKLSAgICAgICAgIiAoZXhwZWN0ZWQgJSIgR1NUX1RJTUVfRk9STUFUICIsIGdvdCAlIiBHU1RfVElNRV9GT1JNQVQKLSAgICAgICAgIiBkcmlmdDolIiBHX0dJTlQ2NF9GT1JNQVQgIm1zKSIsCi0gICAgICAgIEdTVF9USU1FX0FSR1MgKHBhZHByaXZhdGUtPmV4cGVjdGVkX3RpbWVzdGFtcCksCi0gICAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpKSwgZHJpZnQgLyBHU1RfTVNFQ09ORCk7Ci0KLSAgICAvKiBXZSBhY2NlcHQgZHJpZnRzIG9mIDEwbXMgKi8KLSAgICBpZiAoQUJTIChkcmlmdCkgPCAoMTAgKiBHU1RfTVNFQ09ORCkpIHsKLSAgICAgIEdTVF9ERUJVRyAoIkNvcnJlY3RpbmcgbWlub3IgZHJpZnQiKTsKLSAgICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpID0gcGFkcHJpdmF0ZS0+ZXhwZWN0ZWRfdGltZXN0YW1wOwotICAgIH0KLSAgfQotCi0KLSAgLyogSWYgdGhlcmUgaXMgbm8gZHVyYXRpb24sIGxldHMgc2V0IG9uZSAqLwotICBpZiAoIUdTVF9CVUZGRVJfRFVSQVRJT05fSVNfVkFMSUQgKGJ1ZmZlcikpIHsKLSAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpID0gKGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZmZlcikgKiBHU1RfU0VDT05EKSAvCi0gICAgICAgIChHU1RfQVVESU9fSU5GT19CUEYgKCZhZGRlci0+aW5mbykgKgotICAgICAgICBHU1RfQVVESU9fSU5GT19SQVRFICgmYWRkZXItPmluZm8pKTsKLSAgICBwYWRwcml2YXRlLT5leHBlY3RlZF90aW1lc3RhbXAgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotICB9IGVsc2UgewotICAgIHBhZHByaXZhdGUtPmV4cGVjdGVkX3RpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpICsKLSAgICAgICAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKTsKLSAgfQotCi0KLSAgLyoKLSAgICogTGV0cyBjbGlwIHRoZSBidWZmZXIgdG8gdGhlIHNlZ21lbnQgKHNvIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQKLSAgICogY2xpcGluZyBhZnRlcndhcmRzKS4KLSAgICogVGhpcyBzaG91bGQgYWxzbyBndWFyYW50ZWUgdXMgdGhhdCB3ZSdsbCBoYXZlIHZhbGlkIHRpbWVzdGFtcHMgYW5kCi0gICAqIGR1cmF0aW9ucyBhZnRlcndhcmRzCi0gICAqLwotCi0gIGJ1ZmZlciA9IGdzdF9hdWRpb19idWZmZXJfY2xpcCAoYnVmZmVyLCAmcGFkcHJpdmF0ZS0+c2VnbWVudCwKLSAgICAgIEdTVF9BVURJT19JTkZPX1JBVEUgKCZhZGRlci0+aW5mbyksIEdTVF9BVURJT19JTkZPX0JQRiAoJmFkZGVyLT5pbmZvKSk7Ci0KLSAgLyogYnVmZmVyIGNhbiBiZSBOVUxMIGlmIGl0J3MgY29tcGxldGVseSBvdXRzaWRlIG9mIHRoZSBzZWdtZW50ICovCi0gIGlmICghYnVmZmVyKSB7Ci0gICAgR1NUX0RFQlVHICgiQnVmZmVyIGNvbXBsZXRlbHkgb3V0c2lkZSBvZiBjb25maWd1cmVkIHNlZ21lbnQsIGRyb3BwaW5nIGl0Iik7Ci0gICAgZ290byBvdXQ7Ci0gIH0KLQotICAvKgotICAgKiBNYWtlIHN1cmUgYWxsIGluY29taW5nIGJ1ZmZlcnMgc2hhcmUgdGhlIHNhbWUgdGltZXN0YW1waW5nCi0gICAqLwotICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSA9Ci0gICAgICBnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUgKCZwYWRwcml2YXRlLT5zZWdtZW50LAotICAgICAgcGFkcHJpdmF0ZS0+c2VnbWVudC5mb3JtYXQsIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpKTsKLQotCi0gIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoYWRkZXItPm5leHRfdGltZXN0YW1wKSAmJgotICAgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgPCBhZGRlci0+bmV4dF90aW1lc3RhbXApIHsKLSAgICBpZiAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgKyBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpIDwKLSAgICAgICAgYWRkZXItPm5leHRfdGltZXN0YW1wKSB7Ci0gICAgICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgIkJ1ZmZlciBpcyBsYXRlLCBkcm9wcGluZyAodHM6ICUiIEdTVF9USU1FX0ZPUk1BVAotICAgICAgICAgICIgZHVyYXRpb246ICUiIEdTVF9USU1FX0ZPUk1BVCAiKSIsCi0gICAgICAgICAgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikpLAotICAgICAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcikpKTsKLSAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7Ci0gICAgICBnb3RvIG91dDsKLSAgICB9IGVsc2UgewotICAgICAgc2tpcCA9IGFkZGVyLT5uZXh0X3RpbWVzdGFtcCAtIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpOwotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJCdWZmZXIgaXMgcGFydGlhbGx5IGxhdGUsIHNraXBwaW5nICUiCi0gICAgICAgICAgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTIChza2lwKSk7Ci0gICAgfQotICB9Ci0KLSAgLyogSWYgb3VyIG5ldyBidWZmZXIncyBoZWFkIGlzIGhpZ2hlciB0aGFuIHRoZSBxdWV1ZSdzIGhlYWQsIGxldHMgd2FrZSB1cCwKLSAgICogd2UgbWF5IG5vdCBoYXZlIHRvIHdhaXQgZm9yIGFzIGxvbmcKLSAgICovCi0gIGlmIChhZGRlci0+Y2xvY2tfaWQgJiYKLSAgICAgIGdfcXVldWVfcGVla19oZWFkIChhZGRlci0+YnVmZmVycykgIT0gTlVMTCAmJgotICAgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgKyBza2lwIDwKLSAgICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChnX3F1ZXVlX3BlZWtfaGVhZCAoYWRkZXItPmJ1ZmZlcnMpKSkKLSAgICBnc3RfY2xvY2tfaWRfdW5zY2hlZHVsZSAoYWRkZXItPmNsb2NrX2lkKTsKLQotICBmb3IgKGl0ZW0gPSBnX3F1ZXVlX3BlZWtfaGVhZF9saW5rIChhZGRlci0+YnVmZmVycyk7Ci0gICAgICBpdGVtOyBpdGVtID0gZ19saXN0X25leHQgKGl0ZW0pKSB7Ci0gICAgR3N0QnVmZmVyICpvbGRidWZmZXIgPSBpdGVtLT5kYXRhOwotICAgIEdzdENsb2NrVGltZSBvbGRfc2tpcCA9IDA7Ci0gICAgR3N0Q2xvY2tUaW1lIG1peF9kdXJhdGlvbiA9IDA7Ci0gICAgR3N0Q2xvY2tUaW1lIG1peF9zdGFydCA9IDA7Ci0gICAgR3N0Q2xvY2tUaW1lIG1peF9lbmQgPSAwOwotICAgIEdzdE1hcEluZm8gb2xkbWFwLCBtYXA7Ci0KLSAgICAvKiBXZSBoYXZlbid0IHJlYWNoZWQgb3VyIHBsYWNlIHlldCAqLwotICAgIGlmIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSArIHNraXAgPj0KLSAgICAgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKG9sZGJ1ZmZlcikgKyBHU1RfQlVGRkVSX0RVUkFUSU9OIChvbGRidWZmZXIpKQotICAgICAgY29udGludWU7Ci0KLSAgICAvKiBXZSdyZSBwYXN0IG91ciBwbGFjZSwgbGV0cyBpbnNlcnQgb3VzZWx2ZXMgaGVyZSAqLwotICAgIGlmIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSArIEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcikgPD0KLSAgICAgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKG9sZGJ1ZmZlcikpCi0gICAgICBicmVhazsKLQotICAgIC8qIGlmIHdlIHJlYWNoIHRoaXMgc3BvdCwgd2UgaGF2ZSBvdmVybGFwLCBzbyB3ZSBtdXN0IG1peCAqLwotCi0gICAgLyogRmlyc3QgbWFrZSBhIHN1YmJ1ZmZlciB3aXRoIHRoZSBub24tb3ZlcmxhcHBpbmcgcGFydCAqLwotICAgIGlmIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSArIHNraXAgPCBHU1RfQlVGRkVSX1RJTUVTVEFNUCAob2xkYnVmZmVyKSkgewotICAgICAgR3N0QnVmZmVyICpzdWJidWZmZXIgPSBOVUxMOwotICAgICAgR3N0Q2xvY2tUaW1lIHN1YmJ1ZmZlcl9kdXJhdGlvbiA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChvbGRidWZmZXIpIC0KLSAgICAgICAgICAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgKyBza2lwKTsKLQotICAgICAgYnVmZmVyX3NpemUgPSBnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpOwotICAgICAgb2Zmc2V0ID0gZ3N0X2xpdmVfYWRkZXJfbGVuZ3RoX2Zyb21fZHVyYXRpb24gKGFkZGVyLCBza2lwKTsKLSAgICAgIHN1YmJ1ZmZlcl9zaXplID0gZ3N0X2xpdmVfYWRkZXJfbGVuZ3RoX2Zyb21fZHVyYXRpb24gKGFkZGVyLAotICAgICAgICAgIHN1YmJ1ZmZlcl9kdXJhdGlvbik7Ci0KLSAgICAgIGlmIChvZmZzZXQgKyBzdWJidWZmZXJfc2l6ZSA+IGJ1ZmZlcl9zaXplKSB7Ci0gICAgICAgIHN1YmJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemUgLSBvZmZzZXQ7Ci0gICAgICAgIHN1YmJ1ZmZlcl9kdXJhdGlvbiA9IGdzdF9saXZlX2FkZGVyX2xlbmd0aF90b19kdXJhdGlvbiAoYWRkZXIsCi0gICAgICAgICAgICBzdWJidWZmZXJfc2l6ZSk7Ci0gICAgICB9Ci0KLSAgICAgIHN1YmJ1ZmZlciA9IGdzdF9idWZmZXJfY29weV9yZWdpb24gKGJ1ZmZlciwgR1NUX0JVRkZFUl9DT1BZX0FMTCwKLSAgICAgICAgICBvZmZzZXQsIHN1YmJ1ZmZlcl9zaXplKTsKLQotICAgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKHN1YmJ1ZmZlcikgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSArIHNraXA7Ci0gICAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChzdWJidWZmZXIpID0gc3ViYnVmZmVyX2R1cmF0aW9uOwotCi0gICAgICBza2lwICs9IHN1YmJ1ZmZlcl9kdXJhdGlvbjsKLQotICAgICAgZ19xdWV1ZV9pbnNlcnRfYmVmb3JlIChhZGRlci0+YnVmZmVycywgaXRlbSwgc3ViYnVmZmVyKTsKLSAgICB9Ci0KLSAgICAvKiBOb3cgd2UgYXJlIG9uIHRoZSBvdmVybGFwcGluZyBwYXJ0ICovCi0gICAgb2xkYnVmZmVyID0gZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlIChvbGRidWZmZXIpOwotICAgIGl0ZW0tPmRhdGEgPSBvbGRidWZmZXI7Ci0KLSAgICBvbGRfc2tpcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpICsgc2tpcCAtCi0gICAgICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChvbGRidWZmZXIpOwotCi0gICAgbWl4X3N0YXJ0ID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKG9sZGJ1ZmZlcikgKyBvbGRfc2tpcDsKLQotICAgIGlmIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSArIEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcikgPAotICAgICAgICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAob2xkYnVmZmVyKSArIEdTVF9CVUZGRVJfRFVSQVRJT04gKG9sZGJ1ZmZlcikpCi0gICAgICBtaXhfZW5kID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgKyBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpOwotICAgIGVsc2UKLSAgICAgIG1peF9lbmQgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAob2xkYnVmZmVyKSArCi0gICAgICAgICAgR1NUX0JVRkZFUl9EVVJBVElPTiAob2xkYnVmZmVyKTsKLQotICAgIG1peF9kdXJhdGlvbiA9IG1peF9lbmQgLSBtaXhfc3RhcnQ7Ci0KLSAgICBpZiAoIUdTVF9CVUZGRVJfRkxBR19JU19TRVQgKGJ1ZmZlciwgR1NUX0JVRkZFUl9GTEFHX0dBUCkpIHsKLSAgICAgIEdTVF9CVUZGRVJfRkxBR19VTlNFVCAob2xkYnVmZmVyLCBHU1RfQlVGRkVSX0ZMQUdfR0FQKTsKLSAgICAgIGdzdF9idWZmZXJfbWFwIChvbGRidWZmZXIsICZvbGRtYXAsIEdTVF9NQVBfV1JJVEUpOwotICAgICAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZmZlciwgJm1hcCwgR1NUX01BUF9SRUFEKTsKLSAgICAgIGFkZGVyLT5mdW5jIChvbGRtYXAuZGF0YSArCi0gICAgICAgICAgZ3N0X2xpdmVfYWRkZXJfbGVuZ3RoX2Zyb21fZHVyYXRpb24gKGFkZGVyLCBvbGRfc2tpcCksCi0gICAgICAgICAgbWFwLmRhdGEgKwotICAgICAgICAgIGdzdF9saXZlX2FkZGVyX2xlbmd0aF9mcm9tX2R1cmF0aW9uIChhZGRlciwgc2tpcCksCi0gICAgICAgICAgZ3N0X2xpdmVfYWRkZXJfbGVuZ3RoX2Zyb21fZHVyYXRpb24gKGFkZGVyLCBtaXhfZHVyYXRpb24pKTsKLSAgICAgIGdzdF9idWZmZXJfdW5tYXAgKG9sZGJ1ZmZlciwgJm9sZG1hcCk7Ci0gICAgICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZtYXApOwotICAgIH0KLSAgICBza2lwICs9IG1peF9kdXJhdGlvbjsKLSAgfQotCi0gIGdfY29uZF9icm9hZGNhc3QgKCZhZGRlci0+bm90X2VtcHR5X2NvbmQpOwotCi0gIGlmIChza2lwID09IEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcikpIHsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwotICB9IGVsc2UgewotICAgIGlmIChza2lwKSB7Ci0gICAgICBHc3RDbG9ja1RpbWUgc3ViYnVmZmVyX2R1cmF0aW9uID0gR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKSAtIHNraXA7Ci0gICAgICBHc3RDbG9ja1RpbWUgc3ViYnVmZmVyX3RzID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgKyBza2lwOwotICAgICAgR3N0QnVmZmVyICpuZXdfYnVmZmVyOwotCi0gICAgICBidWZmZXJfc2l6ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZmZlcik7Ci0gICAgICBvZmZzZXQgPSBnc3RfbGl2ZV9hZGRlcl9sZW5ndGhfZnJvbV9kdXJhdGlvbiAoYWRkZXIsIHNraXApOwotICAgICAgc3ViYnVmZmVyX3NpemUgPSBnc3RfbGl2ZV9hZGRlcl9sZW5ndGhfZnJvbV9kdXJhdGlvbiAoYWRkZXIsCi0gICAgICAgICAgc3ViYnVmZmVyX2R1cmF0aW9uKTsKLQotICAgICAgaWYgKG9mZnNldCArIHN1YmJ1ZmZlcl9zaXplID4gYnVmZmVyX3NpemUpIHsKLSAgICAgICAgc3ViYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZSAtIG9mZnNldDsKLSAgICAgICAgc3ViYnVmZmVyX2R1cmF0aW9uID0gZ3N0X2xpdmVfYWRkZXJfbGVuZ3RoX3RvX2R1cmF0aW9uIChhZGRlciwKLSAgICAgICAgICAgIHN1YmJ1ZmZlcl9zaXplKTsKLSAgICAgIH0KLQotICAgICAgbmV3X2J1ZmZlciA9IGdzdF9idWZmZXJfY29weV9yZWdpb24gKGJ1ZmZlciwKLSAgICAgICAgICBHU1RfQlVGRkVSX0NPUFlfQUxMLCBvZmZzZXQsIHN1YmJ1ZmZlcl9zaXplKTsKLQotICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKLSAgICAgIGJ1ZmZlciA9IG5ld19idWZmZXI7Ci0gICAgICBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKSA9IHN1YmJ1ZmZlcl90czsKLSAgICAgIEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcikgPSBzdWJidWZmZXJfZHVyYXRpb247Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0pCi0gICAgICBnX3F1ZXVlX2luc2VydF9iZWZvcmUgKGFkZGVyLT5idWZmZXJzLCBpdGVtLCBidWZmZXIpOwotICAgIGVsc2UKLSAgICAgIGdfcXVldWVfcHVzaF90YWlsIChhZGRlci0+YnVmZmVycywgYnVmZmVyKTsKLSAgfQotCi1vdXQ6Ci0KLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLQotICByZXR1cm4gcmV0OwotCi1pbnZhbGlkX3RpbWVzdGFtcDoKLQotICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwotICBHU1RfRUxFTUVOVF9FUlJPUiAoYWRkZXIsIFNUUkVBTSwgRkFJTEVELAotICAgICAgKCJCdWZmZXIgd2l0aG91dCBhIHZhbGlkIHRpbWVzdGFtcCByZWNlaXZlZCIpLAotICAgICAgKCJJbnZhbGlkIHRpbWVzdGFtcCByZWNlaXZlZCBvbiBidWZmZXIiKSk7Ci0KLSAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotfQotCi0vKgotICogVGhpcyBvbmx5IHdvcmtzIGJlY2F1c2UgdGhlIEdzdE9iamVjdCBsb2NrIGlzIHRha2VuCi0gKgotICogSXQgY2hlY2tzIGlmIGFsbCBzaW5rIHBhZHMgYXJlIEVPUwotICovCi1zdGF0aWMgZ2Jvb2xlYW4KLWNoZWNrX2Vvc19sb2NrZWQgKEdzdExpdmVBZGRlciAqIGFkZGVyKQotewotICBHTGlzdCAqaXRlbTsKLQotICAvKiBXZSBjYW4ndCBiZSBFT1MgaWYgd2UgaGF2ZSBubyBzaW5rcGFkcyAqLwotICBpZiAoYWRkZXItPnNpbmtwYWRzID09IE5VTEwpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGZvciAoaXRlbSA9IGFkZGVyLT5zaW5rcGFkczsgaXRlbTsgaXRlbSA9IGdfbGlzdF9uZXh0IChpdGVtKSkgewotICAgIEdzdFBhZCAqcGFkID0gaXRlbS0+ZGF0YTsKLSAgICBHc3RMaXZlQWRkZXJQYWRQcml2YXRlICpwYWRwcml2YXRlID0gZ3N0X3BhZF9nZXRfZWxlbWVudF9wcml2YXRlIChwYWQpOwotCi0gICAgaWYgKHBhZHByaXZhdGUgJiYgcGFkcHJpdmF0ZS0+ZW9zICE9IFRSVUUpCi0gICAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9saXZlX2FkZGVyX2xvb3AgKGdwb2ludGVyIGRhdGEpCi17Ci0gIEdzdExpdmVBZGRlciAqYWRkZXIgPSBHU1RfTElWRV9BRERFUiAoZGF0YSk7Ci0gIEdzdENsb2NrVGltZSBidWZmZXJfdGltZXN0YW1wID0gMDsKLSAgR3N0Q2xvY2tUaW1lIHN5bmNfdGltZSA9IDA7Ci0gIEdzdENsb2NrICpjbG9jayA9IE5VTEw7Ci0gIEdzdENsb2NrSUQgaWQgPSBOVUxMOwotICBHc3RDbG9ja1JldHVybiByZXQ7Ci0gIEdzdEJ1ZmZlciAqYnVmZmVyID0gTlVMTDsKLSAgR3N0Rmxvd1JldHVybiByZXN1bHQ7Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChhZGRlcik7Ci0KLWFnYWluOgotCi0gIGZvciAoOzspIHsKLSAgICBpZiAoYWRkZXItPnNyY3Jlc3VsdCAhPSBHU1RfRkxPV19PSykKLSAgICAgIGdvdG8gZmx1c2hpbmc7Ci0gICAgaWYgKCFnX3F1ZXVlX2lzX2VtcHR5IChhZGRlci0+YnVmZmVycykpCi0gICAgICBicmVhazsKLSAgICBpZiAoY2hlY2tfZW9zX2xvY2tlZCAoYWRkZXIpKQotICAgICAgZ290byBlb3M7Ci0gICAgZ19jb25kX3dhaXQgKCZhZGRlci0+bm90X2VtcHR5X2NvbmQsIEdTVF9PQkpFQ1RfR0VUX0xPQ0sgKGFkZGVyKSk7Ci0gIH0KLQotICBidWZmZXJfdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGdfcXVldWVfcGVla19oZWFkIChhZGRlci0+YnVmZmVycykpOwotCi0gIGNsb2NrID0gR1NUX0VMRU1FTlRfQ0xPQ0sgKGFkZGVyKTsKLQotICAvKiBJZiB3ZSBoYXZlIG5vIGNsb2NrLCB0aGVuIHdlIGNhbid0IGRvIGFueXRoaW5nLi4gZXJyb3IgKi8KLSAgaWYgKCFjbG9jaykgewotICAgIGlmIChhZGRlci0+cGxheWluZykKLSAgICAgIGdvdG8gbm9fY2xvY2s7Ci0gICAgZWxzZQotICAgICAgZ290byBwdXNoX2J1ZmZlcjsKLSAgfQotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAic3luYyB0byB0aW1lc3RhbXAgJSIgR1NUX1RJTUVfRk9STUFULAotICAgICAgR1NUX1RJTUVfQVJHUyAoYnVmZmVyX3RpbWVzdGFtcCkpOwotCi0gIHN5bmNfdGltZSA9IGJ1ZmZlcl90aW1lc3RhbXAgKyBHU1RfRUxFTUVOVF9DQVNUIChhZGRlciktPmJhc2VfdGltZTsKLSAgLyogYWRkIGxhdGVuY3ksIHRoaXMgaW5jbHVkZXMgb3VyIG93biBsYXRlbmN5IGFuZCB0aGUgcGVlciBsYXRlbmN5LiAqLwotICBzeW5jX3RpbWUgKz0gYWRkZXItPmxhdGVuY3lfbXMgKiBHU1RfTVNFQ09ORDsKLSAgc3luY190aW1lICs9IGFkZGVyLT5wZWVyX2xhdGVuY3k7Ci0KLSAgLyogY3JlYXRlIGFuIGVudHJ5IGZvciB0aGUgY2xvY2sgKi8KLSAgaWQgPSBhZGRlci0+Y2xvY2tfaWQgPSBnc3RfY2xvY2tfbmV3X3NpbmdsZV9zaG90X2lkIChjbG9jaywgc3luY190aW1lKTsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLQotICByZXQgPSBnc3RfY2xvY2tfaWRfd2FpdCAoaWQsIE5VTEwpOwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotCi0gIC8qIGFuZCBmcmVlIHRoZSBlbnRyeSAqLwotICBnc3RfY2xvY2tfaWRfdW5yZWYgKGlkKTsKLSAgYWRkZXItPmNsb2NrX2lkID0gTlVMTDsKLQotICAvKiBhdCB0aGlzIHBvaW50LCB0aGUgY2xvY2sgY291bGQgaGF2ZSBiZWVuIHVubG9ja2VkIGJ5IGEgdGltZW91dCwgYSBuZXcKLSAgICogaGVhZCBlbGVtZW50IHdhcyBhZGRlZCB0byB0aGUgcXVldWUgb3IgYmVjYXVzZSB3ZSBhcmUgc2h1dHRpbmcgZG93bi4gQ2hlY2sKLSAgICogZm9yIHNodXRkb3duIGZpcnN0LiAqLwotCi0gIGlmIChhZGRlci0+c3JjcmVzdWx0ICE9IEdTVF9GTE9XX09LKQotICAgIGdvdG8gZmx1c2hpbmc7Ci0KLSAgaWYgKHJldCA9PSBHU1RfQ0xPQ0tfVU5TQ0hFRFVMRUQpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwKLSAgICAgICAgIldhaXQgZ290IHVuc2NoZWR1bGVkLCB3aWxsIHJldHJ5IHRvIHB1c2ggd2l0aCBuZXcgYnVmZmVyIik7Ci0gICAgZ290byBhZ2FpbjsKLSAgfQotCi0gIGlmIChyZXQgIT0gR1NUX0NMT0NLX09LICYmIHJldCAhPSBHU1RfQ0xPQ0tfRUFSTFkpCi0gICAgZ290byBjbG9ja19lcnJvcjsKLQotcHVzaF9idWZmZXI6Ci0KLSAgYnVmZmVyID0gZ19xdWV1ZV9wb3BfaGVhZCAoYWRkZXItPmJ1ZmZlcnMpOwotCi0gIGlmICghYnVmZmVyKQotICAgIGdvdG8gYWdhaW47Ci0KLSAgLyoKLSAgICogV2UgbWFrZSBzdXJlIHRoZSB0aW1lc3RhbXBzIGFyZSBleGFjdGx5IGNvbnRpZ3VvdXMKLSAgICogSWYgaXRzIG9ubHkgc21hbGwgc2tldyAoZHVlIHRvIHJvdW5kaW5nIGVycm9ycyksIHdlIGNvcnJlY3QgaXQKLSAgICogc2lsZW50bHkuIE90aGVyd2lzZSB3ZSBwdXQgdGhlIGRpc2NvbnQgZmxhZwotICAgKi8KLSAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChhZGRlci0+bmV4dF90aW1lc3RhbXApICYmCi0gICAgICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSAhPSBhZGRlci0+bmV4dF90aW1lc3RhbXApIHsKLSAgICBHc3RDbG9ja1RpbWVEaWZmIGRpZmYgPSBHU1RfQ0xPQ0tfRElGRiAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlciksCi0gICAgICAgIGFkZGVyLT5uZXh0X3RpbWVzdGFtcCk7Ci0gICAgaWYgKGRpZmYgPCAwKQotICAgICAgZGlmZiA9IC1kaWZmOwotCi0gICAgaWYgKGRpZmYgPCBHU1RfU0VDT05EIC8gR1NUX0FVRElPX0lORk9fUkFURSAoJmFkZGVyLT5pbmZvKSkgewotICAgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgPSBhZGRlci0+bmV4dF90aW1lc3RhbXA7Ci0gICAgICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgIkNvcnJlY3Rpbmcgc2xpZ2h0IHNrZXciKTsKLSAgICAgIEdTVF9CVUZGRVJfRkxBR19VTlNFVCAoYnVmZmVyLCBHU1RfQlVGRkVSX0ZMQUdfRElTQ09OVCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKGJ1ZmZlciwgR1NUX0JVRkZFUl9GTEFHX0RJU0NPTlQpOwotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJFeHBlY3RlZCBidWZmZXIgYXQgJSIgR1NUX1RJTUVfRk9STUFUCi0gICAgICAgICAgIiwgYnV0IGlzIGF0ICUiIEdTVF9USU1FX0ZPUk1BVCAiLCBzZXR0aW5nIGRpc2NvbnQiLAotICAgICAgICAgIEdTVF9USU1FX0FSR1MgKGFkZGVyLT5uZXh0X3RpbWVzdGFtcCksCi0gICAgICAgICAgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikpKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgR1NUX0JVRkZFUl9GTEFHX1VOU0VUIChidWZmZXIsIEdTVF9CVUZGRVJfRkxBR19ESVNDT05UKTsKLSAgfQotCi0gIEdTVF9CVUZGRVJfT0ZGU0VUIChidWZmZXIpID0gR1NUX0JVRkZFUl9PRkZTRVRfTk9ORTsKLSAgR1NUX0JVRkZFUl9PRkZTRVRfRU5EIChidWZmZXIpID0gR1NUX0JVRkZFUl9PRkZTRVRfTk9ORTsKLQotICBpZiAoR1NUX0JVRkZFUl9EVVJBVElPTl9JU19WQUxJRCAoYnVmZmVyKSkKLSAgICBhZGRlci0+bmV4dF90aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSArCi0gICAgICAgIEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcik7Ci0gIGVsc2UKLSAgICBhZGRlci0+bmV4dF90aW1lc3RhbXAgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotCi0gIEdTVF9MT0dfT0JKRUNUIChhZGRlciwgIkFib3V0IHRvIHB1c2ggYnVmZmVyIHRpbWU6JSIgR1NUX1RJTUVfRk9STUFUCi0gICAgICAiIGR1cmF0aW9uOiUiIEdTVF9USU1FX0ZPUk1BVCwKLSAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpKSwKLSAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcikpKTsKLQotICByZXN1bHQgPSBnc3RfcGFkX3B1c2ggKGFkZGVyLT5zcmNwYWQsIGJ1ZmZlcik7Ci0gIGlmIChyZXN1bHQgIT0gR1NUX0ZMT1dfT0spCi0gICAgZ290byBwYXVzZTsKLQotICByZXR1cm47Ci0KLWZsdXNoaW5nOgotICB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJ3ZSBhcmUgZmx1c2hpbmciKTsKLSAgICBnc3RfcGFkX3BhdXNlX3Rhc2sgKGFkZGVyLT5zcmNwYWQpOwotICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci0gICAgcmV0dXJuOwotICB9Ci0KLWNsb2NrX2Vycm9yOgotICB7Ci0gICAgZ3N0X3BhZF9wYXVzZV90YXNrIChhZGRlci0+c3JjcGFkKTsKLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChhZGRlciwgU1RSRUFNLCBNVVgsICgiRXJyb3Igd2l0aCB0aGUgY2xvY2siKSwKLSAgICAgICAgKCJFcnJvciB3aXRoIHRoZSBjbG9jazogJWQiLCByZXQpKTsKLSAgICBHU1RfRVJST1JfT0JKRUNUIChhZGRlciwgIkVycm9yIHdpdGggdGhlIGNsb2NrOiAlZCIsIHJldCk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLW5vX2Nsb2NrOgotICB7Ci0gICAgZ3N0X3BhZF9wYXVzZV90YXNrIChhZGRlci0+c3JjcGFkKTsKLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChhZGRlciwgU1RSRUFNLCBNVVgsICgiTm8gYXZhaWxhYmxlIGNsb2NrIiksCi0gICAgICAgICgiTm8gYXZhaWxhYmxlIGNsb2NrIikpOwotICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGFkZGVyLCAiTm8gYXZhaWxhYmxlIGNsb2NrIik7Ci0gICAgcmV0dXJuOwotICB9Ci0KLXBhdXNlOgotICB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJwYXVzaW5nIHRhc2ssIHJlYXNvbiAlcyIsCi0gICAgICAgIGdzdF9mbG93X2dldF9uYW1lIChyZXN1bHQpKTsKLQotICAgIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotCi0gICAgLyogc3RvcmUgcmVzdWx0ICovCi0gICAgYWRkZXItPnNyY3Jlc3VsdCA9IHJlc3VsdDsKLSAgICAvKiB3ZSBkb24ndCBwb3N0IGVycm9ycyBvciBhbnl0aGluZyBiZWNhdXNlIHVwc3RyZWFtIHdpbGwgZG8gdGhhdCBmb3IgdXMKLSAgICAgKiB3aGVuIHdlIHBhc3MgdGhlIHJldHVybiB2YWx1ZSB1cHN0cmVhbS4gKi8KLSAgICBnc3RfcGFkX3BhdXNlX3Rhc2sgKGFkZGVyLT5zcmNwYWQpOwotICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci0gICAgcmV0dXJuOwotICB9Ci0KLWVvczoKLSAgewotICAgIC8qIHN0b3JlIHJlc3VsdCwgd2UgYXJlIGZsdXNoaW5nIG5vdyAqLwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAiV2UgYXJlIEVPUywgcHVzaGluZyBFT1MgZG93bnN0cmVhbSIpOwotICAgIGFkZGVyLT5zcmNyZXN1bHQgPSBHU1RfRkxPV19FT1M7Ci0gICAgZ3N0X3BhZF9wYXVzZV90YXNrIChhZGRlci0+c3JjcGFkKTsKLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoYWRkZXItPnNyY3BhZCwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOwotICAgIHJldHVybjsKLSAgfQotfQotCi1zdGF0aWMgR3N0UGFkICoKLWdzdF9saXZlX2FkZGVyX3JlcXVlc3RfbmV3X3BhZCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsCi0gICAgY29uc3QgZ2NoYXIgKiBpZ25vcmVkX25hbWUsIGNvbnN0IEdzdENhcHMgKiBjYXBzKQotewotICBnY2hhciAqbmFtZTsKLSAgR3N0TGl2ZUFkZGVyICphZGRlcjsKLSAgR3N0UGFkICpuZXdwYWQ7Ci0gIGdpbnQgcGFkY291bnQ7Ci0gIEdzdExpdmVBZGRlclBhZFByaXZhdGUgKnBhZHByaXZhdGUgPSBOVUxMOwotCi0gIGlmICh0ZW1wbC0+ZGlyZWN0aW9uICE9IEdTVF9QQURfU0lOSykKLSAgICBnb3RvIG5vdF9zaW5rOwotCi0gIGFkZGVyID0gR1NUX0xJVkVfQURERVIgKGVsZW1lbnQpOwotCi0gIC8qIGluY3JlbWVudCBwYWQgY291bnRlciAqLwotICBwYWRjb3VudCA9IGdfYXRvbWljX2ludF9hZGQgKCZhZGRlci0+cGFkY291bnQsIDEpOwotCi0gIG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJzaW5rXyV1IiwgcGFkY291bnQpOwotICBuZXdwYWQgPSBnc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlICh0ZW1wbCwgbmFtZSk7Ci0gIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAicmVxdWVzdCBuZXcgcGFkICVzIiwgbmFtZSk7Ci0gIGdfZnJlZSAobmFtZSk7Ci0KLSAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKG5ld3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbGl2ZV9hZGRlcl9zaW5rX2V2ZW50KSk7Ci0gIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uIChuZXdwYWQsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2xpdmVfYWRkZXJfc2lua19xdWVyeSkpOwotCi0gIHBhZHByaXZhdGUgPSBnX25ldzAgKEdzdExpdmVBZGRlclBhZFByaXZhdGUsIDEpOwotCi0gIGdzdF9zZWdtZW50X2luaXQgKCZwYWRwcml2YXRlLT5zZWdtZW50LCBHU1RfRk9STUFUX1VOREVGSU5FRCk7Ci0gIHBhZHByaXZhdGUtPmVvcyA9IEZBTFNFOwotICBwYWRwcml2YXRlLT5leHBlY3RlZF90aW1lc3RhbXAgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotCi0gIGdzdF9wYWRfc2V0X2VsZW1lbnRfcHJpdmF0ZSAobmV3cGFkLCBwYWRwcml2YXRlKTsKLQotICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAobmV3cGFkLCBnc3RfbGl2ZV9hZGRlcl9jaGFpbik7Ci0KLQotICBpZiAoIWdzdF9wYWRfc2V0X2FjdGl2ZSAobmV3cGFkLCBUUlVFKSkKLSAgICBnb3RvIGNvdWxkX25vdF9hY3RpdmF0ZTsKLQotICAvKiB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHBhZCAqLwotICBpZiAoIWdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChhZGRlciksIG5ld3BhZCkpCi0gICAgZ290byBjb3VsZF9ub3RfYWRkOwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotICBhZGRlci0+c2lua3BhZHMgPSBnX2xpc3RfcHJlcGVuZCAoYWRkZXItPnNpbmtwYWRzLCBuZXdwYWQpOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotCi0gIHJldHVybiBuZXdwYWQ7Ci0KLSAgLyogZXJyb3JzICovCi1ub3Rfc2luazoKLSAgewotICAgIGdfd2FybmluZyAoImdzdGFkZGVyOiByZXF1ZXN0IG5ldyBwYWQgdGhhdCBpcyBub3QgYSBTSU5LIHBhZFxuIik7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLWNvdWxkX25vdF9hZGQ6Ci0gIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgImNvdWxkIG5vdCBhZGQgcGFkIik7Ci0gICAgZ19mcmVlIChwYWRwcml2YXRlKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChuZXdwYWQpOwotICAgIHJldHVybiBOVUxMOwotICB9Ci1jb3VsZF9ub3RfYWN0aXZhdGU6Ci0gIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgImNvdWxkIG5vdCBhY3RpdmF0ZSBuZXcgcGFkIik7Ci0gICAgZ19mcmVlIChwYWRwcml2YXRlKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChuZXdwYWQpOwotICAgIHJldHVybiBOVUxMOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfbGl2ZV9hZGRlcl9yZWxlYXNlX3BhZCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFBhZCAqIHBhZCkKLXsKLSAgR3N0TGl2ZUFkZGVyICphZGRlcjsKLSAgR3N0TGl2ZUFkZGVyUGFkUHJpdmF0ZSAqcGFkcHJpdmF0ZTsKLQotICBhZGRlciA9IEdTVF9MSVZFX0FEREVSIChlbGVtZW50KTsKLQotICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgInJlbGVhc2UgcGFkICVzOiVzIiwgR1NUX0RFQlVHX1BBRF9OQU1FIChwYWQpKTsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKGVsZW1lbnQpOwotICBwYWRwcml2YXRlID0gZ3N0X3BhZF9nZXRfZWxlbWVudF9wcml2YXRlIChwYWQpOwotICBnc3RfcGFkX3NldF9lbGVtZW50X3ByaXZhdGUgKHBhZCwgTlVMTCk7Ci0gIGFkZGVyLT5zaW5rcGFkcyA9IGdfbGlzdF9yZW1vdmVfYWxsIChhZGRlci0+c2lua3BhZHMsIHBhZCk7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChlbGVtZW50KTsKLQotICBnX2ZyZWUgKHBhZHByaXZhdGUpOwotCi0gIGdzdF9lbGVtZW50X3JlbW92ZV9wYWQgKGVsZW1lbnQsIHBhZCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1yZXNldF9wYWRfcHJpdmF0ZSAoR3N0UGFkICogcGFkKQotewotICBHc3RMaXZlQWRkZXJQYWRQcml2YXRlICpwYWRwcml2YXRlOwotCi0gIHBhZHByaXZhdGUgPSBnc3RfcGFkX2dldF9lbGVtZW50X3ByaXZhdGUgKHBhZCk7Ci0KLSAgaWYgKCFwYWRwcml2YXRlKQotICAgIHJldHVybjsKLQotICBnc3Rfc2VnbWVudF9pbml0ICgmcGFkcHJpdmF0ZS0+c2VnbWVudCwgR1NUX0ZPUk1BVF9VTkRFRklORUQpOwotCi0gIHBhZHByaXZhdGUtPmV4cGVjdGVkX3RpbWVzdGFtcCA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0gIHBhZHByaXZhdGUtPmVvcyA9IEZBTFNFOwotfQotCi1zdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KLWdzdF9saXZlX2FkZGVyX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCi17Ci0gIEdzdExpdmVBZGRlciAqYWRkZXI7Ci0gIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJldDsKLQotICBhZGRlciA9IEdTVF9MSVZFX0FEREVSIChlbGVtZW50KTsKLQotICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgotICAgICAgR1NUX09CSkVDVF9MT0NLIChhZGRlcik7Ci0gICAgICBhZGRlci0+c2VnbWVudF9wZW5kaW5nID0gVFJVRTsKLSAgICAgIGFkZGVyLT5wZWVyX2xhdGVuY3kgPSAwOwotICAgICAgYWRkZXItPm5leHRfdGltZXN0YW1wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSAgICAgIGdfbGlzdF9mb3JlYWNoIChhZGRlci0+c2lua3BhZHMsIChHRnVuYykgcmVzZXRfcGFkX3ByaXZhdGUsIE5VTEwpOwotICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QTEFZSU5HX1RPX1BBVVNFRDoKLSAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotICAgICAgYWRkZXItPnBsYXlpbmcgPSBGQUxTRTsKLSAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXQgPSBHU1RfRUxFTUVOVF9DTEFTUyAoZ3N0X2xpdmVfYWRkZXJfcGFyZW50X2NsYXNzKS0+Y2hhbmdlX3N0YXRlIChlbGVtZW50LAotICAgICAgdHJhbnNpdGlvbik7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgotICAgICAgR1NUX09CSkVDVF9MT0NLIChhZGRlcik7Ci0gICAgICBhZGRlci0+cGxheWluZyA9IFRSVUU7Ci0gICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotCi1zdGF0aWMgZ2Jvb2xlYW4KLXBsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCi17Ci0gIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImxpdmVhZGRlciIsIEdTVF9SQU5LX05PTkUsCi0gICAgICAgICAgR1NUX1RZUEVfTElWRV9BRERFUikpIHsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQotR1NUX1BMVUdJTl9ERUZJTkUgKEdTVF9WRVJTSU9OX01BSk9SLAotICAgIEdTVF9WRVJTSU9OX01JTk9SLAotICAgIGxpdmVhZGRlciwKLSAgICAiQWRkcyBtdWx0aXBsZSBsaXZlIGRpc2NvbnRpbnVvdXMgc3RyZWFtcyIsCi0gICAgcGx1Z2luX2luaXQsIFZFUlNJT04sIEdTVF9MSUNFTlNFLCBHU1RfUEFDS0FHRV9OQU1FLCBHU1RfUEFDS0FHRV9PUklHSU4pCmRpZmYgLS1naXQgYS9nc3QvbGl2ZWFkZGVyL2xpdmVhZGRlci5oIGIvZ3N0L2xpdmVhZGRlci9saXZlYWRkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc1NWVkZi4uMDAwMDAwMAotLS0gYS9nc3QvbGl2ZWFkZGVyL2xpdmVhZGRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAqIEdTdHJlYW1lcgotICoKLSAqICBDb3B5cmlnaHQgMjAwOCBDb2xsYWJvcmEgTHRkCi0gKiAgQ29weXJpZ2h0IDIwMDggTm9raWEgQ29ycG9yYXRpb24KLSAqICAgQGF1dGhvcjogT2xpdmllciBDcmV0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLQotCi0jaWZuZGVmIF9fR1NUX0xJVkVfQURERVJfSF9fCi0jZGVmaW5lIF9fR1NUX0xJVkVfQURERVJfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0KLUdfQkVHSU5fREVDTFMKLSNkZWZpbmUgR1NUX1RZUEVfTElWRV9BRERFUiAgICAgICAgICAgIChnc3RfbGl2ZV9hZGRlcl9nZXRfdHlwZSgpKQotI2RlZmluZSBHU1RfTElWRV9BRERFUihvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX0xJVkVfQURERVIsR3N0TGl2ZUFkZGVyKSkKLSNkZWZpbmUgR1NUX0lTX0xJVkVfQURERVIob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9MSVZFX0FEREVSKSkKLSNkZWZpbmUgR1NUX0xJVkVfQURERVJfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpICxHU1RfVFlQRV9MSVZFX0FEREVSLEdzdExpdmVBZGRlckNsYXNzKSkKLSNkZWZpbmUgR1NUX0lTX0xJVkVfQURERVJfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpICxHU1RfVFlQRV9MSVZFX0FEREVSKSkKLSNkZWZpbmUgR1NUX0xJVkVfQURERVJfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopICxHU1RfVFlQRV9MSVZFX0FEREVSLEdzdExpdmVBZGRlckNsYXNzKSkKLXR5cGVkZWYgc3RydWN0IF9Hc3RMaXZlQWRkZXIgR3N0TGl2ZUFkZGVyOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdExpdmVBZGRlckNsYXNzIEdzdExpdmVBZGRlckNsYXNzOwotCi10eXBlZGVmIHZvaWQgKCpHc3RMaXZlQWRkZXJGdW5jdGlvbikgKGdwb2ludGVyIG91dCwgZ3BvaW50ZXIgaW4sIGd1aW50IHNpemUpOwotCi0vKioKLSAqIEdzdExpdmVBZGRlcjoKLSAqCi0gKiBUaGUgYWRkZXIgb2JqZWN0IHN0cnVjdHVyZS4KLSAqLwotc3RydWN0IF9Hc3RMaXZlQWRkZXIKLXsKLSAgLyo8IHByaXZhdGUgPiovCi0gIEdzdEVsZW1lbnQgZWxlbWVudDsKLQotICBHc3RQYWQgKnNyY3BhZDsKLSAgLyogcGFkIGNvdW50ZXIsIHVzZWQgZm9yIGNyZWF0aW5nIHVuaXF1ZSByZXF1ZXN0IHBhZHMgKi8KLSAgZ2ludCBwYWRjb3VudDsKLSAgR0xpc3QgKnNpbmtwYWRzOwotCi0gIEdzdEZsb3dSZXR1cm4gc3JjcmVzdWx0OwotICBHc3RDbG9ja0lEIGNsb2NrX2lkOwotCi0gIC8qIHRoZSBxdWV1ZSBpcyBvcmRlcmVkIGhlYWQgdG8gdGFpbCAqLwotICBHUXVldWUgKmJ1ZmZlcnM7Ci0gIEdDb25kIG5vdF9lbXB0eV9jb25kOwotCi0gIEdzdENsb2NrVGltZSBuZXh0X3RpbWVzdGFtcDsKLQotICAvKiB0aGUgbmV4dCBhcmUgdmFsaWQgZm9yIGJvdGggaW50IGFuZCBmbG9hdCAqLwotICBHc3RBdWRpb0luZm8gaW5mbzsKLQotICAvKiBmdW5jdGlvbiB0byBhZGQgc2FtcGxlcyAqLwotICBHc3RMaXZlQWRkZXJGdW5jdGlvbiBmdW5jOwotCi0gIEdzdENsb2NrVGltZSBsYXRlbmN5X21zOwotICBHc3RDbG9ja1RpbWUgcGVlcl9sYXRlbmN5OwotCi0gIGdib29sZWFuIHNlZ21lbnRfcGVuZGluZzsKLQotICBnYm9vbGVhbiBwbGF5aW5nOwotfTsKLQotc3RydWN0IF9Hc3RMaXZlQWRkZXJDbGFzcwotewotICBHc3RFbGVtZW50Q2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotR1R5cGUgZ3N0X2xpdmVfYWRkZXJfZ2V0X3R5cGUgKHZvaWQpOwotCi1HX0VORF9ERUNMUwotI2VuZGlmIC8qIF9fR1NUX0xJVkVfQURERVJfSF9fICovCmRpZmYgLS1naXQgYS9nc3QvbWlkaS9NYWtlZmlsZS5pbiBiL2dzdC9taWRpL01ha2VmaWxlLmluCmluZGV4IGIzZWExNDQuLjFiM2NjNDYgMTAwNjQ0Ci0tLSBhL2dzdC9taWRpL01ha2VmaWxlLmluCisrKyBiL2dzdC9taWRpL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L21wZWdkZW11eC9NYWtlZmlsZS5pbiBiL2dzdC9tcGVnZGVtdXgvTWFrZWZpbGUuaW4KaW5kZXggNGQ1MzcwYS4uNDRmMGQ0YyAxMDA2NDQKLS0tIGEvZ3N0L21wZWdkZW11eC9NYWtlZmlsZS5pbgorKysgYi9nc3QvbXBlZ2RlbXV4L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L21wZWdwc211eC9NYWtlZmlsZS5pbiBiL2dzdC9tcGVncHNtdXgvTWFrZWZpbGUuaW4KaW5kZXggMzY0ZDI2ZS4uZDhhMmIyZCAxMDA2NDQKLS0tIGEvZ3N0L21wZWdwc211eC9NYWtlZmlsZS5pbgorKysgYi9nc3QvbXBlZ3BzbXV4L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Nyw2ICsyNzYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNCw2ICszMTUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMiw3ICszMjUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDEsOCArMzQzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OSwxNiArMzYyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NCw2ICszOTgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTksNiArNDI1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIwLDYgKzUyOCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzMsOCArNTQyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUwLDYgKzU1Nyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDcsMTYgKzYxNiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OCw2ICs2NzksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc4LDYgKzY5MCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Nyw2ICs3MDAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI0LDcgKzczOSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c2RlbXV4L01ha2VmaWxlLmFtIGIvZ3N0L21wZWd0c2RlbXV4L01ha2VmaWxlLmFtCmluZGV4IGI0ZTA1M2MuLmYwNDc1YzYgMTAwNjQ0Ci0tLSBhL2dzdC9tcGVndHNkZW11eC9NYWtlZmlsZS5hbQorKysgYi9nc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUuYW0KQEAgLTE1LDggKzE1LDggQEAKIAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L21wZWd0cy9saWJnc3RtcGVndHMtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9saWJnc3Rjb2RlY3BhcnNlcnMtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3R0YWctJChHU1RfQVBJX1ZFUlNJT04pIFwKLQktbGdzdHBidXRpbHMtQEdTVF9BUElfVkVSU0lPTkAgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykKKwktbGdzdHBidXRpbHMtQEdTVF9BUElfVkVSU0lPTkAgLWxnc3RhdWRpby0kKEdTVF9BUElfVkVSU0lPTikgXAorCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMSUJNKQogbGliZ3N0bXBlZ3RzZGVtdXhfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQogbGliZ3N0bXBlZ3RzZGVtdXhfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKIApkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c2RlbXV4L01ha2VmaWxlLmluIGIvZ3N0L21wZWd0c2RlbXV4L01ha2VmaWxlLmluCmluZGV4IDhhN2YyMzUuLmMyMzU0NzYgMTAwNjQ0Ci0tLSBhL2dzdC9tcGVndHNkZW11eC9NYWtlZmlsZS5pbgorKysgYi9nc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTY3LDcgKzE2Niw3IEBACiBsaWJnc3RtcGVndHNkZW11eF9sYV9ERVBFTkRFTkNJRVMgPSAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L21wZWd0cy9saWJnc3RtcGVndHMtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9saWJnc3Rjb2RlY3BhcnNlcnMtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKLQkkKGFtX19ERVBFTkRFTkNJRVNfMSkKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpCiBhbV9saWJnc3RtcGVndHNkZW11eF9sYV9PQkpFQ1RTID0gIFwKIAlsaWJnc3RtcGVndHNkZW11eF9sYS1tcGVndHNwYWNrZXRpemVyLmxvIFwKIAlsaWJnc3RtcGVndHNkZW11eF9sYS1tcGVndHNiYXNlLmxvIFwKQEAgLTI4Miw2ICsyODEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxOSw2ICszMjAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNyw3ICszMzAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDYsOCArMzQ4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2NCwxNiArMzY3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5OSw2ICs0MDMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjQsNiArNDMwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI1LDYgKzUzMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzgsOCArNTQ3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU1LDYgKzU2Miw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTIsMTYgKzYyMSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3Myw2ICs2ODQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgzLDYgKzY5NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5Miw2ICs3MDUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI5LDcgKzc0NCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzg2LDggKzgwMCw4IEBACiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9tcGVndHMvbGliZ3N0bXBlZ3RzLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvbGliZ3N0Y29kZWNwYXJzZXJzLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSBcCi0JLWxnc3RwYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpCisJLWxnc3RwYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05AIC1sZ3N0YXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKKwkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTElCTSkKIAogbGliZ3N0bXBlZ3RzZGVtdXhfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQogbGliZ3N0bXBlZ3RzZGVtdXhfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKZGlmZiAtLWdpdCBhL2dzdC9tcGVndHNkZW11eC9nc3RtcGVnZGVzYy5oIGIvZ3N0L21wZWd0c2RlbXV4L2dzdG1wZWdkZXNjLmgKaW5kZXggZDEyNTZhNi4uYmQ5MjM1ZiAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c2RlbXV4L2dzdG1wZWdkZXNjLmgKKysrIGIvZ3N0L21wZWd0c2RlbXV4L2dzdG1wZWdkZXNjLmgKQEAgLTIzMiw1ICsyMzIsNiBAQAogI2RlZmluZSBEUkZfSURfRVRWMSAgICAgICAweDQ1NTQ1NjMxCiAjZGVmaW5lIERSRl9JRF9IRVZDICAgICAgIDB4NDg0NTU2NDMKICNkZWZpbmUgRFJGX0lEX0tMVkEgICAgICAgMHg0YjRjNTY0MSAgIC8qIGRlZmluZWQgaW4gUlAyMTcgKi8KKyNkZWZpbmUgRFJGX0lEX09QVVMgICAgICAgMHg0ZjcwNzU3MwogCiAjZW5kaWYgLyogX19HU1RfTVBFR19ERVNDX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c2RlbXV4L21wZWd0c2Jhc2UuYyBiL2dzdC9tcGVndHNkZW11eC9tcGVndHNiYXNlLmMKaW5kZXggZDQ2YTQ3ZS4uZWIxNmFhYyAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c2RlbXV4L21wZWd0c2Jhc2UuYworKysgYi9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jCkBAIC03NCw2ICs3NCw4IEBACiAgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CiAKIHN0YXRpYyB2b2lkIG1wZWd0c19iYXNlX2ZyZWVfcHJvZ3JhbSAoTXBlZ1RTQmFzZVByb2dyYW0gKiBwcm9ncmFtKTsKK3N0YXRpYyB2b2lkIG1wZWd0c19iYXNlX2RlYWN0aXZhdGVfcHJvZ3JhbSAoTXBlZ1RTQmFzZSAqIGJhc2UsCisgICAgTXBlZ1RTQmFzZVByb2dyYW0gKiBwcm9ncmFtKTsKIHN0YXRpYyBnYm9vbGVhbiBtcGVndHNfYmFzZV9zaW5rX2FjdGl2YXRlIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCk7CiBzdGF0aWMgZ2Jvb2xlYW4gbXBlZ3RzX2Jhc2Vfc2lua19hY3RpdmF0ZV9tb2RlIChHc3RQYWQgKiBwYWQsCiAgICAgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RQYWRNb2RlIG1vZGUsIGdib29sZWFuIGFjdGl2ZSk7CkBAIC0xMDUsMTIgKzEwNywyMSBAQAogR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKE1wZWdUU0Jhc2UsIG1wZWd0c19iYXNlLCBHU1RfVFlQRV9FTEVNRU5ULAogICAgIF9leHRyYV9pbml0ICgpKTsKIAorLyogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpcyB0aGF0IG1wZWd0c2Jhc2UgY2FuIHJlbW92ZSBhbnkgcHJvZ3JhbSAqLworc3RhdGljIGdib29sZWFuCittcGVndHNfYmFzZV9jYW5fcmVtb3ZlX3Byb2dyYW0gKE1wZWdUU0Jhc2UgKiBiYXNlLCBNcGVnVFNCYXNlUHJvZ3JhbSAqIHByb2dyYW0pCit7CisgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgdm9pZAogbXBlZ3RzX2Jhc2VfY2xhc3NfaW5pdCAoTXBlZ1RTQmFzZUNsYXNzICoga2xhc3MpCiB7CiAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKICAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzOwogCisgIGtsYXNzLT5jYW5fcmVtb3ZlX3Byb2dyYW0gPSBtcGVndHNfYmFzZV9jYW5fcmVtb3ZlX3Byb2dyYW07CisKICAgZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CiAgIGVsZW1lbnRfY2xhc3MtPmNoYW5nZV9zdGF0ZSA9IG1wZWd0c19iYXNlX2NoYW5nZV9zdGF0ZTsKIApAQCAtNDExLDYgKzQyMiwxNiBAQAogfQogCiB2b2lkCittcGVndHNfYmFzZV9kZWFjdGl2YXRlX2FuZF9mcmVlX3Byb2dyYW0gKE1wZWdUU0Jhc2UgKiBiYXNlLAorICAgIE1wZWdUU0Jhc2VQcm9ncmFtICogcHJvZ3JhbSkKK3sKKyAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZSwgInByb2dyYW1fbnVtYmVyIDogJWQiLCBwcm9ncmFtLT5wcm9ncmFtX251bWJlcik7CisKKyAgbXBlZ3RzX2Jhc2VfZGVhY3RpdmF0ZV9wcm9ncmFtIChiYXNlLCBwcm9ncmFtKTsKKyAgbXBlZ3RzX2Jhc2VfZnJlZV9wcm9ncmFtIChwcm9ncmFtKTsKK30KKworc3RhdGljIHZvaWQKIG1wZWd0c19iYXNlX3JlbW92ZV9wcm9ncmFtIChNcGVnVFNCYXNlICogYmFzZSwgZ2ludCBwcm9ncmFtX251bWJlcikKIHsKICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZSwgInByb2dyYW1fbnVtYmVyIDogJWQiLCBwcm9ncmFtX251bWJlcik7CkBAIC00NzIsNyArNDkzLDcgQEAKICAgcmV0dXJuIGJzdHJlYW07CiB9CiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBtcGVndHNfYmFzZV9wcm9ncmFtX3JlbW92ZV9zdHJlYW0gKE1wZWdUU0Jhc2UgKiBiYXNlLAogICAgIE1wZWdUU0Jhc2VQcm9ncmFtICogcHJvZ3JhbSwgZ3VpbnQxNiBwaWQpCiB7CkBAIC03NzEsNiArNzkyLDcgQEAKICAgfQogCiAgIGlmIChvbGRfcGF0KSB7CisgICAgTXBlZ1RTQmFzZUNsYXNzICprbGFzcyA9IEdTVF9NUEVHVFNfQkFTRV9HRVRfQ0xBU1MgKGJhc2UpOwogICAgIC8qIGRlYWN0aXZhdGUgdGhlIG9sZCB0YWJsZSAqLwogICAgIEdTVF9MT0cgKCJEZWFjdGl2YXRpbmcgb2xkIFByb2dyYW0gQXNzb2NpYXRpb24gVGFibGUiKTsKIApAQCAtNzkxLDggKzgxMywxNSBAQAogICAgICAgR1NUX0lORk9fT0JKRUNUIChiYXNlLCAiUEFUIHJlbW92aW5nIHByb2dyYW0gMHglMDR4IDB4JTA0eCIsCiAgICAgICAgICAgcGF0cC0+cHJvZ3JhbV9udW1iZXIsIHBhdHAtPm5ldHdvcmtfb3JfcHJvZ3JhbV9tYXBfUElEKTsKIAotICAgICAgbXBlZ3RzX2Jhc2VfZGVhY3RpdmF0ZV9wcm9ncmFtIChiYXNlLCBwcm9ncmFtKTsKLSAgICAgIG1wZWd0c19iYXNlX3JlbW92ZV9wcm9ncmFtIChiYXNlLCBwYXRwLT5wcm9ncmFtX251bWJlcik7CisgICAgICBpZiAoa2xhc3MtPmNhbl9yZW1vdmVfcHJvZ3JhbSAoYmFzZSwgcHJvZ3JhbSkpIHsKKyAgICAgICAgbXBlZ3RzX2Jhc2VfZGVhY3RpdmF0ZV9wcm9ncmFtIChiYXNlLCBwcm9ncmFtKTsKKyAgICAgICAgbXBlZ3RzX2Jhc2VfcmVtb3ZlX3Byb2dyYW0gKGJhc2UsIHBhdHAtPnByb2dyYW1fbnVtYmVyKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8qIHN1Yi1jbGFzcyBub3cgb3ducyB0aGUgcHJvZ3JhbSBhbmQgbXVzdCBjYWxsCisgICAgICAgICAqIG1wZWd0c19iYXNlX2RlYWN0aXZhdGVfYW5kX2ZyZWVfcHJvZ3JhbSBsYXRlciAqLworICAgICAgICBnX2hhc2hfdGFibGVfc3RlYWwgKGJhc2UtPnByb2dyYW1zLAorICAgICAgICAgICAgR0lOVF9UT19QT0lOVEVSICgoZ2ludCkgcGF0cC0+cHJvZ3JhbV9udW1iZXIpKTsKKyAgICAgIH0KICAgICAgIC8qIEZJWE1FOiB3aGVuIHRoaXMgaGFwcGVucyBpdCBtYXkgc3RpbGwgYmUgcG10IHBpZCBvZiBhbm90aGVyCiAgICAgICAgKiBwcm9ncmFtLCBzbyBzZXR0aW5nIHRvIEZhbHNlIG1heSBtYWtlIGl0IGdvIHRocm91Z2ggZXhwZW5zaXZlCiAgICAgICAgKiBwYXRoIGluIGlzX3BzaSB1bm5lY2Vzc2FyaWx5ICovCkBAIC04NTQsNiArODgzLDcgQEAKIAogICAvKiBJZiB0aGUgY3VycmVudCBwcm9ncmFtIGlzIGFjdGl2ZSwgdGhpcyBtZWFucyB3ZSBoYXZlIGEgbmV3IHByb2dyYW0gKi8KICAgaWYgKG9sZF9wcm9ncmFtLT5hY3RpdmUpIHsKKyAgICBNcGVnVFNCYXNlQ2xhc3MgKmtsYXNzID0gR1NUX01QRUdUU19CQVNFX0dFVF9DTEFTUyAoYmFzZSk7CiAgICAgb2xkX3Byb2dyYW0gPSBtcGVndHNfYmFzZV9zdGVhbF9wcm9ncmFtIChiYXNlLCBwcm9ncmFtX251bWJlcik7CiAgICAgcHJvZ3JhbSA9IG1wZWd0c19iYXNlX25ld19wcm9ncmFtIChiYXNlLCBwcm9ncmFtX251bWJlciwgc2VjdGlvbi0+cGlkKTsKICAgICBwcm9ncmFtLT5wYXRjb3VudCA9IG9sZF9wcm9ncmFtLT5wYXRjb3VudDsKQEAgLTg2MSw4ICs4OTEsMTcgQEAKICAgICAgICAgR0lOVF9UT19QT0lOVEVSIChwcm9ncmFtX251bWJlciksIHByb2dyYW0pOwogCiAgICAgLyogRGVzYWN0aXZhdGUgdGhlIG9sZCBwcm9ncmFtICovCi0gICAgbXBlZ3RzX2Jhc2VfZGVhY3RpdmF0ZV9wcm9ncmFtIChiYXNlLCBvbGRfcHJvZ3JhbSk7Ci0gICAgbXBlZ3RzX2Jhc2VfZnJlZV9wcm9ncmFtIChvbGRfcHJvZ3JhbSk7CisgICAgLyogRklYTUUgOiBUSElTIElTIEJSRUFLSU5HIFRIRSBTVFJFQU0gU1dJVENISU5HIExPR0lDICEKKyAgICAgKiAgKi8KKyAgICBpZiAoa2xhc3MtPmNhbl9yZW1vdmVfcHJvZ3JhbSAoYmFzZSwgb2xkX3Byb2dyYW0pKSB7CisgICAgICBtcGVndHNfYmFzZV9kZWFjdGl2YXRlX3Byb2dyYW0gKGJhc2UsIG9sZF9wcm9ncmFtKTsKKyAgICAgIG1wZWd0c19iYXNlX2ZyZWVfcHJvZ3JhbSAob2xkX3Byb2dyYW0pOworICAgIH0gZWxzZSB7CisgICAgICAvKiBzdWItY2xhc3Mgbm93IG93bnMgdGhlIHByb2dyYW0gYW5kIG11c3QgY2FsbAorICAgICAgICogbXBlZ3RzX2Jhc2VfZGVhY3RpdmF0ZV9hbmRfZnJlZV9wcm9ncmFtIGxhdGVyICovCisgICAgICBnX2hhc2hfdGFibGVfc3RlYWwgKGJhc2UtPnByb2dyYW1zLAorICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAoKGdpbnQpIG9sZF9wcm9ncmFtLT5wcm9ncmFtX251bWJlcikpOworICAgIH0KICAgICBpbml0aWFsX3Byb2dyYW0gPSBGQUxTRTsKICAgfSBlbHNlCiAgICAgcHJvZ3JhbSA9IG9sZF9wcm9ncmFtOwpAQCAtMTQwNCwxMSArMTQ0MywyMyBAQAogICAgICAgICB9CiAgICAgICAgIGJhc2UtPm1vZGUgPSBCQVNFX01PREVfUFVTSElORzsKICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgR1NUX1dBUk5JTkcgKCJzdWJjbGFzcyBoYXMgbm8gc2VlayBpbXBsZW1lbnRhdGlvbiIpOwogICAgIH0KIAogICAgIHJldHVybiByZXQgPT0gR1NUX0ZMT1dfT0s7CiAgIH0KIAorICBpZiAoIWtsYXNzLT5zZWVrKSB7CisgICAgR1NUX1dBUk5JTkcgKCJzdWJjbGFzcyBoYXMgbm8gc2VlayBpbXBsZW1lbnRhdGlvbiIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmIChyYXRlIDw9IDAuMCkgeworICAgIEdTVF9XQVJOSU5HICgiTmVnYXRpdmUgcmF0ZSBub3Qgc3VwcG9ydGVkIik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKICAgR1NUX0RFQlVHICgic2VlayBldmVudCwgcmF0ZTogJWYgc3RhcnQ6ICUiIEdTVF9USU1FX0ZPUk1BVAogICAgICAgIiBzdG9wOiAlIiBHU1RfVElNRV9GT1JNQVQsIHJhdGUsIEdTVF9USU1FX0FSR1MgKHN0YXJ0KSwKICAgICAgIEdTVF9USU1FX0FSR1MgKHN0b3ApKTsKQEAgLTE0NTAsMTYgKzE1MDEsMTEgQEAKIAogCiAgIC8qIElmIHRoZSBzdWJjbGFzcyBjYW4gc2VlaywgZG8gdGhhdCAqLwotICBpZiAoa2xhc3MtPnNlZWspIHsKLSAgICByZXQgPSBrbGFzcy0+c2VlayAoYmFzZSwgZXZlbnQpOwotICAgIGlmIChHX1VOTElLRUxZIChyZXQgIT0gR1NUX0ZMT1dfT0spKQotICAgICAgR1NUX1dBUk5JTkcgKCJzZWVraW5nIGZhaWxlZCAlcyIsIGdzdF9mbG93X2dldF9uYW1lIChyZXQpKTsKLSAgICBlbHNlCi0gICAgICBiYXNlLT5sYXN0X3NlZWtfc2VxbnVtID0gR1NUX0VWRU5UX1NFUU5VTSAoZXZlbnQpOwotICB9IGVsc2UgewotICAgIC8qIEZJWE1FIDogQ2hlY2sgdGhpcyBiZWZvcmUgc28gd2UgZG9uJ3QgZG8gc2Vla3Mgd2UgY2FuJ3QgaGFuZGxlID8gKi8KLSAgICBHU1RfV0FSTklORyAoInN1YmNsYXNzIGhhcyBubyBzZWVrIGltcGxlbWVudGF0aW9uIik7Ci0gIH0KKyAgcmV0ID0ga2xhc3MtPnNlZWsgKGJhc2UsIGV2ZW50KTsKKyAgaWYgKEdfVU5MSUtFTFkgKHJldCAhPSBHU1RfRkxPV19PSykpCisgICAgR1NUX1dBUk5JTkcgKCJzZWVraW5nIGZhaWxlZCAlcyIsIGdzdF9mbG93X2dldF9uYW1lIChyZXQpKTsKKyAgZWxzZQorICAgIGJhc2UtPmxhc3Rfc2Vla19zZXFudW0gPSBHU1RfRVZFTlRfU0VRTlVNIChldmVudCk7CiAKICAgaWYgKGZsdXNoX2V2ZW50KSB7CiAgICAgLyogaWYgd2Ugc2VudCBhIEZMVVNIX1NUQVJULCB3ZSBub3cgc2VuZCBhIEZMVVNIX1NUT1AgKi8KZGlmZiAtLWdpdCBhL2dzdC9tcGVndHNkZW11eC9tcGVndHNiYXNlLmggYi9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5oCmluZGV4IGM0MjdiZDcuLmZjMGM2NTEgMTAwNjQ0Ci0tLSBhL2dzdC9tcGVndHNkZW11eC9tcGVndHNiYXNlLmgKKysrIGIvZ3N0L21wZWd0c2RlbXV4L21wZWd0c2Jhc2UuaApAQCAtMTc0LDYgKzE3NCwxMCBAQAogICB2b2lkICgqcHJvZ3JhbV9zdGFydGVkKSAoTXBlZ1RTQmFzZSAqYmFzZSwgTXBlZ1RTQmFzZVByb2dyYW0gKnByb2dyYW0pOwogICAvKiBwcm9ncmFtX3N0b3BwZWQgZ2V0cyBjYWxsZWQgd2hlbiBwYXQgbm8gbG9uZ2VyIGhhcyBwcm9ncmFtJ3MgcG10ICovCiAgIHZvaWQgKCpwcm9ncmFtX3N0b3BwZWQpIChNcGVnVFNCYXNlICpiYXNlLCBNcGVnVFNCYXNlUHJvZ3JhbSAqcHJvZ3JhbSk7CisgIC8qIFdoZXRoZXIgbXBlZ3RiYXNlIGNhbiBkZWFjdGl2YXRlL2ZyZWUgYSBwcm9ncmFtIG9yIHdoZXRoZXIgdGhlIHN1YmNsYXNzIHdpbGwgZG8gaXQKKyAgICogSWYgdGhlIHN1YmNsYXNzIHJlc3BvbmRzIFRSVUUsIGl0IHNob3VsZCBjYWxsIG1wZWd0c19iYXNlX2RlYWN0aXZhdGVfYW5kX2ZyZWVfcHJvZ3JhbSgpCisgICAqIHdoZW4gaXQgd2FudHMgdG8gcmVtb3ZlIGl0ICovCisgIGdib29sZWFuICgqY2FuX3JlbW92ZV9wcm9ncmFtKSAoTXBlZ1RTQmFzZSAqYmFzZSwgTXBlZ1RTQmFzZVByb2dyYW0gKnByb2dyYW0pOwogCiAgIC8qIHN0cmVhbV9hZGRlZCBpcyBjYWxsZWQgd2hlbmV2ZXIgYSBuZXcgc3RyZWFtIGhhcyBiZWVuIGlkZW50aWZpZWQgKi8KICAgdm9pZCAoKnN0cmVhbV9hZGRlZCkgKE1wZWdUU0Jhc2UgKmJhc2UsIE1wZWdUU0Jhc2VTdHJlYW0gKnN0cmVhbSwgTXBlZ1RTQmFzZVByb2dyYW0gKnByb2dyYW0pOwpAQCAtMjIyLDkgKzIyNiw4IEBACiAKIEdfR05VQ19JTlRFUk5BTCBnYm9vbGVhbiBnc3RfbXBlZ3RzYmFzZV9wbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKTsKIAotR19HTlVDX0lOVEVSTkFMIHZvaWQgbXBlZ3RzX2Jhc2VfcHJvZ3JhbV9yZW1vdmVfc3RyZWFtIChNcGVnVFNCYXNlICogYmFzZSwgTXBlZ1RTQmFzZVByb2dyYW0gKiBwcm9ncmFtLCBndWludDE2IHBpZCk7CitHX0dOVUNfSU5URVJOQUwgdm9pZCBtcGVndHNfYmFzZV9kZWFjdGl2YXRlX2FuZF9mcmVlX3Byb2dyYW0gKE1wZWdUU0Jhc2UgKmJhc2UsIE1wZWdUU0Jhc2VQcm9ncmFtICpwcm9ncmFtKTsKIAotR19HTlVDX0lOVEVSTkFMIHZvaWQgbXBlZ3RzX2Jhc2VfcmVtb3ZlX3Byb2dyYW0oTXBlZ1RTQmFzZSAqYmFzZSwgZ2ludCBwcm9ncmFtX251bWJlcik7CiBHX0VORF9ERUNMUwogCiAjZW5kaWYgLyogR1NUX01QRUdfVFNfQkFTRV9IICovCmRpZmYgLS1naXQgYS9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFja2V0aXplci5jIGIvZ3N0L21wZWd0c2RlbXV4L21wZWd0c3BhY2tldGl6ZXIuYwppbmRleCAxY2RiOWU5Li5kYjNiNzQxIDEwMDY0NAotLS0gYS9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFja2V0aXplci5jCisrKyBiL2dzdC9tcGVndHNkZW11eC9tcGVndHNwYWNrZXRpemVyLmMKQEAgLTIxMiw4ICsyMTIsNyBAQAogICBzdHJlYW0tPnNlY3Rpb25fbGVuZ3RoID0gMDsKICAgc3RyZWFtLT5zZWN0aW9uX29mZnNldCA9IDA7CiAgIHN0cmVhbS0+dGFibGVfaWQgPSBUQUJMRV9JRF9VTlNFVDsKLSAgaWYgKHN0cmVhbS0+c2VjdGlvbl9kYXRhKQotICAgIGdfZnJlZSAoc3RyZWFtLT5zZWN0aW9uX2RhdGEpOworICBnX2ZyZWUgKHN0cmVhbS0+c2VjdGlvbl9kYXRhKTsKICAgc3RyZWFtLT5zZWN0aW9uX2RhdGEgPSBOVUxMOwogfQogCkBAIC0yMjgsOCArMjI3LDYgQEAKIG1wZWd0c19wYWNrZXRpemVyX3N0cmVhbV9mcmVlIChNcGVnVFNQYWNrZXRpemVyU3RyZWFtICogc3RyZWFtKQogewogICBtcGVndHNfcGFja2V0aXplcl9jbGVhcl9zZWN0aW9uIChzdHJlYW0pOwotICBpZiAoc3RyZWFtLT5zZWN0aW9uX2RhdGEpCi0gICAgZ19mcmVlIChzdHJlYW0tPnNlY3Rpb25fZGF0YSk7CiAgIGdfc2xpc3RfZm9yZWFjaCAoc3RyZWFtLT5zdWJ0YWJsZXMsCiAgICAgICAoR0Z1bmMpIG1wZWd0c19wYWNrZXRpemVyX3N0cmVhbV9zdWJ0YWJsZV9mcmVlLCBOVUxMKTsKICAgZ19zbGlzdF9mcmVlIChzdHJlYW0tPnN1YnRhYmxlcyk7CkBAIC05ODQsNiArOTgxLDcgQEAKICAgICAgIEdTVF9MT0cKICAgICAgICAgICAoIlBJRCAweCUwNHggUFVTSSBhbmQgcG9pbnRlciA9PSAwLCBza2lwcGluZyBzdHJhaWdodCB0byBzZWN0aW9uX3N0YXJ0IHBhcnNpbmciLAogICAgICAgICAgIHBhY2tldC0+cGlkKTsKKyAgICAgIG1wZWd0c19wYWNrZXRpemVyX2NsZWFyX3NlY3Rpb24gKHN0cmVhbSk7CiAgICAgICBnb3RvIHNlY3Rpb25fc3RhcnQ7CiAgICAgfQogICB9CkBAIC0yMjg1LDggKzIyODMsMTIgQEAKICAgICAgICAgR1NUX0RFQlVHICgiVXNpbmcgZ3JvdXAgISIpOwogICAgICAgICByZWZwY3IgPSBncm91cC0+Zmlyc3RfcGNyOwogICAgICAgICByZWZwY3JvZmZzZXQgPSBncm91cC0+cGNyX29mZnNldDsKLSAgICAgICAgaWYgKHB0cyA8IHJlZnBjcikKLSAgICAgICAgICByZWZwY3IgLT0gUENSX01BWF9WQUxVRTsKKyAgICAgICAgaWYgKHB0cyA8IFBDUlRJTUVfVE9fR1NUVElNRSAocmVmcGNyKSkgeworICAgICAgICAgIGlmIChQQ1JUSU1FX1RPX0dTVFRJTUUgKHJlZnBjcikgLSBwdHMgPiBHU1RfU0VDT05EKQorICAgICAgICAgICAgcHRzICs9IFBDUl9HU1RfTUFYX1ZBTFVFOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlZnBjciA9IEdfTUFYSU5UNjQ7CisgICAgICAgIH0KICAgICAgIH0KICAgICB9CiAgICAgaWYgKHJlZnBjciAhPSBHX01BWElOVDY0KQpkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c2RlbXV4L21wZWd0c3BhcnNlLmMgYi9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFyc2UuYwppbmRleCA3NDNkYTRmLi42YWIyZTdkIDEwMDY0NAotLS0gYS9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFyc2UuYworKysgYi9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFyc2UuYwpAQCAtMTI1LDYgKzEyNSwxNiBAQAogZHJhaW5fcGVuZGluZ19idWZmZXJzIChNcGVnVFNQYXJzZTIgKiBwYXJzZSwgZ2Jvb2xlYW4gZHJhaW5fYWxsKTsKIAogc3RhdGljIHZvaWQKK21wZWd0c19wYXJzZV9kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KQoreworICBNcGVnVFNQYXJzZTIgKnBhcnNlID0gKE1wZWdUU1BhcnNlMiAqKSBvYmplY3Q7CisKKyAgZ3N0X2Zsb3dfY29tYmluZXJfZnJlZSAocGFyc2UtPmZsb3djb21iaW5lcik7CisKKyAgR1NUX0NBTExfUEFSRU5UIChHX09CSkVDVF9DTEFTUywgZGlzcG9zZSwgKG9iamVjdCkpOworfQorCitzdGF0aWMgdm9pZAogbXBlZ3RzX3BhcnNlX2NsYXNzX2luaXQgKE1wZWdUU1BhcnNlMkNsYXNzICoga2xhc3MpCiB7CiAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikgKGtsYXNzKTsKQEAgLTEzMyw2ICsxNDMsNyBAQAogCiAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IG1wZWd0c19wYXJzZV9zZXRfcHJvcGVydHk7CiAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IG1wZWd0c19wYXJzZV9nZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmRpc3Bvc2UgPSBtcGVndHNfcGFyc2VfZGlzcG9zZTsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NFVF9USU1FU1RBTVBTLAogICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJzZXQtdGltZXN0YW1wcyIsCkBAIC0xODcsNyArMTk4LDEwIEBACiAKICAgcGFyc2UtPnVzZXJfcGNyX3BpZCA9IHBhcnNlLT5wY3JfcGlkID0gLTE7CiAKKyAgcGFyc2UtPmZsb3djb21iaW5lciA9IGdzdF9mbG93X2NvbWJpbmVyX25ldyAoKTsKKwogICBwYXJzZS0+c3JjcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZzcmNfdGVtcGxhdGUsICJzcmMiKTsKKyAgZ3N0X2Zsb3dfY29tYmluZXJfYWRkX3BhZCAocGFyc2UtPmZsb3djb21iaW5lciwgcGFyc2UtPnNyY3BhZCk7CiAgIHBhcnNlLT5maXJzdCA9IFRSVUU7CiAgIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uIChwYXJzZS0+c3JjcGFkLAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKG1wZWd0c19wYXJzZV9zcmNfcGFkX3F1ZXJ5KSk7CkBAIC0zOTYsNiArNDEwLDcgQEAKICAgdHNwYWQtPnB1c2hlZCA9IEZBTFNFOwogICB0c3BhZC0+Zmxvd19yZXR1cm4gPSBHU1RfRkxPV19OT1RfTElOS0VEOwogICBnc3RfcGFkX3NldF9lbGVtZW50X3ByaXZhdGUgKHBhZCwgdHNwYWQpOworICBnc3RfZmxvd19jb21iaW5lcl9hZGRfcGFkIChwYXJzZS0+Zmxvd2NvbWJpbmVyLCBwYWQpOwogCiAgIHJldHVybiB0c3BhZDsKIH0KQEAgLTUwNCw4ICs1MTksMTEgQEAKIHN0YXRpYyB2b2lkCiBtcGVndHNfcGFyc2VfcmVsZWFzZV9wYWQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RQYWQgKiBwYWQpCiB7CisgIE1wZWdUU1BhcnNlMiAqcGFyc2UgPSAoTXBlZ1RTUGFyc2UyICopIGVsZW1lbnQ7CisKICAgZ3N0X3BhZF9zZXRfYWN0aXZlIChwYWQsIEZBTFNFKTsKICAgLyogd2UgZG8gdGhlIGNsZWFudXAgaW4gR3N0RWxlbWVudDo6cGFkLXJlbW92ZWQgKi8KKyAgZ3N0X2Zsb3dfY29tYmluZXJfcmVtb3ZlX3BhZCAocGFyc2UtPmZsb3djb21iaW5lciwgcGFkKTsKICAgZ3N0X2VsZW1lbnRfcmVtb3ZlX3BhZCAoZWxlbWVudCwgcGFkKTsKIH0KIApAQCAtNTI1LDkgKzU0MywxMCBAQAogICAgICAgICBpZiAoc2VjdGlvbi0+c3VidGFibGVfZXh0ZW5zaW9uICE9IHRzcGFkLT5wcm9ncmFtX251bWJlcikKICAgICAgICAgICB0b19wdXNoID0gRkFMU0U7CiAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UgaWYgKHNlY3Rpb24tPnRhYmxlX2lkICE9IDB4MDApIHsKICAgICAgIC8qIHRoZXJlJ3MgYSBwcm9ncmFtIGZpbHRlciBvbiB0aGUgcGFkIGJ1dCB0aGUgUE1UIGZvciB0aGUgcHJvZ3JhbSBoYXMgbm90Ci0gICAgICAgKiBiZWVuIHBhcnNlZCB5ZXQsIGlnbm9yZSB0aGUgcGFkIHVudGlsIHdlIGdldCBhIFBNVCAqLworICAgICAgICogYmVlbiBwYXJzZWQgeWV0LCBpZ25vcmUgdGhlIHBhZCB1bnRpbCB3ZSBnZXQgYSBQTVQuCisgICAgICAgKiBCdXQgd2UgYWx3YXlzIGFsbG93IFBBVCB0byBnbyB0aHJvdWdoICovCiAgICAgICB0b19wdXNoID0gRkFMU0U7CiAgICAgfQogICB9CkBAIC01NDIsOCArNTYxLDEwIEBACiAgICAgZ3N0X2J1ZmZlcl9maWxsIChidWYsIDAsIHBhY2tldC0+ZGF0YV9zdGFydCwKICAgICAgICAgcGFja2V0LT5kYXRhX2VuZCAtIHBhY2tldC0+ZGF0YV9zdGFydCk7CiAgICAgcmV0ID0gZ3N0X3BhZF9wdXNoICh0c3BhZC0+cGFkLCBidWYpOworICAgIHJldCA9IGdzdF9mbG93X2NvbWJpbmVyX3VwZGF0ZV9mbG93IChwYXJzZS0+Zmxvd2NvbWJpbmVyLCByZXQpOwogICB9CiAKKyAgR1NUX0xPR19PQkpFQ1QgKHBhcnNlLCAiUmV0dXJuaW5nICVzIiwgZ3N0X2Zsb3dfZ2V0X25hbWUgKHJldCkpOwogICByZXR1cm4gcmV0OwogfQogCkBAIC01NTIsMjkgKzU3MywzMCBAQAogICAgIE1wZWdUU1BhY2tldGl6ZXJQYWNrZXQgKiBwYWNrZXQpCiB7CiAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7Ci0gIE1wZWdUU0Jhc2VTdHJlYW0gKipwYWRfcGlkcyA9IE5VTEw7CisgIE1wZWdUU0Jhc2VQcm9ncmFtICpicCA9IE5VTEw7CiAKICAgaWYgKHRzcGFkLT5wcm9ncmFtX251bWJlciAhPSAtMSkgewotICAgIGlmICh0c3BhZC0+cHJvZ3JhbSkgewotICAgICAgTXBlZ1RTQmFzZVByb2dyYW0gKmJwID0gKE1wZWdUU0Jhc2VQcm9ncmFtICopIHRzcGFkLT5wcm9ncmFtOwotICAgICAgcGFkX3BpZHMgPSBicC0+c3RyZWFtczsKLSAgICB9IGVsc2UgewotICAgICAgLyogdGhlcmUncyBhIHByb2dyYW0gZmlsdGVyIG9uIHRoZSBwYWQgYnV0IHRoZSBQTVQgZm9yIHRoZSBwcm9ncmFtIGhhcyBub3QKLSAgICAgICAqIGJlZW4gcGFyc2VkIHlldCwgaWdub3JlIHRoZSBwYWQgdW50aWwgd2UgZ2V0IGEgUE1UICovCi0gICAgICBnb3RvIG91dDsKKyAgICBpZiAodHNwYWQtPnByb2dyYW0pCisgICAgICBicCA9IChNcGVnVFNCYXNlUHJvZ3JhbSAqKSB0c3BhZC0+cHJvZ3JhbTsKKyAgICBlbHNlCisgICAgICBicCA9IG1wZWd0c19iYXNlX2dldF9wcm9ncmFtICgoTXBlZ1RTQmFzZSAqKSBwYXJzZSwKKyAgICAgICAgICB0c3BhZC0+cHJvZ3JhbV9udW1iZXIpOworICB9CisKKyAgaWYgKGJwKSB7CisgICAgaWYgKHBhY2tldC0+cGlkID09IGJwLT5wbXRfcGlkIHx8IGJwLT5zdHJlYW1zID09IE5VTEwKKyAgICAgICAgfHwgYnAtPnN0cmVhbXNbcGFja2V0LT5waWRdKSB7CisgICAgICBHc3RCdWZmZXIgKmJ1ZiA9CisgICAgICAgICAgZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChwYWNrZXQtPmRhdGFfZW5kIC0gcGFja2V0LT5kYXRhX3N0YXJ0KTsKKyAgICAgIGdzdF9idWZmZXJfZmlsbCAoYnVmLCAwLCBwYWNrZXQtPmRhdGFfc3RhcnQsCisgICAgICAgICAgcGFja2V0LT5kYXRhX2VuZCAtIHBhY2tldC0+ZGF0YV9zdGFydCk7CisgICAgICAvKiBwdXNoIGlmIHRoZXJlJ3Mgbm8gZmlsdGVyIG9yIGlmIHRoZSBwaWQgaXMgaW4gdGhlIGZpbHRlciAqLworICAgICAgcmV0ID0gZ3N0X3BhZF9wdXNoICh0c3BhZC0+cGFkLCBidWYpOworICAgICAgcmV0ID0gZ3N0X2Zsb3dfY29tYmluZXJfdXBkYXRlX2Zsb3cgKHBhcnNlLT5mbG93Y29tYmluZXIsIHJldCk7CiAgICAgfQogICB9CisgIEdTVF9ERUJVR19PQkpFQ1QgKHBhcnNlLCAiUmV0dXJuaW5nICVzIiwgZ3N0X2Zsb3dfZ2V0X25hbWUgKHJldCkpOwogCi0gIGlmIChwYWRfcGlkcyA9PSBOVUxMIHx8IHBhZF9waWRzW3BhY2tldC0+cGlkXSkgewotICAgIEdzdEJ1ZmZlciAqYnVmID0KLSAgICAgICAgZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChwYWNrZXQtPmRhdGFfZW5kIC0gcGFja2V0LT5kYXRhX3N0YXJ0KTsKLSAgICBnc3RfYnVmZmVyX2ZpbGwgKGJ1ZiwgMCwgcGFja2V0LT5kYXRhX3N0YXJ0LAotICAgICAgICBwYWNrZXQtPmRhdGFfZW5kIC0gcGFja2V0LT5kYXRhX3N0YXJ0KTsKLSAgICAvKiBwdXNoIGlmIHRoZXJlJ3Mgbm8gZmlsdGVyIG9yIGlmIHRoZSBwaWQgaXMgaW4gdGhlIGZpbHRlciAqLwotICAgIHJldCA9IGdzdF9wYWRfcHVzaCAodHNwYWQtPnBhZCwgYnVmKTsKLSAgfQotCi1vdXQ6CiAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTgxOCwxNSArODQwLDE1IEBACiAKICAgICBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKSA9IG91dF90cyArIHBhcnNlLT50c19vZmZzZXQ7CiAgICAgR1NUX0JVRkZFUl9EVFMgKGJ1ZmZlcikgPSBvdXRfdHMgKyBwYXJzZS0+dHNfb2Zmc2V0OwotICAgIGlmIChyZXQgPT0gR1NUX0ZMT1dfT0spCisgICAgaWYgKHJldCA9PSBHU1RfRkxPV19PSykgewogICAgICAgcmV0ID0gZ3N0X3BhZF9wdXNoIChwYXJzZS0+c3JjcGFkLCBidWZmZXIpOwotICAgIGVsc2UKKyAgICAgIHJldCA9IGdzdF9mbG93X2NvbWJpbmVyX3VwZGF0ZV9mbG93IChwYXJzZS0+Zmxvd2NvbWJpbmVyLCByZXQpOworICAgIH0gZWxzZQogICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKIAogICAgIC8qIEZyZWUgdGhpcyBsaXN0IG5vZGUgYW5kIG1vdmUgdG8gdGhlIG5leHQgKi8KICAgICBwID0gZ19saXN0X3ByZXZpb3VzIChsKTsKLSAgICBwYXJzZS0+cGVuZGluZ19idWZmZXJzID0gZ19saXN0X3JlbW92ZV9saW5rIChwYXJzZS0+cGVuZGluZ19idWZmZXJzLCBsKTsKLSAgICBnX2xpc3RfZnJlZV8xIChsKTsKKyAgICBwYXJzZS0+cGVuZGluZ19idWZmZXJzID0gZ19saXN0X2RlbGV0ZV9saW5rIChwYXJzZS0+cGVuZGluZ19idWZmZXJzLCBsKTsKICAgICBsID0gcDsKICAgfQogCkBAIC04NzIsOCArODk0LDEwIEBACiAgICAgfQogICB9CiAKLSAgaWYgKGJ1ZmZlciAhPSBOVUxMKQorICBpZiAoYnVmZmVyICE9IE5VTEwpIHsKICAgICByZXQgPSBnc3RfcGFkX3B1c2ggKHBhcnNlLT5zcmNwYWQsIGJ1ZmZlcik7CisgICAgcmV0ID0gZ3N0X2Zsb3dfY29tYmluZXJfdXBkYXRlX2Zsb3cgKHBhcnNlLT5mbG93Y29tYmluZXIsIHJldCk7CisgIH0KIAogICByZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c2RlbXV4L21wZWd0c3BhcnNlLmggYi9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFyc2UuaAppbmRleCBkM2JjNmEyLi5mODliZDRjIDEwMDY0NAotLS0gYS9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFyc2UuaAorKysgYi9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFyc2UuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBHU1RfTVBFR19UU19QQVJTRV9ICiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0Zmxvd2NvbWJpbmVyLmg+CiAjaW5jbHVkZSAibXBlZ3RzYmFzZS5oIgogI2luY2x1ZGUgIm1wZWd0c3BhY2tldGl6ZXIuaCIKIApAQCAtNjEsOCArNjIsMTEgQEAKICAgLyogQWx3YXlzIHByZXNlbnQgc291cmNlIHBhZCAqLwogICBHc3RQYWQgKnNyY3BhZDsKIAorICAvKiBSZXF1ZXN0IHNvdXJjZSAoc2luZ2xlIHByb2dyYW0pIHBhZHMgKi8KICAgR0xpc3QgKnNyY3BhZHM7CiAKKyAgR3N0Rmxvd0NvbWJpbmVyICpmbG93Y29tYmluZXI7CisgIAogICAvKiBzdGF0ZSAqLwogICBnYm9vbGVhbiBmaXJzdDsKICAgZ2Jvb2xlYW4gc2V0X3RpbWVzdGFtcHM7CmRpZmYgLS1naXQgYS9nc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5jIGIvZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYwppbmRleCA1MjMxYzA1Li44YTQxZjkwIDEwMDY0NAotLS0gYS9nc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5jCisrKyBiL2dzdC9tcGVndHNkZW11eC90c2RlbXV4LmMKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z3N0L3RhZy90YWcuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+CisjaW5jbHVkZSA8Z3N0L2Jhc2UvYmFzZS5oPgorI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgogCiAjaW5jbHVkZSAibXBlZ3RzYmFzZS5oIgogI2luY2x1ZGUgInRzZGVtdXguaCIKQEAgLTQ2LDcgKzQ4LDEwIEBACiAjaW5jbHVkZSAicGVzcGFyc2UuaCIKICNpbmNsdWRlIDxnc3QvY29kZWNwYXJzZXJzL2dzdGgyNjRwYXJzZXIuaD4KICNpbmNsdWRlIDxnc3QvY29kZWNwYXJzZXJzL2dzdG1wZWd2aWRlb3BhcnNlci5oPgotI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGJ5dGV3cml0ZXIuaD4KKworI2luY2x1ZGUgPG1hdGguaD4KKworI2RlZmluZSBfZ3N0X2xvZzIoeCkgKGxvZyh4KS9sb2coMikpCiAKIC8qCiAgKiB0c2RlbXV4CkBAIC0yMDQsNiArMjA5LDggQEAKICAgICAgICJzeXN0ZW1zdHJlYW0gPSAoYm9vbGVhbikgRkFMU0U7ICIgXAogICAgICJ2aWRlby94LWgyNjQsc3RyZWFtLWZvcm1hdD0oc3RyaW5nKWJ5dGUtc3RyZWFtLCIgXAogICAgICAgImFsaWdubWVudD0oc3RyaW5nKW5hbDsiIFwKKyAgICAidmlkZW8veC1oMjY1LHN0cmVhbS1mb3JtYXQ9KHN0cmluZylieXRlLXN0cmVhbSwiIFwKKyAgICAgICJhbGlnbm1lbnQ9KHN0cmluZyluYWw7IiBcCiAgICAgInZpZGVvL3gtZGlyYWM7IiBcCiAgICAgInZpZGVvL3gtY2F2czsiIFwKICAgICAidmlkZW8veC13bXYsIiBcCkBAIC0yMzAsMTIgKzIzNywxMyBAQAogICAgICAgIm11dGUgPSAoYm9vbGVhbikgeyBGQUxTRSwgVFJVRSB9OyAiIFwKICAgICAiYXVkaW8veC1hYzM7IGF1ZGlvL3gtZWFjMzsiIFwKICAgICAiYXVkaW8veC1kdHM7IiBcCisgICAgImF1ZGlvL3gtb3B1czsiIFwKICAgICAiYXVkaW8veC1wcml2YXRlLXRzLWxwY20iIFwKICAgKQogCiAvKiBDYW4gYWxzbyB1c2UgdGhlIHN1YnBpY3R1cmUgcGFkcyBmb3IgdGV4dCBzdWJ0aXRsZXM/ICovCiAjZGVmaW5lIFNVQlBJQ1RVUkVfQ0FQUyBcCi0gICAgR1NUX1NUQVRJQ19DQVBTICgic3VicGljdHVyZS94LXBnczsgc3VicGljdHVyZS94LWR2ZCIpCisgICAgR1NUX1NUQVRJQ19DQVBTICgic3VicGljdHVyZS94LXBnczsgc3VicGljdHVyZS94LWR2ZDsgc3VicGljdHVyZS94LWR2YiIpCiAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSB2aWRlb190ZW1wbGF0ZSA9CiBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInZpZGVvXyUwNHgiLCBHU1RfUEFEX1NSQywKQEAgLTI3Niw2ICsyODQsOSBAQAogZ3N0X3RzX2RlbXV4X3Byb2dyYW1fc3RhcnRlZCAoTXBlZ1RTQmFzZSAqIGJhc2UsIE1wZWdUU0Jhc2VQcm9ncmFtICogcHJvZ3JhbSk7CiBzdGF0aWMgdm9pZAogZ3N0X3RzX2RlbXV4X3Byb2dyYW1fc3RvcHBlZCAoTXBlZ1RTQmFzZSAqIGJhc2UsIE1wZWdUU0Jhc2VQcm9ncmFtICogcHJvZ3JhbSk7CitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF90c19kZW11eF9jYW5fcmVtb3ZlX3Byb2dyYW0gKE1wZWdUU0Jhc2UgKiBiYXNlLAorICAgIE1wZWdUU0Jhc2VQcm9ncmFtICogcHJvZ3JhbSk7CiBzdGF0aWMgdm9pZCBnc3RfdHNfZGVtdXhfcmVzZXQgKE1wZWdUU0Jhc2UgKiBiYXNlKTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfdHNfZGVtdXhfcHVzaCAoTXBlZ1RTQmFzZSAqIGJhc2UsIE1wZWdUU1BhY2tldGl6ZXJQYWNrZXQgKiBwYWNrZXQsCkBAIC0zNzMsNiArMzg0LDcgQEAKICAgdHNfY2xhc3MtPnB1c2hfZXZlbnQgPSBHU1RfREVCVUdfRlVOQ1BUUiAocHVzaF9ldmVudCk7CiAgIHRzX2NsYXNzLT5wcm9ncmFtX3N0YXJ0ZWQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RzX2RlbXV4X3Byb2dyYW1fc3RhcnRlZCk7CiAgIHRzX2NsYXNzLT5wcm9ncmFtX3N0b3BwZWQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RzX2RlbXV4X3Byb2dyYW1fc3RvcHBlZCk7CisgIHRzX2NsYXNzLT5jYW5fcmVtb3ZlX3Byb2dyYW0gPSBnc3RfdHNfZGVtdXhfY2FuX3JlbW92ZV9wcm9ncmFtOwogICB0c19jbGFzcy0+c3RyZWFtX2FkZGVkID0gZ3N0X3RzX2RlbXV4X3N0cmVhbV9hZGRlZDsKICAgdHNfY2xhc3MtPnN0cmVhbV9yZW1vdmVkID0gZ3N0X3RzX2RlbXV4X3N0cmVhbV9yZW1vdmVkOwogICB0c19jbGFzcy0+c2VlayA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdHNfZGVtdXhfZG9fc2Vlayk7CkBAIC0zOTcsNiArNDA5LDExIEBACiAgICAgZGVtdXgtPmdsb2JhbF90YWdzID0gTlVMTDsKICAgfQogCisgIGlmIChkZW11eC0+cHJldmlvdXNfcHJvZ3JhbSkgeworICAgIG1wZWd0c19iYXNlX2RlYWN0aXZhdGVfYW5kX2ZyZWVfcHJvZ3JhbSAoYmFzZSwgZGVtdXgtPnByZXZpb3VzX3Byb2dyYW0pOworICAgIGRlbXV4LT5wcmV2aW91c19wcm9ncmFtID0gTlVMTDsKKyAgfQorCiAgIGRlbXV4LT5oYXZlX2dyb3VwX2lkID0gRkFMU0U7CiAgIGRlbXV4LT5ncm91cF9pZCA9IEdfTUFYVUlOVDsKIApAQCAtODUxLDggKzg2OCw4IEBACiAKICAgZ3N0X3NlZ21lbnRfZG9fc2VlayAoJmRlbXV4LT5zZWdtZW50LCByYXRlLCBmb3JtYXQsIGZsYWdzLCBzdGFydF90eXBlLAogICAgICAgc3RhcnQsIHN0b3BfdHlwZSwgc3RvcCwgTlVMTCk7Ci0gIGlmICghKGZsYWdzICYgR1NUX1NFRUtfRkxBR19BQ0NVUkFURSkpCi0gICAgZGVtdXgtPnJlc2V0X3NlZ21lbnQgPSBUUlVFOworICAvKiBSZXNldCBzZWdtZW50IGlmIHdlJ3JlIG5vdCBkb2luZyBhbiBhY2N1cmF0ZSBzZWVrICovCisgIGRlbXV4LT5yZXNldF9zZWdtZW50ID0gKCEoZmxhZ3MgJiBHU1RfU0VFS19GTEFHX0FDQ1VSQVRFKSk7CiAKICAgaWYgKGRlbXV4LT5zZWdtZW50X2V2ZW50KSB7CiAgICAgZ3N0X2V2ZW50X3VucmVmIChkZW11eC0+c2VnbWVudF9ldmVudCk7CkBAIC0xMTcxLDcgKzExODgsNyBAQAogICAgICAgICAgIEdTVF9NVFNfREVTQ19EVkJfU1VCVElUTElORyk7CiAgICAgICBpZiAoZGVzYykgewogICAgICAgICBHU1RfTE9HICgic3VidGl0bGluZyIpOwotICAgICAgICBpc19wcml2YXRlID0gVFJVRTsKKyAgICAgICAgaXNfc3VicGljdHVyZSA9IFRSVUU7CiAgICAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlICgic3VicGljdHVyZS94LWR2YiIpOwogICAgICAgICBzcGFyc2UgPSBUUlVFOwogICAgICAgICBicmVhazsKQEAgLTExODksNiArMTIwNiwxNzkgQEAKICAgICAgICAgICBpc19hdWRpbyA9IFRSVUU7CiAgICAgICAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUgKCJhdWRpby94LXNtcHRlLTMwMm0iKTsKICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEUkZfSURfT1BVUzoKKyAgICAgICAgICBkZXNjID0gbXBlZ3RzX2dldF9kZXNjcmlwdG9yX2Zyb21fc3RyZWFtIChic3RyZWFtLAorICAgICAgICAgICAgICBHU1RfTVRTX0RFU0NfRFZCX0VYVEVOU0lPTik7CisgICAgICAgICAgaWYgKGRlc2MgIT0gTlVMTCAmJiBkZXNjLT50YWdfZXh0ZW5zaW9uID09IDB4ODAgJiYgZGVzYy0+bGVuZ3RoID49IDEpIHsgICAgICAgLyogVXNlciBkZWZpbmVkIChwcm92aXNpb25hbCBPcHVzKSAqLworICAgICAgICAgICAgZ3VpbnQ4IGNoYW5uZWxfY29uZmlnX2NvZGU7CisgICAgICAgICAgICBHc3RCeXRlUmVhZGVyIGJyOworCisgICAgICAgICAgICAvKiBza2lwIHRhZywgbGVuZ3RoIGFuZCB0YWdfZXh0ZW5zaW9uICovCisgICAgICAgICAgICBnc3RfYnl0ZV9yZWFkZXJfaW5pdCAoJmJyLCBkZXNjLT5kYXRhICsgMywgZGVzYy0+bGVuZ3RoIC0gMSk7CisgICAgICAgICAgICBjaGFubmVsX2NvbmZpZ19jb2RlID0gZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50OF91bmNoZWNrZWQgKCZicik7CisKKyAgICAgICAgICAgIGlmICgoY2hhbm5lbF9jb25maWdfY29kZSAmIDB4OGYpIDw9IDgpIHsKKyAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGd1aW50OCBjb3VwbGVkX3N0cmVhbV9jb3VudHNbOV0gPSB7CisgICAgICAgICAgICAgICAgMSwgMCwgMSwgMSwgMiwgMiwgMiwgMywgMworICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZ3VpbnQ4IGNoYW5uZWxfbWFwX2FbOF1bOF0gPSB7CisgICAgICAgICAgICAgICAgezB9LAorICAgICAgICAgICAgICAgIHswLCAxfSwKKyAgICAgICAgICAgICAgICB7MCwgMiwgMX0sCisgICAgICAgICAgICAgICAgezAsIDEsIDIsIDN9LAorICAgICAgICAgICAgICAgIHswLCA0LCAxLCAyLCAzfSwKKyAgICAgICAgICAgICAgICB7MCwgNCwgMSwgMiwgMywgNX0sCisgICAgICAgICAgICAgICAgezAsIDQsIDEsIDIsIDMsIDUsIDZ9LAorICAgICAgICAgICAgICAgIHswLCA2LCAxLCAyLCAzLCA0LCA1LCA3fSwKKyAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGd1aW50OCBjaGFubmVsX21hcF9iWzhdWzhdID0geworICAgICAgICAgICAgICAgIHswfSwKKyAgICAgICAgICAgICAgICB7MCwgMX0sCisgICAgICAgICAgICAgICAgezAsIDEsIDJ9LAorICAgICAgICAgICAgICAgIHswLCAxLCAyLCAzfSwKKyAgICAgICAgICAgICAgICB7MCwgMSwgMiwgMywgNH0sCisgICAgICAgICAgICAgICAgezAsIDEsIDIsIDMsIDQsIDV9LAorICAgICAgICAgICAgICAgIHswLCAxLCAyLCAzLCA0LCA1LCA2fSwKKyAgICAgICAgICAgICAgICB7MCwgMSwgMiwgMywgNCwgNSwgNiwgN30sCisgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgZ2ludCBjaGFubmVscyA9IC0xLCBzdHJlYW1fY291bnQsIGNvdXBsZWRfY291bnQsIG1hcHBpbmdfZmFtaWx5OworICAgICAgICAgICAgICBndWludDggKmNoYW5uZWxfbWFwcGluZyA9IE5VTEw7CisKKyAgICAgICAgICAgICAgY2hhbm5lbHMgPSBjaGFubmVsX2NvbmZpZ19jb2RlID8gKGNoYW5uZWxfY29uZmlnX2NvZGUgJiAweDBmKSA6IDI7CisgICAgICAgICAgICAgIGlmIChjaGFubmVsX2NvbmZpZ19jb2RlID09IDAgfHwgY2hhbm5lbF9jb25maWdfY29kZSA9PSAweDgwKSB7CisgICAgICAgICAgICAgICAgLyogRHVhbCBNb25vICovCisgICAgICAgICAgICAgICAgbWFwcGluZ19mYW1pbHkgPSAyNTU7CisgICAgICAgICAgICAgICAgaWYgKGNoYW5uZWxfY29uZmlnX2NvZGUgPT0gMCkgeworICAgICAgICAgICAgICAgICAgc3RyZWFtX2NvdW50ID0gMTsKKyAgICAgICAgICAgICAgICAgIGNvdXBsZWRfY291bnQgPSAxOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICBzdHJlYW1fY291bnQgPSAyOworICAgICAgICAgICAgICAgICAgY291cGxlZF9jb3VudCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNoYW5uZWxfbWFwcGluZyA9IGdfbmV3MCAoZ3VpbnQ4LCBjaGFubmVscyk7CisgICAgICAgICAgICAgICAgbWVtY3B5IChjaGFubmVsX21hcHBpbmcsICZjaGFubmVsX21hcF9hWzFdLCBjaGFubmVscyk7CisgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbm5lbF9jb25maWdfY29kZSA8PSA4KSB7CisgICAgICAgICAgICAgICAgbWFwcGluZ19mYW1pbHkgPSAoY2hhbm5lbHMgPiAyKSA/IDEgOiAwOworICAgICAgICAgICAgICAgIHN0cmVhbV9jb3VudCA9CisgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfY29uZmlnX2NvZGUgLQorICAgICAgICAgICAgICAgICAgICBjb3VwbGVkX3N0cmVhbV9jb3VudHNbY2hhbm5lbF9jb25maWdfY29kZV07CisgICAgICAgICAgICAgICAgY291cGxlZF9jb3VudCA9IGNvdXBsZWRfc3RyZWFtX2NvdW50c1tjaGFubmVsX2NvbmZpZ19jb2RlXTsKKyAgICAgICAgICAgICAgICBpZiAobWFwcGluZ19mYW1pbHkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgY2hhbm5lbF9tYXBwaW5nID0gZ19uZXcwIChndWludDgsIGNoYW5uZWxzKTsKKyAgICAgICAgICAgICAgICAgIG1lbWNweSAoY2hhbm5lbF9tYXBwaW5nLCAmY2hhbm5lbF9tYXBfYVtjaGFubmVscyAtIDFdLAorICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hhbm5lbF9jb25maWdfY29kZSA+PSAweDgyCisgICAgICAgICAgICAgICAgICAmJiBjaGFubmVsX2NvbmZpZ19jb2RlIDw9IDB4ODgpIHsKKyAgICAgICAgICAgICAgICBtYXBwaW5nX2ZhbWlseSA9IDE7CisgICAgICAgICAgICAgICAgc3RyZWFtX2NvdW50ID0gY2hhbm5lbHM7CisgICAgICAgICAgICAgICAgY291cGxlZF9jb3VudCA9IDA7CisgICAgICAgICAgICAgICAgY2hhbm5lbF9tYXBwaW5nID0gZ19uZXcwIChndWludDgsIGNoYW5uZWxzKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkgKGNoYW5uZWxfbWFwcGluZywgJmNoYW5uZWxfbWFwX2JbY2hhbm5lbHMgLSAxXSwKKyAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHMpOworICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5uZWxfY29uZmlnX2NvZGUgPT0gMHg4MSkgeworICAgICAgICAgICAgICAgIGlmIChnc3RfYnl0ZV9yZWFkZXJfZ2V0X3JlbWFpbmluZyAoJmJyKSA8IDIpIHsKKyAgICAgICAgICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsCisgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgT3B1cyBkZXNjcmlwdG9yIHdpdGggZXh0ZW5kZWQgY2hhbm5lbCBjb25maWd1cmF0aW9uIik7CisgICAgICAgICAgICAgICAgICBjaGFubmVscyA9IC0xOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2hhbm5lbHMgPSBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQ4X3VuY2hlY2tlZCAoJmJyKTsKKyAgICAgICAgICAgICAgICBtYXBwaW5nX2ZhbWlseSA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDhfdW5jaGVja2VkICgmYnIpOworCisgICAgICAgICAgICAgICAgLyogT3ZlcndyaXRlIHZhbHVlcyBmcm9tIGFib3ZlICovCisgICAgICAgICAgICAgICAgaWYgKGNoYW5uZWxzID09IDApIHsKKyAgICAgICAgICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsCisgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgT3B1cyBkZXNjcmlwdG9yIHdpdGggZXh0ZW5kZWQgY2hhbm5lbCBjb25maWd1cmF0aW9uIik7CisgICAgICAgICAgICAgICAgICBjaGFubmVscyA9IC0xOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKG1hcHBpbmdfZmFtaWx5ID09IDAgJiYgY2hhbm5lbHMgPD0gMikgeworICAgICAgICAgICAgICAgICAgc3RyZWFtX2NvdW50ID0gY2hhbm5lbHMgLSBjb3VwbGVkX3N0cmVhbV9jb3VudHNbY2hhbm5lbHNdOworICAgICAgICAgICAgICAgICAgY291cGxlZF9jb3VudCA9IGNvdXBsZWRfc3RyZWFtX2NvdW50c1tjaGFubmVsc107CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIEdzdEJpdFJlYWRlciBicmVhZGVyOworICAgICAgICAgICAgICAgICAgZ3VpbnQ4IHN0cmVhbV9jb3VudF9taW51c19vbmUsIGNvdXBsZWRfc3RyZWFtX2NvdW50OworICAgICAgICAgICAgICAgICAgZ2ludCBzdHJlYW1fY291bnRfbWludXNfb25lX2xlbiwgY291cGxlZF9zdHJlYW1fY291bnRfbGVuOworICAgICAgICAgICAgICAgICAgZ2ludCBjaGFubmVsX21hcHBpbmdfbGVuLCBpOworCisgICAgICAgICAgICAgICAgICBnc3RfYml0X3JlYWRlcl9pbml0ICgmYnJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X2RhdGFfdW5jaGVja2VkCisgICAgICAgICAgICAgICAgICAgICAgKCZiciwgZ3N0X2J5dGVfcmVhZGVyX2dldF9yZW1haW5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCZicikpLCBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3JlbWFpbmluZyAoJmJyKSk7CisKKyAgICAgICAgICAgICAgICAgIHN0cmVhbV9jb3VudF9taW51c19vbmVfbGVuID0gY2VpbCAoX2dzdF9sb2cyIChjaGFubmVscykpOworICAgICAgICAgICAgICAgICAgaWYgKCFnc3RfYml0X3JlYWRlcl9nZXRfYml0c191aW50OCAoJmJyZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJlYW1fY291bnRfbWludXNfb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1fY291bnRfbWludXNfb25lX2xlbikpIHsKKyAgICAgICAgICAgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIE9wdXMgZGVzY3JpcHRvciB3aXRoIGV4dGVuZGVkIGNoYW5uZWwgY29uZmlndXJhdGlvbiIpOworICAgICAgICAgICAgICAgICAgICBjaGFubmVscyA9IC0xOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgc3RyZWFtX2NvdW50ID0gc3RyZWFtX2NvdW50X21pbnVzX29uZSArIDE7CisgICAgICAgICAgICAgICAgICBjb3VwbGVkX3N0cmVhbV9jb3VudF9sZW4gPQorICAgICAgICAgICAgICAgICAgICAgIGNlaWwgKF9nc3RfbG9nMiAoc3RyZWFtX2NvdW50X21pbnVzX29uZSArIDIpKTsKKworICAgICAgICAgICAgICAgICAgaWYgKCFnc3RfYml0X3JlYWRlcl9nZXRfYml0c191aW50OCAoJmJyZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjb3VwbGVkX3N0cmVhbV9jb3VudCwgY291cGxlZF9zdHJlYW1fY291bnRfbGVuKSkgeworICAgICAgICAgICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LAorICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgT3B1cyBkZXNjcmlwdG9yIHdpdGggZXh0ZW5kZWQgY2hhbm5lbCBjb25maWd1cmF0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzID0gLTE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICBjb3VwbGVkX2NvdW50ID0gY291cGxlZF9zdHJlYW1fY291bnQ7CisKKyAgICAgICAgICAgICAgICAgIGNoYW5uZWxfbWFwcGluZ19sZW4gPQorICAgICAgICAgICAgICAgICAgICAgIGNlaWwgKF9nc3RfbG9nMiAoc3RyZWFtX2NvdW50X21pbnVzX29uZSArIDEgKworICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VwbGVkX3N0cmVhbV9jb3VudCArIDEpKTsKKyAgICAgICAgICAgICAgICAgIGNoYW5uZWxfbWFwcGluZyA9IGdfbmV3MCAoZ3VpbnQ4LCBjaGFubmVscyk7CisgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY2hhbm5lbHM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWdzdF9iaXRfcmVhZGVyX2dldF9iaXRzX3VpbnQ4ICgmYnJlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hhbm5lbF9tYXBwaW5nW2ldLCBjaGFubmVsX21hcHBpbmdfbGVuKSkgeworICAgICAgICAgICAgICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIE9wdXMgZGVzY3JpcHRvciB3aXRoIGV4dGVuZGVkIGNoYW5uZWwgY29uZmlndXJhdGlvbiIpOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgIC8qIGVycm9yIGFib3ZlICovCisgICAgICAgICAgICAgICAgICBpZiAoaSAhPSBjaGFubmVscykgeworICAgICAgICAgICAgICAgICAgICBjaGFubmVscyA9IC0xOworICAgICAgICAgICAgICAgICAgICBnX2ZyZWUgKGNoYW5uZWxfbWFwcGluZyk7CisgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfbWFwcGluZyA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgIGlmIChjaGFubmVscyAhPSAtMSkgeworICAgICAgICAgICAgICAgIGlzX2F1ZGlvID0gVFJVRTsKKyAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9IGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmF1ZGlvX3RlbXBsYXRlKTsKKyAgICAgICAgICAgICAgICBuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgiYXVkaW9fJTA0eCIsIGJzdHJlYW0tPnBpZCk7CisKKyAgICAgICAgICAgICAgICBjYXBzID0KKyAgICAgICAgICAgICAgICAgICAgZ3N0X2NvZGVjX3V0aWxzX29wdXNfY3JlYXRlX2NhcHMgKDQ4MDAwLCBjaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgbWFwcGluZ19mYW1pbHksIHN0cmVhbV9jb3VudCwgY291cGxlZF9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgY2hhbm5lbF9tYXBwaW5nKTsKKworICAgICAgICAgICAgICAgIGdfZnJlZSAoY2hhbm5lbF9tYXBwaW5nKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwKKyAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGNoYW5uZWwgY29uZmlnIGNvZGUgMHglMDJ4IiwgY2hhbm5lbF9jb25maWdfY29kZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsICJPcHVzLCBidXQgbm8gZXh0ZW5zaW9uIGRlc2NyaXB0b3IiKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRFJGX0lEX0hFVkM6CiAgICAgICAgICAgaXNfdmlkZW8gPSBUUlVFOwogICAgICAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgidmlkZW8veC1oMjY1IiwKQEAgLTE0MDAsOCArMTU5MCw3IEBACiAgICAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKHBhZCwgZ3N0X3RzX2RlbXV4X3NyY3BhZF9ldmVudCk7CiAgIH0KIAotICBpZiAobmFtZSkKLSAgICBnX2ZyZWUgKG5hbWUpOworICBnX2ZyZWUgKG5hbWUpOwogICBpZiAodGVtcGxhdGUpCiAgICAgZ3N0X29iamVjdF91bnJlZiAodGVtcGxhdGUpOwogICBpZiAoY2FwcykKQEAgLTE0MzYsNyArMTYyNSw4IEBACiAgICAgc3RyZWFtLT5hY3RpdmUgPSBGQUxTRTsKIAogICAgIHN0cmVhbS0+bmVlZF9uZXdzZWdtZW50ID0gVFJVRTsKLSAgICBkZW11eC0+cmVzZXRfc2VnbWVudCA9IFRSVUU7CisgICAgLyogUmVzZXQgc2VnbWVudCBpZiB3ZSdyZSBub3QgZG9pbmcgYW4gYWNjdXJhdGUgc2VlayAqLworICAgIGRlbXV4LT5yZXNldF9zZWdtZW50ID0gKCEoZGVtdXgtPnNlZ21lbnQuZmxhZ3MgJiBHU1RfU0VFS19GTEFHX0FDQ1VSQVRFKSk7CiAgICAgc3RyZWFtLT5uZWVkc19rZXlmcmFtZSA9IEZBTFNFOwogICAgIHN0cmVhbS0+ZGlzY29udCA9IFRSVUU7CiAgICAgc3RyZWFtLT5wdHMgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwpAQCAtMTUxMywxNiArMTcwMyw4IEBACiAgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoKEdzdEVsZW1lbnQgKikgdHNkZW11eCwgc3RyZWFtLT5wYWQpOwogICAgIHN0cmVhbS0+YWN0aXZlID0gVFJVRTsKICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgImRvbmUgYWRkaW5nIHBhZCIpOwotICAgIC8qIGZvcmNlIHNlbmRpbmcgb2YgcGVuZGluZyBzdGlja3kgZXZlbnRzIHdoaWNoIGhhdmUgYmVlbiBzdG9yZWQgb24gdGhlCi0gICAgICogcGFkIGFscmVhZHkgYW5kIHdoaWNoIG90aGVyd2lzZSB3b3VsZCBvbmx5IGJlIHNlbnQgb24gdGhlIGZpcnN0IGJ1ZmZlcgotICAgICAqIG9yIHNlcmlhbGl6ZWQgZXZlbnQgKHdoaWNoIG1lYW5zIHZlcnkgbGF0ZSBpbiBjYXNlIG9mIHN1YnRpdGxlIHN0cmVhbXMpLAotICAgICAqIGFuZCBwbGF5c2luayB3YWl0cyBmb3Igc3RyZWFtLXN0YXJ0IG9yIGFub3RoZXIgc2VyaWFsaXplZCBldmVudCAqLwotICAgIGlmIChzdHJlYW0tPnNwYXJzZSkgewotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJzcGFyc2Ugc3RyZWFtLCBwdXNoaW5nIEdBUCBldmVudCIpOwotICAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChzdHJlYW0tPnBhZCwgZ3N0X2V2ZW50X25ld19nYXAgKDAsIDApKTsKLSAgICB9CiAgIH0gZWxzZSBpZiAoKChNcGVnVFNCYXNlU3RyZWFtICopIHN0cmVhbSktPnN0cmVhbV90eXBlICE9IDB4ZmYpIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHRzZGVtdXgsCisgICAgR1NUX0RFQlVHX09CSkVDVCAodHNkZW11eCwKICAgICAgICAgInN0cmVhbSAlcCAocGlkIDB4JTA0eCwgdHlwZToweCUwMngpIGhhcyBubyBwYWQiLCBzdHJlYW0sCiAgICAgICAgICgoTXBlZ1RTQmFzZVN0cmVhbSAqKSBzdHJlYW0pLT5waWQsCiAgICAgICAgICgoTXBlZ1RTQmFzZVN0cmVhbSAqKSBzdHJlYW0pLT5zdHJlYW1fdHlwZSk7CkBAIC0xNTM1LDggKzE3MTcsNyBAQAogewogICBHU1RfREVCVUcgKCJmbHVzaGluZyBzdHJlYW0gJXAiLCBzdHJlYW0pOwogCi0gIGlmIChzdHJlYW0tPmRhdGEpCi0gICAgZ19mcmVlIChzdHJlYW0tPmRhdGEpOworICBnX2ZyZWUgKHN0cmVhbS0+ZGF0YSk7CiAgIHN0cmVhbS0+ZGF0YSA9IE5VTEw7CiAgIHN0cmVhbS0+c3RhdGUgPSBQRU5ESU5HX1BBQ0tFVF9FTVBUWTsKICAgc3RyZWFtLT5leHBlY3RlZF9zaXplID0gMDsKQEAgLTE1ODMsNiArMTc2NCwyNCBAQAogICAgIGdzdF90c19kZW11eF9zdHJlYW1fZmx1c2ggKHdhbGstPmRhdGEsIGRlbXV4LCBoYXJkKTsKIH0KIAorc3RhdGljIGdib29sZWFuCitnc3RfdHNfZGVtdXhfY2FuX3JlbW92ZV9wcm9ncmFtIChNcGVnVFNCYXNlICogYmFzZSwgTXBlZ1RTQmFzZVByb2dyYW0gKiBwcm9ncmFtKQoreworICBHc3RUU0RlbXV4ICpkZW11eCA9IEdTVF9UU19ERU1VWCAoYmFzZSk7CisKKyAgLyogSWYgaXQncyBvdXIgY3VycmVudCBhY3RpdmUgcHJvZ3JhbSwgd2UgcmV0dXJuIEZBTFNFLCB3ZSdsbCBkZWFjdGl2YXRlIGl0CisgICAqIG91cnNlbHZlcyB3aGVuIHRoZSBuZXh0IHByb2dyYW0gZ2V0cyBhY3RpdmF0ZWQgKi8KKyAgaWYgKGRlbXV4LT5wcm9ncmFtID09IHByb2dyYW0pIHsKKyAgICBHU1RfREVCVUcKKyAgICAgICAgKCJBdHRlbXB0aW5nIHRvIHJlbW92ZSBjdXJyZW50IHByb2dyYW0sIGRlbGF5aW5nIHVudGlsIG5ldyBwcm9ncmFtIGdldHMgYWN0aXZhdGVkIik7CisgICAgZGVtdXgtPnByZXZpb3VzX3Byb2dyYW0gPSBwcm9ncmFtOworICAgIGRlbXV4LT5wcm9ncmFtX251bWJlciA9IC0xOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorICByZXR1cm4gVFJVRTsKK30KKworCiBzdGF0aWMgdm9pZAogZ3N0X3RzX2RlbXV4X3Byb2dyYW1fc3RhcnRlZCAoTXBlZ1RTQmFzZSAqIGJhc2UsIE1wZWdUU0Jhc2VQcm9ncmFtICogcHJvZ3JhbSkKIHsKQEAgLTE2MDcsMTEgKzE4MDYsNDUgQEAKICAgICAgIGRlbXV4LT5zZWdtZW50X2V2ZW50ID0gTlVMTDsKICAgICB9CiAKKyAgICAvKiBEUkFJTiBBTEwgU1RSRUFNUyBGSVJTVCAhICovCisgICAgaWYgKGRlbXV4LT5wcmV2aW91c19wcm9ncmFtKSB7CisgICAgICBHTGlzdCAqdG1wOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJEcmFpbmluZyBwcmV2aW91cyBwcm9ncmFtIik7CisgICAgICBmb3IgKHRtcCA9IGRlbXV4LT5wcmV2aW91c19wcm9ncmFtLT5zdHJlYW1fbGlzdDsgdG1wOyB0bXAgPSB0bXAtPm5leHQpIHsKKyAgICAgICAgVFNEZW11eFN0cmVhbSAqc3RyZWFtID0gKFRTRGVtdXhTdHJlYW0gKikgdG1wLT5kYXRhOworICAgICAgICBpZiAoc3RyZWFtLT5wYWQpCisgICAgICAgICAgZ3N0X3RzX2RlbXV4X3B1c2hfcGVuZGluZ19kYXRhIChkZW11eCwgc3RyZWFtKTsKKyAgICAgIH0KKyAgICB9CisKICAgICAvKiBBZGQgYWxsIHN0cmVhbXMsIHRoZW4gZmlyZSBuby1tb3JlLXBhZHMgKi8KICAgICBmb3IgKHRtcCA9IHByb2dyYW0tPnN0cmVhbV9saXN0OyB0bXA7IHRtcCA9IHRtcC0+bmV4dCkgewogICAgICAgVFNEZW11eFN0cmVhbSAqc3RyZWFtID0gKFRTRGVtdXhTdHJlYW0gKikgdG1wLT5kYXRhOwogICAgICAgYWN0aXZhdGVfcGFkX2Zvcl9zdHJlYW0gKGRlbXV4LCBzdHJlYW0pOwogICAgIH0KKworICAgIC8qIElmIHRoZXJlIHdhcyBhIHByZXZpb3VzIHByb2dyYW0sIG5vdyBpcyB0aGUgdGltZSB0byBkZWFjdGl2YXRlIGl0CisgICAgICogYW5kIHJlbW92ZSBvbGQgcGFkcyAoaW5jbHVkaW5nIHB1c2hpbmcgRU9TKSAqLworICAgIGlmIChkZW11eC0+cHJldmlvdXNfcHJvZ3JhbSkgeworICAgICAgR1NUX0RFQlVHICgiRGVhY3RpdmF0aW5nIHByZXZpb3VzIHByb2dyYW0iKTsKKyAgICAgIG1wZWd0c19iYXNlX2RlYWN0aXZhdGVfYW5kX2ZyZWVfcHJvZ3JhbSAoYmFzZSwgZGVtdXgtPnByZXZpb3VzX3Byb2dyYW0pOworICAgICAgZGVtdXgtPnByZXZpb3VzX3Byb2dyYW0gPSBOVUxMOworICAgIH0KKyAgICAvKiBJZiBhbnkgb2YgdGhlIHN0cmVhbSBpcyBzcGFyc2UsIHB1c2ggYSBHQVAgZXZlbnQgYmVmb3JlIGFueXRoaW5nIGVsc2UKKyAgICAgKiBUaGlzIGlzIGRvbmUgaGVyZSwgYW5kIG5vdCBpbiBhY3RpdmF0ZV9wYWRfZm9yX3N0cmVhbSgpIGJlY2F1c2UgcHVzaGluZworICAgICAqIGEgR0FQIGV2ZW50ICppcyogY29uc2lkZXJpbmcgZGF0YSwgYW5kIHdlIHdhbnQgdG8gZW5zdXJlIHRoZSAocG90ZW50aWFsKQorICAgICAqIG9sZCBwYWRzIGFyZSBhbGwgcmVtb3ZlZCBiZWZvcmUgd2UgcHVzaCBhbnkgZGF0YSBvbiB0aGUgbmV3IG9uZXMgKi8KKyAgICBmb3IgKHRtcCA9IHByb2dyYW0tPnN0cmVhbV9saXN0OyB0bXA7IHRtcCA9IHRtcC0+bmV4dCkgeworICAgICAgVFNEZW11eFN0cmVhbSAqc3RyZWFtID0gKFRTRGVtdXhTdHJlYW0gKikgdG1wLT5kYXRhOworICAgICAgaWYgKHN0cmVhbS0+c3BhcnNlKSB7CisgICAgICAgIC8qIGZvcmNlIHNlbmRpbmcgb2YgcGVuZGluZyBzdGlja3kgZXZlbnRzIHdoaWNoIGhhdmUgYmVlbiBzdG9yZWQgb24gdGhlCisgICAgICAgICAqIHBhZCBhbHJlYWR5IGFuZCB3aGljaCBvdGhlcndpc2Ugd291bGQgb25seSBiZSBzZW50IG9uIHRoZSBmaXJzdCBidWZmZXIKKyAgICAgICAgICogb3Igc2VyaWFsaXplZCBldmVudCAod2hpY2ggbWVhbnMgdmVyeSBsYXRlIGluIGNhc2Ugb2Ygc3VidGl0bGUgc3RyZWFtcyksCisgICAgICAgICAqIGFuZCBwbGF5c2luayB3YWl0cyBmb3Igc3RyZWFtLXN0YXJ0IG9yIGFub3RoZXIgc2VyaWFsaXplZCBldmVudCAqLworICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgInNwYXJzZSBzdHJlYW0sIHB1c2hpbmcgR0FQIGV2ZW50Iik7CisgICAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoc3RyZWFtLT5wYWQsIGdzdF9ldmVudF9uZXdfZ2FwICgwLCAwKSk7CisgICAgICB9CisgICAgfQogICAgIGdzdF9lbGVtZW50X25vX21vcmVfcGFkcyAoKEdzdEVsZW1lbnQgKikgZGVtdXgpOwogICB9CiB9CkBAIC0yMTMyLDE0ICsyMzY1LDEwNiBAQAogICB9CiB9CiAKK3N0YXRpYyBHc3RCdWZmZXJMaXN0ICoKK3BhcnNlX29wdXNfYWNjZXNzX3VuaXQgKFRTRGVtdXhTdHJlYW0gKiBzdHJlYW0pCit7CisgIEdzdEJ5dGVSZWFkZXIgcmVhZGVyOworICBHc3RCdWZmZXJMaXN0ICpidWZmZXJfbGlzdCA9IE5VTEw7CisKKyAgYnVmZmVyX2xpc3QgPSBnc3RfYnVmZmVyX2xpc3RfbmV3ICgpOworICBnc3RfYnl0ZV9yZWFkZXJfaW5pdCAoJnJlYWRlciwgc3RyZWFtLT5kYXRhLCBzdHJlYW0tPmN1cnJlbnRfc2l6ZSk7CisKKyAgZG8geworICAgIEdzdEJ1ZmZlciAqYnVmZmVyOworICAgIGd1aW50MTYgaWQ7CisgICAgZ3VpbnQgYXVfc2l6ZSA9IDA7CisgICAgZ3VpbnQ4IGI7CisgICAgZ2Jvb2xlYW4gc3RhcnRfdHJpbV9mbGFnLCBlbmRfdHJpbV9mbGFnLCBjb250cm9sX2V4dGVuc2lvbl9mbGFnOworICAgIGd1aW50MTYgc3RhcnRfdHJpbSA9IDAsIGVuZF90cmltID0gMDsKKyAgICBndWludDggKnBhY2tldF9kYXRhOworICAgIGd1aW50IHBhY2tldF9zaXplOworCisgICAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQxNl9iZSAoJnJlYWRlciwgJmlkKSkKKyAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBObyBjb250cm9sIGhlYWRlciAqLworICAgIGlmICgoaWQgPj4gNSkgIT0gMHgzZmYpCisgICAgICBnb3RvIGVycm9yOworCisgICAgZG8geworICAgICAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQ4ICgmcmVhZGVyLCAmYikpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICBhdV9zaXplICs9IGI7CisgICAgfSB3aGlsZSAoYiA9PSAweGZmKTsKKworICAgIHN0YXJ0X3RyaW1fZmxhZyA9IChpZCA+PiA0KSAmIDB4MTsKKyAgICBlbmRfdHJpbV9mbGFnID0gKGlkID4+IDMpICYgMHgxOworICAgIGNvbnRyb2xfZXh0ZW5zaW9uX2ZsYWcgPSAoaWQgPj4gMikgJiAweDE7CisKKyAgICBpZiAoc3RhcnRfdHJpbV9mbGFnKSB7CisgICAgICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDE2X2JlICgmcmVhZGVyLCAmc3RhcnRfdHJpbSkpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKGVuZF90cmltX2ZsYWcpIHsKKyAgICAgIGlmICghZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MTZfYmUgKCZyZWFkZXIsICZlbmRfdHJpbSkpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKGNvbnRyb2xfZXh0ZW5zaW9uX2ZsYWcpIHsKKyAgICAgIGlmICghZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50OCAoJnJlYWRlciwgJmIpKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9za2lwICgmcmVhZGVyLCBiKSkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBwYWNrZXRfc2l6ZSA9IGF1X3NpemU7CisKKyAgICAvKiBGSVhNRTogdGhpcyBzaG91bGQgYmUKKyAgICAgKiAgIHBhY2tldF9zaXplID0gYXVfc2l6ZSAtIGdzdF9ieXRlX3JlYWRlcl9nZXRfcG9zICgmcmVhZGVyKTsKKyAgICAgKiBidXQgZmZtcGVnIGFuZCB0aGUgb25seSBhdmFpbGFibGUgc2FtcGxlIHN0cmVhbSBmcm9tIG9iZS50dgorICAgICAqIGFyZSBub3QgaW5jbHVkaW5nIHRoZSBjb250cm9sIGhlYWRlciBzaXplIGluIGF1X3NpemUKKyAgICAgKi8KKyAgICBpZiAoZ3N0X2J5dGVfcmVhZGVyX2dldF9yZW1haW5pbmcgKCZyZWFkZXIpIDwgcGFja2V0X3NpemUpCisgICAgICBnb3RvIGVycm9yOworICAgIGlmICghZ3N0X2J5dGVfcmVhZGVyX2R1cF9kYXRhICgmcmVhZGVyLCBwYWNrZXRfc2l6ZSwgJnBhY2tldF9kYXRhKSkKKyAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBidWZmZXIgPSBnc3RfYnVmZmVyX25ld193cmFwcGVkIChwYWNrZXRfZGF0YSwgcGFja2V0X3NpemUpOworCisgICAgaWYgKHN0YXJ0X3RyaW0gIT0gMCB8fCBlbmRfdHJpbSAhPSAwKSB7CisgICAgICBnc3RfYnVmZmVyX2FkZF9hdWRpb19jbGlwcGluZ19tZXRhIChidWZmZXIsIEdTVF9GT1JNQVRfREVGQVVMVCwKKyAgICAgICAgICBzdGFydF90cmltLCBlbmRfdHJpbSk7CisgICAgfQorCisgICAgZ3N0X2J1ZmZlcl9saXN0X2FkZCAoYnVmZmVyX2xpc3QsIGJ1ZmZlcik7CisgIH0gd2hpbGUgKGdzdF9ieXRlX3JlYWRlcl9nZXRfcmVtYWluaW5nICgmcmVhZGVyKSA+IDApOworCisgIGdfZnJlZSAoc3RyZWFtLT5kYXRhKTsKKyAgc3RyZWFtLT5kYXRhID0gTlVMTDsKKyAgc3RyZWFtLT5jdXJyZW50X3NpemUgPSAwOworCisgIHJldHVybiBidWZmZXJfbGlzdDsKKworZXJyb3I6CisgIHsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gcGFyc2UgT3B1cyBhY2Nlc3MgdW5pdCIpOworICAgIGdfZnJlZSAoc3RyZWFtLT5kYXRhKTsKKyAgICBzdHJlYW0tPmRhdGEgPSBOVUxMOworICAgIHN0cmVhbS0+Y3VycmVudF9zaXplID0gMDsKKyAgICBnc3RfYnVmZmVyX2xpc3RfdW5yZWYgKGJ1ZmZlcl9saXN0KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorfQorCiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X3RzX2RlbXV4X3B1c2hfcGVuZGluZ19kYXRhIChHc3RUU0RlbXV4ICogZGVtdXgsIFRTRGVtdXhTdHJlYW0gKiBzdHJlYW0pCiB7CiAgIEdzdEZsb3dSZXR1cm4gcmVzID0gR1NUX0ZMT1dfT0s7Ci0jaWZuZGVmIEdTVF9ESVNBQkxFX0dTVF9ERUJVRwogICBNcGVnVFNCYXNlU3RyZWFtICpicyA9IChNcGVnVFNCYXNlU3RyZWFtICopIHN0cmVhbTsKLSNlbmRpZgogICBHc3RCdWZmZXIgKmJ1ZmZlciA9IE5VTEw7CisgIEdzdEJ1ZmZlckxpc3QgKmJ1ZmZlcl9saXN0ID0gTlVMTDsKIAogICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwKICAgICAgICJzdHJlYW06JXAsIHBpZDoweCUwNHggc3RyZWFtX3R5cGU6JWQgc3RhdGU6JWQiLCBzdHJlYW0sIGJzLT5waWQsCkBAIC0yMTc0LDcgKzI0OTksMjQgQEAKICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLAogICAgICAgICAgICJHb3QgS2V5ZnJhbWUsIHJlYWR5IHRvIGdvIGF0ICUiIEdTVF9USU1FX0ZPUk1BVCwKICAgICAgICAgICBHU1RfVElNRV9BUkdTIChzdHJlYW0tPnB0cykpOwotICAgICAgYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfd3JhcHBlZCAoc3RyZWFtLT5kYXRhLCBzdHJlYW0tPmN1cnJlbnRfc2l6ZSk7CisKKyAgICAgIGlmIChicy0+c3RyZWFtX3R5cGUgPT0gR1NUX01QRUdUU19TVFJFQU1fVFlQRV9QUklWQVRFX1BFU19QQUNLRVRTICYmCisgICAgICAgICAgYnMtPnJlZ2lzdHJhdGlvbl9pZCA9PSBEUkZfSURfT1BVUykgeworICAgICAgICBidWZmZXJfbGlzdCA9IHBhcnNlX29wdXNfYWNjZXNzX3VuaXQgKHN0cmVhbSk7CisgICAgICAgIGlmICghYnVmZmVyX2xpc3QpIHsKKyAgICAgICAgICByZXMgPSBHU1RfRkxPV19FUlJPUjsKKyAgICAgICAgICBnb3RvIGJlYWNoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGdzdF9idWZmZXJfbGlzdF9sZW5ndGggKGJ1ZmZlcl9saXN0KSA9PSAxKSB7CisgICAgICAgICAgYnVmZmVyID0gZ3N0X2J1ZmZlcl9yZWYgKGdzdF9idWZmZXJfbGlzdF9nZXQgKGJ1ZmZlcl9saXN0LCAwKSk7CisgICAgICAgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmIChidWZmZXJfbGlzdCk7CisgICAgICAgICAgYnVmZmVyX2xpc3QgPSBOVUxMOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBidWZmZXIgPSBnc3RfYnVmZmVyX25ld193cmFwcGVkIChzdHJlYW0tPmRhdGEsIHN0cmVhbS0+Y3VycmVudF9zaXplKTsKKyAgICAgIH0KKwogICAgICAgc3RyZWFtLT5zZWVrZWRfcHRzID0gc3RyZWFtLT5wdHM7CiAgICAgICBzdHJlYW0tPnNlZWtlZF9kdHMgPSBzdHJlYW0tPmR0czsKICAgICAgIHN0cmVhbS0+bmVlZHNfa2V5ZnJhbWUgPSBGQUxTRTsKQEAgLTIxOTIsMTUgKzI1MzQsNDUgQEAKICAgICAgIGdvdG8gYmVhY2g7CiAgICAgfQogICB9IGVsc2UgewotICAgIGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X3dyYXBwZWQgKHN0cmVhbS0+ZGF0YSwgc3RyZWFtLT5jdXJyZW50X3NpemUpOworICAgIGlmIChicy0+c3RyZWFtX3R5cGUgPT0gR1NUX01QRUdUU19TVFJFQU1fVFlQRV9QUklWQVRFX1BFU19QQUNLRVRTICYmCisgICAgICAgIGJzLT5yZWdpc3RyYXRpb25faWQgPT0gRFJGX0lEX09QVVMpIHsKKyAgICAgIGJ1ZmZlcl9saXN0ID0gcGFyc2Vfb3B1c19hY2Nlc3NfdW5pdCAoc3RyZWFtKTsKKyAgICAgIGlmICghYnVmZmVyX2xpc3QpIHsKKyAgICAgICAgcmVzID0gR1NUX0ZMT1dfRVJST1I7CisgICAgICAgIGdvdG8gYmVhY2g7CisgICAgICB9CisKKyAgICAgIGlmIChnc3RfYnVmZmVyX2xpc3RfbGVuZ3RoIChidWZmZXJfbGlzdCkgPT0gMSkgeworICAgICAgICBidWZmZXIgPSBnc3RfYnVmZmVyX3JlZiAoZ3N0X2J1ZmZlcl9saXN0X2dldCAoYnVmZmVyX2xpc3QsIDApKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmIChidWZmZXJfbGlzdCk7CisgICAgICAgIGJ1ZmZlcl9saXN0ID0gTlVMTDsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfd3JhcHBlZCAoc3RyZWFtLT5kYXRhLCBzdHJlYW0tPmN1cnJlbnRfc2l6ZSk7CisgICAgfQogCiAgICAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+cGVuZGluZ190cyAmJiAhY2hlY2tfcGVuZGluZ19idWZmZXJzIChkZW11eCkpKSB7Ci0gICAgICBQZW5kaW5nQnVmZmVyICpwZW5kOwotICAgICAgcGVuZCA9IGdfc2xpY2VfbmV3MCAoUGVuZGluZ0J1ZmZlcik7Ci0gICAgICBwZW5kLT5idWZmZXIgPSBidWZmZXI7Ci0gICAgICBwZW5kLT5wdHMgPSBzdHJlYW0tPnJhd19wdHM7Ci0gICAgICBwZW5kLT5kdHMgPSBzdHJlYW0tPnJhd19kdHM7Ci0gICAgICBzdHJlYW0tPnBlbmRpbmcgPSBnX2xpc3RfYXBwZW5kIChzdHJlYW0tPnBlbmRpbmcsIHBlbmQpOworICAgICAgaWYgKGJ1ZmZlcikgeworICAgICAgICBQZW5kaW5nQnVmZmVyICpwZW5kOworICAgICAgICBwZW5kID0gZ19zbGljZV9uZXcwIChQZW5kaW5nQnVmZmVyKTsKKyAgICAgICAgcGVuZC0+YnVmZmVyID0gYnVmZmVyOworICAgICAgICBwZW5kLT5wdHMgPSBzdHJlYW0tPnJhd19wdHM7CisgICAgICAgIHBlbmQtPmR0cyA9IHN0cmVhbS0+cmF3X2R0czsKKyAgICAgICAgc3RyZWFtLT5wZW5kaW5nID0gZ19saXN0X2FwcGVuZCAoc3RyZWFtLT5wZW5kaW5nLCBwZW5kKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGd1aW50IGksIG47CisKKyAgICAgICAgbiA9IGdzdF9idWZmZXJfbGlzdF9sZW5ndGggKGJ1ZmZlcl9saXN0KTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgIFBlbmRpbmdCdWZmZXIgKnBlbmQ7CisgICAgICAgICAgcGVuZCA9IGdfc2xpY2VfbmV3MCAoUGVuZGluZ0J1ZmZlcik7CisgICAgICAgICAgcGVuZC0+YnVmZmVyID0gZ3N0X2J1ZmZlcl9yZWYgKGdzdF9idWZmZXJfbGlzdF9nZXQgKGJ1ZmZlcl9saXN0LCBpKSk7CisgICAgICAgICAgcGVuZC0+cHRzID0gaSA9PSAwID8gc3RyZWFtLT5yYXdfcHRzIDogLTE7CisgICAgICAgICAgcGVuZC0+ZHRzID0gaSA9PSAwID8gc3RyZWFtLT5yYXdfZHRzIDogLTE7CisgICAgICAgICAgc3RyZWFtLT5wZW5kaW5nID0gZ19saXN0X2FwcGVuZCAoc3RyZWFtLT5wZW5kaW5nLCBwZW5kKTsKKyAgICAgICAgfQorICAgICAgICBnc3RfYnVmZmVyX2xpc3RfdW5yZWYgKGJ1ZmZlcl9saXN0KTsKKyAgICAgIH0KICAgICAgIEdTVF9ERUJVRyAoIk5vdCBlbm91Z2ggaW5mb3JtYXRpb24gdG8gcHVzaCBidWZmZXJzIHlldCwgc3RvcmluZyBidWZmZXIiKTsKICAgICAgIGdvdG8gYmVhY2g7CiAgICAgfQpAQCAtMjI0MiwzNCArMjYxNCw1MiBAQAogICAgICAgICAiKHNlZWtlZCBQVFM6ICUiIEdTVF9USU1FX0ZPUk1BVCAiIERUUzogJSIgR1NUX1RJTUVfRk9STUFUICIpIiwKICAgICAgICAgR1NUX1RJTUVfQVJHUyAoc3RyZWFtLT5wdHMpLCBHU1RfVElNRV9BUkdTIChzdHJlYW0tPmR0cyksCiAgICAgICAgIEdTVF9USU1FX0FSR1MgKHN0cmVhbS0+c2Vla2VkX3B0cyksIEdTVF9USU1FX0FSR1MgKHN0cmVhbS0+c2Vla2VkX2R0cykpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CisgICAgaWYgKGJ1ZmZlcikKKyAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CisgICAgaWYgKGJ1ZmZlcl9saXN0KQorICAgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmIChidWZmZXJfbGlzdCk7CiAgICAgZ290byBiZWFjaDsKICAgfQogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAic3RyZWFtLT5wdHMgJSIgR1NUX1RJTUVfRk9STUFULAogICAgICAgR1NUX1RJTUVfQVJHUyAoc3RyZWFtLT5wdHMpKTsKKworICAvKiBEZWNvcmF0ZSBidWZmZXIgb3IgZmlyc3QgYnVmZmVyIG9mIHRoZSBidWZmZXIgbGlzdCAqLworICBpZiAoYnVmZmVyX2xpc3QpCisgICAgYnVmZmVyID0gZ3N0X2J1ZmZlcl9saXN0X2dldCAoYnVmZmVyX2xpc3QsIDApOworCiAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoc3RyZWFtLT5wdHMpKQogICAgIEdTVF9CVUZGRVJfUFRTIChidWZmZXIpID0gc3RyZWFtLT5wdHM7CiAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoc3RyZWFtLT5kdHMpKQogICAgIEdTVF9CVUZGRVJfRFRTIChidWZmZXIpID0gc3RyZWFtLT5kdHM7CiAKLSAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsCi0gICAgICAiUHVzaGluZyBidWZmZXIgd2l0aCBQVFM6ICUiIEdTVF9USU1FX0ZPUk1BVCAiICwgRFRTOiAlIiBHU1RfVElNRV9GT1JNQVQsCi0gICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKSksCi0gICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX0RUUyAoYnVmZmVyKSkpOwotCiAgIGlmIChzdHJlYW0tPmRpc2NvbnQpCiAgICAgR1NUX0JVRkZFUl9GTEFHX1NFVCAoYnVmZmVyLCBHU1RfQlVGRkVSX0ZMQUdfRElTQ09OVCk7CiAgIHN0cmVhbS0+ZGlzY29udCA9IEZBTFNFOwogCi0gIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoR1NUX0JVRkZFUl9EVFMgKGJ1ZmZlcikpKQotICAgIGRlbXV4LT5zZWdtZW50LnBvc2l0aW9uID0gR1NUX0JVRkZFUl9EVFMgKGJ1ZmZlcik7Ci0gIGVsc2UgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKSkpCi0gICAgZGVtdXgtPnNlZ21lbnQucG9zaXRpb24gPSBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKTsKKyAgaWYgKGJ1ZmZlcl9saXN0KQorICAgIGJ1ZmZlciA9IE5VTEw7CiAKLSAgcmVzID0gZ3N0X3BhZF9wdXNoIChzdHJlYW0tPnBhZCwgYnVmZmVyKTsKLSAgLyogUmVjb3JkIHRoYXQgYSBidWZmZXIgd2FzIHB1c2hlZCAqLwotICBzdHJlYW0tPm5iX291dF9idWZmZXJzICs9IDE7CisgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLAorICAgICAgIlB1c2hpbmcgYnVmZmVyJXMgd2l0aCBQVFM6ICUiIEdTVF9USU1FX0ZPUk1BVCAiICwgRFRTOiAlIgorICAgICAgR1NUX1RJTUVfRk9STUFULCAoYnVmZmVyX2xpc3QgPyAibGlzdCIgOiAiIiksIEdTVF9USU1FX0FSR1MgKHN0cmVhbS0+cHRzKSwKKyAgICAgIEdTVF9USU1FX0FSR1MgKHN0cmVhbS0+ZHRzKSk7CisKKyAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChzdHJlYW0tPmR0cykpCisgICAgZGVtdXgtPnNlZ21lbnQucG9zaXRpb24gPSBzdHJlYW0tPmR0czsKKyAgZWxzZSBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHN0cmVhbS0+cHRzKSkKKyAgICBkZW11eC0+c2VnbWVudC5wb3NpdGlvbiA9IHN0cmVhbS0+cHRzOworCisgIGlmIChidWZmZXIpIHsKKyAgICByZXMgPSBnc3RfcGFkX3B1c2ggKHN0cmVhbS0+cGFkLCBidWZmZXIpOworICAgIC8qIFJlY29yZCB0aGF0IGEgYnVmZmVyIHdhcyBwdXNoZWQgKi8KKyAgICBzdHJlYW0tPm5iX291dF9idWZmZXJzICs9IDE7CisgIH0gZWxzZSB7CisgICAgZ3VpbnQgbiA9IGdzdF9idWZmZXJfbGlzdF9sZW5ndGggKGJ1ZmZlcl9saXN0KTsKKyAgICByZXMgPSBnc3RfcGFkX3B1c2hfbGlzdCAoc3RyZWFtLT5wYWQsIGJ1ZmZlcl9saXN0KTsKKyAgICAvKiBSZWNvcmQgdGhhdCBhIGJ1ZmZlciB3YXMgcHVzaGVkICovCisgICAgc3RyZWFtLT5uYl9vdXRfYnVmZmVycyArPSBuOworICB9CiAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiUmV0dXJuZWQgJXMiLCBnc3RfZmxvd19nZXRfbmFtZSAocmVzKSk7CiAgIHJlcyA9IGdzdF9mbG93X2NvbWJpbmVyX3VwZGF0ZV9mbG93IChkZW11eC0+Zmxvd2NvbWJpbmVyLCByZXMpOwogICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgImNvbWJpbmVkICVzIiwgZ3N0X2Zsb3dfZ2V0X25hbWUgKHJlcykpOwpkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguaCBiL2dzdC9tcGVndHNkZW11eC90c2RlbXV4LmgKaW5kZXggYjY4OTQxMi4uYjQxNjczMyAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguaAorKysgYi9nc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5oCkBAIC02NSw2ICs2NSw4IEBACiAKICAgLyo8IHByaXZhdGUgPiovCiAgIE1wZWdUU0Jhc2VQcm9ncmFtICpwcm9ncmFtOwkvKiBDdXJyZW50IHByb2dyYW0gKi8KKyAgTXBlZ1RTQmFzZVByb2dyYW0gKnByZXZpb3VzX3Byb2dyYW07IC8qIFByZXZpb3VzIHByb2dyYW0sIHRvIGRlYWN0aXZhdGUgb25jZQorCQkJCQkqIHRoZSBuZXcgcHJvZ3JhbSBiZWNvbWVzIGFjdGl2ZSAqLwogCiAgIC8qIHNlZ21lbnRzIHRvIGJlIHNlbnQgKi8KICAgR3N0U2VnbWVudCBzZWdtZW50OwpkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c211eC9NYWtlZmlsZS5hbSBiL2dzdC9tcGVndHNtdXgvTWFrZWZpbGUuYW0KaW5kZXggOGUzY2RiYS4uMGZhNzhkNyAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c211eC9NYWtlZmlsZS5hbQorKysgYi9nc3QvbXBlZ3RzbXV4L01ha2VmaWxlLmFtCkBAIC01LDE3ICs1LDIxIEBACiBsaWJnc3RtcGVndHNtdXhfbGFfU09VUkNFUyA9IFwKIAltcGVndHNtdXguYyBcCiAJbXBlZ3RzbXV4X2FhYy5jIFwKLQltcGVndHNtdXhfdHR4dC5jCisJbXBlZ3RzbXV4X3R0eHQuYyBcCisJbXBlZ3RzbXV4X29wdXMuYwogCiBsaWJnc3RtcGVndHNtdXhfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiAJCQkgICAgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykKIGxpYmdzdG1wZWd0c211eF9sYV9MSUJBREQgPSAkKHRvcF9idWlsZGRpcikvZ3N0L21wZWd0c211eC90c211eC9saWJ0c211eC5sYSBcCi0JLWxnc3R0YWctQEdTVF9BUElfVkVSU0lPTkAgXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykKKwkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3R2aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCisJLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCAtbGdzdHRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCisJLWxnc3RwYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05AIFwKKwkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpCiBsaWJnc3RtcGVndHNtdXhfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQogbGliZ3N0bXBlZ3RzbXV4X2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiAKIG5vaW5zdF9IRUFERVJTID0gXAogCW1wZWd0c211eC5oIFwKIAltcGVndHNtdXhfYWFjLmggXAotCW1wZWd0c211eF90dHh0LmgKKwltcGVndHNtdXhfdHR4dC5oIFwKKwltcGVndHNtdXhfb3B1cy5oCmRpZmYgLS1naXQgYS9nc3QvbXBlZ3RzbXV4L01ha2VmaWxlLmluIGIvZ3N0L21wZWd0c211eC9NYWtlZmlsZS5pbgppbmRleCA0N2Y1ZGRjLi44NGZlOTQyIDEwMDY0NAotLS0gYS9nc3QvbXBlZ3RzbXV4L01ha2VmaWxlLmluCisrKyBiL2dzdC9tcGVndHNtdXgvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTcwLDcgKzE2OSw4IEBACiAJJChhbV9fREVQRU5ERU5DSUVTXzEpCiBhbV9saWJnc3RtcGVndHNtdXhfbGFfT0JKRUNUUyA9IGxpYmdzdG1wZWd0c211eF9sYS1tcGVndHNtdXgubG8gXAogCWxpYmdzdG1wZWd0c211eF9sYS1tcGVndHNtdXhfYWFjLmxvIFwKLQlsaWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X3R0eHQubG8KKwlsaWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X3R0eHQubG8gXAorCWxpYmdzdG1wZWd0c211eF9sYS1tcGVndHNtdXhfb3B1cy5sbwogbGliZ3N0bXBlZ3RzbXV4X2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdG1wZWd0c211eF9sYV9PQkpFQ1RTKQogQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQogYW1fX3ZfbHRfID0gJChhbV9fdl9sdF9AQU1fREVGQVVMVF9WQCkKQEAgLTMyMCw2ICszMjAsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTM1Nyw2ICszNTksOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTM2NSw3ICszNjksNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zODQsOCArMzg3LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTQwMiwxNiArNDA2LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQzNyw2ICs0NDIsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00NjIsNiArNDY5LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTYzLDYgKzU3Miw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NzYsOCArNTg2LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTkzLDYgKzYwMSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02NTAsMTYgKzY2MCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTcxMSw2ICs3MjMsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNzIxLDYgKzczNCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTczMCw2ICs3NDQsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzY3LDcgKzc4Myw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtODEyLDIxICs4MjcsMjUgQEAKIGxpYmdzdG1wZWd0c211eF9sYV9TT1VSQ0VTID0gXAogCW1wZWd0c211eC5jIFwKIAltcGVndHNtdXhfYWFjLmMgXAotCW1wZWd0c211eF90dHh0LmMKKwltcGVndHNtdXhfdHR4dC5jIFwKKwltcGVndHNtdXhfb3B1cy5jCiAKIGxpYmdzdG1wZWd0c211eF9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKIAkJCSAgICAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKQogCiBsaWJnc3RtcGVndHNtdXhfbGFfTElCQUREID0gJCh0b3BfYnVpbGRkaXIpL2dzdC9tcGVndHNtdXgvdHNtdXgvbGlidHNtdXgubGEgXAotCS1sZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3R2aWRlby1AR1NUX0FQSV9WRVJTSU9OQCAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAorCS1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgLWxnc3R0YWctQEdTVF9BUElfVkVSU0lPTkAgXAorCS1sZ3N0cGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQCBcCisJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKQogCiBsaWJnc3RtcGVndHNtdXhfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQogbGliZ3N0bXBlZ3RzbXV4X2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiBub2luc3RfSEVBREVSUyA9IFwKIAltcGVndHNtdXguaCBcCiAJbXBlZ3RzbXV4X2FhYy5oIFwKLQltcGVndHNtdXhfdHR4dC5oCisJbXBlZ3RzbXV4X3R0eHQuaCBcCisJbXBlZ3RzbXV4X29wdXMuaAogCiBhbGw6IGFsbC1yZWN1cnNpdmUKIApAQCAtOTA4LDYgKzkyNyw3IEBACiAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0bXBlZ3RzbXV4X2xhLW1wZWd0c211eF9hYWMuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X29wdXMuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X3R0eHQuUGxvQGFtX19xdW90ZUAKIAogLmMubzoKQEAgLTk1NSw2ICs5NzUsMTMgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RtcGVndHNtdXhfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bXBlZ3RzbXV4X2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG1wZWd0c211eF9sYS1tcGVndHNtdXhfdHR4dC5sbyBgdGVzdCAtZiAnbXBlZ3RzbXV4X3R0eHQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbXBlZ3RzbXV4X3R0eHQuYwogCitsaWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X29wdXMubG86IG1wZWd0c211eF9vcHVzLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RtcGVndHNtdXhfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bXBlZ3RzbXV4X2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X29wdXMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG1wZWd0c211eF9sYS1tcGVndHNtdXhfb3B1cy5UcG8gLWMgLW8gbGliZ3N0bXBlZ3RzbXV4X2xhLW1wZWd0c211eF9vcHVzLmxvIGB0ZXN0IC1mICdtcGVndHNtdXhfb3B1cy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BtcGVndHNtdXhfb3B1cy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X29wdXMuVHBvICQoREVQRElSKS9saWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X29wdXMuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbXBlZ3RzbXV4X29wdXMuYycgb2JqZWN0PSdsaWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X29wdXMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RtcGVndHNtdXhfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bXBlZ3RzbXV4X2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG1wZWd0c211eF9sYS1tcGVndHNtdXhfb3B1cy5sbyBgdGVzdCAtZiAnbXBlZ3RzbXV4X29wdXMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbXBlZ3RzbXV4X29wdXMuYworCiBtb3N0bHljbGVhbi1saWJ0b29sOgogCS1ybSAtZiAqLmxvCiAKZGlmZiAtLWdpdCBhL2dzdC9tcGVndHNtdXgvbXBlZ3RzbXV4LmMgYi9nc3QvbXBlZ3RzbXV4L21wZWd0c211eC5jCmluZGV4IGNlMDAzMzMuLmNkMDczMzggMTAwNjQ0Ci0tLSBhL2dzdC9tcGVndHNtdXgvbXBlZ3RzbXV4LmMKKysrIGIvZ3N0L21wZWd0c211eC9tcGVndHNtdXguYwpAQCAtOTEsMTEgKzkxLDEzIEBACiAjaW5jbHVkZSA8Z3N0L3RhZy90YWcuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KICNpbmNsdWRlIDxnc3QvbXBlZ3RzL21wZWd0cy5oPgorI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KIAogI2luY2x1ZGUgIm1wZWd0c211eC5oIgogCiAjaW5jbHVkZSAibXBlZ3RzbXV4X2FhYy5oIgogI2luY2x1ZGUgIm1wZWd0c211eF90dHh0LmgiCisjaW5jbHVkZSAibXBlZ3RzbXV4X29wdXMuaCIKIAogR1NUX0RFQlVHX0NBVEVHT1JZIChtcGVndHNtdXhfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgbXBlZ3RzbXV4X2RlYnVnCkBAIC0xMjUsNiArMTI3LDggQEAKICAgICAgICAgInZpZGVvL3gtZGlyYWM7IgogICAgICAgICAidmlkZW8veC1oMjY0LHN0cmVhbS1mb3JtYXQ9KHN0cmluZylieXRlLXN0cmVhbSwiCiAgICAgICAgICJhbGlnbm1lbnQ9KHN0cmluZyl7YXUsIG5hbH07ICIKKyAgICAgICAgInZpZGVvL3gtaDI2NSxzdHJlYW0tZm9ybWF0PShzdHJpbmcpYnl0ZS1zdHJlYW0sIgorICAgICAgICAiYWxpZ25tZW50PShzdHJpbmcpe2F1LCBuYWx9OyAiCiAgICAgICAgICJhdWRpby9tcGVnLCAiCiAgICAgICAgICJwYXJzZWQgPSAoYm9vbGVhbikgVFJVRSwgIgogICAgICAgICAibXBlZ3ZlcnNpb24gPSAoaW50KSB7IDEsIDIgfTsiCkBAIC0xNDIsNiArMTQ2LDkgQEAKICAgICAgICAgIm11dGUgPSAoYm9vbGVhbikgeyBGQUxTRSwgVFJVRSB9OyAiCiAgICAgICAgICJhdWRpby94LWFjMywgZnJhbWVkID0gKGJvb2xlYW4pIFRSVUU7IgogICAgICAgICAiYXVkaW8veC1kdHMsIGZyYW1lZCA9IChib29sZWFuKSBUUlVFOyIKKyAgICAgICAgImF1ZGlvL3gtb3B1cywgIgorICAgICAgICAiY2hhbm5lbHMgPSAoaW50KSBbMSwgOF0sICIKKyAgICAgICAgImNoYW5uZWwtbWFwcGluZy1mYW1pbHkgPSAoaW50KSB7MCwgMX07IgogICAgICAgICAic3VicGljdHVyZS94LWR2YjsgYXBwbGljYXRpb24veC10ZWxldGV4dDsgbWV0YS94LWtsdiwgcGFyc2VkPXRydWUiKSk7CiAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBtcGVndHNtdXhfc3JjX2ZhY3RvcnkgPQpAQCAtNTgwLDYgKzU4Nyw3IEBACiAgIGNvbnN0IGdjaGFyICptdDsKICAgY29uc3QgR1ZhbHVlICp2YWx1ZSA9IE5VTEw7CiAgIEdzdEJ1ZmZlciAqY29kZWNfZGF0YSA9IE5VTEw7CisgIGd1aW50OCBvcHVzX2NoYW5uZWxfY29uZmlnX2NvZGUgPSAwOwogCiAgIHBhZCA9IHRzX2RhdGEtPmNvbGxlY3QucGFkOwogICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChwYWQpOwpAQCAtNjA2LDYgKzYxNCw4IEBACiAgICAgc3QgPSBUU01VWF9TVF9QU19BVURJT19MUENNOwogICB9IGVsc2UgaWYgKHN0cmNtcCAobXQsICJ2aWRlby94LWgyNjQiKSA9PSAwKSB7CiAgICAgc3QgPSBUU01VWF9TVF9WSURFT19IMjY0OworICB9IGVsc2UgaWYgKHN0cmNtcCAobXQsICJ2aWRlby94LWgyNjUiKSA9PSAwKSB7CisgICAgc3QgPSBUU01VWF9TVF9WSURFT19IRVZDOwogICB9IGVsc2UgaWYgKHN0cmNtcCAobXQsICJhdWRpby9tcGVnIikgPT0gMCkgewogICAgIGdpbnQgbXBlZ3ZlcnNpb247CiAKQEAgLTY2Nyw2ICs2NzcsNjYgQEAKICAgICBzdCA9IFRTTVVYX1NUX1BTX1RFTEVURVhUOwogICAgIC8qIG5lZWRzIGEgcGFydGljdWxhcmx5IHNpemVkIGxheW91dCAqLwogICAgIHRzX2RhdGEtPnByZXBhcmVfZnVuYyA9IG1wZWd0c211eF9wcmVwYXJlX3RlbGV0ZXh0OworICB9IGVsc2UgaWYgKHN0cmNtcCAobXQsICJhdWRpby94LW9wdXMiKSA9PSAwKSB7CisgICAgZ3VpbnQ4IGNoYW5uZWxzLCBtYXBwaW5nX2ZhbWlseSwgc3RyZWFtX2NvdW50LCBjb3VwbGVkX2NvdW50OworICAgIGd1aW50OCBjaGFubmVsX21hcHBpbmdbMjU2XTsKKworICAgIGlmICghZ3N0X2NvZGVjX3V0aWxzX29wdXNfcGFyc2VfY2FwcyAoY2FwcywgTlVMTCwgJmNoYW5uZWxzLAorICAgICAgICAgICAgJm1hcHBpbmdfZmFtaWx5LCAmc3RyZWFtX2NvdW50LCAmY291cGxlZF9jb3VudCwgY2hhbm5lbF9tYXBwaW5nKSkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAocGFkLCAiSW5jb21wbGV0ZSBPcHVzIGNhcHMiKTsKKyAgICAgIGdvdG8gbm90X25lZ290aWF0ZWQ7CisgICAgfQorCisgICAgaWYgKGNoYW5uZWxzIDw9IDIgJiYgbWFwcGluZ19mYW1pbHkgPT0gMCkgeworICAgICAgb3B1c19jaGFubmVsX2NvbmZpZ19jb2RlID0gY2hhbm5lbHM7CisgICAgfSBlbHNlIGlmIChjaGFubmVscyA9PSAyICYmIG1hcHBpbmdfZmFtaWx5ID09IDI1NSAmJiBzdHJlYW1fY291bnQgPT0gMQorICAgICAgICAmJiBjb3VwbGVkX2NvdW50ID09IDEpIHsKKyAgICAgIC8qIER1YWwgbW9ubyAqLworICAgICAgb3B1c19jaGFubmVsX2NvbmZpZ19jb2RlID0gMDsKKyAgICB9IGVsc2UgaWYgKGNoYW5uZWxzID49IDIgJiYgY2hhbm5lbHMgPD0gOCAmJiBtYXBwaW5nX2ZhbWlseSA9PSAxKSB7CisgICAgICBzdGF0aWMgY29uc3QgZ3VpbnQ4IGNvdXBsZWRfc3RyZWFtX2NvdW50c1s5XSA9IHsKKyAgICAgICAgMSwgMCwgMSwgMSwgMiwgMiwgMiwgMywgMworICAgICAgfTsKKyAgICAgIHN0YXRpYyBjb25zdCBndWludDggY2hhbm5lbF9tYXBfYVs4XVs4XSA9IHsKKyAgICAgICAgezB9LAorICAgICAgICB7MCwgMX0sCisgICAgICAgIHswLCAyLCAxfSwKKyAgICAgICAgezAsIDEsIDIsIDN9LAorICAgICAgICB7MCwgNCwgMSwgMiwgM30sCisgICAgICAgIHswLCA0LCAxLCAyLCAzLCA1fSwKKyAgICAgICAgezAsIDQsIDEsIDIsIDMsIDUsIDZ9LAorICAgICAgICB7MCwgNiwgMSwgMiwgMywgNCwgNSwgN30sCisgICAgICB9OworICAgICAgc3RhdGljIGNvbnN0IGd1aW50OCBjaGFubmVsX21hcF9iWzhdWzhdID0geworICAgICAgICB7MH0sCisgICAgICAgIHswLCAxfSwKKyAgICAgICAgezAsIDEsIDJ9LAorICAgICAgICB7MCwgMSwgMiwgM30sCisgICAgICAgIHswLCAxLCAyLCAzLCA0fSwKKyAgICAgICAgezAsIDEsIDIsIDMsIDQsIDV9LAorICAgICAgICB7MCwgMSwgMiwgMywgNCwgNSwgNn0sCisgICAgICAgIHswLCAxLCAyLCAzLCA0LCA1LCA2LCA3fSwKKyAgICAgIH07CisKKyAgICAgIC8qIFZvcmJpcyBtYXBwaW5nICovCisgICAgICBpZiAoc3RyZWFtX2NvdW50ID09IGNoYW5uZWxzIC0gY291cGxlZF9zdHJlYW1fY291bnRzW2NoYW5uZWxzXSAmJgorICAgICAgICAgIGNvdXBsZWRfY291bnQgPT0gY291cGxlZF9zdHJlYW1fY291bnRzW2NoYW5uZWxzXSAmJgorICAgICAgICAgIG1lbWNtcCAoY2hhbm5lbF9tYXBwaW5nLCBjaGFubmVsX21hcF9hW2NoYW5uZWxzIC0gMV0sCisgICAgICAgICAgICAgIGNoYW5uZWxzKSA9PSAwKSB7CisgICAgICAgIG9wdXNfY2hhbm5lbF9jb25maWdfY29kZSA9IGNoYW5uZWxzOworICAgICAgfSBlbHNlIGlmIChzdHJlYW1fY291bnQgPT0gY2hhbm5lbHMgLSBjb3VwbGVkX3N0cmVhbV9jb3VudHNbY2hhbm5lbHNdICYmCisgICAgICAgICAgY291cGxlZF9jb3VudCA9PSBjb3VwbGVkX3N0cmVhbV9jb3VudHNbY2hhbm5lbHNdICYmCisgICAgICAgICAgbWVtY21wIChjaGFubmVsX21hcHBpbmcsIGNoYW5uZWxfbWFwX2JbY2hhbm5lbHMgLSAxXSwKKyAgICAgICAgICAgICAgY2hhbm5lbHMpID09IDApIHsKKyAgICAgICAgb3B1c19jaGFubmVsX2NvbmZpZ19jb2RlID0gY2hhbm5lbHMgfCAweDgwOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR1NUX0ZJWE1FX09CSkVDVCAocGFkLCAiT3B1cyBjaGFubmVsIG1hcHBpbmcgbm90IGhhbmRsZWQiKTsKKyAgICAgICAgZ290byBub3RfbmVnb3RpYXRlZDsKKyAgICAgIH0KKyAgICB9CisKKyAgICBzdCA9IFRTTVVYX1NUX1BTX09QVVM7CisgICAgdHNfZGF0YS0+cHJlcGFyZV9mdW5jID0gbXBlZ3RzbXV4X3ByZXBhcmVfb3B1czsKICAgfSBlbHNlIGlmIChzdHJjbXAgKG10LCAibWV0YS94LWtsdiIpID09IDApIHsKICAgICBzdCA9IFRTTVVYX1NUX1BTX0tMVjsKICAgfQpAQCAtNjgzLDYgKzc1Myw4IEBACiAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzLCAiY2hhbm5lbHMiLCAmdHNfZGF0YS0+c3RyZWFtLT5hdWRpb19jaGFubmVscyk7CiAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzLCAiYml0cmF0ZSIsICZ0c19kYXRhLT5zdHJlYW0tPmF1ZGlvX2JpdHJhdGUpOwogCisgICAgdHNfZGF0YS0+c3RyZWFtLT5vcHVzX2NoYW5uZWxfY29uZmlnX2NvZGUgPSBvcHVzX2NoYW5uZWxfY29uZmlnX2NvZGU7CisKICAgICB0c211eF9zdHJlYW1fc2V0X2J1ZmZlcl9yZWxlYXNlX2Z1bmMgKHRzX2RhdGEtPnN0cmVhbSwgcmVsZWFzZV9idWZmZXJfY2IpOwogICAgIHRzbXV4X3Byb2dyYW1fYWRkX3N0cmVhbSAodHNfZGF0YS0+cHJvZywgdHNfZGF0YS0+c3RyZWFtKTsKIApAQCAtMTA5NywxNSArMTE2OSw2IEBACiAgICAgcGFkX2RhdGEtPmR0cyA9IEdTVF9DTE9DS19TVElNRV9OT05FOwogICB9CiAKLSAgYnVmID0gKm91dGJ1ZjsKLSAgaWYgKHBhZF9kYXRhLT5wcmVwYXJlX2Z1bmMpIHsKLSAgICBNcGVnVHNNdXggKm11eCA9IChNcGVnVHNNdXggKikgdXNlcl9kYXRhOwotCi0gICAgKm91dGJ1ZiA9IHBhZF9kYXRhLT5wcmVwYXJlX2Z1bmMgKGJ1ZiwgcGFkX2RhdGEsIG11eCk7Ci0gICAgZ19hc3NlcnQgKCpvdXRidWYpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7Ci0gIH0KLQogYmVhY2g6CiAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KQEAgLTExMjYsOCArMTE4OSwxMSBAQAogCiAgIGlmIChHX1VOTElLRUxZIChtdXgtPmZpcnN0KSkgewogICAgIHJldCA9IG1wZWd0c211eF9jcmVhdGVfc3RyZWFtcyAobXV4KTsKLSAgICBpZiAoR19VTkxJS0VMWSAocmV0ICE9IEdTVF9GTE9XX09LKSkKKyAgICBpZiAoR19VTkxJS0VMWSAocmV0ICE9IEdTVF9GTE9XX09LKSkgeworICAgICAgaWYgKGJ1ZikKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKICAgICAgIHJldHVybiByZXQ7CisgICAgfQogCiAgICAgbXBlZ3RzbXV4X3ByZXBhcmVfc3JjcGFkIChtdXgpOwogCkBAIC0xMTQyLDYgKzEyMDgsOSBAQAogICAgIG1wZWd0c211eF9wdXNoX3BhY2tldHMgKG11eCwgVFJVRSk7CiAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChtdXgtPnNyY3BhZCwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOwogCisgICAgaWYgKGJ1ZikKKyAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CisKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CiAgIH0KIApAQCAtMTE1MSw2ICsxMjIwLDE1IEBACiAKICAgZ19hc3NlcnQgKGJ1ZiAhPSBOVUxMKTsKIAorICBpZiAoYmVzdC0+cHJlcGFyZV9mdW5jKSB7CisgICAgR3N0QnVmZmVyICp0bXA7CisKKyAgICB0bXAgPSBiZXN0LT5wcmVwYXJlX2Z1bmMgKGJ1ZiwgYmVzdCwgbXV4KTsKKyAgICBnX2Fzc2VydCAodG1wKTsKKyAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOworICAgIGJ1ZiA9IHRtcDsKKyAgfQorCiAgIGlmIChtdXgtPmZvcmNlX2tleV91bml0X2V2ZW50ICE9IE5VTEwgJiYgYmVzdC0+c3RyZWFtLT5pc192aWRlb19zdHJlYW0pIHsKICAgICBHc3RFdmVudCAqZXZlbnQ7CiAKQEAgLTEyMDcsOSArMTI4NSw4IEBACiAKICAgaWYgKEdTVF9DTE9DS19TVElNRV9JU19WQUxJRCAoYmVzdC0+ZHRzKSkgewogICAgIGR0cyA9IEdTVFRJTUVfVE9fTVBFR1RJTUUgKGJlc3QtPmR0cyk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAobXV4LCAiQnVmZmVyIGhhcyBEVFMgJXMlIiBHU1RfVElNRV9GT1JNQVQgIiBkdHMgJSIKLSAgICAgICAgR19HSU5UNjRfRk9STUFULCBiZXN0LT5kdHMgPj0gMCA/ICIgIiA6ICItIiwKLSAgICAgICAgR1NUX1RJTUVfQVJHUyAoQUJTIChiZXN0LT5kdHMpKSwgZHRzKTsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChtdXgsICJCdWZmZXIgaGFzIERUUyAlIiBHU1RfU1RJTUVfRk9STUFUICIgZHRzICUiCisgICAgICAgIEdfR0lOVDY0X0ZPUk1BVCwgR1NUX1NUSU1FX0FSR1MgKGJlc3QtPmR0cyksIGR0cyk7CiAgIH0KIAogICAvKiBzaG91bGQgbm90IGhhdmUgYSBEVFMgd2l0aG91dCBQVFMgKi8KQEAgLTEyMzUsNiArMTMxMiw4IEBACiAKICAgaWYgKGJlc3QtPnN0cmVhbS0+aXNfbWV0YSAmJiBnc3RfYnVmZmVyX2dldF9zaXplIChidWYpID4gKEdfTUFYVUlOVDE2IC0gMykpIHsKICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKG11eCwgIktMViBtZXRhIHVuaXQgdG9vIGJpZywgc3BsaXR0aW5nIG5vdCBzdXBwb3J0ZWQiKTsKKworICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogICB9CiAKQEAgLTEyNzQsNiArMTM1Myw4IEBACiAgIH0KIG5vX3Byb2dyYW06CiAgIHsKKyAgICBpZiAoYnVmKQorICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAobXV4LCBTVFJFQU0sIE1VWCwKICAgICAgICAgKCJTdHJlYW0gb24gcGFkICUiIEdTVF9QVFJfRk9STUFUCiAgICAgICAgICAgICAiIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW55IHByb2dyYW0iLCBDT0xMRUNUX0RBVEFfUEFEIChiZXN0KSksCmRpZmYgLS1naXQgYS9nc3QvbXBlZ3RzbXV4L21wZWd0c211eF9vcHVzLmMgYi9nc3QvbXBlZ3RzbXV4L21wZWd0c211eF9vcHVzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYxNzZiMgotLS0gL2Rldi9udWxsCisrKyBiL2dzdC9tcGVndHNtdXgvbXBlZ3RzbXV4X29wdXMuYwpAQCAtMCwwICsxLDE0OSBAQAorLyogCisgKiBDb3B5cmlnaHQgMjAwNiwgMjAwNywgMjAwOCBGbHVlbmRvIFMuQS4gCisgKiAgQXV0aG9yczogSmFuIFNjaG1pZHQgPGphbkBmbHVlbmRvLmNvbT4KKyAqICAgICAgICAgICBLYXBpbCBBZ3Jhd2FsIDxrYXBpbEBmbHVlbmRvLmNvbT4KKyAqICAgICAgICAgICBKdWxpZW4gTW91dHRlIDxqdWxpZW5AZmx1ZW5kby5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGxpY2Vuc2VkIHVuZGVyIDQgZGlmZmVyZW50IGxpY2Vuc2VzIGFuZCB5b3UKKyAqIGNhbiBjaG9vc2UgdG8gdXNlIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiBhbnkgb25lIG9mIHRoZW0uIFRoZQorICogZm91ciBsaWNlbnNlcyBhcmUgdGhlIE1QTCAxLjEsIHRoZSBMR1BMLCB0aGUgR1BMIGFuZCB0aGUgTUlUCisgKiBsaWNlbnNlLgorICoKKyAqIE1QTDoKKyAqIAorICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZQorICogVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLy4KKyAqCisgKiBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiCisgKiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZQorICogTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyByaWdodHMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKiBMR1BMOgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqIEdQTDoKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqIE1JVDoKKyAqCisgKiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgU291cmNlIENvZGUgaXMgbGljZW5zZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgKiBTZWUgZnVydGhlciBleHBsYW5hdGlvbiBhdHRhY2hlZCBpbiBMaWNlbnNlIFN0YXRlbWVudCAoZGlzdHJpYnV0ZWQgaW4gdGhlIGZpbGUKKyAqIExJQ0VOU0UpLgorICogCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bworICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMKKyAqIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbworICogc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICogCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKiAKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAibXBlZ3RzbXV4X29wdXMuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KKworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgbXBlZ3RzbXV4X2RlYnVnCisKK0dzdEJ1ZmZlciAqCittcGVndHNtdXhfcHJlcGFyZV9vcHVzIChHc3RCdWZmZXIgKiBidWYsIE1wZWdUc1BhZERhdGEgKiBwYWRfZGF0YSwKKyAgICBNcGVnVHNNdXggKiBtdXgpCit7CisgIGdzc2l6ZSBpbnNpemUgPSBnc3RfYnVmZmVyX2dldF9zaXplIChidWYpOworICBnc2l6ZSBvdXRzaXplOworICBHc3RCdWZmZXIgKm91dGJ1ZjsKKyAgR3N0TWFwSW5mbyBtYXA7CisgIGd1aW50IG47CisgIEdzdEF1ZGlvQ2xpcHBpbmdNZXRhICpjbWV0YSA9IGdzdF9idWZmZXJfZ2V0X2F1ZGlvX2NsaXBwaW5nX21ldGEgKGJ1Zik7CisKKyAgZ19hc3NlcnQgKCFjbWV0YSB8fCBjbWV0YS0+Zm9ybWF0ID09IEdTVF9GT1JNQVRfREVGQVVMVCk7CisKKyAgb3V0c2l6ZSA9IDIgKyBpbnNpemUgLyAyNTUgKyAxOworICBpZiAoY21ldGEgJiYgY21ldGEtPnN0YXJ0KQorICAgIG91dHNpemUgKz0gMjsKKyAgaWYgKGNtZXRhICYmIGNtZXRhLT5lbmQpCisgICAgb3V0c2l6ZSArPSAyOworCisgIG91dGJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAob3V0c2l6ZSk7CisgIGdzdF9idWZmZXJfY29weV9pbnRvIChvdXRidWYsIGJ1ZiwKKyAgICAgIEdTVF9CVUZGRVJfQ09QWV9NRVRBREFUQSB8IEdTVF9CVUZGRVJfQ09QWV9USU1FU1RBTVBTLCAwLCAwKTsKKyAgZ3N0X2J1ZmZlcl9tYXAgKG91dGJ1ZiwgJm1hcCwgR1NUX01BUF9XUklURSk7CisgIG1hcC5kYXRhWzBdID0gMHg3ZjsKKyAgbWFwLmRhdGFbMV0gPSAweGUwOworCisgIGlmIChjbWV0YSAmJiBjbWV0YS0+c3RhcnQpCisgICAgbWFwLmRhdGFbMV0gfD0gMHgxMDsKKyAgaWYgKGNtZXRhICYmIGNtZXRhLT5lbmQpCisgICAgbWFwLmRhdGFbMV0gfD0gMHgwODsKKworICBuID0gMjsKKyAgZG8geworICAgIGdfYXNzZXJ0IChuIDwgb3V0c2l6ZSk7CisgICAgLyogRklYTUU6IHRoaXMgc2hvdWxkIGJlIHVzaW5nIGluc2l6ZSBmb3Igd3JpdGluZyBoZXJlIGJ1dCBmZm1wZWcgYW5kIHRoZQorICAgICAqIG9ubHkgYXZhaWxhYmxlIHNhbXBsZSBzdHJlYW0gZnJvbSBvYmUudHYgYXJlIG5vdCBpbmNsdWRpbmcgdGhlIGNvbnRyb2wKKyAgICAgKiBoZWFkZXIgc2l6ZSBpbiBhdV9zaXplCisgICAgICovCisgICAgbWFwLmRhdGFbbl0gPSBNSU4gKGluc2l6ZSwgMjU1KTsKKyAgICBpbnNpemUgLT0gMjU1OworICAgIG4rKzsKKyAgfSB3aGlsZSAoaW5zaXplID49IDApOworCisgIGlmIChjbWV0YSAmJiBjbWV0YS0+c3RhcnQpIHsKKyAgICBHU1RfV1JJVEVfVUlOVDE2X0JFICgmbWFwLmRhdGFbbl0sIGNtZXRhLT5zdGFydCk7CisgICAgbiArPSAyOworICB9CisKKyAgaWYgKGNtZXRhICYmIGNtZXRhLT5lbmQpCisgICAgR1NUX1dSSVRFX1VJTlQxNl9CRSAoJm1hcC5kYXRhW25dLCBjbWV0YS0+ZW5kKTsKKworICBnc3RfYnVmZmVyX3VubWFwIChvdXRidWYsICZtYXApOworCisgIG91dGJ1ZiA9IGdzdF9idWZmZXJfYXBwZW5kIChvdXRidWYsIGdzdF9idWZmZXJfcmVmIChidWYpKTsKKworICByZXR1cm4gb3V0YnVmOworfQpkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c211eC9tcGVndHNtdXhfb3B1cy5oIGIvZ3N0L21wZWd0c211eC9tcGVndHNtdXhfb3B1cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZjI1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QvbXBlZ3RzbXV4L21wZWd0c211eF9vcHVzLmgKQEAgLTAsMCArMSw5MSBAQAorLyogCisgKiBDb3B5cmlnaHQgMjAwNiwgMjAwNywgMjAwOCBGbHVlbmRvIFMuQS4gCisgKiAgQXV0aG9yczogSmFuIFNjaG1pZHQgPGphbkBmbHVlbmRvLmNvbT4KKyAqICAgICAgICAgICBLYXBpbCBBZ3Jhd2FsIDxrYXBpbEBmbHVlbmRvLmNvbT4KKyAqICAgICAgICAgICBKdWxpZW4gTW91dHRlIDxqdWxpZW5AZmx1ZW5kby5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGxpY2Vuc2VkIHVuZGVyIDQgZGlmZmVyZW50IGxpY2Vuc2VzIGFuZCB5b3UKKyAqIGNhbiBjaG9vc2UgdG8gdXNlIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiBhbnkgb25lIG9mIHRoZW0uIFRoZQorICogZm91ciBsaWNlbnNlcyBhcmUgdGhlIE1QTCAxLjEsIHRoZSBMR1BMLCB0aGUgR1BMIGFuZCB0aGUgTUlUCisgKiBsaWNlbnNlLgorICoKKyAqIE1QTDoKKyAqIAorICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZQorICogVmVyc2lvbiAxLjEgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbgorICogY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLy4KKyAqCisgKiBTb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiCisgKiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZQorICogTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyByaWdodHMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKiBMR1BMOgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqIEdQTDoKKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqIE1JVDoKKyAqCisgKiBVbmxlc3Mgb3RoZXJ3aXNlIGluZGljYXRlZCwgU291cmNlIENvZGUgaXMgbGljZW5zZWQgdW5kZXIgTUlUIGxpY2Vuc2UuCisgKiBTZWUgZnVydGhlciBleHBsYW5hdGlvbiBhdHRhY2hlZCBpbiBMaWNlbnNlIFN0YXRlbWVudCAoZGlzdHJpYnV0ZWQgaW4gdGhlIGZpbGUKKyAqIExJQ0VOU0UpLgorICogCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bworICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMKKyAqIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbworICogc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICogCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKiAKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCisgKiBTT0ZUV0FSRS4KKyAqCisgKi8KKyAKKyNpZm5kZWYgX19NUEVHVFNNVVhfT1BVU19IX18KKyNkZWZpbmUgX19NUEVHVFNNVVhfT1BVU19IX18KKyAKKyNpbmNsdWRlICJtcGVndHNtdXguaCIKKworR3N0QnVmZmVyICogbXBlZ3RzbXV4X3ByZXBhcmVfb3B1cyAoR3N0QnVmZmVyICogYnVmLCBNcGVnVHNQYWREYXRhICogZGF0YSwKKyAgICBNcGVnVHNNdXggKiBtdXgpOworIAorI2VuZGlmIC8qIF9fTVBFR1RTTVVYX09QVVNfSF9fICovCmRpZmYgLS1naXQgYS9nc3QvbXBlZ3RzbXV4L3RzbXV4L01ha2VmaWxlLmluIGIvZ3N0L21wZWd0c211eC90c211eC9NYWtlZmlsZS5pbgppbmRleCBjYTM0YThkLi5iYjU4MGQzIDEwMDY0NAotLS0gYS9nc3QvbXBlZ3RzbXV4L3RzbXV4L01ha2VmaWxlLmluCisrKyBiL2dzdC9tcGVndHNtdXgvdHNtdXgvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjQ2LDYgKzI0NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjgzLDYgKzI4NCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkxLDcgKzI5NCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxMCw4ICszMTIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzI4LDE2ICszMzEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzYzLDYgKzM2Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4OCw2ICszOTQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00ODksNiArNDk3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwMiw4ICs1MTEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MTksNiArNTI2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3NiwxNiArNTg1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM3LDYgKzY0OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDcsNiArNjU5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU2LDYgKzY2OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTMsNyArNzA4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4LmMgYi9nc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4LmMKaW5kZXggZDY4ZjUwMS4uNjM4ZGUxNSAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c211eC90c211eC90c211eC5jCisrKyBiL2dzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXguYwpAQCAtOTM0LDggKzkzNCw3IEBACiAgIHJldHVybiBUUlVFOwogCiBmYWlsOgotICBpZiAocGFja2V0KQotICAgIGdfZnJlZSAocGFja2V0KTsKKyAgZ19mcmVlIChwYWNrZXQpOwogICBpZiAoc2VjdGlvbl9idWZmZXIpCiAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoc2VjdGlvbl9idWZmZXIpOwogICByZXR1cm4gRkFMU0U7CmRpZmYgLS1naXQgYS9nc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4c3RyZWFtLmMgYi9nc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4c3RyZWFtLmMKaW5kZXggMTA5NGMzZS4uNmI3YzE3ZSAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c211eC90c211eC90c211eHN0cmVhbS5jCisrKyBiL2dzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uYwpAQCAtMTM4LDYgKzEzOCw3IEBACiAgICAgY2FzZSBUU01VWF9TVF9WSURFT19NUEVHMjoKICAgICBjYXNlIFRTTVVYX1NUX1ZJREVPX01QRUc0OgogICAgIGNhc2UgVFNNVVhfU1RfVklERU9fSDI2NDoKKyAgICBjYXNlIFRTTVVYX1NUX1ZJREVPX0hFVkM6CiAgICAgICAvKiBGSVhNRTogQXNzaWduIHNlcXVlbnRpYWwgSURzPyAqLwogICAgICAgc3RyZWFtLT5pZCA9IDB4RTA7CiAgICAgICBzdHJlYW0tPnBpLmZsYWdzIHw9IFRTTVVYX1BBQ0tFVF9GTEFHX1BFU19GVUxMX0hFQURFUjsKQEAgLTIwMCw2ICsyMDEsMTMgQEAKICAgICAgICAgICBUU01VWF9QQUNLRVRfRkxBR19QRVNfRlVMTF9IRUFERVIgfAogICAgICAgICAgIFRTTVVYX1BBQ0tFVF9GTEFHX1BFU19EQVRBX0FMSUdOTUVOVDsKICAgICAgIGJyZWFrOworICAgIGNhc2UgVFNNVVhfU1RfUFNfT1BVUzoKKyAgICAgIC8qIEZJWE1FOiBhc3NpZ24gc2VxdWVudGlhbCBleHRlbmRlZCBJRHM/ICovCisgICAgICBzdHJlYW0tPmlkID0gMHhCRDsKKyAgICAgIHN0cmVhbS0+c3RyZWFtX3R5cGUgPSBUU01VWF9TVF9QUklWQVRFX0RBVEE7CisgICAgICBzdHJlYW0tPmlzX29wdXMgPSBUUlVFOworICAgICAgc3RyZWFtLT5waS5mbGFncyB8PSBUU01VWF9QQUNLRVRfRkxBR19QRVNfRlVMTF9IRUFERVI7CisgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgZ19jcml0aWNhbCAoIlN0cmVhbSB0eXBlIDB4JTB4IG5vdCB5ZXQgaW1wbGVtZW50ZWQiLCBzdHJlYW1fdHlwZSk7CiAgICAgICBicmVhazsKQEAgLTMwOCw4ICszMTYsMTAgQEAKICAgICAvKiBGSVhNRTogQXMgYSBoYWNrLCBmb3IgdW5ib3VuZGVkIHN0cmVhbXMsIHN0YXJ0IGEgbmV3IFBFUyBwYWNrZXQgZm9yIGVhY2gKICAgICAgKiBpbmNvbWluZyBwYWNrZXQgd2UgcmVjZWl2ZS4gVGhpcyBhc3N1bWVzIHRoYXQgaW5jb21pbmcgZGF0YSBpcyAKICAgICAgKiBwYWNrZXRpc2VkIHNlbnNpYmx5IC0gaWUsIGV2ZXJ5IHZpZGVvIGZyYW1lICovCi0gICAgaWYgKHN0cmVhbS0+Y3VyX3Blc19wYXlsb2FkX3NpemUgPT0gMCkKKyAgICBpZiAoc3RyZWFtLT5jdXJfcGVzX3BheWxvYWRfc2l6ZSA9PSAwKSB7CiAgICAgICBzdHJlYW0tPnN0YXRlID0gVFNNVVhfU1RSRUFNX1NUQVRFX0hFQURFUjsKKyAgICAgIHN0cmVhbS0+cGVzX2J5dGVzX3dyaXR0ZW4gPSAwOworICAgIH0KICAgfQogfQogCkBAIC00MDEsMTEgKzQxMSw2IEBACiAgICAgc3RyZWFtLT5jdXJfcGVzX3BheWxvYWRfc2l6ZSA9IHN0cmVhbS0+cGVzX3BheWxvYWRfc2l6ZTsKICAgICB0c211eF9zdHJlYW1fZmluZF9wdHNfZHRzX3dpdGhpbiAoc3RyZWFtLCBzdHJlYW0tPmN1cl9wZXNfcGF5bG9hZF9zaXplLAogICAgICAgICAmc3RyZWFtLT5wdHMsICZzdHJlYW0tPmR0cyk7Ci0gIH0gZWxzZSBpZiAoc3RyZWFtLT5pc192aWRlb19zdHJlYW0pIHsKLSAgICAvKiBVbmJvdW5kZWQgZm9yIHZpZGVvIHN0cmVhbXMgKi8KLSAgICBzdHJlYW0tPmN1cl9wZXNfcGF5bG9hZF9zaXplID0gMDsKLSAgICB0c211eF9zdHJlYW1fZmluZF9wdHNfZHRzX3dpdGhpbiAoc3RyZWFtLCBzdHJlYW0tPmJ5dGVzX2F2YWlsLCAmc3RyZWFtLT5wdHMsCi0gICAgICAgICZzdHJlYW0tPmR0cyk7CiAgIH0gZWxzZSB7CiAgICAgLyogT3V0cHV0IGEgUEVTIHBhY2tldCBvZiBhbGwgY3VycmVudGx5IGF2YWlsYWJsZSBieXRlcyBvdGhlcndpc2UgKi8KICAgICBzdHJlYW0tPmN1cl9wZXNfcGF5bG9hZF9zaXplID0gc3RyZWFtLT5ieXRlc19hdmFpbDsKQEAgLTQzMyw2ICs0MzgsMTYgQEAKICAgICB9CiAgIH0KIAorICBpZiAoc3RyZWFtLT5pc192aWRlb19zdHJlYW0pIHsKKyAgICBndWludDggaGRyX2xlbjsKKworICAgIGhkcl9sZW4gPSB0c211eF9zdHJlYW1fcGVzX2hlYWRlcl9sZW5ndGggKHN0cmVhbSk7CisKKyAgICAvKiBVbmJvdW5kZWQgZm9yIHZpZGVvIHN0cmVhbXMgaWYgcGVzIHBhY2tldCBsZW5ndGggaXMgb3ZlciAxNiBiaXQgKi8KKyAgICBpZiAoKHN0cmVhbS0+Y3VyX3Blc19wYXlsb2FkX3NpemUgKyBoZHJfbGVuIC0gNikgPiBHX01BWFVJTlQxNikKKyAgICAgIHN0cmVhbS0+Y3VyX3Blc19wYXlsb2FkX3NpemUgPSAwOworICB9CisKICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTkxMCw5ICs5MjUsMjAgQEAKICAgICAgICAgZ19wdHJfYXJyYXlfYWRkIChwbXRfc3RyZWFtLT5kZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQorICAgICAgaWYgKHN0cmVhbS0+aXNfb3B1cykgeworICAgICAgICBkZXNjcmlwdG9yID0gZ3N0X21wZWd0c19kZXNjcmlwdG9yX2Zyb21fcmVnaXN0cmF0aW9uICgiT3B1cyIsIE5VTEwsIDApOworICAgICAgICBnX3B0cl9hcnJheV9hZGQgKHBtdF9zdHJlYW0tPmRlc2NyaXB0b3JzLCBkZXNjcmlwdG9yKTsKKworICAgICAgICBkZXNjcmlwdG9yID0KKyAgICAgICAgICAgIGdzdF9tcGVndHNfZGVzY3JpcHRvcl9mcm9tX2N1c3RvbV93aXRoX2V4dGVuc2lvbgorICAgICAgICAgICAgKEdTVF9NVFNfREVTQ19EVkJfRVhURU5TSU9OLCAweDgwLAorICAgICAgICAgICAgJnN0cmVhbS0+b3B1c19jaGFubmVsX2NvbmZpZ19jb2RlLCAxKTsKKworICAgICAgICBnX3B0cl9hcnJheV9hZGQgKHBtdF9zdHJlYW0tPmRlc2NyaXB0b3JzLCBkZXNjcmlwdG9yKTsKKyAgICAgIH0KICAgICAgIGlmIChzdHJlYW0tPmlzX21ldGEpIHsKICAgICAgICAgZGVzY3JpcHRvciA9IGdzdF9tcGVndHNfZGVzY3JpcHRvcl9mcm9tX3JlZ2lzdHJhdGlvbiAoIktMVkEiLCBOVUxMLCAwKTsKLSAgICAgICAgR1NUX0VSUk9SICgiYWRkaW5nIEtMVkEgcmVnaXN0cmF0aW9uIGRlc2NyaXB0b3IhIik7CisgICAgICAgIEdTVF9ERUJVRyAoImFkZGluZyBLTFZBIHJlZ2lzdHJhdGlvbiBkZXNjcmlwdG9yIik7CiAgICAgICAgIGdfcHRyX2FycmF5X2FkZCAocG10X3N0cmVhbS0+ZGVzY3JpcHRvcnMsIGRlc2NyaXB0b3IpOwogICAgICAgfQogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9nc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4c3RyZWFtLmggYi9nc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4c3RyZWFtLmgKaW5kZXggYzM1NWFlMi4uNzNiMmE4OCAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c211eC90c211eC90c211eHN0cmVhbS5oCisrKyBiL2dzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uaApAQCAtMTMzLDYgKzEzMyw3IEBACiAgIFRTTVVYX1NUX0FVRElPX0FBQyAgICAgICAgICAgICAgICAgID0gMHgwZiwKICAgVFNNVVhfU1RfVklERU9fTVBFRzQgICAgICAgICAgICAgICAgPSAweDEwLAogICBUU01VWF9TVF9WSURFT19IMjY0ICAgICAgICAgICAgICAgICA9IDB4MWIsCisgIFRTTVVYX1NUX1ZJREVPX0hFVkMgICAgICAgICAgICAgICAgID0gMHgyNCwKIAogICAvKiBwcml2YXRlIHN0cmVhbSB0eXBlcyAqLwogICBUU01VWF9TVF9QU19BVURJT19BQzMgICAgICAgICAgICAgICA9IDB4ODEsCkBAIC0xNDEsNiArMTQyLDcgQEAKICAgVFNNVVhfU1RfUFNfRFZCX1NVQlBJQ1RVUkUgICAgICAgICAgPSAweDhjLAogICBUU01VWF9TVF9QU19URUxFVEVYVCAgICAgICAgICAgICAgICA9IDB4OGQsCiAgIFRTTVVYX1NUX1BTX0tMViAgICAgICAgICAgICAgICAgICAgID0gMHg4ZSwgICAgLyogb25seSB1c2VkIGludGVybmFsbHkgKi8KKyAgVFNNVVhfU1RfUFNfT1BVUyAgICAgICAgICAgICAgICAgICAgPSAweDhmLCAgICAvKiBvbmx5IHVzZWQgaW50ZXJuYWxseSAqLwogICBUU01VWF9TVF9QU19EVkRfU1VCUElDVFVSRSAgICAgICAgICA9IDB4ZmYsCiAKICAgLyogTm9uLXN0YW5kYXJkIGRlZmluaXRpb25zICovCkBAIC0yMDksNiArMjExLDEwIEBACiAgIGdjaGFyIGxhbmd1YWdlWzRdOwogCiAgIGdib29sZWFuIGlzX21ldGE7CisKKyAgLyogT3B1cyAqLworICBnYm9vbGVhbiBpc19vcHVzOworICBndWludDggb3B1c19jaGFubmVsX2NvbmZpZ19jb2RlOwogfTsKIAogLyogc3RyZWFtIG1hbmFnZW1lbnQgKi8KZGlmZiAtLWdpdCBhL2dzdC9tdmUvTWFrZWZpbGUuaW4gYi9nc3QvbXZlL01ha2VmaWxlLmluCmluZGV4IGFhMjU0Y2IuLjQzYmE0M2MgMTAwNjQ0Ci0tLSBhL2dzdC9tdmUvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L212ZS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzgsNiArMjc3LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTUsNiArMzE2LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjMsNyArMzI2LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQyLDggKzM0NCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjAsMTYgKzM2MywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTUsNiArMzk5LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIwLDYgKzQyNiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMSw2ICs1MjksNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM0LDggKzU0Myw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1MSw2ICs1NTgsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA4LDE2ICs2MTcsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjksNiArNjgwLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3OSw2ICs2OTEsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODgsNiArNzAxLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNSw3ICs3NDAsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9tdmUvZ3N0bXZlbXV4LmMgYi9nc3QvbXZlL2dzdG12ZW11eC5jCmluZGV4IDA0MzIxMWMuLmE3YTMyY2IgMTAwNjQ0Ci0tLSBhL2dzdC9tdmUvZ3N0bXZlbXV4LmMKKysrIGIvZ3N0L212ZS9nc3RtdmVtdXguYwpAQCAtMTgsNyArMTgsNyBAQAogICovCiAKIC8qCi1nc3QtbGF1bmNoLTAuMTAgZmlsZXNyYyBsb2NhdGlvbj1tb3ZpZS5tdmUgISBtdmVkZW11eCBuYW1lPWQgIQorZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj1tb3ZpZS5tdmUgISBtdmVkZW11eCBuYW1lPWQgIQogICAgIHZpZGVvL3gtcmF3LXJnYiAhIG12ZW11eCBxdWljaz10cnVlIG5hbWU9bSAhCiAgICAgZmlsZXNpbmsgbG9jYXRpb249dGVzdC5tdmUgZC4gISBhdWRpby94LXJhdy1pbnQgISBtLgogKi8KZGlmZiAtLWdpdCBhL2dzdC9teGYvTWFrZWZpbGUuYW0gYi9nc3QvbXhmL01ha2VmaWxlLmFtCmluZGV4IDZlYzRhNzguLjJkODc5MDcgMTAwNjQ0Ci0tLSBhL2dzdC9teGYvTWFrZWZpbGUuYW0KKysrIGIvZ3N0L214Zi9NYWtlZmlsZS5hbQpAQCAtMTksMTAgKzE5LDE5IEBACiAJbXhmdmMzLmMgXAogCW14ZmRtczEuYwogCi1saWJnc3RteGZfbGFfQ0ZMQUdTID0gJChHU1RfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykKLWxpYmdzdG14Zl9sYV9MSUJBREQgPSAkKEdTVF9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCitsaWJnc3RteGZfbGFfQ0ZMQUdTID0gXAorCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCisJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9CQVNFX0NGTEFHUykgXAorCSQoR1NUX0NGTEFHUykKK2xpYmdzdG14Zl9sYV9MSUJBREQgPSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9iYXNlL2xpYmdzdGJhZGJhc2UtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAogCS1sZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCS1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAKKwktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKKwkkKEdTVF9CQVNFX0xJQlMpIFwKKwkkKEdTVF9MSUJTKQogbGliZ3N0bXhmX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdG14Zl9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQogCmRpZmYgLS1naXQgYS9nc3QvbXhmL01ha2VmaWxlLmluIGIvZ3N0L214Zi9NYWtlZmlsZS5pbgppbmRleCBmZDg1MTE1Li5mMTYxZmM3IDEwMDY0NAotLS0gYS9nc3QvbXhmL01ha2VmaWxlLmluCisrKyBiL2dzdC9teGYvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTY0LDggKzE2Myw5IEBACiBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIKIExUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQotbGliZ3N0bXhmX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKQorbGliZ3N0bXhmX2xhX0RFUEVOREVOQ0lFUyA9ICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYmFzZS9saWJnc3RiYWRiYXNlLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpCiBhbV9saWJnc3RteGZfbGFfT0JKRUNUUyA9IGxpYmdzdG14Zl9sYS1teGYubG8gbGliZ3N0bXhmX2xhLW14ZnVsLmxvIFwKIAlsaWJnc3RteGZfbGEtbXhmdHlwZXMubG8gbGliZ3N0bXhmX2xhLW14Zm1ldGFkYXRhLmxvIFwKIAlsaWJnc3RteGZfbGEtbXhmZXNzZW5jZS5sbyBsaWJnc3RteGZfbGEtbXhmcXVhcmsubG8gXApAQCAtMjgyLDYgKzI4Miw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE5LDYgKzMyMSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI3LDcgKzMzMSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Niw4ICszNDksOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzY0LDE2ICszNjgsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk5LDYgKzQwNCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyNCw2ICs0MzEsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjUsNiArNTM0LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzOCw4ICs1NDgsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTUsNiArNTYzLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxMiwxNiArNjIyLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjczLDYgKzY4NSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODMsNiArNjk2LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjkyLDYgKzcwNiw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjksNyArNzQ1LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03ODksMTAgKzgwNCwyMCBAQAogCW14ZnZjMy5jIFwKIAlteGZkbXMxLmMKIAotbGliZ3N0bXhmX2xhX0NGTEFHUyA9ICQoR1NUX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpCi1saWJnc3RteGZfbGFfTElCQUREID0gJChHU1RfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAorbGliZ3N0bXhmX2xhX0NGTEFHUyA9IFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9DRkxBR1MpCisKK2xpYmdzdG14Zl9sYV9MSUJBREQgPSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9iYXNlL2xpYmdzdGJhZGJhc2UtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAogCS1sZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCS1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAKKwktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKKwkkKEdTVF9CQVNFX0xJQlMpIFwKKwkkKEdTVF9MSUJTKQogCiBsaWJnc3RteGZfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQogbGliZ3N0bXhmX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCmRpZmYgLS1naXQgYS9nc3QvbXhmL214Zi5jIGIvZ3N0L214Zi9teGYuYwppbmRleCA2NjM0ZDE4Li4zMjQ0NjJiIDEwMDY0NAotLS0gYS9nc3QvbXhmL214Zi5jCisrKyBiL2dzdC9teGYvbXhmLmMKQEAgLTcxLDggKzcxLDkgQEAKIAogICAvKiBteGZtdXggaXMgZGlzYWJsZWQgZm9yIG5vdyAtIGl0IGNvbXBpbGVzIGJ1dCBpcyBjb21wbGV0ZWx5IHVudGVzdGVkICovCiAgIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgIm14ZmRlbXV4IiwgR1NUX1JBTktfUFJJTUFSWSwKLSAgICAgICAgICBHU1RfVFlQRV9NWEZfREVNVVgpKQotICAgIC8qIHx8ICFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAibXhmbXV4IiwgR1NUX1JBTktfUFJJTUFSWSwgR1NUX1RZUEVfTVhGX01VWCkpICovCisgICAgICAgICAgR1NUX1RZUEVfTVhGX0RFTVVYKQorICAgICAgfHwgIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJteGZtdXgiLCBHU1RfUkFOS19QUklNQVJZLAorICAgICAgICAgIEdTVF9UWVBFX01YRl9NVVgpKQogICAgIHJldHVybiBGQUxTRTsKIAogICByZXR1cm4gVFJVRTsKZGlmZiAtLWdpdCBhL2dzdC9teGYvbXhmYWVzLWJ3Zi5jIGIvZ3N0L214Zi9teGZhZXMtYndmLmMKaW5kZXggNzY0OTk3My4uNjMzZjNhZiAxMDA2NDQKLS0tIGEvZ3N0L214Zi9teGZhZXMtYndmLmMKKysrIGIvZ3N0L214Zi9teGZhZXMtYndmLmMKQEAgLTEyNjYsNyArMTI2Niw4IEBACiAgICAgICAgICAgZGVzY3JpcHRvci0+Y2hhbm5lbF9jb3VudCkgLyA4OwogCiAgICAgYXVkaW9fZm9ybWF0ID0KLSAgICAgICAgZ3N0X2F1ZGlvX2Zvcm1hdF9idWlsZF9pbnRlZ2VyIChibG9ja19hbGlnbiAhPSAxLCBHX0xJVFRMRV9FTkRJQU4sCisgICAgICAgIGdzdF9hdWRpb19mb3JtYXRfYnVpbGRfaW50ZWdlciAoYmxvY2tfYWxpZ24gIT0KKyAgICAgICAgZGVzY3JpcHRvci0+Y2hhbm5lbF9jb3VudCwgR19MSVRUTEVfRU5ESUFOLAogICAgICAgICAoYmxvY2tfYWxpZ24gLyBkZXNjcmlwdG9yLT5jaGFubmVsX2NvdW50KSAqIDgsCiAgICAgICAgIChibG9ja19hbGlnbiAvIGRlc2NyaXB0b3ItPmNoYW5uZWxfY291bnQpICogOCk7CiAgICAgcmV0ID0KQEAgLTEyOTcsNyArMTI5OCw4IEBACiAgICAgICAgICAgZGVzY3JpcHRvci0+Y2hhbm5lbF9jb3VudCkgLyA4OwogCiAgICAgYXVkaW9fZm9ybWF0ID0KLSAgICAgICAgZ3N0X2F1ZGlvX2Zvcm1hdF9idWlsZF9pbnRlZ2VyIChibG9ja19hbGlnbiAhPSAxLCBHX0JJR19FTkRJQU4sCisgICAgICAgIGdzdF9hdWRpb19mb3JtYXRfYnVpbGRfaW50ZWdlciAoYmxvY2tfYWxpZ24gIT0KKyAgICAgICAgZGVzY3JpcHRvci0+Y2hhbm5lbF9jb3VudCwgR19CSUdfRU5ESUFOLAogICAgICAgICAoYmxvY2tfYWxpZ24gLyBkZXNjcmlwdG9yLT5jaGFubmVsX2NvdW50KSAqIDgsCiAgICAgICAgIChibG9ja19hbGlnbiAvIGRlc2NyaXB0b3ItPmNoYW5uZWxfY291bnQpICogOCk7CiAgICAgcmV0ID0KQEAgLTEzNzQsOCArMTM3Niw4IEBACiAgICAgICAgIGRlc2NyaXB0b3ItPmNoYW5uZWxfY291bnQpIC8gODsKIAogICBhdWRpb19mb3JtYXQgPQotICAgICAgZ3N0X2F1ZGlvX2Zvcm1hdF9idWlsZF9pbnRlZ2VyIChibG9ja19hbGlnbiAhPSAxLCBHX0xJVFRMRV9FTkRJQU4sCi0gICAgICAoYmxvY2tfYWxpZ24gLyBkZXNjcmlwdG9yLT5jaGFubmVsX2NvdW50KSAqIDgsCisgICAgICBnc3RfYXVkaW9fZm9ybWF0X2J1aWxkX2ludGVnZXIgKGJsb2NrX2FsaWduICE9IGRlc2NyaXB0b3ItPmNoYW5uZWxfY291bnQsCisgICAgICBHX0xJVFRMRV9FTkRJQU4sIChibG9ja19hbGlnbiAvIGRlc2NyaXB0b3ItPmNoYW5uZWxfY291bnQpICogOCwKICAgICAgIChibG9ja19hbGlnbiAvIGRlc2NyaXB0b3ItPmNoYW5uZWxfY291bnQpICogOCk7CiAgIHJldCA9CiAgICAgICBteGZfbWV0YWRhdGFfZ2VuZXJpY19zb3VuZF9lc3NlbmNlX2Rlc2NyaXB0b3JfY3JlYXRlX2NhcHMgKGRlc2NyaXB0b3IsCmRpZmYgLS1naXQgYS9nc3QvbXhmL214ZmRlbXV4LmMgYi9nc3QvbXhmL214ZmRlbXV4LmMKaW5kZXggZTQ1ZTQ5Yy4uZjExZDYwNCAxMDA2NDQKLS0tIGEvZ3N0L214Zi9teGZkZW11eC5jCisrKyBiL2dzdC9teGYvbXhmZGVtdXguYwpAQCAtMjUsNyArMjUsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgZmlsZXNyYyBsb2NhdGlvbj0vcGF0aC90by9teGYgISBteGZkZW11eCAhIGF1ZGlvY29udmVydCAhIGF1dG9hdWRpb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZpbGVzcmMgbG9jYXRpb249L3BhdGgvdG8vbXhmICEgbXhmZGVtdXggISBhdWRpb2NvbnZlcnQgISBhdXRvYXVkaW9zaW5rCiAgKiBdfCBUaGlzIHBpcGVsaW5lIGRlbXV4ZXMgYW4gTVhGIGZpbGUgYW5kIG91dHB1dHMgb25lIG9mIHRoZSBjb250YWluZWQgcmF3IGF1ZGlvIHN0cmVhbXMuCiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC03OCw2ICs3OCw4IEBACiBnc3RfbXhmX2RlbXV4X2hhbmRsZV9pbmRleF90YWJsZV9zZWdtZW50IChHc3RNWEZEZW11eCAqIGRlbXV4LAogICAgIGNvbnN0IE1YRlVMICoga2V5LCBHc3RCdWZmZXIgKiBidWZmZXIsIGd1aW50NjQgb2Zmc2V0KTsKIAorc3RhdGljIHZvaWQgY29sbGVjdF9pbmRleF90YWJsZV9zZWdtZW50cyAoR3N0TVhGRGVtdXggKiBkZW11eCk7CisKIEdUeXBlIGdzdF9teGZfZGVtdXhfcGFkX2dldF90eXBlICh2b2lkKTsKIEdfREVGSU5FX1RZUEUgKEdzdE1YRkRlbXV4UGFkLCBnc3RfbXhmX2RlbXV4X3BhZCwgR1NUX1RZUEVfUEFEKTsKIApAQCAtMjc3LDYgKzI3OSwxOCBAQAogICAgIGRlbXV4LT5wZW5kaW5nX2luZGV4X3RhYmxlX3NlZ21lbnRzID0gTlVMTDsKICAgfQogCisgIGlmIChkZW11eC0+aW5kZXhfdGFibGVzKSB7CisgICAgR0xpc3QgKmw7CisKKyAgICBmb3IgKGwgPSBkZW11eC0+aW5kZXhfdGFibGVzOyBsOyBsID0gbC0+bmV4dCkgeworICAgICAgR3N0TVhGRGVtdXhJbmRleFRhYmxlICp0ID0gbC0+ZGF0YTsKKyAgICAgIGdfYXJyYXlfZnJlZSAodC0+b2Zmc2V0cywgVFJVRSk7CisgICAgICBnX2ZyZWUgKHQpOworICAgIH0KKyAgICBnX2xpc3RfZnJlZSAoZGVtdXgtPmluZGV4X3RhYmxlcyk7CisgICAgZGVtdXgtPmluZGV4X3RhYmxlcyA9IE5VTEw7CisgIH0KKwogICBkZW11eC0+aW5kZXhfdGFibGVfc2VnbWVudHNfY29sbGVjdGVkID0gRkFMU0U7CiAKICAgZ3N0X214Zl9kZW11eF9yZXNldF9teGZfc3RhdGUgKGRlbXV4KTsKQEAgLTcxNiw2ICs3MzAsNyBAQAogCiAgICAgICAgIG1lbXNldCAoJnRtcCwgMCwgc2l6ZW9mICh0bXApKTsKICAgICAgICAgdG1wLmJvZHlfc2lkID0gZWRhdGEtPmJvZHlfc2lkOworICAgICAgICB0bXAuaW5kZXhfc2lkID0gZWRhdGEtPmluZGV4X3NpZDsKICAgICAgICAgdG1wLnRyYWNrX251bWJlciA9IHRyYWNrLT5wYXJlbnQudHJhY2tfbnVtYmVyOwogICAgICAgICB0bXAudHJhY2tfaWQgPSB0cmFjay0+cGFyZW50LnRyYWNrX2lkOwogICAgICAgICBtZW1jcHkgKCZ0bXAuc291cmNlX3BhY2thZ2VfdWlkLCAmcGFja2FnZS0+cGFyZW50LnBhY2thZ2VfdWlkLCAzMik7CkBAIC0xNzEzLDYgKzE3MjgsMzYgQEAKICAgaWYgKG91dGJ1ZikKICAgICBrZXlmcmFtZSA9ICFHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUIChvdXRidWYsIEdTVF9CVUZGRVJfRkxBR19ERUxUQV9VTklUKTsKIAorICAvKiBQcmVmZXIga2V5ZnJhbWUgaW5mb3JtYXRpb24gZnJvbSBpbmRleCB0YWJsZXMgb3ZlciBldmVyeXRoaW5nIGVsc2UgKi8KKyAgaWYgKGRlbXV4LT5pbmRleF90YWJsZXMgJiYgb3V0YnVmKSB7CisgICAgR0xpc3QgKmw7CisgICAgR3N0TVhGRGVtdXhJbmRleFRhYmxlICppbmRleF90YWJsZSA9IE5VTEw7CisKKyAgICBmb3IgKGwgPSBkZW11eC0+aW5kZXhfdGFibGVzOyBsOyBsID0gbC0+bmV4dCkgeworICAgICAgR3N0TVhGRGVtdXhJbmRleFRhYmxlICp0bXAgPSBsLT5kYXRhOworCisgICAgICBpZiAodG1wLT5ib2R5X3NpZCA9PSBldHJhY2stPmJvZHlfc2lkCisgICAgICAgICAgJiYgdG1wLT5pbmRleF9zaWQgPT0gZXRyYWNrLT5pbmRleF9zaWQpIHsKKyAgICAgICAgaW5kZXhfdGFibGUgPSB0bXA7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKworICAgIGlmIChpbmRleF90YWJsZSAmJiBpbmRleF90YWJsZS0+b2Zmc2V0cy0+bGVuID4gZXRyYWNrLT5wb3NpdGlvbikgeworICAgICAgR3N0TVhGRGVtdXhJbmRleCAqaW5kZXggPQorICAgICAgICAgICZnX2FycmF5X2luZGV4IChpbmRleF90YWJsZS0+b2Zmc2V0cywgR3N0TVhGRGVtdXhJbmRleCwKKyAgICAgICAgICBldHJhY2stPnBvc2l0aW9uKTsKKyAgICAgIGlmIChpbmRleC0+b2Zmc2V0ICE9IDApIHsKKyAgICAgICAga2V5ZnJhbWUgPSBpbmRleC0+a2V5ZnJhbWU7CisKKyAgICAgICAgaWYgKGtleWZyYW1lKQorICAgICAgICAgIEdTVF9CVUZGRVJfRkxBR19VTlNFVCAob3V0YnVmLCBHU1RfQlVGRkVSX0ZMQUdfREVMVEFfVU5JVCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBHU1RfQlVGRkVSX0ZMQUdfU0VUIChvdXRidWYsIEdTVF9CVUZGRVJfRkxBR19ERUxUQV9VTklUKTsKKyAgICAgIH0KKyAgICB9CisgIH0KKwogICBpZiAoIWV0cmFjay0+b2Zmc2V0cykKICAgICBldHJhY2stPm9mZnNldHMgPSBnX2FycmF5X25ldyAoRkFMU0UsIFRSVUUsIHNpemVvZiAoR3N0TVhGRGVtdXhJbmRleCkpOwogCkBAIC0xODIxLDEwICsxODY2LDEyIEBACiAKICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwKICAgICAgICAgIlB1c2hpbmcgYnVmZmVyIG9mIHNpemUgJSIgR19HU0laRV9GT1JNQVQgIiBmb3IgdHJhY2sgJXU6IHRpbWVzdGFtcCAlIgotICAgICAgICBHU1RfVElNRV9GT1JNQVQgIiBkdXJhdGlvbiAlIiBHU1RfVElNRV9GT1JNQVQsCi0gICAgICAgIGdzdF9idWZmZXJfZ2V0X3NpemUgKG91dGJ1ZiksIHBhZC0+bWF0ZXJpYWxfdHJhY2stPnBhcmVudC50cmFja19pZCwKKyAgICAgICAgR1NUX1RJTUVfRk9STUFUICIgZHVyYXRpb24gJSIgR1NUX1RJTUVfRk9STUFUICIgcG9zaXRpb24gJSIKKyAgICAgICAgR19HVUlOVDY0X0ZPUk1BVCwgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAob3V0YnVmKSwKKyAgICAgICAgcGFkLT5tYXRlcmlhbF90cmFjay0+cGFyZW50LnRyYWNrX2lkLAogICAgICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAob3V0YnVmKSksCi0gICAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfRFVSQVRJT04gKG91dGJ1ZikpKTsKKyAgICAgICAgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9EVVJBVElPTiAob3V0YnVmKSksCisgICAgICAgIHBhZC0+Y3VycmVudF9lc3NlbmNlX3RyYWNrX3Bvc2l0aW9uKTsKIAogICAgIGlmIChwYWQtPmRpc2NvbnQpIHsKICAgICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKG91dGJ1ZiwgR1NUX0JVRkZFUl9GTEFHX0RJU0NPTlQpOwpAQCAtMTg5NiwzMyArMTk0Myw3NCBAQAogfQogCiBzdGF0aWMgdm9pZAotcmVhZF9wYXJ0aXRpb25faGVhZGVyIChHc3RNWEZEZW11eCAqIGRlbXV4LCBndWludDY0IG9mZnNldCkKK3JlYWRfcGFydGl0aW9uX2hlYWRlciAoR3N0TVhGRGVtdXggKiBkZW11eCkKIHsKICAgR3N0QnVmZmVyICpidWY7CiAgIE1YRlVMIGtleTsKICAgZ3VpbnQgcmVhZDsKIAotICBpZiAoZ3N0X214Zl9kZW11eF9wdWxsX2tsdl9wYWNrZXQgKGRlbXV4LCBvZmZzZXQsICZrZXksICZidWYsICZyZWFkKQorICBpZiAoZ3N0X214Zl9kZW11eF9wdWxsX2tsdl9wYWNrZXQgKGRlbXV4LCBkZW11eC0+b2Zmc2V0LCAma2V5LCAmYnVmLCAmcmVhZCkKICAgICAgICE9IEdTVF9GTE9XX09LKQogICAgIHJldHVybjsKLSAgb2Zmc2V0ICs9IHJlYWQ7CiAKICAgaWYgKCFteGZfaXNfcGFydGl0aW9uX3BhY2sgKCZrZXkpKSB7CiAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKICAgICByZXR1cm47CiAgIH0KIAotICBkbyB7CisgIGlmIChnc3RfbXhmX2RlbXV4X2hhbmRsZV9wYXJ0aXRpb25fcGFjayAoZGVtdXgsICZrZXksIGJ1ZikgIT0gR1NUX0ZMT1dfT0spIHsKICAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwotICAgIGlmIChnc3RfbXhmX2RlbXV4X3B1bGxfa2x2X3BhY2tldCAoZGVtdXgsIG9mZnNldCwgJmtleSwgJmJ1ZiwgJnJlYWQpCisgICAgcmV0dXJuOworICB9CisgIGRlbXV4LT5vZmZzZXQgKz0gcmVhZDsKKyAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKworICBpZiAoZ3N0X214Zl9kZW11eF9wdWxsX2tsdl9wYWNrZXQgKGRlbXV4LCBkZW11eC0+b2Zmc2V0LCAma2V5LCAmYnVmLCAmcmVhZCkKKyAgICAgICE9IEdTVF9GTE9XX09LKQorICAgIHJldHVybjsKKworICB3aGlsZSAobXhmX2lzX2ZpbGwgKCZrZXkpKSB7CisgICAgZGVtdXgtPm9mZnNldCArPSByZWFkOworICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CisgICAgaWYgKGdzdF9teGZfZGVtdXhfcHVsbF9rbHZfcGFja2V0IChkZW11eCwgZGVtdXgtPm9mZnNldCwgJmtleSwgJmJ1ZiwgJnJlYWQpCiAgICAgICAgICE9IEdTVF9GTE9XX09LKQogICAgICAgcmV0dXJuOwotICAgIG9mZnNldCArPSByZWFkOwogICB9Ci0gIHdoaWxlIChteGZfaXNfZmlsbCAoJmtleSkpOwogCi0gIGlmIChteGZfaXNfaW5kZXhfdGFibGVfc2VnbWVudCAoJmtleSkpIHsKLSAgICBnc3RfbXhmX2RlbXV4X2hhbmRsZV9pbmRleF90YWJsZV9zZWdtZW50IChkZW11eCwgJmtleSwgYnVmLCBvZmZzZXQpOworICBpZiAoIW14Zl9pc19pbmRleF90YWJsZV9zZWdtZW50ICgma2V5KQorICAgICAgJiYgZGVtdXgtPmN1cnJlbnRfcGFydGl0aW9uLT5wYXJ0aXRpb24uaGVhZGVyX2J5dGVfY291bnQpIHsKKyAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOworICAgIGRlbXV4LT5vZmZzZXQgKz0gZGVtdXgtPmN1cnJlbnRfcGFydGl0aW9uLT5wYXJ0aXRpb24uaGVhZGVyX2J5dGVfY291bnQ7CisgICAgaWYgKGdzdF9teGZfZGVtdXhfcHVsbF9rbHZfcGFja2V0IChkZW11eCwgZGVtdXgtPm9mZnNldCwgJmtleSwgJmJ1ZiwgJnJlYWQpCisgICAgICAgICE9IEdTVF9GTE9XX09LKQorICAgICAgcmV0dXJuOworICB9CisKKyAgd2hpbGUgKG14Zl9pc19pbmRleF90YWJsZV9zZWdtZW50ICgma2V5KSkgeworICAgIGdzdF9teGZfZGVtdXhfaGFuZGxlX2luZGV4X3RhYmxlX3NlZ21lbnQgKGRlbXV4LCAma2V5LCBidWYsIGRlbXV4LT5vZmZzZXQpOworICAgIGRlbXV4LT5vZmZzZXQgKz0gcmVhZDsKKworICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CisgICAgaWYgKGdzdF9teGZfZGVtdXhfcHVsbF9rbHZfcGFja2V0IChkZW11eCwgZGVtdXgtPm9mZnNldCwgJmtleSwgJmJ1ZiwgJnJlYWQpCisgICAgICAgICE9IEdTVF9GTE9XX09LKQorICAgICAgcmV0dXJuOworICB9CisKKyAgd2hpbGUgKG14Zl9pc19maWxsICgma2V5KSkgeworICAgIGRlbXV4LT5vZmZzZXQgKz0gcmVhZDsKKyAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOworICAgIGlmIChnc3RfbXhmX2RlbXV4X3B1bGxfa2x2X3BhY2tldCAoZGVtdXgsIGRlbXV4LT5vZmZzZXQsICZrZXksICZidWYsICZyZWFkKQorICAgICAgICAhPSBHU1RfRkxPV19PSykKKyAgICAgIHJldHVybjsKKyAgfQorCisgIGlmIChteGZfaXNfZ2VuZXJpY19jb250YWluZXJfc3lzdGVtX2l0ZW0gKCZrZXkpIHx8CisgICAgICBteGZfaXNfZ2VuZXJpY19jb250YWluZXJfZXNzZW5jZV9lbGVtZW50ICgma2V5KSB8fAorICAgICAgbXhmX2lzX2F2aWRfZXNzZW5jZV9jb250YWluZXJfZXNzZW5jZV9lbGVtZW50ICgma2V5KSkgeworICAgIGlmIChkZW11eC0+Y3VycmVudF9wYXJ0aXRpb24tPmVzc2VuY2VfY29udGFpbmVyX29mZnNldCA9PSAwKQorICAgICAgZGVtdXgtPmN1cnJlbnRfcGFydGl0aW9uLT5lc3NlbmNlX2NvbnRhaW5lcl9vZmZzZXQgPQorICAgICAgICAgIGRlbXV4LT5vZmZzZXQgLSBkZW11eC0+Y3VycmVudF9wYXJ0aXRpb24tPnBhcnRpdGlvbi50aGlzX3BhcnRpdGlvbiAtCisgICAgICAgICAgZGVtdXgtPnJ1bl9pbjsKICAgfQogCiAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CkBAIC0yMDAxLDE5ICsyMDg5LDYgQEAKICAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQogCi1zdGF0aWMgZ2ludAotY29tcGFyZV9pbmRleF90YWJsZV9zZWdtZW50cyAoZ2NvbnN0cG9pbnRlciBjb21wYXJlZSwgZ2NvbnN0cG9pbnRlciBjb21wYXJlZCkKLXsKLSAgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKmNvbXBhcmVlX3NlZ21lbnQsICpjb21wYXJlZF9zZWdtZW50OwotCi0gIGNvbXBhcmVlX3NlZ21lbnQgPSAoTVhGSW5kZXhUYWJsZVNlZ21lbnQgKikgY29tcGFyZWU7Ci0gIGNvbXBhcmVkX3NlZ21lbnQgPSAoTVhGSW5kZXhUYWJsZVNlZ21lbnQgKikgY29tcGFyZWQ7Ci0KLSAgLyogRklYTUUgOiBpcyB0aGF0IHRoZSBjb3JyZWN0IGNvbXBhcmlzb24gPyAqLwotICByZXR1cm4gY29tcGFyZWVfc2VnbWVudC0+aW5kZXhfc3RhcnRfcG9zaXRpb24gLQotICAgICAgY29tcGFyZWRfc2VnbWVudC0+aW5kZXhfc3RhcnRfcG9zaXRpb247Ci19Ci0KIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfbXhmX2RlbXV4X2hhbmRsZV9pbmRleF90YWJsZV9zZWdtZW50IChHc3RNWEZEZW11eCAqIGRlbXV4LAogICAgIGNvbnN0IE1YRlVMICoga2V5LCBHc3RCdWZmZXIgKiBidWZmZXIsIGd1aW50NjQgb2Zmc2V0KQpAQCAtMjAyMSwyMSArMjA5NiwxNSBAQAogICBNWEZJbmRleFRhYmxlU2VnbWVudCAqc2VnbWVudDsKICAgR3N0TWFwSW5mbyBtYXA7CiAgIGdib29sZWFuIHJldDsKLSAgR0xpc3QgKmw7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsCiAgICAgICAiSGFuZGxpbmcgaW5kZXggdGFibGUgc2VnbWVudCBvZiBzaXplICUiIEdfR1NJWkVfRk9STUFUICIgYXQgb2Zmc2V0ICUiCiAgICAgICBHX0dVSU5UNjRfRk9STUFULCBnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpLCBvZmZzZXQpOwogCi0gIGlmICghZGVtdXgtPmN1cnJlbnRfcGFydGl0aW9uLT5wcmltZXIubWFwcGluZ3MpIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LCAiSW52YWxpZCBwcmltZXIgcGFjayIpOwotICB9Ci0KICAgc2VnbWVudCA9IGdfbmV3MCAoTVhGSW5kZXhUYWJsZVNlZ21lbnQsIDEpOwogCiAgIGdzdF9idWZmZXJfbWFwIChidWZmZXIsICZtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gIHJldCA9IG14Zl9pbmRleF90YWJsZV9zZWdtZW50X3BhcnNlIChrZXksIHNlZ21lbnQsCi0gICAgICAmZGVtdXgtPmN1cnJlbnRfcGFydGl0aW9uLT5wcmltZXIsIG1hcC5kYXRhLCBtYXAuc2l6ZSk7CisgIHJldCA9IG14Zl9pbmRleF90YWJsZV9zZWdtZW50X3BhcnNlIChrZXksIHNlZ21lbnQsIG1hcC5kYXRhLCBtYXAuc2l6ZSk7CiAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZmZlciwgJm1hcCk7CiAKICAgaWYgKCFyZXQpIHsKQEAgLTIwNDMsMTggKzIxMTIsOCBAQAogICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgfQogCi0gIHNlZ21lbnQtPnN0cmVhbV9vZmZzZXQgPSBvZmZzZXQ7Ci0gIGwgPSBnX2xpc3RfZmluZF9jdXN0b20gKGRlbXV4LT5wZW5kaW5nX2luZGV4X3RhYmxlX3NlZ21lbnRzLCBzZWdtZW50LAotICAgICAgKEdDb21wYXJlRnVuYykgY29tcGFyZV9pbmRleF90YWJsZV9zZWdtZW50cyk7Ci0KLSAgLyogUHJldmVudCBkdXBsaWNhdGVzICovCi0gIGlmIChsID09IE5VTEwpIHsKLSAgICBkZW11eC0+cGVuZGluZ19pbmRleF90YWJsZV9zZWdtZW50cyA9Ci0gICAgICAgIGdfbGlzdF9wcmVwZW5kIChkZW11eC0+cGVuZGluZ19pbmRleF90YWJsZV9zZWdtZW50cywgc2VnbWVudCk7Ci0gIH0gZWxzZSB7Ci0gICAgbXhmX2luZGV4X3RhYmxlX3NlZ21lbnRfcmVzZXQgKHNlZ21lbnQpOwotICAgIGdfZnJlZSAoc2VnbWVudCk7Ci0gIH0KKyAgZGVtdXgtPnBlbmRpbmdfaW5kZXhfdGFibGVfc2VnbWVudHMgPQorICAgICAgZ19saXN0X3ByZXBlbmQgKGRlbXV4LT5wZW5kaW5nX2luZGV4X3RhYmxlX3NlZ21lbnRzLCBzZWdtZW50KTsKIAogICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CkBAIC0yMTY2LDYgKzIyMjUsNyBAQAogICBndWludDY0IG9sZF9vZmZzZXQgPSBkZW11eC0+b2Zmc2V0OwogICBNWEZVTCBrZXk7CiAgIEdzdE1hcEluZm8gbWFwOworICBHc3RGbG93UmV0dXJuIGZsb3dfcmV0OwogCiAgIGlmICghZ3N0X3BhZF9wZWVyX3F1ZXJ5X2R1cmF0aW9uIChkZW11eC0+c2lua3BhZCwgZm10LCAmZmlsZXNpemUpIHx8CiAgICAgICBmbXQgIT0gR1NUX0ZPUk1BVF9CWVRFUyB8fCBmaWxlc2l6ZSA9PSAtMSkgewpAQCAtMjIxOSw5ICsyMjc5LDE0IEBACiAgICAgcmV0dXJuOwogICB9CiAKLSAgZ3N0X214Zl9kZW11eF9oYW5kbGVfcmFuZG9tX2luZGV4X3BhY2sgKGRlbXV4LCAma2V5LCBidWZmZXIpOworICBmbG93X3JldCA9IGdzdF9teGZfZGVtdXhfaGFuZGxlX3JhbmRvbV9pbmRleF9wYWNrIChkZW11eCwgJmtleSwgYnVmZmVyKTsKICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKICAgZGVtdXgtPm9mZnNldCA9IG9sZF9vZmZzZXQ7CisKKyAgaWYgKGZsb3dfcmV0ID09IEdTVF9GTE9XX09LICYmICFkZW11eC0+aW5kZXhfdGFibGVfc2VnbWVudHNfY29sbGVjdGVkKSB7CisgICAgY29sbGVjdF9pbmRleF90YWJsZV9zZWdtZW50cyAoZGVtdXgpOworICAgIGRlbXV4LT5pbmRleF90YWJsZV9zZWdtZW50c19jb2xsZWN0ZWQgPSBUUlVFOworICB9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yNDYxLDYgKzI1MjYsMTIgQEAKICAgICAgICAgYnVmZmVyLCBwZWVrKTsKICAgfSBlbHNlIGlmIChteGZfaXNfcmFuZG9tX2luZGV4X3BhY2sgKGtleSkpIHsKICAgICByZXQgPSBnc3RfbXhmX2RlbXV4X2hhbmRsZV9yYW5kb21faW5kZXhfcGFjayAoZGVtdXgsIGtleSwgYnVmZmVyKTsKKworICAgIGlmIChyZXQgPT0gR1NUX0ZMT1dfT0sgJiYgZGVtdXgtPnJhbmRvbV9hY2Nlc3MKKyAgICAgICAgJiYgIWRlbXV4LT5pbmRleF90YWJsZV9zZWdtZW50c19jb2xsZWN0ZWQpIHsKKyAgICAgIGNvbGxlY3RfaW5kZXhfdGFibGVfc2VnbWVudHMgKGRlbXV4KTsKKyAgICAgIGRlbXV4LT5pbmRleF90YWJsZV9zZWdtZW50c19jb2xsZWN0ZWQgPSBUUlVFOworICAgIH0KICAgfSBlbHNlIGlmIChteGZfaXNfaW5kZXhfdGFibGVfc2VnbWVudCAoa2V5KSkgewogICAgIHJldCA9CiAgICAgICAgIGdzdF9teGZfZGVtdXhfaGFuZGxlX2luZGV4X3RhYmxlX3NlZ21lbnQgKGRlbXV4LCBrZXksIGJ1ZmZlciwKQEAgLTI1MjQsMjggKzI1OTUsNjYgQEAKIH0KIAogc3RhdGljIGd1aW50NjQKLWdldF9vZmZzZXRfZnJvbV9pbmRleF90YWJsZV9zZWdtZW50cyAoR3N0TVhGRGVtdXggKiBkZW11eCwgZ2ludDY0IHBvc2l0aW9uLAotICAgIGdpbnQ2NCAqIGluZGV4X3N0YXJ0X3Bvc2l0aW9uKQorZmluZF9vZmZzZXQgKEdBcnJheSAqIG9mZnNldHMsIGdpbnQ2NCAqIHBvc2l0aW9uLCBnYm9vbGVhbiBrZXlmcmFtZSkKIHsKLSAgR0xpc3QgKmw7Ci0gIGdpbnQ2NCBzdGFydCwgZW5kOwotICBnYm9vbGVhbiByZXR1cm5fb2Zmc2V0ID0gRkFMU0U7CisgIEdzdE1YRkRlbXV4SW5kZXggKmlkeDsKKyAgZ3VpbnQ2NCBjdXJyZW50X29mZnNldCA9IC0xOworICBnaW50NjQgY3VycmVudF9wb3NpdGlvbiA9ICpwb3NpdGlvbjsKIAotICBmb3IgKGwgPSBkZW11eC0+cGVuZGluZ19pbmRleF90YWJsZV9zZWdtZW50czsgbCAhPSBOVUxMOyBsID0gbC0+bmV4dCkgewotICAgIE1YRkluZGV4VGFibGVTZWdtZW50ICpzZWdtZW50ID0gKE1YRkluZGV4VGFibGVTZWdtZW50ICopIGwtPmRhdGE7Ci0gICAgc3RhcnQgPSBzZWdtZW50LT5pbmRleF9zdGFydF9wb3NpdGlvbjsKLSAgICBlbmQgPSBzdGFydCArIHNlZ21lbnQtPmluZGV4X2R1cmF0aW9uOworICBpZiAoIW9mZnNldHMgfHwgb2Zmc2V0cy0+bGVuIDw9ICpwb3NpdGlvbikKKyAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAocmV0dXJuX29mZnNldCkKLSAgICAgIHJldHVybiBzZWdtZW50LT5zdHJlYW1fb2Zmc2V0OwotCi0gICAgaWYgKHN0YXJ0IDw9IHBvc2l0aW9uICYmIHBvc2l0aW9uIDwgZW5kKSB7Ci0gICAgICAqaW5kZXhfc3RhcnRfcG9zaXRpb24gPSBzZWdtZW50LT5pbmRleF9zdGFydF9wb3NpdGlvbjsKLSAgICAgIHJldHVybl9vZmZzZXQgPSBUUlVFOworICBpZHggPSAmZ19hcnJheV9pbmRleCAob2Zmc2V0cywgR3N0TVhGRGVtdXhJbmRleCwgKnBvc2l0aW9uKTsKKyAgaWYgKGlkeC0+b2Zmc2V0ICE9IDAgJiYgKCFrZXlmcmFtZSB8fCBpZHgtPmtleWZyYW1lKSkgeworICAgIGN1cnJlbnRfb2Zmc2V0ID0gaWR4LT5vZmZzZXQ7CisgIH0gZWxzZSBpZiAoaWR4LT5vZmZzZXQgIT0gMCkgeworICAgIGN1cnJlbnRfcG9zaXRpb24tLTsKKyAgICB3aGlsZSAoY3VycmVudF9wb3NpdGlvbiA+PSAwKSB7CisgICAgICBpZHggPSAmZ19hcnJheV9pbmRleCAob2Zmc2V0cywgR3N0TVhGRGVtdXhJbmRleCwgY3VycmVudF9wb3NpdGlvbik7CisgICAgICBpZiAoaWR4LT5vZmZzZXQgPT0gMCkgeworICAgICAgICBicmVhazsKKyAgICAgIH0gZWxzZSBpZiAoIWlkeC0+a2V5ZnJhbWUpIHsKKyAgICAgICAgY3VycmVudF9wb3NpdGlvbi0tOworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN1cnJlbnRfb2Zmc2V0ID0gaWR4LT5vZmZzZXQ7CisgICAgICAgIGJyZWFrOworICAgICAgfQogICAgIH0KICAgfQogCi0gIHJldHVybiAwOworICBpZiAoY3VycmVudF9vZmZzZXQgPT0gLTEpCisgICAgcmV0dXJuIC0xOworCisgICpwb3NpdGlvbiA9IGN1cnJlbnRfcG9zaXRpb247CisgIHJldHVybiBjdXJyZW50X29mZnNldDsKK30KKworc3RhdGljIGd1aW50NjQKK2ZpbmRfY2xvc2VzdF9vZmZzZXQgKEdBcnJheSAqIG9mZnNldHMsIGdpbnQ2NCAqIHBvc2l0aW9uLCBnYm9vbGVhbiBrZXlmcmFtZSkKK3sKKyAgR3N0TVhGRGVtdXhJbmRleCAqaWR4OworICBnaW50NjQgY3VycmVudF9wb3NpdGlvbiA9ICpwb3NpdGlvbjsKKworICBpZiAoIW9mZnNldHMgfHwgb2Zmc2V0cy0+bGVuID09IDApCisgICAgcmV0dXJuIC0xOworCisgIGN1cnJlbnRfcG9zaXRpb24gPSBNSU4gKGN1cnJlbnRfcG9zaXRpb24sIG9mZnNldHMtPmxlbiAtIDEpOworCisgIGlkeCA9ICZnX2FycmF5X2luZGV4IChvZmZzZXRzLCBHc3RNWEZEZW11eEluZGV4LCBjdXJyZW50X3Bvc2l0aW9uKTsKKyAgd2hpbGUgKGlkeC0+b2Zmc2V0ID09IDAgfHwgKGtleWZyYW1lICYmICFpZHgtPmtleWZyYW1lKSkgeworICAgIGN1cnJlbnRfcG9zaXRpb24tLTsKKyAgICBpZiAoY3VycmVudF9wb3NpdGlvbiA8IDApCisgICAgICBicmVhazsKKyAgICBpZHggPSAmZ19hcnJheV9pbmRleCAob2Zmc2V0cywgR3N0TVhGRGVtdXhJbmRleCwgY3VycmVudF9wb3NpdGlvbik7CisgIH0KKworICBpZiAoaWR4LT5vZmZzZXQgIT0gMCAmJiAoIWtleWZyYW1lIHx8IGlkeC0+a2V5ZnJhbWUpKSB7CisgICAgKnBvc2l0aW9uID0gY3VycmVudF9wb3NpdGlvbjsKKyAgICByZXR1cm4gaWR4LT5vZmZzZXQ7CisgIH0KKworICByZXR1cm4gLTE7CiB9CiAKIHN0YXRpYyBndWludDY0CkBAIC0yNTU2LDExICsyNjY1LDI4IEBACiAgIGd1aW50NjQgb2xkX29mZnNldCA9IGRlbXV4LT5vZmZzZXQ7CiAgIEdzdE1YRkRlbXV4UGFydGl0aW9uICpvbGRfcGFydGl0aW9uID0gZGVtdXgtPmN1cnJlbnRfcGFydGl0aW9uOwogICBnaW50IGk7CisgIGd1aW50NjQgb2Zmc2V0OworICBnaW50NjQgcmVxdWVzdGVkX3Bvc2l0aW9uID0gKnBvc2l0aW9uOworICBHc3RNWEZEZW11eEluZGV4VGFibGUgKmluZGV4X3RhYmxlID0gTlVMTDsKIAogICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIlRyeWluZyB0byBmaW5kIGVzc2VuY2UgZWxlbWVudCAlIiBHX0dJTlQ2NF9GT1JNQVQKICAgICAgICIgb2YgdHJhY2sgJXUgd2l0aCBib2R5X3NpZCAldSAoa2V5ZnJhbWUgJWQpIiwgKnBvc2l0aW9uLAogICAgICAgZXRyYWNrLT50cmFja19udW1iZXIsIGV0cmFjay0+Ym9keV9zaWQsIGtleWZyYW1lKTsKIAorICBpZiAoZGVtdXgtPmluZGV4X3RhYmxlcykgeworICAgIEdMaXN0ICpsOworCisgICAgZm9yIChsID0gZGVtdXgtPmluZGV4X3RhYmxlczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICAgIEdzdE1YRkRlbXV4SW5kZXhUYWJsZSAqdG1wID0gbC0+ZGF0YTsKKworICAgICAgaWYgKHRtcC0+Ym9keV9zaWQgPT0gZXRyYWNrLT5ib2R5X3NpZAorICAgICAgICAgICYmIHRtcC0+aW5kZXhfc2lkID09IGV0cmFjay0+aW5kZXhfc2lkKSB7CisgICAgICAgIGluZGV4X3RhYmxlID0gdG1wOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KKwogZnJvbV9pbmRleDoKIAogICBpZiAoZXRyYWNrLT5kdXJhdGlvbiA+IDAgJiYgKnBvc2l0aW9uID49IGV0cmFjay0+ZHVyYXRpb24pIHsKQEAgLTI1NjksODQgKzI2OTUsNjYgQEAKICAgfQogCiAgIC8qIEZpcnN0IHRyeSB0byBmaW5kIGFuIG9mZnNldCBpbiBvdXIgaW5kZXggKi8KLSAgaWYgKGV0cmFjay0+b2Zmc2V0cyAmJiBldHJhY2stPm9mZnNldHMtPmxlbiA+ICpwb3NpdGlvbikgewotICAgIEdzdE1YRkRlbXV4SW5kZXggKmlkeCA9Ci0gICAgICAgICZnX2FycmF5X2luZGV4IChldHJhY2stPm9mZnNldHMsIEdzdE1YRkRlbXV4SW5kZXgsICpwb3NpdGlvbik7Ci0gICAgZ3VpbnQ2NCBjdXJyZW50X29mZnNldCA9IC0xOwotICAgIGdpbnQ2NCBjdXJyZW50X3Bvc2l0aW9uID0gKnBvc2l0aW9uOwotCi0gICAgaWYgKGlkeC0+b2Zmc2V0ICE9IDAgJiYgKCFrZXlmcmFtZSB8fCBpZHgtPmtleWZyYW1lKSkgewotICAgICAgY3VycmVudF9vZmZzZXQgPSBpZHgtPm9mZnNldDsKLSAgICB9IGVsc2UgaWYgKGlkeC0+b2Zmc2V0ICE9IDApIHsKLSAgICAgIGN1cnJlbnRfcG9zaXRpb24tLTsKLSAgICAgIHdoaWxlIChjdXJyZW50X3Bvc2l0aW9uID49IDApIHsKLSAgICAgICAgaWR4ID0KLSAgICAgICAgICAgICZnX2FycmF5X2luZGV4IChldHJhY2stPm9mZnNldHMsIEdzdE1YRkRlbXV4SW5kZXgsCi0gICAgICAgICAgICBjdXJyZW50X3Bvc2l0aW9uKTsKLSAgICAgICAgaWYgKGlkeC0+b2Zmc2V0ID09IDApIHsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmICghaWR4LT5rZXlmcmFtZSkgewotICAgICAgICAgIGN1cnJlbnRfcG9zaXRpb24tLTsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBjdXJyZW50X29mZnNldCA9IGlkeC0+b2Zmc2V0OwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGN1cnJlbnRfb2Zmc2V0ICE9IC0xKSB7Ci0gICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIkZvdW5kIGluIGluZGV4IGF0IG9mZnNldCAlIiBHX0dVSU5UNjRfRk9STUFULAotICAgICAgICAgIGN1cnJlbnRfb2Zmc2V0KTsKLSAgICAgICpwb3NpdGlvbiA9IGN1cnJlbnRfcG9zaXRpb247Ci0gICAgICByZXR1cm4gY3VycmVudF9vZmZzZXQ7Ci0gICAgfQorICBvZmZzZXQgPSBmaW5kX29mZnNldCAoZXRyYWNrLT5vZmZzZXRzLCBwb3NpdGlvbiwga2V5ZnJhbWUpOworICBpZiAob2Zmc2V0ICE9IC0xKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsCisgICAgICAgICJGb3VuZCBlZGl0IHVuaXQgJSIgR19HSU5UNjRfRk9STUFUICIgZm9yICUiIEdfR0lOVDY0X0ZPUk1BVAorICAgICAgICAiIGluIGdlbmVyYXRlZCBpbmRleCBhdCBvZmZzZXQgJSIgR19HVUlOVDY0X0ZPUk1BVCwgKnBvc2l0aW9uLAorICAgICAgICByZXF1ZXN0ZWRfcG9zaXRpb24sIG9mZnNldCk7CisgICAgcmV0dXJuIG9mZnNldDsKICAgfQogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiTm90IGZvdW5kIGluIGluZGV4Iik7CiAgIGlmICghZGVtdXgtPnJhbmRvbV9hY2Nlc3MpIHsKLSAgICBndWludDY0IG5ld19vZmZzZXQgPSAtMTsKLSAgICBnaW50NjQgbmV3X3Bvc2l0aW9uID0gLTE7Ci0KLSAgICBpZiAoZXRyYWNrLT5vZmZzZXRzICYmIGV0cmFjay0+b2Zmc2V0cy0+bGVuKSB7Ci0gICAgICBmb3IgKGkgPSBldHJhY2stPm9mZnNldHMtPmxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgIEdzdE1YRkRlbXV4SW5kZXggKmlkeCA9Ci0gICAgICAgICAgICAmZ19hcnJheV9pbmRleCAoZXRyYWNrLT5vZmZzZXRzLCBHc3RNWEZEZW11eEluZGV4LCBpKTsKLQotICAgICAgICBpZiAoaWR4LT5vZmZzZXQgIT0gMCAmJiBpIDw9ICpwb3NpdGlvbiAmJiAoIWtleWZyYW1lIHx8IGlkeC0+a2V5ZnJhbWUpKSB7Ci0gICAgICAgICAgbmV3X29mZnNldCA9IGlkeC0+b2Zmc2V0OwotICAgICAgICAgIG5ld19wb3NpdGlvbiA9IGk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KKyAgICBvZmZzZXQgPSBmaW5kX2Nsb3Nlc3Rfb2Zmc2V0IChldHJhY2stPm9mZnNldHMsIHBvc2l0aW9uLCBrZXlmcmFtZSk7CisgICAgaWYgKG9mZnNldCAhPSAtMSkgeworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsCisgICAgICAgICAgIlN0YXJ0aW5nIHdpdGggZWRpdCB1bml0ICUiIEdfR0lOVDY0X0ZPUk1BVCAiIGZvciAlIiBHX0dJTlQ2NF9GT1JNQVQKKyAgICAgICAgICAiIGluIGdlbmVyYXRlZCBpbmRleCBhdCBvZmZzZXQgJSIgR19HVUlOVDY0X0ZPUk1BVCwgKnBvc2l0aW9uLAorICAgICAgICAgIHJlcXVlc3RlZF9wb3NpdGlvbiwgb2Zmc2V0KTsKKyAgICAgIHJldHVybiBvZmZzZXQ7CiAgICAgfQogCi0gICAgaWYgKG5ld19vZmZzZXQgIT0gLTEpIHsKLSAgICAgICpwb3NpdGlvbiA9IG5ld19wb3NpdGlvbjsKLSAgICAgIHJldHVybiBuZXdfb2Zmc2V0OworICAgIGlmIChpbmRleF90YWJsZSkgeworICAgICAgb2Zmc2V0ID0gZmluZF9jbG9zZXN0X29mZnNldCAoaW5kZXhfdGFibGUtPm9mZnNldHMsIHBvc2l0aW9uLCBrZXlmcmFtZSk7CisgICAgICBpZiAob2Zmc2V0ICE9IC0xKSB7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LAorICAgICAgICAgICAgIlN0YXJ0aW5nIHdpdGggZWRpdCB1bml0ICUiIEdfR0lOVDY0X0ZPUk1BVCAiIGZvciAlIiBHX0dJTlQ2NF9GT1JNQVQKKyAgICAgICAgICAgICIgaW4gaW5kZXggYXQgb2Zmc2V0ICUiIEdfR1VJTlQ2NF9GT1JNQVQsICpwb3NpdGlvbiwKKyAgICAgICAgICAgIHJlcXVlc3RlZF9wb3NpdGlvbiwgb2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIG9mZnNldDsKKyAgICAgIH0KICAgICB9CiAgIH0gZWxzZSBpZiAoZGVtdXgtPnJhbmRvbV9hY2Nlc3MpIHsKLSAgICBnaW50NjQgaW5kZXhfc3RhcnRfcG9zaXRpb24gPSAtMTsKLSAgICBndWludDY0IG9mZnNldDsKKyAgICBnaW50NjQgaW5kZXhfc3RhcnRfcG9zaXRpb24gPSAqcG9zaXRpb247CiAKICAgICBkZW11eC0+b2Zmc2V0ID0gZGVtdXgtPnJ1bl9pbjsKLSAgICBpZiAoZXRyYWNrLT5vZmZzZXRzICYmIGV0cmFjay0+b2Zmc2V0cy0+bGVuKSB7Ci0gICAgICBmb3IgKGkgPSBldHJhY2stPm9mZnNldHMtPmxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgIEdzdE1YRkRlbXV4SW5kZXggKmlkeCA9Ci0gICAgICAgICAgICAmZ19hcnJheV9pbmRleCAoZXRyYWNrLT5vZmZzZXRzLCBHc3RNWEZEZW11eEluZGV4LCBpKTsKLQotICAgICAgICBpZiAoaWR4LT5vZmZzZXQgIT0gMCAmJiBpIDw9ICpwb3NpdGlvbikgewotICAgICAgICAgIGRlbXV4LT5vZmZzZXQgPSBpZHgtPm9mZnNldCArIGRlbXV4LT5ydW5faW47Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9CiAKICAgICBvZmZzZXQgPQotICAgICAgICBnZXRfb2Zmc2V0X2Zyb21faW5kZXhfdGFibGVfc2VnbWVudHMgKGRlbXV4LCAqcG9zaXRpb24sCi0gICAgICAgICZpbmRleF9zdGFydF9wb3NpdGlvbik7CisgICAgICAgIGZpbmRfY2xvc2VzdF9vZmZzZXQgKGV0cmFjay0+b2Zmc2V0cywgJmluZGV4X3N0YXJ0X3Bvc2l0aW9uLCBGQUxTRSk7CisgICAgaWYgKG9mZnNldCAhPSAtMSkgeworICAgICAgZGVtdXgtPm9mZnNldCA9IG9mZnNldCArIGRlbXV4LT5ydW5faW47CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwKKyAgICAgICAgICAiU3RhcnRpbmcgd2l0aCBlZGl0IHVuaXQgJSIgR19HSU5UNjRfRk9STUFUICIgZm9yICUiIEdfR0lOVDY0X0ZPUk1BVAorICAgICAgICAgICIgaW4gZ2VuZXJhdGVkIGluZGV4IGF0IG9mZnNldCAlIiBHX0dVSU5UNjRfRk9STUFULAorICAgICAgICAgIGluZGV4X3N0YXJ0X3Bvc2l0aW9uLCByZXF1ZXN0ZWRfcG9zaXRpb24sIG9mZnNldCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGluZGV4X3N0YXJ0X3Bvc2l0aW9uID0gLTE7CisgICAgfQogCi0gICAgZGVtdXgtPm9mZnNldCA9IG9mZnNldDsKKyAgICBpZiAoaW5kZXhfdGFibGUpIHsKKyAgICAgIGdpbnQ2NCB0bXBfcG9zaXRpb24gPSAqcG9zaXRpb247CisKKyAgICAgIG9mZnNldCA9IGZpbmRfY2xvc2VzdF9vZmZzZXQgKGluZGV4X3RhYmxlLT5vZmZzZXRzLCAmdG1wX3Bvc2l0aW9uLCBUUlVFKTsKKyAgICAgIGlmIChvZmZzZXQgIT0gLTEgJiYgdG1wX3Bvc2l0aW9uID4gaW5kZXhfc3RhcnRfcG9zaXRpb24pIHsKKyAgICAgICAgZGVtdXgtPm9mZnNldCA9IG9mZnNldCArIGRlbXV4LT5ydW5faW47CisgICAgICAgIGluZGV4X3N0YXJ0X3Bvc2l0aW9uID0gdG1wX3Bvc2l0aW9uOworICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwKKyAgICAgICAgICAgICJTdGFydGluZyB3aXRoIGVkaXQgdW5pdCAlIiBHX0dJTlQ2NF9GT1JNQVQgIiBmb3IgJSIgR19HSU5UNjRfRk9STUFUCisgICAgICAgICAgICAiIGluIGluZGV4IGF0IG9mZnNldCAlIiBHX0dVSU5UNjRfRk9STUFULCBpbmRleF9zdGFydF9wb3NpdGlvbiwKKyAgICAgICAgICAgIHJlcXVlc3RlZF9wb3NpdGlvbiwgb2Zmc2V0KTsKKyAgICAgIH0KKyAgICB9CiAKICAgICBnc3RfbXhmX2RlbXV4X3NldF9wYXJ0aXRpb25fZm9yX29mZnNldCAoZGVtdXgsIGRlbXV4LT5vZmZzZXQpOwogCkBAIC0yNjU0LDcgKzI3NjIsNyBAQAogICAgICAgR3N0TVhGRGVtdXhFc3NlbmNlVHJhY2sgKnQgPQogICAgICAgICAgICZnX2FycmF5X2luZGV4IChkZW11eC0+ZXNzZW5jZV90cmFja3MsIEdzdE1YRkRlbXV4RXNzZW5jZVRyYWNrLCBpKTsKIAotICAgICAgaWYgKGluZGV4X3N0YXJ0X3Bvc2l0aW9uICE9IC0xKQorICAgICAgaWYgKGluZGV4X3N0YXJ0X3Bvc2l0aW9uICE9IC0xICYmIHQgPT0gZXRyYWNrKQogICAgICAgICB0LT5wb3NpdGlvbiA9IGluZGV4X3N0YXJ0X3Bvc2l0aW9uOwogICAgICAgZWxzZQogICAgICAgICB0LT5wb3NpdGlvbiA9IChkZW11eC0+b2Zmc2V0ID09IGRlbXV4LT5ydW5faW4pID8gMCA6IC0xOwpAQCAtMzQwMCwxNCArMzUwOCwxNSBAQAogc3RhdGljIHZvaWQKIGNvbGxlY3RfaW5kZXhfdGFibGVfc2VnbWVudHMgKEdzdE1YRkRlbXV4ICogZGVtdXgpCiB7Ci0gIGd1aW50IGk7CiAgIEdMaXN0ICpsOworICBndWludCBpOworICBndWludDY0IG9sZF9vZmZzZXQgPSBkZW11eC0+b2Zmc2V0OworICBHc3RNWEZEZW11eFBhcnRpdGlvbiAqb2xkX3BhcnRpdGlvbiA9IGRlbXV4LT5jdXJyZW50X3BhcnRpdGlvbjsKIAogICBpZiAoIWRlbXV4LT5yYW5kb21faW5kZXhfcGFjaykKICAgICByZXR1cm47CiAKICAgZm9yIChpID0gMDsgaSA8IGRlbXV4LT5yYW5kb21faW5kZXhfcGFjay0+bGVuOyBpKyspIHsKLSAgICBHc3RNWEZEZW11eFBhcnRpdGlvbiAqcCA9IE5VTEw7CiAgICAgTVhGUmFuZG9tSW5kZXhQYWNrRW50cnkgKmUgPQogICAgICAgICAmZ19hcnJheV9pbmRleCAoZGVtdXgtPnJhbmRvbV9pbmRleF9wYWNrLCBNWEZSYW5kb21JbmRleFBhY2tFbnRyeSwgaSk7CiAKQEAgLTM0MTYsMTkgKzM1MjUsOTIgQEAKICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3IgKGwgPSBkZW11eC0+cGFydGl0aW9uczsgbDsgbCA9IGwtPm5leHQpIHsKLSAgICAgIEdzdE1YRkRlbXV4UGFydGl0aW9uICp0bXAgPSBsLT5kYXRhOworICAgIGRlbXV4LT5vZmZzZXQgPSBlLT5vZmZzZXQ7CisgICAgcmVhZF9wYXJ0aXRpb25faGVhZGVyIChkZW11eCk7CisgIH0KIAotICAgICAgaWYgKHRtcC0+cGFydGl0aW9uLnRoaXNfcGFydGl0aW9uICsgZGVtdXgtPnJ1bl9pbiA9PSBlLT5vZmZzZXQpIHsKLSAgICAgICAgcCA9IHRtcDsKKyAgZGVtdXgtPm9mZnNldCA9IG9sZF9vZmZzZXQ7CisgIGRlbXV4LT5jdXJyZW50X3BhcnRpdGlvbiA9IG9sZF9wYXJ0aXRpb247CisKKyAgZm9yIChsID0gZGVtdXgtPnBlbmRpbmdfaW5kZXhfdGFibGVfc2VnbWVudHM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKnNlZ21lbnQgPSBsLT5kYXRhOworICAgIEdzdE1YRkRlbXV4SW5kZXhUYWJsZSAqdCA9IE5VTEw7CisgICAgR0xpc3QgKms7CisgICAgZ3VpbnQ2NCBzdGFydCwgZW5kOworCisgICAgZm9yIChrID0gZGVtdXgtPmluZGV4X3RhYmxlczsgazsgayA9IGstPm5leHQpIHsKKyAgICAgIEdzdE1YRkRlbXV4SW5kZXhUYWJsZSAqdG1wID0gay0+ZGF0YTsKKworICAgICAgaWYgKHRtcC0+Ym9keV9zaWQgPT0gc2VnbWVudC0+Ym9keV9zaWQKKyAgICAgICAgICAmJiB0bXAtPmluZGV4X3NpZCA9PSBzZWdtZW50LT5pbmRleF9zaWQpIHsKKyAgICAgICAgdCA9IHRtcDsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHApIHsKLSAgICAgIHJlYWRfcGFydGl0aW9uX2hlYWRlciAoZGVtdXgsIHAtPnBhcnRpdGlvbi50aGlzX3BhcnRpdGlvbik7CisgICAgaWYgKCF0KSB7CisgICAgICB0ID0gZ19uZXcwIChHc3RNWEZEZW11eEluZGV4VGFibGUsIDEpOworICAgICAgdC0+Ym9keV9zaWQgPSBzZWdtZW50LT5ib2R5X3NpZDsKKyAgICAgIHQtPmluZGV4X3NpZCA9IHNlZ21lbnQtPmluZGV4X3NpZDsKKyAgICAgIHQtPm9mZnNldHMgPSBnX2FycmF5X25ldyAoRkFMU0UsIFRSVUUsIHNpemVvZiAoR3N0TVhGRGVtdXhJbmRleCkpOworICAgICAgZGVtdXgtPmluZGV4X3RhYmxlcyA9IGdfbGlzdF9wcmVwZW5kIChkZW11eC0+aW5kZXhfdGFibGVzLCB0KTsKKyAgICB9CisKKyAgICBzdGFydCA9IHNlZ21lbnQtPmluZGV4X3N0YXJ0X3Bvc2l0aW9uOworICAgIGVuZCA9IHN0YXJ0ICsgc2VnbWVudC0+aW5kZXhfZHVyYXRpb247CisKKyAgICBpZiAodC0+b2Zmc2V0cy0+bGVuIDwgZW5kKQorICAgICAgZ19hcnJheV9zZXRfc2l6ZSAodC0+b2Zmc2V0cywgZW5kKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBzZWdtZW50LT5uX2luZGV4X2VudHJpZXM7IGkrKykgeworICAgICAgR3N0TVhGRGVtdXhJbmRleCAqaW5kZXggPQorICAgICAgICAgICZnX2FycmF5X2luZGV4ICh0LT5vZmZzZXRzLCBHc3RNWEZEZW11eEluZGV4LCBzdGFydCArIGkpOworICAgICAgZ3VpbnQ2NCBvZmZzZXQgPSBzZWdtZW50LT5pbmRleF9lbnRyaWVzW2ldLnN0cmVhbV9vZmZzZXQ7CisgICAgICBHTGlzdCAqbTsKKyAgICAgIEdzdE1YRkRlbXV4UGFydGl0aW9uICpvZmZzZXRfcGFydGl0aW9uID0gTlVMTCwgKm5leHRfcGFydGl0aW9uID0gTlVMTDsKKworICAgICAgZm9yIChtID0gZGVtdXgtPnBhcnRpdGlvbnM7IG07IG0gPSBtLT5uZXh0KSB7CisgICAgICAgIEdzdE1YRkRlbXV4UGFydGl0aW9uICpwYXJ0aXRpb24gPSBtLT5kYXRhOworCisgICAgICAgIGlmICghbmV4dF9wYXJ0aXRpb24gJiYgb2Zmc2V0X3BhcnRpdGlvbikKKyAgICAgICAgICBuZXh0X3BhcnRpdGlvbiA9IHBhcnRpdGlvbjsKKworICAgICAgICBpZiAocGFydGl0aW9uLT5wYXJ0aXRpb24uYm9keV9zaWQgIT0gdC0+Ym9keV9zaWQpCisgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChwYXJ0aXRpb24tPnBhcnRpdGlvbi5ib2R5X29mZnNldCA+IG9mZnNldCkKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBvZmZzZXRfcGFydGl0aW9uID0gcGFydGl0aW9uOworICAgICAgICBuZXh0X3BhcnRpdGlvbiA9IE5VTEw7CisgICAgICB9CisKKyAgICAgIGlmIChvZmZzZXRfcGFydGl0aW9uICYmIG9mZnNldCA+PSBvZmZzZXRfcGFydGl0aW9uLT5wYXJ0aXRpb24uYm9keV9vZmZzZXQKKyAgICAgICAgICAmJiAob2Zmc2V0IC0gb2Zmc2V0X3BhcnRpdGlvbi0+cGFydGl0aW9uLmJvZHlfb2Zmc2V0KSkgeworICAgICAgICBvZmZzZXQgPQorICAgICAgICAgICAgb2Zmc2V0X3BhcnRpdGlvbi0+cGFydGl0aW9uLnRoaXNfcGFydGl0aW9uICsKKyAgICAgICAgICAgIG9mZnNldF9wYXJ0aXRpb24tPmVzc2VuY2VfY29udGFpbmVyX29mZnNldCArIChvZmZzZXQgLQorICAgICAgICAgICAgb2Zmc2V0X3BhcnRpdGlvbi0+cGFydGl0aW9uLmJvZHlfb2Zmc2V0KTsKKworICAgICAgICBpZiAobmV4dF9wYXJ0aXRpb24KKyAgICAgICAgICAgICYmIG9mZnNldCA+PSBuZXh0X3BhcnRpdGlvbi0+cGFydGl0aW9uLnRoaXNfcGFydGl0aW9uKSB7CisgICAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAoZGVtdXgsCisgICAgICAgICAgICAgICJJbnZhbGlkIGluZGV4IHRhYmxlIHNlZ21lbnQgZ29pbmcgaW50byBuZXh0IHVucmVsYXRlZCBwYXJ0aXRpb24iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBpbmRleC0+b2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICAgIGluZGV4LT5rZXlmcmFtZSA9ICEgIShzZWdtZW50LT5pbmRleF9lbnRyaWVzW2ldLmZsYWdzICYgMHg4MCkKKyAgICAgICAgICAgICAgfHwgKHNlZ21lbnQtPmluZGV4X2VudHJpZXNbaV0ua2V5X2ZyYW1lX29mZnNldCA9PSAwKTsKKyAgICAgICAgfQorICAgICAgfQogICAgIH0KICAgfQorCisgIGZvciAobCA9IGRlbXV4LT5wZW5kaW5nX2luZGV4X3RhYmxlX3NlZ21lbnRzOyBsOyBsID0gbC0+bmV4dCkgeworICAgIE1YRkluZGV4VGFibGVTZWdtZW50ICpzID0gbC0+ZGF0YTsKKyAgICBteGZfaW5kZXhfdGFibGVfc2VnbWVudF9yZXNldCAocyk7CisgICAgZ19mcmVlIChzKTsKKyAgfQorICBnX2xpc3RfZnJlZSAoZGVtdXgtPnBlbmRpbmdfaW5kZXhfdGFibGVfc2VnbWVudHMpOworICBkZW11eC0+cGVuZGluZ19pbmRleF90YWJsZV9zZWdtZW50cyA9IE5VTEw7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgpAQCAtMzk0NSw2ICs0MTI3LDkgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LAogICAgICAgICAgICAgICAiU2VlayB0byByZW1haW5pbmcgcGFydCBvZiB0aGUgZmlsZSBmYWlsZWQiKTsKKyAgICAgICAgICBwLT5lb3MgPSBUUlVFOworICAgICAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoR1NUX1BBRF9DQVNUIChwKSwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOworICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICB9CiAKZGlmZiAtLWdpdCBhL2dzdC9teGYvbXhmZGVtdXguaCBiL2dzdC9teGYvbXhmZGVtdXguaAppbmRleCAzMzI0MDkzLi5iNGQ3MjQyIDEwMDY0NAotLS0gYS9nc3QvbXhmL214ZmRlbXV4LmgKKysrIGIvZ3N0L214Zi9teGZkZW11eC5oCkBAIC02NSw2ICs2NSw3IEBACiB0eXBlZGVmIHN0cnVjdAogewogICBndWludDMyIGJvZHlfc2lkOworICBndWludDMyIGluZGV4X3NpZDsKICAgZ3VpbnQzMiB0cmFja19udW1iZXI7CiAKICAgZ3VpbnQzMiB0cmFja19pZDsKQEAgLTg3LDYgKzg4LDEzIEBACiAgIEdzdENhcHMgKmNhcHM7CiB9IEdzdE1YRkRlbXV4RXNzZW5jZVRyYWNrOwogCit0eXBlZGVmIHN0cnVjdAoreworICBndWludDMyIGJvZHlfc2lkOworICBndWludDMyIGluZGV4X3NpZDsKKyAgR0FycmF5ICpvZmZzZXRzOworfSBHc3RNWEZEZW11eEluZGV4VGFibGU7CisKIHN0cnVjdCBfR3N0TVhGRGVtdXhQYWQKIHsKICAgR3N0UGFkIHBhcmVudDsKQEAgLTE1Myw4ICsxNjEsOSBAQAogICBHc3RNWEZEZW11eFBhcnRpdGlvbiAqY3VycmVudF9wYXJ0aXRpb247CiAKICAgR0FycmF5ICplc3NlbmNlX3RyYWNrczsKLSAgR0xpc3QgKnBlbmRpbmdfaW5kZXhfdGFibGVfc2VnbWVudHM7CiAKKyAgR0xpc3QgKnBlbmRpbmdfaW5kZXhfdGFibGVfc2VnbWVudHM7CisgIEdMaXN0ICppbmRleF90YWJsZXM7IC8qIG9uZSBwZXIgQm9keVNJRCAvIEluZGV4U0lEICovCiAgIGdib29sZWFuIGluZGV4X3RhYmxlX3NlZ21lbnRzX2NvbGxlY3RlZDsKIAogICBHQXJyYXkgKnJhbmRvbV9pbmRleF9wYWNrOwpkaWZmIC0tZ2l0IGEvZ3N0L214Zi9teGZqcGVnMjAwMC5jIGIvZ3N0L214Zi9teGZqcGVnMjAwMC5jCmluZGV4IDE2NzkyNzkuLjE3ZGFmN2QgMTAwNjQ0Ci0tLSBhL2dzdC9teGYvbXhmanBlZzIwMDAuYworKysgYi9nc3QvbXhmL214ZmpwZWcyMDAwLmMKQEAgLTIyMSw3ICsyMjEsNyBAQAogCiAgIC8qIFRPRE86IFdoYXQgYWJvdXQgb3RoZXIgZmllbGQgdmFsdWVzPyAqLwogICBjYXBzID0KLSAgICAgIGdzdF9jYXBzX25ld19zaW1wbGUgKCJpbWFnZS94LWpwYyIsICJmaWVsZHMiLCBHX1RZUEVfSU5ULCAxLCAiY29sb3JzcGFjZSIsCisgICAgICBnc3RfY2Fwc19uZXdfc2ltcGxlICgiaW1hZ2UveC1qcGMiLCAiY29sb3JzcGFjZSIsCiAgICAgICBHX1RZUEVfU1RSSU5HLCBjb2xvcnNwYWNlLCBOVUxMKTsKICAgaWYgKHApIHsKICAgICBteGZfbWV0YWRhdGFfZ2VuZXJpY19waWN0dXJlX2Vzc2VuY2VfZGVzY3JpcHRvcl9zZXRfY2FwcyAocCwgY2Fwcyk7CkBAIC0zNjAsNyArMzYwLDcgQEAKICAgbXhmX2pwZWcyMDAwX2Vzc2VuY2VfZWxlbWVudF93cml0ZXIucGFkX3RlbXBsYXRlID0KICAgICAgIGdzdF9wYWRfdGVtcGxhdGVfbmV3ICgianBlZzIwMDBfdmlkZW9fc2lua18ldSIsIEdTVF9QQURfU0lOSywKICAgICAgIEdTVF9QQURfUkVRVUVTVCwKLSAgICAgIGdzdF9jYXBzX2Zyb21fc3RyaW5nICgiaW1hZ2UveC1qcGMsIGZpZWxkcyA9IDEsIHdpZHRoID0gIgorICAgICAgZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJpbWFnZS94LWpwYywgd2lkdGggPSAiCiAgICAgICAgICAgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRQogICAgICAgICAgICIsIGZyYW1lcmF0ZSA9ICIgR1NUX1ZJREVPX0ZQU19SQU5HRQogICAgICAgICAgICIsIGNvbG9yc3BhY2UgPSAoc3RyaW5nKSB7IFwic1JHQlwiLCBcInNZVVZcIiB9IikpOwpkaWZmIC0tZ2l0IGEvZ3N0L214Zi9teGZtZXRhZGF0YS5jIGIvZ3N0L214Zi9teGZtZXRhZGF0YS5jCmluZGV4IGUzMDZhNTUuLjY5YWFkYjUgMTAwNjQ0Ci0tLSBhL2dzdC9teGYvbXhmbWV0YWRhdGEuYworKysgYi9nc3QvbXhmL214Zm1ldGFkYXRhLmMKQEAgLTkzMiwyMCArOTMyLDE4IEBACiAgIH0KICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAKLSAgaWYgKHNlbGYtPmRtX3NjaGVtZXMpIHsKLSAgICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7Ci0gICAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoRE1fU0NIRU1FUyksIDE2KTsKLSAgICB0LT5zaXplID0gOCArIDE2ICogc2VsZi0+bl9kbV9zY2hlbWVzOwotICAgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jMCAodC0+c2l6ZSk7Ci0gICAgdC0+Z19zbGljZSA9IFRSVUU7Ci0gICAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4M2IwYiwgJnQtPnVsKTsKLSAgICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5uX2RtX3NjaGVtZXMpOwotICAgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEgKyA0LCAxNik7Ci0gICAgZm9yIChpID0gMDsgaSA8IHNlbGYtPm5fZG1fc2NoZW1lczsgaSsrKSB7Ci0gICAgICBtZW1jcHkgKHQtPmRhdGEgKyA4ICsgMTYgKiBpLCAmc2VsZi0+ZG1fc2NoZW1lc1tpXSwgMTYpOwotICAgIH0KLSAgICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKKyAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOworICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChETV9TQ0hFTUVTKSwgMTYpOworICB0LT5zaXplID0gOCArIDE2ICogc2VsZi0+bl9kbV9zY2hlbWVzOworICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYzAgKHQtPnNpemUpOworICB0LT5nX3NsaWNlID0gVFJVRTsKKyAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4M2IwYiwgJnQtPnVsKTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+bl9kbV9zY2hlbWVzKTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSArIDQsIDE2KTsKKyAgZm9yIChpID0gMDsgaSA8IHNlbGYtPm5fZG1fc2NoZW1lczsgaSsrKSB7CisgICAgbWVtY3B5ICh0LT5kYXRhICsgOCArIDE2ICogaSwgJnNlbGYtPmRtX3NjaGVtZXNbaV0sIDE2KTsKICAgfQorICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKIAogICByZXR1cm4gcmV0OwogfQpAQCAtMTIzNiw2ICsxMjM0LDE3IEBACiAgICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAgIH0KIAorICBpZiAoIW14Zl91dWlkX2lzX3plcm8gKCZzZWxmLT50aGlzX2dlbmVyYXRpb25fdWlkKSkgeworICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKKyAgICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChUSElTX0dFTkVSQVRJT05fVUlEKSwgMTYpOworICAgIHQtPnNpemUgPSAxNjsKKyAgICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7CisgICAgdC0+Z19zbGljZSA9IFRSVUU7CisgICAgbWVtY3B5ICh0LT5kYXRhLCAmc2VsZi0+dGhpc19nZW5lcmF0aW9uX3VpZCwgMTYpOworICAgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDNjMDksICZ0LT51bCk7CisgICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CisgIH0KKwogICByZXR1cm4gcmV0OwogfQogCkBAIC0xNzE4LDcgKzE3MjcsNyBAQAogICAgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICg0KTsKICAgICB0LT5nX3NsaWNlID0gVFJVRTsKICAgICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5pbmRleF9zaWQpOwotICAgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDNmMDcsICZ0LT51bCk7CisgICAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4M2YwNiwgJnQtPnVsKTsKICAgICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKICAgfQogCkBAIC00NDI0LDE1ICs0NDMzLDI1IEBACiAgICAgICBpZiAoR1NUX1JFQURfVUlOVDMyX0JFICh0YWdfZGF0YSkgPT0gMCkKICAgICAgICAgcmV0dXJuIFRSVUU7CiAKLSAgICAgIGlmIChHU1RfUkVBRF9VSU5UMzJfQkUgKHRhZ19kYXRhKSAhPSAyICYmCi0gICAgICAgICAgR1NUX1JFQURfVUlOVDMyX0JFICh0YWdfZGF0YSArIDQpICE9IDQpCisgICAgICBpZiAoR1NUX1JFQURfVUlOVDMyX0JFICh0YWdfZGF0YSArIDQpICE9IDQpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICAgIGlmICh0YWdfc2l6ZSAhPSAxNikKKyAgICAgIGlmIChHU1RfUkVBRF9VSU5UMzJfQkUgKHRhZ19kYXRhKSAhPSAxICYmCisgICAgICAgICAgR1NUX1JFQURfVUlOVDMyX0JFICh0YWdfZGF0YSkgIT0gMikKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgaWYgKChHU1RfUkVBRF9VSU5UMzJfQkUgKHRhZ19kYXRhKSA9PSAxICYmIHRhZ19zaXplICE9IDEyKSB8fAorICAgICAgICAgIChHU1RfUkVBRF9VSU5UMzJfQkUgKHRhZ19kYXRhKSA9PSAyICYmIHRhZ19zaXplICE9IDE2KSkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgICAgc2VsZi0+dmlkZW9fbGluZV9tYXBbMF0gPSBHU1RfUkVBRF9VSU5UMzJfQkUgKHRhZ19kYXRhICsgOCk7Ci0gICAgICBzZWxmLT52aWRlb19saW5lX21hcFsxXSA9IEdTVF9SRUFEX1VJTlQzMl9CRSAodGFnX2RhdGEgKyAxMik7CisKKyAgICAgIC8qIFdvcmthcm91bmQgZm9yIGZpbGVzIGNyZWF0ZWQgYnkgZmZtcGVnICovCisgICAgICBpZiAoR1NUX1JFQURfVUlOVDMyX0JFICh0YWdfZGF0YSkgPT0gMSkKKyAgICAgICAgc2VsZi0+dmlkZW9fbGluZV9tYXBbMF0gPSAwOworICAgICAgZWxzZQorICAgICAgICBzZWxmLT52aWRlb19saW5lX21hcFsxXSA9IEdTVF9SRUFEX1VJTlQzMl9CRSAodGFnX2RhdGEgKyAxMik7CisKICAgICAgIEdTVF9ERUJVRyAoIiAgdmlkZW8gbGluZSBtYXAgPSB7JWksICVpfSIsIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzBdLAogICAgICAgICAgIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzFdKTsKICAgICAgIGJyZWFrOwpAQCAtNDUxNCwxNCArNDUzMywxMiBAQAogICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKFNJR05BTF9TVEFOREFSRCksIEdfVFlQRV9VQ0hBUiwKICAgICAgIHNlbGYtPnNpZ25hbF9zdGFuZGFyZCwgTlVMTCk7CiAKLSAgaWYgKHNlbGYtPmZyYW1lX2xheW91dCAhPSAyNTUpCi0gICAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChGUkFNRV9MQVlPVVQpLCBHX1RZUEVfVUNIQVIsCi0gICAgICAgIHNlbGYtPmZyYW1lX2xheW91dCwgTlVMTCk7CisgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoRlJBTUVfTEFZT1VUKSwgR19UWVBFX1VDSEFSLAorICAgICAgc2VsZi0+ZnJhbWVfbGF5b3V0LCBOVUxMKTsKIAotICBpZiAoc2VsZi0+c3RvcmVkX3dpZHRoICE9IDAgJiYgc2VsZi0+c3RvcmVkX2hlaWdodCAhPSAwKQotICAgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoU1RPUkVEX1dJRFRIKSwgR19UWVBFX1VJTlQsCi0gICAgICAgIHNlbGYtPnN0b3JlZF93aWR0aCwgTVhGX1FVQVJLIChTVE9SRURfSEVJR0hUKSwgR19UWVBFX1VJTlQsCi0gICAgICAgIHNlbGYtPnN0b3JlZF9oZWlnaHQsIE5VTEwpOworICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKFNUT1JFRF9XSURUSCksIEdfVFlQRV9VSU5ULAorICAgICAgc2VsZi0+c3RvcmVkX3dpZHRoLCBNWEZfUVVBUksgKFNUT1JFRF9IRUlHSFQpLCBHX1RZUEVfVUlOVCwKKyAgICAgIHNlbGYtPnN0b3JlZF9oZWlnaHQsIE5VTEwpOwogCiAgIGlmIChzZWxmLT5zdG9yZWRfZjJfb2Zmc2V0ICE9IDApCiAgICAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChTVE9SRURfRjJfT0ZGU0VUKSwgR19UWVBFX0lOVCwKQEAgLTQ1NjUsMTAgKzQ1ODIsOSBAQAogICAgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoQUNUSVZFX0ZPUk1BVF9ERVNDUklQVE9SKSwKICAgICAgICAgR19UWVBFX1VDSEFSLCBzZWxmLT5hY3RpdmVfZm9ybWF0X2Rlc2NyaXB0b3IsIE5VTEwpOwogCi0gIGlmIChzZWxmLT52aWRlb19saW5lX21hcFswXSAhPSAwICYmIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzFdICE9IDApCi0gICAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChWSURFT19MSU5FX01BUF8wKSwgR19UWVBFX1VJTlQsCi0gICAgICAgIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzBdLCBNWEZfUVVBUksgKFZJREVPX0xJTkVfTUFQXzEpLCBHX1RZUEVfVUlOVCwKLSAgICAgICAgc2VsZi0+dmlkZW9fbGluZV9tYXBbMV0sIE5VTEwpOworICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKFZJREVPX0xJTkVfTUFQXzApLCBHX1RZUEVfVUlOVCwKKyAgICAgIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzBdLCBNWEZfUVVBUksgKFZJREVPX0xJTkVfTUFQXzEpLCBHX1RZUEVfVUlOVCwKKyAgICAgIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzFdLCBOVUxMKTsKIAogICBpZiAoc2VsZi0+YWxwaGFfdHJhbnNwYXJlbmN5ICE9IDApCiAgICAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChBTFBIQV9UUkFOU1BBUkVOQ1kpLCBHX1RZUEVfVUNIQVIsCkBAIC00NjI4LDM4ICs0NjQ0LDMyIEBACiAgICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAgIH0KIAotICBpZiAoc2VsZi0+ZnJhbWVfbGF5b3V0ICE9IDI1NSkgewotICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKLSAgICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChGUkFNRV9MQVlPVVQpLCAxNik7Ci0gICAgdC0+c2l6ZSA9IDE7Ci0gICAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOwotICAgIHQtPmdfc2xpY2UgPSBUUlVFOwotICAgIEdTVF9XUklURV9VSU5UOCAodC0+ZGF0YSwgc2VsZi0+ZnJhbWVfbGF5b3V0KTsKLSAgICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzMjBjLCAmdC0+dWwpOwotICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwotICB9CisgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKKyAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoRlJBTUVfTEFZT1VUKSwgMTYpOworICB0LT5zaXplID0gMTsKKyAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOworICB0LT5nX3NsaWNlID0gVFJVRTsKKyAgR1NUX1dSSVRFX1VJTlQ4ICh0LT5kYXRhLCBzZWxmLT5mcmFtZV9sYXlvdXQpOworICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzMjBjLCAmdC0+dWwpOworICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKIAotICBpZiAoc2VsZi0+c3RvcmVkX3dpZHRoICE9IDApIHsKLSAgICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7Ci0gICAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoU1RPUkVEX1dJRFRIKSwgMTYpOwotICAgIHQtPnNpemUgPSA0OwotICAgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICh0LT5zaXplKTsKLSAgICB0LT5nX3NsaWNlID0gVFJVRTsKLSAgICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5zdG9yZWRfd2lkdGgpOwotICAgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDMyMDMsICZ0LT51bCk7Ci0gICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7Ci0gIH0KKyAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOworICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChTVE9SRURfV0lEVEgpLCAxNik7CisgIHQtPnNpemUgPSA0OworICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7CisgIHQtPmdfc2xpY2UgPSBUUlVFOworICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5zdG9yZWRfd2lkdGgpOworICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzMjAzLCAmdC0+dWwpOworICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKIAotICBpZiAoc2VsZi0+c3RvcmVkX2hlaWdodCAhPSAwKSB7Ci0gICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwotICAgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKFNUT1JFRF9IRUlHSFQpLCAxNik7Ci0gICAgdC0+c2l6ZSA9IDQ7Ci0gICAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOwotICAgIHQtPmdfc2xpY2UgPSBUUlVFOwotICAgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEsIHNlbGYtPnN0b3JlZF9oZWlnaHQpOwotICAgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDMyMDIsICZ0LT51bCk7Ci0gICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7Ci0gIH0KKyAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOworICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChTVE9SRURfSEVJR0hUKSwgMTYpOworICB0LT5zaXplID0gNDsKKyAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOworICB0LT5nX3NsaWNlID0gVFJVRTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+c3RvcmVkX2hlaWdodCk7CisgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDMyMDIsICZ0LT51bCk7CisgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogCiAgIGlmIChzZWxmLT5zdG9yZWRfZjJfb2Zmc2V0ICE9IDApIHsKICAgICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7CkBAIC00NzcxLDE3ICs0NzgxLDE1IEBACiAgICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAgIH0KIAotICBpZiAoc2VsZi0+YXNwZWN0X3JhdGlvLm4gIT0gMCAmJiBzZWxmLT5hc3BlY3RfcmF0aW8uZCAhPSAwKSB7Ci0gICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwotICAgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKEFTUEVDVF9SQVRJTyksIDE2KTsKLSAgICB0LT5zaXplID0gODsKLSAgICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7Ci0gICAgdC0+Z19zbGljZSA9IFRSVUU7Ci0gICAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+YXNwZWN0X3JhdGlvLm4pOwotICAgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEgKyA0LCBzZWxmLT5hc3BlY3RfcmF0aW8uZCk7Ci0gICAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4MzIwZSwgJnQtPnVsKTsKLSAgICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKLSAgfQorICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7CisgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKEFTUEVDVF9SQVRJTyksIDE2KTsKKyAgdC0+c2l6ZSA9IDg7CisgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICh0LT5zaXplKTsKKyAgdC0+Z19zbGljZSA9IFRSVUU7CisgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEsIHNlbGYtPmFzcGVjdF9yYXRpby5uKTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSArIDQsIHNlbGYtPmFzcGVjdF9yYXRpby5kKTsKKyAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4MzIwZSwgJnQtPnVsKTsKKyAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAKICAgaWYgKHNlbGYtPmFjdGl2ZV9mb3JtYXRfZGVzY3JpcHRvciAhPSAwKSB7CiAgICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwpAQCAtNDc5NCwxNyArNDgwMiwxNyBAQAogICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogICB9CiAKLSAgaWYgKHNlbGYtPnZpZGVvX2xpbmVfbWFwWzBdICE9IDAgfHwgc2VsZi0+dmlkZW9fbGluZV9tYXBbMV0gIT0gMCkgewotICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKLSAgICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChWSURFT19MSU5FX01BUCksIDE2KTsKLSAgICB0LT5zaXplID0gMTY7Ci0gICAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOwotICAgIHQtPmdfc2xpY2UgPSBUUlVFOwotICAgIEdTVF9XUklURV9VSU5UNjRfQkUgKHQtPmRhdGEsIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzBdKTsKLSAgICBHU1RfV1JJVEVfVUlOVDY0X0JFICh0LT5kYXRhICsgOCwgc2VsZi0+dmlkZW9fbGluZV9tYXBbMV0pOwotICAgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDMyMGQsICZ0LT51bCk7Ci0gICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7Ci0gIH0KKyAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOworICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChWSURFT19MSU5FX01BUCksIDE2KTsKKyAgdC0+c2l6ZSA9IDE2OworICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7CisgIHQtPmdfc2xpY2UgPSBUUlVFOworICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCAyKTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSArIDQsIDQpOworICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhICsgOCwgc2VsZi0+dmlkZW9fbGluZV9tYXBbMF0pOworICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhICsgMTIsIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzFdKTsKKyAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4MzIwZCwgJnQtPnVsKTsKKyAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAKICAgaWYgKHNlbGYtPmFscGhhX3RyYW5zcGFyZW5jeSAhPSAwKSB7CiAgICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwpAQCAtNDk1MiwxNiArNDk2MCwxOCBAQAogICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAid2lkdGgiLCBHX1RZUEVfSU5ULCB3aWR0aCwgImhlaWdodCIsIEdfVFlQRV9JTlQsCiAgICAgICBoZWlnaHQsIE5VTEwpOwogCi0gIGlmIChzZWxmLT5hc3BlY3RfcmF0aW8ubiA9PSAwIHx8IHNlbGYtPmFzcGVjdF9yYXRpby5kID09IDApIHsKKyAgaWYgKHNlbGYtPmFzcGVjdF9yYXRpby5uID09IDAgJiYgc2VsZi0+YXNwZWN0X3JhdGlvLmQgPT0gMCkgeworICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCBHU1RfVFlQRV9GUkFDVElPTiwKKyAgICAgICAgMSwgMSwgTlVMTCk7CisgIH0gZWxzZSBpZiAoc2VsZi0+YXNwZWN0X3JhdGlvLm4gPT0gMCB8fCBzZWxmLT5hc3BlY3RfcmF0aW8uZCA9PSAwKSB7CiAgICAgR1NUX0VSUk9SICgiSW52YWxpZCBhc3BlY3QgcmF0aW8iKTsKLSAgICByZXR1cm47CisgIH0gZWxzZSB7CisgICAgcGFyX24gPSBoZWlnaHQgKiBzZWxmLT5hc3BlY3RfcmF0aW8ubjsKKyAgICBwYXJfZCA9IHdpZHRoICogc2VsZi0+YXNwZWN0X3JhdGlvLmQ7CisKKyAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgR1NUX1RZUEVfRlJBQ1RJT04sCisgICAgICAgIHBhcl9uLCBwYXJfZCwgTlVMTCk7CiAgIH0KLQotICBwYXJfbiA9IGhlaWdodCAqIHNlbGYtPmFzcGVjdF9yYXRpby5uOwotICBwYXJfZCA9IHdpZHRoICogc2VsZi0+YXNwZWN0X3JhdGlvLmQ7Ci0KLSAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgInBpeGVsLWFzcGVjdC1yYXRpbyIsIEdTVF9UWVBFX0ZSQUNUSU9OLAotICAgICAgcGFyX24sIHBhcl9kLCBOVUxMKTsKIH0KIAogc3RhdGljIGdpbnQKQEAgLTQ5ODUsNyArNDk5NSw3IEBACiAgIGdpbnQgZnBzX24sIGZwc19kOwogICBNWEZNZXRhZGF0YUZpbGVEZXNjcmlwdG9yICpmID0gKE1YRk1ldGFkYXRhRmlsZURlc2NyaXB0b3IgKikgc2VsZjsKICAgR3N0U3RydWN0dXJlICpzOwotICBnYm9vbGVhbiBpbnRlcmxhY2VkOworICBnYm9vbGVhbiBpbnRlcmxhY2VkID0gRkFMU0U7CiAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKE1YRl9JU19NRVRBREFUQV9HRU5FUklDX1BJQ1RVUkVfRVNTRU5DRV9ERVNDUklQVE9SCiAgICAgICAoc2VsZiksIEZBTFNFKTsKQEAgLTUxMzYsMTMgKzUxNDYsMTEgQEAKICAgICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKEVMRUNUUk9fU1BBVElBTF9GT1JNVUxBVElPTiksCiAgICAgICAgIEdfVFlQRV9VQ0hBUiwgc2VsZi0+ZWxlY3Ryb19zcGF0aWFsX2Zvcm11bGF0aW9uLCBOVUxMKTsKIAotICBpZiAoc2VsZi0+Y2hhbm5lbF9jb3VudCAhPSAwKQotICAgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoQ0hBTk5FTF9DT1VOVCksIEdfVFlQRV9VSU5ULAotICAgICAgICBzZWxmLT5jaGFubmVsX2NvdW50LCBOVUxMKTsKKyAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChDSEFOTkVMX0NPVU5UKSwgR19UWVBFX1VJTlQsCisgICAgICBzZWxmLT5jaGFubmVsX2NvdW50LCBOVUxMKTsKIAotICBpZiAoc2VsZi0+cXVhbnRpemF0aW9uX2JpdHMgIT0gMCkKLSAgICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKFFVQU5USVpBVElPTl9CSVRTKSwgR19UWVBFX1VJTlQsCi0gICAgICAgIHNlbGYtPnF1YW50aXphdGlvbl9iaXRzLCBOVUxMKTsKKyAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChRVUFOVElaQVRJT05fQklUUyksIEdfVFlQRV9VSU5ULAorICAgICAgc2VsZi0+cXVhbnRpemF0aW9uX2JpdHMsIE5VTEwpOwogCiAgIGlmIChzZWxmLT5kaWFsX25vcm0gIT0gMCkKICAgICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKERJQUxfTk9STSksIEdfVFlQRV9DSEFSLApAQCAtNTE3MSwxNyArNTE3OSwxNSBAQAogICAgICAgKG0sIHByaW1lcik7CiAgIE1YRkxvY2FsVGFnICp0OwogCi0gIGlmIChzZWxmLT5hdWRpb19zYW1wbGluZ19yYXRlLmQgJiYgc2VsZi0+YXVkaW9fc2FtcGxpbmdfcmF0ZS5uKSB7Ci0gICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwotICAgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKEFVRElPX1NBTVBMSU5HX1JBVEUpLCAxNik7Ci0gICAgdC0+c2l6ZSA9IDg7Ci0gICAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOwotICAgIHQtPmdfc2xpY2UgPSBUUlVFOwotICAgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEsIHNlbGYtPmF1ZGlvX3NhbXBsaW5nX3JhdGUubik7Ci0gICAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSArIDQsIHNlbGYtPmF1ZGlvX3NhbXBsaW5nX3JhdGUuZCk7Ci0gICAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4M2QwMywgJnQtPnVsKTsKLSAgICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKLSAgfQorICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7CisgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKEFVRElPX1NBTVBMSU5HX1JBVEUpLCAxNik7CisgIHQtPnNpemUgPSA4OworICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7CisgIHQtPmdfc2xpY2UgPSBUUlVFOworICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5hdWRpb19zYW1wbGluZ19yYXRlLm4pOworICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhICsgNCwgc2VsZi0+YXVkaW9fc2FtcGxpbmdfcmF0ZS5kKTsKKyAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4M2QwMywgJnQtPnVsKTsKKyAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAKICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwogICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChMT0NLRUQpLCAxNik7CkBAIC01MjE0LDI3ICs1MjIwLDIzIEBACiAgICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAgIH0KIAotICBpZiAoc2VsZi0+Y2hhbm5lbF9jb3VudCkgewotICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKLSAgICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChDSEFOTkVMX0NPVU5UKSwgMTYpOwotICAgIHQtPnNpemUgPSA0OwotICAgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICh0LT5zaXplKTsKLSAgICB0LT5nX3NsaWNlID0gVFJVRTsKLSAgICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5jaGFubmVsX2NvdW50KTsKLSAgICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzZDA3LCAmdC0+dWwpOwotICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwotICB9CisgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKKyAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoQ0hBTk5FTF9DT1VOVCksIDE2KTsKKyAgdC0+c2l6ZSA9IDQ7CisgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICh0LT5zaXplKTsKKyAgdC0+Z19zbGljZSA9IFRSVUU7CisgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEsIHNlbGYtPmNoYW5uZWxfY291bnQpOworICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzZDA3LCAmdC0+dWwpOworICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKIAotICBpZiAoc2VsZi0+cXVhbnRpemF0aW9uX2JpdHMpIHsKLSAgICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7Ci0gICAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoUVVBTlRJWkFUSU9OX0JJVFMpLCAxNik7Ci0gICAgdC0+c2l6ZSA9IDQ7Ci0gICAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOwotICAgIHQtPmdfc2xpY2UgPSBUUlVFOwotICAgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEsIHNlbGYtPnF1YW50aXphdGlvbl9iaXRzKTsKLSAgICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzZDAxLCAmdC0+dWwpOwotICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwotICB9CisgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKKyAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoUVVBTlRJWkFUSU9OX0JJVFMpLCAxNik7CisgIHQtPnNpemUgPSA0OworICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7CisgIHQtPmdfc2xpY2UgPSBUUlVFOworICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5xdWFudGl6YXRpb25fYml0cyk7CisgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDNkMDEsICZ0LT51bCk7CisgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogCiAgIGlmIChzZWxmLT5kaWFsX25vcm0gIT0gMCkgewogICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKQEAgLTUyNjUsNyArNTI2Nyw3IEBACiAgICAgbXhmX21ldGFkYXRhX2dlbmVyaWNfc291bmRfZXNzZW5jZV9kZXNjcmlwdG9yX2luaXQKICAgICAoTVhGTWV0YWRhdGFHZW5lcmljU291bmRFc3NlbmNlRGVzY3JpcHRvciAqIHNlbGYpCiB7Ci0gIHNlbGYtPmF1ZGlvX3NhbXBsaW5nX3JhdGUubiA9IDQ4MDAwOworICBzZWxmLT5hdWRpb19zYW1wbGluZ19yYXRlLm4gPSAwOwogICBzZWxmLT5hdWRpb19zYW1wbGluZ19yYXRlLmQgPSAxOwogICBzZWxmLT5lbGVjdHJvX3NwYXRpYWxfZm9ybXVsYXRpb24gPSAyNTU7CiB9CkBAIC01NDc2LDEzICs1NDc4LDExIEBACiAgIE1YRk1ldGFkYXRhQ0RDSVBpY3R1cmVFc3NlbmNlRGVzY3JpcHRvciAqc2VsZiA9CiAgICAgICBNWEZfTUVUQURBVEFfQ0RDSV9QSUNUVVJFX0VTU0VOQ0VfREVTQ1JJUFRPUiAobSk7CiAKLSAgaWYgKHNlbGYtPmNvbXBvbmVudF9kZXB0aCAhPSAwKQotICAgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoQ09NUE9ORU5UX0RFUFRIKSwgR19UWVBFX1VJTlQsCi0gICAgICAgIHNlbGYtPmNvbXBvbmVudF9kZXB0aCwgTlVMTCk7CisgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoQ09NUE9ORU5UX0RFUFRIKSwgR19UWVBFX1VJTlQsCisgICAgICBzZWxmLT5jb21wb25lbnRfZGVwdGgsIE5VTEwpOwogCi0gIGlmIChzZWxmLT5ob3Jpem9udGFsX3N1YnNhbXBsaW5nICE9IDApCi0gICAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChIT1JJWk9OVEFMX1NVQlNBTVBMSU5HKSwgR19UWVBFX1VJTlQsCi0gICAgICAgIHNlbGYtPmhvcml6b250YWxfc3Vic2FtcGxpbmcsIE5VTEwpOworICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKEhPUklaT05UQUxfU1VCU0FNUExJTkcpLCBHX1RZUEVfVUlOVCwKKyAgICAgIHNlbGYtPmhvcml6b250YWxfc3Vic2FtcGxpbmcsIE5VTEwpOwogCiAgIGlmIChzZWxmLT52ZXJ0aWNhbF9zdWJzYW1wbGluZyAhPSAwKQogICAgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoVkVSVElDQUxfU1VCU0FNUExJTkcpLCBHX1RZUEVfVUlOVCwKQEAgLTU1MzAsMjcgKzU1MzAsMjMgQEAKICAgICAgIChtLCBwcmltZXIpOwogICBNWEZMb2NhbFRhZyAqdDsKIAotICBpZiAoc2VsZi0+Y29tcG9uZW50X2RlcHRoKSB7Ci0gICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwotICAgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKENPTVBPTkVOVF9ERVBUSCksIDE2KTsKLSAgICB0LT5zaXplID0gNDsKLSAgICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7Ci0gICAgdC0+Z19zbGljZSA9IFRSVUU7Ci0gICAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+Y29tcG9uZW50X2RlcHRoKTsKLSAgICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzMzAxLCAmdC0+dWwpOwotICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwotICB9CisgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKKyAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoQ09NUE9ORU5UX0RFUFRIKSwgMTYpOworICB0LT5zaXplID0gNDsKKyAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOworICB0LT5nX3NsaWNlID0gVFJVRTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+Y29tcG9uZW50X2RlcHRoKTsKKyAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4MzMwMSwgJnQtPnVsKTsKKyAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAKLSAgaWYgKHNlbGYtPmhvcml6b250YWxfc3Vic2FtcGxpbmcpIHsKLSAgICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7Ci0gICAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoSE9SSVpPTlRBTF9TVUJTQU1QTElORyksIDE2KTsKLSAgICB0LT5zaXplID0gNDsKLSAgICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7Ci0gICAgdC0+Z19zbGljZSA9IFRSVUU7Ci0gICAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+aG9yaXpvbnRhbF9zdWJzYW1wbGluZyk7Ci0gICAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4MzMwMiwgJnQtPnVsKTsKLSAgICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKLSAgfQorICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7CisgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKEhPUklaT05UQUxfU1VCU0FNUExJTkcpLCAxNik7CisgIHQtPnNpemUgPSA0OworICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7CisgIHQtPmdfc2xpY2UgPSBUUlVFOworICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5ob3Jpem9udGFsX3N1YnNhbXBsaW5nKTsKKyAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4MzMwMiwgJnQtPnVsKTsKKyAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAKICAgaWYgKHNlbGYtPnZlcnRpY2FsX3N1YnNhbXBsaW5nKSB7CiAgICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwpAQCAtNTcyOCw3ICs1NzI0LDcgQEAKICAgICBjYXNlIDB4MzQwMTp7CiAgICAgICBndWludCBpLCBsZW47CiAKLSAgICAgIGlmICh0YWdfc2l6ZSAlIDIgIT0gMCkKKyAgICAgIGlmICh0YWdfc2l6ZSAlIDIgIT0gMCB8fCB0YWdfc2l6ZSA+IDE2KQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICBpID0gMDsKQEAgLTU3NDEsNyArNTczNyw3IEBACiAgICAgICBpZiAobGVuID09IDApCiAgICAgICAgIHJldHVybiBUUlVFOwogCi0gICAgICBzZWxmLT5waXhlbF9sYXlvdXQgPSBnX21hbGxvYzAgKDIgKiBsZW4pOworICAgICAgc2VsZi0+cGl4ZWxfbGF5b3V0ID0gZ19tYWxsb2MwICgxNik7CiAKICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICBzZWxmLT5waXhlbF9sYXlvdXRbMiAqIGldID0gdGFnX2RhdGFbMiAqIGldOwpAQCAtNTg4NywxNyArNTg4MywxNSBAQAogICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogICB9CiAKLSAgaWYgKHNlbGYtPnBpeGVsX2xheW91dCkgewotICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKLSAgICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChQSVhFTF9MQVlPVVQpLCAxNik7Ci0gICAgdC0+c2l6ZSA9IDIgKiBzZWxmLT5uX3BpeGVsX2xheW91dCArIDI7Ci0gICAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MwICh0LT5zaXplKTsKLSAgICB0LT5nX3NsaWNlID0gVFJVRTsKKyAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOworICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChQSVhFTF9MQVlPVVQpLCAxNik7CisgIHQtPnNpemUgPSAxNjsKKyAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MwICh0LT5zaXplKTsKKyAgdC0+Z19zbGljZSA9IFRSVUU7CisgIGlmIChzZWxmLT5waXhlbF9sYXlvdXQpCiAgICAgbWVtY3B5ICh0LT5kYXRhLCBzZWxmLT5waXhlbF9sYXlvdXQsIHNlbGYtPm5fcGl4ZWxfbGF5b3V0ICogMik7Ci0gICAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4MzQwMSwgJnQtPnVsKTsKLSAgICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKLQotICB9CisgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDM0MDEsICZ0LT51bCk7CisgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogCiAgIHJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9nc3QvbXhmL214Zm1wZWcuYyBiL2dzdC9teGYvbXhmbXBlZy5jCmluZGV4IGMyNmZhOTkuLjMwYmE5Y2YgMTAwNjQ0Ci0tLSBhL2dzdC9teGYvbXhmbXBlZy5jCisrKyBiL2dzdC9teGYvbXhmbXBlZy5jCkBAIC02MDAsNyArNjAwLDcgQEAKICAgICAweDAzLCAweDAyLCAweDA0LCAweDAwfQogfTsKIAotc3RhdGljIGNvbnN0IE1YRlVMIHNvdW5kX2Vzc2VuY2VfY29tcHJlc3Npb25fbXBlZzFfbGF5ZXIxMiA9IHsgeworc3RhdGljIGNvbnN0IE1YRlVMIHNvdW5kX2Vzc2VuY2VfY29tcHJlc3Npb25fbXBlZzFfbGF5ZXIyMyA9IHsgewogICAgICAgICAweDA2LCAweDBFLCAweDJCLCAweDM0LCAweDA0LCAweDAxLCAweDAxLCAweDAxLCAweDA0LCAweDAyLCAweDAyLCAweDAyLAogICAgIDB4MDMsIDB4MDIsIDB4MDUsIDB4MDB9CiB9OwpAQCAtNzAxLDggKzcwMSw5IEBACiAgICAgfSBlbHNlIGlmICgocC0+cGljdHVyZV9lc3NlbmNlX2NvZGluZy51WzEzXSA+PiA0KSA9PSAweDAzKSB7CiAgICAgICAvKiBSUCAyMDA4ICovCiAKLSAgICAgIC8qIFRPRE86IFdoYXQgYWJvdXQgY29kZWNfZGF0YSBmb3IgQVZDMSBzdHJlYW1zPyAqLwotICAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUgKCJ2aWRlby94LWgyNjQiKTsKKyAgICAgIGNhcHMgPQorICAgICAgICAgIGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby94LWgyNjQiLCAic3RyZWFtLWZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsCisgICAgICAgICAgImJ5dGUtc3RyZWFtIiwgTlVMTCk7CiAgICAgICBjb2RlY19uYW1lID0gImguMjY0IFZpZGVvIjsKICAgICAgIHQgPSBNWEZfTVBFR19FU1NFTkNFX1RZUEVfVklERU9fQVZDOwogICAgICAgbWVtY3B5IChtZGF0YSwgJnQsIHNpemVvZiAoTVhGTVBFR0Vzc2VuY2VUeXBlKSk7CkBAIC03MzEsNyArNzMyLDcgQEAKICAgICAgICAgICAibGF5ZXIiLCBHX1RZUEVfSU5ULCAxLCBOVUxMKTsKICAgICAgIGNvZGVjX25hbWUgPSAiTVBFRy0xIExheWVyIDEgQXVkaW8iOwogICAgIH0gZWxzZSBpZiAobXhmX3VsX2lzX2VxdWFsICgmcy0+c291bmRfZXNzZW5jZV9jb21wcmVzc2lvbiwKLSAgICAgICAgICAgICZzb3VuZF9lc3NlbmNlX2NvbXByZXNzaW9uX21wZWcxX2xheWVyMTIpKSB7CisgICAgICAgICAgICAmc291bmRfZXNzZW5jZV9jb21wcmVzc2lvbl9tcGVnMV9sYXllcjIzKSkgewogICAgICAgY2FwcyA9CiAgICAgICAgICAgZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImF1ZGlvL21wZWciLCAibXBlZ3ZlcnNpb24iLCBHX1RZUEVfSU5ULCAxLAogICAgICAgICAgIE5VTEwpOwpAQCAtODkwLDE3ICs4OTEsMTYgQEAKICAgfSBlbHNlIGlmIChmLT5lc3NlbmNlX2NvbnRhaW5lci51WzEzXSA9PSAweDBmKSB7CiAgICAgR1NUX0RFQlVHICgiRm91bmQgaDI2NCBOQUwgdW5pdCBzdHJlYW0iKTsKICAgICAvKiBSUCAyMDA4ICovCi0gICAgLyogVE9ETzogV2hhdCBhYm91dCBjb2RlY19kYXRhPyAqLwogICAgIGNhcHMgPQogICAgICAgICBnc3RfY2Fwc19uZXdfc2ltcGxlICgidmlkZW8veC1oMjY0IiwgInN0cmVhbS1mb3JtYXQiLCBHX1RZUEVfU1RSSU5HLAotICAgICAgICAiYXZjIiwgTlVMTCk7CisgICAgICAgICJieXRlLXN0cmVhbSIsIE5VTEwpOwogCiAgICAgaWYgKCEqdGFncykKICAgICAgICp0YWdzID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKICAgICBnc3RfdGFnX2xpc3RfYWRkICgqdGFncywgR1NUX1RBR19NRVJHRV9BUFBFTkQsIEdTVF9UQUdfVklERU9fQ09ERUMsCiAgICAgICAgICJoLjI2NCBWaWRlbyIsIE5VTEwpOwogICB9IGVsc2UgaWYgKGYtPmVzc2VuY2VfY29udGFpbmVyLnVbMTNdID09IDB4MTApIHsKLSAgICBHU1RfREVCVUcgKCJGb3VuZCBoMjY0IGJ5dGUgc3RyZWFtIHN0cmVhbSIpOworICAgIEdTVF9ERUJVRyAoIkZvdW5kIGgyNjQgYnl0ZS1zdHJlYW0gc3RyZWFtIik7CiAgICAgLyogUlAgMjAwOCAqLwogICAgIGNhcHMgPQogICAgICAgICBnc3RfY2Fwc19uZXdfc2ltcGxlICgidmlkZW8veC1oMjY0IiwgInN0cmVhbS1mb3JtYXQiLCBHX1RZUEVfU1RSSU5HLApAQCAtOTQxLDcgKzk0MSw3IEBACiAKIHN0YXRpYyBjb25zdCBndWludDggbXBlZ19lc3NlbmNlX2NvbnRhaW5lcl91bFtdID0gewogICAweDA2LCAweDBlLCAweDJiLCAweDM0LCAweDA0LCAweDAxLCAweDAxLCAweDAyLAotICAweDBkLCAweDAxLCAweDAzLCAweDAxLCAweDAyLCAweDA0LCAweDAxLCAweDAxCisgIDB4MGQsIDB4MDEsIDB4MDMsIDB4MDEsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDEKIH07CiAKIHN0YXRpYyBNWEZNZXRhZGF0YUZpbGVEZXNjcmlwdG9yICoKQEAgLTk3OSw5ICs5NzksOSBAQAogICAgICAgaWYgKG1wZWdhdWRpb3ZlcnNpb24gPT0gMSAmJiBsYXllciA9PSAxKQogICAgICAgICBtZW1jcHkgKCZyZXQtPnNvdW5kX2Vzc2VuY2VfY29tcHJlc3Npb24sCiAgICAgICAgICAgICAmc291bmRfZXNzZW5jZV9jb21wcmVzc2lvbl9tcGVnMV9sYXllcjEsIDE2KTsKLSAgICAgIGVsc2UgaWYgKG1wZWdhdWRpb3ZlcnNpb24gPT0gMSAmJiBsYXllciA9PSAyKQorICAgICAgZWxzZSBpZiAobXBlZ2F1ZGlvdmVyc2lvbiA9PSAxICYmIChsYXllciA9PSAyIHx8IGxheWVyID09IDMpKQogICAgICAgICBtZW1jcHkgKCZyZXQtPnNvdW5kX2Vzc2VuY2VfY29tcHJlc3Npb24sCi0gICAgICAgICAgICAmc291bmRfZXNzZW5jZV9jb21wcmVzc2lvbl9tcGVnMV9sYXllcjEyLCAxNik7CisgICAgICAgICAgICAmc291bmRfZXNzZW5jZV9jb21wcmVzc2lvbl9tcGVnMV9sYXllcjIzLCAxNik7CiAgICAgICBlbHNlIGlmIChtcGVnYXVkaW92ZXJzaW9uID09IDIgJiYgbGF5ZXIgPT0gMSkKICAgICAgICAgbWVtY3B5ICgmcmV0LT5zb3VuZF9lc3NlbmNlX2NvbXByZXNzaW9uLAogICAgICAgICAgICAgJnNvdW5kX2Vzc2VuY2VfY29tcHJlc3Npb25fbXBlZzJfbGF5ZXIxLCAxNik7CkBAIC0xMDE2LDYgKzEwMTYsOSBAQAogCiAgIG1lbWNweSAoJnJldC0+cGFyZW50LmVzc2VuY2VfY29udGFpbmVyLCAmbXBlZ19lc3NlbmNlX2NvbnRhaW5lcl91bCwgMTYpOwogCisgIHJldC0+cGFyZW50LmVzc2VuY2VfY29udGFpbmVyLnVbMTNdID0gMHgwNDsKKyAgcmV0LT5wYXJlbnQuZXNzZW5jZV9jb250YWluZXIudVsxNF0gPSAweDQwOworCiAgIGlmICghbXhmX21ldGFkYXRhX2dlbmVyaWNfc291bmRfZXNzZW5jZV9kZXNjcmlwdG9yX2Zyb21fY2FwcyAocmV0LCBjYXBzKSkgewogICAgIGdfb2JqZWN0X3VucmVmIChyZXQpOwogICAgIHJldHVybiBOVUxMOwpAQCAtMTI1Nyw2ICsxMjYwLDcgQEAKIAogICBtZW1jcHkgKCZyZXQtPnBhcmVudC5wYXJlbnQucGFyZW50LmVzc2VuY2VfY29udGFpbmVyLAogICAgICAgJm1wZWdfZXNzZW5jZV9jb250YWluZXJfdWwsIDE2KTsKKwogICBtZW1jcHkgKCZyZXQtPnBhcmVudC5wYXJlbnQucGljdHVyZV9lc3NlbmNlX2NvZGluZywKICAgICAgICZtcGVnX3ZpZGVvX3BpY3R1cmVfZXNzZW5jZV9jb21wcmVzc2lvbl91bCwgMTYpOwogICBpZiAoc3RyY21wIChnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzKSwgInZpZGVvL21wZWciKSA9PSAwKSB7CkBAIC0xMjczLDEzICsxMjc3LDE5IEBACiAKICAgICAgICptYXBwaW5nX2RhdGEgPSBnX25ldzAgKE1YRk1QRUdFc3NlbmNlVHlwZSwgMSk7CiAgICAgICBtZW1jcHkgKCptYXBwaW5nX2RhdGEsICZ0eXBlLCBzaXplb2YgKE1YRk1QRUdFc3NlbmNlVHlwZSkpOworICAgICAgcmV0LT5wYXJlbnQucGFyZW50LnBpY3R1cmVfZXNzZW5jZV9jb2RpbmcudVs3XSA9IDB4MDM7CiAgICAgICByZXQtPnBhcmVudC5wYXJlbnQucGljdHVyZV9lc3NlbmNlX2NvZGluZy51WzEzXSA9IDB4MTA7CisgICAgICByZXQtPnBhcmVudC5wYXJlbnQucGFyZW50LmVzc2VuY2VfY29udGFpbmVyLnVbMTNdID0gMHgwNDsKKyAgICAgIHJldC0+cGFyZW50LnBhcmVudC5wYXJlbnQuZXNzZW5jZV9jb250YWluZXIudVsxNF0gPSAweDYwOwogICAgIH0gZWxzZSBpZiAobXBlZ3ZlcnNpb24gPT0gMikgewogICAgICAgTVhGTVBFR0Vzc2VuY2VUeXBlIHR5cGUgPSBNWEZfTVBFR19FU1NFTkNFX1RZUEVfVklERU9fTVBFRzI7CiAKICAgICAgICptYXBwaW5nX2RhdGEgPSBnX25ldzAgKE1YRk1QRUdFc3NlbmNlVHlwZSwgMSk7CiAgICAgICBtZW1jcHkgKCptYXBwaW5nX2RhdGEsICZ0eXBlLCBzaXplb2YgKE1YRk1QRUdFc3NlbmNlVHlwZSkpOworICAgICAgcmV0LT5wYXJlbnQucGFyZW50LnBpY3R1cmVfZXNzZW5jZV9jb2RpbmcudVs3XSA9IDB4MDE7CiAgICAgICByZXQtPnBhcmVudC5wYXJlbnQucGljdHVyZV9lc3NlbmNlX2NvZGluZy51WzEzXSA9IDB4MDE7CisgICAgICByZXQtPnBhcmVudC5wYXJlbnQucGFyZW50LmVzc2VuY2VfY29udGFpbmVyLnVbMTNdID0gMHgwNDsKKyAgICAgIHJldC0+cGFyZW50LnBhcmVudC5wYXJlbnQuZXNzZW5jZV9jb250YWluZXIudVsxNF0gPSAweDYwOwogICAgIH0gZWxzZSB7CiAgICAgICBjb25zdCBHVmFsdWUgKnY7CiAgICAgICBjb25zdCBHc3RCdWZmZXIgKmNvZGVjX2RhdGE7CkBAIC0xMjg4LDcgKzEyOTgsMTAgQEAKICAgICAgICptYXBwaW5nX2RhdGEgPSBnX25ldzAgKE1YRk1QRUdFc3NlbmNlVHlwZSwgMSk7CiAgICAgICBtZW1jcHkgKCptYXBwaW5nX2RhdGEsICZ0eXBlLCBzaXplb2YgKE1YRk1QRUdFc3NlbmNlVHlwZSkpOwogCisgICAgICByZXQtPnBhcmVudC5wYXJlbnQucGljdHVyZV9lc3NlbmNlX2NvZGluZy51WzddID0gMHgwMzsKICAgICAgIHJldC0+cGFyZW50LnBhcmVudC5waWN0dXJlX2Vzc2VuY2VfY29kaW5nLnVbMTNdID0gMHgyMDsKKyAgICAgIHJldC0+cGFyZW50LnBhcmVudC5wYXJlbnQuZXNzZW5jZV9jb250YWluZXIudVsxM10gPSAweDA0OworICAgICAgcmV0LT5wYXJlbnQucGFyZW50LnBhcmVudC5lc3NlbmNlX2NvbnRhaW5lci51WzE0XSA9IDB4NjA7CiAgICAgICBpZiAoKHYgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAocywgImNvZGVjX2RhdGEiKSkpIHsKICAgICAgICAgTVhGTG9jYWxUYWcgKnQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKICAgICAgICAgR3N0TWFwSW5mbyBtYXA7CkBAIC0xMzA3LDcgKzEzMjAsMTEgQEAKIAogICAgICptYXBwaW5nX2RhdGEgPSBnX25ldzAgKE1YRk1QRUdFc3NlbmNlVHlwZSwgMSk7CiAgICAgbWVtY3B5ICgqbWFwcGluZ19kYXRhLCAmdHlwZSwgc2l6ZW9mIChNWEZNUEVHRXNzZW5jZVR5cGUpKTsKKyAgICByZXQtPnBhcmVudC5wYXJlbnQucGljdHVyZV9lc3NlbmNlX2NvZGluZy51WzddID0gMHgwYTsKICAgICByZXQtPnBhcmVudC5wYXJlbnQucGljdHVyZV9lc3NlbmNlX2NvZGluZy51WzEzXSA9IDB4MzA7CisgICAgcmV0LT5wYXJlbnQucGFyZW50LnBhcmVudC5lc3NlbmNlX2NvbnRhaW5lci51WzddID0gMHgwYTsKKyAgICByZXQtPnBhcmVudC5wYXJlbnQucGFyZW50LmVzc2VuY2VfY29udGFpbmVyLnVbMTNdID0gMHgxMDsKKyAgICByZXQtPnBhcmVudC5wYXJlbnQucGFyZW50LmVzc2VuY2VfY29udGFpbmVyLnVbMTRdID0gMHg2MDsKICAgfSBlbHNlIHsKICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKICAgfQpAQCAtMTM2NCw2ICsxMzgxLDcgQEAKICJoZWlnaHQgPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIgXAogImZyYW1lcmF0ZSA9ICIgR1NUX1ZJREVPX0ZQU19SQU5HRSAiOyAiIFwKICJ2aWRlby94LWgyNjQsICIgXAorInN0cmVhbS1mb3JtYXQgPSAoc3RyaW5nKSBieXRlLXN0cmVhbSwgIiBcCiAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIgXAogImhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIiBcCiAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFCmRpZmYgLS1naXQgYS9nc3QvbXhmL214Zm11eC5jIGIvZ3N0L214Zi9teGZtdXguYwppbmRleCAyNzNkM2I2Li5kMzYzZTdhIDEwMDY0NAotLS0gYS9nc3QvbXhmL214Zm11eC5jCisrKyBiL2dzdC9teGYvbXhmbXV4LmMKQEAgLTI1LDcgKzI1LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249L3BhdGgvdG8vYXVkaW8gISBkZWNvZGViaW4gISBxdWV1ZSAhIG14Zm11eCBuYW1lPW0gISBmaWxlc2luayBsb2NhdGlvbj1maWxlLm14ZiAgIGZpbGVzcmMgbG9jYXRpb249L3BhdGgvdG8vdmlkZW8gISBkZWNvZGViaW4gISBxdWV1ZSAhIG0uCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPS9wYXRoL3RvL2F1ZGlvICEgZGVjb2RlYmluICEgcXVldWUgISBteGZtdXggbmFtZT1tICEgZmlsZXNpbmsgbG9jYXRpb249ZmlsZS5teGYgICBmaWxlc3JjIGxvY2F0aW9uPS9wYXRoL3RvL3ZpZGVvICEgZGVjb2RlYmluICEgcXVldWUgISBtLgogICogXXwgVGhpcyBwaXBlbGluZSBtdXhlcyBhbiBhdWRpbyBhbmQgdmlkZW8gZmlsZSBpbnRvIGEgc2luZ2xlIE1YRiBmaWxlLgogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtNDYsNiArNDYsNjYgQEAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKG14Zm11eF9kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBteGZtdXhfZGVidWcKIAorI2RlZmluZSBHU1RfVFlQRV9NWEZfTVVYX1BBRCAgICAgICAgICAgIChnc3RfbXhmX211eF9wYWRfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX01YRl9NVVhfUEFEKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfTVhGX01VWF9QQUQsIEdzdE1YRk11eFBhZCkpCisjZGVmaW5lIEdTVF9NWEZfTVVYX1BBRF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfTVhGX01VWF9QQUQsIEdzdE1YRk11eFBhZENsYXNzKSkKKyNkZWZpbmUgR1NUX01YRl9NVVhfUEFEX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksR1NUX1RZUEVfTVhGX01VWF9QQUQsIEdzdE1YRk11eFBhZENsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX01YRl9NVVhfUEFEKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfTVhGX01VWF9QQUQpKQorI2RlZmluZSBHU1RfSVNfTVhGX01VWF9QQURfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX01YRl9NVVhfUEFEKSkKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgR3N0QWdncmVnYXRvclBhZCBwYXJlbnQ7CisKKyAgZ3VpbnQ2NCBwb3M7CisgIEdzdENsb2NrVGltZSBsYXN0X3RpbWVzdGFtcDsKKworICBNWEZNZXRhZGF0YUZpbGVEZXNjcmlwdG9yICpkZXNjcmlwdG9yOworCisgIEdzdEFkYXB0ZXIgKmFkYXB0ZXI7CisgIGdib29sZWFuIGhhdmVfY29tcGxldGVfZWRpdF91bml0OworCisgIGdwb2ludGVyIG1hcHBpbmdfZGF0YTsKKyAgY29uc3QgTVhGRXNzZW5jZUVsZW1lbnRXcml0ZXIgKndyaXRlcjsKKyAgTVhGRXNzZW5jZUVsZW1lbnRXcml0ZUZ1bmMgd3JpdGVfZnVuYzsKKworICBNWEZNZXRhZGF0YVNvdXJjZVBhY2thZ2UgKnNvdXJjZV9wYWNrYWdlOworICBNWEZNZXRhZGF0YVRpbWVsaW5lVHJhY2sgKnNvdXJjZV90cmFjazsKK30gR3N0TVhGTXV4UGFkOworCit0eXBlZGVmIHN0cnVjdAoreworICBHc3RBZ2dyZWdhdG9yUGFkQ2xhc3MgcGFyZW50X2NsYXNzOworfSBHc3RNWEZNdXhQYWRDbGFzczsKKworR1R5cGUgZ3N0X214Zl9tdXhfcGFkX2dldF90eXBlICh2b2lkKTsKKworR19ERUZJTkVfVFlQRSAoR3N0TVhGTXV4UGFkLCBnc3RfbXhmX211eF9wYWQsIEdTVF9UWVBFX0FHR1JFR0FUT1JfUEFEKTsKKworc3RhdGljIHZvaWQKK2dzdF9teGZfbXV4X3BhZF9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0TVhGTXV4UGFkICpwYWQgPSBHU1RfTVhGX01VWF9QQUQgKG9iamVjdCk7CisKKyAgZ19vYmplY3RfdW5yZWYgKHBhZC0+YWRhcHRlcik7CisgIGdfZnJlZSAocGFkLT5tYXBwaW5nX2RhdGEpOworCisgIEdfT0JKRUNUX0NMQVNTIChnc3RfbXhmX211eF9wYWRfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbXhmX211eF9wYWRfY2xhc3NfaW5pdCAoR3N0TVhGTXV4UGFkQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworCisgIG9iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfbXhmX211eF9wYWRfZmluYWxpemU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbXhmX211eF9wYWRfaW5pdCAoR3N0TVhGTXV4UGFkICogcGFkKQoreworfQorCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc3JjX3RlbXBsID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAogICAgIEdTVF9QQURfU1JDLAogICAgIEdTVF9QQURfQUxXQVlTLApAQCAtNTgsMjcgKzExOCwyMCBAQAogfTsKIAogI2RlZmluZSBnc3RfbXhmX211eF9wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCi1HX0RFRklORV9UWVBFIChHc3RNWEZNdXgsIGdzdF9teGZfbXV4LCBHU1RfVFlQRV9FTEVNRU5UKTsKK0dfREVGSU5FX1RZUEUgKEdzdE1YRk11eCwgZ3N0X214Zl9tdXgsIEdTVF9UWVBFX0FHR1JFR0FUT1IpOwogCiBzdGF0aWMgdm9pZCBnc3RfbXhmX211eF9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7Ci1zdGF0aWMgdm9pZCBnc3RfbXhmX211eF9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCi0gICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci1zdGF0aWMgdm9pZCBnc3RfbXhmX211eF9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCi0gICAgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CiAKLXN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9teGZfbXV4X2NvbGxlY3RlZCAoR3N0Q29sbGVjdFBhZHMgKiBwYWRzLAotICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7CitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfbXhmX211eF9hZ2dyZWdhdGUgKEdzdEFnZ3JlZ2F0b3IgKiBhZ2dyZWdhdG9yLAorICAgIGdib29sZWFuIHRpbWVvdXQpOworc3RhdGljIGdib29sZWFuIGdzdF9teGZfbXV4X3N0b3AgKEdzdEFnZ3JlZ2F0b3IgKiBhZ2dyZWdhdG9yKTsKIAotc3RhdGljIGdib29sZWFuIGdzdF9teGZfbXV4X2hhbmRsZV9zcmNfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAorc3RhdGljIGdib29sZWFuIGdzdF9teGZfbXV4X3NyY19ldmVudCAoR3N0QWdncmVnYXRvciAqIGFnZ3JlZ2F0b3IsCiAgICAgR3N0RXZlbnQgKiBldmVudCk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X214Zl9tdXhfaGFuZGxlX3NpbmtfZXZlbnQgKEdzdENvbGxlY3RQYWRzICogcGFkcywKLSAgICBHc3RDb2xsZWN0RGF0YSAqIGRhdGEsIEdzdEV2ZW50ICogZXZlbnQsIGdwb2ludGVyIHVzZXJfZGF0YSk7Ci1zdGF0aWMgR3N0UGFkICpnc3RfbXhmX211eF9yZXF1ZXN0X25ld19wYWQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorc3RhdGljIGdib29sZWFuIGdzdF9teGZfbXV4X3NpbmtfZXZlbnQgKEdzdEFnZ3JlZ2F0b3IgKiBhZ2dyZWdhdG9yLAorICAgIEdzdEFnZ3JlZ2F0b3JQYWQgKiBhZ2dwYWQsIEdzdEV2ZW50ICogZXZlbnQpOworc3RhdGljIEdzdEFnZ3JlZ2F0b3JQYWQgKmdzdF9teGZfbXV4X2NyZWF0ZV9uZXdfcGFkIChHc3RBZ2dyZWdhdG9yICogYWdncmVnYXRvciwKICAgICBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLCBjb25zdCBnY2hhciAqIG5hbWUsIGNvbnN0IEdzdENhcHMgKiBjYXBzKTsKLXN0YXRpYyB2b2lkIGdzdF9teGZfbXV4X3JlbGVhc2VfcGFkIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0UGFkICogcGFkKTsKLQotc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi1nc3RfbXhmX211eF9jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKIAogc3RhdGljIHZvaWQgZ3N0X214Zl9tdXhfcmVzZXQgKEdzdE1YRk11eCAqIG11eCk7CiAKQEAgLTg4LDcgKzE0MSw3IEBACiAgIGd1aW50IHNpemUgPSBnc3RfYnVmZmVyX2dldF9zaXplIChidWYpOwogICBHc3RGbG93UmV0dXJuIHJldDsKIAotICByZXQgPSBnc3RfcGFkX3B1c2ggKG11eC0+c3JjcGFkLCBidWYpOworICByZXQgPSBnc3RfYWdncmVnYXRvcl9maW5pc2hfYnVmZmVyIChHU1RfQUdHUkVHQVRPUiAobXV4KSwgYnVmKTsKICAgbXV4LT5vZmZzZXQgKz0gc2l6ZTsKIAogICByZXR1cm4gcmV0OwpAQCAtOTksMjEgKzE1MiwyNCBAQAogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CiAgIEdzdEVsZW1lbnRDbGFzcyAqZ3N0ZWxlbWVudF9jbGFzczsKKyAgR3N0QWdncmVnYXRvckNsYXNzICpnc3RhZ2dyZWdhdG9yX2NsYXNzOwogICBjb25zdCBHc3RQYWRUZW1wbGF0ZSAqKnA7CiAKICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKG14Zm11eF9kZWJ1ZywgIm14Zm11eCIsIDAsICJNWEYgbXV4ZXIiKTsKIAogICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKICAgZ3N0ZWxlbWVudF9jbGFzcyA9IChHc3RFbGVtZW50Q2xhc3MgKikga2xhc3M7CisgIGdzdGFnZ3JlZ2F0b3JfY2xhc3MgPSAoR3N0QWdncmVnYXRvckNsYXNzICopIGtsYXNzOwogCiAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X214Zl9tdXhfZmluYWxpemU7Ci0gIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9teGZfbXV4X3NldF9wcm9wZXJ0eTsKLSAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X214Zl9tdXhfZ2V0X3Byb3BlcnR5OwogCi0gIGdzdGVsZW1lbnRfY2xhc3MtPmNoYW5nZV9zdGF0ZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbXhmX211eF9jaGFuZ2Vfc3RhdGUpOwotICBnc3RlbGVtZW50X2NsYXNzLT5yZXF1ZXN0X25ld19wYWQgPQotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9teGZfbXV4X3JlcXVlc3RfbmV3X3BhZCk7Ci0gIGdzdGVsZW1lbnRfY2xhc3MtPnJlbGVhc2VfcGFkID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9teGZfbXV4X3JlbGVhc2VfcGFkKTsKKyAgZ3N0YWdncmVnYXRvcl9jbGFzcy0+Y3JlYXRlX25ld19wYWQgPQorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9teGZfbXV4X2NyZWF0ZV9uZXdfcGFkKTsKKyAgZ3N0YWdncmVnYXRvcl9jbGFzcy0+c3JjX2V2ZW50ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9teGZfbXV4X3NyY19ldmVudCk7CisgIGdzdGFnZ3JlZ2F0b3JfY2xhc3MtPnNpbmtfZXZlbnQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X214Zl9tdXhfc2lua19ldmVudCk7CisgIGdzdGFnZ3JlZ2F0b3JfY2xhc3MtPnN0b3AgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X214Zl9tdXhfc3RvcCk7CisgIGdzdGFnZ3JlZ2F0b3JfY2xhc3MtPmFnZ3JlZ2F0ZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbXhmX211eF9hZ2dyZWdhdGUpOworICBnc3RhZ2dyZWdhdG9yX2NsYXNzLT5zaW5rcGFkc190eXBlID0gR1NUX1RZUEVfTVhGX01VWF9QQUQ7CiAKICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKICAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNyY190ZW1wbCkpOwpAQCAtMTM0LDIxICsxOTAsNyBAQAogc3RhdGljIHZvaWQKIGdzdF9teGZfbXV4X2luaXQgKEdzdE1YRk11eCAqIG11eCkKIHsKLSAgR3N0Q2FwcyAqY2FwczsKLQotICBtdXgtPnNyY3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmc3JjX3RlbXBsLCAic3JjIik7Ci0gIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChtdXgtPnNyY3BhZCwgZ3N0X214Zl9tdXhfaGFuZGxlX3NyY19ldmVudCk7Ci0gIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlICgiYXBwbGljYXRpb24vbXhmIik7Ci0gIGdzdF9wYWRfc2V0X2NhcHMgKG11eC0+c3JjcGFkLCBjYXBzKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAobXV4KSwgbXV4LT5zcmNwYWQpOwotCi0gIG11eC0+Y29sbGVjdCA9IGdzdF9jb2xsZWN0X3BhZHNfbmV3ICgpOwotICBnc3RfY29sbGVjdF9wYWRzX3NldF9ldmVudF9mdW5jdGlvbiAobXV4LT5jb2xsZWN0LAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9teGZfbXV4X2hhbmRsZV9zaW5rX2V2ZW50KSwgbXV4KTsKLSAgZ3N0X2NvbGxlY3RfcGFkc19zZXRfZnVuY3Rpb24gKG11eC0+Y29sbGVjdCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbXhmX211eF9jb2xsZWN0ZWQpLCBtdXgpOwotCisgIG11eC0+aW5kZXhfdGFibGUgPSBnX2FycmF5X25ldyAoRkFMU0UsIEZBTFNFLCBzaXplb2YgKE1YRkluZGV4VGFibGVTZWdtZW50KSk7CiAgIGdzdF9teGZfbXV4X3Jlc2V0IChtdXgpOwogfQogCkBAIC0xNjYsNTAgKzIwOCwzMCBAQAogICAgIG11eC0+bWV0YWRhdGFfbGlzdCA9IE5VTEw7CiAgIH0KIAotICBnc3Rfb2JqZWN0X3VucmVmIChtdXgtPmNvbGxlY3QpOworICBpZiAobXV4LT5pbmRleF90YWJsZSkgeworICAgIGdfYXJyYXlfZnJlZSAobXV4LT5pbmRleF90YWJsZSwgVFJVRSk7CisgICAgbXV4LT5pbmRleF90YWJsZSA9IE5VTEw7CisgIH0KIAogICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1nc3RfbXhmX211eF9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCi0gICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLXsKLSAgLy9Hc3RNWEZNdXggKm11eCA9IEdTVF9NWEZfTVVYIChvYmplY3QpOwotCi0gIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGRlZmF1bHQ6Ci0gICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKLWdzdF9teGZfbXV4X2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKLSAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQotewotICAvL0dzdE1YRk11eCAqbXV4ID0gR1NUX01YRl9NVVggKG9iamVjdCk7Ci0KLSAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7Ci0gICAgICBicmVhazsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAogZ3N0X214Zl9tdXhfcmVzZXQgKEdzdE1YRk11eCAqIG11eCkKIHsKLSAgR1NMaXN0ICpzbDsKKyAgR0xpc3QgKmw7CiAKLSAgd2hpbGUgKChzbCA9IG11eC0+Y29sbGVjdC0+ZGF0YSkgIT0gTlVMTCkgewotICAgIEdzdE1YRk11eFBhZCAqY3BhZCA9IChHc3RNWEZNdXhQYWQgKikgc2wtPmRhdGE7CisgIEdTVF9PQkpFQ1RfTE9DSyAobXV4KTsKKyAgd2hpbGUgKChsID0gR1NUX0VMRU1FTlRfQ0FTVCAobXV4KS0+c2lua3BhZHMpICE9IE5VTEwpIHsKKyAgICBHc3RQYWQgKnBhZCA9IChHc3RQYWQgKikgbC0+ZGF0YTsKIAotICAgIGdfb2JqZWN0X3VucmVmIChjcGFkLT5hZGFwdGVyKTsKLSAgICBnX2ZyZWUgKGNwYWQtPm1hcHBpbmdfZGF0YSk7Ci0KLSAgICBnc3RfY29sbGVjdF9wYWRzX3JlbW92ZV9wYWQgKG11eC0+Y29sbGVjdCwgY3BhZC0+Y29sbGVjdC5wYWQpOworICAgIGdzdF9vYmplY3RfcmVmIChwYWQpOworICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChtdXgpOworICAgIGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVzdF9wYWQgKEdTVF9FTEVNRU5UX0NBU1QgKG11eCksIHBhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZiAocGFkKTsKKyAgICBHU1RfT0JKRUNUX0xPQ0sgKG11eCk7CiAgIH0KKyAgR1NUX09CSkVDVF9VTkxPQ0sgKG11eCk7CiAKICAgbXV4LT5zdGF0ZSA9IEdTVF9NWEZfTVVYX1NUQVRFX0hFQURFUjsKICAgbXV4LT5uX3BhZHMgPSAwOwpAQCAtMjI4LDM1ICsyNTAsMzIgQEAKICAgbXV4LT5sYXN0X2djX3RpbWVzdGFtcCA9IDA7CiAgIG11eC0+bGFzdF9nY19wb3NpdGlvbiA9IDA7CiAgIG11eC0+b2Zmc2V0ID0gMDsKKworICBnX2FycmF5X3NldF9zaXplIChtdXgtPmluZGV4X3RhYmxlLCAwKTsKIH0KIAogc3RhdGljIGdib29sZWFuCi1nc3RfbXhmX211eF9oYW5kbGVfc3JjX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RFdmVudCAqIGV2ZW50KQorZ3N0X214Zl9tdXhfc3JjX2V2ZW50IChHc3RBZ2dyZWdhdG9yICogYWdncmVnYXRvciwgR3N0RXZlbnQgKiBldmVudCkKIHsKLSAgR3N0RXZlbnRUeXBlIHR5cGU7Ci0KLSAgdHlwZSA9IGV2ZW50ID8gR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSA6IEdTVF9FVkVOVF9VTktOT1dOOwotCi0gIHN3aXRjaCAodHlwZSkgeworICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKICAgICBjYXNlIEdTVF9FVkVOVF9TRUVLOgogICAgICAgLyogZGlzYWJsZSBzZWVraW5nIGZvciBub3cgKi8KKyAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwogICAgICAgcmV0dXJuIEZBTFNFOwogICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gR1NUX0FHR1JFR0FUT1JfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNyY19ldmVudCAoYWdncmVnYXRvciwgZXZlbnQpOwogICAgICAgYnJlYWs7CiAgIH0KIAotICByZXR1cm4gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOworICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKIH0KIAogc3RhdGljIGdib29sZWFuCi1nc3RfbXhmX211eF9ldmVudF9jYXBzIChHc3RQYWQgKiBwYWQsIEdzdENhcHMgKiBjYXBzKQorZ3N0X214Zl9tdXhfc2V0X2NhcHMgKEdzdE1YRk11eCAqIG11eCwgR3N0TVhGTXV4UGFkICogcGFkLCBHc3RDYXBzICogY2FwcykKIHsKLSAgR3N0TVhGTXV4ICptdXggPSBHU1RfTVhGX01VWCAoZ3N0X3BhZF9nZXRfcGFyZW50IChwYWQpKTsKLSAgR3N0TVhGTXV4UGFkICpjcGFkID0gKEdzdE1YRk11eFBhZCAqKSBnc3RfcGFkX2dldF9lbGVtZW50X3ByaXZhdGUgKHBhZCk7CiAgIGdib29sZWFuIHJldCA9IFRSVUU7CiAgIE1YRlVVSUQgZF9pbnN0YW5jZV91aWQgPSB7IHswLH0gfTsKLSAgTVhGTWV0YWRhdGFGaWxlRGVzY3JpcHRvciAqb2xkX2Rlc2NyaXB0b3IgPSBjcGFkLT5kZXNjcmlwdG9yOworICBNWEZNZXRhZGF0YUZpbGVEZXNjcmlwdG9yICpvbGRfZGVzY3JpcHRvciA9IHBhZC0+ZGVzY3JpcHRvcjsKICAgR0xpc3QgKmw7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAiU2V0dGluZyBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKQEAgLTI2NCwyNyArMjgzLDI2IEBACiAgIGlmIChvbGRfZGVzY3JpcHRvcikgewogICAgIG1lbWNweSAoJmRfaW5zdGFuY2VfdWlkLCAmTVhGX01FVEFEQVRBX0JBU0UgKG9sZF9kZXNjcmlwdG9yKS0+aW5zdGFuY2VfdWlkLAogICAgICAgICAxNik7Ci0gICAgY3BhZC0+ZGVzY3JpcHRvciA9IE5VTEw7Ci0gICAgZ19mcmVlIChjcGFkLT5tYXBwaW5nX2RhdGEpOwotICAgIGNwYWQtPm1hcHBpbmdfZGF0YSA9IE5VTEw7CisgICAgcGFkLT5kZXNjcmlwdG9yID0gTlVMTDsKKyAgICBnX2ZyZWUgKHBhZC0+bWFwcGluZ19kYXRhKTsKKyAgICBwYWQtPm1hcHBpbmdfZGF0YSA9IE5VTEw7CiAgIH0KIAotICBjcGFkLT5kZXNjcmlwdG9yID0KLSAgICAgIGNwYWQtPndyaXRlci0+Z2V0X2Rlc2NyaXB0b3IgKEdTVF9QQURfUEFEX1RFTVBMQVRFIChwYWQpLCBjYXBzLAotICAgICAgJmNwYWQtPndyaXRlX2Z1bmMsICZjcGFkLT5tYXBwaW5nX2RhdGEpOworICBwYWQtPmRlc2NyaXB0b3IgPQorICAgICAgcGFkLT53cml0ZXItPmdldF9kZXNjcmlwdG9yIChHU1RfUEFEX1BBRF9URU1QTEFURSAocGFkKSwgY2FwcywKKyAgICAgICZwYWQtPndyaXRlX2Z1bmMsICZwYWQtPm1hcHBpbmdfZGF0YSk7CiAKLSAgaWYgKCFjcGFkLT5kZXNjcmlwdG9yKSB7CisgIGlmICghcGFkLT5kZXNjcmlwdG9yKSB7CiAgICAgR1NUX0VSUk9SX09CSkVDVCAobXV4LAogICAgICAgICAiQ291bGRuJ3QgZ2V0IGRlc2NyaXB0b3IgZm9yIHBhZCAnJXMnIHdpdGggY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwKICAgICAgICAgR1NUX1BBRF9OQU1FIChwYWQpLCBjYXBzKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChtdXgpOwogICAgIHJldHVybiBGQUxTRTsKICAgfQogCiAgIGlmIChteGZfdXVpZF9pc196ZXJvICgmZF9pbnN0YW5jZV91aWQpKQogICAgIG14Zl91dWlkX2luaXQgKCZkX2luc3RhbmNlX3VpZCwgbXV4LT5tZXRhZGF0YSk7CiAKLSAgbWVtY3B5ICgmTVhGX01FVEFEQVRBX0JBU0UgKGNwYWQtPmRlc2NyaXB0b3IpLT5pbnN0YW5jZV91aWQsICZkX2luc3RhbmNlX3VpZCwKKyAgbWVtY3B5ICgmTVhGX01FVEFEQVRBX0JBU0UgKHBhZC0+ZGVzY3JpcHRvciktPmluc3RhbmNlX3VpZCwgJmRfaW5zdGFuY2VfdWlkLAogICAgICAgMTYpOwogCiAgIGlmIChvbGRfZGVzY3JpcHRvcikgewpAQCAtMjkyLDE2ICszMTAsMTYgQEAKICAgICAgIE1YRk1ldGFkYXRhQmFzZSAqdG1wID0gbC0+ZGF0YTsKIAogICAgICAgaWYgKG14Zl91dWlkX2lzX2VxdWFsICgmZF9pbnN0YW5jZV91aWQsICZ0bXAtPmluc3RhbmNlX3VpZCkpIHsKLSAgICAgICAgbC0+ZGF0YSA9IGNwYWQtPmRlc2NyaXB0b3I7CisgICAgICAgIGwtPmRhdGEgPSBwYWQtPmRlc2NyaXB0b3I7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgIH0KICAgfSBlbHNlIHsKLSAgICBtdXgtPm1ldGFkYXRhX2xpc3QgPSBnX2xpc3RfcHJlcGVuZCAobXV4LT5tZXRhZGF0YV9saXN0LCBjcGFkLT5kZXNjcmlwdG9yKTsKKyAgICBtdXgtPm1ldGFkYXRhX2xpc3QgPSBnX2xpc3RfcHJlcGVuZCAobXV4LT5tZXRhZGF0YV9saXN0LCBwYWQtPmRlc2NyaXB0b3IpOwogICB9CiAKICAgZ19oYXNoX3RhYmxlX3JlcGxhY2UgKG11eC0+bWV0YWRhdGEsCi0gICAgICAmTVhGX01FVEFEQVRBX0JBU0UgKGNwYWQtPmRlc2NyaXB0b3IpLT5pbnN0YW5jZV91aWQsIGNwYWQtPmRlc2NyaXB0b3IpOworICAgICAgJk1YRl9NRVRBREFUQV9CQVNFIChwYWQtPmRlc2NyaXB0b3IpLT5pbnN0YW5jZV91aWQsIHBhZC0+ZGVzY3JpcHRvcik7CiAKICAgaWYgKG9sZF9kZXNjcmlwdG9yKSB7CiAgICAgaWYgKG11eC0+cHJlZmFjZSAmJiBtdXgtPnByZWZhY2UtPmNvbnRlbnRfc3RvcmFnZSAmJgpAQCAtMzMwLDU1ICszNDgsNTIgQEAKICAgICAgICAgICAgIGlmICh0bXAtPnN1Yl9kZXNjcmlwdG9yc1tqXSA9PQogICAgICAgICAgICAgICAgIE1YRl9NRVRBREFUQV9HRU5FUklDX0RFU0NSSVBUT1IgKG9sZF9kZXNjcmlwdG9yKSkgewogICAgICAgICAgICAgICB0bXAtPnN1Yl9kZXNjcmlwdG9yc1tqXSA9Ci0gICAgICAgICAgICAgICAgICBNWEZfTUVUQURBVEFfR0VORVJJQ19ERVNDUklQVE9SIChjcGFkLT5kZXNjcmlwdG9yKTsKKyAgICAgICAgICAgICAgICAgIE1YRl9NRVRBREFUQV9HRU5FUklDX0RFU0NSSVBUT1IgKHBhZC0+ZGVzY3JpcHRvcik7CiAgICAgICAgICAgICAgIG1lbWNweSAoJnRtcC0+c3ViX2Rlc2NyaXB0b3JzX3VpZHNbal0sICZkX2luc3RhbmNlX3VpZCwgMTYpOwogICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChwYWNrYWdlLT5kZXNjcmlwdG9yID09CiAgICAgICAgICAgICBNWEZfTUVUQURBVEFfR0VORVJJQ19ERVNDUklQVE9SIChvbGRfZGVzY3JpcHRvcikpIHsKICAgICAgICAgICBwYWNrYWdlLT5kZXNjcmlwdG9yID0KLSAgICAgICAgICAgICAgTVhGX01FVEFEQVRBX0dFTkVSSUNfREVTQ1JJUFRPUiAoY3BhZC0+ZGVzY3JpcHRvcik7CisgICAgICAgICAgICAgIE1YRl9NRVRBREFUQV9HRU5FUklDX0RFU0NSSVBUT1IgKHBhZC0+ZGVzY3JpcHRvcik7CiAgICAgICAgICAgbWVtY3B5ICgmcGFja2FnZS0+ZGVzY3JpcHRvcl91aWQsICZkX2luc3RhbmNlX3VpZCwgMTYpOwogICAgICAgICB9CiAgICAgICB9CiAgICAgfQogICB9CiAKLSAgZ3N0X29iamVjdF91bnJlZiAobXV4KTsKLQogICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KLWdzdF9teGZfbXV4X2hhbmRsZV9zaW5rX2V2ZW50IChHc3RDb2xsZWN0UGFkcyAqIHBhZHMsIEdzdENvbGxlY3REYXRhICogZGF0YSwKLSAgICBHc3RFdmVudCAqIGV2ZW50LCBncG9pbnRlciB1c2VyX2RhdGEpCitnc3RfbXhmX211eF9zaW5rX2V2ZW50IChHc3RBZ2dyZWdhdG9yICogYWdncmVnYXRvciwKKyAgICBHc3RBZ2dyZWdhdG9yUGFkICogYWdncGFkLCBHc3RFdmVudCAqIGV2ZW50KQogewotICBHc3RDYXBzICpjYXBzOworICBHc3RNWEZNdXggKm11eCA9IEdTVF9NWEZfTVVYIChhZ2dyZWdhdG9yKTsKICAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKIAogICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKICAgICBjYXNlIEdTVF9FVkVOVF9UQUc6CiAgICAgICAvKiBUT0RPOiBkbyBzb21ldGhpbmcgd2l0aCB0aGUgdGFncyAqLwogICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfRVZFTlRfU0VHTUVOVDoKLSAgICAgIC8qIFdlIGRvbid0IHN1cHBvcnQgU0VHTUVOVCBldmVudHMgKi8KLSAgICAgIHJldCA9IEZBTFNFOwotICAgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9FVkVOVF9DQVBTOgorICAgIGNhc2UgR1NUX0VWRU5UX0NBUFM6eworICAgICAgR3N0Q2FwcyAqY2FwczsKKwogICAgICAgZ3N0X2V2ZW50X3BhcnNlX2NhcHMgKGV2ZW50LCAmY2Fwcyk7CiAKLSAgICAgIGdzdF9teGZfbXV4X2V2ZW50X2NhcHMgKGRhdGEtPnBhZCwgY2Fwcyk7CisgICAgICByZXQgPSBnc3RfbXhmX211eF9zZXRfY2FwcyAobXV4LCBHU1RfTVhGX01VWF9QQUQgKGFnZ3BhZCksIGNhcHMpOwogCi0gICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CiAgICAgICBicmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgIGJyZWFrOwogICB9CiAKLSAgLyogbm93IEdzdENvbGxlY3RQYWRzIGNhbiB0YWtlIGNhcmUgb2YgdGhlIHJlc3QsIGUuZy4gRU9TICovCisgIC8qIG5vdyBHc3RBZ2dyZWdhdG9yIGNhbiB0YWtlIGNhcmUgb2YgdGhlIHJlc3QsIGUuZy4gRU9TICovCiAgIGlmIChyZXQpCi0gICAgcmV0ID0gZ3N0X2NvbGxlY3RfcGFkc19ldmVudF9kZWZhdWx0IChwYWRzLCBkYXRhLCBldmVudCwgRkFMU0UpOworICAgIHJldCA9CisgICAgICAgIEdTVF9BR0dSRUdBVE9SX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zaW5rX2V2ZW50IChhZ2dyZWdhdG9yLCBhZ2dwYWQsCisgICAgICAgIGV2ZW50KTsKIAogICByZXR1cm4gcmV0OwogfQpAQCAtMzk1LDEzICs0MTAsMTIgQEAKICAgcmV0dXJuIGdfc3RyaW5nX2ZyZWUgKHN0cmluZywgRkFMU0UpOwogfQogCi1zdGF0aWMgR3N0UGFkICoKLWdzdF9teGZfbXV4X3JlcXVlc3RfbmV3X3BhZCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCitzdGF0aWMgR3N0QWdncmVnYXRvclBhZCAqCitnc3RfbXhmX211eF9jcmVhdGVfbmV3X3BhZCAoR3N0QWdncmVnYXRvciAqIGFnZ3JlZ2F0b3IsCiAgICAgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwgY29uc3QgZ2NoYXIgKiBwYWRfbmFtZSwgY29uc3QgR3N0Q2FwcyAqIGNhcHMpCiB7Ci0gIEdzdE1YRk11eCAqbXV4ID0gR1NUX01YRl9NVVggKGVsZW1lbnQpOwotICBHc3RNWEZNdXhQYWQgKmNwYWQ7Ci0gIEdzdFBhZCAqcGFkID0gTlVMTDsKKyAgR3N0TVhGTXV4ICptdXggPSBHU1RfTVhGX01VWCAoYWdncmVnYXRvcik7CisgIEdzdE1YRk11eFBhZCAqcGFkOwogICBndWludCBwYWRfbnVtYmVyOwogICBnY2hhciAqbmFtZSA9IE5VTEw7CiAgIGNvbnN0IE1YRkVzc2VuY2VFbGVtZW50V3JpdGVyICp3cml0ZXI7CkBAIC00MjAsNTggKzQzNCw1MiBAQAogICBuYW1lID0gZ3N0X214Zl9tdXhfY3JlYXRlX3BhZF9uYW1lICh0ZW1wbCwgcGFkX251bWJlcik7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAobXV4LCAiQ3JlYXRpbmcgcGFkICclcyciLCBuYW1lKTsKLSAgcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSAodGVtcGwsIG5hbWUpOworICBwYWQgPQorICAgICAgZ19vYmplY3RfbmV3IChHU1RfVFlQRV9NWEZfTVVYX1BBRCwgIm5hbWUiLCBuYW1lLCAiZGlyZWN0aW9uIiwKKyAgICAgIEdTVF9QQURfU0lOSywgInRlbXBsYXRlIiwgdGVtcGwsIE5VTEwpOwogICBnX2ZyZWUgKG5hbWUpOwotICBjcGFkID0gKEdzdE1YRk11eFBhZCAqKQotICAgICAgZ3N0X2NvbGxlY3RfcGFkc19hZGRfcGFkIChtdXgtPmNvbGxlY3QsIHBhZCwgc2l6ZW9mIChHc3RNWEZNdXhQYWQpLCBOVUxMLAotICAgICAgVFJVRSk7Ci0gIGNwYWQtPmxhc3RfdGltZXN0YW1wID0gMDsKLSAgY3BhZC0+YWRhcHRlciA9IGdzdF9hZGFwdGVyX25ldyAoKTsKLSAgY3BhZC0+d3JpdGVyID0gd3JpdGVyOworICBwYWQtPmxhc3RfdGltZXN0YW1wID0gMDsKKyAgcGFkLT5hZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3ICgpOworICBwYWQtPndyaXRlciA9IHdyaXRlcjsKIAotICBnc3RfcGFkX3VzZV9maXhlZF9jYXBzIChwYWQpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKHBhZCwgVFJVRSk7Ci0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKGVsZW1lbnQsIHBhZCk7CisgIGdzdF9wYWRfdXNlX2ZpeGVkX2NhcHMgKEdTVF9QQURfQ0FTVCAocGFkKSk7CiAKLSAgcmV0dXJuIHBhZDsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9teGZfbXV4X3JlbGVhc2VfcGFkIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0UGFkICogcGFkKQotewotICAvKkdzdE1YRk11eCAqbXV4ID0gR1NUX01YRl9NVVggKEdTVF9QQURfUEFSRU5UIChwYWQpKTsKLSAgICAgR3N0TVhGTXV4UGFkICpjcGFkID0gKEdzdE1YRk11eFBhZCAqKSBnc3RfcGFkX2dldF9lbGVtZW50X3ByaXZhdGUgKHBhZCk7Ci0KLSAgICAgZ19vYmplY3RfdW5yZWYgKGNwYWQtPmFkYXB0ZXIpOwotICAgICBnX2ZyZWUgKGNwYWQtPm1hcHBpbmdfZGF0YSk7Ci0KLSAgICAgZ3N0X2NvbGxlY3RfcGFkc19yZW1vdmVfcGFkIChtdXgtPmNvbGxlY3QsIHBhZCk7Ci0gICAgIGdzdF9lbGVtZW50X3JlbW92ZV9wYWQgKGVsZW1lbnQsIHBhZCk7ICovCisgIHJldHVybiBHU1RfQUdHUkVHQVRPUl9QQUQgKHBhZCk7CiB9CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfbXhmX211eF9jcmVhdGVfbWV0YWRhdGEgKEdzdE1YRk11eCAqIG11eCkKIHsKICAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKLSAgR1NMaXN0ICpsOworICBHTGlzdCAqbDsKICAgR0FycmF5ICp0bXA7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAobXV4LCAiQ3JlYXRpbmcgTVhGIG1ldGFkYXRhIik7CiAKLSAgZm9yIChsID0gbXV4LT5jb2xsZWN0LT5kYXRhOyBsOyBsID0gbC0+bmV4dCkgewotICAgIEdzdE1YRk11eFBhZCAqY3BhZCA9IGwtPmRhdGE7CisgIEdTVF9PQkpFQ1RfTE9DSyAobXV4KTsKKworICBmb3IgKGwgPSBHU1RfRUxFTUVOVF9DQVNUIChtdXgpLT5zaW5rcGFkczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICBHc3RNWEZNdXhQYWQgKnBhZCA9IGwtPmRhdGE7CiAgICAgR3N0Q2FwcyAqY2FwczsKKyAgICBHc3RCdWZmZXIgKmJ1ZmZlcjsKIAotICAgIGlmICghY3BhZCB8fCAhY3BhZC0+ZGVzY3JpcHRvcikKKyAgICBpZiAoIXBhZCB8fCAhcGFkLT5kZXNjcmlwdG9yKSB7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAobXV4KTsKICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgICB9CiAKLSAgICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChjcGFkLT5jb2xsZWN0LnBhZCk7Ci0gICAgaWYgKCFjYXBzKQorICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9QQURfQ0FTVCAocGFkKSk7CisgICAgaWYgKCFjYXBzKSB7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAobXV4KTsKICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgICB9CiAKLSAgICBpZiAoY3BhZC0+d3JpdGVyLT51cGRhdGVfZGVzY3JpcHRvcikKLSAgICAgIGNwYWQtPndyaXRlci0+dXBkYXRlX2Rlc2NyaXB0b3IgKGNwYWQtPmRlc2NyaXB0b3IsCi0gICAgICAgICAgY2FwcywgY3BhZC0+bWFwcGluZ19kYXRhLCBjcGFkLT5jb2xsZWN0LmJ1ZmZlcik7CisgICAgYnVmZmVyID0gZ3N0X2FnZ3JlZ2F0b3JfcGFkX2dldF9idWZmZXIgKEdTVF9BR0dSRUdBVE9SX1BBRCAocGFkKSk7CisgICAgaWYgKHBhZC0+d3JpdGVyLT51cGRhdGVfZGVzY3JpcHRvcikKKyAgICAgIHBhZC0+d3JpdGVyLT51cGRhdGVfZGVzY3JpcHRvciAocGFkLT5kZXNjcmlwdG9yLAorICAgICAgICAgIGNhcHMsIHBhZC0+bWFwcGluZ19kYXRhLCBidWZmZXIpOworICAgIGlmIChidWZmZXIpCisgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwogICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKICAgfQogCkBAIC00OTIsMTcgKzUwMCwxOSBAQAogICAgICAgVFJVRSwgRkFMU0UpOwogCiAgIHRtcCA9IGdfYXJyYXlfbmV3IChGQUxTRSwgRkFMU0UsIHNpemVvZiAoTVhGVUwpKTsKLSAgZm9yIChsID0gbXV4LT5jb2xsZWN0LT5kYXRhOyBsOyBsID0gbC0+bmV4dCkgewotICAgIEdzdE1YRk11eFBhZCAqY3BhZCA9IGwtPmRhdGE7CisgIGZvciAobCA9IEdTVF9FTEVNRU5UX0NBU1QgKG11eCktPnNpbmtwYWRzOyBsOyBsID0gbC0+bmV4dCkgeworICAgIEdzdE1YRk11eFBhZCAqcGFkID0gbC0+ZGF0YTsKICAgICBndWludCBpOwogICAgIGdib29sZWFuIGZvdW5kID0gRkFMU0U7CiAKLSAgICBpZiAoIWNwYWQgfHwgIWNwYWQtPmRlc2NyaXB0b3IgfHwKLSAgICAgICAgbXhmX3VsX2lzX3plcm8gKCZjcGFkLT5kZXNjcmlwdG9yLT5lc3NlbmNlX2NvbnRhaW5lcikpCisgICAgaWYgKCFwYWQgfHwgIXBhZC0+ZGVzY3JpcHRvciB8fAorICAgICAgICBteGZfdWxfaXNfemVybyAoJnBhZC0+ZGVzY3JpcHRvci0+ZXNzZW5jZV9jb250YWluZXIpKSB7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAobXV4KTsKICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgdG1wLT5sZW47IGkrKykgewotICAgICAgaWYgKG14Zl91bF9pc19lcXVhbCAoJmNwYWQtPmRlc2NyaXB0b3ItPmVzc2VuY2VfY29udGFpbmVyLAorICAgICAgaWYgKG14Zl91bF9pc19lcXVhbCAoJnBhZC0+ZGVzY3JpcHRvci0+ZXNzZW5jZV9jb250YWluZXIsCiAgICAgICAgICAgICAgICZnX2FycmF5X2luZGV4ICh0bXAsIE1YRlVMLCBpKSkpIHsKICAgICAgICAgZm91bmQgPSBUUlVFOwogICAgICAgICBicmVhazsKQEAgLTUxMiw3ICs1MjIsNyBAQAogICAgIGlmIChmb3VuZCkKICAgICAgIGNvbnRpbnVlOwogCi0gICAgZ19hcnJheV9hcHBlbmRfdmFsICh0bXAsIGNwYWQtPmRlc2NyaXB0b3ItPmVzc2VuY2VfY29udGFpbmVyKTsKKyAgICBnX2FycmF5X2FwcGVuZF92YWwgKHRtcCwgcGFkLT5kZXNjcmlwdG9yLT5lc3NlbmNlX2NvbnRhaW5lcik7CiAgIH0KICAgbXV4LT5wcmVmYWNlLT5uX2Vzc2VuY2VfY29udGFpbmVycyA9IHRtcC0+bGVuOwogICBtdXgtPnByZWZhY2UtPmVzc2VuY2VfY29udGFpbmVycyA9IChNWEZVTCAqKSBnX2FycmF5X2ZyZWUgKHRtcCwgRkFMU0UpOwpAQCAtNjIzLDE4ICs2MzMsMTggQEAKICAgICAgIG1lbWNweSAoJnAtPnBhcmVudC5wYWNrYWdlX21vZGlmaWVkX2RhdGUsCiAgICAgICAgICAgJm11eC0+cHJlZmFjZS0+bGFzdF9tb2RpZmllZF9kYXRlLCBzaXplb2YgKE1YRlRpbWVzdGFtcCkpOwogCi0gICAgICBwLT5wYXJlbnQubl90cmFja3MgPSBnX3NsaXN0X2xlbmd0aCAobXV4LT5jb2xsZWN0LT5kYXRhKTsKKyAgICAgIHAtPnBhcmVudC5uX3RyYWNrcyA9IEdTVF9FTEVNRU5UX0NBU1QgKG11eCktPm51bXNpbmtwYWRzICsgMTsKICAgICAgIHAtPnBhcmVudC50cmFja3MgPSBnX25ldzAgKE1YRk1ldGFkYXRhVHJhY2sgKiwgcC0+cGFyZW50Lm5fdHJhY2tzKTsKIAotICAgICAgaWYgKHAtPnBhcmVudC5uX3RyYWNrcyA+IDEpIHsKKyAgICAgIGlmIChwLT5wYXJlbnQubl90cmFja3MgPiAyKSB7CiAgICAgICAgIE1YRk1ldGFkYXRhTXVsdGlwbGVEZXNjcmlwdG9yICpkOwogCiAgICAgICAgIHAtPmRlc2NyaXB0b3IgPSAoTVhGTWV0YWRhdGFHZW5lcmljRGVzY3JpcHRvciAqKQogICAgICAgICAgICAgZ19vYmplY3RfbmV3IChNWEZfVFlQRV9NRVRBREFUQV9NVUxUSVBMRV9ERVNDUklQVE9SLCBOVUxMKTsKICAgICAgICAgZCA9IChNWEZNZXRhZGF0YU11bHRpcGxlRGVzY3JpcHRvciAqKSBwLT5kZXNjcmlwdG9yOwotICAgICAgICBkLT5uX3N1Yl9kZXNjcmlwdG9ycyA9IHAtPnBhcmVudC5uX3RyYWNrczsKKyAgICAgICAgZC0+bl9zdWJfZGVzY3JpcHRvcnMgPSBwLT5wYXJlbnQubl90cmFja3MgLSAxOwogICAgICAgICBkLT5zdWJfZGVzY3JpcHRvcnMgPQotICAgICAgICAgICAgZ19uZXcwIChNWEZNZXRhZGF0YUdlbmVyaWNEZXNjcmlwdG9yICosIHAtPnBhcmVudC5uX3RyYWNrcyk7CisgICAgICAgICAgICBnX25ldzAgKE1YRk1ldGFkYXRhR2VuZXJpY0Rlc2NyaXB0b3IgKiwgcC0+cGFyZW50Lm5fdHJhY2tzIC0gMSk7CiAKICAgICAgICAgbXhmX3V1aWRfaW5pdCAoJk1YRl9NRVRBREFUQV9CQVNFIChkKS0+aW5zdGFuY2VfdWlkLCBtdXgtPm1ldGFkYXRhKTsKICAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAobXV4LT5tZXRhZGF0YSwKQEAgLTY0NCwxNSArNjU0LDE4IEBACiAKICAgICAgIC8qIFRyYWNrcyAqLwogICAgICAgewotICAgICAgICBndWludCBuID0gMDsKKyAgICAgICAgZ3VpbnQgbjsKKworICAgICAgICBuID0gMTsKIAogICAgICAgICAvKiBFc3NlbmNlIHRyYWNrcyAqLwotICAgICAgICBmb3IgKGwgPSBtdXgtPmNvbGxlY3QtPmRhdGE7IGw7IGwgPSBsLT5uZXh0KSB7Ci0gICAgICAgICAgR3N0TVhGTXV4UGFkICpjcGFkID0gbC0+ZGF0YTsKKyAgICAgICAgZm9yIChsID0gR1NUX0VMRU1FTlRfQ0FTVCAobXV4KS0+c2lua3BhZHM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgICAgICAgR3N0TVhGTXV4UGFkICpwYWQgPSBsLT5kYXRhOwogICAgICAgICAgIE1YRk1ldGFkYXRhVGltZWxpbmVUcmFjayAqdHJhY2s7CiAgICAgICAgICAgTVhGTWV0YWRhdGFTZXF1ZW5jZSAqc2VxdWVuY2U7CiAgICAgICAgICAgTVhGTWV0YWRhdGFTb3VyY2VDbGlwICpjbGlwOwogICAgICAgICAgIEdzdENhcHMgKmNhcHM7CisgICAgICAgICAgR3N0QnVmZmVyICpidWZmZXI7CiAKICAgICAgICAgICBwLT5wYXJlbnQudHJhY2tzW25dID0gKE1YRk1ldGFkYXRhVHJhY2sgKikKICAgICAgICAgICAgICAgZ19vYmplY3RfbmV3IChNWEZfVFlQRV9NRVRBREFUQV9USU1FTElORV9UUkFDSywgTlVMTCk7CkBAIC02NjMsMTUgKzY3NiwyMSBAQAogICAgICAgICAgICAgICAmTVhGX01FVEFEQVRBX0JBU0UgKHRyYWNrKS0+aW5zdGFuY2VfdWlkLCB0cmFjayk7CiAgICAgICAgICAgbXV4LT5tZXRhZGF0YV9saXN0ID0gZ19saXN0X3ByZXBlbmQgKG11eC0+bWV0YWRhdGFfbGlzdCwgdHJhY2spOwogCi0gICAgICAgICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoY3BhZC0+Y29sbGVjdC5wYWQpOworICAgICAgICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9QQURfQ0FTVCAocGFkKSk7CisgICAgICAgICAgYnVmZmVyID0gZ3N0X2FnZ3JlZ2F0b3JfcGFkX2dldF9idWZmZXIgKEdTVF9BR0dSRUdBVE9SX1BBRCAocGFkKSk7CiAgICAgICAgICAgdHJhY2stPnBhcmVudC50cmFja19pZCA9IG4gKyAxOwogICAgICAgICAgIHRyYWNrLT5wYXJlbnQudHJhY2tfbnVtYmVyID0KLSAgICAgICAgICAgICAgY3BhZC0+d3JpdGVyLT5nZXRfdHJhY2tfbnVtYmVyX3RlbXBsYXRlIChjcGFkLT5kZXNjcmlwdG9yLAotICAgICAgICAgICAgICBjYXBzLCBjcGFkLT5tYXBwaW5nX2RhdGEpOworICAgICAgICAgICAgICBwYWQtPndyaXRlci0+Z2V0X3RyYWNrX251bWJlcl90ZW1wbGF0ZSAocGFkLT5kZXNjcmlwdG9yLAorICAgICAgICAgICAgICBjYXBzLCBwYWQtPm1hcHBpbmdfZGF0YSk7CiAKLSAgICAgICAgICBjcGFkLT53cml0ZXItPmdldF9lZGl0X3JhdGUgKGNwYWQtPmRlc2NyaXB0b3IsCi0gICAgICAgICAgICAgIGNhcHMsIGNwYWQtPm1hcHBpbmdfZGF0YSwKLSAgICAgICAgICAgICAgY3BhZC0+Y29sbGVjdC5idWZmZXIsIHAsIHRyYWNrLCAmdHJhY2stPmVkaXRfcmF0ZSk7CisgICAgICAgICAgLyogRklYTUU6IEFsbCB0cmFja3MgaW4gYSBzb3VyY2UgcGFja2FnZSBtdXN0IGhhdmUgdGhlIHNhbWUgZWRpdAorICAgICAgICAgICAqIHJhdGUhIFRoaXMgbWVhbnMgdGhhdCBpZiB3ZSBoYXZlIGRpZmZlcmVudCBlZGl0IHJhdGVzLCB3ZSBuZWVkIHRvCisgICAgICAgICAgICogbWFrZSB0aGVtIGRpZmZlcmVudCBzb3VyY2UgcGFja2FnZXMgYW5kIGVzc2VuY2UgY29udGFpbmVycyB3aXRoCisgICAgICAgICAgICogYSBkaWZmZXJlbnQgQm9keVNJRCAqLworICAgICAgICAgIHBhZC0+d3JpdGVyLT5nZXRfZWRpdF9yYXRlIChwYWQtPmRlc2NyaXB0b3IsCisgICAgICAgICAgICAgIGNhcHMsIHBhZC0+bWFwcGluZ19kYXRhLCBidWZmZXIsIHAsIHRyYWNrLCAmdHJhY2stPmVkaXRfcmF0ZSk7CisgICAgICAgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CiAgICAgICAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwogCiAgICAgICAgICAgc2VxdWVuY2UgPSB0cmFjay0+cGFyZW50LnNlcXVlbmNlID0gKE1YRk1ldGFkYXRhU2VxdWVuY2UgKikKQEAgLTY4Miw3ICs3MDEsNyBAQAogICAgICAgICAgICAgICAmTVhGX01FVEFEQVRBX0JBU0UgKHNlcXVlbmNlKS0+aW5zdGFuY2VfdWlkLCBzZXF1ZW5jZSk7CiAgICAgICAgICAgbXV4LT5tZXRhZGF0YV9saXN0ID0gZ19saXN0X3ByZXBlbmQgKG11eC0+bWV0YWRhdGFfbGlzdCwgc2VxdWVuY2UpOwogCi0gICAgICAgICAgbWVtY3B5ICgmc2VxdWVuY2UtPmRhdGFfZGVmaW5pdGlvbiwgJmNwYWQtPndyaXRlci0+ZGF0YV9kZWZpbml0aW9uLAorICAgICAgICAgIG1lbWNweSAoJnNlcXVlbmNlLT5kYXRhX2RlZmluaXRpb24sICZwYWQtPndyaXRlci0+ZGF0YV9kZWZpbml0aW9uLAogICAgICAgICAgICAgICAxNik7CiAKICAgICAgICAgICBzZXF1ZW5jZS0+bl9zdHJ1Y3R1cmFsX2NvbXBvbmVudHMgPSAxOwpAQCAtNzAzLDE1ICs3MjIsMTUgQEAKICAgICAgICAgICAgICAgMTYpOwogICAgICAgICAgIGNsaXAtPnN0YXJ0X3Bvc2l0aW9uID0gMDsKIAotICAgICAgICAgIGNwYWQtPnNvdXJjZV9wYWNrYWdlID0gcDsKLSAgICAgICAgICBjcGFkLT5zb3VyY2VfdHJhY2sgPSB0cmFjazsKLSAgICAgICAgICBjcGFkLT5kZXNjcmlwdG9yLT5saW5rZWRfdHJhY2tfaWQgPSBuICsgMTsKLSAgICAgICAgICBpZiAocC0+cGFyZW50Lm5fdHJhY2tzID09IDEpIHsKLSAgICAgICAgICAgIHAtPmRlc2NyaXB0b3IgPSAoTVhGTWV0YWRhdGFHZW5lcmljRGVzY3JpcHRvciAqKSBjcGFkLT5kZXNjcmlwdG9yOworICAgICAgICAgIHBhZC0+c291cmNlX3BhY2thZ2UgPSBwOworICAgICAgICAgIHBhZC0+c291cmNlX3RyYWNrID0gdHJhY2s7CisgICAgICAgICAgcGFkLT5kZXNjcmlwdG9yLT5saW5rZWRfdHJhY2tfaWQgPSBuICsgMTsKKyAgICAgICAgICBpZiAocC0+cGFyZW50Lm5fdHJhY2tzID09IDIpIHsKKyAgICAgICAgICAgIHAtPmRlc2NyaXB0b3IgPSAoTVhGTWV0YWRhdGFHZW5lcmljRGVzY3JpcHRvciAqKSBwYWQtPmRlc2NyaXB0b3I7CiAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE1YRl9NRVRBREFUQV9NVUxUSVBMRV9ERVNDUklQVE9SIChwLT4KLSAgICAgICAgICAgICAgICBkZXNjcmlwdG9yKS0+c3ViX2Rlc2NyaXB0b3JzW25dID0KLSAgICAgICAgICAgICAgICAoTVhGTWV0YWRhdGFHZW5lcmljRGVzY3JpcHRvciAqKSBjcGFkLT5kZXNjcmlwdG9yOworICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IpLT5zdWJfZGVzY3JpcHRvcnNbbiAtIDFdID0KKyAgICAgICAgICAgICAgICAoTVhGTWV0YWRhdGFHZW5lcmljRGVzY3JpcHRvciAqKSBwYWQtPmRlc2NyaXB0b3I7CiAgICAgICAgICAgfQogCiAgICAgICAgICAgbisrOwpAQCAtNzQzLDcgKzc2Miw3IEBACiAgICAgICBtZW1jcHkgKCZwLT5wYWNrYWdlX21vZGlmaWVkX2RhdGUsICZtdXgtPnByZWZhY2UtPmxhc3RfbW9kaWZpZWRfZGF0ZSwKICAgICAgICAgICBzaXplb2YgKE1YRlRpbWVzdGFtcCkpOwogCi0gICAgICBwLT5uX3RyYWNrcyA9IGdfc2xpc3RfbGVuZ3RoIChtdXgtPmNvbGxlY3QtPmRhdGEpICsgMTsKKyAgICAgIHAtPm5fdHJhY2tzID0gR1NUX0VMRU1FTlRfQ0FTVCAobXV4KS0+bnVtc2lua3BhZHMgKyAxOwogICAgICAgcC0+dHJhY2tzID0gZ19uZXcwIChNWEZNZXRhZGF0YVRyYWNrICosIHAtPm5fdHJhY2tzKTsKIAogICAgICAgLyogVHJhY2tzICovCkBAIC03NTIsOSArNzcxLDEwIEBACiAKICAgICAgICAgbiA9IDE7CiAgICAgICAgIC8qIEVzc2VuY2UgdHJhY2tzICovCi0gICAgICAgIGZvciAobCA9IG11eC0+Y29sbGVjdC0+ZGF0YTsgbDsgbCA9IGwtPm5leHQpIHsKLSAgICAgICAgICBHc3RNWEZNdXhQYWQgKmNwYWQgPSBsLT5kYXRhOworICAgICAgICBmb3IgKGwgPSBHU1RfRUxFTUVOVF9DQVNUIChtdXgpLT5zaW5rcGFkczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICAgICAgICBHc3RNWEZNdXhQYWQgKnBhZCA9IGwtPmRhdGE7CiAgICAgICAgICAgR3N0Q2FwcyAqY2FwczsKKyAgICAgICAgICBHc3RCdWZmZXIgKmJ1ZmZlcjsKICAgICAgICAgICBNWEZNZXRhZGF0YVNvdXJjZVBhY2thZ2UgKnNvdXJjZV9wYWNrYWdlOwogICAgICAgICAgIE1YRk1ldGFkYXRhVGltZWxpbmVUcmFjayAqdHJhY2ssICpzb3VyY2VfdHJhY2s7CiAgICAgICAgICAgTVhGTWV0YWRhdGFTZXF1ZW5jZSAqc2VxdWVuY2U7CkBAIC03NjIsOCArNzgyLDcgQEAKIAogICAgICAgICAgIHNvdXJjZV9wYWNrYWdlID0gTVhGX01FVEFEQVRBX1NPVVJDRV9QQUNLQUdFIChjc3RvcmFnZS0+cGFja2FnZXNbMV0pOwogICAgICAgICAgIHNvdXJjZV90cmFjayA9Ci0gICAgICAgICAgICAgIE1YRl9NRVRBREFUQV9USU1FTElORV9UUkFDSyAoc291cmNlX3BhY2thZ2UtPnBhcmVudC50cmFja3NbbiAtCi0gICAgICAgICAgICAgICAgICAxXSk7CisgICAgICAgICAgICAgIE1YRl9NRVRBREFUQV9USU1FTElORV9UUkFDSyAoc291cmNlX3BhY2thZ2UtPnBhcmVudC50cmFja3Nbbl0pOwogCiAgICAgICAgICAgcC0+dHJhY2tzW25dID0gKE1YRk1ldGFkYXRhVHJhY2sgKikKICAgICAgICAgICAgICAgZ19vYmplY3RfbmV3IChNWEZfVFlQRV9NRVRBREFUQV9USU1FTElORV9UUkFDSywgTlVMTCk7CkBAIC03NzcsMTEgKzc5NiwxMyBAQAogICAgICAgICAgIHRyYWNrLT5wYXJlbnQudHJhY2tfaWQgPSBuICsgMTsKICAgICAgICAgICB0cmFjay0+cGFyZW50LnRyYWNrX251bWJlciA9IDA7CiAKLSAgICAgICAgICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChjcGFkLT5jb2xsZWN0LnBhZCk7Ci0gICAgICAgICAgY3BhZC0+d3JpdGVyLT5nZXRfZWRpdF9yYXRlIChjcGFkLT5kZXNjcmlwdG9yLAotICAgICAgICAgICAgICBjYXBzLCBjcGFkLT5tYXBwaW5nX2RhdGEsCi0gICAgICAgICAgICAgIGNwYWQtPmNvbGxlY3QuYnVmZmVyLCBzb3VyY2VfcGFja2FnZSwgc291cmNlX3RyYWNrLAotICAgICAgICAgICAgICAmdHJhY2stPmVkaXRfcmF0ZSk7CisgICAgICAgICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoR1NUX1BBRF9DQVNUIChwYWQpKTsKKyAgICAgICAgICBidWZmZXIgPSBnc3RfYWdncmVnYXRvcl9wYWRfZ2V0X2J1ZmZlciAoR1NUX0FHR1JFR0FUT1JfUEFEIChwYWQpKTsKKyAgICAgICAgICBwYWQtPndyaXRlci0+Z2V0X2VkaXRfcmF0ZSAocGFkLT5kZXNjcmlwdG9yLAorICAgICAgICAgICAgICBjYXBzLCBwYWQtPm1hcHBpbmdfZGF0YSwKKyAgICAgICAgICAgICAgYnVmZmVyLCBzb3VyY2VfcGFja2FnZSwgc291cmNlX3RyYWNrLCAmdHJhY2stPmVkaXRfcmF0ZSk7CisgICAgICAgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CiAgICAgICAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwogCiAgICAgICAgICAgaWYgKHRyYWNrLT5lZGl0X3JhdGUubiAhPSBzb3VyY2VfdHJhY2stPmVkaXRfcmF0ZS5uIHx8CkBAIC03OTIsNiArODEzLDcgQEAKIAogICAgICAgICAgIGlmICh0cmFjay0+ZWRpdF9yYXRlLmQgPD0gMCB8fCB0cmFjay0+ZWRpdF9yYXRlLm4gPD0gMCkgewogICAgICAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAobXV4LCAiSW52YWxpZCBlZGl0IHJhdGUiKTsKKyAgICAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChtdXgpOwogICAgICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICAgICAgICAgIH0KIApAQCAtODEwLDcgKzgzMiw3IEBACiAgICAgICAgICAgICAgICZNWEZfTUVUQURBVEFfQkFTRSAoc2VxdWVuY2UpLT5pbnN0YW5jZV91aWQsIHNlcXVlbmNlKTsKICAgICAgICAgICBtdXgtPm1ldGFkYXRhX2xpc3QgPSBnX2xpc3RfcHJlcGVuZCAobXV4LT5tZXRhZGF0YV9saXN0LCBzZXF1ZW5jZSk7CiAKLSAgICAgICAgICBtZW1jcHkgKCZzZXF1ZW5jZS0+ZGF0YV9kZWZpbml0aW9uLCAmY3BhZC0+d3JpdGVyLT5kYXRhX2RlZmluaXRpb24sCisgICAgICAgICAgbWVtY3B5ICgmc2VxdWVuY2UtPmRhdGFfZGVmaW5pdGlvbiwgJnBhZC0+d3JpdGVyLT5kYXRhX2RlZmluaXRpb24sCiAgICAgICAgICAgICAgIDE2KTsKICAgICAgICAgICBzZXF1ZW5jZS0+bl9zdHJ1Y3R1cmFsX2NvbXBvbmVudHMgPSAxOwogICAgICAgICAgIHNlcXVlbmNlLT5zdHJ1Y3R1cmFsX2NvbXBvbmVudHMgPQpAQCAtODMyLDcgKzg1NCw3IEBACiAKICAgICAgICAgICBtZW1jcHkgKCZjbGlwLT5zb3VyY2VfcGFja2FnZV9pZCwgJmNzdG9yYWdlLT5wYWNrYWdlc1sxXS0+cGFja2FnZV91aWQsCiAgICAgICAgICAgICAgIDMyKTsKLSAgICAgICAgICBjbGlwLT5zb3VyY2VfdHJhY2tfaWQgPSBuOworICAgICAgICAgIGNsaXAtPnNvdXJjZV90cmFja19pZCA9IG4gKyAxOwogCiAgICAgICAgICAgbisrOwogICAgICAgICB9CkBAIC05MDIsNyArOTI0LDcxIEBACiAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChpID0gMDsgaSA8IGNzdG9yYWdlLT5wYWNrYWdlc1sxXS0+bl90cmFja3M7IGkrKykgeworICAgIC8qIFRpbWVjb2RlIHRyYWNrICovCisgICAgeworICAgICAgTVhGTWV0YWRhdGFTb3VyY2VQYWNrYWdlICpwOworICAgICAgTVhGTWV0YWRhdGFUaW1lbGluZVRyYWNrICp0cmFjazsKKyAgICAgIE1YRk1ldGFkYXRhU2VxdWVuY2UgKnNlcXVlbmNlOworICAgICAgTVhGTWV0YWRhdGFUaW1lY29kZUNvbXBvbmVudCAqY29tcG9uZW50OworICAgICAgZ3VpbnQgbiA9IDA7CisKKyAgICAgIHAgPSAoTVhGTWV0YWRhdGFTb3VyY2VQYWNrYWdlICopIGNzdG9yYWdlLT5wYWNrYWdlc1sxXTsKKworICAgICAgcC0+cGFyZW50LnRyYWNrc1tuXSA9IChNWEZNZXRhZGF0YVRyYWNrICopCisgICAgICAgICAgZ19vYmplY3RfbmV3IChNWEZfVFlQRV9NRVRBREFUQV9USU1FTElORV9UUkFDSywgTlVMTCk7CisgICAgICB0cmFjayA9IChNWEZNZXRhZGF0YVRpbWVsaW5lVHJhY2sgKikgcC0+cGFyZW50LnRyYWNrc1tuXTsKKyAgICAgIG14Zl91dWlkX2luaXQgKCZNWEZfTUVUQURBVEFfQkFTRSAodHJhY2spLT5pbnN0YW5jZV91aWQsIG11eC0+bWV0YWRhdGEpOworICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAobXV4LT5tZXRhZGF0YSwKKyAgICAgICAgICAmTVhGX01FVEFEQVRBX0JBU0UgKHRyYWNrKS0+aW5zdGFuY2VfdWlkLCB0cmFjayk7CisgICAgICBtdXgtPm1ldGFkYXRhX2xpc3QgPSBnX2xpc3RfcHJlcGVuZCAobXV4LT5tZXRhZGF0YV9saXN0LCB0cmFjayk7CisKKyAgICAgIHRyYWNrLT5wYXJlbnQudHJhY2tfaWQgPSBuICsgMTsKKyAgICAgIHRyYWNrLT5wYXJlbnQudHJhY2tfbnVtYmVyID0gMDsKKyAgICAgIHRyYWNrLT5wYXJlbnQudHJhY2tfbmFtZSA9IGdfc3RyZHVwICgiVGltZWNvZGUgdHJhY2siKTsKKyAgICAgIC8qIEZJWE1FOiBJcyB0aGlzIGNvcnJlY3Q/ICovCisgICAgICBtZW1jcHkgKCZ0cmFjay0+ZWRpdF9yYXRlLCAmbXV4LT5taW5fZWRpdF9yYXRlLCBzaXplb2YgKE1YRkZyYWN0aW9uKSk7CisKKyAgICAgIHNlcXVlbmNlID0gdHJhY2stPnBhcmVudC5zZXF1ZW5jZSA9IChNWEZNZXRhZGF0YVNlcXVlbmNlICopCisgICAgICAgICAgZ19vYmplY3RfbmV3IChNWEZfVFlQRV9NRVRBREFUQV9TRVFVRU5DRSwgTlVMTCk7CisgICAgICBteGZfdXVpZF9pbml0ICgmTVhGX01FVEFEQVRBX0JBU0UgKHNlcXVlbmNlKS0+aW5zdGFuY2VfdWlkLAorICAgICAgICAgIG11eC0+bWV0YWRhdGEpOworICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAobXV4LT5tZXRhZGF0YSwKKyAgICAgICAgICAmTVhGX01FVEFEQVRBX0JBU0UgKHNlcXVlbmNlKS0+aW5zdGFuY2VfdWlkLCBzZXF1ZW5jZSk7CisgICAgICBtdXgtPm1ldGFkYXRhX2xpc3QgPSBnX2xpc3RfcHJlcGVuZCAobXV4LT5tZXRhZGF0YV9saXN0LCBzZXF1ZW5jZSk7CisKKyAgICAgIG1lbWNweSAoJnNlcXVlbmNlLT5kYXRhX2RlZmluaXRpb24sCisgICAgICAgICAgbXhmX21ldGFkYXRhX3RyYWNrX2lkZW50aWZpZXJfZ2V0CisgICAgICAgICAgKE1YRl9NRVRBREFUQV9UUkFDS19USU1FQ09ERV8xMk1fSU5BQ1RJVkUpLCAxNik7CisKKyAgICAgIHNlcXVlbmNlLT5uX3N0cnVjdHVyYWxfY29tcG9uZW50cyA9IDE7CisgICAgICBzZXF1ZW5jZS0+c3RydWN0dXJhbF9jb21wb25lbnRzID0KKyAgICAgICAgICBnX25ldzAgKE1YRk1ldGFkYXRhU3RydWN0dXJhbENvbXBvbmVudCAqLCAxKTsKKworICAgICAgY29tcG9uZW50ID0gKE1YRk1ldGFkYXRhVGltZWNvZGVDb21wb25lbnQgKikKKyAgICAgICAgICBnX29iamVjdF9uZXcgKE1YRl9UWVBFX01FVEFEQVRBX1RJTUVDT0RFX0NPTVBPTkVOVCwgTlVMTCk7CisgICAgICBzZXF1ZW5jZS0+c3RydWN0dXJhbF9jb21wb25lbnRzWzBdID0KKyAgICAgICAgICAoTVhGTWV0YWRhdGFTdHJ1Y3R1cmFsQ29tcG9uZW50ICopIGNvbXBvbmVudDsKKyAgICAgIG14Zl91dWlkX2luaXQgKCZNWEZfTUVUQURBVEFfQkFTRSAoY29tcG9uZW50KS0+aW5zdGFuY2VfdWlkLAorICAgICAgICAgIG11eC0+bWV0YWRhdGEpOworICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAobXV4LT5tZXRhZGF0YSwKKyAgICAgICAgICAmTVhGX01FVEFEQVRBX0JBU0UgKGNvbXBvbmVudCktPmluc3RhbmNlX3VpZCwgY29tcG9uZW50KTsKKyAgICAgIG11eC0+bWV0YWRhdGFfbGlzdCA9IGdfbGlzdF9wcmVwZW5kIChtdXgtPm1ldGFkYXRhX2xpc3QsIGNvbXBvbmVudCk7CisKKyAgICAgIG1lbWNweSAoJmNvbXBvbmVudC0+cGFyZW50LmRhdGFfZGVmaW5pdGlvbiwKKyAgICAgICAgICAmc2VxdWVuY2UtPmRhdGFfZGVmaW5pdGlvbiwgMTYpOworCisgICAgICBjb21wb25lbnQtPnN0YXJ0X3RpbWVjb2RlID0gMDsKKyAgICAgIGlmICh0cmFjay0+ZWRpdF9yYXRlLmQgPT0gMCkKKyAgICAgICAgY29tcG9uZW50LT5yb3VuZGVkX3RpbWVjb2RlX2Jhc2UgPSAxOworICAgICAgZWxzZQorICAgICAgICBjb21wb25lbnQtPnJvdW5kZWRfdGltZWNvZGVfYmFzZSA9CisgICAgICAgICAgICAoKChnZG91YmxlKSB0cmFjay0+ZWRpdF9yYXRlLm4pIC8KKyAgICAgICAgICAgICgoZ2RvdWJsZSkgdHJhY2stPmVkaXRfcmF0ZS5kKSArIDAuNSk7CisgICAgICAvKiBUT0RPOiBkcm9wIGZyYW1lICovCisgICAgfQorCisKKyAgICBmb3IgKGkgPSAxOyBpIDwgY3N0b3JhZ2UtPnBhY2thZ2VzWzFdLT5uX3RyYWNrczsgaSsrKSB7CiAgICAgICBNWEZNZXRhZGF0YVRyYWNrICp0cmFjayA9IGNzdG9yYWdlLT5wYWNrYWdlc1sxXS0+dHJhY2tzW2ldOwogICAgICAgZ3VpbnQgajsKICAgICAgIGd1aW50MzIgdGVtcGw7CkBAIC05MTQsNyArMTAwMCw3IEBACiAgICAgICB0ZW1wbCA9IHRyYWNrLT50cmFja19udW1iZXI7CiAgICAgICBuX3R5cGUgPSAwOwogCi0gICAgICBmb3IgKGogPSAwOyBqIDwgY3N0b3JhZ2UtPnBhY2thZ2VzWzFdLT5uX3RyYWNrczsgaisrKSB7CisgICAgICBmb3IgKGogPSAxOyBqIDwgY3N0b3JhZ2UtPnBhY2thZ2VzWzFdLT5uX3RyYWNrczsgaisrKSB7CiAgICAgICAgIE1YRk1ldGFkYXRhVHJhY2sgKnRtcCA9IGNzdG9yYWdlLT5wYWNrYWdlc1sxXS0+dHJhY2tzW2pdOwogCiAgICAgICAgIGlmICh0bXAtPnRyYWNrX251bWJlciA9PSB0ZW1wbCkgewpAQCAtOTIzLDcgKzEwMDksNyBAQAogICAgICAgfQogCiAgICAgICBuID0gMDsKLSAgICAgIGZvciAoaiA9IDA7IGogPCBjc3RvcmFnZS0+cGFja2FnZXNbMV0tPm5fdHJhY2tzOyBqKyspIHsKKyAgICAgIGZvciAoaiA9IDE7IGogPCBjc3RvcmFnZS0+cGFja2FnZXNbMV0tPm5fdHJhY2tzOyBqKyspIHsKICAgICAgICAgTVhGTWV0YWRhdGFUcmFjayAqdG1wID0gY3N0b3JhZ2UtPnBhY2thZ2VzWzFdLT50cmFja3Nbal07CiAKICAgICAgICAgaWYgKHRtcC0+dHJhY2tfbnVtYmVyID09IHRlbXBsKSB7CkBAIC05NDksNyArMTAzNSw3IEBACiAKICAgICBjc3RvcmFnZS0+ZXNzZW5jZV9jb250YWluZXJfZGF0YVswXS0+bGlua2VkX3BhY2thZ2UgPQogICAgICAgICBNWEZfTUVUQURBVEFfU09VUkNFX1BBQ0tBR0UgKGNzdG9yYWdlLT5wYWNrYWdlc1sxXSk7Ci0gICAgY3N0b3JhZ2UtPmVzc2VuY2VfY29udGFpbmVyX2RhdGFbMF0tPmluZGV4X3NpZCA9IDA7CisgICAgY3N0b3JhZ2UtPmVzc2VuY2VfY29udGFpbmVyX2RhdGFbMF0tPmluZGV4X3NpZCA9IDI7CiAgICAgY3N0b3JhZ2UtPmVzc2VuY2VfY29udGFpbmVyX2RhdGFbMF0tPmJvZHlfc2lkID0gMTsKICAgfQogCkBAIC05ODgsNiArMTA3NCw4IEBACiAgICAgfQogICB9CiAKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKG11eCk7CisKICAgbXV4LT5tZXRhZGF0YV9saXN0ID0gZ19saXN0X3JldmVyc2UgKG11eC0+bWV0YWRhdGFfbGlzdCk7CiAKICAgcmV0dXJuIHJldDsKQEAgLTk5Niw3ICsxMDg0LDcgQEAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfbXhmX211eF9pbml0X3BhcnRpdGlvbl9wYWNrIChHc3RNWEZNdXggKiBtdXgpCiB7Ci0gIEdTTGlzdCAqbDsKKyAgR0xpc3QgKmw7CiAgIGd1aW50IGkgPSAwOwogCiAgIG14Zl9wYXJ0aXRpb25fcGFja19yZXNldCAoJm11eC0+cGFydGl0aW9uKTsKQEAgLTEwMDQsNyArMTA5Miw3IEBACiAgIG11eC0+cGFydGl0aW9uLmNsb3NlZCA9IG11eC0+cGFydGl0aW9uLmNvbXBsZXRlID0gRkFMU0U7CiAgIG11eC0+cGFydGl0aW9uLm1ham9yX3ZlcnNpb24gPSAweDAwMDE7CiAgIG11eC0+cGFydGl0aW9uLm1pbm9yX3ZlcnNpb24gPSAweDAwMDI7Ci0gIG11eC0+cGFydGl0aW9uLmthZ19zaXplID0gMDsKKyAgbXV4LT5wYXJ0aXRpb24ua2FnX3NpemUgPSAxOwogICBtdXgtPnBhcnRpdGlvbi50aGlzX3BhcnRpdGlvbiA9IDA7CiAgIG11eC0+cGFydGl0aW9uLnByZXZfcGFydGl0aW9uID0gMDsKICAgbXV4LT5wYXJ0aXRpb24uZm9vdGVyX3BhcnRpdGlvbiA9IDA7CkBAIC0xMDE3LDE3ICsxMTA1LDE4IEBACiAgIG1lbWNweSAoJm11eC0+cGFydGl0aW9uLm9wZXJhdGlvbmFsX3BhdHRlcm4sCiAgICAgICAmbXV4LT5wcmVmYWNlLT5vcGVyYXRpb25hbF9wYXR0ZXJuLCAxNik7CiAKLSAgbXV4LT5wYXJ0aXRpb24ubl9lc3NlbmNlX2NvbnRhaW5lcnMgPSBnX3NsaXN0X2xlbmd0aCAobXV4LT5jb2xsZWN0LT5kYXRhKTsKKyAgR1NUX09CSkVDVF9MT0NLIChtdXgpOworICBtdXgtPnBhcnRpdGlvbi5uX2Vzc2VuY2VfY29udGFpbmVycyA9IEdTVF9FTEVNRU5UX0NBU1QgKG11eCktPm51bXNpbmtwYWRzOwogICBtdXgtPnBhcnRpdGlvbi5lc3NlbmNlX2NvbnRhaW5lcnMgPQogICAgICAgZ19uZXcwIChNWEZVTCwgbXV4LT5wYXJ0aXRpb24ubl9lc3NlbmNlX2NvbnRhaW5lcnMpOwogCi0gIGZvciAobCA9IG11eC0+Y29sbGVjdC0+ZGF0YTsgbDsgbCA9IGwtPm5leHQpIHsKLSAgICBHc3RNWEZNdXhQYWQgKmNwYWQgPSBsLT5kYXRhOworICBmb3IgKGwgPSBHU1RfRUxFTUVOVF9DQVNUIChtdXgpLT5zaW5rcGFkczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICBHc3RNWEZNdXhQYWQgKnBhZCA9IGwtPmRhdGE7CiAgICAgZ3VpbnQgajsKICAgICBnYm9vbGVhbiBmb3VuZCA9IEZBTFNFOwogCiAgICAgZm9yIChqID0gMDsgaiA8PSBpOyBqKyspIHsKLSAgICAgIGlmIChteGZfdWxfaXNfZXF1YWwgKCZjcGFkLT5kZXNjcmlwdG9yLT5lc3NlbmNlX2NvbnRhaW5lciwKKyAgICAgIGlmIChteGZfdWxfaXNfZXF1YWwgKCZwYWQtPmRlc2NyaXB0b3ItPmVzc2VuY2VfY29udGFpbmVyLAogICAgICAgICAgICAgICAmbXV4LT5wYXJ0aXRpb24uZXNzZW5jZV9jb250YWluZXJzW2pdKSkgewogICAgICAgICBmb3VuZCA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwpAQCAtMTAzOCwxMCArMTEyNywxMSBAQAogICAgICAgY29udGludWU7CiAKICAgICBtZW1jcHkgKCZtdXgtPnBhcnRpdGlvbi5lc3NlbmNlX2NvbnRhaW5lcnNbaV0sCi0gICAgICAgICZjcGFkLT5kZXNjcmlwdG9yLT5lc3NlbmNlX2NvbnRhaW5lciwgMTYpOworICAgICAgICAmcGFkLT5kZXNjcmlwdG9yLT5lc3NlbmNlX2NvbnRhaW5lciwgMTYpOwogICAgIGkrKzsKICAgfQogICBtdXgtPnBhcnRpdGlvbi5uX2Vzc2VuY2VfY29udGFpbmVycyA9IGk7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChtdXgpOwogCiAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KQEAgLTEwOTYsOTMgKzExODYsMTM4IEBACiB9CiAKIHN0YXRpYyBjb25zdCBndWludDggX2djX2Vzc2VuY2VfZWxlbWVudF91bFtdID0gewotICAweDA2LCAweDBlLCAweDJiLCAweDM0LCAweDAxLCAweDAyLCAweDAxLCAweDAwLAorICAweDA2LCAweDBlLCAweDJiLCAweDM0LCAweDAxLCAweDAyLCAweDAxLCAweDAxLAogICAweDBkLCAweDAxLCAweDAzLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDAwCiB9OwogCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X214Zl9tdXhfaGFuZGxlX2J1ZmZlciAoR3N0TVhGTXV4ICogbXV4LCBHc3RNWEZNdXhQYWQgKiBjcGFkKQorZ3N0X214Zl9tdXhfaGFuZGxlX2J1ZmZlciAoR3N0TVhGTXV4ICogbXV4LCBHc3RNWEZNdXhQYWQgKiBwYWQpCiB7Ci0gIEdzdEJ1ZmZlciAqYnVmID0gTlVMTDsKKyAgR3N0QnVmZmVyICpidWYgPSBnc3RfYWdncmVnYXRvcl9wYWRfZ2V0X2J1ZmZlciAoR1NUX0FHR1JFR0FUT1JfUEFEIChwYWQpKTsKICAgR3N0QnVmZmVyICpvdXRidWYgPSBOVUxMOwotICBHc3RCdWZmZXIgKnBhY2tldDsKICAgR3N0TWFwSW5mbyBtYXA7Ci0gIEdzdE1hcEluZm8gcmVhZG1hcDsKKyAgZ3NpemUgYnVmX3NpemU7CiAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7CiAgIGd1aW50OCBzbGVuLCBiZXJbOV07Ci0gIGdib29sZWFuIGZsdXNoID0gKChjcGFkLT5jb2xsZWN0LnN0YXRlICYgR1NUX0NPTExFQ1RfUEFEU19TVEFURV9FT1MpCi0gICAgICAmJiAhY3BhZC0+aGF2ZV9jb21wbGV0ZV9lZGl0X3VuaXQgJiYgY3BhZC0+Y29sbGVjdC5idWZmZXIgPT0gTlVMTCk7CisgIGdib29sZWFuIGZsdXNoID0gZ3N0X2FnZ3JlZ2F0b3JfcGFkX2lzX2VvcyAoR1NUX0FHR1JFR0FUT1JfUEFEIChwYWQpKQorICAgICAgJiYgIXBhZC0+aGF2ZV9jb21wbGV0ZV9lZGl0X3VuaXQgJiYgYnVmID09IE5VTEw7CisgIGdib29sZWFuIGlzX2tleWZyYW1lID0gYnVmID8KKyAgICAgICFHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUIChidWYsIEdTVF9CVUZGRVJfRkxBR19ERUxUQV9VTklUKSA6IFRSVUU7CiAKLSAgaWYgKGNwYWQtPmhhdmVfY29tcGxldGVfZWRpdF91bml0KSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoY3BhZC0+Y29sbGVjdC5wYWQsCisgIGlmIChwYWQtPmhhdmVfY29tcGxldGVfZWRpdF91bml0KSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLAogICAgICAgICAiSGFuZGxpbmcgcmVtYWluaW5nIGJ1ZmZlciBmb3IgdHJhY2sgJXUgYXQgcG9zaXRpb24gJSIgR19HSU5UNjRfRk9STUFULAotICAgICAgICBjcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19pZCwgY3BhZC0+cG9zKTsKKyAgICAgICAgcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19pZCwgcGFkLT5wb3MpOworICAgIGlmIChidWYpCisgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwogICAgIGJ1ZiA9IE5VTEw7CiAgIH0gZWxzZSBpZiAoIWZsdXNoKSB7Ci0gICAgYnVmID0gZ3N0X2NvbGxlY3RfcGFkc19wb3AgKG11eC0+Y29sbGVjdCwgJmNwYWQtPmNvbGxlY3QpOworICAgIGlmIChidWYpCisgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOworICAgIGJ1ZiA9IGdzdF9hZ2dyZWdhdG9yX3BhZF9zdGVhbF9idWZmZXIgKEdTVF9BR0dSRUdBVE9SX1BBRCAocGFkKSk7CiAgIH0KIAogICBpZiAoYnVmKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoY3BhZC0+Y29sbGVjdC5wYWQsCisgICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLAogICAgICAgICAiSGFuZGxpbmcgYnVmZmVyIG9mIHNpemUgJSIgR19HU0laRV9GT1JNQVQgIiBmb3IgdHJhY2sgJXUgYXQgcG9zaXRpb24gJSIKICAgICAgICAgR19HSU5UNjRfRk9STUFULCBnc3RfYnVmZmVyX2dldF9zaXplIChidWYpLAotICAgICAgICBjcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19pZCwgY3BhZC0+cG9zKTsKKyAgICAgICAgcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19pZCwgcGFkLT5wb3MpOwogICB9IGVsc2UgewogICAgIGZsdXNoID0gVFJVRTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChjcGFkLT5jb2xsZWN0LnBhZCwKKyAgICBHU1RfREVCVUdfT0JKRUNUIChwYWQsCiAgICAgICAgICJGbHVzaGluZyBmb3IgdHJhY2sgJXUgYXQgcG9zaXRpb24gJSIgR19HSU5UNjRfRk9STUFULAotICAgICAgICBjcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19pZCwgY3BhZC0+cG9zKTsKKyAgICAgICAgcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19pZCwgcGFkLT5wb3MpOwogICB9CiAKLSAgcmV0ID0gY3BhZC0+d3JpdGVfZnVuYyAoYnVmLAotICAgICAgY3BhZC0+bWFwcGluZ19kYXRhLCBjcGFkLT5hZGFwdGVyLCAmb3V0YnVmLCBmbHVzaCk7CisgIHJldCA9IHBhZC0+d3JpdGVfZnVuYyAoYnVmLCBwYWQtPm1hcHBpbmdfZGF0YSwgcGFkLT5hZGFwdGVyLCAmb3V0YnVmLCBmbHVzaCk7CiAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0sgJiYgcmV0ICE9IEdTVF9GTE9XX0NVU1RPTV9TVUNDRVNTKSB7Ci0gICAgR1NUX0VSUk9SX09CSkVDVCAoY3BhZC0+Y29sbGVjdC5wYWQsCisgICAgR1NUX0VSUk9SX09CSkVDVCAocGFkLAogICAgICAgICAiRmFpbGVkIGhhbmRsaW5nIGJ1ZmZlciBmb3IgdHJhY2sgJXUsIHJlYXNvbiAlcyIsCi0gICAgICAgIGNwYWQtPnNvdXJjZV90cmFjay0+cGFyZW50LnRyYWNrX2lkLCBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSk7CisgICAgICAgIHBhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQudHJhY2tfaWQsIGdzdF9mbG93X2dldF9uYW1lIChyZXQpKTsKICAgICByZXR1cm4gcmV0OwogICB9CiAKICAgaWYgKHJldCA9PSBHU1RfRkxPV19DVVNUT01fU1VDQ0VTUykgewotICAgIGNwYWQtPmhhdmVfY29tcGxldGVfZWRpdF91bml0ID0gVFJVRTsKKyAgICBwYWQtPmhhdmVfY29tcGxldGVfZWRpdF91bml0ID0gVFJVRTsKICAgICByZXQgPSBHU1RfRkxPV19PSzsKICAgfSBlbHNlIHsKLSAgICBjcGFkLT5oYXZlX2NvbXBsZXRlX2VkaXRfdW5pdCA9IEZBTFNFOworICAgIHBhZC0+aGF2ZV9jb21wbGV0ZV9lZGl0X3VuaXQgPSBGQUxTRTsKICAgfQogCiAgIGJ1ZiA9IG91dGJ1ZjsKICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgIHJldHVybiByZXQ7CiAKLSAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJnJlYWRtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gIHNsZW4gPSBteGZfYmVyX2VuY29kZV9zaXplIChyZWFkbWFwLnNpemUsIGJlcik7Ci0gIHBhY2tldCA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAoMTYgKyBzbGVuICsgcmVhZG1hcC5zaXplKTsKLSAgZ3N0X2J1ZmZlcl9tYXAgKHBhY2tldCwgJm1hcCwgR1NUX01BUF9XUklURSk7CisgIC8qIFdlIGN1cnJlbnRseSBvbmx5IGluZGV4IHRoZSBmaXJzdCBlc3NlbmNlIHN0cmVhbSAqLworICBpZiAocGFkID09IChHc3RNWEZNdXhQYWQgKikgR1NUX0VMRU1FTlRfQ0FTVCAobXV4KS0+c2lua3BhZHMtPmRhdGEpIHsKKyAgICBNWEZJbmRleFRhYmxlU2VnbWVudCAqc2VnbWVudDsKKyAgICBjb25zdCBnaW50IG1heF9zZWdtZW50X3NpemUgPSBHX01BWFVJTlQxNiAvIDExOworCisgICAgaWYgKG11eC0+aW5kZXhfdGFibGUtPmxlbiA9PSAwIHx8CisgICAgICAgIGdfYXJyYXlfaW5kZXggKG11eC0+aW5kZXhfdGFibGUsIE1YRkluZGV4VGFibGVTZWdtZW50LAorICAgICAgICAgICAgbXV4LT5pbmRleF90YWJsZS0+bGVuIC0gMSkuaW5kZXhfZHVyYXRpb24gPj0gbWF4X3NlZ21lbnRfc2l6ZSkgeworICAgICAgTVhGSW5kZXhUYWJsZVNlZ21lbnQgczsKKworICAgICAgbWVtc2V0ICgmc2VnbWVudCwgMCwgc2l6ZW9mIChzZWdtZW50KSk7CisKKyAgICAgIG14Zl91dWlkX2luaXQgKCZzLmluc3RhbmNlX2lkLCBtdXgtPm1ldGFkYXRhKTsKKyAgICAgIG1lbWNweSAoJnMuaW5kZXhfZWRpdF9yYXRlLCAmcGFkLT5zb3VyY2VfdHJhY2stPmVkaXRfcmF0ZSwKKyAgICAgICAgICBzaXplb2YgKHMuaW5kZXhfZWRpdF9yYXRlKSk7CisgICAgICBzLmluZGV4X3N0YXJ0X3Bvc2l0aW9uID0gcGFkLT5wb3M7CisgICAgICBzLmluZGV4X2R1cmF0aW9uID0gMDsKKyAgICAgIHMuZWRpdF91bml0X2J5dGVfY291bnQgPSAwOworICAgICAgcy5pbmRleF9zaWQgPQorICAgICAgICAgIG11eC0+cHJlZmFjZS0+Y29udGVudF9zdG9yYWdlLT5lc3NlbmNlX2NvbnRhaW5lcl9kYXRhWzBdLT5pbmRleF9zaWQ7CisgICAgICBzLmJvZHlfc2lkID0KKyAgICAgICAgICBtdXgtPnByZWZhY2UtPmNvbnRlbnRfc3RvcmFnZS0+ZXNzZW5jZV9jb250YWluZXJfZGF0YVswXS0+Ym9keV9zaWQ7CisgICAgICBzLnNsaWNlX2NvdW50ID0gMDsKKyAgICAgIHMucG9zX3RhYmxlX2NvdW50ID0gMDsKKyAgICAgIHMubl9kZWx0YV9lbnRyaWVzID0gMDsKKyAgICAgIHMuZGVsdGFfZW50cmllcyA9IE5VTEw7CisgICAgICBzLm5faW5kZXhfZW50cmllcyA9IDA7CisgICAgICBzLmluZGV4X2VudHJpZXMgPSBnX25ldzAgKE1YRkluZGV4RW50cnksIG1heF9zZWdtZW50X3NpemUpOworICAgICAgZ19hcnJheV9hcHBlbmRfdmFsIChtdXgtPmluZGV4X3RhYmxlLCBzKTsKKyAgICB9CisgICAgc2VnbWVudCA9CisgICAgICAgICZnX2FycmF5X2luZGV4IChtdXgtPmluZGV4X3RhYmxlLCBNWEZJbmRleFRhYmxlU2VnbWVudCwKKyAgICAgICAgbXV4LT5pbmRleF90YWJsZS0+bGVuIC0gMSk7CisKKyAgICBzZWdtZW50LT5pbmRleF9lbnRyaWVzW3NlZ21lbnQtPm5faW5kZXhfZW50cmllc10udGVtcG9yYWxfb2Zmc2V0ID0gMDsKKyAgICBzZWdtZW50LT5pbmRleF9lbnRyaWVzW3NlZ21lbnQtPm5faW5kZXhfZW50cmllc10ua2V5X2ZyYW1lX29mZnNldCA9IDA7CisgICAgc2VnbWVudC0+aW5kZXhfZW50cmllc1tzZWdtZW50LT5uX2luZGV4X2VudHJpZXNdLmZsYWdzID0gaXNfa2V5ZnJhbWUgPyAweDgwIDogMHgyMDsgLyogRklYTUU6IE5lZWQgdG8gZGlzdGluZ3Vpc2ggYWxsIHRoZSBjYXNlcyAqLworICAgIHNlZ21lbnQtPmluZGV4X2VudHJpZXNbc2VnbWVudC0+bl9pbmRleF9lbnRyaWVzXS5zdHJlYW1fb2Zmc2V0ID0KKyAgICAgICAgbXV4LT5wYXJ0aXRpb24uYm9keV9vZmZzZXQ7CisKKyAgICBzZWdtZW50LT5uX2luZGV4X2VudHJpZXMrKzsKKyAgICBzZWdtZW50LT5pbmRleF9kdXJhdGlvbisrOworICB9CisKKyAgYnVmX3NpemUgPSBnc3RfYnVmZmVyX2dldF9zaXplIChidWYpOworICBzbGVuID0gbXhmX2Jlcl9lbmNvZGVfc2l6ZSAoYnVmX3NpemUsIGJlcik7CisgIG91dGJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAoMTYgKyBzbGVuKTsKKyAgZ3N0X2J1ZmZlcl9tYXAgKG91dGJ1ZiwgJm1hcCwgR1NUX01BUF9XUklURSk7CiAgIG1lbWNweSAobWFwLmRhdGEsIF9nY19lc3NlbmNlX2VsZW1lbnRfdWwsIDE2KTsKLSAgbWFwLmRhdGFbN10gPSBjcGFkLT5kZXNjcmlwdG9yLT5lc3NlbmNlX2NvbnRhaW5lci51WzddOwotICBHU1RfV1JJVEVfVUlOVDMyX0JFIChtYXAuZGF0YSArIDEyLCBjcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19udW1iZXIpOworICBHU1RfV1JJVEVfVUlOVDMyX0JFIChtYXAuZGF0YSArIDEyLCBwYWQtPnNvdXJjZV90cmFjay0+cGFyZW50LnRyYWNrX251bWJlcik7CiAgIG1lbWNweSAobWFwLmRhdGEgKyAxNiwgYmVyLCBzbGVuKTsKLSAgbWVtY3B5IChtYXAuZGF0YSArIDE2ICsgc2xlbiwgcmVhZG1hcC5kYXRhLCByZWFkbWFwLnNpemUpOwotICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZyZWFkbWFwKTsKKyAgZ3N0X2J1ZmZlcl91bm1hcCAob3V0YnVmLCAmbWFwKTsKKyAgb3V0YnVmID0gZ3N0X2J1ZmZlcl9hcHBlbmQgKG91dGJ1ZiwgYnVmKTsKIAotICBnc3RfYnVmZmVyX3VucmVmIChidWYpOworICBHU1RfREVCVUdfT0JKRUNUIChwYWQsCisgICAgICAiUHVzaGluZyBidWZmZXIgb2Ygc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCAiIGZvciB0cmFjayAldSIsCisgICAgICBnc3RfYnVmZmVyX2dldF9zaXplIChvdXRidWYpLCBwYWQtPnNvdXJjZV90cmFjay0+cGFyZW50LnRyYWNrX2lkKTsKIAotICBHU1RfREVCVUdfT0JKRUNUIChjcGFkLT5jb2xsZWN0LnBhZCwKLSAgICAgICJQdXNoaW5nIGJ1ZmZlciBvZiBzaXplICUiIEdfR1NJWkVfRk9STUFUICIgZm9yIHRyYWNrICV1IiwgbWFwLnNpemUsCi0gICAgICBjcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19pZCk7Ci0gIGdzdF9idWZmZXJfdW5tYXAgKHBhY2tldCwgJm1hcCk7Ci0KLSAgaWYgKChyZXQgPSBnc3RfbXhmX211eF9wdXNoIChtdXgsIHBhY2tldCkpICE9IEdTVF9GTE9XX09LKSB7Ci0gICAgR1NUX0VSUk9SX09CSkVDVCAoY3BhZC0+Y29sbGVjdC5wYWQsCisgIG11eC0+cGFydGl0aW9uLmJvZHlfb2Zmc2V0ICs9IGdzdF9idWZmZXJfZ2V0X3NpemUgKG91dGJ1Zik7CisgIGlmICgocmV0ID0gZ3N0X214Zl9tdXhfcHVzaCAobXV4LCBvdXRidWYpKSAhPSBHU1RfRkxPV19PSykgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHBhZCwKICAgICAgICAgIkZhaWxlZCBwdXNoaW5nIGJ1ZmZlciBmb3IgdHJhY2sgJXUsIHJlYXNvbiAlcyIsCi0gICAgICAgIGNwYWQtPnNvdXJjZV90cmFjay0+cGFyZW50LnRyYWNrX2lkLCBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSk7CisgICAgICAgIHBhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQudHJhY2tfaWQsIGdzdF9mbG93X2dldF9uYW1lIChyZXQpKTsKICAgICByZXR1cm4gcmV0OwogICB9CiAKLSAgY3BhZC0+cG9zKys7Ci0gIGNwYWQtPmxhc3RfdGltZXN0YW1wID0KLSAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoR1NUX1NFQ09ORCAqIGNwYWQtPnBvcywKLSAgICAgIGNwYWQtPnNvdXJjZV90cmFjay0+ZWRpdF9yYXRlLmQsIGNwYWQtPnNvdXJjZV90cmFjay0+ZWRpdF9yYXRlLm4pOworICBwYWQtPnBvcysrOworICBwYWQtPmxhc3RfdGltZXN0YW1wID0KKyAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoR1NUX1NFQ09ORCAqIHBhZC0+cG9zLAorICAgICAgcGFkLT5zb3VyY2VfdHJhY2stPmVkaXRfcmF0ZS5kLCBwYWQtPnNvdXJjZV90cmFjay0+ZWRpdF9yYXRlLm4pOwogCiAgIHJldHVybiByZXQ7CiB9CkBAIC0xMTkzLDYgKzEzMjgsOCBAQAogICBHc3RCdWZmZXIgKmJ1ZjsKIAogICBtdXgtPnBhcnRpdGlvbi50eXBlID0gTVhGX1BBUlRJVElPTl9QQUNLX0JPRFk7CisgIG11eC0+cGFydGl0aW9uLmNsb3NlZCA9IFRSVUU7CisgIG11eC0+cGFydGl0aW9uLmNvbXBsZXRlID0gVFJVRTsKICAgbXV4LT5wYXJ0aXRpb24udGhpc19wYXJ0aXRpb24gPSBtdXgtPm9mZnNldDsKICAgbXV4LT5wYXJ0aXRpb24ucHJldl9wYXJ0aXRpb24gPSAwOwogICBtdXgtPnBhcnRpdGlvbi5mb290ZXJfcGFydGl0aW9uID0gMDsKQEAgLTEyMTAsNyArMTM0Nyw3IEBACiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X214Zl9tdXhfaGFuZGxlX2VvcyAoR3N0TVhGTXV4ICogbXV4KQogewotICBHU0xpc3QgKmw7CisgIEdMaXN0ICpsOwogICBnYm9vbGVhbiBoYXZlX2RhdGEgPSBGQUxTRTsKICAgR3N0QnVmZmVyICpwYWNrZXQ7CiAKQEAgLTEyMTksMzMgKzEzNTYsNDAgQEAKIAogICAgIGhhdmVfZGF0YSA9IEZBTFNFOwogCi0gICAgZm9yIChsID0gbXV4LT5jb2xsZWN0LT5kYXRhOyBsOyBsID0gbC0+bmV4dCkgewotICAgICAgR3N0TVhGTXV4UGFkICpjcGFkID0gbC0+ZGF0YTsKKyAgICBHU1RfT0JKRUNUX0xPQ0sgKG11eCk7CisgICAgZm9yIChsID0gR1NUX0VMRU1FTlRfQ0FTVCAobXV4KS0+c2lua3BhZHM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgICBHc3RNWEZNdXhQYWQgKnBhZCA9IGwtPmRhdGE7CisgICAgICBHc3RCdWZmZXIgKmJ1ZmZlciA9CisgICAgICAgICAgZ3N0X2FnZ3JlZ2F0b3JfcGFkX2dldF9idWZmZXIgKEdTVF9BR0dSRUdBVE9SX1BBRCAocGFkKSk7CisKICAgICAgIEdzdENsb2NrVGltZSBuZXh0X2djX3RpbWVzdGFtcCA9CiAgICAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlICgobXV4LT5sYXN0X2djX3Bvc2l0aW9uICsgMSkgKiBHU1RfU0VDT05ELAogICAgICAgICAgIG11eC0+bWluX2VkaXRfcmF0ZS5kLCBtdXgtPm1pbl9lZGl0X3JhdGUubik7CiAKLSAgICAgIGJlc3QgPSBOVUxMOwotCi0gICAgICBpZiAoY3BhZC0+aGF2ZV9jb21wbGV0ZV9lZGl0X3VuaXQgfHwKLSAgICAgICAgICBnc3RfYWRhcHRlcl9hdmFpbGFibGUgKGNwYWQtPmFkYXB0ZXIpID4gMCB8fCBjcGFkLT5jb2xsZWN0LmJ1ZmZlcikgeworICAgICAgaWYgKHBhZC0+aGF2ZV9jb21wbGV0ZV9lZGl0X3VuaXQgfHwKKyAgICAgICAgICBnc3RfYWRhcHRlcl9hdmFpbGFibGUgKHBhZC0+YWRhcHRlcikgPiAwIHx8IGJ1ZmZlcikgewogICAgICAgICBoYXZlX2RhdGEgPSBUUlVFOwotICAgICAgICBpZiAoY3BhZC0+bGFzdF90aW1lc3RhbXAgPCBuZXh0X2djX3RpbWVzdGFtcCkgewotICAgICAgICAgIGJlc3QgPSBjcGFkOworICAgICAgICBpZiAocGFkLT5sYXN0X3RpbWVzdGFtcCA8IG5leHRfZ2NfdGltZXN0YW1wKSB7CisgICAgICAgICAgYmVzdCA9IGdzdF9vYmplY3RfcmVmIChwYWQpOworICAgICAgICAgIGlmIChidWZmZXIpCisgICAgICAgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICB9CisgICAgICBpZiAoYnVmZmVyKQorICAgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwogCiAgICAgICBpZiAoaGF2ZV9kYXRhICYmICFsLT5uZXh0KSB7CiAgICAgICAgIG11eC0+bGFzdF9nY19wb3NpdGlvbisrOwogICAgICAgICBtdXgtPmxhc3RfZ2NfdGltZXN0YW1wID0gbmV4dF9nY190aW1lc3RhbXA7Ci0gICAgICAgIGJlc3QgPSBOVUxMOwogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICB9CisgICAgR1NUX09CSkVDVF9VTkxPQ0sgKG11eCk7CiAKICAgICBpZiAoYmVzdCkgewogICAgICAgZ3N0X214Zl9tdXhfaGFuZGxlX2J1ZmZlciAobXV4LCBiZXN0KTsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGJlc3QpOwogICAgICAgaGF2ZV9kYXRhID0gVFJVRTsKICAgICB9CiAgIH0gd2hpbGUgKGhhdmVfZGF0YSk7CkBAIC0xMjU2LDE0ICsxNDAwLDE1IEBACiAgICAgICBtdXgtPm1pbl9lZGl0X3JhdGUuZCwgbXV4LT5taW5fZWRpdF9yYXRlLm4pOwogCiAgIC8qIFVwZGF0ZSBlc3NlbmNlIHRyYWNrIGR1cmF0aW9ucyAqLwotICBmb3IgKGwgPSBtdXgtPmNvbGxlY3QtPmRhdGE7IGw7IGwgPSBsLT5uZXh0KSB7Ci0gICAgR3N0TVhGTXV4UGFkICpjcGFkID0gbC0+ZGF0YTsKKyAgR1NUX09CSkVDVF9MT0NLIChtdXgpOworICBmb3IgKGwgPSBHU1RfRUxFTUVOVF9DQVNUIChtdXgpLT5zaW5rcGFkczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICBHc3RNWEZNdXhQYWQgKnBhZCA9IGwtPmRhdGE7CiAgICAgZ3VpbnQgaTsKIAogICAgIC8qIFVwZGF0ZSBkdXJhdGlvbnMgKi8KLSAgICBjcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC5zZXF1ZW5jZS0+ZHVyYXRpb24gPSBjcGFkLT5wb3M7Ci0gICAgTVhGX01FVEFEQVRBX1NPVVJDRV9DTElQIChjcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC4KLSAgICAgICAgc2VxdWVuY2UtPnN0cnVjdHVyYWxfY29tcG9uZW50c1swXSktPnBhcmVudC5kdXJhdGlvbiA9IGNwYWQtPnBvczsKKyAgICBwYWQtPnNvdXJjZV90cmFjay0+cGFyZW50LnNlcXVlbmNlLT5kdXJhdGlvbiA9IHBhZC0+cG9zOworICAgIE1YRl9NRVRBREFUQV9TT1VSQ0VfQ0xJUCAocGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC4KKyAgICAgICAgc2VxdWVuY2UtPnN0cnVjdHVyYWxfY29tcG9uZW50c1swXSktPnBhcmVudC5kdXJhdGlvbiA9IHBhZC0+cG9zOwogICAgIGZvciAoaSA9IDA7IGkgPCBtdXgtPnByZWZhY2UtPmNvbnRlbnRfc3RvcmFnZS0+cGFja2FnZXNbMF0tPm5fdHJhY2tzOyBpKyspIHsKICAgICAgIE1YRk1ldGFkYXRhVGltZWxpbmVUcmFjayAqdHJhY2s7CiAKQEAgLTEyNzksMTIgKzE0MjQsMTMgQEAKICAgICAgICAgICBjb250ZW50X3N0b3JhZ2UtPnBhY2thZ2VzWzBdLT50cmFja3NbaV0pOwogICAgICAgaWYgKE1YRl9NRVRBREFUQV9TT1VSQ0VfQ0xJUCAodHJhY2stPnBhcmVudC4KICAgICAgICAgICAgICAgc2VxdWVuY2UtPnN0cnVjdHVyYWxfY29tcG9uZW50c1swXSktPnNvdXJjZV90cmFja19pZCA9PQotICAgICAgICAgIGNwYWQtPnNvdXJjZV90cmFjay0+cGFyZW50LnRyYWNrX2lkKSB7Ci0gICAgICAgIHRyYWNrLT5wYXJlbnQuc2VxdWVuY2UtPnN0cnVjdHVyYWxfY29tcG9uZW50c1swXS0+ZHVyYXRpb24gPSBjcGFkLT5wb3M7Ci0gICAgICAgIHRyYWNrLT5wYXJlbnQuc2VxdWVuY2UtPmR1cmF0aW9uID0gY3BhZC0+cG9zOworICAgICAgICAgIHBhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQudHJhY2tfaWQpIHsKKyAgICAgICAgdHJhY2stPnBhcmVudC5zZXF1ZW5jZS0+c3RydWN0dXJhbF9jb21wb25lbnRzWzBdLT5kdXJhdGlvbiA9IHBhZC0+cG9zOworICAgICAgICB0cmFjay0+cGFyZW50LnNlcXVlbmNlLT5kdXJhdGlvbiA9IHBhZC0+cG9zOwogICAgICAgfQogICAgIH0KICAgfQorICBHU1RfT0JKRUNUX1VOTE9DSyAobXV4KTsKIAogICAvKiBVcGRhdGUgdGltZWNvZGUgdHJhY2sgZHVyYXRpb24gKi8KICAgewpAQCAtMTMwMCw2ICsxNDQ2LDE4IEBACiAgIH0KIAogICB7CisgICAgTVhGTWV0YWRhdGFUaW1lbGluZVRyYWNrICp0cmFjayA9CisgICAgICAgIE1YRl9NRVRBREFUQV9USU1FTElORV9UUkFDSyAobXV4LT5wcmVmYWNlLT4KKyAgICAgICAgY29udGVudF9zdG9yYWdlLT5wYWNrYWdlc1sxXS0+dHJhY2tzWzBdKTsKKyAgICBNWEZNZXRhZGF0YVNlcXVlbmNlICpzZXF1ZW5jZSA9IHRyYWNrLT5wYXJlbnQuc2VxdWVuY2U7CisgICAgTVhGTWV0YWRhdGFUaW1lY29kZUNvbXBvbmVudCAqY29tcG9uZW50ID0KKyAgICAgICAgTVhGX01FVEFEQVRBX1RJTUVDT0RFX0NPTVBPTkVOVCAoc2VxdWVuY2UtPnN0cnVjdHVyYWxfY29tcG9uZW50c1swXSk7CisKKyAgICBzZXF1ZW5jZS0+ZHVyYXRpb24gPSBtdXgtPmxhc3RfZ2NfcG9zaXRpb247CisgICAgY29tcG9uZW50LT5wYXJlbnQuZHVyYXRpb24gPSBtdXgtPmxhc3RfZ2NfcG9zaXRpb247CisgIH0KKworICB7CiAgICAgZ3VpbnQ2NCBib2R5X3BhcnRpdGlvbiA9IG11eC0+cGFydGl0aW9uLnRoaXNfcGFydGl0aW9uOwogICAgIGd1aW50MzIgYm9keV9zaWQgPSBtdXgtPnBhcnRpdGlvbi5ib2R5X3NpZDsKICAgICBndWludDY0IGZvb3Rlcl9wYXJ0aXRpb24gPSBtdXgtPm9mZnNldDsKQEAgLTEzMDcsNiArMTQ2NSwxOSBAQAogICAgIEdzdEZsb3dSZXR1cm4gcmV0OwogICAgIEdzdFNlZ21lbnQgc2VnbWVudDsKICAgICBNWEZSYW5kb21JbmRleFBhY2tFbnRyeSBlbnRyeTsKKyAgICBHTGlzdCAqaW5kZXhfZW50cmllcyA9IE5VTEwsICpsOworICAgIGd1aW50IGluZGV4X2J5dGVfY291bnQgPSAwOworICAgIGd1aW50IGk7CisgICAgR3N0QnVmZmVyICpidWY7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbXV4LT5pbmRleF90YWJsZS0+bGVuOyBpKyspIHsKKyAgICAgIE1YRkluZGV4VGFibGVTZWdtZW50ICpzZWdtZW50ID0KKyAgICAgICAgICAmZ19hcnJheV9pbmRleCAobXV4LT5pbmRleF90YWJsZSwgTVhGSW5kZXhUYWJsZVNlZ21lbnQsIGkpOworICAgICAgR3N0QnVmZmVyICpzZWdtZW50X2J1ZmZlciA9IG14Zl9pbmRleF90YWJsZV9zZWdtZW50X3RvX2J1ZmZlciAoc2VnbWVudCk7CisKKyAgICAgIGluZGV4X2J5dGVfY291bnQgKz0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoc2VnbWVudF9idWZmZXIpOworICAgICAgaW5kZXhfZW50cmllcyA9IGdfbGlzdF9wcmVwZW5kIChpbmRleF9lbnRyaWVzLCBzZWdtZW50X2J1ZmZlcik7CisgICAgfQogCiAgICAgbXV4LT5wYXJ0aXRpb24udHlwZSA9IE1YRl9QQVJUSVRJT05fUEFDS19GT09URVI7CiAgICAgbXV4LT5wYXJ0aXRpb24uY2xvc2VkID0gVFJVRTsKQEAgLTEzMTUsMTMgKzE0ODYsMjIgQEAKICAgICBtdXgtPnBhcnRpdGlvbi5wcmV2X3BhcnRpdGlvbiA9IGJvZHlfcGFydGl0aW9uOwogICAgIG11eC0+cGFydGl0aW9uLmZvb3Rlcl9wYXJ0aXRpb24gPSBtdXgtPm9mZnNldDsKICAgICBtdXgtPnBhcnRpdGlvbi5oZWFkZXJfYnl0ZV9jb3VudCA9IDA7Ci0gICAgbXV4LT5wYXJ0aXRpb24uaW5kZXhfYnl0ZV9jb3VudCA9IDA7Ci0gICAgbXV4LT5wYXJ0aXRpb24uaW5kZXhfc2lkID0gMDsKKyAgICBtdXgtPnBhcnRpdGlvbi5pbmRleF9ieXRlX2NvdW50ID0gaW5kZXhfYnl0ZV9jb3VudDsKKyAgICBtdXgtPnBhcnRpdGlvbi5pbmRleF9zaWQgPQorICAgICAgICBtdXgtPnByZWZhY2UtPmNvbnRlbnRfc3RvcmFnZS0+ZXNzZW5jZV9jb250YWluZXJfZGF0YVswXS0+aW5kZXhfc2lkOwogICAgIG11eC0+cGFydGl0aW9uLmJvZHlfb2Zmc2V0ID0gMDsKICAgICBtdXgtPnBhcnRpdGlvbi5ib2R5X3NpZCA9IDA7CiAKICAgICBnc3RfbXhmX211eF93cml0ZV9oZWFkZXJfbWV0YWRhdGEgKG11eCk7CiAKKyAgICBpbmRleF9lbnRyaWVzID0gZ19saXN0X3JldmVyc2UgKGluZGV4X2VudHJpZXMpOworICAgIGZvciAobCA9IGluZGV4X2VudHJpZXM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgICBpZiAoKHJldCA9IGdzdF9teGZfbXV4X3B1c2ggKG11eCwgbC0+ZGF0YSkpICE9IEdTVF9GTE9XX09LKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG11eCwgIkZhaWxlZCBwdXNoaW5nIGluZGV4IHRhYmxlIHNlZ21lbnQiKTsKKyAgICAgIH0KKyAgICB9CisgICAgZ19saXN0X2ZyZWUgKGluZGV4X2VudHJpZXMpOworCiAgICAgcmlwID0gZ19hcnJheV9zaXplZF9uZXcgKEZBTFNFLCBGQUxTRSwgc2l6ZW9mIChNWEZSYW5kb21JbmRleFBhY2tFbnRyeSksIDMpOwogICAgIGVudHJ5Lm9mZnNldCA9IDA7CiAgICAgZW50cnkuYm9keV9zaWQgPSAwOwpAQCAtMTM0MSwxMyArMTUyMSwxNCBAQAogCiAgICAgLyogUmV3cml0ZSBoZWFkZXIgcGFydGl0aW9uIHdpdGggdXBkYXRlZCB2YWx1ZXMgKi8KICAgICBnc3Rfc2VnbWVudF9pbml0ICgmc2VnbWVudCwgR1NUX0ZPUk1BVF9CWVRFUyk7Ci0gICAgaWYgKGdzdF9wYWRfcHVzaF9ldmVudCAobXV4LT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfc2VnbWVudCAoJnNlZ21lbnQpKSkgeworICAgIGlmIChnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9BR0dSRUdBVE9SX1NSQ19QQUQgKG11eCksCisgICAgICAgICAgICBnc3RfZXZlbnRfbmV3X3NlZ21lbnQgKCZzZWdtZW50KSkpIHsKICAgICAgIG11eC0+b2Zmc2V0ID0gMDsKICAgICAgIG11eC0+cGFydGl0aW9uLnR5cGUgPSBNWEZfUEFSVElUSU9OX1BBQ0tfSEVBREVSOwogICAgICAgbXV4LT5wYXJ0aXRpb24uY2xvc2VkID0gVFJVRTsKICAgICAgIG11eC0+cGFydGl0aW9uLmNvbXBsZXRlID0gVFJVRTsKICAgICAgIG11eC0+cGFydGl0aW9uLnRoaXNfcGFydGl0aW9uID0gMDsKLSAgICAgIG11eC0+cGFydGl0aW9uLnByZXZfcGFydGl0aW9uID0gZm9vdGVyX3BhcnRpdGlvbjsKKyAgICAgIG11eC0+cGFydGl0aW9uLnByZXZfcGFydGl0aW9uID0gMDsKICAgICAgIG11eC0+cGFydGl0aW9uLmZvb3Rlcl9wYXJ0aXRpb24gPSBmb290ZXJfcGFydGl0aW9uOwogICAgICAgbXV4LT5wYXJ0aXRpb24uaGVhZGVyX2J5dGVfY291bnQgPSAwOwogICAgICAgbXV4LT5wYXJ0aXRpb24uaW5kZXhfYnl0ZV9jb3VudCA9IDA7CkBAIC0xMzYwLDYgKzE1NDEsMjggQEAKICAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAobXV4LCAiUmV3cml0aW5nIGhlYWRlciBwYXJ0aXRpb24gZmFpbGVkIik7CiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICB9CisKKyAgICAgIGdfYXNzZXJ0IChtdXgtPm9mZnNldCA9PSBib2R5X3BhcnRpdGlvbik7CisKKyAgICAgIG11eC0+cGFydGl0aW9uLnR5cGUgPSBNWEZfUEFSVElUSU9OX1BBQ0tfQk9EWTsKKyAgICAgIG11eC0+cGFydGl0aW9uLmNsb3NlZCA9IFRSVUU7CisgICAgICBtdXgtPnBhcnRpdGlvbi5jb21wbGV0ZSA9IFRSVUU7CisgICAgICBtdXgtPnBhcnRpdGlvbi50aGlzX3BhcnRpdGlvbiA9IG11eC0+b2Zmc2V0OworICAgICAgbXV4LT5wYXJ0aXRpb24ucHJldl9wYXJ0aXRpb24gPSAwOworICAgICAgbXV4LT5wYXJ0aXRpb24uZm9vdGVyX3BhcnRpdGlvbiA9IGZvb3Rlcl9wYXJ0aXRpb247CisgICAgICBtdXgtPnBhcnRpdGlvbi5oZWFkZXJfYnl0ZV9jb3VudCA9IDA7CisgICAgICBtdXgtPnBhcnRpdGlvbi5pbmRleF9ieXRlX2NvdW50ID0gMDsKKyAgICAgIG11eC0+cGFydGl0aW9uLmluZGV4X3NpZCA9IDA7CisgICAgICBtdXgtPnBhcnRpdGlvbi5ib2R5X29mZnNldCA9IDA7CisgICAgICBtdXgtPnBhcnRpdGlvbi5ib2R5X3NpZCA9CisgICAgICAgICAgbXV4LT5wcmVmYWNlLT5jb250ZW50X3N0b3JhZ2UtPmVzc2VuY2VfY29udGFpbmVyX2RhdGFbMF0tPmJvZHlfc2lkOworCisgICAgICBidWYgPSBteGZfcGFydGl0aW9uX3BhY2tfdG9fYnVmZmVyICgmbXV4LT5wYXJ0aXRpb24pOworICAgICAgcmV0ID0gZ3N0X214Zl9tdXhfcHVzaCAobXV4LCBidWYpOworICAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChtdXgsICJSZXdyaXRpbmcgYm9keSBwYXJ0aXRpb24gZmFpbGVkIik7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAobXV4LCAiQ2FuJ3QgcmV3cml0ZSBoZWFkZXIgcGFydGl0aW9uIik7CiAgICAgfQpAQCAtMTM4NCwxNiArMTU4NywzMyBAQAogICAgICAgcGEtPnNvdXJjZV90cmFjay0+cGFyZW50LnRyYWNrX251bWJlcjsKIH0KIAotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9teGZfbXV4X2NvbGxlY3RlZCAoR3N0Q29sbGVjdFBhZHMgKiBwYWRzLCBncG9pbnRlciB1c2VyX2RhdGEpCisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X214Zl9tdXhfc3RvcCAoR3N0QWdncmVnYXRvciAqIGFnZ3JlZ2F0b3IpCiB7Ci0gIEdzdE1YRk11eCAqbXV4ID0gR1NUX01YRl9NVVggKHVzZXJfZGF0YSk7CisgIEdzdE1YRk11eCAqbXV4ID0gR1NUX01YRl9NVVggKGFnZ3JlZ2F0b3IpOworCisgIGdzdF9teGZfbXV4X3Jlc2V0IChtdXgpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X214Zl9tdXhfYWdncmVnYXRlIChHc3RBZ2dyZWdhdG9yICogYWdncmVnYXRvciwgZ2Jvb2xlYW4gdGltZW91dCkKK3sKKyAgR3N0TVhGTXV4ICptdXggPSBHU1RfTVhGX01VWCAoYWdncmVnYXRvcik7CiAgIEdzdE1YRk11eFBhZCAqYmVzdCA9IE5VTEw7CiAgIEdzdEZsb3dSZXR1cm4gcmV0OwotICBHc3RTZWdtZW50IHNlZ21lbnQ7Ci0gIEdTTGlzdCAqc2w7CisgIEdMaXN0ICpsOwogICBnYm9vbGVhbiBlb3MgPSBUUlVFOwogCisgIGlmICh0aW1lb3V0KSB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKG11eCwgU1RSRUFNLCBNVVgsIChOVUxMKSwKKyAgICAgICAgKCJMaXZlIG1peGluZyBhbmQgZ290IGEgdGltZW91dC4gVGhpcyBpcyBub3Qgc3VwcG9ydGVkIHlldCIpKTsKKyAgICByZXQgPSBHU1RfRkxPV19FUlJPUjsKKyAgICBnb3RvIGVycm9yOworICB9CisKICAgaWYgKG11eC0+c3RhdGUgPT0gR1NUX01YRl9NVVhfU1RBVEVfRVJST1IpIHsKICAgICBHU1RfRVJST1JfT0JKRUNUIChtdXgsICJIYWQgYW4gZXJyb3IgYmVmb3JlIC0tIHJldHVybmluZyIpOwogICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKQEAgLTE0MDMsMzEgKzE2MjMsMzMgQEAKICAgfQogCiAgIGlmIChtdXgtPnN0YXRlID09IEdTVF9NWEZfTVVYX1NUQVRFX0hFQURFUikgewotICAgIGlmIChtdXgtPmNvbGxlY3QtPmRhdGEgPT0gTlVMTCkgeworICAgIEdzdENhcHMgKmNhcHM7CisKKyAgICBpZiAoR1NUX0VMRU1FTlRfQ0FTVCAobXV4KS0+c2lua3BhZHMgPT0gTlVMTCkgewogICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKG11eCwgU1RSRUFNLCBNVVgsIChOVUxMKSwKICAgICAgICAgICAoIk5vIGlucHV0IHN0cmVhbXMgY29uZmlndXJlZCIpKTsKICAgICAgIHJldCA9IEdTVF9GTE9XX0VSUk9SOwogICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBnc3Rfc2VnbWVudF9pbml0ICgmc2VnbWVudCwgR1NUX0ZPUk1BVF9CWVRFUyk7Ci0gICAgaWYgKGdzdF9wYWRfcHVzaF9ldmVudCAobXV4LT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfc2VnbWVudCAoJnNlZ21lbnQpKSkgewotICAgICAgaWYgKChyZXQgPSBnc3RfbXhmX211eF9jcmVhdGVfbWV0YWRhdGEgKG11eCkpICE9IEdTVF9GTE9XX09LKQotICAgICAgICBnb3RvIGVycm9yOworICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlICgiYXBwbGljYXRpb24vbXhmIik7CisgICAgZ3N0X2FnZ3JlZ2F0b3Jfc2V0X3NyY19jYXBzIChHU1RfQUdHUkVHQVRPUiAobXV4KSwgY2Fwcyk7CisgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwogCi0gICAgICBpZiAoKHJldCA9IGdzdF9teGZfbXV4X2luaXRfcGFydGl0aW9uX3BhY2sgKG11eCkpICE9IEdTVF9GTE9XX09LKQotICAgICAgICBnb3RvIGVycm9yOworICAgIGlmICgocmV0ID0gZ3N0X214Zl9tdXhfY3JlYXRlX21ldGFkYXRhIChtdXgpKSAhPSBHU1RfRkxPV19PSykKKyAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICAgIHJldCA9IGdzdF9teGZfbXV4X3dyaXRlX2hlYWRlcl9tZXRhZGF0YSAobXV4KTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0ID0gR1NUX0ZMT1dfRVJST1I7Ci0gICAgfQorICAgIGlmICgocmV0ID0gZ3N0X214Zl9tdXhfaW5pdF9wYXJ0aXRpb25fcGFjayAobXV4KSkgIT0gR1NUX0ZMT1dfT0spCisgICAgICBnb3RvIGVycm9yOwogCi0gICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKKyAgICBpZiAoKHJldCA9IGdzdF9teGZfbXV4X3dyaXRlX2hlYWRlcl9tZXRhZGF0YSAobXV4KSkgIT0gR1NUX0ZMT1dfT0spCiAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogU29ydCBwYWRzLCB3ZSB3aWxsIGFsd2F5cyB3cml0ZSBpbiB0aGF0IG9yZGVyICovCi0gICAgbXV4LT5jb2xsZWN0LT5kYXRhID0gZ19zbGlzdF9zb3J0IChtdXgtPmNvbGxlY3QtPmRhdGEsIF9zb3J0X211eF9wYWRzKTsKKyAgICBHU1RfT0JKRUNUX0xPQ0sgKG11eCk7CisgICAgR1NUX0VMRU1FTlRfQ0FTVCAobXV4KS0+c2lua3BhZHMgPQorICAgICAgICBnX2xpc3Rfc29ydCAoR1NUX0VMRU1FTlRfQ0FTVCAobXV4KS0+c2lua3BhZHMsIF9zb3J0X211eF9wYWRzKTsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAobXV4KTsKIAogICAgIC8qIFdyaXRlIGJvZHkgcGFydGl0aW9uICovCiAgICAgcmV0ID0gZ3N0X214Zl9tdXhfd3JpdGVfYm9keV9wYXJ0aXRpb24gKG11eCk7CkBAIC0xNDM5LDQzICsxNjYxLDU5IEBACiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChnX2hhc2hfdGFibGVfc2l6ZSAobXV4LT5tZXRhZGF0YSkgPiAwLCBHU1RfRkxPV19FUlJPUik7CiAKICAgZG8gewotICAgIGZvciAoc2wgPSBtdXgtPmNvbGxlY3QtPmRhdGE7IHNsOyBzbCA9IHNsLT5uZXh0KSB7CisgICAgR1NUX09CSkVDVF9MT0NLIChtdXgpOworICAgIGZvciAobCA9IEdTVF9FTEVNRU5UX0NBU1QgKG11eCktPnNpbmtwYWRzOyBsOyBsID0gbC0+bmV4dCkgewogICAgICAgZ2Jvb2xlYW4gcGFkX2VvczsKLSAgICAgIEdzdE1YRk11eFBhZCAqY3BhZCA9IHNsLT5kYXRhOworICAgICAgR3N0TVhGTXV4UGFkICpwYWQgPSBsLT5kYXRhOworICAgICAgR3N0QnVmZmVyICpidWZmZXI7CiAgICAgICBHc3RDbG9ja1RpbWUgbmV4dF9nY190aW1lc3RhbXAgPQogICAgICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoKG11eC0+bGFzdF9nY19wb3NpdGlvbiArIDEpICogR1NUX1NFQ09ORCwKICAgICAgICAgICBtdXgtPm1pbl9lZGl0X3JhdGUuZCwgbXV4LT5taW5fZWRpdF9yYXRlLm4pOwogCi0gICAgICBwYWRfZW9zID0gY3BhZC0+Y29sbGVjdC5zdGF0ZSAmIEdTVF9DT0xMRUNUX1BBRFNfU1RBVEVfRU9TOworICAgICAgcGFkX2VvcyA9IGdzdF9hZ2dyZWdhdG9yX3BhZF9pc19lb3MgKEdTVF9BR0dSRUdBVE9SX1BBRCAocGFkKSk7CiAgICAgICBpZiAoIXBhZF9lb3MpCiAgICAgICAgIGVvcyA9IEZBTFNFOwogCi0gICAgICBpZiAoKCFwYWRfZW9zIHx8IGNwYWQtPmhhdmVfY29tcGxldGVfZWRpdF91bml0IHx8Ci0gICAgICAgICAgICAgIGdzdF9hZGFwdGVyX2F2YWlsYWJsZSAoY3BhZC0+YWRhcHRlcikgPiAwIHx8IGNwYWQtPmNvbGxlY3QuYnVmZmVyKQotICAgICAgICAgICYmIGNwYWQtPmxhc3RfdGltZXN0YW1wIDwgbmV4dF9nY190aW1lc3RhbXApIHsKLSAgICAgICAgYmVzdCA9IGNwYWQ7CisgICAgICBidWZmZXIgPSBnc3RfYWdncmVnYXRvcl9wYWRfZ2V0X2J1ZmZlciAoR1NUX0FHR1JFR0FUT1JfUEFEIChwYWQpKTsKKworICAgICAgaWYgKCghcGFkX2VvcyB8fCBwYWQtPmhhdmVfY29tcGxldGVfZWRpdF91bml0IHx8CisgICAgICAgICAgICAgIGdzdF9hZGFwdGVyX2F2YWlsYWJsZSAocGFkLT5hZGFwdGVyKSA+IDAgfHwgYnVmZmVyKQorICAgICAgICAgICYmIHBhZC0+bGFzdF90aW1lc3RhbXAgPCBuZXh0X2djX3RpbWVzdGFtcCkgeworICAgICAgICBpZiAoYnVmZmVyKQorICAgICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CisgICAgICAgIGJlc3QgPSBnc3Rfb2JqZWN0X3JlZiAocGFkKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICB9IGVsc2UgaWYgKCFlb3MgJiYgIXNsLT5uZXh0KSB7CisgICAgICB9IGVsc2UgaWYgKCFlb3MgJiYgIWwtPm5leHQpIHsKICAgICAgICAgbXV4LT5sYXN0X2djX3Bvc2l0aW9uKys7CiAgICAgICAgIG11eC0+bGFzdF9nY190aW1lc3RhbXAgPSBuZXh0X2djX3RpbWVzdGFtcDsKICAgICAgICAgZW9zID0gRkFMU0U7CisgICAgICAgIGlmIChidWZmZXIpCisgICAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKICAgICAgICAgYmVzdCA9IE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQorICAgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKICAgICB9CisgICAgR1NUX09CSkVDVF9VTkxPQ0sgKG11eCk7CiAgIH0gd2hpbGUgKCFlb3MgJiYgYmVzdCA9PSBOVUxMKTsKIAogICBpZiAoIWVvcyAmJiBiZXN0KSB7CiAgICAgcmV0ID0gZ3N0X214Zl9tdXhfaGFuZGxlX2J1ZmZlciAobXV4LCBiZXN0KTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChiZXN0KTsKICAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKQogICAgICAgZ290byBlcnJvcjsKICAgfSBlbHNlIGlmIChlb3MpIHsKICAgICBHU1RfREVCVUdfT0JKRUNUIChtdXgsICJIYW5kbGluZyBFT1MiKTsKIAorICAgIGlmIChiZXN0KQorICAgICAgZ3N0X29iamVjdF91bnJlZiAoYmVzdCk7CisKICAgICBnc3RfbXhmX211eF9oYW5kbGVfZW9zIChtdXgpOwotICAgIGdzdF9wYWRfcHVzaF9ldmVudCAobXV4LT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKICAgICBtdXgtPnN0YXRlID0gR1NUX01YRl9NVVhfU1RBVEVfRU9TOwogICAgIHJldHVybiBHU1RfRkxPV19FT1M7CisgIH0gZWxzZSB7CisgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CiAgIH0KIAogICByZXR1cm4gR1NUX0ZMT1dfT0s7CkBAIC0xNDgzLDQ1ICsxNzIxLDYgQEAKIGVycm9yOgogICB7CiAgICAgbXV4LT5zdGF0ZSA9IEdTVF9NWEZfTVVYX1NUQVRFX0VSUk9SOwotICAgIGdzdF9wYWRfcHVzaF9ldmVudCAobXV4LT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKICAgICByZXR1cm4gcmV0OwogICB9CiB9Ci0KLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotZ3N0X214Zl9tdXhfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKLXsKLSAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0OwotICBHc3RNWEZNdXggKm11eCA9IEdTVF9NWEZfTVVYIChlbGVtZW50KTsKLQotICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfTlVMTF9UT19SRUFEWToKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6Ci0gICAgICBnc3RfY29sbGVjdF9wYWRzX3N0YXJ0IChtdXgtPmNvbGxlY3QpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKLSAgICAgIGdzdF9jb2xsZWN0X3BhZHNfc3RvcCAobXV4LT5jb2xsZWN0KTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldCA9IEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5jaGFuZ2Vfc3RhdGUgKGVsZW1lbnQsIHRyYW5zaXRpb24pOwotCi0gIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QTEFZSU5HX1RPX1BBVVNFRDoKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6Ci0gICAgICBnc3RfbXhmX211eF9yZXNldCAobXV4KTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KZGlmZiAtLWdpdCBhL2dzdC9teGYvbXhmbXV4LmggYi9nc3QvbXhmL214Zm11eC5oCmluZGV4IDdiODM0MjcuLmU4ODczNjIgMTAwNjQ0Ci0tLSBhL2dzdC9teGYvbXhmbXV4LmgKKysrIGIvZ3N0L214Zi9teGZtdXguaApAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGFkYXB0ZXIuaD4KLSNpbmNsdWRlIDxnc3QvYmFzZS9nc3Rjb2xsZWN0cGFkcy5oPgorI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuaD4KIAogI2luY2x1ZGUgIm14ZmVzc2VuY2UuaCIKIApAQCAtMzksMjYgKzM5LDYgQEAKICNkZWZpbmUgR1NUX0lTX01YRl9NVVhfQ0xBU1Moa2xhc3MpIFwKICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9NWEZfTVVYKSkKIAotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgR3N0Q29sbGVjdERhdGEgY29sbGVjdDsKLQotICBndWludDY0IHBvczsKLSAgR3N0Q2xvY2tUaW1lIGxhc3RfdGltZXN0YW1wOwotCi0gIE1YRk1ldGFkYXRhRmlsZURlc2NyaXB0b3IgKmRlc2NyaXB0b3I7Ci0KLSAgR3N0QWRhcHRlciAqYWRhcHRlcjsKLSAgZ2Jvb2xlYW4gaGF2ZV9jb21wbGV0ZV9lZGl0X3VuaXQ7Ci0KLSAgZ3BvaW50ZXIgbWFwcGluZ19kYXRhOwotICBjb25zdCBNWEZFc3NlbmNlRWxlbWVudFdyaXRlciAqd3JpdGVyOwotICBNWEZFc3NlbmNlRWxlbWVudFdyaXRlRnVuYyB3cml0ZV9mdW5jOwotCi0gIE1YRk1ldGFkYXRhU291cmNlUGFja2FnZSAqc291cmNlX3BhY2thZ2U7Ci0gIE1YRk1ldGFkYXRhVGltZWxpbmVUcmFjayAqc291cmNlX3RyYWNrOwotfSBHc3RNWEZNdXhQYWQ7Ci0KIHR5cGVkZWYgZW51bQogewogICBHU1RfTVhGX01VWF9TVEFURV9IRUFERVIsCkBAIC02OCwxNCArNDgsOSBAQAogfSBHc3RNWEZNdXhTdGF0ZTsKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdE1YRk11eCB7Ci0gIEdzdEVsZW1lbnQgZWxlbWVudDsKLQotICBHc3RQYWQgKnNyY3BhZDsKLSAgR3N0Q29sbGVjdFBhZHMgKmNvbGxlY3Q7CisgIEdzdEFnZ3JlZ2F0b3IgcGFyZW50OwogCiAgIC8qIDxwcml2YXRlPiAqLwotICBHc3RQYWRFdmVudEZ1bmN0aW9uIGNvbGxlY3RfZXZlbnQ7Ci0KICAgR3N0TVhGTXV4U3RhdGUgc3RhdGU7CiAgIGd1aW50IG5fcGFkczsKIApAQCAtODMsNyArNTgsNyBAQAogCiAgIE1YRlBhcnRpdGlvblBhY2sgcGFydGl0aW9uOwogICBNWEZQcmltZXJQYWNrIHByaW1lcjsKLSAgCisKICAgR0hhc2hUYWJsZSAqbWV0YWRhdGE7CiAgIEdMaXN0ICptZXRhZGF0YV9saXN0OwogICBNWEZNZXRhZGF0YVByZWZhY2UgKnByZWZhY2U7CkBAIC05MywxMCArNjgsMTIgQEAKICAgR3N0Q2xvY2tUaW1lIGxhc3RfZ2NfdGltZXN0YW1wOwogCiAgIGdjaGFyICphcHBsaWNhdGlvbjsKKworICBHQXJyYXkgKmluZGV4X3RhYmxlOwogfSBHc3RNWEZNdXg7CiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RNWEZNdXhDbGFzcyB7Ci0gIEdzdEVsZW1lbnRDbGFzcyBwYXJlbnQ7CisgIEdzdEFnZ3JlZ2F0b3JDbGFzcyBwYXJlbnQ7CiB9IEdzdE1YRk11eENsYXNzOwogCiBHVHlwZSBnc3RfbXhmX211eF9nZXRfdHlwZSAodm9pZCk7CmRpZmYgLS1naXQgYS9nc3QvbXhmL214ZnR5cGVzLmMgYi9nc3QvbXhmL214ZnR5cGVzLmMKaW5kZXggZDg1N2VmZS4uMTRlMjM2MiAxMDA2NDQKLS0tIGEvZ3N0L214Zi9teGZ0eXBlcy5jCisrKyBiL2dzdC9teGYvbXhmdHlwZXMuYwpAQCAtMjIsNiArMjIsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0Ynl0ZXdyaXRlci5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCiAjaW5jbHVkZSAibXhmdHlwZXMuaCIKQEAgLTIxNSw3ICsyMTYsOCBAQAogICBkbyB7CiAgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKICAgICAgIEdTVF9XUklURV9VSU5UMzJfQkUgKCZ1dWlkLT51W2kgKiA0XSwgZ19yYW5kb21faW50ICgpKTsKLQorICAgIHV1aWQtPnVbNl0gPSAweDQwIHwgKHV1aWQtPnVbNl0gJiAweDBmKTsKKyAgICB1dWlkLT51WzhdID0gKHV1aWQtPnVbOF0gJiAweGJmKSB8IDB4ODA7CiAgIH0gd2hpbGUgKGhhc2h0YWJsZSAmJiAobXhmX3V1aWRfaXNfemVybyAodXVpZCkgfHwKICAgICAgICAgICBnX2hhc2hfdGFibGVfbG9va3VwX2V4dGVuZGVkIChoYXNodGFibGUsIHV1aWQsIE5VTEwsIE5VTEwpKSk7CiB9CkBAIC03NDYsMTMgKzc0OCwxMyBAQAogICBlbHNlIGlmIChwYXR0ZXJuID09IE1YRl9PUF8xYyB8fCBwYXR0ZXJuID09IE1YRl9PUF8yYyB8fCBwYXR0ZXJuID09IE1YRl9PUF8zYykKICAgICB1bC0+dVsxM10gPSAweDAyOwogCi0gIHVsLT51WzE0XSA9IDB4ODA7CisgIHVsLT51WzE0XSA9IDB4MDg7CiAgIGlmICghaW50ZXJuYWxfZXNzZW5jZSkKLSAgICB1bC0+dVsxNF0gfD0gMHg0MDsKKyAgICB1bC0+dVsxNF0gfD0gMHgwNDsKICAgaWYgKCFzdHJlYW1hYmxlKQotICAgIHVsLT51WzE0XSB8PSAweDIwOworICAgIHVsLT51WzE0XSB8PSAweDAyOwogICBpZiAoIXNpbmdsZV90cmFjaykKLSAgICB1bC0+dVsxNF0gfD0gMHgxMDsKKyAgICB1bC0+dVsxNF0gfD0gMHgwMTsKIAogICB1bC0+dVsxNV0gPSAwOwogfQpAQCAtMTA2MSw4ICsxMDYzLDcgQEAKIC8qIFNNUFRFIDM3N00gMTAuMi4zICovCiBnYm9vbGVhbgogbXhmX2luZGV4X3RhYmxlX3NlZ21lbnRfcGFyc2UgKGNvbnN0IE1YRlVMICogdWwsCi0gICAgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKiBzZWdtZW50LCBjb25zdCBNWEZQcmltZXJQYWNrICogcHJpbWVyLAotICAgIGNvbnN0IGd1aW50OCAqIGRhdGEsIGd1aW50IHNpemUpCisgICAgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKiBzZWdtZW50LCBjb25zdCBndWludDggKiBkYXRhLCBndWludCBzaXplKQogewogI2lmbmRlZiBHU1RfRElTQUJMRV9HU1RfREVCVUcKICAgZ2NoYXIgc3RyWzQ4XTsKQEAgLTEwNzIsNyArMTA3Myw2IEBACiAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHVsICE9IE5VTEwsIEZBTFNFKTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRhdGEgIT0gTlVMTCwgRkFMU0UpOwotICBnX3JldHVybl92YWxfaWZfZmFpbCAocHJpbWVyICE9IE5VTEwsIEZBTFNFKTsKIAogICBtZW1zZXQgKHNlZ21lbnQsIDAsIHNpemVvZiAoTVhGSW5kZXhUYWJsZVNlZ21lbnQpKTsKIApAQCAtMTA4Miw4ICsxMDgyLDExIEBACiAgIEdTVF9ERUJVRyAoIlBhcnNpbmcgaW5kZXggdGFibGUgc2VnbWVudDoiKTsKIAogICB3aGlsZSAobXhmX2xvY2FsX3RhZ19wYXJzZSAoZGF0YSwgc2l6ZSwgJnRhZywgJnRhZ19zaXplLCAmdGFnX2RhdGEpKSB7CisgICAgZGF0YSArPSA0ICsgdGFnX3NpemU7CisgICAgc2l6ZSAtPSA0ICsgdGFnX3NpemU7CisKICAgICBpZiAodGFnX3NpemUgPT0gMCB8fCB0YWcgPT0gMHgwMDAwKQotICAgICAgZ290byBuZXh0OworICAgICAgY29udGludWU7CiAKICAgICBzd2l0Y2ggKHRhZykgewogICAgICAgY2FzZSAweDNjMGE6CkBAIC0xMTU0LDcgKzExNTcsNyBAQAogICAgICAgICBzZWdtZW50LT5uX2RlbHRhX2VudHJpZXMgPSBsZW47CiAgICAgICAgIEdTVF9ERUJVRyAoIiAgbnVtYmVyIG9mIGRlbHRhIGVudHJpZXMgPSAldSIsIHNlZ21lbnQtPm5fZGVsdGFfZW50cmllcyk7CiAgICAgICAgIGlmIChsZW4gPT0gMCkKLSAgICAgICAgICBnb3RvIG5leHQ7CisgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHRhZ19kYXRhICs9IDQ7CiAgICAgICAgIHRhZ19zaXplIC09IDQ7CiAKQEAgLTEyMDIsNyArMTIwNSw3IEBACiAgICAgICAgIHNlZ21lbnQtPm5faW5kZXhfZW50cmllcyA9IGxlbjsKICAgICAgICAgR1NUX0RFQlVHICgiICBudW1iZXIgb2YgaW5kZXggZW50cmllcyA9ICV1Iiwgc2VnbWVudC0+bl9pbmRleF9lbnRyaWVzKTsKICAgICAgICAgaWYgKGxlbiA9PSAwKQotICAgICAgICAgIGdvdG8gbmV4dDsKKyAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgdGFnX2RhdGEgKz0gNDsKICAgICAgICAgdGFnX3NpemUgLT0gNDsKIApAQCAtMTI2NSwxOCArMTI2OCwxMSBAQAogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGlmICghcHJpbWVyLT5tYXBwaW5ncykgewotICAgICAgICAgIEdTVF9XQVJOSU5HICgiTm8gdmFsaWQgcHJpbWVyIHBhY2sgZm9yIHRoaXMgcGFydGl0aW9uIik7Ci0gICAgICAgIH0gZWxzZSBpZiAoIW14Zl9sb2NhbF90YWdfYWRkX3RvX2hhc2hfdGFibGUgKHByaW1lciwgdGFnLCB0YWdfZGF0YSwKLSAgICAgICAgICAgICAgICB0YWdfc2l6ZSwgJnNlZ21lbnQtPm90aGVyX3RhZ3MpKSB7Ci0gICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQorICAgICAgICBHU1RfV0FSTklORworICAgICAgICAgICAgKCJVbmtub3duIGxvY2FsIHRhZyAweCUwNHggb2Ygc2l6ZSAlZCBpbiBpbmRleCB0YWJsZSBzZWdtZW50IiwgdGFnLAorICAgICAgICAgICAgdGFnX3NpemUpOwogICAgICAgICBicmVhazsKICAgICB9Ci0KLSAgbmV4dDoKLSAgICBkYXRhICs9IDQgKyB0YWdfc2l6ZTsKLSAgICBzaXplIC09IDQgKyB0YWdfc2l6ZTsKICAgfQogICByZXR1cm4gVFJVRTsKIApAQCAtMTMwMSwxMiArMTI5NywxMjggQEAKICAgZ19mcmVlIChzZWdtZW50LT5pbmRleF9lbnRyaWVzKTsKICAgZ19mcmVlIChzZWdtZW50LT5kZWx0YV9lbnRyaWVzKTsKIAotICBpZiAoc2VnbWVudC0+b3RoZXJfdGFncykKLSAgICBnX2hhc2hfdGFibGVfZGVzdHJveSAoc2VnbWVudC0+b3RoZXJfdGFncyk7Ci0KICAgbWVtc2V0IChzZWdtZW50LCAwLCBzaXplb2YgKE1YRkluZGV4VGFibGVTZWdtZW50KSk7CiB9CiAKK0dzdEJ1ZmZlciAqCitteGZfaW5kZXhfdGFibGVfc2VnbWVudF90b19idWZmZXIgKGNvbnN0IE1YRkluZGV4VGFibGVTZWdtZW50ICogc2VnbWVudCkKK3sKKyAgZ3VpbnQgbGVuLCBzbGVuLCBpOworICBndWludDggYmVyWzldOworICBHc3RCdWZmZXIgKnJldDsKKyAgR3N0TWFwSW5mbyBtYXA7CisgIEdzdEJ5dGVXcml0ZXIgYnc7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHNlZ21lbnQgIT0gTlVMTCwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzZWdtZW50LT5uX2RlbHRhX2VudHJpZXMgKiA2IDwgR19NQVhVSU5UMTYsIE5VTEwpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2VnbWVudC0+bl9pbmRleF9lbnRyaWVzICogKDExICsKKyAgICAgICAgICA0ICogc2VnbWVudC0+c2xpY2VfY291bnQgKyA4ICogc2VnbWVudC0+cG9zX3RhYmxlX2NvdW50KSA8CisgICAgICBHX01BWFVJTlQxNiwgTlVMTCk7CisKKyAgbGVuID0KKyAgICAgIDE2ICsgNCArIDggKyA0ICsgOCArIDQgKyA4ICsgNCArIDQgKyA0ICsgNCArIDQgKyA0ICsgNCArIDEgKyA0ICsgMSArIDQgKworICAgICAgNCArIDggKyBzZWdtZW50LT5uX2RlbHRhX2VudHJpZXMgKiA2ICsgNCArIDggKworICAgICAgc2VnbWVudC0+bl9pbmRleF9lbnRyaWVzICogKDExICsgNCAqIHNlZ21lbnQtPnNsaWNlX2NvdW50ICsKKyAgICAgIDggKiBzZWdtZW50LT5wb3NfdGFibGVfY291bnQpOworICBzbGVuID0gbXhmX2Jlcl9lbmNvZGVfc2l6ZSAobGVuLCBiZXIpOworCisgIHJldCA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAoMTYgKyBzbGVuICsgbGVuKTsKKyAgZ3N0X2J1ZmZlcl9tYXAgKHJldCwgJm1hcCwgR1NUX01BUF9XUklURSk7CisKKyAgZ3N0X2J5dGVfd3JpdGVyX2luaXRfd2l0aF9kYXRhICgmYncsIG1hcC5kYXRhLCBtYXAuc2l6ZSwgRkFMU0UpOworCisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfZGF0YV91bmNoZWNrZWQgKCZidywKKyAgICAgIChjb25zdCBndWludDggKikgTVhGX1VMIChJTkRFWF9UQUJMRV9TRUdNRU5UKSwgMTYpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X2RhdGFfdW5jaGVja2VkICgmYncsIGJlciwgc2xlbik7CisKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDB4M2MwYSk7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCAxNik7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfZGF0YV91bmNoZWNrZWQgKCZidywKKyAgICAgIChjb25zdCBndWludDggKikgJnNlZ21lbnQtPmluc3RhbmNlX2lkLCAxNik7CisKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDB4M2YwYik7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCA4KTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MzJfYmVfdW5jaGVja2VkICgmYncsIHNlZ21lbnQtPmluZGV4X2VkaXRfcmF0ZS5uKTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MzJfYmVfdW5jaGVja2VkICgmYncsIHNlZ21lbnQtPmluZGV4X2VkaXRfcmF0ZS5kKTsKKworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgMHgzZjBjKTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDgpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQ2NF9iZV91bmNoZWNrZWQgKCZidywgc2VnbWVudC0+aW5kZXhfc3RhcnRfcG9zaXRpb24pOworCisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCAweDNmMGQpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgOCk7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDY0X2JlX3VuY2hlY2tlZCAoJmJ3LCBzZWdtZW50LT5pbmRleF9kdXJhdGlvbik7CisKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDB4M2YwNSk7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCA0KTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MzJfYmVfdW5jaGVja2VkICgmYncsIHNlZ21lbnQtPmVkaXRfdW5pdF9ieXRlX2NvdW50KTsKKworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgMHgzZjA2KTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDQpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZidywgc2VnbWVudC0+aW5kZXhfc2lkKTsKKworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgMHgzZjA3KTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDQpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZidywgc2VnbWVudC0+Ym9keV9zaWQpOworCisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCAweDNmMDgpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgMSk7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDggKCZidywgc2VnbWVudC0+c2xpY2VfY291bnQpOworCisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCAweDNmMGUpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgMSk7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDggKCZidywgc2VnbWVudC0+cG9zX3RhYmxlX2NvdW50KTsKKworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgMHgzZjA5KTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsCisgICAgICA4ICsgc2VnbWVudC0+bl9kZWx0YV9lbnRyaWVzICogNik7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDMyX2JlX3VuY2hlY2tlZCAoJmJ3LCBzZWdtZW50LT5uX2RlbHRhX2VudHJpZXMpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZidywgNik7CisgIGZvciAoaSA9IDA7IGkgPCBzZWdtZW50LT5uX2RlbHRhX2VudHJpZXM7IGkrKykgeworICAgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDhfdW5jaGVja2VkICgmYncsCisgICAgICAgIHNlZ21lbnQtPmRlbHRhX2VudHJpZXNbaV0ucG9zX3RhYmxlX2luZGV4KTsKKyAgICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQ4X3VuY2hlY2tlZCAoJmJ3LCBzZWdtZW50LT5kZWx0YV9lbnRyaWVzW2ldLnNsaWNlKTsKKyAgICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZidywKKyAgICAgICAgc2VnbWVudC0+ZGVsdGFfZW50cmllc1tpXS5lbGVtZW50X2RlbHRhKTsKKyAgfQorCisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCAweDNmMGEpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywKKyAgICAgIDggKyBzZWdtZW50LT5uX2luZGV4X2VudHJpZXMgKiAoMTEgKyA0ICogc2VnbWVudC0+c2xpY2VfY291bnQgKworICAgICAgICAgIDggKiBzZWdtZW50LT5wb3NfdGFibGVfY291bnQpKTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MzJfYmVfdW5jaGVja2VkICgmYncsIHNlZ21lbnQtPm5faW5kZXhfZW50cmllcyk7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDMyX2JlX3VuY2hlY2tlZCAoJmJ3LAorICAgICAgKDExICsgNCAqIHNlZ21lbnQtPnNsaWNlX2NvdW50ICsgOCAqIHNlZ21lbnQtPnBvc190YWJsZV9jb3VudCkpOworICBmb3IgKGkgPSAwOyBpIDwgc2VnbWVudC0+bl9pbmRleF9lbnRyaWVzOyBpKyspIHsKKyAgICBndWludCBqOworCisgICAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50OF91bmNoZWNrZWQgKCZidywKKyAgICAgICAgc2VnbWVudC0+aW5kZXhfZW50cmllc1tpXS50ZW1wb3JhbF9vZmZzZXQpOworICAgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDhfdW5jaGVja2VkICgmYncsCisgICAgICAgIHNlZ21lbnQtPmluZGV4X2VudHJpZXNbaV0ua2V5X2ZyYW1lX29mZnNldCk7CisgICAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50OF91bmNoZWNrZWQgKCZidywgc2VnbWVudC0+aW5kZXhfZW50cmllc1tpXS5mbGFncyk7CisgICAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50NjRfYmVfdW5jaGVja2VkICgmYncsCisgICAgICAgIHNlZ21lbnQtPmluZGV4X2VudHJpZXNbaV0uc3RyZWFtX29mZnNldCk7CisKKyAgICBmb3IgKGogPSAwOyBqIDwgc2VnbWVudC0+c2xpY2VfY291bnQ7IGorKykKKyAgICAgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDMyX2JlX3VuY2hlY2tlZCAoJmJ3LAorICAgICAgICAgIHNlZ21lbnQtPmluZGV4X2VudHJpZXNbaV0uc2xpY2Vfb2Zmc2V0W2pdKTsKKworICAgIGZvciAoaiA9IDA7IGogPCBzZWdtZW50LT5wb3NfdGFibGVfY291bnQ7IGorKykgeworICAgICAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MzJfYmVfdW5jaGVja2VkICgmYncsCisgICAgICAgICAgc2VnbWVudC0+aW5kZXhfZW50cmllc1tpXS5wb3NfdGFibGVbal0ubik7CisgICAgICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZidywKKyAgICAgICAgICBzZWdtZW50LT5pbmRleF9lbnRyaWVzW2ldLnBvc190YWJsZVtqXS5kKTsKKyAgICB9CisgIH0KKworICBnX2Fzc2VydCAoZ3N0X2J5dGVfd3JpdGVyX2dldF9wb3MgKCZidykgPT0gbWFwLnNpemUpOworCisgIGdzdF9idWZmZXJfdW5tYXAgKHJldCwgJm1hcCk7CisKKyAgcmV0dXJuIHJldDsKK30KKwogLyogU01QVEUgMzc3TSA4LjIgVGFibGUgMSBhbmQgMiAqLwogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvZ3N0L214Zi9teGZ0eXBlcy5oIGIvZ3N0L214Zi9teGZ0eXBlcy5oCmluZGV4IDBjMzM4ZTcuLmM5NjU5MGUgMTAwNjQ0Ci0tLSBhL2dzdC9teGYvbXhmdHlwZXMuaAorKysgYi9nc3QvbXhmL214ZnR5cGVzLmgKQEAgLTE0OCw3ICsxNDgsNyBAQAogCiAgIGd1aW50OCBmbGFnczsKICAgZ3VpbnQ2NCBzdHJlYW1fb2Zmc2V0OwotICAKKwogICBndWludDMyICpzbGljZV9vZmZzZXQ7CiAgIE1YRkZyYWN0aW9uICpwb3NfdGFibGU7CiB9IE1YRkluZGV4RW50cnk7CkBAIC0xNjksOSArMTY5LDYgQEAKIAogICBndWludDMyIG5faW5kZXhfZW50cmllczsKICAgTVhGSW5kZXhFbnRyeSAqaW5kZXhfZW50cmllczsKLQotICBHSGFzaFRhYmxlICpvdGhlcl90YWdzOwotICBndWludDY0IHN0cmVhbV9vZmZzZXQ7CiB9IE1YRkluZGV4VGFibGVTZWdtZW50OwogCiAjZGVmaW5lIEdTVF9UQUdfTVhGX1VNSUQgIm14Zi11bWlkIgpAQCAtMjU0LDggKzI1MSw5IEBACiBnYm9vbGVhbiBteGZfcmFuZG9tX2luZGV4X3BhY2tfcGFyc2UgKGNvbnN0IE1YRlVMICp1bCwgY29uc3QgZ3VpbnQ4ICpkYXRhLCBndWludCBzaXplLCBHQXJyYXkgKiphcnJheSk7CiBHc3RCdWZmZXIgKiBteGZfcmFuZG9tX2luZGV4X3BhY2tfdG9fYnVmZmVyIChjb25zdCBHQXJyYXkgKmFycmF5KTsKIAotZ2Jvb2xlYW4gbXhmX2luZGV4X3RhYmxlX3NlZ21lbnRfcGFyc2UgKGNvbnN0IE1YRlVMICp1bCwgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKnNlZ21lbnQsIGNvbnN0IE1YRlByaW1lclBhY2sgKnByaW1lciwgY29uc3QgZ3VpbnQ4ICpkYXRhLCBndWludCBzaXplKTsKK2dib29sZWFuIG14Zl9pbmRleF90YWJsZV9zZWdtZW50X3BhcnNlIChjb25zdCBNWEZVTCAqdWwsIE1YRkluZGV4VGFibGVTZWdtZW50ICpzZWdtZW50LCBjb25zdCBndWludDggKmRhdGEsIGd1aW50IHNpemUpOwogdm9pZCBteGZfaW5kZXhfdGFibGVfc2VnbWVudF9yZXNldCAoTVhGSW5kZXhUYWJsZVNlZ21lbnQgKnNlZ21lbnQpOworR3N0QnVmZmVyICogbXhmX2luZGV4X3RhYmxlX3NlZ21lbnRfdG9fYnVmZmVyIChjb25zdCBNWEZJbmRleFRhYmxlU2VnbWVudCAqc2VnbWVudCk7CiAKIGdib29sZWFuIG14Zl9sb2NhbF90YWdfcGFyc2UgKGNvbnN0IGd1aW50OCAqIGRhdGEsIGd1aW50IHNpemUsIGd1aW50MTYgKiB0YWcsCiAgICAgZ3VpbnQxNiAqIHRhZ19zaXplLCBjb25zdCBndWludDggKiogdGFnX2RhdGEpOwpkaWZmIC0tZ2l0IGEvZ3N0L214Zi9teGZ1bC5jIGIvZ3N0L214Zi9teGZ1bC5jCmluZGV4IGI1Mzg5ZjYuLjNkMTg2ZjkgMTAwNjQ0Ci0tLSBhL2dzdC9teGYvbXhmdWwuYworKysgYi9nc3QvbXhmL214ZnVsLmMKQEAgLTEyMSw2ICsxMjEsOSBAQAogICB7ezB4MDYsIDB4MEUsIDB4MkIsIDB4MzQsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDIsCiAgICAgICAgICAgMHgwNiwgMHgwMSwgMHgwMSwgMHgwNCwgMHgwNiwgMHgwNCwgMHgwMCwgMHgwMH19LAogICAvKiBDT05URU5UX1NUT1JBR0UgKi8KKyAge3sweDA2LCAweDBFLCAweDJCLCAweDM0LCAweDAxLCAweDAxLCAweDAxLCAweDAyLAorICAgICAgICAgIDB4MDYsIDB4MDEsIDB4MDEsIDB4MDQsIDB4MDIsIDB4MDEsIDB4MDAsIDB4MDB9fSwKKyAgLyogT1BFUkFUSU9OQUxfUEFUVEVSTiAqLwogICB7ezB4MDYsIDB4MEUsIDB4MkIsIDB4MzQsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDUsCiAgICAgICAgICAgMHgwMSwgMHgwMiwgMHgwMiwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMH19LAogICAvKiBFU1NFTkNFX0NPTlRBSU5FUlMgKi8KQEAgLTEzMCw2ICsxMzMsOSBAQAogICB7ezB4MDYsIDB4MEUsIDB4MkIsIDB4MzQsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDUsCiAgICAgICAgICAgMHgwMSwgMHgwMiwgMHgwMiwgMHgxMCwgMHgwMiwgMHgwMiwgMHgwMCwgMHgwMH19LAogICAvKiBJZGVudGlmaWNhdGlvbiAqLworICAvKiBUSElTX0dFTkVSQVRJT05fVUlEICovCisgIHt7MHgwNiwgMHgwRSwgMHgyQiwgMHgzNCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMiwKKyAgICAgICAgICAweDA1LCAweDIwLCAweDA3LCAweDAxLCAweDAxLCAweDAwLCAweDAwLCAweDAwfX0sCiAgIC8qIENPTVBBTllfTkFNRSAqLwogICB7ezB4MDYsIDB4MEUsIDB4MkIsIDB4MzQsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDIsCiAgICAgICAgICAgMHgwNSwgMHgyMCwgMHgwNywgMHgwMSwgMHgwMiwgMHgwMSwgMHgwMCwgMHgwMH19LApkaWZmIC0tZ2l0IGEvZ3N0L214Zi9teGZ1bC5oIGIvZ3N0L214Zi9teGZ1bC5oCmluZGV4IDdiNzZmNDMuLjc2ZTNiYTYgMTAwNjQ0Ci0tLSBhL2dzdC9teGYvbXhmdWwuaAorKysgYi9nc3QvbXhmL214ZnVsLmgKQEAgLTYzLDYgKzYzLDcgQEAKICAgTVhGX1VMX09QRVJBVElPTkFMX1BBVFRFUk4sCiAgIE1YRl9VTF9FU1NFTkNFX0NPTlRBSU5FUlMsCiAgIE1YRl9VTF9ETV9TQ0hFTUVTLAorICBNWEZfVUxfVEhJU19HRU5FUkFUSU9OX1VJRCwKICAgTVhGX1VMX0NPTVBBTllfTkFNRSwKICAgTVhGX1VMX1BST0RVQ1RfTkFNRSwKICAgTVhGX1VMX1BST0RVQ1RfVkVSU0lPTiwKZGlmZiAtLWdpdCBhL2dzdC9teGYvbXhmdmMzLmMgYi9nc3QvbXhmL214ZnZjMy5jCmluZGV4IGJkMmNhMjkuLjJmMmU1YjAgMTAwNjQ0Ci0tLSBhL2dzdC9teGYvbXhmdmMzLmMKKysrIGIvZ3N0L214Zi9teGZ2YzMuYwpAQCAtMTIwLDcgKzEyMCw3IEBACiAgICAgICAgICAgICAgICAgcGFyZW50LmRlc2NyaXB0b3JbaV0pKSkKICAgICAgIGNvbnRpbnVlOwogCi0gICAgc3dpdGNoICh0cmFjay0+cGFyZW50LmRlc2NyaXB0b3JbaV0tPmVzc2VuY2VfY29udGFpbmVyLnVbMTVdKSB7CisgICAgc3dpdGNoICh0cmFjay0+cGFyZW50LmRlc2NyaXB0b3JbaV0tPmVzc2VuY2VfY29udGFpbmVyLnVbMTRdKSB7CiAgICAgICBjYXNlIDB4MDE6CiAgICAgICAgIHJldHVybiBNWEZfRVNTRU5DRV9XUkFQUElOR19GUkFNRV9XUkFQUElORzsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9nc3QvbmV0c2ltL01ha2VmaWxlLmFtIGIvZ3N0L25ldHNpbS9NYWtlZmlsZS5hbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTQ1Mjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0L25ldHNpbS9NYWtlZmlsZS5hbQpAQCAtMCwwICsxLDkgQEAKK3BsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdG5ldHNpbS5sYQorCitsaWJnc3RuZXRzaW1fbGFfU09VUkNFUyA9IGdzdG5ldHNpbS5jCitsaWJnc3RuZXRzaW1fbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykKK2xpYmdzdG5ldHNpbV9sYV9MSUJBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKQorbGliZ3N0bmV0c2ltX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKK2xpYmdzdG5ldHNpbV9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQorCitub2luc3RfSEVBREVSUyA9IGdzdG5ldHNpbS5oCmRpZmYgLS1naXQgYS9nc3QvbGl2ZWFkZGVyL01ha2VmaWxlLmluIGIvZ3N0L25ldHNpbS9NYWtlZmlsZS5pbgpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBnc3QvbGl2ZWFkZGVyL01ha2VmaWxlLmluCnJlbmFtZSB0byBnc3QvbmV0c2ltL01ha2VmaWxlLmluCmluZGV4IGJhOWU1YTIuLjhiNmUzMmYgMTAwNjQ0Ci0tLSBhL2dzdC9saXZlYWRkZXIvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L25ldHNpbS9NYWtlZmlsZS5pbgpAQCAtOTAsNyArOTAsNyBAQAogYnVpbGRfdHJpcGxldCA9IEBidWlsZEAKIGhvc3RfdHJpcGxldCA9IEBob3N0QAogdGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0QAotc3ViZGlyID0gZ3N0L2xpdmVhZGRlcgorc3ViZGlyID0gZ3N0L25ldHNpbQogQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAogYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWFjLWV4cGFuZC5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYXV0by1hbHQubTQgXApAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xNjQsMTggKzE2MywxOCBAQAogYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHBsdWdpbmRpcikiCiBMVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KLWxpYmdzdGxpdmVhZGRlcl9sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorbGliZ3N0bmV0c2ltX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKQotYW1fbGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMgPSBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvCi1saWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpCithbV9saWJnc3RuZXRzaW1fbGFfT0JKRUNUUyA9IGxpYmdzdG5ldHNpbV9sYS1nc3RuZXRzaW0ubG8KK2xpYmdzdG5ldHNpbV9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RuZXRzaW1fbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKIGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9sdF8wID0gLS1zaWxlbnQKIGFtX192X2x0XzEgPSAKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKLQkkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayBcCi0JJChDQ0xEKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSBcCi0JJChsaWJnc3RsaXZlYWRkZXJfbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAorbGliZ3N0bmV0c2ltX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAorCSQobGliZ3N0bmV0c2ltX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rIFwKKwkkKENDTEQpICQobGliZ3N0bmV0c2ltX2xhX0NGTEFHUykgJChDRkxBR1MpIFwKKwkkKGxpYmdzdG5ldHNpbV9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACiBBTV9WX1AgPSAkKGFtX192X1BfQEFNX1ZAKQogYW1fX3ZfUF8gPSAkKGFtX192X1BfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9QXzAgPSBmYWxzZQpAQCAtMjEwLDggKzIwOSw4IEBACiBhbV9fdl9DQ0xEXyA9ICQoYW1fX3ZfQ0NMRF9AQU1fREVGQVVMVF9WQCkKIGFtX192X0NDTERfMCA9IEBlY2hvICIgIENDTEQgICAgIiAkQDsKIGFtX192X0NDTERfMSA9IAotU09VUkNFUyA9ICQobGliZ3N0bGl2ZWFkZGVyX2xhX1NPVVJDRVMpCi1ESVNUX1NPVVJDRVMgPSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTKQorU09VUkNFUyA9ICQobGliZ3N0bmV0c2ltX2xhX1NPVVJDRVMpCitESVNUX1NPVVJDRVMgPSAkKGxpYmdzdG5ldHNpbV9sYV9TT1VSQ0VTKQogYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCiAgIGNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAogICAgIG58bm98Tk8pIGZhbHNlOzsgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NjEsMTYgKzc3NSwxMyBAQAogdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RsaXZlYWRkZXIubGEKLWxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTID0gbGl2ZWFkZGVyLmMKLWxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSUJBREQgPSBcCi0JJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykKLQotbGliZ3N0bGl2ZWFkZGVyX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQotbm9pbnN0X0hFQURFUlMgPSBsaXZlYWRkZXIuaAorcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0bmV0c2ltLmxhCitsaWJnc3RuZXRzaW1fbGFfU09VUkNFUyA9IGdzdG5ldHNpbS5jCitsaWJnc3RuZXRzaW1fbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykKK2xpYmdzdG5ldHNpbV9sYV9MSUJBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKQorbGliZ3N0bmV0c2ltX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKK2xpYmdzdG5ldHNpbV9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQorbm9pbnN0X0hFQURFUlMgPSBnc3RuZXRzaW0uaAogYWxsOiBhbGwtYW0KIAogLlNVRkZJWEVTOgpAQCAtNzg0LDkgKzc5NSw5IEBACiAJICAgICAgZXhpdCAxOzsgXAogCSAgZXNhYzsgXAogCWRvbmU7IFwKLQllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBnc3QvbGl2ZWFkZGVyL01ha2VmaWxlJzsgXAorCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZ251IGdzdC9uZXRzaW0vTWFrZWZpbGUnOyBcCiAJJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAotCSAgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L2xpdmVhZGRlci9NYWtlZmlsZQorCSAgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L25ldHNpbS9NYWtlZmlsZQogTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwogCUBjYXNlICckPycgaW4gXAogCSAgKmNvbmZpZy5zdGF0dXMqKSBcCkBAIC04NDAsOCArODUxLDggQEAKIAkgIHJtIC1mICQke2xvY3N9OyBcCiAJfQogCi1saWJnc3RsaXZlYWRkZXIubGE6ICQobGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTKSAKLQkkKEFNX1ZfQ0NMRCkkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSU5LKSAtcnBhdGggJChwbHVnaW5kaXIpICQobGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQkFERCkgJChMSUJTKQorbGliZ3N0bmV0c2ltLmxhOiAkKGxpYmdzdG5ldHNpbV9sYV9PQkpFQ1RTKSAkKGxpYmdzdG5ldHNpbV9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0bmV0c2ltX2xhX0RFUEVOREVOQ0lFUykgCisJJChBTV9WX0NDTEQpJChsaWJnc3RuZXRzaW1fbGFfTElOSykgLXJwYXRoICQocGx1Z2luZGlyKSAkKGxpYmdzdG5ldHNpbV9sYV9PQkpFQ1RTKSAkKGxpYmdzdG5ldHNpbV9sYV9MSUJBREQpICQoTElCUykKIAogbW9zdGx5Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi4kKE9CSkVYVCkKQEAgLTg0OSw3ICs4NjAsNyBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RuZXRzaW1fbGEtZ3N0bmV0c2ltLlBsb0BhbV9fcXVvdGVACiAKIC5jLm86CiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCkBAIC04NzUsMTIgKzg4NiwxMiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAogCi1saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvOiBsaXZlYWRkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuVHBvIC1jIC1vIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gYHRlc3QgLWYgJ2xpdmVhZGRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaXZlYWRkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5UcG8gJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbGl2ZWFkZGVyLmMnIG9iamVjdD0nbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0bmV0c2ltX2xhLWdzdG5ldHNpbS5sbzogZ3N0bmV0c2ltLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RuZXRzaW1fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bmV0c2ltX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RuZXRzaW1fbGEtZ3N0bmV0c2ltLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RuZXRzaW1fbGEtZ3N0bmV0c2ltLlRwbyAtYyAtbyBsaWJnc3RuZXRzaW1fbGEtZ3N0bmV0c2ltLmxvIGB0ZXN0IC1mICdnc3RuZXRzaW0uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0bmV0c2ltLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG5ldHNpbV9sYS1nc3RuZXRzaW0uVHBvICQoREVQRElSKS9saWJnc3RuZXRzaW1fbGEtZ3N0bmV0c2ltLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG5ldHNpbS5jJyBvYmplY3Q9J2xpYmdzdG5ldHNpbV9sYS1nc3RuZXRzaW0ubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gYHRlc3QgLWYgJ2xpdmVhZGRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaXZlYWRkZXIuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG5ldHNpbV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RuZXRzaW1fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0bmV0c2ltX2xhLWdzdG5ldHNpbS5sbyBgdGVzdCAtZiAnZ3N0bmV0c2ltLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG5ldHNpbS5jCiAKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KZGlmZiAtLWdpdCBhL2dzdC9uZXRzaW0vZ3N0bmV0c2ltLmMgYi9nc3QvbmV0c2ltL2dzdG5ldHNpbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMTVhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QvbmV0c2ltL2dzdG5ldHNpbS5jCkBAIC0wLDAgKzEsNDcyIEBACisvKgorICogR1N0cmVhbWVyCisgKgorICogIENvcHlyaWdodCAyMDA2IENvbGxhYm9yYSBMdGQsCisgKiAgQ29weXJpZ2h0IDIwMDYgTm9raWEgQ29ycG9yYXRpb24KKyAqICAgQGF1dGhvcjogUGhpbGlwcGUgS2FsYWYgPHBoaWxpcHBlLmthbGFmQGNvbGxhYm9yYS5jby51az4uCisgKiAgQ29weXJpZ2h0IDIwMTItMjAxNSBQZXhpcAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJnc3RuZXRzaW0uaCIKKworR1NUX0RFQlVHX0NBVEVHT1JZIChuZXRzaW1fZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgKG5ldHNpbV9kZWJ1ZykKKworCitlbnVtCit7CisgIEFSR18wLAorICBBUkdfTUlOX0RFTEFZLAorICBBUkdfTUFYX0RFTEFZLAorICBBUkdfREVMQVlfUFJPQkFCSUxJVFksCisgIEFSR19EUk9QX1BST0JBQklMSVRZLAorICBBUkdfRFVQTElDQVRFX1BST0JBQklMSVRZLAorICBBUkdfRFJPUF9QQUNLRVRTCit9OworCitzdHJ1Y3QgX0dzdE5ldFNpbVByaXZhdGUKK3sKKyAgR3N0UGFkICpzaW5rcGFkLCAqc3JjcGFkOworCisgIEdNdXRleCBsb29wX211dGV4OworICBHQ29uZCBzdGFydF9jb25kOworICBHTWFpbkxvb3AgKm1haW5fbG9vcDsKKyAgZ2Jvb2xlYW4gcnVubmluZzsKKworICBHUmFuZCAqcmFuZF9zZWVkOworICBnaW50IG1pbl9kZWxheTsKKyAgZ2ludCBtYXhfZGVsYXk7CisgIGdmbG9hdCBkZWxheV9wcm9iYWJpbGl0eTsKKyAgZ2Zsb2F0IGRyb3BfcHJvYmFiaWxpdHk7CisgIGdmbG9hdCBkdXBsaWNhdGVfcHJvYmFiaWxpdHk7CisgIGd1aW50IGRyb3BfcGFja2V0czsKK307CisKKy8qIHRoZXNlIG51bWJlcnMgYXJlIG5vdGhpbmcgYnV0IHdpbGQgZ3Vlc3NlcyBhbmQgZG9udCByZWZsZWN0IGFueSByZWFsaXR5ICovCisjZGVmaW5lIERFRkFVTFRfTUlOX0RFTEFZIDIwMAorI2RlZmluZSBERUZBVUxUX01BWF9ERUxBWSA0MDAKKyNkZWZpbmUgREVGQVVMVF9ERUxBWV9QUk9CQUJJTElUWSAwLjAKKyNkZWZpbmUgREVGQVVMVF9EUk9QX1BST0JBQklMSVRZIDAuMAorI2RlZmluZSBERUZBVUxUX0RVUExJQ0FURV9QUk9CQUJJTElUWSAwLjAKKyNkZWZpbmUgREVGQVVMVF9EUk9QX1BBQ0tFVFMgMAorCisjZGVmaW5lIEdTVF9ORVRfU0lNX0dFVF9QUklWQVRFKG8pIFwKKyAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSAoKG8pLCBHU1RfVFlQRV9ORVRfU0lNLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdE5ldFNpbVByaXZhdGUpKQorCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X25ldF9zaW1fc2lua190ZW1wbGF0ZSA9CitHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAorICAgIEdTVF9QQURfU0lOSywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFNfQU5ZKTsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF9uZXRfc2ltX3NyY190ZW1wbGF0ZSA9CitHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCisgICAgR1NUX1BBRF9TUkMsCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTX0FOWSk7CisKK0dfREVGSU5FX1RZUEUgKEdzdE5ldFNpbSwgZ3N0X25ldF9zaW0sIEdTVF9UWVBFX0VMRU1FTlQpOworCitzdGF0aWMgdm9pZAorZ3N0X25ldF9zaW1fbG9vcCAoR3N0TmV0U2ltICogbmV0c2ltKQoreworICBHTWFpbkxvb3AgKmxvb3A7CisKKyAgR1NUX1RSQUNFX09CSkVDVCAobmV0c2ltLCAiVEFTSzogYmVnaW4iKTsKKworICBnX211dGV4X2xvY2sgKCZuZXRzaW0tPnByaXYtPmxvb3BfbXV0ZXgpOworICBsb29wID0gZ19tYWluX2xvb3BfcmVmIChuZXRzaW0tPnByaXYtPm1haW5fbG9vcCk7CisgIG5ldHNpbS0+cHJpdi0+cnVubmluZyA9IFRSVUU7CisgIEdTVF9UUkFDRV9PQkpFQ1QgKG5ldHNpbSwgIlRBU0s6IHNpZ25hbCBzdGFydCIpOworICBnX2NvbmRfc2lnbmFsICgmbmV0c2ltLT5wcml2LT5zdGFydF9jb25kKTsKKyAgZ19tdXRleF91bmxvY2sgKCZuZXRzaW0tPnByaXYtPmxvb3BfbXV0ZXgpOworCisgIEdTVF9UUkFDRV9PQkpFQ1QgKG5ldHNpbSwgIlRBU0s6IHJ1biIpOworICBnX21haW5fbG9vcF9ydW4gKGxvb3ApOworICBnX21haW5fbG9vcF91bnJlZiAobG9vcCk7CisKKyAgZ19tdXRleF9sb2NrICgmbmV0c2ltLT5wcml2LT5sb29wX211dGV4KTsKKyAgR1NUX1RSQUNFX09CSkVDVCAobmV0c2ltLCAiVEFTSzogcGF1c2UiKTsKKyAgZ3N0X3BhZF9wYXVzZV90YXNrIChuZXRzaW0tPnByaXYtPnNyY3BhZCk7CisgIG5ldHNpbS0+cHJpdi0+cnVubmluZyA9IEZBTFNFOworICBHU1RfVFJBQ0VfT0JKRUNUIChuZXRzaW0sICJUQVNLOiBzaWduYWwgZW5kIik7CisgIGdfY29uZF9zaWduYWwgKCZuZXRzaW0tPnByaXYtPnN0YXJ0X2NvbmQpOworICBnX211dGV4X3VubG9jayAoJm5ldHNpbS0+cHJpdi0+bG9vcF9tdXRleCk7CisgIEdTVF9UUkFDRV9PQkpFQ1QgKG5ldHNpbSwgIlRBU0s6IGVuZCIpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19tYWluX2xvb3BfcXVpdF9hbmRfcmVtb3ZlX3NvdXJjZSAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHTWFpbkxvb3AgKm1haW5fbG9vcCA9IHVzZXJfZGF0YTsKKyAgR1NUX0RFQlVHICgiTUFJTkxPT1A6IFF1aXQgJXAiLCBtYWluX2xvb3ApOworICBnX21haW5fbG9vcF9xdWl0IChtYWluX2xvb3ApOworICBnX2Fzc2VydCAoIWdfbWFpbl9sb29wX2lzX3J1bm5pbmcgKG1haW5fbG9vcCkpOworICByZXR1cm4gRkFMU0U7ICAgICAgICAgICAgICAgICAvKiBSZW1vdmUgc291cmNlICovCit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X25ldF9zaW1fc3JjX2FjdGl2YXRlbW9kZSAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCisgICAgR3N0UGFkTW9kZSBtb2RlLCBnYm9vbGVhbiBhY3RpdmUpCit7CisgIEdzdE5ldFNpbSAqbmV0c2ltID0gR1NUX05FVF9TSU0gKHBhcmVudCk7CisgIGdib29sZWFuIHJlc3VsdCA9IEZBTFNFOworCisgICh2b2lkKSBwYWQ7CisgICh2b2lkKSBtb2RlOworCisgIGdfbXV0ZXhfbG9jayAoJm5ldHNpbS0+cHJpdi0+bG9vcF9tdXRleCk7CisgIGlmIChhY3RpdmUpIHsKKyAgICBpZiAobmV0c2ltLT5wcml2LT5tYWluX2xvb3AgPT0gTlVMTCkgeworICAgICAgR01haW5Db250ZXh0ICptYWluX2NvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcgKCk7CisgICAgICBuZXRzaW0tPnByaXYtPm1haW5fbG9vcCA9IGdfbWFpbl9sb29wX25ldyAobWFpbl9jb250ZXh0LCBGQUxTRSk7CisgICAgICBnX21haW5fY29udGV4dF91bnJlZiAobWFpbl9jb250ZXh0KTsKKworICAgICAgR1NUX1RSQUNFX09CSkVDVCAobmV0c2ltLCAiQUNUOiBTdGFydGluZyB0YXNrIG9uIHNyY3BhZCIpOworICAgICAgcmVzdWx0ID0gZ3N0X3BhZF9zdGFydF90YXNrIChuZXRzaW0tPnByaXYtPnNyY3BhZCwKKyAgICAgICAgICAoR3N0VGFza0Z1bmN0aW9uKSBnc3RfbmV0X3NpbV9sb29wLCBuZXRzaW0sIE5VTEwpOworCisgICAgICBHU1RfVFJBQ0VfT0JKRUNUIChuZXRzaW0sICJBQ1Q6IFdhaXQgZm9yIHRhc2sgdG8gc3RhcnQiKTsKKyAgICAgIGdfYXNzZXJ0ICghbmV0c2ltLT5wcml2LT5ydW5uaW5nKTsKKyAgICAgIHdoaWxlICghbmV0c2ltLT5wcml2LT5ydW5uaW5nKQorICAgICAgICBnX2NvbmRfd2FpdCAoJm5ldHNpbS0+cHJpdi0+c3RhcnRfY29uZCwgJm5ldHNpbS0+cHJpdi0+bG9vcF9tdXRleCk7CisgICAgICBHU1RfVFJBQ0VfT0JKRUNUIChuZXRzaW0sICJBQ1Q6IFRhc2sgb24gc3JjcGFkIHN0YXJ0ZWQiKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKG5ldHNpbS0+cHJpdi0+bWFpbl9sb29wICE9IE5VTEwpIHsKKyAgICAgIEdTb3VyY2UgKnNvdXJjZTsKKyAgICAgIGd1aW50IGlkOworCisgICAgICAvKiBBZGRzIGFuIElkbGUgU291cmNlIHdoaWNoIHF1aXRzIHRoZSBtYWluIGxvb3AgZnJvbSB3aXRoaW4uCisgICAgICAgKiBUaGlzIHJlbW92ZXMgdGhlIHBvc3NpYmlsaXR5IGZvciBydW4vcXVpdCByYWNlIGNvbmRpdGlvbnMuICovCisgICAgICBHU1RfVFJBQ0VfT0JKRUNUIChuZXRzaW0sICJERUFDVDogU3RvcHBpbmcgbWFpbiBsb29wIG9uIGRlYWN0aXZhdGUiKTsKKyAgICAgIHNvdXJjZSA9IGdfaWRsZV9zb3VyY2VfbmV3ICgpOworICAgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrIChzb3VyY2UsIF9tYWluX2xvb3BfcXVpdF9hbmRfcmVtb3ZlX3NvdXJjZSwKKyAgICAgICAgICBnX21haW5fbG9vcF9yZWYgKG5ldHNpbS0+cHJpdi0+bWFpbl9sb29wKSwKKyAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdfbWFpbl9sb29wX3VucmVmKTsKKyAgICAgIGlkID0gZ19zb3VyY2VfYXR0YWNoIChzb3VyY2UsCisgICAgICAgICAgZ19tYWluX2xvb3BfZ2V0X2NvbnRleHQgKG5ldHNpbS0+cHJpdi0+bWFpbl9sb29wKSk7CisgICAgICBnX3NvdXJjZV91bnJlZiAoc291cmNlKTsKKyAgICAgIGdfYXNzZXJ0X2NtcHVpbnQgKGlkLCA+LCAwKTsKKyAgICAgIGdfbWFpbl9sb29wX3VucmVmIChuZXRzaW0tPnByaXYtPm1haW5fbG9vcCk7CisgICAgICBuZXRzaW0tPnByaXYtPm1haW5fbG9vcCA9IE5VTEw7CisKKyAgICAgIEdTVF9UUkFDRV9PQkpFQ1QgKG5ldHNpbSwgIkRFQUNUOiBXYWl0IGZvciBtYWlubG9vcCBhbmQgdGFzayB0byBwYXVzZSIpOworICAgICAgZ19hc3NlcnQgKG5ldHNpbS0+cHJpdi0+cnVubmluZyk7CisgICAgICB3aGlsZSAobmV0c2ltLT5wcml2LT5ydW5uaW5nKQorICAgICAgICBnX2NvbmRfd2FpdCAoJm5ldHNpbS0+cHJpdi0+c3RhcnRfY29uZCwgJm5ldHNpbS0+cHJpdi0+bG9vcF9tdXRleCk7CisKKyAgICAgIEdTVF9UUkFDRV9PQkpFQ1QgKG5ldHNpbSwgIkRFQUNUOiBTdG9wcGluZyB0YXNrIG9uIHNyY3BhZCIpOworICAgICAgcmVzdWx0ID0gZ3N0X3BhZF9zdG9wX3Rhc2sgKG5ldHNpbS0+cHJpdi0+c3JjcGFkKTsKKyAgICAgIEdTVF9UUkFDRV9PQkpFQ1QgKG5ldHNpbSwgIkRFQUNUOiBNYWlubG9vcCBhbmQgR3N0VGFzayBzdG9wcGVkIik7CisgICAgfQorICB9CisgIGdfbXV0ZXhfdW5sb2NrICgmbmV0c2ltLT5wcml2LT5sb29wX211dGV4KTsKKworICByZXR1cm4gcmVzdWx0OworfQorCit0eXBlZGVmIHN0cnVjdAoreworICBHc3RQYWQgKnBhZDsKKyAgR3N0QnVmZmVyICpidWY7Cit9IFB1c2hCdWZmZXJDdHg7CisKK0dfSU5MSU5FX0ZVTkMgUHVzaEJ1ZmZlckN0eCAqCitwdXNoX2J1ZmZlcl9jdHhfbmV3IChHc3RQYWQgKiBwYWQsIEdzdEJ1ZmZlciAqIGJ1ZikKK3sKKyAgUHVzaEJ1ZmZlckN0eCAqY3R4ID0gZ19zbGljZV9uZXcgKFB1c2hCdWZmZXJDdHgpOworICBjdHgtPnBhZCA9IGdzdF9vYmplY3RfcmVmIChwYWQpOworICBjdHgtPmJ1ZiA9IGdzdF9idWZmZXJfcmVmIChidWYpOworICByZXR1cm4gY3R4OworfQorCitHX0lOTElORV9GVU5DIHZvaWQKK3B1c2hfYnVmZmVyX2N0eF9mcmVlIChQdXNoQnVmZmVyQ3R4ICogY3R4KQoreworICBpZiAoR19MSUtFTFkgKGN0eCAhPSBOVUxMKSkgeworICAgIGdzdF9idWZmZXJfdW5yZWYgKGN0eC0+YnVmKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChjdHgtPnBhZCk7CisgICAgZ19zbGljZV9mcmVlIChQdXNoQnVmZmVyQ3R4LCBjdHgpOworICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorcHVzaF9idWZmZXJfY3R4X3B1c2ggKFB1c2hCdWZmZXJDdHggKiBjdHgpCit7CisgIEdTVF9ERUJVR19PQkpFQ1QgKGN0eC0+cGFkLCAiUHVzaGluZyBidWZmZXIgbm93Iik7CisgIGdzdF9wYWRfcHVzaCAoY3R4LT5wYWQsIGdzdF9idWZmZXJfcmVmIChjdHgtPmJ1ZikpOworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitnc3RfbmV0X3NpbV9kZWxheV9idWZmZXIgKEdzdE5ldFNpbSAqIG5ldHNpbSwgR3N0QnVmZmVyICogYnVmKQoreworICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOworCisgIGdfbXV0ZXhfbG9jayAoJm5ldHNpbS0+cHJpdi0+bG9vcF9tdXRleCk7CisgIGlmIChuZXRzaW0tPnByaXYtPm1haW5fbG9vcCAhPSBOVUxMICYmIG5ldHNpbS0+cHJpdi0+ZGVsYXlfcHJvYmFiaWxpdHkgPiAwICYmCisgICAgICBnX3JhbmRfZG91YmxlIChuZXRzaW0tPnByaXYtPnJhbmRfc2VlZCkgPCBuZXRzaW0tPnByaXYtPmRlbGF5X3Byb2JhYmlsaXR5KQorICB7CisgICAgUHVzaEJ1ZmZlckN0eCAqY3R4ID0gcHVzaF9idWZmZXJfY3R4X25ldyAobmV0c2ltLT5wcml2LT5zcmNwYWQsIGJ1Zik7CisgICAgZ2ludCBkZWxheSA9IGdfcmFuZF9pbnRfcmFuZ2UgKG5ldHNpbS0+cHJpdi0+cmFuZF9zZWVkLAorICAgICAgICBuZXRzaW0tPnByaXYtPm1pbl9kZWxheSwgbmV0c2ltLT5wcml2LT5tYXhfZGVsYXkpOworICAgIEdTb3VyY2UgKnNvdXJjZSA9IGdfdGltZW91dF9zb3VyY2VfbmV3IChkZWxheSk7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUIChuZXRzaW0sICJEZWxheWluZyBwYWNrZXQgYnkgJWQiLCBkZWxheSk7CisgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrIChzb3VyY2UsIChHU291cmNlRnVuYykgcHVzaF9idWZmZXJfY3R4X3B1c2gsCisgICAgICAgIGN0eCwgKEdEZXN0cm95Tm90aWZ5KSBwdXNoX2J1ZmZlcl9jdHhfZnJlZSk7CisgICAgZ19zb3VyY2VfYXR0YWNoIChzb3VyY2UsIGdfbWFpbl9sb29wX2dldF9jb250ZXh0IChuZXRzaW0tPnByaXYtPm1haW5fbG9vcCkpOworICAgIGdfc291cmNlX3VucmVmIChzb3VyY2UpOworICB9IGVsc2UgeworICAgIHJldCA9IGdzdF9wYWRfcHVzaCAobmV0c2ltLT5wcml2LT5zcmNwYWQsIGdzdF9idWZmZXJfcmVmIChidWYpKTsKKyAgfQorICBnX211dGV4X3VubG9jayAoJm5ldHNpbS0+cHJpdi0+bG9vcF9tdXRleCk7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF9uZXRfc2ltX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmKQoreworICBHc3ROZXRTaW0gKm5ldHNpbSA9IEdTVF9ORVRfU0lNIChwYXJlbnQpOworICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOworCisgICh2b2lkKSBwYWQ7CisKKyAgaWYgKG5ldHNpbS0+cHJpdi0+ZHJvcF9wYWNrZXRzID4gMCkgeworICAgIG5ldHNpbS0+cHJpdi0+ZHJvcF9wYWNrZXRzLS07CisgICAgR1NUX0RFQlVHX09CSkVDVCAobmV0c2ltLCAiRHJvcHBpbmcgcGFja2V0ICglZCBsZWZ0KSIsCisgICAgICAgIG5ldHNpbS0+cHJpdi0+ZHJvcF9wYWNrZXRzKTsKKyAgfSBlbHNlIGlmIChuZXRzaW0tPnByaXYtPmRyb3BfcHJvYmFiaWxpdHkgPiAwCisgICAgICAmJiBnX3JhbmRfZG91YmxlIChuZXRzaW0tPnByaXYtPnJhbmRfc2VlZCkgPAorICAgICAgKGdkb3VibGUpIG5ldHNpbS0+cHJpdi0+ZHJvcF9wcm9iYWJpbGl0eSkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKG5ldHNpbSwgIkRyb3BwaW5nIHBhY2tldCIpOworICB9IGVsc2UgaWYgKG5ldHNpbS0+cHJpdi0+ZHVwbGljYXRlX3Byb2JhYmlsaXR5ID4gMCAmJgorICAgICAgZ19yYW5kX2RvdWJsZSAobmV0c2ltLT5wcml2LT5yYW5kX3NlZWQpIDwKKyAgICAgIChnZG91YmxlKSBuZXRzaW0tPnByaXYtPmR1cGxpY2F0ZV9wcm9iYWJpbGl0eSkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKG5ldHNpbSwgIkR1cGxpY2F0aW5nIHBhY2tldCIpOworICAgIGdzdF9uZXRfc2ltX2RlbGF5X2J1ZmZlciAobmV0c2ltLCBidWYpOworICAgIHJldCA9IGdzdF9uZXRfc2ltX2RlbGF5X2J1ZmZlciAobmV0c2ltLCBidWYpOworICB9IGVsc2UgeworICAgIHJldCA9IGdzdF9uZXRfc2ltX2RlbGF5X2J1ZmZlciAobmV0c2ltLCBidWYpOworICB9CisKKyAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKworICByZXR1cm4gcmV0OworfQorCisKK3N0YXRpYyB2b2lkCitnc3RfbmV0X3NpbV9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCisgICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0TmV0U2ltICpuZXRzaW0gPSBHU1RfTkVUX1NJTSAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQVJHX01JTl9ERUxBWToKKyAgICAgIG5ldHNpbS0+cHJpdi0+bWluX2RlbGF5ID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFSR19NQVhfREVMQVk6CisgICAgICBuZXRzaW0tPnByaXYtPm1heF9kZWxheSA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUkdfREVMQVlfUFJPQkFCSUxJVFk6CisgICAgICBuZXRzaW0tPnByaXYtPmRlbGF5X3Byb2JhYmlsaXR5ID0gZ192YWx1ZV9nZXRfZmxvYXQgKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQVJHX0RST1BfUFJPQkFCSUxJVFk6CisgICAgICBuZXRzaW0tPnByaXYtPmRyb3BfcHJvYmFiaWxpdHkgPSBnX3ZhbHVlX2dldF9mbG9hdCAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUkdfRFVQTElDQVRFX1BST0JBQklMSVRZOgorICAgICAgbmV0c2ltLT5wcml2LT5kdXBsaWNhdGVfcHJvYmFiaWxpdHkgPSBnX3ZhbHVlX2dldF9mbG9hdCAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUkdfRFJPUF9QQUNLRVRTOgorICAgICAgbmV0c2ltLT5wcml2LT5kcm9wX3BhY2tldHMgPSBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X25ldF9zaW1fZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAorICAgIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdE5ldFNpbSAqbmV0c2ltID0gR1NUX05FVF9TSU0gKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFSR19NSU5fREVMQVk6CisgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBuZXRzaW0tPnByaXYtPm1pbl9kZWxheSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFSR19NQVhfREVMQVk6CisgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBuZXRzaW0tPnByaXYtPm1heF9kZWxheSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFSR19ERUxBWV9QUk9CQUJJTElUWToKKyAgICAgIGdfdmFsdWVfc2V0X2Zsb2F0ICh2YWx1ZSwgbmV0c2ltLT5wcml2LT5kZWxheV9wcm9iYWJpbGl0eSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFSR19EUk9QX1BST0JBQklMSVRZOgorICAgICAgZ192YWx1ZV9zZXRfZmxvYXQgKHZhbHVlLCBuZXRzaW0tPnByaXYtPmRyb3BfcHJvYmFiaWxpdHkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUkdfRFVQTElDQVRFX1BST0JBQklMSVRZOgorICAgICAgZ192YWx1ZV9zZXRfZmxvYXQgKHZhbHVlLCBuZXRzaW0tPnByaXYtPmR1cGxpY2F0ZV9wcm9iYWJpbGl0eSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFSR19EUk9QX1BBQ0tFVFM6CisgICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgbmV0c2ltLT5wcml2LT5kcm9wX3BhY2tldHMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworCitzdGF0aWMgdm9pZAorZ3N0X25ldF9zaW1faW5pdCAoR3N0TmV0U2ltICogbmV0c2ltKQoreworICBuZXRzaW0tPnByaXYgPSBHU1RfTkVUX1NJTV9HRVRfUFJJVkFURSAobmV0c2ltKTsKKworICBuZXRzaW0tPnByaXYtPnNyY3BhZCA9CisgICAgICBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJmdzdF9uZXRfc2ltX3NyY190ZW1wbGF0ZSwgInNyYyIpOworICBuZXRzaW0tPnByaXYtPnNpbmtwYWQgPQorICAgICAgZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZnc3RfbmV0X3NpbV9zaW5rX3RlbXBsYXRlLCAic2luayIpOworCisgIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChuZXRzaW0pLCBuZXRzaW0tPnByaXYtPnNyY3BhZCk7CisgIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChuZXRzaW0pLCBuZXRzaW0tPnByaXYtPnNpbmtwYWQpOworCisgIGdfbXV0ZXhfaW5pdCAoJm5ldHNpbS0+cHJpdi0+bG9vcF9tdXRleCk7CisgIGdfY29uZF9pbml0ICgmbmV0c2ltLT5wcml2LT5zdGFydF9jb25kKTsKKyAgbmV0c2ltLT5wcml2LT5yYW5kX3NlZWQgPSBnX3JhbmRfbmV3ICgpOworICBuZXRzaW0tPnByaXYtPm1haW5fbG9vcCA9IE5VTEw7CisKKyAgR1NUX09CSkVDVF9GTEFHX1NFVCAobmV0c2ltLT5wcml2LT5zaW5rcGFkLAorICAgICAgR1NUX1BBRF9GTEFHX1BST1hZX0NBUFMgfCBHU1RfUEFEX0ZMQUdfUFJPWFlfQUxMT0NBVElPTik7CisKKyAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKG5ldHNpbS0+cHJpdi0+c2lua3BhZCwKKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbmV0X3NpbV9jaGFpbikpOworICBnc3RfcGFkX3NldF9hY3RpdmF0ZW1vZGVfZnVuY3Rpb24gKG5ldHNpbS0+cHJpdi0+c3JjcGFkLAorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9uZXRfc2ltX3NyY19hY3RpdmF0ZW1vZGUpKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9uZXRfc2ltX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3ROZXRTaW0gKm5ldHNpbSA9IEdTVF9ORVRfU0lNIChvYmplY3QpOworCisgIGdfcmFuZF9mcmVlIChuZXRzaW0tPnByaXYtPnJhbmRfc2VlZCk7CisgIGdfbXV0ZXhfY2xlYXIgKCZuZXRzaW0tPnByaXYtPmxvb3BfbXV0ZXgpOworICBnX2NvbmRfY2xlYXIgKCZuZXRzaW0tPnByaXYtPnN0YXJ0X2NvbmQpOworCisgIEdfT0JKRUNUX0NMQVNTIChnc3RfbmV0X3NpbV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9uZXRfc2ltX2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdE5ldFNpbSAqbmV0c2ltID0gR1NUX05FVF9TSU0gKG9iamVjdCk7CisKKyAgZ19hc3NlcnQgKG5ldHNpbS0+cHJpdi0+bWFpbl9sb29wID09IE5VTEwpOworCisgIEdfT0JKRUNUX0NMQVNTIChnc3RfbmV0X3NpbV9wYXJlbnRfY2xhc3MpLT5kaXNwb3NlIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X25ldF9zaW1fY2xhc3NfaW5pdCAoR3N0TmV0U2ltQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKyAgR3N0RWxlbWVudENsYXNzICpnc3RlbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKKworICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUgKGtsYXNzLCBzaXplb2YgKEdzdE5ldFNpbVByaXZhdGUpKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X25ldF9zaW1fc3JjX3RlbXBsYXRlKSk7CisgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCisgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfbmV0X3NpbV9zaW5rX3RlbXBsYXRlKSk7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgIk5ldHdvcmsgU2ltdWxhdG9yIiwKKyAgICAgICJGaWx0ZXIvTmV0d29yayIsCisgICAgICAiQW4gZWxlbWVudCB0aGF0IHNpbXVsYXRlcyBuZXR3b3JrIGppdHRlciwgIgorICAgICAgInBhY2tldCBsb3NzIGFuZCBwYWNrZXQgZHVwbGljYXRpb24iLAorICAgICAgIlBoaWxpcHBlIEthbGFmIDxwaGlsaXBwZS5rYWxhZkBjb2xsYWJvcmEuY28udWs+Iik7CisKKyAgZ29iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbmV0X3NpbV9kaXNwb3NlKTsKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X25ldF9zaW1fZmluYWxpemUpOworCisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9uZXRfc2ltX3NldF9wcm9wZXJ0eTsKKyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X25ldF9zaW1fZ2V0X3Byb3BlcnR5OworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIEFSR19NSU5fREVMQVksCisgICAgICBnX3BhcmFtX3NwZWNfaW50ICgibWluLWRlbGF5IiwgIk1pbmltdW0gZGVsYXkgKG1zKSIsCisgICAgICAgICAgIlRoZSBtaW5pbXVtIGRlbGF5IGluIG1zIHRvIGFwcGx5IHRvIGJ1ZmZlcnMiLAorICAgICAgICAgIEdfTUlOSU5ULCBHX01BWElOVCwgREVGQVVMVF9NSU5fREVMQVksCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBBUkdfTUFYX0RFTEFZLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIm1heC1kZWxheSIsICJNYXhpbXVtIGRlbGF5IChtcykiLAorICAgICAgICAgICJUaGUgbWF4aW11bSBkZWxheSBpbiBtcyB0byBhcHBseSB0byBidWZmZXJzIiwKKyAgICAgICAgICBHX01JTklOVCwgR19NQVhJTlQsIERFRkFVTFRfTUFYX0RFTEFZLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgQVJHX0RFTEFZX1BST0JBQklMSVRZLAorICAgICAgZ19wYXJhbV9zcGVjX2Zsb2F0ICgiZGVsYXktcHJvYmFiaWxpdHkiLCAiRGVsYXkgUHJvYmFiaWxpdHkiLAorICAgICAgICAgICJUaGUgUHJvYmFiaWxpdHkgYSBidWZmZXIgaXMgZGVsYXllZCIsCisgICAgICAgICAgMC4wLCAxLjAsIERFRkFVTFRfREVMQVlfUFJPQkFCSUxJVFksCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVCB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBBUkdfRFJPUF9QUk9CQUJJTElUWSwKKyAgICAgIGdfcGFyYW1fc3BlY19mbG9hdCAoImRyb3AtcHJvYmFiaWxpdHkiLCAiRHJvcCBQcm9iYWJpbGl0eSIsCisgICAgICAgICAgIlRoZSBQcm9iYWJpbGl0eSBhIGJ1ZmZlciBpcyBkcm9wcGVkIiwKKyAgICAgICAgICAwLjAsIDEuMCwgREVGQVVMVF9EUk9QX1BST0JBQklMSVRZLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgQVJHX0RVUExJQ0FURV9QUk9CQUJJTElUWSwKKyAgICAgIGdfcGFyYW1fc3BlY19mbG9hdCAoImR1cGxpY2F0ZS1wcm9iYWJpbGl0eSIsICJEdXBsaWNhdGUgUHJvYmFiaWxpdHkiLAorICAgICAgICAgICJUaGUgUHJvYmFiaWxpdHkgYSBidWZmZXIgaXMgZHVwbGljYXRlZCIsCisgICAgICAgICAgMC4wLCAxLjAsIERFRkFVTFRfRFVQTElDQVRFX1BST0JBQklMSVRZLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgQVJHX0RST1BfUEFDS0VUUywKKyAgICAgIGdfcGFyYW1fc3BlY191aW50ICgiZHJvcC1wYWNrZXRzIiwgIkRyb3AgUGFja2V0cyIsCisgICAgICAgICAgIkRyb3AgdGhlIG5leHQgbiBwYWNrZXRzIiwKKyAgICAgICAgICAwLCBHX01BWFVJTlQsIERFRkFVTFRfRFJPUF9QQUNLRVRTLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKG5ldHNpbV9kZWJ1ZywgIm5ldHNpbSIsIDAsICJOZXR3b3JrIHNpbXVsYXRvciIpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9uZXRfc2ltX3BsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCit7CisgIHJldHVybiBnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAibmV0c2ltIiwKKyAgICAgIEdTVF9SQU5LX01BUkdJTkFMLCBHU1RfVFlQRV9ORVRfU0lNKTsKK30KKworR1NUX1BMVUdJTl9ERUZJTkUgKEdTVF9WRVJTSU9OX01BSk9SLAorICAgIEdTVF9WRVJTSU9OX01JTk9SLAorICAgIG5ldHNpbSwKKyAgICAiTmV0d29yayBTaW11bGF0b3IiLAorICAgIGdzdF9uZXRfc2ltX3BsdWdpbl9pbml0LCBQQUNLQUdFX1ZFUlNJT04sICJMR1BMIiwgR1NUX1BBQ0tBR0VfTkFNRSwKKyAgICBHU1RfUEFDS0FHRV9PUklHSU4pCmRpZmYgLS1naXQgYS9nc3QvbmV0c2ltL2dzdG5ldHNpbS5oIGIvZ3N0L25ldHNpbS9nc3RuZXRzaW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGI0MzdlCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0L25ldHNpbS9nc3RuZXRzaW0uaApAQCAtMCwwICsxLDcyIEBACisvKgorICogRmFyc2lnaHQgVm9pY2UrVmlkZW8gbGlicmFyeQorICoKKyAqICBDb3B5cmlnaHQgMjAwNiBDb2xsYWJvcmEgTHRkLAorICogIENvcHlyaWdodCAyMDA2IE5va2lhIENvcnBvcmF0aW9uCisgKiAgIEBhdXRob3I6IFBoaWxpcHBlIEthbGFmIDxwaGlsaXBwZS5rYWxhZkBjb2xsYWJvcmEuY28udWs+LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICoKKyAqLworCisjaWZuZGVmIF9fR1NUX05FVF9TSU1fSF9fCisjZGVmaW5lIF9fR1NUX05FVF9TSU1fSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dfQkVHSU5fREVDTFMKKworLyogI2RlZmluZSdzIGRvbid0IGxpa2Ugd2hpdGVzcGFjZXkgYml0cyAqLworI2RlZmluZSBHU1RfVFlQRV9ORVRfU0lNIFwKKyAgKGdzdF9uZXRfc2ltX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9ORVRfU0lNKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIFwKKyAgR1NUX1RZUEVfTkVUX1NJTSxHc3ROZXRTaW0pKQorI2RlZmluZSBHU1RfTkVUX1NJTV9DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgXAorICBHU1RfVFlQRV9ORVRfU0lNLEdzdE5ldFNpbUNsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX05FVF9TSU0ob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9ORVRfU0lNKSkKKyNkZWZpbmUgR1NUX0lTX05FVF9TSU1fQ0xBU1Mob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX05FVF9TSU0pKQorCit0eXBlZGVmIHN0cnVjdCBfR3N0TmV0U2ltIEdzdE5ldFNpbTsKK3R5cGVkZWYgc3RydWN0IF9Hc3ROZXRTaW1DbGFzcyBHc3ROZXRTaW1DbGFzczsKK3R5cGVkZWYgc3RydWN0IF9Hc3ROZXRTaW1Qcml2YXRlIEdzdE5ldFNpbVByaXZhdGU7CisKK3N0cnVjdCBfR3N0TmV0U2ltCit7CisgIEdzdEVsZW1lbnQgcGFyZW50OworCisgIEdzdE5ldFNpbVByaXZhdGUgKnByaXY7CisKKyAgLyo8IHByaXZhdGUgPiAqLworICBncG9pbnRlciBfZ3N0X3Jlc2VydmVkW0dTVF9QQURESU5HXTsKK307CisKK3N0cnVjdCBfR3N0TmV0U2ltQ2xhc3MKK3sKKyAgR3N0RWxlbWVudENsYXNzIHBhcmVudF9jbGFzczsKKworICAvKjwgcHJpdmF0ZSA+ICovCisgIGdwb2ludGVyIF9nc3RfcmVzZXJ2ZWRbR1NUX1BBRERJTkddOworfTsKKworR1R5cGUgZ3N0X25ldF9zaW1fZ2V0X3R5cGUgKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfTkVUX1NJTV9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC9udXZkZW11eC9NYWtlZmlsZS5pbiBiL2dzdC9udXZkZW11eC9NYWtlZmlsZS5pbgppbmRleCBkNjI1YzZjLi5mYzU5NzIyIDEwMDY0NAotLS0gYS9nc3QvbnV2ZGVtdXgvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L251dmRlbXV4L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Myw2ICsyNzIsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMCw2ICszMTEsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOCw3ICszMjEsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzcsOCArMzM5LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NSwxNiArMzU4LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MCw2ICszOTQsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTUsNiArNDIxLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE2LDYgKzUyNCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MjksOCArNTM4LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ2LDYgKzU1Myw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDMsMTYgKzYxMiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NCw2ICs2NzUsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc0LDYgKzY4Niw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Myw2ICs2OTYsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIwLDcgKzczNSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L251dmRlbXV4L2dzdG51dmRlbXV4LmMgYi9nc3QvbnV2ZGVtdXgvZ3N0bnV2ZGVtdXguYwppbmRleCBjZTRlOThkLi43NjUwMjVmIDEwMDY0NAotLS0gYS9nc3QvbnV2ZGVtdXgvZ3N0bnV2ZGVtdXguYworKysgYi9nc3QvbnV2ZGVtdXgvZ3N0bnV2ZGVtdXguYwpAQCAtMzEsNyArMzEsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyB0ZXN0Lm51diAhIG51dmRlbXV4IG5hbWU9ZGVtdXggIGRlbXV4LmF1ZGlvXzAwICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGF1dG9hdWRpb3NpbmsgICBkZW11eC52aWRlb18wMCAhIHF1ZXVlICEgZGVjb2RlYmluICEgdmlkZW9jb252ZXJ0ICEgdmlkZW9zY2FsZSAhIGF1dG92aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgdGVzdC5udXYgISBudXZkZW11eCBuYW1lPWRlbXV4ICBkZW11eC5hdWRpb18wMCAhIGRlY29kZWJpbiAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBhdXRvYXVkaW9zaW5rICAgZGVtdXgudmlkZW9fMDAgISBxdWV1ZSAhIGRlY29kZWJpbiAhIHZpZGVvY29udmVydCAhIHZpZGVvc2NhbGUgISBhdXRvdmlkZW9zaW5rCiAgKiBdfCBQbGF5IChwYXJzZSBhbmQgZGVjb2RlKSBhbiAubnV2IGZpbGUgYW5kIHRyeSB0byBvdXRwdXQgaXQgdG8KICAqIGFuIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgc291bmRjYXJkIGFuZCB2aWRlb3NpbmsuIElmIHRoZSBOVVYgZmlsZSBjb250YWlucwogICogY29tcHJlc3NlZCBhdWRpbyBvciB2aWRlbyBkYXRhLCB0aGlzIHdpbGwgb25seSB3b3JrIGlmIHlvdSBoYXZlIHRoZQpkaWZmIC0tZ2l0IGEvZ3N0L29udmlmL01ha2VmaWxlLmluIGIvZ3N0L29udmlmL01ha2VmaWxlLmluCmluZGV4IDZkNWI0ODYuLjA2N2FiYzcgMTAwNjQ0Ci0tLSBhL2dzdC9vbnZpZi9NYWtlZmlsZS5pbgorKysgYi9nc3Qvb252aWYvTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNzMsNiArMjcyLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTAsNiArMzExLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTgsNyArMzIxLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM3LDggKzMzOSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTUsMTYgKzM1OCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTAsNiArMzk0LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE1LDYgKzQyMSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNiw2ICs1MjQsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTI5LDggKzUzOCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Niw2ICs1NTMsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjAzLDE2ICs2MTIsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjQsNiArNjc1LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NCw2ICs2ODYsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODMsNiArNjk2LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMCw3ICs3MzUsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5jIGIvZ3N0L29udmlmL2dzdHJ0cG9udmlmdGltZXN0YW1wLmMKaW5kZXggODE4YzhhZi4uNGFiZWNlMSAxMDA2NDQKLS0tIGEvZ3N0L29udmlmL2dzdHJ0cG9udmlmdGltZXN0YW1wLmMKKysrIGIvZ3N0L29udmlmL2dzdHJ0cG9udmlmdGltZXN0YW1wLmMKQEAgLTMwLDYgKzMwLDggQEAKIAogI2luY2x1ZGUgImdzdHJ0cG9udmlmdGltZXN0YW1wLmgiCiAKKyNkZWZpbmUgR1NUX05UUF9PRkZTRVRfRVZFTlRfTkFNRSAiR3N0TnRwT2Zmc2V0IgorCiAjZGVmaW5lIERFRkFVTFRfTlRQX09GRlNFVCBHU1RfQ0xPQ0tfVElNRV9OT05FCiAjZGVmaW5lIERFRkFVTFRfQ1NFUSAwCiAjZGVmaW5lIERFRkFVTFRfU0VUX0VfQklUIEZBTFNFCkBAIC00Miw2ICs0NCwxMSBAQAogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3J0cF9vbnZpZl90aW1lc3RhbXBfY2hhaW5fbGlzdCAoR3N0UGFkICogcGFkLAogICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyTGlzdCAqIGxpc3QpOwogCitzdGF0aWMgR3N0Rmxvd1JldHVybiBoYW5kbGVfYW5kX3B1c2hfYnVmZmVyIChHc3RSdHBPbnZpZlRpbWVzdGFtcCAqIHNlbGYsCisgICAgR3N0QnVmZmVyICogYnVmKTsKK3N0YXRpYyBHc3RGbG93UmV0dXJuIGhhbmRsZV9hbmRfcHVzaF9idWZmZXJfbGlzdCAoR3N0UnRwT252aWZUaW1lc3RhbXAgKiBzZWxmLAorICAgIEdzdEJ1ZmZlckxpc3QgKiBsaXN0KTsKKwogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmtfdGVtcGxhdGVfZmFjdG9yeSA9CiBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAogICAgIEdTVF9QQURfU0lOSywKQEAgLTExMiw2ICsxMTksNjQgQEAKICAgfQogfQogCisvKiBzZW5kIGNhY2hlZCBidWZmZXIgb3IgbGlzdCwgYW5kIGV2ZW50cywgaWYgcHJlc2VudCAqLworc3RhdGljIEdzdEZsb3dSZXR1cm4KK3NlbmRfY2FjaGVkX2J1ZmZlcl9hbmRfZXZlbnRzIChHc3RSdHBPbnZpZlRpbWVzdGFtcCAqIHNlbGYpCit7CisgIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7CisKKyAgZ19hc3NlcnQgKCEoc2VsZi0+YnVmZmVyICYmIHNlbGYtPmxpc3QpKTsKKworICBpZiAoc2VsZi0+YnVmZmVyKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInB1c2hpbmcgJSIgR1NUX1BUUl9GT1JNQVQsIHNlbGYtPmJ1ZmZlcik7CisgICAgcmV0ID0gaGFuZGxlX2FuZF9wdXNoX2J1ZmZlciAoc2VsZiwgc2VsZi0+YnVmZmVyKTsKKyAgICBzZWxmLT5idWZmZXIgPSBOVUxMOworICB9CisgIGlmIChzZWxmLT5saXN0KSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInB1c2hpbmcgJSIgR1NUX1BUUl9GT1JNQVQsIHNlbGYtPmxpc3QpOworICAgIHJldCA9IGhhbmRsZV9hbmRfcHVzaF9idWZmZXJfbGlzdCAoc2VsZiwgc2VsZi0+bGlzdCk7CisgICAgc2VsZi0+bGlzdCA9IE5VTEw7CisgIH0KKworICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKQorICAgIGdvdG8gb3V0OworCisgIHdoaWxlICghZ19xdWV1ZV9pc19lbXB0eSAoc2VsZi0+ZXZlbnRfcXVldWUpKSB7CisgICAgR3N0RXZlbnQgKmV2ZW50OworCisgICAgZXZlbnQgPSBHU1RfRVZFTlRfQ0FTVCAoZ19xdWV1ZV9wb3BfaGVhZCAoc2VsZi0+ZXZlbnRfcXVldWUpKTsKKyAgICBHU1RfTE9HX09CSkVDVCAoc2VsZi0+c2lua3BhZCwgInNlbmRpbmcgJSIgR1NUX1BUUl9GT1JNQVQsIGV2ZW50KTsKKyAgICAodm9pZCkgZ3N0X3BhZF9zZW5kX2V2ZW50IChzZWxmLT5zaW5rcGFkLCBldmVudCk7CisgIH0KKworb3V0OgorICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZAorcHVyZ2VfY2FjaGVkX2J1ZmZlcl9hbmRfZXZlbnRzIChHc3RSdHBPbnZpZlRpbWVzdGFtcCAqIHNlbGYpCit7CisgIGdfYXNzZXJ0ICghKHNlbGYtPmJ1ZmZlciAmJiBzZWxmLT5saXN0KSk7CisKKyAgaWYgKHNlbGYtPmJ1ZmZlcikgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJwdXJnaW5nICUiIEdTVF9QVFJfRk9STUFULCBzZWxmLT5idWZmZXIpOworICAgIGdzdF9idWZmZXJfdW5yZWYgKHNlbGYtPmJ1ZmZlcik7CisgICAgc2VsZi0+YnVmZmVyID0gTlVMTDsKKyAgfQorICBpZiAoc2VsZi0+bGlzdCkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJwdXJnaW5nICUiIEdTVF9QVFJfRk9STUFULCBzZWxmLT5saXN0KTsKKyAgICBnc3RfYnVmZmVyX2xpc3RfdW5yZWYgKHNlbGYtPmxpc3QpOworICAgIHNlbGYtPmxpc3QgPSBOVUxMOworICB9CisKKyAgd2hpbGUgKCFnX3F1ZXVlX2lzX2VtcHR5IChzZWxmLT5ldmVudF9xdWV1ZSkpIHsKKyAgICBHc3RFdmVudCAqZXZlbnQ7CisKKyAgICBldmVudCA9IEdTVF9FVkVOVF9DQVNUIChnX3F1ZXVlX3BvcF9oZWFkIChzZWxmLT5ldmVudF9xdWV1ZSkpOworICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOworICB9Cit9CisKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgogZ3N0X3J0cF9vbnZpZl90aW1lc3RhbXBfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKICAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQpAQCAtMTIxLDYgKzE4Niw3IEBACiAKICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKKyAgICAgIHB1cmdlX2NhY2hlZF9idWZmZXJfYW5kX2V2ZW50cyAoc2VsZik7CiAgICAgICBnc3Rfc2VnbWVudF9pbml0ICgmc2VsZi0+c2VnbWVudCwgR1NUX0ZPUk1BVF9VTkRFRklORUQpOwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTEzNSwxOSArMjAxLDExIEBACiAKICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKLSAgICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoc2VsZi0+cHJvcF9udHBfb2Zmc2V0KSkKLSAgICAgICAgc2VsZi0+bnRwX29mZnNldCA9IHNlbGYtPnByb3BfbnRwX29mZnNldDsKLSAgICAgIGVsc2UKLSAgICAgICAgc2VsZi0+bnRwX29mZnNldCA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1BMQVlJTkc6Ci0gICAgICBpZiAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChzZWxmLT5wcm9wX250cF9vZmZzZXQpICYmCi0gICAgICAgICAgR1NUX0VMRU1FTlRfQ0xPQ0sgKGVsZW1lbnQpID09IE5VTEwpIHsKLSAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGVsZW1lbnQsIENPUkUsIENMT0NLLCAoIk1pc3NpbmcgTlRQIG9mZnNldCIpLAotICAgICAgICAgICAgKCJTZXQgdGhlIFwibnRwLW9mZnNldFwiIHByb3BlcnR5IHRvLCIKLSAgICAgICAgICAgICAgICAiIGNhbid0IGd1ZXNzIGl0IHdpdGhvdXQgYSBjbG9jayBvbiB0aGUgcGlwZWxpbmUuIikpOwotICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOwotICAgICAgfQorICAgICAgc2VsZi0+bnRwX29mZnNldCA9IHNlbGYtPnByb3BfbnRwX29mZnNldDsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJudHAtb2Zmc2V0OiAlIiBHU1RfVElNRV9GT1JNQVQsCisgICAgICAgICAgR1NUX1RJTUVfQVJHUyAoc2VsZi0+bnRwX29mZnNldCkpOworICAgICAgc2VsZi0+c2V0X2RfYml0ID0gRkFMU0U7CisgICAgICBzZWxmLT5zZXRfZV9iaXQgPSBGQUxTRTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBicmVhazsKQEAgLTE2MSwxMCArMjE5LDcgQEAKIHsKICAgR3N0UnRwT252aWZUaW1lc3RhbXAgKnNlbGYgPSBHU1RfUlRQX09OVklGX1RJTUVTVEFNUCAob2JqZWN0KTsKIAotICBpZiAoc2VsZi0+YnVmZmVyKQotICAgIGdzdF9idWZmZXJfdW5yZWYgKHNlbGYtPmJ1ZmZlcik7Ci0gIGlmIChzZWxmLT5saXN0KQotICAgIGdzdF9idWZmZXJfbGlzdF91bnJlZiAoc2VsZi0+bGlzdCk7CisgIGdfcXVldWVfZnJlZSAoc2VsZi0+ZXZlbnRfcXVldWUpOwogCiAgIEdfT0JKRUNUX0NMQVNTIChnc3RfcnRwX29udmlmX3RpbWVzdGFtcF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKIH0KQEAgLTIxOSw0MiArMjc0LDEyOCBAQAogICAgICAgMCwgIk9OVklGIE5UUCB0aW1lc3RhbXBzIFJUUCBleHRlbnNpb24iKTsKIH0KIAotc3RhdGljIEdzdEZsb3dSZXR1cm4gaGFuZGxlX2FuZF9wdXNoX2J1ZmZlciAoR3N0UnRwT252aWZUaW1lc3RhbXAgKiBzZWxmLAotICAgIEdzdEJ1ZmZlciAqIGJ1ZiwgZ2Jvb2xlYW4gZW5kX2NvbnRpZ3VvdXMpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gaGFuZGxlX2FuZF9wdXNoX2J1ZmZlcl9saXN0IChHc3RSdHBPbnZpZlRpbWVzdGFtcCAqIHNlbGYsCi0gICAgR3N0QnVmZmVyTGlzdCAqIGxpc3QsIGdib29sZWFuIGVuZF9jb250aWd1b3VzKTsKK3N0YXRpYyBnYm9vbGVhbgorcGFyc2VfZXZlbnRfbnRwX29mZnNldCAoR3N0UnRwT252aWZUaW1lc3RhbXAgKiBzZWxmLCBHc3RFdmVudCAqIGV2ZW50LAorICAgIEdzdENsb2NrVGltZSAqIG9mZnNldCwgZ2Jvb2xlYW4gKiBkaXNjb250KQoreworICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IGdzdF9ldmVudF9nZXRfc3RydWN0dXJlIChldmVudCk7CisgIEdzdENsb2NrVGltZSBldmVudF9vZmZzZXQ7CisgIGdib29sZWFuIGV2ZW50X2Rpc2NvbnQ7CisKKyAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9jbG9ja190aW1lIChzdHJ1Y3R1cmUsICJudHAtb2Zmc2V0IiwgJmV2ZW50X29mZnNldCkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAibm8gbnRwLW9mZnNldCBpbiAlIiBHU1RfUFRSX0ZPUk1BVCwgZXZlbnQpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2Jvb2xlYW4gKHN0cnVjdHVyZSwgImRpc2NvbnQiLCAmZXZlbnRfZGlzY29udCkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAibm8gZGlzY29udGludWUgaW4gJSIgR1NUX1BUUl9GT1JNQVQsIGV2ZW50KTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAob2Zmc2V0KQorICAgICpvZmZzZXQgPSBldmVudF9vZmZzZXQ7CisKKyAgaWYgKGRpc2NvbnQpCisgICAgKmRpc2NvbnQgPSBldmVudF9kaXNjb250OworCisgIHJldHVybiBUUlVFOworfQogCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9ydHBfb252aWZfdGltZXN0YW1wX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAogICAgIEdzdEV2ZW50ICogZXZlbnQpCiB7CiAgIEdzdFJ0cE9udmlmVGltZXN0YW1wICpzZWxmID0gR1NUX1JUUF9PTlZJRl9USU1FU1RBTVAgKHBhcmVudCk7CisgIGdib29sZWFuIGRyb3AgPSBGQUxTRTsKKyAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKIAogICBHU1RfREVCVUdfT0JKRUNUIChwYWQsICJoYW5kbGluZyBldmVudCAlcyIsIEdTVF9FVkVOVF9UWVBFX05BTUUgKGV2ZW50KSk7CiAKKyAgLyogaGFuZGxlIHNlcmlhbGl6ZWQgZXZlbnRzLCB3aGljaCwgc2hvdWxkIG5vdCBiZSBlbnF1ZXVlZCAqLwogICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKLSAgICBjYXNlIEdTVF9FVkVOVF9TRUdNRU5UOgotICAgICAgZ3N0X2V2ZW50X2NvcHlfc2VnbWVudCAoZXZlbnQsICZzZWxmLT5zZWdtZW50KTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUT1A6Ci0gICAgICBnc3Rfc2VnbWVudF9pbml0ICgmc2VsZi0+c2VnbWVudCwgR1NUX0ZPUk1BVF9VTkRFRklORUQpOworICAgIGNhc2UgR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNOgorICAgICAgLyogaWYgdGhlICJzZXQtZS1iaXQiIHByb3BlcnR5IGlzIHNldCwgYW4gb2Zmc2V0IGV2ZW50IG1pZ2h0IG1hcmsgdGhlCisgICAgICAgKiBzdHJlYW0gYXMgZGlzY29udGludWVkLiBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjdXJyZW50bHkgY2FjaGVkIGJ1ZmZlcgorICAgICAgICogbmVlZHMgdGhlIGUtYml0IGJlZm9yZSBpdCdzIHB1c2hlZCAqLworICAgICAgaWYgKHNlbGYtPnByb3Bfc2V0X2VfYml0ICYmCisgICAgICAgICAgZ3N0X2V2ZW50X2hhc19uYW1lIChldmVudCwgR1NUX05UUF9PRkZTRVRfRVZFTlRfTkFNRSkpIHsKKyAgICAgICAgZ2Jvb2xlYW4gZGlzY29udDsKKyAgICAgICAgaWYgKHBhcnNlX2V2ZW50X250cF9vZmZzZXQgKHNlbGYsIGV2ZW50LCBOVUxMLCAmZGlzY29udCkpIHsKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAic3RyZWFtICVzIGRpc2NvbnRpbnVlZCIsCisgICAgICAgICAgICAgIChkaXNjb250ID8gImlzIiA6ICJpcyBub3QiKSk7CisgICAgICAgICAgc2VsZi0+c2V0X2VfYml0ID0gZGlzY29udDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBkcm9wID0gVFJVRTsKKyAgICAgICAgICByZXQgPSBGQUxTRTsKKyAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfRVZFTlRfRU9TOgorICAgIHsKKyAgICAgIEdzdEZsb3dSZXR1cm4gcmVzOwogICAgICAgLyogUHVzaCBwZW5kaW5nIGJ1ZmZlcnMsIGlmIGFueSAqLwotICAgICAgaWYgKHNlbGYtPmJ1ZmZlcikgewotICAgICAgICBoYW5kbGVfYW5kX3B1c2hfYnVmZmVyIChzZWxmLCBzZWxmLT5idWZmZXIsIFRSVUUpOwotICAgICAgICBzZWxmLT5idWZmZXIgPSBOVUxMOworICAgICAgc2VsZi0+c2V0X2VfYml0ID0gVFJVRTsKKyAgICAgIHJlcyA9IHNlbmRfY2FjaGVkX2J1ZmZlcl9hbmRfZXZlbnRzIChzZWxmKTsKKyAgICAgIGlmIChyZXMgIT0gR1NUX0ZMT1dfT0spIHsKKyAgICAgICAgZHJvcCA9IFRSVUU7CisgICAgICAgIHJldCA9IEZBTFNFOworICAgICAgICBnb3RvIG91dDsKICAgICAgIH0KLSAgICAgIGlmIChzZWxmLT5saXN0KSB7Ci0gICAgICAgIGhhbmRsZV9hbmRfcHVzaF9idWZmZXJfbGlzdCAoc2VsZiwgc2VsZi0+bGlzdCwgVFJVRSk7Ci0gICAgICAgIHNlbGYtPmxpc3QgPSBOVUxMOwotICAgICAgfQorICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUT1A6CisgICAgICBwdXJnZV9jYWNoZWRfYnVmZmVyX2FuZF9ldmVudHMgKHNlbGYpOworICAgICAgc2VsZi0+c2V0X2RfYml0ID0gRkFMU0U7CisgICAgICBzZWxmLT5zZXRfZV9iaXQgPSBGQUxTRTsKKyAgICAgIGdzdF9zZWdtZW50X2luaXQgKCZzZWxmLT5zZWdtZW50LCBHU1RfRk9STUFUX1VOREVGSU5FRCk7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgYnJlYWs7CiAgIH0KIAotICByZXR1cm4gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOworICAvKiBlbnF1ZXVlIHNlcmlhbGl6ZWQgZXZlbnRzIGlmIHRoZXJlIGlzIGEgY2FjaGVkIGJ1ZmZlciAqLworICBpZiAoR1NUX0VWRU5UX0lTX1NFUklBTElaRUQgKGV2ZW50KSAmJiAoc2VsZi0+YnVmZmVyIHx8IHNlbGYtPmxpc3QpKSB7CisgICAgR1NUX0RFQlVHICgiZW5xdWV1ZWluZyBzZXJpYWxpemVkIGV2ZW50Iik7CisgICAgZ19xdWV1ZV9wdXNoX3RhaWwgKHNlbGYtPmV2ZW50X3F1ZXVlLCBldmVudCk7CisgICAgZXZlbnQgPSBOVUxMOworICAgIGdvdG8gb3V0OworICB9CisKKyAgLyogaGFuZGxlIHJlc3Qgb2YgdGhlIGV2ZW50cyAqLworICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKKyAgICBjYXNlIEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTToKKyAgICAgIC8qIHVwZGF0ZSB0aGUgbnRwLW9mZnNldCBhZnRlciBhbnkgY2FjaGVkIGJ1ZmZlci9idWZmZXIgbGlzdCBoYXMgYmVlbgorICAgICAgICogcHVzaGVkLiB0aGUgZC1iaXQgb2YgdGhlIG5leHQgYnVmZmVyL2J1ZmZlciBsaXN0IHNob3VsZCBiZSBzZXQgaWYKKyAgICAgICAqIHRoZSBzdHJlYW0gaXMgZGlzY29udGludWVkICovCisgICAgICBpZiAoZ3N0X2V2ZW50X2hhc19uYW1lIChldmVudCwgR1NUX05UUF9PRkZTRVRfRVZFTlRfTkFNRSkpIHsKKyAgICAgICAgR3N0Q2xvY2tUaW1lIG9mZnNldDsKKyAgICAgICAgZ2Jvb2xlYW4gZGlzY29udDsKKyAgICAgICAgaWYgKHBhcnNlX2V2ZW50X250cF9vZmZzZXQgKHNlbGYsIGV2ZW50LCAmb2Zmc2V0LCAmZGlzY29udCkpIHsKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAibmV3IG50cC1vZmZzZXQ6ICUiIEdTVF9USU1FX0ZPUk1BVAorICAgICAgICAgICAgICAiLCBzdHJlYW0gJXMgZGlzY29udGludWVkIiwgR1NUX1RJTUVfQVJHUyAob2Zmc2V0KSwKKyAgICAgICAgICAgICAgKGRpc2NvbnQgPyAiaXMiIDogImlzIG5vdCIpKTsKKyAgICAgICAgICBzZWxmLT5udHBfb2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICAgIHNlbGYtPnNldF9kX2JpdCA9IGRpc2NvbnQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcmV0ID0gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgZHJvcCA9IFRSVUU7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9FVkVOVF9TRUdNRU5UOgorICAgICAgZ3N0X2V2ZW50X2NvcHlfc2VnbWVudCAoZXZlbnQsICZzZWxmLT5zZWdtZW50KTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCitvdXQ6CisgIGlmIChkcm9wKQorICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOworICBlbHNlIGlmIChldmVudCkKKyAgICByZXQgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7CisKKyAgcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI3OCwxOCArNDE5LDE4IEBACiAgIHNlbGYtPnByb3BfbnRwX29mZnNldCA9IERFRkFVTFRfTlRQX09GRlNFVDsKICAgc2VsZi0+cHJvcF9zZXRfZV9iaXQgPSBERUZBVUxUX1NFVF9FX0JJVDsKIAorICBnc3Rfc2VnbWVudF9pbml0ICgmc2VsZi0+c2VnbWVudCwgR1NUX0ZPUk1BVF9VTkRFRklORUQpOworCisgIHNlbGYtPmV2ZW50X3F1ZXVlID0gZ19xdWV1ZV9uZXcgKCk7CiAgIHNlbGYtPmJ1ZmZlciA9IE5VTEw7CiAgIHNlbGYtPmxpc3QgPSBOVUxMOwotCi0gIGdzdF9zZWdtZW50X2luaXQgKCZzZWxmLT5zZWdtZW50LCBHU1RfRk9STUFUX1VOREVGSU5FRCk7CiB9CiAKICNkZWZpbmUgRVhURU5TSU9OX0lEIDB4QUJBQwogI2RlZmluZSBFWFRFTlNJT05fU0laRSAzCiAKIHN0YXRpYyBnYm9vbGVhbgotaGFuZGxlX2J1ZmZlciAoR3N0UnRwT252aWZUaW1lc3RhbXAgKiBzZWxmLCBHc3RCdWZmZXIgKiBidWYsCi0gICAgZ2Jvb2xlYW4gZW5kX2NvbnRpZ3VvdXMpCitoYW5kbGVfYnVmZmVyIChHc3RSdHBPbnZpZlRpbWVzdGFtcCAqIHNlbGYsIEdzdEJ1ZmZlciAqIGJ1ZikKIHsKICAgR3N0UlRQQnVmZmVyIHJ0cCA9IEdTVF9SVFBfQlVGRkVSX0lOSVQ7CiAgIGd1aW50OCAqZGF0YTsKQEAgLTMxNSwxMiArNDU2LDE3IEBACiAKICAgICAgIHNlbGYtPm50cF9vZmZzZXQgPSByZWFsX3RpbWUgLSBydW5uaW5nX3RpbWU7CiAKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJuZXcgbnRwLW9mZnNldDogJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgICAgIEdTVF9USU1FX0FSR1MgKHNlbGYtPm50cF9vZmZzZXQpKTsKKwogICAgICAgZ3N0X29iamVjdF91bnJlZiAoY2xvY2spOwogICAgIH0gZWxzZSB7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2VsZiwgU1RSRUFNLCBGQUlMRUQsICgiTm8gbnRwLW9mZnNldCBwcmVzZW50IiksCisgICAgICAgICAgKCJDYW4gbm90IGd1ZXNzIG50cC1vZmZzZXQgd2l0aCBubyBjbG9jay4iKSk7CiAgICAgICAvKiBSZWNlaXZlZCBhIGJ1ZmZlciBpbiBQQVVTRUQsIHNvIHdlIGNhbid0IGd1ZXNzIHRoZSBtYXRjaAogICAgICAgICogYmV0d2VlbiB0aGUgcnVubmluZyB0aW1lIGFuZCB0aGUgTlRQIGNsb2NrIHlldC4KICAgICAgICAqLwotICAgICAgcmV0dXJuIFRSVUU7CisgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogICB9CiAKQEAgLTM1MywxMCArNDk5LDEwIEBACiAKICAgLyogTlRQIHRpbWVzdGFtcCAqLwogICBpZiAoR1NUX0JVRkZFUl9EVFNfSVNfVkFMSUQgKGJ1ZikpIHsKLSAgICB0aW1lID0gZ3N0X3NlZ21lbnRfdG9fcnVubmluZ190aW1lICgmc2VsZi0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLAorICAgIHRpbWUgPSBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSAoJnNlbGYtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwKICAgICAgICAgR1NUX0JVRkZFUl9EVFMgKGJ1ZikpOwogICB9IGVsc2UgaWYgKEdTVF9CVUZGRVJfUFRTX0lTX1ZBTElEIChidWYpKSB7Ci0gICAgdGltZSA9IGdzdF9zZWdtZW50X3RvX3J1bm5pbmdfdGltZSAoJnNlbGYtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwKKyAgICB0aW1lID0gZ3N0X3NlZ21lbnRfdG9fc3RyZWFtX3RpbWUgKCZzZWxmLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCiAgICAgICAgIEdTVF9CVUZGRVJfUFRTIChidWYpKTsKICAgfSBlbHNlIHsKICAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLApAQCAtMzY1LDcgKzUxMSw3IEBACiAgIH0KIAogICBpZiAodGltZSA9PSBHU1RfQ0xPQ0tfVElNRV9OT05FKSB7Ci0gICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkZhaWxlZCB0byBnZXQgcnVubmluZyB0aW1lIik7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkZhaWxlZCB0byBnZXQgc3RyZWFtIHRpbWUiKTsKICAgICBnb3RvIGRvbmU7CiAgIH0KIApAQCAtMzkxLDE1ICs1MzcsMTcgQEAKICAgfQogCiAgIC8qIFNldCBFIGlmIHRoZSBuZXh0IGJ1ZmZlciBoYXMgRElTQ09OVCAqLwotICBpZiAoZW5kX2NvbnRpZ3VvdXMpIHsKKyAgaWYgKHNlbGYtPnNldF9lX2JpdCkgewogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJzZXQgRSBmbGFnIik7CiAgICAgZmllbGQgfD0gKDEgPDwgNik7CisgICAgc2VsZi0+c2V0X2VfYml0ID0gRkFMU0U7CiAgIH0KIAogICAvKiBTZXQgRCBpZiB0aGUgYnVmZmVyIGhhcyB0aGUgRElTQ09OVCBmbGFnICovCi0gIGlmIChHU1RfQlVGRkVSX0lTX0RJU0NPTlQgKGJ1ZikpIHsKKyAgaWYgKHNlbGYtPnNldF9kX2JpdCkgewogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJzZXQgRCBmbGFnIik7CiAgICAgZmllbGQgfD0gKDEgPDwgNSk7CisgICAgc2VsZi0+c2V0X2RfYml0ID0gRkFMU0U7CiAgIH0KIAogICBHU1RfV1JJVEVfVUlOVDggKGRhdGEgKyA4LCBmaWVsZCk7CkBAIC00MTQsMTIgKzU2MiwxMSBAQAogICByZXR1cm4gVFJVRTsKIH0KIAotLyogQGJ1ZjogKHRyYW5zZmVyIGFsbCkgKi8KKy8qIEBidWY6ICh0cmFuc2ZlciBmdWxsKSAqLwogc3RhdGljIEdzdEZsb3dSZXR1cm4KLWhhbmRsZV9hbmRfcHVzaF9idWZmZXIgKEdzdFJ0cE9udmlmVGltZXN0YW1wICogc2VsZiwgR3N0QnVmZmVyICogYnVmLAotICAgIGdib29sZWFuIGVuZF9jb250aWd1b3VzKQoraGFuZGxlX2FuZF9wdXNoX2J1ZmZlciAoR3N0UnRwT252aWZUaW1lc3RhbXAgKiBzZWxmLCBHc3RCdWZmZXIgKiBidWYpCiB7Ci0gIGlmICghaGFuZGxlX2J1ZmZlciAoc2VsZiwgYnVmLCBlbmRfY29udGlndW91cykpIHsKKyAgaWYgKCFoYW5kbGVfYnVmZmVyIChzZWxmLCBidWYpKSB7CiAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgIH0KQEAgLTQzNiwzMiArNTgzLDI2IEBACiAKICAgaWYgKCFzZWxmLT5wcm9wX3NldF9lX2JpdCkgewogICAgIC8qIE1vZGlmeSBhbmQgcHVzaCB0aGlzIGJ1ZmZlciByaWdodCBhd2F5ICovCi0gICAgcmV0dXJuIGhhbmRsZV9hbmRfcHVzaF9idWZmZXIgKHNlbGYsIGJ1ZiwgRkFMU0UpOworICAgIHJldHVybiBoYW5kbGVfYW5kX3B1c2hfYnVmZmVyIChzZWxmLCBidWYpOwogICB9CiAKLSAgLyogV2UgaGF2ZSB0byB3YWl0IGZvciB0aGUgKm5leHQqIGJ1ZmZlciBiZWZvcmUgcHVzaGluZyB0aGlzIG9uZSAqLworICAvKiBzZW5kIGFueSBwcmV2aW91c2x5IGNhY2hlZCBpdGVtKHMpLCB0aGlzIGxlYXZlcyBhbiBlbXB0eSBxdWV1ZSAqLworICByZXN1bHQgPSBzZW5kX2NhY2hlZF9idWZmZXJfYW5kX2V2ZW50cyAoc2VsZik7CiAKLSAgaWYgKHNlbGYtPmJ1ZmZlcikgewotICAgIC8qIHB1c2ggdGhlICpwcmV2aW91cyogYnVmZmVyIHJlY2VpdmVkICovCi0gICAgcmVzdWx0ID0gaGFuZGxlX2FuZF9wdXNoX2J1ZmZlciAoc2VsZiwgc2VsZi0+YnVmZmVyLAotICAgICAgICBHU1RfQlVGRkVSX0lTX0RJU0NPTlQgKGJ1ZikpOwotICB9Ci0KLSAgLyogVHJhbnNmZXIgb3duZXJzaGlwICovCisgIC8qIGVucXVldWUgdGhlIG5ldyBpdGVtLCBhcyB0aGUgb25seSBpdGVtIGluIHRoZSBxdWV1ZSAqLwogICBzZWxmLT5idWZmZXIgPSBidWY7CiAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS8qIEBidWY6ICh0cmFuc2ZlciBhbGwpICovCisvKiBAYnVmOiAodHJhbnNmZXIgZnVsbCkgKi8KIHN0YXRpYyBHc3RGbG93UmV0dXJuCi1oYW5kbGVfYW5kX3B1c2hfYnVmZmVyX2xpc3QgKEdzdFJ0cE9udmlmVGltZXN0YW1wICogc2VsZiwKLSAgICBHc3RCdWZmZXJMaXN0ICogbGlzdCwgZ2Jvb2xlYW4gZW5kX2NvbnRpZ3VvdXMpCitoYW5kbGVfYW5kX3B1c2hfYnVmZmVyX2xpc3QgKEdzdFJ0cE9udmlmVGltZXN0YW1wICogc2VsZiwgR3N0QnVmZmVyTGlzdCAqIGxpc3QpCiB7CiAgIEdzdEJ1ZmZlciAqYnVmOwogCiAgIC8qIFNldCB0aGUgZXh0ZW5zaW9uIG9uIHRoZSAqZmlyc3QqIGJ1ZmZlciAqLwogICBidWYgPSBnc3RfYnVmZmVyX2xpc3RfZ2V0IChsaXN0LCAwKTsKLSAgaWYgKCFoYW5kbGVfYnVmZmVyIChzZWxmLCBidWYsIGVuZF9jb250aWd1b3VzKSkgeworICBpZiAoIWhhbmRsZV9idWZmZXIgKHNlbGYsIGJ1ZikpIHsKICAgICBnc3RfYnVmZmVyX2xpc3RfdW5yZWYgKGxpc3QpOwogICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgfQpAQCAtNDc4LDIzICs2MTksMTUgQEAKIHsKICAgR3N0UnRwT252aWZUaW1lc3RhbXAgKnNlbGYgPSBHU1RfUlRQX09OVklGX1RJTUVTVEFNUCAocGFyZW50KTsKICAgR3N0Rmxvd1JldHVybiByZXN1bHQgPSBHU1RfRkxPV19PSzsKLSAgR3N0QnVmZmVyICpidWY7CiAKICAgaWYgKCFzZWxmLT5wcm9wX3NldF9lX2JpdCkgewotICAgIHJldHVybiBoYW5kbGVfYW5kX3B1c2hfYnVmZmVyX2xpc3QgKHNlbGYsIGxpc3QsIEZBTFNFKTsKKyAgICByZXR1cm4gaGFuZGxlX2FuZF9wdXNoX2J1ZmZlcl9saXN0IChzZWxmLCBsaXN0KTsKICAgfQogCi0gIC8qIFdlIGhhdmUgdG8gd2FpdCBmb3IgdGhlICpuZXh0KiBsaXN0IGJlZm9yZSBwdXNoaW5nIHRoaXMgb25lICovCisgIC8qIHNlbmQgYW55IHByZXZpb3VzbHkgY2FjaGVkIGl0ZW0ocyksIHRoaXMgbGVhdmVzIGFuIGVtcHR5IHF1ZXVlICovCisgIHJlc3VsdCA9IHNlbmRfY2FjaGVkX2J1ZmZlcl9hbmRfZXZlbnRzIChzZWxmKTsKIAotICBpZiAoc2VsZi0+bGlzdCkgewotICAgIC8qIHB1c2ggdGhlICpwcmV2aW91cyogbGlzdCByZWNlaXZlZCAqLwotICAgIGJ1ZiA9IGdzdF9idWZmZXJfbGlzdF9nZXQgKGxpc3QsIDApOwotCi0gICAgcmVzdWx0ID0gaGFuZGxlX2FuZF9wdXNoX2J1ZmZlcl9saXN0IChzZWxmLCBzZWxmLT5saXN0LAotICAgICAgICBHU1RfQlVGRkVSX0lTX0RJU0NPTlQgKGJ1ZikpOwotICB9Ci0KLSAgLyogVHJhbnNmZXIgb3duZXJzaGlwICovCisgIC8qIGVucXVldWUgdGhlIG5ldyBpdGVtLCBhcyB0aGUgb25seSBpdGVtIGluIHRoZSBxdWV1ZSAqLwogICBzZWxmLT5saXN0ID0gbGlzdDsKICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL2dzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5oIGIvZ3N0L29udmlmL2dzdHJ0cG9udmlmdGltZXN0YW1wLmgKaW5kZXggNDBhZDhkMy4uMWZiMzE5OSAxMDA2NDQKLS0tIGEvZ3N0L29udmlmL2dzdHJ0cG9udmlmdGltZXN0YW1wLmgKKysrIGIvZ3N0L29udmlmL2dzdHJ0cG9udmlmdGltZXN0YW1wLmgKQEAgLTUyLDExICs1MiwxNyBAQAogICBndWludCBwcm9wX2NzZXE7CiAgIGdib29sZWFuIHByb3Bfc2V0X2VfYml0OwogCisgIC8qIGN1cnJlbnRseSB1c2VkIG50cC1vZmZzZXQKKyAgICooY2FuIGJlIGNoYW5nZWQgcnVudGltZSB3aXRoIGEgR3N0TnRwT2Zmc2V0IGV2ZW50KQorICAgKi8KICAgR3N0Q2xvY2tUaW1lIG50cF9vZmZzZXQ7CisgIC8qIGEgR3N0TnRwT2Zmc2V0IGV2ZW50IG1pZ2h0IG1hcmsgdGhlIHN0cmVhbSBhcyBkaXNjb250aW51ZWQgKi8KKyAgZ2Jvb2xlYW4gc2V0X2RfYml0OworICBnYm9vbGVhbiBzZXRfZV9iaXQ7CiAKICAgR3N0U2VnbWVudCBzZWdtZW50OwotICBnYm9vbGVhbiByZWNlaXZlZF9zZWdtZW50OwogICAvKiBCdWZmZXIgd2FpdGluZyB0byBiZSBoYW5kbGVkLCBvbmx5IHVzZWQgaWYgcHJvcF9zZXRfZV9iaXQgaXMgVFJVRSAqLworICBHUXVldWUgKmV2ZW50X3F1ZXVlOwogICBHc3RCdWZmZXIgKmJ1ZmZlcjsKICAgR3N0QnVmZmVyTGlzdCAqbGlzdDsKIH07CmRpZmYgLS1naXQgYS9nc3QvcGF0Y2hkZXRlY3QvTWFrZWZpbGUuaW4gYi9nc3QvcGF0Y2hkZXRlY3QvTWFrZWZpbGUuaW4KaW5kZXggYWZlMzBjMy4uZmE3YTVjYyAxMDA2NDQKLS0tIGEvZ3N0L3BhdGNoZGV0ZWN0L01ha2VmaWxlLmluCisrKyBiL2dzdC9wYXRjaGRldGVjdC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9wY2FwcGFyc2UvTWFrZWZpbGUuaW4gYi9nc3QvcGNhcHBhcnNlL01ha2VmaWxlLmluCmluZGV4IDRkZjgxYmQuLjcxYjQ5OGEgMTAwNjQ0Ci0tLSBhL2dzdC9wY2FwcGFyc2UvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L3BjYXBwYXJzZS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9wY2FwcGFyc2UvZ3N0aXJ0c3BwYXJzZS5jIGIvZ3N0L3BjYXBwYXJzZS9nc3RpcnRzcHBhcnNlLmMKaW5kZXggOGY1ZjZmNi4uODhhMDA5NiAxMDA2NDQKLS0tIGEvZ3N0L3BjYXBwYXJzZS9nc3RpcnRzcHBhcnNlLmMKKysrIGIvZ3N0L3BjYXBwYXJzZS9nc3RpcnRzcHBhcnNlLmMKQEAgLTMwLDcgKzMwLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoLTAuMTAgZmlsZXNyYyBsb2NhdGlvbj1oMjY0Y3Jhc2hlci5wY2FwICEgcGNhcHBhcnNlICEgaXJ0c3BwYXJzZQorICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj1oMjY0Y3Jhc2hlci5wY2FwICEgcGNhcHBhcnNlICEgaXJ0c3BwYXJzZQogICogISBydHBoMjY0ZGVwYXkgISBmZmRlY19oMjY0ICEgZmFrZXNpbmsKICAqIF18IFJlYWQgZnJvbSBhIHBjYXAgZHVtcCBmaWxlIHVzaW5nIGZpbGVzcmMsIGV4dHJhY3QgdGhlIHJhdyBUQ1AgcGFja2V0cywKICAqIGRlcGF5bG9hZCBhbmQgZGVjb2RlIHRoZW0uCmRpZmYgLS1naXQgYS9nc3QvcGNhcHBhcnNlL2dzdHBjYXBwYXJzZS5jIGIvZ3N0L3BjYXBwYXJzZS9nc3RwY2FwcGFyc2UuYwppbmRleCA5ZTIwZDg2Li4yMWUwY2FiIDEwMDY0NAotLS0gYS9nc3QvcGNhcHBhcnNlL2dzdHBjYXBwYXJzZS5jCisrKyBiL2dzdC9wY2FwcGFyc2UvZ3N0cGNhcHBhcnNlLmMKQEAgLTI4LDcgKzI4LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaC0wLjEwIGZpbGVzcmMgbG9jYXRpb249aDI2NGNyYXNoZXIucGNhcCAhIHBjYXBwYXJzZSAhIHJ0cGgyNjRkZXBheQorICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj1oMjY0Y3Jhc2hlci5wY2FwICEgcGNhcHBhcnNlICEgcnRwaDI2NGRlcGF5CiAgKiAhIGZmZGVjX2gyNjQgISBmYWtlc2luawogICogXXwgUmVhZCBmcm9tIGEgcGNhcCBkdW1wIGZpbGUgdXNpbmcgZmlsZXNyYywgZXh0cmFjdCB0aGUgcmF3IFVEUCBwYWNrZXRzLAogICogZGVwYXlsb2FkIGFuZCBkZWNvZGUgdGhlbS4KZGlmZiAtLWdpdCBhL2dzdC9wbm0vTWFrZWZpbGUuaW4gYi9nc3QvcG5tL01ha2VmaWxlLmluCmluZGV4IDRiYjlmMmEuLjNjOTM1YjAgMTAwNjQ0Ci0tLSBhL2dzdC9wbm0vTWFrZWZpbGUuaW4KKysrIGIvZ3N0L3BubS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9wbm0vZ3N0cG5tZGVjLmMgYi9nc3QvcG5tL2dzdHBubWRlYy5jCmluZGV4IDhiY2IwOTQuLjkzYzQxNDAgMTAwNjQ0Ci0tLSBhL2dzdC9wbm0vZ3N0cG5tZGVjLmMKKysrIGIvZ3N0L3BubS9nc3Rwbm1kZWMuYwpAQCAtMjUsNyArMjUsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj10ZXN0LnBubSAhIHBubWRlYyAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249dGVzdC5wbm0gISBwbm1kZWMgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCiAgKiBdfCBUaGUgYWJvdmUgcGlwZWxpbmUgcmVhZHMgYSBwbm0gZmlsZSBhbmQgcmVuZGVycyBpdCB0byB0aGUgc2NyZWVuLgogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtMTM4LDYgKzEzOCwxMCBAQAogICAgIHBubWRlYy0+aW5wdXRfc3RhdGUgPSBOVUxMOwogICB9CiAKKyAgaWYgKHBubWRlYy0+YnVmKSB7CisgICAgZ3N0X2J1ZmZlcl91bnJlZiAocG5tZGVjLT5idWYpOworICAgIHBubWRlYy0+YnVmID0gTlVMTDsKKyAgfQogICByZXR1cm4gVFJVRTsKIH0KIApAQCAtMTg2LDYgKzE5MCw3IEBACiAgICAgICBjYXNlIEdfVE9LRU5fSU5UOgogICAgICAgICBpZiAoaSA9PSB0YXJnZXQpIHsKICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzLCAiUE5NIGZpbGUgY29udGFpbnMgdG9vIG11Y2ggZGF0YS4iKTsKKyAgICAgICAgICBnX3NjYW5uZXJfZGVzdHJveSAoc2Nhbm5lcik7CiAgICAgICAgICAgZ290byBkcm9wX2Vycm9yOwogICAgICAgICB9CiAgICAgICAgIG91dGRhdGFbaSsrXSA9IHNjYW5uZXItPnZhbHVlLnZfaW50OwpkaWZmIC0tZ2l0IGEvZ3N0L3BubS9nc3Rwbm1lbmMuYyBiL2dzdC9wbm0vZ3N0cG5tZW5jLmMKaW5kZXggOGEwNDYxYy4uMzJmZDZmNiAxMDA2NDQKLS0tIGEvZ3N0L3BubS9nc3Rwbm1lbmMuYworKysgYi9nc3QvcG5tL2dzdHBubWVuYy5jCkBAIC0yNyw3ICsyNyw3IEBACiAgKiA8cmVmc2VjdD4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyBudW1fYnVmZmVycz0xICEgdmlkZW9jb252ZXJ0ICEgInZpZGVvL3gtcmF3LGZvcm1hdD1HUkFZOCIgISBwbm1lbmMgYXNjaWk9dHJ1ZSAhIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3QucG5tCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgbnVtX2J1ZmZlcnM9MSAhIHZpZGVvY29udmVydCAhICJ2aWRlby94LXJhdyxmb3JtYXQ9R1JBWTgiICEgcG5tZW5jIGFzY2lpPXRydWUgISBmaWxlc2luayBsb2NhdGlvbj10ZXN0LnBubQogICogXXwgVGhlIGFib3ZlIHBpcGVsaW5lIHdyaXRlcyBhIHRlc3QgcG5tIGZpbGUgKEFTQ0lJIGVuY29kaW5nKS4KICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTE3NCw3ICsxNzQsNyBAQAogICBHc3RQbm1lbmMgKnBubWVuYzsKICAgZ3VpbnQgc2l6ZSwgcGl4ZWxzOwogICBHc3RNYXBJbmZvIG9tYXAsIGltYXA7Ci0gIGdjaGFyICpoZWFkZXI7CisgIGdjaGFyICpoZWFkZXIgPSBOVUxMOwogICBHc3RWaWRlb0luZm8gKmluZm87CiAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7CiAgIGd1aW50IGlfcm93c3RyaWRlLCBvX3Jvd3N0cmlkZTsKQEAgLTIwMiwxMCArMjAyLDEwIEBACiAKICAgaWYgKHBubWVuYy0+aW5mby5lbmNvZGluZyA9PSBHU1RfUE5NX0VOQ09ESU5HX0FTQ0lJKSB7CiAgICAgLyogUGVyIGNvbXBvbmVudCA0IGJ5dGVzIGFyZSB1c2VkIGluIGNhc2Ugb2YgQVNDSUkgZW5jb2RpbmcgKi8KLSAgICBzaXplID0gc2l6ZSAqIDQ7CisgICAgc2l6ZSA9IHNpemUgKiA0ICsgc2l6ZSAvIDIwOwogICAgIHNpemUgKz0gc3RybGVuIChoZWFkZXIpOwogICAgIGZyYW1lLT5vdXRwdXRfYnVmZmVyID0KLSAgICAgICAgZ3N0X3ZpZGVvX2VuY29kZXJfYWxsb2NhdGVfb3V0cHV0X2J1ZmZlciAoZW5jb2RlciwgKHNpemUgKyBzaXplIC8gMjApKTsKKyAgICAgICAgZ3N0X3ZpZGVvX2VuY29kZXJfYWxsb2NhdGVfb3V0cHV0X2J1ZmZlciAoZW5jb2RlciwgKHNpemUpKTsKICAgfSBlbHNlIHsKICAgICBzaXplICs9IHN0cmxlbiAoaGVhZGVyKTsKICAgICBmcmFtZS0+b3V0cHV0X2J1ZmZlciA9CkBAIC0yODQsNiArMjg0LDcgQEAKICAgICBnb3RvIGRvbmU7CiAKIGRvbmU6CisgIGdfZnJlZSAoaGVhZGVyKTsKICAgcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvZ3N0L3Jhd3BhcnNlL01ha2VmaWxlLmluIGIvZ3N0L3Jhd3BhcnNlL01ha2VmaWxlLmluCmluZGV4IGQxNTM1NzYuLmIzMTRhMTAgMTAwNjQ0Ci0tLSBhL2dzdC9yYXdwYXJzZS9NYWtlZmlsZS5pbgorKysgYi9nc3QvcmF3cGFyc2UvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvcmF3cGFyc2UvUkVBRE1FIGIvZ3N0L3Jhd3BhcnNlL1JFQURNRQppbmRleCA0MTdlOTI2Li45ZTIxYmUyIDEwMDY0NAotLS0gYS9nc3QvcmF3cGFyc2UvUkVBRE1FCisrKyBiL2dzdC9yYXdwYXJzZS9SRUFETUUKQEAgLTksNyArOSw3IEBACiBDcmVhdGluZyBleGFtcGxlIGRhdGEKID09PT09PT09PT09PT09PT09PT09PQogCi1nc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyBudW1fYnVmZmVycz0zMDAgISBcCitnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgbnVtX2J1ZmZlcnM9MzAwICEgXAogICB2aWRlby94LXJhdyxmb3JtYXQ9XChzdHJpbmdcKUk0MjAsd2lkdGg9MzIwLGhlaWdodD0yNDAgISBcCiAgIGZpbGVzaW5rIGxvY2F0aW9uPXJhdwogCkBAIC0xNyw3ICsxNyw3IEBACiBSZWFkaW5nIGV4YW1wbGUgZGF0YQogPT09PT09PT09PT09PT09PT09PT0KIAotZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPXJhdyAhIFwKK2dzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249cmF3ICEgXAogICB2aWRlb3BhcnNlIGZvcm1hdD1JNDIwIHdpZHRoPTMyMCBoZWlnaHQ9MjQwIGZyYW1lcmF0ZT0zMC8xICEgXAogICB4dmltYWdlc2luawogCmRpZmYgLS1naXQgYS9nc3QvcmF3cGFyc2UvZ3N0cmF3cGFyc2UuYyBiL2dzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5jCmluZGV4IDAzMDg4OTAuLmE2NDY4ZDkgMTAwNjQ0Ci0tLSBhL2dzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5jCisrKyBiL2dzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5jCkBAIC0yMjIsNiArMjIyLDIyIEBACiAgIH0KIAogICBycC0+bmVnb3RpYXRlZCA9IGdzdF9wYWRfc2V0X2NhcHMgKHJwLT5zcmNwYWQsIGNhcHMpOworCisgIC8qIGlmIHN1YmNsYXNzIGlucGxlbWVudCBkZWNpZGVfYWxsb2NhdGlvbiwgc2VuZCBhbiBhbGxvY2F0aW9uCisgICAqIHF1ZXJ5LCBwYXNzIHJlc3VsdCB0byBzdWJjbGFzcyBhbmQgbGV0IGl0IGhhbmRsZSBhbGxvY2F0aW9uIGlmIG5lZWRlZC4gKi8KKyAgaWYgKHJwX2NsYXNzLT5kZWNpZGVfYWxsb2NhdGlvbikgeworICAgIEdzdFF1ZXJ5ICpxdWVyeTsKKworICAgIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19hbGxvY2F0aW9uIChjYXBzLCBUUlVFKTsKKyAgICBpZiAoIWdzdF9wYWRfcGVlcl9xdWVyeSAocnAtPnNyY3BhZCwgcXVlcnkpKSB7CisgICAgICAvKiBub3QgYSBwcm9ibGVtLCBqdXN0IGRlYnVnIGEgbGl0dGxlICovCisgICAgICBHU1RfREVCVUdfT0JKRUNUIChycCwgInBlZXIgQUxMT0NBVElPTiBxdWVyeSBmYWlsZWQiKTsKKyAgICB9CisKKyAgICBycF9jbGFzcy0+ZGVjaWRlX2FsbG9jYXRpb24gKHJwLCBxdWVyeSk7CisgICAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7CisgIH0KKwogICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CiAKICAgcmV0dXJuIHJwLT5uZWdvdGlhdGVkOwpAQCAtMjMzLDEwICsyNDksMTIgQEAKICAgR3N0Rmxvd1JldHVybiByZXQ7CiAgIGdpbnQgbmZyYW1lczsKICAgR3N0UmF3UGFyc2VDbGFzcyAqcnBjbGFzczsKKyAgZ3NpemUgc2l6ZTsKIAogICBycGNsYXNzID0gR1NUX1JBV19QQVJTRV9HRVRfQ0xBU1MgKHJwKTsKIAotICBuZnJhbWVzID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKSAvIHJwLT5mcmFtZXNpemU7CisgIHNpemUgPSBnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpOworICBuZnJhbWVzID0gc2l6ZSAvIHJwLT5mcmFtZXNpemU7CiAKICAgaWYgKHJwLT5zZWdtZW50LnJhdGUgPCAwKSB7CiAgICAgcnAtPm5fZnJhbWVzIC09IG5mcmFtZXM7CkBAIC0yNTcsOCArMjc1LDggQEAKICAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgfQogCi0gIGlmIChycGNsYXNzLT5zZXRfYnVmZmVyX2ZsYWdzKSB7Ci0gICAgcnBjbGFzcy0+c2V0X2J1ZmZlcl9mbGFncyAocnAsIGJ1ZmZlcik7CisgIGlmIChycGNsYXNzLT5wcmVfcHVzaF9idWZmZXIpIHsKKyAgICBycGNsYXNzLT5wcmVfcHVzaF9idWZmZXIgKHJwLCBidWZmZXIpOwogICB9CiAKICAgaWYgKHJwLT5kaXNjb250KSB7CkBAIC0yNjcsNyArMjg1LDcgQEAKICAgfQogCiAgIGlmIChycC0+c2VnbWVudC5yYXRlID49IDApIHsKLSAgICBycC0+b2Zmc2V0ICs9IGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZmZlcik7CisgICAgcnAtPm9mZnNldCArPSBzaXplOwogICAgIHJwLT5uX2ZyYW1lcyArPSBuZnJhbWVzOwogICB9CiAKZGlmZiAtLWdpdCBhL2dzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5oIGIvZ3N0L3Jhd3BhcnNlL2dzdHJhd3BhcnNlLmgKaW5kZXggZjYyYmI5OC4uMjMyN2RjNiAxMDA2NDQKLS0tIGEvZ3N0L3Jhd3BhcnNlL2dzdHJhd3BhcnNlLmgKKysrIGIvZ3N0L3Jhd3BhcnNlL2dzdHJhd3BhcnNlLmgKQEAgLTc3LDcgKzc3LDggQEAKICAgR3N0RWxlbWVudENsYXNzIHBhcmVudF9jbGFzczsKIAogICBHc3RDYXBzICogKCpnZXRfY2FwcykgKEdzdFJhd1BhcnNlICpycCk7Ci0gIHZvaWQgKCpzZXRfYnVmZmVyX2ZsYWdzKSAoR3N0UmF3UGFyc2UgKnJwLCBHc3RCdWZmZXIgKmJ1ZmZlcik7CisgIHZvaWQgKCpwcmVfcHVzaF9idWZmZXIpIChHc3RSYXdQYXJzZSAqcnAsIEdzdEJ1ZmZlciAqYnVmZmVyKTsKKyAgdm9pZCAoKmRlY2lkZV9hbGxvY2F0aW9uKSAoR3N0UmF3UGFyc2UgKnJwLCBHc3RRdWVyeSAqcXVlcnkpOwogCiAgIGdib29sZWFuIG11bHRpcGxlX2ZyYW1lc19wZXJfYnVmZmVyOwogfTsKZGlmZiAtLWdpdCBhL2dzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmMgYi9nc3QvcmF3cGFyc2UvZ3N0dmlkZW9wYXJzZS5jCmluZGV4IGI4YmM3ZDEuLjdiNWUwMzcgMTAwNjQ0Ci0tLSBhL2dzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmMKKysrIGIvZ3N0L3Jhd3BhcnNlL2dzdHZpZGVvcGFyc2UuYwpAQCAtMzcsMTAgKzM3LDE0IEBACiAgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CiAKIHN0YXRpYyBHc3RDYXBzICpnc3RfdmlkZW9fcGFyc2VfZ2V0X2NhcHMgKEdzdFJhd1BhcnNlICogcnApOwotc3RhdGljIHZvaWQgZ3N0X3ZpZGVvX3BhcnNlX3NldF9idWZmZXJfZmxhZ3MgKEdzdFJhd1BhcnNlICogcnAsCitzdGF0aWMgdm9pZCBnc3RfdmlkZW9fcGFyc2VfcHJlX3B1c2hfYnVmZmVyIChHc3RSYXdQYXJzZSAqIHJwLAogICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7CitzdGF0aWMgdm9pZCBnc3RfdmlkZW9fcGFyc2VfZGVjaWRlX2FsbG9jYXRpb24gKEdzdFJhd1BhcnNlICogcnAsCisgICAgR3N0UXVlcnkgKiBxdWVyeSk7CiAKLXN0YXRpYyB2b2lkIGdzdF92aWRlb19wYXJzZV91cGRhdGVfZnJhbWVfc2l6ZSAoR3N0VmlkZW9QYXJzZSAqIHZwKTsKK3N0YXRpYyB2b2lkIGdzdF92aWRlb19wYXJzZV91cGRhdGVfaW5mbyAoR3N0VmlkZW9QYXJzZSAqIHZwKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdmlkZW9fcGFyc2VfZGVzZXJpYWxpemVfaW50X2FycmF5IChjb25zdCBnY2hhciAqIHN0ciwKKyAgICBnaW50ICogZGVzdCwgZ3VpbnQgbl92YWx1ZXMpOwogCiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfdmlkZW9fcGFyc2VfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X3ZpZGVvX3BhcnNlX2RlYnVnCkBAIC01NCw3ICs1OCwxMCBAQAogICBQUk9QX1BBUiwKICAgUFJPUF9GUkFNRVJBVEUsCiAgIFBST1BfSU5URVJMQUNFRCwKLSAgUFJPUF9UT1BfRklFTERfRklSU1QKKyAgUFJPUF9UT1BfRklFTERfRklSU1QsCisgIFBST1BfU1RSSURFUywKKyAgUFJPUF9PRkZTRVRTLAorICBQUk9QX0ZSQU1FU0laRQogfTsKIAogI2RlZmluZSBnc3RfdmlkZW9fcGFyc2VfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcwpAQCAtNzIsNyArNzksOCBAQAogICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfdmlkZW9fcGFyc2VfZ2V0X3Byb3BlcnR5OwogCiAgIHJwX2NsYXNzLT5nZXRfY2FwcyA9IGdzdF92aWRlb19wYXJzZV9nZXRfY2FwczsKLSAgcnBfY2xhc3MtPnNldF9idWZmZXJfZmxhZ3MgPSBnc3RfdmlkZW9fcGFyc2Vfc2V0X2J1ZmZlcl9mbGFnczsKKyAgcnBfY2xhc3MtPnByZV9wdXNoX2J1ZmZlciA9IGdzdF92aWRlb19wYXJzZV9wcmVfcHVzaF9idWZmZXI7CisgIHJwX2NsYXNzLT5kZWNpZGVfYWxsb2NhdGlvbiA9IGdzdF92aWRlb19wYXJzZV9kZWNpZGVfYWxsb2NhdGlvbjsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0ZPUk1BVCwKICAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiZm9ybWF0IiwgIkZvcm1hdCIsICJGb3JtYXQgb2YgaW1hZ2VzIGluIHJhdyBzdHJlYW0iLApAQCAtMTAwLDYgKzEwOCwxOCBAQAogICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJ0b3AtZmllbGQtZmlyc3QiLCAiVG9wIGZpZWxkIGZpcnN0IiwKICAgICAgICAgICAiVHJ1ZSBpZiB0b3AgZmllbGQgaXMgZWFybGllciB0aGFuIGJvdHRvbSBmaWVsZCIsIFRSVUUsCiAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU1RSSURFUywKKyAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJzdHJpZGVzIiwgIlN0cmlkZXMiLAorICAgICAgICAgICJTdHJpZGUgb2YgZWFjaCBwbGFuZXMgaW4gYnl0ZXMgdXNpbmcgc3RyaW5nIGZvcm1hdDogJ3MwLHMxLHMyLHMzJyIsCisgICAgICAgICAgTlVMTCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfT0ZGU0VUUywKKyAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJvZmZzZXRzIiwgIk9mZnNldHMiLAorICAgICAgICAgICJPZmZzZXQgb2YgZWFjaCBwbGFuZXMgaW4gYnl0ZXMgdXNpbmcgc3RyaW5nIGZvcm1hdDogJ28wLG8xLG8yLG8zJyIsCisgICAgICAgICAgTlVMTCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRlJBTUVTSVpFLAorICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJmcmFtZXNpemUiLCAiRnJhbWVzaXplIiwKKyAgICAgICAgICAiU2l6ZSBvZiBhbiBpbWFnZSBpbiByYXcgc3RyZWFtICgwOiBkZWZhdWx0KSIsIDAsIEdfTUFYVUlOVCwgMCwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKIAogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLCAiVmlkZW8gUGFyc2UiLAogICAgICAgIkZpbHRlci9WaWRlbyIsCkBAIC0xMjYsOCArMTQ2LDggQEAKICAgdnAtPnBhcl9uID0gMTsKICAgdnAtPnBhcl9kID0gMTsKIAotICBnc3RfdmlkZW9fcGFyc2VfdXBkYXRlX2ZyYW1lX3NpemUgKHZwKTsKICAgZ3N0X3Jhd19wYXJzZV9zZXRfZnBzIChHU1RfUkFXX1BBUlNFICh2cCksIDI1LCAxKTsKKyAgZ3N0X3ZpZGVvX3BhcnNlX3VwZGF0ZV9pbmZvICh2cCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNjMsMTIgKzE4MywzNSBAQAogICAgIGNhc2UgUFJPUF9UT1BfRklFTERfRklSU1Q6CiAgICAgICB2cC0+dG9wX2ZpZWxkX2ZpcnN0ID0gZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NUUklERVM6CisgICAgICBpZiAoZ3N0X3ZpZGVvX3BhcnNlX2Rlc2VyaWFsaXplX2ludF9hcnJheSAoZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSksCisgICAgICAgICAgICAgIHZwLT5zdHJpZGUsIEdTVF9WSURFT19NQVhfUExBTkVTKSkgeworICAgICAgICB2cC0+c3RyaWRlX3NldCA9IFRSVUU7CisgICAgICB9IGVsc2UgeworICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHZwLCAiZmFpbGVkIHRvIGRlc2VyaWFsaXplIGdpdmVuIHN0cmlkZXMiKTsKKyAgICAgICAgdnAtPnN0cmlkZV9zZXQgPSBGQUxTRTsKKyAgICAgIH0KKworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX09GRlNFVFM6CisgICAgICBpZiAoZ3N0X3ZpZGVvX3BhcnNlX2Rlc2VyaWFsaXplX2ludF9hcnJheSAoZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSksCisgICAgICAgICAgICAgIHZwLT5vZmZzZXQsIEdTVF9WSURFT19NQVhfUExBTkVTKSkgeworICAgICAgICB2cC0+b2Zmc2V0X3NldCA9IFRSVUU7CisgICAgICB9IGVsc2UgeworICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHZwLCAiZmFpbGVkIHRvIGRlc2VyaWFsaXplZCBnaXZlbiBvZmZzZXRzIik7CisgICAgICAgIHZwLT5vZmZzZXRfc2V0ID0gRkFMU0U7CisgICAgICB9CisKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GUkFNRVNJWkU6CisgICAgICB2cC0+ZnJhbWVzaXplID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKICAgfQogCi0gIGdzdF92aWRlb19wYXJzZV91cGRhdGVfZnJhbWVfc2l6ZSAodnApOworICBnc3RfdmlkZW9fcGFyc2VfdXBkYXRlX2luZm8gKHZwKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTIwMywyMiArMjQ2LDI1OSBAQAogICAgIGNhc2UgUFJPUF9UT1BfRklFTERfRklSU1Q6CiAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgdnAtPnRvcF9maWVsZF9maXJzdCk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU1RSSURFUzoKKyAgICB7CisgICAgICBnY2hhciAqdG1wOworCisgICAgICB0bXAgPSBnX3N0cmR1cF9wcmludGYgKCIlZCwlZCwlZCwlZCIsIHZwLT5pbmZvLnN0cmlkZVswXSwKKyAgICAgICAgICB2cC0+aW5mby5zdHJpZGVbMV0sIHZwLT5pbmZvLnN0cmlkZVsyXSwgdnAtPmluZm8uc3RyaWRlWzNdKTsKKyAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIHRtcCk7CisgICAgICBnX2ZyZWUgKHRtcCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX09GRlNFVFM6CisgICAgeworICAgICAgZ2NoYXIgKnRtcDsKKworICAgICAgdG1wID0gZ19zdHJkdXBfcHJpbnRmICgiJSIgR19HU0laRV9GT1JNQVQgIiwlIiBHX0dTSVpFX0ZPUk1BVAorICAgICAgICAgICIsJSIgR19HU0laRV9GT1JNQVQgIiwlIiBHX0dTSVpFX0ZPUk1BVCwgdnAtPmluZm8ub2Zmc2V0WzBdLAorICAgICAgICAgIHZwLT5pbmZvLm9mZnNldFsxXSwgdnAtPmluZm8ub2Zmc2V0WzJdLCB2cC0+aW5mby5vZmZzZXRbM10pOworICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgdG1wKTsKKyAgICAgIGdfZnJlZSAodG1wKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfRlJBTUVTSVpFOgorICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIHZwLT5pbmZvLnNpemUpOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKICAgfQogfQogCi12b2lkCi1nc3RfdmlkZW9fcGFyc2VfdXBkYXRlX2ZyYW1lX3NpemUgKEdzdFZpZGVvUGFyc2UgKiB2cCkKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3ZpZGVvX3BhcnNlX2Rlc2VyaWFsaXplX2ludF9hcnJheSAoY29uc3QgZ2NoYXIgKiBzdHIsIGdpbnQgKiBkZXN0LAorICAgIGd1aW50IG5fdmFsdWVzKQogeworICBnY2hhciAqKnN0cnY7CisgIGd1aW50IGxlbmd0aDsKKyAgZ3VpbnQgaTsKKworICBzdHJ2ID0gZ19zdHJzcGxpdCAoc3RyLCAiLCIsIG5fdmFsdWVzKTsKKyAgaWYgKHN0cnYgPT0gTlVMTCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgbGVuZ3RoID0gZ19zdHJ2X2xlbmd0aCAoc3Rydik7CisKKyAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgZ2ludDY0IHZhbDsKKworICAgIHZhbCA9IGdfYXNjaWlfc3RydG9sbCAoc3RydltpXSwgTlVMTCwgMTApOworICAgIGlmICh2YWwgPCBHX01JTklOVCB8fCB2YWwgPiBHX01BWElOVCkgeworICAgICAgZ19zdHJmcmVldiAoc3Rydik7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgZGVzdFtpXSA9IHZhbDsKKyAgfQorCisgIC8qIGZpbGwgcmVtYWluaW5nIHZhbHVlcyB3aXRoIDAgKi8KKyAgZm9yIChpID0gbGVuZ3RoOyBpIDwgbl92YWx1ZXM7IGkrKykKKyAgICBkZXN0W2ldID0gMDsKKworICBnX3N0cmZyZWV2IChzdHJ2KTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGlubGluZSBnc2l6ZQorZ3N0X3ZpZGVvX3BhcnNlX2dldF9wbGFuZV9zaXplIChHc3RWaWRlb0luZm8gKiBpbmZvLCBndWludCBwbGFuZSkKK3sKKyAgZ3NpemUgc2l6ZSA9IDA7CisKKyAgaWYgKEdTVF9WSURFT19GT1JNQVRfSU5GT19JU19USUxFRCAoaW5mby0+ZmluZm8pKSB7CisgICAgZ2ludCB0aWxlX3dpZHRoLCB0aWxlX2hlaWdodCwgeF90aWxlcywgeV90aWxlczsKKworICAgIHRpbGVfd2lkdGggPSAxIDw8IEdTVF9WSURFT19GT1JNQVRfSU5GT19USUxFX1dTIChpbmZvLT5maW5mbyk7CisgICAgdGlsZV9oZWlnaHQgPSAxIDw8IEdTVF9WSURFT19GT1JNQVRfSU5GT19USUxFX0hTIChpbmZvLT5maW5mbyk7CisgICAgeF90aWxlcyA9IEdTVF9WSURFT19USUxFX1hfVElMRVMgKGluZm8tPnN0cmlkZVtwbGFuZV0pOworICAgIHlfdGlsZXMgPSBHU1RfVklERU9fVElMRV9ZX1RJTEVTIChpbmZvLT5zdHJpZGVbcGxhbmVdKTsKKworICAgIC8qIHBsYW5lIHNpemUgaXMgdGhlIHNpemUgb2Ygb25lIHRpbGUgbXVsdGlwbGllZCBieSB0aGUgbnVtYmVyIG9mIHRpbGVzICovCisgICAgc2l6ZSA9IHRpbGVfd2lkdGggKiB0aWxlX2hlaWdodCAqIHhfdGlsZXMgKiB5X3RpbGVzOworICB9IGVsc2UgeworICAgIHNpemUgPSBpbmZvLT5zdHJpZGVbcGxhbmVdICoKKyAgICAgICAgR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX1NDQUxFX0hFSUdIVCAoaW5mby0+ZmluZm8sIHBsYW5lLCBpbmZvLT5oZWlnaHQpOworICB9CisKKyAgcmV0dXJuIHNpemU7Cit9CisKKworc3RhdGljIGdib29sZWFuCitnc3RfdmlkZW9fcGFyc2VfdXBkYXRlX3N0cmlkZSAoR3N0VmlkZW9QYXJzZSAqIHZwKQoreworICBHc3RWaWRlb0luZm8gKmluZm8gPSAmdnAtPmluZm87CisgIGd1aW50IGk7CisKKyAgLyogMS4gY2hlY2sgdGhhdCBwcm92aWRlZCBzdHJpZGVzIGFyZSBncmVhdGVyIHRoYW4gdGhlIGRlZmF1bHQgb25lcyAqLworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKGluZm8pOyBpKyspIHsKKyAgICBpZiAoR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX0lTX1RJTEVEIChpbmZvLT5maW5mbykpIHsKKyAgICAgIC8qIGZvciB0aWxlZCBmb3JtYXQsIG1ha2Ugc3VyZSB0aGVyZSBpcyBtb3JlIHRpbGVzIHRoYW4gZGVmYXVsdCAqLworICAgICAgZ2ludCBkZWZhdWx0X3hfdGlsZXMsIGRlZmF1bHRfeV90aWxlcywgeF90aWxlcywgeV90aWxlczsKKworICAgICAgeF90aWxlcyA9IEdTVF9WSURFT19USUxFX1hfVElMRVMgKHZwLT5zdHJpZGVbaV0pOworICAgICAgeV90aWxlcyA9IEdTVF9WSURFT19USUxFX1lfVElMRVMgKHZwLT5zdHJpZGVbaV0pOworICAgICAgZGVmYXVsdF94X3RpbGVzID0gR1NUX1ZJREVPX1RJTEVfWF9USUxFUyAoaW5mby0+c3RyaWRlW2ldKTsKKyAgICAgIGRlZmF1bHRfeV90aWxlcyA9IEdTVF9WSURFT19USUxFX1lfVElMRVMgKGluZm8tPnN0cmlkZVtpXSk7CisKKyAgICAgIGlmICh4X3RpbGVzIDwgZGVmYXVsdF94X3RpbGVzKSB7CisgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodnAsCisgICAgICAgICAgICAieF90aWxlcyBmb3IgcGxhbmUgJXUgaXMgdG9vIHNtYWxsOiBnb3QgJWQsIG1pbiAlZCIsIGksIHhfdGlsZXMsCisgICAgICAgICAgICBkZWZhdWx0X3hfdGlsZXMpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICB9CisKKyAgICAgIGlmICh5X3RpbGVzIDwgZGVmYXVsdF95X3RpbGVzKSB7CisgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodnAsCisgICAgICAgICAgICAieV90aWxlcyBmb3IgcGxhbmUgJXUgaXMgdG9vIHNtYWxsOiBnb3QgJWQsIG1pbiAlZCIsIGksIHlfdGlsZXMsCisgICAgICAgICAgICBkZWZhdWx0X3lfdGlsZXMpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGlmICh2cC0+c3RyaWRlW2ldIDwgaW5mby0+c3RyaWRlW2ldKSB7CisgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodnAsCisgICAgICAgICAgICAic3RyaWRlIGZvciBwbGFuZSAldSBpcyB0b28gc21hbGw6IGdvdCAlZCwgbWluICVkIiwgaSwKKyAgICAgICAgICAgIHZwLT5zdHJpZGVbaV0sIGluZm8tPnN0cmlkZVtpXSk7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICAvKiAyLiB1cGRhdGUgc3RyaWRlIGFuZCBwbGFuZSBvZmZzZXRzICovCisgIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoaW5mbyk7IGkrKykgeworICAgIGlmICh2cC0+c3RyaWRlW2ldICE9IGluZm8tPnN0cmlkZVtpXSkgeworICAgICAgaW5mby0+c3RyaWRlW2ldID0gdnAtPnN0cmlkZVtpXTsKKworICAgICAgaWYgKGkgPiAwKSB7CisgICAgICAgIC8qIHVwZGF0ZSBvZmZzZXQgdG8gcmVmbGVjdCBzdHJpZGUgY2hhbmdlIGZvciBwbGFuZSA+IDAgKi8KKyAgICAgICAgaW5mby0+b2Zmc2V0W2ldID0gaW5mby0+b2Zmc2V0W2kgLSAxXSArCisgICAgICAgICAgICBnc3RfdmlkZW9fcGFyc2VfZ2V0X3BsYW5lX3NpemUgKGluZm8sIGkgLSAxKTsKKyAgICAgIH0KKworICAgICAgdnAtPm5lZWRfdmlkZW9tZXRhID0gVFJVRTsKKyAgICB9CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdmlkZW9fcGFyc2VfdXBkYXRlX29mZnNldCAoR3N0VmlkZW9QYXJzZSAqIHZwKQoreworICBHc3RWaWRlb0luZm8gKmluZm8gPSAmdnAtPmluZm87CisgIGd1aW50IGk7CisKKyAgLyogMS4gY2hlY2sgdGhhdCBwcm92aWRlZCBvZmZzZXRzIGFyZSBncmVhdGVycyB0aGFuIHRoZSBkZWZhdWx0IG9uZXMgYW5kIGFyZQorICAgKiBjb25zaXN0ZW50IHdpdGggcGxhbmUgc2l6ZSAqLworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKGluZm8pOyBpKyspIHsKKyAgICBnc2l6ZSBtaW5fb2Zmc2V0ID0gaW5mby0+b2Zmc2V0W2ldOworCisgICAgaWYgKGkgPiAwKQorICAgICAgbWluX29mZnNldCA9IE1BWCAobWluX29mZnNldCwKKyAgICAgICAgICB2cC0+b2Zmc2V0W2kgLSAxXSArIGdzdF92aWRlb19wYXJzZV9nZXRfcGxhbmVfc2l6ZSAoaW5mbywgaSAtIDEpKTsKKworICAgIGlmICh2cC0+b2Zmc2V0W2ldIDwgbWluX29mZnNldCkgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUICh2cCwKKyAgICAgICAgICAib2Zmc2V0IGZvciBwbGFuZSAldSBpcyB0b28gc21hbGw6IGdvdCAlZCwgbWluICUiIEdfR1NJWkVfRk9STUFULCBpLAorICAgICAgICAgIHZwLT5vZmZzZXRbaV0sIG1pbl9vZmZzZXQpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfQorCisgIC8qIDIuIHVwZGF0ZSBvZmZzZXRzICovCisgIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoaW5mbyk7IGkrKykgeworICAgIGlmICh2cC0+b2Zmc2V0W2ldICE9IGluZm8tPm9mZnNldFtpXSkgeworICAgICAgaW5mby0+b2Zmc2V0W2ldID0gdnAtPm9mZnNldFtpXTsKKyAgICAgIHZwLT5uZWVkX3ZpZGVvbWV0YSA9IFRSVUU7CisgICAgfQorICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdmlkZW9fcGFyc2VfdXBkYXRlX2luZm8gKEdzdFZpZGVvUGFyc2UgKiB2cCkKK3sKKyAgR3N0VmlkZW9JbmZvICppbmZvID0gJnZwLT5pbmZvOworICBnaW50IGZwc19uLCBmcHNfZDsKICAgZ2ludCBmcmFtZXNpemU7Ci0gIEdzdFZpZGVvSW5mbyBpbmZvOworICBndWludCBpOworICBnYm9vbGVhbiB1cGRhdGVfc2l6ZSA9IEZBTFNFOwogCi0gIGdzdF92aWRlb19pbmZvX2luaXQgKCZpbmZvKTsKLSAgZ3N0X3ZpZGVvX2luZm9fc2V0X2Zvcm1hdCAoJmluZm8sIHZwLT5mb3JtYXQsIHZwLT53aWR0aCwgdnAtPmhlaWdodCk7Ci0gIGZyYW1lc2l6ZSA9IEdTVF9WSURFT19JTkZPX1NJWkUgKCZpbmZvKTsKKyAgZ3N0X3Jhd19wYXJzZV9nZXRfZnBzIChHU1RfUkFXX1BBUlNFICh2cCksICZmcHNfbiwgJmZwc19kKTsKIAorICBnc3RfdmlkZW9faW5mb19pbml0IChpbmZvKTsKKyAgZ3N0X3ZpZGVvX2luZm9fc2V0X2Zvcm1hdCAoaW5mbywgdnAtPmZvcm1hdCwgdnAtPndpZHRoLCB2cC0+aGVpZ2h0KTsKKyAgaW5mby0+ZnBzX24gPSBmcHNfbjsKKyAgaW5mby0+ZnBzX2QgPSBmcHNfZDsKKyAgaW5mby0+cGFyX24gPSB2cC0+cGFyX247CisgIGluZm8tPnBhcl9kID0gdnAtPnBhcl9kOworICBpbmZvLT5pbnRlcmxhY2VfbW9kZSA9IHZwLT5pbnRlcmxhY2VkID8KKyAgICAgIEdTVF9WSURFT19JTlRFUkxBQ0VfTU9ERV9JTlRFUkxFQVZFRCA6CisgICAgICBHU1RfVklERU9fSU5URVJMQUNFX01PREVfUFJPR1JFU1NJVkU7CisKKyAgdnAtPm5lZWRfdmlkZW9tZXRhID0gRkFMU0U7CisKKyAgaWYgKHZwLT5zdHJpZGVfc2V0KSB7CisgICAgaWYgKGdzdF92aWRlb19wYXJzZV91cGRhdGVfc3RyaWRlICh2cCkpCisgICAgICB1cGRhdGVfc2l6ZSA9IFRSVUU7CisgICAgZWxzZQorICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUICh2cCwgImludmFsaWQgc3RyaWRlcyBzZXQsIHVzZSBkZWZhdWx0IG9uZXMiKTsKKyAgfQorCisgIGlmICh2cC0+b2Zmc2V0X3NldCkgeworICAgIGlmIChnc3RfdmlkZW9fcGFyc2VfdXBkYXRlX29mZnNldCAodnApKQorICAgICAgdXBkYXRlX3NpemUgPSBUUlVFOworICAgIGVsc2UKKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodnAsICJpbnZhbGlkIG9mZnNldHMgc2V0LCB1c2UgZGVmYXVsdCBvbmVzIik7CisgIH0KKworICBpZiAodXBkYXRlX3NpemUpIHsKKyAgICBmcmFtZXNpemUgPSAwOworCisgICAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChpbmZvKTsgaSsrKSB7CisgICAgICBnaW50IHBsYW5lc2l6ZSA9IGluZm8tPm9mZnNldFtpXTsKKyAgICAgIHBsYW5lc2l6ZSArPSBnc3RfdmlkZW9fcGFyc2VfZ2V0X3BsYW5lX3NpemUgKGluZm8sIGkpOworCisgICAgICBpZiAocGxhbmVzaXplID4gZnJhbWVzaXplKQorICAgICAgICBmcmFtZXNpemUgPSBwbGFuZXNpemU7CisgICAgfQorCisgICAgaW5mby0+c2l6ZSA9IGZyYW1lc2l6ZTsKKyAgfQorCisgIGlmICh2cC0+ZnJhbWVzaXplKSB7CisgICAgLyogdXNlciByZXF1aXJlcyBhIHNwZWNpZmljIGZyYW1lc2l6ZSwganVzdCBtYWtlIHN1cmUgaXQncyBiaWdnZXIgdGhhbgorICAgICAqIHRoZSBjdXJyZW50IG9uZSAqLworCisgICAgaWYgKHZwLT5mcmFtZXNpemUgPiB2cC0+aW5mby5zaXplKQorICAgICAgdnAtPmluZm8uc2l6ZSA9IHZwLT5mcmFtZXNpemU7CisgICAgZWxzZQorICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUICh2cCwgImludmFsaWQgZnJhbWVzaXplIHNldDogZ290ICV1LCBtaW46ICUiCisgICAgICAgICAgR19HU0laRV9GT1JNQVQsIHZwLT5mcmFtZXNpemUsIHZwLT5pbmZvLnNpemUpOworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAodnAsICJ2aWRlbyBpbmZvOiAldXgldSwgZm9ybWF0ICVzLCBzaXplICUiIEdfR1NJWkVfRk9STUFUCisgICAgICAiLCBzdHJpZGUgeyVkLCVkLCVkLCVkfSwgb2Zmc2V0IHslIiBHX0dTSVpFX0ZPUk1BVCAiLCUiIEdfR1NJWkVfRk9STUFUCisgICAgICAiLCUiIEdfR1NJWkVfRk9STUFUICIsJSIgR19HU0laRV9GT1JNQVQgIn0iLAorICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKGluZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQgKGluZm8pLAorICAgICAgR1NUX1ZJREVPX0lORk9fTkFNRSAoaW5mbyksIEdTVF9WSURFT19JTkZPX1NJWkUgKGluZm8pLAorICAgICAgaW5mby0+c3RyaWRlWzBdLCBpbmZvLT5zdHJpZGVbMV0sIGluZm8tPnN0cmlkZVsyXSwgaW5mby0+c3RyaWRlWzNdLAorICAgICAgaW5mby0+b2Zmc2V0WzBdLCBpbmZvLT5vZmZzZXRbMV0sIGluZm8tPm9mZnNldFsyXSwgaW5mby0+b2Zmc2V0WzNdKTsKKworICAvKiB1cGRhdGUgYmFzZSBjbGFzcyBmcmFtZXNpemUgKi8KKyAgZnJhbWVzaXplID0gR1NUX1ZJREVPX0lORk9fU0laRSAoaW5mbyk7CiAgIGdzdF9yYXdfcGFyc2Vfc2V0X2ZyYW1lc2l6ZSAoR1NUX1JBV19QQVJTRSAodnApLCBmcmFtZXNpemUpOwogfQogCkBAIC0yMjYsMzIgKzUwNiw3MCBAQAogZ3N0X3ZpZGVvX3BhcnNlX2dldF9jYXBzIChHc3RSYXdQYXJzZSAqIHJwKQogewogICBHc3RWaWRlb1BhcnNlICp2cCA9IEdTVF9WSURFT19QQVJTRSAocnApOwotICBHc3RWaWRlb0luZm8gaW5mbzsKLSAgR3N0Q2FwcyAqY2FwczsKLSAgZ2ludCBmcHNfbiwgZnBzX2Q7CiAKLSAgZ3N0X3Jhd19wYXJzZV9nZXRfZnBzIChycCwgJmZwc19uLCAmZnBzX2QpOworICByZXR1cm4gZ3N0X3ZpZGVvX2luZm9fdG9fY2FwcyAoJnZwLT5pbmZvKTsKK30KIAotICBnc3RfdmlkZW9faW5mb19pbml0ICgmaW5mbyk7Ci0gIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZpbmZvLCB2cC0+Zm9ybWF0LCB2cC0+d2lkdGgsIHZwLT5oZWlnaHQpOwotICBpbmZvLmZwc19uID0gZnBzX247Ci0gIGluZm8uZnBzX2QgPSBmcHNfZDsKLSAgaW5mby5wYXJfbiA9IHZwLT5wYXJfbjsKLSAgaW5mby5wYXJfZCA9IHZwLT5wYXJfZDsKLSAgaW5mby5pbnRlcmxhY2VfbW9kZSA9IHZwLT5pbnRlcmxhY2VkID8KLSAgICAgIEdTVF9WSURFT19JTlRFUkxBQ0VfTU9ERV9JTlRFUkxFQVZFRCA6Ci0gICAgICBHU1RfVklERU9fSU5URVJMQUNFX01PREVfUFJPR1JFU1NJVkU7CitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF92aWRlb19wYXJzZV9jb3B5X2ZyYW1lIChHc3RWaWRlb1BhcnNlICogdnAsIEdzdEJ1ZmZlciAqIGRlc3QsCisgICAgR3N0VmlkZW9JbmZvICogZGVzdF9pbmZvLCBHc3RCdWZmZXIgKiBzcmMsIEdzdFZpZGVvSW5mbyAqIHNyY19pbmZvKQoreworICBHc3RWaWRlb0ZyYW1lIHNyY19mcmFtZTsKKyAgR3N0VmlkZW9GcmFtZSBkZXN0X2ZyYW1lOworICBnYm9vbGVhbiByZXQ7CiAKLSAgY2FwcyA9IGdzdF92aWRlb19pbmZvX3RvX2NhcHMgKCZpbmZvKTsKKyAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwICgmc3JjX2ZyYW1lLCBzcmNfaW5mbywgc3JjLCBHU1RfTUFQX1JFQUQpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAodnAsICJmYWlsZWQgdG8gbWFwIHNyYyBmcmFtZSIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQogCi0gIHJldHVybiBjYXBzOworICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAgKCZkZXN0X2ZyYW1lLCBkZXN0X2luZm8sIGRlc3QsIEdTVF9NQVBfV1JJVEUpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAodnAsICJmYWlsZWQgdG8gbWFwIGRlc3QgZnJhbWUiKTsKKyAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAgKCZzcmNfZnJhbWUpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHJldCA9IGdzdF92aWRlb19mcmFtZV9jb3B5ICgmZGVzdF9mcmFtZSwgJnNyY19mcmFtZSk7CisKKyAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmc3JjX2ZyYW1lKTsKKyAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmZGVzdF9mcmFtZSk7CisKKyAgcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQKLWdzdF92aWRlb19wYXJzZV9zZXRfYnVmZmVyX2ZsYWdzIChHc3RSYXdQYXJzZSAqIHJwLCBHc3RCdWZmZXIgKiBidWZmZXIpCitnc3RfdmlkZW9fcGFyc2VfcHJlX3B1c2hfYnVmZmVyIChHc3RSYXdQYXJzZSAqIHJwLCBHc3RCdWZmZXIgKiBidWZmZXIpCiB7CiAgIEdzdFZpZGVvUGFyc2UgKnZwID0gR1NUX1ZJREVPX1BBUlNFIChycCk7CiAKKyAgaWYgKHZwLT5kb19jb3B5KSB7CisgICAgR3N0VmlkZW9JbmZvIGluZm87CisgICAgR3N0QnVmZmVyICpvdXRidWY7CisKKyAgICBnc3RfdmlkZW9faW5mb19pbml0ICgmaW5mbyk7CisgICAgZ3N0X3ZpZGVvX2luZm9fc2V0X2Zvcm1hdCAoJmluZm8sIHZwLT5mb3JtYXQsIHZwLT53aWR0aCwgdnAtPmhlaWdodCk7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUICh2cCwgImNvcHlpbmcgZnJhbWUgdG8gcmVtb3ZlIHBhZGRpbmciKTsKKworICAgIG91dGJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FsbG9jYXRlIChOVUxMLCBHU1RfVklERU9fSU5GT19TSVpFICgmaW5mbyksIE5VTEwpOworCisgICAgaWYgKCFnc3RfdmlkZW9fcGFyc2VfY29weV9mcmFtZSAodnAsIG91dGJ1ZiwgJmluZm8sIGJ1ZmZlciwgJnZwLT5pbmZvKSkKKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodnAsICJmYWlsZWQgdG8gY29weSBmcmFtZSIpOworCisgICAgZ3N0X2J1ZmZlcl9yZXBsYWNlX2FsbF9tZW1vcnkgKGJ1ZmZlciwgZ3N0X2J1ZmZlcl9nZXRfYWxsX21lbW9yeSAob3V0YnVmKSk7CisgICAgZ3N0X2J1ZmZlcl91bnJlZiAob3V0YnVmKTsKKyAgfSBlbHNlIHsKKyAgICBHc3RWaWRlb0luZm8gKmluZm8gPSAmdnAtPmluZm87CisgICAgR3N0VmlkZW9GcmFtZUZsYWdzIGZsYWdzID0gR1NUX1ZJREVPX0ZSQU1FX0ZMQUdfTk9ORTsKKworICAgIGlmICh2cC0+aW50ZXJsYWNlZCAmJiB2cC0+dG9wX2ZpZWxkX2ZpcnN0KQorICAgICAgZmxhZ3MgPSBHU1RfVklERU9fRlJBTUVfRkxBR19URkY7CisKKyAgICBnc3RfYnVmZmVyX2FkZF92aWRlb19tZXRhX2Z1bGwgKGJ1ZmZlciwgZmxhZ3MsIEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoaW5mbyksCisgICAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIIChpbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUIChpbmZvKSwKKyAgICAgICAgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKGluZm8pLCBpbmZvLT5vZmZzZXQsIGluZm8tPnN0cmlkZSk7CisgIH0KKwogICBpZiAodnAtPmludGVybGFjZWQpIHsKICAgICBpZiAodnAtPnRvcF9maWVsZF9maXJzdCkgewogICAgICAgR1NUX0JVRkZFUl9GTEFHX1NFVCAoYnVmZmVyLCBHU1RfVklERU9fQlVGRkVSX0ZMQUdfVEZGKTsKQEAgLTI2MCwzICs1NzgsMjAgQEAKICAgICB9CiAgIH0KIH0KKworc3RhdGljIHZvaWQKK2dzdF92aWRlb19wYXJzZV9kZWNpZGVfYWxsb2NhdGlvbiAoR3N0UmF3UGFyc2UgKiBycCwgR3N0UXVlcnkgKiBxdWVyeSkKK3sKKyAgR3N0VmlkZW9QYXJzZSAqdnAgPSBHU1RfVklERU9fUEFSU0UgKHJwKTsKKyAgZ2Jvb2xlYW4gaGFzX3ZpZGVvbWV0YTsKKworICBoYXNfdmlkZW9tZXRhID0gZ3N0X3F1ZXJ5X2ZpbmRfYWxsb2NhdGlvbl9tZXRhIChxdWVyeSwKKyAgICAgIEdTVF9WSURFT19NRVRBX0FQSV9UWVBFLCBOVUxMKTsKKworICAvKiBubyBuZWVkIHRvIGNvcHkgaWYgZG93bnN0cmVhbSBzdXBwb3J0cyB2aWRlb21ldGEgb3IgaWYgd2UgZG9uJ3QgbmVlZAorICAgKiB0aGVtICovCisgIGlmIChoYXNfdmlkZW9tZXRhIHx8ICF2cC0+bmVlZF92aWRlb21ldGEpCisgICAgcmV0dXJuOworCisgIHZwLT5kb19jb3B5ID0gVFJVRTsKK30KZGlmZiAtLWdpdCBhL2dzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmggYi9nc3QvcmF3cGFyc2UvZ3N0dmlkZW9wYXJzZS5oCmluZGV4IGI0MTczZGYuLmRkNTQwYzUgMTAwNjQ0Ci0tLSBhL2dzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmgKKysrIGIvZ3N0L3Jhd3BhcnNlL2dzdHZpZGVvcGFyc2UuaApAQCAtNDgsNiArNDgsMTIgQEAKIHsKICAgR3N0UmF3UGFyc2UgcGFyZW50OwogCisgIEdzdFZpZGVvSW5mbyBpbmZvOworICBnYm9vbGVhbiBkb19jb3B5OworICBnYm9vbGVhbiBuZWVkX3ZpZGVvbWV0YTsKKyAgZ2Jvb2xlYW4gc3RyaWRlX3NldDsKKyAgZ2Jvb2xlYW4gb2Zmc2V0X3NldDsKKwogICAvKiBwcm9wZXJ0aWVzICovCiAgIEdzdFZpZGVvRm9ybWF0IGZvcm1hdDsKICAgZ2ludCB3aWR0aDsKQEAgLTU1LDYgKzYxLDkgQEAKICAgZ2ludCBwYXJfbiwgcGFyX2Q7CiAgIGdib29sZWFuIGludGVybGFjZWQ7CiAgIGdib29sZWFuIHRvcF9maWVsZF9maXJzdDsKKyAgZ2ludCBzdHJpZGVbR1NUX1ZJREVPX01BWF9QTEFORVNdOworICBnaW50IG9mZnNldFtHU1RfVklERU9fTUFYX1BMQU5FU107CisgIGd1aW50IGZyYW1lc2l6ZTsKIH07CiAKIHN0cnVjdCBfR3N0VmlkZW9QYXJzZUNsYXNzCmRpZmYgLS1naXQgYS9nc3QvcmVtb3Zlc2lsZW5jZS9NYWtlZmlsZS5pbiBiL2dzdC9yZW1vdmVzaWxlbmNlL01ha2VmaWxlLmluCmluZGV4IDBmODM1MjQuLjYzNDBkZDUgMTAwNjQ0Ci0tLSBhL2dzdC9yZW1vdmVzaWxlbmNlL01ha2VmaWxlLmluCisrKyBiL2dzdC9yZW1vdmVzaWxlbmNlL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3JlbW92ZXNpbGVuY2UvZ3N0cmVtb3Zlc2lsZW5jZS5jIGIvZ3N0L3JlbW92ZXNpbGVuY2UvZ3N0cmVtb3Zlc2lsZW5jZS5jCmluZGV4IGQ2M2M2MGEuLjc3MDc4MTcgMTAwNjQ0Ci0tLSBhL2dzdC9yZW1vdmVzaWxlbmNlL2dzdHJlbW92ZXNpbGVuY2UuYworKysgYi9nc3QvcmVtb3Zlc2lsZW5jZS9nc3RyZW1vdmVzaWxlbmNlLmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IC1tIGZpbGVzcmMgbG9jYXRpb249ImF1ZGlvZmlsZSIgISBkZWNvZGViaW4gISByZW1vdmVzaWxlbmNlIHJlbW92ZT10cnVlICEgd2F2ZW5jICEgZmlsZXNpbmsgbG9jYXRpb249d2l0aG91dF9hdWRpby53YXYKKyAqIGdzdC1sYXVuY2gtMS4wIC12IC1tIGZpbGVzcmMgbG9jYXRpb249ImF1ZGlvZmlsZSIgISBkZWNvZGViaW4gISByZW1vdmVzaWxlbmNlIHJlbW92ZT10cnVlICEgd2F2ZW5jICEgZmlsZXNpbmsgbG9jYXRpb249d2l0aG91dF9hdWRpby53YXYKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvcnRwL01ha2VmaWxlLmFtIGIvZ3N0L3J0cC9NYWtlZmlsZS5hbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU2NmVkMC4uMDAwMDAwMAotLS0gYS9nc3QvcnRwL01ha2VmaWxlLmFtCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0cnRwYmFkLmxhCi0KLWxpYmdzdHJ0cGJhZF9sYV9TT1VSQ0VTID0gXAotCWdzdHJ0cC5jIFwKLQlnc3RydHBoMjY1ZGVwYXkuYyBcCi0JZ3N0cnRwaDI2NXBheS5jCi0KLWxpYmdzdHJ0cGJhZF9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSBcCi0JJChHU1RfQ0ZMQUdTKQotCi1saWJnc3RydHBiYWRfbGFfTElCQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKLQkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9saWJnc3Rjb2RlY3BhcnNlcnMtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKLQktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQktbGdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQktbGdzdHRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JLWxnc3RydHAtQEdTVF9BUElfVkVSU0lPTkAgXAotCS1sZ3N0cGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSBcCi0JJChMSUJNKQotbGliZ3N0cnRwYmFkX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKLWxpYmdzdHJ0cGJhZF9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQotCi1ub2luc3RfSEVBREVSUyA9CQkJXAotCWdzdHJ0cGgyNjVkZXBheS5oIFwKLQlnc3RydHBoMjY1cGF5LmgKZGlmZiAtLWdpdCBhL2dzdC9ydHAvZ3N0cnRwaDI2NWRlcGF5LmMgYi9nc3QvcnRwL2dzdHJ0cGgyNjVkZXBheS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmMyZTEzLi4wMDAwMDAwCi0tLSBhL2dzdC9ydHAvZ3N0cnRwaDI2NWRlcGF5LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTgwICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSA8MjAwNj4gV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgPDIwMTQ+IEp1cmdlbiBTbG93YWNrIDxqdXJnZW5zbG93YWNrQGdtYWlsLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotIyAgaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxnc3QvYmFzZS9nc3RiaXRyZWFkZXIuaD4KLSNpbmNsdWRlIDxnc3QvcnRwL2dzdHJ0cGJ1ZmZlci5oPgotI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgotI2luY2x1ZGUgImdzdHJ0cGgyNjVkZXBheS5oIgotCi1HU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChydHBoMjY1ZGVwYXlfZGVidWcpOwotI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgKHJ0cGgyNjVkZXBheV9kZWJ1ZykKLQotLyogVGhpcyBpcyB3aGF0IHdlJ2xsIGRlZmF1bHQgdG8gd2hlbiBkb3duc3RyZWFtIGhhc24ndAotICogZXhwcmVzc2VkIGEgcmVzdHJpY3Rpb24gb3IgcHJlZmVyZW5jZSB2aWEgY2FwcyAqLwotI2RlZmluZSBERUZBVUxUX0JZVEVfU1RSRUFNICAgVFJVRQotI2RlZmluZSBERUZBVUxUX0FDQ0VTU19VTklUICAgRkFMU0UKLQotLyogMyB6ZXJvIGJ5dGVzIHN5bmN3b3JkICovCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IHN5bmNfYnl0ZXNbXSA9IHsgMCwgMCwgMCwgMSB9OwotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X3J0cF9oMjY1X2RlcGF5X3NyY190ZW1wbGF0ZSA9Ci0gICAgR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAotICAgIEdTVF9QQURfU1JDLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoCi0gICAgICAgIC8qIEZJWE1FIC0gaHZjMSBhbmQgaGV2MSBmb3JtYXRzIGFyZSBub3Qgc3VwcG9ydGVkIHlldCAqLwotICAgICAgICAvKiJ2aWRlby94LWgyNjUsICIKLSAgICAgICAgICAgInN0cmVhbS1mb3JtYXQgPSAoc3RyaW5nKSBodmMxLCBhbGlnbm1lbnQgPSAoc3RyaW5nKSBhdTsgIgotICAgICAgICAgICAidmlkZW8veC1oMjY1LCAiCi0gICAgICAgICAgICJzdHJlYW0tZm9ybWF0ID0gKHN0cmluZykgaGV2MSwgYWxpZ25tZW50ID0gKHN0cmluZykgYXU7ICIgKi8KLSAgICAgICAgInZpZGVvL3gtaDI2NSwgIgotICAgICAgICAic3RyZWFtLWZvcm1hdCA9IChzdHJpbmcpIGJ5dGUtc3RyZWFtLCBhbGlnbm1lbnQgPSAoc3RyaW5nKSB7IG5hbCwgYXUgfSIpCi0gICAgKTsKLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF9ydHBfaDI2NV9kZXBheV9zaW5rX3RlbXBsYXRlID0KLUdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImFwcGxpY2F0aW9uL3gtcnRwLCAiCi0gICAgICAgICJtZWRpYSA9IChzdHJpbmcpIFwidmlkZW9cIiwgIgotICAgICAgICAiY2xvY2stcmF0ZSA9IChpbnQpIDkwMDAwLCAiICJlbmNvZGluZy1uYW1lID0gKHN0cmluZykgXCJIMjY1XCIiKQotICAgICAgICAvKiogb3B0aW9uYWwgcGFyYW1ldGVycyAqKi8KLSAgICAvKiAicHJvZmlsZS1zcGFjZSA9IChpbnQpIFsgMCwgMyBdLCAiICovCi0gICAgLyogInByb2ZpbGUtaWQgPSAoaW50KSBbIDAsIDMxIF0sICIgKi8KLSAgICAvKiAidGllci1mbGFnID0gKGludCkgWyAwLCAxIF0sICIgKi8KLSAgICAvKiAibGV2ZWwtaWQgPSAoaW50KSBbIDAsIDI1NSBdLCAiICovCi0gICAgLyogImludGVyb3AtY29uc3RyYWludHMgPSAoc3RyaW5nKSBBTlksICIgKi8KLSAgICAvKiAicHJvZmlsZS1jb21wYXRpYmlsaXR5LWluZGljYXRvciA9IChzdHJpbmcpIEFOWSwgIiAqLwotICAgIC8qICJzcHJvcC1zdWItbGF5ZXItaWQgPSAoaW50KSBbIDAsIDYgXSwgIiAqLwotICAgIC8qICJyZWN2LXN1Yi1sYXllci1pZCA9IChpbnQpIFsgMCwgNiBdLCAiICovCi0gICAgLyogIm1heC1yZWN2LWxldmVsLWlkID0gKGludCkgWyAwLCAyNTUgXSwgIiAqLwotICAgIC8qICJ0eC1tb2RlID0gKHN0cmluZykge01TVCAsIFNTVH0sICIgKi8KLSAgICAvKiAic3Byb3AtdnBzID0gKHN0cmluZykgQU5ZLCAiICovCi0gICAgLyogInNwcm9wLXNwcyA9IChzdHJpbmcpIEFOWSwgIiAqLwotICAgIC8qICJzcHJvcC1wcHMgPSAoc3RyaW5nKSBBTlksICIgKi8KLSAgICAvKiAic3Byb3Atc2VpID0gKHN0cmluZykgQU5ZLCAiICovCi0gICAgLyogIm1heC1sc3IgPSAoaW50KSBBTlksICIgKi8vKiBNVVNUIGJlIGluIHRoZSByYW5nZSBvZiBNYXhMdW1hU1IgdG8gMTYgKiBNYXhMdW1hU1IsIGluY2x1c2l2ZSAqLwotICAgIC8qICJtYXgtbHBzID0gKGludCkgQU5ZLCAiICovLyogTVVTVCBiZSBpbiB0aGUgcmFuZ2Ugb2YgTWF4THVtYVBTIHRvIDE2ICogTWF4THVtYVBTLCBpbmNsdXNpdmUgKi8KLSAgICAvKiAibWF4LWNwYiA9IChpbnQpIEFOWSwgIiAqLy8qIE1VU1QgYmUgaW4gdGhlIHJhbmdlIG9mIE1heENQQiB0byAxNiAqIE1heENQQiwgaW5jbHVzaXZlICovCi0gICAgLyogIm1heC1kcGIgPSAoaW50KSBbMSwgMTZdLCAiICovCi0gICAgLyogIm1heC1iciA9IChpbnQpIEFOWSwgIiAqLy8qIE1VU1QgYmUgaW4gdGhlIHJhbmdlIG9mIE1heEJSIHRvIDE2ICogTWF4QlIsIGluY2x1c2l2ZSwgZm9yIHRoZSBoaWdoZXN0IGxldmVsICovCi0gICAgLyogIm1heC10ciA9IChpbnQpIEFOWSwgIiAqLy8qIE1VU1QgYmUgaW4gdGhlIHJhbmdlIG9mIE1heFRpbGVSb3dzIHRvIDE2ICogTWF4VGlsZVJvd3MsIGluY2x1c2l2ZSwgZm9yIHRoZSBoaWdoZXN0IGxldmVsICovCi0gICAgLyogIm1heC10YyA9IChpbnQpIEFOWSwgIiAqLy8qIE1VU1QgYmUgaW4gdGhlIHJhbmdlIG9mIE1heFRpbGVDb2xzIHRvIDE2ICogTWF4VGlsZUNvbHMsIGluY2x1c2l2ZSwgZm9yIHRoZSBoaWdoZXN0IGxldmVsICovCi0gICAgLyogIm1heC1mcHMgPSAoaW50KSBBTlksICIgKi8KLSAgICAvKiAic3Byb3AtbWF4LWRvbi1kaWZmID0gKGludCkgWzAsIDMyNzY3XSwgIiAqLwotICAgIC8qICJzcHJvcC1kZXBhY2stYnVmLW5hbHVzID0gKGludCkgWzAsIDMyNzY3XSwgIiAqLwotICAgIC8qICJzcHJvcC1kZXBhY2stYnVmLW5hbHVzID0gKGludCkgWzAsIDQyOTQ5NjcyOTVdLCAiICovCi0gICAgLyogImRlcGFjay1idWYtY2FwID0gKGludCkgWzEsIDQyOTQ5NjcyOTVdLCAiICovCi0gICAgLyogInNwcm9wLXNlZ21lbnRhdGlvbi1pZCA9IChpbnQpIFswLCAzXSwgIiAqLwotICAgIC8qICJzcHJvcC1zcGF0aWFsLXNlZ21lbnRhdGlvbi1pZGMgPSAoc3RyaW5nKSBBTlksICIgKi8KLSAgICAvKiAiZGVjLXBhcmFsbGVsLWNhcCA9IChzdHJpbmcpIEFOWSwgIiAqLwotICAgICk7Ci0KLSNkZWZpbmUgZ3N0X3J0cF9oMjY1X2RlcGF5X3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKLUdfREVGSU5FX1RZUEUgKEdzdFJ0cEgyNjVEZXBheSwgZ3N0X3J0cF9oMjY1X2RlcGF5LAotICAgIEdTVF9UWVBFX1JUUF9CQVNFX0RFUEFZTE9BRCk7Ci0KLXN0YXRpYyB2b2lkIGdzdF9ydHBfaDI2NV9kZXBheV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7Ci0KLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiBnc3RfcnRwX2gyNjVfZGVwYXlfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICoKLSAgICBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKLQotc3RhdGljIEdzdEJ1ZmZlciAqZ3N0X3J0cF9oMjY1X2RlcGF5X3Byb2Nlc3MgKEdzdFJUUEJhc2VEZXBheWxvYWQgKiBkZXBheWxvYWQsCi0gICAgR3N0UlRQQnVmZmVyICogcnRwKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfcnRwX2gyNjVfZGVwYXlfc2V0Y2FwcyAoR3N0UlRQQmFzZURlcGF5bG9hZCAqIGZpbHRlciwKLSAgICBHc3RDYXBzICogY2Fwcyk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X3J0cF9oMjY1X2RlcGF5X2hhbmRsZV9ldmVudCAoR3N0UlRQQmFzZURlcGF5bG9hZCAqIGRlcGF5LAotICAgIEdzdEV2ZW50ICogZXZlbnQpOwotCi1zdGF0aWMgdm9pZAotZ3N0X3J0cF9oMjY1X2RlcGF5X2NsYXNzX2luaXQgKEdzdFJ0cEgyNjVEZXBheUNsYXNzICoga2xhc3MpCi17Ci0gIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKLSAgR3N0RWxlbWVudENsYXNzICpnc3RlbGVtZW50X2NsYXNzOwotICBHc3RSVFBCYXNlRGVwYXlsb2FkQ2xhc3MgKmdzdHJ0cGJhc2VkZXBheWxvYWRfY2xhc3M7Ci0KLSAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7Ci0gIGdzdGVsZW1lbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOwotICBnc3RydHBiYXNlZGVwYXlsb2FkX2NsYXNzID0gKEdzdFJUUEJhc2VEZXBheWxvYWRDbGFzcyAqKSBrbGFzczsKLQotICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9ydHBfaDI2NV9kZXBheV9maW5hbGl6ZTsKLQotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X3J0cF9oMjY1X2RlcGF5X3NyY190ZW1wbGF0ZSkpOwotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X3J0cF9oMjY1X2RlcGF5X3NpbmtfdGVtcGxhdGUpKTsKLQotICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLAotICAgICAgIlJUUCBIMjY1IGRlcGF5bG9hZGVyIiwgIkNvZGVjL0RlcGF5bG9hZGVyL05ldHdvcmsvUlRQIiwKLSAgICAgICJFeHRyYWN0cyBIMjY1IHZpZGVvIGZyb20gUlRQIHBhY2tldHMgKGRyYWZ0LWlldGYtcGF5bG9hZC1ydHAtaDI2NS0wMy50eHQpIiwKLSAgICAgICJKdXJnZW4gU2xvd2FjayA8anVyZ2Vuc2xvd2Fja0BnbWFpbC5jb20+Iik7Ci0gIGdzdGVsZW1lbnRfY2xhc3MtPmNoYW5nZV9zdGF0ZSA9IGdzdF9ydHBfaDI2NV9kZXBheV9jaGFuZ2Vfc3RhdGU7Ci0KLSAgZ3N0cnRwYmFzZWRlcGF5bG9hZF9jbGFzcy0+cHJvY2Vzc19ydHBfcGFja2V0ID0gZ3N0X3J0cF9oMjY1X2RlcGF5X3Byb2Nlc3M7Ci0gIGdzdHJ0cGJhc2VkZXBheWxvYWRfY2xhc3MtPnNldF9jYXBzID0gZ3N0X3J0cF9oMjY1X2RlcGF5X3NldGNhcHM7Ci0gIGdzdHJ0cGJhc2VkZXBheWxvYWRfY2xhc3MtPmhhbmRsZV9ldmVudCA9IGdzdF9ydHBfaDI2NV9kZXBheV9oYW5kbGVfZXZlbnQ7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfcnRwX2gyNjVfZGVwYXlfaW5pdCAoR3N0UnRwSDI2NURlcGF5ICogcnRwaDI2NWRlcGF5KQotewotICBydHBoMjY1ZGVwYXktPmFkYXB0ZXIgPSBnc3RfYWRhcHRlcl9uZXcgKCk7Ci0gIHJ0cGgyNjVkZXBheS0+cGljdHVyZV9hZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3ICgpOwotICBydHBoMjY1ZGVwYXktPmJ5dGVfc3RyZWFtID0gREVGQVVMVF9CWVRFX1NUUkVBTTsKLSAgcnRwaDI2NWRlcGF5LT5zdHJlYW1fZm9ybWF0ID0gKGdjaGFyICopIGdfbWFsbG9jICgxMCk7Ci0gIHJ0cGgyNjVkZXBheS0+bWVyZ2UgPSBERUZBVUxUX0FDQ0VTU19VTklUOwotICBydHBoMjY1ZGVwYXktPnZwcyA9IGdfcHRyX2FycmF5X25ld193aXRoX2ZyZWVfZnVuYyAoCi0gICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9idWZmZXJfdW5yZWYpOwotICBydHBoMjY1ZGVwYXktPnNwcyA9IGdfcHRyX2FycmF5X25ld193aXRoX2ZyZWVfZnVuYyAoCi0gICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9idWZmZXJfdW5yZWYpOwotICBydHBoMjY1ZGVwYXktPnBwcyA9IGdfcHRyX2FycmF5X25ld193aXRoX2ZyZWVfZnVuYyAoCi0gICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9idWZmZXJfdW5yZWYpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3J0cF9oMjY1X2RlcGF5X3Jlc2V0IChHc3RSdHBIMjY1RGVwYXkgKiBydHBoMjY1ZGVwYXkpCi17Ci0gIGdzdF9hZGFwdGVyX2NsZWFyIChydHBoMjY1ZGVwYXktPmFkYXB0ZXIpOwotICBydHBoMjY1ZGVwYXktPndhaXRfc3RhcnQgPSBUUlVFOwotICBnc3RfYWRhcHRlcl9jbGVhciAocnRwaDI2NWRlcGF5LT5waWN0dXJlX2FkYXB0ZXIpOwotICBydHBoMjY1ZGVwYXktPnBpY3R1cmVfc3RhcnQgPSBGQUxTRTsKLSAgcnRwaDI2NWRlcGF5LT5sYXN0X2tleWZyYW1lID0gRkFMU0U7Ci0gIHJ0cGgyNjVkZXBheS0+bGFzdF90cyA9IDA7Ci0gIHJ0cGgyNjVkZXBheS0+Y3VycmVudF9mdV90eXBlID0gMDsKLSAgcnRwaDI2NWRlcGF5LT5uZXdfY29kZWNfZGF0YSA9IEZBTFNFOwotICBnX3B0cl9hcnJheV9zZXRfc2l6ZSAocnRwaDI2NWRlcGF5LT52cHMsIDApOwotICBnX3B0cl9hcnJheV9zZXRfc2l6ZSAocnRwaDI2NWRlcGF5LT5zcHMsIDApOwotICBnX3B0cl9hcnJheV9zZXRfc2l6ZSAocnRwaDI2NWRlcGF5LT5wcHMsIDApOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3J0cF9oMjY1X2RlcGF5X2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQotewotICBHc3RSdHBIMjY1RGVwYXkgKnJ0cGgyNjVkZXBheTsKLQotICBydHBoMjY1ZGVwYXkgPSBHU1RfUlRQX0gyNjVfREVQQVkgKG9iamVjdCk7Ci0KLSAgaWYgKHJ0cGgyNjVkZXBheS0+Y29kZWNfZGF0YSkKLSAgICBnc3RfYnVmZmVyX3VucmVmIChydHBoMjY1ZGVwYXktPmNvZGVjX2RhdGEpOwotCi0gIGdfZnJlZSAocnRwaDI2NWRlcGF5LT5zdHJlYW1fZm9ybWF0KTsKLQotICBnX29iamVjdF91bnJlZiAocnRwaDI2NWRlcGF5LT5hZGFwdGVyKTsKLSAgZ19vYmplY3RfdW5yZWYgKHJ0cGgyNjVkZXBheS0+cGljdHVyZV9hZGFwdGVyKTsKLQotICBnX3B0cl9hcnJheV9mcmVlIChydHBoMjY1ZGVwYXktPnZwcywgVFJVRSk7Ci0gIGdfcHRyX2FycmF5X2ZyZWUgKHJ0cGgyNjVkZXBheS0+c3BzLCBUUlVFKTsKLSAgZ19wdHJfYXJyYXlfZnJlZSAocnRwaDI2NWRlcGF5LT5wcHMsIFRSVUUpOwotCi0gIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfaDI2NV9kZXBheV9uZWdvdGlhdGUgKEdzdFJ0cEgyNjVEZXBheSAqIHJ0cGgyNjVkZXBheSkKLXsKLSAgR3N0Q2FwcyAqY2FwczsKLSAgZ2ludCBieXRlX3N0cmVhbSA9IC0xOwotICBnaW50IG1lcmdlID0gLTE7Ci0KLSAgY2FwcyA9Ci0gICAgICBnc3RfcGFkX2dldF9hbGxvd2VkX2NhcHMgKEdTVF9SVFBfQkFTRV9ERVBBWUxPQURfU1JDUEFEIChydHBoMjY1ZGVwYXkpKTsKLQotICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJhbGxvd2VkIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKLQotICBpZiAoY2FwcykgewotICAgIGlmIChnc3RfY2Fwc19nZXRfc2l6ZSAoY2FwcykgPiAwKSB7Ci0gICAgICBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLSAgICAgIGNvbnN0IGdjaGFyICpzdHIgPSBOVUxMOwotCi0gICAgICBpZiAoKHN0ciA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAocywgInN0cmVhbS1mb3JtYXQiKSkpIHsKLQotICAgICAgICBzdHJjcHkgKHJ0cGgyNjVkZXBheS0+c3RyZWFtX2Zvcm1hdCwgc3RyKTsKLQotICAgICAgICBpZiAoc3RyY21wIChzdHIsICJoZXYxIikgPT0gMCkgewotICAgICAgICAgIGJ5dGVfc3RyZWFtID0gRkFMU0U7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RyY21wIChzdHIsICJodmMxIikgPT0gMCkgewotICAgICAgICAgIGJ5dGVfc3RyZWFtID0gRkFMU0U7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RyY21wIChzdHIsICJieXRlLXN0cmVhbSIpID09IDApIHsKLSAgICAgICAgICBieXRlX3N0cmVhbSA9IFRSVUU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAidW5rbm93biBzdHJlYW0tZm9ybWF0OiAlcyIsIHN0cik7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgaWYgKChzdHIgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJhbGlnbm1lbnQiKSkpIHsKLSAgICAgICAgaWYgKHN0cmNtcCAoc3RyLCAiYXUiKSA9PSAwKSB7Ci0gICAgICAgICAgbWVyZ2UgPSBUUlVFOwotICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcCAoc3RyLCAibmFsIikgPT0gMCkgewotICAgICAgICAgIG1lcmdlID0gRkFMU0U7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAidW5rbm93biBhbGlnbm1lbnQ6ICVzIiwgc3RyKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gIH0KLQotICBpZiAoYnl0ZV9zdHJlYW0gIT0gLTEpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJkb3duc3RyZWFtIHJlcXVpcmVzIGJ5dGUtc3RyZWFtICVkIiwKLSAgICAgICAgYnl0ZV9zdHJlYW0pOwotICAgIHJ0cGgyNjVkZXBheS0+Ynl0ZV9zdHJlYW0gPSBieXRlX3N0cmVhbTsKLSAgfSBlbHNlIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJkZWZhdWx0aW5nIHRvIGJ5dGUtc3RyZWFtICVkIiwKLSAgICAgICAgREVGQVVMVF9CWVRFX1NUUkVBTSk7Ci0gICAgc3RyY3B5IChydHBoMjY1ZGVwYXktPnN0cmVhbV9mb3JtYXQsICJieXRlLXN0cmVhbSIpOwotICAgIHJ0cGgyNjVkZXBheS0+Ynl0ZV9zdHJlYW0gPSBERUZBVUxUX0JZVEVfU1RSRUFNOwotICB9Ci0gIGlmIChtZXJnZSAhPSAtMSkgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwgImRvd25zdHJlYW0gcmVxdWlyZXMgbWVyZ2UgJWQiLCBtZXJnZSk7Ci0gICAgcnRwaDI2NWRlcGF5LT5tZXJnZSA9IG1lcmdlOwotICB9IGVsc2UgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwgImRlZmF1bHRpbmcgdG8gbWVyZ2UgJWQiLAotICAgICAgICBERUZBVUxUX0FDQ0VTU19VTklUKTsKLSAgICBydHBoMjY1ZGVwYXktPm1lcmdlID0gREVGQVVMVF9BQ0NFU1NfVU5JVDsKLSAgfQotfQotCi0vKiBTdG9sZW4gZnJvbSBiYWQvZ3N0L21wZWd0c2RlbXV4L3BheWxvYWRlcl9wYXJzZXJzLmMgKi8KLS8qIHZhcmlhYmxlIGxlbmd0aCBFeHAtR29sb21iIHBhcnNpbmcgYWNjb3JkaW5nIHRvIEguMjY1IHNwZWMgc2VjdGlvbiA5LjIqLwotc3RhdGljIGdib29sZWFuCi1yZWFkX2dvbG9tYiAoR3N0Qml0UmVhZGVyICogYnIsIGd1aW50MzIgKiB2YWx1ZSkKLXsKLSAgZ3VpbnQ4IGIsIGxlYWRpbmdfemVyb3MgPSAtMTsKLSAgKnZhbHVlID0gMTsKLQotICBmb3IgKGIgPSAwOyAhYjsgbGVhZGluZ196ZXJvcysrKSB7Ci0gICAgaWYgKCFnc3RfYml0X3JlYWRlcl9nZXRfYml0c191aW50OCAoYnIsICZiLCAxKSkKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICAqdmFsdWUgKj0gMjsKLSAgfQotCi0gICp2YWx1ZSA9ICgqdmFsdWUgPj4gMSkgLSAxOwotICBpZiAobGVhZGluZ196ZXJvcyA+IDApIHsKLSAgICBndWludDMyIHRtcCA9IDA7Ci0gICAgaWYgKCFnc3RfYml0X3JlYWRlcl9nZXRfYml0c191aW50MzIgKGJyLCAmdG1wLCBsZWFkaW5nX3plcm9zKSkKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICAqdmFsdWUgKz0gdG1wOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotcGFyc2Vfc3BzIChHc3RNYXBJbmZvICogbWFwLCBndWludDMyICogc3BzX2lkKQoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUbyBwYXJzZSBzZXFfcGFyYW1ldGVyX3NldF9pZCAqLwotICBHc3RCaXRSZWFkZXIgYnIgPSBHU1RfQklUX1JFQURFUl9JTklUIChtYXAtPmRhdGEgKyAxNSwKLSAgICAgIG1hcC0+c2l6ZSAtIDE1KTsKLQotICBpZiAobWFwLT5zaXplIDwgMTYpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGlmICghcmVhZF9nb2xvbWIgKCZiciwgc3BzX2lkKSkKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotcGFyc2VfcHBzIChHc3RNYXBJbmZvICogbWFwLCBndWludDMyICogc3BzX2lkLCBndWludDMyICogcHBzX2lkKQoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUbyBwYXJzZSBwaWN0dXJlX3BhcmFtZXRlcl9zZXRfaWQgKi8KLSAgR3N0Qml0UmVhZGVyIGJyID0gR1NUX0JJVF9SRUFERVJfSU5JVCAobWFwLT5kYXRhICsgMiwKLSAgICAgIG1hcC0+c2l6ZSAtIDIpOwotCi0gIGlmIChtYXAtPnNpemUgPCAzKQotICAgIHJldHVybiBGQUxTRTsKLQotICBpZiAoIXJlYWRfZ29sb21iICgmYnIsIHBwc19pZCkpCi0gICAgcmV0dXJuIEZBTFNFOwotICBpZiAoIXJlYWRfZ29sb21iICgmYnIsIHNwc19pZCkpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIHJldHVybiBUUlVFOwotfQotCi0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3J0cF9oMjY1X3NldF9zcmNfY2FwcyAoR3N0UnRwSDI2NURlcGF5ICogcnRwaDI2NWRlcGF5KQotewotICBnYm9vbGVhbiByZXM7Ci0gIEdzdENhcHMgKnNyY2NhcHM7Ci0KLSAgaWYgKCFydHBoMjY1ZGVwYXktPmJ5dGVfc3RyZWFtICYmCi0gICAgICAoIXJ0cGgyNjVkZXBheS0+bmV3X2NvZGVjX2RhdGEgfHwKLSAgICAgICAgICBydHBoMjY1ZGVwYXktPnZwcy0+bGVuID09IDAgfHwgcnRwaDI2NWRlcGF5LT5zcHMtPmxlbiA9PSAwCi0gICAgICAgICAgfHwgcnRwaDI2NWRlcGF5LT5wcHMtPmxlbiA9PSAwKSkKLSAgICByZXR1cm4gVFJVRTsKLQotICBzcmNjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoInZpZGVvL3gtaDI2NSIsCi0gICAgICAic3RyZWFtLWZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsCi0gICAgICBydHBoMjY1ZGVwYXktPnN0cmVhbV9mb3JtYXQsCi0gICAgICAiYWxpZ25tZW50IiwgR19UWVBFX1NUUklORywgcnRwaDI2NWRlcGF5LT5tZXJnZSA/ICJhdSIgOiAibmFsIiwgTlVMTCk7Ci0KLSAgaWYgKCFydHBoMjY1ZGVwYXktPmJ5dGVfc3RyZWFtKSB7Ci0KLSAgICBHc3RCdWZmZXIgKmNvZGVjX2RhdGE7Ci0gICAgZ2ludCBpID0gMDsKLSAgICBnaW50IGxlbjsKLSAgICBndWludCBudW1fdnBzID0gcnRwaDI2NWRlcGF5LT52cHMtPmxlbjsKLSAgICBndWludCBudW1fc3BzID0gcnRwaDI2NWRlcGF5LT5zcHMtPmxlbjsKLSAgICBndWludCBudW1fcHBzID0gcnRwaDI2NWRlcGF5LT5wcHMtPmxlbjsKLSAgICBHc3RNYXBJbmZvIG1hcCwgbmFsbWFwOwotICAgIGd1aW50OCAqZGF0YTsKLSAgICBnaW50IG5sOwotICAgIGd1aW50OCBudW1fYXJyYXlzID0gMDsKLSAgICBndWludCBuZXdfc2l6ZTsKLSAgICBHc3RCaXRSZWFkZXIgYnI7Ci0gICAgZ3VpbnQzMiB0bXA7Ci0gICAgZ3VpbnQ4IHRtcDggPSAwOwotICAgIGd1aW50MzIgbWF4X3N1Yl9sYXllcnNfbWludXMxLCB0ZW1wb3JhbF9pZF9uZXN0aW5nX2ZsYWcsIGNocm9tYV9mb3JtYXRfaWRjLAotICAgICAgICBiaXRfZGVwdGhfbHVtYV9taW51czgsIGJpdF9kZXB0aF9jaHJvbWFfbWludXM4LAotICAgICAgICBtaW5fc3BhdGlhbF9zZWdtZW50YXRpb25faWRjOwotCi0gICAgLyogRml4bWU6IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgbm90IGVtYmVkZGluZyBTRUkgaW4gY29kZWNfZGF0YSAqLwotCi0gICAgaWYgKG51bV9zcHMgPT0gMCkKLSAgICAgIHJldHVybiBGQUxTRTsKLQotICAgIC8qIHN0YXJ0IHdpdGggMjMgYnl0ZXMgaGVhZGVyICovCi0gICAgbGVuID0gMjM7Ci0KLSAgICBudW1fYXJyYXlzID0gKG51bV92cHMgPiAwKSArIChudW1fc3BzID4gMCkgKyAobnVtX3BwcyA+IDApOwotICAgIGxlbiArPSBudW1fYXJyYXlzOwotCi0gICAgLyogYWRkIHNpemUgb2YgdnBzLCBzcHMgJiBwcHMgKi8KLSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3ZwczsgaSsrKQotICAgICAgbGVuICs9IDIgKyBnc3RfYnVmZmVyX2dldF9zaXplIChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT52cHMsIGkpKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3NwczsgaSsrKQotICAgICAgbGVuICs9IDIgKyBnc3RfYnVmZmVyX2dldF9zaXplIChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT5zcHMsIGkpKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3BwczsgaSsrKQotICAgICAgbGVuICs9IDIgKyBnc3RfYnVmZmVyX2dldF9zaXplIChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT5wcHMsIGkpKTsKLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwKLSAgICAgICAgImNvbnN0cnVjdGluZyBjb2RlY19kYXRhOiBudW1fdnBzID0lZCBudW1fc3BzPSVkLCBudW1fcHBzPSVkIiwgbnVtX3ZwcywKLSAgICAgICAgbnVtX3NwcywgbnVtX3Bwcyk7Ci0KLSAgICBjb2RlY19kYXRhID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChsZW4pOwotICAgIGdfZGVidWcgKCJhbGxvY19sZW46ICV1IiwgbGVuKTsKLSAgICBnc3RfYnVmZmVyX21hcCAoY29kZWNfZGF0YSwgJm1hcCwgR1NUX01BUF9SRUFEV1JJVEUpOwotICAgIGRhdGEgPSBtYXAuZGF0YTsKLQotICAgIG1lbXNldCAoZGF0YSwgMCwgbWFwLnNpemUpOwotCi0gICAgLyogUGFyc2luZyBzcHMgdG8gZ2V0IHRoZSBpbmZvIHJlcXVpcmVkIGZ1cnRoZXIgb24gKi8KLQotICAgIGdzdF9idWZmZXJfbWFwIChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT5zcHMsIDApLCAmbmFsbWFwLAotICAgICAgICBHU1RfTUFQX1JFQUQpOwotCi0gICAgbWF4X3N1Yl9sYXllcnNfbWludXMxID0gKChuYWxtYXAuZGF0YVsyXSkgPj4gMSkgJiAweDA3OwotICAgIHRlbXBvcmFsX2lkX25lc3RpbmdfZmxhZyA9IG5hbG1hcC5kYXRhWzJdICYgMHgwMTsKLQotICAgIGdzdF9iaXRfcmVhZGVyX2luaXQgKCZiciwgbmFsbWFwLmRhdGEgKyAxNSwgbmFsbWFwLnNpemUgLSAxNSk7Ci0KLSAgICByZWFkX2dvbG9tYiAoJmJyLCAmdG1wKTsgICAgLyogc3BzX3NlcV9wYXJhbWV0ZXJfc2V0X2lkICovCi0gICAgcmVhZF9nb2xvbWIgKCZiciwgJmNocm9tYV9mb3JtYXRfaWRjKTsgICAgICAvKiBjaHJvbWFfZm9ybWF0X2lkYyAqLwotCi0gICAgaWYgKGNocm9tYV9mb3JtYXRfaWRjID09IDMpCi0KLSAgICAgIGdzdF9iaXRfcmVhZGVyX2dldF9iaXRzX3VpbnQ4ICgmYnIsICZ0bXA4LCAxKTsgICAgLyogc2VwYXJhdGVfY29sb3VyX3BsYW5lX2ZsYWcgKi8KLQotICAgIHJlYWRfZ29sb21iICgmYnIsICZ0bXApOyAgICAvKiBwaWNfd2lkdGhfaW5fbHVtYV9zYW1wbGVzICovCi0gICAgcmVhZF9nb2xvbWIgKCZiciwgJnRtcCk7ICAgIC8qIHBpY19oZWlnaHRfaW5fbHVtYV9zYW1wbGVzICovCi0KLSAgICBnc3RfYml0X3JlYWRlcl9nZXRfYml0c191aW50OCAoJmJyLCAmdG1wOCwgMSk7ICAgICAgLyogY29uZm9ybWFuY2Vfd2luZG93X2ZsYWcgKi8KLSAgICBpZiAodG1wOCkgewotICAgICAgcmVhZF9nb2xvbWIgKCZiciwgJnRtcCk7ICAvKiBjb25mX3dpbl9sZWZ0X29mZnNldCAqLwotICAgICAgcmVhZF9nb2xvbWIgKCZiciwgJnRtcCk7ICAvKiBjb25mX3dpbl9yaWdodF9vZmZzZXQgKi8KLSAgICAgIHJlYWRfZ29sb21iICgmYnIsICZ0bXApOyAgLyogY29uZl93aW5fdG9wX29mZnNldCAqLwotICAgICAgcmVhZF9nb2xvbWIgKCZiciwgJnRtcCk7ICAvKiBjb25mX3dpbl9ib3R0b21fb2Zmc2V0ICovCi0gICAgfQotCi0gICAgcmVhZF9nb2xvbWIgKCZiciwgJmJpdF9kZXB0aF9sdW1hX21pbnVzOCk7ICAvKiBiaXRfZGVwdGhfbHVtYV9taW51czggKi8KLSAgICByZWFkX2dvbG9tYiAoJmJyLCAmYml0X2RlcHRoX2Nocm9tYV9taW51czgpOyAgICAgICAgLyogYml0X2RlcHRoX2Nocm9tYV9taW51czggKi8KLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwKLSAgICAgICAgIklnbm9yaW5nIG1pbl9zcGF0aWFsX3NlZ21lbnRhdGlvbiBmb3Igbm93IChhc3N1bWluZyB6ZXJvKSIpOwotCi0gICAgbWluX3NwYXRpYWxfc2VnbWVudGF0aW9uX2lkYyA9IDA7ICAgLyogTk9URSAtIHdlIGlnbm9yZSB0aGlzIGZvciBub3csIGJ1dCBpbiBhIHBlcmZlY3Qgd29ybGQsIHdlIHNob3VsZCBjb250aW51ZSBwYXJzaW5nIHRvIG9idGFpbiB0aGUgcmVhbCB2YWx1ZSAqLwotCi0gICAgbmwgPSBuYWxtYXAuc2l6ZTsKLQotICAgIGdzdF9idWZmZXJfdW5tYXAgKGdfcHRyX2FycmF5X2luZGV4IChydHBoMjY1ZGVwYXktPnNwcywgMCksICZuYWxtYXApOwotCi0gICAgLyogSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uVmVyc2lvbiA9IDEgKi8KLSAgICBkYXRhWzBdID0gMTsKLQotICAgIC8qIENvcHkgZnJvbSBwcm9maWxlX3RpZXJfbGV2ZWwgKFJlYy4gSVRVLVQgSC4yNjUgKDA0LzIwMTMpIHNlY3Rpb24gNy4zLjMKLSAgICAgKgotICAgICAqIHByb2ZpbGVfc3BhY2UgfCB0aWVyX2ZsYXQgfCBwcm9maWxlX2lkYyB8Ci0gICAgICogcHJvZmlsZV9jb21wYXRpYmlsaXR5X2ZsYWdzIHwgY29uc3RyYWludF9pbmRpY2F0b3JfZmxhZ3MgfAotICAgICAqIGxldmVsX2lkYyB8IHByb2dyZXNzaXZlX3NvdXJjZV9mbGFnIHwgaW50ZXJsYWNlZF9zb3VyY2VfZmxhZwotICAgICAqIG5vbl9wYWNrZWRfY29uc3RyYWludF9mbGFnIHwgZnJhbWVfb25seV9jb25zdHJhaW50X2ZsYWcKLSAgICAgKiByZXNlcnZlZF96ZXJvXzQ0Yml0cyB8IGxldmVsX2lkYyAqLwotICAgIGdzdF9idWZmZXJfbWFwIChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT5zcHMsIDApLCAmbmFsbWFwLAotICAgICAgICBHU1RfTUFQX1JFQUQpOwotICAgIGZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKQotICAgICAgZGF0YVtpICsgMV0gPSBuYWxtYXAuZGF0YVtpXTsKLSAgICBnc3RfYnVmZmVyX3VubWFwIChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT5zcHMsIDApLCAmbmFsbWFwKTsKLQotICAgIC8qIG1pbl9zcGF0aWFsX3NlZ21lbnRhdGlvbl9pZGMgKi8KLSAgICBHU1RfV1JJVEVfVUlOVDE2X0JFIChkYXRhICsgMTMsIG1pbl9zcGF0aWFsX3NlZ21lbnRhdGlvbl9pZGMpOwotICAgIGRhdGFbMTNdIHw9IDB4ZjA7Ci0gICAgZGF0YVsxNV0gPSAweGZjOyAgICAgICAgICAgIC8qIGtlZXBpbmcgcGFycmFsbGVsaXNtVHlwZSBhcyB6ZXJvICh1bmtub3duKSAqLwotICAgIGRhdGFbMTZdID0gMHhmYyB8IGNocm9tYV9mb3JtYXRfaWRjOwotICAgIGRhdGFbMTddID0gMHhmOCB8IGJpdF9kZXB0aF9sdW1hX21pbnVzODsKLSAgICBkYXRhWzE4XSA9IDB4ZjggfCBiaXRfZGVwdGhfY2hyb21hX21pbnVzODsKLSAgICBkYXRhWzE5XSA9IDB4MDA7ICAgICAgICAgICAgLyoga2VlcCBhdmdGcmFtZVJhdGUgYXMgdW5zcGVjaWZpZWQgKi8KLSAgICBkYXRhWzIwXSA9IDB4MDA7ICAgICAgICAgICAgLyoga2VlcCBhdmdGcmFtZVJhdGUgYXMgdW5zcGVjaWZpZWQgKi8KLSAgICAvKiBjb25zdEZyYW1lUmF0ZSgyIGJpdHMpOiAwLCBzdHJlYW0gbWF5IG9yIG1heSBub3QgYmUgb2YgY29uc3RhbnQgZnJhbWVyYXRlCi0gICAgICogbnVtVGVtcG9yYWxMYXllcnMgKDMgYml0cyk6IG51bWJlciBvZiB0ZW1wb3JhbCBsYXllcnMsIHZhbHVlIGZyb20gU1BTCi0gICAgICogVGVtcG9yYWxJZE5lc3RlZCAoMSBiaXQpOiBzcHNfdGVtcG9yYWxfaWRfbmVzdGluZ19mbGFnIGZyb20gU1BTCi0gICAgICogbGVuZ3RoU2l6ZU1pbnVzT25lICgyIGJpdHMpOiBwbHVzIDEgaW5kaWNhdGVzIHRoZSBsZW5ndGggb2YgdGhlIE5BTFVuaXRMZW5ndGggKi8KLSAgICBkYXRhWzIxXSA9Ci0gICAgICAgIDB4MDAgfCAoKG1heF9zdWJfbGF5ZXJzX21pbnVzMSArCi0gICAgICAgICAgICAxKSA8PCAzKSB8ICh0ZW1wb3JhbF9pZF9uZXN0aW5nX2ZsYWcgPDwgMikgfCAobmwgLSAxKTsKLSAgICBHU1RfV1JJVEVfVUlOVDggKGRhdGEgKyAyMiwgbnVtX2FycmF5cyk7ICAgIC8qIG51bU9mQXJyYXlzICovCi0KLSAgICBkYXRhICs9IDIzOwotCi0gICAgLyogY29weSBhbGwgVlBTICovCi0gICAgaWYgKG51bV92cHMgPiAwKSB7Ci0gICAgICAvKiBhcnJheV9jb21wbGV0ZW5lc3MgfCByZXNlcnZlZF96ZXJvIGJpdCB8IG5hbF91bml0X3R5cGUgKi8KLSAgICAgIGRhdGFbMF0gPSAweDAwIHwgMHgyMDsKLSAgICAgIGRhdGErKzsKLQotICAgICAgR1NUX1dSSVRFX1VJTlQxNl9CRSAoZGF0YSwgbnVtX3Zwcyk7Ci0gICAgICBkYXRhICs9IDI7Ci0KLSAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fdnBzOyBpKyspIHsKLSAgICAgICAgZ3NpemUgbmFsX3NpemUgPQotICAgICAgICAgICAgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+dnBzLCBpKSk7Ci0gICAgICAgIEdTVF9XUklURV9VSU5UMTZfQkUgKGRhdGEsIG5hbF9zaXplKTsKLSAgICAgICAgZ3N0X2J1ZmZlcl9leHRyYWN0IChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT52cHMsIGkpLCAwLAotICAgICAgICAgICAgZGF0YSArIDIsIG5hbF9zaXplKTsKLSAgICAgICAgZGF0YSArPSAyICsgbmFsX3NpemU7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwgIkNvcGllZCBWUFMgJWQgb2YgbGVuZ3RoICV1IiwgaSwKLSAgICAgICAgICAgIChndWludCkgbmFsX3NpemUpOwotICAgICAgfQotICAgIH0KLQotICAgIC8qIGNvcHkgYWxsIFNQUyAqLwotICAgIGlmIChudW1fc3BzID4gMCkgewotICAgICAgLyogYXJyYXlfY29tcGxldGVuZXNzIHwgcmVzZXJ2ZWRfemVybyBiaXQgfCBuYWxfdW5pdF90eXBlICovCi0gICAgICBkYXRhWzBdID0gMHgwMCB8IDB4MjE7Ci0gICAgICBkYXRhKys7Ci0KLSAgICAgIEdTVF9XUklURV9VSU5UMTZfQkUgKGRhdGEsIG51bV9zcHMpOwotICAgICAgZGF0YSArPSAyOwotCi0gICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3NwczsgaSsrKSB7Ci0gICAgICAgIGdzaXplIG5hbF9zaXplID0KLSAgICAgICAgICAgIGdzdF9idWZmZXJfZ2V0X3NpemUgKGdfcHRyX2FycmF5X2luZGV4IChydHBoMjY1ZGVwYXktPnNwcywgaSkpOwotICAgICAgICBHU1RfV1JJVEVfVUlOVDE2X0JFIChkYXRhLCBuYWxfc2l6ZSk7Ci0gICAgICAgIGdzdF9idWZmZXJfZXh0cmFjdCAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+c3BzLCBpKSwgMCwKLSAgICAgICAgICAgIGRhdGEgKyAyLCBuYWxfc2l6ZSk7Ci0gICAgICAgIGRhdGEgKz0gMiArIG5hbF9zaXplOwotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJDb3BpZWQgU1BTICVkIG9mIGxlbmd0aCAldSIsIGksCi0gICAgICAgICAgICAoZ3VpbnQpIG5hbF9zaXplKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBjb3B5IGFsbCBQUFMgKi8KLSAgICBpZiAobnVtX3BwcyA+IDApIHsKLSAgICAgIC8qIGFycmF5X2NvbXBsZXRlbmVzcyB8IHJlc2VydmVkX3plcm8gYml0IHwgbmFsX3VuaXRfdHlwZSAqLwotICAgICAgZGF0YVswXSA9IDB4MDAgfCAweDIyOwotICAgICAgZGF0YSsrOwotCi0gICAgICBHU1RfV1JJVEVfVUlOVDE2X0JFIChkYXRhLCBudW1fcHBzKTsKLSAgICAgIGRhdGEgKz0gMjsKLQotICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9wcHM7IGkrKykgewotICAgICAgICBnc2l6ZSBuYWxfc2l6ZSA9Ci0gICAgICAgICAgICBnc3RfYnVmZmVyX2dldF9zaXplIChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT5wcHMsIGkpKTsKLSAgICAgICAgR1NUX1dSSVRFX1VJTlQxNl9CRSAoZGF0YSwgbmFsX3NpemUpOwotICAgICAgICBnc3RfYnVmZmVyX2V4dHJhY3QgKGdfcHRyX2FycmF5X2luZGV4IChydHBoMjY1ZGVwYXktPnBwcywgaSksIDAsCi0gICAgICAgICAgICBkYXRhICsgMiwgbmFsX3NpemUpOwotICAgICAgICBkYXRhICs9IDIgKyBuYWxfc2l6ZTsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAiQ29waWVkIFBQUyAlZCBvZiBsZW5ndGggJXUiLCBpLAotICAgICAgICAgICAgKGd1aW50KSBuYWxfc2l6ZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgbmV3X3NpemUgPSBkYXRhIC0gbWFwLmRhdGE7Ci0gICAgZ3N0X2J1ZmZlcl91bm1hcCAoY29kZWNfZGF0YSwgJm1hcCk7Ci0gICAgZ3N0X2J1ZmZlcl9zZXRfc2l6ZSAoY29kZWNfZGF0YSwgbmV3X3NpemUpOwotCi0gICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoc3JjY2FwcywKLSAgICAgICAgImNvZGVjX2RhdGEiLCBHU1RfVFlQRV9CVUZGRVIsIGNvZGVjX2RhdGEsIE5VTEwpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKGNvZGVjX2RhdGEpOwotICB9Ci0KLSAgaWYgKGdzdF9wYWRfaGFzX2N1cnJlbnRfY2FwcyAoR1NUX1JUUF9CQVNFX0RFUEFZTE9BRF9TUkNQQUQgKHJ0cGgyNjVkZXBheSkpKSB7Ci0gICAgR3N0Q2FwcyAqb2xkX2NhcHMgPQotICAgICAgICBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9SVFBfQkFTRV9ERVBBWUxPQURfU1JDUEFEIChydHBoMjY1ZGVwYXkpKTsKLQotICAgIC8qIE9ubHkgdXBkYXRlIHRoZSBjYXBzIGlmIHRoZXkgYXJlIG5vdCBlcXVhbC4gRm9yCi0gICAgICogQVZDIHdlIGRvbid0IHVwZGF0ZSBjYXBzIGlmIG9ubHkgdGhlIGNvZGVjX2RhdGEKLSAgICAgKiBjaGFuZ2VzLiBUaGlzIGlzIHRoZSBzYW1lIGJlaGF2aW91ciBhcyBpbiBoMjY0cGFyc2UKLSAgICAgKiBhbmQgZ3N0cnRwaDI2NGRlcGF5Ci0gICAgICovCi0gICAgaWYgKHJ0cGgyNjVkZXBheS0+Ynl0ZV9zdHJlYW0pIHsKLSAgICAgIGlmICghZ3N0X2NhcHNfaXNfZXF1YWwgKHNyY2NhcHMsIG9sZF9jYXBzKSkKLSAgICAgICAgcmVzID0KLSAgICAgICAgICAgIGdzdF9wYWRfc2V0X2NhcHMgKEdTVF9SVFBfQkFTRV9ERVBBWUxPQURfU1JDUEFEIChydHBoMjY1ZGVwYXkpLAotICAgICAgICAgICAgc3JjY2Fwcyk7Ci0gICAgICBlbHNlCi0gICAgICAgIHJlcyA9IFRSVUU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEdzdENhcHMgKnRtcF9jYXBzID0gZ3N0X2NhcHNfY29weSAoc3JjY2Fwcyk7Ci0gICAgICBHc3RTdHJ1Y3R1cmUgKm9sZF9zLCAqdG1wX3M7Ci0KLSAgICAgIG9sZF9zID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAob2xkX2NhcHMsIDApOwotICAgICAgdG1wX3MgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlICh0bXBfY2FwcywgMCk7Ci0gICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGQgKG9sZF9zLCAiY29kZWNfZGF0YSIpKQotICAgICAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAodG1wX3MsICJjb2RlY19kYXRhIiwKLSAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChvbGRfcywgImNvZGVjX2RhdGEiKSk7Ci0KLSAgICAgIGlmICghZ3N0X2NhcHNfaXNfZXF1YWwgKG9sZF9jYXBzLCB0bXBfY2FwcykpCi0gICAgICAgIHJlcyA9Ci0gICAgICAgICAgICBnc3RfcGFkX3NldF9jYXBzIChHU1RfUlRQX0JBU0VfREVQQVlMT0FEX1NSQ1BBRCAocnRwaDI2NWRlcGF5KSwKLSAgICAgICAgICAgIHNyY2NhcHMpOwotICAgICAgZWxzZQotICAgICAgICByZXMgPSBUUlVFOwotCi0gICAgICBnc3RfY2Fwc191bnJlZiAodG1wX2NhcHMpOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICByZXMgPQotICAgICAgICBnc3RfcGFkX3NldF9jYXBzIChHU1RfUlRQX0JBU0VfREVQQVlMT0FEX1NSQ1BBRCAocnRwaDI2NWRlcGF5KSwKLSAgICAgICAgc3JjY2Fwcyk7Ci0gIH0KLQotICBnc3RfY2Fwc191bnJlZiAoc3JjY2Fwcyk7Ci0KLSAgLyogSW5zZXJ0IFNQUyBhbmQgUFBTIGludG8gdGhlIHN0cmVhbSBvbiBuZXh0IG9wcG9ydHVuaXR5ICovCi0gIGlmIChydHBoMjY1ZGVwYXktPnNwcy0+bGVuID4gMCB8fCBydHBoMjY1ZGVwYXktPnBwcy0+bGVuID4gMCkgewotICAgIGdpbnQgaTsKLSAgICBHc3RCdWZmZXIgKmNvZGVjX2RhdGE7Ci0gICAgR3N0TWFwSW5mbyBtYXA7Ci0gICAgZ3VpbnQ4ICpkYXRhOwotICAgIGd1aW50IGxlbiA9IDA7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgcnRwaDI2NWRlcGF5LT5zcHMtPmxlbjsgaSsrKSB7Ci0gICAgICBsZW4gKz0gNCArIGdzdF9idWZmZXJfZ2V0X3NpemUgKGdfcHRyX2FycmF5X2luZGV4IChydHBoMjY1ZGVwYXktPnNwcywgaSkpOwotICAgIH0KLQotICAgIGZvciAoaSA9IDA7IGkgPCBydHBoMjY1ZGVwYXktPnBwcy0+bGVuOyBpKyspIHsKLSAgICAgIGxlbiArPSA0ICsgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+cHBzLCBpKSk7Ci0gICAgfQotCi0gICAgY29kZWNfZGF0YSA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAobGVuKTsKLSAgICBnc3RfYnVmZmVyX21hcCAoY29kZWNfZGF0YSwgJm1hcCwgR1NUX01BUF9XUklURSk7Ci0gICAgZGF0YSA9IG1hcC5kYXRhOwotCi0gICAgZm9yIChpID0gMDsgaSA8IHJ0cGgyNjVkZXBheS0+c3BzLT5sZW47IGkrKykgewotICAgICAgR3N0QnVmZmVyICpzcHNfYnVmID0gZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+c3BzLCBpKTsKLSAgICAgIGd1aW50IHNwc19zaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoc3BzX2J1Zik7Ci0KLSAgICAgIGlmIChydHBoMjY1ZGVwYXktPmJ5dGVfc3RyZWFtKQotICAgICAgICBtZW1jcHkgKGRhdGEsIHN5bmNfYnl0ZXMsIHNpemVvZiAoc3luY19ieXRlcykpOwotICAgICAgZWxzZQotICAgICAgICBHU1RfV1JJVEVfVUlOVDMyX0JFIChkYXRhLCBzcHNfc2l6ZSk7Ci0gICAgICBnc3RfYnVmZmVyX2V4dHJhY3QgKHNwc19idWYsIDAsIGRhdGEgKyA0LCAtMSk7Ci0gICAgICBkYXRhICs9IDQgKyBzcHNfc2l6ZTsKLSAgICB9Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgcnRwaDI2NWRlcGF5LT5wcHMtPmxlbjsgaSsrKSB7Ci0gICAgICBHc3RCdWZmZXIgKnBwc19idWYgPSBnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT5wcHMsIGkpOwotICAgICAgZ3VpbnQgcHBzX3NpemUgPSBnc3RfYnVmZmVyX2dldF9zaXplIChwcHNfYnVmKTsKLQotICAgICAgaWYgKHJ0cGgyNjVkZXBheS0+Ynl0ZV9zdHJlYW0pCi0gICAgICAgIG1lbWNweSAoZGF0YSwgc3luY19ieXRlcywgc2l6ZW9mIChzeW5jX2J5dGVzKSk7Ci0gICAgICBlbHNlCi0gICAgICAgIEdTVF9XUklURV9VSU5UMzJfQkUgKGRhdGEsIHBwc19zaXplKTsKLSAgICAgIGdzdF9idWZmZXJfZXh0cmFjdCAocHBzX2J1ZiwgMCwgZGF0YSArIDQsIC0xKTsKLSAgICAgIGRhdGEgKz0gNCArIHBwc19zaXplOwotICAgIH0KLQotICAgIGdzdF9idWZmZXJfdW5tYXAgKGNvZGVjX2RhdGEsICZtYXApOwotICAgIGlmIChydHBoMjY1ZGVwYXktPmNvZGVjX2RhdGEpCi0gICAgICBnc3RfYnVmZmVyX3VucmVmIChydHBoMjY1ZGVwYXktPmNvZGVjX2RhdGEpOwotICAgIHJ0cGgyNjVkZXBheS0+Y29kZWNfZGF0YSA9IGNvZGVjX2RhdGE7Ci0gIH0KLQotICBpZiAocmVzKQotICAgIHJ0cGgyNjVkZXBheS0+bmV3X2NvZGVjX2RhdGEgPSBGQUxTRTsKLQotICByZXR1cm4gcmVzOwotfQotCi1nYm9vbGVhbgotZ3N0X3J0cF9oMjY1X2FkZF92cHNfc3BzX3BwcyAoR3N0RWxlbWVudCAqIHJ0cGgyNjUsIEdQdHJBcnJheSAqIHZwc19hcnJheSwKLSAgICBHUHRyQXJyYXkgKiBzcHNfYXJyYXksIEdQdHJBcnJheSAqIHBwc19hcnJheSwgR3N0QnVmZmVyICogbmFsKQotewotICBHc3RNYXBJbmZvIG1hcDsKLSAgZ3VjaGFyIHR5cGU7Ci0gIGd1aW50IGk7Ci0KLSAgZ3N0X2J1ZmZlcl9tYXAgKG5hbCwgJm1hcCwgR1NUX01BUF9SRUFEKTsKLQotICB0eXBlID0gKG1hcC5kYXRhWzBdID4+IDEpICYgMHgzZjsKLQotICBpZiAodHlwZSA9PSBHU1RfSDI2NV9WUFNfTlVUKSB7Ci0gICAgZ3VpbnQzMiB2cHNfaWQgPSAobWFwLmRhdGFbMl0gPj4gNCkgJiAweDBmOwotCi0gICAgZm9yIChpID0gMDsgaSA8IHZwc19hcnJheS0+bGVuOyBpKyspIHsKLSAgICAgIEdzdEJ1ZmZlciAqdnBzID0gZ19wdHJfYXJyYXlfaW5kZXggKHZwc19hcnJheSwgaSk7Ci0gICAgICBHc3RNYXBJbmZvIHZwc21hcDsKLSAgICAgIGd1aW50MzIgdG1wX3Zwc19pZDsKLQotICAgICAgZ3N0X2J1ZmZlcl9tYXAgKHZwcywgJnZwc21hcCwgR1NUX01BUF9SRUFEKTsKLSAgICAgIHRtcF92cHNfaWQgPSAodnBzbWFwLmRhdGFbMl0gPj4gNCkgJiAweDBmOwotCi0gICAgICBpZiAodnBzX2lkID09IHRtcF92cHNfaWQpIHsKLSAgICAgICAgaWYgKG1hcC5zaXplID09IHZwc21hcC5zaXplICYmCi0gICAgICAgICAgICBtZW1jbXAgKG1hcC5kYXRhLCB2cHNtYXAuZGF0YSwgdnBzbWFwLnNpemUpID09IDApIHsKLSAgICAgICAgICBHU1RfTE9HX09CSkVDVCAocnRwaDI2NSwgIlVuY2hhbmdlZCBWUFMgJXUsIG5vdCB1cGRhdGluZyIsIHZwc19pZCk7Ci0gICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAodnBzLCAmdnBzbWFwKTsKLSAgICAgICAgICBnb3RvIGRyb3A7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAodnBzLCAmdnBzbWFwKTsKLSAgICAgICAgICBnX3B0cl9hcnJheV9yZW1vdmVfaW5kZXhfZmFzdCAodnBzX2FycmF5LCBpKTsKLSAgICAgICAgICBnX3B0cl9hcnJheV9hZGQgKHZwc19hcnJheSwgbmFsKTsKLSAgICAgICAgICBHU1RfTE9HX09CSkVDVCAocnRwaDI2NSwgIk1vZGlmaWVkIFZQUyAldSwgcmVwbGFjaW5nIiwgdnBzX2lkKTsKLSAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGdzdF9idWZmZXJfdW5tYXAgKHZwcywgJnZwc21hcCk7Ci0gICAgfQotICAgIEdTVF9MT0dfT0JKRUNUIChydHBoMjY1LCAiQWRkaW5nIG5ldyBWUFMgJXUiLCB2cHNfaWQpOwotICAgIGdfcHRyX2FycmF5X2FkZCAodnBzX2FycmF5LCBuYWwpOwotICB9IGVsc2UgaWYgKHR5cGUgPT0gR1NUX0gyNjVfU1BTX05VVCkgewotICAgIGd1aW50MzIgc3BzX2lkOwotCi0gICAgaWYgKCFwYXJzZV9zcHMgKCZtYXAsICZzcHNfaWQpKSB7Ci0gICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHJ0cGgyNjUsICJJbnZhbGlkIFNQUywiCi0gICAgICAgICAgIiBjYW4ndCBwYXJzZSBzZXFfcGFyYW1ldGVyX3NldF9pZCIpOwotICAgICAgZ290byBkcm9wOwotICAgIH0KLQotICAgIGZvciAoaSA9IDA7IGkgPCBzcHNfYXJyYXktPmxlbjsgaSsrKSB7Ci0gICAgICBHc3RCdWZmZXIgKnNwcyA9IGdfcHRyX2FycmF5X2luZGV4IChzcHNfYXJyYXksIGkpOwotICAgICAgR3N0TWFwSW5mbyBzcHNtYXA7Ci0gICAgICBndWludDMyIHRtcF9zcHNfaWQ7Ci0KLSAgICAgIGdzdF9idWZmZXJfbWFwIChzcHMsICZzcHNtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gICAgICBwYXJzZV9zcHMgKCZzcHNtYXAsICZ0bXBfc3BzX2lkKTsKLQotICAgICAgaWYgKHNwc19pZCA9PSB0bXBfc3BzX2lkKSB7Ci0gICAgICAgIGlmIChtYXAuc2l6ZSA9PSBzcHNtYXAuc2l6ZSAmJgotICAgICAgICAgICAgbWVtY21wIChtYXAuZGF0YSwgc3BzbWFwLmRhdGEsIHNwc21hcC5zaXplKSA9PSAwKSB7Ci0gICAgICAgICAgR1NUX0xPR19PQkpFQ1QgKHJ0cGgyNjUsICJVbmNoYW5nZWQgU1BTICV1LCBub3QgdXBkYXRpbmciLCBzcHNfaWQpOwotICAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKHNwcywgJnNwc21hcCk7Ci0gICAgICAgICAgZ290byBkcm9wOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKHNwcywgJnNwc21hcCk7Ci0gICAgICAgICAgZ19wdHJfYXJyYXlfcmVtb3ZlX2luZGV4X2Zhc3QgKHNwc19hcnJheSwgaSk7Ci0gICAgICAgICAgZ19wdHJfYXJyYXlfYWRkIChzcHNfYXJyYXksIG5hbCk7Ci0gICAgICAgICAgR1NUX0xPR19PQkpFQ1QgKHJ0cGgyNjUsICJNb2RpZmllZCBTUFMgJXUsIHJlcGxhY2luZyIsIHNwc19pZCk7Ci0gICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBnc3RfYnVmZmVyX3VubWFwIChzcHMsICZzcHNtYXApOwotICAgIH0KLSAgICBHU1RfTE9HX09CSkVDVCAocnRwaDI2NSwgIkFkZGluZyBuZXcgU1BTICV1Iiwgc3BzX2lkKTsKLSAgICBnX3B0cl9hcnJheV9hZGQgKHNwc19hcnJheSwgbmFsKTsKLSAgfSBlbHNlIGlmICh0eXBlID09IEdTVF9IMjY1X1BQU19OVVQpIHsKLSAgICBndWludDMyIHNwc19pZDsKLSAgICBndWludDMyIHBwc19pZDsKLQotICAgIGlmICghcGFyc2VfcHBzICgmbWFwLCAmc3BzX2lkLCAmcHBzX2lkKSkgewotICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChydHBoMjY1LCAiSW52YWxpZCBQUFMsIgotICAgICAgICAgICIgY2FuJ3QgcGFyc2Ugc2VxX3BhcmFtZXRlcl9zZXRfaWQgb3IgcGljX3BhcmFtZXRlcl9zZXRfaWQiKTsKLSAgICAgIGdvdG8gZHJvcDsKLSAgICB9Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgcHBzX2FycmF5LT5sZW47IGkrKykgewotICAgICAgR3N0QnVmZmVyICpwcHMgPSBnX3B0cl9hcnJheV9pbmRleCAocHBzX2FycmF5LCBpKTsKLSAgICAgIEdzdE1hcEluZm8gcHBzbWFwOwotICAgICAgZ3VpbnQzMiB0bXBfc3BzX2lkOwotICAgICAgZ3VpbnQzMiB0bXBfcHBzX2lkOwotCi0KLSAgICAgIGdzdF9idWZmZXJfbWFwIChwcHMsICZwcHNtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gICAgICBwYXJzZV9wcHMgKCZwcHNtYXAsICZ0bXBfc3BzX2lkLCAmdG1wX3Bwc19pZCk7Ci0KLSAgICAgIGlmIChwcHNfaWQgPT0gdG1wX3Bwc19pZCkgewotICAgICAgICBpZiAobWFwLnNpemUgPT0gcHBzbWFwLnNpemUgJiYKLSAgICAgICAgICAgIG1lbWNtcCAobWFwLmRhdGEsIHBwc21hcC5kYXRhLCBwcHNtYXAuc2l6ZSkgPT0gMCkgewotICAgICAgICAgIEdTVF9MT0dfT0JKRUNUIChydHBoMjY1LCAiVW5jaGFuZ2VkIFBQUyAldToldSwgbm90IHVwZGF0aW5nIiwgc3BzX2lkLAotICAgICAgICAgICAgICBwcHNfaWQpOwotICAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKHBwcywgJnBwc21hcCk7Ci0gICAgICAgICAgZ290byBkcm9wOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKHBwcywgJnBwc21hcCk7Ci0gICAgICAgICAgZ19wdHJfYXJyYXlfcmVtb3ZlX2luZGV4X2Zhc3QgKHBwc19hcnJheSwgaSk7Ci0gICAgICAgICAgZ19wdHJfYXJyYXlfYWRkIChwcHNfYXJyYXksIG5hbCk7Ci0gICAgICAgICAgR1NUX0xPR19PQkpFQ1QgKHJ0cGgyNjUsICJNb2RpZmllZCBQUFMgJXU6JXUsIHJlcGxhY2luZyIsCi0gICAgICAgICAgICAgIHNwc19pZCwgcHBzX2lkKTsKLSAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGdzdF9idWZmZXJfdW5tYXAgKHBwcywgJnBwc21hcCk7Ci0gICAgfQotICAgIEdTVF9MT0dfT0JKRUNUIChydHBoMjY1LCAiQWRkaW5nIG5ldyBQUFMgJXU6JWkiLCBzcHNfaWQsIHBwc19pZCk7Ci0gICAgZ19wdHJfYXJyYXlfYWRkIChwcHNfYXJyYXksIG5hbCk7Ci0gIH0gZWxzZSB7Ci0gICAgZ290byBkcm9wOwotICB9Ci0KLWRvbmU6Ci0gIGdzdF9idWZmZXJfdW5tYXAgKG5hbCwgJm1hcCk7Ci0KLSAgcmV0dXJuIFRSVUU7Ci0KLWRyb3A6Ci0gIGdzdF9idWZmZXJfdW5tYXAgKG5hbCwgJm1hcCk7Ci0gIGdzdF9idWZmZXJfdW5yZWYgKG5hbCk7Ci0KLSAgcmV0dXJuIEZBTFNFOwotfQotCi0KLXN0YXRpYyB2b2lkCi1nc3RfcnRwX2gyNjVfZGVwYXlfYWRkX3Zwc19zcHNfcHBzIChHc3RSdHBIMjY1RGVwYXkgKiBydHBoMjY1ZGVwYXksCi0gICAgR3N0QnVmZmVyICogbmFsKQotewotICBpZiAoZ3N0X3J0cF9oMjY1X2FkZF92cHNfc3BzX3BwcyAoR1NUX0VMRU1FTlQgKHJ0cGgyNjVkZXBheSksCi0gICAgICAgICAgcnRwaDI2NWRlcGF5LT52cHMsIHJ0cGgyNjVkZXBheS0+c3BzLCBydHBoMjY1ZGVwYXktPnBwcywgbmFsKSkKLSAgICBydHBoMjY1ZGVwYXktPm5ld19jb2RlY19kYXRhID0gVFJVRTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfcnRwX2gyNjVfZGVwYXlfc2V0Y2FwcyAoR3N0UlRQQmFzZURlcGF5bG9hZCAqIGRlcGF5bG9hZCwgR3N0Q2FwcyAqIGNhcHMpCi17Ci0gIGdpbnQgY2xvY2tfcmF0ZTsKLSAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLSAgR3N0UnRwSDI2NURlcGF5ICpydHBoMjY1ZGVwYXk7Ci0gIGNvbnN0IGdjaGFyICpwczsKLSAgR3N0QnVmZmVyICpjb2RlY19kYXRhOwotICBHc3RNYXBJbmZvIG1hcDsKLSAgZ3VpbnQ4ICpwdHI7Ci0KLSAgcnRwaDI2NWRlcGF5ID0gR1NUX1JUUF9IMjY1X0RFUEFZIChkZXBheWxvYWQpOwotCi0gIGlmICghZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJjbG9jay1yYXRlIiwgJmNsb2NrX3JhdGUpKQotICAgIGNsb2NrX3JhdGUgPSA5MDAwMDsKLSAgZGVwYXlsb2FkLT5jbG9ja19yYXRlID0gY2xvY2tfcmF0ZTsKLQotICAvKiBCYXNlNjQgZW5jb2RlZCwgY29tbWEgc2VwYXJhdGVkIGNvbmZpZyBOQUxzICovCi0gIHBzID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzdHJ1Y3R1cmUsICJzcHJvcC1wYXJhbWV0ZXItc2V0cyIpOwotCi0gIC8qIG5lZ290aWF0ZSB3aXRoIGRvd25zdHJlYW0gdy5yLnQuIG91dHB1dCBmb3JtYXQgYW5kIGFsaWdubWVudCAqLwotICBnc3RfcnRwX2gyNjVfZGVwYXlfbmVnb3RpYXRlIChydHBoMjY1ZGVwYXkpOwotCi0gIGlmIChydHBoMjY1ZGVwYXktPmJ5dGVfc3RyZWFtICYmIHBzICE9IE5VTEwpIHsKLSAgICAvKiBmb3IgYnl0ZXN0cmVhbSB3ZSBvbmx5IG5lZWQgdGhlIHBhcmFtZXRlciBzZXRzIGJ1dCB3ZSBkb24ndCBlcnJvciBvdXQKLSAgICAgKiB3aGVuIHRoZXkgYXJlIG5vdCB0aGVyZSwgd2UgYXNzdW1lIHRoZXkgYXJlIGluIHRoZSBzdHJlYW0uICovCi0gICAgZ2NoYXIgKipwYXJhbXM7Ci0gICAgZ3VpbnQgbGVuLCB0b3RhbDsKLSAgICBnaW50IGk7Ci0KLSAgICBwYXJhbXMgPSBnX3N0cnNwbGl0IChwcywgIiwiLCAwKTsKLQotICAgIC8qIGNvdW50IHRvdGFsIG51bWJlciBvZiBieXRlcyBpbiBiYXNlNjQuIEFsc28gaW5jbHVkZSB0aGUgc3luYyBieXRlcyBpbgotICAgICAqIGZyb250IG9mIHRoZSBwYXJhbXMuICovCi0gICAgbGVuID0gMDsKLSAgICBmb3IgKGkgPSAwOyBwYXJhbXNbaV07IGkrKykgewotICAgICAgbGVuICs9IHN0cmxlbiAocGFyYW1zW2ldKTsKLSAgICAgIGxlbiArPSBzaXplb2YgKHN5bmNfYnl0ZXMpOwotICAgIH0KLSAgICAvKiB3ZSBzZXJpb3VzbHkgb3ZlcnNob290IHRoZSBsZW5ndGgsIGJ1dCBpdCdzIGZpbmUuICovCi0gICAgY29kZWNfZGF0YSA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAobGVuKTsKLQotICAgIGdzdF9idWZmZXJfbWFwIChjb2RlY19kYXRhLCAmbWFwLCBHU1RfTUFQX1dSSVRFKTsKLSAgICBwdHIgPSBtYXAuZGF0YTsKLSAgICB0b3RhbCA9IDA7Ci0gICAgZm9yIChpID0gMDsgcGFyYW1zW2ldOyBpKyspIHsKLSAgICAgIGd1aW50IHNhdmUgPSAwOwotICAgICAgZ2ludCBzdGF0ZSA9IDA7Ci0KLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlcGF5bG9hZCwgImRlY29kaW5nIHBhcmFtICVkICglcykiLCBpLCBwYXJhbXNbaV0pOwotICAgICAgbWVtY3B5IChwdHIsIHN5bmNfYnl0ZXMsIHNpemVvZiAoc3luY19ieXRlcykpOwotICAgICAgcHRyICs9IHNpemVvZiAoc3luY19ieXRlcyk7Ci0gICAgICBsZW4gPQotICAgICAgICAgIGdfYmFzZTY0X2RlY29kZV9zdGVwIChwYXJhbXNbaV0sIHN0cmxlbiAocGFyYW1zW2ldKSwgcHRyLCAmc3RhdGUsCi0gICAgICAgICAgJnNhdmUpOwotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVwYXlsb2FkLCAiZGVjb2RlZCAlZCBieXRlcyIsIGxlbik7Ci0gICAgICB0b3RhbCArPSBsZW4gKyBzaXplb2YgKHN5bmNfYnl0ZXMpOwotICAgICAgcHRyICs9IGxlbjsKLSAgICB9Ci0gICAgZ3N0X2J1ZmZlcl91bm1hcCAoY29kZWNfZGF0YSwgJm1hcCk7Ci0gICAgZ3N0X2J1ZmZlcl9yZXNpemUgKGNvZGVjX2RhdGEsIDAsIHRvdGFsKTsKLSAgICBnX3N0cmZyZWV2IChwYXJhbXMpOwotCi0gICAgLyoga2VlcCB0aGUgY29kZWNfZGF0YSwgd2UgbmVlZCB0byBzZW5kIGl0IGFzIHRoZSBmaXJzdCBidWZmZXIuIFdlIGNhbm5vdAotICAgICAqIHB1c2ggaXQgaW4gdGhlIGFkYXB0ZXIgYmVjYXVzZSB0aGUgYWRhcHRlciBtaWdodCBiZSBmbHVzaGVkIG9uIGRpc2NvbnQuCi0gICAgICovCi0gICAgaWYgKHJ0cGgyNjVkZXBheS0+Y29kZWNfZGF0YSkKLSAgICAgIGdzdF9idWZmZXJfdW5yZWYgKHJ0cGgyNjVkZXBheS0+Y29kZWNfZGF0YSk7Ci0gICAgcnRwaDI2NWRlcGF5LT5jb2RlY19kYXRhID0gY29kZWNfZGF0YTsKLSAgfSBlbHNlIGlmICghcnRwaDI2NWRlcGF5LT5ieXRlX3N0cmVhbSkgewotICAgIGdjaGFyICoqcGFyYW1zOwotICAgIGdpbnQgaTsKLQotICAgIGlmIChwcyA9PSBOVUxMKQotICAgICAgZ290byBpbmNvbXBsZXRlX2NhcHM7Ci0KLSAgICBwYXJhbXMgPSBnX3N0cnNwbGl0IChwcywgIiwiLCAwKTsKLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlcGF5bG9hZCwgIndlIGhhdmUgJWQgcGFyYW1zIiwgZ19zdHJ2X2xlbmd0aCAocGFyYW1zKSk7Ci0KLSAgICAvKiBzdGFydCB3aXRoIDIzIGJ5dGVzIGhlYWRlciAqLwotICAgIGZvciAoaSA9IDA7IHBhcmFtc1tpXTsgaSsrKSB7Ci0gICAgICBHc3RCdWZmZXIgKm5hbDsKLSAgICAgIEdzdE1hcEluZm8gbmFsbWFwOwotICAgICAgZ3NpemUgbmFsX2xlbjsKLSAgICAgIGd1aW50IHNhdmUgPSAwOwotICAgICAgZ2ludCBzdGF0ZSA9IDA7Ci0KLSAgICAgIG5hbF9sZW4gPSBzdHJsZW4gKHBhcmFtc1tpXSk7Ci0gICAgICBuYWwgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKG5hbF9sZW4pOwotICAgICAgZ3N0X2J1ZmZlcl9tYXAgKG5hbCwgJm5hbG1hcCwgR1NUX01BUF9SRUFEV1JJVEUpOwotCi0gICAgICBuYWxfbGVuID0KLSAgICAgICAgICBnX2Jhc2U2NF9kZWNvZGVfc3RlcCAocGFyYW1zW2ldLCBuYWxfbGVuLCBuYWxtYXAuZGF0YSwgJnN0YXRlLCAmc2F2ZSk7Ci0KLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlcGF5bG9hZCwgImFkZGluZyBwYXJhbSAlZCBhcyAlcyIsIGksCi0gICAgICAgICAgKCgobmFsbWFwLmRhdGFbMF0gPj4gMSkgJiAweDNmKSA9PQotICAgICAgICAgICAgICAzMikgPyAiVlBTIiA6ICgoKG5hbG1hcC5kYXRhWzBdID4+IDEpICYgMHgzZikgPT0KLSAgICAgICAgICAgICAgMzMpID8gIlNQUyIgOiAiUFBTIik7Ci0KLSAgICAgIGdzdF9idWZmZXJfdW5tYXAgKG5hbCwgJm5hbG1hcCk7Ci0gICAgICBnc3RfYnVmZmVyX3NldF9zaXplIChuYWwsIG5hbF9sZW4pOwotCi0gICAgICBnc3RfcnRwX2gyNjVfZGVwYXlfYWRkX3Zwc19zcHNfcHBzIChydHBoMjY1ZGVwYXksIG5hbCk7Ci0gICAgfQotICAgIGdfc3RyZnJlZXYgKHBhcmFtcyk7Ci0KLSAgICBpZiAocnRwaDI2NWRlcGF5LT5zcHMtPmxlbiA9PSAwIHx8IHJ0cGgyNjVkZXBheS0+cHBzLT5sZW4gPT0gMCkKLSAgICAgIGdvdG8gaW5jb21wbGV0ZV9jYXBzOwotICB9Ci0KLSAgcmV0dXJuIGdzdF9ydHBfaDI2NV9zZXRfc3JjX2NhcHMgKHJ0cGgyNjVkZXBheSk7Ci0KLSAgLyogRVJST1JTICovCi1pbmNvbXBsZXRlX2NhcHM6Ci0gIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZXBheWxvYWQsICJ3ZSBoYXZlIGluY29tcGxldGUgY2FwcywiCi0gICAgICAgICIgZG9pbmcgc2V0Y2FwcyBsYXRlciIpOwotICAgIHJldHVybiBUUlVFOwotICB9Ci19Ci0KLXN0YXRpYyBHc3RCdWZmZXIgKgotZ3N0X3J0cF9oMjY1X2NvbXBsZXRlX2F1IChHc3RSdHBIMjY1RGVwYXkgKiBydHBoMjY1ZGVwYXksCi0gICAgR3N0Q2xvY2tUaW1lICogb3V0X3RpbWVzdGFtcCwgZ2Jvb2xlYW4gKiBvdXRfa2V5ZnJhbWUpCi17Ci0gIGd1aW50IG91dHNpemU7Ci0gIEdzdEJ1ZmZlciAqb3V0YnVmOwotCi0gIC8qIHdlIGhhZCBhIHBpY3R1cmUgaW4gdGhlIGFkYXB0ZXIgYW5kIHdlIGNvbXBsZXRlZCBpdCAqLwotICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJ0YWtpbmcgY29tcGxldGVkIEFVIik7Ci0gIG91dHNpemUgPSBnc3RfYWRhcHRlcl9hdmFpbGFibGUgKHJ0cGgyNjVkZXBheS0+cGljdHVyZV9hZGFwdGVyKTsKLSAgb3V0YnVmID0gZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXIgKHJ0cGgyNjVkZXBheS0+cGljdHVyZV9hZGFwdGVyLCBvdXRzaXplKTsKLQotICAqb3V0X3RpbWVzdGFtcCA9IHJ0cGgyNjVkZXBheS0+bGFzdF90czsKLSAgKm91dF9rZXlmcmFtZSA9IHJ0cGgyNjVkZXBheS0+bGFzdF9rZXlmcmFtZTsKLQotICBydHBoMjY1ZGVwYXktPmxhc3Rfa2V5ZnJhbWUgPSBGQUxTRTsKLSAgcnRwaDI2NWRlcGF5LT5waWN0dXJlX3N0YXJ0ID0gRkFMU0U7Ci0KLSAgcmV0dXJuIG91dGJ1ZjsKLX0KLQotLyogVlBTL1NQUy9QUFMvUkFETC9UU0EvUkFTTC9JRFIvQ1JBIGlzIGNvbnNpZGVyZWQga2V5LCBhbGwgb3RoZXJzIERFTFRBOwotICogc28gZG93bnN0cmVhbSB3YWl0aW5nIGZvciBrZXlmcmFtZSBjYW4gcGljayB1cCBhdCBWUFMvU1BTL1BQUy9JRFIgKi8KLQotI2RlZmluZSBOQUxfVFlQRV9JU19QQVJBTUVURVJfU0VUKG50KSAoCQkoKG50KSA9PSBHU1RfSDI2NV9WUFNfTlVUKVwKLQkJCQkJCQkJCQl8fCAgKChudCkgPT0gR1NUX0gyNjVfU1BTX05VVClcCi0JCQkJCQkJCQkJfHwgICgobnQpID09IEdTVF9IMjY1X1BQU19OVVQpCQkJCSkKLQotI2RlZmluZSBOQUxfVFlQRV9JU19DT0RFRF9TTElDRV9TRUdNRU5UKG50KSAoCQkoKG50KSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfVFJBSUxfTilcCi0JCQkJCQkJCQkJCQl8fCAJKChudCkgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX1RSQUlMX1IpXAotCQkJCQkJCQkJCQkJfHwgICgobnQpID09IEdTVF9IMjY1X05BTF9TTElDRV9UU0FfTilcCi0JCQkJCQkJCQkJCQl8fCAgKChudCkgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX1RTQV9SKVwKLQkJCQkJCQkJCQkJCXx8ICAoKG50KSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfU1RTQV9OKVwKLQkJCQkJCQkJCQkJCXx8ICAoKG50KSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfU1RTQV9SKVwKLQkJCQkJCQkJCQkJCXx8ICAoKG50KSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfUkFTTF9OKVwKLQkJCQkJCQkJCQkJCXx8ICAoKG50KSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfUkFTTF9SKVwKLQkJCQkJCQkJCQkJCXx8ICAoKG50KSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfQkxBX1dfTFApXAotCQkJCQkJCQkJCQkJfHwgICgobnQpID09IEdTVF9IMjY1X05BTF9TTElDRV9CTEFfV19SQURMKVwKLQkJCQkJCQkJCQkJCXx8ICAoKG50KSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfQkxBX05fTFApXAotCQkJCQkJCQkJCQkJfHwgICgobnQpID09IEdTVF9IMjY1X05BTF9TTElDRV9JRFJfV19SQURMKVwKLQkJCQkJCQkJCQkJCXx8ICAoKG50KSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfSURSX05fTFApXAotCQkJCQkJCQkJCQkJfHwgICgobnQpID09IEdTVF9IMjY1X05BTF9TTElDRV9DUkFfTlVUKQkJKQotCi0jZGVmaW5lIE5BTF9UWVBFX0lTX0tFWShudCkgKE5BTF9UWVBFX0lTX1BBUkFNRVRFUl9TRVQobnQpIHx8IE5BTF9UWVBFX0lTX0NPREVEX1NMSUNFX1NFR01FTlQobnQpKQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWZvcmVhY2hfbWV0YWRhdGFfY29weSAoR3N0QnVmZmVyICogaW5idWYsIEdzdE1ldGEgKiogbWV0YSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotewotICBDb3B5TWV0YURhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0gIEdzdEVsZW1lbnQgKmVsZW1lbnQgPSBkYXRhLT5lbGVtZW50OwotICBHc3RCdWZmZXIgKm91dGJ1ZiA9IGRhdGEtPm91dGJ1ZjsKLSAgY29uc3QgR3N0TWV0YUluZm8gKmluZm8gPSAoKm1ldGEpLT5pbmZvOwotICBjb25zdCBnY2hhciAqY29uc3QgKnRhZ3MgPSBnc3RfbWV0YV9hcGlfdHlwZV9nZXRfdGFncyAoaW5mby0+YXBpKTsKLQotICBpZiAoIXRhZ3MgfHwgKGdfc3Rydl9sZW5ndGggKChnY2hhciAqKikgdGFncykgPT0gMQotICAgICAgICAgICYmIGdzdF9tZXRhX2FwaV90eXBlX2hhc190YWcgKGluZm8tPmFwaSwKLSAgICAgICAgICAgICAgZ19xdWFya19mcm9tX3N0cmluZyAoR1NUX01FVEFfVEFHX1ZJREVPX1NUUikpKSkgewotICAgIEdzdE1ldGFUcmFuc2Zvcm1Db3B5IGNvcHlfZGF0YSA9IHsgRkFMU0UsIDAsIC0xIH07Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZWxlbWVudCwgImNvcHkgbWV0YWRhdGEgJXMiLCBnX3R5cGVfbmFtZSAoaW5mby0+YXBpKSk7Ci0gICAgLyogc2ltcGx5IGNvcHkgdGhlbiAqLwotICAgIGluZm8tPnRyYW5zZm9ybV9mdW5jIChvdXRidWYsICptZXRhLCBpbmJ1ZiwKLSAgICAgICAgX2dzdF9tZXRhX3RyYW5zZm9ybV9jb3B5LCAmY29weV9kYXRhKTsKLSAgfSBlbHNlIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChlbGVtZW50LCAibm90IGNvcHlpbmcgbWV0YWRhdGEgJXMiLAotICAgICAgICBnX3R5cGVfbmFtZSAoaW5mby0+YXBpKSk7Ci0gIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQotLyogVE9ETzogU2hvdWxkIHByb2JhYmx5IG1ha2UgY29weV90YWcgYW4gYXJyYXkgYXQgc29tZSBwb2ludCAqLwotdm9pZAotZ3N0X3J0cF9jb3B5X21ldGEgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RCdWZmZXIgKiBvdXRidWYsIEdzdEJ1ZmZlciAqIGluYnVmLAotICAgIEdRdWFyayBjb3B5X3RhZykKLXsKLSAgQ29weU1ldGFEYXRhIGRhdGEgPSB7IGVsZW1lbnQsIG91dGJ1ZiwgY29weV90YWcgfTsKLQotICBnc3RfYnVmZmVyX2ZvcmVhY2hfbWV0YSAoaW5idWYsIGZvcmVhY2hfbWV0YWRhdGFfY29weSwgJmRhdGEpOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWZvcmVhY2hfbWV0YWRhdGFfZHJvcCAoR3N0QnVmZmVyICogaW5idWYsIEdzdE1ldGEgKiogbWV0YSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotewotICBHc3RSdHBIMjY1RGVwYXkgKmRlcGF5ID0gdXNlcl9kYXRhOwotICBjb25zdCBHc3RNZXRhSW5mbyAqaW5mbyA9ICgqbWV0YSktPmluZm87Ci0gIGNvbnN0IGdjaGFyICpjb25zdCAqdGFncyA9IGdzdF9tZXRhX2FwaV90eXBlX2dldF90YWdzIChpbmZvLT5hcGkpOwotCi0gIGlmICghdGFncyB8fCAoZ19zdHJ2X2xlbmd0aCAoKGdjaGFyICoqKSB0YWdzKSA9PSAxCi0gICAgICAgICAgJiYgZ3N0X21ldGFfYXBpX3R5cGVfaGFzX3RhZyAoaW5mby0+YXBpLAotICAgICAgICAgICAgICBnX3F1YXJrX2Zyb21fc3RyaW5nIChHU1RfTUVUQV9UQUdfVklERU9fU1RSKSkpKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVwYXksICJrZWVwaW5nIG1ldGFkYXRhICVzIiwgZ190eXBlX25hbWUgKGluZm8tPmFwaSkpOwotICB9IGVsc2UgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlcGF5LCAiZHJvcHBpbmcgbWV0YWRhdGEgJXMiLCBnX3R5cGVfbmFtZSAoaW5mby0+YXBpKSk7Ci0gICAgKm1ldGEgPSBOVUxMOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBHc3RCdWZmZXIgKgotZ3N0X3J0cF9oMjY1X2RlcGF5X2hhbmRsZV9uYWwgKEdzdFJ0cEgyNjVEZXBheSAqIHJ0cGgyNjVkZXBheSwgR3N0QnVmZmVyICogbmFsLAotICAgIEdzdENsb2NrVGltZSBpbl90aW1lc3RhbXAsIGdib29sZWFuIG1hcmtlcikKLXsKLSAgR3N0UlRQQmFzZURlcGF5bG9hZCAqZGVwYXlsb2FkID0gR1NUX1JUUF9CQVNFX0RFUEFZTE9BRCAocnRwaDI2NWRlcGF5KTsKLSAgZ2ludCBuYWxfdHlwZTsKLSAgR3N0TWFwSW5mbyBtYXA7Ci0gIEdzdEJ1ZmZlciAqb3V0YnVmID0gTlVMTDsKLSAgR3N0Q2xvY2tUaW1lIG91dF90aW1lc3RhbXA7Ci0gIGdib29sZWFuIGtleWZyYW1lLCBvdXRfa2V5ZnJhbWU7Ci0KLSAgZ3N0X2J1ZmZlcl9tYXAgKG5hbCwgJm1hcCwgR1NUX01BUF9SRUFEKTsKLSAgaWYgKEdfVU5MSUtFTFkgKG1hcC5zaXplIDwgNSkpCi0gICAgZ290byBzaG9ydF9uYWw7Ci0KLSAgbmFsX3R5cGUgPSAobWFwLmRhdGFbNF0gPj4gMSkgJiAweDNmOwotICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJoYW5kbGUgTkFMIHR5cGUgJWQgKFJUUCBtYXJrZXIgYml0ICVkKSIsCi0gICAgICBuYWxfdHlwZSwgbWFya2VyKTsKLQotICBrZXlmcmFtZSA9IE5BTF9UWVBFX0lTX0tFWSAobmFsX3R5cGUpOwotCi0gIG91dF9rZXlmcmFtZSA9IGtleWZyYW1lOwotICBvdXRfdGltZXN0YW1wID0gaW5fdGltZXN0YW1wOwotCi0gIGlmICghcnRwaDI2NWRlcGF5LT5ieXRlX3N0cmVhbSkgewotICAgIGlmIChOQUxfVFlQRV9JU19QQVJBTUVURVJfU0VUIChuYWxfdHlwZSkpIHsKLSAgICAgIGdzdF9ydHBfaDI2NV9kZXBheV9hZGRfdnBzX3Nwc19wcHMgKHJ0cGgyNjVkZXBheSwKLSAgICAgICAgICBnc3RfYnVmZmVyX2NvcHlfcmVnaW9uIChuYWwsIEdTVF9CVUZGRVJfQ09QWV9BTEwsCi0gICAgICAgICAgICAgIDQsIGdzdF9idWZmZXJfZ2V0X3NpemUgKG5hbCkgLSA0KSk7Ci0gICAgICBnc3RfYnVmZmVyX3VubWFwIChuYWwsICZtYXApOwotICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAobmFsKTsKLSAgICAgIHJldHVybiBOVUxMOwotICAgIH0gZWxzZSBpZiAocnRwaDI2NWRlcGF5LT5zcHMtPmxlbiA9PSAwIHx8IHJ0cGgyNjVkZXBheS0+cHBzLT5sZW4gPT0gMCkgewotICAgICAgLyogRG93biBwdXNoIGRvd24gYW55IGJ1ZmZlciBpbiBub24tYnl0ZXN0cmVhbSBtb2RlIGlmIHRoZSBTUFMvUFBTIGhhdmVuJ3QKLSAgICAgICAqIGdvIHRocm91Z2ggeWV0Ci0gICAgICAgKi8KLSAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoR1NUX1JUUF9CQVNFX0RFUEFZTE9BRF9TSU5LUEFEIChkZXBheWxvYWQpLAotICAgICAgICAgIGdzdF9ldmVudF9uZXdfY3VzdG9tIChHU1RfRVZFTlRfQ1VTVE9NX1VQU1RSRUFNLAotICAgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX25ldyAoIkdzdEZvcmNlS2V5VW5pdCIsCi0gICAgICAgICAgICAgICAgICAiYWxsLWhlYWRlcnMiLCBHX1RZUEVfQk9PTEVBTiwgVFJVRSwgTlVMTCkpKTsKLSAgICAgIGdzdF9idWZmZXJfdW5tYXAgKG5hbCwgJm1hcCk7Ci0gICAgICBnc3RfYnVmZmVyX3VucmVmIChuYWwpOwotICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKHJ0cGgyNjVkZXBheS0+bmV3X2NvZGVjX2RhdGEgJiYKLSAgICAgICAgcnRwaDI2NWRlcGF5LT5zcHMtPmxlbiA+IDAgJiYgcnRwaDI2NWRlcGF5LT5wcHMtPmxlbiA+IDApCi0gICAgICBnc3RfcnRwX2gyNjVfc2V0X3NyY19jYXBzIChydHBoMjY1ZGVwYXkpOwotICB9Ci0KLSAgaWYgKHJ0cGgyNjVkZXBheS0+bWVyZ2UpIHsKLSAgICBnYm9vbGVhbiBzdGFydCA9IEZBTFNFLCBjb21wbGV0ZSA9IEZBTFNFOwotCi0gICAgLyogbWFya2VyIGJpdCBpc24ndCBtYW5kYXRvcnkgc28gaW4gdGhlIGZvbGxvd2luZyBjb2RlIHdlIHRyeSB0byBkZXRlY3QKLSAgICAgKiBhbiBBVSBib3VuZGFyeSAoc2VlIEguMjY1IHNwZWMgc2VjdGlvbiA3LjQuMi40LjQpICovCi0gICAgaWYgKCFtYXJrZXIpIHsKLQotICAgICAgaWYgKE5BTF9UWVBFX0lTX0NPREVEX1NMSUNFX1NFR01FTlQgKG5hbF90eXBlKSkgewotICAgICAgICAvKiBBIE5BTCB1bml0IChYKSBlbmRzIGFuIGFjY2VzcyB1bml0IGlmIHRoZSBuZXh0LW9jY3VycmluZyBWQ0wgTkFMIHVuaXQgKFkpIGhhcyB0aGUgaGlnaC1vcmRlciBiaXQgb2YgdGhlIGZpcnN0IGJ5dGUgYWZ0ZXIgaXRzIE5BTCB1bml0IGhlYWRlciBlcXVhbCB0byAxICovCi0gICAgICAgIHN0YXJ0ID0gVFJVRTsKLSAgICAgICAgaWYgKCgobWFwLmRhdGFbNl0gPj4gNykgJiAweDAxKSA9PSAxKSB7Ci0gICAgICAgICAgY29tcGxldGUgPSBUUlVFOwotICAgICAgICB9Ci0gICAgICAgIGNvbXBsZXRlID0gVFJVRTsKLSAgICAgIH0gZWxzZSBpZiAoKG5hbF90eXBlID49IDMyICYmIG5hbF90eXBlIDw9IDM1KQotICAgICAgICAgIHx8IG5hbF90eXBlID09IDM5IHx8IChuYWxfdHlwZSA+PSA0MSAmJiBuYWxfdHlwZSA8PSA0NCkKLSAgICAgICAgICB8fCAobmFsX3R5cGUgPj0gNDggJiYgbmFsX3R5cGUgPD0gNTUpKSB7Ci0gICAgICAgIC8qIFZQUywgU1BTLCBQUFMsIFNFSSwgLi4uIHRlcm1pbmF0ZSBhbiBhY2Nlc3MgdW5pdCAqLwotICAgICAgICBjb21wbGV0ZSA9IFRSVUU7Ci0gICAgICB9Ci0gICAgICBHU1RfREVCVUdfT0JKRUNUIChkZXBheWxvYWQsICJzdGFydCAlZCwgY29tcGxldGUgJWQiLCBzdGFydCwgY29tcGxldGUpOwotCi0gICAgICBpZiAoY29tcGxldGUgJiYgcnRwaDI2NWRlcGF5LT5waWN0dXJlX3N0YXJ0KQotICAgICAgICBvdXRidWYgPSBnc3RfcnRwX2gyNjVfY29tcGxldGVfYXUgKHJ0cGgyNjVkZXBheSwgJm91dF90aW1lc3RhbXAsCi0gICAgICAgICAgICAmb3V0X2tleWZyYW1lKTsKLSAgICB9Ci0gICAgLyogYWRkIHRvIGFkYXB0ZXIgKi8KLSAgICBnc3RfYnVmZmVyX3VubWFwIChuYWwsICZtYXApOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVwYXlsb2FkLCAiYWRkaW5nIE5BTCB0byBwaWN0dXJlIGFkYXB0ZXIiKTsKLSAgICBnc3RfYWRhcHRlcl9wdXNoIChydHBoMjY1ZGVwYXktPnBpY3R1cmVfYWRhcHRlciwgbmFsKTsKLSAgICBydHBoMjY1ZGVwYXktPmxhc3RfdHMgPSBpbl90aW1lc3RhbXA7Ci0gICAgcnRwaDI2NWRlcGF5LT5sYXN0X2tleWZyYW1lIHw9IGtleWZyYW1lOwotICAgIHJ0cGgyNjVkZXBheS0+cGljdHVyZV9zdGFydCB8PSBzdGFydDsKLQotICAgIGlmIChtYXJrZXIpCi0gICAgICBvdXRidWYgPSBnc3RfcnRwX2gyNjVfY29tcGxldGVfYXUgKHJ0cGgyNjVkZXBheSwgJm91dF90aW1lc3RhbXAsCi0gICAgICAgICAgJm91dF9rZXlmcmFtZSk7Ci0gIH0gZWxzZSB7Ci0gICAgLyogbm8gbWVyZ2UsIG91dHB1dCBpcyBpbnB1dCBuYWwgKi8KLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZXBheWxvYWQsICJ1c2luZyBOQUwgYXMgb3V0cHV0Iik7Ci0gICAgb3V0YnVmID0gbmFsOwotICAgIGdzdF9idWZmZXJfdW5tYXAgKG5hbCwgJm1hcCk7Ci0gIH0KLQotICBpZiAob3V0YnVmKSB7Ci0gICAgLyogcHJlcGVuZCBjb2RlY19kYXRhICovCi0gICAgaWYgKHJ0cGgyNjVkZXBheS0+Y29kZWNfZGF0YSkgewotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVwYXlsb2FkLCAicHJlcGVuZGluZyBjb2RlY19kYXRhIik7Ci0gICAgICBnc3RfcnRwX2NvcHlfbWV0YSAoR1NUX0VMRU1FTlRfQ0FTVCAocnRwaDI2NWRlcGF5KSwKLSAgICAgICAgICBydHBoMjY1ZGVwYXktPmNvZGVjX2RhdGEsIG91dGJ1ZiwKLSAgICAgICAgICBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyAoR1NUX01FVEFfVEFHX1ZJREVPX1NUUikpOwotICAgICAgb3V0YnVmID0gZ3N0X2J1ZmZlcl9hcHBlbmQgKHJ0cGgyNjVkZXBheS0+Y29kZWNfZGF0YSwgb3V0YnVmKTsKLSAgICAgIHJ0cGgyNjVkZXBheS0+Y29kZWNfZGF0YSA9IE5VTEw7Ci0gICAgICBvdXRfa2V5ZnJhbWUgPSBUUlVFOwotICAgIH0KLSAgICBvdXRidWYgPSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUgKG91dGJ1Zik7Ci0KLSAgICBnc3RfYnVmZmVyX2ZvcmVhY2hfbWV0YSAob3V0YnVmLCBmb3JlYWNoX21ldGFkYXRhX2Ryb3AsIGRlcGF5bG9hZCk7Ci0KLSAgICBHU1RfQlVGRkVSX1BUUyAob3V0YnVmKSA9IG91dF90aW1lc3RhbXA7Ci0KLSAgICBpZiAob3V0X2tleWZyYW1lKQotICAgICAgR1NUX0JVRkZFUl9GTEFHX1VOU0VUIChvdXRidWYsIEdTVF9CVUZGRVJfRkxBR19ERUxUQV9VTklUKTsKLSAgICBlbHNlCi0gICAgICBHU1RfQlVGRkVSX0ZMQUdfU0VUIChvdXRidWYsIEdTVF9CVUZGRVJfRkxBR19ERUxUQV9VTklUKTsKLSAgfQotCi0gIHJldHVybiBvdXRidWY7Ci0KLSAgLyogRVJST1JTICovCi1zaG9ydF9uYWw6Ci0gIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlcGF5bG9hZCwgImRyb3BwaW5nIHNob3J0IE5BTCIpOwotICAgIGdzdF9idWZmZXJfdW5tYXAgKG5hbCwgJm1hcCk7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAobmFsKTsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotfQotCi1zdGF0aWMgR3N0QnVmZmVyICoKLWdzdF9ydHBfaDI2NV9wdXNoX2ZyYWdtZW50YXRpb25fdW5pdCAoR3N0UnRwSDI2NURlcGF5ICogcnRwaDI2NWRlcGF5LAotICAgIGdib29sZWFuIHNlbmQpCi17Ci0gIGd1aW50IG91dHNpemU7Ci0gIEdzdE1hcEluZm8gbWFwOwotICBHc3RCdWZmZXIgKm91dGJ1ZjsKLQotICBvdXRzaXplID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlIChydHBoMjY1ZGVwYXktPmFkYXB0ZXIpOwotICBvdXRidWYgPSBnc3RfYWRhcHRlcl90YWtlX2J1ZmZlciAocnRwaDI2NWRlcGF5LT5hZGFwdGVyLCBvdXRzaXplKTsKLQotICBnc3RfYnVmZmVyX21hcCAob3V0YnVmLCAmbWFwLCBHU1RfTUFQX1dSSVRFKTsKLSAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAib3V0cHV0ICVkIGJ5dGVzIiwgb3V0c2l6ZSk7Ci0KLSAgaWYgKHJ0cGgyNjVkZXBheS0+Ynl0ZV9zdHJlYW0pIHsKLSAgICBtZW1jcHkgKG1hcC5kYXRhLCBzeW5jX2J5dGVzLCBzaXplb2YgKHN5bmNfYnl0ZXMpKTsKLSAgfSBlbHNlIHsKLSAgICBnb3RvIG5vdF9pbXBsZW1lbnRlZDsKLSAgfQotICBnc3RfYnVmZmVyX3VubWFwIChvdXRidWYsICZtYXApOwotCi0gIHJ0cGgyNjVkZXBheS0+Y3VycmVudF9mdV90eXBlID0gMDsKLQotICBvdXRidWYgPSBnc3RfcnRwX2gyNjVfZGVwYXlfaGFuZGxlX25hbCAocnRwaDI2NWRlcGF5LCBvdXRidWYsCi0gICAgICBydHBoMjY1ZGVwYXktPmZ1X3RpbWVzdGFtcCwgcnRwaDI2NWRlcGF5LT5mdV9tYXJrZXIpOwotCi0gIGlmIChzZW5kICYmIG91dGJ1ZikgewotICAgIGdzdF9ydHBfYmFzZV9kZXBheWxvYWRfcHVzaCAoR1NUX1JUUF9CQVNFX0RFUEFZTE9BRCAocnRwaDI2NWRlcGF5KSwgb3V0YnVmKTsKLSAgICBvdXRidWYgPSBOVUxMOwotICB9Ci0gIHJldHVybiBvdXRidWY7Ci0KLW5vdF9pbXBsZW1lbnRlZDoKLSAgewotICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHJ0cGgyNjVkZXBheSwKLSAgICAgICAgKCJPbmx5IGJ5dGVzdHJlYW0gZm9ybWF0IGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQuIikpOwotICAgIGdzdF9idWZmZXJfdW5tYXAgKG91dGJ1ZiwgJm1hcCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLX0KLQotc3RhdGljIEdzdEJ1ZmZlciAqCi1nc3RfcnRwX2gyNjVfZGVwYXlfcHJvY2VzcyAoR3N0UlRQQmFzZURlcGF5bG9hZCAqIGRlcGF5bG9hZCwgR3N0UlRQQnVmZmVyICogcnRwKQotewotICBHc3RSdHBIMjY1RGVwYXkgKnJ0cGgyNjVkZXBheTsKLSAgR3N0QnVmZmVyICpidWY7Ci0gIEdzdEJ1ZmZlciAqb3V0YnVmID0gTlVMTDsKLSAgZ3VpbnQ4IG5hbF91bml0X3R5cGU7Ci0KLSAgcnRwaDI2NWRlcGF5ID0gR1NUX1JUUF9IMjY1X0RFUEFZIChkZXBheWxvYWQpOwotCi0gIC8qIGZsdXNoIHJlbWFpbmluZyBkYXRhIG9uIGRpc2NvbnQgKi8KLSAgaWYgKEdTVF9CVUZGRVJfSVNfRElTQ09OVCAocnRwLT5idWZmZXIpKSB7Ci0gICAgZ3N0X2FkYXB0ZXJfY2xlYXIgKHJ0cGgyNjVkZXBheS0+YWRhcHRlcik7Ci0gICAgcnRwaDI2NWRlcGF5LT53YWl0X3N0YXJ0ID0gVFJVRTsKLSAgICBydHBoMjY1ZGVwYXktPmN1cnJlbnRfZnVfdHlwZSA9IDA7Ci0gIH0KLQotICB7Ci0gICAgZ2ludCBwYXlsb2FkX2xlbjsKLSAgICBndWludDggKnBheWxvYWQ7Ci0gICAgZ3VpbnQgaGVhZGVyX2xlbjsKLSAgICBHc3RNYXBJbmZvIG1hcDsKLSAgICBndWludCBvdXRzaXplLCBuYWx1X3NpemU7Ci0gICAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcDsKLSAgICBnYm9vbGVhbiBtYXJrZXI7Ci0gICAgZ3VpbnQ4IG51aF9sYXllcl9pZCwgbnVoX3RlbXBvcmFsX2lkX3BsdXMxOwotICAgIGd1aW50OCBTLCBFOwotICAgIGd1aW50MTYgbmFsX2hlYWRlcjsKLSNpZiAwCi0gICAgZ2Jvb2xlYW4gZG9ubF9wcmVzZW50ID0gRkFMU0U7Ci0jZW5kaWYKLQotICAgIHRpbWVzdGFtcCA9IEdTVF9CVUZGRVJfUFRTIChydHAtPmJ1ZmZlcik7Ci0KLSAgICBwYXlsb2FkX2xlbiA9IGdzdF9ydHBfYnVmZmVyX2dldF9wYXlsb2FkX2xlbiAocnRwKTsKLSAgICBwYXlsb2FkID0gZ3N0X3J0cF9idWZmZXJfZ2V0X3BheWxvYWQgKHJ0cCk7Ci0gICAgYnVmID0gZ3N0X3J0cF9idWZmZXJfZ2V0X3BheWxvYWRfYnVmZmVyIChydHApOwotICAgIG1hcmtlciA9IGdzdF9ydHBfYnVmZmVyX2dldF9tYXJrZXIgKHJ0cCk7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJyZWNlaXZpbmcgJWQgYnl0ZXMiLCBwYXlsb2FkX2xlbik7Ci0KLSAgICBpZiAocGF5bG9hZF9sZW4gPT0gMCkKLSAgICAgIGdvdG8gZW1wdHlfcGFja2V0OwotCi0gICAgLyogKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rCi0gICAgICogfDB8MXwyfDN8NHw1fDZ8N3wwfDF8MnwzfDR8NXw2fDd8Ci0gICAgICogKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCi0gICAgICogfEZ8ICAgVHlwZSAgICB8ICBMYXllcklkICB8IFRJRCB8Ci0gICAgICogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgICoKLSAgICAgKiBGIG11c3QgYmUgMC4KLSAgICAgKgotICAgICAqLwotICAgIG5hbF91bml0X3R5cGUgPSAocGF5bG9hZFswXSA+PiAxKSAmIDB4M2Y7Ci0gICAgbnVoX2xheWVyX2lkID0gKChwYXlsb2FkWzBdICYgMHgwMSkgPDwgNSkgfCAocGF5bG9hZFsxXSA+PiAzKTsgICAgICAvKiBzaG91bGQgYmUgemVybyBmb3Igbm93IGJ1dCB0aGlzIGNvdWxkIGNoYW5nZSBpbiBmdXR1cmUgSEVWQyBleHRlbnNpb25zICovCi0gICAgbnVoX3RlbXBvcmFsX2lkX3BsdXMxID0gcGF5bG9hZFsxXSAmIDB4MDM7Ci0KLSAgICAvKiBBdCBsZWFzdCB0d28gYnl0ZSBoZWFkZXIgd2l0aCB0eXBlICovCi0gICAgaGVhZGVyX2xlbiA9IDI7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksCi0gICAgICAgICJOQUwgaGVhZGVyIG5hbF91bml0X3R5cGUgJWQsIG51aF90ZW1wb3JhbF9pZF9wbHVzMSAlZCIsIG5hbF91bml0X3R5cGUsCi0gICAgICAgIG51aF90ZW1wb3JhbF9pZF9wbHVzMSk7Ci0KLSAgICBHU1RfRklYTUVfT0JKRUNUIChydHBoMjY1ZGVwYXksICJBc3N1bWluZyBET05MIGZpZWxkIGlzIG5vdCBwcmVzZW50Iik7Ci0KLSAgICAvKiBGSVhNRSAtIGFzc3VtaW5nIERPTkwgZmllbGQgaXMgbm90IHByZXNlbnQgZm9yIG5vdyAqLwotICAgIC8qZG9ubF9wcmVzZW50ID0gKHR4LW1vZGUgPT0gIk1TVCIpIHx8IChzcHJvcC1tYXgtZG9uLWRpZmYgPiAwKTsgKi8KLQotICAgIC8qIElmIEZVIHVuaXQgd2FzIGJlaW5nIHByb2Nlc3NlZCwgYnV0IHRoZSBjdXJyZW50IG5hbCBpcyBvZiBhIGRpZmZlcmVudAotICAgICAqIHR5cGUuICBBc3N1bWUgdGhhdCB0aGUgcmVtb3RlIHBheWxvYWRlciBpcyBidWdneSAoZGlkbid0IHNldCB0aGUgZW5kIGJpdAotICAgICAqIHdoZW4gdGhlIEZVIGVuZGVkKSBhbmQgc2VuZCBvdXQgd2hhdCB3ZSBnYXRoZXJlZCB0aHVzZmFyICovCi0gICAgaWYgKEdfVU5MSUtFTFkgKHJ0cGgyNjVkZXBheS0+Y3VycmVudF9mdV90eXBlICE9IDAgJiYKLSAgICAgICAgICAgIG5hbF91bml0X3R5cGUgIT0gcnRwaDI2NWRlcGF5LT5jdXJyZW50X2Z1X3R5cGUpKQotICAgICAgZ3N0X3J0cF9oMjY1X3B1c2hfZnJhZ21lbnRhdGlvbl91bml0IChydHBoMjY1ZGVwYXksIFRSVUUpOwotCi0gICAgc3dpdGNoIChuYWxfdW5pdF90eXBlKSB7Ci0gICAgICBjYXNlIDQ4OgotICAgICAgewotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJQcm9jZXNzaW5nIGFnZ3JlZ2F0aW9uIHBhY2tldCIpOwotCi0gICAgICAgIC8qIEFnZ3JlZ2F0aW9uIHBhY2tldCAoc2VjdGlvbiA0LjcpICovCi0KLSAgICAgICAgLyogIEFuIGV4YW1wbGUgb2YgYW4gQVAgcGFja2V0IGNvbnRhaW5pbmcgdHdvIGFnZ3JlZ2F0aW9uIHVuaXRzCi0gICAgICAgICAgIHdpdGhvdXQgdGhlIERPTkwgYW5kIERPTkQgZmllbGRzCi0KLSAgICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgICAgMwotICAgICAgICAgICAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEKLSAgICAgICAgICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKLSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgUlRQIEhlYWRlciAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKLSAgICAgICAgICAgfCAgIFBheWxvYWRIZHIgKFR5cGU9NDgpICAgICAgICB8ICAgICAgICAgTkFMVSAxIFNpemUgICAgICAgICAgIHwKLSAgICAgICAgICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKLSAgICAgICAgICAgfCAgICAgICAgICBOQUxVIDEgSERSICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rICAgICAgICAgTkFMVSAxIERhdGEgICAgICAgICAgIHwKLSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAuIC4gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICAgKyAgICAgICAgICAgICAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKLSAgICAgICAgICAgfCAgLiAuIC4gICAgICAgIHwgTkFMVSAyIFNpemUgICAgICAgICAgICAgICAgICAgfCBOQUxVIDIgSERSICAgIHwKLSAgICAgICAgICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKLSAgICAgICAgICAgfCBOQUxVIDIgSERSICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICAgKy0rLSstKy0rLSstKy0rLSsgICAgICAgICAgICAgIE5BTFUgMiBEYXRhICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAuIC4gLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKLSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Li4uT1BUSU9OQUwgUlRQIHBhZGRpbmcgICAgICAgIHwKLSAgICAgICAgICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKLSAgICAgICAgICovCi0KLSAgICAgICAgLyogc3RyaXAgaGVhZGVycyAqLwotICAgICAgICBwYXlsb2FkICs9IGhlYWRlcl9sZW47Ci0gICAgICAgIHBheWxvYWRfbGVuIC09IGhlYWRlcl9sZW47Ci0KLSAgICAgICAgcnRwaDI2NWRlcGF5LT53YWl0X3N0YXJ0ID0gRkFMU0U7Ci0KLSNpZiAwCi0gICAgICAgIGlmIChkb25sX3ByZXNlbnQpCi0gICAgICAgICAgZ290byBub3RfaW1wbGVtZW50ZWRfZG9ubF9wcmVzZW50OwotI2VuZGlmCi0KLSAgICAgICAgd2hpbGUgKHBheWxvYWRfbGVuID4gMikgewotCi0gICAgICAgICAgbmFsdV9zaXplID0gKHBheWxvYWRbMF0gPDwgOCkgfCBwYXlsb2FkWzFdOwotCi0gICAgICAgICAgLyogZG9udCBpbmNsdWRlIG5hbHVfc2l6ZSAqLwotICAgICAgICAgIGlmIChuYWx1X3NpemUgPiAocGF5bG9hZF9sZW4gLSAyKSkKLSAgICAgICAgICAgIG5hbHVfc2l6ZSA9IHBheWxvYWRfbGVuIC0gMjsKLQotICAgICAgICAgIG91dHNpemUgPSBuYWx1X3NpemUgKyBzaXplb2YgKHN5bmNfYnl0ZXMpOwotICAgICAgICAgIG91dGJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAob3V0c2l6ZSk7Ci0KLSAgICAgICAgICBnc3RfYnVmZmVyX21hcCAob3V0YnVmLCAmbWFwLCBHU1RfTUFQX1dSSVRFKTsKLSAgICAgICAgICBpZiAocnRwaDI2NWRlcGF5LT5ieXRlX3N0cmVhbSkgewotICAgICAgICAgICAgbWVtY3B5IChtYXAuZGF0YSwgc3luY19ieXRlcywgc2l6ZW9mIChzeW5jX2J5dGVzKSk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGdvdG8gbm90X2ltcGxlbWVudGVkOwotICAgICAgICAgIH0KLQotICAgICAgICAgIC8qIHN0cmlwIE5BTFUgc2l6ZSAqLwotICAgICAgICAgIHBheWxvYWQgKz0gMjsKLSAgICAgICAgICBwYXlsb2FkX2xlbiAtPSAyOwotCi0gICAgICAgICAgbWVtY3B5IChtYXAuZGF0YSArIHNpemVvZiAoc3luY19ieXRlcyksIHBheWxvYWQsIG5hbHVfc2l6ZSk7Ci0gICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAob3V0YnVmLCAmbWFwKTsKLQotICAgICAgICAgIGdzdF9ydHBfY29weV9tZXRhIChHU1RfRUxFTUVOVF9DQVNUIChydHBoMjY1ZGVwYXkpLCBvdXRidWYsIGJ1ZiwKLSAgICAgICAgICAgICAgZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcgKEdTVF9NRVRBX1RBR19WSURFT19TVFIpKTsKLQotICAgICAgICAgIG91dGJ1ZiA9Ci0gICAgICAgICAgICAgIGdzdF9ydHBfaDI2NV9kZXBheV9oYW5kbGVfbmFsIChydHBoMjY1ZGVwYXksIG91dGJ1ZiwgdGltZXN0YW1wLAotICAgICAgICAgICAgICBtYXJrZXIpOwotICAgICAgICAgIGlmIChvdXRidWYpCi0gICAgICAgICAgICBnc3RfYWRhcHRlcl9wdXNoIChydHBoMjY1ZGVwYXktPmFkYXB0ZXIsIG91dGJ1Zik7Ci0KLSAgICAgICAgICBwYXlsb2FkICs9IG5hbHVfc2l6ZTsKLSAgICAgICAgICBwYXlsb2FkX2xlbiAtPSBuYWx1X3NpemU7Ci0gICAgICAgIH0KLQotICAgICAgICBvdXRzaXplID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlIChydHBoMjY1ZGVwYXktPmFkYXB0ZXIpOwotICAgICAgICBpZiAob3V0c2l6ZSA+IDApIHsKLSAgICAgICAgICBvdXRidWYgPSBnc3RfYWRhcHRlcl90YWtlX2J1ZmZlciAocnRwaDI2NWRlcGF5LT5hZGFwdGVyLCBvdXRzaXplKTsKLSAgICAgICAgICBvdXRidWYgPQotICAgICAgICAgICAgICBnc3RfcnRwX2gyNjVfZGVwYXlfaGFuZGxlX25hbCAocnRwaDI2NWRlcGF5LCBvdXRidWYsIHRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgbWFya2VyKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGNhc2UgNDk6Ci0gICAgICB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwgIlByb2Nlc3NpbmcgRnJhZ21lbnRhdGlvbiBVbml0Iik7Ci0KLSAgICAgICAgLyogRnJhZ21lbnRhdGlvbiB1bml0cyAoRlVzKSAgU2VjdGlvbiA0LjggKi8KLQotICAgICAgICAvKiAgICBUaGUgc3RydWN0dXJlIG9mIGEgRnJhZ21lbnRhdGlvbiBVbml0IChGVSkKLSAgICAgICAgICoKLSAgICAgICAgICogICAgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxCi0gICAgICAgICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKwotICAgICAgICAgfCAgICBQYXlsb2FkSGRyIChUeXBlPTQ5KSAgICAgICB8ICAgRlUgaGVhZGVyICAgfCBET05MIChjb25kKSAgIHwKLSAgICAgICAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy18Ci0gICAgICAgICB8IERPTkwgKGNvbmQpICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgICAgfC0rLSstKy0rLSstKy0rLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgRlUgcGF5bG9hZCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKLSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOi4uLk9QVElPTkFMIFJUUCBwYWRkaW5nICAgICAgICB8Ci0gICAgICAgICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKwotICAgICAgICAgKgotICAgICAgICAgKgotICAgICAgICAgKi8KLQotICAgICAgICAvKiBzdHJpcCBoZWFkZXJzICovCi0gICAgICAgIHBheWxvYWQgKz0gaGVhZGVyX2xlbjsKLSAgICAgICAgcGF5bG9hZF9sZW4gLT0gaGVhZGVyX2xlbjsKLQotICAgICAgICAvKiBwcm9jZXNzaW5nIEZVIGhlYWRlciAqLwotICAgICAgICBTID0gKHBheWxvYWRbMF0gJiAweDgwKSA9PSAweDgwOwotICAgICAgICBFID0gKHBheWxvYWRbMF0gJiAweDQwKSA9PSAweDQwOwotCi0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwKLSAgICAgICAgICAgICJGVSBoZWFkZXIgd2l0aCBTICVkLCBFICVkLCBuYWxfdW5pdF90eXBlICVkIiwgUywgRSwKLSAgICAgICAgICAgIHBheWxvYWRbMF0gJiAweDNmKTsKLQotICAgICAgICBpZiAocnRwaDI2NWRlcGF5LT53YWl0X3N0YXJ0ICYmICFTKQotICAgICAgICAgIGdvdG8gd2FpdGluZ19zdGFydDsKLQotI2lmIDAKLSAgICAgICAgaWYgKGRvbmxfcHJlc2VudCkKLSAgICAgICAgICBnb3RvIG5vdF9pbXBsZW1lbnRlZF9kb25sX3ByZXNlbnQ7Ci0jZW5kaWYKLQotICAgICAgICBpZiAoUykgewotCi0gICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAiU3RhcnQgb2YgRnJhZ21lbnRhdGlvbiBVbml0Iik7Ci0KLSAgICAgICAgICAvKiBJZiBhIG5ldyBGVSB1bml0IHN0YXJ0ZWQsIHdoaWxlIHN0aWxsIHByb2Nlc3NpbmcgYW4gb2xkZXIgb25lLgotICAgICAgICAgICAqIEFzc3VtZSB0aGF0IHRoZSByZW1vdGUgcGF5bG9hZGVyIGlzIGJ1Z2d5IChkb2Vzbid0IHNldCB0aGUgZW5kCi0gICAgICAgICAgICogYml0KSBhbmQgc2VuZCBvdXQgd2hhdCB3ZSd2ZSBnYXRoZXJlZCB0aHVzZmFyICovCi0gICAgICAgICAgaWYgKEdfVU5MSUtFTFkgKHJ0cGgyNjVkZXBheS0+Y3VycmVudF9mdV90eXBlICE9IDApKQotICAgICAgICAgICAgZ3N0X3J0cF9oMjY1X3B1c2hfZnJhZ21lbnRhdGlvbl91bml0IChydHBoMjY1ZGVwYXksIFRSVUUpOwotCi0gICAgICAgICAgcnRwaDI2NWRlcGF5LT5jdXJyZW50X2Z1X3R5cGUgPSBuYWxfdW5pdF90eXBlOwotICAgICAgICAgIHJ0cGgyNjVkZXBheS0+ZnVfdGltZXN0YW1wID0gdGltZXN0YW1wOwotCi0gICAgICAgICAgcnRwaDI2NWRlcGF5LT53YWl0X3N0YXJ0ID0gRkFMU0U7Ci0KLSAgICAgICAgICAvKiByZWNvbnN0cnVjdCBOQUwgaGVhZGVyICovCi0gICAgICAgICAgbmFsX2hlYWRlciA9Ci0gICAgICAgICAgICAgICgocGF5bG9hZFswXSAmIDB4M2YpIDw8IDkpIHwgKG51aF9sYXllcl9pZCA8PCAzKSB8Ci0gICAgICAgICAgICAgIG51aF90ZW1wb3JhbF9pZF9wbHVzMTsKLQotICAgICAgICAgIC8qIGdvIGJhY2sgb25lIGJ5dGUgc28gd2UgY2FuIGNvcHkgdGhlIHBheWxvYWQgKyB0d28gYnl0ZXMgbW9yZSBpbiB0aGUgZnJvbnQgd2hpY2gKLSAgICAgICAgICAgKiB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHRoZSBuYWxfaGVhZGVyCi0gICAgICAgICAgICovCi0gICAgICAgICAgcGF5bG9hZCAtPSAxOwotICAgICAgICAgIHBheWxvYWRfbGVuICs9IDE7Ci0KLSAgICAgICAgICBuYWx1X3NpemUgPSBwYXlsb2FkX2xlbjsKLSAgICAgICAgICBvdXRzaXplID0gbmFsdV9zaXplICsgc2l6ZW9mIChzeW5jX2J5dGVzKTsKLSAgICAgICAgICBvdXRidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKG91dHNpemUpOwotCi0gICAgICAgICAgZ3N0X2J1ZmZlcl9tYXAgKG91dGJ1ZiwgJm1hcCwgR1NUX01BUF9XUklURSk7Ci0gICAgICAgICAgbWVtY3B5IChtYXAuZGF0YSArIHNpemVvZiAoc3luY19ieXRlcyksIHBheWxvYWQsIG5hbHVfc2l6ZSk7Ci0gICAgICAgICAgbWFwLmRhdGFbc2l6ZW9mIChzeW5jX2J5dGVzKV0gPSBuYWxfaGVhZGVyID4+IDg7Ci0gICAgICAgICAgbWFwLmRhdGFbc2l6ZW9mIChzeW5jX2J5dGVzKSArIDFdID0gbmFsX2hlYWRlciAmIDB4ZmY7Ci0gICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAob3V0YnVmLCAmbWFwKTsKLQotICAgICAgICAgIGdzdF9ydHBfY29weV9tZXRhIChHU1RfRUxFTUVOVF9DQVNUIChydHBoMjY1ZGVwYXkpLCBvdXRidWYsIGJ1ZiwKLSAgICAgICAgICAgICAgZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcgKEdTVF9NRVRBX1RBR19WSURFT19TVFIpKTsKLQotICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwgInF1ZXVlaW5nICVkIGJ5dGVzIiwgb3V0c2l6ZSk7Ci0KLSAgICAgICAgICAvKiBhbmQgYXNzZW1ibGUgaW4gdGhlIGFkYXB0ZXIgKi8KLSAgICAgICAgICBnc3RfYWRhcHRlcl9wdXNoIChydHBoMjY1ZGVwYXktPmFkYXB0ZXIsIG91dGJ1Zik7Ci0gICAgICAgIH0gZWxzZSB7Ci0KLSAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksCi0gICAgICAgICAgICAgICJGb2xsb3dpbmcgcGFydCBvZiBGcmFnbWVudGF0aW9uIFVuaXQiKTsKLQotICAgICAgICAgIC8qIHN0cmlwIG9mZiBGVSBoZWFkZXIgYnl0ZSAqLwotICAgICAgICAgIHBheWxvYWQgKz0gMTsKLSAgICAgICAgICBwYXlsb2FkX2xlbiAtPSAxOwotCi0gICAgICAgICAgb3V0c2l6ZSA9IHBheWxvYWRfbGVuOwotICAgICAgICAgIG91dGJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAob3V0c2l6ZSk7Ci0gICAgICAgICAgZ3N0X2J1ZmZlcl9maWxsIChvdXRidWYsIDAsIHBheWxvYWQsIG91dHNpemUpOwotCi0gICAgICAgICAgZ3N0X3J0cF9jb3B5X21ldGEgKEdTVF9FTEVNRU5UX0NBU1QgKHJ0cGgyNjVkZXBheSksIG91dGJ1ZiwgYnVmLAotICAgICAgICAgICAgICBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyAoR1NUX01FVEFfVEFHX1ZJREVPX1NUUikpOwotCi0gICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAicXVldWVpbmcgJWQgYnl0ZXMiLCBvdXRzaXplKTsKLQotICAgICAgICAgIC8qIGFuZCBhc3NlbWJsZSBpbiB0aGUgYWRhcHRlciAqLwotICAgICAgICAgIGdzdF9hZGFwdGVyX3B1c2ggKHJ0cGgyNjVkZXBheS0+YWRhcHRlciwgb3V0YnVmKTsKLSAgICAgICAgfQotCi0gICAgICAgIG91dGJ1ZiA9IE5VTEw7Ci0gICAgICAgIHJ0cGgyNjVkZXBheS0+ZnVfbWFya2VyID0gbWFya2VyOwotCi0gICAgICAgIC8qIGlmIE5BTCB1bml0IGVuZHMsIGZsdXNoIHRoZSBhZGFwdGVyICovCi0gICAgICAgIGlmIChFKSB7Ci0gICAgICAgICAgb3V0YnVmID0gZ3N0X3J0cF9oMjY1X3B1c2hfZnJhZ21lbnRhdGlvbl91bml0IChydHBoMjY1ZGVwYXksIEZBTFNFKTsKLSAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJFbmQgb2YgRnJhZ21lbnRhdGlvbiBVbml0Iik7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjYXNlIDUwOgotICAgICAgICBnb3RvIG5vdF9pbXBsZW1lbnRlZDsgICAvKiBQQUNJIHBhY2tldHMgIFNlY3Rpb24gNC45ICovCi0gICAgICBkZWZhdWx0OgotICAgICAgewotICAgICAgICBydHBoMjY1ZGVwYXktPndhaXRfc3RhcnQgPSBGQUxTRTsKLQotICAgICAgICAvKiBBbGwgb3RoZXIgY2FzZXM6IFNpbmdsZSBOQUwgdW5pdCBwYWNrZXQgICBTZWN0aW9uIDQuNiAqLwotICAgICAgICAvKiB0aGUgZW50aXJlIHBheWxvYWQgaXMgdGhlIG91dHB1dCBidWZmZXIgKi8KLQotI2lmIDAKLSAgICAgICAgaWYgKGRvbmxfcHJlc2VudCkKLSAgICAgICAgICBnb3RvIG5vdF9pbXBsZW1lbnRlZF9kb25sX3ByZXNlbnQ7Ci0jZW5kaWYKLQotICAgICAgICBuYWx1X3NpemUgPSBwYXlsb2FkX2xlbjsKLSAgICAgICAgb3V0c2l6ZSA9IG5hbHVfc2l6ZSArIHNpemVvZiAoc3luY19ieXRlcyk7Ci0gICAgICAgIG91dGJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAob3V0c2l6ZSk7Ci0KLSAgICAgICAgZ3N0X2J1ZmZlcl9tYXAgKG91dGJ1ZiwgJm1hcCwgR1NUX01BUF9XUklURSk7Ci0gICAgICAgIGlmIChydHBoMjY1ZGVwYXktPmJ5dGVfc3RyZWFtKSB7Ci0gICAgICAgICAgbWVtY3B5IChtYXAuZGF0YSwgc3luY19ieXRlcywgc2l6ZW9mIChzeW5jX2J5dGVzKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgZ290byBub3RfaW1wbGVtZW50ZWQ7Ci0gICAgICAgIH0KLSAgICAgICAgbWVtY3B5IChtYXAuZGF0YSArIHNpemVvZiAoc3luY19ieXRlcyksIHBheWxvYWQsIG5hbHVfc2l6ZSk7Ci0gICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKG91dGJ1ZiwgJm1hcCk7Ci0KLSAgICAgICAgZ3N0X3J0cF9jb3B5X21ldGEgKEdTVF9FTEVNRU5UX0NBU1QgKHJ0cGgyNjVkZXBheSksIG91dGJ1ZiwgYnVmLAotICAgICAgICAgICAgZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcgKEdTVF9NRVRBX1RBR19WSURFT19TVFIpKTsKLQotICAgICAgICBvdXRidWYgPSBnc3RfcnRwX2gyNjVfZGVwYXlfaGFuZGxlX25hbCAocnRwaDI2NWRlcGF5LCBvdXRidWYsIHRpbWVzdGFtcCwKLSAgICAgICAgICAgIG1hcmtlcik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7Ci0KLSAgcmV0dXJuIG91dGJ1ZjsKLQotICAvKiBFUlJPUlMgKi8KLWVtcHR5X3BhY2tldDoKLSAgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwgImVtcHR5IHBhY2tldCIpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLXdhaXRpbmdfc3RhcnQ6Ci0gIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJ3YWl0aW5nIGZvciBzdGFydCIpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLSNpZiAwCi1ub3RfaW1wbGVtZW50ZWRfZG9ubF9wcmVzZW50OgotICB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKHJ0cGgyNjVkZXBheSwgU1RSRUFNLCBGT1JNQVQsCi0gICAgICAgIChOVUxMKSwgKCJET05MIGZpZWxkIHByZXNlbnQgbm90IHN1cHBvcnRlZCB5ZXQiKSk7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotI2VuZGlmCi1ub3RfaW1wbGVtZW50ZWQ6Ci0gIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAocnRwaDI2NWRlcGF5LCBTVFJFQU0sIEZPUk1BVCwKLSAgICAgICAgKE5VTEwpLCAoIk5BTCB1bml0IHR5cGUgJWQgbm90IHN1cHBvcnRlZCB5ZXQiLCBuYWxfdW5pdF90eXBlKSk7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9ydHBfaDI2NV9kZXBheV9oYW5kbGVfZXZlbnQgKEdzdFJUUEJhc2VEZXBheWxvYWQgKiBkZXBheSwgR3N0RXZlbnQgKiBldmVudCkKLXsKLSAgR3N0UnRwSDI2NURlcGF5ICpydHBoMjY1ZGVwYXk7Ci0KLSAgcnRwaDI2NWRlcGF5ID0gR1NUX1JUUF9IMjY1X0RFUEFZIChkZXBheSk7Ci0KLSAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7Ci0gICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RPUDoKLSAgICAgIGdzdF9ydHBfaDI2NV9kZXBheV9yZXNldCAocnRwaDI2NWRlcGF5KTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybgotICAgICAgR1NUX1JUUF9CQVNFX0RFUEFZTE9BRF9DTEFTUyAocGFyZW50X2NsYXNzKS0+aGFuZGxlX2V2ZW50IChkZXBheSwgZXZlbnQpOwotfQotCi1zdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KLWdzdF9ydHBfaDI2NV9kZXBheV9jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAotICAgIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCi17Ci0gIEdzdFJ0cEgyNjVEZXBheSAqcnRwaDI2NWRlcGF5OwotICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQ7Ci0KLSAgcnRwaDI2NWRlcGF5ID0gR1NUX1JUUF9IMjY1X0RFUEFZIChlbGVtZW50KTsKLQotICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfTlVMTF9UT19SRUFEWToKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6Ci0gICAgICBnc3RfcnRwX2gyNjVfZGVwYXlfcmVzZXQgKHJ0cGgyNjVkZXBheSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXQgPSBHU1RfRUxFTUVOVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+Y2hhbmdlX3N0YXRlIChlbGVtZW50LCB0cmFuc2l0aW9uKTsKLQotICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fTlVMTDoKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotICByZXR1cm4gcmV0OwotfQotCi1nYm9vbGVhbgotZ3N0X3J0cF9oMjY1X2RlcGF5X3BsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCi17Ci0gIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChydHBoMjY1ZGVwYXlfZGVidWcsICJydHBoMjY1ZGVwYXkiLCAwLAotICAgICAgIkgyNjUgVmlkZW8gUlRQIERlcGF5bG9hZGVyIik7Ci0KLSAgcmV0dXJuIGdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJydHBoMjY1ZGVwYXkiLAotICAgICAgR1NUX1JBTktfU0VDT05EQVJZLCBHU1RfVFlQRV9SVFBfSDI2NV9ERVBBWSk7Ci19CmRpZmYgLS1naXQgYS9nc3QvcnRwL2dzdHJ0cGgyNjVkZXBheS5oIGIvZ3N0L3J0cC9nc3RydHBoMjY1ZGVwYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY1MGFjNi4uMDAwMDAwMAotLS0gYS9nc3QvcnRwL2dzdHJ0cGgyNjVkZXBheS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSA8MjAwNj4gV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgPDIwMTQ+IEp1cmdlbiBTbG93YWNrIDxqdXJnZW5zbG93YWNrQGdtYWlsLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIF9fR1NUX1JUUF9IMjY1X0RFUEFZX0hfXwotI2RlZmluZSBfX0dTVF9SVFBfSDI2NV9ERVBBWV9IX18KLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvYmFzZS9nc3RhZGFwdGVyLmg+Ci0jaW5jbHVkZSA8Z3N0L3J0cC9nc3RydHBiYXNlZGVwYXlsb2FkLmg+Ci0jaW5jbHVkZSA8Z3N0L2NvZGVjcGFyc2Vycy9nc3RoMjY1cGFyc2VyLmg+Ci0KLUdfQkVHSU5fREVDTFMKLSNkZWZpbmUgR1NUX1RZUEVfUlRQX0gyNjVfREVQQVkgXAotICAoZ3N0X3J0cF9oMjY1X2RlcGF5X2dldF90eXBlKCkpCi0jZGVmaW5lIEdTVF9SVFBfSDI2NV9ERVBBWShvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX1JUUF9IMjY1X0RFUEFZLEdzdFJ0cEgyNjVEZXBheSkpCi0jZGVmaW5lIEdTVF9SVFBfSDI2NV9ERVBBWV9DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9SVFBfSDI2NV9ERVBBWSxHc3RSdHBIMjY1RGVwYXlDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19SVFBfSDI2NV9ERVBBWShvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX1JUUF9IMjY1X0RFUEFZKSkKLSNkZWZpbmUgR1NUX0lTX1JUUF9IMjY1X0RFUEFZX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX1JUUF9IMjY1X0RFUEFZKSkKLXR5cGVkZWYgc3RydWN0IF9Hc3RSdHBIMjY1RGVwYXkgR3N0UnRwSDI2NURlcGF5OwotdHlwZWRlZiBzdHJ1Y3QgX0dzdFJ0cEgyNjVEZXBheUNsYXNzIEdzdFJ0cEgyNjVEZXBheUNsYXNzOwotCi0jZGVmaW5lIEdTVF9IMjY1X1ZQU19OVVQgMzIKLSNkZWZpbmUgR1NUX0gyNjVfU1BTX05VVCAzMwotI2RlZmluZSBHU1RfSDI2NV9QUFNfTlVUIDM0Ci0KLXR5cGVkZWYgZW51bQotewotICBHU1RfSDI2NV9TVFJFQU1fRk9STUFUX1VOS05PV04sCi0gIEdTVF9IMjY1X1NUUkVBTV9GT1JNQVRfQllURVNUUkVBTSwKLSAgR1NUX0gyNjVfU1RSRUFNX0ZPUk1BVF9IVkMxLAotICBHU1RfSDI2NV9TVFJFQU1fRk9STUFUX0hFVjEKLX0gR3N0SDI2NVN0cmVhbUZvcm1hdDsKLQotc3RydWN0IF9Hc3RSdHBIMjY1RGVwYXkKLXsKLSAgR3N0UlRQQmFzZURlcGF5bG9hZCBkZXBheWxvYWQ7Ci0KLSAgZ2NoYXIgKnN0cmVhbV9mb3JtYXQ7Ci0gIGdib29sZWFuIGJ5dGVfc3RyZWFtOwotCi0gIEdzdEJ1ZmZlciAqY29kZWNfZGF0YTsKLSAgR3N0QWRhcHRlciAqYWRhcHRlcjsKLSAgZ2Jvb2xlYW4gd2FpdF9zdGFydDsKLQotICAvKiBuYWwgbWVyZ2luZyAqLwotICBnYm9vbGVhbiBtZXJnZTsKLSAgR3N0QWRhcHRlciAqcGljdHVyZV9hZGFwdGVyOwotICBnYm9vbGVhbiBwaWN0dXJlX3N0YXJ0OwotICBHc3RDbG9ja1RpbWUgbGFzdF90czsKLSAgZ2Jvb2xlYW4gbGFzdF9rZXlmcmFtZTsKLQotICAvKiBXb3JrIGFyb3VuZCBicm9rZW4gcGF5bG9hZGVycyB3cnQuIEZyYWdtZW50YXRpb24gVW5pdHMgKi8KLSAgZ3VpbnQ4IGN1cnJlbnRfZnVfdHlwZTsKLSAgR3N0Q2xvY2tUaW1lIGZ1X3RpbWVzdGFtcDsKLSAgZ2Jvb2xlYW4gZnVfbWFya2VyOwotCi0gIC8qIG1pc2MgKi8KLSAgR1B0ckFycmF5ICp2cHM7Ci0gIEdQdHJBcnJheSAqc3BzOwotICBHUHRyQXJyYXkgKnBwczsKLSAgZ2Jvb2xlYW4gbmV3X2NvZGVjX2RhdGE7Ci19OwotCi1zdHJ1Y3QgX0dzdFJ0cEgyNjVEZXBheUNsYXNzCi17Ci0gIEdzdFJUUEJhc2VEZXBheWxvYWRDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi10eXBlZGVmIHN0cnVjdAotewotICBHc3RFbGVtZW50ICplbGVtZW50OwotICBHc3RCdWZmZXIgKm91dGJ1ZjsKLSAgR1F1YXJrIGNvcHlfdGFnOwotfSBDb3B5TWV0YURhdGE7Ci0KLXZvaWQgZ3N0X3J0cF9jb3B5X21ldGEgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RCdWZmZXIgKm91dGJ1ZiwgR3N0QnVmZmVyICppbmJ1ZiwgR1F1YXJrIGNvcHlfdGFnKTsKLQotR1R5cGUgZ3N0X3J0cF9oMjY1X2RlcGF5X2dldF90eXBlICh2b2lkKTsKLQotZ2Jvb2xlYW4gZ3N0X3J0cF9oMjY1X2RlcGF5X3BsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pOwotCi1nYm9vbGVhbiBnc3RfcnRwX2gyNjVfYWRkX3Zwc19zcHNfcHBzIChHc3RFbGVtZW50ICogcnRwaDI2NSwgR1B0ckFycmF5ICogdnBzLAotICAgIEdQdHJBcnJheSAqIHNwcywgR1B0ckFycmF5ICogcHBzLCBHc3RCdWZmZXIgKiBuYWwpOwotCi1HX0VORF9ERUNMUwotI2VuZGlmIC8qIF9fR1NUX1JUUF9IMjY1X0RFUEFZX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0L3J0cC9nc3RydHBoMjY1cGF5LmMgYi9nc3QvcnRwL2dzdHJ0cGgyNjVwYXkuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE3YjA5MS4uMDAwMDAwMAotLS0gYS9nc3QvcnRwL2dzdHJ0cGgyNjVwYXkuYworKysgL2Rldi9udWxsCkBAIC0xLDE1MDMgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDwyMDA2PiBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSA8MjAxND4gSnVyZ2VuIFNsb3dhY2sgPGp1cmdlbnNsb3dhY2tAZ21haWwuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jICBpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpbmNsdWRlIDxnc3QvcnRwL2dzdHJ0cGJ1ZmZlci5oPgotI2luY2x1ZGUgPGdzdC9wYnV0aWxzL3BidXRpbHMuaD4KLSNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KLQotLyogSW5jbHVkZWQgdG8gbm90IGR1cGxpY2F0ZSBnc3RfcnRwX2gyNjVfYWRkX3Zwc19zcHNfcHBzICgpICovCi0jaW5jbHVkZSAiZ3N0cnRwaDI2NWRlcGF5LmgiCi0KLSNpbmNsdWRlICJnc3RydHBoMjY1cGF5LmgiCi0KLQotR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAocnRwaDI2NXBheV9kZWJ1Zyk7Ci0jZGVmaW5lIEdTVF9DQVRfREVGQVVMVCAocnRwaDI2NXBheV9kZWJ1ZykKLQotLyogcmVmZXJlbmNlczoKLSAqCi0gKiBJbnRlcm5ldCBEcmFmdCBSVFAgUGF5bG9hZCBGb3JtYXQgZm9yIEhpZ2ggRWZmaWNpZW5jeSBWaWRlbyBDb2RpbmcKLSAqCi0gKiAgICAgICAgICAgICAgICAgICBkcmFmdC1pZXRmLXBheWxvYWQtcnRwLWgyNjUtMDMudHh0Ci0gKgotICogVGhpcyBkcmFmdCB3aWxsIGJlIHJlcGxhY2VkIHdpdGggYW4gUkZDLCBzbyBzb21lIGRldGFpbHMgbWF5IGNoYW5nZS4KLSAqCi0gKi8KLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF9ydHBfaDI2NV9wYXlfc2lua190ZW1wbGF0ZSA9Ci0gICAgR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKLSAgICBHU1RfUEFEX1NJTkssCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTICgKLSAgICAgICAgLyogT25seSBieXRlc3RyZWFtIGZvcm1hdCBzdXBwb3J0ZWQgZm9yIG5vdyAqLwotICAgICAgICAvKiAidmlkZW8veC1oMjY1LCAiCi0gICAgICAgICAgICJzdHJlYW0tZm9ybWF0ID0gKHN0cmluZykgaHZjMSwgYWxpZ25tZW50ID0gKHN0cmluZykgYXU7ICIKLSAgICAgICAgICAgInZpZGVvL3gtaDI2NSwgIgotICAgICAgICAgICAic3RyZWFtLWZvcm1hdCA9IChzdHJpbmcpIGhldjEsIGFsaWdubWVudCA9IChzdHJpbmcpIGF1OyAiICovCi0gICAgICAgICJ2aWRlby94LWgyNjUsICIKLSAgICAgICAgInN0cmVhbS1mb3JtYXQgPSAoc3RyaW5nKSBieXRlLXN0cmVhbSwgYWxpZ25tZW50ID0gKHN0cmluZykgeyBuYWwsIGF1IH0iKQotICAgICk7Ci0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfcnRwX2gyNjVfcGF5X3NyY190ZW1wbGF0ZSA9Ci1HU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCi0gICAgR1NUX1BBRF9TUkMsCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTICgiYXBwbGljYXRpb24veC1ydHAsICIKLSAgICAgICAgIm1lZGlhID0gKHN0cmluZykgXCJ2aWRlb1wiLCAiCi0gICAgICAgICJwYXlsb2FkID0gKGludCkgIiBHU1RfUlRQX1BBWUxPQURfRFlOQU1JQ19TVFJJTkcgIiwgIgotICAgICAgICAiY2xvY2stcmF0ZSA9IChpbnQpIDkwMDAwLCAiICJlbmNvZGluZy1uYW1lID0gKHN0cmluZykgXCJIMjY1XCIiKQotICAgICAgICAgICAgICAgIC8qKiBvcHRpb25hbCBwYXJhbWV0ZXJzICoqLwotICAgIC8qICJwcm9maWxlLXNwYWNlID0gKGludCkgWyAwLCAzIF0sICIgKi8KLSAgICAvKiAicHJvZmlsZS1pZCA9IChpbnQpIFsgMCwgMzEgXSwgIiAqLwotICAgIC8qICJ0aWVyLWZsYWcgPSAoaW50KSBbIDAsIDEgXSwgIiAqLwotICAgIC8qICJsZXZlbC1pZCA9IChpbnQpIFsgMCwgMjU1IF0sICIgKi8KLSAgICAvKiAiaW50ZXJvcC1jb25zdHJhaW50cyA9IChzdHJpbmcpIEFOWSwgIiAqLwotICAgIC8qICJwcm9maWxlLWNvbXBhdGliaWxpdHktaW5kaWNhdG9yID0gKHN0cmluZykgQU5ZLCAiICovCi0gICAgLyogInNwcm9wLXN1Yi1sYXllci1pZCA9IChpbnQpIFsgMCwgNiBdLCAiICovCi0gICAgLyogInJlY3Ytc3ViLWxheWVyLWlkID0gKGludCkgWyAwLCA2IF0sICIgKi8KLSAgICAvKiAibWF4LXJlY3YtbGV2ZWwtaWQgPSAoaW50KSBbIDAsIDI1NSBdLCAiICovCi0gICAgLyogInR4LW1vZGUgPSAoc3RyaW5nKSB7TVNUICwgU1NUfSwgIiAqLwotICAgIC8qICJzcHJvcC12cHMgPSAoc3RyaW5nKSBBTlksICIgKi8KLSAgICAvKiAic3Byb3Atc3BzID0gKHN0cmluZykgQU5ZLCAiICovCi0gICAgLyogInNwcm9wLXBwcyA9IChzdHJpbmcpIEFOWSwgIiAqLwotICAgIC8qICJzcHJvcC1zZWkgPSAoc3RyaW5nKSBBTlksICIgKi8KLSAgICAvKiAibWF4LWxzciA9IChpbnQpIEFOWSwgIiAqLy8qIE1VU1QgYmUgaW4gdGhlIHJhbmdlIG9mIE1heEx1bWFTUiB0byAxNiAqIE1heEx1bWFTUiwgaW5jbHVzaXZlICovCi0gICAgLyogIm1heC1scHMgPSAoaW50KSBBTlksICIgKi8vKiBNVVNUIGJlIGluIHRoZSByYW5nZSBvZiBNYXhMdW1hUFMgdG8gMTYgKiBNYXhMdW1hUFMsIGluY2x1c2l2ZSAqLwotICAgIC8qICJtYXgtY3BiID0gKGludCkgQU5ZLCAiICovLyogTVVTVCBiZSBpbiB0aGUgcmFuZ2Ugb2YgTWF4Q1BCIHRvIDE2ICogTWF4Q1BCLCBpbmNsdXNpdmUgKi8KLSAgICAvKiAibWF4LWRwYiA9IChpbnQpIFsxLCAxNl0sICIgKi8KLSAgICAvKiAibWF4LWJyID0gKGludCkgQU5ZLCAiICovLyogTVVTVCBiZSBpbiB0aGUgcmFuZ2Ugb2YgTWF4QlIgdG8gMTYgKiBNYXhCUiwgaW5jbHVzaXZlLCBmb3IgdGhlIGhpZ2hlc3QgbGV2ZWwgKi8KLSAgICAvKiAibWF4LXRyID0gKGludCkgQU5ZLCAiICovLyogTVVTVCBiZSBpbiB0aGUgcmFuZ2Ugb2YgTWF4VGlsZVJvd3MgdG8gMTYgKiBNYXhUaWxlUm93cywgaW5jbHVzaXZlLCBmb3IgdGhlIGhpZ2hlc3QgbGV2ZWwgKi8KLSAgICAvKiAibWF4LXRjID0gKGludCkgQU5ZLCAiICovLyogTVVTVCBiZSBpbiB0aGUgcmFuZ2Ugb2YgTWF4VGlsZUNvbHMgdG8gMTYgKiBNYXhUaWxlQ29scywgaW5jbHVzaXZlLCBmb3IgdGhlIGhpZ2hlc3QgbGV2ZWwgKi8KLSAgICAvKiAibWF4LWZwcyA9IChpbnQpIEFOWSwgIiAqLwotICAgIC8qICJzcHJvcC1tYXgtZG9uLWRpZmYgPSAoaW50KSBbMCwgMzI3NjddLCAiICovCi0gICAgLyogInNwcm9wLWRlcGFjay1idWYtbmFsdXMgPSAoaW50KSBbMCwgMzI3NjddLCAiICovCi0gICAgLyogInNwcm9wLWRlcGFjay1idWYtbmFsdXMgPSAoaW50KSBbMCwgNDI5NDk2NzI5NV0sICIgKi8KLSAgICAvKiAiZGVwYWNrLWJ1Zi1jYXAgPSAoaW50KSBbMSwgNDI5NDk2NzI5NV0sICIgKi8KLSAgICAvKiAic3Byb3Atc2VnbWVudGF0aW9uLWlkID0gKGludCkgWzAsIDNdLCAiICovCi0gICAgLyogInNwcm9wLXNwYXRpYWwtc2VnbWVudGF0aW9uLWlkYyA9IChzdHJpbmcpIEFOWSwgIiAqLwotICAgIC8qICJkZWMtcGFyYWxsZWwtY2FwID0gKHN0cmluZykgQU5ZLCAiICovCi0gICAgKTsKLQotI2RlZmluZSBERUZBVUxUX1NQUk9QX1BBUkFNRVRFUl9TRVRTICAgIE5VTEwKLSNkZWZpbmUgREVGQVVMVF9DT05GSUdfSU5URVJWQUwJCSAgICAgIDAKLQotZW51bQotewotICBQUk9QXzAsCi0gIFBST1BfU1BST1BfUEFSQU1FVEVSX1NFVFMsCi0gIFBST1BfQ09ORklHX0lOVEVSVkFMCi19OwotCi0jZGVmaW5lIElTX0FDQ0VTU19VTklUKHgpICgoKHgpID4gMHgwMCkgJiYgKCh4KSA8IDB4MDYpKQotCi1zdGF0aWMgdm9pZCBnc3RfcnRwX2gyNjVfcGF5X2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKLQotc3RhdGljIHZvaWQgZ3N0X3J0cF9oMjY1X3BheV9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0gICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci1zdGF0aWMgdm9pZCBnc3RfcnRwX2gyNjVfcGF5X2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLQotc3RhdGljIEdzdENhcHMgKmdzdF9ydHBfaDI2NV9wYXlfZ2V0Y2FwcyAoR3N0UlRQQmFzZVBheWxvYWQgKiBwYXlsb2FkLAotICAgIEdzdFBhZCAqIHBhZCwgR3N0Q2FwcyAqIGZpbHRlcik7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X3J0cF9oMjY1X3BheV9zZXRjYXBzIChHc3RSVFBCYXNlUGF5bG9hZCAqIGJhc2VwYXlsb2FkLAotICAgIEdzdENhcHMgKiBjYXBzKTsKLXN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9ydHBfaDI2NV9wYXlfaGFuZGxlX2J1ZmZlciAoR3N0UlRQQmFzZVBheWxvYWQgKiBwYWQsCi0gICAgR3N0QnVmZmVyICogYnVmZmVyKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfcnRwX2gyNjVfcGF5X3NpbmtfZXZlbnQgKEdzdFJUUEJhc2VQYXlsb2FkICogcGF5bG9hZCwKLSAgICBHc3RFdmVudCAqIGV2ZW50KTsKLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiBnc3RfcnRwX2gyNjVfcGF5X2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqCi0gICAgZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7Ci0KLSNkZWZpbmUgZ3N0X3J0cF9oMjY1X3BheV9wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCi1HX0RFRklORV9UWVBFIChHc3RSdHBIMjY1UGF5LCBnc3RfcnRwX2gyNjVfcGF5LCBHU1RfVFlQRV9SVFBfQkFTRV9QQVlMT0FEKTsKLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfaDI2NV9wYXlfY2xhc3NfaW5pdCAoR3N0UnRwSDI2NVBheUNsYXNzICoga2xhc3MpCi17Ci0gIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKLSAgR3N0RWxlbWVudENsYXNzICpnc3RlbGVtZW50X2NsYXNzOwotICBHc3RSVFBCYXNlUGF5bG9hZENsYXNzICpnc3RydHBiYXNlcGF5bG9hZF9jbGFzczsKLQotICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKLSAgZ3N0ZWxlbWVudF9jbGFzcyA9IChHc3RFbGVtZW50Q2xhc3MgKikga2xhc3M7Ci0gIGdzdHJ0cGJhc2VwYXlsb2FkX2NsYXNzID0gKEdzdFJUUEJhc2VQYXlsb2FkQ2xhc3MgKikga2xhc3M7Ci0KLSAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X3J0cF9oMjY1X3BheV9zZXRfcHJvcGVydHk7Ci0gIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9ydHBfaDI2NV9wYXlfZ2V0X3Byb3BlcnR5OwotCi0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKEdfT0JKRUNUX0NMQVNTIChrbGFzcyksCi0gICAgICBQUk9QX1NQUk9QX1BBUkFNRVRFUl9TRVRTLCBnX3BhcmFtX3NwZWNfc3RyaW5nICgic3Byb3AtcGFyYW1ldGVyLXNldHMiLAotICAgICAgICAgICJzcHJvcC1wYXJhbWV0ZXItc2V0cyIsCi0gICAgICAgICAgIlRoZSBiYXNlNjQgc3Byb3AtcGFyYW1ldGVyLXNldHMgdG8gc2V0IGluIG91dCBjYXBzIChzZXQgdG8gTlVMTCB0byAiCi0gICAgICAgICAgImV4dHJhY3QgZnJvbSBzdHJlYW0pIiwKLSAgICAgICAgICBERUZBVUxUX1NQUk9QX1BBUkFNRVRFUl9TRVRTLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwotCi0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKEdfT0JKRUNUX0NMQVNTIChrbGFzcyksCi0gICAgICBQUk9QX0NPTkZJR19JTlRFUlZBTCwKLSAgICAgIGdfcGFyYW1fc3BlY191aW50ICgiY29uZmlnLWludGVydmFsIiwKLSAgICAgICAgICAiVlBTIFNQUyBQUFMgU2VuZCBJbnRlcnZhbCIsCi0gICAgICAgICAgIlNlbmQgVlBTLCBTUFMgYW5kIFBQUyBJbnNlcnRpb24gSW50ZXJ2YWwgaW4gc2Vjb25kcyAoc3Byb3AgcGFyYW1ldGVyIHNldHMgIgotICAgICAgICAgICJ3aWxsIGJlIG11bHRpcGxleGVkIGluIHRoZSBkYXRhIHN0cmVhbSB3aGVuIGRldGVjdGVkLikgKDAgPSBkaXNhYmxlZCkiLAotICAgICAgICAgIDAsIDM2MDAsIERFRkFVTFRfQ09ORklHX0lOVEVSVkFMLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykKLSAgICAgICk7Ci0KLSAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfcnRwX2gyNjVfcGF5X2ZpbmFsaXplOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCi0gICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfcnRwX2gyNjVfcGF5X3NyY190ZW1wbGF0ZSkpOwotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X3J0cF9oMjY1X3BheV9zaW5rX3RlbXBsYXRlKSk7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZ3N0ZWxlbWVudF9jbGFzcywgIlJUUCBIMjY1IHBheWxvYWRlciIsCi0gICAgICAiQ29kZWMvUGF5bG9hZGVyL05ldHdvcmsvUlRQIiwKLSAgICAgICJQYXlsb2FkLWVuY29kZSBIMjY1IHZpZGVvIGludG8gUlRQIHBhY2tldHMgKGJhc2VkIG9uIGRyYWZ0LWlldGYtcGF5bG9hZC1ydHAtaDI2NS0wMy50eHQpIiwKLSAgICAgICJKdXJnZW4gU2xvd2FjayA8anVyZ2Vuc2xvd2Fja0BnbWFpbC5jb20+Iik7Ci0KLSAgZ3N0ZWxlbWVudF9jbGFzcy0+Y2hhbmdlX3N0YXRlID0KLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfcnRwX2gyNjVfcGF5X2NoYW5nZV9zdGF0ZSk7Ci0KLSAgZ3N0cnRwYmFzZXBheWxvYWRfY2xhc3MtPmdldF9jYXBzID0gZ3N0X3J0cF9oMjY1X3BheV9nZXRjYXBzOwotICBnc3RydHBiYXNlcGF5bG9hZF9jbGFzcy0+c2V0X2NhcHMgPSBnc3RfcnRwX2gyNjVfcGF5X3NldGNhcHM7Ci0gIGdzdHJ0cGJhc2VwYXlsb2FkX2NsYXNzLT5oYW5kbGVfYnVmZmVyID0gZ3N0X3J0cF9oMjY1X3BheV9oYW5kbGVfYnVmZmVyOwotICBnc3RydHBiYXNlcGF5bG9hZF9jbGFzcy0+c2lua19ldmVudCA9IGdzdF9ydHBfaDI2NV9wYXlfc2lua19ldmVudDsKLQotICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAocnRwaDI2NXBheV9kZWJ1ZywgInJ0cGgyNjVwYXkiLCAwLAotICAgICAgIkgyNjUgUlRQIFBheWxvYWRlciIpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3J0cF9oMjY1X3BheV9pbml0IChHc3RSdHBIMjY1UGF5ICogcnRwaDI2NXBheSkKLXsKLSAgcnRwaDI2NXBheS0+cXVldWUgPSBnX2FycmF5X25ldyAoRkFMU0UsIEZBTFNFLCBzaXplb2YgKGd1aW50KSk7Ci0gIHJ0cGgyNjVwYXktPnByb2ZpbGUgPSAwOwotICBydHBoMjY1cGF5LT5zcHMgPSBnX3B0cl9hcnJheV9uZXdfd2l0aF9mcmVlX2Z1bmMgKAotICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnc3RfYnVmZmVyX3VucmVmKTsKLSAgcnRwaDI2NXBheS0+cHBzID0gZ19wdHJfYXJyYXlfbmV3X3dpdGhfZnJlZV9mdW5jICgKLSAgICAgIChHRGVzdHJveU5vdGlmeSkgZ3N0X2J1ZmZlcl91bnJlZik7Ci0gIHJ0cGgyNjVwYXktPnZwcyA9IGdfcHRyX2FycmF5X25ld193aXRoX2ZyZWVfZnVuYyAoCi0gICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9idWZmZXJfdW5yZWYpOwotICBydHBoMjY1cGF5LT5sYXN0X3Zwc19zcHNfcHBzID0gLTE7Ci0gIHJ0cGgyNjVwYXktPnZwc19zcHNfcHBzX2ludGVydmFsID0gREVGQVVMVF9DT05GSUdfSU5URVJWQUw7Ci0KLSAgcnRwaDI2NXBheS0+YWRhcHRlciA9IGdzdF9hZGFwdGVyX25ldyAoKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfaDI2NV9wYXlfY2xlYXJfdnBzX3Nwc19wcHMgKEdzdFJ0cEgyNjVQYXkgKiBydHBoMjY1cGF5KQotewotICBnX3B0cl9hcnJheV9zZXRfc2l6ZSAocnRwaDI2NXBheS0+dnBzLCAwKTsKLSAgZ19wdHJfYXJyYXlfc2V0X3NpemUgKHJ0cGgyNjVwYXktPnNwcywgMCk7Ci0gIGdfcHRyX2FycmF5X3NldF9zaXplIChydHBoMjY1cGF5LT5wcHMsIDApOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3J0cF9oMjY1X3BheV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKLXsKLSAgR3N0UnRwSDI2NVBheSAqcnRwaDI2NXBheTsKLQotICBydHBoMjY1cGF5ID0gR1NUX1JUUF9IMjY1X1BBWSAob2JqZWN0KTsKLQotICBnX2FycmF5X2ZyZWUgKHJ0cGgyNjVwYXktPnF1ZXVlLCBUUlVFKTsKLQotICBnX3B0cl9hcnJheV9mcmVlIChydHBoMjY1cGF5LT5zcHMsIFRSVUUpOwotICBnX3B0cl9hcnJheV9mcmVlIChydHBoMjY1cGF5LT5wcHMsIFRSVUUpOwotICBnX3B0cl9hcnJheV9mcmVlIChydHBoMjY1cGF5LT52cHMsIFRSVUUpOwotCi0gIGdfZnJlZSAocnRwaDI2NXBheS0+c3Byb3BfcGFyYW1ldGVyX3NldHMpOwotCi0gIGdfb2JqZWN0X3VucmVmIChydHBoMjY1cGF5LT5hZGFwdGVyKTsKLQotICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyBjb25zdCBnY2hhciBhbGxfbGV2ZWxzW11bNF0gPSB7Ci0gICIxIiwKLSAgIjIiLAotICAiMi4xIiwKLSAgIjMiLAotICAiMy4xIiwKLSAgIjQiLAotICAiNC4xIiwKLSAgIjUiLAotICAiNS4xIiwKLSAgIjUuMiIsCi0gICI2IiwKLSAgIjYuMSIsCi0gICI2LjIiCi19OwotCi1zdGF0aWMgR3N0Q2FwcyAqCi1nc3RfcnRwX2gyNjVfcGF5X2dldGNhcHMgKEdzdFJUUEJhc2VQYXlsb2FkICogcGF5bG9hZCwgR3N0UGFkICogcGFkLAotICAgIEdzdENhcHMgKiBmaWx0ZXIpCi17Ci0gIEdzdENhcHMgKnRlbXBsYXRlX2NhcHM7Ci0gIEdzdENhcHMgKmFsbG93ZWRfY2FwczsKLSAgR3N0Q2FwcyAqY2FwczsKLSAgR3N0Q2FwcyAqaWNhcHM7Ci0gIGdib29sZWFuIGFwcGVuZF91bnJlc3RyaWN0ZWQ7Ci0gIGd1aW50IGk7Ci0KLSAgYWxsb3dlZF9jYXBzID0KLSAgICAgIGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzIChHU1RfUlRQX0JBU0VfUEFZTE9BRF9TUkNQQUQgKHBheWxvYWQpLCBOVUxMKTsKLQotICBpZiAoYWxsb3dlZF9jYXBzID09IE5VTEwpCi0gICAgcmV0dXJuIE5VTEw7Ci0KLSAgdGVtcGxhdGVfY2FwcyA9Ci0gICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXRfY2FwcyAoJmdzdF9ydHBfaDI2NV9wYXlfc2lua190ZW1wbGF0ZSk7Ci0KLSAgaWYgKGdzdF9jYXBzX2lzX2FueSAoYWxsb3dlZF9jYXBzKSkgewotICAgIGNhcHMgPSBnc3RfY2Fwc19yZWYgKHRlbXBsYXRlX2NhcHMpOwotICAgIGdvdG8gZG9uZTsKLSAgfQotCi0gIGlmIChnc3RfY2Fwc19pc19lbXB0eSAoYWxsb3dlZF9jYXBzKSkgewotICAgIGNhcHMgPSBnc3RfY2Fwc19yZWYgKGFsbG93ZWRfY2Fwcyk7Ci0gICAgZ290byBkb25lOwotICB9Ci0KLSAgY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eSAoKTsKLQotICBhcHBlbmRfdW5yZXN0cmljdGVkID0gRkFMU0U7Ci0gIGZvciAoaSA9IDA7IGkgPCBnc3RfY2Fwc19nZXRfc2l6ZSAoYWxsb3dlZF9jYXBzKTsgaSsrKSB7Ci0gICAgR3N0U3RydWN0dXJlICpzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoYWxsb3dlZF9jYXBzLCBpKTsKLSAgICBHc3RTdHJ1Y3R1cmUgKm5ld19zID0gZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkgKCJ2aWRlby94LWgyNjUiKTsKLSAgICBjb25zdCBnY2hhciAqcHJvZmlsZV9sZXZlbF9pZDsKLQotICAgIHByb2ZpbGVfbGV2ZWxfaWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJwcm9maWxlLWxldmVsLWlkIik7Ci0KLSAgICBpZiAocHJvZmlsZV9sZXZlbF9pZCAmJiBzdHJsZW4gKHByb2ZpbGVfbGV2ZWxfaWQpID09IDYpIHsgICAvKiBDb2RlIHRha2VuIGZyb20gZ3N0cnRwaDI2NHBheS5jLCBuZWVkcyB0byBiZSByZXZpc2VkIGZvciBILjI2NSAqLwotICAgICAgY29uc3QgZ2NoYXIgKnByb2ZpbGU7Ci0gICAgICBjb25zdCBnY2hhciAqbGV2ZWw7Ci0gICAgICBsb25nIGludCBzcHNpbnQ7Ci0gICAgICBndWludDggc3BzWzNdOwotCi0gICAgICBzcHNpbnQgPSBzdHJ0b2wgKHByb2ZpbGVfbGV2ZWxfaWQsIE5VTEwsIDE2KTsKLSAgICAgIHNwc1swXSA9IHNwc2ludCA+PiAxNjsKLSAgICAgIHNwc1sxXSA9IHNwc2ludCA+PiA4OwotICAgICAgc3BzWzJdID0gc3BzaW50OwotCi0gICAgICBwcm9maWxlID0gZ3N0X2NvZGVjX3V0aWxzX2gyNjVfZ2V0X3Byb2ZpbGUgKHNwcywgMyk7Ci0gICAgICBsZXZlbCA9IGdzdF9jb2RlY191dGlsc19oMjY1X2dldF9sZXZlbCAoc3BzLCAzKTsKLQotICAgICAgaWYgKHByb2ZpbGUgJiYgbGV2ZWwpIHsKLSAgICAgICAgR1NUX0xPR19PQkpFQ1QgKHBheWxvYWQsICJJbiBjYXBzLCBoYXZlIHByb2ZpbGUgJXMgYW5kIGxldmVsICVzIiwKLSAgICAgICAgICAgIHByb2ZpbGUsIGxldmVsKTsKLQotICAgICAgICBpZiAoIXN0cmNtcCAocHJvZmlsZSwgIm1haW4iKSkKLSAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldCAobmV3X3MsICJwcm9maWxlIiwgR19UWVBFX1NUUklORywgcHJvZmlsZSwgTlVMTCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIEdWYWx1ZSB2YWwgPSB7IDAsIH07Ci0gICAgICAgICAgR1ZhbHVlIHByb2ZpbGVzID0geyAwLCB9OwotCi0gICAgICAgICAgZ192YWx1ZV9pbml0ICgmcHJvZmlsZXMsIEdTVF9UWVBFX0xJU1QpOwotICAgICAgICAgIGdfdmFsdWVfaW5pdCAoJnZhbCwgR19UWVBFX1NUUklORyk7Ci0KLSAgICAgICAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmdmFsLCBwcm9maWxlKTsKLSAgICAgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZwcm9maWxlcywgJnZhbCk7Ci0KLSAgICAgICAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmdmFsLCAibWFpbiIpOwotICAgICAgICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJnByb2ZpbGVzLCAmdmFsKTsKLQotICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfdGFrZV92YWx1ZSAobmV3X3MsICJwcm9maWxlIiwgJnByb2ZpbGVzKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghc3RyY21wIChsZXZlbCwgIjEiKSkKLSAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldCAobmV3X3MsICJsZXZlbCIsIEdfVFlQRV9TVFJJTkcsIGxldmVsLCBOVUxMKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgR1ZhbHVlIGxldmVscyA9IHsgMCwgfTsKLSAgICAgICAgICBHVmFsdWUgdmFsID0geyAwLCB9OwotICAgICAgICAgIGludCBqOwotCi0gICAgICAgICAgZ192YWx1ZV9pbml0ICgmbGV2ZWxzLCBHU1RfVFlQRV9MSVNUKTsKLSAgICAgICAgICBnX3ZhbHVlX2luaXQgKCZ2YWwsIEdfVFlQRV9TVFJJTkcpOwotCi0gICAgICAgICAgZm9yIChqID0gMDsgaiA8IEdfTl9FTEVNRU5UUyAoYWxsX2xldmVscyk7IGorKykgewotICAgICAgICAgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJnZhbCwgYWxsX2xldmVsc1tqXSk7Ci0gICAgICAgICAgICBnc3RfdmFsdWVfbGlzdF9wcmVwZW5kX3ZhbHVlICgmbGV2ZWxzLCAmdmFsKTsKLSAgICAgICAgICAgIGlmICghc3RyY21wIChsZXZlbCwgYWxsX2xldmVsc1tqXSkpCi0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgICBnc3Rfc3RydWN0dXJlX3Rha2VfdmFsdWUgKG5ld19zLCAibGV2ZWwiLCAmbGV2ZWxzKTsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgLyogSW52YWxpZCBwcm9maWxlLWxldmVsLWlkIG1lYW5zIG1haW4gKi8KLQotICAgICAgICBnc3Rfc3RydWN0dXJlX3NldCAobmV3X3MsICJwcm9maWxlIiwgR19UWVBFX1NUUklORywgIm1haW4iLCBOVUxMKTsKLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgLyogTm8gcHJvZmlsZS1sZXZlbC1pZCBtZWFucyBtYWluIG9yIHVucmVzdHJpY3RlZCAqLwotCi0gICAgICBnc3Rfc3RydWN0dXJlX3NldCAobmV3X3MsICJwcm9maWxlIiwgR19UWVBFX1NUUklORywgIm1haW4iLCBOVUxMKTsKLSAgICAgIGFwcGVuZF91bnJlc3RyaWN0ZWQgPSBUUlVFOwotICAgIH0KLQotICAgIGNhcHMgPSBnc3RfY2Fwc19tZXJnZV9zdHJ1Y3R1cmUgKGNhcHMsIG5ld19zKTsKLSAgfQotCi0gIGlmIChhcHBlbmRfdW5yZXN0cmljdGVkKSB7Ci0gICAgY2FwcyA9Ci0gICAgICAgIGdzdF9jYXBzX21lcmdlX3N0cnVjdHVyZSAoY2FwcywgZ3N0X3N0cnVjdHVyZV9uZXcgKCJ2aWRlby94LWgyNjUiLCBOVUxMLAotICAgICAgICAgICAgTlVMTCkpOwotICB9Ci0KLSAgaWNhcHMgPSBnc3RfY2Fwc19pbnRlcnNlY3QgKGNhcHMsIHRlbXBsYXRlX2NhcHMpOwotICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gIGNhcHMgPSBpY2FwczsKLQotZG9uZToKLQotICBnc3RfY2Fwc191bnJlZiAodGVtcGxhdGVfY2Fwcyk7Ci0gIGdzdF9jYXBzX3VucmVmIChhbGxvd2VkX2NhcHMpOwotCi0gIEdTVF9MT0dfT0JKRUNUIChwYXlsb2FkLCAicmV0dXJuaW5nIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOwotICByZXR1cm4gY2FwczsKLX0KLQotLyogdGFrZSB0aGUgY3VycmVudGx5IGNvbmZpZ3VyZWQgVlBTLCBTUFMgYW5kIFBQUyBsaXN0cyBhbmQgc2V0IHRoZW0gb24gdGhlIGNhcHMgYXMKLSAqIHNwcm9wLXBhcmFtZXRlci1zZXRzICovCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9ydHBfaDI2NV9wYXlfc2V0X3Zwc19zcHNfcHBzIChHc3RSVFBCYXNlUGF5bG9hZCAqIGJhc2VwYXlsb2FkKQotewotICBHc3RSdHBIMjY1UGF5ICpwYXlsb2FkZXIgPSBHU1RfUlRQX0gyNjVfUEFZIChiYXNlcGF5bG9hZCk7Ci0gIGdjaGFyICpwcm9maWxlOwotICBnY2hhciAqc2V0OwotICBHU3RyaW5nICpzcHJvcHM7Ci0gIGd1aW50IGNvdW50OwotICBnYm9vbGVhbiByZXM7Ci0gIEdzdE1hcEluZm8gbWFwOwotICBndWludCBpOwotCi0gIHNwcm9wcyA9IGdfc3RyaW5nX25ldyAoIiIpOwotICBjb3VudCA9IDA7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAocGF5bG9hZGVyLAotICAgICAgIkVudGVyaW5nIGZ1bmN0aW9uIGdzdF9ydHBfaDI2NV9wYXlfc2V0X3Zwc19zcHNfcHBzIik7Ci0KLSAgLyogYnVpbGQgdGhlIHNwcm9wLXBhcmFtZXRlci1zZXRzICovCi0gIGZvciAoaSA9IDA7IGkgPCBwYXlsb2FkZXItPnZwcy0+bGVuOyBpKyspIHsKLSAgICBHc3RCdWZmZXIgKnZwc19idWYgPQotICAgICAgICBHU1RfQlVGRkVSX0NBU1QgKGdfcHRyX2FycmF5X2luZGV4IChwYXlsb2FkZXItPnZwcywgaSkpOwotCi0gICAgZ3N0X2J1ZmZlcl9tYXAgKHZwc19idWYsICZtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gICAgc2V0ID0gZ19iYXNlNjRfZW5jb2RlIChtYXAuZGF0YSwgbWFwLnNpemUpOwotICAgIGdzdF9idWZmZXJfdW5tYXAgKHZwc19idWYsICZtYXApOwotCi0gICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAoc3Byb3BzLCAiJXMlcyIsIGNvdW50ID8gIiwiIDogIiIsIHNldCk7Ci0gICAgZ19mcmVlIChzZXQpOwotICAgIGNvdW50Kys7Ci0gIH0KLSAgZm9yIChpID0gMDsgaSA8IHBheWxvYWRlci0+c3BzLT5sZW47IGkrKykgewotICAgIEdzdEJ1ZmZlciAqc3BzX2J1ZiA9Ci0gICAgICAgIEdTVF9CVUZGRVJfQ0FTVCAoZ19wdHJfYXJyYXlfaW5kZXggKHBheWxvYWRlci0+c3BzLCBpKSk7Ci0KLSAgICBnc3RfYnVmZmVyX21hcCAoc3BzX2J1ZiwgJm1hcCwgR1NUX01BUF9SRUFEKTsKLSAgICBzZXQgPSBnX2Jhc2U2NF9lbmNvZGUgKG1hcC5kYXRhLCBtYXAuc2l6ZSk7Ci0gICAgZ3N0X2J1ZmZlcl91bm1hcCAoc3BzX2J1ZiwgJm1hcCk7Ci0KLSAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChzcHJvcHMsICIlcyVzIiwgY291bnQgPyAiLCIgOiAiIiwgc2V0KTsKLSAgICBnX2ZyZWUgKHNldCk7Ci0gICAgY291bnQrKzsKLSAgfQotICBmb3IgKGkgPSAwOyBpIDwgcGF5bG9hZGVyLT5wcHMtPmxlbjsgaSsrKSB7Ci0gICAgR3N0QnVmZmVyICpwcHNfYnVmID0KLSAgICAgICAgR1NUX0JVRkZFUl9DQVNUIChnX3B0cl9hcnJheV9pbmRleCAocGF5bG9hZGVyLT5wcHMsIGkpKTsKLQotICAgIGdzdF9idWZmZXJfbWFwIChwcHNfYnVmLCAmbWFwLCBHU1RfTUFQX1JFQUQpOwotICAgIHNldCA9IGdfYmFzZTY0X2VuY29kZSAobWFwLmRhdGEsIG1hcC5zaXplKTsKLSAgICBnc3RfYnVmZmVyX3VubWFwIChwcHNfYnVmLCAmbWFwKTsKLQotICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHNwcm9wcywgIiVzJXMiLCBjb3VudCA/ICIsIiA6ICIiLCBzZXQpOwotICAgIGdfZnJlZSAoc2V0KTsKLSAgICBjb3VudCsrOwotICB9Ci0KLSAgaWYgKEdfTElLRUxZIChjb3VudCkpIHsKLSAgICAvKiBwcm9maWxlIGlzIDI0IGJpdC4gRm9yY2UgaXQgdG8gcmVzcGVjdCB0aGUgbGltaXQgKi8KLSAgICBwcm9maWxlID0gZ19zdHJkdXBfcHJpbnRmICgiJTA2eCIsIHBheWxvYWRlci0+cHJvZmlsZSAmIDB4ZmZmZmZmKTsKLSAgICAvKiBjb21iaW5lIGludG8gb3V0cHV0IGNhcHMgKi8KLSAgICByZXMgPSBnc3RfcnRwX2Jhc2VfcGF5bG9hZF9zZXRfb3V0Y2FwcyAoYmFzZXBheWxvYWQsCi0gICAgICAgICJzcHJvcC1wYXJhbWV0ZXItc2V0cyIsIEdfVFlQRV9TVFJJTkcsIHNwcm9wcy0+c3RyLCBOVUxMKTsKLSAgICBnX2ZyZWUgKHByb2ZpbGUpOwotICB9IGVsc2UgewotICAgIHJlcyA9IGdzdF9ydHBfYmFzZV9wYXlsb2FkX3NldF9vdXRjYXBzIChiYXNlcGF5bG9hZCwgTlVMTCk7Ci0gIH0KLSAgZ19zdHJpbmdfZnJlZSAoc3Byb3BzLCBUUlVFKTsKLQotICByZXR1cm4gcmVzOwotfQotCi0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3J0cF9oMjY1X3BheV9zZXRjYXBzIChHc3RSVFBCYXNlUGF5bG9hZCAqIGJhc2VwYXlsb2FkLCBHc3RDYXBzICogY2FwcykKLXsKLSAgR3N0UnRwSDI2NVBheSAqcnRwaDI2NXBheTsKLSAgR3N0U3RydWN0dXJlICpzdHI7Ci0gIGNvbnN0IEdWYWx1ZSAqdmFsdWU7Ci0gIEdzdE1hcEluZm8gbWFwOwotICBndWludDggKmRhdGE7Ci0gIGdzaXplIHNpemU7Ci0gIEdzdEJ1ZmZlciAqYnVmZmVyOwotICBjb25zdCBnY2hhciAqYWxpZ25tZW50LCAqc3RyZWFtX2Zvcm1hdDsKLSAgZ3VpbnQ4IG51bV9hcnJheXM7Ci0KLSAgcnRwaDI2NXBheSA9IEdTVF9SVFBfSDI2NV9QQVkgKGJhc2VwYXlsb2FkKTsKLQotICBzdHIgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLQotICAvKiB3ZSBjYW4gb25seSBzZXQgdGhlIG91dHB1dCBjYXBzIHdoZW4gd2UgZm91bmQgdGhlIHNwcm9wcyBhbmQgcHJvZmlsZQotICAgKiBOQUxzICovCi0gIGdzdF9ydHBfYmFzZV9wYXlsb2FkX3NldF9vcHRpb25zIChiYXNlcGF5bG9hZCwgInZpZGVvIiwgVFJVRSwgIkgyNjUiLCA5MDAwMCk7Ci0KLSAgcnRwaDI2NXBheS0+YWxpZ25tZW50ID0gR1NUX0gyNjVfQUxJR05NRU5UX1VOS05PV047Ci0gIGFsaWdubWVudCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoc3RyLCAiYWxpZ25tZW50Iik7Ci0gIGlmIChhbGlnbm1lbnQpIHsKLSAgICBpZiAoZ19zdHJfZXF1YWwgKGFsaWdubWVudCwgImF1IikpCi0gICAgICBydHBoMjY1cGF5LT5hbGlnbm1lbnQgPSBHU1RfSDI2NV9BTElHTk1FTlRfQVU7Ci0gICAgaWYgKGdfc3RyX2VxdWFsIChhbGlnbm1lbnQsICJuYWwiKSkKLSAgICAgIHJ0cGgyNjVwYXktPmFsaWdubWVudCA9IEdTVF9IMjY1X0FMSUdOTUVOVF9OQUw7Ci0gIH0KLQotICBydHBoMjY1cGF5LT5zdHJlYW1fZm9ybWF0ID0gR1NUX0gyNjVfU1RSRUFNX0ZPUk1BVF9VTktOT1dOOwotICBzdHJlYW1fZm9ybWF0ID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzdHIsICJzdHJlYW0tZm9ybWF0Iik7Ci0gIGlmIChzdHJlYW1fZm9ybWF0KSB7Ci0gICAgaWYgKGdfc3RyX2VxdWFsIChzdHJlYW1fZm9ybWF0LCAiaHZjMSIpKQotICAgICAgcnRwaDI2NXBheS0+c3RyZWFtX2Zvcm1hdCA9IEdTVF9IMjY1X1NUUkVBTV9GT1JNQVRfSFZDMTsKLSAgICBpZiAoZ19zdHJfZXF1YWwgKHN0cmVhbV9mb3JtYXQsICJoZXYxIikpCi0gICAgICBydHBoMjY1cGF5LT5zdHJlYW1fZm9ybWF0ID0gR1NUX0gyNjVfU1RSRUFNX0ZPUk1BVF9IRVYxOwotICAgIGlmIChnX3N0cl9lcXVhbCAoc3RyZWFtX2Zvcm1hdCwgImJ5dGUtc3RyZWFtIikpCi0gICAgICBydHBoMjY1cGF5LT5zdHJlYW1fZm9ybWF0ID0gR1NUX0gyNjVfU1RSRUFNX0ZPUk1BVF9CWVRFU1RSRUFNOwotICB9Ci0KLSAgLyogcGFja2V0aXplZCBIRVZDIHZpZGVvIGhhcyBhIGNvZGVjX2RhdGEgKi8KLSAgaWYgKCh2YWx1ZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChzdHIsICJjb2RlY19kYXRhIikpKSB7Ci0gICAgZ3VpbnQgbnVtX3ZwcywgbnVtX3NwcywgbnVtX3BwczsKLSAgICBnaW50IGksIGosIG5hbF9zaXplOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgImhhdmUgcGFja2V0aXplZCBoMjY1Iik7Ci0KLSAgICBidWZmZXIgPSBnc3RfdmFsdWVfZ2V0X2J1ZmZlciAodmFsdWUpOwotCi0gICAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZmZlciwgJm1hcCwgR1NUX01BUF9SRUFEKTsKLSAgICBkYXRhID0gbWFwLmRhdGE7Ci0gICAgc2l6ZSA9IG1hcC5zaXplOwotCi0gICAgLyogcGFyc2UgdGhlIGhldmNDIGRhdGEgKi8KLSAgICBpZiAoc2l6ZSA8IDIzKQotICAgICAgZ290byBoZXZjY190b29fc21hbGw7Ci0gICAgLyogSEVWQ0RlY29kZXJDb25maWd1cmF0aW9uVmVyc2lvbiAobXVzdCBiZSAxKSAqLwotICAgIGlmIChkYXRhWzBdICE9IDEpCi0gICAgICBnb3RvIHdyb25nX3ZlcnNpb247Ci0KLSAgICAvKiBwcm9maWxlX3NwYWNlIHwgdGllcl9mbGFnIHwgcHJvZmlsZV9pZGMgKi8KLSAgICBydHBoMjY1cGF5LT5wcm9maWxlID0gZGF0YVsxXTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAicHJvZmlsZSAlMDZ4IiwgcnRwaDI2NXBheS0+cHJvZmlsZSk7Ci0KLSAgICAvKiBwcm9maWxlX2NvbXBhdGliaWxpdHlfZmxhZ3MgKi8KLSAgICBmb3IgKGkgPSAyOyBpIDwgNjsgaSsrKSB7Ci0gICAgICBmb3IgKGogPSA3OyBqID49IDA7IGotLSkgewotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAicHJvZmlsZV9jb21wYXRpYmlsaXR5X2ZsYWcgJTA2eCIsCi0gICAgICAgICAgICAoZGF0YVtpXSA+PiBqKSAmIDEpOwotICAgICAgfQotICAgIH0KLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJwcm9ncmVzc2l2ZV9zb3VyY2VfZmxhZyAlMDZ4IiwKLSAgICAgICAgKGRhdGFbNl0gPj4gNykgJiAxKTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAiaW50ZXJsYWNlZF9zb3VyY2VfZmxhZyAlMDZ4IiwKLSAgICAgICAgKGRhdGFbNl0gPj4gNikgJiAxKTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAibm9uX3BhY2tlZF9jb25zdHJhaW50X2ZsYWcgJTA2eCIsCi0gICAgICAgIChkYXRhWzZdID4+IDUpICYgMSk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgImZyYW1lX29ubHlfY29uc3RyYWludF9mbGFnICUwNngiLAotICAgICAgICAoZGF0YVs2XSA+PiA0KSAmIDEpOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgImxldmVsX2lkYyAlMDZ4IiwgZGF0YVsxMl0pOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgIm1pbl9zcGF0aWFsX3NlZ21lbnRhdGlvbl9pZGMgJTA2eCIsCi0gICAgICAgICgoZGF0YVsxM10gXiAweGYwKSA8PCA4KSArIGRhdGFbMTRdKTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAicGFycmFsbGVsaXNtVHlwZSAlMDZ4IChpZ25vcmVkIGJ5IHBhbG9hZGVyKSIsCi0gICAgICAgIGRhdGFbMTVdKTsKLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJzcHNfY2hyb21hX2Zvcm1hdF9pZGMgJTA2eCIsCi0gICAgICAgIGRhdGFbMTZdIF4gMHhmYyk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgImJpdF9kZXB0aF9sdW1hX21pbnVzOCAlMDZ4IiwKLSAgICAgICAgZGF0YVsxN10gXiAweGY4KTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAiYml0X2RlcHRoX2Nocm9tYV9taW51czggJTA2eCIsCi0gICAgICAgIGRhdGFbMThdIF4gMHhmOCk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgImF2Z0ZyYW1lUmF0ZSAlMDZ4IiwgZGF0YVsxOV0pOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJhdmdGcmFtZVJhdGUgJTA2eCIsIGRhdGFbMjBdKTsKLQotICAgIC8qIGNvbnN0RnJhbWVSYXRlKDIgYml0cyk6IDAsIHN0cmVhbSBtYXkgb3IgbWF5IG5vdCBiZSBvZiBjb25zdGFudCBmcmFtZXJhdGUKLSAgICAgKiBudW1UZW1wb3JhbExheWVycyAoMyBiaXRzKTogbnVtYmVyIG9mIHRlbXBvcmFsIGxheWVycywgdmFsdWUgZnJvbSBTUFMKLSAgICAgKiBUZW1wb3JhbElkTmVzdGVkICgxIGJpdCk6IHNwc190ZW1wb3JhbF9pZF9uZXN0aW5nX2ZsYWcgZnJvbSBTUFMKLSAgICAgKiBsZW5ndGhTaXplTWludXNPbmUgKDIgYml0cyk6IHBsdXMgMSBpbmRpY2F0ZXMgdGhlIGxlbmd0aCBvZiB0aGUgTkFMVW5pdExlbmd0aCAqLwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJjb25zdEZyYW1lUmF0ZSAlMDZ4IiwKLSAgICAgICAgKGRhdGFbMjFdID4+IDYpICYgMHgwMyk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgIm51bVRlbXBvcmFsTGF5ZXJzICUwNngiLAotICAgICAgICAoZGF0YVsyMV0gPj4gMykgJiAweDA3KTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAidGVtcG9yYWxfaWRfbmVzdGluZ19mbGFnICUwNngiLAotICAgICAgICAoZGF0YVsyMV0gPj4gMikgJiAweDAxKTsKLQotICAgIHJ0cGgyNjVwYXktPm5hbF9sZW5ndGhfc2l6ZSA9IChkYXRhWzIxXSAmIDB4MykgKyAxOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJuYWwgbGVuZ3RoICV1IiwgcnRwaDI2NXBheS0+bmFsX2xlbmd0aF9zaXplKTsKLQotICAgIG51bV9hcnJheXMgPSBHU1RfUkVBRF9VSU5UOCAoZGF0YSArIDIyKTsKLQotICAgIGRhdGEgKz0gMjM7Ci0gICAgc2l6ZSAtPSAyMzsKLQotICAgIGlmIChudW1fYXJyYXlzID4gMCkgewotICAgICAgaWYgKGRhdGFbMF0gPT0gKDB4MDAgfCAweDIwKSkgeyAgIC8qIFZQUyAqLwotCi0gICAgICAgIGRhdGErKzsKLSAgICAgICAgbnVtX3ZwcyA9IGRhdGFbMF0gPDwgOCB8IGRhdGFbMV07Ci0gICAgICAgIGRhdGEgKz0gMjsKLSAgICAgICAgc2l6ZSAtPSAyOwotCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fdnBzOyBpKyspIHsKLQotICAgICAgICAgIEdzdEJ1ZmZlciAqdnBzX2J1ZjsKLQotICAgICAgICAgIGlmIChzaXplIDwgMikKLSAgICAgICAgICAgIGdvdG8gaGV2Y2NfZXJyb3I7Ci0KLSAgICAgICAgICBuYWxfc2l6ZSA9IChkYXRhWzBdIDw8IDgpIHwgZGF0YVsxXTsKLSAgICAgICAgICBkYXRhICs9IDI7Ci0gICAgICAgICAgc2l6ZSAtPSAyOwotCi0gICAgICAgICAgR1NUX0xPR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJWUFMgJWQgc2l6ZSAlZCIsIGksIG5hbF9zaXplKTsKLQotICAgICAgICAgIGlmIChzaXplIDwgbmFsX3NpemUpCi0gICAgICAgICAgICBnb3RvIGhldmNjX2Vycm9yOwotCi0gICAgICAgICAgLyogbWFrZSBhIGJ1ZmZlciBvdXQgb2YgaXQgYW5kIGFkZCB0byBWUFMgbGlzdCAqLwotICAgICAgICAgIHZwc19idWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKG5hbF9zaXplKTsKLSAgICAgICAgICBnc3RfYnVmZmVyX2ZpbGwgKHZwc19idWYsIDAsIGRhdGEsIG5hbF9zaXplKTsKLSAgICAgICAgICBnc3RfcnRwX2gyNjVfYWRkX3Zwc19zcHNfcHBzIChHU1RfRUxFTUVOVCAocnRwaDI2NXBheSksCi0gICAgICAgICAgICAgIHJ0cGgyNjVwYXktPnZwcywgcnRwaDI2NXBheS0+c3BzLCBydHBoMjY1cGF5LT5wcHMsIHZwc19idWYpOwotICAgICAgICAgIGRhdGEgKz0gbmFsX3NpemU7Ci0gICAgICAgICAgc2l6ZSAtPSBuYWxfc2l6ZTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAtLW51bV9hcnJheXM7Ci0gICAgfQotCi0gICAgaWYgKG51bV9hcnJheXMgPiAwKSB7Ci0gICAgICBpZiAoZGF0YVswXSA9PSAoMHgwMCB8IDB4MjEpKSB7ICAgLyogU1BTICovCi0KLSAgICAgICAgZGF0YSsrOwotICAgICAgICBudW1fc3BzID0gZGF0YVswXSA8PCA4IHwgZGF0YVsxXTsKLSAgICAgICAgZGF0YSArPSAyOwotICAgICAgICBzaXplIC09IDI7Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9zcHM7IGkrKykgewotCi0gICAgICAgICAgR3N0QnVmZmVyICpzcHNfYnVmOwotCi0gICAgICAgICAgaWYgKHNpemUgPCAyKQotICAgICAgICAgICAgZ290byBoZXZjY19lcnJvcjsKLQotICAgICAgICAgIG5hbF9zaXplID0gKGRhdGFbMF0gPDwgOCkgfCBkYXRhWzFdOwotICAgICAgICAgIGRhdGEgKz0gMjsKLSAgICAgICAgICBzaXplIC09IDI7Ci0KLSAgICAgICAgICBHU1RfTE9HX09CSkVDVCAocnRwaDI2NXBheSwgIlNQUyAlZCBzaXplICVkIiwgaSwgbmFsX3NpemUpOwotCi0gICAgICAgICAgaWYgKHNpemUgPCBuYWxfc2l6ZSkKLSAgICAgICAgICAgIGdvdG8gaGV2Y2NfZXJyb3I7Ci0KLSAgICAgICAgICAvKiBtYWtlIGEgYnVmZmVyIG91dCBvZiBpdCBhbmQgYWRkIHRvIFNQUyBsaXN0ICovCi0gICAgICAgICAgc3BzX2J1ZiA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAobmFsX3NpemUpOwotICAgICAgICAgIGdzdF9idWZmZXJfZmlsbCAoc3BzX2J1ZiwgMCwgZGF0YSwgbmFsX3NpemUpOwotICAgICAgICAgIGdzdF9ydHBfaDI2NV9hZGRfdnBzX3Nwc19wcHMgKEdTVF9FTEVNRU5UIChydHBoMjY1cGF5KSwKLSAgICAgICAgICAgICAgcnRwaDI2NXBheS0+dnBzLCBydHBoMjY1cGF5LT5zcHMsIHJ0cGgyNjVwYXktPnBwcywgc3BzX2J1Zik7Ci0gICAgICAgICAgZGF0YSArPSBuYWxfc2l6ZTsKLSAgICAgICAgICBzaXplIC09IG5hbF9zaXplOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIC0tbnVtX2FycmF5czsKLSAgICB9Ci0KLSAgICBpZiAobnVtX2FycmF5cyA+IDApIHsKLSAgICAgIGlmIChkYXRhWzBdID09ICgweDAwIHwgMHgyMikpIHsgICAvKiBQUFMgKi8KLQotICAgICAgICBkYXRhKys7Ci0gICAgICAgIG51bV9wcHMgPSBkYXRhWzBdIDw8IDggfCBkYXRhWzFdOwotICAgICAgICBkYXRhICs9IDI7Ci0gICAgICAgIHNpemUgLT0gMjsKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3BwczsgaSsrKSB7Ci0KLSAgICAgICAgICBHc3RCdWZmZXIgKnBwc19idWY7Ci0KLSAgICAgICAgICBpZiAoc2l6ZSA8IDIpCi0gICAgICAgICAgICBnb3RvIGhldmNjX2Vycm9yOwotCi0gICAgICAgICAgbmFsX3NpemUgPSAoZGF0YVswXSA8PCA4KSB8IGRhdGFbMV07Ci0gICAgICAgICAgZGF0YSArPSAyOwotICAgICAgICAgIHNpemUgLT0gMjsKLQotICAgICAgICAgIEdTVF9MT0dfT0JKRUNUIChydHBoMjY1cGF5LCAiUFBTICVkIHNpemUgJWQiLCBpLCBuYWxfc2l6ZSk7Ci0KLSAgICAgICAgICBpZiAoc2l6ZSA8IG5hbF9zaXplKQotICAgICAgICAgICAgZ290byBoZXZjY19lcnJvcjsKLQotICAgICAgICAgIC8qIG1ha2UgYSBidWZmZXIgb3V0IG9mIGl0IGFuZCBhZGQgdG8gUFBTIGxpc3QgKi8KLSAgICAgICAgICBwcHNfYnVmID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChuYWxfc2l6ZSk7Ci0gICAgICAgICAgZ3N0X2J1ZmZlcl9maWxsIChwcHNfYnVmLCAwLCBkYXRhLCBuYWxfc2l6ZSk7Ci0gICAgICAgICAgZ3N0X3J0cF9oMjY1X2FkZF92cHNfc3BzX3BwcyAoR1NUX0VMRU1FTlQgKHJ0cGgyNjVwYXkpLAotICAgICAgICAgICAgICBydHBoMjY1cGF5LT52cHMsIHJ0cGgyNjVwYXktPnNwcywgcnRwaDI2NXBheS0+cHBzLCBwcHNfYnVmKTsKLSAgICAgICAgICBkYXRhICs9IG5hbF9zaXplOwotICAgICAgICAgIHNpemUgLT0gbmFsX3NpemU7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgLS1udW1fYXJyYXlzOwotICAgIH0KLQotICAgIC8qIGFuZCB1cGRhdGUgdGhlIGNhcHMgd2l0aCB0aGUgY29sbGVjdGVkIGRhdGEgKi8KLSAgICBpZiAoIWdzdF9ydHBfaDI2NV9wYXlfc2V0X3Zwc19zcHNfcHBzIChiYXNlcGF5bG9hZCkpCi0gICAgICBnb3RvIHNldF92cHNfc3BzX3Bwc19mYWlsZWQ7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAiQ2FwcyBoYXZlIGJlZW4gc2V0Iik7Ci0KLSAgICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZtYXApOwotICB9IGVsc2UgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJoYXZlIGJ5dGVzdHJlYW0gaDI2NSIpOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci0KLWhldmNjX3Rvb19zbWFsbDoKLSAgewotICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHJ0cGgyNjVwYXksICJoZXZjQyBzaXplICUiIEdfR1NJWkVfRk9STUFUICIgPCA3Iiwgc2l6ZSk7Ci0gICAgZ290byBlcnJvcjsKLSAgfQotd3JvbmdfdmVyc2lvbjoKLSAgewotICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHJ0cGgyNjVwYXksICJ3cm9uZyBoZXZjQyB2ZXJzaW9uIik7Ci0gICAgZ290byBlcnJvcjsKLSAgfQotaGV2Y2NfZXJyb3I6Ci0gIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUIChydHBoMjY1cGF5LCAiaGV2Y0MgdG9vIHNtYWxsICIpOwotICAgIGdvdG8gZXJyb3I7Ci0gIH0KLXNldF92cHNfc3BzX3Bwc19mYWlsZWQ6Ci0gIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUIChydHBoMjY1cGF5LCAiZmFpbGVkIHRvIHNldCB2cHMvc3BzL3BwcyIpOwotICAgIGdvdG8gZXJyb3I7Ci0gIH0KLWVycm9yOgotICB7Ci0gICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmZmVyLCAmbWFwKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfaDI2NV9wYXlfcGFyc2Vfc3Byb3BfcGFyYW1ldGVyX3NldHMgKEdzdFJ0cEgyNjVQYXkgKiBydHBoMjY1cGF5KQotewotICBjb25zdCBnY2hhciAqcHM7Ci0gIGdjaGFyICoqcGFyYW1zOwotICBndWludCBsZW47Ci0gIGdpbnQgaTsKLSAgR3N0QnVmZmVyICpidWY7Ci0KLSAgcHMgPSBydHBoMjY1cGF5LT5zcHJvcF9wYXJhbWV0ZXJfc2V0czsKLSAgaWYgKHBzID09IE5VTEwpCi0gICAgcmV0dXJuOwotCi0gIGdzdF9ydHBfaDI2NV9wYXlfY2xlYXJfdnBzX3Nwc19wcHMgKHJ0cGgyNjVwYXkpOwotCi0gIHBhcmFtcyA9IGdfc3Ryc3BsaXQgKHBzLCAiLCIsIDApOwotICBsZW4gPSBnX3N0cnZfbGVuZ3RoIChwYXJhbXMpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJ3ZSBoYXZlICVkIHBhcmFtcyIsIGxlbik7Ci0KLSAgZm9yIChpID0gMDsgcGFyYW1zW2ldOyBpKyspIHsKLSAgICBnc2l6ZSBuYWxfbGVuOwotICAgIEdzdE1hcEluZm8gbWFwOwotICAgIGd1aW50OCAqbmFscDsKLSAgICBndWludCBzYXZlID0gMDsKLSAgICBnaW50IHN0YXRlID0gMDsKLQotICAgIG5hbF9sZW4gPSBzdHJsZW4gKHBhcmFtc1tpXSk7Ci0gICAgYnVmID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChuYWxfbGVuKTsKLQotICAgIGdzdF9idWZmZXJfbWFwIChidWYsICZtYXAsIEdTVF9NQVBfV1JJVEUpOwotICAgIG5hbHAgPSBtYXAuZGF0YTsKLSAgICBuYWxfbGVuID0gZ19iYXNlNjRfZGVjb2RlX3N0ZXAgKHBhcmFtc1tpXSwgbmFsX2xlbiwgbmFscCwgJnN0YXRlLCAmc2F2ZSk7Ci0gICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmbWFwKTsKLSAgICBnc3RfYnVmZmVyX3Jlc2l6ZSAoYnVmLCAwLCBuYWxfbGVuKTsKLQotICAgIGlmICghbmFsX2xlbikgewotICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIGdzdF9ydHBfaDI2NV9hZGRfdnBzX3Nwc19wcHMgKEdTVF9FTEVNRU5UIChydHBoMjY1cGF5KSwgcnRwaDI2NXBheS0+dnBzLAotICAgICAgICBydHBoMjY1cGF5LT5zcHMsIHJ0cGgyNjVwYXktPnBwcywgYnVmKTsKLSAgfQotICBnX3N0cmZyZWV2IChwYXJhbXMpOwotfQotCi1zdGF0aWMgZ3VpbnQKLW5leHRfc3RhcnRfY29kZSAoY29uc3QgZ3VpbnQ4ICogZGF0YSwgZ3VpbnQgc2l6ZSkKLXsKLSAgLyogQm95ZXItTW9vcmUgc3RyaW5nIG1hdGNoaW5nIGFsZ29yaXRobSwgaW4gYSBkZWdlbmVyYXRpdmUKLSAgICogc2Vuc2UgYmVjYXVzZSBvdXIgc2VhcmNoICdhbHBoYWJldCcgaXMgYmluYXJ5IC0gMCAmIDEgb25seS4KLSAgICogVGhpcyBhbGxvdyB1cyB0byBzaW1wbGlmeSB0aGUgZ2VuZXJhbCBCTSBhbGdvcml0aG0gdG8gYSB2ZXJ5Ci0gICAqIHNpbXBsZSBmb3JtLiAqLwotICAvKiBhc3N1bWUgMSBpcyBpbiB0aGUgM3RoIGJ5dGUgKi8KLSAgZ3VpbnQgb2Zmc2V0ID0gMjsKLQotICB3aGlsZSAob2Zmc2V0IDwgc2l6ZSkgewotICAgIGlmICgxID09IGRhdGFbb2Zmc2V0XSkgewotICAgICAgdW5zaWduZWQgaW50IHNoaWZ0ID0gb2Zmc2V0OwotCi0gICAgICBpZiAoMCA9PSBkYXRhWy0tc2hpZnRdKSB7Ci0gICAgICAgIGlmICgwID09IGRhdGFbLS1zaGlmdF0pIHsKLSAgICAgICAgICByZXR1cm4gc2hpZnQ7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIC8qIFRoZSBqdW1wIGlzIGFsd2F5cyAzIGJlY2F1c2Ugb2YgdGhlIDEgcHJldmlvdXNseSBtYXRjaGVkLgotICAgICAgICogQWxsIHRoZSAwJ3MgbXVzdCBiZSBhZnRlciB0aGlzICcxJyBtYXRjaGVkIGF0IG9mZnNldCAqLwotICAgICAgb2Zmc2V0ICs9IDM7Ci0gICAgfSBlbHNlIGlmICgwID09IGRhdGFbb2Zmc2V0XSkgewotICAgICAgLyogbWF5YmUgbmV4dCBieXRlIGlzIDE/ICovCi0gICAgICBvZmZzZXQrKzsKLSAgICB9IGVsc2UgewotICAgICAgLyogY2FuIGp1bXAgMyBieXRlcyBmb3J3YXJkICovCi0gICAgICBvZmZzZXQgKz0gMzsKLSAgICB9Ci0gICAgLyogYXQgZWFjaCBpdGVyYXRpb24sIHdlIHJlc2NhbiBpbiBhIGJhY2t3YXJkIG1hbm5lciB1bnRpbAotICAgICAqIHdlIG1hdGNoIDAuMC4xIGluIHJldmVyc2Ugb3JkZXIuIFNpbmNlIG91ciBzZWFyY2ggc3RyaW5nCi0gICAgICogaGFzIG9ubHkgMiAnYWxwYWJldHMnIChpLmUuIDAgJiAxKSwgd2Uga25vdyB0aGF0IGFueQotICAgICAqIG1pc21hdGNoIHdpbGwgZm9yY2UgdXMgdG8gc2hpZnQgYSBmaXhlZCBudW1iZXIgb2Ygc3RlcHMgKi8KLSAgfQotICBHU1RfREVCVUcgKCJDYW5ub3QgZmluZCBuZXh0IE5BTCBzdGFydCBjb2RlLiByZXR1cm5pbmcgJXUiLCBzaXplKTsKLQotICByZXR1cm4gc2l6ZTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfcnRwX2gyNjVfcGF5X2RlY29kZV9uYWwgKEdzdFJ0cEgyNjVQYXkgKiBwYXlsb2FkZXIsCi0gICAgY29uc3QgZ3VpbnQ4ICogZGF0YSwgZ3VpbnQgc2l6ZSwgR3N0Q2xvY2tUaW1lIGR0cywgR3N0Q2xvY2tUaW1lIHB0cykKLXsKLSAgZ3VpbnQ4IGhlYWRlciwgdHlwZTsKLSAgZ2Jvb2xlYW4gdXBkYXRlZDsKLQotICAvKiBkZWZhdWx0IGlzIG5vIHVwZGF0ZSAqLwotICB1cGRhdGVkID0gRkFMU0U7Ci0KLSAgR1NUX0RFQlVHICgiTkFMIHBheWxvYWQgbGVuPSV1Iiwgc2l6ZSk7Ci0KLSAgaGVhZGVyID0gZGF0YVswXTsKLSAgdHlwZSA9IGhlYWRlciAmIDB4M2Y7Ci0KLSAgLyogV2UgcmVjb3JkIHRoZSB0aW1lc3RhbXAgb2YgdGhlIGxhc3QgU1BTL1BQUyBzbwotICAgKiB0aGF0IHdlIGNhbiBpbnNlcnQgdGhlbSBhdCByZWd1bGFyIGludGVydmFscyBhbmQgd2hlbiBuZWVkZWQuICovCi0gIGlmIChHU1RfSDI2NV9OQUxfVlBTID09IHR5cGUgfHwgR1NUX0gyNjVfTkFMX1NQUyA9PSB0eXBlCi0gICAgICB8fCBHU1RfSDI2NV9OQUxfUFBTID09IHR5cGUpIHsKLSAgICBHc3RCdWZmZXIgKm5hbDsKLQotICAgIC8qIGVuY29kZSB0aGUgZW50aXJlIE5BTCBpbiBiYXNlNjQgKi8KLSAgICBHU1RfREVCVUcgKCJGb3VuZCAlcyAleCAleCAleCBMZW49JXUiLAotICAgICAgICB0eXBlID09IEdTVF9IMjY1X05BTF9WUFMgPyAiVlBTIiA6IHR5cGUgPT0KLSAgICAgICAgR1NUX0gyNjVfTkFMX1NQUyA/ICJTUFMiIDogIlBQUyIsIChoZWFkZXIgPj4gNyksIChoZWFkZXIgPj4gNSkgJiAzLAotICAgICAgICB0eXBlLCBzaXplKTsKLQotICAgIG5hbCA9IGdzdF9idWZmZXJfbmV3X2FsbG9jYXRlIChOVUxMLCBzaXplLCBOVUxMKTsKLSAgICBnc3RfYnVmZmVyX2ZpbGwgKG5hbCwgMCwgZGF0YSwgc2l6ZSk7Ci0KLSAgICB1cGRhdGVkID0gZ3N0X3J0cF9oMjY1X2FkZF92cHNfc3BzX3BwcyAoR1NUX0VMRU1FTlQgKHBheWxvYWRlciksCi0gICAgICAgIHBheWxvYWRlci0+dnBzLCBwYXlsb2FkZXItPnNwcywgcGF5bG9hZGVyLT5wcHMsIG5hbCk7Ci0KLSAgICAvKiByZW1lbWJlciB3aGVuIHdlIGxhc3Qgc2F3IFZQUyAqLwotICAgIGlmICh1cGRhdGVkICYmIHB0cyAhPSAtMSkKLSAgICAgIHBheWxvYWRlci0+bGFzdF92cHNfc3BzX3BwcyA9IHB0czsKLSAgfSBlbHNlIHsKLSAgICBHU1RfREVCVUcgKCJOQUw6ICV4ICV4ICV4IExlbiA9ICV1IiwgKGhlYWRlciA+PiA3KSwKLSAgICAgICAgKGhlYWRlciA+PiA1KSAmIDMsIHR5cGUsIHNpemUpOwotICB9Ci0KLSAgcmV0dXJuIHVwZGF0ZWQ7Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfcnRwX2gyNjVfcGF5X3BheWxvYWRfbmFsIChHc3RSVFBCYXNlUGF5bG9hZCAqIGJhc2VwYXlsb2FkLAotICAgIEdzdEJ1ZmZlciAqIHBheWJ1ZiwgR3N0Q2xvY2tUaW1lIGR0cywgR3N0Q2xvY2tUaW1lIHB0cywgZ2Jvb2xlYW4gZW5kX29mX2F1KTsKLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9ydHBfaDI2NV9wYXlfc2VuZF92cHNfc3BzX3BwcyAoR3N0UlRQQmFzZVBheWxvYWQgKiBiYXNlcGF5bG9hZCwKLSAgICBHc3RSdHBIMjY1UGF5ICogcnRwaDI2NXBheSwgR3N0Q2xvY2tUaW1lIGR0cywgR3N0Q2xvY2tUaW1lIHB0cykKLXsKLSAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKLSAgZ2Jvb2xlYW4gc2VudF9hbGxfdnBzX3Nwc19wcHMgPSBUUlVFOwotICBndWludCBpOwotCi0gIGZvciAoaSA9IDA7IGkgPCBydHBoMjY1cGF5LT52cHMtPmxlbjsgaSsrKSB7Ci0gICAgR3N0QnVmZmVyICp2cHNfYnVmID0KLSAgICAgICAgR1NUX0JVRkZFUl9DQVNUIChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NXBheS0+dnBzLCBpKSk7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAiaW5zZXJ0aW5nIFZQUyBpbiB0aGUgc3RyZWFtIik7Ci0gICAgLyogcmVzZW5kIFZQUyAqLwotICAgIHJldCA9IGdzdF9ydHBfaDI2NV9wYXlfcGF5bG9hZF9uYWwgKGJhc2VwYXlsb2FkLCBnc3RfYnVmZmVyX3JlZiAodnBzX2J1ZiksCi0gICAgICAgIGR0cywgcHRzLCBGQUxTRSk7Ci0gICAgLyogTm90IGNyaXRpY2FsIGhlcmU7IGJ1dCB0aHJvdyBhIHdhcm5pbmcgKi8KLSAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKSB7Ci0gICAgICBzZW50X2FsbF92cHNfc3BzX3BwcyA9IEZBTFNFOwotICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChiYXNlcGF5bG9hZCwgIlByb2JsZW0gcHVzaGluZyBWUFMiKTsKLSAgICB9Ci0gIH0KLSAgZm9yIChpID0gMDsgaSA8IHJ0cGgyNjVwYXktPnNwcy0+bGVuOyBpKyspIHsKLSAgICBHc3RCdWZmZXIgKnNwc19idWYgPQotICAgICAgICBHU1RfQlVGRkVSX0NBU1QgKGdfcHRyX2FycmF5X2luZGV4IChydHBoMjY1cGF5LT5zcHMsIGkpKTsKLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJpbnNlcnRpbmcgU1BTIGluIHRoZSBzdHJlYW0iKTsKLSAgICAvKiByZXNlbmQgU1BTICovCi0gICAgcmV0ID0gZ3N0X3J0cF9oMjY1X3BheV9wYXlsb2FkX25hbCAoYmFzZXBheWxvYWQsIGdzdF9idWZmZXJfcmVmIChzcHNfYnVmKSwKLSAgICAgICAgZHRzLCBwdHMsIEZBTFNFKTsKLSAgICAvKiBOb3QgY3JpdGljYWwgaGVyZTsgYnV0IHRocm93IGEgd2FybmluZyAqLwotICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spIHsKLSAgICAgIHNlbnRfYWxsX3Zwc19zcHNfcHBzID0gRkFMU0U7Ci0gICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGJhc2VwYXlsb2FkLCAiUHJvYmxlbSBwdXNoaW5nIFNQUyIpOwotICAgIH0KLSAgfQotICBmb3IgKGkgPSAwOyBpIDwgcnRwaDI2NXBheS0+cHBzLT5sZW47IGkrKykgewotICAgIEdzdEJ1ZmZlciAqcHBzX2J1ZiA9Ci0gICAgICAgIEdTVF9CVUZGRVJfQ0FTVCAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVwYXktPnBwcywgaSkpOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgImluc2VydGluZyBQUFMgaW4gdGhlIHN0cmVhbSIpOwotICAgIC8qIHJlc2VuZCBQUFMgKi8KLSAgICByZXQgPSBnc3RfcnRwX2gyNjVfcGF5X3BheWxvYWRfbmFsIChiYXNlcGF5bG9hZCwgZ3N0X2J1ZmZlcl9yZWYgKHBwc19idWYpLAotICAgICAgICBkdHMsIHB0cywgRkFMU0UpOwotICAgIC8qIE5vdCBjcml0aWNhbCBoZXJlOyBidXQgdGhyb3cgYSB3YXJuaW5nICovCi0gICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgewotICAgICAgc2VudF9hbGxfdnBzX3Nwc19wcHMgPSBGQUxTRTsKLSAgICAgIEdTVF9XQVJOSU5HICgiUHJvYmxlbSBwdXNoaW5nIFBQUyIpOwotICAgIH0KLSAgfQotCi0gIGlmIChwdHMgIT0gLTEgJiYgc2VudF9hbGxfdnBzX3Nwc19wcHMpCi0gICAgcnRwaDI2NXBheS0+bGFzdF92cHNfc3BzX3BwcyA9IHB0czsKLQotICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X3J0cF9oMjY1X3BheV9wYXlsb2FkX25hbCAoR3N0UlRQQmFzZVBheWxvYWQgKiBiYXNlcGF5bG9hZCwKLSAgICBHc3RCdWZmZXIgKiBwYXlidWYsIEdzdENsb2NrVGltZSBkdHMsIEdzdENsb2NrVGltZSBwdHMsIGdib29sZWFuIGVuZF9vZl9hdSkKLXsKLSAgR3N0UnRwSDI2NVBheSAqcnRwaDI2NXBheTsKLSAgR3N0Rmxvd1JldHVybiByZXQ7Ci0gIGd1aW50OCBuYWxIZWFkZXJbMl07Ci0gIGd1aW50OCBuYWxUeXBlOwotICBndWludCBwYWNrZXRfbGVuLCBwYXlsb2FkX2xlbiwgbXR1OwotICBHc3RCdWZmZXIgKm91dGJ1ZjsKLSAgZ3VpbnQ4ICpwYXlsb2FkOwotICBHc3RCdWZmZXJMaXN0ICpsaXN0ID0gTlVMTDsKLSAgZ2Jvb2xlYW4gc2VuZF92cHNfc3BzX3BwczsKLSAgR3N0UlRQQnVmZmVyIHJ0cCA9IHsgTlVMTCB9OwotICBndWludCBzaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAocGF5YnVmKTsKLQotICBydHBoMjY1cGF5ID0gR1NUX1JUUF9IMjY1X1BBWSAoYmFzZXBheWxvYWQpOwotICBtdHUgPSBHU1RfUlRQX0JBU0VfUEFZTE9BRF9NVFUgKHJ0cGgyNjVwYXkpOwotCi0gIGdzdF9idWZmZXJfZXh0cmFjdCAocGF5YnVmLCAwLCBuYWxIZWFkZXIsIDIpOwotICBuYWxUeXBlID0gKG5hbEhlYWRlclswXSA+PiAxKSAmIDB4M2Y7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgIlByb2Nlc3NpbmcgQnVmZmVyIHdpdGggTkFMIFRZUEU9JWQiLCBuYWxUeXBlKTsKLQotICAvKiBzaG91bGQgc2V0IHNyYyBjYXBzIGJlZm9yZSBwdXNoaW5nIHN0dWZmLAotICAgKiBhbmQgaWYgd2UgZGlkIG5vdCBzZWUgZW5vdWdoIFZQUy9TUFMvUFBTLCB0aGF0IG1heSBub3QgYmUgdGhlIGNhc2UgKi8KLSAgaWYgKEdfVU5MSUtFTFkgKCFnc3RfcGFkX2hhc19jdXJyZW50X2NhcHMgKEdTVF9SVFBfQkFTRV9QQVlMT0FEX1NSQ1BBRAotICAgICAgICAgICAgICAoYmFzZXBheWxvYWQpKSkpCi0gICAgZ3N0X3J0cF9oMjY1X3BheV9zZXRfdnBzX3Nwc19wcHMgKGJhc2VwYXlsb2FkKTsKLQotICBzZW5kX3Zwc19zcHNfcHBzID0gRkFMU0U7Ci0KLSAgLyogY2hlY2sgaWYgd2UgbmVlZCB0byBlbWl0IGFuIFZQUy9TUFMvUFBTIG5vdyAqLwotICBpZiAoKChuYWxUeXBlID09IEdTVF9IMjY1X05BTF9TTElDRV9UUkFJTF9OKQotICAgICAgICAgIHx8IChuYWxUeXBlID09IEdTVF9IMjY1X05BTF9TTElDRV9UUkFJTF9SKQotICAgICAgICAgIHx8IChuYWxUeXBlID09IEdTVF9IMjY1X05BTF9TTElDRV9UU0FfTikKLSAgICAgICAgICB8fCAobmFsVHlwZSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfVFNBX1IpCi0gICAgICAgICAgfHwgKG5hbFR5cGUgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX1NUU0FfTikKLSAgICAgICAgICB8fCAobmFsVHlwZSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfU1RTQV9SKQotICAgICAgICAgIHx8IChuYWxUeXBlID09IEdTVF9IMjY1X05BTF9TTElDRV9SQVNMX04pCi0gICAgICAgICAgfHwgKG5hbFR5cGUgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX1JBU0xfUikKLSAgICAgICAgICB8fCAobmFsVHlwZSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfQkxBX1dfTFApCi0gICAgICAgICAgfHwgKG5hbFR5cGUgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX0JMQV9XX1JBREwpCi0gICAgICAgICAgfHwgKG5hbFR5cGUgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX0JMQV9OX0xQKQotICAgICAgICAgIHx8IChuYWxUeXBlID09IEdTVF9IMjY1X05BTF9TTElDRV9JRFJfV19SQURMKQotICAgICAgICAgIHx8IChuYWxUeXBlID09IEdTVF9IMjY1X05BTF9TTElDRV9JRFJfTl9MUCkKLSAgICAgICAgICB8fCAobmFsVHlwZSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfQ1JBX05VVCkpCi0gICAgICAmJiBydHBoMjY1cGF5LT52cHNfc3BzX3Bwc19pbnRlcnZhbCA+IDApIHsKLQotICAgIGlmIChydHBoMjY1cGF5LT5sYXN0X3Zwc19zcHNfcHBzICE9IC0xKSB7Ci0gICAgICBndWludDY0IGRpZmY7Ci0KLSAgICAgIEdTVF9MT0dfT0JKRUNUIChydHBoMjY1cGF5LAotICAgICAgICAgICJub3cgJSIgR1NUX1RJTUVfRk9STUFUICIsIGxhc3QgVlBTL1NQUy9QUFMgJSIgR1NUX1RJTUVfRk9STUFULAotICAgICAgICAgIEdTVF9USU1FX0FSR1MgKHB0cyksIEdTVF9USU1FX0FSR1MgKHJ0cGgyNjVwYXktPmxhc3RfdnBzX3Nwc19wcHMpKTsKLQotICAgICAgLyogY2FsY3VsYXRlIGRpZmYgYmV0d2VlbiBsYXN0IFNQUy9QUFMgaW4gbWlsbGlzZWNvbmRzICovCi0gICAgICBpZiAocHRzID4gcnRwaDI2NXBheS0+bGFzdF92cHNfc3BzX3BwcykKLSAgICAgICAgZGlmZiA9IHB0cyAtIHJ0cGgyNjVwYXktPmxhc3RfdnBzX3Nwc19wcHM7Ci0gICAgICBlbHNlCi0gICAgICAgIGRpZmYgPSAwOwotCi0gICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LAotICAgICAgICAgICJpbnRlcnZhbCBzaW5jZSBsYXN0IFZQUy9TUFMvUFBTICUiIEdTVF9USU1FX0ZPUk1BVCwKLSAgICAgICAgICBHU1RfVElNRV9BUkdTIChkaWZmKSk7Ci0KLSAgICAgIC8qIGJpZ2dlciB0aGFuIGludGVydmFsLCBxdWV1ZSBTUFMvUFBTICovCi0gICAgICBpZiAoR1NUX1RJTUVfQVNfU0VDT05EUyAoZGlmZikgPj0gcnRwaDI2NXBheS0+dnBzX3Nwc19wcHNfaW50ZXJ2YWwpIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgInRpbWUgdG8gc2VuZCBWUFMvU1BTL1BQUyIpOwotICAgICAgICBzZW5kX3Zwc19zcHNfcHBzID0gVFJVRTsKLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgLyogbm8ga25vd24gcHJldmlvdXMgU1BTL1BQUyB0aW1lLCBzZW5kIG5vdyAqLwotICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgIm5vIHByZXZpb3VzIFZQUy9TUFMvUFBTIHRpbWUsIHNlbmQgbm93Iik7Ci0gICAgICBzZW5kX3Zwc19zcHNfcHBzID0gVFJVRTsKLSAgICB9Ci0gIH0KLQotICBpZiAoc2VuZF92cHNfc3BzX3BwcyB8fCBydHBoMjY1cGF5LT5zZW5kX3Zwc19zcHNfcHBzKSB7Ci0gICAgLyogd2UgbmVlZCB0byBzZW5kIFNQUy9QUFMgbm93IGZpcnN0LiBGSVhNRSwgZG9uJ3QgdXNlIHRoZSBwdHMgZm9yCi0gICAgICogY2hlY2tpbmcgd2hlbiB3ZSBuZWVkIHRvIHNlbmQgU1BTL1BQUyBidXQgY29udmVydCB0byBydW5uaW5nX3RpbWUgZmlyc3QuICovCi0gICAgcnRwaDI2NXBheS0+c2VuZF92cHNfc3BzX3BwcyA9IEZBTFNFOwotICAgIHJldCA9IGdzdF9ydHBfaDI2NV9wYXlfc2VuZF92cHNfc3BzX3BwcyAoYmFzZXBheWxvYWQsIHJ0cGgyNjVwYXksIGR0cywgcHRzKTsKLSAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKSB7Ci0gICAgICBnc3RfYnVmZmVyX3VucmVmIChwYXlidWYpOwotICAgICAgcmV0dXJuIHJldDsKLSAgICB9Ci0gIH0KLQotICBwYWNrZXRfbGVuID0gZ3N0X3J0cF9idWZmZXJfY2FsY19wYWNrZXRfbGVuIChzaXplLCAwLCAwKTsKLQotICBHU1RfRklYTUVfT0JKRUNUIChydHBoMjY1cGF5LCAiU2V0IFJUUCBtYXJrZXIgYml0IGFwcHJvcHJpYXRlbHkiKTsKLQotICBpZiAocGFja2V0X2xlbiA8IG10dSkgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksCi0gICAgICAgICJOQUwgVW5pdCBmaXQgaW4gb25lIHBhY2tldCBkYXRhc2l6ZT0lZCBtdHU9JWQiLCBzaXplLCBtdHUpOwotICAgIC8qIHdpbGwgZml0IGluIG9uZSBwYWNrZXQgKi8KLQotICAgIC8qIHVzZSBidWZmZXIgbGlzdHMKLSAgICAgKiBjcmVhdGUgYnVmZmVyIHdpdGhvdXQgcGF5bG9hZCBjb250YWluaW5nIG9ubHkgdGhlIFJUUCBoZWFkZXIKLSAgICAgKiAobWVtb3J5IGJsb2NrIGF0IGluZGV4IDApICovCi0gICAgb3V0YnVmID0gZ3N0X3J0cF9idWZmZXJfbmV3X2FsbG9jYXRlICgwLCAwLCAwKTsKLQotICAgIGdzdF9ydHBfYnVmZmVyX21hcCAob3V0YnVmLCBHU1RfTUFQX1dSSVRFLCAmcnRwKTsKLQotICAgIC8qIEZJWE1FIDogb25seSBzZXQgdGhlIG1hcmtlciBiaXQgb24gcGFja2V0cyBjb250YWluaW5nIGFjY2VzcyB1bml0cyAqLwotICAgIC8qIGlmIChJU19BQ0NFU1NfVU5JVCAobmFsVHlwZSkgJiYgZW5kX29mX2F1KSB7Ci0gICAgICAgZ3N0X3J0cF9idWZmZXJfc2V0X21hcmtlciAoJnJ0cCwgMSk7Ci0gICAgICAgfSAqLwotCi0gICAgLyogdGltZXN0YW1wIHRoZSBvdXRidWZmZXIgKi8KLSAgICBHU1RfQlVGRkVSX1BUUyAob3V0YnVmKSA9IHB0czsKLSAgICBHU1RfQlVGRkVSX0RUUyAob3V0YnVmKSA9IGR0czsKLQotICAgIC8qIGluc2VydCBwYXlsb2FkIG1lbW9yeSBibG9jayAqLwotICAgIGdzdF9ydHBfY29weV9tZXRhIChHU1RfRUxFTUVOVF9DQVNUIChydHBoMjY1cGF5KSwgb3V0YnVmLCBwYXlidWYsCi0gICAgICAgIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nIChHU1RfTUVUQV9UQUdfVklERU9fU1RSKSk7Ci0gICAgb3V0YnVmID0gZ3N0X2J1ZmZlcl9hcHBlbmQgKG91dGJ1ZiwgcGF5YnVmKTsKLQotICAgIGxpc3QgPSBnc3RfYnVmZmVyX2xpc3RfbmV3ICgpOwotCi0gICAgLyogYWRkIHRoZSBidWZmZXIgdG8gdGhlIGJ1ZmZlciBsaXN0ICovCi0gICAgZ3N0X2J1ZmZlcl9saXN0X2FkZCAobGlzdCwgb3V0YnVmKTsKLQotICAgIGdzdF9ydHBfYnVmZmVyX3VubWFwICgmcnRwKTsKLQotICAgIC8qIHB1c2ggdGhlIGxpc3QgdG8gdGhlIG5leHQgZWxlbWVudCBpbiB0aGUgcGlwZSAqLwotICAgIHJldCA9IGdzdF9ydHBfYmFzZV9wYXlsb2FkX3B1c2hfbGlzdCAoYmFzZXBheWxvYWQsIGxpc3QpOwotICB9IGVsc2UgewotICAgIC8qIGZyYWdtZW50YXRpb24gVW5pdHMgKi8KLSAgICBndWludCBsaW1pdGVkU2l6ZTsKLSAgICBpbnQgaWkgPSAwLCBzdGFydCA9IDEsIGVuZCA9IDAsIHBvcyA9IDA7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChiYXNlcGF5bG9hZCwKLSAgICAgICAgIk5BTCBVbml0IERPRVMgTk9UIGZpdCBpbiBvbmUgcGFja2V0IGRhdGFzaXplPSVkIG10dT0lZCIsIHNpemUsIG10dSk7Ci0KLSAgICBwb3MgKz0gMjsKLSAgICBzaXplIC09IDI7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChiYXNlcGF5bG9hZCwgIlVzaW5nIEZVIGZyYWdtZW50YXRpb24gZm9yIGRhdGEgc2l6ZT0lZCIsCi0gICAgICAgIHNpemUpOwotCi0gICAgLyogV2Uga2VlcCAzIGJ5dGVzIGZvciBQYXlsb2FkSGRyIGFuZCBGVSBIZWFkZXIgKi8KLSAgICBwYXlsb2FkX2xlbiA9IGdzdF9ydHBfYnVmZmVyX2NhbGNfcGF5bG9hZF9sZW4gKG10dSAtIDMsIDAsIDApOwotCi0gICAgbGlzdCA9IGdzdF9idWZmZXJfbGlzdF9uZXcgKCk7Ci0KLSAgICB3aGlsZSAoZW5kID09IDApIHsKLSAgICAgIGxpbWl0ZWRTaXplID0gc2l6ZSA8IHBheWxvYWRfbGVuID8gc2l6ZSA6IHBheWxvYWRfbGVuOwotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZXBheWxvYWQsCi0gICAgICAgICAgIkluc2lkZSAgRlUgZnJhZ21lbnRhdGlvbiBsaW1pdGVkU2l6ZT0lZCBpdGVyYXRpb249JWQiLCBsaW1pdGVkU2l6ZSwKLSAgICAgICAgICBpaSk7Ci0KLSAgICAgIC8qIHVzZSBidWZmZXIgbGlzdHMKLSAgICAgICAqIGNyZWF0ZSBidWZmZXIgd2l0aG91dCBwYXlsb2FkIGNvbnRhaW5pbmcgb25seSB0aGUgUlRQIGhlYWRlcgotICAgICAgICogKG1lbW9yeSBibG9jayBhdCBpbmRleCAwKSwgYW5kIHdpdGggc3BhY2UgZm9yIFBheWxvYWRIZHIgYW5kIEZVIGhlYWRlciAqLwotICAgICAgb3V0YnVmID0gZ3N0X3J0cF9idWZmZXJfbmV3X2FsbG9jYXRlICgzLCAwLCAwKTsKLQotICAgICAgZ3N0X3J0cF9idWZmZXJfbWFwIChvdXRidWYsIEdTVF9NQVBfV1JJVEUsICZydHApOwotCi0gICAgICBHU1RfQlVGRkVSX0RUUyAob3V0YnVmKSA9IGR0czsKLSAgICAgIEdTVF9CVUZGRVJfUFRTIChvdXRidWYpID0gcHRzOwotICAgICAgcGF5bG9hZCA9IGdzdF9ydHBfYnVmZmVyX2dldF9wYXlsb2FkICgmcnRwKTsKLQotICAgICAgaWYgKGxpbWl0ZWRTaXplID09IHNpemUpIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZXBheWxvYWQsICJlbmQgc2l6ZT0lZCBpdGVyYXRpb249JWQiLCBzaXplLCBpaSk7Ci0gICAgICAgIGVuZCA9IDE7Ci0gICAgICB9Ci0KLSAgICAgIC8qIFBheWxvYWRIZHIgKHR5cGUgPSA0OSkgKi8KLSAgICAgIHBheWxvYWRbMF0gPSAobmFsSGVhZGVyWzBdICYgMHg4MSkgfCAoNDkgPDwgMSk7Ci0gICAgICBwYXlsb2FkWzFdID0gbmFsSGVhZGVyWzFdOwotCi0gICAgICAvKiBGSVhNRSAtIHNldCBSVFAgbWFya2VyIGJpdCBhcHByb3ByaWF0ZWx5ICovCi0gICAgICAvKiBpZiAoSVNfQUNDRVNTX1VOSVQgKG5hbFR5cGUpKSB7Ci0gICAgICAgICBnc3RfcnRwX2J1ZmZlcl9zZXRfbWFya2VyICgmcnRwLCBlbmQgJiYgZW5kX29mX2F1KTsKLSAgICAgICAgIH0gKi8KLQotICAgICAgLyogRlUgSGVhZGVyICovCi0gICAgICBwYXlsb2FkWzJdID0gKHN0YXJ0IDw8IDcpIHwgKGVuZCA8PCA2KSB8IChuYWxUeXBlICYgMHgzZik7Ci0KLSAgICAgIGdzdF9ydHBfYnVmZmVyX3VubWFwICgmcnRwKTsKLQotICAgICAgLyogaW5zZXJ0IHBheWxvYWQgbWVtb3J5IGJsb2NrICovCi0gICAgICBnc3RfcnRwX2NvcHlfbWV0YSAoR1NUX0VMRU1FTlRfQ0FTVCAocnRwaDI2NXBheSksIG91dGJ1ZiwgcGF5YnVmLAotICAgICAgICAgIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nIChHU1RfTUVUQV9UQUdfVklERU9fU1RSKSk7Ci0gICAgICBnc3RfYnVmZmVyX2NvcHlfaW50byAob3V0YnVmLCBwYXlidWYsIEdTVF9CVUZGRVJfQ09QWV9NRU1PUlksIHBvcywKLSAgICAgICAgICBsaW1pdGVkU2l6ZSk7Ci0gICAgICAvKiBhZGQgdGhlIGJ1ZmZlciB0byB0aGUgYnVmZmVyIGxpc3QgKi8KLSAgICAgIGdzdF9idWZmZXJfbGlzdF9hZGQgKGxpc3QsIG91dGJ1Zik7Ci0KLSAgICAgIHNpemUgLT0gbGltaXRlZFNpemU7Ci0gICAgICBwb3MgKz0gbGltaXRlZFNpemU7Ci0gICAgICBpaSsrOwotICAgICAgc3RhcnQgPSAwOwotICAgIH0KLQotICAgIHJldCA9IGdzdF9ydHBfYmFzZV9wYXlsb2FkX3B1c2hfbGlzdCAoYmFzZXBheWxvYWQsIGxpc3QpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKHBheWJ1Zik7Ci0gIH0KLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9ydHBfaDI2NV9wYXlfaGFuZGxlX2J1ZmZlciAoR3N0UlRQQmFzZVBheWxvYWQgKiBiYXNlcGF5bG9hZCwKLSAgICBHc3RCdWZmZXIgKiBidWZmZXIpCi17Ci0gIEdzdFJ0cEgyNjVQYXkgKnJ0cGgyNjVwYXk7Ci0gIEdzdEZsb3dSZXR1cm4gcmV0OwotICBnc2l6ZSBzaXplOwotICBndWludCBuYWxfbGVuLCBpOwotICBHc3RNYXBJbmZvIG1hcDsKLSAgY29uc3QgZ3VpbnQ4ICpkYXRhOwotICBHc3RDbG9ja1RpbWUgZHRzLCBwdHM7Ci0gIEdBcnJheSAqbmFsX3F1ZXVlOwotICBnYm9vbGVhbiBoZXZjOwotICBHc3RCdWZmZXIgKnBheWJ1ZiA9IE5VTEw7Ci0gIGdzaXplIHNraXA7Ci0KLSAgcnRwaDI2NXBheSA9IEdTVF9SVFBfSDI2NV9QQVkgKGJhc2VwYXlsb2FkKTsKLQotICAvKiB0aGUgaW5wdXQgYnVmZmVyIGNvbnRhaW5zIG9uZSBvciBtb3JlIE5BTCB1bml0cyAqLwotCi0gIGhldmMgPSAocnRwaDI2NXBheS0+c3RyZWFtX2Zvcm1hdCA9PSBHU1RfSDI2NV9TVFJFQU1fRk9STUFUX0hFVjEpCi0gICAgICB8fCAocnRwaDI2NXBheS0+c3RyZWFtX2Zvcm1hdCA9PSBHU1RfSDI2NV9TVFJFQU1fRk9STUFUX0hWQzEpOwotCi0gIGlmIChoZXZjKSB7Ci0gICAgLyogSW4gaGV2YyBtb2RlLCB0aGVyZSBpcyBubyBhZGFwdGVyLCBzbyBub3RoaW5nIHRvIGZsdXNoICovCi0gICAgaWYgKGJ1ZmZlciA9PSBOVUxMKQotICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwotICAgIGdzdF9idWZmZXJfbWFwIChidWZmZXIsICZtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gICAgZGF0YSA9IG1hcC5kYXRhOwotICAgIHNpemUgPSBtYXAuc2l6ZTsKLSAgICBwdHMgPSBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKTsKLSAgICBkdHMgPSBHU1RfQlVGRkVSX0RUUyAoYnVmZmVyKTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChiYXNlcGF5bG9hZCwgImdvdCAlIiBHX0dTSVpFX0ZPUk1BVCAiIGJ5dGVzIiwgc2l6ZSk7Ci0gIH0gZWxzZSB7Ci0gICAgZHRzID0gZ3N0X2FkYXB0ZXJfcHJldl9kdHMgKHJ0cGgyNjVwYXktPmFkYXB0ZXIsIE5VTEwpOwotICAgIHB0cyA9IGdzdF9hZGFwdGVyX3ByZXZfcHRzIChydHBoMjY1cGF5LT5hZGFwdGVyLCBOVUxMKTsKLSAgICBpZiAoYnVmZmVyKSB7Ci0gICAgICBpZiAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChkdHMpKQotICAgICAgICBkdHMgPSBHU1RfQlVGRkVSX0RUUyAoYnVmZmVyKTsKLSAgICAgIGlmICghR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHB0cykpCi0gICAgICAgIHB0cyA9IEdTVF9CVUZGRVJfUFRTIChidWZmZXIpOwotCi0gICAgICBnc3RfYWRhcHRlcl9wdXNoIChydHBoMjY1cGF5LT5hZGFwdGVyLCBidWZmZXIpOwotICAgIH0KLSAgICBzaXplID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlIChydHBoMjY1cGF5LT5hZGFwdGVyKTsKLSAgICAvKiBOb3RoaW5nIHRvIGRvIGhlcmUgaWYgdGhlIGFkYXB0ZXIgaXMgZW1wdHksIGUuZy4gb24gRU9TICovCi0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgIHJldHVybiBHU1RfRkxPV19PSzsKLSAgICBkYXRhID0gZ3N0X2FkYXB0ZXJfbWFwIChydHBoMjY1cGF5LT5hZGFwdGVyLCBzaXplKTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChiYXNlcGF5bG9hZCwKLSAgICAgICAgImdvdCAlIiBHX0dTSVpFX0ZPUk1BVCAiIGJ5dGVzICglIiBHX0dTSVpFX0ZPUk1BVCAiKSIsIHNpemUsCi0gICAgICAgIGJ1ZmZlciA/IGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZmZlcikgOiAwKTsKLSAgfQotCi0gIHJldCA9IEdTVF9GTE9XX09LOwotCi0gIC8qIG5vdyBsb29wIG92ZXIgYWxsIE5BTCB1bml0cyBhbmQgcHV0IHRoZW0gaW4gYSBwYWNrZXQKLSAgICogRklYTUUsIHdlIHNob3VsZCByZWFsbHkgdHJ5IHRvIHBhY2sgbXVsdGlwbGUgTkFMIHVuaXRzIGludG8gb25lIFJUUCBwYWNrZXQKLSAgICogaWYgd2UgY2FuLCBlc3BlY2lhbGx5IGZvciB0aGUgY29uZmlnIHBhY2tldHMgdGhhdCB3b250J3QgY2F1c2UgZGVjb2RlcgotICAgKiBsYXRlbmN5LiAqLwotICBpZiAoaGV2YykgewotICAgIGd1aW50IG5hbF9sZW5ndGhfc2l6ZTsKLSAgICBnc2l6ZSBvZmZzZXQgPSAwOwotCi0gICAgbmFsX2xlbmd0aF9zaXplID0gcnRwaDI2NXBheS0+bmFsX2xlbmd0aF9zaXplOwotCi0gICAgd2hpbGUgKHNpemUgPiBuYWxfbGVuZ3RoX3NpemUpIHsKLSAgICAgIGdpbnQgaTsKLSAgICAgIGdib29sZWFuIGVuZF9vZl9hdSA9IEZBTFNFOwotCi0gICAgICBuYWxfbGVuID0gMDsKLSAgICAgIGZvciAoaSA9IDA7IGkgPCBuYWxfbGVuZ3RoX3NpemU7IGkrKykgewotICAgICAgICBuYWxfbGVuID0gKChuYWxfbGVuIDw8IDgpICsgZGF0YVtpXSk7Ci0gICAgICB9Ci0KLSAgICAgIC8qIHNraXAgdGhlIGxlbmd0aCBieXRlcywgbWFrZSBzdXJlIHdlIGRvbid0IHJ1biBwYXN0IHRoZSBidWZmZXIgc2l6ZSAqLwotICAgICAgZGF0YSArPSBuYWxfbGVuZ3RoX3NpemU7Ci0gICAgICBvZmZzZXQgKz0gbmFsX2xlbmd0aF9zaXplOwotICAgICAgc2l6ZSAtPSBuYWxfbGVuZ3RoX3NpemU7Ci0KLSAgICAgIGlmIChzaXplID49IG5hbF9sZW4pIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZXBheWxvYWQsICJnb3QgTkFMIG9mIHNpemUgJXUiLCBuYWxfbGVuKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG5hbF9sZW4gPSBzaXplOwotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChiYXNlcGF5bG9hZCwgImdvdCBpbmNvbXBsZXRlIE5BTCBvZiBzaXplICV1IiwKLSAgICAgICAgICAgIG5hbF9sZW4pOwotICAgICAgfQotCi0gICAgICAvKiBJZiB3ZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIHRoZW4gd2UncmUgYXQgdGhlIGVuZCBvZiB0aGUKLSAgICAgICAqIGFjY2VzcyB1bml0Ci0gICAgICAgKi8KLSAgICAgIGlmIChydHBoMjY1cGF5LT5hbGlnbm1lbnQgPT0gR1NUX0gyNjVfQUxJR05NRU5UX0FVCi0gICAgICAgICAgJiYgc2l6ZSAtIG5hbF9sZW4gPD0gbmFsX2xlbmd0aF9zaXplKSB7Ci0gICAgICAgIGVuZF9vZl9hdSA9IFRSVUU7Ci0gICAgICB9Ci0KLSAgICAgIHBheWJ1ZiA9IGdzdF9idWZmZXJfY29weV9yZWdpb24gKGJ1ZmZlciwgR1NUX0JVRkZFUl9DT1BZX0FMTCwgb2Zmc2V0LAotICAgICAgICAgIG5hbF9sZW4pOwotCi0gICAgICByZXQgPQotICAgICAgICAgIGdzdF9ydHBfaDI2NV9wYXlfcGF5bG9hZF9uYWwgKGJhc2VwYXlsb2FkLCBwYXlidWYsIGR0cywgcHRzLAotICAgICAgICAgIGVuZF9vZl9hdSk7Ci0gICAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKQotICAgICAgICBicmVhazsKLQotICAgICAgZGF0YSArPSBuYWxfbGVuOwotICAgICAgb2Zmc2V0ICs9IG5hbF9sZW47Ci0gICAgICBzaXplIC09IG5hbF9sZW47Ci0gICAgfQotICB9IGVsc2UgewotICAgIGd1aW50IG5leHQ7Ci0gICAgZ2Jvb2xlYW4gdXBkYXRlID0gRkFMU0U7Ci0KLSAgICAvKiBnZXQgb2Zmc2V0IG9mIGZpcnN0IHN0YXJ0IGNvZGUgKi8KLSAgICBuZXh0ID0gbmV4dF9zdGFydF9jb2RlIChkYXRhLCBzaXplKTsKLQotICAgIC8qIHNraXAgdG8gc3RhcnQgY29kZSwgaWYgbm8gc3RhcnQgY29kZSBpcyBmb3VuZCwgbmV4dCB3aWxsIGJlIHNpemUgYW5kIHdlCi0gICAgICogd2lsbCBub3QgY29sbGVjdCBkYXRhLiAqLwotICAgIGRhdGEgKz0gbmV4dDsKLSAgICBzaXplIC09IG5leHQ7Ci0gICAgbmFsX3F1ZXVlID0gcnRwaDI2NXBheS0+cXVldWU7Ci0gICAgc2tpcCA9IG5leHQ7Ci0KLSAgICAvKiBhcnJheSBtdXN0IGJlIGVtcHR5IHdoZW4gd2UgZ2V0IGhlcmUgKi8KLSAgICBnX2Fzc2VydCAobmFsX3F1ZXVlLT5sZW4gPT0gMCk7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChiYXNlcGF5bG9hZCwKLSAgICAgICAgImZvdW5kIGZpcnN0IHN0YXJ0IGF0ICV1LCBieXRlcyBsZWZ0ICUiIEdfR1NJWkVfRk9STUFULCBuZXh0LCBzaXplKTsKLQotICAgIC8qIGZpcnN0IHBhc3MgdG8gbG9jYXRlIE5BTHMgYW5kIHBhcnNlIFNQUy9QUFMgKi8KLSAgICB3aGlsZSAoc2l6ZSA+IDQpIHsKLSAgICAgIC8qIHNraXAgc3RhcnQgY29kZSAqLwotICAgICAgZGF0YSArPSAzOwotICAgICAgc2l6ZSAtPSAzOwotCi0gICAgICAvKiB1c2UgbmV4dF9zdGFydF9jb2RlKCkgdG8gc2NhbiBidWZmZXIuCi0gICAgICAgKiBuZXh0X3N0YXJ0X2NvZGUoKSByZXR1cm5zIHRoZSBvZmZzZXQgaW4gZGF0YSwKLSAgICAgICAqIHN0YXJ0aW5nIGZyb20gemVybyB0byB0aGUgZmlyc3QgYnl0ZSBvZiAwLjAuMC4xCi0gICAgICAgKiBJZiBubyBzdGFydCBjb2RlIGlzIGZvdW5kLCBpdCByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKLSAgICAgICAqICdzaXplJyBwYXJhbWV0ZXIuCi0gICAgICAgKiBkYXRhIGlzIHVuY2hhbmdlZCBieSB0aGUgY2FsbCB0byBuZXh0X3N0YXJ0X2NvZGUoKQotICAgICAgICovCi0gICAgICBuZXh0ID0gbmV4dF9zdGFydF9jb2RlIChkYXRhLCBzaXplKTsKLQotICAgICAgaWYgKG5leHQgPT0gc2l6ZSAmJiBidWZmZXIgIT0gTlVMTCkgewotICAgICAgICAvKiBEaWRuJ3QgZmluZCB0aGUgc3RhcnQgb2YgbmV4dCBOQUwgYW5kIGl0J3Mgbm90IEVPUywKLSAgICAgICAgICogaGFuZGxlIGl0IG5leHQgdGltZSAqLwotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgLyogbmFsIGxlbmd0aCBpcyBkaXN0YW5jZSB0byBuZXh0IHN0YXJ0IGNvZGUgKi8KLSAgICAgIG5hbF9sZW4gPSBuZXh0OwotCi0gICAgICBHU1RfREVCVUdfT0JKRUNUIChiYXNlcGF5bG9hZCwgImZvdW5kIG5leHQgc3RhcnQgYXQgJXUgb2Ygc2l6ZSAldSIsIG5leHQsCi0gICAgICAgICAgbmFsX2xlbik7Ci0KLSAgICAgIGlmIChydHBoMjY1cGF5LT5zcHJvcF9wYXJhbWV0ZXJfc2V0cyAhPSBOVUxMKSB7Ci0gICAgICAgIC8qIGV4cGxpY2l0bHkgc2V0IHByb2ZpbGUgYW5kIHNwcm9wLCB1c2UgdGhvc2UgKi8KLSAgICAgICAgaWYgKHJ0cGgyNjVwYXktPnVwZGF0ZV9jYXBzKSB7Ci0gICAgICAgICAgaWYgKCFnc3RfcnRwX2Jhc2VfcGF5bG9hZF9zZXRfb3V0Y2FwcyAoYmFzZXBheWxvYWQsCi0gICAgICAgICAgICAgICAgICAic3Byb3AtcGFyYW1ldGVyLXNldHMiLCBHX1RZUEVfU1RSSU5HLAotICAgICAgICAgICAgICAgICAgcnRwaDI2NXBheS0+c3Byb3BfcGFyYW1ldGVyX3NldHMsIE5VTEwpKQotICAgICAgICAgICAgZ290byBjYXBzX3JlamVjdGVkOwotCi0gICAgICAgICAgLyogcGFyc2UgU1BTIGFuZCBQUFMgZnJvbSBwcm92aWRlZCBwYXJhbWV0ZXIgc2V0IChmb3IgaW5zZXJ0aW9uKSAqLwotICAgICAgICAgIGdzdF9ydHBfaDI2NV9wYXlfcGFyc2Vfc3Byb3BfcGFyYW1ldGVyX3NldHMgKHJ0cGgyNjVwYXkpOwotCi0gICAgICAgICAgcnRwaDI2NXBheS0+dXBkYXRlX2NhcHMgPSBGQUxTRTsKLQotICAgICAgICAgIEdTVF9ERUJVRyAoIm91dGNhcHMgdXBkYXRlOiBzcHJvcC1wYXJhbWV0ZXItc2V0cz0lcyIsCi0gICAgICAgICAgICAgIHJ0cGgyNjVwYXktPnNwcm9wX3BhcmFtZXRlcl9zZXRzKTsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgLyogV2Uga25vdyBvdXIgc3RyZWFtIGlzIGEgdmFsaWQgSDI2NSBOQUwgcGFja2V0LAotICAgICAgICAgKiBnbyBwYXJzZSBpdCBmb3IgU1BTL1BQUyB0byBlbnJpY2ggdGhlIGNhcHMgKi8KLSAgICAgICAgLyogb3JkZXI6IG1ha2Ugc3VyZSB0byBjaGVjayBuYWwgKi8KLSAgICAgICAgdXBkYXRlID0KLSAgICAgICAgICAgIGdzdF9ydHBfaDI2NV9wYXlfZGVjb2RlX25hbCAocnRwaDI2NXBheSwgZGF0YSwgbmFsX2xlbiwgZHRzLCBwdHMpCi0gICAgICAgICAgICB8fCB1cGRhdGU7Ci0gICAgICB9Ci0gICAgICAvKiBtb3ZlIHRvIG5leHQgTkFMIHBhY2tldCAqLwotICAgICAgZGF0YSArPSBuYWxfbGVuOwotICAgICAgc2l6ZSAtPSBuYWxfbGVuOwotCi0gICAgICBnX2FycmF5X2FwcGVuZF92YWwgKG5hbF9xdWV1ZSwgbmFsX2xlbik7Ci0gICAgfQotCi0gICAgLyogaWYgaGFzIG5ldyBWUFMsIFNQUyAmIFBQUywgdXBkYXRlIHRoZSBvdXRwdXQgY2FwcyAqLwotICAgIGlmIChHX1VOTElLRUxZICh1cGRhdGUpKQotICAgICAgaWYgKCFnc3RfcnRwX2gyNjVfcGF5X3NldF92cHNfc3BzX3BwcyAoYmFzZXBheWxvYWQpKQotICAgICAgICBnb3RvIGNhcHNfcmVqZWN0ZWQ7Ci0KLSAgICAvKiBzZWNvbmQgcGFzcyB0byBwYXlsb2FkIGFuZCBwdXNoICovCi0KLSAgICBpZiAobmFsX3F1ZXVlLT5sZW4gIT0gMCkKLSAgICAgIGdzdF9hZGFwdGVyX2ZsdXNoIChydHBoMjY1cGF5LT5hZGFwdGVyLCBza2lwKTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCBuYWxfcXVldWUtPmxlbjsgaSsrKSB7Ci0gICAgICBndWludCBzaXplOwotICAgICAgZ2Jvb2xlYW4gZW5kX29mX2F1ID0gRkFMU0U7Ci0KLSAgICAgIG5hbF9sZW4gPSBnX2FycmF5X2luZGV4IChuYWxfcXVldWUsIGd1aW50LCBpKTsKLSAgICAgIC8qIHNraXAgc3RhcnQgY29kZSAqLwotICAgICAgZ3N0X2FkYXB0ZXJfZmx1c2ggKHJ0cGgyNjVwYXktPmFkYXB0ZXIsIDMpOwotCi0gICAgICAvKiBUcmltIHRoZSBlbmQgdW5sZXNzIHdlJ3JlIHRoZSBsYXN0IE5BTCBpbiB0aGUgc3RyZWFtLgotICAgICAgICogSW4gY2FzZSB3ZSdyZSBub3QgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIHdlIGtub3cgdGhlIG5leHQgYmxvY2sKLSAgICAgICAqIHN0YXJ0cyB3aXRoIDB4MDAwMDAxIHNvIGFsbCB0aGUgMHgwMCBieXRlcyBhdCB0aGUgZW5kIG9mIHRoaXMgb25lIGFyZQotICAgICAgICogdHJhaWxpbmcgMHgwIHRoYXQgY2FuIGJlIGRpc2NhcmRlZCAqLwotICAgICAgc2l6ZSA9IG5hbF9sZW47Ci0gICAgICBkYXRhID0gZ3N0X2FkYXB0ZXJfbWFwIChydHBoMjY1cGF5LT5hZGFwdGVyLCBzaXplKTsKLSAgICAgIGlmIChpICsgMSAhPSBuYWxfcXVldWUtPmxlbiB8fCBidWZmZXIgIT0gTlVMTCkKLSAgICAgICAgZm9yICg7IHNpemUgPiAxICYmIGRhdGFbc2l6ZSAtIDFdID09IDB4MDsgc2l6ZS0tKQotICAgICAgICAgIC8qIHNraXAgKi8gOwotCi0KLSAgICAgIC8qIElmIGl0J3MgdGhlIGxhc3QgbmFsIHVuaXQgd2UgaGF2ZSBpbiBub24tYnl0ZXN0cmVhbSBtb2RlLCB3ZSBjYW4KLSAgICAgICAqIGFzc3VtZSBpdCdzIHRoZSBlbmQgb2YgYW4gYWNjZXNzLXVuaXQKLSAgICAgICAqCi0gICAgICAgKiBGSVhNRTogV2UgbmVlZCB0byB3YWl0IHVudGlsIHRoZSBuZXh0IHBhY2tldCBvciBFT1MgdG8KLSAgICAgICAqIGFjdHVhbGx5IHBheWxvYWQgdGhlIE5BTCBzbyB3ZSBjYW4ga25vdyBpZiB0aGUgY3VycmVudCBOQUwgaXMKLSAgICAgICAqIHRoZSBsYXN0IG9uZSBvZiBhbiBhY2Nlc3MgdW5pdCBvciBub3QgaWYgd2UgYXJlIGluIGJ5dGVzdHJlYW0gbW9kZQotICAgICAgICovCi0gICAgICBpZiAoKHJ0cGgyNjVwYXktPmFsaWdubWVudCA9PSBHU1RfSDI2NV9BTElHTk1FTlRfQVUgfHwgYnVmZmVyID09IE5VTEwpICYmCi0gICAgICAgICAgaSA9PSBuYWxfcXVldWUtPmxlbiAtIDEpCi0gICAgICAgIGVuZF9vZl9hdSA9IFRSVUU7Ci0gICAgICBwYXlidWYgPSBnc3RfYWRhcHRlcl90YWtlX2J1ZmZlciAocnRwaDI2NXBheS0+YWRhcHRlciwgc2l6ZSk7Ci0gICAgICBnX2Fzc2VydCAocGF5YnVmKTsKLQotICAgICAgLyogcHV0IHRoZSBkYXRhIGluIG9uZSBvciBtb3JlIFJUUCBwYWNrZXRzICovCi0gICAgICByZXQgPQotICAgICAgICAgIGdzdF9ydHBfaDI2NV9wYXlfcGF5bG9hZF9uYWwgKGJhc2VwYXlsb2FkLCBwYXlidWYsIGR0cywgcHRzLAotICAgICAgICAgIGVuZF9vZl9hdSk7Ci0gICAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKSB7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotCi0gICAgICAvKiBtb3ZlIHRvIG5leHQgTkFMIHBhY2tldCAqLwotICAgICAgLyogU2tpcHMgdGhlIHRyYWlsaW5nIHplcm9zICovCi0gICAgICBnc3RfYWRhcHRlcl9mbHVzaCAocnRwaDI2NXBheS0+YWRhcHRlciwgbmFsX2xlbiAtIHNpemUpOwotICAgIH0KLSAgICBnX2FycmF5X3NldF9zaXplIChuYWxfcXVldWUsIDApOwotICB9Ci0KLWRvbmU6Ci0gIGlmIChoZXZjKSB7Ci0gICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmZmVyLCAmbWFwKTsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwotICB9IGVsc2UgewotICAgIGdzdF9hZGFwdGVyX3VubWFwIChydHBoMjY1cGF5LT5hZGFwdGVyKTsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci0KLWNhcHNfcmVqZWN0ZWQ6Ci0gIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGJhc2VwYXlsb2FkLCAiQ291bGQgbm90IHNldCBvdXRjYXBzIik7Ci0gICAgZ19hcnJheV9zZXRfc2l6ZSAobmFsX3F1ZXVlLCAwKTsKLSAgICByZXQgPSBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKLSAgICBnb3RvIGRvbmU7Ci0gIH0KLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfcnRwX2gyNjVfcGF5X3NpbmtfZXZlbnQgKEdzdFJUUEJhc2VQYXlsb2FkICogcGF5bG9hZCwgR3N0RXZlbnQgKiBldmVudCkKLXsKLSAgZ2Jvb2xlYW4gcmVzOwotICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnM7Ci0gIEdzdFJ0cEgyNjVQYXkgKnJ0cGgyNjVwYXkgPSBHU1RfUlRQX0gyNjVfUEFZIChwYXlsb2FkKTsKLQotICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKLSAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVE9QOgotICAgICAgZ3N0X2FkYXB0ZXJfY2xlYXIgKHJ0cGgyNjVwYXktPmFkYXB0ZXIpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU06Ci0gICAgICBzID0gZ3N0X2V2ZW50X2dldF9zdHJ1Y3R1cmUgKGV2ZW50KTsKLSAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lIChzLCAiR3N0Rm9yY2VLZXlVbml0IikpIHsKLSAgICAgICAgZ2Jvb2xlYW4gcmVzZW5kX2NvZGVjX2RhdGE7Ci0KLSAgICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2Jvb2xlYW4gKHMsICJhbGwtaGVhZGVycyIsCi0gICAgICAgICAgICAgICAgJnJlc2VuZF9jb2RlY19kYXRhKSAmJiByZXNlbmRfY29kZWNfZGF0YSkKLSAgICAgICAgICBydHBoMjY1cGF5LT5zZW5kX3Zwc19zcHNfcHBzID0gVFJVRTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX0VWRU5UX0VPUzoKLSAgICB7Ci0gICAgICAvKiBjYWxsIGhhbmRsZV9idWZmZXIgd2l0aCBOVUxMIHRvIGZsdXNoIGxhc3QgTkFMIGZyb20gYWRhcHRlcgotICAgICAgICogaW4gYnl0ZS1zdHJlYW0gbW9kZQotICAgICAgICovCi0gICAgICBnc3RfcnRwX2gyNjVfcGF5X2hhbmRsZV9idWZmZXIgKHBheWxvYWQsIE5VTEwpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgR1NUX0VWRU5UX1NUUkVBTV9TVEFSVDoKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksCi0gICAgICAgICAgIk5ldyBzdHJlYW0gZGV0ZWN0ZWQgPT4gQ2xlYXIgVlBTLCBTUFMgYW5kIFBQUyIpOwotICAgICAgZ3N0X3J0cF9oMjY1X3BheV9jbGVhcl92cHNfc3BzX3BwcyAocnRwaDI2NXBheSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXMgPSBHU1RfUlRQX0JBU0VfUEFZTE9BRF9DTEFTUyAocGFyZW50X2NsYXNzKS0+c2lua19ldmVudCAocGF5bG9hZCwgZXZlbnQpOwotCi0gIHJldHVybiByZXM7Ci19Ci0KLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotZ3N0X3J0cF9oMjY1X3BheV9jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQotewotICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQ7Ci0gIEdzdFJ0cEgyNjVQYXkgKnJ0cGgyNjVwYXkgPSBHU1RfUlRQX0gyNjVfUEFZIChlbGVtZW50KTsKLQotICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgotICAgICAgcnRwaDI2NXBheS0+c2VuZF92cHNfc3BzX3BwcyA9IEZBTFNFOwotICAgICAgZ3N0X2FkYXB0ZXJfY2xlYXIgKHJ0cGgyNjVwYXktPmFkYXB0ZXIpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0ID0gR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmNoYW5nZV9zdGF0ZSAoZWxlbWVudCwgdHJhbnNpdGlvbik7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKLSAgICAgIHJ0cGgyNjVwYXktPmxhc3RfdnBzX3Nwc19wcHMgPSAtMTsKLSAgICAgIGdzdF9ydHBfaDI2NV9wYXlfY2xlYXJfdnBzX3Nwc19wcHMgKHJ0cGgyNjVwYXkpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfaDI2NV9wYXlfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIEdzdFJ0cEgyNjVQYXkgKnJ0cGgyNjVwYXk7Ci0KLSAgcnRwaDI2NXBheSA9IEdTVF9SVFBfSDI2NV9QQVkgKG9iamVjdCk7Ci0KLSAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX1NQUk9QX1BBUkFNRVRFUl9TRVRTOgotICAgICAgZ19mcmVlIChydHBoMjY1cGF5LT5zcHJvcF9wYXJhbWV0ZXJfc2V0cyk7Ci0gICAgICBydHBoMjY1cGF5LT5zcHJvcF9wYXJhbWV0ZXJfc2V0cyA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOwotICAgICAgcnRwaDI2NXBheS0+dXBkYXRlX2NhcHMgPSBUUlVFOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NPTkZJR19JTlRFUlZBTDoKLSAgICAgIHJ0cGgyNjVwYXktPnZwc19zcHNfcHBzX2ludGVydmFsID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7Ci0gICAgICBicmVhazsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3J0cF9oMjY1X3BheV9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0gICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLXsKLSAgR3N0UnRwSDI2NVBheSAqcnRwaDI2NXBheTsKLQotICBydHBoMjY1cGF5ID0gR1NUX1JUUF9IMjY1X1BBWSAob2JqZWN0KTsKLQotICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfU1BST1BfUEFSQU1FVEVSX1NFVFM6Ci0gICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBydHBoMjY1cGF5LT5zcHJvcF9wYXJhbWV0ZXJfc2V0cyk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQ09ORklHX0lOVEVSVkFMOgotICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIHJ0cGgyNjVwYXktPnZwc19zcHNfcHBzX2ludGVydmFsKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotZ2Jvb2xlYW4KLWdzdF9ydHBfaDI2NV9wYXlfcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbikKLXsKLSAgcmV0dXJuIGdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJydHBoMjY1cGF5IiwKLSAgICAgIEdTVF9SQU5LX1NFQ09OREFSWSwgR1NUX1RZUEVfUlRQX0gyNjVfUEFZKTsKLX0KZGlmZiAtLWdpdCBhL2dzdC9ydHAvZ3N0cnRwaDI2NXBheS5oIGIvZ3N0L3J0cC9nc3RydHBoMjY1cGF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzODJjNWUuLjAwMDAwMDAKLS0tIGEvZ3N0L3J0cC9nc3RydHBoMjY1cGF5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgPDIwMDY+IFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDwyMDE0PiBKdXJnZW4gU2xvd2FjayA8anVyZ2Vuc2xvd2Fja0BnbWFpbC5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBfX0dTVF9SVFBfSDI2NV9QQVlfSF9fCi0jZGVmaW5lIF9fR1NUX1JUUF9IMjY1X1BBWV9IX18KLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvYmFzZS9nc3RhZGFwdGVyLmg+Ci0jaW5jbHVkZSA8Z3N0L3J0cC9nc3RydHBiYXNlcGF5bG9hZC5oPgotI2luY2x1ZGUgPGdzdC9jb2RlY3BhcnNlcnMvZ3N0aDI2NXBhcnNlci5oPgotCi1HX0JFR0lOX0RFQ0xTCi0jZGVmaW5lIEdTVF9UWVBFX1JUUF9IMjY1X1BBWSBcCi0gIChnc3RfcnRwX2gyNjVfcGF5X2dldF90eXBlKCkpCi0jZGVmaW5lIEdTVF9SVFBfSDI2NV9QQVkob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9SVFBfSDI2NV9QQVksR3N0UnRwSDI2NVBheSkpCi0jZGVmaW5lIEdTVF9SVFBfSDI2NV9QQVlfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfUlRQX0gyNjVfUEFZLEdzdFJ0cEgyNjVQYXlDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19SVFBfSDI2NV9QQVkob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9SVFBfSDI2NV9QQVkpKQotI2RlZmluZSBHU1RfSVNfUlRQX0gyNjVfUEFZX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX1JUUF9IMjY1X1BBWSkpCi10eXBlZGVmIHN0cnVjdCBfR3N0UnRwSDI2NVBheSBHc3RSdHBIMjY1UGF5OwotdHlwZWRlZiBzdHJ1Y3QgX0dzdFJ0cEgyNjVQYXlDbGFzcyBHc3RSdHBIMjY1UGF5Q2xhc3M7Ci0KLXR5cGVkZWYgZW51bQotewotICBHU1RfSDI2NV9BTElHTk1FTlRfVU5LTk9XTiwKLSAgR1NUX0gyNjVfQUxJR05NRU5UX05BTCwKLSAgR1NUX0gyNjVfQUxJR05NRU5UX0FVCi19IEdzdEgyNjVBbGlnbm1lbnQ7Ci0KLXN0cnVjdCBfR3N0UnRwSDI2NVBheQotewotICBHc3RSVFBCYXNlUGF5bG9hZCBwYXlsb2FkOwotCi0gIGd1aW50IHByb2ZpbGU7Ci0gIEdQdHJBcnJheSAqc3BzLCAqcHBzLCAqdnBzOwotCi0gIEdzdEgyNjVTdHJlYW1Gb3JtYXQgc3RyZWFtX2Zvcm1hdDsKLSAgR3N0SDI2NUFsaWdubWVudCBhbGlnbm1lbnQ7Ci0gIGd1aW50IG5hbF9sZW5ndGhfc2l6ZTsKLSAgR0FycmF5ICpxdWV1ZTsKLQotICBnY2hhciAqc3Byb3BfcGFyYW1ldGVyX3NldHM7Ci0gIGdib29sZWFuIHVwZGF0ZV9jYXBzOwotCi0gIEdzdEFkYXB0ZXIgKmFkYXB0ZXI7Ci0KLSAgZ3VpbnQgdnBzX3Nwc19wcHNfaW50ZXJ2YWw7Ci0gIGdib29sZWFuIHNlbmRfdnBzX3Nwc19wcHM7Ci0gIEdzdENsb2NrVGltZSBsYXN0X3Zwc19zcHNfcHBzOwotfTsKLQotc3RydWN0IF9Hc3RSdHBIMjY1UGF5Q2xhc3MKLXsKLSAgR3N0UlRQQmFzZVBheWxvYWRDbGFzcyBwYXJlbnRfY2xhc3M7Ci19OwotCi1HVHlwZSBnc3RfcnRwX2gyNjVfcGF5X2dldF90eXBlICh2b2lkKTsKLQotZ2Jvb2xlYW4gZ3N0X3J0cF9oMjY1X3BheV9wbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKTsKLQotR19FTkRfREVDTFMKLSNlbmRpZiAvKiBfX0dTVF9SVFBfSDI2NV9QQVlfSF9fICovCmRpZmYgLS1naXQgYS9nc3Qvc2RpL01ha2VmaWxlLmluIGIvZ3N0L3NkaS9NYWtlZmlsZS5pbgppbmRleCAxY2FkOWZhLi42ZDc0MTk2IDEwMDY0NAotLS0gYS9nc3Qvc2RpL01ha2VmaWxlLmluCisrKyBiL2dzdC9zZGkvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3Qvc2RwL01ha2VmaWxlLmluIGIvZ3N0L3NkcC9NYWtlZmlsZS5pbgppbmRleCAwZTliMDQ4Li4zNWI2YWQyIDEwMDY0NAotLS0gYS9nc3Qvc2RwL01ha2VmaWxlLmluCisrKyBiL2dzdC9zZHAvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3Qvc2RwL2dzdHNkcGRlbXV4LmMgYi9nc3Qvc2RwL2dzdHNkcGRlbXV4LmMKaW5kZXggNjdlNGFmZC4uYWUzYmJlNCAxMDA2NDQKLS0tIGEvZ3N0L3NkcC9nc3RzZHBkZW11eC5jCisrKyBiL2dzdC9zZHAvZ3N0c2RwZGVtdXguYwpAQCAtMzUsNyArMzUsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZ25vbWV2ZnNzcmMgbG9jYXRpb249aHR0cDovL3NvbWUuc2VydmVyL3Nlc3Npb24uc2RwICEgc2RwZGVtdXggISBmYWtlc2luaworICogZ3N0LWxhdW5jaC0xLjAgc291cGh0dHBzcmMgbG9jYXRpb249aHR0cDovL3NvbWUuc2VydmVyL3Nlc3Npb24uc2RwICEgc2RwZGVtdXggISBmYWtlc2luawogICogXXwgRXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byBhbiBIVFRQIHNlcnZlciB0aGF0IGNvbnRhaW5zIGFuIFNEUCBzZXNzaW9uIGRlc2NyaXB0aW9uCiAgKiB0aGF0IGdldHMgcGFyc2VkIGJ5IHNkcGRlbXV4IGFuZCBzZW5kIHRoZSByYXcgUlRQIHBhY2tldHMgdG8gYSBmYWtlc2luay4KICAqIDwvcmVmc2VjdDI+CkBAIC05NCw5ICs5NCw2IEBACiBzdGF0aWMgdm9pZCBnc3Rfc2RwX2RlbXV4X2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIAotc3RhdGljIEdzdENhcHMgKmdzdF9zZHBfZGVtdXhfbWVkaWFfdG9fY2FwcyAoZ2ludCBwdCwKLSAgICBjb25zdCBHc3RTRFBNZWRpYSAqIG1lZGlhKTsKLQogc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGdzdF9zZHBfZGVtdXhfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKICAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKIHN0YXRpYyB2b2lkIGdzdF9zZHBfZGVtdXhfaGFuZGxlX21lc3NhZ2UgKEdzdEJpbiAqIGJpbiwgR3N0TWVzc2FnZSAqIG1lc3NhZ2UpOwpAQCAtMzk2LDkgKzM5MywxNCBAQAogICAvKiB3ZSBtdXN0IGhhdmUgYSBwYXlsb2FkLiBObyBwYXlsb2FkIG1lYW5zIHdlIGNhbm5vdCBjcmVhdGUgY2FwcyAqLwogICAvKiBGSVhNRSwgaGFuZGxlIG11bHRpcGxlIGZvcm1hdHMuICovCiAgIGlmICgocGF5bG9hZCA9IGdzdF9zZHBfbWVkaWFfZ2V0X2Zvcm1hdCAobWVkaWEsIDApKSkgeworICAgIEdzdFN0cnVjdHVyZSAqczsKKwogICAgIHN0cmVhbS0+cHQgPSBhdG9pIChwYXlsb2FkKTsKICAgICAvKiBjb252ZXJ0IGNhcHMgKi8KLSAgICBzdHJlYW0tPmNhcHMgPSBnc3Rfc2RwX2RlbXV4X21lZGlhX3RvX2NhcHMgKHN0cmVhbS0+cHQsIG1lZGlhKTsKKyAgICBzdHJlYW0tPmNhcHMgPSBnc3Rfc2RwX21lZGlhX2dldF9jYXBzX2Zyb21fbWVkaWEgKG1lZGlhLCBzdHJlYW0tPnB0KTsKKworICAgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChzdHJlYW0tPmNhcHMsIDApOworICAgIGdzdF9zdHJ1Y3R1cmVfc2V0X25hbWUgKHMsICJhcHBsaWNhdGlvbi94LXJ0cCIpOwogCiAgICAgaWYgKHN0cmVhbS0+cHQgPj0gOTYpIHsKICAgICAgIC8qIElmIHdlIGhhdmUgYSBkeW5hbWljIHBheWxvYWQgdHlwZSwgc2VlIGlmIHdlIGhhdmUgYSBzdHJlYW0gd2l0aCB0aGUKQEAgLTQ4MiwyNTYgKzQ4NCwxMiBAQAogICBkZW11eC0+bnVtc3RyZWFtcyA9IDA7CiB9CiAKLSNkZWZpbmUgUEFSU0VfSU5UKHAsIGRlbCwgcmVzKSAgICAgICAgICBcCi1HX1NUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBnY2hhciAqdCA9IHA7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgcCA9IHN0cnN0ciAocCwgZGVsKTsgICAgICAgICAgICAgICAgICBcCi0gIGlmIChwID09IE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJlcyA9IC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKnAgPSAnXDAnOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHArKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXMgPSBhdG9pICh0KTsgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSBHX1NUTVRfRU5ECi0KLSNkZWZpbmUgUEFSU0VfU1RSSU5HKHAsIGRlbCwgcmVzKSAgICAgICBcCi1HX1NUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBnY2hhciAqdCA9IHA7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgcCA9IHN0cnN0ciAocCwgZGVsKTsgICAgICAgICAgICAgICAgICBcCi0gIGlmIChwID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJlcyA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwID0gdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAqcCA9ICdcMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJlcyA9IHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19IEdfU1RNVF9FTkQKLQotI2RlZmluZSBTS0lQX1NQQUNFUyhwKSAgICAgICAgICAgICAgICAgIFwKLSAgd2hpbGUgKCpwICYmIGdfYXNjaWlfaXNzcGFjZSAoKnApKSAgICBcCi0gICAgcCsrOwotCi0vKiBydHBtYXAgY29udGFpbnM6Ci0gKgotICogIDxwYXlsb2FkPiA8ZW5jb2RpbmdfbmFtZT4vPGNsb2NrX3JhdGU+Wy88ZW5jb2RpbmdfcGFyYW1zPl0KLSAqLwotc3RhdGljIGdib29sZWFuCi1nc3Rfc2RwX2RlbXV4X3BhcnNlX3J0cG1hcCAoY29uc3QgZ2NoYXIgKiBydHBtYXAsIGdpbnQgKiBwYXlsb2FkLCBnY2hhciAqKiBuYW1lLAotICAgIGdpbnQgKiByYXRlLCBnY2hhciAqKiBwYXJhbXMpCi17Ci0gIGdjaGFyICpwLCAqdDsKLQotICBwID0gKGdjaGFyICopIHJ0cG1hcDsKLQotICBQQVJTRV9JTlQgKHAsICIgIiwgKnBheWxvYWQpOwotICBpZiAoKnBheWxvYWQgPT0gLTEpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIFNLSVBfU1BBQ0VTIChwKTsKLSAgaWYgKCpwID09ICdcMCcpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIFBBUlNFX1NUUklORyAocCwgIi8iLCAqbmFtZSk7Ci0gIGlmICgqbmFtZSA9PSBOVUxMKSB7Ci0gICAgR1NUX0RFQlVHICgibm8gcmF0ZSwgbmFtZSAlcyIsIHApOwotICAgIC8qIG5vIHJhdGUsIGFzc3VtZSAtMSB0aGVuICovCi0gICAgKm5hbWUgPSBwOwotICAgICpyYXRlID0gLTE7Ci0gICAgcmV0dXJuIFRSVUU7Ci0gIH0KLQotICB0ID0gcDsKLSAgcCA9IHN0cnN0ciAocCwgIi8iKTsKLSAgaWYgKHAgPT0gTlVMTCkgewotICAgICpyYXRlID0gYXRvaSAodCk7Ci0gICAgcmV0dXJuIFRSVUU7Ci0gIH0KLSAgKnAgPSAnXDAnOwotICBwKys7Ci0gICpyYXRlID0gYXRvaSAodCk7Ci0KLSAgdCA9IHA7Ci0gIGlmICgqcCA9PSAnXDAnKQotICAgIHJldHVybiBUUlVFOwotICAqcGFyYW1zID0gdDsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotLyoKLSAqICBNYXBwaW5nIG9mIGNhcHMgdG8gYW5kIGZyb20gU0RQIGZpZWxkczoKLSAqCi0gKiAgIG09PG1lZGlhPiA8VURQIHBvcnQ+IFJUUC9BVlAgPHBheWxvYWQ+IAotICogICBhPXJ0cG1hcDo8cGF5bG9hZD4gPGVuY29kaW5nX25hbWU+LzxjbG9ja19yYXRlPlsvPGVuY29kaW5nX3BhcmFtcz5dCi0gKiAgIGE9Zm10cDo8cGF5bG9hZD4gPHBhcmFtPls9PHZhbHVlPl07Li4uCi0gKi8KLXN0YXRpYyBHc3RDYXBzICoKLWdzdF9zZHBfZGVtdXhfbWVkaWFfdG9fY2FwcyAoZ2ludCBwdCwgY29uc3QgR3N0U0RQTWVkaWEgKiBtZWRpYSkKLXsKLSAgR3N0Q2FwcyAqY2FwczsKLSAgY29uc3QgZ2NoYXIgKnJ0cG1hcDsKLSAgY29uc3QgZ2NoYXIgKmZtdHA7Ci0gIGdjaGFyICpuYW1lID0gTlVMTDsKLSAgZ2ludCByYXRlID0gLTE7Ci0gIGdjaGFyICpwYXJhbXMgPSBOVUxMOwotICBnY2hhciAqdG1wOwotICBHc3RTdHJ1Y3R1cmUgKnM7Ci0gIGdpbnQgcGF5bG9hZCA9IDA7Ci0gIGdib29sZWFuIHJldDsKLQotICAvKiBnZXQgYW5kIHBhcnNlIHJ0cG1hcCAqLwotICBpZiAoKHJ0cG1hcCA9IGdzdF9zZHBfbWVkaWFfZ2V0X2F0dHJpYnV0ZV92YWwgKG1lZGlhLCAicnRwbWFwIikpKSB7Ci0gICAgcmV0ID0gZ3N0X3NkcF9kZW11eF9wYXJzZV9ydHBtYXAgKHJ0cG1hcCwgJnBheWxvYWQsICZuYW1lLCAmcmF0ZSwgJnBhcmFtcyk7Ci0gICAgaWYgKHJldCkgewotICAgICAgaWYgKHBheWxvYWQgIT0gcHQpIHsKLSAgICAgICAgLyogd2UgaWdub3JlIHRoZSBydHBtYXAgaWYgdGhlIHBheWxvYWQgdHlwZSBpcyBkaWZmZXJlbnQuICovCi0gICAgICAgIGdfd2FybmluZyAoInJ0cG1hcCBvZiB3cm9uZyBwYXlsb2FkIHR5cGUsIGlnbm9yaW5nIik7Ci0gICAgICAgIG5hbWUgPSBOVUxMOwotICAgICAgICByYXRlID0gLTE7Ci0gICAgICAgIHBhcmFtcyA9IE5VTEw7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8qIGlmIHdlIGZhaWxlZCB0byBwYXJzZSB0aGUgcnRwbWFwIGZvciBhIGR5bmFtaWMgcGF5bG9hZCB0eXBlLCB3ZSBoYXZlIGFuCi0gICAgICAgKiBlcnJvciAqLwotICAgICAgaWYgKHB0ID49IDk2KQotICAgICAgICBnb3RvIG5vX3J0cG1hcDsKLSAgICAgIC8qIGVsc2Ugd2UgY2FuIGlnbm9yZSAqLwotICAgICAgZ193YXJuaW5nICgiZXJyb3IgcGFyc2luZyBydHBtYXAsIGlnbm9yaW5nIik7Ci0gICAgfQotICB9IGVsc2UgewotICAgIC8qIGR5bmFtaWMgcGF5bG9hZHMgbmVlZCBydHBtYXAgb3Igd2UgZmFpbCAqLwotICAgIGlmIChwdCA+PSA5NikKLSAgICAgIGdvdG8gbm9fcnRwbWFwOwotICB9Ci0gIC8qIGNoZWNrIGlmIHdlIGhhdmUgYSByYXRlLCBpZiBub3QsIHdlIG5lZWQgdG8gbG9vayB1cCB0aGUgcmF0ZSBmcm9tIHRoZQotICAgKiBkZWZhdWx0IHJhdGVzIGJhc2VkIG9uIHRoZSBwYXlsb2FkIHR5cGVzLiAqLwotICBpZiAocmF0ZSA9PSAtMSkgewotICAgIGNvbnN0IEdzdFJUUFBheWxvYWRJbmZvICppbmZvOwotCi0gICAgaWYgKEdTVF9SVFBfUEFZTE9BRF9JU19EWU5BTUlDIChwdCkpIHsKLSAgICAgIC8qIGR5bmFtaWMgdHlwZXMsIHVzZSBtZWRpYSBhbmQgZW5jb2RpbmdfbmFtZSAqLwotICAgICAgdG1wID0gZ19hc2NpaV9zdHJkb3duIChtZWRpYS0+bWVkaWEsIC0xKTsKLSAgICAgIGluZm8gPSBnc3RfcnRwX3BheWxvYWRfaW5mb19mb3JfbmFtZSAodG1wLCBuYW1lKTsKLSAgICAgIGdfZnJlZSAodG1wKTsKLSAgICB9IGVsc2UgewotICAgICAgLyogc3RhdGljIHR5cGVzLCB1c2UgcGF5bG9hZCB0eXBlICovCi0gICAgICBpbmZvID0gZ3N0X3J0cF9wYXlsb2FkX2luZm9fZm9yX3B0IChwdCk7Ci0gICAgfQotCi0gICAgaWYgKGluZm8pIHsKLSAgICAgIGlmICgocmF0ZSA9IGluZm8tPmNsb2NrX3JhdGUpID09IDApCi0gICAgICAgIHJhdGUgPSAtMTsKLSAgICB9Ci0gICAgLyogd2UgZmFpbCBpZiB3ZSBjYW5ub3QgZmluZCBvbmUgKi8KLSAgICBpZiAocmF0ZSA9PSAtMSkKLSAgICAgIGdvdG8gbm9fcmF0ZTsKLSAgfQotCi0gIHRtcCA9IGdfYXNjaWlfc3RyZG93biAobWVkaWEtPm1lZGlhLCAtMSk7Ci0gIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXBwbGljYXRpb24veC1ydHAiLAotICAgICAgIm1lZGlhIiwgR19UWVBFX1NUUklORywgdG1wLCAicGF5bG9hZCIsIEdfVFlQRV9JTlQsIHB0LCBOVUxMKTsKLSAgZ19mcmVlICh0bXApOwotICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0KLSAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJjbG9jay1yYXRlIiwgR19UWVBFX0lOVCwgcmF0ZSwgTlVMTCk7Ci0KLSAgLyogZW5jb2RpbmcgbmFtZSBtdXN0IGJlIHVwcGVyIGNhc2UgKi8KLSAgaWYgKG5hbWUgIT0gTlVMTCkgewotICAgIHRtcCA9IGdfYXNjaWlfc3RydXAgKG5hbWUsIC0xKTsKLSAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgImVuY29kaW5nLW5hbWUiLCBHX1RZUEVfU1RSSU5HLCB0bXAsIE5VTEwpOwotICAgIGdfZnJlZSAodG1wKTsKLSAgfQotCi0gIC8qIHBhcmFtcyBtdXN0IGJlIGxvd2VyIGNhc2UgKi8KLSAgaWYgKHBhcmFtcyAhPSBOVUxMKSB7Ci0gICAgdG1wID0gZ19hc2NpaV9zdHJkb3duIChwYXJhbXMsIC0xKTsKLSAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgImVuY29kaW5nLXBhcmFtcyIsIEdfVFlQRV9TVFJJTkcsIHRtcCwgTlVMTCk7Ci0gICAgZ19mcmVlICh0bXApOwotICB9Ci0KLSAgLyogcGFyc2Ugb3B0aW9uYWwgZm10cDogZmllbGQgKi8KLSAgaWYgKChmbXRwID0gZ3N0X3NkcF9tZWRpYV9nZXRfYXR0cmlidXRlX3ZhbCAobWVkaWEsICJmbXRwIikpKSB7Ci0gICAgZ2NoYXIgKnA7Ci0gICAgZ2ludCBwYXlsb2FkID0gMDsKLQotICAgIHAgPSAoZ2NoYXIgKikgZm10cDsKLQotICAgIC8qIHAgaXMgbm93IG9mIHRoZSBmb3JtYXQgPHBheWxvYWQ+IDxwYXJhbT5bPTx2YWx1ZT5dOy4uLiAqLwotICAgIFBBUlNFX0lOVCAocCwgIiAiLCBwYXlsb2FkKTsKLSAgICBpZiAocGF5bG9hZCAhPSAtMSAmJiBwYXlsb2FkID09IHB0KSB7Ci0gICAgICBnY2hhciAqKnBhaXJzOwotICAgICAgZ2ludCBpOwotCi0gICAgICAvKiA8cGFyYW0+Wz08dmFsdWU+XSBhcmUgc2VwYXJhdGVkIHdpdGggJzsnICovCi0gICAgICBwYWlycyA9IGdfc3Ryc3BsaXQgKHAsICI7IiwgMCk7Ci0gICAgICBmb3IgKGkgPSAwOyBwYWlyc1tpXTsgaSsrKSB7Ci0gICAgICAgIGdjaGFyICp2YWxwb3M7Ci0gICAgICAgIGNvbnN0IGdjaGFyICprZXksICp2YWw7Ci0gICAgICAgIGdpbnQgajsKLSAgICAgICAgY29uc3QgZ2NoYXIgKnJlc2VydmVkX2tleXNbXSA9Ci0gICAgICAgICAgICB7ICJtZWRpYSIsICJwYXlsb2FkIiwgImNsb2NrLXJhdGUiLCAiZW5jb2RpbmctbmFtZSIsCi0gICAgICAgICAgImVuY29kaW5nLXBhcmFtcyIKLSAgICAgICAgfTsKLQotICAgICAgICAvKiB0aGUga2V5IG1heSBub3QgaGF2ZSBhICc9JywgdGhlIHZhbHVlIGNhbiBoYXZlIG90aGVyICc9J3MgKi8KLSAgICAgICAgdmFscG9zID0gc3Ryc3RyIChwYWlyc1tpXSwgIj0iKTsKLSAgICAgICAgaWYgKHZhbHBvcykgewotICAgICAgICAgIC8qIHdlIGhhdmUgYSAnPScgYW5kIHRodXMgYSB2YWx1ZSwgcmVtb3ZlIHRoZSAnPScgd2l0aCBcMCAqLwotICAgICAgICAgICp2YWxwb3MgPSAnXDAnOwotICAgICAgICAgIC8qIHZhbHVlIGlzIGV2ZXJ5dGhpbmcgYmV0d2VlbiAnPScgYW5kICc7Jy4gRklYTUUsIHN0cmlwPyAqLwotICAgICAgICAgIHZhbCA9IGdfc3Ryc3RyaXAgKHZhbHBvcyArIDEpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIC8qIHNpbXBsZSA8cGFyYW0+Oy4uIGlzIHRyYW5zbGF0ZWQgaW50byA8cGFyYW0+PTE7Li4uICovCi0gICAgICAgICAgdmFsID0gIjEiOwotICAgICAgICB9Ci0gICAgICAgIC8qIHN0cmlwIHRoZSBrZXkgb2Ygc3BhY2VzLCBjb252ZXJ0IGtleSB0byBsb3dlcmNhc2UgYnV0IG5vdCB0aGUgdmFsdWUuICovCi0gICAgICAgIGtleSA9IGdfc3Ryc3RyaXAgKHBhaXJzW2ldKTsKLQotICAgICAgICAvKiBza2lwIGtleXMgZnJvbSB0aGUgZm10cCwgd2hpY2ggd2UgYWxyZWFkeSB1c2Ugb3Vyc2VsdmVzIGZvciB0aGUKLSAgICAgICAgICogY2Fwcy4gU29tZSBzb2Z0d2FyZSBpcyBhZGRpbmcgcmFuZG9tIHRoaW5ncyBsaWtlIGNsb2NrLXJhdGUgaW50bwotICAgICAgICAgKiB0aGUgZm10cCwgYW5kIHdlIHdvdWxkIG90aGVyd2lzZSBoZXJlIHNldCBhIHN0cmluZy10eXBlZCBjbG9jay1yYXRlCi0gICAgICAgICAqIGluIHRoZSBjYXBzLi4uIGFuZCB0aHVzIGZhaWwgdG8gY3JlYXRlIHZhbGlkIFJUUCBjYXBzCi0gICAgICAgICAqLwotICAgICAgICBmb3IgKGogPSAwOyBqIDwgR19OX0VMRU1FTlRTIChyZXNlcnZlZF9rZXlzKTsgaisrKSB7Ci0gICAgICAgICAgaWYgKGdfYXNjaWlfc3RyY2FzZWNtcCAocmVzZXJ2ZWRfa2V5c1tqXSwga2V5KSA9PSAwKSB7Ci0gICAgICAgICAgICBrZXkgPSAiIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzdHJsZW4gKGtleSkgPiAxKSB7Ci0gICAgICAgICAgdG1wID0gZ19hc2NpaV9zdHJkb3duIChrZXksIC0xKTsKLSAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgdG1wLCBHX1RZUEVfU1RSSU5HLCB2YWwsIE5VTEwpOwotICAgICAgICAgIGdfZnJlZSAodG1wKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZ19zdHJmcmVldiAocGFpcnMpOwotICAgIH0KLSAgfQotICByZXR1cm4gY2FwczsKLQotICAvKiBFUlJPUlMgKi8KLW5vX3J0cG1hcDoKLSAgewotICAgIGdfd2FybmluZyAoInJ0cG1hcCB0eXBlIG5vdCBnaXZlbiBmb3IgZHluYW1pYyBwYXlsb2FkICVkIiwgcHQpOwotICAgIHJldHVybiBOVUxMOwotICB9Ci1ub19yYXRlOgotICB7Ci0gICAgZ193YXJuaW5nICgicmF0ZSB1bmtub3duIGZvciBwYXlsb2FkIHR5cGUgJWQiLCBwdCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLX0KLQogLyogdGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgd2hlbiB0aGUgc2Vzc2lvbiBtYW5hZ2VyIGdlbmVyYXRlZCBhIG5ldyBzcmMgcGFkIHdpdGgKICAqIHBheWxvYWRlZCBSVFAgcGFja2V0cy4gV2Ugc2ltcGx5IGdob3N0IHRoZSBwYWQgaGVyZS4gKi8KIHN0YXRpYyB2b2lkCiBuZXdfc2Vzc2lvbl9wYWQgKEdzdEVsZW1lbnQgKiBzZXNzaW9uLCBHc3RQYWQgKiBwYWQsIEdzdFNEUERlbXV4ICogZGVtdXgpCiB7Ci0gIGdjaGFyICpuYW1lOworICBnY2hhciAqbmFtZSwgKnBhZF9uYW1lOwogICBHc3RQYWRUZW1wbGF0ZSAqdGVtcGxhdGU7CiAgIGdpbnQgaWQsIHNzcmMsIHB0OwogICBHTGlzdCAqbHN0cmVhbTsKQEAgLTc1NiwxMSArNTE0LDEzIEBACiAgIC8qIG5vIG5lZWQgZm9yIGEgdGltZW91dCBhbnltb3JlIG5vdyAqLwogICBnX29iamVjdF9zZXQgKEdfT0JKRUNUIChzdHJlYW0tPnVkcHNyY1swXSksICJ0aW1lb3V0IiwgKGd1aW50NjQpIDAsIE5VTEwpOwogCisgIHBhZF9uYW1lID0gZ19zdHJkdXBfcHJpbnRmICgic3RyZWFtXyV1Iiwgc3RyZWFtLT5pZCk7CiAgIC8qIGNyZWF0ZSBhIG5ldyBwYWQgd2Ugd2lsbCB1c2UgdG8gc3RyZWFtIHRvICovCiAgIHRlbXBsYXRlID0gZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmcnRwdGVtcGxhdGUpOwotICBzdHJlYW0tPnNyY3BhZCA9IGdzdF9naG9zdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKG5hbWUsIHBhZCwgdGVtcGxhdGUpOworICBzdHJlYW0tPnNyY3BhZCA9IGdzdF9naG9zdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKHBhZF9uYW1lLCBwYWQsIHRlbXBsYXRlKTsKICAgZ3N0X29iamVjdF91bnJlZiAodGVtcGxhdGUpOwogICBnX2ZyZWUgKG5hbWUpOworICBnX2ZyZWUgKHBhZF9uYW1lKTsKIAogICBzdHJlYW0tPmFkZGVkID0gVFJVRTsKICAgZ3N0X3BhZF9zZXRfYWN0aXZlIChzdHJlYW0tPnNyY3BhZCwgVFJVRSk7CmRpZmYgLS1naXQgYS9nc3Qvc2VnbWVudGNsaXAvTWFrZWZpbGUuaW4gYi9nc3Qvc2VnbWVudGNsaXAvTWFrZWZpbGUuaW4KaW5kZXggMzcxYWQwMi4uNzcyNGEzZSAxMDA2NDQKLS0tIGEvZ3N0L3NlZ21lbnRjbGlwL01ha2VmaWxlLmluCisrKyBiL2dzdC9zZWdtZW50Y2xpcC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzgsNiArMjc3LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTUsNiArMzE2LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjMsNyArMzI2LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQyLDggKzM0NCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjAsMTYgKzM2MywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTUsNiArMzk5LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIwLDYgKzQyNiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMSw2ICs1MjksNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM0LDggKzU0Myw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1MSw2ICs1NTgsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA4LDE2ICs2MTcsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjksNiArNjgwLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3OSw2ICs2OTEsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODgsNiArNzAxLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNSw3ICs3NDAsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9zZWdtZW50Y2xpcC9nc3R2aWRlb3NlZ21lbnRjbGlwLmMgYi9nc3Qvc2VnbWVudGNsaXAvZ3N0dmlkZW9zZWdtZW50Y2xpcC5jCmluZGV4IDc0MzBhNjUuLjBiMTY4ZTQgMTAwNjQ0Ci0tLSBhL2dzdC9zZWdtZW50Y2xpcC9nc3R2aWRlb3NlZ21lbnRjbGlwLmMKKysrIGIvZ3N0L3NlZ21lbnRjbGlwL2dzdHZpZGVvc2VnbWVudGNsaXAuYwpAQCAtMTY3LDggKzE2Nyw4IEBACiAKICAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwogCi0gIHJldCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uIChzLCAiZnJhbWVyYXRlIiwgJmZwc19uLCAmZnBzX2QpOwotICByZXQgPSAoZnBzX2QgIT0gMCk7CisgIHJldCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uIChzLCAiZnJhbWVyYXRlIiwgJmZwc19uLCAmZnBzX2QpCisgICAgICAmJiAoZnBzX2QgIT0gMCk7CiAKICAgaWYgKHJldCkgewogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJDb25maWd1cmVkIGZyYW1lcmF0ZSAlZC8lZCIsIGZwc19uLCBmcHNfZCk7CmRpZmYgLS1naXQgYS9nc3Qvc2lyZW4vTWFrZWZpbGUuaW4gYi9nc3Qvc2lyZW4vTWFrZWZpbGUuaW4KaW5kZXggNmM5OWI5Ny4uOTg5NWZmMCAxMDA2NDQKLS0tIGEvZ3N0L3NpcmVuL01ha2VmaWxlLmluCisrKyBiL2dzdC9zaXJlbi9NYWtlZmlsZS5pbgpAQCAtMTE1LDE2ICsxMTUsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3Ntb290aC9NYWtlZmlsZS5pbiBiL2dzdC9zbW9vdGgvTWFrZWZpbGUuaW4KaW5kZXggZmU4MmZjMS4uYWU1YjQ0YiAxMDA2NDQKLS0tIGEvZ3N0L3Ntb290aC9NYWtlZmlsZS5pbgorKysgYi9nc3Qvc21vb3RoL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3NwZWVkL01ha2VmaWxlLmluIGIvZ3N0L3NwZWVkL01ha2VmaWxlLmluCmluZGV4IDY0ZWVjNjIuLmQzNGVlNTYgMTAwNjQ0Ci0tLSBhL2dzdC9zcGVlZC9NYWtlZmlsZS5pbgorKysgYi9nc3Qvc3BlZWQvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3Qvc3BlZWQvZ3N0c3BlZWQuYyBiL2dzdC9zcGVlZC9nc3RzcGVlZC5jCmluZGV4IDlmY2RhZDMuLmMwZjkxOTggMTAwNjQ0Ci0tLSBhL2dzdC9zcGVlZC9nc3RzcGVlZC5jCisrKyBiL2dzdC9zcGVlZC9nc3RzcGVlZC5jCkBAIC0zMSw3ICszMSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPXRlc3Qub2dnICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgc3BlZWQgc3BlZWQ9MS41ICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGF1dG9hdWRpb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249dGVzdC5vZ2cgISBkZWNvZGViaW4gISBhdWRpb2NvbnZlcnQgISBzcGVlZCBzcGVlZD0xLjUgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgYXV0b2F1ZGlvc2luawogICogXXwgUGxheXMgYW4gLm9nZyBmaWxlIGF0IDEuNXggc3BlZWQuCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3Qvc3RlcmVvL01ha2VmaWxlLmluIGIvZ3N0L3N0ZXJlby9NYWtlZmlsZS5pbgppbmRleCBhY2UwODBjLi41YjQzODg2IDEwMDY0NAotLS0gYS9nc3Qvc3RlcmVvL01ha2VmaWxlLmluCisrKyBiL2dzdC9zdGVyZW8vTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3Qvc3RlcmVvL2dzdHN0ZXJlby5jIGIvZ3N0L3N0ZXJlby9nc3RzdGVyZW8uYwppbmRleCBlYmFkZjlhLi5mN2UwMTNiIDEwMDY0NAotLS0gYS9nc3Qvc3RlcmVvL2dzdHN0ZXJlby5jCisrKyBiL2dzdC9zdGVyZW8vZ3N0c3RlcmVvLmMKQEAgLTI5LDcgKzI5LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPXNpbmUub2dnICEgb2dnZGVtdXggISB2b3JiaXNkZWMgISBhdWRpb2NvbnZlcnQgISBzdGVyZW8gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgYWxzYXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZpbGVzcmMgbG9jYXRpb249c2luZS5vZ2cgISBvZ2dkZW11eCAhIHZvcmJpc2RlYyAhIGF1ZGlvY29udmVydCAhIHN0ZXJlbyAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBhbHNhc2luawogICogXXwgUGxheSBhbiBPZ2cvVm9yYmlzIGZpbGUuCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3Qvc3ViZW5jL01ha2VmaWxlLmluIGIvZ3N0L3N1YmVuYy9NYWtlZmlsZS5pbgppbmRleCBjMGQ1MmVmLi41NTE4MDVkIDEwMDY0NAotLS0gYS9nc3Qvc3ViZW5jL01ha2VmaWxlLmluCisrKyBiL2dzdC9zdWJlbmMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvdHRhL01ha2VmaWxlLmluIGIvZ3N0L3R0YS9NYWtlZmlsZS5pbgppbmRleCAwMDcyMjVkLi42ODI5MDVkIDEwMDY0NAotLS0gYS9nc3QvdHRhL01ha2VmaWxlLmluCisrKyBiL2dzdC90dGEvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvdmlkZW9maWx0ZXJzL01ha2VmaWxlLmluIGIvZ3N0L3ZpZGVvZmlsdGVycy9NYWtlZmlsZS5pbgppbmRleCA3OWMwNTMwLi43MTRhZDEyIDEwMDY0NAotLS0gYS9nc3QvdmlkZW9maWx0ZXJzL01ha2VmaWxlLmluCisrKyBiL2dzdC92aWRlb2ZpbHRlcnMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjgwLDYgKzI3OSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE3LDYgKzMxOCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI1LDcgKzMyOCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0NCw4ICszNDYsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYyLDE2ICszNjUsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk3LDYgKzQwMSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMiw2ICs0MjgsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjMsNiArNTMxLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNiw4ICs1NDUsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTMsNiArNTYwLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxMCwxNiArNjE5LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcxLDYgKzY4Miw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODEsNiArNjkzLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjkwLDYgKzcwMyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjcsNyArNzQyLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvdmlkZW9maWx0ZXJzL2dzdHNjZW5lY2hhbmdlLmMgYi9nc3QvdmlkZW9maWx0ZXJzL2dzdHNjZW5lY2hhbmdlLmMKaW5kZXggN2FiZmM4Yi4uNWFkZjNjZSAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvZmlsdGVycy9nc3RzY2VuZWNoYW5nZS5jCisrKyBiL2dzdC92aWRlb2ZpbHRlcnMvZ3N0c2NlbmVjaGFuZ2UuYwpAQCAtMzUsNyArMzUsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgZmlsZXNyYyBsb2NhdGlvbj1zb21lX2ZpbGUub2d2ICEgZGVjb2RlYmluICEgCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPXNvbWVfZmlsZS5vZ3YgISBkZWNvZGViaW4gIQogICogICBzY2VuZWNoYW5nZSAhIHRoZW9yYWVuYyAhIGZha2VzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KZGlmZiAtLWdpdCBhL2dzdC92aWRlb2ZpbHRlcnMvZ3N0dmlkZW9kaWZmLmMgYi9nc3QvdmlkZW9maWx0ZXJzL2dzdHZpZGVvZGlmZi5jCmluZGV4IGM2Y2RjODYuLjZmNWIzNWUgMTAwNjQ0Ci0tLSBhL2dzdC92aWRlb2ZpbHRlcnMvZ3N0dmlkZW9kaWZmLmMKKysrIGIvZ3N0L3ZpZGVvZmlsdGVycy9nc3R2aWRlb2RpZmYuYwpAQCAtMjQsNyArMjQsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgZmFrZXNyYyAhIHZpZGVvZGlmZiAhIEZJWE1FICEgZmFrZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZha2VzcmMgISB2aWRlb2RpZmYgISBGSVhNRSAhIGZha2VzaW5rCiAgKiBdfAogICogRklYTUUgRGVzY3JpYmUgd2hhdCB0aGUgcGlwZWxpbmUgZG9lcy4KICAqIDwvcmVmc2VjdDI+CmRpZmYgLS1naXQgYS9nc3QvdmlkZW9maWx0ZXJzL2dzdHplYnJhc3RyaXBlLmMgYi9nc3QvdmlkZW9maWx0ZXJzL2dzdHplYnJhc3RyaXBlLmMKaW5kZXggMGIwODEwMC4uODFmNThiOCAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvZmlsdGVycy9nc3R6ZWJyYXN0cmlwZS5jCisrKyBiL2dzdC92aWRlb2ZpbHRlcnMvZ3N0emVicmFzdHJpcGUuYwpAQCAtMzAsNyArMzAsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgemVicmFzdHJpcGUgISB4dmltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgemVicmFzdHJpcGUgISB4dmltYWdlc2luawogICogXXwKICAqIE1hcmtzIG92ZXJleHBvc2VkIGFyZWFzIG9mIHRoZSB2aWRlbyB3aXRoIHplYnJhIHN0cmlwZXMuCiAgKgpkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC9NYWtlZmlsZS5hbSBiL2dzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYxOTcyOQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvTWFrZWZpbGUuYW0KQEAgLTAsMCArMSw5IEBACitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwubGEKKworbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX1NPVVJDRVMgPSBnc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYworbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpCitsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfTElCQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pICQoR1NUX0JBU0VfTElCUykgJChMSUJNKQorbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKK2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQorCitub2luc3RfSEVBREVSUyA9IGdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5oCmRpZmYgLS1naXQgYS9nc3QvbGl2ZWFkZGVyL01ha2VmaWxlLmluIGIvZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC9NYWtlZmlsZS5pbgpzaW1pbGFyaXR5IGluZGV4IDg4JQpjb3B5IGZyb20gZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbgpjb3B5IHRvIGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvTWFrZWZpbGUuaW4KaW5kZXggYmE5ZTVhMi4uNDA0ZmM3YSAxMDA2NDQKLS0tIGEvZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbgorKysgYi9nc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL01ha2VmaWxlLmluCkBAIC05MCw3ICs5MCw3IEBACiBidWlsZF90cmlwbGV0ID0gQGJ1aWxkQAogaG9zdF90cmlwbGV0ID0gQGhvc3RACiB0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACi1zdWJkaXIgPSBnc3QvbGl2ZWFkZGVyCitzdWJkaXIgPSBnc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsCiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CiBhbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYWMtZXhwYW5kLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hdXRvLWFsdC5tNCBcCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE2NCwxOCArMTYzLDIxIEBACiBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIKIExUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQotbGliZ3N0bGl2ZWFkZGVyX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCitsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpCi1hbV9saWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUyA9IGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8KLWxpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUykKK2FtX2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9PQkpFQ1RTID0gIFwKKwlsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGEtZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmxvCitsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfT0JKRUNUUyA9ICBcCisJJChhbV9saWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKIGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9sdF8wID0gLS1zaWxlbnQKIGFtX192X2x0XzEgPSAKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKLQkkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayBcCi0JJChDQ0xEKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSBcCi0JJChsaWJnc3RsaXZlYWRkZXJfbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAorbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAorCSQobGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIFwKKwktLW1vZGU9bGluayAkKENDTEQpICQobGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0NGTEFHUykgXAorCSQoQ0ZMQUdTKSAkKGxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9MREZMQUdTKSAkKExERkxBR1MpIFwKKwktbyAkQAogQU1fVl9QID0gJChhbV9fdl9QX0BBTV9WQCkKIGFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfUF8wID0gZmFsc2UKQEAgLTIxMCw4ICsyMTIsOCBAQAogYW1fX3ZfQ0NMRF8gPSAkKGFtX192X0NDTERfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9DQ0xEXzAgPSBAZWNobyAiICBDQ0xEICAgICIgJEA7CiBhbV9fdl9DQ0xEXzEgPSAKLVNPVVJDRVMgPSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTKQotRElTVF9TT1VSQ0VTID0gJChsaWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUykKK1NPVVJDRVMgPSAkKGxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9TT1VSQ0VTKQorRElTVF9TT1VSQ0VTID0gJChsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfU09VUkNFUykKIGFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0gXAogICBjYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKICAgICBufG5vfE5PKSBmYWxzZTs7IFwKQEAgLTI3NCw2ICsyNzYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzYyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDI1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyOCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTQyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1Nyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxNiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY5MCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs3MDAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczOSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzYxLDE2ICs3NzgsMTMgQEAKIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0bGl2ZWFkZGVyLmxhCi1saWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUyA9IGxpdmVhZGRlci5jCi1saWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpCi1saWJnc3RsaXZlYWRkZXJfbGFfTElCQUREID0gXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpCi0KLWxpYmdzdGxpdmVhZGRlcl9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCi1saWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKLW5vaW5zdF9IRUFERVJTID0gbGl2ZWFkZGVyLmgKK3BsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbC5sYQorbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX1NPVVJDRVMgPSBnc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYworbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpCitsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfTElCQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pICQoR1NUX0JBU0VfTElCUykgJChMSUJNKQorbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKK2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQorbm9pbnN0X0hFQURFUlMgPSBnc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuaAogYWxsOiBhbGwtYW0KIAogLlNVRkZJWEVTOgpAQCAtNzg0LDkgKzc5OCw5IEBACiAJICAgICAgZXhpdCAxOzsgXAogCSAgZXNhYzsgXAogCWRvbmU7IFwKLQllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBnc3QvbGl2ZWFkZGVyL01ha2VmaWxlJzsgXAorCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZ251IGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvTWFrZWZpbGUnOyBcCiAJJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAotCSAgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L2xpdmVhZGRlci9NYWtlZmlsZQorCSAgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC9NYWtlZmlsZQogTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwogCUBjYXNlICckPycgaW4gXAogCSAgKmNvbmZpZy5zdGF0dXMqKSBcCkBAIC04NDAsOCArODU0LDggQEAKIAkgIHJtIC1mICQke2xvY3N9OyBcCiAJfQogCi1saWJnc3RsaXZlYWRkZXIubGE6ICQobGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTKSAKLQkkKEFNX1ZfQ0NMRCkkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSU5LKSAtcnBhdGggJChwbHVnaW5kaXIpICQobGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQkFERCkgJChMSUJTKQorbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsLmxhOiAkKGxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9PQkpFQ1RTKSAkKGxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0RFUEVOREVOQ0lFUykgCisJJChBTV9WX0NDTEQpJChsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfTElOSykgLXJwYXRoICQocGx1Z2luZGlyKSAkKGxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9PQkpFQ1RTKSAkKGxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9MSUJBREQpICQoTElCUykKIAogbW9zdGx5Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi4kKE9CSkVYVCkKQEAgLTg0OSw3ICs4NjMsNyBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGEtZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLlBsb0BhbV9fcXVvdGVACiAKIC5jLm86CiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCkBAIC04NzUsMTIgKzg4OSwxMiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAogCi1saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvOiBsaXZlYWRkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuVHBvIC1jIC1vIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gYHRlc3QgLWYgJ2xpdmVhZGRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaXZlYWRkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5UcG8gJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbGl2ZWFkZGVyLmMnIG9iamVjdD0nbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhLWdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5sbzogZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGEtZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGEtZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLlRwbyAtYyAtbyBsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGEtZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmxvIGB0ZXN0IC1mICdnc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYS1nc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuVHBvICQoREVQRElSKS9saWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGEtZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jJyBvYmplY3Q9J2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYS1nc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gYHRlc3QgLWYgJ2xpdmVhZGRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaXZlYWRkZXIuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhLWdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5sbyBgdGVzdCAtZiAnZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jCiAKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KZGlmZiAtLWdpdCBhL2dzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmMgYi9nc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL2dzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZTk5NjYKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL2dzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jCkBAIC0wLDAgKzEsNzg5IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVml2aWEgTmlrb2xhaWRvdSA8dml2aWFAdG9vbHNvbmFpci5jb20+CisgKgorICogQmFzZWQgb24gZ3N0bGV2ZWwuYzoKKyAqIENvcHlyaWdodCAoQykgMjAwMCwyMDAxLDIwMDIsMjAwMywyMDA1CisgKiAgICAgICAgICAgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzIGF0IGFwZXN0YWFydCBkb3Qgb3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKy8qKgorICogU0VDVElPTjplbGVtZW50LXZpZGVvZnJhbWUtYXVkaW9sZXZlbAorICoKKyAqIFRoaXMgZWxlbWVudCBhY3RzIGxpa2UgYSBzeW5jaHJvbml6ZWQgYXVkaW8vdmlkZW8gImxldmVsIi4gSXQgZ2F0aGVycworICogYWxsIGF1ZGlvIGJ1ZmZlcnMgc2VudCBiZXR3ZWVuIHR3byB2aWRlbyBmcmFtZXMsIGFuZCB0aGVuIHNlbmRzIGEgbWVzc2FnZQorICogdGhhdCBjb250YWlucyB0aGUgUk1TIHZhbHVlIG9mIGFsbCBzYW1wbGVzIGZvciB0aGVzZSBidWZmZXJzLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtbSBmaWxlc3JjIGxvY2F0aW9uPSJmaWxlLm1rdiIgISBkZWNvZGViaW4gbmFtZT1kICEgImF1ZGlvL3gtcmF3IiAhIHZpZGVvZnJhbWUtYXVkaW9sZXZlbCBuYW1lPWwgISBhdXRvYXVkaW9zaW5rIGQuICEgInZpZGVvL3gtcmF3IiAhIGwuIGwuICEgcXVldWUgISBhdXRvdmlkZW9zaW5rIF18CisgKiA8L3JlZnNlY3QyPgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworLyogRklYTUUgMi4wOiBzdXBwcmVzcyB3YXJuaW5ncyBmb3IgZGVwcmVjYXRlZCBBUEkgc3VjaCBhcyBHVmFsdWVBcnJheQorICogd2l0aCBuZXdlciBHTGliIHZlcnNpb25zICg+PSAyLjMxLjApICovCisjZGVmaW5lIEdMSUJfRElTQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUworCisjaW5jbHVkZSAiZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmgiCisjaW5jbHVkZSA8bWF0aC5oPgorCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2RlYnVnCisjaWYgR19CWVRFX09SREVSID09IEdfTElUVExFX0VORElBTgorIyBkZWZpbmUgRk9STUFUUyAieyBTOCwgUzE2TEUsIFMzMkxFLCBGMzJMRSwgRjY0TEUgfSIKKyNlbHNlCisjIGRlZmluZSBGT1JNQVRTICJ7IFM4LCBTMTZCRSwgUzMyQkUsIEYzMkJFLCBGNjRCRSB9IgorI2VuZGlmCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0RFRkFVTFQpOworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgYXVkaW9fc2lua190ZW1wbGF0ZSA9CitHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoImFzaW5rIiwKKyAgICBHU1RfUEFEX1NJTkssCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfQVVESU9fQ0FQU19NQUtFIChGT1JNQVRTKSkKKyAgICApOworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgYXVkaW9fc3JjX3RlbXBsYXRlID0KK0dTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgiYXNyYyIsCisgICAgR1NUX1BBRF9TUkMsCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfQVVESU9fQ0FQU19NQUtFIChGT1JNQVRTKSkKKyAgICApOworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgdmlkZW9fc2lua190ZW1wbGF0ZSA9CitHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInZzaW5rIiwKKyAgICBHU1RfUEFEX1NJTkssCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXciKQorICAgICk7CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSB2aWRlb19zcmNfdGVtcGxhdGUgPQorR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJ2c3JjIiwKKyAgICBHU1RfUEFEX1NSQywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdyIpCisgICAgKTsKKworI2RlZmluZSBwYXJlbnRfY2xhc3MgZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9wYXJlbnRfY2xhc3MKK0dfREVGSU5FX1RZUEUgKEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsLCBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsLAorICAgIEdTVF9UWVBFX0VMRU1FTlQpOworCitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2FzaW5rX2NoYWluIChHc3RQYWQgKiBwYWQsCisgICAgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBpbmJ1Zik7CitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX3ZzaW5rX2NoYWluIChHc3RQYWQgKiBwYWQsCisgICAgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBpbmJ1Zik7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9hc2lua19ldmVudCAoR3N0UGFkICogcGFkLAorICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF92c2lua19ldmVudCAoR3N0UGFkICogcGFkLAorICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCk7CitzdGF0aWMgR3N0SXRlcmF0b3IgKmdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfaXRlcmF0ZV9pbnRlcm5hbF9saW5rcyAoR3N0UGFkICoKKyAgICBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCk7CisKK3N0YXRpYyB2b2lkIGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZmluYWxpemUgKEdPYmplY3QgKiBnb2JqZWN0KTsKKworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICoKKyAgICBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKKworc3RhdGljIHZvaWQKK2dzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfY2xhc3NfaW5pdCAoR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWxDbGFzcyAqIGtsYXNzKQoreworICBHc3RFbGVtZW50Q2xhc3MgKmdzdGVsZW1lbnRfY2xhc3M7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CisKKyAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZGVidWcsCisgICAgICAidmlkZW9mcmFtZS1hdWRpb2xldmVsIiwgMCwgIlN5bmNocm9uaXplZCBhdWRpby92aWRlbyBsZXZlbCIpOworCisgIGdzdGVsZW1lbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOworCisgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGdzdGVsZW1lbnRfY2xhc3MsCisgICAgICAiVmlkZW8tZnJhbWUgYXVkaW8gbGV2ZWwiLCAiRmlsdGVyL0FuYWx5emVyL0F1ZGlvIiwKKyAgICAgICJTeW5jaHJvbml6ZWQgYXVkaW8vdmlkZW8gUk1TIExldmVsIG1lc3NlbmdlciBmb3IgYXVkaW8vcmF3IiwKKyAgICAgICJWaXZpYSBOaWtvbGFpZG91IDx2aXZpYUB0b29sc29uYWlyLmNvbT4iKTsKKworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZmluYWxpemU7CisgIGdzdGVsZW1lbnRfY2xhc3MtPmNoYW5nZV9zdGF0ZSA9IGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfY2hhbmdlX3N0YXRlOworCisgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCisgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZhdWRpb19zcmNfdGVtcGxhdGUpKTsKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmF1ZGlvX3NpbmtfdGVtcGxhdGUpKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmdmlkZW9fc3JjX3RlbXBsYXRlKSk7CisgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCisgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZ2aWRlb19zaW5rX3RlbXBsYXRlKSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2luaXQgKEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsICogc2VsZikKK3sKKyAgc2VsZi0+YXNpbmtwYWQgPQorICAgICAgZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZhdWRpb19zaW5rX3RlbXBsYXRlLCAiYXNpbmsiKTsKKyAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKHNlbGYtPmFzaW5rcGFkLAorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfYXNpbmtfY2hhaW4pKTsKKyAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKHNlbGYtPmFzaW5rcGFkLAorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfYXNpbmtfZXZlbnQpKTsKKyAgZ3N0X3BhZF9zZXRfaXRlcmF0ZV9pbnRlcm5hbF9saW5rc19mdW5jdGlvbiAoc2VsZi0+YXNpbmtwYWQsCisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9pdGVyYXRlX2ludGVybmFsX2xpbmtzKSk7CisgIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChzZWxmKSwgc2VsZi0+YXNpbmtwYWQpOworCisgIHNlbGYtPnZzaW5rcGFkID0KKyAgICAgIGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmdmlkZW9fc2lua190ZW1wbGF0ZSwgInZzaW5rIik7CisgIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uIChzZWxmLT52c2lua3BhZCwKKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX3ZzaW5rX2NoYWluKSk7CisgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChzZWxmLT52c2lua3BhZCwKKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX3ZzaW5rX2V2ZW50KSk7CisgIGdzdF9wYWRfc2V0X2l0ZXJhdGVfaW50ZXJuYWxfbGlua3NfZnVuY3Rpb24gKHNlbGYtPnZzaW5rcGFkLAorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfaXRlcmF0ZV9pbnRlcm5hbF9saW5rcykpOworICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoc2VsZiksIHNlbGYtPnZzaW5rcGFkKTsKKworICBzZWxmLT5hc3JjcGFkID0KKyAgICAgIGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmYXVkaW9fc3JjX3RlbXBsYXRlLCAiYXNyYyIpOworICBnc3RfcGFkX3NldF9pdGVyYXRlX2ludGVybmFsX2xpbmtzX2Z1bmN0aW9uIChzZWxmLT5hc3JjcGFkLAorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfaXRlcmF0ZV9pbnRlcm5hbF9saW5rcykpOworICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoc2VsZiksIHNlbGYtPmFzcmNwYWQpOworCisgIHNlbGYtPnZzcmNwYWQgPQorICAgICAgZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZ2aWRlb19zcmNfdGVtcGxhdGUsICJ2c3JjIik7CisgIGdzdF9wYWRfc2V0X2l0ZXJhdGVfaW50ZXJuYWxfbGlua3NfZnVuY3Rpb24gKHNlbGYtPnZzcmNwYWQsCisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9pdGVyYXRlX2ludGVybmFsX2xpbmtzKSk7CisgIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChzZWxmKSwgc2VsZi0+dnNyY3BhZCk7CisKKyAgR1NUX1BBRF9TRVRfUFJPWFlfQ0FQUyAoc2VsZi0+YXNpbmtwYWQpOworICBHU1RfUEFEX1NFVF9QUk9YWV9BTExPQ0FUSU9OIChzZWxmLT5hc2lua3BhZCk7CisKKyAgR1NUX1BBRF9TRVRfUFJPWFlfQ0FQUyAoc2VsZi0+YXNyY3BhZCk7CisgIEdTVF9QQURfU0VUX1BST1hZX1NDSEVEVUxJTkcgKHNlbGYtPmFzcmNwYWQpOworCisgIEdTVF9QQURfU0VUX1BST1hZX0NBUFMgKHNlbGYtPnZzaW5rcGFkKTsKKyAgR1NUX1BBRF9TRVRfUFJPWFlfQUxMT0NBVElPTiAoc2VsZi0+dnNpbmtwYWQpOworCisgIEdTVF9QQURfU0VUX1BST1hZX0NBUFMgKHNlbGYtPnZzcmNwYWQpOworICBHU1RfUEFEX1NFVF9QUk9YWV9TQ0hFRFVMSU5HIChzZWxmLT52c3JjcGFkKTsKKworICBzZWxmLT5hZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3ICgpOworCisgIGdfcXVldWVfaW5pdCAoJnNlbGYtPnZ0aW1lcSk7CisgIHNlbGYtPmZpcnN0X3RpbWUgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICBzZWxmLT50b3RhbF9mcmFtZXMgPSAwOworICAvKiBhbGlnbm1lbnRfdGhyZXNob2xkIGFuZCBkaXNjb250X3dhaXQgc2hvdWxkIGJlY29tZSBwcm9wZXJ0aWVzIGlmIG5lZWRlZCAqLworICBzZWxmLT5hbGlnbm1lbnRfdGhyZXNob2xkID0gNDAgKiBHU1RfTVNFQ09ORDsKKyAgc2VsZi0+ZGlzY29udF90aW1lID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgc2VsZi0+bmV4dF9vZmZzZXQgPSAtMTsKKyAgc2VsZi0+ZGlzY29udF93YWl0ID0gMSAqIEdTVF9TRUNPTkQ7CisKKyAgc2VsZi0+dmlkZW9fZW9zX2ZsYWcgPSBGQUxTRTsKKyAgc2VsZi0+YXVkaW9fZmx1c2hfZmxhZyA9IEZBTFNFOworICBzZWxmLT5zaHV0ZG93bl9mbGFnID0gRkFMU0U7CisKKyAgZ19tdXRleF9pbml0ICgmc2VsZi0+bXV0ZXgpOworICBnX2NvbmRfaW5pdCAoJnNlbGYtPmNvbmQpOworfQorCitzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KK2dzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQoreworICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQ7CisgIEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsICpzZWxmID0gR1NUX1ZJREVPRlJBTUVfQVVESU9MRVZFTCAoZWxlbWVudCk7CisKKyAgc3dpdGNoICh0cmFuc2l0aW9uKSB7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPm11dGV4KTsKKyAgICAgIHNlbGYtPnNodXRkb3duX2ZsYWcgPSBUUlVFOworICAgICAgZ19jb25kX3NpZ25hbCAoJnNlbGYtPmNvbmQpOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5tdXRleCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgorICAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+bXV0ZXgpOworICAgICAgc2VsZi0+c2h1dGRvd25fZmxhZyA9IEZBTFNFOworICAgICAgc2VsZi0+dmlkZW9fZW9zX2ZsYWcgPSBGQUxTRTsKKyAgICAgIHNlbGYtPmF1ZGlvX2ZsdXNoX2ZsYWcgPSBGQUxTRTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIHJldCA9IEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5jaGFuZ2Vfc3RhdGUgKGVsZW1lbnQsIHRyYW5zaXRpb24pOworCisgIHN3aXRjaCAodHJhbnNpdGlvbikgeworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5tdXRleCk7CisgICAgICBzZWxmLT5maXJzdF90aW1lID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICAgIHNlbGYtPnRvdGFsX2ZyYW1lcyA9IDA7CisgICAgICBnc3Rfc2VnbWVudF9pbml0ICgmc2VsZi0+YXNlZ21lbnQsIEdTVF9GT1JNQVRfVU5ERUZJTkVEKTsKKyAgICAgIGdzdF9zZWdtZW50X2luaXQgKCZzZWxmLT52c2VnbWVudCwgR1NUX0ZPUk1BVF9VTkRFRklORUQpOworICAgICAgc2VsZi0+dnNlZ21lbnQucG9zaXRpb24gPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICAgICAgZ3N0X2FkYXB0ZXJfY2xlYXIgKHNlbGYtPmFkYXB0ZXIpOworICAgICAgZ19xdWV1ZV9mb3JlYWNoICgmc2VsZi0+dnRpbWVxLCAoR0Z1bmMpIGdfZnJlZSwgTlVMTCk7CisgICAgICBnX3F1ZXVlX2NsZWFyICgmc2VsZi0+dnRpbWVxKTsKKyAgICAgIGlmIChzZWxmLT5DUykgeworICAgICAgICBnX2ZyZWUgKHNlbGYtPkNTKTsKKyAgICAgICAgc2VsZi0+Q1MgPSBOVUxMOworICAgICAgfQorICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5tdXRleCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZAorZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWwgKnNlbGYgPSBHU1RfVklERU9GUkFNRV9BVURJT0xFVkVMIChvYmplY3QpOworCisgIGlmIChzZWxmLT5hZGFwdGVyKSB7CisgICAgZ19vYmplY3RfdW5yZWYgKHNlbGYtPmFkYXB0ZXIpOworICAgIHNlbGYtPmFkYXB0ZXIgPSBOVUxMOworICB9CisgIGdfcXVldWVfZm9yZWFjaCAoJnNlbGYtPnZ0aW1lcSwgKEdGdW5jKSBnX2ZyZWUsIE5VTEwpOworICBnX3F1ZXVlX2NsZWFyICgmc2VsZi0+dnRpbWVxKTsKKyAgc2VsZi0+Zmlyc3RfdGltZSA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgIHNlbGYtPnRvdGFsX2ZyYW1lcyA9IDA7CisgIGlmIChzZWxmLT5DUykgeworICAgIGdfZnJlZSAoc2VsZi0+Q1MpOworICAgIHNlbGYtPkNTID0gTlVMTDsKKyAgfQorCisgIGdfbXV0ZXhfY2xlYXIgKCZzZWxmLT5tdXRleCk7CisgIGdfY29uZF9jbGVhciAoJnNlbGYtPmNvbmQpOworCisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworI2RlZmluZSBERUZJTkVfSU5UX0xFVkVMX0NBTENVTEFUT1IoVFlQRSwgUkVTT0xVVElPTikgICAgICAgICAgICAgICAgICAgICAgICAgXAorc3RhdGljIHZvaWQgaW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9jYWxjdWxhdGVfIyNUWVBFIChncG9pbnRlciBkYXRhLCBndWludCBudW0sIGd1aW50IGNoYW5uZWxzLCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgKk5DUykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBUWVBFICogaW4gPSAoVFlQRSAqKWRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICByZWdpc3RlciBndWludCBqOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBnZG91YmxlIHNxdWFyZXN1bSA9IDAuMDsgICAgICAgICAgIC8qIHNxdWFyZSBzdW0gb2YgdGhlIGlucHV0IHNhbXBsZXMgKi8gICAgXAorICByZWdpc3RlciBnZG91YmxlIHNxdWFyZSA9IDAuMDsgICAgIC8qIFNxdWFyZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBnZG91YmxlIG5vcm1hbGl6ZXI7ICAgICAgICAgICAgICAgIC8qIGRpdmlzb3IgdG8gZ2V0IGEgWy0xLjAsIDEuMF0gcmFuZ2UgKi8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAvKiAqTkNTID0gMC4wOyBOb3JtYWxpemVkIEN1bXVsYXRpdmUgU3F1YXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBmb3IgKGogPSAwOyBqIDwgbnVtOyBqICs9IGNoYW5uZWxzKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNxdWFyZSA9ICgoZ2RvdWJsZSkgaW5bal0pICogaW5bal07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNxdWFyZXN1bSArPSBzcXVhcmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBub3JtYWxpemVyID0gKGdkb3VibGUpIChHX0dJTlQ2NF9DT05TVEFOVCgxKSA8PCAoUkVTT0xVVElPTiAqIDIpKTsgICAgICAgICAgXAorICAqTkNTID0gc3F1YXJlc3VtIC8gbm9ybWFsaXplcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCitERUZJTkVfSU5UX0xFVkVMX0NBTENVTEFUT1IgKGdpbnQzMiwgMzEpOworREVGSU5FX0lOVF9MRVZFTF9DQUxDVUxBVE9SIChnaW50MTYsIDE1KTsKK0RFRklORV9JTlRfTEVWRUxfQ0FMQ1VMQVRPUiAoZ2ludDgsIDcpOworCisjZGVmaW5lIERFRklORV9GTE9BVF9MRVZFTF9DQUxDVUxBVE9SKFRZUEUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitzdGF0aWMgdm9pZCBpbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2NhbGN1bGF0ZV8jI1RZUEUgKGdwb2ludGVyIGRhdGEsIGd1aW50IG51bSwgZ3VpbnQgY2hhbm5lbHMsICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAqTkNTKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIFRZUEUgKiBpbiA9IChUWVBFICopZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHJlZ2lzdGVyIGd1aW50IGo7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGdkb3VibGUgc3F1YXJlc3VtID0gMC4wOyAgICAgICAgICAgLyogc3F1YXJlIHN1bSBvZiB0aGUgaW5wdXQgc2FtcGxlcyAqLyAgICBcCisgIHJlZ2lzdGVyIGdkb3VibGUgc3F1YXJlID0gMC4wOyAgICAgLyogU3F1YXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIC8qICpOQ1MgPSAwLjA7IE5vcm1hbGl6ZWQgQ3VtdWxhdGl2ZSBTcXVhcmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGZvciAoaiA9IDA7IGogPCBudW07IGogKz0gY2hhbm5lbHMpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3F1YXJlID0gKChnZG91YmxlKSBpbltqXSkgKiBpbltqXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3F1YXJlc3VtICs9IHNxdWFyZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICpOQ1MgPSBzcXVhcmVzdW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKK0RFRklORV9GTE9BVF9MRVZFTF9DQUxDVUxBVE9SIChnZmxvYXQpOworREVGSU5FX0ZMT0FUX0xFVkVMX0NBTENVTEFUT1IgKGdkb3VibGUpOworCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfdnNpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAorICAgIEdzdEV2ZW50ICogZXZlbnQpCit7CisgIEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsICpzZWxmID0gR1NUX1ZJREVPRlJBTUVfQVVESU9MRVZFTCAocGFyZW50KTsKKyAgR1NUX0xPR19PQkpFQ1QgKHBhZCwgIkdvdCAlcyBldmVudCIsIEdTVF9FVkVOVF9UWVBFX05BTUUgKGV2ZW50KSk7CisKKyAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7CisgICAgY2FzZSBHU1RfRVZFTlRfU0VHTUVOVDoKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPm11dGV4KTsKKyAgICAgIGdfcXVldWVfZm9yZWFjaCAoJnNlbGYtPnZ0aW1lcSwgKEdGdW5jKSBnX2ZyZWUsIE5VTEwpOworICAgICAgZ19xdWV1ZV9jbGVhciAoJnNlbGYtPnZ0aW1lcSk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPm11dGV4KTsKKyAgICAgIGdzdF9ldmVudF9jb3B5X3NlZ21lbnQgKGV2ZW50LCAmc2VsZi0+dnNlZ21lbnQpOworICAgICAgaWYgKHNlbGYtPnZzZWdtZW50LmZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgIHNlbGYtPnZzZWdtZW50LnBvc2l0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0VWRU5UX0dBUDoKKyAgICAgIHJldHVybiBUUlVFOworICAgIGNhc2UgR1NUX0VWRU5UX0VPUzoKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPm11dGV4KTsKKyAgICAgIHNlbGYtPnZpZGVvX2Vvc19mbGFnID0gVFJVRTsKKyAgICAgIGdfY29uZF9zaWduYWwgKCZzZWxmLT5jb25kKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RPUDoKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPm11dGV4KTsKKyAgICAgIGdfcXVldWVfZm9yZWFjaCAoJnNlbGYtPnZ0aW1lcSwgKEdGdW5jKSBnX2ZyZWUsIE5VTEwpOworICAgICAgZ19xdWV1ZV9jbGVhciAoJnNlbGYtPnZ0aW1lcSk7CisgICAgICBnc3Rfc2VnbWVudF9pbml0ICgmc2VsZi0+dnNlZ21lbnQsIEdTVF9GT1JNQVRfVU5ERUZJTkVEKTsKKyAgICAgIGdfY29uZF9zaWduYWwgKCZzZWxmLT5jb25kKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworICAgICAgc2VsZi0+dnNlZ21lbnQucG9zaXRpb24gPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisgIHJldHVybiBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9hc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCisgICAgR3N0RXZlbnQgKiBldmVudCkKK3sKKyAgR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWwgKnNlbGYgPSBHU1RfVklERU9GUkFNRV9BVURJT0xFVkVMIChwYXJlbnQpOworICBHU1RfTE9HX09CSkVDVCAocGFkLCAiR290ICVzIGV2ZW50IiwgR1NUX0VWRU5UX1RZUEVfTkFNRSAoZXZlbnQpKTsKKworICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKKyAgICBjYXNlIEdTVF9FVkVOVF9TRUdNRU5UOgorICAgICAgc2VsZi0+Zmlyc3RfdGltZSA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgICAgICBzZWxmLT50b3RhbF9mcmFtZXMgPSAwOworICAgICAgZ3N0X2FkYXB0ZXJfY2xlYXIgKHNlbGYtPmFkYXB0ZXIpOworICAgICAgZ3N0X2V2ZW50X2NvcHlfc2VnbWVudCAoZXZlbnQsICZzZWxmLT5hc2VnbWVudCk7CisgICAgICBpZiAoc2VsZi0+YXNlZ21lbnQuZm9ybWF0ICE9IEdTVF9GT1JNQVRfVElNRSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RBUlQ6CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5tdXRleCk7CisgICAgICBzZWxmLT5hdWRpb19mbHVzaF9mbGFnID0gVFJVRTsKKyAgICAgIGdfY29uZF9zaWduYWwgKCZzZWxmLT5jb25kKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RPUDoKKyAgICAgIHNlbGYtPmF1ZGlvX2ZsdXNoX2ZsYWcgPSBGQUxTRTsKKyAgICAgIHNlbGYtPnRvdGFsX2ZyYW1lcyA9IDA7CisgICAgICBzZWxmLT5maXJzdF90aW1lID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICAgIGdzdF9hZGFwdGVyX2NsZWFyIChzZWxmLT5hZGFwdGVyKTsKKyAgICAgIGdzdF9zZWdtZW50X2luaXQgKCZzZWxmLT5hc2VnbWVudCwgR1NUX0ZPUk1BVF9VTkRFRklORUQpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfRVZFTlRfQ0FQUzp7CisgICAgICBHc3RDYXBzICpjYXBzOworICAgICAgZ2ludCBjaGFubmVsczsKKyAgICAgIGdzdF9ldmVudF9wYXJzZV9jYXBzIChldmVudCwgJmNhcHMpOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkdvdCBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKKyAgICAgIGlmICghZ3N0X2F1ZGlvX2luZm9fZnJvbV9jYXBzICgmc2VsZi0+YWluZm8sIGNhcHMpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICBzd2l0Y2ggKEdTVF9BVURJT19JTkZPX0ZPUk1BVCAoJnNlbGYtPmFpbmZvKSkgeworICAgICAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfUzg6CisgICAgICAgICAgc2VsZi0+cHJvY2VzcyA9IGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfY2FsY3VsYXRlX2dpbnQ4OworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfUzE2OgorICAgICAgICAgIHNlbGYtPnByb2Nlc3MgPSBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2NhbGN1bGF0ZV9naW50MTY7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMzI6CisgICAgICAgICAgc2VsZi0+cHJvY2VzcyA9IGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfY2FsY3VsYXRlX2dpbnQzMjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX0YzMjoKKyAgICAgICAgICBzZWxmLT5wcm9jZXNzID0gZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9jYWxjdWxhdGVfZ2Zsb2F0OworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfRjY0OgorICAgICAgICAgIHNlbGYtPnByb2Nlc3MgPSBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2NhbGN1bGF0ZV9nZG91YmxlOworICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIHNlbGYtPnByb2Nlc3MgPSBOVUxMOworICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZ3N0X2FkYXB0ZXJfY2xlYXIgKHNlbGYtPmFkYXB0ZXIpOworICAgICAgY2hhbm5lbHMgPSBHU1RfQVVESU9fSU5GT19DSEFOTkVMUyAoJnNlbGYtPmFpbmZvKTsKKyAgICAgIHNlbGYtPmZpcnN0X3RpbWUgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICAgICAgc2VsZi0+dG90YWxfZnJhbWVzID0gMDsKKyAgICAgIGlmIChzZWxmLT5DUykKKyAgICAgICAgZ19mcmVlIChzZWxmLT5DUyk7CisgICAgICBzZWxmLT5DUyA9IGdfbmV3MCAoZ2RvdWJsZSwgY2hhbm5lbHMpOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7Cit9CisKK3N0YXRpYyBHc3RNZXNzYWdlICoKK3VwZGF0ZV9ybXNfZnJvbV9idWZmZXIgKEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsICogc2VsZiwgR3N0QnVmZmVyICogaW5idWYpCit7CisgIEdzdE1hcEluZm8gbWFwOworICBndWludDggKmluX2RhdGE7CisgIGdzaXplIGluX3NpemU7CisgIGdkb3VibGUgQ1M7CisgIGd1aW50IGk7CisgIGd1aW50IG51bV9mcmFtZXMsIGZyYW1lczsKKyAgZ3VpbnQgbnVtX2ludF9zYW1wbGVzID0gMDsgICAgLyogbnVtYmVyIG9mIGludGVybGVhdmVkIHNhbXBsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaWUuIHRvdGFsIGNvdW50IGZvciBhbGwgY2hhbm5lbHMgY29tYmluZWQgKi8KKyAgZ2ludCBjaGFubmVscywgcmF0ZSwgYnBzOworICBHVmFsdWUgdiA9IEdfVkFMVUVfSU5JVDsKKyAgR1ZhbHVlIHZhID0gR19WQUxVRV9JTklUOworICBHVmFsdWVBcnJheSAqYTsKKyAgR3N0U3RydWN0dXJlICpzOworICBHc3RNZXNzYWdlICptc2c7CisgIEdzdENsb2NrVGltZSBkdXJhdGlvbiwgcnVubmluZ190aW1lOworCisgIGNoYW5uZWxzID0gR1NUX0FVRElPX0lORk9fQ0hBTk5FTFMgKCZzZWxmLT5haW5mbyk7CisgIGJwcyA9IEdTVF9BVURJT19JTkZPX0JQUyAoJnNlbGYtPmFpbmZvKTsKKyAgcmF0ZSA9IEdTVF9BVURJT19JTkZPX1JBVEUgKCZzZWxmLT5haW5mbyk7CisKKyAgZ3N0X2J1ZmZlcl9tYXAgKGluYnVmLCAmbWFwLCBHU1RfTUFQX1JFQUQpOworICBpbl9kYXRhID0gbWFwLmRhdGE7CisgIGluX3NpemUgPSBtYXAuc2l6ZTsKKworICBudW1faW50X3NhbXBsZXMgPSBpbl9zaXplIC8gYnBzOworCisgIEdTVF9MT0dfT0JKRUNUIChzZWxmLCAiYW5hbHl6aW5nICV1IHNhbXBsZSBmcmFtZXMgYXQgdHMgJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgbnVtX2ludF9zYW1wbGVzLCBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoaW5idWYpKSk7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKG51bV9pbnRfc2FtcGxlcyAlIGNoYW5uZWxzID09IDAsIE5VTEwpOworCisgIG51bV9mcmFtZXMgPSBudW1faW50X3NhbXBsZXMgLyBjaGFubmVsczsKKyAgZnJhbWVzID0gbnVtX2ZyYW1lczsKKyAgZHVyYXRpb24gPSBHU1RfRlJBTUVTX1RPX0NMT0NLX1RJTUUgKGZyYW1lcywgcmF0ZSk7CisgIGlmIChudW1fZnJhbWVzID4gMCkgeworICAgIGZvciAoaSA9IDA7IGkgPCBjaGFubmVsczsgKytpKSB7CisgICAgICBzZWxmLT5wcm9jZXNzIChpbl9kYXRhICsgKGJwcyAqIGkpLCBudW1faW50X3NhbXBsZXMsIGNoYW5uZWxzLCAmQ1MpOworICAgICAgR1NUX0xPR19PQkpFQ1QgKHNlbGYsCisgICAgICAgICAgIlslZF06IGN1bXVsYXRpdmUgc3F1YXJlcyAlbGYsIG92ZXIgJWQgc2FtcGxlcy8lZCBjaGFubmVscyIsCisgICAgICAgICAgaSwgQ1MsIG51bV9pbnRfc2FtcGxlcywgY2hhbm5lbHMpOworICAgICAgc2VsZi0+Q1NbaV0gKz0gQ1M7CisgICAgfQorICAgIGluX2RhdGEgKz0gbnVtX2ZyYW1lcyAqIGJwczsKKworICAgIHNlbGYtPnRvdGFsX2ZyYW1lcyArPSBudW1fZnJhbWVzOworICB9CisgIHJ1bm5pbmdfdGltZSA9CisgICAgICBzZWxmLT5maXJzdF90aW1lICsgZ3N0X3V0aWxfdWludDY0X3NjYWxlIChzZWxmLT50b3RhbF9mcmFtZXMsIEdTVF9TRUNPTkQsCisgICAgICByYXRlKTsKKworICBhID0gZ192YWx1ZV9hcnJheV9uZXcgKGNoYW5uZWxzKTsKKyAgcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgidmlkZW9mcmFtZS1hdWRpb2xldmVsIiwgInJ1bm5pbmctdGltZSIsIEdfVFlQRV9VSU5UNjQsCisgICAgICBydW5uaW5nX3RpbWUsICJkdXJhdGlvbiIsIEdfVFlQRV9VSU5UNjQsIGR1cmF0aW9uLCBOVUxMKTsKKworICBnX3ZhbHVlX2luaXQgKCZ2LCBHX1RZUEVfRE9VQkxFKTsKKyAgZ192YWx1ZV9pbml0ICgmdmEsIEdfVFlQRV9WQUxVRV9BUlJBWSk7CisgIGZvciAoaSA9IDA7IGkgPCBjaGFubmVsczsgaSsrKSB7CisgICAgZ2RvdWJsZSBybXM7CisgICAgaWYgKGZyYW1lcyA9PSAwIHx8IHNlbGYtPkNTW2ldID09IDApIHsKKyAgICAgIHJtcyA9IDA7ICAgICAgICAgICAgICAgICAgLyogZW1wdHkgYnVmZmVyICovCisgICAgfSBlbHNlIHsKKyAgICAgIHJtcyA9IHNxcnQgKHNlbGYtPkNTW2ldIC8gZnJhbWVzKTsKKyAgICB9CisgICAgc2VsZi0+Q1NbaV0gPSAwLjA7CisgICAgZ192YWx1ZV9zZXRfZG91YmxlICgmdiwgcm1zKTsKKyAgICBnX3ZhbHVlX2FycmF5X2FwcGVuZCAoYSwgJnYpOworICB9CisgIGdfdmFsdWVfdGFrZV9ib3hlZCAoJnZhLCBhKTsKKyAgZ3N0X3N0cnVjdHVyZV90YWtlX3ZhbHVlIChzLCAicm1zIiwgJnZhKTsKKyAgbXNnID0gZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQgKEdTVF9PQkpFQ1QgKHNlbGYpLCBzKTsKKworICBnc3RfYnVmZmVyX3VubWFwIChpbmJ1ZiwgJm1hcCk7CisKKyAgcmV0dXJuIG1zZzsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfdnNpbmtfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAorICAgIEdzdEJ1ZmZlciAqIGluYnVmKQoreworICBHc3RDbG9ja1RpbWUgdGltZXN0YW1wOworICBHc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbCAqc2VsZiA9IEdTVF9WSURFT0ZSQU1FX0FVRElPTEVWRUwgKHBhcmVudCk7CisgIEdzdENsb2NrVGltZSBkdXJhdGlvbjsKKyAgR3N0Q2xvY2tUaW1lICpwdHJ0aW1lID0gZ19uZXcgKEdzdENsb2NrVGltZSwgMSk7CisKKyAgdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGluYnVmKTsKKyAgKnB0cnRpbWUgPQorICAgICAgZ3N0X3NlZ21lbnRfdG9fcnVubmluZ190aW1lICgmc2VsZi0+dnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwgdGltZXN0YW1wKTsKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bXV0ZXgpOworICBzZWxmLT52c2VnbWVudC5wb3NpdGlvbiA9IHRpbWVzdGFtcDsKKyAgZHVyYXRpb24gPSBHU1RfQlVGRkVSX0RVUkFUSU9OIChpbmJ1Zik7CisgIGlmIChkdXJhdGlvbiAhPSBHU1RfQ0xPQ0tfVElNRV9OT05FKQorICAgIHNlbGYtPnZzZWdtZW50LnBvc2l0aW9uICs9IGR1cmF0aW9uOworICBnX3F1ZXVlX3B1c2hfdGFpbCAoJnNlbGYtPnZ0aW1lcSwgcHRydGltZSk7CisgIGdfY29uZF9zaWduYWwgKCZzZWxmLT5jb25kKTsKKyAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAiUHVzaGVkIGEgZnJhbWUiKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5tdXRleCk7CisgIHJldHVybiBnc3RfcGFkX3B1c2ggKHNlbGYtPnZzcmNwYWQsIGluYnVmKTsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfYXNpbmtfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAorICAgIEdzdEJ1ZmZlciAqIGluYnVmKQoreworICBHc3RDbG9ja1RpbWUgdGltZXN0YW1wLCBjdXJfdGltZTsKKyAgR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWwgKnNlbGYgPSBHU1RfVklERU9GUkFNRV9BVURJT0xFVkVMIChwYXJlbnQpOworICBHc3RCdWZmZXIgKmJ1ZjsKKyAgZ3NpemUgaW5idWZfc2l6ZTsKKyAgZ3VpbnQ2NCBzdGFydF9vZmZzZXQsIGVuZF9vZmZzZXQ7CisgIEdzdENsb2NrVGltZSBydW5uaW5nX3RpbWU7CisgIGdpbnQgcmF0ZSwgYnBmOworICBnYm9vbGVhbiBkaXNjb250ID0gRkFMU0U7CisKKyAgdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGluYnVmKTsKKyAgcnVubmluZ190aW1lID0KKyAgICAgIGdzdF9zZWdtZW50X3RvX3J1bm5pbmdfdGltZSAoJnNlbGYtPmFzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsIHRpbWVzdGFtcCk7CisKKyAgcmF0ZSA9IEdTVF9BVURJT19JTkZPX1JBVEUgKCZzZWxmLT5haW5mbyk7CisgIGJwZiA9IEdTVF9BVURJT19JTkZPX0JQRiAoJnNlbGYtPmFpbmZvKTsKKyAgc3RhcnRfb2Zmc2V0ID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlICh0aW1lc3RhbXAsIHJhdGUsIEdTVF9TRUNPTkQpOworICBpbmJ1Zl9zaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoaW5idWYpOworICBlbmRfb2Zmc2V0ID0gc3RhcnRfb2Zmc2V0ICsgaW5idWZfc2l6ZSAvIGJwZjsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5tdXRleCk7CisKKyAgaWYgKEdTVF9CVUZGRVJfSVNfRElTQ09OVCAoaW5idWYpCisgICAgICB8fCBHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUIChpbmJ1ZiwgR1NUX0JVRkZFUl9GTEFHX1JFU1lOQykKKyAgICAgIHx8IHNlbGYtPmZpcnN0X3RpbWUgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkgeworICAgIGRpc2NvbnQgPSBUUlVFOworICB9IGVsc2UgeworICAgIGd1aW50NjQgZGlmZiwgbWF4X3NhbXBsZV9kaWZmOworCisgICAgLyogQ2hlY2sgZGlzY29udCwgYmFzZWQgb24gYXVkaW9iYXNlc2luayAqLworICAgIGlmIChzdGFydF9vZmZzZXQgPD0gc2VsZi0+bmV4dF9vZmZzZXQpCisgICAgICBkaWZmID0gc2VsZi0+bmV4dF9vZmZzZXQgLSBzdGFydF9vZmZzZXQ7CisgICAgZWxzZQorICAgICAgZGlmZiA9IHN0YXJ0X29mZnNldCAtIHNlbGYtPm5leHRfb2Zmc2V0OworCisgICAgbWF4X3NhbXBsZV9kaWZmID0KKyAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCAoc2VsZi0+YWxpZ25tZW50X3RocmVzaG9sZCwgcmF0ZSwgR1NUX1NFQ09ORCk7CisKKyAgICAvKiBEaXNjb250ISAqLworICAgIGlmIChHX1VOTElLRUxZIChkaWZmID49IG1heF9zYW1wbGVfZGlmZikpIHsKKyAgICAgIGlmIChzZWxmLT5kaXNjb250X3dhaXQgPiAwKSB7CisgICAgICAgIGlmIChzZWxmLT5kaXNjb250X3RpbWUgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkgeworICAgICAgICAgIHNlbGYtPmRpc2NvbnRfdGltZSA9IHRpbWVzdGFtcDsKKyAgICAgICAgfSBlbHNlIGlmICh0aW1lc3RhbXAgLSBzZWxmLT5kaXNjb250X3RpbWUgPj0gc2VsZi0+ZGlzY29udF93YWl0KSB7CisgICAgICAgICAgZGlzY29udCA9IFRSVUU7CisgICAgICAgICAgc2VsZi0+ZGlzY29udF90aW1lID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgZGlzY29udCA9IFRSVUU7CisgICAgICB9CisgICAgfSBlbHNlIGlmIChHX1VOTElLRUxZIChzZWxmLT5kaXNjb250X3RpbWUgIT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkpIHsKKyAgICAgIC8qIHdlIGhhdmUgaGFkIGEgZGlzY29udCwgYnV0IGFyZSBub3cgYmFjayBvbiB0cmFjayEgKi8KKyAgICAgIHNlbGYtPmRpc2NvbnRfdGltZSA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgICAgfQorICB9CisKKyAgaWYgKGRpc2NvbnQpIHsKKyAgICAvKiBIYXZlIGRpc2NvbnQsIG5lZWQgcmVzeW5jICovCisgICAgaWYgKHNlbGYtPm5leHRfb2Zmc2V0ICE9IC0xKQorICAgICAgR1NUX0lORk9fT0JKRUNUIChwYWQsICJIYXZlIGRpc2NvbnQuIEV4cGVjdGVkICUiCisgICAgICAgICAgR19HVUlOVDY0X0ZPUk1BVCAiLCBnb3QgJSIgR19HVUlOVDY0X0ZPUk1BVCwKKyAgICAgICAgICBzZWxmLT5uZXh0X29mZnNldCwgc3RhcnRfb2Zmc2V0KTsKKyAgICBzZWxmLT50b3RhbF9mcmFtZXMgPSAwOworICAgIHNlbGYtPmZpcnN0X3RpbWUgPSBydW5uaW5nX3RpbWU7CisgICAgc2VsZi0+bmV4dF9vZmZzZXQgPSBlbmRfb2Zmc2V0OworICB9IGVsc2UgeworICAgIHNlbGYtPm5leHRfb2Zmc2V0ICs9IGluYnVmX3NpemUgLyBicGY7CisgIH0KKworICBnc3RfYWRhcHRlcl9wdXNoIChzZWxmLT5hZGFwdGVyLCBnc3RfYnVmZmVyX3JlZiAoaW5idWYpKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiUXVldWUgbGVuZ3RoICVpIiwKKyAgICAgIGdfcXVldWVfZ2V0X2xlbmd0aCAoJnNlbGYtPnZ0aW1lcSkpOworCisgIHdoaWxlIChUUlVFKSB7CisgICAgR3N0Q2xvY2tUaW1lICp2dDAsICp2dDE7CisgICAgR3N0Q2xvY2tUaW1lIHZ0ZW1wOworICAgIEdzdE1lc3NhZ2UgKm1zZzsKKyAgICBnc2l6ZSBieXRlcywgYXZhaWxhYmxlX2J5dGVzOworCisgICAgdnRlbXAgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworCisgICAgd2hpbGUgKCEoZ19xdWV1ZV9nZXRfbGVuZ3RoICgmc2VsZi0+dnRpbWVxKSA+PSAyIHx8IHNlbGYtPnZpZGVvX2Vvc19mbGFnCisgICAgICAgICAgICB8fCBzZWxmLT5hdWRpb19mbHVzaF9mbGFnIHx8IHNlbGYtPnNodXRkb3duX2ZsYWcpKQorICAgICAgZ19jb25kX3dhaXQgKCZzZWxmLT5jb25kLCAmc2VsZi0+bXV0ZXgpOworCisgICAgaWYgKHNlbGYtPmF1ZGlvX2ZsdXNoX2ZsYWcgfHwgc2VsZi0+c2h1dGRvd25fZmxhZykgeworICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5tdXRleCk7CisgICAgICBnc3RfYnVmZmVyX3VucmVmIChpbmJ1Zik7CisgICAgICByZXR1cm4gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgfSBlbHNlIGlmIChzZWxmLT52aWRlb19lb3NfZmxhZykgeworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlZpZGVvIEVPUyBmbGFnIGFsZXJ0Iik7CisgICAgICAvKiBub3RoaW5nIHRvIGRvIGhlcmUgaWYgcXVldWUgaXMgZW1wdHkgKi8KKyAgICAgIGlmIChnX3F1ZXVlX2dldF9sZW5ndGggKCZzZWxmLT52dGltZXEpID09IDApCisgICAgICAgIGJyZWFrOworCisgICAgICBpZiAoZ19xdWV1ZV9nZXRfbGVuZ3RoICgmc2VsZi0+dnRpbWVxKSA8IDIpIHsKKyAgICAgICAgdnRlbXAgPSBzZWxmLT52c2VnbWVudC5wb3NpdGlvbjsKKyAgICAgIH0gZWxzZSBpZiAoc2VsZi0+dnNlZ21lbnQucG9zaXRpb24gPT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkgeworICAgICAgICAvKiBnX3F1ZXVlX2dldF9sZW5ndGggaXMgc3VyZWx5ID49IDIgYXQgdGhpcyBwb2ludAorICAgICAgICAgKiBzbyB0aGUgYWRhcHRlciBpc24ndCBlbXB0eSAqLworICAgICAgICBidWYgPQorICAgICAgICAgICAgZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXIgKHNlbGYtPmFkYXB0ZXIsCisgICAgICAgICAgICBnc3RfYWRhcHRlcl9hdmFpbGFibGUgKHNlbGYtPmFkYXB0ZXIpKTsKKyAgICAgICAgaWYgKGJ1ZiAhPSBOVUxMKSB7CisgICAgICAgICAgR3N0TWVzc2FnZSAqbXNnOworICAgICAgICAgIG1zZyA9IHVwZGF0ZV9ybXNfZnJvbV9idWZmZXIgKHNlbGYsIGJ1Zik7CisgICAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5tdXRleCk7CisgICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoc2VsZiksIG1zZyk7CisgICAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKyAgICAgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5tdXRleCk7ICAvKiB3ZSB1bmxvY2sgYWdhaW4gbGF0ZXIgKi8KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGdfcXVldWVfZ2V0X2xlbmd0aCAoJnNlbGYtPnZ0aW1lcSkgPCAyKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICB2dDAgPSBnX3F1ZXVlX3BvcF9oZWFkICgmc2VsZi0+dnRpbWVxKTsKKyAgICBpZiAodnRlbXAgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkKKyAgICAgIHZ0MSA9IGdfcXVldWVfcGVla19oZWFkICgmc2VsZi0+dnRpbWVxKTsKKyAgICBlbHNlCisgICAgICB2dDEgPSAmdnRlbXA7CisKKyAgICBjdXJfdGltZSA9CisgICAgICAgIHNlbGYtPmZpcnN0X3RpbWUgKyBnc3RfdXRpbF91aW50NjRfc2NhbGUgKHNlbGYtPnRvdGFsX2ZyYW1lcywKKyAgICAgICAgR1NUX1NFQ09ORCwgcmF0ZSk7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwKKyAgICAgICAgIlByb2Nlc3Npbmc6IGN1cnJlbnQgdGltZSBpcyAlIiBHU1RfVElNRV9GT1JNQVQsCisgICAgICAgIEdTVF9USU1FX0FSR1MgKGN1cl90aW1lKSk7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlRvdGFsIGZyYW1lcyBpcyAlaSB3aXRoIGEgcmF0ZSBvZiAlZCIsCisgICAgICAgIHNlbGYtPnRvdGFsX2ZyYW1lcywgcmF0ZSk7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlN0YXJ0IHRpbWUgaXMgJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgICBHU1RfVElNRV9BUkdTIChzZWxmLT5maXJzdF90aW1lKSk7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlRpbWUgb24gdG9wIGlzICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgICAgR1NUX1RJTUVfQVJHUyAoKnZ0MCkpOworCisgICAgaWYgKGN1cl90aW1lIDwgKnZ0MCkgeworICAgICAgZ3VpbnQgbnVtX2ZyYW1lcyA9CisgICAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlICgqdnQwIC0gY3VyX3RpbWUsIHJhdGUsIEdTVF9TRUNPTkQpOworICAgICAgYnl0ZXMgPSBudW1fZnJhbWVzICogR1NUX0FVRElPX0lORk9fQlBGICgmc2VsZi0+YWluZm8pOworICAgICAgYXZhaWxhYmxlX2J5dGVzID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlIChzZWxmLT5hZGFwdGVyKTsKKyAgICAgIGlmIChhdmFpbGFibGVfYnl0ZXMgPT0gMCkgeworICAgICAgICBnX3F1ZXVlX3B1c2hfaGVhZCAoJnNlbGYtPnZ0aW1lcSwgdnQwKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoYnl0ZXMgPT0gMCkgeworICAgICAgICBjdXJfdGltZSA9ICp2dDA7CisgICAgICB9IGVsc2UgeworICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLAorICAgICAgICAgICAgIkZsdXNoZWQgJSIgR19HU0laRV9GT1JNQVQgIiBvdXQgb2YgJSIgR19HU0laRV9GT1JNQVQgIiBieXRlcyIsCisgICAgICAgICAgICBieXRlcywgYXZhaWxhYmxlX2J5dGVzKTsKKyAgICAgICAgZ3N0X2FkYXB0ZXJfZmx1c2ggKHNlbGYtPmFkYXB0ZXIsIE1JTiAoYnl0ZXMsIGF2YWlsYWJsZV9ieXRlcykpOworICAgICAgICBzZWxmLT50b3RhbF9mcmFtZXMgKz0gbnVtX2ZyYW1lczsKKyAgICAgICAgaWYgKGF2YWlsYWJsZV9ieXRlcyA8PSBieXRlcykgeworICAgICAgICAgIGdfcXVldWVfcHVzaF9oZWFkICgmc2VsZi0+dnRpbWVxLCB2dDApOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGN1cl90aW1lID0KKyAgICAgICAgICAgIHNlbGYtPmZpcnN0X3RpbWUgKyBnc3RfdXRpbF91aW50NjRfc2NhbGUgKHNlbGYtPnRvdGFsX2ZyYW1lcywKKyAgICAgICAgICAgIEdTVF9TRUNPTkQsIHJhdGUpOworICAgICAgfQorICAgIH0KKyAgICBpZiAoKnZ0MSA+IGN1cl90aW1lKSB7CisgICAgICBieXRlcyA9CisgICAgICAgICAgR1NUX0FVRElPX0lORk9fQlBGICgmc2VsZi0+YWluZm8pICogZ3N0X3V0aWxfdWludDY0X3NjYWxlICgqdnQxIC0KKyAgICAgICAgICBjdXJfdGltZSwgcmF0ZSwgR1NUX1NFQ09ORCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGJ5dGVzID0gMDsgICAgICAgICAgICAgICAgLyogV2UganVzdCBuZWVkIHRvIGRpc2NhcmQgdnQwICovCisgICAgfQorICAgIGF2YWlsYWJsZV9ieXRlcyA9IGdzdF9hZGFwdGVyX2F2YWlsYWJsZSAoc2VsZi0+YWRhcHRlcik7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwKKyAgICAgICAgIkFkYXB0ZXIgY29udGFpbnMgJSIgR19HU0laRV9GT1JNQVQgIiBvdXQgb2YgJSIgR19HU0laRV9GT1JNQVQgIiBieXRlcyIsCisgICAgICAgIGF2YWlsYWJsZV9ieXRlcywgYnl0ZXMpOworCisgICAgaWYgKGF2YWlsYWJsZV9ieXRlcyA8IGJ5dGVzKSB7CisgICAgICBnX3F1ZXVlX3B1c2hfaGVhZCAoJnNlbGYtPnZ0aW1lcSwgdnQwKTsKKyAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBpZiAoYnl0ZXMgPiAwKSB7CisgICAgICBidWYgPSBnc3RfYWRhcHRlcl90YWtlX2J1ZmZlciAoc2VsZi0+YWRhcHRlciwgYnl0ZXMpOworICAgICAgZ19hc3NlcnQgKGJ1ZiAhPSBOVUxMKTsKKyAgICB9IGVsc2UgeworICAgICAgLyogSnVzdCBhbiBlbXB0eSBidWZmZXIgKi8KKyAgICAgIGJ1ZiA9IGdzdF9idWZmZXJfbmV3ICgpOworICAgIH0KKyAgICBtc2cgPSB1cGRhdGVfcm1zX2Zyb21fYnVmZmVyIChzZWxmLCBidWYpOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKHNlbGYpLCBtc2cpOworICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPm11dGV4KTsKKworICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CisgICAgZ19mcmVlICh2dDApOworICAgIGlmIChhdmFpbGFibGVfYnl0ZXMgPT0gYnl0ZXMpCisgICAgICBicmVhazsKKyAgfQorZG9uZToKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5tdXRleCk7CisgIHJldHVybiBnc3RfcGFkX3B1c2ggKHNlbGYtPmFzcmNwYWQsIGluYnVmKTsKK30KKworc3RhdGljIEdzdEl0ZXJhdG9yICoKK2dzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfaXRlcmF0ZV9pbnRlcm5hbF9saW5rcyAoR3N0UGFkICogcGFkLAorICAgIEdzdE9iamVjdCAqIHBhcmVudCkKK3sKKyAgR3N0SXRlcmF0b3IgKml0ID0gTlVMTDsKKyAgR3N0UGFkICpvcGFkOworICBHVmFsdWUgdmFsID0geyAwLCB9OworICBHc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbCAqc2VsZiA9IEdTVF9WSURFT0ZSQU1FX0FVRElPTEVWRUwgKHBhcmVudCk7CisKKyAgaWYgKHNlbGYtPmFzaW5rcGFkID09IHBhZCkKKyAgICBvcGFkID0gZ3N0X29iamVjdF9yZWYgKHNlbGYtPmFzcmNwYWQpOworICBlbHNlIGlmIChzZWxmLT5hc3JjcGFkID09IHBhZCkKKyAgICBvcGFkID0gZ3N0X29iamVjdF9yZWYgKHNlbGYtPmFzaW5rcGFkKTsKKyAgZWxzZSBpZiAoc2VsZi0+dnNpbmtwYWQgPT0gcGFkKQorICAgIG9wYWQgPSBnc3Rfb2JqZWN0X3JlZiAoc2VsZi0+dnNyY3BhZCk7CisgIGVsc2UgaWYgKHNlbGYtPnZzcmNwYWQgPT0gcGFkKQorICAgIG9wYWQgPSBnc3Rfb2JqZWN0X3JlZiAoc2VsZi0+dnNpbmtwYWQpOworICBlbHNlCisgICAgZ290byBvdXQ7CisKKyAgZ192YWx1ZV9pbml0ICgmdmFsLCBHU1RfVFlQRV9QQUQpOworICBnX3ZhbHVlX3NldF9vYmplY3QgKCZ2YWwsIG9wYWQpOworICBpdCA9IGdzdF9pdGVyYXRvcl9uZXdfc2luZ2xlIChHU1RfVFlQRV9QQUQsICZ2YWwpOworICBnX3ZhbHVlX3Vuc2V0ICgmdmFsKTsKKworICBnc3Rfb2JqZWN0X3VucmVmIChvcGFkKTsKKworb3V0OgorICByZXR1cm4gaXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9wbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQoreworICByZXR1cm4gZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgInZpZGVvZnJhbWUtYXVkaW9sZXZlbCIsCisgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9WSURFT0ZSQU1FX0FVRElPTEVWRUwpOworfQorCitHU1RfUExVR0lOX0RFRklORSAoR1NUX1ZFUlNJT05fTUFKT1IsCisgICAgR1NUX1ZFUlNJT05fTUlOT1IsCisgICAgdmlkZW9mcmFtZV9hdWRpb2xldmVsLAorICAgICJWaWRlbyBmcmFtZS1zeW5jaHJvbml6ZWQgYXVkaW8gbGV2ZWwiLAorICAgIGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfcGx1Z2luX2luaXQsIFZFUlNJT04sIEdTVF9MSUNFTlNFLAorICAgIEdTVF9QQUNLQUdFX05BTUUsIEdTVF9QQUNLQUdFX09SSUdJTik7CmRpZmYgLS1naXQgYS9nc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL2dzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5oIGIvZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC9nc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzMzMmU1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC9nc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuaApAQCAtMCwwICsxLDczIEBACisvKiAKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IFZpdmlhIE5pa29sYWlkb3UgPHZpdmlhQHRvb2xzb25haXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfVklERU9GUkFNRV9BVURJT0xFVkVMX0hfXworI2RlZmluZSBfX0dTVF9WSURFT0ZSQU1FX0FVRElPTEVWRUxfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CisKK0dfQkVHSU5fREVDTFMKKyNkZWZpbmUgR1NUX1RZUEVfVklERU9GUkFNRV9BVURJT0xFVkVMICAgICAgICAgICAgICAgICAgICAoZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfVklERU9GUkFNRV9BVURJT0xFVkVMKG9iaikgICAgICAgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9WSURFT0ZSQU1FX0FVRElPTEVWRUwsR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWwpKQorI2RlZmluZSBHU1RfSVNfVklERU9GUkFNRV9BVURJT0xFVkVMKG9iaikgICAgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9WSURFT0ZSQU1FX0FVRElPTEVWRUwpKQorI2RlZmluZSBHU1RfVklERU9GUkFNRV9BVURJT0xFVkVMX0NMQVNTKGtsYXNzKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpICxHU1RfVFlQRV9WSURFT0ZSQU1FX0FVRElPTEVWRUwsR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWxDbGFzcykpCisjZGVmaW5lIEdTVF9JU19WSURFT0ZSQU1FX0FVRElPTEVWRUxfQ0xBU1Moa2xhc3MpICAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcykgLEdTVF9UWVBFX1ZJREVPRlJBTUVfQVVESU9MRVZFTCkpCisjZGVmaW5lIEdTVF9WSURFT0ZSQU1FX0FVRElPTEVWRUxfR0VUX0NMQVNTKG9iaikgICAgICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaikgLEdTVF9UWVBFX1ZJREVPRlJBTUVfQVVESU9MRVZFTCxHc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbENsYXNzKSkKK3R5cGVkZWYgc3RydWN0IF9Hc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbCBHc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbDsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbENsYXNzIEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsQ2xhc3M7CisKK3N0cnVjdCBfR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWwKK3sKKyAgR3N0RWxlbWVudCBwYXJlbnQ7CisKKyAgR3N0UGFkICphc3JjcGFkLCAqYXNpbmtwYWQsICp2c3JjcGFkLCAqdnNpbmtwYWQ7CisKKyAgR3N0QXVkaW9JbmZvIGFpbmZvOworCisgIGdkb3VibGUgKkNTOyAgICAgICAgICAgICAgICAgIC8qIG5vcm1hbGl6ZWQgQ3VtdWxhdGl2ZSBTcXVhcmUgKi8KKworICBHc3RTZWdtZW50IGFzZWdtZW50LCB2c2VnbWVudDsKKworICB2b2lkICgqcHJvY2VzcykgKGdwb2ludGVyLCBndWludCwgZ3VpbnQsIGdkb3VibGUgKik7CisKKyAgR1F1ZXVlIHZ0aW1lcTsKKyAgR3N0QWRhcHRlciAqYWRhcHRlcjsKKyAgR3N0Q2xvY2tUaW1lIGZpcnN0X3RpbWU7CisgIGd1aW50IHRvdGFsX2ZyYW1lczsKKyAgZ3VpbnQ2NCBuZXh0X29mZnNldCwgYWxpZ25tZW50X3RocmVzaG9sZCwgZGlzY29udF90aW1lLCBkaXNjb250X3dhaXQ7CisKKyAgZ2Jvb2xlYW4gdmlkZW9fZW9zX2ZsYWc7CisgIGdib29sZWFuIGF1ZGlvX2ZsdXNoX2ZsYWc7CisgIGdib29sZWFuIHNodXRkb3duX2ZsYWc7CisKKyAgR0NvbmQgY29uZDsKKyAgR011dGV4IG11dGV4OworfTsKKworc3RydWN0IF9Hc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbENsYXNzCit7CisgIEdzdEVsZW1lbnRDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitHVHlwZSBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dldF90eXBlICh2b2lkKTsKKworR19FTkRfREVDTFMKKyNlbmRpZiAvKiBfX0dTVF9WSURFT0ZSQU1FX0FVRElPTEVWRUxfSF9fICovCmRpZmYgLS1naXQgYS9nc3QvdmlkZW9tZWFzdXJlL01ha2VmaWxlLmluIGIvZ3N0L3ZpZGVvbWVhc3VyZS9NYWtlZmlsZS5pbgppbmRleCA3MGFmMzgyLi44YWMyOTI4IDEwMDY0NAotLS0gYS9nc3QvdmlkZW9tZWFzdXJlL01ha2VmaWxlLmluCisrKyBiL2dzdC92aWRlb21lYXN1cmUvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc4LDYgKzI3Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE1LDYgKzMxNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIzLDcgKzMyNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Miw4ICszNDQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYwLDE2ICszNjMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk1LDYgKzM5OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMCw2ICs0MjYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjEsNiArNTI5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNCw4ICs1NDMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTEsNiArNTU4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOCwxNiArNjE3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY5LDYgKzY4MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzksNiArNjkxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg4LDYgKzcwMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjUsNyArNzQwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvdmlkZW9tZWFzdXJlL2dzdHZpZGVvbWVhc3VyZV9zc2ltLmMgYi9nc3QvdmlkZW9tZWFzdXJlL2dzdHZpZGVvbWVhc3VyZV9zc2ltLmMKaW5kZXggZTg1ZDY4Zi4uMTNiYTAzNSAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvbWVhc3VyZS9nc3R2aWRlb21lYXN1cmVfc3NpbS5jCisrKyBiL2dzdC92aWRlb21lYXN1cmUvZ3N0dmlkZW9tZWFzdXJlX3NzaW0uYwpAQCAtMTE3NiwxMSArMTE3Niw3IEBACiAgICAgZ290byBjb3VsZF9ub3RfYWRkX3Npbms7CiAgIGVsc2UKICAgICAvKiBpbmNyZW1lbnQgcGFkIGNvdW50ZXIgKi8KLSNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwyOSw1KQogICAgIHBhZGNvdW50ID0gZ19hdG9taWNfaW50X2FkZCAoJnNzaW0tPnBhZGNvdW50LCAxKTsKLSNlbHNlCi0gICAgcGFkY291bnQgPSBnX2F0b21pY19pbnRfZXhjaGFuZ2VfYW5kX2FkZCAoJnNzaW0tPnBhZGNvdW50LCAxKTsKLSNlbmRpZgogCiAgIGlmIChudW0gIT0gLTEpIHsKICAgICBHc3RTU2ltT3V0cHV0Q29udGV4dCAqYzsKZGlmZiAtLWdpdCBhL2dzdC92aWRlb3BhcnNlcnMvTWFrZWZpbGUuaW4gYi9nc3QvdmlkZW9wYXJzZXJzL01ha2VmaWxlLmluCmluZGV4IGU5MjUxZDEuLjFhMGM1N2IgMTAwNjQ0Ci0tLSBhL2dzdC92aWRlb3BhcnNlcnMvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L3ZpZGVvcGFyc2Vycy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yODcsNiArMjg2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMjQsNiArMzI1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMzIsNyArMzM1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzUxLDggKzM1Myw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjksMTYgKzM3MiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MDQsNiArNDA4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI5LDYgKzQzNSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUzMCw2ICs1MzgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTQzLDggKzU1Miw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU2MCw2ICs1NjcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjE3LDE2ICs2MjYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzgsNiArNjg5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4OCw2ICs3MDAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTcsNiArNzEwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTczNCw3ICs3NDksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC92aWRlb3BhcnNlcnMvZ3N0ZGlyYWNwYXJzZS5jIGIvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RkaXJhY3BhcnNlLmMKaW5kZXggZWEzY2Q5ZC4uOTNmMDBjNiAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RkaXJhY3BhcnNlLmMKKysrIGIvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RkaXJhY3BhcnNlLmMKQEAgLTI0LDcgKzI0LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZha2VzcmMgISBnc3RkaXJhY3BhcnNlICEgRklYTUUgISBmYWtlc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmFrZXNyYyAhIGdzdGRpcmFjcGFyc2UgISBGSVhNRSAhIGZha2VzaW5rCiAgKiBdfAogICogRklYTUUgRGVzY3JpYmUgd2hhdCB0aGUgcGlwZWxpbmUgZG9lcy4KICAqIDwvcmVmc2VjdDI+CkBAIC0zOTYsMTAgKzM5NiwxOSBAQAogICAgIEdzdFRhZ0xpc3QgKnRhZ2xpc3Q7CiAgICAgR3N0Q2FwcyAqY2FwczsKIAotICAgIHRhZ2xpc3QgPSBnc3RfdGFnX2xpc3RfbmV3X2VtcHR5ICgpOwotCiAgICAgLyogY29kZWMgdGFnICovCiAgICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAocGFyc2UpKTsKKyAgICBpZiAoR19VTkxJS0VMWSAoY2FwcyA9PSBOVUxMKSkgeworICAgICAgaWYgKEdTVF9QQURfSVNfRkxVU0hJTkcgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSkpIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgZmx1c2hpbmciKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgbm90IG5lZ290aWF0ZWQhIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKKyAgICAgIH0KKyAgICB9CisKKyAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKICAgICBnc3RfcGJfdXRpbHNfYWRkX2NvZGVjX2Rlc2NyaXB0aW9uX3RvX3RhZ19saXN0ICh0YWdsaXN0LAogICAgICAgICBHU1RfVEFHX1ZJREVPX0NPREVDLCBjYXBzKTsKICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CmRpZmYgLS1naXQgYS9nc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjNwYXJzZS5jIGIvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjYzcGFyc2UuYwppbmRleCBlYjYyOTBiLi4zNzBjYmIxIDEwMDY0NAotLS0gYS9nc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjNwYXJzZS5jCisrKyBiL2dzdC92aWRlb3BhcnNlcnMvZ3N0aDI2M3BhcnNlLmMKQEAgLTQzOSwxMCArNDM5LDE5IEBACiAgICAgR3N0VGFnTGlzdCAqdGFnbGlzdDsKICAgICBHc3RDYXBzICpjYXBzOwogCi0gICAgdGFnbGlzdCA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkgKCk7Ci0KICAgICAvKiBjb2RlYyB0YWcgKi8KICAgICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChwYXJzZSkpOworICAgIGlmIChHX1VOTElLRUxZIChjYXBzID09IE5VTEwpKSB7CisgICAgICBpZiAoR1NUX1BBRF9JU19GTFVTSElORyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAocGFyc2UpKSkgeworICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKHBhcnNlLCAiU3JjIHBhZCBpcyBmbHVzaGluZyIpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICB9IGVsc2UgeworICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKHBhcnNlLCAiU3JjIHBhZCBpcyBub3QgbmVnb3RpYXRlZCEiKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX05PVF9ORUdPVElBVEVEOworICAgICAgfQorICAgIH0KKworICAgIHRhZ2xpc3QgPSBnc3RfdGFnX2xpc3RfbmV3X2VtcHR5ICgpOwogICAgIGdzdF9wYl91dGlsc19hZGRfY29kZWNfZGVzY3JpcHRpb25fdG9fdGFnX2xpc3QgKHRhZ2xpc3QsCiAgICAgICAgIEdTVF9UQUdfVklERU9fQ09ERUMsIGNhcHMpOwogICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKZGlmZiAtLWdpdCBhL2dzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NHBhcnNlLmMgYi9nc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjRwYXJzZS5jCmluZGV4IDkxNWMyZDcuLjg5MDdlYjQgMTAwNjQ0Ci0tLSBhL2dzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NHBhcnNlLmMKKysrIGIvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY0cGFyc2UuYwpAQCAtMTQ5OSwxMSArMTQ5OSwyMCBAQAogc3RhdGljIHZvaWQKIGVuc3VyZV9jYXBzX3Byb2ZpbGUgKEdzdEgyNjRQYXJzZSAqIGgyNjRwYXJzZSwgR3N0Q2FwcyAqIGNhcHMsIEdzdEgyNjRTUFMgKiBzcHMpCiB7Ci0gIEdzdENhcHMgKmZpbHRlcl9jYXBzLCAqcGVlcl9jYXBzLCAqY29tcGF0X2NhcHM7CisgIEdzdENhcHMgKnBlZXJfY2FwcywgKmNvbXBhdF9jYXBzOwogCi0gIGZpbHRlcl9jYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSAoInZpZGVvL3gtaDI2NCIpOwotICBwZWVyX2NhcHMgPQotICAgICAgZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKGgyNjRwYXJzZSksIGZpbHRlcl9jYXBzKTsKKyAgcGVlcl9jYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChoMjY0cGFyc2UpKTsKKyAgaWYgKCFwZWVyX2NhcHMgfHwgIWdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKGNhcHMsIHBlZXJfY2FwcykpIHsKKyAgICBHc3RDYXBzICpmaWx0ZXJfY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUgKCJ2aWRlby94LWgyNjQiKTsKKworICAgIGlmIChwZWVyX2NhcHMpCisgICAgICBnc3RfY2Fwc191bnJlZiAocGVlcl9jYXBzKTsKKyAgICBwZWVyX2NhcHMgPQorICAgICAgICBnc3RfcGFkX3BlZXJfcXVlcnlfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAoaDI2NHBhcnNlKSwKKyAgICAgICAgZmlsdGVyX2NhcHMpOworCisgICAgZ3N0X2NhcHNfdW5yZWYgKGZpbHRlcl9jYXBzKTsKKyAgfQogCiAgIGlmIChwZWVyX2NhcHMgJiYgIWdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKGNhcHMsIHBlZXJfY2FwcykpIHsKICAgICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKQEAgLTE1MzQsNyArMTU0Myw2IEBACiAgIH0KICAgaWYgKHBlZXJfY2FwcykKICAgICBnc3RfY2Fwc191bnJlZiAocGVlcl9jYXBzKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGZpbHRlcl9jYXBzKTsKIH0KIAogc3RhdGljIGNvbnN0IGdjaGFyICoKQEAgLTE3OTIsOCArMTgwMCw2IEBACiAgICAgICAvKiBQYXNzIHRocm91Z2ggb3Igc2V0IG91dHB1dCBzdGVyZW8vbXVsdGl2aWV3IGNvbmZpZyAqLwogICAgICAgaWYgKHMgJiYgZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGQgKHMsICJtdWx0aXZpZXctbW9kZSIpKSB7CiAgICAgICAgIGNhcHNfbXZpZXdfbW9kZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAocywgIm11bHRpdmlldy1tb2RlIik7Ci0gICAgICAgIG12aWV3X21vZGUgPQotICAgICAgICAgICAgZ3N0X3ZpZGVvX211bHRpdmlld19tb2RlX2Zyb21fY2Fwc19zdHJpbmcgKGNhcHNfbXZpZXdfbW9kZSk7CiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZsYWdzZXQgKHMsICJtdWx0aXZpZXctZmxhZ3MiLCAmbXZpZXdfZmxhZ3MsIE5VTEwpOwogICAgICAgfSBlbHNlIGlmIChtdmlld19tb2RlICE9IEdTVF9WSURFT19NVUxUSVZJRVdfTU9ERV9OT05FKSB7CiAgICAgICAgIGlmIChnc3RfdmlkZW9fbXVsdGl2aWV3X2d1ZXNzX2hhbGZfYXNwZWN0IChtdmlld19tb2RlLApAQCAtMTg1NSwxNCArMTg2MSwyMCBAQAogCiAgICAgc3JjX2NhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKGgyNjRwYXJzZSkpOwogCi0gICAgaWYgKHNyY19jYXBzCi0gICAgICAgICYmIGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkIChnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChzcmNfY2FwcywgMCksCi0gICAgICAgICAgICAiY29kZWNfZGF0YSIpKSB7CisgICAgaWYgKHNyY19jYXBzKSB7CiAgICAgICAvKiB1c2UgY29kZWMgZGF0YSBmcm9tIG9sZCBjYXBzIGZvciBjb21wYXJpc29uOyB3ZSBkb24ndCB3YW50IHRvIHJlc2VuZCBjYXBzCiAgICAgICAgICBpZiBldmVyeXRoaW5nIGlzIHNhbWUgZXhjZXB0IGNvZGVjIGRhdGE7ICovCi0gICAgICBnc3RfY2Fwc19zZXRfdmFsdWUgKGNhcHMsICJjb2RlY19kYXRhIiwKLSAgICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoc3JjX2NhcHMsIDApLAotICAgICAgICAgICAgICAiY29kZWNfZGF0YSIpKTsKKyAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19maWVsZCAoZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoc3JjX2NhcHMsIDApLAorICAgICAgICAgICAgICAiY29kZWNfZGF0YSIpKSB7CisgICAgICAgIGdzdF9jYXBzX3NldF92YWx1ZSAoY2FwcywgImNvZGVjX2RhdGEiLAorICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHNyY19jYXBzLCAwKSwKKyAgICAgICAgICAgICAgICAiY29kZWNfZGF0YSIpKTsKKyAgICAgIH0gZWxzZSBpZiAoIWJ1ZikgeworICAgICAgICBHc3RTdHJ1Y3R1cmUgKnM7CisgICAgICAgIC8qIHJlbW92ZSBhbnkgbGVmdC1vdmVyIGNvZGVjLWRhdGEgaGFuZ2luZyBhcm91bmQgKi8KKyAgICAgICAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworICAgICAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZCAocywgImNvZGVjX2RhdGEiKTsKKyAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIShzcmNfY2FwcyAmJiBnc3RfY2Fwc19pc19zdHJpY3RseV9lcXVhbCAoc3JjX2NhcHMsIGNhcHMpKSkgewpAQCAtMjE5Nyw4ICsyMjA5LDYgQEAKICAgICBHc3RUYWdMaXN0ICp0YWdsaXN0OwogICAgIEdzdENhcHMgKmNhcHM7CiAKLSAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKLQogICAgIC8qIGNvZGVjIHRhZyAqLwogICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSk7CiAgICAgaWYgKGNhcHMgPT0gTlVMTCkgewpAQCAtMjIxMCw2ICsyMjIwLDggQEAKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX05PVF9ORUdPVElBVEVEOwogICAgICAgfQogICAgIH0KKworICAgIHRhZ2xpc3QgPSBnc3RfdGFnX2xpc3RfbmV3X2VtcHR5ICgpOwogICAgIGdzdF9wYl91dGlsc19hZGRfY29kZWNfZGVzY3JpcHRpb25fdG9fdGFnX2xpc3QgKHRhZ2xpc3QsCiAgICAgICAgIEdTVF9UQUdfVklERU9fQ09ERUMsIGNhcHMpOwogICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKQEAgLTIzNTYsNiArMjM2OCwxMiBAQAogICAgIH0KICAgfQogCisgIC8qIEZpeG1lOiBzZXR0aW5nIHBhc3N0aHJvdWdoIG1vZGUgY2FzdWluZyBtdWx0aXBsZSBpc3N1ZXM6CisgICAqIEZvciBuYWwgYWxpZ25lZCBtdWx0aXJlc29sdXRvbiBzdHJlYW1zLCBwYXNzdGhyb3VnaCBtb2RlIG1ha2UgaDI2NHBhcnNlCisgICAqIHVuYWJsZSB0byBhZHZlcnRpc2UgdGhlIG5ldyByZXNvdWx0aW9ucy4gQWxzbyBjYXVzaW5nIGlzc3VlcyB3aGlsZQorICAgKiBwYXJzaW5nIE1WQyBzdHJlYW1zIHdoZW4gaXQgaGFzIHR3byBsYXllcnMuCisgICAqIERpc2FiaW5nIHBhc3N0aG91cmdoIG1vZGUgZm9yIG5vdyAqLworI2lmIDAKICAgLyogSWYgU1BTL1BQUyBhbmQgYSBrZXlmcmFtZSBoYXZlIGJlZW4gcGFyc2VkLCBhbmQgd2UncmUgbm90IGNvbnZlcnRpbmcsCiAgICAqIHdlIG1pZ2h0IHN3aXRjaCB0byBwYXNzdGhyb3VnaCBtb2RlIG5vdyBvbiB0aGUgYmFzaXMgdGhhdCB3ZSd2ZSBzZWVuCiAgICAqIHRoZSBTRUkgcGFja2V0cyBhbmQga25vdyBvcHRpb25hbCBjYXBzIHBhcmFtcyAoc3VjaCBhcyBtdWx0aXZpZXcpLgpAQCAtMjM2Nyw2ICsyMzg1LDcgQEAKICAgICAgIGdzdF9iYXNlX3BhcnNlX3NldF9wYXNzdGhyb3VnaCAocGFyc2UsIFRSVUUpOwogICAgIH0KICAgfQorI2VuZGlmCiAKICAgZ3N0X2gyNjRfcGFyc2VfcmVzZXRfZnJhbWUgKGgyNjRwYXJzZSk7CiAKQEAgLTI3MDIsNiArMjcyMSw3IEBACiAgICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RPUDoKICAgICAgIGgyNjRwYXJzZS0+ZHRzID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgICAgIGgyNjRwYXJzZS0+dHNfdHJuX25iID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICAgIGgyNjRwYXJzZS0+cHVzaF9jb2RlYyA9IFRSVUU7CiAKICAgICAgIHJlcyA9IEdTVF9CQVNFX1BBUlNFX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zaW5rX2V2ZW50IChwYXJzZSwgZXZlbnQpOwogICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9nc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjVwYXJzZS5jIGIvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY1cGFyc2UuYwppbmRleCBkNjQ5NjgxLi41YTE5ODRkIDEwMDY0NAotLS0gYS9nc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjVwYXJzZS5jCisrKyBiL2dzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NXBhcnNlLmMKQEAgLTc2MiwxMiArNzYyLDIxIEBACiAKICAgICAvKiBkaXNwYXRjaCBwZXIgTkFMVSBpZiBuZWVkZWQgKi8KICAgICBpZiAoaDI2NXBhcnNlLT5zcGxpdF9wYWNrZXRpemVkKSB7CisgICAgICBHc3RCYXNlUGFyc2VGcmFtZSB0bXBfZnJhbWU7CisKKyAgICAgIGdzdF9iYXNlX3BhcnNlX2ZyYW1lX2luaXQgKCZ0bXBfZnJhbWUpOworICAgICAgdG1wX2ZyYW1lLmZsYWdzIHw9IGZyYW1lLT5mbGFnczsKKyAgICAgIHRtcF9mcmFtZS5vZmZzZXQgPSBmcmFtZS0+b2Zmc2V0OworICAgICAgdG1wX2ZyYW1lLm92ZXJoZWFkID0gZnJhbWUtPm92ZXJoZWFkOworICAgICAgdG1wX2ZyYW1lLmJ1ZmZlciA9IGdzdF9idWZmZXJfY29weV9yZWdpb24gKGJ1ZmZlciwgR1NUX0JVRkZFUl9DT1BZX0FMTCwKKyAgICAgICAgICBuYWx1Lm9mZnNldCwgbmFsdS5zaXplKTsKKwogICAgICAgLyogbm90ZSB3ZSBkb24ndCBuZWVkIHRvIGNvbWUgdXAgd2l0aCBhIHN1Yi1idWZmZXIsIHNpbmNlCiAgICAgICAgKiBzdWJzZXF1ZW50IGNvZGUgb25seSBjb25zaWRlcnMgaW5wdXQgYnVmZmVyJ3MgbWV0YWRhdGEuCiAgICAgICAgKiBSZWFsIGRhdGEgaXMgZWl0aGVyIHRha2VuIGZyb20gaW5wdXQgYnkgYmFzZWNsYXNzIG9yCiAgICAgICAgKiBhIHJlcGxhY2VtZW50IG91dHB1dCBidWZmZXIgaXMgcHJvdmlkZWQgYW55d2F5LiAqLwotICAgICAgZ3N0X2gyNjVfcGFyc2VfcGFyc2VfZnJhbWUgKHBhcnNlLCBmcmFtZSk7Ci0gICAgICByZXQgPSBnc3RfYmFzZV9wYXJzZV9maW5pc2hfZnJhbWUgKHBhcnNlLCBmcmFtZSwgbmwgKyBuYWx1LnNpemUpOworICAgICAgZ3N0X2gyNjVfcGFyc2VfcGFyc2VfZnJhbWUgKHBhcnNlLCAmdG1wX2ZyYW1lKTsKKyAgICAgIHJldCA9IGdzdF9iYXNlX3BhcnNlX2ZpbmlzaF9mcmFtZSAocGFyc2UsICZ0bXBfZnJhbWUsIG5sICsgbmFsdS5zaXplKTsKICAgICAgIGxlZnQgLT0gbmwgKyBuYWx1LnNpemU7CiAgICAgfQogCkBAIC0xMDczLDYgKzEwODIsMTAgQEAKICAgaWYgKCFmb3VuZCkKICAgICByZXR1cm4gTlVMTDsKIAorICBzcHMgPSBoMjY1cGFyc2UtPm5hbHBhcnNlci0+bGFzdF9zcHM7CisgIGlmICghc3BzKQorICAgIHJldHVybiBOVUxMOworCiAgIGJ1ZiA9CiAgICAgICBnc3RfYnVmZmVyX25ld19hbGxvY2F0ZSAoTlVMTCwKICAgICAgIDIzICsgbnVtX2FycmF5cyArICgzICogbnVtX2FycmF5cykgKyB2cHNfc2l6ZSArIHNwc19zaXplICsgcHBzX3NpemUsCkBAIC0xMDgyLDkgKzEwOTUsNiBAQAogICBtZW1zZXQgKGRhdGEsIDAsIG1hcC5zaXplKTsKICAgbmwgPSBoMjY1cGFyc2UtPm5hbF9sZW5ndGhfc2l6ZTsKIAotICBzcHMgPSBoMjY1cGFyc2UtPm5hbHBhcnNlci0+bGFzdF9zcHM7Ci0gIGlmICghc3BzKQotICAgIHJldHVybiBOVUxMOwogICBwZnQgPSAmc3BzLT5wcm9maWxlX3RpZXJfbGV2ZWw7CiAgIGlmIChzcHMtPnZ1aV9wYXJhbWV0ZXJzX3ByZXNlbnRfZmxhZykKICAgICBtaW5fc3BhdGlhbF9zZWdtZW50YXRpb25faWRjID0gc3BzLT52dWlfcGFyYW1zLm1pbl9zcGF0aWFsX3NlZ21lbnRhdGlvbl9pZGM7CkBAIC0xMzQwLDExICsxMzUwLDIwIEBACiBzdGF0aWMgdm9pZAogZW5zdXJlX2NhcHNfcHJvZmlsZSAoR3N0SDI2NVBhcnNlICogaDI2NXBhcnNlLCBHc3RDYXBzICogY2FwcywgR3N0SDI2NVNQUyAqIHNwcykKIHsKLSAgR3N0Q2FwcyAqZmlsdGVyX2NhcHMsICpwZWVyX2NhcHMsICpjb21wYXRfY2FwczsKKyAgR3N0Q2FwcyAqcGVlcl9jYXBzLCAqY29tcGF0X2NhcHM7CiAKLSAgZmlsdGVyX2NhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlICgidmlkZW8veC1oMjY1Iik7Ci0gIHBlZXJfY2FwcyA9Ci0gICAgICBnc3RfcGFkX3BlZXJfcXVlcnlfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAoaDI2NXBhcnNlKSwgZmlsdGVyX2NhcHMpOworICBwZWVyX2NhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKGgyNjVwYXJzZSkpOworICBpZiAoIXBlZXJfY2FwcyB8fCAhZ3N0X2NhcHNfY2FuX2ludGVyc2VjdCAoY2FwcywgcGVlcl9jYXBzKSkgeworICAgIEdzdENhcHMgKmZpbHRlcl9jYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSAoInZpZGVvL3gtaDI2NSIpOworCisgICAgaWYgKHBlZXJfY2FwcykKKyAgICAgIGdzdF9jYXBzX3VucmVmIChwZWVyX2NhcHMpOworICAgIHBlZXJfY2FwcyA9CisgICAgICAgIGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChoMjY1cGFyc2UpLAorICAgICAgICBmaWx0ZXJfY2Fwcyk7CisKKyAgICBnc3RfY2Fwc191bnJlZiAoZmlsdGVyX2NhcHMpOworICB9CiAKICAgaWYgKHBlZXJfY2FwcyAmJiAhZ3N0X2NhcHNfY2FuX2ludGVyc2VjdCAoY2FwcywgcGVlcl9jYXBzKSkgewogICAgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwpAQCAtMTM3NSw3ICsxMzk0LDYgQEAKICAgfQogICBpZiAocGVlcl9jYXBzKQogICAgIGdzdF9jYXBzX3VucmVmIChwZWVyX2NhcHMpOwotICBnc3RfY2Fwc191bnJlZiAoZmlsdGVyX2NhcHMpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTU1NywxNSArMTU3NSwyMiBAQAogCiAgICAgc3JjX2NhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKGgyNjVwYXJzZSkpOwogCi0gICAgaWYgKHNyY19jYXBzCi0gICAgICAgICYmIGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkIChnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChzcmNfY2FwcywgMCksCi0gICAgICAgICAgICAiY29kZWNfZGF0YSIpKSB7CisgICAgaWYgKHNyY19jYXBzKSB7CiAgICAgICAvKiB1c2UgY29kZWMgZGF0YSBmcm9tIG9sZCBjYXBzIGZvciBjb21wYXJpc29uOyB3ZSBkb24ndCB3YW50IHRvIHJlc2VuZCBjYXBzCiAgICAgICAgICBpZiBldmVyeXRoaW5nIGlzIHNhbWUgZXhjZXB0IGNvZGVjIGRhdGE7ICovCi0gICAgICBnc3RfY2Fwc19zZXRfdmFsdWUgKGNhcHMsICJjb2RlY19kYXRhIiwKLSAgICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoc3JjX2NhcHMsIDApLAotICAgICAgICAgICAgICAiY29kZWNfZGF0YSIpKTsKKyAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19maWVsZCAoZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoc3JjX2NhcHMsIDApLAorICAgICAgICAgICAgICAiY29kZWNfZGF0YSIpKSB7CisgICAgICAgIGdzdF9jYXBzX3NldF92YWx1ZSAoY2FwcywgImNvZGVjX2RhdGEiLAorICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHNyY19jYXBzLCAwKSwKKyAgICAgICAgICAgICAgICAiY29kZWNfZGF0YSIpKTsKKyAgICAgIH0gZWxzZSBpZiAoIWJ1ZikgeworICAgICAgICBHc3RTdHJ1Y3R1cmUgKnM7CisgICAgICAgIC8qIHJlbW92ZSBhbnkgbGVmdC1vdmVyIGNvZGVjLWRhdGEgaGFuZ2luZyBhcm91bmQgKi8KKyAgICAgICAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworICAgICAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZCAocywgImNvZGVjX2RhdGEiKTsKKyAgICAgIH0KICAgICB9CisKICAgICBpZiAoIShzcmNfY2FwcyAmJiBnc3RfY2Fwc19pc19zdHJpY3RseV9lcXVhbCAoc3JjX2NhcHMsIGNhcHMpKSkgewogICAgICAgLyogdXBkYXRlIGNvZGVjIGRhdGEgdG8gbmV3IHZhbHVlICovCiAgICAgICBpZiAoYnVmKSB7CkBAIC0xNzY1LDEwICsxNzkwLDE5IEBACiAgICAgR3N0VGFnTGlzdCAqdGFnbGlzdDsKICAgICBHc3RDYXBzICpjYXBzOwogCi0gICAgdGFnbGlzdCA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkgKCk7Ci0KICAgICAvKiBjb2RlYyB0YWcgKi8KICAgICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChwYXJzZSkpOworICAgIGlmIChHX1VOTElLRUxZIChjYXBzID09IE5VTEwpKSB7CisgICAgICBpZiAoR1NUX1BBRF9JU19GTFVTSElORyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAocGFyc2UpKSkgeworICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKHBhcnNlLCAiU3JjIHBhZCBpcyBmbHVzaGluZyIpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICB9IGVsc2UgeworICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKHBhcnNlLCAiU3JjIHBhZCBpcyBub3QgbmVnb3RpYXRlZCEiKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX05PVF9ORUdPVElBVEVEOworICAgICAgfQorICAgIH0KKworICAgIHRhZ2xpc3QgPSBnc3RfdGFnX2xpc3RfbmV3X2VtcHR5ICgpOwogICAgIGdzdF9wYl91dGlsc19hZGRfY29kZWNfZGVzY3JpcHRpb25fdG9fdGFnX2xpc3QgKHRhZ2xpc3QsCiAgICAgICAgIEdTVF9UQUdfVklERU9fQ09ERUMsIGNhcHMpOwogICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKQEAgLTIwMjMsNyArMjA1Nyw3IEBACiAgICAgICAgIG9mZiA9IG5hbHUub2Zmc2V0ICsgbmFsdS5zaXplOwogICAgICAgfQogICAgIH0KLQorICAgIGdzdF9idWZmZXJfdW5tYXAgKGNvZGVjX2RhdGEsICZtYXApOwogICB9IGVsc2UgewogICAgIEdTVF9ERUJVR19PQkpFQ1QgKGgyNjVwYXJzZSwgImhhdmUgYnl0ZXN0cmVhbSBoMjY1Iik7CiAgICAgLyogbm90aGluZyB0byBwcmUtcHJvY2VzcyAqLwpAQCAtMjE4OCw3ICsyMjIyLDcgQEAKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVE9QOgotCisgICAgICBoMjY1cGFyc2UtPnB1c2hfY29kZWMgPSBUUlVFOwogICAgICAgcmVzID0gR1NUX0JBU0VfUEFSU0VfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNpbmtfZXZlbnQgKHBhcnNlLCBldmVudCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9FVkVOVF9TRUdNRU5UOgpkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RtcGVnNHZpZGVvcGFyc2UuYyBiL2dzdC92aWRlb3BhcnNlcnMvZ3N0bXBlZzR2aWRlb3BhcnNlLmMKaW5kZXggNTNkYjJkNS4uYTFmZDNiMiAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RtcGVnNHZpZGVvcGFyc2UuYworKysgYi9nc3QvdmlkZW9wYXJzZXJzL2dzdG1wZWc0dmlkZW9wYXJzZS5jCkBAIC03MjIsMTAgKzcyMiwxOSBAQAogICAgIEdzdFRhZ0xpc3QgKnRhZ2xpc3Q7CiAgICAgR3N0Q2FwcyAqY2FwczsKIAotICAgIHRhZ2xpc3QgPSBnc3RfdGFnX2xpc3RfbmV3X2VtcHR5ICgpOwotCiAgICAgLyogY29kZWMgdGFnICovCiAgICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAocGFyc2UpKTsKKyAgICBpZiAoR19VTkxJS0VMWSAoY2FwcyA9PSBOVUxMKSkgeworICAgICAgaWYgKEdTVF9QQURfSVNfRkxVU0hJTkcgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSkpIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgZmx1c2hpbmciKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgbm90IG5lZ290aWF0ZWQhIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKKyAgICAgIH0KKyAgICB9CisKKyAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKICAgICBnc3RfcGJfdXRpbHNfYWRkX2NvZGVjX2Rlc2NyaXB0aW9uX3RvX3RhZ19saXN0ICh0YWdsaXN0LAogICAgICAgICBHU1RfVEFHX1ZJREVPX0NPREVDLCBjYXBzKTsKICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CmRpZmYgLS1naXQgYS9nc3QvdmlkZW9wYXJzZXJzL2dzdG1wZWd2aWRlb3BhcnNlLmMgYi9nc3QvdmlkZW9wYXJzZXJzL2dzdG1wZWd2aWRlb3BhcnNlLmMKaW5kZXggNTRlZTEzYi4uYmY3MWEzZSAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZS5jCisrKyBiL2dzdC92aWRlb3BhcnNlcnMvZ3N0bXBlZ3ZpZGVvcGFyc2UuYwpAQCAtODE1LDYgKzgxNSw3IEBACiAgIH0KIAogICBpZiAobXB2cGFyc2UtPmNvbmZpZ19mbGFncyAmIEZMQUdfU0VRVUVOQ0VfRVhUKSB7CisgICAgZ3VpbnQ4IGVzY2FwZSA9IG1wdnBhcnNlLT5zZXF1ZW5jZWV4dC5wcm9maWxlX2xldmVsX2VzY2FwZV9iaXQ7CiAgICAgY29uc3QgZ3VpbnQgcHJvZmlsZV9jID0gbXB2cGFyc2UtPnNlcXVlbmNlZXh0LnByb2ZpbGU7CiAgICAgY29uc3QgZ3VpbnQgbGV2ZWxfYyA9IG1wdnBhcnNlLT5zZXF1ZW5jZWV4dC5sZXZlbDsKICAgICBjb25zdCBnY2hhciAqcHJvZmlsZSA9IE5VTEwsICpsZXZlbCA9IE5VTEw7CkBAIC04MjQsMjAgKzgyNSwxNCBAQAogICAgICAqIDQ6MjoyIGFuZCBNdWx0aS12aWV3IGhhdmUgcHJvZmlsZSA9IDAsIHdpdGggdGhlIGVzY2FwZSBiaXQgc2V0IHRvIDEKICAgICAgKi8KICAgICBjb25zdCBnY2hhciAqY29uc3QgcHJvZmlsZXNbXSA9Ci0gICAgICAgIHsgImhpZ2giLCAic3BhdGlhbCIsICJzbnIiLCAibWFpbiIsICJzaW1wbGUiIH07CisgICAgICAgIHsgIjQ6MjoyIiwgImhpZ2giLCAic3BhdGlhbCIsICJzbnIiLCAibWFpbiIsICJzaW1wbGUiIH07CiAgICAgLyoKICAgICAgKiBMZXZlbCBpbmRpY2F0aW9uIC0gNCA9PiBIaWdoLCA2ID0+IEhpZ2gtMTQ0MCwgOCA9PiBNYWluLCAxMCA9PiBMb3csCiAgICAgICogICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBwcm9maWxlID0gMAogICAgICAqLwogICAgIGNvbnN0IGdjaGFyICpjb25zdCBsZXZlbHNbXSA9IHsgImhpZ2giLCAiaGlnaC0xNDQwIiwgIm1haW4iLCAibG93IiB9OwogCi0gICAgaWYgKHByb2ZpbGVfYyA+IDAgJiYgcHJvZmlsZV9jIDwgNikKLSAgICAgIHByb2ZpbGUgPSBwcm9maWxlc1twcm9maWxlX2MgLSAxXTsKLQotICAgIGlmICgobGV2ZWxfYyA+IDMpICYmIChsZXZlbF9jIDwgMTEpICYmIChsZXZlbF9jICUgMiA9PSAwKSkKLSAgICAgIGxldmVsID0gbGV2ZWxzWyhsZXZlbF9jID4+IDEpIC0gMl07Ci0KLSAgICBpZiAocHJvZmlsZV9jID09IDgpIHsKKyAgICBpZiAoZXNjYXBlKSB7CiAgICAgICAvKiBOb24taGllcmFyY2hpY2FsIHByb2ZpbGUgKi8KICAgICAgIHN3aXRjaCAobGV2ZWxfYykgewogICAgICAgICBjYXNlIDI6CkBAIC04NjMsOSArODU4LDE0IEBACiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgYnJlYWs7CiAgICAgICB9Ci0gICAgfQogCi0gICAgLyogRklYTUUgZG9lcyBpdCBtYWtlIHNlbnNlIHRvIGV4cG9zZSBwcm9maWxlL2xldmVsIGluIHRoZSBjYXBzID8gKi8KKyAgICB9IGVsc2UgeworICAgICAgaWYgKHByb2ZpbGVfYyA8IDYpCisgICAgICAgIHByb2ZpbGUgPSBwcm9maWxlc1twcm9maWxlX2NdOworCisgICAgICBpZiAoKGxldmVsX2MgPiAzKSAmJiAobGV2ZWxfYyA8IDExKSAmJiAobGV2ZWxfYyAlIDIgPT0gMCkpCisgICAgICAgIGxldmVsID0gbGV2ZWxzWyhsZXZlbF9jID4+IDEpIC0gMl07CisgICAgfQogCiAgICAgR1NUX0RFQlVHX09CSkVDVCAobXB2cGFyc2UsICJwcm9maWxlOiclcycgbGV2ZWw6JyVzJyIsIHByb2ZpbGUsIGxldmVsKTsKIApAQCAtOTQ4LDggKzk0OCwxOCBAQAogICAgIEdzdENhcHMgKmNhcHM7CiAKICAgICAvKiBjb2RlYyB0YWcgKi8KLSAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKICAgICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChwYXJzZSkpOworICAgIGlmIChHX1VOTElLRUxZIChjYXBzID09IE5VTEwpKSB7CisgICAgICBpZiAoR1NUX1BBRF9JU19GTFVTSElORyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAocGFyc2UpKSkgeworICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKHBhcnNlLCAiU3JjIHBhZCBpcyBmbHVzaGluZyIpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICB9IGVsc2UgeworICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKHBhcnNlLCAiU3JjIHBhZCBpcyBub3QgbmVnb3RpYXRlZCEiKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX05PVF9ORUdPVElBVEVEOworICAgICAgfQorICAgIH0KKworICAgIHRhZ2xpc3QgPSBnc3RfdGFnX2xpc3RfbmV3X2VtcHR5ICgpOwogICAgIGdzdF9wYl91dGlsc19hZGRfY29kZWNfZGVzY3JpcHRpb25fdG9fdGFnX2xpc3QgKHRhZ2xpc3QsCiAgICAgICAgIEdTVF9UQUdfVklERU9fQ09ERUMsIGNhcHMpOwogICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKZGlmZiAtLWdpdCBhL2dzdC92aWRlb3BhcnNlcnMvZ3N0cG5ncGFyc2UuYyBiL2dzdC92aWRlb3BhcnNlcnMvZ3N0cG5ncGFyc2UuYwppbmRleCBlMDhmZTcxLi5lOWQwNzY4IDEwMDY0NAotLS0gYS9nc3QvdmlkZW9wYXJzZXJzL2dzdHBuZ3BhcnNlLmMKKysrIGIvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RwbmdwYXJzZS5jCkBAIC0yNTksMTAgKzI1OSwxOSBAQAogICAgIEdzdFRhZ0xpc3QgKnRhZ2xpc3Q7CiAgICAgR3N0Q2FwcyAqY2FwczsKIAotICAgIHRhZ2xpc3QgPSBnc3RfdGFnX2xpc3RfbmV3X2VtcHR5ICgpOwotCiAgICAgLyogY29kZWMgdGFnICovCiAgICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAocGFyc2UpKTsKKyAgICBpZiAoR19VTkxJS0VMWSAoY2FwcyA9PSBOVUxMKSkgeworICAgICAgaWYgKEdTVF9QQURfSVNfRkxVU0hJTkcgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSkpIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgZmx1c2hpbmciKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgbm90IG5lZ290aWF0ZWQhIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKKyAgICAgIH0KKyAgICB9CisKKyAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKICAgICBnc3RfcGJfdXRpbHNfYWRkX2NvZGVjX2Rlc2NyaXB0aW9uX3RvX3RhZ19saXN0ICh0YWdsaXN0LAogICAgICAgICBHU1RfVEFHX1ZJREVPX0NPREVDLCBjYXBzKTsKICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CmRpZmYgLS1naXQgYS9nc3QvdmlkZW9wYXJzZXJzL2dzdHZjMXBhcnNlLmMgYi9nc3QvdmlkZW9wYXJzZXJzL2dzdHZjMXBhcnNlLmMKaW5kZXggNjNkZTRlOS4uZTcyZjRmNiAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvcGFyc2Vycy9nc3R2YzFwYXJzZS5jCisrKyBiL2dzdC92aWRlb3BhcnNlcnMvZ3N0dmMxcGFyc2UuYwpAQCAtMTcwMCwxMCArMTcwMCwxOSBAQAogICAgIEdzdFRhZ0xpc3QgKnRhZ2xpc3Q7CiAgICAgR3N0Q2FwcyAqY2FwczsKIAotICAgIHRhZ2xpc3QgPSBnc3RfdGFnX2xpc3RfbmV3X2VtcHR5ICgpOwotCiAgICAgLyogY29kZWMgdGFnICovCiAgICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAocGFyc2UpKTsKKyAgICBpZiAoR19VTkxJS0VMWSAoY2FwcyA9PSBOVUxMKSkgeworICAgICAgaWYgKEdTVF9QQURfSVNfRkxVU0hJTkcgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSkpIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgZmx1c2hpbmciKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgbm90IG5lZ290aWF0ZWQhIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKKyAgICAgIH0KKyAgICB9CisKKyAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKICAgICBnc3RfcGJfdXRpbHNfYWRkX2NvZGVjX2Rlc2NyaXB0aW9uX3RvX3RhZ19saXN0ICh0YWdsaXN0LAogICAgICAgICBHU1RfVEFHX1ZJREVPX0NPREVDLCBjYXBzKTsKICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CkBAIC0xOTYyLDYgKzE5NzEsNyBAQAogICAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgfQorICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFZDMV9TVFJFQU1fRk9STUFUX0ZSQU1FX0xBWUVSOgogICAgICAgc3dpdGNoICh2YzFwYXJzZS0+aW5wdXRfc3RyZWFtX2Zvcm1hdCkgewpkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvc2lnbmFsL01ha2VmaWxlLmluIGIvZ3N0L3ZpZGVvc2lnbmFsL01ha2VmaWxlLmluCmluZGV4IDIxZDE5ZGUuLjkzYWU5ZmYgMTAwNjQ0Ci0tLSBhL2dzdC92aWRlb3NpZ25hbC9NYWtlZmlsZS5pbgorKysgYi9nc3QvdmlkZW9zaWduYWwvTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC92aWRlb3NpZ25hbC9nc3RzaW1wbGV2aWRlb21hcmsuYyBiL2dzdC92aWRlb3NpZ25hbC9nc3RzaW1wbGV2aWRlb21hcmsuYwppbmRleCA5ZDU3YjUyLi4yYTUyN2MzIDEwMDY0NAotLS0gYS9nc3QvdmlkZW9zaWduYWwvZ3N0c2ltcGxldmlkZW9tYXJrLmMKKysrIGIvZ3N0L3ZpZGVvc2lnbmFsL2dzdHNpbXBsZXZpZGVvbWFyay5jCkBAIC0zNiw3ICszNiw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCB2aWRlb3Rlc3RzcmMgISBzaW1wbGV2aWRlb21hcmsgISB4aW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBzaW1wbGV2aWRlb21hcmsgISB2aWRlb2NvbnZlcnQgISB4aW1hZ2VzaW5rCiAgKiBdfCBBZGQgdGhlIGRlZmF1bHQgYmxhY2svd2hpdGUgc3F1YXJlcyBhdCB0aGUgYm90dG9tIGxlZnQgb2YgdGhlIHZpZGVvIGZyYW1lcy4KICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC92aWRlb3NpZ25hbC9nc3RzaW1wbGV2aWRlb21hcmtkZXRlY3QuYyBiL2dzdC92aWRlb3NpZ25hbC9nc3RzaW1wbGV2aWRlb21hcmtkZXRlY3QuYwppbmRleCBkNWYwOTNmLi4xZTk1YzgxIDEwMDY0NAotLS0gYS9nc3QvdmlkZW9zaWduYWwvZ3N0c2ltcGxldmlkZW9tYXJrZGV0ZWN0LmMKKysrIGIvZ3N0L3ZpZGVvc2lnbmFsL2dzdHNpbXBsZXZpZGVvbWFya2RldGVjdC5jCkBAIC04Nyw3ICs4Nyw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCB2aWRlb3Rlc3RzcmMgISBzaW1wbGV2aWRlb21hcmtkZXRlY3QgISB2aWRlb2NvbnZlcnQgISB4aW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBzaW1wbGV2aWRlb21hcmtkZXRlY3QgISB2aWRlb2NvbnZlcnQgISB4aW1hZ2VzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvc2lnbmFsL2dzdHZpZGVvYW5hbHlzZS5jIGIvZ3N0L3ZpZGVvc2lnbmFsL2dzdHZpZGVvYW5hbHlzZS5jCmluZGV4IDNjYTRkMDMuLmI3ZWQ3ZTEgMTAwNjQ0Ci0tLSBhL2dzdC92aWRlb3NpZ25hbC9nc3R2aWRlb2FuYWx5c2UuYworKysgYi9nc3QvdmlkZW9zaWduYWwvZ3N0dmlkZW9hbmFseXNlLmMKQEAgLTcyLDcgKzcyLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC1tIHZpZGVvdGVzdHNyYyAhIHZpZGVvYW5hbHlzZSAhIHZpZGVvY29udmVydCAhIHhpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC1tIHZpZGVvdGVzdHNyYyAhIHZpZGVvYW5hbHlzZSAhIHZpZGVvY29udmVydCAhIHhpbWFnZXNpbmsKICAqIF18IFRoaXMgcGlwZWxpbmUgZW1pdHMgbWVzc2FnZXMgdG8gdGhlIGNvbnNvbGUgZm9yIGVhY2ggZnJhbWUgdGhhdCBoYXMgYmVlbiBhbmFseXNlZC4gCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3Qvdm1uYy9NYWtlZmlsZS5pbiBiL2dzdC92bW5jL01ha2VmaWxlLmluCmluZGV4IDc3YzYwY2MuLjNhZDk0MWEgMTAwNjQ0Ci0tLSBhL2dzdC92bW5jL01ha2VmaWxlLmluCisrKyBiL2dzdC92bW5jL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3k0bS9NYWtlZmlsZS5pbiBiL2dzdC95NG0vTWFrZWZpbGUuaW4KaW5kZXggMGQ2Njg0NC4uYTIzYjk1NiAxMDA2NDQKLS0tIGEvZ3N0L3k0bS9NYWtlZmlsZS5pbgorKysgYi9nc3QveTRtL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3k0bS9nc3R5NG1kZWMuYyBiL2dzdC95NG0vZ3N0eTRtZGVjLmMKaW5kZXggNmJmMjdhOC4uYzZiMjA2NSAxMDA2NDQKLS0tIGEvZ3N0L3k0bS9nc3R5NG1kZWMuYworKysgYi9nc3QveTRtL2dzdHk0bWRlYy5jCkBAIC0yNCw3ICsyNCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPWZpbGUueTRtICEgeTRtZGVjICEgeHZpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZpbGVzcmMgbG9jYXRpb249ZmlsZS55NG0gISB5NG1kZWMgISB4dmltYWdlc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC95YWRpZi9NYWtlZmlsZS5pbiBiL2dzdC95YWRpZi9NYWtlZmlsZS5pbgppbmRleCA1ODZmZDc0Li4yNDg4M2Y2IDEwMDY0NAotLS0gYS9nc3QveWFkaWYvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L3lhZGlmL01ha2VmaWxlLmluCkBAIC0xMTUsMTYgKzExNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjcyLDYgKzI3MSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzA5LDYgKzMxMCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE3LDcgKzMyMCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzNiw4ICszMzgsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU0LDE2ICszNTcsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzg5LDYgKzM5Myw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNCw2ICs0MjAsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTUsNiArNTIzLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyOCw4ICs1MzcsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDUsNiArNTUyLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwMiwxNiArNjExLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjYzLDYgKzY3NCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzMsNiArNjg1LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjgyLDYgKzY5NSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MTksNyArNzM0LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QveWFkaWYvZ3N0eWFkaWYuYyBiL2dzdC95YWRpZi9nc3R5YWRpZi5jCmluZGV4IGU0ZmVkNjEuLjFkY2YyY2EgMTAwNjQ0Ci0tLSBhL2dzdC95YWRpZi9nc3R5YWRpZi5jCisrKyBiL2dzdC95YWRpZi9nc3R5YWRpZi5jCkBAIC0yOSw3ICsyOSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgcGF0dGVybj1iYWxsICEgaW50ZXJsYWNlICEgeWFkaWYgISB4dmltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjIHBhdHRlcm49YmFsbCAhIGludGVybGFjZSAhIHlhZGlmICEgeHZpbWFnZXNpbmsKICAqIF18CiAgKiBUaGlzIHBpcGVsaW5lIGNyZWF0ZXMgYW4gaW50ZXJsYWNlZCB0ZXN0IHBhdHRlcm4sIGFuZCB0aGVuIGRlaW50ZXJsYWNlcwogICogaXQgdXNpbmcgdGhlIHlhZGlmIGZpbHRlci4KQEAgLTI0Myw4ICsyNDMsOCBAQAogICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJnZhbHVlLCAmdik7CiAKICAgICBnc3RfY2Fwc19zZXRfdmFsdWUgKG90aGVyY2FwcywgImludGVybGFjZS1tb2RlIiwgJnZhbHVlKTsKLSAgICBnX3ZhbHVlX3Jlc2V0ICgmdmFsdWUpOwotICAgIGdfdmFsdWVfcmVzZXQgKCZ2KTsKKyAgICBnX3ZhbHVlX3Vuc2V0ICgmdmFsdWUpOworICAgIGdfdmFsdWVfdW5zZXQgKCZ2KTsKICAgfSBlbHNlIHsKICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChvdGhlcmNhcHMsICJpbnRlcmxhY2UtbW9kZSIsIEdfVFlQRV9TVFJJTkcsCiAgICAgICAgICJwcm9ncmVzc2l2ZSIsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvZ3N0L3lhZGlmL3ZmX3lhZGlmLmMgYi9nc3QveWFkaWYvdmZfeWFkaWYuYwppbmRleCA4MmU5ZTllLi5hMGJlYzRhIDEwMDY0NAotLS0gYS9nc3QveWFkaWYvdmZfeWFkaWYuYworKysgYi9nc3QveWFkaWYvdmZfeWFkaWYuYwpAQCAtNTYsMTIgKzU2LDE1IEBACiAgICAgICAgIGludCB0ZW1wb3JhbF9kaWZmMiA9KEZGQUJTKG5leHRbbXJlZnNdIC0gYykgKyBGRkFCUyhuZXh0W3ByZWZzXSAtIGUpICk+PjE7IFwKICAgICAgICAgaW50IGRpZmYgPSBGRk1BWDModGVtcG9yYWxfZGlmZjAgPj4gMSwgdGVtcG9yYWxfZGlmZjEsIHRlbXBvcmFsX2RpZmYyKTsgXAogICAgICAgICBpbnQgc3BhdGlhbF9wcmVkID0gKGMrZSkgPj4gMTsgXAotICAgICAgICBpbnQgc3BhdGlhbF9zY29yZSA9IEZGQUJTKGN1clttcmVmcyAtIDFdIC0gY3VyW3ByZWZzIC0gMV0pICsgRkZBQlMoYy1lKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICsgRkZBQlMoY3VyW21yZWZzICsgMV0gLSBjdXJbcHJlZnMgKyAxXSkgLSAxOyBcCisgICAgICAgIGludCBzcGF0aWFsX3Njb3JlID0gLTE7IFwKICBcCi0gICAgICAgIENIRUNLKC0xKSBDSEVDSygtMikgfX0gfX0gXAotICAgICAgICBDSEVDSyggMSkgQ0hFQ0soIDIpIH19IH19IFwKKyAgICAgICAgaWYgKG1yZWZzID4gMCAmJiBwcmVmcyA+IDApIHsgXAorICAgICAgICAgICAgc3BhdGlhbF9zY29yZSA9IEZGQUJTKGN1clttcmVmcyAtIDFdIC0gY3VyW3ByZWZzIC0gMV0pICsgRkZBQlMoYy1lKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBGRkFCUyhjdXJbbXJlZnMgKyAxXSAtIGN1cltwcmVmcyArIDFdKSAtIDE7IFwKICBcCisgICAgICAgICAgICBDSEVDSygtMSkgQ0hFQ0soLTIpIH19IH19IFwKKyAgICAgICAgICAgIENIRUNLKCAxKSBDSEVDSyggMikgfX0gfX0gXAorICAgICAgICB9IFwKICAgICAgICAgaWYgKG1vZGUgPCAyKSB7IFwKICAgICAgICAgICAgIGludCBiID0gKHByZXYyWzIgKiBtcmVmc10gKyBuZXh0MlsyICogbXJlZnNdKT4+MTsgXAogICAgICAgICAgICAgaW50IGYgPSAocHJldjJbMiAqIHByZWZzXSArIG5leHQyWzIgKiBwcmVmc10pPj4xOyBcCmRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKaW5kZXggYmZmZGE1NC4uMTQ3ZDc1OCAxMDA2NDQKLS0tIGEvbHRtYWluLnNoCisrKyBiL2x0bWFpbi5zaApAQCAtMSw5ICsxLDEyIEBACisjISAvYmluL3NoCisjIyBETyBOT1QgRURJVCAtIFRoaXMgZmlsZSBnZW5lcmF0ZWQgZnJvbSAuL2J1aWxkLWF1eC9sdG1haW4uaW4KKyMjICAgICAgICAgICAgICAgYnkgaW5saW5lLXNvdXJjZSB2MjAxNC0wMS0wMy4wMQogCi0jIGxpYnRvb2wgKEdOVSBsaWJ0b29sKSAyLjQuMgorIyBsaWJ0b29sIChHTlUgbGlidG9vbCkgMi40LjYKKyMgUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCiAjIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2CiAKLSMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAotIyAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KICMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCiAKQEAgLTIzLDE2NiArMjYsNjcwIEBACiAjIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICMKICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCBHTlUgTGlidG9vbDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIGEgY29weQotIyBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbCwKLSMgb3Igb2J0YWluZWQgYnkgd3JpdGluZyB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKLSMgVXNhZ2U6ICRwcm9nbmFtZSBbT1BUSU9OXS4uLiBbTU9ERS1BUkddLi4uCi0jCi0jIFByb3ZpZGUgZ2VuZXJhbGl6ZWQgbGlicmFyeS1idWlsZGluZyBzdXBwb3J0IHNlcnZpY2VzLgotIwotIyAgICAgICAtLWNvbmZpZyAgICAgICAgICAgICBzaG93IGFsbCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotIyAgICAgICAtLWRlYnVnICAgICAgICAgICAgICBlbmFibGUgdmVyYm9zZSBzaGVsbCB0cmFjaW5nCi0jICAgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCi0jICAgICAgIC0tZmVhdHVyZXMgICAgICAgICAgIGRpc3BsYXkgYmFzaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAotIyAgICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQotIyAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzICBkb24ndCByZW1vdmUgZHVwbGljYXRlIGRlcGVuZGVuY3kgbGlicmFyaWVzCi0jICAgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKLSMgICAgICAgLS1uby1xdWlldCwgLS1uby1zaWxlbnQKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyAoZGVmYXVsdCkKLSMgICAgICAgLS1uby13YXJuICAgICAgICAgICAgZG9uJ3QgZGlzcGxheSB3YXJuaW5nIG1lc3NhZ2VzCi0jICAgICAgIC0tdGFnPVRBRyAgICAgICAgICAgIHVzZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmcm9tIHRhZyBUQUcKLSMgICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgcHJpbnQgbW9yZSBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIHRoYW4gZGVmYXVsdAotIyAgICAgICAtLW5vLXZlcmJvc2UgICAgICAgICBkb24ndCBwcmludCB0aGUgZXh0cmEgaW5mb3JtYXRpb25hbCBtZXNzYWdlcwotIyAgICAgICAtLXZlcnNpb24gICAgICAgICAgICBwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uCi0jICAgLWgsIC0taGVscCwgLS1oZWxwLWFsbCAgIHByaW50IHNob3J0LCBsb25nLCBvciBkZXRhaWxlZCBoZWxwIG1lc3NhZ2UKLSMKLSMgTU9ERSBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotIwotIyAgICAgICAgIGNsZWFuICAgICAgICAgICAgICByZW1vdmUgZmlsZXMgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5Ci0jICAgICAgICAgY29tcGlsZSAgICAgICAgICAgIGNvbXBpbGUgYSBzb3VyY2UgZmlsZSBpbnRvIGEgbGlidG9vbCBvYmplY3QKLSMgICAgICAgICBleGVjdXRlICAgICAgICAgICAgYXV0b21hdGljYWxseSBzZXQgbGlicmFyeSBwYXRoLCB0aGVuIHJ1biBhIHByb2dyYW0KLSMgICAgICAgICBmaW5pc2ggICAgICAgICAgICAgY29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBvZiBsaWJ0b29sIGxpYnJhcmllcwotIyAgICAgICAgIGluc3RhbGwgICAgICAgICAgICBpbnN0YWxsIGxpYnJhcmllcyBvciBleGVjdXRhYmxlcwotIyAgICAgICAgIGxpbmsgICAgICAgICAgICAgICBjcmVhdGUgYSBsaWJyYXJ5IG9yIGFuIGV4ZWN1dGFibGUKLSMgICAgICAgICB1bmluc3RhbGwgICAgICAgICAgcmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxlZCBkaXJlY3RvcnkKLSMKLSMgTU9ERS1BUkdTIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBNT0RFLiAgV2hlbiBwYXNzZWQgYXMgZmlyc3Qgb3B0aW9uLAotIyBgLS1tb2RlPU1PREUnIG1heSBiZSBhYmJyZXZpYXRlZCBhcyBgTU9ERScgb3IgYSB1bmlxdWUgYWJicmV2aWF0aW9uIG9mIHRoYXQuCi0jIFRyeSBgJHByb2duYW1lIC0taGVscCAtLW1vZGU9TU9ERScgZm9yIGEgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBNT0RFLgotIwotIyBXaGVuIHJlcG9ydGluZyBhIGJ1ZywgcGxlYXNlIGRlc2NyaWJlIGEgdGVzdCBjYXNlIHRvIHJlcHJvZHVjZSBpdCBhbmQKLSMgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgotIwotIyAgICAgICAgIGhvc3QtdHJpcGxldDoJJGhvc3QKLSMgICAgICAgICBzaGVsbDoJCSRTSEVMTAotIyAgICAgICAgIGNvbXBpbGVyOgkJJExUQ0MKLSMgICAgICAgICBjb21waWxlciBmbGFnczoJCSRMVENGTEFHUwotIyAgICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCi0jICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wpIDIuNC4yIERlYmlhbi0yLjQuMi0xLjExCi0jICAgICAgICAgYXV0b21ha2U6CSRhdXRvbWFrZV92ZXJzaW9uCi0jICAgICAgICAgYXV0b2NvbmY6CSRhdXRvY29uZl92ZXJzaW9uCi0jCi0jIFJlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4KLSMgR05VIGxpYnRvb2wgaG9tZSBwYWdlOiA8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRvb2wvPi4KLSMgR2VuZXJhbCBoZWxwIHVzaW5nIEdOVSBzb2Z0d2FyZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCiAKIFBST0dSQU09bGlidG9vbAogUEFDS0FHRT1saWJ0b29sCi1WRVJTSU9OPSIyLjQuMiBEZWJpYW4tMi40LjItMS4xMSIKLVRJTUVTVEFNUD0iIgotcGFja2FnZV9yZXZpc2lvbj0xLjMzMzcKK1ZFUlNJT049IjIuNC42IERlYmlhbi0yLjQuNi0wLjEiCitwYWNrYWdlX3JldmlzaW9uPTIuNC42CiAKLSMgQmUgQm91cm5lIGNvbXBhdGlibGUKLWlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgorCisjIyAtLS0tLS0gIyMKKyMjIFVzYWdlLiAjIworIyMgLS0tLS0tICMjCisKKyMgUnVuICcuL2xpYnRvb2wgLS1oZWxwJyBmb3IgaGVscCB3aXRoIHVzaW5nIHRoaXMgc2NyaXB0IGZyb20gdGhlCisjIGNvbW1hbmQgbGluZS4KKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBVc2VyIG92ZXJyaWRhYmxlIGNvbW1hbmQgcGF0aHMuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgQWZ0ZXIgY29uZmlndXJlIGNvbXBsZXRlcywgaXQgaGFzIGEgYmV0dGVyIGlkZWEgb2Ygc29tZSBvZiB0aGUKKyMgc2hlbGwgdG9vbHMgd2UgbmVlZCB0aGFuIHRoZSBkZWZhdWx0cyB1c2VkIGJ5IHRoZSBmdW5jdGlvbnMgc2hhcmVkCisjIHdpdGggYm9vdHN0cmFwLCBzbyBzZXQgdGhvc2UgaGVyZSB3aGVyZSB0aGV5IGNhbiBzdGlsbCBiZSBvdmVyLQorIyByaWRkZW4gYnkgdGhlIHVzZXIsIGJ1dCBvdGhlcndpc2UgdGFrZSBwcmVjZWRlbmNlLgorCis6ICR7QVVUT0NPTkY9ImF1dG9jb25mIn0KKzogJHtBVVRPTUFLRT0iYXV0b21ha2UifQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBTb3VyY2UgZXh0ZXJuYWwgbGlicmFyaWVzLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBNdWNoIG9mIG91ciBsb3ctbGV2ZWwgZnVuY3Rpb25hbGl0eSBuZWVkcyB0byBiZSBzb3VyY2VkIGZyb20gZXh0ZXJuYWwKKyMgbGlicmFyaWVzLCB3aGljaCBhcmUgaW5zdGFsbGVkIHRvICRwa2dhdXhkaXIuCisKKyMgU2V0IGEgdmVyc2lvbiBzdHJpbmcgZm9yIHRoaXMgc2NyaXB0Lgorc2NyaXB0dmVyc2lvbj0yMDE1LTAxLTIwLjE3OyAjIFVUQworCisjIEdlbmVyYWwgc2hlbGwgc2NyaXB0IGJvaWxlciBwbGF0ZSwgYW5kIGhlbHBlciBmdW5jdGlvbnMuCisjIFdyaXR0ZW4gYnkgR2FyeSBWLiBWYXVnaGFuLCAyMDA0CisKKyMgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCisjIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdSBkaXN0cmlidXRlCisjIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSBvciBsaWJyYXJ5IHRoYXQgaXMgYnVpbHQgdXNpbmcgR05VIExpYnRvb2wsCisjIHlvdSBtYXkgaW5jbHVkZSB0aGlzIGZpbGUgdW5kZXIgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZQorIyBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgUGxlYXNlIHJlcG9ydCBidWdzIG9yIHByb3Bvc2UgcGF0Y2hlcyB0byBnYXJ5QGdudS5vcmcuCisKKworIyMgLS0tLS0tICMjCisjIyBVc2FnZS4gIyMKKyMjIC0tLS0tLSAjIworCisjIEV2YWx1YXRlIHRoaXMgZmlsZSBuZWFyIHRoZSB0b3Agb2YgeW91ciBzY3JpcHQgdG8gZ2FpbiBhY2Nlc3MgdG8KKyMgdGhlIGZ1bmN0aW9ucyBhbmQgdmFyaWFibGVzIGRlZmluZWQgaGVyZToKKyMKKyMgICAuIGBlY2hvICIkMCIgfCAke1NFRC1zZWR9ICdzfFteL10qJHx8J2AvYnVpbGQtYXV4L2Z1bmNsaWIuc2gKKyMKKyMgSWYgeW91IG5lZWQgdG8gb3ZlcnJpZGUgYW55IG9mIHRoZSBkZWZhdWx0IGVudmlyb25tZW50IHZhcmlhYmxlCisjIHNldHRpbmdzLCBkbyB0aGF0IGJlZm9yZSBldmFsdWF0aW5nIHRoaXMgZmlsZS4KKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgU2hlbGwgbm9ybWFsaXNhdGlvbi4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgU29tZSBzaGVsbHMgbmVlZCBhIGxpdHRsZSBoZWxwIHRvIGJlIGFzIEJvdXJuZSBjb21wYXRpYmxlIGFzIHBvc3NpYmxlLgorIyBCZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZSwgbWFrZSBzdXJlIGFsbCB0aGF0IGhlbHAgaGFzIGJlZW4gcHJvdmlkZWQhCisKK0RVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKK2lmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CiAgIGVtdWxhdGUgc2gKICAgTlVMTENNRD06Ci0gICMgWnNoIDMueCBhbmQgNC54IHBlcmZvcm1zIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gKKyAgIyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNoCiAgICMgaXMgY29udHJhcnkgdG8gb3VyIHVzYWdlLiAgRGlzYWJsZSB0aGlzIGZlYXR1cmUuCiAgIGFsaWFzIC1nICckezErIiRAIn0nPSciJEAiJwogICBzZXRvcHQgTk9fR0xPQl9TVUJTVAogZWxzZQotICBjYXNlIGAoc2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gKnBvc2l4Kikgc2V0IC1vIHBvc2l4OzsgZXNhYworICBjYXNlIGAoc2V0IC1vKSAyPi9kZXYvbnVsbGAgaW4gKnBvc2l4Kikgc2V0IC1vIHBvc2l4IDs7IGVzYWMKIGZpCi1CSU5fU0g9eHBnNDsgZXhwb3J0IEJJTl9TSCAjIGZvciBUcnU2NAotRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAogCi0jIEEgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gcHJpbnQgYnVpbHRpbiBvciBwcmludGYuCi1mdW5jX2ZhbGxiYWNrX2VjaG8gKCkKLXsKLSAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKLSQxCi1fTFRFQ0hPX0VPRicKLX0KLQotIyBOTFMgbnVpc2FuY2VzOiBXZSBzYXZlIHRoZSBvbGQgdmFsdWVzIHRvIHJlc3RvcmUgZHVyaW5nIGV4ZWN1dGUgbW9kZS4KLWx0X3VzZXJfbG9jYWxlPQotbHRfc2FmZV9sb2NhbGU9Ci1mb3IgbHRfdmFyIGluIExBTkcgTEFOR1VBR0UgTENfQUxMIExDX0NUWVBFIExDX0NPTExBVEUgTENfTUVTU0FHRVMKKyMgTkxTIG51aXNhbmNlczogV2Ugc2F2ZSB0aGUgb2xkIHZhbHVlcyBpbiBjYXNlIHRoZXkgYXJlIHJlcXVpcmVkIGxhdGVyLgorX0dfdXNlcl9sb2NhbGU9CitfR19zYWZlX2xvY2FsZT0KK2ZvciBfR192YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUwogZG8KLSAgZXZhbCAiaWYgdGVzdCBcIlwkeyRsdF92YXIrc2V0fVwiID0gc2V0OyB0aGVuCi0gICAgICAgICAgc2F2ZV8kbHRfdmFyPVwkJGx0X3ZhcgotICAgICAgICAgICRsdF92YXI9QwotCSAgZXhwb3J0ICRsdF92YXIKLQkgIGx0X3VzZXJfbG9jYWxlPVwiJGx0X3Zhcj1cXFwkc2F2ZV9cJGx0X3ZhcjsgXCRsdF91c2VyX2xvY2FsZVwiCi0JICBsdF9zYWZlX2xvY2FsZT1cIiRsdF92YXI9QzsgXCRsdF9zYWZlX2xvY2FsZVwiCisgIGV2YWwgImlmIHRlc3Qgc2V0ID0gXCJcJHskX0dfdmFyK3NldH1cIjsgdGhlbgorICAgICAgICAgIHNhdmVfJF9HX3Zhcj1cJCRfR192YXIKKyAgICAgICAgICAkX0dfdmFyPUMKKwkgIGV4cG9ydCAkX0dfdmFyCisJICBfR191c2VyX2xvY2FsZT1cIiRfR192YXI9XFxcJHNhdmVfXCRfR192YXI7IFwkX0dfdXNlcl9sb2NhbGVcIgorCSAgX0dfc2FmZV9sb2NhbGU9XCIkX0dfdmFyPUM7IFwkX0dfc2FmZV9sb2NhbGVcIgogCWZpIgogZG9uZQotTENfQUxMPUMKLUxBTkdVQUdFPUMKLWV4cG9ydCBMQU5HVUFHRSBMQ19BTEwKIAotJGx0X3Vuc2V0IENEUEFUSAorIyBDRFBBVEguCisodW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICiAKKyMgTWFrZSBzdXJlIElGUyBoYXMgYSBzZW5zaWJsZSBkZWZhdWx0CitzcD0nICcKK25sPScKKycKK0lGUz0iJHNwCSRubCIKKworIyBUaGVyZSBhcmUgYXBwYXJlbnRseSBzb21lIHJldGFyZGVkIHN5c3RlbXMgdGhhdCB1c2UgJzsnIGFzIGEgUEFUSCBzZXBhcmF0b3IhCitpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgorICBQQVRIX1NFUEFSQVRPUj06CisgIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxICYmIHsKKyAgICAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSB8fAorICAgICAgUEFUSF9TRVBBUkFUT1I9JzsnCisgIH0KK2ZpCisKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBMb2NhdGUgY29tbWFuZCB1dGlsaXRpZXMuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKworIyBmdW5jX2V4ZWN1dGFibGVfcCBGSUxFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgdGhhdCBGSUxFIGlzIGFuIGV4ZWN1dGFibGUgcmVndWxhciBmaWxlLgorZnVuY19leGVjdXRhYmxlX3AgKCkKK3sKKyAgICB0ZXN0IC1mICIkMSIgJiYgdGVzdCAteCAiJDEiCit9CisKKworIyBmdW5jX3BhdGhfcHJvZ3MgUFJPR1NfTElTVCBDSEVDS19GVU5DIFtQQVRIXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZWFyY2ggZm9yIGVpdGhlciBhIHByb2dyYW0gdGhhdCByZXNwb25kcyB0byAtLXZlcnNpb24gd2l0aCBvdXRwdXQKKyMgY29udGFpbmluZyAiR05VIiwgb3IgZWxzZSByZXR1cm5lZCBieSBDSEVDS19GVU5DIG90aGVyd2lzZSwgYnkKKyMgdHJ5aW5nIGFsbCB0aGUgZGlyZWN0b3JpZXMgaW4gUEFUSCB3aXRoIGVhY2ggb2YgdGhlIGVsZW1lbnRzIG9mCisjIFBST0dTX0xJU1QuCisjCisjIENIRUNLX0ZVTkMgc2hvdWxkIGFjY2VwdCB0aGUgcGF0aCB0byBhIGNhbmRpZGF0ZSBwcm9ncmFtLCBhbmQKKyMgc2V0ICRmdW5jX2NoZWNrX3Byb2dfcmVzdWx0IGlmIGl0IHRydW5jYXRlcyBpdHMgb3V0cHV0IGxlc3MgdGhhbgorIyAkX0dfcGF0aF9wcm9nX21heCBjaGFyYWN0ZXJzLgorZnVuY19wYXRoX3Byb2dzICgpCit7CisgICAgX0dfcHJvZ3NfbGlzdD0kMQorICAgIF9HX2NoZWNrX2Z1bmM9JDIKKyAgICBfR19QQVRIPSR7My0iJFBBVEgifQorCisgICAgX0dfcGF0aF9wcm9nX21heD0wCisgICAgX0dfcGF0aF9wcm9nX2ZvdW5kPWZhbHNlCisgICAgX0dfc2F2ZV9JRlM9JElGUzsgSUZTPSR7UEFUSF9TRVBBUkFUT1ItOn0KKyAgICBmb3IgX0dfZGlyIGluICRfR19QQVRIOyBkbworICAgICAgSUZTPSRfR19zYXZlX0lGUworICAgICAgdGVzdCAteiAiJF9HX2RpciIgJiYgX0dfZGlyPS4KKyAgICAgIGZvciBfR19wcm9nX25hbWUgaW4gJF9HX3Byb2dzX2xpc3Q7IGRvCisgICAgICAgIGZvciBfZXhlZXh0IGluICcnIC5FWEU7IGRvCisgICAgICAgICAgX0dfcGF0aF9wcm9nPSRfR19kaXIvJF9HX3Byb2dfbmFtZSRfZXhlZXh0CisgICAgICAgICAgZnVuY19leGVjdXRhYmxlX3AgIiRfR19wYXRoX3Byb2ciIHx8IGNvbnRpbnVlCisgICAgICAgICAgY2FzZSBgIiRfR19wYXRoX3Byb2ciIC0tdmVyc2lvbiAyPiYxYCBpbgorICAgICAgICAgICAgKkdOVSopIGZ1bmNfcGF0aF9wcm9nc19yZXN1bHQ9JF9HX3BhdGhfcHJvZyBfR19wYXRoX3Byb2dfZm91bmQ9OiA7OworICAgICAgICAgICAgKikgICAgICRfR19jaGVja19mdW5jICRfR19wYXRoX3Byb2cKKwkJICAgZnVuY19wYXRoX3Byb2dzX3Jlc3VsdD0kZnVuY19jaGVja19wcm9nX3Jlc3VsdAorCQkgICA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgICAkX0dfcGF0aF9wcm9nX2ZvdW5kICYmIGJyZWFrIDMKKyAgICAgICAgZG9uZQorICAgICAgZG9uZQorICAgIGRvbmUKKyAgICBJRlM9JF9HX3NhdmVfSUZTCisgICAgdGVzdCAteiAiJGZ1bmNfcGF0aF9wcm9nc19yZXN1bHQiICYmIHsKKyAgICAgIGVjaG8gIm5vIGFjY2VwdGFibGUgc2VkIGNvdWxkIGJlIGZvdW5kIGluIFwkUEFUSCIgPiYyCisgICAgICBleGl0IDEKKyAgICB9Cit9CisKKworIyBXZSB3YW50IHRvIGJlIGFibGUgdG8gdXNlIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGJlZm9yZSBjb25maWd1cmUKKyMgaGFzIGZpZ3VyZWQgb3V0IHdoZXJlIHRoZSBiZXN0IGJpbmFyaWVzIGFyZSBrZXB0LCB3aGljaCBtZWFucyB3ZSBoYXZlCisjIHRvIHNlYXJjaCBmb3IgdGhlbSBvdXJzZWx2ZXMgLSBleGNlcHQgd2hlbiB0aGUgcmVzdWx0cyBhcmUgYWxyZWFkeSBzZXQKKyMgd2hlcmUgd2Ugc2tpcCB0aGUgc2VhcmNoZXMuCisKKyMgVW5sZXNzIHRoZSB1c2VyIG92ZXJyaWRlcyBieSBzZXR0aW5nIFNFRCwgc2VhcmNoIHRoZSBwYXRoIGZvciBlaXRoZXIgR05VCisjIHNlZCwgb3IgdGhlIHNlZCB0aGF0IHRydW5jYXRlcyBpdHMgb3V0cHV0IHRoZSBsZWFzdC4KK3Rlc3QgLXogIiRTRUQiICYmIHsKKyAgX0dfc2VkX3NjcmlwdD1zL2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhL2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYi8KKyAgZm9yIF9HX2kgaW4gMSAyIDMgNCA1IDYgNzsgZG8KKyAgICBfR19zZWRfc2NyaXB0PSRfR19zZWRfc2NyaXB0JG5sJF9HX3NlZF9zY3JpcHQKKyAgZG9uZQorICBlY2hvICIkX0dfc2VkX3NjcmlwdCIgMj4vZGV2L251bGwgfCBzZWQgOTlxID5jb25mdGVzdC5zZWQKKyAgX0dfc2VkX3NjcmlwdD0KKworICBmdW5jX2NoZWNrX3Byb2dfc2VkICgpCisgIHsKKyAgICBfR19wYXRoX3Byb2c9JDEKKworICAgIF9HX2NvdW50PTAKKyAgICBwcmludGYgMDEyMzQ1Njc4OSA+Y29uZnRlc3QuaW4KKyAgICB3aGlsZSA6CisgICAgZG8KKyAgICAgIGNhdCBjb25mdGVzdC5pbiBjb25mdGVzdC5pbiA+Y29uZnRlc3QudG1wCisgICAgICBtdiBjb25mdGVzdC50bXAgY29uZnRlc3QuaW4KKyAgICAgIGNwIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0Lm5sCisgICAgICBlY2hvICcnID4+IGNvbmZ0ZXN0Lm5sCisgICAgICAiJF9HX3BhdGhfcHJvZyIgLWYgY29uZnRlc3Quc2VkIDxjb25mdGVzdC5ubCA+Y29uZnRlc3Qub3V0IDI+L2Rldi9udWxsIHx8IGJyZWFrCisgICAgICBkaWZmIGNvbmZ0ZXN0Lm91dCBjb25mdGVzdC5ubCA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICAgIF9HX2NvdW50PWBleHByICRfR19jb3VudCArIDFgCisgICAgICBpZiB0ZXN0ICIkX0dfY291bnQiIC1ndCAiJF9HX3BhdGhfcHJvZ19tYXgiOyB0aGVuCisgICAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQorICAgICAgICBmdW5jX2NoZWNrX3Byb2dfcmVzdWx0PSRfR19wYXRoX3Byb2cKKyAgICAgICAgX0dfcGF0aF9wcm9nX21heD0kX0dfY291bnQKKyAgICAgIGZpCisgICAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBpbnB1dCBzZWVtcyBtb3JlIHRoYW4gZW5vdWdoCisgICAgICB0ZXN0IDEwIC1sdCAiJF9HX2NvdW50IiAmJiBicmVhaworICAgIGRvbmUKKyAgICBybSAtZiBjb25mdGVzdC5pbiBjb25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0CisgIH0KKworICBmdW5jX3BhdGhfcHJvZ3MgInNlZCBnc2VkIiBmdW5jX2NoZWNrX3Byb2dfc2VkICRQQVRIOi91c3IveHBnNC9iaW4KKyAgcm0gLWYgY29uZnRlc3Quc2VkCisgIFNFRD0kZnVuY19wYXRoX3Byb2dzX3Jlc3VsdAorfQorCisKKyMgVW5sZXNzIHRoZSB1c2VyIG92ZXJyaWRlcyBieSBzZXR0aW5nIEdSRVAsIHNlYXJjaCB0aGUgcGF0aCBmb3IgZWl0aGVyIEdOVQorIyBncmVwLCBvciB0aGUgZ3JlcCB0aGF0IHRydW5jYXRlcyBpdHMgb3V0cHV0IHRoZSBsZWFzdC4KK3Rlc3QgLXogIiRHUkVQIiAmJiB7CisgIGZ1bmNfY2hlY2tfcHJvZ19ncmVwICgpCisgIHsKKyAgICBfR19wYXRoX3Byb2c9JDEKKworICAgIF9HX2NvdW50PTAKKyAgICBfR19wYXRoX3Byb2dfbWF4PTAKKyAgICBwcmludGYgMDEyMzQ1Njc4OSA+Y29uZnRlc3QuaW4KKyAgICB3aGlsZSA6CisgICAgZG8KKyAgICAgIGNhdCBjb25mdGVzdC5pbiBjb25mdGVzdC5pbiA+Y29uZnRlc3QudG1wCisgICAgICBtdiBjb25mdGVzdC50bXAgY29uZnRlc3QuaW4KKyAgICAgIGNwIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0Lm5sCisgICAgICBlY2hvICdHUkVQJyA+PiBjb25mdGVzdC5ubAorICAgICAgIiRfR19wYXRoX3Byb2ciIC1lICdHUkVQJCcgLWUgJy0oY2Fubm90IG1hdGNoKS0nIDxjb25mdGVzdC5ubCA+Y29uZnRlc3Qub3V0IDI+L2Rldi9udWxsIHx8IGJyZWFrCisgICAgICBkaWZmIGNvbmZ0ZXN0Lm91dCBjb25mdGVzdC5ubCA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICAgIF9HX2NvdW50PWBleHByICRfR19jb3VudCArIDFgCisgICAgICBpZiB0ZXN0ICIkX0dfY291bnQiIC1ndCAiJF9HX3BhdGhfcHJvZ19tYXgiOyB0aGVuCisgICAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQorICAgICAgICBmdW5jX2NoZWNrX3Byb2dfcmVzdWx0PSRfR19wYXRoX3Byb2cKKyAgICAgICAgX0dfcGF0aF9wcm9nX21heD0kX0dfY291bnQKKyAgICAgIGZpCisgICAgICAjIDEwKigyXjEwKSBjaGFycyBhcyBpbnB1dCBzZWVtcyBtb3JlIHRoYW4gZW5vdWdoCisgICAgICB0ZXN0IDEwIC1sdCAiJF9HX2NvdW50IiAmJiBicmVhaworICAgIGRvbmUKKyAgICBybSAtZiBjb25mdGVzdC5pbiBjb25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0CisgIH0KKworICBmdW5jX3BhdGhfcHJvZ3MgImdyZXAgZ2dyZXAiIGZ1bmNfY2hlY2tfcHJvZ19ncmVwICRQQVRIOi91c3IveHBnNC9iaW4KKyAgR1JFUD0kZnVuY19wYXRoX3Byb2dzX3Jlc3VsdAorfQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFVzZXIgb3ZlcnJpZGFibGUgY29tbWFuZCBwYXRocy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBBbGwgdXBwZXJjYXNlIHZhcmlhYmxlIG5hbWVzIGFyZSB1c2VkIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMuICBUaGVzZQorIyB2YXJpYWJsZXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIHVzZXIgYmVmb3JlIGNhbGxpbmcgYSBzY3JpcHQgdGhhdAorIyB1c2VzIHRoZW0gaWYgYSBzdWl0YWJsZSBjb21tYW5kIG9mIHRoYXQgbmFtZSBpcyBub3QgYWxyZWFkeSBhdmFpbGFibGUKKyMgaW4gdGhlIGNvbW1hbmQgc2VhcmNoIFBBVEguCisKKzogJHtDUD0iY3AgLWYifQorOiAke0VDSE89InByaW50ZiAlc1xuIn0KKzogJHtFR1JFUD0iJEdSRVAgLUUifQorOiAke0ZHUkVQPSIkR1JFUCAtRiJ9Cis6ICR7TE5fUz0ibG4gLXMifQorOiAke01BS0U9Im1ha2UifQorOiAke01LRElSPSJta2RpciJ9Cis6ICR7TVY9Im12IC1mIn0KKzogJHtSTT0icm0gLWYifQorOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9CisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFVzZWZ1bCBzZWQgc25pcHBldHMuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCitzZWRfZGlybmFtZT0nc3wvW14vXSokfHwnCitzZWRfYmFzZW5hbWU9J3N8Xi4qL3x8JworCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCisjIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgorc2VkX3F1b3RlX3N1YnN0PSdzfFwoW2AiJFxcXVwpfFxcXDF8ZycKKworIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCitzZWRfZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCB0dXJucyBhIHN0cmluZyBpbnRvIGEgcmVnZXggbWF0Y2hpbmcgZm9yIHRoZQorIyBzdHJpbmcgbGl0ZXJhbGx5Lgorc2VkX21ha2VfbGl0ZXJhbF9yZWdleD0nc3xbXS5bXiRcXCpcL118XFwmfGcnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGNvbnZlcnRzIGEgdzMyIGZpbGUgbmFtZSBvciBwYXRoCisjIHRoYXQgY29udGFpbnMgZm9yd2FyZCBzbGFzaGVzLCBpbnRvIG9uZSB0aGF0IGNvbnRhaW5zCisjIChlc2NhcGVkKSBiYWNrc2xhc2hlcy4gIEEgdmVyeSBuYWl2ZSBpbXBsZW1lbnRhdGlvbi4KK3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKKworIyBSZS0nXCcgcGFyYW1ldGVyIGV4cGFuc2lvbnMgaW4gb3V0cHV0IG9mIHNlZF9kb3VibGVfcXVvdGVfc3Vic3QgdGhhdAorIyB3ZXJlICdcJy1lZCBpbiBpbnB1dCB0byB0aGUgc2FtZS4gIElmIGFuIG9kZCBudW1iZXIgb2YgJ1wnIHByZWNlZGVkIGEKKyMgJyQnIGluIGlucHV0IHRvIHNlZF9kb3VibGVfcXVvdGVfc3Vic3QsIHRoYXQgJyQnIHdhcyBwcm90ZWN0ZWQgZnJvbQorIyBleHBhbnNpb24uICBTaW5jZSBlYWNoIGlucHV0ICdcJyBpcyBub3cgdHdvICdcJ3MsIGxvb2sgZm9yIGFueSBudW1iZXIKKyMgb2YgcnVucyBvZiBmb3VyICdcJ3MgZm9sbG93ZWQgYnkgdHdvICdcJ3MgYW5kIHRoZW4gYSAnJCcuICAnXCcgdGhhdCAnJCcuCitfR19icz0nXFwnCitfR19iczI9J1xcXFwnCitfR19iczQ9J1xcXFxcXFxcJworX0dfZG9sbGFyPSdcJCcKK3NlZF9kb3VibGVfYmFja3NsYXNoPSJcCisgIHMvJF9HX2JzNC8mXFwKKy9nCisgIHMvXiRfR19iczIkX0dfZG9sbGFyLyRfR19icyYvCisgIHMvXFwoW14kX0dfYnNdXFwpJF9HX2JzMiRfR19kb2xsYXIvXFwxJF9HX2JzMiRfR19icyRfR19kb2xsYXIvZworICBzL1xuLy9nIgorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBHbG9iYWwgdmFyaWFibGVzLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBFeGNlcHQgZm9yIHRoZSBnbG9iYWwgdmFyaWFibGVzIGV4cGxpY2l0bHkgbGlzdGVkIGJlbG93LCB0aGUgZm9sbG93aW5nCisjIGZ1bmN0aW9ucyBpbiB0aGUgJ15mdW5jXycgbmFtZXNwYWNlLCBhbmQgdGhlICdecmVxdWlyZV8nIG5hbWVzcGFjZQorIyB2YXJpYWJsZXMgaW5pdGlhbGlzZWQgaW4gdGhlICdSZXNvdXJjZSBtYW5hZ2VtZW50JyBzZWN0aW9uLCBzb3VyY2luZworIyB0aGlzIGZpbGUgd2lsbCBub3QgcG9sbHV0ZSB5b3VyIGdsb2JhbCBuYW1lc3BhY2Ugd2l0aCBhbnl0aGluZworIyBlbHNlLiBUaGVyZSdzIG5vIHBvcnRhYmxlIHdheSB0byBzY29wZSB2YXJpYWJsZXMgaW4gQm91cm5lIHNoZWxsCisjIHRob3VnaCwgc28gYWN0dWFsbHkgcnVubmluZyB0aGVzZSBmdW5jdGlvbnMgd2lsbCBzb21ldGltZXMgcGxhY2UKKyMgcmVzdWx0cyBpbnRvIGEgdmFyaWFibGUgbmFtZWQgYWZ0ZXIgdGhlIGZ1bmN0aW9uLCBhbmQgb2Z0ZW4gdXNlCisjIHRlbXBvcmFyeSB2YXJpYWJsZXMgaW4gdGhlICdeX0dfJyBuYW1lc3BhY2UuIElmIHlvdSBhcmUgY2FyZWZ1bCB0bworIyBhdm9pZCB1c2luZyB0aG9zZSBuYW1lc3BhY2VzIGNhc3VhbGx5IGluIHlvdXIgc291cmNpbmcgc2NyaXB0LCB0aGluZ3MKKyMgc2hvdWxkIGNvbnRpbnVlIHRvIHdvcmsgYXMgeW91IGV4cGVjdC4gQW5kLCBvZiBjb3Vyc2UsIHlvdSBjYW4gZnJlZWx5CisjIG92ZXJ3cml0ZSBhbnkgb2YgdGhlIGZ1bmN0aW9ucyBvciB2YXJpYWJsZXMgZGVmaW5lZCBoZXJlIGJlZm9yZQorIyBjYWxsaW5nIGFueXRoaW5nIHRvIGN1c3RvbWl6ZSB0aGVtLgorCitFWElUX1NVQ0NFU1M9MAorRVhJVF9GQUlMVVJFPTEKK0VYSVRfTUlTTUFUQ0g9NjMgICMgJD8gPSA2MyBpcyB1c2VkIHRvIGluZGljYXRlIHZlcnNpb24gbWlzbWF0Y2ggdG8gbWlzc2luZy4KK0VYSVRfU0tJUD03NwkgICMgJD8gPSA3NyBpcyB1c2VkIHRvIGluZGljYXRlIGEgc2tpcHBlZCB0ZXN0IHRvIGF1dG9tYWtlLgorCisjIEFsbG93IG92ZXJyaWRpbmcsIGVnIGFzc3VtaW5nIHRoYXQgeW91IGZvbGxvdyB0aGUgY29udmVudGlvbiBvZgorIyBwdXR0aW5nICckZGVidWdfY21kJyBhdCB0aGUgc3RhcnQgb2YgYWxsIHlvdXIgZnVuY3Rpb25zLCB5b3UgY2FuIGdldAorIyBiYXNoIHRvIHNob3cgZnVuY3Rpb24gY2FsbCB0cmFjZSB3aXRoOgorIworIyAgICBkZWJ1Z19jbWQ9J2V2YWwgZWNobyAiJHtGVU5DTkFNRVswXX0gJCoiID4mMicgYmFzaCB5b3VyLXNjcmlwdC1uYW1lCitkZWJ1Z19jbWQ9JHtkZWJ1Z19jbWQtIjoifQorZXhpdF9jbWQ9OgorCisjIEJ5IGNvbnZlbnRpb24sIGZpbmlzaCB5b3VyIHNjcmlwdCB3aXRoOgorIworIyAgICBleGl0ICRleGl0X3N0YXR1cworIworIyBzbyB0aGF0IHlvdSBjYW4gc2V0IGV4aXRfc3RhdHVzIHRvIG5vbi16ZXJvIGlmIHlvdSB3YW50IHRvIGluZGljYXRlCisjIHNvbWV0aGluZyB3ZW50IHdyb25nIGR1cmluZyBleGVjdXRpb24gd2l0aG91dCBhY3R1YWxseSBiYWlsaW5nIG91dCBhdAorIyB0aGUgcG9pbnQgb2YgZmFpbHVyZS4KK2V4aXRfc3RhdHVzPSRFWElUX1NVQ0NFU1MKIAogIyBXb3JrIGFyb3VuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIG9uIElSSVggNi41LiBPbiBJUklYIDYuNCssIHNoCiAjIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgogIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKICMgcG9zaXRpb25hbCBwYXJhbWV0ZXIgJDAsIHdpdGhpbiBhIGZ1bmN0aW9uIGNhbGwsIGlzIHRoZSBuYW1lIG9mIHRoZQogIyBmdW5jdGlvbi4KLXByb2dwYXRoPSIkMCIKK3Byb2dwYXRoPSQwCisKKyMgVGhlIG5hbWUgb2YgdGhpcyBwcm9ncmFtLgorcHJvZ25hbWU9YCRFQ0hPICIkcHJvZ3BhdGgiIHwkU0VEICIkc2VkX2Jhc2VuYW1lImAKKworIyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBhYnNvbHV0ZSBwcm9ncGF0aCBmb3IgcmVleGVjdXRpb246CitjYXNlICRwcm9ncGF0aCBpbgorICBbXFwvXSp8W0EtWmEtel06XFwqKSA7OworICAqW1xcL10qKQorICAgICBwcm9nZGlyPWAkRUNITyAiJHByb2dwYXRoIiB8JFNFRCAiJHNlZF9kaXJuYW1lImAKKyAgICAgcHJvZ2Rpcj1gY2QgIiRwcm9nZGlyIiAmJiBwd2RgCisgICAgIHByb2dwYXRoPSRwcm9nZGlyLyRwcm9nbmFtZQorICAgICA7OworICAqKQorICAgICBfR19JRlM9JElGUworICAgICBJRlM9JHtQQVRIX1NFUEFSQVRPUi06fQorICAgICBmb3IgcHJvZ2RpciBpbiAkUEFUSDsgZG8KKyAgICAgICBJRlM9JF9HX0lGUworICAgICAgIHRlc3QgLXggIiRwcm9nZGlyLyRwcm9nbmFtZSIgJiYgYnJlYWsKKyAgICAgZG9uZQorICAgICBJRlM9JF9HX0lGUworICAgICB0ZXN0IC1uICIkcHJvZ2RpciIgfHwgcHJvZ2Rpcj1gcHdkYAorICAgICBwcm9ncGF0aD0kcHJvZ2Rpci8kcHJvZ25hbWUKKyAgICAgOzsKK2VzYWMKIAogCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgU3RhbmRhcmQgb3B0aW9ucy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCiAKLTogJHtDUD0iY3AgLWYifQotdGVzdCAiJHtFQ0hPK3NldH0iID0gc2V0IHx8IEVDSE89JHthc19lY2hvLSdwcmludGYgJXNcbid9Ci06ICR7TUFLRT0ibWFrZSJ9Ci06ICR7TUtESVI9Im1rZGlyIn0KLTogJHtNVj0ibXYgLWYifQotOiAke1JNPSJybSAtZiJ9Ci06ICR7U0hFTEw9IiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9In0KLTogJHtYc2VkPSIkU0VEIC1lIDFzL15YLy8ifQorIyBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYWZmZWN0IHRoZSBvcGVyYXRpb24gb2YgdGhlIGZ1bmN0aW9ucyBkZWZpbmVkCisjIGJlbG93LCBhbmQgc2hvdWxkIGJlIHNldCBhcHByb3ByaWF0ZWx5IGRlcGVuZGluZyBvbiBydW4tdGltZSBwYXJhLQorIyBtZXRlcnMgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUuCiAKLSMgR2xvYmFsIHZhcmlhYmxlczoKLUVYSVRfU1VDQ0VTUz0wCi1FWElUX0ZBSUxVUkU9MQotRVhJVF9NSVNNQVRDSD02MyAgIyAkPyA9IDYzIGlzIHVzZWQgdG8gaW5kaWNhdGUgdmVyc2lvbiBtaXNtYXRjaCB0byBtaXNzaW5nLgotRVhJVF9TS0lQPTc3CSAgIyAkPyA9IDc3IGlzIHVzZWQgdG8gaW5kaWNhdGUgYSBza2lwcGVkIHRlc3QgdG8gYXV0b21ha2UuCitvcHRfZHJ5X3J1bj1mYWxzZQorb3B0X3F1aWV0PWZhbHNlCitvcHRfdmVyYm9zZT1mYWxzZQogCi1leGl0X3N0YXR1cz0kRVhJVF9TVUNDRVNTCisjIENhdGVnb3JpZXMgJ2FsbCcgYW5kICdub25lJyBhcmUgYWx3YXlzIGF2YWlsYWJsZS4gIEFwcGVuZCBhbnkgb3RoZXJzCisjIHlvdSB3aWxsIHBhc3MgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIGZ1bmNfd2FybmluZyBmcm9tIHlvdXIgb3duCisjIGNvZGUuCit3YXJuaW5nX2NhdGVnb3JpZXM9CiAKLSMgTWFrZSBzdXJlIElGUyBoYXMgYSBzZW5zaWJsZSBkZWZhdWx0Ci1sdF9ubD0nCi0nCi1JRlM9IiAJJGx0X25sIgorIyBCeSBkZWZhdWx0LCBkaXNwbGF5IHdhcm5pbmdzIGFjY29yZGluZyB0byAnb3B0X3dhcm5pbmdfdHlwZXMnLiAgU2V0CisjICd3YXJuaW5nX2Z1bmMnICB0byAnOicgdG8gZWxpZGUgYWxsIHdhcm5pbmdzLCBvciBmdW5jX2ZhdGFsX2Vycm9yIHRvCisjIHRyZWF0IHRoZSBuZXh0IGRpc3BsYXllZCB3YXJuaW5nIGFzIGEgZmF0YWwgZXJyb3IuCit3YXJuaW5nX2Z1bmM9ZnVuY193YXJuX2FuZF9jb250aW51ZQogCi1kaXJuYW1lPSJzLC9bXi9dKiQsLCIKLWJhc2VuYW1lPSJzLF4uKi8sLCIKKyMgU2V0IHRvICdhbGwnIHRvIGRpc3BsYXkgYWxsIHdhcm5pbmdzLCAnbm9uZScgdG8gc3VwcHJlc3MgYWxsCisjIHdhcm5pbmdzLCBvciBhIHNwYWNlIGRlbGltaXRlZCBsaXN0IG9mIHNvbWUgc3Vic2V0IG9mCisjICd3YXJuaW5nX2NhdGVnb3JpZXMnIHRvIGRpc3BsYXkgb25seSB0aGUgbGlzdGVkIHdhcm5pbmdzLgorb3B0X3dhcm5pbmdfdHlwZXM9YWxsCiAKLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgUmVzb3VyY2UgbWFuYWdlbWVudC4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGRlZmluaXRpb25zIGZvciBmdW5jdGlvbnMgdGhhdCBlYWNoIGVuc3VyZSBhCisjIHBhcnRpY3VsYXIgcmVzb3VyY2UgKGEgZmlsZSwgb3IgYSBub24tZW1wdHkgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBmb3IKKyMgZXhhbXBsZSkgaXMgYXZhaWxhYmxlLCBhbmQgaWYgYXBwcm9wcmlhdGUgdG8gZXh0cmFjdCBkZWZhdWx0IHZhbHVlcworIyBmcm9tIHBlcnRpbmVudCBwYWNrYWdlIGZpbGVzLiBDYWxsIHRoZW0gdXNpbmcgdGhlaXIgYXNzb2NpYXRlZAorIyAncmVxdWlyZV8qJyB2YXJpYWJsZSB0byBlbnN1cmUgdGhhdCB0aGV5IGFyZSBleGVjdXRlZCwgYXQgbW9zdCwgb25jZS4KKyMKKyMgSXQncyBlbnRpcmVseSBkZWxpYmVyYXRlIHRoYXQgY2FsbGluZyB0aGVzZSBmdW5jdGlvbnMgY2FuIHNldAorIyB2YXJpYWJsZXMgdGhhdCBkb24ndCBvYmV5IHRoZSBuYW1lc3BhY2UgbGltaXRhdGlvbnMgb2JleWVkIGJ5IHRoZSByZXN0CisjIG9mIHRoaXMgZmlsZSwgaW4gb3JkZXIgdGhhdCB0aGF0IHRoZXkgYmUgYXMgdXNlZnVsIGFzIHBvc3NpYmxlIHRvCisjIGNhbGxlcnMuCisKKworIyByZXF1aXJlX3Rlcm1fY29sb3JzCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQWxsb3cgZGlzcGxheSBvZiBib2xkIHRleHQgb24gdGVybWluYWxzIHRoYXQgc3VwcG9ydCBpdC4KK3JlcXVpcmVfdGVybV9jb2xvcnM9ZnVuY19yZXF1aXJlX3Rlcm1fY29sb3JzCitmdW5jX3JlcXVpcmVfdGVybV9jb2xvcnMgKCkKK3sKKyAgICAkZGVidWdfY21kCisKKyAgICB0ZXN0IC10IDEgJiYgeworICAgICAgIyBDT0xPUlRFUk0gYW5kIFVTRV9BTlNJX0NPTE9SUyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGFrZQorICAgICAgIyBwcmVjZWRlbmNlLCBiZWNhdXNlIG1vc3QgdGVybWluZm8gZGF0YWJhc2VzIG5lZ2xlY3QgdG8gZGVzY3JpYmUKKyAgICAgICMgd2hldGhlciBjb2xvciBzZXF1ZW5jZXMgYXJlIHN1cHBvcnRlZC4KKyAgICAgIHRlc3QgLW4gIiR7Q09MT1JURVJNK3NldH0iICYmIDogJHtVU0VfQU5TSV9DT0xPUlM9IjEifQorCisgICAgICBpZiB0ZXN0IDEgPSAiJFVTRV9BTlNJX0NPTE9SUyI7IHRoZW4KKyAgICAgICAgIyBTdGFuZGFyZCBBTlNJIGVzY2FwZSBzZXF1ZW5jZXMKKyAgICAgICAgdGNfcmVzZXQ9JxtbMG0nCisgICAgICAgIHRjX2JvbGQ9JxtbMW0nOyAgIHRjX3N0YW5kb3V0PScbWzdtJworICAgICAgICB0Y19yZWQ9JxtbMzFtJzsgICB0Y19ncmVlbj0nG1szMm0nCisgICAgICAgIHRjX2JsdWU9JxtbMzRtJzsgIHRjX2N5YW49JxtbMzZtJworICAgICAgZWxzZQorICAgICAgICAjIE90aGVyd2lzZSB0cnVzdCB0aGUgdGVybWluZm8gZGF0YWJhc2UgYWZ0ZXIgYWxsLgorICAgICAgICB0ZXN0IC1uICJgdHB1dCBzZ3IwIDI+L2Rldi9udWxsYCIgJiYgeworICAgICAgICAgIHRjX3Jlc2V0PWB0cHV0IHNncjBgCisgICAgICAgICAgdGVzdCAtbiAiYHRwdXQgYm9sZCAyPi9kZXYvbnVsbGAiICYmIHRjX2JvbGQ9YHRwdXQgYm9sZGAKKyAgICAgICAgICB0Y19zdGFuZG91dD0kdGNfYm9sZAorICAgICAgICAgIHRlc3QgLW4gImB0cHV0IHNtc28gMj4vZGV2L251bGxgIiAmJiB0Y19zdGFuZG91dD1gdHB1dCBzbXNvYAorICAgICAgICAgIHRlc3QgLW4gImB0cHV0IHNldGFmIDEgMj4vZGV2L251bGxgIiAmJiB0Y19yZWQ9YHRwdXQgc2V0YWYgMWAKKyAgICAgICAgICB0ZXN0IC1uICJgdHB1dCBzZXRhZiAyIDI+L2Rldi9udWxsYCIgJiYgdGNfZ3JlZW49YHRwdXQgc2V0YWYgMmAKKyAgICAgICAgICB0ZXN0IC1uICJgdHB1dCBzZXRhZiA0IDI+L2Rldi9udWxsYCIgJiYgdGNfYmx1ZT1gdHB1dCBzZXRhZiA0YAorICAgICAgICAgIHRlc3QgLW4gImB0cHV0IHNldGFmIDUgMj4vZGV2L251bGxgIiAmJiB0Y19jeWFuPWB0cHV0IHNldGFmIDVgCisgICAgICAgIH0KKyAgICAgIGZpCisgICAgfQorCisgICAgcmVxdWlyZV90ZXJtX2NvbG9ycz06Cit9CisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIEZ1bmN0aW9uIGxpYnJhcnkuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIFRoaXMgc2VjdGlvbiBjb250YWlucyBhIHZhcmlldHkgb2YgdXNlZnVsIGZ1bmN0aW9ucyB0byBjYWxsIGluIHlvdXIKKyMgc2NyaXB0cy4gVGFrZSBub3RlIG9mIHRoZSBwb3J0YWJsZSB3cmFwcGVycyBmb3IgZmVhdHVyZXMgcHJvdmlkZWQgYnkKKyMgc29tZSBtb2Rlcm4gc2hlbGxzLCB3aGljaCB3aWxsIGZhbGwgYmFjayB0byBzbG93ZXIgZXF1aXZhbGVudHMgb24KKyMgbGVzcyBmZWF0dXJlZnVsIHNoZWxscy4KKworCisjIGZ1bmNfYXBwZW5kIFZBUiBWQUxVRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQXBwZW5kIFZBTFVFIG9udG8gdGhlIGV4aXN0aW5nIGNvbnRlbnRzIG9mIFZBUi4KKworICAjIFdlIHNob3VsZCB0cnkgdG8gbWluaW1pc2UgZm9ya3MsIGVzcGVjaWFsbHkgb24gV2luZG93cyB3aGVyZSB0aGV5IGFyZQorICAjIHVucmVhc29uYWJseSBzbG93LCBzbyBza2lwIHRoZSBmZWF0dXJlIHByb2JlcyB3aGVuIGJhc2ggb3IgenNoIGFyZQorICAjIGJlaW5nIHVzZWQ6CisgIGlmIHRlc3Qgc2V0ID0gIiR7QkFTSF9WRVJTSU9OK3NldH0ke1pTSF9WRVJTSU9OK3NldH0iOyB0aGVuCisgICAgOiAke19HX0hBVkVfQVJJVEhfT1A9InllcyJ9CisgICAgOiAke19HX0hBVkVfWFNJX09QUz0ieWVzIn0KKyAgICAjIFRoZSArPSBvcGVyYXRvciB3YXMgaW50cm9kdWNlZCBpbiBiYXNoIDMuMQorICAgIGNhc2UgJEJBU0hfVkVSU0lPTiBpbgorICAgICAgWzEyXS4qIHwgMy4wIHwgMy4wKikgOzsKKyAgICAgICopCisgICAgICAgIDogJHtfR19IQVZFX1BMVVNFUV9PUD0ieWVzIn0KKyAgICAgICAgOzsKKyAgICBlc2FjCisgIGZpCisKKyAgIyBfR19IQVZFX1BMVVNFUV9PUAorICAjIENhbiBiZSBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGUgc2hlbGwgaXMgcHJvYmVkLCAieWVzIiBpZiArPSBpcworICAjIHVzZWFibGUgb3IgYW55dGhpbmcgZWxzZSBpZiBpdCBkb2VzIG5vdCB3b3JrLgorICB0ZXN0IC16ICIkX0dfSEFWRV9QTFVTRVFfT1AiIFwKKyAgICAmJiAoZXZhbCAneD1hOyB4Kz0iIGIiOyB0ZXN0ICJhIGIiID0gIiR4IicpIDI+L2Rldi9udWxsIFwKKyAgICAmJiBfR19IQVZFX1BMVVNFUV9PUD15ZXMKKworaWYgdGVzdCB5ZXMgPSAiJF9HX0hBVkVfUExVU0VRX09QIgordGhlbgorICAjIFRoaXMgaXMgYW4gWFNJIGNvbXBhdGlibGUgc2hlbGwsIGFsbG93aW5nIGEgZmFzdGVyIGltcGxlbWVudGF0aW9uLi4uCisgIGV2YWwgJ2Z1bmNfYXBwZW5kICgpCisgIHsKKyAgICAkZGVidWdfY21kCisKKyAgICBldmFsICIkMSs9XCQyIgorICB9JworZWxzZQorICAjIC4uLm90aGVyd2lzZSBmYWxsIGJhY2sgdG8gdXNpbmcgZXhwciwgd2hpY2ggaXMgb2Z0ZW4gYSBzaGVsbCBidWlsdGluLgorICBmdW5jX2FwcGVuZCAoKQorICB7CisgICAgJGRlYnVnX2NtZAorCisgICAgZXZhbCAiJDE9XCQkMVwkMiIKKyAgfQorZmkKKworCisjIGZ1bmNfYXBwZW5kX3F1b3RlZCBWQVIgVkFMVUUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBRdW90ZSBWQUxVRSBhbmQgYXBwZW5kIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLCBzZXBhcmF0ZWQKKyMgYnkgYSBzcGFjZS4KK2lmIHRlc3QgeWVzID0gIiRfR19IQVZFX1BMVVNFUV9PUCI7IHRoZW4KKyAgZXZhbCAnZnVuY19hcHBlbmRfcXVvdGVkICgpCisgIHsKKyAgICAkZGVidWdfY21kCisKKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkMiIKKyAgICBldmFsICIkMSs9XFwgXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgfScKK2Vsc2UKKyAgZnVuY19hcHBlbmRfcXVvdGVkICgpCisgIHsKKyAgICAkZGVidWdfY21kCisKKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkMiIKKyAgICBldmFsICIkMT1cJCQxXFwgXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgfQorZmkKKworCisjIGZ1bmNfYXBwZW5kX3VuaXEgVkFSIFZBTFVFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEFwcGVuZCB1bmlxdWUgVkFMVUUgb250byB0aGUgZXhpc3RpbmcgY29udGVudHMgb2YgVkFSLCBhc3N1bWluZworIyBlbnRyaWVzIGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBWQUxVRS4gIEZvciBleGFtcGxlOgorIworIyAgIGZ1bmNfYXBwZW5kX3VuaXEgb3B0aW9ucyAiIC0tYW5vdGhlci1vcHRpb24gb3B0aW9uLWFyZ3VtZW50IgorIworIyB3aWxsIG9ubHkgYXBwZW5kIHRvICRvcHRpb25zIGlmICIgLS1hbm90aGVyLW9wdGlvbiBvcHRpb24tYXJndW1lbnQgIgorIyBpcyBub3QgYWxyZWFkeSBwcmVzZW50IHNvbWV3aGVyZSBpbiAkb3B0aW9ucyBhbHJlYWR5IChub3RlIHNwYWNlcyBhdAorIyBlYWNoIGVuZCBpbXBsaWVkIGJ5IGxlYWRpbmcgc3BhY2UgaW4gc2Vjb25kIGFyZ3VtZW50KS4KK2Z1bmNfYXBwZW5kX3VuaXEgKCkKK3sKKyAgICAkZGVidWdfY21kCisKKyAgICBldmFsIF9HX2N1cnJlbnRfdmFsdWU9J2AkRUNITyAkJyQxJ2AnCisgICAgX0dfZGVsaW09YGV4cHIgIiQyIiA6ICdcKC5cKSdgCisKKyAgICBjYXNlICRfR19kZWxpbSRfR19jdXJyZW50X3ZhbHVlJF9HX2RlbGltIGluCisgICAgICAqIiQyJF9HX2RlbGltIiopIDs7CisgICAgICAqKSBmdW5jX2FwcGVuZCAiJEAiIDs7CisgICAgZXNhYworfQorCisKKyMgZnVuY19hcml0aCBURVJNLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZXQgZnVuY19hcml0aF9yZXN1bHQgdG8gdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIFRFUk1zLgorICB0ZXN0IC16ICIkX0dfSEFWRV9BUklUSF9PUCIgXAorICAgICYmIChldmFsICd0ZXN0IDIgPSAkKCggMSArIDEgKSknKSAyPi9kZXYvbnVsbCBcCisgICAgJiYgX0dfSEFWRV9BUklUSF9PUD15ZXMKKworaWYgdGVzdCB5ZXMgPSAiJF9HX0hBVkVfQVJJVEhfT1AiOyB0aGVuCisgIGV2YWwgJ2Z1bmNfYXJpdGggKCkKKyAgeworICAgICRkZWJ1Z19jbWQKKworICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorICB9JworZWxzZQorICBmdW5jX2FyaXRoICgpCisgIHsKKyAgICAkZGVidWdfY21kCisKKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorICB9CitmaQorCisKKyMgZnVuY19iYXNlbmFtZSBGSUxFCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZXQgZnVuY19iYXNlbmFtZV9yZXN1bHQgdG8gRklMRSB3aXRoIGV2ZXJ5dGhpbmcgdXAgdG8gYW5kIGluY2x1ZGluZworIyB0aGUgbGFzdCAvIHN0cmlwcGVkLgoraWYgdGVzdCB5ZXMgPSAiJF9HX0hBVkVfWFNJX09QUyI7IHRoZW4KKyAgIyBJZiB0aGlzIHNoZWxsIHN1cHBvcnRzIHN1ZmZpeCBwYXR0ZXJuIHJlbW92YWwsIHRoZW4gdXNlIGl0IHRvIGF2b2lkCisgICMgZm9ya2luZy4gSGlkZSB0aGUgZGVmaW5pdGlvbnMgc2luZ2xlIHF1b3RlcyBpbiBjYXNlIHRoZSBzaGVsbCBjaG9rZXMKKyAgIyBvbiB1bnN1cHBvcnRlZCBzeW50YXguLi4KKyAgX2I9J2Z1bmNfYmFzZW5hbWVfcmVzdWx0PSR7MSMjKi99JworICBfZD0nY2FzZSAkMSBpbgorICAgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9JHsxJS8qfSQyIDs7CisgICAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0kMyAgICAgICAgOzsKKyAgICAgIGVzYWMnCisKK2Vsc2UKKyAgIyAuLi5vdGhlcndpc2UgZmFsbCBiYWNrIHRvIHVzaW5nIHNlZC4KKyAgX2I9J2Z1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJDEiIHwkU0VEICIkc2VkX2Jhc2VuYW1lImAnCisgIF9kPSdmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJDEiICB8JFNFRCAiJHNlZF9kaXJuYW1lImAKKyAgICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCQxIjsgdGhlbgorICAgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSQzCisgICAgICBlbHNlCisgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfZGlybmFtZV9yZXN1bHQgIiQyIgorICAgICAgZmknCitmaQorCitldmFsICdmdW5jX2Jhc2VuYW1lICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgJyIkX2IiJworfScKKworCisjIGZ1bmNfZGlybmFtZSBGSUxFIEFQUEVORCBOT05ESVJfUkVQTEFDRU1FTlQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAogIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKK2V2YWwgJ2Z1bmNfZGlybmFtZSAoKQogewotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLSAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSAgICBlbHNlCi0gICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0gICAgZmkKLX0gIyBmdW5jX2Rpcm5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisgICAgJGRlYnVnX2NtZAorCisgICAgJyIkX2QiJworfScKIAogCi0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotZnVuY19iYXNlbmFtZSAoKQotewotICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotfSAjIGZ1bmNfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0KLQotIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIEZJTEUgQVBQRU5EIE5PTkRJUl9SRVBMQUNFTUVOVAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgogIyBjYWxsOgogIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKICMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdApAQCAtMTkwLDI2MyArNjk3LDMyNyBAQAogIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAjICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KICMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKyMgRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0byB0aGUgZnVuY3Rpb25zIGFib3ZlIGJ1dCBpbnN0ZWFkCisjIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorZXZhbCAnZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQogewotICAgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAotICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0gICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotICAgIGVsc2UKLSAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKyAgICAkZGVidWdfY21kCisKKyAgICAnIiRfYiInCisgICAgJyIkX2QiJworfScKKworCisjIGZ1bmNfZWNobyBBUkcuLi4KKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlLgorZnVuY19lY2hvICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgX0dfbWVzc2FnZT0kKgorCisgICAgZnVuY19lY2hvX0lGUz0kSUZTCisgICAgSUZTPSRubAorICAgIGZvciBfR19saW5lIGluICRfR19tZXNzYWdlOyBkbworICAgICAgSUZTPSRmdW5jX2VjaG9fSUZTCisgICAgICAkRUNITyAiJHByb2duYW1lOiAkX0dfbGluZSIKKyAgICBkb25lCisgICAgSUZTPSRmdW5jX2VjaG9fSUZTCit9CisKKworIyBmdW5jX2VjaG9fYWxsIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJbnZva2UgJEVDSE8gd2l0aCBhbGwgYXJncywgc3BhY2Utc2VwYXJhdGVkLgorZnVuY19lY2hvX2FsbCAoKQoreworICAgICRFQ0hPICIkKiIKK30KKworCisjIGZ1bmNfZWNob19pbmZpeF8xIElORklYIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRWNobyBwcm9ncmFtIG5hbWUsIGZvbGxvd2VkIGJ5IElORklYIG9uIHRoZSBmaXJzdCBsaW5lLCB3aXRoIGFueQorIyBhZGRpdGlvbmFsIGxpbmVzIG5vdCBzaG93aW5nIElORklYLgorZnVuY19lY2hvX2luZml4XzEgKCkKK3sKKyAgICAkZGVidWdfY21kCisKKyAgICAkcmVxdWlyZV90ZXJtX2NvbG9ycworCisgICAgX0dfaW5maXg9JDE7IHNoaWZ0CisgICAgX0dfaW5kZW50PSRfR19pbmZpeAorICAgIF9HX3ByZWZpeD0iJHByb2duYW1lOiAkX0dfaW5maXg6ICIKKyAgICBfR19tZXNzYWdlPSQqCisKKyAgICAjIFN0cmlwIGNvbG9yIGVzY2FwZSBzZXF1ZW5jZXMgYmVmb3JlIGNvdW50aW5nIHByaW50YWJsZSBsZW5ndGgKKyAgICBmb3IgX0dfdGMgaW4gIiR0Y19yZXNldCIgIiR0Y19ib2xkIiAiJHRjX3N0YW5kb3V0IiAiJHRjX3JlZCIgIiR0Y19ncmVlbiIgIiR0Y19ibHVlIiAiJHRjX2N5YW4iCisgICAgZG8KKyAgICAgIHRlc3QgLW4gIiRfR190YyIgJiYgeworICAgICAgICBfR19lc2NfdGM9YCRFQ0hPICIkX0dfdGMiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAorICAgICAgICBfR19pbmRlbnQ9YCRFQ0hPICIkX0dfaW5kZW50IiB8ICRTRUQgInN8JF9HX2VzY190Y3x8ZyJgCisgICAgICB9CisgICAgZG9uZQorICAgIF9HX2luZGVudD0iJHByb2duYW1lOiAiYGVjaG8gIiRfR19pbmRlbnQiIHwgJFNFRCAnc3wufCB8ZydgIiAgIiAjIyBleGNsdWRlIGZyb20gc2NfcHJvaGliaXRfbmVzdGVkX3F1b3RlcworCisgICAgZnVuY19lY2hvX2luZml4XzFfSUZTPSRJRlMKKyAgICBJRlM9JG5sCisgICAgZm9yIF9HX2xpbmUgaW4gJF9HX21lc3NhZ2U7IGRvCisgICAgICBJRlM9JGZ1bmNfZWNob19pbmZpeF8xX0lGUworICAgICAgJEVDSE8gIiRfR19wcmVmaXgkdGNfYm9sZCRfR19saW5lJHRjX3Jlc2V0IiA+JjIKKyAgICAgIF9HX3ByZWZpeD0kX0dfaW5kZW50CisgICAgZG9uZQorICAgIElGUz0kZnVuY19lY2hvX2luZml4XzFfSUZTCit9CisKKworIyBmdW5jX2Vycm9yIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgorZnVuY19lcnJvciAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgICRyZXF1aXJlX3Rlcm1fY29sb3JzCisKKyAgICBmdW5jX2VjaG9faW5maXhfMSAiICAkdGNfc3RhbmRvdXQke3RjX3JlZH1lcnJvciR0Y19yZXNldCIgIiQqIiA+JjIKK30KKworCisjIGZ1bmNfZmF0YWxfZXJyb3IgQVJHLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGFuZCBleGl0LgorZnVuY19mYXRhbF9lcnJvciAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgIGZ1bmNfZXJyb3IgIiQqIgorICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorfQorCisKKyMgZnVuY19ncmVwIEVYUFJFU1NJT04gRklMRU5BTUUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgd2hldGhlciBFWFBSRVNTSU9OIG1hdGNoZXMgYW55IGxpbmUgb2YgRklMRU5BTUUsIHdpdGhvdXQgb3V0cHV0LgorZnVuY19ncmVwICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgJEdSRVAgIiQxIiAiJDIiID4vZGV2L251bGwgMj4mMQorfQorCisKKyMgZnVuY19sZW4gU1RSSU5HCisjIC0tLS0tLS0tLS0tLS0tLQorIyBTZXQgZnVuY19sZW5fcmVzdWx0IHRvIHRoZSBsZW5ndGggb2YgU1RSSU5HLiBTVFJJTkcgbWF5IG5vdAorIyBzdGFydCB3aXRoIGEgaHlwaGVuLgorICB0ZXN0IC16ICIkX0dfSEFWRV9YU0lfT1BTIiBcCisgICAgJiYgKGV2YWwgJ3g9YS9iL2M7CisgICAgICB0ZXN0IDVhYS9iYi9jYyA9ICIkeyN4fSR7eCUlLyp9JHt4JS8qfSR7eCMqL30ke3gjIyovfSInKSAyPi9kZXYvbnVsbCBcCisgICAgJiYgX0dfSEFWRV9YU0lfT1BTPXllcworCitpZiB0ZXN0IHllcyA9ICIkX0dfSEFWRV9YU0lfT1BTIjsgdGhlbgorICBldmFsICdmdW5jX2xlbiAoKQorICB7CisgICAgJGRlYnVnX2NtZAorCisgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CisgIH0nCitlbHNlCisgIGZ1bmNfbGVuICgpCisgIHsKKyAgICAkZGVidWdfY21kCisKKyAgICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCisgIH0KK2ZpCisKKworIyBmdW5jX21rZGlyX3AgRElSRUNUT1JZLVBBVEgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE1ha2Ugc3VyZSB0aGUgZW50aXJlIHBhdGggdG8gRElSRUNUT1JZLVBBVEggaXMgYXZhaWxhYmxlLgorZnVuY19ta2Rpcl9wICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgX0dfZGlyZWN0b3J5X3BhdGg9JDEKKyAgICBfR19kaXJfbGlzdD0KKworICAgIGlmIHRlc3QgLW4gIiRfR19kaXJlY3RvcnlfcGF0aCIgJiYgdGVzdCA6ICE9ICIkb3B0X2RyeV9ydW4iOyB0aGVuCisKKyAgICAgICMgUHJvdGVjdCBkaXJlY3RvcnkgbmFtZXMgc3RhcnRpbmcgd2l0aCAnLScKKyAgICAgIGNhc2UgJF9HX2RpcmVjdG9yeV9wYXRoIGluCisgICAgICAgIC0qKSBfR19kaXJlY3RvcnlfcGF0aD0uLyRfR19kaXJlY3RvcnlfcGF0aCA7OworICAgICAgZXNhYworCisgICAgICAjIFdoaWxlIHNvbWUgcG9ydGlvbiBvZiBESVIgZG9lcyBub3QgeWV0IGV4aXN0Li4uCisgICAgICB3aGlsZSB0ZXN0ICEgLWQgIiRfR19kaXJlY3RvcnlfcGF0aCI7IGRvCisgICAgICAgICMgLi4ubWFrZSBhIGxpc3QgaW4gdG9wbW9zdCBmaXJzdCBvcmRlci4gIFVzZSBhIGNvbG9uIGRlbGltaXRlZAorCSMgbGlzdCBpbmNhc2Ugc29tZSBwb3J0aW9uIG9mIHBhdGggY29udGFpbnMgd2hpdGVzcGFjZS4KKyAgICAgICAgX0dfZGlyX2xpc3Q9JF9HX2RpcmVjdG9yeV9wYXRoOiRfR19kaXJfbGlzdAorCisgICAgICAgICMgSWYgdGhlIGxhc3QgcG9ydGlvbiBhZGRlZCBoYXMgbm8gc2xhc2ggaW4gaXQsIHRoZSBsaXN0IGlzIGRvbmUKKyAgICAgICAgY2FzZSAkX0dfZGlyZWN0b3J5X3BhdGggaW4gKi8qKSA7OyAqKSBicmVhayA7OyBlc2FjCisKKyAgICAgICAgIyAuLi5vdGhlcndpc2UgdGhyb3cgYXdheSB0aGUgY2hpbGQgZGlyZWN0b3J5IGFuZCBsb29wCisgICAgICAgIF9HX2RpcmVjdG9yeV9wYXRoPWAkRUNITyAiJF9HX2RpcmVjdG9yeV9wYXRoIiB8ICRTRUQgLWUgIiRzZWRfZGlybmFtZSJgCisgICAgICBkb25lCisgICAgICBfR19kaXJfbGlzdD1gJEVDSE8gIiRfR19kaXJfbGlzdCIgfCAkU0VEICdzfDoqJHx8J2AKKworICAgICAgZnVuY19ta2Rpcl9wX0lGUz0kSUZTOyBJRlM9OgorICAgICAgZm9yIF9HX2RpciBpbiAkX0dfZGlyX2xpc3Q7IGRvCisJSUZTPSRmdW5jX21rZGlyX3BfSUZTCisgICAgICAgICMgbWtkaXIgY2FuIGZhaWwgd2l0aCBhICdGaWxlIGV4aXN0JyBlcnJvciBpZiB0d28gcHJvY2Vzc2VzCisgICAgICAgICMgdHJ5IHRvIGNyZWF0ZSBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIGNvbmN1cnJlbnRseS4gIERvbid0CisgICAgICAgICMgc3RvcCBpbiB0aGF0IGNhc2UhCisgICAgICAgICRNS0RJUiAiJF9HX2RpciIgMj4vZGV2L251bGwgfHwgOgorICAgICAgZG9uZQorICAgICAgSUZTPSRmdW5jX21rZGlyX3BfSUZTCisKKyAgICAgICMgQmFpbCBvdXQgaWYgd2UgKG9yIHNvbWUgb3RoZXIgcHJvY2VzcykgZmFpbGVkIHRvIGNyZWF0ZSBhIGRpcmVjdG9yeS4KKyAgICAgIHRlc3QgLWQgIiRfR19kaXJlY3RvcnlfcGF0aCIgfHwgXAorICAgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJGYWlsZWQgdG8gY3JlYXRlICckMSciCiAgICAgZmkKLSAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGJhc2VuYW1lImAKLX0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorfQogCiAKLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotZnVuY19zdHJpcG5hbWUgKCkKKyMgZnVuY19ta3RlbXBkaXIgW0JBU0VOQU1FXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE1ha2UgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRoYXQgd29uJ3QgY2xhc2ggd2l0aCBvdGhlciBydW5uaW5nCisjIGxpYnRvb2wgcHJvY2Vzc2VzLCBhbmQgYXZvaWRzIHJhY2UgY29uZGl0aW9ucyBpZiBwb3NzaWJsZS4gIElmCisjIGdpdmVuLCBCQVNFTkFNRSBpcyB0aGUgYmFzZW5hbWUgZm9yIHRoYXQgZGlyZWN0b3J5LgorZnVuY19ta3RlbXBkaXIgKCkKIHsKLSAgICBjYXNlICR7Mn0gaW4KLSAgICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0gICAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0gICAgZXNhYwotfSAjIGZ1bmNfc3RyaXBuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorICAgICRkZWJ1Z19jbWQKIAorICAgIF9HX3RlbXBsYXRlPSR7VE1QRElSLS90bXB9LyR7MS0kcHJvZ25hbWV9CiAKLSMgVGhlc2UgU0VEIHNjcmlwdHMgcHJlc3VwcG9zZSBhbiBhYnNvbHV0ZSBwYXRoIHdpdGggYSB0cmFpbGluZyBzbGFzaC4KLXBhdGhjYXI9J3MsXi9cKFteL10qXCkuKiQsXDEsJwotcGF0aGNkcj0ncyxeL1teL10qLCwnCi1yZW1vdmVkb3RwYXJ0cz0nOmRvdHNsCi0JCXNAL1wuL0AvQGcKLQkJdCBkb3RzbAotCQlzLC9cLiQsLywnCi1jb2xsYXBzZXNsYXNoZXM9J3NAL1x7MSxcfUAvQGcnCi1maW5hbHNsYXNoPSdzLC8qJCwvLCcKKyAgICBpZiB0ZXN0IDogPSAiJG9wdF9kcnlfcnVuIjsgdGhlbgorICAgICAgIyBSZXR1cm4gYSBkaXJlY3RvcnkgbmFtZSwgYnV0IGRvbid0IGNyZWF0ZSBpdCBpbiBkcnktcnVuIG1vZGUKKyAgICAgIF9HX3RtcGRpcj0kX0dfdGVtcGxhdGUtJCQKKyAgICBlbHNlCisKKyAgICAgICMgSWYgbWt0ZW1wIHdvcmtzLCB1c2UgdGhhdCBmaXJzdCBhbmQgZm9yZW1vc3QKKyAgICAgIF9HX3RtcGRpcj1gbWt0ZW1wIC1kICIkX0dfdGVtcGxhdGUtWFhYWFhYWFgiIDI+L2Rldi9udWxsYAorCisgICAgICBpZiB0ZXN0ICEgLWQgIiRfR190bXBkaXIiOyB0aGVuCisgICAgICAgICMgRmFpbGluZyB0aGF0LCBhdCBsZWFzdCB0cnkgYW5kIHVzZSAkUkFORE9NIHRvIGF2b2lkIGEgcmFjZQorICAgICAgICBfR190bXBkaXI9JF9HX3RlbXBsYXRlLSR7UkFORE9NLTB9JCQKKworICAgICAgICBmdW5jX21rdGVtcGRpcl91bWFzaz1gdW1hc2tgCisgICAgICAgIHVtYXNrIDAwNzcKKyAgICAgICAgJE1LRElSICIkX0dfdG1wZGlyIgorICAgICAgICB1bWFzayAkZnVuY19ta3RlbXBkaXJfdW1hc2sKKyAgICAgIGZpCisKKyAgICAgICMgSWYgd2UncmUgbm90IGluIGRyeS1ydW4gbW9kZSwgYm9tYiBvdXQgb24gZmFpbHVyZQorICAgICAgdGVzdCAtZCAiJF9HX3RtcGRpciIgfHwgXAorICAgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgJyRfR190bXBkaXInIgorICAgIGZpCisKKyAgICAkRUNITyAiJF9HX3RtcGRpciIKK30KKwogCiAjIGZ1bmNfbm9ybWFsX2Fic3BhdGggUEFUSAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgUmVtb3ZlIGRvdWJsZWQtdXAgYW5kIHRyYWlsaW5nIHNsYXNoZXMsICIuIiBwYXRoIGNvbXBvbmVudHMsCiAjIGFuZCBjYW5jZWwgb3V0IGFueSAiLi4iIHBhdGggY29tcG9uZW50cyBpbiBQQVRIIGFmdGVyIG1ha2luZwogIyBpdCBhbiBhYnNvbHV0ZSBwYXRoLgotIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0IgogZnVuY19ub3JtYWxfYWJzcGF0aCAoKQogewotICAjIFN0YXJ0IGZyb20gcm9vdCBkaXIgYW5kIHJlYXNzZW1ibGUgdGhlIHBhdGguCi0gIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PQotICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPSQxCi0gIGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlPQotICBjYXNlICRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIGluCi0gICAgIiIpCi0gICAgICAjIEVtcHR5IHBhdGgsIHRoYXQganVzdCBtZWFucyAkY3dkLgotICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICJgcHdkYCIKLSAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAgICAgIHJldHVybgotICAgIDs7Ci0gICAgIyBUaGUgbmV4dCB0aHJlZSBlbnRyaWVzIGFyZSB1c2VkIHRvIHNwb3QgYSBydW4gb2YgcHJlY2lzZWx5Ci0gICAgIyB0d28gbGVhZGluZyBzbGFzaGVzIHdpdGhvdXQgdXNpbmcgbmVnYXRlZCBjaGFyYWN0ZXIgY2xhc3NlczsKLSAgICAjIHdlIHRha2UgYWR2YW50YWdlIG9mIGNhc2UncyBmaXJzdC1tYXRjaCBiZWhhdmlvdXIuCi0gICAgLy8vKikKLSAgICAgICMgVW51c3VhbCBmb3JtIG9mIGFic29sdXRlIHBhdGgsIGRvIG5vdGhpbmcuCi0gICAgOzsKLSAgICAvLyopCi0gICAgICAjIE5vdCBuZWNlc3NhcmlseSBhbiBvcmRpbmFyeSBwYXRoOyBQT1NJWCByZXNlcnZlcyBsZWFkaW5nICcvLycKLSAgICAgICMgYW5kIGZvciBleGFtcGxlIEN5Z3dpbiB1c2VzIGl0IHRvIGFjY2VzcyByZW1vdGUgZmlsZSBzaGFyZXMKLSAgICAgICMgb3ZlciBDSUZTL1NNQiwgc28gd2UgY29uc2VydmUgYSBsZWFkaW5nIGRvdWJsZSBzbGFzaCBpZiBmb3VuZC4KLSAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlPS8KLSAgICA7OwotICAgIC8qKQotICAgICAgIyBBYnNvbHV0ZSBwYXRoLCBkbyBub3RoaW5nLgotICAgIDs7Ci0gICAgKikKLSAgICAgICMgUmVsYXRpdmUgcGF0aCwgcHJlcGVuZCAkY3dkLgotICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD1gcHdkYC8kZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aAotICAgIDs7Ci0gIGVzYWMKLSAgIyBDYW5jZWwgb3V0IGFsbCB0aGUgc2ltcGxlIHN0dWZmIHRvIHNhdmUgaXRlcmF0aW9ucy4gIFdlIGFsc28gd2FudAotICAjIHRoZSBwYXRoIHRvIGVuZCB3aXRoIGEgc2xhc2ggZm9yIGVhc2Ugb2YgcGFyc2luZywgc28gbWFrZSBzdXJlCi0gICMgdGhlcmUgaXMgb25lIChhbmQgb25seSBvbmUpIGhlcmUuCi0gIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9YCRFQ0hPICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgfCAkU0VEIFwKLSAgICAgICAgLWUgIiRyZW1vdmVkb3RwYXJ0cyIgLWUgIiRjb2xsYXBzZXNsYXNoZXMiIC1lICIkZmluYWxzbGFzaCJgCi0gIHdoaWxlIDo7IGRvCi0gICAgIyBQcm9jZXNzZWQgaXQgYWxsIHlldD8KLSAgICBpZiB0ZXN0ICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgPSAvIDsgdGhlbgotICAgICAgIyBJZiB3ZSBhc2NlbmRlZCB0byB0aGUgcm9vdCB1c2luZyAiLi4iIHRoZSByZXN1bHQgbWF5IGJlIGVtcHR5IG5vdy4KLSAgICAgIGlmIHRlc3QgLXogIiRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PS8KLSAgICAgIGZpCi0gICAgICBicmVhawotICAgIGZpCi0gICAgZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50PWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCi0gICAgICAgIC1lICIkcGF0aGNhciJgCi0gICAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD1gJEVDSE8gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiB8ICRTRUQgXAotICAgICAgICAtZSAiJHBhdGhjZHIiYAotICAgICMgRmlndXJlIG91dCB3aGF0IHRvIGRvIHdpdGggaXQKLSAgICBjYXNlICRmdW5jX25vcm1hbF9hYnNwYXRoX3Rjb21wb25lbnQgaW4KKyAgICAkZGVidWdfY21kCisKKyAgICAjIFRoZXNlIFNFRCBzY3JpcHRzIHByZXN1cHBvc2UgYW4gYWJzb2x1dGUgcGF0aCB3aXRoIGEgdHJhaWxpbmcgc2xhc2guCisgICAgX0dfcGF0aGNhcj0nc3xeL1woW14vXSpcKS4qJHxcMXwnCisgICAgX0dfcGF0aGNkcj0nc3xeL1teL10qfHwnCisgICAgX0dfcmVtb3ZlZG90cGFydHM9Jzpkb3RzbAorCQlzfC9cLi98L3xnCisJCXQgZG90c2wKKwkJc3wvXC4kfC98JworICAgIF9HX2NvbGxhcHNlc2xhc2hlcz0nc3wvXHsxLFx9fC98ZycKKyAgICBfR19maW5hbHNsYXNoPSdzfC8qJHwvfCcKKworICAgICMgU3RhcnQgZnJvbSByb290IGRpciBhbmQgcmVhc3NlbWJsZSB0aGUgcGF0aC4KKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0KKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPSQxCisgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9hbHRuYW1lc3BhY2U9CisgICAgY2FzZSAkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCBpbgogICAgICAgIiIpCi0gICAgICAgICMgVHJhaWxpbmcgZW1wdHkgcGF0aCBjb21wb25lbnQsIGlnbm9yZSBpdC4KLSAgICAgIDs7Ci0gICAgICAuLikKLSAgICAgICAgIyBQYXJlbnQgZGlyOyBzdHJpcCBsYXN0IGFzc2VtYmxlZCBjb21wb25lbnQgZnJvbSByZXN1bHQuCi0gICAgICAgIGZ1bmNfZGlybmFtZSAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0IgotICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19kaXJuYW1lX3Jlc3VsdAotICAgICAgOzsKLSAgICAgICopCi0gICAgICAgICMgQWN0dWFsIHBhdGggY29tcG9uZW50LCBhcHBlbmQgaXQuCi0gICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdC8kZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50Ci0gICAgICA7OwotICAgIGVzYWMKLSAgZG9uZQotICAjIFJlc3RvcmUgbGVhZGluZyBkb3VibGUtc2xhc2ggaWYgb25lIHdhcyBmb3VuZCBvbiBlbnRyeS4KLSAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0Ci19Ci0KLSMgZnVuY19yZWxhdGl2ZV9wYXRoIFNSQ0RJUiBEU1RESVIKLSMgZ2VuZXJhdGVzIGEgcmVsYXRpdmUgcGF0aCBmcm9tIFNSQ0RJUiB0byBEU1RESVIsIHdpdGggYSB0cmFpbGluZwotIyBzbGFzaCBpZiBub24tZW1wdHksIHN1aXRhYmxlIGZvciBpbW1lZGlhdGVseSBhcHBlbmRpbmcgYSBmaWxlbmFtZQotIyB3aXRob3V0IG5lZWRpbmcgdG8gYXBwZW5kIGEgc2VwYXJhdG9yLgotIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiCi1mdW5jX3JlbGF0aXZlX3BhdGggKCkKLXsKLSAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0KLSAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJDEiCi0gIGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAotICBmdW5jX25vcm1hbF9hYnNwYXRoICIkMiIKLSAgZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0Ci0KLSAgIyBBc2NlbmQgdGhlIHRyZWUgc3RhcnRpbmcgZnJvbSBsaWJkaXIKLSAgd2hpbGUgOjsgZG8KLSAgICAjIGNoZWNrIGlmIHdlIGhhdmUgZm91bmQgYSBwcmVmaXggb2YgYmluZGlyCi0gICAgY2FzZSAkZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIgaW4KLSAgICAgICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcikKLSAgICAgICAgIyBmb3VuZCBhbiBleGFjdCBtYXRjaAotICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZD0KLSAgICAgICAgYnJlYWsKKyAgICAgICAgIyBFbXB0eSBwYXRoLCB0aGF0IGp1c3QgbWVhbnMgJGN3ZC4KKyAgICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICJgcHdkYCIKKyAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgICAgICByZXR1cm4KICAgICAgICAgOzsKLSAgICAgICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciopCi0gICAgICAgICMgZm91bmQgYSBtYXRjaGluZyBwcmVmaXgKLSAgICAgICAgZnVuY19zdHJpcG5hbWUgIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciIgJycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpciIKLSAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCI7IHRoZW4KLSAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4KLSAgICAgICAgZmkKLSAgICAgICAgYnJlYWsKKyAgICAgICMgVGhlIG5leHQgdGhyZWUgZW50cmllcyBhcmUgdXNlZCB0byBzcG90IGEgcnVuIG9mIHByZWNpc2VseQorICAgICAgIyB0d28gbGVhZGluZyBzbGFzaGVzIHdpdGhvdXQgdXNpbmcgbmVnYXRlZCBjaGFyYWN0ZXIgY2xhc3NlczsKKyAgICAgICMgd2UgdGFrZSBhZHZhbnRhZ2Ugb2YgY2FzZSdzIGZpcnN0LW1hdGNoIGJlaGF2aW91ci4KKyAgICAgIC8vLyopCisgICAgICAgICMgVW51c3VhbCBmb3JtIG9mIGFic29sdXRlIHBhdGgsIGRvIG5vdGhpbmcuCisgICAgICAgIDs7CisgICAgICAvLyopCisgICAgICAgICMgTm90IG5lY2Vzc2FyaWx5IGFuIG9yZGluYXJ5IHBhdGg7IFBPU0lYIHJlc2VydmVzIGxlYWRpbmcgJy8vJworICAgICAgICAjIGFuZCBmb3IgZXhhbXBsZSBDeWd3aW4gdXNlcyBpdCB0byBhY2Nlc3MgcmVtb3RlIGZpbGUgc2hhcmVzCisgICAgICAgICMgb3ZlciBDSUZTL1NNQiwgc28gd2UgY29uc2VydmUgYSBsZWFkaW5nIGRvdWJsZSBzbGFzaCBpZiBmb3VuZC4KKyAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9hbHRuYW1lc3BhY2U9LworICAgICAgICA7OworICAgICAgLyopCisgICAgICAgICMgQWJzb2x1dGUgcGF0aCwgZG8gbm90aGluZy4KICAgICAgICAgOzsKICAgICAgICopCi0gICAgICAgIGZ1bmNfZGlybmFtZSAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIKLSAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXI9JHtmdW5jX2Rpcm5hbWVfcmVzdWx0fQotICAgICAgICBpZiB0ZXN0ICJ4JGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyIiA9IHggOyB0aGVuCi0gICAgICAgICAgIyBIYXZlIHRvIGRlc2NlbmQgYWxsIHRoZSB3YXkgdG8gdGhlIHJvb3QhCi0gICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uLi8kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdAotICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkPSRmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpcgotICAgICAgICAgIGJyZWFrCi0gICAgICAgIGZpCi0gICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9Li4vJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQKKyAgICAgICAgIyBSZWxhdGl2ZSBwYXRoLCBwcmVwZW5kICRjd2QuCisgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9YHB3ZGAvJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgKICAgICAgICAgOzsKICAgICBlc2FjCi0gIGRvbmUKIAotICAjIE5vdyBjYWxjdWxhdGUgcGF0aDsgdGFrZSBjYXJlIHRvIGF2b2lkIGRvdWJsaW5nLXVwIHNsYXNoZXMuCi0gIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiCi0gIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotICBmdW5jX3N0cmlwbmFtZSAnLycgJy8nICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQiCi0gIGlmIHRlc3QgIngkZnVuY19zdHJpcG5hbWVfcmVzdWx0IiAhPSB4IDsgdGhlbgotICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JHtmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0fS8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH0KLSAgZmkKLQotICAjIE5vcm1hbGlzYXRpb24uIElmIGJpbmRpciBpcyBsaWJkaXIsIHJldHVybiBlbXB0eSBzdHJpbmcsCi0gICMgZWxzZSByZWxhdGl2ZSBwYXRoIGVuZGluZyB3aXRoIGEgc2xhc2g7IGVpdGhlciB3YXksIHRhcmdldAotICAjIGZpbGUgbmFtZSBjYW4gYmUgZGlyZWN0bHkgYXBwZW5kZWQuCi0gIGlmIHRlc3QgISAteiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiOyB0aGVuCi0gICAgZnVuY19zdHJpcG5hbWUgJy4vJyAnJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQvIgotICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotICBmaQorICAgICMgQ2FuY2VsIG91dCBhbGwgdGhlIHNpbXBsZSBzdHVmZiB0byBzYXZlIGl0ZXJhdGlvbnMuICBXZSBhbHNvIHdhbnQKKyAgICAjIHRoZSBwYXRoIHRvIGVuZCB3aXRoIGEgc2xhc2ggZm9yIGVhc2Ugb2YgcGFyc2luZywgc28gbWFrZSBzdXJlCisgICAgIyB0aGVyZSBpcyBvbmUgKGFuZCBvbmx5IG9uZSkgaGVyZS4KKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCisgICAgICAgICAgLWUgIiRfR19yZW1vdmVkb3RwYXJ0cyIgLWUgIiRfR19jb2xsYXBzZXNsYXNoZXMiIC1lICIkX0dfZmluYWxzbGFzaCJgCisgICAgd2hpbGUgOjsgZG8KKyAgICAgICMgUHJvY2Vzc2VkIGl0IGFsbCB5ZXQ/CisgICAgICBpZiB0ZXN0IC8gPSAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiOyB0aGVuCisgICAgICAgICMgSWYgd2UgYXNjZW5kZWQgdG8gdGhlIHJvb3QgdXNpbmcgIi4uIiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eSBub3cuCisgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdCI7IHRoZW4KKyAgICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0vCisgICAgICAgIGZpCisgICAgICAgIGJyZWFrCisgICAgICBmaQorICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50PWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCisgICAgICAgICAgLWUgIiRfR19wYXRoY2FyImAKKyAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9YCRFQ0hPICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgfCAkU0VEIFwKKyAgICAgICAgICAtZSAiJF9HX3BhdGhjZHIiYAorICAgICAgIyBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gd2l0aCBpdAorICAgICAgY2FzZSAkZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50IGluCisgICAgICAgICIiKQorICAgICAgICAgICMgVHJhaWxpbmcgZW1wdHkgcGF0aCBjb21wb25lbnQsIGlnbm9yZSBpdC4KKyAgICAgICAgICA7OworICAgICAgICAuLikKKyAgICAgICAgICAjIFBhcmVudCBkaXI7IHN0cmlwIGxhc3QgYXNzZW1ibGVkIGNvbXBvbmVudCBmcm9tIHJlc3VsdC4KKyAgICAgICAgICBmdW5jX2Rpcm5hbWUgIiRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdCIKKyAgICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19kaXJuYW1lX3Jlc3VsdAorICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgIyBBY3R1YWwgcGF0aCBjb21wb25lbnQsIGFwcGVuZCBpdC4KKyAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdCAiLyRmdW5jX25vcm1hbF9hYnNwYXRoX3Rjb21wb25lbnQiCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICBkb25lCisgICAgIyBSZXN0b3JlIGxlYWRpbmcgZG91YmxlLXNsYXNoIGlmIG9uZSB3YXMgZm91bmQgb24gZW50cnkuCisgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CiB9CiAKLSMgVGhlIG5hbWUgb2YgdGhpcyBwcm9ncmFtOgotZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJHByb2dwYXRoIgotcHJvZ25hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAKLSMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gYWJzb2x1dGUgcGF0aCBmb3IgcmVleGVjdXRpb246Ci1jYXNlICRwcm9ncGF0aCBpbgotICBbXFwvXSp8W0EtWmEtel06XFwqKSA7OwotICAqW1xcL10qKQotICAgICBwcm9nZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0Ci0gICAgIHByb2dkaXI9YGNkICIkcHJvZ2RpciIgJiYgcHdkYAotICAgICBwcm9ncGF0aD0iJHByb2dkaXIvJHByb2duYW1lIgotICAgICA7OwotICAqKQotICAgICBzYXZlX0lGUz0iJElGUyIKLSAgICAgSUZTPSR7UEFUSF9TRVBBUkFUT1ItOn0KLSAgICAgZm9yIHByb2dkaXIgaW4gJFBBVEg7IGRvCi0gICAgICAgSUZTPSIkc2F2ZV9JRlMiCi0gICAgICAgdGVzdCAteCAiJHByb2dkaXIvJHByb2duYW1lIiAmJiBicmVhawotICAgICBkb25lCi0gICAgIElGUz0iJHNhdmVfSUZTIgotICAgICB0ZXN0IC1uICIkcHJvZ2RpciIgfHwgcHJvZ2Rpcj1gcHdkYAotICAgICBwcm9ncGF0aD0iJHByb2dkaXIvJHByb2duYW1lIgotICAgICA7OwotZXNhYwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCi0jIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgotWHNlZD0iJHtTRUR9IicgLWUgMXMvXlgvLycKLXNlZF9xdW90ZV9zdWJzdD0ncy9cKFtgIiRcXF1cKS9cXFwxL2cnCi0KLSMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgotZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdGhhdCB0dXJucyBhIHN0cmluZyBpbnRvIGEgcmVnZXggbWF0Y2hpbmcgZm9yIHRoZQotIyBzdHJpbmcgbGl0ZXJhbGx5Lgotc2VkX21ha2VfbGl0ZXJhbF9yZWdleD0ncyxbXS5bXiRcXCpcL10sXFwmLGcnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGNvbnZlcnRzIGEgdzMyIGZpbGUgbmFtZSBvciBwYXRoCi0jIHdoaWNoIGNvbnRhaW5zIGZvcndhcmQgc2xhc2hlcywgaW50byBvbmUgdGhhdCBjb250YWlucwotIyAoZXNjYXBlZCkgYmFja3NsYXNoZXMuICBBIHZlcnkgbmFpdmUgaW1wbGVtZW50YXRpb24uCi1sdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0KLSMgUmUtYFwnIHBhcmFtZXRlciBleHBhbnNpb25zIGluIG91dHB1dCBvZiBkb3VibGVfcXVvdGVfc3Vic3QgdGhhdCB3ZXJlCi0jIGBcJy1lZCBpbiBpbnB1dCB0byB0aGUgc2FtZS4gIElmIGFuIG9kZCBudW1iZXIgb2YgYFwnIHByZWNlZGVkIGEgJyQnCi0jIGluIGlucHV0IHRvIGRvdWJsZV9xdW90ZV9zdWJzdCwgdGhhdCAnJCcgd2FzIHByb3RlY3RlZCBmcm9tIGV4cGFuc2lvbi4KLSMgU2luY2UgZWFjaCBpbnB1dCBgXCcgaXMgbm93IHR3byBgXCdzLCBsb29rIGZvciBhbnkgbnVtYmVyIG9mIHJ1bnMgb2YKLSMgZm91ciBgXCdzIGZvbGxvd2VkIGJ5IHR3byBgXCdzIGFuZCB0aGVuIGEgJyQnLiAgYFwnIHRoYXQgJyQnLgotYnM9J1xcJwotYnMyPSdcXFxcJwotYnM0PSdcXFxcXFxcXCcKLWRvbGxhcj0nXCQnCi1zZWRfZG91YmxlX2JhY2tzbGFzaD0iXAotICBzLyRiczQvJlxcCi0vZwotICBzL14kYnMyJGRvbGxhci8kYnMmLwotICBzL1xcKFteJGJzXVxcKSRiczIkZG9sbGFyL1xcMSRiczIkYnMkZG9sbGFyL2cKLSAgcy9cbi8vZyIKLQotIyBTdGFuZGFyZCBvcHRpb25zOgotb3B0X2RyeV9ydW49ZmFsc2UKLW9wdF9oZWxwPWZhbHNlCi1vcHRfcXVpZXQ9ZmFsc2UKLW9wdF92ZXJib3NlPWZhbHNlCi1vcHRfd2FybmluZz06Ci0KLSMgZnVuY19lY2hvIGFyZy4uLgotIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlLCBhbG9uZyB3aXRoIHRoZSBjdXJyZW50IG1vZGUKLSMgbmFtZSBpZiBpdCBoYXMgYmVlbiBzZXQgeWV0LgotZnVuY19lY2hvICgpCisjIGZ1bmNfbm90cXVpZXQgQVJHLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2Ugb25seSB3aGVuIG5vdCBpbiBxdWlldCBtb2RlLgorZnVuY19ub3RxdWlldCAoKQogewotICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9JCoiCi19CisgICAgJGRlYnVnX2NtZAogCi0jIGZ1bmNfdmVyYm9zZSBhcmcuLi4KLSMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSBpbiB2ZXJib3NlIG1vZGUgb25seS4KLWZ1bmNfdmVyYm9zZSAoKQotewotICAgICRvcHRfdmVyYm9zZSAmJiBmdW5jX2VjaG8gJHsxKyIkQCJ9CisgICAgJG9wdF9xdWlldCB8fCBmdW5jX2VjaG8gJHsxKyIkQCJ9CiAKICAgICAjIEEgYnVnIGluIGJhc2ggaGFsdHMgdGhlIHNjcmlwdCBpZiB0aGUgbGFzdCBsaW5lIG9mIGEgZnVuY3Rpb24KICAgICAjIGZhaWxzIHdoZW4gc2V0IC1lIGlzIGluIGZvcmNlLCBzbyB3ZSBuZWVkIGFub3RoZXIgY29tbWFuZCB0bwpAQCAtNDU0LDQ1MCArMTAyNSwxMTEzIEBACiAgICAgOgogfQogCi0jIGZ1bmNfZWNob19hbGwgYXJnLi4uCi0jIEludm9rZSAkRUNITyB3aXRoIGFsbCBhcmdzLCBzcGFjZS1zZXBhcmF0ZWQuCi1mdW5jX2VjaG9fYWxsICgpCi17Ci0gICAgJEVDSE8gIiQqIgotfQogCi0jIGZ1bmNfZXJyb3IgYXJnLi4uCi0jIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCi1mdW5jX2Vycm9yICgpCisjIGZ1bmNfcmVsYXRpdmVfcGF0aCBTUkNESVIgRFNURElSCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNldCBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IHRvIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gU1JDRElSIHRvIERTVERJUi4KK2Z1bmNfcmVsYXRpdmVfcGF0aCAoKQogewotICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9IiR7MSsiJEAifSAxPiYyCi19CisgICAgJGRlYnVnX2NtZAogCi0jIGZ1bmNfd2FybmluZyBhcmcuLi4KLSMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgd2FybmluZyBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgotZnVuY193YXJuaW5nICgpCi17Ci0gICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9d2FybmluZzogIiR7MSsiJEAifSAxPiYyCisgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0KKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoICIkMSIKKyAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoICIkMiIKKyAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKIAotICAgICMgYmFzaCBidWcgYWdhaW46CisgICAgIyBBc2NlbmQgdGhlIHRyZWUgc3RhcnRpbmcgZnJvbSBsaWJkaXIKKyAgICB3aGlsZSA6OyBkbworICAgICAgIyBjaGVjayBpZiB3ZSBoYXZlIGZvdW5kIGEgcHJlZml4IG9mIGJpbmRpcgorICAgICAgY2FzZSAkZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIgaW4KKyAgICAgICAgJGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyKQorICAgICAgICAgICMgZm91bmQgYW4gZXhhY3QgbWF0Y2gKKyAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZD0KKyAgICAgICAgICBicmVhaworICAgICAgICAgIDs7CisgICAgICAgICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciopCisgICAgICAgICAgIyBmb3VuZCBhIG1hdGNoaW5nIHByZWZpeAorICAgICAgICAgIGZ1bmNfc3RyaXBuYW1lICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIiICcnICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIiCisgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IjsgdGhlbgorICAgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uCisgICAgICAgICAgZmkKKyAgICAgICAgICBicmVhaworICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgZnVuY19kaXJuYW1lICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcgorICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CisgICAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyIjsgdGhlbgorICAgICAgICAgICAgIyBIYXZlIHRvIGRlc2NlbmQgYWxsIHRoZSB3YXkgdG8gdGhlIHJvb3QhCisgICAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4uLyRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0CisgICAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZD0kZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgZmkKKyAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4uLyRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0CisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICBkb25lCisKKyAgICAjIE5vdyBjYWxjdWxhdGUgcGF0aDsgdGFrZSBjYXJlIHRvIGF2b2lkIGRvdWJsaW5nLXVwIHNsYXNoZXMuCisgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX3N0cmlwbmFtZSAnLycgJy8nICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQiCisgICAgaWYgdGVzdCAtbiAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7IHRoZW4KKyAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQgIi8kZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorICAgIGZpCisKKyAgICAjIE5vcm1hbGlzYXRpb24uIElmIGJpbmRpciBpcyBsaWJkaXIsIHJldHVybiAnLicgZWxzZSByZWxhdGl2ZSBwYXRoLgorICAgIGlmIHRlc3QgLW4gIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IjsgdGhlbgorICAgICAgZnVuY19zdHJpcG5hbWUgJy4vJyAnJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiCisgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmaQorCisgICAgdGVzdCAtbiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiIHx8IGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9LgorCiAgICAgOgogfQogCi0jIGZ1bmNfZmF0YWxfZXJyb3IgYXJnLi4uCi0jIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGFuZCBleGl0LgotZnVuY19mYXRhbF9lcnJvciAoKQotewotICAgIGZ1bmNfZXJyb3IgJHsxKyIkQCJ9Ci0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi19CiAKLSMgZnVuY19mYXRhbF9oZWxwIGFyZy4uLgotIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBmb2xsb3dlZCBieQotIyBhIGhlbHAgaGludCwgYW5kIGV4aXQuCi1mdW5jX2ZhdGFsX2hlbHAgKCkKLXsKLSAgICBmdW5jX2Vycm9yICR7MSsiJEAifQotICAgIGZ1bmNfZmF0YWxfZXJyb3IgIiRoZWxwIgotfQotaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAgIyMgZGVmYXVsdAotCi0KLSMgZnVuY19ncmVwIGV4cHJlc3Npb24gZmlsZW5hbWUKLSMgQ2hlY2sgd2hldGhlciBFWFBSRVNTSU9OIG1hdGNoZXMgYW55IGxpbmUgb2YgRklMRU5BTUUsIHdpdGhvdXQgb3V0cHV0LgotZnVuY19ncmVwICgpCi17Ci0gICAgJEdSRVAgIiQxIiAiJDIiID4vZGV2L251bGwgMj4mMQotfQotCi0KLSMgZnVuY19ta2Rpcl9wIGRpcmVjdG9yeS1wYXRoCi0jIE1ha2Ugc3VyZSB0aGUgZW50aXJlIHBhdGggdG8gRElSRUNUT1JZLVBBVEggaXMgYXZhaWxhYmxlLgotZnVuY19ta2Rpcl9wICgpCi17Ci0gICAgbXlfZGlyZWN0b3J5X3BhdGg9IiQxIgotICAgIG15X2Rpcl9saXN0PQotCi0gICAgaWYgdGVzdCAtbiAiJG15X2RpcmVjdG9yeV9wYXRoIiAmJiB0ZXN0ICIkb3B0X2RyeV9ydW4iICE9ICI6IjsgdGhlbgotCi0gICAgICAjIFByb3RlY3QgZGlyZWN0b3J5IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nCi0gICAgICBjYXNlICRteV9kaXJlY3RvcnlfcGF0aCBpbgotICAgICAgICAtKikgbXlfZGlyZWN0b3J5X3BhdGg9Ii4vJG15X2RpcmVjdG9yeV9wYXRoIiA7OwotICAgICAgZXNhYwotCi0gICAgICAjIFdoaWxlIHNvbWUgcG9ydGlvbiBvZiBESVIgZG9lcyBub3QgeWV0IGV4aXN0Li4uCi0gICAgICB3aGlsZSB0ZXN0ICEgLWQgIiRteV9kaXJlY3RvcnlfcGF0aCI7IGRvCi0gICAgICAgICMgLi4ubWFrZSBhIGxpc3QgaW4gdG9wbW9zdCBmaXJzdCBvcmRlci4gIFVzZSBhIGNvbG9uIGRlbGltaXRlZAotCSMgbGlzdCBpbmNhc2Ugc29tZSBwb3J0aW9uIG9mIHBhdGggY29udGFpbnMgd2hpdGVzcGFjZS4KLSAgICAgICAgbXlfZGlyX2xpc3Q9IiRteV9kaXJlY3RvcnlfcGF0aDokbXlfZGlyX2xpc3QiCi0KLSAgICAgICAgIyBJZiB0aGUgbGFzdCBwb3J0aW9uIGFkZGVkIGhhcyBubyBzbGFzaCBpbiBpdCwgdGhlIGxpc3QgaXMgZG9uZQotICAgICAgICBjYXNlICRteV9kaXJlY3RvcnlfcGF0aCBpbiAqLyopIDs7ICopIGJyZWFrIDs7IGVzYWMKLQotICAgICAgICAjIC4uLm90aGVyd2lzZSB0aHJvdyBhd2F5IHRoZSBjaGlsZCBkaXJlY3RvcnkgYW5kIGxvb3AKLSAgICAgICAgbXlfZGlyZWN0b3J5X3BhdGg9YCRFQ0hPICIkbXlfZGlyZWN0b3J5X3BhdGgiIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAotICAgICAgZG9uZQotICAgICAgbXlfZGlyX2xpc3Q9YCRFQ0hPICIkbXlfZGlyX2xpc3QiIHwgJFNFRCAncyw6KiQsLCdgCi0KLSAgICAgIHNhdmVfbWtkaXJfcF9JRlM9IiRJRlMiOyBJRlM9JzonCi0gICAgICBmb3IgbXlfZGlyIGluICRteV9kaXJfbGlzdDsgZG8KLQlJRlM9IiRzYXZlX21rZGlyX3BfSUZTIgotICAgICAgICAjIG1rZGlyIGNhbiBmYWlsIHdpdGggYSBgRmlsZSBleGlzdCcgZXJyb3IgaWYgdHdvIHByb2Nlc3NlcwotICAgICAgICAjIHRyeSB0byBjcmVhdGUgb25lIG9mIHRoZSBkaXJlY3RvcmllcyBjb25jdXJyZW50bHkuICBEb24ndAotICAgICAgICAjIHN0b3AgaW4gdGhhdCBjYXNlIQotICAgICAgICAkTUtESVIgIiRteV9kaXIiIDI+L2Rldi9udWxsIHx8IDoKLSAgICAgIGRvbmUKLSAgICAgIElGUz0iJHNhdmVfbWtkaXJfcF9JRlMiCi0KLSAgICAgICMgQmFpbCBvdXQgaWYgd2UgKG9yIHNvbWUgb3RoZXIgcHJvY2VzcykgZmFpbGVkIHRvIGNyZWF0ZSBhIGRpcmVjdG9yeS4KLSAgICAgIHRlc3QgLWQgIiRteV9kaXJlY3RvcnlfcGF0aCIgfHwgXAotICAgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJGYWlsZWQgdG8gY3JlYXRlIFxgJDEnIgotICAgIGZpCi19Ci0KLQotIyBmdW5jX21rdGVtcGRpciBbc3RyaW5nXQotIyBNYWtlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0aGF0IHdvbid0IGNsYXNoIHdpdGggb3RoZXIgcnVubmluZwotIyBsaWJ0b29sIHByb2Nlc3NlcywgYW5kIGF2b2lkcyByYWNlIGNvbmRpdGlvbnMgaWYgcG9zc2libGUuICBJZgotIyBnaXZlbiwgU1RSSU5HIGlzIHRoZSBiYXNlbmFtZSBmb3IgdGhhdCBkaXJlY3RvcnkuCi1mdW5jX21rdGVtcGRpciAoKQotewotICAgIG15X3RlbXBsYXRlPSIke1RNUERJUi0vdG1wfS8kezEtJHByb2duYW1lfSIKLQotICAgIGlmIHRlc3QgIiRvcHRfZHJ5X3J1biIgPSAiOiI7IHRoZW4KLSAgICAgICMgUmV0dXJuIGEgZGlyZWN0b3J5IG5hbWUsIGJ1dCBkb24ndCBjcmVhdGUgaXQgaW4gZHJ5LXJ1biBtb2RlCi0gICAgICBteV90bXBkaXI9IiR7bXlfdGVtcGxhdGV9LSQkIgotICAgIGVsc2UKLQotICAgICAgIyBJZiBta3RlbXAgd29ya3MsIHVzZSB0aGF0IGZpcnN0IGFuZCBmb3JlbW9zdAotICAgICAgbXlfdG1wZGlyPWBta3RlbXAgLWQgIiR7bXlfdGVtcGxhdGV9LVhYWFhYWFhYIiAyPi9kZXYvbnVsbGAKLQotICAgICAgaWYgdGVzdCAhIC1kICIkbXlfdG1wZGlyIjsgdGhlbgotICAgICAgICAjIEZhaWxpbmcgdGhhdCwgYXQgbGVhc3QgdHJ5IGFuZCB1c2UgJFJBTkRPTSB0byBhdm9pZCBhIHJhY2UKLSAgICAgICAgbXlfdG1wZGlyPSIke215X3RlbXBsYXRlfS0ke1JBTkRPTS0wfSQkIgotCi0gICAgICAgIHNhdmVfbWt0ZW1wZGlyX3VtYXNrPWB1bWFza2AKLSAgICAgICAgdW1hc2sgMDA3NwotICAgICAgICAkTUtESVIgIiRteV90bXBkaXIiCi0gICAgICAgIHVtYXNrICRzYXZlX21rdGVtcGRpcl91bWFzawotICAgICAgZmkKLQotICAgICAgIyBJZiB3ZSdyZSBub3QgaW4gZHJ5LXJ1biBtb2RlLCBib21iIG91dCBvbiBmYWlsdXJlCi0gICAgICB0ZXN0IC1kICIkbXlfdG1wZGlyIiB8fCBcCi0gICAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBcYCRteV90bXBkaXInIgotICAgIGZpCi0KLSAgICAkRUNITyAiJG15X3RtcGRpciIKLX0KLQotCi0jIGZ1bmNfcXVvdGVfZm9yX2V2YWwgYXJnCi0jIEFlc3RoZXRpY2FsbHkgcXVvdGUgQVJHIHRvIGJlIGV2YWxlZCBsYXRlci4KLSMgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHR3byB2YWx1ZXM6IEZVTkNfUVVPVEVfRk9SX0VWQUxfUkVTVUxUCi0jIGlzIGRvdWJsZS1xdW90ZWQsIHN1aXRhYmxlIGZvciBhIHN1YnNlcXVlbnQgZXZhbCwgd2hlcmVhcwotIyBGVU5DX1FVT1RFX0ZPUl9FVkFMX1VOUVVPVEVEX1JFU1VMVCBoYXMgbWVyZWx5IGFsbCBjaGFyYWN0ZXJzCi0jIHdoaWNoIGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZSBxdW90ZXMgYmFja3NsYXNoaWZpZWQuCisjIGZ1bmNfcXVvdGVfZm9yX2V2YWwgQVJHLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEFlc3RoZXRpY2FsbHkgcXVvdGUgQVJHcyB0byBiZSBldmFsZWQgbGF0ZXIuCisjIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0d28gdmFsdWVzOgorIyAgIGkpIGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CisjICAgICAgZG91YmxlLXF1b3RlZCwgc3VpdGFibGUgZm9yIGEgc3Vic2VxdWVudCBldmFsCisjICBpaSkgZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQKKyMgICAgICBoYXMgYWxsIGNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUKKyMgICAgICBxdW90ZXMgYmFja3NsYXNoaWZpZWQuCiBmdW5jX3F1b3RlX2Zvcl9ldmFsICgpCiB7Ci0gICAgY2FzZSAkMSBpbgotICAgICAgKltcXFxgXCJcJF0qKQotCWZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0PWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9xdW90ZV9zdWJzdCJgIDs7Ci0gICAgICAqKQotICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD0iJDEiIDs7Ci0gICAgZXNhYworICAgICRkZWJ1Z19jbWQKIAotICAgIGNhc2UgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0IGluCi0gICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgc2hlbGwgbWV0YWNoYXJhY3RlcnMgdG8gZGVsYXkKLSAgICAgICMgd29yZCBzcGxpdHRpbmcsIGNvbW1hbmQgc3Vic3RpdHV0aW9uIGFuZCBhbmQgdmFyaWFibGUKLSAgICAgICMgZXhwYW5zaW9uIGZvciBhIHN1YnNlcXVlbnQgZXZhbC4KLSAgICAgICMgTWFueSBCb3VybmUgc2hlbGxzIGNhbm5vdCBoYW5kbGUgY2xvc2UgYnJhY2tldHMgY29ycmVjdGx5Ci0gICAgICAjIGluIHNjYW4gc2V0cywgc28gd2Ugc3BlY2lmeSBpdCBzZXBhcmF0ZWx5LgotICAgICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0gICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0PSJcIiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdFwiIgotICAgICAgICA7OwotICAgICAgKikKLSAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQ9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdCIKLSAgICBlc2FjCisgICAgZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQ9CisgICAgZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQ9CisgICAgd2hpbGUgdGVzdCAwIC1sdCAkIzsgZG8KKyAgICAgIGNhc2UgJDEgaW4KKyAgICAgICAgKltcXFxgXCJcJF0qKQorCSAgX0dfdW5xdW90ZWRfYXJnPWBwcmludGYgJyVzXG4nICIkMSIgfCRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYCA7OworICAgICAgICAqKQorICAgICAgICAgIF9HX3VucXVvdGVkX2FyZz0kMSA7OworICAgICAgZXNhYworICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0IjsgdGhlbgorCWZ1bmNfYXBwZW5kIGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0ICIgJF9HX3VucXVvdGVkX2FyZyIKKyAgICAgIGVsc2UKKyAgICAgICAgZnVuY19hcHBlbmQgZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQgIiRfR191bnF1b3RlZF9hcmciCisgICAgICBmaQorCisgICAgICBjYXNlICRfR191bnF1b3RlZF9hcmcgaW4KKyAgICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIHNoZWxsIG1ldGFjaGFyYWN0ZXJzIHRvIGRlbGF5CisgICAgICAgICMgd29yZCBzcGxpdHRpbmcsIGNvbW1hbmQgc3Vic3RpdHV0aW9uIGFuZCB2YXJpYWJsZSBleHBhbnNpb24KKyAgICAgICAgIyBmb3IgYSBzdWJzZXF1ZW50IGV2YWwuCisgICAgICAgICMgTWFueSBCb3VybmUgc2hlbGxzIGNhbm5vdCBoYW5kbGUgY2xvc2UgYnJhY2tldHMgY29ycmVjdGx5CisgICAgICAgICMgaW4gc2NhbiBzZXRzLCBzbyB3ZSBzcGVjaWZ5IGl0IHNlcGFyYXRlbHkuCisgICAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQorICAgICAgICAgIF9HX3F1b3RlZF9hcmc9XCIkX0dfdW5xdW90ZWRfYXJnXCIKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIF9HX3F1b3RlZF9hcmc9JF9HX3VucXVvdGVkX2FyZworCSAgOzsKKyAgICAgIGVzYWMKKworICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IjsgdGhlbgorCWZ1bmNfYXBwZW5kIGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0ICIgJF9HX3F1b3RlZF9hcmciCisgICAgICBlbHNlCisgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0ICIkX0dfcXVvdGVkX2FyZyIKKyAgICAgIGZpCisgICAgICBzaGlmdAorICAgIGRvbmUKIH0KIAogCi0jIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCBhcmcKKyMgZnVuY19xdW90ZV9mb3JfZXhwYW5kIEFSRworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgQVJHIHRvIGJlIGV2YWxlZCBsYXRlcjsgc2FtZSBhcyBhYm92ZSwKICMgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgogZnVuY19xdW90ZV9mb3JfZXhwYW5kICgpCiB7CisgICAgJGRlYnVnX2NtZAorCiAgICAgY2FzZSAkMSBpbgogICAgICAgKltcXFxgXCJdKikKLQlteV9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEIFwKLQkgICAgLWUgIiRkb3VibGVfcXVvdGVfc3Vic3QiIC1lICIkc2VkX2RvdWJsZV9iYWNrc2xhc2giYCA7OworCV9HX2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgXAorCSAgICAtZSAiJHNlZF9kb3VibGVfcXVvdGVfc3Vic3QiIC1lICIkc2VkX2RvdWJsZV9iYWNrc2xhc2giYCA7OwogICAgICAgKikKLSAgICAgICAgbXlfYXJnPSIkMSIgOzsKKyAgICAgICAgX0dfYXJnPSQxIDs7CiAgICAgZXNhYwogCi0gICAgY2FzZSAkbXlfYXJnIGluCisgICAgY2FzZSAkX0dfYXJnIGluCiAgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgc2hlbGwgbWV0YWNoYXJhY3RlcnMgdG8gZGVsYXkKICAgICAgICMgd29yZCBzcGxpdHRpbmcgYW5kIGNvbW1hbmQgc3Vic3RpdHV0aW9uIGZvciBhIHN1YnNlcXVlbnQgZXZhbC4KICAgICAgICMgTWFueSBCb3VybmUgc2hlbGxzIGNhbm5vdCBoYW5kbGUgY2xvc2UgYnJhY2tldHMgY29ycmVjdGx5CiAgICAgICAjIGluIHNjYW4gc2V0cywgc28gd2Ugc3BlY2lmeSBpdCBzZXBhcmF0ZWx5LgogICAgICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0gICAgICAgIG15X2FyZz0iXCIkbXlfYXJnXCIiCisgICAgICAgIF9HX2FyZz1cIiRfR19hcmdcIgogICAgICAgICA7OwogICAgIGVzYWMKIAotICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQ9IiRteV9hcmciCisgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdD0kX0dfYXJnCiB9CiAKIAotIyBmdW5jX3Nob3dfZXZhbCBjbWQgW2ZhaWxfZXhwXQotIyBVbmxlc3Mgb3B0X3NpbGVudCBpcyB0cnVlLCB0aGVuIG91dHB1dCBDTUQuICBUaGVuLCBpZiBvcHRfZHJ5cnVuIGlzCisjIGZ1bmNfc3RyaXBuYW1lIFBSRUZJWCBTVUZGSVggTkFNRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggZnJvbSBOQU1FLCBhbmQgc3RvcmUgaW4gZnVuY19zdHJpcG5hbWVfcmVzdWx0LgorIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgoraWYgdGVzdCB5ZXMgPSAiJF9HX0hBVkVfWFNJX09QUyI7IHRoZW4KKyAgZXZhbCAnZnVuY19zdHJpcG5hbWUgKCkKKyAgeworICAgICRkZWJ1Z19jbWQKKworICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKyAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSB2YXJpYWJsZSBmaXJzdC4KKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JDMKKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiQxIn0KKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiQyIn0KKyAgfScKK2Vsc2UKKyAgZnVuY19zdHJpcG5hbWUgKCkKKyAgeworICAgICRkZWJ1Z19jbWQKKworICAgIGNhc2UgJDIgaW4KKyAgICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkMyIgfCAkU0VEIC1lICJzJV4kMSUlIiAtZSAicyVcXFxcJDJcJCUlImA7OworICAgICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiQzIiB8ICRTRUQgLWUgInMlXiQxJSUiIC1lICJzJSQyXCQlJSJgOzsKKyAgICBlc2FjCisgIH0KK2ZpCisKKworIyBmdW5jX3Nob3dfZXZhbCBDTUQgW0ZBSUxfRVhQXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBVbmxlc3Mgb3B0X3F1aWV0IGlzIHRydWUsIHRoZW4gb3V0cHV0IENNRC4gIFRoZW4sIGlmIG9wdF9kcnlydW4gaXMKICMgbm90IHRydWUsIGV2YWx1YXRlIENNRC4gIElmIHRoZSBldmFsdWF0aW9uIG9mIENNRCBmYWlscywgYW5kIEZBSUxfRVhQCiAjIGlzIGdpdmVuLCB0aGVuIGV2YWx1YXRlIGl0LgogZnVuY19zaG93X2V2YWwgKCkKIHsKLSAgICBteV9jbWQ9IiQxIgotICAgIG15X2ZhaWxfZXhwPSIkezItOn0iCisgICAgJGRlYnVnX2NtZAogCi0gICAgJHtvcHRfc2lsZW50LWZhbHNlfSB8fCB7Ci0gICAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRteV9jbWQiCi0gICAgICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCi0gICAgfQorICAgIF9HX2NtZD0kMQorICAgIF9HX2ZhaWxfZXhwPSR7Mi0nOid9CiAKLSAgICBpZiAke29wdF9kcnlfcnVuLWZhbHNlfTsgdGhlbiA6OyBlbHNlCi0gICAgICBldmFsICIkbXlfY21kIgotICAgICAgbXlfc3RhdHVzPSQ/Ci0gICAgICBpZiB0ZXN0ICIkbXlfc3RhdHVzIiAtZXEgMDsgdGhlbiA6OyBlbHNlCi0JZXZhbCAiKGV4aXQgJG15X3N0YXR1cyk7ICRteV9mYWlsX2V4cCIKKyAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRfR19jbWQiCisgICAgZXZhbCAiZnVuY19ub3RxdWlldCAkZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdCIKKworICAgICRvcHRfZHJ5X3J1biB8fCB7CisgICAgICBldmFsICIkX0dfY21kIgorICAgICAgX0dfc3RhdHVzPSQ/CisgICAgICBpZiB0ZXN0IDAgLW5lICIkX0dfc3RhdHVzIjsgdGhlbgorCWV2YWwgIihleGl0ICRfR19zdGF0dXMpOyAkX0dfZmFpbF9leHAiCiAgICAgICBmaQotICAgIGZpCisgICAgfQogfQogCiAKLSMgZnVuY19zaG93X2V2YWxfbG9jYWxlIGNtZCBbZmFpbF9leHBdCi0jIFVubGVzcyBvcHRfc2lsZW50IGlzIHRydWUsIHRoZW4gb3V0cHV0IENNRC4gIFRoZW4sIGlmIG9wdF9kcnlydW4gaXMKKyMgZnVuY19zaG93X2V2YWxfbG9jYWxlIENNRCBbRkFJTF9FWFBdCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBVbmxlc3Mgb3B0X3F1aWV0IGlzIHRydWUsIHRoZW4gb3V0cHV0IENNRC4gIFRoZW4sIGlmIG9wdF9kcnlydW4gaXMKICMgbm90IHRydWUsIGV2YWx1YXRlIENNRC4gIElmIHRoZSBldmFsdWF0aW9uIG9mIENNRCBmYWlscywgYW5kIEZBSUxfRVhQCiAjIGlzIGdpdmVuLCB0aGVuIGV2YWx1YXRlIGl0LiAgVXNlIHRoZSBzYXZlZCBsb2NhbGUgZm9yIGV2YWx1YXRpb24uCiBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgKCkKIHsKLSAgICBteV9jbWQ9IiQxIgotICAgIG15X2ZhaWxfZXhwPSIkezItOn0iCisgICAgJGRlYnVnX2NtZAogCi0gICAgJHtvcHRfc2lsZW50LWZhbHNlfSB8fCB7Ci0gICAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRteV9jbWQiCisgICAgX0dfY21kPSQxCisgICAgX0dfZmFpbF9leHA9JHsyLSc6J30KKworICAgICRvcHRfcXVpZXQgfHwgeworICAgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkX0dfY21kIgogICAgICAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgogICAgIH0KIAotICAgIGlmICR7b3B0X2RyeV9ydW4tZmFsc2V9OyB0aGVuIDo7IGVsc2UKLSAgICAgIGV2YWwgIiRsdF91c2VyX2xvY2FsZQotCSAgICAkbXlfY21kIgotICAgICAgbXlfc3RhdHVzPSQ/Ci0gICAgICBldmFsICIkbHRfc2FmZV9sb2NhbGUiCi0gICAgICBpZiB0ZXN0ICIkbXlfc3RhdHVzIiAtZXEgMDsgdGhlbiA6OyBlbHNlCi0JZXZhbCAiKGV4aXQgJG15X3N0YXR1cyk7ICRteV9mYWlsX2V4cCIKKyAgICAkb3B0X2RyeV9ydW4gfHwgeworICAgICAgZXZhbCAiJF9HX3VzZXJfbG9jYWxlCisJICAgICRfR19jbWQiCisgICAgICBfR19zdGF0dXM9JD8KKyAgICAgIGV2YWwgIiRfR19zYWZlX2xvY2FsZSIKKyAgICAgIGlmIHRlc3QgMCAtbmUgIiRfR19zdGF0dXMiOyB0aGVuCisJZXZhbCAiKGV4aXQgJF9HX3N0YXR1cyk7ICRfR19mYWlsX2V4cCIKICAgICAgIGZpCi0gICAgZmkKKyAgICB9CiB9CiAKKwogIyBmdW5jX3RyX3NoCisjIC0tLS0tLS0tLS0KICMgVHVybiAkMSBpbnRvIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhIHNoZWxsIHZhcmlhYmxlIG5hbWUuCiAjIFJlc3VsdCBpcyBzdG9yZWQgaW4gJGZ1bmNfdHJfc2hfcmVzdWx0LiAgQWxsIGNoYXJhY3RlcnMKICMgbm90IGluIHRoZSBzZXQgYS16QS1aMC05XyBhcmUgcmVwbGFjZWQgd2l0aCAnXycuIEZ1cnRoZXIsCiAjIGlmICQxIGJlZ2lucyB3aXRoIGEgZGlnaXQsIGEgJ18nIGlzIHByZXBlbmRlZCBhcyB3ZWxsLgogZnVuY190cl9zaCAoKQogewotICBjYXNlICQxIGluCi0gIFswLTldKiB8ICpbIWEtekEtWjAtOV9dKikKLSAgICBmdW5jX3RyX3NoX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgJ3MvXlwoWzAtOV1cKS9fXDEvOyBzL1teYS16QS1aMC05X10vXy9nJ2AKLSAgICA7OwotICAqICkKLSAgICBmdW5jX3RyX3NoX3Jlc3VsdD0kMQotICAgIDs7Ci0gIGVzYWMKKyAgICAkZGVidWdfY21kCisKKyAgICBjYXNlICQxIGluCisgICAgWzAtOV0qIHwgKlshYS16QS1aMC05X10qKQorICAgICAgZnVuY190cl9zaF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEIC1lICdzL15cKFswLTldXCkvX1wxLycgLWUgJ3MvW15hLXpBLVowLTlfXS9fL2cnYAorICAgICAgOzsKKyAgICAqICkKKyAgICAgIGZ1bmNfdHJfc2hfcmVzdWx0PSQxCisgICAgICA7OworICAgIGVzYWMKIH0KIAogCi0jIGZ1bmNfdmVyc2lvbgotIyBFY2hvIHZlcnNpb24gbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCi1mdW5jX3ZlcnNpb24gKCkKKyMgZnVuY192ZXJib3NlIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgaW4gdmVyYm9zZSBtb2RlIG9ubHkuCitmdW5jX3ZlcmJvc2UgKCkKIHsKLSAgICAkb3B0X2RlYnVnCisgICAgJGRlYnVnX2NtZAogCi0gICAgJFNFRCAtbiAnLyhDKS8hYiBnbwotCTptb3JlCi0JL1wuLyF7Ci0JICBOCi0JICBzL1xuIyAvIC8KLQkgIGIgbW9yZQotCX0KLQk6Z28KLQkvXiMgJyRQUk9HUkFNJyAoR05VIC8sLyMgd2FycmFudHk7IC8gewotICAgICAgICBzL14jIC8vCi0Jcy9eIyAqJC8vCi0gICAgICAgIHMvXCgoQylcKVsgMC05LC1dKlwoIFsxLTldWzAtOV0qXCkvXDFcMi8KLSAgICAgICAgcAotICAgICB9JyA8ICIkcHJvZ3BhdGgiCi0gICAgIGV4aXQgJD8KKyAgICAkb3B0X3ZlcmJvc2UgJiYgZnVuY19lY2hvICIkKiIKKworICAgIDoKIH0KIAotIyBmdW5jX3VzYWdlCi0jIEVjaG8gc2hvcnQgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KLWZ1bmNfdXNhZ2UgKCkKKworIyBmdW5jX3dhcm5fYW5kX2NvbnRpbnVlIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCB3YXJuaW5nIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCitmdW5jX3dhcm5fYW5kX2NvbnRpbnVlICgpCiB7Ci0gICAgJG9wdF9kZWJ1ZworICAgICRkZWJ1Z19jbWQKIAotICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC9eIyAgKi4qLS1oZWxwLyB7Ci0gICAgICAgIHMvXiMgLy8KLQlzL14jICokLy8KLQlzL1wkcHJvZ25hbWUvJyRwcm9nbmFtZScvCi0JcAotICAgIH0nIDwgIiRwcm9ncGF0aCIKLSAgICBlY2hvCi0gICAgJEVDSE8gInJ1biBcYCRwcm9nbmFtZSAtLWhlbHAgfCBtb3JlJyBmb3IgZnVsbCB1c2FnZSIKLSAgICBleGl0ICQ/CisgICAgJHJlcXVpcmVfdGVybV9jb2xvcnMKKworICAgIGZ1bmNfZWNob19pbmZpeF8xICIke3RjX3JlZH13YXJuaW5nJHRjX3Jlc2V0IiAiJCoiID4mMgogfQogCi0jIGZ1bmNfaGVscCBbTk9FWElUXQotIyBFY2hvIGxvbmcgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdCwKLSMgdW5sZXNzICdub2V4aXQnIGlzIHBhc3NlZCBhcyBhcmd1bWVudC4KKworIyBmdW5jX3dhcm5pbmcgQ0FURUdPUlkgQVJHLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgd2FybmluZyBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLiBXYXJuaW5nCisjIG1lc3NhZ2VzIGNhbiBiZSBmaWx0ZXJlZCBhY2NvcmRpbmcgdG8gQ0FURUdPUlksIHdoZXJlIHRoaXMgZnVuY3Rpb24KKyMgZWxpZGVzIG1lc3NhZ2VzIHdoZXJlIENBVEVHT1JZIGlzIG5vdCBsaXN0ZWQgaW4gdGhlIGdsb2JhbCB2YXJpYWJsZQorIyAnb3B0X3dhcm5pbmdfdHlwZXMnLgorZnVuY193YXJuaW5nICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgIyBDQVRFR09SWSBtdXN0IGJlIGluIHRoZSB3YXJuaW5nX2NhdGVnb3JpZXMgbGlzdCEKKyAgICBjYXNlICIgJHdhcm5pbmdfY2F0ZWdvcmllcyAiIGluCisgICAgICAqIiAkMSAiKikgOzsKKyAgICAgICopIGZ1bmNfaW50ZXJuYWxfZXJyb3IgImludmFsaWQgd2FybmluZyBjYXRlZ29yeSAnJDEnIiA7OworICAgIGVzYWMKKworICAgIF9HX2NhdGVnb3J5PSQxCisgICAgc2hpZnQKKworICAgIGNhc2UgIiAkb3B0X3dhcm5pbmdfdHlwZXMgIiBpbgorICAgICAgKiIgJF9HX2NhdGVnb3J5ICIqKSAkd2FybmluZ19mdW5jICR7MSsiJEAifSA7OworICAgIGVzYWMKK30KKworCisjIGZ1bmNfc29ydF92ZXIgVkVSMSBWRVIyCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICdzb3J0IC1WJyBpcyBub3QgZ2VuZXJhbGx5IGF2YWlsYWJsZS4KKyMgTm90ZSB0aGlzIGRldmlhdGVzIGZyb20gdGhlIHZlcnNpb24gY29tcGFyaXNvbiBpbiBhdXRvbWFrZQorIyBpbiB0aGF0IGl0IHRyZWF0cyAxLjUgPCAxLjUuMCwgYW5kIHRyZWF0cyAxLjQuNGEgPCAxLjQtcDNhCisjIGJ1dCB0aGlzIHNob3VsZCBzdWZmaWNlIGFzIHdlIHdvbid0IGJlIHNwZWNpZnlpbmcgb2xkCisjIHZlcnNpb24gZm9ybWF0cyBvciByZWR1bmRhbnQgdHJhaWxpbmcgLjAgaW4gYm9vdHN0cmFwLmNvbmYuCisjIElmIHdlIGRpZCB3YW50IGZ1bGwgY29tcGF0aWJpbGl0eSB0aGVuIHdlIHNob3VsZCBwcm9iYWJseQorIyB1c2UgbTRfdmVyc2lvbl9jb21wYXJlIGZyb20gYXV0b2NvbmYuCitmdW5jX3NvcnRfdmVyICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgcHJpbnRmICclc1xuJXNcbicgIiQxIiAiJDIiIFwKKyAgICAgIHwgc29ydCAtdC4gLWsgMSwxbiAtayAyLDJuIC1rIDMsM24gLWsgNCw0biAtayA1LDVuIC1rIDYsNm4gLWsgNyw3biAtayA4LDhuIC1rIDksOW4KK30KKworIyBmdW5jX2x0X3ZlciBQUkVWIENVUlIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJldHVybiB0cnVlIGlmIFBSRVYgYW5kIENVUlIgYXJlIGluIHRoZSBjb3JyZWN0IG9yZGVyIGFjY29yZGluZyB0bworIyBmdW5jX3NvcnRfdmVyLCBvdGhlcndpc2UgZmFsc2UuICBVc2UgaXQgbGlrZSB0aGlzOgorIworIyAgZnVuY19sdF92ZXIgIiRwcmV2X3ZlciIgIiRwcm9wb3NlZF92ZXIiIHx8IGZ1bmNfZmF0YWxfZXJyb3IgIi4uLiIKK2Z1bmNfbHRfdmVyICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgdGVzdCAieCQxIiA9IHhgZnVuY19zb3J0X3ZlciAiJDEiICIkMiIgfCAkU0VEIDFxYAorfQorCisKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBtb2RlOiBzaGVsbC1zY3JpcHQKKyMgc2gtaW5kZW50YXRpb246IDIKKyMgZXZhbDogKGFkZC1ob29rICdiZWZvcmUtc2F2ZS1ob29rICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1wLXBhdHRlcm46ICIxMC9zY3JpcHR2ZXJzaW9uPSU6eS0lMDJtLSUwMmQuJTAySDsgIyBVVEMiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyBFbmQ6CisjISAvYmluL3NoCisKKyMgU2V0IGEgdmVyc2lvbiBzdHJpbmcgZm9yIHRoaXMgc2NyaXB0Lgorc2NyaXB0dmVyc2lvbj0yMDE0LTAxLTA3LjAzOyAjIFVUQworCisjIEEgcG9ydGFibGUsIHBsdWdnYWJsZSBvcHRpb24gcGFyc2VyIGZvciBCb3VybmUgc2hlbGwuCisjIFdyaXR0ZW4gYnkgR2FyeSBWLiBWYXVnaGFuLCAyMDEwCisKKyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCisjIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworIyBQbGVhc2UgcmVwb3J0IGJ1Z3Mgb3IgcHJvcG9zZSBwYXRjaGVzIHRvIGdhcnlAZ251Lm9yZy4KKworCisjIyAtLS0tLS0gIyMKKyMjIFVzYWdlLiAjIworIyMgLS0tLS0tICMjCisKKyMgVGhpcyBmaWxlIGlzIGEgbGlicmFyeSBmb3IgcGFyc2luZyBvcHRpb25zIGluIHlvdXIgc2hlbGwgc2NyaXB0cyBhbG9uZworIyB3aXRoIGFzc29ydGVkIG90aGVyIHVzZWZ1bCBzdXBwb3J0aW5nIGZlYXR1cmVzIHRoYXQgeW91IGNhbiBtYWtlIHVzZQorIyBvZiB0b28uCisjCisjIEZvciB0aGUgc2ltcGxlc3Qgc2NyaXB0cyB5b3UgbWlnaHQgbmVlZCBvbmx5OgorIworIyAgICMhL2Jpbi9zaAorIyAgIC4gcmVsYXRpdmUvcGF0aC90by9mdW5jbGliLnNoCisjICAgLiByZWxhdGl2ZS9wYXRoL3RvL29wdGlvbnMtcGFyc2VyCisjICAgc2NyaXB0dmVyc2lvbj0xLjAKKyMgICBmdW5jX29wdGlvbnMgJHsxKyIkQCJ9CisjICAgZXZhbCBzZXQgZHVtbXkgIiRmdW5jX29wdGlvbnNfcmVzdWx0Ijsgc2hpZnQKKyMgICAuLi5yZXN0IG9mIHlvdXIgc2NyaXB0Li4uCisjCisjIEluIG9yZGVyIGZvciB0aGUgJy0tdmVyc2lvbicgb3B0aW9uIHRvIHdvcmssIHlvdSB3aWxsIG5lZWQgdG8gaGF2ZSBhCisjIHN1aXRhYmx5IGZvcm1hdHRlZCBjb21tZW50IGxpa2UgdGhlIG9uZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZQorIyBzdGFydGluZyB3aXRoICcjIFdyaXR0ZW4gYnkgJyBhbmQgZW5kaW5nIHdpdGggJyMgd2FycmFudHk7ICcuCisjCisjIEZvciAnLWgnIGFuZCAnLS1oZWxwJyB0byB3b3JrLCB5b3Ugd2lsbCBhbHNvIG5lZWQgYSBvbmUgbGluZQorIyBkZXNjcmlwdGlvbiBvZiB5b3VyIHNjcmlwdCdzIHB1cnBvc2UgaW4gYSBjb21tZW50IGRpcmVjdGx5IGFib3ZlIHRoZQorIyAnIyBXcml0dGVuIGJ5ICcgbGluZSwgbGlrZSB0aGUgb25lIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLgorIworIyBUaGUgZGVmYXVsdCBvcHRpb25zIGFsc28gc3VwcG9ydCAnLS1kZWJ1ZycsIHdoaWNoIHdpbGwgdHVybiBvbiBzaGVsbAorIyBleGVjdXRpb24gdHJhY2luZyAoc2VlIHRoZSBjb21tZW50IGFib3ZlIGRlYnVnX2NtZCBiZWxvdyBmb3IgYW5vdGhlcgorIyB1c2UpLCBhbmQgJy0tdmVyYm9zZScgYW5kIHRoZSBmdW5jX3ZlcmJvc2UgZnVuY3Rpb24gdG8gYWxsb3cgeW91ciBzY3JpcHQKKyMgdG8gZGlzcGxheSB2ZXJib3NlIG1lc3NhZ2VzIG9ubHkgd2hlbiB5b3VyIHVzZXIgaGFzIHNwZWNpZmllZAorIyAnLS12ZXJib3NlJy4KKyMKKyMgQWZ0ZXIgc291cmNpbmcgdGhpcyBmaWxlLCB5b3UgY2FuIHBsdWcgcHJvY2Vzc2luZyBmb3IgYWRkaXRpb25hbAorIyBvcHRpb25zIGJ5IGFtZW5kaW5nIHRoZSB2YXJpYWJsZXMgZnJvbSB0aGUgJ0NvbmZpZ3VyYXRpb24nIHNlY3Rpb24KKyMgYmVsb3csIGFuZCBmb2xsb3dpbmcgdGhlIGluc3RydWN0aW9ucyBpbiB0aGUgJ09wdGlvbiBwYXJzaW5nJworIyBzZWN0aW9uIGZ1cnRoZXIgZG93bi4KKworIyMgLS0tLS0tLS0tLS0tLS0gIyMKKyMjIENvbmZpZ3VyYXRpb24uICMjCisjIyAtLS0tLS0tLS0tLS0tLSAjIworCisjIFlvdSBzaG91bGQgb3ZlcnJpZGUgdGhlc2UgdmFyaWFibGVzIGluIHlvdXIgc2NyaXB0IGFmdGVyIHNvdXJjaW5nIHRoaXMKKyMgZmlsZSBzbyB0aGF0IHRoZXkgcmVmbGVjdCB0aGUgY3VzdG9taXNhdGlvbnMgeW91IGhhdmUgYWRkZWQgdG8gdGhlCisjIG9wdGlvbiBwYXJzZXIuCisKKyMgVGhlIHVzYWdlIGxpbmUgZm9yIG9wdGlvbiBwYXJzaW5nIGVycm9ycyBhbmQgdGhlIHN0YXJ0IG9mICctaCcgYW5kCisjICctLWhlbHAnIG91dHB1dCBtZXNzYWdlcy4gWW91IGNhbiBlbWJlZCBzaGVsbCB2YXJpYWJsZXMgZm9yIGRlbGF5ZWQKKyMgZXhwYW5zaW9uIGF0IHRoZSB0aW1lIHRoZSBtZXNzYWdlIGlzIGRpc3BsYXllZCwgYnV0IHlvdSB3aWxsIG5lZWQgdG8KKyMgcXVvdGUgb3RoZXIgc2hlbGwgbWV0YS1jaGFyYWN0ZXJzIGNhcmVmdWxseSB0byBwcmV2ZW50IHRoZW0gYmVpbmcKKyMgZXhwYW5kZWQgd2hlbiB0aGUgY29udGVudHMgYXJlIGV2YWxlZC4KK3VzYWdlPSckcHJvZ3BhdGggW09QVElPTl0uLi4nCisKKyMgU2hvcnQgaGVscCBtZXNzYWdlIGluIHJlc3BvbnNlIHRvICctaCcgYW5kICctLWhlbHAnLiAgQWRkIHRvIHRoaXMgb3IKKyMgb3ZlcnJpZGUgaXQgYWZ0ZXIgc291cmNpbmcgdGhpcyBsaWJyYXJ5IHRvIHJlZmxlY3QgdGhlIGZ1bGwgc2V0IG9mCisjIG9wdGlvbnMgeW91ciBzY3JpcHQgYWNjZXB0cy4KK3VzYWdlX21lc3NhZ2U9IlwKKyAgICAgICAtLWRlYnVnICAgICAgICBlbmFibGUgdmVyYm9zZSBzaGVsbCB0cmFjaW5nCisgICAtVywgLS13YXJuaW5ncz1DQVRFR09SWQorICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydCB0aGUgd2FybmluZ3MgZmFsbGluZyBpbiBDQVRFR09SWSBbYWxsXQorICAgLXYsIC0tdmVyYm9zZSAgICAgIHZlcmJvc2VseSByZXBvcnQgcHJvY2Vzc2luZworICAgICAgIC0tdmVyc2lvbiAgICAgIHByaW50IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKKyAgIC1oLCAtLWhlbHAgICAgICAgICBwcmludCBzaG9ydCBvciBsb25nIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorIgorCisjIEFkZGl0aW9uYWwgdGV4dCBhcHBlbmRlZCB0byAndXNhZ2VfbWVzc2FnZScgaW4gcmVzcG9uc2UgdG8gJy0taGVscCcuCitsb25nX2hlbHBfbWVzc2FnZT0iCitXYXJuaW5nIGNhdGVnb3JpZXMgaW5jbHVkZToKKyAgICAgICAnYWxsJyAgICAgICAgICBzaG93IGFsbCB3YXJuaW5ncworICAgICAgICdub25lJyAgICAgICAgIHR1cm4gb2ZmIGFsbCB0aGUgd2FybmluZ3MKKyAgICAgICAnZXJyb3InICAgICAgICB3YXJuaW5ncyBhcmUgdHJlYXRlZCBhcyBmYXRhbCBlcnJvcnMiCisKKyMgSGVscCBtZXNzYWdlIHByaW50ZWQgYmVmb3JlIGZhdGFsIG9wdGlvbiBwYXJzaW5nIGVycm9ycy4KK2ZhdGFsX2hlbHA9IlRyeSAnXCRwcm9nbmFtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKworCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIEhvb2sgZnVuY3Rpb24gbWFuYWdlbWVudC4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBUaGlzIHNlY3Rpb24gY29udGFpbnMgZnVuY3Rpb25zIGZvciBhZGRpbmcsIHJlbW92aW5nLCBhbmQgcnVubmluZyBob29rcworIyB0byB0aGUgbWFpbiBjb2RlLiAgQSBob29rIGlzIGp1c3QgYSBuYW1lZCBsaXN0IG9mIG9mIGZ1bmN0aW9uLCB0aGF0IGNhbgorIyBiZSBydW4gaW4gb3JkZXIgbGF0ZXIgb24uCisKKyMgZnVuY19ob29rYWJsZSBGVU5DX05BTUUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGVjbGFyZSB0aGF0IEZVTkNfTkFNRSB3aWxsIHJ1biBob29rcyBhZGRlZCB3aXRoCisjICdmdW5jX2FkZF9ob29rIEZVTkNfTkFNRSAuLi4nLgorZnVuY19ob29rYWJsZSAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgIGZ1bmNfYXBwZW5kIGhvb2thYmxlX2ZucyAiICQxIgorfQorCisKKyMgZnVuY19hZGRfaG9vayBGVU5DX05BTUUgSE9PS19GVU5DCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZXF1ZXN0IHRoYXQgRlVOQ19OQU1FIGNhbGwgSE9PS19GVU5DIGJlZm9yZSBpdCByZXR1cm5zLiAgRlVOQ19OQU1FIG11c3QKKyMgZmlyc3QgaGF2ZSBiZWVuIGRlY2xhcmVkICJob29rYWJsZSIgYnkgYSBjYWxsIHRvICdmdW5jX2hvb2thYmxlJy4KK2Z1bmNfYWRkX2hvb2sgKCkKK3sKKyAgICAkZGVidWdfY21kCisKKyAgICBjYXNlICIgJGhvb2thYmxlX2ZucyAiIGluCisgICAgICAqIiAkMSAiKikgOzsKKyAgICAgICopIGZ1bmNfZmF0YWxfZXJyb3IgIickMScgZG9lcyBub3QgYWNjZXB0IGhvb2sgZnVuY3Rpb25zLiIgOzsKKyAgICBlc2FjCisKKyAgICBldmFsIGZ1bmNfYXBwZW5kICR7MX1faG9va3MgJyIgJDIiJworfQorCisKKyMgZnVuY19yZW1vdmVfaG9vayBGVU5DX05BTUUgSE9PS19GVU5DCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZW1vdmUgSE9PS19GVU5DIGZyb20gdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIGNhbGxlZCBieSBGVU5DX05BTUUuCitmdW5jX3JlbW92ZV9ob29rICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgZXZhbCAkezF9X2hvb2tzPSdgJEVDSE8gIlwkJyQxJ19ob29rcyIgfCRTRUQgInN8ICckMid8fCJgJworfQorCisKKyMgZnVuY19ydW5faG9va3MgRlVOQ19OQU1FIFtBUkddLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSdW4gYWxsIGhvb2sgZnVuY3Rpb25zIHJlZ2lzdGVyZWQgdG8gRlVOQ19OQU1FLgorIyBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGxpc3Qgb2YgaG9vayBmdW5jdGlvbnMgY29udGFpbnMgbm90aGluZyBtb3JlCisjIHRoYW4gYSB3aGl0ZXNwYWNlLWRlbGltaXRlZCBsaXN0IG9mIGxlZ2FsIHNoZWxsIGZ1bmN0aW9uIG5hbWVzLCBhbmQKKyMgbm8gZWZmb3J0IGlzIHdhc3RlZCB0cnlpbmcgdG8gY2F0Y2ggc2hlbGwgbWV0YS1jaGFyYWN0ZXJzIG9yIHByZXNlcnZlCisjIHdoaXRlc3BhY2UuCitmdW5jX3J1bl9ob29rcyAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgIGNhc2UgIiAkaG9va2FibGVfZm5zICIgaW4KKyAgICAgICoiICQxICIqKSA7OworICAgICAgKikgZnVuY19mYXRhbF9lcnJvciAiJyQxJyBkb2VzIG5vdCBzdXBwb3J0IGhvb2sgZnVuY2lvbnMubiIgOzsKKyAgICBlc2FjCisKKyAgICBldmFsIF9HX2hvb2tfZm5zPVwkJDFfaG9va3M7IHNoaWZ0CisKKyAgICBmb3IgX0dfaG9vayBpbiAkX0dfaG9va19mbnM7IGRvCisgICAgICBldmFsICRfR19ob29rICciJEAiJworCisgICAgICAjIHN0b3JlIHJldHVybmVkIG9wdGlvbnMgbGlzdCBiYWNrIGludG8gcG9zaXRpb25hbAorICAgICAgIyBwYXJhbWV0ZXJzIGZvciBuZXh0ICdjbWQnIGV4ZWN1dGlvbi4KKyAgICAgIGV2YWwgX0dfaG9va19yZXN1bHQ9XCQke19HX2hvb2t9X3Jlc3VsdAorICAgICAgZXZhbCBzZXQgZHVtbXkgIiRfR19ob29rX3Jlc3VsdCI7IHNoaWZ0CisgICAgZG9uZQorCisgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAkezErIiRAIn0KKyAgICBmdW5jX3J1bl9ob29rc19yZXN1bHQ9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0Cit9CisKKworCisjIyAtLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE9wdGlvbiBwYXJzaW5nLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgSW4gb3JkZXIgdG8gYWRkIHlvdXIgb3duIG9wdGlvbiBwYXJzaW5nIGhvb2tzLCB5b3UgbXVzdCBhY2NlcHQgdGhlCisjIGZ1bGwgcG9zaXRpb25hbCBwYXJhbWV0ZXIgbGlzdCBpbiB5b3VyIGhvb2sgZnVuY3Rpb24sIHJlbW92ZSBhbnkKKyMgb3B0aW9ucyB0aGF0IHlvdSBhY3Rpb24sIGFuZCB0aGVuIHBhc3MgYmFjayB0aGUgcmVtYWluaW5nIHVucHJvY2Vzc2VkCisjIG9wdGlvbnMgaW4gJzxob29rZWRfZnVuY3Rpb25fbmFtZT5fcmVzdWx0JywgZXNjYXBlZCBzdWl0YWJseSBmb3IKKyMgJ2V2YWwnLiAgTGlrZSB0aGlzOgorIworIyAgICBteV9vcHRpb25zX3ByZXAgKCkKKyMgICAgeworIyAgICAgICAgJGRlYnVnX2NtZAorIworIyAgICAgICAgIyBFeHRlbmQgdGhlIGV4aXN0aW5nIHVzYWdlIG1lc3NhZ2UuCisjICAgICAgICB1c2FnZV9tZXNzYWdlPSR1c2FnZV9tZXNzYWdlJworIyAgICAgIC1zLCAtLXNpbGVudCAgICAgICBkb24nXCcndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCisjICAgICcKKyMKKyMgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgJHsxKyIkQCJ9CisjICAgICAgICBteV9vcHRpb25zX3ByZXBfcmVzdWx0PSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAorIyAgICB9CisjICAgIGZ1bmNfYWRkX2hvb2sgZnVuY19vcHRpb25zX3ByZXAgbXlfb3B0aW9uc19wcmVwCisjCisjCisjICAgIG15X3NpbGVudF9vcHRpb24gKCkKKyMgICAgeworIyAgICAgICAgJGRlYnVnX2NtZAorIworIyAgICAgICAgIyBOb3RlIHRoYXQgZm9yIGVmZmljaWVuY3ksIHdlIHBhcnNlIGFzIG1hbnkgb3B0aW9ucyBhcyB3ZSBjYW4KKyMgICAgICAgICMgcmVjb2duaXNlIGluIGEgbG9vcCBiZWZvcmUgcGFzc2luZyB0aGUgcmVtYWluZGVyIGJhY2sgdG8gdGhlCisjICAgICAgICAjIGNhbGxlciBvbiB0aGUgZmlyc3QgdW5yZWNvZ25pc2VkIGFyZ3VtZW50IHdlIGVuY291bnRlci4KKyMgICAgICAgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisjICAgICAgICAgIG9wdD0kMTsgc2hpZnQKKyMgICAgICAgICAgY2FzZSAkb3B0IGluCisjICAgICAgICAgICAgLS1zaWxlbnR8LXMpIG9wdF9zaWxlbnQ9OiA7OworIyAgICAgICAgICAgICMgU2VwYXJhdGUgbm9uLWFyZ3VtZW50IHNob3J0IG9wdGlvbnM6CisjICAgICAgICAgICAgLXMqKSAgICAgICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0ICIkX0dfb3B0IgorIyAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIiBcCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLSRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmciICR7MSsiJEAifQorIyAgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdAorIyAgICAgICAgICAgICAgICAgICAgICAgICA7OworIyAgICAgICAgICAgICopICAgICAgICAgICAgc2V0IGR1bW15ICIkX0dfb3B0IiAiJCoiOyBzaGlmdDsgYnJlYWsgOzsKKyMgICAgICAgICAgZXNhYworIyAgICAgICAgZG9uZQorIworIyAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAkezErIiRAIn0KKyMgICAgICAgIG15X3NpbGVudF9vcHRpb25fcmVzdWx0PSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAorIyAgICB9CisjICAgIGZ1bmNfYWRkX2hvb2sgZnVuY19wYXJzZV9vcHRpb25zIG15X3NpbGVudF9vcHRpb24KKyMKKyMKKyMgICAgbXlfb3B0aW9uX3ZhbGlkYXRpb24gKCkKKyMgICAgeworIyAgICAgICAgJGRlYnVnX2NtZAorIworIyAgICAgICAgJG9wdF9zaWxlbnQgJiYgJG9wdF92ZXJib3NlICYmIGZ1bmNfZmF0YWxfaGVscCAiXAorIyAgICAnLS1zaWxlbnQnIGFuZCAnLS12ZXJib3NlJyBvcHRpb25zIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIgorIworIyAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAkezErIiRAIn0KKyMgICAgICAgIG15X29wdGlvbl92YWxpZGF0aW9uX3Jlc3VsdD0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKKyMgICAgfQorIyAgICBmdW5jX2FkZF9ob29rIGZ1bmNfdmFsaWRhdGVfb3B0aW9ucyBteV9vcHRpb25fdmFsaWRhdGlvbgorIworIyBZb3UnbGwgYWxzZSBuZWVkIHRvIG1hbnVhbGx5IGFtZW5kICR1c2FnZV9tZXNzYWdlIHRvIHJlZmxlY3QgdGhlIGV4dHJhCisjIG9wdGlvbnMgeW91IHBhcnNlLiAgSXQncyBwcmVmZXJhYmxlIHRvIGFwcGVuZCBpZiB5b3UgY2FuLCBzbyB0aGF0CisjIG11bHRpcGxlIG9wdGlvbiBwYXJzaW5nIGhvb2tzIGNhbiBiZSBhZGRlZCBzYWZlbHkuCisKKworIyBmdW5jX29wdGlvbnMgW0FSR10uLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEFsbCB0aGUgZnVuY3Rpb25zIGNhbGxlZCBpbnNpZGUgZnVuY19vcHRpb25zIGFyZSBob29rYWJsZS4gU2VlIHRoZQorIyBpbmRpdmlkdWFsIGltcGxlbWVudGF0aW9ucyBmb3IgZGV0YWlscy4KK2Z1bmNfaG9va2FibGUgZnVuY19vcHRpb25zCitmdW5jX29wdGlvbnMgKCkKK3sKKyAgICAkZGVidWdfY21kCisKKyAgICBmdW5jX29wdGlvbnNfcHJlcCAkezErIiRAIn0KKyAgICBldmFsIGZ1bmNfcGFyc2Vfb3B0aW9ucyBcCisgICAgICAgICR7ZnVuY19vcHRpb25zX3ByZXBfcmVzdWx0KyIkZnVuY19vcHRpb25zX3ByZXBfcmVzdWx0In0KKyAgICBldmFsIGZ1bmNfdmFsaWRhdGVfb3B0aW9ucyBcCisgICAgICAgICR7ZnVuY19wYXJzZV9vcHRpb25zX3Jlc3VsdCsiJGZ1bmNfcGFyc2Vfb3B0aW9uc19yZXN1bHQifQorCisgICAgZXZhbCBmdW5jX3J1bl9ob29rcyBmdW5jX29wdGlvbnMgXAorICAgICAgICAke2Z1bmNfdmFsaWRhdGVfb3B0aW9uc19yZXN1bHQrIiRmdW5jX3ZhbGlkYXRlX29wdGlvbnNfcmVzdWx0In0KKworICAgICMgc2F2ZSBtb2RpZmllZCBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGNhbGxlcgorICAgIGZ1bmNfb3B0aW9uc19yZXN1bHQ9JGZ1bmNfcnVuX2hvb2tzX3Jlc3VsdAorfQorCisKKyMgZnVuY19vcHRpb25zX3ByZXAgW0FSR10uLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQWxsIGluaXRpYWxpc2F0aW9ucyByZXF1aXJlZCBiZWZvcmUgc3RhcnRpbmcgdGhlIG9wdGlvbiBwYXJzZSBsb29wLgorIyBOb3RlIHRoYXQgd2hlbiBjYWxsaW5nIGhvb2sgZnVuY3Rpb25zLCB3ZSBwYXNzIHRocm91Z2ggdGhlIGxpc3Qgb2YKKyMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLiAgSWYgYSBob29rIGZ1bmN0aW9uIG1vZGlmaWVzIHRoYXQgbGlzdCwgYW5kCisjIG5lZWRzIHRvIHByb3BvZ2F0ZSB0aGF0IGJhY2sgdG8gcmVzdCBvZiB0aGlzIHNjcmlwdCwgdGhlbiB0aGUgY29tcGxldGUKKyMgbW9kaWZpZWQgbGlzdCBtdXN0IGJlIHB1dCBpbiAnZnVuY19ydW5faG9va3NfcmVzdWx0JyBiZWZvcmUKKyMgcmV0dXJuaW5nLgorZnVuY19ob29rYWJsZSBmdW5jX29wdGlvbnNfcHJlcAorZnVuY19vcHRpb25zX3ByZXAgKCkKK3sKKyAgICAkZGVidWdfY21kCisKKyAgICAjIE9wdGlvbiBkZWZhdWx0czoKKyAgICBvcHRfdmVyYm9zZT1mYWxzZQorICAgIG9wdF93YXJuaW5nX3R5cGVzPQorCisgICAgZnVuY19ydW5faG9va3MgZnVuY19vcHRpb25zX3ByZXAgJHsxKyIkQCJ9CisKKyAgICAjIHNhdmUgbW9kaWZpZWQgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGZvciBjYWxsZXIKKyAgICBmdW5jX29wdGlvbnNfcHJlcF9yZXN1bHQ9JGZ1bmNfcnVuX2hvb2tzX3Jlc3VsdAorfQorCisKKyMgZnVuY19wYXJzZV9vcHRpb25zIFtBUkddLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUaGUgbWFpbiBvcHRpb24gcGFyc2luZyBsb29wLgorZnVuY19ob29rYWJsZSBmdW5jX3BhcnNlX29wdGlvbnMKK2Z1bmNfcGFyc2Vfb3B0aW9ucyAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgIGZ1bmNfcGFyc2Vfb3B0aW9uc19yZXN1bHQ9CisKKyAgICAjIHRoaXMganVzdCBlYXNlcyBleGl0IGhhbmRsaW5nCisgICAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KKyAgICAgICMgRGVmZXIgdG8gaG9vayBmdW5jdGlvbnMgZm9yIGluaXRpYWwgb3B0aW9uIHBhcnNpbmcsIHNvIHRoZXkKKyAgICAgICMgZ2V0IHByaW9yaXR5IGluIHRoZSBldmVudCBvZiByZXVzaW5nIGFuIG9wdGlvbiBuYW1lLgorICAgICAgZnVuY19ydW5faG9va3MgZnVuY19wYXJzZV9vcHRpb25zICR7MSsiJEAifQorCisgICAgICAjIEFkanVzdCBmdW5jX3BhcnNlX29wdGlvbnMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIHRvIG1hdGNoCisgICAgICBldmFsIHNldCBkdW1teSAiJGZ1bmNfcnVuX2hvb2tzX3Jlc3VsdCI7IHNoaWZ0CisKKyAgICAgICMgQnJlYWsgb3V0IG9mIHRoZSBsb29wIGlmIHdlIGFscmVhZHkgcGFyc2VkIGV2ZXJ5IG9wdGlvbi4KKyAgICAgIHRlc3QgJCMgLWd0IDAgfHwgYnJlYWsKKworICAgICAgX0dfb3B0PSQxCisgICAgICBzaGlmdAorICAgICAgY2FzZSAkX0dfb3B0IGluCisgICAgICAgIC0tZGVidWd8LXgpICAgZGVidWdfY21kPSdzZXQgLXgnCisgICAgICAgICAgICAgICAgICAgICAgZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgorICAgICAgICAgICAgICAgICAgICAgICRkZWJ1Z19jbWQKKyAgICAgICAgICAgICAgICAgICAgICA7OworCisgICAgICAgIC0tbm8td2FybmluZ3N8LS1uby13YXJuaW5nfC0tbm8td2FybikKKyAgICAgICAgICAgICAgICAgICAgICBzZXQgZHVtbXkgLS13YXJuaW5ncyBub25lICR7MSsiJEAifQorICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0CisJCSAgICAgIDs7CisKKyAgICAgICAgLS13YXJuaW5nc3wtLXdhcm5pbmd8LVcpCisgICAgICAgICAgICAgICAgICAgICAgdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkX0dfb3B0ICYmIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiICR3YXJuaW5nX2NhdGVnb3JpZXMgJDEiIGluCisgICAgICAgICAgICAgICAgICAgICAgICAqIiAkMSAiKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0cmFpbGluZyBzcGFjZSBwcmV2ZW50cyBtYXRjaGluZyBsYXN0ICQxIGFib3ZlCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kX3VuaXEgb3B0X3dhcm5pbmdfdHlwZXMgIiAkMSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICphbGwpCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdF93YXJuaW5nX3R5cGVzPSR3YXJuaW5nX2NhdGVnb3JpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICpub25lKQorICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRfd2FybmluZ190eXBlcz1ub25lCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdfZnVuYz06CisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAgICAgICAqZXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdF93YXJuaW5nX3R5cGVzPSR3YXJuaW5nX2NhdGVnb3JpZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ19mdW5jPWZ1bmNfZmF0YWxfZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgd2FybmluZyBjYXRlZ29yeTogJyQxJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgICAgICAgICAgc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICA7OworCisgICAgICAgIC0tdmVyYm9zZXwtdikgb3B0X3ZlcmJvc2U9OiA7OworICAgICAgICAtLXZlcnNpb24pICAgIGZ1bmNfdmVyc2lvbiA7OworICAgICAgICAtXD98LWgpICAgICAgIGZ1bmNfdXNhZ2UgOzsKKyAgICAgICAgLS1oZWxwKSAgICAgICBmdW5jX2hlbHAgOzsKKworCSMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnMgKHBsdWdpbnMgbWF5IG5lZWQgdGhpcyk6CisJLS0qPSopICAgICAgICBmdW5jX3NwbGl0X2VxdWFscyAiJF9HX29wdCIKKwkgICAgICAgICAgICAgIHNldCBkdW1teSAiJGZ1bmNfc3BsaXRfZXF1YWxzX2xocyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJGZ1bmNfc3BsaXRfZXF1YWxzX3JocyIgJHsxKyIkQCJ9CisgICAgICAgICAgICAgICAgICAgICAgc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICA7OworCisgICAgICAgIyBTZXBhcmF0ZSBvcHRhcmdzIHRvIHNob3J0IG9wdGlvbnM6CisgICAgICAgIC1XKikKKyAgICAgICAgICAgICAgICAgICAgICBmdW5jX3NwbGl0X3Nob3J0X29wdCAiJF9HX29wdCIKKyAgICAgICAgICAgICAgICAgICAgICBzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIiAkezErIiRAIn0KKyAgICAgICAgICAgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAgICAgICAgICAgIDs7CisKKyAgICAgICAgIyBTZXBhcmF0ZSBub24tYXJndW1lbnQgc2hvcnQgb3B0aW9uczoKKyAgICAgICAgLVw/KnwtaCp8LXYqfC14KikKKyAgICAgICAgICAgICAgICAgICAgICBmdW5jX3NwbGl0X3Nob3J0X29wdCAiJF9HX29wdCIKKyAgICAgICAgICAgICAgICAgICAgICBzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICItJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyIgJHsxKyIkQCJ9CisgICAgICAgICAgICAgICAgICAgICAgc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICA7OworCisgICAgICAgIC0tKSAgICAgICAgICAgYnJlYWsgOzsKKyAgICAgICAgLSopICAgICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXNlZCBvcHRpb246ICckX0dfb3B0JyIgOzsKKyAgICAgICAgKikgICAgICAgICAgICBzZXQgZHVtbXkgIiRfR19vcHQiICR7MSsiJEAifTsgc2hpZnQ7IGJyZWFrIDs7CisgICAgICBlc2FjCisgICAgZG9uZQorCisgICAgIyBzYXZlIG1vZGlmaWVkIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBmb3IgY2FsbGVyCisgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAkezErIiRAIn0KKyAgICBmdW5jX3BhcnNlX29wdGlvbnNfcmVzdWx0PSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAorfQorCisKKyMgZnVuY192YWxpZGF0ZV9vcHRpb25zIFtBUkddLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQZXJmb3JtIGFueSBzYW5pdHkgY2hlY2tzIG9uIG9wdGlvbiBzZXR0aW5ncyBhbmQvb3IgdW5jb25zdW1lZAorIyBhcmd1bWVudHMuCitmdW5jX2hvb2thYmxlIGZ1bmNfdmFsaWRhdGVfb3B0aW9ucworZnVuY192YWxpZGF0ZV9vcHRpb25zICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgIyBEaXNwbGF5IGFsbCB3YXJuaW5ncyBpZiAtVyB3YXMgbm90IGdpdmVuLgorICAgIHRlc3QgLW4gIiRvcHRfd2FybmluZ190eXBlcyIgfHwgb3B0X3dhcm5pbmdfdHlwZXM9IiAkd2FybmluZ19jYXRlZ29yaWVzIgorCisgICAgZnVuY19ydW5faG9va3MgZnVuY192YWxpZGF0ZV9vcHRpb25zICR7MSsiJEAifQorCisgICAgIyBCYWlsIGlmIHRoZSBvcHRpb25zIHdlcmUgc2NyZXdlZCEKKyAgICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQorCisgICAgIyBzYXZlIG1vZGlmaWVkIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBmb3IgY2FsbGVyCisgICAgZnVuY192YWxpZGF0ZV9vcHRpb25zX3Jlc3VsdD0kZnVuY19ydW5faG9va3NfcmVzdWx0Cit9CisKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgSGVscGVyIGZ1bmN0aW9ucy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIHRoZSBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHJlc3Qgb2YgdGhlCisjIGhvb2thYmxlIG9wdGlvbiBwYXJzZXIgZnJhbWV3b3JrIGluIGFzY2lpLWJldGljYWwgb3JkZXIuCisKKworIyBmdW5jX2ZhdGFsX2hlbHAgQVJHLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciwgZm9sbG93ZWQgYnkKKyMgYSBoZWxwIGhpbnQsIGFuZCBleGl0LgorZnVuY19mYXRhbF9oZWxwICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgZXZhbCBcJEVDSE8gXCIiVXNhZ2U6ICR1c2FnZSJcIgorICAgIGV2YWwgXCRFQ0hPIFwiIiRmYXRhbF9oZWxwIlwiCisgICAgZnVuY19lcnJvciAkezErIiRAIn0KKyAgICBleGl0ICRFWElUX0ZBSUxVUkUKK30KKworCisjIGZ1bmNfaGVscAorIyAtLS0tLS0tLS0KKyMgRWNobyBsb25nIGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCiBmdW5jX2hlbHAgKCkKIHsKLSAgICAkb3B0X2RlYnVnCisgICAgJGRlYnVnX2NtZAogCi0gICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgUmVwb3J0IGJ1Z3MgdG8vIHsKLQk6cHJpbnQKLSAgICAgICAgcy9eIyAvLwotCXMvXiMgKiQvLwotCXMqXCRwcm9nbmFtZSonJHByb2duYW1lJyoKLQlzKlwkaG9zdConIiRob3N0IicqCi0JcypcJFNIRUxMKiciJFNIRUxMIicqCi0JcypcJExUQ0MqJyIkTFRDQyInKgotCXMqXCRMVENGTEFHUyonIiRMVENGTEFHUyInKgotCXMqXCRMRConIiRMRCInKgotCXMvXCR3aXRoX2dudV9sZC8nIiR3aXRoX2dudV9sZCInLwotCXMvXCRhdXRvbWFrZV92ZXJzaW9uLyciYCgke0FVVE9NQUtFLWF1dG9tYWtlfSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwotCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYCgke0FVVE9DT05GLWF1dG9jb25mfSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwotCXAKLQlkCi0gICAgIH0KLSAgICAgL14jIC4qIGhvbWUgcGFnZTovYiBwcmludAotICAgICAvXiMgR2VuZXJhbCBoZWxwIHVzaW5nL2IgcHJpbnQKLSAgICAgJyA8ICIkcHJvZ3BhdGgiCi0gICAgcmV0PSQ/Ci0gICAgaWYgdGVzdCAteiAiJDEiOyB0aGVuCi0gICAgICBleGl0ICRyZXQKLSAgICBmaQorICAgIGZ1bmNfdXNhZ2VfbWVzc2FnZQorICAgICRFQ0hPICIkbG9uZ19oZWxwX21lc3NhZ2UiCisgICAgZXhpdCAwCiB9CiAKLSMgZnVuY19taXNzaW5nX2FyZyBhcmduYW1lCisKKyMgZnVuY19taXNzaW5nX2FyZyBBUkdOQU1FCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yIGFuZCBzZXQgZ2xvYmFsCiAjIGV4aXRfY21kLgogZnVuY19taXNzaW5nX2FyZyAoKQogewotICAgICRvcHRfZGVidWcKKyAgICAkZGVidWdfY21kCiAKLSAgICBmdW5jX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IGZvciAkMS4iCisgICAgZnVuY19lcnJvciAiTWlzc2luZyBhcmd1bWVudCBmb3IgJyQxJy4iCiAgICAgZXhpdF9jbWQ9ZXhpdAogfQogCiAKLSMgZnVuY19zcGxpdF9zaG9ydF9vcHQgc2hvcnRvcHQKKyMgZnVuY19zcGxpdF9lcXVhbHMgU1RSSU5HCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZXQgZnVuY19zcGxpdF9lcXVhbHNfbGhzIGFuZCBmdW5jX3NwbGl0X2VxdWFsc19yaHMgc2hlbGwgdmFyaWFibGVzIGFmdGVyCisjIHNwbGl0dGluZyBTVFJJTkcgYXQgdGhlICc9JyBzaWduLgordGVzdCAteiAiJF9HX0hBVkVfWFNJX09QUyIgXAorICAgICYmIChldmFsICd4PWEvYi9jOworICAgICAgdGVzdCA1YWEvYmIvY2MgPSAiJHsjeH0ke3glJS8qfSR7eCUvKn0ke3gjKi99JHt4IyMqL30iJykgMj4vZGV2L251bGwgXAorICAgICYmIF9HX0hBVkVfWFNJX09QUz15ZXMKKworaWYgdGVzdCB5ZXMgPSAiJF9HX0hBVkVfWFNJX09QUyIKK3RoZW4KKyAgIyBUaGlzIGlzIGFuIFhTSSBjb21wYXRpYmxlIHNoZWxsLCBhbGxvd2luZyBhIGZhc3RlciBpbXBsZW1lbnRhdGlvbi4uLgorICBldmFsICdmdW5jX3NwbGl0X2VxdWFscyAoKQorICB7CisgICAgICAkZGVidWdfY21kCisKKyAgICAgIGZ1bmNfc3BsaXRfZXF1YWxzX2xocz0kezElJT0qfQorICAgICAgZnVuY19zcGxpdF9lcXVhbHNfcmhzPSR7MSMqPX0KKyAgICAgIHRlc3QgIngkZnVuY19zcGxpdF9lcXVhbHNfbGhzIiA9ICJ4JDEiIFwKKyAgICAgICAgJiYgZnVuY19zcGxpdF9lcXVhbHNfcmhzPQorICB9JworZWxzZQorICAjIC4uLm90aGVyd2lzZSBmYWxsIGJhY2sgdG8gdXNpbmcgZXhwciwgd2hpY2ggaXMgb2Z0ZW4gYSBzaGVsbCBidWlsdGluLgorICBmdW5jX3NwbGl0X2VxdWFscyAoKQorICB7CisgICAgICAkZGVidWdfY21kCisKKyAgICAgIGZ1bmNfc3BsaXRfZXF1YWxzX2xocz1gZXhwciAieCQxIiA6ICd4XChbXj1dKlwpJ2AKKyAgICAgIGZ1bmNfc3BsaXRfZXF1YWxzX3Jocz0KKyAgICAgIHRlc3QgIngkZnVuY19zcGxpdF9lcXVhbHNfbGhzIiA9ICJ4JDEiIFwKKyAgICAgICAgfHwgZnVuY19zcGxpdF9lcXVhbHNfcmhzPWBleHByICJ4JDEiIDogJ3hbXj1dKj1cKC4qXCkkJ2AKKyAgfQorZmkgI2Z1bmNfc3BsaXRfZXF1YWxzCisKKworIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBTSE9SVE9QVAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBTZXQgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIHNoZWxsCiAjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgU0hPUlRPUFQgYWZ0ZXIgdGhlIDJuZCBjaGFyYWN0ZXIuCi1mdW5jX3NwbGl0X3Nob3J0X29wdCAoKQoraWYgdGVzdCB5ZXMgPSAiJF9HX0hBVkVfWFNJX09QUyIKK3RoZW4KKyAgIyBUaGlzIGlzIGFuIFhTSSBjb21wYXRpYmxlIHNoZWxsLCBhbGxvd2luZyBhIGZhc3RlciBpbXBsZW1lbnRhdGlvbi4uLgorICBldmFsICdmdW5jX3NwbGl0X3Nob3J0X29wdCAoKQorICB7CisgICAgICAkZGVidWdfY21kCisKKyAgICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99CisgICAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9CisgIH0nCitlbHNlCisgICMgLi4ub3RoZXJ3aXNlIGZhbGwgYmFjayB0byB1c2luZyBleHByLCB3aGljaCBpcyBvZnRlbiBhIHNoZWxsIGJ1aWx0aW4uCisgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpCisgIHsKKyAgICAgICRkZWJ1Z19jbWQKKworICAgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT1gZXhwciAieCQxIiA6ICd4LVwoLlwpJ2AKKyAgICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz1gZXhwciAieCQxIiA6ICd4LS5cKC4qXCkkJ2AKKyAgfQorZmkgI2Z1bmNfc3BsaXRfc2hvcnRfb3B0CisKKworIyBmdW5jX3VzYWdlCisjIC0tLS0tLS0tLS0KKyMgRWNobyBzaG9ydCBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgorZnVuY191c2FnZSAoKQogewotICAgIG15X3NlZF9zaG9ydF9vcHQ9JzFzL15cKC4uXCkuKiQvXDEvO3EnCi0gICAgbXlfc2VkX3Nob3J0X3Jlc3Q9JzFzL14uLlwoLipcKSQvXDEvO3EnCisgICAgJGRlYnVnX2NtZAogCi0gICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfb3B0ImAKLSAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X3Jlc3QiYAotfSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorICAgIGZ1bmNfdXNhZ2VfbWVzc2FnZQorICAgICRFQ0hPICJSdW4gJyRwcm9nbmFtZSAtLWhlbHAgfCR7UEFHRVItbW9yZX0nIGZvciBmdWxsIHVzYWdlIgorICAgIGV4aXQgMAorfQogCiAKLSMgZnVuY19zcGxpdF9sb25nX29wdCBsb25nb3B0Ci0jIFNldCBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIHNoZWxsCi0jIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgTE9OR09QVCBhdCB0aGUgYD0nIHNpZ24uCi1mdW5jX3NwbGl0X2xvbmdfb3B0ICgpCisjIGZ1bmNfdXNhZ2VfbWVzc2FnZQorIyAtLS0tLS0tLS0tLS0tLS0tLS0KKyMgRWNobyBzaG9ydCBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0LgorZnVuY191c2FnZV9tZXNzYWdlICgpCiB7Ci0gICAgbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtLVtePV0qXCk9LiovXDEvO3EnCi0gICAgbXlfc2VkX2xvbmdfYXJnPScxcy9eLS1bXj1dKj0vLycKKyAgICAkZGVidWdfY21kCiAKLSAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLSAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotfSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0KLWV4aXRfY21kPToKKyAgICBldmFsIFwkRUNITyBcIiJVc2FnZTogJHVzYWdlIlwiCisgICAgZWNobworICAgICRTRUQgLW4gJ3N8XiMgfHwKKyAgICAgICAgL15Xcml0dGVuIGJ5L3sKKyAgICAgICAgICB4O3A7eAorICAgICAgICB9CisJaAorCS9eV3JpdHRlbiBieS9xJyA8ICIkcHJvZ3BhdGgiCisgICAgZWNobworICAgIGV2YWwgXCRFQ0hPIFwiIiR1c2FnZV9tZXNzYWdlIlwiCit9CiAKIAotCi0KLQotbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgotbWFnaWNfZXhlPSIlJSVNQUdJQyBFWEUgdmFyaWFibGUlJSUiCi0KLSMgR2xvYmFsIHZhcmlhYmxlcy4KLW5vbm9wdD0KLXByZXNlcnZlX2FyZ3M9Ci1sbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCi1vMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCi1leHRyYWN0ZWRfYXJjaGl2ZXM9Ci1leHRyYWN0ZWRfc2VyaWFsPTAKLQotIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0Ci0jIHdpbGwgYmUgZXhlY2VkIGF0IHRoZSBlbmQuICBUaGlzIHByZXZlbnRzIGhlcmUtZG9jdW1lbnRzIGZyb20gYmVpbmcKLSMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KLWV4ZWNfY21kPQotCi0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi1mdW5jX2FwcGVuZCAoKQorIyBmdW5jX3ZlcnNpb24KKyMgLS0tLS0tLS0tLS0tCisjIEVjaG8gdmVyc2lvbiBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KK2Z1bmNfdmVyc2lvbiAoKQogewotICAgIGV2YWwgIiR7MX09XCQkezF9XCR7Mn0iCi19ICMgZnVuY19hcHBlbmQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisgICAgJGRlYnVnX2NtZAogCi0jIGZ1bmNfYXBwZW5kX3F1b3RlZCB2YXIgdmFsdWUKLSMgUXVvdGUgVkFMVUUgYW5kIGFwcGVuZCB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUiwgc2VwYXJhdGVkCi0jIGJ5IGEgc3BhY2UuCi1mdW5jX2FwcGVuZF9xdW90ZWQgKCkKKyAgICBwcmludGYgJyVzXG4nICIkcHJvZ25hbWUgJHNjcmlwdHZlcnNpb24iCisgICAgJFNFRCAtbiAnCisgICAgICAgIC8oQykvIWIgZ28KKyAgICAgICAgOm1vcmUKKyAgICAgICAgL1wuLyF7CisgICAgICAgICAgTgorICAgICAgICAgIHN8XG4jIHwgfAorICAgICAgICAgIGIgbW9yZQorICAgICAgICB9CisgICAgICAgIDpnbworICAgICAgICAvXiMgV3JpdHRlbiBieSAvLC8jIHdhcnJhbnR5OyAvIHsKKyAgICAgICAgICBzfF4jIHx8CisgICAgICAgICAgc3xeIyAqJHx8CisgICAgICAgICAgc3xcKChDKVwpWyAwLTksLV0qWyAsLV1cKFsxLTldWzAtOV0qIFwpfFwxIFwyfAorICAgICAgICAgIHAKKyAgICAgICAgfQorICAgICAgICAvXiMgV3JpdHRlbiBieSAvIHsKKyAgICAgICAgICBzfF4jIHx8CisgICAgICAgICAgcAorICAgICAgICB9CisgICAgICAgIC9ed2FycmFudHk7IC9xJyA8ICIkcHJvZ3BhdGgiCisKKyAgICBleGl0ICQ/Cit9CisKKworIyBMb2NhbCB2YXJpYWJsZXM6CisjIG1vZGU6IHNoZWxsLXNjcmlwdAorIyBzaC1pbmRlbnRhdGlvbjogMgorIyBldmFsOiAoYWRkLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtcGF0dGVybjogIjEwL3NjcmlwdHZlcnNpb249JTp5LSUwMm0tJTAyZC4lMDJIOyAjIFVUQyIKKyMgdGltZS1zdGFtcC10aW1lLXpvbmU6ICJVVEMiCisjIEVuZDoKKworIyBTZXQgYSB2ZXJzaW9uIHN0cmluZy4KK3NjcmlwdHZlcnNpb249JyhHTlUgbGlidG9vbCkgMi40LjYnCisKKworIyBmdW5jX2VjaG8gQVJHLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgTGlidG9vbCBhbHNvIGRpc3BsYXlzIHRoZSBjdXJyZW50IG1vZGUgaW4gbWVzc2FnZXMsIHNvIG92ZXJyaWRlCisjIGZ1bmNsaWIuc2ggZnVuY19lY2hvIHdpdGggdGhpcyBjdXN0b20gZGVmaW5pdGlvbi4KK2Z1bmNfZWNobyAoKQogewotICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCi0gICAgZXZhbCAiJHsxfT1cJCR7MX1cXCBcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotfSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKyAgICAkZGVidWdfY21kCisKKyAgICBfR19tZXNzYWdlPSQqCisKKyAgICBmdW5jX2VjaG9fSUZTPSRJRlMKKyAgICBJRlM9JG5sCisgICAgZm9yIF9HX2xpbmUgaW4gJF9HX21lc3NhZ2U7IGRvCisgICAgICBJRlM9JGZ1bmNfZWNob19JRlMKKyAgICAgICRFQ0hPICIkcHJvZ25hbWUke29wdF9tb2RlKzogJG9wdF9tb2RlfTogJF9HX2xpbmUiCisgICAgZG9uZQorICAgIElGUz0kZnVuY19lY2hvX0lGUworfQogCiAKLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLWZ1bmNfYXJpdGggKCkKKyMgZnVuY193YXJuaW5nIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tCisjIExpYnRvb2wgd2FybmluZ3MgYXJlIG5vdCBjYXRlZ29yaXplZCwgc28gb3ZlcnJpZGUgZnVuY2xpYi5zaAorIyBmdW5jX3dhcm5pbmcgd2l0aCB0aGlzIHNpbXBsZXIgZGVmaW5pdGlvbi4KK2Z1bmNfd2FybmluZyAoKQogewotICAgIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIke0B9ImAKLX0gIyBmdW5jX2FyaXRoIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorICAgICRkZWJ1Z19jbWQKKworICAgICR3YXJuaW5nX2Z1bmMgJHsxKyIkQCJ9Cit9CiAKIAotIyBmdW5jX2xlbiBzdHJpbmcKLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLWZ1bmNfbGVuICgpCisjIyAtLS0tLS0tLS0tLS0tLS0tICMjCisjIyBPcHRpb25zIHBhcnNpbmcuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgSG9vayBpbiB0aGUgZnVuY3Rpb25zIHRvIG1ha2Ugc3VyZSBvdXIgb3duIG9wdGlvbnMgYXJlIHBhcnNlZCBkdXJpbmcKKyMgdGhlIG9wdGlvbiBwYXJzaW5nIGxvb3AuCisKK3VzYWdlPSckcHJvZ3BhdGggW09QVElPTl0uLi4gW01PREUtQVJHXS4uLicKKworIyBTaG9ydCBoZWxwIG1lc3NhZ2UgaW4gcmVzcG9uc2UgdG8gJy1oJy4KK3VzYWdlX21lc3NhZ2U9Ik9wdGlvbnM6CisgICAgICAgLS1jb25maWcgICAgICAgICAgICAgc2hvdyBhbGwgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKyAgICAgICAtLWRlYnVnICAgICAgICAgICAgICBlbmFibGUgdmVyYm9zZSBzaGVsbCB0cmFjaW5nCisgICAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKKyAgICAgICAtLWZlYXR1cmVzICAgICAgICAgICBkaXNwbGF5IGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKKyAgICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQorICAgICAgIC0tbm8td2FybmluZ3MgICAgICAgIGVxdWl2YWxlbnQgdG8gJy1Xbm9uZScKKyAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzICBkb24ndCByZW1vdmUgZHVwbGljYXRlIGRlcGVuZGVuY3kgbGlicmFyaWVzCisgICAgICAgLS1xdWlldCwgLS1zaWxlbnQgICAgZG9uJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcworICAgICAgIC0tdGFnPVRBRyAgICAgICAgICAgIHVzZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmcm9tIHRhZyBUQUcKKyAgIC12LCAtLXZlcmJvc2UgICAgICAgICAgICBwcmludCBtb3JlIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgdGhhbiBkZWZhdWx0CisgICAgICAgLS12ZXJzaW9uICAgICAgICAgICAgcHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbgorICAgLVcsIC0td2FybmluZ3M9Q0FURUdPUlkgIHJlcG9ydCB0aGUgd2FybmluZ3MgZmFsbGluZyBpbiBDQVRFR09SWSBbYWxsXQorICAgLWgsIC0taGVscCwgLS1oZWxwLWFsbCAgIHByaW50IHNob3J0LCBsb25nLCBvciBkZXRhaWxlZCBoZWxwIG1lc3NhZ2UKKyIKKworIyBBZGRpdGlvbmFsIHRleHQgYXBwZW5kZWQgdG8gJ3VzYWdlX21lc3NhZ2UnIGluIHJlc3BvbnNlIHRvICctLWhlbHAnLgorZnVuY19oZWxwICgpCiB7Ci0gICAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkezF9IiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi19ICMgZnVuY19sZW4gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisgICAgJGRlYnVnX2NtZAorCisgICAgZnVuY191c2FnZV9tZXNzYWdlCisgICAgJEVDSE8gIiRsb25nX2hlbHBfbWVzc2FnZQorCitNT0RFIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgICAgICBjbGVhbiAgICAgICAgICAgcmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeQorICAgICAgIGNvbXBpbGUgICAgICAgICBjb21waWxlIGEgc291cmNlIGZpbGUgaW50byBhIGxpYnRvb2wgb2JqZWN0CisgICAgICAgZXhlY3V0ZSAgICAgICAgIGF1dG9tYXRpY2FsbHkgc2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtCisgICAgICAgZmluaXNoICAgICAgICAgIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMKKyAgICAgICBpbnN0YWxsICAgICAgICAgaW5zdGFsbCBsaWJyYXJpZXMgb3IgZXhlY3V0YWJsZXMKKyAgICAgICBsaW5rICAgICAgICAgICAgY3JlYXRlIGEgbGlicmFyeSBvciBhbiBleGVjdXRhYmxlCisgICAgICAgdW5pbnN0YWxsICAgICAgIHJlbW92ZSBsaWJyYXJpZXMgZnJvbSBhbiBpbnN0YWxsZWQgZGlyZWN0b3J5CisKK01PREUtQVJHUyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgTU9ERS4gIFdoZW4gcGFzc2VkIGFzIGZpcnN0IG9wdGlvbiwKKyctLW1vZGU9TU9ERScgbWF5IGJlIGFiYnJldmlhdGVkIGFzICdNT0RFJyBvciBhIHVuaXF1ZSBhYmJyZXZpYXRpb24gb2YgdGhhdC4KK1RyeSAnJHByb2duYW1lIC0taGVscCAtLW1vZGU9TU9ERScgZm9yIGEgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiBNT0RFLgorCitXaGVuIHJlcG9ydGluZyBhIGJ1ZywgcGxlYXNlIGRlc2NyaWJlIGEgdGVzdCBjYXNlIHRvIHJlcHJvZHVjZSBpdCBhbmQKK2luY2x1ZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKKworICAgICAgIGhvc3QtdHJpcGxldDogICAkaG9zdAorICAgICAgIHNoZWxsOiAgICAgICAgICAkU0hFTEwKKyAgICAgICBjb21waWxlcjogICAgICAgJExUQ0MKKyAgICAgICBjb21waWxlciBmbGFnczogJExUQ0ZMQUdTCisgICAgICAgbGlua2VyOiAgICAgICAgICRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCisgICAgICAgdmVyc2lvbjogICAgICAgICRwcm9nbmFtZSAoR05VIGxpYnRvb2wpIDIuNC42CisgICAgICAgYXV0b21ha2U6ICAgICAgIGAoJEFVVE9NQUtFIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgCisgICAgICAgYXV0b2NvbmY6ICAgICAgIGAoJEFVVE9DT05GIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgCisKK1JlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4KK0dOVSBsaWJ0b29sIGhvbWUgcGFnZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9zL2xpYnRvb2wvPi4KK0dlbmVyYWwgaGVscCB1c2luZyBHTlUgc29mdHdhcmU6IDxodHRwOi8vd3d3LmdudS5vcmcvZ2V0aGVscC8+LiIKKyAgICBleGl0IDAKK30KIAogCi0jIGZ1bmNfbG8ybyBvYmplY3QKLWZ1bmNfbG8ybyAoKQotewotICAgIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLX0gIyBmdW5jX2xvMm8gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisjIGZ1bmNfbG8ybyBPQkpFQ1QtTkFNRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJhbnNmb3JtIE9CSkVDVC1OQU1FIGZyb20gYSAnLmxvJyBzdWZmaXggdG8gdGhlIHBsYXRmb3JtIHNwZWNpZmljCisjIG9iamVjdCBzdWZmaXguCisKK2xvMm89cy9cXC5sb1wkLy4kb2JqZXh0LworbzJsbz1zL1xcLiRvYmpleHRcJC8ubG8vCisKK2lmIHRlc3QgeWVzID0gIiRfR19IQVZFX1hTSV9PUFMiOyB0aGVuCisgIGV2YWwgJ2Z1bmNfbG8ybyAoKQorICB7CisgICAgY2FzZSAkMSBpbgorICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4kb2JqZXh0IDs7CisgICAgICAqICAgKSBmdW5jX2xvMm9fcmVzdWx0PSQxICAgICAgICAgICAgICAgOzsKKyAgICBlc2FjCisgIH0nCisKKyAgIyBmdW5jX3hmb3JtIExJQk9CSi1PUi1TT1VSQ0UKKyAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIyBUcmFuc2Zvcm0gTElCT0JKLU9SLVNPVVJDRSBmcm9tIGEgJy5vJyBvciAnLmMnIChvciBvdGhlcndpc2UpCisgICMgc3VmZml4IHRvIGEgJy5sbycgbGlidG9vbC1vYmplY3Qgc3VmZml4LgorICBldmFsICdmdW5jX3hmb3JtICgpCisgIHsKKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCisgIH0nCitlbHNlCisgICMgLi4ub3RoZXJ3aXNlIGZhbGwgYmFjayB0byB1c2luZyBzZWQuCisgIGZ1bmNfbG8ybyAoKQorICB7CisgICAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgIiRsbzJvImAKKyAgfQorCisgIGZ1bmNfeGZvcm0gKCkKKyAgeworICAgIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJDEiIHwgJFNFRCAnc3xcLlteLl0qJHwubG98J2AKKyAgfQorZmkKIAogCi0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotZnVuY194Zm9ybSAoKQotewotICAgIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotfSAjIGZ1bmNfeGZvcm0gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0KLQotIyBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gYXJnLi4uCisjIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiBBUkcuLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBmb2xsb3dlZCBieQogIyBhIGNvbmZpZ3VyYXRpb24gZmFpbHVyZSBoaW50LCBhbmQgZXhpdC4KIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAoKQogewotICAgIGZ1bmNfZXJyb3IgJHsxKyIkQCJ9Ci0gICAgZnVuY19lcnJvciAiU2VlIHRoZSAkUEFDS0FHRSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLSAgICBmdW5jX2ZhdGFsX2Vycm9yICJGYXRhbCBjb25maWd1cmF0aW9uIGVycm9yLiIKKyAgICBmdW5jX19mYXRhbF9lcnJvciAkezErIiRAIn0gXAorICAgICAgIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIFwKKyAgICAgICJGYXRhbCBjb25maWd1cmF0aW9uIGVycm9yLiIKIH0KIAogCiAjIGZ1bmNfY29uZmlnCisjIC0tLS0tLS0tLS0tCiAjIERpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGFsbCB0aGUgdGFncyBpbiB0aGlzIHNjcmlwdC4KIGZ1bmNfY29uZmlnICgpCiB7CkBAIC05MTUsMTcgKzIxNDksMTkgQEAKICAgICBleGl0ICQ/CiB9CiAKKwogIyBmdW5jX2ZlYXR1cmVzCisjIC0tLS0tLS0tLS0tLS0KICMgRGlzcGxheSB0aGUgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoaXMgc2NyaXB0LgogZnVuY19mZWF0dXJlcyAoKQogewogICAgIGVjaG8gImhvc3Q6ICRob3N0IgotICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgPSAiJGJ1aWxkX2xpYnRvb2xfbGlicyI7IHRoZW4KICAgICAgIGVjaG8gImVuYWJsZSBzaGFyZWQgbGlicmFyaWVzIgogICAgIGVsc2UKICAgICAgIGVjaG8gImRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyIKICAgICBmaQotICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KKyAgICBpZiB0ZXN0IHllcyA9ICIkYnVpbGRfb2xkX2xpYnMiOyB0aGVuCiAgICAgICBlY2hvICJlbmFibGUgc3RhdGljIGxpYnJhcmllcyIKICAgICBlbHNlCiAgICAgICBlY2hvICJkaXNhYmxlIHN0YXRpYyBsaWJyYXJpZXMiCkBAIC05MzQsMzE0ICsyMTcwLDM1MCBAQAogICAgIGV4aXQgJD8KIH0KIAotIyBmdW5jX2VuYWJsZV90YWcgdGFnbmFtZQorCisjIGZ1bmNfZW5hYmxlX3RhZyBUQUdOQU1FCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFZlcmlmeSB0aGF0IFRBR05BTUUgaXMgdmFsaWQsIGFuZCBlaXRoZXIgZmxhZyBhbiBlcnJvciBhbmQgZXhpdCwgb3IKICMgZW5hYmxlIHRoZSBUQUdOQU1FIHRhZy4gIFdlIGFsc28gYWRkIFRBR05BTUUgdG8gdGhlIGdsb2JhbCAkdGFnbGlzdAogIyB2YXJpYWJsZSBoZXJlLgogZnVuY19lbmFibGVfdGFnICgpCiB7Ci0gICMgR2xvYmFsIHZhcmlhYmxlOgotICB0YWduYW1lPSIkMSIKKyAgICAjIEdsb2JhbCB2YXJpYWJsZToKKyAgICB0YWduYW1lPSQxCiAKLSAgcmVfYmVnaW5jZj0iXiMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogJHRhZ25hbWVcJCIKLSAgcmVfZW5kY2Y9Il4jICMjIyBFTkQgTElCVE9PTCBUQUcgQ09ORklHOiAkdGFnbmFtZVwkIgotICBzZWRfZXh0cmFjdGNmPSIvJHJlX2JlZ2luY2YvLC8kcmVfZW5kY2YvcCIKKyAgICByZV9iZWdpbmNmPSJeIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkdGFnbmFtZVwkIgorICAgIHJlX2VuZGNmPSJeIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogJHRhZ25hbWVcJCIKKyAgICBzZWRfZXh0cmFjdGNmPS8kcmVfYmVnaW5jZi8sLyRyZV9lbmRjZi9wCiAKLSAgIyBWYWxpZGF0ZSB0YWduYW1lLgotICBjYXNlICR0YWduYW1lIGluCi0gICAgKlshLV9BLVphLXowLTksL10qKQotICAgICAgZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCB0YWcgbmFtZTogJHRhZ25hbWUiCi0gICAgICA7OwotICBlc2FjCisgICAgIyBWYWxpZGF0ZSB0YWduYW1lLgorICAgIGNhc2UgJHRhZ25hbWUgaW4KKyAgICAgICpbIS1fQS1aYS16MC05LC9dKikKKyAgICAgICAgZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCB0YWcgbmFtZTogJHRhZ25hbWUiCisgICAgICAgIDs7CisgICAgZXNhYwogCi0gICMgRG9uJ3QgdGVzdCBmb3IgdGhlICJkZWZhdWx0IiBDIHRhZywgYXMgd2Uga25vdyBpdCdzCi0gICMgdGhlcmUgYnV0IG5vdCBzcGVjaWFsbHkgbWFya2VkLgotICBjYXNlICR0YWduYW1lIGluCi0gICAgQ0MpIDs7CisgICAgIyBEb24ndCB0ZXN0IGZvciB0aGUgImRlZmF1bHQiIEMgdGFnLCBhcyB3ZSBrbm93IGl0J3MKKyAgICAjIHRoZXJlIGJ1dCBub3Qgc3BlY2lhbGx5IG1hcmtlZC4KKyAgICBjYXNlICR0YWduYW1lIGluCisgICAgICAgIENDKSA7OwogICAgICopCi0gICAgICBpZiAkR1JFUCAiJHJlX2JlZ2luY2YiICIkcHJvZ3BhdGgiID4vZGV2L251bGwgMj4mMTsgdGhlbgotCXRhZ2xpc3Q9IiR0YWdsaXN0ICR0YWduYW1lIgorICAgICAgICBpZiAkR1JFUCAiJHJlX2JlZ2luY2YiICIkcHJvZ3BhdGgiID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgdGFnbGlzdD0iJHRhZ2xpc3QgJHRhZ25hbWUiCiAKLQkjIEV2YWx1YXRlIHRoZSBjb25maWd1cmF0aW9uLiAgQmUgY2FyZWZ1bCB0byBxdW90ZSB0aGUgcGF0aAotCSMgYW5kIHRoZSBzZWQgc2NyaXB0LCB0byBhdm9pZCBzcGxpdHRpbmcgb24gd2hpdGVzcGFjZSwgYnV0Ci0JIyBhbHNvIGRvbid0IHVzZSBub24tcG9ydGFibGUgcXVvdGVzIHdpdGhpbiBiYWNrcXVvdGVzIHdpdGhpbgotCSMgcXVvdGVzIHdlIGhhdmUgdG8gZG8gaXQgaW4gMiBzdGVwczoKLQlleHRyYWN0ZWRjZj1gJFNFRCAtbiAtZSAiJHNlZF9leHRyYWN0Y2YiIDwgIiRwcm9ncGF0aCJgCi0JZXZhbCAiJGV4dHJhY3RlZGNmIgotICAgICAgZWxzZQotCWZ1bmNfZXJyb3IgImlnbm9yaW5nIHVua25vd24gdGFnICR0YWduYW1lIgotICAgICAgZmkKLSAgICAgIDs7Ci0gIGVzYWMKKwkgICMgRXZhbHVhdGUgdGhlIGNvbmZpZ3VyYXRpb24uICBCZSBjYXJlZnVsIHRvIHF1b3RlIHRoZSBwYXRoCisJICAjIGFuZCB0aGUgc2VkIHNjcmlwdCwgdG8gYXZvaWQgc3BsaXR0aW5nIG9uIHdoaXRlc3BhY2UsIGJ1dAorCSAgIyBhbHNvIGRvbid0IHVzZSBub24tcG9ydGFibGUgcXVvdGVzIHdpdGhpbiBiYWNrcXVvdGVzIHdpdGhpbgorCSAgIyBxdW90ZXMgd2UgaGF2ZSB0byBkbyBpdCBpbiAyIHN0ZXBzOgorCSAgZXh0cmFjdGVkY2Y9YCRTRUQgLW4gLWUgIiRzZWRfZXh0cmFjdGNmIiA8ICIkcHJvZ3BhdGgiYAorCSAgZXZhbCAiJGV4dHJhY3RlZGNmIgorICAgICAgICBlbHNlCisJICBmdW5jX2Vycm9yICJpZ25vcmluZyB1bmtub3duIHRhZyAkdGFnbmFtZSIKKyAgICAgICAgZmkKKyAgICAgICAgOzsKKyAgICBlc2FjCiB9CiAKKwogIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCiAjIHJlbGVhc2Ugb2YgbGlidG9vbC4KIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaCAoKQogewotICBpZiB0ZXN0ICIkcGFja2FnZV9yZXZpc2lvbiIgIT0gIiRtYWNyb19yZXZpc2lvbiI7IHRoZW4KLSAgICBpZiB0ZXN0ICIkVkVSU0lPTiIgIT0gIiRtYWNyb192ZXJzaW9uIjsgdGhlbgotICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCi0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCisgICAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkVkVSU0lPTiIgIT0gIiRtYWNyb192ZXJzaW9uIjsgdGhlbgorICAgICAgICBpZiB0ZXN0IC16ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKyAgICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgogJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQogJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIGFuIG9sZGVyIHJlbGVhc2UuCiAkcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCiAkcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCiBfTFRfRU9GCi0gICAgICBlbHNlCi0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCisgICAgICAgIGVsc2UKKyAgICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgogJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQogJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tICRQQUNLQUdFICRtYWNyb192ZXJzaW9uLgogJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgogJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgogX0xUX0VPRgotICAgICAgZmkKLSAgICBlbHNlCi0gICAgICBjYXQgPiYyIDw8X0xUX0VPRgorICAgICAgICBmaQorICAgICAgZWxzZQorICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgogJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCiAkcHJvZ25hbWU6IGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSByZXZpc2lvbiAkbWFjcm9fcmV2aXNpb24uCiAkcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uCiAkcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCiBfTFRfRU9GCi0gICAgZmkKKyAgICAgIGZpCiAKLSAgICBleGl0ICRFWElUX01JU01BVENICi0gIGZpCisgICAgICBleGl0ICRFWElUX01JU01BVENICisgICAgZmkKIH0KIAogCi0jIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKLWNhc2UgJDEgaW4KLWNsZWFufGNsZWF8Y2xlfGNsKQotICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0Ci0gIDs7Ci1jb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQotICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKLSAgOzsKLWV4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCi0gIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAotICA7OwotZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCi0gIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0gIDs7Ci1pbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQotICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLSAgOzsKLWxpbmt8bGlufGxpfGwpCi0gIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAotICA7OwotdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCi0gIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0gIDs7Ci1lc2FjCi0KLQotCi0jIE9wdGlvbiBkZWZhdWx0czoKLW9wdF9kZWJ1Zz06Ci1vcHRfZHJ5X3J1bj1mYWxzZQotb3B0X2NvbmZpZz1mYWxzZQotb3B0X3ByZXNlcnZlX2R1cF9kZXBzPWZhbHNlCi1vcHRfZmVhdHVyZXM9ZmFsc2UKLW9wdF9maW5pc2g9ZmFsc2UKLW9wdF9oZWxwPWZhbHNlCi1vcHRfaGVscF9hbGw9ZmFsc2UKLW9wdF9zaWxlbnQ9Ogotb3B0X3dhcm5pbmc9Ogotb3B0X3ZlcmJvc2U9Ogotb3B0X3NpbGVudD1mYWxzZQotb3B0X3ZlcmJvc2U9ZmFsc2UKLQotCi0jIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbiB0aGUKLSMgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYC0tdmVyc2lvbicgaGFwcGVuIGFzIHF1aWNrbHkgYXMgd2UgY2FuLgorIyBsaWJ0b29sX29wdGlvbnNfcHJlcCBbQVJHXS4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBQcmVwYXJhdGlvbiBmb3Igb3B0aW9ucyBwYXJzZWQgYnkgbGlidG9vbC4KK2xpYnRvb2xfb3B0aW9uc19wcmVwICgpCiB7Ci0gICMgdGhpcyBqdXN0IGVhc2VzIGV4aXQgaGFuZGxpbmcKLSAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KLSAgICBvcHQ9IiQxIgotICAgIHNoaWZ0Ci0gICAgY2FzZSAkb3B0IGluCi0gICAgICAtLWRlYnVnfC14KQlvcHRfZGVidWc9J3NldCAteCcKLQkJCWZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKLQkJCSRvcHRfZGVidWcKLQkJCTs7Ci0gICAgICAtLWRyeS1ydW58LS1kcnlydW58LW4pCi0JCQlvcHRfZHJ5X3J1bj06Ci0JCQk7OwotICAgICAgLS1jb25maWcpCi0JCQlvcHRfY29uZmlnPToKLWZ1bmNfY29uZmlnCi0JCQk7OwotICAgICAgLS1kbG9wZW58LWRsb3BlbikKLQkJCW9wdGFyZz0iJDEiCi0JCQlvcHRfZGxvcGVuPSIke29wdF9kbG9wZW4rJG9wdF9kbG9wZW4KLX0kb3B0YXJnIgotCQkJc2hpZnQKLQkJCTs7Ci0gICAgICAtLXByZXNlcnZlLWR1cC1kZXBzKQotCQkJb3B0X3ByZXNlcnZlX2R1cF9kZXBzPToKLQkJCTs7Ci0gICAgICAtLWZlYXR1cmVzKQotCQkJb3B0X2ZlYXR1cmVzPToKLWZ1bmNfZmVhdHVyZXMKLQkJCTs7Ci0gICAgICAtLWZpbmlzaCkKLQkJCW9wdF9maW5pc2g9Ogotc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAotCQkJOzsKLSAgICAgIC0taGVscCkKLQkJCW9wdF9oZWxwPToKLQkJCTs7Ci0gICAgICAtLWhlbHAtYWxsKQotCQkJb3B0X2hlbHBfYWxsPToKLW9wdF9oZWxwPSc6IGhlbHAtYWxsJwotCQkJOzsKLSAgICAgIC0tbW9kZSkKLQkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhawotCQkJb3B0YXJnPSIkMSIKLQkJCW9wdF9tb2RlPSIkb3B0YXJnIgotY2FzZSAkb3B0YXJnIGluCi0gICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6Ci0gIGNsZWFufGNvbXBpbGV8ZXhlY3V0ZXxmaW5pc2h8aW5zdGFsbHxsaW5rfHJlbGlua3x1bmluc3RhbGwpIDs7CisgICAgJGRlYnVnX21vZGUKIAotICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKLSAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKLSAgICAgZXhpdF9jbWQ9ZXhpdAotICAgICBicmVhawotICAgICA7OwotZXNhYwotCQkJc2hpZnQKLQkJCTs7Ci0gICAgICAtLW5vLXNpbGVudHwtLW5vLXF1aWV0KQotCQkJb3B0X3NpbGVudD1mYWxzZQotZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0JCQk7OwotICAgICAgLS1uby13YXJuaW5nfC0tbm8td2FybikKLQkJCW9wdF93YXJuaW5nPWZhbHNlCi1mdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKLQkJCTs7Ci0gICAgICAtLW5vLXZlcmJvc2UpCi0JCQlvcHRfdmVyYm9zZT1mYWxzZQotZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0JCQk7OwotICAgICAgLS1zaWxlbnR8LS1xdWlldCkKLQkJCW9wdF9zaWxlbnQ9OgotZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0gICAgICAgIG9wdF92ZXJib3NlPWZhbHNlCi0JCQk7OwotICAgICAgLS12ZXJib3NlfC12KQotCQkJb3B0X3ZlcmJvc2U9OgotZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi1vcHRfc2lsZW50PWZhbHNlCi0JCQk7OwotICAgICAgLS10YWcpCi0JCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKLQkJCW9wdGFyZz0iJDEiCi0JCQlvcHRfdGFnPSIkb3B0YXJnIgotZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQgJG9wdGFyZyIKLWZ1bmNfZW5hYmxlX3RhZyAiJG9wdGFyZyIKLQkJCXNoaWZ0Ci0JCQk7OworICAgICMgT3B0aW9uIGRlZmF1bHRzOgorICAgIG9wdF9jb25maWc9ZmFsc2UKKyAgICBvcHRfZGxvcGVuPQorICAgIG9wdF9kcnlfcnVuPWZhbHNlCisgICAgb3B0X2hlbHA9ZmFsc2UKKyAgICBvcHRfbW9kZT0KKyAgICBvcHRfcHJlc2VydmVfZHVwX2RlcHM9ZmFsc2UKKyAgICBvcHRfcXVpZXQ9ZmFsc2UKIAotICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQk7OwotICAgICAgLS1oZWxwKQkJZnVuY19oZWxwCQkJCTs7Ci0gICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQk7OworICAgIG5vbm9wdD0KKyAgICBwcmVzZXJ2ZV9hcmdzPQogCi0gICAgICAjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zOgotICAgICAgLS0qPSopCi0JCQlmdW5jX3NwbGl0X2xvbmdfb3B0ICIkb3B0IgotCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIiAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIiAkezErIiRAIn0KLQkJCXNoaWZ0Ci0JCQk7OwotCi0gICAgICAjIFNlcGFyYXRlIG5vbi1hcmd1bWVudCBzaG9ydCBvcHRpb25zOgotICAgICAgLVw/KnwtaCp8LW4qfC12KikKLQkJCWZ1bmNfc3BsaXRfc2hvcnRfb3B0ICIkb3B0IgotCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSIgIi0kZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIiAkezErIiRAIn0KLQkJCXNoaWZ0Ci0JCQk7OwotCi0gICAgICAtLSkJCWJyZWFrCQkJCQk7OwotICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIgOzsKLSAgICAgICopCQlzZXQgZHVtbXkgIiRvcHQiICR7MSsiJEAifTsJc2hpZnQ7IGJyZWFrICA7OworICAgICMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAorICAgIGNhc2UgJDEgaW4KKyAgICBjbGVhbnxjbGVhfGNsZXxjbCkKKyAgICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKKyAgICAgIDs7CisgICAgY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKKyAgICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAorICAgICAgOzsKKyAgICBleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQorICAgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0CisgICAgICA7OworICAgIGZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQorICAgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKyAgICAgIDs7CisgICAgaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKKyAgICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorICAgICAgOzsKKyAgICBsaW5rfGxpbnxsaXxsKQorICAgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0CisgICAgICA7OworICAgIHVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQorICAgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKyAgICAgIDs7CiAgICAgZXNhYwotICBkb25lCiAKLSAgIyBWYWxpZGF0ZSBvcHRpb25zOgotCi0gICMgc2F2ZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50Ci0gIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgotICAgIG5vbm9wdD0iJG9wdCIKLSAgICBzaGlmdAotICBmaQotCi0gICMgcHJlc2VydmUgLS1kZWJ1ZwotICB0ZXN0ICIkb3B0X2RlYnVnIiA9IDogfHwgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiIC0tZGVidWciCi0KLSAgY2FzZSAkaG9zdCBpbgotICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyopCi0gICAgICAjIGRvbid0IGVsaW1pbmF0ZSBkdXBsaWNhdGlvbnMgaW4gJHBvc3RkZXBzIGFuZCAkcHJlZGVwcwotICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06Ci0gICAgICA7OwotICAgICopCi0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfcHJlc2VydmVfZHVwX2RlcHMKLSAgICAgIDs7Ci0gIGVzYWMKLQotICAkb3B0X2hlbHAgfHwgewotICAgICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKLSAgICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLQotICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgotICAgICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgotICAgIGZpCi0KLSAgICAjIERhcndpbiBzdWNrcwotICAgIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCi0KLSAgICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgotICAgIGlmIHRlc3QgLW4gIiRvcHRfZGxvcGVuIiAmJiB0ZXN0ICIkb3B0X21vZGUiICE9IGV4ZWN1dGU7IHRoZW4KLSAgICAgIGZ1bmNfZXJyb3IgInVucmVjb2duaXplZCBvcHRpb24gXGAtZGxvcGVuJyIKLSAgICAgICRFQ0hPICIkaGVscCIgMT4mMgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgZmkKLQotICAgICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KLSAgICBnZW5lcmljX2hlbHA9IiRoZWxwIgotICAgIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRvcHRfbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgotICB9Ci0KLQotICAjIEJhaWwgaWYgdGhlIG9wdGlvbnMgd2VyZSBzY3Jld2VkCi0gICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCisgICAgIyBQYXNzIGJhY2sgdGhlIGxpc3Qgb2Ygb3B0aW9ucy4KKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICR7MSsiJEAifQorICAgIGxpYnRvb2xfb3B0aW9uc19wcmVwX3Jlc3VsdD0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKIH0KK2Z1bmNfYWRkX2hvb2sgZnVuY19vcHRpb25zX3ByZXAgbGlidG9vbF9vcHRpb25zX3ByZXAKIAogCisjIGxpYnRvb2xfcGFyc2Vfb3B0aW9ucyBbQVJHXS4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJvdmlkZSBoYW5kbGluZyBmb3IgbGlidG9vbCBzcGVjaWZpYyBvcHRpb25zLgorbGlidG9vbF9wYXJzZV9vcHRpb25zICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgIyBQZXJmb3JtIG91ciBvd24gbG9vcCB0byBjb25zdW1lIGFzIG1hbnkgb3B0aW9ucyBhcyBwb3NzaWJsZSBpbgorICAgICMgZWFjaCBpdGVyYXRpb24uCisgICAgd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KKyAgICAgIF9HX29wdD0kMQorICAgICAgc2hpZnQKKyAgICAgIGNhc2UgJF9HX29wdCBpbgorICAgICAgICAtLWRyeS1ydW58LS1kcnlydW58LW4pCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRfZHJ5X3J1bj06CisgICAgICAgICAgICAgICAgICAgICAgICA7OworCisgICAgICAgIC0tY29uZmlnKSAgICAgICBmdW5jX2NvbmZpZyA7OworCisgICAgICAgIC0tZGxvcGVufC1kbG9wZW4pCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRfZGxvcGVuPSIke29wdF9kbG9wZW4rJG9wdF9kbG9wZW4KK30kMSIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICA7OworCisgICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMpCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRfcHJlc2VydmVfZHVwX2RlcHM9OiA7OworCisgICAgICAgIC0tZmVhdHVyZXMpICAgICBmdW5jX2ZlYXR1cmVzIDs7CisKKyAgICAgICAgLS1maW5pc2gpICAgICAgIHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQgOzsKKworICAgICAgICAtLWhlbHApICAgICAgICAgb3B0X2hlbHA9OiA7OworCisgICAgICAgIC0taGVscC1hbGwpICAgICBvcHRfaGVscD0nOiBoZWxwLWFsbCcgOzsKKworICAgICAgICAtLW1vZGUpICAgICAgICAgdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkX0dfb3B0ICYmIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRfbW9kZT0kMQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkMSBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnxjb21waWxlfGV4ZWN1dGV8ZmluaXNofGluc3RhbGx8bGlua3xyZWxpbmt8dW5pbnN0YWxsKSA7OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkX0dfb3B0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0X2NtZD1leGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAgICAgICAgICAgICAgOzsKKworICAgICAgICAtLW5vLXNpbGVudHwtLW5vLXF1aWV0KQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0X3F1aWV0PWZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJF9HX29wdCIKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7CisKKyAgICAgICAgLS1uby13YXJuaW5nc3wtLW5vLXdhcm5pbmd8LS1uby13YXJuKQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0X3dhcm5pbmc9ZmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkX0dfb3B0IgorICAgICAgICAgICAgICAgICAgICAgICAgOzsKKworICAgICAgICAtLW5vLXZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRfdmVyYm9zZT1mYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRfR19vcHQiCisgICAgICAgICAgICAgICAgICAgICAgICA7OworCisgICAgICAgIC0tc2lsZW50fC0tcXVpZXQpCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRfcXVpZXQ9OgorICAgICAgICAgICAgICAgICAgICAgICAgb3B0X3ZlcmJvc2U9ZmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkX0dfb3B0IgorICAgICAgICAgICAgICAgICAgICAgICAgOzsKKworICAgICAgICAtLXRhZykgICAgICAgICAgdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkX0dfb3B0ICYmIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRfdGFnPSQxCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJF9HX29wdCAkMSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNfZW5hYmxlX3RhZyAiJDEiCisgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAgICAgICAgICAgICAgOzsKKworICAgICAgICAtLXZlcmJvc2V8LXYpICAgb3B0X3F1aWV0PWZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBvcHRfdmVyYm9zZT06CisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJF9HX29wdCIKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7CisKKwkjIEFuIG9wdGlvbiBub3QgaGFuZGxlZCBieSB0aGlzIGhvb2sgZnVuY3Rpb246CisgICAgICAgICopCQlzZXQgZHVtbXkgIiRfR19vcHQiICR7MSsiJEAifTsJc2hpZnQ7IGJyZWFrICA7OworICAgICAgZXNhYworICAgIGRvbmUKKworCisgICAgIyBzYXZlIG1vZGlmaWVkIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBmb3IgY2FsbGVyCisgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAkezErIiRAIn0KKyAgICBsaWJ0b29sX3BhcnNlX29wdGlvbnNfcmVzdWx0PSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAorfQorZnVuY19hZGRfaG9vayBmdW5jX3BhcnNlX29wdGlvbnMgbGlidG9vbF9wYXJzZV9vcHRpb25zCisKKworCisjIGxpYnRvb2xfdmFsaWRhdGVfb3B0aW9ucyBbQVJHXS4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUGVyZm9ybSBhbnkgc2FuaXR5IGNoZWNrcyBvbiBvcHRpb24gc2V0dGluZ3MgYW5kL29yIHVuY29uc3VtZWQKKyMgYXJndW1lbnRzLgorbGlidG9vbF92YWxpZGF0ZV9vcHRpb25zICgpCit7CisgICAgIyBzYXZlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQKKyAgICBpZiB0ZXN0IDAgLWx0ICQjOyB0aGVuCisgICAgICBub25vcHQ9JDEKKyAgICAgIHNoaWZ0CisgICAgZmkKKworICAgICMgcHJlc2VydmUgLS1kZWJ1ZworICAgIHRlc3QgOiA9ICIkZGVidWdfY21kIiB8fCBmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgLS1kZWJ1ZyIKKworICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgICMgU29sYXJpczIgYWRkZWQgdG8gZml4IGh0dHA6Ly9kZWJidWdzLmdudS5vcmcvY2dpL2J1Z3JlcG9ydC5jZ2k/YnVnPTE2NDUyCisgICAgICAjIHNlZSBhbHNvOiBodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTU5Nzg4CisgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqIHwgKnNvbGFyaXMyKiB8ICpvczIqKQorICAgICAgICAjIGRvbid0IGVsaW1pbmF0ZSBkdXBsaWNhdGlvbnMgaW4gJHBvc3RkZXBzIGFuZCAkcHJlZGVwcworICAgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPToKKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcworICAgICAgICA7OworICAgIGVzYWMKKworICAgICRvcHRfaGVscCB8fCB7CisgICAgICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6CisgICAgICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKworICAgICAgdGVzdCB5ZXMgIT0gIiRidWlsZF9saWJ0b29sX2xpYnMiIFwKKyAgICAgICAgJiYgdGVzdCB5ZXMgIT0gIiRidWlsZF9vbGRfbGlicyIgXAorICAgICAgICAmJiBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCisKKyAgICAgICMgRGFyd2luIHN1Y2tzCisgICAgICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgorCisgICAgICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgorICAgICAgaWYgdGVzdCAtbiAiJG9wdF9kbG9wZW4iICYmIHRlc3QgZXhlY3V0ZSAhPSAiJG9wdF9tb2RlIjsgdGhlbgorICAgICAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uICctZGxvcGVuJyIKKyAgICAgICAgJEVDSE8gIiRoZWxwIiAxPiYyCisgICAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgZmkKKworICAgICAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgorICAgICAgZ2VuZXJpY19oZWxwPSRoZWxwCisgICAgICBoZWxwPSJUcnkgJyRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRvcHRfbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorICAgIH0KKworICAgICMgUGFzcyBiYWNrIHRoZSB1bnBhcnNlZCBhcmd1bWVudCBsaXN0CisgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAkezErIiRAIn0KKyAgICBsaWJ0b29sX3ZhbGlkYXRlX29wdGlvbnNfcmVzdWx0PSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAorfQorZnVuY19hZGRfaG9vayBmdW5jX3ZhbGlkYXRlX29wdGlvbnMgbGlidG9vbF92YWxpZGF0ZV9vcHRpb25zCisKKworIyBQcm9jZXNzIG9wdGlvbnMgYXMgZWFybHkgYXMgcG9zc2libGUgc28gdGhhdCAtLWhlbHAgYW5kIC0tdmVyc2lvbgorIyBjYW4gcmV0dXJuIHF1aWNrbHkuCitmdW5jX29wdGlvbnMgJHsxKyIkQCJ9CitldmFsIHNldCBkdW1teSAiJGZ1bmNfb3B0aW9uc19yZXN1bHQiOyBzaGlmdAorCiAKIAogIyMgLS0tLS0tLS0tLS0gIyMKICMjICAgIE1haW4uICAgICMjCiAjIyAtLS0tLS0tLS0tLSAjIwogCittYWdpYz0nJSUlTUFHSUMgdmFyaWFibGUlJSUnCittYWdpY19leGU9JyUlJU1BR0lDIEVYRSB2YXJpYWJsZSUlJScKKworIyBHbG9iYWwgdmFyaWFibGVzLgorZXh0cmFjdGVkX2FyY2hpdmVzPQorZXh0cmFjdGVkX3NlcmlhbD0wCisKKyMgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gYW55IG9mIHRoZSBhY3Rpb25zLCB0aGUgY29tbWFuZCBpbiBpdAorIyB3aWxsIGJlIGV4ZWNlZCBhdCB0aGUgZW5kLiAgVGhpcyBwcmV2ZW50cyBoZXJlLWRvY3VtZW50cyBmcm9tIGJlaW5nCisjIGxlZnQgb3ZlciBieSBzaGVsbHMuCitleGVjX2NtZD0KKworCisjIEEgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gcHJpbnQgYnVpbHRpbiBvciBwcmludGYuCitmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKK3sKKyAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKKyQxCitfTFRFQ0hPX0VPRicKK30KKworIyBmdW5jX2dlbmVyYXRlZF9ieV9saWJ0b29sCisjIFRydWUgaWZmIHN0ZGluIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBMaWJ0b29sLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkKKyMgYSBiYXNpYyBzYW5pdHkgY2hlY2s7IGl0IHdpbGwgaGFyZGx5IGZsdXNoIG91dCBkZXRlcm1pbmVkIGltcG9zdGVycy4KK2Z1bmNfZ2VuZXJhdGVkX2J5X2xpYnRvb2xfcCAoKQoreworICAkR1JFUCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiID4gL2Rldi9udWxsIDI+JjEKK30KKwogIyBmdW5jX2xhbGliX3AgZmlsZQotIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCBgLmxhJyBsaWJyYXJ5IG9yIGAubG8nIG9iamVjdCBmaWxlLgorIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCAnLmxhJyBsaWJyYXJ5IG9yICcubG8nIG9iamVjdCBmaWxlLgogIyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYSBiYXNpYyBzYW5pdHkgY2hlY2s7IGl0IHdpbGwgaGFyZGx5IGZsdXNoIG91dAogIyBkZXRlcm1pbmVkIGltcG9zdGVycy4KIGZ1bmNfbGFsaWJfcCAoKQogewogICAgIHRlc3QgLWYgIiQxIiAmJgotICAgICAgJFNFRCAtZSA0cSAiJDEiIDI+L2Rldi9udWxsIFwKLSAgICAgICAgfCAkR1JFUCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICRTRUQgLWUgNHEgIiQxIiAyPi9kZXYvbnVsbCB8IGZ1bmNfZ2VuZXJhdGVkX2J5X2xpYnRvb2xfcAogfQogCiAjIGZ1bmNfbGFsaWJfdW5zYWZlX3AgZmlsZQotIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCBgLmxhJyBsaWJyYXJ5IG9yIGAubG8nIG9iamVjdCBmaWxlLgorIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCAnLmxhJyBsaWJyYXJ5IG9yICcubG8nIG9iamVjdCBmaWxlLgogIyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIHNhbWUgY2hlY2sgYXMgZnVuY19sYWxpYl9wIHdpdGhvdXQKICMgcmVzb3J0aW5nIHRvIGV4dGVybmFsIHByb2dyYW1zLiAgVG8gdGhpcyBlbmQsIGl0IHJlZGlyZWN0cyBzdGRpbiBhbmQKICMgY2xvc2VzIGl0IGFmdGVyd2FyZHMsIHdpdGhvdXQgc2F2aW5nIHRoZSBvcmlnaW5hbCBmaWxlIGRlc2NyaXB0b3IuCiAjIEFzIGEgc2FmZXR5IG1lYXN1cmUsIHVzZSBpdCBvbmx5IHdoZXJlIGEgbmVnYXRpdmUgcmVzdWx0IHdvdWxkIGJlCi0jIGZhdGFsIGFueXdheS4gIFdvcmtzIGlmIGBmaWxlJyBkb2VzIG5vdCBleGlzdC4KKyMgZmF0YWwgYW55d2F5LiAgV29ya3MgaWYgJ2ZpbGUnIGRvZXMgbm90IGV4aXN0LgogZnVuY19sYWxpYl91bnNhZmVfcCAoKQogewogICAgIGxhbGliX3A9bm8KQEAgLTEyNDksMTMgKzI1MjEsMTMgQEAKIAlmb3IgbGFsaWJfcF9sIGluIDEgMiAzIDQKIAlkbwogCSAgICByZWFkIGxhbGliX3BfbGluZQotCSAgICBjYXNlICIkbGFsaWJfcF9saW5lIiBpbgorCSAgICBjYXNlICRsYWxpYl9wX2xpbmUgaW4KIAkJXCNcIEdlbmVyYXRlZFwgYnlcICokUEFDS0FHRSogKSBsYWxpYl9wPXllczsgYnJlYWs7OwogCSAgICBlc2FjCiAJZG9uZQogCWV4ZWMgMDwmNSA1PCYtCiAgICAgZmkKLSAgICB0ZXN0ICIkbGFsaWJfcCIgPSB5ZXMKKyAgICB0ZXN0IHllcyA9ICIkbGFsaWJfcCIKIH0KIAogIyBmdW5jX2x0d3JhcHBlcl9zY3JpcHRfcCBmaWxlCkBAIC0xMjY0LDcgKzI1MzYsOCBAQAogIyBkZXRlcm1pbmVkIGltcG9zdGVycy4KIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdF9wICgpCiB7Ci0gICAgZnVuY19sYWxpYl9wICIkMSIKKyAgICB0ZXN0IC1mICIkMSIgJiYKKyAgICAgICRsdF90cnVuY2F0ZV9iaW4gPCAiJDEiIDI+L2Rldi9udWxsIHwgZnVuY19nZW5lcmF0ZWRfYnlfbGlidG9vbF9wCiB9CiAKICMgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wIGZpbGUKQEAgLTEyODksNyArMjU2Miw3IEBACiB7CiAgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgogICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKKyAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0kZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlcgogfQogCiAjIGZ1bmNfbHR3cmFwcGVyX3AgZmlsZQpAQCAtMTMwOCwxMSArMjU4MSwxMyBAQAogIyBGQUlMX0NNRCBtYXkgcmVhZC1hY2Nlc3MgdGhlIGN1cnJlbnQgY29tbWFuZCBpbiB2YXJpYWJsZSBDTUQhCiBmdW5jX2V4ZWN1dGVfY21kcyAoKQogewotICAgICRvcHRfZGVidWcKKyAgICAkZGVidWdfY21kCisKICAgICBzYXZlX2lmcz0kSUZTOyBJRlM9J34nCiAgICAgZm9yIGNtZCBpbiAkMTsgZG8KLSAgICAgIElGUz0kc2F2ZV9pZnMKKyAgICAgIElGUz0kc3AkbmwKICAgICAgIGV2YWwgY21kPVwiJGNtZFwiCisgICAgICBJRlM9JHNhdmVfaWZzCiAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGNtZCIgIiR7Mi06fSIKICAgICBkb25lCiAgICAgSUZTPSRzYXZlX2lmcwpAQCAtMTMyNCwxMCArMjU5OSwxMSBAQAogIyBOb3RlIHRoYXQgaXQgaXMgbm90IG5lY2Vzc2FyeSBvbiBjeWd3aW4vbWluZ3cgdG8gYXBwZW5kIGEgZG90IHRvCiAjIEZJTEUgZXZlbiBpZiBib3RoIEZJTEUgYW5kIEZJTEUuZXhlIGV4aXN0OiBhdXRvbWF0aWMtYXBwZW5kLS5leGUKICMgYmVoYXZpb3IgaGFwcGVucyBvbmx5IGZvciBleGVjKDMpLCBub3QgZm9yIG9wZW4oMikhICBBbHNvLCBzb3VyY2luZwotIyBgRklMRS4nIGRvZXMgbm90IHdvcmsgb24gY3lnd2luIG1hbmFnZWQgbW91bnRzLgorIyAnRklMRS4nIGRvZXMgbm90IHdvcmsgb24gY3lnd2luIG1hbmFnZWQgbW91bnRzLgogZnVuY19zb3VyY2UgKCkKIHsKLSAgICAkb3B0X2RlYnVnCisgICAgJGRlYnVnX2NtZAorCiAgICAgY2FzZSAkMSBpbgogICAgICovKiB8ICpcXCopCS4gIiQxIiA7OwogICAgICopCQkuICIuLyQxIiA7OwpAQCAtMTM1NCwxMCArMjYzMCwxMCBAQAogIyBzdG9yZSB0aGUgcmVzdWx0IGludG8gZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0LgogZnVuY19yZXBsYWNlX3N5c3Jvb3QgKCkKIHsKLSAgY2FzZSAiJGx0X3N5c3Jvb3Q6JDEiIGluCisgIGNhc2UgJGx0X3N5c3Jvb3Q6JDEgaW4KICAgPyo6IiRsdF9zeXNyb290IiopCiAgICAgZnVuY19zdHJpcG5hbWUgIiRsdF9zeXNyb290IiAnJyAiJDEiCi0gICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9Jz0nJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogICAgIDs7CiAgICopCiAgICAgIyBJbmNsdWRpbmcgbm8gc3lzcm9vdC4KQEAgLTEzNzQsNyArMjY1MCw4IEBACiAjIGFyZyBpcyB1c3VhbGx5IG9mIHRoZSBmb3JtICdnY2MgLi4uJwogZnVuY19pbmZlcl90YWcgKCkKIHsKLSAgICAkb3B0X2RlYnVnCisgICAgJGRlYnVnX2NtZAorCiAgICAgaWYgdGVzdCAtbiAiJGF2YWlsYWJsZV90YWdzIiAmJiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KICAgICAgIENDX3F1b3RlZD0KICAgICAgIGZvciBhcmcgaW4gJENDOyBkbwpAQCAtMTM5Myw3ICsyNjcwLDcgQEAKIAlmb3IgeiBpbiAkYXZhaWxhYmxlX3RhZ3M7IGRvCiAJICBpZiAkR1JFUCAiXiMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogJHokIiA8ICIkcHJvZ3BhdGgiID4gL2Rldi9udWxsOyB0aGVuCiAJICAgICMgRXZhbHVhdGUgdGhlIGNvbmZpZ3VyYXRpb24uCi0JICAgIGV2YWwgImAke1NFRH0gLW4gLWUgJy9eIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAnJHonJC8sL14jICMjIyBFTkQgTElCVE9PTCBUQUcgQ09ORklHOiAnJHonJC9wJyA8ICRwcm9ncGF0aGAiCisJICAgIGV2YWwgImAkU0VEIC1uIC1lICcvXiMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogJyR6JyQvLC9eIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogJyR6JyQvcCcgPCAkcHJvZ3BhdGhgIgogCSAgICBDQ19xdW90ZWQ9CiAJICAgIGZvciBhcmcgaW4gJENDOyBkbwogCSAgICAgICMgRG91YmxlLXF1b3RlIGFyZ3MgY29udGFpbmluZyBvdGhlciBzaGVsbCBtZXRhY2hhcmFjdGVycy4KQEAgLTE0MTgsNyArMjY5NSw3IEBACiAJIyBsaW5lIG9wdGlvbiBtdXN0IGJlIHVzZWQuCiAJaWYgdGVzdCAteiAiJHRhZ25hbWUiOyB0aGVuCiAJICBmdW5jX2VjaG8gInVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbiIKLQkgIGZ1bmNfZmF0YWxfZXJyb3IgInNwZWNpZnkgYSB0YWcgd2l0aCBcYC0tdGFnJyIKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgInNwZWNpZnkgYSB0YWcgd2l0aCAnLS10YWcnIgogIwllbHNlCiAjCSAgZnVuY192ZXJib3NlICJ1c2luZyAkdGFnbmFtZSB0YWdnZWQgY29uZmlndXJhdGlvbiIKIAlmaQpAQCAtMTQzNCwxNSArMjcxMSwxNSBAQAogIyBidXQgZG9uJ3QgY3JlYXRlIGl0IGlmIHdlJ3JlIGRvaW5nIGEgZHJ5IHJ1bi4KIGZ1bmNfd3JpdGVfbGlidG9vbF9vYmplY3QgKCkKIHsKLSAgICB3cml0ZV9saWJvYmo9JHsxfQotICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICB3cml0ZV9sb2JqPVwnJHsyfVwnCisgICAgd3JpdGVfbGlib2JqPSQxCisgICAgaWYgdGVzdCB5ZXMgPSAiJGJ1aWxkX2xpYnRvb2xfbGlicyI7IHRoZW4KKyAgICAgIHdyaXRlX2xvYmo9XCckMlwnCiAgICAgZWxzZQogICAgICAgd3JpdGVfbG9iaj1ub25lCiAgICAgZmkKIAotICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KLSAgICAgIHdyaXRlX29sZG9iaj1cJyR7M31cJworICAgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9vbGRfbGlicyI7IHRoZW4KKyAgICAgIHdyaXRlX29sZG9iaj1cJyQzXCcKICAgICBlbHNlCiAgICAgICB3cml0ZV9vbGRvYmo9bm9uZQogICAgIGZpCkBAIC0xNDUwLDcgKzI3MjcsNyBAQAogICAgICRvcHRfZHJ5X3J1biB8fCB7CiAgICAgICBjYXQgPiR7d3JpdGVfbGlib2JqfVQgPDxFT0YKICMgJHdyaXRlX2xpYm9iaiAtIGEgbGlidG9vbCBvYmplY3QgZmlsZQotIyBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OCisjIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFKSAkVkVSU0lPTgogIwogIyBQbGVhc2UgRE8gTk9UIGRlbGV0ZSB0aGlzIGZpbGUhCiAjIEl0IGlzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyB0aGUgbGlicmFyeS4KQEAgLTE0NjIsNyArMjczOSw3IEBACiBub25fcGljX29iamVjdD0kd3JpdGVfb2xkb2JqCiAKIEVPRgotICAgICAgJE1WICIke3dyaXRlX2xpYm9ian1UIiAiJHt3cml0ZV9saWJvYmp9IgorICAgICAgJE1WICIke3dyaXRlX2xpYm9ian1UIiAiJHdyaXRlX2xpYm9iaiIKICAgICB9CiB9CiAKQEAgLTE0ODIsOCArMjc1OSw5IEBACiAjIGJlIGVtcHR5IG9uIGVycm9yIChvciB3aGVuIEFSRyBpcyBlbXB0eSkKIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgKCkKIHsKLSAgJG9wdF9kZWJ1ZwotICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJDEiCisgICRkZWJ1Z19jbWQKKworICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0kMQogICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KICAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvIGVycm9yIGNvZGUsIHNvIHdlCiAgICAgIyBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZiBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUKQEAgLTE0OTEsOSArMjc2OSw5IEBACiAgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoIGVycm9yIGNvZGUgb2YKICAgICAjIHplcm8gQU5EIG5vbi1lbXB0eSBzdGRvdXQsIHdoaWNoIGV4cGxhaW5zIHRoZSBvZGQgY29uc3RydWN0aW9uOgogICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAotICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wfSI7IHRoZW4KKyAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wIjsgdGhlbgogICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9YCRFQ0hPICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXAiIHwKLSAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorICAgICAgICAkU0VEIC1lICIkc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCiAgICAgZWxzZQogICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9CiAgICAgZmkKQEAgLTE1MTQsMTggKzI3OTIsMTkgQEAKICMgYXJlIGNvbnZlcnRpYmxlLCB0aGVuIHRoZSByZXN1bHQgbWF5IGJlIGVtcHR5LgogZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAoKQogewotICAkb3B0X2RlYnVnCisgICRkZWJ1Z19jbWQKKwogICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRocywgb25seSBmaWxlIG5hbWVzCi0gIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIiCisgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PQogICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KICAgICBvbGRJRlM9JElGUwogICAgIElGUz06CiAgICAgZm9yIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiBpbiAkMTsgZG8KICAgICAgIElGUz0kb2xkSUZTCiAgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIgotICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IiA7IHRoZW4KKyAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCI7IHRoZW4KICAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IjsgdGhlbgotICAgICAgICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgICAgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9JGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0CiAgICAgICAgIGVsc2UKICAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCAiOyRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKICAgICAgICAgZmkKQEAgLTE1NTQsNyArMjgzMyw4IEBACiAjIGVudmlyb25tZW50IHZhcmlhYmxlOyBkbyBub3QgcHV0IGl0IGluICRQQVRILgogZnVuY19jeWdwYXRoICgpCiB7Ci0gICRvcHRfZGVidWcKKyAgJGRlYnVnX2NtZAorCiAgIGlmIHRlc3QgLW4gIiRMVF9DWUdQQVRIIiAmJiB0ZXN0IC1mICIkTFRfQ1lHUEFUSCI7IHRoZW4KICAgICBmdW5jX2N5Z3BhdGhfcmVzdWx0PWAkTFRfQ1lHUEFUSCAiJEAiIDI+L2Rldi9udWxsYAogICAgIGlmIHRlc3QgIiQ/IiAtbmUgMDsgdGhlbgpAQCAtMTU2Myw3ICsyODQzLDcgQEAKICAgICBmaQogICBlbHNlCiAgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KLSAgICBmdW5jX2Vycm9yICJMVF9DWUdQQVRIIGlzIGVtcHR5IG9yIHNwZWNpZmllcyBub24tZXhpc3RlbnQgZmlsZTogXGAkTFRfQ1lHUEFUSCciCisgICAgZnVuY19lcnJvciAiTFRfQ1lHUEFUSCBpcyBlbXB0eSBvciBzcGVjaWZpZXMgbm9uLWV4aXN0ZW50IGZpbGU6ICckTFRfQ1lHUEFUSCciCiAgIGZpCiB9CiAjZW5kOiBmdW5jX2N5Z3BhdGgKQEAgLTE1NzQsMTAgKzI4NTQsMTEgQEAKICMgcmVzdWx0IGluIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdC4KIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICgpCiB7Ci0gICRvcHRfZGVidWcKKyAgJGRlYnVnX2NtZAorCiAgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAogICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQ9YCggY21kIC8vYyBlY2hvICIkMSIgKSAyPi9kZXYvbnVsbCB8Ci0gICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRzZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKIH0KICNlbmQ6IGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyCiAKQEAgLTE1ODgsMTMgKzI4NjksMTQgQEAKICMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIEFSRzEpLgogZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgKCkKIHsKLSAgJG9wdF9kZWJ1ZwotICBpZiB0ZXN0IC16ICIkMiIgJiYgdGVzdCAtbiAiJDEiIDsgdGhlbgorICAkZGVidWdfY21kCisKKyAgaWYgdGVzdCAteiAiJDIiICYmIHRlc3QgLW4gIiQxIjsgdGhlbgogICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBmaWxlIG5hbWUgY29ycmVzcG9uZGluZyB0byIKLSAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgorICAgIGZ1bmNfZXJyb3IgIiAgJyQxJyIKICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKICAgICAjIEZhbGxiYWNrOgotICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSQxCiAgIGZpCiB9CiAjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjawpAQCAtMTYwNiwxMCArMjg4OCwxMSBAQAogIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gYSBzaW1wbGlzdGljIGZhbGxiYWNrIHZhbHVlIChzZWUgYmVsb3cpLgogZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgKCkKIHsKLSAgJG9wdF9kZWJ1ZworICAkZGVidWdfY21kCisKICAgaWYgdGVzdCAteiAiJDQiICYmIHRlc3QgLW4gIiQzIjsgdGhlbgogICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgotICAgIGZ1bmNfZXJyb3IgIiAgXGAkMyciCisgICAgZnVuY19lcnJvciAiICAnJDMnIgogICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgogICAgICMgRmFsbGJhY2suICBUaGlzIGlzIGEgZGVsaWJlcmF0ZWx5IHNpbXBsaXN0aWMgImNvbnZlcnNpb24iIGFuZAogICAgICMgc2hvdWxkIG5vdCBiZSAiaW1wcm92ZWQiLiAgU2VlIGxpYnRvb2wuaW5mby4KQEAgLTE2MTgsNyArMjkwMSw3IEBACiAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiQzIiB8CiAgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnMiYAogICAgIGVsc2UKLSAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMiCisgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9JDMKICAgICBmaQogICBmaQogfQpAQCAtMTYzMCw5ICsyOTEzLDEwIEBACiAjIGFuZCBhcHBlbmRpbmcgUkVQTCBpZiBPUklHIG1hdGNoZXMgQkFDS1BBVC4KIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAoKQogewotICAkb3B0X2RlYnVnCisgICRkZWJ1Z19jbWQKKwogICBjYXNlICQ0IGluCi0gICQxICkgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICQxICkgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSQzJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdAogICAgIDs7CiAgIGVzYWMKICAgY2FzZSAkNCBpbgpAQCAtMTY0Niw3ICsyOTMwLDcgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjICRidWlsZCB0byAkaG9zdCBGSUxFIE5BTUUgQ09OVkVSU0lPTiBGVU5DVElPTlMgIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgaW52b2tlZCB2aWEgYCR0b19ob3N0X2ZpbGVfY21kIEFSRycKKyMgaW52b2tlZCB2aWEgJyR0b19ob3N0X2ZpbGVfY21kIEFSRycKICMKICMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KICMgUmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCkBAIC0xNjU3LDcgKzI5NDEsOCBAQAogIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCiBmdW5jX3RvX2hvc3RfZmlsZSAoKQogewotICAkb3B0X2RlYnVnCisgICRkZWJ1Z19jbWQKKwogICAkdG9faG9zdF9maWxlX2NtZCAiJDEiCiB9CiAjIGVuZCBmdW5jX3RvX2hvc3RfZmlsZQpAQCAtMTY2OSw3ICsyOTU0LDggQEAKICMgaW4gKHRoZSBjb21tYSBzZXBhcmF0ZWQpIExBWlksIG5vIGNvbnZlcnNpb24gdGFrZXMgcGxhY2UuCiBmdW5jX3RvX3Rvb2xfZmlsZSAoKQogewotICAkb3B0X2RlYnVnCisgICRkZWJ1Z19jbWQKKwogICBjYXNlICwkMiwgaW4KICAgICAqLCIkdG9fdG9vbF9maWxlX2NtZCIsKikKICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kMQpAQCAtMTY4Nyw3ICsyOTczLDcgQEAKICMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgogZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCAoKQogewotICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9JDEKIH0KICMgZW5kIGZ1bmNfY29udmVydF9maWxlX25vb3AKIApAQCAtMTY5OCwxMSArMjk4NCwxMiBAQAogIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiAoKQogewotICAkb3B0X2RlYnVnCi0gIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgICRkZWJ1Z19jbWQKKworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9JDEKICAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCiAgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgotICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9JGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdAogICBmaQogICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgogfQpAQCAtMTcxNCw4ICszMDAxLDkgQEAKICMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgogZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiAoKQogewotICAkb3B0X2RlYnVnCi0gIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgICRkZWJ1Z19jbWQKKworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9JDEKICAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCiAgICAgIyBiZWNhdXNlICRidWlsZCBpcyBjeWd3aW4sIHdlIGNhbGwgInRoZSIgY3lncGF0aCBpbiAkUEFUSDsgbm8gbmVlZCB0byB1c2UKICAgICAjIExUX0NZR1BBVEggaW4gdGhpcyBjYXNlLgpAQCAtMTczMSwxMSArMzAxOSwxMiBAQAogIyBhbmQgYSB3b3JraW5nIHdpbmVwYXRoLiBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCiBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyICgpCiB7Ci0gICRvcHRfZGVidWcKLSAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgJGRlYnVnX2NtZAorCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0kMQogICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKLSAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9JGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0CiAgIGZpCiAgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCiB9CkBAIC0xNzQ3LDEyICszMDM2LDEzIEBACiAjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luICgpCiB7Ci0gICRvcHRfZGVidWcKLSAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgJGRlYnVnX2NtZAorCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0kMQogICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KICAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCiAgICAgZnVuY19jeWdwYXRoIC11ICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgotICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSRmdW5jX2N5Z3BhdGhfcmVzdWx0CiAgIGZpCiAgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCiB9CkBAIC0xNzY1LDEzICszMDU1LDE0IEBACiAjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gKCkKIHsKLSAgJG9wdF9kZWJ1ZwotICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICAkZGVidWdfY21kCisKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSQxCiAgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgogICAgICMgY29udmVydCBmcm9tICpuaXggdG8gdzMyLCB0aGVuIHVzZSBjeWdwYXRoIHRvIGNvbnZlcnQgZnJvbSB3MzIgdG8gY3lnd2luLgogICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgogICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgotICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSRmdW5jX2N5Z3BhdGhfcmVzdWx0CiAgIGZpCiAgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCiB9CkBAIC0xNzgxLDcgKzMwNzIsNyBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjICRidWlsZCB0byAkaG9zdCBQQVRIIENPTlZFUlNJT04gRlVOQ1RJT05TICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfcGF0aF9jbWQgQVJHJworIyBpbnZva2VkIHZpYSAnJHRvX2hvc3RfcGF0aF9jbWQgQVJHJwogIwogIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgogIyBUaGUgcmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCkBAIC0xODA1LDEwICszMDk2LDExIEBACiB0b19ob3N0X3BhdGhfY21kPQogZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQgKCkKIHsKLSAgJG9wdF9kZWJ1ZworICAkZGVidWdfY21kCisKICAgaWYgdGVzdCAteiAiJHRvX2hvc3RfcGF0aF9jbWQiOyB0aGVuCiAgICAgZnVuY19zdHJpcG5hbWUgJ2Z1bmNfY29udmVydF9maWxlXycgJycgIiR0b19ob3N0X2ZpbGVfY21kIgotICAgIHRvX2hvc3RfcGF0aF9jbWQ9ImZ1bmNfY29udmVydF9wYXRoXyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fSIKKyAgICB0b19ob3N0X3BhdGhfY21kPWZ1bmNfY29udmVydF9wYXRoXyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKICAgZmkKIH0KIApAQCAtMTgxOCw3ICszMTEwLDggQEAKICMgaW4gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgogZnVuY190b19ob3N0X3BhdGggKCkKIHsKLSAgJG9wdF9kZWJ1ZworICAkZGVidWdfY21kCisKICAgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKICAgJHRvX2hvc3RfcGF0aF9jbWQgIiQxIgogfQpAQCAtMTgyOSw3ICszMTIyLDcgQEAKICMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgogZnVuY19jb252ZXJ0X3BhdGhfbm9vcCAoKQogewotICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9JDEKIH0KICMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25vb3AKIApAQCAtMTg0MCw4ICszMTMzLDkgQEAKICMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgogZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgKCkKIHsKLSAgJG9wdF9kZWJ1ZwotICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICAkZGVidWdfY21kCisKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSQxCiAgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgogICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbSBBUkcuICBNU1lTCiAgICAgIyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZTsgY3lncGF0aCB0dXJucyB0aGVtIGludG8gJy47JyBhbmQgJzsuJzsKQEAgLTE4NDksNyArMzE0Myw3IEBACiAgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKICAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCi0gICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0kZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0CiAgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAogICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKICAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCkBAIC0xODYzLDggKzMxNTcsOSBAQAogIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCiBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyICgpCiB7Ci0gICRvcHRfZGVidWcKLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgJGRlYnVnX2NtZAorCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0kMQogICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KICAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKICAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgpAQCAtMTg4MywxNCArMzE3OCwxNSBAQAogIyBhIHdvcmtpbmcgd2luZXBhdGguICBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCiBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyICgpCiB7Ci0gICRvcHRfZGVidWcKLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgJGRlYnVnX2NtZAorCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0kMQogICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KICAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKICAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgogICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgotICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0kZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQKICAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCiAgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgogICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKQEAgLTE5MDQsMTUgKzMyMDAsMTYgQEAKICMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgogZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4gKCkKIHsKLSAgJG9wdF9kZWJ1ZwotICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICAkZGVidWdfY21kCisKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSQxCiAgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgogICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgogICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCiAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgogICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKLSAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0kZnVuY19jeWdwYXRoX3Jlc3VsdAogICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCiAgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgogICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCkBAIC0xOTI3LDggKzMyMjQsOSBAQAogIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCiBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luICgpCiB7Ci0gICRvcHRfZGVidWcKLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgJGRlYnVnX2NtZAorCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0kMQogICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KICAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCkBAIC0xOTM3LDcgKzMyMzUsNyBAQAogICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgogICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgotICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSRmdW5jX2N5Z3BhdGhfcmVzdWx0CiAgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKICAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCiAgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKQEAgLTE5NDYsMTMgKzMyNDQsMzEgQEAKICMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4KIAogCisjIGZ1bmNfZGxsX2RlZl9wIEZJTEUKKyMgVHJ1ZSBpZmYgRklMRSBpcyBhIFdpbmRvd3MgRExMICcuZGVmJyBmaWxlLgorIyBLZWVwIGluIHN5bmMgd2l0aCBfTFRfRExMX0RFRl9QIGluIGxpYnRvb2wubTQKK2Z1bmNfZGxsX2RlZl9wICgpCit7CisgICRkZWJ1Z19jbWQKKworICBmdW5jX2RsbF9kZWZfcF90bXA9YCRTRUQgLW4gXAorICAgIC1lICdzL15bCSBdKi8vJyBcCisgICAgLWUgJy9eXCg7LipcKSokL2QnIFwKKyAgICAtZSAncy9eXChFWFBPUlRTXHxMSUJSQVJZXClcKFsJIF0uKlwpKiQvREVGL3AnIFwKKyAgICAtZSBxIFwKKyAgICAiJDEiYAorICB0ZXN0IERFRiA9ICIkZnVuY19kbGxfZGVmX3BfdG1wIgorfQorCisKICMgZnVuY19tb2RlX2NvbXBpbGUgYXJnLi4uCiBmdW5jX21vZGVfY29tcGlsZSAoKQogewotICAgICRvcHRfZGVidWcKKyAgICAkZGVidWdfY21kCisKICAgICAjIEdldCB0aGUgY29tcGlsYXRpb24gY29tbWFuZCBhbmQgdGhlIHNvdXJjZSBmaWxlLgogICAgIGJhc2VfY29tcGlsZT0KLSAgICBzcmNmaWxlPSIkbm9ub3B0IiAgIyAgYWx3YXlzIGtlZXAgYSBub24tZW1wdHkgdmFsdWUgaW4gInNyY2ZpbGUiCisgICAgc3JjZmlsZT0kbm9ub3B0ICAjICBhbHdheXMga2VlcCBhIG5vbi1lbXB0eSB2YWx1ZSBpbiAic3JjZmlsZSIKICAgICBzdXBwcmVzc19vcHQ9eWVzCiAgICAgc3VwcHJlc3Nfb3V0cHV0PQogICAgIGFyZ19tb2RlPW5vcm1hbApAQCAtMTk2NSwxMiArMzI4MSwxMiBAQAogICAgICAgY2FzZSAkYXJnX21vZGUgaW4KICAgICAgIGFyZyAgKQogCSMgZG8gbm90ICJjb250aW51ZSIuICBJbnN0ZWFkLCBhZGQgdGhpcyB0byBiYXNlX2NvbXBpbGUKLQlsYXN0YXJnPSIkYXJnIgorCWxhc3Rhcmc9JGFyZwogCWFyZ19tb2RlPW5vcm1hbAogCTs7CiAKICAgICAgIHRhcmdldCApCi0JbGlib2JqPSIkYXJnIgorCWxpYm9iaj0kYXJnCiAJYXJnX21vZGU9bm9ybWFsCiAJY29udGludWUKIAk7OwpAQCAtMTk4MCw3ICszMjk2LDcgQEAKIAljYXNlICRhcmcgaW4KIAktbykKIAkgIHRlc3QgLW4gIiRsaWJvYmoiICYmIFwKLQkgICAgZnVuY19mYXRhbF9lcnJvciAieW91IGNhbm5vdCBzcGVjaWZ5IFxgLW8nIG1vcmUgdGhhbiBvbmNlIgorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJ5b3UgY2Fubm90IHNwZWNpZnkgJy1vJyBtb3JlIHRoYW4gb25jZSIKIAkgIGFyZ19tb2RlPXRhcmdldAogCSAgY29udGludWUKIAkgIDs7CkBAIC0yMDA5LDEyICszMzI1LDEyIEBACiAJICBmdW5jX3N0cmlwbmFtZSAnLVdjLCcgJycgIiRhcmciCiAJICBhcmdzPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkgIGxhc3Rhcmc9Ci0JICBzYXZlX2lmcz0iJElGUyI7IElGUz0nLCcKKwkgIHNhdmVfaWZzPSRJRlM7IElGUz0sCiAJICBmb3IgYXJnIGluICRhcmdzOyBkbwotCSAgICBJRlM9IiRzYXZlX2lmcyIKKwkgICAgSUZTPSRzYXZlX2lmcwogCSAgICBmdW5jX2FwcGVuZF9xdW90ZWQgbGFzdGFyZyAiJGFyZyIKIAkgIGRvbmUKLQkgIElGUz0iJHNhdmVfaWZzIgorCSAgSUZTPSRzYXZlX2lmcwogCSAgZnVuY19zdHJpcG5hbWUgJyAnICcnICIkbGFzdGFyZyIKIAkgIGxhc3Rhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCkBAIC0yMDI3LDggKzMzNDMsOCBAQAogCSAgIyBBY2NlcHQgdGhlIGN1cnJlbnQgYXJndW1lbnQgYXMgdGhlIHNvdXJjZSBmaWxlLgogCSAgIyBUaGUgcHJldmlvdXMgInNyY2ZpbGUiIGJlY29tZXMgdGhlIGN1cnJlbnQgYXJndW1lbnQuCiAJICAjCi0JICBsYXN0YXJnPSIkc3JjZmlsZSIKLQkgIHNyY2ZpbGU9IiRhcmciCisJICBsYXN0YXJnPSRzcmNmaWxlCisJICBzcmNmaWxlPSRhcmcKIAkgIDs7CiAJZXNhYyAgIyAgY2FzZSAkYXJnCiAJOzsKQEAgLTIwNDMsMTMgKzMzNTksMTMgQEAKICAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgInlvdSBtdXN0IHNwZWNpZnkgYW4gYXJndW1lbnQgZm9yIC1YY29tcGlsZSIKICAgICAgIDs7CiAgICAgdGFyZ2V0KQotICAgICAgZnVuY19mYXRhbF9lcnJvciAieW91IG11c3Qgc3BlY2lmeSBhIHRhcmdldCB3aXRoIFxgLW8nIgorICAgICAgZnVuY19mYXRhbF9lcnJvciAieW91IG11c3Qgc3BlY2lmeSBhIHRhcmdldCB3aXRoICctbyciCiAgICAgICA7OwogICAgICopCiAgICAgICAjIEdldCB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSBvYmplY3QuCiAgICAgICB0ZXN0IC16ICIkbGlib2JqIiAmJiB7CiAJZnVuY19iYXNlbmFtZSAiJHNyY2ZpbGUiCi0JbGlib2JqPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisJbGlib2JqPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogICAgICAgfQogICAgICAgOzsKICAgICBlc2FjCkBAIC0yMDY5LDcgKzMzODUsNyBAQAogICAgIGNhc2UgJGxpYm9iaiBpbgogICAgICoubG8pIGZ1bmNfbG8ybyAiJGxpYm9iaiI7IG9iaj0kZnVuY19sbzJvX3Jlc3VsdCA7OwogICAgICopCi0gICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZGV0ZXJtaW5lIG5hbWUgb2YgbGlicmFyeSBvYmplY3QgZnJvbSBcYCRsaWJvYmonIgorICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGRldGVybWluZSBuYW1lIG9mIGxpYnJhcnkgb2JqZWN0IGZyb20gJyRsaWJvYmonIgogICAgICAgOzsKICAgICBlc2FjCiAKQEAgLTIwNzgsOCArMzM5NCw4IEBACiAgICAgZm9yIGFyZyBpbiAkbGF0ZXI7IGRvCiAgICAgICBjYXNlICRhcmcgaW4KICAgICAgIC1zaGFyZWQpCi0JdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIFwKLQkgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAiY2FuIG5vdCBidWlsZCBhIHNoYXJlZCBsaWJyYXJ5IgorCXRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiIFwKKwkgIHx8IGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAiY2Fubm90IGJ1aWxkIGEgc2hhcmVkIGxpYnJhcnkiCiAJYnVpbGRfb2xkX2xpYnM9bm8KIAljb250aW51ZQogCTs7CkBAIC0yMTA1LDE3ICszNDIxLDE3IEBACiAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGxpYm9iaiIKICAgICB0ZXN0ICJYJGxpYm9iaiIgIT0gIlgkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiIFwKICAgICAgICYmICRFQ0hPICJYJGxpYm9iaiIgfCAkR1JFUCAnW11+I14qe307PD4/IiciJyInCSAmKCl8YCRbXScgXAotICAgICAgJiYgZnVuY193YXJuaW5nICJsaWJvYmogbmFtZSBcYCRsaWJvYmonIG1heSBub3QgY29udGFpbiBzaGVsbCBzcGVjaWFsIGNoYXJhY3RlcnMuIgorICAgICAgJiYgZnVuY193YXJuaW5nICJsaWJvYmogbmFtZSAnJGxpYm9iaicgbWF5IG5vdCBjb250YWluIHNoZWxsIHNwZWNpYWwgY2hhcmFjdGVycy4iCiAgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJG9iaiIgIi8iICIiCi0gICAgb2JqbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotICAgIHhkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotICAgIGxvYmo9JHt4ZGlyfSRvYmpkaXIvJG9iam5hbWUKKyAgICBvYmpuYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorICAgIHhkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKKyAgICBsb2JqPSR4ZGlyJG9iamRpci8kb2JqbmFtZQogCiAgICAgdGVzdCAteiAiJGJhc2VfY29tcGlsZSIgJiYgXAogICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgY29tcGlsYXRpb24gY29tbWFuZCIKIAogICAgICMgRGVsZXRlIGFueSBsZWZ0b3ZlciBsaWJyYXJ5IG9iamVjdHMuCi0gICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9vbGRfbGlicyI7IHRoZW4KICAgICAgIHJlbW92ZWxpc3Q9IiRvYmogJGxvYmogJGxpYm9iaiAke2xpYm9ian1UIgogICAgIGVsc2UKICAgICAgIHJlbW92ZWxpc3Q9IiRsb2JqICRsaWJvYmogJHtsaWJvYmp9VCIKQEAgLTIxMjcsMTYgKzM0NDMsMTYgQEAKICAgICAgIHBpY19tb2RlPWRlZmF1bHQKICAgICAgIDs7CiAgICAgZXNhYwotICAgIGlmIHRlc3QgIiRwaWNfbW9kZSIgPSBubyAmJiB0ZXN0ICIkZGVwbGlic19jaGVja19tZXRob2QiICE9IHBhc3NfYWxsOyB0aGVuCisgICAgaWYgdGVzdCBubyA9ICIkcGljX21vZGUiICYmIHRlc3QgcGFzc19hbGwgIT0gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCI7IHRoZW4KICAgICAgICMgbm9uLVBJQyBjb2RlIGluIHNoYXJlZCBsaWJyYXJpZXMgaXMgbm90IHN1cHBvcnRlZAogICAgICAgcGljX21vZGU9ZGVmYXVsdAogICAgIGZpCiAKICAgICAjIENhbGN1bGF0ZSB0aGUgZmlsZW5hbWUgb2YgdGhlIG91dHB1dCBvYmplY3QgaWYgY29tcGlsZXIgZG9lcwogICAgICMgbm90IHN1cHBvcnQgLW8gd2l0aCAtYwotICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0gbm87IHRoZW4KLSAgICAgIG91dHB1dF9vYmo9YCRFQ0hPICIkc3JjZmlsZSIgfCAkU0VEICdzJV4uKi8lJTsgcyVcLlteLl0qJCUlJ2AuJHtvYmpleHR9Ci0gICAgICBsb2NrZmlsZT0iJG91dHB1dF9vYmoubG9jayIKKyAgICBpZiB0ZXN0IG5vID0gIiRjb21waWxlcl9jX28iOyB0aGVuCisgICAgICBvdXRwdXRfb2JqPWAkRUNITyAiJHNyY2ZpbGUiIHwgJFNFRCAncyVeLiovJSU7IHMlXC5bXi5dKiQlJSdgLiRvYmpleHQKKyAgICAgIGxvY2tmaWxlPSRvdXRwdXRfb2JqLmxvY2sKICAgICBlbHNlCiAgICAgICBvdXRwdXRfb2JqPQogICAgICAgbmVlZF9sb2Nrcz1ubwpAQCAtMjE0NSwxMiArMzQ2MSwxMiBAQAogCiAgICAgIyBMb2NrIHRoaXMgY3JpdGljYWwgc2VjdGlvbiBpZiBpdCBpcyBuZWVkZWQKICAgICAjIFdlIHVzZSB0aGlzIHNjcmlwdCBmaWxlIHRvIG1ha2UgdGhlIGxpbmssIGl0IGF2b2lkcyBjcmVhdGluZyBhIG5ldyBmaWxlCi0gICAgaWYgdGVzdCAiJG5lZWRfbG9ja3MiID0geWVzOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgPSAiJG5lZWRfbG9ja3MiOyB0aGVuCiAgICAgICB1bnRpbCAkb3B0X2RyeV9ydW4gfHwgbG4gIiRwcm9ncGF0aCIgIiRsb2NrZmlsZSIgMj4vZGV2L251bGw7IGRvCiAJZnVuY19lY2hvICJXYWl0aW5nIGZvciAkbG9ja2ZpbGUgdG8gYmUgcmVtb3ZlZCIKIAlzbGVlcCAyCiAgICAgICBkb25lCi0gICAgZWxpZiB0ZXN0ICIkbmVlZF9sb2NrcyIgPSB3YXJuOyB0aGVuCisgICAgZWxpZiB0ZXN0IHdhcm4gPSAiJG5lZWRfbG9ja3MiOyB0aGVuCiAgICAgICBpZiB0ZXN0IC1mICIkbG9ja2ZpbGUiOyB0aGVuCiAJJEVDSE8gIlwKICoqKiBFUlJPUiwgJGxvY2tmaWxlIGV4aXN0cyBhbmQgY29udGFpbnM6CkBAIC0yMTU4LDcgKzM0NzQsNyBAQAogCiBUaGlzIGluZGljYXRlcyB0aGF0IGFub3RoZXIgcHJvY2VzcyBpcyB0cnlpbmcgdG8gdXNlIHRoZSBzYW1lCiB0ZW1wb3Jhcnkgb2JqZWN0IGZpbGUsIGFuZCBsaWJ0b29sIGNvdWxkIG5vdCB3b3JrIGFyb3VuZCBpdCBiZWNhdXNlCi15b3VyIGNvbXBpbGVyIGRvZXMgbm90IHN1cHBvcnQgXGAtYycgYW5kIFxgLW8nIHRvZ2V0aGVyLiAgSWYgeW91Cit5b3VyIGNvbXBpbGVyIGRvZXMgbm90IHN1cHBvcnQgJy1jJyBhbmQgJy1vJyB0b2dldGhlci4gIElmIHlvdQogcmVwZWF0IHRoaXMgY29tcGlsYXRpb24sIGl0IG1heSBzdWNjZWVkLCBieSBjaGFuY2UsIGJ1dCB5b3UgaGFkIGJldHRlcgogYXZvaWQgcGFyYWxsZWwgYnVpbGRzIChtYWtlIC1qKSBpbiB0aGlzIHBsYXRmb3JtLCBvciBnZXQgYSBiZXR0ZXIKIGNvbXBpbGVyLiIKQEAgLTIxODAsMTEgKzM0OTYsMTEgQEAKICAgICBxc3JjZmlsZT0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKIAogICAgICMgT25seSBidWlsZCBhIFBJQyBvYmplY3QgaWYgd2UgYXJlIGJ1aWxkaW5nIGxpYnRvb2wgbGlicmFyaWVzLgotICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgPSAiJGJ1aWxkX2xpYnRvb2xfbGlicyI7IHRoZW4KICAgICAgICMgV2l0aG91dCB0aGlzIGFzc2lnbm1lbnQsIGJhc2VfY29tcGlsZSBnZXRzIGVtcHRpZWQuCiAgICAgICBmYnNkX2hpZGVvdXNfc2hfYnVnPSRiYXNlX2NvbXBpbGUKIAotICAgICAgaWYgdGVzdCAiJHBpY19tb2RlIiAhPSBubzsgdGhlbgorICAgICAgaWYgdGVzdCBubyAhPSAiJHBpY19tb2RlIjsgdGhlbgogCWNvbW1hbmQ9IiRiYXNlX2NvbXBpbGUgJHFzcmNmaWxlICRwaWNfZmxhZyIKICAgICAgIGVsc2UKIAkjIERvbid0IGJ1aWxkIFBJQyBjb2RlCkBAIC0yMjAxLDcgKzM1MTcsNyBAQAogICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIJXAogICAgICAgICAgICd0ZXN0IC1uICIkb3V0cHV0X29iaiIgJiYgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnCiAKLSAgICAgIGlmIHRlc3QgIiRuZWVkX2xvY2tzIiA9IHdhcm4gJiYKKyAgICAgIGlmIHRlc3Qgd2FybiA9ICIkbmVlZF9sb2NrcyIgJiYKIAkgdGVzdCAiWGBjYXQgJGxvY2tmaWxlIDI+L2Rldi9udWxsYCIgIT0gIlgkc3JjZmlsZSI7IHRoZW4KIAkkRUNITyAiXAogKioqIEVSUk9SLCAkbG9ja2ZpbGUgY29udGFpbnM6CkBAIC0yMjEyLDcgKzM1MjgsNyBAQAogCiBUaGlzIGluZGljYXRlcyB0aGF0IGFub3RoZXIgcHJvY2VzcyBpcyB0cnlpbmcgdG8gdXNlIHRoZSBzYW1lCiB0ZW1wb3Jhcnkgb2JqZWN0IGZpbGUsIGFuZCBsaWJ0b29sIGNvdWxkIG5vdCB3b3JrIGFyb3VuZCBpdCBiZWNhdXNlCi15b3VyIGNvbXBpbGVyIGRvZXMgbm90IHN1cHBvcnQgXGAtYycgYW5kIFxgLW8nIHRvZ2V0aGVyLiAgSWYgeW91Cit5b3VyIGNvbXBpbGVyIGRvZXMgbm90IHN1cHBvcnQgJy1jJyBhbmQgJy1vJyB0b2dldGhlci4gIElmIHlvdQogcmVwZWF0IHRoaXMgY29tcGlsYXRpb24sIGl0IG1heSBzdWNjZWVkLCBieSBjaGFuY2UsIGJ1dCB5b3UgaGFkIGJldHRlcgogYXZvaWQgcGFyYWxsZWwgYnVpbGRzIChtYWtlIC1qKSBpbiB0aGlzIHBsYXRmb3JtLCBvciBnZXQgYSBiZXR0ZXIKIGNvbXBpbGVyLiIKQEAgLTIyMjgsMjAgKzM1NDQsMjAgQEAKICAgICAgIGZpCiAKICAgICAgICMgQWxsb3cgZXJyb3IgbWVzc2FnZXMgb25seSBmcm9tIHRoZSBmaXJzdCBjb21waWxhdGlvbi4KLSAgICAgIGlmIHRlc3QgIiRzdXBwcmVzc19vcHQiID0geWVzOyB0aGVuCisgICAgICBpZiB0ZXN0IHllcyA9ICIkc3VwcHJlc3Nfb3B0IjsgdGhlbgogCXN1cHByZXNzX291dHB1dD0nID4vZGV2L251bGwgMj4mMScKICAgICAgIGZpCiAgICAgZmkKIAogICAgICMgT25seSBidWlsZCBhIHBvc2l0aW9uLWRlcGVuZGVudCBvYmplY3QgaWYgd2UgYnVpbGQgb2xkIGxpYnJhcmllcy4KLSAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICBpZiB0ZXN0ICIkcGljX21vZGUiICE9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9vbGRfbGlicyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgeWVzICE9ICIkcGljX21vZGUiOyB0aGVuCiAJIyBEb24ndCBidWlsZCBQSUMgY29kZQogCWNvbW1hbmQ9IiRiYXNlX2NvbXBpbGUgJHFzcmNmaWxlJHBpZV9mbGFnIgogICAgICAgZWxzZQogCWNvbW1hbmQ9IiRiYXNlX2NvbXBpbGUgJHFzcmNmaWxlICRwaWNfZmxhZyIKICAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IHllczsgdGhlbgorICAgICAgaWYgdGVzdCB5ZXMgPSAiJGNvbXBpbGVyX2NfbyI7IHRoZW4KIAlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJG9iaiIKICAgICAgIGZpCiAKQEAgLTIyNTAsNyArMzU2Niw3IEBACiAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIiBcCiAgICAgICAgICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnCiAKLSAgICAgIGlmIHRlc3QgIiRuZWVkX2xvY2tzIiA9IHdhcm4gJiYKKyAgICAgIGlmIHRlc3Qgd2FybiA9ICIkbmVlZF9sb2NrcyIgJiYKIAkgdGVzdCAiWGBjYXQgJGxvY2tmaWxlIDI+L2Rldi9udWxsYCIgIT0gIlgkc3JjZmlsZSI7IHRoZW4KIAkkRUNITyAiXAogKioqIEVSUk9SLCAkbG9ja2ZpbGUgY29udGFpbnM6CkBAIC0yMjYxLDcgKzM1NzcsNyBAQAogCiBUaGlzIGluZGljYXRlcyB0aGF0IGFub3RoZXIgcHJvY2VzcyBpcyB0cnlpbmcgdG8gdXNlIHRoZSBzYW1lCiB0ZW1wb3Jhcnkgb2JqZWN0IGZpbGUsIGFuZCBsaWJ0b29sIGNvdWxkIG5vdCB3b3JrIGFyb3VuZCBpdCBiZWNhdXNlCi15b3VyIGNvbXBpbGVyIGRvZXMgbm90IHN1cHBvcnQgXGAtYycgYW5kIFxgLW8nIHRvZ2V0aGVyLiAgSWYgeW91Cit5b3VyIGNvbXBpbGVyIGRvZXMgbm90IHN1cHBvcnQgJy1jJyBhbmQgJy1vJyB0b2dldGhlci4gIElmIHlvdQogcmVwZWF0IHRoaXMgY29tcGlsYXRpb24sIGl0IG1heSBzdWNjZWVkLCBieSBjaGFuY2UsIGJ1dCB5b3UgaGFkIGJldHRlcgogYXZvaWQgcGFyYWxsZWwgYnVpbGRzIChtYWtlIC1qKSBpbiB0aGlzIHBsYXRmb3JtLCBvciBnZXQgYSBiZXR0ZXIKIGNvbXBpbGVyLiIKQEAgLTIyODEsNyArMzU5Nyw3IEBACiAgICAgICBmdW5jX3dyaXRlX2xpYnRvb2xfb2JqZWN0ICIkbGlib2JqIiAiJG9iamRpci8kb2JqbmFtZSIgIiRvYmpuYW1lIgogCiAgICAgICAjIFVubG9jayB0aGUgY3JpdGljYWwgc2VjdGlvbiBpZiBpdCB3YXMgbG9ja2VkCi0gICAgICBpZiB0ZXN0ICIkbmVlZF9sb2NrcyIgIT0gbm87IHRoZW4KKyAgICAgIGlmIHRlc3Qgbm8gIT0gIiRuZWVkX2xvY2tzIjsgdGhlbgogCXJlbW92ZWxpc3Q9JGxvY2tmaWxlCiAgICAgICAgICRSTSAiJGxvY2tmaWxlIgogICAgICAgZmkKQEAgLTIyOTEsNyArMzYwNyw3IEBACiB9CiAKICRvcHRfaGVscCB8fCB7Ci0gIHRlc3QgIiRvcHRfbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQorICB0ZXN0IGNvbXBpbGUgPSAiJG9wdF9tb2RlIiAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KIH0KIAogZnVuY19tb2RlX2hlbHAgKCkKQEAgLTIzMTEsNyArMzYyNyw3IEBACiBSZW1vdmUgZmlsZXMgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5LgogCiBSTSBpcyB0aGUgbmFtZSBvZiB0aGUgcHJvZ3JhbSB0byB1c2UgdG8gZGVsZXRlIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBlYWNoIEZJTEUKLSh0eXBpY2FsbHkgXGAvYmluL3JtJykuICBSTS1PUFRJT05TIGFyZSBvcHRpb25zIChzdWNoIGFzIFxgLWYnKSB0byBiZSBwYXNzZWQKKyh0eXBpY2FsbHkgJy9iaW4vcm0nKS4gIFJNLU9QVElPTlMgYXJlIG9wdGlvbnMgKHN1Y2ggYXMgJy1mJykgdG8gYmUgcGFzc2VkCiB0byBSTS4KIAogSWYgRklMRSBpcyBhIGxpYnRvb2wgbGlicmFyeSwgb2JqZWN0IG9yIHByb2dyYW0sIGFsbCB0aGUgZmlsZXMgYXNzb2NpYXRlZApAQCAtMjMzMCwxNiArMzY0NiwxNiBAQAogICAtbm8tc3VwcHJlc3MgICAgICBkbyBub3Qgc3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGZvciBtdWx0aXBsZSBwYXNzZXMKICAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkIFBJQyBvYmplY3RzIG9ubHkKICAgLXByZWZlci1ub24tcGljICAgdHJ5IHRvIGJ1aWxkIG5vbi1QSUMgb2JqZWN0cyBvbmx5Ci0gIC1zaGFyZWQgICAgICAgICAgIGRvIG5vdCBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCi0gIC1zdGF0aWMgICAgICAgICAgIG9ubHkgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZworICAtc2hhcmVkICAgICAgICAgICBkbyBub3QgYnVpbGQgYSAnLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCisgIC1zdGF0aWMgICAgICAgICAgIG9ubHkgYnVpbGQgYSAnLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCiAgIC1XYyxGTEFHICAgICAgICAgIHBhc3MgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKIAotQ09NUElMRS1DT01NQU5EIGlzIGEgY29tbWFuZCB0byBiZSB1c2VkIGluIGNyZWF0aW5nIGEgXGBzdGFuZGFyZCcgb2JqZWN0IGZpbGUKK0NPTVBJTEUtQ09NTUFORCBpcyBhIGNvbW1hbmQgdG8gYmUgdXNlZCBpbiBjcmVhdGluZyBhICdzdGFuZGFyZCcgb2JqZWN0IGZpbGUKIGZyb20gdGhlIGdpdmVuIFNPVVJDRUZJTEUuCiAKIFRoZSBvdXRwdXQgZmlsZSBuYW1lIGlzIGRldGVybWluZWQgYnkgcmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBjb21wb25lbnQgZnJvbQotU09VUkNFRklMRSwgdGhlbiBzdWJzdGl0dXRpbmcgdGhlIEMgc291cmNlIGNvZGUgc3VmZml4IFxgLmMnIHdpdGggdGhlCi1saWJyYXJ5IG9iamVjdCBzdWZmaXgsIFxgLmxvJy4iCitTT1VSQ0VGSUxFLCB0aGVuIHN1YnN0aXR1dGluZyB0aGUgQyBzb3VyY2UgY29kZSBzdWZmaXggJy5jJyB3aXRoIHRoZQorbGlicmFyeSBvYmplY3Qgc3VmZml4LCAnLmxvJy4iCiAgICAgICAgIDs7CiAKICAgICAgIGV4ZWN1dGUpCkBAIC0yMzUyLDcgKzM2NjgsNyBAQAogCiAgIC1kbG9wZW4gRklMRSAgICAgIGFkZCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgRklMRSB0byB0aGUgbGlicmFyeSBwYXRoCiAKLVRoaXMgbW9kZSBzZXRzIHRoZSBsaWJyYXJ5IHBhdGggZW52aXJvbm1lbnQgdmFyaWFibGUgYWNjb3JkaW5nIHRvIFxgLWRsb3BlbicKK1RoaXMgbW9kZSBzZXRzIHRoZSBsaWJyYXJ5IHBhdGggZW52aXJvbm1lbnQgdmFyaWFibGUgYWNjb3JkaW5nIHRvICctZGxvcGVuJwogZmxhZ3MuCiAKIElmIGFueSBvZiB0aGUgQVJHUyBhcmUgbGlidG9vbCBleGVjdXRhYmxlIHdyYXBwZXJzLCB0aGVuIHRoZXkgYXJlIHRyYW5zbGF0ZWQKQEAgLTIzNzEsNyArMzY4Nyw3IEBACiBFYWNoIExJQkRJUiBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGxpYnRvb2wgbGlicmFyaWVzLgogCiBUaGUgY29tbWFuZHMgdGhhdCB0aGlzIG1vZGUgZXhlY3V0ZXMgbWF5IHJlcXVpcmUgc3VwZXJ1c2VyIHByaXZpbGVnZXMuICBVc2UKLXRoZSBcYC0tZHJ5LXJ1bicgb3B0aW9uIGlmIHlvdSBqdXN0IHdhbnQgdG8gc2VlIHdoYXQgd291bGQgYmUgZXhlY3V0ZWQuIgordGhlICctLWRyeS1ydW4nIG9wdGlvbiBpZiB5b3UganVzdCB3YW50IHRvIHNlZSB3aGF0IHdvdWxkIGJlIGV4ZWN1dGVkLiIKICAgICAgICAgOzsKIAogICAgICAgaW5zdGFsbCkKQEAgLTIzODEsNyArMzY5Nyw3IEBACiBJbnN0YWxsIGV4ZWN1dGFibGVzIG9yIGxpYnJhcmllcy4KIAogSU5TVEFMTC1DT01NQU5EIGlzIHRoZSBpbnN0YWxsYXRpb24gY29tbWFuZC4gIFRoZSBmaXJzdCBjb21wb25lbnQgc2hvdWxkIGJlCi1laXRoZXIgdGhlIFxgaW5zdGFsbCcgb3IgXGBjcCcgcHJvZ3JhbS4KK2VpdGhlciB0aGUgJ2luc3RhbGwnIG9yICdjcCcgcHJvZ3JhbS4KIAogVGhlIGZvbGxvd2luZyBjb21wb25lbnRzIG9mIElOU1RBTEwtQ09NTUFORCBhcmUgdHJlYXRlZCBzcGVjaWFsbHk6CiAKQEAgLTI0MDcsNyArMzcyMyw3IEBACiAgIC1hdm9pZC12ZXJzaW9uICAgIGRvIG5vdCBhZGQgYSB2ZXJzaW9uIHN1ZmZpeCBpZiBwb3NzaWJsZQogICAtYmluZGlyIEJJTkRJUiAgICBzcGVjaWZ5IHBhdGggdG8gYmluYXJpZXMgZGlyZWN0b3J5IChmb3Igc3lzdGVtcyB3aGVyZQogICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgbXVzdCBiZSBmb3VuZCBpbiB0aGUgUEFUSCBzZXR0aW5nIGF0IHJ1bnRpbWUpCi0gIC1kbG9wZW4gRklMRSAgICAgIFxgLWRscHJlb3BlbicgRklMRSBpZiBpdCBjYW5ub3QgYmUgZGxvcGVuZWQgYXQgcnVudGltZQorICAtZGxvcGVuIEZJTEUgICAgICAnLWRscHJlb3BlbicgRklMRSBpZiBpdCBjYW5ub3QgYmUgZGxvcGVuZWQgYXQgcnVudGltZQogICAtZGxwcmVvcGVuIEZJTEUgICBsaW5rIGluIEZJTEUgYW5kIGFkZCBpdHMgc3ltYm9scyB0byBsdF9wcmVsb2FkZWRfc3ltYm9scwogICAtZXhwb3J0LWR5bmFtaWMgICBhbGxvdyBzeW1ib2xzIGZyb20gT1VUUFVULUZJTEUgdG8gYmUgcmVzb2x2ZWQgd2l0aCBkbHN5bSgzKQogICAtZXhwb3J0LXN5bWJvbHMgU1lNRklMRQpAQCAtMjQyMSw3ICszNzM3LDggQEAKICAgLW5vLWluc3RhbGwgICAgICAgbGluayBhIG5vdC1pbnN0YWxsYWJsZSBleGVjdXRhYmxlCiAgIC1uby11bmRlZmluZWQgICAgIGRlY2xhcmUgdGhhdCBhIGxpYnJhcnkgZG9lcyBub3QgcmVmZXIgdG8gZXh0ZXJuYWwgc3ltYm9scwogICAtbyBPVVRQVVQtRklMRSAgICBjcmVhdGUgT1VUUFVULUZJTEUgZnJvbSB0aGUgc3BlY2lmaWVkIG9iamVjdHMKLSAgLW9iamVjdGxpc3QgRklMRSAgVXNlIGEgbGlzdCBvZiBvYmplY3QgZmlsZXMgZm91bmQgaW4gRklMRSB0byBzcGVjaWZ5IG9iamVjdHMKKyAgLW9iamVjdGxpc3QgRklMRSAgdXNlIGEgbGlzdCBvZiBvYmplY3QgZmlsZXMgZm91bmQgaW4gRklMRSB0byBzcGVjaWZ5IG9iamVjdHMKKyAgLW9zMmRsbG5hbWUgTkFNRSAgZm9yY2UgYSBzaG9ydCBETEwgbmFtZSBvbiBPUy8yIChubyBlZmZlY3Qgb24gb3RoZXIgT1NlcykKICAgLXByZWNpb3VzLWZpbGVzLXJlZ2V4IFJFR0VYCiAgICAgICAgICAgICAgICAgICAgIGRvbid0IHJlbW92ZSBvdXRwdXQgZmlsZXMgbWF0Y2hpbmcgUkVHRVgKICAgLXJlbGVhc2UgUkVMRUFTRSAgc3BlY2lmeSBwYWNrYWdlIHJlbGVhc2UgaW5mb3JtYXRpb24KQEAgLTI0NDEsMjAgKzM3NTgsMjAgQEAKICAgLVhsaW5rZXIgRkxBRyAgICAgcGFzcyBsaW5rZXItc3BlY2lmaWMgRkxBRyBkaXJlY3RseSB0byB0aGUgbGlua2VyCiAgIC1YQ0NsaW5rZXIgRkxBRyAgIHBhc3MgbGluay1zcGVjaWZpYyBGTEFHIHRvIHRoZSBjb21waWxlciBkcml2ZXIgKENDKQogCi1BbGwgb3RoZXIgb3B0aW9ucyAoYXJndW1lbnRzIGJlZ2lubmluZyB3aXRoIFxgLScpIGFyZSBpZ25vcmVkLgorQWxsIG90aGVyIG9wdGlvbnMgKGFyZ3VtZW50cyBiZWdpbm5pbmcgd2l0aCAnLScpIGFyZSBpZ25vcmVkLgogCi1FdmVyeSBvdGhlciBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIGEgZmlsZW5hbWUuICBGaWxlcyBlbmRpbmcgaW4gXGAubGEnIGFyZQorRXZlcnkgb3RoZXIgYXJndW1lbnQgaXMgdHJlYXRlZCBhcyBhIGZpbGVuYW1lLiAgRmlsZXMgZW5kaW5nIGluICcubGEnIGFyZQogdHJlYXRlZCBhcyB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcywgb3RoZXIgZmlsZXMgYXJlIHN0YW5kYXJkIG9yIGxpYnJhcnkKIG9iamVjdCBmaWxlcy4KIAotSWYgdGhlIE9VVFBVVC1GSUxFIGVuZHMgaW4gXGAubGEnLCB0aGVuIGEgbGlidG9vbCBsaWJyYXJ5IGlzIGNyZWF0ZWQsCi1vbmx5IGxpYnJhcnkgb2JqZWN0cyAoXGAubG8nIGZpbGVzKSBtYXkgYmUgc3BlY2lmaWVkLCBhbmQgXGAtcnBhdGgnIGlzCitJZiB0aGUgT1VUUFVULUZJTEUgZW5kcyBpbiAnLmxhJywgdGhlbiBhIGxpYnRvb2wgbGlicmFyeSBpcyBjcmVhdGVkLAorb25seSBsaWJyYXJ5IG9iamVjdHMgKCcubG8nIGZpbGVzKSBtYXkgYmUgc3BlY2lmaWVkLCBhbmQgJy1ycGF0aCcgaXMKIHJlcXVpcmVkLCBleGNlcHQgd2hlbiBjcmVhdGluZyBhIGNvbnZlbmllbmNlIGxpYnJhcnkuCiAKLUlmIE9VVFBVVC1GSUxFIGVuZHMgaW4gXGAuYScgb3IgXGAubGliJywgdGhlbiBhIHN0YW5kYXJkIGxpYnJhcnkgaXMgY3JlYXRlZAotdXNpbmcgXGBhcicgYW5kIFxgcmFubGliJywgb3Igb24gV2luZG93cyB1c2luZyBcYGxpYicuCitJZiBPVVRQVVQtRklMRSBlbmRzIGluICcuYScgb3IgJy5saWInLCB0aGVuIGEgc3RhbmRhcmQgbGlicmFyeSBpcyBjcmVhdGVkCit1c2luZyAnYXInIGFuZCAncmFubGliJywgb3Igb24gV2luZG93cyB1c2luZyAnbGliJy4KIAotSWYgT1VUUFVULUZJTEUgZW5kcyBpbiBcYC5sbycgb3IgXGAuJHtvYmpleHR9JywgdGhlbiBhIHJlbG9hZGFibGUgb2JqZWN0IGZpbGUKK0lmIE9VVFBVVC1GSUxFIGVuZHMgaW4gJy5sbycgb3IgJy4kb2JqZXh0JywgdGhlbiBhIHJlbG9hZGFibGUgb2JqZWN0IGZpbGUKIGlzIGNyZWF0ZWQsIG90aGVyd2lzZSBhbiBleGVjdXRhYmxlIHByb2dyYW0gaXMgY3JlYXRlZC4iCiAgICAgICAgIDs7CiAKQEAgLTI0NjUsNyArMzc4Miw3IEBACiBSZW1vdmUgbGlicmFyaWVzIGZyb20gYW4gaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KIAogUk0gaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gdXNlIHRvIGRlbGV0ZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBGSUxFCi0odHlwaWNhbGx5IFxgL2Jpbi9ybScpLiAgUk0tT1BUSU9OUyBhcmUgb3B0aW9ucyAoc3VjaCBhcyBcYC1mJykgdG8gYmUgcGFzc2VkCisodHlwaWNhbGx5ICcvYmluL3JtJykuICBSTS1PUFRJT05TIGFyZSBvcHRpb25zIChzdWNoIGFzICctZicpIHRvIGJlIHBhc3NlZAogdG8gUk0uCiAKIElmIEZJTEUgaXMgYSBsaWJ0b29sIGxpYnJhcnksIGFsbCB0aGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGl0IGFyZSBkZWxldGVkLgpAQCAtMjQ3MywxNyArMzc5MCwxNyBAQAogICAgICAgICA7OwogCiAgICAgICAqKQotICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgorICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgJyRvcHRfbW9kZSciCiAgICAgICAgIDs7CiAgICAgZXNhYwogCiAgICAgZWNobwotICAgICRFQ0hPICJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdGhlciBtb2Rlcy4iCisgICAgJEVDSE8gIlRyeSAnJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgbW9kZXMuIgogfQogCiAjIE5vdyB0aGF0IHdlJ3ZlIGNvbGxlY3RlZCBhIHBvc3NpYmxlIC0tbW9kZSBhcmcsIHNob3cgaGVscCBpZiBuZWNlc3NhcnkKIGlmICRvcHRfaGVscDsgdGhlbgotICBpZiB0ZXN0ICIkb3B0X2hlbHAiID0gOjsgdGhlbgorICBpZiB0ZXN0IDogPSAiJG9wdF9oZWxwIjsgdGhlbgogICAgIGZ1bmNfbW9kZV9oZWxwCiAgIGVsc2UKICAgICB7CkBAIC0yNDkxLDcgKzM4MDgsNyBAQAogICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KIAlmdW5jX21vZGVfaGVscAogICAgICAgZG9uZQotICAgIH0gfCBzZWQgLW4gJzFwOyAyLCRzL15Vc2FnZTovICBvcjogL3AnCisgICAgfSB8ICRTRUQgLW4gJzFwOyAyLCRzL15Vc2FnZTovICBvcjogL3AnCiAgICAgewogICAgICAgZnVuY19oZWxwIG5vZXhpdAogICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KQEAgLTI0OTksNyArMzgxNiw3IEBACiAJZnVuY19tb2RlX2hlbHAKICAgICAgIGRvbmUKICAgICB9IHwKLSAgICBzZWQgJzFkCisgICAgJFNFRCAnMWQKICAgICAgIC9eV2hlbiByZXBvcnRpbmcvLC9eUmVwb3J0L3sKIAlICiAJZApAQCAtMjUxNiwxNiArMzgzMywxNyBAQAogIyBmdW5jX21vZGVfZXhlY3V0ZSBhcmcuLi4KIGZ1bmNfbW9kZV9leGVjdXRlICgpCiB7Ci0gICAgJG9wdF9kZWJ1ZworICAgICRkZWJ1Z19jbWQKKwogICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBjb21tYW5kIG5hbWUuCi0gICAgY21kPSIkbm9ub3B0IgorICAgIGNtZD0kbm9ub3B0CiAgICAgdGVzdCAteiAiJGNtZCIgJiYgXAogICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgQ09NTUFORCIKIAogICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCiAgICAgZm9yIGZpbGUgaW4gJG9wdF9kbG9wZW47IGRvCiAgICAgICB0ZXN0IC1mICIkZmlsZSIgXAotCXx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgZmlsZSIKKwl8fCBmdW5jX2ZhdGFsX2hlbHAgIickZmlsZScgaXMgbm90IGEgZmlsZSIKIAogICAgICAgZGlyPQogICAgICAgY2FzZSAkZmlsZSBpbgpAQCAtMjUzNSw3ICszODUzLDcgQEAKIAogCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCiAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKLQkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIickbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCiAKIAkjIFJlYWQgdGhlIGxpYnRvb2wgbGlicmFyeS4KIAlkbG5hbWU9CkBAIC0yNTQ2LDE4ICszODY0LDE4IEBACiAJaWYgdGVzdCAteiAiJGRsbmFtZSI7IHRoZW4KIAkgICMgV2FybiBpZiBpdCB3YXMgYSBzaGFyZWQgbGlicmFyeS4KIAkgIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIiAmJiBcCi0JICAgIGZ1bmNfd2FybmluZyAiXGAkZmlsZScgd2FzIG5vdCBsaW5rZWQgd2l0aCBcYC1leHBvcnQtZHluYW1pYyciCisJICAgIGZ1bmNfd2FybmluZyAiJyRmaWxlJyB3YXMgbm90IGxpbmtlZCB3aXRoICctZXhwb3J0LWR5bmFtaWMnIgogCSAgY29udGludWUKIAlmaQogCiAJZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCi0JZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwlkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKIAogCWlmIHRlc3QgLWYgIiRkaXIvJG9iamRpci8kZGxuYW1lIjsgdGhlbgogCSAgZnVuY19hcHBlbmQgZGlyICIvJG9iamRpciIKIAllbHNlCiAJICBpZiB0ZXN0ICEgLWYgIiRkaXIvJGRsbmFtZSI7IHRoZW4KLQkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgXGAkZGxuYW1lJyBpbiBcYCRkaXInIG9yIFxgJGRpci8kb2JqZGlyJyIKKwkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgJyRkbG5hbWUnIGluICckZGlyJyBvciAnJGRpci8kb2JqZGlyJyIKIAkgIGZpCiAJZmkKIAk7OwpAQCAtMjU2NSwxOCArMzg4MywxOCBAQAogICAgICAgKi5sbykKIAkjIEp1c3QgYWRkIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgLmxvIGZpbGUuCiAJZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCi0JZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwlkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKIAk7OwogCiAgICAgICAqKQotCWZ1bmNfd2FybmluZyAiXGAtZGxvcGVuJyBpcyBpZ25vcmVkIGZvciBub24tbGlidG9vbCBsaWJyYXJpZXMgYW5kIG9iamVjdHMiCisJZnVuY193YXJuaW5nICInLWRsb3BlbicgaXMgaWdub3JlZCBmb3Igbm9uLWxpYnRvb2wgbGlicmFyaWVzIGFuZCBvYmplY3RzIgogCWNvbnRpbnVlCiAJOzsKICAgICAgIGVzYWMKIAogICAgICAgIyBHZXQgdGhlIGFic29sdXRlIHBhdGhuYW1lLgogICAgICAgYWJzZGlyPWBjZCAiJGRpciIgJiYgcHdkYAotICAgICAgdGVzdCAtbiAiJGFic2RpciIgJiYgZGlyPSIkYWJzZGlyIgorICAgICAgdGVzdCAtbiAiJGFic2RpciIgJiYgZGlyPSRhYnNkaXIKIAogICAgICAgIyBOb3cgYWRkIHRoZSBkaXJlY3RvcnkgdG8gc2hsaWJwYXRoX3Zhci4KICAgICAgIGlmIGV2YWwgInRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCIiOyB0aGVuCkBAIC0yNTg4LDcgKzM5MDYsNyBAQAogCiAgICAgIyBUaGlzIHZhcmlhYmxlIHRlbGxzIHdyYXBwZXIgc2NyaXB0cyBqdXN0IHRvIHNldCBzaGxpYnBhdGhfdmFyCiAgICAgIyByYXRoZXIgdGhhbiBydW5uaW5nIHRoZWlyIHByb2dyYW1zLgotICAgIGxpYnRvb2xfZXhlY3V0ZV9tYWdpYz0iJG1hZ2ljIgorICAgIGxpYnRvb2xfZXhlY3V0ZV9tYWdpYz0kbWFnaWMKIAogICAgICMgQ2hlY2sgaWYgYW55IG9mIHRoZSBhcmd1bWVudHMgaXMgYSB3cmFwcGVyIHNjcmlwdC4KICAgICBhcmdzPQpAQCAtMjYwMSwxMiArMzkxOSwxMiBAQAogCWlmIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdF9wICIkZmlsZSI7IHRoZW4KIAkgIGZ1bmNfc291cmNlICIkZmlsZSIKIAkgICMgVHJhbnNmb3JtIGFyZyB0byB3cmFwcGVkIG5hbWUuCi0JICBmaWxlPSIkcHJvZ2Rpci8kcHJvZ3JhbSIKKwkgIGZpbGU9JHByb2dkaXIvJHByb2dyYW0KIAllbGlmIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAiJGZpbGUiOyB0aGVuCiAJICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICIkZmlsZSIKIAkgIGZ1bmNfc291cmNlICIkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCiAJICAjIFRyYW5zZm9ybSBhcmcgdG8gd3JhcHBlZCBuYW1lLgotCSAgZmlsZT0iJHByb2dkaXIvJHByb2dyYW0iCisJICBmaWxlPSRwcm9nZGlyLyRwcm9ncmFtCiAJZmkKIAk7OwogICAgICAgZXNhYwpAQCAtMjYxNCw3ICszOTMyLDE1IEBACiAgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYXJncyAiJGZpbGUiCiAgICAgZG9uZQogCi0gICAgaWYgdGVzdCAiWCRvcHRfZHJ5X3J1biIgPSBYZmFsc2U7IHRoZW4KKyAgICBpZiAkb3B0X2RyeV9ydW47IHRoZW4KKyAgICAgICMgRGlzcGxheSB3aGF0IHdvdWxkIGJlIGRvbmUuCisgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KKwlldmFsICJcJEVDSE8gXCJcJHNobGlicGF0aF92YXI9XCQkc2hsaWJwYXRoX3ZhclwiIgorCWVjaG8gImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKKyAgICAgIGZpCisgICAgICAkRUNITyAiJGNtZCRhcmdzIgorICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCisgICAgZWxzZQogICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCiAJIyBFeHBvcnQgdGhlIHNobGlicGF0aF92YXIuCiAJZXZhbCAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgpAQCAtMjYzMSwyNSArMzk1NywxOCBAQAogICAgICAgZG9uZQogCiAgICAgICAjIE5vdyBwcmVwYXJlIHRvIGFjdHVhbGx5IGV4ZWMgdGhlIGNvbW1hbmQuCi0gICAgICBleGVjX2NtZD0iXCRjbWQkYXJncyIKLSAgICBlbHNlCi0gICAgICAjIERpc3BsYXkgd2hhdCB3b3VsZCBiZSBkb25lLgotICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCi0JZXZhbCAiXCRFQ0hPIFwiXCRzaGxpYnBhdGhfdmFyPVwkJHNobGlicGF0aF92YXJcIiIKLQllY2hvICJleHBvcnQgJHNobGlicGF0aF92YXIiCi0gICAgICBmaQotICAgICAgJEVDSE8gIiRjbWQkYXJncyIKLSAgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUworICAgICAgZXhlY19jbWQ9XCRjbWQkYXJncwogICAgIGZpCiB9CiAKLXRlc3QgIiRvcHRfbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQordGVzdCBleGVjdXRlID0gIiRvcHRfbW9kZSIgJiYgZnVuY19tb2RlX2V4ZWN1dGUgJHsxKyIkQCJ9CiAKIAogIyBmdW5jX21vZGVfZmluaXNoIGFyZy4uLgogZnVuY19tb2RlX2ZpbmlzaCAoKQogewotICAgICRvcHRfZGVidWcKKyAgICAkZGVidWdfY21kCisKICAgICBsaWJzPQogICAgIGxpYmRpcnM9CiAgICAgYWRtaW5jbWRzPQpAQCAtMjY2MywxMSArMzk4MiwxMSBAQAogCWlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRvcHQiOyB0aGVuCiAJICBmdW5jX2FwcGVuZCBsaWJzICIgJG9wdCIKIAllbHNlCi0JICBmdW5jX3dhcm5pbmcgIlxgJG9wdCcgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorCSAgZnVuY193YXJuaW5nICInJG9wdCcgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgogCWZpCiAKICAgICAgIGVsc2UKLQlmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IFxgJG9wdCciCisJZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCBhcmd1bWVudCAnJG9wdCciCiAgICAgICBmaQogICAgIGRvbmUKIApAQCAtMjY4MiwxMiArNDAwMSwxMiBAQAogICAgICAgIyBSZW1vdmUgc3lzcm9vdCByZWZlcmVuY2VzCiAgICAgICBpZiAkb3B0X2RyeV9ydW47IHRoZW4KICAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KLSAgICAgICAgICBlY2hvICJyZW1vdmluZyByZWZlcmVuY2VzIHRvICRsdF9zeXNyb290IGFuZCBcYD0nIHByZWZpeGVzIGZyb20gJGxpYiIKKyAgICAgICAgICBlY2hvICJyZW1vdmluZyByZWZlcmVuY2VzIHRvICRsdF9zeXNyb290IGFuZCAnPScgcHJlZml4ZXMgZnJvbSAkbGliIgogICAgICAgICBkb25lCiAgICAgICBlbHNlCiAgICAgICAgIHRtcGRpcj1gZnVuY19ta3RlbXBkaXJgCiAgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCi0JICBzZWQgLWUgIiR7c3lzcm9vdF9jbWR9IHMvXChbICddLVtMUl1cKT0vXDEvZzsgcy9cKFsgJ11cKT0vXDEvZyIgJGxpYiBcCisJICAkU0VEIC1lICIkc3lzcm9vdF9jbWQgcy9cKFsgJ10tW0xSXVwpPS9cMS9nOyBzL1woWyAnXVwpPS9cMS9nIiAkbGliIFwKIAkgICAgPiAkdG1wZGlyL3RtcC1sYQogCSAgbXYgLWYgJHRtcGRpci90bXAtbGEgJGxpYgogCWRvbmUKQEAgLTI3MTIsNyArNDAzMSw3IEBACiAgICAgZmkKIAogICAgICMgRXhpdCBoZXJlIGlmIHRoZXkgd2FudGVkIHNpbGVudCBtb2RlLgotICAgICRvcHRfc2lsZW50ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUworICAgICRvcHRfcXVpZXQgJiYgZXhpdCAkRVhJVF9TVUNDRVNTCiAKICAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgogICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKQEAgLTI3MjMsMjcgKzQwNDIsMjcgQEAKICAgICAgIGVjaG8KICAgICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgogICAgICAgZWNobyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCi0gICAgICBlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgorICAgICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSAnLUxMSUJESVInIgogICAgICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgogICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCi0JZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlICckc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCiAJZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgogICAgICAgZmkKICAgICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLQllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlICckcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgogCWVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCiAgICAgICBmaQogICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCiAJbGliZGlyPUxJQkRJUgogCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKIAotCSRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCisJJEVDSE8gIiAgIC0gdXNlIHRoZSAnJGZsYWcnIGxpbmtlciBmbGFnIgogICAgICAgZmkKICAgICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCiAJJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgogICAgICAgZmkKICAgICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0JZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCisJZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byAnL2V0Yy9sZC5zby5jb25mJyIKICAgICAgIGZpCiAgICAgICBlY2hvCiAKQEAgLTI3NjIsMTggKzQwODEsMjAgQEAKICAgICBleGl0ICRFWElUX1NVQ0NFU1MKIH0KIAotdGVzdCAiJG9wdF9tb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQordGVzdCBmaW5pc2ggPSAiJG9wdF9tb2RlIiAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQogCiAKICMgZnVuY19tb2RlX2luc3RhbGwgYXJnLi4uCiBmdW5jX21vZGVfaW5zdGFsbCAoKQogewotICAgICRvcHRfZGVidWcKKyAgICAkZGVidWdfY21kCisKICAgICAjIFRoZXJlIG1heSBiZSBhbiBvcHRpb25hbCBzaCgxKSBhcmd1bWVudCBhdCB0aGUgYmVnaW5uaW5nIG9mCiAgICAgIyBpbnN0YWxsX3Byb2cgKGVzcGVjaWFsbHkgb24gV2luZG93cyBOVCkuCi0gICAgaWYgdGVzdCAiJG5vbm9wdCIgPSAiJFNIRUxMIiB8fCB0ZXN0ICIkbm9ub3B0IiA9IC9iaW4vc2ggfHwKKyAgICBpZiB0ZXN0ICIkU0hFTEwiID0gIiRub25vcHQiIHx8IHRlc3QgL2Jpbi9zaCA9ICIkbm9ub3B0IiB8fAogICAgICAgICMgQWxsb3cgdGhlIHVzZSBvZiBHTlUgc2h0b29sJ3MgaW5zdGFsbCBjb21tYW5kLgotICAgICAgIGNhc2UgJG5vbm9wdCBpbiAqc2h0b29sKikgOjs7ICopIGZhbHNlOzsgZXNhYzsgdGhlbgorICAgICAgIGNhc2UgJG5vbm9wdCBpbiAqc2h0b29sKikgOjs7ICopIGZhbHNlOzsgZXNhYworICAgIHRoZW4KICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSBpdC4KICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRub25vcHQiCiAgICAgICBpbnN0YWxsX3Byb2c9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCAiCkBAIC0yODAwLDcgKzQxMjEsNyBAQAogICAgIG9wdHM9CiAgICAgcHJldj0KICAgICBpbnN0YWxsX3R5cGU9Ci0gICAgaXNkaXI9bm8KKyAgICBpc2Rpcj1mYWxzZQogICAgIHN0cmlwbWU9CiAgICAgbm9fbW9kZT06CiAgICAgZm9yIGFyZwpAQCAtMjgxMyw3ICs0MTM0LDcgQEAKICAgICAgIGZpCiAKICAgICAgIGNhc2UgJGFyZyBpbgotICAgICAgLWQpIGlzZGlyPXllcyA7OworICAgICAgLWQpIGlzZGlyPTogOzsKICAgICAgIC1mKQogCWlmICRpbnN0YWxsX2NwOyB0aGVuIDo7IGVsc2UKIAkgIHByZXY9JGFyZwpAQCAtMjgzMSw3ICs0MTUyLDcgQEAKICAgICAgICopCiAJIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRlZCBhbiBhcmd1bWVudCwgdGhlbiBza2lwIGl0LgogCWlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgotCSAgaWYgdGVzdCAieCRwcmV2IiA9IHgtbSAmJiB0ZXN0IC1uICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIjsgdGhlbgorCSAgaWYgdGVzdCBYLW0gPSAiWCRwcmV2IiAmJiB0ZXN0IC1uICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIjsgdGhlbgogCSAgICBhcmcyPSRpbnN0YWxsX292ZXJyaWRlX21vZGUKIAkgICAgbm9fbW9kZT1mYWxzZQogCSAgZmkKQEAgLTI4NTYsNyArNDE3Nyw3IEBACiAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYW4gaW5zdGFsbCBwcm9ncmFtIgogCiAgICAgdGVzdCAtbiAiJHByZXYiICYmIFwKLSAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlIFxgJHByZXYnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKKyAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlICckcHJldicgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IgogCiAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIgJiYgJG5vX21vZGU7IHRoZW4KICAgICAgIGlmICRpbnN0YWxsX2NwOyB0aGVuIDo7IGVsc2UKQEAgLTI4NzgsMTkgKzQxOTksMTkgQEAKICAgICBkZXN0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAogICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5LgotICAgIHRlc3QgLWQgIiRkZXN0IiAmJiBpc2Rpcj15ZXMKLSAgICBpZiB0ZXN0ICIkaXNkaXIiID0geWVzOyB0aGVuCi0gICAgICBkZXN0ZGlyPSIkZGVzdCIKKyAgICB0ZXN0IC1kICIkZGVzdCIgJiYgaXNkaXI9OgorICAgIGlmICRpc2RpcjsgdGhlbgorICAgICAgZGVzdGRpcj0kZGVzdAogICAgICAgZGVzdG5hbWU9CiAgICAgZWxzZQogICAgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJGRlc3QiICIiICIuIgotICAgICAgZGVzdGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0gICAgICBkZXN0bmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorICAgICAgZGVzdGRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAorICAgICAgZGVzdG5hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAKICAgICAgICMgTm90IGEgZGlyZWN0b3J5LCBzbyBjaGVjayB0byBzZWUgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSBmaWxlIHNwZWNpZmllZC4KICAgICAgIHNldCBkdW1teSAkZmlsZXM7IHNoaWZ0CiAgICAgICB0ZXN0ICIkIyIgLWd0IDEgJiYgXAotCWZ1bmNfZmF0YWxfaGVscCAiXGAkZGVzdCcgaXMgbm90IGEgZGlyZWN0b3J5IgorCWZ1bmNfZmF0YWxfaGVscCAiJyRkZXN0JyBpcyBub3QgYSBkaXJlY3RvcnkiCiAgICAgZmkKICAgICBjYXNlICRkZXN0ZGlyIGluCiAgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwpAQCAtMjg5OSw3ICs0MjIwLDcgQEAKIAljYXNlICRmaWxlIGluCiAJKi5sbykgOzsKIAkqKQotCSAgZnVuY19mYXRhbF9oZWxwICJcYCRkZXN0ZGlyJyBtdXN0IGJlIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIgorCSAgZnVuY19mYXRhbF9oZWxwICInJGRlc3RkaXInIG11c3QgYmUgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUiCiAJICA7OwogCWVzYWMKICAgICAgIGRvbmUKQEAgLTI5MDgsNyArNDIyOSw3IEBACiAKICAgICAjIFRoaXMgdmFyaWFibGUgdGVsbHMgd3JhcHBlciBzY3JpcHRzIGp1c3QgdG8gc2V0IHZhcmlhYmxlcyByYXRoZXIKICAgICAjIHRoYW4gcnVubmluZyB0aGVpciBwcm9ncmFtcy4KLSAgICBsaWJ0b29sX2luc3RhbGxfbWFnaWM9IiRtYWdpYyIKKyAgICBsaWJ0b29sX2luc3RhbGxfbWFnaWM9JG1hZ2ljCiAKICAgICBzdGF0aWNsaWJzPQogICAgIGZ1dHVyZV9saWJkaXJzPQpAQCAtMjkyOCw3ICs0MjQ5LDcgQEAKIAogCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCiAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKLQkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorCSAgfHwgZnVuY19mYXRhbF9oZWxwICInJGZpbGUnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKIAogCWxpYnJhcnlfbmFtZXM9CiAJb2xkX2xpYnJhcnk9CkBAIC0yOTUwLDcgKzQyNzEsNyBAQAogCWZpCiAKIAlmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiLyIgIiIKLQlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorCWRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAogCWZ1bmNfYXBwZW5kIGRpciAiJG9iamRpciIKIAogCWlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KQEAgLTI5NjQsNyArNDI4NSw3IEBACiAJICAjIGFyZSBpbnN0YWxsZWQgaW50byAkbGliZGlyLy4uL2JpbiAoY3VycmVudGx5LCB0aGF0IHdvcmtzIGZpbmUpCiAJICAjIGJ1dCBpdCdzIHNvbWV0aGluZyB0byBrZWVwIGFuIGV5ZSBvbi4KIAkgIHRlc3QgIiRpbnN0X3ByZWZpeF9kaXIiID0gIiRkZXN0ZGlyIiAmJiBcCi0JICAgIGZ1bmNfZmF0YWxfZXJyb3IgImVycm9yOiBjYW5ub3QgaW5zdGFsbCBcYCRmaWxlJyB0byBhIGRpcmVjdG9yeSBub3QgZW5kaW5nIGluICRsaWJkaXIiCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImVycm9yOiBjYW5ub3QgaW5zdGFsbCAnJGZpbGUnIHRvIGEgZGlyZWN0b3J5IG5vdCBlbmRpbmcgaW4gJGxpYmRpciIKIAogCSAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KIAkgICAgIyBTdGljayB0aGUgaW5zdF9wcmVmaXhfZGlyIGRhdGEgaW50byB0aGUgbGluayBjb21tYW5kLgpAQCAtMjk3MywyOSArNDI5NCwzNiBAQAogCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICJzJUBpbnN0X3ByZWZpeF9kaXJAJSUiYAogCSAgZmkKIAotCSAgZnVuY193YXJuaW5nICJyZWxpbmtpbmcgXGAkZmlsZSciCisJICBmdW5jX3dhcm5pbmcgInJlbGlua2luZyAnJGZpbGUnIgogCSAgZnVuY19zaG93X2V2YWwgIiRyZWxpbmtfY29tbWFuZCIgXAotCSAgICAnZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IHJlbGluayBcYCRmaWxlJ1wnJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0IicKKwkgICAgJ2Z1bmNfZmF0YWxfZXJyb3IgImVycm9yOiByZWxpbmsgJ1wnJyRmaWxlJ1wnJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0IicKIAlmaQogCiAJIyBTZWUgdGhlIG5hbWVzIG9mIHRoZSBzaGFyZWQgbGlicmFyeS4KIAlzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXM7IHNoaWZ0CiAJaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0JICByZWFsbmFtZT0iJDEiCisJICByZWFsbmFtZT0kMQogCSAgc2hpZnQKIAotCSAgc3JjbmFtZT0iJHJlYWxuYW1lIgotCSAgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIiAmJiBzcmNuYW1lPSIkcmVhbG5hbWUiVAorCSAgc3JjbmFtZT0kcmVhbG5hbWUKKwkgIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCIgJiYgc3JjbmFtZT0ke3JlYWxuYW1lfVQKIAogCSAgIyBJbnN0YWxsIHRoZSBzaGFyZWQgbGlicmFyeSBhbmQgYnVpbGQgdGhlIHN5bWxpbmtzLgogCSAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3NoYXJlZF9wcm9nICRkaXIvJHNyY25hbWUgJGRlc3RkaXIvJHJlYWxuYW1lIiBcCiAJICAgICAgJ2V4aXQgJD8nCi0JICB0c3RyaXBtZT0iJHN0cmlwbWUiCisJICB0c3RyaXBtZT0kc3RyaXBtZQogCSAgY2FzZSAkaG9zdF9vcyBpbgogCSAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQogCSAgICBjYXNlICRyZWFsbmFtZSBpbgogCSAgICAqLmRsbC5hKQotCSAgICAgIHRzdHJpcG1lPSIiCisJICAgICAgdHN0cmlwbWU9CisJICAgICAgOzsKKwkgICAgZXNhYworCSAgICA7OworCSAgb3MyKikKKwkgICAgY2FzZSAkcmVhbG5hbWUgaW4KKwkgICAgKl9kbGwuYSkKKwkgICAgICB0c3RyaXBtZT0KIAkgICAgICA7OwogCSAgICBlc2FjCiAJICAgIDs7CkBAIC0zMDA2LDcgKzQzMzQsNyBAQAogCiAJICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KIAkgICAgIyBEZWxldGUgdGhlIG9sZCBzeW1saW5rcywgYW5kIGNyZWF0ZSBuZXcgb25lcy4KLQkgICAgIyBUcnkgYGxuIC1zZicgZmlyc3QsIGJlY2F1c2UgdGhlIGBsbicgYmluYXJ5IG1pZ2h0IGRlcGVuZCBvbgorCSAgICAjIFRyeSAnbG4gLXNmJyBmaXJzdCwgYmVjYXVzZSB0aGUgJ2xuJyBiaW5hcnkgbWlnaHQgZGVwZW5kIG9uCiAJICAgICMgdGhlIHN5bWxpbmsgd2UgcmVwbGFjZSEgIFNvbGFyaXMgL2Jpbi9sbiBkb2VzIG5vdCB1bmRlcnN0YW5kIC1mLAogCSAgICAjIHNvIHdlIGFsc28gbmVlZCB0byB0cnkgcm0gJiYgbG4gLXMuCiAJICAgIGZvciBsaW5rbmFtZQpAQCAtMzAxNywxNCArNDM0NSwxNCBAQAogCSAgZmkKIAogCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIHBvc3RpbnN0YWxsIGNvbW1hbmRzLgotCSAgbGliPSIkZGVzdGRpci8kcmVhbG5hbWUiCisJICBsaWI9JGRlc3RkaXIvJHJlYWxuYW1lCiAJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RpbnN0YWxsX2NtZHMiICdleGl0ICQ/JwogCWZpCiAKIAkjIEluc3RhbGwgdGhlIHBzZXVkby1saWJyYXJ5IGZvciBpbmZvcm1hdGlvbiBwdXJwb3Nlcy4KIAlmdW5jX2Jhc2VuYW1lICIkZmlsZSIKLQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JaW5zdG5hbWU9IiRkaXIvJG5hbWUiaQorCW5hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisJaW5zdG5hbWU9JGRpci8ke25hbWV9aQogCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgJ2V4aXQgJD8nCiAKIAkjIE1heWJlIGluc3RhbGwgdGhlIHN0YXRpYyBsaWJyYXJ5LCB0b28uCkBAIC0zMDM2LDExICs0MzY0LDExIEBACiAKIAkjIEZpZ3VyZSBvdXQgZGVzdGluYXRpb24gZmlsZSBuYW1lLCBpZiBpdCB3YXNuJ3QgYWxyZWFkeSBzcGVjaWZpZWQuCiAJaWYgdGVzdCAtbiAiJGRlc3RuYW1lIjsgdGhlbgotCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0bmFtZSIKKwkgIGRlc3RmaWxlPSRkZXN0ZGlyLyRkZXN0bmFtZQogCWVsc2UKIAkgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgotCSAgZGVzdGZpbGU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLQkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdGZpbGUiCisJICBkZXN0ZmlsZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKwkgIGRlc3RmaWxlPSRkZXN0ZGlyLyRkZXN0ZmlsZQogCWZpCiAKIAkjIERlZHVjZSB0aGUgbmFtZSBvZiB0aGUgZGVzdGluYXRpb24gb2xkLXN0eWxlIG9iamVjdCBmaWxlLgpAQCAtMzA1MCwxMSArNDM3OCwxMSBAQAogCSAgc3RhdGljZGVzdD0kZnVuY19sbzJvX3Jlc3VsdAogCSAgOzsKIAkqLiRvYmpleHQpCi0JICBzdGF0aWNkZXN0PSIkZGVzdGZpbGUiCisJICBzdGF0aWNkZXN0PSRkZXN0ZmlsZQogCSAgZGVzdGZpbGU9CiAJICA7OwogCSopCi0JICBmdW5jX2ZhdGFsX2hlbHAgImNhbm5vdCBjb3B5IGEgbGlidG9vbCBvYmplY3QgdG8gXGAkZGVzdGZpbGUnIgorCSAgZnVuY19mYXRhbF9oZWxwICJjYW5ub3QgY29weSBhIGxpYnRvb2wgb2JqZWN0IHRvICckZGVzdGZpbGUnIgogCSAgOzsKIAllc2FjCiAKQEAgLTMwNjMsNyArNDM5MSw3IEBACiAJICBmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyAkZmlsZSAkZGVzdGZpbGUiICdleGl0ICQ/JwogCiAJIyBJbnN0YWxsIHRoZSBvbGQgb2JqZWN0IGlmIGVuYWJsZWQuCi0JaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgorCWlmIHRlc3QgeWVzID0gIiRidWlsZF9vbGRfbGlicyI7IHRoZW4KIAkgICMgRGVkdWNlIHRoZSBuYW1lIG9mIHRoZSBvbGQtc3R5bGUgb2JqZWN0IGZpbGUuCiAJICBmdW5jX2xvMm8gIiRmaWxlIgogCSAgc3RhdGljb2JqPSRmdW5jX2xvMm9fcmVzdWx0CkBAIC0zMDc1LDIzICs0NDAzLDIzIEBACiAgICAgICAqKQogCSMgRmlndXJlIG91dCBkZXN0aW5hdGlvbiBmaWxlIG5hbWUsIGlmIGl0IHdhc24ndCBhbHJlYWR5IHNwZWNpZmllZC4KIAlpZiB0ZXN0IC1uICIkZGVzdG5hbWUiOyB0aGVuCi0JICBkZXN0ZmlsZT0iJGRlc3RkaXIvJGRlc3RuYW1lIgorCSAgZGVzdGZpbGU9JGRlc3RkaXIvJGRlc3RuYW1lCiAJZWxzZQogCSAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCi0JICBkZXN0ZmlsZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0ZmlsZSIKKwkgIGRlc3RmaWxlPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorCSAgZGVzdGZpbGU9JGRlc3RkaXIvJGRlc3RmaWxlCiAJZmkKIAogCSMgSWYgdGhlIGZpbGUgaXMgbWlzc2luZywgYW5kIHRoZXJlIGlzIGEgLmV4ZSBvbiB0aGUgZW5kLCBzdHJpcCBpdAogCSMgYmVjYXVzZSBpdCBpcyBtb3N0IGxpa2VseSBhIGxpYnRvb2wgc2NyaXB0IHdlIGFjdHVhbGx5IHdhbnQgdG8KIAkjIGluc3RhbGwKLQlzdHJpcHBlZF9leHQ9IiIKKwlzdHJpcHBlZF9leHQ9CiAJY2FzZSAkZmlsZSBpbgogCSAgKi5leGUpCiAJICAgIGlmIHRlc3QgISAtZiAiJGZpbGUiOyB0aGVuCiAJICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZmlsZSIKIAkgICAgICBmaWxlPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLQkgICAgICBzdHJpcHBlZF9leHQ9Ii5leGUiCisJICAgICAgc3RyaXBwZWRfZXh0PS5leGUKIAkgICAgZmkKIAkgICAgOzsKIAllc2FjCkBAIC0zMTE5LDE5ICs0NDQ3LDE5IEBACiAKIAkgICMgQ2hlY2sgdGhlIHZhcmlhYmxlcyB0aGF0IHNob3VsZCBoYXZlIGJlZW4gc2V0LgogCSAgdGVzdCAteiAiJGdlbmVyYXRlZF9ieV9saWJ0b29sX3ZlcnNpb24iICYmIFwKLQkgICAgZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0IFxgJHdyYXBwZXInIgorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgJyR3cmFwcGVyJyIKIAotCSAgZmluYWxpemU9eWVzCisJICBmaW5hbGl6ZT06CiAJICBmb3IgbGliIGluICRub3RpbnN0X2RlcGxpYnM7IGRvCiAJICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgZWFjaCBsaWJyYXJ5IGlzIGluc3RhbGxlZC4KIAkgICAgbGliZGlyPQogCSAgICBpZiB0ZXN0IC1mICIkbGliIjsgdGhlbgogCSAgICAgIGZ1bmNfc291cmNlICIkbGliIgogCSAgICBmaQotCSAgICBsaWJmaWxlPSIkbGliZGlyLyJgJEVDSE8gIiRsaWIiIHwgJFNFRCAncyVeLiovJSVnJ2AgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisJICAgIGxpYmZpbGU9JGxpYmRpci9gJEVDSE8gIiRsaWIiIHwgJFNFRCAncyVeLiovJSVnJ2AKIAkgICAgaWYgdGVzdCAtbiAiJGxpYmRpciIgJiYgdGVzdCAhIC1mICIkbGliZmlsZSI7IHRoZW4KLQkgICAgICBmdW5jX3dhcm5pbmcgIlxgJGxpYicgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBcYCRsaWJkaXInIgotCSAgICAgIGZpbmFsaXplPW5vCisJICAgICAgZnVuY193YXJuaW5nICInJGxpYicgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiAnJGxpYmRpciciCisJICAgICAgZmluYWxpemU9ZmFsc2UKIAkgICAgZmkKIAkgIGRvbmUKIApAQCAtMzEzOSwyOSArNDQ2NywyOSBAQAogCSAgZnVuY19zb3VyY2UgIiR3cmFwcGVyIgogCiAJICBvdXRwdXRuYW1lPQotCSAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSBubyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCisJICBpZiB0ZXN0IG5vID0gIiRmYXN0X2luc3RhbGwiICYmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKLQkgICAgICBpZiB0ZXN0ICIkZmluYWxpemUiID0geWVzOyB0aGVuCisJICAgICAgaWYgJGZpbmFsaXplOyB0aGVuCiAJICAgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAogCQlmdW5jX2Jhc2VuYW1lICIkZmlsZSRzdHJpcHBlZF9leHQiCi0JCWZpbGU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLQkgICAgICAgIG91dHB1dG5hbWU9IiR0bXBkaXIvJGZpbGUiCisJCWZpbGU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisJICAgICAgICBvdXRwdXRuYW1lPSR0bXBkaXIvJGZpbGUKIAkgICAgICAgICMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KIAkgICAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0bmFtZSInJWcnYAogCi0JICAgICAgICAkb3B0X3NpbGVudCB8fCB7CisJICAgICAgICAkb3B0X3F1aWV0IHx8IHsKIAkgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkcmVsaW5rX2NvbW1hbmQiCiAJCSAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgogCSAgICAgICAgfQogCSAgICAgICAgaWYgZXZhbCAiJHJlbGlua19jb21tYW5kIjsgdGhlbiA6CiAJICAgICAgICAgIGVsc2UKLQkJICBmdW5jX2Vycm9yICJlcnJvcjogcmVsaW5rIFxgJGZpbGUnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQiCisJCSAgZnVuY19lcnJvciAiZXJyb3I6IHJlbGluayAnJGZpbGUnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQiCiAJCSAgJG9wdF9kcnlfcnVuIHx8ICR7Uk19ciAiJHRtcGRpciIKIAkJICBjb250aW51ZQogCSAgICAgICAgZmkKLQkgICAgICAgIGZpbGU9IiRvdXRwdXRuYW1lIgorCSAgICAgICAgZmlsZT0kb3V0cHV0bmFtZQogCSAgICAgIGVsc2UKLQkgICAgICAgIGZ1bmNfd2FybmluZyAiY2Fubm90IHJlbGluayBcYCRmaWxlJyIKKwkgICAgICAgIGZ1bmNfd2FybmluZyAiY2Fubm90IHJlbGluayAnJGZpbGUnIgogCSAgICAgIGZpCiAJICAgIH0KIAkgIGVsc2UKQEAgLTMxOTgsMTAgKzQ1MjYsMTAgQEAKIAogICAgIGZvciBmaWxlIGluICRzdGF0aWNsaWJzOyBkbwogICAgICAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCi0gICAgICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisgICAgICBuYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCiAgICAgICAjIFNldCB1cCB0aGUgcmFubGliIHBhcmFtZXRlcnMuCi0gICAgICBvbGRsaWI9IiRkZXN0ZGlyLyRuYW1lIgorICAgICAgb2xkbGliPSRkZXN0ZGlyLyRuYW1lCiAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9sZGxpYiIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKICAgICAgIHRvb2xfb2xkbGliPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKIApAQCAtMzIxNiwxOCArNDU0NCwxOCBAQAogICAgIGRvbmUKIAogICAgIHRlc3QgLW4gIiRmdXR1cmVfbGliZGlycyIgJiYgXAotICAgICAgZnVuY193YXJuaW5nICJyZW1lbWJlciB0byBydW4gXGAkcHJvZ25hbWUgLS1maW5pc2gkZnV0dXJlX2xpYmRpcnMnIgorICAgICAgZnVuY193YXJuaW5nICJyZW1lbWJlciB0byBydW4gJyRwcm9nbmFtZSAtLWZpbmlzaCRmdXR1cmVfbGliZGlycyciCiAKICAgICBpZiB0ZXN0IC1uICIkY3VycmVudF9saWJkaXJzIjsgdGhlbgogICAgICAgIyBNYXliZSBqdXN0IGRvIGEgZHJ5IHJ1bi4KICAgICAgICRvcHRfZHJ5X3J1biAmJiBjdXJyZW50X2xpYmRpcnM9IiAtbiRjdXJyZW50X2xpYmRpcnMiCi0gICAgICBleGVjX2NtZD0nJFNIRUxMICRwcm9ncGF0aCAkcHJlc2VydmVfYXJncyAtLWZpbmlzaCRjdXJyZW50X2xpYmRpcnMnCisgICAgICBleGVjX2NtZD0nJFNIRUxMICIkcHJvZ3BhdGgiICRwcmVzZXJ2ZV9hcmdzIC0tZmluaXNoJGN1cnJlbnRfbGliZGlycycKICAgICBlbHNlCiAgICAgICBleGl0ICRFWElUX1NVQ0NFU1MKICAgICBmaQogfQogCi10ZXN0ICIkb3B0X21vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KK3Rlc3QgaW5zdGFsbCA9ICIkb3B0X21vZGUiICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQogCiAKICMgZnVuY19nZW5lcmF0ZV9kbHN5bXMgb3V0cHV0bmFtZSBvcmlnaW5hdG9yIHBpY19wCkBAIC0zMjM1LDE2ICs0NTYzLDE3IEBACiAjIGEgZGxwcmVvcGVuIHN5bWJvbCB0YWJsZS4KIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICgpCiB7Ci0gICAgJG9wdF9kZWJ1ZwotICAgIG15X291dHB1dG5hbWU9IiQxIgotICAgIG15X29yaWdpbmF0b3I9IiQyIgotICAgIG15X3BpY19wPSIkezMtbm99IgotICAgIG15X3ByZWZpeD1gJEVDSE8gIiRteV9vcmlnaW5hdG9yIiB8IHNlZCAncyVbXmEtekEtWjAtOV0lXyVnJ2AKKyAgICAkZGVidWdfY21kCisKKyAgICBteV9vdXRwdXRuYW1lPSQxCisgICAgbXlfb3JpZ2luYXRvcj0kMgorICAgIG15X3BpY19wPSR7My1mYWxzZX0KKyAgICBteV9wcmVmaXg9YCRFQ0hPICIkbXlfb3JpZ2luYXRvciIgfCAkU0VEICdzJVteYS16QS1aMC05XSVfJWcnYAogICAgIG15X2Rsc3ltcz0KIAotICAgIGlmIHRlc3QgLW4gIiRkbGZpbGVzJGRscHJlZmlsZXMiIHx8IHRlc3QgIiRkbHNlbGYiICE9IG5vOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwgdGVzdCBubyAhPSAiJGRsc2VsZiI7IHRoZW4KICAgICAgIGlmIHRlc3QgLW4gIiROTSIgJiYgdGVzdCAtbiAiJGdsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KLQlteV9kbHN5bXM9IiR7bXlfb3V0cHV0bmFtZX1TLmMiCisJbXlfZGxzeW1zPSR7bXlfb3V0cHV0bmFtZX1TLmMKICAgICAgIGVsc2UKIAlmdW5jX2Vycm9yICJub3QgY29uZmlndXJlZCB0byBleHRyYWN0IGdsb2JhbCBzeW1ib2xzIGZyb20gZGxwcmVvcGVuZWQgZmlsZXMiCiAgICAgICBmaQpAQCAtMzI1NSw3ICs0NTg0LDcgQEAKICAgICAgICIiKSA7OwogICAgICAgKi5jKQogCSMgRGlzY292ZXIgdGhlIG5saXN0IG9mIGVhY2ggb2YgdGhlIGRsZmlsZXMuCi0Jbmxpc3Q9IiRvdXRwdXRfb2JqZGlyLyR7bXlfb3V0cHV0bmFtZX0ubm0iCisJbmxpc3Q9JG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUubm0KIAogCWZ1bmNfc2hvd19ldmFsICIkUk0gJG5saXN0ICR7bmxpc3R9UyAke25saXN0fVQiCiAKQEAgLTMyNjMsMzQgKzQ1OTIsMzYgQEAKIAlmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCiAKIAkkb3B0X2RyeV9ydW4gfHwgJEVDSE8gPiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLS8qICRteV9kbHN5bXMgLSBzeW1ib2wgcmVzb2x1dGlvbiB0YWJsZSBmb3IgXGAkbXlfb3V0cHV0bmFtZScgZGxzeW0gZW11bGF0aW9uLiAqLwotLyogR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTiAqLworLyogJG15X2Rsc3ltcyAtIHN5bWJvbCByZXNvbHV0aW9uIHRhYmxlIGZvciAnJG15X291dHB1dG5hbWUnIGRsc3ltIGVtdWxhdGlvbi4gKi8KKy8qIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFKSAkVkVSU0lPTiAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiBcIkNcIiB7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+PSA0KSkgfHwgKF9fR05VQ19fID4gNCkpCisjaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiAoKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPj0gNCkpIHx8IChfX0dOVUNfXyA+IDQpKQogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiCiAjZW5kaWYKIAogLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0jaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX0NZR1dJTl9fIHx8IGRlZmluZWQgX1dJTjMyX1dDRQorLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjYW4ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCiAgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCiAjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotI2VsaWYgZGVmaW5lZChfX29zZl9fKQorI2VsaWYgZGVmaW5lZCBfX29zZl9fCiAvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KICMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCiAjZWxzZQogIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKICNlbmRpZgogCisjZGVmaW5lIFNUUkVRKHMxLCBzMikgKHN0cmNtcCAoKHMxKSwgKHMyKSkgPT0gMCkKKwogLyogRXh0ZXJuYWwgc3ltYm9sIGRlY2xhcmF0aW9ucyBmb3IgdGhlIGNvbXBpbGVyLiAqL1wKICIKIAotCWlmIHRlc3QgIiRkbHNlbGYiID0geWVzOyB0aGVuCi0JICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJG91dHB1dCciCisJaWYgdGVzdCB5ZXMgPSAiJGRsc2VsZiI7IHRoZW4KKwkgIGZ1bmNfdmVyYm9zZSAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgJyRvdXRwdXQnIgogCiAJICAkb3B0X2RyeV9ydW4gfHwgZWNobyAnOiBAUFJPR1JBTUAgJyA+ICIkbmxpc3QiCiAKQEAgLTMyOTgsNyArNDYyOSw3IEBACiAJICBwcm9nZmlsZXM9YCRFQ0hPICIkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCiAJICBmb3IgcHJvZ2ZpbGUgaW4gJHByb2dmaWxlczsgZG8KIAkgICAgZnVuY190b190b29sX2ZpbGUgIiRwcm9nZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLQkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQnIgorCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tICckZnVuY190b190b29sX2ZpbGVfcmVzdWx0JyIKIAkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKIAkgIGRvbmUKIApAQCAtMzMxOCwxMCArNDY0OSwxMCBAQAogCiAJICAjIFByZXBhcmUgdGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scwogCSAgaWYgdGVzdCAteiAiJGV4cG9ydF9zeW1ib2xzIjsgdGhlbgotCSAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgorCSAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAKIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKIAkgICAgICAkUk0gJGV4cG9ydF9zeW1ib2xzCi0JICAgICAgZXZhbCAiJHtTRUR9IC1uIC1lICcvXjogQFBST0dSQU1AICQvZCcgLWUgJ3MvXi4qIFwoLipcKSQvXDEvcCcgIic8ICIkbmxpc3QiID4gIiRleHBvcnRfc3ltYm9scyInCisJICAgICAgZXZhbCAiJFNFRCAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnICInPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiJwogCSAgICAgIGNhc2UgJGhvc3QgaW4KIAkgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKICAgICAgICAgICAgICAgICBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwpAQCAtMzMzMSw3ICs0NjYyLDcgQEAKIAkgICAgfQogCSAgZWxzZQogCSAgICAkb3B0X2RyeV9ydW4gfHwgewotCSAgICAgIGV2YWwgIiR7U0VEfSAtZSAncy9cKFtdLlsqXiRdXCkvXFxcXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIicgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiJworCSAgICAgIGV2YWwgIiRTRUQgLWUgJ3MvXChbXS5bKl4kXVwpL1xcXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyInIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIicKIAkgICAgICBldmFsICckR1JFUCAtZiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUJwogCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCiAJICAgICAgY2FzZSAkaG9zdCBpbgpAQCAtMzM0NSwyMiArNDY3NiwyMiBAQAogCWZpCiAKIAlmb3IgZGxwcmVmaWxlIGluICRkbHByZWZpbGVzOyBkbwotCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRkbHByZWZpbGUnIgorCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSAnJGRscHJlZmlsZSciCiAJICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlIgotCSAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgbmFtZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKICAgICAgICAgICBjYXNlICRob3N0IGluCiAJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQogCSAgICAgICMgaWYgYW4gaW1wb3J0IGxpYnJhcnksIHdlIG5lZWQgdG8gb2J0YWluIGRsbmFtZQogCSAgICAgIGlmIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICIkZGxwcmVmaWxlIjsgdGhlbgogCSAgICAgICAgZnVuY190cl9zaCAiJGRscHJlZmlsZSIKIAkgICAgICAgIGV2YWwgImN1cnJfbGFmaWxlPVwkbGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQiCi0JICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iIgorCSAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9CiAJICAgICAgICBpZiB0ZXN0IC1uICIkY3Vycl9sYWZpbGUiICYmIGZ1bmNfbGFsaWJfcCAiJGN1cnJfbGFmaWxlIjsgdGhlbgogCSAgICAgICAgICAjIFVzZSBzdWJzaGVsbCwgdG8gYXZvaWQgY2xvYmJlcmluZyBjdXJyZW50IHZhcmlhYmxlIHZhbHVlcwogCSAgICAgICAgICBkbHByZWZpbGVfZGxuYW1lPWBzb3VyY2UgIiRjdXJyX2xhZmlsZSIgJiYgZWNobyAiJGRsbmFtZSJgCi0JICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxuYW1lIiA7IHRoZW4KKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbG5hbWUiOyB0aGVuCiAJICAgICAgICAgICAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZV9kbG5hbWUiCi0JICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKIAkgICAgICAgICAgZWxzZQogCSAgICAgICAgICAgICMgbm8gbGFmaWxlLiB1c2VyIGV4cGxpY2l0bHkgcmVxdWVzdGVkIC1kbHByZW9wZW4gPGltcG9ydCBsaWJyYXJ5Pi4KIAkgICAgICAgICAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgIiRkbHByZWZpbGUiCkBAIC0zMzY4LDcgKzQ2OTksNyBAQAogCSAgICAgICAgICBmaQogCSAgICAgICAgZmkKIAkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0JICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxiYXNlbmFtZSIgOyB0aGVuCisJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxiYXNlbmFtZSI7IHRoZW4KIAkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkZGxwcmVmaWxlX2RsYmFzZW5hbWUiID4+ICIkbmxpc3QiJwogCSAgICAgICAgICBlbHNlCiAJICAgICAgICAgICAgZnVuY193YXJuaW5nICJDb3VsZCBub3QgY29tcHV0ZSBETEwgbmFtZSBmcm9tICRuYW1lIgpAQCAtMzQyNCw2ICs0NzU1LDExIEBACiAJICAgIGVjaG8gJy8qIE5PTkUgKi8nID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgogCSAgZmkKIAorCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJHtubGlzdH1JIicKKwkgIGlmIHRlc3QgLW4gIiRnbG9iYWxfc3ltYm9sX3RvX2ltcG9ydCI7IHRoZW4KKwkgICAgZXZhbCAiJGdsb2JhbF9zeW1ib2xfdG9faW1wb3J0IicgPCAiJG5saXN0IlMgPiAiJG5saXN0IkknCisJICBmaQorCiAJICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAogCiAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCkBAIC0zNDMyLDExICs0NzY4LDMwIEBACiAgIHZvaWQgKmFkZHJlc3M7CiB9IGx0X2Rsc3ltbGlzdDsKIGV4dGVybiBMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKLWx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXTsKK2x0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXTtcCisiCisKKwkgIGlmIHRlc3QgLXMgIiRubGlzdCJJOyB0aGVuCisJICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCitzdGF0aWMgdm9pZCBsdF9zeW1pbml0KHZvaWQpCit7CisgIExUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdCAqc3ltYm9sID0gbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sczsKKyAgZm9yICg7IHN5bWJvbC0+bmFtZTsgKytzeW1ib2wpCisgICAgeyIKKwkgICAgJFNFRCAncy8uKi8gICAgICBpZiAoU1RSRVEgKHN5bWJvbC0+bmFtZSwgXCImXCIpKSBzeW1ib2wtPmFkZHJlc3MgPSAodm9pZCAqKSBcJiY7LycgPCAiJG5saXN0IkkgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCisJICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCisgICAgfQorfSIKKwkgIGZpCisJICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAogTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0CiBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW10gPQote1wKLSAgeyBcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDAgfSwiCit7IHtcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDB9LCIKKworCSAgaWYgdGVzdCAtcyAiJG5saXN0Ikk7IHRoZW4KKwkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKyAge1wiQElOSVRAXCIsICh2b2lkICopICZsdF9zeW1pbml0fSwiCisJICBmaQogCiAJICBjYXNlICRuZWVkX2xpYl9wcmVmaXggaW4KIAkgIG5vKQpAQCAtMzQ3OCw5ICs0ODMzLDcgQEAKIAkgICotKi1ocHV4KikKIAkgICAgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIiAgOzsKIAkgICopCi0JICAgIGlmIHRlc3QgIlgkbXlfcGljX3AiICE9IFhubzsgdGhlbgotCSAgICAgIHBpY19mbGFnX2Zvcl9zeW10YWJsZT0iICRwaWNfZmxhZyIKLQkgICAgZmkKKwkgICAgJG15X3BpY19wICYmIHBpY19mbGFnX2Zvcl9zeW10YWJsZT0iICRwaWNfZmxhZyIKIAkgICAgOzsKIAkgIGVzYWMKIAkgIDs7CkBAIC0zNDk3LDEwICs0ODUwLDEwIEBACiAJZnVuY19zaG93X2V2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkTFRDQyRzeW10YWJfY2ZsYWdzIC1jJG5vX2J1aWx0aW5fZmxhZyRwaWNfZmxhZ19mb3Jfc3ltdGFibGUgIiRteV9kbHN5bXMiKScgJ2V4aXQgJD8nCiAKIAkjIENsZWFuIHVwIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCi0JZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIiRubGlzdCIgIiR7bmxpc3R9UyIgIiR7bmxpc3R9VCInCisJZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIiRubGlzdCIgIiR7bmxpc3R9UyIgIiR7bmxpc3R9VCIgIiR7bmxpc3R9SSInCiAKIAkjIFRyYW5zZm9ybSB0aGUgc3ltYm9sIGZpbGUgaW50byB0aGUgY29ycmVjdCBuYW1lLgotCXN5bWZpbGVvYmo9IiRvdXRwdXRfb2JqZGlyLyR7bXlfb3V0cHV0bmFtZX1TLiRvYmpleHQiCisJc3ltZmlsZW9iaj0kb3V0cHV0X29iamRpci8ke215X291dHB1dG5hbWV9Uy4kb2JqZXh0CiAJY2FzZSAkaG9zdCBpbgogCSpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQogCSAgaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmIjsgdGhlbgpAQCAtMzUxOCw3ICs0ODcxLDcgQEAKIAllc2FjCiAJOzsKICAgICAgICopCi0JZnVuY19mYXRhbF9lcnJvciAidW5rbm93biBzdWZmaXggZm9yIFxgJG15X2Rsc3ltcyciCisJZnVuY19mYXRhbF9lcnJvciAidW5rbm93biBzdWZmaXggZm9yICckbXlfZGxzeW1zJyIKIAk7OwogICAgICAgZXNhYwogICAgIGVsc2UKQEAgLTM1MzIsNiArNDg4NSwzMiBAQAogICAgIGZpCiB9CiAKKyMgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCBBUkcKKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgorIyBBUkcgaXMgYSBHTlUvYmludXRpbHMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKKyMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KK2Z1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgKCkKK3sKKyAgJGRlYnVnX2NtZAorCisgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkRUdSRVAgJyAoX2hlYWRfW0EtWmEtejAtOV9dK19bYWRdbCp8W0EtWmEtejAtOV9dK19bYWRdbCpfaW5hbWUpJCdgCisgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXAiCit9CisKKyMgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wIEFSRworIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCisjIEFSRyBpcyBhbiBNUy1zdHlsZSBpbXBvcnQgbGlicmFyeS4gUmV0dXJucworIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgorZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICgpCit7CisgICRkZWJ1Z19jbWQKKworICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkR1JFUCAnX05VTExfSU1QT1JUX0RFU0NSSVBUT1InYAorICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXAiCit9CisKICMgZnVuY193aW4zMl9saWJpZCBhcmcKICMgcmV0dXJuIHRoZSBsaWJyYXJ5IHR5cGUgb2YgZmlsZSAnYXJnJwogIwpAQCAtMzU0MSw4ICs0OTIwLDkgQEAKICMgRGVzcGl0ZSB0aGUgbmFtZSwgYWxzbyBkZWFsIHdpdGggNjQgYml0IGJpbmFyaWVzLgogZnVuY193aW4zMl9saWJpZCAoKQogewotICAkb3B0X2RlYnVnCi0gIHdpbjMyX2xpYmlkX3R5cGU9InVua25vd24iCisgICRkZWJ1Z19jbWQKKworICB3aW4zMl9saWJpZF90eXBlPXVua25vd24KICAgd2luMzJfZmlsZXJlcz1gZmlsZSAtTCAkMSAyPi9kZXYvbnVsbGAKICAgY2FzZSAkd2luMzJfZmlsZXJlcyBpbgogICAqYXJcIGFyY2hpdmVcIGltcG9ydFwgbGlicmFyeSopICMgZGVmaW5pdGVseSBpbXBvcnQKQEAgLTM1NTIsMTYgKzQ5MzIsMjkgQEAKICAgICAjIEtlZXAgdGhlIGVncmVwIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gX0xUX0NIRUNLX01BR0lDX01FVEhPRC4KICAgICBpZiBldmFsICRPQkpEVU1QIC1mICQxIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8CiAgICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknID4vZGV2L251bGw7IHRoZW4KLSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiB8Ci0JJFNFRCAtbiAtZSAnCisgICAgICBjYXNlICRubV9pbnRlcmZhY2UgaW4KKyAgICAgICJNUyBkdW1wYmluIikKKwlpZiBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgIiQxIiB8fAorCSAgIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgIiQxIgorCXRoZW4KKwkgIHdpbjMyX25tcmVzPWltcG9ydAorCWVsc2UKKwkgIHdpbjMyX25tcmVzPQorCWZpCisJOzsKKyAgICAgICopCisJZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCXdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiB8CisJICAkU0VEIC1uIC1lICcKIAkgICAgMSwxMDB7CiAJCS8gSSAvewotCQkgICAgcywuKixpbXBvcnQsCisJCSAgICBzfC4qfGltcG9ydHwKIAkJICAgIHAKIAkJICAgIHEKIAkJfQogCSAgICB9J2AKKwk7OworICAgICAgZXNhYwogICAgICAgY2FzZSAkd2luMzJfbm1yZXMgaW4KICAgICAgIGltcG9ydCopICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiOzsKICAgICAgICopICAgICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBzdGF0aWMiOzsKQEAgLTM1OTMsNyArNDk4Niw4IEBACiAjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAogZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliICgpCiB7Ci0gICRvcHRfZGVidWcKKyAgJGRlYnVnX2NtZAorCiAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWAkRExMVE9PTCAtLWlkZW50aWZ5LXN0cmljdCAtLWlkZW50aWZ5ICIkMSJgCiB9CiAKQEAgLTM2MTAsNyArNTAwNCw4IEBACiAjIHNwZWNpZmllZCBpbXBvcnQgbGlicmFyeS4KIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICgpCiB7Ci0gICRvcHRfZGVidWcKKyAgJGRlYnVnX2NtZAorCiAgIG1hdGNoX2xpdGVyYWw9YCRFQ0hPICIkMSIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCiAgICRPQkpEVU1QIC1zIC0tc2VjdGlvbiAiJDEiICIkMiIgMj4vZGV2L251bGwgfAogICAgICRTRUQgJy9eQ29udGVudHMgb2Ygc2VjdGlvbiAnIiRtYXRjaF9saXRlcmFsIic6L3sKQEAgLTM2NDYsOCArNTA0MSw4IEBACiAgICAgICAvLi9wJyB8CiAgICAgIyB3ZSBub3cgaGF2ZSBhIGxpc3QsIG9uZSBlbnRyeSBwZXIgbGluZSwgb2YgdGhlIHN0cmluZ2lmaWVkCiAgICAgIyBjb250ZW50cyBvZiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiBvZiBhbGwgbWVtYmVycyBvZiB0aGUKLSAgICAjIGFyY2hpdmUgd2hpY2ggcG9zc2VzcyB0aGF0IHNlY3Rpb24uIEhldXJpc3RpYzogZWxpbWluYXRlCi0gICAgIyBhbGwgdGhvc2Ugd2hpY2ggaGF2ZSBhIGZpcnN0IG9yIHNlY29uZCBjaGFyYWN0ZXIgdGhhdCBpcworICAgICMgYXJjaGl2ZSB0aGF0IHBvc3Nlc3MgdGhhdCBzZWN0aW9uLiBIZXVyaXN0aWM6IGVsaW1pbmF0ZQorICAgICMgYWxsIHRob3NlIHRoYXQgaGF2ZSBhIGZpcnN0IG9yIHNlY29uZCBjaGFyYWN0ZXIgdGhhdCBpcwogICAgICMgYSAnLicgKHRoYXQgaXMsIG9iamR1bXAncyByZXByZXNlbnRhdGlvbiBvZiBhbiB1bnByaW50YWJsZQogICAgICMgY2hhcmFjdGVyLikgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIGFyY2hpdmVzIHdpdGggbGVzcyB0aGFuCiAgICAgIyAweDMwMmYgZXhwb3J0cyAtLSBidXQgd2lsbCBmYWlsIGZvciBETExzIHdob3NlIG5hbWUgYWN0dWFsbHkKQEAgLTM2NTgsMzAgKzUwNTMsNiBAQAogICAgICRTRUQgLWUgJy9eXC4vZDsvXi5cLi9kO3EnCiB9CiAKLSMgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCBBUkcKLSMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgotIyBBUkcgaXMgYSBHTlUvYmludXRpbHMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKLSMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KLWZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgKCkKLXsKLSAgJG9wdF9kZWJ1ZwotICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0gIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEVHUkVQICcgKF9oZWFkX1tBLVphLXowLTlfXStfW2FkXWwqfFtBLVphLXowLTlfXStfW2FkXWwqX2luYW1lKSQnYAotICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wIgotfQotCi0jIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCBBUkcKLSMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgotIyBBUkcgaXMgYW4gTVMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKLSMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KLWZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAoKQotewotICAkb3B0X2RlYnVnCi0gIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSAgZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRHUkVQICdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUidgCi0gIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3RtcCIKLX0KLQogIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgQVJHCiAjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCiAjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZApAQCAtMzY5NSwxNiArNTA2NiwxNyBAQAogIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayAoKQogewotICAkb3B0X2RlYnVnCi0gIGlmIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgIiQxIiA7IHRoZW4KKyAgJGRlYnVnX2NtZAorCisgIGlmIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgIiQxIjsgdGhlbgogICAgICMgYmludXRpbHMgaW1wb3J0IGxpYnJhcnkKICAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ3JyAiJDEiYAotICBlbGlmIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAiJDEiIDsgdGhlbgorICBlbGlmIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAiJDEiOyB0aGVuCiAgICAgIyBtcy1nZW5lcmF0ZWQgaW1wb3J0IGxpYnJhcnkKICAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ2JyAiJDEiYAogICBlbHNlCiAgICAgIyB1bmtub3duCi0gICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9IiIKKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD0KICAgZmkKIH0KIApAQCAtMzcxMiwxMCArNTA4NCwxMSBAQAogIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCiBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAoKQogewotICAgICRvcHRfZGVidWcKLSAgICBmX2V4X2FuX2FyX2Rpcj0iJDEiOyBzaGlmdAotICAgIGZfZXhfYW5fYXJfb2xkbGliPSIkMSIKLSAgICBpZiB0ZXN0ICIkbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uIiA9IHllczsgdGhlbgorICAgICRkZWJ1Z19jbWQKKworICAgIGZfZXhfYW5fYXJfZGlyPSQxOyBzaGlmdAorICAgIGZfZXhfYW5fYXJfb2xkbGliPSQxCisgICAgaWYgdGVzdCB5ZXMgPSAiJGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbiI7IHRoZW4KICAgICAgIGxvY2tmaWxlPSRmX2V4X2FuX2FyX29sZGxpYi5sb2NrCiAgICAgICB1bnRpbCAkb3B0X2RyeV9ydW4gfHwgbG4gIiRwcm9ncGF0aCIgIiRsb2NrZmlsZSIgMj4vZGV2L251bGw7IGRvCiAJZnVuY19lY2hvICJXYWl0aW5nIGZvciAkbG9ja2ZpbGUgdG8gYmUgcmVtb3ZlZCIKQEAgLTM3MjQsNyArNTA5Nyw3IEBACiAgICAgZmkKICAgICBmdW5jX3Nob3dfZXZhbCAiKGNkIFwkZl9leF9hbl9hcl9kaXIgJiYgJEFSIHggXCJcJGZfZXhfYW5fYXJfb2xkbGliXCIpIiBcCiAJCSAgICdzdGF0PSQ/OyBybSAtZiAiJGxvY2tmaWxlIjsgZXhpdCAkc3RhdCcKLSAgICBpZiB0ZXN0ICIkbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uIiA9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb24iOyB0aGVuCiAgICAgICAkb3B0X2RyeV9ydW4gfHwgcm0gLWYgIiRsb2NrZmlsZSIKICAgICBmaQogICAgIGlmICgkQVIgdCAiJGZfZXhfYW5fYXJfb2xkbGliIiB8IHNvcnQgfCBzb3J0IC11YyA+L2Rldi9udWxsIDI+JjEpOyB0aGVuCkBAIC0zNzM4LDIyICs1MTExLDIzIEBACiAjIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyBnZW50b3Agb2xkbGliIC4uLgogZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCiB7Ci0gICAgJG9wdF9kZWJ1ZwotICAgIG15X2dlbnRvcD0iJDEiOyBzaGlmdAorICAgICRkZWJ1Z19jbWQKKworICAgIG15X2dlbnRvcD0kMTsgc2hpZnQKICAgICBteV9vbGRsaWJzPSR7MSsiJEAifQotICAgIG15X29sZG9ianM9IiIKLSAgICBteV94bGliPSIiCi0gICAgbXlfeGFicz0iIgotICAgIG15X3hkaXI9IiIKKyAgICBteV9vbGRvYmpzPQorICAgIG15X3hsaWI9CisgICAgbXlfeGFicz0KKyAgICBteV94ZGlyPQogCiAgICAgZm9yIG15X3hsaWIgaW4gJG15X29sZGxpYnM7IGRvCiAgICAgICAjIEV4dHJhY3QgdGhlIG9iamVjdHMuCiAgICAgICBjYXNlICRteV94bGliIGluCi0JW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBteV94YWJzPSIkbXlfeGxpYiIgOzsKKwlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIG15X3hhYnM9JG15X3hsaWIgOzsKIAkqKSBteV94YWJzPWBwd2RgIi8kbXlfeGxpYiIgOzsKICAgICAgIGVzYWMKICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRteV94bGliIgotICAgICAgbXlfeGxpYj0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorICAgICAgbXlfeGxpYj0kZnVuY19iYXNlbmFtZV9yZXN1bHQKICAgICAgIG15X3hsaWJfdT0kbXlfeGxpYgogICAgICAgd2hpbGUgOjsgZG8KICAgICAgICAgY2FzZSAiICRleHRyYWN0ZWRfYXJjaGl2ZXMgIiBpbgpAQCAtMzc2NSw3ICs1MTM5LDcgQEAKIAllc2FjCiAgICAgICBkb25lCiAgICAgICBleHRyYWN0ZWRfYXJjaGl2ZXM9IiRleHRyYWN0ZWRfYXJjaGl2ZXMgJG15X3hsaWJfdSIKLSAgICAgIG15X3hkaXI9IiRteV9nZW50b3AvJG15X3hsaWJfdSIKKyAgICAgIG15X3hkaXI9JG15X2dlbnRvcC8kbXlfeGxpYl91CiAKICAgICAgIGZ1bmNfbWtkaXJfcCAiJG15X3hkaXIiCiAKQEAgLTM3NzgsMjIgKzUxNTIsMjMgQEAKIAkgIGNkICRteV94ZGlyIHx8IGV4aXQgJD8KIAkgIGRhcndpbl9hcmNoaXZlPSRteV94YWJzCiAJICBkYXJ3aW5fY3VyZGlyPWBwd2RgCi0JICBkYXJ3aW5fYmFzZV9hcmNoaXZlPWBiYXNlbmFtZSAiJGRhcndpbl9hcmNoaXZlImAKKwkgIGZ1bmNfYmFzZW5hbWUgIiRkYXJ3aW5fYXJjaGl2ZSIKKwkgIGRhcndpbl9iYXNlX2FyY2hpdmU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAJICBkYXJ3aW5fYXJjaGVzPWAkTElQTyAtaW5mbyAiJGRhcndpbl9hcmNoaXZlIiAyPi9kZXYvbnVsbCB8ICRHUkVQIEFyY2hpdGVjdHVyZXMgMj4vZGV2L251bGwgfHwgdHJ1ZWAKIAkgIGlmIHRlc3QgLW4gIiRkYXJ3aW5fYXJjaGVzIjsgdGhlbgogCSAgICBkYXJ3aW5fYXJjaGVzPWAkRUNITyAiJGRhcndpbl9hcmNoZXMiIHwgJFNFRCAtZSAncy8uKmFyZTovLydgCiAJICAgIGRhcndpbl9hcmNoPQogCSAgICBmdW5jX3ZlcmJvc2UgIiRkYXJ3aW5fYmFzZV9hcmNoaXZlIGhhcyBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzICRkYXJ3aW5fYXJjaGVzIgotCSAgICBmb3IgZGFyd2luX2FyY2ggaW4gICRkYXJ3aW5fYXJjaGVzIDsgZG8KLQkgICAgICBmdW5jX21rZGlyX3AgInVuZmF0LSQkLyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0tJHtkYXJ3aW5fYXJjaH0iCi0JICAgICAgJExJUE8gLXRoaW4gJGRhcndpbl9hcmNoIC1vdXRwdXQgInVuZmF0LSQkLyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0tJHtkYXJ3aW5fYXJjaH0vJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfSIgIiR7ZGFyd2luX2FyY2hpdmV9IgotCSAgICAgIGNkICJ1bmZhdC0kJC8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9LSR7ZGFyd2luX2FyY2h9IgotCSAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICJgcHdkYCIgIiR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0iCisJICAgIGZvciBkYXJ3aW5fYXJjaCBpbiAgJGRhcndpbl9hcmNoZXM7IGRvCisJICAgICAgZnVuY19ta2Rpcl9wICJ1bmZhdC0kJC8kZGFyd2luX2Jhc2VfYXJjaGl2ZS0kZGFyd2luX2FyY2giCisJICAgICAgJExJUE8gLXRoaW4gJGRhcndpbl9hcmNoIC1vdXRwdXQgInVuZmF0LSQkLyRkYXJ3aW5fYmFzZV9hcmNoaXZlLSRkYXJ3aW5fYXJjaC8kZGFyd2luX2Jhc2VfYXJjaGl2ZSIgIiRkYXJ3aW5fYXJjaGl2ZSIKKwkgICAgICBjZCAidW5mYXQtJCQvJGRhcndpbl9iYXNlX2FyY2hpdmUtJGRhcndpbl9hcmNoIgorCSAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICJgcHdkYCIgIiRkYXJ3aW5fYmFzZV9hcmNoaXZlIgogCSAgICAgIGNkICIkZGFyd2luX2N1cmRpciIKLQkgICAgICAkUk0gInVuZmF0LSQkLyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0tJHtkYXJ3aW5fYXJjaH0vJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfSIKKwkgICAgICAkUk0gInVuZmF0LSQkLyRkYXJ3aW5fYmFzZV9hcmNoaXZlLSRkYXJ3aW5fYXJjaC8kZGFyd2luX2Jhc2VfYXJjaGl2ZSIKIAkgICAgZG9uZSAjICRkYXJ3aW5fYXJjaGVzCiAgICAgICAgICAgICAjIyBPa2F5IG5vdyB3ZSd2ZSBhIGJ1bmNoIG9mIHRoaW4gb2JqZWN0cywgZ290dGEgZmF0dGVuIHRoZW0gdXAgOikKLQkgICAgZGFyd2luX2ZpbGVsaXN0PWBmaW5kIHVuZmF0LSQkIC10eXBlIGYgLW5hbWUgXCoubyAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgJFNFRCAtZSAiJGJhc2VuYW1lIiB8IHNvcnQgLXVgCisJICAgIGRhcndpbl9maWxlbGlzdD1gZmluZCB1bmZhdC0kJCAtdHlwZSBmIC1uYW1lIFwqLm8gLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICRTRUQgLWUgIiRzZWRfYmFzZW5hbWUiIHwgc29ydCAtdWAKIAkgICAgZGFyd2luX2ZpbGU9CiAJICAgIGRhcndpbl9maWxlcz0KIAkgICAgZm9yIGRhcndpbl9maWxlIGluICRkYXJ3aW5fZmlsZWxpc3Q7IGRvCkBAIC0zODE1LDcgKzUxOTAsNyBAQAogICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8IHNvcnQgfCAkTkwyU1BgCiAgICAgZG9uZQogCi0gICAgZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdD0iJG15X29sZG9ianMiCisgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdD0kbXlfb2xkb2JqcwogfQogCiAKQEAgLTM4MzAsNyArNTIwNSw3IEBACiAjCiAjIEFSRyBpcyB0aGUgdmFsdWUgdGhhdCB0aGUgV1JBUFBFUl9TQ1JJUFRfQkVMT05HU19JTl9PQkpESVIKICMgdmFyaWFibGUgd2lsbCB0YWtlLiAgSWYgJ3llcycsIHRoZW4gdGhlIGVtaXR0ZWQgc2NyaXB0Ci0jIHdpbGwgYXNzdW1lIHRoYXQgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBpdCBpcyBzdG9yZWQgaXMKKyMgd2lsbCBhc3N1bWUgdGhhdCB0aGUgZGlyZWN0b3J5IHdoZXJlIGl0IGlzIHN0b3JlZCBpcwogIyB0aGUgJG9iamRpciBkaXJlY3RvcnkuICBUaGlzIGlzIGEgY3lnd2luL21pbmd3LXNwZWNpZmljCiAjIGJlaGF2aW9yLgogZnVuY19lbWl0X3dyYXBwZXIgKCkKQEAgLTM4NDEsNyArNTIxNiw3IEBACiAjISAkU0hFTEwKIAogIyAkb3V0cHV0IC0gdGVtcG9yYXJ5IHdyYXBwZXIgc2NyaXB0IGZvciAkb2JqZGlyLyRvdXRwdXRuYW1lCi0jIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT04KKyMgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UpICRWRVJTSU9OCiAjCiAjIFRoZSAkb3V0cHV0IHByb2dyYW0gY2Fubm90IGJlIGRpcmVjdGx5IGV4ZWN1dGVkIHVudGlsIGFsbCB0aGUgbGlidG9vbAogIyBsaWJyYXJpZXMgdGhhdCBpdCBkZXBlbmRzIG9uIGFyZSBpbnN0YWxsZWQuCkBAIC0zODk4LDkgKzUyNzMsOSBAQAogCiAjIFZlcnkgYmFzaWMgb3B0aW9uIHBhcnNpbmcuIFRoZXNlIG9wdGlvbnMgYXJlIChhKSBzcGVjaWZpYyB0bwogIyB0aGUgbGlidG9vbCB3cmFwcGVyLCAoYikgYXJlIGlkZW50aWNhbCBiZXR3ZWVuIHRoZSB3cmFwcGVyCi0jIC9zY3JpcHQvIGFuZCB0aGUgd3JhcHBlciAvZXhlY3V0YWJsZS8gd2hpY2ggaXMgdXNlZCBvbmx5IG9uCisjIC9zY3JpcHQvIGFuZCB0aGUgd3JhcHBlciAvZXhlY3V0YWJsZS8gdGhhdCBpcyB1c2VkIG9ubHkgb24KICMgd2luZG93cyBwbGF0Zm9ybXMsIGFuZCAoYykgYWxsIGJlZ2luIHdpdGggdGhlIHN0cmluZyAiLS1sdC0iCi0jIChhcHBsaWNhdGlvbiBwcm9ncmFtcyBhcmUgdW5saWtlbHkgdG8gaGF2ZSBvcHRpb25zIHdoaWNoIG1hdGNoCisjIChhcHBsaWNhdGlvbiBwcm9ncmFtcyBhcmUgdW5saWtlbHkgdG8gaGF2ZSBvcHRpb25zIHRoYXQgbWF0Y2gKICMgdGhpcyBwYXR0ZXJuKS4KICMKICMgVGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCBvcHRpb25zOiAtLWx0LWRlYnVnIGFuZApAQCAtMzkzMyw3ICs1MzA4LDcgQEAKIAogICAjIFByaW50IHRoZSBkZWJ1ZyBiYW5uZXIgaW1tZWRpYXRlbHk6CiAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCi0gICAgZWNobyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IGxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cIiAxPiYyCisgICAgZWNobyBcIiRvdXRwdXRuYW1lOiRvdXRwdXQ6XCRMSU5FTk86IGxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFKSAkVkVSU0lPTlwiIDE+JjIKICAgZmkKIH0KIApAQCAtMzk0NCw3ICs1MzE5LDcgQEAKICAgbHRfZHVtcF9hcmdzX049MTsKICAgZm9yIGx0X2FyZwogICBkbwotICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbXCRsdF9kdW1wX2FyZ3NfTl06IFwkbHRfYXJnXCIKKyAgICBcJEVDSE8gXCIkb3V0cHV0bmFtZTokb3V0cHV0OlwkTElORU5POiBuZXdhcmd2W1wkbHRfZHVtcF9hcmdzX05dOiBcJGx0X2FyZ1wiCiAgICAgbHRfZHVtcF9hcmdzX049XGBleHByIFwkbHRfZHVtcF9hcmdzX04gKyAxXGAKICAgZG9uZQogfQpAQCAtMzk1OCw3ICs1MzMzLDcgQEAKICAgKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKICAgICAkRUNITyAiXAogICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KLSAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIDE+JjIKKyAgICAgICAgXCRFQ0hPIFwiJG91dHB1dG5hbWU6JG91dHB1dDpcJExJTkVOTzogbmV3YXJndlswXTogXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIDE+JjIKICAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCiAgICAgICBmaQogICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CkBAIC0zOTY4LDcgKzUzNDMsNyBAQAogICAqKQogICAgICRFQ0hPICJcCiAgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgotICAgICAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2WzBdOiBcJHByb2dkaXIvXCRwcm9ncmFtXCIgMT4mMgorICAgICAgICBcJEVDSE8gXCIkb3V0cHV0bmFtZTokb3V0cHV0OlwkTElORU5POiBuZXdhcmd2WzBdOiBcJHByb2dkaXIvXCRwcm9ncmFtXCIgMT4mMgogICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKICAgICAgIGZpCiAgICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KQEAgLTQwNDMsMTMgKzU0MTgsMTMgQEAKICAgdGVzdCAtbiBcIlwkYWJzZGlyXCIgJiYgdGhpc2Rpcj1cIlwkYWJzZGlyXCIKICIKIAotCWlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCisJaWYgdGVzdCB5ZXMgPSAiJGZhc3RfaW5zdGFsbCI7IHRoZW4KIAkgICRFQ0hPICJcCiAgIHByb2dyYW09bHQtJyRvdXRwdXRuYW1lJyRleGVleHQKICAgcHJvZ2Rpcj1cIlwkdGhpc2Rpci8kb2JqZGlyXCIKIAogICBpZiB0ZXN0ICEgLWYgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgfHwKLSAgICAgeyBmaWxlPVxgbHMgLTFkdCBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcIlwkcHJvZ2Rpci8uLi9cJHByb2dyYW1cIiAyPi9kZXYvbnVsbCB8ICR7U0VEfSAxcVxgOyBcXAorICAgICB7IGZpbGU9XGBscyAtMWR0IFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwiXCRwcm9nZGlyLy4uL1wkcHJvZ3JhbVwiIDI+L2Rldi9udWxsIHwgJFNFRCAxcVxgOyBcXAogICAgICAgIHRlc3QgXCJYXCRmaWxlXCIgIT0gXCJYXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB9OyB0aGVuCiAKICAgICBmaWxlPVwiXCRcJC1cJHByb2dyYW1cIgpAQCAtNDA2Niw3ICs1NDQxLDcgQEAKICAgICBpZiB0ZXN0IC1uIFwiXCRyZWxpbmtfY29tbWFuZFwiOyB0aGVuCiAgICAgICBpZiByZWxpbmtfY29tbWFuZF9vdXRwdXQ9XGBldmFsIFwkcmVsaW5rX2NvbW1hbmQgMj4mMVxgOyB0aGVuIDoKICAgICAgIGVsc2UKLQkkRUNITyBcIlwkcmVsaW5rX2NvbW1hbmRfb3V0cHV0XCIgPiYyCisJXCRFQ0hPIFwiXCRyZWxpbmtfY29tbWFuZF9vdXRwdXRcIiA+JjIKIAkkUk0gXCJcJHByb2dkaXIvXCRmaWxlXCIKIAlleGl0IDEKICAgICAgIGZpCkBAIC00MTAxLDcgKzU0NzYsNyBAQAogCWZpCiAKIAkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4KLQlpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCisJaWYgdGVzdCB5ZXMgPSAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgogCSAgJEVDSE8gIlwKICAgICAjIEFkZCBvdXIgb3duIGxpYnJhcnkgcGF0aCB0byAkc2hsaWJwYXRoX3ZhcgogICAgICRzaGxpYnBhdGhfdmFyPVwiJHRlbXBfcnBhdGhcJCRzaGxpYnBhdGhfdmFyXCIKQEAgLTQxMjEsNyArNTQ5Niw3IEBACiAgICAgZmkKICAgZWxzZQogICAgICMgVGhlIHByb2dyYW0gZG9lc24ndCBleGlzdC4KLSAgICBcJEVDSE8gXCJcJDA6IGVycm9yOiBcXFxgXCRwcm9nZGlyL1wkcHJvZ3JhbScgZG9lcyBub3QgZXhpc3RcIiAxPiYyCisgICAgXCRFQ0hPIFwiXCQwOiBlcnJvcjogJ1wkcHJvZ2Rpci9cJHByb2dyYW0nIGRvZXMgbm90IGV4aXN0XCIgMT4mMgogICAgIFwkRUNITyBcIlRoaXMgc2NyaXB0IGlzIGp1c3QgYSB3cmFwcGVyIGZvciBcJHByb2dyYW0uXCIgMT4mMgogICAgIFwkRUNITyBcIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIiAxPiYyCiAgICAgZXhpdCAxCkBAIC00MTQwLDcgKzU1MTUsNyBAQAogCWNhdCA8PEVPRgogCiAvKiAkY3dyYXBwZXJzb3VyY2UgLSB0ZW1wb3Jhcnkgd3JhcHBlciBleGVjdXRhYmxlIGZvciAkb2JqZGlyLyRvdXRwdXRuYW1lCi0gICBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OCisgICBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gKEdOVSAkUEFDS0FHRSkgJFZFUlNJT04KIAogICAgVGhlICRvdXRwdXQgcHJvZ3JhbSBjYW5ub3QgYmUgZGlyZWN0bHkgZXhlY3V0ZWQgdW50aWwgYWxsIHRoZSBsaWJ0b29sCiAgICBsaWJyYXJpZXMgdGhhdCBpdCBkZXBlbmRzIG9uIGFyZSBpbnN0YWxsZWQuCkBAIC00MTc1LDQ3ICs1NTUwLDQ1IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogCisjZGVmaW5lIFNUUkVRKHMxLCBzMikgKHN0cmNtcCAoKHMxKSwgKHMyKSkgPT0gMCkKKwogLyogZGVjbGFyYXRpb25zIG9mIG5vbi1BTlNJIGZ1bmN0aW9ucyAqLwotI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCisjaWYgZGVmaW5lZCBfX01JTkdXMzJfXwogIyBpZmRlZiBfX1NUUklDVF9BTlNJX18KIGludCBfcHV0ZW52IChjb25zdCBjaGFyICopOwogIyBlbmRpZgotI2VsaWYgZGVmaW5lZChfX0NZR1dJTl9fKQorI2VsaWYgZGVmaW5lZCBfX0NZR1dJTl9fCiAjIGlmZGVmIF9fU1RSSUNUX0FOU0lfXwogY2hhciAqcmVhbHBhdGggKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKIGludCBwdXRlbnYgKGNoYXIgKik7CiBpbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKICMgZW5kaWYKLS8qICNlbGlmIGRlZmluZWQgKG90aGVyIHBsYXRmb3JtcykgLi4uICovCisvKiAjZWxpZiBkZWZpbmVkIG90aGVyX3BsYXRmb3JtIHx8IGRlZmluZWQgLi4uICovCiAjZW5kaWYKIAogLyogcG9ydGFiaWxpdHkgZGVmaW5lcywgZXhjbHVkaW5nIHBhdGggaGFuZGxpbmcgbWFjcm9zICovCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNpZiBkZWZpbmVkIF9NU0NfVkVSCiAjIGRlZmluZSBzZXRtb2RlIF9zZXRtb2RlCiAjIGRlZmluZSBzdGF0ICAgIF9zdGF0CiAjIGRlZmluZSBjaG1vZCAgIF9jaG1vZAogIyBkZWZpbmUgZ2V0Y3dkICBfZ2V0Y3dkCiAjIGRlZmluZSBwdXRlbnYgIF9wdXRlbnYKICMgZGVmaW5lIFNfSVhVU1IgX1NfSUVYRUMKLSMgaWZuZGVmIF9JTlRQVFJfVF9ERUZJTkVECi0jICBkZWZpbmUgX0lOVFBUUl9UX0RFRklORUQKLSMgIGRlZmluZSBpbnRwdHJfdCBpbnQKLSMgZW5kaWYKLSNlbGlmIGRlZmluZWQoX19NSU5HVzMyX18pCisjZWxpZiBkZWZpbmVkIF9fTUlOR1czMl9fCiAjIGRlZmluZSBzZXRtb2RlIF9zZXRtb2RlCiAjIGRlZmluZSBzdGF0ICAgIF9zdGF0CiAjIGRlZmluZSBjaG1vZCAgIF9jaG1vZAogIyBkZWZpbmUgZ2V0Y3dkICBfZ2V0Y3dkCiAjIGRlZmluZSBwdXRlbnYgIF9wdXRlbnYKLSNlbGlmIGRlZmluZWQoX19DWUdXSU5fXykKKyNlbGlmIGRlZmluZWQgX19DWUdXSU5fXwogIyBkZWZpbmUgSEFWRV9TRVRFTlYKICMgZGVmaW5lIEZPUEVOX1dCICJ3YiIKLS8qICNlbGlmIGRlZmluZWQgKG90aGVyIHBsYXRmb3JtcykgLi4uICovCisvKiAjZWxpZiBkZWZpbmVkIG90aGVyIHBsYXRmb3JtcyAuLi4gKi8KICNlbmRpZgogCi0jaWYgZGVmaW5lZChQQVRIX01BWCkKKyNpZiBkZWZpbmVkIFBBVEhfTUFYCiAjIGRlZmluZSBMVF9QQVRITUFYIFBBVEhfTUFYCi0jZWxpZiBkZWZpbmVkKE1BWFBBVEhMRU4pCisjZWxpZiBkZWZpbmVkIE1BWFBBVEhMRU4KICMgZGVmaW5lIExUX1BBVEhNQVggTUFYUEFUSExFTgogI2Vsc2UKICMgZGVmaW5lIExUX1BBVEhNQVggMTAyNApAQCAtNDIzNCw4ICs1NjA3LDggQEAKICMgZGVmaW5lIFBBVEhfU0VQQVJBVE9SICc6JwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkIChfV0lOMzIpIHx8IGRlZmluZWQgKF9fTVNET1NfXykgfHwgZGVmaW5lZCAoX19ESkdQUF9fKSB8fCBcCi0gIGRlZmluZWQgKF9fT1MyX18pCisjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX01TRE9TX18gfHwgZGVmaW5lZCBfX0RKR1BQX18gfHwgXAorICBkZWZpbmVkIF9fT1MyX18KICMgZGVmaW5lIEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNCiAjIGRlZmluZSBGT1BFTl9XQiAid2IiCiAjIGlmbmRlZiBESVJfU0VQQVJBVE9SXzIKQEAgLTQyNjgsMTAgKzU2NDEsMTAgQEAKIAogI2RlZmluZSBYTUFMTE9DKHR5cGUsIG51bSkgICAgICAoKHR5cGUgKikgeG1hbGxvYyAoKG51bSkgKiBzaXplb2YodHlwZSkpKQogI2RlZmluZSBYRlJFRShzdGFsZSkgZG8geyBcCi0gIGlmIChzdGFsZSkgeyBmcmVlICgodm9pZCAqKSBzdGFsZSk7IHN0YWxlID0gMDsgfSBcCisgIGlmIChzdGFsZSkgeyBmcmVlIChzdGFsZSk7IHN0YWxlID0gMDsgfSBcCiB9IHdoaWxlICgwKQogCi0jaWYgZGVmaW5lZChMVF9ERUJVR1dSQVBQRVIpCisjaWYgZGVmaW5lZCBMVF9ERUJVR1dSQVBQRVIKIHN0YXRpYyBpbnQgbHRfZGVidWcgPSAxOwogI2Vsc2UKIHN0YXRpYyBpbnQgbHRfZGVidWcgPSAwOwpAQCAtNDMwMCwxMSArNTY3MywxNiBAQAogRU9GCiAKIAkgICAgY2F0IDw8RU9GCi12b2xhdGlsZSBjb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOworI2lmIF9fR05VQ19fIDwgNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDUpCisjIGRlZmluZSBleHRlcm5hbGx5X3Zpc2libGUgdm9sYXRpbGUKKyNlbHNlCisjIGRlZmluZSBleHRlcm5hbGx5X3Zpc2libGUgX19hdHRyaWJ1dGVfXygoZXh0ZXJuYWxseV92aXNpYmxlKSkgdm9sYXRpbGUKKyNlbmRpZgorZXh0ZXJuYWxseV92aXNpYmxlIGNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7CiBjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7CiBFT0YKIAotCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCisJICAgIGlmIHRlc3QgeWVzID0gIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiR0ZW1wX3JwYXRoIgogCSAgICAgIGNhdCA8PEVPRgogY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7CkBAIC00MzI4LDcgKzU3MDYsNyBAQAogRU9GCiAJICAgIGZpCiAKLQkgICAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXM7IHRoZW4KKwkgICAgaWYgdGVzdCB5ZXMgPSAiJGZhc3RfaW5zdGFsbCI7IHRoZW4KIAkgICAgICBjYXQgPDxFT0YKIGNvbnN0IGNoYXIgKiBUQVJHRVRfUFJPR1JBTV9OQU1FID0gImx0LSRvdXRwdXRuYW1lIjsgLyogaG9wZWZ1bGx5LCBubyAuZXhlICovCiBFT0YKQEAgLTQzNTcsMTIgKzU3MzUsMTIgQEAKICAgY2hhciAqYWN0dWFsX2N3cmFwcGVyX25hbWU7CiAgIGNoYXIgKnRhcmdldF9uYW1lOwogICBjaGFyICpsdF9hcmd2X3plcm87Ci0gIGludHB0cl90IHJ2YWwgPSAxMjc7CisgIGludCBydmFsID0gMTI3OwogCiAgIGludCBpOwogCiAgIHByb2dyYW1fbmFtZSA9IChjaGFyICopIHhzdHJkdXAgKGJhc2VfbmFtZSAoYXJndlswXSkpOwotICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CisgIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIChzaXplX3QpIGFyZ2MgKyAxKTsKIAogICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdAogICAgKiBhbHNvLCBjb3B5IGFsbCBub24gY3dyYXBwZXIgb3B0aW9ucyB0byBuZXdhcmd6LCBleGNlcHQKQEAgLTQzNzEsMTAgKzU3NDksMTAgQEAKICAgbmV3YXJnYz0wOwogICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQogICAgIHsKLSAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQorICAgICAgaWYgKFNUUkVRIChhcmd2W2ldLCBkdW1wc2NyaXB0X29wdCkpCiAJewogRU9GCi0JICAgIGNhc2UgIiRob3N0IiBpbgorCSAgICBjYXNlICRob3N0IGluCiAJICAgICAgKm1pbmd3KiB8ICpjeWd3aW4qICkKIAkJIyBtYWtlIHN0ZG91dCB1c2UgInVuaXgiIGxpbmUgZW5kaW5ncwogCQllY2hvICIgICAgICAgICAgc2V0bW9kZSgxLF9PX0JJTkFSWSk7IgpAQCAtNDM4NSwxMiArNTc2MywxMiBAQAogCSAgbHRfZHVtcF9zY3JpcHQgKHN0ZG91dCk7CiAJICByZXR1cm4gMDsKIAl9Ci0gICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkZWJ1Z19vcHQpID09IDApCisgICAgICBpZiAoU1RSRVEgKGFyZ3ZbaV0sIGRlYnVnX29wdCkpCiAJewogICAgICAgICAgIGx0X2RlYnVnID0gMTsKICAgICAgICAgICBjb250aW51ZTsKIAl9Ci0gICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCkgPT0gMCkKKyAgICAgIGlmIChTVFJFUSAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgpKQogICAgICAgICB7CiAgICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAogICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKQEAgLTQ0MTMsNyArNTc5MSw3IEBACiBFT0YKIAkgICAgY2F0IDw8RU9GCiAgIC8qIFRoZSBHTlUgYmFubmVyIG11c3QgYmUgdGhlIGZpcnN0IG5vbi1lcnJvciBkZWJ1ZyBtZXNzYWdlICovCi0gIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICJsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXG4iKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgImxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFKSAkVkVSU0lPTlxuIik7CiBFT0YKIAkgICAgY2F0IDw8IkVPRiIKICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBhcmd2WzBdOiAlc1xuIiwgYXJndlswXSk7CkBAIC00NTI0LDcgKzU5MDIsNyBAQAogCQljYXQgPDwiRU9GIgogICAvKiBleGVjdiBkb2Vzbid0IGFjdHVhbGx5IHdvcmsgb24gbWluZ3cgYXMgZXhwZWN0ZWQgb24gdW5peCAqLwogICBuZXdhcmd6ID0gcHJlcGFyZV9zcGF3biAobmV3YXJneik7Ci0gIHJ2YWwgPSBfc3Bhd252IChfUF9XQUlULCBsdF9hcmd2X3plcm8sIChjb25zdCBjaGFyICogY29uc3QgKikgbmV3YXJneik7CisgIHJ2YWwgPSAoaW50KSBfc3Bhd252IChfUF9XQUlULCBsdF9hcmd2X3plcm8sIChjb25zdCBjaGFyICogY29uc3QgKikgbmV3YXJneik7CiAgIGlmIChydmFsID09IC0xKQogICAgIHsKICAgICAgIC8qIGZhaWxlZCB0byBzdGFydCBwcm9jZXNzICovCkBAIC00NTY5LDcgKzU5NDcsNyBAQAogewogICBjb25zdCBjaGFyICpiYXNlOwogCi0jaWYgZGVmaW5lZCAoSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0pCisjaWYgZGVmaW5lZCBIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTQogICAvKiBTa2lwIG92ZXIgdGhlIGRpc2sgbmFtZSBpbiBNU0RPUyBwYXRobmFtZXMuICovCiAgIGlmIChpc2FscGhhICgodW5zaWduZWQgY2hhcikgbmFtZVswXSkgJiYgbmFtZVsxXSA9PSAnOicpCiAgICAgbmFtZSArPSAyOwpAQCAtNDYyOCw3ICs2MDA2LDcgQEAKICAgY29uc3QgY2hhciAqcF9uZXh0OwogICAvKiBzdGF0aWMgYnVmZmVyIGZvciBnZXRjd2QgKi8KICAgY2hhciB0bXBbTFRfUEFUSE1BWCArIDFdOwotICBpbnQgdG1wX2xlbjsKKyAgc2l6ZV90IHRtcF9sZW47CiAgIGNoYXIgKmNvbmNhdF9uYW1lOwogCiAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoZmluZF9leGVjdXRhYmxlKTogJXNcbiIsCkBAIC00NjM4LDcgKzYwMTYsNyBAQAogICAgIHJldHVybiBOVUxMOwogCiAgIC8qIEFic29sdXRlIHBhdGg/ICovCi0jaWYgZGVmaW5lZCAoSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0pCisjaWYgZGVmaW5lZCBIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTQogICBpZiAoaXNhbHBoYSAoKHVuc2lnbmVkIGNoYXIpIHdyYXBwZXJbMF0pICYmIHdyYXBwZXJbMV0gPT0gJzonKQogICAgIHsKICAgICAgIGNvbmNhdF9uYW1lID0geHN0cmR1cCAod3JhcHBlcik7CkBAIC00NjU2LDcgKzYwMzQsNyBAQAogCSAgICByZXR1cm4gY29uY2F0X25hbWU7CiAJICBYRlJFRSAoY29uY2F0X25hbWUpOwogCX0KLSNpZiBkZWZpbmVkIChIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSkKKyNpZiBkZWZpbmVkIEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNCiAgICAgfQogI2VuZGlmCiAKQEAgLTQ2NzksNyArNjA1Nyw3IEBACiAJICAgICAgZm9yIChxID0gcDsgKnE7IHErKykKIAkJaWYgKElTX1BBVEhfU0VQQVJBVE9SICgqcSkpCiAJCSAgYnJlYWs7Ci0JICAgICAgcF9sZW4gPSBxIC0gcDsKKwkgICAgICBwX2xlbiA9IChzaXplX3QpIChxIC0gcCk7CiAJICAgICAgcF9uZXh0ID0gKCpxID09ICdcMCcgPyBxIDogcSArIDEpOwogCSAgICAgIGlmIChwX2xlbiA9PSAwKQogCQl7CkBAIC00Nzk4LDcgKzYxNzYsNyBAQAogICBpZiAocGF0bGVuIDw9IGxlbikKICAgICB7CiAgICAgICBzdHIgKz0gbGVuIC0gcGF0bGVuOwotICAgICAgaWYgKHN0cmNtcCAoc3RyLCBwYXQpID09IDApCisgICAgICBpZiAoU1RSRVEgKHN0ciwgcGF0KSkKIAkqc3RyID0gJ1wwJzsKICAgICB9CiAgIHJldHVybiBzdHI7CkBAIC00ODYzLDcgKzYyNDEsNyBAQAogICAgIGNoYXIgKnN0ciA9IHhzdHJkdXAgKHZhbHVlKTsKICAgICBzZXRlbnYgKG5hbWUsIHN0ciwgMSk7CiAjZWxzZQotICAgIGludCBsZW4gPSBzdHJsZW4gKG5hbWUpICsgMSArIHN0cmxlbiAodmFsdWUpICsgMTsKKyAgICBzaXplX3QgbGVuID0gc3RybGVuIChuYW1lKSArIDEgKyBzdHJsZW4gKHZhbHVlKSArIDE7CiAgICAgY2hhciAqc3RyID0gWE1BTExPQyAoY2hhciwgbGVuKTsKICAgICBzcHJpbnRmIChzdHIsICIlcz0lcyIsIG5hbWUsIHZhbHVlKTsKICAgICBpZiAocHV0ZW52IChzdHIpICE9IEVYSVRfU1VDQ0VTUykKQEAgLTQ4ODAsOCArNjI1OCw4IEBACiAgIGNoYXIgKm5ld192YWx1ZTsKICAgaWYgKG9yaWdfdmFsdWUgJiYgKm9yaWdfdmFsdWUpCiAgICAgewotICAgICAgaW50IG9yaWdfdmFsdWVfbGVuID0gc3RybGVuIChvcmlnX3ZhbHVlKTsKLSAgICAgIGludCBhZGRfbGVuID0gc3RybGVuIChhZGQpOworICAgICAgc2l6ZV90IG9yaWdfdmFsdWVfbGVuID0gc3RybGVuIChvcmlnX3ZhbHVlKTsKKyAgICAgIHNpemVfdCBhZGRfbGVuID0gc3RybGVuIChhZGQpOwogICAgICAgbmV3X3ZhbHVlID0gWE1BTExPQyAoY2hhciwgYWRkX2xlbiArIG9yaWdfdmFsdWVfbGVuICsgMSk7CiAgICAgICBpZiAodG9fZW5kKQogICAgICAgICB7CkBAIC00OTEyLDEwICs2MjkwLDEwIEBACiAgICAgewogICAgICAgY2hhciAqbmV3X3ZhbHVlID0gbHRfZXh0ZW5kX3N0ciAoZ2V0ZW52IChuYW1lKSwgdmFsdWUsIDApOwogICAgICAgLyogc29tZSBzeXN0ZW1zIGNhbid0IGNvcGUgd2l0aCBhICc6Jy10ZXJtaW5hdGVkIHBhdGggIycgKi8KLSAgICAgIGludCBsZW4gPSBzdHJsZW4gKG5ld192YWx1ZSk7Ci0gICAgICB3aGlsZSAoKChsZW4gPSBzdHJsZW4gKG5ld192YWx1ZSkpID4gMCkgJiYgSVNfUEFUSF9TRVBBUkFUT1IgKG5ld192YWx1ZVtsZW4tMV0pKQorICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAobmV3X3ZhbHVlKTsKKyAgICAgIHdoaWxlICgobGVuID4gMCkgJiYgSVNfUEFUSF9TRVBBUkFUT1IgKG5ld192YWx1ZVtsZW4tMV0pKQogICAgICAgICB7Ci0gICAgICAgICAgbmV3X3ZhbHVlW2xlbi0xXSA9ICdcMCc7CisgICAgICAgICAgbmV3X3ZhbHVlWy0tbGVuXSA9ICdcMCc7CiAgICAgICAgIH0KICAgICAgIGx0X3NldGVudiAobmFtZSwgbmV3X3ZhbHVlKTsKICAgICAgIFhGUkVFIChuZXdfdmFsdWUpOwpAQCAtNTA4MiwyNyArNjQ2MCw0NyBAQAogIyBUcnVlIGlmIEFSRyBpcyBhbiBpbXBvcnQgbGliLCBhcyBpbmRpY2F0ZWQgYnkgJGZpbGVfbWFnaWNfY21kCiBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAoKQogewotICAgICRvcHRfZGVidWcKKyAgICAkZGVidWdfY21kCisKICAgICBjYXNlIGBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIHwgJFNFRCAtZSAxMHFgIGluCiAgICAgKmltcG9ydCopIDogOzsKICAgICAqKSBmYWxzZSA7OwogICAgIGVzYWMKIH0KIAorIyBmdW5jX3N1bmNjX2NzdGRfYWJpCisjICEhT05MWSBDQUxMIFRISVMgRk9SIFNVTiBDQyBBRlRFUiAkY29tcGlsZV9jb21tYW5kIElTIEZVTExZIEVYUEFOREVEISEKKyMgU2V2ZXJhbCBjb21waWxlciBmbGFncyBzZWxlY3QgYW4gQUJJIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlCisjIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZyBpdCBpZiBhbnkgYXJlIGluIENYWEZMQUdTLgorZnVuY19zdW5jY19jc3RkX2FiaSAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgIGNhc2UgIiAkY29tcGlsZV9jb21tYW5kICIgaW4KKyAgICAqIiAtY29tcGF0PWcgIip8KlwgLXN0ZD1jKytbMC05XVswLTldXCAqfCoiIC1saWJyYXJ5PXN0ZGN4eDQgIip8KiIgLWxpYnJhcnk9c3RscG9ydDQgIiopCisgICAgICBzdW5jY191c2VfY3N0ZF9hYmk9bm8KKyAgICAgIDs7CisgICAgKikKKyAgICAgIHN1bmNjX3VzZV9jc3RkX2FiaT15ZXMKKyAgICAgIDs7CisgICAgZXNhYworfQorCiAjIGZ1bmNfbW9kZV9saW5rIGFyZy4uLgogZnVuY19tb2RlX2xpbmsgKCkKIHsKLSAgICAkb3B0X2RlYnVnCisgICAgJGRlYnVnX2NtZAorCiAgICAgY2FzZSAkaG9zdCBpbgogICAgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi1jZWdjYyopCiAgICAgICAjIEl0IGlzIGltcG9zc2libGUgdG8gbGluayBhIGRsbCB3aXRob3V0IHRoaXMgc2V0dGluZywgYW5kCiAgICAgICAjIHdlIHNob3VsZG4ndCBmb3JjZSB0aGUgbWFrZWZpbGUgbWFpbnRhaW5lciB0byBmaWd1cmUgb3V0Ci0gICAgICAjIHdoaWNoIHN5c3RlbSB3ZSBhcmUgY29tcGlsaW5nIGZvciBpbiBvcmRlciB0byBwYXNzIGFuIGV4dHJhCisgICAgICAjIHdoYXQgc3lzdGVtIHdlIGFyZSBjb21waWxpbmcgZm9yIGluIG9yZGVyIHRvIHBhc3MgYW4gZXh0cmEKICAgICAgICMgZmxhZyBmb3IgZXZlcnkgbGlidG9vbCBpbnZvY2F0aW9uLgogICAgICAgIyBhbGxvd191bmRlZmluZWQ9bm8KIAogICAgICAgIyBGSVhNRTogVW5mb3J0dW5hdGVseSwgdGhlcmUgYXJlIHByb2JsZW1zIHdpdGggdGhlIGFib3ZlIHdoZW4gdHJ5aW5nCi0gICAgICAjIHRvIG1ha2UgYSBkbGwgd2hpY2ggaGFzIHVuZGVmaW5lZCBzeW1ib2xzLCBpbiB3aGljaCBjYXNlIG5vdAorICAgICAgIyB0byBtYWtlIGEgZGxsIHRoYXQgaGFzIHVuZGVmaW5lZCBzeW1ib2xzLCBpbiB3aGljaCBjYXNlIG5vdAogICAgICAgIyBldmVuIGEgc3RhdGljIGxpYnJhcnkgaXMgYnVpbHQuICBGb3Igbm93LCB3ZSBuZWVkIHRvIHNwZWNpZnkKICAgICAgICMgLW5vLXVuZGVmaW5lZCBvbiB0aGUgbGlidG9vbCBsaW5rIGxpbmUgd2hlbiB3ZSBjYW4gYmUgY2VydGFpbgogICAgICAgIyB0aGF0IGFsbCBzeW1ib2xzIGFyZSBzYXRpc2ZpZWQsIG90aGVyd2lzZSB3ZSBnZXQgYSBzdGF0aWMgbGlicmFyeS4KQEAgLTUxNDYsMTAgKzY1NDQsMTEgQEAKICAgICBtb2R1bGU9bm8KICAgICBub19pbnN0YWxsPW5vCiAgICAgb2Jqcz0KKyAgICBvczJkbGxuYW1lPQogICAgIG5vbl9waWNfb2JqZWN0cz0KICAgICBwcmVjaW91c19maWxlc19yZWdleD0KICAgICBwcmVmZXJfc3RhdGljX2xpYnM9bm8KLSAgICBwcmVsb2FkPW5vCisgICAgcHJlbG9hZD1mYWxzZQogICAgIHByZXY9CiAgICAgcHJldmFyZz0KICAgICByZWxlYXNlPQpAQCAtNTE2MSw3ICs2NTYwLDcgQEAKICAgICB2aW5mbz0KICAgICB2aW5mb19udW1iZXI9bm8KICAgICB3ZWFrX2xpYnM9Ci0gICAgc2luZ2xlX21vZHVsZT0iJHt3bH0tc2luZ2xlX21vZHVsZSIKKyAgICBzaW5nbGVfbW9kdWxlPSR3bC1zaW5nbGVfbW9kdWxlCiAgICAgZnVuY19pbmZlcl90YWcgJGJhc2VfY29tcGlsZQogCiAgICAgIyBXZSBuZWVkIHRvIGtub3cgLXN0YXRpYywgdG8gZ2V0IHRoZSByaWdodCBvdXRwdXQgZmlsZW5hbWVzLgpAQCAtNTE2OSwxNSArNjU2OCwxNSBAQAogICAgIGRvCiAgICAgICBjYXNlICRhcmcgaW4KICAgICAgIC1zaGFyZWQpCi0JdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIFwKLQkgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAiY2FuIG5vdCBidWlsZCBhIHNoYXJlZCBsaWJyYXJ5IgorCXRlc3QgeWVzICE9ICIkYnVpbGRfbGlidG9vbF9saWJzIiBcCisJICAmJiBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gImNhbm5vdCBidWlsZCBhIHNoYXJlZCBsaWJyYXJ5IgogCWJ1aWxkX29sZF9saWJzPW5vCiAJYnJlYWsKIAk7OwogICAgICAgLWFsbC1zdGF0aWMgfCAtc3RhdGljIHwgLXN0YXRpYy1saWJ0b29sLWxpYnMpCiAJY2FzZSAkYXJnIGluCiAJLWFsbC1zdGF0aWMpCi0JICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0IC16ICIkbGlua19zdGF0aWNfZmxhZyI7IHRoZW4KKwkgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiICYmIHRlc3QgLXogIiRsaW5rX3N0YXRpY19mbGFnIjsgdGhlbgogCSAgICBmdW5jX3dhcm5pbmcgImNvbXBsZXRlIHN0YXRpYyBsaW5raW5nIGlzIGltcG9zc2libGUgaW4gdGhpcyBjb25maWd1cmF0aW9uIgogCSAgZmkKIAkgIGlmIHRlc3QgLW4gIiRsaW5rX3N0YXRpY19mbGFnIjsgdGhlbgpAQCAtNTIxMCw3ICs2NjA5LDcgQEAKIAogICAgICMgR28gdGhyb3VnaCB0aGUgYXJndW1lbnRzLCB0cmFuc2Zvcm1pbmcgdGhlbSBvbiB0aGUgd2F5LgogICAgIHdoaWxlIHRlc3QgIiQjIiAtZ3QgMDsgZG8KLSAgICAgIGFyZz0iJDEiCisgICAgICBhcmc9JDEKICAgICAgIHNoaWZ0CiAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgogICAgICAgcWFyZz0kZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQKQEAgLTUyMjcsMjEgKzY2MjYsMjEgQEAKIAogCWNhc2UgJHByZXYgaW4KIAliaW5kaXIpCi0JICBiaW5kaXI9IiRhcmciCisJICBiaW5kaXI9JGFyZwogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OwogCWRsZmlsZXN8ZGxwcmVmaWxlcykKLQkgIGlmIHRlc3QgIiRwcmVsb2FkIiA9IG5vOyB0aGVuCisJICAkcHJlbG9hZCB8fCB7CiAJICAgICMgQWRkIHRoZSBzeW1ib2wgb2JqZWN0IGludG8gdGhlIGxpbmtpbmcgY29tbWFuZHMuCiAJICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiIEBTWU1GSUxFQCIKIAkgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiIEBTWU1GSUxFQCIKLQkgICAgcHJlbG9hZD15ZXMKLQkgIGZpCisJICAgIHByZWxvYWQ9OgorCSAgfQogCSAgY2FzZSAkYXJnIGluCiAJICAqLmxhIHwgKi5sbykgOzsgICMgV2UgaGFuZGxlIHRoZXNlIGNhc2VzIGJlbG93LgogCSAgZm9yY2UpCi0JICAgIGlmIHRlc3QgIiRkbHNlbGYiID0gbm87IHRoZW4KKwkgICAgaWYgdGVzdCBubyA9ICIkZGxzZWxmIjsgdGhlbgogCSAgICAgIGRsc2VsZj1uZWVkbGVzcwogCSAgICAgIGV4cG9ydF9keW5hbWljPXllcwogCSAgICBmaQpAQCAtNTI0OSw5ICs2NjQ4LDkgQEAKIAkgICAgY29udGludWUKIAkgICAgOzsKIAkgIHNlbGYpCi0JICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KKwkgICAgaWYgdGVzdCBkbHByZWZpbGVzID0gIiRwcmV2IjsgdGhlbgogCSAgICAgIGRsc2VsZj15ZXMKLQkgICAgZWxpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzICYmIHRlc3QgIiRkbG9wZW5fc2VsZiIgIT0geWVzOyB0aGVuCisJICAgIGVsaWYgdGVzdCBkbGZpbGVzID0gIiRwcmV2IiAmJiB0ZXN0IHllcyAhPSAiJGRsb3Blbl9zZWxmIjsgdGhlbgogCSAgICAgIGRsc2VsZj15ZXMKIAkgICAgZWxzZQogCSAgICAgIGRsc2VsZj1uZWVkbGVzcwpAQCAtNTI2MSw3ICs2NjYwLDcgQEAKIAkgICAgY29udGludWUKIAkgICAgOzsKIAkgICopCi0JICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKwkgICAgaWYgdGVzdCBkbGZpbGVzID0gIiRwcmV2IjsgdGhlbgogCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkYXJnIgogCSAgICBlbHNlCiAJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRhcmciCkBAIC01MjcyLDE0ICs2NjcxLDE0IEBACiAJICBlc2FjCiAJICA7OwogCWV4cHN5bXMpCi0JICBleHBvcnRfc3ltYm9scz0iJGFyZyIKKwkgIGV4cG9ydF9zeW1ib2xzPSRhcmcKIAkgIHRlc3QgLWYgIiRhcmciIFwKLQkgICAgfHwgZnVuY19mYXRhbF9lcnJvciAic3ltYm9sIGZpbGUgXGAkYXJnJyBkb2VzIG5vdCBleGlzdCIKKwkgICAgfHwgZnVuY19mYXRhbF9lcnJvciAic3ltYm9sIGZpbGUgJyRhcmcnIGRvZXMgbm90IGV4aXN0IgogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OwogCWV4cHN5bXNfcmVnZXgpCi0JICBleHBvcnRfc3ltYm9sc19yZWdleD0iJGFyZyIKKwkgIGV4cG9ydF9zeW1ib2xzX3JlZ2V4PSRhcmcKIAkgIHByZXY9CiAJICBjb250aW51ZQogCSAgOzsKQEAgLTUyOTcsNyArNjY5NiwxMyBAQAogCSAgY29udGludWUKIAkgIDs7CiAJaW5zdF9wcmVmaXgpCi0JICBpbnN0X3ByZWZpeF9kaXI9IiRhcmciCisJICBpbnN0X3ByZWZpeF9kaXI9JGFyZworCSAgcHJldj0KKwkgIGNvbnRpbnVlCisJICA7OworCW1sbHZtKQorCSAgIyBDbGFuZyBkb2VzIG5vdCB1c2UgTExWTSB0byBsaW5rLCBzbyB3ZSBjYW4gc2ltcGx5IGRpc2NhcmQgYW55CisJICAjICctbWxsdm0gJGFyZycgb3B0aW9ucyB3aGVuIGRvaW5nIHRoZSBsaW5rIHN0ZXAuCiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7CkBAIC01MzIxLDIxICs2NzI2LDIxIEBACiAKIAkJaWYgdGVzdCAteiAiJHBpY19vYmplY3QiIHx8CiAJCSAgIHRlc3QgLXogIiRub25fcGljX29iamVjdCIgfHwKLQkJICAgdGVzdCAiJHBpY19vYmplY3QiID0gbm9uZSAmJgotCQkgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiID0gbm9uZTsgdGhlbgotCQkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2Ygb2JqZWN0IGZvciBcYCRhcmcnIgorCQkgICB0ZXN0IG5vbmUgPSAiJHBpY19vYmplY3QiICYmCisJCSAgIHRlc3Qgbm9uZSA9ICIkbm9uX3BpY19vYmplY3QiOyB0aGVuCisJCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBvYmplY3QgZm9yICckYXJnJyIKIAkJZmkKIAogCQkjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgogCQlmdW5jX2Rpcm5hbWUgIiRhcmciICIvIiAiIgotCQl4ZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwkJeGRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAogCi0JCWlmIHRlc3QgIiRwaWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCisJCWlmIHRlc3Qgbm9uZSAhPSAiJHBpY19vYmplY3QiOyB0aGVuCiAJCSAgIyBQcmVwZW5kIHRoZSBzdWJkaXJlY3RvcnkgdGhlIG9iamVjdCBpcyBmb3VuZCBpbi4KLQkJICBwaWNfb2JqZWN0PSIkeGRpciRwaWNfb2JqZWN0IgorCQkgIHBpY19vYmplY3Q9JHhkaXIkcGljX29iamVjdAogCi0JCSAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotCQkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgorCQkgIGlmIHRlc3QgZGxmaWxlcyA9ICIkcHJldiI7IHRoZW4KKwkJICAgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiICYmIHRlc3QgeWVzID0gIiRkbG9wZW5fc3VwcG9ydCI7IHRoZW4KIAkJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgogCQkgICAgICBwcmV2PQogCQkgICAgICBjb250aW51ZQpAQCAtNTM0Niw3ICs2NzUxLDcgQEAKIAkJICBmaQogCiAJCSAgIyBDSEVDSyBNRTogIEkgdGhpbmsgSSBidXN0ZWQgdGhpcy4gIC1Pc3NhbWEKLQkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisJCSAgaWYgdGVzdCBkbHByZWZpbGVzID0gIiRwcmV2IjsgdGhlbgogCQkgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgogCQkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgogCQkgICAgcHJldj0KQEAgLTUzNTQsMjMgKzY3NTksMjMgQEAKIAogCQkgICMgQSBQSUMgb2JqZWN0LgogCQkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkcGljX29iamVjdCIKLQkJICBhcmc9IiRwaWNfb2JqZWN0IgorCQkgIGFyZz0kcGljX29iamVjdAogCQlmaQogCiAJCSMgTm9uLVBJQyBvYmplY3QuCi0JCWlmIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorCQlpZiB0ZXN0IG5vbmUgIT0gIiRub25fcGljX29iamVjdCI7IHRoZW4KIAkJICAjIFByZXBlbmQgdGhlIHN1YmRpcmVjdG9yeSB0aGUgb2JqZWN0IGlzIGZvdW5kIGluLgotCQkgIG5vbl9waWNfb2JqZWN0PSIkeGRpciRub25fcGljX29iamVjdCIKKwkJICBub25fcGljX29iamVjdD0keGRpciRub25fcGljX29iamVjdAogCiAJCSAgIyBBIHN0YW5kYXJkIG5vbi1QSUMgb2JqZWN0CiAJCSAgZnVuY19hcHBlbmQgbm9uX3BpY19vYmplY3RzICIgJG5vbl9waWNfb2JqZWN0IgotCQkgIGlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fCB0ZXN0ICIkcGljX29iamVjdCIgPSBub25lIDsgdGhlbgotCQkgICAgYXJnPSIkbm9uX3BpY19vYmplY3QiCisJCSAgaWYgdGVzdCAteiAiJHBpY19vYmplY3QiIHx8IHRlc3Qgbm9uZSA9ICIkcGljX29iamVjdCI7IHRoZW4KKwkJICAgIGFyZz0kbm9uX3BpY19vYmplY3QKIAkJICBmaQogCQllbHNlCiAJCSAgIyBJZiB0aGUgUElDIG9iamVjdCBleGlzdHMsIHVzZSBpdCBpbnN0ZWFkLgogCQkgICMgJHhkaXIgd2FzIHByZXBlbmRlZCB0byAkcGljX29iamVjdCBhYm92ZS4KLQkJICBub25fcGljX29iamVjdD0iJHBpY19vYmplY3QiCisJCSAgbm9uX3BpY19vYmplY3Q9JHBpY19vYmplY3QKIAkJICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCiAJCWZpCiAJICAgICAgZWxzZQpAQCAtNTM3OCw3ICs2NzgzLDcgQEAKIAkJaWYgJG9wdF9kcnlfcnVuOyB0aGVuCiAJCSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KIAkJICBmdW5jX2Rpcm5hbWUgIiRhcmciICIvIiAiIgotCQkgIHhkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorCQkgIHhkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKIAogCQkgIGZ1bmNfbG8ybyAiJGFyZyIKIAkJICBwaWNfb2JqZWN0PSR4ZGlyJG9iamRpci8kZnVuY19sbzJvX3Jlc3VsdApAQCAtNTM4NiwyNCArNjc5MSwyOSBAQAogCQkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkcGljX29iamVjdCIKIAkJICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCiAJICAgICAgICBlbHNlCi0JCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkYXJnJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIG9iamVjdCIKKwkJICBmdW5jX2ZhdGFsX2Vycm9yICInJGFyZycgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBvYmplY3QiCiAJCWZpCiAJICAgICAgZmkKIAkgICAgZG9uZQogCSAgZWxzZQotCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJsaW5rIGlucHV0IGZpbGUgXGAkYXJnJyBkb2VzIG5vdCBleGlzdCIKKwkgICAgZnVuY19mYXRhbF9lcnJvciAibGluayBpbnB1dCBmaWxlICckYXJnJyBkb2VzIG5vdCBleGlzdCIKIAkgIGZpCiAJICBhcmc9JHNhdmVfYXJnCiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7CisJb3MyZGxsbmFtZSkKKwkgIG9zMmRsbG5hbWU9JGFyZworCSAgcHJldj0KKwkgIGNvbnRpbnVlCisJICA7OwogCXByZWNpb3VzX3JlZ2V4KQotCSAgcHJlY2lvdXNfZmlsZXNfcmVnZXg9IiRhcmciCisJICBwcmVjaW91c19maWxlc19yZWdleD0kYXJnCiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7CiAJcmVsZWFzZSkKLQkgIHJlbGVhc2U9Ii0kYXJnIgorCSAgcmVsZWFzZT0tJGFyZwogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OwpAQCAtNTQxNSw3ICs2ODI1LDcgQEAKIAkgICAgZnVuY19mYXRhbF9lcnJvciAib25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiCiAJICAgIDs7CiAJICBlc2FjCi0JICBpZiB0ZXN0ICIkcHJldiIgPSBycGF0aDsgdGhlbgorCSAgaWYgdGVzdCBycGF0aCA9ICIkcHJldiI7IHRoZW4KIAkgICAgY2FzZSAiJHJwYXRoICIgaW4KIAkgICAgKiIgJGFyZyAiKikgOzsKIAkgICAgKikgZnVuY19hcHBlbmQgcnBhdGggIiAkYXJnIiA7OwpAQCAtNTQzMCw3ICs2ODQwLDcgQEAKIAkgIGNvbnRpbnVlCiAJICA7OwogCXNocmV4dCkKLQkgIHNocmV4dF9jbWRzPSIkYXJnIgorCSAgc2hyZXh0X2NtZHM9JGFyZwogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OwpAQCAtNTQ3MCw3ICs2ODgwLDcgQEAKIAllc2FjCiAgICAgICBmaSAjIHRlc3QgLW4gIiRwcmV2IgogCi0gICAgICBwcmV2YXJnPSIkYXJnIgorICAgICAgcHJldmFyZz0kYXJnCiAKICAgICAgIGNhc2UgJGFyZyBpbgogICAgICAgLWFsbC1zdGF0aWMpCkBAIC01NDg0LDcgKzY4OTQsNyBAQAogCiAgICAgICAtYWxsb3ctdW5kZWZpbmVkKQogCSMgRklYTUU6IHJlbW92ZSB0aGlzIGZsYWcgc29tZXRpbWUgaW4gdGhlIGZ1dHVyZS4KLQlmdW5jX2ZhdGFsX2Vycm9yICJcYC1hbGxvdy11bmRlZmluZWQnIG11c3Qgbm90IGJlIHVzZWQgYmVjYXVzZSBpdCBpcyB0aGUgZGVmYXVsdCIKKwlmdW5jX2ZhdGFsX2Vycm9yICInLWFsbG93LXVuZGVmaW5lZCcgbXVzdCBub3QgYmUgdXNlZCBiZWNhdXNlIGl0IGlzIHRoZSBkZWZhdWx0IgogCTs7CiAKICAgICAgIC1hdm9pZC12ZXJzaW9uKQpAQCAtNTUxNiw3ICs2OTI2LDcgQEAKIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiIHx8IHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KIAkgIGZ1bmNfZmF0YWxfZXJyb3IgIm1vcmUgdGhhbiBvbmUgLWV4cG9ydGVkLXN5bWJvbHMgYXJndW1lbnQgaXMgbm90IGFsbG93ZWQiCiAJZmkKLQlpZiB0ZXN0ICJYJGFyZyIgPSAiWC1leHBvcnQtc3ltYm9scyI7IHRoZW4KKwlpZiB0ZXN0IFgtZXhwb3J0LXN5bWJvbHMgPSAiWCRhcmciOyB0aGVuCiAJICBwcmV2PWV4cHN5bXMKIAllbHNlCiAJICBwcmV2PWV4cHN5bXNfcmVnZXgKQEAgLTU1NTAsOSArNjk2MCw5IEBACiAJZnVuY19zdHJpcG5hbWUgIi1MIiAnJyAiJGFyZyIKIAlpZiB0ZXN0IC16ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IjsgdGhlbgogCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCi0JICAgIGZ1bmNfZmF0YWxfZXJyb3IgInJlcXVpcmUgbm8gc3BhY2UgYmV0d2VlbiBcYC1MJyBhbmQgXGAkMSciCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgInJlcXVpcmUgbm8gc3BhY2UgYmV0d2VlbiAnLUwnIGFuZCAnJDEnIgogCSAgZWxzZQotCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJuZWVkIHBhdGggZm9yIFxgLUwnIG9wdGlvbiIKKwkgICAgZnVuY19mYXRhbF9lcnJvciAibmVlZCBwYXRoIGZvciAnLUwnIG9wdGlvbiIKIAkgIGZpCiAJZmkKIAlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKQEAgLTU1NjMsOCArNjk3Myw4IEBACiAJKikKIAkgIGFic2Rpcj1gY2QgIiRkaXIiICYmIHB3ZGAKIAkgIHRlc3QgLXogIiRhYnNkaXIiICYmIFwKLQkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGRldGVybWluZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBvZiBcYCRkaXInIgotCSAgZGlyPSIkYWJzZGlyIgorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZGV0ZXJtaW5lIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIG9mICckZGlyJyIKKwkgIGRpcj0kYWJzZGlyCiAJICA7OwogCWVzYWMKIAljYXNlICIkZGVwbGlicyAiIGluCkBAIC01NTk5LDcgKzcwMDksNyBAQAogCTs7CiAKICAgICAgIC1sKikKLQlpZiB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgfHwgdGVzdCAiWCRhcmciID0gIlgtbG0iOyB0aGVuCisJaWYgdGVzdCBYLWxjID0gIlgkYXJnIiB8fCB0ZXN0IFgtbG0gPSAiWCRhcmciOyB0aGVuCiAJICBjYXNlICRob3N0IGluCiAJICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKiB8ICotKi1oYWlrdSopCiAJICAgICMgVGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgQyBvciBtYXRoIGxpYnJhcnkgKGFzIHN1Y2gpCkBAIC01NjA3LDExICs3MDE3LDExIEBACiAJICAgIDs7CiAJICAqLSotb3MyKikKIAkgICAgIyBUaGVzZSBzeXN0ZW1zIGRvbid0IGFjdHVhbGx5IGhhdmUgYSBDIGxpYnJhcnkgKGFzIHN1Y2gpCi0JICAgIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiAmJiBjb250aW51ZQorCSAgICB0ZXN0IFgtbGMgPSAiWCRhcmciICYmIGNvbnRpbnVlCiAJICAgIDs7Ci0JICAqLSotb3BlbmJzZCogfCAqLSotZnJlZWJzZCogfCAqLSotZHJhZ29uZmx5KikKKwkgICotKi1vcGVuYnNkKiB8ICotKi1mcmVlYnNkKiB8ICotKi1kcmFnb25mbHkqIHwgKi0qLWJpdHJpZyopCiAJICAgICMgRG8gbm90IGluY2x1ZGUgbGliYyBkdWUgdG8gdXMgaGF2aW5nIGxpYmMvbGliY19yLgotCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKKwkgICAgdGVzdCBYLWxjID0gIlgkYXJnIiAmJiBjb250aW51ZQogCSAgICA7OwogCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSAgICAjIFJoYXBzb2R5IEMgYW5kIG1hdGggbGlicmFyaWVzIGFyZSBpbiB0aGUgU3lzdGVtIGZyYW1ld29yawpAQCAtNTYyMCwxNiArNzAzMCwxNiBAQAogCSAgICA7OwogCSAgKi0qLXNjbzMuMnY1KiB8ICotKi1zY281djYqKQogCSAgICAjIENhdXNlcyBwcm9ibGVtcyB3aXRoIF9fY3R5cGUKLQkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCisJICAgIHRlc3QgWC1sYyA9ICJYJGFyZyIgJiYgY29udGludWUKIAkgICAgOzsKIAkgICotKi1zeXN2NC4ydXcyKiB8ICotKi1zeXN2NSogfCAqLSotdW5peHdhcmUqIHwgKi0qLU9wZW5VTklYKikKIAkgICAgIyBDb21waWxlciBpbnNlcnRzIGxpYmMgaW4gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIHRocmVhZHMgdG8gd29yawotCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKKwkgICAgdGVzdCBYLWxjID0gIlgkYXJnIiAmJiBjb250aW51ZQogCSAgICA7OwogCSAgZXNhYwotCWVsaWYgdGVzdCAiWCRhcmciID0gIlgtbGNfciI7IHRoZW4KKwllbGlmIHRlc3QgWC1sY19yID0gIlgkYXJnIjsgdGhlbgogCSBjYXNlICRob3N0IGluCi0JICotKi1vcGVuYnNkKiB8ICotKi1mcmVlYnNkKiB8ICotKi1kcmFnb25mbHkqKQorCSAqLSotb3BlbmJzZCogfCAqLSotZnJlZWJzZCogfCAqLSotZHJhZ29uZmx5KiB8ICotKi1iaXRyaWcqKQogCSAgICMgRG8gbm90IGluY2x1ZGUgbGliY19yIGRpcmVjdGx5LCB1c2UgLXB0aHJlYWQgZmxhZy4KIAkgICBjb250aW51ZQogCSAgIDs7CkBAIC01NjM5LDYgKzcwNDksMTEgQEAKIAljb250aW51ZQogCTs7CiAKKyAgICAgIC1tbGx2bSkKKwlwcmV2PW1sbHZtCisJY29udGludWUKKwk7OworCiAgICAgICAtbW9kdWxlKQogCW1vZHVsZT15ZXMKIAljb250aW51ZQpAQCAtNTY2OCw3ICs3MDgzLDcgQEAKIAk7OwogCiAgICAgICAtbXVsdGlfbW9kdWxlKQotCXNpbmdsZV9tb2R1bGU9IiR7d2x9LW11bHRpX21vZHVsZSIKKwlzaW5nbGVfbW9kdWxlPSR3bC1tdWx0aV9tb2R1bGUKIAljb250aW51ZQogCTs7CiAKQEAgLTU2ODIsOCArNzA5Nyw4IEBACiAJKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotZGFyd2luKiB8ICotY2VnY2MqKQogCSAgIyBUaGUgUEFUSCBoYWNrZXJ5IGluIHdyYXBwZXIgc2NyaXB0cyBpcyByZXF1aXJlZCBvbiBXaW5kb3dzCiAJICAjIGFuZCBEYXJ3aW4gaW4gb3JkZXIgZm9yIHRoZSBsb2FkZXIgdG8gZmluZCBhbnkgZGxscyBpdCBuZWVkcy4KLQkgIGZ1bmNfd2FybmluZyAiXGAtbm8taW5zdGFsbCcgaXMgaWdub3JlZCBmb3IgJGhvc3QiCi0JICBmdW5jX3dhcm5pbmcgImFzc3VtaW5nIFxgLW5vLWZhc3QtaW5zdGFsbCcgaW5zdGVhZCIKKwkgIGZ1bmNfd2FybmluZyAiJy1uby1pbnN0YWxsJyBpcyBpZ25vcmVkIGZvciAkaG9zdCIKKwkgIGZ1bmNfd2FybmluZyAiYXNzdW1pbmcgJy1uby1mYXN0LWluc3RhbGwnIGluc3RlYWQiCiAJICBmYXN0X2luc3RhbGw9bm8KIAkgIDs7CiAJKikgbm9faW5zdGFsbD15ZXMgOzsKQEAgLTU3MDEsNiArNzExNiwxMSBAQAogCWNvbnRpbnVlCiAJOzsKIAorICAgICAgLW9zMmRsbG5hbWUpCisJcHJldj1vczJkbGxuYW1lCisJY29udGludWUKKwk7OworCiAgICAgICAtbykgcHJldj1vdXRwdXQgOzsKIAogICAgICAgLXByZWNpb3VzLWZpbGVzLXJlZ2V4KQpAQCAtNTc4OCwxNCArNzIwOCwxNCBAQAogCWZ1bmNfc3RyaXBuYW1lICctV2MsJyAnJyAiJGFyZyIKIAlhcmdzPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAlhcmc9Ci0Jc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCisJc2F2ZV9pZnM9JElGUzsgSUZTPSwKIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KLQkgIElGUz0iJHNhdmVfaWZzIgorCSAgSUZTPSRzYXZlX2lmcwogICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgogCSAgZnVuY19hcHBlbmQgYXJnICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJZG9uZQotCUlGUz0iJHNhdmVfaWZzIgorCUlGUz0kc2F2ZV9pZnMKIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCiAJYXJnPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAk7OwpAQCAtNTgwNCwxNSArNzIyNCwxNSBAQAogCWZ1bmNfc3RyaXBuYW1lICctV2wsJyAnJyAiJGFyZyIKIAlhcmdzPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAlhcmc9Ci0Jc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCisJc2F2ZV9pZnM9JElGUzsgSUZTPSwKIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KLQkgIElGUz0iJHNhdmVfaWZzIgorCSAgSUZTPSRzYXZlX2lmcwogICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgogCSAgZnVuY19hcHBlbmQgYXJnICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJZG9uZQotCUlGUz0iJHNhdmVfaWZzIgorCUlGUz0kc2F2ZV9pZnMKIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCiAJYXJnPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAk7OwpAQCAtNTgzNSw3ICs3MjU1LDcgQEAKICAgICAgICMgLW1zZ18qIGZvciBvc2YgY2MKICAgICAgIC1tc2dfKikKIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCWFyZz0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKIAk7OwogCiAgICAgICAjIEZsYWdzIHRvIGJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZCwgd2l0aCByYXRpb25hbGU6CkBAIC01ODQ3LDI1ICs3MjY3LDQ5IEBACiAgICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBmb3IgR0NDCiAgICAgICAjIC1GL3BhdGggICAgICAgICAgICAgIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgogICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiAgcHJvZmlsaW5nIGZsYWdzIGZvciBHQ0MKKyAgICAgICMgLWZzdGFjay1wcm90ZWN0b3IqICAgc3RhY2sgcHJvdGVjdG9yIGZsYWdzIGZvciBHQ0MKICAgICAgICMgQGZpbGUgICAgICAgICAgICAgICAgR0NDIHJlc3BvbnNlIGZpbGVzCiAgICAgICAjIC10cD0qICAgICAgICAgICAgICAgIFBvcnRsYW5kIHBnY2MgdGFyZ2V0IHByb2Nlc3NvciBzZWxlY3Rpb24KICAgICAgICMgLS1zeXNyb290PSogICAgICAgICAgZm9yIHN5c3Jvb3Qgc3VwcG9ydAotICAgICAgIyAtTyosIC1mbHRvKiwgLWZ3aG9wciosIC1mdXNlLWxpbmtlci1wbHVnaW4gR0NDIGxpbmstdGltZSBvcHRpbWl6YXRpb24KKyAgICAgICMgLU8qLCAtZyosIC1mbHRvKiwgLWZ3aG9wciosIC1mdXNlLWxpbmtlci1wbHVnaW4gR0NDIGxpbmstdGltZSBvcHRpbWl6YXRpb24KKyAgICAgICMgLXNwZWNzPSogICAgICAgICAgICAgR0NDIHNwZWNzIGZpbGVzCisgICAgICAjIC1zdGRsaWI9KiAgICAgICAgICAgIHNlbGVjdCBjKysgc3RkIGxpYiB3aXRoIGNsYW5nCisgICAgICAjIC1mc2FuaXRpemU9KiAgICAgICAgIENsYW5nL0dDQyBtZW1vcnkgYW5kIGFkZHJlc3Mgc2FuaXRpemVyCiAgICAgICAtNjR8LW1pcHNbMC05XXwtclswLTldWzAtOV0qfC14YXJjaD0qfC14dGFyZ2V0PSp8K0RBKnwrREQqfC1xKnwtbSp8IFwKICAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKnwtdHA9KnwtLXN5c3Jvb3Q9KnwgXAotICAgICAgLU8qfC1mbHRvKnwtZndob3ByKnwtZnVzZS1saW5rZXItcGx1Z2luKQorICAgICAgLU8qfC1nKnwtZmx0byp8LWZ3aG9wcip8LWZ1c2UtbGlua2VyLXBsdWdpbnwtZnN0YWNrLXByb3RlY3Rvcip8LXN0ZGxpYj0qfCBcCisgICAgICAtc3BlY3M9KnwtZnNhbml0aXplPSopCiAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0JYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJYXJnPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAogICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgogICAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKICAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgogICAgICAgICBjb250aW51ZQogICAgICAgICA7OwogCisgICAgICAtWiopCisgICAgICAgIGlmIHRlc3Qgb3MyID0gImBleHByICRob3N0IDogJy4qXChvczJcKSdgIjsgdGhlbgorICAgICAgICAgICMgT1MvMiB1c2VzIC1aeHh4IHRvIHNwZWNpZnkgT1MvMi1zcGVjaWZpYyBvcHRpb25zCisJICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCisJICBjYXNlICRhcmcgaW4KKwkgIC1abGlua2VyIHwgLVpzdGFjaykKKwkgICAgcHJldj14Y29tcGlsZXIKKwkgICAgOzsKKwkgIGVzYWMKKwkgIGNvbnRpbnVlCisgICAgICAgIGVsc2UKKwkgICMgT3RoZXJ3aXNlIHRyZWF0IGxpa2UgJ1NvbWUgb3RoZXIgY29tcGlsZXIgZmxhZycgYmVsb3cKKwkgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisJICBhcmc9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CisgICAgICAgIGZpCisJOzsKKwogICAgICAgIyBTb21lIG90aGVyIGNvbXBpbGVyIGZsYWcuCiAgICAgICAtKiB8ICsqKQogICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCWFyZz0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKIAk7OwogCiAgICAgICAqLiRvYmpleHQpCkBAIC01ODg2LDIxICs3MzMwLDIxIEBACiAKIAkgIGlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fAogCSAgICAgdGVzdCAteiAiJG5vbl9waWNfb2JqZWN0IiB8fAotCSAgICAgdGVzdCAiJHBpY19vYmplY3QiID0gbm9uZSAmJgotCSAgICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiA9IG5vbmU7IHRoZW4KLQkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBvYmplY3QgZm9yIFxgJGFyZyciCisJICAgICB0ZXN0IG5vbmUgPSAiJHBpY19vYmplY3QiICYmCisJICAgICB0ZXN0IG5vbmUgPSAiJG5vbl9waWNfb2JqZWN0IjsgdGhlbgorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIG9iamVjdCBmb3IgJyRhcmcnIgogCSAgZmkKIAogCSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KIAkgIGZ1bmNfZGlybmFtZSAiJGFyZyIgIi8iICIiCi0JICB4ZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwkgIHhkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKIAotCSAgaWYgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKwkgIHRlc3Qgbm9uZSA9ICIkcGljX29iamVjdCIgfHwgewogCSAgICAjIFByZXBlbmQgdGhlIHN1YmRpcmVjdG9yeSB0aGUgb2JqZWN0IGlzIGZvdW5kIGluLgotCSAgICBwaWNfb2JqZWN0PSIkeGRpciRwaWNfb2JqZWN0IgorCSAgICBwaWNfb2JqZWN0PSR4ZGlyJHBpY19vYmplY3QKIAotCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCi0JICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgorCSAgICBpZiB0ZXN0IGRsZmlsZXMgPSAiJHByZXYiOyB0aGVuCisJICAgICAgaWYgdGVzdCB5ZXMgPSAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgJiYgdGVzdCB5ZXMgPSAiJGRsb3Blbl9zdXBwb3J0IjsgdGhlbgogCQlmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCiAJCXByZXY9CiAJCWNvbnRpbnVlCkBAIC01OTExLDcgKzczNTUsNyBAQAogCSAgICBmaQogCiAJICAgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCi0JICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KKwkgICAgaWYgdGVzdCBkbHByZWZpbGVzID0gIiRwcmV2IjsgdGhlbgogCSAgICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KIAkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCiAJICAgICAgcHJldj0KQEAgLTU5MTksMjMgKzczNjMsMjMgQEAKIAogCSAgICAjIEEgUElDIG9iamVjdC4KIAkgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRwaWNfb2JqZWN0IgotCSAgICBhcmc9IiRwaWNfb2JqZWN0IgotCSAgZmkKKwkgICAgYXJnPSRwaWNfb2JqZWN0CisJICB9CiAKIAkgICMgTm9uLVBJQyBvYmplY3QuCi0JICBpZiB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKwkgIGlmIHRlc3Qgbm9uZSAhPSAiJG5vbl9waWNfb2JqZWN0IjsgdGhlbgogCSAgICAjIFByZXBlbmQgdGhlIHN1YmRpcmVjdG9yeSB0aGUgb2JqZWN0IGlzIGZvdW5kIGluLgotCSAgICBub25fcGljX29iamVjdD0iJHhkaXIkbm9uX3BpY19vYmplY3QiCisJICAgIG5vbl9waWNfb2JqZWN0PSR4ZGlyJG5vbl9waWNfb2JqZWN0CiAKIAkgICAgIyBBIHN0YW5kYXJkIG5vbi1QSUMgb2JqZWN0CiAJICAgIGZ1bmNfYXBwZW5kIG5vbl9waWNfb2JqZWN0cyAiICRub25fcGljX29iamVjdCIKLQkgICAgaWYgdGVzdCAteiAiJHBpY19vYmplY3QiIHx8IHRlc3QgIiRwaWNfb2JqZWN0IiA9IG5vbmUgOyB0aGVuCi0JICAgICAgYXJnPSIkbm9uX3BpY19vYmplY3QiCisJICAgIGlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fCB0ZXN0IG5vbmUgPSAiJHBpY19vYmplY3QiOyB0aGVuCisJICAgICAgYXJnPSRub25fcGljX29iamVjdAogCSAgICBmaQogCSAgZWxzZQogCSAgICAjIElmIHRoZSBQSUMgb2JqZWN0IGV4aXN0cywgdXNlIGl0IGluc3RlYWQuCiAJICAgICMgJHhkaXIgd2FzIHByZXBlbmRlZCB0byAkcGljX29iamVjdCBhYm92ZS4KLQkgICAgbm9uX3BpY19vYmplY3Q9IiRwaWNfb2JqZWN0IgorCSAgICBub25fcGljX29iamVjdD0kcGljX29iamVjdAogCSAgICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCiAJICBmaQogCWVsc2UKQEAgLTU5NDMsNyArNzM4Nyw3IEBACiAJICBpZiAkb3B0X2RyeV9ydW47IHRoZW4KIAkgICAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KIAkgICAgZnVuY19kaXJuYW1lICIkYXJnIiAiLyIgIiIKLQkgICAgeGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisJICAgIHhkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKIAogCSAgICBmdW5jX2xvMm8gIiRhcmciCiAJICAgIHBpY19vYmplY3Q9JHhkaXIkb2JqZGlyLyRmdW5jX2xvMm9fcmVzdWx0CkBAIC01OTUxLDcgKzczOTUsNyBAQAogCSAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHBpY19vYmplY3QiCiAJICAgIGZ1bmNfYXBwZW5kIG5vbl9waWNfb2JqZWN0cyAiICRub25fcGljX29iamVjdCIKIAkgIGVsc2UKLQkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkYXJnJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIG9iamVjdCIKKwkgICAgZnVuY19mYXRhbF9lcnJvciAiJyRhcmcnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgb2JqZWN0IgogCSAgZmkKIAlmaQogCTs7CkBAIC01OTY3LDExICs3NDExLDExIEBACiAJIyBBIGxpYnRvb2wtY29udHJvbGxlZCBsaWJyYXJ5LgogCiAJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRhcmciCi0JaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorCWlmIHRlc3QgZGxmaWxlcyA9ICIkcHJldiI7IHRoZW4KIAkgICMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxvcGVuLgogCSAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICBwcmV2PQotCWVsaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgorCWVsaWYgdGVzdCBkbHByZWZpbGVzID0gIiRwcmV2IjsgdGhlbgogCSAgIyBUaGUgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KIAkgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgcHJldj0KQEAgLTU5ODYsNyArNzQzMCw3IEBACiAJIyBVbmtub3duIGFyZ3VtZW50cyBpbiBib3RoIGZpbmFsaXplX2NvbW1hbmQgYW5kIGNvbXBpbGVfY29tbWFuZCBuZWVkCiAJIyB0byBiZSBhZXN0aGV0aWNhbGx5IHF1b3RlZCBiZWNhdXNlIHRoZXkgYXJlIGV2YWxlZCBsYXRlci4KIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCWFyZz0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKIAk7OwogICAgICAgZXNhYyAjIGFyZwogCkBAIC01OTk4LDkgKzc0NDIsOSBAQAogICAgIGRvbmUgIyBhcmd1bWVudCBwYXJzaW5nIGxvb3AKIAogICAgIHRlc3QgLW4gIiRwcmV2IiAmJiBcCi0gICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSBcYCRwcmV2YXJnJyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiCisgICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSAnJHByZXZhcmcnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKIAotICAgIGlmIHRlc3QgIiRleHBvcnRfZHluYW1pYyIgPSB5ZXMgJiYgdGVzdCAtbiAiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYyI7IHRoZW4KKyAgICBpZiB0ZXN0IHllcyA9ICIkZXhwb3J0X2R5bmFtaWMiICYmIHRlc3QgLW4gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiOyB0aGVuCiAgICAgICBldmFsIGFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIgogICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKICAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgpAQCAtNjAwOSwyMCArNzQ1MywyMyBAQAogICAgIG9sZGxpYnM9CiAgICAgIyBjYWxjdWxhdGUgdGhlIG5hbWUgb2YgdGhlIGZpbGUsIHdpdGhvdXQgaXRzIGRpcmVjdG9yeQogICAgIGZ1bmNfYmFzZW5hbWUgIiRvdXRwdXQiCi0gICAgb3V0cHV0bmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotICAgIGxpYm9ianNfc2F2ZT0iJGxpYm9ianMiCisgICAgb3V0cHV0bmFtZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKyAgICBsaWJvYmpzX3NhdmU9JGxpYm9ianMKIAogICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgogICAgICAgIyBnZXQgdGhlIGRpcmVjdG9yaWVzIGxpc3RlZCBpbiAkc2hsaWJwYXRoX3ZhcgotICAgICAgZXZhbCBzaGxpYl9zZWFyY2hfcGF0aD1cYFwkRUNITyBcIlwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkU0VEIFwncy86LyAvZ1wnXGAKKyAgICAgIGV2YWwgc2hsaWJfc2VhcmNoX3BhdGg9XGBcJEVDSE8gXCJcJCRzaGxpYnBhdGhfdmFyXCIgXHwgXCRTRUQgXCdzLzovIC9nXCdcYAogICAgIGVsc2UKICAgICAgIHNobGliX3NlYXJjaF9wYXRoPQogICAgIGZpCiAgICAgZXZhbCBzeXNfbGliX3NlYXJjaF9wYXRoPVwiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlY1wiCiAgICAgZXZhbCBzeXNfbGliX2Rsc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNcIgogCisgICAgIyBEZWZpbml0aW9uIGlzIGluamVjdGVkIGJ5IExUX0NPTkZJRyBkdXJpbmcgbGlidG9vbCBnZW5lcmF0aW9uLgorICAgIGZ1bmNfbXVuZ2VfcGF0aF9saXN0IHN5c19saWJfZGxzZWFyY2hfcGF0aCAiJExUX1NZU19MSUJSQVJZX1BBVEgiCisKICAgICBmdW5jX2Rpcm5hbWUgIiRvdXRwdXQiICIvIiAiIgotICAgIG91dHB1dF9vYmpkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JG9iamRpciIKKyAgICBvdXRwdXRfb2JqZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0JG9iamRpcgogICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8iCiAgICAgdG9vbF9vdXRwdXRfb2JqZGlyPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKICAgICAjIENyZWF0ZSB0aGUgb2JqZWN0IGRpcmVjdG9yeS4KQEAgLTYwNDUsNyArNzQ5Miw3IEBACiAgICAgIyBGaW5kIGFsbCBpbnRlcmRlcGVuZGVudCBkZXBsaWJzIGJ5IHNlYXJjaGluZyBmb3IgbGlicmFyaWVzCiAgICAgIyB0aGF0IGFyZSBsaW5rZWQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gLWxhIC1sYiAtbGEpCiAgICAgZm9yIGRlcGxpYiBpbiAkZGVwbGliczsgZG8KLSAgICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisgICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzOyB0aGVuCiAJY2FzZSAiJGxpYnMgIiBpbgogCSoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKIAllc2FjCkBAIC02MDUzLDcgKzc1MDAsNyBAQAogICAgICAgZnVuY19hcHBlbmQgbGlicyAiICRkZXBsaWIiCiAgICAgZG9uZQogCi0gICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgorICAgIGlmIHRlc3QgbGliID0gIiRsaW5rbW9kZSI7IHRoZW4KICAgICAgIGxpYnM9IiRwcmVkZXBzICRsaWJzICRjb21waWxlcl9saWJfc2VhcmNoX3BhdGggJHBvc3RkZXBzIgogCiAgICAgICAjIENvbXB1dGUgbGlicmFyaWVzIHRoYXQgYXJlIGxpc3RlZCBtb3JlIHRoYW4gb25jZSBpbiAkcHJlZGVwcwpAQCAtNjA4NSw3ICs3NTMyLDcgQEAKIAkgIGNhc2UgJGZpbGUgaW4KIAkgICoubGEpIDs7CiAJICAqKQotCSAgICBmdW5jX2ZhdGFsX2hlbHAgImxpYnJhcmllcyBjYW4gXGAtZGxvcGVuJyBvbmx5IGxpYnRvb2wgbGlicmFyaWVzOiAkZmlsZSIKKwkgICAgZnVuY19mYXRhbF9oZWxwICJsaWJyYXJpZXMgY2FuICctZGxvcGVuJyBvbmx5IGxpYnRvb2wgbGlicmFyaWVzOiAkZmlsZSIKIAkgICAgOzsKIAkgIGVzYWMKIAlkb25lCkBAIC02MDkzLDcgKzc1NDAsNyBAQAogICAgIHByb2cpCiAJY29tcGlsZV9kZXBsaWJzPQogCWZpbmFsaXplX2RlcGxpYnM9Ci0JYWxsZGVwbGlicz1ubworCWFsbGRlcGxpYnM9ZmFsc2UKIAluZXdkbGZpbGVzPQogCW5ld2RscHJlZmlsZXM9CiAJcGFzc2VzPSJjb252IHNjYW4gZGxvcGVuIGRscHJlb3BlbiBsaW5rIgpAQCAtNjEwNSwzMiArNzU1MiwzMiBAQAogICAgIGZvciBwYXNzIGluICRwYXNzZXM7IGRvCiAgICAgICAjIFRoZSBwcmVvcGVuIHBhc3MgaW4gbGliIG1vZGUgcmV2ZXJzZXMgJGRlcGxpYnM7IHB1dCBpdCBiYWNrIGhlcmUKICAgICAgICMgc28gdGhhdCAtTCBjb21lcyBiZWZvcmUgbGlicyB0aGF0IG5lZWQgaXQgZm9yIGluc3RhbmNlLi4uCi0gICAgICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIjsgdGhlbgorICAgICAgaWYgdGVzdCBsaWIsbGluayA9ICIkbGlua21vZGUsJHBhc3MiOyB0aGVuCiAJIyMgRklYTUU6IEZpbmQgdGhlIHBsYWNlIHdoZXJlIHRoZSBsaXN0IGlzIHJlYnVpbHQgaW4gdGhlIHdyb25nCiAJIyMgICAgICAgIG9yZGVyLCBhbmQgZml4IGl0IHRoZXJlIHByb3Blcmx5CiAgICAgICAgIHRtcF9kZXBsaWJzPQogCWZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCiAJICB0bXBfZGVwbGlicz0iJGRlcGxpYiAkdG1wX2RlcGxpYnMiCiAJZG9uZQotCWRlcGxpYnM9IiR0bXBfZGVwbGlicyIKKwlkZXBsaWJzPSR0bXBfZGVwbGlicwogICAgICAgZmkKIAotICAgICAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJsaWIsbGluayIgfHwKLQkgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLHNjYW4iOyB0aGVuCi0JbGlicz0iJGRlcGxpYnMiCisgICAgICBpZiB0ZXN0IGxpYixsaW5rID0gIiRsaW5rbW9kZSwkcGFzcyIgfHwKKwkgdGVzdCBwcm9nLHNjYW4gPSAiJGxpbmttb2RlLCRwYXNzIjsgdGhlbgorCWxpYnM9JGRlcGxpYnMKIAlkZXBsaWJzPQogICAgICAgZmkKLSAgICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCisgICAgICBpZiB0ZXN0IHByb2cgPSAiJGxpbmttb2RlIjsgdGhlbgogCWNhc2UgJHBhc3MgaW4KLQlkbG9wZW4pIGxpYnM9IiRkbGZpbGVzIiA7OwotCWRscHJlb3BlbikgbGlicz0iJGRscHJlZmlsZXMiIDs7CisJZGxvcGVuKSBsaWJzPSRkbGZpbGVzIDs7CisJZGxwcmVvcGVuKSBsaWJzPSRkbHByZWZpbGVzIDs7CiAJbGluaykKIAkgIGxpYnM9IiRkZXBsaWJzICVERVBMSUJTJSIKIAkgIHRlc3QgIlgkbGlua19hbGxfZGVwbGlicyIgIT0gWG5vICYmIGxpYnM9IiRsaWJzICRkZXBlbmRlbmN5X2xpYnMiCiAJICA7OwogCWVzYWMKICAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixkbHByZW9wZW4iOyB0aGVuCisgICAgICBpZiB0ZXN0IGxpYixkbHByZW9wZW4gPSAiJGxpbmttb2RlLCRwYXNzIjsgdGhlbgogCSMgQ29sbGVjdCBhbmQgZm9yd2FyZCBkZXBsaWJzIG9mIHByZW9wZW5lZCBsaWJ0b29sIGxpYnMKIAlmb3IgbGliIGluICRkbHByZWZpbGVzOyBkbwogCSAgIyBJZ25vcmUgbm9uLWxpYnRvb2wtbGlicwpAQCAtNjE1MSwyNiArNzU5OCwyNiBAQAogCSAgICBlc2FjCiAJICBkb25lCiAJZG9uZQotCWxpYnM9IiRkbHByZWZpbGVzIgorCWxpYnM9JGRscHJlZmlsZXMKICAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbG9wZW47IHRoZW4KKyAgICAgIGlmIHRlc3QgZGxvcGVuID0gIiRwYXNzIjsgdGhlbgogCSMgQ29sbGVjdCBkbHByZW9wZW5lZCBsaWJyYXJpZXMKLQlzYXZlX2RlcGxpYnM9IiRkZXBsaWJzIgorCXNhdmVfZGVwbGlicz0kZGVwbGlicwogCWRlcGxpYnM9CiAgICAgICBmaQogCiAgICAgICBmb3IgZGVwbGliIGluICRsaWJzOyBkbwogCWxpYj0KLQlmb3VuZD1ubworCWZvdW5kPWZhbHNlCiAJY2FzZSAkZGVwbGliIGluCiAJLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZSBcCiAgICAgICAgIHwtdGhyZWFkc3wtZm9wZW5tcHwtb3Blbm1wfC1tcHwteG9wZW5tcHwtb21wfC1xc21wPSopCi0JICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csbGluayI7IHRoZW4KKwkgIGlmIHRlc3QgcHJvZyxsaW5rID0gIiRsaW5rbW9kZSwkcGFzcyI7IHRoZW4KIAkgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCiAJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCiAJICBlbHNlCiAJICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGRlcGxpYiIKLQkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KKwkgICAgaWYgdGVzdCBsaWIgPSAiJGxpbmttb2RlIjsgdGhlbgogCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKIAkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CkBAIC02MTgwLDEzICs3NjI3LDEzIEBACiAJICBjb250aW51ZQogCSAgOzsKIAktbCopCi0JICBpZiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYiAmJiB0ZXN0ICIkbGlua21vZGUiICE9IHByb2c7IHRoZW4KLQkgICAgZnVuY193YXJuaW5nICJcYC1sJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIgorCSAgaWYgdGVzdCBsaWIgIT0gIiRsaW5rbW9kZSIgJiYgdGVzdCBwcm9nICE9ICIkbGlua21vZGUiOyB0aGVuCisJICAgIGZ1bmNfd2FybmluZyAiJy1sJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIgogCSAgICBjb250aW51ZQogCSAgZmkKIAkgIGZ1bmNfc3RyaXBuYW1lICctbCcgJycgIiRkZXBsaWIiCiAJICBuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KKwkgIGlmIHRlc3QgbGliID0gIiRsaW5rbW9kZSI7IHRoZW4KIAkgICAgc2VhcmNoZGlycz0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkbGliX3NlYXJjaF9wYXRoICRjb21waWxlcl9saWJfc2VhcmNoX2RpcnMgJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoIgogCSAgZWxzZQogCSAgICBzZWFyY2hkaXJzPSIkbmV3bGliX3NlYXJjaF9wYXRoICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoIgpAQCAtNjE5NCwzMSArNzY0MSwyMiBAQAogCSAgZm9yIHNlYXJjaGRpciBpbiAkc2VhcmNoZGlyczsgZG8KIAkgICAgZm9yIHNlYXJjaF9leHQgaW4gLmxhICRzdGRfc2hyZXh0IC5zbyAuYTsgZG8KIAkgICAgICAjIFNlYXJjaCB0aGUgbGlidG9vbCBsaWJyYXJ5Ci0JICAgICAgbGliPSIkc2VhcmNoZGlyL2xpYiR7bmFtZX0ke3NlYXJjaF9leHR9IgorCSAgICAgIGxpYj0kc2VhcmNoZGlyL2xpYiRuYW1lJHNlYXJjaF9leHQKIAkgICAgICBpZiB0ZXN0IC1mICIkbGliIjsgdGhlbgotCQlpZiB0ZXN0ICIkc2VhcmNoX2V4dCIgPSAiLmxhIjsgdGhlbgotCQkgIGZvdW5kPXllcworCQlpZiB0ZXN0IC5sYSA9ICIkc2VhcmNoX2V4dCI7IHRoZW4KKwkJICBmb3VuZD06CiAJCWVsc2UKLQkJICBmb3VuZD1ubworCQkgIGZvdW5kPWZhbHNlCiAJCWZpCiAJCWJyZWFrIDIKIAkgICAgICBmaQogCSAgICBkb25lCiAJICBkb25lCi0JICBpZiB0ZXN0ICIkZm91bmQiICE9IHllczsgdGhlbgotCSAgICAjIGRlcGxpYiBkb2Vzbid0IHNlZW0gdG8gYmUgYSBsaWJ0b29sIGxpYnJhcnkKLQkgICAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLGxpbmsiOyB0aGVuCi0JICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCi0JICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKLQkgICAgZWxzZQotCSAgICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0JICAgICAgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLQkgICAgZmkKLQkgICAgY29udGludWUKLQkgIGVsc2UgIyBkZXBsaWIgaXMgYSBsaWJ0b29sIGxpYnJhcnkKKwkgIGlmICRmb3VuZDsgdGhlbgorCSAgICAjIGRlcGxpYiBpcyBhIGxpYnRvb2wgbGlicmFyeQogCSAgICAjIElmICRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMgJiYgJGRlcGxpYiBpcyBhIHN0ZGxpYiwKIAkgICAgIyBXZSBuZWVkIHRvIGRvIHNvbWUgc3BlY2lhbCB0aGluZ3MgaGVyZSwgYW5kIG5vdCBsYXRlci4KLQkgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorCSAgICBpZiB0ZXN0IHllcyA9ICIkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIjsgdGhlbgogCSAgICAgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgogCSAgICAgICoiICRkZXBsaWIgIiopCiAJCWlmIGZ1bmNfbGFsaWJfcCAiJGxpYiI7IHRoZW4KQEAgLTYyMjYsMTkgKzc2NjQsMTkgQEAKIAkJICBvbGRfbGlicmFyeT0KIAkJICBmdW5jX3NvdXJjZSAiJGxpYiIKIAkJICBmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCi0JCSAgICBsbD0iJGwiCisJCSAgICBsbD0kbAogCQkgIGRvbmUKLQkJICBpZiB0ZXN0ICJYJGxsIiA9ICJYJG9sZF9saWJyYXJ5IiA7IHRoZW4gIyBvbmx5IHN0YXRpYyB2ZXJzaW9uIGF2YWlsYWJsZQotCQkgICAgZm91bmQ9bm8KKwkJICBpZiB0ZXN0ICJYJGxsIiA9ICJYJG9sZF9saWJyYXJ5IjsgdGhlbiAjIG9ubHkgc3RhdGljIHZlcnNpb24gYXZhaWxhYmxlCisJCSAgICBmb3VuZD1mYWxzZQogCQkgICAgZnVuY19kaXJuYW1lICIkbGliIiAiIiAiLiIKLQkJICAgIGxhZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwkJICAgIGxhZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CiAJCSAgICBsaWI9JGxhZGlyLyRvbGRfbGlicmFyeQotCQkgICAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLGxpbmsiOyB0aGVuCisJCSAgICBpZiB0ZXN0IHByb2csbGluayA9ICIkbGlua21vZGUsJHBhc3MiOyB0aGVuCiAJCSAgICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgogCQkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCQkgICAgZWxzZQogCQkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotCQkgICAgICB0ZXN0ICIkbGlua21vZGUiID0gbGliICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgorCQkgICAgICB0ZXN0IGxpYiA9ICIkbGlua21vZGUiICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgogCQkgICAgZmkKIAkJICAgIGNvbnRpbnVlCiAJCSAgZmkKQEAgLTYyNDcsMTUgKzc2ODUsMjUgQEAKIAkgICAgICAqKSA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKKwkgIGVsc2UKKwkgICAgIyBkZXBsaWIgZG9lc24ndCBzZWVtIHRvIGJlIGEgbGlidG9vbCBsaWJyYXJ5CisJICAgIGlmIHRlc3QgcHJvZyxsaW5rID0gIiRsaW5rbW9kZSwkcGFzcyI7IHRoZW4KKwkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKKwkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgorCSAgICBlbHNlCisJICAgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKKwkgICAgICB0ZXN0IGxpYiA9ICIkbGlua21vZGUiICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgorCSAgICBmaQorCSAgICBjb250aW51ZQogCSAgZmkKIAkgIDs7ICMgLWwKIAkqLmx0ZnJhbWV3b3JrKQotCSAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLGxpbmsiOyB0aGVuCisJICBpZiB0ZXN0IHByb2csbGluayA9ICIkbGlua21vZGUsJHBhc3MiOyB0aGVuCiAJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgogCSAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgZWxzZQogCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgorCSAgICBpZiB0ZXN0IGxpYiA9ICIkbGlua21vZGUiOyB0aGVuCiAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCiAJCSAgICAqIiAkZGVwbGliICIqKSA7OwogCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKQEAgLTYyNjgsMTggKzc3MTYsMTggQEAKIAkgIGNhc2UgJGxpbmttb2RlIGluCiAJICBsaWIpCiAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0JICAgIHRlc3QgIiRwYXNzIiA9IGNvbnYgJiYgY29udGludWUKKwkgICAgdGVzdCBjb252ID0gIiRwYXNzIiAmJiBjb250aW51ZQogCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKIAkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCiAJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICAgIDs7CiAJICBwcm9nKQotCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCisJICAgIGlmIHRlc3QgY29udiA9ICIkcGFzcyI7IHRoZW4KIAkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgogCSAgICAgIGNvbnRpbnVlCiAJICAgIGZpCi0JICAgIGlmIHRlc3QgIiRwYXNzIiA9IHNjYW47IHRoZW4KKwkgICAgaWYgdGVzdCBzY2FuID0gIiRwYXNzIjsgdGhlbgogCSAgICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCiAJICAgIGVsc2UKIAkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKQEAgLTYyOTAsMTMgKzc3MzgsMTMgQEAKIAkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgICAgOzsKIAkgICopCi0JICAgIGZ1bmNfd2FybmluZyAiXGAtTCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKKwkgICAgZnVuY193YXJuaW5nICInLUwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiCiAJICAgIDs7CiAJICBlc2FjICMgbGlua21vZGUKIAkgIGNvbnRpbnVlCiAJICA7OyAjIC1MCiAJLVIqKQotCSAgaWYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgorCSAgaWYgdGVzdCBsaW5rID0gIiRwYXNzIjsgdGhlbgogCSAgICBmdW5jX3N0cmlwbmFtZSAnLVInICcnICIkZGVwbGliIgogCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKIAkgICAgZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKQEAgLTYzMTQsNyArNzc2Miw3IEBACiAJICBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAogCSAgOzsKIAkqLiRsaWJleHQpCi0JICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCisJICBpZiB0ZXN0IGNvbnYgPSAiJHBhc3MiOyB0aGVuCiAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCiAJICAgIGNvbnRpbnVlCiAJICBmaQpAQCAtNjMyNSwyMSArNzc3MywyNiBAQAogCSAgICBjYXNlICIgJGRscHJlY29udmVuaWVuY2VsaWJzICIgaW4KIAkgICAgKiIgJGRlcGxpYiAiKikgOzsKIAkgICAgKikKLQkgICAgICB2YWxpZF9hX2xpYj1ubworCSAgICAgIHZhbGlkX2FfbGliPWZhbHNlCiAJICAgICAgY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KIAkJbWF0Y2hfcGF0dGVybiopCiAJCSAgc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZDsgc2hpZnQKIAkJICBtYXRjaF9wYXR0ZXJuX3JlZ2V4PWBleHByICIkZGVwbGlic19jaGVja19tZXRob2QiIDogIiQxIFwoLipcKSJgCiAJCSAgaWYgZXZhbCAiXCRFQ0hPIFwiJGRlcGxpYlwiIiAyPi9kZXYvbnVsbCB8ICRTRUQgMTBxIFwKIAkJICAgIHwgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KLQkJICAgIHZhbGlkX2FfbGliPXllcworCQkgICAgdmFsaWRfYV9saWI9OgogCQkgIGZpCiAJCTs7CiAJCXBhc3NfYWxsKQotCQkgIHZhbGlkX2FfbGliPXllcworCQkgIHZhbGlkX2FfbGliPToKIAkJOzsKIAkgICAgICBlc2FjCi0JICAgICAgaWYgdGVzdCAiJHZhbGlkX2FfbGliIiAhPSB5ZXM7IHRoZW4KKwkgICAgICBpZiAkdmFsaWRfYV9saWI7IHRoZW4KKwkJZWNobworCQkkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUiCisJCSRFQ0hPICIqKiogc3RhdGljIGxpYnJhcnkgJGRlcGxpYiBpcyBub3QgcG9ydGFibGUhIgorCQlkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorCSAgICAgIGVsc2UKIAkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IFRyeWluZyB0byBsaW5rIHdpdGggc3RhdGljIGxpYiBhcmNoaXZlICRkZXBsaWIuIgogCQllY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgpAQCAtNjM0NywxOCArNzgwMCwxMyBAQAogCQllY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCiAJCWVjaG8gIioqKiBiZWNhdXNlIHRoZSBmaWxlIGV4dGVuc2lvbnMgLiRsaWJleHQgb2YgdGhpcyBhcmd1bWVudCBtYWtlcyBtZSBiZWxpZXZlIgogCQllY2hvICIqKiogdGhhdCBpdCBpcyBqdXN0IGEgc3RhdGljIGFyY2hpdmUgdGhhdCBJIHNob3VsZCBub3QgdXNlIGhlcmUuIgotCSAgICAgIGVsc2UKLQkJZWNobwotCQkkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUiCi0JCSRFQ0hPICIqKiogc3RhdGljIGxpYnJhcnkgJGRlcGxpYiBpcyBub3QgcG9ydGFibGUhIgotCQlkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgogCSAgICAgIGZpCiAJICAgICAgOzsKIAkgICAgZXNhYwogCSAgICBjb250aW51ZQogCSAgICA7OwogCSAgcHJvZykKLQkgICAgaWYgdGVzdCAiJHBhc3MiICE9IGxpbms7IHRoZW4KKwkgICAgaWYgdGVzdCBsaW5rICE9ICIkcGFzcyI7IHRoZW4KIAkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgogCSAgICBlbHNlCiAJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCkBAIC02MzY5LDEwICs3ODE3LDEwIEBACiAJICBlc2FjICMgbGlua21vZGUKIAkgIDs7ICMgKi4kbGliZXh0CiAJKi5sbyB8ICouJG9iamV4dCkKLQkgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KKwkgIGlmIHRlc3QgY29udiA9ICIkcGFzcyI7IHRoZW4KIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLQkgIGVsaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KLQkgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuIHx8IHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gbm87IHRoZW4KKwkgIGVsaWYgdGVzdCBwcm9nID0gIiRsaW5rbW9kZSI7IHRoZW4KKwkgICAgaWYgdGVzdCBkbHByZW9wZW4gPSAiJHBhc3MiIHx8IHRlc3QgeWVzICE9ICIkZGxvcGVuX3N1cHBvcnQiIHx8IHRlc3Qgbm8gPSAiJGJ1aWxkX2xpYnRvb2xfbGlicyI7IHRoZW4KIAkgICAgICAjIElmIHRoZXJlIGlzIG5vIGRsb3BlbiBzdXBwb3J0IG9yIHdlJ3JlIGxpbmtpbmcgc3RhdGljYWxseSwKIAkgICAgICAjIHdlIG5lZWQgdG8gcHJlbG9hZC4KIAkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRlcGxpYiIKQEAgLTYzODUsMjIgKzc4MzMsMjAgQEAKIAkgIGNvbnRpbnVlCiAJICA7OwogCSVERVBMSUJTJSkKLQkgIGFsbGRlcGxpYnM9eWVzCisJICBhbGxkZXBsaWJzPToKIAkgIGNvbnRpbnVlCiAJICA7OwogCWVzYWMgIyBjYXNlICRkZXBsaWIKIAotCWlmIHRlc3QgIiRmb3VuZCIgPSB5ZXMgfHwgdGVzdCAtZiAiJGxpYiI7IHRoZW4gOgotCWVsc2UKLQkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIHRoZSBsaWJyYXJ5IFxgJGxpYicgb3IgdW5oYW5kbGVkIGFyZ3VtZW50IFxgJGRlcGxpYiciCi0JZmkKKwkkZm91bmQgfHwgdGVzdCAtZiAiJGxpYiIgXAorCSAgfHwgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgdGhlIGxpYnJhcnkgJyRsaWInIG9yIHVuaGFuZGxlZCBhcmd1bWVudCAnJGRlcGxpYiciCiAKIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgogCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRsaWIiIFwKLQkgIHx8IGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorCSAgfHwgZnVuY19mYXRhbF9lcnJvciAiJyRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKIAogCWZ1bmNfZGlybmFtZSAiJGxpYiIgIiIgIi4iCi0JbGFkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorCWxhZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CiAKIAlkbG5hbWU9CiAJZGxvcGVuPQpAQCAtNjQzMCwxOSArNzg3NiwxOSBAQAogCSAgZG9uZQogCWZpCiAJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiICRkZXBlbmRlbmN5X2xpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKLQlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAotCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAotCSAgIHsgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB9OyB0aGVuCisJaWYgdGVzdCBsaWIsbGluayA9ICIkbGlua21vZGUsJHBhc3MiIHx8CisJICAgdGVzdCBwcm9nLHNjYW4gPSAiJGxpbmttb2RlLCRwYXNzIiB8fAorCSAgIHsgdGVzdCBwcm9nICE9ICIkbGlua21vZGUiICYmIHRlc3QgbGliICE9ICIkbGlua21vZGUiOyB9OyB0aGVuCiAJICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGRsb3BlbiIKIAkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZGxwcmVvcGVuIgogCWZpCiAKLQlpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCisJaWYgdGVzdCBjb252ID0gIiRwYXNzIjsgdGhlbgogCSAgIyBPbmx5IGNoZWNrIGZvciBjb252ZW5pZW5jZSBsaWJyYXJpZXMKIAkgIGRlcGxpYnM9IiRsaWIgJGRlcGxpYnMiCiAJICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgogCSAgICBpZiB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0JICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCisJICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yICckbGliJyIKIAkgICAgZmkKIAkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgogCSAgICBmdW5jX2FwcGVuZCBjb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKQEAgLTY0NTAsMTUgKzc4OTYsMTUgQEAKIAkgICAgdG1wX2xpYnM9CiAJICAgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotCSAgICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisJICAgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwczsgdGhlbgogCQljYXNlICIkdG1wX2xpYnMgIiBpbgogCQkqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJCWVzYWMKIAkgICAgICBmaQogCSAgICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKIAkgICAgZG9uZQotCSAgZWxpZiB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IHRoZW4KLQkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSBjb252ZW5pZW5jZSBsaWJyYXJ5IgorCSAgZWxpZiB0ZXN0IHByb2cgIT0gIiRsaW5rbW9kZSIgJiYgdGVzdCBsaWIgIT0gIiRsaW5rbW9kZSI7IHRoZW4KKwkgICAgZnVuY19mYXRhbF9lcnJvciAiJyRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiCiAJICBmaQogCSAgY29udGludWUKIAlmaSAjICRwYXNzID0gY29udgpAQCAtNjQ2NywyNiArNzkxMywyNiBAQAogCSMgR2V0IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IHdlIGxpbmsgYWdhaW5zdC4KIAlsaW5rbGliPQogCWlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYKLQkgICB7IHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMiID0geWVzIHx8Ci0JICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LG5vIjsgfTsgdGhlbgorCSAgIHsgdGVzdCB5ZXMgPSAiJHByZWZlcl9zdGF0aWNfbGlicyIgfHwKKwkgICAgIHRlc3QgYnVpbHQsbm8gPSAiJHByZWZlcl9zdGF0aWNfbGlicywkaW5zdGFsbGVkIjsgfTsgdGhlbgogCSAgbGlua2xpYj0kb2xkX2xpYnJhcnkKIAllbHNlCiAJICBmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCi0JICAgIGxpbmtsaWI9IiRsIgorCSAgICBsaW5rbGliPSRsCiAJICBkb25lCiAJZmkKIAlpZiB0ZXN0IC16ICIkbGlua2xpYiI7IHRoZW4KLQkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgorCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yICckbGliJyIKIAlmaQogCiAJIyBUaGlzIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbG9wZW4uCi0JaWYgdGVzdCAiJHBhc3MiID0gZGxvcGVuOyB0aGVuCi0JICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgotCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgLWRsb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciCi0JICBmaQorCWlmIHRlc3QgZGxvcGVuID0gIiRwYXNzIjsgdGhlbgorCSAgdGVzdCAteiAiJGxpYmRpciIgXAorCSAgICAmJiBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgLWRsb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6ICckbGliJyIKIAkgIGlmIHRlc3QgLXogIiRkbG5hbWUiIHx8Ci0JICAgICB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiICE9IHllcyB8fAotCSAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgorCSAgICAgdGVzdCB5ZXMgIT0gIiRkbG9wZW5fc3VwcG9ydCIgfHwKKwkgICAgIHRlc3Qgbm8gPSAiJGJ1aWxkX2xpYnRvb2xfbGlicyIKKwkgIHRoZW4KIAkgICAgIyBJZiB0aGVyZSBpcyBubyBkbG5hbWUsIG5vIGRsb3BlbiBzdXBwb3J0IG9yIHdlJ3JlIGxpbmtpbmcKIAkgICAgIyBzdGF0aWNhbGx5LCB3ZSBuZWVkIHRvIHByZWxvYWQuICBXZSBhbHNvIG5lZWQgdG8gcHJlbG9hZCBhbnkKIAkgICAgIyBkZXBlbmRlbnQgbGlicmFyaWVzIHNvIGxpYmx0ZGwncyBkZXBsaWIgcHJlbG9hZGVyIGRvZXNuJ3QKQEAgLTY1MDAsNDAgKzc5NDYsNDAgQEAKIAogCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCWNhc2UgJGxhZGlyIGluCi0JW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNfbGFkaXI9IiRsYWRpciIgOzsKKwlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFic19sYWRpcj0kbGFkaXIgOzsKIAkqKQogCSAgYWJzX2xhZGlyPWBjZCAiJGxhZGlyIiAmJiBwd2RgCiAJICBpZiB0ZXN0IC16ICIkYWJzX2xhZGlyIjsgdGhlbgotCSAgICBmdW5jX3dhcm5pbmcgImNhbm5vdCBkZXRlcm1pbmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgb2YgXGAkbGFkaXInIgorCSAgICBmdW5jX3dhcm5pbmcgImNhbm5vdCBkZXRlcm1pbmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgb2YgJyRsYWRpciciCiAJICAgIGZ1bmNfd2FybmluZyAicGFzc2luZyBpdCBsaXRlcmFsbHkgdG8gdGhlIGxpbmtlciwgYWx0aG91Z2ggaXQgbWlnaHQgZmFpbCIKLQkgICAgYWJzX2xhZGlyPSIkbGFkaXIiCisJICAgIGFic19sYWRpcj0kbGFkaXIKIAkgIGZpCiAJICA7OwogCWVzYWMKIAlmdW5jX2Jhc2VuYW1lICIkbGliIgotCWxhbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCWxhbmFtZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKIAogCSMgRmluZCB0aGUgcmVsZXZhbnQgb2JqZWN0IGRpcmVjdG9yeSBhbmQgbGlicmFyeSBuYW1lLgotCWlmIHRlc3QgIlgkaW5zdGFsbGVkIiA9IFh5ZXM7IHRoZW4KKwlpZiB0ZXN0IHllcyA9ICIkaW5zdGFsbGVkIjsgdGhlbgogCSAgaWYgdGVzdCAhIC1mICIkbHRfc3lzcm9vdCRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCi0JICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCi0JICAgIGRpcj0iJGxhZGlyIgotCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCi0JICAgIGxpYmRpcj0iJGFic19sYWRpciIKKwkgICAgZnVuY193YXJuaW5nICJsaWJyYXJ5ICckbGliJyB3YXMgbW92ZWQuIgorCSAgICBkaXI9JGxhZGlyCisJICAgIGFic2Rpcj0kYWJzX2xhZGlyCisJICAgIGxpYmRpcj0kYWJzX2xhZGlyCiAJICBlbHNlCi0JICAgIGRpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgotCSAgICBhYnNkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKKwkgICAgZGlyPSRsdF9zeXNyb290JGxpYmRpcgorCSAgICBhYnNkaXI9JGx0X3N5c3Jvb3QkbGliZGlyCiAJICBmaQotCSAgdGVzdCAiWCRoYXJkY29kZV9hdXRvbWF0aWMiID0gWHllcyAmJiBhdm9pZHRlbXBycGF0aD15ZXMKKwkgIHRlc3QgeWVzID0gIiRoYXJkY29kZV9hdXRvbWF0aWMiICYmIGF2b2lkdGVtcHJwYXRoPXllcwogCWVsc2UKIAkgIGlmIHRlc3QgISAtZiAiJGxhZGlyLyRvYmpkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCi0JICAgIGRpcj0iJGxhZGlyIgotCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCisJICAgIGRpcj0kbGFkaXIKKwkgICAgYWJzZGlyPSRhYnNfbGFkaXIKIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgogCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgogCSAgZWxzZQotCSAgICBkaXI9IiRsYWRpci8kb2JqZGlyIgotCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIvJG9iamRpciIKKwkgICAgZGlyPSRsYWRpci8kb2JqZGlyCisJICAgIGFic2Rpcj0kYWJzX2xhZGlyLyRvYmpkaXIKIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgogCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgogCSAgZmkKQEAgLTY1NDIsMTEgKzc5ODgsMTEgQEAKIAluYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAogCSMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxwcmVvcGVuLgotCWlmIHRlc3QgIiRwYXNzIiA9IGRscHJlb3BlbjsgdGhlbgotCSAgaWYgdGVzdCAteiAiJGxpYmRpciIgJiYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KLQkgICAgZnVuY19mYXRhbF9lcnJvciAib25seSBsaWJyYXJpZXMgbWF5IC1kbHByZW9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgorCWlmIHRlc3QgZGxwcmVvcGVuID0gIiRwYXNzIjsgdGhlbgorCSAgaWYgdGVzdCAteiAiJGxpYmRpciIgJiYgdGVzdCBwcm9nID0gIiRsaW5rbW9kZSI7IHRoZW4KKwkgICAgZnVuY19mYXRhbF9lcnJvciAib25seSBsaWJyYXJpZXMgbWF5IC1kbHByZW9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiAnJGxpYiciCiAJICBmaQotCSAgY2FzZSAiJGhvc3QiIGluCisJICBjYXNlICRob3N0IGluCiAJICAgICMgc3BlY2lhbCBoYW5kbGluZyBmb3IgcGxhdGZvcm1zIHdpdGggUEUtRExMcy4KIAkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCiAJICAgICAgIyBMaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyeSBpZiBib3RoCkBAIC02NTkwLDkgKzgwMzYsOSBAQAogCiAJaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KIAkgICMgTGluayB0aGUgY29udmVuaWVuY2UgbGlicmFyeQotCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgorCSAgaWYgdGVzdCBsaWIgPSAiJGxpbmttb2RlIjsgdGhlbgogCSAgICBkZXBsaWJzPSIkZGlyLyRvbGRfbGlicmFyeSAkZGVwbGlicyIKLQkgIGVsaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLGxpbmsiOyB0aGVuCisJICBlbGlmIHRlc3QgcHJvZyxsaW5rID0gIiRsaW5rbW9kZSwkcGFzcyI7IHRoZW4KIAkgICAgY29tcGlsZV9kZXBsaWJzPSIkZGlyLyRvbGRfbGlicmFyeSAkY29tcGlsZV9kZXBsaWJzIgogCSAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGlyLyRvbGRfbGlicmFyeSAkZmluYWxpemVfZGVwbGlicyIKIAkgIGVsc2UKQEAgLTY2MDIsMTQgKzgwNDgsMTQgQEAKIAlmaQogCiAKLQlpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyAmJiB0ZXN0ICIkcGFzcyIgIT0gbGluazsgdGhlbgorCWlmIHRlc3QgcHJvZyA9ICIkbGlua21vZGUiICYmIHRlc3QgbGluayAhPSAiJHBhc3MiOyB0aGVuCiAJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkbGFkaXIiCiAJICBkZXBsaWJzPSIkbGliICRkZXBsaWJzIgogCi0JICBsaW5rYWxsZGVwbGlicz1ubwotCSAgaWYgdGVzdCAiJGxpbmtfYWxsX2RlcGxpYnMiICE9IG5vIHx8IHRlc3QgLXogIiRsaWJyYXJ5X25hbWVzIiB8fAotCSAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgotCSAgICBsaW5rYWxsZGVwbGlicz15ZXMKKwkgIGxpbmthbGxkZXBsaWJzPWZhbHNlCisJICBpZiB0ZXN0IG5vICE9ICIkbGlua19hbGxfZGVwbGlicyIgfHwgdGVzdCAteiAiJGxpYnJhcnlfbmFtZXMiIHx8CisJICAgICB0ZXN0IG5vID0gIiRidWlsZF9saWJ0b29sX2xpYnMiOyB0aGVuCisJICAgIGxpbmthbGxkZXBsaWJzPToKIAkgIGZpCiAKIAkgIHRtcF9saWJzPQpAQCAtNjYyMSwxNCArODA2NywxNCBAQAogCQkgOzsKIAkgICAgZXNhYwogCSAgICAjIE5lZWQgdG8gbGluayBhZ2FpbnN0IGFsbCBkZXBlbmRlbmN5X2xpYnM/Ci0JICAgIGlmIHRlc3QgIiRsaW5rYWxsZGVwbGlicyIgPSB5ZXM7IHRoZW4KKwkgICAgaWYgJGxpbmthbGxkZXBsaWJzOyB0aGVuCiAJICAgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKIAkgICAgZWxzZQogCSAgICAgICMgTmVlZCB0byBoYXJkY29kZSBzaGFyZWQgbGlicmFyeSBwYXRocwogCSAgICAgICMgb3IvYW5kIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzCiAJICAgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCiAJICAgIGZpCi0JICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHM7IHRoZW4KIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgogCSAgICAgICoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKIAkgICAgICBlc2FjCkBAIC02NjM4LDE1ICs4MDg0LDE1IEBACiAJICBjb250aW51ZQogCWZpICMgJGxpbmttb2RlID0gcHJvZy4uLgogCi0JaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLGxpbmsiOyB0aGVuCisJaWYgdGVzdCBwcm9nLGxpbmsgPSAiJGxpbmttb2RlLCRwYXNzIjsgdGhlbgogCSAgaWYgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiICYmCi0JICAgICB7IHsgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicyIgPSBubyB8fAotCSAgICAgICAgIHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMsJGluc3RhbGxlZCIgPSAiYnVpbHQseWVzIjsgfSB8fAorCSAgICAgeyB7IHRlc3Qgbm8gPSAiJHByZWZlcl9zdGF0aWNfbGlicyIgfHwKKwkgICAgICAgICB0ZXN0IGJ1aWx0LHllcyA9ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiOyB9IHx8CiAJICAgICAgIHRlc3QgLXogIiRvbGRfbGlicmFyeSI7IH07IHRoZW4KIAkgICAgIyBXZSBuZWVkIHRvIGhhcmRjb2RlIHRoZSBsaWJyYXJ5IHBhdGgKLQkgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLXogIiRhdm9pZHRlbXBycGF0aCIgOyB0aGVuCisJICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC16ICIkYXZvaWR0ZW1wcnBhdGgiOyB0aGVuCiAJICAgICAgIyBNYWtlIHN1cmUgdGhlIHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgotCSAgICAgIGNhc2UgIiR0ZW1wX3JwYXRoOiIgaW4KKwkgICAgICBjYXNlICR0ZW1wX3JwYXRoOiBpbgogCSAgICAgICoiJGFic2RpcjoiKikgOzsKIAkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX3JwYXRoICIkYWJzZGlyOiIgOzsKIAkgICAgICBlc2FjCkBAIC02Njc1LDkgKzgxMjEsOSBAQAogCSAgICBlc2FjCiAJICBmaSAjICRsaW5rbW9kZSwkcGFzcyA9IHByb2csbGluay4uLgogCi0JICBpZiB0ZXN0ICIkYWxsZGVwbGlicyIgPSB5ZXMgJiYKLQkgICAgIHsgdGVzdCAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA9IHBhc3NfYWxsIHx8Ci0JICAgICAgIHsgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYKKwkgIGlmICRhbGxkZXBsaWJzICYmCisJICAgICB7IHRlc3QgcGFzc19hbGwgPSAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8fAorCSAgICAgICB7IHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiICYmCiAJCSB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyI7IH07IH07IHRoZW4KIAkgICAgIyBXZSBvbmx5IG5lZWQgdG8gc2VhcmNoIGZvciBzdGF0aWMgbGlicmFyaWVzCiAJICAgIGNvbnRpbnVlCkBAIC02Njg2LDE5ICs4MTMyLDE5IEBACiAKIAlsaW5rX3N0YXRpYz1ubyAjIFdoZXRoZXIgdGhlIGRlcGxpYiB3aWxsIGJlIGxpbmtlZCBzdGF0aWNhbGx5CiAJdXNlX3N0YXRpY19saWJzPSRwcmVmZXJfc3RhdGljX2xpYnMKLQlpZiB0ZXN0ICIkdXNlX3N0YXRpY19saWJzIiA9IGJ1aWx0ICYmIHRlc3QgIiRpbnN0YWxsZWQiID0geWVzOyB0aGVuCisJaWYgdGVzdCBidWlsdCA9ICIkdXNlX3N0YXRpY19saWJzIiAmJiB0ZXN0IHllcyA9ICIkaW5zdGFsbGVkIjsgdGhlbgogCSAgdXNlX3N0YXRpY19saWJzPW5vCiAJZmkKIAlpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyIgJiYKLQkgICB7IHRlc3QgIiR1c2Vfc3RhdGljX2xpYnMiID0gbm8gfHwgdGVzdCAteiAiJG9sZF9saWJyYXJ5IjsgfTsgdGhlbgorCSAgIHsgdGVzdCBubyA9ICIkdXNlX3N0YXRpY19saWJzIiB8fCB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiOyB9OyB0aGVuCiAJICBjYXNlICRob3N0IGluCi0JICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqKQorCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiB8ICpvczIqKQogCSAgICAgICMgTm8gcG9pbnQgaW4gcmVsaW5raW5nIERMTHMgYmVjYXVzZSBwYXRocyBhcmUgbm90IGVuY29kZWQKIAkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgogCSAgICAgIG5lZWRfcmVsaW5rPW5vCiAJICAgIDs7CiAJICAqKQotCSAgICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vOyB0aGVuCisJICAgIGlmIHRlc3Qgbm8gPSAiJGluc3RhbGxlZCI7IHRoZW4KIAkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgogCSAgICAgIG5lZWRfcmVsaW5rPXllcwogCSAgICBmaQpAQCAtNjcwOCwyNCArODE1NCwyNCBAQAogCiAJICAjIFdhcm4gYWJvdXQgcG9ydGFiaWxpdHksIGNhbid0IGxpbmsgYWdhaW5zdCAtbW9kdWxlJ3Mgb24gc29tZQogCSAgIyBzeXN0ZW1zIChkYXJ3aW4pLiAgRG9uJ3QgYmxlYXQgYWJvdXQgZGxvcGVuZWQgbW9kdWxlcyB0aG91Z2ghCi0JICBkbG9wZW5tb2R1bGU9IiIKKwkgIGRsb3Blbm1vZHVsZT0KIAkgIGZvciBkbHByZW1vZHVsZXRlc3QgaW4gJGRscHJlZmlsZXM7IGRvCiAJICAgIGlmIHRlc3QgIlgkZGxwcmVtb2R1bGV0ZXN0IiA9ICJYJGxpYiI7IHRoZW4KLQkgICAgICBkbG9wZW5tb2R1bGU9IiRkbHByZW1vZHVsZXRlc3QiCisJICAgICAgZGxvcGVubW9kdWxlPSRkbHByZW1vZHVsZXRlc3QKIAkgICAgICBicmVhawogCSAgICBmaQogCSAgZG9uZQotCSAgaWYgdGVzdCAteiAiJGRsb3Blbm1vZHVsZSIgJiYgdGVzdCAiJHNob3VsZG5vdGxpbmsiID0geWVzICYmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KKwkgIGlmIHRlc3QgLXogIiRkbG9wZW5tb2R1bGUiICYmIHRlc3QgeWVzID0gIiRzaG91bGRub3RsaW5rIiAmJiB0ZXN0IGxpbmsgPSAiJHBhc3MiOyB0aGVuCiAJICAgIGVjaG8KLQkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KKwkgICAgaWYgdGVzdCBwcm9nID0gIiRsaW5rbW9kZSI7IHRoZW4KIAkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIGV4ZWN1dGFibGUgJG91dHB1dCBhZ2FpbnN0IHRoZSBsb2FkYWJsZSBtb2R1bGUiCiAJICAgIGVsc2UKIAkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbG9hZGFibGUgbW9kdWxlIgogCSAgICBmaQogCSAgICAkRUNITyAiKioqICRsaW5rbGliIGlzIG5vdCBwb3J0YWJsZSEiCiAJICBmaQotCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiAmJgotCSAgICAgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgPSB5ZXM7IHRoZW4KKwkgIGlmIHRlc3QgbGliID0gIiRsaW5rbW9kZSIgJiYKKwkgICAgIHRlc3QgeWVzID0gIiRoYXJkY29kZV9pbnRvX2xpYnMiOyB0aGVuCiAJICAgICMgSGFyZGNvZGUgdGhlIGxpYnJhcnkgcGF0aC4KIAkgICAgIyBTa2lwIGRpcmVjdG9yaWVzIHRoYXQgYXJlIGluIHRoZSBzeXN0ZW0gZGVmYXVsdCBydW4tdGltZQogCSAgICAjIHNlYXJjaCBwYXRoLgpAQCAtNjc1Myw0MyArODE5OSw0MyBAQAogCSAgICAjIGZpZ3VyZSBvdXQgdGhlIHNvbmFtZQogCSAgICBzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXMKIAkgICAgc2hpZnQKLQkgICAgcmVhbG5hbWU9IiQxIgorCSAgICByZWFsbmFtZT0kMQogCSAgICBzaGlmdAogCSAgICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKIAkgICAgIyB1c2UgZGxuYW1lIGlmIHdlIGdvdCBpdC4gaXQncyBwZXJmZWN0bHkgZ29vZCwgbm8/CiAJICAgIGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0JICAgICAgc29uYW1lPSIkZGxuYW1lIgorCSAgICAgIHNvbmFtZT0kZGxuYW1lCiAJICAgIGVsaWYgdGVzdCAtbiAiJHNvbmFtZV9zcGVjIjsgdGhlbgogCSAgICAgICMgYmxlaCB3aW5kb3dzCiAJICAgICAgY2FzZSAkaG9zdCBpbgotCSAgICAgICpjeWd3aW4qIHwgbWluZ3cqIHwgKmNlZ2NjKikKKwkgICAgICAqY3lnd2luKiB8IG1pbmd3KiB8ICpjZWdjYyogfCAqb3MyKikKIAkgICAgICAgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlCiAJCW1ham9yPSRmdW5jX2FyaXRoX3Jlc3VsdAotCQl2ZXJzdWZmaXg9Ii0kbWFqb3IiCisJCXZlcnN1ZmZpeD0tJG1ham9yCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICAgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKIAkgICAgZWxzZQotCSAgICAgIHNvbmFtZT0iJHJlYWxuYW1lIgorCSAgICAgIHNvbmFtZT0kcmVhbG5hbWUKIAkgICAgZmkKIAogCSAgICAjIE1ha2UgYSBuZXcgbmFtZSBmb3IgdGhlIGV4dHJhY3RfZXhwc3ltc19jbWRzIHRvIHVzZQotCSAgICBzb3Jvb3Q9IiRzb25hbWUiCisJICAgIHNvcm9vdD0kc29uYW1lCiAJICAgIGZ1bmNfYmFzZW5hbWUgIiRzb3Jvb3QiCi0JICAgIHNvbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgICBzb25hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAJICAgIGZ1bmNfc3RyaXBuYW1lICdsaWInICcuZGxsJyAiJHNvbmFtZSIKIAkgICAgbmV3bGliPWxpYmltcC0kZnVuY19zdHJpcG5hbWVfcmVzdWx0LmEKIAogCSAgICAjIElmIHRoZSBsaWJyYXJ5IGhhcyBubyBleHBvcnQgbGlzdCwgdGhlbiBjcmVhdGUgb25lIG5vdwogCSAgICBpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8kc29uYW1lLWRlZiI7IHRoZW4gOgogCSAgICBlbHNlCi0JICAgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGV4cG9ydGVkIHN5bWJvbCBsaXN0IGZyb20gXGAkc29uYW1lJyIKKwkgICAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZXhwb3J0ZWQgc3ltYm9sIGxpc3QgZnJvbSAnJHNvbmFtZSciCiAJICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRleHRyYWN0X2V4cHN5bXNfY21kcyIgJ2V4aXQgJD8nCiAJICAgIGZpCiAKIAkgICAgIyBDcmVhdGUgJG5ld2xpYgogCSAgICBpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8kbmV3bGliIjsgdGhlbiA6OyBlbHNlCi0JICAgICAgZnVuY192ZXJib3NlICJnZW5lcmF0aW5nIGltcG9ydCBsaWJyYXJ5IGZvciBcYCRzb25hbWUnIgorCSAgICAgIGZ1bmNfdmVyYm9zZSAiZ2VuZXJhdGluZyBpbXBvcnQgbGlicmFyeSBmb3IgJyRzb25hbWUnIgogCSAgICAgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiICdleGl0ICQ/JwogCSAgICBmaQogCSAgICAjIG1ha2Ugc3VyZSB0aGUgbGlicmFyeSB2YXJpYWJsZXMgYXJlIHBvaW50aW5nIHRvIHRoZSBuZXcgbGlicmFyeQpAQCAtNjc5Nyw1OCArODI0Myw1OCBAQAogCSAgICBsaW5rbGliPSRuZXdsaWIKIAkgIGZpICMgdGVzdCAtbiAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIgogCi0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgorCSAgaWYgdGVzdCBwcm9nID0gIiRsaW5rbW9kZSIgfHwgdGVzdCByZWxpbmsgIT0gIiRvcHRfbW9kZSI7IHRoZW4KIAkgICAgYWRkX3NobGlicGF0aD0KIAkgICAgYWRkX2Rpcj0KIAkgICAgYWRkPQogCSAgICBsaWJfbGlua2VkPXllcwogCSAgICBjYXNlICRoYXJkY29kZV9hY3Rpb24gaW4KIAkgICAgaW1tZWRpYXRlIHwgdW5zdXBwb3J0ZWQpCi0JICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgPSBubzsgdGhlbgotCQlhZGQ9IiRkaXIvJGxpbmtsaWIiCisJICAgICAgaWYgdGVzdCBubyA9ICIkaGFyZGNvZGVfZGlyZWN0IjsgdGhlbgorCQlhZGQ9JGRpci8kbGlua2xpYgogCQljYXNlICRob3N0IGluCi0JCSAgKi0qLXNjbzMuMnY1LjAuWzAyNF0qKSBhZGRfZGlyPSItTCRkaXIiIDs7Ci0JCSAgKi0qLXN5c3Y0KnV3MiopIGFkZF9kaXI9Ii1MJGRpciIgOzsKKwkJICAqLSotc2NvMy4ydjUuMC5bMDI0XSopIGFkZF9kaXI9LUwkZGlyIDs7CisJCSAgKi0qLXN5c3Y0KnV3MiopIGFkZF9kaXI9LUwkZGlyIDs7CiAJCSAgKi0qLXN5c3Y1T3BlblVOSVgqIHwgKi0qLXN5c3Y1VW5peFdhcmU3LlswMV0uWzEwXSogfCBcCi0JCSAgICAqLSotdW5peHdhcmU3KikgYWRkX2Rpcj0iLUwkZGlyIiA7OworCQkgICAgKi0qLXVuaXh3YXJlNyopIGFkZF9kaXI9LUwkZGlyIDs7CiAJCSAgKi0qLWRhcndpbiogKQotCQkgICAgIyBpZiB0aGUgbGliIGlzIGEgKG5vbi1kbG9wZW5lZCkgbW9kdWxlIHRoZW4gd2UgY2FuIG5vdAorCQkgICAgIyBpZiB0aGUgbGliIGlzIGEgKG5vbi1kbG9wZW5lZCkgbW9kdWxlIHRoZW4gd2UgY2Fubm90CiAJCSAgICAjIGxpbmsgYWdhaW5zdCBpdCwgc29tZW9uZSBpcyBpZ25vcmluZyB0aGUgZWFybGllciB3YXJuaW5ncwogCQkgICAgaWYgL3Vzci9iaW4vZmlsZSAtTCAkYWRkIDI+IC9kZXYvbnVsbCB8Ci0JCQkgJEdSRVAgIjogW146XSogYnVuZGxlIiA+L2Rldi9udWxsIDsgdGhlbgorCQkJICRHUkVQICI6IFteOl0qIGJ1bmRsZSIgPi9kZXYvbnVsbDsgdGhlbgogCQkgICAgICBpZiB0ZXN0ICJYJGRsb3Blbm1vZHVsZSIgIT0gIlgkbGliIjsgdGhlbgogCQkJJEVDSE8gIioqKiBXYXJuaW5nOiBsaWIgJGxpbmtsaWIgaXMgYSBtb2R1bGUsIG5vdCBhIHNoYXJlZCBsaWJyYXJ5IgotCQkJaWYgdGVzdCAteiAiJG9sZF9saWJyYXJ5IiA7IHRoZW4KKwkJCWlmIHRlc3QgLXogIiRvbGRfbGlicmFyeSI7IHRoZW4KIAkJCSAgZWNobwogCQkJICBlY2hvICIqKiogQW5kIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHN0YXRpYyBhcmNoaXZlIGF2YWlsYWJsZSIKIAkJCSAgZWNobyAiKioqIFRoZSBsaW5rIHdpbGwgcHJvYmFibHkgZmFpbCwgc29ycnkiCiAJCQllbHNlCi0JCQkgIGFkZD0iJGRpci8kb2xkX2xpYnJhcnkiCisJCQkgIGFkZD0kZGlyLyRvbGRfbGlicmFyeQogCQkJZmkKIAkJICAgICAgZWxpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0JCQlhZGQ9IiRkaXIvJG9sZF9saWJyYXJ5IgorCQkJYWRkPSRkaXIvJG9sZF9saWJyYXJ5CiAJCSAgICAgIGZpCiAJCSAgICBmaQogCQllc2FjCi0JICAgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgPSBubzsgdGhlbgorCSAgICAgIGVsaWYgdGVzdCBubyA9ICIkaGFyZGNvZGVfbWludXNfTCI7IHRoZW4KIAkJY2FzZSAkaG9zdCBpbgotCQkqLSotc3Vub3MqKSBhZGRfc2hsaWJwYXRoPSIkZGlyIiA7OworCQkqLSotc3Vub3MqKSBhZGRfc2hsaWJwYXRoPSRkaXIgOzsKIAkJZXNhYwotCQlhZGRfZGlyPSItTCRkaXIiCi0JCWFkZD0iLWwkbmFtZSIKLQkgICAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IG5vOyB0aGVuCi0JCWFkZF9zaGxpYnBhdGg9IiRkaXIiCi0JCWFkZD0iLWwkbmFtZSIKKwkJYWRkX2Rpcj0tTCRkaXIKKwkJYWRkPS1sJG5hbWUKKwkgICAgICBlbGlmIHRlc3Qgbm8gPSAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiOyB0aGVuCisJCWFkZF9zaGxpYnBhdGg9JGRpcgorCQlhZGQ9LWwkbmFtZQogCSAgICAgIGVsc2UKIAkJbGliX2xpbmtlZD1ubwogCSAgICAgIGZpCiAJICAgICAgOzsKIAkgICAgcmVsaW5rKQotCSAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3QiID0geWVzICYmCi0JICAgICAgICAgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSIgPSBubzsgdGhlbgotCQlhZGQ9IiRkaXIvJGxpbmtsaWIiCi0JICAgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgPSB5ZXM7IHRoZW4KLQkJYWRkX2Rpcj0iLUwkYWJzZGlyIgorCSAgICAgIGlmIHRlc3QgeWVzID0gIiRoYXJkY29kZV9kaXJlY3QiICYmCisJICAgICAgICAgdGVzdCBubyA9ICIkaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlIjsgdGhlbgorCQlhZGQ9JGRpci8kbGlua2xpYgorCSAgICAgIGVsaWYgdGVzdCB5ZXMgPSAiJGhhcmRjb2RlX21pbnVzX0wiOyB0aGVuCisJCWFkZF9kaXI9LUwkYWJzZGlyCiAJCSMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KIAkJaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KIAkJICBjYXNlICRsaWJkaXIgaW4KQEAgLTY4NTcsMTAgKzgzMDMsMTAgQEAKIAkJICAgICAgOzsKIAkJICBlc2FjCiAJCWZpCi0JCWFkZD0iLWwkbmFtZSIKLQkgICAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgotCQlhZGRfc2hsaWJwYXRoPSIkZGlyIgotCQlhZGQ9Ii1sJG5hbWUiCisJCWFkZD0tbCRuYW1lCisJICAgICAgZWxpZiB0ZXN0IHllcyA9ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciI7IHRoZW4KKwkJYWRkX3NobGlicGF0aD0kZGlyCisJCWFkZD0tbCRuYW1lCiAJICAgICAgZWxzZQogCQlsaWJfbGlua2VkPW5vCiAJICAgICAgZmkKQEAgLTY4NjgsNyArODMxNCw3IEBACiAJICAgICopIGxpYl9saW5rZWQ9bm8gOzsKIAkgICAgZXNhYwogCi0JICAgIGlmIHRlc3QgIiRsaWJfbGlua2VkIiAhPSB5ZXM7IHRoZW4KKwkgICAgaWYgdGVzdCB5ZXMgIT0gIiRsaWJfbGlua2VkIjsgdGhlbgogCSAgICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAidW5zdXBwb3J0ZWQgaGFyZGNvZGUgcHJvcGVydGllcyIKIAkgICAgZmkKIApAQCAtNjg3OCwxNSArODMyNCwxNSBAQAogCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfc2hsaWJwYXRoICIkYWRkX3NobGlicGF0aDoiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQotCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorCSAgICBpZiB0ZXN0IHByb2cgPSAiJGxpbmttb2RlIjsgdGhlbgogCSAgICAgIHRlc3QgLW4gIiRhZGRfZGlyIiAmJiBjb21waWxlX2RlcGxpYnM9IiRhZGRfZGlyICRjb21waWxlX2RlcGxpYnMiCiAJICAgICAgdGVzdCAtbiAiJGFkZCIgJiYgY29tcGlsZV9kZXBsaWJzPSIkYWRkICRjb21waWxlX2RlcGxpYnMiCiAJICAgIGVsc2UKIAkgICAgICB0ZXN0IC1uICIkYWRkX2RpciIgJiYgZGVwbGlicz0iJGFkZF9kaXIgJGRlcGxpYnMiCiAJICAgICAgdGVzdCAtbiAiJGFkZCIgJiYgZGVwbGlicz0iJGFkZCAkZGVwbGlicyIKLQkgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiAhPSB5ZXMgJiYKLQkJIHRlc3QgIiRoYXJkY29kZV9taW51c19MIiAhPSB5ZXMgJiYKLQkJIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgorCSAgICAgIGlmIHRlc3QgeWVzICE9ICIkaGFyZGNvZGVfZGlyZWN0IiAmJgorCQkgdGVzdCB5ZXMgIT0gIiRoYXJkY29kZV9taW51c19MIiAmJgorCQkgdGVzdCB5ZXMgPSAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiOyB0aGVuCiAJCWNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCiAJCSoiOiRsaWJkaXI6IiopIDs7CiAJCSopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7CkBAIC02ODk1LDMzICs4MzQxLDMzIEBACiAJICAgIGZpCiAJICBmaQogCi0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCisJICBpZiB0ZXN0IHByb2cgPSAiJGxpbmttb2RlIiB8fCB0ZXN0IHJlbGluayA9ICIkb3B0X21vZGUiOyB0aGVuCiAJICAgIGFkZF9zaGxpYnBhdGg9CiAJICAgIGFkZF9kaXI9CiAJICAgIGFkZD0KIAkgICAgIyBGaW5hbGl6ZSBjb21tYW5kIGZvciBib3RoIGlzIHNpbXBsZToganVzdCBoYXJkY29kZSBpdC4KLQkgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgPSB5ZXMgJiYKLQkgICAgICAgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSIgPSBubzsgdGhlbgotCSAgICAgIGFkZD0iJGxpYmRpci8kbGlua2xpYiIKLQkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgPSB5ZXM7IHRoZW4KLQkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCi0JICAgICAgYWRkPSItbCRuYW1lIgotCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgorCSAgICBpZiB0ZXN0IHllcyA9ICIkaGFyZGNvZGVfZGlyZWN0IiAmJgorCSAgICAgICB0ZXN0IG5vID0gIiRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUiOyB0aGVuCisJICAgICAgYWRkPSRsaWJkaXIvJGxpbmtsaWIKKwkgICAgZWxpZiB0ZXN0IHllcyA9ICIkaGFyZGNvZGVfbWludXNfTCI7IHRoZW4KKwkgICAgICBhZGRfZGlyPS1MJGxpYmRpcgorCSAgICAgIGFkZD0tbCRuYW1lCisJICAgIGVsaWYgdGVzdCB5ZXMgPSAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiOyB0aGVuCiAJICAgICAgY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KIAkgICAgICAqIjokbGliZGlyOiIqKSA7OwogCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7CiAJICAgICAgZXNhYwotCSAgICAgIGFkZD0iLWwkbmFtZSIKLQkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllczsgdGhlbgorCSAgICAgIGFkZD0tbCRuYW1lCisJICAgIGVsaWYgdGVzdCB5ZXMgPSAiJGhhcmRjb2RlX2F1dG9tYXRpYyI7IHRoZW4KIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIiAmJgotCQkgdGVzdCAtZiAiJGluc3RfcHJlZml4X2RpciRsaWJkaXIvJGxpbmtsaWIiIDsgdGhlbgotCQlhZGQ9IiRpbnN0X3ByZWZpeF9kaXIkbGliZGlyLyRsaW5rbGliIgorCQkgdGVzdCAtZiAiJGluc3RfcHJlZml4X2RpciRsaWJkaXIvJGxpbmtsaWIiOyB0aGVuCisJCWFkZD0kaW5zdF9wcmVmaXhfZGlyJGxpYmRpci8kbGlua2xpYgogCSAgICAgIGVsc2UKLQkJYWRkPSIkbGliZGlyLyRsaW5rbGliIgorCQlhZGQ9JGxpYmRpci8kbGlua2xpYgogCSAgICAgIGZpCiAJICAgIGVsc2UKIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgotCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKKwkgICAgICBhZGRfZGlyPS1MJGxpYmRpcgogCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgogCQljYXNlICRsaWJkaXIgaW4KQEAgLTY5MzAsMTAgKzgzNzYsMTAgQEAKIAkJICAgIDs7CiAJCWVzYWMKIAkgICAgICBmaQotCSAgICAgIGFkZD0iLWwkbmFtZSIKKwkgICAgICBhZGQ9LWwkbmFtZQogCSAgICBmaQogCi0JICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCisJICAgIGlmIHRlc3QgcHJvZyA9ICIkbGlua21vZGUiOyB0aGVuCiAJICAgICAgdGVzdCAtbiAiJGFkZF9kaXIiICYmIGZpbmFsaXplX2RlcGxpYnM9IiRhZGRfZGlyICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgICAgIHRlc3QgLW4gIiRhZGQiICYmIGZpbmFsaXplX2RlcGxpYnM9IiRhZGQgJGZpbmFsaXplX2RlcGxpYnMiCiAJICAgIGVsc2UKQEAgLTY5NDEsNDMgKzgzODcsNDMgQEAKIAkgICAgICB0ZXN0IC1uICIkYWRkIiAmJiBkZXBsaWJzPSIkYWRkICRkZXBsaWJzIgogCSAgICBmaQogCSAgZmkKLQllbGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCisJZWxpZiB0ZXN0IHByb2cgPSAiJGxpbmttb2RlIjsgdGhlbgogCSAgIyBIZXJlIHdlIGFzc3VtZSB0aGF0IG9uZSBvZiBoYXJkY29kZV9kaXJlY3Qgb3IgaGFyZGNvZGVfbWludXNfTAogCSAgIyBpcyBub3QgdW5zdXBwb3J0ZWQuICBUaGlzIGlzIHZhbGlkIG9uIGFsbCBrbm93biBzdGF0aWMgYW5kCiAJICAjIHNoYXJlZCBwbGF0Zm9ybXMuCi0JICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiAhPSB1bnN1cHBvcnRlZDsgdGhlbgotCSAgICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGxpbmtsaWI9IiRvbGRfbGlicmFyeSIKKwkgIGlmIHRlc3QgdW5zdXBwb3J0ZWQgIT0gIiRoYXJkY29kZV9kaXJlY3QiOyB0aGVuCisJICAgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgbGlua2xpYj0kb2xkX2xpYnJhcnkKIAkgICAgY29tcGlsZV9kZXBsaWJzPSIkZGlyLyRsaW5rbGliICRjb21waWxlX2RlcGxpYnMiCiAJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkaXIvJGxpbmtsaWIgJGZpbmFsaXplX2RlcGxpYnMiCiAJICBlbHNlCiAJICAgIGNvbXBpbGVfZGVwbGlicz0iLWwkbmFtZSAtTCRkaXIgJGNvbXBpbGVfZGVwbGlicyIKIAkgICAgZmluYWxpemVfZGVwbGlicz0iLWwkbmFtZSAtTCRkaXIgJGZpbmFsaXplX2RlcGxpYnMiCiAJICBmaQotCWVsaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KKwllbGlmIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiOyB0aGVuCiAJICAjIE5vdCBhIHNoYXJlZCBsaWJyYXJ5Ci0JICBpZiB0ZXN0ICIkZGVwbGlic19jaGVja19tZXRob2QiICE9IHBhc3NfYWxsOyB0aGVuCisJICBpZiB0ZXN0IHBhc3NfYWxsICE9ICIkZGVwbGlic19jaGVja19tZXRob2QiOyB0aGVuCiAJICAgICMgV2UncmUgdHJ5aW5nIGxpbmsgYSBzaGFyZWQgbGlicmFyeSBhZ2FpbnN0IGEgc3RhdGljIG9uZQogCSAgICAjIGJ1dCB0aGUgc3lzdGVtIGRvZXNuJ3Qgc3VwcG9ydCBpdC4KIAogCSAgICAjIEp1c3QgcHJpbnQgYSB3YXJuaW5nIGFuZCBhZGQgdGhlIGxpYnJhcnkgdG8gZGVwZW5kZW5jeV9saWJzIHNvCiAJICAgICMgdGhhdCB0aGUgcHJvZ3JhbSBjYW4gYmUgbGlua2VkIGFnYWluc3QgdGhlIHN0YXRpYyBsaWJyYXJ5LgogCSAgICBlY2hvCi0JICAgICRFQ0hPICIqKiogV2FybmluZzogVGhpcyBzeXN0ZW0gY2FuIG5vdCBsaW5rIHRvIHN0YXRpYyBsaWIgYXJjaGl2ZSAkbGliLiIKKwkgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBUaGlzIHN5c3RlbSBjYW5ub3QgbGluayB0byBzdGF0aWMgbGliIGFyY2hpdmUgJGxpYi4iCiAJICAgIGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCiAJICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCiAJICAgIGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZS4iCi0JICAgIGlmIHRlc3QgIiRtb2R1bGUiID0geWVzOyB0aGVuCisJICAgIGlmIHRlc3QgeWVzID0gIiRtb2R1bGUiOyB0aGVuCiAJICAgICAgZWNobyAiKioqIEJ1dCBhcyB5b3UgdHJ5IHRvIGJ1aWxkIGEgbW9kdWxlIGxpYnJhcnksIGxpYnRvb2wgd2lsbCBzdGlsbCBjcmVhdGUgIgogCSAgICAgIGVjaG8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIGFwcGxpY2F0aW9uIgogCSAgICAgIGVjaG8gIioqKiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnIHRvIHJlc29sdmUgc3ltYm9scyBhdCBydW50aW1lLiIKIAkgICAgICBpZiB0ZXN0IC16ICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgogCQllY2hvCiAJCWVjaG8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgotCQllY2hvICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgorCQllY2hvICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nICdubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCiAJCWVjaG8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKLQkJZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCisJCWVjaG8gIioqKiAnbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCiAJICAgICAgZmkKLQkgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KKwkgICAgICBpZiB0ZXN0IG5vID0gIiRidWlsZF9vbGRfbGlicyI7IHRoZW4KIAkJYnVpbGRfbGlidG9vbF9saWJzPW1vZHVsZQogCQlidWlsZF9vbGRfbGlicz15ZXMKIAkgICAgICBlbHNlCkBAIC02OTkwLDExICs4NDM2LDExIEBACiAJICBmaQogCWZpICMgbGluayBzaGFyZWQvc3RhdGljIGxpYnJhcnk/CiAKLQlpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCisJaWYgdGVzdCBsaWIgPSAiJGxpbmttb2RlIjsgdGhlbgogCSAgaWYgdGVzdCAtbiAiJGRlcGVuZGVuY3lfbGlicyIgJiYKLQkgICAgIHsgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgIT0geWVzIHx8Ci0JICAgICAgIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgfHwKLQkgICAgICAgdGVzdCAiJGxpbmtfc3RhdGljIiA9IHllczsgfTsgdGhlbgorCSAgICAgeyB0ZXN0IHllcyAhPSAiJGhhcmRjb2RlX2ludG9fbGlicyIgfHwKKwkgICAgICAgdGVzdCB5ZXMgPSAiJGJ1aWxkX29sZF9saWJzIiB8fAorCSAgICAgICB0ZXN0IHllcyA9ICIkbGlua19zdGF0aWMiOyB9OyB0aGVuCiAJICAgICMgRXh0cmFjdCAtUiBmcm9tIGRlcGVuZGVuY3lfbGlicwogCSAgICB0ZW1wX2RlcGxpYnM9CiAJICAgIGZvciBsaWJkaXIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KQEAgLTcwMDgsMTIgKzg0NTQsMTIgQEAKIAkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX2RlcGxpYnMgIiAkbGliZGlyIjs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCi0JICAgIGRlcGVuZGVuY3lfbGlicz0iJHRlbXBfZGVwbGlicyIKKwkgICAgZGVwZW5kZW5jeV9saWJzPSR0ZW1wX2RlcGxpYnMKIAkgIGZpCiAKIAkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRhYnNkaXIiCiAJICAjIExpbmsgYWdhaW5zdCB0aGlzIGxpYnJhcnkKLQkgIHRlc3QgIiRsaW5rX3N0YXRpYyIgPSBubyAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRhYnNfbGFkaXIvJGxhbmFtZSAkbmV3ZGVwZW5kZW5jeV9saWJzIgorCSAgdGVzdCBubyA9ICIkbGlua19zdGF0aWMiICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGFic19sYWRpci8kbGFuYW1lICRuZXdkZXBlbmRlbmN5X2xpYnMiCiAJICAjIC4uLiBhbmQgaXRzIGRlcGVuZGVuY3lfbGlicwogCSAgdG1wX2xpYnM9CiAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCkBAIC03MDIzLDcgKzg0NjksNyBAQAogICAgICAgICAgICAgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0Ijs7CiAgICAgICAgICAgICAgICopIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIiA7OwogICAgICAgICAgICAgZXNhYwotCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzOyB0aGVuCiAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KIAkgICAgICAqIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0ICIqKQogICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKQEAgLTcwMzIsMTIgKzg0NzgsMTIgQEAKIAkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgZG9uZQogCi0JICBpZiB0ZXN0ICIkbGlua19hbGxfZGVwbGlicyIgIT0gbm87IHRoZW4KKwkgIGlmIHRlc3Qgbm8gIT0gIiRsaW5rX2FsbF9kZXBsaWJzIjsgdGhlbgogCSAgICAjIEFkZCB0aGUgc2VhcmNoIHBhdGhzIG9mIGFsbCBkZXBlbmRlbmN5IGxpYnJhcmllcwogCSAgICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCiAJICAgICAgcGF0aD0KIAkgICAgICBjYXNlICRkZXBsaWIgaW4KLQkgICAgICAtTCopIHBhdGg9IiRkZXBsaWIiIDs7CisJICAgICAgLUwqKSBwYXRoPSRkZXBsaWIgOzsKIAkgICAgICAqLmxhKQogCSAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCiAJICAgICAgICBkZXBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdApAQCAtNzA0NSwxMiArODQ5MSwxMiBAQAogCQlkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKIAkJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJCWNhc2UgJGRpciBpbgotCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFic2Rpcj0iJGRpciIgOzsKKwkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9JGRpciA7OwogCQkqKQogCQkgIGFic2Rpcj1gY2QgIiRkaXIiICYmIHB3ZGAKIAkJICBpZiB0ZXN0IC16ICIkYWJzZGlyIjsgdGhlbgotCQkgICAgZnVuY193YXJuaW5nICJjYW5ub3QgZGV0ZXJtaW5lIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIG9mIFxgJGRpciciCi0JCSAgICBhYnNkaXI9IiRkaXIiCisJCSAgICBmdW5jX3dhcm5pbmcgImNhbm5vdCBkZXRlcm1pbmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgb2YgJyRkaXInIgorCQkgICAgYWJzZGlyPSRkaXIKIAkJICBmaQogCQkgIDs7CiAJCWVzYWMKQEAgLTcwNTgsMzUgKzg1MDQsMzUgQEAKIAkJY2FzZSAkaG9zdCBpbgogCQkqLSotZGFyd2luKikKIAkJICBkZXBkZXBsPQotCQkgIGV2YWwgZGVwbGlicmFyeV9uYW1lcz1gJHtTRUR9IC1uIC1lICdzL15saWJyYXJ5X25hbWVzPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLQkJICBpZiB0ZXN0IC1uICIkZGVwbGlicmFyeV9uYW1lcyIgOyB0aGVuCi0JCSAgICBmb3IgdG1wIGluICRkZXBsaWJyYXJ5X25hbWVzIDsgZG8KKwkJICBldmFsIGRlcGxpYnJhcnlfbmFtZXM9YCRTRUQgLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorCQkgIGlmIHRlc3QgLW4gIiRkZXBsaWJyYXJ5X25hbWVzIjsgdGhlbgorCQkgICAgZm9yIHRtcCBpbiAkZGVwbGlicmFyeV9uYW1lczsgZG8KIAkJICAgICAgZGVwZGVwbD0kdG1wCiAJCSAgICBkb25lCi0JCSAgICBpZiB0ZXN0IC1mICIkYWJzZGlyLyRvYmpkaXIvJGRlcGRlcGwiIDsgdGhlbgotCQkgICAgICBkZXBkZXBsPSIkYWJzZGlyLyRvYmpkaXIvJGRlcGRlcGwiCi0JCSAgICAgIGRhcndpbl9pbnN0YWxsX25hbWU9YCR7T1RPT0x9IC1MICRkZXBkZXBsIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAorCQkgICAgaWYgdGVzdCAtZiAiJGFic2Rpci8kb2JqZGlyLyRkZXBkZXBsIjsgdGhlbgorCQkgICAgICBkZXBkZXBsPSRhYnNkaXIvJG9iamRpci8kZGVwZGVwbAorCQkgICAgICBkYXJ3aW5faW5zdGFsbF9uYW1lPWAkT1RPT0wgLUwgJGRlcGRlcGwgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCiAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGRhcndpbl9pbnN0YWxsX25hbWUiOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRhcndpbl9pbnN0YWxsX25hbWU9YCR7T1RPT0w2NH0gLUwgJGRlcGRlcGwgIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAorICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJ3aW5faW5zdGFsbF9uYW1lPWAkT1RPT0w2NCAtTCAkZGVwZGVwbCAgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCiAgICAgICAgICAgICAgICAgICAgICAgZmkKLQkJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotCQkgICAgICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCisJCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHdsLWR5bGliX2ZpbGUgJHdsJGRhcndpbl9pbnN0YWxsX25hbWU6JGRlcGRlcGwiCisJCSAgICAgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiIC1keWxpYl9maWxlICRkYXJ3aW5faW5zdGFsbF9uYW1lOiRkZXBkZXBsIgogCQkgICAgICBwYXRoPQogCQkgICAgZmkKIAkJICBmaQogCQkgIDs7CiAJCSopCi0JCSAgcGF0aD0iLUwkYWJzZGlyLyRvYmpkaXIiCisJCSAgcGF0aD0tTCRhYnNkaXIvJG9iamRpcgogCQkgIDs7CiAJCWVzYWMKIAkJZWxzZQotCQkgIGV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisJCSAgZXZhbCBsaWJkaXI9YCRTRUQgLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCiAJCSAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAotCQkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisJCSAgICBmdW5jX2ZhdGFsX2Vycm9yICInJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgogCQkgIHRlc3QgIiRhYnNkaXIiICE9ICIkbGliZGlyIiAmJiBcCi0JCSAgICBmdW5jX3dhcm5pbmcgIlxgJGRlcGxpYicgc2VlbXMgdG8gYmUgbW92ZWQiCisJCSAgICBmdW5jX3dhcm5pbmcgIickZGVwbGliJyBzZWVtcyB0byBiZSBtb3ZlZCIKIAotCQkgIHBhdGg9Ii1MJGFic2RpciIKKwkJICBwYXRoPS1MJGFic2RpcgogCQlmaQogCQk7OwogCSAgICAgIGVzYWMKQEAgLTcwOTgsMjMgKzg1NDQsMjMgQEAKIAkgIGZpICMgbGlua19hbGxfZGVwbGlicyAhPSBubwogCWZpICMgbGlua21vZGUgPSBsaWIKICAgICAgIGRvbmUgIyBmb3IgZGVwbGliIGluICRsaWJzCi0gICAgICBpZiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCi0JaWYgdGVzdCAiJGxpbmttb2RlIiA9ICJwcm9nIjsgdGhlbgorICAgICAgaWYgdGVzdCBsaW5rID0gIiRwYXNzIjsgdGhlbgorCWlmIHRlc3QgcHJvZyA9ICIkbGlua21vZGUiOyB0aGVuCiAJICBjb21waWxlX2RlcGxpYnM9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkY29tcGlsZV9kZXBsaWJzIgogCSAgZmluYWxpemVfZGVwbGlicz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRmaW5hbGl6ZV9kZXBsaWJzIgogCWVsc2UKIAkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgImAkRUNITyAiICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAogCWZpCiAgICAgICBmaQotICAgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgotICAgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuOyB0aGVuCisgICAgICBkZXBlbmRlbmN5X2xpYnM9JG5ld2RlcGVuZGVuY3lfbGlicworICAgICAgaWYgdGVzdCBkbHByZW9wZW4gPSAiJHBhc3MiOyB0aGVuCiAJIyBMaW5rIHRoZSBkbHByZW9wZW5lZCBsaWJyYXJpZXMgYmVmb3JlIG90aGVyIGxpYnJhcmllcwogCWZvciBkZXBsaWIgaW4gJHNhdmVfZGVwbGliczsgZG8KIAkgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCiAJZG9uZQogICAgICAgZmkKLSAgICAgIGlmIHRlc3QgIiRwYXNzIiAhPSBkbG9wZW47IHRoZW4KLQlpZiB0ZXN0ICIkcGFzcyIgIT0gY29udjsgdGhlbgorICAgICAgaWYgdGVzdCBkbG9wZW4gIT0gIiRwYXNzIjsgdGhlbgorCXRlc3QgY29udiA9ICIkcGFzcyIgfHwgewogCSAgIyBNYWtlIHN1cmUgbGliX3NlYXJjaF9wYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgogCSAgbGliX3NlYXJjaF9wYXRoPQogCSAgZm9yIGRpciBpbiAkbmV3bGliX3NlYXJjaF9wYXRoOyBkbwpAQCAtNzEyNCwxMiArODU3MCwxMiBAQAogCSAgICBlc2FjCiAJICBkb25lCiAJICBuZXdsaWJfc2VhcmNoX3BhdGg9Ci0JZmkKKwl9CiAKLQlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiICE9ICJwcm9nLGxpbmsiOyB0aGVuCi0JICB2YXJzPSJkZXBsaWJzIgotCWVsc2UKKwlpZiB0ZXN0IHByb2csbGluayA9ICIkbGlua21vZGUsJHBhc3MiOyB0aGVuCiAJICB2YXJzPSJjb21waWxlX2RlcGxpYnMgZmluYWxpemVfZGVwbGlicyIKKwllbHNlCisJICB2YXJzPWRlcGxpYnMKIAlmaQogCWZvciB2YXIgaW4gJHZhcnMgZGVwZW5kZW5jeV9saWJzOyBkbwogCSAgIyBBZGQgbGlicmFyaWVzIHRvICR2YXIgaW4gcmV2ZXJzZSBvcmRlcgpAQCAtNzE4Nyw2MiArODYzMyw5MyBAQAogCSAgZXZhbCAkdmFyPVwiJHRtcF9saWJzXCIKIAlkb25lICMgZm9yIHZhcgogICAgICAgZmkKKworICAgICAgIyBBZGQgU3VuIENDIHBvc3RkZXBzIGlmIHJlcXVpcmVkOgorICAgICAgdGVzdCBDWFggPSAiJHRhZ25hbWUiICYmIHsKKyAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgICBsaW51eCopCisgICAgICAgICAgY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCisgICAgICAgICAgKlN1blwgQyopICMgU3VuIEMrKyA1LjkKKyAgICAgICAgICAgIGZ1bmNfc3VuY2NfY3N0ZF9hYmkKKworICAgICAgICAgICAgaWYgdGVzdCBubyAhPSAiJHN1bmNjX3VzZV9jc3RkX2FiaSI7IHRoZW4KKyAgICAgICAgICAgICAgZnVuY19hcHBlbmQgcG9zdGRlcHMgJyAtbGlicmFyeT1Dc3RkIC1saWJyYXJ5PUNydW4nCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgOzsKKworICAgICAgICBzb2xhcmlzKikKKyAgICAgICAgICBmdW5jX2NjX2Jhc2VuYW1lICIkQ0MiCisgICAgICAgICAgY2FzZSAkZnVuY19jY19iYXNlbmFtZV9yZXN1bHQgaW4KKyAgICAgICAgICBDQyogfCBzdW5DQyopCisgICAgICAgICAgICBmdW5jX3N1bmNjX2NzdGRfYWJpCisKKyAgICAgICAgICAgIGlmIHRlc3Qgbm8gIT0gIiRzdW5jY191c2VfY3N0ZF9hYmkiOyB0aGVuCisgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHBvc3RkZXBzICcgLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJworICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIDs7CisgICAgICAgICAgZXNhYworICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgIH0KKwogICAgICAgIyBMYXN0IHN0ZXA6IHJlbW92ZSBydW50aW1lIGxpYnMgZnJvbSBkZXBlbmRlbmN5X2xpYnMKICAgICAgICMgKHRoZXkgc3RheSBpbiBkZXBsaWJzKQogICAgICAgdG1wX2xpYnM9Ci0gICAgICBmb3IgaSBpbiAkZGVwZW5kZW5jeV9saWJzIDsgZG8KKyAgICAgIGZvciBpIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCiAJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAkY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoICIgaW4KIAkqIiAkaSAiKikKLQkgIGk9IiIKKwkgIGk9CiAJICA7OwogCWVzYWMKLQlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCisJaWYgdGVzdCAtbiAiJGkiOyB0aGVuCiAJICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRpIgogCWZpCiAgICAgICBkb25lCiAgICAgICBkZXBlbmRlbmN5X2xpYnM9JHRtcF9saWJzCiAgICAgZG9uZSAjIGZvciBwYXNzCi0gICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KLSAgICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgorICAgIGlmIHRlc3QgcHJvZyA9ICIkbGlua21vZGUiOyB0aGVuCisgICAgICBkbGZpbGVzPSRuZXdkbGZpbGVzCiAgICAgZmkKLSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCi0gICAgICBkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyIKKyAgICBpZiB0ZXN0IHByb2cgPSAiJGxpbmttb2RlIiB8fCB0ZXN0IGxpYiA9ICIkbGlua21vZGUiOyB0aGVuCisgICAgICBkbHByZWZpbGVzPSRuZXdkbHByZWZpbGVzCiAgICAgZmkKIAogICAgIGNhc2UgJGxpbmttb2RlIGluCiAgICAgb2xkbGliKQotICAgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwgdGVzdCAiJGRsc2VsZiIgIT0gbm87IHRoZW4KLQlmdW5jX3dhcm5pbmcgIlxgLWRsb3BlbicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCisgICAgICBpZiB0ZXN0IC1uICIkZGxmaWxlcyRkbHByZWZpbGVzIiB8fCB0ZXN0IG5vICE9ICIkZGxzZWxmIjsgdGhlbgorCWZ1bmNfd2FybmluZyAiJy1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgogICAgICAgZmkKIAogICAgICAgY2FzZSAiICRkZXBsaWJzIiBpbgogICAgICAgKlwgLWwqIHwgKlwgLUwqKQotCWZ1bmNfd2FybmluZyAiXGAtbCcgYW5kIFxgLUwnIGFyZSBpZ25vcmVkIGZvciBhcmNoaXZlcyIgOzsKKwlmdW5jX3dhcm5pbmcgIictbCcgYW5kICctTCcgYXJlIGlnbm9yZWQgZm9yIGFyY2hpdmVzIiA7OwogICAgICAgZXNhYwogCiAgICAgICB0ZXN0IC1uICIkcnBhdGgiICYmIFwKLQlmdW5jX3dhcm5pbmcgIlxgLXJwYXRoJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIKKwlmdW5jX3dhcm5pbmcgIictcnBhdGgnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgogCiAgICAgICB0ZXN0IC1uICIkeHJwYXRoIiAmJiBcCi0JZnVuY193YXJuaW5nICJcYC1SJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIKKwlmdW5jX3dhcm5pbmcgIictUicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCiAKICAgICAgIHRlc3QgLW4gIiR2aW5mbyIgJiYgXAotCWZ1bmNfd2FybmluZyAiXGAtdmVyc2lvbi1pbmZvLy12ZXJzaW9uLW51bWJlcicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCisJZnVuY193YXJuaW5nICInLXZlcnNpb24taW5mby8tdmVyc2lvbi1udW1iZXInIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgogCiAgICAgICB0ZXN0IC1uICIkcmVsZWFzZSIgJiYgXAotCWZ1bmNfd2FybmluZyAiXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCisJZnVuY193YXJuaW5nICInLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgogCiAgICAgICB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICYmIFwKLQlmdW5jX3dhcm5pbmcgIlxgLWV4cG9ydC1zeW1ib2xzJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIKKwlmdW5jX3dhcm5pbmcgIictZXhwb3J0LXN5bWJvbHMnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgogCiAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KICAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwotICAgICAgb2xkbGlicz0iJG91dHB1dCIKKyAgICAgIG9sZGxpYnM9JG91dHB1dAogICAgICAgZnVuY19hcHBlbmQgb2JqcyAiJG9sZF9kZXBsaWJzIgogICAgICAgOzsKIAogICAgIGxpYikKLSAgICAgICMgTWFrZSBzdXJlIHdlIG9ubHkgZ2VuZXJhdGUgbGlicmFyaWVzIG9mIHRoZSBmb3JtIGBsaWJOQU1FLmxhJy4KKyAgICAgICMgTWFrZSBzdXJlIHdlIG9ubHkgZ2VuZXJhdGUgbGlicmFyaWVzIG9mIHRoZSBmb3JtICdsaWJOQU1FLmxhJy4KICAgICAgIGNhc2UgJG91dHB1dG5hbWUgaW4KICAgICAgIGxpYiopCiAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRvdXRwdXRuYW1lIgpAQCAtNzI1MSwxMCArODcyOCwxMCBAQAogCWV2YWwgbGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIgogCTs7CiAgICAgICAqKQotCXRlc3QgIiRtb2R1bGUiID0gbm8gJiYgXAotCSAgZnVuY19mYXRhbF9oZWxwICJsaWJ0b29sIGxpYnJhcnkgXGAkb3V0cHV0JyBtdXN0IGJlZ2luIHdpdGggXGBsaWInIgorCXRlc3Qgbm8gPSAiJG1vZHVsZSIgXAorCSAgJiYgZnVuY19mYXRhbF9oZWxwICJsaWJ0b29sIGxpYnJhcnkgJyRvdXRwdXQnIG11c3QgYmVnaW4gd2l0aCAnbGliJyIKIAotCWlmIHRlc3QgIiRuZWVkX2xpYl9wcmVmaXgiICE9IG5vOyB0aGVuCisJaWYgdGVzdCBubyAhPSAiJG5lZWRfbGliX3ByZWZpeCI7IHRoZW4KIAkgICMgQWRkIHRoZSAibGliIiBwcmVmaXggZm9yIG1vZHVsZXMgaWYgcmVxdWlyZWQKIAkgIGZ1bmNfc3RyaXBuYW1lICcnICcubGEnICIkb3V0cHV0bmFtZSIKIAkgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdApAQCAtNzI2OCw4ICs4NzQ1LDggQEAKICAgICAgIGVzYWMKIAogICAgICAgaWYgdGVzdCAtbiAiJG9ianMiOyB0aGVuCi0JaWYgdGVzdCAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAhPSBwYXNzX2FsbDsgdGhlbgotCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGJ1aWxkIGxpYnRvb2wgbGlicmFyeSBcYCRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyBvbiB0aGlzIGhvc3Q6JG9ianMiCisJaWYgdGVzdCBwYXNzX2FsbCAhPSAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIjsgdGhlbgorCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGJ1aWxkIGxpYnRvb2wgbGlicmFyeSAnJG91dHB1dCcgZnJvbSBub24tbGlidG9vbCBvYmplY3RzIG9uIHRoaXMgaG9zdDokb2JqcyIKIAllbHNlCiAJICBlY2hvCiAJICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbm9uLWxpYnRvb2wiCkBAIC03Mjc4LDIxICs4NzU1LDIxIEBACiAJZmkKICAgICAgIGZpCiAKLSAgICAgIHRlc3QgIiRkbHNlbGYiICE9IG5vICYmIFwKLQlmdW5jX3dhcm5pbmcgIlxgLWRsb3BlbiBzZWxmJyBpcyBpZ25vcmVkIGZvciBsaWJ0b29sIGxpYnJhcmllcyIKKyAgICAgIHRlc3Qgbm8gPSAiJGRsc2VsZiIgXAorCXx8IGZ1bmNfd2FybmluZyAiJy1kbG9wZW4gc2VsZicgaXMgaWdub3JlZCBmb3IgbGlidG9vbCBsaWJyYXJpZXMiCiAKICAgICAgIHNldCBkdW1teSAkcnBhdGgKICAgICAgIHNoaWZ0Ci0gICAgICB0ZXN0ICIkIyIgLWd0IDEgJiYgXAotCWZ1bmNfd2FybmluZyAiaWdub3JpbmcgbXVsdGlwbGUgXGAtcnBhdGgncyBmb3IgYSBsaWJ0b29sIGxpYnJhcnkiCisgICAgICB0ZXN0IDEgLWx0ICIkIyIgXAorCSYmIGZ1bmNfd2FybmluZyAiaWdub3JpbmcgbXVsdGlwbGUgJy1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIKIAotICAgICAgaW5zdGFsbF9saWJkaXI9IiQxIgorICAgICAgaW5zdGFsbF9saWJkaXI9JDEKIAogICAgICAgb2xkbGlicz0KICAgICAgIGlmIHRlc3QgLXogIiRycGF0aCI7IHRoZW4KLQlpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgorCWlmIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiOyB0aGVuCiAJICAjIEJ1aWxkaW5nIGEgbGlidG9vbCBjb252ZW5pZW5jZSBsaWJyYXJ5LgotCSAgIyBTb21lIGNvbXBpbGVycyBoYXZlIHByb2JsZW1zIHdpdGggYSBgLmFsJyBleHRlbnNpb24gc28KKwkgICMgU29tZSBjb21waWxlcnMgaGF2ZSBwcm9ibGVtcyB3aXRoIGEgJy5hbCcgZXh0ZW5zaW9uIHNvCiAJICAjIGNvbnZlbmllbmNlIGxpYnJhcmllcyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBleHRlbnNpb24gYW4KIAkgICMgYXJjaGl2ZSBub3JtYWxseSB3b3VsZC4KIAkgIG9sZGxpYnM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQgJG9sZGxpYnMiCkBAIC03MzAxLDIwICs4Nzc4LDIwIEBACiAJZmkKIAogCXRlc3QgLW4gIiR2aW5mbyIgJiYgXAotCSAgZnVuY193YXJuaW5nICJcYC12ZXJzaW9uLWluZm8vLXZlcnNpb24tbnVtYmVyJyBpcyBpZ25vcmVkIGZvciBjb252ZW5pZW5jZSBsaWJyYXJpZXMiCisJICBmdW5jX3dhcm5pbmcgIictdmVyc2lvbi1pbmZvLy12ZXJzaW9uLW51bWJlcicgaXMgaWdub3JlZCBmb3IgY29udmVuaWVuY2UgbGlicmFyaWVzIgogCiAJdGVzdCAtbiAiJHJlbGVhc2UiICYmIFwKLQkgIGZ1bmNfd2FybmluZyAiXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgY29udmVuaWVuY2UgbGlicmFyaWVzIgorCSAgZnVuY193YXJuaW5nICInLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIGNvbnZlbmllbmNlIGxpYnJhcmllcyIKICAgICAgIGVsc2UKIAogCSMgUGFyc2UgdGhlIHZlcnNpb24gaW5mb3JtYXRpb24gYXJndW1lbnQuCi0Jc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JzonCisJc2F2ZV9pZnM9JElGUzsgSUZTPToKIAlzZXQgZHVtbXkgJHZpbmZvIDAgMCAwCiAJc2hpZnQKLQlJRlM9IiRzYXZlX2lmcyIKKwlJRlM9JHNhdmVfaWZzCiAKIAl0ZXN0IC1uICIkNyIgJiYgXAotCSAgZnVuY19mYXRhbF9oZWxwICJ0b28gbWFueSBwYXJhbWV0ZXJzIHRvIFxgLXZlcnNpb24taW5mbyciCisJICBmdW5jX2ZhdGFsX2hlbHAgInRvbyBtYW55IHBhcmFtZXRlcnMgdG8gJy12ZXJzaW9uLWluZm8nIgogCiAJIyBjb252ZXJ0IGFic29sdXRlIHZlcnNpb24gbnVtYmVycyB0byBsaWJ0b29sIGFnZXMKIAkjIHRoaXMgcmV0YWlucyBjb21wYXRpYmlsaXR5IHdpdGggLmxhIGZpbGVzIGFuZCBhdHRlbXB0cwpAQCAtNzMyMiw0NSArODc5OSw0NSBAQAogCiAJY2FzZSAkdmluZm9fbnVtYmVyIGluCiAJeWVzKQotCSAgbnVtYmVyX21ham9yPSIkMSIKLQkgIG51bWJlcl9taW5vcj0iJDIiCi0JICBudW1iZXJfcmV2aXNpb249IiQzIgorCSAgbnVtYmVyX21ham9yPSQxCisJICBudW1iZXJfbWlub3I9JDIKKwkgIG51bWJlcl9yZXZpc2lvbj0kMwogCSAgIwogCSAgIyBUaGVyZSBhcmUgcmVhbGx5IG9ubHkgdHdvIGtpbmRzIC0tIHRob3NlIHRoYXQKIAkgICMgdXNlIHRoZSBjdXJyZW50IHJldmlzaW9uIGFzIHRoZSBtYWpvciB2ZXJzaW9uCiAJICAjIGFuZCB0aG9zZSB0aGF0IHN1YnRyYWN0IGFnZSBhbmQgdXNlIGFnZSBhcwogCSAgIyBhIG1pbm9yIHZlcnNpb24uICBCdXQsIHRoZW4gdGhlcmUgaXMgaXJpeAotCSAgIyB3aGljaCBoYXMgYW4gZXh0cmEgMSBhZGRlZCBqdXN0IGZvciBmdW4KKwkgICMgdGhhdCBoYXMgYW4gZXh0cmEgMSBhZGRlZCBqdXN0IGZvciBmdW4KIAkgICMKIAkgIGNhc2UgJHZlcnNpb25fdHlwZSBpbgogCSAgIyBjb3JyZWN0IGxpbnV4IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCi0JICBkYXJ3aW58bGludXh8b3NmfHdpbmRvd3N8bm9uZSkKKwkgIGRhcndpbnxmcmVlYnNkLWVsZnxsaW51eHxvc2Z8d2luZG93c3xub25lKQogCSAgICBmdW5jX2FyaXRoICRudW1iZXJfbWFqb3IgKyAkbnVtYmVyX21pbm9yCiAJICAgIGN1cnJlbnQ9JGZ1bmNfYXJpdGhfcmVzdWx0Ci0JICAgIGFnZT0iJG51bWJlcl9taW5vciIKLQkgICAgcmV2aXNpb249IiRudW1iZXJfcmV2aXNpb24iCisJICAgIGFnZT0kbnVtYmVyX21pbm9yCisJICAgIHJldmlzaW9uPSRudW1iZXJfcmV2aXNpb24KIAkgICAgOzsKLQkgIGZyZWVic2QtYW91dHxmcmVlYnNkLWVsZnxxbnh8c3Vub3MpCi0JICAgIGN1cnJlbnQ9IiRudW1iZXJfbWFqb3IiCi0JICAgIHJldmlzaW9uPSIkbnVtYmVyX21pbm9yIgotCSAgICBhZ2U9IjAiCisJICBmcmVlYnNkLWFvdXR8cW54fHN1bm9zKQorCSAgICBjdXJyZW50PSRudW1iZXJfbWFqb3IKKwkgICAgcmV2aXNpb249JG51bWJlcl9taW5vcgorCSAgICBhZ2U9MAogCSAgICA7OwogCSAgaXJpeHxub25zdG9wdXgpCiAJICAgIGZ1bmNfYXJpdGggJG51bWJlcl9tYWpvciArICRudW1iZXJfbWlub3IKIAkgICAgY3VycmVudD0kZnVuY19hcml0aF9yZXN1bHQKLQkgICAgYWdlPSIkbnVtYmVyX21pbm9yIgotCSAgICByZXZpc2lvbj0iJG51bWJlcl9taW5vciIKKwkgICAgYWdlPSRudW1iZXJfbWlub3IKKwkgICAgcmV2aXNpb249JG51bWJlcl9taW5vcgogCSAgICBsdF9pcml4X2luY3JlbWVudD1ubwogCSAgICA7OwogCSAgKikKLQkgICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICIkbW9kZW5hbWU6IHVua25vd24gbGlicmFyeSB2ZXJzaW9uIHR5cGUgXGAkdmVyc2lvbl90eXBlJyIKKwkgICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICIkbW9kZW5hbWU6IHVua25vd24gbGlicmFyeSB2ZXJzaW9uIHR5cGUgJyR2ZXJzaW9uX3R5cGUnIgogCSAgICA7OwogCSAgZXNhYwogCSAgOzsKIAlubykKLQkgIGN1cnJlbnQ9IiQxIgotCSAgcmV2aXNpb249IiQyIgotCSAgYWdlPSIkMyIKKwkgIGN1cnJlbnQ9JDEKKwkgIHJldmlzaW9uPSQyCisJICBhZ2U9JDMKIAkgIDs7CiAJZXNhYwogCkBAIC03MzY4LDMwICs4ODQ1LDMwIEBACiAJY2FzZSAkY3VycmVudCBpbgogCTB8WzEtOV18WzEtOV1bMC05XXxbMS05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV1bMC05XSkgOzsKIAkqKQotCSAgZnVuY19lcnJvciAiQ1VSUkVOVCBcYCRjdXJyZW50JyBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciIKLQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIKKwkgIGZ1bmNfZXJyb3IgIkNVUlJFTlQgJyRjdXJyZW50JyBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciIKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgIickdmluZm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm9ybWF0aW9uIgogCSAgOzsKIAllc2FjCiAKIAljYXNlICRyZXZpc2lvbiBpbgogCTB8WzEtOV18WzEtOV1bMC05XXxbMS05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV1bMC05XSkgOzsKIAkqKQotCSAgZnVuY19lcnJvciAiUkVWSVNJT04gXGAkcmV2aXNpb24nIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIgotCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkdmluZm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm9ybWF0aW9uIgorCSAgZnVuY19lcnJvciAiUkVWSVNJT04gJyRyZXZpc2lvbicgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiCisJICBmdW5jX2ZhdGFsX2Vycm9yICInJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIKIAkgIDs7CiAJZXNhYwogCiAJY2FzZSAkYWdlIGluCiAJMHxbMS05XXxbMS05XVswLTldfFsxLTldWzAtOV1bMC05XXxbMS05XVswLTldWzAtOV1bMC05XXxbMS05XVswLTldWzAtOV1bMC05XVswLTldKSA7OwogCSopCi0JICBmdW5jX2Vycm9yICJBR0UgXGAkYWdlJyBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciIKLQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIKKwkgIGZ1bmNfZXJyb3IgIkFHRSAnJGFnZScgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiCisJICBmdW5jX2ZhdGFsX2Vycm9yICInJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIKIAkgIDs7CiAJZXNhYwogCiAJaWYgdGVzdCAiJGFnZSIgLWd0ICIkY3VycmVudCI7IHRoZW4KLQkgIGZ1bmNfZXJyb3IgIkFHRSBcYCRhZ2UnIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBpbnRlcmZhY2UgbnVtYmVyIFxgJGN1cnJlbnQnIgotCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkdmluZm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm9ybWF0aW9uIgorCSAgZnVuY19lcnJvciAiQUdFICckYWdlJyBpcyBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgaW50ZXJmYWNlIG51bWJlciAnJGN1cnJlbnQnIgorCSAgZnVuY19mYXRhbF9lcnJvciAiJyR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iCiAJZmkKIAogCSMgQ2FsY3VsYXRlIHRoZSB2ZXJzaW9uIHZhcmlhYmxlcy4KQEAgLTc0MDYsMjYgKzg4ODMsMzYgQEAKIAkgICMgdmVyc3RyaW5nIGZvciBjb2RpbmcgaXQgaW50byB0aGUgbGlicmFyeSBoZWFkZXIKIAkgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlCiAJICBtYWpvcj0uJGZ1bmNfYXJpdGhfcmVzdWx0Ci0JICB2ZXJzdWZmaXg9IiRtYWpvci4kYWdlLiRyZXZpc2lvbiIKKwkgIHZlcnN1ZmZpeD0kbWFqb3IuJGFnZS4kcmV2aXNpb24KIAkgICMgRGFyd2luIGxkIGRvZXNuJ3QgbGlrZSAwIGZvciB0aGVzZSBvcHRpb25zLi4uCiAJICBmdW5jX2FyaXRoICRjdXJyZW50ICsgMQogCSAgbWlub3JfY3VycmVudD0kZnVuY19hcml0aF9yZXN1bHQKLQkgIHhsY3ZlcnN0cmluZz0iJHt3bH0tY29tcGF0aWJpbGl0eV92ZXJzaW9uICR7d2x9JG1pbm9yX2N1cnJlbnQgJHt3bH0tY3VycmVudF92ZXJzaW9uICR7d2x9JG1pbm9yX2N1cnJlbnQuJHJldmlzaW9uIgorCSAgeGxjdmVyc3RyaW5nPSIkd2wtY29tcGF0aWJpbGl0eV92ZXJzaW9uICR3bCRtaW5vcl9jdXJyZW50ICR3bC1jdXJyZW50X3ZlcnNpb24gJHdsJG1pbm9yX2N1cnJlbnQuJHJldmlzaW9uIgogCSAgdmVyc3RyaW5nPSItY29tcGF0aWJpbGl0eV92ZXJzaW9uICRtaW5vcl9jdXJyZW50IC1jdXJyZW50X3ZlcnNpb24gJG1pbm9yX2N1cnJlbnQuJHJldmlzaW9uIgorICAgICAgICAgICMgT24gRGFyd2luIG90aGVyIGNvbXBpbGVycworICAgICAgICAgIGNhc2UgJENDIGluCisgICAgICAgICAgICAgIG5hZ2ZvciopCisgICAgICAgICAgICAgICAgICB2ZXJzdHJpbmc9IiR3bC1jb21wYXRpYmlsaXR5X3ZlcnNpb24gJHdsJG1pbm9yX2N1cnJlbnQgJHdsLWN1cnJlbnRfdmVyc2lvbiAkd2wkbWlub3JfY3VycmVudC4kcmV2aXNpb24iCisgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgICAgdmVyc3RyaW5nPSItY29tcGF0aWJpbGl0eV92ZXJzaW9uICRtaW5vcl9jdXJyZW50IC1jdXJyZW50X3ZlcnNpb24gJG1pbm9yX2N1cnJlbnQuJHJldmlzaW9uIgorICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICBlc2FjCiAJICA7OwogCiAJZnJlZWJzZC1hb3V0KQotCSAgbWFqb3I9Ii4kY3VycmVudCIKLQkgIHZlcnN1ZmZpeD0iLiRjdXJyZW50LiRyZXZpc2lvbiI7CisJICBtYWpvcj0uJGN1cnJlbnQKKwkgIHZlcnN1ZmZpeD0uJGN1cnJlbnQuJHJldmlzaW9uCiAJICA7OwogCiAJZnJlZWJzZC1lbGYpCi0JICBtYWpvcj0iLiRjdXJyZW50IgotCSAgdmVyc3VmZml4PSIuJGN1cnJlbnQiCisJICBmdW5jX2FyaXRoICRjdXJyZW50IC0gJGFnZQorCSAgbWFqb3I9LiRmdW5jX2FyaXRoX3Jlc3VsdAorCSAgdmVyc3VmZml4PSRtYWpvci4kYWdlLiRyZXZpc2lvbgogCSAgOzsKIAogCWlyaXggfCBub25zdG9wdXgpCi0JICBpZiB0ZXN0ICJYJGx0X2lyaXhfaW5jcmVtZW50IiA9ICJYbm8iOyB0aGVuCisJICBpZiB0ZXN0IG5vID0gIiRsdF9pcml4X2luY3JlbWVudCI7IHRoZW4KIAkgICAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKIAkgIGVsc2UKIAkgICAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UgKyAxCkBAIC03NDM2LDY5ICs4OTIzLDc0IEBACiAJICAgIG5vbnN0b3B1eCkgdmVyc3RyaW5nX3ByZWZpeD1ub25zdG9wdXggOzsKIAkgICAgKikgICAgICAgICB2ZXJzdHJpbmdfcHJlZml4PXNnaSA7OwogCSAgZXNhYwotCSAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nX3ByZWZpeCRtYWpvci4kcmV2aXNpb24iCisJICB2ZXJzdHJpbmc9JHZlcnN0cmluZ19wcmVmaXgkbWFqb3IuJHJldmlzaW9uCiAKIAkgICMgQWRkIGluIGFsbCB0aGUgaW50ZXJmYWNlcyB0aGF0IHdlIGFyZSBjb21wYXRpYmxlIHdpdGguCiAJICBsb29wPSRyZXZpc2lvbgotCSAgd2hpbGUgdGVzdCAiJGxvb3AiIC1uZSAwOyBkbworCSAgd2hpbGUgdGVzdCAwIC1uZSAiJGxvb3AiOyBkbwogCSAgICBmdW5jX2FyaXRoICRyZXZpc2lvbiAtICRsb29wCiAJICAgIGlmYWNlPSRmdW5jX2FyaXRoX3Jlc3VsdAogCSAgICBmdW5jX2FyaXRoICRsb29wIC0gMQogCSAgICBsb29wPSRmdW5jX2FyaXRoX3Jlc3VsdAotCSAgICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmdfcHJlZml4JG1ham9yLiRpZmFjZTokdmVyc3RyaW5nIgorCSAgICB2ZXJzdHJpbmc9JHZlcnN0cmluZ19wcmVmaXgkbWFqb3IuJGlmYWNlOiR2ZXJzdHJpbmcKIAkgIGRvbmUKIAotCSAgIyBCZWZvcmUgdGhpcyBwb2ludCwgJG1ham9yIG11c3Qgbm90IGNvbnRhaW4gYC4nLgorCSAgIyBCZWZvcmUgdGhpcyBwb2ludCwgJG1ham9yIG11c3Qgbm90IGNvbnRhaW4gJy4nLgogCSAgbWFqb3I9LiRtYWpvcgotCSAgdmVyc3VmZml4PSIkbWFqb3IuJHJldmlzaW9uIgorCSAgdmVyc3VmZml4PSRtYWpvci4kcmV2aXNpb24KIAkgIDs7CiAKIAlsaW51eCkgIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAJICBmdW5jX2FyaXRoICRjdXJyZW50IC0gJGFnZQogCSAgbWFqb3I9LiRmdW5jX2FyaXRoX3Jlc3VsdAotCSAgdmVyc3VmZml4PSIkbWFqb3IuJGFnZS4kcmV2aXNpb24iCisJICB2ZXJzdWZmaXg9JG1ham9yLiRhZ2UuJHJldmlzaW9uCiAJICA7OwogCiAJb3NmKQogCSAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKIAkgIG1ham9yPS4kZnVuY19hcml0aF9yZXN1bHQKLQkgIHZlcnN1ZmZpeD0iLiRjdXJyZW50LiRhZ2UuJHJldmlzaW9uIgotCSAgdmVyc3RyaW5nPSIkY3VycmVudC4kYWdlLiRyZXZpc2lvbiIKKwkgIHZlcnN1ZmZpeD0uJGN1cnJlbnQuJGFnZS4kcmV2aXNpb24KKwkgIHZlcnN0cmluZz0kY3VycmVudC4kYWdlLiRyZXZpc2lvbgogCiAJICAjIEFkZCBpbiBhbGwgdGhlIGludGVyZmFjZXMgdGhhdCB3ZSBhcmUgY29tcGF0aWJsZSB3aXRoLgogCSAgbG9vcD0kYWdlCi0JICB3aGlsZSB0ZXN0ICIkbG9vcCIgLW5lIDA7IGRvCisJICB3aGlsZSB0ZXN0IDAgLW5lICIkbG9vcCI7IGRvCiAJICAgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkbG9vcAogCSAgICBpZmFjZT0kZnVuY19hcml0aF9yZXN1bHQKIAkgICAgZnVuY19hcml0aCAkbG9vcCAtIDEKIAkgICAgbG9vcD0kZnVuY19hcml0aF9yZXN1bHQKLQkgICAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nOiR7aWZhY2V9LjAiCisJICAgIHZlcnN0cmluZz0kdmVyc3RyaW5nOiRpZmFjZS4wCiAJICBkb25lCiAKIAkgICMgTWFrZSBleGVjdXRhYmxlcyBkZXBlbmQgb24gb3VyIGN1cnJlbnQgdmVyc2lvbi4KLQkgIGZ1bmNfYXBwZW5kIHZlcnN0cmluZyAiOiR7Y3VycmVudH0uMCIKKwkgIGZ1bmNfYXBwZW5kIHZlcnN0cmluZyAiOiRjdXJyZW50LjAiCiAJICA7OwogCiAJcW54KQotCSAgbWFqb3I9Ii4kY3VycmVudCIKLQkgIHZlcnN1ZmZpeD0iLiRjdXJyZW50IgorCSAgbWFqb3I9LiRjdXJyZW50CisJICB2ZXJzdWZmaXg9LiRjdXJyZW50CisJICA7OworCisJc2NvKQorCSAgbWFqb3I9LiRjdXJyZW50CisJICB2ZXJzdWZmaXg9LiRjdXJyZW50CiAJICA7OwogCiAJc3Vub3MpCi0JICBtYWpvcj0iLiRjdXJyZW50IgotCSAgdmVyc3VmZml4PSIuJGN1cnJlbnQuJHJldmlzaW9uIgorCSAgbWFqb3I9LiRjdXJyZW50CisJICB2ZXJzdWZmaXg9LiRjdXJyZW50LiRyZXZpc2lvbgogCSAgOzsKIAogCXdpbmRvd3MpCiAJICAjIFVzZSAnLScgcmF0aGVyIHRoYW4gJy4nLCBzaW5jZSB3ZSBvbmx5IHdhbnQgb25lCi0JICAjIGV4dGVuc2lvbiBvbiBET1MgOC4zIGZpbGVzeXN0ZW1zLgorCSAgIyBleHRlbnNpb24gb24gRE9TIDguMyBmaWxlIHN5c3RlbXMuCiAJICBmdW5jX2FyaXRoICRjdXJyZW50IC0gJGFnZQogCSAgbWFqb3I9JGZ1bmNfYXJpdGhfcmVzdWx0Ci0JICB2ZXJzdWZmaXg9Ii0kbWFqb3IiCisJICB2ZXJzdWZmaXg9LSRtYWpvcgogCSAgOzsKIAogCSopCi0JICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gInVua25vd24gbGlicmFyeSB2ZXJzaW9uIHR5cGUgXGAkdmVyc2lvbl90eXBlJyIKKwkgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAidW5rbm93biBsaWJyYXJ5IHZlcnNpb24gdHlwZSAnJHZlcnNpb25fdHlwZSciCiAJICA7OwogCWVzYWMKIApAQCAtNzUxMiw0MiArOTAwNCw0NSBAQAogCSAgICB2ZXJzdHJpbmc9CiAJICAgIDs7CiAJICAqKQotCSAgICB2ZXJzdHJpbmc9IjAuMCIKKwkgICAgdmVyc3RyaW5nPTAuMAogCSAgICA7OwogCSAgZXNhYwotCSAgaWYgdGVzdCAiJG5lZWRfdmVyc2lvbiIgPSBubzsgdGhlbgorCSAgaWYgdGVzdCBubyA9ICIkbmVlZF92ZXJzaW9uIjsgdGhlbgogCSAgICB2ZXJzdWZmaXg9CiAJICBlbHNlCi0JICAgIHZlcnN1ZmZpeD0iLjAuMCIKKwkgICAgdmVyc3VmZml4PS4wLjAKIAkgIGZpCiAJZmkKIAogCSMgUmVtb3ZlIHZlcnNpb24gaW5mbyBmcm9tIG5hbWUgaWYgdmVyc2lvbmluZyBzaG91bGQgYmUgYXZvaWRlZAotCWlmIHRlc3QgIiRhdm9pZF92ZXJzaW9uIiA9IHllcyAmJiB0ZXN0ICIkbmVlZF92ZXJzaW9uIiA9IG5vOyB0aGVuCisJaWYgdGVzdCB5ZXMsbm8gPSAiJGF2b2lkX3ZlcnNpb24sJG5lZWRfdmVyc2lvbiI7IHRoZW4KIAkgIG1ham9yPQogCSAgdmVyc3VmZml4PQotCSAgdmVyc3RyaW5nPSIiCisJICB2ZXJzdHJpbmc9CiAJZmkKIAogCSMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBhcmNoaXZlIHdpbGwgaGF2ZSB1bmRlZmluZWQgc3ltYm9scy4KLQlpZiB0ZXN0ICIkYWxsb3dfdW5kZWZpbmVkIiA9IHllczsgdGhlbgotCSAgaWYgdGVzdCAiJGFsbG93X3VuZGVmaW5lZF9mbGFnIiA9IHVuc3VwcG9ydGVkOyB0aGVuCi0JICAgIGZ1bmNfd2FybmluZyAidW5kZWZpbmVkIHN5bWJvbHMgbm90IGFsbG93ZWQgaW4gJGhvc3Qgc2hhcmVkIGxpYnJhcmllcyIKLQkgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCi0JICAgIGJ1aWxkX29sZF9saWJzPXllcworCWlmIHRlc3QgeWVzID0gIiRhbGxvd191bmRlZmluZWQiOyB0aGVuCisJICBpZiB0ZXN0IHVuc3VwcG9ydGVkID0gIiRhbGxvd191bmRlZmluZWRfZmxhZyI7IHRoZW4KKwkgICAgaWYgdGVzdCB5ZXMgPSAiJGJ1aWxkX29sZF9saWJzIjsgdGhlbgorCSAgICAgIGZ1bmNfd2FybmluZyAidW5kZWZpbmVkIHN5bWJvbHMgbm90IGFsbG93ZWQgaW4gJGhvc3Qgc2hhcmVkIGxpYnJhcmllczsgYnVpbGRpbmcgc3RhdGljIG9ubHkiCisJICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCisJICAgIGVsc2UKKwkgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW4ndCBidWlsZCAkaG9zdCBzaGFyZWQgbGlicmFyeSB1bmxlc3MgLW5vLXVuZGVmaW5lZCBpcyBzcGVjaWZpZWQiCisJICAgIGZpCiAJICBmaQogCWVsc2UKIAkgICMgRG9uJ3QgYWxsb3cgdW5kZWZpbmVkIHN5bWJvbHMuCi0JICBhbGxvd191bmRlZmluZWRfZmxhZz0iJG5vX3VuZGVmaW5lZF9mbGFnIgorCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JG5vX3VuZGVmaW5lZF9mbGFnCiAJZmkKIAogICAgICAgZmkKIAotICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRsaWJuYW1lIiAiJGxpYm5hbWUiICJ5ZXMiCisgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJGxpYm5hbWUiICIkbGlibmFtZSIgOgogICAgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRzeW1maWxlb2JqIgotICAgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAgICAgIHRlc3QgIiAiID0gIiRsaWJvYmpzIiAmJiBsaWJvYmpzPQogCi0gICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgorICAgICAgaWYgdGVzdCByZWxpbmsgIT0gIiRvcHRfbW9kZSI7IHRoZW4KIAkjIFJlbW92ZSBvdXIgb3V0cHV0cywgYnV0IGRvbid0IHJlbW92ZSBvYmplY3QgZmlsZXMgc2luY2UgdGhleQogCSMgbWF5IGhhdmUgYmVlbiBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIFBJQyBvYmplY3RzLgogCXJlbW92ZWxpc3Q9CkBAIC03NTU2LDggKzkwNTEsOCBAQAogCSAgY2FzZSAkcCBpbgogCSAgICAqLiRvYmpleHQgfCAqLmdjbm8pCiAJICAgICAgIDs7Ci0JICAgICRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIHwgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuKiB8ICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0ke3JlbGVhc2V9LiopCi0JICAgICAgIGlmIHRlc3QgIlgkcHJlY2lvdXNfZmlsZXNfcmVnZXgiICE9ICJYIjsgdGhlbgorCSAgICAkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSB8ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiogfCAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLiopCisJICAgICAgIGlmIHRlc3QgLW4gIiRwcmVjaW91c19maWxlc19yZWdleCI7IHRoZW4KIAkJIGlmICRFQ0hPICIkcCIgfCAkRUdSRVAgLWUgIiRwcmVjaW91c19maWxlc19yZWdleCIgPi9kZXYvbnVsbCAyPiYxCiAJCSB0aGVuCiAJCSAgIGNvbnRpbnVlCkBAIC03NTczLDExICs5MDY4LDExIEBACiAgICAgICBmaQogCiAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KLSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVuY2UgOyB0aGVuCisgICAgICBpZiB0ZXN0IHllcyA9ICIkYnVpbGRfb2xkX2xpYnMiICYmIHRlc3QgY29udmVuaWVuY2UgIT0gIiRidWlsZF9saWJ0b29sX2xpYnMiOyB0aGVuCiAJZnVuY19hcHBlbmQgb2xkbGlicyAiICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCiAKIAkjIFRyYW5zZm9ybSAubG8gZmlsZXMgdG8gLm8gZmlsZXMuCi0Jb2xkb2Jqcz0iJG9ianMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAkbG8ybyIgfCAkTkwyU1BgCisJb2xkb2Jqcz0iJG9ianMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJGxpYmV4dCQvZDsgJGxvMm8iIHwgJE5MMlNQYAogICAgICAgZmkKIAogICAgICAgIyBFbGltaW5hdGUgYWxsIHRlbXBvcmFyeSBkaXJlY3Rvcmllcy4KQEAgLTc1OTgsMTMgKzkwOTMsMTMgQEAKIAkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgIGVzYWMKIAlkb25lCi0JaWYgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KKwlpZiB0ZXN0IHllcyAhPSAiJGhhcmRjb2RlX2ludG9fbGlicyIgfHwgdGVzdCB5ZXMgPSAiJGJ1aWxkX29sZF9saWJzIjsgdGhlbgogCSAgZGVwZW5kZW5jeV9saWJzPSIkdGVtcF94cnBhdGggJGRlcGVuZGVuY3lfbGlicyIKIAlmaQogICAgICAgZmkKIAogICAgICAgIyBNYWtlIHN1cmUgZGxmaWxlcyBjb250YWlucyBvbmx5IHVuaXF1ZSBmaWxlcyB0aGF0IHdvbid0IGJlIGRscHJlb3BlbmVkCi0gICAgICBvbGRfZGxmaWxlcz0iJGRsZmlsZXMiCisgICAgICBvbGRfZGxmaWxlcz0kZGxmaWxlcwogICAgICAgZGxmaWxlcz0KICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbGZpbGVzOyBkbwogCWNhc2UgIiAkZGxwcmVmaWxlcyAkZGxmaWxlcyAiIGluCkBAIC03NjE0LDcgKzkxMDksNyBAQAogICAgICAgZG9uZQogCiAgICAgICAjIE1ha2Ugc3VyZSBkbHByZWZpbGVzIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGZpbGVzCi0gICAgICBvbGRfZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMiCisgICAgICBvbGRfZGxwcmVmaWxlcz0kZGxwcmVmaWxlcwogICAgICAgZGxwcmVmaWxlcz0KICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbHByZWZpbGVzOyBkbwogCWNhc2UgIiRkbHByZWZpbGVzICIgaW4KQEAgLTc2MjMsNyArOTExOCw3IEBACiAJZXNhYwogICAgICAgZG9uZQogCi0gICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgorICAgICAgaWYgdGVzdCB5ZXMgPSAiJGJ1aWxkX2xpYnRvb2xfbGlicyI7IHRoZW4KIAlpZiB0ZXN0IC1uICIkcnBhdGgiOyB0aGVuCiAJICBjYXNlICRob3N0IGluCiAJICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqIHwgKi0qLWhhaWt1KikKQEAgLTc2NDcsNyArOTE0Miw3IEBACiAJICAgIDs7CiAJICAqKQogCSAgICAjIEFkZCBsaWJjIHRvIGRlcGxpYnMgb24gYWxsIG90aGVyIHN5c3RlbXMgaWYgbmVjZXNzYXJ5LgotCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9uZWVkX2xjIiA9ICJ5ZXMiOyB0aGVuCisJICAgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX25lZWRfbGMiOyB0aGVuCiAJICAgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1sYyIKIAkgICAgZmkKIAkgICAgOzsKQEAgLTc2NjMsOSArOTE1OCw5IEBACiAJIyBJJ20gbm90IHN1cmUgaWYgSSdtIHRyZWF0aW5nIHRoZSByZWxlYXNlIGNvcnJlY3RseS4gIEkgdGhpbmsKIAkjIHJlbGVhc2Ugc2hvdWxkIHNob3cgdXAgaW4gdGhlIC1sIChpZSAtbGdtcDUpIHNvIHdlIGRvbid0IHdhbnQgdG8KIAkjIGFkZCBpdCBpbiB0d2ljZS4gIElzIHRoYXQgY29ycmVjdD8KLQlyZWxlYXNlPSIiCi0JdmVyc3VmZml4PSIiCi0JbWFqb3I9IiIKKwlyZWxlYXNlPQorCXZlcnN1ZmZpeD0KKwltYWpvcj0KIAluZXdkZXBsaWJzPQogCWRyb3BwZWRkZXBzPW5vCiAJY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KQEAgLTc2OTQsMjAgKzkxODksMjAgQEAKIAkgICAgICAtbCopCiAJCWZ1bmNfc3RyaXBuYW1lIC1sICcnICIkaSIKIAkJbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0JCWlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKwkJaWYgdGVzdCB5ZXMgPSAiJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyI7IHRoZW4KIAkJICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJICAqIiAkaSAiKikKIAkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLQkJICAgIGk9IiIKKwkJICAgIGk9CiAJCSAgICA7OwogCQkgIGVzYWMKIAkJZmkKLQkJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgorCQlpZiB0ZXN0IC1uICIkaSI7IHRoZW4KIAkJICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKIAkJICBkZXBsaWJfbWF0Y2hlcz1gZXZhbCAiXFwkRUNITyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiJgCiAJCSAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKIAkJICBkZXBsaWJfbWF0Y2g9JDEKLQkJICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCisJCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwOyB0aGVuCiAJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCSAgZWxzZQogCQkgICAgZHJvcHBlZGRlcHM9eWVzCkBAIC03NzM3LDIwICs5MjMyLDIwIEBACiAJCSRvcHRfZHJ5X3J1biB8fCAkUk0gY29uZnRlc3QKIAkJaWYgJExUQ0MgJExUQ0ZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgJGk7IHRoZW4KIAkJICBsZGRfb3V0cHV0PWBsZGQgY29uZnRlc3RgCi0JCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorCQkgIGlmIHRlc3QgeWVzID0gIiRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiOyB0aGVuCiAJCSAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJICAgICoiICRpICIqKQogCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0JCSAgICAgIGk9IiIKKwkJICAgICAgaT0KIAkJICAgICAgOzsKIAkJICAgIGVzYWMKIAkJICBmaQotCQkgIGlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KKwkJICBpZiB0ZXN0IC1uICIkaSI7IHRoZW4KIAkJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAogCQkgICAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAogCQkgICAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKIAkJICAgIGRlcGxpYl9tYXRjaD0kMQotCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgorCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwOyB0aGVuCiAJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJICAgIGVsc2UKIAkJICAgICAgZHJvcHBlZGRlcHM9eWVzCkBAIC03Nzg3LDI0ICs5MjgyLDI0IEBACiAJICAgIC1sKikKIAkgICAgICBmdW5jX3N0cmlwbmFtZSAtbCAnJyAiJGFfZGVwbGliIgogCSAgICAgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKwkgICAgICBpZiB0ZXN0IHllcyA9ICIkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIjsgdGhlbgogCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJKiIgJGFfZGVwbGliICIqKQogCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0JCSAgYV9kZXBsaWI9IiIKKwkJICBhX2RlcGxpYj0KIAkJICA7OwogCQllc2FjCiAJICAgICAgZmkKLQkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgorCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiI7IHRoZW4KIAkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCiAJCWlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX2dsb2IiOyB0aGVuCiAJCSAgbGlibmFtZWdsb2I9YGZ1bmNfZWNob19hbGwgIiRsaWJuYW1lIiB8ICRTRUQgLWUgJGZpbGVfbWFnaWNfZ2xvYmAKIAkJZWxzZQogCQkgIGxpYm5hbWVnbG9iPSRsaWJuYW1lCiAJCWZpCi0JCXRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzICYmIG5vY2FzZWdsb2I9YHNob3B0IC1wIG5vY2FzZWdsb2JgCisJCXRlc3QgeWVzID0gIiR3YW50X25vY2FzZWdsb2IiICYmIG5vY2FzZWdsb2I9YHNob3B0IC1wIG5vY2FzZWdsb2JgCiAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbwotCQkgIGlmIHRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzOyB0aGVuCisJCSAgaWYgdGVzdCB5ZXMgPSAiJHdhbnRfbm9jYXNlZ2xvYiI7IHRoZW4KIAkJICAgIHNob3B0IC1zIG5vY2FzZWdsb2IKIAkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKIAkJICAgICRub2Nhc2VnbG9iCkBAIC03ODIyLDI1ICs5MzE3LDI1IEBACiAJCSAgICAgICMgV2UgbWlnaHQgc3RpbGwgZW50ZXIgYW4gZW5kbGVzcyBsb29wLCBzaW5jZSBhIGxpbmsKIAkJICAgICAgIyBsb29wIGNhbiBiZSBjbG9zZWQgd2hpbGUgd2UgZm9sbG93IGxpbmtzLAogCQkgICAgICAjIGJ1dCBzbyB3aGF0PwotCQkgICAgICBwb3RsaWI9IiRwb3RlbnRfbGliIgorCQkgICAgICBwb3RsaWI9JHBvdGVudF9saWIKIAkJICAgICAgd2hpbGUgdGVzdCAtaCAiJHBvdGxpYiIgMj4vZGV2L251bGw7IGRvCi0JCQlwb3RsaWJsaW5rPWBscyAtbGQgJHBvdGxpYiB8ICR7U0VEfSAncy8uKiAtPiAvLydgCisJCQlwb3RsaWJsaW5rPWBscyAtbGQgJHBvdGxpYiB8ICRTRUQgJ3MvLiogLT4gLy8nYAogCQkJY2FzZSAkcG90bGlibGluayBpbgotCQkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBwb3RsaWI9IiRwb3RsaWJsaW5rIjs7Ci0JCQkqKSBwb3RsaWI9YCRFQ0hPICIkcG90bGliIiB8ICRTRUQgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OworCQkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBwb3RsaWI9JHBvdGxpYmxpbms7OworCQkJKikgcG90bGliPWAkRUNITyAiJHBvdGxpYiIgfCAkU0VEICdzfFteL10qJHx8J2AiJHBvdGxpYmxpbmsiOzsKIAkJCWVzYWMKIAkJICAgICAgZG9uZQogCQkgICAgICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIgMj4vZGV2L251bGwgfAogCQkJICRTRUQgLWUgMTBxIHwKIAkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgogCQkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLQkJCWFfZGVwbGliPSIiCisJCQlhX2RlcGxpYj0KIAkJCWJyZWFrIDIKIAkJICAgICAgZmkKIAkJICBkb25lCiAJCWRvbmUKIAkgICAgICBmaQotCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCisJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIjsgdGhlbgogCQlkcm9wcGVkZGVwcz15ZXMKIAkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpbmtlciBwYXRoIGRvZXMgbm90IGhhdmUgcmVhbCBmaWxlIGZvciBsaWJyYXJ5ICRhX2RlcGxpYi4iCkBAIC03ODQ4LDcgKzkzNDMsNyBAQAogCQllY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgogCQllY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCiAJCWVjaG8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCi0JCWlmIHRlc3QgLXogIiRwb3RsaWIiIDsgdGhlbgorCQlpZiB0ZXN0IC16ICIkcG90bGliIjsgdGhlbgogCQkgICRFQ0hPICIqKiogd2l0aCAkbGlibmFtZSBidXQgbm8gY2FuZGlkYXRlcyB3ZXJlIGZvdW5kLiAoLi4uZm9yIGZpbGUgbWFnaWMgdGVzdCkiCiAJCWVsc2UKIAkJICAkRUNITyAiKioqIHdpdGggJGxpYm5hbWUgYW5kIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZXMgcGFzc2VkIGEgZmlsZSBmb3JtYXQgdGVzdCIKQEAgLTc4NzEsMzAgKzkzNjYsMzAgQEAKIAkgICAgLWwqKQogCSAgICAgIGZ1bmNfc3RyaXBuYW1lIC1sICcnICIkYV9kZXBsaWIiCiAJICAgICAgbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0JICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorCSAgICAgIGlmIHRlc3QgeWVzID0gIiRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiOyB0aGVuCiAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgogCQkqIiAkYV9kZXBsaWIgIiopCiAJCSAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLQkJICBhX2RlcGxpYj0iIgorCQkgIGFfZGVwbGliPQogCQkgIDs7CiAJCWVzYWMKIAkgICAgICBmaQotCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCisJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIjsgdGhlbgogCQlsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCiAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCiAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbwotCQkgICAgcG90bGliPSIkcG90ZW50X2xpYiIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKKwkJICAgIHBvdGxpYj0kcG90ZW50X2xpYiAjIHNlZSBzeW1saW5rLWNoZWNrIGFib3ZlIGluIGZpbGVfbWFnaWMgdGVzdAogCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiJHBvdGVudF9saWJcIiIgMj4vZGV2L251bGwgfCAkU0VEIDEwcSB8IFwKIAkJICAgICAgICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCiAJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0JCSAgICAgIGFfZGVwbGliPSIiCisJCSAgICAgIGFfZGVwbGliPQogCQkgICAgICBicmVhayAyCiAJCSAgICBmaQogCQkgIGRvbmUKIAkJZG9uZQogCSAgICAgIGZpCi0JICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KKwkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiOyB0aGVuCiAJCWRyb3BwZWRkZXBzPXllcwogCQllY2hvCiAJCSRFQ0hPICIqKiogV2FybmluZzogbGlua2VyIHBhdGggZG9lcyBub3QgaGF2ZSByZWFsIGZpbGUgZm9yIGxpYnJhcnkgJGFfZGVwbGliLiIKQEAgLTc5MDIsNyArOTM5Nyw3IEBACiAJCWVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCiAJCWVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKIAkJZWNobyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKLQkJaWYgdGVzdCAteiAiJHBvdGxpYiIgOyB0aGVuCisJCWlmIHRlc3QgLXogIiRwb3RsaWIiOyB0aGVuCiAJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGJ1dCBubyBjYW5kaWRhdGVzIHdlcmUgZm91bmQuICguLi5mb3IgcmVnZXggcGF0dGVybiB0ZXN0KSIKIAkJZWxzZQogCQkgICRFQ0hPICIqKiogd2l0aCAkbGlibmFtZSBhbmQgbm9uZSBvZiB0aGUgY2FuZGlkYXRlcyBwYXNzZWQgYSBmaWxlIGZvcm1hdCB0ZXN0IgpAQCAtNzkxOCwxOCArOTQxMywxOCBAQAogCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KIAkgIDs7CiAJbm9uZSB8IHVua25vd24gfCAqKQotCSAgbmV3ZGVwbGlicz0iIgorCSAgbmV3ZGVwbGlicz0KIAkgIHRtcF9kZXBsaWJzPWAkRUNITyAiICRkZXBsaWJzIiB8ICRTRUQgJ3MvIC1sYyQvLzsgcy8gLVtMUl1bXiBdKi8vZydgCi0JICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCi0JICAgIGZvciBpIGluICRwcmVkZXBzICRwb3N0ZGVwcyA7IGRvCisJICBpZiB0ZXN0IHllcyA9ICIkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIjsgdGhlbgorCSAgICBmb3IgaSBpbiAkcHJlZGVwcyAkcG9zdGRlcHM7IGRvCiAJICAgICAgIyBjYW4ndCB1c2UgWHNlZCBiZWxvdywgYmVjYXVzZSAkaSBtaWdodCBjb250YWluICcvJwotCSAgICAgIHRtcF9kZXBsaWJzPWAkRUNITyAiICR0bXBfZGVwbGlicyIgfCAkU0VEICJzLCRpLCwiYAorCSAgICAgIHRtcF9kZXBsaWJzPWAkRUNITyAiICR0bXBfZGVwbGlicyIgfCAkU0VEICJzfCRpfHwiYAogCSAgICBkb25lCiAJICBmaQogCSAgY2FzZSAkdG1wX2RlcGxpYnMgaW4KIAkgICpbIVwJXCBdKikKIAkgICAgZWNobwotCSAgICBpZiB0ZXN0ICJYJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA9ICJYbm9uZSI7IHRoZW4KKwkgICAgaWYgdGVzdCBub25lID0gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCI7IHRoZW4KIAkgICAgICBlY2hvICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBwbGF0Zm9ybS4iCiAJICAgIGVsc2UKIAkgICAgICBlY2hvICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBrbm93biB0byBiZSBzdXBwb3J0ZWQuIgpAQCAtNzk1Myw4ICs5NDQ4LDggQEAKIAkgIDs7CiAJZXNhYwogCi0JaWYgdGVzdCAiJGRyb3BwZWRkZXBzIiA9IHllczsgdGhlbgotCSAgaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXM7IHRoZW4KKwlpZiB0ZXN0IHllcyA9ICIkZHJvcHBlZGRlcHMiOyB0aGVuCisJICBpZiB0ZXN0IHllcyA9ICIkbW9kdWxlIjsgdGhlbgogCSAgICBlY2hvCiAJICAgIGVjaG8gIioqKiBXYXJuaW5nOiBsaWJ0b29sIGNvdWxkIG5vdCBzYXRpc2Z5IGFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IgogCSAgICAkRUNITyAiKioqIGRlcGVuZGVuY2llcyBvZiBtb2R1bGUgJGxpYm5hbWUuICBUaGVyZWZvcmUsIGxpYnRvb2wgd2lsbCBjcmVhdGUiCkBAIC03OTYzLDEyICs5NDU4LDEyIEBACiAJICAgIGlmIHRlc3QgLXogIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCiAJICAgICAgZWNobwogCSAgICAgIGVjaG8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgotCSAgICAgIGVjaG8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCisJICAgICAgZWNobyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyAnbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgogCSAgICAgIGVjaG8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKLQkgICAgICBlY2hvICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKKwkgICAgICBlY2hvICIqKiogJ25tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgogCSAgICBmaQotCSAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KLQkgICAgICBvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgorCSAgICBpZiB0ZXN0IG5vID0gIiRidWlsZF9vbGRfbGlicyI7IHRoZW4KKwkgICAgICBvbGRsaWJzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQKIAkgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCiAJICAgICAgYnVpbGRfb2xkX2xpYnM9eWVzCiAJICAgIGVsc2UKQEAgLTc5NzksMTQgKzk0NzQsMTQgQEAKIAkgICAgZWNobyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKIAkgICAgZWNobyAiKioqIG9yIGlzIGRlY2xhcmVkIHRvIC1kbG9wZW4gaXQuIgogCi0JICAgIGlmIHRlc3QgIiRhbGxvd191bmRlZmluZWQiID0gbm87IHRoZW4KKwkgICAgaWYgdGVzdCBubyA9ICIkYWxsb3dfdW5kZWZpbmVkIjsgdGhlbgogCSAgICAgIGVjaG8KIAkgICAgICBlY2hvICIqKiogU2luY2UgdGhpcyBsaWJyYXJ5IG11c3Qgbm90IGNvbnRhaW4gdW5kZWZpbmVkIHN5bWJvbHMsIgogCSAgICAgIGVjaG8gIioqKiBiZWNhdXNlIGVpdGhlciB0aGUgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCB0aGVtIG9yIgogCSAgICAgIGVjaG8gIioqKiBpdCB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgd2l0aCAtbm8tdW5kZWZpbmVkLCIKIAkgICAgICBlY2hvICIqKiogbGlidG9vbCB3aWxsIG9ubHkgY3JlYXRlIGEgc3RhdGljIHZlcnNpb24gb2YgaXQuIgotCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgotCQlvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgorCSAgICAgIGlmIHRlc3Qgbm8gPSAiJGJ1aWxkX29sZF9saWJzIjsgdGhlbgorCQlvbGRsaWJzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQKIAkJYnVpbGRfbGlidG9vbF9saWJzPW1vZHVsZQogCQlidWlsZF9vbGRfbGlicz15ZXMKIAkgICAgICBlbHNlCkBAIC04MDMyLDcgKzk1MjcsNyBAQAogCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCi0gICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCisgICAgICBkZXBsaWJzPSRuZXdfbGlicwogCiAgICAgICAjIEFsbCB0aGUgbGlicmFyeS1zcGVjaWZpYyB2YXJpYWJsZXMgKGluc3RhbGxfbGliZGlyIGlzIHNldCBhYm92ZSkuCiAgICAgICBsaWJyYXJ5X25hbWVzPQpAQCAtODA0MCwyNSArOTUzNSwyNSBAQAogICAgICAgZGxuYW1lPQogCiAgICAgICAjIFRlc3QgYWdhaW4sIHdlIG1heSBoYXZlIGRlY2lkZWQgbm90IHRvIGJ1aWxkIGl0IGFueSBtb3JlCi0gICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgotCSMgUmVtb3ZlICR7d2x9IGluc3RhbmNlcyB3aGVuIGxpbmtpbmcgd2l0aCBsZC4KKyAgICAgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiOyB0aGVuCisJIyBSZW1vdmUgJHdsIGluc3RhbmNlcyB3aGVuIGxpbmtpbmcgd2l0aCBsZC4KIAkjIEZJWE1FOiBzaG91bGQgdGVzdCB0aGUgcmlnaHQgX2NtZHMgdmFyaWFibGUuCiAJY2FzZSAkYXJjaGl2ZV9jbWRzIGluCiAJICAqXCRMRFwgKikgd2w9IDs7CiAgICAgICAgIGVzYWMKLQlpZiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiA9IHllczsgdGhlbgorCWlmIHRlc3QgeWVzID0gIiRoYXJkY29kZV9pbnRvX2xpYnMiOyB0aGVuCiAJICAjIEhhcmRjb2RlIHRoZSBsaWJyYXJ5IHBhdGhzCiAJICBoYXJkY29kZV9saWJkaXJzPQogCSAgZGVwX3JwYXRoPQotCSAgcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCIKLQkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKKwkgIHJwYXRoPSRmaW5hbGl6ZV9ycGF0aAorCSAgdGVzdCByZWxpbmsgPSAiJG9wdF9tb2RlIiB8fCBycGF0aD0kY29tcGlsZV9ycGF0aCRycGF0aAogCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCiAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgogCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgogCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKIAkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0JCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKKwkJICBoYXJkY29kZV9saWJkaXJzPSRsaWJkaXIKIAkJZWxzZQogCQkgICMgSnVzdCBhY2N1bXVsYXRlIHRoZSB1bmlxdWUgbGliZGlycy4KIAkJICBjYXNlICRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBpbgpAQCAtODA4Myw3ICs5NTc4LDcgQEAKIAkgICMgU3Vic3RpdHV0ZSB0aGUgaGFyZGNvZGVkIGxpYmRpcnMgaW50byB0aGUgcnBhdGguCiAJICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKIAkgICAgIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotCSAgICBsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgorCSAgICBsaWJkaXI9JGhhcmRjb2RlX2xpYmRpcnMKIAkgICAgZXZhbCAiZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKIAkgIGZpCiAJICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiICYmIHRlc3QgLW4gIiRwZXJtX3JwYXRoIjsgdGhlbgpAQCAtODA5Nyw4ICs5NTkyLDggQEAKIAkgIHRlc3QgLW4gIiRkZXBfcnBhdGgiICYmIGRlcGxpYnM9IiRkZXBfcnBhdGggJGRlcGxpYnMiCiAJZmkKIAotCXNobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCIKLQl0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCisJc2hsaWJwYXRoPSRmaW5hbGl6ZV9zaGxpYnBhdGgKKwl0ZXN0IHJlbGluayA9ICIkb3B0X21vZGUiIHx8IHNobGlicGF0aD0kY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoCiAJaWYgdGVzdCAtbiAiJHNobGlicGF0aCI7IHRoZW4KIAkgIGV2YWwgIiRzaGxpYnBhdGhfdmFyPSckc2hsaWJwYXRoXCQkc2hsaWJwYXRoX3Zhcic7IGV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKIAlmaQpAQCAtODEwOCwxOSArOTYwMywxOSBAQAogCWV2YWwgbGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIgogCXNldCBkdW1teSAkbGlicmFyeV9uYW1lcwogCXNoaWZ0Ci0JcmVhbG5hbWU9IiQxIgorCXJlYWxuYW1lPSQxCiAJc2hpZnQKIAogCWlmIHRlc3QgLW4gIiRzb25hbWVfc3BlYyI7IHRoZW4KIAkgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKIAllbHNlCi0JICBzb25hbWU9IiRyZWFsbmFtZSIKKwkgIHNvbmFtZT0kcmVhbG5hbWUKIAlmaQogCWlmIHRlc3QgLXogIiRkbG5hbWUiOyB0aGVuCiAJICBkbG5hbWU9JHNvbmFtZQogCWZpCiAKLQlsaWI9IiRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZSIKKwlsaWI9JG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lCiAJbGlua25hbWVzPQogCWZvciBsaW5rCiAJZG8KQEAgLTgxMzQsNyArOTYyOSw3IEBACiAJZGVsZmlsZXM9CiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgJG9wdF9kcnlfcnVuIHx8IGNwICIkZXhwb3J0X3N5bWJvbHMiICIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgotCSAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCisJICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwCiAJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyIKIAlmaQogCkBAIC04MTQzLDMxICs5NjM4LDMxIEBACiAJY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAteiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgogCSAgICAjIGV4cG9ydGluZyB1c2luZyB1c2VyIHN1cHBsaWVkIHN5bWZpbGUKLQkgICAgaWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiICE9IHhFWFBPUlRTOyB0aGVuCisJICAgIGZ1bmNfZGxsX2RlZl9wICIkZXhwb3J0X3N5bWJvbHMiIHx8IHsKIAkgICAgICAjIGFuZCBpdCdzIE5PVCBhbHJlYWR5IGEgLmRlZiBmaWxlLiBNdXN0IGZpZ3VyZSBvdXQKIAkgICAgICAjIHdoaWNoIG9mIHRoZSBnaXZlbiBzeW1ib2xzIGFyZSBkYXRhIHN5bWJvbHMgYW5kIHRhZwogCSAgICAgICMgdGhlbSBhcyBzdWNoLiBTbywgdHJpZ2dlciB1c2Ugb2YgZXhwb3J0X3N5bWJvbHNfY21kcy4KIAkgICAgICAjIGV4cG9ydF9zeW1ib2xzIGdldHMgcmVhc3NpZ25lZCBpbnNpZGUgdGhlICJwcmVwYXJlCiAJICAgICAgIyB0aGUgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzIiBpZiBzdGF0ZW1lbnQsIHNvIHRoZQogCSAgICAgICMgaW5jbHVkZV9leHBzeW1zIGxvZ2ljIHN0aWxsIHdvcmtzLgotCSAgICAgIG9yaWdfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKKwkgICAgICBvcmlnX2V4cG9ydF9zeW1ib2xzPSRleHBvcnRfc3ltYm9scwogCSAgICAgIGV4cG9ydF9zeW1ib2xzPQogCSAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLQkgICAgZmkKKwkgICAgfQogCSAgZmkKIAkgIDs7CiAJZXNhYwogCiAJIyBQcmVwYXJlIHRoZSBsaXN0IG9mIGV4cG9ydGVkIHN5bWJvbHMKIAlpZiB0ZXN0IC16ICIkZXhwb3J0X3N5bWJvbHMiOyB0aGVuCi0JICBpZiB0ZXN0ICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiA9IHllcyB8fCB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCi0JICAgIGZ1bmNfdmVyYm9zZSAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgXGAkbGlibmFtZS5sYSciCi0JICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS5leHAiCisJICBpZiB0ZXN0IHllcyA9ICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8fCB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCisJICAgIGZ1bmNfdmVyYm9zZSAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgJyRsaWJuYW1lLmxhJyIKKwkgICAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZXhwCiAJICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJGV4cG9ydF9zeW1ib2xzCiAJICAgIGNtZHM9JGV4cG9ydF9zeW1ib2xzX2NtZHMKLQkgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCisJICAgIHNhdmVfaWZzPSRJRlM7IElGUz0nficKIAkgICAgZm9yIGNtZDEgaW4gJGNtZHM7IGRvCi0JICAgICAgSUZTPSIkc2F2ZV9pZnMiCisJICAgICAgSUZTPSRzYXZlX2lmcwogCSAgICAgICMgVGFrZSB0aGUgbm9ybWFsIGJyYW5jaCBpZiB0aGUgbm1fZmlsZV9saXN0X3NwZWMgYnJhbmNoCiAJICAgICAgIyBkb2Vzbid0IHdvcmsgb3IgaWYgdG9vbCBjb252ZXJzaW9uIGlzIG5vdCBuZWVkZWQuCiAJICAgICAgY2FzZSAkbm1fZmlsZV9saXN0X3NwZWN+JHRvX3Rvb2xfZmlsZV9jbWQgaW4KQEAgLTgxODEsNyArOTY3Niw3IEBACiAJCSAgdHJ5X25vcm1hbF9icmFuY2g9bm8KIAkJICA7OwogCSAgICAgIGVzYWMKLQkgICAgICBpZiB0ZXN0ICIkdHJ5X25vcm1hbF9icmFuY2giID0geWVzIFwKKwkgICAgICBpZiB0ZXN0IHllcyA9ICIkdHJ5X25vcm1hbF9icmFuY2giIFwKIAkJICYmIHsgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIFwKIAkJICAgICAgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IH0KIAkgICAgICB0aGVuCkBAIC04MTkyLDcgKzk2ODcsNyBAQAogCQlvdXRwdXRfbGE9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAJCXNhdmVfbGlib2Jqcz0kbGlib2JqcwogCQlzYXZlX291dHB1dD0kb3V0cHV0Ci0JCW91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5ubQorCQlvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS5ubQogCQlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKIAkJbGlib2Jqcz0kbm1fZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAJCWZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKQEAgLTgyMTUsOCArOTcxMCw4IEBACiAJCWJyZWFrCiAJICAgICAgZmkKIAkgICAgZG9uZQotCSAgICBJRlM9IiRzYXZlX2lmcyIKLQkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiOyB0aGVuCisJICAgIElGUz0kc2F2ZV9pZnMKKwkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAmJiB0ZXN0IDogIT0gIiRza2lwcGVkX2V4cG9ydCI7IHRoZW4KIAkgICAgICBmdW5jX3Nob3dfZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkZXhwb3J0X3N5bWJvbHMiID4gIiR7ZXhwb3J0X3N5bWJvbHN9VCInCiAJICAgICAgZnVuY19zaG93X2V2YWwgJyRNViAiJHtleHBvcnRfc3ltYm9sc31UIiAiJGV4cG9ydF9zeW1ib2xzIicKIAkgICAgZmkKQEAgLTgyMjQsMTYgKzk3MTksMTYgQEAKIAlmaQogCiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgotCSAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCi0JICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKKwkgIHRtcF9leHBvcnRfc3ltYm9scz0kZXhwb3J0X3N5bWJvbHMKKwkgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9JG9yaWdfZXhwb3J0X3N5bWJvbHMKIAkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwogCWZpCiAKLQlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgorCWlmIHRlc3QgOiAhPSAiJHNraXBwZWRfZXhwb3J0IiAmJiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KIAkgICMgVGhlIGdpdmVuIGV4cG9ydHNfc3ltYm9scyBmaWxlIGhhcyB0byBiZSBmaWx0ZXJlZCwgc28gZmlsdGVyIGl0LgotCSAgZnVuY192ZXJib3NlICJmaWx0ZXIgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIHRvIHRhZyBEQVRBIGV4cG9ydHMiCisJICBmdW5jX3ZlcmJvc2UgImZpbHRlciBzeW1ib2wgbGlzdCBmb3IgJyRsaWJuYW1lLmxhJyB0byB0YWcgREFUQSBleHBvcnRzIgogCSAgIyBGSVhNRTogJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIHBvdGVudGlhbGx5IGNvbnRhaW5zIGxvdHMgb2YKLQkgICMgJ3MnIGNvbW1hbmRzIHdoaWNoIG5vdCBhbGwgc2VkcyBjYW4gaGFuZGxlLiBHTlUgc2VkIHNob3VsZCBiZSBmaW5lCisJICAjICdzJyBjb21tYW5kcywgd2hpY2ggbm90IGFsbCBzZWRzIGNhbiBoYW5kbGUuIEdOVSBzZWQgc2hvdWxkIGJlIGZpbmUKIAkgICMgdGhvdWdoLiBBbHNvLCB0aGUgZmlsdGVyIHNjYWxlcyBzdXBlcmxpbmVhcmx5IHdpdGggdGhlIG51bWJlciBvZgogCSAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKIAkgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCkBAIC04MjUyLDExICs5NzQ3LDExIEBACiAJICAgIDs7CiAJICBlc2FjCiAJZG9uZQotCWRlcGxpYnM9IiR0bXBfZGVwbGlicyIKKwlkZXBsaWJzPSR0bXBfZGVwbGlicwogCiAJaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgogCSAgaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIiAmJgotCSAgICB0ZXN0ICIkY29tcGlsZXJfbmVlZHNfb2JqZWN0IiA9IHllcyAmJgorCSAgICB0ZXN0IHllcyA9ICIkY29tcGlsZXJfbmVlZHNfb2JqZWN0IiAmJgogCSAgICB0ZXN0IC16ICIkbGlib2JqcyI7IHRoZW4KIAkgICAgIyBleHRyYWN0IHRoZSBhcmNoaXZlcywgc28gd2UgaGF2ZSBvYmplY3RzIHRvIGxpc3QuCiAJICAgICMgVE9ETzogY291bGQgb3B0aW1pemUgdGhpcyB0byBqdXN0IGV4dHJhY3Qgb25lIGFyY2hpdmUuCkBAIC04MjY3LDcgKzk3NjIsNyBAQAogCSAgICBldmFsIGxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAkgIGVsc2UKLQkgICAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKwkgICAgZ2VudG9wPSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14CiAJICAgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCkBAIC04Mjc2LDE4ICs5NzcxLDE4IEBACiAJICBmaQogCWZpCiAKLQlpZiB0ZXN0ICIkdGhyZWFkX3NhZmUiID0geWVzICYmIHRlc3QgLW4gIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWMiOyB0aGVuCisJaWYgdGVzdCB5ZXMgPSAiJHRocmVhZF9zYWZlIiAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhlbgogCSAgZXZhbCBmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiCiAJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZmxhZyIKIAlmaQogCiAJIyBNYWtlIGEgYmFja3VwIG9mIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IHdoZW4gcmVsaW5raW5nCi0JaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorCWlmIHRlc3QgcmVsaW5rID0gIiRvcHRfbW9kZSI7IHRoZW4KIAkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VSAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSknIHx8IGV4aXQgJD8KIAlmaQogCiAJIyBEbyBlYWNoIG9mIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgotCWlmIHRlc3QgIiRtb2R1bGUiID0geWVzICYmIHRlc3QgLW4gIiRtb2R1bGVfY21kcyIgOyB0aGVuCisJaWYgdGVzdCB5ZXMgPSAiJG1vZHVsZSIgJiYgdGVzdCAtbiAiJG1vZHVsZV9jbWRzIjsgdGhlbgogCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkbW9kdWxlX2V4cHN5bV9jbWRzIjsgdGhlbgogCSAgICBldmFsIHRlc3RfY21kcz1cIiRtb2R1bGVfZXhwc3ltX2NtZHNcIgogCSAgICBjbWRzPSRtb2R1bGVfZXhwc3ltX2NtZHMKQEAgLTgzMDUsNyArOTgwMCw3IEBACiAJICBmaQogCWZpCiAKLQlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmCisJaWYgdGVzdCA6ICE9ICIkc2tpcHBlZF9leHBvcnQiICYmCiAJICAgZnVuY19sZW4gIiAkdGVzdF9jbWRzIiAmJgogCSAgIGxlbj0kZnVuY19sZW5fcmVzdWx0ICYmCiAJICAgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCkBAIC04MzM4LDggKzk4MzMsOCBAQAogCSAgbGFzdF9yb2JqPQogCSAgaz0xCiAKLQkgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rc2NyaXB0CisJICBpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0IDogIT0gIiRza2lwcGVkX2V4cG9ydCIgJiYgdGVzdCB5ZXMgPSAiJHdpdGhfZ251X2xkIjsgdGhlbgorCSAgICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS5sbmtzY3JpcHQKIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBHTlUgbGQgc2NyaXB0OiAkb3V0cHV0IgogCSAgICBlY2hvICdJTlBVVCAoJyA+ICRvdXRwdXQKIAkgICAgZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzCkBAIC04MzUxLDE0ICs5ODQ2LDE0IEBACiAJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKIAkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCiAJICAgIG91dHB1dD0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0Ci0JICBlbGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiWCRmaWxlX2xpc3Rfc3BlYyIgIT0gWDsgdGhlbgotCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rCisJICBlbGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgOiAhPSAiJHNraXBwZWRfZXhwb3J0IiAmJiB0ZXN0IC1uICIkZmlsZV9saXN0X3NwZWMiOyB0aGVuCisJICAgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLmxuawogCSAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIGxpbmtlciBpbnB1dCBmaWxlIGxpc3Q6ICRvdXRwdXQiCiAJICAgIDogPiAkb3V0cHV0CiAJICAgIHNldCB4ICRzYXZlX2xpYm9ianMKIAkgICAgc2hpZnQKIAkgICAgZmlyc3RvYmo9Ci0JICAgIGlmIHRlc3QgIiRjb21waWxlcl9uZWVkc19vYmplY3QiID0geWVzOyB0aGVuCisJICAgIGlmIHRlc3QgeWVzID0gIiRjb21waWxlcl9uZWVkc19vYmplY3QiOyB0aGVuCiAJICAgICAgZmlyc3RvYmo9IiQxICIKIAkgICAgICBzaGlmdAogCSAgICBmaQpAQCAtODM3Myw3ICs5ODY4LDcgQEAKIAkgIGVsc2UKIAkgICAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyI7IHRoZW4KIAkgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLi4uIgotCSAgICAgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAorCSAgICAgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSRrLiRvYmpleHQKIAkgICAgICBldmFsIHRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiCiAJICAgICAgZnVuY19sZW4gIiAkdGVzdF9jbWRzIgogCSAgICAgIGxlbjA9JGZ1bmNfbGVuX3Jlc3VsdApAQCAtODM4NSwxMyArOTg4MCwxMyBAQAogCQlmdW5jX2xlbiAiICRvYmoiCiAJCWZ1bmNfYXJpdGggJGxlbiArICRmdW5jX2xlbl9yZXN1bHQKIAkJbGVuPSRmdW5jX2FyaXRoX3Jlc3VsdAotCQlpZiB0ZXN0ICJYJG9iamxpc3QiID0gWCB8fAorCQlpZiB0ZXN0IC16ICIkb2JqbGlzdCIgfHwKIAkJICAgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iOyB0aGVuCiAJCSAgZnVuY19hcHBlbmQgb2JqbGlzdCAiICRvYmoiCiAJCWVsc2UKIAkJICAjIFRoZSBjb21tYW5kICR0ZXN0X2NtZHMgaXMgYWxtb3N0IHRvbyBsb25nLCBhZGQgYQogCQkgICMgY29tbWFuZCB0byB0aGUgcXVldWUuCi0JCSAgaWYgdGVzdCAiJGsiIC1lcSAxIDsgdGhlbgorCQkgIGlmIHRlc3QgMSAtZXEgIiRrIjsgdGhlbgogCQkgICAgIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KIAkJICAgIHJlbG9hZF9vYmpzPSRvYmpsaXN0CiAJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIKQEAgLTg0MDEsMTAgKzk4OTYsMTAgQEAKIAkJICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgogCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiCiAJCSAgZmkKLQkJICBsYXN0X3JvYmo9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKKwkJICBsYXN0X3JvYmo9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0kay4kb2JqZXh0CiAJCSAgZnVuY19hcml0aCAkayArIDEKIAkJICBrPSRmdW5jX2FyaXRoX3Jlc3VsdAotCQkgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAorCQkgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSRrLiRvYmpleHQKIAkJICBvYmpsaXN0PSIgJG9iaiIKIAkJICBmdW5jX2xlbiAiICRsYXN0X3JvYmoiCiAJCSAgZnVuY19hcml0aCAkbGVuMCArICRmdW5jX2xlbl9yZXN1bHQKQEAgLTg0MTYsOSArOTkxMSw5IEBACiAJICAgICAgIyBmaWxlcyB3aWxsIGxpbmsgaW4gdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCiAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CiAJICAgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCi0JICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiCisJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHMkcmVsb2FkX2NtZHNcIgogCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCi0JICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiCisJICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc35cJFJNICRsYXN0X3JvYmpcIgogCSAgICAgIGZpCiAJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgogCkBAIC04NDI2LDkgKzk5MjEsOSBAQAogCSAgICAgIG91dHB1dD0KIAkgICAgZmkKIAotCSAgICBpZiAke3NraXBwZWRfZXhwb3J0LWZhbHNlfTsgdGhlbgotCSAgICAgIGZ1bmNfdmVyYm9zZSAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgXGAkbGlibmFtZS5sYSciCi0JICAgICAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmV4cCIKKwkgICAgJHtza2lwcGVkX2V4cG9ydC1mYWxzZX0gJiYgeworCSAgICAgIGZ1bmNfdmVyYm9zZSAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgJyRsaWJuYW1lLmxhJyIKKwkgICAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5leHAKIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRleHBvcnRfc3ltYm9scwogCSAgICAgIGxpYm9ianM9JG91dHB1dAogCSAgICAgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIGNyZWF0ZSB0aGUgZXhwb3J0IGZpbGUuCkBAIC04NDM3LDE2ICs5OTMyLDE2IEBACiAJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KIAkJZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKIAkgICAgICBmaQotCSAgICBmaQorCSAgICB9CiAKIAkgICAgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYKIAkgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIGEgdGVtcG9yYXJ5IHJlbG9hZGFibGUgb2JqZWN0IGZpbGU6ICRvdXRwdXQiCiAKIAkgICAgIyBMb29wIHRocm91Z2ggdGhlIGNvbW1hbmRzIGdlbmVyYXRlZCBhYm92ZSBhbmQgZXhlY3V0ZSB0aGVtLgotCSAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKKwkgICAgc2F2ZV9pZnM9JElGUzsgSUZTPSd+JwogCSAgICBmb3IgY21kIGluICRjb25jYXRfY21kczsgZG8KLQkgICAgICBJRlM9IiRzYXZlX2lmcyIKLQkgICAgICAkb3B0X3NpbGVudCB8fCB7CisJICAgICAgSUZTPSRzYXZlX2lmcworCSAgICAgICRvcHRfcXVpZXQgfHwgewogCQkgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJGNtZCIKIAkJICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCiAJICAgICAgfQpAQCAtODQ1NCw3ICs5OTQ5LDcgQEAKIAkJbHRfZXhpdD0kPwogCiAJCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotCQlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCisJCWlmIHRlc3QgcmVsaW5rID0gIiRvcHRfbW9kZSI7IHRoZW4KIAkJICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAogCQkgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKIAkJICAgICRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCkBAIC04NDYzLDcgKzk5NTgsNyBAQAogCQlleGl0ICRsdF9leGl0CiAJICAgICAgfQogCSAgICBkb25lCi0JICAgIElGUz0iJHNhdmVfaWZzIgorCSAgICBJRlM9JHNhdmVfaWZzCiAKIAkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAmJiAke3NraXBwZWRfZXhwb3J0LWZhbHNlfTsgdGhlbgogCSAgICAgIGZ1bmNfc2hvd19ldmFsICckRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRleHBvcnRfc3ltYm9scyIgPiAiJHtleHBvcnRfc3ltYm9sc31UIicKQEAgLTg0NzEsMTggKzk5NjYsMTggQEAKIAkgICAgZmkKIAkgIGZpCiAKLSAgICAgICAgICBpZiAke3NraXBwZWRfZXhwb3J0LWZhbHNlfTsgdGhlbgorICAgICAgICAgICR7c2tpcHBlZF9leHBvcnQtZmFsc2V9ICYmIHsKIAkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgotCSAgICAgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgotCSAgICAgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgorCSAgICAgIHRtcF9leHBvcnRfc3ltYm9scz0kZXhwb3J0X3N5bWJvbHMKKwkgICAgICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSRvcmlnX2V4cG9ydF9zeW1ib2xzCiAJICAgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCiAJICAgIGZpCiAKIAkgICAgaWYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCiAJICAgICAgIyBUaGUgZ2l2ZW4gZXhwb3J0c19zeW1ib2xzIGZpbGUgaGFzIHRvIGJlIGZpbHRlcmVkLCBzbyBmaWx0ZXIgaXQuCi0JICAgICAgZnVuY192ZXJib3NlICJmaWx0ZXIgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIHRvIHRhZyBEQVRBIGV4cG9ydHMiCisJICAgICAgZnVuY192ZXJib3NlICJmaWx0ZXIgc3ltYm9sIGxpc3QgZm9yICckbGlibmFtZS5sYScgdG8gdGFnIERBVEEgZXhwb3J0cyIKIAkgICAgICAjIEZJWE1FOiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgcG90ZW50aWFsbHkgY29udGFpbnMgbG90cyBvZgotCSAgICAgICMgJ3MnIGNvbW1hbmRzIHdoaWNoIG5vdCBhbGwgc2VkcyBjYW4gaGFuZGxlLiBHTlUgc2VkIHNob3VsZCBiZSBmaW5lCisJICAgICAgIyAncycgY29tbWFuZHMsIHdoaWNoIG5vdCBhbGwgc2VkcyBjYW4gaGFuZGxlLiBHTlUgc2VkIHNob3VsZCBiZSBmaW5lCiAJICAgICAgIyB0aG91Z2guIEFsc28sIHRoZSBmaWx0ZXIgc2NhbGVzIHN1cGVybGluZWFybHkgd2l0aCB0aGUgbnVtYmVyIG9mCiAJICAgICAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKIAkgICAgICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgpAQCAtODQ5MSw3ICs5OTg2LDcgQEAKIAkgICAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwogCSAgICBmaQotCSAgZmkKKwkgIH0KIAogCSAgbGlib2Jqcz0kb3V0cHV0CiAJICAjIFJlc3RvcmUgdGhlIHZhbHVlIG9mIG91dHB1dC4KQEAgLTg1MDUsNyArMTAwMDAsNyBAQAogCSAgIyB2YWx1ZSBvZiAkbGlib2JqcyBmb3IgcGllY2V3aXNlIGxpbmtpbmcuCiAKIAkgICMgRG8gZWFjaCBvZiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KLQkgIGlmIHRlc3QgIiRtb2R1bGUiID0geWVzICYmIHRlc3QgLW4gIiRtb2R1bGVfY21kcyIgOyB0aGVuCisJICBpZiB0ZXN0IHllcyA9ICIkbW9kdWxlIiAmJiB0ZXN0IC1uICIkbW9kdWxlX2NtZHMiOyB0aGVuCiAJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJG1vZHVsZV9leHBzeW1fY21kcyI7IHRoZW4KIAkgICAgICBjbWRzPSRtb2R1bGVfZXhwc3ltX2NtZHMKIAkgICAgZWxzZQpAQCAtODUyNyw3ICsxMDAyMiw3IEBACiAKIAkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KLQkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCisJICBnZW50b3A9JG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgKIAkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRkbHByZWZpbGVzCkBAIC04NTM1LDExICsxMDAzMCwxMiBAQAogCSAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAlmaQogCi0Jc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCisJc2F2ZV9pZnM9JElGUzsgSUZTPSd+JwogCWZvciBjbWQgaW4gJGNtZHM7IGRvCi0JICBJRlM9IiRzYXZlX2lmcyIKKwkgIElGUz0kc3AkbmwKIAkgIGV2YWwgY21kPVwiJGNtZFwiCi0JICAkb3B0X3NpbGVudCB8fCB7CisJICBJRlM9JHNhdmVfaWZzCisJICAkb3B0X3F1aWV0IHx8IHsKIAkgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkY21kIgogCSAgICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCiAJICB9CkBAIC04NTQ3LDcgKzEwMDQzLDcgQEAKIAkgICAgbHRfZXhpdD0kPwogCiAJICAgICMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotCSAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCisJICAgIGlmIHRlc3QgcmVsaW5rID0gIiRvcHRfbW9kZSI7IHRoZW4KIAkgICAgICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAogCSAgICAgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKIAkJJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKQEAgLTg1NTYsMTAgKzEwMDUyLDEwIEBACiAJICAgIGV4aXQgJGx0X2V4aXQKIAkgIH0KIAlkb25lCi0JSUZTPSIkc2F2ZV9pZnMiCisJSUZTPSRzYXZlX2lmcwogCiAJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorCWlmIHRlc3QgcmVsaW5rID0gIiRvcHRfbW9kZSI7IHRoZW4KIAkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSknIHx8IGV4aXQgJD8KIAogCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgpAQCAtODU3OSwzOSArMTAwNzUsMzkgQEAKIAlkb25lCiAKIAkjIElmIC1tb2R1bGUgb3IgLWV4cG9ydC1keW5hbWljIHdhcyBzcGVjaWZpZWQsIHNldCB0aGUgZGxuYW1lLgotCWlmIHRlc3QgIiRtb2R1bGUiID0geWVzIHx8IHRlc3QgIiRleHBvcnRfZHluYW1pYyIgPSB5ZXM7IHRoZW4KKwlpZiB0ZXN0IHllcyA9ICIkbW9kdWxlIiB8fCB0ZXN0IHllcyA9ICIkZXhwb3J0X2R5bmFtaWMiOyB0aGVuCiAJICAjIE9uIGFsbCBrbm93biBvcGVyYXRpbmcgc3lzdGVtcywgdGhlc2UgYXJlIGlkZW50aWNhbC4KLQkgIGRsbmFtZT0iJHNvbmFtZSIKKwkgIGRsbmFtZT0kc29uYW1lCiAJZmkKICAgICAgIGZpCiAgICAgICA7OwogCiAgICAgb2JqKQotICAgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwgdGVzdCAiJGRsc2VsZiIgIT0gbm87IHRoZW4KLQlmdW5jX3dhcm5pbmcgIlxgLWRsb3BlbicgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKKyAgICAgIGlmIHRlc3QgLW4gIiRkbGZpbGVzJGRscHJlZmlsZXMiIHx8IHRlc3Qgbm8gIT0gIiRkbHNlbGYiOyB0aGVuCisJZnVuY193YXJuaW5nICInLWRsb3BlbicgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKICAgICAgIGZpCiAKICAgICAgIGNhc2UgIiAkZGVwbGlicyIgaW4KICAgICAgICpcIC1sKiB8ICpcIC1MKikKLQlmdW5jX3dhcm5pbmcgIlxgLWwnIGFuZCBcYC1MJyBhcmUgaWdub3JlZCBmb3Igb2JqZWN0cyIgOzsKKwlmdW5jX3dhcm5pbmcgIictbCcgYW5kICctTCcgYXJlIGlnbm9yZWQgZm9yIG9iamVjdHMiIDs7CiAgICAgICBlc2FjCiAKICAgICAgIHRlc3QgLW4gIiRycGF0aCIgJiYgXAotCWZ1bmNfd2FybmluZyAiXGAtcnBhdGgnIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiCisJZnVuY193YXJuaW5nICInLXJwYXRoJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgogCiAgICAgICB0ZXN0IC1uICIkeHJwYXRoIiAmJiBcCi0JZnVuY193YXJuaW5nICJcYC1SJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgorCWZ1bmNfd2FybmluZyAiJy1SJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgogCiAgICAgICB0ZXN0IC1uICIkdmluZm8iICYmIFwKLQlmdW5jX3dhcm5pbmcgIlxgLXZlcnNpb24taW5mbycgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKKwlmdW5jX3dhcm5pbmcgIictdmVyc2lvbi1pbmZvJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgogCiAgICAgICB0ZXN0IC1uICIkcmVsZWFzZSIgJiYgXAotCWZ1bmNfd2FybmluZyAiXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKKwlmdW5jX3dhcm5pbmcgIictcmVsZWFzZScgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKIAogICAgICAgY2FzZSAkb3V0cHV0IGluCiAgICAgICAqLmxvKQogCXRlc3QgLW4gIiRvYmpzJG9sZF9kZXBsaWJzIiAmJiBcCi0JICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgYnVpbGQgbGlicmFyeSBvYmplY3QgXGAkb3V0cHV0JyBmcm9tIG5vbi1saWJ0b29sIG9iamVjdHMiCisJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgYnVpbGQgbGlicmFyeSBvYmplY3QgJyRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyIKIAogCWxpYm9iaj0kb3V0cHV0CiAJZnVuY19sbzJvICIkbGlib2JqIgpAQCAtODYxOSw3ICsxMDExNSw3IEBACiAJOzsKICAgICAgICopCiAJbGlib2JqPQotCW9iaj0iJG91dHB1dCIKKwlvYmo9JG91dHB1dAogCTs7CiAgICAgICBlc2FjCiAKQEAgLTg2MzIsMTcgKzEwMTI4LDE5IEBACiAgICAgICAjIHRoZSBleHRyYWN0aW9uLgogICAgICAgcmVsb2FkX2NvbnZfb2Jqcz0KICAgICAgIGdlbnRvcD0KLSAgICAgICMgcmVsb2FkX2NtZHMgcnVucyAkTEQgZGlyZWN0bHksIHNvIGxldCB1cyBnZXQgcmlkIG9mCi0gICAgICAjIC1XbCBmcm9tIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIGFuZCBob3BlIHdlIGNhbiBnZXQgYnkgd2l0aAotICAgICAgIyB0dXJuaW5nIGNvbW1hIGludG8gc3BhY2UuLgotICAgICAgd2w9Ci0KKyAgICAgICMgaWYgcmVsb2FkX2NtZHMgcnVucyAkTEQgZGlyZWN0bHksIGdldCByaWQgb2YgLVdsIGZyb20KKyAgICAgICMgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMgYW5kIGhvcGUgd2UgY2FuIGdldCBieSB3aXRoIHR1cm5pbmcgY29tbWEKKyAgICAgICMgaW50byBzcGFjZS4KKyAgICAgIGNhc2UgJHJlbG9hZF9jbWRzIGluCisgICAgICAgICpcJExEW1wgXCRdKikgd2w9IDs7CisgICAgICBlc2FjCiAgICAgICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCiAJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgogCSAgZXZhbCB0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0JICByZWxvYWRfY29udl9vYmpzPSRyZWxvYWRfb2Jqc1wgYCRFQ0hPICIkdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3MiIHwgJFNFRCAnc3wsfCB8ZydgCisJICB0ZXN0IC1uICIkd2wiIHx8IHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPWAkRUNITyAiJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRTRUQgJ3N8LHwgfGcnYAorCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcICR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncwogCWVsc2UKLQkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvYmp9eCIKKwkgIGdlbnRvcD0kb3V0cHV0X29iamRpci8ke29ian14CiAJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKQEAgLTg2NTEsMTIgKzEwMTQ5LDEyIEBACiAgICAgICBmaQogCiAgICAgICAjIElmIHdlJ3JlIG5vdCBidWlsZGluZyBzaGFyZWQsIHdlIG5lZWQgdG8gdXNlIG5vbl9waWNfb2JqcwotICAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIGxpYm9ianM9IiRub25fcGljX29iamVjdHMiCisgICAgICB0ZXN0IHllcyA9ICIkYnVpbGRfbGlidG9vbF9saWJzIiB8fCBsaWJvYmpzPSRub25fcGljX29iamVjdHMKIAogICAgICAgIyBDcmVhdGUgdGhlIG9sZC1zdHlsZSBvYmplY3QuCi0gICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAvXC5saWIkL2Q7ICRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKKyAgICAgIHJlbG9hZF9vYmpzPSRvYmpzJG9sZF9kZXBsaWJzJyAnYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4kbGliZXh0JC9kOyAvXC5saWIkL2Q7ICRsbzJvIiB8ICROTDJTUGAnICckcmVsb2FkX2NvbnZfb2JqcwogCi0gICAgICBvdXRwdXQ9IiRvYmoiCisgICAgICBvdXRwdXQ9JG9iagogICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRyZWxvYWRfY21kcyIgJ2V4aXQgJD8nCiAKICAgICAgICMgRXhpdCBpZiB3ZSBhcmVuJ3QgZG9pbmcgYSBsaWJyYXJ5IG9iamVjdCBmaWxlLgpAQCAtODY2OCw3ICsxMDE2Niw3IEBACiAJZXhpdCAkRVhJVF9TVUNDRVNTCiAgICAgICBmaQogCi0gICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KKyAgICAgIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiIHx8IHsKIAlpZiB0ZXN0IC1uICIkZ2VudG9wIjsgdGhlbgogCSAgZnVuY19zaG93X2V2YWwgJyR7Uk19ciAiJGdlbnRvcCInCiAJZmkKQEAgLTg2NzgsMTIgKzEwMTc2LDEyIEBACiAJIyAkc2hvdyAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIgogCSMgJG9wdF9kcnlfcnVuIHx8IGV2YWwgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIgfHwgZXhpdCAkPwogCWV4aXQgJEVYSVRfU1VDQ0VTUwotICAgICAgZmkKKyAgICAgIH0KIAotICAgICAgaWYgdGVzdCAtbiAiJHBpY19mbGFnIiB8fCB0ZXN0ICIkcGljX21vZGUiICE9IGRlZmF1bHQ7IHRoZW4KKyAgICAgIGlmIHRlc3QgLW4gIiRwaWNfZmxhZyIgfHwgdGVzdCBkZWZhdWx0ICE9ICIkcGljX21vZGUiOyB0aGVuCiAJIyBPbmx5IGRvIGNvbW1hbmRzIGlmIHdlIHJlYWxseSBoYXZlIGRpZmZlcmVudCBQSUMgb2JqZWN0cy4KIAlyZWxvYWRfb2Jqcz0iJGxpYm9ianMgJHJlbG9hZF9jb252X29ianMiCi0Jb3V0cHV0PSIkbGlib2JqIgorCW91dHB1dD0kbGlib2JqCiAJZnVuY19leGVjdXRlX2NtZHMgIiRyZWxvYWRfY21kcyIgJ2V4aXQgJD8nCiAgICAgICBmaQogCkBAIC04NzAwLDE2ICsxMDE5OCwxNCBAQAogCSAgICAgICAgICBvdXRwdXQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC5leGU7OwogICAgICAgZXNhYwogICAgICAgdGVzdCAtbiAiJHZpbmZvIiAmJiBcCi0JZnVuY193YXJuaW5nICJcYC12ZXJzaW9uLWluZm8nIGlzIGlnbm9yZWQgZm9yIHByb2dyYW1zIgorCWZ1bmNfd2FybmluZyAiJy12ZXJzaW9uLWluZm8nIGlzIGlnbm9yZWQgZm9yIHByb2dyYW1zIgogCiAgICAgICB0ZXN0IC1uICIkcmVsZWFzZSIgJiYgXAotCWZ1bmNfd2FybmluZyAiXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgcHJvZ3JhbXMiCisJZnVuY193YXJuaW5nICInLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIHByb2dyYW1zIgogCi0gICAgICB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXMgXAotICAgICAgICAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0gdW5rbm93biBcCi0JJiYgdGVzdCAiJGRsb3Blbl9zZWxmIiA9IHVua25vd24gXAotCSYmIHRlc3QgIiRkbG9wZW5fc2VsZl9zdGF0aWMiID0gdW5rbm93biAmJiBcCi0JICBmdW5jX3dhcm5pbmcgIlxgTFRfSU5JVChbZGxvcGVuXSknIG5vdCB1c2VkLiBBc3N1bWluZyBubyBkbG9wZW4gc3VwcG9ydC4iCisgICAgICAkcHJlbG9hZCBcCisJJiYgdGVzdCB1bmtub3duLHVua25vd24sdW5rbm93biA9ICIkZGxvcGVuX3N1cHBvcnQsJGRsb3Blbl9zZWxmLCRkbG9wZW5fc2VsZl9zdGF0aWMiIFwKKwkmJiBmdW5jX3dhcm5pbmcgIidMVF9JTklUKFtkbG9wZW5dKScgbm90IHVzZWQuIEFzc3VtaW5nIG5vIGRsb3BlbiBzdXBwb3J0LiIKIAogICAgICAgY2FzZSAkaG9zdCBpbgogICAgICAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQpAQCAtODcyMywxMSArMTAyMTksMTEgQEAKICAgICAgICotKi1kYXJ3aW4qKQogCSMgRG9uJ3QgYWxsb3cgbGF6eSBsaW5raW5nLCBpdCBicmVha3MgQysrIGdsb2JhbCBjb25zdHJ1Y3RvcnMKIAkjIEJ1dCBpcyBzdXBwb3NlZGx5IGZpeGVkIG9uIDEwLjQgb3IgbGF0ZXIgKHlheSEpLgotCWlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KKwlpZiB0ZXN0IENYWCA9ICIkdGFnbmFtZSI7IHRoZW4KIAkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KIAkgICAgMTAuWzAxMjNdKQotCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKLQkgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgorCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR3bC1iaW5kX2F0X2xvYWQiCisJICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR3bC1iaW5kX2F0X2xvYWQiCiAJICAgIDs7CiAJICBlc2FjCiAJZmkKQEAgLTg3NjMsNyArMTAyNTksNyBAQAogCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCi0gICAgICBjb21waWxlX2RlcGxpYnM9IiRuZXdfbGlicyIKKyAgICAgIGNvbXBpbGVfZGVwbGlicz0kbmV3X2xpYnMKIAogCiAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkY29tcGlsZV9kZXBsaWJzIgpAQCAtODc4Nyw3ICsxMDI4Myw3IEBACiAJaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCiAJICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KIAkgICAgaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0JICAgICAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKKwkgICAgICBoYXJkY29kZV9saWJkaXJzPSRsaWJkaXIKIAkgICAgZWxzZQogCSAgICAgICMgSnVzdCBhY2N1bXVsYXRlIHRoZSB1bmlxdWUgbGliZGlycy4KIAkgICAgICBjYXNlICRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBpbgpAQCAtODgxMCw3ICsxMDMwNiw3IEBACiAJZmkKIAljYXNlICRob3N0IGluCiAJKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKLQkgIHRlc3RiaW5kaXI9YCR7RUNIT30gIiRsaWJkaXIiIHwgJHtTRUR9IC1lICdzKi9saWIkKi9iaW4qJ2AKKwkgIHRlc3RiaW5kaXI9YCRFQ0hPICIkbGliZGlyIiB8ICRTRUQgLWUgJ3MqL2xpYiQqL2JpbionYAogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokbGliZGlyOiIqKSA7OwogCSAgOjopIGRsbHNlYXJjaHBhdGg9JGxpYmRpcjs7CkBAIC04ODI3LDEwICsxMDMyMywxMCBAQAogICAgICAgIyBTdWJzdGl0dXRlIHRoZSBoYXJkY29kZWQgbGliZGlycyBpbnRvIHRoZSBycGF0aC4KICAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgogCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLQlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgorCWxpYmRpcj0kaGFyZGNvZGVfbGliZGlycwogCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgogICAgICAgZmkKLSAgICAgIGNvbXBpbGVfcnBhdGg9IiRycGF0aCIKKyAgICAgIGNvbXBpbGVfcnBhdGg9JHJwYXRoCiAKICAgICAgIHJwYXRoPQogICAgICAgaGFyZGNvZGVfbGliZGlycz0KQEAgLTg4MzgsNyArMTAzMzQsNyBAQAogCWlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgogCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCiAJICAgIGlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotCSAgICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCisJICAgICAgaGFyZGNvZGVfbGliZGlycz0kbGliZGlyCiAJICAgIGVsc2UKIAkgICAgICAjIEp1c3QgYWNjdW11bGF0ZSB0aGUgdW5pcXVlIGxpYmRpcnMuCiAJICAgICAgY2FzZSAkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgaW4KQEAgLTg4NjMsNDUgKzEwMzU5LDQzIEBACiAgICAgICAjIFN1YnN0aXR1dGUgdGhlIGhhcmRjb2RlZCBsaWJkaXJzIGludG8gdGhlIHJwYXRoLgogICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCiAJIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotCWxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCisJbGliZGlyPSRoYXJkY29kZV9saWJkaXJzCiAJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCiAgICAgICBmaQotICAgICAgZmluYWxpemVfcnBhdGg9IiRycGF0aCIKKyAgICAgIGZpbmFsaXplX3JwYXRoPSRycGF0aAogCi0gICAgICBpZiB0ZXN0IC1uICIkbGlib2JqcyIgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgorICAgICAgaWYgdGVzdCAtbiAiJGxpYm9ianMiICYmIHRlc3QgeWVzID0gIiRidWlsZF9vbGRfbGlicyI7IHRoZW4KIAkjIFRyYW5zZm9ybSBhbGwgdGhlIGxpYnJhcnkgb2JqZWN0cyBpbnRvIHN0YW5kYXJkIG9iamVjdHMuCiAJY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCiAJZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKICAgICAgIGZpCiAKLSAgICAgIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICIkb3V0cHV0bmFtZSIgIkBQUk9HUkFNQCIgIm5vIgorICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRvdXRwdXRuYW1lIiAiQFBST0dSQU1AIiBmYWxzZQogCiAgICAgICAjIHRlbXBsYXRlIHByZWxpbmtpbmcgc3RlcAogICAgICAgaWYgdGVzdCAtbiAiJHByZWxpbmtfY21kcyI7IHRoZW4KIAlmdW5jX2V4ZWN1dGVfY21kcyAiJHByZWxpbmtfY21kcyIgJ2V4aXQgJD8nCiAgICAgICBmaQogCi0gICAgICB3cmFwcGVyc19yZXF1aXJlZD15ZXMKKyAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPToKICAgICAgIGNhc2UgJGhvc3QgaW4KICAgICAgICpjZWdjYyogfCAqbWluZ3czMmNlKikKICAgICAgICAgIyBEaXNhYmxlIHdyYXBwZXJzIGZvciBjZWdjYyBhbmQgbWluZ3czMmNlIGhvc3RzLCB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIGFueXdheS4KLSAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KKyAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9ZmFsc2UKICAgICAgICAgOzsKICAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiApCi0gICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllczsgdGhlbgotICAgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCi0gICAgICAgIGZpCisgICAgICAgIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiIHx8IHdyYXBwZXJzX3JlcXVpcmVkPWZhbHNlCiAgICAgICAgIDs7CiAgICAgICAqKQotICAgICAgICBpZiB0ZXN0ICIkbmVlZF9yZWxpbmsiID0gbm8gfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzOyB0aGVuCi0gICAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KKyAgICAgICAgaWYgdGVzdCBubyA9ICIkbmVlZF9yZWxpbmsiIHx8IHRlc3QgeWVzICE9ICIkYnVpbGRfbGlidG9vbF9saWJzIjsgdGhlbgorICAgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPWZhbHNlCiAgICAgICAgIGZpCiAgICAgICAgIDs7CiAgICAgICBlc2FjCi0gICAgICBpZiB0ZXN0ICIkd3JhcHBlcnNfcmVxdWlyZWQiID0gbm87IHRoZW4KKyAgICAgICR3cmFwcGVyc19yZXF1aXJlZCB8fCB7CiAJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgogCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKLQlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKKwlsaW5rX2NvbW1hbmQ9JGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoCiAKIAkjIFdlIGhhdmUgbm8gdW5pbnN0YWxsZWQgbGlicmFyeSBkZXBlbmRlbmNpZXMsIHNvIGZpbmFsaXplIHJpZ2h0IG5vdy4KIAlleGl0X3N0YXR1cz0wCkBAIC04OTE0LDEyICsxMDQwOCwxMiBAQAogCWZpCiAKIAkjIERlbGV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLgotCWlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSI7IHRoZW4KLQkgIGZ1bmNfc2hvd19ldmFsICckUk0gIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSInCisJaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJG9iamV4dCI7IHRoZW4KKwkgIGZ1bmNfc2hvd19ldmFsICckUk0gIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiRvYmpleHQiJwogCWZpCiAKIAlleGl0ICRleGl0X3N0YXR1cwotICAgICAgZmkKKyAgICAgIH0KIAogICAgICAgaWYgdGVzdCAtbiAiJGNvbXBpbGVfc2hsaWJwYXRoJGZpbmFsaXplX3NobGlicGF0aCI7IHRoZW4KIAljb21waWxlX2NvbW1hbmQ9IiRzaGxpYnBhdGhfdmFyPVwiJGNvbXBpbGVfc2hsaWJwYXRoJGZpbmFsaXplX3NobGlicGF0aFwkJHNobGlicGF0aF92YXJcIiAkY29tcGlsZV9jb21tYW5kIgpAQCAtODk0OSw5ICsxMDQ0Myw5IEBACiAJZmkKICAgICAgIGZpCiAKLSAgICAgIGlmIHRlc3QgIiRub19pbnN0YWxsIiA9IHllczsgdGhlbgorICAgICAgaWYgdGVzdCB5ZXMgPSAiJG5vX2luc3RhbGwiOyB0aGVuCiAJIyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0LgotCWxpbmtfY29tbWFuZD0iJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIgorCWxpbmtfY29tbWFuZD0kY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgKIAkjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCiAJbGlua19jb21tYW5kPWAkRUNITyAiJGxpbmtfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAogCSMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGUuCkBAIC04OTY4LDI3ICsxMDQ2MiwyOCBAQAogCWV4aXQgJEVYSVRfU1VDQ0VTUwogICAgICAgZmkKIAotICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2FjdGlvbiIgPSByZWxpbms7IHRoZW4KLQkjIEZhc3QgaW5zdGFsbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKLQlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKLQlyZWxpbmtfY29tbWFuZD0iJGZpbmFsaXplX3ZhciRmaW5hbGl6ZV9jb21tYW5kJGZpbmFsaXplX3JwYXRoIgorICAgICAgY2FzZSAkaGFyZGNvZGVfYWN0aW9uLCRmYXN0X2luc3RhbGwgaW4KKyAgICAgICAgcmVsaW5rLCopCisJICAjIEZhc3QgaW5zdGFsbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKKwkgIGxpbmtfY29tbWFuZD0kY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgKKwkgIHJlbGlua19jb21tYW5kPSRmaW5hbGl6ZV92YXIkZmluYWxpemVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aAogCi0JZnVuY193YXJuaW5nICJ0aGlzIHBsYXRmb3JtIGRvZXMgbm90IGxpa2UgdW5pbnN0YWxsZWQgc2hhcmVkIGxpYnJhcmllcyIKLQlmdW5jX3dhcm5pbmcgIlxgJG91dHB1dCcgd2lsbCBiZSByZWxpbmtlZCBkdXJpbmcgaW5zdGFsbGF0aW9uIgotICAgICAgZWxzZQotCWlmIHRlc3QgIiRmYXN0X2luc3RhbGwiICE9IG5vOyB0aGVuCi0JICBsaW5rX2NvbW1hbmQ9IiRmaW5hbGl6ZV92YXIkY29tcGlsZV9jb21tYW5kJGZpbmFsaXplX3JwYXRoIgotCSAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXM7IHRoZW4KLQkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiIHwgJFNFRCAncyVAT1VUUFVUQCVcJHByb2dkaXIvXCRmaWxlJWcnYAotCSAgZWxzZQotCSAgICAjIGZhc3RfaW5zdGFsbCBpcyBzZXQgdG8gbmVlZGxlc3MKLQkgICAgcmVsaW5rX2NvbW1hbmQ9Ci0JICBmaQotCWVsc2UKLQkgIGxpbmtfY29tbWFuZD0iJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIgotCSAgcmVsaW5rX2NvbW1hbmQ9IiRmaW5hbGl6ZV92YXIkZmluYWxpemVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aCIKLQlmaQotICAgICAgZmkKKwkgIGZ1bmNfd2FybmluZyAidGhpcyBwbGF0Zm9ybSBkb2VzIG5vdCBsaWtlIHVuaW5zdGFsbGVkIHNoYXJlZCBsaWJyYXJpZXMiCisJICBmdW5jX3dhcm5pbmcgIickb3V0cHV0JyB3aWxsIGJlIHJlbGlua2VkIGR1cmluZyBpbnN0YWxsYXRpb24iCisJICA7OworICAgICAgICAqLHllcykKKwkgIGxpbmtfY29tbWFuZD0kZmluYWxpemVfdmFyJGNvbXBpbGVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aAorCSAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiIHwgJFNFRCAncyVAT1VUUFVUQCVcJHByb2dkaXIvXCRmaWxlJWcnYAorICAgICAgICAgIDs7CisJKixubykKKwkgIGxpbmtfY29tbWFuZD0kY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgKKwkgIHJlbGlua19jb21tYW5kPSRmaW5hbGl6ZV92YXIkZmluYWxpemVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aAorICAgICAgICAgIDs7CisJKixuZWVkbGVzcykKKwkgIGxpbmtfY29tbWFuZD0kZmluYWxpemVfdmFyJGNvbXBpbGVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aAorCSAgcmVsaW5rX2NvbW1hbmQ9CisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKIAogICAgICAgIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgogICAgICAgbGlua19jb21tYW5kPWAkRUNITyAiJGxpbmtfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJ2AKQEAgLTkwNDUsOCArMTA1NDAsOCBAQAogCSAgICBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkb3V0cHV0IiAiIiAiLiIKIAkgICAgb3V0cHV0X25hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAJICAgIG91dHB1dF9wYXRoPSRmdW5jX2Rpcm5hbWVfcmVzdWx0Ci0JICAgIGN3cmFwcGVyc291cmNlPSIkb3V0cHV0X3BhdGgvJG9iamRpci9sdC0kb3V0cHV0X25hbWUuYyIKLQkgICAgY3dyYXBwZXI9IiRvdXRwdXRfcGF0aC8kb3V0cHV0X25hbWUuZXhlIgorCSAgICBjd3JhcHBlcnNvdXJjZT0kb3V0cHV0X3BhdGgvJG9iamRpci9sdC0kb3V0cHV0X25hbWUuYworCSAgICBjd3JhcHBlcj0kb3V0cHV0X3BhdGgvJG91dHB1dF9uYW1lLmV4ZQogCSAgICAkUk0gJGN3cmFwcGVyc291cmNlICRjd3JhcHBlcgogCSAgICB0cmFwICIkUk0gJGN3cmFwcGVyc291cmNlICRjd3JhcHBlcjsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKIApAQCAtOTA2Nyw3ICsxMDU2Miw3IEBACiAJICAgIHRyYXAgIiRSTSAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ7IGV4aXQgJEVYSVRfRkFJTFVSRSIgMSAyIDE1CiAJICAgICRvcHRfZHJ5X3J1biB8fCB7CiAJICAgICAgIyBub3RlOiB0aGlzIHNjcmlwdCB3aWxsIG5vdCBiZSBleGVjdXRlZCwgc28gZG8gbm90IGNobW9kLgotCSAgICAgIGlmIHRlc3QgIngkYnVpbGQiID0gIngkaG9zdCIgOyB0aGVuCisJICAgICAgaWYgdGVzdCAieCRidWlsZCIgPSAieCRob3N0IjsgdGhlbgogCQkkY3dyYXBwZXIgLS1sdC1kdW1wLXNjcmlwdCA+ICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdAogCSAgICAgIGVsc2UKIAkJZnVuY19lbWl0X3dyYXBwZXIgbm8gPiAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQKQEAgLTkwOTAsMjUgKzEwNTg1LDI3IEBACiAgICAgIyBTZWUgaWYgd2UgbmVlZCB0byBidWlsZCBhbiBvbGQtZmFzaGlvbmVkIGFyY2hpdmUuCiAgICAgZm9yIG9sZGxpYiBpbiAkb2xkbGliczsgZG8KIAotICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBjb252ZW5pZW5jZTsgdGhlbgotCW9sZG9ianM9IiRsaWJvYmpzX3NhdmUgJHN5bWZpbGVvYmoiCi0JYWRkbGlicz0iJGNvbnZlbmllbmNlIgotCWJ1aWxkX2xpYnRvb2xfbGlicz1ubwotICAgICAgZWxzZQotCWlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gbW9kdWxlOyB0aGVuCi0JICBvbGRvYmpzPSIkbGlib2Jqc19zYXZlIgorICAgICAgY2FzZSAkYnVpbGRfbGlidG9vbF9saWJzIGluCisgICAgICAgIGNvbnZlbmllbmNlKQorCSAgb2xkb2Jqcz0iJGxpYm9ianNfc2F2ZSAkc3ltZmlsZW9iaiIKKwkgIGFkZGxpYnM9JGNvbnZlbmllbmNlCiAJICBidWlsZF9saWJ0b29sX2xpYnM9bm8KLQllbHNlCisJICA7OworCW1vZHVsZSkKKwkgIG9sZG9ianM9JGxpYm9ianNfc2F2ZQorCSAgYWRkbGlicz0kb2xkX2NvbnZlbmllbmNlCisJICBidWlsZF9saWJ0b29sX2xpYnM9bm8KKyAgICAgICAgICA7OworCSopCiAJICBvbGRvYmpzPSIkb2xkX2RlcGxpYnMgJG5vbl9waWNfb2JqZWN0cyIKLQkgIGlmIHRlc3QgIiRwcmVsb2FkIiA9IHllcyAmJiB0ZXN0IC1mICIkc3ltZmlsZW9iaiI7IHRoZW4KLQkgICAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRzeW1maWxlb2JqIgotCSAgZmkKLQlmaQotCWFkZGxpYnM9IiRvbGRfY29udmVuaWVuY2UiCi0gICAgICBmaQorCSAgJHByZWxvYWQgJiYgdGVzdCAtZiAiJHN5bWZpbGVvYmoiIFwKKwkgICAgJiYgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRzeW1maWxlb2JqIgorCSAgYWRkbGlicz0kb2xkX2NvbnZlbmllbmNlCisJICA7OworICAgICAgZXNhYwogCiAgICAgICBpZiB0ZXN0IC1uICIkYWRkbGlicyI7IHRoZW4KLQlnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorCWdlbnRvcD0kb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eAogCWZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAlmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkYWRkbGlicwpAQCAtOTExNiwxMyArMTA2MTMsMTMgQEAKICAgICAgIGZpCiAKICAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgotICAgICAgaWYgdGVzdCAtbiAiJG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMiICYmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCisgICAgICBpZiB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcyIgJiYgdGVzdCB5ZXMgPSAiJGJ1aWxkX2xpYnRvb2xfbGlicyI7IHRoZW4KIAljbWRzPSRvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzCiAgICAgICBlbHNlCiAKIAkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KLQkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCisJICBnZW50b3A9JG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgKIAkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRkbHByZWZpbGVzCkBAIC05MTQzLDcgKzEwNjQwLDcgQEAKIAkgIDoKIAllbHNlCiAJICBlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCi0JICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorCSAgZ2VudG9wPSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14CiAJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCSAgZnVuY19ta2Rpcl9wICIkZ2VudG9wIgogCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCkBAIC05MTUyLDcgKzEwNjQ5LDcgQEAKIAkgIGZvciBvYmogaW4gJHNhdmVfb2xkb2JqcwogCSAgZG8KIAkgICAgZnVuY19iYXNlbmFtZSAiJG9iaiIKLQkgICAgb2JqYmFzZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgICBvYmpiYXNlPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCSAgICBjYXNlICIgJG9sZG9ianMgIiBpbgogCSAgICAiICIpIG9sZG9ianM9JG9iaiA7OwogCSAgICAqW1wgL10iJG9iamJhc2UgIiopCkBAIC05MjIxLDE4ICsxMDcxOCwxOCBAQAogCSAgICBlbHNlCiAJICAgICAgIyB0aGUgYWJvdmUgY29tbWFuZCBzaG91bGQgYmUgdXNlZCBiZWZvcmUgaXQgZ2V0cyB0b28gbG9uZwogCSAgICAgIG9sZG9ianM9JG9iamxpc3QKLQkgICAgICBpZiB0ZXN0ICIkb2JqIiA9ICIkbGFzdF9vbGRvYmoiIDsgdGhlbgorCSAgICAgIGlmIHRlc3QgIiRvYmoiID0gIiRsYXN0X29sZG9iaiI7IHRoZW4KIAkJUkFOTElCPSRzYXZlX1JBTkxJQgogCSAgICAgIGZpCiAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0JICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIKKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kcyRvbGRfYXJjaGl2ZV9jbWRzXCIKIAkgICAgICBvYmpsaXN0PQogCSAgICAgIGxlbj0kbGVuMAogCSAgICBmaQogCSAgZG9uZQogCSAgUkFOTElCPSRzYXZlX1JBTkxJQgogCSAgb2xkb2Jqcz0kb2JqbGlzdAotCSAgaWYgdGVzdCAiWCRvbGRvYmpzIiA9ICJYIiA7IHRoZW4KKwkgIGlmIHRlc3QgLXogIiRvbGRvYmpzIjsgdGhlbgogCSAgICBldmFsIGNtZHM9XCJcJGNvbmNhdF9jbWRzXCIKIAkgIGVsc2UKIAkgICAgZXZhbCBjbWRzPVwiXCRjb25jYXRfY21kc35cJG9sZF9hcmNoaXZlX2NtZHNcIgpAQCAtOTI0OSw3ICsxMDc0Niw3IEBACiAgICAgY2FzZSAkb3V0cHV0IGluCiAgICAgKi5sYSkKICAgICAgIG9sZF9saWJyYXJ5PQotICAgICAgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllcyAmJiBvbGRfbGlicmFyeT0iJGxpYm5hbWUuJGxpYmV4dCIKKyAgICAgIHRlc3QgeWVzID0gIiRidWlsZF9vbGRfbGlicyIgJiYgb2xkX2xpYnJhcnk9JGxpYm5hbWUuJGxpYmV4dAogICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0IgogCiAgICAgICAjIFByZXNlcnZlIGFueSB2YXJpYWJsZXMgdGhhdCBtYXkgYWZmZWN0IGNvbXBpbGVyIGJlaGF2aW9yCkBAIC05MjY0LDMxICsxMDc2MSwzMSBAQAogCWZpCiAgICAgICBkb25lCiAgICAgICAjIFF1b3RlIHRoZSBsaW5rIGNvbW1hbmQgZm9yIHNoaXBwaW5nLgotICAgICAgcmVsaW5rX2NvbW1hbmQ9IihjZCBgcHdkYDsgJFNIRUxMICRwcm9ncGF0aCAkcHJlc2VydmVfYXJncyAtLW1vZGU9cmVsaW5rICRsaWJ0b29sX2FyZ3MgQGluc3RfcHJlZml4X2RpckApIgorICAgICAgcmVsaW5rX2NvbW1hbmQ9IihjZCBgcHdkYDsgJFNIRUxMIFwiJHByb2dwYXRoXCIgJHByZXNlcnZlX2FyZ3MgLS1tb2RlPXJlbGluayAkbGlidG9vbF9hcmdzIEBpbnN0X3ByZWZpeF9kaXJAKSIKICAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXMgOyB0aGVuCisgICAgICBpZiB0ZXN0IHllcyA9ICIkaGFyZGNvZGVfYXV0b21hdGljIjsgdGhlbgogCXJlbGlua19jb21tYW5kPQogICAgICAgZmkKIAogICAgICAgIyBPbmx5IGNyZWF0ZSB0aGUgb3V0cHV0IGlmIG5vdCBhIGRyeSBydW4uCiAgICAgICAkb3B0X2RyeV9ydW4gfHwgewogCWZvciBpbnN0YWxsZWQgaW4gbm8geWVzOyBkbwotCSAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSB5ZXM7IHRoZW4KKwkgIGlmIHRlc3QgeWVzID0gIiRpbnN0YWxsZWQiOyB0aGVuCiAJICAgIGlmIHRlc3QgLXogIiRpbnN0YWxsX2xpYmRpciI7IHRoZW4KIAkgICAgICBicmVhawogCSAgICBmaQotCSAgICBvdXRwdXQ9IiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lImkKKwkgICAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1pCiAJICAgICMgUmVwbGFjZSBhbGwgdW5pbnN0YWxsZWQgbGlidG9vbCBsaWJyYXJpZXMgd2l0aCB0aGUgaW5zdGFsbGVkIG9uZXMKIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPQogCSAgICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCiAJICAgICAgY2FzZSAkZGVwbGliIGluCiAJICAgICAgKi5sYSkKIAkJZnVuY19iYXNlbmFtZSAiJGRlcGxpYiIKLQkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCQluYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKLQkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKKwkJZXZhbCBsaWJkaXI9YCRTRUQgLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCiAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKLQkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKwkJICBmdW5jX2ZhdGFsX2Vycm9yICInJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgogCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKIAkJOzsKIAkgICAgICAtTCopCkBAIC05MzA0LDIzICsxMDgwMSwyMyBAQAogCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCi0JICAgIGRlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyIKKwkgICAgZGVwZW5kZW5jeV9saWJzPSRuZXdkZXBlbmRlbmN5X2xpYnMKIAkgICAgbmV3ZGxmaWxlcz0KIAogCSAgICBmb3IgbGliIGluICRkbGZpbGVzOyBkbwogCSAgICAgIGNhc2UgJGxpYiBpbgogCSAgICAgICoubGEpCiAJICAgICAgICBmdW5jX2Jhc2VuYW1lICIkbGliIgotCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCisJCW5hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisJCWV2YWwgbGliZGlyPWAkU0VEIC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0JCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisJCSAgZnVuY19mYXRhbF9lcnJvciAiJyRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKIAkJZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgogCQk7OwogCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQotCSAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKKwkgICAgZGxmaWxlcz0kbmV3ZGxmaWxlcwogCSAgICBuZXdkbHByZWZpbGVzPQogCSAgICBmb3IgbGliIGluICRkbHByZWZpbGVzOyBkbwogCSAgICAgIGNhc2UgJGxpYiBpbgpAQCAtOTMzMCwzNCArMTA4MjcsMzQgQEAKIAkJIyBkaWRuJ3QgYWxyZWFkeSBsaW5rIHRoZSBwcmVvcGVuZWQgb2JqZWN0cyBkaXJlY3RseSBpbnRvCiAJCSMgdGhlIGxpYnJhcnk6CiAJCWZ1bmNfYmFzZW5hbWUgIiRsaWIiCi0JCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLQkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKKwkJbmFtZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKwkJZXZhbCBsaWJkaXI9YCRTRUQgLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCiAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKLQkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKwkJICBmdW5jX2ZhdGFsX2Vycm9yICInJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgogCQlmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCi0JICAgIGRscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzIgorCSAgICBkbHByZWZpbGVzPSRuZXdkbHByZWZpbGVzCiAJICBlbHNlCiAJICAgIG5ld2RsZmlsZXM9CiAJICAgIGZvciBsaWIgaW4gJGRsZmlsZXM7IGRvCiAJICAgICAgY2FzZSAkbGliIGluCi0JCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OworCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0kbGliIDs7CiAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRhYnMiCiAJICAgIGRvbmUKLQkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCisJICAgIGRsZmlsZXM9JG5ld2RsZmlsZXMKIAkgICAgbmV3ZGxwcmVmaWxlcz0KIAkgICAgZm9yIGxpYiBpbiAkZGxwcmVmaWxlczsgZG8KIAkgICAgICBjYXNlICRsaWIgaW4KLQkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7CisJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSRsaWIgOzsKIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGFicyIKIAkgICAgZG9uZQotCSAgICBkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyIKKwkgICAgZGxwcmVmaWxlcz0kbmV3ZGxwcmVmaWxlcwogCSAgZmkKIAkgICRSTSAkb3V0cHV0CiAJICAjIHBsYWNlIGRsbmFtZSBpbiBjb3JyZWN0IHBvc2l0aW9uIGZvciBjeWd3aW4KQEAgLTkzNzMsMTAgKzEwODcwLDkgQEAKIAkgIGNhc2UgJGhvc3QsJG91dHB1dCwkaW5zdGFsbGVkLCRtb2R1bGUsJGRsbmFtZSBpbgogCSAgICAqY3lnd2luKiwqbGFpLHllcyxubywqLmRsbCB8ICptaW5ndyosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqY2VnY2MqLCpsYWkseWVzLG5vLCouZGxsKQogCSAgICAgICMgSWYgYSAtYmluZGlyIGFyZ3VtZW50IHdhcyBzdXBwbGllZCwgcGxhY2UgdGhlIGRsbCB0aGVyZS4KLQkgICAgICBpZiB0ZXN0ICJ4JGJpbmRpciIgIT0geCA7Ci0JICAgICAgdGhlbgorCSAgICAgIGlmIHRlc3QgLW4gIiRiaW5kaXIiOyB0aGVuCiAJCWZ1bmNfcmVsYXRpdmVfcGF0aCAiJGluc3RhbGxfbGliZGlyIiAiJGJpbmRpciIKLQkJdGRsbmFtZT0kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCRkbG5hbWUKKwkJdGRsbmFtZT0kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdC8kZGxuYW1lCiAJICAgICAgZWxzZQogCQkjIE90aGVyd2lzZSBmYWxsIGJhY2sgb24gaGV1cmlzdGljLgogCQl0ZGxuYW1lPS4uL2Jpbi8kZGxuYW1lCkBAIC05Mzg1LDcgKzEwODgxLDcgQEAKIAkgIGVzYWMKIAkgICRFQ0hPID4gJG91dHB1dCAiXAogIyAkb3V0cHV0bmFtZSAtIGEgbGlidG9vbCBsaWJyYXJ5IGZpbGUKLSMgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTgorIyBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gKEdOVSAkUEFDS0FHRSkgJFZFUlNJT04KICMKICMgUGxlYXNlIERPIE5PVCBkZWxldGUgdGhpcyBmaWxlIQogIyBJdCBpcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgdGhlIGxpYnJhcnkuCkBAIC05Mzk5LDcgKzEwODk1LDcgQEAKICMgVGhlIG5hbWUgb2YgdGhlIHN0YXRpYyBhcmNoaXZlLgogb2xkX2xpYnJhcnk9JyRvbGRfbGlicmFyeScKIAotIyBMaW5rZXIgZmxhZ3MgdGhhdCBjYW4gbm90IGdvIGluIGRlcGVuZGVuY3lfbGlicy4KKyMgTGlua2VyIGZsYWdzIHRoYXQgY2Fubm90IGdvIGluIGRlcGVuZGVuY3lfbGlicy4KIGluaGVyaXRlZF9saW5rZXJfZmxhZ3M9JyRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncycKIAogIyBMaWJyYXJpZXMgdGhhdCB0aGlzIG9uZSBkZXBlbmRzIHVwb24uCkBAIC05NDI1LDcgKzEwOTIxLDcgQEAKIAogIyBEaXJlY3RvcnkgdGhhdCB0aGlzIGxpYnJhcnkgbmVlZHMgdG8gYmUgaW5zdGFsbGVkIGluOgogbGliZGlyPSckaW5zdGFsbF9saWJkaXInIgotCSAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubyAmJiB0ZXN0ICIkbmVlZF9yZWxpbmsiID0geWVzOyB0aGVuCisJICBpZiB0ZXN0IG5vLHllcyA9ICIkaW5zdGFsbGVkLCRuZWVkX3JlbGluayI7IHRoZW4KIAkgICAgJEVDSE8gPj4gJG91dHB1dCAiXAogcmVsaW5rX2NvbW1hbmQ9XCIkcmVsaW5rX2NvbW1hbmRcIiIKIAkgIGZpCkBAIC05NDQwLDI3ICsxMDkzNiwyOSBAQAogICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwogfQogCi17IHRlc3QgIiRvcHRfbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IH0gJiYKLSAgICBmdW5jX21vZGVfbGluayAkezErIiRAIn0KK2lmIHRlc3QgbGluayA9ICIkb3B0X21vZGUiIHx8IHRlc3QgcmVsaW5rID0gIiRvcHRfbW9kZSI7IHRoZW4KKyAgZnVuY19tb2RlX2xpbmsgJHsxKyIkQCJ9CitmaQogCiAKICMgZnVuY19tb2RlX3VuaW5zdGFsbCBhcmcuLi4KIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKIHsKLSAgICAkb3B0X2RlYnVnCi0gICAgUk09IiRub25vcHQiCisgICAgJGRlYnVnX2NtZAorCisgICAgUk09JG5vbm9wdAogICAgIGZpbGVzPQotICAgIHJtZm9yY2U9CisgICAgcm1mb3JjZT1mYWxzZQogICAgIGV4aXRfc3RhdHVzPTAKIAogICAgICMgVGhpcyB2YXJpYWJsZSB0ZWxscyB3cmFwcGVyIHNjcmlwdHMganVzdCB0byBzZXQgdmFyaWFibGVzIHJhdGhlcgogICAgICMgdGhhbiBydW5uaW5nIHRoZWlyIHByb2dyYW1zLgotICAgIGxpYnRvb2xfaW5zdGFsbF9tYWdpYz0iJG1hZ2ljIgorICAgIGxpYnRvb2xfaW5zdGFsbF9tYWdpYz0kbWFnaWMKIAogICAgIGZvciBhcmcKICAgICBkbwogICAgICAgY2FzZSAkYXJnIGluCi0gICAgICAtZikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKKyAgICAgIC1mKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciOyBybWZvcmNlPTogOzsKICAgICAgIC0qKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciIDs7CiAgICAgICAqKSBmdW5jX2FwcGVuZCBmaWxlcyAiICRhcmciIDs7CiAgICAgICBlc2FjCkBAIC05NDczLDE4ICsxMDk3MSwxOCBAQAogCiAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwogICAgICAgZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCi0gICAgICBkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotICAgICAgaWYgdGVzdCAiWCRkaXIiID0gWC47IHRoZW4KLQlvZGlyPSIkb2JqZGlyIgorICAgICAgZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CisgICAgICBpZiB0ZXN0IC4gPSAiJGRpciI7IHRoZW4KKwlvZGlyPSRvYmpkaXIKICAgICAgIGVsc2UKLQlvZGlyPSIkZGlyLyRvYmpkaXIiCisJb2Rpcj0kZGlyLyRvYmpkaXIKICAgICAgIGZpCiAgICAgICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKLSAgICAgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSAgICAgIHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgJiYgb2Rpcj0iJGRpciIKKyAgICAgIG5hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisgICAgICB0ZXN0IHVuaW5zdGFsbCA9ICIkb3B0X21vZGUiICYmIG9kaXI9JGRpcgogCiAgICAgICAjIFJlbWVtYmVyIG9kaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcwotICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB0aGVuCisgICAgICBpZiB0ZXN0IGNsZWFuID0gIiRvcHRfbW9kZSI7IHRoZW4KIAljYXNlICIgJHJtZGlycyAiIGluCiAJICAqIiAkb2RpciAiKikgOzsKIAkgICopIGZ1bmNfYXBwZW5kIHJtZGlycyAiICRvZGlyIiA7OwpAQCAtOTQ5OSwxMSArMTA5OTcsMTEgQEAKICAgICAgIGVsaWYgdGVzdCAtZCAiJGZpbGUiOyB0aGVuCiAJZXhpdF9zdGF0dXM9MQogCWNvbnRpbnVlCi0gICAgICBlbGlmIHRlc3QgIiRybWZvcmNlIiA9IHllczsgdGhlbgorICAgICAgZWxpZiAkcm1mb3JjZTsgdGhlbgogCWNvbnRpbnVlCiAgICAgICBmaQogCi0gICAgICBybWZpbGVzPSIkZmlsZSIKKyAgICAgIHJtZmlsZXM9JGZpbGUKIAogICAgICAgY2FzZSAkbmFtZSBpbgogICAgICAgKi5sYSkKQEAgLTk1MTcsNyArMTEwMTUsNyBAQAogCSAgZG9uZQogCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG9sZF9saWJyYXJ5IgogCi0JICBjYXNlICIkb3B0X21vZGUiIGluCisJICBjYXNlICRvcHRfbW9kZSBpbgogCSAgY2xlYW4pCiAJICAgIGNhc2UgIiAkbGlicmFyeV9uYW1lcyAiIGluCiAJICAgICoiICRkbG5hbWUgIiopIDs7CkBAIC05NTI4LDEyICsxMTAyNiwxMiBAQAogCSAgdW5pbnN0YWxsKQogCSAgICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyI7IHRoZW4KIAkgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgcG9zdHVuaW5zdGFsbCBjb21tYW5kcy4KLQkgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3R1bmluc3RhbGxfY21kcyIgJ3Rlc3QgIiRybWZvcmNlIiA9IHllcyB8fCBleGl0X3N0YXR1cz0xJworCSAgICAgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdHVuaW5zdGFsbF9jbWRzIiAnJHJtZm9yY2UgfHwgZXhpdF9zdGF0dXM9MScKIAkgICAgZmkKIAogCSAgICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCiAJICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIG9sZF9wb3N0dW5pbnN0YWxsIGNvbW1hbmRzLgotCSAgICAgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkb2xkX3Bvc3R1bmluc3RhbGxfY21kcyIgJ3Rlc3QgIiRybWZvcmNlIiA9IHllcyB8fCBleGl0X3N0YXR1cz0xJworCSAgICAgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkb2xkX3Bvc3R1bmluc3RhbGxfY21kcyIgJyRybWZvcmNlIHx8IGV4aXRfc3RhdHVzPTEnCiAJICAgIGZpCiAJICAgICMgRklYTUU6IHNob3VsZCByZWluc3RhbGwgdGhlIGJlc3QgcmVtYWluaW5nIHNoYXJlZCBsaWJyYXJ5LgogCSAgICA7OwpAQCAtOTU0OSwyMSArMTEwNDcsMTkgQEAKIAkgIGZ1bmNfc291cmNlICRkaXIvJG5hbWUKIAogCSAgIyBBZGQgUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCi0JICBpZiB0ZXN0IC1uICIkcGljX29iamVjdCIgJiYKLQkgICAgIHRlc3QgIiRwaWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCisJICBpZiB0ZXN0IC1uICIkcGljX29iamVjdCIgJiYgdGVzdCBub25lICE9ICIkcGljX29iamVjdCI7IHRoZW4KIAkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJHBpY19vYmplY3QiCiAJICBmaQogCiAJICAjIEFkZCBub24tUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCi0JICBpZiB0ZXN0IC1uICIkbm9uX3BpY19vYmplY3QiICYmCi0JICAgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKwkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYgdGVzdCBub25lICE9ICIkbm9uX3BpY19vYmplY3QiOyB0aGVuCiAJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRub25fcGljX29iamVjdCIKIAkgIGZpCiAJZmkKIAk7OwogCiAgICAgICAqKQotCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbiA7IHRoZW4KKwlpZiB0ZXN0IGNsZWFuID0gIiRvcHRfbW9kZSI7IHRoZW4KIAkgIG5vZXhlbmFtZT0kbmFtZQogCSAgY2FzZSAkZmlsZSBpbgogCSAgKi5leGUpCkBAIC05NTkwLDEyICsxMTA4NiwxMiBAQAogCiAJICAgICMgbm90ZSAkbmFtZSBzdGlsbCBjb250YWlucyAuZXhlIGlmIGl0IHdhcyBpbiAkZmlsZSBvcmlnaW5hbGx5CiAJICAgICMgYXMgZG9lcyB0aGUgdmVyc2lvbiBvZiAkZmlsZSB0aGF0IHdhcyBhZGRlZCBpbnRvICRybWZpbGVzCi0JICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9Uy4ke29iamV4dH0iCi0JICAgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzICYmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1TLiRvYmpleHQiCisJICAgIGlmIHRlc3QgeWVzID0gIiRmYXN0X2luc3RhbGwiICYmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KIAkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJG5hbWUiCiAJICAgIGZpCi0JICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIiA7IHRoZW4KLQkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJHtub2V4ZW5hbWV9LmMiCisJICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIjsgdGhlbgorCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0kbm9leGVuYW1lLmMiCiAJICAgIGZpCiAJICBmaQogCWZpCkBAIC05NjA0LDcgKzExMTAwLDcgQEAKICAgICAgIGZ1bmNfc2hvd19ldmFsICIkUk0gJHJtZmlsZXMiICdleGl0X3N0YXR1cz0xJwogICAgIGRvbmUKIAotICAgICMgVHJ5IHRvIHJlbW92ZSB0aGUgJHtvYmpkaXJ9cyBpbiB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgd2UgZGVsZXRlZCBmaWxlcworICAgICMgVHJ5IHRvIHJlbW92ZSB0aGUgJG9iamRpcidzIGluIHRoZSBkaXJlY3RvcmllcyB3aGVyZSB3ZSBkZWxldGVkIGZpbGVzCiAgICAgZm9yIGRpciBpbiAkcm1kaXJzOyBkbwogICAgICAgaWYgdGVzdCAtZCAiJGRpciI7IHRoZW4KIAlmdW5jX3Nob3dfZXZhbCAicm1kaXIgJGRpciA+L2Rldi9udWxsIDI+JjEiCkBAIC05NjE0LDE2ICsxMTExMCwxNyBAQAogICAgIGV4aXQgJGV4aXRfc3RhdHVzCiB9CiAKLXsgdGVzdCAiJG9wdF9tb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IH0gJiYKLSAgICBmdW5jX21vZGVfdW5pbnN0YWxsICR7MSsiJEAifQoraWYgdGVzdCB1bmluc3RhbGwgPSAiJG9wdF9tb2RlIiB8fCB0ZXN0IGNsZWFuID0gIiRvcHRfbW9kZSI7IHRoZW4KKyAgZnVuY19tb2RlX3VuaW5zdGFsbCAkezErIiRAIn0KK2ZpCiAKIHRlc3QgLXogIiRvcHRfbW9kZSIgJiYgewotICBoZWxwPSIkZ2VuZXJpY19oZWxwIgorICBoZWxwPSRnZW5lcmljX2hlbHAKICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIKIH0KIAogdGVzdCAteiAiJGV4ZWNfY21kIiAmJiBcCi0gIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCisgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSAnJG9wdF9tb2RlJyIKIAogaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgogICBldmFsIGV4ZWMgIiRleGVjX2NtZCIKQEAgLTk2MzQsNyArMTExMzEsNyBAQAogCiAKICMgVGhlIFRBR3MgYmVsb3cgYXJlIGRlZmluZWQgc3VjaCB0aGF0IHdlIG5ldmVyIGdldCBpbnRvIGEgc2l0dWF0aW9uCi0jIGluIHdoaWNoIHdlIGRpc2FibGUgYm90aCBraW5kcyBvZiBsaWJyYXJpZXMuICBHaXZlbiBjb25mbGljdGluZworIyB3aGVyZSB3ZSBkaXNhYmxlIGJvdGgga2luZHMgb2YgbGlicmFyaWVzLiAgR2l2ZW4gY29uZmxpY3RpbmcKICMgY2hvaWNlcywgd2UgZ28gZm9yIGEgc3RhdGljIGxpYnJhcnksIHRoYXQgaXMgdGhlIG1vc3QgcG9ydGFibGUsCiAjIHNpbmNlIHdlIGNhbid0IHRlbGwgd2hldGhlciBzaGFyZWQgbGlicmFyaWVzIHdlcmUgZGlzYWJsZWQgYmVjYXVzZQogIyB0aGUgdXNlciBhc2tlZCBmb3IgdGhhdCBvciBiZWNhdXNlIHRoZSBwbGF0Zm9ybSBkb2Vzbid0IHN1cHBvcnQKQEAgLTk2NTcsNSArMTExNTQsMyBAQAogIyBtb2RlOnNoZWxsLXNjcmlwdAogIyBzaC1pbmRlbnRhdGlvbjoyCiAjIEVuZDoKLSMgdmk6c3c9MgotCmRpZmYgLS1naXQgYS9tNC9NYWtlZmlsZS5hbSBiL200L01ha2VmaWxlLmFtCmluZGV4IGQ0ZTc4OTMuLjk1YTY2NDEgMTAwNjQ0Ci0tLSBhL200L01ha2VmaWxlLmFtCisrKyBiL200L01ha2VmaWxlLmFtCkBAIC0xOCw3ICsxOCw2IEBACiAJaW50dHlwZXNfaC5tNCBcCiAJaW50dHlwZXMtcHJpLm00IFwKIAlsY21lc3NhZ2UubTQgXAotCWxpYmZhbWUubTQgXAogCWxpYi1sZC5tNCBcCiAJbGliLWxpbmsubTQgXAogCWxpYm1pa21vZC5tNCBcCmRpZmYgLS1naXQgYS9tNC9NYWtlZmlsZS5pbiBiL200L01ha2VmaWxlLmluCmluZGV4IDY5NDFkODYuLjQzZGZjNTMgMTAwNjQ0Ci0tLSBhL200L01ha2VmaWxlLmluCisrKyBiL200L01ha2VmaWxlLmluCkBAIC0xMTQsMTYgKzExNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMTg4LDYgKzE4Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjI1LDYgKzIyNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjMzLDcgKzIzNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTI1Miw4ICsyNTQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMjcwLDE2ICsyNzMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzA1LDYgKzMwOSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTMzMCw2ICszMzYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00MzEsNiArNDM5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTQ0NCw4ICs0NTMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC00NjEsNiArNDY4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTUxOCwxNiArNTI3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNTc5LDYgKzU5MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC01ODksNiArNjAxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNTk4LDYgKzYxMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02MzUsNyArNjUwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC02OTUsNyArNzA5LDYgQEAKIAlpbnR0eXBlc19oLm00IFwKIAlpbnR0eXBlcy1wcmkubTQgXAogCWxjbWVzc2FnZS5tNCBcCi0JbGliZmFtZS5tNCBcCiAJbGliLWxkLm00IFwKIAlsaWItbGluay5tNCBcCiAJbGlibWlrbW9kLm00IFwKZGlmZiAtLWdpdCBhL200L2dzZXR0aW5ncy5tNCBiL200L2dzZXR0aW5ncy5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI5ZDA0Yi4uMDAwMDAwMAotLS0gYS9tNC9nc2V0dGluZ3MubTQKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi1kbmwgR0xJQl9HU0VUVElOR1MKLWRubCBEZWZpbmVzIEdTRVRUSU5HU19TQ0hFTUFTX0lOU1RBTEwgd2hpY2ggY29udHJvbHMgd2hldGhlcgotZG5sIHRoZSBzY2hlbWEgc2hvdWxkIGJlIGNvbXBpbGVkCi1kbmwKLQotQUNfREVGVU4oW0dMSUJfR1NFVFRJTkdTXSwKLVsKLSAgbTRfcGF0dGVybl9hbGxvdyhbQU1fVl9HRU5dKQotICBBQ19BUkdfRU5BQkxFKHNjaGVtYXMtY29tcGlsZSwKLSAgICAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXNjaGVtYXMtY29tcGlsZV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0Rpc2FibGUgcmVnZW5lcmF0aW9uIG9mIGdzY2hlbWFzLmNvbXBpbGVkIG9uIGluc3RhbGxdKSwKLSAgICAgICAgICAgICAgICBbY2FzZSAke2VuYWJsZXZhbH0gaW4KLSAgICAgICAgICAgICAgICAgIHllcykgR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFPSIiICA7OwotICAgICAgICAgICAgICAgICAgbm8pICBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEU9IjEiIDs7Ci0gICAgICAgICAgICAgICAgICAqKSBBQ19NU0dfRVJST1IoW2JhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLXNjaGVtYXMtY29tcGlsZV0pIDs7Ci0gICAgICAgICAgICAgICAgIGVzYWNdKQotICBBQ19TVUJTVChbR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFXSkKLSAgUEtHX1BST0dfUEtHX0NPTkZJRyhbMC4xNl0pCi0gIEFDX1NVQlNUKGdzZXR0aW5nc3NjaGVtYWRpciwgWyR7ZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hc10pCi0gIGlmIHRlc3QgeCRjcm9zc19jb21waWxpbmcgIT0geHllczsgdGhlbgotICAgIEdMSUJfQ09NUElMRV9TQ0hFTUFTPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlIGdsaWJfY29tcGlsZV9zY2hlbWFzIGdpby0yLjBgCi0gIGVsc2UKLSAgICBBQ19QQVRIX1BST0coR0xJQl9DT01QSUxFX1NDSEVNQVMsIGdsaWItY29tcGlsZS1zY2hlbWFzKQotICBmaQotICBBQ19TVUJTVChHTElCX0NPTVBJTEVfU0NIRU1BUykKLSAgaWYgdGVzdCAieCRHTElCX0NPTVBJTEVfU0NIRU1BUyIgPSAieCI7IHRoZW4KLSAgICBpZmVsc2UoWyQyXSwsW0FDX01TR19FUlJPUihbZ2xpYi1jb21waWxlLXNjaGVtYXMgbm90IGZvdW5kLl0pXSxbJDJdKQotICBlbHNlCi0gICAgaWZlbHNlKFskMV0sLFs6XSxbJDFdKQotICBmaQotCi0gIEdTRVRUSU5HU19SVUxFUz0nCi0uUEhPTlkgOiB1bmluc3RhbGwtZ3NldHRpbmdzLXNjaGVtYXMgaW5zdGFsbC1nc2V0dGluZ3Mtc2NoZW1hcyBjbGVhbi1nc2V0dGluZ3Mtc2NoZW1hcwotCi1tb3N0bHljbGVhbi1hbTogY2xlYW4tZ3NldHRpbmdzLXNjaGVtYXMKLQotZ3NldHRpbmdzX19lbnVtX2ZpbGUgPSAkKGFkZHN1ZmZpeCAuZW51bXMueG1sLCQoZ3NldHRpbmdzX0VOVU1fTkFNRVNQQUNFKSkKLQotJS5nc2NoZW1hLnZhbGlkOiAlLmdzY2hlbWEueG1sICQoZ3NldHRpbmdzX19lbnVtX2ZpbGUpCi0JJChBTV9WX0dFTikgaWYgdGVzdCAtZiAiJDwiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgJChHTElCX0NPTVBJTEVfU0NIRU1BUykgLS1zdHJpY3QgLS1kcnktcnVuICQoYWRkcHJlZml4IC0tc2NoZW1hLWZpbGU9LCQoZ3NldHRpbmdzX19lbnVtX2ZpbGUpKSAtLXNjaGVtYS1maWxlPSQke2R9JDwgJiYgdG91Y2ggWyRdQAotCi1hbGwtYW06ICQoZ3NldHRpbmdzX1NDSEVNQVM6LnhtbD0udmFsaWQpCi11bmluc3RhbGwtYW06IHVuaW5zdGFsbC1nc2V0dGluZ3Mtc2NoZW1hcwotaW5zdGFsbC1kYXRhLWFtOiBpbnN0YWxsLWdzZXR0aW5ncy1zY2hlbWFzCi0KLS5TRUNPTkRBUlk6ICQoZ3NldHRpbmdzX1NDSEVNQVMpCi0KLWluc3RhbGwtZ3NldHRpbmdzLXNjaGVtYXM6ICQoZ3NldHRpbmdzX1NDSEVNQVMpICQoZ3NldHRpbmdzX19lbnVtX2ZpbGUpCi0JQCQoTk9STUFMX0lOU1RBTEwpCi0JaWYgdGVzdCAtbiAiJF4iOyB0aGVuIFwKLQkJdGVzdCAteiAiJChnc2V0dGluZ3NzY2hlbWFkaXIpIiB8fCAkKE1LRElSX1ApICIkKERFU1RESVIpJChnc2V0dGluZ3NzY2hlbWFkaXIpIjsgXAotCQkkKElOU1RBTExfREFUQSkgJF4gIiQoREVTVERJUikkKGdzZXR0aW5nc3NjaGVtYWRpcikiOyBcCi0JCXRlc3QgLW4gIiQoR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFKSQoREVTVERJUikiIHx8ICQoR0xJQl9DT01QSUxFX1NDSEVNQVMpICQoZ3NldHRpbmdzc2NoZW1hZGlyKTsgXAotCWZpCi0KLXVuaW5zdGFsbC1nc2V0dGluZ3Mtc2NoZW1hczoKLQlAJChOT1JNQUxfVU5JTlNUQUxMKQotCUBsaXN0PSdcJyckKGdzZXR0aW5nc19TQ0hFTUFTKSAkKGdzZXR0aW5nc19fZW51bV9maWxlKSdcJyc7IHRlc3QgLW4gIiQoZ3NldHRpbmdzc2NoZW1hZGlyKSIgfHwgbGlzdD07IFwKLQlmaWxlcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IHNlZCAtZSAnXCcnc3xeLiovfHwnXCcnYDsgXAotCXRlc3QgLW4gIiQkZmlsZXMiIHx8IGV4aXQgMDsgXAotCWVjaG8gIiAoIGNkICdcJyckKERFU1RESVIpJChnc2V0dGluZ3NzY2hlbWFkaXIpJ1wnJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKLQljZCAiJChERVNURElSKSQoZ3NldHRpbmdzc2NoZW1hZGlyKSIgJiYgcm0gLWYgJCRmaWxlcwotCXRlc3QgLW4gIiQoR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFKSQoREVTVERJUikiIHx8ICQoR0xJQl9DT01QSUxFX1NDSEVNQVMpICQoZ3NldHRpbmdzc2NoZW1hZGlyKQotCi1jbGVhbi1nc2V0dGluZ3Mtc2NoZW1hczoKLQlybSAtZiAkKGdzZXR0aW5nc19TQ0hFTUFTOi54bWw9LnZhbGlkKSAkKGdzZXR0aW5nc19fZW51bV9maWxlKQotCi1pZmRlZiBnc2V0dGluZ3NfRU5VTV9OQU1FU1BBQ0UKLSQoZ3NldHRpbmdzX19lbnVtX2ZpbGUpOiAkKGdzZXR0aW5nc19FTlVNX0ZJTEVTKQotCSQoQU1fVl9HRU4pIGdsaWItbWtlbnVtcyAtLWNvbW1lbnRzICdcJyc8IS0tIEBjb21tZW50QCAtLT4nXCcnIC0tZmhlYWQgIjxzY2hlbWFsaXN0PiIgLS12aGVhZCAiICA8QHR5cGVAIGlkPSdcJyckKGdzZXR0aW5nc19FTlVNX05BTUVTUEFDRSkuQEVudW1OYW1lQCdcJyc+IiAtLXZwcm9kICIgICAgPHZhbHVlIG5pY2s9J1wnJ0B2YWx1ZW5pY2tAJ1wnJyB2YWx1ZT0nXCcnQHZhbHVlbnVtQCdcJycvPiIgLS12dGFpbCAiICA8L0B0eXBlQD4iIC0tZnRhaWwgIjwvc2NoZW1hbGlzdD4iIFskXV4gPiBbJF1ALnRtcCAmJiBtdiBbJF1ALnRtcCBbJF1ACi1lbmRpZgotJwotICBfR1NFVFRJTkdTX1NVQlNUKEdTRVRUSU5HU19SVUxFUykKLV0pCi0KLWRubCBfR1NFVFRJTkdTX1NVQlNUKFZBUklBQkxFKQotZG5sIEFic3RyYWN0IG1hY3JvIHRvIGRvIGVpdGhlciBfQU1fU1VCU1RfTk9UTUFLRSBvciBBQ19TVUJTVAotQUNfREVGVU4oW19HU0VUVElOR1NfU1VCU1RdLAotWwotQUNfU1VCU1QoWyQxXSkKLW00X2lmZGVmKFtfQU1fU1VCU1RfTk9UTUFLRV0sIFtfQU1fU1VCU1RfTk9UTUFLRShbJDFdKV0pCi1dCi0pCmRpZmYgLS1naXQgYS9tNC9saWJmYW1lLm00IGIvbTQvbGliZmFtZS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU3MDU4NC4uMDAwMDAwMAotLS0gYS9tNC9saWJmYW1lLm00CisrKyAvZGV2L251bGwKQEAgLTEsMTgyICswLDAgQEAKLWRubCBBTV9QQVRIX0xJQkZBTUUoW01JTklNVU0tVkVSU0lPTiwgW0FDVElPTi1JRi1GT1VORCBbLCBBQ1RJT04tSUYtTk9ULUZPVU5EIFssIE1PRFVMRVNdXV1dKQotZG5sIFRlc3QgZm9yIGxpYmZhbWUsIGFuZCBkZWZpbmUgTElCRkFNRV9DRkxBR1MgYW5kIExJQkZBTUVfTElCUwotZG5sIFZpdmllbiBDaGFwcGVsaWVyIDEyLzExLzAwCi1kbmwgc3RvbGVuIGZyb20gT1JCaXQgYXV0b2NvbmYKLWRubAotQUNfREVGVU4oW0FNX1BBVEhfTElCRkFNRV0sCi1bZG5sIAotZG5sIEdldCB0aGUgY2ZsYWdzIGFuZCBsaWJyYXJpZXMgZnJvbSB0aGUgbGliZmFtZS1jb25maWcgc2NyaXB0Ci1kbmwKLUFDX0FSR19XSVRIKGxpYmZhbWUtcHJlZml4LFsgIC0td2l0aC1saWJmYW1lLXByZWZpeD1QRlggICBQcmVmaXggd2hlcmUgbGliZmFtZSBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0sCi0gICAgICAgICAgICBsaWJmYW1lX2NvbmZpZ19wcmVmaXg9IiR3aXRodmFsIiwgbGliZmFtZV9jb25maWdfcHJlZml4PSIiKQotQUNfQVJHX1dJVEgobGliZmFtZS1leGVjLXByZWZpeCxbICAtLXdpdGgtbGliZmFtZS1leGVjLXByZWZpeD1QRlggRXhlYyBwcmVmaXggd2hlcmUgbGliZmFtZSBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0sCi0gICAgICAgICAgICBsaWJmYW1lX2NvbmZpZ19leGVjX3ByZWZpeD0iJHdpdGh2YWwiLCBsaWJmYW1lX2NvbmZpZ19leGVjX3ByZWZpeD0iIikKLUFDX0FSR19FTkFCTEUobGliZmFtZXRlc3QsIFsgIC0tZGlzYWJsZS1saWJmYW1ldGVzdCAgICAgICBEbyBub3QgdHJ5IHRvIGNvbXBpbGUgYW5kIHJ1biBhIHRlc3QgbGliZmFtZSBwcm9ncmFtXSwKLQkJICAgICwgZW5hYmxlX2xpYmZhbWV0ZXN0PXllcykKLQotICBpZiB0ZXN0IHgkbGliZmFtZV9jb25maWdfZXhlY19wcmVmaXggIT0geCA7IHRoZW4KLSAgICAgbGliZmFtZV9jb25maWdfYXJncz0iJGxpYmZhbWVfY29uZmlnX2FyZ3MgLS1leGVjLXByZWZpeD0kbGliZmFtZV9jb25maWdfZXhlY19wcmVmaXgiCi0gICAgIGlmIHRlc3QgeCR7TElCRkFNRV9DT05GSUcrc2V0fSAhPSB4c2V0IDsgdGhlbgotICAgICAgICBMSUJGQU1FX0NPTkZJRz0kbGliZmFtZV9jb25maWdfZXhlY19wcmVmaXgvYmluL2xpYmZhbWUtY29uZmlnCi0gICAgIGZpCi0gIGZpCi0gIGlmIHRlc3QgeCRsaWJmYW1lX2NvbmZpZ19wcmVmaXggIT0geCA7IHRoZW4KLSAgICAgbGliZmFtZV9jb25maWdfYXJncz0iJGxpYmZhbWVfY29uZmlnX2FyZ3MgLS1wcmVmaXg9JGxpYmZhbWVfY29uZmlnX3ByZWZpeCIKLSAgICAgaWYgdGVzdCB4JHtMSUJGQU1FX0NPTkZJRytzZXR9ICE9IHhzZXQgOyB0aGVuCi0gICAgICAgIExJQkZBTUVfQ09ORklHPSRsaWJmYW1lX2NvbmZpZ19wcmVmaXgvYmluL2xpYmZhbWUtY29uZmlnCi0gICAgIGZpCi0gIGZpCi0KLSAgQUNfUEFUSF9QUk9HKExJQkZBTUVfQ09ORklHLCBsaWJmYW1lLWNvbmZpZywgbm8pCi0gIG1pbl9saWJmYW1lX3ZlcnNpb249aWZlbHNlKFskMV0sICwgMC45LjAsICQxKQotICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGxpYmZhbWUgLSB2ZXJzaW9uID49ICRtaW5fbGliZmFtZV92ZXJzaW9uKQotICBub19saWJmYW1lPSIiCi0gIGlmIHRlc3QgIiRMSUJGQU1FX0NPTkZJRyIgPSAibm8iIDsgdGhlbgotICAgIG5vX2xpYmZhbWU9eWVzCi0gIGVsc2UKLSAgICBMSUJGQU1FX0NGTEFHUz1gJExJQkZBTUVfQ09ORklHICRsaWJmYW1lX2NvbmZpZ19hcmdzIC0tY2ZsYWdzYAotICAgIExJQkZBTUVfTElCUz1gJExJQkZBTUVfQ09ORklHICRsaWJmYW1lX2NvbmZpZ19hcmdzIC0tbGlic2AKLSAgICBsaWJmYW1lX2NvbmZpZ19tYWpvcl92ZXJzaW9uPWAkTElCRkFNRV9DT05GSUcgJGxpYmZhbWVfY29uZmlnX2FyZ3MgLS12ZXJzaW9uIHwgXAotCSAgIHNlZCAtZSAncyxbW14wLTkuXV0sLGcnIC1lICdzL1woW1swLTldXSpcKS5cKFtbMC05XV0qXCkuXChbWzAtOV1dKlwpL1wxLydgCi0gICAgbGliZmFtZV9jb25maWdfbWlub3JfdmVyc2lvbj1gJExJQkZBTUVfQ09ORklHICRsaWJmYW1lX2NvbmZpZ19hcmdzIC0tdmVyc2lvbiB8IFwKLQkgICBzZWQgLWUgJ3MsW1teMC05Ll1dLCxnJyAtZSAncy9cKFtbMC05XV0qXCkuXChbWzAtOV1dKlwpLlwoW1swLTldXSpcKS9cMi8nYAotICAgIGxpYmZhbWVfY29uZmlnX21pY3JvX3ZlcnNpb249YCRMSUJGQU1FX0NPTkZJRyAkbGliZmFtZV9jb25maWdfYXJncyAtLXZlcnNpb24gfCBcCi0JICAgc2VkIC1lICdzLFtbXjAtOS5dXSwsZycgLWUgJ3MvXChbWzAtOV1dKlwpLlwoW1swLTldXSpcKS5cKFtbMC05XV0qXCkvXDMvJ2AKLSAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9saWJmYW1ldGVzdCIgPSAieHllcyIgOyB0aGVuCi0gICAgICBhY19zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSAgICAgIGFjX3NhdmVfTElCUz0iJExJQlMiCi0gICAgICBDRkxBR1M9IiRDRkxBR1MgJExJQkZBTUVfQ0ZMQUdTIgotICAgICAgTElCUz0iJExJQkZBTUVfTElCUyAkTElCUyIKLWRubAotZG5sIE5vdyBjaGVjayBpZiB0aGUgaW5zdGFsbGVkIExJQkZBTUUgaXMgc3VmZmljaWVudGx5IG5ldy4gKEFsc28gc2FuaXR5Ci1kbmwgY2hlY2tzIHRoZSByZXN1bHRzIG9mIGxpYmZhbWUtY29uZmlnIHRvIHNvbWUgZXh0ZW50Ci1kbmwKLSAgICAgIHJtIC1mIGNvbmYubGliZmFtZXRlc3QKLSAgICAgIEFDX1RSWV9SVU4oWwotI2luY2x1ZGUgPGZhbWUuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi1pbnQgCi1tYWluICgpCi17Ci0gIGludCBtYWpvciwgbWlub3IsIG1pY3JvOwotICBjaGFyICp0bXBfdmVyc2lvbjsKLQotICBzeXN0ZW0gKCJ0b3VjaCBjb25mLmxpYmZhbWV0ZXN0Iik7Ci0KLSAgLyogSFAvVVggOSAoJUAjISkgd3JpdGVzIHRvIHNzY2FuZiBzdHJpbmdzICovCi0gIHRtcF92ZXJzaW9uID0gc3RyZHVwKCIkbWluX2xpYmZhbWVfdmVyc2lvbiIpOwotICBpZiAoc3NjYW5mKHRtcF92ZXJzaW9uLCAiJWQuJWQuJWQiLCAmbWFqb3IsICZtaW5vciwgJm1pY3JvKSAhPSAzKSB7Ci0gICAgIHByaW50ZigiJXMsIGJhZCB2ZXJzaW9uIHN0cmluZ1xuIiwgIiRtaW5fbGliZmFtZV92ZXJzaW9uIik7Ci0gICAgIGV4aXQoMSk7Ci0gICB9Ci0KLSAgaWYgKChsaWJmYW1lX21ham9yX3ZlcnNpb24gIT0gJGxpYmZhbWVfY29uZmlnX21ham9yX3ZlcnNpb24pIHx8Ci0gICAgICAobGliZmFtZV9taW5vcl92ZXJzaW9uICE9ICRsaWJmYW1lX2NvbmZpZ19taW5vcl92ZXJzaW9uKSB8fAotICAgICAgKGxpYmZhbWVfbWljcm9fdmVyc2lvbiAhPSAkbGliZmFtZV9jb25maWdfbWljcm9fdmVyc2lvbikpCi0gICAgewotICAgICAgcHJpbnRmKCJcbioqKiAnbGliZmFtZS1jb25maWcgLS12ZXJzaW9uJyByZXR1cm5lZCAlZC4lZC4lZCwgYnV0IExpYmZhbWUgKCVkLiVkLiVkKVxuIiwgCi0gICAgICAgICAgICAgJGxpYmZhbWVfY29uZmlnX21ham9yX3ZlcnNpb24sICRsaWJmYW1lX2NvbmZpZ19taW5vcl92ZXJzaW9uLCAkbGliZmFtZV9jb25maWdfbWljcm9fdmVyc2lvbiwKLSAgICAgICAgICAgICBsaWJmYW1lX21ham9yX3ZlcnNpb24sIGxpYmZhbWVfbWlub3JfdmVyc2lvbiwgbGliZmFtZV9taWNyb192ZXJzaW9uKTsKLSAgICAgIHByaW50ZiAoIioqKiB3YXMgZm91bmQhIElmIGxpYmZhbWUtY29uZmlnIHdhcyBjb3JyZWN0LCB0aGVuIGl0IGlzIGJlc3RcbiIpOwotICAgICAgcHJpbnRmICgiKioqIHRvIHJlbW92ZSB0aGUgb2xkIHZlcnNpb24gb2YgbGliZmFtZS4gWW91IG1heSBhbHNvIGJlIGFibGUgdG8gZml4IHRoZSBlcnJvclxuIik7Ci0gICAgICBwcmludGYoIioqKiBieSBtb2RpZnlpbmcgeW91ciBMRF9MSUJSQVJZX1BBVEggZW52aXJvbWVudCB2YXJpYWJsZSwgb3IgYnkgZWRpdGluZ1xuIik7Ci0gICAgICBwcmludGYoIioqKiAvZXRjL2xkLnNvLmNvbmYuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBydW4gbGRjb25maWcgaWYgdGhhdCBpc1xuIik7Ci0gICAgICBwcmludGYoIioqKiByZXF1aXJlZCBvbiB5b3VyIHN5c3RlbS5cbiIpOwotICAgICAgcHJpbnRmKCIqKiogSWYgbGliZmFtZS1jb25maWcgd2FzIHdyb25nLCBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIExJQkZBTUVfQ09ORklHXG4iKTsKLSAgICAgIHByaW50ZigiKioqIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IGNvcHkgb2YgbGliZmFtZS1jb25maWcsIGFuZCByZW1vdmUgdGhlIGZpbGUgY29uZmlnLmNhY2hlXG4iKTsKLSAgICAgIHByaW50ZigiKioqIGJlZm9yZSByZS1ydW5uaW5nIGNvbmZpZ3VyZVxuIik7Ci0gICAgfSAKLSNpZiBkZWZpbmVkIChMSUJGQU1FX01BSk9SX1ZFUlNJT04pICYmIGRlZmluZWQgKExJQkZBTUVfTUlOT1JfVkVSU0lPTikgJiYgZGVmaW5lZCAoTElCRkFNRV9NSUNST19WRVJTSU9OKQotICBlbHNlIGlmICgobGliZmFtZV9tYWpvcl92ZXJzaW9uICE9IExJQkZBTUVfTUFKT1JfVkVSU0lPTikgfHwKLQkgICAobGliZmFtZV9taW5vcl92ZXJzaW9uICE9IExJQkZBTUVfTUlOT1JfVkVSU0lPTikgfHwKLSAgICAgICAgICAgKGxpYmZhbWVfbWljcm9fdmVyc2lvbiAhPSBMSUJGQU1FX01JQ1JPX1ZFUlNJT04pKQotICAgIHsKLSAgICAgIHByaW50ZigiKioqIGxpYmZhbWUgaGVhZGVyIGZpbGVzICh2ZXJzaW9uICVkLiVkLiVkKSBkbyBub3QgbWF0Y2hcbiIsCi0JICAgICBMSUJGQU1FX01BSk9SX1ZFUlNJT04sIExJQkZBTUVfTUlOT1JfVkVSU0lPTiwgTElCRkFNRV9NSUNST19WRVJTSU9OKTsKLSAgICAgIHByaW50ZigiKioqIGxpYnJhcnkgKHZlcnNpb24gJWQuJWQuJWQpXG4iLAotCSAgICAgbGliZmFtZV9tYWpvcl92ZXJzaW9uLCBsaWJmYW1lX21pbm9yX3ZlcnNpb24sIGxpYmZhbWVfbWljcm9fdmVyc2lvbik7Ci0gICAgfQotI2VuZGlmIC8qIGRlZmluZWQgKExJQkZBTUVfTUFKT1JfVkVSU0lPTikgLi4uICovCi0gIGVsc2UKLSAgICB7Ci0gICAgICBpZiAoKGxpYmZhbWVfbWFqb3JfdmVyc2lvbiA+IG1ham9yKSB8fAotICAgICAgICAoKGxpYmZhbWVfbWFqb3JfdmVyc2lvbiA9PSBtYWpvcikgJiYgKGxpYmZhbWVfbWlub3JfdmVyc2lvbiA+IG1pbm9yKSkgfHwKLSAgICAgICAgKChsaWJmYW1lX21ham9yX3ZlcnNpb24gPT0gbWFqb3IpICYmIChsaWJmYW1lX21pbm9yX3ZlcnNpb24gPT0gbWlub3IpICYmIChsaWJmYW1lX21pY3JvX3ZlcnNpb24gPj0gbWljcm8pKSkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgfQotICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgIHByaW50ZigiXG4qKiogQW4gb2xkIHZlcnNpb24gb2YgbGliZmFtZSAoJWQuJWQuJWQpIHdhcyBmb3VuZC5cbiIsCi0gICAgICAgICAgICAgICBsaWJmYW1lX21ham9yX3ZlcnNpb24sIGxpYmZhbWVfbWlub3JfdmVyc2lvbiwgbGliZmFtZV9taWNyb192ZXJzaW9uKTsKLSAgICAgICAgcHJpbnRmKCIqKiogWW91IG5lZWQgYSB2ZXJzaW9uIG9mIGxpYmZhbWUgbmV3ZXIgdGhhbiAlZC4lZC4lZC4gVGhlIGxhdGVzdCB2ZXJzaW9uIG9mXG4iLAotCSAgICAgICBtYWpvciwgbWlub3IsIG1pY3JvKTsKLSAgICAgICAgcHJpbnRmKCIqKiogbGliZmFtZSBpcyBhbHdheXMgYXZhaWxhYmxlIGZyb20gaHR0cDovL3d3dy1lbGV2ZXMuZW5zdC1icmV0YWduZS5mci9+Y2hhcHBlbGkvZmFtZVxuIik7Ci0gICAgICAgIHByaW50ZigiKioqXG4iKTsKLSAgICAgICAgcHJpbnRmKCIqKiogSWYgeW91IGhhdmUgYWxyZWFkeSBpbnN0YWxsZWQgYSBzdWZmaWNpZW50bHkgbmV3IHZlcnNpb24sIHRoaXMgZXJyb3JcbiIpOwotICAgICAgICBwcmludGYoIioqKiBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB3cm9uZyBjb3B5IG9mIHRoZSBsaWJmYW1lLWNvbmZpZyBzaGVsbCBzY3JpcHQgaXNcbiIpOwotICAgICAgICBwcmludGYoIioqKiBiZWluZyBmb3VuZC4gVGhlIGVhc2llc3Qgd2F5IHRvIGZpeCB0aGlzIGlzIHRvIHJlbW92ZSB0aGUgb2xkIHZlcnNpb25cbiIpOwotICAgICAgICBwcmludGYoIioqKiBvZiBsaWJmYW1lLCBidXQgeW91IGNhbiBhbHNvIHNldCB0aGUgTElCRkFNRV9DT05GSUcgZW52aXJvbm1lbnQgdG8gcG9pbnQgdG8gdGhlXG4iKTsKLSAgICAgICAgcHJpbnRmKCIqKiogY29ycmVjdCBjb3B5IG9mIGxpYmZhbWUtY29uZmlnLiAoSW4gdGhpcyBjYXNlLCB5b3Ugd2lsbCBoYXZlIHRvXG4iKTsKLSAgICAgICAgcHJpbnRmKCIqKiogbW9kaWZ5IHlvdXIgTERfTElCUkFSWV9QQVRIIGVudmlyb21lbnQgdmFyaWFibGUsIG9yIGVkaXQgL2V0Yy9sZC5zby5jb25mXG4iKTsKLSAgICAgICAgcHJpbnRmKCIqKiogc28gdGhhdCB0aGUgY29ycmVjdCBsaWJyYXJpZXMgYXJlIGZvdW5kIGF0IHJ1bi10aW1lKSlcbiIpOwotICAgICAgfQotICAgIH0KLSAgcmV0dXJuIDE7Ci19Ci1dLCwgbm9fbGliZmFtZT15ZXMsW2VjaG8gJGFjX24gImNyb3NzIGNvbXBpbGluZzsgYXNzdW1lZCBPSy4uLiAkYWNfYyJdKQotICAgICAgIENGTEFHUz0iJGFjX3NhdmVfQ0ZMQUdTIgotICAgICAgIExJQlM9IiRhY19zYXZlX0xJQlMiCi0gICAgIGZpCi0gIGZpCi0gIGlmIHRlc3QgIngkbm9fbGliZmFtZSIgPSB4IDsgdGhlbgotICAgICBBQ19NU0dfUkVTVUxUKHllcykKLSAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkgICAgIAotICBlbHNlCi0gICAgIEFDX01TR19SRVNVTFQobm8pCi0gICAgIGlmIHRlc3QgIiRMSUJGQU1FX0NPTkZJRyIgPSAibm8iIDsgdGhlbgotICAgICAgIGVjaG8gIioqKiBUaGUgbGliZmFtZS1jb25maWcgc2NyaXB0IGluc3RhbGxlZCBieSBsaWJmYW1lIGNvdWxkIG5vdCBiZSBmb3VuZCIKLSAgICAgICBlY2hvICIqKiogSWYgbGliZmFtZSB3YXMgaW5zdGFsbGVkIGluIFBSRUZJWCwgbWFrZSBzdXJlIFBSRUZJWC9iaW4gaXMgaW4iCi0gICAgICAgZWNobyAiKioqIHlvdXIgcGF0aCwgb3Igc2V0IHRoZSBMSUJGQU1FX0NPTkZJRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUiCi0gICAgICAgZWNobyAiKioqIGZ1bGwgcGF0aCB0byBsaWJmYW1lLWNvbmZpZy4iCi0gICAgIGVsc2UKLSAgICAgICBpZiB0ZXN0IC1mIGNvbmYubGliZmFtZXRlc3QgOyB0aGVuCi0gICAgICAgIDoKLSAgICAgICBlbHNlCi0gICAgICAgICAgZWNobyAiKioqIENvdWxkIG5vdCBydW4gbGliZmFtZSB0ZXN0IHByb2dyYW0sIGNoZWNraW5nIHdoeS4uLiIKLSAgICAgICAgICBDRkxBR1M9IiRDRkxBR1MgJExJQkZBTUVfQ0ZMQUdTIgotICAgICAgICAgIExJQlM9IiRMSUJTICRMSUJGQU1FX0xJQlMiCi0gICAgICAgICAgQUNfVFJZX0xJTksoWwotI2luY2x1ZGUgPGZhbWUuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotXSwgICAgICBbIHJldHVybiAoKGxpYmZhbWVfbWFqb3JfdmVyc2lvbikgfHwgKGxpYmZhbWVfbWlub3JfdmVyc2lvbikgfHwgKGxpYmZhbWVfbWljcm9fdmVyc2lvbikpOyBdLAotICAgICAgICBbIGVjaG8gIioqKiBUaGUgdGVzdCBwcm9ncmFtIGNvbXBpbGVkLCBidXQgZGlkIG5vdCBydW4uIFRoaXMgdXN1YWxseSBtZWFucyIKLSAgICAgICAgICBlY2hvICIqKiogdGhhdCB0aGUgcnVuLXRpbWUgbGlua2VyIGlzIG5vdCBmaW5kaW5nIGxpYmZhbWUgb3IgZmluZGluZyB0aGUgd3JvbmciCi0gICAgICAgICAgZWNobyAiKioqIHZlcnNpb24gb2YgTElCRkFNRS4gSWYgaXQgaXMgbm90IGZpbmRpbmcgbGliZmFtZSwgeW91J2xsIG5lZWQgdG8gc2V0IHlvdXIiCi0gICAgICAgICAgZWNobyAiKioqIExEX0xJQlJBUllfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgb3IgZWRpdCAvZXRjL2xkLnNvLmNvbmYgdG8gcG9pbnQiCi0gICAgICAgICAgZWNobyAiKioqIHRvIHRoZSBpbnN0YWxsZWQgbG9jYXRpb24gIEFsc28sIG1ha2Ugc3VyZSB5b3UgaGF2ZSBydW4gbGRjb25maWcgaWYgdGhhdCIKLSAgICAgICAgICBlY2hvICIqKiogaXMgcmVxdWlyZWQgb24geW91ciBzeXN0ZW0iCi0JICBlY2hvICIqKioiCi0gICAgICAgICAgZWNobyAiKioqIElmIHlvdSBoYXZlIGFuIG9sZCB2ZXJzaW9uIGluc3RhbGxlZCwgaXQgaXMgYmVzdCB0byByZW1vdmUgaXQsIGFsdGhvdWdoIgotICAgICAgICAgIGVjaG8gIioqKiB5b3UgbWF5IGFsc28gYmUgYWJsZSB0byBnZXQgdGhpbmdzIHRvIHdvcmsgYnkgbW9kaWZ5aW5nIExEX0xJQlJBUllfUEFUSCIKLSAgICAgICAgICBlY2hvICIqKioiIF0sCi0gICAgICAgIFsgZWNobyAiKioqIFRoZSB0ZXN0IHByb2dyYW0gZmFpbGVkIHRvIGNvbXBpbGUgb3IgbGluay4gU2VlIHRoZSBmaWxlIGNvbmZpZy5sb2cgZm9yIHRoZSIKLSAgICAgICAgICBlY2hvICIqKiogZXhhY3QgZXJyb3IgdGhhdCBvY2N1cmVkLiBUaGlzIHVzdWFsbHkgbWVhbnMgbGliZmFtZSB3YXMgaW5jb3JyZWN0bHkgaW5zdGFsbGVkIgotICAgICAgICAgIGVjaG8gIioqKiBvciB0aGF0IHlvdSBoYXZlIG1vdmVkIGxpYmZhbWUgc2luY2UgaXQgd2FzIGluc3RhbGxlZC4gSW4gdGhlIGxhdHRlciBjYXNlLCB5b3UiCi0gICAgICAgICAgZWNobyAiKioqIG1heSB3YW50IHRvIGVkaXQgdGhlIGxpYmZhbWUtY29uZmlnIHNjcmlwdDogJExJQkZBTUVfQ09ORklHIiBdKQotICAgICAgICAgIENGTEFHUz0iJGFjX3NhdmVfQ0ZMQUdTIgotICAgICAgICAgIExJQlM9IiRhY19zYXZlX0xJQlMiCi0gICAgICAgZmkKLSAgICAgZmkKLSAgICAgTElCRkFNRV9DRkxBR1M9IiIKLSAgICAgTElCRkFNRV9MSUJTPSIiCi0gICAgIGlmZWxzZShbJDNdLCAsIDosIFskM10pCi0gIGZpCi0KLSAgQUNfU1VCU1QoTElCRkFNRV9DRkxBR1MpCi0gIEFDX1NVQlNUKExJQkZBTUVfTElCUykKLSAgcm0gLWYgY29uZi5saWJmYW1ldGVzdAotXSkKZGlmZiAtLWdpdCBhL200L2xpYnRvb2wubTQgYi9tNC9saWJ0b29sLm00CmluZGV4IGQ3YzA0M2YuLjEwYWIyODQgMTAwNjQ0Ci0tLSBhL200L2xpYnRvb2wubTQKKysrIGIvbTQvbGlidG9vbC5tNApAQCAtMSw4ICsxLDYgQEAKICMgbGlidG9vbC5tNCAtIENvbmZpZ3VyZSBsaWJ0b29sIGZvciB0aGUgaG9zdCBzeXN0ZW0uIC0qLUF1dG9jb25mLSotCiAjCi0jICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlCi0jICAgICAgICAgICAgICAgICBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsIDIwMDMtMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCkBAIC0xMCwzNiArOCwzMCBAQAogIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAogbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKLSMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKLSMgICAgICAgICAgICAgICAgIEZvdW5kYXRpb24sIEluYy4KLSMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisjIENvcHlyaWdodCAoQykgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KKyMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisKKyMgR05VIExpYnRvb2wgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogIwotIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIG9yIGxpYnJhcnkgdGhhdCBpcyBidWlsdAorIyB1c2luZyBHTlUgTGlidG9vbCwgeW91IG1heSBpbmNsdWRlIHRoaXMgZmlsZSB1bmRlciB0aGUgIHNhbWUKKyMgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgogIwotIyBHTlUgTGlidG9vbCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLSMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLSMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAotIyBpZiB5b3UgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gb3IgbGlicmFyeSB0aGF0Ci0jIGlzIGJ1aWx0IHVzaW5nIEdOVSBMaWJ0b29sLCB5b3UgbWF5IGluY2x1ZGUgdGhpcyBmaWxlIHVuZGVyIHRoZQotIyBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSMKLSMgR05VIExpYnRvb2wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgR05VIExpYnRvb2wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIEdOVSBMaWJ0b29sOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgYSBjb3B5Ci0jIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sLCBvcgotIyBvYnRhaW5lZCBieSB3cml0aW5nIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0jIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIF0pCiAKLSMgc2VyaWFsIDU3IExUX0lOSVQKKyMgc2VyaWFsIDU4IExUX0lOSVQKIAogCiAjIExUX1BSRVJFUShWRVJTSU9OKQpAQCAtNjcsNyArNTksNyBAQAogIyBMVF9JTklUKFtPUFRJT05TXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tCiBBQ19ERUZVTihbTFRfSU5JVF0sCi1bQUNfUFJFUkVRKFsyLjU4XSlkbmwgV2UgdXNlIEFDX0lOQ0xVREVTX0RFRkFVTFQKK1tBQ19QUkVSRVEoWzIuNjJdKWRubCBXZSB1c2UgQUNfUEFUSF9QUk9HU19GRUFUVVJFX0NIRUNLCiBBQ19SRVFVSVJFKFtBQ19DT05GSUdfQVVYX0RJUl9ERUZBVUxUXSlkbmwKIEFDX0JFRk9SRShbJDBdLCBbTFRfTEFOR10pZG5sCiBBQ19CRUZPUkUoWyQwXSwgW0xUX09VVFBVVF0pZG5sCkBAIC05MSw3ICs4Myw3IEBACiBfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKIAogIyBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlYnVpbGQgbGlidG9vbCB3aGVuIG5lZWRlZAotTElCVE9PTF9ERVBTPSIkbHRtYWluIgorTElCVE9PTF9ERVBTPSRsdG1haW4KIAogIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KIExJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwpAQCAtMTExLDI2ICsxMDMsNDMgQEAKIGRubCBBQ19ERUZVTihbQU1fUFJPR19MSUJUT09MXSwgW10pCiAKIAorIyBfTFRfUFJFUEFSRV9DQ19CQVNFTkFNRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9QUkVQQVJFX0NDX0JBU0VOQU1FXSwgWworIyBDYWxjdWxhdGUgY2NfYmFzZW5hbWUuICBTa2lwIGtub3duIGNvbXBpbGVyIHdyYXBwZXJzIGFuZCBjcm9zcy1wcmVmaXguCitmdW5jX2NjX2Jhc2VuYW1lICgpCit7CisgICAgZm9yIGNjX3RlbXAgaW4gQFN8QCoiIjsgZG8KKyAgICAgIGNhc2UgJGNjX3RlbXAgaW4KKyAgICAgICAgY29tcGlsZSB8ICpbW1xcL11dY29tcGlsZSB8IGNjYWNoZSB8ICpbW1xcL11dY2NhY2hlICkgOzsKKyAgICAgICAgZGlzdGNjIHwgKltbXFwvXV1kaXN0Y2MgfCBwdXJpZnkgfCAqW1tcXC9dXXB1cmlmeSApIDs7CisgICAgICAgIFwtKikgOzsKKyAgICAgICAgKikgYnJlYWs7OworICAgICAgZXNhYworICAgIGRvbmUKKyAgICBmdW5jX2NjX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiRjY190ZW1wIiB8ICRTRUQgInMlLiovJSU7IHMlXiRob3N0X2FsaWFzLSUlImAKK30KK10pIyBfTFRfUFJFUEFSRV9DQ19CQVNFTkFNRQorCisKICMgX0xUX0NDX0JBU0VOQU1FKENDKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tCi0jIENhbGN1bGF0ZSBjY19iYXNlbmFtZS4gIFNraXAga25vd24gY29tcGlsZXIgd3JhcHBlcnMgYW5kIGNyb3NzLXByZWZpeC4KKyMgSXQgd291bGQgYmUgY2xlYXJlciB0byBjYWxsIEFDX1JFUVVJUkVzIGZyb20gX0xUX1BSRVBBUkVfQ0NfQkFTRU5BTUUsCisjIGJ1dCB0aGF0IG1hY3JvIGlzIGFsc28gZXhwYW5kZWQgaW50byBnZW5lcmF0ZWQgbGlidG9vbCBzY3JpcHQsIHdoaWNoCisjIGFycmFuZ2VzIGZvciAkU0VEIGFuZCAkRUNITyB0byBiZSBzZXQgYnkgZGlmZmVyZW50IG1lYW5zLgogbTRfZGVmdW4oW19MVF9DQ19CQVNFTkFNRV0sCi1bZm9yIGNjX3RlbXAgaW4gJDEiIjsgZG8KLSAgY2FzZSAkY2NfdGVtcCBpbgotICAgIGNvbXBpbGUgfCAqW1tcXC9dXWNvbXBpbGUgfCBjY2FjaGUgfCAqW1tcXC9dXWNjYWNoZSApIDs7Ci0gICAgZGlzdGNjIHwgKltbXFwvXV1kaXN0Y2MgfCBwdXJpZnkgfCAqW1tcXC9dXXB1cmlmeSApIDs7Ci0gICAgXC0qKSA7OwotICAgICopIGJyZWFrOzsKLSAgZXNhYwotZG9uZQotY2NfYmFzZW5hbWU9YCRFQ0hPICIkY2NfdGVtcCIgfCAkU0VEICJzJS4qLyUlOyBzJV4kaG9zdF9hbGlhcy0lJSJgCitbbTRfcmVxdWlyZShbX0xUX1BSRVBBUkVfQ0NfQkFTRU5BTUVdKWRubAorQUNfUkVRVUlSRShbX0xUX0RFQ0xfU0VEXSlkbmwKK0FDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSlkbmwKK2Z1bmNfY2NfYmFzZW5hbWUgJDEKK2NjX2Jhc2VuYW1lPSRmdW5jX2NjX2Jhc2VuYW1lX3Jlc3VsdAogXSkKIAogCiAjIF9MVF9GSUxFVVRJTFNfREVGQVVMVFMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBJdCBpcyBva2F5IHRvIHVzZSB0aGVzZSBmaWxlIGNvbW1hbmRzIGFuZCBhc3N1bWUgdGhleSBoYXZlIGJlZW4gc2V0Ci0jIHNlbnNpYmx5IGFmdGVyIGBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSknLgorIyBzZW5zaWJseSBhZnRlciAnbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pJy4KIG00X2RlZnVuKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSwKIFs6ICR7Q1A9ImNwIC1mIn0KIDogJHtNVj0ibXYgLWYifQpAQCAtMTc3LDE1ICsxODYsMTYgQEAKIG00X3JlcXVpcmUoW19MVF9DTURfT0xEX0FSQ0hJVkVdKWRubAogbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfV0lUSF9TWVNST09UXSlkbmwKK200X3JlcXVpcmUoW19MVF9DTURfVFJVTkNBVEVdKWRubAogCiBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbCi0jIFNlZSBpZiB3ZSBhcmUgcnVubmluZyBvbiB6c2gsIGFuZCBzZXQgdGhlIG9wdGlvbnMgd2hpY2ggYWxsb3cgb3VyCisjIFNlZSBpZiB3ZSBhcmUgcnVubmluZyBvbiB6c2gsIGFuZCBzZXQgdGhlIG9wdGlvbnMgdGhhdCBhbGxvdyBvdXIKICMgY29tbWFuZHMgdGhyb3VnaCB3aXRob3V0IHJlbW92YWwgb2YgXCBlc2NhcGVzIElOSVQuCi1pZiB0ZXN0IC1uICJcJHtaU0hfVkVSU0lPTitzZXR9IiA7IHRoZW4KK2lmIHRlc3QgLW4gIlwke1pTSF9WRVJTSU9OK3NldH0iOyB0aGVuCiAgICBzZXRvcHQgTk9fR0xPQl9TVUJTVAogZmkKIF0pCi1pZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iIDsgdGhlbgoraWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IjsgdGhlbgogICAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKIGZpCiAKQEAgLTE5OCw3ICsyMDgsNyBAQAogICAjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKICAgIyByZWFzb24sIGlmIHdlIHNldCB0aGUgQ09MTEVDVF9OQU1FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHByb2JsZW1zCiAgICMgdmFuaXNoIGluIGEgcHVmZiBvZiBzbW9rZS4KLSAgaWYgdGVzdCAiWCR7Q09MTEVDVF9OQU1FUytzZXR9IiAhPSBYc2V0OyB0aGVuCisgIGlmIHRlc3Qgc2V0ICE9ICIke0NPTExFQ1RfTkFNRVMrc2V0fSI7IHRoZW4KICAgICBDT0xMRUNUX05BTUVTPQogICAgIGV4cG9ydCBDT0xMRUNUX05BTUVTCiAgIGZpCkBAIC0yMDksMTQgKzIxOSwxNCBAQAogb2ZpbGU9bGlidG9vbAogY2FuX2J1aWxkX3NoYXJlZD15ZXMKIAotIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCisjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSAnLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKICMgd2hpY2ggbmVlZHMgJy5saWInKS4KIGxpYmV4dD1hCiAKLXdpdGhfZ251X2xkPSIkbHRfY3ZfcHJvZ19nbnVfbGQiCit3aXRoX2dudV9sZD0kbHRfY3ZfcHJvZ19nbnVfbGQKIAotb2xkX0NDPSIkQ0MiCi1vbGRfQ0ZMQUdTPSIkQ0ZMQUdTIgorb2xkX0NDPSRDQworb2xkX0NGTEFHUz0kQ0ZMQUdTCiAKICMgU2V0IHNhbmUgZGVmYXVsdHMgZm9yIHZhcmlvdXMgdmFyaWFibGVzCiB0ZXN0IC16ICIkQ0MiICYmIENDPWNjCkBAIC0yNjksMTQgKzI3OSwxNCBAQAogCiAjIF9MVF9QUk9HX0xUTUFJTgogIyAtLS0tLS0tLS0tLS0tLS0KLSMgTm90ZSB0aGF0IHRoaXMgY29kZSBpcyBjYWxsZWQgYm90aCBmcm9tIGBjb25maWd1cmUnLCBhbmQgYGNvbmZpZy5zdGF0dXMnCisjIE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgY2FsbGVkIGJvdGggZnJvbSAnY29uZmlndXJlJywgYW5kICdjb25maWcuc3RhdHVzJwogIyBub3cgdGhhdCB3ZSB1c2UgQUNfQ09ORklHX0NPTU1BTkRTIHRvIGdlbmVyYXRlIGxpYnRvb2wuICBOb3RhYmx5LAotIyBgY29uZmlnLnN0YXR1cycgaGFzIG5vIHZhbHVlIGZvciBhY19hdXhfZGlyIHVubGVzcyB3ZSBhcmUgdXNpbmcgQXV0b21ha2UsCisjICdjb25maWcuc3RhdHVzJyBoYXMgbm8gdmFsdWUgZm9yIGFjX2F1eF9kaXIgdW5sZXNzIHdlIGFyZSB1c2luZyBBdXRvbWFrZSwKICMgc28gd2UgcGFzcyBhIGNvcHkgYWxvbmcgdG8gbWFrZSBzdXJlIGl0IGhhcyBhIHNlbnNpYmxlIHZhbHVlIGFueXdheS4KIG00X2RlZnVuKFtfTFRfUFJPR19MVE1BSU5dLAogW200X2lmZGVmKFtBQ19SRVFVSVJFX0FVWF9GSUxFXSwgW0FDX1JFUVVJUkVfQVVYX0ZJTEUoW2x0bWFpbi5zaF0pXSlkbmwKIF9MVF9DT05GSUdfTElCVE9PTF9JTklUKFthY19hdXhfZGlyPSckYWNfYXV4X2RpciddKQotbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCitsdG1haW49JGFjX2F1eF9kaXIvbHRtYWluLnNoCiBdKSMgX0xUX1BST0dfTFRNQUlOCiAKIApAQCAtMjg2LDcgKzI5Niw3IEBACiAKICMgU28gdGhhdCB3ZSBjYW4gcmVjcmVhdGUgYSBmdWxsIGxpYnRvb2wgc2NyaXB0IGluY2x1ZGluZyBhZGRpdGlvbmFsCiAjIHRhZ3MsIHdlIGFjY3VtdWxhdGUgdGhlIGNodW5rcyBvZiBjb2RlIHRvIHNlbmQgdG8gQUNfQ09ORklHX0NPTU1BTkRTCi0jIGluIG1hY3JvcyBhbmQgdGhlbiBtYWtlIGEgc2luZ2xlIGNhbGwgYXQgdGhlIGVuZCB1c2luZyB0aGUgYGxpYnRvb2wnCisjIGluIG1hY3JvcyBhbmQgdGhlbiBtYWtlIGEgc2luZ2xlIGNhbGwgYXQgdGhlIGVuZCB1c2luZyB0aGUgJ2xpYnRvb2wnCiAjIGxhYmVsLgogCiAKQEAgLTQyMSw4ICs0MzEsOCBAQAogCiAjIF9MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkUoW1ZBUk5BTUVdKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUXVvdGUgYSB2YXJpYWJsZSB2YWx1ZSwgYW5kIGZvcndhcmQgaXQgdG8gYGNvbmZpZy5zdGF0dXMnIHNvIHRoYXQgaXRzCi0jIGRlY2xhcmF0aW9uIHRoZXJlIHdpbGwgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyBpbiBgY29uZmlndXJlJy4gIFZBUk5BTUUKKyMgUXVvdGUgYSB2YXJpYWJsZSB2YWx1ZSwgYW5kIGZvcndhcmQgaXQgdG8gJ2NvbmZpZy5zdGF0dXMnIHNvIHRoYXQgaXRzCisjIGRlY2xhcmF0aW9uIHRoZXJlIHdpbGwgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyBpbiAnY29uZmlndXJlJy4gIFZBUk5BTUUKICMgbXVzdCBoYXZlIGEgc2luZ2xlIHF1b3RlIGRlbGltaXRlZCB2YWx1ZSBmb3IgdGhpcyB0byB3b3JrLgogbTRfZGVmaW5lKFtfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJFXSwKIFskMT0nYCRFQ0hPICIkXVskMSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnXSkKQEAgLTQ0Niw3ICs0NTYsNyBAQAogIyBPdXRwdXQgY29tbWVudCBhbmQgbGlzdCBvZiB0YWdzIHN1cHBvcnRlZCBieSB0aGUgc2NyaXB0CiBtNF9kZWZ1bihbX0xUX0xJQlRPT0xfVEFHU10sCiBbX0xUX0ZPUk1BVF9DT01NRU5UKFtUaGUgbmFtZXMgb2YgdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhpcyBzY3JpcHRdKWRubAotYXZhaWxhYmxlX3RhZ3M9Il9MVF9UQUdTImRubAorYXZhaWxhYmxlX3RhZ3M9J19MVF9UQUdTJ2RubAogXSkKIAogCkBAIC00NzQsNyArNDg0LDcgQEAKICMgX0xUX0xJQlRPT0xfQ09ORklHX1ZBUlMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgUHJvZHVjZSBjb21tZW50ZWQgZGVjbGFyYXRpb25zIG9mIG5vbi10YWdnZWQgbGlidG9vbCBjb25maWcgdmFyaWFibGVzCi0jIHN1aXRhYmxlIGZvciBpbnNlcnRpb24gaW4gdGhlIExJQlRPT0wgQ09ORklHIHNlY3Rpb24gb2YgdGhlIGBsaWJ0b29sJworIyBzdWl0YWJsZSBmb3IgaW5zZXJ0aW9uIGluIHRoZSBMSUJUT09MIENPTkZJRyBzZWN0aW9uIG9mIHRoZSAnbGlidG9vbCcKICMgc2NyaXB0LiAgVGFnZ2VkIGxpYnRvb2wgY29uZmlnIHZhcmlhYmxlcyAoZXZlbiBmb3IgdGhlIExJQlRPT0wgQ09ORklHCiAjIHNlY3Rpb24pIGFyZSBwcm9kdWNlZCBieSBfTFRfTElCVE9PTF9UQUdfVkFSUy4KIG00X2RlZnVuKFtfTFRfTElCVE9PTF9DT05GSUdfVkFSU10sCkBAIC01MDAsOCArNTEwLDggQEAKICMgU2VuZCBhY2N1bXVsYXRlZCBvdXRwdXQgdG8gJENPTkZJR19TVEFUVVMuICBUaGFua3MgdG8gdGhlIGxpc3RzIG9mCiAjIHZhcmlhYmxlcyBmb3Igc2luZ2xlIGFuZCBkb3VibGUgcXVvdGUgZXNjYXBpbmcgd2Ugc2F2ZWQgZnJvbSBjYWxscwogIyB0byBfTFRfREVDTCwgd2UgY2FuIHB1dCBxdW90ZSBlc2NhcGVkIHZhcmlhYmxlcyBkZWNsYXJhdGlvbnMKLSMgaW50byBgY29uZmlnLnN0YXR1cycsIGFuZCB0aGVuIHRoZSBzaGVsbCBjb2RlIHRvIHF1b3RlIGVzY2FwZSB0aGVtIGluCi0jIGZvciBsb29wcyBpbiBgY29uZmlnLnN0YXR1cycuICBGaW5hbGx5LCBhbnkgYWRkaXRpb25hbCBjb2RlIGFjY3VtdWxhdGVkCisjIGludG8gJ2NvbmZpZy5zdGF0dXMnLCBhbmQgdGhlbiB0aGUgc2hlbGwgY29kZSB0byBxdW90ZSBlc2NhcGUgdGhlbSBpbgorIyBmb3IgbG9vcHMgaW4gJ2NvbmZpZy5zdGF0dXMnLiAgRmluYWxseSwgYW55IGFkZGl0aW9uYWwgY29kZSBhY2N1bXVsYXRlZAogIyBmcm9tIGNhbGxzIHRvIF9MVF9DT05GSUdfTElCVE9PTF9JTklUIGlzIGV4cGFuZGVkLgogbTRfZGVmdW4oW19MVF9DT05GSUdfQ09NTUFORFNdLAogW0FDX1BST1ZJREVfSUZFTFNFKFtMVF9PVVRQVVRdLApAQCAtNTQ3LDcgKzU1Nyw3IEBACiBdXSwgbHRfZGVjbF9xdW90ZV92YXJuYW1lcyk7IGRvCiAgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltbXFxcXFxcXGBcXCJcXFwkXV0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiXFxcYFxcXFxcXCIiICMjIGV4Y2x1ZGUgZnJvbSBzY19wcm9oaWJpdF9uZXN0ZWRfcXVvdGVzCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTU2MCw3ICs1NzAsNyBAQAogXV0sIGx0X2RlY2xfZHF1b3RlX3Zhcm5hbWVzKTsgZG8KICAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1tcXFxcXFxcYFxcIlxcXCRdXSopCi0gICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIgIyMgZXhjbHVkZSBmcm9tIHNjX3Byb2hpYml0X25lc3RlZF9xdW90ZXMKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtNTc2LDcgKzU4Niw3IEBACiAjIEdlbmVyYXRlIGEgY2hpbGQgc2NyaXB0IEZJTEUgd2l0aCBhbGwgaW5pdGlhbGl6YXRpb24gbmVjZXNzYXJ5IHRvCiAjIHJldXNlIHRoZSBlbnZpcm9ubWVudCBsZWFybmVkIGJ5IHRoZSBwYXJlbnQgc2NyaXB0LCBhbmQgbWFrZSB0aGUKICMgZmlsZSBleGVjdXRhYmxlLiAgSWYgQ09NTUVOVCBpcyBzdXBwbGllZCwgaXQgaXMgaW5zZXJ0ZWQgYWZ0ZXIgdGhlCi0jIGAjIScgc2VxdWVuY2UgYnV0IGJlZm9yZSBpbml0aWFsaXphdGlvbiB0ZXh0IGJlZ2lucy4gIEFmdGVyIHRoaXMKKyMgJyMhJyBzZXF1ZW5jZSBidXQgYmVmb3JlIGluaXRpYWxpemF0aW9uIHRleHQgYmVnaW5zLiAgQWZ0ZXIgdGhpcwogIyBtYWNybywgYWRkaXRpb25hbCB0ZXh0IGNhbiBiZSBhcHBlbmRlZCB0byBGSUxFIHRvIGZvcm0gdGhlIGJvZHkgb2YKICMgdGhlIGNoaWxkIHNjcmlwdC4gIFRoZSBtYWNybyBlbmRzIHdpdGggbm9uLXplcm8gc3RhdHVzIGlmIHRoZQogIyBmaWxlIGNvdWxkIG5vdCBiZSBmdWxseSB3cml0dGVuIChzdWNoIGFzIGlmIHRoZSBkaXNrIGlzIGZ1bGwpLgpAQCAtNTk4LDcgKzYwOCw3IEBACiBfQVNfUFJFUEFSRQogZXhlYyBBU19NRVNTQUdFX0ZEPiYxCiBfQVNFT0YKLXRlc3QgJGx0X3dyaXRlX2ZhaWwgPSAwICYmIGNobW9kICt4ICQxW11kbmwKK3Rlc3QgMCA9ICIkbHRfd3JpdGVfZmFpbCIgJiYgY2htb2QgK3ggJDFbXWRubAogbTRfcG9wZGVmKFtBU19NRVNTQUdFX0xPR19GRF0pXSldKSMgX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVQKIAogIyBMVF9PVVRQVVQKQEAgLTYyMSw3ICs2MzEsNyBAQAogfSA+JkFTX01FU1NBR0VfTE9HX0ZECiAKIGx0X2NsX2hlbHA9IlwKLVxgJGFzX21lJyBjcmVhdGVzIGEgbG9jYWwgbGlidG9vbCBzdHViIGZyb20gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiwKKyckYXNfbWUnIGNyZWF0ZXMgYSBsb2NhbCBsaWJ0b29sIHN0dWIgZnJvbSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLAogZm9yIHVzZSBpbiBmdXJ0aGVyIGNvbmZpZ3VyZSB0aW1lIHRlc3RzIGJlZm9yZSB0aGUgcmVhbCBsaWJ0b29sIGlzCiBnZW5lcmF0ZWQuCiAKQEAgLTY0Myw3ICs2NTMsNyBAQAogVGhpcyBjb25maWcubHQgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KIGdpdmVzIHVubGltaXRlZCBwZXJtaXNpb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LiIKIAotd2hpbGUgdGVzdCAkWyNdICE9IDAKK3doaWxlIHRlc3QgMCAhPSAkWyNdCiBkbwogICBjYXNlICRbMV0gaW4KICAgICAtLXZlcnNpb24gfCAtLXYqIHwgLVYgKQpAQCAtNjU2LDEwICs2NjYsMTAgQEAKICAgICAgIGx0X2NsX3NpbGVudD06IDs7CiAKICAgICAtKikgQUNfTVNHX0VSUk9SKFt1bnJlY29nbml6ZWQgb3B0aW9uOiAkWzFdCi1UcnkgXGAkWzBdIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXSkgOzsKK1RyeSAnJFswXSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLl0pIDs7CiAKICAgICAqKSBBQ19NU0dfRVJST1IoW3VucmVjb2duaXplZCBhcmd1bWVudDogJFsxXQotVHJ5IFxgJFswXSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLl0pIDs7CitUcnkgJyRbMF0gLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5dKSA7OwogICBlc2FjCiAgIHNoaWZ0CiBkb25lCkBAIC02ODUsNyArNjk1LDcgQEAKICMgb3BlbiBieSBjb25maWd1cmUuICBIZXJlIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYvbnVsbCwgZWZmZWN0aXZlbHkgY2xvc2luZwogIyBjb25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQgYXBwZW5kZWQgdG8gYnkgY29uZmlnLmx0LgogbHRfY2xfc3VjY2Vzcz06Ci10ZXN0ICIkc2lsZW50IiA9IHllcyAmJgordGVzdCB5ZXMgPSAiJHNpbGVudCIgJiYKICAgbHRfY29uZmlnX2x0X2FyZ3M9IiRsdF9jb25maWdfbHRfYXJncyAtLXF1aWV0IgogZXhlYyBBU19NRVNTQUdFX0xPR19GRD4vZGV2L251bGwKICRTSEVMTCAiJENPTkZJR19MVCIgJGx0X2NvbmZpZ19sdF9hcmdzIHx8IGx0X2NsX3N1Y2Nlc3M9ZmFsc2UKQEAgLTcwNSwyNyArNzE1LDMxIEBACiBfTFRfQ09ORklHX1NBVkVfQ09NTUFORFMoWwogICBtNF9kZWZpbmUoW19MVF9UQUddLCBtNF9pZihbJDFdLCBbXSwgW0NdLCBbJDFdKSlkbmwKICAgbTRfaWYoX0xUX1RBRywgW0NdLCBbCi0gICAgIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgorICAgICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB0aGF0IGFsbG93IG91cgogICAgICMgY29tbWFuZHMgdGhyb3VnaCB3aXRob3V0IHJlbW92YWwgb2YgXCBlc2NhcGVzLgotICAgIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IjsgdGhlbgogICAgICAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKICAgICBmaQogCi0gICAgY2ZnZmlsZT0iJHtvZmlsZX1UIgorICAgIGNmZ2ZpbGU9JHtvZmlsZX1UCiAgICAgdHJhcCAiJFJNIFwiJGNmZ2ZpbGVcIjsgZXhpdCAxIiAxIDIgMTUKICAgICAkUk0gIiRjZmdmaWxlIgogCiAgICAgY2F0IDw8X0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCiAjISAkU0hFTEwKLQotIyBgJEVDSE8gIiRvZmlsZSIgfCBzZWQgJ3MlXi4qLyUlJ2AgLSBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KLSMgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgJGFzX21lICgkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OCisjIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5ICRhc19tZSAoJFBBQ0tBR0UpICRWRVJTSU9OCiAjIExpYnRvb2wgd2FzIGNvbmZpZ3VyZWQgb24gaG9zdCBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWA6CiAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSMKKworIyBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KKyMgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorCiBfTFRfQ09QWUlORwogX0xUX0xJQlRPT0xfVEFHUwogCisjIENvbmZpZ3VyZWQgZGVmYXVsdHMgZm9yIHN5c19saWJfZGxzZWFyY2hfcGF0aCBtdW5naW5nLgorOiBcJHtMVF9TWVNfTElCUkFSWV9QQVRIPSIkY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aCJ9CisKICMgIyMjIEJFR0lOIExJQlRPT0wgQ09ORklHCiBfTFRfTElCVE9PTF9DT05GSUdfVkFSUwogX0xUX0xJQlRPT0xfVEFHX1ZBUlMKQEAgLTczMywxMyArNzQ3LDI0IEBACiAKIF9MVF9FT0YKIAorICAgIGNhdCA8PCdfTFRfRU9GJyA+PiAiJGNmZ2ZpbGUiCisKKyMgIyMjIEJFR0lOIEZVTkNUSU9OUyBTSEFSRUQgV0lUSCBDT05GSUdVUkUKKworX0xUX1BSRVBBUkVfTVVOR0VfUEFUSF9MSVNUCitfTFRfUFJFUEFSRV9DQ19CQVNFTkFNRQorCisjICMjIyBFTkQgRlVOQ1RJT05TIFNIQVJFRCBXSVRIIENPTkZJR1VSRQorCitfTFRfRU9GCisKICAgY2FzZSAkaG9zdF9vcyBpbgogICBhaXgzKikKICAgICBjYXQgPDxcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCiAjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKICMgcmVhc29uLCBpZiB3ZSBzZXQgdGhlIENPTExFQ1RfTkFNRVMgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBwcm9ibGVtcwogIyB2YW5pc2ggaW4gYSBwdWZmIG9mIHNtb2tlLgotaWYgdGVzdCAiWCR7Q09MTEVDVF9OQU1FUytzZXR9IiAhPSBYc2V0OyB0aGVuCitpZiB0ZXN0IHNldCAhPSAiJHtDT0xMRUNUX05BTUVTK3NldH0iOyB0aGVuCiAgIENPTExFQ1RfTkFNRVM9CiAgIGV4cG9ydCBDT0xMRUNUX05BTUVTCiBmaQpAQCAtNzU2LDggKzc4MSw2IEBACiAgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKIAotICBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCi0KICAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQogICBjaG1vZCAreCAiJG9maWxlIgpAQCAtNzc1LDcgKzc5OCw2IEBACiBbbTRfaWYoWyQxXSwgW10sIFsKICAgICBQQUNLQUdFPSckUEFDS0FHRScKICAgICBWRVJTSU9OPSckVkVSU0lPTicKLSAgICBUSU1FU1RBTVA9JyRUSU1FU1RBTVAnCiAgICAgUk09JyRSTScKICAgICBvZmlsZT0nJG9maWxlJ10sIFtdKQogXSlkbmwgL19MVF9DT05GSUdfU0FWRV9DT01NQU5EUwpAQCAtOTc0LDcgKzk5Niw3IEBACiAKICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIC1zaW5nbGVfbW9kdWxlIGxpbmtlciBmbGFnXSxbbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZF0sCiAgICAgICBbbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZD1ubwotICAgICAgaWYgdGVzdCAteiAiJHtMVF9NVUxUSV9NT0RVTEV9IjsgdGhlbgorICAgICAgaWYgdGVzdCAteiAiJExUX01VTFRJX01PRFVMRSI7IHRoZW4KIAkjIEJ5IGRlZmF1bHQgd2Ugd2lsbCBhZGQgdGhlIC1zaW5nbGVfbW9kdWxlIGZsYWcuIFlvdSBjYW4gb3ZlcnJpZGUKIAkjIGJ5IGVpdGhlciBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBMVF9NVUxUSV9NT0RVTEUKIAkjIG5vbi1lbXB0eSBhdCBjb25maWd1cmUgdGltZSwgb3IgYnkgYWRkaW5nIC1tdWx0aV9tb2R1bGUgdG8gdGhlCkBAIC05OTIsNyArMTAxNCw3IEBACiAJICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKIAkjIE90aGVyd2lzZSwgaWYgdGhlIG91dHB1dCB3YXMgY3JlYXRlZCB3aXRoIGEgMCBleGl0IGNvZGUgZnJvbQogCSMgdGhlIGNvbXBpbGVyLCBpdCB3b3JrZWQuCi0JZWxpZiB0ZXN0IC1mIGxpYmNvbmZ0ZXN0LmR5bGliICYmIHRlc3QgJF9sdF9yZXN1bHQgLWVxIDA7IHRoZW4KKwllbGlmIHRlc3QgLWYgbGliY29uZnRlc3QuZHlsaWIgJiYgdGVzdCAwID0gIiRfbHRfcmVzdWx0IjsgdGhlbgogCSAgbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZD15ZXMKIAllbHNlCiAJICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKQEAgLTEwMTAsNyArMTAzMiw3IEBACiAgICAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtdKV0sCiAJW2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdD15ZXNdLAogCVtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9bm9dKQotCUxERkxBR1M9IiRzYXZlX0xERkxBR1MiCisJTERGTEFHUz0kc2F2ZV9MREZMQUdTCiAgICAgXSkKIAogICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgLWZvcmNlX2xvYWQgbGlua2VyIGZsYWddLFtsdF9jdl9sZF9mb3JjZV9sb2FkXSwKQEAgLTEwMzIsNyArMTA1NCw3IEBACiAgICAgICBfbHRfcmVzdWx0PSQ/CiAgICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVyciAmJiAkR1JFUCBmb3JjZV9sb2FkIGNvbmZ0ZXN0LmVycjsgdGhlbgogCWNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgZWxpZiB0ZXN0IC1mIGNvbmZ0ZXN0ICYmIHRlc3QgJF9sdF9yZXN1bHQgLWVxIDAgJiYgJEdSRVAgZm9yY2VkX2xvYWQgY29uZnRlc3QgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorICAgICAgZWxpZiB0ZXN0IC1mIGNvbmZ0ZXN0ICYmIHRlc3QgMCA9ICIkX2x0X3Jlc3VsdCIgJiYgJEdSRVAgZm9yY2VkX2xvYWQgY29uZnRlc3QgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAJbHRfY3ZfbGRfZm9yY2VfbG9hZD15ZXMKICAgICAgIGVsc2UKIAljYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKQEAgLTEwNDIsMzIgKzEwNjQsMzIgQEAKICAgICBdKQogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICByaGFwc29keSogfCBkYXJ3aW4xLltbMDEyXV0pCi0gICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CisgICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHdsLXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OwogICAgIGRhcndpbjEuKikKLSAgICAgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS1mbGF0X25hbWVzcGFjZSAke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKKyAgICAgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPSckd2wtZmxhdF9uYW1lc3BhY2UgJHdsLXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OwogICAgIGRhcndpbiopICMgZGFyd2luIDUueCBvbgogICAgICAgIyBpZiBydW5uaW5nIG9uIDEwLjUgb3IgbGF0ZXIsIHRoZSBkZXBsb3ltZW50IHRhcmdldCBkZWZhdWx0cwogICAgICAgIyB0byB0aGUgT1MgdmVyc2lvbiwgaWYgb24geDg2LCBhbmQgMTAuNCwgdGhlIGRlcGxveW1lbnQKICAgICAgICMgdGFyZ2V0IGRlZmF1bHRzIHRvIDEwLjQuIERvbid0IHlvdSBsb3ZlIGl0PwogICAgICAgY2FzZSAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0xMC4wfSwkaG9zdCBpbgogCTEwLjAsKjg2Ki1kYXJ3aW44KnwxMC4wLCotZGFyd2luW1s5MV1dKikKLQkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS11bmRlZmluZWQgJHt3bH1keW5hbWljX2xvb2t1cCcgOzsKLQkxMC5bWzAxMl1dKikKLQkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS1mbGF0X25hbWVzcGFjZSAke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKKwkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPSckd2wtdW5kZWZpbmVkICR7d2x9ZHluYW1pY19sb29rdXAnIDs7CisJMTAuW1swMTJdXVtbLC5dXSopCisJICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHdsLWZsYXRfbmFtZXNwYWNlICR3bC11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKIAkxMC4qKQotCSAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJyA7OworCSAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR3bC11bmRlZmluZWQgJHt3bH1keW5hbWljX2xvb2t1cCcgOzsKICAgICAgIGVzYWMKICAgICA7OwogICBlc2FjCi0gICAgaWYgdGVzdCAiJGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2QiID0gInllcyI7IHRoZW4KKyAgICBpZiB0ZXN0IHllcyA9ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCI7IHRoZW4KICAgICAgIF9sdF9kYXJfc2luZ2xlX21vZD0nJHNpbmdsZV9tb2R1bGUnCiAgICAgZmkKLSAgICBpZiB0ZXN0ICIkbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0IiA9ICJ5ZXMiOyB0aGVuCi0gICAgICBfbHRfZGFyX2V4cG9ydF9zeW1zPScgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sc19saXN0LCRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0nCisgICAgaWYgdGVzdCB5ZXMgPSAiJGx0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdCI7IHRoZW4KKyAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9JyAkd2wtZXhwb3J0ZWRfc3ltYm9sc19saXN0LCRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLXN5bWJvbHMuZXhwc3ltJwogICAgIGVsc2UKLSAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9J34kTk1FRElUIC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JworICAgICAgX2x0X2Rhcl9leHBvcnRfc3ltcz0nfiROTUVESVQgLXMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUtc3ltYm9scy5leHBzeW0gJGxpYicKICAgICBmaQotICAgIGlmIHRlc3QgIiREU1lNVVRJTCIgIT0gIjoiICYmIHRlc3QgIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA9ICJubyI7IHRoZW4KKyAgICBpZiB0ZXN0IDogIT0gIiREU1lNVVRJTCIgJiYgdGVzdCBubyA9ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCI7IHRoZW4KICAgICAgIF9sdF9kc3ltdXRpbD0nfiREU1lNVVRJTCAkbGliIHx8IDonCiAgICAgZWxzZQogICAgICAgX2x0X2RzeW11dGlsPQpAQCAtMTA4NywyOSArMTEwOSwyOSBAQAogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9eWVzCiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCi0gIGlmIHRlc3QgIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA9ICJ5ZXMiOyB0aGVuCi0gICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSdgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UgJHt3bH0tZm9yY2VfbG9hZCwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCcKKyAgaWYgdGVzdCB5ZXMgPSAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiOyB0aGVuCisgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSdgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UgJHdsLWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCiAgICAgbTRfY2FzZShbJDFdLCBbRjc3XSwgW19MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzXSwKICAgICAgICAgICAgICAgICAgIFtGQ10sICBbX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXNdKQogICBlbHNlCiAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScnCiAgIGZpCiAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9IiRfbHRfZGFyX2FsbG93X3VuZGVmaW5lZCIKKyAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRfbHRfZGFyX2FsbG93X3VuZGVmaW5lZAogICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICBpZm9ydCopIF9sdF9kYXJfY2FuX3NoYXJlZD15ZXMgOzsKKyAgICAgaWZvcnQqfG5hZ2ZvciopIF9sdF9kYXJfY2FuX3NoYXJlZD15ZXMgOzsKICAgICAgKikgX2x0X2Rhcl9jYW5fc2hhcmVkPSRHQ0MgOzsKICAgZXNhYwotICBpZiB0ZXN0ICIkX2x0X2Rhcl9jYW5fc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiRfbHRfZGFyX2Nhbl9zaGFyZWQiOyB0aGVuCiAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZnVuY19lY2hvX2FsbAotICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9IlwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2Qke19sdF9kc3ltdXRpbH0iCi0gICAgX0xUX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPSJcJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3Mke19sdF9kc3ltdXRpbH0iCi0gICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJHtfbHRfZGFyX3NpbmdsZV9tb2R9JHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKLSAgICBfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPSJzZWQgLWUgJ3MsXixfLCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltflwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyR7X2x0X2Rhcl9leHBvcnRfc3ltc30ke19sdF9kc3ltdXRpbH0iCisgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCRfbHRfZHN5bXV0aWwiCisgICAgX0xUX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPSJcJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MkX2x0X2RzeW11dGlsIgorICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJzZWQgJ3N8XnxffCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wkbGlibmFtZS1zeW1ib2xzLmV4cHN5bX5cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAkX2x0X2Rhcl9zaW5nbGVfbW9kJF9sdF9kYXJfZXhwb3J0X3N5bXMkX2x0X2RzeW11dGlsIgorICAgIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAtZSAnc3xefF98JyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCRsaWJuYW1lLXN5bWJvbHMuZXhwc3ltflwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyRfbHRfZGFyX2V4cG9ydF9zeW1zJF9sdF9kc3ltdXRpbCIKICAgICBtNF9pZihbJDFdLCBbQ1hYXSwKLVsgICBpZiB0ZXN0ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgIT0gInllcyI7IHRoZW4KLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9IlwkQ0MgLXIgLWtlZXBfcHJpdmF0ZV9leHRlcm5zIC1ub3N0ZGxpYiAtbyBcJHtsaWJ9LW1hc3Rlci5vIFwkbGlib2Jqc35cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCR7bGlifS1tYXN0ZXIubyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcke19sdF9kc3ltdXRpbH0iCi0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1yIC1rZWVwX3ByaXZhdGVfZXh0ZXJucyAtbm9zdGRsaWIgLW8gXCR7bGlifS1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwke2xpYn0tbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKK1sgICBpZiB0ZXN0IHllcyAhPSAiJGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2QiOyB0aGVuCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSJcJENDIC1yIC1rZWVwX3ByaXZhdGVfZXh0ZXJucyAtbm9zdGRsaWIgLW8gXCRsaWItbWFzdGVyLm8gXCRsaWJvYmpzflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYi1tYXN0ZXIubyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmckX2x0X2RzeW11dGlsIgorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAnc3xefF98JyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCRsaWJuYW1lLXN5bWJvbHMuZXhwc3ltflwkQ0MgLXIgLWtlZXBfcHJpdmF0ZV9leHRlcm5zIC1ub3N0ZGxpYiAtbyBcJGxpYi1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGliLW1hc3Rlci5vIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyRfbHRfZGFyX2V4cG9ydF9zeW1zJF9sdF9kc3ltdXRpbCIKICAgICBmaQogXSxbXSkKICAgZWxzZQpAQCAtMTEyOSw3ICsxMTUxLDcgQEAKICMgQWxsb3cgdG8gb3ZlcnJpZGUgdGhlbSBmb3IgYWxsIHRhZ3MgdGhyb3VnaCBsdF9jdl9haXhfbGlicGF0aC4KIG00X2RlZnVuKFtfTFRfU1lTX01PRFVMRV9QQVRIX0FJWF0sCiBbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKLWlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KK2lmIHRlc3Qgc2V0ID0gIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSI7IHRoZW4KICAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCiBlbHNlCiAgIEFDX0NBQ0hFX1ZBTChbX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSldLApAQCAtMTE0Nyw3ICsxMTY5LDcgQEAKICAgICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKICAgZmldLFtdKQogICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCi0gICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9Ii91c3IvbGliOi9saWIiCisgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9L3Vzci9saWI6L2xpYgogICBmaQogICBdKQogICBhaXhfbGlicGF0aD0kX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkKQEAgLTExNjcsOCArMTE4OSw4IEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEZpbmQgaG93IHdlIGNhbiBmYWtlIGFuIGVjaG8gY29tbWFuZCB0aGF0IGRvZXMgbm90IGludGVycHJldCBiYWNrc2xhc2guCiAjIEluIHBhcnRpY3VsYXIsIHdpdGggQXV0b2NvbmYgMi42MCBvciBsYXRlciB3ZSBhZGQgc29tZSBjb2RlIHRvIHRoZSBzdGFydAotIyBvZiB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQgd2hpY2ggd2lsbCBmaW5kIGEgc2hlbGwgd2l0aCBhIGJ1aWx0aW4KLSMgcHJpbnRmICh3aGljaCB3ZSBjYW4gdXNlIGFzIGFuIGVjaG8gY29tbWFuZCkuCisjIG9mIHRoZSBnZW5lcmF0ZWQgY29uZmlndXJlIHNjcmlwdCB0aGF0IHdpbGwgZmluZCBhIHNoZWxsIHdpdGggYSBidWlsdGluCisjIHByaW50ZiAodGhhdCB3ZSBjYW4gdXNlIGFzIGFuIGVjaG8gY29tbWFuZCkuCiBtNF9kZWZ1bihbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdLAogW0VDSE89J1xcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFwnCiBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KQEAgLTExOTYsMTAgKzEyMTgsMTAgQEAKICMgSW52b2tlICRFQ0hPIHdpdGggYWxsIGFyZ3MsIHNwYWNlLXNlcGFyYXRlZC4KIGZ1bmNfZWNob19hbGwgKCkKIHsKLSAgICAkRUNITyAiJCoiIAorICAgICRFQ0hPICIkKiIKIH0KIAotY2FzZSAiJEVDSE8iIGluCitjYXNlICRFQ0hPIGluCiAgIHByaW50ZiopIEFDX01TR19SRVNVTFQoW3ByaW50Zl0pIDs7CiAgIHByaW50KikgQUNfTVNHX1JFU1VMVChbcHJpbnQgLXJdKSA7OwogICAqKSBBQ19NU0dfUkVTVUxUKFtjYXRdKSA7OwpAQCAtMTIyNSwxNiArMTI0NywxNyBAQAogQUNfREVGVU4oW19MVF9XSVRIX1NZU1JPT1RdLAogW0FDX01TR19DSEVDS0lORyhbZm9yIHN5c3Jvb3RdKQogQUNfQVJHX1dJVEgoW3N5c3Jvb3RdLAotWyAgLS13aXRoLXN5c3Jvb3RbPURJUl0gU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLl0sCitbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1zeXNyb290QDw6QD1ESVJAOj5AXSwKKyAgW1NlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290CisgICBpZiBub3Qgc3BlY2lmaWVkKS5dKV0sCiBbXSwgW3dpdGhfc3lzcm9vdD1ub10pCiAKIGRubCBsdF9zeXNyb290IHdpbGwgYWx3YXlzIGJlIHBhc3NlZCB1bnF1b3RlZC4gIFdlIHF1b3RlIGl0IGhlcmUKIGRubCBpbiBjYXNlIHRoZSB1c2VyIHBhc3NlZCBhIGRpcmVjdG9yeSBuYW1lLgogbHRfc3lzcm9vdD0KLWNhc2UgJHt3aXRoX3N5c3Jvb3R9IGluICMoCitjYXNlICR3aXRoX3N5c3Jvb3QgaW4gIygKICB5ZXMpCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KICAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKICAgIGZpCiAgICA7OyAjKApAQCAtMTI0NCwxNCArMTI2NywxNCBAQAogIG5vfCcnKQogICAgOzsgIygKICAqKQotICAgQUNfTVNHX1JFU1VMVChbJHt3aXRoX3N5c3Jvb3R9XSkKKyAgIEFDX01TR19SRVNVTFQoWyR3aXRoX3N5c3Jvb3RdKQogICAgQUNfTVNHX0VSUk9SKFtUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguXSkKICAgIDs7CiBlc2FjCiAKICBBQ19NU0dfUkVTVUxUKFske2x0X3N5c3Jvb3Q6LW5vfV0pCiBfTFRfREVDTChbXSwgW2x0X3N5c3Jvb3RdLCBbMF0sIFtUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIF1kbmwKLVtkZXBlbmRlbnQgbGlicmFyaWVzLCBhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLl0pXSkKK1tkZXBlbmRlbnQgbGlicmFyaWVzLCBhbmQgd2hlcmUgb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLl0pXSkKIAogIyBfTFRfRU5BQkxFX0xPQ0sKICMgLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjU5LDMxICsxMjgyLDMzIEBACiBbQUNfQVJHX0VOQUJMRShbbGlidG9vbC1sb2NrXSwKICAgW0FTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGlidG9vbC1sb2NrXSwKICAgICBbYXZvaWQgbG9ja2luZyAobWlnaHQgYnJlYWsgcGFyYWxsZWwgYnVpbGRzKV0pXSkKLXRlc3QgIngkZW5hYmxlX2xpYnRvb2xfbG9jayIgIT0geG5vICYmIGVuYWJsZV9saWJ0b29sX2xvY2s9eWVzCit0ZXN0IG5vID0gIiRlbmFibGVfbGlidG9vbF9sb2NrIiB8fCBlbmFibGVfbGlidG9vbF9sb2NrPXllcwogCiAjIFNvbWUgZmxhZ3MgbmVlZCB0byBiZSBwcm9wYWdhdGVkIHRvIHRoZSBjb21waWxlciBvciBsaW5rZXIgZm9yIGdvb2QKICMgbGlidG9vbCBzdXBwb3J0LgogY2FzZSAkaG9zdCBpbgogaWE2NC0qLWhwdXgqKQotICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBtb2RlCisgICMgb3B0aW9ucyBhY2NvcmRpbmdseS4KICAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KICAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCiAgICAgICAqRUxGLTMyKikKLQlIUFVYX0lBNjRfTU9ERT0iMzIiCisJSFBVWF9JQTY0X01PREU9MzIKIAk7OwogICAgICAgKkVMRi02NCopCi0JSFBVWF9JQTY0X01PREU9IjY0IgorCUhQVVhfSUE2NF9NT0RFPTY0CiAJOzsKICAgICBlc2FjCiAgIGZpCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgOzsKICotKi1pcml4NiopCi0gICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KKyAgIyBGaW5kIG91dCB3aGF0IEFCSSBpcyBiZWluZyBwcm9kdWNlZCBieSBhY19jb21waWxlLCBhbmQgc2V0IGxpbmtlcgorICAjIG9wdGlvbnMgYWNjb3JkaW5nbHkuCiAgIGVjaG8gJ1sjXWxpbmUgJyRMSU5FTk8nICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAgICBpZiB0ZXN0ICIkbHRfY3ZfcHJvZ19nbnVfbGQiID0geWVzOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgPSAiJGx0X2N2X3Byb2dfZ251X2xkIjsgdGhlbgogICAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC4kYWNfb2JqZXh0YCBpbgogCSozMi1iaXQqKQogCSAgTEQ9IiR7TEQtbGR9IC1tZWxmMzJic21pcCIKQEAgLTEzMTIsOSArMTMzNyw0NiBAQAogICBybSAtcmYgY29uZnRlc3QqCiAgIDs7CiAKK21pcHM2NCotKmxpbnV4KikKKyAgIyBGaW5kIG91dCB3aGF0IEFCSSBpcyBiZWluZyBwcm9kdWNlZCBieSBhY19jb21waWxlLCBhbmQgc2V0IGxpbmtlcgorICAjIG9wdGlvbnMgYWNjb3JkaW5nbHkuCisgIGVjaG8gJ1sjXWxpbmUgJyRMSU5FTk8nICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgICBlbXVsPWVsZgorICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KKyAgICAgICozMi1iaXQqKQorCWVtdWw9IiR7ZW11bH0zMiIKKwk7OworICAgICAgKjY0LWJpdCopCisJZW11bD0iJHtlbXVsfTY0IgorCTs7CisgICAgZXNhYworICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KKyAgICAgICpNU0IqKQorCWVtdWw9IiR7ZW11bH1idHNtaXAiCisJOzsKKyAgICAgICpMU0IqKQorCWVtdWw9IiR7ZW11bH1sdHNtaXAiCisJOzsKKyAgICBlc2FjCisgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC4kYWNfb2JqZXh0YCBpbgorICAgICAgKk4zMiopCisJZW11bD0iJHtlbXVsfW4zMiIKKwk7OworICAgIGVzYWMKKyAgICBMRD0iJHtMRC1sZH0gLW0gJGVtdWwiCisgIGZpCisgIHJtIC1yZiBjb25mdGVzdCoKKyAgOzsKKwogeDg2XzY0LSprZnJlZWJzZCotZ251fHg4Nl82NC0qbGludXgqfHBvd2VycGMqLSpsaW51eCp8IFwKIHMzOTAqLSpsaW51eCp8czM5MCotKnRwZip8c3BhcmMqLSpsaW51eCopCi0gICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KKyAgIyBGaW5kIG91dCB3aGF0IEFCSSBpcyBiZWluZyBwcm9kdWNlZCBieSBhY19jb21waWxlLCBhbmQgc2V0IGxpbmtlcgorICAjIG9wdGlvbnMgYWNjb3JkaW5nbHkuICBOb3RlIHRoYXQgdGhlIGxpc3RlZCBjYXNlcyBvbmx5IGNvdmVyIHRoZQorICAjIHNpdHVhdGlvbnMgd2hlcmUgYWRkaXRpb25hbCBsaW5rZXIgb3B0aW9ucyBhcmUgbmVlZGVkIChzdWNoIGFzIHdoZW4KKyAgIyBkb2luZyAzMi1iaXQgY29tcGlsYXRpb24gZm9yIGEgaG9zdCB3aGVyZSBsZCBkZWZhdWx0cyB0byA2NC1iaXQsIG9yCisgICMgdmljZSB2ZXJzYSk7IHRoZSBjb21tb24gY2FzZXMgd2hlcmUgbm8gbGlua2VyIG9wdGlvbnMgYXJlIG5lZWRlZCBkbworICAjIG5vdCBhcHBlYXIgaW4gdGhlIGxpc3QuCiAgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC5vYCBpbgpAQCAtMTMzMywxMCArMTM5NSwxMCBAQAogCQk7OwogCSAgICBlc2FjCiAJICAgIDs7Ci0JICBwb3dlcnBjNjRsZS0qKQorCSAgcG93ZXJwYzY0bGUtKmxpbnV4KikKIAkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZjMybHBwY2xpbnV4IgogCSAgICA7OwotCSAgcG93ZXJwYzY0LSopCisJICBwb3dlcnBjNjQtKmxpbnV4KikKIAkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZjMycHBjbGludXgiCiAJICAgIDs7CiAJICBzMzkweC0qbGludXgqKQpAQCAtMTM1NSwxMCArMTQxNywxMCBAQAogCSAgeDg2XzY0LSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGZfeDg2XzY0IgogCSAgICA7OwotCSAgcG93ZXJwY2xlLSopCisJICBwb3dlcnBjbGUtKmxpbnV4KikKIAkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZjY0bHBwYyIKIAkgICAgOzsKLQkgIHBvd2VycGMtKikKKwkgIHBvd2VycGMtKmxpbnV4KikKIAkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZjY0cHBjIgogCSAgICA7OwogCSAgczM5MCotKmxpbnV4KnxzMzkwKi0qdHBmKikKQEAgLTEzNzYsMTkgKzE0MzgsMjAgQEAKIAogKi0qLXNjbzMuMnY1KikKICAgIyBPbiBTQ08gT3BlblNlcnZlciA1LCB3ZSBuZWVkIC1iZWxmIHRvIGdldCBmdWxsLWZlYXR1cmVkIGJpbmFyaWVzLgotICBTQVZFX0NGTEFHUz0iJENGTEFHUyIKKyAgU0FWRV9DRkxBR1M9JENGTEFHUwogICBDRkxBR1M9IiRDRkxBR1MgLWJlbGYiCiAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIG5lZWRzIC1iZWxmXSwgbHRfY3ZfY2NfbmVlZHNfYmVsZiwKICAgICBbQUNfTEFOR19QVVNIKEMpCiAgICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tdXSxbW11dKV0sW2x0X2N2X2NjX25lZWRzX2JlbGY9eWVzXSxbbHRfY3ZfY2NfbmVlZHNfYmVsZj1ub10pCiAgICAgIEFDX0xBTkdfUE9QXSkKLSAgaWYgdGVzdCB4IiRsdF9jdl9jY19uZWVkc19iZWxmIiAhPSB4InllcyI7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgIT0gIiRsdF9jdl9jY19uZWVkc19iZWxmIjsgdGhlbgogICAgICMgdGhpcyBpcyBwcm9iYWJseSBnY2MgMi44LjAsIGVnY3MgMS4wIG9yIG5ld2VyOyBubyBuZWVkIGZvciAtYmVsZgotICAgIENGTEFHUz0iJFNBVkVfQ0ZMQUdTIgorICAgIENGTEFHUz0kU0FWRV9DRkxBR1MKICAgZmkKICAgOzsKICotKnNvbGFyaXMqKQotICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBsaW5rZXIKKyAgIyBvcHRpb25zIGFjY29yZGluZ2x5LgogICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgogICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3Qub2AgaW4KQEAgLTEzOTYsNyArMTQ1OSw3IEBACiAgICAgICBjYXNlICRsdF9jdl9wcm9nX2dudV9sZCBpbgogICAgICAgeWVzKikKICAgICAgICAgY2FzZSAkaG9zdCBpbgotICAgICAgICBpPzg2LSotc29sYXJpcyopCisgICAgICAgIGk/ODYtKi1zb2xhcmlzKnx4ODZfNjQtKi1zb2xhcmlzKikKICAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKICAgICAgICAgICA7OwogICAgICAgICBzcGFyYyotKi1zb2xhcmlzKikKQEAgLTE0MDUsNyArMTQ2OCw3IEBACiAgICAgICAgIGVzYWMKICAgICAgICAgIyBHTlUgbGQgMi4yMSBpbnRyb2R1Y2VkIF9zb2wyIGVtdWxhdGlvbnMuICBVc2UgdGhlbSBpZiBhdmFpbGFibGUuCiAgICAgICAgIGlmICR7TEQtbGR9IC1WIHwgZ3JlcCBfc29sMiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgICAgICBMRD0iJHtMRC1sZH1fc29sMiIKKyAgICAgICAgICBMRD0ke0xELWxkfV9zb2wyCiAgICAgICAgIGZpCiAgICAgICAgIDs7CiAgICAgICAqKQpAQCAtMTQyMSw3ICsxNDg0LDcgQEAKICAgOzsKIGVzYWMKIAotbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCituZWVkX2xvY2tzPSRlbmFibGVfbGlidG9vbF9sb2NrCiBdKSMgX0xUX0VOQUJMRV9MT0NLCiAKIApAQCAtMTQ0MCwxMSArMTUwMywxMSBAQAogICAgICBbZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CiAgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mQVNfTUVTU0FHRV9MT0dfRkQnCiAgICAgICBBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKLSAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisgICAgICBpZiB0ZXN0IDAgLWVxICIkYWNfc3RhdHVzIjsgdGhlbgogCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCiAJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCiAJQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCi0JaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKwlpZiB0ZXN0IDAgLW5lICIkYWNfc3RhdHVzIjsgdGhlbgogICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAogICAgICAgICBmaQogICAgICAgZmkKQEAgLTE0NTIsNyArMTUxNSw3IEBACiAgICAgIF0pCiAgIF0pCiAKLWlmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KK2lmIHRlc3Qgbm8gPSAiJGx0X2N2X2FyX2F0X2ZpbGUiOyB0aGVuCiAgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KIGVsc2UKICAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCkBAIC0xNDgzLDcgKzE1NDYsNyBAQAogCiBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgogICBjYXNlICRob3N0X29zIGluCi0gIG9wZW5ic2QqKQorICBiaXRyaWcqIHwgb3BlbmJzZCopCiAgICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiAtdCBcJHRvb2xfb2xkbGliIgogICAgIDs7CiAgICopCkBAIC0xNTE5LDcgKzE1ODIsNyBAQAogICBbJDI9bm8KICAgIG00X2lmKFskNF0sICwgW2FjX291dGZpbGU9Y29uZnRlc3QuJGFjX29iamV4dF0sIFthY19vdXRmaWxlPSQ0XSkKICAgIGVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAotICAgbHRfY29tcGlsZXJfZmxhZz0iJDMiCisgICBsdF9jb21waWxlcl9mbGFnPSIkMyIgICMjIGV4Y2x1ZGUgZnJvbSBzY191c2VsZXNzX3F1b3Rlc19pbl9hc3NpZ25tZW50CiAgICAjIEluc2VydCB0aGUgb3B0aW9uIGVpdGhlciAoMSkgYWZ0ZXIgdGhlIGxhc3QgKkZMQUdTIHZhcmlhYmxlLCBvcgogICAgIyAoMikgYmVmb3JlIGEgd29yZCBjb250YWluaW5nICJjb25mdGVzdC4iLCBvciAoMykgYXQgdGhlIGVuZC4KICAgICMgTm90ZSB0aGF0ICRhY19jb21waWxlIGl0c2VsZiBkb2VzIG5vdCBjb250YWluIGJhY2tzbGFzaGVzIGFuZCBiZWdpbnMKQEAgLTE1NDYsNyArMTYwOSw3IEBACiAgICAkUk0gY29uZnRlc3QqCiBdKQogCi1pZiB0ZXN0IHgiWyRdJDIiID0geHllczsgdGhlbgoraWYgdGVzdCB5ZXMgPSAiWyRdJDIiOyB0aGVuCiAgICAgbTRfaWYoWyQ1XSwgLCA6LCBbJDVdKQogZWxzZQogICAgIG00X2lmKFskNl0sICwgOiwgWyQ2XSkKQEAgLTE1NjgsNyArMTYzMSw3IEBACiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAogQUNfQ0FDSEVfQ0hFQ0soWyQxXSwgWyQyXSwKICAgWyQyPW5vCi0gICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorICAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCiAgICBMREZMQUdTPSIkTERGTEFHUyAkMyIKICAgIGVjaG8gIiRsdF9zaW1wbGVfbGlua190ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAogICAgaWYgKGV2YWwgJGFjX2xpbmsgMj5jb25mdGVzdC5lcnIpICYmIHRlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0OyB0aGVuCkBAIC0xNTg3LDEwICsxNjUwLDEwIEBACiAgICAgIGZpCiAgICBmaQogICAgJFJNIC1yIGNvbmZ0ZXN0KgotICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKyAgIExERkxBR1M9JHNhdmVfTERGTEFHUwogXSkKIAotaWYgdGVzdCB4IlskXSQyIiA9IHh5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIlskXSQyIjsgdGhlbgogICAgIG00X2lmKFskNF0sICwgOiwgWyQ0XSkKIGVsc2UKICAgICBtNF9pZihbJDVdLCAsIDosIFskNV0pCkBAIC0xNjExLDcgKzE2NzQsNyBAQAogQUNfTVNHX0NIRUNLSU5HKFt0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50c10pCiBBQ19DQUNIRV9WQUwoW2x0X2N2X3N5c19tYXhfY21kX2xlbl0sIFtkbmwKICAgaT0wCi0gIHRlc3RzdHJpbmc9IkFCQ0QiCisgIHRlc3RzdHJpbmc9QUJDRAogCiAgIGNhc2UgJGJ1aWxkX29zIGluCiAgIG1zZG9zZGpncHAqKQpAQCAtMTY1MSw3ICsxNzE0LDcgQEAKICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKICAgICA7OwogCi0gIG5ldGJzZCogfCBmcmVlYnNkKiB8IG9wZW5ic2QqIHwgZGFyd2luKiB8IGRyYWdvbmZseSopCisgIGJpdHJpZyogfCBkYXJ3aW4qIHwgZHJhZ29uZmx5KiB8IGZyZWVic2QqIHwgbmV0YnNkKiB8IG9wZW5ic2QqKQogICAgICMgVGhpcyBoYXMgYmVlbiBhcm91bmQgc2luY2UgMzg2QlNELCBhdCBsZWFzdC4gIExpa2VseSBmdXJ0aGVyLgogICAgIGlmIHRlc3QgLXggL3NiaW4vc3lzY3RsOyB0aGVuCiAgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YC9zYmluL3N5c2N0bCAtbiBrZXJuLmFyZ21heGAKQEAgLTE3MDIsMjIgKzE3NjUsMjIgQEAKICAgKikKICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YChnZXRjb25mIEFSR19NQVgpIDI+IC9kZXYvbnVsbGAKICAgICBpZiB0ZXN0IC1uICIkbHRfY3Zfc3lzX21heF9jbWRfbGVuIiAmJiBcCi0JdGVzdCB1bmRlZmluZWQgIT0gIiRsdF9jdl9zeXNfbWF4X2NtZF9sZW4iOyB0aGVuCisgICAgICAgdGVzdCB1bmRlZmluZWQgIT0gIiRsdF9jdl9zeXNfbWF4X2NtZF9sZW4iOyB0aGVuCiAgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgJGx0X2N2X3N5c19tYXhfY21kX2xlbiBcLyA0YAogICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXCogM2AKICAgICBlbHNlCiAgICAgICAjIE1ha2UgdGVzdHN0cmluZyBhIGxpdHRsZSBiaWdnZXIgYmVmb3JlIHdlIGRvIGFueXRoaW5nIHdpdGggaXQuCiAgICAgICAjIGEgMUsgc3RyaW5nIHNob3VsZCBiZSBhIHJlYXNvbmFibGUgc3RhcnQuCi0gICAgICBmb3IgaSBpbiAxIDIgMyA0IDUgNiA3IDggOyBkbworICAgICAgZm9yIGkgaW4gMSAyIDMgNCA1IDYgNyA4OyBkbwogICAgICAgICB0ZXN0c3RyaW5nPSR0ZXN0c3RyaW5nJHRlc3RzdHJpbmcKICAgICAgIGRvbmUKICAgICAgIFNIRUxMPSR7U0hFTEwtJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH19CiAgICAgICAjIElmIHRlc3QgaXMgbm90IGEgc2hlbGwgYnVpbHQtaW4sIHdlJ2xsIHByb2JhYmx5IGVuZCB1cCBjb21wdXRpbmcgYQogICAgICAgIyBtYXhpbXVtIGxlbmd0aCB0aGF0IGlzIG9ubHkgaGFsZiBvZiB0aGUgYWN0dWFsIG1heGltdW0gbGVuZ3RoLCBidXQKICAgICAgICMgd2UgY2FuJ3QgdGVsbC4KLSAgICAgIHdoaWxlIHsgdGVzdCAiWCJgZW52IGVjaG8gIiR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCisgICAgICB3aGlsZSB7IHRlc3QgWGBlbnYgZWNobyAiJHRlc3RzdHJpbmckdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKIAkgICAgICAgICA9ICJYJHRlc3RzdHJpbmckdGVzdHN0cmluZyI7IH0gPi9kZXYvbnVsbCAyPiYxICYmCi0JICAgICAgdGVzdCAkaSAhPSAxNyAjIDEvMiBNQiBzaG91bGQgYmUgZW5vdWdoCisJICAgICAgdGVzdCAxNyAhPSAiJGkiICMgMS8yIE1CIHNob3VsZCBiZSBlbm91Z2gKICAgICAgIGRvCiAgICAgICAgIGk9YGV4cHIgJGkgKyAxYAogICAgICAgICB0ZXN0c3RyaW5nPSR0ZXN0c3RyaW5nJHRlc3RzdHJpbmcKQEAgLTE3MzMsNyArMTc5Niw3IEBACiAgICAgOzsKICAgZXNhYwogXSkKLWlmIHRlc3QgLW4gJGx0X2N2X3N5c19tYXhfY21kX2xlbiA7IHRoZW4KK2lmIHRlc3QgLW4gIiRsdF9jdl9zeXNfbWF4X2NtZF9sZW4iOyB0aGVuCiAgIEFDX01TR19SRVNVTFQoJGx0X2N2X3N5c19tYXhfY21kX2xlbikKIGVsc2UKICAgQUNfTVNHX1JFU1VMVChub25lKQpAQCAtMTc2MSw3ICsxODI0LDcgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbTRfZGVmdW4oW19MVF9UUllfRExPUEVOX1NFTEZdLAogW200X3JlcXVpcmUoW19MVF9IRUFERVJfRExGQ05dKWRubAotaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgoraWYgdGVzdCB5ZXMgPSAiJGNyb3NzX2NvbXBpbGluZyI7IHRoZW4gOgogICBbJDRdCiBlbHNlCiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKQEAgLTE4MDgsOSArMTg3MSw5IEBACiAjICBlbmRpZgogI2VuZGlmCiAKLS8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKy8qIFdoZW4gLWZ2aXNpYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCiAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKyNpZiBkZWZpbmVkIF9fR05VQ19fICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCiBpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CiAjZW5kaWYKIApAQCAtMTgzNiw3ICsxODk5LDcgQEAKICAgcmV0dXJuIHN0YXR1czsKIH1dCiBfTFRfRU9GCi0gIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gMj4vZGV2L251bGw7IHRoZW4KKyAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyAiY29uZnRlc3QkYWNfZXhlZXh0IiAyPi9kZXYvbnVsbDsgdGhlbgogICAgICguL2NvbmZ0ZXN0OyBleGl0OyApID4mQVNfTUVTU0FHRV9MT0dfRkQgMj4vZGV2L251bGwKICAgICBsdF9zdGF0dXM9JD8KICAgICBjYXNlIHgkbHRfc3RhdHVzIGluCkBAIC0xODU3LDcgKzE5MjAsNyBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0KIEFDX0RFRlVOKFtMVF9TWVNfRExPUEVOX1NFTEZdLAogW200X3JlcXVpcmUoW19MVF9IRUFERVJfRExGQ05dKWRubAotaWYgdGVzdCAieCRlbmFibGVfZGxvcGVuIiAhPSB4eWVzOyB0aGVuCitpZiB0ZXN0IHllcyAhPSAiJGVuYWJsZV9kbG9wZW4iOyB0aGVuCiAgIGVuYWJsZV9kbG9wZW49dW5rbm93bgogICBlbmFibGVfZGxvcGVuX3NlbGY9dW5rbm93bgogICBlbmFibGVfZGxvcGVuX3NlbGZfc3RhdGljPXVua25vd24KQEAgLTE4NjcsNDQgKzE5MzAsNTIgQEAKIAogICBjYXNlICRob3N0X29zIGluCiAgIGJlb3MqKQotICAgIGx0X2N2X2Rsb3Blbj0ibG9hZF9hZGRfb24iCisgICAgbHRfY3ZfZGxvcGVuPWxvYWRfYWRkX29uCiAgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CiAgICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCiAgICAgOzsKIAogICBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICBsdF9jdl9kbG9wZW49IkxvYWRMaWJyYXJ5IgorICAgIGx0X2N2X2Rsb3Blbj1Mb2FkTGlicmFyeQogICAgIGx0X2N2X2Rsb3Blbl9saWJzPQogICAgIDs7CiAKICAgY3lnd2luKikKLSAgICBsdF9jdl9kbG9wZW49ImRsb3BlbiIKKyAgICBsdF9jdl9kbG9wZW49ZGxvcGVuCiAgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CiAgICAgOzsKIAogICBkYXJ3aW4qKQotICAjIGlmIGxpYmRsIGlzIGluc3RhbGxlZCB3ZSBuZWVkIHRvIGxpbmsgYWdhaW5zdCBpdAorICAgICMgaWYgbGliZGwgaXMgaW5zdGFsbGVkIHdlIG5lZWQgdG8gbGluayBhZ2FpbnN0IGl0CiAgICAgQUNfQ0hFQ0tfTElCKFtkbF0sIFtkbG9wZW5dLAotCQlbbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsIl0sWwotICAgIGx0X2N2X2Rsb3Blbj0iZHlsZCIKKwkJW2x0X2N2X2Rsb3Blbj1kbG9wZW4gbHRfY3ZfZGxvcGVuX2xpYnM9LWxkbF0sWworICAgIGx0X2N2X2Rsb3Blbj1keWxkCiAgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CiAgICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCiAgICAgXSkKICAgICA7OwogCisgIHRwZiopCisgICAgIyBEb24ndCB0cnkgdG8gcnVuIGFueSBsaW5rIHRlc3RzIGZvciBUUEYuICBXZSBrbm93IGl0J3MgaW1wb3NzaWJsZQorICAgICMgYmVjYXVzZSBUUEYgaXMgYSBjcm9zcy1jb21waWxlciwgYW5kIHdlIGtub3cgaG93IHdlIG9wZW4gRFNPcy4KKyAgICBsdF9jdl9kbG9wZW49ZGxvcGVuCisgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CisgICAgbHRfY3ZfZGxvcGVuX3NlbGY9bm8KKyAgICA7OworCiAgICopCiAgICAgQUNfQ0hFQ0tfRlVOQyhbc2hsX2xvYWRdLAotCSAgW2x0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiXSwKKwkgIFtsdF9jdl9kbG9wZW49c2hsX2xvYWRdLAogICAgICAgW0FDX0NIRUNLX0xJQihbZGxkXSwgW3NobF9sb2FkXSwKLQkgICAgW2x0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsZCJdLAorCSAgICBbbHRfY3ZfZGxvcGVuPXNobF9sb2FkIGx0X2N2X2Rsb3Blbl9saWJzPS1sZGxkXSwKIAlbQUNfQ0hFQ0tfRlVOQyhbZGxvcGVuXSwKLQkgICAgICBbbHRfY3ZfZGxvcGVuPSJkbG9wZW4iXSwKKwkgICAgICBbbHRfY3ZfZGxvcGVuPWRsb3Blbl0sCiAJICBbQUNfQ0hFQ0tfTElCKFtkbF0sIFtkbG9wZW5dLAotCQlbbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsIl0sCisJCVtsdF9jdl9kbG9wZW49ZGxvcGVuIGx0X2N2X2Rsb3Blbl9saWJzPS1sZGxdLAogCSAgICBbQUNfQ0hFQ0tfTElCKFtzdmxkXSwgW2Rsb3Blbl0sCi0JCSAgW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxzdmxkIl0sCisJCSAgW2x0X2N2X2Rsb3Blbj1kbG9wZW4gbHRfY3ZfZGxvcGVuX2xpYnM9LWxzdmxkXSwKIAkgICAgICBbQUNfQ0hFQ0tfTElCKFtkbGRdLCBbZGxkX2xpbmtdLAotCQkgICAgW2x0X2N2X2Rsb3Blbj0iZGxkX2xpbmsiIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsZCJdKQorCQkgICAgW2x0X2N2X2Rsb3Blbj1kbGRfbGluayBsdF9jdl9kbG9wZW5fbGlicz0tbGRsZF0pCiAJICAgICAgXSkKIAkgICAgXSkKIAkgIF0pCkBAIC0xOTEzLDIxICsxOTg0LDIxIEBACiAgICAgOzsKICAgZXNhYwogCi0gIGlmIHRlc3QgIngkbHRfY3ZfZGxvcGVuIiAhPSB4bm87IHRoZW4KLSAgICBlbmFibGVfZGxvcGVuPXllcwotICBlbHNlCisgIGlmIHRlc3Qgbm8gPSAiJGx0X2N2X2Rsb3BlbiI7IHRoZW4KICAgICBlbmFibGVfZGxvcGVuPW5vCisgIGVsc2UKKyAgICBlbmFibGVfZGxvcGVuPXllcwogICBmaQogCiAgIGNhc2UgJGx0X2N2X2Rsb3BlbiBpbgogICBkbG9wZW4pCi0gICAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotICAgIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2RsZmNuX2giID0geHllcyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1ESEFWRV9ETEZDTl9IIgorICAgIHNhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisgICAgdGVzdCB5ZXMgPSAiJGFjX2N2X2hlYWRlcl9kbGZjbl9oIiAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1ESEFWRV9ETEZDTl9IIgogCi0gICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgICBzYXZlX0xERkxBR1M9JExERkxBR1MKICAgICB3bD0kbHRfcHJvZ19jb21waWxlcl93bCBldmFsIExERkxBR1M9XCJcJExERkxBR1MgJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiCiAKLSAgICBzYXZlX0xJQlM9IiRMSUJTIgorICAgIHNhdmVfTElCUz0kTElCUwogICAgIExJQlM9IiRsdF9jdl9kbG9wZW5fbGlicyAkTElCUyIKIAogICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGEgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZl0sCkBAIC0xOTM3LDcgKzIwMDgsNyBAQAogCSAgICBsdF9jdl9kbG9wZW5fc2VsZj1ubywgbHRfY3ZfZGxvcGVuX3NlbGY9Y3Jvc3MpCiAgICAgXSkKIAotICAgIGlmIHRlc3QgIngkbHRfY3ZfZGxvcGVuX3NlbGYiID0geHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9kbG9wZW5fc2VsZiI7IHRoZW4KICAgICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNcIgogICAgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgYSBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmXSwKIAkgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYywgW2RubApAQCAtMTk0Nyw5ICsyMDE4LDkgQEAKICAgICAgIF0pCiAgICAgZmkKIAotICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKLSAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotICAgIExJQlM9IiRzYXZlX0xJQlMiCisgICAgQ1BQRkxBR1M9JHNhdmVfQ1BQRkxBR1MKKyAgICBMREZMQUdTPSRzYXZlX0xERkxBR1MKKyAgICBMSUJTPSRzYXZlX0xJQlMKICAgICA7OwogICBlc2FjCiAKQEAgLTIwNDEsOCArMjExMiw4IEBACiBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKIF9MVF9DT01QSUxFUl9DX08oWyQxXSkKIAotaGFyZF9saW5rcz0ibm90dGVzdGVkIgotaWYgdGVzdCAiJF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKSIgPSBubyAmJiB0ZXN0ICIkbmVlZF9sb2NrcyIgIT0gbm87IHRoZW4KK2hhcmRfbGlua3M9bm90dGVzdGVkCitpZiB0ZXN0IG5vID0gIiRfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSkiICYmIHRlc3Qgbm8gIT0gIiRuZWVkX2xvY2tzIjsgdGhlbgogICAjIGRvIG5vdCBvdmVyd3JpdGUgdGhlIHZhbHVlIG9mIG5lZWRfbG9ja3MgcHJvdmlkZWQgYnkgdGhlIHVzZXIKICAgQUNfTVNHX0NIRUNLSU5HKFtpZiB3ZSBjYW4gbG9jayB3aXRoIGhhcmQgbGlua3NdKQogICBoYXJkX2xpbmtzPXllcwpAQCAtMjA1Miw4ICsyMTIzLDggQEAKICAgbG4gY29uZnRlc3QuYSBjb25mdGVzdC5iIDI+JjUgfHwgaGFyZF9saW5rcz1ubwogICBsbiBjb25mdGVzdC5hIGNvbmZ0ZXN0LmIgMj4vZGV2L251bGwgJiYgaGFyZF9saW5rcz1ubwogICBBQ19NU0dfUkVTVUxUKFskaGFyZF9saW5rc10pCi0gIGlmIHRlc3QgIiRoYXJkX2xpbmtzIiA9IG5vOyB0aGVuCi0gICAgQUNfTVNHX1dBUk4oW2AkQ0MnIGRvZXMgbm90IHN1cHBvcnQgYC1jIC1vJywgc28gYG1ha2UgLWonIG1heSBiZSB1bnNhZmVdKQorICBpZiB0ZXN0IG5vID0gIiRoYXJkX2xpbmtzIjsgdGhlbgorICAgIEFDX01TR19XQVJOKFsnJENDJyBkb2VzIG5vdCBzdXBwb3J0ICctYyAtbycsIHNvICdtYWtlIC1qJyBtYXkgYmUgdW5zYWZlXSkKICAgICBuZWVkX2xvY2tzPXdhcm4KICAgZmkKIGVsc2UKQEAgLTIwODAsOCArMjE1MSw4IEBACiBfTFRfREVDTChbXSwgW29iamRpcl0sIFswXSwKICAgICAgICAgIFtUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXNdKWRubAogbTRfcGF0dGVybl9hbGxvdyhbTFRfT0JKRElSXSlkbmwKLUFDX0RFRklORV9VTlFVT1RFRChMVF9PQkpESVIsICIkbHRfY3Zfb2JqZGlyLyIsCi0gIFtEZWZpbmUgdG8gdGhlIHN1Yi1kaXJlY3RvcnkgaW4gd2hpY2ggbGlidG9vbCBzdG9yZXMgdW5pbnN0YWxsZWQgbGlicmFyaWVzLl0pCitBQ19ERUZJTkVfVU5RVU9URUQoW0xUX09CSkRJUl0sICIkbHRfY3Zfb2JqZGlyLyIsCisgIFtEZWZpbmUgdG8gdGhlIHN1Yi1kaXJlY3Rvcnkgd2hlcmUgbGlidG9vbCBzdG9yZXMgdW5pbnN0YWxsZWQgbGlicmFyaWVzLl0pCiBdKSMgX0xUX0NIRUNLX09CSkRJUgogCiAKQEAgLTIwOTMsMTUgKzIxNjQsMTUgQEAKIF9MVF9UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSk9CiBpZiB0ZXN0IC1uICIkX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkiIHx8CiAgICB0ZXN0IC1uICIkX0xUX1RBR1ZBUihydW5wYXRoX3ZhciwgJDEpIiB8fAotICAgdGVzdCAiWCRfTFRfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpIiA9ICJYeWVzIiA7IHRoZW4KKyAgIHRlc3QgeWVzID0gIiRfTFRfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpIjsgdGhlbgogCiAgICMgV2UgY2FuIGhhcmRjb2RlIG5vbi1leGlzdGVudCBkaXJlY3Rvcmllcy4KLSAgaWYgdGVzdCAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSkiICE9IG5vICYmCisgIGlmIHRlc3Qgbm8gIT0gIiRfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpIiAmJgogICAgICAjIElmIHRoZSBvbmx5IG1lY2hhbmlzbSB0byBhdm9pZCBoYXJkY29kaW5nIGlzIHNobGlicGF0aF92YXIsIHdlCiAgICAgICMgaGF2ZSB0byByZWxpbmssIG90aGVyd2lzZSB3ZSBtaWdodCBsaW5rIHdpdGggYW4gaW5zdGFsbGVkIGxpYnJhcnkKICAgICAgIyB3aGVuIHdlIHNob3VsZCBiZSBsaW5raW5nIHdpdGggYSB5ZXQtdG8tYmUtaW5zdGFsbGVkIG9uZQotICAgICAjIyB0ZXN0ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSkiICE9IG5vICYmCi0gICAgIHRlc3QgIiRfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKSIgIT0gbm87IHRoZW4KKyAgICAgIyMgdGVzdCBubyAhPSAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpIiAmJgorICAgICB0ZXN0IG5vICE9ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSkiOyB0aGVuCiAgICAgIyBMaW5raW5nIGFsd2F5cyBoYXJkY29kZXMgdGhlIHRlbXBvcmFyeSBsaWJyYXJ5IGRpcmVjdG9yeS4KICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPXJlbGluawogICBlbHNlCkBAIC0yMTE1LDEyICsyMTg2LDEyIEBACiBmaQogQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSldKQogCi1pZiB0ZXN0ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKSIgPSByZWxpbmsgfHwKLSAgIHRlc3QgIiRfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKSIgPSB5ZXM7IHRoZW4KK2lmIHRlc3QgcmVsaW5rID0gIiRfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpIiB8fAorICAgdGVzdCB5ZXMgPSAiJF9MVF9UQUdWQVIoaW5oZXJpdF9ycGF0aCwgJDEpIjsgdGhlbgogICAjIEZhc3QgaW5zdGFsbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKICAgZW5hYmxlX2Zhc3RfaW5zdGFsbD1ubwotZWxpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyB8fAotICAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSBubzsgdGhlbgorZWxpZiB0ZXN0IHllcyA9ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiB8fAorICAgICB0ZXN0IG5vID0gIiRlbmFibGVfc2hhcmVkIjsgdGhlbgogICAjIEZhc3QgaW5zdGFsbGF0aW9uIGlzIG5vdCBuZWNlc3NhcnkKICAgZW5hYmxlX2Zhc3RfaW5zdGFsbD1uZWVkbGVzcwogZmkKQEAgLTIxNDQsNyArMjIxNSw3IEBACiAjIEZJWE1FIC0gaW5zZXJ0IHNvbWUgcmVhbCB0ZXN0cywgaG9zdF9vcyBpc24ndCByZWFsbHkgZ29vZCBlbm91Z2gKICAgY2FzZSAkaG9zdF9vcyBpbgogICBkYXJ3aW4qKQotICAgIGlmIHRlc3QgLW4gIiRTVFJJUCIgOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJFNUUklQIjsgdGhlbgogICAgICAgc3RyaXBsaWI9IiRTVFJJUCAteCIKICAgICAgIG9sZF9zdHJpcGxpYj0iJFNUUklQIC1TIgogICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKQEAgLTIxNjIsNiArMjIzMyw0NyBAQAogXSkjIF9MVF9DTURfU1RSSVBMSUIKIAogCisjIF9MVF9QUkVQQVJFX01VTkdFX1BBVEhfTElTVAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTWFrZSBzdXJlIGZ1bmNfbXVuZ2VfcGF0aF9saXN0KCkgaXMgZGVmaW5lZCBjb3JyZWN0bHkuCittNF9kZWZ1bihbX0xUX1BSRVBBUkVfTVVOR0VfUEFUSF9MSVNUXSwKK1tbIyBmdW5jX211bmdlX3BhdGhfbGlzdCBWQVJJQUJMRSBQQVRICisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFZBUklBQkxFIGlzIG5hbWUgb2YgdmFyaWFibGUgY29udGFpbmluZyBfc3BhY2VfIHNlcGFyYXRlZCBsaXN0IG9mCisjIGRpcmVjdG9yaWVzIHRvIGJlIG11bmdlZCBieSB0aGUgY29udGVudHMgb2YgUEFUSCwgd2hpY2ggaXMgc3RyaW5nCisjIGhhdmluZyBhIGZvcm1hdDoKKyMgIkRJUls6RElSXToiCisjICAgICAgIHN0cmluZyAiRElSWyBESVJdIiB3aWxsIGJlIHByZXBlbmRlZCB0byBWQVJJQUJMRQorIyAiOkRJUls6RElSXSIKKyMgICAgICAgc3RyaW5nICJESVJbIERJUl0iIHdpbGwgYmUgYXBwZW5kZWQgdG8gVkFSSUFCTEUKKyMgIkRJUlBbOkRJUlBdOjpbRElSQTpdRElSQSIKKyMgICAgICAgc3RyaW5nICJESVJQWyBESVJQXSIgd2lsbCBiZSBwcmVwZW5kZWQgdG8gVkFSSUFCTEUgYW5kIHN0cmluZworIyAgICAgICAiRElSQVsgRElSQV0iIHdpbGwgYmUgYXBwZW5kZWQgdG8gVkFSSUFCTEUKKyMgIkRJUls6RElSXSIKKyMgICAgICAgVkFSSUFCTEUgd2lsbCBiZSByZXBsYWNlZCBieSAiRElSWyBESVJdIgorZnVuY19tdW5nZV9wYXRoX2xpc3QgKCkKK3sKKyAgICBjYXNlIHhAU3xAMiBpbgorICAgIHgpCisgICAgICAgIDs7CisgICAgKjopCisgICAgICAgIGV2YWwgQFN8QDE9XCJgJEVDSE8gQFN8QDIgfCAkU0VEICdzLzovIC9nJ2AgXEBTfEBAU3xAMVwiCisgICAgICAgIDs7CisgICAgeDoqKQorICAgICAgICBldmFsIEBTfEAxPVwiXEBTfEBAU3xAMSBgJEVDSE8gQFN8QDIgfCAkU0VEICdzLzovIC9nJ2BcIgorICAgICAgICA7OworICAgICo6OiopCisgICAgICAgIGV2YWwgQFN8QDE9XCJcQFN8QEBTfEAxXCBgJEVDSE8gQFN8QDIgfCAkU0VEIC1lICdzLy4qOjovLycgLWUgJ3MvOi8gL2cnYFwiCisgICAgICAgIGV2YWwgQFN8QDE9XCJgJEVDSE8gQFN8QDIgfCAkU0VEIC1lICdzLzo6LiovLycgLWUgJ3MvOi8gL2cnYFwgXEBTfEBAU3xAMVwiCisgICAgICAgIDs7CisgICAgKikKKyAgICAgICAgZXZhbCBAU3xAMT1cImAkRUNITyBAU3xAMiB8ICRTRUQgJ3MvOi8gL2cnYFwiCisgICAgICAgIDs7CisgICAgZXNhYworfQorXV0pIyBfTFRfUFJFUEFSRV9QQVRIX0xJU1QKKworCiAjIF9MVF9TWVNfRFlOQU1JQ19MSU5LRVIoW1RBR10pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFBPUlRNRSBGaWxsIGluIHlvdXIgbGQuc28gY2hhcmFjdGVyaXN0aWNzCkBAIC0yMTcyLDE3ICsyMjg0LDE4IEBACiBtNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdKWRubAorbTRfcmVxdWlyZShbX0xUX1BSRVBBUkVfTVVOR0VfUEFUSF9MSVNUXSlkbmwKIEFDX01TR19DSEVDS0lORyhbZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzXSkKIG00X2lmKFskMV0sCiAJW10sIFsKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCitpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogICBjYXNlICRob3N0X29zIGluCi0gICAgZGFyd2luKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LywvTFIvIiA7OwotICAgICopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8iIDs7CisgICAgZGFyd2luKikgbHRfYXdrX2FyZz0nL15saWJyYXJpZXM6LywvTFIvJyA7OworICAgICopIGx0X2F3a19hcmc9Jy9ebGlicmFyaWVzOi8nIDs7CiAgIGVzYWMKICAgY2FzZSAkaG9zdF9vcyBpbgotICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VkX3N0cmlwX2VxPSJzLD1cKFtbQS1aYS16XV06XCksXDEsZyIgOzsKLSAgICAqKSBsdF9zZWRfc3RyaXBfZXE9InMsPS8sLyxnIiA7OworICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VkX3N0cmlwX2VxPSdzfD1cKFtbQS1aYS16XV06XCl8XDF8ZycgOzsKKyAgICAqKSBsdF9zZWRfc3RyaXBfZXE9J3N8PS98L3xnJyA7OwogICBlc2FjCiAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBhd2sgJGx0X2F3a19hcmcgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICRsdF9zZWRfc3RyaXBfZXFgCiAgIGNhc2UgJGx0X3NlYXJjaF9wYXRoX3NwZWMgaW4KQEAgLTIxOTgsMjggKzIzMTEsMzUgQEAKICAgICA7OwogICBlc2FjCiAgICMgT2ssIG5vdyB3ZSBoYXZlIHRoZSBwYXRoLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLCB3ZSBjYW4gc3RlcCB0aHJvdWdoIGl0Ci0gICMgYW5kIGFkZCBtdWx0aWxpYiBkaXIgaWYgbmVjZXNzYXJ5LgorICAjIGFuZCBhZGQgbXVsdGlsaWIgZGlyIGlmIG5lY2Vzc2FyeS4uLgogICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0KLSAgbHRfbXVsdGlfb3NfZGlyPWAkQ0MgJENQUEZMQUdTICRDRkxBR1MgJExERkxBR1MgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeSAyPi9kZXYvbnVsbGAKKyAgbHRfbXVsdGlfb3NfZGlyPS9gJENDICRDUFBGTEFHUyAkQ0ZMQUdTICRMREZMQUdTIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnkgMj4vZGV2L251bGxgCisgICMgLi4uYnV0IGlmIHNvbWUgcGF0aCBjb21wb25lbnQgYWxyZWFkeSBlbmRzIHdpdGggdGhlIG11bHRpbGliIGRpciB3ZSBhc3N1bWUKKyAgIyB0aGF0IGFsbCBpcyBmaW5lIGFuZCB0cnVzdCAtcHJpbnQtc2VhcmNoLWRpcnMgYXMgaXMgKEdDQyA0LjI/IG9yIG5ld2VyKS4KKyAgY2FzZSAiJGx0X211bHRpX29zX2RpcjsgJGx0X3NlYXJjaF9wYXRoX3NwZWMgIiBpbgorICAiLzsgIiogfCAiLy47ICIqIHwgIi8uLzsgIiogfCAqIiRsdF9tdWx0aV9vc19kaXIgIiogfCAqIiRsdF9tdWx0aV9vc19kaXIvICIqKQorICAgIGx0X211bHRpX29zX2Rpcj0KKyAgICA7OworICBlc2FjCiAgIGZvciBsdF9zeXNfcGF0aCBpbiAkbHRfc2VhcmNoX3BhdGhfc3BlYzsgZG8KLSAgICBpZiB0ZXN0IC1kICIkbHRfc3lzX3BhdGgvJGx0X211bHRpX29zX2RpciI7IHRoZW4KLSAgICAgIGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPSIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgJGx0X3N5c19wYXRoLyRsdF9tdWx0aV9vc19kaXIiCi0gICAgZWxzZQorICAgIGlmIHRlc3QgLWQgIiRsdF9zeXNfcGF0aCRsdF9tdWx0aV9vc19kaXIiOyB0aGVuCisgICAgICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aCRsdF9tdWx0aV9vc19kaXIiCisgICAgZWxpZiB0ZXN0IC1uICIkbHRfbXVsdGlfb3NfZGlyIjsgdGhlbgogICAgICAgdGVzdCAtZCAiJGx0X3N5c19wYXRoIiAmJiBcCiAJbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9IiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyAkbHRfc3lzX3BhdGgiCiAgICAgZmkKICAgZG9uZQogICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjIiB8IGF3ayAnCi1CRUdJTiB7UlM9IiAiOyBGUz0iL3xcbiI7fSB7Ci0gIGx0X2Zvbz0iIjsKLSAgbHRfY291bnQ9MDsKK0JFR0lOIHtSUyA9ICIgIjsgRlMgPSAiL3xcbiI7fSB7CisgIGx0X2ZvbyA9ICIiOworICBsdF9jb3VudCA9IDA7CiAgIGZvciAobHRfaSA9IE5GOyBsdF9pID4gMDsgbHRfaS0tKSB7CiAgICAgaWYgKCRsdF9pICE9ICIiICYmICRsdF9pICE9ICIuIikgewogICAgICAgaWYgKCRsdF9pID09ICIuLiIpIHsKICAgICAgICAgbHRfY291bnQrKzsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChsdF9jb3VudCA9PSAwKSB7Ci0gICAgICAgICAgbHRfZm9vPSIvIiAkbHRfaSBsdF9mb287CisgICAgICAgICAgbHRfZm9vID0gIi8iICRsdF9pIGx0X2ZvbzsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICBsdF9jb3VudC0tOwogICAgICAgICB9CkBAIC0yMjMzLDcgKzIzNTMsNyBAQAogICAjIGZvciB0aGVzZSBob3N0cy4KICAgY2FzZSAkaG9zdF9vcyBpbgogICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8XAotICAgICAgJFNFRCAncywvXChbW0EtWmEtel1dOlwpLFwxLGcnYCA7OworICAgICAgJFNFRCAnc3wvXChbW0EtWmEtel1dOlwpfFwxfGcnYCA7OwogICBlc2FjCiAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRsdF9OTDJTUGAKIGVsc2UKQEAgLTIyNDIsNyArMjM2Miw3IEBACiBsaWJyYXJ5X25hbWVzX3NwZWM9CiBsaWJuYW1lX3NwZWM9J2xpYiRuYW1lJwogc29uYW1lX3NwZWM9Ci1zaHJleHRfY21kcz0iLnNvIgorc2hyZXh0X2NtZHM9LnNvCiBwb3N0aW5zdGFsbF9jbWRzPQogcG9zdHVuaW5zdGFsbF9jbWRzPQogZmluaXNoX2NtZHM9CkBAIC0yMjU5LDE0ICsyMzc5LDE3IEBACiAjIGZsYWdzIHRvIGJlIGxlZnQgd2l0aG91dCBhcmd1bWVudHMKIG5lZWRfdmVyc2lvbj11bmtub3duCiAKK0FDX0FSR19WQVIoW0xUX1NZU19MSUJSQVJZX1BBVEhdLAorW1VzZXItZGVmaW5lZCBydW4tdGltZSBsaWJyYXJ5IHNlYXJjaCBwYXRoLl0pCisKIGNhc2UgJGhvc3Rfb3MgaW4KIGFpeDMqKQogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZS5hJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUuYScKICAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICiAKICAgIyBBSVggMyBoYXMgbm8gdmVyc2lvbmluZyBzdXBwb3J0LCBzbyB3ZSBhcHBlbmQgYSBtYWpvciB2ZXJzaW9uIHRvIHRoZSBuYW1lLgotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICA7OwogCiBhaXhbWzQtOV1dKikKQEAgLTIyNzQsNDEgKzIzOTcsOTEgQEAKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAgICAgIyBBSVggNSBzdXBwb3J0cyBJQTY0Ci0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRzaGFyZWRfZXh0JwogICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIGVsc2UKICAgICAjIFdpdGggR0NDIHVwIHRvIDIuOTUueCwgY29sbGVjdDIgd291bGQgY3JlYXRlIGFuIGltcG9ydCBmaWxlCiAgICAgIyBmb3IgZGVwZW5kZW5jZSBsaWJyYXJpZXMuICBUaGUgaW1wb3J0IGZpbGUgd291bGQgc3RhcnQgd2l0aAotICAgICMgdGhlIGxpbmUgYCMhIC4nLiAgVGhpcyB3b3VsZCBjYXVzZSB0aGUgZ2VuZXJhdGVkIGxpYnJhcnkgdG8KLSAgICAjIGRlcGVuZCBvbiBgLicsIGFsd2F5cyBhbiBpbnZhbGlkIGxpYnJhcnkuICBUaGlzIHdhcyBmaXhlZCBpbgorICAgICMgdGhlIGxpbmUgJyMhIC4nLiAgVGhpcyB3b3VsZCBjYXVzZSB0aGUgZ2VuZXJhdGVkIGxpYnJhcnkgdG8KKyAgICAjIGRlcGVuZCBvbiAnLicsIGFsd2F5cyBhbiBpbnZhbGlkIGxpYnJhcnkuICBUaGlzIHdhcyBmaXhlZCBpbgogICAgICMgZGV2ZWxvcG1lbnQgc25hcHNob3RzIG9mIEdDQyBwcmlvciB0byAzLjAuCiAgICAgY2FzZSAkaG9zdF9vcyBpbgogICAgICAgYWl4NCB8IGFpeDQuW1swMV1dIHwgYWl4NC5bWzAxXV0uKikKICAgICAgIGlmIHsgZWNobyAnI2lmIF9fR05VQ19fID4gMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA5NyknCiAJICAgZWNobyAnIHllcyAnCi0JICAgZWNobyAnI2VuZGlmJzsgfSB8ICR7Q0N9IC1FIC0gfCAkR1JFUCB5ZXMgPiAvZGV2L251bGw7IHRoZW4KKwkgICBlY2hvICcjZW5kaWYnOyB9IHwgJENDIC1FIC0gfCAkR1JFUCB5ZXMgPiAvZGV2L251bGw7IHRoZW4KIAk6CiAgICAgICBlbHNlCiAJY2FuX2J1aWxkX3NoYXJlZD1ubwogICAgICAgZmkKICAgICAgIDs7CiAgICAgZXNhYwotICAgICMgQUlYIChvbiBQb3dlciopIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIGN1cnJlbnRseSB3ZSBjYW4gbm90IGhhcmRjb2RlIGNvcnJlY3QKKyAgICAjIFVzaW5nIEltcG9ydCBGaWxlcyBhcyBhcmNoaXZlIG1lbWJlcnMsIGl0IGlzIHBvc3NpYmxlIHRvIHN1cHBvcnQKKyAgICAjIGZpbGVuYW1lLWJhc2VkIHZlcnNpb25pbmcgb2Ygc2hhcmVkIGxpYnJhcnkgYXJjaGl2ZXMgb24gQUlYLiBXaGlsZQorICAgICMgdGhpcyB3b3VsZCB3b3JrIGZvciBib3RoIHdpdGggYW5kIHdpdGhvdXQgcnVudGltZSBsaW5raW5nLCBpdCB3aWxsCisgICAgIyBwcmV2ZW50IHN0YXRpYyBsaW5raW5nIG9mIHN1Y2ggYXJjaGl2ZXMuIFNvIHdlIGRvIGZpbGVuYW1lLWJhc2VkCisgICAgIyBzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIHdpdGggLnNvIGV4dGVuc2lvbiBvbmx5LCB3aGljaCBpcyB1c2VkCisgICAgIyB3aGVuIGJvdGggcnVudGltZSBsaW5raW5nIGFuZCBzaGFyZWQgbGlua2luZyBpcyBlbmFibGVkLgorICAgICMgVW5mb3J0dW5hdGVseSwgcnVudGltZSBsaW5raW5nIG1heSBpbXBhY3QgcGVyZm9ybWFuY2UsIHNvIHdlIGRvCisgICAgIyBub3Qgd2FudCB0aGlzIHRvIGJlIHRoZSBkZWZhdWx0IGV2ZW50dWFsbHkuIEFsc28sIHdlIHVzZSB0aGUKKyAgICAjIHZlcnNpb25lZCAuc28gbGlicyBmb3IgZXhlY3V0YWJsZXMgb25seSBpZiB0aGVyZSBpcyB0aGUgLWJydGwKKyAgICAjIGxpbmtlciBmbGFnIGluIExERkxBR1MgYXMgd2VsbCwgb3IgLS13aXRoLWFpeC1zb25hbWU9c3ZyNCBvbmx5LgorICAgICMgVG8gYWxsb3cgZm9yIGZpbGVuYW1lLWJhc2VkIHZlcnNpb25pbmcgc3VwcG9ydCwgd2UgbmVlZCB0byBjcmVhdGUKKyAgICAjIGxpYk5BTUUuc28uViBhcyBhbiBhcmNoaXZlIGZpbGUsIGNvbnRhaW5pbmc6CisgICAgIyAqKSBhbiBJbXBvcnQgRmlsZSwgcmVmZXJyaW5nIHRvIHRoZSB2ZXJzaW9uZWQgZmlsZW5hbWUgb2YgdGhlCisgICAgIyAgICBhcmNoaXZlIGFzIHdlbGwgYXMgdGhlIHNoYXJlZCBhcmNoaXZlIG1lbWJlciwgdGVsbGluZyB0aGUKKyAgICAjICAgIGJpdHdpZHRoICgzMiBvciA2NCkgb2YgdGhhdCBzaGFyZWQgb2JqZWN0LCBhbmQgcHJvdmlkaW5nIHRoZQorICAgICMgICAgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzIG9mIHRoYXQgc2hhcmVkIG9iamVjdCwgZXZlbnR1YWxseQorICAgICMgICAgZGVjb3JhdGVkIHdpdGggdGhlICd3ZWFrJyBrZXl3b3JkCisgICAgIyAqKSB0aGUgc2hhcmVkIG9iamVjdCB3aXRoIHRoZSBGX0xPQURPTkxZIGZsYWcgc2V0LCB0byByZWFsbHkgYXZvaWQKKyAgICAjICAgIGl0IGJlaW5nIHNlZW4gYnkgdGhlIGxpbmtlci4KKyAgICAjIEF0IHJ1biB0aW1lIHdlIGJldHRlciB1c2UgdGhlIHJlYWwgZmlsZSByYXRoZXIgdGhhbiBhbm90aGVyIHN5bWxpbmssCisgICAgIyBidXQgZm9yIGxpbmsgdGltZSB3ZSBjcmVhdGUgdGhlIHN5bWxpbmsgbGliTkFNRS5zbyAtPiBsaWJOQU1FLnNvLlYKKworICAgIGNhc2UgJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyBpbgorICAgICMgQUlYIChvbiBQb3dlciopIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIGN1cnJlbnRseSB3ZSBjYW5ub3QgaGFyZGNvZGUgY29ycmVjdAogICAgICMgc29uYW1lIGludG8gZXhlY3V0YWJsZS4gUHJvYmFibHkgd2UgY2FuIGFkZCB2ZXJzaW9uaW5nIHN1cHBvcnQgdG8KICAgICAjIGNvbGxlY3QyLCBzbyBhZGRpdGlvbmFsIGxpbmtzIGNhbiBiZSB1c2VmdWwgaW4gZnV0dXJlLgotICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorICAgIGFpeCx5ZXMpICMgdHJhZGl0aW9uYWwgbGlidG9vbAorICAgICAgZHluYW1pY19saW5rZXI9J0FJWCB1bnZlcnNpb25hYmxlIGxpYi5zbycKICAgICAgICMgSWYgdXNpbmcgcnVuIHRpbWUgbGlua2luZyAob24gQUlYIDQuMiBvciBsYXRlcikgdXNlIGxpYjxuYW1lPi5zbwogICAgICAgIyBpbnN0ZWFkIG9mIGxpYjxuYW1lPi5hIHRvIGxldCBwZW9wbGUga25vdyB0aGF0IHRoZXNlIGFyZSBub3QKICAgICAgICMgdHlwaWNhbCBBSVggc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIGVsc2UKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICAgIDs7CisgICAgYWl4LG5vKSAjIHRyYWRpdGlvbmFsIEFJWCBvbmx5CisgICAgICBkeW5hbWljX2xpbmtlcj0nQUlYIGxpYi5hWyhdbGliLnNvLlZbKV0nCiAgICAgICAjIFdlIHByZXNlcnZlIC5hIGFzIGV4dGVuc2lvbiBmb3Igc2hhcmVkIGxpYnJhcmllcyB0aHJvdWdoIEFJWDQuMgogICAgICAgIyBhbmQgbGF0ZXIgd2hlbiB3ZSBhcmUgbm90IGRvaW5nIHJ1biB0aW1lIGxpbmtpbmcuCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9LmEgJGxpYm5hbWUuYScKLSAgICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICAgZmkKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZS5hICRsaWJuYW1lLmEnCisgICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJworICAgICAgOzsKKyAgICBzdnI0LCopICMgZnVsbCBzdnI0IG9ubHkKKyAgICAgIGR5bmFtaWNfbGlua2VyPSJBSVggbGliLnNvLlZbKF0kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMub1spXSIKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgICAjIFdlIGRvIG5vdCBzcGVjaWZ5IGEgcGF0aCBpbiBJbXBvcnQgRmlsZXMsIHNvIExJQlBBVEggZmlyZXMuCisgICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgICAgICA7OworICAgICoseWVzKSAjIGJvdGgsIHByZWZlciBzdnI0CisgICAgICBkeW5hbWljX2xpbmtlcj0iQUlYIGxpYi5zby5WWyhdJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm9bKV0sIGxpYi5hWyhdbGliLnNvLlZbKV0iCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgICAgIyB1bnByZWZlcnJlZCBzaGFyZWRsaWIgbGliTkFNRS5hIG5lZWRzIGV4dHJhIGhhbmRsaW5nCisgICAgICBwb3N0aW5zdGFsbF9jbWRzPSd0ZXN0IC1uICIkbGlua25hbWUiIHx8IGxpbmtuYW1lPSIkcmVhbG5hbWUifmZ1bmNfc3RyaXBuYW1lICIiICIuc28iICIkbGlua25hbWUifiRpbnN0YWxsX3NoYXJlZF9wcm9nICIkZGlyLyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuJGxpYmV4dCIgIiRkZXN0ZGlyLyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuJGxpYmV4dCJ+dGVzdCAteiAiJHRzdHJpcG1lIiB8fCB0ZXN0IC16ICIkc3RyaXBsaWIiIHx8ICRzdHJpcGxpYiAiJGRlc3RkaXIvJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC4kbGliZXh0IicKKyAgICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZm9yIG4gaW4gJGxpYnJhcnlfbmFtZXMgJG9sZF9saWJyYXJ5OyBkbyA6OyBkb25lfmZ1bmNfc3RyaXBuYW1lICIiICIuc28iICIkbiJ+dGVzdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIgPSAiJG4iIHx8IGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZnVuY19zdHJpcG5hbWVfcmVzdWx0LiRsaWJleHQiJworICAgICAgIyBXZSBkbyBub3Qgc3BlY2lmeSBhIHBhdGggaW4gSW1wb3J0IEZpbGVzLCBzbyBMSUJQQVRIIGZpcmVzLgorICAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgICAgOzsKKyAgICAqLG5vKSAjIGJvdGgsIHByZWZlciBhaXgKKyAgICAgIGR5bmFtaWNfbGlua2VyPSJBSVggbGliLmFbKF1saWIuc28uVlspXSwgbGliLnNvLlZbKF0kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMub1spXSIKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZS5hICRsaWJuYW1lLmEnCisgICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJworICAgICAgIyB1bnByZWZlcnJlZCBzaGFyZWRsaWIgbGliTkFNRS5zby5WIGFuZCBzeW1saW5rIGxpYk5BTUUuc28gbmVlZCBleHRyYSBoYW5kbGluZworICAgICAgcG9zdGluc3RhbGxfY21kcz0ndGVzdCAteiAiJGRsbmFtZSIgfHwgJGluc3RhbGxfc2hhcmVkX3Byb2cgJGRpci8kZGxuYW1lICRkZXN0ZGlyLyRkbG5hbWV+dGVzdCAteiAiJHRzdHJpcG1lIiB8fCB0ZXN0IC16ICIkc3RyaXBsaWIiIHx8ICRzdHJpcGxpYiAkZGVzdGRpci8kZGxuYW1lfnRlc3QgLW4gIiRsaW5rbmFtZSIgfHwgbGlua25hbWU9JHJlYWxuYW1lfmZ1bmNfc3RyaXBuYW1lICIiICIuYSIgIiRsaW5rbmFtZSJ+KGNkICIkZGVzdGRpciIgJiYgJExOX1MgLWYgJGRsbmFtZSAkZnVuY19zdHJpcG5hbWVfcmVzdWx0LnNvKScKKyAgICAgIHBvc3R1bmluc3RhbGxfY21kcz0ndGVzdCAteiAiJGRsbmFtZSIgfHwgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRkbG5hbWUifmZvciBuIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8gOjsgZG9uZX5mdW5jX3N0cmlwbmFtZSAiIiAiLmEiICIkbiJ+ZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuc28iJworICAgICAgOzsKKyAgICBlc2FjCiAgICAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICiAgIGZpCiAgIDs7CkBAIC0yMzE4LDE4ICsyNDkxLDE4IEBACiAgIHBvd2VycGMpCiAgICAgIyBTaW5jZSBKdWx5IDIwMDcgQW1pZ2FPUzQgb2ZmaWNpYWxseSBzdXBwb3J0cyAuc28gbGlicmFyaWVzLgogICAgICMgV2hlbiBjb21waWxpbmcgdGhlIGV4ZWN1dGFibGUsIGFkZCAtdXNlLWR5bmxkIC1Mc29ianM6IHRvIHRoZSBjb21waWxlbGluZS4KLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCiAgICAgOzsKICAgbTY4aykKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLml4bGlicmFyeSAkbGlibmFtZS5hJwogICAgICMgQ3JlYXRlICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgZW50cmllcyBpbiAvc3lzL2xpYnMuCi0gICAgZmluaXNoX2V2YWw9J2ZvciBsaWIgaW4gYGxzICRsaWJkaXIvKi5peGxpYnJhcnkgMj4vZGV2L251bGxgOyBkbyBsaWJuYW1lPWBmdW5jX2VjaG9fYWxsICIkbGliIiB8ICRTRUQgJ1wnJ3MlXi4qL1woW1teL11dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKKyAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbW14vXV0qXClcLml4bGlicmFyeSQlXDElJ1wnJ2A7ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKICAgICA7OwogICBlc2FjCiAgIDs7CiAKIGJlb3MqKQotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNoYXJlZF9leHQnCiAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBsZC5zbyIKICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKICAgOzsKQEAgLTIzMzcsOCArMjUxMCw4IEBACiBic2RpW1s0NV1dKikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvc2hsaWIgL3Vzci9saWIgL3Vzci9YMTEvbGliIC91c3IvY29udHJpYi9saWIgL2xpYiAvdXNyL2xvY2FsL2xpYiIKQEAgLTIzNTAsNyArMjUyMyw3IEBACiAKIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgdmVyc2lvbl90eXBlPXdpbmRvd3MKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIHNocmV4dF9jbWRzPS5kbGwKICAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogCkBAIC0yMzU5LDggKzI1MzIsOCBAQAogICAgICMgZ2NjCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0gICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCRmaWxlYH4KKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCRiYXNlX2ZpbGUnXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgogICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgogICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CiAgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWV+CkBAIC0yMzc2LDE3ICsyNTQ5LDE3IEBACiAgICAgY2FzZSAkaG9zdF9vcyBpbgogICAgIGN5Z3dpbiopCiAgICAgICAjIEN5Z3dpbiBETExzIHVzZSAnY3lnJyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKLSAgICAgIHNvbmFtZV9zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvY3lnLydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgc29uYW1lX3NwZWM9J2BlY2hvICRsaWJuYW1lIHwgc2VkIC1lICdzL15saWIvY3lnLydgYGVjaG8gJHJlbGVhc2UgfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHZlcnN1ZmZpeCRzaGFyZWRfZXh0JwogbTRfaWYoWyQxXSwgW10sWwogICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIC91c3IvbGliL3czMmFwaSJdKQogICAgICAgOzsKICAgICBtaW5ndyogfCBjZWdjYyopCiAgICAgICAjIE1pbkdXIERMTHMgdXNlIHRyYWRpdGlvbmFsICdsaWInIHByZWZpeAotICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWVgZWNobyAkcmVsZWFzZSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2AkdmVyc3VmZml4JHNoYXJlZF9leHQnCiAgICAgICA7OwogICAgIHB3MzIqKQogICAgICAgIyBwdzMyIERMTHMgdXNlICdwdycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJGxpYm5hbWUgfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICRyZWxlYXNlIHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR2ZXJzdWZmaXgkc2hhcmVkX2V4dCcKICAgICAgIDs7CiAgICAgZXNhYwogICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCkBAIC0yMzk1LDggKzI1NjgsOCBAQAogICAqLGNsKikKICAgICAjIE5hdGl2ZSBNU1ZDCiAgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWVgZWNobyAkcmVsZWFzZSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2AkdmVyc3VmZml4JHNoYXJlZF9leHQnCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwubGliJwogCiAgICAgY2FzZSAkYnVpbGRfb3MgaW4KICAgICBtaW5ndyopCkBAIC0yNDIzLDcgKzI1OTYsNyBAQAogICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKICAgICAgIDs7CiAgICAgKikKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0kTElCCiAgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgogICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgogICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYApAQCAtMjQzNiw4ICsyNjA5LDggQEAKICAgICBlc2FjCiAKICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0gICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCRmaWxlYH4KKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCRiYXNlX2ZpbGUnXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgogICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgogICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CiAgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCkBAIC0yNDUwLDcgKzI2MjMsNyBAQAogCiAgICopCiAgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lYGVjaG8gJHJlbGVhc2UgfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHZlcnN1ZmZpeCRzaGFyZWRfZXh0ICRsaWJuYW1lLmxpYicKICAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwogICAgIDs7CiAgIGVzYWMKQEAgLTI0NjMsOCArMjYzNiw4IEBACiAgIHZlcnNpb25fdHlwZT1kYXJ3aW4KICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHttYWpvcn0kc2hhcmVkX2V4dCAke2xpYm5hbWV9JHNoYXJlZF9leHQnCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7bWFqb3J9JHNoYXJlZF9leHQnCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRtYWpvciRzaGFyZWRfZXh0ICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJG1ham9yJHNoYXJlZF9leHQnCiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgc2hsaWJwYXRoX3Zhcj1EWUxEX0xJQlJBUllfUEFUSAogICBzaHJleHRfY21kcz0nYHRlc3QgLiRtb2R1bGUgPSAueWVzICYmIGVjaG8gLnNvIHx8IGVjaG8gLmR5bGliYCcKQEAgLTI0NzcsOCArMjY1MCw4IEBACiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgOzsKIApAQCAtMjQ5NiwxMiArMjY2OSwxMyBAQAogICB2ZXJzaW9uX3R5cGU9ZnJlZWJzZC0kb2JqZm9ybWF0CiAgIGNhc2UgJHZlcnNpb25fdHlwZSBpbgogICAgIGZyZWVic2QtZWxmKikKLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgICAgIG5lZWRfdmVyc2lvbj1ubwogICAgICAgbmVlZF9saWJfcHJlZml4PW5vCiAgICAgICA7OwogICAgIGZyZWVic2QtKikKLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JworICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQkdmVyc3VmZml4JwogICAgICAgbmVlZF92ZXJzaW9uPXllcwogICAgICAgOzsKICAgZXNhYwpAQCAtMjUzMSwxMCArMjcwNSwxMCBAQAogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBydW50aW1lX2xvYWRlciIKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR7bWFqb3J9ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCiAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgIDs7CkBAIC0yNTUyLDE0ICsyNzI2LDE1IEBACiAgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbyIKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMgIyBVbmxlc3MgK25vZW52dmFyIGlzIHNwZWNpZmllZC4KLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgIGlmIHRlc3QgIlgkSFBVWF9JQTY0X01PREUiID0gWDMyOyB0aGVuCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCisgICAgaWYgdGVzdCAzMiA9ICIkSFBVWF9JQTY0X01PREUiOyB0aGVuCiAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL2hwdXgzMiAvdXNyL2xvY2FsL2xpYi9ocHV4MzIgL3Vzci9sb2NhbC9saWIiCisgICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0vdXNyL2xpYi9ocHV4MzIKICAgICBlbHNlCiAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL2hwdXg2NCAvdXNyL2xvY2FsL2xpYi9ocHV4NjQiCisgICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0vdXNyL2xpYi9ocHV4NjQKICAgICBmaQotICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMKICAgICA7OwogICBocHBhKjY0KikKICAgICBzaHJleHRfY21kcz0nLnNsJwpAQCAtMjU2Nyw4ICsyNzQyLDggQEAKICAgICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgZGxkLnNsIgogICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRIICMgSG93IHNob3VsZCB3ZSBoYW5kbGUgU0hMSUJfUEFUSAogICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMgIyBVbmxlc3MgK25vZW52dmFyIGlzIHNwZWNpZmllZC4KLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvcGEyMF82NCAvdXNyL2Njcy9saWIvcGEyMF82NCIKICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCiAgICAgOzsKQEAgLTI1NzcsOCArMjc1Miw4IEBACiAgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbCIKICAgICBzaGxpYnBhdGhfdmFyPVNITElCX1BBVEgKICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8gIyArcyBpcyByZXF1aXJlZCB0byBlbmFibGUgU0hMSUJfUEFUSAotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgICAgOzsKICAgZXNhYwogICAjIEhQLVVYIHJ1bnMgKnJlYWxseSogc2xvd2x5IHVubGVzcyBzaGFyZWQgbGlicmFyaWVzIGFyZSBtb2RlIDU1NSwgLi4uCkBAIC0yNTkxLDggKzI3NjYsOCBAQAogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBkeW5hbWljX2xpbmtlcj0nSW50ZXJpeCAzLnggbGQuc28uMSAoUEUsIGxpa2UgRUxGKScKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCkBAIC0yNjAzLDcgKzI3NzgsNyBAQAogICBjYXNlICRob3N0X29zIGluCiAgICAgbm9uc3RvcHV4KikgdmVyc2lvbl90eXBlPW5vbnN0b3B1eCA7OwogICAgICopCi0JaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgorCWlmIHRlc3QgeWVzID0gIiRsdF9jdl9wcm9nX2dudV9sZCI7IHRoZW4KIAkJdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogCWVsc2UKIAkJdmVyc2lvbl90eXBlPWlyaXgKQEAgLTI2MTEsOCArMjc4Niw4IEBACiAgIGVzYWMKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0ICRsaWJuYW1lJHNoYXJlZF9leHQnCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgaXJpeDUqIHwgbm9uc3RvcHV4KikKICAgICBsaWJzdWZmPSBzaGxpYnN1ZmY9CkBAIC0yNjMxLDggKzI4MDYsOCBAQAogICBlc2FjCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWSR7c2hsaWJzdWZmfV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubwotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJHtsaWJzdWZmfSAvbGliJHtsaWJzdWZmfSAvdXNyL2xvY2FsL2xpYiR7bGlic3VmZn0iCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiR7bGlic3VmZn0gL2xpYiR7bGlic3VmZn0iCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIkbGlic3VmZiAvbGliJGxpYnN1ZmYgL3Vzci9sb2NhbC9saWIkbGlic3VmZiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJGxpYnN1ZmYgL2xpYiRsaWJzdWZmIgogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgIDs7CiAKQEAgLTI2NDEsMTMgKzI4MTYsMzMgQEAKICAgZHluYW1pY19saW5rZXI9bm8KICAgOzsKIAorbGludXgqYW5kcm9pZCopCisgIHZlcnNpb25fdHlwZT1ub25lICMgQW5kcm9pZCBkb2Vzbid0IHN1cHBvcnQgdmVyc2lvbmVkIGxpYnJhcmllcy4KKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCcKKyAgZmluaXNoX2NtZHM9CisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKworICAjIFRoaXMgaW1wbGllcyBubyBmYXN0X2luc3RhbGwsIHdoaWNoIGlzIHVuYWNjZXB0YWJsZS4KKyAgIyBTb21lIHJld29yayB3aWxsIGJlIG5lZWRlZCB0byBhbGxvdyBmb3IgZmFzdF9pbnN0YWxsCisgICMgYmVmb3JlIHRoaXMgY2FuIGJlIGVuYWJsZWQuCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKworICBkeW5hbWljX2xpbmtlcj0nQW5kcm9pZCBsaW5rZXInCisgICMgRG9uJ3QgZW1iZWQgLXJwYXRoIGRpcmVjdG9yaWVzIHNpbmNlIHRoZSBsaW5rZXIgZG9lc24ndCBzdXBwb3J0IHRoZW0uCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgIDs7CisKICMgVGhpcyBtdXN0IGJlIGdsaWJjL0VMRi4KIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSB8IGdudSopCiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAtbiAkbGliZGlyJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KQEAgLTI2NzIsNyArMjg2NywxMiBAQAogICAjIGJlZm9yZSB0aGlzIGNhbiBiZSBlbmFibGVkLgogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAKLSAgIyBBcHBlbmQgbGQuc28uY29uZiBjb250ZW50cyB0byB0aGUgc2VhcmNoIHBhdGgKKyAgIyBJZGVhbGx5LCB3ZSBjb3VsZCB1c2UgbGRjb25maWcgdG8gcmVwb3J0ICphbGwqIGRpcmVjdG9yZXMgd2hpY2ggYXJlCisgICMgc2VhcmNoZWQgZm9yIGxpYnJhcmllcywgaG93ZXZlciB0aGlzIGlzIHN0aWxsIG5vdCBwb3NzaWJsZS4gIEFzaWRlIGZyb20gbm90CisgICMgYmVpbmcgY2VydGFpbiAvc2Jpbi9sZGNvbmZpZyBpcyBhdmFpbGFibGUsIGNvbW1hbmQKKyAgIyAnbGRjb25maWcgLU4gLVggLXYgfCBncmVwIF4vJyBvbiA2NGJpdCBGZWRvcmEgZG9lcyBub3QgcmVwb3J0IC91c3IvbGliNjQsCisgICMgZXZlbiB0aG91Z2ggaXQgaXMgc2VhcmNoZWQgYXQgcnVuLXRpbWUuICBUcnkgdG8gZG8gdGhlIGJlc3QgZ3Vlc3MgYnkKKyAgIyBhcHBlbmRpbmcgbGQuc28uY29uZiBjb250ZW50cyAoYW5kIGluY2x1ZGVzKSB0byB0aGUgc2VhcmNoIHBhdGguCiAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCiAgICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXFskXTIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFxbJF0wOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWwkgXSpod2NhcFsJIF0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZztzLyIvL2c7L14kL2QnIHwgdHIgJ1xuJyAnICdgCiAgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgJGx0X2xkX2V4dHJhIgpAQCAtMjcwNCwxMiArMjkwNCwxMiBAQAogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCR2ZXJzdWZmaXgnCiAgICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW0gJGxpYmRpcicKICAgICBkeW5hbWljX2xpbmtlcj0nTmV0QlNEIChhLm91dCkgbGQuc28nCiAgIGVsc2UKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgICAgZHluYW1pY19saW5rZXI9J05ldEJTRCBsZC5lbGZfc28nCiAgIGZpCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICkBAIC0yNzE5LDcgKzI5MTksNyBAQAogCiBuZXdzb3M2KQogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgOzsKQEAgLTI3MjgsNTggKzI5MjgsNjggQEAKICAgdmVyc2lvbl90eXBlPXFueAogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgIGR5bmFtaWNfbGlua2VyPSdsZHFueC5zbycKICAgOzsKIAotb3BlbmJzZCopCitvcGVuYnNkKiB8IGJpdHJpZyopCiAgIHZlcnNpb25fdHlwZT1zdW5vcwotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIiCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPS91c3IvbGliCiAgIG5lZWRfbGliX3ByZWZpeD1ubwotICAjIFNvbWUgb2xkZXIgdmVyc2lvbnMgb2YgT3BlbkJTRCAoMy4zIGF0IGxlYXN0KSAqZG8qIG5lZWQgdmVyc2lvbmVkIGxpYnMuCi0gIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICBvcGVuYnNkMy4zIHwgb3BlbmJzZDMuMy4qKQluZWVkX3ZlcnNpb249eWVzIDs7Ci0gICAgKikJCQkJbmVlZF92ZXJzaW9uPW5vICA7OwotICBlc2FjCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX19gIjsgdGhlbgorICAgIG5lZWRfdmVyc2lvbj1ubworICBlbHNlCisgICAgbmVlZF92ZXJzaW9uPXllcworICBmaQorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCR2ZXJzdWZmaXgnCiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1tICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICi0gIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgICBvcGVuYnNkMi5bWzg5XV0gfCBvcGVuYnNkMi5bWzg5XV0uKikKLQlzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KLQk7OwotICAgICAgKikKLQlzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0JOzsKLSAgICAgIGVzYWMKLSAgZWxzZQotICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgZmkKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwogICA7OwogCiBvczIqKQogICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotICBzaHJleHRfY21kcz0iLmRsbCIKKyAgdmVyc2lvbl90eXBlPXdpbmRvd3MKKyAgc2hyZXh0X2NtZHM9LmRsbAorICBuZWVkX3ZlcnNpb249bm8KICAgbmVlZF9saWJfcHJlZml4PW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUke3NoYXJlZF9leHR9ICRsaWJuYW1lLmEnCisgICMgT1MvMiBjYW4gb25seSBsb2FkIGEgRExMIHdpdGggYSBiYXNlIG5hbWUgb2YgOCBjaGFyYWN0ZXJzIG9yIGxlc3MuCisgIHNvbmFtZV9zcGVjPSdgdGVzdCAtbiAiJG9zMmRsbG5hbWUiICYmIGxpYm5hbWU9IiRvczJkbGxuYW1lIjsKKyAgICB2PSQoJEVDSE8gJHJlbGVhc2UkdmVyc3VmZml4IHwgdHIgLWQgLi0pOworICAgIG49JCgkRUNITyAkbGlibmFtZSB8IGN1dCAtYiAtJCgoOCAtICR7I3Z9KSkgfCB0ciAuIF8pOworICAgICRFQ0hPICRuJHZgJHNoYXJlZF9leHQnCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfV9kbGwuJGxpYmV4dCcKICAgZHluYW1pY19saW5rZXI9J09TLzIgbGQuZXhlJwotICBzaGxpYnBhdGhfdmFyPUxJQlBBVEgKKyAgc2hsaWJwYXRoX3Zhcj1CRUdJTkxJQlBBVEgKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliIgorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCisgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCRmaWxlYH4KKyAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wkYmFzZV9maWxlJ1wnJ2k7ICRFQ0hPIFwkZGxuYW1lJ1wnJ2B+CisgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZX4KKyAgICBjaG1vZCBhK3ggXCRkbGRpci8kZGxuYW1lfgorICAgIGlmIHRlc3QgLW4gJ1wnJyRzdHJpcG1lJ1wnJyAmJiB0ZXN0IC1uICdcJyckc3RyaXBsaWInXCcnOyB0aGVuCisgICAgICBldmFsICdcJyckc3RyaXBsaWIgXCRkbGRpci8kZGxuYW1lJ1wnJyB8fCBleGl0IFwkPzsKKyAgICBmaScKKyAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7ICRFQ0hPIFwkZGxuYW1lJ1wnJ2B+CisgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKyAgICAkUk0gXCRkbHBhdGgnCiAgIDs7CiAKIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKICAgdmVyc2lvbl90eXBlPW9zZgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9zaGxpYiAvdXNyL2Njcy9saWIgL3Vzci9saWIvY21wbHJzL2NjIC91c3IvbGliIC91c3IvbG9jYWwvbGliIC92YXIvc2hsaWIiCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIgorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCiAgIDs7CiAKIHJkb3MqKQpAQCAtMjc5MCw4ICszMDAwLDggQEAKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwpAQCAtMjgwMSwxMSArMzAxMSwxMSBAQAogCiBzdW5vczQqKQogICB2ZXJzaW9uX3R5cGU9c3Vub3MKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQkdmVyc3VmZml4JwogICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi91c3IvZXRjIiBsZGNvbmZpZyAkbGliZGlyJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0gIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgPSAiJHdpdGhfZ251X2xkIjsgdGhlbgogICAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBmaQogICBuZWVkX3ZlcnNpb249eWVzCkBAIC0yODEzLDggKzMwMjMsOCBAQAogCiBzeXN2NCB8IHN5c3Y0LjMqKQogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIGNhc2UgJGhvc3RfdmVuZG9yIGluCiAgICAgc25pKQpAQCAtMjgzNSwyNCArMzA0NSwyNCBAQAogICA7OwogCiBzeXN2NCpNUCopCi0gIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KKyAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgogICAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hhcmVkX2V4dC4kdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQuJG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHNoYXJlZF9leHQuJG1ham9yJwogICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIGZpCiAgIDs7CiAKIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQotICB2ZXJzaW9uX3R5cGU9ZnJlZWJzZC1lbGYKKyAgdmVyc2lvbl90eXBlPXNjbwogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0ICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy91c3IvbG9jYWwvbGliIC91c3IvZ251L2xpYiAvdXNyL2Njcy9saWIgL3Vzci9saWIgL2xpYicKICAgZWxzZQogICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0nL3Vzci9jY3MvbGliIC91c3IvbGliJwpAQCAtMjg3MCw3ICszMDgwLDcgQEAKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCkBAIC0yODc4LDggKzMwODgsOCBAQAogCiB1dHM0KikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICA7OwogCkBAIC0yODg4LDIwICszMDk4LDMwIEBACiAgIDs7CiBlc2FjCiBBQ19NU0dfUkVTVUxUKFskZHluYW1pY19saW5rZXJdKQotdGVzdCAiJGR5bmFtaWNfbGlua2VyIiA9IG5vICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KK3Rlc3Qgbm8gPSAiJGR5bmFtaWNfbGlua2VyIiAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCiAKIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSJQQVRIICRzaGxpYnBhdGhfdmFyICRydW5wYXRoX3ZhciIKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCitpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0iJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIEdDQ19FWEVDX1BSRUZJWCBDT01QSUxFUl9QQVRIIExJQlJBUllfUEFUSCIKIGZpCiAKLWlmIHRlc3QgIiR7bHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjK3NldH0iID0gc2V0OyB0aGVuCi0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKK2lmIHRlc3Qgc2V0ID0gIiR7bHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjK3NldH0iOyB0aGVuCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0kbHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCiBmaQotaWYgdGVzdCAiJHtsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYytzZXR9IiA9IHNldDsgdGhlbgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIgorCitpZiB0ZXN0IHNldCA9ICIke2x0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjK3NldH0iOyB0aGVuCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYwogZmkKIAorIyByZW1lbWJlciB1bmF1Z21lbnRlZCBzeXNfbGliX2Rsc2VhcmNoX3BhdGggY29udGVudCBmb3IgbGlidG9vbCBzY3JpcHQgZGVjbHMuLi4KK2NvbmZpZ3VyZV90aW1lX2Rsc2VhcmNoX3BhdGg9JHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjCisKKyMgLi4uIGJ1dCBpdCBuZWVkcyBMVF9TWVNfTElCUkFSWV9QQVRIIG11bmdpbmcgZm9yIG90aGVyIGNvbmZpZ3VyZS10aW1lIGNvZGUKK2Z1bmNfbXVuZ2VfcGF0aF9saXN0IHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjICIkTFRfU1lTX0xJQlJBUllfUEFUSCIKKworIyB0byBiZSB1c2VkIGFzIGRlZmF1bHQgTFRfU1lTX0xJQlJBUllfUEFUSCB2YWx1ZSBpbiBnZW5lcmF0ZWQgbGlidG9vbAorY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aD0kTFRfU1lTX0xJQlJBUllfUEFUSAorCiBfTFRfREVDTChbXSwgW3ZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rXSwgWzFdLAogICAgIFtWYXJpYWJsZXMgd2hvc2UgdmFsdWVzIHNob3VsZCBiZSBzYXZlZCBpbiBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0cyBhbmQKICAgICByZXN0b3JlZCBhdCBsaW5rIHRpbWVdKQpAQCAtMjkzNCwzOSArMzE1NCw0MSBAQAogICAgIFtXaGV0aGVyIHdlIHNob3VsZCBoYXJkY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gbGlicmFyaWVzXSkKIF9MVF9ERUNMKFtdLCBbc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXSwgWzJdLAogICAgIFtDb21waWxlLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXNdKQotX0xUX0RFQ0woW10sIFtzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY10sIFsyXSwKLSAgICBbUnVuLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXNdKQorX0xUX0RFQ0woW3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjXSwgW2NvbmZpZ3VyZV90aW1lX2Rsc2VhcmNoX3BhdGhdLCBbMl0sCisgICAgW0RldGVjdGVkIHJ1bi10aW1lIHN5c3RlbSBzZWFyY2ggcGF0aCBmb3IgbGlicmFyaWVzXSkKK19MVF9ERUNMKFtdLCBbY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aF0sIFsyXSwKKyAgICBbRXhwbGljaXQgTFRfU1lTX0xJQlJBUllfUEFUSCBzZXQgZHVyaW5nIC4vY29uZmlndXJlIHRpbWVdKQogXSkjIF9MVF9TWVNfRFlOQU1JQ19MSU5LRVIKIAogCiAjIF9MVF9QQVRIX1RPT0xfUFJFRklYKFRPT0wpCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGZpbmQgYSBmaWxlIHByb2dyYW0gd2hpY2ggY2FuIHJlY29nbml6ZSBzaGFyZWQgbGlicmFyeQorIyBmaW5kIGEgZmlsZSBwcm9ncmFtIHRoYXQgY2FuIHJlY29nbml6ZSBzaGFyZWQgbGlicmFyeQogQUNfREVGVU4oW19MVF9QQVRIX1RPT0xfUFJFRklYXSwKIFttNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCiBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkMV0pCiBBQ19DQUNIRV9WQUwobHRfY3ZfcGF0aF9NQUdJQ19DTUQsCiBbY2FzZSAkTUFHSUNfQ01EIGluCiBbW1xcLypdIHwgID86W1xcL10qXSkKLSAgbHRfY3ZfcGF0aF9NQUdJQ19DTUQ9IiRNQUdJQ19DTUQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICBsdF9jdl9wYXRoX01BR0lDX0NNRD0kTUFHSUNfQ01EICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgogICA7OwogKikKLSAgbHRfc2F2ZV9NQUdJQ19DTUQ9IiRNQUdJQ19DTUQiCi0gIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICBsdF9zYXZlX01BR0lDX0NNRD0kTUFHSUNfQ01ECisgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKIGRubCAkYWNfZHVtbXkgZm9yY2VzIHNwbGl0dGluZyBvbiBjb25zdGFudCB1c2VyLXN1cHBsaWVkIHBhdGhzLgogZG5sIFBPU0lYLjIgd29yZCBzcGxpdHRpbmcgaXMgZG9uZSBvbmx5IG9uIHRoZSBvdXRwdXQgb2Ygd29yZCBleHBhbnNpb25zLAogZG5sIG5vdCBldmVyeSB3b3JkLiAgVGhpcyBjbG9zZXMgYSBsb25nc3RhbmRpbmcgc2ggc2VjdXJpdHkgaG9sZS4KICAgYWNfZHVtbXk9Im00X2lmKFskMl0sICwgJFBBVEgsIFskMl0pIgogICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICBJRlM9JGx0X3NhdmVfaWZzCiAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgICBpZiB0ZXN0IC1mICRhY19kaXIvJDE7IHRoZW4KLSAgICAgIGx0X2N2X3BhdGhfTUFHSUNfQ01EPSIkYWNfZGlyLyQxIgorICAgIGlmIHRlc3QgLWYgIiRhY19kaXIvJDEiOyB0aGVuCisgICAgICBsdF9jdl9wYXRoX01BR0lDX0NNRD0kYWNfZGlyLyIkMSIKICAgICAgIGlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX3Rlc3RfZmlsZSI7IHRoZW4KIAljYXNlICRkZXBsaWJzX2NoZWNrX21ldGhvZCBpbgogCSJmaWxlX21hZ2ljICIqKQogCSAgZmlsZV9tYWdpY19yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICJmaWxlX21hZ2ljIFwoLipcKSJgCi0JICBNQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKKwkgIE1BR0lDX0NNRD0kbHRfY3ZfcGF0aF9NQUdJQ19DTUQKIAkgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwkZmlsZV9tYWdpY190ZXN0X2ZpbGUgMj4gL2Rldi9udWxsIHwKIAkgICAgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KIAkgICAgOgpAQCAtMjk4OSwxMSArMzIxMSwxMSBAQAogICAgICAgYnJlYWsKICAgICBmaQogICBkb25lCi0gIElGUz0iJGx0X3NhdmVfaWZzIgotICBNQUdJQ19DTUQ9IiRsdF9zYXZlX01BR0lDX0NNRCIKKyAgSUZTPSRsdF9zYXZlX2lmcworICBNQUdJQ19DTUQ9JGx0X3NhdmVfTUFHSUNfQ01ECiAgIDs7CiBlc2FjXSkKLU1BR0lDX0NNRD0iJGx0X2N2X3BhdGhfTUFHSUNfQ01EIgorTUFHSUNfQ01EPSRsdF9jdl9wYXRoX01BR0lDX0NNRAogaWYgdGVzdCAtbiAiJE1BR0lDX0NNRCI7IHRoZW4KICAgQUNfTVNHX1JFU1VMVCgkTUFHSUNfQ01EKQogZWxzZQpAQCAtMzAxMSw3ICszMjMzLDcgQEAKIAogIyBfTFRfUEFUSF9NQUdJQwogIyAtLS0tLS0tLS0tLS0tLQotIyBmaW5kIGEgZmlsZSBwcm9ncmFtIHdoaWNoIGNhbiByZWNvZ25pemUgYSBzaGFyZWQgbGlicmFyeQorIyBmaW5kIGEgZmlsZSBwcm9ncmFtIHRoYXQgY2FuIHJlY29nbml6ZSBhIHNoYXJlZCBsaWJyYXJ5CiBtNF9kZWZ1bihbX0xUX1BBVEhfTUFHSUNdLAogW19MVF9QQVRIX1RPT0xfUFJFRklYKCR7YWNfdG9vbF9wcmVmaXh9ZmlsZSwgL3Vzci9iaW4kUEFUSF9TRVBBUkFUT1IkUEFUSCkKIGlmIHRlc3QgLXogIiRsdF9jdl9wYXRoX01BR0lDX0NNRCI7IHRoZW4KQEAgLTMwMzgsMTYgKzMyNjAsMTYgQEAKIEFDX0FSR19XSVRIKFtnbnUtbGRdLAogICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWdudS1sZF0sCiAJW2Fzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBAPDpAZGVmYXVsdD1ub0A6PkBdKV0sCi0gICAgW3Rlc3QgIiR3aXRodmFsIiA9IG5vIHx8IHdpdGhfZ251X2xkPXllc10sCisgICAgW3Rlc3Qgbm8gPSAiJHdpdGh2YWwiIHx8IHdpdGhfZ251X2xkPXllc10sCiAgICAgW3dpdGhfZ251X2xkPW5vXSlkbmwKIAogYWNfcHJvZz1sZAotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAgICMgQ2hlY2sgaWYgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQgZ2l2ZXMgYSBwYXRoLgogICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsZCB1c2VkIGJ5ICRDQ10pCiAgIGNhc2UgJGhvc3QgaW4KICAgKi0qLW1pbmd3KikKLSAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gd2hpY2ggdXBzZXRzIG1pbmd3CisgICAgIyBnY2MgbGVhdmVzIGEgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuLCB3aGljaCB1cHNldHMgbWluZ3cKICAgICBhY19wcm9nPWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjUgfCB0ciAtZCAnXDAxNSdgIDs7CiAgICopCiAgICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1YCA7OwpAQCAtMzA2MSw3ICszMjgzLDcgQEAKICAgICAgIHdoaWxlICRFQ0hPICIkYWNfcHJvZyIgfCAkR1JFUCAiJHJlX2RpcmVsdCIgPiAvZGV2L251bGwgMj4mMTsgZG8KIAlhY19wcm9nPWAkRUNITyAkYWNfcHJvZ3wgJFNFRCAicyUkcmVfZGlyZWx0JS8lImAKICAgICAgIGRvbmUKLSAgICAgIHRlc3QgLXogIiRMRCIgJiYgTEQ9IiRhY19wcm9nIgorICAgICAgdGVzdCAteiAiJExEIiAmJiBMRD0kYWNfcHJvZwogICAgICAgOzsKICAgIiIpCiAgICAgIyBJZiBpdCBmYWlscywgdGhlbiBwcmV0ZW5kIHdlIGFyZW4ndCB1c2luZyBHQ0MuCkBAIC0zMDcyLDM3ICszMjk0LDM3IEBACiAgICAgd2l0aF9nbnVfbGQ9dW5rbm93bgogICAgIDs7CiAgIGVzYWMKLWVsaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorZWxpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCiAgIEFDX01TR19DSEVDS0lORyhbZm9yIEdOVSBsZF0pCiBlbHNlCiAgIEFDX01TR19DSEVDS0lORyhbZm9yIG5vbi1HTlUgbGRdKQogZmkKIEFDX0NBQ0hFX1ZBTChsdF9jdl9wYXRoX0xELAogW2lmIHRlc3QgLXogIiRMRCI7IHRoZW4KLSAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKICAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICBJRlM9JGx0X3NhdmVfaWZzCiAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KICAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KLSAgICAgIGx0X2N2X3BhdGhfTEQ9IiRhY19kaXIvJGFjX3Byb2ciCisgICAgICBsdF9jdl9wYXRoX0xEPSRhY19kaXIvJGFjX3Byb2cKICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9ncmFtIGlzIEdOVSBsZC4gIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKICAgICAgICMgYnV0IGFwcGFyZW50bHkgc29tZSB2YXJpYW50cyBvZiBHTlUgbGQgb25seSBhY2NlcHQgLXYuCiAgICAgICAjIEJyZWFrIG9ubHkgaWYgaXQgd2FzIHRoZSBHTlUvbm9uLUdOVSBsZCB0aGF0IHdlIHByZWZlci4KICAgICAgIGNhc2UgYCIkbHRfY3ZfcGF0aF9MRCIgLXYgMj4mMSA8L2Rldi9udWxsYCBpbgogICAgICAgKkdOVSogfCAqJ3dpdGggQkZEJyopCi0JdGVzdCAiJHdpdGhfZ251X2xkIiAhPSBubyAmJiBicmVhaworCXRlc3Qgbm8gIT0gIiR3aXRoX2dudV9sZCIgJiYgYnJlYWsKIAk7OwogICAgICAgKikKLQl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHllcyAmJiBicmVhaworCXRlc3QgeWVzICE9ICIkd2l0aF9nbnVfbGQiICYmIGJyZWFrCiAJOzsKICAgICAgIGVzYWMKICAgICBmaQogICBkb25lCi0gIElGUz0iJGx0X3NhdmVfaWZzIgorICBJRlM9JGx0X3NhdmVfaWZzCiBlbHNlCi0gIGx0X2N2X3BhdGhfTEQ9IiRMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIGx0X2N2X3BhdGhfTEQ9JExEICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgogZmldKQotTEQ9IiRsdF9jdl9wYXRoX0xEIgorTEQ9JGx0X2N2X3BhdGhfTEQKIGlmIHRlc3QgLW4gIiRMRCI7IHRoZW4KICAgQUNfTVNHX1JFU1VMVCgkTEQpCiBlbHNlCkBAIC0zMTU2LDEzICszMzc4LDEzIEBACiByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiBjYXNlICRob3N0X29zIGluCiAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKyAgICBpZiB0ZXN0IHllcyAhPSAiJEdDQyI7IHRoZW4KICAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCiAgICAgZmkKICAgICA7OwogICBkYXJ3aW4qKQotICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KKyAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR3bC1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiAgICAgZWxzZQogICAgICAgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwogICAgIGZpCkBAIC0zMTczLDYgKzMzOTUsNDMgQEAKIF0pIyBfTFRfQ01EX1JFTE9BRAogCiAKKyMgX0xUX1BBVEhfREQKKyMgLS0tLS0tLS0tLS0KKyMgZmluZCBhIHdvcmtpbmcgZGQKK200X2RlZnVuKFtfTFRfUEFUSF9ERF0sCitbQUNfQ0FDSEVfQ0hFQ0soW2ZvciBhIHdvcmtpbmcgZGRdLCBbYWNfY3ZfcGF0aF9sdF9ERF0sCitbcHJpbnRmIDAxMjM0NTY3ODlhYmNkZWYwMTIzNDU2Nzg5YWJjZGVmID5jb25mdGVzdC5pCitjYXQgY29uZnRlc3QuaSBjb25mdGVzdC5pID5jb25mdGVzdDIuaQorOiAke2x0X0REOj0kRER9CitBQ19QQVRIX1BST0dTX0ZFQVRVUkVfQ0hFQ0soW2x0X0REXSwgW2RkXSwKK1tpZiAiJGFjX3BhdGhfbHRfREQiIGJzPTMyIGNvdW50PTEgPGNvbmZ0ZXN0Mi5pID5jb25mdGVzdC5vdXQgMj4vZGV2L251bGw7IHRoZW4KKyAgY21wIC1zIGNvbmZ0ZXN0LmkgY29uZnRlc3Qub3V0IFwKKyAgJiYgYWNfY3ZfcGF0aF9sdF9ERD0iJGFjX3BhdGhfbHRfREQiIGFjX3BhdGhfbHRfRERfZm91bmQ9OgorZmldKQorcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdDIuaSBjb25mdGVzdC5vdXRdKQorXSkjIF9MVF9QQVRIX0RECisKKworIyBfTFRfQ01EX1RSVU5DQVRFCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgZmluZCBjb21tYW5kIHRvIHRydW5jYXRlIGEgYmluYXJ5IHBpcGUKK200X2RlZnVuKFtfTFRfQ01EX1RSVU5DQVRFXSwKK1ttNF9yZXF1aXJlKFtfTFRfUEFUSF9ERF0pCitBQ19DQUNIRV9DSEVDSyhbaG93IHRvIHRydW5jYXRlIGJpbmFyeSBwaXBlc10sIFtsdF9jdl90cnVuY2F0ZV9iaW5dLAorW3ByaW50ZiAwMTIzNDU2Nzg5YWJjZGVmMDEyMzQ1Njc4OWFiY2RlZiA+Y29uZnRlc3QuaQorY2F0IGNvbmZ0ZXN0LmkgY29uZnRlc3QuaSA+Y29uZnRlc3QyLmkKK2x0X2N2X3RydW5jYXRlX2Jpbj0KK2lmICIkYWNfY3ZfcGF0aF9sdF9ERCIgYnM9MzIgY291bnQ9MSA8Y29uZnRlc3QyLmkgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBjbXAgLXMgY29uZnRlc3QuaSBjb25mdGVzdC5vdXQgXAorICAmJiBsdF9jdl90cnVuY2F0ZV9iaW49IiRhY19jdl9wYXRoX2x0X0REIGJzPTQwOTYgY291bnQ9MSIKK2ZpCitybSAtZiBjb25mdGVzdC5pIGNvbmZ0ZXN0Mi5pIGNvbmZ0ZXN0Lm91dAordGVzdCAteiAiJGx0X2N2X3RydW5jYXRlX2JpbiIgJiYgbHRfY3ZfdHJ1bmNhdGVfYmluPSIkU0VEIC1lIDRxIl0pCitfTFRfREVDTChbbHRfdHJ1bmNhdGVfYmluXSwgW2x0X2N2X3RydW5jYXRlX2Jpbl0sIFsxXSwKKyAgW0NvbW1hbmQgdG8gdHJ1bmNhdGUgYSBiaW5hcnkgcGlwZV0pCitdKSMgX0xUX0NNRF9UUlVOQ0FURQorCisKICMgX0xUX0NIRUNLX01BR0lDX01FVEhPRAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIGhvdyB0byBjaGVjayBmb3IgbGlicmFyeSBkZXBlbmRlbmNpZXMKQEAgLTMxODgsMTMgKzM0NDcsMTMgQEAKICMgTmVlZCB0byBzZXQgdGhlIHByZWNlZGluZyB2YXJpYWJsZSBvbiBhbGwgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydAogIyBpbnRlcmxpYnJhcnkgZGVwZW5kZW5jaWVzLgogIyAnbm9uZScgLS0gZGVwZW5kZW5jaWVzIG5vdCBzdXBwb3J0ZWQuCi0jIGB1bmtub3duJyAtLSBzYW1lIGFzIG5vbmUsIGJ1dCBkb2N1bWVudHMgdGhhdCB3ZSByZWFsbHkgZG9uJ3Qga25vdy4KKyMgJ3Vua25vd24nIC0tIHNhbWUgYXMgbm9uZSwgYnV0IGRvY3VtZW50cyB0aGF0IHdlIHJlYWxseSBkb24ndCBrbm93LgogIyAncGFzc19hbGwnIC0tIGFsbCBkZXBlbmRlbmNpZXMgcGFzc2VkIHdpdGggbm8gY2hlY2tzLgogIyAndGVzdF9jb21waWxlJyAtLSBjaGVjayBieSBtYWtpbmcgdGVzdCBwcm9ncmFtLgogIyAnZmlsZV9tYWdpYyBbW3JlZ2V4XV0nIC0tIGNoZWNrIGJ5IGxvb2tpbmcgZm9yIGZpbGVzIGluIGxpYnJhcnkgcGF0aAotIyB3aGljaCByZXNwb25kcyB0byB0aGUgJGZpbGVfbWFnaWNfY21kIHdpdGggYSBnaXZlbiBleHRlbmRlZCByZWdleC4KLSMgSWYgeW91IGhhdmUgYGZpbGUnIG9yIGVxdWl2YWxlbnQgb24geW91ciBzeXN0ZW0gYW5kIHlvdSdyZSBub3Qgc3VyZQotIyB3aGV0aGVyIGBwYXNzX2FsbCcgd2lsbCAqYWx3YXlzKiB3b3JrLCB5b3UgcHJvYmFibHkgd2FudCB0aGlzIG9uZS4KKyMgdGhhdCByZXNwb25kcyB0byB0aGUgJGZpbGVfbWFnaWNfY21kIHdpdGggYSBnaXZlbiBleHRlbmRlZCByZWdleC4KKyMgSWYgeW91IGhhdmUgJ2ZpbGUnIG9yIGVxdWl2YWxlbnQgb24geW91ciBzeXN0ZW0gYW5kIHlvdSdyZSBub3Qgc3VyZQorIyB3aGV0aGVyICdwYXNzX2FsbCcgd2lsbCAqYWx3YXlzKiB3b3JrLCB5b3UgcHJvYmFibHkgd2FudCB0aGlzIG9uZS4KIAogY2FzZSAkaG9zdF9vcyBpbgogYWl4W1s0LTldXSopCkBAIC0zMjIxLDggKzM0ODAsNyBAQAogICAjIEJhc2UgTVNZUy9NaW5HVyBkbyBub3QgcHJvdmlkZSB0aGUgJ2ZpbGUnIGNvbW1hbmQgbmVlZGVkIGJ5CiAgICMgZnVuY193aW4zMl9saWJpZCBzaGVsbCBmdW5jdGlvbiwgc28gdXNlIGEgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLAogICAjIHVubGVzcyB3ZSBmaW5kICdmaWxlJywgZm9yIGV4YW1wbGUgYmVjYXVzZSB3ZSBhcmUgY3Jvc3MtY29tcGlsaW5nLgotICAjIGZ1bmNfd2luMzJfbGliaWQgYXNzdW1lcyBCU0Qgbm0sIHNvIGRpc2FsbG93IGl0IGlmIHVzaW5nIE1TIGR1bXBiaW4uCi0gIGlmICggdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiQlNEIG5tIiAmJiBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgaWYgKCBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICBlbHNlCkBAIC0zMzE4LDggKzM1NzYsOCBAQAogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCi1vcGVuYnNkKikKLSAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgorb3BlbmJzZCogfCBiaXRyaWcqKQorICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fYCI7IHRoZW4KICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW1teL11dKyhcLnNvXC5bWzAtOV1dK1wuW1swLTldXSt8XC5zb3xfcGljXC5hKSQnCiAgIGVsc2UKICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW1teL11dKyhcLnNvXC5bWzAtOV1dK1wuW1swLTldXSt8X3BpY1wuYSkkJwpAQCAtMzM3Miw2ICszNjMwLDkgQEAKIHRwZiopCiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CitvczIqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OwogZXNhYwogXSkKIApAQCAtMzQxMiwzMyArMzY3MywzOCBAQAogQUNfQ0FDSEVfQ0hFQ0soW2ZvciBCU0QtIG9yIE1TLWNvbXBhdGlibGUgbmFtZSBsaXN0ZXIgKG5tKV0sIGx0X2N2X3BhdGhfTk0sCiBbaWYgdGVzdCAtbiAiJE5NIjsgdGhlbgogICAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLSAgbHRfY3ZfcGF0aF9OTT0iJE5NIgorICBsdF9jdl9wYXRoX05NPSROTQogZWxzZQotICBsdF9ubV90b19jaGVjaz0iJHthY190b29sX3ByZWZpeH1ubSIKKyAgbHRfbm1fdG9fY2hlY2s9JHthY190b29sX3ByZWZpeH1ubQogICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiICYmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCiAgICAgbHRfbm1fdG9fY2hlY2s9IiRsdF9ubV90b19jaGVjayBubSIKICAgZmkKICAgZm9yIGx0X3RtcF9ubSBpbiAkbHRfbm1fdG9fY2hlY2s7IGRvCi0gICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgICAgbHRfc2F2ZV9pZnM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgogICAgIGZvciBhY19kaXIgaW4gJFBBVEggL3Vzci9jY3MvYmluL2VsZiAvdXNyL2Njcy9iaW4gL3Vzci91Y2IgL2JpbjsgZG8KLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgSUZTPSRsdF9zYXZlX2lmcwogICAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgICAgIHRtcF9ubT0iJGFjX2Rpci8kbHRfdG1wX25tIgotICAgICAgaWYgdGVzdCAtZiAiJHRtcF9ubSIgfHwgdGVzdCAtZiAiJHRtcF9ubSRhY19leGVleHQiIDsgdGhlbgorICAgICAgdG1wX25tPSRhY19kaXIvJGx0X3RtcF9ubQorICAgICAgaWYgdGVzdCAtZiAiJHRtcF9ubSIgfHwgdGVzdCAtZiAiJHRtcF9ubSRhY19leGVleHQiOyB0aGVuCiAJIyBDaGVjayB0byBzZWUgaWYgdGhlIG5tIGFjY2VwdHMgYSBCU0QtY29tcGF0IGZsYWcuCi0JIyBBZGRpbmcgdGhlIGBzZWQgMXEnIHByZXZlbnRzIGZhbHNlIHBvc2l0aXZlcyBvbiBIUC1VWCwgd2hpY2ggc2F5czoKKwkjIEFkZGluZyB0aGUgJ3NlZCAxcScgcHJldmVudHMgZmFsc2UgcG9zaXRpdmVzIG9uIEhQLVVYLCB3aGljaCBzYXlzOgogCSMgICBubTogdW5rbm93biBvcHRpb24gIkIiIGlnbm9yZWQKIAkjIFRydTY0J3Mgbm0gY29tcGxhaW5zIHRoYXQgL2Rldi9udWxsIGlzIGFuIGludmFsaWQgb2JqZWN0IGZpbGUKLQljYXNlIGAiJHRtcF9ubSIgLUIgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFxJ2AgaW4KLQkqL2Rldi9udWxsKiB8IConSW52YWxpZCBmaWxlIG9yIG9iamVjdCB0eXBlJyopCisJIyBNU1lTIGNvbnZlcnRzIC9kZXYvbnVsbCB0byBOVUwsIE1pbkdXIG5tIHRyZWF0cyBOVUwgYXMgZW1wdHkKKwljYXNlICRidWlsZF9vcyBpbgorCW1pbmd3KikgbHRfYmFkX2ZpbGU9Y29uZnRlc3Qubm0vbm9maWxlIDs7CisJKikgbHRfYmFkX2ZpbGU9L2Rldi9udWxsIDs7CisJZXNhYworCWNhc2UgYCIkdG1wX25tIiAtQiAkbHRfYmFkX2ZpbGUgMj4mMSB8IHNlZCAnMXEnYCBpbgorCSokbHRfYmFkX2ZpbGUqIHwgKidJbnZhbGlkIGZpbGUgb3Igb2JqZWN0IHR5cGUnKikKIAkgIGx0X2N2X3BhdGhfTk09IiR0bXBfbm0gLUIiCi0JICBicmVhaworCSAgYnJlYWsgMgogCSAgOzsKIAkqKQogCSAgY2FzZSBgIiR0bXBfbm0iIC1wIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCiAJICAqL2Rldi9udWxsKikKIAkgICAgbHRfY3ZfcGF0aF9OTT0iJHRtcF9ubSAtcCIKLQkgICAgYnJlYWsKKwkgICAgYnJlYWsgMgogCSAgICA7OwogCSAgKikKIAkgICAgbHRfY3ZfcGF0aF9OTT0ke2x0X2N2X3BhdGhfTk09IiR0bXBfbm0ifSAjIGtlZXAgdGhlIGZpcnN0IG1hdGNoLCBidXQKQEAgLTM0NDksMjEgKzM3MTUsMjEgQEAKIAllc2FjCiAgICAgICBmaQogICAgIGRvbmUKLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICBJRlM9JGx0X3NhdmVfaWZzCiAgIGRvbmUKICAgOiAke2x0X2N2X3BhdGhfTk09bm99CiBmaV0pCi1pZiB0ZXN0ICIkbHRfY3ZfcGF0aF9OTSIgIT0gIm5vIjsgdGhlbgotICBOTT0iJGx0X2N2X3BhdGhfTk0iCitpZiB0ZXN0IG5vICE9ICIkbHRfY3ZfcGF0aF9OTSI7IHRoZW4KKyAgTk09JGx0X2N2X3BhdGhfTk0KIGVsc2UKICAgIyBEaWRuJ3QgZmluZCBhbnkgQlNEIGNvbXBhdGlibGUgbmFtZSBsaXN0ZXIsIGxvb2sgZm9yIGR1bXBiaW4uCiAgIGlmIHRlc3QgLW4gIiREVU1QQklOIjsgdGhlbiA6CiAgICAgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCiAgIGVsc2UKICAgICBBQ19DSEVDS19UT09MUyhEVU1QQklOLCBbZHVtcGJpbiAibGluayAtZHVtcCJdLCA6KQotICAgIGNhc2UgYCREVU1QQklOIC1zeW1ib2xzIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCisgICAgY2FzZSBgJERVTVBCSU4gLXN5bWJvbHMgLWhlYWRlcnMgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFxJ2AgaW4KICAgICAqQ09GRiopCi0gICAgICBEVU1QQklOPSIkRFVNUEJJTiAtc3ltYm9scyIKKyAgICAgIERVTVBCSU49IiREVU1QQklOIC1zeW1ib2xzIC1oZWFkZXJzIgogICAgICAgOzsKICAgICAqKQogICAgICAgRFVNUEJJTj06CkBAIC0zNDcxLDggKzM3MzcsOCBAQAogICAgIGVzYWMKICAgZmkKICAgQUNfU1VCU1QoW0RVTVBCSU5dKQotICBpZiB0ZXN0ICIkRFVNUEJJTiIgIT0gIjoiOyB0aGVuCi0gICAgTk09IiREVU1QQklOIgorICBpZiB0ZXN0IDogIT0gIiREVU1QQklOIjsgdGhlbgorICAgIE5NPSREVU1QQklOCiAgIGZpCiBmaQogdGVzdCAteiAiJE5NIiAmJiBOTT1ubQpAQCAtMzUxOCw4ICszNzg0LDggQEAKIAogY2FzZSAkaG9zdF9vcyBpbgogY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0gICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaDsKKyAgIyBkZWNpZGUgd2hpY2ggb25lIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKICAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCiAgICotLWlkZW50aWZ5LXN0cmljdCopCiAgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCkBAIC0zNTMxLDcgKzM3OTcsNyBAQAogICA7OwogKikKICAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0gIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KICAgOzsKIGVzYWMKIF0pCkBAIC0zNTU4LDEzICszODI0LDI4IEBACiAgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwogICBmaQogICBybSAtZiBjb25mdGVzdCpdKQotaWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzICE9ICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIjsgdGhlbgogICBNQU5JRkVTVF9UT09MPToKIGZpCiBfTFRfREVDTChbXSwgW01BTklGRVNUX1RPT0xdLCBbMV0sIFtNYW5pZmVzdCB0b29sXSlkbmwKIF0pIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCiAKIAorIyBfTFRfRExMX0RFRl9QKFtGSUxFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRydWUgaWZmIEZJTEUgaXMgYSBXaW5kb3dzIERMTCAnLmRlZicgZmlsZS4KKyMgS2VlcCBpbiBzeW5jIHdpdGggZnVuY19kbGxfZGVmX3AgaW4gdGhlIGxpYnRvb2wgc2NyaXB0CitBQ19ERUZVTihbX0xUX0RMTF9ERUZfUF0sCitbZG5sCisgIHRlc3QgREVGID0gImAkU0VEIC1uIGRubAorICAgIC1lICdcJydzL15bWwkgXV0qLy8nXCcnIGRubCBTdHJpcCBsZWFkaW5nIHdoaXRlc3BhY2UKKyAgICAtZSAnXCcnL15cKDsuKlwpKiQvZCdcJycgZG5sICAgICAgRGVsZXRlIGVtcHR5IGxpbmVzIGFuZCBjb21tZW50cworICAgIC1lICdcJydzL15cKEVYUE9SVFNcfExJQlJBUllcKVwoW1sJIF1dLipcKSokL0RFRi9wJ1wnJyBkbmwKKyAgICAtZSBxIGRubCAgICAgICAgICAgICAgICAgICAgICAgICAgT25seSBjb25zaWRlciB0aGUgZmlyc3QgInJlYWwiIGxpbmUKKyAgICAkMWAiIGRubAorXSkjIF9MVF9ETExfREVGX1AKKworCiAjIExUX0xJQl9NCiAjIC0tLS0tLS0tCiAjIGNoZWNrIGZvciBtYXRoIGxpYnJhcnkKQEAgLTM1NzYsMTEgKzM4NTcsMTEgQEAKICAgIyBUaGVzZSBzeXN0ZW0gZG9uJ3QgaGF2ZSBsaWJtLCBvciBkb24ndCBuZWVkIGl0CiAgIDs7CiAqLW5jci1zeXN2NC4zKikKLSAgQUNfQ0hFQ0tfTElCKG13LCBfbXd2YWxpZGNoZWNrbCwgTElCTT0iLWxtdyIpCisgIEFDX0NIRUNLX0xJQihtdywgX213dmFsaWRjaGVja2wsIExJQk09LWxtdykKICAgQUNfQ0hFQ0tfTElCKG0sIGNvcywgTElCTT0iJExJQk0gLWxtIikKICAgOzsKICopCi0gIEFDX0NIRUNLX0xJQihtLCBjb3MsIExJQk09Ii1sbSIpCisgIEFDX0NIRUNLX0xJQihtLCBjb3MsIExJQk09LWxtKQogICA7OwogZXNhYwogQUNfU1VCU1QoW0xJQk1dKQpAQCAtMzU5OSw3ICszODgwLDcgQEAKIAogX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPQogCi1pZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgoraWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgbnZjYyopCiAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPScgLVhjb21waWxlciAtZm5vLWJ1aWx0aW4nIDs7CkBAIC0zNjUxLDcgKzM5MzIsNyBAQAogICBzeW1jb2RlPSdbW0FCQ0RHSVNUV11dJwogICA7OwogaHB1eCopCi0gIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAgICAgc3ltY29kZT0nW1tBQkNERUdSU1RdXScKICAgZmkKICAgOzsKQEAgLTM2ODQsMTQgKzM5NjUsNDQgQEAKICAgc3ltY29kZT0nW1tBQkNER0lSU1RXXV0nIDs7CiBlc2FjCiAKK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisgICMgR2V0cyBsaXN0IG9mIGRhdGEgc3ltYm9scyB0byBpbXBvcnQuCisgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2ltcG9ydD0ic2VkIC1uIC1lICdzL15JIC4qIFwoLipcKSQvXDEvcCciCisgICMgQWRqdXN0IHRoZSBiZWxvdyBnbG9iYWwgc3ltYm9sIHRyYW5zZm9ybXMgdG8gZml4dXAgaW1wb3J0ZWQgdmFyaWFibGVzLgorICBsdF9jZGVjbF9ob29rPSIgLWUgJ3MvXkkgLiogXCguKlwpJC9leHRlcm4gX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIgXDE7L3AnIgorICBsdF9jX25hbWVfaG9vaz0iIC1lICdzL15JIC4qIFwoLipcKSQvICB7XCJcMVwiLCAodm9pZCAqKSAwfSwvcCciCisgIGx0X2NfbmFtZV9saWJfaG9vaz0iXAorICAtZSAncy9eSSAuKiBcKGxpYi4qXCkkLyAge1wiXDFcIiwgKHZvaWQgKikgMH0sL3AnXAorICAtZSAncy9eSSAuKiBcKC4qXCkkLyAge1wibGliXDFcIiwgKHZvaWQgKikgMH0sL3AnIgorZWxzZQorICAjIERpc2FibGUgaG9va3MgYnkgZGVmYXVsdC4KKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9faW1wb3J0PQorICBsdF9jZGVjbF9ob29rPQorICBsdF9jX25hbWVfaG9vaz0KKyAgbHRfY19uYW1lX2xpYl9ob29rPQorZmkKKwogIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gYSBwcm9wZXIgQyBkZWNsYXJhdGlvbi4KICMgU29tZSBzeXN0ZW1zIChlc3AuIG9uIGlhNjQpIGxpbmsgZGF0YSBhbmQgY29kZSBzeW1ib2xzIGRpZmZlcmVudGx5LAogIyBzbyB1c2UgdGhpcyBnZW5lcmFsIGFwcHJvYWNoLgotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4iXAorJGx0X2NkZWNsX2hvb2tcCisiIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyJcCisiIC1lICdzL14kc3ltY29kZSRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKIAogIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4iXAorJGx0X2NfbmFtZV9ob29rXAorIiAtZSAncy9eOiBcKC4qXCkgLiokLyAge1wiXDFcIiwgKHZvaWQgKikgMH0sL3AnIlwKKyIgLWUgJ3MvXiRzeW1jb2RlJHN5bWNvZGUqIC4qIFwoLipcKSQvICB7XCJcMVwiLCAodm9pZCAqKSBcJlwxfSwvcCciCisKKyMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIHdpdGggbGliIHByZWZpeCBhbmQKKyMgc3ltYm9sIGFkZHJlc3MuCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4iXAorJGx0X2NfbmFtZV9saWJfaG9va1wKKyIgLWUgJ3MvXjogXCguKlwpIC4qJC8gIHtcIlwxXCIsICh2b2lkICopIDB9LC9wJyJcCisiIC1lICdzL14kc3ltY29kZSRzeW1jb2RlKiAuKiBcKGxpYi4qXCkkLyAge1wiXDFcIiwgKHZvaWQgKikgXCZcMX0sL3AnIlwKKyIgLWUgJ3MvXiRzeW1jb2RlJHN5bWNvZGUqIC4qIFwoLipcKSQvICB7XCJsaWJcMVwiLCAodm9pZCAqKSBcJlwxfSwvcCciCiAKICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogb3B0X2NyPQpAQCAtMzcwOSwyMSArNDAyMCwyNCBAQAogCiAgICMgV3JpdGUgdGhlIHJhdyBhbmQgQyBpZGVudGlmaWVycy4KICAgaWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSAgICAjIEZha2UgaXQgZm9yIGR1bXBiaW4gYW5kIHNheSBUIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbgotICAgICMgYW5kIEQgZm9yIGFueSBnbG9iYWwgdmFyaWFibGUuCisgICAgIyBGYWtlIGl0IGZvciBkdW1wYmluIGFuZCBzYXkgVCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24sCisgICAgIyBEIGZvciBhbnkgZ2xvYmFsIHZhcmlhYmxlIGFuZCBJIGZvciBhbnkgaW1wb3J0ZWQgdmFyaWFibGUuCiAgICAgIyBBbHNvIGZpbmQgQysrIGFuZCBfX2Zhc3RjYWxsIHN5bWJvbHMgZnJvbSBNU1ZDKyssCiAgICAgIyB3aGljaCBzdGFydCB3aXRoIEAgb3IgPy4KICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkQVdLIFsnIlwKICIgICAgIHtsYXN0X3NlY3Rpb249c2VjdGlvbjsgc2VjdGlvbj1cJCAzfTsiXAogIiAgICAgL15DT0ZGIFNZTUJPTCBUQUJMRS97Zm9yKGkgaW4gaGlkZSkgZGVsZXRlIGhpZGVbaV19OyJcCiAiICAgICAvU2VjdGlvbiBsZW5ndGggLiojcmVsb2NzLioocGljayBhbnkpL3toaWRlW2xhc3Rfc2VjdGlvbl09MX07IlwKKyIgICAgIC9eICpTeW1ib2wgbmFtZSAqOiAve3NwbGl0KFwkIDAsc24sXCI6XCIpOyBzaT1zdWJzdHIoc25bMl0sMil9OyJcCisiICAgICAvXiAqVHlwZSAqOiBjb2RlL3twcmludCBcIlRcIixzaSxzdWJzdHIoc2ksbGVuZ3RoKHByZngpKX07IlwKKyIgICAgIC9eICpUeXBlICo6IGRhdGEve3ByaW50IFwiSVwiLHNpLHN1YnN0cihzaSxsZW5ndGgocHJmeCkpfTsiXAogIiAgICAgXCQgMCF+L0V4dGVybmFsICpcfC97bmV4dH07IlwKICIgICAgIC8gMCsgVU5ERUYgL3tuZXh0fTsgLyBVTkRFRiBcKFtefF1cKSooKS97bmV4dH07IlwKICIgICAgIHtpZihoaWRlW3NlY3Rpb25dKSBuZXh0fTsiXAotIiAgICAge2Y9MH07IFwkIDB+L1woXCkuKlx8L3tmPTF9OyB7cHJpbnRmIGYgPyBcIlQgXCIgOiBcIkQgXCJ9OyJcCi0iICAgICB7c3BsaXQoXCQgMCwgYSwgL1x8fFxyLyk7IHNwbGl0KGFbMl0sIHMpfTsiXAotIiAgICAgc1sxXX4vXltAP10ve3ByaW50IHNbMV0sIHNbMV07IG5leHR9OyJcCi0iICAgICBzWzFdfnByZngge3NwbGl0KHNbMV0sdCxcIkBcIik7IHByaW50IHRbMV0sIHN1YnN0cih0WzFdLGxlbmd0aChwcmZ4KSl9IlwKKyIgICAgIHtmPVwiRFwifTsgXCQgMH4vXChcKS4qXHwve2Y9XCJUXCJ9OyJcCisiICAgICB7c3BsaXQoXCQgMCxhLC9cfHxcci8pOyBzcGxpdChhWzJdLHMpfTsiXAorIiAgICAgc1sxXX4vXltAP10ve3ByaW50IGYsc1sxXSxzWzFdOyBuZXh0fTsiXAorIiAgICAgc1sxXX5wcmZ4IHtzcGxpdChzWzFdLHQsXCJAXCIpOyBwcmludCBmLHRbMV0sc3Vic3RyKHRbMV0sbGVuZ3RoKHByZngpKX0iXAogIiAgICAgJyBwcmZ4PV4kYWNfc3ltcHJmeF0iCiAgIGVsc2UKICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgpAQCAtMzc2MywxMSArNDA3NywxMSBAQAogCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKIC8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLS8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19DWUdXSU5fXyB8fCBkZWZpbmVkIF9XSU4zMl9XQ0UKKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY2FuJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQogICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwogIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCi0jZWxpZiBkZWZpbmVkKF9fb3NmX18pCisjZWxpZiBkZWZpbmVkIF9fb3NmX18KIC8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwogIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCiAjZWxzZQpAQCAtMzc5Myw3ICs0MTA3LDcgQEAKIHsKICAgeyAiQFBST0dSQU1AIiwgKHZvaWQgKikgMCB9LAogX0xUX0VPRgotCSAgJFNFRCAicy9eJHN5bWNvZGUkc3ltY29kZSogXCguKlwpIFwoLipcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvIiA8ICIkbmxpc3QiIHwgJEdSRVAgLXYgbWFpbiA+PiBjb25mdGVzdC4kYWNfZXh0CisJICAkU0VEICJzL14kc3ltY29kZSRzeW1jb2RlKiAuKiBcKC4qXCkkLyAge1wiXDFcIiwgKHZvaWQgKikgXCZcMX0sLyIgPCAiJG5saXN0IiB8ICRHUkVQIC12IG1haW4gPj4gY29uZnRlc3QuJGFjX2V4dAogCSAgY2F0IDw8XF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAogICB7MCwgKHZvaWQgKikgMH0KIH07CkBAIC0zODEzLDkgKzQxMjcsOSBAQAogCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CiAJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwogCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0JICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorCSAgTElCUz1jb25mdHN0bS4kYWNfb2JqZXh0CiAJICBDRkxBR1M9IiRDRkxBR1MkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpIgotCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQ7IHRoZW4KIAkgICAgcGlwZV93b3Jrcz15ZXMKIAkgIGZpCiAJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwpAQCAtMzgzNiw3ICs0MTUwLDcgQEAKICAgcm0gLXJmIGNvbmZ0ZXN0KiBjb25mdHN0KgogCiAgICMgRG8gbm90IHVzZSB0aGUgZ2xvYmFsX3N5bWJvbF9waXBlIHVubGVzcyBpdCB3b3Jrcy4KLSAgaWYgdGVzdCAiJHBpcGVfd29ya3MiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiRwaXBlX3dvcmtzIjsgdGhlbgogICAgIGJyZWFrCiAgIGVsc2UKICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPQpAQCAtMzg2MywxMiArNDE3NywxNiBAQAogICAgIFtUYWtlIHRoZSBvdXRwdXQgb2Ygbm0gYW5kIHByb2R1Y2UgYSBsaXN0aW5nIG9mIHJhdyBzeW1ib2xzIGFuZCBDIG5hbWVzXSkKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgWzFdLAogICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIHByb3BlciBDIGRlY2xhcmF0aW9uXSkKK19MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2ltcG9ydF0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19pbXBvcnRdLCBbMV0sCisgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGludG8gYSBsaXN0IG9mIHN5bWJvbHMgdG8gbWFudWFsbHkgcmVsb2NhdGVdKQogX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLAogICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc10sIFsxXSwKICAgICBbVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyXSkKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAogICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwgWzFdLAogICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZF0pCitfTFRfREVDTChbbm1faW50ZXJmYWNlXSwgW2x0X2N2X25tX2ludGVyZmFjZV0sIFsxXSwKKyAgICBbVGhlIG5hbWUgbGlzdGVyIGludGVyZmFjZV0pCiBfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAogICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yICROTV0pCiBdKSAjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKQEAgLTM4ODQsMTcgKzQyMDIsMTggQEAKIAogbTRfaWYoWyQxXSwgW0NYWF0sIFsKICAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgotICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICBpZiB0ZXN0IHllcyA9ICIkR1hYIjsgdGhlbgogICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwogICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKIAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBhaXgqKQogICAgICAgIyBBbGwgQUlYIGNvZGUgaXMgUElDLgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAJIyBBSVggNSBub3cgc3VwcG9ydHMgSUE2NCBwcm9jZXNzb3IKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogICAgICAgZmkKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCiAgICAgICA7OwogCiAgICAgYW1pZ2FvcyopCkBAIC0zOTA1LDggKzQyMjQsOCBAQAogICAgICAgICA7OwogICAgICAgbTY4aykKICAgICAgICAgICAgICMgRklYTUU6IHdlIG5lZWQgYXQgbGVhc3QgNjgwMjAgY29kZSB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzLCBidXQKLSAgICAgICAgICAgICMgYWRkaW5nIHRoZSBgLW02ODAyMCcgZmxhZyB0byBHQ0MgcHJldmVudHMgYnVpbGRpbmcgYW55dGhpbmcgYmV0dGVyLAotICAgICAgICAgICAgIyBsaWtlIGAtbTY4MDQwJy4KKyAgICAgICAgICAgICMgYWRkaW5nIHRoZSAnLW02ODAyMCcgZmxhZyB0byBHQ0MgcHJldmVudHMgYnVpbGRpbmcgYW55dGhpbmcgYmV0dGVyLAorICAgICAgICAgICAgIyBsaWtlICctbTY4MDQwJy4KICAgICAgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLW02ODAyMCAtcmVzaWRlbnQzMiAtbWFsd2F5cy1yZXN0b3JlLWE0JwogICAgICAgICA7OwogICAgICAgZXNhYwpAQCAtMzkyMiw2ICs0MjQxLDExIEBACiAgICAgICAjICgtLWRpc2FibGUtYXV0by1pbXBvcnQpIGxpYnJhcmllcwogICAgICAgbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAogCVtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQorICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgb3MyKikKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9JyR3bC1zdGF0aWMnCisJOzsKKyAgICAgIGVzYWMKICAgICAgIDs7CiAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKICAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IG9uIHRoaXMgcGxhdGZvcm0KQEAgLTM5NzEsNyArNDI5NSw3IEBACiAgICAgY2FzZSAkaG9zdF9vcyBpbgogICAgICAgYWl4W1s0LTldXSopCiAJIyBBbGwgQUlYIGNvZGUgaXMgUElDLgotCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KIAkgICMgQUlYIDUgbm93IHN1cHBvcnRzIElBNjQgcHJvY2Vzc29yCiAJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogCWVsc2UKQEAgLTQwMTIsMTQgKzQzMzYsMTQgQEAKIAljYXNlICRjY19iYXNlbmFtZSBpbgogCSAgQ0MqKQogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLQkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPScke3dsfS1hICR7d2x9YXJjaGl2ZScKLQkgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nJHdsLWEgJHt3bH1hcmNoaXZlJworCSAgICBpZiB0ZXN0IGlhNjQgIT0gIiRob3N0X2NwdSI7IHRoZW4KIAkgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JytaJwogCSAgICBmaQogCSAgICA7OwogCSAgYUNDKikKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0JICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nJHt3bH0tYSAke3dsfWFyY2hpdmUnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nJHdsLWEgJHt3bH1hcmNoaXZlJwogCSAgICBjYXNlICRob3N0X2NwdSBpbgogCSAgICBocHBhKjY0KnxpYTY0KikKIAkgICAgICAjICtaIHRoZSBkZWZhdWx0CkBAIC00MDU2LDcgKzQzODAsNyBAQAogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJwogCSAgICA7OwogCSAgZWNwYyogKQotCSAgICAjIG9sZCBJbnRlbCBDKysgZm9yIHg4Nl82NCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCisJICAgICMgb2xkIEludGVsIEMrKyBmb3IgeDg2XzY0LCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCkBAIC00MjAxLDE3ICs0NTI1LDE4IEBACiAgIGZpCiBdLAogWwotICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwogICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKIAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgIGFpeCopCiAgICAgICAjIEFsbCBBSVggY29kZSBpcyBQSUMuCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KIAkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCiAgICAgICBmaQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKICAgICAgIDs7CiAKICAgICBhbWlnYW9zKikKQEAgLTQyMjIsOCArNDU0Nyw4IEBACiAgICAgICAgIDs7CiAgICAgICBtNjhrKQogICAgICAgICAgICAgIyBGSVhNRTogd2UgbmVlZCBhdCBsZWFzdCA2ODAyMCBjb2RlIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMsIGJ1dAotICAgICAgICAgICAgIyBhZGRpbmcgdGhlIGAtbTY4MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBiZXR0ZXIsCi0gICAgICAgICAgICAjIGxpa2UgYC1tNjgwNDAnLgorICAgICAgICAgICAgIyBhZGRpbmcgdGhlICctbTY4MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBiZXR0ZXIsCisgICAgICAgICAgICAjIGxpa2UgJy1tNjgwNDAnLgogICAgICAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctbTY4MDIwIC1yZXNpZGVudDMyIC1tYWx3YXlzLXJlc3RvcmUtYTQnCiAgICAgICAgIDs7CiAgICAgICBlc2FjCkBAIC00MjQwLDYgKzQ1NjUsMTEgQEAKICAgICAgICMgKC0tZGlzYWJsZS1hdXRvLWltcG9ydCkgbGlicmFyaWVzCiAgICAgICBtNF9pZihbJDFdLCBbR0NKXSwgW10sCiAJW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLURETExfRVhQT1JUJ10pCisgICAgICBjYXNlICRob3N0X29zIGluCisgICAgICBvczIqKQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nJHdsLXN0YXRpYycKKwk7OworICAgICAgZXNhYwogICAgICAgOzsKIAogICAgIGRhcndpbiogfCByaGFwc29keSopCkBAIC00MzEwLDcgKzQ2NDAsNyBAQAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBhaXgqKQogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KIAkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCiAgICAgICBlbHNlCkBAIC00MzE4LDExICs0NjQ4LDMwIEBACiAgICAgICBmaQogICAgICAgOzsKIAorICAgIGRhcndpbiogfCByaGFwc29keSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBvbiB0aGlzIHBsYXRmb3JtCisgICAgICAjIENvbW1vbiBzeW1ib2xzIG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mbm8tY29tbW9uJworICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIG5hZ2ZvciopCisgICAgICAgICMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKyAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwtV2wsLCcKKyAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJworICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKwogICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBwdzMyKiB8IG9zMiogfCBjZWdjYyopCiAgICAgICAjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCiAgICAgICAjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgogICAgICAgbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAogCVtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQorICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgb3MyKikKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9JyR3bC1zdGF0aWMnCisJOzsKKyAgICAgIGVzYWMKICAgICAgIDs7CiAKICAgICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKQEAgLTQzMzgsNyArNDY4Nyw3IEBACiAJOzsKICAgICAgIGVzYWMKICAgICAgICMgSXMgdGhlcmUgYSBiZXR0ZXIgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgdGhhdCB3b3JrcyB3aXRoIHRoZSBidW5kbGVkIENDPwotICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPScke3dsfS1hICR7d2x9YXJjaGl2ZScKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nJHdsLWEgJHt3bH1hcmNoaXZlJwogICAgICAgOzsKIAogICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCkBAIC00MzQ5LDcgKzQ2OTgsNyBAQAogCiAgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251IHwgZ251KikKICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICAjIG9sZCBJbnRlbCBmb3IgeDg2XzY0IHdoaWNoIHN0aWxsIHN1cHBvcnRlZCAtS1BJQy4KKyAgICAgICMgb2xkIEludGVsIGZvciB4ODZfNjQsIHdoaWNoIHN0aWxsIHN1cHBvcnRlZCAtS1BJQy4KICAgICAgIGVjYyopCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKQEAgLTQzNzQsNiArNDcyMywxMiBAQAogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogCTs7CisgICAgICB0Y2MqKQorCSMgRmFicmljZSBCZWxsYXJkIGV0IGFsJ3MgVGlueSBDIENvbXBpbGVyCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCisJOzsKICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQpAQCAtNDQ3MSw3ICs0ODI2LDcgQEAKICAgICAgIDs7CiAKICAgICBzeXN2NCpNUCopCi0gICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjIDt0aGVuCisgICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjOyB0aGVuCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS2NvbmZvcm1fcGljJwogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCiAgICAgICBmaQpAQCAtNDUwMCw3ICs0ODU1LDcgQEAKICAgZmkKIF0pCiBjYXNlICRob3N0X29zIGluCi0gICMgRm9yIHBsYXRmb3JtcyB3aGljaCBkbyBub3Qgc3VwcG9ydCBQSUMsIC1EUElDIGlzIG1lYW5pbmdsZXNzOgorICAjIEZvciBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBQSUMsIC1EUElDIGlzIG1lYW5pbmdsZXNzOgogICAqZGpncHAqKQogICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KICAgICA7OwpAQCAtNDU2NiwxNyArNDkyMSwyMSBAQAogICBjYXNlICRob3N0X29zIGluCiAgIGFpeFtbNC05XV0qKQogICAgICMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgotICAgICMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gQUlYIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgd2l0aCBHTlUgbm0KLSAgICAjIEFsc28sIEFJWCBubSB0cmVhdHMgd2VhayBkZWZpbmVkIHN5bWJvbHMgbGlrZSBvdGhlciBnbG9iYWwgZGVmaW5lZAotICAgICMgc3ltYm9scywgd2hlcmVhcyBHTlUgbm0gbWFya3MgdGhlbSBhcyAiVyIuCisgICAgIyAtQyBtZWFucyBkZW1hbmdsZSB0byBHTlUgbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB0byBBSVggbm0uCisgICAgIyBXaXRob3V0IHRoZSAiLWwiIG9wdGlvbiwgb3Igd2l0aCB0aGUgIi1CIiBvcHRpb24sIEFJWCBubSB0cmVhdHMKKyAgICAjIHdlYWsgZGVmaW5lZCBzeW1ib2xzIGxpa2Ugb3RoZXIgZ2xvYmFsIGRlZmluZWQgc3ltYm9scywgd2hlcmVhcworICAgICMgR05VIG5tIG1hcmtzIHRoZW0gYXMgIlciLgorICAgICMgV2hpbGUgdGhlICd3ZWFrJyBrZXl3b3JkIGlzIGlnbm9yZWQgaW4gdGhlIEV4cG9ydCBGaWxlLCB3ZSBuZWVkCisgICAgIyBpdCBpbiB0aGUgSW1wb3J0IEZpbGUgZm9yIHRoZSAnYWl4LXNvbmFtZScgZmVhdHVyZSwgc28gd2UgaGF2ZQorICAgICMgdG8gcmVwbGFjZSB0aGUgIi1CIiBvcHRpb24gd2l0aCAiLVAiIGZvciBBSVggbm0uCiAgICAgaWYgJE5NIC1WIDI+JjEgfCAkR1JFUCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBpZiAoXCQgMiA9PSAiVyIpIHsgcHJpbnQgXCQgMyAiIHdlYWsiIH0gZWxzZSB7IHByaW50IFwkIDMgfSB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKICAgICBlbHNlCi0gICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CQ3BnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSdgZnVuY19lY2hvX2FsbCAkTk0gfCAkU0VEIC1lICdcJydzL0JcKFtbXkJdXSpcKSQvUFwxLydcJydgIC1QQ3BnbCAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpIHx8IChcJCAyID09ICJWIikgfHwgKFwkIDIgPT0gIloiKSkgJiYgKFtzdWJzdHJdKFwkIDEsMSwxKSAhPSAiLiIpKSB7IGlmICgoXCQgMiA9PSAiVyIpIHx8IChcJCAyID09ICJWIikgfHwgKFwkIDIgPT0gIloiKSkgeyBwcmludCBcJCAxICIgd2VhayIgfSBlbHNlIHsgcHJpbnQgXCQgMSB9IH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogICAgIGZpCiAgICAgOzsKICAgcHczMiopCi0gICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgorICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSRsdGRsbF9jbWRzCiAgICAgOzsKICAgY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtNDYyNSw5ICs0OTg0LDkgQEAKICAgIyBpbmNsdWRlZCBpbiB0aGUgc3ltYm9sIGxpc3QKICAgX0xUX1RBR1ZBUihpbmNsdWRlX2V4cHN5bXMsICQxKT0KICAgIyBleGNsdWRlX2V4cHN5bXMgY2FuIGJlIGFuIGV4dGVuZGVkIHJlZ2V4cCBvZiBzeW1ib2xzIHRvIGV4Y2x1ZGUKLSAgIyBpdCB3aWxsIGJlIHdyYXBwZWQgYnkgYCAoJyBhbmQgYCkkJywgc28gb25lIG11c3Qgbm90IG1hdGNoIGJlZ2lubmluZyBvcgotICAjIGVuZCBvZiBsaW5lLiAgRXhhbXBsZTogYGF8YmN8LipkLionIHdpbGwgZXhjbHVkZSB0aGUgc3ltYm9scyBgYScgYW5kIGBiYycsCi0gICMgYXMgd2VsbCBhcyBhbnkgc3ltYm9sIHRoYXQgY29udGFpbnMgYGQnLgorICAjIGl0IHdpbGwgYmUgd3JhcHBlZCBieSAnICgnIGFuZCAnKSQnLCBzbyBvbmUgbXVzdCBub3QgbWF0Y2ggYmVnaW5uaW5nIG9yCisgICMgZW5kIG9mIGxpbmUuICBFeGFtcGxlOiAnYXxiY3wuKmQuKicgd2lsbCBleGNsdWRlIHRoZSBzeW1ib2xzICdhJyBhbmQgJ2JjJywKKyAgIyBhcyB3ZWxsIGFzIGFueSBzeW1ib2wgdGhhdCBjb250YWlucyAnZCcuCiAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQogICAjIEFsdGhvdWdoIF9HTE9CQUxfT0ZGU0VUX1RBQkxFXyBpcyBhIHZhbGlkIHN5bWJvbCBDIG5hbWUsIG1vc3QgYS5vdXQKICAgIyBwbGF0Zm9ybXMgKGFiKXVzZSBpdCBpbiBQSUMgY29kZSwgYnV0IHRoZWlyIGxpbmtlcnMgZ2V0IGNvbmZ1c2VkIGlmCkBAIC00NjQzLDcgKzUwMDIsNyBAQAogICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwogICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgIT0gIiRHQ0MiOyB0aGVuCiAgICAgICB3aXRoX2dudV9sZD1ubwogICAgIGZpCiAgICAgOzsKQEAgLTQ2NTEsNyArNTAxMCw3IEBACiAgICAgIyB3ZSBqdXN0IGhvcGUvYXNzdW1lIHRoaXMgaXMgZ2NjIGFuZCBub3QgYzg5ICg9IE1TVkMrKykKICAgICB3aXRoX2dudV9sZD15ZXMKICAgICA7OwotICBvcGVuYnNkKikKKyAgb3BlbmJzZCogfCBiaXRyaWcqKQogICAgIHdpdGhfZ251X2xkPW5vCiAgICAgOzsKICAgbGludXgqIHwgaypic2QqLWdudSB8IGdudSopCkBAIC00NjY0LDcgKzUwMjMsNyBAQAogICAjIE9uIHNvbWUgdGFyZ2V0cywgR05VIGxkIGlzIGNvbXBhdGlibGUgZW5vdWdoIHdpdGggdGhlIG5hdGl2ZSBsaW5rZXIKICAgIyB0aGF0IHdlJ3JlIGJldHRlciBvZmYgdXNpbmcgdGhlIG5hdGl2ZSBpbnRlcmZhY2UgZm9yIGJvdGguCiAgIGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlPW5vCi0gIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgPSAiJHdpdGhfZ251X2xkIjsgdGhlbgogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgIGFpeCopCiAJIyBUaGUgQUlYIHBvcnQgb2YgR05VIGxkIGhhcyBhbHdheXMgYXNwaXJlZCB0byBjb21wYXRpYmlsaXR5CkBAIC00Njg2LDI0ICs1MDQ1LDI0IEBACiAgICAgZXNhYwogICBmaQogCi0gIGlmIHRlc3QgIiRsdF91c2VfZ251X2xkX2ludGVyZmFjZSIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgPSAiJGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlIjsgdGhlbgogICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5Ci0gICAgd2xhcmM9JyR7d2x9JworICAgIHdsYXJjPSckd2wnCiAKICAgICAjIFNldCBzb21lIGRlZmF1bHRzIGZvciBHTlUgbGQgd2l0aCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0LiBUaGVzZQogICAgICMgYXJlIHJlc2V0IGxhdGVyIGlmIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIFB1dHRpbmcgdGhlbQogICAgICMgaGVyZSBhbGxvd3MgdGhlbSB0byBiZSBvdmVycmlkZGVuIGlmIG5lY2Vzc2FyeS4KICAgICBydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAotICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGggJHdsJGxpYmRpcicKKyAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtLWV4cG9ydC1keW5hbWljJwogICAgICMgYW5jaWVudCBHTlUgbGQgZGlkbid0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlIGV0LiBhbC4KICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnbm8td2hvbGUtYXJjaGl2ZScgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0iJHdsYXJjIictLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJyIkd2xhcmMiJy0tbm8td2hvbGUtYXJjaGl2ZScKKyAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0kd2xhcmMnLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICckd2xhcmMnLS1uby13aG9sZS1hcmNoaXZlJwogICAgIGVsc2UKICAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KICAgICBmaQogICAgIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz1ubwotICAgIGNhc2UgYCRMRCAtdiAyPiYxYCBpbgorICAgIGNhc2UgYCRMRCAtdiB8ICRTRUQgLWUgJ3MvKFteKV1cKylcc1wrLy8nIDI+JjFgIGluCiAgICAgICAqR05VXCBnb2xkKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OwogICAgICAgKlwgW1swMV1dLiogfCAqXCAyLltbMC05XV0uKiB8ICpcIDIuMTAuKikgOzsgIyBjYXRjaCB2ZXJzaW9ucyA8IDIuMTEKICAgICAgICpcIDIuMTEuOTMuMC4yXCAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7ICMgUkg3LjMgLi4uCkBAIC00NzE2LDcgKzUwNzUsNyBAQAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBhaXhbWzMtOV1dKikKICAgICAgICMgT24gQUlYL1BQQywgdGhlIEdOVSBsaW5rZXIgaXMgdmVyeSBicm9rZW4KLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NDsgdGhlbgorICAgICAgaWYgdGVzdCBpYTY0ICE9ICIkaG9zdF9jcHUiOyB0aGVuCiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogCWNhdCA8PF9MVF9FT0YgMT4mMgogCkBAIC00NzM1LDcgKzUwOTQsNyBAQAogICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KICAgICAgIHBvd2VycGMpCiAgICAgICAgICAgICAjIHNlZSBjb21tZW50IGFib3V0IEFtaWdhT1M0IC5zbyBzdXBwb3J0Ci0gICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPScnCiAgICAgICAgIDs7CiAgICAgICBtNjhrKQpAQCAtNDc1MSw3ICs1MTEwLDcgQEAKIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKIAkjIEpvc2VwaCBCZWNrZW5iYWNoIDxqcmIzQGJlc3QuY29tPiBzYXlzIHNvbWUgcmVsZWFzZXMgb2YgZ2NjCiAJIyBzdXBwb3J0IC0tdW5kZWZpbmVkLiAgVGhpcyBkZXNlcnZlcyBzb21lIGludmVzdGlnYXRpb24uICBGSVhNRQotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW5vc3RhcnQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KICAgICAgIGZpCkBAIC00NzYxLDcgKzUxMjAsNyBAQAogICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR3bC0tZXhwb3J0LWFsbC1zeW1ib2xzJwogICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCiAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCiAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKQEAgLTQ3NjksNjEgKzUxMjgsODkgQEAKICAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQogCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotCSMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLQkjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotCSAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotCWVsc2UKLQkgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotCSAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQlmaX4KLQkkQ0MgLXNoYXJlZCAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHdsLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSwgdXNlIGl0IGFzCisJIyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kIEVYUE9SVFMuLi4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgX0xUX0RMTF9ERUZfUChbJGV4cG9ydF9zeW1ib2xzXSk7IHRoZW4KKyAgICAgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKyAgICAgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworICAgICAgICBmaX4KKyAgICAgICAgJENDIC1zaGFyZWQgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHdsLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KICAgICAgIGZpCiAgICAgICA7OwogCiAgICAgaGFpa3UqKQotICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKICAgICAgIDs7CiAKKyAgICBvczIqKQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisgICAgICBzaHJleHRfY21kcz0uZGxsCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAke3NvbmFtZSUkc2hhcmVkX2V4dH0gSU5JVElOU1RBTkNFIFRFUk1JTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPICJEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCWVteGV4cCAkbGlib2JqcyB8ICRTRUQgLyJfRExMX0luaXRUZXJtIi9kID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCWVteGltcCAtbyAkbGliICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAke3NvbmFtZSUkc2hhcmVkX2V4dH0gSU5JVElOU1RBTkNFIFRFUk1JTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPICJEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCXByZWZpeF9jbWRzPSIkU0VEIn4KKwlpZiB0ZXN0IEVYUE9SVFMgPSAiYCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCI7IHRoZW4KKwkgIHByZWZpeF9jbWRzPSIkcHJlZml4X2NtZHMgLWUgMWQiOworCWZpfgorCXByZWZpeF9jbWRzPSIkcHJlZml4X2NtZHMgLWUgXCJzL15cKC4qXCkkL19cMS9nXCIifgorCWNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkcHJlZml4X2NtZHMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRDQyAtWmRsbCAtWmNydGRsbCAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJZW14aW1wIC1vICRsaWIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9Gcm9tX25ld19jbWRzLCAkMSk9J2VteGltcCAtbyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9X2RsbC5hICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworICAgICAgOzsKKwogICAgIGludGVyaXhbWzMtOV1dKikKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoLCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtRScKICAgICAgICMgSGFjazogT24gSW50ZXJpeCAzLngsIHdlIGNhbm5vdCBjb21waWxlIFBJQyBiZWNhdXNlIG9mIGEgYnJva2VuIGdjYy4KICAgICAgICMgSW5zdGVhZCwgc2hhcmVkIGxpYnJhcmllcyBhcmUgbG9hZGVkIGF0IGFuIGltYWdlIGJhc2UgKDB4MTAwMDAwMDAgYnkKICAgICAgICMgZGVmYXVsdCkgYW5kIHJlbG9jYXRlZCBpZiB0aGV5IGNvbmZsaWN0LCB3aGljaCBpcyBhIHNsb3cgdmVyeSBtZW1vcnkKICAgICAgICMgY29uc3VtaW5nIGFuZCBmcmFnbWVudGluZyBwcm9jZXNzLiAgVG8gYXZvaWQgdGhpcywgd2UgcGljayBhIHJhbmRvbSwKICAgICAgICMgMjU2IEtpQi1hbGlnbmVkIGltYWdlIGJhc2UgYmV0d2VlbiAweDUwMDAwMDAwIGFuZCAweDZGRkMwMDAwIGF0IGxpbmsKICAgICAgICMgdGltZS4gIE1vdmluZyB1cCBmcm9tIDB4MTAwMDAwMDAgYWxzbyBhbGxvd3MgbW9yZSBzYnJrKDIpIHNwYWNlLgotICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1oLCRzb25hbWUgJHt3bH0tLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgInMsXixfLCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtaCwkc29uYW1lICR3bC0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAic3xefF98IiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLWgsJHNvbmFtZSAkd2wtLXJldGFpbi1zeW1ib2xzLWZpbGUsJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW0gJHdsLS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCiAgICAgICA7OwogCiAgICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgICAgICB0bXBfZGlldD1ubwotICAgICAgaWYgdGVzdCAiJGhvc3Rfb3MiID0gbGludXgtZGlldGxpYmM7IHRoZW4KKyAgICAgIGlmIHRlc3QgbGludXgtZGlldGxpYmMgPSAiJGhvc3Rfb3MiOyB0aGVuCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KIAkgIGRpZXRcICopIHRtcF9kaWV0PXllczs7CSMgbGludXgtZGlldGxpYmMgd2l0aCBzdGF0aWMgbGlua2luZyAoIWRpZXQtZHluKQogCWVzYWMKICAgICAgIGZpCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkRUdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbCBcCi0JICYmIHRlc3QgIiR0bXBfZGlldCIgPSBubworCSAmJiB0ZXN0IG5vID0gIiR0bXBfZGlldCIKICAgICAgIHRoZW4KIAl0bXBfYWRkZmxhZz0nICRwaWNfZmxhZycKIAl0bXBfc2hhcmVkZmxhZz0nLXNoYXJlZCcKIAljYXNlICRjY19iYXNlbmFtZSwkaG9zdF9jcHUgaW4KICAgICAgICAgcGdjYyopCQkJCSMgUG9ydGxhbmQgR3JvdXAgQyBjb21waWxlcgotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHdsLS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR3bC0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCSAgOzsKIAlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogCQkJCQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycwotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHdsLS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR3bC0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnIC1Nbm9tYWluJyA7OwogCWVjYyosaWE2NCogfCBpY2MqLGlhNjQqKQkjIEludGVsIEMgY29tcGlsZXIgb24gaWE2NAogCSAgdG1wX2FkZGZsYWc9JyAtaV9keW5hbWljJyA7OwpAQCAtNDgzNCw0MiArNTIyMSw0NyBAQAogCWxmOTUqKQkJCQkjIExhaGV5IEZvcnRyYW4gOC4xCiAJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiAJICB0bXBfc2hhcmVkZmxhZz0nLS1zaGFyZWQnIDs7CisgICAgICAgIG5hZ2ZvciopICAgICAgICAgICAgICAgICAgICAgICAgIyBOQUdGT1IgNS4zCisgICAgICAgICAgdG1wX3NoYXJlZGZsYWc9Jy1XbCwtc2hhcmVkJyA7OwogCXhsW1tjQ11dKiB8IGJneGxbW2NDXV0qIHwgbXBpeGxbW2NDXV0qKSAjIElCTSBYTCBDIDguMCBvbiBQUEMgKGRlYWwgd2l0aCB4bGYgYmVsb3cpCiAJICB0bXBfc2hhcmVkZmxhZz0nLXFta3Nocm9iaicKIAkgIHRtcF9hZGRmbGFnPSA7OwogCW52Y2MqKQkjIEN1ZGEgQ29tcGlsZXIgRHJpdmVyIDIuMgotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHdsLS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR3bC0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIF9MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzCiAJICA7OwogCWVzYWMKIAljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KIAkqU3VuXCBDKikJCQkjIFN1biBDIDUuOQotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckd2wtLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcwogCSAgdG1wX3NoYXJlZGZsYWc9Jy1HJyA7OwogCSpTdW5cIEYqKQkJCSMgU3VuIEZvcnRyYW4gOC4zCiAJICB0bXBfc2hhcmVkZmxhZz0nLUcnIDs7CiAJZXNhYwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAnIiR0bXBfc2hhcmVkZmxhZyIiJHRtcF9hZGRmbGFnIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDICciJHRtcF9zaGFyZWRmbGFnIiIkdG1wX2FkZGZsYWciJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAKLSAgICAgICAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorICAgICAgICBpZiB0ZXN0IHllcyA9ICIkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIjsgdGhlbgogICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICAkQ0MgJyIkdG1wX3NoYXJlZGZsYWciIiR0bXBfYWRkZmxhZyInICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS12ZXJzaW9uLXNjcmlwdCAke3dsfSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworICAgICAgICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorICAgICAgICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgICAgICAgICAgICAkQ0MgJyIkdG1wX3NoYXJlZGZsYWciIiR0bXBfYWRkZmxhZyInICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXZlcnNpb24tc2NyaXB0ICR3bCRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwogICAgICAgICBmaQogCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwl0Y2MqKQorCSAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nLXJkeW5hbWljJworCSAgOzsKIAl4bGYqIHwgYmdmKiB8IGJneGxmKiB8IG1waXhsZiopCiAJICAjIElCTSBYTCBGb3J0cmFuIDEwLjEgb24gUFBDIGNhbm5vdCBjcmVhdGUgc2hhcmVkIGxpYnMgaXRzZWxmCiAJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0JICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLQkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKwkgIGlmIHRlc3QgeWVzID0gIiRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciOyB0aGVuCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgICAgICAgICAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgICAgICAgICAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKIAkgIGZpCiAJICA7OwogCWVzYWMKQEAgLTQ4ODMsOCArNTI3NSw4IEBACiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKIAl3bGFyYz0KICAgICAgIGVsc2UKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICA7OwogCkBAIC00OTAyLDggKzUyOTQsOCBAQAogCiBfTFRfRU9GCiAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAgICAgICBmaQpAQCAtNDkxNSw3ICs1MzA3LDcgQEAKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAJY2F0IDw8X0xUX0VPRiAxPiYyCiAKLSoqKiBXYXJuaW5nOiBSZWxlYXNlcyBvZiB0aGUgR05VIGxpbmtlciBwcmlvciB0byAyLjE2LjkxLjAuMyBjYW4gbm90CisqKiogV2FybmluZzogUmVsZWFzZXMgb2YgdGhlIEdOVSBsaW5rZXIgcHJpb3IgdG8gMi4xNi45MS4wLjMgY2Fubm90CiAqKiogcmVsaWFibHkgY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgb24gU0NPIHN5c3RlbXMuICBUaGVyZWZvcmUsIGxpYnRvb2wKICoqKiBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgV2UgdXJnZSB5b3UgdG8gdXBncmFkZSBHTlUKICoqKiBiaW51dGlscyB0byByZWxlYXNlIDIuMTYuOTEuMC4zIG9yIG5ld2VyLiAgQW5vdGhlciBvcHRpb24gaXMgdG8gbW9kaWZ5CkBAIC00OTMwLDkgKzUzMjIsOSBAQAogCSAgIyBEVF9SVU5QQVRIIHRhZyBmcm9tIGV4ZWN1dGFibGVzIGFuZCBsaWJyYXJpZXMuICBCdXQgZG9pbmcgc28KIAkgICMgcmVxdWlyZXMgdGhhdCB5b3UgY29tcGlsZSBldmVyeXRoaW5nIHR3aWNlLCB3aGljaCBpcyBhIHBhaW4uCiAJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGggJHdsJGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAkgIGVsc2UKIAkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogCSAgZmkKQEAgLTQ5NDksMTUgKzUzNDEsMTUgQEAKIAogICAgICopCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogICAgICAgZmkKICAgICAgIDs7CiAgICAgZXNhYwogCi0gICAgaWYgdGVzdCAiJF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSkiID0gbm87IHRoZW4KKyAgICBpZiB0ZXN0IG5vID0gIiRfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpIjsgdGhlbgogICAgICAgcnVucGF0aF92YXI9CiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9CkBAIC00OTczLDcgKzUzNjUsNyBAQAogICAgICAgIyBOb3RlOiB0aGlzIGxpbmtlciBoYXJkY29kZXMgdGhlIGRpcmVjdG9yaWVzIGluIExJQlBBVEggaWYgdGhlcmUKICAgICAgICMgYXJlIG5vIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBieSAtTC4KICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAteiAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIjsgdGhlbgorICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyIgJiYgdGVzdCAteiAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIjsgdGhlbgogCSMgTmVpdGhlciBkaXJlY3QgaGFyZGNvZGluZyBub3Igc3RhdGljIGxpbmtpbmcgaXMgc3VwcG9ydGVkIHdpdGggYQogCSMgYnJva2VuIGNvbGxlY3QyLgogCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9dW5zdXBwb3J0ZWQKQEAgLTQ5ODEsMzQgKzUzNzMsNTcgQEAKICAgICAgIDs7CiAKICAgICBhaXhbWzQtOV1dKikKLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgICAgICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogCSMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKIAkjIGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KIAlhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCiAJZXhwX3N5bV9mbGFnPSctQmV4cG9ydCcKLQlub19lbnRyeV9mbGFnPSIiCisJbm9fZW50cnlfZmxhZz0KICAgICAgIGVsc2UKIAkjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLQkjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCi0JIyBBbHNvLCBBSVggbm0gdHJlYXRzIHdlYWsgZGVmaW5lZCBzeW1ib2xzIGxpa2Ugb3RoZXIgZ2xvYmFsCi0JIyBkZWZpbmVkIHN5bWJvbHMsIHdoZXJlYXMgR05VIG5tIG1hcmtzIHRoZW0gYXMgIlciLgorCSMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gR05VIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgdG8gQUlYIG5tLgorCSMgV2l0aG91dCB0aGUgIi1sIiBvcHRpb24sIG9yIHdpdGggdGhlICItQiIgb3B0aW9uLCBBSVggbm0gdHJlYXRzCisJIyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbCBkZWZpbmVkIHN5bWJvbHMsIHdoZXJlYXMKKwkjIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KKwkjIFdoaWxlIHRoZSAnd2Vhaycga2V5d29yZCBpcyBpZ25vcmVkIGluIHRoZSBFeHBvcnQgRmlsZSwgd2UgbmVlZAorCSMgaXQgaW4gdGhlIEltcG9ydCBGaWxlIGZvciB0aGUgJ2FpeC1zb25hbWUnIGZlYXR1cmUsIHNvIHdlIGhhdmUKKwkjIHRvIHJlcGxhY2UgdGhlICItQiIgb3B0aW9uIHdpdGggIi1QIiBmb3IgQUlYIG5tLgogCWlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KLQkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKwkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgaWYgKFwkIDIgPT0gIlciKSB7IHByaW50IFwkIDMgIiB3ZWFrIiB9IGVsc2UgeyBwcmludCBcJCAzIH0gfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZWxzZQotCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nYGZ1bmNfZWNob19hbGwgJE5NIHwgJFNFRCAtZSAnXCcncy9CXChbW15CXV0qXCkkL1BcMS8nXCcnYCAtUENwZ2wgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSB8fCAoXCQgMiA9PSAiViIpIHx8IChcJCAyID09ICJaIikpICYmIChbc3Vic3RyXShcJCAxLDEsMSkgIT0gIi4iKSkgeyBpZiAoKFwkIDIgPT0gIlciKSB8fCAoXCQgMiA9PSAiViIpIHx8IChcJCAyID09ICJaIikpIHsgcHJpbnQgXCQgMSAiIHdlYWsiIH0gZWxzZSB7IHByaW50IFwkIDEgfSB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKIAlmaQogCWFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KIAogCSMgVGVzdCBpZiB3ZSBhcmUgdHJ5aW5nIHRvIHVzZSBydW4gdGltZSBsaW5raW5nIG9yIG5vcm1hbAogCSMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQotCSMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCisJIyBoYXZlIHJ1bnRpbWUgbGlua2luZyBlbmFibGVkLCBhbmQgdXNlIGl0IGZvciBleGVjdXRhYmxlcy4KKwkjIEZvciBzaGFyZWQgbGlicmFyaWVzLCB3ZSBlbmFibGUvZGlzYWJsZSBydW50aW1lIGxpbmtpbmcKKwkjIGRlcGVuZGluZyBvbiB0aGUga2luZCBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgY3JlYXRlZCAtCisJIyB3aGVuICJ3aXRoX2FpeF9zb25hbWUsYWl4X3VzZV9ydW50aW1lbGlua2luZyIgaXM6CisJIyAiYWl4LG5vIiAgIGxpYi5hKGxpYi5zby5WKSBzaGFyZWQsIHJ0bDpubywgIGZvciBleGVjdXRhYmxlcworCSMgImFpeCx5ZXMiICBsaWIuc28gICAgICAgICAgc2hhcmVkLCBydGw6eWVzLCBmb3IgZXhlY3V0YWJsZXMKKwkjICAgICAgICAgICAgbGliLmEgICAgICAgICAgIHN0YXRpYyBhcmNoaXZlCisJIyAiYm90aCxubyIgIGxpYi5zby5WKHNoci5vKSBzaGFyZWQsIHJ0bDp5ZXMKKwkjICAgICAgICAgICAgbGliLmEobGliLnNvLlYpIHNoYXJlZCwgcnRsOm5vLCAgZm9yIGV4ZWN1dGFibGVzCisJIyAiYm90aCx5ZXMiIGxpYi5zby5WKHNoci5vKSBzaGFyZWQsIHJ0bDp5ZXMsIGZvciBleGVjdXRhYmxlcworCSMgICAgICAgICAgICBsaWIuYShsaWIuc28uVikgc2hhcmVkLCBydGw6bm8KKwkjICJzdnI0LCoiICAgbGliLnNvLlYoc2hyLm8pIHNoYXJlZCwgcnRsOnllcywgZm9yIGV4ZWN1dGFibGVzCisJIyAgICAgICAgICAgIGxpYi5hICAgICAgICAgICBzdGF0aWMgYXJjaGl2ZQogCWNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bWzIzXV18YWl4NC5bWzIzXV0uKnxhaXhbWzUtOV1dKikKIAkgIGZvciBsZF9mbGFnIGluICRMREZMQUdTOyBkbwotCSAgaWYgKHRlc3QgJGxkX2ZsYWcgPSAiLWJydGwiIHx8IHRlc3QgJGxkX2ZsYWcgPSAiLVdsLC1icnRsIik7IHRoZW4KKwkgIGlmICh0ZXN0IHgtYnJ0bCA9ICJ4JGxkX2ZsYWciIHx8IHRlc3QgeC1XbCwtYnJ0bCA9ICJ4JGxkX2ZsYWciKTsgdGhlbgogCSAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcwogCSAgICBicmVhawogCSAgZmkKIAkgIGRvbmUKKwkgIGlmIHRlc3Qgc3ZyNCxubyA9ICIkd2l0aF9haXhfc29uYW1lLCRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIjsgdGhlbgorCSAgICAjIFdpdGggYWl4LXNvbmFtZT1zdnI0LCB3ZSBjcmVhdGUgdGhlIGxpYi5zby5WIHNoYXJlZCBhcmNoaXZlcyBvbmx5LAorCSAgICAjIHNvIHdlIGRvbid0IGhhdmUgbGliLmEgc2hhcmVkIGxpYnMgdG8gbGluayBvdXIgZXhlY3V0YWJsZXMuCisJICAgICMgV2UgaGF2ZSB0byBmb3JjZSBydW50aW1lIGxpbmtpbmcgaW4gdGhpcyBjYXNlLgorCSAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcworCSAgICBMREZMQUdTPSIkTERGTEFHUyAtV2wsLWJydGwiCisJICBmaQogCSAgOzsKIAllc2FjCiAKQEAgLTUwMjcsMTMgKzU0NDIsMjEgQEAKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9eWVzCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0nOicKICAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgICAgX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPScke3dsfS1mLCcKKyAgICAgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nJHdsLWYsJworICAgICAgY2FzZSAkd2l0aF9haXhfc29uYW1lLCRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIGluCisgICAgICBhaXgsKikgOzsgIyB0cmFkaXRpb25hbCwgbm8gaW1wb3J0IGZpbGUKKyAgICAgIHN2cjQsKiB8ICoseWVzKSAjIHVzZSBpbXBvcnQgZmlsZQorCSMgVGhlIEltcG9ydCBGaWxlIGRlZmluZXMgd2hhdCB0byBoYXJkY29kZS4KKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCisJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT1ubworCTs7CisgICAgICBlc2FjCiAKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogCWNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bWzAxMl1dfGFpeDQuW1swMTJdXS4qKQogCSMgV2Ugb25seSB3YW50IHRvIGRvIHRoaXMgb24gQUlYIDQuMiBhbmQgbG93ZXIsIHRoZSBjaGVjawogCSMgYmVsb3cgZm9yIGJyb2tlbiBjb2xsZWN0MiBkb2Vzbid0IHdvcmsgdW5kZXIgNC4zKwotCSAgY29sbGVjdDJuYW1lPWAke0NDfSAtcHJpbnQtcHJvZy1uYW1lPWNvbGxlY3QyYAorCSAgY29sbGVjdDJuYW1lPWAkQ0MgLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKIAkgIGlmIHRlc3QgLWYgIiRjb2xsZWN0Mm5hbWUiICYmCiAJICAgc3RyaW5ncyAiJGNvbGxlY3QybmFtZSIgfCAkR1JFUCByZXNvbHZlX2xpYl9uYW1lID4vZGV2L251bGwKIAkgIHRoZW4KQEAgLTUwNTIsNjIgKzU0NzUsODAgQEAKIAkgIDs7CiAJZXNhYwogCXNoYXJlZF9mbGFnPSctc2hhcmVkJwotCWlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotCSAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCisJaWYgdGVzdCB5ZXMgPSAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciOyB0aGVuCisJICBzaGFyZWRfZmxhZz0iJHNoYXJlZF9mbGFnICInJHdsLUcnCiAJZmkKLQlfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT1ubworCSMgTmVlZCB0byBlbnN1cmUgcnVudGltZSBsaW5raW5nIGlzIGRpc2FibGVkIGZvciB0aGUgdHJhZGl0aW9uYWwKKwkjIHNoYXJlZCBsaWJyYXJ5LCBvciB0aGUgbGlua2VyIG1heSBldmVudHVhbGx5IGZpbmQgc2hhcmVkIGxpYnJhcmllcworCSMgL3dpdGgvIEltcG9ydCBGaWxlIC0gd2UgZG8gbm90IHdhbnQgdG8gbWl4IHRoZW0uCisJc2hhcmVkX2ZsYWdfYWl4PSctc2hhcmVkJworCXNoYXJlZF9mbGFnX3N2cjQ9Jy1zaGFyZWQgJHdsLUcnCiAgICAgICBlbHNlCiAJIyBub3QgdXNpbmcgZ2NjCi0JaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwlpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogCSMgVmlzdWFsQWdlIEMrKywgVmVyc2lvbiA1LjUgZm9yIEFJWCA1TCBmb3IgSUEtNjQsIEJldGEgMyBSZWxlYXNlCiAJIyBjaG9rZXMgb24gLVdsLC1HLiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgY29ycmVjdDoKIAkgIHNoYXJlZF9mbGFnPSctRycKIAllbHNlCi0JICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KLQkgICAgc2hhcmVkX2ZsYWc9JyR7d2x9LUcnCisJICBpZiB0ZXN0IHllcyA9ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgc2hhcmVkX2ZsYWc9JyR3bC1HJwogCSAgZWxzZQotCSAgICBzaGFyZWRfZmxhZz0nJHt3bH0tYk06U1JFJworCSAgICBzaGFyZWRfZmxhZz0nJHdsLWJNOlNSRScKIAkgIGZpCisJICBzaGFyZWRfZmxhZ19haXg9JyR3bC1iTTpTUkUnCisJICBzaGFyZWRfZmxhZ19zdnI0PSckd2wtRycKIAlmaQogICAgICAgZmkKIAotICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmV4cGFsbCcKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR3bC1iZXhwYWxsJwogICAgICAgIyBJdCBzZWVtcyB0aGF0IC1iZXhwYWxsIGRvZXMgbm90IGV4cG9ydCBzeW1ib2xzIGJlZ2lubmluZyB3aXRoCiAgICAgICAjIHVuZGVyc2NvcmUgKF8pLCBzbyBpdCBpcyBiZXR0ZXIgdG8gZ2VuZXJhdGUgYSBsaXN0IG9mIHN5bWJvbHMgdG8gZXhwb3J0LgogICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKLSAgICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorICAgICAgaWYgdGVzdCBhaXgseWVzID0gIiR3aXRoX2FpeF9zb25hbWUsJGFpeF91c2VfcnVudGltZWxpbmtpbmciOyB0aGVuCiAJIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVudGltZSBsb2FkaW5nIGZsYWdzICgtYnJ0bCksCiAJIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwogICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgogICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR3bCckbm9fZW50cnlfZmxhZycgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0IC1uICIkYWxsb3dfdW5kZWZpbmVkX2ZsYWciOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR3bCRhbGxvd191bmRlZmluZWRfZmxhZyI7IGVsc2UgOjsgZmlgICR3bCckZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMnICckc2hhcmVkX2ZsYWcKICAgICAgIGVsc2UKLQlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJworCWlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLVIgJGxpYmRpcjovdXNyL2xpYjovbGliJwogCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIteiBub2RlZnMiCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyIKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHdsJG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgJHdsJGFsbG93X3VuZGVmaW5lZF9mbGFnICciXCR3bCRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyIKIAllbHNlCiAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogCSAjIGVtcHR5IGV4ZWN1dGFibGUuCiAJIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0JIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgotCSAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVybm90b2snCi0JICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJvaycKLQkgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR3bC1iZXJub3RvaycKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR3bC1iZXJvaycKKwkgIGlmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KIAkgICAgIyBXZSBvbmx5IHVzZSB0aGlzIGNvZGUgZm9yIEdOVSBsZHMgdGhhdCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZS4KLQkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckd2wtLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHdsLS1uby13aG9sZS1hcmNoaXZlJwogCSAgZWxzZQogCSAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKIAkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCiAJICBmaQogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcwotCSAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkIGxpYnJhcmllcy4KLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHt3bH0tYm5vZW50cnkgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWJFOiRleHBvcnRfc3ltYm9scyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9fiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRzb25hbWUnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJFJNIC1yICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kfiRNS0RJUiAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZCcKKwkgICMgLWJydGwgYWZmZWN0cyBtdWx0aXBsZSBsaW5rZXIgc2V0dGluZ3MsIC1iZXJvayBkb2VzIG5vdCBhbmQgaXMgb3ZlcnJpZGRlbiBsYXRlcgorCSAgY29tcGlsZXJfZmxhZ3NfZmlsdGVyZWQ9J2BmdW5jX2VjaG9fYWxsICIkY29tcGlsZXJfZmxhZ3MgIiB8ICRTRUQgLWUgInMlLWJydGxcXChbWywgXV1cXCklLWJlcm9rXFwxJWciYCcKKwkgIGlmIHRlc3Qgc3ZyNCAhPSAiJHdpdGhfYWl4X3NvbmFtZSI7IHRoZW4KKwkgICAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkIGxpYnJhcmllcy4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IiRfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKSInfiRDQyAnJHNoYXJlZF9mbGFnX2FpeCcgLW8gJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkd2wtYm5vZW50cnkgJyRjb21waWxlcl9mbGFnc19maWx0ZXJlZCckd2wtYkU6JGV4cG9ydF9zeW1ib2xzJGFsbG93X3VuZGVmaW5lZF9mbGFnfiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzb25hbWUnCisJICBmaQorCSAgaWYgdGVzdCBhaXggIT0gIiR3aXRoX2FpeF9zb25hbWUiOyB0aGVuCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSIkX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSkiJ34kQ0MgJyRzaGFyZWRfZmxhZ19zdnI0JyAtbyAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubyAkbGlib2JqcyAkZGVwbGlicyAkd2wtYm5vZW50cnkgJyRjb21waWxlcl9mbGFnc19maWx0ZXJlZCckd2wtYkU6JGV4cG9ydF9zeW1ib2xzJGFsbG93X3VuZGVmaW5lZF9mbGFnfiRTVFJJUCAtZSAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMub34oIGZ1bmNfZWNob19hbGwgIiMhICRzb25hbWUoJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm8pIjsgaWYgdGVzdCBzaHJfNjQgPSAiJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjIjsgdGhlbiBmdW5jX2VjaG9fYWxsICIjIDY0IjsgZWxzZSBmdW5jX2VjaG9fYWxsICIjIDMyIjsgZmk7IGNhdCAkZXhwb3J0X3N5bWJvbHMgKSA+ICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5pbXB+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kc29uYW1lICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5pbXAnCisJICBlbHNlCisJICAgICMgdXNlZCBieSAtZGxwcmVvcGVuIHRvIGdldCB0aGUgc3ltYm9scworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iJF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpIid+JE1WICAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc29uYW1lICRvdXRwdXRfb2JqZGlyJworCSAgZmkKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSIkX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSkiJ34kUk0gLXIgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQnCiAJZmkKICAgICAgIGZpCiAgICAgICA7OwpAQCAtNTExNiw3ICs1NTU3LDcgQEAKICAgICAgIGNhc2UgJGhvc3RfY3B1IGluCiAgICAgICBwb3dlcnBjKQogICAgICAgICAgICAgIyBzZWUgY29tbWVudCBhYm91dCBBbWlnYU9TNCAuc28gc3VwcG9ydAotICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJwogICAgICAgICA7OwogICAgICAgbTY4aykKQEAgLTUxNDYsMTYgKzU1ODcsMTcgQEAKIAkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgogCWxpYmV4dD1saWIKIAkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLQlzaHJleHRfY21kcz0iLmRsbCIKKwlzaHJleHRfY21kcz0uZGxsCiAJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotCSAgZWxzZQotCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotCSAgZml+Ci0JICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0JICBsaW5rbmFtZXM9JworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+bGlua25hbWVzPScKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgX0xUX0RMTF9ERUZfUChbJGV4cG9ydF9zeW1ib2xzXSk7IHRoZW4KKyAgICAgICAgICAgIGNwICIkZXhwb3J0X3N5bWJvbHMiICIkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiI7CisgICAgICAgICAgICBlY2hvICIkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5kZWYiID4gIiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwIjsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAkU0VEIC1lICdcJydzL14vLWxpbmsgLUVYUE9SVDovJ1wnJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworICAgICAgICAgIGZpfgorICAgICAgICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKyAgICAgICAgICBsaW5rbmFtZXM9JwogCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KIAkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwogCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwpAQCAtNTE2NCwxOCArNTYwNiwxOCBAQAogCSMgRG9uJ3QgdXNlIHJhbmxpYgogCV9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCiAJX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLQkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0JICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0JICAgICouZXhlfCouRVhFKSA7OwotCSAgICAqKQotCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLQkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotCSAgICAgIDs7Ci0JICBlc2FjfgotCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLQkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLQkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0JICBmaScKKyAgICAgICAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorICAgICAgICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKyAgICAgICAgICAgICouZXhlfCouRVhFKSA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgbHRfb3V0cHV0ZmlsZT0kbHRfb3V0cHV0ZmlsZS5leGUKKyAgICAgICAgICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSRsdF90b29sX291dHB1dGZpbGUuZXhlCisgICAgICAgICAgICAgIDs7CisgICAgICAgICAgZXNhY34KKyAgICAgICAgICBpZiB0ZXN0IDogIT0gIiRNQU5JRkVTVF9UT09MIiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKyAgICAgICAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisgICAgICAgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKyAgICAgICAgICBmaScKIAk7OwogICAgICAgKikKIAkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKQEAgLTUxODQsNyArNTYyNiw3IEBACiAJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KIAlsaWJleHQ9bGliCiAJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0Jc2hyZXh0X2NtZHM9Ii5kbGwiCisJc2hyZXh0X2NtZHM9LmRsbAogCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKIAkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgpAQCAtNTIzNCwzMyArNTY3NiwzMyBAQAogICAgICAgOzsKIAogICAgIGhwdXg5KikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkd2wrYiAkd2wkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAieCRvdXRwdXRfb2JqZGlyLyRzb25hbWUiID0gIngkbGliIiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICBlbHNlCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAieCRvdXRwdXRfb2JqZGlyLyRzb25hbWUiID0gIngkbGliIiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICBmaQotICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bCtiICR3bCRsaWJkaXInCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwogCiAgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAogICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtRScKICAgICAgIDs7CiAKICAgICBocHV4MTAqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBpZiB0ZXN0IHllcyxubyA9ICIkR0NDLCR3aXRoX2dudV9sZCI7IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHdsK2ggJHdsJHNvbmFtZSAkd2wrYiAkd2wkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICBpZiB0ZXN0IG5vID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsK2IgJHdsJGxpYmRpcicKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CiAJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcwotCV9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisJX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLUUnCiAJIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKIAkjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KIAlfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKQEAgLTUyNjgsMjUgKzU3MTAsMjUgQEAKICAgICAgIDs7CiAKICAgICBocHV4MTEqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgICAgICBpZiB0ZXN0IHllcyxubyA9ICIkR0NDLCR3aXRoX2dudV9sZCI7IHRoZW4KIAljYXNlICRob3N0X2NwdSBpbgogCWhwcGEqNjQqKQotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkd2wraCAkd2wkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAlpYTY0KikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkd2wraCAkd2wkc29uYW1lICR3bCtub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR3bCtoICR3bCRzb25hbWUgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAllc2FjCiAgICAgICBlbHNlCiAJY2FzZSAkaG9zdF9jcHUgaW4KIAlocHBhKjY0KikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAkd2wraCAkd2wkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAlpYTY0KikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAkd2wraCAkd2wkc29uYW1lICR3bCtub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKIAltNF9pZigkMSwgW10sIFsKQEAgLTUyOTQsMTQgKzU3MzYsMTQgQEAKIAkgICMgKEhQOTI0NTMtMDEgQS4xMS4wMS4yMCBkb2Vzbid0LCBIUDkyNDUzLTAxIEIuMTEuWC4zNTE3NS0zNTE3Ni5HUCBkb2VzKQogCSAgX0xUX0xJTktFUl9PUFRJT04oW2lmICRDQyB1bmRlcnN0YW5kcyAtYl0sCiAJICAgIF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9fYiwgJDEpLCBbLWJdLAotCSAgICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnXSwKKwkgICAgW19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAkd2wraCAkd2wkc29uYW1lICR3bCtiICR3bCRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyddLAogCSAgICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyddKV0sCi0JICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnXSkKKwkgIFtfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHdsK2ggJHdsJHNvbmFtZSAkd2wrYiAkd2wkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnXSkKIAkgIDs7CiAJZXNhYwogICAgICAgZmkKLSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgIGlmIHRlc3Qgbm8gPSAiJHdpdGhfZ251X2xkIjsgdGhlbgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wrYiAkd2wkbGliZGlyJwogCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKIAogCWNhc2UgJGhvc3RfY3B1IGluCkBAIC01MzEyLDcgKzU3NTQsNyBAQAogCSopCiAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT15ZXMKLQkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtRScKIAogCSAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKIAkgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgpAQCAtNTMyMywxNiArNTc2NSwxNiBAQAogICAgICAgOzsKIAogICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR3bC1zZXRfdmVyc2lvbiAkd2wkdmVyc3RyaW5nImAgJHdsLXVwZGF0ZV9yZWdpc3RyeSAkd2wkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAogCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgogCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCiAJQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2xdLAogCSAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sXSwKLQkgIFtzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKwkgIFtzYXZlX0xERkxBR1M9JExERkxBR1MKKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR3bC1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHdsLXVwZGF0ZV9yZWdpc3RyeSAkd2wvZGV2L251bGwiCiAJICAgQUNfTElOS19JRkVMU0UoCiAJICAgICBbQUNfTEFOR19TT1VSQ0UoCiAJICAgICAgICBbQUNfTEFOR19DQVNFKFtDXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCkBAIC01MzQ1LDIxICs1Nzg3LDMyIEBACiAgICAgICBlbmRdXSldKV0sCiAJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllc10sCiAJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vXSkKLSAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyJdKQotCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICAgICAgTERGTEFHUz0kc2F2ZV9MREZMQUdTXSkKKwlpZiB0ZXN0IHllcyA9ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiOyB0aGVuCisgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIkd2wtc2V0X3ZlcnNpb24gJHdsJHZlcnN0cmluZyJgICR3bC11cGRhdGVfcmVnaXN0cnkgJHdsJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zICR3bC1leHBvcnRzX2ZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJZmkKKwlfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT1ubwogICAgICAgZWxzZQotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9J25vJwotICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGggJHdsJGxpYmRpcicKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKICAgICAgIF9MVF9UQUdWQVIoaW5oZXJpdF9ycGF0aCwgJDEpPXllcwogICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCiAgICAgICA7OwogCisgICAgbGludXgqKQorICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIHRjYyopCisJIyBGYWJyaWNlIEJlbGxhcmQgZXQgYWwncyBUaW55IEMgQ29tcGlsZXIKKwlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwk7OworICAgICAgZXNhYworICAgICAgOzsKKwogICAgIG5ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKICAgICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycgICMgYS5vdXQKQEAgLTUzNzQsNyArNTgyNyw3IEBACiAgICAgbmV3c29zNikKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KICAgICAgIDs7CkBAIC01MzgyLDI3ICs1ODM1LDE5IEBACiAgICAgKm50byogfCAqcW54KikKICAgICAgIDs7CiAKLSAgICBvcGVuYnNkKikKKyAgICBvcGVuYnNkKiB8IGJpdHJpZyopCiAgICAgICBpZiB0ZXN0IC1mIC91c3IvbGliZXhlYy9sZC5zbzsgdGhlbgogCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcwotCWlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KKwlpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fYCI7IHRoZW4KIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHMnCi0JICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLQkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9scycKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGgsJGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR3bC1FJwogCWVsc2UKLQkgIGNhc2UgJGhvc3Rfb3MgaW4KLQkgICBvcGVuYnNkW1swMV1dLiogfCBvcGVuYnNkMi5bWzAtN11dIHwgb3BlbmJzZDIuW1swLTddXS4qKQotCSAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLQkgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0JICAgICA7OwotCSAgICopCi0JICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLQkgICAgIDs7Ci0JICBlc2FjCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoLCRsaWJkaXInCiAJZmkKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCkBAIC01NDEzLDMzICs1ODU4LDUzIEBACiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCiAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRFQ0hPICJMSUJSQVJZICRsaWJuYW1lIElOSVRJTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyAiIFNJTkdMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVteGV4cCAkbGlib2JqcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JENDIC1aZGxsIC1aY3J0ZGxsIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSdlbXhpbXAgLW8gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuYSAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBzaHJleHRfY21kcz0uZGxsCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAke3NvbmFtZSUkc2hhcmVkX2V4dH0gSU5JVElOU1RBTkNFIFRFUk1JTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPICJEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCWVteGV4cCAkbGlib2JqcyB8ICRTRUQgLyJfRExMX0luaXRUZXJtIi9kID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCWVteGltcCAtbyAkbGliICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAke3NvbmFtZSUkc2hhcmVkX2V4dH0gSU5JVElOU1RBTkNFIFRFUk1JTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPICJEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCXByZWZpeF9jbWRzPSIkU0VEIn4KKwlpZiB0ZXN0IEVYUE9SVFMgPSAiYCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCI7IHRoZW4KKwkgIHByZWZpeF9jbWRzPSIkcHJlZml4X2NtZHMgLWUgMWQiOworCWZpfgorCXByZWZpeF9jbWRzPSIkcHJlZml4X2NtZHMgLWUgXCJzL15cKC4qXCkkL19cMS9nXCIifgorCWNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkcHJlZml4X2NtZHMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRDQyAtWmRsbCAtWmNydGRsbCAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJZW14aW1wIC1vICRsaWIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9Gcm9tX25ld19jbWRzLCAkMSk9J2VteGltcCAtbyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9X2RsbC5hICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwogICAgICAgOzsKIAogICAgIG9zZjMqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgICAgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR3bC1leHBlY3RfdW5yZXNvbHZlZCAkd2xcKicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIkd2wtc2V0X3ZlcnNpb24gJHdsJHZlcnN0cmluZyJgICR3bC11cGRhdGVfcmVnaXN0cnkgJHdsJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0nbm8nCi0gICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgogICAgICAgOzsKIAogICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0JX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHdsLWV4cGVjdF91bnJlc29sdmVkICR3bFwqJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLW1zeW0gJHdsLXNvbmFtZSAkd2wkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIkd2wtc2V0X3ZlcnNpb24gJHdsJHZlcnN0cmluZyJgICR3bC11cGRhdGVfcmVnaXN0cnkgJHdsJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lOyBwcmludGYgIiVzXFxuIiAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKKyAgICAgICAgICAkQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkd2wtaW5wdXQgJHdsJGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCiAKIAkjIEJvdGggYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwpAQCAtNTQ1MCwyNCArNTkxNSwyNCBAQAogCiAgICAgc29sYXJpcyopCiAgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAteiBkZWZzJwotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQl3bGFyYz0nJHt3bH0nCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KKwl3bGFyYz0nJHdsJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkd2wteiAke3dsfXRleHQgJHdsLWggJHdsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR3bC16ICR7d2x9dGV4dCAkd2wtTSAkd2wkbGliLmV4cCAkd2wtaCAkd2wkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKICAgICAgIGVsc2UKIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KIAkqIkNvbXBpbGVycyA1LjAiKikKIAkgIHdsYXJjPScnCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAkTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgICAkTEQgLUckYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLU0gJGxpYi5leHAgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogCSAgOzsKIAkqKQotCSAgd2xhcmM9JyR7d2x9JwotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIHdsYXJjPSckd2wnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUckYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAkQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICAgICAgICRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKIAkgIDs7CiAJZXNhYwogICAgICAgZmkKQEAgLTU0NzcsMTEgKzU5NDIsMTEgQEAKICAgICAgIHNvbGFyaXMyLltbMC01XV0gfCBzb2xhcmlzMi5bWzAtNV1dLiopIDs7CiAgICAgICAqKQogCSMgVGhlIGNvbXBpbGVyIGRyaXZlciB3aWxsIGNvbWJpbmUgYW5kIHJlb3JkZXIgbGlua2VyIG9wdGlvbnMsCi0JIyBidXQgdW5kZXJzdGFuZHMgYC16IGxpbmtlcl9mbGFnJy4gIEdDQyBkaXNjYXJkcyBpdCB3aXRob3V0IGAkd2wnLAorCSMgYnV0IHVuZGVyc3RhbmRzICcteiBsaW5rZXJfZmxhZycuICBHQ0MgZGlzY2FyZHMgaXQgd2l0aG91dCAnJHdsJywKIAkjIGJ1dCBpcyBjYXJlZnVsIGVub3VnaCBub3QgdG8gcmVvcmRlci4KIAkjIFN1cHBvcnRlZCBzaW5jZSBTb2xhcmlzIDIuNiAobWF5YmUgMi41LjE/KQotCWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXogJHt3bH1hbGxleHRyYWN0JGNvbnZlbmllbmNlICR7d2x9LXogJHt3bH1kZWZhdWx0ZXh0cmFjdCcKKwlpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckd2wteiAke3dsfWFsbGV4dHJhY3QkY29udmVuaWVuY2UgJHdsLXogJHt3bH1kZWZhdWx0ZXh0cmFjdCcKIAllbHNlCiAJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy16IGFsbGV4dHJhY3QkY29udmVuaWVuY2UgLXogZGVmYXVsdGV4dHJhY3QnCiAJZmkKQEAgLTU0OTEsMTAgKzU5NTYsMTAgQEAKICAgICAgIDs7CiAKICAgICBzdW5vczQqKQotICAgICAgaWYgdGVzdCAieCRob3N0X3ZlbmRvciIgPSB4c2VxdWVudDsgdGhlbgorICAgICAgaWYgdGVzdCBzZXF1ZW50ID0gIiRob3N0X3ZlbmRvciI7IHRoZW4KIAkjIFVzZSAkQ0MgdG8gbGluayB1bmRlciBzZXF1ZW50LCBiZWNhdXNlIGl0IHRocm93cyBpbiBzb21lIGV4dHJhIC5vCiAJIyBmaWxlcyB0aGF0IG1ha2UgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zIHdvcmsuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHdsLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLWFzc2VydCBwdXJlLXRleHQgLUJzdGF0aWMgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgZmkKQEAgLTU1NDMsNDMgKzYwMDgsNDMgQEAKICAgICAgIDs7CiAKICAgICBzeXN2NCp1dzIqIHwgc3lzdjVPcGVuVU5JWCogfCBzeXN2NVVuaXhXYXJlNy5bWzAxXV0uW1sxMF1dKiB8IHVuaXh3YXJlNyogfCBzY28zLjJ2NS4wLltbMDI0XV0qKQotICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScke3dsfS16LHRleHQnCisgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR3bC16LHRleHQnCiAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCiAgICAgICBydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCiAKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR3bC1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgZWxzZQotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyAkd2wtQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHdsLWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIGZpCiAgICAgICA7OwogCiAgICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KikKLSAgICAgICMgTm90ZTogV2UgY2FuIE5PVCB1c2UgLXogZGVmcyBhcyB3ZSBtaWdodCBkZXNpcmUsIGJlY2F1c2Ugd2UgZG8gbm90CisgICAgICAjIE5vdGU6IFdlIENBTk5PVCB1c2UgLXogZGVmcyBhcyB3ZSBtaWdodCBkZXNpcmUsIGJlY2F1c2Ugd2UgZG8gbm90CiAgICAgICAjIGxpbmsgd2l0aCAtbGMsIGFuZCB0aGF0IHdvdWxkIGNhdXNlIGFueSBzeW1ib2xzIHVzZWQgZnJvbSBsaWJjIHRvCiAgICAgICAjIGFsd2F5cyBiZSB1bnJlc29sdmVkLCB3aGljaCBtZWFucyBqdXN0IGFib3V0IG5vIGxpYnJhcnkgd291bGQKICAgICAgICMgZXZlciBsaW5rIGNvcnJlY3RseS4gIElmIHdlJ3JlIG5vdCB1c2luZyBHTlUgbGQgd2UgdXNlIC16IHRleHQKICAgICAgICMgdGhvdWdoLCB3aGljaCBkb2VzIGNhdGNoIHNvbWUgYmFkIHN5bWJvbHMgYnV0IGlzbid0IGFzIGhlYXZ5LWhhbmRlZAogICAgICAgIyBhcyAteiBkZWZzLgotICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScke3dsfS16LHRleHQnCi0gICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosbm9kZWZzJworICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPSckd2wteix0ZXh0JworICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSckd2wteixub2RlZnMnCiAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiwkbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1SLCRsaWJkaXInCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0nOicKICAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tQmV4cG9ydCcKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR3bC1CZXhwb3J0JwogICAgICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJwogCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkd2wtQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHdsLWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIGVsc2UKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBmaQogICAgICAgOzsKIApAQCAtNTU5NCwxNyArNjA1OSwxNyBAQAogICAgICAgOzsKICAgICBlc2FjCiAKLSAgICBpZiB0ZXN0IHgkaG9zdF92ZW5kb3IgPSB4c25pOyB0aGVuCisgICAgaWYgdGVzdCBzbmkgPSAiJGhvc3RfdmVuZG9yIjsgdGhlbgogICAgICAgY2FzZSAkaG9zdCBpbgogICAgICAgc3lzdjQgfCBzeXN2NC4ydXcyKiB8IHN5c3Y0LjMqIHwgc3lzdjUqKQotCV9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUJsYXJnZWR5bnN5bScKKwlfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtQmxhcmdlZHluc3ltJwogCTs7CiAgICAgICBlc2FjCiAgICAgZmkKICAgZmkKIF0pCiBBQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKV0pCi10ZXN0ICIkX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKSIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCit0ZXN0IG5vID0gIiRfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpIiAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCiAKIF9MVF9UQUdWQVIod2l0aF9nbnVfbGQsICQxKT0kd2l0aF9nbnVfbGQKIApAQCAtNTYyMSw3ICs2MDg2LDcgQEAKICAgIyBBc3N1bWUgLWxjIHNob3VsZCBiZSBhZGRlZAogICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCiAKLSAgaWYgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzLHllcyA9ICIkR0NDLCRlbmFibGVfc2hhcmVkIjsgdGhlbgogICAgIGNhc2UgJF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgaW4KICAgICAqJ34nKikKICAgICAgICMgRklYTUU6IHdlIG1heSBoYXZlIHRvIGRlYWwgd2l0aCBtdWx0aS1jb21tYW5kIHNlcXVlbmNlcy4KQEAgLTU3MDEsMTIgKzYxNjYsMTIgQEAKIF9MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcl0sIFsxXSwKICAgICBbV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlICItcnBhdGgiIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudF0pCiBfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2RpcmVjdF0sIFswXSwKLSAgICBbU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKKyAgICBbU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FJHNoYXJlZF9leHQgZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzCiAgICAgRElSIGludG8gdGhlIHJlc3VsdGluZyBiaW5hcnldKQogX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGVdLCBbMF0sCi0gICAgW1NldCB0byAieWVzIiBpZiB1c2luZyBESVIvbGliTkFNRSR7c2hhcmVkX2V4dH0gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzCisgICAgW1NldCB0byAieWVzIiBpZiB1c2luZyBESVIvbGliTkFNRSRzaGFyZWRfZXh0IGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcwogICAgIERJUiBpbnRvIHRoZSByZXN1bHRpbmcgYmluYXJ5IGFuZCB0aGUgcmVzdWx0aW5nIGxpYnJhcnkgZGVwZW5kZW5jeSBpcwotICAgICJhYnNvbHV0ZSIsIGkuZSBpbXBvc3NpYmxlIHRvIGNoYW5nZSBieSBzZXR0aW5nICR7c2hsaWJwYXRoX3Zhcn0gaWYgdGhlCisgICAgImFic29sdXRlIiwgaS5lIGltcG9zc2libGUgdG8gY2hhbmdlIGJ5IHNldHRpbmcgJHNobGlicGF0aF92YXIgaWYgdGhlCiAgICAgbGlicmFyeSBpcyByZWxvY2F0ZWRdKQogX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9taW51c19MXSwgWzBdLAogICAgIFtTZXQgdG8gInllcyIgaWYgdXNpbmcgdGhlIC1MRElSIGZsYWcgZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUgpAQCAtNTc0NywxMCArNjIxMiwxMCBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEMgY29tcGlsZXIgYXJlIHN1aXRhYmx5CiAjIGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcgdG8gd3JpdGUKLSMgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorIyB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byAnbGlidG9vbCcuCiBtNF9kZWZ1bihbX0xUX0xBTkdfQ19DT05GSUddLAogW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKLWx0X3NhdmVfQ0M9IiRDQyIKK2x0X3NhdmVfQ0M9JENDCiBBQ19MQU5HX1BVU0goQykKIAogIyBTb3VyY2UgZmlsZSBleHRlbnNpb24gZm9yIEMgdGVzdCBzb3VyY2VzLgpAQCAtNTc5MCwxOCArNjI1NSwxOCBAQAogICBMVF9TWVNfRExPUEVOX1NFTEYKICAgX0xUX0NNRF9TVFJJUExJQgogCi0gICMgUmVwb3J0IHdoaWNoIGxpYnJhcnkgdHlwZXMgd2lsbCBhY3R1YWxseSBiZSBidWlsdAorICAjIFJlcG9ydCB3aGF0IGxpYnJhcnkgdHlwZXMgd2lsbCBhY3R1YWxseSBiZSBidWlsdAogICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIGxpYnRvb2wgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCiAgIEFDX01TR19SRVNVTFQoWyRjYW5fYnVpbGRfc2hhcmVkXSkKIAogICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllc10pCi0gIHRlc3QgIiRjYW5fYnVpbGRfc2hhcmVkIiA9ICJubyIgJiYgZW5hYmxlX3NoYXJlZD1ubworICB0ZXN0IG5vID0gIiRjYW5fYnVpbGRfc2hhcmVkIiAmJiBlbmFibGVfc2hhcmVkPW5vCiAKICAgIyBPbiBBSVgsIHNoYXJlZCBsaWJyYXJpZXMgYW5kIHN0YXRpYyBsaWJyYXJpZXMgdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSwgYW5kCiAgICMgYXJlIGFsbCBidWlsdCBmcm9tIFBJQy4KICAgY2FzZSAkaG9zdF9vcyBpbgogICBhaXgzKikKLSAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworICAgIHRlc3QgeWVzID0gIiRlbmFibGVfc2hhcmVkIiAmJiBlbmFibGVfc3RhdGljPW5vCiAgICAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KICAgICAgIGFyY2hpdmVfY21kcz0iJGFyY2hpdmVfY21kc35cJFJBTkxJQiBcJGxpYiIKICAgICAgIHBvc3RpbnN0YWxsX2NtZHM9JyRSQU5MSUIgJGxpYicKQEAgLTU4MDksOCArNjI3NCwxMiBAQAogICAgIDs7CiAKICAgYWl4W1s0LTldXSopCi0gICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0ICYmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IG5vIDsgdGhlbgotICAgICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KKyAgICBpZiB0ZXN0IGlhNjQgIT0gIiRob3N0X2NwdSI7IHRoZW4KKyAgICAgIGNhc2UgJGVuYWJsZV9zaGFyZWQsJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyBpbgorICAgICAgeWVzLGFpeCx5ZXMpIDs7CQkJIyBzaGFyZWQgb2JqZWN0IGFzIGxpYi5zbyBmaWxlIG9ubHkKKyAgICAgIHllcyxzdnI0LCopIDs7CQkJIyBzaGFyZWQgb2JqZWN0IGFzIGxpYi5zbyBhcmNoaXZlIG1lbWJlciBvbmx5CisgICAgICB5ZXMsKikgZW5hYmxlX3N0YXRpYz1ubyA7OwkjIHNoYXJlZCBvYmplY3QgaW4gbGliLmEgYXJjaGl2ZSBhcyB3ZWxsCisgICAgICBlc2FjCiAgICAgZmkKICAgICA7OwogICBlc2FjCkBAIC01ODE4LDEzICs2Mjg3LDEzIEBACiAKICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXNdKQogICAjIE1ha2Ugc3VyZSBlaXRoZXIgZW5hYmxlX3NoYXJlZCBvciBlbmFibGVfc3RhdGljIGlzIHllcy4KLSAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzIHx8IGVuYWJsZV9zdGF0aWM9eWVzCisgIHRlc3QgeWVzID0gIiRlbmFibGVfc2hhcmVkIiB8fCBlbmFibGVfc3RhdGljPXllcwogICBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3N0YXRpY10pCiAKICAgX0xUX0NPTkZJRygkMSkKIGZpCiBBQ19MQU5HX1BPUAotQ0M9IiRsdF9zYXZlX0NDIgorQ0M9JGx0X3NhdmVfQ0MKIF0pIyBfTFRfTEFOR19DX0NPTkZJRwogCiAKQEAgLTU4MzIsMTQgKzYzMDEsMTQgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEMrKyBjb21waWxlciBhcmUgc3VpdGFibHkKICMgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRyB0byB3cml0ZQotIyB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCisjIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvICdsaWJ0b29sJy4KIG00X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKIG00X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAotaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKLSAgICAoICh0ZXN0ICJYJENYWCIgPSAiWGcrKyIgJiYgYGcrKyAtdiA+L2Rldi9udWxsIDI+JjFgICkgfHwKLSAgICAodGVzdCAiWCRDWFgiICE9ICJYZysrIikpKSA7IHRoZW4KK2lmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCBubyAhPSAiJENYWCIgJiYKKyAgICAoICh0ZXN0IGcrKyA9ICIkQ1hYIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAorICAgICh0ZXN0IGcrKyAhPSAiJENYWCIpKSk7IHRoZW4KICAgQUNfUFJPR19DWFhDUFAKIGVsc2UKICAgX2x0X2NhdWdodF9DWFhfZXJyb3I9eWVzCkBAIC01ODgxLDcgKzYzNTAsNyBAQAogIyB0aGUgQ1hYIGNvbXBpbGVyIGlzbid0IHdvcmtpbmcuICBTb21lIHZhcmlhYmxlcyAobGlrZSBlbmFibGVfc2hhcmVkKQogIyBhcmUgY3VycmVudGx5IGFzc3VtZWQgdG8gYXBwbHkgdG8gYWxsIGNvbXBpbGVycyBvbiB0aGlzIHBsYXRmb3JtLAogIyBhbmQgd2lsbCBiZSBjb3JydXB0ZWQgYnkgc2V0dGluZyB0aGVtIGJhc2VkIG9uIGEgbm9uLXdvcmtpbmcgY29tcGlsZXIuCi1pZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgoraWYgdGVzdCB5ZXMgIT0gIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciI7IHRoZW4KICAgIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGNvbXBpbGUgdGVzdHMKICAgbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSJpbnQgc29tZV92YXJpYWJsZSA9IDA7IgogCkBAIC01OTIzLDM1ICs2MzkyLDM1IEBACiAgIGlmIHRlc3QgLW4gIiRjb21waWxlciI7IHRoZW4KICAgICAjIFdlIGRvbid0IHdhbnQgLWZuby1leGNlcHRpb24gd2hlbiBjb21waWxpbmcgQysrIGNvZGUsIHNvIHNldCB0aGUKICAgICAjIG5vX2J1aWx0aW5fZmxhZyBzZXBhcmF0ZWx5Ci0gICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAgICBpZiB0ZXN0IHllcyA9ICIkR1hYIjsgdGhlbgogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPScgLWZuby1idWlsdGluJwogICAgIGVsc2UKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0KICAgICBmaQogCi0gICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAgICBpZiB0ZXN0IHllcyA9ICIkR1hYIjsgdGhlbgogICAgICAgIyBTZXQgdXAgZGVmYXVsdCBHTlUgQysrIGNvbmZpZ3VyYXRpb24KIAogICAgICAgTFRfUEFUSF9MRAogCiAgICAgICAjIENoZWNrIGlmIEdOVSBDKysgdXNlcyBHTlUgbGQgYXMgdGhlIHVuZGVybHlpbmcgbGlua2VyLCBzaW5jZSB0aGUKICAgICAgICMgYXJjaGl2aW5nIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGF0IEdOVSBsZCBpcyBiZWluZyB1c2VkLgotICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgJHBpY19mbGFnIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgIGlmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgJHBpY19mbGFnIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAKLSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoICR3bCRsaWJkaXInCisgICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR3bC0tZXhwb3J0LWR5bmFtaWMnCiAKICAgICAgICAgIyBJZiBhcmNoaXZlX2NtZHMgcnVucyBMRCwgbm90IENDLCB3bGFyYyBzaG91bGQgYmUgZW1wdHkKICAgICAgICAgIyBYWFggSSB0aGluayB3bGFyYyBjYW4gYmUgZWxpbWluYXRlZCBpbiBsdGNmLWN4eCwgYnV0IEkgbmVlZCB0bwogICAgICAgICAjICAgICBpbnZlc3RpZ2F0ZSBpdCBhIGxpdHRsZSBiaXQgbW9yZS4gKE1NKQotICAgICAgICB3bGFyYz0nJHt3bH0nCisgICAgICAgIHdsYXJjPSckd2wnCiAKICAgICAgICAgIyBhbmNpZW50IEdOVSBsZCBkaWRuJ3Qgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUgZXQuIGFsLgogICAgICAgICBpZiBldmFsICJgJENDIC1wcmludC1wcm9nLW5hbWU9bGRgIC0taGVscCAyPiYxIiB8CiAJICAkR1JFUCAnbm8td2hvbGUtYXJjaGl2ZScgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCisgICAgICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSR3bGFyYyctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJyR3bGFyYyctLW5vLXdob2xlLWFyY2hpdmUnCiAgICAgICAgIGVsc2UKICAgICAgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiAgICAgICAgIGZpCkBAIC01OTg3LDE4ICs2NDU2LDMwIEBACiAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KICAgICAgICAgOzsKICAgICAgIGFpeFtbNC05XV0qKQotICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogICAgICAgICAgICMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKICAgICAgICAgICAjIGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KICAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCiAgICAgICAgICAgZXhwX3N5bV9mbGFnPSctQmV4cG9ydCcKLSAgICAgICAgICBub19lbnRyeV9mbGFnPSIiCisgICAgICAgICAgbm9fZW50cnlfZmxhZz0KICAgICAgICAgZWxzZQogICAgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KIAogICAgICAgICAgICMgVGVzdCBpZiB3ZSBhcmUgdHJ5aW5nIHRvIHVzZSBydW4gdGltZSBsaW5raW5nIG9yIG5vcm1hbAogICAgICAgICAgICMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQotICAgICAgICAgICMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCisgICAgICAgICAgIyBoYXZlIHJ1bnRpbWUgbGlua2luZyBlbmFibGVkLCBhbmQgdXNlIGl0IGZvciBleGVjdXRhYmxlcy4KKyAgICAgICAgICAjIEZvciBzaGFyZWQgbGlicmFyaWVzLCB3ZSBlbmFibGUvZGlzYWJsZSBydW50aW1lIGxpbmtpbmcKKyAgICAgICAgICAjIGRlcGVuZGluZyBvbiB0aGUga2luZCBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgY3JlYXRlZCAtCisgICAgICAgICAgIyB3aGVuICJ3aXRoX2FpeF9zb25hbWUsYWl4X3VzZV9ydW50aW1lbGlua2luZyIgaXM6CisgICAgICAgICAgIyAiYWl4LG5vIiAgIGxpYi5hKGxpYi5zby5WKSBzaGFyZWQsIHJ0bDpubywgIGZvciBleGVjdXRhYmxlcworICAgICAgICAgICMgImFpeCx5ZXMiICBsaWIuc28gICAgICAgICAgc2hhcmVkLCBydGw6eWVzLCBmb3IgZXhlY3V0YWJsZXMKKyAgICAgICAgICAjICAgICAgICAgICAgbGliLmEgICAgICAgICAgIHN0YXRpYyBhcmNoaXZlCisgICAgICAgICAgIyAiYm90aCxubyIgIGxpYi5zby5WKHNoci5vKSBzaGFyZWQsIHJ0bDp5ZXMKKyAgICAgICAgICAjICAgICAgICAgICAgbGliLmEobGliLnNvLlYpIHNoYXJlZCwgcnRsOm5vLCAgZm9yIGV4ZWN1dGFibGVzCisgICAgICAgICAgIyAiYm90aCx5ZXMiIGxpYi5zby5WKHNoci5vKSBzaGFyZWQsIHJ0bDp5ZXMsIGZvciBleGVjdXRhYmxlcworICAgICAgICAgICMgICAgICAgICAgICBsaWIuYShsaWIuc28uVikgc2hhcmVkLCBydGw6bm8KKyAgICAgICAgICAjICJzdnI0LCoiICAgbGliLnNvLlYoc2hyLm8pIHNoYXJlZCwgcnRsOnllcywgZm9yIGV4ZWN1dGFibGVzCisgICAgICAgICAgIyAgICAgICAgICAgIGxpYi5hICAgICAgICAgICBzdGF0aWMgYXJjaGl2ZQogICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bWzIzXV18YWl4NC5bWzIzXV0uKnxhaXhbWzUtOV1dKikKIAkgICAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCiAJICAgICAgY2FzZSAkbGRfZmxhZyBpbgpAQCAtNjAwOCw2ICs2NDg5LDEzIEBACiAJICAgICAgICA7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQorCSAgICBpZiB0ZXN0IHN2cjQsbm8gPSAiJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgICAjIFdpdGggYWl4LXNvbmFtZT1zdnI0LCB3ZSBjcmVhdGUgdGhlIGxpYi5zby5WIHNoYXJlZCBhcmNoaXZlcyBvbmx5LAorCSAgICAgICMgc28gd2UgZG9uJ3QgaGF2ZSBsaWIuYSBzaGFyZWQgbGlicyB0byBsaW5rIG91ciBleGVjdXRhYmxlcy4KKwkgICAgICAjIFdlIGhhdmUgdG8gZm9yY2UgcnVudGltZSBsaW5raW5nIGluIHRoaXMgY2FzZS4KKwkgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcworCSAgICAgIExERkxBR1M9IiRMREZMQUdTIC1XbCwtYnJ0bCIKKwkgICAgZmkKIAkgICAgOzsKICAgICAgICAgICBlc2FjCiAKQEAgLTYwMjYsMTMgKzY1MTQsMjEgQEAKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT15ZXMKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9JzonCiAgICAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgICAgICBfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9JyR7d2x9LWYsJworICAgICAgICBfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9JyR3bC1mLCcKKyAgICAgICAgY2FzZSAkd2l0aF9haXhfc29uYW1lLCRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIGluCisgICAgICAgIGFpeCwqKSA7OwkjIG5vIGltcG9ydCBmaWxlCisgICAgICAgIHN2cjQsKiB8ICoseWVzKSAjIHVzZSBpbXBvcnQgZmlsZQorICAgICAgICAgICMgVGhlIEltcG9ydCBGaWxlIGRlZmluZXMgd2hhdCB0byBoYXJkY29kZS4KKyAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCisgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT1ubworICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKIAotICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICAgICAgICBpZiB0ZXN0IHllcyA9ICIkR1hYIjsgdGhlbgogICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bWzAxMl1dfGFpeDQuW1swMTJdXS4qKQogICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGRvIHRoaXMgb24gQUlYIDQuMiBhbmQgbG93ZXIsIHRoZSBjaGVjawogICAgICAgICAgICMgYmVsb3cgZm9yIGJyb2tlbiBjb2xsZWN0MiBkb2Vzbid0IHdvcmsgdW5kZXIgNC4zKwotCSAgY29sbGVjdDJuYW1lPWAke0NDfSAtcHJpbnQtcHJvZy1uYW1lPWNvbGxlY3QyYAorCSAgY29sbGVjdDJuYW1lPWAkQ0MgLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKIAkgIGlmIHRlc3QgLWYgIiRjb2xsZWN0Mm5hbWUiICYmCiAJICAgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8ICRHUkVQIHJlc29sdmVfbGliX25hbWUgPi9kZXYvbnVsbAogCSAgdGhlbgpAQCAtNjA1MCw2NCArNjU0Niw4NCBAQAogCSAgZmkKICAgICAgICAgICBlc2FjCiAgICAgICAgICAgc2hhcmVkX2ZsYWc9Jy1zaGFyZWQnCi0JICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KLQkgICAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCisJICBpZiB0ZXN0IHllcyA9ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgc2hhcmVkX2ZsYWc9JHNoYXJlZF9mbGFnJyAkd2wtRycKIAkgIGZpCisJICAjIE5lZWQgdG8gZW5zdXJlIHJ1bnRpbWUgbGlua2luZyBpcyBkaXNhYmxlZCBmb3IgdGhlIHRyYWRpdGlvbmFsCisJICAjIHNoYXJlZCBsaWJyYXJ5LCBvciB0aGUgbGlua2VyIG1heSBldmVudHVhbGx5IGZpbmQgc2hhcmVkIGxpYnJhcmllcworCSAgIyAvd2l0aC8gSW1wb3J0IEZpbGUgLSB3ZSBkbyBub3Qgd2FudCB0byBtaXggdGhlbS4KKwkgIHNoYXJlZF9mbGFnX2FpeD0nLXNoYXJlZCcKKwkgIHNoYXJlZF9mbGFnX3N2cjQ9Jy1zaGFyZWQgJHdsLUcnCiAgICAgICAgIGVsc2UKICAgICAgICAgICAjIG5vdCB1c2luZyBnY2MKLSAgICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAJICAjIFZpc3VhbEFnZSBDKyssIFZlcnNpb24gNS41IGZvciBBSVggNUwgZm9yIElBLTY0LCBCZXRhIDMgUmVsZWFzZQogCSAgIyBjaG9rZXMgb24gLVdsLC1HLiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgY29ycmVjdDoKIAkgIHNoYXJlZF9mbGFnPSctRycKICAgICAgICAgICBlbHNlCi0JICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotCSAgICAgIHNoYXJlZF9mbGFnPScke3dsfS1HJworCSAgICBpZiB0ZXN0IHllcyA9ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgICBzaGFyZWRfZmxhZz0nJHdsLUcnCiAJICAgIGVsc2UKLQkgICAgICBzaGFyZWRfZmxhZz0nJHt3bH0tYk06U1JFJworCSAgICAgIHNoYXJlZF9mbGFnPSckd2wtYk06U1JFJwogCSAgICBmaQorCSAgICBzaGFyZWRfZmxhZ19haXg9JyR3bC1iTTpTUkUnCisJICAgIHNoYXJlZF9mbGFnX3N2cjQ9JyR3bC1HJwogICAgICAgICAgIGZpCiAgICAgICAgIGZpCiAKLSAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmV4cGFsbCcKKyAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLWJleHBhbGwnCiAgICAgICAgICMgSXQgc2VlbXMgdGhhdCAtYmV4cGFsbCBkb2VzIG5vdCBleHBvcnQgc3ltYm9scyBiZWdpbm5pbmcgd2l0aAogICAgICAgICAjIHVuZGVyc2NvcmUgKF8pLCBzbyBpdCBpcyBiZXR0ZXIgdG8gZ2VuZXJhdGUgYSBsaXN0IG9mIHN5bWJvbHMgdG8KIAkjIGV4cG9ydC4KICAgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKLSAgICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisJaWYgdGVzdCBhaXgseWVzID0gIiR3aXRoX2FpeF9zb25hbWUsJGFpeF91c2VfcnVudGltZWxpbmtpbmciOyB0aGVuCiAgICAgICAgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVudGltZSBsb2FkaW5nIGZsYWdzICgtYnJ0bCksCiAgICAgICAgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgotICAgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJworICAgICAgICAgICMgVGhlICItRyIgbGlua2VyIGZsYWcgYWxsb3dzIHVuZGVmaW5lZCBzeW1ib2xzLgorICAgICAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm5vdG9rJwogICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQogICAgICAgICAgICMgZXhlY3V0YWJsZS4KICAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkd2wnJG5vX2VudHJ5X2ZsYWcnICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAtbiAiJGFsbG93X3VuZGVmaW5lZF9mbGFnIjsgdGhlbiBmdW5jX2VjaG9fYWxsICIkd2wkYWxsb3dfdW5kZWZpbmVkX2ZsYWciOyBlbHNlIDo7IGZpYCAkd2wnJGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzJyAnJHNoYXJlZF9mbGFnCiAgICAgICAgIGVsc2UKLSAgICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCisgICAgICAgICAgaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKIAkgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIteiBub2RlZnMiCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyAke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzIgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR3bCRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzICR3bCRhbGxvd191bmRlZmluZWRfZmxhZyAnIlwkd2wkZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMiCiAgICAgICAgICAgZWxzZQogCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgogCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi0JICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm5vdG9rJwotCSAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJvaycKLQkgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAkd2wtYmVybm90b2snCisJICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR3bC1iZXJvaycKKwkgICAgaWYgdGVzdCB5ZXMgPSAiJHdpdGhfZ251X2xkIjsgdGhlbgogCSAgICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCi0JICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR3bC0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICAgIGVsc2UKIAkgICAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKIAkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKIAkgICAgZmkKIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcwotCSAgICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQKLQkgICAgIyBsaWJyYXJpZXMuCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHt3bH0tYm5vZW50cnkgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWJFOiRleHBvcnRfc3ltYm9scyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9fiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRzb25hbWUnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckUk0gLXIgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmR+JE1LRElSICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kJworCSAgICAjIC1icnRsIGFmZmVjdHMgbXVsdGlwbGUgbGlua2VyIHNldHRpbmdzLCAtYmVyb2sgZG9lcyBub3QgYW5kIGlzIG92ZXJyaWRkZW4gbGF0ZXIKKwkgICAgY29tcGlsZXJfZmxhZ3NfZmlsdGVyZWQ9J2BmdW5jX2VjaG9fYWxsICIkY29tcGlsZXJfZmxhZ3MgIiB8ICRTRUQgLWUgInMlLWJydGxcXChbWywgXV1cXCklLWJlcm9rXFwxJWciYCcKKwkgICAgaWYgdGVzdCBzdnI0ICE9ICIkd2l0aF9haXhfc29uYW1lIjsgdGhlbgorCSAgICAgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZAorCSAgICAgICMgbGlicmFyaWVzLiBOZWVkIC1ibm9ydGwgbGF0ZSwgd2UgbWF5IGhhdmUgLWJydGwgaW4gTERGTEFHUy4KKwkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iJF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpIid+JENDICckc2hhcmVkX2ZsYWdfYWl4JyAtbyAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR3bC1ibm9lbnRyeSAnJGNvbXBpbGVyX2ZsYWdzX2ZpbHRlcmVkJyR3bC1iRTokZXhwb3J0X3N5bWJvbHMkYWxsb3dfdW5kZWZpbmVkX2ZsYWd+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNvbmFtZScKKwkgICAgZmkKKwkgICAgaWYgdGVzdCBhaXggIT0gIiR3aXRoX2FpeF9zb25hbWUiOyB0aGVuCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IiRfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKSInfiRDQyAnJHNoYXJlZF9mbGFnX3N2cjQnIC1vICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vICRsaWJvYmpzICRkZXBsaWJzICR3bC1ibm9lbnRyeSAnJGNvbXBpbGVyX2ZsYWdzX2ZpbHRlcmVkJyR3bC1iRTokZXhwb3J0X3N5bWJvbHMkYWxsb3dfdW5kZWZpbmVkX2ZsYWd+JFNUUklQIC1lICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vfiggZnVuY19lY2hvX2FsbCAiIyEgJHNvbmFtZSgkc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubykiOyBpZiB0ZXN0IHNocl82NCA9ICIkc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiMgNjQiOyBlbHNlIGZ1bmNfZWNob19hbGwgIiMgMzIiOyBmaTsgY2F0ICRleHBvcnRfc3ltYm9scyApID4gJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLmltcH4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm8gJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLmltcCcKKwkgICAgZWxzZQorCSAgICAgICMgdXNlZCBieSAtZGxwcmVvcGVuIHRvIGdldCB0aGUgc3ltYm9scworCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSIkX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSkiJ34kTVYgICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzb25hbWUgJG91dHB1dF9vYmpkaXInCisJICAgIGZpCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSIkX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSkiJ34kUk0gLXIgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQnCiAgICAgICAgICAgZmkKICAgICAgICAgZmkKICAgICAgICAgOzsKQEAgLTYxMTcsNyArNjYzMyw3IEBACiAJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKIAkgICMgSm9zZXBoIEJlY2tlbmJhY2ggPGpyYjNAYmVzdC5jb20+IHNheXMgc29tZSByZWxlYXNlcyBvZiBnY2MKIAkgICMgc3VwcG9ydCAtLXVuZGVmaW5lZC4gIFRoaXMgZGVzZXJ2ZXMgc29tZSBpbnZlc3RpZ2F0aW9uLiAgRklYTUUKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAJZWxzZQogCSAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogCWZpCkBAIC02MTQ1LDU3ICs2NjYxLDU4IEBACiAJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgogCSAgbGliZXh0PWxpYgogCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0JICBzaHJleHRfY21kcz0iLmRsbCIKKwkgIHNocmV4dF9jbWRzPS5kbGwKIAkgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0JICAgICAgJFNFRCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0JICAgIGVsc2UKLQkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLQkgICAgZml+Ci0JICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLQkgICAgbGlua25hbWVzPScKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+bGlua25hbWVzPScKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiBfTFRfRExMX0RFRl9QKFskZXhwb3J0X3N5bWJvbHNdKTsgdGhlbgorICAgICAgICAgICAgICBjcCAiJGV4cG9ydF9zeW1ib2xzIiAiJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYiOworICAgICAgICAgICAgICBlY2hvICIkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5kZWYiID4gIiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwIjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgJFNFRCAtZSAnXCcncy9eLy1saW5rIC1FWFBPUlQ6LydcJycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKyAgICAgICAgICAgIGZpfgorICAgICAgICAgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorICAgICAgICAgICAgbGlua25hbWVzPScKIAkgICMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KIAkgICMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCiAJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKIAkgICMgRG9uJ3QgdXNlIHJhbmxpYgogCSAgX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKIAkgIF9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0JICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0JICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLQkgICAgICAqLmV4ZXwqLkVYRSkgOzsKLQkgICAgICAqKQotCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0JCWx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0JCTs7Ci0JICAgIGVzYWN+Ci0JICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+Ci0JICAgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0JICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLQkgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLQkgICAgZmknCisgICAgICAgICAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorICAgICAgICAgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorICAgICAgICAgICAgICAqLmV4ZXwqLkVYRSkgOzsKKyAgICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICBsdF9vdXRwdXRmaWxlPSRsdF9vdXRwdXRmaWxlLmV4ZQorICAgICAgICAgICAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0kbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZQorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICBlc2FjfgorICAgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KKyAgICAgICAgICAgIGlmIHRlc3QgOiAhPSAiJE1BTklGRVNUX1RPT0wiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorICAgICAgICAgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworICAgICAgICAgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKyAgICAgICAgICAgIGZpJwogCSAgOzsKIAkqKQogCSAgIyBnKysKIAkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCiAJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLQkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCisJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtLWV4cG9ydC1hbGwtc3ltYm9scycKIAkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAogCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwogCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCiAKIAkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0JICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQkgICAgZWxzZQotCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JICAgIGZpfgotCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkd2wtLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSwgdXNlIGl0IGFzCisJICAgICMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZCBFWFBPUlRTLi4uCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiBfTFRfRExMX0RFRl9QKFskZXhwb3J0X3N5bWJvbHNdKTsgdGhlbgorICAgICAgICAgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworICAgICAgICAgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworICAgICAgICAgICAgZml+CisgICAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHdsLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwogCSAgZWxzZQogCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAJICBmaQpAQCAtNjIwNiw2ICs2NzIzLDM0IEBACiAgICAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQogCTs7CiAKKyAgICAgIG9zMiopCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwlzaHJleHRfY21kcz0uZGxsCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJEVDSE8gIkxJQlJBUlkgJHtzb25hbWUlJHNoYXJlZF9leHR9IElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgJEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgJEVDSE8gIkRBVEEgTVVMVElQTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICAkRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgIGVteGV4cCAkbGlib2JqcyB8ICRTRUQgLyJfRExMX0luaXRUZXJtIi9kID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgICRDQyAtWmRsbCAtWmNydGRsbCAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICBlbXhpbXAgLW8gJGxpYiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRFQ0hPICJMSUJSQVJZICR7c29uYW1lJSRzaGFyZWRfZXh0fSBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgICRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgICRFQ0hPICJEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgJEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICBwcmVmaXhfY21kcz0iJFNFRCJ+CisJICBpZiB0ZXN0IEVYUE9SVFMgPSAiYCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCI7IHRoZW4KKwkgICAgcHJlZml4X2NtZHM9IiRwcmVmaXhfY21kcyAtZSAxZCI7CisJICBmaX4KKwkgIHByZWZpeF9jbWRzPSIkcHJlZml4X2NtZHMgLWUgXCJzL15cKC4qXCkkL19cMS9nXCIifgorCSAgY2F0ICRleHBvcnRfc3ltYm9scyB8ICRwcmVmaXhfY21kcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICAkQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgZW14aW1wIC1vICRsaWIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfRnJvbV9uZXdfY21kcywgJDEpPSdlbXhpbXAgLW8gJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfV9kbGwuYSAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisJX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisJOzsKKwogICAgICAgZGd1eCopCiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAgICAgZWMrKyopCkBAIC02MjQxLDE0ICs2Nzg2LDE0IEBACiAgICAgICAgIDs7CiAKICAgICAgIGhhaWt1KikKLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKICAgICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCiAgICAgICAgIDs7CiAKICAgICAgIGhwdXg5KikKLSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsK2IgJHdsJGxpYmRpcicKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgotICAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworICAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtRScKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzICMgTm90IGluIHRoZSBzZWFyY2ggUEFUSCwKIAkJCQkgICAgICAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQKQEAgLTYyNjAsNyArNjgwNSw3IEBACiAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAgICAgICAgICAgICA7OwogICAgICAgICAgIGFDQyopCi0gICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLWIgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtYiAkd2wrYiAkd2wkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAieCRvdXRwdXRfb2JqZGlyLyRzb25hbWUiID0gIngkbGliIiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAgICAgICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KICAgICAgICAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgpAQCAtNjI2OSwxMSArNjgxNCwxMSBAQAogICAgICAgICAgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KICAgICAgICAgICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKICAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzLgotICAgICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRFR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCisgICAgICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEVHUkVQICJcLUwiYDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogICAgICAgICAgICAgOzsKICAgICAgICAgICAqKQotICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdYWCI7IHRoZW4KKyAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAkd2wrYiAkd2wkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAieCRvdXRwdXRfb2JqZGlyLyRzb25hbWUiID0gIngkbGliIiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAogICAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCkBAIC02MjgzLDE1ICs2ODI4LDE1IEBACiAgICAgICAgIDs7CiAKICAgICAgIGhwdXgxMCp8aHB1eDExKikKLSAgICAgICAgaWYgdGVzdCAkd2l0aF9nbnVfbGQgPSBubzsgdGhlbgotCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgICBpZiB0ZXN0IG5vID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wrYiAkd2wkbGliZGlyJwogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgogCiAgICAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KICAgICAgICAgICAgIGhwcGEqNjQqfGlhNjQqKQogICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgKikKLQkgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworCSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR3bC1FJwogICAgICAgICAgICAgICA7OwogICAgICAgICAgIGVzYWMKICAgICAgICAgZmkKQEAgLTYzMTcsMTMgKzY4NjIsMTMgQEAKICAgICAgICAgICBhQ0MqKQogCSAgICBjYXNlICRob3N0X2NwdSBpbgogCSAgICAgIGhwcGEqNjQqKQotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR3bCtoICR3bCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgICA7OwogCSAgICAgIGlhNjQqKQotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR3bCtoICR3bCRzb25hbWUgJHdsK25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgOzsKIAkgICAgICAqKQotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHdsK2ggJHdsJHNvbmFtZSAkd2wrYiAkd2wkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgICA7OwogCSAgICBlc2FjCiAJICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKQEAgLTYzMzQsMjAgKzY4NzksMjAgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCSAgICA7OwogICAgICAgICAgICopCi0JICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0JICAgICAgaWYgdGVzdCAkd2l0aF9nbnVfbGQgPSBubzsgdGhlbgorCSAgICBpZiB0ZXN0IHllcyA9ICIkR1hYIjsgdGhlbgorCSAgICAgIGlmIHRlc3Qgbm8gPSAiJHdpdGhfZ251X2xkIjsgdGhlbgogCSAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KIAkgICAgICAgICAgaHBwYSo2NCopCi0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAkd2wraCAkd2wkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgICAgIDs7CiAJICAgICAgICAgIGlhNjQqKQotCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAkd2wraCAkd2wkc29uYW1lICR3bCtub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgICAqKQotCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR3bCtoICR3bCRzb25hbWUgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgICAgIDs7CiAJICAgICAgICBlc2FjCiAJICAgICAgZmkKQEAgLTYzNjIsMjIgKzY5MDcsMjIgQEAKICAgICAgIGludGVyaXhbWzMtOV1dKikKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLQlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLQlfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGgsJGxpYmRpcicKKwlfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtRScKIAkjIEhhY2s6IE9uIEludGVyaXggMy54LCB3ZSBjYW5ub3QgY29tcGlsZSBQSUMgYmVjYXVzZSBvZiBhIGJyb2tlbiBnY2MuCiAJIyBJbnN0ZWFkLCBzaGFyZWQgbGlicmFyaWVzIGFyZSBsb2FkZWQgYXQgYW4gaW1hZ2UgYmFzZSAoMHgxMDAwMDAwMCBieQogCSMgZGVmYXVsdCkgYW5kIHJlbG9jYXRlZCBpZiB0aGV5IGNvbmZsaWN0LCB3aGljaCBpcyBhIHNsb3cgdmVyeSBtZW1vcnkKIAkjIGNvbnN1bWluZyBhbmQgZnJhZ21lbnRpbmcgcHJvY2Vzcy4gIFRvIGF2b2lkIHRoaXMsIHdlIHBpY2sgYSByYW5kb20sCiAJIyAyNTYgS2lCLWFsaWduZWQgaW1hZ2UgYmFzZSBiZXR3ZWVuIDB4NTAwMDAwMDAgYW5kIDB4NkZGQzAwMDAgYXQgbGluawogCSMgdGltZS4gIE1vdmluZyB1cCBmcm9tIDB4MTAwMDAwMDAgYWxzbyBhbGxvd3MgbW9yZSBzYnJrKDIpIHNwYWNlLgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtaCwkc29uYW1lICR3bC0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgInN8XnxffCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1oLCRzb25hbWUgJHdsLS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR3bC0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwogCTs7CiAgICAgICBpcml4NSogfCBpcml4NiopCiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAgICAgQ0MqKQogCSAgICAjIFNHSSBDKysKLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWFsbCAtbXVsdGlnb3QgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAogCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgIyAiQ0MgLWFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgSVJJWCBDKysgY29tcGlsZXIuICBUaGlzIGlzCkBAIC02Mzg2LDE3ICs2OTMxLDE3IEBACiAJICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLWFyIC1XUiwtdSAtbyAkb2xkbGliICRvbGRvYmpzJwogCSAgICA7OwogICAgICAgICAgICopCi0JICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0JICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICBpZiB0ZXN0IHllcyA9ICIkR1hYIjsgdGhlbgorCSAgICAgIGlmIHRlc3Qgbm8gPSAiJHdpdGhfZ251X2xkIjsgdGhlbgorCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIkd2wtc2V0X3ZlcnNpb24gJHdsJHZlcnN0cmluZyJgICR3bC11cGRhdGVfcmVnaXN0cnkgJHdsJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCiAJICAgICAgZWxzZQotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAtbyAkbGliJwogCSAgICAgIGZpCiAJICAgIGZpCiAJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwogCSAgICA7OwogICAgICAgICBlc2FjCi0gICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGggJHdsJGxpYmRpcicKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgogICAgICAgICBfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKT15ZXMKICAgICAgICAgOzsKQEAgLTY0MDksOCArNjk1NCw4IEBACiAJICAgICMgS0NDIHdpbGwgb25seSBjcmVhdGUgYSBzaGFyZWQgbGlicmFyeSBpZiB0aGUgb3V0cHV0IGZpbGUKIAkgICAgIyBlbmRzIHdpdGggIi5zbyIgKG9yICIuc2wiIGZvciBIUC1VWCksIHNvIHJlbmFtZSB0aGUgbGlicmFyeQogCSAgICAjIHRvIGl0cyBwcm9wZXIgbmFtZSAod2l0aCB2ZXJzaW9uKSBhZnRlciBsaW5raW5nLgotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0ZW1wZXh0PWBlY2hvICRzaGFyZWRfZXh0IHwgJFNFRCAtZSAnXCcncy9cKFtbXigpMC05QS1aYS16e31dXVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR7dGVtcGV4dH1cLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYjsgbXYgXCR0ZW1wbGliICRsaWInCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0ZW1wZXh0PWBlY2hvICRzaGFyZWRfZXh0IHwgJFNFRCAtZSAnXCcncy9cKFtbXigpMC05QS1aYS16e31dXVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR7dGVtcGV4dH1cLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYiAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9sczsgbXYgXCR0ZW1wbGliICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW1teKCkwLTlBLVphLXp7fV1dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAkbGliIHwgJFNFRCAtZSAicy9cJHRlbXBleHRcLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYjsgbXYgXCR0ZW1wbGliICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0ZW1wZXh0PWBlY2hvICRzaGFyZWRfZXh0IHwgJFNFRCAtZSAnXCcncy9cKFtbXigpMC05QS1aYS16e31dXVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR0ZW1wZXh0XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWIgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUsJGV4cG9ydF9zeW1ib2xzOyBtdiBcJHRlbXBsaWIgJGxpYicKIAkgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogCSAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KIAkgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCkBAIC02NDE5LDEwICs2OTY0LDEwIEBACiAJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKIAkgICAgIyBkZXBlbmRlbmNpZXMuCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgcm0gLWYgbGliY29uZnRlc3Qkc2hhcmVkX2V4dDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMSB8ICRHUkVQICJsZCJgOyBybSAtZiBsaWJjb25mdGVzdCRzaGFyZWRfZXh0OyBsaXN0PSA7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAKLQkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0JICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCwkbGliZGlyJworCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtLWV4cG9ydC1keW5hbWljJwogCiAJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwogCSAgICAjICJDQyAtQnN0YXRpYyIsIHdoZXJlICJDQyIgaXMgdGhlIEtBSSBDKysgY29tcGlsZXIuCkBAIC02NDM2LDU5ICs2OTgxLDU5IEBACiAJICAgICMgZWFybGllciBkbyBub3QgYWRkIHRoZSBvYmplY3RzIHRoZW1zZWx2ZXMuCiAJICAgIGNhc2UgYCRDQyAtViAyPiYxYCBpbgogCSAgICAgICoiVmVyc2lvbiA3LiIqKQotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJCTs7CiAJICAgICAgKikgICMgVmVyc2lvbiA4LjAgb3IgbmV3ZXIKIAkgICAgICAgIHRtcF9pZHluPQogCSAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KIAkJICBpYTY0KikgdG1wX2lkeW49JyAtaV9keW5hbWljJzs7CiAJCWVzYWMKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJyIkdG1wX2lkeW4iJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQkJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJyIkdG1wX2lkeW4iJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJyIkdG1wX2lkeW4iJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCciJHRtcF9pZHluIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAkJOzsKIAkgICAgZXNhYwogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KLQkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0JICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLQkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCwkbGliZGlyJworCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtLWV4cG9ydC1keW5hbWljJworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR3bC0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICAgIDs7CiAgICAgICAgICAgcGdDQyogfCBwZ2NwcCopCiAgICAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIEMrKyBjb21waWxlcgogCSAgICBjYXNlIGAkQ0MgLVZgIGluCiAJICAgICpwZ0NDXCBbWzEtNV1dLiogfCAqcGdjcHBcIFtbMS01XV0uKikKIAkgICAgICBfTFRfVEFHVkFSKHByZWxpbmtfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotCQlybSAtcmYgJHRwbGRpcn4KLQkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgotCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJworICAgICAgICAgICAgICAgcm0gLXJmICR0cGxkaXJ+CisgICAgICAgICAgICAgICAkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+CisgICAgICAgICAgICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJwogCSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotCQlybSAtcmYgJHRwbGRpcn4KLQkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KLQkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+Ci0JCSRSQU5MSUIgJG9sZGxpYicKKyAgICAgICAgICAgICAgICBybSAtcmYgJHRwbGRpcn4KKyAgICAgICAgICAgICAgICAkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgorICAgICAgICAgICAgICAgICRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgfgorICAgICAgICAgICAgICAgICRSQU5MSUIgJG9sZGxpYicKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotCQlybSAtcmYgJHRwbGRpcn4KLQkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworICAgICAgICAgICAgICAgIHJtIC1yZiAkdHBsZGlyfgorICAgICAgICAgICAgICAgICRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgorICAgICAgICAgICAgICAgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0JCXJtIC1yZiAkdHBsZGlyfgotCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICAgICAgICAgICBybSAtcmYgJHRwbGRpcn4KKyAgICAgICAgICAgICAgICAkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKyAgICAgICAgICAgICAgICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAkgICAgICA7OwogCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scwotCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCSAgICAgIDs7CiAJICAgIGVzYWMKIAotCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXJwYXRoICR7d2x9JGxpYmRpcicKLQkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwotCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLS1ycGF0aCAkd2wkbGliZGlyJworCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtLWV4cG9ydC1keW5hbWljJworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR3bC0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAgICAgICAgICAgICA7OwogCSAgY3h4KikKIAkgICAgIyBDb21wYXEgQysrCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICAtbyAkbGliICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICAtbyAkbGliICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scycKIAogCSAgICBydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCkBAIC02NTAyLDE4ICs3MDQ3LDE4IEBACiAJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKIAkgICAgIyBkZXBlbmRlbmNpZXMuCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgdGVtcGxpc3Q9YGZ1bmNfZWNob19hbGwgIiR0ZW1wbGlzdCIgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZCAuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCJgOyB0ZW1wbGlzdD1gZnVuY19lY2hvX2FsbCAiJHRlbXBsaXN0IiB8ICRTRUQgInMvXCheLipsZC4qXClcKCAuKmxkIC4qJFwpL1wxLyJgOyBsaXN0PSA7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICJYJGxpc3QiIHwgJFhzZWQnCiAJICAgIDs7CiAJICB4bCogfCBtcGl4bCogfCBiZ3hsKikKIAkgICAgIyBJQk0gWEwgOC4wIG9uIFBQQywgd2l0aCBHTlUgbGQKLQkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLQkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXFta3Nocm9iaiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQkgICAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoICR3bCRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR3bC0tZXhwb3J0LWR5bmFtaWMnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtcW1rc2hyb2JqICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgaWYgdGVzdCB5ZXMgPSAiJHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyI7IHRoZW4KIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkJY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCQllY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkJJENDIC1xbWtzaHJvYmogJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXZlcnNpb24tc2NyaXB0ICR7d2x9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgICAgICAgICAgICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorICAgICAgICAgICAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorICAgICAgICAgICAgICAgICRDQyAtcW1rc2hyb2JqICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXZlcnNpb24tc2NyaXB0ICR3bCRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwogCSAgICBmaQogCSAgICA7OwogCSAgKikKQEAgLTY1MjEsMTAgKzcwNjYsMTAgQEAKIAkgICAgKlN1blwgQyopCiAJICAgICAgIyBTdW4gQysrIDUuOQogCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKLQkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzJworCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzJwogCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0JICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHdsLS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHdsLS1uby13aG9sZS1hcmNoaXZlJwogCSAgICAgIF9MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzCiAKIAkgICAgICAjIE5vdCBzdXJlIHdoZXRoZXIgc29tZXRoaW5nIGJhc2VkIG9uCkBAIC02NTgyLDIyICs3MTI3LDE3IEBACiAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCiAJOzsKIAotICAgICAgb3BlbmJzZDIqKQotICAgICAgICAjIEMrKyBzaGFyZWQgbGlicmFyaWVzIGFyZSBmYWlybHkgYnJva2VuCi0JX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCTs7Ci0KLSAgICAgIG9wZW5ic2QqKQorICAgICAgb3BlbmJzZCogfCBiaXRyaWcqKQogCWlmIHRlc3QgLWYgL3Vzci9saWJleGVjL2xkLnNvOyB0aGVuCiAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KIAkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9eWVzCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRsaWInCi0JICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLQkgIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJwotCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoLCRsaWJkaXInCisJICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIjsgdGhlbgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLUUnCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0kd2xhcmMnLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICckd2xhcmMnLS1uby13aG9sZS1hcmNoaXZlJwogCSAgZmkKIAkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWZ1bmNfZWNob19hbGwKIAllbHNlCkBAIC02NjEzLDkgKzcxNTMsOSBAQAogCSAgICAjIEtDQyB3aWxsIG9ubHkgY3JlYXRlIGEgc2hhcmVkIGxpYnJhcnkgaWYgdGhlIG91dHB1dCBmaWxlCiAJICAgICMgZW5kcyB3aXRoICIuc28iIChvciAiLnNsIiBmb3IgSFAtVVgpLCBzbyByZW5hbWUgdGhlIGxpYnJhcnkKIAkgICAgIyB0byBpdHMgcHJvcGVyIG5hbWUgKHdpdGggdmVyc2lvbikgYWZ0ZXIgbGlua2luZy4KLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICIkbGliIiB8ICRTRUQgLWUgInMvXCR7dGVtcGV4dH1cLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYjsgbXYgXCR0ZW1wbGliICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW1teKCkwLTlBLVphLXp7fV1dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAiJGxpYiIgfCAkU0VEIC1lICJzL1wkdGVtcGV4dFwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKIAotCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCwkbGliZGlyJwogCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CiAKIAkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCkBAIC02NjMzLDE3ICs3MTczLDE3IEBACiAgICAgICAgICAgY3h4KikKIAkgICAgY2FzZSAkaG9zdCBpbgogCSAgICAgIG9zZjMqKQotCSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotCSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKwkgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR3bC1leHBlY3RfdW5yZXNvbHZlZCAkd2xcKicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR3bC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGggJHdsJGxpYmRpcicKIAkJOzsKIAkgICAgICAqKQogCSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdmb3IgaSBpbiBgY2F0ICRleHBvcnRfc3ltYm9sc2A7IGRvIHByaW50ZiAiJXMgJXNcXG4iIC1leHBvcnRlZF9zeW1ib2wgIlwkaSIgPj4gJGxpYi5leHA7IGRvbmV+Ci0JICAgICAgICAgIGVjaG8gIi1oaWRkZW4iPj4gJGxpYi5leHB+Ci0JICAgICAgICAgICRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4KLQkgICAgICAgICAgJFJNICRsaWIuZXhwJworICAgICAgICAgICAgICAgICAgZWNobyAiLWhpZGRlbiI+PiAkbGliLmV4cH4KKyAgICAgICAgICAgICAgICAgICRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgJHdsLWlucHV0ICR3bCRsaWIuZXhwICBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYn4KKyAgICAgICAgICAgICAgICAgICRSTSAkbGliLmV4cCcKIAkgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctcnBhdGggJGxpYmRpcicKIAkJOzsKIAkgICAgZXNhYwpAQCAtNjY1OCwyMSArNzE5OCwyMSBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkIiB8ICRHUkVQIC12ICJsZDoiYDsgdGVtcGxpc3Q9YGZ1bmNfZWNob19hbGwgIiR0ZW1wbGlzdCIgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkIiB8ICRHUkVQIC12ICJsZDoiYDsgdGVtcGxpc3Q9YGZ1bmNfZWNob19hbGwgIiR0ZW1wbGlzdCIgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZC4qJFwpL1wxLyJgOyBsaXN0PSA7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAJICAgIDs7CiAJICAqKQotCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQkgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworCSAgICBpZiB0ZXN0IHllcyxubyA9ICIkR1hYLCR3aXRoX2dudV9sZCI7IHRoZW4KKwkgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAkd2wtZXhwZWN0X3VucmVzb2x2ZWQgJHdsXConCiAJICAgICAgY2FzZSAkaG9zdCBpbgogCSAgICAgICAgb3NmMyopCi0JICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRhbGxvd191bmRlZmluZWRfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIkd2wtc2V0X3ZlcnNpb24gJHdsJHZlcnN0cmluZyJgICR3bC11cGRhdGVfcmVnaXN0cnkgJHdsJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCiAJCSAgOzsKIAkgICAgICAgICopCi0JICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1tc3ltICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bCRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCQkgIDs7CiAJICAgICAgZXNhYwogCi0JICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKwkgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoICR3bCRsaWJkaXInCiAJICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgogCiAJICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwpAQCAtNjcxOCw5ICs3MjU4LDkgQEAKIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywkMSk9eWVzCiAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gIC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkgICAgICAkQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1NICR7d2x9JGxpYi5leHAgLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICAgICAgICAgJENDIC1HJGFsbG93X3VuZGVmaW5lZF9mbGFnICR3bC1NICR3bCRsaWIuZXhwIC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KQEAgLTY3MjgsNyArNzI2OCw3IEBACiAJICAgICAgc29sYXJpczIuW1swLTVdXSB8IHNvbGFyaXMyLltbMC01XV0uKikgOzsKIAkgICAgICAqKQogCQkjIFRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBjb21iaW5lIGFuZCByZW9yZGVyIGxpbmtlciBvcHRpb25zLAotCQkjIGJ1dCB1bmRlcnN0YW5kcyBgLXogbGlua2VyX2ZsYWcnLgorCQkjIGJ1dCB1bmRlcnN0YW5kcyAnLXogbGlua2VyX2ZsYWcnLgogCSAgICAgICAgIyBTdXBwb3J0ZWQgc2luY2UgU29sYXJpcyAyLjYgKG1heWJlIDIuNS4xPykKIAkJX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScteiBhbGxleHRyYWN0JGNvbnZlbmllbmNlIC16IGRlZmF1bHRleHRyYWN0JwogCSAgICAgICAgOzsKQEAgLTY3NDUsMzAgKzcyODUsMzAgQEAKIAkgICAgOzsKICAgICAgICAgICBnY3gqKQogCSAgICAjIEdyZWVuIEhpbGxzIEMrKyBDb21waWxlcgotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtaCAkd2wkc29uYW1lIC1vICRsaWInCiAKIAkgICAgIyBUaGUgQysrIGNvbXBpbGVyIG11c3QgYmUgdXNlZCB0byBjcmVhdGUgdGhlIGFyY2hpdmUuCiAJICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgJExERkxBR1MgLWFyY2hpdmUgLW8gJG9sZGxpYiAkb2xkb2JqcycKIAkgICAgOzsKICAgICAgICAgICAqKQogCSAgICAjIEdOVSBDKysgY29tcGlsZXIgd2l0aCBTb2xhcmlzIGxpbmtlcgotCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQkgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS16ICR7d2x9ZGVmcycKKwkgICAgaWYgdGVzdCB5ZXMsbm8gPSAiJEdYWCwkd2l0aF9nbnVfbGQiOyB0aGVuCisJICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHdsLXogJHt3bH1kZWZzJwogCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1oICR3bCRzb25hbWUgLW8gJGxpYicKIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICAgICAgICAgICAgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHdsLU0gJHdsJGxpYi5leHAgJHdsLWggJHdsJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAKIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogCSAgICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCiAJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAtdiAiXkNvbmZpZ3VyZWQgd2l0aDoiIHwgJEdSRVAgIlwtTCInCiAJICAgICAgZWxzZQotCSAgICAgICAgIyBnKysgMi43IGFwcGVhcnMgdG8gcmVxdWlyZSBgLUcnIE5PVCBgLXNoYXJlZCcgb24gdGhpcworCSAgICAgICAgIyBnKysgMi43IGFwcGVhcnMgdG8gcmVxdWlyZSAnLUcnIE5PVCAnLXNoYXJlZCcgb24gdGhpcwogCSAgICAgICAgIyBwbGF0Zm9ybS4KLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLWggJHdsJHNvbmFtZSAtbyAkbGliJwogCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkJICAkQ0MgLUcgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgICAgICAgICAgICAgJENDIC1HIC1ub3N0ZGxpYiAkd2wtTSAkd2wkbGliLmV4cCAkd2wtaCAkd2wkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKIAogCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCkBAIC02Nzc2LDExICs3MzE2LDExIEBACiAJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1HICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCSAgICAgIGZpCiAKLQkgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkd2wkbGliZGlyJworCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtUiAkd2wkbGliZGlyJwogCSAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KIAkJc29sYXJpczIuW1swLTVdXSB8IHNvbGFyaXMyLltbMC01XV0uKikgOzsKIAkJKikKLQkJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXogJHt3bH1hbGxleHRyYWN0JGNvbnZlbmllbmNlICR7d2x9LXogJHt3bH1kZWZhdWx0ZXh0cmFjdCcKKwkJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR3bC16ICR7d2x9YWxsZXh0cmFjdCRjb252ZW5pZW5jZSAkd2wteiAke3dsfWRlZmF1bHRleHRyYWN0JwogCQkgIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQpAQCAtNjc4OSw1MiArNzMyOSw1MiBAQAogICAgICAgICA7OwogCiAgICAgc3lzdjQqdXcyKiB8IHN5c3Y1T3BlblVOSVgqIHwgc3lzdjVVbml4V2FyZTcuW1swMV1dLltbMTBdXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bWzAyNF1dKikKLSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teix0ZXh0JworICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPSckd2wteix0ZXh0JwogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwogICAgICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJwogCiAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgICBDQyopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHdsLWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCSopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHdsLWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkd2wtQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHdsLWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAgICAgICBlc2FjCiAgICAgICA7OwogCiAgICAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqKQotCSMgTm90ZTogV2UgY2FuIE5PVCB1c2UgLXogZGVmcyBhcyB3ZSBtaWdodCBkZXNpcmUsIGJlY2F1c2Ugd2UgZG8gbm90CisJIyBOb3RlOiBXZSBDQU5OT1QgdXNlIC16IGRlZnMgYXMgd2UgbWlnaHQgZGVzaXJlLCBiZWNhdXNlIHdlIGRvIG5vdAogCSMgbGluayB3aXRoIC1sYywgYW5kIHRoYXQgd291bGQgY2F1c2UgYW55IHN5bWJvbHMgdXNlZCBmcm9tIGxpYmMgdG8KIAkjIGFsd2F5cyBiZSB1bnJlc29sdmVkLCB3aGljaCBtZWFucyBqdXN0IGFib3V0IG5vIGxpYnJhcnkgd291bGQKIAkjIGV2ZXIgbGluayBjb3JyZWN0bHkuICBJZiB3ZSdyZSBub3QgdXNpbmcgR05VIGxkIHdlIHVzZSAteiB0ZXh0CiAJIyB0aG91Z2gsIHdoaWNoIGRvZXMgY2F0Y2ggc29tZSBiYWQgc3ltYm9scyBidXQgaXNuJ3QgYXMgaGVhdnktaGFuZGVkCiAJIyBhcyAteiBkZWZzLgotCV9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teix0ZXh0JwotCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teixub2RlZnMnCisJX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPSckd2wteix0ZXh0JworCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHdsLXosbm9kZWZzJwogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwogCV9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0JX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIsJGxpYmRpcicKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLVIsJGxpYmRpcicKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0nOicKIAlfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKLQlfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1CZXhwb3J0JworCV9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR3bC1CZXhwb3J0JwogCXJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKIAogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAgICAgQ0MqKQotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLVRwcmVsaW5rX29iamVjdHMgJG9sZG9ianN+Ci0JICAgICAgJyIkX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSkiCisgICAgICAgICAgICAgICciJF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpIgogCSAgICBfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JyRDQyAtVHByZWxpbmtfb2JqZWN0cyAkcmVsb2FkX29ianN+Ci0JICAgICAgJyIkX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpIgorICAgICAgICAgICAgICAnIiRfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSkiCiAJICAgIDs7CiAJICAqKQotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkd2wtQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHdsLWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgICAgOzsKIAllc2FjCiAgICAgICA7OwpAQCAtNjg2NSwxMCArNzQwNSwxMCBAQAogICAgIGVzYWMKIAogICAgIEFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpXSkKLSAgICB0ZXN0ICIkX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKSIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCisgICAgdGVzdCBubyA9ICIkX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKSIgJiYgY2FuX2J1aWxkX3NoYXJlZD1ubwogCi0gICAgX0xUX1RBR1ZBUihHQ0MsICQxKT0iJEdYWCIKLSAgICBfTFRfVEFHVkFSKExELCAkMSk9IiRMRCIKKyAgICBfTFRfVEFHVkFSKEdDQywgJDEpPSRHWFgKKyAgICBfTFRfVEFHVkFSKExELCAkMSk9JExECiAKICAgICAjIyBDQVZFQVQgRU1QVE9SOgogICAgICMjIFRoZXJlIGlzIG5vIGVuY2Fwc3VsYXRpb24gd2l0aGluIHRoZSBmb2xsb3dpbmcgbWFjcm9zLCBkbyBub3QgY2hhbmdlCkBAIC02ODk1LDcgKzc0MzUsNyBAQAogICBsdF9jdl9wYXRoX0xEPSRsdF9zYXZlX3BhdGhfTEQKICAgbHRfY3ZfcHJvZ19nbnVfbGRjeHg9JGx0X2N2X3Byb2dfZ251X2xkCiAgIGx0X2N2X3Byb2dfZ251X2xkPSRsdF9zYXZlX3dpdGhfZ251X2xkCi1maSAjIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzCitmaSAjIHRlc3QgeWVzICE9ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiCiAKIEFDX0xBTkdfUE9QCiBdKSMgX0xUX0xBTkdfQ1hYX0NPTkZJRwpAQCAtNjkxNywxMyArNzQ1NywxNCBAQAogQUNfUkVRVUlSRShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKQogZnVuY19zdHJpcG5hbWVfY25mICgpCiB7Ci0gIGNhc2UgJHsyfSBpbgotICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisgIGNhc2UgQFN8QDIgaW4KKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIkBTfEAzIiB8ICRTRUQgInMlXkBTfEAxJSU7IHMlXFxcXEBTfEAyXCQlJSJgOzsKKyAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIkBTfEAzIiB8ICRTRUQgInMlXkBTfEAxJSU7IHMlQFN8QDJcJCUlImA7OwogICBlc2FjCiB9ICMgZnVuY19zdHJpcG5hbWVfY25mCiBdKSMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgogCisKICMgX0xUX1NZU19ISURERU5fTElCREVQUyhbVEFHTkFNRV0pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBGaWd1cmUgb3V0ICJoaWRkZW4iIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZyb20gdmVyYm9zZQpAQCAtNzAwNywxMyArNzU0OCwxMyBAQAogICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCiAKICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbwotICAgIGNhc2UgJHtwcmV2fSR7cH0gaW4KKyAgICBjYXNlICRwcmV2JHAgaW4KIAogICAgIC1MKiB8IC1SKiB8IC1sKikKICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgogICAgICAgICMgUmVtb3ZlIHRoZSBzcGFjZS4KLSAgICAgICBpZiB0ZXN0ICRwID0gIi1MIiB8fAotICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCisgICAgICAgaWYgdGVzdCB4LUwgPSAiJHAiIHx8CisgICAgICAgICAgdGVzdCB4LVIgPSAiJHAiOyB0aGVuCiAJIHByZXY9JHAKIAkgY29udGludWUKICAgICAgICBmaQpAQCAtNzAyOSwxNiArNzU3MCwxNiBAQAogICAgICAgIGNhc2UgJHAgaW4KICAgICAgICA9KikgZnVuY19zdHJpcG5hbWVfY25mICc9JyAnJyAiJHAiOyBwPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwogICAgICAgIGVzYWMKLSAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgotCSBjYXNlICR7cHJldn0gaW4KKyAgICAgICBpZiB0ZXN0IG5vID0gIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIjsgdGhlbgorCSBjYXNlICRwcmV2IGluCiAJIC1MIHwgLVIpCiAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCiAJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCiAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCiAJICAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSkiOyB0aGVuCi0JICAgICBfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpPSIke3ByZXZ9JHtwfSIKKwkgICAgIF9MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSk9JHByZXYkcAogCSAgIGVsc2UKLQkgICAgIF9MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSk9IiR7X0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKX0gJHtwcmV2fSR7cH0iCisJICAgICBfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpPSIke19MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSl9ICRwcmV2JHAiCiAJICAgZmkKIAkgICA7OwogCSAjIFRoZSAiLWwiIGNhc2Ugd291bGQgbmV2ZXIgY29tZSBiZWZvcmUgdGhlIG9iamVjdCBiZWluZwpAQCAtNzA0Niw5ICs3NTg3LDkgQEAKIAkgZXNhYwogICAgICAgIGVsc2UKIAkgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKSI7IHRoZW4KLQkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7cHJldn0ke3B9IgorCSAgIF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKT0kcHJldiRwCiAJIGVsc2UKLQkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7X0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpfSAke3ByZXZ9JHtwfSIKKwkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7X0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpfSAkcHJldiRwIgogCSBmaQogICAgICAgIGZpCiAgICAgICAgcHJldj0KQEAgLTcwNjMsMTUgKzc2MDQsMTUgQEAKIAkgY29udGludWUKICAgICAgICBmaQogCi0gICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KKyAgICAgICBpZiB0ZXN0IG5vID0gIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIjsgdGhlbgogCSBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpIjsgdGhlbgotCSAgIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0iJHAiCisJICAgX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPSRwCiAJIGVsc2UKIAkgICBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9IiRfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSkgJHAiCiAJIGZpCiAgICAgICAgZWxzZQogCSBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKSI7IHRoZW4KLQkgICBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPSIkcCIKKwkgICBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPSRwCiAJIGVsc2UKIAkgICBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPSIkX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKSAkcCIKIAkgZmkKQEAgLTcxMDIsNTEgKzc2NDMsNiBAQAogICBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywkMSk9CiAgIF9MVF9UQUdWQVIocG9zdGRlcHMsJDEpPQogICA7OwotCi1saW51eCopCi0gIGNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgotICAqU3VuXCBDKikKLSAgICAjIFN1biBDKysgNS45Ci0KLSAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKLSAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKLSAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCi0gICAgIyAtbGlicmFyeT1zdGxwb3J0NCBkZXBlbmRzIG9uIGl0LgotICAgIGNhc2UgIiAkQ1hYICRDWFhGTEFHUyAiIGluCi0gICAgKiIgLWxpYnJhcnk9c3RscG9ydDQgIiopCi0gICAgICBzb2xhcmlzX3VzZV9zdGxwb3J0ND15ZXMKLSAgICAgIDs7Ci0gICAgZXNhYwotCi0gICAgaWYgdGVzdCAiJHNvbGFyaXNfdXNlX3N0bHBvcnQ0IiAhPSB5ZXM7IHRoZW4KLSAgICAgIF9MVF9UQUdWQVIocG9zdGRlcHMsJDEpPSctbGlicmFyeT1Dc3RkIC1saWJyYXJ5PUNydW4nCi0gICAgZmkKLSAgICA7OwotICBlc2FjCi0gIDs7Ci0KLXNvbGFyaXMqKQotICBjYXNlICRjY19iYXNlbmFtZSBpbgotICBDQyogfCBzdW5DQyopCi0gICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCi0gICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCi0gICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcwotICAgICMgLWxpYnJhcnk9c3RscG9ydDQgZGVwZW5kcyBvbiBpdC4KLSAgICBjYXNlICIgJENYWCAkQ1hYRkxBR1MgIiBpbgotICAgICoiIC1saWJyYXJ5PXN0bHBvcnQ0ICIqKQotICAgICAgc29sYXJpc191c2Vfc3RscG9ydDQ9eWVzCi0gICAgICA7OwotICAgIGVzYWMKLQotICAgICMgQWRkaW5nIHRoaXMgcmVxdWlyZXMgYSBrbm93bi1nb29kIHNldHVwIG9mIHNoYXJlZCBsaWJyYXJpZXMgZm9yCi0gICAgIyBTdW4gY29tcGlsZXIgdmVyc2lvbnMgYmVmb3JlIDUuNiwgZWxzZSBQSUMgb2JqZWN0cyBmcm9tIGFuIG9sZAotICAgICMgYXJjaGl2ZSB3aWxsIGJlIGxpbmtlZCBpbnRvIHRoZSBvdXRwdXQsIGxlYWRpbmcgdG8gc3VidGxlIGJ1Z3MuCi0gICAgaWYgdGVzdCAiJHNvbGFyaXNfdXNlX3N0bHBvcnQ0IiAhPSB5ZXM7IHRoZW4KLSAgICAgIF9MVF9UQUdWQVIocG9zdGRlcHMsJDEpPSctbGlicmFyeT1Dc3RkIC1saWJyYXJ5PUNydW4nCi0gICAgZmkKLSAgICA7OwotICBlc2FjCi0gIDs7CiBlc2FjCiBdKQogCkBAIC03MTU1LDcgKzc2NTEsNyBAQAogZXNhYwogIF9MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzLCAkMSk9CiBpZiB0ZXN0IC1uICIke19MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSl9IjsgdGhlbgotIF9MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzLCAkMSk9YGVjaG8gIiAke19MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSl9IiB8ICR7U0VEfSAtZSAncyEgLUwhICFnJyAtZSAncyFeICEhJ2AKKyBfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlycywgJDEpPWBlY2hvICIgJHtfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpfSIgfCAkU0VEIC1lICdzISAtTCEgIWcnIC1lICdzIV4gISEnYAogZmkKIF9MVF9UQUdERUNMKFtdLCBbY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzXSwgWzFdLAogICAgIFtUaGUgZGlyZWN0b3JpZXMgc2VhcmNoZWQgYnkgdGhpcyBjb21waWxlciB3aGVuIGNyZWF0aW5nIGEgc2hhcmVkIGxpYnJhcnldKQpAQCAtNzE3NSwxMCArNzY3MSwxMCBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgRm9ydHJhbiA3NyBjb21waWxlciBhcmUKICMgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRwotIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCisjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvICdsaWJ0b29sJy4KIG00X2RlZnVuKFtfTFRfTEFOR19GNzdfQ09ORklHXSwKIFtBQ19MQU5HX1BVU0goRm9ydHJhbiA3NykKLWlmIHRlc3QgLXogIiRGNzciIHx8IHRlc3QgIlgkRjc3IiA9ICJYbm8iOyB0aGVuCitpZiB0ZXN0IC16ICIkRjc3IiB8fCB0ZXN0IG5vID0gIiRGNzciOyB0aGVuCiAgIF9sdF9kaXNhYmxlX0Y3Nz15ZXMKIGZpCiAKQEAgLTcyMTUsNyArNzcxMSw3IEBACiAjIHRoZSBGNzcgY29tcGlsZXIgaXNuJ3Qgd29ya2luZy4gIFNvbWUgdmFyaWFibGVzIChsaWtlIGVuYWJsZV9zaGFyZWQpCiAjIGFyZSBjdXJyZW50bHkgYXNzdW1lZCB0byBhcHBseSB0byBhbGwgY29tcGlsZXJzIG9uIHRoaXMgcGxhdGZvcm0sCiAjIGFuZCB3aWxsIGJlIGNvcnJ1cHRlZCBieSBzZXR0aW5nIHRoZW0gYmFzZWQgb24gYSBub24td29ya2luZyBjb21waWxlci4KLWlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllczsgdGhlbgoraWYgdGVzdCB5ZXMgIT0gIiRfbHRfZGlzYWJsZV9GNzciOyB0aGVuCiAgICMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCiAgIGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0iXAogICAgICAgc3Vicm91dGluZSB0CkBAIC03MjM3LDcgKzc3MzMsNyBAQAogICBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCiAKICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSAgbHRfc2F2ZV9DQz0iJENDIgorICBsdF9zYXZlX0NDPSRDQwogICBsdF9zYXZlX0dDQz0kR0NDCiAgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKICAgQ0M9JHtGNzctImY3NyJ9CkBAIC03MjUxLDIxICs3NzQ3LDI1IEBACiAgICAgQUNfTVNHX1JFU1VMVChbJGNhbl9idWlsZF9zaGFyZWRdKQogCiAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXNdKQotICAgIHRlc3QgIiRjYW5fYnVpbGRfc2hhcmVkIiA9ICJubyIgJiYgZW5hYmxlX3NoYXJlZD1ubworICAgIHRlc3Qgbm8gPSAiJGNhbl9idWlsZF9zaGFyZWQiICYmIGVuYWJsZV9zaGFyZWQ9bm8KIAogICAgICMgT24gQUlYLCBzaGFyZWQgbGlicmFyaWVzIGFuZCBzdGF0aWMgbGlicmFyaWVzIHVzZSB0aGUgc2FtZSBuYW1lc3BhY2UsIGFuZAogICAgICMgYXJlIGFsbCBidWlsdCBmcm9tIFBJQy4KICAgICBjYXNlICRob3N0X29zIGluCiAgICAgICBhaXgzKikKLSAgICAgICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KKyAgICAgICAgdGVzdCB5ZXMgPSAiJGVuYWJsZV9zaGFyZWQiICYmIGVuYWJsZV9zdGF0aWM9bm8KICAgICAgICAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KICAgICAgICAgICBhcmNoaXZlX2NtZHM9IiRhcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRsaWIiCiAgICAgICAgICAgcG9zdGluc3RhbGxfY21kcz0nJFJBTkxJQiAkbGliJwogICAgICAgICBmaQogICAgICAgICA7OwogICAgICAgYWl4W1s0LTldXSopCi0JaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0ICYmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IG5vIDsgdGhlbgotCSAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KKwlpZiB0ZXN0IGlhNjQgIT0gIiRob3N0X2NwdSI7IHRoZW4KKwkgIGNhc2UgJGVuYWJsZV9zaGFyZWQsJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyBpbgorCSAgeWVzLGFpeCx5ZXMpIDs7CQkjIHNoYXJlZCBvYmplY3QgYXMgbGliLnNvIGZpbGUgb25seQorCSAgeWVzLHN2cjQsKikgOzsJCSMgc2hhcmVkIG9iamVjdCBhcyBsaWIuc28gYXJjaGl2ZSBtZW1iZXIgb25seQorCSAgeWVzLCopIGVuYWJsZV9zdGF0aWM9bm8gOzsJIyBzaGFyZWQgb2JqZWN0IGluIGxpYi5hIGFyY2hpdmUgYXMgd2VsbAorCSAgZXNhYwogCWZpCiAgICAgICAgIDs7CiAgICAgZXNhYwpAQCAtNzI3MywxMSArNzc3MywxMSBAQAogCiAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXNdKQogICAgICMgTWFrZSBzdXJlIGVpdGhlciBlbmFibGVfc2hhcmVkIG9yIGVuYWJsZV9zdGF0aWMgaXMgeWVzLgotICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyB8fCBlbmFibGVfc3RhdGljPXllcworICAgIHRlc3QgeWVzID0gIiRlbmFibGVfc2hhcmVkIiB8fCBlbmFibGVfc3RhdGljPXllcwogICAgIEFDX01TR19SRVNVTFQoWyRlbmFibGVfc3RhdGljXSkKIAotICAgIF9MVF9UQUdWQVIoR0NDLCAkMSk9IiRHNzciCi0gICAgX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCisgICAgX0xUX1RBR1ZBUihHQ0MsICQxKT0kRzc3CisgICAgX0xUX1RBR1ZBUihMRCwgJDEpPSRMRAogCiAgICAgIyMgQ0FWRUFUIEVNUFRPUjoKICAgICAjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQpAQCAtNzI5NCw5ICs3Nzk0LDkgQEAKICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCiAKICAgR0NDPSRsdF9zYXZlX0dDQwotICBDQz0iJGx0X3NhdmVfQ0MiCi0gIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXMKKyAgQ0M9JGx0X3NhdmVfQ0MKKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworZmkgIyB0ZXN0IHllcyAhPSAiJF9sdF9kaXNhYmxlX0Y3NyIKIAogQUNfTEFOR19QT1AKIF0pIyBfTFRfTEFOR19GNzdfQ09ORklHCkBAIC03MzA2LDExICs3ODA2LDExIEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEZvcnRyYW4gY29tcGlsZXIgYXJlCiAjIHN1aXRhYmx5IGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcKLSMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byAnbGlidG9vbCcuCiBtNF9kZWZ1bihbX0xUX0xBTkdfRkNfQ09ORklHXSwKIFtBQ19MQU5HX1BVU0goRm9ydHJhbikKIAotaWYgdGVzdCAteiAiJEZDIiB8fCB0ZXN0ICJYJEZDIiA9ICJYbm8iOyB0aGVuCitpZiB0ZXN0IC16ICIkRkMiIHx8IHRlc3Qgbm8gPSAiJEZDIjsgdGhlbgogICBfbHRfZGlzYWJsZV9GQz15ZXMKIGZpCiAKQEAgLTczNDcsNyArNzg0Nyw3IEBACiAjIHRoZSBGQyBjb21waWxlciBpc24ndCB3b3JraW5nLiAgU29tZSB2YXJpYWJsZXMgKGxpa2UgZW5hYmxlX3NoYXJlZCkKICMgYXJlIGN1cnJlbnRseSBhc3N1bWVkIHRvIGFwcGx5IHRvIGFsbCBjb21waWxlcnMgb24gdGhpcyBwbGF0Zm9ybSwKICMgYW5kIHdpbGwgYmUgY29ycnVwdGVkIGJ5IHNldHRpbmcgdGhlbSBiYXNlZCBvbiBhIG5vbi13b3JraW5nIGNvbXBpbGVyLgotaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzICE9ICIkX2x0X2Rpc2FibGVfRkMiOyB0aGVuCiAgICMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCiAgIGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0iXAogICAgICAgc3Vicm91dGluZSB0CkBAIC03MzY5LDcgKzc4NjksNyBAQAogICBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCiAKICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSAgbHRfc2F2ZV9DQz0iJENDIgorICBsdF9zYXZlX0NDPSRDQwogICBsdF9zYXZlX0dDQz0kR0NDCiAgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKICAgQ0M9JHtGQy0iZjk1In0KQEAgLTczODUsMjEgKzc4ODUsMjUgQEAKICAgICBBQ19NU0dfUkVTVUxUKFskY2FuX2J1aWxkX3NoYXJlZF0pCiAKICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllc10pCi0gICAgdGVzdCAiJGNhbl9idWlsZF9zaGFyZWQiID0gIm5vIiAmJiBlbmFibGVfc2hhcmVkPW5vCisgICAgdGVzdCBubyA9ICIkY2FuX2J1aWxkX3NoYXJlZCIgJiYgZW5hYmxlX3NoYXJlZD1ubwogCiAgICAgIyBPbiBBSVgsIHNoYXJlZCBsaWJyYXJpZXMgYW5kIHN0YXRpYyBsaWJyYXJpZXMgdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSwgYW5kCiAgICAgIyBhcmUgYWxsIGJ1aWx0IGZyb20gUElDLgogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgIGFpeDMqKQotICAgICAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworICAgICAgICB0ZXN0IHllcyA9ICIkZW5hYmxlX3NoYXJlZCIgJiYgZW5hYmxlX3N0YXRpYz1ubwogICAgICAgICBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgogICAgICAgICAgIGFyY2hpdmVfY21kcz0iJGFyY2hpdmVfY21kc35cJFJBTkxJQiBcJGxpYiIKICAgICAgICAgICBwb3N0aW5zdGFsbF9jbWRzPSckUkFOTElCICRsaWInCiAgICAgICAgIGZpCiAgICAgICAgIDs7CiAgICAgICBhaXhbWzQtOV1dKikKLQlpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQgJiYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0gbm8gOyB0aGVuCi0JICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworCWlmIHRlc3QgaWE2NCAhPSAiJGhvc3RfY3B1IjsgdGhlbgorCSAgY2FzZSAkZW5hYmxlX3NoYXJlZCwkd2l0aF9haXhfc29uYW1lLCRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIGluCisJICB5ZXMsYWl4LHllcykgOzsJCSMgc2hhcmVkIG9iamVjdCBhcyBsaWIuc28gZmlsZSBvbmx5CisJICB5ZXMsc3ZyNCwqKSA7OwkJIyBzaGFyZWQgb2JqZWN0IGFzIGxpYi5zbyBhcmNoaXZlIG1lbWJlciBvbmx5CisJICB5ZXMsKikgZW5hYmxlX3N0YXRpYz1ubyA7OwkjIHNoYXJlZCBvYmplY3QgaW4gbGliLmEgYXJjaGl2ZSBhcyB3ZWxsCisJICBlc2FjCiAJZmkKICAgICAgICAgOzsKICAgICBlc2FjCkBAIC03NDA3LDExICs3OTExLDExIEBACiAKICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllc10pCiAgICAgIyBNYWtlIHN1cmUgZWl0aGVyIGVuYWJsZV9zaGFyZWQgb3IgZW5hYmxlX3N0YXRpYyBpcyB5ZXMuCi0gICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzIHx8IGVuYWJsZV9zdGF0aWM9eWVzCisgICAgdGVzdCB5ZXMgPSAiJGVuYWJsZV9zaGFyZWQiIHx8IGVuYWJsZV9zdGF0aWM9eWVzCiAgICAgQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zdGF0aWNdKQogCi0gICAgX0xUX1RBR1ZBUihHQ0MsICQxKT0iJGFjX2N2X2ZjX2NvbXBpbGVyX2dudSIKLSAgICBfTFRfVEFHVkFSKExELCAkMSk9IiRMRCIKKyAgICBfTFRfVEFHVkFSKEdDQywgJDEpPSRhY19jdl9mY19jb21waWxlcl9nbnUKKyAgICBfTFRfVEFHVkFSKExELCAkMSk9JExECiAKICAgICAjIyBDQVZFQVQgRU1QVE9SOgogICAgICMjIFRoZXJlIGlzIG5vIGVuY2Fwc3VsYXRpb24gd2l0aGluIHRoZSBmb2xsb3dpbmcgbWFjcm9zLCBkbyBub3QgY2hhbmdlCkBAIC03NDMxLDcgKzc5MzUsNyBAQAogICBHQ0M9JGx0X3NhdmVfR0NDCiAgIENDPSRsdF9zYXZlX0NDCiAgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLWZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXMKK2ZpICMgdGVzdCB5ZXMgIT0gIiRfbHRfZGlzYWJsZV9GQyIKIAogQUNfTEFOR19QT1AKIF0pIyBfTFRfTEFOR19GQ19DT05GSUcKQEAgLTc0NDEsNyArNzk0NSw3IEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgdGhlIEdOVSBKYXZhIENvbXBpbGVyIGNvbXBpbGVyCiAjIGFyZSBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCi0jIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KKyMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gJ2xpYnRvb2wnLgogbTRfZGVmdW4oW19MVF9MQU5HX0dDSl9DT05GSUddLAogW0FDX1JFUVVJUkUoW0xUX1BST0dfR0NKXSlkbmwKIEFDX0xBTkdfU0FWRQpAQCAtNzQ3NSw3ICs3OTc5LDcgQEAKIENGTEFHUz0kR0NKRkxBR1MKIGNvbXBpbGVyPSRDQwogX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwotX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCitfTFRfVEFHVkFSKExELCAkMSk9JExECiBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCiAKICMgR0NKIGRpZCBub3QgZXhpc3QgYXQgdGhlIHRpbWUgR0NDIGRpZG4ndCBpbXBsaWNpdGx5IGxpbmsgbGliYyBpbi4KQEAgLTc1MTIsNyArODAxNiw3IEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgdGhlIEdOVSBHbyBjb21waWxlcgogIyBhcmUgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRwotIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCisjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvICdsaWJ0b29sJy4KIG00X2RlZnVuKFtfTFRfTEFOR19HT19DT05GSUddLAogW0FDX1JFUVVJUkUoW0xUX1BST0dfR09dKWRubAogQUNfTEFOR19TQVZFCkBAIC03NTQ2LDcgKzgwNTAsNyBAQAogQ0ZMQUdTPSRHT0ZMQUdTCiBjb21waWxlcj0kQ0MKIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLV9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgorX0xUX1RBR1ZBUihMRCwgJDEpPSRMRAogX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQogCiAjIEdvIGRpZCBub3QgZXhpc3QgYXQgdGhlIHRpbWUgR0NDIGRpZG4ndCBpbXBsaWNpdGx5IGxpbmsgbGliYyBpbi4KQEAgLTc1ODMsNyArODA4Nyw3IEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciB0aGUgV2luZG93cyByZXNvdXJjZSBjb21waWxlcgogIyBhcmUgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRwotIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCisjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvICdsaWJ0b29sJy4KIG00X2RlZnVuKFtfTFRfTEFOR19SQ19DT05GSUddLAogW0FDX1JFUVVJUkUoW0xUX1BST0dfUkNdKWRubAogQUNfTEFOR19TQVZFCkBAIC03NTk5LDcgKzgxMDMsNyBAQAogbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSdzYW1wbGUgTUVOVSB7IE1FTlVJVEVNICImU291cCIsIDEwMCwgQ0hFQ0tFRCB9JwogCiAjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgbGluayB0ZXN0cwotbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlPSIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIgorbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlPSRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUKIAogIyBsdG1haW4gb25seSB1c2VzICRDQyBmb3IgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIHNvIG1ha2Ugc3VyZSAkQ0MgaXMgc2V0LgogX0xUX1RBR19DT01QSUxFUgpAQCAtNzYwOSw3ICs4MTEzLDcgQEAKIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKIAogIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLWx0X3NhdmVfQ0M9IiRDQyIKK2x0X3NhdmVfQ0M9JENDCiBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiBsdF9zYXZlX0dDQz0kR0NDCiBHQ0M9CkBAIC03NjM4LDcgKzgxNDIsNyBAQAogW200X2lmZGVmKFtBQ19QUk9HX0dDSl0sIFtBQ19QUk9HX0dDSl0sCiAgIFttNF9pZmRlZihbQV1bTV9QUk9HX0dDSl0sIFtBXVtNX1BST0dfR0NKXSwKICAgICBbQUNfQ0hFQ0tfVE9PTChHQ0osIGdjaiwpCi0gICAgICB0ZXN0ICJ4JHtHQ0pGTEFHUytzZXR9IiA9IHhzZXQgfHwgR0NKRkxBR1M9Ii1nIC1PMiIKKyAgICAgIHRlc3Qgc2V0ID0gIiR7R0NKRkxBR1Mrc2V0fSIgfHwgR0NKRkxBR1M9Ii1nIC1PMiIKICAgICAgIEFDX1NVQlNUKEdDSkZMQUdTKV0pXSlbXWRubAogXSkKIApAQCAtNzc0OSw3ICs4MjUzLDcgQEAKICMgQWRkIC91c3IveHBnNC9iaW4vc2VkIGFzIGl0IGlzIHR5cGljYWxseSBmb3VuZCBvbiBTb2xhcmlzCiAjIGFsb25nIHdpdGggL2Jpbi9zZWQgdGhhdCB0cnVuY2F0ZXMgb3V0cHV0LgogZm9yIGx0X2FjX3NlZCBpbiAkbHRfYWNfc2VkX2xpc3QgL3Vzci94cGc0L2Jpbi9zZWQ7IGRvCi0gIHRlc3QgISAtZiAkbHRfYWNfc2VkICYmIGNvbnRpbnVlCisgIHRlc3QgISAtZiAiJGx0X2FjX3NlZCIgJiYgY29udGludWUKICAgY2F0IC9kZXYvbnVsbCA+IGNvbmZ0ZXN0LmluCiAgIGx0X2FjX2NvdW50PTAKICAgZWNobyAkRUNIT19OICIwMTIzNDU2Nzg5JEVDSE9fQyIgPmNvbmZ0ZXN0LmluCkBAIC03NzY2LDkgKzgyNzAsOSBAQAogICAgICRsdF9hY19zZWQgLWUgJ3MvYSQvLycgPCBjb25mdGVzdC5ubCA+Y29uZnRlc3Qub3V0IHx8IGJyZWFrCiAgICAgY21wIC1zIGNvbmZ0ZXN0Lm91dCBjb25mdGVzdC5ubCB8fCBicmVhawogICAgICMgMTAwMDAgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAotICAgIHRlc3QgJGx0X2FjX2NvdW50IC1ndCAxMCAmJiBicmVhaworICAgIHRlc3QgMTAgLWx0ICIkbHRfYWNfY291bnQiICYmIGJyZWFrCiAgICAgbHRfYWNfY291bnQ9YGV4cHIgJGx0X2FjX2NvdW50ICsgMWAKLSAgICBpZiB0ZXN0ICRsdF9hY19jb3VudCAtZ3QgJGx0X2FjX21heDsgdGhlbgorICAgIGlmIHRlc3QgIiRsdF9hY19jb3VudCIgLWd0ICIkbHRfYWNfbWF4IjsgdGhlbgogICAgICAgbHRfYWNfbWF4PSRsdF9hY19jb3VudAogICAgICAgbHRfY3ZfcGF0aF9TRUQ9JGx0X2FjX3NlZAogICAgIGZpCkBAIC03NzkyLDI3ICs4Mjk2LDcgQEAKICMgRmluZCBvdXQgd2hldGhlciB0aGUgc2hlbGwgaXMgQm91cm5lIG9yIFhTSSBjb21wYXRpYmxlLAogIyBvciBoYXMgc29tZSBvdGhlciB1c2VmdWwgZmVhdHVyZXMuCiBtNF9kZWZ1bihbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSwKLVtBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHNdKQotIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLXhzaV9zaGVsbD1ubwotKCBfbHRfZHVtbXk9ImEvYi9jIgotICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgJiYgeHNpX3NoZWxsPXllcwotQUNfTVNHX1JFU1VMVChbJHhzaV9zaGVsbF0pCi1fTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbeHNpX3NoZWxsPSckeHNpX3NoZWxsJ10pCi0KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgIis9Il0pCi1sdF9zaGVsbF9hcHBlbmQ9bm8KLSggZm9vPWJhcjsgc2V0IGZvbyBiYXo7IGV2YWwgIiRbMV0rPVwkWzJdIiAmJiB0ZXN0ICIkZm9vIiA9IGJhcmJheiApIFwKLSAgICA+L2Rldi9udWxsIDI+JjEgXAotICAmJiBsdF9zaGVsbF9hcHBlbmQ9eWVzCi1BQ19NU0dfUkVTVUxUKFskbHRfc2hlbGxfYXBwZW5kXSkKLV9MVF9DT05GSUdfTElCVE9PTF9JTklUKFtsdF9zaGVsbF9hcHBlbmQ9JyRsdF9zaGVsbF9hcHBlbmQnXSkKLQotaWYgKCAoTUFJTD02MDsgdW5zZXQgTUFJTCkgfHwgZXhpdCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCitbaWYgKCAoTUFJTD02MDsgdW5zZXQgTUFJTCkgfHwgZXhpdCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgIGx0X3Vuc2V0PXVuc2V0CiBlbHNlCiAgIGx0X3Vuc2V0PWZhbHNlCkBAIC03ODM2LDEwMiArODMyMCw5IEBACiBdKSMgX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTCiAKIAotIyBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFIChGVU5DTkFNRSwgUkVQTEFDRU1FTlQtQk9EWSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEluIGAkY2ZnZmlsZScsIGxvb2sgZm9yIGZ1bmN0aW9uIEZVTkNOQU1FIGRlbGltaXRlZCBieSBgXkZVTkNOQU1FICgpJCcgYW5kCi0jICdefSBGVU5DTkFNRSAnLCBhbmQgcmVwbGFjZSBpdHMgYm9keSB3aXRoIFJFUExBQ0VNRU5ULUJPRFkuCi1tNF9kZWZ1bihbX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRV0sCi1bZG5sIHsKLXNlZCAtZSAnL14kMSAoKSQvLC9efSAjICQxIC9jXAotJDEgKClcCi17XAotbTRfYnBhdHN1YnN0cyhbJDJdLCBbJF0sIFtcXF0sIFteXChbCSBdXCldLCBbXFxcMV0pCi19ICMgRXh0ZW5kZWQtc2hlbGwgJDEgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLV0pCi0KLQotIyBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUmVwbGFjZSBleGlzdGluZyBwb3J0YWJsZSBpbXBsZW1lbnRhdGlvbnMgb2Ygc2V2ZXJhbCBzaGVsbCBmdW5jdGlvbnMgd2l0aAotIyBlcXVpdmFsZW50IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9ucyB3aGVyZSB0aG9zZSBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLi4KLW00X2RlZnVuKFtfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TXSwKLVtpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0gIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV0sIFtkbmwKLSAgICBjYXNlICR7MX0gaW4KLSAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0gICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0gICAgZXNhY10pCi0KLSAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19iYXNlbmFtZV0sIFtkbmwKLSAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKLQotICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lXSwgW2RubAotICAgIGNhc2UgJHsxfSBpbgotICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSAgICBlc2FjCi0gICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCi0KLSAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zdHJpcG5hbWVdLCBbZG5sCi0gICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLSAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0gICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1dKQotCi0gIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfbG9uZ19vcHRdLCBbZG5sCi0gICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9Ci0gICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fV0pCi0KLSAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9zaG9ydF9vcHRdLCBbZG5sCi0gICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P30KLSAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XSkKLQotICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xvMm9dLCBbZG5sCi0gICAgY2FzZSAkezF9IGluCi0gICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0gICAgZXNhY10pCi0KLSAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY194Zm9ybV0sIFsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb10pCi0KLSAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcml0aF0sIFsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSldKQotCi0gIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbGVuXSwgWyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1dKQotZmkKLQotaWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF0sIFsgICAgZXZhbCAiJHsxfSs9XFwkezJ9Il0pCi0KLSAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRfcXVvdGVkXSwgW2RubAotICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCi1kbmwgbTQgZXhwYW5zaW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHRoZW4gdGhlIHNoZWxsIGV2YWwgdHVybnMgdGhhdCBpbnRvIFwKLSAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0Il0pCi0KLSAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLWVsc2UKLSAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLWZpCi0KLWlmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0gIEFDX01TR19XQVJOKFtVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlXSkKLWZpCi1dKQotCiAjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIERldGVybWluZSB3aGljaCBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQgYnkKKyMgRGV0ZXJtaW5lIHdoYXQgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkIGJ5CiAjIGZ1bmNfdG9faG9zdF9maWxlIChhbmQsIGltcGxpY2l0bHksIGJ5IGZ1bmNfdG9faG9zdF9wYXRoKS4gIFRoZXNlIGFyZSBuZWVkZWQKICMgZm9yIGNlcnRhaW4gY3Jvc3MtY29tcGlsZSBjb25maWd1cmF0aW9ucyBhbmQgbmF0aXZlIG1pbmd3LgogbTRfZGVmdW4oW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSwKZGlmZiAtLWdpdCBhL200L2x0b3B0aW9ucy5tNCBiL200L2x0b3B0aW9ucy5tNAppbmRleCA1ZDlhY2Q4Li45NGIwODI5IDEwMDY0NAotLS0gYS9tNC9sdG9wdGlvbnMubTQKKysrIGIvbTQvbHRvcHRpb25zLm00CkBAIC0xLDE0ICsxLDE0IEBACiAjIEhlbHBlciBmdW5jdGlvbnMgZm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KICMKLSMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIyAgIEluYy4KKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNSwgMjAwNy0yMDA5LCAyMDExLTIwMTUgRnJlZSBTb2Z0d2FyZQorIyAgIEZvdW5kYXRpb24sIEluYy4KICMgICBXcml0dGVuIGJ5IEdhcnkgVi4gVmF1Z2hhbiwgMjAwNAogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwogIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgc2VyaWFsIDcgbHRvcHRpb25zLm00CisjIHNlcmlhbCA4IGx0b3B0aW9ucy5tNAogCiAjIFRoaXMgaXMgdG8gaGVscCBhY2xvY2FsIGZpbmQgdGhlc2UgbWFjcm9zLCBhcyBpdCBjYW4ndCBzZWUgbTRfZGVmaW5lLgogQUNfREVGVU4oW0xUT1BUSU9OU19WRVJTSU9OXSwgW200X2lmKFsxXSldKQpAQCAtMjksNyArMjksNyBAQAogW200X2RlZmluZShfTFRfTUFOR0xFX09QVElPTihbJDFdLCBbJDJdKSlkbmwKIG00X2lmZGVmKF9MVF9NQU5HTEVfREVGVU4oWyQxXSwgWyQyXSksCiAgICAgICAgIF9MVF9NQU5HTEVfREVGVU4oWyQxXSwgWyQyXSksCi0gICAgW200X3dhcm5pbmcoW1Vua25vd24gJDEgb3B0aW9uIGAkMiddKV0pW11kbmwKKyAgICBbbTRfd2FybmluZyhbVW5rbm93biAkMSBvcHRpb24gJyQyJ10pXSlbXWRubAogXSkKIAogCkBAIC03NSwxMyArNzUsMTUgQEAKICAgZG5sCiAgIGRubCBJZiBubyByZWZlcmVuY2Ugd2FzIG1hZGUgdG8gdmFyaW91cyBwYWlycyBvZiBvcHBvc2luZyBvcHRpb25zLCB0aGVuCiAgIGRubCB3ZSBydW4gdGhlIGRlZmF1bHQgbW9kZSBoYW5kbGVyIGZvciB0aGUgcGFpci4gIEZvciBleGFtcGxlLCBpZiBuZWl0aGVyCi0gIGRubCBgc2hhcmVkJyBub3IgYGRpc2FibGUtc2hhcmVkJyB3YXMgcGFzc2VkLCB3ZSBlbmFibGUgYnVpbGRpbmcgb2Ygc2hhcmVkCisgIGRubCAnc2hhcmVkJyBub3IgJ2Rpc2FibGUtc2hhcmVkJyB3YXMgcGFzc2VkLCB3ZSBlbmFibGUgYnVpbGRpbmcgb2Ygc2hhcmVkCiAgIGRubCBhcmNoaXZlcyBieSBkZWZhdWx0OgogICBfTFRfVU5MRVNTX09QVElPTlMoW0xUX0lOSVRdLCBbc2hhcmVkIGRpc2FibGUtc2hhcmVkXSwgW19MVF9FTkFCTEVfU0hBUkVEXSkKICAgX0xUX1VOTEVTU19PUFRJT05TKFtMVF9JTklUXSwgW3N0YXRpYyBkaXNhYmxlLXN0YXRpY10sIFtfTFRfRU5BQkxFX1NUQVRJQ10pCiAgIF9MVF9VTkxFU1NfT1BUSU9OUyhbTFRfSU5JVF0sIFtwaWMtb25seSBuby1waWNdLCBbX0xUX1dJVEhfUElDXSkKICAgX0xUX1VOTEVTU19PUFRJT05TKFtMVF9JTklUXSwgW2Zhc3QtaW5zdGFsbCBkaXNhYmxlLWZhc3QtaW5zdGFsbF0sCi0gIAkJICAgW19MVF9FTkFCTEVfRkFTVF9JTlNUQUxMXSkKKwkJICAgW19MVF9FTkFCTEVfRkFTVF9JTlNUQUxMXSkKKyAgX0xUX1VOTEVTU19PUFRJT05TKFtMVF9JTklUXSwgW2FpeC1zb25hbWU9YWl4IGFpeC1zb25hbWU9Ym90aCBhaXgtc29uYW1lPXN2cjRdLAorCQkgICBbX0xUX1dJVEhfQUlYX1NPTkFNRShbYWl4XSldKQogICBdKQogXSkjIF9MVF9TRVRfT1BUSU9OUwogCkBAIC0xMTIsNyArMTE0LDcgQEAKIFtfTFRfU0VUX09QVElPTihbTFRfSU5JVF0sIFtkbG9wZW5dKQogQUNfRElBR05PU0UoW29ic29sZXRlXSwKIFskMDogUmVtb3ZlIHRoaXMgd2FybmluZyBhbmQgdGhlIGNhbGwgdG8gX0xUX1NFVF9PUFRJT04gd2hlbiB5b3UKLXB1dCB0aGUgYGRsb3Blbicgb3B0aW9uIGludG8gTFRfSU5JVCdzIGZpcnN0IHBhcmFtZXRlci5dKQorcHV0IHRoZSAnZGxvcGVuJyBvcHRpb24gaW50byBMVF9JTklUJ3MgZmlyc3QgcGFyYW1ldGVyLl0pCiBdKQogCiBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CkBAIC0xNDgsNyArMTUwLDcgQEAKIF9MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgW3dpbjMyLWRsbF0pCiBBQ19ESUFHTk9TRShbb2Jzb2xldGVdLAogWyQwOiBSZW1vdmUgdGhpcyB3YXJuaW5nIGFuZCB0aGUgY2FsbCB0byBfTFRfU0VUX09QVElPTiB3aGVuIHlvdQotcHV0IHRoZSBgd2luMzItZGxsJyBvcHRpb24gaW50byBMVF9JTklUJ3MgZmlyc3QgcGFyYW1ldGVyLl0pCitwdXQgdGhlICd3aW4zMi1kbGwnIG9wdGlvbiBpbnRvIExUX0lOSVQncyBmaXJzdCBwYXJhbWV0ZXIuXSkKIF0pCiAKIGRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKQEAgLTE1Nyw5ICsxNTksOSBAQAogCiAjIF9MVF9FTkFCTEVfU0hBUkVEKFtERUZBVUxUXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBpbXBsZW1lbnQgdGhlIC0tZW5hYmxlLXNoYXJlZCBmbGFnLCBhbmQgc3VwcG9ydHMgdGhlIGBzaGFyZWQnIGFuZAotIyBgZGlzYWJsZS1zaGFyZWQnIExUX0lOSVQgb3B0aW9ucy4KLSMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgorIyBpbXBsZW1lbnQgdGhlIC0tZW5hYmxlLXNoYXJlZCBmbGFnLCBhbmQgc3VwcG9ydHMgdGhlICdzaGFyZWQnIGFuZAorIyAnZGlzYWJsZS1zaGFyZWQnIExUX0lOSVQgb3B0aW9ucy4KKyMgREVGQVVMVCBpcyBlaXRoZXIgJ3llcycgb3IgJ25vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvICd5ZXMnLgogbTRfZGVmaW5lKFtfTFRfRU5BQkxFX1NIQVJFRF0sCiBbbTRfZGVmaW5lKFtfTFRfRU5BQkxFX1NIQVJFRF9ERUZBVUxUXSwgW200X2lmKCQxLCBubywgbm8sIHllcyldKWRubAogQUNfQVJHX0VOQUJMRShbc2hhcmVkXSwKQEAgLTE3MiwxNCArMTc0LDE0IEBACiAgICAgKikKICAgICAgIGVuYWJsZV9zaGFyZWQ9bm8KICAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgbHRfc2F2ZV9pZnM9JElGUzsgSUZTPSRJRlMkUEFUSF9TRVBBUkFUT1IsCiAgICAgICBmb3IgcGtnIGluICRlbmFibGV2YWw7IGRvCi0JSUZTPSIkbHRfc2F2ZV9pZnMiCisJSUZTPSRsdF9zYXZlX2lmcwogCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCiAJICBlbmFibGVfc2hhcmVkPXllcwogCWZpCiAgICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKICAgICAgIDs7CiAgICAgZXNhY10sCiAgICAgW2VuYWJsZV9zaGFyZWQ9XV9MVF9FTkFCTEVfU0hBUkVEX0RFRkFVTFQpCkBAIC0yMTEsOSArMjEzLDkgQEAKIAogIyBfTFRfRU5BQkxFX1NUQVRJQyhbREVGQVVMVF0pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1zdGF0aWMgZmxhZywgYW5kIHN1cHBvcnQgdGhlIGBzdGF0aWMnIGFuZAotIyBgZGlzYWJsZS1zdGF0aWMnIExUX0lOSVQgb3B0aW9ucy4KLSMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgorIyBpbXBsZW1lbnQgdGhlIC0tZW5hYmxlLXN0YXRpYyBmbGFnLCBhbmQgc3VwcG9ydCB0aGUgJ3N0YXRpYycgYW5kCisjICdkaXNhYmxlLXN0YXRpYycgTFRfSU5JVCBvcHRpb25zLgorIyBERUZBVUxUIGlzIGVpdGhlciAneWVzJyBvciAnbm8nLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gJ3llcycuCiBtNF9kZWZpbmUoW19MVF9FTkFCTEVfU1RBVElDXSwKIFttNF9kZWZpbmUoW19MVF9FTkFCTEVfU1RBVElDX0RFRkFVTFRdLCBbbTRfaWYoJDEsIG5vLCBubywgeWVzKV0pZG5sCiBBQ19BUkdfRU5BQkxFKFtzdGF0aWNdLApAQCAtMjI2LDE0ICsyMjgsMTQgQEAKICAgICAqKQogICAgICBlbmFibGVfc3RhdGljPW5vCiAgICAgICAjIExvb2sgYXQgdGhlIGFyZ3VtZW50IHdlIGdvdC4gIFdlIHVzZSBhbGwgdGhlIGNvbW1vbiBsaXN0IHNlcGFyYXRvcnMuCi0gICAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKKyAgICAgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kSUZTJFBBVEhfU0VQQVJBVE9SLAogICAgICAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBkbwotCUlGUz0iJGx0X3NhdmVfaWZzIgorCUlGUz0kbHRfc2F2ZV9pZnMKIAlpZiB0ZXN0ICJYJHBrZyIgPSAiWCRwIjsgdGhlbgogCSAgZW5hYmxlX3N0YXRpYz15ZXMKIAlmaQogICAgICAgZG9uZQotICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgICBJRlM9JGx0X3NhdmVfaWZzCiAgICAgICA7OwogICAgIGVzYWNdLAogICAgIFtlbmFibGVfc3RhdGljPV1fTFRfRU5BQkxFX1NUQVRJQ19ERUZBVUxUKQpAQCAtMjY1LDkgKzI2Nyw5IEBACiAKICMgX0xUX0VOQUJMRV9GQVNUX0lOU1RBTEwoW0RFRkFVTFRdKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGltcGxlbWVudCB0aGUgLS1lbmFibGUtZmFzdC1pbnN0YWxsIGZsYWcsIGFuZCBzdXBwb3J0IHRoZSBgZmFzdC1pbnN0YWxsJwotIyBhbmQgYGRpc2FibGUtZmFzdC1pbnN0YWxsJyBMVF9JTklUIG9wdGlvbnMuCi0jIERFRkFVTFQgaXMgZWl0aGVyIGB5ZXMnIG9yIGBubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgeWVzJy4KKyMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1mYXN0LWluc3RhbGwgZmxhZywgYW5kIHN1cHBvcnQgdGhlICdmYXN0LWluc3RhbGwnCisjIGFuZCAnZGlzYWJsZS1mYXN0LWluc3RhbGwnIExUX0lOSVQgb3B0aW9ucy4KKyMgREVGQVVMVCBpcyBlaXRoZXIgJ3llcycgb3IgJ25vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvICd5ZXMnLgogbTRfZGVmaW5lKFtfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTF0sCiBbbTRfZGVmaW5lKFtfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTF9ERUZBVUxUXSwgW200X2lmKCQxLCBubywgbm8sIHllcyldKWRubAogQUNfQVJHX0VOQUJMRShbZmFzdC1pbnN0YWxsXSwKQEAgLTI4MCwxNCArMjgyLDE0IEBACiAgICAgKikKICAgICAgIGVuYWJsZV9mYXN0X2luc3RhbGw9bm8KICAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgbHRfc2F2ZV9pZnM9JElGUzsgSUZTPSRJRlMkUEFUSF9TRVBBUkFUT1IsCiAgICAgICBmb3IgcGtnIGluICRlbmFibGV2YWw7IGRvCi0JSUZTPSIkbHRfc2F2ZV9pZnMiCisJSUZTPSRsdF9zYXZlX2lmcwogCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCiAJICBlbmFibGVfZmFzdF9pbnN0YWxsPXllcwogCWZpCiAgICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKICAgICAgIDs7CiAgICAgZXNhY10sCiAgICAgW2VuYWJsZV9mYXN0X2luc3RhbGw9XV9MVF9FTkFCTEVfRkFTVF9JTlNUQUxMX0RFRkFVTFQpCkBAIC0zMDQsMTQgKzMwNiwxNCBAQAogW19MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgbTRfaWYoWyQxXSwgW25vXSwgW2Rpc2FibGUtXSlbZmFzdC1pbnN0YWxsXSkKIEFDX0RJQUdOT1NFKFtvYnNvbGV0ZV0sCiBbJDA6IFJlbW92ZSB0aGlzIHdhcm5pbmcgYW5kIHRoZSBjYWxsIHRvIF9MVF9TRVRfT1BUSU9OIHdoZW4geW91IHB1dAotdGhlIGBmYXN0LWluc3RhbGwnIG9wdGlvbiBpbnRvIExUX0lOSVQncyBmaXJzdCBwYXJhbWV0ZXIuXSkKK3RoZSAnZmFzdC1pbnN0YWxsJyBvcHRpb24gaW50byBMVF9JTklUJ3MgZmlyc3QgcGFyYW1ldGVyLl0pCiBdKQogCiBBVV9ERUZVTihbQUNfRElTQUJMRV9GQVNUX0lOU1RBTExdLAogW19MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgW2Rpc2FibGUtZmFzdC1pbnN0YWxsXSkKIEFDX0RJQUdOT1NFKFtvYnNvbGV0ZV0sCiBbJDA6IFJlbW92ZSB0aGlzIHdhcm5pbmcgYW5kIHRoZSBjYWxsIHRvIF9MVF9TRVRfT1BUSU9OIHdoZW4geW91IHB1dAotdGhlIGBkaXNhYmxlLWZhc3QtaW5zdGFsbCcgb3B0aW9uIGludG8gTFRfSU5JVCdzIGZpcnN0IHBhcmFtZXRlci5dKQordGhlICdkaXNhYmxlLWZhc3QtaW5zdGFsbCcgb3B0aW9uIGludG8gTFRfSU5JVCdzIGZpcnN0IHBhcmFtZXRlci5dKQogXSkKIAogZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgpAQCAtMzE5LDExICszMjEsNjQgQEAKIGRubCBBQ19ERUZVTihbQU1fRElTQUJMRV9GQVNUX0lOU1RBTExdLCBbXSkKIAogCisjIF9MVF9XSVRIX0FJWF9TT05BTUUoW0RFRkFVTFRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGltcGxlbWVudCB0aGUgLS13aXRoLWFpeC1zb25hbWUgZmxhZywgYW5kIHN1cHBvcnQgdGhlIGBhaXgtc29uYW1lPWFpeCcKKyMgYW5kIGBhaXgtc29uYW1lPWJvdGgnIGFuZCBgYWl4LXNvbmFtZT1zdnI0JyBMVF9JTklUIG9wdGlvbnMuIERFRkFVTFQKKyMgaXMgZWl0aGVyIGBhaXgnLCBgYm90aCcgb3IgYHN2cjQnLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGFpeCcuCittNF9kZWZpbmUoW19MVF9XSVRIX0FJWF9TT05BTUVdLAorW200X2RlZmluZShbX0xUX1dJVEhfQUlYX1NPTkFNRV9ERUZBVUxUXSwgW200X2lmKCQxLCBzdnI0LCBzdnI0LCBtNF9pZigkMSwgYm90aCwgYm90aCwgYWl4KSldKWRubAorc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWM9CitjYXNlICRob3N0LCRlbmFibGVfc2hhcmVkIGluCitwb3dlciotKi1haXhbWzUtOV1dKix5ZXMpCisgIEFDX01TR19DSEVDS0lORyhbd2hpY2ggdmFyaWFudCBvZiBzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIHRvIHByb3ZpZGVdKQorICBBQ19BUkdfV0lUSChbYWl4LXNvbmFtZV0sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtYWl4LXNvbmFtZT1haXh8c3ZyNHxib3RoXSwKKyAgICAgIFtzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIChha2EgIlNPTkFNRSIpIHZhcmlhbnQgdG8gcHJvdmlkZSBvbiBBSVgsIEA8OkBkZWZhdWx0PV1fTFRfV0lUSF9BSVhfU09OQU1FX0RFRkFVTFRbQDo+QC5dKV0sCisgICAgW2Nhc2UgJHdpdGh2YWwgaW4KKyAgICBhaXh8c3ZyNHxib3RoKQorICAgICAgOzsKKyAgICAqKQorICAgICAgQUNfTVNHX0VSUk9SKFtVbmtub3duIGFyZ3VtZW50IHRvIC0td2l0aC1haXgtc29uYW1lXSkKKyAgICAgIDs7CisgICAgZXNhYworICAgIGx0X2N2X3dpdGhfYWl4X3NvbmFtZT0kd2l0aF9haXhfc29uYW1lXSwKKyAgICBbQUNfQ0FDSEVfVkFMKFtsdF9jdl93aXRoX2FpeF9zb25hbWVdLAorICAgICAgW2x0X2N2X3dpdGhfYWl4X3NvbmFtZT1dX0xUX1dJVEhfQUlYX1NPTkFNRV9ERUZBVUxUKQorICAgIHdpdGhfYWl4X3NvbmFtZT0kbHRfY3Zfd2l0aF9haXhfc29uYW1lXSkKKyAgQUNfTVNHX1JFU1VMVChbJHdpdGhfYWl4X3NvbmFtZV0pCisgIGlmIHRlc3QgYWl4ICE9ICIkd2l0aF9haXhfc29uYW1lIjsgdGhlbgorICAgICMgRm9yIHRoZSBBSVggd2F5IG9mIG11bHRpbGliLCB3ZSBuYW1lIHRoZSBzaGFyZWQgYXJjaGl2ZSBtZW1iZXIKKyAgICAjIGJhc2VkIG9uIHRoZSBiaXR3aWR0aCB1c2VkLCB0cmFkaXRpb25hbGx5ICdzaHIubycgb3IgJ3Nocl82NC5vJywKKyAgICAjIGFuZCAnc2hyLmltcCcgb3IgJ3Nocl82NC5pbXAnLCByZXNwZWN0aXZlbHksIGZvciB0aGUgSW1wb3J0IEZpbGUuCisgICAgIyBFdmVuIHdoZW4gR05VIGNvbXBpbGVycyBpZ25vcmUgT0JKRUNUX01PREUgYnV0IG5lZWQgJy1tYWl4NjQnIGZsYWcsCisgICAgIyB0aGUgQUlYIHRvb2xjaGFpbiB3b3JrcyBiZXR0ZXIgd2l0aCBPQkpFQ1RfTU9ERSBzZXQgKGRlZmF1bHQgMzIpLgorICAgIGlmIHRlc3QgNjQgPSAiJHtPQkpFQ1RfTU9ERS0zMn0iOyB0aGVuCisgICAgICBzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYz1zaHJfNjQKKyAgICBlbHNlCisgICAgICBzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYz1zaHIKKyAgICBmaQorICBmaQorICA7OworKikKKyAgd2l0aF9haXhfc29uYW1lPWFpeAorICA7OworZXNhYworCitfTFRfREVDTChbXSwgW3NoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjXSwgWzBdLAorICAgIFtTaGFyZWQgYXJjaGl2ZSBtZW1iZXIgYmFzZW5hbWUsIGZvciBmaWxlbmFtZSBiYXNlZCBzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIG9uIEFJWF0pZG5sCitdKSMgX0xUX1dJVEhfQUlYX1NPTkFNRQorCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW2FpeC1zb25hbWU9YWl4XSwgW19MVF9XSVRIX0FJWF9TT05BTUUoW2FpeF0pXSkKK0xUX09QVElPTl9ERUZJTkUoW0xUX0lOSVRdLCBbYWl4LXNvbmFtZT1ib3RoXSwgW19MVF9XSVRIX0FJWF9TT05BTUUoW2JvdGhdKV0pCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW2FpeC1zb25hbWU9c3ZyNF0sIFtfTFRfV0lUSF9BSVhfU09OQU1FKFtzdnI0XSldKQorCisKICMgX0xUX1dJVEhfUElDKFtNT0RFXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgaW1wbGVtZW50IHRoZSAtLXdpdGgtcGljIGZsYWcsIGFuZCBzdXBwb3J0IHRoZSBgcGljLW9ubHknIGFuZCBgbm8tcGljJworIyBpbXBsZW1lbnQgdGhlIC0td2l0aC1waWMgZmxhZywgYW5kIHN1cHBvcnQgdGhlICdwaWMtb25seScgYW5kICduby1waWMnCiAjIExUX0lOSVQgb3B0aW9ucy4KLSMgTU9ERSBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBib3RoJy4KKyMgTU9ERSBpcyBlaXRoZXIgJ3llcycgb3IgJ25vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvICdib3RoJy4KIG00X2RlZmluZShbX0xUX1dJVEhfUElDXSwKIFtBQ19BUkdfV0lUSChbcGljXSwKICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1waWNAPDpAPVBLR1NAOj5AXSwKQEAgLTMzNCwxOSArMzg5LDE3IEBACiAgICAgKikKICAgICAgIHBpY19tb2RlPWRlZmF1bHQKICAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgbHRfc2F2ZV9pZnM9JElGUzsgSUZTPSRJRlMkUEFUSF9TRVBBUkFUT1IsCiAgICAgICBmb3IgbHRfcGtnIGluICR3aXRodmFsOyBkbwotCUlGUz0iJGx0X3NhdmVfaWZzIgorCUlGUz0kbHRfc2F2ZV9pZnMKIAlpZiB0ZXN0ICJYJGx0X3BrZyIgPSAiWCRsdF9wIjsgdGhlbgogCSAgcGljX21vZGU9eWVzCiAJZmkKICAgICAgIGRvbmUKLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgSUZTPSRsdF9zYXZlX2lmcwogICAgICAgOzsKICAgICBlc2FjXSwKLSAgICBbcGljX21vZGU9ZGVmYXVsdF0pCi0KLXRlc3QgLXogIiRwaWNfbW9kZSIgJiYgcGljX21vZGU9bTRfZGVmYXVsdChbJDFdLCBbZGVmYXVsdF0pCisgICAgW3BpY19tb2RlPW00X2RlZmF1bHQoWyQxXSwgW2RlZmF1bHRdKV0pCiAKIF9MVF9ERUNMKFtdLCBbcGljX21vZGVdLCBbMF0sIFtXaGF0IHR5cGUgb2Ygb2JqZWN0cyB0byBidWlsZF0pZG5sCiBdKSMgX0xUX1dJVEhfUElDCkBAIC0zNTksNyArNDEyLDcgQEAKIFtfTFRfU0VUX09QVElPTihbTFRfSU5JVF0sIFtwaWMtb25seV0pCiBBQ19ESUFHTk9TRShbb2Jzb2xldGVdLAogWyQwOiBSZW1vdmUgdGhpcyB3YXJuaW5nIGFuZCB0aGUgY2FsbCB0byBfTFRfU0VUX09QVElPTiB3aGVuIHlvdQotcHV0IHRoZSBgcGljLW9ubHknIG9wdGlvbiBpbnRvIExUX0lOSVQncyBmaXJzdCBwYXJhbWV0ZXIuXSkKK3B1dCB0aGUgJ3BpYy1vbmx5JyBvcHRpb24gaW50byBMVF9JTklUJ3MgZmlyc3QgcGFyYW1ldGVyLl0pCiBdKQogCiBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CmRpZmYgLS1naXQgYS9tNC9sdHN1Z2FyLm00IGIvbTQvbHRzdWdhci5tNAppbmRleCA5MDAwYTA1Li40OGJjOTM0IDEwMDY0NAotLS0gYS9tNC9sdHN1Z2FyLm00CisrKyBiL200L2x0c3VnYXIubTQKQEAgLTEsNiArMSw3IEBACiAjIGx0c3VnYXIubTQgLS0gbGlidG9vbCBtNCBiYXNlIGxheWVyLiAgICAgICAgICAgICAgICAgICAgICAgICAtKi1BdXRvY29uZi0qLQogIwotIyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwNC0yMDA1LCAyMDA3LTIwMDgsIDIwMTEtMjAxNSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4KICMgV3JpdHRlbiBieSBHYXJ5IFYuIFZhdWdoYW4sIDIwMDQKICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKQEAgLTMzLDcgKzM0LDcgQEAKICMgLS0tLS0tLS0tLS0tCiAjIE1hbmlwdWxhdGUgbTQgbGlzdHMuCiAjIFRoZXNlIG1hY3JvcyBhcmUgbmVjZXNzYXJ5IGFzIGxvbmcgYXMgd2lsbCBzdGlsbCBuZWVkIHRvIHN1cHBvcnQKLSMgQXV0b2NvbmYtMi41OSB3aGljaCBxdW90ZXMgZGlmZmVyZW50bHkuCisjIEF1dG9jb25mLTIuNTksIHdoaWNoIHF1b3RlcyBkaWZmZXJlbnRseS4KIG00X2RlZmluZShbbHRfY2FyXSwgW1skMV1dKQogbTRfZGVmaW5lKFtsdF9jZHJdLAogW200X2lmKFskI10sIDAsIFttNF9mYXRhbChbJDA6IGNhbm5vdCBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHNdKV0sCkBAIC00NCw3ICs0NSw3IEBACiAKICMgbHRfYXBwZW5kKE1BQ1JPLU5BTUUsIFNUUklORywgW1NFUEFSQVRPUl0pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBSZWRlZmluZSBNQUNSTy1OQU1FIHRvIGhvbGQgaXRzIGZvcm1lciBjb250ZW50IHBsdXMgYFNFUEFSQVRPUidgU1RSSU5HJy4KKyMgUmVkZWZpbmUgTUFDUk8tTkFNRSB0byBob2xkIGl0cyBmb3JtZXIgY29udGVudCBwbHVzICdTRVBBUkFUT1InJ1NUUklORycuCiAjIE5vdGUgdGhhdCBuZWl0aGVyIFNFUEFSQVRPUiBub3IgU1RSSU5HIGFyZSBleHBhbmRlZDsgdGhleSBhcmUgYXBwZW5kZWQKICMgdG8gTUFDUk8tTkFNRSBhcyBpcyAobGVhdmluZyB0aGUgZXhwYW5zaW9uIGZvciB3aGVuIE1BQ1JPLU5BTUUgaXMgaW52b2tlZCkuCiAjIE5vIFNFUEFSQVRPUiBpcyBvdXRwdXQgaWYgTUFDUk8tTkFNRSB3YXMgcHJldmlvdXNseSB1bmRlZmluZWQgKGRpZmZlcmVudApkaWZmIC0tZ2l0IGEvbTQvbHR2ZXJzaW9uLm00IGIvbTQvbHR2ZXJzaW9uLm00CmluZGV4IDA3YTg2MDIuLmZhMDRiNTIgMTAwNjQ0Ci0tLSBhL200L2x0dmVyc2lvbi5tNAorKysgYi9tNC9sdHZlcnNpb24ubTQKQEAgLTEsNiArMSw2IEBACiAjIGx0dmVyc2lvbi5tNCAtLSB2ZXJzaW9uIG51bWJlcnMJCQktKi0gQXV0b2NvbmYgLSotCiAjCi0jICAgQ29weXJpZ2h0IChDKSAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAxMS0yMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIyAgIFdyaXR0ZW4gYnkgU2NvdHQgSmFtZXMgUmVtbmFudCwgMjAwNAogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwpAQCAtOSwxNSArOSwxNSBAQAogCiAjIEBjb25maWd1cmVfaW5wdXRACiAKLSMgc2VyaWFsIDMzMzcgbHR2ZXJzaW9uLm00CisjIHNlcmlhbCA0MTc5IGx0dmVyc2lvbi5tNAogIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbAogCi1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjQuMl0pCi1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMzM3XSkKK200X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuNC42XSkKK200X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsyLjQuNl0pCiAKIEFDX0RFRlVOKFtMVFZFUlNJT05fVkVSU0lPTl0sCi1bbWFjcm9fdmVyc2lvbj0nMi40LjInCi1tYWNyb19yZXZpc2lvbj0nMS4zMzM3JworW21hY3JvX3ZlcnNpb249JzIuNC42JworbWFjcm9fcmV2aXNpb249JzIuNC42JwogX0xUX0RFQ0woLCBtYWNyb192ZXJzaW9uLCAwLCBbV2hpY2ggcmVsZWFzZSBvZiBsaWJ0b29sLm00IHdhcyB1c2VkP10pCiBfTFRfREVDTCgsIG1hY3JvX3JldmlzaW9uLCAwKQogXSkKZGlmZiAtLWdpdCBhL200L2x0fm9ic29sZXRlLm00IGIvbTQvbHR+b2Jzb2xldGUubTQKaW5kZXggYzU3M2RhOS4uYzZiMjZmOCAxMDA2NDQKLS0tIGEvbTQvbHR+b2Jzb2xldGUubTQKKysrIGIvbTQvbHR+b2Jzb2xldGUubTQKQEAgLTEsNiArMSw3IEBACiAjIGx0fm9ic29sZXRlLm00IC0tIGFjbG9jYWwgc2F0aXNmeWluZyBvYnNvbGV0ZSBkZWZpbml0aW9ucy4gICAgLSotQXV0b2NvbmYtKi0KICMKLSMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDUsIDIwMDcsIDIwMDksIDIwMTEtMjAxNSBGcmVlIFNvZnR3YXJlCisjICAgRm91bmRhdGlvbiwgSW5jLgogIyAgIFdyaXR0ZW4gYnkgU2NvdHQgSmFtZXMgUmVtbmFudCwgMjAwNC4KICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKQEAgLTExLDcgKzEyLDcgQEAKIAogIyBUaGVzZSBleGlzdCBlbnRpcmVseSB0byBmb29sIGFjbG9jYWwgd2hlbiBib290c3RyYXBwaW5nIGxpYnRvb2wuCiAjCi0jIEluIHRoZSBwYXN0IGxpYnRvb2wubTQgaGFzIHByb3ZpZGVkIG1hY3JvcyB2aWEgQUNfREVGVU4gKG9yIEFVX0RFRlVOKQorIyBJbiB0aGUgcGFzdCBsaWJ0b29sLm00IGhhcyBwcm92aWRlZCBtYWNyb3MgdmlhIEFDX0RFRlVOIChvciBBVV9ERUZVTiksCiAjIHdoaWNoIGhhdmUgbGF0ZXIgYmVlbiBjaGFuZ2VkIHRvIG00X2RlZmluZSBhcyB0aGV5IGFyZW4ndCBwYXJ0IG9mIHRoZQogIyBleHBvcnRlZCBBUEksIG9yIG1vdmVkIHRvIEF1dG9jb25mIG9yIEF1dG9tYWtlIHdoZXJlIHRoZXkgYmVsb25nLgogIwpAQCAtMjUsNyArMjYsNyBAQAogIyBpbmNsdWRlZCBhZnRlciBldmVyeXRoaW5nIGVsc2UuICBUaGlzIHByb3ZpZGVzIGFjbG9jYWwgd2l0aCB0aGUKICMgQUNfREVGVU5zIGl0IHdhbnRzLCBidXQgd2hlbiBtNCBwcm9jZXNzZXMgaXQsIGl0IGRvZXNuJ3QgZG8gYW55dGhpbmcKICMgYmVjYXVzZSB0aG9zZSBtYWNyb3MgYWxyZWFkeSBleGlzdCwgb3Igd2lsbCBiZSBvdmVyd3JpdHRlbiBsYXRlci4KLSMgV2UgdXNlIEFDX0RFRlVOIG92ZXIgQVVfREVGVU4gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBhY2xvY2FsLTEuNi4gCisjIFdlIHVzZSBBQ19ERUZVTiBvdmVyIEFVX0RFRlVOIGZvciBjb21wYXRpYmlsaXR5IHdpdGggYWNsb2NhbC0xLjYuCiAjCiAjIEFueXRpbWUgd2Ugd2l0aGRyYXcgYW4gQUNfREVGVU4gb3IgQVVfREVGVU4sIHJlbWVtYmVyIHRvIGFkZCBpdCBoZXJlLgogIyBZZXMsIHRoYXQgbWVhbnMgZXZlcnkgbmFtZSBvbmNlIHRha2VuIHdpbGwgbmVlZCB0byByZW1haW4gaGVyZSB1bnRpbApkaWZmIC0tZ2l0IGEvcGtnY29uZmlnL01ha2VmaWxlLmFtIGIvcGtnY29uZmlnL01ha2VmaWxlLmFtCmluZGV4IDNlNTNhNmUuLjg4YzdlNTIgMTAwNjQ0Ci0tLSBhL3BrZ2NvbmZpZy9NYWtlZmlsZS5hbQorKysgYi9wa2djb25maWcvTWFrZWZpbGUuYW0KQEAgLTQsMTMgKzQsMjEgQEAKIAlnc3RyZWFtZXItcGx1Z2lucy1iYWQtQEdTVF9BUElfVkVSU0lPTkAucGMgXAogCWdzdHJlYW1lci1jb2RlY3BhcnNlcnMtQEdTVF9BUElfVkVSU0lPTkAucGMgXAogCWdzdHJlYW1lci1pbnNlcnRiaW4tQEdTVF9BUElfVkVSU0lPTkAucGMgXAotCWdzdHJlYW1lci1tcGVndHMtQEdTVF9BUElfVkVSU0lPTkAucGMKKwlnc3RyZWFtZXItbXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALnBjIFwKKwlnc3RyZWFtZXItcGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ALnBjIFwKKwlnc3RyZWFtZXItYmFkLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAucGMgXAorCWdzdHJlYW1lci1iYWQtYXVkaW8tQEdTVF9BUElfVkVSU0lPTkAucGMgXAorCWdzdHJlYW1lci1iYWQtdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAucGMKIAogcGN2ZXJmaWxlc191bmluc3RhbGxlZCA9IFwKIAlnc3RyZWFtZXItcGx1Z2lucy1iYWQtQEdTVF9BUElfVkVSU0lPTkAtdW5pbnN0YWxsZWQucGMgXAogCWdzdHJlYW1lci1jb2RlY3BhcnNlcnMtQEdTVF9BUElfVkVSU0lPTkAtdW5pbnN0YWxsZWQucGMgXAogCWdzdHJlYW1lci1pbnNlcnRiaW4tQEdTVF9BUElfVkVSU0lPTkAtdW5pbnN0YWxsZWQucGMgXAotCWdzdHJlYW1lci1tcGVndHMtQEdTVF9BUElfVkVSU0lPTkAtdW5pbnN0YWxsZWQucGMKKwlnc3RyZWFtZXItbXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALXVuaW5zdGFsbGVkLnBjIFwKKwlnc3RyZWFtZXItcGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ALXVuaW5zdGFsbGVkLnBjIFwKKwlnc3RyZWFtZXItYmFkLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAtdW5pbnN0YWxsZWQucGMgXAorCWdzdHJlYW1lci1iYWQtYXVkaW8tQEdTVF9BUElfVkVSU0lPTkAtdW5pbnN0YWxsZWQucGMgXAorCWdzdHJlYW1lci1iYWQtdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAtdW5pbnN0YWxsZWQucGMKIAogaWYgSEFWRV9HU1RfR0wKIHBjdmVyZmlsZXMgKz0gZ3N0cmVhbWVyLWdsLUBHU1RfQVBJX1ZFUlNJT05ALnBjCkBAIC0zOCw3ICs0NiwxMSBAQAogICAgICAgICAgICBnc3RyZWFtZXItY29kZWNwYXJzZXJzLnBjLmluIGdzdHJlYW1lci1jb2RlY3BhcnNlcnMtdW5pbnN0YWxsZWQucGMuaW4gXAogICAgICAgICAgICBnc3RyZWFtZXItZ2wucGMuaW4gZ3N0cmVhbWVyLWdsLXVuaW5zdGFsbGVkLnBjLmluIFwKICAgICAgICAgICAgZ3N0cmVhbWVyLWluc2VydGJpbi5wYy5pbiBnc3RyZWFtZXItaW5zZXJ0YmluLXVuaW5zdGFsbGVkLnBjLmluIFwKLSAgICAgICAgICAgZ3N0cmVhbWVyLW1wZWd0cy5wYy5pbiBnc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjLmluCisgICAgICAgICAgIGdzdHJlYW1lci1tcGVndHMucGMuaW4gZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYy5pbiBcCisgICAgICAgICAgIGdzdHJlYW1lci1wbGF5ZXIucGMuaW4gZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYy5pbiBcCisgICAgICAgICAgIGdzdHJlYW1lci1iYWQtYXVkaW8ucGMuaW4gZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYy5pbiBcCisgICAgICAgICAgIGdzdHJlYW1lci1iYWQtdmlkZW8ucGMuaW4gZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYy5pbiBcCisgICAgICAgICAgIGdzdHJlYW1lci1iYWQtYmFzZS5wYy5pbiBnc3RyZWFtZXItYmFkLWJhc2UtdW5pbnN0YWxsZWQucGMuaW4KIAogRElTVENMRUFORklMRVMgPSAkKHBjaW5maWxlczouaW49KQogRVhUUkFfRElTVCA9ICQocGNpbmZpbGVzKQpkaWZmIC0tZ2l0IGEvcGtnY29uZmlnL01ha2VmaWxlLmluIGIvcGtnY29uZmlnL01ha2VmaWxlLmluCmluZGV4IDZjYzkyOGUuLjU3MWUxMTkgMTAwNjQ0Ci0tLSBhL3BrZ2NvbmZpZy9NYWtlZmlsZS5pbgorKysgYi9wa2djb25maWcvTWFrZWZpbGUuaW4KQEAgLTExNywxNiArMTE3LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0xMzcsMTAgKzEzNiwxMiBAQAogCWdzdHJlYW1lci1jb2RlY3BhcnNlcnMtdW5pbnN0YWxsZWQucGMgZ3N0cmVhbWVyLWluc2VydGJpbi5wYyBcCiAJZ3N0cmVhbWVyLWluc2VydGJpbi11bmluc3RhbGxlZC5wYyBnc3RyZWFtZXItZ2wucGMgXAogCWdzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYyBnc3RyZWFtZXItbXBlZ3RzLnBjIFwKLQlnc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjIGdzdHJlYW1lci13YXlsYW5kLnBjIFwKKwlnc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjIGdzdHJlYW1lci1wbGF5ZXIucGMgXAorCWdzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMgZ3N0cmVhbWVyLXdheWxhbmQucGMgXAogCWdzdHJlYW1lci13YXlsYW5kLXVuaW5zdGFsbGVkLnBjIGdzdHJlYW1lci1iYWQtYmFzZS5wYyBcCiAJZ3N0cmVhbWVyLWJhZC1iYXNlLXVuaW5zdGFsbGVkLnBjIGdzdHJlYW1lci1iYWQtdmlkZW8ucGMgXAotCWdzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMKKwlnc3RyZWFtZXItYmFkLXZpZGVvLXVuaW5zdGFsbGVkLnBjIGdzdHJlYW1lci1iYWQtYXVkaW8ucGMgXAorCWdzdHJlYW1lci1iYWQtYXVkaW8tdW5pbnN0YWxsZWQucGMKIENPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9CiBBTV9WX1AgPSAkKGFtX192X1BfQEFNX1ZAKQogYW1fX3ZfUF8gPSAkKGFtX192X1BfQEFNX0RFRkFVTFRfVkApCkBAIC0xOTIsNiArMTkzLDggQEAKIERBVEEgPSAkKHBrZ2NvbmZpZ19EQVRBKQogYW1fX3RhZ2dlZF9maWxlcyA9ICQoSEVBREVSUykgJChTT1VSQ0VTKSAkKFRBR1NfRklMRVMpICQoTElTUCkKIGFtX19ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiBcCisJJChzcmNkaXIpL2dzdHJlYW1lci1iYWQtYXVkaW8tdW5pbnN0YWxsZWQucGMuaW4gXAorCSQoc3JjZGlyKS9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjLmluIFwKIAkkKHNyY2RpcikvZ3N0cmVhbWVyLWJhZC1iYXNlLXVuaW5zdGFsbGVkLnBjLmluIFwKIAkkKHNyY2RpcikvZ3N0cmVhbWVyLWJhZC1iYXNlLnBjLmluIFwKIAkkKHNyY2RpcikvZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYy5pbiBcCkBAIC0yMDQsNiArMjA3LDggQEAKIAkkKHNyY2RpcikvZ3N0cmVhbWVyLWluc2VydGJpbi5wYy5pbiBcCiAJJChzcmNkaXIpL2dzdHJlYW1lci1tcGVndHMtdW5pbnN0YWxsZWQucGMuaW4gXAogCSQoc3JjZGlyKS9nc3RyZWFtZXItbXBlZ3RzLnBjLmluIFwKKwkkKHNyY2RpcikvZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYy5pbiBcCisJJChzcmNkaXIpL2dzdHJlYW1lci1wbGF5ZXIucGMuaW4gXAogCSQoc3JjZGlyKS9nc3RyZWFtZXItcGx1Z2lucy1iYWQtdW5pbnN0YWxsZWQucGMuaW4gXAogCSQoc3JjZGlyKS9nc3RyZWFtZXItcGx1Z2lucy1iYWQucGMuaW4gXAogCSQoc3JjZGlyKS9nc3RyZWFtZXItd2F5bGFuZC11bmluc3RhbGxlZC5wYy5pbiBcCkBAIC0yNDQsNiArMjQ5LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODEsNiArMjg4LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yODksNyArMjk4LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzA4LDggKzMxNiw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMjYsMTYgKzMzNSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjEsNiArMzcxLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzg2LDYgKzM5OCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ4Nyw2ICs1MDEsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTAwLDggKzUxNSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUxNyw2ICs1MzAsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTc0LDE2ICs1ODksMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzUsNiArNjUyLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0NSw2ICs2NjMsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTQsNiArNjczLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5MSw3ICs3MTIsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTczNiwxMiArNzU2LDIwIEBACiBwY3ZlcmZpbGVzID0gZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLUBHU1RfQVBJX1ZFUlNJT05ALnBjIFwKIAlnc3RyZWFtZXItY29kZWNwYXJzZXJzLUBHU1RfQVBJX1ZFUlNJT05ALnBjIFwKIAlnc3RyZWFtZXItaW5zZXJ0YmluLUBHU1RfQVBJX1ZFUlNJT05ALnBjIFwKLQlnc3RyZWFtZXItbXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALnBjICQoYW1fX2FwcGVuZF8xKQorCWdzdHJlYW1lci1tcGVndHMtQEdTVF9BUElfVkVSU0lPTkAucGMgXAorCWdzdHJlYW1lci1wbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAucGMgXAorCWdzdHJlYW1lci1iYWQtYmFzZS1AR1NUX0FQSV9WRVJTSU9OQC5wYyBcCisJZ3N0cmVhbWVyLWJhZC1hdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5wYyBcCisJZ3N0cmVhbWVyLWJhZC12aWRlby1AR1NUX0FQSV9WRVJTSU9OQC5wYyAkKGFtX19hcHBlbmRfMSkKIHBjdmVyZmlsZXNfdW5pbnN0YWxsZWQgPSAgXAogCWdzdHJlYW1lci1wbHVnaW5zLWJhZC1AR1NUX0FQSV9WRVJTSU9OQC11bmluc3RhbGxlZC5wYyBcCiAJZ3N0cmVhbWVyLWNvZGVjcGFyc2Vycy1AR1NUX0FQSV9WRVJTSU9OQC11bmluc3RhbGxlZC5wYyBcCiAJZ3N0cmVhbWVyLWluc2VydGJpbi1AR1NUX0FQSV9WRVJTSU9OQC11bmluc3RhbGxlZC5wYyBcCiAJZ3N0cmVhbWVyLW1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQC11bmluc3RhbGxlZC5wYyBcCisJZ3N0cmVhbWVyLXBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC11bmluc3RhbGxlZC5wYyBcCisJZ3N0cmVhbWVyLWJhZC1iYXNlLUBHU1RfQVBJX1ZFUlNJT05ALXVuaW5zdGFsbGVkLnBjIFwKKwlnc3RyZWFtZXItYmFkLWF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALXVuaW5zdGFsbGVkLnBjIFwKKwlnc3RyZWFtZXItYmFkLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALXVuaW5zdGFsbGVkLnBjIFwKIAkkKGFtX19hcHBlbmRfMikKIGNwX3ZlcmJvc2UgPSAkKGNwX3ZlcmJvc2VfJChWKSkKIGNwX3ZlcmJvc2VfID0gJChjcF92ZXJib3NlXyQoQU1fREVGQVVMVF9WRVJCT1NJVFkpKQpAQCAtNzU0LDcgKzc4MiwxMSBAQAogICAgICAgICAgICBnc3RyZWFtZXItY29kZWNwYXJzZXJzLnBjLmluIGdzdHJlYW1lci1jb2RlY3BhcnNlcnMtdW5pbnN0YWxsZWQucGMuaW4gXAogICAgICAgICAgICBnc3RyZWFtZXItZ2wucGMuaW4gZ3N0cmVhbWVyLWdsLXVuaW5zdGFsbGVkLnBjLmluIFwKICAgICAgICAgICAgZ3N0cmVhbWVyLWluc2VydGJpbi5wYy5pbiBnc3RyZWFtZXItaW5zZXJ0YmluLXVuaW5zdGFsbGVkLnBjLmluIFwKLSAgICAgICAgICAgZ3N0cmVhbWVyLW1wZWd0cy5wYy5pbiBnc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjLmluCisgICAgICAgICAgIGdzdHJlYW1lci1tcGVndHMucGMuaW4gZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYy5pbiBcCisgICAgICAgICAgIGdzdHJlYW1lci1wbGF5ZXIucGMuaW4gZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYy5pbiBcCisgICAgICAgICAgIGdzdHJlYW1lci1iYWQtYXVkaW8ucGMuaW4gZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYy5pbiBcCisgICAgICAgICAgIGdzdHJlYW1lci1iYWQtdmlkZW8ucGMuaW4gZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYy5pbiBcCisgICAgICAgICAgIGdzdHJlYW1lci1iYWQtYmFzZS5wYy5pbiBnc3RyZWFtZXItYmFkLWJhc2UtdW5pbnN0YWxsZWQucGMuaW4KIAogRElTVENMRUFORklMRVMgPSAkKHBjaW5maWxlczouaW49KQogRVhUUkFfRElTVCA9ICQocGNpbmZpbGVzKQpAQCAtODEwLDYgKzg0MiwxMCBAQAogCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRACiBnc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjOiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2RpcikvZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYy5pbgogCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRACitnc3RyZWFtZXItcGxheWVyLnBjOiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2RpcikvZ3N0cmVhbWVyLXBsYXllci5wYy5pbgorCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRACitnc3RyZWFtZXItcGxheWVyLXVuaW5zdGFsbGVkLnBjOiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2RpcikvZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYy5pbgorCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRACiBnc3RyZWFtZXItd2F5bGFuZC5wYzogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL2dzdHJlYW1lci13YXlsYW5kLnBjLmluCiAJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAKIGdzdHJlYW1lci13YXlsYW5kLXVuaW5zdGFsbGVkLnBjOiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKHNyY2RpcikvZ3N0cmVhbWVyLXdheWxhbmQtdW5pbnN0YWxsZWQucGMuaW4KQEAgLTgyMiw2ICs4NTgsMTAgQEAKIAljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQAogZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYzogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL2dzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMuaW4KIAljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQAorZ3N0cmVhbWVyLWJhZC1hdWRpby5wYzogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL2dzdHJlYW1lci1iYWQtYXVkaW8ucGMuaW4KKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQAorZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYzogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL2dzdHJlYW1lci1iYWQtYXVkaW8tdW5pbnN0YWxsZWQucGMuaW4KKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQAogCiBtb3N0bHljbGVhbi1saWJ0b29sOgogCS1ybSAtZiAqLmxvCmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLXVuaW5zdGFsbGVkLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiOTUzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYy5pbgpAQCAtMCwwICsxLDEyIEBACitwcmVmaXg9CitleGVjX3ByZWZpeD0KK2xpYmRpcj1AYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L2F1ZGlvLy5saWJzCitpbmNsdWRlZGlyPUBhYnNfdG9wX3NyY2RpckAvZ3N0LWxpYnMKKworTmFtZTogR1N0cmVhbWVyIGJhZCBhdWRpbyBsaWJyYXJ5LCB1bmluc3RhbGxlZAorRGVzY3JpcHRpb246IEJhZCBhdWRpbyBsaWJyYXJ5IGZvciBHU3RyZWFtZXIsIE5vdCBJbnN0YWxsZWQKK1ZlcnNpb246IEBWRVJTSU9OQAorUmVxdWlyZXM6IGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBnc3RyZWFtZXItYmFkLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAKKworTGliczogLUwke2xpYmRpcn0gLWxnc3RiYWRhdWRpby1AR1NUX0FQSV9WRVJTSU9OQAorQ2ZsYWdzOiAtSUBhYnNfdG9wX3NyY2RpckAvZ3N0LWxpYnMgLUlAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMKZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYXVkaW8ucGMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU5MGQ2NwotLS0gL2Rldi9udWxsCisrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjLmluCkBAIC0wLDAgKzEsMTMgQEAKK3ByZWZpeD1AcHJlZml4QAorZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorbGliZGlyPUBsaWJkaXJACitpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQC9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKK3BsdWdpbnNkaXI9QGxpYmRpckAvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACisKK05hbWU6IEdTdHJlYW1lciBiYWQgYXVkaW8gbGlicmFyeSwgdW5pbnN0YWxsZWQKK0Rlc2NyaXB0aW9uOiBCYWQgYXVkaW8gbGlicmFyeSBmb3IgR1N0cmVhbWVyIGVsZW1lbnRzLCBOb3QgSW5zdGFsbGVkCitWZXJzaW9uOiBAVkVSU0lPTkAKK1JlcXVpcmVzOiBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgZ3N0cmVhbWVyLWJhZC1iYXNlLUBHU1RfQVBJX1ZFUlNJT05ACisKK0xpYnM6IC1MJHtsaWJkaXJ9ICR7bGliZGlyfS9saWJnc3RiYWRhdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5sYQorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UtdW5pbnN0YWxsZWQucGMuaW4gYi9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC1iYXNlLXVuaW5zdGFsbGVkLnBjLmluCmluZGV4IDU2MGViMTMuLmUxMWEwMWIgMTAwNjQ0Ci0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UtdW5pbnN0YWxsZWQucGMuaW4KKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS11bmluc3RhbGxlZC5wYy5pbgpAQCAtMSwxNSArMSwxNCBAQAogcHJlZml4PQogZXhlY19wcmVmaXg9Ci1saWJkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzL2dzdC9iYXNlCi1pbmNsdWRlZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicwotcGx1Z2luc2Rpcj0ke3BjZmlsZWRpcn0vLi4KK2xpYmRpcj1AYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L2Jhc2UvLmxpYnMKK2luY2x1ZGVkaXI9QGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzCitnaXJkaXI9QGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9iYXNlCit0eXBlbGliZGlyPUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvYmFzZQogCiBOYW1lOiBHU3RyZWFtZXIgYmFkIGJhc2UgY2xhc3NlcywgdW5pbnN0YWxsZWQKIERlc2NyaXB0aW9uOiBCYWQgYmFzZSBjbGFzc2VzIGZvciBHU3RyZWFtZXIgZWxlbWVudHMsIE5vdCBJbnN0YWxsZWQKIFZlcnNpb246IEBWRVJTSU9OQAogUmVxdWlyZXM6IGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAogCi1MaWJzOiAtTCR7bGliZGlyfSAke2xpYmRpcn0vbGliZ3N0YmFkYmFzZS1AR1NUX0FQSV9WRVJTSU9OQC5sYSBAQkFEQkFTRV9MSUJTQAotQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gLUlAc3JjZGlyQC8uLiBAQkFEQkFTRV9DRkxBR1NACi0KLWxpYnJhcmllcz1iYWRiYXNlCitMaWJzOiAtTCR7bGliZGlyfSAtbGdzdGJhZGJhc2UtQEdTVF9BUElfVkVSU0lPTkAKK0NmbGFnczogLUlAYWJzX3RvcF9zcmNkaXJAL2dzdC1saWJzIC1JQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzCmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC1iYXNlLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS5wYy5pbgppbmRleCBhMDMwMTNiLi4xMGFmZTBlIDEwMDY0NAotLS0gYS9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC1iYXNlLnBjLmluCisrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UucGMuaW4KQEAgLTIsMTQgKzIsMTUgQEAKIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKIGxpYmRpcj1AbGliZGlyQAogaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACi1wbHVnaW5zZGlyPUBsaWJkaXJAL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAorZGF0YXJvb3RkaXI9JHtwcmVmaXh9L3NoYXJlCitkYXRhZGlyPSR7ZGF0YXJvb3RkaXJ9CitnaXJkaXI9JHtkYXRhZGlyfS9naXItMS4wCit0eXBlbGliZGlyPSR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wCiAKLU5hbWU6IEdTdHJlYW1lciBiYWQgYmFzZSBjbGFzc2VzLCB1bmluc3RhbGxlZAotRGVzY3JpcHRpb246IEJhZCBiYXNlIGNsYXNzZXMgZm9yIEdTdHJlYW1lciBlbGVtZW50cywgTm90IEluc3RhbGxlZAorTmFtZTogR1N0cmVhbWVyIGJhZCBiYXNlIGNsYXNzZXMKK0Rlc2NyaXB0aW9uOiBCYWQgYmFzZSBjbGFzc2VzIGZvciBHU3RyZWFtZXIgZWxlbWVudHMKIFZlcnNpb246IEBWRVJTSU9OQAogUmVxdWlyZXM6IGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAogCi1MaWJzOiAtTCR7bGliZGlyfSAke2xpYmRpcn0vbGliZ3N0YmFkYmFzZS1AR1NUX0FQSV9WRVJTSU9OQC5sYSBAQkFEQkFTRV9MSUJTQAotQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gLUlAc3JjZGlyQC8uLiBAQkFEQkFTRV9DRkxBR1NACi0KLWxpYnJhcmllcz1iYWRiYXNlCitMaWJzOiAtTCR7bGliZGlyfSAke2xpYmRpcn0vbGliZ3N0YmFkYmFzZS1AR1NUX0FQSV9WRVJTSU9OQC5sYQorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLXZpZGVvLXVuaW5zdGFsbGVkLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMuaW4KaW5kZXggNmEyYTIwNi4uZjlhZTdiZiAxMDA2NDQKLS0tIGEvcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMuaW4KKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMuaW4KQEAgLTEsMTUgKzEsMTQgQEAKIHByZWZpeD0KIGV4ZWNfcHJlZml4PQotbGliZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicy9nc3QvdmlkZW8KLWluY2x1ZGVkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzCi1wbHVnaW5zZGlyPSR7cGNmaWxlZGlyfS8uLgorbGliZGlyPUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvdmlkZW8vLmxpYnMKK2luY2x1ZGVkaXI9QGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzCitnaXJkaXI9QGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC92aWRlbwordHlwZWxpYmRpcj1AYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L3ZpZGVvCiAKIE5hbWU6IEdTdHJlYW1lciBiYWQgdmlkZW8gbGlicmFyeSwgdW5pbnN0YWxsZWQKLURlc2NyaXB0aW9uOiBCYWQgdmlkZW8gbGlicmFyeSBmb3IgR1N0cmVhbWVyLCBOb3QgSW5zdGFsbGVkCitEZXNjcmlwdGlvbjogQmFkIHZpZGVvIGxpYnJhcnkgZm9yIEdTdHJlYW1lciBlbGVtZW50cywgTm90IEluc3RhbGxlZAogVmVyc2lvbjogQFZFUlNJT05ACi1SZXF1aXJlczogZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACitSZXF1aXJlczogZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1iYWQtYmFzZS1AR1NUX0FQSV9WRVJTSU9OQAogCi1MaWJzOiAtTCR7bGliZGlyfSAke2xpYmRpcn0vbGliZ3N0YmFkdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAubGEgQEJBREJBU0VfTElCU0AKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JQHNyY2RpckAvLi4gQEJBREJBU0VfQ0ZMQUdTQAotCi1saWJyYXJpZXM9YmFkdmlkZW8KK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0YmFkdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAKK0NmbGFnczogLUlAYWJzX3RvcF9zcmNkaXJAL2dzdC1saWJzIC1JQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzCmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLXZpZGVvLnBjLmluCmluZGV4IDRmZGY4ODkuLjQwMTI3YmUgMTAwNjQ0Ci0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLXZpZGVvLnBjLmluCisrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLXZpZGVvLnBjLmluCkBAIC0yLDE0ICsyLDE1IEBACiBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACiBsaWJkaXI9QGxpYmRpckAKIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJAL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAotcGx1Z2luc2Rpcj1AbGliZGlyQC9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKK2RhdGFyb290ZGlyPSR7cHJlZml4fS9zaGFyZQorZGF0YWRpcj0ke2RhdGFyb290ZGlyfQorZ2lyZGlyPSR7ZGF0YWRpcn0vZ2lyLTEuMAordHlwZWxpYmRpcj0ke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMAogCi1OYW1lOiBHU3RyZWFtZXIgYmFkIHZpZGVvIGxpYnJhcnksIHVuaW5zdGFsbGVkCi1EZXNjcmlwdGlvbjogQmFkIHZpZGVvIGxpYnJhcnkgZm9yIEdTdHJlYW1lciBlbGVtZW50cywgTm90IEluc3RhbGxlZAorTmFtZTogR1N0cmVhbWVyIGJhZCB2aWRlbyBsaWJyYXJ5CitEZXNjcmlwdGlvbjogQmFkIHZpZGVvIGxpYnJhcnkgZm9yIEdTdHJlYW1lciBlbGVtZW50cwogVmVyc2lvbjogQFZFUlNJT05ACi1SZXF1aXJlczogZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACitSZXF1aXJlczogZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1iYWQtYmFzZS1AR1NUX0FQSV9WRVJTSU9OQAogCi1MaWJzOiAtTCR7bGliZGlyfSAke2xpYmRpcn0vbGliZ3N0YmFkdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAubGEgQEJBREJBU0VfTElCU0AKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JQHNyY2RpckAvLi4gQEJBREJBU0VfQ0ZMQUdTQAotCi1saWJyYXJpZXM9YmFkdmlkZW8KK0xpYnM6IC1MJHtsaWJkaXJ9ICR7bGliZGlyfS9saWJnc3RiYWR2aWRlby1AR1NUX0FQSV9WRVJTSU9OQC5sYQorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1jb2RlY3BhcnNlcnMtdW5pbnN0YWxsZWQucGMuaW4KaW5kZXggZDFiYjliMC4uNzFlZDc3MSAxMDA2NDQKLS0tIGEvcGtnY29uZmlnL2dzdHJlYW1lci1jb2RlY3BhcnNlcnMtdW5pbnN0YWxsZWQucGMuaW4KKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci1jb2RlY3BhcnNlcnMtdW5pbnN0YWxsZWQucGMuaW4KQEAgLTEsMTIgKzEsMTIgQEAKIHByZWZpeD0KIGV4ZWNfcHJlZml4PQotbGliZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzCitsaWJkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvLmxpYnMKIGluY2x1ZGVkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzCiAKIE5hbWU6IEdTdHJlYW1lciBjb2RlYyBwYXJzZXJzLCBVbmluc3RhbGxlZAogRGVzY3JpcHRpb246IEJpdHN0cmVhbSBwYXJzZXJzIGZvciBHU3RyZWFtZXIgZWxlbWVudHMsIHVuaW5zdGFsbGVkCiBSZXF1aXJlczogZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05ACiBWZXJzaW9uOiBAVkVSU0lPTkAKLUxpYnM6IC1MJHtsaWJkaXJ9ICR7bGliZGlyfS9saWJnc3Rjb2RlY3BhcnNlcnMtQEdTVF9BUElfVkVSU0lPTkAubGEKK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0Y29kZWNwYXJzZXJzLUBHU1RfQVBJX1ZFUlNJT05ACiBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQogCmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLXVuaW5zdGFsbGVkLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYy5pbgppbmRleCA3NmVlZmI5Li5kYWM0Y2RhIDEwMDY0NAotLS0gYS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLXVuaW5zdGFsbGVkLnBjLmluCisrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wtdW5pbnN0YWxsZWQucGMuaW4KQEAgLTEsMTUgKzEsMTUgQEAKIHByZWZpeD0KIGV4ZWNfcHJlZml4PQotbGliZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicy9nc3QvZ2wKLWluY2x1ZGVkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzCi1wbHVnaW5zZGlyPSR7cGNmaWxlZGlyfS8uLgorbGliZGlyPUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvZ2wvLmxpYnMKK2luY2x1ZGVkaXI9QGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzCitnaXJkaXI9QGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9iYXNlCit0eXBlbGliZGlyPUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvYmFzZQogCiBOYW1lOiBHU3RyZWFtZXIgT3BlbkdMIFBsdWdpbnMgTGlicmFyaWVzLCBVbmluc3RhbGxlZAogRGVzY3JpcHRpb246IFN0cmVhbWluZyBtZWRpYSBmcmFtZXdvcmssIE9wZW5HTCBwbHVnaW5zIGxpYnJhcmllcywgdW5pbnN0YWxsZWQKIFZlcnNpb246IEBWRVJTSU9OQAotUmVxdWlyZXM6IGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAorUmVxdWlyZXM6IGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAogCi1MaWJzOiAtTCR7bGliZGlyfSAke2xpYmRpcn0vbGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAubGEgQEdMX0xJQlNACi1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAtSUBzcmNkaXJALy4uIEBHTF9DRkxBR1NACitMaWJzOiAtTCR7bGliZGlyfSAtbGdzdGdsLUBHU1RfQVBJX1ZFUlNJT05AIEBHTF9MSUJTQAorQ2ZsYWdzOiAtSUBhYnNfdG9wX3NyY2RpckAvZ3N0LWxpYnMgLUlAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMKIAotbGlicmFyaWVzPWdsCmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgppbmRleCAxYjk4NzYyLi41NTg5ZTJhIDEwMDY0NAotLS0gYS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCisrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KQEAgLTYsOCArNiw4IEBACiAKIE5hbWU6IEdTdHJlYW1lciBPcGVuR0wgUGx1Z2lucyBMaWJyYXJpZXMKIERlc2NyaXB0aW9uOiBTdHJlYW1pbmcgbWVkaWEgZnJhbWV3b3JrLCBPcGVuR0wgcGx1Z2lucyBsaWJyYXJpZXMKLVJlcXVpcmVzOiBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAKIFZlcnNpb246IEBWRVJTSU9OQAotTGliczogLUwke2xpYmRpcn0gLWxnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQCBAR0xfTElCU0AKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JJHtsaWJkaXJ9L2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9pbmNsdWRlIEBHTF9DRkxBR1NACitSZXF1aXJlczogZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACiAKK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAgQEdMX0xJQlNACitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSBAR0xfQ0ZMQUdTQApkaWZmIC0tZ2l0IGEvcGtnY29uZmlnL2dzdHJlYW1lci1pbnNlcnRiaW4tdW5pbnN0YWxsZWQucGMuaW4gYi9wa2djb25maWcvZ3N0cmVhbWVyLWluc2VydGJpbi11bmluc3RhbGxlZC5wYy5pbgppbmRleCAwYTAxZTc5Li4xYTUzNWFhIDEwMDY0NAotLS0gYS9wa2djb25maWcvZ3N0cmVhbWVyLWluc2VydGJpbi11bmluc3RhbGxlZC5wYy5pbgorKysgYi9wa2djb25maWcvZ3N0cmVhbWVyLWluc2VydGJpbi11bmluc3RhbGxlZC5wYy5pbgpAQCAtMSwxMiArMSwxMiBAQAogcHJlZml4PQogZXhlY19wcmVmaXg9Ci1saWJkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4KK2xpYmRpcj0ke3BjZmlsZWRpcn0vLi4vZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi8ubGlicwogaW5jbHVkZWRpcj0ke3BjZmlsZWRpcn0vLi4vZ3N0LWxpYnMKIAogTmFtZTogR1N0cmVhbWVyIEluc2VydCBCaW4sIFVuaW5zdGFsbGVkCiBEZXNjcmlwdGlvbjogQmluIHRvIGF1dG9tYXRpY2FsbHkgYW5kIGluc2VydGFsbHkgbGluayBlbGVtZW50cywgdW5pbnN0YWxsZWQKIFJlcXVpcmVzOiBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKIFZlcnNpb246IEBWRVJTSU9OQAotTGliczogLUwke2xpYmRpcn0gJHtsaWJkaXJ9L2xpYmdzdGluc2VydGJpbi1AR1NUX0FQSV9WRVJTSU9OQC5sYQorTGliczogLUwke2xpYmRpcn0gLWxnc3RpbnNlcnRiaW4tQEdTVF9BUElfVkVSU0lPTkAKIENmbGFnczogLUkke2luY2x1ZGVkaXJ9CiAKZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1tcGVndHMtdW5pbnN0YWxsZWQucGMuaW4KaW5kZXggZTlhYTI2MS4uMTc5OTk2YyAxMDA2NDQKLS0tIGEvcGtnY29uZmlnL2dzdHJlYW1lci1tcGVndHMtdW5pbnN0YWxsZWQucGMuaW4KKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci1tcGVndHMtdW5pbnN0YWxsZWQucGMuaW4KQEAgLTEsMTIgKzEsMTIgQEAKIHByZWZpeD0KIGV4ZWNfcHJlZml4PQotbGliZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicy9nc3QvbXBlZ3RzCitsaWJkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzL2dzdC9tcGVndHMvLmxpYnMKIGluY2x1ZGVkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzCiAKIE5hbWU6IEdTdHJlYW1lciBNUEVHLVRTLCBVbmluc3RhbGxlZAogRGVzY3JpcHRpb246IEdTdHJlYW1lciBNUEVHLVRTIHN1cHBvcnQsIHVuaW5zdGFsbGVkCiBSZXF1aXJlczogZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05ACiBWZXJzaW9uOiBAVkVSU0lPTkAKLUxpYnM6IC1MJHtsaWJkaXJ9ICR7bGliZGlyfS9saWJnc3RtcGVndHMtQEdTVF9BUElfVkVSU0lPTkAubGEKK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0bXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ACiBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQogCmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItcGxheWVyLXVuaW5zdGFsbGVkLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNDk1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9wa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYy5pbgpAQCAtMCwwICsxLDEyIEBACitwcmVmaXg9CitleGVjX3ByZWZpeD0KK2xpYmRpcj0ke3BjZmlsZWRpcn0vLi4vZ3N0LWxpYnMvZ3N0L3BsYXllci8ubGlicworaW5jbHVkZWRpcj0ke3BjZmlsZWRpcn0vLi4vZ3N0LWxpYnMKKworTmFtZTogR1N0cmVhbWVyIFBsYXllciwgVW5pbnN0YWxsZWQKK0Rlc2NyaXB0aW9uOiBHU3RyZWFtZXIgUGxheWVyIGNvbnZlbmllbmNlIGxpYnJhcnksIHVuaW5zdGFsbGVkCitSZXF1aXJlczogZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACitWZXJzaW9uOiBAVkVSU0lPTkAKK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0cGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ACitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQorCmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItcGxheWVyLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyOTZlN2YKLS0tIC9kZXYvbnVsbAorKysgYi9wa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci5wYy5pbgpAQCAtMCwwICsxLDEyIEBACitwcmVmaXg9QHByZWZpeEAKK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKK2xpYmRpcj1AbGliZGlyQAoraW5jbHVkZWRpcj1AaW5jbHVkZWRpckAvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACisKK05hbWU6IEdTdHJlYW1lciBQbGF5ZXIKK0Rlc2NyaXB0aW9uOiBHU3RyZWFtZXIgUGxheWVyIGNvbnZlbmllbmNlIGxpYnJhcnkKK1JlcXVpcmVzOiBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKK1ZlcnNpb246IEBWRVJTSU9OQAorTGliczogLUwke2xpYmRpcn0gLWxnc3RwbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAKK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CisKZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItcGx1Z2lucy1iYWQtdW5pbnN0YWxsZWQucGMuaW4gYi9wa2djb25maWcvZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLXVuaW5zdGFsbGVkLnBjLmluCmluZGV4IDZmY2Y3NzMuLmRmOWE5YzUgMTAwNjQ0Ci0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItcGx1Z2lucy1iYWQtdW5pbnN0YWxsZWQucGMuaW4KKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci1wbHVnaW5zLWJhZC11bmluc3RhbGxlZC5wYy5pbgpAQCAtMTAsNSArMTAsNSBAQAogRGVzY3JpcHRpb246IFN0cmVhbWluZyBtZWRpYSBmcmFtZXdvcmssIGJhZCBwbHVnaW5zIGxpYnJhcmllcywgdW5pbnN0YWxsZWQKIFZlcnNpb246IEBWRVJTSU9OQAogUmVxdWlyZXM6IGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAotTGliczogLUxAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L2Jhc2VjYW1lcmFiaW5zcmMgLUxAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2VycyAtTEBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvZWdsIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4gLUxAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L2ludGVyZmFjZXMgLUxAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L21wZWd0cyAtTEBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3Qvc2lnbmFscHJvY2Vzc29yIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC92aWRlbworTGliczogLUxAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L2F1ZGlvLy5saWJzIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9iYXNlY2FtZXJhYmluc3JjLy5saWJzIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvLmxpYnMgLUxAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L2dsLy5saWJzIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vLmxpYnMgLUxAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L2ludGVyZmFjZXMvLmxpYnMgLUxAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L21wZWd0cy8ubGlicyAtTEBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvcGxheWVyLy5saWJzIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9zaWduYWxwcm9jZXNzb3IvLmxpYnMgLUxAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L3ZpZGVvLy5saWJzIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC93YXlsYW5kLy5saWJzCiBDZmxhZ3M6IC1JQGFic190b3Bfc3JjZGlyQC9nc3QtbGlicyAtSUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicwpkaWZmIC0tZ2l0IGEvcGtnY29uZmlnL2dzdHJlYW1lci13YXlsYW5kLXVuaW5zdGFsbGVkLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci13YXlsYW5kLXVuaW5zdGFsbGVkLnBjLmluCmluZGV4IGZlMDFkZTYuLjgwZDZlMWIgMTAwNjQ0Ci0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItd2F5bGFuZC11bmluc3RhbGxlZC5wYy5pbgorKysgYi9wa2djb25maWcvZ3N0cmVhbWVyLXdheWxhbmQtdW5pbnN0YWxsZWQucGMuaW4KQEAgLTEsMTIgKzEsMTIgQEAKIHByZWZpeD0KIGV4ZWNfcHJlZml4PQotbGliZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicy9nc3Qvd2F5bGFuZAorbGliZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicy9nc3Qvd2F5bGFuZC8ubGlicwogaW5jbHVkZWRpcj0ke3BjZmlsZWRpcn0vLi4vZ3N0LWxpYnMKIAogTmFtZTogR1N0cmVhbWVyIFdheWxhbmQsIFVuaW5zdGFsbGVkCiBEZXNjcmlwdGlvbjogR1N0cmVhbWVyIFdheWxhbmQgc3VwcG9ydCwgdW5pbnN0YWxsZWQKIFJlcXVpcmVzOiBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ACiBWZXJzaW9uOiBAVkVSU0lPTkAKLUxpYnM6IC1MJHtsaWJkaXJ9ICR7bGliZGlyfS9saWJnc3R3YXlsYW5kLUBHU1RfQVBJX1ZFUlNJT05ALmxhCitMaWJzOiAtTCR7bGliZGlyfSAtbGdzdHdheWxhbmQtQEdTVF9BUElfVkVSU0lPTkAKIENmbGFnczogLUkke2luY2x1ZGVkaXJ9CiAKZGlmZiAtLWdpdCBhL3BvL1BPVEZJTEVTLmluIGIvcG8vUE9URklMRVMuaW4KaW5kZXggYWQ0MjMxOC4uMDNkNjAzZiAxMDA2NDQKLS0tIGEvcG8vUE9URklMRVMuaW4KKysrIGIvcG8vUE9URklMRVMuaW4KQEAgLTEsNyArMSw2IEBACiBleHQvZGFzaC9nc3RkYXNoZGVtdXguYwogZXh0L2dsL2dzdGdsdGVzdHNyYy5jCi1leHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbgotZXh0L29wZW5jdi9nc3R0ZW1wbGF0ZW1hdGNoLmMKK2V4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jcHAKIGV4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5jCiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmMKIGV4dC9zbmRmaWxlL2dzdHNmZGVjLmMKZGlmZiAtLWdpdCBhL3BvL2FmLmdtbyBiL3BvL2FmLmdtbwppbmRleCA3NDQ3YTYzLi42Y2MwZjBmIDEwMDY0NAotLS0gYS9wby9hZi5nbW8KKysrIGIvcG8vYWYuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2FmLnBvIGIvcG8vYWYucG8KaW5kZXggYjE5NGVkZi4uNWNiNTQ3MyAxMDA2NDQKLS0tIGEvcG8vYWYucG8KKysrIGIvcG8vYWYucG8KQEAgLTcsNyArNyw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zIDAuNy42XG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA0LTAzLTE4IDE0OjE2KzAyMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IFBldHJpIEpvb3N0ZSA8cmt3anBqQHB1ay5hYy56YT5cbiIKICJMYW5ndWFnZS1UZWFtOiBBZnJpa2FhbnMgPGkxOG5AYWYub3JnLnphPlxuIgpAQCAtMTksOTUgKzE5LDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL2F6LmdtbyBiL3BvL2F6LmdtbwppbmRleCAwODdhMGY0Li45OTE3N2IzIDEwMDY0NAotLS0gYS9wby9hei5nbW8KKysrIGIvcG8vYXouZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2F6LnBvIGIvcG8vYXoucG8KaW5kZXggZTcxMWFjNi4uZGYxNDBlYyAxMDA2NDQKLS0tIGEvcG8vYXoucG8KKysrIGIvcG8vYXoucG8KQEAgLTcsNyArNyw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLTAuOC4wXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA0LTAzLTE5IDE4OjI5KzAyMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IE1ldGluIEFtaXJvZmYgPG1ldGluQGthcmVnZW4uY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IEF6ZXJiYWlqYW5pIDx0cmFuc2xhdGlvbi10ZWFtLWF6QGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTIwLDk1ICsyMCw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9iZy5nbW8gYi9wby9iZy5nbW8KaW5kZXggMGM4ZGIzOS4uNjk4MTE5MyAxMDA2NDQKLS0tIGEvcG8vYmcuZ21vCisrKyBiL3BvL2JnLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9iZy5wbyBiL3BvL2JnLnBvCmluZGV4IDIwYWM5OTguLjdiZTJmNjEgMTAwNjQ0Ci0tLSBhL3BvL2JnLnBvCisrKyBiL3BvL2JnLnBvCkBAIC0xLDExNyArMSwyOCBAQAogIyBCdWxnYXJpYW4gdHJhbnNsYXRpb24gb2YgZ3N0LXBsdWdpbnMtYmFkLgotIyBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb25kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDE2IEZyZWUgU29mdHdhcmUgRm9uZGF0aW9uLCBJbmMuCiAjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBnc3QtcGx1Z2lucy1iYWQgcGFja2FnZS4KLSMgQWxleGFuZGVyIFNob3BvdiA8YXNoQGthbWJhbmFyaWEub3JnPiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMS4KKyMgQWxleGFuZGVyIFNob3BvdiA8YXNoQGthbWJhbmFyaWEub3JnPiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxNi4KICMKICMKIG1zZ2lkICIiCiBtc2dzdHIgIiIKLSJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjIxLjJcbiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAxLjcuMlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDExLTA0LTI2IDIyOjMwKzAzMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxNi0wMi0yMSAyMTowMyswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBBbGV4YW5kZXIgU2hvcG92IDxhc2hAa2FtYmFuYXJpYS5vcmc+XG4iCi0iTGFuZ3VhZ2UtVGVhbTogQnVsZ2FyaWFuIDxkaWN0QGZzYS1iZy5vcmc+XG4iCi0iTGFuZ3VhZ2U6IFxuIgorIkxhbmd1YWdlLVRlYW06IEJ1bGdhcmlhbiA8ZGljdEBsdWRvc3QubmV0PlxuIgorIkxhbmd1YWdlOiBiZ1xuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPW4gIT0gMTtcbiIKIAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCittc2dzdHIgItGE0L7RgNC80LDRgtGK0YIg0L3QtSDQtSDQsdC40Lsg0YPRgtC+0YfQvdC10L0g0L/RgNC10LTQuCDQuNC30LLQuNC60LLQsNC90LUg0L3QsCDRhNGD0L3QutGG0LjRj9GC0LAg0LfQsCDQv9C+0LvRg9GH0LDQstCw0L3QtSIKIAogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKLW1zZ3N0ciAiIgorbXNnc3RyICJPcGVuQ1Yg0L3QtSDRg9GB0L/RjyDQtNCwINC30LDRgNC10LTQuCDQuNC30L7QsdGA0LDQttC10L3QuNC10YLQvi3RiNCw0LHQu9C+0L0iCiAKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCB0aXRsZSBpbmZvcm1hdGlvbiBmb3IgRFZELiIKIG1zZ3N0ciAi0JjQvdGE0L7RgNC80LDRhtC40Y/RgtCwINC30LAg0LfQsNCz0LvQsNCy0L3QuNGC0LUg0YfQsNGB0YLQuCDQvdCwIERWRC3RgtC+INC90LUg0LzQvtC20LUg0LTQsCDQsdGK0LTQtSDQv9GA0L7Rh9C10YLQtdC90LAuIgpAQCAtMTM0LDUzICs0NSw1MiBAQAogbXNnc3RyICJEVkQt0YLQviDQvdC1INC80L7QttC1INC00LAg0LHRitC00LUg0L/RgNC+0YfQtdGC0LXQvdC+LiIKIAogbXNnaWQgIlRoaXMgZmlsZSBjb250YWlucyBubyBwbGF5YWJsZSBzdHJlYW1zLiIKLW1zZ3N0ciAiIgorbXNnc3RyICLQpNCw0LnQu9GK0YIg0L3QtSDRgdGK0LTRitGA0LbQsCDQv9C+0YLQvtGG0Lgg0LfQsCDQuNC30L/RitC70L3QtdC90LjQtS4iCiAKLSMsIGZ1enp5CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gc25kZmlsZSBzdHJlYW0gZm9yIHJlYWRpbmcuIgotbXNnc3RyICLQpNCw0LnQu9GK0YIg4oCeJXPigJwg0L3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0L7RgtCy0L7RgNC4INC30LAg0YfQtdGC0LXQvdC1LiIKK21zZ3N0ciAi0J/QvtGC0L7QutGK0YIgc25kZmlsZSDQvdC1INC80L7QttC1INC00LAg0YHQtSDQvtGC0LLQvtGA0Lgg0LfQsCDRh9C10YLQtdC90LUuIgogCiBtc2dpZCAiQ291bGQgbm90IGVzdGFibGlzaCBjb25uZWN0aW9uIHRvIHNuZGlvIgotbXNnc3RyICIiCittc2dzdHIgItCd0LUg0LzQvtC20LUg0LTQsCDRgdC1INGD0YHRgtCw0L3QvtCy0Lgg0LLRgNGK0LfQutCwINC60YrQvCBzbmRpbyIKIAogbXNnaWQgIkZhaWxlZCB0byBxdWVyeSBzbmRpbyBjYXBhYmlsaXRpZXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi0J3QtdGD0YHQv9C10YjQvdC+INC30LDQv9C40YLQstCw0L3QtSDQt9CwINCy0YrQt9C80L7QttC90L7RgdGC0LjRgtC1INC90LAgc25kaW8iCiAKLSMsIGZ1enp5CiBtc2dpZCAiQ291bGQgbm90IGNvbmZpZ3VyZSBzbmRpbyIKLW1zZ3N0ciAi0KTQsNC50LvRitGCIOKAniVz4oCcINC90LUg0LzQvtC20LUg0LTQsCDRgdC1INC+0YLQstC+0YDQuCDQt9CwINGH0LXRgtC10L3QtS4iCittc2dzdHIgItCd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC90LDRgdGC0YDQvtC4IHNuZGlvIgogCi0jLCBmdXp6eQogbXNnaWQgIkNvdWxkIG5vdCBzdGFydCBzbmRpbyIKLW1zZ3N0ciAiRFZELdGC0L4g0L3QtSDQvNC+0LbQtSDQtNCwINCx0YrQtNC1INC/0YDQvtGH0LXRgtC10L3Qvi4iCittc2dzdHIgItCd0LUg0LzQvtC20LUg0LTQsCDRgdC1INGB0YLQsNGA0YLQuNGA0LAgc25kaW8iCiAKIG1zZ2lkICJJbnRlcm5hbCBkYXRhIGZsb3cgZXJyb3IuIgogbXNnc3RyICLQktGK0YLRgNC10YjQvdCwINCz0YDQtdGI0LrQsCDQsiDQv9C+0YLQvtC60LAg0L3QsCDQtNCw0L3QvdC4LiIKIAogbXNnaWQgIkdlbmVyYXRlZCBmaWxlIGhhcyBhIGxhcmdlciBwcmVyb2xsIHRpbWUgdGhhbiBpdHMgc3RyZWFtcyBkdXJhdGlvbiIKIG1zZ3N0ciAiIgorItCT0LXQvdC10YDQuNGA0LDQvdC40Y/RgiDRhNCw0LnQuyDQtSDRgSDQv9C+LdC00YrQu9Cz0L4g0LLRgNC10LzQtSDQt9CwINCx0YPRhNC10YDQuNGA0LDQvdC1INC+0YLQutC+0LvQutC+0YLQviDQtSDRgdCw0LzQsNGC0LAg0LzRgyAiCisi0L/RgNC+0LTRitC70LbQuNGC0LXQu9C90L7RgdGCIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1pc3NpbmcgZWxlbWVudCAnJXMnIC0gY2hlY2sgeW91ciBHU3RyZWFtZXIgaW5zdGFsbGF0aW9uLiIKLW1zZ3N0ciAiIgorbXNnc3RyICLQldC70LXQvNC10L3RgtGK0YIg4oCeJXPigJwg0LvQuNC/0YHQstCwLCDQv9GA0L7QstC10YDQtdGC0LUg0LjQvdGB0YLQsNC70LDRhtC40Y/RgtCwINC90LAgR1N0cmVhbWVyLiIKIAogbXNnaWQgIkZpbGUgbG9jYXRpb24gaXMgc2V0IHRvIE5VTEwsIHBsZWFzZSBzZXQgaXQgdG8gYSB2YWxpZCBmaWxlbmFtZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLQnNC10YHRgtC+0L/QvtC70L7QttC10L3QuNC10YLQviDQvdCwINGE0LDQudC70LAg0LUgTlVMTC4g0JfQsNC00LDQudGC0LUg0LjQvNC1INC90LAg0YTQsNC50LsiCiAKIG1zZ2lkICJEaWdpdGFsem9vbSBlbGVtZW50IGNvdWxkbid0IGJlIGNyZWF0ZWQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi0JXQu9C10LzQtdC90YLRitGCINC30LAg0YbQuNGE0YDQvtCy0L4g0YPQstC10LvQuNGH0LXQvdC40LUg0L3QtSDQvNC+0LbQtSDQtNCwINCx0YrQtNC1INGB0YrQt9C00LDQtNC10L0iCiAKIG1zZ2lkICJTdWJwaWN0dXJlIGZvcm1hdCB3YXMgbm90IGNvbmZpZ3VyZWQgYmVmb3JlIGRhdGEgZmxvdyIKLW1zZ3N0ciAiIgorbXNnc3RyICLQpNC+0YDQvNCw0YLRitGCINC90LAg0L/QvtC00LrQsNGA0YLQuNC90LDRgtCwINC90LUg0LUg0LHQuNC7INGD0YLQvtGH0L3QtdC9INC/0YDQtdC00Lgg0L3QsNGH0LDQu9C+0YLQviDQvdCwINC/0L7RgtC+0LrQsCIKIAogbXNnaWQgIkZhaWxlZCB0byBnZXQgZnJhZ21lbnQgVVJMLiIKLW1zZ3N0ciAiIgorbXNnc3RyICLQndC10YPRgdC/0LXRiNC90L4g0L/QvtC70YPRh9Cw0LLQsNC90LUg0L3QsCDQsNC00YDQtdGB0LAg0L3QsCDRhNGA0LDQs9C80LXQvdGC0LAuIgogCiBtc2dpZCAiSW50ZXJuYWwgZGF0YSBzdHJlYW0gZXJyb3IuIgogbXNnc3RyICLQktGK0YLRgNC10YjQvdCwINCz0YDQtdGI0LrQsCDQsiDQv9C+0YLQvtC60LAg0L3QsCDQtNCw0L3QvdC4LiIKIAogbXNnaWQgIkNvdWxkbid0IGRvd25sb2FkIGZyYWdtZW50cyIKLW1zZ3N0ciAiIgorbXNnc3RyICLQpNGA0LDQs9C80LXQvdGC0LjRgtC1INC90LUg0LzQvtCz0LDRgiDQtNCwINCx0YrQtNCw0YIg0YHQstCw0LvQtdC90LgiCiAKIG1zZ2lkICJObyBmaWxlIG5hbWUgc3BlY2lmaWVkIGZvciB3cml0aW5nLiIKIG1zZ3N0ciAi0J3QtSDQtSDRg9C60LDQt9Cw0L3QviDQuNC80LUg0L3QsCDRhNCw0LnQuyDQt9CwINC30LDQv9C40YEuIgpAQCAtMTg4LDYgKzk4LDggQEAKICMsIGMtZm9ybWF0CiBtc2dpZCAiR2l2ZW4gZmlsZSBuYW1lIFwiJXNcIiBjYW4ndCBiZSBjb252ZXJ0ZWQgdG8gbG9jYWwgZmlsZSBuYW1lIGVuY29kaW5nLiIKIG1zZ3N0ciAiIgorItCX0LDQtNCw0LTQtdC90L7RgtC+INC40LzQtSDQvdCwINGE0LDQudC7IOKAniVz4oCcINC90LUg0LzQvtC20LUg0LTQsCDQsdGK0LTQtSDQv9GA0LXRhdCy0YrRgNC70LXQvdC+INCyINC70L7QutCw0LvQvdC+0YLQviDQutC+0LTQuNGA0LDQvdC1ICIKKyLQvdCwINC40LzQtdC90LAg0L3QsCDRhNCw0LnQu9C+0LLQtS4iCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHdyaXRpbmcuIgpAQCAtMjA1LDkgKzExNyw5IEBACiBtc2dpZCAiQ291bGQgbm90IGdldCBzZXR0aW5ncyBmcm9tIGZyb250ZW5kIGRldmljZSBcIiVzXCIuIgogbXNnc3RyICLQndCw0YHRgtGA0L7QudC60LjRgtC1INC90LAg0YPRgdGC0YDQvtC50YHRgtCy0L7RgtC+IOKAniVz4oCcINC90LUg0LzQvtCz0LDRgiDQtNCwINCx0YrQtNCw0YIg0L/QvtC70YPRh9C10L3QuC4iCiAKLSMsIGZ1enp5LCBjLWZvcm1hdAorIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZW51bWVyYXRlIGRlbGl2ZXJ5IHN5c3RlbXMgZnJvbSBmcm9udGVuZCBkZXZpY2UgXCIlc1wiLiIKLW1zZ3N0ciAi0J3QsNGB0YLRgNC+0LnQutC40YLQtSDQvdCwINGD0YHRgtGA0L7QudGB0YLQstC+0YLQviDigJ4lc+KAnCDQvdC1INC80L7Qs9Cw0YIg0LTQsCDQsdGK0LTQsNGCINC/0L7Qu9GD0YfQtdC90LguIgorbXNnc3RyICLQodC40YHRgtC10LzQuNGC0LUg0LfQsCDQtNC+0YHRgtCw0LLQutCwINC+0YIg0YPRgdGC0YDQvtC50YHRgtCy0L7RgtC+IOKAniVz4oCcINC90LUg0LzQvtCz0LDRgiDQtNCwINCx0YrQtNCw0YIg0LjQt9Cx0YDQvtC10L3QuC4iCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmcuIgpAQCAtMjE1LDE3ICsxMjcsMjAgQEAKIAogbXNnaWQgIkNvdWxkbid0IGZpbmQgRFZCIGNoYW5uZWwgY29uZmlndXJhdGlvbiBmaWxlIgogbXNnc3RyICIiCisi0KTQsNC50LvRitGCINGBINC90LDRgdGC0YDQvtC50LrQuNGC0LUg0L3QsCDRhtC40YTRgNC+0LLQvtGC0L4g0LLQuNC00LXQvtGA0YrQt9C/0YDRitGB0LrQstCw0L3QtSAoRFZCKSDQvdC1INC80L7QttC1INC00LAg0LHRitC00LUgIgorItC+0YLQutGA0LjRgiIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZG4ndCBsb2FkIERWQiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gZmlsZTogJXMiCiBtc2dzdHIgIiIKKyLQpNCw0LnQu9GK0YIg0YEg0L3QsNGB0YLRgNC+0LnQutC40YLQtSDQvdCwINGG0LjRhNGA0L7QstC+0YLQviDQstC40LTQtdC+0YDRitC30L/RgNGK0YHQutCy0LDQvdC1IChEVkIpIOKAniVz4oCcINC90LUg0LzQvtC20LUg0LTQsCAiCisi0LHRitC00LUg0L/RgNC+0YfQtdGC0LXQvSIKIAogbXNnaWQgIkRWQiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBkb2Vzbid0IGNvbnRhaW4gYW55IGNoYW5uZWxzIgogbXNnc3RyICIiCisi0KTQsNC50LvRitGCINGBINC90LDRgdGC0YDQvtC50LrQuNGC0LUg0L3QsCDRhtC40YTRgNC+0LLQvtGC0L4g0LLQuNC00LXQvtGA0YrQt9C/0YDRitGB0LrQstCw0L3QtSAoRFZCKSDQvdC1INGB0YrQtNGK0YDQttCwINC90LjQutCw0LrQstC4ICIKKyLQutCw0L3QsNC70LgiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGRuJ3QgZmluZCBkZXRhaWxzIGZvciBEVkIgY2hhbm5lbCAlcyIKLW1zZ3N0ciAiIgotCi0jfiBtc2dpZCAiQ291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wiLiIKLSN+IG1zZ3N0ciAi0J3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0LfQsNC/0LjRgdCy0LAg0LLRitCyINGE0LDQudC70LAg4oCeJXPigJwuIgorbXNnc3RyICLQm9C40L/RgdCy0LDRgiDQtNCw0L3QvdC4INC30LAg0LrQsNC90LDQu9CwINC30LAg0YbQuNGE0YDQvtCy0L4g0LLQuNC00LXQvtGA0YrQt9C/0YDRitGB0LrQstCw0L3QtSAoRFZCKSDigJ4lc+KAnCIKZGlmZiAtLWdpdCBhL3BvL2NhLmdtbyBiL3BvL2NhLmdtbwppbmRleCBlMDk0NTgwLi45OGJkMzk1IDEwMDY0NAotLS0gYS9wby9jYS5nbW8KKysrIGIvcG8vY2EuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2NhLnBvIGIvcG8vY2EucG8KaW5kZXggMDhkZTI3MS4uNDdiZmIxYiAxMDA2NDQKLS0tIGEvcG8vY2EucG8KKysrIGIvcG8vY2EucG8KQEAgLTksNyArOSw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjIxLjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTItMDEtMDEgMTQ6MTkrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogR2lsIEZvcmNhZGEgPGdmb3JjYWRhQGdub21lLm9yZz5cbiIKICJMYW5ndWFnZS1UZWFtOiBDYXRhbGFuIDxjYUBkb2Rkcy5uZXQ+XG4iCkBAIC0yMiw5NSArMjIsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vY3MuZ21vIGIvcG8vY3MuZ21vCmluZGV4IDBhYTcyMWYuLmRkMzM3NDMgMTAwNjQ0Ci0tLSBhL3BvL2NzLmdtbworKysgYi9wby9jcy5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vY3MucG8gYi9wby9jcy5wbwppbmRleCBmZThjNzIyLi5iMDJmZDE0IDEwMDY0NAotLS0gYS9wby9jcy5wbworKysgYi9wby9jcy5wbwpAQCAtMTEsNyArMTEsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS42LjBcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMTAtMTUgMjA6NTQrMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogTWFyZWsgxIxlcm5vY2vDvSA8bWFyZWtAbWFuZXQuY3o+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogQ3plY2ggPHRyYW5zbGF0aW9uLXRlYW0tY3NAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMjUsMTEzICsyNSw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgImZvcm3DoXQgbmVieWwgdnlqZWRuw6FuIHDFmWVkIHrDrXNrw6Fuw61tIGZ1bmtjZSIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgInbDvWNob3rDrSB6dnVrb3bDvSBjw61sIEdTdHJlYW1lciBwcm8genZ1a292w6kgdWTDoWxvc3RpIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIHVtw60gcMWZZWhyw6F2YXQgenZ1ayBwb21vY8OtIG1ub2hhIHbDvXN0dXBuw61jaCBwcnZrxa8uIE1vxb5uw6kgdm9sYnkganNvdSAiCi0ib3Nzc2luaywgcHVsc2VzaW5rIGEgYWxzYXNpbmsuIFp2dWtvdsO9bSBjw61sZW0gbcWvxb5lIGLDvXQgbmFtw61zdG8gamVkbm9obyAiCi0iZWxlbWVudHUgaSDEjcOhc3RlxI1uw6Egcm91cmEuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgInBvcGlzIHbDvWNob3rDrWhvIHp2dWtvdsOpaG8gY8OtbGUgcHJvIHp2dWtvdsOpIHVkw6Fsb3N0aSBHU3RyZWFtZXIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiUG9waXN1amUgdnlicmFuw70gZWxlbWVudCBzbG91xb7DrWPDrSBqYWtvIGPDrWwgcHJvIHp2dWsuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgInbDvWNob3rDrSB6dnVrb3bDvSBjw61sIEdTdHJlYW1lciBwcm8gaGxhc292w6kga29uZmVyZW5jZSBhIHZpZGVva29uZmVyZW5jZSIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLSJwb3BpcyB2w71jaG96w61obyB6dnVrb3bDqWhvIGPDrWxlIEdTdHJlYW1lciBwcm8gaGxhc292w6kga29uZmVyZW5jZSBhICIKLSJ2aWRlb2tvbmZlcmVuY2UiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgInbDvWNob3rDrSB6dnVrb3bDvSBjw61sIEdTdHJlYW1lciBwcm8gaHVkYnUgYSBmaWxteSIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgInBvcGlzIHbDvWNob3rDrWhvIHp2dWtvdsOpaG8gY8OtbGUgR1N0cmVhbWVyIHBybyBodWRidSBhIGZpbG15IgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICJ2w71jaG96w60gY8OtbCB2aWRlYSBHU3RyZWFtZXIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciB1bcOtIHDFmWVocsOhdmF0IHZpZGVvIHBvbW9jw60gbW5vaGEgdsO9c3R1cG7DrWNoIHBydmvFry4gTW/Fvm7DqSB2b2xieSAiCi0ianNvdSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGEgYWFzaW5rLiBDw61sZW0gdmlkZWEgbcWvxb5lIGLDvXQgIgotIm5hbcOtc3RvIHByw6F2xJsgamVkbm9obyBlbGVtZW50dSBpIMSNw6FzdGXEjW7DoSByb3VyYS4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICJwb3BpcyB2w71jaG96w61obyBjw61sZSB2aWRlYSBHU3RyZWFtZXIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiUG9waXN1amUgdnlicmFuw70gZWxlbWVudCBzbG91xb7DrWPDrSBqYWtvIGPDrWwgcHJvIHZpZGVvLiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJ2w71jaG96w60gemRyb2ogenZ1a3UgR1N0cmVhbWVyIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciB1bcOtIG5haHLDoXZhdCB6dnVrIHBvbW9jw60gbW5vaGEgdnN0dXBuw61jaCBwcnZrxa8uIE1vxb5uw6kgdm9sYnkganNvdSAiCi0ib3Nzc3JjLCBwdWxzZXNyYyBhIGFsc2FzcmMuIFp2dWtvdsO9bSB6ZHJvamVtIG3Fr8W+ZSBiw710IG5hbcOtc3RvIHByw6F2xJsgamVkbm9obyAiCi0iZWxlbWVudHUgaSDEjcOhc3RlxI1uw6Egcm91cmEuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJwb3BpcyBwcm8gdsO9Y2hvesOtIHpkcm9qIHp2dWt1IEdTdHJlYW1lciIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIlBvcGlzdWplIHZ5YnJhbsO9IGVsZW1lbnQgc2xvdcW+w61jw60gamFrbyB6ZHJvaiB6dnVrdS4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAidsO9Y2hvesOtIHpkcm9qIHZpZGVhIEdTdHJlYW1lciIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIgdW3DrSBuYWhyw6F2YXQgdmlkZW8gcG9tb2PDrSBtbm9oYSB2c3R1cG7DrWNoIHBydmvFry4gTW/Fvm7DqSB2b2xieSBqc291ICIKLSJ2NGxzcmMsIHY0bDJzcmMgYSB2aWRlb3Rlc3RzcmMuIFpkcm9qZW0gdmlkZWEgbcWvxb5lIGLDvXQgbmFtw61zdG8gcHLDoXbEmyBqZWRub2hvICIKLSJlbGVtZW50dSBpIMSNw6FzdGXEjW7DoSByb3VyYS4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgInBvcGlzIHBybyB2w71jaG96w60gemRyb2ogdmlkZWEgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiUG9waXN1amUgdnlicmFuw70gZWxlbWVudCBzbG91xb7DrWPDrSBqYWtvIHpkcm9qIHZpZGVhLiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgInbDvWNob3rDrSB2aXp1YWxpemFjZSBHU3RyZWFtZXIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciB1bcOtIGRvIHJvdXJ5IHZsb8W+aXQgdml6dWFsaXphxI1uw60gesOhc3V2bsO9IG1vZHVsLCBhYnkgcHJvdsOhZMSbbCB6bcSbbnkgIgotInp2dWtvdsO9Y2ggcHJvdWTFryB2ZSBzbsOtbWPDrWNoIHZpZGVhLiBNb8W+bsOpIHZvbGJ5IGpzb3UgZ29vbSwgZ29vbTJrMSBhICIKLSJzeW5hZXN0aGVzaWEuIFZpenVhbGl6YcSNbsOtbSB6w6FzdXZuw71tIG1vZHVsZW0gbcWvxb5lIGLDvXQgbmFtw61zdG8gcHLDoXbEmyBqZWRub2hvICIKLSJlbGVtZW50dSBpIMSNw6FzdGXEjW7DoSByb3VyYS4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAicG9waXMgcHJvIHbDvWNob3rDrSB2aXp1YWxpemFjaSBHU3RyZWFtZXIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIlBvcGlzdWplIHZ5YnJhbsO9IHZpenVhbGl6YcSNbsOtIGVsZW1lbnQuIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICJPcGVuQ1Ygc2VsaGFsbyBwxZlpIG5hxI3DrXTDoW7DrSBvYnJhenUgxaFhYmxvbnkiCiAKQEAgLTI1MSwzICsxNDQsMTExIEBACiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCiBtc2dzdHIgIk5lbHplIG5hasOtdCBwb2Ryb2Jub3N0aSBrZSBrYW7DoWx1IERWQiAlcyIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgInbDvWNob3rDrSB6dnVrb3bDvSBjw61sIEdTdHJlYW1lciBwcm8genZ1a292w6kgdWTDoWxvc3RpIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIHVtw60gcMWZZWhyw6F2YXQgenZ1ayBwb21vY8OtIG1ub2hhIHbDvXN0dXBuw61jaCBwcnZrxa8uIE1vxb5uw6kgdm9sYnkgIgorI34gImpzb3Ugb3Nzc2luaywgcHVsc2VzaW5rIGEgYWxzYXNpbmsuIFp2dWtvdsO9bSBjw61sZW0gbcWvxb5lIGLDvXQgbmFtw61zdG8gIgorI34gImplZG5vaG8gZWxlbWVudHUgaSDEjcOhc3RlxI1uw6Egcm91cmEuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgInBvcGlzIHbDvWNob3rDrWhvIHp2dWtvdsOpaG8gY8OtbGUgcHJvIHp2dWtvdsOpIHVkw6Fsb3N0aSBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiUG9waXN1amUgdnlicmFuw70gZWxlbWVudCBzbG91xb7DrWPDrSBqYWtvIGPDrWwgcHJvIHp2dWsuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIiIKKyN+ICJ2w71jaG96w60genZ1a292w70gY8OtbCBHU3RyZWFtZXIgcHJvIGhsYXNvdsOpIGtvbmZlcmVuY2UgYSB2aWRlb2tvbmZlcmVuY2UiCisKKyN+IG1zZ2lkICIiCisjfiAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICIiCisjfiAicG9waXMgdsO9Y2hvesOtaG8genZ1a292w6lobyBjw61sZSBHU3RyZWFtZXIgcHJvIGhsYXNvdsOpIGtvbmZlcmVuY2UgYSAiCisjfiAidmlkZW9rb25mZXJlbmNlIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJ2w71jaG96w60genZ1a292w70gY8OtbCBHU3RyZWFtZXIgcHJvIGh1ZGJ1IGEgZmlsbXkiCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJwb3BpcyB2w71jaG96w61obyB6dnVrb3bDqWhvIGPDrWxlIEdTdHJlYW1lciBwcm8gaHVkYnUgYSBmaWxteSIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAidsO9Y2hvesOtIGPDrWwgdmlkZWEgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiAiCisjfiAiVGhlIHZpZGVvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgdW3DrSBwxZllaHLDoXZhdCB2aWRlbyBwb21vY8OtIG1ub2hhIHbDvXN0dXBuw61jaCBwcnZrxa8uIE1vxb5uw6kgdm9sYnkgIgorI34gImpzb3UgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhIGFhc2luay4gQ8OtbGVtIHZpZGVhIG3Fr8W+ZSBiw710ICIKKyN+ICJuYW3DrXN0byBwcsOhdsSbIGplZG5vaG8gZWxlbWVudHUgaSDEjcOhc3RlxI1uw6Egcm91cmEuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAicG9waXMgdsO9Y2hvesOtaG8gY8OtbGUgdmlkZWEgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIlBvcGlzdWplIHZ5YnJhbsO9IGVsZW1lbnQgc2xvdcW+w61jw60gamFrbyBjw61sIHBybyB2aWRlby4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAidsO9Y2hvesOtIHpkcm9qIHp2dWt1IEdTdHJlYW1lciIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgdW3DrSBuYWhyw6F2YXQgenZ1ayBwb21vY8OtIG1ub2hhIHZzdHVwbsOtY2ggcHJ2a8WvLiBNb8W+bsOpIHZvbGJ5ICIKKyN+ICJqc291IG9zc3NyYywgcHVsc2VzcmMgYSBhbHNhc3JjLiBadnVrb3bDvW0gemRyb2plbSBtxa/FvmUgYsO9dCBuYW3DrXN0byBwcsOhdsSbICIKKyN+ICJqZWRub2hvIGVsZW1lbnR1IGkgxI3DoXN0ZcSNbsOhIHJvdXJhLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAicG9waXMgcHJvIHbDvWNob3rDrSB6ZHJvaiB6dnVrdSBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJQb3Bpc3VqZSB2eWJyYW7DvSBlbGVtZW50IHNsb3XFvsOtY8OtIGpha28gemRyb2ogenZ1a3UuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgInbDvWNob3rDrSB6ZHJvaiB2aWRlYSBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSAiCisjfiAiY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIHVtw60gbmFocsOhdmF0IHZpZGVvIHBvbW9jw60gbW5vaGEgdnN0dXBuw61jaCBwcnZrxa8uIE1vxb5uw6kgdm9sYnkgIgorI34gImpzb3UgdjRsc3JjLCB2NGwyc3JjIGEgdmlkZW90ZXN0c3JjLiBaZHJvamVtIHZpZGVhIG3Fr8W+ZSBiw710IG5hbcOtc3RvIHByw6F2xJsgIgorI34gImplZG5vaG8gZWxlbWVudHUgaSDEjcOhc3RlxI1uw6Egcm91cmEuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJwb3BpcyBwcm8gdsO9Y2hvesOtIHpkcm9qIHZpZGVhIEdTdHJlYW1lciIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIlBvcGlzdWplIHZ5YnJhbsO9IGVsZW1lbnQgc2xvdcW+w61jw60gamFrbyB6ZHJvaiB2aWRlYS4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICJ2w71jaG96w60gdml6dWFsaXphY2UgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCisjfiAic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgorI34gInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCAiCisjfiAib2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgdW3DrSBkbyByb3VyeSB2bG/Fvml0IHZpenVhbGl6YcSNbsOtIHrDoXN1dm7DvSBtb2R1bCwgYWJ5IHByb3bDoWTEm2wgIgorI34gInptxJtueSB6dnVrb3bDvWNoIHByb3Vkxa8gdmUgc27DrW1jw61jaCB2aWRlYS4gTW/Fvm7DqSB2b2xieSBqc291IGdvb20sIGdvb20yazEgIgorI34gImEgc3luYWVzdGhlc2lhLiBWaXp1YWxpemHEjW7DrW0gesOhc3V2bsO9bSBtb2R1bGVtIG3Fr8W+ZSBiw710IG5hbcOtc3RvIHByw6F2xJsgIgorI34gImplZG5vaG8gZWxlbWVudHUgaSDEjcOhc3RlxI1uw6Egcm91cmEuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgInBvcGlzIHBybyB2w71jaG96w60gdml6dWFsaXphY2kgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgorI34gbXNnc3RyICJQb3Bpc3VqZSB2eWJyYW7DvSB2aXp1YWxpemHEjW7DrSBlbGVtZW50LiIKZGlmZiAtLWdpdCBhL3BvL2RhLmdtbyBiL3BvL2RhLmdtbwppbmRleCAyZjIwNWFlLi42NTRkNmYzIDEwMDY0NAotLS0gYS9wby9kYS5nbW8KKysrIGIvcG8vZGEuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2RhLnBvIGIvcG8vZGEucG8KaW5kZXggNTY4MzkzOS4uMDU2MWI5OSAxMDA2NDQKLS0tIGEvcG8vZGEucG8KKysrIGIvcG8vZGEucG8KQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZC0xLjYuMFxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAxNS0xMi0wNSAxMToyOCswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBKb2UgSGFuc2VuIDxqb2VkYWx0b24yQHlhaG9vLmRrPlxuIgogIkxhbmd1YWdlLVRlYW06IERhbmlzaCA8ZGFuc2tAZGFuc2stZ3J1cHBlbi5kaz5cbiIKQEAgLTIwLDExMSArMjAsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICJmb3JtYXQgYmxldiBpa2tlIGZvcmhhbmRsZXQgZsO4ciBoZW50IGZ1bmt0aW9uIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAic3RhbmRhcmRseWRrYW5hbCBmb3IgR1N0cmVhbWVycyBseWRow6ZuZGVsc2VyIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiBhZnNwaWxsZSBseWQgdmlhIGV0IGFudGFsIHVkZ2FuZ3NlbGVtZW50ZXIuIE5vZ2xlIG11bGlnZSB2YWxnICIKLSJlciBvc3NzaW5rLCBwdWxzZXNpbmsgb2cgYWxzYXNpbmsuIEx5ZHVkZ2FuZ2VuIGthbiB2w6ZyZSBlbiBkZWx2aXMgZGF0YWthbmFsICIKLSJpIHN0ZWRldCBmb3IgYmFyZSBldCBlbGVtZW50LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICJiZXNrcml2ZWxzZSBhZiBzdGFuZGFyZGx5ZGthbmFsIGZvciBHU3RyZWFtZXJzIGx5ZGjDpm5kZWxzZXIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxnZSBseWRrYW5hbGVsZW1lbnQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgInN0YW5kYXJkbHlka2FuYWwgdGlsIEdTdHJlYW1lcnMgbHlkL3ZpZGVvLWtvbmZlcmVuY2UiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmRseWRrYW5hbCB0aWwgR1N0cmVhbWVycyBseWQvdmlkZW8ta29uZmVyZW5jZSIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAic3RhbmRhcmRseWRrYW5hbCB0aWwgR1N0cmVhbWVycyBtdXNpayBvZyBmaWxtIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkbHlka2FuYWwgdGlsIEdTdHJlYW1lcnMgbXVzaWsgb2cgZmlsbSIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAic3RhbmRhcmRseWRrYW5hbCBmb3IgR1N0cmVhbWVyIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIGFmc3BpbGxlIHZpZGVvIHZpYSBldCBhbnRhbCB1ZGdhbmdzZWxlbWVudGVyLiBOb2dsZSBtdWxpZ2UgIgotInZhbGcgZXIgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBvZyBhYXNpbmsuIFZpZGVvdWRnYW5nZW4ga2FuICIKLSJ2w6ZyZSBlbiBkZWx2aXMgZGF0YWthbmFsIGkgc3RlZGV0IGZvciBiYXJlIGV0IGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkdmlkZW9rYW5hbCBmb3IgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIkJlc2tyaXZlciBkZW4gdmFsZ3RlIHZpZGVva2FuYWxzZWxlbWVudC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAic3RhbmRhcmRseWRvcHRhZ2Vsc2UgZm9yIEdTdHJlYW1lciIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIG9wdGFnZSBseWQgdmlhIGV0IGFudGFsIGluZGdhbmdzZWxlbWVudGVyLiBOb2dsZSBtdWxpZ2UgdmFsZyAiCi0iZXIgb3Nzc3JjLCBwdWxzZXNyYyBvZyBhbHNhc3JjLiBMeWRraWxkZW4ga2FuIHbDpnJlIGVuIGRlbHZpcyBkYXRha2FuYWwgaSAiCi0ic3RlZGV0IGZvciBiYXJlIGV0IGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmRseWRvcHRhZ2Vsc2VuIHRpbCBHU3RyZWFtZXIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGd0ZSBseWRvcHRhZ2Vsc2VzZWxlbWVudC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAic3RhbmRhcmR2aWRlb29wdGFnZXIgZm9yIEdTdHJlYW1lciIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIG9wdGFnZSB2aWRlbyB2aWEgZXQgYW50YWwgaW5kZ2FuZ3NlbGVtZW50ZXIuIE5vZ2xlIG11bGlnZSB2YWxnICIKLSJlciB2NGxzcmMsIHY0bDJzcmMgb2cgdmlkZW90ZXN0c3JjLiBWaWRlb2tpbGRlbiBrYW4gdsOmcmUgZW4gZGVsdmlzIGRhdGFrYW5hbCAiCi0iaSBzdGVkZXQgZm9yIGJhcmUgZXQgZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZHZpZGVvb3B0YWdlcmVuIHRpbCBHU3RyZWFtZXIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGd0ZSB2aWRlb29wdGFnZXJlbGVtZW50LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIlN0YW5kYXJkdmlzdWFsaXNlcmluZyBmb3IgR1N0cmVhbWVyIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIHBsYWNlcmUgdmlzdWFsaXNlcmluZ3N1ZHZpZGVsc2VzbW9kdWxlciBpIGVuIGRhdGFrYW5hbCBmb3IgYXQgIgotInRyYW5zZm9ybWVyZSBseWRzdHLDuG1tZSBpIHZpZGVvYmlsbGVkZXIuIE5vZ2xlIG11bGlnZSB2YWxnIGVyIGdvb20sIGdvb20yazEgIgotIm9nIHN5bmFlc3RoZXNpYS4gVmlzdWFsaXNlcmluZ3N1ZHZpZGVsc2VzbW9kdWxlcm5lIGthbiB2w6ZyZSBlbiBkZWx2aXMgIgotImRhdGFrYW5hbCBpIHN0ZWRldCBmb3IgYmFyZSBldCBlbGVtZW50LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmR2aXN1YWxpc2VyaW5nIHRpbCBHU3RyZWFtZXIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZ3RlIHZpc3VhbGlzZXJpbmdzZWxlbWVudC4iCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIk9wZW5DViBtaXNseWtrZWRlcyBpIGF0IGluZGzDpnNlIHNrYWJlbG9uYWZ0cnlrIgogCkBAIC0yNDIsNiArMTM3LDExMiBAQAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCiBtc2dzdHIgIkt1bm5lIGlra2UgZmluZGUgZGV0YWxqZXIgZm9yIERWQi1rYW5hbGVuICVzIgogCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAic3RhbmRhcmRseWRrYW5hbCBmb3IgR1N0cmVhbWVycyBseWRow6ZuZGVsc2VyIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiBhZnNwaWxsZSBseWQgdmlhIGV0IGFudGFsIHVkZ2FuZ3NlbGVtZW50ZXIuIE5vZ2xlIG11bGlnZSAiCisjfiAidmFsZyBlciBvc3NzaW5rLCBwdWxzZXNpbmsgb2cgYWxzYXNpbmsuIEx5ZHVkZ2FuZ2VuIGthbiB2w6ZyZSBlbiBkZWx2aXMgIgorI34gImRhdGFrYW5hbCBpIHN0ZWRldCBmb3IgYmFyZSBldCBlbGVtZW50LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJiZXNrcml2ZWxzZSBhZiBzdGFuZGFyZGx5ZGthbmFsIGZvciBHU3RyZWFtZXJzIGx5ZGjDpm5kZWxzZXIiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxnZSBseWRrYW5hbGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgInN0YW5kYXJkbHlka2FuYWwgdGlsIEdTdHJlYW1lcnMgbHlkL3ZpZGVvLWtvbmZlcmVuY2UiCisKKyN+IG1zZ2lkICIiCisjfiAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICIiCisjfiAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkbHlka2FuYWwgdGlsIEdTdHJlYW1lcnMgbHlkL3ZpZGVvLWtvbmZlcmVuY2UiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgInN0YW5kYXJkbHlka2FuYWwgdGlsIEdTdHJlYW1lcnMgbXVzaWsgb2cgZmlsbSIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZGx5ZGthbmFsIHRpbCBHU3RyZWFtZXJzIG11c2lrIG9nIGZpbG0iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgInN0YW5kYXJkbHlka2FuYWwgZm9yIEdTdHJlYW1lciIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gIgorI34gIlRoZSB2aWRlb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiBhZnNwaWxsZSB2aWRlbyB2aWEgZXQgYW50YWwgdWRnYW5nc2VsZW1lbnRlci4gTm9nbGUgbXVsaWdlICIKKyN+ICJ2YWxnIGVyIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3Npbmsgb2cgYWFzaW5rLiBWaWRlb3VkZ2FuZ2VuICIKKyN+ICJrYW4gdsOmcmUgZW4gZGVsdmlzIGRhdGFrYW5hbCBpIHN0ZWRldCBmb3IgYmFyZSBldCBlbGVtZW50LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZHZpZGVva2FuYWwgZm9yIEdTdHJlYW1lciIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNrcml2ZXIgZGVuIHZhbGd0ZSB2aWRlb2thbmFsc2VsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgInN0YW5kYXJkbHlkb3B0YWdlbHNlIGZvciBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiBvcHRhZ2UgbHlkIHZpYSBldCBhbnRhbCBpbmRnYW5nc2VsZW1lbnRlci4gTm9nbGUgbXVsaWdlICIKKyN+ICJ2YWxnIGVyIG9zc3NyYywgcHVsc2VzcmMgb2cgYWxzYXNyYy4gTHlka2lsZGVuIGthbiB2w6ZyZSBlbiBkZWx2aXMgIgorI34gImRhdGFrYW5hbCBpIHN0ZWRldCBmb3IgYmFyZSBldCBlbGVtZW50LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkbHlkb3B0YWdlbHNlbiB0aWwgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxndGUgbHlkb3B0YWdlbHNlc2VsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgInN0YW5kYXJkdmlkZW9vcHRhZ2VyIGZvciBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSAiCisjfiAiY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiBvcHRhZ2UgdmlkZW8gdmlhIGV0IGFudGFsIGluZGdhbmdzZWxlbWVudGVyLiBOb2dsZSBtdWxpZ2UgIgorI34gInZhbGcgZXIgdjRsc3JjLCB2NGwyc3JjIG9nIHZpZGVvdGVzdHNyYy4gVmlkZW9raWxkZW4ga2FuIHbDpnJlIGVuIGRlbHZpcyAiCisjfiAiZGF0YWthbmFsIGkgc3RlZGV0IGZvciBiYXJlIGV0IGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmR2aWRlb29wdGFnZXJlbiB0aWwgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxndGUgdmlkZW9vcHRhZ2VyZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICJTdGFuZGFyZHZpc3VhbGlzZXJpbmcgZm9yIEdTdHJlYW1lciIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgorI34gInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKKyN+ICJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgIgorI34gIm9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiBwbGFjZXJlIHZpc3VhbGlzZXJpbmdzdWR2aWRlbHNlc21vZHVsZXIgaSBlbiBkYXRha2FuYWwgZm9yICIKKyN+ICJhdCB0cmFuc2Zvcm1lcmUgbHlkc3Ryw7htbWUgaSB2aWRlb2JpbGxlZGVyLiBOb2dsZSBtdWxpZ2UgdmFsZyBlciBnb29tLCAiCisjfiAiZ29vbTJrMSBvZyBzeW5hZXN0aGVzaWEuIFZpc3VhbGlzZXJpbmdzdWR2aWRlbHNlc21vZHVsZXJuZSBrYW4gdsOmcmUgZW4gIgorI34gImRlbHZpcyBkYXRha2FuYWwgaSBzdGVkZXQgZm9yIGJhcmUgZXQgZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkdmlzdWFsaXNlcmluZyB0aWwgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGd0ZSB2aXN1YWxpc2VyaW5nc2VsZW1lbnQuIgorCiAjfiBtc2dpZCAiQ291bGRuJ3QgZ2V0IHRoZSBNYW5pZmVzdCdzIFVSSSIKICN+IG1zZ3N0ciAiS3VubmUgaWtrZSBpbmRoZW50ZSBNYW5pZmVzdGVucyBhZHJlc3NlIgogCmRpZmYgLS1naXQgYS9wby9kZS5nbW8gYi9wby9kZS5nbW8KaW5kZXggY2RlZWRlZS4uYWYzM2Q4OCAxMDA2NDQKLS0tIGEvcG8vZGUuZ21vCisrKyBiL3BvL2RlLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9kZS5wbyBiL3BvL2RlLnBvCmluZGV4IGExMGM3MmIuLjRjODVhMTcgMTAwNjQ0Ci0tLSBhL3BvL2RlLnBvCisrKyBiL3BvL2RlLnBvCkBAIC04LDcgKzgsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS42LjBcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMTAtMjEgMDA6MTUrMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogQ2hyaXN0aWFuIEtpcmJhY2ggPGNocmlzdGlhbi5raXJiYWNoQGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBHZXJtYW4gPHRyYW5zbGF0aW9uLXRlYW0tZGVAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMjIsMTE4ICsyMiw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgImRhcyBGb3JtYXQgd3VyZGUgdm9yIGRlciBnZXQtRnVua3Rpb24gbmljaHQgYXVzZ2VoYW5kZWx0IgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiVm9yZWluZ2VzdGVsbHRlIEdTdHJlYW1lciBUb25lcmVpZ25pcy1BdWRpb3ppZWwiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FubiBUb24gbWl0IGVpbmVyIGJlbGllYmlnZW4gQW56YWhsIGFuIEF1c2dhYmVlbGVtZW50ZW4gIgotIndpZWRlcmdlYmVuLiBFaW5pZ2UgV2FobG3DtmdsaWNoa2VpdGVuIHNpbmQgwrtvc3NzaW5rwqssIMK7cHVsc2VzaW5rwqsgdW5kICIKLSLCu2Fsc2FzaW5rwqsuIERhcyBBdWRpb3ppZWwga2FubiBlaW5lIHRlaWx3ZWlzZSBXZWl0ZXJsZWl0dW5nIGFuc3RlbGxlIG51ciAiCi0iZWluZXMgZWluemlnZW4gRWxlbWVudHMgc2Vpbi4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiQmVzY2hyZWlidW5nIGRlcyB2b3JlaW5nZXN0ZWxsdGVuIEdTdHJlYW1lciBUb25lcmVpZ25pcy1BdWRpb3ppZWwiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiQmVzY2hyZWlidCBkYXMgZ2V3w6RobHRlIEF1ZGlvemllbC1FbGVtZW50LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICJWb3JlaW5nZXN0ZWxsdGVzIEdTdHJlYW1lci1BdWRpb3ppZWwgZsO8ciBUb24tIHVuZCBWaWRlb2tvbmZlcmVuemVuIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotIkJlc2NocmVpYnVuZyBkZXMgdm9yZWluZ2VzdGVsbHRlbiBHU3RyZWFtZXItQXVkaW96aWVsIGbDvHIgVG9uLSB1bmQgIgotIlZpZGVva29uZmVyZW56ZW4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIlZvcmVpbmdlc3RlbGx0ZXMgR1N0cmVhbWVyLUF1ZGlvemllbCBmw7xyIE11c2lrIHVuZCBGaWxtZSIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLSJCZXNjaHJlaWJ1bmcgZGVzIHZvcmVpbmdlc3RlbGx0ZW4gR1N0cmVhbWVyLUF1ZGlvemllbCBmw7xyIE11c2lrIHVuZCBGaWxtZSIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiVm9yZWluZ2VzdGVsbHRlcyBHU3RyZWFtZXItVmlkZW96aWVsIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FubiBWaWRlbyBtaXQgZWluZXIgYmVsaWViaWdlbiBBbnphaGwgYW4gQXVzZ2FiZWVsZW1lbnRlbiAiCi0id2llZGVyZ2ViZW4uIEVpbmlnZSBXYWhsbcO2Z2xpY2hrZWl0ZW4gc2luZCDCu3h2aW1hZ2VzaW5rwqssIMK7eGltYWdlc2lua8KrLCAiCi0iwrtzZGx2aWRlb3NpbmvCqyB1bmQgwrthYXNpbmvCqy4gRGFzIFZpZGVvemllbCBrYW5uIGVpbmUgYW50ZWlsaWdlIFdlaXRlcmxlaXR1bmcgIgotImFuc3RlbGxlIGVpbmVzIGVpbnppZ2VuIEVsZW1lbnRzIHNlaW4uIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiQmVzY2hyZWlidW5nIGRlcyB2b3JlaW5nZXN0ZWxsdGVuIEdTdHJlYW1lci1WaWRlb3ppZWwiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiQmVzY2hyZWlidCBkYXMgZ2V3w6RobHRlIFZpZGVvemllbC1FbGVtZW50LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJWb3JlaW5nZXN0ZWxsdGVzIEdTdHJlYW1lci1hdWRpb3NyYyIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FubiBUb24gbWl0IGVpbmVyIGJlbGllYmlnZW4gQW56YWhsIGFuIEVpbmdhYmVlbGVtZW50ZW4gIgotImF1ZnplaWNobmVuLiBFaW5pZ2UgV2FobG3DtmdsaWNoa2VpdGVuIHNpbmQgwrtvc3NzcmPCqywgwrtwdWxzZXNyY8KrIHVuZCAiCi0iwrthbHNhc3JjwqsuIERpZSBBdWRpb3F1ZWxsZSBrYW5uIGVpbmUgYW50ZWlsaWdlIFdlaXRlcmxlaXR1bmcgYW5zdGVsbGUgZWluZXMgIgotImVpbnppZ2VuIEVsZW1lbnRzIHNlaW4uIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJCZXNjaHJlaWJ1bmcgZGVzIHZvcmVpbmdlc3RlbGx0ZW4gR1N0cmVhbWVyLWF1ZGlvc3JjIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiQmVzY2hyZWlidCBkYXMgZ2V3w6RobHRlIGF1ZGlvc3JjLUVsZW1lbnQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIlZvcmVpbmdlc3RlbGx0ZXMgR1N0cmVhbWVyLXZpZGVvc3JjIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBrYW5uIFZpZGVvIG1pdCBlaW5lciBiZWxpZWJpZ2VuIEFuemFobCBhbiBFaW5nYWJlZWxlbWVudGVuICIKLSJhdWZ6ZWljaG5lbi4gRWluaWdlIFdhaGxtw7ZnbGljaGtlaXRlbiBzaW5kIMK7djRsc3JjwqssIMK7djRsMnNyY8KrIHVuZCAiCi0iwrt2aWRlb3Rlc3RzcmPCqy4gRGllIFZpZGVvcXVlbGxlIGthbm4gZWluZSBhbnRlaWxpZ2UgV2VpdGVybGVpdHVuZyBhbnN0ZWxsZSAiCi0iZWluZXMgZWluemlnZW4gRWxlbWVudHMgc2Vpbi4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIkJlc2NocmVpYnVuZyBkZXMgdm9yZWluZ2VzdGVsbHRlbiBHU3RyZWFtZXItdmlkZW9zcmMiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJCZXNjaHJlaWJ0IGRhcyBnZXfDpGhsdGUgdmlkZW9zcmMtRWxlbWVudC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJWb3JlaW5nZXN0ZWxsdGUgR1N0cmVhbWVyLVZpc3VhbGlzaWVydW5nIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FubiBWaXN1YWxpc2llcnVuZ3MtUGx1Z2lucyBpbiBlaW5lIFdlaXRlcmxlaXR1bmcgaW50ZWdyaWVyZW4sIHVtICIKLSJBdWRpb3N0csO2bWUgaW4gVmlkZW9iaWxkZXIgdW16dXdhbmRlbG4uIEVpbmlnZSBXYWhsbcO2Z2xpY2hrZWl0ZW4gc2luZCAiCi0iwrtnb29twqssIMK7Z29vbTJrMcKrIHVuZCDCu3N5bmFlc3RoZXNpYcKrLiBEYXMgVmlzdWFsaXNpZXJ1bmdzLVBsdWdpbiBrYW5uIGVpbmUgIgotImFudGVpbGlnZSBXZWl0ZXJsZWl0dW5nIGFuc3RlbGxlIGVpbmVzIGVpbnppZ2VuIEVsZW1lbnRzIHNlaW4uIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIkJlc2NocmVpYnVuZyBkZXIgdm9yZWluZ2VzdGVsbHRlbiBHU3RyZWFtZXItVmlzdWFsaXNpZXJ1bmciCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIkJlc2NocmVpYnQgZGFzIGdld8OkaGx0ZSBWaXN1YWxpc2llcnVuZ3NlbGVtZW50LiIKLQogIyBPcGVuQ1YgaXN0IGVpbmUgZnJlaWUgUHJvZ3JhbW1iaWJsaW90aGVrIG1pdCBBbGdvcml0aG1lbiBmw7xyIGRpZSBCaWxkdmVyYXJiZWl0dW5nIHVuZCBtYXNjaGluZWxsZXMgU2VoZW4uCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICJPcGVuQ1Yga29ubnRlIG5pY2h0IGRpZSBCaWxkdm9ybGFnZSBsYWRlbiIKQEAgLTI1OSw2ICsxNDcsMTE4IEBACiBtc2dpZCAiQ291bGRuJ3QgZmluZCBkZXRhaWxzIGZvciBEVkIgY2hhbm5lbCAlcyIKIG1zZ3N0ciAiRGV0YWlscyB6dSBEVkItS2FuYWwgJXMga29ubnRlbiBuaWNodCBnZWZ1bmRlbiB3ZXJkZW4iCiAKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJWb3JlaW5nZXN0ZWxsdGUgR1N0cmVhbWVyIFRvbmVyZWlnbmlzLUF1ZGlvemllbCIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW5uIFRvbiBtaXQgZWluZXIgYmVsaWViaWdlbiBBbnphaGwgYW4gQXVzZ2FiZWVsZW1lbnRlbiAiCisjfiAid2llZGVyZ2ViZW4uIEVpbmlnZSBXYWhsbcO2Z2xpY2hrZWl0ZW4gc2luZCDCu29zc3NpbmvCqywgwrtwdWxzZXNpbmvCqyB1bmQgIgorI34gIsK7YWxzYXNpbmvCqy4gRGFzIEF1ZGlvemllbCBrYW5uIGVpbmUgdGVpbHdlaXNlIFdlaXRlcmxlaXR1bmcgYW5zdGVsbGUgbnVyICIKKyN+ICJlaW5lcyBlaW56aWdlbiBFbGVtZW50cyBzZWluLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJCZXNjaHJlaWJ1bmcgZGVzIHZvcmVpbmdlc3RlbGx0ZW4gR1N0cmVhbWVyIFRvbmVyZWlnbmlzLUF1ZGlvemllbCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNjaHJlaWJ0IGRhcyBnZXfDpGhsdGUgQXVkaW96aWVsLUVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIlZvcmVpbmdlc3RlbGx0ZXMgR1N0cmVhbWVyLUF1ZGlvemllbCBmw7xyIFRvbi0gdW5kIFZpZGVva29uZmVyZW56ZW4iCisKKyN+IG1zZ2lkICIiCisjfiAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICIiCisjfiAiQmVzY2hyZWlidW5nIGRlcyB2b3JlaW5nZXN0ZWxsdGVuIEdTdHJlYW1lci1BdWRpb3ppZWwgZsO8ciBUb24tIHVuZCAiCisjfiAiVmlkZW9rb25mZXJlbnplbiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAiVm9yZWluZ2VzdGVsbHRlcyBHU3RyZWFtZXItQXVkaW96aWVsIGbDvHIgTXVzaWsgdW5kIEZpbG1lIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAiIgorI34gIkJlc2NocmVpYnVuZyBkZXMgdm9yZWluZ2VzdGVsbHRlbiBHU3RyZWFtZXItQXVkaW96aWVsIGbDvHIgTXVzaWsgdW5kIEZpbG1lIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJWb3JlaW5nZXN0ZWxsdGVzIEdTdHJlYW1lci1WaWRlb3ppZWwiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuICIKKyN+ICJUaGUgdmlkZW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW5uIFZpZGVvIG1pdCBlaW5lciBiZWxpZWJpZ2VuIEFuemFobCBhbiBBdXNnYWJlZWxlbWVudGVuICIKKyN+ICJ3aWVkZXJnZWJlbi4gRWluaWdlIFdhaGxtw7ZnbGljaGtlaXRlbiBzaW5kIMK7eHZpbWFnZXNpbmvCqywgwrt4aW1hZ2VzaW5rwqssICIKKyN+ICLCu3NkbHZpZGVvc2lua8KrIHVuZCDCu2Fhc2lua8KrLiBEYXMgVmlkZW96aWVsIGthbm4gZWluZSBhbnRlaWxpZ2UgIgorI34gIldlaXRlcmxlaXR1bmcgYW5zdGVsbGUgZWluZXMgZWluemlnZW4gRWxlbWVudHMgc2Vpbi4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJCZXNjaHJlaWJ1bmcgZGVzIHZvcmVpbmdlc3RlbGx0ZW4gR1N0cmVhbWVyLVZpZGVvemllbCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNjaHJlaWJ0IGRhcyBnZXfDpGhsdGUgVmlkZW96aWVsLUVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgIlZvcmVpbmdlc3RlbGx0ZXMgR1N0cmVhbWVyLWF1ZGlvc3JjIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW5uIFRvbiBtaXQgZWluZXIgYmVsaWViaWdlbiBBbnphaGwgYW4gRWluZ2FiZWVsZW1lbnRlbiAiCisjfiAiYXVmemVpY2huZW4uIEVpbmlnZSBXYWhsbcO2Z2xpY2hrZWl0ZW4gc2luZCDCu29zc3NyY8KrLCDCu3B1bHNlc3JjwqsgdW5kICIKKyN+ICLCu2Fsc2FzcmPCqy4gRGllIEF1ZGlvcXVlbGxlIGthbm4gZWluZSBhbnRlaWxpZ2UgV2VpdGVybGVpdHVuZyBhbnN0ZWxsZSAiCisjfiAiZWluZXMgZWluemlnZW4gRWxlbWVudHMgc2Vpbi4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgIkJlc2NocmVpYnVuZyBkZXMgdm9yZWluZ2VzdGVsbHRlbiBHU3RyZWFtZXItYXVkaW9zcmMiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNjaHJlaWJ0IGRhcyBnZXfDpGhsdGUgYXVkaW9zcmMtRWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAiVm9yZWluZ2VzdGVsbHRlcyBHU3RyZWFtZXItdmlkZW9zcmMiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSAiCisjfiAiY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbm4gVmlkZW8gbWl0IGVpbmVyIGJlbGllYmlnZW4gQW56YWhsIGFuIEVpbmdhYmVlbGVtZW50ZW4gIgorI34gImF1ZnplaWNobmVuLiBFaW5pZ2UgV2FobG3DtmdsaWNoa2VpdGVuIHNpbmQgwrt2NGxzcmPCqywgwrt2NGwyc3JjwqsgdW5kICIKKyN+ICLCu3ZpZGVvdGVzdHNyY8KrLiBEaWUgVmlkZW9xdWVsbGUga2FubiBlaW5lIGFudGVpbGlnZSBXZWl0ZXJsZWl0dW5nICIKKyN+ICJhbnN0ZWxsZSBlaW5lcyBlaW56aWdlbiBFbGVtZW50cyBzZWluLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAiQmVzY2hyZWlidW5nIGRlcyB2b3JlaW5nZXN0ZWxsdGVuIEdTdHJlYW1lci12aWRlb3NyYyIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2NocmVpYnQgZGFzIGdld8OkaGx0ZSB2aWRlb3NyYy1FbGVtZW50LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgIlZvcmVpbmdlc3RlbGx0ZSBHU3RyZWFtZXItVmlzdWFsaXNpZXJ1bmciCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKKyN+ICJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCisjfiAic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkICIKKyN+ICJvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW5uIFZpc3VhbGlzaWVydW5ncy1QbHVnaW5zIGluIGVpbmUgV2VpdGVybGVpdHVuZyBpbnRlZ3JpZXJlbiwgIgorI34gInVtIEF1ZGlvc3Ryw7ZtZSBpbiBWaWRlb2JpbGRlciB1bXp1d2FuZGVsbi4gRWluaWdlIFdhaGxtw7ZnbGljaGtlaXRlbiBzaW5kICIKKyN+ICLCu2dvb23Cqywgwrtnb29tMmsxwqsgdW5kIMK7c3luYWVzdGhlc2lhwqsuIERhcyBWaXN1YWxpc2llcnVuZ3MtUGx1Z2luIGthbm4gIgorI34gImVpbmUgYW50ZWlsaWdlIFdlaXRlcmxlaXR1bmcgYW5zdGVsbGUgZWluZXMgZWluemlnZW4gRWxlbWVudHMgc2Vpbi4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAiQmVzY2hyZWlidW5nIGRlciB2b3JlaW5nZXN0ZWxsdGVuIEdTdHJlYW1lci1WaXN1YWxpc2llcnVuZyIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVzY2hyZWlidCBkYXMgZ2V3w6RobHRlIFZpc3VhbGlzaWVydW5nc2VsZW1lbnQuIgorCiAjfiBtc2dpZCAiQ291bGRuJ3QgZ2V0IHRoZSBNYW5pZmVzdCdzIFVSSSIKICN+IG1zZ3N0ciAiQWRyZXNzZSBkZXIgRnJhY2h0bGlzdGUga29ubnRlIG5pY2h0IGVybWl0dGVsdCB3ZXJkZW4iCiAKZGlmZiAtLWdpdCBhL3BvL2VsLmdtbyBiL3BvL2VsLmdtbwppbmRleCA5MjJiZjNkLi5kOTdlYWQ3IDEwMDY0NAotLS0gYS9wby9lbC5nbW8KKysrIGIvcG8vZWwuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2VsLnBvIGIvcG8vZWwucG8KaW5kZXggYzIwMzIxNy4uZTJkYTY1ZiAxMDA2NDQKLS0tIGEvcG8vZWwucG8KKysrIGIvcG8vZWwucG8KQEAgLTksNyArOSw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjIxLjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTItMDUtMDUgMTk6MTcrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogU2F2dmFzIFJhZGV2aWMgPHZpY2VkYXJAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IEdyZWVrIDx0ZWFtQGxpc3RzLmdub21lLmdyPlxuIgpAQCAtMjIsOTUgKzIyLDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL2VuX0dCLmdtbyBiL3BvL2VuX0dCLmdtbwppbmRleCAxY2YyZTkwLi5kM2JiZTVlIDEwMDY0NAotLS0gYS9wby9lbl9HQi5nbW8KKysrIGIvcG8vZW5fR0IuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2VuX0dCLnBvIGIvcG8vZW5fR0IucG8KaW5kZXggMzJjMmI1YS4uYTUzMzNlMSAxMDA2NDQKLS0tIGEvcG8vZW5fR0IucG8KKysrIGIvcG8vZW5fR0IucG8KQEAgLTYsNyArNiw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zIDAuOC4xXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA0LTA0LTI2IDEwOjQxLTA0MDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEdhcmV0aCBPd2VuIDxnb3dlbjcyQHlhaG9vLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBFbmdsaXNoIChCcml0aXNoKSA8ZW5fZ2JAbGkub3JnPlxuIgpAQCAtMTgsOTUgKzE4LDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL2VvLmdtbyBiL3BvL2VvLmdtbwppbmRleCBkYWUyOTIxLi5kNDBjZjRiIDEwMDY0NAotLS0gYS9wby9lby5nbW8KKysrIGIvcG8vZW8uZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2VvLnBvIGIvcG8vZW8ucG8KaW5kZXggMzA1YTA4NC4uZmYzYzY0OSAxMDA2NDQKLS0tIGEvcG8vZW8ucG8KKysrIGIvcG8vZW8ucG8KQEAgLTcsNyArNyw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjIxLjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTEtMDYtMDQgMjI6MTgrMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogS3Jpc3RqYW4gU0NITUlEVCA8a3Jpc3RqYW4uc2NobWlkdEBnb29nbGVtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBFc3BlcmFudG8gPHRyYW5zbGF0aW9uLXRlYW0tZW9AbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMjAsOTUgKzIwLDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL2VzLmdtbyBiL3BvL2VzLmdtbwppbmRleCAzY2Q5N2I3Li43NTMyNGFlIDEwMDY0NAotLS0gYS9wby9lcy5nbW8KKysrIGIvcG8vZXMuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2VzLnBvIGIvcG8vZXMucG8KaW5kZXggNDc3YWFlMS4uYzczM2FlNCAxMDA2NDQKLS0tIGEvcG8vZXMucG8KKysrIGIvcG8vZXMucG8KQEAgLTcsNyArNyw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjIxLjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTEtMTAtMDIgMTU6NDcrMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogSm9yZ2UgR29uesOhbGV6IEdvbnrDoWxleiA8YWxvcmllbEBnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogU3BhbmlzaCA8ZXNAbGkub3JnPlxuIgpAQCAtMjAsOTUgKzIwLDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL2V1LmdtbyBiL3BvL2V1LmdtbwppbmRleCBkMjhhN2ExLi4xNzc0ZGRiIDEwMDY0NAotLS0gYS9wby9ldS5nbW8KKysrIGIvcG8vZXUuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2V1LnBvIGIvcG8vZXUucG8KaW5kZXggYWQyNzhlNi4uNzI1YWQyZCAxMDA2NDQKLS0tIGEvcG8vZXUucG8KKysrIGIvcG8vZXUucG8KQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZC0wLjEwLjE3LjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTAtMDMtMjUgMTI6MzArMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogTWlrZWwgT2xhc2FnYXN0aSBVcmFuZ2EgPGhleV9uZWtlbkBtdW5kdXJhdC5uZXQ+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogQmFzcXVlIDx0cmFuc2xhdGlvbi10ZWFtLWV1QGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTIyLDk1ICsyMiw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9maS5nbW8gYi9wby9maS5nbW8KaW5kZXggNjJkOWVlMi4uOTc4NDhhMCAxMDA2NDQKLS0tIGEvcG8vZmkuZ21vCisrKyBiL3BvL2ZpLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9maS5wbyBiL3BvL2ZpLnBvCmluZGV4IDNiMjBhMzAuLjYwODMwNmYgMTAwNjQ0Ci0tLSBhL3BvL2ZpLnBvCisrKyBiL3BvL2ZpLnBvCkBAIC0xMSw3ICsxMSw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjEzLjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMDktMDgtMTIgMjI6MTMrMDMwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogVG9tbWkgVmFpbmlrYWluZW4gPFRvbW1pLlZhaW5pa2FpbmVuQGlraS5maT5cbiIKICJMYW5ndWFnZS1UZWFtOiBGaW5uaXNoIDx0cmFuc2xhdGlvbi10ZWFtLWZpQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTI1LDk1ICsyNSw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9mci5nbW8gYi9wby9mci5nbW8KaW5kZXggMTE1MTdlZS4uNjk2ZmI0MiAxMDA2NDQKLS0tIGEvcG8vZnIuZ21vCisrKyBiL3BvL2ZyLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9mci5wbyBiL3BvL2ZyLnBvCmluZGV4IGM3OTRiMmUuLmQ0NmI4ZTkgMTAwNjQ0Ci0tLSBhL3BvL2ZyLnBvCisrKyBiL3BvL2ZyLnBvCkBAIC03LDEwICs3LDEwIEBACiAjCiBtc2dpZCAiIgogbXNnc3RyICIiCi0iUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS40LjFcbiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAxLjcuMlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTA0LTI2IDE5OjI0KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxNi0wMi0yMCAxNjoyNyswMTAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBTdMOpcGhhbmUgQXVsZXJ5IDxsa3Bwb0BmcmVlLmZyPlxuIgogIkxhbmd1YWdlLVRlYW06IEZyZW5jaCA8dHJhZHVjQHRyYWR1Yy5vcmc+XG4iCiAiTGFuZ3VhZ2U6IGZyXG4iCkBAIC0yMSwxMDQgKzIxLDE1IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIkZvcm1hdCBub24gbsOpZ29jacOpIGF2YW50IGwnYXBwZWwgZGUgbGEgZm9uY3Rpb24gZ2V0IgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAic29ucyBwYXIgZMOpZmF1dCBhdWRpb3NpbmsgZGVzIMOpdsOpbmVtZW50cyBHU3RyZWFtZXIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICJkZXNjcmlwdGlvbiBkZXMgc29ucyBwYXIgZMOpZmF1dCBhdWRpb3NpbmsgZGVzIMOpdsOpbmVtZW50cyBHU3RyZWFtZXIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICJ2aWRlb3NpbmsgR1N0cmVhbWVyIHBhciBkw6lmYXV0IgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiYXVkaW9zcmMgR1N0cmVhbWVyIHBhciBkw6lmYXV0IgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAidmlkZW9zcmMgR1N0cmVhbWVyIHBhciBkw6lmYXV0IgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJhcGVyw6d1IEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiZGVzY3JpcHRpb24gZGUgbOKAmWFwZXLDp3UgR1N0cmVhbWVyIHBhciBkw6lmYXV0IgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCi1tc2dzdHIgIiIKK21zZ3N0ciAiT3BlbkNWIG7igJlhIHBhcyBwdSBjaGFyZ2VyIGzigJlpbWFnZSBtb2TDqGxlIgogCiBtc2dpZCAiQ291bGQgbm90IHJlYWQgdGl0bGUgaW5mb3JtYXRpb24gZm9yIERWRC4iCiBtc2dzdHIgIkltcG9zc2libGUgZGUgbGlyZSBsZXMgaW5mb3JtYXRpb25zIGRlIHRpdHJlIGR1IERWRC4iCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIG9wZW4gRFZEIGRldmljZSAnJXMnLiIKLW1zZ3N0ciAiSW1wb3NzaWJsZSBkJ291dnJpciBsZSBww6lyaXBow6lyaXF1ZSBkdSBEVkQgwqvCoCVzwqDCuy4iCittc2dzdHIgIkltcG9zc2libGUgZOKAmW91dnJpciBsZSBww6lyaXBow6lyaXF1ZSBkdSBEVkQgwqvCoCVzwqDCuy4iCiAKIG1zZ2lkICJGYWlsZWQgdG8gc2V0IFBHQyBiYXNlZCBzZWVraW5nLiIKIG1zZ3N0ciAiSW1wb3NzaWJsZSBkZSBkw6lmaW5pciBsYSByZWNoZXJjaGUgYmFzw6llIHN1ciBQR0MuIgpAQCAtMTI3LDIzICszOCwyMyBAQAogIkNvdWxkIG5vdCByZWFkIERWRC4gVGhpcyBtYXkgYmUgYmVjYXVzZSB0aGUgRFZEIGlzIGVuY3J5cHRlZCBhbmQgYSBEVkQgIgogImRlY3J5cHRpb24gbGlicmFyeSBpcyBub3QgaW5zdGFsbGVkLiIKIG1zZ3N0ciAiIgotIkltcG9zc2libGUgZGUgbGlyZSBsZSBEVkQuIElsIHNlIHBldXQgcXVlIGxlIERWRCBzb2l0IGNoaWZmcsOpIGV0IHF1J2F1Y3VuZSAiCi0iYmlibGlvdGjDqHF1ZSBkZSBkw6ljaGlmZnJlbWVudCBEVkQgbmUgc29pdCBkaXNwb25pYmxlLiIKKyJJbXBvc3NpYmxlIGRlIGxpcmUgbGUgRFZELiBJbCBzZSBwZXV0IHF14oCZaWwgc29pdCBjaGlmZnLDqSBldCBxdeKAmWF1Y3VuZSAiCisiYmlibGlvdGjDqHF1ZSBkZSBkw6ljaGlmZnJlbWVudCBEVkQgbmUgc29pdCBpbnN0YWxsw6llLiIKIAogbXNnaWQgIkNvdWxkIG5vdCByZWFkIERWRC4iCiBtc2dzdHIgIkltcG9zc2libGUgZGUgbGlyZSBsZSBEVkQuIgogCiBtc2dpZCAiVGhpcyBmaWxlIGNvbnRhaW5zIG5vIHBsYXlhYmxlIHN0cmVhbXMuIgotbXNnc3RyICIiCittc2dzdHIgIkNlIGZpY2hpZXIgbmUgY29udGllbnQgYXVjdW4gZmx1eCBleHBsb2l0YWJsZS4iCiAKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiBzbmRmaWxlIHN0cmVhbSBmb3IgcmVhZGluZy4iCi1tc2dzdHIgIkltcG9zc2libGUgZCdvdXZyaXIgbGUgZmljaGllciBzbmQgZW4gbGVjdHVyZS4iCittc2dzdHIgIkltcG9zc2libGUgZOKAmW91dnJpciBsZSBmaWNoaWVyIHNuZCBlbiBsZWN0dXJlLiIKIAogbXNnaWQgIkNvdWxkIG5vdCBlc3RhYmxpc2ggY29ubmVjdGlvbiB0byBzbmRpbyIKIG1zZ3N0ciAiSW1wb3NzaWJsZSBkZSBzZSBjb25uZWN0ZXIgw6Agc25kaW8iCiAKIG1zZ2lkICJGYWlsZWQgdG8gcXVlcnkgc25kaW8gY2FwYWJpbGl0aWVzIgotbXNnc3RyICJJbXBvc3NpYmxlIGTigJlpbnRlcnJvZ2VyIGxlcyBjYXBhY2l0w6lzIHNuZGlvIgorbXNnc3RyICJJbXBvc3NpYmxlIGTigJlpbnRlcnJvZ2VyIGxlcyBjYXBhY2l0w6lzIGRlIHNuZGlvIgogCiBtc2dpZCAiQ291bGQgbm90IGNvbmZpZ3VyZSBzbmRpbyIKIG1zZ3N0ciAiSW1wb3NzaWJsZSBkZSBjb25maWd1cmVyIHNuZGlvIgpAQCAtMTUyLDI2ICs2MywyOSBAQAogbXNnc3RyICJJbXBvc3NpYmxlIGRlIGTDqW1hcnJlciBzbmRpbyIKIAogbXNnaWQgIkludGVybmFsIGRhdGEgZmxvdyBlcnJvci4iCi1tc2dzdHIgIkVycmV1ciBpbnRlcm5lIGRlIGZsdXggZGUgZG9ubsOpZXMuIgorbXNnc3RyICJFcnJldXIgZHUgZmx1eCBkZSBkb25uw6llcyBpbnRlcm5lLiIKIAogbXNnaWQgIkdlbmVyYXRlZCBmaWxlIGhhcyBhIGxhcmdlciBwcmVyb2xsIHRpbWUgdGhhbiBpdHMgc3RyZWFtcyBkdXJhdGlvbiIKIG1zZ3N0ciAiIgorIkxlIGZpY2hpZXIgZ8OpbsOpcsOpIGEgdW4gdGVtcHMgZGUgbGFuY2VtZW50IHBsdXMgbG9uZyBxdWUgbGEgZHVyw6llIGR1IGZsdXgiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWlzc2luZyBlbGVtZW50ICclcycgLSBjaGVjayB5b3VyIEdTdHJlYW1lciBpbnN0YWxsYXRpb24uIgotbXNnc3RyICIiCittc2dzdHIgIsOJbMOpbWVudCDCqyAlcyDCuyBtYW5xdWFudCDigJQgVsOpcmlmaWV6IHZvdHJlIGluc3RhbGxhdGlvbiBkZSBHU3RyZWFtZXIuIgogCiBtc2dpZCAiRmlsZSBsb2NhdGlvbiBpcyBzZXQgdG8gTlVMTCwgcGxlYXNlIHNldCBpdCB0byBhIHZhbGlkIGZpbGVuYW1lIgogbXNnc3RyICIiCisiTOKAmWVtcGxhY2VtZW50IGR1IGZpY2hpZXIgZXN0IGluY29ubnUgKE5VTEwpLCB2ZXVpbGxleiBjaG9pc2lyIHVuIG5vbSBkZSAiCisiZmljaGllciB2YWxpZGUiCiAKIG1zZ2lkICJEaWdpdGFsem9vbSBlbGVtZW50IGNvdWxkbid0IGJlIGNyZWF0ZWQiCi1tc2dzdHIgIiIKK21zZ3N0ciAiTOKAmcOpbMOpbWVudCBEaWdpdGFsem9vbSBu4oCZYSBwdSDDqnRyZSBjcsOpw6kiCiAKIG1zZ2lkICJTdWJwaWN0dXJlIGZvcm1hdCB3YXMgbm90IGNvbmZpZ3VyZWQgYmVmb3JlIGRhdGEgZmxvdyIKLW1zZ3N0ciAiIgorbXNnc3RyICJMZSBmb3JtYXQgZGUgc291cy1pbWFnZSBu4oCZw6l0YWl0IHBhcyBjb25maWd1csOpIGF2YW50IGxlIGZsdXggZGUgZG9ubsOpZXMiCiAKIG1zZ2lkICJGYWlsZWQgdG8gZ2V0IGZyYWdtZW50IFVSTC4iCi1tc2dzdHIgIiIKK21zZ3N0ciAiw4ljaGVjIGRlIGxhIHLDqWN1cMOpcmF0aW9uIGRlIGzigJlVUkwgZGUgZnJhZ21lbnQuIgogCiBtc2dpZCAiSW50ZXJuYWwgZGF0YSBzdHJlYW0gZXJyb3IuIgogbXNnc3RyICJFcnJldXIgaW50ZXJuZSBkZSBmbHV4IGRlIGRvbm7DqWVzLiIKQEAgLTE4MCw0OSArOTQsMTY0IEBACiBtc2dzdHIgIkltcG9zc2libGUgZGUgdMOpbMOpY2hhcmdlciBsZXMgZnJhZ21lbnRzIgogCiBtc2dpZCAiTm8gZmlsZSBuYW1lIHNwZWNpZmllZCBmb3Igd3JpdGluZy4iCi1tc2dzdHIgIkF1Y3VuIG5vbSBkZSBmaWNoaWVyIGluZGlxdcOpIHBvdXIgbCfDqWNyaXR1cmUuIgorbXNnc3RyICJBdWN1biBub20gZGUgZmljaGllciBpbmRpcXXDqSBlbiDDqWNyaXR1cmUuIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkdpdmVuIGZpbGUgbmFtZSBcIiVzXCIgY2FuJ3QgYmUgY29udmVydGVkIHRvIGxvY2FsIGZpbGUgbmFtZSBlbmNvZGluZy4iCiBtc2dzdHIgIiIKKyJMZSBub20gZGUgZmljaGllciBpbmRpcXXDqSDCq8KgJXPCoMK7IG5lIHBldXQgcGFzIMOqdHJlIGNvbnZlcnRpIGRhbnMgbOKAmWVuY29kYWdlICIKKyJsb2NhbCBhdSBzeXN0w6htZSBkZSBmaWNoaWVyLiIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3Igd3JpdGluZy4iCi1tc2dzdHIgIkltcG9zc2libGUgZCdvdXZyaXIgbGUgZmljaGllciDCq8KgJXPCoMK7IHBvdXIgbCfDqWNyaXR1cmUuIgorbXNnc3RyICJJbXBvc3NpYmxlIGTigJlvdXZyaXIgbGUgZmljaGllciDCq8KgJXPCoMK7IGVuIMOpY3JpdHVyZS4iCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRGV2aWNlIFwiJXNcIiBkb2VzIG5vdCBleGlzdC4iCi1tc2dzdHIgIkxlIHDDqXJpcGjDqXJpcXVlIMKrwqAlc8KgwrsgbidleGlzdGUgcGFzLiIKK21zZ3N0ciAiTGUgcMOpcmlwaMOpcmlxdWUgwqvCoCVzwqDCuyBu4oCZZXhpc3RlIHBhcy4iCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gZnJvbnRlbmQgZGV2aWNlIFwiJXNcIi4iCi1tc2dzdHIgIkltcG9zc2libGUgZCdvdXZyaXIgbGUgcMOpcmlwaMOpcmlxdWUgZnJvbnRhbCDCq8KgJXPCoMK7LiIKK21zZ3N0ciAiSW1wb3NzaWJsZSBk4oCZb3V2cmlyIGxlIHDDqXJpcGjDqXJpcXVlIGZyb250YWwgwqvCoCVzwqDCuy4iCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGdldCBzZXR0aW5ncyBmcm9tIGZyb250ZW5kIGRldmljZSBcIiVzXCIuIgotbXNnc3RyICJJbXBvc3NpYmxlIGQnb2J0ZW5pciBsZXMgcGFyYW3DqHRyZXMgZHUgcMOpcmlwaMOpcmlxdWUgZnJvbnRhbCDCq8KgJXPCoMK7LiIKK21zZ3N0ciAiSW1wb3NzaWJsZSBk4oCZb2J0ZW5pciBsZXMgcGFyYW3DqHRyZXMgZHUgcMOpcmlwaMOpcmlxdWUgZnJvbnRhbCDCq8KgJXPCoMK7LiIKIAotIywgZnV6enksIGMtZm9ybWF0CisjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBlbnVtZXJhdGUgZGVsaXZlcnkgc3lzdGVtcyBmcm9tIGZyb250ZW5kIGRldmljZSBcIiVzXCIuIgotbXNnc3RyICJJbXBvc3NpYmxlIGQnb2J0ZW5pciBsZXMgcGFyYW3DqHRyZXMgZHUgcMOpcmlwaMOpcmlxdWUgZnJvbnRhbCDCq8KgJXPCoMK7LiIKK21zZ3N0ciAiIgorIkltcG9zc2libGUgZCfDqW51bcOpcmVyIGxlcyBzeXN0w6htZXMgZOKAmcOpbWlzc2lvbiBkdSBww6lyaXBow6lyaXF1ZSBmcm9udGFsIMKrwqAlc8KgwrsuIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5nLiIKLW1zZ3N0ciAiSW1wb3NzaWJsZSBkJ291dnJpciBsZSBmaWNoaWVyIMKrwqAlc8KgwrsgZW4gbGVjdHVyZS4iCittc2dzdHIgIkltcG9zc2libGUgZOKAmW91dnJpciBsZSBmaWNoaWVyIMKrwqAlc8KgwrsgZW4gbGVjdHVyZS4iCiAKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIERWQiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gZmlsZSIKLW1zZ3N0ciAiIgorbXNnc3RyICJJbXBvc3NpYmxlIGRlIHRyb3V2ZXIgbGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGRlIGNhbmFsIERWQiIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZG4ndCBsb2FkIERWQiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gZmlsZTogJXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAiSW1wb3NzaWJsZSBkZSBjaGFyZ2VyIGxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBkZSBjYW5hbCBEVkLCoDogJXMiCiAKIG1zZ2lkICJEVkIgY2hhbm5lbCBjb25maWd1cmF0aW9uIGZpbGUgZG9lc24ndCBjb250YWluIGFueSBjaGFubmVscyIKLW1zZ3N0ciAiIgorbXNnc3RyICJMZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gZGUgY2FuYWwgRFZCIG5lIGNvbnRpZW50IGF1Y3VuIGNhbmFsIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCi1tc2dzdHIgIiIKK21zZ3N0ciAiSW1wb3NzaWJsZSBkZSB0cm91dmVyIGRlcyBpbmZvcm1hdGlvbnMgc3VyIGxlIGNhbmFsIERWQiAlcyIKIAotI34gbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIi4iCi0jfiBtc2dzdHIgIkltcG9zc2libGUgZCfDqWNyaXJlIGRhbnMgbGUgZmljaGllciDCq8KgJXPCoMK7LiIKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJyw6ljZXB0ZXVyIGF1ZGlvIEdTdHJlYW1lciBwYXIgZMOpZmF1dCBwb3VyIGxlcyDDqXbDqW5lbWVudHMgc29ub3JlcyIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBwZXV0IGxpcmUgZGVzIHNvbnMgZGVwdWlzIHVuIG5vbWJyZSBxdWVsY29ucXVlIGTigJnDqWzDqW1lbnRzIGVuICIKKyN+ICJlbnRyw6llLiBMZXMgY2hvaXggcG9zc2libGVzIHNvbnQgb3Nzc2luaywgcHVsc2VzaW5rIGV0IGFsc2FzaW5rLiBMZSAiCisjfiAic291cmNlIGF1ZGlvIHBldXQgw6p0cmUgdW4gcGlwZWxpbmUgcGFydGllbCBhdSBsaWV1IGTigJl1biDDqWzDqW1lbnQgdW5pcXVlLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICIiCisjfiAiZGVzY3JpcHRpb24gZHUgcsOpY2VwdGV1ciBhdWRpbyBHU3RyZWFtZXIgcGFyIGTDqWZhdXQgcG91ciBsZXMgw6l2w6luZW1lbnRzICIKKyN+ICJzb25vcmVzIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIkTDqWNyaXQgbGUgcsOpY2VwdGV1ciBhdWRpbyBzw6lsZWN0aW9ubsOpLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICIiCisjfiAicsOpY2VwdGV1ciBhdWRpbyBHU3RyZWFtZXIgcGFyIGTDqWZhdXQgcG91ciBsZXMgY29uZsOocmVuY2VzIGF1ZGlvdmlzdWVsbGVzIgorCisjfiBtc2dpZCAiIgorI34gImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiIgorI34gImRlc2NyaXB0aW9uIGR1IHLDqWNlcHRldXIgYXVkaW8gR1N0cmVhbWVyIHBhciBkw6lmYXV0IHBvdXIgbGVzIGNvbmbDqHJlbmNlcyAiCisjfiAiYXVkaW92aXN1ZWxsZXMiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgInLDqWNlcHRldXIgYXVkaW8gR1N0cmVhbWVyIHBhciBkw6lmYXV0IHBvdXIgbGEgbXVzaXF1ZSBldCBsZXMgZmlsbXMiCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICIiCisjfiAiZGVzY3JpcHRpb24gZHUgcsOpY2VwdGV1ciBhdWRpbyBHU3RyZWFtZXIgcGFyIGTDqWZhdXQgcG91ciBsYSBtdXNpcXVlIGV0ICIKKyN+ICJsZXMgZmlsbXMiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgInLDqWNlcHRldXIgdmlkw6lvIEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gIgorI34gIlRoZSB2aWRlb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIHBldXQgbGlyZSB1bmUgdmlkw6lvIGRlcHVpcyB1biBub21icmUgcXVlbGNvbnF1ZSBk4oCZw6lsw6ltZW50cyBlbiAiCisjfiAiZW50csOpZS4gTGVzIGNob2l4IHBvc3NpYmxlcyBzb250IHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgZXQgIgorI34gImFhc2luay4gTGUgc291cmNlIHZpZMOpbyBwZXV0IMOqdHJlIHVuIHBpcGVsaW5lIHBhcnRpZWwgYXUgbGlldSBk4oCZdW4gIgorI34gIsOpbMOpbWVudCB1bmlxdWUuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAiZGVzY3JpcHRpb24gZHUgcsOpY2VwdGV1ciB2aWTDqW8gR1N0cmVhbWVyIHBhciBkw6lmYXV0IgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIkTDqWNyaXQgbGUgcsOpY2VwdGV1ciB2aWTDqW8gc8OpbGVjdGlvbm7DqS4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAic291cmNlIGF1ZGlvIEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgcGV1dCBlbnJlZ2lzdHJlciBkZXMgc29ucyBkZXB1aXMgdW4gbm9tYnJlIHF1ZWxjb25xdWUgIgorI34gImTigJnDqWzDqW1lbnRzIGVuIGVudHLDqWUuIExlcyBjaG9peCBwb3NzaWJsZXMgc29udCBvc3NzcmMsIHB1bHNlc3JjIGV0ICIKKyN+ICJhbHNhc3JjLiBMZSBzb3VyY2UgYXVkaW8gcGV1dCDDqnRyZSB1biBwaXBlbGluZSBwYXJ0aWVsIGF1IGxpZXUgZOKAmXVuICIKKyN+ICLDqWzDqW1lbnQgdW5pcXVlLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAiZGVzY3JpcHRpb24gZGUgbGEgc291cmNlIGF1ZGlvIEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIkTDqWNyaXQgbGEgc291cmNlIGF1ZGlvIHPDqWxlY3Rpb25uw6llLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJzb3VyY2Ugdmlkw6lvIEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlICIKKyN+ICJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgcGV1dCBlbnJlZ2lzdHJlciB1bmUgdmlkw6lvIGRlcHVpcyB1biBub21icmUgcXVlbGNvbnF1ZSAiCisjfiAiZOKAmcOpbMOpbWVudHMgZW4gZW50csOpZS4gTGVzIGNob2l4IHBvc3NpYmxlcyBzb250IHY0bHNyYywgdjRsMnNyYyBldCAiCisjfiAidmlkZW90ZXN0c3JjLiBMZSBzb3VyY2Ugdmlkw6lvIHBldXQgw6p0cmUgdW4gcGlwZWxpbmUgcGFydGllbCBhdSBsaWV1IGTigJl1biAiCisjfiAiw6lsw6ltZW50IHVuaXF1ZS4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgImRlc2NyaXB0aW9uIGRlIGxhIHNvdXJjZSB2aWTDqW8gR1N0cmVhbWVyIHBhciBkw6lmYXV0IgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiRMOpY3JpdCBsYSBzb3VyY2Ugdmlkw6lvIHPDqWxlY3Rpb25uw6llLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgImFwZXLDp3UgR1N0cmVhbWVyIHBhciBkw6lmYXV0IgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCisjfiAic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgorI34gInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCAiCisjfiAib2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgcGV1dCBtZXR0cmUgbGVzIGV4dGVuc2lvbnMgZOKAmWFwZXLDp3UgZGFucyB1biBwaXBlbGluZSBwb3VyICIKKyN+ICJ0cmFuc2Zvcm1lciBsZXMgZmx1eCBhdWRpb3MgZW4gZnJhbWVzIHZpZMOpby4gTGVzIGNob2l4IHBvc3NpYmxlcyBzb250ICIKKyN+ICJnb29tLCBnb29tMmsxIGV0IHN5bmFlc3RoZXNpYS4gTOKAmWV4dGVuc2lvbiBk4oCZYXBlcsOndSBwZXV0IMOqdHJlIHVuIHBpcGVsaW5lICIKKyN+ICJwYXJ0aWVsIGF1IGxpZXUgZOKAmXVuIMOpbMOpbWVudCB1bmlxdWUuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgImRlc2NyaXB0aW9uIGRlIGzigJlhcGVyw6d1IEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiRMOpY3JpdCBs4oCZw6lsw6ltZW50IGTigJlhcGVyw6d1IHPDqWxlY3Rpb25uw6kuIgpkaWZmIC0tZ2l0IGEvcG8vZ2wuZ21vIGIvcG8vZ2wuZ21vCmluZGV4IDFkYTU0ZTQuLmY1MzRhMGIgMTAwNjQ0Ci0tLSBhL3BvL2dsLmdtbworKysgYi9wby9nbC5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vZ2wucG8gYi9wby9nbC5wbwppbmRleCAxMGE0MDY4Li5hMGRlNzhkIDEwMDY0NAotLS0gYS9wby9nbC5wbworKysgYi9wby9nbC5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDAuMTAuMjEuMlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAxMS0wOS0wNSAxMjo1MCswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBGcmFuIERpZWd1ZXogPGZyYW5kaWVndWV6QHVidW50dS5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogR2FsaWNpYW4gPHByb3hlY3RvQHRyYXNuby5uZXQ+XG4iCkBAIC0yMiw5NSArMjIsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vZ3N0LXBsdWdpbnMtYmFkLTEuMC5wb3QgYi9wby9nc3QtcGx1Z2lucy1iYWQtMS4wLnBvdAppbmRleCAwNjAwMjgwLi5lOWFhN2VhIDEwMDY0NAotLS0gYS9wby9nc3QtcGx1Z2lucy1iYWQtMS4wLnBvdAorKysgYi9wby9nc3QtcGx1Z2lucy1iYWQtMS4wLnBvdApAQCAtNSw5ICs1LDkgQEAKICMsIGZ1enp5CiBtc2dpZCAiIgogbXNnc3RyICIiCi0iUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS42LjNcbiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAxLjcuOTFcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IFlFQVItTU8tREEgSE86TUkrWk9ORVxuIgogIkxhc3QtVHJhbnNsYXRvcjogRlVMTCBOQU1FIDxFTUFJTEBBRERSRVNTPlxuIgogIkxhbmd1YWdlLVRlYW06IExBTkdVQUdFIDxMTEBsaS5vcmc+XG4iCkBAIC0xNiwxMjggKzE2LDExIEBACiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUNIQVJTRVRcbiIKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAKLSM6IGV4dC9nbC9nc3RnbHRlc3RzcmMuYzo2NzMKKyM6IGV4dC9nbC9nc3RnbHRlc3RzcmMuYzo2ODAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo1Ci1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo2Ci0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjoxOQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46MzIKLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46MTMKLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjoxNAotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46MjcKLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjQwCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46MTgKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjoyNgotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46MzEKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46MzkKLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjQ0Ci1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjQ1Ci1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46NTIKLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjUzCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46NTcKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo1OAotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46NjUKLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46NjYKLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjcwCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46NzEKLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjc3Ci1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjc4Ci1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo4MgotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46ODMKLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo5MAotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjkxCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLSM6IGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jOjQ0MgorIzogZXh0L29wZW5jdi9nc3R0ZW1wbGF0ZW1hdGNoLmNwcDoxODgKIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApAQCAtMTU0LDE4ICszNywxOCBAQAogbXNnaWQgIkZhaWxlZCB0byBzZXQgUEdDIGJhc2VkIHNlZWtpbmcuIgogbXNnc3RyICIiCiAKLSM6IGV4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5jOjExNjYKKyM6IGV4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5jOjExNjUKIG1zZ2lkICIiCiAiQ291bGQgbm90IHJlYWQgRFZELiBUaGlzIG1heSBiZSBiZWNhdXNlIHRoZSBEVkQgaXMgZW5jcnlwdGVkIGFuZCBhIERWRCAiCiAiZGVjcnlwdGlvbiBsaWJyYXJ5IGlzIG5vdCBpbnN0YWxsZWQuIgogbXNnc3RyICIiCiAKLSM6IGV4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5jOjExNzEgZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmM6MTE4MAorIzogZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmM6MTE3MCBleHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuYzoxMTc5CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgRFZELiIKIG1zZ3N0ciAiIgogCi0jOiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmM6MzgxCi0jOiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6NTI1CisjOiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmM6NDA1CisjOiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6NjMzCiBtc2dpZCAiVGhpcyBmaWxlIGNvbnRhaW5zIG5vIHBsYXlhYmxlIHN0cmVhbXMuIgogbXNnc3RyICIiCiAKQEAgLTE4OSw3ICs3Miw3IEBACiBtc2dpZCAiQ291bGQgbm90IHN0YXJ0IHNuZGlvIgogbXNnc3RyICIiCiAKLSM6IGdzdC9haWZmL2FpZmZwYXJzZS5jOjE0NTgKKyM6IGdzdC9haWZmL2FpZmZwYXJzZS5jOjE1MDQKIG1zZ2lkICJJbnRlcm5hbCBkYXRhIGZsb3cgZXJyb3IuIgogbXNnc3RyICIiCiAKQEAgLTIxNSwxOCArOTgsMTggQEAKIG1zZ2lkICJTdWJwaWN0dXJlIGZvcm1hdCB3YXMgbm90IGNvbmZpZ3VyZWQgYmVmb3JlIGRhdGEgZmxvdyIKIG1zZ3N0ciAiIgogCi0jOiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6MjA4MQorIzogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOjI2NTYKIG1zZ2lkICJGYWlsZWQgdG8gZ2V0IGZyYWdtZW50IFVSTC4iCiBtc2dzdHIgIiIKIAotIzogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOjIyODIKLSM6IGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoyNDQ2Ci0jOiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jOjEzNDIgZ3N0L21wZWd0c2RlbXV4L21wZWd0c2Jhc2UuYzoxMzQ2CisjOiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6Mjg5MQorIzogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOjMwODUKKyM6IGdzdC9tcGVndHNkZW11eC9tcGVndHNiYXNlLmM6MTM4MSBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jOjEzODUKICM6IGdzdC9udXZkZW11eC9nc3RudXZkZW11eC5jOjczNgogbXNnaWQgIkludGVybmFsIGRhdGEgc3RyZWFtIGVycm9yLiIKIG1zZ3N0ciAiIgogCi0jOiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6MjM4MworIzogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOjMwMDMKIG1zZ2lkICJDb3VsZG4ndCBkb3dubG9hZCBmcmFnbWVudHMiCiBtc2dzdHIgIiIKIApAQCAtMjQ0LDQ1ICsxMjcsNDUgQEAKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3Igd3JpdGluZy4iCiBtc2dzdHIgIiIKIAotIzogc3lzL2R2Yi9nc3RkdmJzcmMuYzoxNTY1IHN5cy9kdmIvZ3N0ZHZic3JjLmM6MTc1NAorIzogc3lzL2R2Yi9nc3RkdmJzcmMuYzoxNTY0IHN5cy9kdmIvZ3N0ZHZic3JjLmM6MTc1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJEZXZpY2UgXCIlc1wiIGRvZXMgbm90IGV4aXN0LiIKIG1zZ3N0ciAiIgogCi0jOiBzeXMvZHZiL2dzdGR2YnNyYy5jOjE1NjkKKyM6IHN5cy9kdmIvZ3N0ZHZic3JjLmM6MTU2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiBmcm9udGVuZCBkZXZpY2UgXCIlc1wiLiIKIG1zZ3N0ciAiIgogCi0jOiBzeXMvZHZiL2dzdGR2YnNyYy5jOjE1ODMKKyM6IHN5cy9kdmIvZ3N0ZHZic3JjLmM6MTU4MgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZ2V0IHNldHRpbmdzIGZyb20gZnJvbnRlbmQgZGV2aWNlIFwiJXNcIi4iCiBtc2dzdHIgIiIKIAotIzogc3lzL2R2Yi9nc3RkdmJzcmMuYzoxNjAwCisjOiBzeXMvZHZiL2dzdGR2YnNyYy5jOjE1OTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGVudW1lcmF0ZSBkZWxpdmVyeSBzeXN0ZW1zIGZyb20gZnJvbnRlbmQgZGV2aWNlIFwiJXNcIi4iCiBtc2dzdHIgIiIKIAotIzogc3lzL2R2Yi9nc3RkdmJzcmMuYzoxNzU4CisjOiBzeXMvZHZiL2dzdGR2YnNyYy5jOjE3NTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHJlYWRpbmcuIgogbXNnc3RyICIiCiAKLSM6IHN5cy9kdmIvcGFyc2VjaGFubmVscy5jOjE2OAorIzogc3lzL2R2Yi9wYXJzZWNoYW5uZWxzLmM6MTY1CiBtc2dpZCAiQ291bGRuJ3QgZmluZCBEVkIgY2hhbm5lbCBjb25maWd1cmF0aW9uIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogc3lzL2R2Yi9wYXJzZWNoYW5uZWxzLmM6MTcxCisjOiBzeXMvZHZiL3BhcnNlY2hhbm5lbHMuYzoxNjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGRuJ3QgbG9hZCBEVkIgY2hhbm5lbCBjb25maWd1cmF0aW9uIGZpbGU6ICVzIgogbXNnc3RyICIiCiAKLSM6IHN5cy9kdmIvcGFyc2VjaGFubmVscy5jOjE4MAorIzogc3lzL2R2Yi9wYXJzZWNoYW5uZWxzLmM6MTc1CiBtc2dpZCAiRFZCIGNoYW5uZWwgY29uZmlndXJhdGlvbiBmaWxlIGRvZXNuJ3QgY29udGFpbiBhbnkgY2hhbm5lbHMiCiBtc2dzdHIgIiIKIAotIzogc3lzL2R2Yi9wYXJzZWNoYW5uZWxzLmM6NDU2CisjOiBzeXMvZHZiL3BhcnNlY2hhbm5lbHMuYzo0NDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGRuJ3QgZmluZCBkZXRhaWxzIGZvciBEVkIgY2hhbm5lbCAlcyIKIG1zZ3N0ciAiIgpkaWZmIC0tZ2l0IGEvcG8vaHIuZ21vIGIvcG8vaHIuZ21vCmluZGV4IGQxMDk4ODcuLmNhMmVhYzEgMTAwNjQ0Ci0tLSBhL3BvL2hyLmdtbworKysgYi9wby9oci5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vaHIucG8gYi9wby9oci5wbwppbmRleCA1NTkxZDhlLi41MzVlYzEwIDEwMDY0NAotLS0gYS9wby9oci5wbworKysgYi9wby9oci5wbwpAQCAtNiw3ICs2LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDAuMTAuMjEuMlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAxMi0wNC0xNiAwMjowNiswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBUb21pc2xhdiBLcnpuYXIgPHRvbWlzbGF2Lmtyem5hckBnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogQ3JvYXRpYW4gPGxva2FsaXphY2lqYUBsaW51eC5ocj5cbiIKQEAgLTIwLDk1ICsyMCw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9odS5nbW8gYi9wby9odS5nbW8KaW5kZXggMWZkZjlhYy4uY2Q5NDExZiAxMDA2NDQKLS0tIGEvcG8vaHUuZ21vCisrKyBiL3BvL2h1LmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9odS5wbyBiL3BvL2h1LnBvCmluZGV4IGFmNzFlOTQuLjllYWFjNGQgMTAwNjQ0Ci0tLSBhL3BvL2h1LnBvCisrKyBiL3BvL2h1LnBvCkBAIC04LDcgKzgsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS42LjBcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMTEtMjAgMjM6NDYrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogQmFsw6F6cyDDmnIgPHVyYmFsYXpzQGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBIdW5nYXJpYW4gPHRyYW5zbGF0aW9uLXRlYW0taHVAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMjIsMTE3ICsyMiw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgImEgZm9ybcOhdHVtIG5lbSBsZXR0IGVneWV6dGV0dmUgYSBmw7xnZ3bDqW55IGxla8OpcsOpc2UgZWzFkXR0IgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgaGFuZ2VzZW3DqW55ZWsgYXVkaW9zaW5rIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iQSBHU3RyZWFtZXIga8OpcGVzIGhhbmdvdCBsZWrDoXRzemFuaSBiw6FybWlseWVuIHN6w6Ftw7oga2ltZW5ldGkgZWxlbSAiCi0iaGFzem7DoWxhdMOhdmFsLiBOw6low6FueSBsZWhldHPDqWdlcyB2w6FsYXN6dMOhcyBhIGvDtnZldGtlesWRIGxlaGV0OiBvc3NzaW5rLCAiCi0icHVsc2VzaW5rIMOpcyBhbHNhc2luay4gQXogYXVkaW9zaW5rIGxlaGV0IGVneSByw6lzemxlZ2VzIGFkYXRjc2F0b3JuYSBpcyAiCi0iZWd5ZXRsZW4gZWxlbSBoZWx5ZXR0LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBoYW5nZXNlbcOpbnllayBhdWRpb3NpbmsgbGXDrXLDoXNhIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIkxlw61yamEgYSBraXbDoWxhc3p0b3R0IGF1ZGlvc2luayBlbGVtZXQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgImFsYXDDqXJ0ZWxtZXpldHQgR1N0cmVhbWVyIGF1ZGlvc2luayBhIGhhbmcvdmlkZcOzIGtvbmZlcmVuY2nDoWhveiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLSJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBhdWRpb3NpbmsgbGXDrXLDoXNhIGEgaGFuZy92aWRlw7Mga29uZmVyZW5jacOhaG96IgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBhdWRpb3NpbmsgemVuw6lraGV6IMOpcyBmaWxtZWtoZXoiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBhdWRpb3NpbmsgbGXDrXLDoXNhIHplbsOpa2hleiDDqXMgZmlsbWVraGV6IgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICJhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkEgR1N0cmVhbWVyIGvDqXBlcyB2aWRlw7N0IGxlasOhdHN6YW5pIGLDoXJtaWx5ZW4gc3rDoW3DuiBraW1lbmV0aSBlbGVtICIKLSJoYXN6bsOhbGF0w6F2YWwuIE7DqWjDoW55IGxlaGV0c8OpZ2VzIHbDoWxhc3p0w6FzIGEga8O2dmV0a2V6xZEgbGVoZXQ6IHh2aW1hZ2VzaW5rLCAiCi0ieGltYWdlc2luaywgc2RsdmlkZW9zaW5rIMOpcyBhYXNpbmsuIEF6IHZpZGVvc2luayBsZWhldCBlZ3kgcsOpc3psZWdlcyAiCi0iYWRhdGNzYXRvcm5hIGlzIGVneWV0bGVuIGVsZW0gaGVseWV0dC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciB2aWRlb3NpbmsgbGXDrXLDoXNhIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIkxlw61yamEgYSBraXbDoWxhc3p0b3R0IHZpZGVvc2luayBlbGVtZXQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgImFsYXDDqXJ0ZWxtZXpldHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkEgR1N0cmVhbWVyIGvDqXBlcyBoYW5nb3QgZmVsdmVubmkgYsOhcm1pbHllbiBzesOhbcO6IGJlbWVuZXRpIGVsZW0gIgotImhhc3puw6FsYXTDoXZhbC4gTsOpaMOhbnkgbGVoZXRzw6lnZXMgdsOhbGFzenTDoXMgYSBrw7Z2ZXRrZXrFkSBsZWhldDogb3Nzc3JjLCAiCi0icHVsc2VzcmMgw6lzIGFsc2FzcmMuIEEgaGFuZ2ZvcnLDoXMgbGVoZXQgZWd5IHLDqXN6bGVnZXMgYWRhdGNzYXRvcm5hIGlzICIKLSJlZ3lldGxlbiBlbGVtIGhlbHlldHQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBhdWRpb3NyYyBsZcOtcsOhc2EiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJMZcOtcmphIGEga2l2w6FsYXN6dG90dCBhdWRpb3NyYyBlbGVtZXQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgImFsYXDDqXJ0ZWxtZXpldHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkEgR1N0cmVhbWVyIGvDqXBlcyB2aWRlw7N0IGZlbHZlbm5pIGLDoXJtaWx5ZW4gc3rDoW3DuiBiZW1lbmV0aSBlbGVtICIKLSJoYXN6bsOhbGF0w6F2YWwuIE7DqWjDoW55IGxlaGV0c8OpZ2VzIHbDoWxhc3p0w6FzIGEga8O2dmV0a2V6xZEgbGVoZXQ6IHY0bHNyYywgIgotInY0bDJzcmMgw6lzIHZpZGVvdGVzdHNyYy4gQSB2aWRlb2ZvcnLDoXMgbGVoZXQgZWd5IHLDqXN6bGVnZXMgYWRhdGNzYXRvcm5hIGlzICIKLSJlZ3lldGxlbiBlbGVtIGhlbHlldHQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciB2aWRlb3NyYyBsZcOtcsOhc2EiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJMZcOtcmphIGEga2l2w6FsYXN6dG90dCB2aWRlb3NyYyBlbGVtZXQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIga8OpcGkgbWVnamVsZW7DrXTDqXMiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkEgR1N0cmVhbWVyIGvDqXBlcyBrw6lwaSBtZWdqZWxlbsOtdMWRIGLFkXbDrXRtw6lueWVrZXQgZWxoZWx5ZXpuaSBlZ3kgIgotImFkYXRjc2F0b3Juw6FiYSBhIHZpZGVva8OpcGtvY2vDoWtiYW4gbMOpdsWRIGhhbmdmb2x5YW1vayDDoXRhbGFrw610w6Fzw6Fob3ouIE7DqWjDoW55ICIKLSJsZWhldHPDqWdlcyB2w6FsYXN6dMOhcyBhIGvDtnZldGtlesWRIGxlaGV0OiBnb29tLCBnb29tMmsxIMOpcyBzeW5hZXN0aGVzaWEuIEEgIgotImvDqXBpIG1lZ2plbGVuw610xZEgYsWRdsOtdG3DqW55IGxlaGV0IGVneSByw6lzemxlZ2VzIGFkYXRjc2F0b3JuYSBpcyBlZ3lldGxlbiBlbGVtICIKLSJoZWx5ZXR0LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBrw6lwaSBtZWdqZWxlbsOtdMOpcyBsZcOtcsOhc2EiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIkxlw61yamEgYSBraXbDoWxhc3p0b3R0IGvDqXBpIG1lZ2plbGVuw610w6lzIGVsZW1ldC4iCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIkF6IE9wZW5DVi1uZWsgbmVtIHNpa2Vyw7xsdCBiZXTDtmx0ZW5pZSBhIHNhYmxvbmvDqXBldCIKIApAQCAtMjUzLDYgKzE0MiwxMTggQEAKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGRldGFpbHMgZm9yIERWQiBjaGFubmVsICVzIgogbXNnc3RyICJOZW0gdGFsw6FsaGF0w7NrIGEoeikgJXMgRFZCLWNzYXRvcm5hIHLDqXN6bGV0ZWkiCiAKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBoYW5nZXNlbcOpbnllayBhdWRpb3NpbmsiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJBIEdTdHJlYW1lciBrw6lwZXMgaGFuZ290IGxlasOhdHN6YW5pIGLDoXJtaWx5ZW4gc3rDoW3DuiBraW1lbmV0aSBlbGVtICIKKyN+ICJoYXN6bsOhbGF0w6F2YWwuIE7DqWjDoW55IGxlaGV0c8OpZ2VzIHbDoWxhc3p0w6FzIGEga8O2dmV0a2V6xZEgbGVoZXQ6IG9zc3NpbmssICIKKyN+ICJwdWxzZXNpbmsgw6lzIGFsc2FzaW5rLiBBeiBhdWRpb3NpbmsgbGVoZXQgZWd5IHLDqXN6bGVnZXMgYWRhdGNzYXRvcm5hIGlzICIKKyN+ICJlZ3lldGxlbiBlbGVtIGhlbHlldHQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgImF6IGFsYXDDqXJ0ZWxtZXpldHQgR1N0cmVhbWVyIGhhbmdlc2Vtw6lueWVrIGF1ZGlvc2luayBsZcOtcsOhc2EiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiTGXDrXJqYSBhIGtpdsOhbGFzenRvdHQgYXVkaW9zaW5rIGVsZW1ldC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgYXVkaW9zaW5rIGEgaGFuZy92aWRlw7Mga29uZmVyZW5jacOhaG96IgorCisjfiBtc2dpZCAiIgorI34gImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiIgorI34gImF6IGFsYXDDqXJ0ZWxtZXpldHQgR1N0cmVhbWVyIGF1ZGlvc2luayBsZcOtcsOhc2EgYSBoYW5nL3ZpZGXDsyBrb25mZXJlbmNpw6Fob3oiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgImFsYXDDqXJ0ZWxtZXpldHQgR1N0cmVhbWVyIGF1ZGlvc2luayB6ZW7DqWtoZXogw6lzIGZpbG1la2hleiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgIiIKKyN+ICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBhdWRpb3NpbmsgbGXDrXLDoXNhIHplbsOpa2hleiDDqXMgZmlsbWVraGV6IgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuICIKKyN+ICJUaGUgdmlkZW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkEgR1N0cmVhbWVyIGvDqXBlcyB2aWRlw7N0IGxlasOhdHN6YW5pIGLDoXJtaWx5ZW4gc3rDoW3DuiBraW1lbmV0aSBlbGVtICIKKyN+ICJoYXN6bsOhbGF0w6F2YWwuIE7DqWjDoW55IGxlaGV0c8OpZ2VzIHbDoWxhc3p0w6FzIGEga8O2dmV0a2V6xZEgbGVoZXQ6ICIKKyN+ICJ4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIMOpcyBhYXNpbmsuIEF6IHZpZGVvc2luayBsZWhldCBlZ3kgIgorI34gInLDqXN6bGVnZXMgYWRhdGNzYXRvcm5hIGlzIGVneWV0bGVuIGVsZW0gaGVseWV0dC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciB2aWRlb3NpbmsgbGXDrXLDoXNhIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIkxlw61yamEgYSBraXbDoWxhc3p0b3R0IHZpZGVvc2luayBlbGVtZXQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgImFsYXDDqXJ0ZWxtZXpldHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkEgR1N0cmVhbWVyIGvDqXBlcyBoYW5nb3QgZmVsdmVubmkgYsOhcm1pbHllbiBzesOhbcO6IGJlbWVuZXRpIGVsZW0gIgorI34gImhhc3puw6FsYXTDoXZhbC4gTsOpaMOhbnkgbGVoZXRzw6lnZXMgdsOhbGFzenTDoXMgYSBrw7Z2ZXRrZXrFkSBsZWhldDogb3Nzc3JjLCAiCisjfiAicHVsc2VzcmMgw6lzIGFsc2FzcmMuIEEgaGFuZ2ZvcnLDoXMgbGVoZXQgZWd5IHLDqXN6bGVnZXMgYWRhdGNzYXRvcm5hIGlzICIKKyN+ICJlZ3lldGxlbiBlbGVtIGhlbHlldHQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBhdWRpb3NyYyBsZcOtcsOhc2EiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJMZcOtcmphIGEga2l2w6FsYXN6dG90dCBhdWRpb3NyYyBlbGVtZXQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgImFsYXDDqXJ0ZWxtZXpldHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgIgorI34gImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkEgR1N0cmVhbWVyIGvDqXBlcyB2aWRlw7N0IGZlbHZlbm5pIGLDoXJtaWx5ZW4gc3rDoW3DuiBiZW1lbmV0aSBlbGVtICIKKyN+ICJoYXN6bsOhbGF0w6F2YWwuIE7DqWjDoW55IGxlaGV0c8OpZ2VzIHbDoWxhc3p0w6FzIGEga8O2dmV0a2V6xZEgbGVoZXQ6IHY0bHNyYywgIgorI34gInY0bDJzcmMgw6lzIHZpZGVvdGVzdHNyYy4gQSB2aWRlb2ZvcnLDoXMgbGVoZXQgZWd5IHLDqXN6bGVnZXMgYWRhdGNzYXRvcm5hICIKKyN+ICJpcyBlZ3lldGxlbiBlbGVtIGhlbHlldHQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciB2aWRlb3NyYyBsZcOtcsOhc2EiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJMZcOtcmphIGEga2l2w6FsYXN6dG90dCB2aWRlb3NyYyBlbGVtZXQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAiYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIga8OpcGkgbWVnamVsZW7DrXTDqXMiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKKyN+ICJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCisjfiAic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkICIKKyN+ICJvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkEgR1N0cmVhbWVyIGvDqXBlcyBrw6lwaSBtZWdqZWxlbsOtdMWRIGLFkXbDrXRtw6lueWVrZXQgZWxoZWx5ZXpuaSBlZ3kgIgorI34gImFkYXRjc2F0b3Juw6FiYSBhIHZpZGVva8OpcGtvY2vDoWtiYW4gbMOpdsWRIGhhbmdmb2x5YW1vayDDoXRhbGFrw610w6Fzw6Fob3ouICIKKyN+ICJOw6low6FueSBsZWhldHPDqWdlcyB2w6FsYXN6dMOhcyBhIGvDtnZldGtlesWRIGxlaGV0OiBnb29tLCBnb29tMmsxIMOpcyAiCisjfiAic3luYWVzdGhlc2lhLiBBIGvDqXBpIG1lZ2plbGVuw610xZEgYsWRdsOtdG3DqW55IGxlaGV0IGVneSByw6lzemxlZ2VzICIKKyN+ICJhZGF0Y3NhdG9ybmEgaXMgZWd5ZXRsZW4gZWxlbSBoZWx5ZXR0LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBrw6lwaSBtZWdqZWxlbsOtdMOpcyBsZcOtcsOhc2EiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgIkxlw61yamEgYSBraXbDoWxhc3p0b3R0IGvDqXBpIG1lZ2plbGVuw610w6lzIGVsZW1ldC4iCisKICN+IG1zZ2lkICJDb3VsZG4ndCBnZXQgdGhlIE1hbmlmZXN0J3MgVVJJIgogI34gbXNnc3RyICJOZW0ga8OpcmhldMWRIGxlIGEgTWFuaWZlc3QgVVJMLWUiCiAKZGlmZiAtLWdpdCBhL3BvL2lkLmdtbyBiL3BvL2lkLmdtbwppbmRleCAxMDMyNmFmLi5hMzY0Njc3IDEwMDY0NAotLS0gYS9wby9pZC5nbW8KKysrIGIvcG8vaWQuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2lkLnBvIGIvcG8vaWQucG8KaW5kZXggODYwMDkwYS4uYzAyOGFhNyAxMDA2NDQKLS0tIGEvcG8vaWQucG8KKysrIGIvcG8vaWQucG8KQEAgLTcsNyArNyw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAxLjMuMlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAxNC0wNS0zMSAyMjoxNiswNzAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBBbmRoaWthIFBhZG1hd2FuIDxhbmRoaWthLnBhZG1hd2FuQGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBJbmRvbmVzaWFuIDx0cmFuc2xhdGlvbi10ZWFtLWlkQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTIwLDk1ICsyMCw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9pdC5nbW8gYi9wby9pdC5nbW8KaW5kZXggYzVjMzY2NS4uNTMyYWU1MCAxMDA2NDQKLS0tIGEvcG8vaXQuZ21vCisrKyBiL3BvL2l0LmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9pdC5wbyBiL3BvL2l0LnBvCmluZGV4IDUyYzA3MjQuLjlhYzZkZjMgMTAwNjQ0Ci0tLSBhL3BvL2l0LnBvCisrKyBiL3BvL2l0LnBvCkBAIC03LDcgKzcsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMC4xMC4xMy4yXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA5LTA4LTE0IDAwOjEyKzAyMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEx1Y2EgRmVycmV0dGkgPGVsbGUudWNhQGluZmluaXRvLml0PlxuIgogIkxhbmd1YWdlLVRlYW06IEl0YWxpYW4gPHRwQGxpc3RzLmxpbnV4Lml0PlxuIgpAQCAtMTksOTUgKzE5LDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL2phLmdtbyBiL3BvL2phLmdtbwppbmRleCBmYjZiZTZhLi45M2QzYjMzIDEwMDY0NAotLS0gYS9wby9qYS5nbW8KKysrIGIvcG8vamEuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2phLnBvIGIvcG8vamEucG8KaW5kZXggYTI3MzQ4MC4uNzBhODhkYiAxMDA2NDQKLS0tIGEvcG8vamEucG8KKysrIGIvcG8vamEucG8KQEAgLTYsNyArNiw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjIxLjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTEtMDQtMjYgMTk6MzgrMDkwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogTWFrb3RvIEthdG8gPG1ha290by5rdEBnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogSmFwYW5lc2UgPHRyYW5zbGF0aW9uLXRlYW0tamFAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMjAsOTUgKzIwLDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL2t5LmdtbyBiL3BvL2t5LmdtbwppbmRleCBmMzU0MWQ4Li5mMGVkYTk5IDEwMDY0NAotLS0gYS9wby9reS5nbW8KKysrIGIvcG8va3kuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2t5LnBvIGIvcG8va3kucG8KaW5kZXggNmY0OWYzMC4uOWFlMjU3YyAxMDA2NDQKLS0tIGEvcG8va3kucG8KKysrIGIvcG8va3kucG8KQEAgLTYsNyArNiw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjVcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMDctMTEtMTMgMTc6MTYrMDYwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogSWx5YXMgQmFraXJvdiA8anVzdF9pbHlhc0B5YWhvby5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogS2lyZ2hpeiA8aTE4bi10ZWFtLWt5LWt5cmd5ekBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCkBAIC0yMCw5NSArMjAsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vbHQuZ21vIGIvcG8vbHQuZ21vCmluZGV4IGM0ZTE2ZjEuLjRhZmRiYjkgMTAwNjQ0Ci0tLSBhL3BvL2x0LmdtbworKysgYi9wby9sdC5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vbHQucG8gYi9wby9sdC5wbwppbmRleCA5OGU3MzU0Li41ZWY5NTIzIDEwMDY0NAotLS0gYS9wby9sdC5wbworKysgYi9wby9sdC5wbwpAQCAtNiw3ICs2LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkLTAuMTAuNi4zXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA4LTA1LTE0IDAyOjEzKzAzMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEdpbnRhdXRhcyBNaWxpYXVza2FzIDxnaW50YXNAYWtsLmx0PlxuIgogIkxhbmd1YWdlLVRlYW06IExpdGh1YW5pYW4gPGtvbXBfbHRAa29uZmVyZW5jaWpvcy5sdD5cbiIKQEAgLTIxLDk1ICsyMSw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9sdi5nbW8gYi9wby9sdi5nbW8KaW5kZXggZTA0Mjc2MC4uZmZjMzIyMiAxMDA2NDQKLS0tIGEvcG8vbHYuZ21vCisrKyBiL3BvL2x2LmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9sdi5wbyBiL3BvL2x2LnBvCmluZGV4IGUwM2RjNjcuLjljZjk0MmEgMTAwNjQ0Ci0tLSBhL3BvL2x2LnBvCisrKyBiL3BvL2x2LnBvCkBAIC04LDcgKzgsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS4yLjFcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTQtMDQtMjAgMTU6NTIrMDMwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogUmloYXJkcyBQcmllZGl0aXMgPHJwcmllZGl0aXNAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IExhdHZpYW4gPHRyYW5zbGF0aW9uLXRlYW0tbHZAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMjUsOTUgKzI1LDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL210LmdtbyBiL3BvL210LmdtbwppbmRleCAyYjg4Njg3Li45Nzk5YzdkIDEwMDY0NAotLS0gYS9wby9tdC5nbW8KKysrIGIvcG8vbXQuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL210LnBvIGIvcG8vbXQucG8KaW5kZXggNTM0MmUxMS4uNjUwY2I0NCAxMDA2NDQKLS0tIGEvcG8vbXQucG8KKysrIGIvcG8vbXQucG8KQEAgLTUsNyArNSw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZC0wLjEwLjguM1xuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0xMC0yNiAyMDoyNyswMTAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBNaWNoZWwgQnVnZWphIDxtaWNoZWxidWdlamFAcmFiYXRtYWx0YS5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogTWFsdGVzZSA8dHJhbnNsYXRpb24tdGVhbS1tdEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCkBAIC0yMSw5NSArMjEsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vbmIuZ21vIGIvcG8vbmIuZ21vCmluZGV4IDc0OGY4MWQuLjY1MDg1ZDcgMTAwNjQ0Ci0tLSBhL3BvL25iLmdtbworKysgYi9wby9uYi5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vbmIucG8gYi9wby9uYi5wbwppbmRleCBiZTQzZGFhLi44Njc5OGRhIDEwMDY0NAotLS0gYS9wby9uYi5wbworKysgYi9wby9uYi5wbwpAQCAtNiwxMjYgKzYsMjEgQEAKICMKIG1zZ2lkICIiCiBtc2dzdHIgIiIKLSJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAxLjUuMVxuIgorIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuNi4wXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMDctMTEgMDE6MTUrMDEwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTEyLTIyIDIxOjA4KzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEpvaG5ueSBBLiBTb2xidSA8am9obm55QHNvbGJ1Lm5ldD5cbiIKICJMYW5ndWFnZS1UZWFtOiBOb3J3ZWdpYW4gQm9rbWFhbCA8aTE4bi1uYkBsaXN0ZXIucGluZy51aW8ubm8+XG4iCiAiTGFuZ3VhZ2U6IG5iX05PXG4iCiAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcbiIKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCi0iWC1HZW5lcmF0b3I6IFBvZWRpdCAxLjUuN1xuIgorIlgtR2VuZXJhdG9yOiBQb2VkaXQgMS42LjlcbiIKIAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICJmb3JtYXRldCBibGUgaWtrZSBmb3JoYW5kbGV0IGbDuHIgZ2V0LWZ1bmtzam9uIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyIGx5ZGhlbmRlbHNlci1hdWRpb3NpbmsiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIHNwaWxsZSBhdiBseWQgdmVkIGhqZWxwIGF2IGVuIHJla2tlIHV0Z2FuZ3NlbGVtZW50ZXIuIE5vZW4gIgotIm11bGlnZSB2YWxnIGVyIG9zc3NpbmssIHB1bHNlc2luayBvZyBhbHNhc2luay4gQXVkaW9zaW5rZW4ga2FuIHbDpnJlIGVuICIKLSJkZWx2aXMga29tbWFuZG9rw7ggaSBzdGVkZXQgZm9yIGJhcmUgZXR0IGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZCBHU3RyZWFtZXIgbHlkaGVuZGVsc2VyLWF1ZGlvc2luayIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICJiZXNrcml2ZXIgc3RhbmRhcmQgYXVkaW9zaW5rZWxlbWVudC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiU3RhbmRhcmQgR1N0cmVhbWVyLWF1ZGlvc2luayBmb3IgTHlkL1ZpZGVvLWtvbmZlcmFuc2VyIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkIEdTdHJlYW1lci1hdWRpb3NpbmsgZm9yIG11c2lrayBvZyBmaWxtZXIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci1hdWRpb3NpbmsgZm9yIG11c2lrayBvZyBmaWxtZXIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmQgR1N0cmVhbWVyLWF1ZGlvc2luayBmb3IgbXVzaWtrIG9nIGZpbG1lciIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLXZpZGVvc2luayIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiBzcGlsbGUgdmlkZW8gdmVkIGhqZWxwIGF2IGVuIHJla2tlIHV0Z2FuZ3NlbGVtZW50ZXIuIE5vZW4gIgotIm11bGlnZSB2YWxnIGVyIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3Npbmsgb2cgYWFzaW5rLiBWaWRlb3NpbmtlbiAiCi0ia2FuIHbDpnJlIGVuIGRlbHZpcyBrb21tYW5kb2vDuCBpIHN0ZWRldCBmb3IgYmFyZSBldHQgZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmQgR1N0cmVhbWVyLXZpZGVvc2luayIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGd0ZSB2aWRlb3NpbmstZWxlbWVudC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLWF1ZGlvc3JjIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBrYW4gdGEgb3BwIGx5ZCB2ZWQgaGplbHAgYXYgZW4gcmVra2UgZGF0YW9iamVrdGVyLiBOb2VuIG11bGlnZSAiCi0idmFsZyBlciBvc3NzcmMsIHB1bHNlc3JjIG9nIGFsc2FzcmMuIEx5ZGtpbGRlbiBrYW4gdsOmcmUgZW4gZGVsdmlzIGtvbW1hbmRva8O4ICIKLSJpIHN0ZWRldCBmb3IgYmFyZSBldHQgZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZCBHU3RyZWFtZXItYXVkaW9zcmMiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGd0ZSBhdWRpb3NyYy1lbGVtZW50ZXQiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLXZpZGVvc3JjIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBrYW4gdGEgb3BwIHZpZGVvIGZyYSBlbiByZWtrZSBkYXRhb2JqZWt0ZXIuIE5vZW4gbXVsaWdlIHZhbGcgZXIgIgotInY0bHNyYywgdjRsMnNyYyBvZyB2aWRlb3Rlc3RzcmMuIFZpZGVva2lsZGVuIGthbiB2w6ZyZSBlbiBkZWx2aXMga29tbWFuZG9rw7ggaSAiCi0ic3RlZGV0IGZvciBiYXJlIGV0dCBlbGVtZW50LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkIEdTdHJlYW1lci12aWRlb3NyYyIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZ3RlIHZpZGVvc3JjLWVsZW1lbnRldCIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci12aXN1YWxpc2VyaW5nIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIHNldHRlIHZpc3VhbGlzZXJpbmdzcGx1Z2lucyBpIGVuIHLDuHJsZWRuaW5nIHRpbCDDpSBmb3J2YW5kbGUgIgotImx5ZHN0csO4bW1lciBpIHZpZGVvYmlsZGVyLiBOb2VuIG11bGlnZSB2YWxnIGVyIGdvb20sIGdvb20yazEgb2cgIgotInN5bmFlc3RoZXNpYS4gVmlzdWFsaXNlcmluZ3NwbHVnaW4ga2FuIHbDpnJlIGVuIGRlbHZpcyBrb21tYW5kb2vDuCBpIHN0ZWRldCAiCi0iZm9yIGJhcmUgZXR0IGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZCBHU3RyZWFtZXItdmlzdWFsaXNlcmluZyIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiQmVza3JpdmVyIHZhbGd0IHZpc3VhbGlzZXJpbmdzZWxlbWVudC4iCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIk9wZW5DViBrdW5uZSBpa2tlIGxhc3RlIG1hbC1iaWxkZSIKIApAQCAtMTgxLDkgKzc2LDggQEAKIG1zZ3N0ciAiIgogIkZpbHBsYXNzZXJpbmcgZXIgc2F0dCB0aWwgTlVMTCwgdmVubmxpZ3N0IHNldHQgZGVuIHRpbCBldCBneWxkaWcgZmlsbmF2biIKIAotIywgZnV6enkKIG1zZ2lkICJEaWdpdGFsem9vbSBlbGVtZW50IGNvdWxkbid0IGJlIGNyZWF0ZWQiCi1tc2dzdHIgIkRpZ2l0YWx6b29tIGVsZW1lbnQga3VubmUgaWtrZSBvcHByZXR0ZXMiCittc2dzdHIgIkRpZ2l0YWx6b29tLWVsZW1lbnQga3VubmUgaWtrZSBvcHByZXR0ZXMiCiAKIG1zZ2lkICJTdWJwaWN0dXJlIGZvcm1hdCB3YXMgbm90IGNvbmZpZ3VyZWQgYmVmb3JlIGRhdGEgZmxvdyIKIG1zZ3N0ciAiVW5kZXJiaWxkZWZvcm1hdCBlciBpa2tlIGtvbmZpZ3VyZXJ0IGbDuHIgZGF0YWZseXQiCkBAIC0yNDIsNiArMTM2LDExMSBAQAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCiBtc2dzdHIgIkt1bm5lIGlra2UgZmlubmUgZGV0YWxqZXIgZm9yIERWQi1rYW5hbCAlcyIKIAorI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lciBseWRoZW5kZWxzZXItYXVkaW9zaW5rIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiBzcGlsbGUgYXYgbHlkIHZlZCBoamVscCBhdiBlbiByZWtrZSB1dGdhbmdzZWxlbWVudGVyLiBOb2VuICIKKyN+ICJtdWxpZ2UgdmFsZyBlciBvc3NzaW5rLCBwdWxzZXNpbmsgb2cgYWxzYXNpbmsuIEF1ZGlvc2lua2VuIGthbiB2w6ZyZSBlbiAiCisjfiAiZGVsdmlzIGtvbW1hbmRva8O4IGkgc3RlZGV0IGZvciBiYXJlIGV0dCBlbGVtZW50LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmQgR1N0cmVhbWVyIGx5ZGhlbmRlbHNlci1hdWRpb3NpbmsiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiYmVza3JpdmVyIHN0YW5kYXJkIGF1ZGlvc2lua2VsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIlN0YW5kYXJkIEdTdHJlYW1lci1hdWRpb3NpbmsgZm9yIEx5ZC9WaWRlby1rb25mZXJhbnNlciIKKworI34gbXNnaWQgIiIKKyN+ICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZCBHU3RyZWFtZXItYXVkaW9zaW5rIGZvciBtdXNpa2sgb2cgZmlsbWVyIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItYXVkaW9zaW5rIGZvciBtdXNpa2sgb2cgZmlsbWVyIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkIEdTdHJlYW1lci1hdWRpb3NpbmsgZm9yIG11c2lrayBvZyBmaWxtZXIiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci12aWRlb3NpbmsiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuICIKKyN+ICJUaGUgdmlkZW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gc3BpbGxlIHZpZGVvIHZlZCBoamVscCBhdiBlbiByZWtrZSB1dGdhbmdzZWxlbWVudGVyLiBOb2VuICIKKyN+ICJtdWxpZ2UgdmFsZyBlciB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIG9nIGFhc2luay4gIgorI34gIlZpZGVvc2lua2VuIGthbiB2w6ZyZSBlbiBkZWx2aXMga29tbWFuZG9rw7ggaSBzdGVkZXQgZm9yIGJhcmUgZXR0IGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkIEdTdHJlYW1lci12aWRlb3NpbmsiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxndGUgdmlkZW9zaW5rLWVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci1hdWRpb3NyYyIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIga2FuIHRhIG9wcCBseWQgdmVkIGhqZWxwIGF2IGVuIHJla2tlIGRhdGFvYmpla3Rlci4gTm9lbiBtdWxpZ2UgIgorI34gInZhbGcgZXIgb3Nzc3JjLCBwdWxzZXNyYyBvZyBhbHNhc3JjLiBMeWRraWxkZW4ga2FuIHbDpnJlIGVuIGRlbHZpcyAiCisjfiAia29tbWFuZG9rw7ggaSBzdGVkZXQgZm9yIGJhcmUgZXR0IGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmQgR1N0cmVhbWVyLWF1ZGlvc3JjIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxndGUgYXVkaW9zcmMtZWxlbWVudGV0IgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci12aWRlb3NyYyIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlICIKKyN+ICJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIga2FuIHRhIG9wcCB2aWRlbyBmcmEgZW4gcmVra2UgZGF0YW9iamVrdGVyLiBOb2VuIG11bGlnZSB2YWxnIGVyICIKKyN+ICJ2NGxzcmMsIHY0bDJzcmMgb2cgdmlkZW90ZXN0c3JjLiBWaWRlb2tpbGRlbiBrYW4gdsOmcmUgZW4gZGVsdmlzICIKKyN+ICJrb21tYW5kb2vDuCBpIHN0ZWRldCBmb3IgYmFyZSBldHQgZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZCBHU3RyZWFtZXItdmlkZW9zcmMiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGd0ZSB2aWRlb3NyYy1lbGVtZW50ZXQiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItdmlzdWFsaXNlcmluZyIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgorI34gInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKKyN+ICJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgIgorI34gIm9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiBzZXR0ZSB2aXN1YWxpc2VyaW5nc3BsdWdpbnMgaSBlbiByw7hybGVkbmluZyB0aWwgw6UgZm9ydmFuZGxlICIKKyN+ICJseWRzdHLDuG1tZXIgaSB2aWRlb2JpbGRlci4gTm9lbiBtdWxpZ2UgdmFsZyBlciBnb29tLCBnb29tMmsxIG9nICIKKyN+ICJzeW5hZXN0aGVzaWEuIFZpc3VhbGlzZXJpbmdzcGx1Z2luIGthbiB2w6ZyZSBlbiBkZWx2aXMga29tbWFuZG9rw7ggaSBzdGVkZXQgIgorI34gImZvciBiYXJlIGV0dCBlbGVtZW50LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmQgR1N0cmVhbWVyLXZpc3VhbGlzZXJpbmciCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2tyaXZlciB2YWxndCB2aXN1YWxpc2VyaW5nc2VsZW1lbnQuIgorCiAjfiBtc2dpZCAiQ291bGRuJ3QgZ2V0IHRoZSBNYW5pZmVzdCdzIFVSSSIKICN+IG1zZ3N0ciAiS3VubmUgaWtrZSBoZW50ZSBNYW5pZmVzdC1uZXR0YWRyZXNzZW4uIgogCmRpZmYgLS1naXQgYS9wby9ubC5nbW8gYi9wby9ubC5nbW8KaW5kZXggMzQ1NTY0OC4uZDI3NzAyYyAxMDA2NDQKLS0tIGEvcG8vbmwuZ21vCisrKyBiL3BvL25sLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9ubC5wbyBiL3BvL25sLnBvCmluZGV4IDBkYzkzZGMuLmY3Y2JlNGYgMTAwNjQ0Ci0tLSBhL3BvL25sLnBvCisrKyBiL3BvL25sLnBvCkBAIC0yLDEzICsyLDEzIEBACiAjIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMKICMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGdzdC1wbHVnaW5zLWJhZCBwYWNrYWdlLgotIyBGcmVlayBkZSBLcnVpamYgPGYuZGUua3J1aWpmQGdtYWlsLmNvbT4sIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTMsIDIwMTQsIDIwMTUuCisjIEZyZWVrIGRlIEtydWlqZiA8Zi5kZS5rcnVpamZAZ21haWwuY29tPiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMywgMjAxNCwgMjAxNSwgMjAxNi4KIG1zZ2lkICIiCiBtc2dzdHIgIiIKLSJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAxLjYuMFxuIgorIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuNy4yXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMTAtMTcgMTI6MzUrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDE2LTAyLTIwIDEyOjM1KzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEZyZWVrIGRlIEtydWlqZiA8Zi5kZS5rcnVpamZAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IER1dGNoIDx2ZXJ0YWxpbmdAdnJpanNjaHJpZnQub3JnPlxuIgogIkxhbmd1YWdlOiBubFxuIgpAQCAtMjEsMTEzICsyMSw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgImZvcm1hYXQgaXMgbmlldCBvbmRlcmhhbmRlbGQgdsOzw7NyIGdldC1mdW5jdGllIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAic3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb3Npbmsgdm9vciBnZWx1aWRzZ2ViZXVydGVuaXNzZW4iCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIGdlbHVpZCBhZnNwZWxlbiBtZXQgZWxrIGFhbnRhbCB1aXR2b2VyZWxlbWVudGVuLiBFbmlnZSAiCi0ibW9nZWxpamtlIGtldXplcyB6aWpuIG9zc3NpbmssIHB1bHNlc2luayBlbiBhbHNhc2luay4gRGUgYXVkaW9zaW5rIGthbiBlZW4gIgotImdlZGVlbHRlbGlqa2UgcGlwZWxpbmUgemlqbiBpbiBwbGFhdHMgdmFuIGdld29vbiDDqcOpbiBlbGVtZW50LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0iYmVzY2hyaWp2aW5nIHZhbiBzdGFuZGFhcmQgR1N0cmVhbWVyIGF1ZGlvc2luayB2b29yIGdlbHVpZHNnZWJldXJ0ZW5pc3NlbiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICJCZXNjaHJpamZ0IGhldCBnZXNlbGVjdGVlcmRlIGF1ZGlvc2luay1lbGVtZW50LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICJzdGFuZGFhcmQgR1N0cmVhbWVyIGF1ZGlvc2luayB2b29yIGF1ZGlvL3ZpZGVvY29uZmVyZW50aWVzIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb3Npbmsgdm9vciBhdWRpby92aWRlb2NvbmZlcmVudGllcyIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAic3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb3Npbmsgdm9vciBtdXppZWsgZW4gZmlsbSIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb3Npbmsgdm9vciBtdXppZWsgZW4gZmlsbSIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAic3RhbmRhYXJkIEdTdHJlYW1lciB2aWRlb3NpbmsiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBrYW4gdmlkZW8gYWZzcGVsZW4gbWV0IGVsayBhYW50YWwgdWl0dm9lcmVsZW1lbnRlbiBFbmlnZSBtb2dlbGlqa2UgIgotImtldXplcyB6aWpuIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgZW4gYWFzaW5rLiBEZSB2aWRlb3NpbmsgIgotImthbiBlZW4gZ2VkZWVsdGVsaWprZSBwaXBlbGluZSB6aWpuIGluIHBsYWF0cyB2YW4gZ2V3b29uIMOpw6luIGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiYmVzY2hyaWp2aW5nIHZhbiBzdGFuZGFhcmQgR1N0cmVhbWVyIHZpZGVvc2luayIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICJCZXNjaHJpamZ0IGhldCBnZXNlbGVjdGVlcmRlIHZpZGVvc2luay1lbGVtZW50LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJzdGFuZGFhcmQgR1N0cmVhbWVyIGF1ZGlvYnJvbiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIGdlbHVpZCBvcG5lbWVuIG1ldCBlbGsgYWFudGFsIGludm9lcmVsZW1lbnRlbi4gRW5pZ2UgbW9nZWxpamtlICIKLSJrZXV6ZXMgemlqbiBvc3NzcmMsIHB1bHNlc3JjIGVuIGFsc2FzcmMuIERlIGF1ZGlvYnJvbiBrYW4gZWVuIGdlZGVlbHRlbGlqa2UgIgotInBpcGVsaW5lIHppam4gaW4gcGxhYXRzIHZhbiBnZXdvb24gw6nDqW4gZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb2Jyb24iCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJCZXNjaHJpamZ0IGhldCBnZXNlbGVjdGVlcmRlIGF1ZGlvYnJvbi1lbGVtZW50LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJzdGFuZGFhcmQgR1N0cmVhbWVyIHZpZGVvYnJvbiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIHZpZGVvIG9wbmVtZW4gbWV0IGVsayBhYW50YWwgaW52b2VyZWxlbWVudGVuLiBFbmlnZSBtb2dlbGlqa2UgIgotImtldXplcyB6aWpuIHY0bHNyYywgdjRsMnNyYyBlbiB2aWRlb3Rlc3RzcmMuIERlIHZpZGVvYnJvbiBrYW4gZWVuICIKLSJnZWRlZWx0ZWxpamtlIHBpcGVsaW5lIHppam4gaW4gcGxhYXRzIHZhbiBnZXdvb24gw6nDqW4gZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciB2aWRlb2Jyb24iCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJCZXNjaHJpamZ0IGhldCBnZXNlbGVjdGVlcmRlIHZpZGVvYnJvbi1lbGVtZW50LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgInN0YW5kYWFyZCBHU3RyZWFtZXIgdmlzdWFsaXNhdGllIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIHZpc3VhbGlzYXRpZXBsdWctaW5zIGluIGVlbiBwaXBlbGluZSBzdG9wcGVuIG9tIGF1ZGlvc3RyZWFtcyAiCi0idGUgdHJhbnNmb3JtZXJlbiBpbiB2aWRlb2ZyYW1lcy4gRW5pZ2UgbW9nZWxpamtlIGtldXplcyB6aWpuIGdvb20sIGdvb20yazEgIgotImVuIHN5bmFlc3RoZXNpYS4gRGUgdmlzdWFsaXNhdGllcGx1Zy1pbiBrYW4gZWVuIGdlZGVlbHRlbGlqa2UgcGlwZWxpbmUgemlqbiAiCi0iaW4gcGxhYXRzIHZhbiBnZXdvb24gw6nDqW4gZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiYmVzY2hyaWp2aW5nIHZhbiBzdGFuZGFhcmQgR1N0cmVhbWVyIHZpc3VhbGlzYXRpZSIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiQmVzY2hyaWpmdCBoZXQgZ2VzZWxlY3RlZXJkZSB2aXN1YWxpc2F0aWUtZWxlbWVudC4iCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIk9wZW5DViBrb24gc2phYmxvb25hZmJlZWxkaW5nIG5pZXQgbGFkZW4iCiAKQEAgLTI0OCw2ICsxNDEsMTE1IEBACiBtc2dpZCAiQ291bGRuJ3QgZmluZCBkZXRhaWxzIGZvciBEVkIgY2hhbm5lbCAlcyIKIG1zZ3N0ciAiS29uIGRlIGRldGFpbHMgdm9vciBoZXQgRFZCLWthbmFhbCAlcyBuaWV0IHZpbmRlbiIKIAorI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgInN0YW5kYWFyZCBHU3RyZWFtZXIgYXVkaW9zaW5rIHZvb3IgZ2VsdWlkc2dlYmV1cnRlbmlzc2VuIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiBnZWx1aWQgYWZzcGVsZW4gbWV0IGVsayBhYW50YWwgdWl0dm9lcmVsZW1lbnRlbi4gRW5pZ2UgIgorI34gIm1vZ2VsaWprZSBrZXV6ZXMgemlqbiBvc3NzaW5rLCBwdWxzZXNpbmsgZW4gYWxzYXNpbmsuIERlIGF1ZGlvc2luayBrYW4gIgorI34gImVlbiBnZWRlZWx0ZWxpamtlIHBpcGVsaW5lIHppam4gaW4gcGxhYXRzIHZhbiBnZXdvb24gw6nDqW4gZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiIgorI34gImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb3Npbmsgdm9vciBnZWx1aWRzZ2ViZXVydGVuaXNzZW4iCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVzY2hyaWpmdCBoZXQgZ2VzZWxlY3RlZXJkZSBhdWRpb3NpbmstZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAic3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb3Npbmsgdm9vciBhdWRpby92aWRlb2NvbmZlcmVudGllcyIKKworI34gbXNnaWQgIiIKKyN+ICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIiIKKyN+ICJiZXNjaHJpanZpbmcgdmFuIHN0YW5kYWFyZCBHU3RyZWFtZXIgYXVkaW9zaW5rIHZvb3IgYXVkaW8vIgorI34gInZpZGVvY29uZmVyZW50aWVzIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJzdGFuZGFhcmQgR1N0cmVhbWVyIGF1ZGlvc2luayB2b29yIG11emllayBlbiBmaWxtIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAiYmVzY2hyaWp2aW5nIHZhbiBzdGFuZGFhcmQgR1N0cmVhbWVyIGF1ZGlvc2luayB2b29yIG11emllayBlbiBmaWxtIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJzdGFuZGFhcmQgR1N0cmVhbWVyIHZpZGVvc2luayIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gIgorI34gIlRoZSB2aWRlb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiB2aWRlbyBhZnNwZWxlbiBtZXQgZWxrIGFhbnRhbCB1aXR2b2VyZWxlbWVudGVuIEVuaWdlICIKKyN+ICJtb2dlbGlqa2Uga2V1emVzIHppam4geHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBlbiBhYXNpbmsuIERlICIKKyN+ICJ2aWRlb3Npbmsga2FuIGVlbiBnZWRlZWx0ZWxpamtlIHBpcGVsaW5lIHppam4gaW4gcGxhYXRzIHZhbiBnZXdvb24gw6nDqW4gIgorI34gImVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAiYmVzY2hyaWp2aW5nIHZhbiBzdGFuZGFhcmQgR1N0cmVhbWVyIHZpZGVvc2luayIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNjaHJpamZ0IGhldCBnZXNlbGVjdGVlcmRlIHZpZGVvc2luay1lbGVtZW50LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJzdGFuZGFhcmQgR1N0cmVhbWVyIGF1ZGlvYnJvbiIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIga2FuIGdlbHVpZCBvcG5lbWVuIG1ldCBlbGsgYWFudGFsIGludm9lcmVsZW1lbnRlbi4gRW5pZ2UgIgorI34gIm1vZ2VsaWprZSBrZXV6ZXMgemlqbiBvc3NzcmMsIHB1bHNlc3JjIGVuIGFsc2FzcmMuIERlIGF1ZGlvYnJvbiBrYW4gZWVuICIKKyN+ICJnZWRlZWx0ZWxpamtlIHBpcGVsaW5lIHppam4gaW4gcGxhYXRzIHZhbiBnZXdvb24gw6nDqW4gZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb2Jyb24iCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNjaHJpamZ0IGhldCBnZXNlbGVjdGVlcmRlIGF1ZGlvYnJvbi1lbGVtZW50LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJzdGFuZGFhcmQgR1N0cmVhbWVyIHZpZGVvYnJvbiIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlICIKKyN+ICJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIga2FuIHZpZGVvIG9wbmVtZW4gbWV0IGVsayBhYW50YWwgaW52b2VyZWxlbWVudGVuLiBFbmlnZSAiCisjfiAibW9nZWxpamtlIGtldXplcyB6aWpuIHY0bHNyYywgdjRsMnNyYyBlbiB2aWRlb3Rlc3RzcmMuIERlIHZpZGVvYnJvbiBrYW4gIgorI34gImVlbiBnZWRlZWx0ZWxpamtlIHBpcGVsaW5lIHppam4gaW4gcGxhYXRzIHZhbiBnZXdvb24gw6nDqW4gZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciB2aWRlb2Jyb24iCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNjaHJpamZ0IGhldCBnZXNlbGVjdGVlcmRlIHZpZGVvYnJvbi1lbGVtZW50LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgInN0YW5kYWFyZCBHU3RyZWFtZXIgdmlzdWFsaXNhdGllIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCisjfiAic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgorI34gInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCAiCisjfiAib2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIga2FuIHZpc3VhbGlzYXRpZXBsdWctaW5zIGluIGVlbiBwaXBlbGluZSBzdG9wcGVuIG9tICIKKyN+ICJhdWRpb3N0cmVhbXMgdGUgdHJhbnNmb3JtZXJlbiBpbiB2aWRlb2ZyYW1lcy4gRW5pZ2UgbW9nZWxpamtlIGtldXplcyB6aWpuICIKKyN+ICJnb29tLCBnb29tMmsxIGVuIHN5bmFlc3RoZXNpYS4gRGUgdmlzdWFsaXNhdGllcGx1Zy1pbiBrYW4gZWVuICIKKyN+ICJnZWRlZWx0ZWxpamtlIHBpcGVsaW5lIHppam4gaW4gcGxhYXRzIHZhbiBnZXdvb24gw6nDqW4gZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAiYmVzY2hyaWp2aW5nIHZhbiBzdGFuZGFhcmQgR1N0cmVhbWVyIHZpc3VhbGlzYXRpZSIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVzY2hyaWpmdCBoZXQgZ2VzZWxlY3RlZXJkZSB2aXN1YWxpc2F0aWUtZWxlbWVudC4iCisKICN+IG1zZ2lkICJDb3VsZG4ndCBnZXQgdGhlIE1hbmlmZXN0J3MgVVJJIgogI34gbXNnc3RyICJEZSBVUkkgdmFuIGhldCBtYW5pZmVzdCB2ZXJrcmlqZ2VuIGx1a3QgbmlldCIKIApkaWZmIC0tZ2l0IGEvcG8vb3IuZ21vIGIvcG8vb3IuZ21vCmluZGV4IDNjZGI2NzUuLjZkNWI1OGYgMTAwNjQ0Ci0tLSBhL3BvL29yLmdtbworKysgYi9wby9vci5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vb3IucG8gYi9wby9vci5wbwppbmRleCA0MThkYzk5Li5mMWU1ZDdmIDEwMDY0NAotLS0gYS9wby9vci5wbworKysgYi9wby9vci5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtMC44LjNcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMDQtMDktMjcgMTM6MzIrMDUzMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogR29yYSBNb2hhbnR5IDxnb3JhX21vaGFudHlAeWFob28uY28uaW4+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogT3JpeWEgPGdvcmFfbW9oYW50eUB5YWhvby5jby5pbj5cbiIKQEAgLTIwLDk1ICsyMCw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9wbC5nbW8gYi9wby9wbC5nbW8KaW5kZXggZThhNDkwNi4uYjkxMWJiNCAxMDA2NDQKLS0tIGEvcG8vcGwuZ21vCisrKyBiL3BvL3BsLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9wbC5wbyBiL3BvL3BsLnBvCmluZGV4IDRiNWRhZDguLjgyNzlkZWIgMTAwNjQ0Ci0tLSBhL3BvL3BsLnBvCisrKyBiL3BvL3BsLnBvCkBAIC02LDcgKzYsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS42LjBcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMTAtMTUgMjA6NTArMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogSmFrdWIgQm9ndXN6IDxxYm9vc2hAcGxkLWxpbnV4Lm9yZz5cbiIKICJMYW5ndWFnZS1UZWFtOiBQb2xpc2ggPHRyYW5zbGF0aW9uLXRlYW0tcGxAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMTgsMTE3ICsxOCw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgImZvcm1hdCBuaWUgem9zdGHFgiB3eW5lZ29jam93YW55IHByemVkIGZ1bmtjasSFIHBvYnJhbmlhIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiZG9tecWbbG55IGVsZW1lbnQgR1N0cmVhbWVyYSBwb2NoxYJhbmlhasSFY3kgemRhcnplbmlhIGTFundpxJlrb3dlIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIG1vxbxlIG9kdHdhcnphxIcgZMW6d2nEmWsgcHJ6eSB1xbx5Y2l1IGRvd29sbmVqIGxpY3pieSBlbGVtZW50w7N3ICIKLSJ3eWrFm2Npb3d5Y2guIE5pZWt0w7NyZSB6IG1vxbxsaXdvxZtjaSB0byBvc3NzaW5rLCBwdWxzZXNpbmsgb3JheiBhbHNhc2luay4gIgotIld5asWbY2llIGTFundpxJlrdSBtb8W8ZSBiecSHIGN6xJnFm2Npb3d5bSBwb3Rva2llbSB6YW1pYXN0IHBvamVkeW5jemVnbyBlbGVtZW50dS4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotIm9waXMgZG9tecWbbG5lZ28gZWxlbWVudHUgR1N0cmVhbWVyYSBwb2NoxYJhbmlhasSFY2VnbyB6ZGFyemVuaWEgZMW6d2nEmWtvd2UiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiT3Bpc3VqZSB3eWJyYW55IGVsZW1lbnQgd3lqxZtjaW93eSBkxbp3acSZa3UuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLSJkb215xZtsbnkgZWxlbWVudCBHU3RyZWFtZXJhIHBvY2jFgmFuaWFqxIVjeSBkxbp3acSZayBkbGEga29uZmVyZW5jamkgYXVkaW8vdmlkZW8iCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0ib3BpcyBkb215xZtsbmVnbyBlbGVtZW50dSB3eWrFm2Npb3dlZ28gZMW6d2nEmWt1IEdTdHJlYW1lcmEgZGxhIGtvbmZlcmVuY2ppICIKLSJhdWRpby92aWRlbyIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiZG9tecWbbG55IGVsZW1lbnQgd3lqxZtjaW93eSBkxbp3acSZa3UgR1N0cmVhbWVyYSBkbGEgbXV6eWtpIGkgZmlsbcOzdyIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLSJvcGlzIGRvbXnFm2xuZWdvIGVsZW1lbnR1IHd5asWbY2lvd2VnbyBkxbp3acSZa3UgR1N0cmVhbWVyYSBkbGEgbXV6eWtpIGkgZmlsbcOzdyIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiZG9tecWbbG55IGVsZW1lbnQgR1N0cmVhbWVyYSBwb2NoxYJhbmlhasSFY3kgb2JyYXoiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBtb8W8ZSBvZHR3YXJ6YcSHIG9icmF6IHByenkgdcW8eWNpdSBkb3dvbG5laiBsaWN6YnkgZWxlbWVudMOzdyAiCi0id3lqxZtjaW93eWNoLiBOaWVrdMOzcmUgeiBtb8W8bGl3b8WbY2kgdG8geHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayAiCi0ib3JheiBhYXNpbmsuIFd5asWbY2llIG9icmF6dSBtb8W8ZSBiecSHIGN6xJnFm2Npb3d5bSBwb3Rva2llbSB6YW1pYXN0ICIKLSJwb2plZHluY3plZ28gZWxlbWVudHUuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAib3BpcyBkb215xZtsbmVnbyBlbGVtZW50dSBHU3RyZWFtZXJhIHBvY2jFgmFuaWFqxIVjZWdvIG9icmF6IgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIk9waXN1amUgd3licmFueSBlbGVtZW50IHd5asWbY2lvd3kgb2JyYXp1LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJkb215xZtsbmUgxbpyw7NkxYJvIGTFundpxJlrdSBHU3RyZWFtZXJhIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBtb8W8ZSBuYWdyeXdhxIcgZMW6d2nEmWsgeiBkb3dvbG5laiBsaWN6YnkgZWxlbWVudMOzdyB3ZWrFm2Npb3d5Y2guICIKLSJOaWVrdMOzcmUgbW/FvGxpd2/Fm2NpIHRvIG9zc3NyYywgcHVsc2VzcmMgb3JheiBhbHNhc3JjLiDFuXLDs2TFgm8gZMW6d2nEmWt1IG1vxbxlICIKLSJiecSHIGN6xJnFm2Npb3d5bSBwb3Rva2llbSB6YW1pYXN0IHBvamVkeW5jemVnbyBlbGVtZW50dS4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIm9waXMgZG9tecWbbG5lZ28gxbpyw7NkxYJhIGTFundpxJlrdSBHU3RyZWFtZXJhIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiT3Bpc3VqZSB3eWJyYW55IGVsZW1lbnQgxbpyw7NkxYJvd3kgZMW6d2nEmWt1LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJkb215xZtsbmUgxbpyw7NkxYJvIG9icmF6dSBHU3RyZWFtZXJhIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBtb8W8ZSBuYWdyeXdhxIcgb2JyYXogeiBkb3dvbG5laiBsaWN6YnkgZWxlbWVudMOzdyB3ZWrFm2Npb3d5Y2guICIKLSJOaWVrdMOzcmUgbW/FvGxpd2/Fm2NpIHRvIHY0bHNyYywgdjRsMnNyYyBvcmF6IHZpZGVvdGVzdHNyYy4gxblyw7NkxYJvIG9icmF6dSBtb8W8ZSAiCi0iYnnEhyBjesSZxZtjaW93eW0gcG90b2tpZW0gemFtaWFzdCBwb2plZHluY3plZ28gZWxlbWVudHUuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJvcGlzIGRvbXnFm2xuZWdvIMW6csOzZMWCYSBvYnJhenUgR1N0cmVhbWVyYSIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIk9waXN1amUgd3licmFueSBlbGVtZW50IMW6csOzZMWCb3d5IG9icmF6dS4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJkb215xZtsbmEgd2l6dWFsaXphY2phIEdTdHJlYW1lcmEiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBtb8W8ZSB1bWllc3pjemHEhyB3dHljemtpIHdpenVhbGl6dWrEhWNlIHcgcG90b2t1IHcgY2VsdSAiCi0icHJ6ZWtzenRhxYJjYW5pYSBzdHJ1bWllbmkgZMW6d2nEmWtvd3ljaCBuYSBrbGF0a2kgb2JyYXp1LiBOaWVrdMOzcmUgbW/FvGxpd2/Fm2NpICIKLSJ0byBnb29tLCBnb29tMmsxIG9yYXogc3luYWVzdGhlc2lhLiBXdHljemthIHdpenVhbGl6dWrEhWNhIG1vxbxlIGJ5xIcgIgotImN6xJnFm2Npb3d5bSBwb3Rva2llbSB6YW1pYXN0IHBvamVkeW5jemVnbyBlbGVtZW50dS4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAib3BpcyBkb215xZtsZWdvIGVsZW1lbnR1IHdpenVhbGl6dWrEhWNlZ28gR1N0cmVhbWVyYSIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiT3Bpc3VqZSB3eWJyYW55IGVsZW1lbnQgd2l6dWFsaXp1asSFY3kuIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICJPZGN6eXQgb2JyYXp1IHd6b3JjYSBwcnpleiBPcGVuQ1YgbmllIHBvd2nDs2TFgiBzacSZIgogCkBAIC0yNDcsMyArMTM2LDExNyBAQAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGRldGFpbHMgZm9yIERWQiBjaGFubmVsICVzIgogbXNnc3RyICJOaWUgdWRhxYJvIHNpxJkgb2RuYWxlxbrEhyBzemN6ZWfDs8WCw7N3IGRsYSBrYW5hxYJ1IERWQiAlcyIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgImRvbXnFm2xueSBlbGVtZW50IEdTdHJlYW1lcmEgcG9jaMWCYW5pYWrEhWN5IHpkYXJ6ZW5pYSBkxbp3acSZa293ZSIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBtb8W8ZSBvZHR3YXJ6YcSHIGTFundpxJlrIHByenkgdcW8eWNpdSBkb3dvbG5laiBsaWN6YnkgZWxlbWVudMOzdyAiCisjfiAid3lqxZtjaW93eWNoLiBOaWVrdMOzcmUgeiBtb8W8bGl3b8WbY2kgdG8gb3Nzc2luaywgcHVsc2VzaW5rIG9yYXogYWxzYXNpbmsuICIKKyN+ICJXeWrFm2NpZSBkxbp3acSZa3UgbW/FvGUgYnnEhyBjesSZxZtjaW93eW0gcG90b2tpZW0gemFtaWFzdCBwb2plZHluY3plZ28gIgorI34gImVsZW1lbnR1LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICIiCisjfiAib3BpcyBkb215xZtsbmVnbyBlbGVtZW50dSBHU3RyZWFtZXJhIHBvY2jFgmFuaWFqxIVjZWdvIHpkYXJ6ZW5pYSBkxbp3acSZa293ZSIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJPcGlzdWplIHd5YnJhbnkgZWxlbWVudCB3eWrFm2Npb3d5IGTFundpxJlrdS4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiIgorI34gImRvbXnFm2xueSBlbGVtZW50IEdTdHJlYW1lcmEgcG9jaMWCYW5pYWrEhWN5IGTFundpxJlrIGRsYSBrb25mZXJlbmNqaSBhdWRpby8iCisjfiAidmlkZW8iCisKKyN+IG1zZ2lkICIiCisjfiAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICIiCisjfiAib3BpcyBkb215xZtsbmVnbyBlbGVtZW50dSB3eWrFm2Npb3dlZ28gZMW6d2nEmWt1IEdTdHJlYW1lcmEgZGxhIGtvbmZlcmVuY2ppICIKKyN+ICJhdWRpby92aWRlbyIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAiZG9tecWbbG55IGVsZW1lbnQgd3lqxZtjaW93eSBkxbp3acSZa3UgR1N0cmVhbWVyYSBkbGEgbXV6eWtpIGkgZmlsbcOzdyIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgIiIKKyN+ICJvcGlzIGRvbXnFm2xuZWdvIGVsZW1lbnR1IHd5asWbY2lvd2VnbyBkxbp3acSZa3UgR1N0cmVhbWVyYSBkbGEgbXV6eWtpIGkgIgorI34gImZpbG3Ds3ciCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgImRvbXnFm2xueSBlbGVtZW50IEdTdHJlYW1lcmEgcG9jaMWCYW5pYWrEhWN5IG9icmF6IgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiAiCisjfiAiVGhlIHZpZGVvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgbW/FvGUgb2R0d2FyemHEhyBvYnJheiBwcnp5IHXFvHljaXUgZG93b2xuZWogbGljemJ5IGVsZW1lbnTDs3cgIgorI34gInd5asWbY2lvd3ljaC4gTmlla3TDs3JlIHogbW/FvGxpd2/Fm2NpIHRvIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCAiCisjfiAic2RsdmlkZW9zaW5rIG9yYXogYWFzaW5rLiBXeWrFm2NpZSBvYnJhenUgbW/FvGUgYnnEhyBjesSZxZtjaW93eW0gcG90b2tpZW0gIgorI34gInphbWlhc3QgcG9qZWR5bmN6ZWdvIGVsZW1lbnR1LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgIm9waXMgZG9tecWbbG5lZ28gZWxlbWVudHUgR1N0cmVhbWVyYSBwb2NoxYJhbmlhasSFY2VnbyBvYnJheiIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJPcGlzdWplIHd5YnJhbnkgZWxlbWVudCB3eWrFm2Npb3d5IG9icmF6dS4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAiZG9tecWbbG5lIMW6csOzZMWCbyBkxbp3acSZa3UgR1N0cmVhbWVyYSIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgbW/FvGUgbmFncnl3YcSHIGTFundpxJlrIHogZG93b2xuZWogbGljemJ5IGVsZW1lbnTDs3cgd2VqxZtjaW93eWNoLiAiCisjfiAiTmlla3TDs3JlIG1vxbxsaXdvxZtjaSB0byBvc3NzcmMsIHB1bHNlc3JjIG9yYXogYWxzYXNyYy4gxblyw7NkxYJvIGTFundpxJlrdSBtb8W8ZSAiCisjfiAiYnnEhyBjesSZxZtjaW93eW0gcG90b2tpZW0gemFtaWFzdCBwb2plZHluY3plZ28gZWxlbWVudHUuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJvcGlzIGRvbXnFm2xuZWdvIMW6csOzZMWCYSBkxbp3acSZa3UgR1N0cmVhbWVyYSIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIk9waXN1amUgd3licmFueSBlbGVtZW50IMW6csOzZMWCb3d5IGTFundpxJlrdS4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAiZG9tecWbbG5lIMW6csOzZMWCbyBvYnJhenUgR1N0cmVhbWVyYSIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlICIKKyN+ICJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgbW/FvGUgbmFncnl3YcSHIG9icmF6IHogZG93b2xuZWogbGljemJ5IGVsZW1lbnTDs3cgd2VqxZtjaW93eWNoLiAiCisjfiAiTmlla3TDs3JlIG1vxbxsaXdvxZtjaSB0byB2NGxzcmMsIHY0bDJzcmMgb3JheiB2aWRlb3Rlc3RzcmMuIMW5csOzZMWCbyBvYnJhenUgIgorI34gIm1vxbxlIGJ5xIcgY3rEmcWbY2lvd3ltIHBvdG9raWVtIHphbWlhc3QgcG9qZWR5bmN6ZWdvIGVsZW1lbnR1LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAib3BpcyBkb215xZtsbmVnbyDFunLDs2TFgmEgb2JyYXp1IEdTdHJlYW1lcmEiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJPcGlzdWplIHd5YnJhbnkgZWxlbWVudCDFunLDs2TFgm93eSBvYnJhenUuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAiZG9tecWbbG5hIHdpenVhbGl6YWNqYSBHU3RyZWFtZXJhIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCisjfiAic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgorI34gInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCAiCisjfiAib2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgbW/FvGUgdW1pZXN6Y3phxIcgd3R5Y3praSB3aXp1YWxpenVqxIVjZSB3IHBvdG9rdSB3IGNlbHUgIgorI34gInByemVrc3p0YcWCY2FuaWEgc3RydW1pZW5pIGTFundpxJlrb3d5Y2ggbmEga2xhdGtpIG9icmF6dS4gTmlla3TDs3JlICIKKyN+ICJtb8W8bGl3b8WbY2kgdG8gZ29vbSwgZ29vbTJrMSBvcmF6IHN5bmFlc3RoZXNpYS4gV3R5Y3prYSB3aXp1YWxpenVqxIVjYSBtb8W8ZSAiCisjfiAiYnnEhyBjesSZxZtjaW93eW0gcG90b2tpZW0gemFtaWFzdCBwb2plZHluY3plZ28gZWxlbWVudHUuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgIm9waXMgZG9tecWbbGVnbyBlbGVtZW50dSB3aXp1YWxpenVqxIVjZWdvIEdTdHJlYW1lcmEiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgIk9waXN1amUgd3licmFueSBlbGVtZW50IHdpenVhbGl6dWrEhWN5LiIKZGlmZiAtLWdpdCBhL3BvL3B0X0JSLmdtbyBiL3BvL3B0X0JSLmdtbwppbmRleCBmMGEzMDZkLi5mM2JiZGM2IDEwMDY0NAotLS0gYS9wby9wdF9CUi5nbW8KKysrIGIvcG8vcHRfQlIuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL3B0X0JSLnBvIGIvcG8vcHRfQlIucG8KaW5kZXggZTAyMmUzMy4uYmMzMGRjZSAxMDA2NDQKLS0tIGEvcG8vcHRfQlIucG8KKysrIGIvcG8vcHRfQlIucG8KQEAgLTYsMTAgKzYsMTAgQEAKICMKIG1zZ2lkICIiCiBtc2dzdHIgIiIKLSJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZC0xLjQuMVxuIgorIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkLTEuNy4xXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMDItMDEgMTg6MjQtMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTEyLTI4IDE3OjAzLTAyMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEZhYnLDrWNpbyBHb2RveSA8c2thcmxsb3RAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IEJyYXppbGlhbiBQb3J0dWd1ZXNlIDxsZHBici10cmFuc2xhdGlvbkBsaXN0cy5zb3VyY2Vmb3JnZS4iCiAibmV0PlxuIgpAQCAtMjIsMTIyICsyMiw4IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIk8gZm9ybWF0byBuw6NvIGZvaSBuZWdvY2lhZG8gYW50ZXMgZGEgY2hhbWFkYSBkYSBmdW7Dp8OjbyIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgImF1ZGlvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyBwYXJhIGV2ZW50b3MgZGUgc29tIgotCi0jLCBmdXp6eQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIk8gR1N0cmVhbWVyIHBvZGUgcmVwcm9kdXppciDDoXVkaW8gdXRpbGl6YW5kbyBxdWFscXVlciBxdWFudGlkYWRlIGRlICIKLSJlbGVtZW50b3MgZGUgc2HDrWRhLiBBbGd1bWFzIGRhcyBvcMOnw7VlcyBwb3Nzw612ZWlzIHPDo28gb3Nzc2luaywgcHVsc2VzaW5rIGUgIgotImFsc2FzaW5rLiBPIGF1ZGlvc2luayBwb2RlIHNlciB1bWEgZmlsYSBkZSBwcm9jZXNzYW1lbnRvIHBhcmNpYWwgZW0gdmV6IGRlICIKLSJhcGVuYXMgdW0gZWxlbWVudG8uIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLSJkZXNjcmnDp8OjbyBwYXJhIG8gYXVkaW9zaW5rIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRvIHBhcmEgZXZlbnRvcyBkZSBzb20iCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiRGVzY3JldmUgbyBlbGVtZW50byBhdWRpb3Npbmsgc2VsZWNpb25hZG8uIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgImF1ZGlvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyBwYXJhIENvbmZlcsOqbmNpYSBkZSDDgXVkaW8gZSBWw61kZW8iCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0iZGVzY3Jpw6fDo28gZG8gYXVkaW9zaW5rIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRvIHBhcmEgQ29uZmVyw6puY2lhIGRlIMOBdWRpbyBlICIKLSJWw61kZW8iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgImF1ZGlvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyBwYXJhIE3DunNpY2FzIGUgRmlsbWVzIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotImRlc2NyacOnw6NvIHBhcmEgbyBhdWRpb3NpbmsgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8gcGFyYSBNw7pzaWNhcyBlIEZpbG1lcyIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAidmlkZW9zaW5rIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRvIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJPIEdTdHJlYW1lciBwb2RlIHJlcHJvZHV6aXIgdsOtZGVvIHV0aWxpemFuZG8gcXVhbHF1ZXIgcXVhbnRpZGFkZSBkZSAiCi0iZWxlbWVudG9zIGRlIHNhw61kYS4gQWxndW1hcyBkYXMgb3DDp8O1ZXMgcG9zc8OtdmVpcyBzw6NvIHh2aW1hZ2VzaW5rLCAiCi0ieGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGUgYWFzaW5rLiBPIHZpZGVvc2luayBwb2RlIHNlciB1bWEgZmlsYSBkZSAiCi0icHJvY2Vzc2FtZW50byBwYXJjaWFsIGVtIHZleiBkZSBhcGVuYXMgdW0gZWxlbWVudG8uIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiZGVzY3Jpw6fDo28gcGFyYSBvIHZpZGVvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICJEZXNjcmV2ZSBvIGVsZW1lbnRvIHZpZGVvc2luayBzZWxlY2lvbmFkby4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiYXVkaW9zcmMgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8iCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iTyBHU3RyZWFtZXIgcG9kZSBncmF2YXIgw6F1ZGlvIHV0aWxpemFuZG8gcXVhbHF1ZXIgcXVhbnRpZGFkZSBkZSBlbGVtZW50b3MgZGUgIgotImVudHJhZGEuIEFsZ3VtYXMgZGFzIG9ww6fDtWVzIHBvc3PDrXZlaXMgc8OjbyBvc3NzcmMsIHB1bHNlc3JjIGUgYWxzYXNyYy4gQSAiCi0iZm9udGUgZGUgw6F1ZGlvIHBvZGUgc2VyIHVtYSBmaWxhIGRlIHByb2Nlc3NhbWVudG8gcGFyY2lhbCBlbSB2ZXogZGUgYXBlbmFzICIKLSJ1bSBlbGVtZW50by4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgImRlc2NyacOnw6NvIHBhcmEgbyBhdWRpb3NyYyBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIkRlc2NyZXZlIG8gZWxlbWVudG8gYXVkaW9zcmMgc2VsZWNpb25hZG8uIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgInZpZGVvc3JjIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRvIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIk8gR1N0cmVhbWVyIHBvZGUgZ3JhdmFyIHbDrWRlbyBkZSBxdWFscXVlciBxdWFudGlkYWRlIGRlIGVsZW1lbnRvcyBkZSAiCi0iZW50cmFkYS4gQWxndW1hcyBkYXMgb3DDp8O1ZXMgcG9zc8OtdmVpcyBzw6NvIHY0bHNyYywgdjRsMnNyYyBlIHZpZGVvdGVzdHNyYy4gQSAiCi0iZm9udGUgZGUgdsOtZGVvIHBvZGUgc2VyIHVtYSBmaWxhIGRlIHByb2Nlc3NhbWVudG8gcGFyY2lhbCBlbSB2ZXogZGUgYXBlbmFzICIKLSJ1bSBlbGVtZW50by4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgImRlc2NyacOnw6NvIHBhcmEgbyB2aWRlb3NyYyBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIkRlc2NyZXZlIG8gZWxlbWVudG8gdmlkZW9zcmMgc2VsZWNpb25hZG8uIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAidmlzdWFsaXphw6fDo28gZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZGEiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIk8gR1N0cmVhbWVyIHBvZGUgY29sb2NhciBwbHVnaW5zIGRlIHZpc3VhbGl6YcOnw6NvIG51bWEgZmlsYSBkZSBwcm9jZXNzYW1lbnRvICIKLSJwYXJhIHRyYW5zZm9ybWFyIGZsdXhvcyBkZSDDoXVkaW8gZW0gcXVhZHJvcyBkZSB2w61kZW8uIEFsZ3VtYXMgZGFzIG9ww6fDtWVzICIKLSJwb3Nzw612ZWlzIHPDo28gZ29vbSwgZ29vbTJrMSBlIHN5bmFlc3RoZXNpYS4gTyBwbHVnaW4gZGUgdmlzdWFsaXphw6fDo28gcG9kZSAiCi0ic2VyIHVtYSBmaWxhIGRlIHByb2Nlc3NhbWVudG8gcGFyY2lhbCBlbSB2ZXogZGUgYXBlbmFzIHVtIGVsZW1lbnRvLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJkZXNjcmnDp8OjbyBkYSB2aXN1YWxpemHDp8OjbyBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkYSIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiRGVzY3JldmUgbyBlbGVtZW50byBkZSB2aXN1YWxpemHDp8OjbyBzZWxlY2lvbmFkby4iCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCi1tc2dzdHIgIiIKK21zZ3N0ciAiTyBPcGVuQ1YgZmFsaG91IGFvIGNhcnJlZ2FyIGEgaW1hZ2VtIG1vZGVsbyIKIAogbXNnaWQgIkNvdWxkIG5vdCByZWFkIHRpdGxlIGluZm9ybWF0aW9uIGZvciBEVkQuIgogbXNnc3RyICJOw6NvIGZvaSBwb3Nzw612ZWwgbGVyIGFzIGluZm9ybWHDp8O1ZXMgZGUgdMOtdHVsbyBkbyBEVkQuIgpAQCAtMTk0LDcgKzgwLDcgQEAKICJBIGxvY2FsaXphw6fDo28gZG8gYXJxdWl2byBlc3TDoSBOVUxBLCBmYXZvciBkZWZpbmlyIHVtIG5vbWUgZGUgYXJxdWl2byB2w6FsaWRvIgogCiBtc2dpZCAiRGlnaXRhbHpvb20gZWxlbWVudCBjb3VsZG4ndCBiZSBjcmVhdGVkIgotbXNnc3RyICIiCittc2dzdHIgIk8gZWxlbWVudG8gRGlnaXRhbHpvb20gbsOjbyBww7RkZSBzZXIgY3JpYWRvIgogCiBtc2dpZCAiU3VicGljdHVyZSBmb3JtYXQgd2FzIG5vdCBjb25maWd1cmVkIGJlZm9yZSBkYXRhIGZsb3ciCiBtc2dzdHIgIk8gZm9ybWF0byBkZSBzdWJpbWFnZW0gbsOjbyBmb2kgY29uZmlndXJhZG8gYW50ZXMgZG8gZmx1eG8gZGUgZGFkb3MiCkBAIC0yNTgsNiArMTQ0LDEyMSBAQAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCiBtc2dzdHIgIk7Do28gZm9pIHBvc3PDrXZlbCBlbmNvbnRyYXIgZGV0YWxoZXMgcGFyYSBvIGNhbmFsIERWQiAlcyIKIAorI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgImF1ZGlvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyBwYXJhIGV2ZW50b3MgZGUgc29tIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiTyBHU3RyZWFtZXIgcG9kZSByZXByb2R1emlyIMOhdWRpbyB1dGlsaXphbmRvIHF1YWxxdWVyIHF1YW50aWRhZGUgZGUgIgorI34gImVsZW1lbnRvcyBkZSBzYcOtZGEuIEFsZ3VtYXMgZGFzIG9ww6fDtWVzIHBvc3PDrXZlaXMgc8OjbyBvc3NzaW5rLCBwdWxzZXNpbmsgZSAiCisjfiAiYWxzYXNpbmsuIE8gYXVkaW9zaW5rIHBvZGUgc2VyIHVtYSBmaWxhIGRlIHByb2Nlc3NhbWVudG8gcGFyY2lhbCBlbSB2ZXogIgorI34gImRlIGFwZW5hcyB1bSBlbGVtZW50by4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiIgorI34gImRlc2NyacOnw6NvIHBhcmEgbyBhdWRpb3NpbmsgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8gcGFyYSBldmVudG9zIGRlIHNvbSIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJEZXNjcmV2ZSBvIGVsZW1lbnRvIGF1ZGlvc2luayBzZWxlY2lvbmFkby4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiIgorI34gImF1ZGlvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyBwYXJhIENvbmZlcsOqbmNpYSBkZSDDgXVkaW8gZSBWw61kZW8iCisKKyN+IG1zZ2lkICIiCisjfiAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICIiCisjfiAiZGVzY3Jpw6fDo28gZG8gYXVkaW9zaW5rIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRvIHBhcmEgQ29uZmVyw6puY2lhIGRlICIKKyN+ICLDgXVkaW8gZSBWw61kZW8iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgImF1ZGlvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyBwYXJhIE3DunNpY2FzIGUgRmlsbWVzIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAiIgorI34gImRlc2NyacOnw6NvIHBhcmEgbyBhdWRpb3NpbmsgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8gcGFyYSBNw7pzaWNhcyBlIEZpbG1lcyIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAidmlkZW9zaW5rIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRvIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiAiCisjfiAiVGhlIHZpZGVvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJPIEdTdHJlYW1lciBwb2RlIHJlcHJvZHV6aXIgdsOtZGVvIHV0aWxpemFuZG8gcXVhbHF1ZXIgcXVhbnRpZGFkZSBkZSAiCisjfiAiZWxlbWVudG9zIGRlIHNhw61kYS4gQWxndW1hcyBkYXMgb3DDp8O1ZXMgcG9zc8OtdmVpcyBzw6NvIHh2aW1hZ2VzaW5rLCAiCisjfiAieGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGUgYWFzaW5rLiBPIHZpZGVvc2luayBwb2RlIHNlciB1bWEgZmlsYSBkZSAiCisjfiAicHJvY2Vzc2FtZW50byBwYXJjaWFsIGVtIHZleiBkZSBhcGVuYXMgdW0gZWxlbWVudG8uIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAiZGVzY3Jpw6fDo28gcGFyYSBvIHZpZGVvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJEZXNjcmV2ZSBvIGVsZW1lbnRvIHZpZGVvc2luayBzZWxlY2lvbmFkby4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAiYXVkaW9zcmMgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8iCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiTyBHU3RyZWFtZXIgcG9kZSBncmF2YXIgw6F1ZGlvIHV0aWxpemFuZG8gcXVhbHF1ZXIgcXVhbnRpZGFkZSBkZSBlbGVtZW50b3MgIgorI34gImRlIGVudHJhZGEuIEFsZ3VtYXMgZGFzIG9ww6fDtWVzIHBvc3PDrXZlaXMgc8OjbyBvc3NzcmMsIHB1bHNlc3JjIGUgYWxzYXNyYy4gIgorI34gIkEgZm9udGUgZGUgw6F1ZGlvIHBvZGUgc2VyIHVtYSBmaWxhIGRlIHByb2Nlc3NhbWVudG8gcGFyY2lhbCBlbSB2ZXogZGUgIgorI34gImFwZW5hcyB1bSBlbGVtZW50by4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgImRlc2NyacOnw6NvIHBhcmEgbyBhdWRpb3NyYyBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIkRlc2NyZXZlIG8gZWxlbWVudG8gYXVkaW9zcmMgc2VsZWNpb25hZG8uIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgInZpZGVvc3JjIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRvIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgIgorI34gImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIk8gR1N0cmVhbWVyIHBvZGUgZ3JhdmFyIHbDrWRlbyBkZSBxdWFscXVlciBxdWFudGlkYWRlIGRlIGVsZW1lbnRvcyBkZSAiCisjfiAiZW50cmFkYS4gQWxndW1hcyBkYXMgb3DDp8O1ZXMgcG9zc8OtdmVpcyBzw6NvIHY0bHNyYywgdjRsMnNyYyBlIHZpZGVvdGVzdHNyYy4gIgorI34gIkEgZm9udGUgZGUgdsOtZGVvIHBvZGUgc2VyIHVtYSBmaWxhIGRlIHByb2Nlc3NhbWVudG8gcGFyY2lhbCBlbSB2ZXogZGUgIgorI34gImFwZW5hcyB1bSBlbGVtZW50by4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgImRlc2NyacOnw6NvIHBhcmEgbyB2aWRlb3NyYyBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIkRlc2NyZXZlIG8gZWxlbWVudG8gdmlkZW9zcmMgc2VsZWNpb25hZG8uIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAidmlzdWFsaXphw6fDo28gZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZGEiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKKyN+ICJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCisjfiAic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkICIKKyN+ICJvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIk8gR1N0cmVhbWVyIHBvZGUgY29sb2NhciBwbHVnaW5zIGRlIHZpc3VhbGl6YcOnw6NvIG51bWEgZmlsYSBkZSAiCisjfiAicHJvY2Vzc2FtZW50byBwYXJhIHRyYW5zZm9ybWFyIGZsdXhvcyBkZSDDoXVkaW8gZW0gcXVhZHJvcyBkZSB2w61kZW8uICIKKyN+ICJBbGd1bWFzIGRhcyBvcMOnw7VlcyBwb3Nzw612ZWlzIHPDo28gZ29vbSwgZ29vbTJrMSBlIHN5bmFlc3RoZXNpYS4gTyBwbHVnaW4gIgorI34gImRlIHZpc3VhbGl6YcOnw6NvIHBvZGUgc2VyIHVtYSBmaWxhIGRlIHByb2Nlc3NhbWVudG8gcGFyY2lhbCBlbSB2ZXogZGUgIgorI34gImFwZW5hcyB1bSBlbGVtZW50by4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAiZGVzY3Jpw6fDo28gZGEgdmlzdWFsaXphw6fDo28gZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZGEiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgIkRlc2NyZXZlIG8gZWxlbWVudG8gZGUgdmlzdWFsaXphw6fDo28gc2VsZWNpb25hZG8uIgorCiAjfiBtc2dpZCAiQ291bGRuJ3QgZ2V0IHRoZSBNYW5pZmVzdCdzIFVSSSIKICN+IG1zZ3N0ciAiTsOjbyBmb2kgcG9zc8OtdmVsIG9idGVyIGEgVVJJIGRvIG1hbmlmZXN0byIKIApkaWZmIC0tZ2l0IGEvcG8vcm8uZ21vIGIvcG8vcm8uZ21vCmluZGV4IDkwOTEwNGMuLmI0MjgyYWQgMTAwNjQ0Ci0tLSBhL3BvL3JvLmdtbworKysgYi9wby9yby5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vcm8ucG8gYi9wby9yby5wbwppbmRleCA3OWQ0NDhmLi41N2MwNTgwIDEwMDY0NAotLS0gYS9wby9yby5wbworKysgYi9wby9yby5wbwpAQCAtNSw3ICs1LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDAuMTAuMTguMlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAxMC0wOC0xNiAwMzoxMSswMzAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBMdWNpYW4gQWRyaWFuIEdyaWppbmN1IDxsdWNpYW4uZ3JpamluY3VAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IFJvbWFuaWFuIDx0cmFuc2xhdGlvbi10ZWFtLXJvQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTIwLDk1ICsyMCw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9ydS5nbW8gYi9wby9ydS5nbW8KaW5kZXggODI2Y2FiOC4uNjk4YjFiZiAxMDA2NDQKLS0tIGEvcG8vcnUuZ21vCisrKyBiL3BvL3J1LmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9ydS5wbyBiL3BvL3J1LnBvCmluZGV4IDZhMTYwZDQuLmQ2Zjk4MzQgMTAwNjQ0Ci0tLSBhL3BvL3J1LnBvCisrKyBiL3BvL3J1LnBvCkBAIC04LDcgKzgsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS42LjBcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMTAtMTggMTM6NDArMDMwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogWXVyaSBLb3psb3YgPHl1cmF5QGtvbXlha2luby5ydT5cbiIKICJMYW5ndWFnZS1UZWFtOiBSdXNzaWFuIDxnbnVAZDA3LnJ1PlxuIgpAQCAtMjMsMTEwICsyMyw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgItC/0LXRgNC10LQg0YTRg9C90LrRhtC40LXQuSDQv9C+0LvRg9GH0LXQvdC40Y8g0L3QtSDQsdGL0Lsg0YHQvtCz0LvQsNGB0L7QstCw0L0g0YTQvtGA0LzQsNGCIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiR1N0cmVhbWVyIGF1ZGlvc2luayDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0LfQstGD0LrQvtCy0YvRhSDRgdC+0LHRi9GC0LjQuSIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciDQvNC+0LbQtdGCINCy0L7RgdC/0YDQvtC40LfQstC+0LTQuNGC0Ywg0LDRg9C00LjQviDRh9C10YDQtdC3INC70Y7QsdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0LLRi9GF0L7QtNC90YvRhSAiCi0i0Y3Qu9C10LzQtdC90YLQvtCyLiDQndC10LrQvtGC0L7RgNGL0LUg0LLQsNGA0LjQsNC90YLRizogb3Nzc2luaywgcHVsc2VzaW5rINC4IGFsc2FzaW5rLiBBdWRpb3NpbmsgIgotItC80L7QttC10YIg0LHRi9GC0Ywg0LrQvtC90LLQtdC50LXRgNC+0LwsINCwINC90LUg0L7QtNC40L3QvtGH0L3Ri9C8INGN0LvQtdC80LXQvdGC0L7QvC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAi0L7Qv9C40YHQsNC90LjQtSBHU3RyZWFtZXIgYXVkaW9zaW5rINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDQt9Cy0YPQutC+0LLRi9GFINGB0L7QsdGL0YLQuNC5IgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgItCe0L/QuNGB0YvQstCw0LXRgiDQstGL0LHRgNCw0L3QvdGL0Lkg0Y3Qu9C10LzQtdC90YIgYXVkaW9zaW5rLiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICJHU3RyZWFtZXIgYXVkaW9zaW5rINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDQsNGD0LTQuNC+LdCy0LjQtNC10L4g0LrQvtC90YTQtdGA0LXQvdGG0LjQuSIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgItC+0L/QuNGB0LDQvdC40LUgR1N0cmVhbWVyIGF1ZGlvc2luayDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0LDRg9C00LjQvi3QstC40LTQtdC+INC60L7QvdGE0LXRgNC10L3RhtC40LkiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIkdTdHJlYW1lciBhdWRpb3Npbmsg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINC80YPQt9GL0LrQuCDQuCDRhNC40LvRjNC80L7QsiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgItC+0L/QuNGB0LDQvdC40LUgR1N0cmVhbWVyIGF1ZGlvc2luayDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0LzRg9C30YvQutC4INC4INGE0LjQu9GM0LzQvtCyIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICJHU3RyZWFtZXIgdmlkZW9zaW5rINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIg0LzQvtC20LXRgiDQstC+0YHQv9GA0L7QuNC30LLQvtC00LjRgtGMINCy0LjQtNC10L4g0YfQtdGA0LXQtyDQu9GO0LHQvtC5INCy0YvRhdC+0LTQvdC+0Lkg0Y3Qu9C10LzQtdC90YIuINCd0LXQutC+0YLQvtGA0YvQtSAiCi0i0LLQsNGA0LjQsNC90YLRizogeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayDQuCBhYXNpbmsuIFZpZGVvc2luayDQvNC+0LbQtdGCICIKLSLQsdGL0YLRjCDQutC+0L3QstC10LnQtdGA0L7QvCwg0LAg0L3QtSDQvtC00LjQvdC+0YfQvdGL0Lwg0Y3Qu9C10LzQtdC90YLQvtC8LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgItC+0L/QuNGB0LDQvdC40LUgR1N0cmVhbWVyIHZpZGVvc2luayDQv9C+INGD0LzQvtC70YfQsNC90LjRjiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICLQntC/0LjRgdGL0LLQsNC10YIg0LLRi9Cx0YDQsNC90L3Ri9C5INGN0LvQtdC80LXQvdGCIHZpZGVvc2luay4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiR1N0cmVhbWVyIGF1ZGlvc3JjINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciDQvNC+0LbQtdGCINC30LDQv9C40YHRi9Cy0LDRgtGMINCw0YPQtNC40L4g0YEg0LvRjtCx0L7Qs9C+INCy0YXQvtC00L3QvtCz0L4g0Y3Qu9C10LzQtdC90YLQsC4g0J3QtdC60L7RgtC+0YDRi9C1ICIKLSLQstCw0YDQuNCw0L3RgtGLOiBvc3NzcmMsIHB1bHNlc3JjINC4IGFsc2FzcmMuINCY0YHRgtC+0YfQvdC40LrQvtC8INCw0YPQtNC40L4g0LzQvtC20LXRgiDQsdGL0YLRjCDQutC+0L3QstC10LnQtdGALCAiCi0i0LAg0L3QtSDQvtC00LjQvdC+0YfQvdGL0Lkg0Y3Qu9C10LzQtdC90YIuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICLQvtC/0LjRgdCw0L3QuNC1IEdTdHJlYW1lciBhdWRpb3NyYyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgItCe0L/QuNGB0YvQstCw0LXRgiDQstGL0LHRgNCw0L3QvdGL0Lkg0Y3Qu9C10LzQtdC90YIgYXVkaW9zcmMuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIkdTdHJlYW1lciB2aWRlb3NyYyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIg0LzQvtC20LXRgiDQt9Cw0L/QuNGB0YvQstCw0YLRjCDQstC40LTQtdC+INGBINC70Y7QsdC+0LPQviDQstGF0L7QtNC90L7Qs9C+INGN0LvQtdC80LXQvdGC0LAuINCd0LXQutC+0YLQvtGA0YvQtSAiCi0i0LLQsNGA0LjQsNC90YLRizogdjRsc3JjLCB2NGwyc3JjINC4IHZpZGVvdGVzdHNyYy4g0JjRgdGC0L7Rh9C90LjQutC+0Lwg0LLQuNC00LXQviDQvNC+0LbQtdGCINCx0YvRgtGMICIKLSLQutC+0L3QstC10LnQtdGALCDQsCDQvdC1INC+0LTQuNC90L7Rh9C90YvQuSDRjdC70LXQvNC10L3Rgi4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgItC+0L/QuNGB0LDQvdC40LUgR1N0cmVhbWVyIHZpZGVvc3JjINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAi0J7Qv9C40YHRi9Cy0LDQtdGCINCy0YvQsdGA0LDQvdC90YvQuSDRjdC70LXQvNC10L3RgiB2aWRlb3NyYy4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiDQv9C+INGD0LzQvtC70YfQsNC90LjRjiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyINC80L7QttC10YIg0L/QvtC80LXRidCw0YLRjCDQvNC+0LTRg9C70Lgg0LLQuNC30YPQsNC70LjQt9Cw0YbQuNC4INC00LvRjyDQv9GA0LXQvtCx0YDQsNC30L7QstCw0L3QuNGPINCw0YPQtNC40L4gIgotItC/0L7RgtC+0LrQvtCyINCy0LjQtNC10L4g0YTRgNCw0LPQvNC10L3RgtC+0LIuINCd0LXQutC+0YLQvtGA0YvQtSDQstCw0YDQuNCw0L3RgtGLOiBnb29tLCBnb29tMmsxINC4IHN5bmFlc3RoZXNpYS4gIgotItCc0L7QtNGD0LvRjCDQstC40LfRg9Cw0LvQuNC30LDRhtC40Lgg0LzQvtC20LXRgiDQsdGL0YLRjCDQutC+0L3QstC10LnQtdGA0L7QvCwg0LAg0L3QtSDQvtC00LjQvdC+0YfQvdGL0Lwg0Y3Qu9C10LzQtdC90YLQvtC8LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICLQvtC/0LjRgdCw0L3QuNC1IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICLQntC/0LjRgdGL0LLQsNC10YIg0LLRi9Cx0YDQsNC90L3Ri9C5INGN0LvQtdC80LXQvdGCIHZpc3VhbGl6YXRpb24uIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICLQntGI0LjQsdC60LAgT3BlbkNWINC/0YDQuCDQt9Cw0LPRgNGD0LfQutC1INGI0LDQsdC70L7QvdCwINC40LfQvtCx0YDQsNC20LXQvdC40Y8iCiAKQEAgLTI0NSw2ICsxNDEsMTEyIEBACiBtc2dpZCAiQ291bGRuJ3QgZmluZCBkZXRhaWxzIGZvciBEVkIgY2hhbm5lbCAlcyIKIG1zZ3N0ciAi0J3QtSDRg9C00LDQu9C+0YHRjCDQvdCw0LnRgtC4INC90LDRgdGC0YDQvtC50LrQuCBEVkIt0LrQsNC90LDQu9CwICVzIgogCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiR1N0cmVhbWVyIGF1ZGlvc2luayDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0LfQstGD0LrQvtCy0YvRhSDRgdC+0LHRi9GC0LjQuSIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciDQvNC+0LbQtdGCINCy0L7RgdC/0YDQvtC40LfQstC+0LTQuNGC0Ywg0LDRg9C00LjQviDRh9C10YDQtdC3INC70Y7QsdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0LLRi9GF0L7QtNC90YvRhSAiCisjfiAi0Y3Qu9C10LzQtdC90YLQvtCyLiDQndC10LrQvtGC0L7RgNGL0LUg0LLQsNGA0LjQsNC90YLRizogb3Nzc2luaywgcHVsc2VzaW5rINC4IGFsc2FzaW5rLiBBdWRpb3NpbmsgIgorI34gItC80L7QttC10YIg0LHRi9GC0Ywg0LrQvtC90LLQtdC50LXRgNC+0LwsINCwINC90LUg0L7QtNC40L3QvtGH0L3Ri9C8INGN0LvQtdC80LXQvdGC0L7QvC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAi0L7Qv9C40YHQsNC90LjQtSBHU3RyZWFtZXIgYXVkaW9zaW5rINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDQt9Cy0YPQutC+0LLRi9GFINGB0L7QsdGL0YLQuNC5IgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgItCe0L/QuNGB0YvQstCw0LXRgiDQstGL0LHRgNCw0L3QvdGL0Lkg0Y3Qu9C10LzQtdC90YIgYXVkaW9zaW5rLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICJHU3RyZWFtZXIgYXVkaW9zaW5rINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDQsNGD0LTQuNC+LdCy0LjQtNC10L4g0LrQvtC90YTQtdGA0LXQvdGG0LjQuSIKKworI34gbXNnaWQgIiIKKyN+ICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIiIKKyN+ICLQvtC/0LjRgdCw0L3QuNC1IEdTdHJlYW1lciBhdWRpb3Npbmsg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINCw0YPQtNC40L4t0LLQuNC00LXQviDQutC+0L3RhNC10YDQtdC90YbQuNC5IgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJHU3RyZWFtZXIgYXVkaW9zaW5rINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDQvNGD0LfRi9C60Lgg0Lgg0YTQuNC70YzQvNC+0LIiCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICLQvtC/0LjRgdCw0L3QuNC1IEdTdHJlYW1lciBhdWRpb3Npbmsg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINC80YPQt9GL0LrQuCDQuCDRhNC40LvRjNC80L7QsiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAiR1N0cmVhbWVyIHZpZGVvc2luayDQv9C+INGD0LzQvtC70YfQsNC90LjRjiIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gIgorI34gIlRoZSB2aWRlb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyINC80L7QttC10YIg0LLQvtGB0L/RgNC+0LjQt9Cy0L7QtNC40YLRjCDQstC40LTQtdC+INGH0LXRgNC10Lcg0LvRjtCx0L7QuSDQstGL0YXQvtC00L3QvtC5INGN0LvQtdC80LXQvdGCLiAiCisjfiAi0J3QtdC60L7RgtC+0YDRi9C1INCy0LDRgNC40LDQvdGC0Ys6IHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3Npbmsg0LggYWFzaW5rLiAiCisjfiAiVmlkZW9zaW5rINC80L7QttC10YIg0LHRi9GC0Ywg0LrQvtC90LLQtdC50LXRgNC+0LwsINCwINC90LUg0L7QtNC40L3QvtGH0L3Ri9C8INGN0LvQtdC80LXQvdGC0L7QvC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICLQvtC/0LjRgdCw0L3QuNC1IEdTdHJlYW1lciB2aWRlb3Npbmsg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4iCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAi0J7Qv9C40YHRi9Cy0LDQtdGCINCy0YvQsdGA0LDQvdC90YvQuSDRjdC70LXQvNC10L3RgiB2aWRlb3NpbmsuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgIkdTdHJlYW1lciBhdWRpb3NyYyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIg0LzQvtC20LXRgiDQt9Cw0L/QuNGB0YvQstCw0YLRjCDQsNGD0LTQuNC+INGBINC70Y7QsdC+0LPQviDQstGF0L7QtNC90L7Qs9C+INGN0LvQtdC80LXQvdGC0LAuINCd0LXQutC+0YLQvtGA0YvQtSAiCisjfiAi0LLQsNGA0LjQsNC90YLRizogb3Nzc3JjLCBwdWxzZXNyYyDQuCBhbHNhc3JjLiDQmNGB0YLQvtGH0L3QuNC60L7QvCDQsNGD0LTQuNC+INC80L7QttC10YIg0LHRi9GC0YwgIgorI34gItC60L7QvdCy0LXQudC10YAsINCwINC90LUg0L7QtNC40L3QvtGH0L3Ri9C5INGN0LvQtdC80LXQvdGCLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAi0L7Qv9C40YHQsNC90LjQtSBHU3RyZWFtZXIgYXVkaW9zcmMg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4iCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICLQntC/0LjRgdGL0LLQsNC10YIg0LLRi9Cx0YDQsNC90L3Ri9C5INGN0LvQtdC80LXQvdGCIGF1ZGlvc3JjLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJHU3RyZWFtZXIgdmlkZW9zcmMg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4iCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSAiCisjfiAiY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyINC80L7QttC10YIg0LfQsNC/0LjRgdGL0LLQsNGC0Ywg0LLQuNC00LXQviDRgSDQu9GO0LHQvtCz0L4g0LLRhdC+0LTQvdC+0LPQviDRjdC70LXQvNC10L3RgtCwLiDQndC10LrQvtGC0L7RgNGL0LUgIgorI34gItCy0LDRgNC40LDQvdGC0Ys6IHY0bHNyYywgdjRsMnNyYyDQuCB2aWRlb3Rlc3RzcmMuINCY0YHRgtC+0YfQvdC40LrQvtC8INCy0LjQtNC10L4g0LzQvtC20LXRgiDQsdGL0YLRjCAiCisjfiAi0LrQvtC90LLQtdC50LXRgCwg0LAg0L3QtSDQvtC00LjQvdC+0YfQvdGL0Lkg0Y3Qu9C10LzQtdC90YIuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICLQvtC/0LjRgdCw0L3QuNC1IEdTdHJlYW1lciB2aWRlb3NyYyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgItCe0L/QuNGB0YvQstCw0LXRgiDQstGL0LHRgNCw0L3QvdGL0Lkg0Y3Qu9C10LzQtdC90YIgdmlkZW9zcmMuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAiR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4iCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKKyN+ICJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCisjfiAic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkICIKKyN+ICJvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciDQvNC+0LbQtdGCINC/0L7QvNC10YnQsNGC0Ywg0LzQvtC00YPQu9C4INCy0LjQt9GD0LDQu9C40LfQsNGG0LjQuCDQtNC70Y8g0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjRjyDQsNGD0LTQuNC+ICIKKyN+ICLQv9C+0YLQvtC60L7QsiDQstC40LTQtdC+INGE0YDQsNCz0LzQtdC90YLQvtCyLiDQndC10LrQvtGC0L7RgNGL0LUg0LLQsNGA0LjQsNC90YLRizogZ29vbSwgZ29vbTJrMSDQuCAiCisjfiAic3luYWVzdGhlc2lhLiDQnNC+0LTRg9C70Ywg0LLQuNC30YPQsNC70LjQt9Cw0YbQuNC4INC80L7QttC10YIg0LHRi9GC0Ywg0LrQvtC90LLQtdC50LXRgNC+0LwsINCwINC90LUg0L7QtNC40L3QvtGH0L3Ri9C8ICIKKyN+ICLRjdC70LXQvNC10L3RgtC+0LwuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgItC+0L/QuNGB0LDQvdC40LUgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4iCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgItCe0L/QuNGB0YvQstCw0LXRgiDQstGL0LHRgNCw0L3QvdGL0Lkg0Y3Qu9C10LzQtdC90YIgdmlzdWFsaXphdGlvbi4iCisKICN+IG1zZ2lkICJDb3VsZG4ndCBnZXQgdGhlIE1hbmlmZXN0J3MgVVJJIgogI34gbXNnc3RyICLQndC1INGD0LTQsNC70L7RgdGMINC/0L7Qu9GD0YfQuNGC0YwgVVJJINC80LDQvdC40YTQtdGB0YLQsCIKIApkaWZmIC0tZ2l0IGEvcG8vc2suZ21vIGIvcG8vc2suZ21vCmluZGV4IGFlNjBjZDguLjQ1N2Y1ZTAgMTAwNjQ0Ci0tLSBhL3BvL3NrLmdtbworKysgYi9wby9zay5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vc2sucG8gYi9wby9zay5wbwppbmRleCBjNmQ4YzM0Li4zMmU1MTAxIDEwMDY0NAotLS0gYS9wby9zay5wbworKysgYi9wby9zay5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuMi4xXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDE0LTAxLTMwIDEwOjQ0KzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IFBldGVyIFR1aGFyc2t5IDx0dWhhcnNreUBtaXNiYi5zaz5cbiIKICJMYW5ndWFnZS1UZWFtOiBTbG92YWsgPHNrLWkxOG5AbGlzdHMubGludXguc2s+XG4iCkBAIC0yNCw5NSArMjQsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vc2wuZ21vIGIvcG8vc2wuZ21vCmluZGV4IGJjY2JlMTguLmVjMGFkZmIgMTAwNjQ0Ci0tLSBhL3BvL3NsLmdtbworKysgYi9wby9zbC5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vc2wucG8gYi9wby9zbC5wbwppbmRleCA3MGQwMjdiLi44MzAyMzcwIDEwMDY0NAotLS0gYS9wby9zbC5wbworKysgYi9wby9zbC5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDAuMTAuMjEuMlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAxMS0wNC0yNiAxNToyMSswMTAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBLbGVtZW4gS2/FoWlyIDxrbGVtZW4ua29zaXJAZ214LmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBTbG92ZW5pYW4gPHRyYW5zbGF0aW9uLXRlYW0tc2xAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMjUsOTUgKzI1LDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL3NxLmdtbyBiL3BvL3NxLmdtbwppbmRleCA1MTc4MjI2Li45YmZlYzM4IDEwMDY0NAotLS0gYS9wby9zcS5nbW8KKysrIGIvcG8vc3EuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL3NxLnBvIGIvcG8vc3EucG8KaW5kZXggZTQ1ZTE5Mi4uMDY3ODk0YyAxMDA2NDQKLS0tIGEvcG8vc3EucG8KKysrIGIvcG8vc3EucG8KQEAgLTYsNyArNiw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjcuMlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0wOC0xNSAxNjowNyswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBMYXVyZW50IERoaW1hIDxsYXVyZW50aUBhbGJsaW51eC5uZXQ+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogQWxiYW5pYW4gPHRyYW5zbGF0aW9uLXRlYW0tc3FAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMTgsOTUgKzE4LDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL3NyLmdtbyBiL3BvL3NyLmdtbwppbmRleCAzZTVlMjMxLi5mNDA2NTQ1IDEwMDY0NAotLS0gYS9wby9zci5nbW8KKysrIGIvcG8vc3IuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL3NyLnBvIGIvcG8vc3IucG8KaW5kZXggZDA1MDE4OC4uMDM4Mjg1ZSAxMDA2NDQKLS0tIGEvcG8vc3IucG8KKysrIGIvcG8vc3IucG8KQEAgLTIsMTMgKzIsMTMgQEAKICMgQ29weXJpZ2h0IChDKSAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgZ3N0LXBsdWdpbnMtYmFkIHBhY2thZ2UuCiAjIERhbmlsbyBTZWdhbiA8ZHNlZ2FuQGdteC5uZXQ+LCAyMDA0LgotIyDQnNC40YDQvtGB0LvQsNCyINCd0LjQutC+0LvQuNGbIDxtaXJvc2xhdm5pa29saWNAcm9ja2V0bWFpbC5jb20+LCAyMDEx4oCUMjAxNC4KKyMg0JzQuNGA0L7RgdC70LDQsiDQndC40LrQvtC70LjRmyA8bWlyb3NsYXZuaWtvbGljQHJvY2tldG1haWwuY29tPiwgMjAxMeKAlDIwMTUuCiBtc2dpZCAiIgogbXNnc3RyICIiCi0iUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQtMS40LjFcbiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZC0xLjYuMFxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDE0LTA5LTEzIDEwOjM5KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxNS0xMi0yNCAxMTozNCswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiDQnNC40YDQvtGB0LvQsNCyINCd0LjQutC+0LvQuNGbIDxtaXJvc2xhdm5pa29saWNAcm9ja2V0bWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogU2VyYmlhbiA8KG5vdGhpbmcpPlxuIgogIkxhbmd1YWdlOiBzclxuIgpAQCAtMjEsMTE1ICsyMSw4IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgItC30LDQv9C40YEg0L3QuNGY0LUg0LTQvtCz0L7QstC+0YDQtdC9INC/0YDQtSDRhNGD0L3QutGG0LjRmNC1INC00L7QsdCw0LLRmdCw0ZrQsCAoZ2V0KSIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgItC+0YHQvdC+0LLQvdC4INCw0YPQtNC40L4g0YPRgdC60LvQsNGS0LjQstCw0Ycg0LfQstGD0YfQvdC40YUg0LTQvtCz0LDRktCw0ZjQsCDQk9GB0YLRgNC40LzQtdGA0LAiCi0KLSMsIGZ1enp5Ci1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0i0JPRgdGC0YDQuNC80LXRgCDQvNC+0LbQtSDQtNCwINC/0YPRiNGC0LAg0LDRg9C00LjQviDQutC+0YDQuNGB0YLQtdGb0Lgg0LHQuNC70L4g0LrQvtGY0Lgg0LHRgNC+0Zgg0LjQt9C70LDQt9C90LjRhSDQtdC70LXQvNC10L3QsNGC0LAuICIKLSLQndC10LrQuCDQvNC+0LPRg9Gb0Lgg0LjQt9Cx0L7RgNC4INGB0YMg4oCeb3Nzc2lua+KAnCwg4oCecHVsc2VzaW5r4oCcINC4IOKAnmFsc2FzaW5r4oCcLiDQkNGD0LTQuNC+INGD0YHQutC70LDRktC40LLQsNGHICIKLSLQvNC+0LbQtSDQsdC40YLQuCDQtNC10LvQuNC80LjRh9C90LAg0YHQv9C+0ZjQutCwINGD0LzQtdGB0YLQviDRgdCw0LzQviDRmNC10LTQvdC+0LMg0LXQu9C10LzQtdC90YLQsC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAi0L7Qv9C40YEg0L7RgdC90L7QstC90L7QsyDQsNGD0LTQuNC+INGD0YHQutC70LDRktC40LLQsNGH0LAg0LfQstGD0YfQvdC40YUg0LTQvtCz0LDRktCw0ZjQsCDQk9GB0YLRgNC40LzQtdGA0LAiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAi0J7Qv9C40YHRg9GY0LUg0LjQt9Cw0LHRgNCw0L3QuCDQtdC70LXQvNC10L3RgiDQsNGD0LTQuNC+INGD0YHQutC70LDRktC40LLQsNGH0LAuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgItC+0YHQvdC+0LLQvdC4INCw0YPQtNC40L4g0YPRgdC60LvQsNGS0LjQstCw0Ycg0JPRgdGC0YDQuNC80LXRgNCwINC30LAg0LDRg9C00LjQvi/QstC40LTQtdC+INGB0LDRgdGC0LDQvdGH0LXRmtC1IgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAi0L7Qv9C40YEg0L7RgdC90L7QstC90L7QsyDQsNGD0LTQuNC+INGD0YHQutC70LDRktC40LLQsNGHINCT0YHRgtGA0LjQvNC10YDQsCDQt9CwINCw0YPQtNC40L4v0LLQuNC00LXQviDRgdCw0YHRgtCw0L3Rh9C10ZrQtSIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAi0L7RgdC90L7QstC90Lgg0LDRg9C00LjQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRhyDQk9GB0YLRgNC40LzQtdGA0LAg0LfQsCDQvNGD0LfQuNC60YMg0Lgg0YTQuNC70LzQvtCy0LUiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICLQvtC/0LjRgSDQvtGB0L3QvtCy0L3QvtCzINCw0YPQtNC40L4g0YPRgdC60LvQsNGS0LjQstCw0YfQsCDQk9GB0YLRgNC40LzQtdGA0LAg0LfQsCDQvNGD0LfQuNC60YMg0Lgg0YTQuNC70LzQvtCy0LUiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgItC+0YHQvdC+0LLQvdC4INCy0LjQtNC10L4g0YPRgdC60LvQsNGS0LjQstCw0Ycg0JPRgdGC0YDQuNC80LXRgNCwIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSLQk9GB0YLRgNC40LzQtdGAINC80L7QttC1INC00LAg0L/Rg9GI0YLQsCDQstC40LTQtdC+INC60L7RgNC40YHRgtC10ZvQuCDQsdC40LvQviDQutC+0ZjQuCDQsdGA0L7RmCDQuNC30LvQsNC30L3QuNGFINC10LvQtdC80LXQvdCw0YLQsC4gIgotItCd0LXQutC4INC80L7Qs9GD0ZvQuCDQuNC30LHQvtGA0Lgg0YHRgyDigJ54dmltYWdlc2lua+KAnCwg4oCeeGltYWdlc2lua+KAnCwg4oCec2RsdmlkZW9zaW5r4oCcINC4ICIKLSLigJ5hYXNpbmvigJwuINCS0LjQtNC10L4g0YPRgdC60LvQsNGS0LjQstCw0Ycg0LzQvtC20LUg0LHQuNGC0Lgg0LTQtdC70LjQvNC40YfQvdCwINGB0L/QvtGY0LrQsCDRg9C80LXRgdGC0L4g0YHQsNC80L4g0ZjQtdC00L3QvtCzICIKLSLQtdC70LXQvNC10L3RgtCwLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgItC+0L/QuNGBINC+0YHQvdC+0LLQvdC+0LMg0LLQuNC00LXQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRh9CwINCT0YHRgtGA0LjQvNC10YDQsCIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICLQntC/0LjRgdGD0ZjQtSDQuNC30LDQsdGA0LDQvdC4INC10LvQtdC80LXQvdGCINCy0LjQtNC10L4g0YPRgdC60LvQsNGS0LjQstCw0YfQsC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAi0L7RgdC90L7QstC90Lgg0LDRg9C00LjQviDQuNC30LLQvtGAINCT0YHRgtGA0LjQvNC10YDQsCIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSLQk9GB0YLRgNC40LzQtdGAINC80L7QttC1INC00LAg0YHQvdC40LzQsCDQsNGD0LTQuNC+INC60L7RgNC40YHRgtC10ZvQuCDQsdC40LvQviDQutC+0ZjQuCDQsdGA0L7RmCDQuNC30LvQsNC30L3QuNGFINC10LvQtdC80LXQvdCw0YLQsC4gIgotItCd0LXQutC4INC80L7Qs9GD0ZvQuCDQuNC30LHQvtGA0Lgg0YHRgyDigJ5vc3NzcmPigJwsIOKAnnB1bHNlc3Jj4oCcINC4IOKAnmFsc2FzcmPigJwuINCY0LfQstC+0YAg0LfQstGD0LrQsCDQvNC+0LbQtSAiCi0i0LHQuNGC0Lgg0LTQtdC70LjQvNC40YfQvdCwINGB0L/QvtGY0LrQsCDRg9C80LXRgdGC0L4g0YHQsNC80L4g0ZjQtdC00L3QvtCzINC10LvQtdC80LXQvdGC0LAuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICLQvtC/0LjRgSDQvtGB0L3QvtCy0L3QvtCzINCw0YPQtNC40L4g0LjQt9Cy0L7RgNCwINCT0YHRgtGA0LjQvNC10YDQsCIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgItCe0L/QuNGB0YPRmNC1INC40LfQsNCx0YDQsNC90Lgg0LXQu9C10LzQtdC90YIg0LDRg9C00LjQviDQuNC30LLQvtGA0LAuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgItC+0YHQvdC+0LLQvdC4INCy0LjQtNC10L4g0LjQt9Cy0L7RgCDQk9GB0YLRgNC40LzQtdGA0LAiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0i0JPRgdGC0YDQuNC80LXRgCDQvNC+0LbQtSDQtNCwINGB0L3QuNC80LAg0LLQuNC00LXQviDQutC+0YDQuNGB0YLQtdGb0Lgg0LHQuNC70L4g0LrQvtGY0Lgg0LHRgNC+0Zgg0LjQt9C70LDQt9C90LjRhSDQtdC70LXQvNC10L3QsNGC0LAuICIKLSLQndC10LrQuCDQvNC+0LPRg9Gb0Lgg0LjQt9Cx0L7RgNC4INGB0YMg4oCedjRsc3Jj4oCcLCDigJ52NGwyc3Jj4oCcINC4IOKAnHZpZGVvdGVzdHNyY+KAnC4g0JjQt9Cy0L7RgCDQstC40LTQtdCwINC80L7QttC1ICIKLSLQsdC40YLQuCDQtNC10LvQuNC80LjRh9C90LAg0YHQv9C+0ZjQutCwINGD0LzQtdGB0YLQviDRgdCw0LzQviDRmNC10LTQvdC+0LMg0LXQu9C10LzQtdC90YLQsC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgItC+0L/QuNGBINC+0YHQvdC+0LLQvdC+0LMg0LLQuNC00LXQviDQuNC30LLQvtGA0LAg0JPRgdGC0YDQuNC80LXRgNCwIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAi0J7Qv9C40YHRg9GY0LUg0LjQt9Cw0LHRgNCw0L3QuCDQtdC70LXQvNC10L3RgiDQstC40LTQtdC+INC40LfQstC+0YDQsC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICLQvtGB0L3QvtCy0L3QviDQv9GA0LjQutCw0LfQuNCy0LDRmtC1INCT0YHRgtGA0LjQvNC10YDQsCIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0i0JPRgdGC0YDQuNC80LXRgCDQvNC+0LbQtSDQtNCwINGB0YLQsNCy0Lgg0L/RgNC40LrRmdGD0YfQutC1INC/0YDQuNC60LDQt9C40LLQsNGa0LAg0YMg0YHQv9C+0ZjQutGDINC00LAg0L/RgNC10YLQstC+0YDQuCDQsNGD0LTQuNC+ICIKLSLRgtC+0LrQvtCy0LUg0YMg0LLQuNC00LXQviDQutCw0LTRgNC+0LLQtS4g0J3QtdC60Lgg0LzQvtCz0YPRm9C4INC40LfQsdC+0YDQuCDRgdGDIOKAnmdvb23igJwsIOKAnmdvb20yazHigJwg0LggIgotIuKAnnN5bmFlc3RoZXNpYeKAnC4g0J/RgNC40LrRmdGD0YfQsNC6INC/0YDQuNC60LDQt9C40LLQsNGa0LAg0LzQvtC20LUg0LHQuNGC0Lgg0LTQtdC70LjQvNC40YfQvdCwINGB0L/QvtGY0LrQsCDRg9C80LXRgdGC0L4g0YHQsNC80L4gIgotItGY0LXQtNC90L7QsyDQtdC70LXQvNC10L3RgtCwLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICLQvtC/0LjRgSDQvtGB0L3QvtCy0L3QvtCzINC/0YDQuNC60LDQt9C40LLQsNGa0LAg0JPRgdGC0YDQuNC80LXRgNCwIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICLQntC/0LjRgdGD0ZjQtSDQuNC30LDQsdGA0LDQvdC4INC10LvQtdC80LXQvdGCINC/0YDQuNC60LDQt9C40LLQsNGa0LAuIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgotbXNnc3RyICIiCittc2dzdHIgItCe0YLQstC+0YDQtdC90LjQptCSINC90LjRmNC1INGD0YHQv9C10L4g0LTQsCDRg9GH0LjRgtCwINGB0LvQuNC60YMg0YjQsNCx0LvQvtC90LAiCiAKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCB0aXRsZSBpbmZvcm1hdGlvbiBmb3IgRFZELiIKIG1zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC/0YDQvtGH0LjRgtCw0Lwg0LjQvdGE0L7RgNC80LDRhtC40ZjQtSDQviDQvdCw0YHQu9C+0LLRgyDQlNCS0JQt0LAuIgpAQCAtMTg0LDcgKzc3LDcgQEAKICLQnNC10YHRgtC+INC00LDRgtC+0YLQtdC60LUg0ZjQtSDQv9C+0LTQtdGI0LXQvdC+INC90LAg0J3QmNCo0KLQkCwg0L/QvtC00LXRgdC40YLQtSDQs9CwINC90LAg0LjRgdC/0YDQsNCy0LDQvSDQvdCw0LfQuNCyINC00LDRgtC+0YLQtdC60LUiCiAKIG1zZ2lkICJEaWdpdGFsem9vbSBlbGVtZW50IGNvdWxkbid0IGJlIGNyZWF0ZWQiCi1tc2dzdHIgIiIKK21zZ3N0ciAi0JXQu9C10LzQtdC90YIg0LTQuNCz0LjRgtCw0LvQvdC+0LMg0LfRg9C80LAg0L3QtSDQvNC+0LbQtSDQsdC40YLQuCDQvdCw0L/RgNCw0LLRmdC10L0iCiAKIG1zZ2lkICJTdWJwaWN0dXJlIGZvcm1hdCB3YXMgbm90IGNvbmZpZ3VyZWQgYmVmb3JlIGRhdGEgZmxvdyIKIG1zZ3N0ciAi0JfQsNC/0LjRgSDQv9C+0LTRgdC70LjQutC1INC90LjRmNC1INC/0L7QtNC10YjQtdC9INC/0YDQtSDQv9GA0L7RgtC+0LrQsCDQv9C+0LTQsNGC0LDQutCwIgpAQCAtMjQ1LDYgKzEzOCwxMTIgQEAKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGRldGFpbHMgZm9yIERWQiBjaGFubmVsICVzIgogbXNnc3RyICLQndC1INC80L7Qs9GDINC00LAg0L/RgNC+0L3QsNGS0LXQvCDQv9C+0LTQsNGC0LrQtSDQt9CwINCU0JLQkSDQutCw0L3QsNC7IOKAniVz4oCcIgogCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAi0L7RgdC90L7QstC90Lgg0LDRg9C00LjQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRhyDQt9Cy0YPRh9C90LjRhSDQtNC+0LPQsNGS0LDRmNCwINCT0YHRgtGA0LjQvNC10YDQsCIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gItCT0YHRgtGA0LjQvNC10YAg0LzQvtC20LUg0LTQsCDQv9GD0YjRgtCwINCw0YPQtNC40L4g0LrQvtGA0LjRgdGC0LXRm9C4INCx0LjQu9C+INC60L7RmNC4INCx0YDQvtGYINC40LfQu9Cw0LfQvdC40YUg0LXQu9C10LzQtdC90LDRgtCwLiAiCisjfiAi0J3QtdC60Lgg0LzQvtCz0YPRm9C4INC40LfQsdC+0YDQuCDRgdGDIOKAnm9zc3NpbmvigJwsIOKAnnB1bHNlc2lua+KAnCDQuCDigJ5hbHNhc2lua+KAnC4g0JDRg9C00LjQviAiCisjfiAi0YPRgdC60LvQsNGS0LjQstCw0Ycg0LzQvtC20LUg0LHQuNGC0Lgg0LTQtdC70LjQvNC40YfQvdCwINGB0L/QvtGY0LrQsCDRg9C80LXRgdGC0L4g0YHQsNC80L4g0ZjQtdC00L3QvtCzINC10LvQtdC80LXQvdGC0LAuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgItC+0L/QuNGBINC+0YHQvdC+0LLQvdC+0LMg0LDRg9C00LjQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRh9CwINC30LLRg9GH0L3QuNGFINC00L7Qs9Cw0ZLQsNGY0LAg0JPRgdGC0YDQuNC80LXRgNCwIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgItCe0L/QuNGB0YPRmNC1INC40LfQsNCx0YDQsNC90Lgg0LXQu9C10LzQtdC90YIg0LDRg9C00LjQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRh9CwLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICLQvtGB0L3QvtCy0L3QuCDQsNGD0LTQuNC+INGD0YHQutC70LDRktC40LLQsNGHINCT0YHRgtGA0LjQvNC10YDQsCDQt9CwINCw0YPQtNC40L4v0LLQuNC00LXQviDRgdCw0YHRgtCw0L3Rh9C10ZrQtSIKKworI34gbXNnaWQgIiIKKyN+ICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgItC+0L/QuNGBINC+0YHQvdC+0LLQvdC+0LMg0LDRg9C00LjQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRhyDQk9GB0YLRgNC40LzQtdGA0LAg0LfQsCDQsNGD0LTQuNC+L9Cy0LjQtNC10L4g0YHQsNGB0YLQsNC90YfQtdGa0LUiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgItC+0YHQvdC+0LLQvdC4INCw0YPQtNC40L4g0YPRgdC60LvQsNGS0LjQstCw0Ycg0JPRgdGC0YDQuNC80LXRgNCwINC30LAg0LzRg9C30LjQutGDINC4INGE0LjQu9C80L7QstC1IgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAi0L7Qv9C40YEg0L7RgdC90L7QstC90L7QsyDQsNGD0LTQuNC+INGD0YHQutC70LDRktC40LLQsNGH0LAg0JPRgdGC0YDQuNC80LXRgNCwINC30LAg0LzRg9C30LjQutGDINC4INGE0LjQu9C80L7QstC1IgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICLQvtGB0L3QvtCy0L3QuCDQstC40LTQtdC+INGD0YHQutC70LDRktC40LLQsNGHINCT0YHRgtGA0LjQvNC10YDQsCIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gIgorI34gIlRoZSB2aWRlb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAi0JPRgdGC0YDQuNC80LXRgCDQvNC+0LbQtSDQtNCwINC/0YPRiNGC0LAg0LLQuNC00LXQviDQutC+0YDQuNGB0YLQtdGb0Lgg0LHQuNC70L4g0LrQvtGY0Lgg0LHRgNC+0Zgg0LjQt9C70LDQt9C90LjRhSDQtdC70LXQvNC10L3QsNGC0LAuICIKKyN+ICLQndC10LrQuCDQvNC+0LPRg9Gb0Lgg0LjQt9Cx0L7RgNC4INGB0YMg4oCeeHZpbWFnZXNpbmvigJwsIOKAnnhpbWFnZXNpbmvigJwsIOKAnnNkbHZpZGVvc2lua+KAnCDQuCAiCisjfiAi4oCeYWFzaW5r4oCcLiDQktC40LTQtdC+INGD0YHQutC70LDRktC40LLQsNGHINC80L7QttC1INCx0LjRgtC4INC00LXQu9C40LzQuNGH0L3QsCDRgdC/0L7RmNC60LAg0YPQvNC10YHRgtC+INGB0LDQvNC+INGY0LXQtNC90L7QsyAiCisjfiAi0LXQu9C10LzQtdC90YLQsC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICLQvtC/0LjRgSDQvtGB0L3QvtCy0L3QvtCzINCy0LjQtNC10L4g0YPRgdC60LvQsNGS0LjQstCw0YfQsCDQk9GB0YLRgNC40LzQtdGA0LAiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAi0J7Qv9C40YHRg9GY0LUg0LjQt9Cw0LHRgNCw0L3QuCDQtdC70LXQvNC10L3RgiDQstC40LTQtdC+INGD0YHQutC70LDRktC40LLQsNGH0LAuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgItC+0YHQvdC+0LLQvdC4INCw0YPQtNC40L4g0LjQt9Cy0L7RgCDQk9GB0YLRgNC40LzQtdGA0LAiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAi0JPRgdGC0YDQuNC80LXRgCDQvNC+0LbQtSDQtNCwINGB0L3QuNC80LAg0LDRg9C00LjQviDQutC+0YDQuNGB0YLQtdGb0Lgg0LHQuNC70L4g0LrQvtGY0Lgg0LHRgNC+0Zgg0LjQt9C70LDQt9C90LjRhSDQtdC70LXQvNC10L3QsNGC0LAuICIKKyN+ICLQndC10LrQuCDQvNC+0LPRg9Gb0Lgg0LjQt9Cx0L7RgNC4INGB0YMg4oCeb3Nzc3Jj4oCcLCDigJ5wdWxzZXNyY+KAnCDQuCDigJ5hbHNhc3Jj4oCcLiDQmNC30LLQvtGAINC30LLRg9C60LAg0LzQvtC20LUgIgorI34gItCx0LjRgtC4INC00LXQu9C40LzQuNGH0L3QsCDRgdC/0L7RmNC60LAg0YPQvNC10YHRgtC+INGB0LDQvNC+INGY0LXQtNC90L7QsyDQtdC70LXQvNC10L3RgtCwLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAi0L7Qv9C40YEg0L7RgdC90L7QstC90L7QsyDQsNGD0LTQuNC+INC40LfQstC+0YDQsCDQk9GB0YLRgNC40LzQtdGA0LAiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICLQntC/0LjRgdGD0ZjQtSDQuNC30LDQsdGA0LDQvdC4INC10LvQtdC80LXQvdGCINCw0YPQtNC40L4g0LjQt9Cy0L7RgNCwLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICLQvtGB0L3QvtCy0L3QuCDQstC40LTQtdC+INC40LfQstC+0YAg0JPRgdGC0YDQuNC80LXRgNCwIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgIgorI34gImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gItCT0YHRgtGA0LjQvNC10YAg0LzQvtC20LUg0LTQsCDRgdC90LjQvNCwINCy0LjQtNC10L4g0LrQvtGA0LjRgdGC0LXRm9C4INCx0LjQu9C+INC60L7RmNC4INCx0YDQvtGYINC40LfQu9Cw0LfQvdC40YUg0LXQu9C10LzQtdC90LDRgtCwLiAiCisjfiAi0J3QtdC60Lgg0LzQvtCz0YPRm9C4INC40LfQsdC+0YDQuCDRgdGDIOKAnnY0bHNyY+KAnCwg4oCedjRsMnNyY+KAnCDQuCDigJx2aWRlb3Rlc3RzcmPigJwuINCY0LfQstC+0YAg0LLQuNC00LXQsCAiCisjfiAi0LzQvtC20LUg0LHQuNGC0Lgg0LTQtdC70LjQvNC40YfQvdCwINGB0L/QvtGY0LrQsCDRg9C80LXRgdGC0L4g0YHQsNC80L4g0ZjQtdC00L3QvtCzINC10LvQtdC80LXQvdGC0LAuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICLQvtC/0LjRgSDQvtGB0L3QvtCy0L3QvtCzINCy0LjQtNC10L4g0LjQt9Cy0L7RgNCwINCT0YHRgtGA0LjQvNC10YDQsCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgItCe0L/QuNGB0YPRmNC1INC40LfQsNCx0YDQsNC90Lgg0LXQu9C10LzQtdC90YIg0LLQuNC00LXQviDQuNC30LLQvtGA0LAuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAi0L7RgdC90L7QstC90L4g0L/RgNC40LrQsNC30LjQstCw0ZrQtSDQk9GB0YLRgNC40LzQtdGA0LAiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKKyN+ICJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCisjfiAic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkICIKKyN+ICJvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gItCT0YHRgtGA0LjQvNC10YAg0LzQvtC20LUg0LTQsCDRgdGC0LDQstC4INC/0YDQuNC60ZnRg9GH0LrQtSDQv9GA0LjQutCw0LfQuNCy0LDRmtCwINGDINGB0L/QvtGY0LrRgyDQtNCwINC/0YDQtdGC0LLQvtGA0Lgg0LDRg9C00LjQviAiCisjfiAi0YLQvtC60L7QstC1INGDINCy0LjQtNC10L4g0LrQsNC00YDQvtCy0LUuINCd0LXQutC4INC80L7Qs9GD0ZvQuCDQuNC30LHQvtGA0Lgg0YHRgyDigJ5nb29t4oCcLCDigJ5nb29tMmsx4oCcINC4ICIKKyN+ICLigJ5zeW5hZXN0aGVzaWHigJwuINCf0YDQuNC60ZnRg9GH0LDQuiDQv9GA0LjQutCw0LfQuNCy0LDRmtCwINC80L7QttC1INCx0LjRgtC4INC00LXQu9C40LzQuNGH0L3QsCDRgdC/0L7RmNC60LAg0YPQvNC10YHRgtC+ICIKKyN+ICLRgdCw0LzQviDRmNC10LTQvdC+0LMg0LXQu9C10LzQtdC90YLQsC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAi0L7Qv9C40YEg0L7RgdC90L7QstC90L7QsyDQv9GA0LjQutCw0LfQuNCy0LDRmtCwINCT0YHRgtGA0LjQvNC10YDQsCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKKyN+IG1zZ3N0ciAi0J7Qv9C40YHRg9GY0LUg0LjQt9Cw0LHRgNCw0L3QuCDQtdC70LXQvNC10L3RgiDQv9GA0LjQutCw0LfQuNCy0LDRmtCwLiIKKwogI34gbXNnaWQgIkNvdWxkbid0IGdldCB0aGUgTWFuaWZlc3QncyBVUkkiCiAjfiBtc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQtNC+0LHQsNCy0LjQvCDQv9GD0YLQsNGa0YMg0JzQsNC90LjRhNC10YHRgtCwIgogCmRpZmYgLS1naXQgYS9wby9zdi5nbW8gYi9wby9zdi5nbW8KaW5kZXggOTc3OGIwZi4uNGNhZjIxNCAxMDA2NDQKLS0tIGEvcG8vc3YuZ21vCisrKyBiL3BvL3N2LmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9zdi5wbyBiL3BvL3N2LnBvCmluZGV4IGNlMTY4ZTEuLjI3YWQ3YmUgMTAwNjQ0Ci0tLSBhL3BvL3N2LnBvCisrKyBiL3BvL3N2LnBvCkBAIC04LDcgKzgsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS42LjBcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMTEtMDEgMDA6NDgrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogU2ViYXN0aWFuIFJhc211c3NlbiA8c2VicmFzQGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBTd2VkaXNoIDx0cC1zdkBsaXN0b3IudHAtc3Yuc2U+XG4iCkBAIC0yMSwxMTIgKzIxLDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiZm9ybWF0ZXQgZsO2cmhhbmRsYWRlcyBpbnRlIGZyYW0gaW5uYW4gaMOkbXRmdW5rdGlvbmVuIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLWxqdWR1dGfDpW5nIGbDtnIgbGp1ZGjDpG5kZWxzZXIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIHNwZWxhIHVwcCBsanVkIHZpYSBldHQgYW50YWwgdXRnw6VuZ3NlbGVtZW50LiBOw6VncmEgbcO2amxpZ2EgdmFsICIKLSLDpHIgb3Nzc2luaywgcHVsc2VzaW5rIG9jaCBhbHNhc2luay4gTGp1ZHV0Z8OlbmdlbiBrYW4gdmFyYSBlbiBkZWxyw7ZybGVkbmluZyAiCi0iaXN0w6RsbGV0IGbDtnIgYmFyYSBldHQgZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiYmVza3Jpdm5pbmcgZsO2ciBzdGFuZGFyZCBHU3RyZWFtZXItbGp1ZHV0Z8OlbmcgZsO2ciBsanVkaMOkbmRlbHNlciIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGRhIGxqdWR1dGfDpW5nc2VsZW1lbnRldC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLWxqdWR1dGfDpW5nIGbDtnIgbGp1ZC92aWRlby1rb25mZXJlbnNlciIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLSJiZXNrcml2bmluZyBmw7ZyIHN0YW5kYXJkIEdTdHJlYW1lci1sanVkdXRnw6VuZyBmw7ZyIGxqdWQvdmlkZW8ta29uZmVyZW5zZXIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci1sanVkdXRnw6VuZyBmw7ZyIG11c2lrIG9jaCBmaWxtZXIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJiZXNrcml2bmluZyBmw7ZyIHN0YW5kYXJkIEdTdHJlYW1lci1sanVkdXRnw6VuZyBmw7ZyIG11c2lrIG9jaCBmaWxtZXIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci12aWRlb3V0Z8OlbmciCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBrYW4gc3BlbGEgdXBwIHZpZGVvIHZpYSBldHQgYW50YWwgdXRnw6VuZ3NlbGVtZW50LiBOw6VncmEgbcO2amxpZ2EgIgotInZhbCDDpHIgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBvY2ggYWFzaW5rLiBWaWRlb3V0Z8OlbmdlbiBrYW4gIgotInZhcmEgZW4gZGVscsO2cmxlZG5pbmcgaXN0w6RsbGV0IGbDtnIgYmFyYSBldHQgZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICJiZXNrcml2bmluZyBmw7ZyIHN0YW5kYXJkIEdTdHJlYW1lci12aWRlb3V0Z8OlbmciCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxkYSB2aWRlb3V0Z8OlbmdzZWxlbWVudGV0LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItbGp1ZGvDpGxsYSIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIHNwZWxhIGluIGxqdWQgZnLDpW4gZXR0IGFudGFsIGluZ8OlbmdzZWxlbWVudC4gTsOlZ3JhIG3DtmpsaWdhIHZhbCAiCi0iw6RyIG9zc3NyYywgcHVsc2VzcmMgb2NoIGFsc2FzcmMuIExqdWRrw6RsbGFuIGthbiB2YXJhIGVuIGRlbHLDtnJsZWRuaW5nICIKLSJpc3TDpGxsZXQgZsO2ciBiYXJhIGV0dCBlbGVtZW50LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiYmVza3Jpdm5pbmcgZsO2ciBzdGFuZGFyZCBHU3RyZWFtZXItbGp1ZGvDpGxsYSIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZGEgbGp1ZGvDpGxsc2VsZW1lbnRldC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLXZpZGVva8OkbGxhIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBrYW4gc3BlbGEgaW4gdmlkZW8gZnLDpW4gZXR0IGFudGFsIGluZ8OlbmdzZWxlbWVudC4gTsOlZ3JhIG3DtmpsaWdhICIKLSJ2YWwgw6RyIHY0bHNyYywgdjRsMnNyYyBvY2ggdmlkZW90ZXN0c3JjLiBWaWRlb2vDpGxsYW4ga2FuIHZhcmEgZW4gIgotImRlbHLDtnJsZWRuaW5nIGlzdMOkbGxldCBmw7ZyIGJhcmEgZXR0IGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJiZXNrcml2bmluZyBmw7ZyIHN0YW5kYXJkIEdTdHJlYW1lci12aWRlb2vDpGxsYSIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZGEgdmlkZW9rw6RsbHNlbGVtZW50ZXQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLXZpc3VhbGlzZXJpbmciCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBrYW4gbMOkZ2dhIGluIGluc3RpY2tzbW9kdWxlciBmw7ZyIHZpc3VhbGlzZXJpbmcgaSBlbiBwaXBlbGluZSBmw7ZyICIKLSJhdHQgdHJhbnNmb3JtZXJhIGxqdWRzdHLDtm1tYXIgdGlsbCB2aWRlb2JpbGRlci4gTsOlZ3JhIG3DtmpsaWdhIHZhbCDDpHIgZ29vbSwgIgotImdvb20yazEgb2NoIHN5bmFlc3RoZXNpYS4gVmlzdWFsaXNlcmluZ3NpbnN0aWNrc21vZHVsZW4ga2FuIHZhcmEgZW4gIgotImRlbHLDtnJsZWRuaW5nIGlzdMOkbGxldCBmw7ZyIGJhcmEgZXR0IGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgImJlc2tyaXZuaW5nIGbDtnIgc3RhbmRhcmQgR1N0cmVhbWVyLXZpc3VhbGlzZXJpbmciCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZGEgdmlzdWFsaXNlcmluZ3NlbGVtZW50ZXQuIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICJPcGVuQ1YgbWlzc2x5Y2thZGVzIG1lZCBhdHQgbMOkc2EgaW4gbWFsbGJpbGQiCiAKQEAgLTI0Miw2ICsxMzYsMTEyIEBACiBtc2dpZCAiQ291bGRuJ3QgZmluZCBkZXRhaWxzIGZvciBEVkIgY2hhbm5lbCAlcyIKIG1zZ3N0ciAiS3VuZGUgZWogaGl0dGEgZGV0YWxqZXIgZsO2ciBEVkIta2FuYWwgJXMiCiAKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItbGp1ZHV0Z8OlbmcgZsO2ciBsanVkaMOkbmRlbHNlciIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gc3BlbGEgdXBwIGxqdWQgdmlhIGV0dCBhbnRhbCB1dGfDpW5nc2VsZW1lbnQuIE7DpWdyYSBtw7ZqbGlnYSAiCisjfiAidmFsIMOkciBvc3NzaW5rLCBwdWxzZXNpbmsgb2NoIGFsc2FzaW5rLiBManVkdXRnw6VuZ2VuIGthbiB2YXJhIGVuICIKKyN+ICJkZWxyw7ZybGVkbmluZyBpc3TDpGxsZXQgZsO2ciBiYXJhIGV0dCBlbGVtZW50LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJiZXNrcml2bmluZyBmw7ZyIHN0YW5kYXJkIEdTdHJlYW1lci1sanVkdXRnw6VuZyBmw7ZyIGxqdWRow6RuZGVsc2VyIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZGEgbGp1ZHV0Z8OlbmdzZWxlbWVudGV0LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItbGp1ZHV0Z8OlbmcgZsO2ciBsanVkL3ZpZGVvLWtvbmZlcmVuc2VyIgorCisjfiBtc2dpZCAiIgorI34gImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiIgorI34gImJlc2tyaXZuaW5nIGbDtnIgc3RhbmRhcmQgR1N0cmVhbWVyLWxqdWR1dGfDpW5nIGbDtnIgbGp1ZC92aWRlby1rb25mZXJlbnNlciIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLWxqdWR1dGfDpW5nIGbDtnIgbXVzaWsgb2NoIGZpbG1lciIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgImJlc2tyaXZuaW5nIGbDtnIgc3RhbmRhcmQgR1N0cmVhbWVyLWxqdWR1dGfDpW5nIGbDtnIgbXVzaWsgb2NoIGZpbG1lciIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLXZpZGVvdXRnw6VuZyIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gIgorI34gIlRoZSB2aWRlb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiBzcGVsYSB1cHAgdmlkZW8gdmlhIGV0dCBhbnRhbCB1dGfDpW5nc2VsZW1lbnQuIE7DpWdyYSBtw7ZqbGlnYSAiCisjfiAidmFsIMOkciB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIG9jaCBhYXNpbmsuIFZpZGVvdXRnw6VuZ2VuICIKKyN+ICJrYW4gdmFyYSBlbiBkZWxyw7ZybGVkbmluZyBpc3TDpGxsZXQgZsO2ciBiYXJhIGV0dCBlbGVtZW50LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgImJlc2tyaXZuaW5nIGbDtnIgc3RhbmRhcmQgR1N0cmVhbWVyLXZpZGVvdXRnw6VuZyIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGRhIHZpZGVvdXRnw6VuZ3NlbGVtZW50ZXQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci1sanVka8OkbGxhIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gc3BlbGEgaW4gbGp1ZCBmcsOlbiBldHQgYW50YWwgaW5nw6VuZ3NlbGVtZW50LiBOw6VncmEgbcO2amxpZ2EgIgorI34gInZhbCDDpHIgb3Nzc3JjLCBwdWxzZXNyYyBvY2ggYWxzYXNyYy4gTGp1ZGvDpGxsYW4ga2FuIHZhcmEgZW4gZGVscsO2cmxlZG5pbmcgIgorI34gImlzdMOkbGxldCBmw7ZyIGJhcmEgZXR0IGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJiZXNrcml2bmluZyBmw7ZyIHN0YW5kYXJkIEdTdHJlYW1lci1sanVka8OkbGxhIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxkYSBsanVka8OkbGxzZWxlbWVudGV0LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItdmlkZW9rw6RsbGEiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSAiCisjfiAiY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiBzcGVsYSBpbiB2aWRlbyBmcsOlbiBldHQgYW50YWwgaW5nw6VuZ3NlbGVtZW50LiBOw6VncmEgbcO2amxpZ2EgIgorI34gInZhbCDDpHIgdjRsc3JjLCB2NGwyc3JjIG9jaCB2aWRlb3Rlc3RzcmMuIFZpZGVva8OkbGxhbiBrYW4gdmFyYSBlbiAiCisjfiAiZGVscsO2cmxlZG5pbmcgaXN0w6RsbGV0IGbDtnIgYmFyYSBldHQgZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgImJlc2tyaXZuaW5nIGbDtnIgc3RhbmRhcmQgR1N0cmVhbWVyLXZpZGVva8OkbGxhIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxkYSB2aWRlb2vDpGxsc2VsZW1lbnRldC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItdmlzdWFsaXNlcmluZyIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgorI34gInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKKyN+ICJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgIgorI34gIm9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiBsw6RnZ2EgaW4gaW5zdGlja3Ntb2R1bGVyIGbDtnIgdmlzdWFsaXNlcmluZyBpIGVuIHBpcGVsaW5lICIKKyN+ICJmw7ZyIGF0dCB0cmFuc2Zvcm1lcmEgbGp1ZHN0csO2bW1hciB0aWxsIHZpZGVvYmlsZGVyLiBOw6VncmEgbcO2amxpZ2EgdmFsIMOkciAiCisjfiAiZ29vbSwgZ29vbTJrMSBvY2ggc3luYWVzdGhlc2lhLiBWaXN1YWxpc2VyaW5nc2luc3RpY2tzbW9kdWxlbiBrYW4gdmFyYSBlbiAiCisjfiAiZGVscsO2cmxlZG5pbmcgaXN0w6RsbGV0IGbDtnIgYmFyYSBldHQgZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAiYmVza3Jpdm5pbmcgZsO2ciBzdGFuZGFyZCBHU3RyZWFtZXItdmlzdWFsaXNlcmluZyIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxkYSB2aXN1YWxpc2VyaW5nc2VsZW1lbnRldC4iCisKICN+IG1zZ2lkICJDb3VsZG4ndCBnZXQgdGhlIE1hbmlmZXN0J3MgVVJJIgogI34gbXNnc3RyICJLdW5kZSBlaiBow6RtdGEgbWFuaWZlc3RldHMgVVJJIgogCmRpZmYgLS1naXQgYS9wby90ci5nbW8gYi9wby90ci5nbW8KaW5kZXggZWE2Mjc0NS4uM2VhOWFhNyAxMDA2NDQKLS0tIGEvcG8vdHIuZ21vCisrKyBiL3BvL3RyLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby90ci5wbyBiL3BvL3RyLnBvCmluZGV4IDQ5MjhmNjMuLjI3YzE1ZGQgMTAwNjQ0Ci0tLSBhL3BvL3RyLnBvCisrKyBiL3BvL3RyLnBvCkBAIC03LDcgKzcsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQtMS40LjFcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMDEtMTAgMjE6MDcrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogVm9sa2FuIEdlemVyIDx2b2xrYW5nZXplckBnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogVHVya2lzaCA8Z251LXRyLXUxMmFAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMjEsOTUgKzIxLDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiZ2V0IGZvbmtzaXlvbnVuZGFuIMO2bmNlIGJpw6dpbSBnw7Zyw7zFn8O8bGVtZWRpIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL3VrLmdtbyBiL3BvL3VrLmdtbwppbmRleCAyM2Y0MTkwLi5lNjI1OGQ5IDEwMDY0NAotLS0gYS9wby91ay5nbW8KKysrIGIvcG8vdWsuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL3VrLnBvIGIvcG8vdWsucG8KaW5kZXggNTE3NmM5Yi4uMDRiYzkzNSAxMDA2NDQKLS0tIGEvcG8vdWsucG8KKysrIGIvcG8vdWsucG8KQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAxLjYuMFxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAxNS0xMC0xNSAyMDo0NCswMzAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBZdXJpIENob3Jub2l2YW4gPHl1cmNob3JAdWtyLm5ldD5cbiIKICJMYW5ndWFnZS1UZWFtOiBVa3JhaW5pYW4gPHRyYW5zbGF0aW9uLXRlYW0tdWtAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMjMsMTE2ICsyMyw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgItGE0L7RgNC80LDRgiDQvdC1INCx0YPQu9C+INGD0LfQs9C+0LTQttC10L3QviDQtNC+INCy0LjQutC70LjQutGDINGE0YPQvdC60YbRltGXIGdldCIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgItGC0LjQv9C+0LLQuNC5INC/0YDQuNC50LzQsNGHINC30LLRg9C60L7QstC40YUg0L/QvtC00ZbQuSBHU3RyZWFtZXIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSLQoyBHU3RyZWFtZXIg0L/QtdGA0LXQtNCx0LDRh9C10L3QviDQvNC+0LbQu9C40LLRltGB0YLRjCDQstGW0LTRgtCy0L7RgNC10L3QvdGPINC30LLRg9C60L7QstC40YUg0LTQsNC90LjRhSDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiAiCi0i0LTQvtCy0ZbQu9GM0L3QvtGXINC60ZbQu9GM0LrQvtGB0YLRliDQtdC70LXQvNC10L3RgtGW0LIg0LLQuNCy0LXQtNC10L3QvdGPLiDQodC10YDQtdC0INC80L7QttC70LjQstC40YUg0LLQsNGA0ZbQsNC90YLRltCyIG9zc3NpbmssICIKLSJwdWxzZXNpbmsg0YLQsCBhbHNhc2luay4g0JfQstGD0LrQvtCy0LjQuSDQv9GA0LjQudC80LDRhyDQvNC+0LbQtSDQsdGD0YLQuCDQvtC60YDQtdC80LjQvCDQutCw0L3QsNC70L7QvCwg0LAg0L3QtSAiCi0i0L7QtNC90LjQvCDQtdC70LXQvNC10L3RgtC+0LwuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgItC+0L/QuNGBINGC0LjQv9C+0LLQvtCz0L4g0L/RgNC40LnQvNCw0YfQsCDQt9Cy0YPQutC+0LLQuNGFINC/0L7QtNGW0LkgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgItCe0L/QuNGB0YPRlCDQstC40LHRgNCw0L3QuNC5INC10LvQtdC80LXQvdGCIGF1ZGlvc2luay4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAi0YLQuNC/0L7QstC40Lkg0LfQstGD0LrQvtCy0LjQuSDQv9GA0LjQudC80LDRhyBHU3RyZWFtZXIg0LTQu9GPINC30LLRg9C60L7QstC40YUg0YLQsCDQstGW0LTQtdC+0LrQvtC90YTQtdGA0LXQvdGG0ZbQuSIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLSLQvtC/0LjRgSDRgtC40L/QvtCy0L7Qs9C+INC30LLRg9C60L7QstC+0LPQviDQv9GA0LjQudC80LDRh9CwIEdTdHJlYW1lciDQtNC70Y8g0LfQstGD0LrQvtCy0LjRhSDRgtCwINCy0ZbQtNC10L7QutC+0L3RhNC10YDQtdC90YbRltC5IgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICLRgtC40L/QvtCy0LjQuSDQt9Cy0YPQutC+0LLQuNC5INC/0YDQuNC50LzQsNGHIEdTdHJlYW1lciDQtNC70Y8g0LzRg9C30LjQutC4INGWINGE0ZbQu9GM0LzRltCyIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAi0L7Qv9C40YEg0YLQuNC/0L7QstC+0LPQviDQt9Cy0YPQutC+0LLQvtCz0L4g0L/RgNC40LnQvNCw0YfQsCBHU3RyZWFtZXIg0LTQu9GPINC80YPQt9C40LrQuCDRliDRhNGW0LvRjNC80ZbQsiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAi0YLQuNC/0L7QstC40Lkg0LLRltC00LXQvtC/0YDQuNC50LzQsNGHIEdTdHJlYW1lciIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0i0KMgR1N0cmVhbWVyINC/0LXRgNC10LTQsdCw0YfQtdC90L4g0LLRltC00YLQstC+0YDQtdC90L3RjyDQstGW0LTQtdC+INC30LAg0LTQvtC/0L7QvNC+0LPQvtGOINC00L7QstGW0LvRjNC90L7RlyDQutGW0LvRjNC60L7RgdGC0ZYgIgotItC10LvQtdC80LXQvdGC0ZbQsiDQstC40LLQtdC00LXQvdC90Y8uINCh0LXRgNC10LQg0LzQvtC20LvQuNCy0LjRhSDQstCw0YDRltCw0L3RgtGW0LIgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssICIKLSJzZGx2aWRlb3Npbmsg0YLQsCBhYXNpbmsuINCf0YDQuNC50LzQsNGHINCy0ZbQtNC10L7QtNCw0L3QuNGFINC80L7QttC1INCx0YPRgtC4INC+0LrRgNC10LzQuNC8INC60LDQvdCw0LvQvtC8INC3ICIKLSLQtNC10LrRltC70YzQutC+0YUg0L7QsdGA0L7QsdC90LjQutGW0LIsINCwINC90LUg0L/RgNC+0YHRgtC+INC+0LTQvdC40Lwg0LXQu9C10LzQtdC90YLQvtC8LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgItC+0L/QuNGBINGC0LjQv9C+0LLQvtCz0L4g0LLRltC00LXQvtC/0YDQuNC50LzQsNGH0LAgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgItCe0L/QuNGB0YPRlCDQstC40LHRgNCw0L3QuNC5INC10LvQtdC80LXQvdGCIHZpZGVvc2luay4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAi0YLQuNC/0L7QstC1INC00LbQtdGA0LXQu9C+INC30LLRg9C60YMgR1N0cmVhbWVyIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotItCjIEdTdHJlYW1lciDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC80L7QttC70LjQstGW0YHRgtGMINC30LDQv9C40YHRgyDQt9Cy0YPQutC+0LLQuNGFINC00LDQvdC40YUg0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4gIgotItC00L7QstGW0LvRjNC90L7RlyDQutGW0LvRjNC60L7RgdGC0ZYg0LXQu9C10LzQtdC90YLRltCyINCy0YXRltC00L3QuNGFINC00LDQvdC40YUuINCh0LXRgNC10LQg0LzQvtC20LvQuNCy0LjRhSDQstCw0YDRltCw0L3RgtGW0LIgIgotIm9zc3NyYywgcHVsc2VzcmMg0YLQsCBhbHNhc3JjLiDQlNC20LXRgNC10LvQvtC8INC30LLRg9C60L7QstC40YUg0LTQsNC90LjRhSDQvNC+0LbQtSDQsdGD0YLQuCDQvtC60YDQtdC80LjQuSDQutCw0L3QsNC7ICIKLSLQtyDQtNC10LrRltC70YzQutC+0YUg0LXQu9C10LzQtdC90YLRltCyLCDQsCDQvdC1INC/0YDQvtGB0YLQviDQvtC00LjQvSDQtdC70LXQvNC10L3Rgi4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgItC+0L/QuNGBINGC0LjQv9C+0LLQvtCz0L4g0LTQttC10YDQtdC70LAg0LfQstGD0LrRgyBHU3RyZWFtZXIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICLQntC/0LjRgdGD0ZQg0LLQuNCx0YDQsNC90LjQuSDQtdC70LXQvNC10L3RgiBhdWRpb3NyYy4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAi0YLQuNC/0L7QstC1INC00LbQtdGA0LXQu9C+INCy0ZbQtNC10L4gR1N0cmVhbWVyIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotItCjIEdTdHJlYW1lciDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC80L7QttC70LjQstGW0YHRgtGMINC30LDQv9C40YHRgyDQstGW0LTQtdC+0LTQsNC90LjRhSDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiDQtNC+0LLRltC70YzQvdC+0ZcgIgotItC60ZbQu9GM0LrQvtGB0YLRliDQtdC70LXQvNC10L3RgtGW0LIg0LLRhdGW0LTQvdC40YUg0LTQsNC90LjRhS4g0KHQtdGA0LXQtCDQvNC+0LbQu9C40LLQuNGFINCy0LDRgNGW0LDQvdGC0ZbQsiB2NGxzcmMsIHY0bDJzcmMgIgotItGC0LAgdmlkZW90ZXN0c3JjLiDQlNC20LXRgNC10LvQvtC8INCy0ZbQtNC10L7QtNCw0L3QuNGFINC80L7QttC1INCx0YPRgtC4INC+0LrRgNC10LzQuNC5INC60LDQvdCw0Lsg0Lcg0LTQtdC60ZbQu9GM0LrQvtGFICIKLSLQtdC70LXQvNC10L3RgtGW0LIsINCwINC90LUg0L/RgNC+0YHRgtC+INC+0LTQuNC9INC10LvQtdC80LXQvdGCLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAi0L7Qv9C40YEg0YLQuNC/0L7QstC+0LPQviDQtNC20LXRgNC10LvQsCDQstGW0LTQtdC+IEdTdHJlYW1lciIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgItCe0L/QuNGB0YPRlCDQstC40LHRgNCw0L3QuNC5INC10LvQtdC80LXQvdGCIHZpZGVvc3JjLiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgItGC0LjQv9C+0LLQsCDQstGW0LfRg9Cw0LvRltC30LDRhtGW0Y8gR1N0cmVhbWVyIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSLQoyBHU3RyZWFtZXIg0L/QtdGA0LXQtNCx0LDRh9C10L3QviDQtNC+0LTQsNCy0LDQvdC90Y8g0LTQviDQutCw0L3QsNC70YMg0L7QsdGA0L7QsdC60Lgg0LTQvtC00LDRgtC60ZbQsiDQstGW0LfRg9Cw0LvRltC30LDRhtGW0ZcgIgotItC00LvRjyDQvtCx0YDQvtCx0LrQuCDQv9C+0YLQvtC60ZbQsiDQt9Cy0YPQutC+0LLQuNGFINC00LDQvdC40YUg0YMg0LrQsNC00YDQsNGFINCy0ZbQtNC10L4uINCh0LXRgNC10LQg0LzQvtC20LvQuNCy0LjRhSDQstCw0YDRltCw0L3RgtGW0LIgIgotImdvb20sIGdvb20yazEg0YLQsCBzeW5hZXN0aGVzaWEuINCU0L7QtNCw0YLQvtC6INCy0ZbQt9GD0LDQu9GW0LfQsNGG0ZbRlyDQvNC+0LbQtSDQsdGD0YLQuCDQvtC60YDQtdC80LjQvCAiCi0i0LrQsNC90LDQu9C+0LwsINCwINC90LUg0L/RgNC+0YHRgtC+INC+0LTQvdC40Lwg0LXQu9C10LzQtdC90YLQvtC8LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICLQvtC/0LjRgSDRgtC40L/QvtCy0L7RlyDQstGW0LfRg9Cw0LvRltC30LDRhtGW0ZcgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICLQntC/0LjRgdGD0ZQg0LLQuNCx0YDQsNC90LjQuSDQtdC70LXQvNC10L3RgiDQstGW0LfRg9Cw0LvRltC30LDRhtGW0ZcuIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICJPcGVuQ1Yg0L3QtSDQstC00LDQu9C+0YHRjyDQt9Cw0LLQsNC90YLQsNC20LjRgtC4INC30L7QsdGA0LDQttC10L3QvdGPINGI0LDQsdC70L7QvdGDIgogCkBAIC0yNTYsNiArMTQ2LDExNyBAQAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCiBtc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0LfQvdCw0LnRgtC4INC/0LDRgNCw0LzQtdGC0YDRltCyINC60LDQvdCw0LvRgyBEVkIgJXMiCiAKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICLRgtC40L/QvtCy0LjQuSDQv9GA0LjQudC80LDRhyDQt9Cy0YPQutC+0LLQuNGFINC/0L7QtNGW0LkgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAi0KMgR1N0cmVhbWVyINC/0LXRgNC10LTQsdCw0YfQtdC90L4g0LzQvtC20LvQuNCy0ZbRgdGC0Ywg0LLRltC00YLQstC+0YDQtdC90L3RjyDQt9Cy0YPQutC+0LLQuNGFINC00LDQvdC40YUg0LfQsCAiCisjfiAi0LTQvtC/0L7QvNC+0LPQvtGOINC00L7QstGW0LvRjNC90L7RlyDQutGW0LvRjNC60L7RgdGC0ZYg0LXQu9C10LzQtdC90YLRltCyINCy0LjQstC10LTQtdC90L3Rjy4g0KHQtdGA0LXQtCDQvNC+0LbQu9C40LLQuNGFICIKKyN+ICLQstCw0YDRltCw0L3RgtGW0LIgb3Nzc2luaywgcHVsc2VzaW5rINGC0LAgYWxzYXNpbmsuINCX0LLRg9C60L7QstC40Lkg0L/RgNC40LnQvNCw0Ycg0LzQvtC20LUg0LHRg9GC0LggIgorI34gItC+0LrRgNC10LzQuNC8INC60LDQvdCw0LvQvtC8LCDQsCDQvdC1INC+0LTQvdC40Lwg0LXQu9C10LzQtdC90YLQvtC8LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICLQvtC/0LjRgSDRgtC40L/QvtCy0L7Qs9C+INC/0YDQuNC50LzQsNGH0LAg0LfQstGD0LrQvtCy0LjRhSDQv9C+0LTRltC5IEdTdHJlYW1lciIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICLQntC/0LjRgdGD0ZQg0LLQuNCx0YDQsNC90LjQuSDQtdC70LXQvNC10L3RgiBhdWRpb3NpbmsuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgItGC0LjQv9C+0LLQuNC5INC30LLRg9C60L7QstC40Lkg0L/RgNC40LnQvNCw0YcgR1N0cmVhbWVyINC00LvRjyDQt9Cy0YPQutC+0LLQuNGFINGC0LAg0LLRltC00LXQvtC60L7QvdGE0LXRgNC10L3RhtGW0LkiCisKKyN+IG1zZ2lkICIiCisjfiAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICIiCisjfiAi0L7Qv9C40YEg0YLQuNC/0L7QstC+0LPQviDQt9Cy0YPQutC+0LLQvtCz0L4g0L/RgNC40LnQvNCw0YfQsCBHU3RyZWFtZXIg0LTQu9GPINC30LLRg9C60L7QstC40YUg0YLQsCAiCisjfiAi0LLRltC00LXQvtC60L7QvdGE0LXRgNC10L3RhtGW0LkiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgItGC0LjQv9C+0LLQuNC5INC30LLRg9C60L7QstC40Lkg0L/RgNC40LnQvNCw0YcgR1N0cmVhbWVyINC00LvRjyDQvNGD0LfQuNC60Lgg0ZYg0YTRltC70YzQvNGW0LIiCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICLQvtC/0LjRgSDRgtC40L/QvtCy0L7Qs9C+INC30LLRg9C60L7QstC+0LPQviDQv9GA0LjQudC80LDRh9CwIEdTdHJlYW1lciDQtNC70Y8g0LzRg9C30LjQutC4INGWINGE0ZbQu9GM0LzRltCyIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICLRgtC40L/QvtCy0LjQuSDQstGW0LTQtdC+0L/RgNC40LnQvNCw0YcgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiAiCisjfiAiVGhlIHZpZGVvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICLQoyBHU3RyZWFtZXIg0L/QtdGA0LXQtNCx0LDRh9C10L3QviDQstGW0LTRgtCy0L7RgNC10L3QvdGPINCy0ZbQtNC10L4g0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0LTQvtCy0ZbQu9GM0L3QvtGXICIKKyN+ICLQutGW0LvRjNC60L7RgdGC0ZYg0LXQu9C10LzQtdC90YLRltCyINCy0LjQstC10LTQtdC90L3Rjy4g0KHQtdGA0LXQtCDQvNC+0LbQu9C40LLQuNGFINCy0LDRgNGW0LDQvdGC0ZbQsiB4dmltYWdlc2luaywgIgorI34gInhpbWFnZXNpbmssIHNkbHZpZGVvc2luayDRgtCwIGFhc2luay4g0J/RgNC40LnQvNCw0Ycg0LLRltC00LXQvtC00LDQvdC40YUg0LzQvtC20LUg0LHRg9GC0Lgg0L7QutGA0LXQvNC40LwgIgorI34gItC60LDQvdCw0LvQvtC8INC3INC00LXQutGW0LvRjNC60L7RhSDQvtCx0YDQvtCx0L3QuNC60ZbQsiwg0LAg0L3QtSDQv9GA0L7RgdGC0L4g0L7QtNC90LjQvCDQtdC70LXQvNC10L3RgtC+0LwuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAi0L7Qv9C40YEg0YLQuNC/0L7QstC+0LPQviDQstGW0LTQtdC+0L/RgNC40LnQvNCw0YfQsCBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAi0J7Qv9C40YHRg9GUINCy0LjQsdGA0LDQvdC40Lkg0LXQu9C10LzQtdC90YIgdmlkZW9zaW5rLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICLRgtC40L/QvtCy0LUg0LTQttC10YDQtdC70L4g0LfQstGD0LrRgyBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAi0KMgR1N0cmVhbWVyINC/0LXRgNC10LTQsdCw0YfQtdC90L4g0LzQvtC20LvQuNCy0ZbRgdGC0Ywg0LfQsNC/0LjRgdGDINC30LLRg9C60L7QstC40YUg0LTQsNC90LjRhSDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiAiCisjfiAi0LTQvtCy0ZbQu9GM0L3QvtGXINC60ZbQu9GM0LrQvtGB0YLRliDQtdC70LXQvNC10L3RgtGW0LIg0LLRhdGW0LTQvdC40YUg0LTQsNC90LjRhS4g0KHQtdGA0LXQtCDQvNC+0LbQu9C40LLQuNGFINCy0LDRgNGW0LDQvdGC0ZbQsiAiCisjfiAib3Nzc3JjLCBwdWxzZXNyYyDRgtCwIGFsc2FzcmMuINCU0LbQtdGA0LXQu9C+0Lwg0LfQstGD0LrQvtCy0LjRhSDQtNCw0L3QuNGFINC80L7QttC1INCx0YPRgtC4INC+0LrRgNC10LzQuNC5ICIKKyN+ICLQutCw0L3QsNC7INC3INC00LXQutGW0LvRjNC60L7RhSDQtdC70LXQvNC10L3RgtGW0LIsINCwINC90LUg0L/RgNC+0YHRgtC+INC+0LTQuNC9INC10LvQtdC80LXQvdGCLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAi0L7Qv9C40YEg0YLQuNC/0L7QstC+0LPQviDQtNC20LXRgNC10LvQsCDQt9Cy0YPQutGDIEdTdHJlYW1lciIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgItCe0L/QuNGB0YPRlCDQstC40LHRgNCw0L3QuNC5INC10LvQtdC80LXQvdGCIGF1ZGlvc3JjLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICLRgtC40L/QvtCy0LUg0LTQttC10YDQtdC70L4g0LLRltC00LXQviBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSAiCisjfiAiY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAi0KMgR1N0cmVhbWVyINC/0LXRgNC10LTQsdCw0YfQtdC90L4g0LzQvtC20LvQuNCy0ZbRgdGC0Ywg0LfQsNC/0LjRgdGDINCy0ZbQtNC10L7QtNCw0L3QuNGFINC30LAg0LTQvtC/0L7QvNC+0LPQvtGOICIKKyN+ICLQtNC+0LLRltC70YzQvdC+0Zcg0LrRltC70YzQutC+0YHRgtGWINC10LvQtdC80LXQvdGC0ZbQsiDQstGF0ZbQtNC90LjRhSDQtNCw0L3QuNGFLiDQodC10YDQtdC0INC80L7QttC70LjQstC40YUg0LLQsNGA0ZbQsNC90YLRltCyICIKKyN+ICJ2NGxzcmMsIHY0bDJzcmMg0YLQsCB2aWRlb3Rlc3RzcmMuINCU0LbQtdGA0LXQu9C+0Lwg0LLRltC00LXQvtC00LDQvdC40YUg0LzQvtC20LUg0LHRg9GC0Lgg0L7QutGA0LXQvNC40LkgIgorI34gItC60LDQvdCw0Lsg0Lcg0LTQtdC60ZbQu9GM0LrQvtGFINC10LvQtdC80LXQvdGC0ZbQsiwg0LAg0L3QtSDQv9GA0L7RgdGC0L4g0L7QtNC40L0g0LXQu9C10LzQtdC90YIuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICLQvtC/0LjRgSDRgtC40L/QvtCy0L7Qs9C+INC00LbQtdGA0LXQu9CwINCy0ZbQtNC10L4gR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAi0J7Qv9C40YHRg9GUINCy0LjQsdGA0LDQvdC40Lkg0LXQu9C10LzQtdC90YIgdmlkZW9zcmMuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAi0YLQuNC/0L7QstCwINCy0ZbQt9GD0LDQu9GW0LfQsNGG0ZbRjyBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKKyN+ICJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCisjfiAic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkICIKKyN+ICJvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gItCjIEdTdHJlYW1lciDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC00L7QtNCw0LLQsNC90L3RjyDQtNC+INC60LDQvdCw0LvRgyDQvtCx0YDQvtCx0LrQuCDQtNC+0LTQsNGC0LrRltCyINCy0ZbQt9GD0LDQu9GW0LfQsNGG0ZbRlyAiCisjfiAi0LTQu9GPINC+0LHRgNC+0LHQutC4INC/0L7RgtC+0LrRltCyINC30LLRg9C60L7QstC40YUg0LTQsNC90LjRhSDRgyDQutCw0LTRgNCw0YUg0LLRltC00LXQvi4g0KHQtdGA0LXQtCDQvNC+0LbQu9C40LLQuNGFICIKKyN+ICLQstCw0YDRltCw0L3RgtGW0LIgZ29vbSwgZ29vbTJrMSDRgtCwIHN5bmFlc3RoZXNpYS4g0JTQvtC00LDRgtC+0Log0LLRltC30YPQsNC70ZbQt9Cw0YbRltGXINC80L7QttC1INCx0YPRgtC4ICIKKyN+ICLQvtC60YDQtdC80LjQvCDQutCw0L3QsNC70L7QvCwg0LAg0L3QtSDQv9GA0L7RgdGC0L4g0L7QtNC90LjQvCDQtdC70LXQvNC10L3RgtC+0LwuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgItC+0L/QuNGBINGC0LjQv9C+0LLQvtGXINCy0ZbQt9GD0LDQu9GW0LfQsNGG0ZbRlyBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgItCe0L/QuNGB0YPRlCDQstC40LHRgNCw0L3QuNC5INC10LvQtdC80LXQvdGCINCy0ZbQt9GD0LDQu9GW0LfQsNGG0ZbRly4iCisKICN+IG1zZ2lkICJDb3VsZG4ndCBnZXQgdGhlIE1hbmlmZXN0J3MgVVJJIgogI34gbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC+0YLRgNC40LzQsNGC0Lgg0LDQtNGA0LXRgdC4IE1hbmlmZXN0IgogCmRpZmYgLS1naXQgYS9wby92aS5nbW8gYi9wby92aS5nbW8KaW5kZXggMmYxMzA0My4uMDJiYTQ3OSAxMDA2NDQKLS0tIGEvcG8vdmkuZ21vCisrKyBiL3BvL3ZpLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby92aS5wbyBiL3BvL3ZpLnBvCmluZGV4IGMxZDhmOWMuLmQ5NTgxMTQgMTAwNjQ0Ci0tLSBhL3BvL3ZpLnBvCisrKyBiL3BvL3ZpLnBvCkBAIC04LDcgKzgsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS42LjBcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMTAtMTYgMDg6MjcrMDcwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogVHLhuqduIE5n4buNYyBRdcOibiA8dm53aWxkbWFuQGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBWaWV0bmFtZXNlIDx0cmFuc2xhdGlvbi10ZWFtLXZpQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTIzLDExMSArMjMsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICLEkeG7i25oIGThuqFuZyBraMO0bmcgxJHGsOG7o2MgZMOgbiB44bq/cCB0csaw4bubYyBow6BtIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiY8OhYyBz4buxIGtp4buHbiDDom0gdGhhbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmggY2hvIOKAnGF1ZGlvc2lua+KAnSIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBjw7MgdGjhu4MgcGjDoXQgbmjhuqFjIHbhu5tpIGLhuqV0IGvhu7Mgc+G7kSBsxrDhu6NuZyBwaOG6p24gdOG7rSDEkeG6p3UgcmEgbsOgby4gTeG7mXQgc+G7kSBjw7MgIgotInRo4buDIGNo4buNbiBs4buxYSBsw6Agb3Nzc2luaywgcHVsc2VzaW5rIHbDoCBhbHNhc2luay4g4oCcYXVkaW9zaW5r4oCdIGPDsyB0aOG7gyBsw6AgxJHGsOG7nW5nICIKLSLhu5FuZyDEkeG6t2MgYmnhu4d0IHRoYXkgdsOsIGNo4buJIG3hu5l0IHBo4bqnbiB04butLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICJtw7QgdOG6oyBjaG8gY8OhYyBz4buxIGtp4buHbiDDom0gdGhhbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmggZMOgbmggY2hvIOKAnGF1ZGlvc2lua+KAnSIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICJNw7QgdOG6oyB24buBIHBo4bqnbiB04butIOKAnGF1ZGlvc2lua+KAnSDEkcOjIGNo4buNbi4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAi4oCcR1N0cmVhbWVyIGF1ZGlvc2lua+KAnSBt4bq3YyDEkeG7i25oIGTDoG5oIGNobyBI4buZaSBuZ2jhu4sgTmjhuqFjL1BoaW0iCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICJtw7QgdOG6oyBjaG8gR1N0cmVhbWVyIGF1ZGlvc2luayBt4bq3YyDEkeG7i25oIGTDoG5oIGNobyBI4buZaSBuZ2jhu4sgTmjhuqFjL1BoaW0iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIkdTdHJlYW1lciBhdWRpb3NpbmsgbeG6t2MgxJHhu4tuaCBkw6BuaCBjaG8gw4JtIG5o4bqhYyB2w6AgUGhpbSIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIm3DtCB04bqjIGNobyBHU3RyZWFtZXIgYXVkaW9zaW5rIG3hurdjIMSR4buLbmggZMOgbmggY2hvIMOCbSBuaOG6oWMgdsOgIFBoaW0iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIkdTdHJlYW1lciB2aWRlb3NpbmsgbeG6t2MgxJHhu4tuaCIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGPDsyB0aOG7gyBjaOG6oXkgcGhpbSB24bubaSBi4bqldCBr4buzIHPhu5EgbMaw4bujbmcgcGjhuqduIHThu60gxJHhuqd1IHJhIG7DoG8uIE3hu5l0IHPhu5EgY8OzICIKLSJ0aOG7gyBjaOG7jW4gbOG7sWEgbMOgIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgdsOgIGFhc2luay4g4oCcdmlkZW9zaW5r4oCdICIKLSJjw7MgdGjhu4MgbMOgIMSRxrDhu51uZyDhu5FuZyDEkeG6t2MgYmnhu4d0IHRoYXkgdsOsIGNo4buJIG3hu5l0IHBo4bqnbiB04butLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIm3DtCB04bqjIHBo4bqnbiB04butIG5ndeG7k24gaMOsbmgg4bqjbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmgiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiTcO0IHThuqMgcGjhuqduIHThu60gdmlkZW9zaW5rIMSRw6MgY2jhu41uLiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJuZ3Xhu5NuIMOibSB0aGFuaCBHU3RyZWFtZXIgbeG6t2MgxJHhu4tuaCIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIgY8OzIHRo4buDIGdoaSDDom0gdGhhbmggZMO5bmcgYmFvIG5oacOqdSBwaOG6p24gdOG7rSDEkeG6p3UgdsOgbyBjxaluZyDEkcaw4bujYy4gTeG7mXQgIgotInPhu5EgbOG7sWEgY2jhu41uIGzDoCBvc3NzcmMsIHBsdXNlc3JjIHbDoCBhbHNhc3JjLiBOZ3Xhu5NuIMOibSB0aGFuaCBjw7MgdGjhu4MgbMOgIGPDoWMgIgotIsSRxrDhu51uZyDhu5FuZyBj4bulYyBi4buZIG7DoG8gxJHDsyB0aGF5IHbDrCBjaOG7iSBt4buZdCBwaOG6p24gdOG7rSBuZ3Xhu5NuLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAibcO0IHThuqMgcGjhuqduIHThu60gbmd14buTbiDDom0gdGhhbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmgiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJNw7QgdOG6oyBwaOG6p24gdOG7rSBuZ3Xhu5NuIMOibSB0aGFuaCDEkcOjIGNo4buNbi4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAibmd14buTbiBow6xuaCDhuqNuaCBHU3RyZWFtZXIgbeG6t2MgxJHhu4tuaCIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIgY8OzIHRo4buDIGNo4bqheSBwaGltIHbhu5tpIGLhuqV0IGvhu7Mgc+G7kSBsxrDhu6NuZyBwaOG6p24gdOG7rSDEkeG6p3UgdsOgbyBuw6BvLiBN4buZdCBz4buRICIKLSJjw7MgdGjhu4MgY2jhu41uIGzhu7FhIGzDoCB2NGxzcmMsIHY0bDJzcmMgdsOgIHZpZGVvdGVzdHNyYy4gTmd14buTbiBow6xuaCBjw7MgdGjhu4MgbMOgICIKLSLEkcaw4budbmcg4buRbmcgxJHhurdjIGJp4buHdCB0aGF5IHbDrCBjaOG7iSBt4buZdCBwaOG6p24gdOG7rS4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIm3DtCB04bqjIGNobyBuZ3Xhu5NuIGjDrG5oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiTcO0IHThuqMgcGjhuqduIHThu60gbmd14buTbiBow6xuaCDhuqNuaCDEkcOjIGNo4buNbi4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJoaeG7h24gaMOsbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmgiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBjw7MgdGjhu4MgxJHhurd0IHBo4bqnbiBi4buVIHh1bmcgaGnhu4duIGjDrG5oIHRyb25nIG3hu5l0IMSRxrDhu51uZyDhu5FuZyDEkeG7gyBtw6AgY2h1eeG7g24gIgotImThuqFuZyBsdeG7k25nIGThu68gbGnhu4d1IMOibSB0aGFuaCB0cm9uZyBraHVuZyBow6xuaCBwaGltLiBN4buZdCBz4buRIGPDsyB0aOG7gyBjaOG7jW4gbOG7sWEgbMOgICIKLSJnb29tLCBnb29tMmsxIHbDoCBzeW5hZXN0aGVzaWEuIFBo4bqnbiBi4buVIHh1bmcgaGnhu4duIGjDrG5oIGPDsyB0aOG7gyBsw6AgxJHGsOG7nW5nIOG7kW5nICIKLSLEkeG6t2MgYmnhu4d0IHRoYXkgdsOsIGNo4buJIG3hu5l0IHBo4bqnbiB04butLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJtw7QgdOG6oyB24buBIGhp4buHbiBow6xuaCBHU3RyZWFtZXIgbeG6t2MgxJHhu4tuaCIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiTcO0IHThuqMgduG7gSBwaOG6p24gdOG7rSBoaeG7h24gaMOsbmggxJHDoyBjaOG7jW4uIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICJPcGVuQ1YgZ+G6t3AgbOG7l2kga2hpIHThuqNpIOG6o25oIHThuqFtIHRo4budaSIKIApAQCAtMjQ3LDYgKzE0MiwxMTIgQEAKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGRldGFpbHMgZm9yIERWQiBjaGFubmVsICVzIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgdMOsbSB0aOG6pXkgY2hpIHRp4bq/dCBjaG8ga8OqbmggRFZCICVzIgogCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiY8OhYyBz4buxIGtp4buHbiDDom0gdGhhbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmggY2hvIOKAnGF1ZGlvc2lua+KAnSIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBjw7MgdGjhu4MgcGjDoXQgbmjhuqFjIHbhu5tpIGLhuqV0IGvhu7Mgc+G7kSBsxrDhu6NuZyBwaOG6p24gdOG7rSDEkeG6p3UgcmEgbsOgby4gTeG7mXQgc+G7kSAiCisjfiAiY8OzIHRo4buDIGNo4buNbiBs4buxYSBsw6Agb3Nzc2luaywgcHVsc2VzaW5rIHbDoCBhbHNhc2luay4g4oCcYXVkaW9zaW5r4oCdIGPDsyB0aOG7gyBsw6AgIgorI34gIsSRxrDhu51uZyDhu5FuZyDEkeG6t2MgYmnhu4d0IHRoYXkgdsOsIGNo4buJIG3hu5l0IHBo4bqnbiB04butLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICIiCisjfiAibcO0IHThuqMgY2hvIGPDoWMgc+G7sSBraeG7h24gw6JtIHRoYW5oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIGTDoG5oIGNobyDigJxhdWRpb3NpbmvigJ0iCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiTcO0IHThuqMgduG7gSBwaOG6p24gdOG7rSDigJxhdWRpb3NpbmvigJ0gxJHDoyBjaOG7jW4uIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIuKAnEdTdHJlYW1lciBhdWRpb3NpbmvigJ0gbeG6t2MgxJHhu4tuaCBkw6BuaCBjaG8gSOG7mWkgbmdo4buLIE5o4bqhYy9QaGltIgorCisjfiBtc2dpZCAiIgorI34gImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAibcO0IHThuqMgY2hvIEdTdHJlYW1lciBhdWRpb3NpbmsgbeG6t2MgxJHhu4tuaCBkw6BuaCBjaG8gSOG7mWkgbmdo4buLIE5o4bqhYy9QaGltIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJHU3RyZWFtZXIgYXVkaW9zaW5rIG3hurdjIMSR4buLbmggZMOgbmggY2hvIMOCbSBuaOG6oWMgdsOgIFBoaW0iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJtw7QgdOG6oyBjaG8gR1N0cmVhbWVyIGF1ZGlvc2luayBt4bq3YyDEkeG7i25oIGTDoG5oIGNobyDDgm0gbmjhuqFjIHbDoCBQaGltIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJHU3RyZWFtZXIgdmlkZW9zaW5rIG3hurdjIMSR4buLbmgiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuICIKKyN+ICJUaGUgdmlkZW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBjw7MgdGjhu4MgY2jhuqF5IHBoaW0gduG7m2kgYuG6pXQga+G7syBz4buRIGzGsOG7o25nIHBo4bqnbiB04butIMSR4bqndSByYSBuw6BvLiBN4buZdCBz4buRICIKKyN+ICJjw7MgdGjhu4MgY2jhu41uIGzhu7FhIGzDoCB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIHbDoCBhYXNpbmsuICIKKyN+ICLigJx2aWRlb3NpbmvigJ0gY8OzIHRo4buDIGzDoCDEkcaw4budbmcg4buRbmcgxJHhurdjIGJp4buHdCB0aGF5IHbDrCBjaOG7iSBt4buZdCBwaOG6p24gdOG7rS4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJtw7QgdOG6oyBwaOG6p24gdOG7rSBuZ3Xhu5NuIGjDrG5oIOG6o25oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIk3DtCB04bqjIHBo4bqnbiB04butIHZpZGVvc2luayDEkcOjIGNo4buNbi4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAibmd14buTbiDDom0gdGhhbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmgiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGPDsyB0aOG7gyBnaGkgw6JtIHRoYW5oIGTDuW5nIGJhbyBuaGnDqnUgcGjhuqduIHThu60gxJHhuqd1IHbDoG8gY8WpbmcgxJHGsOG7o2MuICIKKyN+ICJN4buZdCBz4buRIGzhu7FhIGNo4buNbiBsw6Agb3Nzc3JjLCBwbHVzZXNyYyB2w6AgYWxzYXNyYy4gTmd14buTbiDDom0gdGhhbmggY8OzIHRo4buDIGzDoCAiCisjfiAiY8OhYyDEkcaw4budbmcg4buRbmcgY+G7pWMgYuG7mSBuw6BvIMSRw7MgdGhheSB2w6wgY2jhu4kgbeG7mXQgcGjhuqduIHThu60gbmd14buTbi4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgIm3DtCB04bqjIHBo4bqnbiB04butIG5ndeG7k24gw6JtIHRoYW5oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiTcO0IHThuqMgcGjhuqduIHThu60gbmd14buTbiDDom0gdGhhbmggxJHDoyBjaOG7jW4uIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgIm5ndeG7k24gaMOsbmgg4bqjbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmgiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSAiCisjfiAiY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGPDsyB0aOG7gyBjaOG6oXkgcGhpbSB24bubaSBi4bqldCBr4buzIHPhu5EgbMaw4bujbmcgcGjhuqduIHThu60gxJHhuqd1IHbDoG8gbsOgby4gTeG7mXQgIgorI34gInPhu5EgY8OzIHRo4buDIGNo4buNbiBs4buxYSBsw6AgdjRsc3JjLCB2NGwyc3JjIHbDoCB2aWRlb3Rlc3RzcmMuIE5ndeG7k24gaMOsbmggY8OzIHRo4buDICIKKyN+ICJsw6AgxJHGsOG7nW5nIOG7kW5nIMSR4bq3YyBiaeG7h3QgdGhheSB2w6wgY2jhu4kgbeG7mXQgcGjhuqduIHThu60uIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJtw7QgdOG6oyBjaG8gbmd14buTbiBow6xuaCBHU3RyZWFtZXIgbeG6t2MgxJHhu4tuaCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIk3DtCB04bqjIHBo4bqnbiB04butIG5ndeG7k24gaMOsbmgg4bqjbmggxJHDoyBjaOG7jW4uIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAiaGnhu4duIGjDrG5oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCisjfiAic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgorI34gInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCAiCisjfiAib2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgY8OzIHRo4buDIMSR4bq3dCBwaOG6p24gYuG7lSB4dW5nIGhp4buHbiBow6xuaCB0cm9uZyBt4buZdCDEkcaw4budbmcg4buRbmcgxJHhu4MgbcOgICIKKyN+ICJjaHV54buDbiBk4bqhbmcgbHXhu5NuZyBk4buvIGxp4buHdSDDom0gdGhhbmggdHJvbmcga2h1bmcgaMOsbmggcGhpbS4gTeG7mXQgc+G7kSBjw7MgdGjhu4MgIgorI34gImNo4buNbiBs4buxYSBsw6AgZ29vbSwgZ29vbTJrMSB2w6Agc3luYWVzdGhlc2lhLiBQaOG6p24gYuG7lSB4dW5nIGhp4buHbiBow6xuaCBjw7MgdGjhu4MgIgorI34gImzDoCDEkcaw4budbmcg4buRbmcgxJHhurdjIGJp4buHdCB0aGF5IHbDrCBjaOG7iSBt4buZdCBwaOG6p24gdOG7rS4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAibcO0IHThuqMgduG7gSBoaeG7h24gaMOsbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmgiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgIk3DtCB04bqjIHbhu4EgcGjhuqduIHThu60gaGnhu4duIGjDrG5oIMSRw6MgY2jhu41uLiIKKwogI34gbXNnaWQgIkNvdWxkbid0IGdldCB0aGUgTWFuaWZlc3QncyBVUkkiCiAjfiBtc2dzdHIgIktow7RuZyB0aOG7gyBs4bqleSBVUkkgY+G7p2EgTWFuaWZlc3QiCiAKZGlmZiAtLWdpdCBhL3BvL3poX0NOLmdtbyBiL3BvL3poX0NOLmdtbwppbmRleCBlZDBkMTBmLi5kMDJkZDQ0IDEwMDY0NAotLS0gYS9wby96aF9DTi5nbW8KKysrIGIvcG8vemhfQ04uZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL3poX0NOLnBvIGIvcG8vemhfQ04ucG8KaW5kZXggZGRiMDBmYy4uOTE5YzU4MiAxMDA2NDQKLS0tIGEvcG8vemhfQ04ucG8KKysrIGIvcG8vemhfQ04ucG8KQEAgLTksNyArOSw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAxLjYuMFxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAxNS0xMC0xNiAxOToyNyswODAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBUaWFuemUgV2FuZyA8endwd2p3dHpAMTI2LmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBDaGluZXNlIChzaW1wbGlmaWVkKSA8aTE4bi16aEBnb29nbGVncm91cHMuY29tPlxuIgpAQCAtMjIsMTA3ICsyMiw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIuWcqOiwg+eUqGdldOWHveaVsOS5i+WJjeacquehruWumuWQiOmAgueahOagvOW8jyIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIum7mOiupEdTdHJlYW1lcuWjsOmfs+S6i+S7tueahOmfs+mikeaxhyIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lcuWPr+S7peS9v+eUqOS7u+aEj+aVsOmHj+eahOi+k+WHuue7hOS7tuaSreaUvumfs+mikeOAguWPr+iDveeahOmAieaLqeaciW9zc3NpbmvjgIFwdWxzZXNpbmvlkowiCi0iYWxzYXNpbmvjgILpn7PpopHmsYflj6/ku6XmmK/nrqHpgZPnmoTkuIDpg6jliIbvvIzogIzkuI3ku4Xku4XkuLrkuIDkuKrnu4Tku7bjgIIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAi5pyJ5YWz6buY6K6kR1N0cmVhbWVy5aOw6Z+z5LqL5Lu255qE6Z+z6aKR5rGH55qE6K+05piOIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIuaPj+i/sOmAieWumueahOmfs+mikeaxh+e7hOS7tiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICLnlKjkuo7pn7Mv6KeG6aKR5Lya6K6u55qE6buY6K6kR3N0cmVhbWVy6Z+z6aKR5rGHIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAi5pyJ5YWz55So5LqO6Z+zL+inhumikeS8muiurueahOm7mOiupEdzdHJlYW1lcumfs+mikeaxh+eahOaPj+i/sCIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAi55So5LqO6Z+z5LmQ5ZKM55S15b2x55qE6buY6K6kR3N0cmVhbWVy6Z+z6aKR5rGHIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAi5pyJ5YWz6Z+z5LmQ5ZKM55S15b2x55qE6buY6K6kR3N0cmVhbWVy6Z+z6aKR5rGH55qE5o+P6L+wIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICLpu5jorqRHU3RyZWFtZXLnmoTop4bpopHmsYciCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lcuWPr+S7peS9v+eUqOS7u+aEj+aVsOmHj+eahOi+k+WHuue7hOS7tuaSreaUvuinhumikeOAguWPr+iDveeahOmAieaLqeaciXh2aW1hZ2VzaW5r44CBIgotInhpbWFnZXNpbmvjgIFzZGx2aWRlb3NpbmvlkoxhYXNpbmvjgILop4bpopHmsYflj6/ku6XmmK/nrqHpgZPnmoTkuIDpg6jliIbvvIzogIzkuI3ku4Xku4XkuLrkuIDkuKrnu4QiCi0i5Lu244CCIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAi5pyJ5YWz6buY6K6kR1N0cmVhbWVy6KeG6aKR5rGH55qE5o+P6L+wIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIuaPj+i/sOmAieWumueahOinhumikeaxh+e7hOS7tiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICLpu5jorqRHU3RyZWFtZXLpn7PpopHmupAiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVy5Y+v5Lul5L2/55So5Lu75oSP5pWw6YeP55qE6L6T5YWl57uE5Lu25p2l6K6w5b2V6Z+z6aKR44CC5Y+v6IO955qE6YCJ5oup5pyJb3Nzc3Jj44CBcHVsc2VzcmPlkowiCi0iYWxzYXNyY+OAgumfs+mikea6kOWPr+S7peaYr+euoemBk+eahOS4gOmDqOWIhu+8jOiAjOS4jeS7heS7heS4uuS4gOS4que7hOS7tuOAgiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAi5pyJ5YWz6buY6K6kR1N0cmVhbWVy6Z+z6aKR5rqQ55qE5o+P6L+wIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAi5o+P6L+w6YCJ5a6a55qE6Z+z6aKR5rqQ57uE5Lu2IgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIum7mOiupEdTdHJlYW1lcuinhumikea6kCIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXLlj6/ku6Xkvb/nlKjku7vmhI/mlbDph4/nmoTovpPlh7rnu4Tku7bmkq3mlL7op4bpopHjgILlj6/og73nmoTpgInmi6nmnIl2NGxzcmPjgIF2NGwyc3Jj5ZKMIgotInZpZGVvdGVzdHNyY+OAguinhumikea6kOWPr+S7peaYr+euoemBk+eahOS4gOmDqOWIhu+8jOiAjOS4jeS7heS7heS4uuS4gOS4que7hOS7tuOAgiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAi5pyJ5YWz6buY6K6kR1N0cmVhbWVy6KeG6aKR5rqQ55qE5o+P6L+wIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAi5o+P6L+w6YCJ5a6a55qE6KeG6aKR5rqQ57uE5Lu2IgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAi6buY6K6kR3N0cmVhbWVy5Y+v6KeG5YyW57uE5Lu2IgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXLlj6/ku6XlsIblj6/op4bljJbmj5Lku7bliqDovb3kuo7nrqHpgZPkuK3vvIzlubblnKjop4bpopHluKfkuK3kvKDpgJLpn7PpopHmtYHjgILlj6/og73nmoTpgInmi6nmnIkiCi0iZ29vbeOAgWdvb20yazHlkoxzeW5hZXN0aGVzaWHjgILlj6/op4bljJbmj5Lku7blj6/ku6XmmK/nrqHpgZPnmoTkuIDpg6jliIbvvIzogIzkuI3ku4Xku4XkuLrkuIDkuKrnu4QiCi0i5Lu244CCIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIuacieWFs+m7mOiupEdzdHJlYW1lcuWPr+inhuWMlue7hOS7tueahOaPj+i/sCIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAi5o+P6L+w6YCJ5a6a55qE5Y+v6KeG5YyW57uE5Lu2IgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICJPcGVuQ1bliqDovb3mqKHniYjlm77niYflpLHotKUiCiAKQEAgLTIzNSw2ICsxMzQsMTA3IEBACiBtc2dpZCAiQ291bGRuJ3QgZmluZCBkZXRhaWxzIGZvciBEVkIgY2hhbm5lbCAlcyIKIG1zZ3N0ciAi5peg5rOV6I635Y+WRFZC6YCa6YGTICVzIOeahOivpue7huS/oeaBryIKIAorI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgIum7mOiupEdTdHJlYW1lcuWjsOmfs+S6i+S7tueahOmfs+mikeaxhyIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lcuWPr+S7peS9v+eUqOS7u+aEj+aVsOmHj+eahOi+k+WHuue7hOS7tuaSreaUvumfs+mikeOAguWPr+iDveeahOmAieaLqeaciW9zc3NpbmvjgIEiCisjfiAicHVsc2VzaW5r5ZKMYWxzYXNpbmvjgILpn7PpopHmsYflj6/ku6XmmK/nrqHpgZPnmoTkuIDpg6jliIbvvIzogIzkuI3ku4Xku4XkuLrkuIDkuKrnu4Tku7bjgIIiCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAi5pyJ5YWz6buY6K6kR1N0cmVhbWVy5aOw6Z+z5LqL5Lu255qE6Z+z6aKR5rGH55qE6K+05piOIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIuaPj+i/sOmAieWumueahOmfs+mikeaxh+e7hOS7tiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICLnlKjkuo7pn7Mv6KeG6aKR5Lya6K6u55qE6buY6K6kR3N0cmVhbWVy6Z+z6aKR5rGHIgorCisjfiBtc2dpZCAiIgorI34gImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAi5pyJ5YWz55So5LqO6Z+zL+inhumikeS8muiurueahOm7mOiupEdzdHJlYW1lcumfs+mikeaxh+eahOaPj+i/sCIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAi55So5LqO6Z+z5LmQ5ZKM55S15b2x55qE6buY6K6kR3N0cmVhbWVy6Z+z6aKR5rGHIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAi5pyJ5YWz6Z+z5LmQ5ZKM55S15b2x55qE6buY6K6kR3N0cmVhbWVy6Z+z6aKR5rGH55qE5o+P6L+wIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICLpu5jorqRHU3RyZWFtZXLnmoTop4bpopHmsYciCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuICIKKyN+ICJUaGUgdmlkZW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lcuWPr+S7peS9v+eUqOS7u+aEj+aVsOmHj+eahOi+k+WHuue7hOS7tuaSreaUvuinhumikeOAguWPr+iDveeahOmAieaLqeaciXh2aW1hZ2VzaW5r44CBIgorI34gInhpbWFnZXNpbmvjgIFzZGx2aWRlb3NpbmvlkoxhYXNpbmvjgILop4bpopHmsYflj6/ku6XmmK/nrqHpgZPnmoTkuIDpg6jliIbvvIzogIzkuI3ku4Xku4XkuLrkuIDkuKoiCisjfiAi57uE5Lu244CCIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAi5pyJ5YWz6buY6K6kR1N0cmVhbWVy6KeG6aKR5rGH55qE5o+P6L+wIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIuaPj+i/sOmAieWumueahOinhumikeaxh+e7hOS7tiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICLpu5jorqRHU3RyZWFtZXLpn7PpopHmupAiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVy5Y+v5Lul5L2/55So5Lu75oSP5pWw6YeP55qE6L6T5YWl57uE5Lu25p2l6K6w5b2V6Z+z6aKR44CC5Y+v6IO955qE6YCJ5oup5pyJb3Nzc3Jj44CBIgorI34gInB1bHNlc3Jj5ZKMYWxzYXNyY+OAgumfs+mikea6kOWPr+S7peaYr+euoemBk+eahOS4gOmDqOWIhu+8jOiAjOS4jeS7heS7heS4uuS4gOS4que7hOS7tuOAgiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAi5pyJ5YWz6buY6K6kR1N0cmVhbWVy6Z+z6aKR5rqQ55qE5o+P6L+wIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAi5o+P6L+w6YCJ5a6a55qE6Z+z6aKR5rqQ57uE5Lu2IgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgIum7mOiupEdTdHJlYW1lcuinhumikea6kCIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlICIKKyN+ICJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXLlj6/ku6Xkvb/nlKjku7vmhI/mlbDph4/nmoTovpPlh7rnu4Tku7bmkq3mlL7op4bpopHjgILlj6/og73nmoTpgInmi6nmnIl2NGxzcmPjgIF2NGwyc3Jj5ZKMIgorI34gInZpZGVvdGVzdHNyY+OAguinhumikea6kOWPr+S7peaYr+euoemBk+eahOS4gOmDqOWIhu+8jOiAjOS4jeS7heS7heS4uuS4gOS4que7hOS7tuOAgiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAi5pyJ5YWz6buY6K6kR1N0cmVhbWVy6KeG6aKR5rqQ55qE5o+P6L+wIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAi5o+P6L+w6YCJ5a6a55qE6KeG6aKR5rqQ57uE5Lu2IgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAi6buY6K6kR3N0cmVhbWVy5Y+v6KeG5YyW57uE5Lu2IgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCisjfiAic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgorI34gInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCAiCisjfiAib2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXLlj6/ku6XlsIblj6/op4bljJbmj5Lku7bliqDovb3kuo7nrqHpgZPkuK3vvIzlubblnKjop4bpopHluKfkuK3kvKDpgJLpn7PpopHmtYHjgILlj6/og73nmoTpgInmi6kiCisjfiAi5pyJZ29vbeOAgWdvb20yazHlkoxzeW5hZXN0aGVzaWHjgILlj6/op4bljJbmj5Lku7blj6/ku6XmmK/nrqHpgZPnmoTkuIDpg6jliIbvvIzogIzkuI3ku4Xku4XkuLrkuIAiCisjfiAi5Liq57uE5Lu244CCIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgIuacieWFs+m7mOiupEdzdHJlYW1lcuWPr+inhuWMlue7hOS7tueahOaPj+i/sCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKKyN+IG1zZ3N0ciAi5o+P6L+w6YCJ5a6a55qE5Y+v6KeG5YyW57uE5Lu2IgorCiAjfiBtc2dpZCAiSW50ZXJuYWwgY2xvY2sgZXJyb3IuIgogI34gbXNnc3RyICLlhoXpg6jml7bpkp/plJnor6/jgIIiCiAKZGlmZiAtLWdpdCBhL3N5cy9NYWtlZmlsZS5hbSBiL3N5cy9NYWtlZmlsZS5hbQppbmRleCAxMDUxY2U1Li4zMmY3OWZiIDEwMDY0NAotLS0gYS9zeXMvTWFrZWZpbGUuYW0KKysrIGIvc3lzL01ha2VmaWxlLmFtCkBAIC0yOCwxMiArMjgsNiBAQAogQkxVRVpfRElSPQogZW5kaWYKIAotIyBpZiBVU0VfQ0RST00KLSMgIENEUk9NX0RJUj1jZHJvbQotIyBlbHNlCi0jIENEUk9NX0RJUj0KLSMgZW5kaWYKLQogaWYgVVNFX1dBU0FQSQogV0FTQVBJX0RJUj13YXNhcGkKIGVsc2UKQEAgLTE0Miw5ICsxMzYsMjIgQEAKIFVWQ0gyNjRfRElSPQogZW5kaWYKIAotU1VCRElSUyA9ICQoQUNNX0RJUikgJChBTkRST0lEX01FRElBX0RJUikgJChBUFBMRV9NRURJQV9ESVIpICQoQVZDX0RJUikgJChCTFVFWl9ESVIpICQoRDNEVklERU9TSU5LX0RJUikgJChERUNLTElOS19ESVIpICQoRElSRUNUU09VTkRfRElSKSAkKFdJTktTX0RJUikgJChEVkJfRElSKSAkKEZCREVWX0RJUikgJChMSU5TWVNfRElSKSAkKE9QRU5TTEVTX0RJUikgJChQVlJfRElSKSAkKFNITV9ESVIpICQoVVZDSDI2NF9ESVIpICQoVkNEX0RJUikgJChWRFBBVV9ESVIpICQoV0lOSU5FVF9ESVIpICQoV0lOU0NSRUVOQ0FQX0RJUikgJChXQVNBUElfRElSKQoraWYgVVNFX05WRU5DCitOVkVOQ19ESVI9bnZlbmMKK2Vsc2UKK05WRU5DX0RJUj0KK2VuZGlmCisKK2lmIFVTRV9USU5ZQUxTQQorVElOWUFMU0FfRElSPXRpbnlhbHNhCitlbHNlCitUSU5ZQUxTQV9ESVI9CitlbmRpZgorCitTVUJESVJTID0gJChBQ01fRElSKSAkKEFORFJPSURfTUVESUFfRElSKSAkKEFQUExFX01FRElBX0RJUikgJChBVkNfRElSKSAkKEJMVUVaX0RJUikgJChEM0RWSURFT1NJTktfRElSKSAkKERFQ0tMSU5LX0RJUikgJChESVJFQ1RTT1VORF9ESVIpICQoV0lOS1NfRElSKSAkKERWQl9ESVIpICQoRkJERVZfRElSKSAkKExJTlNZU19ESVIpICQoT1BFTlNMRVNfRElSKSAkKFBWUl9ESVIpICQoU0hNX0RJUikgJChVVkNIMjY0X0RJUikgJChWQ0RfRElSKSAkKFZEUEFVX0RJUikgJChXSU5JTkVUX0RJUikgJChXSU5TQ1JFRU5DQVBfRElSKSAkKFdBU0FQSV9ESVIpICQoTlZFTkNfRElSKSAkKFRJTllBTFNBX0RJUikKIAogRElTVF9TVUJESVJTID0gYWNtZW5jIGFjbW1wM2RlYyBhbmRyb2lkbWVkaWEgYXBwbGVtZWRpYSBhcHBsZW1lZGlhLW5vbnB1YmxpYyBhdmMgYmx1ZXogZDNkdmlkZW9zaW5rIGRlY2tsaW5rIGRpcmVjdHNvdW5kIGR2YiBsaW5zeXMgZmJkZXYgZHNob3dkZWN3cmFwcGVyIGRzaG93c3Jjd3JhcHBlciBkc2hvd3ZpZGVvc2luayBcCi0JCW9wZW5zbGVzIHB2cjJkIHNobSB1dmNoMjY0IHZjZCB2ZHBhdSB3YXNhcGkgd2luaW5ldCB3aW5rcyB3aW5zY3JlZW5jYXAKKwkJb3BlbnNsZXMgcHZyMmQgc2htIHV2Y2gyNjQgdmNkIHZkcGF1IHdhc2FwaSB3aW5pbmV0IHdpbmtzIHdpbnNjcmVlbmNhcCBcCisJCW52ZW5jIHRpbnlhbHNhCiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb21tb24vcGFyYWxsZWwtc3ViZGlycy5tYWsKZGlmZiAtLWdpdCBhL3N5cy9NYWtlZmlsZS5pbiBiL3N5cy9NYWtlZmlsZS5pbgppbmRleCA0NjQ0ZmE3Li5hZDY5Y2U3IDEwMDY0NAotLS0gYS9zeXMvTWFrZWZpbGUuaW4KKysrIGIvc3lzL01ha2VmaWxlLmluCkBAIC0xMTksMTYgKzExOSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjUzLDYgKzI1Miw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjkwLDYgKzI5MSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjk4LDcgKzMwMSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxNyw4ICszMTksOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzM1LDE2ICszMzgsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzcwLDYgKzM3NCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM5NSw2ICs0MDEsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTYsNiArNTA0LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwOSw4ICs1MTgsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjYsNiArNTMzLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU4MywxNiArNTkyLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjQ0LDYgKzY1NSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NTQsNiArNjY2LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjYzLDYgKzY3Niw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MDAsNyArNzE1LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NTEsMTIgKzc2NSw2IEBACiBAVVNFX0JMVUVaX0ZBTFNFQEJMVUVaX0RJUiA9IAogQFVTRV9CTFVFWl9UUlVFQEJMVUVaX0RJUiA9IGJsdWV6CiBAVVNFX1dBU0FQSV9GQUxTRUBXQVNBUElfRElSID0gCi0KLSMgaWYgVVNFX0NEUk9NCi0jICBDRFJPTV9ESVI9Y2Ryb20KLSMgZWxzZQotIyBDRFJPTV9ESVI9Ci0jIGVuZGlmCiBAVVNFX1dBU0FQSV9UUlVFQFdBU0FQSV9ESVIgPSB3YXNhcGkKIEBVU0VfRElSRUNUM0RfRkFMU0VARDNEVklERU9TSU5LX0RJUiA9IAogQFVTRV9ESVJFQ1QzRF9UUlVFQEQzRFZJREVPU0lOS19ESVIgPSBkM2R2aWRlb3NpbmsKQEAgLTgwMCw5ICs4MDgsMTQgQEAKIEBVU0VfV0lOU0NSRUVOQ0FQX1RSVUVAV0lOU0NSRUVOQ0FQX0RJUiA9IHdpbnNjcmVlbmNhcAogQFVTRV9VVkNIMjY0X0ZBTFNFQFVWQ0gyNjRfRElSID0gCiBAVVNFX1VWQ0gyNjRfVFJVRUBVVkNIMjY0X0RJUiA9IHV2Y2gyNjQKLVNVQkRJUlMgPSAkKEFDTV9ESVIpICQoQU5EUk9JRF9NRURJQV9ESVIpICQoQVBQTEVfTUVESUFfRElSKSAkKEFWQ19ESVIpICQoQkxVRVpfRElSKSAkKEQzRFZJREVPU0lOS19ESVIpICQoREVDS0xJTktfRElSKSAkKERJUkVDVFNPVU5EX0RJUikgJChXSU5LU19ESVIpICQoRFZCX0RJUikgJChGQkRFVl9ESVIpICQoTElOU1lTX0RJUikgJChPUEVOU0xFU19ESVIpICQoUFZSX0RJUikgJChTSE1fRElSKSAkKFVWQ0gyNjRfRElSKSAkKFZDRF9ESVIpICQoVkRQQVVfRElSKSAkKFdJTklORVRfRElSKSAkKFdJTlNDUkVFTkNBUF9ESVIpICQoV0FTQVBJX0RJUikKK0BVU0VfTlZFTkNfRkFMU0VATlZFTkNfRElSID0gCitAVVNFX05WRU5DX1RSVUVATlZFTkNfRElSID0gbnZlbmMKK0BVU0VfVElOWUFMU0FfRkFMU0VAVElOWUFMU0FfRElSID0gCitAVVNFX1RJTllBTFNBX1RSVUVAVElOWUFMU0FfRElSID0gdGlueWFsc2EKK1NVQkRJUlMgPSAkKEFDTV9ESVIpICQoQU5EUk9JRF9NRURJQV9ESVIpICQoQVBQTEVfTUVESUFfRElSKSAkKEFWQ19ESVIpICQoQkxVRVpfRElSKSAkKEQzRFZJREVPU0lOS19ESVIpICQoREVDS0xJTktfRElSKSAkKERJUkVDVFNPVU5EX0RJUikgJChXSU5LU19ESVIpICQoRFZCX0RJUikgJChGQkRFVl9ESVIpICQoTElOU1lTX0RJUikgJChPUEVOU0xFU19ESVIpICQoUFZSX0RJUikgJChTSE1fRElSKSAkKFVWQ0gyNjRfRElSKSAkKFZDRF9ESVIpICQoVkRQQVVfRElSKSAkKFdJTklORVRfRElSKSAkKFdJTlNDUkVFTkNBUF9ESVIpICQoV0FTQVBJX0RJUikgJChOVkVOQ19ESVIpICQoVElOWUFMU0FfRElSKQogRElTVF9TVUJESVJTID0gYWNtZW5jIGFjbW1wM2RlYyBhbmRyb2lkbWVkaWEgYXBwbGVtZWRpYSBhcHBsZW1lZGlhLW5vbnB1YmxpYyBhdmMgYmx1ZXogZDNkdmlkZW9zaW5rIGRlY2tsaW5rIGRpcmVjdHNvdW5kIGR2YiBsaW5zeXMgZmJkZXYgZHNob3dkZWN3cmFwcGVyIGRzaG93c3Jjd3JhcHBlciBkc2hvd3ZpZGVvc2luayBcCi0JCW9wZW5zbGVzIHB2cjJkIHNobSB1dmNoMjY0IHZjZCB2ZHBhdSB3YXNhcGkgd2luaW5ldCB3aW5rcyB3aW5zY3JlZW5jYXAKKwkJb3BlbnNsZXMgcHZyMmQgc2htIHV2Y2gyNjQgdmNkIHZkcGF1IHdhc2FwaSB3aW5pbmV0IHdpbmtzIHdpbnNjcmVlbmNhcCBcCisJCW52ZW5jIHRpbnlhbHNhCiAKIGFsbDogYWxsLXJlY3Vyc2l2ZQogCmRpZmYgLS1naXQgYS9zeXMvYWNtZW5jL01ha2VmaWxlLmluIGIvc3lzL2FjbWVuYy9NYWtlZmlsZS5pbgppbmRleCAxZmNmM2U4Li4wNjljZGJlIDEwMDY0NAotLS0gYS9zeXMvYWNtZW5jL01ha2VmaWxlLmluCisrKyBiL3N5cy9hY21lbmMvTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNzEsNiArMjcwLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMDgsNiArMzA5LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTYsNyArMzE5LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM1LDggKzMzNyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTMsMTYgKzM1NiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zODgsNiArMzkyLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDEzLDYgKzQxOSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNCw2ICs1MjIsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTI3LDggKzUzNiw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0NCw2ICs1NTEsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjAxLDE2ICs2MTAsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjIsNiArNjczLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Miw2ICs2ODQsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODEsNiArNjk0LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcxOCw3ICs3MzMsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3N5cy9hY21lbmMvYWNtZW5jLmMgYi9zeXMvYWNtZW5jL2FjbWVuYy5jCmluZGV4IDk5YTA4MDQuLjdhMWMxZmYgMTAwNjQ0Ci0tLSBhL3N5cy9hY21lbmMvYWNtZW5jLmMKKysrIGIvc3lzL2FjbWVuYy9hY21lbmMuYwpAQCAtNTAsNyArNTAsNyBAQAogCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgYWNtZW5jX3NpbmtfdGVtcGxhdGUgPQogR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKLSAgICBHU1RfUEFEX1NJTkssIEdTVF9QQURfQUxXQVlTLCBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LXJhdy1pbnQsICIKKyAgICBHU1RfUEFEX1NJTkssIEdTVF9QQURfQUxXQVlTLCBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LXJhdywgIgogICAgICAgICAiZGVwdGggPSAoaW50KTE2LCAiCiAgICAgICAgICJ3aWR0aCA9IChpbnQpMTYsICIKICAgICAgICAgImVuZGlhbm5lc3MgPSAoaW50KSIgR19TVFJJTkdJRlkgKEdfQllURV9PUkRFUikgIiwgIgpAQCAtMTA2LDcgKzEwNiw3IEBACiBhY21lbmNfY2Fwc19mcm9tX2Zvcm1hdCAoV0FWRUZPUk1BVEVYICogZm10KQogewogICByZXR1cm4gZ3N0X3JpZmZfY3JlYXRlX2F1ZGlvX2NhcHMgKGZtdC0+d0Zvcm1hdFRhZywgTlVMTCwKLSAgICAgIChnc3RfcmlmZl9zdHJmX2F1ZHMgKikgZm10LCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAgIChnc3RfcmlmZl9zdHJmX2F1ZHMgKikgZm10LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKIH0KIAogc3RhdGljIGdib29sZWFuCkBAIC0yNjEsMTAgKzI2MSw4IEBACiAgICAgZ3N0X2NhcHNfdW5yZWYgKGVuYy0+b3V0cHV0X2NhcHMpOwogICAgIGVuYy0+b3V0cHV0X2NhcHMgPSBOVUxMOwogICB9Ci0gIGlmIChlbmMtPmhlYWRlci5wYlNyYykKLSAgICBnX2ZyZWUgKGVuYy0+aGVhZGVyLnBiU3JjKTsKLSAgaWYgKGVuYy0+aGVhZGVyLnBiRHN0KQotICAgIGdfZnJlZSAoZW5jLT5oZWFkZXIucGJEc3QpOworICBnX2ZyZWUgKGVuYy0+aGVhZGVyLnBiU3JjKTsKKyAgZ19mcmVlIChlbmMtPmhlYWRlci5wYkRzdCk7CiAgIG1lbXNldCAoJmVuYy0+aGVhZGVyLCAwLCBzaXplb2YgKGVuYy0+aGVhZGVyKSk7CiAgIGlmIChlbmMtPnN0cmVhbSkgewogICAgIGFjbVN0cmVhbUNsb3NlIChlbmMtPnN0cmVhbSwgMCk7CkBAIC0zMDAsOCArMjk4LDE4IEBACiAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7CiAgIGlmIChlbmMtPmhlYWRlci5jYkRzdExlbmd0aFVzZWQgPiAwKSB7CiAgICAgR3N0QnVmZmVyICpvdXRidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKGVuYy0+aGVhZGVyLmNiRHN0TGVuZ3RoVXNlZCk7Ci0gICAgbWVtY3B5IChHU1RfQlVGRkVSX0RBVEEgKG91dGJ1ZiksIGVuYy0+aGVhZGVyLnBiRHN0LAotICAgICAgICBlbmMtPmhlYWRlci5jYkRzdExlbmd0aFVzZWQpOworICAgIGlmICghb3V0YnVmKSB7CisgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGVuYywgImNhbm5vdCBhbGxvY2F0ZSBhIG5ldyBHc3RCdWZmZXIiKTsKKyAgICAgIGdvdG8gZG9uZV9wdXNoX291dHB1dDsKKyAgICB9CisKKyAgICBpZiAoZ3N0X2J1ZmZlcl9maWxsIChvdXRidWYsIDAsIGVuYy0+aGVhZGVyLnBiRHN0LAorICAgICAgICAgICAgZW5jLT5oZWFkZXIuY2JEc3RMZW5ndGhVc2VkKSAhPSBlbmMtPmhlYWRlci5jYkRzdExlbmd0aFVzZWQpIHsKKyAgICAgIGdzdF9idWZmZXJfdW5yZWYgKG91dGJ1Zik7CisgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGVuYywgInVuYWJsZSB0byBmaWxsIG91dHB1dCBidWZmZXIiKTsKKyAgICAgIGdvdG8gZG9uZV9wdXNoX291dHB1dDsKKyAgICB9CisKICAgICBpZiAoZW5jLT5vdXRmbXQtPm5BdmdCeXRlc1BlclNlYyA+IDApIHsKIAogICAgICAgLyogV2UgaGF2ZSBhIGJpdHJhdGUsIHNvIHdlIGNhbiBjcmVhdGUgYSB0aW1lc3RhbXAsIGhvcGVmdWxseSAqLwpAQCAtMzE0LDE4ICszMjIsMjQgQEAKICAgICAgICAgZW5jLT5oZWFkZXIuY2JEc3RMZW5ndGhVc2VkKTsKICAgICByZXQgPSBnc3RfcGFkX3B1c2ggKGVuYy0+c3JjcGFkLCBvdXRidWYpOwogICB9CisKK2RvbmVfcHVzaF9vdXRwdXQ6CiAgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCi1hY21lbmNfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0QnVmZmVyICogYnVmKQorYWNtZW5jX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmKQogewogICBNTVJFU1VMVCByZXM7CiAgIEFDTUVuYyAqZW5jID0gKEFDTUVuYyAqKSBHU1RfUEFEX1BBUkVOVCAocGFkKTsKLSAgZ3VjaGFyICpkYXRhID0gR1NUX0JVRkZFUl9EQVRBIChidWYpOwotICBnaW50IGxlbiA9IEdTVF9CVUZGRVJfU0laRSAoYnVmKTsKKyAgR3N0TWFwSW5mbyBtYXA7CisgIGd1Y2hhciAqZGF0YTsKKyAgZ2ludCBsZW47CiAgIGludCBjaHVua2xlbjsKICAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKKyAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJm1hcCwgR1NUX01BUF9SRUFEKTsKKyAgbGVuID0gbWFwLnNpemU7CisgIGRhdGEgPSBtYXAuZGF0YTsKICAgd2hpbGUgKGxlbikgewogICAgIGNodW5rbGVuID0gTUlOIChsZW4sIEFDTV9CVUZGRVJfU0laRSAtIGVuYy0+b2Zmc2V0KTsKICAgICBtZW1jcHkgKGVuYy0+aGVhZGVyLnBiU3JjICsgZW5jLT5vZmZzZXQsIGRhdGEsIGNodW5rbGVuKTsKQEAgLTM1OCw2ICszNzIsNyBAQAogICAgIC8qIFdyaXRlIG91dCBhbnkgZGF0YSBwcm9kdWNlZCAqLwogICAgIGFjbWVuY19wdXNoX291dHB1dCAoZW5jKTsKICAgfQorICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZtYXApOwogICByZXR1cm4gcmV0OwogfQogCkBAIC0zODMsMTEgKzM5OCwxNiBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KLWFjbWVuY19zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdEV2ZW50ICogZXZlbnQpCithY21lbmNfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpCiB7CiAgIEFDTUVuYyAqZW5jID0gKEFDTUVuYyAqKSBHU1RfUEFEX1BBUkVOVCAocGFkKTsKICAgZ2Jvb2xlYW4gcmVzOwogICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKKyAgICBjYXNlIEdTVF9FVkVOVF9DQVBTOnsKKyAgICAgIEdzdENhcHMgKmNhcHM7CisgICAgICBnc3RfZXZlbnRfcGFyc2VfY2FwcyAoZXZlbnQsICZjYXBzKTsKKyAgICAgIHJldHVybiBhY21lbmNfc2lua19zZXRjYXBzIChwYWQsIGNhcHMpOworICAgIH0KICAgICBjYXNlIEdTVF9FVkVOVF9FT1M6CiAgICAgICBhY21lbmNfZmluaXNoX3N0cmVhbSAoZW5jKTsKICAgICAgIHJlcyA9IGdzdF9wYWRfcHVzaF9ldmVudCAoZW5jLT5zcmNwYWQsIGV2ZW50KTsKQEAgLTQxMSw4ICs0MzEsNiBAQAogewogICBlbmMtPnNpbmtwYWQgPQogICAgICAgZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZhY21lbmNfc2lua190ZW1wbGF0ZSwgInNpbmsiKTsKLSAgZ3N0X3BhZF9zZXRfc2V0Y2Fwc19mdW5jdGlvbiAoZW5jLT5zaW5rcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGFjbWVuY19zaW5rX3NldGNhcHMpKTsKICAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKGVuYy0+c2lua3BhZCwgR1NUX0RFQlVHX0ZVTkNQVFIgKGFjbWVuY19jaGFpbikpOwogICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoZW5jLT5zaW5rcGFkLAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGFjbWVuY19zaW5rX2V2ZW50KSk7CkBAIC00NTMsNiArNDcxLDEyIEBACiBhY21lbmNfY2xhc3NfaW5pdCAoQUNNRW5jQ2xhc3MgKiBrbGFzcykKIHsKICAgR09iamVjdENsYXNzICpnb2JqZWN0Y2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOworICBBQ01FbmNQYXJhbXMgKnBhcmFtczsKKyAgQUNNRFJJVkVSREVUQUlMUyBkcml2ZXJkZXRhaWxzOworICBnY2hhciAqc2hvcnRuYW1lLCAqbG9uZ25hbWUsICpkZXRhaWwsICpkZXNjcmlwdGlvbjsKKyAgTU1SRVNVTFQgcmVzOworCiAgIHBhcmVudF9jbGFzcyA9IChHc3RFbGVtZW50Q2xhc3MgKikgZ190eXBlX2NsYXNzX3BlZWtfcGFyZW50IChrbGFzcyk7CiAgIGdvYmplY3RjbGFzcy0+ZGlzcG9zZSA9IGFjbWVuY19kaXNwb3NlOwogICBnb2JqZWN0Y2xhc3MtPnNldF9wcm9wZXJ0eSA9IGFjbWVuY19zZXRfcHJvcGVydHk7CkBAIC00NjAsMTUgKzQ4NCw2IEBACiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RjbGFzcywgQVJHX0JJVFJBVEUsCiAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgiYml0cmF0ZSIsICJCaXRyYXRlIiwgIkJpdHJhdGUgdG8gZW5jb2RlIGF0IChpbiBicHMpIiwKICAgICAgICAgICAwLCAxMDAwMDAwLCBERUZBVUxUX0JJVFJBVEUsIEdfUEFSQU1fUkVBRFdSSVRFKSk7Ci19IHN0YXRpYyB2b2lkCi0KLWFjbWVuY19iYXNlX2luaXQgKEFDTUVuY0NsYXNzICoga2xhc3MpCi17Ci0gIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0gIEFDTUVuY1BhcmFtcyAqcGFyYW1zOwotICBBQ01EUklWRVJERVRBSUxTIGRyaXZlcmRldGFpbHM7Ci0gIGdjaGFyICpzaG9ydG5hbWUsICpsb25nbmFtZSwgKmRldGFpbCwgKmRlc2NyaXB0aW9uOwotICBNTVJFU1VMVCByZXM7CiAKICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKICAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmFjbWVuY19zaW5rX3RlbXBsYXRlKSk7CkBAIC01NDcsNyArNTYyLDcgQEAKICAgR1R5cGUgdHlwZTsKICAgR1R5cGVJbmZvIHR5cGVpbmZvID0gewogICAgIHNpemVvZiAoQUNNRW5jQ2xhc3MpLAotICAgIChHQmFzZUluaXRGdW5jKSBhY21lbmNfYmFzZV9pbml0LCBOVUxMLAorICAgIE5VTEwsIE5VTEwsCiAgICAgKEdDbGFzc0luaXRGdW5jKSBhY21lbmNfY2xhc3NfaW5pdCwgTlVMTCwgTlVMTCwgc2l6ZW9mIChBQ01FbmMpLAogICAgIDAsIChHSW5zdGFuY2VJbml0RnVuYykgYWNtZW5jX2luaXQsCiAgIH07CmRpZmYgLS1naXQgYS9zeXMvYWNtbXAzZGVjL01ha2VmaWxlLmluIGIvc3lzL2FjbW1wM2RlYy9NYWtlZmlsZS5pbgppbmRleCBlYzRiZTU0Li5hZWE2NjM5IDEwMDY0NAotLS0gYS9zeXMvYWNtbXAzZGVjL01ha2VmaWxlLmluCisrKyBiL3N5cy9hY21tcDNkZWMvTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNzEsNiArMjcwLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMDgsNiArMzA5LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTYsNyArMzE5LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM1LDggKzMzNyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTMsMTYgKzM1NiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zODgsNiArMzkyLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDEzLDYgKzQxOSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNCw2ICs1MjIsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTI3LDggKzUzNiw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0NCw2ICs1NTEsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjAxLDE2ICs2MTAsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjIsNiArNjczLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Miw2ICs2ODQsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODEsNiArNjk0LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcxOCw3ICs3MzMsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3N5cy9hY21tcDNkZWMvYWNtbXAzZGVjLmMgYi9zeXMvYWNtbXAzZGVjL2FjbW1wM2RlYy5jCmluZGV4IGU2ZDM0YmEuLjc1Mzc2OTEgMTAwNjQ0Ci0tLSBhL3N5cy9hY21tcDNkZWMvYWNtbXAzZGVjLmMKKysrIGIvc3lzL2FjbW1wM2RlYy9hY21tcDNkZWMuYwpAQCAtMzYsNiArMzYsMTIgQEAKICAgICAgIChhY21tcDNkZWNfZ2V0X3R5cGUoKSkKICNkZWZpbmUgR1NUX0FDTV9NUDNfREVDKG9iaikgXAogICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX0FDTV9NUDNfREVDLEFDTU1QM0RlYykpCisjZGVmaW5lIEdTVF9BQ01fTVAzX0RFQ19DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9BQ01fTVAzX0RFQyxBQ01NUDNEZWNDbGFzcykpCisjZGVmaW5lIEdTVF9JU19BQ01fTVAzX0RFQyhvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX0FDTV9NUDNfREVDKSkKKyNkZWZpbmUgR1NUX0lTX0FDTV9NUDNfREVDX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX0FDTV9NUDNfREVDKSkKIAogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgYWNtbXAzZGVjX2RlYnVnCiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChhY21tcDNkZWNfZGVidWcpOwpAQCAtNDQsNyArNTAsNyBAQAogR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAogICAgIEdTVF9QQURfU1JDLAogICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImF1ZGlvL3gtcmF3LWludCwgIgorICAgIEdTVF9TVEFUSUNfQ0FQUyAoImF1ZGlvL3gtcmF3LCAiCiAgICAgICAgICJkZXB0aCA9IChpbnQpMTYsICIKICAgICAgICAgIndpZHRoID0gKGludCkxNiwgIgogICAgICAgICAiZW5kaWFubmVzcyA9IChpbnQpIiBHX1NUUklOR0lGWSAoR19CWVRFX09SREVSKSAiLCAiCkBAIC05NiwxMyArMTAyLDE0IEBACiAKIEdUeXBlIGFjbW1wM2RlY19nZXRfdHlwZSAodm9pZCk7CiAKLUdTVF9CT0lMRVJQTEFURSAoQUNNTVAzRGVjLCBhY21tcDNkZWMsIEdzdEVsZW1lbnQsIEdTVF9UWVBFX0VMRU1FTlQpOworI2RlZmluZSBhY21tcDNkZWNfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRSAoQUNNTVAzRGVjLCBhY21tcDNkZWMsIEdTVF9UWVBFX0VMRU1FTlQpOwogCiBzdGF0aWMgR3N0Q2FwcyAqCiBhY21tcDNkZWNfY2Fwc19mcm9tX2Zvcm1hdCAoV0FWRUZPUk1BVEVYICogZm10KQogewogICByZXR1cm4gZ3N0X3JpZmZfY3JlYXRlX2F1ZGlvX2NhcHMgKGZtdC0+d0Zvcm1hdFRhZywKLSAgICAgIE5VTEwsIChnc3RfcmlmZl9zdHJmX2F1ZHMgKikgZm10LCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAgIE5VTEwsIChnc3RfcmlmZl9zdHJmX2F1ZHMgKikgZm10LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKIH0KIAogc3RhdGljIGdib29sZWFuCkBAIC0yMDEsMTAgKzIwOCw4IEBACiAKICAgaWYgKGRlYy0+aGVhZGVyLmZkd1N0YXR1cyAmIEFDTVNUUkVBTUhFQURFUl9TVEFUVVNGX1BSRVBBUkVEKQogICAgIGFjbVN0cmVhbVVucHJlcGFyZUhlYWRlciAoZGVjLT5zdHJlYW0sICZkZWMtPmhlYWRlciwgMCk7Ci0gIGlmIChkZWMtPmhlYWRlci5wYlNyYykKLSAgICBnX2ZyZWUgKGRlYy0+aGVhZGVyLnBiU3JjKTsKLSAgaWYgKGRlYy0+aGVhZGVyLnBiRHN0KQotICAgIGdfZnJlZSAoZGVjLT5oZWFkZXIucGJEc3QpOworICBnX2ZyZWUgKGRlYy0+aGVhZGVyLnBiU3JjKTsKKyAgZ19mcmVlIChkZWMtPmhlYWRlci5wYkRzdCk7CiAgIG1lbXNldCAoJmRlYy0+aGVhZGVyLCAwLCBzaXplb2YgKGRlYy0+aGVhZGVyKSk7CiAKICAgaWYgKGRlYy0+c3RyZWFtKSB7CkBAIC0yNDEsMjEgKzI0NiwyOCBAQAogCiAgIGlmIChkZWMtPmhlYWRlci5jYkRzdExlbmd0aFVzZWQgPiAwKSB7CiAgICAgR3N0QnVmZmVyICpvdXRidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKGRlYy0+aGVhZGVyLmNiRHN0TGVuZ3RoVXNlZCk7Ci0gICAgbWVtY3B5IChHU1RfQlVGRkVSX0RBVEEgKG91dGJ1ZiksIGRlYy0+aGVhZGVyLnBiRHN0LAotICAgICAgICBkZWMtPmhlYWRlci5jYkRzdExlbmd0aFVzZWQpOworICAgIGlmICghb3V0YnVmKSB7CisgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlYywgImNhbm5vdCBhbGxvY2F0ZSBhIG5ldyBHc3RCdWZmZXIiKTsKKyAgICAgIGdvdG8gZG9uZV9wdXNoX291dHB1dDsKKyAgICB9CisKKyAgICBpZiAoZ3N0X2J1ZmZlcl9maWxsIChvdXRidWYsIDAsIGRlYy0+aGVhZGVyLnBiRHN0LAorICAgICAgICAgICAgZGVjLT5oZWFkZXIuY2JEc3RMZW5ndGhVc2VkKSAhPSBkZWMtPmhlYWRlci5jYkRzdExlbmd0aFVzZWQpIHsKKyAgICAgIGdzdF9idWZmZXJfdW5yZWYgKG91dGJ1Zik7CisgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlYywgInVuYWJsZSB0byBmaWxsIG91dHB1dCBidWZmZXIiKTsKKyAgICAgIGdvdG8gZG9uZV9wdXNoX291dHB1dDsKKyAgICB9CiAKICAgICBpZiAoZGVjLT50aW1lc3RhbXAgIT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkKICAgICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChvdXRidWYpID0gZGVjLT50aW1lc3RhbXA7CiAgICAgR1NUX0JVRkZFUl9EVVJBVElPTiAob3V0YnVmKSA9Ci0gICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKEdTVF9CVUZGRVJfU0laRSAob3V0YnVmKSwgR1NUX1NFQ09ORCwKKyAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCAoZGVjLT5oZWFkZXIuY2JEc3RMZW5ndGhVc2VkLCBHU1RfU0VDT05ELAogICAgICAgICBkZWMtPnJhdGUgKiBkZWMtPmNoYW5uZWxzICogMik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJkZWNvZGVkIGJ1ZmZlciBoYXMgdHMgJWQsIGR1cmF0aW9uICVkIiwKICAgICAgICAgKGludCkgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChvdXRidWYpKSwKICAgICAgICAgKGludCkgKEdTVF9CVUZGRVJfRFVSQVRJT04gKG91dGJ1ZikpKTsKIAotICAgIGdzdF9idWZmZXJfc2V0X2NhcHMgKG91dGJ1ZiwgZGVjLT5vdXRwdXRfY2Fwcyk7Ci0KICAgICBpZiAoZGVjLT50aW1lc3RhbXAgIT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkKICAgICAgIGRlYy0+dGltZXN0YW1wICs9IEdTVF9CVUZGRVJfRFVSQVRJT04gKG91dGJ1Zik7CiAKQEAgLTI2NSwyMCArMjc3LDIxIEBACiAgIH0gZWxzZQogICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgIk5vdCBwdXNoaW5nIGRlY29kZWQgYnVmZmVyLCBubyBvdXRwdXQiKTsKIAotCitkb25lX3B1c2hfb3V0cHV0OgogICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotYWNtbXAzZGVjX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdEJ1ZmZlciAqIGJ1ZikKK2FjbW1wM2RlY19jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKIHsKICAgTU1SRVNVTFQgcmVzOwogICBBQ01NUDNEZWMgKmRlYyA9IChBQ01NUDNEZWMgKikgR1NUX1BBRF9QQVJFTlQgKHBhZCk7Ci0gIGd1Y2hhciAqZGF0YSA9IEdTVF9CVUZGRVJfREFUQSAoYnVmKTsKLSAgZ2ludCBsZW4gPSBHU1RfQlVGRkVSX1NJWkUgKGJ1Zik7CisgIEdzdE1hcEluZm8gbWFwOwogICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOwogCi0gIGlmIChsZW4gPiBBQ01fQlVGRkVSX1NJWkUpIHsKKyAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJm1hcCwgR1NUX01BUF9SRUFEKTsKKworICBpZiAobWFwLnNpemUgPiBBQ01fQlVGRkVSX1NJWkUpIHsKICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlYywgIkltcG9zc2libHkgbGFyZ2UgbXAzIGZyYW1lISIpOwogICAgIHJldCA9IEdTVF9GTE9XX0VSUk9SOwogICAgIGdvdG8gZG9uZTsKQEAgLTI5MCw4ICszMDMsOCBAQAogICAgIGRlYy0+dGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1Zik7CiAgIH0KIAotICBtZW1jcHkgKGRlYy0+aGVhZGVyLnBiU3JjLCBkYXRhLCBsZW4pOwotICBkZWMtPmhlYWRlci5jYlNyY0xlbmd0aCA9IGxlbjsKKyAgbWVtY3B5IChkZWMtPmhlYWRlci5wYlNyYywgbWFwLmRhdGEsIG1hcC5zaXplKTsKKyAgZGVjLT5oZWFkZXIuY2JTcmNMZW5ndGggPSBtYXAuc2l6ZTsKIAogICAvKiBOb3cgd2UgaGF2ZSBhIGJ1ZmZlciByZWFkeSB0byBnbyAqLwogICByZXMgPSBhY21TdHJlYW1Db252ZXJ0IChkZWMtPnN0cmVhbSwgJmRlYy0+aGVhZGVyLApAQCAtMzE2LDYgKzMyOSw3IEBACiAgIH0KIAogZG9uZToKKyAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmbWFwKTsKICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKIAogICByZXR1cm4gcmV0OwpAQCAtMzQyLDExICszNTYsMTYgQEAKIH0KIAogc3RhdGljIGdib29sZWFuCi1hY21tcDNkZWNfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RFdmVudCAqIGV2ZW50KQorYWNtbXAzZGVjX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQogewogICBBQ01NUDNEZWMgKmRlYyA9IChBQ01NUDNEZWMgKikgR1NUX1BBRF9QQVJFTlQgKHBhZCk7CiAKICAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7CisgICAgY2FzZSBHU1RfRVZFTlRfQ0FQUzp7CisgICAgICBHc3RDYXBzICpjYXBzOworICAgICAgZ3N0X2V2ZW50X3BhcnNlX2NhcHMgKGV2ZW50LCAmY2Fwcyk7CisgICAgICByZXR1cm4gYWNtbXAzZGVjX3Npbmtfc2V0Y2FwcyAocGFkLCBjYXBzKTsKKyAgICB9CiAgICAgY2FzZSBHU1RfRVZFTlRfRU9TOgogICAgICAgYWNtbXAzZGVjX2ZpbmlzaF9zdHJlYW0gKGRlYyk7CiAgICAgICBicmVhazsKQEAgLTM3NSwxMiArMzk0LDEwIEBACiB9CiAKIHN0YXRpYyB2b2lkCi1hY21tcDNkZWNfaW5pdCAoQUNNTVAzRGVjICogZGVjLCBBQ01NUDNEZWNDbGFzcyAqIGRlY2NsYXNzKQorYWNtbXAzZGVjX2luaXQgKEFDTU1QM0RlYyAqIGRlYykKIHsKICAgZGVjLT5zaW5rcGFkID0KICAgICAgIGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmYWNtbXAzZGVjX3NpbmtfdGVtcGxhdGUsICJzaW5rIik7Ci0gIGdzdF9wYWRfc2V0X3NldGNhcHNfZnVuY3Rpb24gKGRlYy0+c2lua3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChhY21tcDNkZWNfc2lua19zZXRjYXBzKSk7CiAgIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uIChkZWMtPnNpbmtwYWQsCiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoYWNtbXAzZGVjX2NoYWluKSk7CiAgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChkZWMtPnNpbmtwYWQsCkBAIC0zOTcsMTMgKzQxNCw4IEBACiBhY21tcDNkZWNfY2xhc3NfaW5pdCAoQUNNTVAzRGVjQ2xhc3MgKiBrbGFzcykKIHsKICAgR09iamVjdENsYXNzICpnb2JqZWN0Y2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwotICBnb2JqZWN0Y2xhc3MtPmRpc3Bvc2UgPSBhY21tcDNkZWNfZGlzcG9zZTsKLX0KLQotc3RhdGljIHZvaWQKLWFjbW1wM2RlY19iYXNlX2luaXQgKGdwb2ludGVyIGtsYXNzKQotewogICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOworICBnb2JqZWN0Y2xhc3MtPmRpc3Bvc2UgPSBhY21tcDNkZWNfZGlzcG9zZTsKIAogICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAogICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmYWNtbXAzZGVjX3NpbmtfdGVtcGxhdGUpKTsKZGlmZiAtLWdpdCBhL3N5cy9hbmRyb2lkbWVkaWEvTWFrZWZpbGUuYW0gYi9zeXMvYW5kcm9pZG1lZGlhL01ha2VmaWxlLmFtCmluZGV4IDVmY2ZiOGYuLjdhZDliNmUgMTAwNjQ0Ci0tLSBhL3N5cy9hbmRyb2lkbWVkaWEvTWFrZWZpbGUuYW0KKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9NYWtlZmlsZS5hbQpAQCAtMSwyNiArMSw0NCBAQAogcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0YW5kcm9pZG1lZGlhLmxhCiAKIGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9TT1VSQ0VTID0gXAotCWdzdGFtYy5jIFwKKwlnc3RhaGNzcmMuYyBcCiAJZ3N0YW1jYXVkaW9kZWMuYyBcCisJZ3N0YW1jLmMgXAorCWdzdGFtY3N1cmZhY2UuYyBcCisJZ3N0YW1jc3VyZmFjZXRleHR1cmUuYyBcCiAJZ3N0YW1jdmlkZW9kZWMuYyBcCiAJZ3N0YW1jdmlkZW9lbmMuYyBcCisJZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYyBcCisJZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuYyBcCisJZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmMgXAogCWdzdGpuaXV0aWxzLmMKIAogbm9pbnN0X0hFQURFUlMgPSBcCi0JZ3N0YW1jLmggXAotCWdzdGFtYy1jb25zdGFudHMuaCBcCisJZ3N0YWhjc3JjLmggXAogCWdzdGFtY2F1ZGlvZGVjLmggXAorCWdzdGFtYy1jb25zdGFudHMuaCBcCisJZ3N0YW1jLmggXAorCWdzdGFtY3N1cmZhY2UuaCBcCisJZ3N0YW1jc3VyZmFjZXRleHR1cmUuaCBcCiAJZ3N0YW1jdmlkZW9kZWMuaCBcCiAJZ3N0YW1jdmlkZW9lbmMuaCBcCisJZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuaCBcCisJZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuaCBcCisJZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmggXAogCWdzdGpuaXV0aWxzLmgKIAogbGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUyA9IFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiAJJChHU1RfQkFTRV9DRkxBR1MpIFwKIAkkKEdTVF9DRkxBR1MpIFwKLQkkKE9SQ19DRkxBR1MpCisJJChPUkNfQ0ZMQUdTKSBcCisJLURHU1RfVVNFX1VOU1RBQkxFX0FQSQorCiBsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCQUREID0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvaW50ZXJmYWNlcy9saWJnc3RwaG90b2dyYXBoeS0kKEdTVF9BUElfVkVSU0lPTikubGEgXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAogCS1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAogCS1sZ3N0cGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC0zMCwzICs0OCw4IEBACiAJJChPUkNfTElCUykKIGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCiBsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKKworYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc2RpciA9ICQoZGF0YWRpcikvZ3N0LWFuZHJvaWQvbmRrLWJ1aWxkL2FuZHJvaWRtZWRpYS8KK2FuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNfREFUQSA9IFwKKwlvcmcvZnJlZWRlc2t0b3AvZ3N0cmVhbWVyL2FuZHJvaWRtZWRpYS9Hc3RBaGNDYWxsYmFjay5qYXZhIFwKKwlvcmcvZnJlZWRlc2t0b3AvZ3N0cmVhbWVyL2FuZHJvaWRtZWRpYS9Hc3RBbWNPbkZyYW1lQXZhaWxhYmxlTGlzdGVuZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9NYWtlZmlsZS5pbiBiL3N5cy9hbmRyb2lkbWVkaWEvTWFrZWZpbGUuaW4KaW5kZXggY2FkNzQ4NC4uOTQ2YTJiNiAxMDA2NDQKLS0tIGEvc3lzL2FuZHJvaWRtZWRpYS9NYWtlZmlsZS5pbgorKysgYi9zeXMvYW5kcm9pZG1lZGlhL01ha2VmaWxlLmluCkBAIC0xNSw2ICsxNSw3IEBACiBAU0VUX01BS0VACiAKIAorCiBWUEFUSCA9IEBzcmNkaXJACiBhbV9faXNfZ251X21ha2UgPSB7IFwKICAgaWYgdGVzdCAteiAnJChNQUtFTEVWRUwpJzsgdGhlbiBcCkBAIC0xMTYsMTYgKzExNywxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE2MSwxNiArMTYxLDI0IEBACiAgICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAogICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAogICB9Ci1hbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIKK2FtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChwbHVnaW5kaXIpIiBcCisJIiQoREVTVERJUikkKGFuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNkaXIpIgogTFRMSUJSQVJJRVMgPSAkKHBsdWdpbl9MVExJQlJBUklFUykKIGFtX19ERVBFTkRFTkNJRVNfMSA9Ci1saWJnc3RhbmRyb2lkbWVkaWFfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKK2xpYmdzdGFuZHJvaWRtZWRpYV9sYV9ERVBFTkRFTkNJRVMgPSAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2ludGVyZmFjZXMvbGliZ3N0cGhvdG9ncmFwaHktJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJChhbV9fREVQRU5ERU5DSUVTXzEpCi1hbV9saWJnc3RhbmRyb2lkbWVkaWFfbGFfT0JKRUNUUyA9IGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWMubG8gXAorCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKK2FtX2xpYmdzdGFuZHJvaWRtZWRpYV9sYV9PQkpFQ1RTID0gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFoY3NyYy5sbyBcCiAJbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY2F1ZGlvZGVjLmxvIFwKKwlsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jLmxvIFwKKwlsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZS5sbyBcCisJbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2V0ZXh0dXJlLmxvIFwKIAlsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jdmlkZW9kZWMubG8gXAogCWxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWN2aWRlb2VuYy5sbyBcCisJbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmxvIFwKKwlsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUubG8gXAorCWxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEubG8gXAogCWxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3Rqbml1dGlscy5sbwogbGliZ3N0YW5kcm9pZG1lZGlhX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdGFuZHJvaWRtZWRpYV9sYV9PQkpFQ1RTKQogQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQpAQCAtMjIyLDYgKzIzMCw3IEBACiAgICAgbnxub3xOTykgZmFsc2U7OyBcCiAgICAgKikgKGluc3RhbGwtaW5mbyAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMTs7IFwKICAgZXNhYworREFUQSA9ICQoYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc19EQVRBKQogSEVBREVSUyA9ICQobm9pbnN0X0hFQURFUlMpCiBhbV9fdGFnZ2VkX2ZpbGVzID0gJChIRUFERVJTKSAkKFNPVVJDRVMpICQoVEFHU19GSUxFUykgJChMSVNQKQogIyBSZWFkIGEgbGlzdCBvZiBuZXdsaW5lLXNlcGFyYXRlZCBzdHJpbmdzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0LApAQCAtMjc5LDYgKzI4OCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE2LDYgKzMyNyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI0LDcgKzMzNyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Myw4ICszNTUsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYxLDE2ICszNzQsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk2LDYgKzQxMCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMSw2ICs0MzcsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjIsNiArNTQwLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNSw4ICs1NTQsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTIsNiArNTY5LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOSwxNiArNjI4LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcwLDYgKzY5MSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODAsNiArNzAyLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg5LDYgKzcxMiw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjYsNyArNzUxLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NjgsMjcgKzc5Miw0NCBAQAogd2F5bGFuZF9zY2FubmVyID0gQHdheWxhbmRfc2Nhbm5lckAKIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdGFuZHJvaWRtZWRpYS5sYQogbGliZ3N0YW5kcm9pZG1lZGlhX2xhX1NPVVJDRVMgPSBcCi0JZ3N0YW1jLmMgXAorCWdzdGFoY3NyYy5jIFwKIAlnc3RhbWNhdWRpb2RlYy5jIFwKKwlnc3RhbWMuYyBcCisJZ3N0YW1jc3VyZmFjZS5jIFwKKwlnc3RhbWNzdXJmYWNldGV4dHVyZS5jIFwKIAlnc3RhbWN2aWRlb2RlYy5jIFwKIAlnc3RhbWN2aWRlb2VuYy5jIFwKKwlnc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jIFwKKwlnc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5jIFwKKwlnc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYyBcCiAJZ3N0am5pdXRpbHMuYwogCiBub2luc3RfSEVBREVSUyA9IFwKLQlnc3RhbWMuaCBcCi0JZ3N0YW1jLWNvbnN0YW50cy5oIFwKKwlnc3RhaGNzcmMuaCBcCiAJZ3N0YW1jYXVkaW9kZWMuaCBcCisJZ3N0YW1jLWNvbnN0YW50cy5oIFwKKwlnc3RhbWMuaCBcCisJZ3N0YW1jc3VyZmFjZS5oIFwKKwlnc3RhbWNzdXJmYWNldGV4dHVyZS5oIFwKIAlnc3RhbWN2aWRlb2RlYy5oIFwKIAlnc3RhbWN2aWRlb2VuYy5oIFwKKwlnc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5oIFwKKwlnc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oIFwKKwlnc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuaCBcCiAJZ3N0am5pdXRpbHMuaAogCiBsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTID0gXAorCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCisJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKIAkkKEdTVF9CQVNFX0NGTEFHUykgXAogCSQoR1NUX0NGTEFHUykgXAotCSQoT1JDX0NGTEFHUykKKwkkKE9SQ19DRkxBR1MpIFwKKwktREdTVF9VU0VfVU5TVEFCTEVfQVBJCiAKIGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJBREQgPSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzL2xpYmdzdHBob3RvZ3JhcGh5LSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9nbC9saWJnc3RnbC0kKEdTVF9BUElfVkVSU0lPTikubGEgXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCiAJLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCiAJLWxnc3RwYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05AIFwKQEAgLTc5OSw2ICs4NDAsMTEgQEAKIAogbGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQorYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc2RpciA9ICQoZGF0YWRpcikvZ3N0LWFuZHJvaWQvbmRrLWJ1aWxkL2FuZHJvaWRtZWRpYS8KK2FuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNfREFUQSA9IFwKKwlvcmcvZnJlZWRlc2t0b3AvZ3N0cmVhbWVyL2FuZHJvaWRtZWRpYS9Hc3RBaGNDYWxsYmFjay5qYXZhIFwKKwlvcmcvZnJlZWRlc2t0b3AvZ3N0cmVhbWVyL2FuZHJvaWRtZWRpYS9Hc3RBbWNPbkZyYW1lQXZhaWxhYmxlTGlzdGVuZXIuamF2YQorCiBhbGw6IGFsbC1hbQogCiAuU1VGRklYRVM6CkBAIC04NzcsOCArOTIzLDE0IEBACiBkaXN0Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi50YWIuYwogCitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhaGNzcmMuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY2F1ZGlvZGVjLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2UuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZXRleHR1cmUuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jdmlkZW9kZWMuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jdmlkZW9lbmMuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0am5pdXRpbHMuUGxvQGFtX19xdW90ZUAKQEAgLTkwNywxMiArOTU5LDEyIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMVENPTVBJTEUpIC1jIC1vICRAICQ8CiAKLWxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWMubG86IGdzdGFtYy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5UcG8gLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5sbyBgdGVzdCAtZiAnZ3N0YW1jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGFtYy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jLlRwbyAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RhbWMuYycgb2JqZWN0PSdsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YWhjc3JjLmxvOiBnc3RhaGNzcmMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhaGNzcmMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhaGNzcmMuVHBvIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhaGNzcmMubG8gYHRlc3QgLWYgJ2dzdGFoY3NyYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhaGNzcmMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFoY3NyYy5UcG8gJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhaGNzcmMuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0YWhjc3JjLmMnIG9iamVjdD0nbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFoY3NyYy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5sbyBgdGVzdCAtZiAnZ3N0YW1jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGFtYy5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YWhjc3JjLmxvIGB0ZXN0IC1mICdnc3RhaGNzcmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0YWhjc3JjLmMKIAogbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY2F1ZGlvZGVjLmxvOiBnc3RhbWNhdWRpb2RlYy5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY2F1ZGlvZGVjLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jYXVkaW9kZWMuVHBvIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNhdWRpb2RlYy5sbyBgdGVzdCAtZiAnZ3N0YW1jYXVkaW9kZWMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0YW1jYXVkaW9kZWMuYwpAQCAtOTIxLDYgKzk3MywyNyBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY2F1ZGlvZGVjLmxvIGB0ZXN0IC1mICdnc3RhbWNhdWRpb2RlYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhbWNhdWRpb2RlYy5jCiAKK2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWMubG86IGdzdGFtYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5UcG8gLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5sbyBgdGVzdCAtZiAnZ3N0YW1jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGFtYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jLlRwbyAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RhbWMuYycgb2JqZWN0PSdsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jLmxvIGB0ZXN0IC1mICdnc3RhbWMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0YW1jLmMKKworbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2UubG86IGdzdGFtY3N1cmZhY2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZS5UcG8gLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2UubG8gYHRlc3QgLWYgJ2dzdGFtY3N1cmZhY2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0YW1jc3VyZmFjZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZS5UcG8gJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGFtY3N1cmZhY2UuYycgb2JqZWN0PSdsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2UubG8gYHRlc3QgLWYgJ2dzdGFtY3N1cmZhY2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0YW1jc3VyZmFjZS5jCisKK2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNldGV4dHVyZS5sbzogZ3N0YW1jc3VyZmFjZXRleHR1cmUuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNldGV4dHVyZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2V0ZXh0dXJlLlRwbyAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZXRleHR1cmUubG8gYHRlc3QgLWYgJ2dzdGFtY3N1cmZhY2V0ZXh0dXJlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGFtY3N1cmZhY2V0ZXh0dXJlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNldGV4dHVyZS5UcG8gJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNldGV4dHVyZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RhbWNzdXJmYWNldGV4dHVyZS5jJyBvYmplY3Q9J2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNldGV4dHVyZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2V0ZXh0dXJlLmxvIGB0ZXN0IC1mICdnc3RhbWNzdXJmYWNldGV4dHVyZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhbWNzdXJmYWNldGV4dHVyZS5jCisKIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWN2aWRlb2RlYy5sbzogZ3N0YW1jdmlkZW9kZWMuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWN2aWRlb2RlYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3ZpZGVvZGVjLlRwbyAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jdmlkZW9kZWMubG8gYHRlc3QgLWYgJ2dzdGFtY3ZpZGVvZGVjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGFtY3ZpZGVvZGVjLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWN2aWRlb2RlYy5UcG8gJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWN2aWRlb2RlYy5QbG8KQEAgLTkzNSw2ICsxMDA4LDI3IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jdmlkZW9lbmMubG8gYHRlc3QgLWYgJ2dzdGFtY3ZpZGVvZW5jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGFtY3ZpZGVvZW5jLmMKIAorbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmxvOiBnc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuVHBvIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5sbyBgdGVzdCAtZiAnZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LlRwbyAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmMnIG9iamVjdD0nbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQubG8gYHRlc3QgLWYgJ2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmMKKworbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmxvOiBnc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuVHBvIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5sbyBgdGVzdCAtZiAnZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLlRwbyAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmMnIG9iamVjdD0nbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUubG8gYHRlc3QgLWYgJ2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmMKKworbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5sbzogZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLlRwbyAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmxvIGB0ZXN0IC1mICdnc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuVHBvICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jJyBvYmplY3Q9J2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEubG8gYHRlc3QgLWYgJ2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYworCiBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0am5pdXRpbHMubG86IGdzdGpuaXV0aWxzLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0am5pdXRpbHMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3Rqbml1dGlscy5UcG8gLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGpuaXV0aWxzLmxvIGB0ZXN0IC1mICdnc3Rqbml1dGlscy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rqbml1dGlscy5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0am5pdXRpbHMuVHBvICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0am5pdXRpbHMuUGxvCkBAIC05NDcsNiArMTA0MSwyNyBAQAogCiBjbGVhbi1saWJ0b29sOgogCS1ybSAtcmYgLmxpYnMgX2xpYnMKK2luc3RhbGwtYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc0RBVEE6ICQoYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc19EQVRBKQorCUAkKE5PUk1BTF9JTlNUQUxMKQorCUBsaXN0PSckKGFuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNfREFUQSknOyB0ZXN0IC1uICIkKGFuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNkaXIpIiB8fCBsaXN0PTsgXAorCWlmIHRlc3QgLW4gIiQkbGlzdCI7IHRoZW4gXAorCSAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKGFuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNkaXIpJyI7IFwKKwkgICQoTUtESVJfUCkgIiQoREVTVERJUikkKGFuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNkaXIpIiB8fCBleGl0IDE7IFwKKwlmaTsgXAorCWZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAiJCRwIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKKwkgIGVjaG8gIiQkZCQkcCI7IFwKKwlkb25lIHwgJChhbV9fYmFzZV9saXN0KSB8IFwKKwl3aGlsZSByZWFkIGZpbGVzOyBkbyBcCisJICBlY2hvICIgJChJTlNUQUxMX0RBVEEpICQkZmlsZXMgJyQoREVTVERJUikkKGFuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNkaXIpJyI7IFwKKwkgICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICIkKERFU1RESVIpJChhbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzZGlyKSIgfHwgZXhpdCAkJD87IFwKKwlkb25lCisKK3VuaW5zdGFsbC1hbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzREFUQToKKwlAJChOT1JNQUxfVU5JTlNUQUxMKQorCUBsaXN0PSckKGFuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNfREFUQSknOyB0ZXN0IC1uICIkKGFuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNkaXIpIiB8fCBsaXN0PTsgXAorCWZpbGVzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRwOyBkb25lIHwgc2VkIC1lICdzfF4uKi98fCdgOyBcCisJZGlyPSckKERFU1RESVIpJChhbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzZGlyKSc7ICQoYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpcikKIAogSUQ6ICQoYW1fX3RhZ2dlZF9maWxlcykKIAkkKGFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMpOyBta2lkIC1mSUQgJCR1bmlxdWUKQEAgLTEwMzIsOSArMTE0Nyw5IEBACiAJZG9uZQogY2hlY2stYW06IGFsbC1hbQogY2hlY2s6IGNoZWNrLWFtCi1hbGwtYW06IE1ha2VmaWxlICQoTFRMSUJSQVJJRVMpICQoSEVBREVSUykKK2FsbC1hbTogTWFrZWZpbGUgJChMVExJQlJBUklFUykgJChEQVRBKSAkKEhFQURFUlMpCiBpbnN0YWxsZGlyczoKLQlmb3IgZGlyIGluICIkKERFU1RESVIpJChwbHVnaW5kaXIpIjsgZG8gXAorCWZvciBkaXIgaW4gIiQoREVTVERJUikkKHBsdWdpbmRpcikiICIkKERFU1RESVIpJChhbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzZGlyKSI7IGRvIFwKIAkgIHRlc3QgLXogIiQkZGlyIiB8fCAkKE1LRElSX1ApICIkJGRpciI7IFwKIAlkb25lCiBpbnN0YWxsOiBpbnN0YWxsLWFtCkBAIC0xMDkwLDcgKzEyMDUsOCBAQAogCiBpbmZvLWFtOgogCi1pbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKK2luc3RhbGwtZGF0YS1hbTogaW5zdGFsbC1hbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzREFUQSBcCisJaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUwogCiBpbnN0YWxsLWR2aTogaW5zdGFsbC1kdmktYW0KIApAQCAtMTEzNiw3ICsxMjUyLDggQEAKIAogcHMtYW06CiAKLXVuaW5zdGFsbC1hbTogdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCit1bmluc3RhbGwtYW06IHVuaW5zdGFsbC1hbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzREFUQSBcCisJdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCiAKIC5NQUtFOiBpbnN0YWxsLWFtIGluc3RhbGwtc3RyaXAKIApAQCAtMTE0NCw3ICsxMjYxLDggQEAKIAljbGVhbi1saWJ0b29sIGNsZWFuLXBsdWdpbkxUTElCUkFSSUVTIGNzY29wZWxpc3QtYW0gY3RhZ3MgXAogCWN0YWdzLWFtIGRpc3RjbGVhbiBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcCiAJZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGNsZWFuLXRhZ3MgZGlzdGRpciBkdmkgZHZpLWFtIGh0bWwgXAotCWh0bWwtYW0gaW5mbyBpbmZvLWFtIGluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgXAorCWh0bWwtYW0gaW5mbyBpbmZvLWFtIGluc3RhbGwgaW5zdGFsbC1hbSBcCisJaW5zdGFsbC1hbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzREFUQSBpbnN0YWxsLWRhdGEgXAogCWluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBpbnN0YWxsLWR2aS1hbSBpbnN0YWxsLWV4ZWMgXAogCWluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgaW5zdGFsbC1odG1sLWFtIGluc3RhbGwtaW5mbyBcCiAJaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbWFuIGluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIFwKQEAgLTExNTMsNiArMTI3MSw3IEBACiAJbWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4gXAogCW1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1saWJ0b29sIFwKIAlwZGYgcGRmLWFtIHBzIHBzLWFtIHRhZ3MgdGFncy1hbSB1bmluc3RhbGwgdW5pbnN0YWxsLWFtIFwKKwl1bmluc3RhbGwtYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc0RBVEEgXAogCXVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUwogCiAuUFJFQ0lPVVM6IE1ha2VmaWxlCmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmMgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI3NmZjZAotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYwpAQCAtMCwwICsxLDE5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgQ2lzY28gU3lzdGVtcywgSW5jLgorICogICBBdXRob3I6IFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1LCBDb2xsYWJvcmEgTHRkLgorICogICBBdXRob3I6IEp1c3RpbiBLaW0gPGp1c3Rpbi5raW1AY29sbGFib3JhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgVVNBCisgKgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImdzdGpuaXV0aWxzLmgiCisKKyNpbmNsdWRlICJnc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5oIgorCisKK3N0YXRpYyBzdHJ1Y3QKK3sKKyAgamNsYXNzIGtsYXNzOworICBqbWV0aG9kSUQgZ2V0X2JpdHNfcGVyX3BpeGVsOworICBqaW50IEpQRUc7CisgIGppbnQgTlYxNjsKKyAgamludCBOVjIxOworICBqaW50IFJHQl81NjU7CisgIGppbnQgVU5LTk9XTjsKKyAgamludCBZVVkyOworICBqaW50IFlWMTI7Cit9IGFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQgPSB7CiswfTsKKworZ2ludCBJbWFnZUZvcm1hdF9KUEVHOworZ2ludCBJbWFnZUZvcm1hdF9OVjE2OworZ2ludCBJbWFnZUZvcm1hdF9OVjIxOworZ2ludCBJbWFnZUZvcm1hdF9SR0JfNTY1OworZ2ludCBJbWFnZUZvcm1hdF9VTktOT1dOOworZ2ludCBJbWFnZUZvcm1hdF9ZVVkyOworZ2ludCBJbWFnZUZvcm1hdF9ZVjEyOworCitzdGF0aWMgZ2Jvb2xlYW4KK19pbml0X2NsYXNzZXMgKHZvaWQpCit7CisgIEpOSUVudiAqZW52OworCisgIGpmaWVsZElEIGZpZWxkSUQ7CisgIGpjbGFzcyBrbGFzczsKKworICBHRXJyb3IgKmVyciA9IE5VTEw7CisKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICAvKiBhbmRyb2lkLmdyYXBoaWNzLkltYWdlRm9ybWF0ICovCisgIGtsYXNzID0gYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5rbGFzcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfY2xhc3MgKGVudiwgJmVyciwgImFuZHJvaWQvZ3JhcGhpY3MvSW1hZ2VGb3JtYXQiKTsKKworICBpZiAoZXJyKQorICAgIGdvdG8gZmFpbGVkOworCisgIGFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQuZ2V0X2JpdHNfcGVyX3BpeGVsID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLAorICAgICAgImdldEJpdHNQZXJQaXhlbCIsICIoSSlJIik7CisKKyAgaWYgKGVycikKKyAgICBnb3RvIGZhaWxlZDsKKworICBmaWVsZElEID0gZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkpQRUciLCAiSSIpOworICBpZiAoZXJyKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfaW50X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0LkpQRUcpKQorICAgIGdvdG8gZmFpbGVkOworICBJbWFnZUZvcm1hdF9KUEVHID0gYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5KUEVHOworCisgIGZpZWxkSUQgPSBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiTlYxNiIsICJJIik7CisgIGlmIChlcnIpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19pbnRfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQuTlYxNikpCisgICAgZ290byBmYWlsZWQ7CisgIEltYWdlRm9ybWF0X05WMTYgPSBhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0Lk5WMTY7CisKKyAgZmllbGRJRCA9IGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJOVjIxIiwgIkkiKTsKKyAgaWYgKGVycikKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ludF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5OVjIxKSkKKyAgICBnb3RvIGZhaWxlZDsKKyAgSW1hZ2VGb3JtYXRfTlYyMSA9IGFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQuTlYyMTsKKworICBmaWVsZElEID0gZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIlJHQl81NjUiLCAiSSIpOworICBpZiAoZXJyKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfaW50X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0LlJHQl81NjUpKQorICAgIGdvdG8gZmFpbGVkOworICBJbWFnZUZvcm1hdF9SR0JfNTY1ID0gYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5SR0JfNTY1OworCisgIGZpZWxkSUQgPSBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiVU5LTk9XTiIsICJJIik7CisgIGlmIChlcnIpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19pbnRfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQuVU5LTk9XTikpCisgICAgZ290byBmYWlsZWQ7CisgIEltYWdlRm9ybWF0X1VOS05PV04gPSBhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0LlVOS05PV047CisKKyAgZmllbGRJRCA9IGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJZVVkyIiwgIkkiKTsKKyAgaWYgKGVycikKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ludF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5ZVVkyKSkKKyAgICBnb3RvIGZhaWxlZDsKKyAgSW1hZ2VGb3JtYXRfWVVZMiA9IGFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQuWVVZMjsKKworICBmaWVsZElEID0gZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIllWMTIiLCAiSSIpOworICBpZiAoZXJyKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfaW50X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0LllWMTIpKQorICAgIGdvdG8gZmFpbGVkOworICBJbWFnZUZvcm1hdF9ZVjEyID0gYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5ZVjEyOworCisgIHJldHVybiBUUlVFOworCitmYWlsZWQ6CisgIGlmIChlcnIpIHsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gZ2V0IGFuZHJvaWQuZ3JhcGhpY3MuSW1hZ2VGb3JtYXQgY2xhc3M6ICVzIiwKKyAgICAgICAgZXJyLT5tZXNzYWdlKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKKyAgfQorCisgIHJldHVybiBGQUxTRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9hbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0X2luaXQgKHZvaWQpCit7CisgIGlmICghX2luaXRfY2xhc3NlcyAoKSkgeworICAgIGdzdF9hbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0X2RlaW5pdCAoKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKwordm9pZAorZ3N0X2FuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXRfZGVpbml0ICh2b2lkKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgaWYgKGFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQua2xhc3MpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwgYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5rbGFzcyk7CisgIGFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQua2xhc3MgPSBOVUxMOworfQorCisvKiBhbmRyb2lkLmdyYXBoaWNzLkltYWdlRm9ybWF0ICovCitnaW50Citnc3RfYWdfaW1hZ2Vmb3JtYXRfZ2V0X2JpdHNfcGVyX3BpeGVsIChnaW50IGZvcm1hdCkKK3sKKyAgSk5JRW52ICplbnY7CisgIEdFcnJvciAqZXJyID0gTlVMTDsKKworICBqY2xhc3Mga2xhc3MgPSBhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0LmtsYXNzOworCisgIGppbnQgYnBwID0gMDsKKworICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIGlmICghZ3N0X2FtY19qbmlfY2FsbF9zdGF0aWNfaW50X21ldGhvZCAoZW52LCAmZXJyLAorICAgICAgICAgIGtsYXNzLCBhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0LmdldF9iaXRzX3Blcl9waXhlbCwgJmJwcCwKKyAgICAgICAgICBmb3JtYXQpKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGdldCBhbmRyb2lkLmdyYXBoaWNzLkltYWdlRm9ybWF0IGNsYXNzOiAlcyIsCisgICAgICAgIGVyci0+bWVzc2FnZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CisgIH0KKworICByZXR1cm4gYnBwOworfQpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5oIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmZjIxOGIKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgQ2lzY28gU3lzdGVtcywgSW5jLgorICogICBBdXRob3I6IFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1LCBDb2xsYWJvcmEgTHRkLgorICogICBBdXRob3I6IEp1c3RpbiBLaW0gPGp1c3Rpbi5raW1AY29sbGFib3JhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgVVNBCisgKgorICovCisKKyNpZm5kZWYgX19HU1RfQU5EUk9JRF9HUkFQSElDU19JTUFHRUZPUk1BVF9IX18KKyNkZWZpbmUgX19HU1RfQU5EUk9JRF9HUkFQSElDU19JTUFHRUZPUk1BVF9IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCisvKiBhbmRyb2lkLmdyYXBoaWNzLkltYWdlRm9ybWF0ICovCitleHRlcm4gZ2ludCBJbWFnZUZvcm1hdF9KUEVHOworZXh0ZXJuIGdpbnQgSW1hZ2VGb3JtYXRfTlYxNjsKK2V4dGVybiBnaW50IEltYWdlRm9ybWF0X05WMjE7CitleHRlcm4gZ2ludCBJbWFnZUZvcm1hdF9SR0JfNTY1OworZXh0ZXJuIGdpbnQgSW1hZ2VGb3JtYXRfVU5LTk9XTjsKK2V4dGVybiBnaW50IEltYWdlRm9ybWF0X1lVWTI7CitleHRlcm4gZ2ludCBJbWFnZUZvcm1hdF9ZVjEyOworCitnYm9vbGVhbiBnc3RfYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdF9pbml0ICh2b2lkKTsKK3ZvaWQgZ3N0X2FuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXRfZGVpbml0ICh2b2lkKTsKKworZ2ludCBnc3RfYWdfaW1hZ2Vmb3JtYXRfZ2V0X2JpdHNfcGVyX3BpeGVsIChnaW50IGZvcm1hdCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9BTkRST0lEX0dSQVBISUNTX0lNQUdFRk9STUFUX0hfXyAqLworCmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmMgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ5OTNhOAotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuYwpAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgQ29sbGFib3JhIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgQ2lzY28gU3lzdGVtcywgSW5jLgorICogICBBdXRob3I6IFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1LCBDb2xsYWJvcmEgTHRkLgorICogICBBdXRob3I6IEp1c3RpbiBLaW0gPGp1c3Rpbi5raW1AY29sbGFib3JhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgVVNBCisgKgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImdzdGpuaXV0aWxzLmgiCisKKyNpbmNsdWRlICJnc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oIgorCitzdGF0aWMgc3RydWN0Cit7CisgIGpjbGFzcyBrbGFzczsKKyAgam1ldGhvZElEIGNvbnN0cnVjdG9yOworICBqbWV0aG9kSUQgcmVsZWFzZTsKK30gYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZSA9IHsKKzB9OworCitzdGF0aWMgZ2Jvb2xlYW4KK19pbml0X2NsYXNzZXMgKHZvaWQpCit7CisgIEpOSUVudiAqZW52OworICBHRXJyb3IgKmVyciA9IE5VTEw7CisKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICAvKiBhbmRyb2lkLmdyYXBoaWNzLlN1cmZhY2VUZXh0dXJlICovCisgIGFuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmUua2xhc3MgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsICZlcnIsICJhbmRyb2lkL2dyYXBoaWNzL1N1cmZhY2VUZXh0dXJlIik7CisKKyAgaWYgKCFhbmRyb2lkX2dyYXBoaWNzX3N1cmZhY2V0ZXh0dXJlLmtsYXNzKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGdldCBhbmRyb2lkLmdyYXBoaWNzLlN1cmZhY2VUZXh0dXJlIGNsYXNzOiAlcyIsCisgICAgICAgIGVyci0+bWVzc2FnZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZS5jb25zdHJ1Y3RvciA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsCisgICAgICBhbmRyb2lkX2dyYXBoaWNzX3N1cmZhY2V0ZXh0dXJlLmtsYXNzLCAiPGluaXQ+IiwgIihJKVYiKTsKKyAgYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZS5yZWxlYXNlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwKKyAgICAgIGFuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmUua2xhc3MsICJyZWxlYXNlIiwgIigpViIpOworCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X2FuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmVfaW5pdCAodm9pZCkKK3sKKyAgaWYgKCFfaW5pdF9jbGFzc2VzICgpKSB7CisgICAgZ3N0X2FuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmVfZGVpbml0ICgpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCit2b2lkCitnc3RfYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZV9kZWluaXQgKHZvaWQpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBpZiAoYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZS5rbGFzcykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LCBhbmRyb2lkX2dyYXBoaWNzX3N1cmZhY2V0ZXh0dXJlLmtsYXNzKTsKKyAgYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZS5rbGFzcyA9IE5VTEw7Cit9CisKKy8qIGFuZHJvaWQuZ3JhcGhpY3MuU3VyZmFjZVRleHR1cmUgKi8KK0dzdEFHU3VyZmFjZVRleHR1cmUgKgorZ3N0X2FnX3N1cmZhY2V0ZXh0dXJlX25ldyAoZ2ludCB0ZXh0dXJlX2lkKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpvYmplY3Qgb2JqZWN0ID0gTlVMTDsKKyAgR3N0QUdTdXJmYWNlVGV4dHVyZSAqdGV4ID0gTlVMTDsKKworICBvYmplY3QgPSAoKmVudiktPk5ld09iamVjdCAoZW52LAorICAgICAgYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZS5rbGFzcywKKyAgICAgIGFuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmUuY29uc3RydWN0b3IsIHRleHR1cmVfaWQpOworICBpZiAoKCplbnYpLT5FeGNlcHRpb25DaGVjayAoZW52KSB8fCAhb2JqZWN0KSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGNhbGwgSmF2YSBtZXRob2QiKTsKKyAgICAoKmVudiktPkV4Y2VwdGlvbkNsZWFyIChlbnYpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgdGV4ID0gZ19zbGljZV9uZXcwIChHc3RBR1N1cmZhY2VUZXh0dXJlKTsKKyAgdGV4LT5vYmplY3QgPSAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBvYmplY3QpOworICBpZiAoIXRleC0+b2JqZWN0KSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGNyZWF0ZSBnbG9iYWwgcmVmZXJlbmNlIik7CisgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsKKyAgICBnX3NsaWNlX2ZyZWUgKEdzdEFHU3VyZmFjZVRleHR1cmUsIHRleCk7CisgICAgdGV4ID0gTlVMTDsKKyAgfQorICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIG9iamVjdCk7CisKKyAgcmV0dXJuIHRleDsKK30KKwordm9pZAorZ3N0X2FnX3N1cmZhY2V0ZXh0dXJlX3JlbGVhc2UgKEdzdEFHU3VyZmFjZVRleHR1cmUgKiBzZWxmKQoreworICBKTklFbnYgKmVudjsKKyAgR0Vycm9yICplcnIgPSBOVUxMOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgaWYgKCFnc3RfYW1jX2puaV9jYWxsX3ZvaWRfbWV0aG9kIChlbnYsICZlcnIsIHNlbGYtPm9iamVjdCwKKyAgICAgICAgICBhbmRyb2lkX2dyYXBoaWNzX3N1cmZhY2V0ZXh0dXJlLnJlbGVhc2UpKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGNhbGwgcmVsZWFzZTogJXMiLCBlcnItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOworICB9CisKK30KKwordm9pZAorZ3N0X2FnX3N1cmZhY2V0ZXh0dXJlX2ZyZWUgKEdzdEFHU3VyZmFjZVRleHR1cmUgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwgc2VsZi0+b2JqZWN0KTsKKyAgZ19zbGljZV9mcmVlIChHc3RBR1N1cmZhY2VUZXh0dXJlLCBzZWxmKTsKK30KZGlmZiAtLWdpdCBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuaCBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmI4MGNhCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENpc2NvIFN5c3RlbXMsIEluYy4KKyAqICAgQXV0aG9yOiBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwgQ29sbGFib3JhIEx0ZC4KKyAqICAgQXV0aG9yOiBKdXN0aW4gS2ltIDxqdXN0aW4ua2ltQGNvbGxhYm9yYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQorICoKKyAqLworCisjaWZuZGVmIF9fR1NUX0FORFJPSURfR1JBUEhJQ1NfU1VSRkFDRVRFWFRVUkVfSF9fCisjZGVmaW5lIF9fR1NUX0FORFJPSURfR1JBUEhJQ1NfU1VSRkFDRVRFWFRVUkVfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8am5pLmg+CisKKworR19CRUdJTl9ERUNMUworCit0eXBlZGVmIHN0cnVjdCBfR3N0QUdTdXJmYWNlVGV4dHVyZSBHc3RBR1N1cmZhY2VUZXh0dXJlOworCisvKiBhbmRyb2lkLmdyYXBoaWNzLlN1cmZhY2VUZXh0dXJlICovCitzdHJ1Y3QgX0dzdEFHU3VyZmFjZVRleHR1cmUgeworICAvKiA8IHByaXZhdGUgPiAqLworICBqb2JqZWN0IG9iamVjdDsgLyogZ2xvYmFsIHJlZmVyZW5jZSAqLworfTsKKworCitnYm9vbGVhbiBnc3RfYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZV9pbml0ICh2b2lkKTsKK3ZvaWQgZ3N0X2FuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmVfZGVpbml0ICh2b2lkKTsKKworLyogYW5kcm9pZC5ncmFwaGljcy5TdXJmYWNlVGV4dHVyZSAqLworR3N0QUdTdXJmYWNlVGV4dHVyZSAqZ3N0X2FnX3N1cmZhY2V0ZXh0dXJlX25ldyAoZ2ludCB0ZXh0dXJlX2lkKTsKK3ZvaWQgZ3N0X2FnX3N1cmZhY2V0ZXh0dXJlX3JlbGVhc2UgKEdzdEFHU3VyZmFjZVRleHR1cmUgKnNlbGYpOwordm9pZCBnc3RfYWdfc3VyZmFjZXRleHR1cmVfZnJlZSAoR3N0QUdTdXJmYWNlVGV4dHVyZSAqc2VsZik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9BTkRST0lEX0dSQVBISUNTX1NVUkZBQ0VURVhUVVJFX0hfXyAqLworCmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDY2MDMzCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYwpAQCAtMCwwICsxLDM4ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENpc2NvIFN5c3RlbXMsIEluYy4KKyAqICAgQXV0aG9yOiBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwgQ29sbGFib3JhIEx0ZC4KKyAqICAgQXV0aG9yOiBKdXN0aW4gS2ltIDxqdXN0aW4ua2ltQGNvbGxhYm9yYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQorICoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3Rqbml1dGlscy5oIgorCisjaW5jbHVkZSAiZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmgiCisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGFoY19kZWJ1Zyk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBhaGNfZGVidWcKKworI2RlZmluZSBHU1RfRFZNX1NUQVRJQ19DQUxMKGVycm9yX3N0YXRlbWVudCwgdHlwZSwgaywgbWV0aG9kLCAuLi4pICAgICAgXAorICAoKmVudiktPkNhbGxTdGF0aWMjI3R5cGUjI01ldGhvZCAoZW52LCBrLmtsYXNzLCBrLm1ldGhvZCwgIyMgX19WQV9BUkdTX18pOyBcCisgIGlmICgoKmVudiktPkV4Y2VwdGlvbkNoZWNrIChlbnYpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGNhbGwgSmF2YSBtZXRob2QiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCplbnYpLT5FeGNlcHRpb25EZXNjcmliZSAoZW52KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZXJyb3Jfc3RhdGVtZW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworI2RlZmluZSBHU1RfRFZNX0NBTEwoZXJyb3Jfc3RhdGVtZW50LCBvYmosIHR5cGUsIGssIG1ldGhvZCwgLi4uKSAgICAgICAgXAorICAoKmVudiktPkNhbGwjI3R5cGUjI01ldGhvZCAoZW52LCBvYmosIGsubWV0aG9kLCAjIyBfX1ZBX0FSR1NfXyk7ICAgICAgXAorICBpZiAoKCplbnYpLT5FeGNlcHRpb25DaGVjayAoZW52KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBjYWxsIEphdmEgbWV0aG9kIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgqZW52KS0+RXhjZXB0aW9uRGVzY3JpYmUgKGVudik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgqZW52KS0+RXhjZXB0aW9uQ2xlYXIgKGVudik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVycm9yX3N0YXRlbWVudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKworCitzdGF0aWMgc3RydWN0Cit7CisgIGpjbGFzcyBrbGFzczsKKyAgam1ldGhvZElEIGFkZENhbGxiYWNrQnVmZmVyOworICBqbWV0aG9kSUQgYXV0b0ZvY3VzOworICBqbWV0aG9kSUQgY2FuY2VsQXV0b0ZvY3VzOworICBqbWV0aG9kSUQgZ2V0Q2FtZXJhSW5mbzsKKyAgam1ldGhvZElEIGdldE51bWJlck9mQ2FtZXJhczsKKyAgam1ldGhvZElEIGdldFBhcmFtZXRlcnM7CisgIGptZXRob2RJRCBsb2NrOworICBqbWV0aG9kSUQgb3BlbjsKKyAgam1ldGhvZElEIHJlY29ubmVjdDsKKyAgam1ldGhvZElEIHJlbGVhc2U7CisgIGptZXRob2RJRCBzZXRFcnJvckNhbGxiYWNrOworICBqbWV0aG9kSUQgc2V0UGFyYW1ldGVyczsKKyAgam1ldGhvZElEIHNldFByZXZpZXdDYWxsYmFja1dpdGhCdWZmZXI7CisgIGptZXRob2RJRCBzZXRQcmV2aWV3VGV4dHVyZTsKKyAgam1ldGhvZElEIHN0YXJ0UHJldmlldzsKKyAgam1ldGhvZElEIHN0YXJ0U21vb3RoWm9vbTsKKyAgam1ldGhvZElEIHN0b3BQcmV2aWV3OworICBqbWV0aG9kSUQgc3RvcFNtb290aFpvb207CisgIGptZXRob2RJRCB1bmxvY2s7Cit9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhID0geworMH07CisKK3N0YXRpYyBzdHJ1Y3QKK3sKKyAgamNsYXNzIGtsYXNzOworICBqbWV0aG9kSUQgY29uc3RydWN0b3I7CisgIGpmaWVsZElEIGZhY2luZzsKKyAgamZpZWxkSUQgb3JpZW50YXRpb247CisgIGppbnQgQ0FNRVJBX0ZBQ0lOR19CQUNLOworICBqaW50IENBTUVSQV9GQUNJTkdfRlJPTlQ7Cit9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2NhbWVyYWluZm8gPSB7CiswfTsKKworZ2ludCBDYW1lcmFJbmZvX0NBTUVSQV9GQUNJTkdfQkFDSzsKK2dpbnQgQ2FtZXJhSW5mb19DQU1FUkFfRkFDSU5HX0ZST05UOworCitzdGF0aWMgc3RydWN0Cit7CisgIGpjbGFzcyBrbGFzczsKKyAgamZpZWxkSUQgd2lkdGg7CisgIGpmaWVsZElEIGhlaWdodDsKK30gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfc2l6ZSA9IHsKKzB9OworCitzdGF0aWMgc3RydWN0Cit7CisgIGpjbGFzcyBrbGFzczsKKyAgam1ldGhvZElEIGZsYXR0ZW47CisgIGptZXRob2RJRCBnZXRBbnRpYmFuZGluZzsKKyAgam1ldGhvZElEIGdldENvbG9yRWZmZWN0OworICBqbWV0aG9kSUQgZ2V0RXhwb3N1cmVDb21wZW5zYXRpb247CisgIGptZXRob2RJRCBnZXRFeHBvc3VyZUNvbXBlbnNhdGlvblN0ZXA7CisgIGptZXRob2RJRCBnZXRGbGFzaE1vZGU7CisgIGptZXRob2RJRCBnZXRGb2NhbExlbmd0aDsKKyAgam1ldGhvZElEIGdldEZvY3VzTW9kZTsKKyAgam1ldGhvZElEIGdldEhvcml6b250YWxWaWV3QW5nbGU7CisgIGptZXRob2RJRCBnZXRNYXhFeHBvc3VyZUNvbXBlbnNhdGlvbjsKKyAgam1ldGhvZElEIGdldE1heFpvb207CisgIGptZXRob2RJRCBnZXRNaW5FeHBvc3VyZUNvbXBlbnNhdGlvbjsKKyAgam1ldGhvZElEIGdldFByZXZpZXdGb3JtYXQ7CisgIGptZXRob2RJRCBnZXRQcmV2aWV3RnBzUmFuZ2U7CisgIGptZXRob2RJRCBnZXRQcmV2aWV3U2l6ZTsKKyAgam1ldGhvZElEIGdldFNjZW5lTW9kZTsKKyAgam1ldGhvZElEIGdldFN1cHBvcnRlZEFudGliYW5kaW5nOworICBqbWV0aG9kSUQgZ2V0U3VwcG9ydGVkQ29sb3JFZmZlY3RzOworICBqbWV0aG9kSUQgZ2V0U3VwcG9ydGVkRmxhc2hNb2RlczsKKyAgam1ldGhvZElEIGdldFN1cHBvcnRlZEZvY3VzTW9kZXM7CisgIGptZXRob2RJRCBnZXRTdXBwb3J0ZWRQcmV2aWV3Rm9ybWF0czsKKyAgam1ldGhvZElEIGdldFN1cHBvcnRlZFByZXZpZXdGcHNSYW5nZTsKKyAgam1ldGhvZElEIGdldFN1cHBvcnRlZFByZXZpZXdTaXplczsKKyAgam1ldGhvZElEIGdldFN1cHBvcnRlZFNjZW5lTW9kZXM7CisgIGptZXRob2RJRCBnZXRTdXBwb3J0ZWRXaGl0ZUJhbGFuY2U7CisgIGptZXRob2RJRCBnZXRWZXJ0aWNhbFZpZXdBbmdsZTsKKyAgam1ldGhvZElEIGdldFZpZGVvU3RhYmlsaXphdGlvbjsKKyAgam1ldGhvZElEIGdldFdoaXRlQmFsYW5jZTsKKyAgam1ldGhvZElEIGdldFpvb207CisgIGptZXRob2RJRCBnZXRab29tUmF0aW9zOworICBqbWV0aG9kSUQgaXNTbW9vdGhab29tU3VwcG9ydGVkOworICBqbWV0aG9kSUQgaXNWaWRlb1N0YWJpbGl6YXRpb25TdXBwb3J0ZWQ7CisgIGptZXRob2RJRCBpc1pvb21TdXBwb3J0ZWQ7CisgIGptZXRob2RJRCBzZXRBbnRpYmFuZGluZzsKKyAgam1ldGhvZElEIHNldENvbG9yRWZmZWN0OworICBqbWV0aG9kSUQgc2V0RXhwb3N1cmVDb21wZW5zYXRpb247CisgIGptZXRob2RJRCBzZXRGbGFzaE1vZGU7CisgIGptZXRob2RJRCBzZXRGb2N1c01vZGU7CisgIGptZXRob2RJRCBzZXRQcmV2aWV3Rm9ybWF0OworICBqbWV0aG9kSUQgc2V0UHJldmlld0Zwc1JhbmdlOworICBqbWV0aG9kSUQgc2V0UHJldmlld1NpemU7CisgIGptZXRob2RJRCBzZXRTY2VuZU1vZGU7CisgIGptZXRob2RJRCBzZXRWaWRlb1N0YWJpbGl6YXRpb247CisgIGptZXRob2RJRCBzZXRXaGl0ZUJhbGFuY2U7CisgIGptZXRob2RJRCBzZXRab29tOworICBqbWV0aG9kSUQgdW5mbGF0dGVuOworICBqc3RyaW5nIFdISVRFX0JBTEFOQ0VfQVVUTzsKKyAganN0cmluZyBXSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVDsKKyAganN0cmluZyBXSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UOworICBqc3RyaW5nIFdISVRFX0JBTEFOQ0VfV0FSTV9GTFVPUkVTQ0VOVDsKKyAganN0cmluZyBXSElURV9CQUxBTkNFX0RBWUxJR0hUOworICBqc3RyaW5nIFdISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUOworICBqc3RyaW5nIFdISVRFX0JBTEFOQ0VfVFdJTElHSFQ7CisgIGpzdHJpbmcgV0hJVEVfQkFMQU5DRV9TSEFERTsKKyAganN0cmluZyBFRkZFQ1RfTk9ORTsKKyAganN0cmluZyBFRkZFQ1RfTU9OTzsKKyAganN0cmluZyBFRkZFQ1RfTkVHQVRJVkU7CisgIGpzdHJpbmcgRUZGRUNUX1NPTEFSSVpFOworICBqc3RyaW5nIEVGRkVDVF9TRVBJQTsKKyAganN0cmluZyBFRkZFQ1RfUE9TVEVSSVpFOworICBqc3RyaW5nIEVGRkVDVF9XSElURUJPQVJEOworICBqc3RyaW5nIEVGRkVDVF9CTEFDS0JPQVJEOworICBqc3RyaW5nIEVGRkVDVF9BUVVBOworICBqc3RyaW5nIEFOVElCQU5ESU5HX0FVVE87CisgIGpzdHJpbmcgQU5USUJBTkRJTkdfNTBIWjsKKyAganN0cmluZyBBTlRJQkFORElOR182MEhaOworICBqc3RyaW5nIEFOVElCQU5ESU5HX09GRjsKKyAganN0cmluZyBGTEFTSF9NT0RFX09GRjsKKyAganN0cmluZyBGTEFTSF9NT0RFX0FVVE87CisgIGpzdHJpbmcgRkxBU0hfTU9ERV9PTjsKKyAganN0cmluZyBGTEFTSF9NT0RFX1JFRF9FWUU7CisgIGpzdHJpbmcgRkxBU0hfTU9ERV9UT1JDSDsKKyAganN0cmluZyBTQ0VORV9NT0RFX0FVVE87CisgIGpzdHJpbmcgU0NFTkVfTU9ERV9BQ1RJT047CisgIGpzdHJpbmcgU0NFTkVfTU9ERV9QT1JUUkFJVDsKKyAganN0cmluZyBTQ0VORV9NT0RFX0xBTkRTQ0FQRTsKKyAganN0cmluZyBTQ0VORV9NT0RFX05JR0hUOworICBqc3RyaW5nIFNDRU5FX01PREVfTklHSFRfUE9SVFJBSVQ7CisgIGpzdHJpbmcgU0NFTkVfTU9ERV9USEVBVFJFOworICBqc3RyaW5nIFNDRU5FX01PREVfQkVBQ0g7CisgIGpzdHJpbmcgU0NFTkVfTU9ERV9TTk9XOworICBqc3RyaW5nIFNDRU5FX01PREVfU1VOU0VUOworICBqc3RyaW5nIFNDRU5FX01PREVfU1RFQURZUEhPVE87CisgIGpzdHJpbmcgU0NFTkVfTU9ERV9GSVJFV09SS1M7CisgIGpzdHJpbmcgU0NFTkVfTU9ERV9TUE9SVFM7CisgIGpzdHJpbmcgU0NFTkVfTU9ERV9QQVJUWTsKKyAganN0cmluZyBTQ0VORV9NT0RFX0NBTkRMRUxJR0hUOworICBqc3RyaW5nIFNDRU5FX01PREVfQkFSQ09ERTsKKyAganN0cmluZyBGT0NVU19NT0RFX0FVVE87CisgIGpzdHJpbmcgRk9DVVNfTU9ERV9JTkZJTklUWTsKKyAganN0cmluZyBGT0NVU19NT0RFX01BQ1JPOworICBqc3RyaW5nIEZPQ1VTX01PREVfRklYRUQ7CisgIGpzdHJpbmcgRk9DVVNfTU9ERV9FRE9GOworICBqc3RyaW5nIEZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTzsKKyAganN0cmluZyBGT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRTsKK30gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycyA9IHsKKzB9OworCitjb25zdCBnY2hhciAqUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0FVVE87Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVDsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfRkxVT1JFU0NFTlQ7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQ7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0RBWUxJR0hUOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQ7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1RXSUxJR0hUOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9TSEFERTsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0VGRkVDVF9OT05FOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRUZGRUNUX01PTk87Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19FRkZFQ1RfTkVHQVRJVkU7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19FRkZFQ1RfU09MQVJJWkU7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19FRkZFQ1RfU0VQSUE7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19FRkZFQ1RfUE9TVEVSSVpFOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRUZGRUNUX1dISVRFQk9BUkQ7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19FRkZFQ1RfQkxBQ0tCT0FSRDsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0VGRkVDVF9BUVVBOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfQU5USUJBTkRJTkdfQVVUTzsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzUwSFo7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19BTlRJQkFORElOR182MEhaOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfQU5USUJBTkRJTkdfT0ZGOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PRkY7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GTEFTSF9NT0RFX0FVVE87Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GTEFTSF9NT0RFX09OOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRkxBU0hfTU9ERV9SRURfRVlFOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRkxBU0hfTU9ERV9UT1JDSDsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfQVVUTzsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfQUNUSU9OOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QT1JUUkFJVDsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfTEFORFNDQVBFOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVDsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFRfUE9SVFJBSVQ7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX1RIRUFUUkU7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JFQUNIOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TTk9XOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TVU5TRVQ7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NURUFEWVBIT1RPOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9GSVJFV09SS1M7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NQT1JUUzsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfUEFSVFk7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX0NBTkRMRUxJR0hUOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CQVJDT0RFOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRk9DVVNfTU9ERV9BVVRPOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRk9DVVNfTU9ERV9JTkZJTklUWTsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfTUFDUk87Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GT0NVU19NT0RFX0ZJWEVEOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRk9DVVNfTU9ERV9FRE9GOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1ZJREVPOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkU7CisKK3N0YXRpYyBzdHJ1Y3QKK3sKKyAgamNsYXNzIGtsYXNzOworICBqbWV0aG9kSUQgaXRlcmF0b3I7Cit9IGphdmFfdXRpbF9saXN0ID0geworMH07CisKK3N0YXRpYyBzdHJ1Y3QKK3sKKyAgamNsYXNzIGtsYXNzOworICBqbWV0aG9kSUQgaGFzTmV4dDsKKyAgam1ldGhvZElEIG5leHQ7Cit9IGphdmFfdXRpbF9pdGVyYXRvciA9IHsKKzB9OworCitzdGF0aWMgc3RydWN0Cit7CisgIGpjbGFzcyBrbGFzczsKKyAgam1ldGhvZElEIGludFZhbHVlOworfSBqYXZhX2xhbmdfaW50ZWdlciA9IHsKKzB9OworCitzdGF0aWMgc3RydWN0Cit7CisgIGpjbGFzcyBrbGFzczsKKyAgam1ldGhvZElEIGVxdWFsczsKK30gamF2YV9sYW5nX3N0cmluZyA9IHsKKzB9OworCitzdGF0aWMgc3RydWN0Cit7CisgIGpjbGFzcyBrbGFzczsKKyAgam1ldGhvZElEIGNvbnN0cnVjdG9yOworfSBvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjayA9IHsKKzB9OworCitzdGF0aWMgdm9pZAorZ3N0X2FoX2NhbWVyYV9vbl9wcmV2aWV3X2ZyYW1lIChKTklFbnYgKiBlbnYsIGpjbGFzcyBrbGFzcywgamJ5dGVBcnJheSBkYXRhLAorICAgIGpvYmplY3QgY2FtZXJhLCBqbG9uZyBjYWxsYmFjaywgamxvbmcgdXNlcl9kYXRhKQoreworICBHc3RBSENQcmV2aWV3Q2FsbGJhY2sgY2IgPSAoR3N0QUhDUHJldmlld0NhbGxiYWNrKSAoZ3NpemUpIGNhbGxiYWNrOworCisgIGlmIChjYikKKyAgICBjYiAoZGF0YSwgKGdwb2ludGVyKSAoZ3NpemUpIHVzZXJfZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYWhfY2FtZXJhX29uX2Vycm9yIChKTklFbnYgKiBlbnYsIGpjbGFzcyBrbGFzcywgamludCBlcnJvciwKKyAgICBqb2JqZWN0IGNhbWVyYSwgamxvbmcgY2FsbGJhY2ssIGpsb25nIHVzZXJfZGF0YSkKK3sKKyAgR3N0QUhDRXJyb3JDYWxsYmFjayBjYiA9IChHc3RBSENFcnJvckNhbGxiYWNrKSAoZ3NpemUpIGNhbGxiYWNrOworCisgIGlmIChjYikKKyAgICBjYiAoZXJyb3IsIChncG9pbnRlcikgKGdzaXplKSB1c2VyX2RhdGEpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FoX2NhbWVyYV9vbl9hdXRvX2ZvY3VzIChKTklFbnYgKiBlbnYsIGpjbGFzcyBrbGFzcywgamJvb2xlYW4gc3VjY2VzcywKKyAgICBqb2JqZWN0IGNhbWVyYSwgamxvbmcgY2FsbGJhY2ssIGpsb25nIHVzZXJfZGF0YSkKK3sKKyAgR3N0QUhDQXV0b0ZvY3VzQ2FsbGJhY2sgY2IgPSAoR3N0QUhDQXV0b0ZvY3VzQ2FsbGJhY2spIChnc2l6ZSkgY2FsbGJhY2s7CisKKyAgaWYgKGNiKQorICAgIGNiIChzdWNjZXNzLCAoZ3BvaW50ZXIpIChnc2l6ZSkgdXNlcl9kYXRhKTsKK30KKworc3RhdGljIEpOSU5hdGl2ZU1ldGhvZCBuYXRpdmVfbWV0aG9kc1tdID0geworICB7KGdjaGFyICopICJnc3RfYWhfY2FtZXJhX29uX3ByZXZpZXdfZnJhbWUiLAorICAgICAgICAoZ2NoYXIgKikgIihbQkxhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYTtKSilWIiwKKyAgICAgICh2b2lkICopIGdzdF9haF9jYW1lcmFfb25fcHJldmlld19mcmFtZX0sCisgIHsoZ2NoYXIgKikgImdzdF9haF9jYW1lcmFfb25fZXJyb3IiLAorICAgICAgICAoZ2NoYXIgKikgIihJTGFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhO0pKKVYiLAorICAgICAgKHZvaWQgKikgZ3N0X2FoX2NhbWVyYV9vbl9lcnJvcn0sCisvLyAgeyhnY2hhciAqKSAiZ3N0X2FoX2NhbWVyYV9vbl9hdXRvX2ZvY3VzIiwKKy8vICAgICAgICAoZ2NoYXIgKikgIihaTGFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhO0pKKVYiLAorLy8gICAgICAodm9pZCAqKSBnc3RfYWhfY2FtZXJhX29uX2F1dG9fZm9jdXN9Cit9OworCitzdGF0aWMgZ2Jvb2xlYW4KK19pbml0X2NsYXNzZXMgKHZvaWQpCit7CisgIEpOSUVudiAqZW52OworICBHRXJyb3IgKmVyciA9IE5VTEw7CisKKyAgamNsYXNzIGtsYXNzOworICBqZmllbGRJRCBmaWVsZElEOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgLyogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEgKi8KKyAga2xhc3MgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS5rbGFzcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfY2xhc3MgKGVudiwgJmVyciwgImFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhIik7CisgIGlmICgha2xhc3MpCisgICAgZ290byBmYWlsZWQ7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEuYWRkQ2FsbGJhY2tCdWZmZXIgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJhZGRDYWxsYmFja0J1ZmZlciIsICIoW0IpViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLmF1dG9Gb2N1cyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLAorICAgICAgImF1dG9Gb2N1cyIsICIoTGFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhJEF1dG9Gb2N1c0NhbGxiYWNrOylWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEuY2FuY2VsQXV0b0ZvY3VzID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJjYW5jZWxBdXRvRm9jdXMiLCAiKClWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEuZ2V0Q2FtZXJhSW5mbyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJnZXRDYW1lcmFJbmZvIiwgIihJTGFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhJENhbWVyYUluZm87KVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS5nZXROdW1iZXJPZkNhbWVyYXMgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiZ2V0TnVtYmVyT2ZDYW1lcmFzIiwgIigpSSIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLmdldFBhcmFtZXRlcnMgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJnZXRQYXJhbWV0ZXJzIiwgIigpTGFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhJFBhcmFtZXRlcnM7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEubG9jayA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAibG9jayIsICIoKVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS5vcGVuID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLAorICAgICAgIm9wZW4iLCAiKEkpTGFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhOyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLnJlY29ubmVjdCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAicmVjb25uZWN0IiwgIigpViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLnJlbGVhc2UgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInJlbGVhc2UiLCAiKClWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEuc2V0RXJyb3JDYWxsYmFjayA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAic2V0RXJyb3JDYWxsYmFjayIsCisgICAgICAiKExhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSRFcnJvckNhbGxiYWNrOylWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEuc2V0UGFyYW1ldGVycyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAic2V0UGFyYW1ldGVycyIsCisgICAgICAiKExhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSRQYXJhbWV0ZXJzOylWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEuc2V0UHJldmlld0NhbGxiYWNrV2l0aEJ1ZmZlciA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLAorICAgICAgInNldFByZXZpZXdDYWxsYmFja1dpdGhCdWZmZXIiLAorICAgICAgIihMYW5kcm9pZC9oYXJkd2FyZS9DYW1lcmEkUHJldmlld0NhbGxiYWNrOylWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEuc2V0UHJldmlld1RleHR1cmUgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJzZXRQcmV2aWV3VGV4dHVyZSIsICIoTGFuZHJvaWQvZ3JhcGhpY3MvU3VyZmFjZVRleHR1cmU7KVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS5zdGFydFByZXZpZXcgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInN0YXJ0UHJldmlldyIsICIoKVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS5zdGFydFNtb290aFpvb20gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInN0YXJ0U21vb3RoWm9vbSIsICIoSSlWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEuc3RvcFByZXZpZXcgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInN0b3BQcmV2aWV3IiwgIigpViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLnN0b3BQcmV2aWV3ID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzdG9wUHJldmlldyIsICIoKVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS51bmxvY2sgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInVubG9jayIsICIoKVYiKTsKKworICAvKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5DYW1lcmFJbmZvICovCisgIGtsYXNzID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfY2FtZXJhaW5mby5rbGFzcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfY2xhc3MgKGVudiwgJmVyciwgImFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhJENhbWVyYUluZm8iKTsKKyAgaWYgKCFrbGFzcykKKyAgICBnb3RvIGZhaWxlZDsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9jYW1lcmFpbmZvLmNvbnN0cnVjdG9yID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICI8aW5pdD4iLCAiKClWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfY2FtZXJhaW5mby5mYWNpbmcgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZmFjaW5nIiwgIkkiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9jYW1lcmFpbmZvLm9yaWVudGF0aW9uID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIm9yaWVudGF0aW9uIiwgIkkiKTsKKworCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkNBTUVSQV9GQUNJTkdfQkFDSyIsCisgICAgICAiSSIpOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfaW50X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9jYW1lcmFpbmZvLkNBTUVSQV9GQUNJTkdfQkFDSykpCisgICAgZ290byBmYWlsZWQ7CisgIENhbWVyYUluZm9fQ0FNRVJBX0ZBQ0lOR19CQUNLID0KKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2NhbWVyYWluZm8uQ0FNRVJBX0ZBQ0lOR19CQUNLOworCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkNBTUVSQV9GQUNJTkdfRlJPTlQiLAorICAgICAgIkkiKTsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ludF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfY2FtZXJhaW5mby5DQU1FUkFfRkFDSU5HX0ZST05UKSkKKyAgICBnb3RvIGZhaWxlZDsKKyAgQ2FtZXJhSW5mb19DQU1FUkFfRkFDSU5HX0ZST05UID0KKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2NhbWVyYWluZm8uQ0FNRVJBX0ZBQ0lOR19GUk9OVDsKKworICAvKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5TaXplICovCisgIGtsYXNzID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfc2l6ZS5rbGFzcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfY2xhc3MgKGVudiwgJmVyciwgImFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhJFNpemUiKTsKKyAgaWYgKCFrbGFzcykKKyAgICBnb3RvIGZhaWxlZDsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9zaXplLndpZHRoID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIndpZHRoIiwgIkkiKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfc2l6ZS5oZWlnaHQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiaGVpZ2h0IiwgIkkiKTsKKworICAvKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5QYXJhbWV0ZXJzICovCisgIGtsYXNzID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5rbGFzcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfY2xhc3MgKGVudiwgJmVyciwgImFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhJFBhcmFtZXRlcnMiKTsKKyAgaWYgKCFrbGFzcykKKyAgICBnb3RvIGZhaWxlZDsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmZsYXR0ZW4gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImZsYXR0ZW4iLAorICAgICAgIigpTGphdmEvbGFuZy9TdHJpbmc7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRBbnRpYmFuZGluZyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0QW50aWJhbmRpbmciLAorICAgICAgIigpTGphdmEvbGFuZy9TdHJpbmc7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRDb2xvckVmZmVjdCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0Q29sb3JFZmZlY3QiLAorICAgICAgIigpTGphdmEvbGFuZy9TdHJpbmc7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRFeHBvc3VyZUNvbXBlbnNhdGlvbiA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0RXhwb3N1cmVDb21wZW5zYXRpb24iLAorICAgICAgIigpSSIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0RXhwb3N1cmVDb21wZW5zYXRpb25TdGVwID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiZ2V0RXhwb3N1cmVDb21wZW5zYXRpb25TdGVwIiwgIigpRiIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0Rmxhc2hNb2RlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRGbGFzaE1vZGUiLAorICAgICAgIigpTGphdmEvbGFuZy9TdHJpbmc7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRGb2NhbExlbmd0aCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0Rm9jYWxMZW5ndGgiLCAiKClGIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRGb2N1c01vZGUgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldEZvY3VzTW9kZSIsCisgICAgICAiKClMamF2YS9sYW5nL1N0cmluZzsiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldEhvcml6b250YWxWaWV3QW5nbGUgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldEhvcml6b250YWxWaWV3QW5nbGUiLAorICAgICAgIigpRiIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0TWF4RXhwb3N1cmVDb21wZW5zYXRpb24gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldE1heEV4cG9zdXJlQ29tcGVuc2F0aW9uIiwKKyAgICAgICIoKUkiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldE1heFpvb20gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldE1heFpvb20iLCAiKClJIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRNaW5FeHBvc3VyZUNvbXBlbnNhdGlvbiA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0TWluRXhwb3N1cmVDb21wZW5zYXRpb24iLAorICAgICAgIigpSSIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0UHJldmlld0Zvcm1hdCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0UHJldmlld0Zvcm1hdCIsICIoKUkiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldFByZXZpZXdGcHNSYW5nZSA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0UHJldmlld0Zwc1JhbmdlIiwKKyAgICAgICIoW0kpViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0UHJldmlld1NpemUgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldFByZXZpZXdTaXplIiwKKyAgICAgICIoKUxhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSRTaXplOyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0U2NlbmVNb2RlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRTY2VuZU1vZGUiLAorICAgICAgIigpTGphdmEvbGFuZy9TdHJpbmc7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRTdXBwb3J0ZWRBbnRpYmFuZGluZyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0U3VwcG9ydGVkQW50aWJhbmRpbmciLAorICAgICAgIigpTGphdmEvdXRpbC9MaXN0OyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0U3VwcG9ydGVkQ29sb3JFZmZlY3RzID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRTdXBwb3J0ZWRDb2xvckVmZmVjdHMiLAorICAgICAgIigpTGphdmEvdXRpbC9MaXN0OyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0U3VwcG9ydGVkRmxhc2hNb2RlcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0U3VwcG9ydGVkRmxhc2hNb2RlcyIsCisgICAgICAiKClMamF2YS91dGlsL0xpc3Q7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRTdXBwb3J0ZWRGb2N1c01vZGVzID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRTdXBwb3J0ZWRGb2N1c01vZGVzIiwKKyAgICAgICIoKUxqYXZhL3V0aWwvTGlzdDsiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldFN1cHBvcnRlZFByZXZpZXdGb3JtYXRzID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRTdXBwb3J0ZWRQcmV2aWV3Rm9ybWF0cyIsCisgICAgICAiKClMamF2YS91dGlsL0xpc3Q7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRTdXBwb3J0ZWRQcmV2aWV3RnBzUmFuZ2UgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJnZXRTdXBwb3J0ZWRQcmV2aWV3RnBzUmFuZ2UiLCAiKClMamF2YS91dGlsL0xpc3Q7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRTdXBwb3J0ZWRQcmV2aWV3U2l6ZXMgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldFN1cHBvcnRlZFByZXZpZXdTaXplcyIsCisgICAgICAiKClMamF2YS91dGlsL0xpc3Q7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRTdXBwb3J0ZWRTY2VuZU1vZGVzID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRTdXBwb3J0ZWRTY2VuZU1vZGVzIiwKKyAgICAgICIoKUxqYXZhL3V0aWwvTGlzdDsiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldFN1cHBvcnRlZFdoaXRlQmFsYW5jZSA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0U3VwcG9ydGVkV2hpdGVCYWxhbmNlIiwKKyAgICAgICIoKUxqYXZhL3V0aWwvTGlzdDsiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldFZlcnRpY2FsVmlld0FuZ2xlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRWZXJ0aWNhbFZpZXdBbmdsZSIsCisgICAgICAiKClGIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRWaWRlb1N0YWJpbGl6YXRpb24gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldFZpZGVvU3RhYmlsaXphdGlvbiIsCisgICAgICAiKClaIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRXaGl0ZUJhbGFuY2UgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldFdoaXRlQmFsYW5jZSIsCisgICAgICAiKClMamF2YS9sYW5nL1N0cmluZzsiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldFpvb20gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldFpvb20iLCAiKClJIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRab29tUmF0aW9zID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRab29tUmF0aW9zIiwKKyAgICAgICIoKUxqYXZhL3V0aWwvTGlzdDsiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmlzU21vb3RoWm9vbVN1cHBvcnRlZCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiaXNTbW9vdGhab29tU3VwcG9ydGVkIiwKKyAgICAgICIoKVoiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmlzVmlkZW9TdGFiaWxpemF0aW9uU3VwcG9ydGVkID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiaXNWaWRlb1N0YWJpbGl6YXRpb25TdXBwb3J0ZWQiLCAiKClaIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5pc1pvb21TdXBwb3J0ZWQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImlzWm9vbVN1cHBvcnRlZCIsICIoKVoiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLnNldEFudGliYW5kaW5nID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzZXRBbnRpYmFuZGluZyIsCisgICAgICAiKExqYXZhL2xhbmcvU3RyaW5nOylWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5zZXRDb2xvckVmZmVjdCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAic2V0Q29sb3JFZmZlY3QiLAorICAgICAgIihMamF2YS9sYW5nL1N0cmluZzspViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuc2V0RXhwb3N1cmVDb21wZW5zYXRpb24gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInNldEV4cG9zdXJlQ29tcGVuc2F0aW9uIiwKKyAgICAgICIoSSlWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5zZXRGbGFzaE1vZGUgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInNldEZsYXNoTW9kZSIsCisgICAgICAiKExqYXZhL2xhbmcvU3RyaW5nOylWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5zZXRGb2N1c01vZGUgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInNldEZvY3VzTW9kZSIsCisgICAgICAiKExqYXZhL2xhbmcvU3RyaW5nOylWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5zZXRQcmV2aWV3Rm9ybWF0ID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzZXRQcmV2aWV3Rm9ybWF0IiwgIihJKVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLnNldFByZXZpZXdGcHNSYW5nZSA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAic2V0UHJldmlld0Zwc1JhbmdlIiwKKyAgICAgICIoSUkpViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuc2V0UHJldmlld1NpemUgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInNldFByZXZpZXdTaXplIiwgIihJSSlWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5zZXRTY2VuZU1vZGUgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInNldFNjZW5lTW9kZSIsCisgICAgICAiKExqYXZhL2xhbmcvU3RyaW5nOylWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5zZXRXaGl0ZUJhbGFuY2UgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInNldFdoaXRlQmFsYW5jZSIsCisgICAgICAiKExqYXZhL2xhbmcvU3RyaW5nOylWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5zZXRWaWRlb1N0YWJpbGl6YXRpb24gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInNldFZpZGVvU3RhYmlsaXphdGlvbiIsCisgICAgICAiKFopViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuc2V0Wm9vbSA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAic2V0Wm9vbSIsICIoSSlWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy51bmZsYXR0ZW4gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInVuZmxhdHRlbiIsCisgICAgICAiKExqYXZhL2xhbmcvU3RyaW5nOylWIik7CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiV0hJVEVfQkFMQU5DRV9BVVRPIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQVVUTykpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0FVVE8gPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0FVVE8sIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9BVVRPOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0FVVE8gPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQiLCAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVCkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVCA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5ULCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPQorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVCA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJXSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UIiwgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0KKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLAorICAgICAgIldISVRFX0JBTEFOQ0VfV0FSTV9GTFVPUkVTQ0VOVCIsICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfV0FSTV9GTFVPUkVTQ0VOVCkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9CisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiV0hJVEVfQkFMQU5DRV9EQVlMSUdIVCIsICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfREFZTElHSFQpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9EQVlMSUdIVCA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfREFZTElHSFQsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9EQVlMSUdIVDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9EQVlMSUdIVCA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJXSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVCIsICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUKSkKKyAgICBnb3RvIGZhaWxlZDsKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVCA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hULCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPQorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVCA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJXSElURV9CQUxBTkNFX1RXSUxJR0hUIiwgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9UV0lMSUdIVCkpCisgICAgZ290byBmYWlsZWQ7CisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9UV0lMSUdIVCA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfVFdJTElHSFQsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9UV0lMSUdIVDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9UV0lMSUdIVCA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIldISVRFX0JBTEFOQ0VfU0hBREUiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9TSEFERSkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1NIQURFID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9TSEFERSwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1NIQURFOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1NIQURFID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiRUZGRUNUX05PTkUiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX05PTkUpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRUZGRUNUX05PTkUgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTk9ORSwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTk9ORTsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX05PTkUgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJFRkZFQ1RfTU9OTyIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTU9OTykpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19FRkZFQ1RfTU9OTyA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9NT05PLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9NT05POworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTU9OTyA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkVGRkVDVF9ORUdBVElWRSIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTkVHQVRJVkUpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRUZGRUNUX05FR0FUSVZFID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX05FR0FUSVZFLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9ORUdBVElWRTsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX05FR0FUSVZFID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiRUZGRUNUX1NPTEFSSVpFIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9TT0xBUklaRSkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19FRkZFQ1RfU09MQVJJWkUgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU09MQVJJWkUsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NPTEFSSVpFOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU09MQVJJWkUgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJFRkZFQ1RfU0VQSUEiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NFUElBKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0VGRkVDVF9TRVBJQSA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9TRVBJQSwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU0VQSUE7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9TRVBJQSA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkVGRkVDVF9QT1NURVJJWkUiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1BPU1RFUklaRSkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19FRkZFQ1RfUE9TVEVSSVpFID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1BPU1RFUklaRSwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfUE9TVEVSSVpFOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfUE9TVEVSSVpFID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiRUZGRUNUX1dISVRFQk9BUkQiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1dISVRFQk9BUkQpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRUZGRUNUX1dISVRFQk9BUkQgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfV0hJVEVCT0FSRCwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfV0hJVEVCT0FSRDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1dISVRFQk9BUkQgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJFRkZFQ1RfQkxBQ0tCT0FSRCIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQkxBQ0tCT0FSRCkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19FRkZFQ1RfQkxBQ0tCT0FSRCA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9CTEFDS0JPQVJELCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9CTEFDS0JPQVJEOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQkxBQ0tCT0FSRCA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkVGRkVDVF9BUVVBIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9BUVVBKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0VGRkVDVF9BUVVBID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX0FRVUEsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX0FRVUE7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9BUVVBID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiQU5USUJBTkRJTkdfQVVUTyIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19BVVRPKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX0FVVE8gPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19BVVRPLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX0FVVE87CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX0FVVE8gPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJBTlRJQkFORElOR181MEhaIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzUwSFopKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfQU5USUJBTkRJTkdfNTBIWiA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzUwSFosIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNTBIWjsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNTBIWiA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkFOVElCQU5ESU5HXzYwSFoiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNjBIWikpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19BTlRJQkFORElOR182MEhaID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNjBIWiwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR182MEhaOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR182MEhaID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiQU5USUJBTkRJTkdfT0ZGIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX09GRikpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19BTlRJQkFORElOR19PRkYgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19PRkYsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfT0ZGOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19PRkYgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJGTEFTSF9NT0RFX09GRiIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09GRikpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19GTEFTSF9NT0RFX09GRiA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfT0ZGLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfT0ZGOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09GRiA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkZMQVNIX01PREVfQVVUTyIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX0FVVE8pKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9BVVRPID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9BVVRPLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfQVVUTzsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9BVVRPID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiRkxBU0hfTU9ERV9PTiIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09OKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT04gPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09OLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfT047CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfT04gPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJGTEFTSF9NT0RFX1JFRF9FWUUiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9SRURfRVlFKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfUkVEX0VZRSA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfUkVEX0VZRSwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX1JFRF9FWUU7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfUkVEX0VZRSA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkZMQVNIX01PREVfVE9SQ0giLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9UT1JDSCkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19GTEFTSF9NT0RFX1RPUkNIID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9UT1JDSCwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX1RPUkNIOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX1RPUkNIID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiU0NFTkVfTU9ERV9BVVRPIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQVVUTykpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FVVE8gPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FVVE8sIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BVVRPOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FVVE8gPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJTQ0VORV9NT0RFX0FDVElPTiIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FDVElPTikpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FDVElPTiA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQUNUSU9OLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQUNUSU9OOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FDVElPTiA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIlNDRU5FX01PREVfUE9SVFJBSVQiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QT1JUUkFJVCkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BPUlRSQUlUID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QT1JUUkFJVCwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1BPUlRSQUlUOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1BPUlRSQUlUID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiU0NFTkVfTU9ERV9MQU5EU0NBUEUiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9MQU5EU0NBUEUpKQorICAgIGdvdG8gZmFpbGVkOworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTEFORFNDQVBFID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9MQU5EU0NBUEUsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9MQU5EU0NBUEU7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTEFORFNDQVBFID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiU0NFTkVfTU9ERV9OSUdIVCIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFQgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hULCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTklHSFQ7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTklHSFQgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVCIsICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTklHSFRfUE9SVFJBSVQpKQorICAgIGdvdG8gZmFpbGVkOworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFRfUE9SVFJBSVQgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlULCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPQorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTklHSFRfUE9SVFJBSVQ7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTklHSFRfUE9SVFJBSVQgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiU0NFTkVfTU9ERV9USEVBVFJFIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfVEhFQVRSRSkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1RIRUFUUkUgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1RIRUFUUkUsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9USEVBVFJFOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1RIRUFUUkUgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJTQ0VORV9NT0RFX0JFQUNIIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkVBQ0gpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CRUFDSCA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkVBQ0gsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9CRUFDSDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9CRUFDSCA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIlNDRU5FX01PREVfU05PVyIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NOT1cpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TTk9XID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TTk9XLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU05PVzsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TTk9XID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiU0NFTkVfTU9ERV9TVU5TRVQiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TVU5TRVQpKQorICAgIGdvdG8gZmFpbGVkOworCisKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NVTlNFVCA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1VOU0VULCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1VOU0VUOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NVTlNFVCA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJTQ0VORV9NT0RFX1NURUFEWVBIT1RPIiwgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TVEVBRFlQSE9UTykpCisgICAgZ290byBmYWlsZWQ7CisKKworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1RFQURZUEhPVE8gPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NURUFEWVBIT1RPLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1RFQURZUEhPVE87CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1RFQURZUEhPVE8gPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJTQ0VORV9NT0RFX0ZJUkVXT1JLUyIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0ZJUkVXT1JLUykpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0ZJUkVXT1JLUyA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfRklSRVdPUktTLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfRklSRVdPUktTOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0ZJUkVXT1JLUyA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIlNDRU5FX01PREVfU1BPUlRTIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1BPUlRTKSkKKyAgICBnb3RvIGZhaWxlZDsKKworCisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TUE9SVFMgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NQT1JUUywgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NQT1JUUzsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TUE9SVFMgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJTQ0VORV9NT0RFX1BBUlRZIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUEFSVFkpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QQVJUWSA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUEFSVFksIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QQVJUWTsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QQVJUWSA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJTQ0VORV9NT0RFX0NBTkRMRUxJR0hUIiwgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9DQU5ETEVMSUdIVCkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0NBTkRMRUxJR0hUID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9DQU5ETEVMSUdIVCwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0NBTkRMRUxJR0hUOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0NBTkRMRUxJR0hUID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJTQ0VORV9NT0RFX0JBUkNPREUiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9CQVJDT0RFKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkFSQ09ERSA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkFSQ09ERSwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0JBUkNPREU7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkFSQ09ERSA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkZPQ1VTX01PREVfQVVUTyIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0FVVE8pKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9BVVRPID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9BVVRPLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQVVUTzsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9BVVRPID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiRk9DVVNfTU9ERV9JTkZJTklUWSIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0lORklOSVRZKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfSU5GSU5JVFkgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0lORklOSVRZLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfSU5GSU5JVFk7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfSU5GSU5JVFkgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJGT0NVU19NT0RFX01BQ1JPIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfTUFDUk8pKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9NQUNSTyA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfTUFDUk8sIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9NQUNSTzsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9NQUNSTyA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkZPQ1VTX01PREVfRklYRUQiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9GSVhFRCkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0ZJWEVEID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9GSVhFRCwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0ZJWEVEOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0ZJWEVEID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiRk9DVVNfTU9ERV9FRE9GIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfRURPRikpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0VET0YgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0VET0YsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9FRE9GOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0VET0YgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiRk9DVVNfTU9ERV9DT05USU5VT1VTX1ZJREVPIiwgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9DT05USU5VT1VTX1ZJREVPKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTyA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTywgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0KKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU87CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTyA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJGT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRSIsICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQ09OVElOVU9VU19QSUNUVVJFKSkKKyAgICBnb3RvIGZhaWxlZDsKKworCisgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkUgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRSwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0KKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRTsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkUgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICAvKiBqYXZhLmxhbmcuU3RyaW5nICovCisgIGtsYXNzID0gamF2YV9sYW5nX3N0cmluZy5rbGFzcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfY2xhc3MgKGVudiwgJmVyciwgImphdmEvbGFuZy9TdHJpbmciKTsKKyAgamF2YV9sYW5nX3N0cmluZy5lcXVhbHMgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImVxdWFscyIsCisgICAgICAiKExqYXZhL2xhbmcvT2JqZWN0OylaIik7CisKKyAgLyogamF2YS51dGlsLkxpc3QgKi8KKyAga2xhc3MgPSBqYXZhX3V0aWxfbGlzdC5rbGFzcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfY2xhc3MgKGVudiwgJmVyciwgImphdmEvdXRpbC9MaXN0Iik7CisgIGphdmFfdXRpbF9saXN0Lml0ZXJhdG9yID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJpdGVyYXRvciIsCisgICAgICAiKClMamF2YS91dGlsL0l0ZXJhdG9yOyIpOworCisgIC8qIGphdmEudXRpbC5JdGVyYXRvciAqLworICBrbGFzcyA9IGphdmFfdXRpbF9pdGVyYXRvci5rbGFzcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfY2xhc3MgKGVudiwgJmVyciwgImphdmEvdXRpbC9JdGVyYXRvciIpOworICBqYXZhX3V0aWxfaXRlcmF0b3IuaGFzTmV4dCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiaGFzTmV4dCIsICIoKVoiKTsKKyAgamF2YV91dGlsX2l0ZXJhdG9yLm5leHQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIm5leHQiLAorICAgICAgIigpTGphdmEvbGFuZy9PYmplY3Q7Iik7CisKKyAgLyogamF2YS5sYW5nLkludGVnZXIgKi8KKyAga2xhc3MgPSBqYXZhX2xhbmdfaW50ZWdlci5rbGFzcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfY2xhc3MgKGVudiwgJmVyciwgImphdmEvbGFuZy9JbnRlZ2VyIik7CisgIGphdmFfbGFuZ19pbnRlZ2VyLmludFZhbHVlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJpbnRWYWx1ZSIsICIoKUkiKTsKKworICBpZiAoIW9yZ19mcmVlZGVza3RvcF9nc3RyZWFtZXJfYW5kcm9pZG1lZGlhX2dzdGFoY2NhbGxiYWNrLmtsYXNzKSB7CisgICAgb3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2sua2xhc3MgPQorICAgICAgICBnc3RfYW1jX2puaV9nZXRfY2xhc3MgKGVudiwgJmVyciwKKyAgICAgICAgIm9yZy9mcmVlZGVza3RvcC9nc3RyZWFtZXIvYW5kcm9pZG1lZGlhL0dzdEFoY0NhbGxiYWNrIik7CisgIH0KKyAgaWYgKCFvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjay5rbGFzcykKKyAgICBnb3RvIGZhaWxlZDsKKworICBvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjay5jb25zdHJ1Y3RvciA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsCisgICAgICBvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjay5rbGFzcywgIjxpbml0PiIsCisgICAgICAiKEpKKVYiKTsKKworICBpZiAoKCplbnYpLT5SZWdpc3Rlck5hdGl2ZXMgKGVudiwKKyAgICAgICAgICBvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjay5rbGFzcywKKyAgICAgICAgICBuYXRpdmVfbWV0aG9kcywgR19OX0VMRU1FTlRTIChuYXRpdmVfbWV0aG9kcykpKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIHJlZ2lzdGVyIG5hdGl2ZSBtZXRob2RzIGZvciBHc3RBaGNDYWxsYmFjayIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHJldHVybiBUUlVFOworCitmYWlsZWQ6CisgIGlmIChlcnIpIHsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSBjbGFzc2VzOiAlcyIsCisgICAgICAgIGVyci0+bWVzc2FnZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CisgIH0KKworICByZXR1cm4gRkFMU0U7CisKK30KKworCitnYm9vbGVhbgorZ3N0X2FuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2luaXQgKHZvaWQpCit7CisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChhaGNfZGVidWcsICJhaGMiLCAwLAorICAgICAgIkFuZHJvaWQgR3N0cmVhbWVyIEhhcmR3YXJlIENhbWVyYSIpOworICBpZiAoIV9pbml0X2NsYXNzZXMgKCkpIHsKKyAgICBnc3RfYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfZGVpbml0ICgpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCit2b2lkCitnc3RfYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfZGVpbml0ICh2b2lkKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLmtsYXNzKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLmtsYXNzKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEua2xhc3MgPSBOVUxMOworCisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9jYW1lcmFpbmZvLmtsYXNzKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2NhbWVyYWluZm8ua2xhc3MpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9jYW1lcmFpbmZvLmtsYXNzID0gTlVMTDsKKworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfc2l6ZS5rbGFzcykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LCBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9zaXplLmtsYXNzKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfc2l6ZS5rbGFzcyA9IE5VTEw7CisKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMua2xhc3MpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5rbGFzcyk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMua2xhc3MgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0FVVE8pCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0FVVE8sCisgICAgICAgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9BVVRPKTsKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0FVVE8gPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0FVVE8pCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0FVVE8pOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQVVUTyA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQsCisgICAgICAgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQpOworICBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVCk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCwKKyAgICAgICAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UKTsKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfRkxVT1JFU0NFTlQpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfRkxVT1JFU0NFTlQgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQsCisgICAgICAgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UKTsKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfV0FSTV9GTFVPUkVTQ0VOVCA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfREFZTElHSFQpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0RBWUxJR0hULAorICAgICAgICBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfREFZTElHSFQpOworICBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfREFZTElHSFQgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0RBWUxJR0hUKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9EQVlMSUdIVCk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9EQVlMSUdIVCA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQsCisgICAgICAgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQpOworICBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVCk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1RXSUxJR0hUKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9UV0lMSUdIVCwKKyAgICAgICAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1RXSUxJR0hUKTsKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1RXSUxJR0hUID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9UV0lMSUdIVCkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfVFdJTElHSFQpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfVFdJTElHSFQgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1NIQURFKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9TSEFERSwKKyAgICAgICAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1NIQURFKTsKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1NIQURFID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9TSEFERSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfU0hBREUpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfU0hBREUgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19FRkZFQ1RfTk9ORSkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9OT05FLCBQYXJhbWV0ZXJzX0VGRkVDVF9OT05FKTsKKyAgUGFyYW1ldGVyc19FRkZFQ1RfTk9ORSA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9OT05FKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX05PTkUpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9OT05FID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRUZGRUNUX01PTk8pCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTU9OTywgUGFyYW1ldGVyc19FRkZFQ1RfTU9OTyk7CisgIFBhcmFtZXRlcnNfRUZGRUNUX01PTk8gPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTU9OTykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9NT05PKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTU9OTyA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0VGRkVDVF9ORUdBVElWRSkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9ORUdBVElWRSwKKyAgICAgICAgUGFyYW1ldGVyc19FRkZFQ1RfTkVHQVRJVkUpOworICBQYXJhbWV0ZXJzX0VGRkVDVF9ORUdBVElWRSA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9ORUdBVElWRSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9ORUdBVElWRSk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX05FR0FUSVZFID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRUZGRUNUX1NPTEFSSVpFKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NPTEFSSVpFLAorICAgICAgICBQYXJhbWV0ZXJzX0VGRkVDVF9TT0xBUklaRSk7CisgIFBhcmFtZXRlcnNfRUZGRUNUX1NPTEFSSVpFID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NPTEFSSVpFKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NPTEFSSVpFKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU09MQVJJWkUgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19FRkZFQ1RfU0VQSUEpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU0VQSUEsCisgICAgICAgIFBhcmFtZXRlcnNfRUZGRUNUX1NFUElBKTsKKyAgUGFyYW1ldGVyc19FRkZFQ1RfU0VQSUEgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU0VQSUEpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU0VQSUEpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9TRVBJQSA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0VGRkVDVF9QT1NURVJJWkUpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfUE9TVEVSSVpFLAorICAgICAgICBQYXJhbWV0ZXJzX0VGRkVDVF9QT1NURVJJWkUpOworICBQYXJhbWV0ZXJzX0VGRkVDVF9QT1NURVJJWkUgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfUE9TVEVSSVpFKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1BPU1RFUklaRSk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1BPU1RFUklaRSA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0VGRkVDVF9XSElURUJPQVJEKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1dISVRFQk9BUkQsCisgICAgICAgIFBhcmFtZXRlcnNfRUZGRUNUX1dISVRFQk9BUkQpOworICBQYXJhbWV0ZXJzX0VGRkVDVF9XSElURUJPQVJEID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1dISVRFQk9BUkQpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfV0hJVEVCT0FSRCk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1dISVRFQk9BUkQgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19FRkZFQ1RfQkxBQ0tCT0FSRCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9CTEFDS0JPQVJELAorICAgICAgICBQYXJhbWV0ZXJzX0VGRkVDVF9CTEFDS0JPQVJEKTsKKyAgUGFyYW1ldGVyc19FRkZFQ1RfQkxBQ0tCT0FSRCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9CTEFDS0JPQVJEKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX0JMQUNLQk9BUkQpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9CTEFDS0JPQVJEID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRUZGRUNUX0FRVUEpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQVFVQSwgUGFyYW1ldGVyc19FRkZFQ1RfQVFVQSk7CisgIFBhcmFtZXRlcnNfRUZGRUNUX0FRVUEgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQVFVQSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9BUVVBKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQVFVQSA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX0FVVE8pCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19BVVRPLAorICAgICAgICBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX0FVVE8pOworICBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX0FVVE8gPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19BVVRPKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfQVVUTyk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfQVVUTyA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzUwSFopCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR181MEhaLAorICAgICAgICBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzUwSFopOworICBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzUwSFogPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR181MEhaKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNTBIWik7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNTBIWiA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzYwSFopCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR182MEhaLAorICAgICAgICBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzYwSFopOworICBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzYwSFogPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR182MEhaKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNjBIWik7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNjBIWiA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX09GRikKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX09GRiwKKyAgICAgICAgUGFyYW1ldGVyc19BTlRJQkFORElOR19PRkYpOworICBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX09GRiA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX09GRikKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX09GRik7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfT0ZGID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PRkYpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09GRiwKKyAgICAgICAgUGFyYW1ldGVyc19GTEFTSF9NT0RFX09GRik7CisgIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PRkYgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09GRikKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfT0ZGKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09GRiA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0ZMQVNIX01PREVfQVVUTykKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfQVVUTywKKyAgICAgICAgUGFyYW1ldGVyc19GTEFTSF9NT0RFX0FVVE8pOworICBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfQVVUTyA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfQVVUTykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfQVVUTyk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9BVVRPID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PTikKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfT04sCisgICAgICAgIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PTik7CisgIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PTiA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfT04pCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09OKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09OID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9SRURfRVlFKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9SRURfRVlFLAorICAgICAgICBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfUkVEX0VZRSk7CisgIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9SRURfRVlFID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9SRURfRVlFKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9SRURfRVlFKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX1JFRF9FWUUgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19GTEFTSF9NT0RFX1RPUkNIKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9UT1JDSCwKKyAgICAgICAgUGFyYW1ldGVyc19GTEFTSF9NT0RFX1RPUkNIKTsKKyAgUGFyYW1ldGVyc19GTEFTSF9NT0RFX1RPUkNIID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9UT1JDSCkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfVE9SQ0gpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfVE9SQ0ggPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FVVE8pCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FVVE8sCisgICAgICAgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BVVRPKTsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FVVE8gPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FVVE8pCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FVVE8pOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQVVUTyA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX1NDRU5FX01PREVfQUNUSU9OKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BQ1RJT04sCisgICAgICAgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BQ1RJT04pOworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQUNUSU9OID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BQ1RJT04pCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FDVElPTik7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BQ1RJT04gPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BPUlRSQUlUKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QT1JUUkFJVCwKKyAgICAgICAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BPUlRSQUlUKTsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BPUlRSQUlUID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QT1JUUkFJVCkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUE9SVFJBSVQpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUE9SVFJBSVQgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19TQ0VORV9NT0RFX0xBTkRTQ0FQRSkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTEFORFNDQVBFLAorICAgICAgICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTEFORFNDQVBFKTsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0xBTkRTQ0FQRSA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTEFORFNDQVBFKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9MQU5EU0NBUEUpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTEFORFNDQVBFID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTklHSFQsCisgICAgICAgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVCk7CisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTklHSFQpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTklHSFRfUE9SVFJBSVQsCisgICAgICAgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVCk7CisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTklHSFRfUE9SVFJBSVQpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9USEVBVFJFKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9USEVBVFJFLAorICAgICAgICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfVEhFQVRSRSk7CisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9USEVBVFJFID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9USEVBVFJFKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9USEVBVFJFKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1RIRUFUUkUgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JFQUNIKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9CRUFDSCwKKyAgICAgICAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JFQUNIKTsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JFQUNIID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9CRUFDSCkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkVBQ0gpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkVBQ0ggPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NOT1cpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NOT1csCisgICAgICAgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TTk9XKTsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NOT1cgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NOT1cpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NOT1cpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU05PVyA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1VOU0VUKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TVU5TRVQsCisgICAgICAgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TVU5TRVQpOworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1VOU0VUID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TVU5TRVQpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NVTlNFVCk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TVU5TRVQgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NURUFEWVBIT1RPKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TVEVBRFlQSE9UTywKKyAgICAgICAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NURUFEWVBIT1RPKTsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NURUFEWVBIT1RPID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TVEVBRFlQSE9UTykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1RFQURZUEhPVE8pOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1RFQURZUEhPVE8gPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19TQ0VORV9NT0RFX0ZJUkVXT1JLUykKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfRklSRVdPUktTLAorICAgICAgICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfRklSRVdPUktTKTsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0ZJUkVXT1JLUyA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfRklSRVdPUktTKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9GSVJFV09SS1MpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfRklSRVdPUktTID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TUE9SVFMpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NQT1JUUywKKyAgICAgICAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NQT1JUUyk7CisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TUE9SVFMgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NQT1JUUykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1BPUlRTKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NQT1JUUyA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX1NDRU5FX01PREVfUEFSVFkpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1BBUlRZLAorICAgICAgICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfUEFSVFkpOworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfUEFSVFkgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1BBUlRZKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QQVJUWSk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QQVJUWSA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX1NDRU5FX01PREVfQ0FORExFTElHSFQpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0NBTkRMRUxJR0hULAorICAgICAgICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQ0FORExFTElHSFQpOworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQ0FORExFTElHSFQgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0NBTkRMRUxJR0hUKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9DQU5ETEVMSUdIVCk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9DQU5ETEVMSUdIVCA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkFSQ09ERSkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkFSQ09ERSwKKyAgICAgICAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JBUkNPREUpOworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkFSQ09ERSA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkFSQ09ERSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkFSQ09ERSk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9CQVJDT0RFID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9BVVRPKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9BVVRPLAorICAgICAgICBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQVVUTyk7CisgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9BVVRPID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9BVVRPKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9BVVRPKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0FVVE8gPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19GT0NVU19NT0RFX0lORklOSVRZKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9JTkZJTklUWSwKKyAgICAgICAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0lORklOSVRZKTsKKyAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0lORklOSVRZID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9JTkZJTklUWSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfSU5GSU5JVFkpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfSU5GSU5JVFkgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19GT0NVU19NT0RFX01BQ1JPKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9NQUNSTywKKyAgICAgICAgUGFyYW1ldGVyc19GT0NVU19NT0RFX01BQ1JPKTsKKyAgUGFyYW1ldGVyc19GT0NVU19NT0RFX01BQ1JPID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9NQUNSTykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfTUFDUk8pOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfTUFDUk8gPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19GT0NVU19NT0RFX0ZJWEVEKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9GSVhFRCwKKyAgICAgICAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0ZJWEVEKTsKKyAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0ZJWEVEID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9GSVhFRCkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfRklYRUQpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfRklYRUQgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19GT0NVU19NT0RFX0VET0YpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0VET0YsCisgICAgICAgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9FRE9GKTsKKyAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0VET0YgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0VET0YpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0VET0YpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfRURPRiA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTykKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTywKKyAgICAgICAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU8pOworICBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTyA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTyk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9DT05USU5VT1VTX1ZJREVPID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkUpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRSwKKyAgICAgICAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRSk7CisgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkUgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQ09OVElOVU9VU19QSUNUVVJFKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRSA9IE5VTEw7CisKKyAgaWYgKGphdmFfbGFuZ19zdHJpbmcua2xhc3MpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwgamF2YV9sYW5nX3N0cmluZy5rbGFzcyk7CisgIGphdmFfbGFuZ19zdHJpbmcua2xhc3MgPSBOVUxMOworCisgIGlmIChqYXZhX3V0aWxfbGlzdC5rbGFzcykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LCBqYXZhX3V0aWxfbGlzdC5rbGFzcyk7CisgIGphdmFfdXRpbF9saXN0LmtsYXNzID0gTlVMTDsKKworICBpZiAoamF2YV91dGlsX2l0ZXJhdG9yLmtsYXNzKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsIGphdmFfdXRpbF9pdGVyYXRvci5rbGFzcyk7CisgIGphdmFfdXRpbF9pdGVyYXRvci5rbGFzcyA9IE5VTEw7CisKKyAgaWYgKGphdmFfbGFuZ19pbnRlZ2VyLmtsYXNzKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsIGphdmFfbGFuZ19pbnRlZ2VyLmtsYXNzKTsKKyAgamF2YV9sYW5nX2ludGVnZXIua2xhc3MgPSBOVUxMOworCisgIGlmIChvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjay5rbGFzcykgeworICAgICgqZW52KS0+VW5yZWdpc3Rlck5hdGl2ZXMgKGVudiwKKyAgICAgICAgb3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2sua2xhc3MpOworICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIG9yZ19mcmVlZGVza3RvcF9nc3RyZWFtZXJfYW5kcm9pZG1lZGlhX2dzdGFoY2NhbGxiYWNrLmtsYXNzKTsKKyAgfQorICBvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjay5rbGFzcyA9IE5VTEw7Cit9CisKKy8qIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhICovCisjZGVmaW5lIEFIQ19DQUxMKGVycm9yX3N0YXRlbWVudCwgdHlwZSwgbWV0aG9kLCAuLi4pICAgICAgICAgICAgICAgICAgICBcCisgIEdTVF9EVk1fQ0FMTCAoZXJyb3Jfc3RhdGVtZW50LCBzZWxmLT5vYmplY3QsIHR5cGUsIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLCBcCisgICAgICBtZXRob2QsICMjIF9fVkFfQVJHU19fKTsKKyNkZWZpbmUgQUhDX1NUQVRJQ19DQUxMKGVycm9yX3N0YXRlbWVudCwgdHlwZSwgbWV0aG9kLCAuLi4pICAgICAgICAgICAgIFwKKyAgR1NUX0RWTV9TVEFUSUNfQ0FMTCAoZXJyb3Jfc3RhdGVtZW50LCB0eXBlLCBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYSwgIFwKKyAgICAgIG1ldGhvZCwgIyMgX19WQV9BUkdTX18pOworCit2b2lkCitnc3RfYWhfY2FtZXJhX2FkZF9jYWxsYmFja19idWZmZXIgKEdzdEFIQ2FtZXJhICogc2VsZiwgamJ5dGVBcnJheSBidWZmZXIpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBHU1RfREVCVUcgKCJhZGQgY2FsbGJhY2tfYnVmZmVyICVwIiwgYnVmZmVyKTsKKworICBBSENfQ0FMTCAoLCBWb2lkLCBhZGRDYWxsYmFja0J1ZmZlciwgYnVmZmVyKTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haF9jYW1lcmFfYXV0b19mb2N1cyAoR3N0QUhDYW1lcmEgKiBzZWxmLAorICAgIEdzdEFIQ0F1dG9Gb2N1c0NhbGxiYWNrIGNiLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgam9iamVjdCBvYmplY3QgPSBOVUxMOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoY2IpIHsKKyAgICBvYmplY3QgPSAoKmVudiktPk5ld09iamVjdCAoZW52LAorICAgICAgICBvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjay5rbGFzcywKKyAgICAgICAgb3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2suY29uc3RydWN0b3IsCisgICAgICAgICooKGpsb25nICopICYgY2IpLCAqKChqbG9uZyAqKSAmIHVzZXJfZGF0YSkpOworICAgIGlmICghb2JqZWN0KSB7CisgICAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gY3JlYXRlIGNhbGxiYWNrIG9iamVjdCIpOworICAgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsKKyAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgIH0KKworICBBSENfQ0FMTCAoZ290byBkb25lLCBWb2lkLCBhdXRvRm9jdXMsIG9iamVjdCk7CisKKyAgcmV0ID0gVFJVRTsKK2RvbmU6CisgIGlmIChvYmplY3QpCisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBvYmplY3QpOworCisgIHJldHVybiByZXQ7Cit9CisKK2dib29sZWFuCitnc3RfYWhfY2FtZXJhX2NhbmNlbF9hdXRvX2ZvY3VzIChHc3RBSENhbWVyYSAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBjYW5jZWxBdXRvRm9jdXMpOworCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X2FoX2NhbWVyYV9nZXRfY2FtZXJhX2luZm8gKGdpbnQgY2FtZXJhX2lkLCBHc3RBSENDYW1lcmFJbmZvICogY2FtZXJhX2luZm8pCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgam9iamVjdCBqY2FtZXJhX2luZm8gPSBOVUxMOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBqY2FtZXJhX2luZm8gPSAoKmVudiktPk5ld09iamVjdCAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfY2FtZXJhaW5mby5rbGFzcywKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2NhbWVyYWluZm8uY29uc3RydWN0b3IpOworICBpZiAoIWpjYW1lcmFfaW5mbykgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBjYWxsIEphdmEgbWV0aG9kIik7CisgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBBSENfU1RBVElDX0NBTEwgKGdvdG8gZG9uZSwgVm9pZCwgZ2V0Q2FtZXJhSW5mbywgY2FtZXJhX2lkLCBqY2FtZXJhX2luZm8pOworCisgIGNhbWVyYV9pbmZvLT5mYWNpbmcgPSAoKmVudiktPkdldEludEZpZWxkIChlbnYsIGpjYW1lcmFfaW5mbywKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2NhbWVyYWluZm8uZmFjaW5nKTsKKyAgaWYgKCgqZW52KS0+RXhjZXB0aW9uQ2hlY2sgKGVudikpIHsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gZ2V0IENhbWVyYUluZm8uZmFjaW5nIGZpZWxkIik7CisgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBjYW1lcmFfaW5mby0+b3JpZW50YXRpb24gPSAoKmVudiktPkdldEludEZpZWxkIChlbnYsIGpjYW1lcmFfaW5mbywKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2NhbWVyYWluZm8ub3JpZW50YXRpb24pOworICBpZiAoKCplbnYpLT5FeGNlcHRpb25DaGVjayAoZW52KSkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBnZXQgQ2FtZXJhSW5mby5vcmllbnRhdGlvbiBmaWVsZCIpOworICAgICgqZW52KS0+RXhjZXB0aW9uQ2xlYXIgKGVudik7CisgICAgZ290byBkb25lOworICB9CisKKyAgcmV0ID0gVFJVRTsKK2RvbmU6CisgIGlmIChqY2FtZXJhX2luZm8pCisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBqY2FtZXJhX2luZm8pOworCisgIHJldHVybiByZXQ7Cit9CisKK2dpbnQKK2dzdF9haF9jYW1lcmFfZ2V0X251bWJlcl9vZl9jYW1lcmFzICh2b2lkKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGdpbnQgbnVtX2NhbWVyYXM7CisKKyAgbnVtX2NhbWVyYXMgPSBBSENfU1RBVElDX0NBTEwgKHJldHVybiAtMSwgSW50LCBnZXROdW1iZXJPZkNhbWVyYXMpOworCisgIHJldHVybiBudW1fY2FtZXJhczsKK30KKworR3N0QUhDUGFyYW1ldGVycyAqCitnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChHc3RBSENhbWVyYSAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgam9iamVjdCBvYmplY3QgPSBOVUxMOworICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXMgPSBOVUxMOworCisgIG9iamVjdCA9IEFIQ19DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRQYXJhbWV0ZXJzKTsKKyAgaWYgKG9iamVjdCkgeworICAgIHBhcmFtcyA9IGdfc2xpY2VfbmV3MCAoR3N0QUhDUGFyYW1ldGVycyk7CisgICAgcGFyYW1zLT5vYmplY3QgPSAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBvYmplY3QpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgb2JqZWN0KTsKKyAgICBpZiAoIXBhcmFtcy0+b2JqZWN0KSB7CisgICAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gY3JlYXRlIGdsb2JhbCByZWZlcmVuY2UiKTsKKyAgICAgICgqZW52KS0+RXhjZXB0aW9uQ2xlYXIgKGVudik7CisgICAgICBnX3NsaWNlX2ZyZWUgKEdzdEFIQ1BhcmFtZXRlcnMsIHBhcmFtcyk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgIH0KKworICBHU1RfREVCVUcgKCJyZXR1cm4gcGFyYW1ldGVycyAlcCIsIHBhcmFtcy0+b2JqZWN0KTsKKworICByZXR1cm4gcGFyYW1zOworfQorCitnYm9vbGVhbgorZ3N0X2FoX2NhbWVyYV9sb2NrIChHc3RBSENhbWVyYSAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBsb2NrKTsKKworICByZXR1cm4gVFJVRTsKK30KKworR3N0QUhDYW1lcmEgKgorZ3N0X2FoX2NhbWVyYV9vcGVuIChnaW50IGNhbWVyYV9pZCkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqb2JqZWN0IG9iamVjdCA9IE5VTEw7CisgIEdzdEFIQ2FtZXJhICpjYW1lcmEgPSBOVUxMOworCisgIG9iamVjdCA9IEFIQ19TVEFUSUNfQ0FMTCAoZ290byBkb25lLCBPYmplY3QsIG9wZW4sIGNhbWVyYV9pZCk7CisgIGlmIChvYmplY3QpIHsKKyAgICBjYW1lcmEgPSBnX3NsaWNlX25ldzAgKEdzdEFIQ2FtZXJhKTsKKyAgICBjYW1lcmEtPm9iamVjdCA9ICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIG9iamVjdCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBvYmplY3QpOworICAgIGlmICghY2FtZXJhLT5vYmplY3QpIHsKKyAgICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBjcmVhdGUgZ2xvYmFsIHJlZmVyZW5jZSIpOworICAgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsKKyAgICAgIGdfc2xpY2VfZnJlZSAoR3N0QUhDYW1lcmEsIGNhbWVyYSk7CisgICAgICBjYW1lcmEgPSBOVUxMOworICAgIH0KKyAgfQorCitkb25lOgorICByZXR1cm4gY2FtZXJhOworfQorCitnYm9vbGVhbgorZ3N0X2FoX2NhbWVyYV9yZWNvbm5lY3QgKEdzdEFIQ2FtZXJhICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ19DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHJlY29ubmVjdCk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQKK2dzdF9haF9jYW1lcmFfcmVsZWFzZSAoR3N0QUhDYW1lcmEgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgQUhDX0NBTEwgKCwgVm9pZCwgcmVsZWFzZSk7Cit9CisKK3ZvaWQKK2dzdF9haF9jYW1lcmFfZnJlZSAoR3N0QUhDYW1lcmEgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwgc2VsZi0+b2JqZWN0KTsKKyAgZ19zbGljZV9mcmVlIChHc3RBSENhbWVyYSwgc2VsZik7Cit9CisKKworZ2Jvb2xlYW4KK2dzdF9haF9jYW1lcmFfc2V0X3BhcmFtZXRlcnMgKEdzdEFIQ2FtZXJhICogc2VsZiwgR3N0QUhDUGFyYW1ldGVycyAqIHBhcmFtcykKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ19DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHNldFBhcmFtZXRlcnMsIHBhcmFtcy0+b2JqZWN0KTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haF9jYW1lcmFfc2V0X2Vycm9yX2NhbGxiYWNrIChHc3RBSENhbWVyYSAqIHNlbGYsIEdzdEFIQ0Vycm9yQ2FsbGJhY2sgY2IsCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpvYmplY3Qgb2JqZWN0ID0gTlVMTDsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgaWYgKGNiKSB7CisgICAgb2JqZWN0ID0gKCplbnYpLT5OZXdPYmplY3QgKGVudiwKKyAgICAgICAgb3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2sua2xhc3MsCisgICAgICAgIG9yZ19mcmVlZGVza3RvcF9nc3RyZWFtZXJfYW5kcm9pZG1lZGlhX2dzdGFoY2NhbGxiYWNrLmNvbnN0cnVjdG9yLAorICAgICAgICAqKChqbG9uZyAqKSAmIGNiKSwgKigoamxvbmcgKikgJiB1c2VyX2RhdGEpKTsKKyAgICBpZiAoIW9iamVjdCkgeworICAgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGNyZWF0ZSBjYWxsYmFjayBvYmplY3QiKTsKKyAgICAgICgqZW52KS0+RXhjZXB0aW9uQ2xlYXIgKGVudik7CisgICAgICBnb3RvIGRvbmU7CisgICAgfQorICB9CisKKyAgQUhDX0NBTEwgKGdvdG8gZG9uZSwgVm9pZCwgc2V0RXJyb3JDYWxsYmFjaywgb2JqZWN0KTsKKworICByZXQgPSBUUlVFOworZG9uZToKKyAgaWYgKG9iamVjdCkKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIG9iamVjdCk7CisKKyAgcmV0dXJuIHJldDsKK30KKworZ2Jvb2xlYW4KK2dzdF9haF9jYW1lcmFfc2V0X3ByZXZpZXdfY2FsbGJhY2tfd2l0aF9idWZmZXIgKEdzdEFIQ2FtZXJhICogc2VsZiwKKyAgICBHc3RBSENQcmV2aWV3Q2FsbGJhY2sgY2IsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqb2JqZWN0IG9iamVjdCA9IE5VTEw7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChjYikgeworICAgIG9iamVjdCA9ICgqZW52KS0+TmV3T2JqZWN0IChlbnYsCisgICAgICAgIG9yZ19mcmVlZGVza3RvcF9nc3RyZWFtZXJfYW5kcm9pZG1lZGlhX2dzdGFoY2NhbGxiYWNrLmtsYXNzLAorICAgICAgICBvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjay5jb25zdHJ1Y3RvciwKKyAgICAgICAgKigoamxvbmcgKikgJiBjYiksICooKGpsb25nICopICYgdXNlcl9kYXRhKSk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBjcmVhdGUgY2FsbGJhY2sgb2JqZWN0Iik7CisgICAgICAoKmVudiktPkV4Y2VwdGlvbkNsZWFyIChlbnYpOworICAgICAgZ290byBkb25lOworICAgIH0KKyAgfQorCisgIEFIQ19DQUxMIChnb3RvIGRvbmUsIFZvaWQsIHNldFByZXZpZXdDYWxsYmFja1dpdGhCdWZmZXIsIG9iamVjdCk7CisKKyAgcmV0ID0gVFJVRTsKK2RvbmU6CisgIGlmIChvYmplY3QpCisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBvYmplY3QpOworCisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK2dzdF9haF9jYW1lcmFfc2V0X3ByZXZpZXdfdGV4dHVyZSAoR3N0QUhDYW1lcmEgKiBzZWxmLAorICAgIEdzdEFHU3VyZmFjZVRleHR1cmUgKiBzdXJmYWNlVGV4dHVyZSkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ19DQUxMICgsIFZvaWQsIHNldFByZXZpZXdUZXh0dXJlLCBzdXJmYWNlVGV4dHVyZS0+b2JqZWN0KTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haF9jYW1lcmFfc3RhcnRfcHJldmlldyAoR3N0QUhDYW1lcmEgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgQUhDX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgc3RhcnRQcmV2aWV3KTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haF9jYW1lcmFfc3RhcnRfc21vb3RoX3pvb20gKEdzdEFIQ2FtZXJhICogc2VsZiwgZ2ludCB2YWx1ZSkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ19DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHN0YXJ0U21vb3RoWm9vbSwgdmFsdWUpOworCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X2FoX2NhbWVyYV9zdG9wX3ByZXZpZXcgKEdzdEFIQ2FtZXJhICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ19DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHN0b3BQcmV2aWV3KTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haF9jYW1lcmFfc3RvcF9zbW9vdGhfem9vbSAoR3N0QUhDYW1lcmEgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgQUhDX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgc3RvcFNtb290aFpvb20pOworCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X2FoX2NhbWVyYV91bmxvY2sgKEdzdEFIQ2FtZXJhICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ19DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHVubG9jayk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKyN1bmRlZiBBSENfQ0FMTAorI3VuZGVmIEFIQ19TVEFUSUNfQ0FMTAorCisvKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5TaXplICovCitHc3RBSENTaXplICoKK2dzdF9haGNfc2l6ZV9uZXcgKGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0KQoreworICBHc3RBSENTaXplICpzZWxmID0gZ19zbGljZV9uZXcwIChHc3RBSENTaXplKTsKKworICBzZWxmLT53aWR0aCA9IHdpZHRoOworICBzZWxmLT5oZWlnaHQgPSBoZWlnaHQ7CisKKyAgcmV0dXJuIHNlbGY7Cit9CisKK3ZvaWQKK2dzdF9haGNfc2l6ZV9mcmVlIChHc3RBSENTaXplICogc2VsZikKK3sKKyAgZ19zbGljZV9mcmVlIChHc3RBSENTaXplLCBzZWxmKTsKK30KKworLyogamF2YS5sYW5nLlN0cmluZyAqLworc3RhdGljIGpib29sZWFuCitqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoSk5JRW52ICogZW52LCBqc3RyaW5nIHN0ciwganN0cmluZyBvYmopCit7CisgIHJldHVybiAoKmVudiktPkNhbGxCb29sZWFuTWV0aG9kIChlbnYsIHN0ciwgamF2YV9sYW5nX3N0cmluZy5lcXVhbHMsIG9iaik7Cit9CisKKy8qIGphdmEudXRpbC5MaXN0ICovCitzdGF0aWMgam9iamVjdAoramF2YV91dGlsX2xpc3RfaXRlcmF0b3IgKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmopCit7CisgIHJldHVybiAoKmVudiktPkNhbGxPYmplY3RNZXRob2QgKGVudiwgb2JqLCBqYXZhX3V0aWxfbGlzdC5pdGVyYXRvcik7Cit9CisKKy8qIGphdmEudXRpbC5JdGVyYXRvciAqLworc3RhdGljIGpvYmplY3QKK2phdmFfdXRpbF9pdGVyYXRvcl9uZXh0IChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKQoreworICByZXR1cm4gKCplbnYpLT5DYWxsT2JqZWN0TWV0aG9kIChlbnYsIG9iaiwgamF2YV91dGlsX2l0ZXJhdG9yLm5leHQpOworfQorCitzdGF0aWMgamJvb2xlYW4KK2phdmFfdXRpbF9pdGVyYXRvcl9oYXNfbmV4dCAoSk5JRW52ICogZW52LCBqb2JqZWN0IG9iaikKK3sKKyAgcmV0dXJuICgqZW52KS0+Q2FsbEJvb2xlYW5NZXRob2QgKGVudiwgb2JqLCBqYXZhX3V0aWxfaXRlcmF0b3IuaGFzTmV4dCk7Cit9CisKKy8qIGphdmEubGFuZy5JbnRlZ2VyICovCitzdGF0aWMgamludAoramF2YV9sYW5nX2ludGVnZXJfaW50X3ZhbHVlIChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKQoreworICByZXR1cm4gKCplbnYpLT5DYWxsSW50TWV0aG9kIChlbnYsIG9iaiwgamF2YV9sYW5nX2ludGVnZXIuaW50VmFsdWUpOworfQorCisKKy8qIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlBhcmFtZXRlcnMgKi8KKyNkZWZpbmUgQUhDUF9DQUxMKGVycm9yX3N0YXRlbWVudCwgdHlwZSwgbWV0aG9kLCAuLi4pICAgICAgICAgICAgICAgICAgIFwKKyAgR1NUX0RWTV9DQUxMIChlcnJvcl9zdGF0ZW1lbnQsIHNlbGYtPm9iamVjdCwgdHlwZSwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMsIG1ldGhvZCwgIyMgX19WQV9BUkdTX18pOworCisjZGVmaW5lIEFIQ1BfU1RBVElDX0NBTEwoZXJyb3Jfc3RhdGVtZW50LCB0eXBlLCBtZXRob2QsIC4uLikgICAgICAgICAgICBcCisgIEdTVF9EVk1fU1RBVElDX0NBTEwgKGVycm9yX3N0YXRlbWVudCwgdHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLCBtZXRob2QsICMjIF9fVkFfQVJHU19fKTsKKworc3RhdGljIGNvbnN0IGdjaGFyICoKK193aGl0ZV9iYWxhbmNlX3RvX2djaGFyIChKTklFbnYgKiBlbnYsIGpzdHJpbmcgd2hpdGVfYmFsYW5jZSkKK3sKKyAgaWYgKCF3aGl0ZV9iYWxhbmNlKQorICAgIHJldHVybiBOVUxMOworCisgIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCB3aGl0ZV9iYWxhbmNlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9BVVRPKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0FVVE87CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHdoaXRlX2JhbGFuY2UsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVCkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQ7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHdoaXRlX2JhbGFuY2UsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCB3aGl0ZV9iYWxhbmNlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQ7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHdoaXRlX2JhbGFuY2UsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0RBWUxJR0hUKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0RBWUxJR0hUOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCB3aGl0ZV9iYWxhbmNlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCB3aGl0ZV9iYWxhbmNlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9UV0lMSUdIVCkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9UV0lMSUdIVDsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgd2hpdGVfYmFsYW5jZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfU0hBREUpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfU0hBREU7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBqc3RyaW5nCitfd2hpdGVfYmFsYW5jZV90b19qc3RyaW5nIChjb25zdCBnY2hhciAqIHdoaXRlX2JhbGFuY2UpCit7CisgIGlmICghd2hpdGVfYmFsYW5jZSkKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAoIWdfc3RyY21wMCAod2hpdGVfYmFsYW5jZSwgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0FVVE8pKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQVVUTzsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAod2hpdGVfYmFsYW5jZSwgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVCkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQ7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHdoaXRlX2JhbGFuY2UsIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVDsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAod2hpdGVfYmFsYW5jZSwKKyAgICAgICAgICBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfV0FSTV9GTFVPUkVTQ0VOVCkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UOworICBlbHNlIGlmICghZ19zdHJjbXAwICh3aGl0ZV9iYWxhbmNlLCBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfREFZTElHSFQpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfREFZTElHSFQ7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHdoaXRlX2JhbGFuY2UsIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUOworICBlbHNlIGlmICghZ19zdHJjbXAwICh3aGl0ZV9iYWxhbmNlLCBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfVFdJTElHSFQpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfVFdJTElHSFQ7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHdoaXRlX2JhbGFuY2UsIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9TSEFERSkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9TSEFERTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGNvbnN0IGdjaGFyICoKK19jb2xvcl9lZmZlY3RfdG9fZ2NoYXIgKEpOSUVudiAqIGVudiwganN0cmluZyBjb2xvcl9lZmZlY3QpCit7CisgIGlmICghY29sb3JfZWZmZWN0KQorICAgIHJldHVybiBOVUxMOworCisgIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBjb2xvcl9lZmZlY3QsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTk9ORSkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRUZGRUNUX05PTkU7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGNvbG9yX2VmZmVjdCwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9NT05PKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19FRkZFQ1RfTU9OTzsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgY29sb3JfZWZmZWN0LAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX05FR0FUSVZFKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19FRkZFQ1RfTkVHQVRJVkU7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGNvbG9yX2VmZmVjdCwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9TT0xBUklaRSkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRUZGRUNUX1NPTEFSSVpFOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBjb2xvcl9lZmZlY3QsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU0VQSUEpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0VGRkVDVF9TRVBJQTsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgY29sb3JfZWZmZWN0LAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1BPU1RFUklaRSkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRUZGRUNUX1BPU1RFUklaRTsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgY29sb3JfZWZmZWN0LAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1dISVRFQk9BUkQpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0VGRkVDVF9XSElURUJPQVJEOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBjb2xvcl9lZmZlY3QsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQkxBQ0tCT0FSRCkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRUZGRUNUX0JMQUNLQk9BUkQ7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGNvbG9yX2VmZmVjdCwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9BUVVBKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19FRkZFQ1RfQVFVQTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGpzdHJpbmcKK19jb2xvcl9lZmZlY3RfdG9fanN0cmluZyAoY29uc3QgZ2NoYXIgKiBjb2xvcl9lZmZlY3QpCit7CisgIGlmICghY29sb3JfZWZmZWN0KQorICAgIHJldHVybiBOVUxMOworCisgIGlmICghZ19zdHJjbXAwIChjb2xvcl9lZmZlY3QsIFBhcmFtZXRlcnNfRUZGRUNUX05PTkUpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9OT05FOworICBlbHNlIGlmICghZ19zdHJjbXAwIChjb2xvcl9lZmZlY3QsIFBhcmFtZXRlcnNfRUZGRUNUX01PTk8pKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9NT05POworICBlbHNlIGlmICghZ19zdHJjbXAwIChjb2xvcl9lZmZlY3QsIFBhcmFtZXRlcnNfRUZGRUNUX05FR0FUSVZFKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTkVHQVRJVkU7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGNvbG9yX2VmZmVjdCwgUGFyYW1ldGVyc19FRkZFQ1RfU09MQVJJWkUpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9TT0xBUklaRTsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoY29sb3JfZWZmZWN0LCBQYXJhbWV0ZXJzX0VGRkVDVF9TRVBJQSkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NFUElBOworICBlbHNlIGlmICghZ19zdHJjbXAwIChjb2xvcl9lZmZlY3QsIFBhcmFtZXRlcnNfRUZGRUNUX1BPU1RFUklaRSkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1BPU1RFUklaRTsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoY29sb3JfZWZmZWN0LCBQYXJhbWV0ZXJzX0VGRkVDVF9XSElURUJPQVJEKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfV0hJVEVCT0FSRDsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoY29sb3JfZWZmZWN0LCBQYXJhbWV0ZXJzX0VGRkVDVF9CTEFDS0JPQVJEKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQkxBQ0tCT0FSRDsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoY29sb3JfZWZmZWN0LCBQYXJhbWV0ZXJzX0VGRkVDVF9BUVVBKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQVFVQTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGNvbnN0IGdjaGFyICoKK19hbnRpYmFuZGluZ190b19nY2hhciAoSk5JRW52ICogZW52LCBqc3RyaW5nIGFudGliYW5kaW5nKQoreworICBpZiAoIWFudGliYW5kaW5nKQorICAgIHJldHVybiBOVUxMOworCisgIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBhbnRpYmFuZGluZywKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX0FVVE8pKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX0FVVE87CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGFudGliYW5kaW5nLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNTBIWikpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfQU5USUJBTkRJTkdfNTBIWjsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgYW50aWJhbmRpbmcsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR182MEhaKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19BTlRJQkFORElOR182MEhaOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBhbnRpYmFuZGluZywKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX09GRikpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfQU5USUJBTkRJTkdfT0ZGOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMganN0cmluZworX2FudGliYW5kaW5nX3RvX2pzdHJpbmcgKGNvbnN0IGdjaGFyICogYW50aWJhbmRpbmcpCit7CisgIGlmICghYW50aWJhbmRpbmcpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKCFnX3N0cmNtcDAgKGFudGliYW5kaW5nLCBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX0FVVE8pKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX0FVVE87CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGFudGliYW5kaW5nLCBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzUwSFopKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzUwSFo7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGFudGliYW5kaW5nLCBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzYwSFopKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzYwSFo7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGFudGliYW5kaW5nLCBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX09GRikpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfT0ZGOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgY29uc3QgZ2NoYXIgKgorX2ZsYXNoX21vZGVfdG9fZ2NoYXIgKEpOSUVudiAqIGVudiwganN0cmluZyBmbGFzaF9tb2RlKQoreworICBpZiAoIWZsYXNoX21vZGUpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGZsYXNoX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09GRikpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PRkY7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGZsYXNoX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX0FVVE8pKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfQVVUTzsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgZmxhc2hfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfT04pKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT047CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGZsYXNoX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX1JFRF9FWUUpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfUkVEX0VZRTsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgZmxhc2hfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfVE9SQ0gpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfVE9SQ0g7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBqc3RyaW5nCitfZmxhc2hfbW9kZV90b19qc3RyaW5nIChjb25zdCBnY2hhciAqIGZsYXNoX21vZGUpCit7CisgIGlmICghZmxhc2hfbW9kZSkKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAoIWdfc3RyY21wMCAoZmxhc2hfbW9kZSwgUGFyYW1ldGVyc19GTEFTSF9NT0RFX09GRikpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9PRkY7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGZsYXNoX21vZGUsIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9BVVRPKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX0FVVE87CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGZsYXNoX21vZGUsIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PTikpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9PTjsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoZmxhc2hfbW9kZSwgUGFyYW1ldGVyc19GTEFTSF9NT0RFX1JFRF9FWUUpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfUkVEX0VZRTsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoZmxhc2hfbW9kZSwgUGFyYW1ldGVyc19GTEFTSF9NT0RFX1RPUkNIKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX1RPUkNIOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgY29uc3QgZ2NoYXIgKgorX3NjZW5lX21vZGVfdG9fZ2NoYXIgKEpOSUVudiAqIGVudiwganN0cmluZyBzY2VuZV9tb2RlKQoreworICBpZiAoIXNjZW5lX21vZGUpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHNjZW5lX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FVVE8pKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQVVUTzsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgc2NlbmVfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQUNUSU9OKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FDVElPTjsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgc2NlbmVfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUE9SVFJBSVQpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1NDRU5FX01PREVfUE9SVFJBSVQ7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHNjZW5lX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0xBTkRTQ0FQRSkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9MQU5EU0NBUEU7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHNjZW5lX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19TQ0VORV9NT0RFX05JR0hUOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBzY2VuZV9tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVCkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVDsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgc2NlbmVfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfVEhFQVRSRSkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9USEVBVFJFOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBzY2VuZV9tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9CRUFDSCkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CRUFDSDsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgc2NlbmVfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU05PVykpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TTk9XOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBzY2VuZV9tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TVU5TRVQpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1VOU0VUOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBzY2VuZV9tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TVEVBRFlQSE9UTykpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TVEVBRFlQSE9UTzsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgc2NlbmVfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfRklSRVdPUktTKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0ZJUkVXT1JLUzsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgc2NlbmVfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1BPUlRTKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NQT1JUUzsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgc2NlbmVfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUEFSVFkpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1NDRU5FX01PREVfUEFSVFk7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHNjZW5lX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0NBTkRMRUxJR0hUKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0NBTkRMRUxJR0hUOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBzY2VuZV9tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9CQVJDT0RFKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JBUkNPREU7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBjb25zdCBqc3RyaW5nCitfc2NlbmVfbW9kZV90b19qc3RyaW5nIChjb25zdCBnY2hhciAqIHNjZW5lX21vZGUpCit7CisgIGlmICghc2NlbmVfbW9kZSkKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAoIWdfc3RyY21wMCAoc2NlbmVfbW9kZSwgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FVVE8pKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQVVUTzsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoc2NlbmVfbW9kZSwgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FDVElPTikpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BQ1RJT047CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHNjZW5lX21vZGUsIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QT1JUUkFJVCkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QT1JUUkFJVDsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoc2NlbmVfbW9kZSwgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0xBTkRTQ0FQRSkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9MQU5EU0NBUEU7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHNjZW5lX21vZGUsIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVCkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9OSUdIVDsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoc2NlbmVfbW9kZSwgUGFyYW1ldGVyc19TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUOworICBlbHNlIGlmICghZ19zdHJjbXAwIChzY2VuZV9tb2RlLCBQYXJhbWV0ZXJzX1NDRU5FX01PREVfVEhFQVRSRSkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9USEVBVFJFOworICBlbHNlIGlmICghZ19zdHJjbXAwIChzY2VuZV9tb2RlLCBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkVBQ0gpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkVBQ0g7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHNjZW5lX21vZGUsIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TTk9XKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NOT1c7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHNjZW5lX21vZGUsIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TVU5TRVQpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1VOU0VUOworICBlbHNlIGlmICghZ19zdHJjbXAwIChzY2VuZV9tb2RlLCBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1RFQURZUEhPVE8pKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1RFQURZUEhPVE87CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHNjZW5lX21vZGUsIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9GSVJFV09SS1MpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfRklSRVdPUktTOworICBlbHNlIGlmICghZ19zdHJjbXAwIChzY2VuZV9tb2RlLCBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1BPUlRTKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NQT1JUUzsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoc2NlbmVfbW9kZSwgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BBUlRZKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1BBUlRZOworICBlbHNlIGlmICghZ19zdHJjbXAwIChzY2VuZV9tb2RlLCBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQ0FORExFTElHSFQpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQ0FORExFTElHSFQ7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHNjZW5lX21vZGUsIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CQVJDT0RFKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0JBUkNPREU7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBjb25zdCBnY2hhciAqCitfZm9jdXNfbW9kZV90b19nY2hhciAoSk5JRW52ICogZW52LCBqc3RyaW5nIGZvY3VzX21vZGUpCit7CisgIGlmICghZm9jdXNfbW9kZSkKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgZm9jdXNfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQVVUTykpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9BVVRPOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBmb2N1c19tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9JTkZJTklUWSkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9JTkZJTklUWTsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgZm9jdXNfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfTUFDUk8pKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfTUFDUk87CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGZvY3VzX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0ZJWEVEKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19GT0NVU19NT0RFX0ZJWEVEOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBmb2N1c19tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9FRE9GKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19GT0NVU19NT0RFX0VET0Y7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGZvY3VzX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU8pKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTzsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgZm9jdXNfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQ09OVElOVU9VU19QSUNUVVJFKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGpzdHJpbmcKK19mb2N1c19tb2RlX3RvX2pzdHJpbmcgKGNvbnN0IGdjaGFyICogZm9jdXNfbW9kZSkKK3sKKyAgaWYgKCFmb2N1c19tb2RlKQorICAgIHJldHVybiBOVUxMOworCisgIGlmICghZ19zdHJjbXAwIChmb2N1c19tb2RlLCBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQVVUTykpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9BVVRPOworICBlbHNlIGlmICghZ19zdHJjbXAwIChmb2N1c19tb2RlLCBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfSU5GSU5JVFkpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfSU5GSU5JVFk7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGZvY3VzX21vZGUsIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9NQUNSTykpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9NQUNSTzsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoZm9jdXNfbW9kZSwgUGFyYW1ldGVyc19GT0NVU19NT0RFX0ZJWEVEKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0ZJWEVEOworICBlbHNlIGlmICghZ19zdHJjbXAwIChmb2N1c19tb2RlLCBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfRURPRikpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9FRE9GOworICBlbHNlIGlmICghZ19zdHJjbXAwIChmb2N1c19tb2RlLCBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTykpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9DT05USU5VT1VTX1ZJREVPOworICBlbHNlIGlmICghZ19zdHJjbXAwIChmb2N1c19tb2RlLCBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19QSUNUVVJFKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRTsKKworICByZXR1cm4gTlVMTDsKK30KKworZ2NoYXIgKgorZ3N0X2FoY19wYXJhbWV0ZXJzX2ZsYXR0ZW4gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpzdHJpbmcgdl9zdHIgPSBOVUxMOworICBjb25zdCBnY2hhciAqdiA9IE5VTEw7CisgIGdjaGFyICpyZXQgPSBOVUxMOworCisgIHZfc3RyID0gQUhDUF9DQUxMIChnb3RvIGRvbmUsIE9iamVjdCwgZmxhdHRlbik7CisgIHYgPSAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsIHZfc3RyLCBOVUxMKTsKKyAgaWYgKCF2KSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGNvbnZlcnQgc3RyaW5nIHRvIFVURjgiKTsKKyAgICAoKmVudiktPkV4Y2VwdGlvbkNsZWFyIChlbnYpOworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIHJldCA9IGdfc3RyZHVwICh2KTsKK2RvbmU6CisgIGlmICh2KQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsIHZfc3RyLCB2KTsKKyAgaWYgKHZfc3RyKQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgdl9zdHIpOworCisgIHJldHVybiByZXQ7Cit9CisKK2NvbnN0IGdjaGFyICoKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfYW50aWJhbmRpbmcgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGNvbnN0IGdjaGFyICpyZXQgPSBOVUxMOworICBqc3RyaW5nIGFudGliYW5kaW5nOworCisgIGFudGliYW5kaW5nID0gQUhDUF9DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRBbnRpYmFuZGluZyk7CisKKyAgcmV0ID0gX2FudGliYW5kaW5nX3RvX2djaGFyIChlbnYsIGFudGliYW5kaW5nKTsKKworICBpZiAoYW50aWJhbmRpbmcpCisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBhbnRpYmFuZGluZyk7CisKKyAgcmV0dXJuIHJldDsKK30KKworY29uc3QgZ2NoYXIgKgorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9jb2xvcl9lZmZlY3QgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGNvbnN0IGdjaGFyICpyZXQgPSBOVUxMOworICBqc3RyaW5nIGNvbG9yX2VmZmVjdDsKKworICBjb2xvcl9lZmZlY3QgPSBBSENQX0NBTEwgKHJldHVybiBOVUxMLCBPYmplY3QsIGdldENvbG9yRWZmZWN0KTsKKworICByZXQgPSBfY29sb3JfZWZmZWN0X3RvX2djaGFyIChlbnYsIGNvbG9yX2VmZmVjdCk7CisKKyAgaWYgKGNvbG9yX2VmZmVjdCkKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGNvbG9yX2VmZmVjdCk7CisKKyAgcmV0dXJuIHJldDsKK30KKworZ2ludAorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9leHBvc3VyZV9jb21wZW5zYXRpb24gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGdpbnQgZXY7CisKKyAgZXYgPSBBSENQX0NBTEwgKHJldHVybiAtMSwgSW50LCBnZXRFeHBvc3VyZUNvbXBlbnNhdGlvbik7CisKKyAgcmV0dXJuIGV2OworfQorCitnZmxvYXQKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfZXhwb3N1cmVfY29tcGVuc2F0aW9uX3N0ZXAgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGdmbG9hdCBzdGVwOworCisgIHN0ZXAgPSBBSENQX0NBTEwgKHJldHVybiAwLjAsIEZsb2F0LCBnZXRFeHBvc3VyZUNvbXBlbnNhdGlvblN0ZXApOworCisgIHJldHVybiBzdGVwOworfQorCitjb25zdCBnY2hhciAqCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2ZsYXNoX21vZGUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGNvbnN0IGdjaGFyICpyZXQgPSBOVUxMOworICBqc3RyaW5nIGZsYXNoX21vZGU7CisKKyAgZmxhc2hfbW9kZSA9IEFIQ1BfQ0FMTCAocmV0dXJuIE5VTEwsIE9iamVjdCwgZ2V0Rmxhc2hNb2RlKTsKKworICByZXQgPSBfZmxhc2hfbW9kZV90b19nY2hhciAoZW52LCBmbGFzaF9tb2RlKTsKKworICBpZiAoZmxhc2hfbW9kZSkKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGZsYXNoX21vZGUpOworCisgIHJldHVybiByZXQ7Cit9CisKK2dmbG9hdAorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9mb2NhbF9sZW5ndGggKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGdmbG9hdCBsZW5ndGg7CisKKyAgbGVuZ3RoID0gQUhDUF9DQUxMIChyZXR1cm4gMC4wLCBGbG9hdCwgZ2V0Rm9jYWxMZW5ndGgpOworCisgIHJldHVybiBsZW5ndGg7Cit9CisKK2NvbnN0IGdjaGFyICoKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfZm9jdXNfbW9kZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgY29uc3QgZ2NoYXIgKnJldCA9IE5VTEw7CisgIGpzdHJpbmcgZm9jdXNfbW9kZTsKKworICBmb2N1c19tb2RlID0gQUhDUF9DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRGb2N1c01vZGUpOworCisgIHJldCA9IF9mb2N1c19tb2RlX3RvX2djaGFyIChlbnYsIGZvY3VzX21vZGUpOworCisgIGlmIChmb2N1c19tb2RlKQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgZm9jdXNfbW9kZSk7CisKKyAgcmV0dXJuIHJldDsKK30KKworZ2Zsb2F0Citnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2hvcml6b250YWxfdmlld19hbmdsZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgZ2Zsb2F0IGFuZ2xlOworCisgIGFuZ2xlID0gQUhDUF9DQUxMIChyZXR1cm4gMC4wLCBGbG9hdCwgZ2V0SG9yaXpvbnRhbFZpZXdBbmdsZSk7CisKKyAgcmV0dXJuIGFuZ2xlOworfQorCitnaW50Citnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21heF9leHBvc3VyZV9jb21wZW5zYXRpb24gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGdpbnQgbWF4OworCisgIG1heCA9IEFIQ1BfQ0FMTCAocmV0dXJuIDAsIEludCwgZ2V0TWF4RXhwb3N1cmVDb21wZW5zYXRpb24pOworCisgIHJldHVybiBtYXg7Cit9CisKK2dpbnQKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfbWF4X3pvb20gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGdpbnQgbWF4OworCisgIG1heCA9IEFIQ1BfQ0FMTCAocmV0dXJuIC0xLCBJbnQsIGdldE1heFpvb20pOworCisgIHJldHVybiBtYXg7Cit9CisKK2dpbnQKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfbWluX2V4cG9zdXJlX2NvbXBlbnNhdGlvbiAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgZ2ludCBtaW47CisKKyAgbWluID0gQUhDUF9DQUxMIChyZXR1cm4gMCwgSW50LCBnZXRNaW5FeHBvc3VyZUNvbXBlbnNhdGlvbik7CisKKyAgcmV0dXJuIG1pbjsKK30KKworZ2ludAorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9wcmV2aWV3X2Zvcm1hdCAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgZ2ludCBmb3JtYXQ7CisKKyAgZm9ybWF0ID0gQUhDUF9DQUxMIChyZXR1cm4gMCwgSW50LCBnZXRQcmV2aWV3Rm9ybWF0KTsKKworICByZXR1cm4gZm9ybWF0OworfQorCitnYm9vbGVhbgorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9wcmV2aWV3X2Zwc19yYW5nZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsCisgICAgZ2ludCAqIG1pbiwgZ2ludCAqIG1heCkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKyAgamludEFycmF5IHJhbmdlID0gTlVMTDsKKyAgamludCAqZnBzID0gTlVMTDsKKworICByYW5nZSA9ICgqZW52KS0+TmV3SW50QXJyYXkgKGVudiwgMik7CisgIGlmICghZnBzKSB7CisgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gY3JlYXRlIGFycmF5Iik7CisgICAgZ290byBkb25lOworICB9CisKKyAgQUhDUF9DQUxMIChnb3RvIGRvbmUsIFZvaWQsIGdldFByZXZpZXdGcHNSYW5nZSwgcmFuZ2UpOworCisgIGZwcyA9ICgqZW52KS0+R2V0SW50QXJyYXlFbGVtZW50cyAoZW52LCByYW5nZSwgTlVMTCk7CisgIGlmICgoKmVudiktPkV4Y2VwdGlvbkNoZWNrIChlbnYpIHx8ICFmcHMpIHsKKyAgICAoKmVudiktPkV4Y2VwdGlvbkNsZWFyIChlbnYpOworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBnZXQgYXJyYXkgZWxlbWVudHMiKTsKKyAgICBnb3RvIGRvbmU7CisgIH0KKyAgaWYgKG1pbikKKyAgICAqbWluID0gZnBzWzBdOworICBpZiAobWF4KQorICAgICptYXggPSBmcHNbMV07CisKKyAgcmV0ID0gVFJVRTsKK2RvbmU6CisgIGlmIChmcHMpCisgICAgKCplbnYpLT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyAoZW52LCByYW5nZSwgZnBzLCBKTklfQUJPUlQpOworICBpZiAocmFuZ2UpCisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCByYW5nZSk7CisKKyAgcmV0dXJuIHJldDsKK30KKworR3N0QUhDU2l6ZSAqCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3ByZXZpZXdfc2l6ZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgam9iamVjdCBqc2l6ZSA9IE5VTEw7CisgIEdzdEFIQ1NpemUgKnNpemUgPSBOVUxMOworCisgIGpzaXplID0gQUhDUF9DQUxMIChnb3RvIGRvbmUsIE9iamVjdCwgZ2V0UHJldmlld1NpemUpOworCisgIHNpemUgPSBnX3NsaWNlX25ldzAgKEdzdEFIQ1NpemUpOworCisgIHNpemUtPndpZHRoID0gKCplbnYpLT5HZXRJbnRGaWVsZCAoZW52LCBqc2l6ZSwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3NpemUud2lkdGgpOworICBpZiAoKCplbnYpLT5FeGNlcHRpb25DaGVjayAoZW52KSkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBnZXQgQ2FtZXJhLlNpemUud2lkdGggZmllbGQiKTsKKyAgICAoKmVudiktPkV4Y2VwdGlvbkNsZWFyIChlbnYpOworICAgIGdfc2xpY2VfZnJlZSAoR3N0QUhDU2l6ZSwgc2l6ZSk7CisgICAgc2l6ZSA9IE5VTEw7CisgICAgZ290byBkb25lOworICB9CisKKyAgc2l6ZS0+aGVpZ2h0ID0gKCplbnYpLT5HZXRJbnRGaWVsZCAoZW52LCBqc2l6ZSwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3NpemUuaGVpZ2h0KTsKKyAgaWYgKCgqZW52KS0+RXhjZXB0aW9uQ2hlY2sgKGVudikpIHsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gZ2V0IENhbWVyYS5TaXplLmhlaWdodCBmaWVsZCIpOworICAgICgqZW52KS0+RXhjZXB0aW9uQ2xlYXIgKGVudik7CisgICAgZ19zbGljZV9mcmVlIChHc3RBSENTaXplLCBzaXplKTsKKyAgICBzaXplID0gTlVMTDsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworZG9uZToKKyAgaWYgKGpzaXplKQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwganNpemUpOworCisgIHJldHVybiBzaXplOworfQorCitjb25zdCBnY2hhciAqCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3NjZW5lX21vZGUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGNvbnN0IGdjaGFyICpyZXQgPSBOVUxMOworICBqc3RyaW5nIHNjZW5lX21vZGU7CisKKyAgc2NlbmVfbW9kZSA9IEFIQ1BfQ0FMTCAocmV0dXJuIE5VTEwsIE9iamVjdCwgZ2V0U2NlbmVNb2RlKTsKKworICByZXQgPSBfc2NlbmVfbW9kZV90b19nY2hhciAoZW52LCBzY2VuZV9tb2RlKTsKKworICBpZiAoc2NlbmVfbW9kZSkKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIHNjZW5lX21vZGUpOworCisgIHJldHVybiByZXQ7Cit9CisKK0dMaXN0ICoKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX2FudGliYW5kaW5nIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqb2JqZWN0IGxpc3QgPSBOVUxMOworICBHTGlzdCAqcmV0ID0gTlVMTDsKKworICBsaXN0ID0gQUhDUF9DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRTdXBwb3J0ZWRBbnRpYmFuZGluZyk7CisKKyAgaWYgKGxpc3QpIHsKKyAgICBqb2JqZWN0IGl0ZXJhdG9yID0gTlVMTDsKKworICAgIGl0ZXJhdG9yID0gamF2YV91dGlsX2xpc3RfaXRlcmF0b3IgKGVudiwgbGlzdCk7CisgICAgaWYgKGl0ZXJhdG9yKSB7CisgICAgICB3aGlsZSAoamF2YV91dGlsX2l0ZXJhdG9yX2hhc19uZXh0IChlbnYsIGl0ZXJhdG9yKSkgeworICAgICAgICBqb2JqZWN0IHN0ciA9IGphdmFfdXRpbF9pdGVyYXRvcl9uZXh0IChlbnYsIGl0ZXJhdG9yKTsKKworICAgICAgICBpZiAoc3RyKSB7CisgICAgICAgICAgY29uc3QgZ2NoYXIgKnZhbHVlID0gX2FudGliYW5kaW5nX3RvX2djaGFyIChlbnYsIHN0cik7CisKKyAgICAgICAgICByZXQgPSBnX2xpc3RfYXBwZW5kIChyZXQsIChnY2hhciAqKSB2YWx1ZSk7CisgICAgICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBzdHIpOworICAgICAgICB9CisgICAgICB9CisgICAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGl0ZXJhdG9yKTsKKyAgICB9CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsaXN0KTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK2dzdF9haGNfcGFyYW1ldGVyc19zdXBwb3J0ZWRfYW50aWJhbmRpbmdfZnJlZSAoR0xpc3QgKiBsaXN0KQoreworICBnX2xpc3RfZnJlZSAobGlzdCk7Cit9CisKK0dMaXN0ICoKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX2NvbG9yX2VmZmVjdHMgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpvYmplY3QgbGlzdCA9IE5VTEw7CisgIEdMaXN0ICpyZXQgPSBOVUxMOworCisgIGxpc3QgPSBBSENQX0NBTEwgKHJldHVybiBOVUxMLCBPYmplY3QsIGdldFN1cHBvcnRlZENvbG9yRWZmZWN0cyk7CisKKyAgaWYgKGxpc3QpIHsKKyAgICBqb2JqZWN0IGl0ZXJhdG9yID0gTlVMTDsKKworICAgIGl0ZXJhdG9yID0gamF2YV91dGlsX2xpc3RfaXRlcmF0b3IgKGVudiwgbGlzdCk7CisgICAgaWYgKGl0ZXJhdG9yKSB7CisgICAgICB3aGlsZSAoamF2YV91dGlsX2l0ZXJhdG9yX2hhc19uZXh0IChlbnYsIGl0ZXJhdG9yKSkgeworICAgICAgICBqb2JqZWN0IHN0ciA9IGphdmFfdXRpbF9pdGVyYXRvcl9uZXh0IChlbnYsIGl0ZXJhdG9yKTsKKworICAgICAgICBpZiAoc3RyKSB7CisgICAgICAgICAgY29uc3QgZ2NoYXIgKnZhbHVlID0gX2NvbG9yX2VmZmVjdF90b19nY2hhciAoZW52LCBzdHIpOworCisgICAgICAgICAgcmV0ID0gZ19saXN0X2FwcGVuZCAocmV0LCAoZ2NoYXIgKikgdmFsdWUpOworICAgICAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgc3RyKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBpdGVyYXRvcik7CisgICAgfQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbGlzdCk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCit2b2lkCitnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX2NvbG9yX2VmZmVjdHNfZnJlZSAoR0xpc3QgKiBsaXN0KQoreworICBnX2xpc3RfZnJlZSAobGlzdCk7Cit9CisKK0dMaXN0ICoKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX2ZsYXNoX21vZGVzIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqb2JqZWN0IGxpc3QgPSBOVUxMOworICBHTGlzdCAqcmV0ID0gTlVMTDsKKworICBsaXN0ID0gQUhDUF9DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRTdXBwb3J0ZWRGbGFzaE1vZGVzKTsKKworICBpZiAobGlzdCkgeworICAgIGpvYmplY3QgaXRlcmF0b3IgPSBOVUxMOworCisgICAgaXRlcmF0b3IgPSBqYXZhX3V0aWxfbGlzdF9pdGVyYXRvciAoZW52LCBsaXN0KTsKKyAgICBpZiAoaXRlcmF0b3IpIHsKKyAgICAgIHdoaWxlIChqYXZhX3V0aWxfaXRlcmF0b3JfaGFzX25leHQgKGVudiwgaXRlcmF0b3IpKSB7CisgICAgICAgIGpvYmplY3Qgc3RyID0gamF2YV91dGlsX2l0ZXJhdG9yX25leHQgKGVudiwgaXRlcmF0b3IpOworCisgICAgICAgIGlmIChzdHIpIHsKKyAgICAgICAgICBjb25zdCBnY2hhciAqdmFsdWUgPSBfZmxhc2hfbW9kZV90b19nY2hhciAoZW52LCBzdHIpOworCisgICAgICAgICAgcmV0ID0gZ19saXN0X2FwcGVuZCAocmV0LCAoZ2NoYXIgKikgdmFsdWUpOworICAgICAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgc3RyKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBpdGVyYXRvcik7CisgICAgfQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbGlzdCk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCit2b2lkCitnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX2ZsYXNoX21vZGVzX2ZyZWUgKEdMaXN0ICogbGlzdCkKK3sKKyAgZ19saXN0X2ZyZWUgKGxpc3QpOworfQorCitHTGlzdCAqCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF9mb2N1c19tb2RlcyAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgam9iamVjdCBsaXN0ID0gTlVMTDsKKyAgR0xpc3QgKnJldCA9IE5VTEw7CisKKyAgbGlzdCA9IEFIQ1BfQ0FMTCAocmV0dXJuIE5VTEwsIE9iamVjdCwgZ2V0U3VwcG9ydGVkRm9jdXNNb2Rlcyk7CisKKyAgaWYgKGxpc3QpIHsKKyAgICBqb2JqZWN0IGl0ZXJhdG9yID0gTlVMTDsKKworICAgIGl0ZXJhdG9yID0gamF2YV91dGlsX2xpc3RfaXRlcmF0b3IgKGVudiwgbGlzdCk7CisgICAgaWYgKGl0ZXJhdG9yKSB7CisgICAgICB3aGlsZSAoamF2YV91dGlsX2l0ZXJhdG9yX2hhc19uZXh0IChlbnYsIGl0ZXJhdG9yKSkgeworICAgICAgICBqb2JqZWN0IHN0ciA9IGphdmFfdXRpbF9pdGVyYXRvcl9uZXh0IChlbnYsIGl0ZXJhdG9yKTsKKworICAgICAgICBpZiAoc3RyKSB7CisgICAgICAgICAgY29uc3QgZ2NoYXIgKnZhbHVlID0gX2ZvY3VzX21vZGVfdG9fZ2NoYXIgKGVudiwgc3RyKTsKKworICAgICAgICAgIHJldCA9IGdfbGlzdF9hcHBlbmQgKHJldCwgKGdjaGFyICopIHZhbHVlKTsKKyAgICAgICAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIHN0cik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgaXRlcmF0b3IpOworICAgIH0KKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxpc3QpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZAorZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9mb2N1c19tb2Rlc19mcmVlIChHTGlzdCAqIGxpc3QpCit7CisgIGdfbGlzdF9mcmVlIChsaXN0KTsKK30KKworR0xpc3QgKgorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfcHJldmlld19mb3JtYXRzIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqb2JqZWN0IGxpc3QgPSBOVUxMOworICBHTGlzdCAqcmV0ID0gTlVMTDsKKworICBsaXN0ID0gQUhDUF9DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRTdXBwb3J0ZWRQcmV2aWV3Rm9ybWF0cyk7CisKKyAgaWYgKGxpc3QpIHsKKyAgICBqb2JqZWN0IGl0ZXJhdG9yID0gTlVMTDsKKworICAgIGl0ZXJhdG9yID0gamF2YV91dGlsX2xpc3RfaXRlcmF0b3IgKGVudiwgbGlzdCk7CisgICAgaWYgKGl0ZXJhdG9yKSB7CisgICAgICB3aGlsZSAoamF2YV91dGlsX2l0ZXJhdG9yX2hhc19uZXh0IChlbnYsIGl0ZXJhdG9yKSkgeworICAgICAgICBqb2JqZWN0IGludGVnZXIgPSBqYXZhX3V0aWxfaXRlcmF0b3JfbmV4dCAoZW52LCBpdGVyYXRvcik7CisKKyAgICAgICAgaWYgKGludGVnZXIpIHsKKyAgICAgICAgICBqaW50IHZhbHVlID0gamF2YV9sYW5nX2ludGVnZXJfaW50X3ZhbHVlIChlbnYsIGludGVnZXIpOworCisgICAgICAgICAgcmV0ID0gZ19saXN0X2FwcGVuZCAocmV0LCBHSU5UX1RPX1BPSU5URVIgKHZhbHVlKSk7CisgICAgICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBpbnRlZ2VyKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBpdGVyYXRvcik7CisgICAgfQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbGlzdCk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCit2b2lkCitnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX3ByZXZpZXdfZm9ybWF0c19mcmVlIChHTGlzdCAqIGxpc3QpCit7CisgIGdfbGlzdF9mcmVlIChsaXN0KTsKK30KKworR0xpc3QgKgorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfcHJldmlld19mcHNfcmFuZ2UgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpvYmplY3QgbGlzdCA9IE5VTEw7CisgIEdMaXN0ICpyZXQgPSBOVUxMOworCisgIGxpc3QgPSBBSENQX0NBTEwgKHJldHVybiBOVUxMLCBPYmplY3QsIGdldFN1cHBvcnRlZFByZXZpZXdGcHNSYW5nZSk7CisKKyAgaWYgKGxpc3QpIHsKKyAgICBqb2JqZWN0IGl0ZXJhdG9yID0gTlVMTDsKKworICAgIGl0ZXJhdG9yID0gamF2YV91dGlsX2xpc3RfaXRlcmF0b3IgKGVudiwgbGlzdCk7CisgICAgaWYgKGl0ZXJhdG9yKSB7CisgICAgICB3aGlsZSAoamF2YV91dGlsX2l0ZXJhdG9yX2hhc19uZXh0IChlbnYsIGl0ZXJhdG9yKSkgeworICAgICAgICBqaW50QXJyYXkgcmFuZ2UgPSBqYXZhX3V0aWxfaXRlcmF0b3JfbmV4dCAoZW52LCBpdGVyYXRvcik7CisKKyAgICAgICAgaWYgKHJhbmdlKSB7CisgICAgICAgICAgamludCAqZnBzID0gZ19uZXcgKGppbnQsIDIpOworCisgICAgICAgICAgKCplbnYpLT5HZXRJbnRBcnJheVJlZ2lvbiAoZW52LCByYW5nZSwgMCwgMiwgZnBzKTsKKyAgICAgICAgICByZXQgPSBnX2xpc3RfYXBwZW5kIChyZXQsIGZwcyk7CisgICAgICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCByYW5nZSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgaXRlcmF0b3IpOworICAgIH0KKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxpc3QpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZAorZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9wcmV2aWV3X2Zwc19yYW5nZV9mcmVlIChHTGlzdCAqIGxpc3QpCit7CisgIGdfbGlzdF9mb3JlYWNoIChsaXN0LCAoR0Z1bmMpIGdfZnJlZSwgTlVMTCk7CisgIGdfbGlzdF9mcmVlIChsaXN0KTsKK30KKworR0xpc3QgKgorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfcHJldmlld19zaXplcyAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgam9iamVjdCBsaXN0ID0gTlVMTDsKKyAgR0xpc3QgKnJldCA9IE5VTEw7CisKKyAgbGlzdCA9IEFIQ1BfQ0FMTCAocmV0dXJuIE5VTEwsIE9iamVjdCwgZ2V0U3VwcG9ydGVkUHJldmlld1NpemVzKTsKKworICBpZiAobGlzdCkgeworICAgIGpvYmplY3QgaXRlcmF0b3IgPSBOVUxMOworCisgICAgaXRlcmF0b3IgPSBqYXZhX3V0aWxfbGlzdF9pdGVyYXRvciAoZW52LCBsaXN0KTsKKyAgICBpZiAoaXRlcmF0b3IpIHsKKyAgICAgIHdoaWxlIChqYXZhX3V0aWxfaXRlcmF0b3JfaGFzX25leHQgKGVudiwgaXRlcmF0b3IpKSB7CisgICAgICAgIGpvYmplY3QganNpemUgPSBqYXZhX3V0aWxfaXRlcmF0b3JfbmV4dCAoZW52LCBpdGVyYXRvcik7CisKKyAgICAgICAgaWYgKGpzaXplKSB7CisgICAgICAgICAgamludCB3aWR0aCwgaGVpZ2h0OworCisgICAgICAgICAgd2lkdGggPSAoKmVudiktPkdldEludEZpZWxkIChlbnYsIGpzaXplLAorICAgICAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9zaXplLndpZHRoKTsKKyAgICAgICAgICBoZWlnaHQgPSAoKmVudiktPkdldEludEZpZWxkIChlbnYsIGpzaXplLAorICAgICAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9zaXplLmhlaWdodCk7CisKKyAgICAgICAgICByZXQgPSBnX2xpc3RfYXBwZW5kIChyZXQsIGdzdF9haGNfc2l6ZV9uZXcgKHdpZHRoLCBoZWlnaHQpKTsKKyAgICAgICAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGpzaXplKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBpdGVyYXRvcik7CisgICAgfQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbGlzdCk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCit2b2lkCitnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX3ByZXZpZXdfc2l6ZXNfZnJlZSAoR0xpc3QgKiBsaXN0KQoreworICBnX2xpc3RfZm9yZWFjaCAobGlzdCwgKEdGdW5jKSBnc3RfYWhjX3NpemVfZnJlZSwgTlVMTCk7CisgIGdfbGlzdF9mcmVlIChsaXN0KTsKK30KKworR0xpc3QgKgorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfc2NlbmVfbW9kZXMgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpvYmplY3QgbGlzdCA9IE5VTEw7CisgIEdMaXN0ICpyZXQgPSBOVUxMOworCisgIGxpc3QgPSBBSENQX0NBTEwgKHJldHVybiBOVUxMLCBPYmplY3QsIGdldFN1cHBvcnRlZFNjZW5lTW9kZXMpOworCisgIGlmIChsaXN0KSB7CisgICAgam9iamVjdCBpdGVyYXRvciA9IE5VTEw7CisKKyAgICBpdGVyYXRvciA9IGphdmFfdXRpbF9saXN0X2l0ZXJhdG9yIChlbnYsIGxpc3QpOworICAgIGlmIChpdGVyYXRvcikgeworICAgICAgd2hpbGUgKGphdmFfdXRpbF9pdGVyYXRvcl9oYXNfbmV4dCAoZW52LCBpdGVyYXRvcikpIHsKKyAgICAgICAgam9iamVjdCBzdHIgPSBqYXZhX3V0aWxfaXRlcmF0b3JfbmV4dCAoZW52LCBpdGVyYXRvcik7CisKKyAgICAgICAgaWYgKHN0cikgeworICAgICAgICAgIGNvbnN0IGdjaGFyICp2YWx1ZSA9IF9zY2VuZV9tb2RlX3RvX2djaGFyIChlbnYsIHN0cik7CisKKyAgICAgICAgICByZXQgPSBnX2xpc3RfYXBwZW5kIChyZXQsIChnY2hhciAqKSB2YWx1ZSk7CisgICAgICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBzdHIpOworICAgICAgICB9CisgICAgICB9CisgICAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGl0ZXJhdG9yKTsKKyAgICB9CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsaXN0KTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK2dzdF9haGNfcGFyYW1ldGVyc19zdXBwb3J0ZWRfc2NlbmVfbW9kZXNfZnJlZSAoR0xpc3QgKiBsaXN0KQoreworICBnX2xpc3RfZnJlZSAobGlzdCk7Cit9CisKK0dMaXN0ICoKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX3doaXRlX2JhbGFuY2UgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpvYmplY3QgbGlzdCA9IE5VTEw7CisgIEdMaXN0ICpyZXQgPSBOVUxMOworCisgIGxpc3QgPSBBSENQX0NBTEwgKHJldHVybiBOVUxMLCBPYmplY3QsIGdldFN1cHBvcnRlZFdoaXRlQmFsYW5jZSk7CisKKyAgaWYgKGxpc3QpIHsKKyAgICBqb2JqZWN0IGl0ZXJhdG9yID0gTlVMTDsKKworICAgIGl0ZXJhdG9yID0gamF2YV91dGlsX2xpc3RfaXRlcmF0b3IgKGVudiwgbGlzdCk7CisgICAgaWYgKGl0ZXJhdG9yKSB7CisgICAgICB3aGlsZSAoamF2YV91dGlsX2l0ZXJhdG9yX2hhc19uZXh0IChlbnYsIGl0ZXJhdG9yKSkgeworICAgICAgICBqb2JqZWN0IHN0ciA9IGphdmFfdXRpbF9pdGVyYXRvcl9uZXh0IChlbnYsIGl0ZXJhdG9yKTsKKworICAgICAgICBpZiAoc3RyKSB7CisgICAgICAgICAgY29uc3QgZ2NoYXIgKnZhbHVlID0gX3doaXRlX2JhbGFuY2VfdG9fZ2NoYXIgKGVudiwgc3RyKTsKKworICAgICAgICAgIHJldCA9IGdfbGlzdF9hcHBlbmQgKHJldCwgKGdjaGFyICopIHZhbHVlKTsKKyAgICAgICAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIHN0cik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgaXRlcmF0b3IpOworICAgIH0KKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxpc3QpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZAorZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF93aGl0ZV9iYWxhbmNlX2ZyZWUgKEdMaXN0ICogbGlzdCkKK3sKKyAgZ19saXN0X2ZyZWUgKGxpc3QpOworfQorCitnZmxvYXQKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfdmVydGljYWxfdmlld19hbmdsZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgZ2Zsb2F0IGFuZ2xlOworCisgIGFuZ2xlID0gQUhDUF9DQUxMIChyZXR1cm4gMC4wLCBGbG9hdCwgZ2V0VmVydGljYWxWaWV3QW5nbGUpOworCisgIHJldHVybiBhbmdsZTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfdmlkZW9fc3RhYmlsaXphdGlvbiAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgZ2Jvb2xlYW4gcmV0OworCisgIHJldCA9IEFIQ1BfQ0FMTCAocmV0dXJuIEZBTFNFLCBCb29sZWFuLCBnZXRWaWRlb1N0YWJpbGl6YXRpb24pOworCisgIHJldHVybiByZXQ7Cit9CisKK2NvbnN0IGdjaGFyICoKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfd2hpdGVfYmFsYW5jZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgY29uc3QgZ2NoYXIgKnJldCA9IE5VTEw7CisgIGpzdHJpbmcgd2hpdGVfYmFsYW5jZTsKKworICB3aGl0ZV9iYWxhbmNlID0gQUhDUF9DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRXaGl0ZUJhbGFuY2UpOworCisgIHJldCA9IF93aGl0ZV9iYWxhbmNlX3RvX2djaGFyIChlbnYsIHdoaXRlX2JhbGFuY2UpOworCisgIGlmICh3aGl0ZV9iYWxhbmNlKQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgd2hpdGVfYmFsYW5jZSk7CisKKyAgcmV0dXJuIHJldDsKK30KKworZ2ludAorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF96b29tIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBnaW50IHpvb207CisKKyAgem9vbSA9IEFIQ1BfQ0FMTCAocmV0dXJuIC0xLCBJbnQsIGdldFpvb20pOworCisgIHJldHVybiB6b29tOworfQorCitHTGlzdCAqCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3pvb21fcmF0aW9zIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqb2JqZWN0IGxpc3QgPSBOVUxMOworICBHTGlzdCAqcmV0ID0gTlVMTDsKKworICBsaXN0ID0gQUhDUF9DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRab29tUmF0aW9zKTsKKworICBpZiAobGlzdCkgeworICAgIGpvYmplY3QgaXRlcmF0b3IgPSBOVUxMOworCisgICAgaXRlcmF0b3IgPSBqYXZhX3V0aWxfbGlzdF9pdGVyYXRvciAoZW52LCBsaXN0KTsKKyAgICBpZiAoaXRlcmF0b3IpIHsKKyAgICAgIHdoaWxlIChqYXZhX3V0aWxfaXRlcmF0b3JfaGFzX25leHQgKGVudiwgaXRlcmF0b3IpKSB7CisgICAgICAgIGpvYmplY3QgaW50ZWdlciA9IGphdmFfdXRpbF9pdGVyYXRvcl9uZXh0IChlbnYsIGl0ZXJhdG9yKTsKKworICAgICAgICBpZiAoaW50ZWdlcikgeworICAgICAgICAgIGppbnQgdmFsdWUgPSBqYXZhX2xhbmdfaW50ZWdlcl9pbnRfdmFsdWUgKGVudiwgaW50ZWdlcik7CisKKyAgICAgICAgICByZXQgPSBnX2xpc3RfYXBwZW5kIChyZXQsIEdJTlRfVE9fUE9JTlRFUiAodmFsdWUpKTsKKyAgICAgICAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGludGVnZXIpOworICAgICAgICB9CisgICAgICB9CisgICAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGl0ZXJhdG9yKTsKKyAgICB9CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsaXN0KTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK2dzdF9haGNfcGFyYW1ldGVyc196b29tX3JhdGlvc19mcmVlIChHTGlzdCAqIGxpc3QpCit7CisgIGdfbGlzdF9mcmVlIChsaXN0KTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haGNfcGFyYW1ldGVyc19pc19zbW9vdGhfem9vbV9zdXBwb3J0ZWQgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGdib29sZWFuIHN1cHBvcnRlZDsKKworICBzdXBwb3J0ZWQgPSBBSENQX0NBTEwgKHJldHVybiBGQUxTRSwgQm9vbGVhbiwgaXNTbW9vdGhab29tU3VwcG9ydGVkKTsKKworICByZXR1cm4gc3VwcG9ydGVkOworfQorCitnYm9vbGVhbgorZ3N0X2FoY19wYXJhbWV0ZXJzX2lzX3ZpZGVvX3N0YWJpbGl6YXRpb25fc3VwcG9ydGVkIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBnYm9vbGVhbiBzdXBwb3J0ZWQ7CisKKyAgc3VwcG9ydGVkID0gQUhDUF9DQUxMIChyZXR1cm4gRkFMU0UsIEJvb2xlYW4sIGlzVmlkZW9TdGFiaWxpemF0aW9uU3VwcG9ydGVkKTsKKworICByZXR1cm4gc3VwcG9ydGVkOworfQorCitnYm9vbGVhbgorZ3N0X2FoY19wYXJhbWV0ZXJzX2lzX3pvb21fc3VwcG9ydGVkIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBnYm9vbGVhbiBzdXBwb3J0ZWQ7CisKKyAgc3VwcG9ydGVkID0gQUhDUF9DQUxMIChyZXR1cm4gRkFMU0UsIEJvb2xlYW4sIGlzWm9vbVN1cHBvcnRlZCk7CisKKyAgcmV0dXJuIHN1cHBvcnRlZDsKK30KKworZ2Jvb2xlYW4KK2dzdF9haGNfcGFyYW1ldGVyc19zZXRfYW50aWJhbmRpbmcgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGNvbnN0IGdjaGFyICogdmFsdWUpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAganN0cmluZyBhbnRpYmFuZGluZzsKKworICBhbnRpYmFuZGluZyA9IF9hbnRpYmFuZGluZ190b19qc3RyaW5nICh2YWx1ZSk7CisgIGlmICghYW50aWJhbmRpbmcpCisgICAgcmV0dXJuIEZBTFNFOworCisgIEFIQ1BfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBzZXRBbnRpYmFuZGluZywgYW50aWJhbmRpbmcpOworCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9jb2xvcl9lZmZlY3QgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGNvbnN0IGdjaGFyICogdmFsdWUpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAganN0cmluZyBjb2xvcl9lZmZlY3Q7CisKKyAgY29sb3JfZWZmZWN0ID0gX2NvbG9yX2VmZmVjdF90b19qc3RyaW5nICh2YWx1ZSk7CisgIGlmICghY29sb3JfZWZmZWN0KQorICAgIHJldHVybiBGQUxTRTsKKworICBBSENQX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgc2V0Q29sb3JFZmZlY3QsIGNvbG9yX2VmZmVjdCk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X2V4cG9zdXJlX2NvbXBlbnNhdGlvbiAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsCisgICAgZ2ludCB2YWx1ZSkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ1BfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBzZXRFeHBvc3VyZUNvbXBlbnNhdGlvbiwgdmFsdWUpOworCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9mbGFzaF9tb2RlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwgY29uc3QgZ2NoYXIgKiB2YWx1ZSkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqc3RyaW5nIGZsYXNoX21vZGU7CisKKyAgZmxhc2hfbW9kZSA9IF9mbGFzaF9tb2RlX3RvX2pzdHJpbmcgKHZhbHVlKTsKKyAgaWYgKCFmbGFzaF9tb2RlKQorICAgIHJldHVybiBGQUxTRTsKKworICBBSENQX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgc2V0Rmxhc2hNb2RlLCBmbGFzaF9tb2RlKTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haGNfcGFyYW1ldGVyc19zZXRfZm9jdXNfbW9kZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsIGNvbnN0IGdjaGFyICogdmFsdWUpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAganN0cmluZyBmb2N1c19tb2RlOworCisgIGZvY3VzX21vZGUgPSBfZm9jdXNfbW9kZV90b19qc3RyaW5nICh2YWx1ZSk7CisgIGlmICghZm9jdXNfbW9kZSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgQUhDUF9DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHNldEZvY3VzTW9kZSwgZm9jdXNfbW9kZSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3ByZXZpZXdfZm9ybWF0IChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwgZ2ludCBmb3JtYXQpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENQX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgc2V0UHJldmlld0Zvcm1hdCwgZm9ybWF0KTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haGNfcGFyYW1ldGVyc19zZXRfcHJldmlld19mcHNfcmFuZ2UgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGdpbnQgbWluLCBnaW50IG1heCkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ1BfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBzZXRQcmV2aWV3RnBzUmFuZ2UsIG1pbiwgbWF4KTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haGNfcGFyYW1ldGVyc19zZXRfcHJldmlld19zaXplIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBnaW50IHdpZHRoLCBnaW50IGhlaWdodCkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ1BfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBzZXRQcmV2aWV3U2l6ZSwgd2lkdGgsIGhlaWdodCk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3NjZW5lX21vZGUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLCBjb25zdCBnY2hhciAqIHZhbHVlKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpzdHJpbmcgc2NlbmVfbW9kZTsKKworICBzY2VuZV9tb2RlID0gX3NjZW5lX21vZGVfdG9fanN0cmluZyAodmFsdWUpOworICBpZiAoIXNjZW5lX21vZGUpCisgICAgcmV0dXJuIEZBTFNFOworCisgIEFIQ1BfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBzZXRTY2VuZU1vZGUsIHNjZW5lX21vZGUpOworCisgIHJldHVybiBUUlVFOworfQorCisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3ZpZGVvX3N0YWJpbGl6YXRpb24gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGdib29sZWFuIHRvZ2dsZSkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ1BfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBzZXRWaWRlb1N0YWJpbGl6YXRpb24sIHRvZ2dsZSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3doaXRlX2JhbGFuY2UgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGNvbnN0IGdjaGFyICogdmFsdWUpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAganN0cmluZyB3aGl0ZV9iYWxhbmNlOworCisgIHdoaXRlX2JhbGFuY2UgPSBfd2hpdGVfYmFsYW5jZV90b19qc3RyaW5nICh2YWx1ZSk7CisgIGlmICghd2hpdGVfYmFsYW5jZSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgQUhDUF9DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHNldFdoaXRlQmFsYW5jZSwgd2hpdGVfYmFsYW5jZSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3pvb20gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLCBnaW50IHZhbHVlKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgQUhDUF9DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHNldFpvb20sIHZhbHVlKTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haGNfcGFyYW1ldGVyc191bmZsYXR0ZW4gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLCBjb25zdCBnY2hhciAqIGZsYXR0ZW5lZCkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqc3RyaW5nIHZfc3RyID0gTlVMTDsKKyAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKKworICB2X3N0ciA9ICgqZW52KS0+TmV3U3RyaW5nVVRGIChlbnYsIGZsYXR0ZW5lZCk7CisgIGlmICh2X3N0ciA9PSBOVUxMKQorICAgIHJldHVybiBGQUxTRTsKKworICBBSENQX0NBTEwgKHJldCA9IEZBTFNFLCBWb2lkLCB1bmZsYXR0ZW4sIHZfc3RyKTsKKworICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIHZfc3RyKTsKKworICByZXR1cm4gcmV0OworfQorCit2b2lkCitnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBnX3JldHVybl9pZl9mYWlsIChzZWxmICE9IE5VTEwpOworICBnX3JldHVybl9pZl9mYWlsIChzZWxmLT5vYmplY3QgIT0gTlVMTCk7CisKKyAgR1NUX0RFQlVHICgiZnJlZWluZyBwYXJhbWV0ZXJzICVwIiwgc2VsZi0+b2JqZWN0KTsKKworICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LCBzZWxmLT5vYmplY3QpOworICBnX3NsaWNlX2ZyZWUgKEdzdEFIQ1BhcmFtZXRlcnMsIHNlbGYpOworfQpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuaCBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRlNzg0MgotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmgKQEAgLTAsMCArMSwyNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENpc2NvIFN5c3RlbXMsIEluYy4KKyAqICAgQXV0aG9yOiBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwgQ29sbGFib3JhIEx0ZC4KKyAqICAgQXV0aG9yOiBKdXN0aW4gS2ltIDxqdXN0aW4ua2ltQGNvbGxhYm9yYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQorICoKKyAqLworCisjaWZuZGVmIF9fR1NUX0FORFJPSURfSEFSRFdBUkVfQ0FNRVJBX0hfXworI2RlZmluZSBfX0dTVF9BTkRST0lEX0hBUkRXQVJFX0NBTUVSQV9IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxqbmkuaD4KKworI2luY2x1ZGUgImdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmgiCisjaW5jbHVkZSAiZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuaCIKKworR19CRUdJTl9ERUNMUworCit0eXBlZGVmIHN0cnVjdCBfR3N0QUhDYW1lcmEgR3N0QUhDYW1lcmE7Cit0eXBlZGVmIHN0cnVjdCBfR3N0QUhDQ2FtZXJhSW5mbyBHc3RBSENDYW1lcmFJbmZvOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFIQ1NpemUgR3N0QUhDU2l6ZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RBSENQYXJhbWV0ZXJzIEdzdEFIQ1BhcmFtZXRlcnM7CisKKy8qIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhICovCitzdHJ1Y3QgX0dzdEFIQ2FtZXJhCit7CisgIC8qIDwgcHJpdmF0ZSA+ICovCisgIGpvYmplY3Qgb2JqZWN0OyAgICAgICAgICAgICAgIC8qIGdsb2JhbCByZWZlcmVuY2UgKi8KK307CisKKy8qIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLkNhbWVyYUluZm8gKi8KK3N0cnVjdCBfR3N0QUhDQ2FtZXJhSW5mbworeworICBnaW50IGZhY2luZzsKKyAgZ2ludCBvcmllbnRhdGlvbjsKK307CitleHRlcm4gZ2ludCBDYW1lcmFJbmZvX0NBTUVSQV9GQUNJTkdfQkFDSzsKK2V4dGVybiBnaW50IENhbWVyYUluZm9fQ0FNRVJBX0ZBQ0lOR19GUk9OVDsKKworLyogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuU2l6ZSAqLworc3RydWN0IF9Hc3RBSENTaXplCit7CisgIGdpbnQgd2lkdGg7CisgIGdpbnQgaGVpZ2h0OworfTsKKworLyogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuUGFyYW1ldGVycyAqLworc3RydWN0IF9Hc3RBSENQYXJhbWV0ZXJzCit7CisgIC8qIDwgcHJpdmF0ZSA+ICovCisgIGpvYmplY3Qgb2JqZWN0OyAgICAgICAgICAgICAgIC8qIGdsb2JhbCByZWZlcmVuY2UgKi8KK307CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9BVVRPOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfRkxVT1JFU0NFTlQ7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfREFZTElHSFQ7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQ7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9UV0lMSUdIVDsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1NIQURFOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0VGRkVDVF9OT05FOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0VGRkVDVF9NT05POworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0VGRkVDVF9ORUdBVElWRTsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19FRkZFQ1RfU09MQVJJWkU7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRUZGRUNUX1NFUElBOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0VGRkVDVF9QT1NURVJJWkU7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRUZGRUNUX1dISVRFQk9BUkQ7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRUZGRUNUX0JMQUNLQk9BUkQ7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRUZGRUNUX0FRVUE7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfQU5USUJBTkRJTkdfQVVUTzsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19BTlRJQkFORElOR181MEhaOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzYwSFo7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfQU5USUJBTkRJTkdfT0ZGOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT0ZGOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZMQVNIX01PREVfQVVUTzsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GTEFTSF9NT0RFX09OOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZMQVNIX01PREVfUkVEX0VZRTsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GTEFTSF9NT0RFX1RPUkNIOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfQVVUTzsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FDVElPTjsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BPUlRSQUlUOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfTEFORFNDQVBFOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFQ7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVDsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX1RIRUFUUkU7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CRUFDSDsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NOT1c7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TVU5TRVQ7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TVEVBRFlQSE9UTzsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX0ZJUkVXT1JLUzsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NQT1JUUzsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BBUlRZOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfQ0FORExFTElHSFQ7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CQVJDT0RFOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQVVUTzsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GT0NVU19NT0RFX0lORklOSVRZOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfTUFDUk87CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRk9DVVNfTU9ERV9GSVhFRDsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GT0NVU19NT0RFX0VET0Y7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1ZJREVPOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19QSUNUVVJFOworCisvKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5FcnJvckNhbGxiYWNrICovCit0eXBlZGVmIHZvaWQgKCpHc3RBSENFcnJvckNhbGxiYWNrKSAoZ2ludCBlcnJvciwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworLyogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuUHJldmlld0NhbGxiYWNrICovCit0eXBlZGVmIHZvaWQgKCpHc3RBSENQcmV2aWV3Q2FsbGJhY2spIChqYnl0ZUFycmF5IGRhdGEsIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKy8qIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLkF1dG9Gb2N1c0NhbGxiYWNrICovCit0eXBlZGVmIHZvaWQgKCpHc3RBSENBdXRvRm9jdXNDYWxsYmFjaykgKGdib29sZWFuIHN1Y2Nlc3MsIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKK2dib29sZWFuIGdzdF9hbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9pbml0ICh2b2lkKTsKK3ZvaWQgZ3N0X2FuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2RlaW5pdCAodm9pZCk7CisKKy8qIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhICovCit2b2lkIGdzdF9haF9jYW1lcmFfYWRkX2NhbGxiYWNrX2J1ZmZlciAoR3N0QUhDYW1lcmEgKiBzZWxmLCBqYnl0ZUFycmF5IGJ1ZmZlcik7CitnYm9vbGVhbiBnc3RfYWhfY2FtZXJhX2F1dG9fZm9jdXMgKEdzdEFIQ2FtZXJhICogc2VsZiwKKyAgICBHc3RBSENBdXRvRm9jdXNDYWxsYmFjayBjYiwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKK2dib29sZWFuIGdzdF9haF9jYW1lcmFfY2FuY2VsX2F1dG9fZm9jdXMgKEdzdEFIQ2FtZXJhICogc2VsZik7CitnYm9vbGVhbiBnc3RfYWhfY2FtZXJhX2dldF9jYW1lcmFfaW5mbyAoZ2ludCBjYW1lcmFfaWQsCisgICAgR3N0QUhDQ2FtZXJhSW5mbyAqIGNhbWVyYV9pbmZvKTsKK2dpbnQgZ3N0X2FoX2NhbWVyYV9nZXRfbnVtYmVyX29mX2NhbWVyYXMgKHZvaWQpOworR3N0QUhDUGFyYW1ldGVycyAqZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoR3N0QUhDYW1lcmEgKiBzZWxmKTsKK2dib29sZWFuIGdzdF9haF9jYW1lcmFfbG9jayAoR3N0QUhDYW1lcmEgKiBzZWxmKTsKK0dzdEFIQ2FtZXJhICpnc3RfYWhfY2FtZXJhX29wZW4gKGdpbnQgY2FtZXJhX2lkKTsKK2dib29sZWFuIGdzdF9haF9jYW1lcmFfcmVjb25uZWN0IChHc3RBSENhbWVyYSAqIHNlbGYpOwordm9pZCBnc3RfYWhfY2FtZXJhX3JlbGVhc2UgKEdzdEFIQ2FtZXJhICogc2VsZik7Cit2b2lkIGdzdF9haF9jYW1lcmFfZnJlZSAoR3N0QUhDYW1lcmEgKiBzZWxmKTsKK2dib29sZWFuIGdzdF9haF9jYW1lcmFfc2V0X3BhcmFtZXRlcnMgKEdzdEFIQ2FtZXJhICogc2VsZiwKKyAgICBHc3RBSENQYXJhbWV0ZXJzICogcGFyYW1zKTsKK2dib29sZWFuIGdzdF9haF9jYW1lcmFfc2V0X2Vycm9yX2NhbGxiYWNrIChHc3RBSENhbWVyYSAqIHNlbGYsCisgICAgR3N0QUhDRXJyb3JDYWxsYmFjayBjYiwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKK2dib29sZWFuIGdzdF9haF9jYW1lcmFfc2V0X3ByZXZpZXdfY2FsbGJhY2tfd2l0aF9idWZmZXIgKEdzdEFIQ2FtZXJhICogc2VsZiwKKyAgICBHc3RBSENQcmV2aWV3Q2FsbGJhY2sgY2IsIGdwb2ludGVyIHVzZXJfZGF0YSk7Cit2b2lkIGdzdF9haF9jYW1lcmFfc2V0X3ByZXZpZXdfdGV4dHVyZSAoR3N0QUhDYW1lcmEgKiBzZWxmLAorICAgIEdzdEFHU3VyZmFjZVRleHR1cmUgKiBzdXJmYWNlVGV4dHVyZSk7CitnYm9vbGVhbiBnc3RfYWhfY2FtZXJhX3N0YXJ0X3ByZXZpZXcgKEdzdEFIQ2FtZXJhICogc2VsZik7CitnYm9vbGVhbiBnc3RfYWhfY2FtZXJhX3N0YXJ0X3Ntb290aF96b29tIChHc3RBSENhbWVyYSAqIHNlbGYsIGdpbnQgdmFsdWUpOworZ2Jvb2xlYW4gZ3N0X2FoX2NhbWVyYV9zdG9wX3ByZXZpZXcgKEdzdEFIQ2FtZXJhICogc2VsZik7CitnYm9vbGVhbiBnc3RfYWhfY2FtZXJhX3N0b3Bfc21vb3RoX3pvb20gKEdzdEFIQ2FtZXJhICogc2VsZik7CitnYm9vbGVhbiBnc3RfYWhfY2FtZXJhX3VubG9jayAoR3N0QUhDYW1lcmEgKiBzZWxmKTsKKworLyogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuU2l6ZSAqLworR3N0QUhDU2l6ZSAqZ3N0X2FoY19zaXplX25ldyAoZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQpOwordm9pZCBnc3RfYWhjX3NpemVfZnJlZSAoR3N0QUhDU2l6ZSAqIHNlbGYpOworCisvKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5QYXJhbWV0ZXJzICovCitnY2hhciAqZ3N0X2FoY19wYXJhbWV0ZXJzX2ZsYXR0ZW4gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK2NvbnN0IGdjaGFyICpnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2FudGliYW5kaW5nIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7Citjb25zdCBnY2hhciAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9jb2xvcl9lZmZlY3QgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK2dpbnQgZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9leHBvc3VyZV9jb21wZW5zYXRpb24gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK2dmbG9hdCBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2V4cG9zdXJlX2NvbXBlbnNhdGlvbl9zdGVwIChHc3RBSENQYXJhbWV0ZXJzCisgICAgKiBzZWxmKTsKK2NvbnN0IGdjaGFyICpnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2ZsYXNoX21vZGUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK2dmbG9hdCBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2ZvY2FsX2xlbmd0aCAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworY29uc3QgZ2NoYXIgKmdzdF9haGNfcGFyYW1ldGVyc19nZXRfZm9jdXNfbW9kZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworZ2Zsb2F0IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfaG9yaXpvbnRhbF92aWV3X2FuZ2xlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7CitnaW50IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfbWF4X2V4cG9zdXJlX2NvbXBlbnNhdGlvbiAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworZ2ludCBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21heF96b29tIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7CitnaW50IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfbWluX2V4cG9zdXJlX2NvbXBlbnNhdGlvbiAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworZ2ludCBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3ByZXZpZXdfZm9ybWF0IChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7CitnYm9vbGVhbiBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3ByZXZpZXdfZnBzX3JhbmdlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBnaW50ICogbWluLCBnaW50ICogbWF4KTsKK0dzdEFIQ1NpemUgKmdzdF9haGNfcGFyYW1ldGVyc19nZXRfcHJldmlld19zaXplIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7Citjb25zdCBnY2hhciAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zY2VuZV9tb2RlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7CisvKiBHTGlzdCA8Y29uc3QgZ2NoYXIgKj4gKi8KK0dMaXN0ICpnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF9hbnRpYmFuZGluZyAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOwordm9pZCBnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX2FudGliYW5kaW5nX2ZyZWUgKEdMaXN0ICogbGlzdCk7CisvKiBHTGlzdCA8Y29uc3QgZ2NoYXIgKj4gKi8KK0dMaXN0ICpnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF9jb2xvcl9lZmZlY3RzIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7Cit2b2lkIGdzdF9haGNfcGFyYW1ldGVyc19zdXBwb3J0ZWRfY29sb3JfZWZmZWN0c19mcmVlIChHTGlzdCAqIGxpc3QpOworLyogR0xpc3QgPGNvbnN0IGdjaGFyICo+ICovCitHTGlzdCAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfZmxhc2hfbW9kZXMgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK3ZvaWQgZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9mbGFzaF9tb2Rlc19mcmVlIChHTGlzdCAqIGxpc3QpOworLyogR0xpc3QgPGNvbnN0IGdjaGFyICo+ICovCitHTGlzdCAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfZm9jdXNfbW9kZXMgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK3ZvaWQgZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9mb2N1c19tb2Rlc19mcmVlIChHTGlzdCAqIGxpc3QpOworLyogR0xpc3QgPGludD4gKi8KK0dMaXN0ICpnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF9wcmV2aWV3X2Zvcm1hdHMgKEdzdEFIQ1BhcmFtZXRlcnMKKyAgICAqIHNlbGYpOwordm9pZCBnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX3ByZXZpZXdfZm9ybWF0c19mcmVlIChHTGlzdCAqIGxpc3QpOworLyogR0xpc3QgPGludCBbMl0+ICovCitHTGlzdCAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfcHJldmlld19mcHNfcmFuZ2UgKEdzdEFIQ1BhcmFtZXRlcnMKKyAgICAqIHNlbGYpOwordm9pZCBnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX3ByZXZpZXdfZnBzX3JhbmdlX2ZyZWUgKEdMaXN0ICogbGlzdCk7CisvKiBHTGlzdCA8R3N0QUhDU2l6ZSAqPiAqLworR0xpc3QgKmdzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX3ByZXZpZXdfc2l6ZXMgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK3ZvaWQgZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9wcmV2aWV3X3NpemVzX2ZyZWUgKEdMaXN0ICogbGlzdCk7CisvKiBHTGlzdCA8Y29uc3QgZ2NoYXIgKj4gKi8KK0dMaXN0ICpnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF9zY2VuZV9tb2RlcyAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOwordm9pZCBnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX3NjZW5lX21vZGVzX2ZyZWUgKEdMaXN0ICogbGlzdCk7CisvKiBHTGlzdCA8Y29uc3QgZ2NoYXIgKj4gKi8KK0dMaXN0ICpnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF93aGl0ZV9iYWxhbmNlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7Cit2b2lkIGdzdF9haGNfcGFyYW1ldGVyc19zdXBwb3J0ZWRfd2hpdGVfYmFsYW5jZV9mcmVlIChHTGlzdCAqIGxpc3QpOworZ2Zsb2F0IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfdmVydGljYWxfdmlld19hbmdsZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF92aWRlb19zdGFiaWxpemF0aW9uIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7Citjb25zdCBnY2hhciAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF93aGl0ZV9iYWxhbmNlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7CitnaW50IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfem9vbSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworLyogR0xpc3QgPGludD4gKi8KK0dMaXN0ICpnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3pvb21fcmF0aW9zIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7Cit2b2lkIGdzdF9haGNfcGFyYW1ldGVyc196b29tX3JhdGlvc19mcmVlIChHTGlzdCAqIGxpc3QpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX2lzX3Ntb290aF96b29tX3N1cHBvcnRlZCAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX2lzX3ZpZGVvX3N0YWJpbGl6YXRpb25fc3VwcG9ydGVkICgKKyAgICBHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7CitnYm9vbGVhbiBnc3RfYWhjX3BhcmFtZXRlcnNfaXNfem9vbV9zdXBwb3J0ZWQgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK2dib29sZWFuIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfYW50aWJhbmRpbmcgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGNvbnN0IGdjaGFyICogYW50aWJhbmRpbmcpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9jb2xvcl9lZmZlY3QgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGNvbnN0IGdjaGFyICogdmFsdWUpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9leHBvc3VyZV9jb21wZW5zYXRpb24gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGdpbnQgdmFsdWUpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9mbGFzaF9tb2RlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBjb25zdCBnY2hhciAqIHZhbHVlKTsKK2dib29sZWFuIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfZm9jdXNfbW9kZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsCisgICAgY29uc3QgZ2NoYXIgKiB2YWx1ZSk7CitnYm9vbGVhbiBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3ByZXZpZXdfZm9ybWF0IChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBnaW50IGZvcm1hdCk7CitnYm9vbGVhbiBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3ByZXZpZXdfZnBzX3JhbmdlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBnaW50IG1pbiwgZ2ludCBtYXgpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9wcmV2aWV3X3NpemUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0KTsKK2dib29sZWFuIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfc2NlbmVfbW9kZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsCisgICAgY29uc3QgZ2NoYXIgKiB2YWx1ZSk7CitnYm9vbGVhbiBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3doaXRlX2JhbGFuY2UgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGNvbnN0IGdjaGFyICogdmFsdWUpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF92aWRlb19zdGFiaWxpemF0aW9uIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBnYm9vbGVhbiB0b2dnbGUpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF96b29tIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwgZ2ludCB2YWx1ZSk7CitnYm9vbGVhbiBnc3RfYWhjX3BhcmFtZXRlcnNfdW5mbGF0dGVuIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBjb25zdCBnY2hhciAqIGZsYXR0ZW5lZCk7Cit2b2lkIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9BTkRST0lEX0hBUkRXQVJFX0NBTUVSQV9IX18gKi8KZGlmZiAtLWdpdCBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YWhjc3JjLmMgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFoY3NyYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViN2QyNzYKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFoY3NyYy5jCkBAIC0wLDAgKzEsMjUxMyBAQAorLyogR1N0cmVhbWVyIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhIFNvdXJjZQorICoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgQ2lzY28gU3lzdGVtcywgSW5jLgorICogICBBdXRob3I6IFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtYWhjc3JjCisgKgorICogYWhjc3JjIGNhbiBiZSB1c2VkIHRvIGNhcHR1cmUgdmlkZW8gZnJvbSBhbmRyb2lkIGRldmljZXMuIEl0IHVzZXMgdGhlCisgKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSBKYXZhIEFQSSB0byBjYXB0dXJlIGZyb20gdGhlIHN5c3RlbSdzIGNhbWVyYXMuCisgKgorICogSW4gb3JkZXIgZm9yIHRoZSBwbHVnaW4gdG8gZ2V0IHJlZ2lzdGVyZWQsIGl0IG11c3QgYmUgYWJsZSB0byBmaW5kIGl0cworICogSmF2YSBjYWxsYmFja3MgY2xhc3MuIFRoYXQgY2xhc3MgaXMgZW1iZWRkZWQgYXMgYSBqYXIgZmlsZSBpbnNpZGUgdGhlIHNvdXJjZQorICogZWxlbWVudCAoaWYgcHJvcGVybHkgY29tcGlsZWQpIGFuZCB3aWxsIGJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5CisgKiBzbyBpdCBjYW4gYmUgbG9hZGVkIGludG8gdGhlIHZpcnR1YWwgbWFjaGluZS4KKyAqIEluIG9yZGVyIGZvciBpdCB0byB3b3JrLCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBtdXN0IGJlIHNldCB0byBhIHdyaXRhYmxlCisgKiBkaXJlY3RvcnkuCisgKiBUaGUgc291cmNlIHdpbGwgbG9vayBmb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIOKAnFRNUOKAnSB3aGljaCBtdXN0IGNvbnRhaW4KKyAqIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIGEgd3JpdGFibGUgZGlyZWN0b3J5LgorICogSXQgY2FuIGJlIHJldHJlaXZlZCB1c2luZyB0aGUgZm9sbG93aW5nIEphdmEgY29kZSA6CisgKiB8WworICogICBjb250ZXh0LmdldENhY2hlRGlyKCkuZ2V0QWJzb2x1dGVQYXRoKCk7CisgKiBdfAorICogV2hlcmUgdGhlIEBjb250ZXh0IHZhcmlhYmxlIGlzIGFuIG9iamVjdCBvZiB0eXBlIGFuZHJvaWQuY29udGVudC5Db250ZXh0CisgKiAoaW5jbHVkaW5nIGl0cyBzdWJjbGFzc2VzIGFuZHJvaWQuYXBwLkFjdGl2aXR5IG9yIGFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uKS4KKyAqIEFub3RoZXIgb3B0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHNldCBmb3IgcG9pbnRpbmcgdG8gdGhlCisgKiBvcHRpbWl6ZWQgZGV4IGNsYXNzZXMgZGlyZWN0b3J5LiBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUg4oCcREVY4oCdIGlzCisgKiBhdmFpbGFibGUsIGl0IHdpbGwgYmUgdXNlZCwgb3RoZXJ3aXNlLCB0aGUgZGlyZWN0b3J5IGluIHRoZSDigJxUTVDigJ0gZW52aXJvbm1lbnQKKyAqIHZhcmlhYmxlIHdpbGwgYmUgdXNlZCBmb3IgdGhlIG9wdGltaXplZCBkZXggZGlyZWN0b3J5LgorICogVGhlIHN5c3RlbSBkZXggZGlyZWN0b3J5IGNhbiBiZSBvYnRhaW5lZCB1c2luZyB0aGUgZm9sbG93aW5nIEphdmEgY29kZSA6CisgKiB8WworICogICBjb250ZXh0LmdldERpcijigJxkZXjigJ0sIDApLmdldEFic29sdXRlUGF0aCgpOworICogXXwKKyAqCisgKiA8bm90ZT4KKyAqIFRob3NlIGVudmlyb25tZW50IHZhcmlhYmxlIG11c3QgYmUgc2V0IGJlZm9yZSBnc3RfaW5pdCBpcyBjYWxsZWQgZnJvbQorICogdGhlIG5hdGl2ZSBjb2RlLgorICogPC9ub3RlPgorICoKKyAqIDxub3RlPgorICogSWYgdGhlIOKAnFRNUOKAnSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgYXZhaWxhYmxlIG9yIHRoZSBkaXJlY3RvcnkgaXMgbm90CisgKiB3cml0YWJsZSBvciBhbnkgb3RoZXIgaXNzdWUgaGFwcGVucyB3aGlsZSB0cnlpbmcgdG8gbG9hZCB0aGUgZW1iZWRkZWQgamFyCisgKiBmaWxlLCB0aGVuIHRoZSBzb3VyY2Ugd2lsbCBmYWxsYmFjayBvbiB0cnlpbmcgdG8gbG9hZCB0aGUgY2xhc3MgZGlyZWN0bHkKKyAqIGZyb20gdGhlIHJ1bm5pbmcgYXBwbGljYXRpb24uCisgKiBUaGUgZmlsZSBjb20vZ3N0cmVhbWVyL0dzdEFoY0NhbGxiYWNrLmphdmEgaW4gdGhlIHNvdXJjZSdzIGRpcmVjdG9yeSBjYW4gYmUKKyAqIGNvcGllZCBpbnRvIHRoZSBBbmRyb2lkIGFwcGxpY2F0aW9uIHNvIGl0IGNhbiBiZSBsb2FkZWQgYXQgcnVudGltZQorICogYXMgYSBmYWxsYmFjayBtZWNoYW5pc20uCisgKiA8L25vdGU+CisgKgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjICBpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisjaW5jbHVkZSA8Z3N0L2ludGVyZmFjZXMvcGhvdG9ncmFwaHkuaD4KKworI2luY2x1ZGUgImdzdGpuaXV0aWxzLmgiCisKKyNpbmNsdWRlICJnc3RhaGNzcmMuaCIKKworLyogR09iamVjdCAqLworc3RhdGljIHZvaWQgZ3N0X2FoY19zcmNfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOworc3RhdGljIHZvaWQgZ3N0X2FoY19zcmNfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOworc3RhdGljIHZvaWQgZ3N0X2FoY19zcmNfZGlzcG9zZSAoR09iamVjdCAqIG9iamVjdCk7CisKKy8qIEdzdEVsZW1lbnQgKi8KK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiBnc3RfYWhjX3NyY19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pOworCisvKiBHc3RCYXNlU3JjICovCitzdGF0aWMgR3N0Q2FwcyAqZ3N0X2FoY19zcmNfZ2V0Y2FwcyAoR3N0QmFzZVNyYyAqIHNyYywgR3N0Q2FwcyAqIGZpbHRlcik7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfc2V0Y2FwcyAoR3N0QmFzZVNyYyAqIHNyYywgR3N0Q2FwcyAqIGNhcHMpOworc3RhdGljIEdzdENhcHMgKmdzdF9haGNfc3JjX2ZpeGF0ZSAoR3N0QmFzZVNyYyAqIGJhc2VzcmMsIEdzdENhcHMgKiBjYXBzKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY19zdGFydCAoR3N0QmFzZVNyYyAqIGJzcmMpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX3N0b3AgKEdzdEJhc2VTcmMgKiBic3JjKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY191bmxvY2sgKEdzdEJhc2VTcmMgKiBic3JjKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY191bmxvY2tfc3RvcCAoR3N0QmFzZVNyYyAqIGJzcmMpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2FoY19zcmNfY3JlYXRlIChHc3RQdXNoU3JjICogc3JjLCBHc3RCdWZmZXIgKiogYnVmZmVyKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY19xdWVyeSAoR3N0QmFzZVNyYyAqIGJzcmMsIEdzdFF1ZXJ5ICogcXVlcnkpOworCisvKiBHc3RQaG90b2dyYXBoeSAgKi8KK3N0YXRpYyB2b2lkIGdzdF9haGNfc3JjX3Bob3RvZ3JhcGh5X2luaXQgKGdwb2ludGVyIGdfaWZhY2UsCisgICAgZ3BvaW50ZXIgaWZhY2VfZGF0YSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfZ2V0X2V2X2NvbXBlbnNhdGlvbiAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBnZmxvYXQgKiBldl9jb21wKTsKK3N0YXRpYyBnYm9vbGVhbiBfd2hpdGVfYmFsYW5jZV90b19lbnVtIChjb25zdCBnY2hhciAqIHdoaXRlX2JhbGFuY2UsCisgICAgR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlICogbW9kZSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfZ2V0X3doaXRlX2JhbGFuY2VfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGUgKiB3Yl9tb2RlKTsKK3N0YXRpYyBnYm9vbGVhbiBfY29sb3JfZWZmZWN0c190b19lbnVtIChjb25zdCBnY2hhciAqIGNvbG9yX2VmZmVjdCwKKyAgICBHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGUgKiBtb2RlKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY19nZXRfY29sb3VyX3RvbmVfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGUgKiB0b25lX21vZGUpOworc3RhdGljIGdib29sZWFuIF9zY2VuZV9tb2Rlc190b19lbnVtIChjb25zdCBnY2hhciAqIHNjZW5lLAorICAgIEdzdFBob3RvZ3JhcGh5U2NlbmVNb2RlICogbW9kZSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfZ2V0X3NjZW5lX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlTY2VuZU1vZGUgKiBzY2VuZV9tb2RlKTsKK3N0YXRpYyBnYm9vbGVhbiBfZmxhc2hfbW9kZXNfdG9fZW51bSAoY29uc3QgZ2NoYXIgKiBmbGFzaCwKKyAgICBHc3RQaG90b2dyYXBoeUZsYXNoTW9kZSAqIG1vZGUpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX2dldF9mbGFzaF9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlICogZmxhc2hfbW9kZSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfZ2V0X3pvb20gKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sIGdmbG9hdCAqIHpvb20pOworc3RhdGljIGdib29sZWFuIF9hbnRpYmFuZGluZ190b19lbnVtIChjb25zdCBnY2hhciAqIGFudGliYW5kaW5nLAorICAgIEdzdFBob3RvZ3JhcGh5RmxpY2tlclJlZHVjdGlvbk1vZGUgKiBtb2RlKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY19nZXRfZmxpY2tlcl9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5RmxpY2tlclJlZHVjdGlvbk1vZGUgKiBmbGlja2VyX21vZGUpOworc3RhdGljIGdib29sZWFuIF9mb2N1c19tb2Rlc190b19lbnVtIChjb25zdCBnY2hhciAqIGZvY3VzLAorICAgIEdzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlICogbW9kZSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfZ2V0X2ZvY3VzX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlGb2N1c01vZGUgKiBmb2N1c19tb2RlKTsKKworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX3NldF9ldl9jb21wZW5zYXRpb24gKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgZ2Zsb2F0IGV2X2NvbXApOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX3NldF93aGl0ZV9iYWxhbmNlX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlIHdiX21vZGUpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX3NldF9jb2xvdXJfdG9uZV9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5Q29sb3JUb25lTW9kZSB0b25lX21vZGUpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX3NldF9zY2VuZV9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5U2NlbmVNb2RlIHNjZW5lX21vZGUpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX3NldF9mbGFzaF9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlIGZsYXNoX21vZGUpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX3NldF96b29tIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLCBnZmxvYXQgem9vbSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfc2V0X2ZsaWNrZXJfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUZsaWNrZXJSZWR1Y3Rpb25Nb2RlIGZsaWNrZXJfbW9kZSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfc2V0X2ZvY3VzX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlGb2N1c01vZGUgZm9jdXNfbW9kZSk7CisKK3N0YXRpYyBHc3RQaG90b2dyYXBoeUNhcHMgZ3N0X2FoY19zcmNfZ2V0X2NhcGFiaWxpdGllcyAoR3N0UGhvdG9ncmFwaHkgKiBwaG90byk7CitzdGF0aWMgdm9pZCBnc3RfYWhjX3NyY19zZXRfYXV0b2ZvY3VzIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLCBnYm9vbGVhbiBvbik7CisKKy8qIEdzdEFIQ1NyYyAqLworc3RhdGljIHZvaWQgZ3N0X2FoY19zcmNfY2xvc2UgKEdzdEFIQ1NyYyAqIHNlbGYpOworc3RhdGljIHZvaWQgZ3N0X2FoY19zcmNfb25fcHJldmlld19mcmFtZSAoamJ5dGVBcnJheSBkYXRhLCBncG9pbnRlciB1c2VyX2RhdGEpOworc3RhdGljIHZvaWQgZ3N0X2FoY19zcmNfb25fZXJyb3IgKGdpbnQgZXJyb3IsIGdwb2ludGVyIHVzZXJfZGF0YSk7CitzdGF0aWMgdm9pZCBnc3RfYWhjX3NyY19vbl9hdXRvX2ZvY3VzIChnYm9vbGVhbiBzdWNjZXNzLCBncG9pbnRlciB1c2VyX2RhdGEpOworCisjZGVmaW5lIE5VTV9DQUxMQkFDS19CVUZGRVJTIDUKKworI2RlZmluZSBHU1RfQUhDX1NSQ19DQVBTX1NUUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTKCJBTlkiLCAiIHsgWVYxMiwgWVVZMiwgTlYyMSwgTlYxNiwgUkdCMTYgfSIpCisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfYWhjX3NyY19wYWRfdGVtcGxhdGUgPQorR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAorICAgIEdTVF9QQURfU1JDLAorICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX0FIQ19TUkNfQ0FQU19TVFIpKTsKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X2FoY19zcmNfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2FoY19zcmNfZGVidWcKKworI2RlZmluZSBwYXJlbnRfY2xhc3MgZ3N0X2FoY19zcmNfcGFyZW50X2NsYXNzCisKK2VudW0KK3sKKyAgUFJPUF8wLAorICBQUk9QX0RFVklDRSwKKyAgUFJPUF9ERVZJQ0VfTkFNRSwKKyAgUFJPUF9ERVZJQ0VfRkFDSU5HLAorICBQUk9QX0RFVklDRV9PUklFTlRBVElPTiwKKyAgUFJPUF9GT0NBTF9MRU5HVEgsCisgIFBST1BfSE9SSVpPTlRBTF9WSUVXX0FOR0xFLAorICBQUk9QX1ZFUlRJQ0FMX1ZJRVdfQU5HTEUsCisgIFBST1BfVklERU9fU1RBQklMSVpBVElPTiwKKyAgUFJPUF9XQl9NT0RFLAorICBQUk9QX0NPTE9VUl9UT05FLAorICBQUk9QX1NDRU5FX01PREUsCisgIFBST1BfRkxBU0hfTU9ERSwKKyAgUFJPUF9OT0lTRV9SRURVQ1RJT04sCisgIFBST1BfQ0FQQUJJTElUSUVTLAorICBQUk9QX0VWX0NPTVAsCisgIFBST1BfSVNPX1NQRUVELAorICBQUk9QX0FQRVJUVVJFLAorICBQUk9QX0VYUE9TVVJFX01PREUsCisgIFBST1BfSU1BR0VfQ0FQVFVSRV9TVVBQT1JURURfQ0FQUywKKyAgUFJPUF9JTUFHRV9QUkVWSUVXX1NVUFBPUlRFRF9DQVBTLAorICBQUk9QX0ZMSUNLRVJfTU9ERSwKKyAgUFJPUF9GT0NVU19NT0RFLAorICBQUk9QX1pPT00sCisgIFBST1BfU01PT1RIX1pPT00sCisgIFBST1BfV0hJVEVfUE9JTlQsCisgIFBST1BfTUlOX0VYUE9TVVJFX1RJTUUsCisgIFBST1BfTUFYX0VYUE9TVVJFX1RJTUUsCisgIFBST1BfTEVOU19GT0NVUywKKyAgUFJPUF9FWFBPU1VSRV9USU1FLAorICBQUk9QX0NPTE9SX1RFTVBFUkFUVVJFLAorICBQUk9QX0FOQUxPR19HQUlOLAorICBQUk9QX0xBU1QKK307CisKK3N0YXRpYyBHUGFyYW1TcGVjICpwcm9wZXJ0aWVzW1BST1BfTEFTVF07CisKKyNkZWZpbmUgREVGQVVMVF9ERVZJQ0UgIjAiCisKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RBSENTcmMsIGdzdF9haGNfc3JjLCBHU1RfVFlQRV9QVVNIX1NSQywKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UgKEdTVF9UWVBFX1BIT1RPR1JBUEhZLCBnc3RfYWhjX3NyY19waG90b2dyYXBoeV9pbml0KSk7CisKKyNkZWZpbmUgQ0FNRVJBX0ZBQ0lOR19CQUNLIDAKKyNkZWZpbmUgQ0FNRVJBX0ZBQ0lOR19GUk9OVCAxCisKK3N0YXRpYyBHVHlwZQorZ3N0X2FoY19zcmNfZmFjaW5nX2dldF90eXBlICh2b2lkKQoreworICBzdGF0aWMgR1R5cGUgdHlwZSA9IDA7CisgIHN0YXRpYyBjb25zdCBHRW51bVZhbHVlIHR5cGVzW10gPSB7CisgICAge0NBTUVSQV9GQUNJTkdfQkFDSywgIkJhY2siLCAiYmFjayJ9LAorICAgIHtDQU1FUkFfRkFDSU5HX0ZST05ULCAiRnJvbnQiLCAiZnJvbnQifSwKKyAgICB7MCwgTlVMTCwgTlVMTH0KKyAgfTsKKworICBpZiAoIXR5cGUpIHsKKyAgICB0eXBlID0gZ19lbnVtX3JlZ2lzdGVyX3N0YXRpYyAoIkdzdEFIQ1NyY0ZhY2luZyIsIHR5cGVzKTsKKyAgfQorICByZXR1cm4gdHlwZTsKK30KKworI2RlZmluZSBHU1RfQUhDX1NSQ19GQUNJTkdfVFlQRSAoZ3N0X2FoY19zcmNfZmFjaW5nX2dldF90eXBlKCkpCisKK3N0YXRpYyB2b2lkCitnc3RfYWhjX3NyY19waG90b2dyYXBoeV9pbml0IChncG9pbnRlciBnX2lmYWNlLCBncG9pbnRlciBpZmFjZV9kYXRhKQoreworICBHc3RQaG90b2dyYXBoeUludGVyZmFjZSAqaWZhY2UgPSBnX2lmYWNlOworCisgIGlmYWNlLT5nZXRfZXZfY29tcGVuc2F0aW9uID0gZ3N0X2FoY19zcmNfZ2V0X2V2X2NvbXBlbnNhdGlvbjsKKyAgaWZhY2UtPmdldF93aGl0ZV9iYWxhbmNlX21vZGUgPSBnc3RfYWhjX3NyY19nZXRfd2hpdGVfYmFsYW5jZV9tb2RlOworICBpZmFjZS0+Z2V0X2NvbG9yX3RvbmVfbW9kZSA9IGdzdF9haGNfc3JjX2dldF9jb2xvdXJfdG9uZV9tb2RlOworICBpZmFjZS0+Z2V0X3NjZW5lX21vZGUgPSBnc3RfYWhjX3NyY19nZXRfc2NlbmVfbW9kZTsKKyAgaWZhY2UtPmdldF9mbGFzaF9tb2RlID0gZ3N0X2FoY19zcmNfZ2V0X2ZsYXNoX21vZGU7CisgIGlmYWNlLT5nZXRfem9vbSA9IGdzdF9haGNfc3JjX2dldF96b29tOworICBpZmFjZS0+Z2V0X2ZsaWNrZXJfbW9kZSA9IGdzdF9haGNfc3JjX2dldF9mbGlja2VyX21vZGU7CisgIGlmYWNlLT5nZXRfZm9jdXNfbW9kZSA9IGdzdF9haGNfc3JjX2dldF9mb2N1c19tb2RlOworCisgIGlmYWNlLT5zZXRfZXZfY29tcGVuc2F0aW9uID0gZ3N0X2FoY19zcmNfc2V0X2V2X2NvbXBlbnNhdGlvbjsKKyAgaWZhY2UtPnNldF93aGl0ZV9iYWxhbmNlX21vZGUgPSBnc3RfYWhjX3NyY19zZXRfd2hpdGVfYmFsYW5jZV9tb2RlOworICBpZmFjZS0+c2V0X2NvbG9yX3RvbmVfbW9kZSA9IGdzdF9haGNfc3JjX3NldF9jb2xvdXJfdG9uZV9tb2RlOworICBpZmFjZS0+c2V0X3NjZW5lX21vZGUgPSBnc3RfYWhjX3NyY19zZXRfc2NlbmVfbW9kZTsKKyAgaWZhY2UtPnNldF9mbGFzaF9tb2RlID0gZ3N0X2FoY19zcmNfc2V0X2ZsYXNoX21vZGU7CisgIGlmYWNlLT5zZXRfem9vbSA9IGdzdF9haGNfc3JjX3NldF96b29tOworICBpZmFjZS0+c2V0X2ZsaWNrZXJfbW9kZSA9IGdzdF9haGNfc3JjX3NldF9mbGlja2VyX21vZGU7CisgIGlmYWNlLT5zZXRfZm9jdXNfbW9kZSA9IGdzdF9haGNfc3JjX3NldF9mb2N1c19tb2RlOworCisgIGlmYWNlLT5nZXRfY2FwYWJpbGl0aWVzID0gZ3N0X2FoY19zcmNfZ2V0X2NhcGFiaWxpdGllczsKKyAgaWZhY2UtPnNldF9hdXRvZm9jdXMgPSBnc3RfYWhjX3NyY19zZXRfYXV0b2ZvY3VzOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FoY19zcmNfY2xhc3NfaW5pdCAoR3N0QUhDU3JjQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKyAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKKyAgR3N0UHVzaFNyY0NsYXNzICpnc3RwdXNoc3JjX2NsYXNzID0gR1NUX1BVU0hfU1JDX0NMQVNTIChrbGFzcyk7CisgIEdzdEJhc2VTcmNDbGFzcyAqZ3N0YmFzZXNyY19jbGFzcyA9IEdTVF9CQVNFX1NSQ19DTEFTUyAoa2xhc3MpOworCisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9haGNfc3JjX3NldF9wcm9wZXJ0eTsKKyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2FoY19zcmNfZ2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5kaXNwb3NlID0gZ3N0X2FoY19zcmNfZGlzcG9zZTsKKworICBlbGVtZW50X2NsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBnc3RfYWhjX3NyY19jaGFuZ2Vfc3RhdGU7CisKKyAgZ3N0YmFzZXNyY19jbGFzcy0+Z2V0X2NhcHMgPSBnc3RfYWhjX3NyY19nZXRjYXBzOworICBnc3RiYXNlc3JjX2NsYXNzLT5zZXRfY2FwcyA9IGdzdF9haGNfc3JjX3NldGNhcHM7CisgIGdzdGJhc2VzcmNfY2xhc3MtPmZpeGF0ZSA9IGdzdF9haGNfc3JjX2ZpeGF0ZTsKKyAgZ3N0YmFzZXNyY19jbGFzcy0+c3RhcnQgPSBnc3RfYWhjX3NyY19zdGFydDsKKyAgZ3N0YmFzZXNyY19jbGFzcy0+c3RvcCA9IGdzdF9haGNfc3JjX3N0b3A7CisgIGdzdGJhc2VzcmNfY2xhc3MtPnVubG9jayA9IGdzdF9haGNfc3JjX3VubG9jazsKKyAgZ3N0YmFzZXNyY19jbGFzcy0+dW5sb2NrX3N0b3AgPSBnc3RfYWhjX3NyY191bmxvY2tfc3RvcDsKKyAgZ3N0YmFzZXNyY19jbGFzcy0+cXVlcnkgPSBnc3RfYWhjX3NyY19xdWVyeTsKKworICBnc3RwdXNoc3JjX2NsYXNzLT5jcmVhdGUgPSBnc3RfYWhjX3NyY19jcmVhdGU7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9haGNfc3JjX3BhZF90ZW1wbGF0ZSkpOworCisgIC8qKgorICAgKiBHc3RBSENTcmM6ZGV2aWNlOgorICAgKgorICAgKiBUaGUgRGV2aWNlIElEIG9mIHRoZSBjYW1lcmEgdG8gY2FwdHVyZSBmcm9tCisgICAqLworICBwcm9wZXJ0aWVzW1BST1BfREVWSUNFXSA9IGdfcGFyYW1fc3BlY19zdHJpbmcgKCJkZXZpY2UiLAorICAgICAgIkRldmljZSIsICJEZXZpY2UgSUQiLCBERUZBVUxUX0RFVklDRSwKKyAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9ERVZJQ0UsCisgICAgICBwcm9wZXJ0aWVzW1BST1BfREVWSUNFXSk7CisKKyAgLyoqCisgICAqIEdzdEFIQ1NyYzpkZXZpY2UtbmFtZToKKyAgICoKKyAgICogQSB1c2VyLWZyaWVuZGx5IG5hbWUgZm9yIHRoZSBjYW1lcmEgZGV2aWNlCisgICAqLworICBwcm9wZXJ0aWVzW1BST1BfREVWSUNFX05BTUVdID0gZ19wYXJhbV9zcGVjX3N0cmluZyAoImRldmljZS1uYW1lIiwKKyAgICAgICJEZXZpY2UgbmFtZSIsICJEZXZpY2UgbmFtZSIsIE5VTEwsCisgICAgICBHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9DT05TVFJVQ1QgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9ERVZJQ0VfTkFNRSwKKyAgICAgIHByb3BlcnRpZXNbUFJPUF9ERVZJQ0VfTkFNRV0pOworCisgIC8qKgorICAgKiBHc3RBSENTcmM6ZGV2aWNlLW9yaWVudGF0aW9uOgorICAgKgorICAgKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIGN1cnJlbnRseSBzZXQgY2FtZXJhIEBkZXZpY2UuCisgICAqIFRoZSB2YWx1ZSBpcyB0aGUgYW5nbGUgdGhhdCB0aGUgY2FtZXJhIGltYWdlIG5lZWRzIHRvIGJlIHJvdGF0ZWQgY2xvY2t3aXNlCisgICAqIHNvIGl0IHNob3dzIGNvcnJlY3RseSBvbiB0aGUgZGlzcGxheSBpbiBpdHMgbmF0dXJhbCBvcmllbnRhdGlvbi4KKyAgICogSXQgc2hvdWxkIGJlIDAsIDkwLCAxODAsIG9yIDI3MC4KKyAgICovCisgIHByb3BlcnRpZXNbUFJPUF9ERVZJQ0VfT1JJRU5UQVRJT05dID0gZ19wYXJhbV9zcGVjX2ludCAoImRldmljZS1vcmllbnRhdGlvbiIsCisgICAgICAiRGV2aWNlIG9yaWVudGF0aW9uIiwgIlRoZSBvcmllbnRhdGlvbiBvZiB0aGUgY2FtZXJhIGltYWdlIiwKKyAgICAgIDAsIDM2MCwgMCwgR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0RFVklDRV9PUklFTlRBVElPTiwKKyAgICAgIHByb3BlcnRpZXNbUFJPUF9ERVZJQ0VfT1JJRU5UQVRJT05dKTsKKworICAvKioKKyAgICogR3N0QUhDU3JjOmRldmljZS1mYWNpbmc6CisgICAqCisgICAqIFRoZSBkaXJlY3Rpb24gdGhhdCB0aGUgY3VycmVudGx5IHNlbGVjdCBjYW1lcmEgQGRldmljZSBmYWNlcy4KKyAgICoKKyAgICogQSB2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYW1lcmEgaXMgZmFjaW5nIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gYXMgdGhlCisgICAqIHNjcmVlbiB3aGlsZSBhIHZhbHVlIG9mIDEgbWVhbnMgdGhlIGNhbWVyYSBpcyBmYWNpbmcgdGhlIHNhbWUgZGlyZWN0aW9uCisgICAqIGFzIHRoZSBzY3JlZW4uCisgICAqLworICBwcm9wZXJ0aWVzW1BST1BfREVWSUNFX0ZBQ0lOR10gPSBnX3BhcmFtX3NwZWNfZW51bSAoImRldmljZS1mYWNpbmciLAorICAgICAgIkRldmljZSBmYWNpbmciLCAiVGhlIGRpcmVjdGlvbiB0aGF0IHRoZSBjYW1lcmEgZmFjZXMiLAorICAgICAgR1NUX0FIQ19TUkNfRkFDSU5HX1RZUEUsIENBTUVSQV9GQUNJTkdfQkFDSywKKyAgICAgIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9ERVZJQ0VfRkFDSU5HLAorICAgICAgcHJvcGVydGllc1tQUk9QX0RFVklDRV9GQUNJTkddKTsKKworICAvKioKKyAgICogR3N0QUhDU3JjOmZvY2FsLWxlbmd0aDoKKyAgICoKKyAgICogR2V0cyB0aGUgZm9jYWwgbGVuZ3RoIChpbiBtaWxsaW1ldGVyKSBvZiB0aGUgY2FtZXJhLgorICAgKi8KKyAgcHJvcGVydGllc1tQUk9QX0ZPQ0FMX0xFTkdUSF0gPSBnX3BhcmFtX3NwZWNfZmxvYXQgKCJmb2NhbC1sZW5ndGgiLAorICAgICAgIkZvY2FsIGxlbmd0aCIsICJHZXRzIHRoZSBmb2NhbCBsZW5ndGggKGluIG1pbGxpbWV0ZXIpIG9mIHRoZSBjYW1lcmEiLAorICAgICAgLUdfTUFYRkxPQVQsIEdfTUFYRkxPQVQsIDAsIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9GT0NBTF9MRU5HVEgsCisgICAgICBwcm9wZXJ0aWVzW1BST1BfRk9DQUxfTEVOR1RIXSk7CisKKyAgLyoqCisgICAqIEdzdEFIQ1NyYzpob3Jpem9udGFsLXZpZXctYW5nbGU6CisgICAqCisgICAqIEdldHMgdGhlIGhvcml6b250YWwgYW5nbGUgb2YgdmlldyBpbiBkZWdyZWVzLgorICAgKi8KKyAgcHJvcGVydGllc1tQUk9QX0hPUklaT05UQUxfVklFV19BTkdMRV0gPQorICAgICAgZ19wYXJhbV9zcGVjX2Zsb2F0ICgiaG9yaXpvbnRhbC12aWV3LWFuZ2xlIiwgIkhvcml6b250YWwgdmlldyBhbmdsZSIsCisgICAgICAiR2V0cyB0aGUgaG9yaXpvbnRhbCBhbmdsZSBvZiB2aWV3IGluIGRlZ3JlZXMiLAorICAgICAgLUdfTUFYRkxPQVQsIEdfTUFYRkxPQVQsIDAsIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9IT1JJWk9OVEFMX1ZJRVdfQU5HTEUsCisgICAgICBwcm9wZXJ0aWVzW1BST1BfSE9SSVpPTlRBTF9WSUVXX0FOR0xFXSk7CisKKyAgLyoqCisgICAqIEdzdEFIQ1NyYzp2ZXJ0aWNhbC12aWV3LWFuZ2xlOgorICAgKgorICAgKiBHZXRzIHRoZSB2ZXJ0aWNhbCBhbmdsZSBvZiB2aWV3IGluIGRlZ3JlZXMuCisgICAqLworICBwcm9wZXJ0aWVzW1BST1BfVkVSVElDQUxfVklFV19BTkdMRV0gPQorICAgICAgZ19wYXJhbV9zcGVjX2Zsb2F0ICgidmVydGljYWwtdmlldy1hbmdsZSIsICJWZXJ0aWNhbCB2aWV3IGFuZ2xlIiwKKyAgICAgICJHZXRzIHRoZSB2ZXJ0aWNhbCBhbmdsZSBvZiB2aWV3IGluIGRlZ3JlZXMiLAorICAgICAgLUdfTUFYRkxPQVQsIEdfTUFYRkxPQVQsIDAsIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9WRVJUSUNBTF9WSUVXX0FOR0xFLAorICAgICAgcHJvcGVydGllc1tQUk9QX1ZFUlRJQ0FMX1ZJRVdfQU5HTEVdKTsKKworICAvKioKKyAgICogR3N0QUhDU3JjOnZpZGVvLXN0YWJpbGl6YXRpbzoKKyAgICoKKyAgICogVmlkZW8gc3RhYmlsaXphdGlvbiByZWR1Y2VzIHRoZSBzaGFraW5nIGR1ZSB0byB0aGUgbW90aW9uIG9mIHRoZSBjYW1lcmEuCisgICAqLworICBwcm9wZXJ0aWVzW1BST1BfVklERU9fU1RBQklMSVpBVElPTl0gPQorICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJ2aWRlby1zdGFiaWxpemF0aW9uIiwgIlZpZGVvIHN0YWJpbGl6YXRpb24iLAorICAgICAgIlZpZGVvIHN0YWJpbGl6YXRpb24gcmVkdWNlcyB0aGUgc2hha2luZyBkdWUgdG8gdGhlIG1vdGlvbiBvZiB0aGUgY2FtZXJhIiwKKyAgICAgIEZBTFNFLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1ZJREVPX1NUQUJJTElaQVRJT04sCisgICAgICBwcm9wZXJ0aWVzW1BST1BfVklERU9fU1RBQklMSVpBVElPTl0pOworCisgIC8qKgorICAgKiBHc3RBSENTcmM6c21vb3RoLXpvb206CisgICAqCisgICAqIElmIGVuYWJsZWQsIHRoZW4gc21vb3RoIHpvb21pbmcgd2lsbCBiZSB1c2VkIHdoZW4gdGhlIEB6b29tIHByb3BlcnR5IGlzCisgICAqIGNoYW5nZWQuIEluIHRoYXQgY2FzZSwgdGhlIEB6b29tIHByb3BlcnR5IGNhbiBiZSBxdWVyaWVkIHRvIGtub3cgdGhlCisgICAqIGN1cnJlbnQgem9vbSBsZXZlbCB3aGlsZSB0aGUgc21vb3RoIHpvb20gaXMgaW4gcHJvZ3Jlc3MuCisgICAqLworICBwcm9wZXJ0aWVzW1BST1BfU01PT1RIX1pPT01dID0gZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJzbW9vdGgtem9vbSIsCisgICAgICAiU21vb3RoIFpvb20iLCAiVXNlIHNtb290aCB6b29tIHdoZW4gYXZhaWxhYmxlIiwKKyAgICAgIEZBTFNFLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NNT09USF9aT09NLAorICAgICAgcHJvcGVydGllc1tQUk9QX1NNT09USF9aT09NXSk7CisKKyAgLyogT3ZlcnJpZGUgR3N0UGhvdG9ncmFwaHkgcHJvcGVydGllcyAqLworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9XQl9NT0RFLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfV0JfTU9ERSk7CisgIHByb3BlcnRpZXNbUFJPUF9XQl9NT0RFXSA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9XQl9NT0RFKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9DT0xPVVJfVE9ORSwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0NPTE9SX1RPTkUpOworICBwcm9wZXJ0aWVzW1BST1BfQ09MT1VSX1RPTkVdID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0NPTE9SX1RPTkUpOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NDRU5FX01PREUsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9TQ0VORV9NT0RFKTsKKyAgcHJvcGVydGllc1tQUk9QX1NDRU5FX01PREVdID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX1NDRU5FX01PREUpOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0ZMQVNIX01PREUsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9GTEFTSF9NT0RFKTsKKyAgcHJvcGVydGllc1tQUk9QX0ZMQVNIX01PREVdID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0ZMQVNIX01PREUpOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX05PSVNFX1JFRFVDVElPTiwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX05PSVNFX1JFRFVDVElPTik7CisgIHByb3BlcnRpZXNbUFJPUF9OT0lTRV9SRURVQ1RJT05dID0KKyAgICAgIGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9OT0lTRV9SRURVQ1RJT04pOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0NBUEFCSUxJVElFUywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0NBUEFCSUxJVElFUyk7CisgIHByb3BlcnRpZXNbUFJPUF9DQVBBQklMSVRJRVNdID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0NBUEFCSUxJVElFUyk7CisKKyAgZ19vYmplY3RfY2xhc3Nfb3ZlcnJpZGVfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRVZfQ09NUCwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0VWX0NPTVApOworICBwcm9wZXJ0aWVzW1BST1BfRVZfQ09NUF0gPSBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfRVZfQ09NUCk7CisKKyAgZ19vYmplY3RfY2xhc3Nfb3ZlcnJpZGVfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfSVNPX1NQRUVELAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfSVNPX1NQRUVEKTsKKyAgcHJvcGVydGllc1tQUk9QX0lTT19TUEVFRF0gPSBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfSVNPX1NQRUVEKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9BUEVSVFVSRSwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0FQRVJUVVJFKTsKKyAgcHJvcGVydGllc1tQUk9QX0FQRVJUVVJFXSA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9BUEVSVFVSRSk7CisKKyNpZiAwCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0VYUE9TVVJFX01PREUsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9FWFBPU1VSRV9NT0RFKTsKKyAgcHJvcGVydGllc1tQUk9QX0VYUE9TVVJFXSA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9FWFBPU1VSRV9NT0RFKTsKKyNlbmRpZgorCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9JTUFHRV9DQVBUVVJFX1NVUFBPUlRFRF9DQVBTLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfSU1BR0VfQ0FQVFVSRV9TVVBQT1JURURfQ0FQUyk7CisgIHByb3BlcnRpZXNbUFJPUF9JTUFHRV9DQVBUVVJFX1NVUFBPUlRFRF9DQVBTXSA9CisgICAgICBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfSU1BR0VfQ0FQVFVSRV9TVVBQT1JURURfQ0FQUyk7CisKKyAgZ19vYmplY3RfY2xhc3Nfb3ZlcnJpZGVfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX0lNQUdFX1BSRVZJRVdfU1VQUE9SVEVEX0NBUFMsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9JTUFHRV9QUkVWSUVXX1NVUFBPUlRFRF9DQVBTKTsKKyAgcHJvcGVydGllc1tQUk9QX0lNQUdFX1BSRVZJRVdfU1VQUE9SVEVEX0NBUFNdID0KKyAgICAgIGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9JTUFHRV9QUkVWSUVXX1NVUFBPUlRFRF9DQVBTKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9GTElDS0VSX01PREUsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9GTElDS0VSX01PREUpOworICBwcm9wZXJ0aWVzW1BST1BfRkxJQ0tFUl9NT0RFXSA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9GTElDS0VSX01PREUpOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0ZPQ1VTX01PREUsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9GT0NVU19NT0RFKTsKKyAgcHJvcGVydGllc1tQUk9QX0ZPQ1VTX01PREVdID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0ZPQ1VTX01PREUpOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1pPT00sCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9aT09NKTsKKyAgcHJvcGVydGllc1tQUk9QX1pPT01dID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX1pPT00pOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1dISVRFX1BPSU5ULAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfV0hJVEVfUE9JTlQpOworICBwcm9wZXJ0aWVzW1BST1BfV0hJVEVfUE9JTlRdID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX1dISVRFX1BPSU5UKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NSU5fRVhQT1NVUkVfVElNRSwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX01JTl9FWFBPU1VSRV9USU1FKTsKKyAgcHJvcGVydGllc1tQUk9QX01JTl9FWFBPU1VSRV9USU1FXSA9CisgICAgICBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfTUlOX0VYUE9TVVJFX1RJTUUpOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX01BWF9FWFBPU1VSRV9USU1FLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfTUFYX0VYUE9TVVJFX1RJTUUpOworICBwcm9wZXJ0aWVzW1BST1BfTUFYX0VYUE9TVVJFX1RJTUVdID0KKyAgICAgIGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9NQVhfRVhQT1NVUkVfVElNRSk7CisKKyAgZ19vYmplY3RfY2xhc3Nfb3ZlcnJpZGVfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTEVOU19GT0NVUywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0xFTlNfRk9DVVMpOworICBwcm9wZXJ0aWVzW1BST1BfTEVOU19GT0NVU10gPSBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfTEVOU19GT0NVUyk7CisKKyAgZ19vYmplY3RfY2xhc3Nfb3ZlcnJpZGVfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRVhQT1NVUkVfVElNRSwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0VYUE9TVVJFX1RJTUUpOworICBwcm9wZXJ0aWVzW1BST1BfRVhQT1NVUkVfVElNRV0gPSBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfRVhQT1NVUkVfVElNRSk7CisKKyAgZ19vYmplY3RfY2xhc3Nfb3ZlcnJpZGVfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQ09MT1JfVEVNUEVSQVRVUkUsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9DT0xPUl9URU1QRVJBVFVSRSk7CisgIHByb3BlcnRpZXNbUFJPUF9DT0xPUl9URU1QRVJBVFVSRV0gPQorICAgICAgZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0NPTE9SX1RFTVBFUkFUVVJFKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9BTkFMT0dfR0FJTiwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0FOQUxPR19HQUlOKTsKKyAgcHJvcGVydGllc1tQUk9QX0FOQUxPR19HQUlOXSA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9BTkFMT0dfR0FJTik7CisKKworCisgIGtsYXNzLT5wcm9iZV9wcm9wZXJ0aWVzID0gTlVMTDsKKworICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAorICAgICAgIkFuZHJvaWQgQ2FtZXJhIFNvdXJjZSIsCisgICAgICAiU291cmNlL1ZpZGVvIiwKKyAgICAgICJSZWFkcyBmcmFtZXMgZnJvbSBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSBjbGFzcyBpbnRvIGJ1ZmZlcnMiLAorICAgICAgIllvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+Iik7CisKKyAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9haGNfc3JjX2RlYnVnLCAiYWhjc3JjIiwgMCwKKyAgICAgICJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSBzb3VyY2UgZWxlbWVudCIpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19kYXRhX3F1ZXVlX2NoZWNrX2Z1bGwgKEdzdERhdGFRdWV1ZSAqIHF1ZXVlLCBndWludCB2aXNpYmxlLAorICAgIGd1aW50IGJ5dGVzLCBndWludDY0IHRpbWUsIGdwb2ludGVyIGNoZWNrZGF0YSkKK3sKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FoY19zcmNfaW5pdCAoR3N0QUhDU3JjICogc2VsZikKK3sKKyAgZ3N0X2Jhc2Vfc3JjX3NldF9saXZlIChHU1RfQkFTRV9TUkMgKHNlbGYpLCBUUlVFKTsKKyAgZ3N0X2Jhc2Vfc3JjX3NldF9mb3JtYXQgKEdTVF9CQVNFX1NSQyAoc2VsZiksIEdTVF9GT1JNQVRfVElNRSk7CisgIGdzdF9iYXNlX3NyY19zZXRfZG9fdGltZXN0YW1wIChHU1RfQkFTRV9TUkMgKHNlbGYpLCBGQUxTRSk7CisKKyAgc2VsZi0+Y2FtZXJhID0gTlVMTDsKKyAgc2VsZi0+dGV4dHVyZSA9IE5VTEw7CisgIHNlbGYtPmRhdGEgPSBOVUxMOworICBzZWxmLT5xdWV1ZSA9IGdzdF9kYXRhX3F1ZXVlX25ldyAoX2RhdGFfcXVldWVfY2hlY2tfZnVsbCwgTlVMTCwgTlVMTCwgTlVMTCk7CisgIHNlbGYtPnN0YXJ0ID0gRkFMU0U7CisgIHNlbGYtPnByZXZpb3VzX3RzID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKworICBnX211dGV4X2luaXQgKCZzZWxmLT5tdXRleCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYWhjX3NyY19kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAob2JqZWN0KTsKKworICBpZiAoc2VsZi0+cXVldWUpCisgICAgZ19vYmplY3RfdW5yZWYgKHNlbGYtPnF1ZXVlKTsKKyAgc2VsZi0+cXVldWUgPSBOVUxMOworCisgIGdfbXV0ZXhfY2xlYXIgKCZzZWxmLT5tdXRleCk7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmRpc3Bvc2UgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYWhjX3NyY19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKG9iamVjdCk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInNldCBwcm9wcyAlZCIsIHByb3BfaWQpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9ERVZJQ0U6eworICAgICAgY29uc3QgZ2NoYXIgKmRldiA9IGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpOworICAgICAgZ2NoYXIgKmVuZHB0ciA9IE5VTEw7CisgICAgICBndWludDY0IGRldmljZTsKKworICAgICAgZGV2aWNlID0gZ19hc2NpaV9zdHJ0b2xsIChkZXYsICZlbmRwdHIsIDEwKTsKKyAgICAgIGlmIChlbmRwdHIgIT0gZGV2ICYmIGVuZHB0clswXSA9PSAwICYmIGRldmljZSA8IEdfTUFYSU5UKQorICAgICAgICBzZWxmLT5kZXZpY2UgPSAoZ2ludCkgZGV2aWNlOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9WSURFT19TVEFCSUxJWkFUSU9OOgorICAgICAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgICAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICAgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICAgICAgaWYgKHBhcmFtcykgeworICAgICAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfdmlkZW9fc3RhYmlsaXphdGlvbiAocGFyYW1zLAorICAgICAgICAgICAgICBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSkpOworICAgICAgICAgIGdzdF9haF9jYW1lcmFfc2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSwgcGFyYW1zKTsKKyAgICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NNT09USF9aT09NOgorICAgICAgc2VsZi0+c21vb3RoX3pvb20gPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0JfTU9ERTp7CisgICAgICBHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGUgd2IgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7CisKKyAgICAgIGdzdF9haGNfc3JjX3NldF93aGl0ZV9iYWxhbmNlX21vZGUgKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksIHdiKTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQ09MT1VSX1RPTkU6eworICAgICAgR3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlIHRvbmUgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7CisKKyAgICAgIGdzdF9haGNfc3JjX3NldF9jb2xvdXJfdG9uZV9tb2RlIChHU1RfUEhPVE9HUkFQSFkgKHNlbGYpLCB0b25lKTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0NFTkVfTU9ERTp7CisgICAgICBHc3RQaG90b2dyYXBoeVNjZW5lTW9kZSBzY2VuZSA9IGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKTsKKworICAgICAgZ3N0X2FoY19zcmNfc2V0X3NjZW5lX21vZGUgKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksIHNjZW5lKTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRkxBU0hfTU9ERTp7CisgICAgICBHc3RQaG90b2dyYXBoeUZsYXNoTW9kZSBmbGFzaCA9IGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKTsKKworICAgICAgZ3N0X2FoY19zcmNfc2V0X2ZsYXNoX21vZGUgKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksIGZsYXNoKTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRVZfQ09NUDp7CisgICAgICBnZmxvYXQgZXYgPSBnX3ZhbHVlX2dldF9mbG9hdCAodmFsdWUpOworCisgICAgICBnc3RfYWhjX3NyY19zZXRfZXZfY29tcGVuc2F0aW9uIChHU1RfUEhPVE9HUkFQSFkgKHNlbGYpLCBldik7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZMSUNLRVJfTU9ERTp7CisgICAgICBHc3RQaG90b2dyYXBoeUZsaWNrZXJSZWR1Y3Rpb25Nb2RlIGZsaWNrZXIgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7CisKKyAgICAgIGdzdF9haGNfc3JjX3NldF9mbGlja2VyX21vZGUgKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksIGZsaWNrZXIpOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GT0NVU19NT0RFOnsKKyAgICAgIEdzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlIGZvY3VzID0gZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOworCisgICAgICBnc3RfYWhjX3NyY19zZXRfZm9jdXNfbW9kZSAoR1NUX1BIT1RPR1JBUEhZIChzZWxmKSwgZm9jdXMpOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9aT09NOnsKKyAgICAgIGdmbG9hdCB6b29tID0gZ192YWx1ZV9nZXRfZmxvYXQgKHZhbHVlKTsKKworICAgICAgZ3N0X2FoY19zcmNfc2V0X3pvb20gKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksIHpvb20pOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9OT0lTRV9SRURVQ1RJT046CisgICAgY2FzZSBQUk9QX0lTT19TUEVFRDoKKyAgICBjYXNlIFBST1BfQVBFUlRVUkU6CisgICAgY2FzZSBQUk9QX0VYUE9TVVJFX01PREU6CisgICAgY2FzZSBQUk9QX0lNQUdFX0NBUFRVUkVfU1VQUE9SVEVEX0NBUFM6CisgICAgY2FzZSBQUk9QX0lNQUdFX1BSRVZJRVdfU1VQUE9SVEVEX0NBUFM6CisgICAgY2FzZSBQUk9QX1dISVRFX1BPSU5UOgorICAgIGNhc2UgUFJPUF9NSU5fRVhQT1NVUkVfVElNRToKKyAgICBjYXNlIFBST1BfTUFYX0VYUE9TVVJFX1RJTUU6CisgICAgY2FzZSBQUk9QX0xFTlNfRk9DVVM6CisgICAgY2FzZSBQUk9QX0VYUE9TVVJFX1RJTUU6CisgICAgY2FzZSBQUk9QX0NPTE9SX1RFTVBFUkFUVVJFOgorICAgIGNhc2UgUFJPUF9BTkFMT0dfR0FJTjoKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9haGNfc3JjX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAob2JqZWN0KTsKKyAgKHZvaWQpIHNlbGY7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX0RFVklDRTp7CisgICAgICBnY2hhciAqZGV2ID0gZ19zdHJkdXBfcHJpbnRmICgiJWQiLCBzZWxmLT5kZXZpY2UpOworCisgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nICh2YWx1ZSwgZGV2KTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfREVWSUNFX05BTUU6eworICAgICAgR3N0QUhDQ2FtZXJhSW5mbyBpbmZvOworICAgICAgZ2NoYXIgKmRldjsKKworICAgICAgaWYgKGdzdF9haF9jYW1lcmFfZ2V0X2NhbWVyYV9pbmZvIChzZWxmLT5kZXZpY2UsICZpbmZvKSkKKyAgICAgICAgZGV2ID0gZ19zdHJkdXBfcHJpbnRmICgiIyVkICVzIiwgc2VsZi0+ZGV2aWNlLAorICAgICAgICAgICAgaW5mby5mYWNpbmcgPT0gQ2FtZXJhSW5mb19DQU1FUkFfRkFDSU5HX0JBQ0sgPyAiQmFjayIgOiAiRnJvbnQiKTsKKyAgICAgIGVsc2UKKyAgICAgICAgZGV2ID0gZ19zdHJkdXBfcHJpbnRmICgiIyVkIiwgc2VsZi0+ZGV2aWNlKTsKKworICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyAodmFsdWUsIGRldik7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RFVklDRV9GQUNJTkc6eworICAgICAgR3N0QUhDQ2FtZXJhSW5mbyBpbmZvOworCisgICAgICBpZiAoZ3N0X2FoX2NhbWVyYV9nZXRfY2FtZXJhX2luZm8gKHNlbGYtPmRldmljZSwgJmluZm8pKQorICAgICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgaW5mby5mYWNpbmcgPT0gQ2FtZXJhSW5mb19DQU1FUkFfRkFDSU5HX0JBQ0sgPworICAgICAgICAgICAgQ0FNRVJBX0ZBQ0lOR19CQUNLIDogQ0FNRVJBX0ZBQ0lOR19GUk9OVCk7CisgICAgICBlbHNlCisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCBDQU1FUkFfRkFDSU5HX0JBQ0spOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ERVZJQ0VfT1JJRU5UQVRJT046eworICAgICAgR3N0QUhDQ2FtZXJhSW5mbyBpbmZvOworCisgICAgICBpZiAoZ3N0X2FoX2NhbWVyYV9nZXRfY2FtZXJhX2luZm8gKHNlbGYtPmRldmljZSwgJmluZm8pKQorICAgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBpbmZvLm9yaWVudGF0aW9uKTsKKyAgICAgIGVsc2UKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgMCk7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZPQ0FMX0xFTkdUSDoKKyAgICAgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICAgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgICAgIGlmIChwYXJhbXMpIHsKKyAgICAgICAgICBnX3ZhbHVlX3NldF9mbG9hdCAodmFsdWUsCisgICAgICAgICAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19nZXRfZm9jYWxfbGVuZ3RoIChwYXJhbXMpKTsKKyAgICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0hPUklaT05UQUxfVklFV19BTkdMRToKKyAgICAgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICAgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgICAgIGlmIChwYXJhbXMpIHsKKyAgICAgICAgICBnX3ZhbHVlX3NldF9mbG9hdCAodmFsdWUsCisgICAgICAgICAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19nZXRfaG9yaXpvbnRhbF92aWV3X2FuZ2xlIChwYXJhbXMpKTsKKyAgICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1ZFUlRJQ0FMX1ZJRVdfQU5HTEU6CisgICAgICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgICAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgICAgICBpZiAocGFyYW1zKSB7CisgICAgICAgICAgZ192YWx1ZV9zZXRfZmxvYXQgKHZhbHVlLAorICAgICAgICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3ZlcnRpY2FsX3ZpZXdfYW5nbGUgKHBhcmFtcykpOworICAgICAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVklERU9fU1RBQklMSVpBVElPTjoKKyAgICAgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICAgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgICAgIGlmIChwYXJhbXMpIHsKKyAgICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwKKyAgICAgICAgICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF92aWRlb19zdGFiaWxpemF0aW9uIChwYXJhbXMpKTsKKyAgICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NNT09USF9aT09NOgorICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIHNlbGYtPnNtb290aF96b29tKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9XQl9NT0RFOnsKKyAgICAgIEdzdFBob3RvZ3JhcGh5V2hpdGVCYWxhbmNlTW9kZSB3YjsKKworICAgICAgaWYgKGdzdF9haGNfc3JjX2dldF93aGl0ZV9iYWxhbmNlX21vZGUgKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksICZ3YikpCisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCB3Yik7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NPTE9VUl9UT05FOnsKKyAgICAgIEdzdFBob3RvZ3JhcGh5Q29sb3JUb25lTW9kZSB0b25lOworCisgICAgICBpZiAoZ3N0X2FoY19zcmNfZ2V0X2NvbG91cl90b25lX21vZGUgKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksICZ0b25lKSkKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIHRvbmUpOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TQ0VORV9NT0RFOnsKKyAgICAgIEdzdFBob3RvZ3JhcGh5U2NlbmVNb2RlIHNjZW5lOworCisgICAgICBpZiAoZ3N0X2FoY19zcmNfZ2V0X3NjZW5lX21vZGUgKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksICZzY2VuZSkpCisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCBzY2VuZSk7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZMQVNIX01PREU6eworICAgICAgR3N0UGhvdG9ncmFwaHlGbGFzaE1vZGUgZmxhc2g7CisKKyAgICAgIGlmIChnc3RfYWhjX3NyY19nZXRfZmxhc2hfbW9kZSAoR1NUX1BIT1RPR1JBUEhZIChzZWxmKSwgJmZsYXNoKSkKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIGZsYXNoKTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfQ0FQQUJJTElUSUVTOnsKKyAgICAgIEdzdFBob3RvZ3JhcGh5Q2FwcyBjYXBzOworCisgICAgICBjYXBzID0gZ3N0X2FoY19zcmNfZ2V0X2NhcGFiaWxpdGllcyAoR1NUX1BIT1RPR1JBUEhZIChzZWxmKSk7CisgICAgICBnX3ZhbHVlX3NldF91bG9uZyAodmFsdWUsIGNhcHMpOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FVl9DT01QOnsKKyAgICAgIGdmbG9hdCBldjsKKworICAgICAgaWYgKGdzdF9haGNfc3JjX2dldF9ldl9jb21wZW5zYXRpb24gKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksICZldikpCisgICAgICAgIGdfdmFsdWVfc2V0X2Zsb2F0ICh2YWx1ZSwgZXYpOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GTElDS0VSX01PREU6eworICAgICAgR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZSBmbGlja2VyOworCisgICAgICBpZiAoZ3N0X2FoY19zcmNfZ2V0X2ZsaWNrZXJfbW9kZSAoR1NUX1BIT1RPR1JBUEhZIChzZWxmKSwgJmZsaWNrZXIpKQorICAgICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgZmxpY2tlcik7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZPQ1VTX01PREU6eworICAgICAgR3N0UGhvdG9ncmFwaHlGb2N1c01vZGUgZm9jdXM7CisKKyAgICAgIGlmIChnc3RfYWhjX3NyY19nZXRfZm9jdXNfbW9kZSAoR1NUX1BIT1RPR1JBUEhZIChzZWxmKSwgJmZvY3VzKSkKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIGZvY3VzKTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfWk9PTTp7CisgICAgICBnZmxvYXQgem9vbTsKKworICAgICAgaWYgKGdzdF9haGNfc3JjX2dldF96b29tIChHU1RfUEhPVE9HUkFQSFkgKHNlbGYpLCAmem9vbSkpCisgICAgICAgIGdfdmFsdWVfc2V0X2Zsb2F0ICh2YWx1ZSwgem9vbSk7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0lNQUdFX0NBUFRVUkVfU1VQUE9SVEVEX0NBUFM6CisgICAgY2FzZSBQUk9QX0lNQUdFX1BSRVZJRVdfU1VQUE9SVEVEX0NBUFM6CisgICAgY2FzZSBQUk9QX05PSVNFX1JFRFVDVElPTjoKKyAgICBjYXNlIFBST1BfSVNPX1NQRUVEOgorICAgIGNhc2UgUFJPUF9BUEVSVFVSRToKKyAgICBjYXNlIFBST1BfRVhQT1NVUkVfTU9ERToKKyAgICBjYXNlIFBST1BfV0hJVEVfUE9JTlQ6CisgICAgY2FzZSBQUk9QX01JTl9FWFBPU1VSRV9USU1FOgorICAgIGNhc2UgUFJPUF9NQVhfRVhQT1NVUkVfVElNRToKKyAgICBjYXNlIFBST1BfTEVOU19GT0NVUzoKKyAgICBjYXNlIFBST1BfRVhQT1NVUkVfVElNRToKKyAgICBjYXNlIFBST1BfQ09MT1JfVEVNUEVSQVRVUkU6CisgICAgY2FzZSBQUk9QX0FOQUxPR19HQUlOOgorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCisjaWYgMAorc3RhdGljIGNvbnN0IEdMaXN0ICoKK2dzdF9haGNfc3JjX3Byb2JlX2dldF9wcm9wZXJ0aWVzIChHc3RQcm9wZXJ0eVByb2JlICogcHJvYmUpCit7CisgIEdzdEFIQ1NyY0NsYXNzICphaGNfY2xhc3MgPSBHU1RfQUhDX1NSQ19DTEFTUyAocHJvYmUpOworICBHTGlzdCAqKmxpc3QgPSAmYWhjX2NsYXNzLT5wcm9iZV9wcm9wZXJ0aWVzOworCisgIGlmICghKmxpc3QpIHsKKyAgICAqbGlzdCA9IGdfbGlzdF9hcHBlbmQgKCpsaXN0LCBwcm9wZXJ0aWVzW1BST1BfREVWSUNFXSk7CisgICAgKmxpc3QgPSBnX2xpc3RfYXBwZW5kICgqbGlzdCwgcHJvcGVydGllc1tQUk9QX0VWX0NPTVBdKTsKKyAgICAqbGlzdCA9IGdfbGlzdF9hcHBlbmQgKCpsaXN0LCBwcm9wZXJ0aWVzW1BST1BfWk9PTV0pOworICAgICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIHByb3BlcnRpZXNbUFJPUF9XQl9NT0RFXSk7CisgICAgKmxpc3QgPSBnX2xpc3RfYXBwZW5kICgqbGlzdCwgcHJvcGVydGllc1tQUk9QX0NPTE9VUl9UT05FXSk7CisgICAgKmxpc3QgPSBnX2xpc3RfYXBwZW5kICgqbGlzdCwgcHJvcGVydGllc1tQUk9QX0ZMQVNIX01PREVdKTsKKyAgICAqbGlzdCA9IGdfbGlzdF9hcHBlbmQgKCpsaXN0LCBwcm9wZXJ0aWVzW1BST1BfRk9DVVNfTU9ERV0pOworICAgICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIHByb3BlcnRpZXNbUFJPUF9TQ0VORV9NT0RFXSk7CisgICAgKmxpc3QgPSBnX2xpc3RfYXBwZW5kICgqbGlzdCwgcHJvcGVydGllc1tQUk9QX0ZMSUNLRVJfTU9ERV0pOworICB9CisKKyAgcmV0dXJuICpsaXN0OworfQorCisjZGVmaW5lIFBST0JFX0dFVF9FTlVNX1ZBTFVFUyhuYW1lLCB0eXBlLCBzdHJ1Y3RfbmFtZSkgICAgICAgICAgICAgICAgICBcCisgIGlmIChzZWxmLT5jYW1lcmEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsgICAgICAgICAgICAgICBcCisgICAgaWYgKHBhcmFtcykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBHTGlzdCAqbGlzdCA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkXyMjbmFtZSAocGFyYW1zKTsgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBpZiAobGlzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgR1ZhbHVlIHZhbHVlID0geyAwIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgR0xpc3QgKmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgYXJyYXkgPSBnX3ZhbHVlX2FycmF5X25ldyAoZ19saXN0X2xlbmd0aCAobGlzdCkpOyAgICAgICAgICAgICBcCisgICAgICAgICAgZ192YWx1ZV9pbml0ICgmdmFsdWUsIHR5cGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZm9yIChpID0gbGlzdDsgaTsgaSA9IGktPm5leHQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBzdHJ1Y3RfbmFtZSBtb2RlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjb25zdCBnY2hhciAqbmFtZSA9IGktPmRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAoXyMjbmFtZSMjX3RvX2VudW0gKG5hbWUsICZtb2RlKSkgeyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgIGdfdmFsdWVfc2V0X2VudW0gKCZ2YWx1ZSwgbW9kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgIGdfdmFsdWVfYXJyYXlfYXBwZW5kIChhcnJheSwgJnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgZ192YWx1ZV91bnNldCAoJnZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkXyMjbmFtZSMjX2ZyZWUgKGxpc3QpOyAgICAgICAgICAgICAgICBcCisgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIH0KKworCitzdGF0aWMgR1ZhbHVlQXJyYXkgKgorZ3N0X2FoY19zcmNfcHJvYmVfZ2V0X3ZhbHVlcyAoR3N0UHJvcGVydHlQcm9iZSAqIHByb2JlLAorICAgIGd1aW50IHByb3BfaWQsIGNvbnN0IEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHByb2JlKTsKKyAgR1ZhbHVlQXJyYXkgKmFycmF5ID0gTlVMTDsKKworICAvKiBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IHJldHVybnMgb3ZlcnJpZGVuIHByb3BlcnR5IHdpdGgKKyAgICogcGFyYW1faWQgPT0gMCwgc28gd2UgY2FuJ3Qgc3dpdGNoL2Nhc2UgdGhlIHByb3BfaWQgYW5kCisgICAqIHdlIG5lZWQgdG8gY2hlY2sgdGhlIHBzcGVjIGluc3RlYWQgKi8KKyAgaWYgKHBzcGVjID09IHByb3BlcnRpZXNbUFJPUF9ERVZJQ0VdKSB7CisgICAgR1ZhbHVlIHZhbHVlID0geyAwIH07CisgICAgZ2ludCBudW1fY2FtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X251bWJlcl9vZl9jYW1lcmFzICgpOworICAgIGdpbnQgaTsKKworICAgIGFycmF5ID0gZ192YWx1ZV9hcnJheV9uZXcgKG51bV9jYW1zKTsKKyAgICBnX3ZhbHVlX2luaXQgKCZ2YWx1ZSwgR19UWVBFX1NUUklORyk7CisgICAgZm9yIChpID0gMDsgaSA8IG51bV9jYW1zOyBpKyspIHsKKyAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcgKCZ2YWx1ZSwgZ19zdHJkdXBfcHJpbnRmICgiJWQiLCBpKSk7CisgICAgICBnX3ZhbHVlX2FycmF5X2FwcGVuZCAoYXJyYXksICZ2YWx1ZSk7CisgICAgfQorICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWx1ZSk7CisgIH0gZWxzZSBpZiAocHNwZWMgPT0gcHJvcGVydGllc1tQUk9QX0VWX0NPTVBdKSB7CisgICAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgICAgaWYgKHBhcmFtcykgeworICAgICAgICBnaW50IG1pbiwgbWF4OworICAgICAgICBnZmxvYXQgc3RlcDsKKworICAgICAgICBtaW4gPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21pbl9leHBvc3VyZV9jb21wZW5zYXRpb24gKHBhcmFtcyk7CisgICAgICAgIG1heCA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfbWF4X2V4cG9zdXJlX2NvbXBlbnNhdGlvbiAocGFyYW1zKTsKKyAgICAgICAgc3RlcCA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfZXhwb3N1cmVfY29tcGVuc2F0aW9uX3N0ZXAgKHBhcmFtcyk7CisKKyAgICAgICAgaWYgKHN0ZXAgIT0gMC4wICYmIG1pbiAhPSBtYXgpIHsKKyAgICAgICAgICBHVmFsdWUgdmFsdWUgPSB7IDAgfTsKKyAgICAgICAgICBnaW50IGk7CisKKyAgICAgICAgICAvKiBNaW4gYW5kIE1heCBhcmUgaW5jbHVzaXZlICovCisgICAgICAgICAgYXJyYXkgPSBnX3ZhbHVlX2FycmF5X25ldyAobWF4IC0gbWluICsgMSk7CisgICAgICAgICAgZ192YWx1ZV9pbml0ICgmdmFsdWUsIEdfVFlQRV9GTE9BVCk7CisgICAgICAgICAgZm9yIChpID0gbWluOyBpIDw9IG1heDsgaSsrKSB7CisgICAgICAgICAgICBnX3ZhbHVlX3NldF9mbG9hdCAoJnZhbHVlLCBzdGVwICogaSk7CisgICAgICAgICAgICBnX3ZhbHVlX2FycmF5X2FwcGVuZCAoYXJyYXksICZ2YWx1ZSk7CisgICAgICAgICAgfQorICAgICAgICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSBpZiAocHNwZWMgPT0gcHJvcGVydGllc1tQUk9QX1pPT01dKSB7CisgICAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgICAgaWYgKHBhcmFtcykgeworICAgICAgICBHTGlzdCAqem9vbV9yYXRpb3MgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3pvb21fcmF0aW9zIChwYXJhbXMpOworICAgICAgICBnaW50IG1heF96b29tID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9tYXhfem9vbSAocGFyYW1zKTsKKworICAgICAgICBpZiAoem9vbV9yYXRpb3MgJiYgZ19saXN0X2xlbmd0aCAoem9vbV9yYXRpb3MpID09IChtYXhfem9vbSArIDEpKSB7CisgICAgICAgICAgR1ZhbHVlIHZhbHVlID0geyAwIH07CisgICAgICAgICAgR0xpc3QgKmk7CisKKyAgICAgICAgICBhcnJheSA9IGdfdmFsdWVfYXJyYXlfbmV3IChtYXhfem9vbSArIDEpOworICAgICAgICAgIGdfdmFsdWVfaW5pdCAoJnZhbHVlLCBHX1RZUEVfRkxPQVQpOworICAgICAgICAgIGZvciAoaSA9IHpvb21fcmF0aW9zOyBpOyBpID0gaS0+bmV4dCkgeworICAgICAgICAgICAgZ2ludCB6b29tX3ZhbHVlID0gR1BPSU5URVJfVE9fSU5UIChpLT5kYXRhKTsKKyAgICAgICAgICAgIGdmbG9hdCB6b29tID0gKGdmbG9hdCkgem9vbV92YWx1ZSAvIDEwMC4wOworCisgICAgICAgICAgICBnX3ZhbHVlX3NldF9mbG9hdCAoJnZhbHVlLCB6b29tKTsKKyAgICAgICAgICAgIGdfdmFsdWVfYXJyYXlfYXBwZW5kIChhcnJheSwgJnZhbHVlKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZ192YWx1ZV91bnNldCAoJnZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGdzdF9haGNfcGFyYW1ldGVyc196b29tX3JhdGlvc19mcmVlICh6b29tX3JhdGlvcyk7CisgICAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgICAgfQorICAgIH0KKyAgfSBlbHNlIGlmIChwc3BlYyA9PSBwcm9wZXJ0aWVzW1BST1BfV0JfTU9ERV0pIHsKKyAgICBQUk9CRV9HRVRfRU5VTV9WQUxVRVMgKHdoaXRlX2JhbGFuY2UsIEdTVF9UWVBFX1dISVRFX0JBTEFOQ0VfTU9ERSwKKyAgICAgICAgR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlKTsKKyAgfSBlbHNlIGlmIChwc3BlYyA9PSBwcm9wZXJ0aWVzW1BST1BfQ09MT1VSX1RPTkVdKSB7CisgICAgUFJPQkVfR0VUX0VOVU1fVkFMVUVTIChjb2xvcl9lZmZlY3RzLCBHU1RfVFlQRV9DT0xPVVJfVE9ORV9NT0RFLAorICAgICAgICBHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGUpOworICB9IGVsc2UgaWYgKHBzcGVjID09IHByb3BlcnRpZXNbUFJPUF9GTEFTSF9NT0RFXSkgeworICAgIFBST0JFX0dFVF9FTlVNX1ZBTFVFUyAoZmxhc2hfbW9kZXMsIEdTVF9UWVBFX0ZMQVNIX01PREUsCisgICAgICAgIEdzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlKTsKKyAgfSBlbHNlIGlmIChwc3BlYyA9PSBwcm9wZXJ0aWVzW1BST1BfRk9DVVNfTU9ERV0pIHsKKyAgICBQUk9CRV9HRVRfRU5VTV9WQUxVRVMgKGZvY3VzX21vZGVzLCBHU1RfVFlQRV9GT0NVU19NT0RFLAorICAgICAgICBHc3RQaG90b2dyYXBoeUZvY3VzTW9kZSk7CisgIH0gZWxzZSBpZiAocHNwZWMgPT0gcHJvcGVydGllc1tQUk9QX1NDRU5FX01PREVdKSB7CisgICAgUFJPQkVfR0VUX0VOVU1fVkFMVUVTIChzY2VuZV9tb2RlcywgR1NUX1RZUEVfU0NFTkVfTU9ERSwKKyAgICAgICAgR3N0UGhvdG9ncmFwaHlTY2VuZU1vZGUpOworICB9IGVsc2UgaWYgKHBzcGVjID09IHByb3BlcnRpZXNbUFJPUF9GTElDS0VSX01PREVdKSB7CisgICAgUFJPQkVfR0VUX0VOVU1fVkFMVUVTIChhbnRpYmFuZGluZywgR1NUX1RZUEVfRkxJQ0tFUl9SRURVQ1RJT05fTU9ERSwKKyAgICAgICAgR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZSk7CisgIH0gZWxzZSB7CisgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChwcm9iZSwgcHJvcF9pZCwgcHNwZWMpOworICB9CisKKyAgcmV0dXJuIGFycmF5OworfQorI2VuZGlmCisKK3N0YXRpYyBnYm9vbGVhbgorX2FudGliYW5kaW5nX3RvX2VudW0gKGNvbnN0IGdjaGFyICogYW50aWJhbmRpbmcsCisgICAgR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZSAqIG1vZGUpCit7CisgIGlmIChhbnRpYmFuZGluZyA9PSBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX0FVVE8pCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfRkxJQ0tFUl9SRURVQ1RJT05fQVVUTzsKKyAgZWxzZSBpZiAoYW50aWJhbmRpbmcgPT0gUGFyYW1ldGVyc19BTlRJQkFORElOR181MEhaKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZMSUNLRVJfUkVEVUNUSU9OXzUwSFo7CisgIGVsc2UgaWYgKGFudGliYW5kaW5nID09IFBhcmFtZXRlcnNfQU5USUJBTkRJTkdfNjBIWikKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9GTElDS0VSX1JFRFVDVElPTl82MEhaOworICBlbHNlIGlmIChhbnRpYmFuZGluZyA9PSBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX09GRikKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9GTElDS0VSX1JFRFVDVElPTl9PRkY7CisgIGVsc2UKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3doaXRlX2JhbGFuY2VfdG9fZW51bSAoY29uc3QgZ2NoYXIgKiB3aGl0ZV9iYWxhbmNlLAorICAgIEdzdFBob3RvZ3JhcGh5V2hpdGVCYWxhbmNlTW9kZSAqIG1vZGUpCit7CisgIGlmICh3aGl0ZV9iYWxhbmNlID09IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9BVVRPKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfQVVUTzsKKyAgZWxzZSBpZiAod2hpdGVfYmFsYW5jZSA9PSBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfVFVOR1NURU47CisgIGVsc2UgaWYgKHdoaXRlX2JhbGFuY2UgPT0gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfRkxVT1JFU0NFTlQ7CisgIGVsc2UgaWYgKHdoaXRlX2JhbGFuY2UgPT0gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfV0JfTU9ERV9XQVJNX0ZMVU9SRVNDRU5UOworICBlbHNlIGlmICh3aGl0ZV9iYWxhbmNlID09IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9EQVlMSUdIVCkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9XQl9NT0RFX0RBWUxJR0hUOworICBlbHNlIGlmICh3aGl0ZV9iYWxhbmNlID09IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfV0JfTU9ERV9DTE9VRFk7CisgIGVsc2UgaWYgKHdoaXRlX2JhbGFuY2UgPT0gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1RXSUxJR0hUKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfU1VOU0VUOworICBlbHNlIGlmICh3aGl0ZV9iYWxhbmNlID09IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9TSEFERSkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9XQl9NT0RFX1NIQURFOworICBlbHNlCisgICAgcmV0dXJuIEZBTFNFOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19jb2xvcl9lZmZlY3RzX3RvX2VudW0gKGNvbnN0IGdjaGFyICogY29sb3JfZWZmZWN0LAorICAgIEdzdFBob3RvZ3JhcGh5Q29sb3JUb25lTW9kZSAqIG1vZGUpCit7CisgIGlmIChjb2xvcl9lZmZlY3QgPT0gUGFyYW1ldGVyc19FRkZFQ1RfTk9ORSkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9DT0xPUl9UT05FX01PREVfTk9STUFMOworICBlbHNlIGlmIChjb2xvcl9lZmZlY3QgPT0gUGFyYW1ldGVyc19FRkZFQ1RfTU9OTykKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9DT0xPUl9UT05FX01PREVfR1JBWVNDQUxFOworICBlbHNlIGlmIChjb2xvcl9lZmZlY3QgPT0gUGFyYW1ldGVyc19FRkZFQ1RfTkVHQVRJVkUpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX05FR0FUSVZFOworICBlbHNlIGlmIChjb2xvcl9lZmZlY3QgPT0gUGFyYW1ldGVyc19FRkZFQ1RfU09MQVJJWkUpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX1NPTEFSSVpFOworICBlbHNlIGlmIChjb2xvcl9lZmZlY3QgPT0gUGFyYW1ldGVyc19FRkZFQ1RfU0VQSUEpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX1NFUElBOworICBlbHNlIGlmIChjb2xvcl9lZmZlY3QgPT0gUGFyYW1ldGVyc19FRkZFQ1RfUE9TVEVSSVpFKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9QT1NURVJJWkU7CisgIGVsc2UgaWYgKGNvbG9yX2VmZmVjdCA9PSBQYXJhbWV0ZXJzX0VGRkVDVF9XSElURUJPQVJEKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9XSElURUJPQVJEOworICBlbHNlIGlmIChjb2xvcl9lZmZlY3QgPT0gUGFyYW1ldGVyc19FRkZFQ1RfQkxBQ0tCT0FSRCkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9DT0xPUl9UT05FX01PREVfQkxBQ0tCT0FSRDsKKyAgZWxzZSBpZiAoY29sb3JfZWZmZWN0ID09IFBhcmFtZXRlcnNfRUZGRUNUX0FRVUEpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX0FRVUE7CisgIGVsc2UKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3NjZW5lX21vZGVzX3RvX2VudW0gKGNvbnN0IGdjaGFyICogc2NlbmUsIEdzdFBob3RvZ3JhcGh5U2NlbmVNb2RlICogbW9kZSkKK3sKKyAgaWYgKHNjZW5lID09IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BVVRPKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfQVVUTzsKKyAgZWxzZSBpZiAoc2NlbmUgPT0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FDVElPTikKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX0FDVElPTjsKKyAgZWxzZSBpZiAoc2NlbmUgPT0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BPUlRSQUlUKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfUE9SVFJBSVQ7CisgIGVsc2UgaWYgKHNjZW5lID09IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9MQU5EU0NBUEUpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9MQU5EU0NBUEU7CisgIGVsc2UgaWYgKHNjZW5lID09IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVCkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX05JR0hUOworICBlbHNlIGlmIChzY2VuZSA9PSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFRfUE9SVFJBSVQpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVDsKKyAgZWxzZSBpZiAoc2NlbmUgPT0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1RIRUFUUkUpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9USEVBVFJFOworICBlbHNlIGlmIChzY2VuZSA9PSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkVBQ0gpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9CRUFDSDsKKyAgZWxzZSBpZiAoc2NlbmUgPT0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NOT1cpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9TTk9XOworICBlbHNlIGlmIChzY2VuZSA9PSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1VOU0VUKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfU1VOU0VUOworICBlbHNlIGlmIChzY2VuZSA9PSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1RFQURZUEhPVE8pCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9TVEVBRFlfUEhPVE87CisgIGVsc2UgaWYgKHNjZW5lID09IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9GSVJFV09SS1MpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9GSVJFV09SS1M7CisgIGVsc2UgaWYgKHNjZW5lID09IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TUE9SVFMpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9TUE9SVDsKKyAgZWxzZSBpZiAoc2NlbmUgPT0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BBUlRZKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfUEFSVFk7CisgIGVsc2UgaWYgKHNjZW5lID09IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9DQU5ETEVMSUdIVCkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX0NBTkRMRUxJR0hUOworICBlbHNlIGlmIChzY2VuZSA9PSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkFSQ09ERSkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX0JBUkNPREU7CisgIGVsc2UKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2ZsYXNoX21vZGVzX3RvX2VudW0gKGNvbnN0IGdjaGFyICogZmxhc2gsIEdzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlICogbW9kZSkKK3sKKyAgaWYgKGZsYXNoID09IFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PRkYpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfRkxBU0hfTU9ERV9PRkY7CisgIGVsc2UgaWYgKGZsYXNoID09IFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9BVVRPKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZMQVNIX01PREVfQVVUTzsKKyAgZWxzZSBpZiAoZmxhc2ggPT0gUGFyYW1ldGVyc19GTEFTSF9NT0RFX09OKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZMQVNIX01PREVfT047CisgIGVsc2UgaWYgKGZsYXNoID09IFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9SRURfRVlFKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZMQVNIX01PREVfUkVEX0VZRTsKKyAgZWxzZSBpZiAoZmxhc2ggPT0gUGFyYW1ldGVyc19GTEFTSF9NT0RFX1RPUkNIKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZMQVNIX01PREVfRklMTF9JTjsKKyAgZWxzZQorICAgIHJldHVybiBGQUxTRTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitfZm9jdXNfbW9kZXNfdG9fZW51bSAoY29uc3QgZ2NoYXIgKiBmb2N1cywgR3N0UGhvdG9ncmFwaHlGb2N1c01vZGUgKiBtb2RlKQoreworICBpZiAoZm9jdXMgPT0gUGFyYW1ldGVyc19GT0NVU19NT0RFX0FVVE8pCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfRk9DVVNfTU9ERV9BVVRPOworICBlbHNlIGlmIChmb2N1cyA9PSBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfSU5GSU5JVFkpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfRk9DVVNfTU9ERV9JTkZJTklUWTsKKyAgZWxzZSBpZiAoZm9jdXMgPT0gUGFyYW1ldGVyc19GT0NVU19NT0RFX01BQ1JPKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfTUFDUk87CisgIGVsc2UgaWYgKGZvY3VzID09IFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9GSVhFRCkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9GT0NVU19NT0RFX0hZUEVSRk9DQUw7CisgIGVsc2UgaWYgKGZvY3VzID09IFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9FRE9GKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfRVhURU5ERUQ7CisgIGVsc2UgaWYgKGZvY3VzID09IFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1ZJREVPKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfQ09OVElOVU9VU19FWFRFTkRFRDsKKyAgZWxzZSBpZiAoZm9jdXMgPT0gUGFyYW1ldGVyc19GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRSkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9GT0NVU19NT0RFX0NPTlRJTlVPVVNfTk9STUFMOworICBlbHNlCisgICAgcmV0dXJuIEZBTFNFOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX2dldF9ldl9jb21wZW5zYXRpb24gKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sIGdmbG9hdCAqIGV2X2NvbXApCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmIChwYXJhbXMpIHsKKyAgICAgIGdpbnQgZXYsIG1pbiwgbWF4OworICAgICAgZ2Zsb2F0IHN0ZXA7CisKKyAgICAgIGV2ID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9leHBvc3VyZV9jb21wZW5zYXRpb24gKHBhcmFtcyk7CisgICAgICBtaW4gPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21pbl9leHBvc3VyZV9jb21wZW5zYXRpb24gKHBhcmFtcyk7CisgICAgICBtYXggPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21heF9leHBvc3VyZV9jb21wZW5zYXRpb24gKHBhcmFtcyk7CisgICAgICBzdGVwID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9leHBvc3VyZV9jb21wZW5zYXRpb25fc3RlcCAocGFyYW1zKTsKKworICAgICAgaWYgKHN0ZXAgIT0gMC4wICYmIG1pbiAhPSBtYXggJiYgbWluIDw9IGV2ICYmIGV2IDw9IG1heCkgeworICAgICAgICBpZiAoZXZfY29tcCkKKyAgICAgICAgICAqZXZfY29tcCA9IGV2ICogc3RlcDsKKyAgICAgICAgcmV0ID0gVFJVRTsKKyAgICAgIH0KKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfZ2V0X3doaXRlX2JhbGFuY2VfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGUgKiB3Yl9tb2RlKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAocGhvdG8pOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICBpZiAocGFyYW1zKSB7CisgICAgICBjb25zdCBnY2hhciAqd2IgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3doaXRlX2JhbGFuY2UgKHBhcmFtcyk7CisgICAgICBHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGUgbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9XQl9NT0RFX0FVVE87CisKKyAgICAgIGlmIChfd2hpdGVfYmFsYW5jZV90b19lbnVtICh3YiwgJm1vZGUpKSB7CisgICAgICAgIHJldCA9IFRSVUU7CisKKyAgICAgICAgaWYgKHdiX21vZGUpCisgICAgICAgICAgKndiX21vZGUgPSBtb2RlOworICAgICAgfQorCisgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX2dldF9jb2xvdXJfdG9uZV9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5Q29sb3JUb25lTW9kZSAqIHRvbmVfbW9kZSkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHBob3RvKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKHBhcmFtcykgeworICAgICAgY29uc3QgZ2NoYXIgKmVmZmVjdCA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfY29sb3JfZWZmZWN0IChwYXJhbXMpOworICAgICAgR3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlIG1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX05PUk1BTDsKKworICAgICAgaWYgKF9jb2xvcl9lZmZlY3RzX3RvX2VudW0gKGVmZmVjdCwgJm1vZGUpKSB7CisgICAgICAgIHJldCA9IFRSVUU7CisKKyAgICAgICAgaWYgKHRvbmVfbW9kZSkKKyAgICAgICAgICAqdG9uZV9tb2RlID0gbW9kZTsKKyAgICAgIH0KKworICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19nZXRfc2NlbmVfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeVNjZW5lTW9kZSAqIHNjZW5lX21vZGUpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChzY2VuZV9tb2RlICYmIHNlbGYtPmNhbWVyYSkgeworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKHBhcmFtcykgeworICAgICAgY29uc3QgZ2NoYXIgKnNjZW5lID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zY2VuZV9tb2RlIChwYXJhbXMpOworICAgICAgR3N0UGhvdG9ncmFwaHlTY2VuZU1vZGUgbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX0FVVE87CisKKyAgICAgIGlmIChfc2NlbmVfbW9kZXNfdG9fZW51bSAoc2NlbmUsICZtb2RlKSkgeworICAgICAgICByZXQgPSBUUlVFOworCisgICAgICAgIGlmIChzY2VuZV9tb2RlKQorICAgICAgICAgICpzY2VuZV9tb2RlID0gbW9kZTsKKyAgICAgIH0KKworICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19nZXRfZmxhc2hfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUZsYXNoTW9kZSAqIGZsYXNoX21vZGUpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmIChwYXJhbXMpIHsKKyAgICAgIGNvbnN0IGdjaGFyICpmbGFzaCA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfZmxhc2hfbW9kZSAocGFyYW1zKTsKKyAgICAgIEdzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlIG1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfRkxBU0hfTU9ERV9PRkY7CisKKyAgICAgIGlmIChfZmxhc2hfbW9kZXNfdG9fZW51bSAoZmxhc2gsICZtb2RlKSkgeworICAgICAgICByZXQgPSBUUlVFOworCisgICAgICAgIGlmIChmbGFzaF9tb2RlKQorICAgICAgICAgICpmbGFzaF9tb2RlID0gbW9kZTsKKyAgICAgIH0KKworICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19nZXRfem9vbSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywgZ2Zsb2F0ICogem9vbSkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHBob3RvKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKHBhcmFtcykgeworICAgICAgR0xpc3QgKnpvb21fcmF0aW9zID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF96b29tX3JhdGlvcyAocGFyYW1zKTsKKyAgICAgIGdpbnQgem9vbV9pZHggPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3pvb20gKHBhcmFtcyk7CisgICAgICBnaW50IG1heF96b29tID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9tYXhfem9vbSAocGFyYW1zKTsKKworICAgICAgaWYgKHpvb21fcmF0aW9zICYmIGdfbGlzdF9sZW5ndGggKHpvb21fcmF0aW9zKSA9PSAobWF4X3pvb20gKyAxKSAmJgorICAgICAgICAgIHpvb21faWR4ID49IDAgJiYgem9vbV9pZHggPCBtYXhfem9vbSkgeworICAgICAgICBnaW50IHpvb21fdmFsdWU7CisKKyAgICAgICAgem9vbV92YWx1ZSA9IEdQT0lOVEVSX1RPX0lOVCAoZ19saXN0X250aF9kYXRhICh6b29tX3JhdGlvcywgem9vbV9pZHgpKTsKKyAgICAgICAgaWYgKHpvb20pCisgICAgICAgICAgKnpvb20gPSAoZ2Zsb2F0KSB6b29tX3ZhbHVlIC8gMTAwLjA7CisKKyAgICAgICAgcmV0ID0gVFJVRTsKKyAgICAgIH0KKworICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3pvb21fcmF0aW9zX2ZyZWUgKHpvb21fcmF0aW9zKTsKKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfZ2V0X2ZsaWNrZXJfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUZsaWNrZXJSZWR1Y3Rpb25Nb2RlICogZmxpY2tlcl9tb2RlKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAocGhvdG8pOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICBpZiAocGFyYW1zKSB7CisgICAgICBjb25zdCBnY2hhciAqYW50aWJhbmRpbmcgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2FudGliYW5kaW5nIChwYXJhbXMpOworICAgICAgR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZSBtb2RlID0KKyAgICAgICAgICBHU1RfUEhPVE9HUkFQSFlfRkxJQ0tFUl9SRURVQ1RJT05fQVVUTzsKKworICAgICAgaWYgKF9hbnRpYmFuZGluZ190b19lbnVtIChhbnRpYmFuZGluZywgJm1vZGUpKSB7CisgICAgICAgIHJldCA9IFRSVUU7CisKKyAgICAgICAgaWYgKGZsaWNrZXJfbW9kZSkKKyAgICAgICAgICAqZmxpY2tlcl9tb2RlID0gbW9kZTsKKyAgICAgIH0KKworICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19nZXRfZm9jdXNfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUZvY3VzTW9kZSAqIGZvY3VzX21vZGUpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmIChwYXJhbXMpIHsKKyAgICAgIGNvbnN0IGdjaGFyICpmb2N1cyA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfZm9jdXNfbW9kZSAocGFyYW1zKTsKKyAgICAgIEdzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlIG1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfRk9DVVNfTU9ERV9BVVRPOworCisgICAgICBpZiAoX2ZvY3VzX21vZGVzX3RvX2VudW0gKGZvY3VzLCAmbW9kZSkpIHsKKyAgICAgICAgcmV0ID0gVFJVRTsKKworICAgICAgICBpZiAoZm9jdXNfbW9kZSkKKyAgICAgICAgICAqZm9jdXNfbW9kZSA9IG1vZGU7CisgICAgICB9CisKKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19zZXRfZXZfY29tcGVuc2F0aW9uIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLCBnZmxvYXQgZXZfY29tcCkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHBob3RvKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKHBhcmFtcykgeworICAgICAgZ2ludCBldiwgbWluLCBtYXg7CisgICAgICBnZmxvYXQgc3RlcDsKKworICAgICAgZXYgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2V4cG9zdXJlX2NvbXBlbnNhdGlvbiAocGFyYW1zKTsKKyAgICAgIG1pbiA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfbWluX2V4cG9zdXJlX2NvbXBlbnNhdGlvbiAocGFyYW1zKTsKKyAgICAgIG1heCA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfbWF4X2V4cG9zdXJlX2NvbXBlbnNhdGlvbiAocGFyYW1zKTsKKyAgICAgIHN0ZXAgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2V4cG9zdXJlX2NvbXBlbnNhdGlvbl9zdGVwIChwYXJhbXMpOworICAgICAgaWYgKHN0ZXAgIT0gMC4wICYmIG1pbiAhPSBtYXggJiYKKyAgICAgICAgICAobWluICogc3RlcCkgPD0gZXZfY29tcCAmJiBldl9jb21wIDw9IChtYXggKiBzdGVwKSkgeworICAgICAgICBldiA9IGV2X2NvbXAgLyBzdGVwOworICAgICAgICBpZiAoKGV2ICogc3RlcCkgPT0gZXZfY29tcCkgeworICAgICAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfZXhwb3N1cmVfY29tcGVuc2F0aW9uIChwYXJhbXMsIGV2KTsKKyAgICAgICAgICByZXQgPSBnc3RfYWhfY2FtZXJhX3NldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEsIHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX3NldF93aGl0ZV9iYWxhbmNlX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlIHdiX21vZGUpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmIChwYXJhbXMpIHsKKyAgICAgIGNvbnN0IGdjaGFyICp3aGl0ZV9iYWxhbmNlID0gTlVMTDsKKworICAgICAgc3dpdGNoICh3Yl9tb2RlKSB7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfQVVUTzoKKyAgICAgICAgICB3aGl0ZV9iYWxhbmNlID0gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0FVVE87CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfREFZTElHSFQ6CisgICAgICAgICAgd2hpdGVfYmFsYW5jZSA9IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9EQVlMSUdIVDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfV0JfTU9ERV9DTE9VRFk6CisgICAgICAgICAgd2hpdGVfYmFsYW5jZSA9IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfU1VOU0VUOgorICAgICAgICAgIHdoaXRlX2JhbGFuY2UgPSBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfVFdJTElHSFQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfVFVOR1NURU46CisgICAgICAgICAgd2hpdGVfYmFsYW5jZSA9IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfRkxVT1JFU0NFTlQ6CisgICAgICAgICAgd2hpdGVfYmFsYW5jZSA9IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfV0JfTU9ERV9XQVJNX0ZMVU9SRVNDRU5UOgorICAgICAgICAgIHdoaXRlX2JhbGFuY2UgPSBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfV0FSTV9GTFVPUkVTQ0VOVDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfV0JfTU9ERV9TSEFERToKKyAgICAgICAgICB3aGl0ZV9iYWxhbmNlID0gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1NIQURFOworICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIHdoaXRlX2JhbGFuY2UgPSBOVUxMOworICAgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZiAod2hpdGVfYmFsYW5jZSkgeworICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3doaXRlX2JhbGFuY2UgKHBhcmFtcywgd2hpdGVfYmFsYW5jZSk7CisgICAgICAgIHJldCA9IGdzdF9haF9jYW1lcmFfc2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSwgcGFyYW1zKTsKKyAgICAgIH0KKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfc2V0X2NvbG91cl90b25lX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlIHRvbmVfbW9kZSkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHBob3RvKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKHBhcmFtcykgeworICAgICAgY29uc3QgZ2NoYXIgKmNvbG9yX2VmZmVjdCA9IE5VTEw7CisKKyAgICAgIHN3aXRjaCAodG9uZV9tb2RlKSB7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9OT1JNQUw6CisgICAgICAgICAgY29sb3JfZWZmZWN0ID0gUGFyYW1ldGVyc19FRkZFQ1RfTk9ORTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX1NFUElBOgorICAgICAgICAgIGNvbG9yX2VmZmVjdCA9IFBhcmFtZXRlcnNfRUZGRUNUX1NFUElBOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9DT0xPUl9UT05FX01PREVfTkVHQVRJVkU6CisgICAgICAgICAgY29sb3JfZWZmZWN0ID0gUGFyYW1ldGVyc19FRkZFQ1RfTkVHQVRJVkU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9HUkFZU0NBTEU6CisgICAgICAgICAgY29sb3JfZWZmZWN0ID0gUGFyYW1ldGVyc19FRkZFQ1RfTU9OTzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX1NPTEFSSVpFOgorICAgICAgICAgIGNvbG9yX2VmZmVjdCA9IFBhcmFtZXRlcnNfRUZGRUNUX1NPTEFSSVpFOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9DT0xPUl9UT05FX01PREVfUE9TVEVSSVpFOgorICAgICAgICAgIGNvbG9yX2VmZmVjdCA9IFBhcmFtZXRlcnNfRUZGRUNUX1BPU1RFUklaRTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX1dISVRFQk9BUkQ6CisgICAgICAgICAgY29sb3JfZWZmZWN0ID0gUGFyYW1ldGVyc19FRkZFQ1RfV0hJVEVCT0FSRDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX0JMQUNLQk9BUkQ6CisgICAgICAgICAgY29sb3JfZWZmZWN0ID0gUGFyYW1ldGVyc19FRkZFQ1RfQkxBQ0tCT0FSRDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX0FRVUE6CisgICAgICAgICAgY29sb3JfZWZmZWN0ID0gUGFyYW1ldGVyc19FRkZFQ1RfQVFVQTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX05BVFVSQUw6CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9WSVZJRDoKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX0NPTE9SU1dBUDoKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX09VVF9PRl9GT0NVUzoKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX1NLWV9CTFVFOgorICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9DT0xPUl9UT05FX01PREVfR1JBU1NfR1JFRU46CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9TS0lOX1dISVRFTjoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBjb2xvcl9lZmZlY3QgPSBOVUxMOworICAgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZiAoY29sb3JfZWZmZWN0KSB7CisgICAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfY29sb3JfZWZmZWN0IChwYXJhbXMsIGNvbG9yX2VmZmVjdCk7CisgICAgICAgIHJldCA9IGdzdF9haF9jYW1lcmFfc2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSwgcGFyYW1zKTsKKyAgICAgIH0KKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfc2V0X3NjZW5lX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlTY2VuZU1vZGUgc2NlbmVfbW9kZSkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHBob3RvKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKHBhcmFtcykgeworICAgICAgY29uc3QgZ2NoYXIgKnNjZW5lID0gTlVMTDsKKworICAgICAgc3dpdGNoIChzY2VuZV9tb2RlKSB7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfUE9SVFJBSVQ6CisgICAgICAgICAgc2NlbmUgPSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfUE9SVFJBSVQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfTEFORFNDQVBFOgorICAgICAgICAgIHNjZW5lID0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0xBTkRTQ0FQRTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9TUE9SVDoKKyAgICAgICAgICBzY2VuZSA9IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TUE9SVFM7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfTklHSFQ6CisgICAgICAgICAgc2NlbmUgPSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfQVVUTzoKKyAgICAgICAgICBzY2VuZSA9IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BVVRPOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX0FDVElPTjoKKyAgICAgICAgICBzY2VuZSA9IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BQ1RJT047CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfTklHSFRfUE9SVFJBSVQ6CisgICAgICAgICAgc2NlbmUgPSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFRfUE9SVFJBSVQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfVEhFQVRSRToKKyAgICAgICAgICBzY2VuZSA9IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9USEVBVFJFOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX0JFQUNIOgorICAgICAgICAgIHNjZW5lID0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JFQUNIOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX1NOT1c6CisgICAgICAgICAgc2NlbmUgPSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU05PVzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9TVU5TRVQ6CisgICAgICAgICAgc2NlbmUgPSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1VOU0VUOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX1NURUFEWV9QSE9UTzoKKyAgICAgICAgICBzY2VuZSA9IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TVEVBRFlQSE9UTzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9GSVJFV09SS1M6CisgICAgICAgICAgc2NlbmUgPSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfRklSRVdPUktTOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX1BBUlRZOgorICAgICAgICAgIHNjZW5lID0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BBUlRZOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX0NBTkRMRUxJR0hUOgorICAgICAgICAgIHNjZW5lID0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0NBTkRMRUxJR0hUOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX0JBUkNPREU6CisgICAgICAgICAgc2NlbmUgPSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkFSQ09ERTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9NQU5VQUw6CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfQ0xPU0VVUDoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBzY2VuZSA9IE5VTEw7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIGlmIChzY2VuZSkgeworICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3NjZW5lX21vZGUgKHBhcmFtcywgc2NlbmUpOworICAgICAgICByZXQgPSBnc3RfYWhfY2FtZXJhX3NldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEsIHBhcmFtcyk7CisgICAgICB9CisgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX3NldF9mbGFzaF9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlIGZsYXNoX21vZGUpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmIChwYXJhbXMpIHsKKyAgICAgIGNvbnN0IGdjaGFyICpmbGFzaCA9IE5VTEw7CisKKyAgICAgIHN3aXRjaCAoZmxhc2hfbW9kZSkgeworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9GTEFTSF9NT0RFX0FVVE86CisgICAgICAgICAgZmxhc2ggPSBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfQVVUTzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfRkxBU0hfTU9ERV9PRkY6CisgICAgICAgICAgZmxhc2ggPSBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT0ZGOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9GTEFTSF9NT0RFX09OOgorICAgICAgICAgIGZsYXNoID0gUGFyYW1ldGVyc19GTEFTSF9NT0RFX09OOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9GTEFTSF9NT0RFX0ZJTExfSU46CisgICAgICAgICAgZmxhc2ggPSBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfVE9SQ0g7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0ZMQVNIX01PREVfUkVEX0VZRToKKyAgICAgICAgICBmbGFzaCA9IFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9SRURfRVlFOworICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIGZsYXNoID0gTlVMTDsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgaWYgKGZsYXNoKSB7CisgICAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfZmxhc2hfbW9kZSAocGFyYW1zLCBmbGFzaCk7CisgICAgICAgIHJldCA9IGdzdF9haF9jYW1lcmFfc2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSwgcGFyYW1zKTsKKyAgICAgIH0KKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfc2V0X3pvb20gKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sIGdmbG9hdCB6b29tKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAocGhvdG8pOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICBpZiAocGFyYW1zKSB7CisgICAgICBHTGlzdCAqem9vbV9yYXRpb3MgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3pvb21fcmF0aW9zIChwYXJhbXMpOworICAgICAgZ2ludCBtYXhfem9vbSA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfbWF4X3pvb20gKHBhcmFtcyk7CisgICAgICBnaW50IHpvb21faWR4ID0gLTE7CisKKyAgICAgIGlmICh6b29tX3JhdGlvcyAmJiBnX2xpc3RfbGVuZ3RoICh6b29tX3JhdGlvcykgPT0gKG1heF96b29tICsgMSkpIHsKKyAgICAgICAgZ2ludCBpOworICAgICAgICBnaW50IHZhbHVlID0gem9vbSAqIDEwMDsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4X3pvb20gKyAxOyBpKyspIHsKKyAgICAgICAgICBnaW50IHpvb21fdmFsdWUgPSBHUE9JTlRFUl9UT19JTlQgKGdfbGlzdF9udGhfZGF0YSAoem9vbV9yYXRpb3MsIGkpKTsKKworICAgICAgICAgIGlmICh2YWx1ZSA9PSB6b29tX3ZhbHVlKQorICAgICAgICAgICAgem9vbV9pZHggPSBpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmICh6b29tX2lkeCAhPSAtMSkgeworICAgICAgICBpZiAoc2VsZi0+c21vb3RoX3pvb20gJiYKKyAgICAgICAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19pc19zbW9vdGhfem9vbV9zdXBwb3J0ZWQgKHBhcmFtcykpIHsKKyAgICAgICAgICAvLyBGaXJzdCwgd2UgbmVlZCB0byBjYW5jZWwgYW55IHByZXZpb3VzIHNtb290aCB6b29tIG9wZXJhdGlvbgorICAgICAgICAgIGdzdF9haF9jYW1lcmFfc3RvcF9zbW9vdGhfem9vbSAoc2VsZi0+Y2FtZXJhKTsKKyAgICAgICAgICByZXQgPSBnc3RfYWhfY2FtZXJhX3N0YXJ0X3Ntb290aF96b29tIChzZWxmLT5jYW1lcmEsIHpvb21faWR4KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3pvb20gKHBhcmFtcywgem9vbV9pZHgpOworICAgICAgICAgIHJldCA9IGdzdF9haF9jYW1lcmFfc2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSwgcGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfem9vbV9yYXRpb3NfZnJlZSAoem9vbV9yYXRpb3MpOworICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19zZXRfZmxpY2tlcl9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5RmxpY2tlclJlZHVjdGlvbk1vZGUgZmxpY2tlcl9tb2RlKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAocGhvdG8pOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICBpZiAocGFyYW1zKSB7CisgICAgICBjb25zdCBnY2hhciAqYW50aWJhbmRpbmcgPSBOVUxMOworCisgICAgICBzd2l0Y2ggKGZsaWNrZXJfbW9kZSkgeworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9GTElDS0VSX1JFRFVDVElPTl9PRkY6CisgICAgICAgICAgYW50aWJhbmRpbmcgPSBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX09GRjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfRkxJQ0tFUl9SRURVQ1RJT05fNTBIWjoKKyAgICAgICAgICBhbnRpYmFuZGluZyA9IFBhcmFtZXRlcnNfQU5USUJBTkRJTkdfNTBIWjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfRkxJQ0tFUl9SRURVQ1RJT05fNjBIWjoKKyAgICAgICAgICBhbnRpYmFuZGluZyA9IFBhcmFtZXRlcnNfQU5USUJBTkRJTkdfNjBIWjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfRkxJQ0tFUl9SRURVQ1RJT05fQVVUTzoKKyAgICAgICAgICBhbnRpYmFuZGluZyA9IFBhcmFtZXRlcnNfQU5USUJBTkRJTkdfQVVUTzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBhbnRpYmFuZGluZyA9IE5VTEw7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIGlmIChhbnRpYmFuZGluZykgeworICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X2FudGliYW5kaW5nIChwYXJhbXMsIGFudGliYW5kaW5nKTsKKyAgICAgICAgcmV0ID0gZ3N0X2FoX2NhbWVyYV9zZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhLCBwYXJhbXMpOworICAgICAgfQorICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19zZXRfZm9jdXNfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUZvY3VzTW9kZSBmb2N1c19tb2RlKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAocGhvdG8pOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICBpZiAocGFyYW1zKSB7CisgICAgICBjb25zdCBnY2hhciAqZm9jdXMgPSBOVUxMOworCisgICAgICBzd2l0Y2ggKGZvY3VzX21vZGUpIHsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfRk9DVVNfTU9ERV9BVVRPOgorICAgICAgICAgIGZvY3VzID0gUGFyYW1ldGVyc19GT0NVU19NT0RFX0FVVE87CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfTUFDUk86CisgICAgICAgICAgZm9jdXMgPSBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfTUFDUk87CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfSU5GSU5JVFk6CisgICAgICAgICAgZm9jdXMgPSBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfSU5GSU5JVFk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfSFlQRVJGT0NBTDoKKyAgICAgICAgICBmb2N1cyA9IFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9GSVhFRDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfRk9DVVNfTU9ERV9DT05USU5VT1VTX05PUk1BTDoKKyAgICAgICAgICBmb2N1cyA9IFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfQ09OVElOVU9VU19FWFRFTkRFRDoKKyAgICAgICAgICBmb2N1cyA9IFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1ZJREVPOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9GT0NVU19NT0RFX0VYVEVOREVEOgorICAgICAgICAgIGZvY3VzID0gUGFyYW1ldGVyc19GT0NVU19NT0RFX0VET0Y7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfUE9SVFJBSVQ6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgZm9jdXMgPSBOVUxMOworICAgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZiAoZm9jdXMpIHsKKyAgICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9mb2N1c19tb2RlIChwYXJhbXMsIGZvY3VzKTsKKyAgICAgICAgcmV0ID0gZ3N0X2FoX2NhbWVyYV9zZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhLCBwYXJhbXMpOworICAgICAgfQorICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEdzdFBob3RvZ3JhcGh5Q2FwcworZ3N0X2FoY19zcmNfZ2V0X2NhcGFiaWxpdGllcyAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bykKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHBob3RvKTsKKworICBHc3RQaG90b2dyYXBoeUNhcHMgY2FwcyA9IEdTVF9QSE9UT0dSQVBIWV9DQVBTX0VWX0NPTVAgfAorICAgICAgR1NUX1BIT1RPR1JBUEhZX0NBUFNfV0JfTU9ERSB8IEdTVF9QSE9UT0dSQVBIWV9DQVBTX1RPTkUgfAorICAgICAgR1NUX1BIT1RPR1JBUEhZX0NBUFNfU0NFTkUgfCBHU1RfUEhPVE9HUkFQSFlfQ0FQU19GTEFTSCB8CisgICAgICBHU1RfUEhPVE9HUkFQSFlfQ0FQU19GT0NVUyB8IEdTVF9QSE9UT0dSQVBIWV9DQVBTX1pPT007CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKCFnc3RfYWhjX3BhcmFtZXRlcnNfaXNfem9vbV9zdXBwb3J0ZWQgKHBhcmFtcykpCisgICAgICBjYXBzICY9IH5HU1RfUEhPVE9HUkFQSFlfQ0FQU19aT09NOworCisgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgIH0KKworICByZXR1cm4gY2FwczsKK30KKworc3RhdGljIHZvaWQKK2dzdF9haGNfc3JjX29uX2F1dG9fZm9jdXMgKGdib29sZWFuIHN1Y2Nlc3MsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHVzZXJfZGF0YSk7CisKKyAgR1NUX1dBUk5JTkdfT0JKRUNUIChzZWxmLCAiQXV0byBmb2N1cyBjb21wbGV0ZWQgOiAlZCIsIHN1Y2Nlc3MpOworICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChzZWxmKSwKKyAgICAgIGdzdF9tZXNzYWdlX25ld19jdXN0b20gKEdTVF9NRVNTQUdFX0VMRU1FTlQsIEdTVF9PQkpFQ1QgKHNlbGYpLAorICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfbmV3X2VtcHR5IChHU1RfUEhPVE9HUkFQSFlfQVVUT0ZPQ1VTX0RPTkUpKSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYWhjX3NyY19zZXRfYXV0b2ZvY3VzIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLCBnYm9vbGVhbiBvbikKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHBob3RvKTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgaWYgKG9uKQorICAgICAgZ3N0X2FoX2NhbWVyYV9hdXRvX2ZvY3VzIChzZWxmLT5jYW1lcmEsIGdzdF9haGNfc3JjX29uX2F1dG9fZm9jdXMsIHNlbGYpOworICAgIGVsc2UKKyAgICAgIGdzdF9haF9jYW1lcmFfY2FuY2VsX2F1dG9fZm9jdXMgKHNlbGYtPmNhbWVyYSk7CisgIH0KKworfQorCitzdGF0aWMgZ2ludAorX2NvbXBhcmVfZm9ybWF0cyAoaW50IGYxLCBpbnQgZjIpCit7CisgIGlmIChmMSA9PSBmMikKKyAgICByZXR1cm4gMDsKKyAgLyogWVYxMiBoYXMgcHJpb3JpdHkgKi8KKyAgaWYgKGYxID09IEltYWdlRm9ybWF0X1lWMTIpCisgICAgcmV0dXJuIC0xOworICBpZiAoZjIgPT0gSW1hZ2VGb3JtYXRfWVYxMikKKyAgICByZXR1cm4gMTsKKyAgLyogVGhlbiBOVjIxICovCisgIGlmIChmMSA9PSBJbWFnZUZvcm1hdF9OVjIxKQorICAgIHJldHVybiAtMTsKKyAgaWYgKGYyID09IEltYWdlRm9ybWF0X05WMjEpCisgICAgcmV0dXJuIDE7CisgIC8qIFRoZW4gd2UgZG9uJ3QgY2FyZSAqLworICByZXR1cm4gZjIgLSBmMTsKK30KKworc3RhdGljIGdpbnQKK19jb21wYXJlX3NpemVzIChHc3RBSENTaXplICogczEsIEdzdEFIQ1NpemUgKiBzMikKK3sKKyAgcmV0dXJuICgoczItPndpZHRoICogczItPmhlaWdodCkgLSAoczEtPndpZHRoICogczEtPmhlaWdodCkpOworfQorCisKK3N0YXRpYyBnaW50CitfY29tcGFyZV9yYW5nZXMgKGludCAqcjEsIGludCAqcjIpCit7CisgIGlmIChyMVsxXSA9PSByMlsxXSkKKyAgICAvKiBTbWFsbGVzdCByYW5nZSAqLworICAgIHJldHVybiAocjFbMV0gLSByMVswXSkgLSAocjJbMV0gLSByMlswXSk7CisgIGVsc2UKKyAgICAvKiBIaWdoZXN0IGZwcyAqLworICAgIHJldHVybiByMlsxXSAtIHIxWzFdOworfQorCitzdGF0aWMgR3N0Q2FwcyAqCitnc3RfYWhjX3NyY19nZXRjYXBzIChHc3RCYXNlU3JjICogc3JjLCBHc3RDYXBzICogZmlsdGVyKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAoc3JjKTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgR3N0Q2FwcyAqcmV0ID0gZ3N0X2NhcHNfbmV3X2VtcHR5ICgpOworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKHBhcmFtcykgeworICAgICAgR0xpc3QgKmZvcm1hdHMsICpzaXplcywgKnJhbmdlczsKKyAgICAgIEdMaXN0ICppLCAqaiwgKms7CisgICAgICBpbnQgcHJldmlvdXNfZm9ybWF0ID0gSW1hZ2VGb3JtYXRfVU5LTk9XTjsKKworICAgICAgZm9ybWF0cyA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX3ByZXZpZXdfZm9ybWF0cyAocGFyYW1zKTsKKyAgICAgIGZvcm1hdHMgPSBnX2xpc3Rfc29ydCAoZm9ybWF0cywgKEdDb21wYXJlRnVuYykgX2NvbXBhcmVfZm9ybWF0cyk7CisgICAgICBzaXplcyA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX3ByZXZpZXdfc2l6ZXMgKHBhcmFtcyk7CisgICAgICBzaXplcyA9IGdfbGlzdF9zb3J0IChzaXplcywgKEdDb21wYXJlRnVuYykgX2NvbXBhcmVfc2l6ZXMpOworICAgICAgcmFuZ2VzID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfcHJldmlld19mcHNfcmFuZ2UgKHBhcmFtcyk7CisgICAgICByYW5nZXMgPSBnX2xpc3Rfc29ydCAocmFuZ2VzLCAoR0NvbXBhcmVGdW5jKSBfY29tcGFyZV9yYW5nZXMpOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlN1cHBvcnRlZCBwcmV2aWV3IGZvcm1hdHM6Iik7CisKKyAgICAgIGZvciAoaSA9IGZvcm1hdHM7IGk7IGkgPSBpLT5uZXh0KSB7CisgICAgICAgIGludCBmID0gR1BPSU5URVJfVE9fSU5UIChpLT5kYXRhKTsKKyAgICAgICAgZ2NoYXIgKmZvcm1hdF9zdHJpbmcgPSBOVUxMOworICAgICAgICBHc3RTdHJ1Y3R1cmUgKmZvcm1hdCA9IE5VTEw7CisKKyAgICAgICAgLyogSWdub3JlIGR1cGxpY2F0ZXMgKi8KKyAgICAgICAgaWYgKGYgPT0gcHJldmlvdXNfZm9ybWF0KQorICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIC8qIENhbid0IHVzZSBzd2l0Y2gvY2FzZSBiZWNhdXNlIHRoZSB2YWx1ZXMgYXJlIG5vdCBjb25zdGFudHMgKi8KKyAgICAgICAgaWYgKGYgPT0gSW1hZ2VGb3JtYXRfTlYxNikgeworICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICIgICAgTlYxNiAoJWQpIiwgZik7CisgICAgICAgICAgZm9ybWF0X3N0cmluZyA9IGdfc3RyZHVwICgiTlYxNiIpOworICAgICAgICB9IGVsc2UgaWYgKGYgPT0gSW1hZ2VGb3JtYXRfTlYyMSkgeworICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICIgICAgTlYyMSAoJWQpIiwgZik7CisgICAgICAgICAgZm9ybWF0X3N0cmluZyA9IGdfc3RyZHVwICgiTlYyMSIpOworICAgICAgICB9IGVsc2UgaWYgKGYgPT0gSW1hZ2VGb3JtYXRfUkdCXzU2NSkgeworICAgICAgICAgIEdzdFZpZGVvRm9ybWF0IHZmb3JtYXQ7CisgICAgICAgICAgdmZvcm1hdCA9IGdzdF92aWRlb19mb3JtYXRfZnJvbV9tYXNrcyAoMTYsIDE2LCBHX0xJVFRMRV9FTkRJQU4sCisgICAgICAgICAgICAgIDB4ZjgwMCwgMHgwN2UwLCAweDAwMWYsIDB4MCk7CisgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIiAgICBSR0I1NjUgKCVkKSIsIGYpOworICAgICAgICAgIGZvcm1hdF9zdHJpbmcgPSBnX3N0cmR1cCAoZ3N0X3ZpZGVvX2Zvcm1hdF90b19zdHJpbmcgKHZmb3JtYXQpKTsKKyAgICAgICAgfSBlbHNlIGlmIChmID09IEltYWdlRm9ybWF0X1lVWTIpIHsKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiICAgIFlVWTIgKCVkKSIsIGYpOworICAgICAgICAgIGZvcm1hdF9zdHJpbmcgPSBnX3N0cmR1cCAoIllVWTIiKTsKKyAgICAgICAgfSBlbHNlIGlmIChmID09IEltYWdlRm9ybWF0X1lWMTIpIHsKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiICAgIFlWMTIgKCVkKSIsIGYpOworICAgICAgICAgIGZvcm1hdF9zdHJpbmcgPSBnX3N0cmR1cCAoIllWMTIiKTsKKyAgICAgICAgfQorICAgICAgICBwcmV2aW91c19mb3JtYXQgPSBmOworCisgICAgICAgIGlmIChmb3JtYXRfc3RyaW5nKSB7CisgICAgICAgICAgZm9ybWF0ID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJ2aWRlby94LXJhdyIsCisgICAgICAgICAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBmb3JtYXRfc3RyaW5nLCBOVUxMKTsKKyAgICAgICAgICBnX2ZyZWUgKGZvcm1hdF9zdHJpbmcpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZvcm1hdCkgeworICAgICAgICAgIGZvciAoaiA9IHNpemVzOyBqOyBqID0gai0+bmV4dCkgeworICAgICAgICAgICAgR3N0QUhDU2l6ZSAqcyA9IGotPmRhdGE7CisgICAgICAgICAgICBHc3RTdHJ1Y3R1cmUgKnNpemU7CisKKyAgICAgICAgICAgIHNpemUgPSBnc3Rfc3RydWN0dXJlX2NvcHkgKGZvcm1hdCk7CisgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldCAoc2l6ZSwgIndpZHRoIiwgR19UWVBFX0lOVCwgcy0+d2lkdGgsCisgICAgICAgICAgICAgICAgImhlaWdodCIsIEdfVFlQRV9JTlQsIHMtPmhlaWdodCwKKyAgICAgICAgICAgICAgICAiaW50ZXJsYWNlZCIsIEdfVFlQRV9CT09MRUFOLCBGQUxTRSwKKyAgICAgICAgICAgICAgICAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgR1NUX1RZUEVfRlJBQ1RJT04sIDEsIDEsIE5VTEwpOworCisgICAgICAgICAgICBmb3IgKGsgPSByYW5nZXM7IGs7IGsgPSBrLT5uZXh0KSB7CisgICAgICAgICAgICAgIGludCAqcmFuZ2UgPSBrLT5kYXRhOworICAgICAgICAgICAgICBHc3RTdHJ1Y3R1cmUgKnM7CisKKyAgICAgICAgICAgICAgcyA9IGdzdF9zdHJ1Y3R1cmVfY29weSAoc2l6ZSk7CisgICAgICAgICAgICAgIGlmIChyYW5nZVswXSA9PSByYW5nZVsxXSkgeworICAgICAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT04sCisgICAgICAgICAgICAgICAgICAgIHJhbmdlWzBdLCAxMDAwLCBOVUxMKTsKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgImZyYW1lcmF0ZSIsIEdTVF9UWVBFX0ZSQUNUSU9OX1JBTkdFLAorICAgICAgICAgICAgICAgICAgICByYW5nZVswXSwgMTAwMCwgcmFuZ2VbMV0sIDEwMDAsIE5VTEwpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGdzdF9jYXBzX2FwcGVuZF9zdHJ1Y3R1cmUgKHJldCwgcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX2ZyZWUgKHNpemUpOworICAgICAgICAgIH0KKyAgICAgICAgICBnc3Rfc3RydWN0dXJlX2ZyZWUgKGZvcm1hdCk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTdXBwb3J0ZWQgcHJldmlldyBzaXplczoiKTsKKyAgICAgIGZvciAoaSA9IHNpemVzOyBpOyBpID0gaS0+bmV4dCkgeworICAgICAgICBHc3RBSENTaXplICpzID0gaS0+ZGF0YTsKKworICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiICAgICVkeCVkIiwgcy0+d2lkdGgsIHMtPmhlaWdodCk7CisgICAgICB9CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU3VwcG9ydGVkIHByZXZpZXcgZnBzIHJhbmdlOiIpOworICAgICAgZm9yIChpID0gcmFuZ2VzOyBpOyBpID0gaS0+bmV4dCkgeworICAgICAgICBpbnQgKnJhbmdlID0gaS0+ZGF0YTsKKworICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiICAgIFslZCwgJWRdIiwgcmFuZ2VbMF0sIHJhbmdlWzFdKTsKKyAgICAgIH0KKworICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9wcmV2aWV3X2Zvcm1hdHNfZnJlZSAoZm9ybWF0cyk7CisgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX3ByZXZpZXdfc2l6ZXNfZnJlZSAoc2l6ZXMpOworICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9wcmV2aWV3X2Zwc19yYW5nZV9mcmVlIChyYW5nZXMpOworICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorfQorCitzdGF0aWMgR3N0Q2FwcyAqCitnc3RfYWhjX3NyY19maXhhdGUgKEdzdEJhc2VTcmMgKiBzcmMsIEdzdENhcHMgKiBjYXBzKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAoc3JjKTsKKyAgR3N0U3RydWN0dXJlICpzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkZpeGF0aW5nIDogJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworCisgIGNhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChjYXBzKTsKKworICAvKiBXaWR0aC9oZWlnaHQgd2lsbCBiZSBmaXhlZCBhbHJlYWR5IGhlcmUsIGZvcm1hdCB3aWxsCisgICAqIGJlIGxlZnQgZm9yIGZpeGF0aW9uIGJ5IHRoZSBkZWZhdWx0IGhhbmRsZXIuCisgICAqIFdlIG9ubHkgaGF2ZSB0byBmaXhhdGUgZnJhbWVyYXRlIGhlcmUsIHRvIHRoZQorICAgKiBoaWdoZXN0IHBvc3NpYmxlIGZyYW1lcmF0ZS4KKyAgICovCisgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24gKHMsICJmcmFtZXJhdGUiLCBHX01BWElOVCwgMSk7CisKKyAgY2FwcyA9IEdTVF9CQVNFX1NSQ19DTEFTUyAocGFyZW50X2NsYXNzKS0+Zml4YXRlIChzcmMsIGNhcHMpOworCisgIHJldHVybiBjYXBzOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX3NldGNhcHMgKEdzdEJhc2VTcmMgKiBzcmMsIEdzdENhcHMgKiBjYXBzKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAoc3JjKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtcyA9IE5VTEw7CisKKyAgaWYgKCFzZWxmLT5jYW1lcmEpIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNlbGYsICJzZXRjYXBzIGNhbGxlZCB3aXRob3V0IGEgY2FtZXJhIGF2YWlsYWJsZSIpOworICAgIGdvdG8gZW5kOworICB9CisKKyAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgaWYgKHBhcmFtcykgeworICAgIEdzdFN0cnVjdHVyZSAqczsKKyAgICBjb25zdCBnY2hhciAqZm9ybWF0X3N0ciA9IE5VTEw7CisgICAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0OworICAgIGdpbnQgZm10OworICAgIGdpbnQgd2lkdGgsIGhlaWdodCwgZnBzX24sIGZwc19kLCBidWZmZXJfc2l6ZTsKKyAgICBHTGlzdCAqcmFuZ2VzLCAqbDsKKyAgICBnaW50IHJhbmdlX3NpemUgPSBHX01BWElOVDsKKworICAgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKKworICAgIGZvcm1hdF9zdHIgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJmb3JtYXQiKTsKKyAgICBmb3JtYXQgPSBnc3RfdmlkZW9fZm9ybWF0X2Zyb21fc3RyaW5nIChmb3JtYXRfc3RyKTsKKworICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgIndpZHRoIiwgJndpZHRoKTsKKyAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHMsICJoZWlnaHQiLCAmaGVpZ2h0KTsKKyAgICBnc3Rfc3RydWN0dXJlX2dldF9mcmFjdGlvbiAocywgImZyYW1lcmF0ZSIsICZmcHNfbiwgJmZwc19kKTsKKworICAgIGZwc19uICo9IDEwMDAgLyBmcHNfZDsKKworICAgIC8qIFNlbGVjdCB0aGUgYmVzdCByYW5nZSB0aGF0IGNvbnRhaW5zIG91ciBmcmFtZXJhdGUuCisgICAgICogV2UgKm11c3QqIHNldCBhIHJhbmdlIG9mIHRob3NlIHJldHVybmVkIGJ5IHRoZSBjYW1lcmEKKyAgICAgKiBhY2NvcmRpbmcgdG8gdGhlIEFQSSBkb2NzIGFuZCBjYW4ndCB1c2UgYSBzdWJzZXQgb2YgYW55CisgICAgICogb2YgdGhvc2UgcmFuZ2VzLgorICAgICAqIFdlIGNob3NlIHRoZSBzbWFsbGVzdCByYW5nZSB0aGF0IGNvbnRhaW5zIHRoZSB0YXJnZXQKKyAgICAgKiBmcmFtZXJhdGUuCisgICAgICovCisgICAgc2VsZi0+ZnBzX21heCA9IHNlbGYtPmZwc19taW4gPSAwOworICAgIHJhbmdlcyA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX3ByZXZpZXdfZnBzX3JhbmdlIChwYXJhbXMpOworICAgIHJhbmdlcyA9IGdfbGlzdF9zb3J0IChyYW5nZXMsIChHQ29tcGFyZUZ1bmMpIF9jb21wYXJlX3Jhbmdlcyk7CisgICAgZm9yIChsID0gcmFuZ2VzOyBsOyBsID0gbC0+bmV4dCkgeworICAgICAgaW50ICpyYW5nZSA9IGwtPmRhdGE7CisKKyAgICAgIGlmIChmcHNfbiA+PSByYW5nZVswXSAmJiBmcHNfbiA8PSByYW5nZVsxXSAmJgorICAgICAgICAgIHJhbmdlX3NpemUgPiAocmFuZ2VbMV0gLSByYW5nZVswXSkpIHsKKyAgICAgICAgc2VsZi0+ZnBzX21pbiA9IHJhbmdlWzBdOworICAgICAgICBzZWxmLT5mcHNfbWF4ID0gcmFuZ2VbMV07CisgICAgICAgIHJhbmdlX3NpemUgPSByYW5nZVsxXSAtIHJhbmdlWzBdOworICAgICAgfQorICAgIH0KKyAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX3ByZXZpZXdfZnBzX3JhbmdlX2ZyZWUgKHJhbmdlcyk7CisgICAgaWYgKHNlbGYtPmZwc19tYXggPT0gMCkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkNvdWxkbid0IGZpbmQgYW4gYXBwbGljYWJsZSBGUFMgcmFuZ2UiKTsKKyAgICAgIGdvdG8gZW5kOworICAgIH0KKworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVYxMjoKKyAgICAgICAgZm10ID0gSW1hZ2VGb3JtYXRfWVYxMjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYyMToKKyAgICAgICAgZm10ID0gSW1hZ2VGb3JtYXRfTlYyMTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVVZMjoKKyAgICAgICAgZm10ID0gSW1hZ2VGb3JtYXRfWVVZMjsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCMTY6CisgICAgICAgIGZtdCA9IEltYWdlRm9ybWF0X1JHQl81NjU7CisgICAgICAgIGJyZWFrOworICAgICAgICAvKiBHU1RfVklERU9fRk9STUFUX05WMTYgZG9lc24ndCBleGlzdCAqLworICAgICAgICAvL2Nhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjE2OgorICAgICAgICAvL2ZtdCA9IEltYWdlRm9ybWF0X05WMTY7CisgICAgICAgIC8vYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBmbXQgPSBJbWFnZUZvcm1hdF9VTktOT1dOOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoZm10ID09IEltYWdlRm9ybWF0X1VOS05PV04pIHsKKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoc2VsZiwgInVuc3VwcG9ydGVkIHZpZGVvIGZvcm1hdCAoJXMpIiwgZm9ybWF0X3N0cik7CisgICAgICBnb3RvIGVuZDsKKyAgICB9CisKKyAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3ByZXZpZXdfc2l6ZSAocGFyYW1zLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3ByZXZpZXdfZm9ybWF0IChwYXJhbXMsIGZtdCk7CisgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9wcmV2aWV3X2Zwc19yYW5nZSAocGFyYW1zLCBzZWxmLT5mcHNfbWluLAorICAgICAgICBzZWxmLT5mcHNfbWF4KTsKKworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTZXR0aW5nIGNhbWVyYSBwYXJhbWV0ZXJzIDogJWQgJWR4JWQgQCBbJWYsICVmXSIsCisgICAgICAgIGZtdCwgd2lkdGgsIGhlaWdodCwgc2VsZi0+ZnBzX21pbiAvIDEwMDAuMCwgc2VsZi0+ZnBzX21heCAvIDEwMDAuMCk7CisKKyAgICBpZiAoIWdzdF9haF9jYW1lcmFfc2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSwgcGFyYW1zKSkgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzZWxmLCAiVW5hYmxlIHRvIHNldCB2aWRlbyBwYXJhbWV0ZXJzIik7CisgICAgICBnb3RvIGVuZDsKKyAgICB9CisKKyAgICBzZWxmLT53aWR0aCA9IHdpZHRoOworICAgIHNlbGYtPmhlaWdodCA9IGhlaWdodDsKKyAgICBzZWxmLT5mb3JtYXQgPSBmbXQ7CisgICAgYnVmZmVyX3NpemUgPSB3aWR0aCAqIGhlaWdodCAqCisgICAgICAgICgoZG91YmxlKSBnc3RfYWdfaW1hZ2Vmb3JtYXRfZ2V0X2JpdHNfcGVyX3BpeGVsIChmbXQpIC8gOCk7CisKKyAgICBpZiAoYnVmZmVyX3NpemUgPiBzZWxmLT5idWZmZXJfc2l6ZSkgeworICAgICAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICAgICAgZ2ludCBpOworCisgICAgICBmb3IgKGkgPSAwOyBpIDwgTlVNX0NBTExCQUNLX0JVRkZFUlM7IGkrKykgeworICAgICAgICBqYnl0ZUFycmF5IGFycmF5ID0gKCplbnYpLT5OZXdCeXRlQXJyYXkgKGVudiwgYnVmZmVyX3NpemUpOworCisgICAgICAgIGlmIChhcnJheSkgeworICAgICAgICAgIGdzdF9haF9jYW1lcmFfYWRkX2NhbGxiYWNrX2J1ZmZlciAoc2VsZi0+Y2FtZXJhLCBhcnJheSk7CisgICAgICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBhcnJheSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgc2VsZi0+YnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZTsKKworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJzZXR0aW5nIGJ1ZmZlciB3OiVkIGg6JWQgYnVmZmVyX3NpemU6ICVkIiwKKyAgICAgICAgc2VsZi0+d2lkdGgsIHNlbGYtPmhlaWdodCwgc2VsZi0+YnVmZmVyX3NpemUpOworCisgICAgcmV0ID0gVFJVRTsKKyAgfQorCitlbmQ6CisgIGlmIChwYXJhbXMpCisgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisKKyAgaWYgKHJldCAmJiBzZWxmLT5zdGFydCkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTdGFydGluZyBwcmV2aWV3Iik7CisgICAgcmV0ID0gZ3N0X2FoX2NhbWVyYV9zdGFydF9wcmV2aWV3IChzZWxmLT5jYW1lcmEpOworICAgIGlmIChyZXQpIHsKKyAgICAgIC8qIE5lZWQgdG8gcmVzZXQgY2FsbGJhY2tzIGFmdGVyIGV2ZXJ5IHN0YXJ0UHJldmlldyAqLworICAgICAgZ3N0X2FoX2NhbWVyYV9zZXRfcHJldmlld19jYWxsYmFja193aXRoX2J1ZmZlciAoc2VsZi0+Y2FtZXJhLAorICAgICAgICAgIGdzdF9haGNfc3JjX29uX3ByZXZpZXdfZnJhbWUsIHNlbGYpOworICAgICAgZ3N0X2FoX2NhbWVyYV9zZXRfZXJyb3JfY2FsbGJhY2sgKHNlbGYtPmNhbWVyYSwgZ3N0X2FoY19zcmNfb25fZXJyb3IsCisgICAgICAgICAgc2VsZik7CisgICAgICBzZWxmLT5zdGFydCA9IEZBTFNFOworICAgIH0KKyAgfQorICByZXR1cm4gcmV0OworfQorCit0eXBlZGVmIHN0cnVjdAoreworICBHc3RBSENTcmMgKnNlbGY7CisgIGpieXRlQXJyYXkgYXJyYXk7CisgIGpieXRlICpkYXRhOworfSBGcmVlRnVuY0J1ZmZlcjsKKworc3RhdGljIHZvaWQKK2dzdF9haGNfc3JjX2J1ZmZlcl9mcmVlX2Z1bmMgKGdwb2ludGVyIHByaXYpCit7CisgIEZyZWVGdW5jQnVmZmVyICpkYXRhID0gKEZyZWVGdW5jQnVmZmVyICopIHByaXY7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IGRhdGEtPnNlbGY7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5tdXRleCk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInJlbGVhc2UgJXAtPiVwIiwgZGF0YSwgZGF0YS0+YXJyYXkpOworCisgICgqZW52KS0+UmVsZWFzZUJ5dGVBcnJheUVsZW1lbnRzIChlbnYsIGRhdGEtPmFycmF5LCBkYXRhLT5kYXRhLCBKTklfQUJPUlQpOworICBpZiAoc2VsZi0+Y2FtZXJhKQorICAgIGdzdF9haF9jYW1lcmFfYWRkX2NhbGxiYWNrX2J1ZmZlciAoc2VsZi0+Y2FtZXJhLCBkYXRhLT5hcnJheSk7CisKKyAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwgZGF0YS0+YXJyYXkpOworCisgIGdfc2xpY2VfZnJlZSAoRnJlZUZ1bmNCdWZmZXIsIGRhdGEpOworCisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworICBnc3Rfb2JqZWN0X3VucmVmIChzZWxmKTsKK30KKworc3RhdGljIHZvaWQKK19kYXRhX3F1ZXVlX2l0ZW1fZnJlZSAoR3N0RGF0YVF1ZXVlSXRlbSAqIGl0ZW0pCit7CisgIEdTVF9ERUJVRyAoInJlbGVhc2UgICVwIiwgaXRlbS0+b2JqZWN0KTsKKworICBnc3RfYnVmZmVyX3VucmVmIChHU1RfQlVGRkVSIChpdGVtLT5vYmplY3QpKTsKKyAgZ19zbGljZV9mcmVlIChHc3REYXRhUXVldWVJdGVtLCBpdGVtKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9haGNfc3JjX29uX3ByZXZpZXdfZnJhbWUgKGpieXRlQXJyYXkgYXJyYXksIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHVzZXJfZGF0YSk7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgR3N0QnVmZmVyICpidWZmZXI7CisgIEdzdERhdGFRdWV1ZUl0ZW0gKml0ZW0gPSBOVUxMOworICBGcmVlRnVuY0J1ZmZlciAqbWFsbG9jX2RhdGEgPSBOVUxMOworICBHc3RDbG9ja1RpbWUgdGltZXN0YW1wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uID0gMDsKKyAgR3N0Q2xvY2sgKmNsb2NrOworICBnYm9vbGVhbiBxdWV1ZWQgPSBGQUxTRTsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5tdXRleCk7CisKKyAgaWYgKGFycmF5ID09IE5VTEwpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU2l6ZSBvZiBhcnJheSBpbiBxdWV1ZSBpcyB0b28gc21hbGwsIGRyb3BwaW5nIGl0Iik7CisgICAgZ290byBkb25lOworICB9CisKKyAgaWYgKChjbG9jayA9IEdTVF9FTEVNRU5UX0NMT0NLIChzZWxmKSkpIHsKKyAgICBHc3RDbG9ja1RpbWUgYmFzZV90aW1lID0gR1NUX0VMRU1FTlRfQ0FTVCAoc2VsZiktPmJhc2VfdGltZTsKKyAgICBHc3RDbG9ja1RpbWUgY3VycmVudF90czsKKworICAgIGdzdF9vYmplY3RfcmVmIChjbG9jayk7CisgICAgY3VycmVudF90cyA9IGdzdF9jbG9ja19nZXRfdGltZSAoY2xvY2spIC0gYmFzZV90aW1lOworICAgIGdzdF9vYmplY3RfdW5yZWYgKGNsb2NrKTsKKyAgICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHNlbGYtPnByZXZpb3VzX3RzKSkgeworICAgICAgdGltZXN0YW1wID0gc2VsZi0+cHJldmlvdXNfdHM7CisgICAgICBkdXJhdGlvbiA9IGN1cnJlbnRfdHMgLSBzZWxmLT5wcmV2aW91c190czsKKyAgICAgIHNlbGYtPnByZXZpb3VzX3RzID0gY3VycmVudF90czsKKyAgICB9IGVsc2UgeworICAgICAgLyogRHJvcCB0aGUgZmlyc3QgYnVmZmVyICovCisgICAgICBzZWxmLT5wcmV2aW91c190cyA9IGN1cnJlbnRfdHM7CisgICAgICBnc3RfYWhfY2FtZXJhX2FkZF9jYWxsYmFja19idWZmZXIgKHNlbGYtPmNhbWVyYSwgYXJyYXkpOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgImRyb3BwaW5nIHRoZSBmaXJzdCBidWZmZXIiKTsKKyAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgImVsZW1lbnQgY2xvY2sgaGFzbid0IGNyZWF0ZWQgeWV0LiIpOworICAgIGdzdF9haF9jYW1lcmFfYWRkX2NhbGxiYWNrX2J1ZmZlciAoc2VsZi0+Y2FtZXJhLCBhcnJheSk7CisgICAgZ290byBkb25lOworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlJlY2VpdmVkIGRhdGEgYnVmZmVyICVwIiwgYXJyYXkpOworCisgIG1hbGxvY19kYXRhID0gZ19zbGljZV9uZXcwIChGcmVlRnVuY0J1ZmZlcik7CisgIG1hbGxvY19kYXRhLT5zZWxmID0gZ3N0X29iamVjdF9yZWYgKHNlbGYpOworICBtYWxsb2NfZGF0YS0+YXJyYXkgPSAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBhcnJheSk7CisgIG1hbGxvY19kYXRhLT5kYXRhID0gKCplbnYpLT5HZXRCeXRlQXJyYXlFbGVtZW50cyAoZW52LCBhcnJheSwgTlVMTCk7CisKKyAgYnVmZmVyID0KKyAgICAgIGdzdF9idWZmZXJfbmV3X3dyYXBwZWRfZnVsbCAoR1NUX01FTU9SWV9GTEFHX1JFQURPTkxZLCBtYWxsb2NfZGF0YS0+ZGF0YSwKKyAgICAgIHNlbGYtPmJ1ZmZlcl9zaXplLCAwLCBzZWxmLT5idWZmZXJfc2l6ZSwgbWFsbG9jX2RhdGEsCisgICAgICBnc3RfYWhjX3NyY19idWZmZXJfZnJlZV9mdW5jKTsKKyAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKSA9IGR1cmF0aW9uOworICBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKSA9IHRpbWVzdGFtcDsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiY3JlYXRpbmcgd3JhcHBlZCBidWZmZXIgKHNpemU6ICVkKSIsCisgICAgICBzZWxmLT5idWZmZXJfc2l6ZSk7CisKKyAgaXRlbSA9IGdfc2xpY2VfbmV3MCAoR3N0RGF0YVF1ZXVlSXRlbSk7CisgIGl0ZW0tPm9iamVjdCA9IEdTVF9NSU5JX09CSkVDVCAoYnVmZmVyKTsKKyAgaXRlbS0+c2l6ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZmZlcik7CisgIGl0ZW0tPmR1cmF0aW9uID0gR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKTsKKyAgaXRlbS0+dmlzaWJsZSA9IFRSVUU7CisgIGl0ZW0tPmRlc3Ryb3kgPSAoR0Rlc3Ryb3lOb3RpZnkpIF9kYXRhX3F1ZXVlX2l0ZW1fZnJlZTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAid3JhcHBpbmcgam5pIGFycmF5ICVwLT4lcCAlcC0+JXAiLCBpdGVtLAorICAgICAgaXRlbS0+b2JqZWN0LCBtYWxsb2NfZGF0YSwgbWFsbG9jX2RhdGEtPmFycmF5KTsKKworICBxdWV1ZWQgPSBnc3RfZGF0YV9xdWV1ZV9wdXNoIChzZWxmLT5xdWV1ZSwgaXRlbSk7CisKK2RvbmU6CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworCisgIGlmIChpdGVtICYmICFxdWV1ZWQpIHsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKHNlbGYsICJjb3VsZCBub3QgYWRkIGJ1ZmZlciB0byBxdWV1ZSIpOworICAgIC8qIENhbid0IGFkZCBidWZmZXIgdG8gcXVldWUuIE11c3QgYmUgZmx1c2hpbmcuICovCisgICAgX2RhdGFfcXVldWVfaXRlbV9mcmVlIChpdGVtKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X2FoY19zcmNfb25fZXJyb3IgKGdpbnQgZXJyb3IsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHVzZXJfZGF0YSk7CisKKyAgR1NUX1dBUk5JTkdfT0JKRUNUIChzZWxmLCAiUmVjZWl2ZWQgZXJyb3IgY29kZSA6ICVkIiwgZXJyb3IpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX29wZW4gKEdzdEFIQ1NyYyAqIHNlbGYpCit7CisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJPcGVuaW5nIGNhbWVyYSIpOworCisgIHNlbGYtPmNhbWVyYSA9IGdzdF9haF9jYW1lcmFfb3BlbiAoc2VsZi0+ZGV2aWNlKTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIk9wZW5lZCBjYW1lcmEiKTsKKworICAgIHNlbGYtPnRleHR1cmUgPSBnc3RfYWdfc3VyZmFjZXRleHR1cmVfbmV3ICgwKTsKKyAgICBnc3RfYWhfY2FtZXJhX3NldF9wcmV2aWV3X3RleHR1cmUgKHNlbGYtPmNhbWVyYSwgc2VsZi0+dGV4dHVyZSk7CisgICAgc2VsZi0+YnVmZmVyX3NpemUgPSAwOworICB9IGVsc2UgeworICAgIGdpbnQgbnVtX2NhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9udW1iZXJfb2ZfY2FtZXJhcyAoKTsKKyAgICBpZiAobnVtX2NhbXMgPiAwICYmIHNlbGYtPmRldmljZSA8IG51bV9jYW1zKSB7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2VsZiwgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgICAoIlVuYWJsZSB0byBvcGVuIGRldmljZSAnJWQnLiIsIHNlbGYtPmRldmljZSksIEdTVF9FUlJPUl9TWVNURU0pOworICAgIH0gZWxzZSBpZiAobnVtX2NhbXMgPiAwKSB7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2VsZiwgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgICAoIkRldmljZSAnJWQnIGRvZXMgbm90IGV4aXN0LiIsIHNlbGYtPmRldmljZSksIEdTVF9FUlJPUl9TWVNURU0pOworICAgIH0gZWxzZSB7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2VsZiwgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgICAoIlRoZXJlIGFyZSBubyBjYW1lcmFzIGF2YWlsYWJsZSBvbiB0aGlzIGRldmljZS4iKSwgR1NUX0VSUk9SX1NZU1RFTSk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIChzZWxmLT5jYW1lcmEgIT0gTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYWhjX3NyY19jbG9zZSAoR3N0QUhDU3JjICogc2VsZikKK3sKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIGdzdF9haF9jYW1lcmFfc2V0X2Vycm9yX2NhbGxiYWNrIChzZWxmLT5jYW1lcmEsIE5VTEwsIE5VTEwpOworICAgIGdzdF9haF9jYW1lcmFfc2V0X3ByZXZpZXdfY2FsbGJhY2tfd2l0aF9idWZmZXIgKHNlbGYtPmNhbWVyYSwgTlVMTCwgTlVMTCk7CisgICAgZ3N0X2FoX2NhbWVyYV9yZWxlYXNlIChzZWxmLT5jYW1lcmEpOworICAgIGdzdF9haF9jYW1lcmFfZnJlZSAoc2VsZi0+Y2FtZXJhKTsKKyAgfQorICBzZWxmLT5jYW1lcmEgPSBOVUxMOworCisgIGlmIChzZWxmLT50ZXh0dXJlKSB7CisgICAgZ3N0X2FnX3N1cmZhY2V0ZXh0dXJlX3JlbGVhc2UgKHNlbGYtPnRleHR1cmUpOworICAgIGdzdF9hZ19zdXJmYWNldGV4dHVyZV9mcmVlIChzZWxmLT50ZXh0dXJlKTsKKyAgfQorICBzZWxmLT50ZXh0dXJlID0gTlVMTDsKK30KKworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCitnc3RfYWhjX3NyY19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQoreworICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1M7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChlbGVtZW50KTsKKworICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfTlVMTF9UT19SRUFEWToKKyAgICAgIGlmICghZ3N0X2FoY19zcmNfb3BlbiAoc2VsZikpCisgICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXQgPSBHU1RfRUxFTUVOVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+Y2hhbmdlX3N0YXRlIChlbGVtZW50LCB0cmFuc2l0aW9uKTsKKworICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fTlVMTDoKKyAgICAgIGdzdF9haGNfc3JjX2Nsb3NlIChzZWxmKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfc3RhcnQgKEdzdEJhc2VTcmMgKiBic3JjKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAoYnNyYyk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlN0YXJ0aW5nIHByZXZpZXciKTsKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIHNlbGYtPnByZXZpb3VzX3RzID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICBzZWxmLT5mcHNfbWluID0gc2VsZi0+ZnBzX21heCA9IHNlbGYtPndpZHRoID0gc2VsZi0+aGVpZ2h0ID0gMDsKKyAgICBzZWxmLT5mb3JtYXQgPSBJbWFnZUZvcm1hdF9VTktOT1dOOworICAgIHNlbGYtPnN0YXJ0ID0gVFJVRTsKKworICAgIHJldHVybiBUUlVFOworICB9IGVsc2UgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX3N0b3AgKEdzdEJhc2VTcmMgKiBic3JjKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAoYnNyYyk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlN0b3BwaW5nIHByZXZpZXciKTsKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIGdzdF9kYXRhX3F1ZXVlX2ZsdXNoIChzZWxmLT5xdWV1ZSk7CisgICAgc2VsZi0+c3RhcnQgPSBGQUxTRTsKKyAgICBnc3RfYWhfY2FtZXJhX3NldF9lcnJvcl9jYWxsYmFjayAoc2VsZi0+Y2FtZXJhLCBOVUxMLCBOVUxMKTsKKyAgICByZXR1cm4gZ3N0X2FoX2NhbWVyYV9zdG9wX3ByZXZpZXcgKHNlbGYtPmNhbWVyYSk7CisgIH0KKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfdW5sb2NrIChHc3RCYXNlU3JjICogYnNyYykKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKGJzcmMpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJVbmxvY2tpbmcgY3JlYXRlIik7CisgIGdzdF9kYXRhX3F1ZXVlX3NldF9mbHVzaGluZyAoc2VsZi0+cXVldWUsIFRSVUUpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX3VubG9ja19zdG9wIChHc3RCYXNlU3JjICogYnNyYykKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKGJzcmMpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTdG9wcGluZyB1bmxvY2siKTsKKyAgZ3N0X2RhdGFfcXVldWVfc2V0X2ZsdXNoaW5nIChzZWxmLT5xdWV1ZSwgRkFMU0UpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X2FoY19zcmNfY3JlYXRlIChHc3RQdXNoU3JjICogc3JjLCBHc3RCdWZmZXIgKiogYnVmZmVyKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAoc3JjKTsKKyAgR3N0RGF0YVF1ZXVlSXRlbSAqaXRlbTsKKworICBpZiAoIWdzdF9kYXRhX3F1ZXVlX3BvcCAoc2VsZi0+cXVldWUsICZpdGVtKSkgeworICAgIEdTVF9JTkZPX09CSkVDVCAoc2VsZiwgImVtcHR5IHF1ZXVlIik7CisgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgImNyZWF0aW5nIGJ1ZmZlciAlcC0+JXAiLCBpdGVtLCBpdGVtLT5vYmplY3QpOworCisgICpidWZmZXIgPSBHU1RfQlVGRkVSIChpdGVtLT5vYmplY3QpOworICBnX3NsaWNlX2ZyZWUgKEdzdERhdGFRdWV1ZUl0ZW0sIGl0ZW0pOworCisgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19xdWVyeSAoR3N0QmFzZVNyYyAqIGJzcmMsIEdzdFF1ZXJ5ICogcXVlcnkpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChic3JjKTsKKworICBzd2l0Y2ggKEdTVF9RVUVSWV9UWVBFIChxdWVyeSkpIHsKKyAgICBjYXNlIEdTVF9RVUVSWV9MQVRFTkNZOnsKKyAgICAgIEdzdENsb2NrVGltZSBtaW47CisKKyAgICAgIC8qIEFsbG93IG9mIDEgZnJhbWUgbGF0ZW5jeSBiYXNlIG9uIHRoZSBsb25nZXIgZnJhbWUgZHVyYXRpb24gKi8KKyAgICAgIGdzdF9xdWVyeV9wYXJzZV9sYXRlbmN5IChxdWVyeSwgTlVMTCwgJm1pbiwgTlVMTCk7CisgICAgICBtaW4gPSBnc3RfdXRpbF91aW50NjRfc2NhbGUgKEdTVF9TRUNPTkQsIDEwMDAsIHNlbGYtPmZwc19taW4pOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwKKyAgICAgICAgICAiUmVwb3J0aW5nIGxhdGVuY3kgbWluOiAlIiBHU1RfVElNRV9GT1JNQVQsIEdTVF9USU1FX0FSR1MgKG1pbikpOworICAgICAgZ3N0X3F1ZXJ5X3NldF9sYXRlbmN5IChxdWVyeSwgVFJVRSwgbWluLCBtaW4pOworCisgICAgICByZXR1cm4gVFJVRTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIEdTVF9CQVNFX1NSQ19DTEFTUyAocGFyZW50X2NsYXNzKS0+cXVlcnkgKGJzcmMsIHF1ZXJ5KTsKKyAgICAgIGJyZWFrOworICB9CisKKyAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Cit9CmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFoY3NyYy5oIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhaGNzcmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzI0OTg5Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhaGNzcmMuaApAQCAtMCwwICsxLDg5IEBACisvKiBHU3RyZWFtZXIgYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEgU291cmNlCisgKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBDaXNjbyBTeXN0ZW1zLCBJbmMuCisgKiAgIEF1dGhvcjogWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIENvbGxhYm9yYSBMdGQuCisgKiAgIEF1dGhvcjogSnVzdGluIEtpbSA8anVzdGluLmtpbUBjb2xsYWJvcmEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfQUhDX1NSQ19IX18KKyNkZWZpbmUgX19HU1RfQUhDX1NSQ19IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvYmFzZS9nc3RwdXNoc3JjLmg+CisjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0ZGF0YXF1ZXVlLmg+CisKKyNpbmNsdWRlICJnc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuaCIKKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX0FIQ19TUkMgXAorICAoZ3N0X2FoY19zcmNfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX0FIQ19TUkMob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgR1NUX1RZUEVfQUhDX1NSQywgR3N0QUhDU3JjKSkKKyNkZWZpbmUgR1NUX0FIQ19TUkNfQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIEdTVF9UWVBFX0FIQ19TUkMsIEdzdEFIQ1NyY0NsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX0FIQ19TUkMob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgR1NUX1RZUEVfQUhDX1NSQykpCisjZGVmaW5lIEdTVF9JU19BSENfU1JDX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCBHU1RfVFlQRV9BSENfU1JDKSkKKworCit0eXBlZGVmIHN0cnVjdCBfR3N0QUhDU3JjIEdzdEFIQ1NyYzsKK3R5cGVkZWYgc3RydWN0IF9Hc3RBSENTcmNDbGFzcyBHc3RBSENTcmNDbGFzczsKKworLyoqCisgKiBHc3RBSENTcmM6CisgKgorICogT3BhcXVlIGRhdGEgc3RydWN0dXJlLgorICovCitzdHJ1Y3QgX0dzdEFIQ1NyYworeworICAvKjwgcHJpdmF0ZSA+Ki8KKyAgR3N0UHVzaFNyYyBwYXJlbnQ7CisKKyAgR3N0QUhDYW1lcmEgKmNhbWVyYTsKKyAgR3N0QUdTdXJmYWNlVGV4dHVyZSAqdGV4dHVyZTsKKyAgR0xpc3QgKmRhdGE7CisgIEdzdERhdGFRdWV1ZSAqcXVldWU7CisgIGdpbnQgYnVmZmVyX3NpemU7CisgIEdzdENsb2NrVGltZSBwcmV2aW91c190czsKKyAgZ2ludCBmb3JtYXQ7CisgIGdpbnQgd2lkdGg7CisgIGdpbnQgaGVpZ2h0OworICBnaW50IGZwc19taW47CisgIGdpbnQgZnBzX21heDsKKyAgZ2Jvb2xlYW4gc3RhcnQ7CisgIGdib29sZWFuIHNtb290aF96b29tOworICBHTXV0ZXggbXV0ZXg7CisKKyAgLyogUHJvcGVydGllcyAqLworICBnaW50IGRldmljZTsKK307CisKK3N0cnVjdCBfR3N0QUhDU3JjQ2xhc3MKK3sKKyAgR3N0UHVzaFNyY0NsYXNzIHBhcmVudF9jbGFzczsKKyAgR0xpc3QgKnByb2JlX3Byb3BlcnRpZXM7Cit9OworCitHVHlwZSBnc3RfYWhjX3NyY19nZXRfdHlwZSAodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisjZW5kaWYgLyogX19HU1RfQUhDX1NSQ19IX18gKi8KZGlmZiAtLWdpdCBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmMgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5jCmluZGV4IDA3OGUyOGEuLmM4NmU1MTkgMTAwNjQ0Ci0tLSBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmMKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuYwpAQCAtMjksNiArMjksOCBAQAogI2RlZmluZSBvcmNfbWVtY3B5IG1lbWNweQogI2VuZGlmCiAKKyNpbmNsdWRlICJnc3RhaGNzcmMuaCIKKwogI2luY2x1ZGUgImdzdGFtYy5oIgogI2luY2x1ZGUgImdzdGFtYy1jb25zdGFudHMuaCIKIApAQCAtMTg1LDggKzE4Nyw4IEBACiB9CiAKIGdib29sZWFuCi1nc3RfYW1jX2NvZGVjX2NvbmZpZ3VyZSAoR3N0QW1jQ29kZWMgKiBjb2RlYywgR3N0QW1jRm9ybWF0ICogZm9ybWF0LCBnaW50IGZsYWdzLAotICAgIEdFcnJvciAqKiBlcnIpCitnc3RfYW1jX2NvZGVjX2NvbmZpZ3VyZSAoR3N0QW1jQ29kZWMgKiBjb2RlYywgR3N0QW1jRm9ybWF0ICogZm9ybWF0LAorICAgIGpvYmplY3Qgc3VyZmFjZSwgZ2ludCBmbGFncywgR0Vycm9yICoqIGVycikKIHsKICAgSk5JRW52ICplbnY7CiAKQEAgLTE5NSw3ICsxOTcsNyBAQAogCiAgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CiAgIHJldHVybiBnc3RfYW1jX2puaV9jYWxsX3ZvaWRfbWV0aG9kIChlbnYsIGVyciwgY29kZWMtPm9iamVjdCwKLSAgICAgIG1lZGlhX2NvZGVjLmNvbmZpZ3VyZSwgZm9ybWF0LT5vYmplY3QsIE5VTEwsIE5VTEwsIGZsYWdzKTsKKyAgICAgIG1lZGlhX2NvZGVjLmNvbmZpZ3VyZSwgZm9ybWF0LT5vYmplY3QsIHN1cmZhY2UsIE5VTEwsIGZsYWdzKTsKIH0KIAogR3N0QW1jRm9ybWF0ICoKQEAgLTM2MCwyOCArMzYyLDMzIEBACiAKICAgaWYgKCFtZWRpYV9jb2RlYy5nZXRfb3V0cHV0X2J1ZmZlcikgewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChpbmRleCA8IGNvZGVjLT5uX291dHB1dF9idWZmZXJzICYmIGluZGV4ID49IDAsIE5VTEwpOwotICAgIHJldHVybiBnc3RfYW1jX2J1ZmZlcl9jb3B5ICgmY29kZWMtPm91dHB1dF9idWZmZXJzW2luZGV4XSk7CisgICAgaWYgKGNvZGVjLT5vdXRwdXRfYnVmZmVyc1tpbmRleF0ub2JqZWN0KQorICAgICAgcmV0dXJuIGdzdF9hbWNfYnVmZmVyX2NvcHkgKCZjb2RlYy0+b3V0cHV0X2J1ZmZlcnNbaW5kZXhdKTsKKyAgICBlbHNlCisgICAgICByZXR1cm4gTlVMTDsKICAgfQogCiAgIGlmICghZ3N0X2FtY19qbmlfY2FsbF9vYmplY3RfbWV0aG9kIChlbnYsIGVyciwgY29kZWMtPm9iamVjdCwKICAgICAgICAgICBtZWRpYV9jb2RlYy5nZXRfb3V0cHV0X2J1ZmZlciwgJmJ1ZmZlciwgaW5kZXgpKQogICAgIGdvdG8gZG9uZTsKIAotICByZXQgPSBnX25ldzAgKEdzdEFtY0J1ZmZlciwgMSk7Ci0gIHJldC0+b2JqZWN0ID0gZ3N0X2FtY19qbmlfb2JqZWN0X21ha2VfZ2xvYmFsIChlbnYsIGJ1ZmZlcik7Ci0gIGlmICghcmV0LT5vYmplY3QpIHsKLSAgICBnc3RfYW1jX2puaV9zZXRfZXJyb3IgKGVudiwgZXJyLCBHU1RfTElCUkFSWV9FUlJPUiwKLSAgICAgICAgR1NUX0xJQlJBUllfRVJST1JfRkFJTEVELCAiRmFpbGVkIHRvIGNyZWF0ZSBnbG9iYWwgYnVmZmVyIHJlZmVyZW5jZSIpOwotICAgIGdvdG8gZXJyb3I7Ci0gIH0KKyAgaWYgKGJ1ZmZlciAhPSBOVUxMKSB7CisgICAgcmV0ID0gZ19uZXcwIChHc3RBbWNCdWZmZXIsIDEpOworICAgIHJldC0+b2JqZWN0ID0gZ3N0X2FtY19qbmlfb2JqZWN0X21ha2VfZ2xvYmFsIChlbnYsIGJ1ZmZlcik7CisgICAgaWYgKCFyZXQtPm9iamVjdCkgeworICAgICAgZ3N0X2FtY19qbmlfc2V0X2Vycm9yIChlbnYsIGVyciwgR1NUX0xJQlJBUllfRVJST1IsCisgICAgICAgICAgR1NUX0xJQlJBUllfRVJST1JfRkFJTEVELCAiRmFpbGVkIHRvIGNyZWF0ZSBnbG9iYWwgYnVmZmVyIHJlZmVyZW5jZSIpOworICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKLSAgcmV0LT5kYXRhID0gKCplbnYpLT5HZXREaXJlY3RCdWZmZXJBZGRyZXNzIChlbnYsIHJldC0+b2JqZWN0KTsKLSAgaWYgKCFyZXQtPmRhdGEpIHsKLSAgICBnc3RfYW1jX2puaV9zZXRfZXJyb3IgKGVudiwgZXJyLCBHU1RfTElCUkFSWV9FUlJPUiwKLSAgICAgICAgR1NUX0xJQlJBUllfRVJST1JfRkFJTEVELCAiRmFpbGVkIHRvIGdldCBidWZmZXIgYWRkcmVzcyIpOwotICAgIGdvdG8gZXJyb3I7CisgICAgcmV0LT5kYXRhID0gKCplbnYpLT5HZXREaXJlY3RCdWZmZXJBZGRyZXNzIChlbnYsIHJldC0+b2JqZWN0KTsKKyAgICBpZiAoIXJldC0+ZGF0YSkgeworICAgICAgZ3N0X2FtY19qbmlfc2V0X2Vycm9yIChlbnYsIGVyciwgR1NUX0xJQlJBUllfRVJST1IsCisgICAgICAgICAgR1NUX0xJQlJBUllfRVJST1JfRkFJTEVELCAiRmFpbGVkIHRvIGdldCBidWZmZXIgYWRkcmVzcyIpOworICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcmV0LT5zaXplID0gKCplbnYpLT5HZXREaXJlY3RCdWZmZXJDYXBhY2l0eSAoZW52LCByZXQtPm9iamVjdCk7CiAgIH0KLSAgcmV0LT5zaXplID0gKCplbnYpLT5HZXREaXJlY3RCdWZmZXJDYXBhY2l0eSAoZW52LCByZXQtPm9iamVjdCk7CiAKIGRvbmU6CiAKQEAgLTQzNiwyOCArNDQzLDMzIEBACiAKICAgaWYgKCFtZWRpYV9jb2RlYy5nZXRfaW5wdXRfYnVmZmVyKSB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGluZGV4IDwgY29kZWMtPm5faW5wdXRfYnVmZmVycyAmJiBpbmRleCA+PSAwLCBOVUxMKTsKLSAgICByZXR1cm4gZ3N0X2FtY19idWZmZXJfY29weSAoJmNvZGVjLT5pbnB1dF9idWZmZXJzW2luZGV4XSk7CisgICAgaWYgKGNvZGVjLT5pbnB1dF9idWZmZXJzW2luZGV4XS5vYmplY3QpCisgICAgICByZXR1cm4gZ3N0X2FtY19idWZmZXJfY29weSAoJmNvZGVjLT5pbnB1dF9idWZmZXJzW2luZGV4XSk7CisgICAgZWxzZQorICAgICAgcmV0dXJuIE5VTEw7CiAgIH0KIAogICBpZiAoIWdzdF9hbWNfam5pX2NhbGxfb2JqZWN0X21ldGhvZCAoZW52LCBlcnIsIGNvZGVjLT5vYmplY3QsCiAgICAgICAgICAgbWVkaWFfY29kZWMuZ2V0X2lucHV0X2J1ZmZlciwgJmJ1ZmZlciwgaW5kZXgpKQogICAgIGdvdG8gZG9uZTsKIAotICByZXQgPSBnX25ldzAgKEdzdEFtY0J1ZmZlciwgMSk7Ci0gIHJldC0+b2JqZWN0ID0gZ3N0X2FtY19qbmlfb2JqZWN0X21ha2VfZ2xvYmFsIChlbnYsIGJ1ZmZlcik7Ci0gIGlmICghcmV0LT5vYmplY3QpIHsKLSAgICBnc3RfYW1jX2puaV9zZXRfZXJyb3IgKGVudiwgZXJyLCBHU1RfTElCUkFSWV9FUlJPUiwKLSAgICAgICAgR1NUX0xJQlJBUllfRVJST1JfRkFJTEVELCAiRmFpbGVkIHRvIGNyZWF0ZSBnbG9iYWwgYnVmZmVyIHJlZmVyZW5jZSIpOwotICAgIGdvdG8gZXJyb3I7Ci0gIH0KKyAgaWYgKGJ1ZmZlciAhPSBOVUxMKSB7CisgICAgcmV0ID0gZ19uZXcwIChHc3RBbWNCdWZmZXIsIDEpOworICAgIHJldC0+b2JqZWN0ID0gZ3N0X2FtY19qbmlfb2JqZWN0X21ha2VfZ2xvYmFsIChlbnYsIGJ1ZmZlcik7CisgICAgaWYgKCFyZXQtPm9iamVjdCkgeworICAgICAgZ3N0X2FtY19qbmlfc2V0X2Vycm9yIChlbnYsIGVyciwgR1NUX0xJQlJBUllfRVJST1IsCisgICAgICAgICAgR1NUX0xJQlJBUllfRVJST1JfRkFJTEVELCAiRmFpbGVkIHRvIGNyZWF0ZSBnbG9iYWwgYnVmZmVyIHJlZmVyZW5jZSIpOworICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKLSAgcmV0LT5kYXRhID0gKCplbnYpLT5HZXREaXJlY3RCdWZmZXJBZGRyZXNzIChlbnYsIHJldC0+b2JqZWN0KTsKLSAgaWYgKCFyZXQtPmRhdGEpIHsKLSAgICBnc3RfYW1jX2puaV9zZXRfZXJyb3IgKGVudiwgZXJyLCBHU1RfTElCUkFSWV9FUlJPUiwKLSAgICAgICAgR1NUX0xJQlJBUllfRVJST1JfRkFJTEVELCAiRmFpbGVkIHRvIGdldCBidWZmZXIgYWRkcmVzcyIpOwotICAgIGdvdG8gZXJyb3I7CisgICAgcmV0LT5kYXRhID0gKCplbnYpLT5HZXREaXJlY3RCdWZmZXJBZGRyZXNzIChlbnYsIHJldC0+b2JqZWN0KTsKKyAgICBpZiAoIXJldC0+ZGF0YSkgeworICAgICAgZ3N0X2FtY19qbmlfc2V0X2Vycm9yIChlbnYsIGVyciwgR1NUX0xJQlJBUllfRVJST1IsCisgICAgICAgICAgR1NUX0xJQlJBUllfRVJST1JfRkFJTEVELCAiRmFpbGVkIHRvIGdldCBidWZmZXIgYWRkcmVzcyIpOworICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcmV0LT5zaXplID0gKCplbnYpLT5HZXREaXJlY3RCdWZmZXJDYXBhY2l0eSAoZW52LCByZXQtPm9iamVjdCk7CiAgIH0KLSAgcmV0LT5zaXplID0gKCplbnYpLT5HZXREaXJlY3RCdWZmZXJDYXBhY2l0eSAoZW52LCByZXQtPm9iamVjdCk7CiAKIGRvbmU6CiAKQEAgLTU5MSw3ICs2MDMsNyBAQAogCiBnYm9vbGVhbgogZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKEdzdEFtY0NvZGVjICogY29kZWMsIGdpbnQgaW5kZXgsCi0gICAgR0Vycm9yICoqIGVycikKKyAgICBnYm9vbGVhbiByZW5kZXIsIEdFcnJvciAqKiBlcnIpCiB7CiAgIEpOSUVudiAqZW52OwogCkBAIC01OTksNyArNjExLDcgQEAKIAogICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOwogICByZXR1cm4gZ3N0X2FtY19qbmlfY2FsbF92b2lkX21ldGhvZCAoZW52LCBlcnIsIGNvZGVjLT5vYmplY3QsCi0gICAgICBtZWRpYV9jb2RlYy5yZWxlYXNlX291dHB1dF9idWZmZXIsIGluZGV4LCBKTklfRkFMU0UpOworICAgICAgbWVkaWFfY29kZWMucmVsZWFzZV9vdXRwdXRfYnVmZmVyLCBpbmRleCwgcmVuZGVyKTsKIH0KIAogR3N0QW1jRm9ybWF0ICoKQEAgLTE1NjcsNiArMTU3OSw3IEBACiAgICAgICBnb3RvIG5leHRfY29kZWM7CiAgICAgfQogICAgIGdzdF9jb2RlY19pbmZvLT5pc19lbmNvZGVyID0gaXNfZW5jb2RlcjsKKyAgICBnc3RfY29kZWNfaW5mby0+Z2xfb3V0cHV0X29ubHkgPSBGQUxTRTsKIAogICAgIHN1cHBvcnRlZF90eXBlcyA9CiAgICAgICAgICgqZW52KS0+Q2FsbE9iamVjdE1ldGhvZCAoZW52LCBjb2RlY19pbmZvLCBnZXRfc3VwcG9ydGVkX3R5cGVzX2lkKTsKQEAgLTE3MTAsMTIgKzE3MjMsMTMgQEAKICAgICAgICAgICBnb3RvIG5leHRfc3VwcG9ydGVkX3R5cGU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWlnbm9yZV91bmtub3duX2NvbG9yX2Zvcm1hdHMKLSAgICAgICAgICAgICYmICFhY2NlcHRlZF9jb2xvcl9mb3JtYXRzIChnc3RfY29kZWNfdHlwZSwgaXNfZW5jb2RlcikpIHsKLSAgICAgICAgICBHU1RfRVJST1IgKCIlcyBjb2RlYyBoYXMgdW5rbm93biBjb2xvciBmb3JtYXRzLCBpZ25vcmluZyIsCi0gICAgICAgICAgICAgIGlzX2VuY29kZXIgPyAiRW5jb2RlciIgOiAiRGVjb2RlciIpOwotICAgICAgICAgIHZhbGlkX2NvZGVjID0gRkFMU0U7Ci0gICAgICAgICAgZ290byBuZXh0X3N1cHBvcnRlZF90eXBlOworICAgICAgICBpZiAoIWFjY2VwdGVkX2NvbG9yX2Zvcm1hdHMgKGdzdF9jb2RlY190eXBlLCBpc19lbmNvZGVyKSkgeworICAgICAgICAgIGlmICghaWdub3JlX3Vua25vd25fY29sb3JfZm9ybWF0cykgeworICAgICAgICAgICAgZ3N0X2NvZGVjX2luZm8tPmdsX291dHB1dF9vbmx5ID0gVFJVRTsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HCisgICAgICAgICAgICAgICAgKCIlcyAlcyBoYXMgdW5rbm93biBjb2xvciBmb3JtYXRzLCBvbmx5IGRpcmVjdCByZW5kZXJpbmcgd2lsbCBiZSBzdXBwb3J0ZWQiLAorICAgICAgICAgICAgICAgIGdzdF9jb2RlY190eXBlLT5taW1lLCBpc19lbmNvZGVyID8gImVuY29kZXIiIDogImRlY29kZXIiKTsKKyAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgIH0KIApAQCAtMjAwNCw4ICsyMDE4LDEwIEBACiAgIGZvciAoaSA9IDA7IGkgPCB0eXBlLT5uX2NvbG9yX2Zvcm1hdHM7IGkrKykgewogICAgIGdib29sZWFuIGZvdW5kID0gRkFMU0U7CiAgICAgLyogV2UgaWdub3JlIHRoaXMgb25lICovCi0gICAgaWYgKHR5cGUtPmNvbG9yX2Zvcm1hdHNbaV0gPT0gQ09MT1JfRm9ybWF0QW5kcm9pZE9wYXF1ZSkKKyAgICBpZiAodHlwZS0+Y29sb3JfZm9ybWF0c1tpXSA9PSBDT0xPUl9Gb3JtYXRBbmRyb2lkT3BhcXVlKSB7CiAgICAgICBhbGwtLTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KIAogICAgIGZvciAoaiA9IDA7IGogPCBHX05fRUxFTUVOVFMgKGNvbG9yX2Zvcm1hdF9tYXBwaW5nX3RhYmxlKTsgaisrKSB7CiAgICAgICBpZiAoY29sb3JfZm9ybWF0X21hcHBpbmdfdGFibGVbal0uY29sb3JfZm9ybWF0ID09IHR5cGUtPmNvbG9yX2Zvcm1hdHNbaV0pIHsKQEAgLTIwMTYsNyArMjAzMiw3IEBACiAgICAgfQogCiAgICAgaWYgKCFmb3VuZCkgewotICAgICAgR1NUX0RFQlVHICgiVW5rbm93biBjb2xvciBmb3JtYXQgMHgleCwgaWdub3JpbmciLCB0eXBlLT5jb2xvcl9mb3JtYXRzW2ldKTsKKyAgICAgIEdTVF9FUlJPUiAoIlVua25vd24gY29sb3IgZm9ybWF0IDB4JXgsIGlnbm9yaW5nIiwgdHlwZS0+Y29sb3JfZm9ybWF0c1tpXSk7CiAgICAgfQogICB9CiAKQEAgLTIyOTIsOCArMjMwOCw5IEBACiAgICAgZ290byBkb25lOwogICB9CiAKLSAgR1NUX0RFQlVHICgiU2l6ZXMgbm90IGVxdWFsICglZCB2cyAlZCksIGRvaW5nIHNsb3cgbGluZS1ieS1saW5lIGNvcHlpbmciLAotICAgICAgY2J1ZmZlcl9pbmZvLT5zaXplLCBnc3RfYnVmZmVyX2dldF9zaXplICh2YnVmZmVyKSk7CisgIEdTVF9ERUJVRyAoIlNpemVzIG5vdCBlcXVhbCAoJWQgdnMgJSIgR19HU0laRV9GT1JNQVQKKyAgICAgICIpLCBkb2luZyBzbG93IGxpbmUtYnktbGluZSBjb3B5aW5nIiwgY2J1ZmZlcl9pbmZvLT5zaXplLAorICAgICAgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAodmJ1ZmZlcikpOwogCiAgIC8qIERpZmZlcmVudCB2aWRlbyBmb3JtYXQsIHRyeSB0byBjb252ZXJ0ICovCiAgIHN3aXRjaCAoY2luZm8tPmNvbG9yX2Zvcm1hdCkgewpAQCAtMzMxMSw3ICszMzI4LDM0IEBACiAgIGlmICghcmVnaXN0ZXJfY29kZWNzIChwbHVnaW4pKQogICAgIHJldHVybiBGQUxTRTsKIAorICBpZiAoIWdzdF9hbmRyb2lkX2dyYXBoaWNzX3N1cmZhY2V0ZXh0dXJlX2luaXQgKCkpIHsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gaW5pdCBhbmRyb2lkIHN1cmZhY2UgdGV4dHVyZSIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmICghZ3N0X2FuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXRfaW5pdCAoKSkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBpbml0IGFuZHJvaWQgaW1hZ2UgZm9ybWF0Iik7CisgICAgZ290byBmYWlsZWRfc3VyZmFjZXRleHR1cmU7CisgIH0KKworICBpZiAoIWdzdF9hbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9pbml0ICgpKSB7CisgICAgZ290byBmYWlsZWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQ7CisgIH0KKworICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJhaGNzcmMiLCBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9BSENfU1JDKSkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byByZWdpc3RlciBhbmRyb2lkIGNhbWVyYSBzb3VyY2UiKTsKKyAgICBnb3RvIGZhaWxlZF9oYXJkd2FyZV9jYW1lcmE7CisgIH0KKwogICByZXR1cm4gVFJVRTsKKworZmFpbGVkX2hhcmR3YXJlX2NhbWVyYToKKyAgZ3N0X2FuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2RlaW5pdCAoKTsKK2ZhaWxlZF9ncmFwaGljc19pbWFnZWZvcm1hdDoKKyAgZ3N0X2FuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXRfZGVpbml0ICgpOworZmFpbGVkX3N1cmZhY2V0ZXh0dXJlOgorICBnc3RfYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZV9kZWluaXQgKCk7CisgIHJldHVybiBGQUxTRTsKIH0KIAogdm9pZApAQCAtMzQ1OCw3ICszNTAyLDggQEAKICAgICAgICAgICAgICAgZ3N0X2FtY19jb2xvcl9mb3JtYXRfdG9fdmlkZW9fZm9ybWF0IChjb2RlY19pbmZvLAogICAgICAgICAgICAgICB0eXBlLT5taW1lLCB0eXBlLT5jb2xvcl9mb3JtYXRzW2pdKTsKICAgICAgICAgICBpZiAoZm9ybWF0ID09IEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTikgewotICAgICAgICAgICAgR1NUX1dBUk5JTkcgKCJVbmtub3duIGNvbG9yIGZvcm1hdCAweCUwOHgiLCB0eXBlLT5jb2xvcl9mb3JtYXRzW2pdKTsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HICgiVW5rbm93biBjb2xvciBmb3JtYXQgMHglMDh4IGZvciBjb2RlYyAlcyIsCisgICAgICAgICAgICAgICAgdHlwZS0+Y29sb3JfZm9ybWF0c1tqXSwgdHlwZS0+bWltZSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmggYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5oCmluZGV4IGEzZmI5YmMuLjM4M2ViNDIgMTAwNjQ0Ci0tLSBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmgKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuaApAQCAtNTMsNiArNTMsNyBAQAogc3RydWN0IF9Hc3RBbWNDb2RlY0luZm8gewogICBnY2hhciAqbmFtZTsKICAgZ2Jvb2xlYW4gaXNfZW5jb2RlcjsKKyAgZ2Jvb2xlYW4gZ2xfb3V0cHV0X29ubHk7CiAgIEdzdEFtY0NvZGVjVHlwZSAqc3VwcG9ydGVkX3R5cGVzOwogICBnaW50IG5fc3VwcG9ydGVkX3R5cGVzOwogfTsKQEAgLTgyLDcgKzgzLDcgQEAKIEdzdEFtY0NvZGVjICogZ3N0X2FtY19jb2RlY19uZXcgKGNvbnN0IGdjaGFyICpuYW1lLCBHRXJyb3IgKiplcnIpOwogdm9pZCBnc3RfYW1jX2NvZGVjX2ZyZWUgKEdzdEFtY0NvZGVjICogY29kZWMpOwogCi1nYm9vbGVhbiBnc3RfYW1jX2NvZGVjX2NvbmZpZ3VyZSAoR3N0QW1jQ29kZWMgKiBjb2RlYywgR3N0QW1jRm9ybWF0ICogZm9ybWF0LCBnaW50IGZsYWdzLCBHRXJyb3IgKiplcnIpOworZ2Jvb2xlYW4gZ3N0X2FtY19jb2RlY19jb25maWd1cmUgKEdzdEFtY0NvZGVjICogY29kZWMsIEdzdEFtY0Zvcm1hdCAqIGZvcm1hdCwgam9iamVjdCBzdXJmYWNlLCBnaW50IGZsYWdzLCBHRXJyb3IgKiplcnIpOwogR3N0QW1jRm9ybWF0ICogZ3N0X2FtY19jb2RlY19nZXRfb3V0cHV0X2Zvcm1hdCAoR3N0QW1jQ29kZWMgKiBjb2RlYywgR0Vycm9yICoqZXJyKTsKIAogZ2Jvb2xlYW4gZ3N0X2FtY19jb2RlY19zdGFydCAoR3N0QW1jQ29kZWMgKiBjb2RlYywgR0Vycm9yICoqZXJyKTsKQEAgLTk3LDcgKzk4LDcgQEAKIGdpbnQgZ3N0X2FtY19jb2RlY19kZXF1ZXVlX291dHB1dF9idWZmZXIgKEdzdEFtY0NvZGVjICogY29kZWMsIEdzdEFtY0J1ZmZlckluZm8gKmluZm8sIGdpbnQ2NCB0aW1lb3V0VXMsIEdFcnJvciAqKmVycik7CiAKIGdib29sZWFuIGdzdF9hbWNfY29kZWNfcXVldWVfaW5wdXRfYnVmZmVyIChHc3RBbWNDb2RlYyAqIGNvZGVjLCBnaW50IGluZGV4LCBjb25zdCBHc3RBbWNCdWZmZXJJbmZvICppbmZvLCBHRXJyb3IgKiplcnIpOwotZ2Jvb2xlYW4gZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKEdzdEFtY0NvZGVjICogY29kZWMsIGdpbnQgaW5kZXgsIEdFcnJvciAqKmVycik7CitnYm9vbGVhbiBnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoR3N0QW1jQ29kZWMgKiBjb2RlYywgZ2ludCBpbmRleCwgZ2Jvb2xlYW4gcmVuZGVyLCBHRXJyb3IgKiplcnIpOwogCiAKIEdzdEFtY0Zvcm1hdCAqIGdzdF9hbWNfZm9ybWF0X25ld19hdWRpbyAoY29uc3QgZ2NoYXIgKm1pbWUsIGdpbnQgc2FtcGxlX3JhdGUsIGdpbnQgY2hhbm5lbHMsIEdFcnJvciAqKmVycik7CkBAIC0xNjYsOCArMTY3LDEwIEBACiBndWludDMyIGdzdF9hbWNfYXVkaW9fY2hhbm5lbF9tYXNrX2Zyb21fcG9zaXRpb25zIChHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiAqcG9zaXRpb25zLCBnaW50IGNoYW5uZWxzKTsKIHZvaWQgZ3N0X2FtY19jb2RlY19pbmZvX3RvX2NhcHMgKGNvbnN0IEdzdEFtY0NvZGVjSW5mbyAqIGNvZGVjX2luZm8sIEdzdENhcHMgKipzaW5rX2NhcHMsIEdzdENhcHMgKipzcmNfY2Fwcyk7CiAKLSNkZWZpbmUgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUihlbCwgZXJyKSBHX1NUTVRfU1RBUlQgeyBcCi0gIGdjaGFyICpfX2RiZyA9IGdfc3RyZHVwIChlcnItPm1lc3NhZ2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IoZWwsIGVycikgR19TVE1UX1NUQVJUIHsgICAgICAgICAgICBcCisgIGdjaGFyICpfX2RiZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGdfYXNzZXJ0IChlcnIgIT0gTlVMTCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIF9fZGJnID0gZ19zdHJkdXAgKGVyci0+bWVzc2FnZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZWwsICJlcnJvcjogJXMiLCBfX2RiZyk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIGdzdF9lbGVtZW50X21lc3NhZ2VfZnVsbCAoR1NUX0VMRU1FTlQoZWwpLCBHU1RfTUVTU0FHRV9FUlJPUiwgICAgICAgICBcCiAgICAgZXJyLT5kb21haW4sIGVyci0+Y29kZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNzUsOCArMTc4LDEwIEBACiAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOyBcCiB9IEdfU1RNVF9FTkQKIAotI2RlZmluZSBHU1RfRUxFTUVOVF9XQVJOSU5HX0ZST01fRVJST1IoZWwsIGVycikgR19TVE1UX1NUQVJUIHsgXAotICBnY2hhciAqX19kYmcgPSBnX3N0cmR1cCAoZXJyLT5tZXNzYWdlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBHU1RfRUxFTUVOVF9XQVJOSU5HX0ZST01fRVJST1IoZWwsIGVycikgR19TVE1UX1NUQVJUIHsgICAgICAgICAgXAorICBnY2hhciAqX19kYmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBnX2Fzc2VydCAoZXJyICE9IE5VTEwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBfX2RiZyA9IGdfc3RyZHVwIChlcnItPm1lc3NhZ2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICBHU1RfV0FSTklOR19PQkpFQ1QgKGVsLCAiZXJyb3I6ICVzIiwgX19kYmcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICBnc3RfZWxlbWVudF9tZXNzYWdlX2Z1bGwgKEdTVF9FTEVNRU5UKGVsKSwgR1NUX01FU1NBR0VfV0FSTklORywgICAgICAgXAogICAgIGVyci0+ZG9tYWluLCBlcnItPmNvZGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTg0LDYgKzE4OSw4IEBACiAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOyBcCiB9IEdfU1RNVF9FTkQKIAorR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTiAoZ3N0X2FtY19kZWJ1Zyk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZiAvKiBfX0dTVF9BTUNfSF9fICovCmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY2F1ZGlvZGVjLmMgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY2F1ZGlvZGVjLmMKaW5kZXggYmM4MTkwNy4uOWEzNGMzNyAxMDA2NDQKLS0tIGEvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNhdWRpb2RlYy5jCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jYXVkaW9kZWMuYwpAQCAtNDkzLDggKzQ5MywxMCBAQAogICBpc19lb3MgPSAhICEoYnVmZmVyX2luZm8uZmxhZ3MgJiBCVUZGRVJfRkxBR19FTkRfT0ZfU1RSRUFNKTsKIAogICBidWYgPSBnc3RfYW1jX2NvZGVjX2dldF9vdXRwdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCAmZXJyKTsKLSAgaWYgKCFidWYpCisgIGlmIChlcnIpCiAgICAgZ290byBmYWlsZWRfdG9fZ2V0X291dHB1dF9idWZmZXI7CisgIGVsc2UgaWYgKCFidWYpCisgICAgZ290byBnb3RfbnVsbF9vdXRwdXRfYnVmZmVyOwogCiAgIGlmIChidWZmZXJfaW5mby5zaXplID4gMCkgewogICAgIEdzdEJ1ZmZlciAqb3V0YnVmOwpAQCAtNTczLDcgKzU3NSw3IEBACiAgICAgfQogICB9CiAKLSAgaWYgKCFnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgJmVycikpIHsKKyAgaWYgKCFnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgRkFMU0UsICZlcnIpKSB7CiAgICAgaWYgKHNlbGYtPmZsdXNoaW5nKSB7CiAgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKICAgICAgIGdvdG8gZmx1c2hpbmc7CkBAIC02OTksMTEgKzcwMSwyNyBAQAogICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+ZHJhaW5fbG9jayk7CiAgICAgcmV0dXJuOwogICB9CisKK2dvdF9udWxsX291dHB1dF9idWZmZXI6CisgIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2VsZiwgTElCUkFSWSwgU0VUVElOR1MsIChOVUxMKSwKKyAgICAgICAgKCJHb3Qgbm8gb3V0cHV0IGJ1ZmZlciIpKTsKKyAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9BVURJT19ERUNPREVSX1NSQ19QQUQgKHNlbGYpLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSk7CisgICAgZ3N0X3BhZF9wYXVzZV90YXNrIChHU1RfQVVESU9fREVDT0RFUl9TUkNfUEFEIChzZWxmKSk7CisgICAgc2VsZi0+ZG93bnN0cmVhbV9mbG93X3JldCA9IEdTVF9GTE9XX0VSUk9SOworICAgIEdTVF9BVURJT19ERUNPREVSX1NUUkVBTV9VTkxPQ0sgKHNlbGYpOworICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmRyYWluX2xvY2spOworICAgIHNlbGYtPmRyYWluaW5nID0gRkFMU0U7CisgICAgZ19jb25kX2Jyb2FkY2FzdCAoJnNlbGYtPmRyYWluX2NvbmQpOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+ZHJhaW5fbG9jayk7CisgICAgcmV0dXJuOworICB9CisKIGludmFsaWRfYnVmZmVyX3NpemU6CiAgIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2VsZiwgTElCUkFSWSwgRkFJTEVELCAoTlVMTCksCiAgICAgICAgICgiSW52YWxpZCBidWZmZXIgc2l6ZSAldSAoYmZwICVkKSIsIGJ1ZmZlcl9pbmZvLnNpemUsIHNlbGYtPmluZm8uYnBmKSk7Ci0gICAgZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsICZlcnIpOworICAgIGdzdF9hbWNfY29kZWNfcmVsZWFzZV9vdXRwdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCBGQUxTRSwgJmVycik7CiAgICAgaWYgKGVyciAmJiAhc2VsZi0+Zmx1c2hpbmcpCiAgICAgICBHU1RfRUxFTUVOVF9XQVJOSU5HX0ZST01fRVJST1IgKHNlbGYsIGVycik7CiAgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CkBAIC03MjIsNyArNzQwLDcgQEAKICAgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzZWxmLCBMSUJSQVJZLCBTRVRUSU5HUywgKE5VTEwpLAogICAgICAgICAoIkZhaWxlZCB0byBhbGxvY2F0ZSBvdXRwdXQgYnVmZmVyIikpOwotICAgIGdzdF9hbWNfY29kZWNfcmVsZWFzZV9vdXRwdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCAmZXJyKTsKKyAgICBnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgRkFMU0UsICZlcnIpOwogICAgIGlmIChlcnIgJiYgIXNlbGYtPmZsdXNoaW5nKQogICAgICAgR1NUX0VMRU1FTlRfV0FSTklOR19GUk9NX0VSUk9SIChzZWxmLCBlcnIpOwogICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOwpAQCAtOTI3LDcgKzk0NSw3IEBACiAgICAgICBHU1RfU1RSX05VTEwgKGZvcm1hdF9zdHJpbmcpKTsKICAgZ19mcmVlIChmb3JtYXRfc3RyaW5nKTsKIAotICBpZiAoIWdzdF9hbWNfY29kZWNfY29uZmlndXJlIChzZWxmLT5jb2RlYywgZm9ybWF0LCAwLCAmZXJyKSkgeworICBpZiAoIWdzdF9hbWNfY29kZWNfY29uZmlndXJlIChzZWxmLT5jb2RlYywgZm9ybWF0LCBOVUxMLCAwLCAmZXJyKSkgewogICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJGYWlsZWQgdG8gY29uZmlndXJlIGNvZGVjIik7CiAgICAgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUiAoc2VsZiwgZXJyKTsKICAgICByZXR1cm4gRkFMU0U7CkBAIC0xMTEwLDggKzExMjgsMTAgQEAKICAgICAvKiBDb3B5IHRoZSBidWZmZXIgY29udGVudCBpbiBjaHVua3Mgb2Ygc2l6ZSBhcyByZXF1ZXN0ZWQKICAgICAgKiBieSB0aGUgcG9ydCAqLwogICAgIGJ1ZiA9IGdzdF9hbWNfY29kZWNfZ2V0X2lucHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgJmVycik7Ci0gICAgaWYgKCFidWYpCisgICAgaWYgKGVycikKICAgICAgIGdvdG8gZmFpbGVkX3RvX2dldF9pbnB1dF9idWZmZXI7CisgICAgZWxzZSBpZiAoIWJ1ZikKKyAgICAgIGdvdG8gZ290X251bGxfaW5wdXRfYnVmZmVyOwogCiAgICAgbWVtc2V0ICgmYnVmZmVyX2luZm8sIDAsIHNpemVvZiAoYnVmZmVyX2luZm8pKTsKICAgICBidWZmZXJfaW5mby5vZmZzZXQgPSAwOwpAQCAtMTE4Miw2ICsxMjAyLDE2IEBACiAgICAgICBnc3RfYnVmZmVyX3VucmVmIChpbmJ1Zik7CiAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICB9Citnb3RfbnVsbF9pbnB1dF9idWZmZXI6CisgIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2VsZiwgTElCUkFSWSwgU0VUVElOR1MsIChOVUxMKSwKKyAgICAgICAgKCJHb3Qgbm8gaW5wdXQgYnVmZmVyIikpOworICAgIGlmIChtaW5mby5kYXRhKQorICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoaW5idWYsICZtaW5mbyk7CisgICAgaWYgKGluYnVmKQorICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoaW5idWYpOworICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgfQogZGVxdWV1ZV9lcnJvcjoKICAgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IgKHNlbGYsIGVycik7CmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2UuYyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jc3VyZmFjZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZGM2YTcKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2UuYwpAQCAtMCwwICsxLDE5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgRmx1ZW5kbyBTLkEuCisgKiAgIEF1dGhvcjogQW5kb25pIE1vcmFsZXMgPGFtb3JhbGVzQGZsdWVuZG8uY29tPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwgQ29sbGFib3JhIEx0ZC4KKyAqICAgQXV0aG9yOiBNYXR0aGlldSBCb3Vyb24gPG1hdHRoaWV1LmJvdXJvbkBjb2xsYWJvcmEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKKyAqCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0am5pdXRpbHMuaCIKKyNpbmNsdWRlICJnc3RhbWNzdXJmYWNlLmgiCisKK0dfREVGSU5FX1RZUEUgKEdzdEFtY1N1cmZhY2UsIGdzdF9hbWNfc3VyZmFjZSwgR19UWVBFX09CSkVDVCk7CisKK3N0YXRpYyBncG9pbnRlciBwYXJlbnRfY2xhc3MgPSBOVUxMOworc3RhdGljIHZvaWQgZ3N0X2FtY19zdXJmYWNlX2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmplY3QpOworCitzdGF0aWMgZ2Jvb2xlYW4KK19jYWNoZV9qYXZhX2NsYXNzIChHc3RBbWNTdXJmYWNlQ2xhc3MgKiBrbGFzcywgR0Vycm9yICoqIGVycikKK3sKKyAgSk5JRW52ICplbnY7CisKKyAgZ3N0X2FtY19qbmlfaW5pdGlhbGl6ZSAoKTsKKworICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIGtsYXNzLT5qa2xhc3MgPSBnc3RfYW1jX2puaV9nZXRfY2xhc3MgKGVudiwgZXJyLCAiYW5kcm9pZC92aWV3L1N1cmZhY2UiKTsKKyAgaWYgKCFrbGFzcy0+amtsYXNzKSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAga2xhc3MtPmNvbnN0cnVjdG9yID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgZXJyLCBrbGFzcy0+amtsYXNzLCAiPGluaXQ+IiwKKyAgICAgICIoTGFuZHJvaWQvZ3JhcGhpY3MvU3VyZmFjZVRleHR1cmU7KVYiKTsKKyAgaWYgKCFrbGFzcy0+Y29uc3RydWN0b3IpIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAga2xhc3MtPmlzX3ZhbGlkID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgZXJyLCBrbGFzcy0+amtsYXNzLCAiaXNWYWxpZCIsICIoKVoiKTsKKyAgaWYgKCFrbGFzcy0+aXNfdmFsaWQpIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAga2xhc3MtPnJlbGVhc2UgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCBlcnIsIGtsYXNzLT5qa2xhc3MsICJyZWxlYXNlIiwgIigpViIpOworICBpZiAoIWtsYXNzLT5yZWxlYXNlKSB7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGtsYXNzLT5kZXNjcmliZV9jb250ZW50cyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsIGVyciwga2xhc3MtPmprbGFzcywgImRlc2NyaWJlQ29udGVudHMiLAorICAgICAgIigpSSIpOworICBpZiAoIWtsYXNzLT5kZXNjcmliZV9jb250ZW50cykgeworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIGdzdF9hbWNfam5pX29iamVjdF91bnJlZiAoZW52LCBrbGFzcy0+amtsYXNzKTsKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FtY19zdXJmYWNlX2NsYXNzX2luaXQgKEdzdEFtY1N1cmZhY2VDbGFzcyAqIGtsYXNzKQoreworICBHRXJyb3IgKmVyciA9IE5VTEw7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7CisKKyAgcGFyZW50X2NsYXNzID0gZ190eXBlX2NsYXNzX3BlZWtfcGFyZW50IChrbGFzcyk7CisgIGdvYmplY3RfY2xhc3MtPmRpc3Bvc2UgPSBnc3RfYW1jX3N1cmZhY2VfZGlzcG9zZTsKKworICBpZiAoIV9jYWNoZV9qYXZhX2NsYXNzIChrbGFzcywgJmVycikpIHsKKyAgICBnX2xvZyAoR19MT0dfRE9NQUlOLCBHX0xPR19MRVZFTF9DUklUSUNBTCwKKyAgICAgICAgIkNvdWxkIG5vdCBjYWNoZSBqYXZhIGNsYXNzIGFuZHJvaWQvdmlldy9TdXJmYWNlOiAlcyIsIGVyci0+bWVzc2FnZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9hbWNfc3VyZmFjZV9pbml0IChHc3RBbWNTdXJmYWNlICogc2VsZikKK3sKKyAgLyogaW5pdGlhbGl6ZSB0aGUgb2JqZWN0ICovCit9CisKK3N0YXRpYyB2b2lkCitnc3RfYW1jX3N1cmZhY2VfZGlzcG9zZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0QW1jU3VyZmFjZSAqc2VsZjsKKyAgSk5JRW52ICplbnY7CisgIEdFcnJvciAqZXJyID0gTlVMTDsKKworICBzZWxmID0gR1NUX0FNQ19TVVJGQUNFIChvYmplY3QpOworICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIGlmICghZ3N0X2FtY19zdXJmYWNlX3JlbGVhc2UgKHNlbGYsICZlcnIpKSB7CisgICAgaWYgKGVycikgeworICAgICAgR1NUX0VSUk9SICgiRXJyb3I6ICVzIiwgZXJyLT5tZXNzYWdlKTsKKyAgICB9CisgIH0KKworICBpZiAoc2VsZi0+am9iamVjdCkgeworICAgIGdzdF9hbWNfam5pX29iamVjdF91bnJlZiAoZW52LCBzZWxmLT5qb2JqZWN0KTsKKyAgfQorCisgIGlmIChzZWxmLT50ZXh0dXJlICE9IE5VTEwpIHsKKyAgICBnX29iamVjdF91bnJlZiAoc2VsZi0+dGV4dHVyZSk7CisgICAgc2VsZi0+dGV4dHVyZSA9IE5VTEw7CisgIH0KKworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZGlzcG9zZSAob2JqZWN0KTsKK30KKworR3N0QW1jU3VyZmFjZSAqCitnc3RfYW1jX3N1cmZhY2VfbmV3IChHc3RBbWNTdXJmYWNlVGV4dHVyZSAqIHRleHR1cmUsIEdFcnJvciAqKiBlcnIpCit7CisgIEdzdEFtY1N1cmZhY2UgKnN1cmZhY2U7CisgIEdzdEFtY1N1cmZhY2VDbGFzcyAqa2xhc3M7CisgIEpOSUVudiAqZW52OworCisgIHN1cmZhY2UgPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX0FNQ19TVVJGQUNFLCBOVUxMKTsKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAga2xhc3MgPSBHU1RfQU1DX1NVUkZBQ0VfR0VUX0NMQVNTIChzdXJmYWNlKTsKKworICBzdXJmYWNlLT5qb2JqZWN0ID0gZ3N0X2FtY19qbmlfbmV3X29iamVjdCAoZW52LCBlcnIsIFRSVUUsIGtsYXNzLT5qa2xhc3MsCisgICAgICBrbGFzcy0+Y29uc3RydWN0b3IsIHRleHR1cmUtPmpvYmplY3QpOworICBpZiAoc3VyZmFjZS0+am9iamVjdCA9PSBOVUxMKSB7CisgICAgZ19vYmplY3RfdW5yZWYgKHN1cmZhY2UpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgc3VyZmFjZS0+dGV4dHVyZSA9IGdfb2JqZWN0X3JlZiAodGV4dHVyZSk7CisgIHJldHVybiBzdXJmYWNlOworfQorCitnYm9vbGVhbgorZ3N0X2FtY19zdXJmYWNlX2lzX3ZhbGlkIChHc3RBbWNTdXJmYWNlICogc2VsZiwgZ2Jvb2xlYW4gKiByZXN1bHQsCisgICAgR0Vycm9yICoqIGVycikKK3sKKyAgSk5JRW52ICplbnY7CisgIEdzdEFtY1N1cmZhY2VDbGFzcyAqa2xhc3M7CisKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAga2xhc3MgPSBHU1RfQU1DX1NVUkZBQ0VfR0VUX0NMQVNTIChzZWxmKTsKKworICByZXR1cm4gZ3N0X2FtY19qbmlfY2FsbF9ib29sZWFuX21ldGhvZCAoZW52LCBlcnIsIHNlbGYtPmpvYmplY3QsCisgICAgICBrbGFzcy0+aXNfdmFsaWQsIHJlc3VsdCk7Cit9CisKK2dib29sZWFuCitnc3RfYW1jX3N1cmZhY2VfcmVsZWFzZSAoR3N0QW1jU3VyZmFjZSAqIHNlbGYsIEdFcnJvciAqKiBlcnIpCit7CisgIEpOSUVudiAqZW52OworICBHc3RBbWNTdXJmYWNlQ2xhc3MgKmtsYXNzOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGtsYXNzID0gR1NUX0FNQ19TVVJGQUNFX0dFVF9DTEFTUyAoc2VsZik7CisKKyAgcmV0dXJuIGdzdF9hbWNfam5pX2NhbGxfdm9pZF9tZXRob2QgKGVudiwgZXJyLCBzZWxmLT5qb2JqZWN0LCBrbGFzcy0+cmVsZWFzZSk7Cit9CisKK2dib29sZWFuCitnc3RfYW1jX3N1cmZhY2VfZGVzY3JpYmVfY29udGVudHMgKEdzdEFtY1N1cmZhY2UgKiBzZWxmLCBnaW50ICogcmVzdWx0LAorICAgIEdFcnJvciAqKiBlcnIpCit7CisgIEpOSUVudiAqZW52OworICBHc3RBbWNTdXJmYWNlQ2xhc3MgKmtsYXNzOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGtsYXNzID0gR1NUX0FNQ19TVVJGQUNFX0dFVF9DTEFTUyAoc2VsZik7CisKKyAgcmV0dXJuIGdzdF9hbWNfam5pX2NhbGxfaW50X21ldGhvZCAoZW52LCBlcnIsIHNlbGYtPmpvYmplY3QsCisgICAgICBrbGFzcy0+ZGVzY3JpYmVfY29udGVudHMsIHJlc3VsdCk7Cit9CmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2UuaCBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jc3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZjk5NjkKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2UuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCBGbHVlbmRvIFMuQS4KKyAqICAgQXV0aG9yOiBBbmRvbmkgTW9yYWxlcyA8YW1vcmFsZXNAZmx1ZW5kby5jb20+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1LCBDb2xsYWJvcmEgTHRkLgorICogICBBdXRob3I6IE1hdHRoaWV1IEJvdXJvbiA8bWF0dGhpZXUuYm91cm9uQGNvbGxhYm9yYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQorICoKKyAqLworCisjaWZuZGVmIF9fR1NUX0FNQ19TVVJGQUNFX0hfXworI2RlZmluZSBfX0dTVF9BTUNfU1VSRkFDRV9IX18KKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8am5pLmg+CisjaW5jbHVkZSAiZ3N0YW1jc3VyZmFjZXRleHR1cmUuaCIKKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX0FNQ19TVVJGQUNFICAgICAgICAgICAgICAgICAgKGdzdF9hbWNfc3VyZmFjZV9nZXRfdHlwZSAoKSkKKyNkZWZpbmUgR1NUX0FNQ19TVVJGQUNFKG9iaikgICAgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9BTUNfU1VSRkFDRSwgR3N0QW1jU3VyZmFjZSkpCisjZGVmaW5lIEdTVF9JU19BTUNfU1VSRkFDRShvYmopICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfQU1DX1NVUkZBQ0UpKQorI2RlZmluZSBHU1RfQU1DX1NVUkZBQ0VfQ0xBU1Moa2xhc3MpICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfQU1DX1NVUkZBQ0UsIEdzdEFtY1N1cmZhY2VDbGFzcykpCisjZGVmaW5lIEdTVF9JU19BTUNfU1VSRkFDRV9DTEFTUyhrbGFzcykgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9BTUNfU1VSRkFDRSkpCisjZGVmaW5lIEdTVF9BTUNfU1VSRkFDRV9HRVRfQ0xBU1Mob2JqKSAgICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9BTUNfU1VSRkFDRSwgR3N0QW1jU3VyZmFjZUNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFtY1N1cmZhY2UgICAgICAgIEdzdEFtY1N1cmZhY2U7Cit0eXBlZGVmIHN0cnVjdCBfR3N0QW1jU3VyZmFjZUNsYXNzICAgR3N0QW1jU3VyZmFjZUNsYXNzOworCitzdHJ1Y3QgX0dzdEFtY1N1cmZhY2UKK3sKKyAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgLyogaW5zdGFuY2UgbWVtYmVycyAqLworICBqb2JqZWN0IGpvYmplY3Q7CisgIEdzdEFtY1N1cmZhY2VUZXh0dXJlICp0ZXh0dXJlOworfTsKKworc3RydWN0IF9Hc3RBbWNTdXJmYWNlQ2xhc3MKK3sKKyAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKworICAvKiBjbGFzcyBtZW1iZXJzICovCisgIGpjbGFzcyBqa2xhc3M7CisgIGptZXRob2RJRCBjb25zdHJ1Y3RvcjsKKyAgam1ldGhvZElEIGlzX3ZhbGlkOworICBqbWV0aG9kSUQgcmVsZWFzZTsKKyAgam1ldGhvZElEIGRlc2NyaWJlX2NvbnRlbnRzOworfTsKKworR1R5cGUgZ3N0X2FtY19zdXJmYWNlX2dldF90eXBlICh2b2lkKTsKKworR3N0QW1jU3VyZmFjZSAqIGdzdF9hbWNfc3VyZmFjZV9uZXcgICAgICAgICAgIChHc3RBbWNTdXJmYWNlVGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyKTsKKworZ2Jvb2xlYW4gZ3N0X2FtY19zdXJmYWNlX2lzX3ZhbGlkICAgICAgICAgICAgIChHc3RBbWNTdXJmYWNlICpzdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICogcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnIpOworCitnYm9vbGVhbiBnc3RfYW1jX3N1cmZhY2VfcmVsZWFzZSAgICAgICAgICAgICAgKEdzdEFtY1N1cmZhY2UgKnN1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycik7CisKK2dib29sZWFuIGdzdF9hbWNfc3VyZmFjZV9kZXNjcmliZV9jb250ZW50cyAgICAoR3N0QW1jU3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICogcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnIpOworCitHX0VORF9ERUNMUworI2VuZGlmCmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2V0ZXh0dXJlLmMgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2V0ZXh0dXJlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNjMzE0MgotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jc3VyZmFjZXRleHR1cmUuYwpAQCAtMCwwICsxLDMxOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgRmx1ZW5kbyBTLkEuCisgKiAgIEF1dGhvcjogQW5kb25pIE1vcmFsZXMgPGFtb3JhbGVzQGZsdWVuZG8uY29tPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgQ29sbGFib3JhIEx0ZC4KKyAqICAgQXV0aG9yOiBNYXR0aGlldSBCb3Vyb24gPG1hdHRoaWV1LmJvdXJvbkBjb2xsYWJvcmEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKKyAqCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0am5pdXRpbHMuaCIKKyNpbmNsdWRlICJnc3RhbWNzdXJmYWNldGV4dHVyZS5oIgorCitHX0RFRklORV9UWVBFIChHc3RBbWNTdXJmYWNlVGV4dHVyZSwgZ3N0X2FtY19zdXJmYWNlX3RleHR1cmUsIEdfVFlQRV9PQkpFQ1QpOworCitzdGF0aWMgZ3BvaW50ZXIgcGFyZW50X2NsYXNzID0gTlVMTDsKK3N0YXRpYyB2b2lkIGdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmplY3QpOworCitzdGF0aWMgZ2Jvb2xlYW4KK19jYWNoZV9qYXZhX2NsYXNzIChHc3RBbWNTdXJmYWNlVGV4dHVyZUNsYXNzICoga2xhc3MsIEdFcnJvciAqKiBlcnIpCit7CisgIEpOSUVudiAqZW52OworCisgIGdzdF9hbWNfam5pX2luaXRpYWxpemUgKCk7CisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAga2xhc3MtPmprbGFzcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfY2xhc3MgKGVudiwgZXJyLCAiYW5kcm9pZC9ncmFwaGljcy9TdXJmYWNlVGV4dHVyZSIpOworICBpZiAoIWtsYXNzLT5qa2xhc3MpIHsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBrbGFzcy0+Y29uc3RydWN0b3IgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCBlcnIsIGtsYXNzLT5qa2xhc3MsICI8aW5pdD4iLCAiKEkpViIpOworICBpZiAoIWtsYXNzLT5jb25zdHJ1Y3RvcikgeworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBrbGFzcy0+c2V0X29uX2ZyYW1lX2F2YWlsYWJsZV9saXN0ZW5lciA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsIGVyciwga2xhc3MtPmprbGFzcywKKyAgICAgICJzZXRPbkZyYW1lQXZhaWxhYmxlTGlzdGVuZXIiLAorICAgICAgIihMYW5kcm9pZC9ncmFwaGljcy9TdXJmYWNlVGV4dHVyZSRPbkZyYW1lQXZhaWxhYmxlTGlzdGVuZXI7KVYiKTsKKworICBrbGFzcy0+c2V0X2RlZmF1bHRfYnVmZmVyX3NpemUgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCBlcnIsIGtsYXNzLT5qa2xhc3MsCisgICAgICAic2V0RGVmYXVsdEJ1ZmZlclNpemUiLCAiKElJKVYiKTsKKyAgaWYgKCFrbGFzcy0+c2V0X2RlZmF1bHRfYnVmZmVyX3NpemUpIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAga2xhc3MtPnVwZGF0ZV90ZXhfaW1hZ2UgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCBlcnIsIGtsYXNzLT5qa2xhc3MsICJ1cGRhdGVUZXhJbWFnZSIsCisgICAgICAiKClWIik7CisgIGlmICgha2xhc3MtPnVwZGF0ZV90ZXhfaW1hZ2UpIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAga2xhc3MtPmRldGFjaF9mcm9tX2dsX2NvbnRleHQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCBlcnIsIGtsYXNzLT5qa2xhc3MsICJkZXRhY2hGcm9tR0xDb250ZXh0IiwKKyAgICAgICIoKVYiKTsKKyAgaWYgKCFrbGFzcy0+ZGV0YWNoX2Zyb21fZ2xfY29udGV4dCkgeworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBrbGFzcy0+YXR0YWNoX3RvX2dsX2NvbnRleHQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCBlcnIsIGtsYXNzLT5qa2xhc3MsICJhdHRhY2hUb0dMQ29udGV4dCIsCisgICAgICAiKEkpViIpOworICBpZiAoIWtsYXNzLT5hdHRhY2hfdG9fZ2xfY29udGV4dCkgeworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBrbGFzcy0+Z2V0X3RyYW5zZm9ybV9tYXRyaXggPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCBlcnIsIGtsYXNzLT5qa2xhc3MsICJnZXRUcmFuc2Zvcm1NYXRyaXgiLAorICAgICAgIihbRilWIik7CisgIGlmICgha2xhc3MtPmdldF90cmFuc2Zvcm1fbWF0cml4KSB7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGtsYXNzLT5nZXRfdGltZXN0YW1wID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgZXJyLCBrbGFzcy0+amtsYXNzLCAiZ2V0VGltZXN0YW1wIiwKKyAgICAgICIoKUoiKTsKKyAgaWYgKCFrbGFzcy0+Z2V0X3RpbWVzdGFtcCkgeworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBrbGFzcy0+cmVsZWFzZSA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsIGVyciwga2xhc3MtPmprbGFzcywgInJlbGVhc2UiLCAiKClWIik7CisgIGlmICgha2xhc3MtPnJlbGVhc2UpIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgcmV0dXJuIFRSVUU7CisKK2Vycm9yOgorICBnc3RfYW1jX2puaV9vYmplY3RfdW5yZWYgKGVudiwga2xhc3MtPmNvbnN0cnVjdG9yKTsKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfaW5pdCAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKiBzZWxmKQoreworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfY2xhc3NfaW5pdCAoR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcyAqIGtsYXNzKQoreworICBHRXJyb3IgKmVyciA9IE5VTEw7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7CisKKyAgcGFyZW50X2NsYXNzID0gZ190eXBlX2NsYXNzX3BlZWtfcGFyZW50IChrbGFzcyk7CisgIGdvYmplY3RfY2xhc3MtPmRpc3Bvc2UgPSBnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9kaXNwb3NlOworCisgIGlmICghX2NhY2hlX2phdmFfY2xhc3MgKGtsYXNzLCAmZXJyKSkgeworICAgIGdfbG9nIChHX0xPR19ET01BSU4sIEdfTE9HX0xFVkVMX0NSSVRJQ0FMLAorICAgICAgICAiQ291bGQgbm90IGNhY2hlIGphdmEgY2xhc3MgYW5kcm9pZC9ncmFwaGljcy9TdXJmYWNlVGV4dHVyZTogJXMiLAorICAgICAgICBlcnItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RBbWNTdXJmYWNlVGV4dHVyZSAqc2VsZjsKKyAgSk5JRW52ICplbnY7CisgIEdFcnJvciAqZXJyID0gTlVMTDsKKworICBzZWxmID0gR1NUX0FNQ19TVVJGQUNFX1RFWFRVUkUgKG9iamVjdCk7CisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgaWYgKCFnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9yZWxlYXNlIChzZWxmLCAmZXJyKSkgeworICAgIEdTVF9FUlJPUiAoIkNvdWxkIG5vdCByZWxlYXNlIHN1cmZhY2UgdGV4dHVyZTogJXMiLCBlcnItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOworICB9CisKKyAgaWYgKHNlbGYtPmpvYmplY3QpIHsKKyAgICBnc3RfYW1jX2puaV9vYmplY3RfdW5yZWYgKGVudiwgc2VsZi0+am9iamVjdCk7CisgIH0KKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmRpc3Bvc2UgKG9iamVjdCk7Cit9CisKK0dzdEFtY1N1cmZhY2VUZXh0dXJlICoKK2dzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX25ldyAoR0Vycm9yICoqIGVycikKK3sKKyAgR3N0QW1jU3VyZmFjZVRleHR1cmUgKnRleHR1cmUgPSBOVUxMOworICBHc3RBbWNTdXJmYWNlVGV4dHVyZUNsYXNzICprbGFzczsKKyAgSk5JRW52ICplbnY7CisKKyAgdGV4dHVyZSA9IGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfQU1DX1NVUkZBQ0VfVEVYVFVSRSwgTlVMTCk7CisgIGtsYXNzID0gR1NUX0FNQ19TVVJGQUNFX1RFWFRVUkVfR0VUX0NMQVNTICh0ZXh0dXJlKTsKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICB0ZXh0dXJlLT50ZXh0dXJlX2lkID0gMDsKKworICB0ZXh0dXJlLT5qb2JqZWN0ID0gZ3N0X2FtY19qbmlfbmV3X29iamVjdCAoZW52LCBlcnIsIFRSVUUsIGtsYXNzLT5qa2xhc3MsCisgICAgICBrbGFzcy0+Y29uc3RydWN0b3IsIHRleHR1cmUtPnRleHR1cmVfaWQpOworICBpZiAodGV4dHVyZS0+am9iamVjdCA9PSBOVUxMKSB7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGlmICghZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZGV0YWNoX2Zyb21fZ2xfY29udGV4dCAodGV4dHVyZSwgZXJyKSkgeworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICByZXR1cm4gdGV4dHVyZTsKKworZXJyb3I6CisgIGlmICh0ZXh0dXJlKQorICAgIGdfb2JqZWN0X3VucmVmICh0ZXh0dXJlKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKK2dib29sZWFuCitnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9zZXRfZGVmYXVsdF9idWZmZXJfc2l6ZSAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKiBzZWxmLAorICAgIGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0LCBHRXJyb3IgKiogZXJyKQoreworICBKTklFbnYgKmVudjsKKyAgR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcyAqa2xhc3M7CisKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAga2xhc3MgPSBHU1RfQU1DX1NVUkZBQ0VfVEVYVFVSRV9HRVRfQ0xBU1MgKHNlbGYpOworCisgIHJldHVybiBnc3RfYW1jX2puaV9jYWxsX3ZvaWRfbWV0aG9kIChlbnYsIGVyciwgc2VsZi0+am9iamVjdCwKKyAgICAgIGtsYXNzLT5zZXRfZGVmYXVsdF9idWZmZXJfc2l6ZSwgd2lkdGgsIGhlaWdodCk7Cit9CisKK2dib29sZWFuCitnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV91cGRhdGVfdGV4X2ltYWdlIChHc3RBbWNTdXJmYWNlVGV4dHVyZSAqIHNlbGYsCisgICAgR0Vycm9yICoqIGVycikKK3sKKyAgSk5JRW52ICplbnY7CisgIEdzdEFtY1N1cmZhY2VUZXh0dXJlQ2xhc3MgKmtsYXNzOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGtsYXNzID0gR1NUX0FNQ19TVVJGQUNFX1RFWFRVUkVfR0VUX0NMQVNTIChzZWxmKTsKKworICByZXR1cm4gZ3N0X2FtY19qbmlfY2FsbF92b2lkX21ldGhvZCAoZW52LCBlcnIsIHNlbGYtPmpvYmplY3QsCisgICAgICBrbGFzcy0+dXBkYXRlX3RleF9pbWFnZSk7Cit9CisKK2dib29sZWFuCitnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9kZXRhY2hfZnJvbV9nbF9jb250ZXh0IChHc3RBbWNTdXJmYWNlVGV4dHVyZSAqIHNlbGYsCisgICAgR0Vycm9yICoqIGVycikKK3sKKyAgSk5JRW52ICplbnY7CisgIGdib29sZWFuIHJldDsKKyAgR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcyAqa2xhc3M7CisKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAga2xhc3MgPSBHU1RfQU1DX1NVUkZBQ0VfVEVYVFVSRV9HRVRfQ0xBU1MgKHNlbGYpOworCisgIHJldCA9CisgICAgICBnc3RfYW1jX2puaV9jYWxsX3ZvaWRfbWV0aG9kIChlbnYsIGVyciwgc2VsZi0+am9iamVjdCwKKyAgICAgIGtsYXNzLT5kZXRhY2hfZnJvbV9nbF9jb250ZXh0KTsKKyAgc2VsZi0+dGV4dHVyZV9pZCA9IDA7CisgIHJldHVybiByZXQ7Cit9CisKK2dib29sZWFuCitnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9hdHRhY2hfdG9fZ2xfY29udGV4dCAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKiBzZWxmLAorICAgIGdpbnQgdGV4dHVyZV9pZCwgR0Vycm9yICoqIGVycikKK3sKKyAgSk5JRW52ICplbnY7CisgIGdib29sZWFuIHJldDsKKyAgR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcyAqa2xhc3M7CisKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAga2xhc3MgPSBHU1RfQU1DX1NVUkZBQ0VfVEVYVFVSRV9HRVRfQ0xBU1MgKHNlbGYpOworCisgIHJldCA9CisgICAgICBnc3RfYW1jX2puaV9jYWxsX3ZvaWRfbWV0aG9kIChlbnYsIGVyciwgc2VsZi0+am9iamVjdCwKKyAgICAgIGtsYXNzLT5hdHRhY2hfdG9fZ2xfY29udGV4dCwgdGV4dHVyZV9pZCk7CisgIHNlbGYtPnRleHR1cmVfaWQgPSB0ZXh0dXJlX2lkOworICByZXR1cm4gcmV0OworfQorCitnYm9vbGVhbgorZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZ2V0X3RyYW5zZm9ybV9tYXRyaXggKEdzdEFtY1N1cmZhY2VUZXh0dXJlICogc2VsZiwKKyAgICBjb25zdCBnZmxvYXQgKiBtYXRyaXgsIEdFcnJvciAqKiBlcnIpCit7CisgIEpOSUVudiAqZW52OworICBnYm9vbGVhbiByZXQ7CisgIEdzdEFtY1N1cmZhY2VUZXh0dXJlQ2xhc3MgKmtsYXNzOworICAvKiA0eDQgTWF0cml4ICovCisgIGpzaXplIHNpemUgPSAxNjsKKyAgamZsb2F0QXJyYXkgZmxvYXRhcnJheTsKKworICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBrbGFzcyA9IEdTVF9BTUNfU1VSRkFDRV9URVhUVVJFX0dFVF9DTEFTUyAoc2VsZik7CisKKyAgZmxvYXRhcnJheSA9ICgqZW52KS0+TmV3RmxvYXRBcnJheSAoZW52LCBzaXplKTsKKyAgcmV0ID0KKyAgICAgIGdzdF9hbWNfam5pX2NhbGxfdm9pZF9tZXRob2QgKGVudiwgZXJyLCBzZWxmLT5qb2JqZWN0LAorICAgICAga2xhc3MtPmdldF90cmFuc2Zvcm1fbWF0cml4LCBmbG9hdGFycmF5KTsKKyAgaWYgKHJldCkgeworICAgICgqZW52KS0+R2V0RmxvYXRBcnJheVJlZ2lvbiAoZW52LCBmbG9hdGFycmF5LCAwLCBzaXplLCAoamZsb2F0ICopIG1hdHJpeCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBmbG9hdGFycmF5KTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK2dib29sZWFuCitnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9nZXRfdGltZXN0YW1wIChHc3RBbWNTdXJmYWNlVGV4dHVyZSAqIHNlbGYsCisgICAgZ2ludDY0ICogcmVzdWx0LCBHRXJyb3IgKiogZXJyKQoreworICBKTklFbnYgKmVudjsKKyAgR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcyAqa2xhc3M7CisKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAga2xhc3MgPSBHU1RfQU1DX1NVUkZBQ0VfVEVYVFVSRV9HRVRfQ0xBU1MgKHNlbGYpOworCisgIHJldHVybiBnc3RfYW1jX2puaV9jYWxsX2xvbmdfbWV0aG9kIChlbnYsIGVyciwgc2VsZi0+am9iamVjdCwKKyAgICAgIGtsYXNzLT5nZXRfdGltZXN0YW1wLCByZXN1bHQpOworfQorCitnYm9vbGVhbgorZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfcmVsZWFzZSAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKiBzZWxmLCBHRXJyb3IgKiogZXJyKQoreworICBKTklFbnYgKmVudjsKKyAgR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcyAqa2xhc3M7CisKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAga2xhc3MgPSBHU1RfQU1DX1NVUkZBQ0VfVEVYVFVSRV9HRVRfQ0xBU1MgKHNlbGYpOworCisgIHJldHVybiBnc3RfYW1jX2puaV9jYWxsX3ZvaWRfbWV0aG9kIChlbnYsIGVyciwgc2VsZi0+am9iamVjdCwga2xhc3MtPnJlbGVhc2UpOworfQorCitnYm9vbGVhbgorZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfc2V0X29uX2ZyYW1lX2F2YWlsYWJsZV9saXN0ZW5lciAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKgorICAgIHNlbGYsIGpvYmplY3QgbGlzdGVuZXIsIEdFcnJvciAqKiBlcnIpCit7CisgIEpOSUVudiAqZW52OworICBHc3RBbWNTdXJmYWNlVGV4dHVyZUNsYXNzICprbGFzczsKKworICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBrbGFzcyA9IEdTVF9BTUNfU1VSRkFDRV9URVhUVVJFX0dFVF9DTEFTUyAoc2VsZik7CisKKyAgcmV0dXJuIGdzdF9hbWNfam5pX2NhbGxfdm9pZF9tZXRob2QgKGVudiwgZXJyLCBzZWxmLT5qb2JqZWN0LAorICAgICAga2xhc3MtPnNldF9vbl9mcmFtZV9hdmFpbGFibGVfbGlzdGVuZXIsIGxpc3RlbmVyKTsKK30KZGlmZiAtLWdpdCBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jc3VyZmFjZXRleHR1cmUuaCBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jc3VyZmFjZXRleHR1cmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDZlYmYxCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNzdXJmYWNldGV4dHVyZS5oCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCBGbHVlbmRvIFMuQS4KKyAqICAgQXV0aG9yOiBBbmRvbmkgTW9yYWxlcyA8YW1vcmFsZXNAZmx1ZW5kby5jb20+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCBDb2xsYWJvcmEgTHRkLgorICogICBBdXRob3I6IE1hdHRoaWV1IEJvdXJvbiA8bWF0dGhpZXUuYm91cm9uQGNvbGxhYm9yYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQorICoKKyAqLworCisjaWZuZGVmIF9fR1NUX0FNQ19TVVJGQUNFX1RFWFRVUkVfSF9fCisjZGVmaW5lIF9fR1NUX0FNQ19TVVJGQUNFX1RFWFRVUkVfSF9fCisKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDxqbmkuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX0FNQ19TVVJGQUNFX1RFWFRVUkUgICAgICAgICAgICAgICAgICAoZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIEdTVF9BTUNfU1VSRkFDRV9URVhUVVJFKG9iaikgICAgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9BTUNfU1VSRkFDRV9URVhUVVJFLCBHc3RBbWNTdXJmYWNlVGV4dHVyZSkpCisjZGVmaW5lIEdTVF9JU19BTUNfU1VSRkFDRV9URVhUVVJFKG9iaikgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9BTUNfU1VSRkFDRV9URVhUVVJFKSkKKyNkZWZpbmUgR1NUX0FNQ19TVVJGQUNFX1RFWFRVUkVfQ0xBU1Moa2xhc3MpICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfQU1DX1NVUkZBQ0VfVEVYVFVSRSwgR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcykpCisjZGVmaW5lIEdTVF9JU19BTUNfU1VSRkFDRV9URVhUVVJFX0NMQVNTKGtsYXNzKSAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEdTVF9UWVBFX0FNQ19TVVJGQUNFX1RFWFRVUkUpKQorI2RlZmluZSBHU1RfQU1DX1NVUkZBQ0VfVEVYVFVSRV9HRVRfQ0xBU1Mob2JqKSAgICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9BTUNfU1VSRkFDRV9URVhUVVJFLCBHc3RBbWNTdXJmYWNlVGV4dHVyZUNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFtY1N1cmZhY2VUZXh0dXJlICAgICAgICBHc3RBbWNTdXJmYWNlVGV4dHVyZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RBbWNTdXJmYWNlVGV4dHVyZUNsYXNzICAgR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzczsKKworc3RydWN0IF9Hc3RBbWNTdXJmYWNlVGV4dHVyZQoreworICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKworICAvKiBpbnN0YW5jZSBtZW1iZXJzICovCisgIGdpbnQgdGV4dHVyZV9pZDsKKyAgam9iamVjdCBqb2JqZWN0OworfTsKKworc3RydWN0IF9Hc3RBbWNTdXJmYWNlVGV4dHVyZUNsYXNzCit7CisgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgLyogY2xhc3MgbWVtYmVycyAqLworICBnaW50IHRleHR1cmVfaWQ7CisKKyAgamNsYXNzIGprbGFzczsKKyAgam1ldGhvZElEIGNvbnN0cnVjdG9yOworICBqbWV0aG9kSUQgc2V0X29uX2ZyYW1lX2F2YWlsYWJsZV9saXN0ZW5lcjsKKyAgam1ldGhvZElEIHNldF9kZWZhdWx0X2J1ZmZlcl9zaXplOworICBqbWV0aG9kSUQgdXBkYXRlX3RleF9pbWFnZTsKKyAgam1ldGhvZElEIGRldGFjaF9mcm9tX2dsX2NvbnRleHQ7CisgIGptZXRob2RJRCBhdHRhY2hfdG9fZ2xfY29udGV4dDsKKyAgam1ldGhvZElEIGdldF90cmFuc2Zvcm1fbWF0cml4OworICBqbWV0aG9kSUQgZ2V0X3RpbWVzdGFtcDsKKyAgam1ldGhvZElEIHJlbGVhc2U7Cit9OworCitHVHlwZSBnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK0dzdEFtY1N1cmZhY2VUZXh0dXJlICogZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfbmV3ICAgICAgIChHRXJyb3IgKiogZXJyKTsKKworZ2Jvb2xlYW4gZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfc2V0X2RlZmF1bHRfYnVmZmVyX3NpemUgKEdzdEFtY1N1cmZhY2VUZXh0dXJlICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycik7CisKK2dib29sZWFuIGdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX3VwZGF0ZV90ZXhfaW1hZ2UgICAgICAgIChHc3RBbWNTdXJmYWNlVGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnIpOworCitnYm9vbGVhbiBnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9kZXRhY2hfZnJvbV9nbF9jb250ZXh0ICAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKnRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyKTsKKworZ2Jvb2xlYW4gZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfYXR0YWNoX3RvX2dsX2NvbnRleHQgICAgKEdzdEFtY1N1cmZhY2VUZXh0dXJlICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnIpOworCitnYm9vbGVhbiBnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9nZXRfdHJhbnNmb3JtX21hdHJpeCAgICAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKnRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnZmxvYXQgKm1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnIpOworCitnYm9vbGVhbiBnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9nZXRfdGltZXN0YW1wICAgICAgICAgICAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKnRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50NjQgKiByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyKTsKKworZ2Jvb2xlYW4gZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfcmVsZWFzZSAgICAgICAgICAgICAgICAgKEdzdEFtY1N1cmZhY2VUZXh0dXJlICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycik7CisKK2dib29sZWFuIGdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX3NldF9vbl9mcmFtZV9hdmFpbGFibGVfbGlzdGVuZXIgKEdzdEFtY1N1cmZhY2VUZXh0dXJlICogc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9iamVjdCBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycik7CisKK0dfRU5EX0RFQ0xTCisjZW5kaWYKZGlmZiAtLWdpdCBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYwppbmRleCA0OGIwZGNkLi43Yzk5YmUwIDEwMDY0NAotLS0gYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmMKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jCkBAIC0xMSw2ICsxMSwxNCBAQAogICoKICAqIENvcHlyaWdodCAoQykgMjAxNSwgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KICAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSwgQ29sbGFib3JhIEx0ZC4KKyAqICAgQXV0aG9yOiBNYXR0aGlldSBCb3Vyb24gPG1hdHRoaWV1LmJvdXJvbkBnY29sbGFib3JhLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIEVkd2FyZCBIZXJ2ZXkKKyAqICAgQXV0aG9yOiBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGdtYWlsLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCkBAIC0zMiw3ICs0MCw5IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9tZXRhLmg+CisjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvYWZmaW5ldHJhbnNmb3JtYXRpb25tZXRhLmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvcG9vbC5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCkBAIC01OCwxMiArNjgsMTQ2IEBACiAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOyBcCiB9IEdfU1RNVF9FTkQKIAorI2lmIEdMSUJfU0laRU9GX1ZPSURfUCA9PSA4CisjZGVmaW5lIEpMT05HX1RPX0dTVF9BTUNfVklERU9fREVDKHZhbHVlKSAoR3N0QW1jVmlkZW9EZWMgKikodmFsdWUpCisjZGVmaW5lIEdTVF9BTUNfVklERU9fREVDX1RPX0pMT05HKHZhbHVlKSAoamxvbmcpKHZhbHVlKQorI2Vsc2UKKyNkZWZpbmUgSkxPTkdfVE9fR1NUX0FNQ19WSURFT19ERUModmFsdWUpIChHc3RBbWNWaWRlb0RlYyAqKShqaW50KSh2YWx1ZSkKKyNkZWZpbmUgR1NUX0FNQ19WSURFT19ERUNfVE9fSkxPTkcodmFsdWUpIChqbG9uZykoamludCkodmFsdWUpCisjZW5kaWYKKwogdHlwZWRlZiBzdHJ1Y3QgX0J1ZmZlcklkZW50aWZpY2F0aW9uIEJ1ZmZlcklkZW50aWZpY2F0aW9uOwogc3RydWN0IF9CdWZmZXJJZGVudGlmaWNhdGlvbgogewogICBndWludDY0IHRpbWVzdGFtcDsKIH07CiAKK3N0cnVjdCBnbF9zeW5jX3Jlc3VsdAoreworICBnaW50IHJlZmNvdW50OworICBnaW50NjQgZnJhbWVfYXZhaWxhYmxlX3RzOworICBnYm9vbGVhbiB1cGRhdGVkOyAgICAgICAgICAgICAvKiBvbmx5IGV2ZXJ5IGNhbGwgdXBkYXRlX3RleF9pbWFnZSBvbmNlICovCisgIGdib29sZWFuIHJlbGVhc2VkOyAgICAgICAgICAgIC8qIG9ubHkgZXZlcnkgY2FsbCByZWxlYXNlX291dHB1dF9idWZmZXIgb25jZSAqLworICBnYm9vbGVhbiByZW5kZXJlZDsgICAgICAgICAgICAvKiB3aGV0aGVyIHRoZSByZWxlYXNlIHJlc3VsdGVkIGluIGEgcmVuZGVyICovCit9OworCitzdGF0aWMgc3RydWN0IGdsX3N5bmNfcmVzdWx0ICoKK19nbF9zeW5jX3Jlc3VsdF9yZWYgKHN0cnVjdCBnbF9zeW5jX3Jlc3VsdCAqcmVzdWx0KQoreworICBnX2Fzc2VydCAocmVzdWx0ICE9IE5VTEwpOworCisgIGdfYXRvbWljX2ludF9pbmMgKCZyZXN1bHQtPnJlZmNvdW50KTsKKworICBHU1RfVFJBQ0UgKCJnbF9zeW5jIHJlc3VsdCAlcCByZWYiLCByZXN1bHQpOworCisgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCitfZ2xfc3luY19yZXN1bHRfdW5yZWYgKHN0cnVjdCBnbF9zeW5jX3Jlc3VsdCAqcmVzdWx0KQoreworICBnX2Fzc2VydCAocmVzdWx0ICE9IE5VTEwpOworCisgIEdTVF9UUkFDRSAoImdsX3N5bmMgcmVzdWx0ICVwIHVucmVmIiwgcmVzdWx0KTsKKworICBpZiAoZ19hdG9taWNfaW50X2RlY19hbmRfdGVzdCAoJnJlc3VsdC0+cmVmY291bnQpKSB7CisgICAgR1NUX1RSQUNFICgiZnJlZWluZyBnbF9zeW5jIHJlc3VsdCAlcCIsIHJlc3VsdCk7CisgICAgZ19mcmVlIChyZXN1bHQpOworICB9Cit9CisKK3N0cnVjdCBnbF9zeW5jCit7CisgIGdpbnQgcmVmY291bnQ7CisgIEdzdEFtY1ZpZGVvRGVjICpzaW5rOyAgICAgICAgIC8qIGJhY2sgcmVmZXJlbmNlIGZvciBzdGF0aXN0aWNzLCBsb2NrLCBjb25kLCBldGMgKi8KKyAgZ2ludCBidWZmZXJfaWR4OyAgICAgICAgICAgICAgLyogaWR4IG9mIHRoZSBBTUMgYnVmZmVyIHdlIHNob3VsZCByZW5kZXIgKi8KKyAgR3N0QnVmZmVyICpidWZmZXI7ICAgICAgICAgICAgLyogYmFjayByZWZlcmVuY2UgdG8gdGhlIGJ1ZmZlciAqLworICBHc3RHTE1lbW9yeSAqb2VzX21lbTsgICAgICAgICAvKiB3aGVyZSBhbWMgaXMgcmVuZGVyaW5nIGludG8uIFRoZSBzYW1lIGZvciBldmVyeSBnbF9zeW5jICovCisgIEdzdEFtY1N1cmZhY2UgKnN1cmZhY2U7ICAgICAgIC8qIGphdmEgd3JhcHBlciBmb3Igd2hlcmUgYW1jIGlzIHJlbmRlcmluZyBpbnRvICovCisgIGd1aW50IGdsX2ZyYW1lX25vOyAgICAgICAgICAgIC8qIGVmZmVjdGl2ZWx5IHRoZSBmcmFtZSBpZCAqLworICBnaW50NjQgcmVsZWFzZWRfdHM7ICAgICAgICAgICAvKiBtaWNyb3NlY29uZHMgZnJvbSBnX2dldF9tb25vdG9uaWNfdGltZSgpICovCisgIHN0cnVjdCBnbF9zeW5jX3Jlc3VsdCAqcmVzdWx0OworfTsKKworc3RhdGljIHN0cnVjdCBnbF9zeW5jICoKK19nbF9zeW5jX3JlZiAoc3RydWN0IGdsX3N5bmMgKnN5bmMpCit7CisgIGdfYXNzZXJ0IChzeW5jICE9IE5VTEwpOworCisgIGdfYXRvbWljX2ludF9pbmMgKCZzeW5jLT5yZWZjb3VudCk7CisKKyAgR1NUX1RSQUNFICgiZ2xfc3luYyAlcCByZWYiLCBzeW5jKTsKKworICByZXR1cm4gc3luYzsKK30KKworc3RhdGljIHZvaWQKK19nbF9zeW5jX3VucmVmIChzdHJ1Y3QgZ2xfc3luYyAqc3luYykKK3sKKyAgZ19hc3NlcnQgKHN5bmMgIT0gTlVMTCk7CisKKyAgR1NUX1RSQUNFICgiZ2xfc3luYyAlcCB1bnJlZiIsIHN5bmMpOworCisgIGlmIChnX2F0b21pY19pbnRfZGVjX2FuZF90ZXN0ICgmc3luYy0+cmVmY291bnQpKSB7CisgICAgR1NUX1RSQUNFICgiZnJlZWluZyBnbF9zeW5jICVwIiwgc3luYyk7CisKKyAgICBfZ2xfc3luY19yZXN1bHRfdW5yZWYgKHN5bmMtPnJlc3VsdCk7CisKKyAgICBnX29iamVjdF91bnJlZiAoc3luYy0+c3VyZmFjZSk7CisgICAgZ3N0X21lbW9yeV91bnJlZiAoKEdzdE1lbW9yeSAqKSBzeW5jLT5vZXNfbWVtKTsKKworICAgIGdfZnJlZSAoc3luYyk7CisgIH0KK30KKworc3RhdGljIGdpbnQKK19xdWV1ZV9jb21wYXJlX2dsX3N5bmMgKGdjb25zdHBvaW50ZXIgYSwgZ2NvbnN0cG9pbnRlciBiKQoreworICBjb25zdCBzdHJ1Y3QgZ2xfc3luYyAqc3luYyA9IGE7CisgIGd1aW50IGZyYW1lID0gR1BPSU5URVJfVE9fSU5UIChiKTsKKworICByZXR1cm4gc3luYy0+Z2xfZnJhbWVfbm8gLSBmcmFtZTsKK30KKworc3RhdGljIEdMaXN0ICoKK19maW5kX2dsX3N5bmNfZm9yX2ZyYW1lIChHc3RBbWNWaWRlb0RlYyAqIGRlYywgZ3VpbnQgZnJhbWUpCit7CisgIHJldHVybiBnX3F1ZXVlX2ZpbmRfY3VzdG9tIChkZWMtPmdsX3F1ZXVlLCBHSU5UX1RPX1BPSU5URVIgKGZyYW1lKSwKKyAgICAgIChHQ29tcGFyZUZ1bmMpIF9xdWV1ZV9jb21wYXJlX2dsX3N5bmMpOworfQorCitzdGF0aWMgdm9pZAorX2F0dGFjaF9tZW1fdG9fY29udGV4dCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0QW1jVmlkZW9EZWMgKiBzZWxmKQoreworICBHU1RfVFJBQ0VfT0JKRUNUIChzZWxmLCAiYXR0YWNoaW5nIHRleHR1cmUgJXAgaWQgJXUgdG8gY3VycmVudCBjb250ZXh0IiwKKyAgICAgIHNlbGYtPnN1cmZhY2UtPnRleHR1cmUsIHNlbGYtPm9lc19tZW0tPnRleF9pZCk7CisgIGlmICghZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfYXR0YWNoX3RvX2dsX2NvbnRleHQgKHNlbGYtPnN1cmZhY2UtPnRleHR1cmUsCisgICAgICAgICAgc2VsZi0+b2VzX21lbS0+dGV4X2lkLCAmc2VsZi0+Z2xfZXJyb3IpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkZhaWxlZCB0byBhdHRhY2ggdGV4dHVyZSB0byB0aGUgR0wgY29udGV4dCIpOworICAgIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IgKHNlbGYsIHNlbGYtPmdsX2Vycm9yKTsKKyAgfSBlbHNlIHsKKyAgICBzZWxmLT5nbF9tZW1fYXR0YWNoZWQgPSBUUlVFOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitfZGV0dGFjaF9tZW1fZnJvbV9jb250ZXh0IChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RBbWNWaWRlb0RlYyAqIHNlbGYpCit7CisgIGlmIChzZWxmLT5zdXJmYWNlKSB7CisgICAgZ3VpbnQgdGV4X2lkID0gc2VsZi0+b2VzX21lbSA/IHNlbGYtPm9lc19tZW0tPnRleF9pZCA6IDA7CisKKyAgICBHU1RfVFJBQ0VfT0JKRUNUIChzZWxmLCAiZGV0YWNoaW5nIHRleHR1cmUgJXAgaWQgJXUgZnJvbSBjdXJyZW50IGNvbnRleHQiLAorICAgICAgICBzZWxmLT5zdXJmYWNlLT50ZXh0dXJlLCB0ZXhfaWQpOworCisgICAgaWYgKCFnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9kZXRhY2hfZnJvbV9nbF9jb250ZXh0IChzZWxmLT5zdXJmYWNlLT50ZXh0dXJlLAorICAgICAgICAgICAgJnNlbGYtPmdsX2Vycm9yKSkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkZhaWxlZCB0byBhdHRhY2ggdGV4dHVyZSB0byB0aGUgR0wgY29udGV4dCIpOworICAgICAgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUiAoc2VsZiwgc2VsZi0+Z2xfZXJyb3IpOworICAgIH0KKyAgfQorICBzZWxmLT5nbF9tZW1fYXR0YWNoZWQgPSBGQUxTRTsKK30KKwogc3RhdGljIEJ1ZmZlcklkZW50aWZpY2F0aW9uICoKIGJ1ZmZlcl9pZGVudGlmaWNhdGlvbl9uZXcgKEdzdENsb2NrVGltZSB0aW1lc3RhbXApCiB7CkBAIC04Niw2ICsyMzAsOCBAQAogc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCiBnc3RfYW1jX3ZpZGVvX2RlY19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAogICAgIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pOworc3RhdGljIHZvaWQgZ3N0X2FtY192aWRlb19kZWNfc2V0X2NvbnRleHQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgIEdzdENvbnRleHQgKiBjb250ZXh0KTsKIAogc3RhdGljIGdib29sZWFuIGdzdF9hbWNfdmlkZW9fZGVjX29wZW4gKEdzdFZpZGVvRGVjb2RlciAqIGRlY29kZXIpOwogc3RhdGljIGdib29sZWFuIGdzdF9hbWNfdmlkZW9fZGVjX2Nsb3NlIChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyKTsKQEAgLTk5LDggKzI0NSwxNCBAQAogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2FtY192aWRlb19kZWNfZmluaXNoIChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfYW1jX3ZpZGVvX2RlY19kZWNpZGVfYWxsb2NhdGlvbiAoR3N0VmlkZW9EZWNvZGVyICogYmRlYywKICAgICBHc3RRdWVyeSAqIHF1ZXJ5KTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYW1jX3ZpZGVvX2RlY19zcmNfcXVlcnkgKEdzdFZpZGVvRGVjb2RlciAqIGJkZWMsCisgICAgR3N0UXVlcnkgKiBxdWVyeSk7CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9hbWNfdmlkZW9fZGVjX2RyYWluIChHc3RBbWNWaWRlb0RlYyAqIHNlbGYpOworc3RhdGljIGdib29sZWFuIGdzdF9hbWNfdmlkZW9fZGVjX2NoZWNrX2NvZGVjX2NvbmZpZyAoR3N0QW1jVmlkZW9EZWMgKiBzZWxmKTsKK3N0YXRpYyB2b2lkCitnc3RfYW1jX3ZpZGVvX2RlY19vbl9mcmFtZV9hdmFpbGFibGUgKEpOSUVudiAqIGVudiwgam9iamVjdCB0aGl6LAorICAgIGxvbmcgbG9uZyBjb250ZXh0LCBqb2JqZWN0IHN1cmZhY2VUZXh0dXJlKTsKIAogZW51bQogewpAQCAtMTkwLDcgKzM0Miw3IEBACiAgIEdzdEFtY1ZpZGVvRGVjQ2xhc3MgKmFtY3ZpZGVvZGVjX2NsYXNzID0gR1NUX0FNQ19WSURFT19ERUNfQ0xBU1MgKGdfY2xhc3MpOwogICBjb25zdCBHc3RBbWNDb2RlY0luZm8gKmNvZGVjX2luZm87CiAgIEdzdFBhZFRlbXBsYXRlICp0ZW1wbDsKLSAgR3N0Q2FwcyAqc2lua19jYXBzLCAqc3JjX2NhcHM7CisgIEdzdENhcHMgKnNpbmtfY2FwcywgKnNyY19jYXBzLCAqYWxsX3NyY19jYXBzOwogICBnY2hhciAqbG9uZ25hbWU7CiAKICAgY29kZWNfaW5mbyA9CkBAIC0yMDIsMTUgKzM1NCwyNyBAQAogICBhbWN2aWRlb2RlY19jbGFzcy0+Y29kZWNfaW5mbyA9IGNvZGVjX2luZm87CiAKICAgZ3N0X2FtY19jb2RlY19pbmZvX3RvX2NhcHMgKGNvZGVjX2luZm8sICZzaW5rX2NhcHMsICZzcmNfY2Fwcyk7CisKKyAgYWxsX3NyY19jYXBzID0KKyAgICAgIGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkKKyAgICAgICIpLCBmb3JtYXQgPSAoc3RyaW5nKSBSR0JBLCB0ZXh0dXJlLXRhcmdldCA9IChzdHJpbmcpIGV4dGVybmFsLW9lcyIpOworCisgIGlmIChjb2RlY19pbmZvLT5nbF9vdXRwdXRfb25seSkgeworICAgIGdzdF9jYXBzX3VucmVmIChzcmNfY2Fwcyk7CisgIH0gZWxzZSB7CisgICAgZ3N0X2NhcHNfYXBwZW5kIChhbGxfc3JjX2NhcHMsIHNyY19jYXBzKTsKKyAgfQorCiAgIC8qIEFkZCBwYWQgdGVtcGxhdGVzICovCiAgIHRlbXBsID0KICAgICAgIGdzdF9wYWRfdGVtcGxhdGVfbmV3ICgic2luayIsIEdTVF9QQURfU0lOSywgR1NUX1BBRF9BTFdBWVMsIHNpbmtfY2Fwcyk7CiAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsIHRlbXBsKTsKICAgZ3N0X2NhcHNfdW5yZWYgKHNpbmtfY2Fwcyk7CiAKLSAgdGVtcGwgPSBnc3RfcGFkX3RlbXBsYXRlX25ldyAoInNyYyIsIEdTVF9QQURfU1JDLCBHU1RfUEFEX0FMV0FZUywgc3JjX2NhcHMpOworICB0ZW1wbCA9CisgICAgICBnc3RfcGFkX3RlbXBsYXRlX25ldyAoInNyYyIsIEdTVF9QQURfU1JDLCBHU1RfUEFEX0FMV0FZUywgYWxsX3NyY19jYXBzKTsKICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywgdGVtcGwpOwotICBnc3RfY2Fwc191bnJlZiAoc3JjX2NhcHMpOworICBnc3RfY2Fwc191bnJlZiAoYWxsX3NyY19jYXBzKTsKIAogICBsb25nbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoIkFuZHJvaWQgTWVkaWFDb2RlYyAlcyIsIGNvZGVjX2luZm8tPm5hbWUpOwogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCkBAIC0yMzMsNiArMzk3LDggQEAKIAogICBlbGVtZW50X2NsYXNzLT5jaGFuZ2Vfc3RhdGUgPQogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hbWNfdmlkZW9fZGVjX2NoYW5nZV9zdGF0ZSk7CisgIGVsZW1lbnRfY2xhc3MtPnNldF9jb250ZXh0ID0KKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYW1jX3ZpZGVvX2RlY19zZXRfY29udGV4dCk7CiAKICAgdmlkZW9kZWNfY2xhc3MtPnN0YXJ0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hbWNfdmlkZW9fZGVjX3N0YXJ0KTsKICAgdmlkZW9kZWNfY2xhc3MtPnN0b3AgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2FtY192aWRlb19kZWNfc3RvcCk7CkBAIC0yNDUsNiArNDExLDcgQEAKICAgdmlkZW9kZWNfY2xhc3MtPmZpbmlzaCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYW1jX3ZpZGVvX2RlY19maW5pc2gpOwogICB2aWRlb2RlY19jbGFzcy0+ZGVjaWRlX2FsbG9jYXRpb24gPQogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hbWNfdmlkZW9fZGVjX2RlY2lkZV9hbGxvY2F0aW9uKTsKKyAgdmlkZW9kZWNfY2xhc3MtPnNyY19xdWVyeSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYW1jX3ZpZGVvX2RlY19zcmNfcXVlcnkpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjU1LDYgKzQyMiwxMSBAQAogCiAgIGdfbXV0ZXhfaW5pdCAoJnNlbGYtPmRyYWluX2xvY2spOwogICBnX2NvbmRfaW5pdCAoJnNlbGYtPmRyYWluX2NvbmQpOworCisgIGdfbXV0ZXhfaW5pdCAoJnNlbGYtPmdsX2xvY2spOworICBnX2NvbmRfaW5pdCAoJnNlbGYtPmdsX2NvbmQpOworCisgIHNlbGYtPmdsX3F1ZXVlID0gZ19xdWV1ZV9uZXcgKCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgpAQCAtMjcxLDYgKzQ0Myw4IEBACiAgICAgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUiAoc2VsZiwgZXJyKTsKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KKyAgc2VsZi0+Y29kZWNfY29uZmlnID0gQU1DX0NPREVDX0NPTkZJR19OT05FOworCiAgIHNlbGYtPnN0YXJ0ZWQgPSBGQUxTRTsKICAgc2VsZi0+Zmx1c2hpbmcgPSBUUlVFOwogCkBAIC0yODYsNiArNDYwLDQ2IEBACiAKICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkNsb3NpbmcgZGVjb2RlciIpOwogCisgIGlmIChzZWxmLT5kb3duc3RyZWFtX3N1cHBvcnRzX2dsCisgICAgICAmJiBzZWxmLT5jb2RlY19jb25maWcgPT0gQU1DX0NPREVDX0NPTkZJR19XSVRIX1NVUkZBQ0UpIHsKKyAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5nbF9sb2NrKTsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKHNlbGYsICJzaHV0dGluZyBkb3duIGdsIHF1ZXVlIHB1c2hlZCAldSByZWFkeSAldSAiCisgICAgICAgICJyZWxlYXNlZCAldSIsIHNlbGYtPmdsX3B1c2hlZF9mcmFtZV9jb3VudCwgc2VsZi0+Z2xfcmVhZHlfZnJhbWVfY291bnQsCisgICAgICAgIHNlbGYtPmdsX3JlbGVhc2VkX2ZyYW1lX2NvdW50KTsKKworICAgIGdfcXVldWVfZnJlZV9mdWxsIChzZWxmLT5nbF9xdWV1ZSwgKEdEZXN0cm95Tm90aWZ5KSBfZ2xfc3luY191bnJlZik7CisgICAgc2VsZi0+Z2xfcXVldWUgPSBnX3F1ZXVlX25ldyAoKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmdsX2xvY2spOworCisgICAgaWYgKHNlbGYtPmdsX21lbV9hdHRhY2hlZCkKKyAgICAgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKHNlbGYtPmdsX2NvbnRleHQsCisgICAgICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9kZXR0YWNoX21lbV9mcm9tX2NvbnRleHQsIHNlbGYpOworICB9CisgIHNlbGYtPmdsX3B1c2hlZF9mcmFtZV9jb3VudCA9IDA7CisgIHNlbGYtPmdsX3JlYWR5X2ZyYW1lX2NvdW50ID0gMDsKKyAgc2VsZi0+Z2xfcmVsZWFzZWRfZnJhbWVfY291bnQgPSAwOworICBzZWxmLT5nbF9sYXN0X3JlbmRlcmVkX2ZyYW1lID0gMDsKKworICBpZiAoc2VsZi0+c3VyZmFjZSkgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKHNlbGYtPnN1cmZhY2UpOworICAgIHNlbGYtPnN1cmZhY2UgPSBOVUxMOworICB9CisKKyAgaWYgKHNlbGYtPmxpc3RlbmVyKSB7CisgICAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICAgIEdFcnJvciAqZXJyID0gTlVMTDsKKworICAgIGlmICghZ3N0X2FtY19qbmlfY2FsbF92b2lkX21ldGhvZCAoZW52LCAmZXJyLCBzZWxmLT5saXN0ZW5lciwKKyAgICAgICAgICAgIHNlbGYtPnNldF9jb250ZXh0X2lkLCBHU1RfQU1DX1ZJREVPX0RFQ19UT19KTE9ORyAoTlVMTCkpKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiRmFpbGVkIHRvIHVuc2V0IGJhY2sgcG9pbnRlciBvbiB0aGUgbGlzdGVuZXIuICIKKyAgICAgICAgICAiY3Jhc2hlcy9oYW5ncyBtYXkgZW5zdWU6ICVzIiwgZXJyID8gZXJyLT5tZXNzYWdlIDogIlVua25vd24iKTsKKyAgICAgIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IgKHNlbGYsIGVycik7CisgICAgfQorCisgICAgZ3N0X2FtY19qbmlfb2JqZWN0X3VucmVmIChlbnYsIHNlbGYtPmxpc3RlbmVyKTsKKyAgfQorICBzZWxmLT5saXN0ZW5lciA9IE5VTEw7CisKICAgaWYgKHNlbGYtPmNvZGVjKSB7CiAgICAgR0Vycm9yICplcnIgPSBOVUxMOwogCkBAIC0yOTUsMTAgKzUwOSwzNSBAQAogCiAgICAgZ3N0X2FtY19jb2RlY19mcmVlIChzZWxmLT5jb2RlYyk7CiAgIH0KLSAgc2VsZi0+Y29kZWMgPSBOVUxMOwogCiAgIHNlbGYtPnN0YXJ0ZWQgPSBGQUxTRTsKICAgc2VsZi0+Zmx1c2hpbmcgPSBUUlVFOworICBzZWxmLT5kb3duc3RyZWFtX3N1cHBvcnRzX2dsID0gRkFMU0U7CisKKyAgc2VsZi0+Y29kZWMgPSBOVUxMOworICBzZWxmLT5jb2RlY19jb25maWcgPSBBTUNfQ09ERUNfQ09ORklHX05PTkU7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkZyZWVpbmcgR0wgY29udGV4dDogJSIgR1NUX1BUUl9GT1JNQVQsCisgICAgICBzZWxmLT5nbF9jb250ZXh0KTsKKyAgaWYgKHNlbGYtPmdsX2NvbnRleHQpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzZWxmLT5nbF9jb250ZXh0KTsKKyAgICBzZWxmLT5nbF9jb250ZXh0ID0gTlVMTDsKKyAgfQorCisgIGlmIChzZWxmLT5vZXNfbWVtKSB7CisgICAgZ3N0X21lbW9yeV91bnJlZiAoKEdzdE1lbW9yeSAqKSBzZWxmLT5vZXNfbWVtKTsKKyAgICBzZWxmLT5vZXNfbWVtID0gTlVMTDsKKyAgfQorCisgIGlmIChzZWxmLT5nbF9kaXNwbGF5KSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc2VsZi0+Z2xfZGlzcGxheSk7CisgICAgc2VsZi0+Z2xfZGlzcGxheSA9IE5VTEw7CisgIH0KKworICBpZiAoc2VsZi0+b3RoZXJfZ2xfY29udGV4dCkgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKHNlbGYtPm90aGVyX2dsX2NvbnRleHQpOworICAgIHNlbGYtPm90aGVyX2dsX2NvbnRleHQgPSBOVUxMOworICB9CiAKICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkNsb3NlZCBkZWNvZGVyIik7CiAKQEAgLTMxMyw5ICs1NTIsMjggQEAKICAgZ19tdXRleF9jbGVhciAoJnNlbGYtPmRyYWluX2xvY2spOwogICBnX2NvbmRfY2xlYXIgKCZzZWxmLT5kcmFpbl9jb25kKTsKIAorICBnX211dGV4X2NsZWFyICgmc2VsZi0+Z2xfbG9jayk7CisgIGdfY29uZF9jbGVhciAoJnNlbGYtPmdsX2NvbmQpOworCisgIGlmIChzZWxmLT5nbF9xdWV1ZSkgeworICAgIGdfcXVldWVfZnJlZV9mdWxsIChzZWxmLT5nbF9xdWV1ZSwgKEdEZXN0cm95Tm90aWZ5KSBfZ2xfc3luY191bnJlZik7CisgICAgc2VsZi0+Z2xfcXVldWUgPSBOVUxMOworICB9CisKICAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwogfQogCitzdGF0aWMgdm9pZAorZ3N0X2FtY192aWRlb19kZWNfc2V0X2NvbnRleHQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RDb250ZXh0ICogY29udGV4dCkKK3sKKyAgR3N0QW1jVmlkZW9EZWMgKnNlbGYgPSBHU1RfQU1DX1ZJREVPX0RFQyAoZWxlbWVudCk7CisKKyAgZ3N0X2dsX2hhbmRsZV9zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCwgJnNlbGYtPmdsX2Rpc3BsYXksCisgICAgICAmc2VsZi0+b3RoZXJfZ2xfY29udGV4dCk7CisKKyAgR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0KTsKK30KKwogc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCiBnc3RfYW1jX3ZpZGVvX2RlY19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQogewpAQCAtMzI3LDYgKzU4NSwxMCBAQAogICAgICAgR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKTsKICAgc2VsZiA9IEdTVF9BTUNfVklERU9fREVDIChlbGVtZW50KTsKIAorICBHU1RfREVCVUdfT0JKRUNUIChlbGVtZW50LCAiY2hhbmdpbmcgc3RhdGU6ICVzID0+ICVzIiwKKyAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lIChHU1RfU1RBVEVfVFJBTlNJVElPTl9DVVJSRU5UICh0cmFuc2l0aW9uKSksCisgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSAoR1NUX1NUQVRFX1RSQU5TSVRJT05fTkVYVCAodHJhbnNpdGlvbikpKTsKKwogICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfTlVMTF9UT19SRUFEWToKICAgICAgIGJyZWFrOwpAQCAtMzM5LDkgKzYwMSwxMSBAQAogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKICAgICAgIHNlbGYtPmZsdXNoaW5nID0gVFJVRTsKLSAgICAgIGdzdF9hbWNfY29kZWNfZmx1c2ggKHNlbGYtPmNvZGVjLCAmZXJyKTsKLSAgICAgIGlmIChlcnIpCi0gICAgICAgIEdTVF9FTEVNRU5UX1dBUk5JTkdfRlJPTV9FUlJPUiAoc2VsZiwgZXJyKTsKKyAgICAgIGlmIChzZWxmLT5zdGFydGVkKSB7CisgICAgICAgIGdzdF9hbWNfY29kZWNfZmx1c2ggKHNlbGYtPmNvZGVjLCAmZXJyKTsKKyAgICAgICAgaWYgKGVycikKKyAgICAgICAgICBHU1RfRUxFTUVOVF9XQVJOSU5HX0ZST01fRVJST1IgKHNlbGYsIGVycik7CisgICAgICB9CiAgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5kcmFpbl9sb2NrKTsKICAgICAgIHNlbGYtPmRyYWluaW5nID0gRkFMU0U7CiAgICAgICBnX2NvbmRfYnJvYWRjYXN0ICgmc2VsZi0+ZHJhaW5fY29uZCk7CkBAIC0zNjYsOCArNjMwLDYgQEAKICAgICAgIHNlbGYtPmRvd25zdHJlYW1fZmxvd19yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKICAgICAgIHNlbGYtPnN0YXJ0ZWQgPSBGQUxTRTsKICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgotICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIGJyZWFrOwogICB9CkBAIC00NjQsNiArNzI2LDI1IEBACiB9CiAKIHN0YXRpYyBnYm9vbGVhbgorZ3N0X2FtY192aWRlb19kZWNfY2hlY2tfY29kZWNfY29uZmlnIChHc3RBbWNWaWRlb0RlYyAqIHNlbGYpCit7CisgIGdib29sZWFuIHJldCA9IChzZWxmLT5jb2RlY19jb25maWcgPT0gQU1DX0NPREVDX0NPTkZJR19OT05FCisgICAgICB8fCAoc2VsZi0+Y29kZWNfY29uZmlnID09IEFNQ19DT0RFQ19DT05GSUdfV0lUSF9TVVJGQUNFCisgICAgICAgICAgJiYgc2VsZi0+ZG93bnN0cmVhbV9zdXBwb3J0c19nbCkKKyAgICAgIHx8IChzZWxmLT5jb2RlY19jb25maWcgPT0gQU1DX0NPREVDX0NPTkZJR19XSVRIT1VUX1NVUkZBQ0UKKyAgICAgICAgICAmJiAhc2VsZi0+ZG93bnN0cmVhbV9zdXBwb3J0c19nbCkpOworCisgIGlmICghcmV0KSB7CisgICAgR1NUX0VSUk9SX09CSkVDVAorICAgICAgICAoc2VsZiwKKyAgICAgICAgIkNvZGVjIGNvbmZpZ3VyYXRpb24gKCVkKSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGRvd25zdHJlYW0gd2hpY2ggJXMgc3VwcG9ydCBHTCBvdXRwdXQiLAorICAgICAgICBzZWxmLT5jb2RlY19jb25maWcsIHNlbGYtPmRvd25zdHJlYW1fc3VwcG9ydHNfZ2wgPyAiZG9lcyIgOiAiZG9lcyBub3QiKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgogZ3N0X2FtY192aWRlb19kZWNfc2V0X3NyY19jYXBzIChHc3RBbWNWaWRlb0RlYyAqIHNlbGYsIEdzdEFtY0Zvcm1hdCAqIGZvcm1hdCkKIHsKICAgR3N0VmlkZW9Db2RlY1N0YXRlICpvdXRwdXRfc3RhdGU7CkBAIC01MjQsOSArODA1LDEzIEBACiAgICAgcmV0dXJuIEZBTFNFOwogICB9CiAKLSAgZ3N0X2Zvcm1hdCA9Ci0gICAgICBnc3RfYW1jX2NvbG9yX2Zvcm1hdF90b192aWRlb19mb3JtYXQgKGtsYXNzLT5jb2RlY19pbmZvLCBtaW1lLAotICAgICAgY29sb3JfZm9ybWF0KTsKKyAgaWYgKHNlbGYtPmNvZGVjX2NvbmZpZyA9PSBBTUNfQ09ERUNfQ09ORklHX1dJVEhfU1VSRkFDRSkgeworICAgIGdzdF9mb3JtYXQgPSBHU1RfVklERU9fRk9STUFUX1JHQkE7CisgIH0gZWxzZSB7CisgICAgZ3N0X2Zvcm1hdCA9CisgICAgICAgIGdzdF9hbWNfY29sb3JfZm9ybWF0X3RvX3ZpZGVvX2Zvcm1hdCAoa2xhc3MtPmNvZGVjX2luZm8sIG1pbWUsCisgICAgICAgIGNvbG9yX2Zvcm1hdCk7CisgIH0KIAogICBpZiAoZ3N0X2Zvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX1VOS05PV04pIHsKICAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiVW5rbm93biBjb2xvciBmb3JtYXQgMHglMDh4IiwgY29sb3JfZm9ybWF0KTsKQEAgLTU0Miw3ICs4MjcsMzUgQEAKICAgICAgICAgR1NUX1ZJREVPX01VTFRJVklFV19NT0RFX1RPUF9CT1RUT00sIEdTVF9WSURFT19NVUxUSVZJRVdfRkxBR1NfTk9ORSk7CiAgIH0KIAorICBtZW1zZXQgKCZzZWxmLT5jb2xvcl9mb3JtYXRfaW5mbywgMCwgc2l6ZW9mIChzZWxmLT5jb2xvcl9mb3JtYXRfaW5mbykpOworICBpZiAoc2VsZi0+Y29kZWNfY29uZmlnID09IEFNQ19DT0RFQ19DT05GSUdfV0lUSF9TVVJGQUNFKSB7CisgICAgaWYgKG91dHB1dF9zdGF0ZS0+Y2FwcykKKyAgICAgIGdzdF9jYXBzX3VucmVmIChvdXRwdXRfc3RhdGUtPmNhcHMpOworICAgIG91dHB1dF9zdGF0ZS0+Y2FwcyA9IGdzdF92aWRlb19pbmZvX3RvX2NhcHMgKCZvdXRwdXRfc3RhdGUtPmluZm8pOworICAgIGdzdF9jYXBzX3NldF9mZWF0dXJlcyAob3V0cHV0X3N0YXRlLT5jYXBzLCAwLAorICAgICAgICBnc3RfY2Fwc19mZWF0dXJlc19uZXcgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwgTlVMTCkpOworICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKG91dHB1dF9zdGF0ZS0+Y2FwcywgInRleHR1cmUtdGFyZ2V0IiwgR19UWVBFX1NUUklORywKKyAgICAgICAgImV4dGVybmFsLW9lcyIsIE5VTEwpOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJDb25maWd1cmluZyBmb3IgU3VyZmFjZSBvdXRwdXQiKTsKKworICAgIC8qIFRoZSB3aWR0aC9oZWlnaHQgdmFsdWVzIGFyZSB1c2VkIGluIG90aGVyIHBsYWNlcyBmb3IKKyAgICAgKiBjaGVja2luZyBpZiB0aGUgcmVzb2x1dGlvbiBjaGFuZ2VkLiBTZXQgZXZlcnl0aGluZworICAgICAqIHRoYXQgbWFrZXMgc2Vuc2UgaGVyZQorICAgICAqLworICAgIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLmNvbG9yX2Zvcm1hdCA9IENPTE9SX0Zvcm1hdEFuZHJvaWRPcGFxdWU7CisgICAgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8ud2lkdGggPSB3aWR0aDsKKyAgICBzZWxmLT5jb2xvcl9mb3JtYXRfaW5mby5oZWlnaHQgPSBoZWlnaHQ7CisgICAgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uY3JvcF9sZWZ0ID0gY3JvcF9sZWZ0OworICAgIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLmNyb3BfcmlnaHQgPSBjcm9wX3JpZ2h0OworICAgIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLmNyb3BfdG9wID0gY3JvcF90b3A7CisgICAgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uY3JvcF9ib3R0b20gPSBjcm9wX2JvdHRvbTsKKworICAgIGdvdG8gb3V0OworICB9CisKICAgc2VsZi0+Zm9ybWF0ID0gZ3N0X2Zvcm1hdDsKKyAgc2VsZi0+d2lkdGggPSB3aWR0aDsKKyAgc2VsZi0+aGVpZ2h0ID0gaGVpZ2h0OwogICBpZiAoIWdzdF9hbWNfY29sb3JfZm9ybWF0X2luZm9fc2V0ICgmc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8sCiAgICAgICAgICAga2xhc3MtPmNvZGVjX2luZm8sIG1pbWUsIGNvbG9yX2Zvcm1hdCwgd2lkdGgsIGhlaWdodCwgc3RyaWRlLAogICAgICAgICAgIHNsaWNlX2hlaWdodCwgY3JvcF9sZWZ0LCBjcm9wX3JpZ2h0LCBjcm9wX3RvcCwgY3JvcF9ib3R0b20pKSB7CkBAIC01NTEsMTYgKzg2NCwxOSBAQAogICB9CiAKICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwKLSAgICAgICJDb2xvciBmb3JtYXQgaW5mbzoge2NvbG9yX2Zvcm1hdD0lZCwgd2lkdGg9JWQsIGhlaWdodD0lZCwgIgorICAgICAgIkNvbG9yIGZvcm1hdCBpbmZvOiB7Y29sb3JfZm9ybWF0PSVkICgweCUwOHgpLCB3aWR0aD0lZCwgaGVpZ2h0PSVkLCAiCiAgICAgICAic3RyaWRlPSVkLCBzbGljZS1oZWlnaHQ9JWQsIGNyb3AtbGVmdD0lZCwgY3JvcC10b3A9JWQsICIKICAgICAgICJjcm9wLXJpZ2h0PSVkLCBjcm9wLWJvdHRvbT0lZCwgZnJhbWUtc2l6ZT0lZH0iLAorICAgICAgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uY29sb3JfZm9ybWF0LAogICAgICAgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uY29sb3JfZm9ybWF0LCBzZWxmLT5jb2xvcl9mb3JtYXRfaW5mby53aWR0aCwKICAgICAgIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLmhlaWdodCwgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uc3RyaWRlLAogICAgICAgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uc2xpY2VfaGVpZ2h0LCBzZWxmLT5jb2xvcl9mb3JtYXRfaW5mby5jcm9wX2xlZnQsCiAgICAgICBzZWxmLT5jb2xvcl9mb3JtYXRfaW5mby5jcm9wX3RvcCwgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uY3JvcF9yaWdodCwKICAgICAgIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLmNyb3BfYm90dG9tLCBzZWxmLT5jb2xvcl9mb3JtYXRfaW5mby5mcmFtZV9zaXplKTsKIAorb3V0OgogICByZXQgPSBnc3RfdmlkZW9fZGVjb2Rlcl9uZWdvdGlhdGUgKEdTVF9WSURFT19ERUNPREVSIChzZWxmKSk7CisKICAgZ3N0X3ZpZGVvX2NvZGVjX3N0YXRlX3VucmVmIChvdXRwdXRfc3RhdGUpOwogICBzZWxmLT5pbnB1dF9zdGF0ZV9jaGFuZ2VkID0gRkFMU0U7CiAKQEAgLTU3Niw2ICs4OTIsOSBAQAogICBHc3RWaWRlb0luZm8gKmluZm8gPSAmc3RhdGUtPmluZm87CiAgIGdib29sZWFuIHJldCA9IEZBTFNFOwogCisgIGlmIChzZWxmLT5jb2xvcl9mb3JtYXRfaW5mby5jb2xvcl9mb3JtYXQgPT0gQ09MT1JfRm9ybWF0QW5kcm9pZE9wYXF1ZSkKKyAgICByZXR1cm4gRkFMU0U7CisKICAgcmV0ID0KICAgICAgIGdzdF9hbWNfY29sb3JfZm9ybWF0X2NvcHkgKCZzZWxmLT5jb2xvcl9mb3JtYXRfaW5mbywgYnVmLCBidWZmZXJfaW5mbywKICAgICAgIGluZm8sIG91dGJ1ZiwgQ09MT1JfRk9STUFUX0NPUFlfT1VUKTsKQEAgLTU4NCw2ICs5MDMsMzIxIEBACiAgIHJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBjb25zdCBnZmxvYXQgeWZsaXBfbWF0cml4WzE2XSA9IHsKKyAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwKKyAgMC4wZiwgLTEuMGYsIDAuMGYsIDAuMGYsCisgIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsCisgIDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYKK307CisKK3N0YXRpYyB2b2lkCitfYW1jX2dsX3NldF9zeW5jIChHc3RHTFN5bmNNZXRhICogc3luY19tZXRhLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KQoreworfQorCitzdGF0aWMgdm9pZAorX2dsX3N5bmNfcmVsZWFzZV9idWZmZXIgKHN0cnVjdCBnbF9zeW5jICpzeW5jLCBnYm9vbGVhbiByZW5kZXIpCit7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworCisgIGlmICghc3luYy0+cmVzdWx0LT5yZWxlYXNlZCkgeworICAgIHN5bmMtPnJlbGVhc2VkX3RzID0gZ19nZXRfbW9ub3RvbmljX3RpbWUgKCk7CisKKyAgICBpZiAoKGdpbnQpIChzeW5jLT5zaW5rLT5nbF9yZWxlYXNlZF9mcmFtZV9jb3VudCAtCisgICAgICAgICAgICBzeW5jLT5zaW5rLT5nbF9yZWFkeV9mcmFtZV9jb3VudCkgPiAwKSB7CisgICAgICBndWludCBkaWZmID0KKyAgICAgICAgICBzeW5jLT5zaW5rLT5nbF9yZWxlYXNlZF9mcmFtZV9jb3VudCAtCisgICAgICAgICAgc3luYy0+c2luay0+Z2xfcmVhZHlfZnJhbWVfY291bnQgLSAxdTsKKyAgICAgIHN5bmMtPnNpbmstPmdsX3JlYWR5X2ZyYW1lX2NvdW50ICs9IGRpZmY7CisgICAgICBHU1RfTE9HICgiZ2xfc3luYyAlcCBwb3NzaWJsZSBcJ29uX2ZyYW1lX2F2YWlsYWJsZVwnIGxpc3RlbmVyIG1pc3MgIgorICAgICAgICAgICJkZXRlY3RlZCwgYXR0ZW1wdGluZyB0byB3b3JrIGFyb3VuZC4gIEp1bXBpbmcgZm9yd2FyZCAldSAiCisgICAgICAgICAgImZyYW1lcyBmb3IgZnJhbWUgJXUiLCBzeW5jLCBkaWZmLCBzeW5jLT5nbF9mcmFtZV9ubyk7CisgICAgfQorCisgICAgR1NUX1RSQUNFICgiZ2xfc3luYyAlcCByZWxlYXNlX291dHB1dF9idWZmZXIgaWR4ICV1IGZyYW1lICV1IHJlbmRlciAlcyIsCisgICAgICAgIHN5bmMsIHN5bmMtPmJ1ZmZlcl9pZHgsIHN5bmMtPmdsX2ZyYW1lX25vLCByZW5kZXIgPyAiVFJVRSIgOiAiRkFMU0UiKTsKKworICAgIC8qIFJlbGVhc2UgdGhlIGZyYW1lIGludG8gdGhlIHN1cmZhY2UgKi8KKyAgICBzeW5jLT5zaW5rLT5nbF9yZWxlYXNlZF9mcmFtZV9jb3VudCsrOworICAgIGlmICghcmVuZGVyKSB7CisgICAgICAvKiBBZHZhbmNlIHRoZSByZWFkeSBjb3VudGVyIG91cnNlbHZlcyBpZiB3ZSBhcmVuJ3QgZ29pbmcgdG8gcmVuZGVyCisgICAgICAgKiBhbmQgdGhlcmVmb3JlIHJlY2VpdmUgYSBsaXN0ZW5lciBjYWxsYmFjayAqLworICAgICAgc3luYy0+c2luay0+Z2xfcmVhZHlfZnJhbWVfY291bnQrKzsKKyAgICB9CisKKyAgICBpZiAoIWdzdF9hbWNfY29kZWNfcmVsZWFzZV9vdXRwdXRfYnVmZmVyIChzeW5jLT5zaW5rLT5jb2RlYywKKyAgICAgICAgICAgIHN5bmMtPmJ1ZmZlcl9pZHgsIHJlbmRlciwgJmVycm9yKSkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc3luYy0+c2luaywKKyAgICAgICAgICAiZ2xfc3luYyAlcCBGYWlsZWQgdG8gcmVuZGVyIGJ1ZmZlciwgaW5kZXggJWQgZnJhbWUgJXUiLCBzeW5jLAorICAgICAgICAgIHN5bmMtPmJ1ZmZlcl9pZHgsIHN5bmMtPmdsX2ZyYW1lX25vKTsKKyAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBzeW5jLT5yZXN1bHQtPnJlbGVhc2VkID0gVFJVRTsKKyAgICBzeW5jLT5yZXN1bHQtPnJlbmRlcmVkID0gcmVuZGVyOworICB9CisKK291dDoKKyAgaWYgKGVycm9yKSB7CisgICAgaWYgKHN5bmMtPnNpbmstPmdsX2Vycm9yID09IE5VTEwpCisgICAgICBzeW5jLT5zaW5rLT5nbF9lcnJvciA9IGVycm9yOworICAgIGVsc2UKKyAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgIH0KK30KKworc3RhdGljIHZvaWQKK19nbF9zeW5jX3JlbGVhc2VfbmV4dF9idWZmZXIgKHN0cnVjdCBnbF9zeW5jICpzeW5jLCBnYm9vbGVhbiByZW5kZXIpCit7CisgIEdMaXN0ICpsOworCisgIGlmICgobCA9IF9maW5kX2dsX3N5bmNfZm9yX2ZyYW1lIChzeW5jLT5zaW5rLCBzeW5jLT5nbF9mcmFtZV9ubyArIDEpKSkgeworICAgIHN0cnVjdCBnbF9zeW5jICpuZXh0ID0gbC0+ZGF0YTsKKworICAgIF9nbF9zeW5jX3JlbGVhc2VfYnVmZmVyIChuZXh0LCByZW5kZXIpOworICB9IGVsc2UgeworICAgIEdTVF9UUkFDRSAoImdsX3N5bmMgJXAgbm8gbmV4dCBmcmFtZSBhdmFpbGFibGUiLCBzeW5jKTsKKyAgfQorfQorCisvKiBjYWxsZXIgc2hvdWxkIHJlbW92ZSBmcm9tIHRoZSBnbF9xdWV1ZSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCisgKiBfZ2xfc3luY19yZWxlYXNlX2J1ZmZlciBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgdGhpcyBmdW5jdGlvbiAqLworc3RhdGljIHZvaWQKK19nbF9zeW5jX3JlbmRlcl91bmxvY2tlZCAoc3RydWN0IGdsX3N5bmMgKnN5bmMpCit7CisgIEdzdFZpZGVvQWZmaW5lVHJhbnNmb3JtYXRpb25NZXRhICphZl9tZXRhOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgZ2Zsb2F0IG1hdHJpeFsxNl07CisgIGdpbnQ2NCB0cyA9IDA7CisKKyAgR1NUX1RSQUNFICgiZ2xfc3luYyAlcCByZXN1bHQgJXAgcmVuZGVyICh1cGRhdGVkOiV1KSIsIHN5bmMsIHN5bmMtPnJlc3VsdCwKKyAgICAgIHN5bmMtPnJlc3VsdC0+dXBkYXRlZCk7CisKKyAgaWYgKHN5bmMtPnJlc3VsdC0+dXBkYXRlZCB8fCAhc3luYy0+cmVzdWx0LT5yZW5kZXJlZCkKKyAgICByZXR1cm47CisKKyAgLyogRklYTUU6IGlmIHRoaXMgZXZlciBzdGFydHMgcmV0dXJuaW5nIHZhbGlkIHZhbHVlcyB3ZSBzaG91bGQgYXR0ZW1wdAorICAgKiB0byB1c2UgaXQgKi8KKyAgaWYgKCFnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9nZXRfdGltZXN0YW1wIChzeW5jLT5zdXJmYWNlLT50ZXh0dXJlLCAmdHMsCisgICAgICAgICAgJmVycm9yKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHN5bmMtPnNpbmssICJGYWlsZWQgdG8gdXBkYXRlIHRleHR1cmUgaW1hZ2UiKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUl9GUk9NX0VSUk9SIChzeW5jLT5zaW5rLCBlcnJvcik7CisgICAgZ290byBvdXQ7CisgIH0KKyAgR1NUX1RSQUNFICgiZ2xfc3luYyAlcCByZW5kZXJpbmcgdGltZXN0YW1wIGJlZm9yZSB1cGRhdGUgJSIgR19HSU5UNjRfRk9STUFULAorICAgICAgc3luYywgdHMpOworCisgIEdTVF9UUkFDRSAoImdsX3N5bmMgJXAgdXBkYXRlX3RleF9pbWFnZSIsIHN5bmMpOworICBpZiAoIWdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX3VwZGF0ZV90ZXhfaW1hZ2UgKHN5bmMtPnN1cmZhY2UtPnRleHR1cmUsCisgICAgICAgICAgJmVycm9yKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHN5bmMtPnNpbmssICJGYWlsZWQgdG8gdXBkYXRlIHRleHR1cmUgaW1hZ2UiKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUl9GUk9NX0VSUk9SIChzeW5jLT5zaW5rLCBlcnJvcik7CisgICAgZ290byBvdXQ7CisgIH0KKyAgR1NUX1RSQUNFICgiZ2xfc3luYyByZXN1bHQgJXAgdXBkYXRlZCIsIHN5bmMtPnJlc3VsdCk7CisgIHN5bmMtPnJlc3VsdC0+dXBkYXRlZCA9IFRSVUU7CisgIHN5bmMtPnNpbmstPmdsX2xhc3RfcmVuZGVyZWRfZnJhbWUgPSBzeW5jLT5nbF9mcmFtZV9ubzsKKworICBpZiAoIWdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX2dldF90aW1lc3RhbXAgKHN5bmMtPnN1cmZhY2UtPnRleHR1cmUsICZ0cywKKyAgICAgICAgICAmZXJyb3IpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc3luYy0+c2luaywgIkZhaWxlZCB0byB1cGRhdGUgdGV4dHVyZSBpbWFnZSIpOworICAgIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IgKHN5bmMtPnNpbmssIGVycm9yKTsKKyAgICBnb3RvIG91dDsKKyAgfQorICBHU1RfVFJBQ0UgKCJnbF9zeW5jICVwIHJlbmRlcmluZyB0aW1lc3RhbXAgYWZ0ZXIgdXBkYXRlICUiIEdfR0lOVDY0X0ZPUk1BVCwKKyAgICAgIHN5bmMsIHRzKTsKKworICBhZl9tZXRhID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fYWZmaW5lX3RyYW5zZm9ybWF0aW9uX21ldGEgKHN5bmMtPmJ1ZmZlcik7CisgIGlmICghYWZfbWV0YSkgeworICAgIEdTVF9XQVJOSU5HICgiRmFpbGVkIHRvIHJldHJlaXZlIHRoZSB0cmFuc2Zvcm1hdGlvbiBtZXRhIGZyb20gdGhlICIKKyAgICAgICAgImdsX3N5bmMgJXAgYnVmZmVyICVwIiwgc3luYywgc3luYy0+YnVmZmVyKTsKKyAgfSBlbHNlIGlmIChnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9nZXRfdHJhbnNmb3JtX21hdHJpeCAoc3luYy0+CisgICAgICAgICAgc3VyZmFjZS0+dGV4dHVyZSwgbWF0cml4LCAmZXJyb3IpKSB7CisKKyAgICBnc3RfdmlkZW9fYWZmaW5lX3RyYW5zZm9ybWF0aW9uX21ldGFfYXBwbHlfbWF0cml4IChhZl9tZXRhLCBtYXRyaXgpOworICAgIGdzdF92aWRlb19hZmZpbmVfdHJhbnNmb3JtYXRpb25fbWV0YV9hcHBseV9tYXRyaXggKGFmX21ldGEsIHlmbGlwX21hdHJpeCk7CisgIH0KKworICBHU1RfTE9HICgiZ2xfc3luYyAlcCBzdWNjZXNzZnVsbHkgdXBkYXRlZCBTdXJmYWNlVGV4dHVyZSAlcCBpbnRvICIKKyAgICAgICJPRVMgdGV4dHVyZSAldSIsIHN5bmMsIHN5bmMtPnN1cmZhY2UtPnRleHR1cmUsIHN5bmMtPm9lc19tZW0tPnRleF9pZCk7CisKK291dDoKKyAgaWYgKGVycm9yKSB7CisgICAgaWYgKHN5bmMtPnNpbmstPmdsX2Vycm9yID09IE5VTEwpCisgICAgICBzeW5jLT5zaW5rLT5nbF9lcnJvciA9IGVycm9yOworICAgIGVsc2UKKyAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgIH0KKworICBfZ2xfc3luY19yZWxlYXNlX25leHRfYnVmZmVyIChzeW5jLCBUUlVFKTsKK30KKworc3RhdGljIGdib29sZWFuCitfYW1jX2dsX3Bvc3NpYmx5X3dhaXRfZm9yX2dsX3N5bmMgKHN0cnVjdCBnbF9zeW5jICpzeW5jLCBnaW50NjQgZW5kX3RpbWUpCit7CisgIEdTVF9UUkFDRSAoImdsX3N5bmMgJXAgd2FpdGluZyBmb3IgZnJhbWUgJXUgY3VycmVudCAldSB1cGRhdGVkICV1ICIsIHN5bmMsCisgICAgICBzeW5jLT5nbF9mcmFtZV9ubywgc3luYy0+c2luay0+Z2xfcmVhZHlfZnJhbWVfY291bnQsCisgICAgICBzeW5jLT5yZXN1bHQtPnVwZGF0ZWQpOworCisgIGlmICgoZ2ludCkgKHN5bmMtPnNpbmstPmdsX2xhc3RfcmVuZGVyZWRfZnJhbWUgLSBzeW5jLT5nbF9mcmFtZV9ubykgPiAwKSB7CisgICAgR1NUX0VSUk9SICgiZ2xfc3luYyAlcCB1bnN1Y2Nlc3NmdWxseSB3YWl0ZWQgZm9yIGZyYW1lICV1LiBvdXQgb2Ygb3JkZXIgIgorICAgICAgICAid2FpdCBkZXRlY3RlZCIsIHN5bmMsIHN5bmMtPmdsX2ZyYW1lX25vKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICAvKiBUaGUgbnVtYmVyIG9mIGZyYW1lIGNhbGxiYWNrcyAoZ2xfcmVhZHlfZnJhbWVfY291bnQpIGlzIG5vdCBhIGRpcmVjdAorICAgKiByZWxhdGlvbnNoaXAgd2l0aCB0aGUgbnVtYmVyIG9mIHB1c2hlZCBidWZmZXJzIChnbF9wdXNoZWRfZnJhbWVfY291bnQpCisgICAqIG9yIGV2ZW4sIHRoZSBudW1iZXIgb2YgcmVsZWFzZWQgYnVmZmVycyAoZ2xfcmVsZWFzZWRfZnJhbWVfY291bnQpCisgICAqIGFzLCBmcm9tIHRoZSBmcmFtZXdvcmtzL25hdGl2ZS9pbmNsdWRlL2d1aS9Db25zdW1lckJhc2UuaCBmaWxlLAorICAgKgorICAgKiAgICAiLi4uZnJhbWVzIHRoYXQgYXJlIHF1ZXVlZCB3aGlsZSBpbiBhc3luY2hyb25vdXMgbW9kZSBvbmx5IHRyaWdnZXIgdGhlCisgICAqICAgIGNhbGxiYWNrIGlmIG5vIHByZXZpb3VzIGZyYW1lcyBhcmUgcGVuZGluZy4iCisgICAqCisgICAqIEFzIGEgcmVzdWx0LCB3ZSBuZWVkIHRvIGFkdmFuY2UgdGhlIHJlYWR5IGNvdW50ZXIgc29tZWhvdyBvdXJzZWx2ZXMgd2hlbgorICAgKiBzdWNoIGV2ZW50cyBoYXBwZW4uIFRoZXJlIGlzIG5vIHJlbGlhYmxlIHdheSBvZiBrbm93aW5nIHdoZW4vaWYgdGhlIGZyYW1lCisgICAqIGxpc3RlbmVyIGlzIGdvaW5nIHRvIGZpcmUuICBUaGUgb25seSB1bmlxdWV1IGlkZW50aWZpZXIsCisgICAqIFN1cmZhY2VUZXh0dXJlOjpnZXRfdGltZXN0YW1wIHNlZW1zIHRvIGFsd2F5cyByZXR1cm4gMC4KKyAgICoKKyAgICogVGhlIG1heGltdW0gcXVldWUgc2l6ZSBhcyBkZWZpbmVkIGluCisgICAqIGZyYW1ld29ya3MvbmF0aXZlL2luY2x1ZGUvZ3VpL0J1ZmZlclF1ZXVlLmgKKyAgICogaXMgMzIgb2Ygd2hpY2ggYSBtYXhpbXVtIG9mIDMwIGNhbiBiZSBhY3F1aXJlZCBhdCBhIHRpbWUgc28gd2UgcGlja2VkIGEKKyAgICogbnVtYmVyIGxlc3MgdGhhbiB0aGF0IHRvIHdhaXQgZm9yIGJlZm9yZSB1cGRhdGluZyB0aGUgcmVhZHkgZnJhbWUgY291bnQuCisgICAqLworCisgIHdoaWxlICghc3luYy0+cmVzdWx0LT51cGRhdGVkCisgICAgICAmJiAoZ2ludCkgKHN5bmMtPnNpbmstPmdsX3JlYWR5X2ZyYW1lX2NvdW50IC0gc3luYy0+Z2xfZnJhbWVfbm8pIDwgMCkgeworICAgIC8qIFRoZSB0aW1lIGxpbWl0IGlzIG5lZWQgb3RoZXJ3aXNlIHdoZW4gYW1jIGRlY2lkZXMgdG8gbm90IGVtaXQgdGhlCisgICAgICogZnJhbWUgbGlzdGVuZXIgKHNheSwgb24gb3JpZW50YXRpb24gY2hhbmdlcykgd2UgZG9uJ3Qgd2FpdCBmb3JlZXZlciAqLworICAgIGlmIChlbmRfdGltZSA9PSAtMSB8fCAhZ19jb25kX3dhaXRfdW50aWwgKCZzeW5jLT5zaW5rLT5nbF9jb25kLAorICAgICAgICAgICAgJnN5bmMtPnNpbmstPmdsX2xvY2ssIGVuZF90aW1lKSkgeworICAgICAgR1NUX0xPRyAoImdsX3N5bmMgJXAgdW5zdWNjZXNzZnVsbHkgd2FpdGVkIGZvciBmcmFtZSAldSIsIHN5bmMsCisgICAgICAgICAgc3luYy0+Z2xfZnJhbWVfbm8pOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfQorICBHU1RfTE9HICgiZ2xfc3luYyAlcCBzdWNjZXNzZnVsbHkgd2FpdGVkIGZvciBmcmFtZSAldSIsIHN5bmMsCisgICAgICBzeW5jLT5nbF9mcmFtZV9ubyk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2FtY19nbF9pdGVyYXRlX3F1ZXVlX3VubG9ja2VkIChHc3RHTFN5bmNNZXRhICogc3luY19tZXRhLCBnYm9vbGVhbiB3YWl0KQoreworICBzdHJ1Y3QgZ2xfc3luYyAqc3luYyA9IHN5bmNfbWV0YS0+ZGF0YTsKKyAgc3RydWN0IGdsX3N5bmMgKnRtcDsKKyAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKKyAgZ2ludDY0IGVuZF90aW1lOworCisgIHdoaWxlICgodG1wID0gZ19xdWV1ZV9wZWVrX2hlYWQgKHN5bmMtPnNpbmstPmdsX3F1ZXVlKSkpIHsKKyAgICAvKiBza2lwIGZyYW1lcyB0aGF0IGFyZSBhaGVhZCBvZiB0aGUgY3VycmVudCB3YWl0IGZyYW1lICovCisgICAgaWYgKChnaW50KSAoc3luYy0+Z2xfZnJhbWVfbm8gLSB0bXAtPmdsX2ZyYW1lX25vKSA8IDApIHsKKyAgICAgIEdTVF9UUkFDRSAoImdsX3N5bmMgJXAgZnJhbWUgJXUgaXMgYWhlYWQgb2YgZ2xfc3luYyAlcCBmcmFtZSAldSIsIHRtcCwKKyAgICAgICAgICB0bXAtPmdsX2ZyYW1lX25vLCBzeW5jLCBzeW5jLT5nbF9mcmFtZV9ubyk7CisgICAgICBicmVhazsKKyAgICB9CisKKyAgICBfZ2xfc3luY19yZWxlYXNlX2J1ZmZlciAodG1wLCB3YWl0KTsKKworICAgIC8qIEZyYW1lcyBhcmUgY3VycmVudGx5IHB1c2hlZCBpbiBvcmRlciBhbmQgd2FpdHMgbmVlZCB0byBiZSBwZXJmb3JtZWQKKyAgICAgKiBpbiB0aGUgc2FtZSBvcmRlciAqLworCisgICAgZW5kX3RpbWUgPSB3YWl0ID8gMzAgKiBHX1RJTUVfU1BBTl9NSUxMSVNFQ09ORCArIHRtcC0+cmVsZWFzZWRfdHMgOiAtMTsKKyAgICBpZiAoIV9hbWNfZ2xfcG9zc2libHlfd2FpdF9mb3JfZ2xfc3luYyAodG1wLCBlbmRfdGltZSkpCisgICAgICByZXQgPSBGQUxTRTsKKworICAgIF9nbF9zeW5jX3JlbmRlcl91bmxvY2tlZCAodG1wKTsKKworICAgIGdfcXVldWVfcG9wX2hlYWQgKHRtcC0+c2luay0+Z2xfcXVldWUpOworICAgIF9nbF9zeW5jX3VucmVmICh0bXApOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RydWN0IGdsX3dhaXQKK3sKKyAgR3N0R0xTeW5jTWV0YSAqc3luY19tZXRhOworICBnYm9vbGVhbiByZXQ7Cit9OworCitzdGF0aWMgdm9pZAorX2FtY19nbF93YWl0X2dsIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBzdHJ1Y3QgZ2xfd2FpdCAqd2FpdCkKK3sKKyAgc3RydWN0IGdsX3N5bmMgKnN5bmMgPSB3YWl0LT5zeW5jX21ldGEtPmRhdGE7CisKKyAgZ19tdXRleF9sb2NrICgmc3luYy0+c2luay0+Z2xfbG9jayk7CisgIHdhaXQtPnJldCA9IF9hbWNfZ2xfaXRlcmF0ZV9xdWV1ZV91bmxvY2tlZCAod2FpdC0+c3luY19tZXRhLCBUUlVFKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzeW5jLT5zaW5rLT5nbF9sb2NrKTsKK30KKworc3RhdGljIHZvaWQKK19hbWNfZ2xfd2FpdCAoR3N0R0xTeW5jTWV0YSAqIHN5bmNfbWV0YSwgR3N0R0xDb250ZXh0ICogY29udGV4dCkKK3sKKyAgc3RydWN0IGdsX3N5bmMgKnN5bmMgPSBzeW5jX21ldGEtPmRhdGE7CisgIHN0cnVjdCBnbF93YWl0IHdhaXQ7CisKKyAgd2FpdC5zeW5jX21ldGEgPSBzeW5jX21ldGE7CisgIHdhaXQucmV0ID0gRkFMU0U7CisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGNvbnRleHQsCisgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2FtY19nbF93YWl0X2dsLCAmd2FpdCk7CisKKyAgaWYgKCF3YWl0LnJldCkKKyAgICBHU1RfV0FSTklORyAoImdsX3N5bmMgJXAgY291bGQgbm90IHdhaXQgZm9yIGZyYW1lLCB0b29rIHRvbyBsb25nIiwgc3luYyk7Cit9CisKK3N0YXRpYyB2b2lkCitfYW1jX2dsX2NvcHkgKEdzdEdMU3luY01ldGEgKiBzcmMsIEdzdEJ1ZmZlciAqIHNidWZmZXIsIEdzdEdMU3luY01ldGEgKiBkZXN0LAorICAgIEdzdEJ1ZmZlciAqIGRidWZmZXIpCit7CisgIHN0cnVjdCBnbF9zeW5jICpzeW5jID0gc3JjLT5kYXRhOworICBzdHJ1Y3QgZ2xfc3luYyAqdG1wOworCisgIHRtcCA9IGdfbmV3MCAoc3RydWN0IGdsX3N5bmMsIDEpOworCisgIEdTVF9UUkFDRSAoImNvcHlpbmcgZ2xfc3luYyAlcCB0byAlcCIsIHN5bmMsIHRtcCk7CisKKyAgZ19tdXRleF9sb2NrICgmc3luYy0+c2luay0+Z2xfbG9jayk7CisKKyAgdG1wLT5yZWZjb3VudCA9IDE7CisgIHRtcC0+c2luayA9IHN5bmMtPnNpbms7CisgIHRtcC0+YnVmZmVyID0gZGJ1ZmZlcjsKKyAgdG1wLT5vZXNfbWVtID0gKEdzdEdMTWVtb3J5ICopIGdzdF9tZW1vcnlfcmVmICgoR3N0TWVtb3J5ICopIHN5bmMtPm9lc19tZW0pOworICB0bXAtPnN1cmZhY2UgPSBnX29iamVjdF9yZWYgKHN5bmMtPnN1cmZhY2UpOworICB0bXAtPmdsX2ZyYW1lX25vID0gc3luYy0+Z2xfZnJhbWVfbm87CisgIHRtcC0+cmVsZWFzZWRfdHMgPSBzeW5jLT5yZWxlYXNlZF90czsKKyAgdG1wLT5yZXN1bHQgPSBzeW5jLT5yZXN1bHQ7CisgIF9nbF9zeW5jX3Jlc3VsdF9yZWYgKHRtcC0+cmVzdWx0KTsKKyAgZGVzdC0+ZGF0YSA9IHRtcDsKKworICBnX211dGV4X3VubG9jayAoJnN5bmMtPnNpbmstPmdsX2xvY2spOworfQorCitzdGF0aWMgdm9pZAorX2FtY19nbF9yZW5kZXJfb25fZnJlZSAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xTeW5jTWV0YSAqIHN5bmNfbWV0YSkKK3sKKyAgc3RydWN0IGdsX3N5bmMgKnN5bmMgPSBzeW5jX21ldGEtPmRhdGE7CisKKyAgZ19tdXRleF9sb2NrICgmc3luYy0+c2luay0+Z2xfbG9jayk7CisgIC8qIGp1c3QgcmVuZGVyIGFzIG1hbnkgZnJhbWVzIGFzIHdlIGhhdmUgKi8KKyAgX2FtY19nbF9pdGVyYXRlX3F1ZXVlX3VubG9ja2VkIChzeW5jX21ldGEsIEZBTFNFKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzeW5jLT5zaW5rLT5nbF9sb2NrKTsKK30KKworc3RhdGljIHZvaWQKK19hbWNfZ2xfZnJlZSAoR3N0R0xTeW5jTWV0YSAqIHN5bmNfbWV0YSwgR3N0R0xDb250ZXh0ICogY29udGV4dCkKK3sKKyAgc3RydWN0IGdsX3N5bmMgKnN5bmMgPSBzeW5jX21ldGEtPmRhdGE7CisKKyAgLyogVGhlIHdhaXQgcmVuZGVyIHF1ZXVlIGluc2lkZSBhbmRyb2lkIGlzIG5vdCB2ZXJ5IGRlZXAgc28gd2hlbiB3ZSBkcm9wCisgICAqIGZyYW1lcyB3ZSBuZWVkIHRvIHNpZ25hbCB0aGF0IHdlIGhhdmUgcmVuZGVyZWQgdGhlbSBpZiB3ZSBoYXZlIGFueSBjaGFuY2UKKyAgICogb2Yga2VlcGluZyB1cCBiZXR3ZWVuIHRoZSBkZWNvZGVyLCB0aGUgYW5kcm9pZCBHTCBxdWV1ZSBhbmQgZG93bnN0cmVhbQorICAgKiBPcGVuR0wuIElmIHdlIGRvbid0IGRvIHRoaXMsIG9uY2Ugd2Ugc3RhcnQgZHJvcHBpbmcgZnJhbWVzIGRvd25zdHJlYW0sCisgICAqIGl0IGlzIHZlcnkgbmVhciB0byBpbXBvc3NpYmxlIGZvciB0aGUgcGlwZWxpbmUgdG8gY2F0Y2ggdXAuICovCisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGNvbnRleHQsCisgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2FtY19nbF9yZW5kZXJfb25fZnJlZSwgc3luY19tZXRhKTsKKyAgX2dsX3N5bmNfdW5yZWYgKHN5bmMpOworfQorCiBzdGF0aWMgdm9pZAogZ3N0X2FtY192aWRlb19kZWNfbG9vcCAoR3N0QW1jVmlkZW9EZWMgKiBzZWxmKQogewpAQCAtNTk1LDYgKzEyMjksNyBAQAogICBHc3RBbWNCdWZmZXJJbmZvIGJ1ZmZlcl9pbmZvOwogICBnaW50IGlkeDsKICAgR0Vycm9yICplcnIgPSBOVUxMOworICBnYm9vbGVhbiByZWxlYXNlX2J1ZmZlciA9IFRSVUU7CiAKICAgR1NUX1ZJREVPX0RFQ09ERVJfU1RSRUFNX0xPQ0sgKHNlbGYpOwogCkBAIC02MTIsNiArMTI0Nyw4IEBACiAgIEdTVF9WSURFT19ERUNPREVSX1NUUkVBTV9MT0NLIChzZWxmKTsKICAgLyp9ICovCiAKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgImRlcXVldWVPdXRwdXRCdWZmZXIoKSByZXR1cm5lZCAlZCAoMHgleCkiLCBpZHgsIGlkeCk7CisKICAgaWYgKGlkeCA8IDApIHsKICAgICBpZiAoc2VsZi0+Zmx1c2hpbmcpIHsKICAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOwpAQCAtNjc1LDE4ICsxMzEyLDExNiBAQAogICBpc19lb3MgPSAhICEoYnVmZmVyX2luZm8uZmxhZ3MgJiBCVUZGRVJfRkxBR19FTkRfT0ZfU1RSRUFNKTsKIAogICBidWYgPSBnc3RfYW1jX2NvZGVjX2dldF9vdXRwdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCAmZXJyKTsKLSAgaWYgKCFidWYpCisgIGlmIChlcnIpCiAgICAgZ290byBmYWlsZWRfdG9fZ2V0X291dHB1dF9idWZmZXI7CiAKKyAgaWYgKHNlbGYtPmNvZGVjX2NvbmZpZyAhPSBBTUNfQ09ERUNfQ09ORklHX1dJVEhfU1VSRkFDRSAmJiAhYnVmKQorICAgIGdvdG8gZ290X251bGxfb3V0cHV0X2J1ZmZlcjsKKwogICBpZiAoZnJhbWUKICAgICAgICYmIChkZWFkbGluZSA9CiAgICAgICAgICAgZ3N0X3ZpZGVvX2RlY29kZXJfZ2V0X21heF9kZWNvZGVfdGltZSAoR1NUX1ZJREVPX0RFQ09ERVIgKHNlbGYpLAogICAgICAgICAgICAgICBmcmFtZSkpIDwgMCkgewogICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoc2VsZiwKLSAgICAgICAgIkZyYW1lIGlzIHRvbyBsYXRlLCBkcm9wcGluZyAoZGVhZGxpbmUgJSIgR1NUX1RJTUVfRk9STUFUICIpIiwKLSAgICAgICAgR1NUX1RJTUVfQVJHUyAoLWRlYWRsaW5lKSk7CisgICAgICAgICJGcmFtZSBpcyB0b28gbGF0ZSwgZHJvcHBpbmcgKGRlYWRsaW5lICUiIEdTVF9TVElNRV9GT1JNQVQgIikiLAorICAgICAgICBHU1RfU1RJTUVfQVJHUyAoZGVhZGxpbmUpKTsKICAgICBmbG93X3JldCA9IGdzdF92aWRlb19kZWNvZGVyX2Ryb3BfZnJhbWUgKEdTVF9WSURFT19ERUNPREVSIChzZWxmKSwgZnJhbWUpOwotICB9IGVsc2UgaWYgKCFmcmFtZSAmJiBidWZmZXJfaW5mby5zaXplID4gMCkgeworICB9IGVsc2UgaWYgKGZyYW1lICYmIHNlbGYtPmNvZGVjX2NvbmZpZyA9PSBBTUNfQ09ERUNfQ09ORklHX1dJVEhfU1VSRkFDRSkgeworICAgIEdzdEJ1ZmZlciAqb3V0YnVmOworICAgIEdzdEdMU3luY01ldGEgKnN5bmNfbWV0YTsKKyAgICBHc3RWaWRlb0NvZGVjU3RhdGUgKnN0YXRlOworICAgIHN0cnVjdCBnbF9zeW5jICpzeW5jOworICAgIGdib29sZWFuIGZpcnN0X2J1ZmZlciA9IEZBTFNFOworCisgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+Z2xfbG9jayk7CisgICAgaWYgKHNlbGYtPmdsX2Vycm9yKSB7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUl9GUk9NX0VSUk9SIChzZWxmLCBzZWxmLT5nbF9lcnJvcik7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmdsX2xvY2spOworICAgICAgZ290byBnbF9vdXRwdXRfZXJyb3I7CisgICAgfQorICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+Z2xfbG9jayk7CisKKyAgICBvdXRidWYgPSBnc3RfYnVmZmVyX25ldyAoKTsKKworICAgIHN0YXRlID0gZ3N0X3ZpZGVvX2RlY29kZXJfZ2V0X291dHB1dF9zdGF0ZSAoR1NUX1ZJREVPX0RFQ09ERVIgKHNlbGYpKTsKKworICAgIGlmICghc2VsZi0+b2VzX21lbSkgeworICAgICAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICpiYXNlX21lbV9hbGxvYzsKKyAgICAgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7CisKKyAgICAgIGJhc2VfbWVtX2FsbG9jID0KKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChnc3RfYWxsb2NhdG9yX2ZpbmQKKyAgICAgICAgICAoR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRSkpOworCisgICAgICBwYXJhbXMgPSBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3IChzZWxmLT5nbF9jb250ZXh0LCBOVUxMLAorICAgICAgICAgICZzdGF0ZS0+aW5mbywgMCwgTlVMTCwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUyk7CisKKyAgICAgIHNlbGYtPm9lc19tZW0gPSAoR3N0R0xNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChiYXNlX21lbV9hbGxvYywKKyAgICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgICAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICAgICAgZ3N0X29iamVjdF91bnJlZiAoYmFzZV9tZW1fYWxsb2MpOworCisgICAgICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChzZWxmLT5nbF9jb250ZXh0LAorICAgICAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfYXR0YWNoX21lbV90b19jb250ZXh0LCBzZWxmKTsKKworICAgICAgZmlyc3RfYnVmZmVyID0gVFJVRTsKKyAgICB9CisKKyAgICBnc3RfdmlkZW9fY29kZWNfc3RhdGVfdW5yZWYgKHN0YXRlKTsKKworICAgIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAob3V0YnVmLAorICAgICAgICBnc3RfbWVtb3J5X3JlZiAoKEdzdE1lbW9yeSAqKSBzZWxmLT5vZXNfbWVtKSk7CisKKyAgICBzeW5jID0gZ19uZXcwIChzdHJ1Y3QgZ2xfc3luYywgMSk7CisgICAgc3luYy0+cmVmY291bnQgPSAxOworICAgIHN5bmMtPnNpbmsgPSBzZWxmOworICAgIHN5bmMtPmJ1ZmZlciA9IG91dGJ1ZjsKKyAgICBzeW5jLT5zdXJmYWNlID0gZ19vYmplY3RfcmVmIChzZWxmLT5zdXJmYWNlKTsKKyAgICBzeW5jLT5vZXNfbWVtID0KKyAgICAgICAgKEdzdEdMTWVtb3J5ICopIGdzdF9tZW1vcnlfcmVmICgoR3N0TWVtb3J5ICopIHNlbGYtPm9lc19tZW0pOworICAgIHN5bmMtPmJ1ZmZlcl9pZHggPSBpZHg7CisgICAgc3luYy0+cmVzdWx0ID0gZ19uZXcwIChzdHJ1Y3QgZ2xfc3luY19yZXN1bHQsIDEpOworICAgIHN5bmMtPnJlc3VsdC0+cmVmY291bnQgPSAxOworICAgIHN5bmMtPnJlc3VsdC0+dXBkYXRlZCA9IEZBTFNFOworCisgICAgR1NUX1RSQUNFICgibmV3IGdsX3N5bmMgJXAgcmVzdWx0ICVwIiwgc3luYywgc3luYy0+cmVzdWx0KTsKKworICAgIHN5bmNfbWV0YSA9IGdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YV9mdWxsIChzZWxmLT5nbF9jb250ZXh0LCBvdXRidWYsCisgICAgICAgIHN5bmMpOworICAgIHN5bmNfbWV0YS0+c2V0X3N5bmMgPSBfYW1jX2dsX3NldF9zeW5jOworICAgIHN5bmNfbWV0YS0+d2FpdCA9IF9hbWNfZ2xfd2FpdDsKKyAgICBzeW5jX21ldGEtPndhaXRfY3B1ID0gX2FtY19nbF93YWl0OworICAgIHN5bmNfbWV0YS0+Y29weSA9IF9hbWNfZ2xfY29weTsKKyAgICBzeW5jX21ldGEtPmZyZWUgPSBfYW1jX2dsX2ZyZWU7CisKKyAgICAvKiBUaGUgbWV0YSBuZWVkcyB0byBiZSBjcmVhdGVkIG5vdzoKKyAgICAgKiBMYXRlciAoaW4gX2dsX3N5bmNfcmVuZGVyX3VubG9ja2VkKSB0aGUgYnVmZmVyIHdpbGwgYmUgbG9ja2VkLgorICAgICAqLworICAgIGdzdF9idWZmZXJfYWRkX3ZpZGVvX2FmZmluZV90cmFuc2Zvcm1hdGlvbl9tZXRhIChvdXRidWYpOworCisgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+Z2xfbG9jayk7CisKKyAgICBzZWxmLT5nbF9wdXNoZWRfZnJhbWVfY291bnQrKzsKKyAgICBzeW5jLT5nbF9mcmFtZV9ubyA9IHNlbGYtPmdsX3B1c2hlZF9mcmFtZV9jb3VudDsKKyAgICBnX3F1ZXVlX3B1c2hfdGFpbCAoc2VsZi0+Z2xfcXVldWUsIF9nbF9zeW5jX3JlZiAoc3luYykpOworCisgICAgaWYgKGZpcnN0X2J1ZmZlcikgeworICAgICAgX2dsX3N5bmNfcmVsZWFzZV9idWZmZXIgKHN5bmMsIFRSVUUpOworICAgICAgaWYgKHNlbGYtPmdsX2Vycm9yKSB7CisgICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKG91dGJ1Zik7CisgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+Z2xfbG9jayk7CisgICAgICAgIGdvdG8gZ2xfb3V0cHV0X2Vycm9yOworICAgICAgfQorICAgIH0KKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmdsX2xvY2spOworCisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInB1c2ggR0wgZnJhbWUgJXUiLCBzeW5jLT5nbF9mcmFtZV9ubyk7CisgICAgZnJhbWUtPm91dHB1dF9idWZmZXIgPSBvdXRidWY7CisgICAgZmxvd19yZXQgPSBnc3RfdmlkZW9fZGVjb2Rlcl9maW5pc2hfZnJhbWUgKEdTVF9WSURFT19ERUNPREVSIChzZWxmKSwgZnJhbWUpOworCisgICAgcmVsZWFzZV9idWZmZXIgPSBGQUxTRTsKKyAgfSBlbHNlIGlmIChzZWxmLT5jb2RlY19jb25maWcgPT0gQU1DX0NPREVDX0NPTkZJR19XSVRIT1VUX1NVUkZBQ0UgJiYgIWZyYW1lCisgICAgICAmJiBidWZmZXJfaW5mby5zaXplID4gMCkgewogICAgIEdzdEJ1ZmZlciAqb3V0YnVmOwogCiAgICAgLyogVGhpcyBzb21ldGltZXMgaGFwcGVucyBhdCBFT1Mgb3IgaWYgdGhlIGlucHV0IGlzIG5vdCBwcm9wZXJseSBmcmFtZWQsCkBAIC03MDAsNyArMTQzNSw3IEBACiAKICAgICBpZiAoIWdzdF9hbWNfdmlkZW9fZGVjX2ZpbGxfYnVmZmVyIChzZWxmLCBidWYsICZidWZmZXJfaW5mbywgb3V0YnVmKSkgewogICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAob3V0YnVmKTsKLSAgICAgIGlmICghZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsICZlcnIpKQorICAgICAgaWYgKCFnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgRkFMU0UsICZlcnIpKQogICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiRmFpbGVkIHRvIHJlbGVhc2Ugb3V0cHV0IGJ1ZmZlciBpbmRleCAlZCIsCiAgICAgICAgICAgICBpZHgpOwogICAgICAgaWYgKGVyciAmJiAhc2VsZi0+Zmx1c2hpbmcpCkBAIC03MTUsMTEgKzE0NTAsMTMgQEAKICAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlIChidWZmZXJfaW5mby5wcmVzZW50YXRpb25fdGltZV91cywgR1NUX1VTRUNPTkQsCiAgICAgICAgIDEpOwogICAgIGZsb3dfcmV0ID0gZ3N0X3BhZF9wdXNoIChHU1RfVklERU9fREVDT0RFUl9TUkNfUEFEIChzZWxmKSwgb3V0YnVmKTsKLSAgfSBlbHNlIGlmIChidWZmZXJfaW5mby5zaXplID4gMCkgewotICAgIGlmICgoZmxvd19yZXQgPSBnc3RfdmlkZW9fZGVjb2Rlcl9hbGxvY2F0ZV9vdXRwdXRfZnJhbWUgKEdTVF9WSURFT19ERUNPREVSCi0gICAgICAgICAgICAgICAgKHNlbGYpLCBmcmFtZSkpICE9IEdTVF9GTE9XX09LKSB7CisgIH0gZWxzZSBpZiAoc2VsZi0+Y29kZWNfY29uZmlnID09IEFNQ19DT0RFQ19DT05GSUdfV0lUSE9VVF9TVVJGQUNFICYmIGZyYW1lCisgICAgICAmJiBidWZmZXJfaW5mby5zaXplID4gMCkgeworICAgIGlmICgoZmxvd19yZXQgPQorICAgICAgICAgICAgZ3N0X3ZpZGVvX2RlY29kZXJfYWxsb2NhdGVfb3V0cHV0X2ZyYW1lIChHU1RfVklERU9fREVDT0RFUiAoc2VsZiksCisgICAgICAgICAgICAgICAgZnJhbWUpKSAhPSBHU1RfRkxPV19PSykgewogICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIiKTsKLSAgICAgIGlmICghZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsICZlcnIpKQorICAgICAgaWYgKCFnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgRkFMU0UsICZlcnIpKQogICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiRmFpbGVkIHRvIHJlbGVhc2Ugb3V0cHV0IGJ1ZmZlciBpbmRleCAlZCIsCiAgICAgICAgICAgICBpZHgpOwogICAgICAgaWYgKGVyciAmJiAhc2VsZi0+Zmx1c2hpbmcpCkBAIC03MzQsNyArMTQ3MSw3IEBACiAgICAgICAgICAgICBmcmFtZS0+b3V0cHV0X2J1ZmZlcikpIHsKICAgICAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJmZyYW1lLT5vdXRwdXRfYnVmZmVyLCBOVUxMKTsKICAgICAgIGdzdF92aWRlb19kZWNvZGVyX2Ryb3BfZnJhbWUgKEdTVF9WSURFT19ERUNPREVSIChzZWxmKSwgZnJhbWUpOwotICAgICAgaWYgKCFnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgJmVycikpCisgICAgICBpZiAoIWdzdF9hbWNfY29kZWNfcmVsZWFzZV9vdXRwdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCBGQUxTRSwgJmVycikpCiAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJGYWlsZWQgdG8gcmVsZWFzZSBvdXRwdXQgYnVmZmVyIGluZGV4ICVkIiwKICAgICAgICAgICAgIGlkeCk7CiAgICAgICBpZiAoZXJyICYmICFzZWxmLT5mbHVzaGluZykKQEAgLTc1MCwxNSArMTQ4NywxOSBAQAogICAgIGZsb3dfcmV0ID0gZ3N0X3ZpZGVvX2RlY29kZXJfZHJvcF9mcmFtZSAoR1NUX1ZJREVPX0RFQ09ERVIgKHNlbGYpLCBmcmFtZSk7CiAgIH0KIAotICBnc3RfYW1jX2J1ZmZlcl9mcmVlIChidWYpOwotICBidWYgPSBOVUxMOworICBpZiAoYnVmKSB7CisgICAgZ3N0X2FtY19idWZmZXJfZnJlZSAoYnVmKTsKKyAgICBidWYgPSBOVUxMOworICB9CiAKLSAgaWYgKCFnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgJmVycikpIHsKLSAgICBpZiAoc2VsZi0+Zmx1c2hpbmcpIHsKLSAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOwotICAgICAgZ290byBmbHVzaGluZzsKKyAgaWYgKHJlbGVhc2VfYnVmZmVyKSB7CisgICAgaWYgKCFnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgRkFMU0UsICZlcnIpKSB7CisgICAgICBpZiAoc2VsZi0+Zmx1c2hpbmcpIHsKKyAgICAgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CisgICAgICAgIGdvdG8gZmx1c2hpbmc7CisgICAgICB9CisgICAgICBnb3RvIGZhaWxlZF9yZWxlYXNlOwogICAgIH0KLSAgICBnb3RvIGZhaWxlZF9yZWxlYXNlOwogICB9CiAKICAgaWYgKGlzX2VvcyB8fCBmbG93X3JldCA9PSBHU1RfRkxPV19FT1MpIHsKQEAgLTg4MCw2ICsxNjIxLDIxIEBACiAgICAgcmV0dXJuOwogICB9CiAKK2dvdF9udWxsX291dHB1dF9idWZmZXI6CisgIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2VsZiwgTElCUkFSWSwgU0VUVElOR1MsIChOVUxMKSwKKyAgICAgICAgKCJHb3Qgbm8gb3V0cHV0IGJ1ZmZlciIpKTsKKyAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9WSURFT19ERUNPREVSX1NSQ19QQUQgKHNlbGYpLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSk7CisgICAgZ3N0X3BhZF9wYXVzZV90YXNrIChHU1RfVklERU9fREVDT0RFUl9TUkNfUEFEIChzZWxmKSk7CisgICAgc2VsZi0+ZG93bnN0cmVhbV9mbG93X3JldCA9IEdTVF9GTE9XX0VSUk9SOworICAgIEdTVF9WSURFT19ERUNPREVSX1NUUkVBTV9VTkxPQ0sgKHNlbGYpOworICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmRyYWluX2xvY2spOworICAgIHNlbGYtPmRyYWluaW5nID0gRkFMU0U7CisgICAgZ19jb25kX2Jyb2FkY2FzdCAoJnNlbGYtPmRyYWluX2NvbmQpOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+ZHJhaW5fbG9jayk7CisgICAgcmV0dXJuOworICB9CisKIGludmFsaWRfYnVmZmVyOgogICB7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCkBAIC04OTQsNiArMTY1MCwyMiBAQAogICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+ZHJhaW5fbG9jayk7CiAgICAgcmV0dXJuOwogICB9CitnbF9vdXRwdXRfZXJyb3I6CisgIHsKKyAgICBpZiAoYnVmKSB7CisgICAgICBnc3RfYW1jX2J1ZmZlcl9mcmVlIChidWYpOworICAgICAgYnVmID0gTlVMTDsKKyAgICB9CisgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfVklERU9fREVDT0RFUl9TUkNfUEFEIChzZWxmKSwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOworICAgIGdzdF9wYWRfcGF1c2VfdGFzayAoR1NUX1ZJREVPX0RFQ09ERVJfU1JDX1BBRCAoc2VsZikpOworICAgIHNlbGYtPmRvd25zdHJlYW1fZmxvd19yZXQgPSBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKKyAgICBHU1RfVklERU9fREVDT0RFUl9TVFJFQU1fVU5MT0NLIChzZWxmKTsKKyAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5kcmFpbl9sb2NrKTsKKyAgICBzZWxmLT5kcmFpbmluZyA9IEZBTFNFOworICAgIGdfY29uZF9icm9hZGNhc3QgKCZzZWxmLT5kcmFpbl9jb25kKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmRyYWluX2xvY2spOworICAgIHJldHVybjsKKyAgfQogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KQEAgLTk0NiwxMSArMTcxOCw3MCBAQAogICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIGpvYmplY3QKK2dzdF9hbWNfdmlkZW9fZGVjX25ld19vbl9mcmFtZV9hdmFpbGFibGVfbGlzdGVuZXIgKEdzdEFtY1ZpZGVvRGVjICogZGVjb2RlciwKKyAgICBKTklFbnYgKiBlbnYsIEdFcnJvciAqKiBlcnIpCit7CisgIGpvYmplY3QgbGlzdGVuZXIgPSBOVUxMOworICBqY2xhc3MgbGlzdGVuZXJfY2xzID0gTlVMTDsKKyAgam1ldGhvZElEIGNvbnN0cnVjdG9yX2lkID0gMDsKKworICBKTklOYXRpdmVNZXRob2QgYW1jT25GcmFtZUF2YWlsYWJsZUxpc3RlbmVyID0geworICAgICJuYXRpdmVfb25GcmFtZUF2YWlsYWJsZSIsCisgICAgIihKTGFuZHJvaWQvZ3JhcGhpY3MvU3VyZmFjZVRleHR1cmU7KVYiLAorICAgICh2b2lkICopIGdzdF9hbWNfdmlkZW9fZGVjX29uX2ZyYW1lX2F2YWlsYWJsZSwKKyAgfTsKKworICBsaXN0ZW5lcl9jbHMgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2FwcGxpY2F0aW9uX2NsYXNzIChlbnYsCisgICAgICAib3JnL2ZyZWVkZXNrdG9wL2dzdHJlYW1lci9hbmRyb2lkbWVkaWEvR3N0QW1jT25GcmFtZUF2YWlsYWJsZUxpc3RlbmVyIiwKKyAgICAgIGVycik7CisgIGlmICghbGlzdGVuZXJfY2xzKSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgKCplbnYpLT5SZWdpc3Rlck5hdGl2ZXMgKGVudiwgbGlzdGVuZXJfY2xzLCAmYW1jT25GcmFtZUF2YWlsYWJsZUxpc3RlbmVyLCAxKTsKKyAgaWYgKCgqZW52KS0+RXhjZXB0aW9uQ2hlY2sgKGVudikpIHsKKyAgICAoKmVudiktPkV4Y2VwdGlvbkNsZWFyIChlbnYpOworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIGNvbnN0cnVjdG9yX2lkID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgZXJyLCBsaXN0ZW5lcl9jbHMsICI8aW5pdD4iLCAiKClWIik7CisgIGlmICghY29uc3RydWN0b3JfaWQpIHsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBkZWNvZGVyLT5zZXRfY29udGV4dF9pZCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsIGVyciwgbGlzdGVuZXJfY2xzLCAic2V0Q29udGV4dCIsICIoSilWIik7CisgIGlmICghZGVjb2Rlci0+c2V0X2NvbnRleHRfaWQpIHsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBsaXN0ZW5lciA9CisgICAgICBnc3RfYW1jX2puaV9uZXdfb2JqZWN0IChlbnYsIGVyciwgVFJVRSwgbGlzdGVuZXJfY2xzLCBjb25zdHJ1Y3Rvcl9pZCk7CisgIGlmICghbGlzdGVuZXIpIHsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBpZiAoIWdzdF9hbWNfam5pX2NhbGxfdm9pZF9tZXRob2QgKGVudiwgZXJyLCBsaXN0ZW5lciwKKyAgICAgICAgICBkZWNvZGVyLT5zZXRfY29udGV4dF9pZCwgR1NUX0FNQ19WSURFT19ERUNfVE9fSkxPTkcgKGRlY29kZXIpKSkgeworICAgIGdzdF9hbWNfam5pX29iamVjdF91bnJlZiAoZW52LCBsaXN0ZW5lcik7CisgICAgbGlzdGVuZXIgPSBOVUxMOworICB9CisKK2RvbmU6CisgIGdzdF9hbWNfam5pX29iamVjdF91bnJlZiAoZW52LCBsaXN0ZW5lcl9jbHMpOworCisgIHJldHVybiBsaXN0ZW5lcjsKK30KKwogc3RhdGljIGdib29sZWFuCiBnc3RfYW1jX3ZpZGVvX2RlY19zZXRfZm9ybWF0IChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyLAogICAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqIHN0YXRlKQogewogICBHc3RBbWNWaWRlb0RlYyAqc2VsZjsKKyAgR3N0QW1jVmlkZW9EZWNDbGFzcyAqa2xhc3M7CiAgIEdzdEFtY0Zvcm1hdCAqZm9ybWF0OwogICBjb25zdCBnY2hhciAqbWltZTsKICAgZ2Jvb2xlYW4gaXNfZm9ybWF0X2NoYW5nZSA9IEZBTFNFOwpAQCAtOTU5LDggKzE3OTAsMTAgQEAKICAgZ3VpbnQ4ICpjb2RlY19kYXRhID0gTlVMTDsKICAgZ3NpemUgY29kZWNfZGF0YV9zaXplID0gMDsKICAgR0Vycm9yICplcnIgPSBOVUxMOworICBqb2JqZWN0IGpzdXJmYWNlID0gTlVMTDsKIAogICBzZWxmID0gR1NUX0FNQ19WSURFT19ERUMgKGRlY29kZXIpOworICBrbGFzcyA9IEdTVF9BTUNfVklERU9fREVDX0dFVF9DTEFTUyAoc2VsZik7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlNldHRpbmcgbmV3IGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIHN0YXRlLT5jYXBzKTsKIApAQCAtMTA1Miw2ICsxODg1LDE0NyBAQAogICAgICAgR1NUX0VMRU1FTlRfV0FSTklOR19GUk9NX0VSUk9SIChzZWxmLCBlcnIpOwogICB9CiAKKyAgeworICAgIGdib29sZWFuIGRvd25zdHJlYW1fc3VwcG9ydHNfZ2wgPSBGQUxTRTsKKyAgICBHc3RWaWRlb0RlY29kZXIgKmRlY29kZXIgPSBHU1RfVklERU9fREVDT0RFUiAoc2VsZik7CisgICAgR3N0UGFkICpzcmNfcGFkID0gR1NUX1ZJREVPX0RFQ09ERVJfU1JDX1BBRCAoZGVjb2Rlcik7CisgICAgR3N0Q2FwcyAqdGVtcGxfY2FwcyA9IGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChzcmNfcGFkKTsKKyAgICBHc3RDYXBzICpkb3duc3RyZWFtX2NhcHMgPSBnc3RfcGFkX3BlZXJfcXVlcnlfY2FwcyAoc3JjX3BhZCwgdGVtcGxfY2Fwcyk7CisKKyAgICBnc3RfY2Fwc191bnJlZiAodGVtcGxfY2Fwcyk7CisKKyAgICBpZiAoZG93bnN0cmVhbV9jYXBzKSB7CisgICAgICBndWludCBpLCBuOworICAgICAgR3N0U3RhdGljQ2FwcyBzdGF0aWNfY2FwcyA9CisgICAgICAgICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKKyAgICAgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCAiUkdCQSIpKTsKKyAgICAgIEdzdENhcHMgKmdsX21lbW9yeV9jYXBzID0gZ3N0X3N0YXRpY19jYXBzX2dldCAoJnN0YXRpY19jYXBzKTsKKworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkF2YWlsYWJsZSBkb3duc3RyZWFtIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULAorICAgICAgICAgIGRvd25zdHJlYW1fY2Fwcyk7CisKKyAgICAgIC8qIENoZWNrIGlmIGRvd25zdHJlYW0gY2FwcyBzdXBwb3J0cworICAgICAgICogdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSxmb3JtYXQ9UkdCQSAqLworICAgICAgbiA9IGdzdF9jYXBzX2dldF9zaXplIChkb3duc3RyZWFtX2NhcHMpOworICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBHc3RDYXBzICpjYXBzID0gTlVMTDsKKyAgICAgICAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChkb3duc3RyZWFtX2NhcHMsIGkpOworICAgICAgICBHc3RDYXBzRmVhdHVyZXMgKmZlYXR1cmVzID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChkb3duc3RyZWFtX2NhcHMsIGkpOworCisgICAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZnVsbCAoZ3N0X3N0cnVjdHVyZV9jb3B5IChzdHJ1Y3R1cmUpLCBOVUxMKTsKKyAgICAgICAgaWYgKCFjYXBzKQorICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGdzdF9jYXBzX3NldF9mZWF0dXJlcyAoY2FwcywgMCwgZ3N0X2NhcHNfZmVhdHVyZXNfY29weSAoZmVhdHVyZXMpKTsKKworICAgICAgICBpZiAoZ3N0X2NhcHNfY2FuX2ludGVyc2VjdCAoY2FwcywgZ2xfbWVtb3J5X2NhcHMpKSB7CisgICAgICAgICAgZG93bnN0cmVhbV9zdXBwb3J0c19nbCA9IFRSVUU7CisgICAgICAgIH0KKworICAgICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CisgICAgICAgIGlmIChkb3duc3RyZWFtX3N1cHBvcnRzX2dsKQorICAgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBnc3RfY2Fwc191bnJlZiAoZ2xfbWVtb3J5X2NhcHMpOworCisgICAgICAvKiBJZiB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLGZvcm1hdD1SR0JBIGlzIHN1cHBvcnRlZCwKKyAgICAgICAqIHVwZGF0ZSB0aGUgdmlkZW8gZGVjb2RlciBvdXRwdXQgc3RhdGUgYWNjb3JkaW5nbHkgYW5kIG5lZ290aWF0ZSAqLworICAgICAgaWYgKGRvd25zdHJlYW1fc3VwcG9ydHNfZ2wpIHsKKyAgICAgICAgR3N0VmlkZW9Db2RlY1N0YXRlICpvdXRwdXRfc3RhdGUgPSBOVUxMOworICAgICAgICBHc3RWaWRlb0NvZGVjU3RhdGUgKnByZXZfb3V0cHV0X3N0YXRlID0gTlVMTDsKKworICAgICAgICBwcmV2X291dHB1dF9zdGF0ZSA9IGdzdF92aWRlb19kZWNvZGVyX2dldF9vdXRwdXRfc3RhdGUgKGRlY29kZXIpOworCisgICAgICAgIG91dHB1dF9zdGF0ZSA9CisgICAgICAgICAgICBnc3RfdmlkZW9fZGVjb2Rlcl9zZXRfb3V0cHV0X3N0YXRlIChkZWNvZGVyLCBHU1RfVklERU9fRk9STUFUX1JHQkEsCisgICAgICAgICAgICBzdGF0ZS0+aW5mby53aWR0aCwgc3RhdGUtPmluZm8uaGVpZ2h0LCBzdGF0ZSk7CisKKyAgICAgICAgaWYgKG91dHB1dF9zdGF0ZS0+Y2FwcykgeworICAgICAgICAgIGdzdF9jYXBzX3VucmVmIChvdXRwdXRfc3RhdGUtPmNhcHMpOworICAgICAgICB9CisKKyAgICAgICAgb3V0cHV0X3N0YXRlLT5jYXBzID0gZ3N0X3ZpZGVvX2luZm9fdG9fY2FwcyAoJm91dHB1dF9zdGF0ZS0+aW5mbyk7CisgICAgICAgIGdzdF9jYXBzX3NldF9mZWF0dXJlcyAob3V0cHV0X3N0YXRlLT5jYXBzLCAwLAorICAgICAgICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfbmV3IChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksIE5VTEwpKTsKKworICAgICAgICAvKiBnc3RfYW1jX3ZpZGVvX2RlY19kZWNpZGVfYWxsb2NhdGlvbiB3aWxsIHVwZGF0ZQorICAgICAgICAgKiBzZWxmLT5kb3duc3RyZWFtX3N1cHBvcnRzX2dsICovCisgICAgICAgIGlmICghZ3N0X3ZpZGVvX2RlY29kZXJfbmVnb3RpYXRlIChkZWNvZGVyKSkgeworICAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJGYWlsZWQgdG8gbmVnb3RpYXRlIik7CisKKyAgICAgICAgICAvKiBSb2xsYmFjayBvdXRwdXQgc3RhdGUgY2hhbmdlcyAqLworICAgICAgICAgIGlmIChwcmV2X291dHB1dF9zdGF0ZSkgeworICAgICAgICAgICAgb3V0cHV0X3N0YXRlLT5pbmZvID0gcHJldl9vdXRwdXRfc3RhdGUtPmluZm87CisgICAgICAgICAgICBnc3RfY2Fwc19yZXBsYWNlICgmb3V0cHV0X3N0YXRlLT5jYXBzLCBwcmV2X291dHB1dF9zdGF0ZS0+Y2Fwcyk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdzdF92aWRlb19pbmZvX2luaXQgKCZvdXRwdXRfc3RhdGUtPmluZm8pOworICAgICAgICAgICAgZ3N0X2NhcHNfcmVwbGFjZSAoJm91dHB1dF9zdGF0ZS0+Y2FwcywgTlVMTCk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChwcmV2X291dHB1dF9zdGF0ZSkgeworICAgICAgICAgIGdzdF92aWRlb19jb2RlY19zdGF0ZV91bnJlZiAocHJldl9vdXRwdXRfc3RhdGUpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgR1NUX0lORk9fT0JKRUNUIChzZWxmLCAiR0wgb3V0cHV0OiAlcyIsCisgICAgICBzZWxmLT5kb3duc3RyZWFtX3N1cHBvcnRzX2dsID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7CisKKyAgaWYgKGtsYXNzLT5jb2RlY19pbmZvLT5nbF9vdXRwdXRfb25seSAmJiAhc2VsZi0+ZG93bnN0cmVhbV9zdXBwb3J0c19nbCkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsCisgICAgICAgICJDb2RlYyBvbmx5IHN1cHBvcnRzIEdMIG91dHB1dCBidXQgZG93bnN0cmVhbSBkb2VzIG5vdCIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmIChzZWxmLT5kb3duc3RyZWFtX3N1cHBvcnRzX2dsICYmIHNlbGYtPnN1cmZhY2UpIHsKKyAgICBqc3VyZmFjZSA9IHNlbGYtPnN1cmZhY2UtPmpvYmplY3Q7CisgIH0gZWxzZSBpZiAoc2VsZi0+ZG93bnN0cmVhbV9zdXBwb3J0c19nbCAmJiAhc2VsZi0+c3VyZmFjZSkgeworICAgIGludCByZXQgPSBUUlVFOworICAgIEpOSUVudiAqZW52ID0gTlVMTDsKKyAgICBHc3RBbWNTdXJmYWNlVGV4dHVyZSAqc3VyZmFjZV90ZXh0dXJlID0gTlVMTDsKKworICAgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgICAgc3VyZmFjZV90ZXh0dXJlID0gZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfbmV3ICgmZXJyKTsKKyAgICBpZiAoIXN1cmZhY2VfdGV4dHVyZSkgeworICAgICAgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUiAoc2VsZiwgZXJyKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBpZiAoc2VsZi0+bGlzdGVuZXIpIHsKKyAgICAgIGlmICghZ3N0X2FtY19qbmlfY2FsbF92b2lkX21ldGhvZCAoZW52LCAmZXJyLCBzZWxmLT5saXN0ZW5lciwKKyAgICAgICAgICAgICAgc2VsZi0+c2V0X2NvbnRleHRfaWQsIEdTVF9BTUNfVklERU9fREVDX1RPX0pMT05HIChOVUxMKSkpIHsKKyAgICAgICAgcmV0ID0gRkFMU0U7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgIH0KKworICAgICAgZ3N0X2FtY19qbmlfb2JqZWN0X3VucmVmIChlbnYsIHNlbGYtPmxpc3RlbmVyKTsKKyAgICB9CisgICAgc2VsZi0+bGlzdGVuZXIgPQorICAgICAgICBnc3RfYW1jX3ZpZGVvX2RlY19uZXdfb25fZnJhbWVfYXZhaWxhYmxlX2xpc3RlbmVyIChzZWxmLCBlbnYsICZlcnIpOworICAgIGlmICghc2VsZi0+bGlzdGVuZXIpIHsKKyAgICAgIHJldCA9IEZBTFNFOworICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIGlmICghZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfc2V0X29uX2ZyYW1lX2F2YWlsYWJsZV9saXN0ZW5lcgorICAgICAgICAoc3VyZmFjZV90ZXh0dXJlLCBzZWxmLT5saXN0ZW5lciwgJmVycikpIHsKKyAgICAgIHJldCA9IEZBTFNFOworICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIHNlbGYtPnN1cmZhY2UgPSBnc3RfYW1jX3N1cmZhY2VfbmV3IChzdXJmYWNlX3RleHR1cmUsICZlcnIpOworICAgIGpzdXJmYWNlID0gc2VsZi0+c3VyZmFjZS0+am9iamVjdDsKKworICBkb25lOgorICAgIGdfb2JqZWN0X3VucmVmIChzdXJmYWNlX3RleHR1cmUpOworICAgIGlmICghcmV0KSB7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUl9GUk9NX0VSUk9SIChzZWxmLCBlcnIpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfQorCiAgIGZvcm1hdF9zdHJpbmcgPSBnc3RfYW1jX2Zvcm1hdF90b19zdHJpbmcgKGZvcm1hdCwgJmVycik7CiAgIGlmIChlcnIpCiAgICAgR1NUX0VMRU1FTlRfV0FSTklOR19GUk9NX0VSUk9SIChzZWxmLCBlcnIpOwpAQCAtMTA1OSwxMSArMjAzMywxNiBAQAogICAgICAgR1NUX1NUUl9OVUxMIChmb3JtYXRfc3RyaW5nKSk7CiAgIGdfZnJlZSAoZm9ybWF0X3N0cmluZyk7CiAKLSAgaWYgKCFnc3RfYW1jX2NvZGVjX2NvbmZpZ3VyZSAoc2VsZi0+Y29kZWMsIGZvcm1hdCwgMCwgJmVycikpIHsKKyAgaWYgKCFnc3RfYW1jX2NvZGVjX2NvbmZpZ3VyZSAoc2VsZi0+Y29kZWMsIGZvcm1hdCwganN1cmZhY2UsIDAsICZlcnIpKSB7CiAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkZhaWxlZCB0byBjb25maWd1cmUgY29kZWMiKTsKICAgICBHU1RfRUxFTUVOVF9FUlJPUl9GUk9NX0VSUk9SIChzZWxmLCBlcnIpOwogICAgIHJldHVybiBGQUxTRTsKICAgfQorICBpZiAoanN1cmZhY2UpIHsKKyAgICBzZWxmLT5jb2RlY19jb25maWcgPSBBTUNfQ09ERUNfQ09ORklHX1dJVEhfU1VSRkFDRTsKKyAgfSBlbHNlIHsKKyAgICBzZWxmLT5jb2RlY19jb25maWcgPSBBTUNfQ09ERUNfQ09ORklHX1dJVEhPVVRfU1VSRkFDRTsKKyAgfQogCiAgIGdzdF9hbWNfZm9ybWF0X2ZyZWUgKGZvcm1hdCk7CiAKQEAgLTEyMTQsOCArMjE5MywxMCBAQAogICAgIC8qIENvcHkgdGhlIGJ1ZmZlciBjb250ZW50IGluIGNodW5rcyBvZiBzaXplIGFzIHJlcXVlc3RlZAogICAgICAqIGJ5IHRoZSBwb3J0ICovCiAgICAgYnVmID0gZ3N0X2FtY19jb2RlY19nZXRfaW5wdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCAmZXJyKTsKLSAgICBpZiAoIWJ1ZikKKyAgICBpZiAoZXJyKQogICAgICAgZ290byBmYWlsZWRfdG9fZ2V0X2lucHV0X2J1ZmZlcjsKKyAgICBlbHNlIGlmICghYnVmKQorICAgICAgZ290byBnb3RfbnVsbF9pbnB1dF9idWZmZXI7CiAKICAgICBtZW1zZXQgKCZidWZmZXJfaW5mbywgMCwgc2l6ZW9mIChidWZmZXJfaW5mbykpOwogICAgIGJ1ZmZlcl9pbmZvLm9mZnNldCA9IDA7CkBAIC0xMjUzLDkgKzIyMzQsOSBAQAogCiAgICAgb2Zmc2V0ICs9IGJ1ZmZlcl9pbmZvLnNpemU7CiAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwKLSAgICAgICAgIlF1ZXVlaW5nIGJ1ZmZlciAlZDogc2l6ZSAlZCB0aW1lICUiIEdfR0lOVDY0X0ZPUk1BVCAiIGZsYWdzIDB4JTA4eCIsCi0gICAgICAgIGlkeCwgYnVmZmVyX2luZm8uc2l6ZSwgYnVmZmVyX2luZm8ucHJlc2VudGF0aW9uX3RpbWVfdXMsCi0gICAgICAgIGJ1ZmZlcl9pbmZvLmZsYWdzKTsKKyAgICAgICAgIlF1ZXVlaW5nIGJ1ZmZlciAlZDogc2l6ZSAlZCB0aW1lICUiIEdfR0lOVDY0X0ZPUk1BVAorICAgICAgICAiIGZsYWdzIDB4JTA4eCIsIGlkeCwgYnVmZmVyX2luZm8uc2l6ZSwKKyAgICAgICAgYnVmZmVyX2luZm8ucHJlc2VudGF0aW9uX3RpbWVfdXMsIGJ1ZmZlcl9pbmZvLmZsYWdzKTsKICAgICBpZiAoIWdzdF9hbWNfY29kZWNfcXVldWVfaW5wdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCAmYnVmZmVyX2luZm8sCiAgICAgICAgICAgICAmZXJyKSkgewogICAgICAgaWYgKHNlbGYtPmZsdXNoaW5nKSB7CkBAIC0xMjg5LDYgKzIyNzAsMTUgQEAKICAgICBnc3RfdmlkZW9fY29kZWNfZnJhbWVfdW5yZWYgKGZyYW1lKTsKICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgIH0KK2dvdF9udWxsX2lucHV0X2J1ZmZlcjoKKyAgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzZWxmLCBMSUJSQVJZLCBTRVRUSU5HUywgKE5VTEwpLAorICAgICAgICAoIkdvdCBubyBpbnB1dCBidWZmZXIiKSk7CisgICAgaWYgKG1pbmZvLmRhdGEpCisgICAgICBnc3RfYnVmZmVyX3VubWFwIChmcmFtZS0+aW5wdXRfYnVmZmVyLCAmbWluZm8pOworICAgIGdzdF92aWRlb19jb2RlY19mcmFtZV91bnJlZiAoZnJhbWUpOworICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgfQogZGVxdWV1ZV9lcnJvcjoKICAgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IgKHNlbGYsIGVycik7CkBAIC0xNDEzLDI1ICsyNDAzLDE4MCBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9hbWNfdmlkZW9fZGVjX3NyY19xdWVyeSAoR3N0VmlkZW9EZWNvZGVyICogYmRlYywgR3N0UXVlcnkgKiBxdWVyeSkKK3sKKyAgR3N0QW1jVmlkZW9EZWMgKnNlbGYgPSBHU1RfQU1DX1ZJREVPX0RFQyAoYmRlYyk7CisgIGdib29sZWFuIHJldDsKKworICBzd2l0Y2ggKEdTVF9RVUVSWV9UWVBFIChxdWVyeSkpIHsKKyAgICBjYXNlIEdTVF9RVUVSWV9DT05URVhUOgorICAgIHsKKyAgICAgIGNvbnN0IGdjaGFyICpjb250ZXh0X3R5cGU7CisgICAgICBHc3RDb250ZXh0ICpjb250ZXh0LCAqb2xkX2NvbnRleHQ7CisKKyAgICAgIHJldCA9IGdzdF9nbF9oYW5kbGVfY29udGV4dF9xdWVyeSAoKEdzdEVsZW1lbnQgKikgc2VsZiwgcXVlcnksCisgICAgICAgICAgJnNlbGYtPmdsX2Rpc3BsYXksICZzZWxmLT5vdGhlcl9nbF9jb250ZXh0KTsKKyAgICAgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0X3R5cGUgKHF1ZXJ5LCAmY29udGV4dF90eXBlKTsKKworICAgICAgaWYgKGdfc3RyY21wMCAoY29udGV4dF90eXBlLCAiZ3N0LmdsLmxvY2FsX2NvbnRleHQiKSA9PSAwKSB7CisgICAgICAgIEdzdFN0cnVjdHVyZSAqczsKKworICAgICAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZvbGRfY29udGV4dCk7CisKKyAgICAgICAgaWYgKG9sZF9jb250ZXh0KQorICAgICAgICAgIGNvbnRleHQgPSBnc3RfY29udGV4dF9jb3B5IChvbGRfY29udGV4dCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICBjb250ZXh0ID0gZ3N0X2NvbnRleHRfbmV3ICgiZ3N0LmdsLmxvY2FsX2NvbnRleHQiLCBGQUxTRSk7CisKKyAgICAgICAgcyA9IGdzdF9jb250ZXh0X3dyaXRhYmxlX3N0cnVjdHVyZSAoY29udGV4dCk7CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAiY29udGV4dCIsIEdTVF9HTF9UWVBFX0NPTlRFWFQsIHNlbGYtPmdsX2NvbnRleHQsCisgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgZ3N0X3F1ZXJ5X3NldF9jb250ZXh0IChxdWVyeSwgY29udGV4dCk7CisgICAgICAgIGdzdF9jb250ZXh0X3VucmVmIChjb250ZXh0KTsKKworICAgICAgICByZXQgPSBzZWxmLT5nbF9jb250ZXh0ICE9IE5VTEw7CisgICAgICB9CisgICAgICBHU1RfTE9HX09CSkVDVCAoc2VsZiwgImNvbnRleHQgcXVlcnkgb2YgdHlwZSAlcyAlaSIsIGNvbnRleHRfdHlwZSwgcmV0KTsKKworICAgICAgaWYgKHJldCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiBHU1RfVklERU9fREVDT0RFUl9DTEFTUyAocGFyZW50X2NsYXNzKS0+c3JjX3F1ZXJ5IChiZGVjLCBxdWVyeSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2NhcHNfYXJlX3JnYmFfd2l0aF9nbF9tZW1vcnkgKEdzdENhcHMgKiBjYXBzKQoreworICBHc3RWaWRlb0luZm8gaW5mbzsKKyAgR3N0Q2Fwc0ZlYXR1cmVzICpmZWF0dXJlczsKKworICBpZiAoIWNhcHMpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmaW5mbywgY2FwcykpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGlmIChpbmZvLmZpbmZvLT5mb3JtYXQgIT0gR1NUX1ZJREVPX0ZPUk1BVF9SR0JBKQorICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoIShmZWF0dXJlcyA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAoY2FwcywgMCkpKQorICAgIHJldHVybiBGQUxTRTsKKworICByZXR1cm4gZ3N0X2NhcHNfZmVhdHVyZXNfY29udGFpbnMgKGZlYXR1cmVzLAorICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKTsKK30KKworc3RhdGljIGdib29sZWFuCitfZmluZF9sb2NhbF9nbF9jb250ZXh0IChHc3RBbWNWaWRlb0RlYyAqIHNlbGYpCit7CisgIEdzdFF1ZXJ5ICpxdWVyeTsKKyAgR3N0Q29udGV4dCAqY29udGV4dDsKKyAgY29uc3QgR3N0U3RydWN0dXJlICpzOworCisgIGlmIChzZWxmLT5nbF9jb250ZXh0KQorICAgIHJldHVybiBUUlVFOworCisgIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19jb250ZXh0ICgiZ3N0LmdsLmxvY2FsX2NvbnRleHQiKTsKKyAgaWYgKCFzZWxmLT5nbF9jb250ZXh0CisgICAgICAmJiBnc3RfZ2xfcnVuX3F1ZXJ5IChHU1RfRUxFTUVOVCAoc2VsZiksIHF1ZXJ5LCBHU1RfUEFEX1NSQykpIHsKKyAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZjb250ZXh0KTsKKyAgICBpZiAoY29udGV4dCkgeworICAgICAgcyA9IGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1cmUgKGNvbnRleHQpOworICAgICAgZ3N0X3N0cnVjdHVyZV9nZXQgKHMsICJjb250ZXh0IiwgR1NUX0dMX1RZUEVfQ09OVEVYVCwgJnNlbGYtPmdsX2NvbnRleHQsCisgICAgICAgICAgTlVMTCk7CisgICAgfQorICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgImZvdW5kIGxvY2FsIGNvbnRleHQgJXAiLCBzZWxmLT5nbF9jb250ZXh0KTsKKworICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKKworICBpZiAoc2VsZi0+Z2xfY29udGV4dCkKKyAgICByZXR1cm4gVFJVRTsKKworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgogZ3N0X2FtY192aWRlb19kZWNfZGVjaWRlX2FsbG9jYXRpb24gKEdzdFZpZGVvRGVjb2RlciAqIGJkZWMsIEdzdFF1ZXJ5ICogcXVlcnkpCiB7Ci0gIEdzdEJ1ZmZlclBvb2wgKnBvb2w7Ci0gIEdzdFN0cnVjdHVyZSAqY29uZmlnOworICBHc3RBbWNWaWRlb0RlYyAqc2VsZiA9IEdTVF9BTUNfVklERU9fREVDIChiZGVjKTsKKyAgZ2Jvb2xlYW4gbmVlZF9wb29sID0gRkFMU0U7CisgIEdzdENhcHMgKmNhcHMgPSBOVUxMOworLy8gIEdFcnJvciAqZXJyb3IgPSBOVUxMOwogCiAgIGlmICghR1NUX1ZJREVPX0RFQ09ERVJfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmRlY2lkZV9hbGxvY2F0aW9uIChiZGVjLCBxdWVyeSkpCiAgICAgcmV0dXJuIEZBTFNFOwogCi0gIGdfYXNzZXJ0IChnc3RfcXVlcnlfZ2V0X25fYWxsb2NhdGlvbl9wb29scyAocXVlcnkpID4gMCk7Ci0gIGdzdF9xdWVyeV9wYXJzZV9udGhfYWxsb2NhdGlvbl9wb29sIChxdWVyeSwgMCwgJnBvb2wsIE5VTEwsIE5VTEwsIE5VTEwpOwotICBnX2Fzc2VydCAocG9vbCAhPSBOVUxMKTsKKyAgc2VsZi0+ZG93bnN0cmVhbV9zdXBwb3J0c19nbCA9IEZBTFNFOworICBnc3RfcXVlcnlfcGFyc2VfYWxsb2NhdGlvbiAocXVlcnksICZjYXBzLCAmbmVlZF9wb29sKTsKKyAgaWYgKF9jYXBzX2FyZV9yZ2JhX3dpdGhfZ2xfbWVtb3J5IChjYXBzKSkgewogCi0gIGNvbmZpZyA9IGdzdF9idWZmZXJfcG9vbF9nZXRfY29uZmlnIChwb29sKTsKLSAgaWYgKGdzdF9xdWVyeV9maW5kX2FsbG9jYXRpb25fbWV0YSAocXVlcnksIEdTVF9WSURFT19NRVRBX0FQSV9UWVBFLCBOVUxMKSkgewotICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfYWRkX29wdGlvbiAoY29uZmlnLAotICAgICAgICBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX1ZJREVPX01FVEEpOworICAgIGlmICghZ3N0X2dsX2Vuc3VyZV9lbGVtZW50X2RhdGEgKHNlbGYsICZzZWxmLT5nbF9kaXNwbGF5LAorICAgICAgICAgICAgJnNlbGYtPm90aGVyX2dsX2NvbnRleHQpKQorICAgICAgcmV0dXJuIEZBTFNFOworCisgICAgaWYgKCFfZmluZF9sb2NhbF9nbF9jb250ZXh0IChzZWxmKSkKKyAgICAgIGdvdG8gb3V0OworI2lmIDAKKyAgICBpZiAoIXNlbGYtPmdsX2NvbnRleHQpIHsKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoc2VsZi0+Z2xfZGlzcGxheSk7CisgICAgICBkbyB7CisgICAgICAgIGlmIChzZWxmLT5nbF9jb250ZXh0KSB7CisgICAgICAgICAgZ3N0X29iamVjdF91bnJlZiAoc2VsZi0+Z2xfY29udGV4dCk7CisgICAgICAgICAgc2VsZi0+Z2xfY29udGV4dCA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgLyoganVzdCBnZXQgYSBHTCBjb250ZXh0LiAgd2UgZG9uJ3QgY2FyZSAqLworICAgICAgICBzZWxmLT5nbF9jb250ZXh0ID0KKyAgICAgICAgICAgIGdzdF9nbF9kaXNwbGF5X2dldF9nbF9jb250ZXh0X2Zvcl90aHJlYWQgKHNlbGYtPmdsX2Rpc3BsYXksIE5VTEwpOworICAgICAgICBpZiAoIXNlbGYtPmdsX2NvbnRleHQpIHsKKyAgICAgICAgICBpZiAoIWdzdF9nbF9kaXNwbGF5X2NyZWF0ZV9jb250ZXh0IChzZWxmLT5nbF9kaXNwbGF5LAorICAgICAgICAgICAgICAgICAgc2VsZi0+b3RoZXJfZ2xfY29udGV4dCwgJnNlbGYtPmdsX2NvbnRleHQsICZlcnJvcikpIHsKKyAgICAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChtaXgtPmRpc3BsYXkpOworICAgICAgICAgICAgZ290byBjb250ZXh0X2Vycm9yOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSB3aGlsZSAoIWdzdF9nbF9kaXNwbGF5X2FkZF9jb250ZXh0IChzZWxmLT5nbF9kaXNwbGF5LAorICAgICAgICAgICAgICBzZWxmLT5nbF9jb250ZXh0KSk7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc2VsZi0+Z2xfZGlzcGxheSk7CisgICAgfQorI2VuZGlmCisKKyAgICBzZWxmLT5kb3duc3RyZWFtX3N1cHBvcnRzX2dsID0gVFJVRTsKICAgfQotICBnc3RfYnVmZmVyX3Bvb2xfc2V0X2NvbmZpZyAocG9vbCwgY29uZmlnKTsKLSAgZ3N0X29iamVjdF91bnJlZiAocG9vbCk7CiAKLSAgcmV0dXJuIFRSVUU7CitvdXQ6CisgIHJldHVybiBnc3RfYW1jX3ZpZGVvX2RlY19jaGVja19jb2RlY19jb25maWcgKHNlbGYpOworI2lmIDAKK2NvbnRleHRfZXJyb3I6CisgIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2VsZiwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsIGVycm9yLT5tZXNzYWdlKSwKKyAgICAgICAgKE5VTEwpKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCitnc3RfYW1jX3ZpZGVvX2RlY19vbl9mcmFtZV9hdmFpbGFibGUgKEpOSUVudiAqIGVudiwgam9iamVjdCB0aGl6LAorICAgIGxvbmcgbG9uZyBjb250ZXh0LCBqb2JqZWN0IHN1cmZhY2VUZXh0dXJlKQoreworICBHc3RBbWNWaWRlb0RlYyAqc2VsZiA9IEpMT05HX1RPX0dTVF9BTUNfVklERU9fREVDIChjb250ZXh0KTsKKworICAvKiBhcHBhcmVudGx5IHdlIGNhbiBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGRlY29kZXIgaGFzIGJlZW4gY2xvc2VkICovCisgIGlmICghc2VsZikKKyAgICByZXR1cm47CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+Z2xfbG9jayk7CisgIHNlbGYtPmdsX3JlYWR5X2ZyYW1lX2NvdW50Kys7CisgIEdTVF9MT0dfT0JKRUNUIChzZWxmLCAiZnJhbWUgJXUgYXZhaWxhYmxlIiwgc2VsZi0+Z2xfcmVhZHlfZnJhbWVfY291bnQpOworICBnX2NvbmRfYnJvYWRjYXN0ICgmc2VsZi0+Z2xfY29uZCk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+Z2xfbG9jayk7CiB9CmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmggYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmgKaW5kZXggYzZjMmI0Zi4uMDM5YTc4NSAxMDA2NDQKLS0tIGEvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5oCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuaApAQCAtMjIsMTAgKzIyLDEyIEBACiAjZGVmaW5lIF9fR1NUX0FNQ19WSURFT19ERUNfSF9fCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CiAKICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9kZWNvZGVyLmg+CiAKICNpbmNsdWRlICJnc3RhbWMuaCIKKyNpbmNsdWRlICJnc3RhbWNzdXJmYWNlLmgiCiAKIEdfQkVHSU5fREVDTFMKIApAQCAtNDQsNiArNDYsMTQgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdEFtY1ZpZGVvRGVjIEdzdEFtY1ZpZGVvRGVjOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEFtY1ZpZGVvRGVjQ2xhc3MgR3N0QW1jVmlkZW9EZWNDbGFzczsKK3R5cGVkZWYgZW51bSBfR3N0QW1jQ29kZWNDb25maWcgR3N0QW1jQ29kZWNDb25maWc7CisKK2VudW0gX0dzdEFtY0NvZGVjQ29uZmlnCit7CisgIEFNQ19DT0RFQ19DT05GSUdfTk9ORSwKKyAgQU1DX0NPREVDX0NPTkZJR19XSVRIX1NVUkZBQ0UsCisgIEFNQ19DT0RFQ19DT05GSUdfV0lUSE9VVF9TVVJGQUNFLAorfTsKIAogc3RydWN0IF9Hc3RBbWNWaWRlb0RlYwogewpAQCAtNTEsNiArNjEsNyBAQAogCiAgIC8qIDwgcHJpdmF0ZSA+ICovCiAgIEdzdEFtY0NvZGVjICpjb2RlYzsKKyAgR3N0QW1jQ29kZWNDb25maWcgY29kZWNfY29uZmlnOwogCiAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqaW5wdXRfc3RhdGU7CiAgIGdib29sZWFuIGlucHV0X3N0YXRlX2NoYW5nZWQ7CkBAIC01OSw2ICs3MCwxMCBAQAogICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CiAgIEdzdEFtY0NvbG9yRm9ybWF0SW5mbyBjb2xvcl9mb3JtYXRfaW5mbzsKIAorICAvKiBPdXRwdXQgZGltZW5zaW9ucyAqLworICBndWludCB3aWR0aDsKKyAgZ3VpbnQgaGVpZ2h0OworCiAgIGd1aW50OCAqY29kZWNfZGF0YTsKICAgZ3NpemUgY29kZWNfZGF0YV9zaXplOwogICAvKiBUUlVFIGlmIHRoZSBjb21wb25lbnQgaXMgY29uZmlndXJlZCBhbmQgc2F3CkBAIC03Niw3ICs5MSwyOCBAQAogICAvKiBUUlVFIGlmIHRoZSBjb21wb25lbnQgaXMgZHJhaW5lZCBjdXJyZW50bHkgKi8KICAgZ2Jvb2xlYW4gZHJhaW5lZDsKIAorICBHc3RBbWNTdXJmYWNlICpzdXJmYWNlOworCisgIEdzdEdMRGlzcGxheSAqZ2xfZGlzcGxheTsKKyAgR3N0R0xDb250ZXh0ICpnbF9jb250ZXh0OworICBHc3RHTENvbnRleHQgKm90aGVyX2dsX2NvbnRleHQ7CisKKyAgZ2Jvb2xlYW4gZG93bnN0cmVhbV9zdXBwb3J0c19nbDsKICAgR3N0Rmxvd1JldHVybiBkb3duc3RyZWFtX2Zsb3dfcmV0OworCisgIGpvYmplY3QgbGlzdGVuZXI7CisgIGptZXRob2RJRCBzZXRfY29udGV4dF9pZDsKKworICBnYm9vbGVhbiBnbF9tZW1fYXR0YWNoZWQ7CisgIEdzdEdMTWVtb3J5ICpvZXNfbWVtOworICBHRXJyb3IgKmdsX2Vycm9yOworICBHTXV0ZXggZ2xfbG9jazsKKyAgR0NvbmQgZ2xfY29uZDsKKyAgZ3VpbnQgZ2xfbGFzdF9yZW5kZXJlZF9mcmFtZTsKKyAgZ3VpbnQgZ2xfcHVzaGVkX2ZyYW1lX2NvdW50OyAvKiBuIGJ1ZmZlcnMgcHVzaGVkICovCisgIGd1aW50IGdsX3JlYWR5X2ZyYW1lX2NvdW50OyAgLyogbiBidWZmZXJzIHJlYWR5IGZvciBHTCBhY2Nlc3MgKi8KKyAgZ3VpbnQgZ2xfcmVsZWFzZWRfZnJhbWVfY291bnQ7ICAvKiBuIGJ1ZmZlcnMgcmVsZWFzZWQgKi8KKyAgR1F1ZXVlICpnbF9xdWV1ZTsKIH07CiAKIHN0cnVjdCBfR3N0QW1jVmlkZW9EZWNDbGFzcwpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2VuYy5jIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2VuYy5jCmluZGV4IDRhNDJhMzAuLjVlZjQ4MGIgMTAwNjQ0Ci0tLSBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9lbmMuYworKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZW5jLmMKQEAgLTEwMjMsOCArMTAyMywxMCBAQAogICBpc19lb3MgPSAhICEoYnVmZmVyX2luZm8uZmxhZ3MgJiBCVUZGRVJfRkxBR19FTkRfT0ZfU1RSRUFNKTsKIAogICBidWYgPSBnc3RfYW1jX2NvZGVjX2dldF9vdXRwdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCAmZXJyKTsKLSAgaWYgKCFidWYpCisgIGlmIChlcnIpCiAgICAgZ290byBmYWlsZWRfdG9fZ2V0X291dHB1dF9idWZmZXI7CisgIGVsc2UgaWYgKCFidWYpCisgICAgZ290byBnb3RfbnVsbF9vdXRwdXRfYnVmZmVyOwogCiAgIGZsb3dfcmV0ID0KICAgICAgIGdzdF9hbWNfdmlkZW9fZW5jX2hhbmRsZV9vdXRwdXRfZnJhbWUgKHNlbGYsIGJ1ZiwgJmJ1ZmZlcl9pbmZvLCBmcmFtZSk7CkBAIC0xMDMyLDcgKzEwMzQsNyBAQAogICBnc3RfYW1jX2J1ZmZlcl9mcmVlIChidWYpOwogICBidWYgPSBOVUxMOwogCi0gIGlmICghZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsICZlcnIpKSB7CisgIGlmICghZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsIEZBTFNFLCAmZXJyKSkgewogICAgIGlmIChzZWxmLT5mbHVzaGluZykgewogICAgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CiAgICAgICBnb3RvIGZsdXNoaW5nOwpAQCAtMTE0Nyw3ICsxMTQ5LDIyIEBACiAgICAgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUiAoc2VsZiwgZXJyKTsKICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9WSURFT19FTkNPREVSX1NSQ19QQUQgKHNlbGYpLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSk7CiAgICAgZ3N0X3BhZF9wYXVzZV90YXNrIChHU1RfVklERU9fRU5DT0RFUl9TUkNfUEFEIChzZWxmKSk7Ci0gICAgc2VsZi0+ZG93bnN0cmVhbV9mbG93X3JldCA9IEdTVF9GTE9XX05PVF9ORUdPVElBVEVEOworICAgIHNlbGYtPmRvd25zdHJlYW1fZmxvd19yZXQgPSBHU1RfRkxPV19FUlJPUjsKKyAgICBHU1RfVklERU9fRU5DT0RFUl9TVFJFQU1fVU5MT0NLIChzZWxmKTsKKyAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5kcmFpbl9sb2NrKTsKKyAgICBzZWxmLT5kcmFpbmluZyA9IEZBTFNFOworICAgIGdfY29uZF9icm9hZGNhc3QgKCZzZWxmLT5kcmFpbl9jb25kKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmRyYWluX2xvY2spOworICAgIHJldHVybjsKKyAgfQorCitnb3RfbnVsbF9vdXRwdXRfYnVmZmVyOgorICB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCisgICAgICAgICgiR290IG5vIG91dHB1dCBidWZmZXIiKSk7CisgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfVklERU9fRU5DT0RFUl9TUkNfUEFEIChzZWxmKSwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOworICAgIGdzdF9wYWRfcGF1c2VfdGFzayAoR1NUX1ZJREVPX0VOQ09ERVJfU1JDX1BBRCAoc2VsZikpOworICAgIHNlbGYtPmRvd25zdHJlYW1fZmxvd19yZXQgPSBHU1RfRkxPV19FUlJPUjsKICAgICBHU1RfVklERU9fRU5DT0RFUl9TVFJFQU1fVU5MT0NLIChzZWxmKTsKICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5kcmFpbl9sb2NrKTsKICAgICBzZWxmLT5kcmFpbmluZyA9IEZBTFNFOwpAQCAtMTI5MSw3ICsxMzA4LDcgQEAKICAgICAgIEdTVF9TVFJfTlVMTCAoZm9ybWF0X3N0cmluZykpOwogICBnX2ZyZWUgKGZvcm1hdF9zdHJpbmcpOwogCi0gIGlmICghZ3N0X2FtY19jb2RlY19jb25maWd1cmUgKHNlbGYtPmNvZGVjLCBmb3JtYXQsIDEsICZlcnIpKSB7CisgIGlmICghZ3N0X2FtY19jb2RlY19jb25maWd1cmUgKHNlbGYtPmNvZGVjLCBmb3JtYXQsIE5VTEwsIDEsICZlcnIpKSB7CiAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkZhaWxlZCB0byBjb25maWd1cmUgY29kZWMiKTsKICAgICBHU1RfRUxFTUVOVF9FUlJPUl9GUk9NX0VSUk9SIChzZWxmLCBlcnIpOwogICAgIGdvdG8gcXVpdDsKQEAgLTE0NTIsOCArMTQ2OSwxMCBAQAogICAvKiBDb3B5IHRoZSBidWZmZXIgY29udGVudCBpbiBjaHVua3Mgb2Ygc2l6ZSBhcyByZXF1ZXN0ZWQKICAgICogYnkgdGhlIHBvcnQgKi8KICAgYnVmID0gZ3N0X2FtY19jb2RlY19nZXRfaW5wdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCAmZXJyKTsKLSAgaWYgKCFidWYpCisgIGlmIChlcnIpCiAgICAgZ290byBmYWlsZWRfdG9fZ2V0X2lucHV0X2J1ZmZlcjsKKyAgZWxzZSBpZiAoIWJ1ZikKKyAgICBnb3RvIGdvdF9udWxsX2lucHV0X2J1ZmZlcjsKIAogICBtZW1zZXQgKCZidWZmZXJfaW5mbywgMCwgc2l6ZW9mIChidWZmZXJfaW5mbykpOwogICBidWZmZXJfaW5mby5vZmZzZXQgPSAwOwpAQCAtMTUyMiwxMSArMTU0MSwxOSBAQAogICAgIGdzdF92aWRlb19jb2RlY19mcmFtZV91bnJlZiAoZnJhbWUpOwogICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgfQorZ290X251bGxfaW5wdXRfYnVmZmVyOgorICB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCisgICAgICAgICgiR290IG5vIGlucHV0IGJ1ZmZlciIpKTsKKyAgICBnc3RfdmlkZW9fY29kZWNfZnJhbWVfdW5yZWYgKGZyYW1lKTsKKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgIH0KIGJ1ZmZlcl9maWxsX2Vycm9yOgogICB7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIFJFU09VUkNFLCBXUklURSwgKE5VTEwpLAotICAgICAgICAoIkZhaWxlZCB0byB3cml0ZSBpbnB1dCBpbnRvIHRoZSBhbWMgYnVmZmVyKHdyaXRlICVkQiB0byBhICVkQiBidWZmZXIpIiwKLSAgICAgICAgICAgIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLmZyYW1lX3NpemUsIGJ1Zi0+c2l6ZSkpOworICAgICAgICAoIkZhaWxlZCB0byB3cml0ZSBpbnB1dCBpbnRvIHRoZSBhbWMgYnVmZmVyKHdyaXRlICVkQiB0byBhICUiCisgICAgICAgICAgICBHX0dTSVpFX0ZPUk1BVCAiQiBidWZmZXIpIiwgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uZnJhbWVfc2l6ZSwKKyAgICAgICAgICAgIGJ1Zi0+c2l6ZSkpOwogICAgIGdzdF92aWRlb19jb2RlY19mcmFtZV91bnJlZiAoZnJhbWUpOwogICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgfQpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3Rqbml1dGlscy5jIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3Rqbml1dGlscy5jCmluZGV4IGY5MzYwMjcuLjRmZTM3NDcgMTAwNjQ0Ci0tLSBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0am5pdXRpbHMuYworKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGpuaXV0aWxzLmMKQEAgLTQxLDYgKzQxLDcgQEAKIHN0YXRpYyBKYXZhVk0gKmphdmFfdm07CiBzdGF0aWMgZ2Jvb2xlYW4gc3RhcnRlZF9qYXZhX3ZtID0gRkFMU0U7CiBzdGF0aWMgcHRocmVhZF9rZXlfdCBjdXJyZW50X2puaV9lbnY7CitzdGF0aWMgam9iamVjdCAoKmdldF9jbGFzc19sb2FkZXIpICh2b2lkKTsKIAogc3RhdGljIHN0cnVjdAogewpAQCAtMjExLDEyICsyMTIsMTYgQEAKIHZvaWQKIGdzdF9hbWNfam5pX29iamVjdF91bnJlZiAoSk5JRW52ICogZW52LCBqb2JqZWN0IG9iamVjdCkKIHsKKyAgZ19yZXR1cm5faWZfZmFpbCAob2JqZWN0ICE9IE5VTEwpOworCiAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsIG9iamVjdCk7CiB9CiAKIHZvaWQKIGdzdF9hbWNfam5pX29iamVjdF9sb2NhbF91bnJlZiAoSk5JRW52ICogZW52LCBqb2JqZWN0IG9iamVjdCkKIHsKKyAgZ19yZXR1cm5faWZfZmFpbCAob2JqZWN0ICE9IE5VTEwpOworCiAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgb2JqZWN0KTsKIH0KIApAQCAtNTYwLDYgKzU2NSwyNiBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KK2NoZWNrX2FwcGxpY2F0aW9uX2NsYXNzX2xvYWRlciAodm9pZCkKK3sKKyAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKKyAgR01vZHVsZSAqbW9kdWxlID0gTlVMTDsKKworICBtb2R1bGUgPSBnX21vZHVsZV9vcGVuIChOVUxMLCBHX01PRFVMRV9CSU5EX0xPQ0FMKTsKKyAgaWYgKCFtb2R1bGUpIHsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyAgaWYgKCFnX21vZHVsZV9zeW1ib2wgKG1vZHVsZSwgImdzdF9hbmRyb2lkX2dldF9hcHBsaWNhdGlvbl9jbGFzc19sb2FkZXIiLAorICAgICAgICAgIChncG9pbnRlciAqKSAmIGdldF9jbGFzc19sb2FkZXIpKSB7CisgICAgcmV0ID0gRkFMU0U7CisgIH0KKworICBnX21vZHVsZV9jbG9zZSAobW9kdWxlKTsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KIGluaXRpYWxpemVfY2xhc3NlcyAodm9pZCkKIHsKICAgSk5JRW52ICplbnY7CkBAIC02MTksNiArNjQ0LDExIEBACiAgICAgcmV0dXJuIEZBTFNFOwogICB9CiAKKyAgaWYgKCFjaGVja19hcHBsaWNhdGlvbl9jbGFzc19sb2FkZXIgKCkpIHsKKyAgICBHU1RfRVJST1IgKCJDb3VsZCBub3QgZmluZCBhcHBsaWNhdGlvbiBjbGFzcyBsb2FkZXIgcHJvdmlkZXIiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKwogICByZXR1cm4gVFJVRTsKIH0KIApAQCAtNzk4LDYgKzgyOCw1NyBAQAogICByZXR1cm4gc3RhcnRlZF9qYXZhX3ZtOwogfQogCitqY2xhc3MKK2dzdF9hbWNfam5pX2dldF9hcHBsaWNhdGlvbl9jbGFzcyAoSk5JRW52ICogZW52LCBjb25zdCBnY2hhciAqIG5hbWUsCisgICAgR0Vycm9yICoqIGVycikKK3sKKyAgamNsYXNzIHRtcCA9IE5VTEw7CisgIGpjbGFzcyBjbGFzcyA9IE5VTEw7CisgIGpzdHJpbmcgbmFtZV9qc3RyID0gTlVMTDsKKworICBqb2JqZWN0IGNsYXNzX2xvYWRlciA9IE5VTEw7CisgIGpjbGFzcyBjbGFzc19sb2FkZXJfY2xzID0gTlVMTDsKKyAgam1ldGhvZElEIGxvYWRfY2xhc3NfaWQgPSAwOworCisKKyAgY2xhc3NfbG9hZGVyID0gZ2V0X2NsYXNzX2xvYWRlciAoKTsKKyAgaWYgKCFjbGFzc19sb2FkZXIpIHsKKyAgICBnX3NldF9lcnJvciAoZXJyLCBHU1RfTElCUkFSWV9FUlJPUiwgR1NUX0xJQlJBUllfRVJST1JfRkFJTEVELAorICAgICAgICAiQ291bGQgbm90IHJldHJlaXZlIGFwcGxpY2F0aW9uIGNsYXNzIGxvYWRlciIpOworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIGNsYXNzX2xvYWRlcl9jbHMgPSAoKmVudiktPkdldE9iamVjdENsYXNzIChlbnYsIGNsYXNzX2xvYWRlcik7CisgIGlmICghY2xhc3NfbG9hZGVyX2NscykgeworICAgIGdfc2V0X2Vycm9yIChlcnIsIEdTVF9MSUJSQVJZX0VSUk9SLCBHU1RfTElCUkFSWV9FUlJPUl9GQUlMRUQsCisgICAgICAgICJDb3VsZCBub3QgcmV0cmVpdmUgYXBwbGljYXRpb24gY2xhc3MgbG9hZGVyIGphdmEgY2xhc3MiKTsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBsb2FkX2NsYXNzX2lkID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgZXJyLCBjbGFzc19sb2FkZXJfY2xzLCAibG9hZENsYXNzIiwKKyAgICAgICIoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvQ2xhc3M7Iik7CisgIGlmICghY2xhc3NfbG9hZGVyX2NscykgeworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIG5hbWVfanN0ciA9IGdzdF9hbWNfam5pX3N0cmluZ19mcm9tX2djaGFyIChlbnYsIGVyciwgRkFMU0UsIG5hbWUpOworICBpZiAoIW5hbWVfanN0cikgeworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIGlmIChnc3RfYW1jX2puaV9jYWxsX29iamVjdF9tZXRob2QgKGVudiwgZXJyLCBjbGFzc19sb2FkZXIsCisgICAgICAgICAgbG9hZF9jbGFzc19pZCwgJnRtcCwgbmFtZV9qc3RyKSkgeworICAgIGNsYXNzID0gZ3N0X2FtY19qbmlfb2JqZWN0X21ha2VfZ2xvYmFsIChlbnYsIHRtcCk7CisgIH0KKworZG9uZToKKyAgZ3N0X2FtY19qbmlfb2JqZWN0X2xvY2FsX3VucmVmIChlbnYsIG5hbWVfanN0cik7CisgIGdzdF9hbWNfam5pX29iamVjdF9sb2NhbF91bnJlZiAoZW52LCBjbGFzc19sb2FkZXJfY2xzKTsKKworICByZXR1cm4gY2xhc3M7Cit9CisKICNkZWZpbmUgQ0FMTF9TVEFUSUNfVFlQRV9NRVRIT0QoX3R5cGUsIF9uYW1lLCAgX2puYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogZ2Jvb2xlYW4gZ3N0X2FtY19qbmlfY2FsbF9zdGF0aWNfIyNfbmFtZSMjX21ldGhvZCAoSk5JRW52ICplbnYsIEdFcnJvciAqKiBlcnIsIGpjbGFzcyBrbGFzcywgam1ldGhvZElEIG1ldGhvZElELCBfdHlwZSAqIHZhbHVlLCAuLi4pICAgXAogICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTk0NywxMiArMTAyOCwxNyBAQAogICAgIGpvYmplY3QgYnVmZmVyID0gTlVMTDsKIAogICAgIGJ1ZmZlciA9ICgqZW52KS0+R2V0T2JqZWN0QXJyYXlFbGVtZW50IChlbnYsIGFycmF5LCBpKTsKLSAgICBpZiAoKCplbnYpLT5FeGNlcHRpb25DaGVjayAoZW52KSB8fCAhYnVmZmVyKSB7CisgICAgaWYgKCgqZW52KS0+RXhjZXB0aW9uQ2hlY2sgKGVudikpIHsKICAgICAgIGdzdF9hbWNfam5pX3NldF9lcnJvciAoZW52LCBlcnIsIEdTVF9MSUJSQVJZX0VSUk9SLAogICAgICAgICAgIEdTVF9MSUJSQVJZX0VSUk9SX0ZBSUxFRCwgIkZhaWxlZCB0byBnZXQgYnVmZmVyICVkIiwgaSk7CiAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAorICAgIC8qIE5VTEwgYnVmZmVycyBhcmUgbm90IGEgcHJvYmxlbSBhbmQgYXJlIGhhcHBlbmluZyB3aGVuIHdlIGNvbmZpZ3VyZWQKKyAgICAgKiBhIHN1cmZhY2UgYXMgaW5wdXQvb3V0cHV0ICovCisgICAgaWYgKCFidWZmZXIpCisgICAgICBjb250aW51ZTsKKwogICAgICgqYnVmZmVycylbaV0ub2JqZWN0ID0gZ3N0X2FtY19qbmlfb2JqZWN0X21ha2VfZ2xvYmFsIChlbnYsIGJ1ZmZlcik7CiAgICAgaWYgKCEoKmJ1ZmZlcnMpW2ldLm9iamVjdCkgewogICAgICAgZ3N0X2FtY19qbmlfc2V0X2Vycm9yIChlbnYsIGVyciwgR1NUX0xJQlJBUllfRVJST1IsCmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGpuaXV0aWxzLmggYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGpuaXV0aWxzLmgKaW5kZXggYTZiYzY4YS4uYzMyM2NmOCAxMDA2NDQKLS0tIGEvc3lzL2FuZHJvaWRtZWRpYS9nc3Rqbml1dGlscy5oCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0am5pdXRpbHMuaApAQCAtMTA3LDYgKzEwNywxMCBAQAogCiBKTklFbnYgKmdzdF9hbWNfam5pX2dldF9lbnYgICAgICAgICAgICAgICAgICAodm9pZCk7CiAKK2pjbGFzcyBnc3RfYW1jX2puaV9nZXRfYXBwbGljYXRpb25fY2xhc3MgICAgIChKTklFbnYgKiBlbnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyKTsKKwogI2RlZmluZSBERUZfQ0FMTF9TVEFUSUNfVFlQRV9NRVRIT0QoX3R5cGUsIF9uYW1lLCAgX2puYW1lLCBfcmV0dmFsKSBcCiBnYm9vbGVhbiBnc3RfYW1jX2puaV9jYWxsX3N0YXRpY18jI19uYW1lIyNfbWV0aG9kIChKTklFbnYgKmVudiwgR0Vycm9yICoqIGVyciwgamNsYXNzIGtsYXNzLCBqbWV0aG9kSUQgbWV0aG9kSUQsIF90eXBlICogdmFsdWUsIC4uLikKIApkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEtbm9ucHVibGljL01ha2VmaWxlLmluIGIvc3lzL2FwcGxlbWVkaWEtbm9ucHVibGljL01ha2VmaWxlLmluCmluZGV4IGE0NzMwNzkuLmNmMjkzY2MgMTAwNjQ0Ci0tLSBhL3N5cy9hcHBsZW1lZGlhLW5vbnB1YmxpYy9NYWtlZmlsZS5pbgorKysgYi9zeXMvYXBwbGVtZWRpYS1ub25wdWJsaWMvTWFrZWZpbGUuaW4KQEAgLTEyNSwxNiArMTI1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMzE2LDYgKzMxNSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzUzLDYgKzM1NCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzYxLDcgKzM2NCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM4MCw4ICszODIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzk4LDE2ICs0MDEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDMzLDYgKzQzNyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQ1OCw2ICs0NjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01NTksNiArNTY3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU3Miw4ICs1ODEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01ODksNiArNTk2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTY0NiwxNiArNjU1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNzA3LDYgKzcxOCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC03MTcsNiArNzI5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzI2LDYgKzczOSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03NjMsNyArNzc4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbSBiL3N5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmFtCmluZGV4IDM0YTAxNjkuLjg3YjgwYjUgMTAwNjQ0Ci0tLSBhL3N5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmFtCisrKyBiL3N5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmFtCkBAIC0zLDEwICszLDEyIEBACiBsaWJnc3RhcHBsZW1lZGlhX2xhX1NPVVJDRVMgPQkJCVwKIAlwbHVnaW4ubQkJCQlcCiAJdnR1dGlsLmMJCQkJXAorCWNvcmV2aWRlb21lbW9yeS5jCQkJXAogCWNvcmV2aWRlb2J1ZmZlci5jCQkJXAogCWNvcmVtZWRpYWJ1ZmZlci5jCQkJXAotCWNvcmV2aWRlb3RleHR1cmVjYWNoZS5tIAkJXAotCWF0ZGVjLmMKKwl2aWRlb3RleHR1cmVjYWNoZS5tIAkJCVwKKwlhdGRlYy5jIAkJCQlcCisJZ2xjb250ZXh0aGVscGVyLmMKIAogbGliZ3N0YXBwbGVtZWRpYV9sYV9DUFBGTEFHUyA9CQkJXAogCS1EZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX25ldz1nc3RfY29yZV9tZWRpYV9idWZmZXJfcHJpdl9uZXcJCVwKQEAgLTIyLDEwICsyNCwxOCBAQAogCSQoR1NUX0JBU0VfQ0ZMQUdTKQkJCVwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKQogCitpZiBIQVZFX0lPUworR1NUX09CSkNGTEFHU19XSVRIX1ZFUlNJT04gPSAkKEdTVF9PQkpDRkxBR1MpCitlbHNlCisjIEFkZCBtaW4gdmVyc2lvbiBpbiBmcm9udCBzbyB0aGUgdXNlciBvciBjZXJiZXJvIGNhbiBvdmVycmlkZSBpdCBzaW5jZSBpdAorIyBhbHdheXMgcGlja3MgdGhlIGxhc3Qgb2NjdXJlbmNlIHdoZW4gcGFzc2luZyBzZXZlcmFsIC1tbWFjb3N4LXZlcnNpb24tbWluLgorR1NUX09CSkNGTEFHU19XSVRIX1ZFUlNJT04gPSAtbW1hY29zeC12ZXJzaW9uLW1pbj0xMC44ICQoR1NUX09CSkNGTEFHUykKK2VuZGlmCisKIGxpYmdzdGFwcGxlbWVkaWFfbGFfT0JKQ0ZMQUdTID0JCQlcCiAJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzICAgICAgICAgICAgICAgIFwKIAktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyAgICAgICAgICAgICAgXAotCSQoR1NUX09CSkNGTEFHUykJCQlcCisJJChHU1RfT0JKQ0ZMQUdTX1dJVEhfVkVSU0lPTikJCVwKIAkkKEdTVF9CQVNFX0NGTEFHUykJCQlcCiAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykKIApAQCAtNjIsMTAgKzcyLDExIEBACiAJdnR1dGlsLmgJCQkJXAogCWNvcmV2aWRlb2J1ZmZlci5oCQkJXAogCWNvcmVtZWRpYWJ1ZmZlci5oCQkJXAotCWNvcmV2aWRlb3RleHR1cmVjYWNoZS5oCQkJXAorCXZpZGVvdGV4dHVyZWNhY2hlLmgJCQlcCiAJYXRkZWMuaCAJCQkJXAogCWlvc2Fzc2V0c3JjLmgJCQkJXAotCWF2ZmFzc2V0c3JjLmgKKwlhdmZhc3NldHNyYy5oICAJCQkJXAorCWdsY29udGV4dGhlbHBlci5oCiAKIGlmIEhBVkVfSU9TCiAKQEAgLTc5LDExICs5MCwxMyBAQAogZWxzZQogCiBsaWJnc3RhcHBsZW1lZGlhX2xhX1NPVVJDRVMgKz0JCQlcCi0JcXRraXR2aWRlb3NyYy5tCisJcXRraXR2aWRlb3NyYy5tIAkJCQkJXAorCWlvc3VyZmFjZW1lbW9yeS5jCiAKIGxpYmdzdGFwcGxlbWVkaWFfbGFfTERGTEFHUyArPQkJCVwKIAktV2wsLWZyYW1ld29yayAtV2wsQ29jb2EJCVwKLQktV2wsLWZyYW1ld29yayAtV2wsUVRLaXQKKwktV2wsLWZyYW1ld29yayAtV2wsUVRLaXQJCVwKKwktV2wsLWZyYW1ld29yayAtV2wsSU9TdXJmYWNlCiAKIGVuZGlmCiAKZGlmZiAtLWdpdCBhL3N5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmluIGIvc3lzL2FwcGxlbWVkaWEvTWFrZWZpbGUuaW4KaW5kZXggZTRkNTdjNS4uZDYxZTA3MCAxMDA2NDQKLS0tIGEvc3lzL2FwcGxlbWVkaWEvTWFrZWZpbGUuaW4KKysrIGIvc3lzL2FwcGxlbWVkaWEvTWFrZWZpbGUuaW4KQEAgLTk5LDExICs5OSwxMyBAQAogQEhBVkVfSU9TX1RSVUVACS1XbCwtZnJhbWV3b3JrIC1XbCxBc3NldHNMaWJyYXJ5CiAKIEBIQVZFX0lPU19GQUxTRUBhbV9fYXBwZW5kXzQgPSBcCi1ASEFWRV9JT1NfRkFMU0VACXF0a2l0dmlkZW9zcmMubQorQEhBVkVfSU9TX0ZBTFNFQAlxdGtpdHZpZGVvc3JjLm0gCQkJCQlcCitASEFWRV9JT1NfRkFMU0VACWlvc3VyZmFjZW1lbW9yeS5jCiAKIEBIQVZFX0lPU19GQUxTRUBhbV9fYXBwZW5kXzUgPSBcCiBASEFWRV9JT1NfRkFMU0VACS1XbCwtZnJhbWV3b3JrIC1XbCxDb2NvYQkJXAotQEhBVkVfSU9TX0ZBTFNFQAktV2wsLWZyYW1ld29yayAtV2wsUVRLaXQKK0BIQVZFX0lPU19GQUxTRUAJLVdsLC1mcmFtZXdvcmsgLVdsLFFUS2l0CQlcCitASEFWRV9JT1NfRkFMU0VACS1XbCwtZnJhbWV3b3JrIC1XbCxJT1N1cmZhY2UKIAogQEhBVkVfQVZGT1VOREFUSU9OX1RSVUVAYW1fX2FwcGVuZF82ID0gXAogQEhBVkVfQVZGT1VOREFUSU9OX1RSVUVACWF2ZnZpZGVvc3JjLm0JCQkJXApAQCAtMTQ0LDE2ICsxNDYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xOTYsMTEgKzE5NywxMyBAQAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKQogYW1fX2xpYmdzdGFwcGxlbWVkaWFfbGFfU09VUkNFU19ESVNUID0gcGx1Z2luLm0gdnR1dGlsLmMgXAotCWNvcmV2aWRlb2J1ZmZlci5jIGNvcmVtZWRpYWJ1ZmZlci5jIGNvcmV2aWRlb3RleHR1cmVjYWNoZS5tIFwKLQlhdGRlYy5jIGlvc2Fzc2V0c3JjLm0gcXRraXR2aWRlb3NyYy5tIGF2ZnZpZGVvc3JjLm0gXAotCWF2ZmFzc2V0c3JjLm0gYXZzYW1wbGV2aWRlb3NpbmsubSB2dGVuYy5jIHZ0ZGVjLmMKKwljb3JldmlkZW9tZW1vcnkuYyBjb3JldmlkZW9idWZmZXIuYyBjb3JlbWVkaWFidWZmZXIuYyBcCisJdmlkZW90ZXh0dXJlY2FjaGUubSBhdGRlYy5jIGdsY29udGV4dGhlbHBlci5jIGlvc2Fzc2V0c3JjLm0gXAorCXF0a2l0dmlkZW9zcmMubSBpb3N1cmZhY2VtZW1vcnkuYyBhdmZ2aWRlb3NyYy5tIGF2ZmFzc2V0c3JjLm0gXAorCWF2c2FtcGxldmlkZW9zaW5rLm0gdnRlbmMuYyB2dGRlYy5jCiBASEFWRV9JT1NfVFJVRUBhbV9fb2JqZWN0c18xID0gbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3Nhc3NldHNyYy5sbwotQEhBVkVfSU9TX0ZBTFNFQGFtX19vYmplY3RzXzIgPSBsaWJnc3RhcHBsZW1lZGlhX2xhLXF0a2l0dmlkZW9zcmMubG8KK0BIQVZFX0lPU19GQUxTRUBhbV9fb2JqZWN0c18yID0gbGliZ3N0YXBwbGVtZWRpYV9sYS1xdGtpdHZpZGVvc3JjLmxvIFwKK0BIQVZFX0lPU19GQUxTRUAJbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3N1cmZhY2VtZW1vcnkubG8KIEBIQVZFX0FWRk9VTkRBVElPTl9UUlVFQGFtX19vYmplY3RzXzMgPSAgXAogQEhBVkVfQVZGT1VOREFUSU9OX1RSVUVACWxpYmdzdGFwcGxlbWVkaWFfbGEtYXZmdmlkZW9zcmMubG8gXAogQEhBVkVfQVZGT1VOREFUSU9OX1RSVUVACWxpYmdzdGFwcGxlbWVkaWFfbGEtYXZmYXNzZXRzcmMubG8gXApAQCAtMjA5LDExICsyMTIsMTMgQEAKIEBIQVZFX1ZJREVPVE9PTEJPWF9UUlVFQAlsaWJnc3RhcHBsZW1lZGlhX2xhLXZ0ZGVjLmxvCiBhbV9saWJnc3RhcHBsZW1lZGlhX2xhX09CSkVDVFMgPSBsaWJnc3RhcHBsZW1lZGlhX2xhLXBsdWdpbi5sbyBcCiAJbGliZ3N0YXBwbGVtZWRpYV9sYS12dHV0aWwubG8gXAorCWxpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvbWVtb3J5LmxvIFwKIAlsaWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb2J1ZmZlci5sbyBcCiAJbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JlbWVkaWFidWZmZXIubG8gXAotCWxpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvdGV4dHVyZWNhY2hlLmxvIFwKLQlsaWJnc3RhcHBsZW1lZGlhX2xhLWF0ZGVjLmxvICQoYW1fX29iamVjdHNfMSkgJChhbV9fb2JqZWN0c18yKSBcCi0JJChhbV9fb2JqZWN0c18zKSAkKGFtX19vYmplY3RzXzQpCisJbGliZ3N0YXBwbGVtZWRpYV9sYS12aWRlb3RleHR1cmVjYWNoZS5sbyBcCisJbGliZ3N0YXBwbGVtZWRpYV9sYS1hdGRlYy5sbyBcCisJbGliZ3N0YXBwbGVtZWRpYV9sYS1nbGNvbnRleHRoZWxwZXIubG8gJChhbV9fb2JqZWN0c18xKSBcCisJJChhbV9fb2JqZWN0c18yKSAkKGFtX19vYmplY3RzXzMpICQoYW1fX29iamVjdHNfNCkKIGxpYmdzdGFwcGxlbWVkaWFfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0YXBwbGVtZWRpYV9sYV9PQkpFQ1RTKQogQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQogYW1fX3ZfbHRfID0gJChhbV9fdl9sdF9AQU1fREVGQVVMVF9WQCkKQEAgLTMzOSw2ICszNDQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTM3Niw2ICszODMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTM4NCw3ICszOTMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC00MDMsOCArNDExLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTQyMSwxNiArNDMwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQ1Niw2ICs0NjYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00ODEsNiArNDkzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTgyLDYgKzU5Niw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01OTUsOCArNjEwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNjEyLDYgKzYyNSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02NjksMTYgKzY4NCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTczMCw2ICs3NDcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNzQwLDYgKzc1OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTc0OSw2ICs3NjgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzg2LDcgKzgwNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtODI3LDEwICs4NDcsMTAgQEAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACiBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RhcHBsZW1lZGlhLmxhCi1saWJnc3RhcHBsZW1lZGlhX2xhX1NPVVJDRVMgPSBwbHVnaW4ubSB2dHV0aWwuYyBjb3JldmlkZW9idWZmZXIuYyBcCi0JY29yZW1lZGlhYnVmZmVyLmMgY29yZXZpZGVvdGV4dHVyZWNhY2hlLm0gYXRkZWMuYyBcCi0JJChhbV9fYXBwZW5kXzIpICQoYW1fX2FwcGVuZF80KSAkKGFtX19hcHBlbmRfNikgXAotCSQoYW1fX2FwcGVuZF84KQorbGliZ3N0YXBwbGVtZWRpYV9sYV9TT1VSQ0VTID0gcGx1Z2luLm0gdnR1dGlsLmMgY29yZXZpZGVvbWVtb3J5LmMgXAorCWNvcmV2aWRlb2J1ZmZlci5jIGNvcmVtZWRpYWJ1ZmZlci5jIHZpZGVvdGV4dHVyZWNhY2hlLm0gXAorCWF0ZGVjLmMgZ2xjb250ZXh0aGVscGVyLmMgJChhbV9fYXBwZW5kXzIpICQoYW1fX2FwcGVuZF80KSBcCisJJChhbV9fYXBwZW5kXzYpICQoYW1fX2FwcGVuZF84KQogbGliZ3N0YXBwbGVtZWRpYV9sYV9DUFBGTEFHUyA9IFwKIAktRGdzdF9jb3JlX21lZGlhX2J1ZmZlcl9uZXc9Z3N0X2NvcmVfbWVkaWFfYnVmZmVyX3ByaXZfbmV3CQlcCiAJLURnc3RfY29yZV9tZWRpYV9idWZmZXJfZ2V0X3R5cGU9Z3N0X2NvcmVfbWVkaWFfYnVmZmVyX3ByaXZfZ2V0X3R5cGUJXApAQCAtODQ1LDkgKzg2NSwxMyBAQAogCSQoR1NUX0JBU0VfQ0ZMQUdTKQkJCVwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKQogCisjIEFkZCBtaW4gdmVyc2lvbiBpbiBmcm9udCBzbyB0aGUgdXNlciBvciBjZXJiZXJvIGNhbiBvdmVycmlkZSBpdCBzaW5jZSBpdAorIyBhbHdheXMgcGlja3MgdGhlIGxhc3Qgb2NjdXJlbmNlIHdoZW4gcGFzc2luZyBzZXZlcmFsIC1tbWFjb3N4LXZlcnNpb24tbWluLgorQEhBVkVfSU9TX0ZBTFNFQEdTVF9PQkpDRkxBR1NfV0lUSF9WRVJTSU9OID0gLW1tYWNvc3gtdmVyc2lvbi1taW49MTAuOCAkKEdTVF9PQkpDRkxBR1MpCitASEFWRV9JT1NfVFJVRUBHU1RfT0JKQ0ZMQUdTX1dJVEhfVkVSU0lPTiA9ICQoR1NUX09CSkNGTEFHUykKIGxpYmdzdGFwcGxlbWVkaWFfbGFfT0JKQ0ZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyAkKEdTVF9PQkpDRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSBcCi0JJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChhbV9fYXBwZW5kXzEpCisJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgJChHU1RfT0JKQ0ZMQUdTX1dJVEhfVkVSU0lPTikgXAorCSQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKGFtX19hcHBlbmRfMSkKIGxpYmdzdGFwcGxlbWVkaWFfbGFfTElCQUREID0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtJChHU1RfQVBJX1ZFUlNJT04pLmxhIAlcCiAJJChHU1RfQkFTRV9MSUJTKQkJCQkJCVwKQEAgLTg3MiwxMCArODk2LDExIEBACiAJdnR1dGlsLmgJCQkJXAogCWNvcmV2aWRlb2J1ZmZlci5oCQkJXAogCWNvcmVtZWRpYWJ1ZmZlci5oCQkJXAotCWNvcmV2aWRlb3RleHR1cmVjYWNoZS5oCQkJXAorCXZpZGVvdGV4dHVyZWNhY2hlLmgJCQlcCiAJYXRkZWMuaCAJCQkJXAogCWlvc2Fzc2V0c3JjLmgJCQkJXAotCWF2ZmFzc2V0c3JjLmgKKwlhdmZhc3NldHNyYy5oICAJCQkJXAorCWdsY29udGV4dGhlbHBlci5oCiAKIGFsbDogYWxsLWFtCiAKQEAgLTk2MSwxMCArOTg2LDEzIEBACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1hdnNhbXBsZXZpZGVvc2luay5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtY29yZW1lZGlhYnVmZmVyLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW9idWZmZXIuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb3RleHR1cmVjYWNoZS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvbWVtb3J5LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1nbGNvbnRleHRoZWxwZXIuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLWlvc2Fzc2V0c3JjLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3N1cmZhY2VtZW1vcnkuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLXBsdWdpbi5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtcXRraXR2aWRlb3NyYy5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtdmlkZW90ZXh0dXJlY2FjaGUuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLXZ0ZGVjLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS12dGVuYy5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtdnR1dGlsLlBsb0BhbV9fcXVvdGVACkBAIC0xMDAwLDYgKzEwMjgsMTMgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLXZ0dXRpbC5sbyBgdGVzdCAtZiAndnR1dGlsLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZ0dXRpbC5jCiAKK2xpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvbWVtb3J5LmxvOiBjb3JldmlkZW9tZW1vcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb21lbW9yeS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW9tZW1vcnkuVHBvIC1jIC1vIGxpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvbWVtb3J5LmxvIGB0ZXN0IC1mICdjb3JldmlkZW9tZW1vcnkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgY29yZXZpZGVvbWVtb3J5LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvbWVtb3J5LlRwbyAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW9tZW1vcnkuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nY29yZXZpZGVvbWVtb3J5LmMnIG9iamVjdD0nbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW9tZW1vcnkubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb21lbW9yeS5sbyBgdGVzdCAtZiAnY29yZXZpZGVvbWVtb3J5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGNvcmV2aWRlb21lbW9yeS5jCisKIGxpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvYnVmZmVyLmxvOiBjb3JldmlkZW9idWZmZXIuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb2J1ZmZlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW9idWZmZXIuVHBvIC1jIC1vIGxpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvYnVmZmVyLmxvIGB0ZXN0IC1mICdjb3JldmlkZW9idWZmZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgY29yZXZpZGVvYnVmZmVyLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvYnVmZmVyLlRwbyAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW9idWZmZXIuUGxvCkBAIC0xMDIxLDYgKzEwNTYsMjAgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLWF0ZGVjLmxvIGB0ZXN0IC1mICdhdGRlYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BhdGRlYy5jCiAKK2xpYmdzdGFwcGxlbWVkaWFfbGEtZ2xjb250ZXh0aGVscGVyLmxvOiBnbGNvbnRleHRoZWxwZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RhcHBsZW1lZGlhX2xhLWdsY29udGV4dGhlbHBlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1nbGNvbnRleHRoZWxwZXIuVHBvIC1jIC1vIGxpYmdzdGFwcGxlbWVkaWFfbGEtZ2xjb250ZXh0aGVscGVyLmxvIGB0ZXN0IC1mICdnbGNvbnRleHRoZWxwZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ2xjb250ZXh0aGVscGVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtZ2xjb250ZXh0aGVscGVyLlRwbyAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1nbGNvbnRleHRoZWxwZXIuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ2xjb250ZXh0aGVscGVyLmMnIG9iamVjdD0nbGliZ3N0YXBwbGVtZWRpYV9sYS1nbGNvbnRleHRoZWxwZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLWdsY29udGV4dGhlbHBlci5sbyBgdGVzdCAtZiAnZ2xjb250ZXh0aGVscGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdsY29udGV4dGhlbHBlci5jCisKK2xpYmdzdGFwcGxlbWVkaWFfbGEtaW9zdXJmYWNlbWVtb3J5LmxvOiBpb3N1cmZhY2VtZW1vcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RhcHBsZW1lZGlhX2xhLWlvc3VyZmFjZW1lbW9yeS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3N1cmZhY2VtZW1vcnkuVHBvIC1jIC1vIGxpYmdzdGFwcGxlbWVkaWFfbGEtaW9zdXJmYWNlbWVtb3J5LmxvIGB0ZXN0IC1mICdpb3N1cmZhY2VtZW1vcnkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgaW9zdXJmYWNlbWVtb3J5LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtaW9zdXJmYWNlbWVtb3J5LlRwbyAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3N1cmZhY2VtZW1vcnkuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0naW9zdXJmYWNlbWVtb3J5LmMnIG9iamVjdD0nbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3N1cmZhY2VtZW1vcnkubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLWlvc3VyZmFjZW1lbW9yeS5sbyBgdGVzdCAtZiAnaW9zdXJmYWNlbWVtb3J5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGlvc3VyZmFjZW1lbW9yeS5jCisKIGxpYmdzdGFwcGxlbWVkaWFfbGEtdnRlbmMubG86IHZ0ZW5jLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YXBwbGVtZWRpYV9sYS12dGVuYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS12dGVuYy5UcG8gLWMgLW8gbGliZ3N0YXBwbGVtZWRpYV9sYS12dGVuYy5sbyBgdGVzdCAtZiAndnRlbmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdnRlbmMuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS12dGVuYy5UcG8gJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtdnRlbmMuUGxvCkBAIC0xMDY2LDEyICsxMTE1LDEyIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBPQkpDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoT0JKQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwT0JKQ19GQUxTRUAJJChBTV9WX09CSkNAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoT0JKQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX09CSkNGTEFHUykgJChPQkpDRkxBR1MpIC1jIC1vIGxpYmdzdGFwcGxlbWVkaWFfbGEtcGx1Z2luLmxvIGB0ZXN0IC1mICdwbHVnaW4ubScgfHwgZWNobyAnJChzcmNkaXIpLydgcGx1Z2luLm0KIAotbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW90ZXh0dXJlY2FjaGUubG86IGNvcmV2aWRlb3RleHR1cmVjYWNoZS5tCi1AYW1fX2Zhc3RkZXBPQkpDX1RSVUVACSQoQU1fVl9PQkpDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChPQkpDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfT0JKQ0ZMQUdTKSAkKE9CSkNGTEFHUykgLU1UIGxpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvdGV4dHVyZWNhY2hlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb3RleHR1cmVjYWNoZS5UcG8gLWMgLW8gbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW90ZXh0dXJlY2FjaGUubG8gYHRlc3QgLWYgJ2NvcmV2aWRlb3RleHR1cmVjYWNoZS5tJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bjb3JldmlkZW90ZXh0dXJlY2FjaGUubQotQGFtX19mYXN0ZGVwT0JKQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb3RleHR1cmVjYWNoZS5UcG8gJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvdGV4dHVyZWNhY2hlLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwT0JKQ19GQUxTRUAJJChBTV9WX09CSkMpc291cmNlPSdjb3JldmlkZW90ZXh0dXJlY2FjaGUubScgb2JqZWN0PSdsaWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb3RleHR1cmVjYWNoZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0YXBwbGVtZWRpYV9sYS12aWRlb3RleHR1cmVjYWNoZS5sbzogdmlkZW90ZXh0dXJlY2FjaGUubQorQGFtX19mYXN0ZGVwT0JKQ19UUlVFQAkkKEFNX1ZfT0JKQykkKExJQlRPT0wpICQoQU1fVl9sdCkgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoT0JKQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX09CSkNGTEFHUykgJChPQkpDRkxBR1MpIC1NVCBsaWJnc3RhcHBsZW1lZGlhX2xhLXZpZGVvdGV4dHVyZWNhY2hlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLXZpZGVvdGV4dHVyZWNhY2hlLlRwbyAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLXZpZGVvdGV4dHVyZWNhY2hlLmxvIGB0ZXN0IC1mICd2aWRlb3RleHR1cmVjYWNoZS5tJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2aWRlb3RleHR1cmVjYWNoZS5tCitAYW1fX2Zhc3RkZXBPQkpDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtdmlkZW90ZXh0dXJlY2FjaGUuVHBvICQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLXZpZGVvdGV4dHVyZWNhY2hlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwT0JKQ19GQUxTRUAJJChBTV9WX09CSkMpc291cmNlPSd2aWRlb3RleHR1cmVjYWNoZS5tJyBvYmplY3Q9J2xpYmdzdGFwcGxlbWVkaWFfbGEtdmlkZW90ZXh0dXJlY2FjaGUubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcE9CSkNfRkFMU0VACURFUERJUj0kKERFUERJUikgJChPQkpDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBPQkpDX0ZBTFNFQAkkKEFNX1ZfT0JKQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChPQkpDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfT0JKQ0ZMQUdTKSAkKE9CSkNGTEFHUykgLWMgLW8gbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW90ZXh0dXJlY2FjaGUubG8gYHRlc3QgLWYgJ2NvcmV2aWRlb3RleHR1cmVjYWNoZS5tJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bjb3JldmlkZW90ZXh0dXJlY2FjaGUubQorQGFtX19mYXN0ZGVwT0JKQ19GQUxTRUAJJChBTV9WX09CSkNAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoT0JKQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX09CSkNGTEFHUykgJChPQkpDRkxBR1MpIC1jIC1vIGxpYmdzdGFwcGxlbWVkaWFfbGEtdmlkZW90ZXh0dXJlY2FjaGUubG8gYHRlc3QgLWYgJ3ZpZGVvdGV4dHVyZWNhY2hlLm0nIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZpZGVvdGV4dHVyZWNhY2hlLm0KIAogbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3Nhc3NldHNyYy5sbzogaW9zYXNzZXRzcmMubQogQGFtX19mYXN0ZGVwT0JKQ19UUlVFQAkkKEFNX1ZfT0JKQykkKExJQlRPT0wpICQoQU1fVl9sdCkgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoT0JKQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX09CSkNGTEFHUykgJChPQkpDRkxBR1MpIC1NVCBsaWJnc3RhcHBsZW1lZGlhX2xhLWlvc2Fzc2V0c3JjLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLWlvc2Fzc2V0c3JjLlRwbyAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLWlvc2Fzc2V0c3JjLmxvIGB0ZXN0IC1mICdpb3Nhc3NldHNyYy5tJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bpb3Nhc3NldHNyYy5tCmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS9hdGRlYy5jIGIvc3lzL2FwcGxlbWVkaWEvYXRkZWMuYwppbmRleCBkNTgxZmI4Li5jMDBmMGI3IDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS9hdGRlYy5jCisrKyBiL3N5cy9hcHBsZW1lZGlhL2F0ZGVjLmMKQEAgLTI0LDcgKzI0LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249ZmlsZS5tb3YgISBxdGRlbXV4ICEgcXVldWUgISBhYWNwYXJzZSAhIGF0ZGVjICEgYXV0b2F1ZGlvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj1maWxlLm1vdiAhIHF0ZGVtdXggISBxdWV1ZSAhIGFhY3BhcnNlICEgYXRkZWMgISBhdXRvYXVkaW9zaW5rCiAgKiBdfAogICogRGVjb2RlIGFhYyBhdWRpbyBmcm9tIGEgbW92IGZpbGUKICAqIDwvcmVmc2VjdDI+CmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS9hdmZhc3NldHNyYy5tIGIvc3lzL2FwcGxlbWVkaWEvYXZmYXNzZXRzcmMubQppbmRleCAwYWFmM2FkLi40MDQ5NmE0IDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS9hdmZhc3NldHNyYy5tCisrKyBiL3N5cy9hcHBsZW1lZGlhL2F2ZmFzc2V0c3JjLm0KQEAgLTI5LDcgKzI5LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IC1tIGF2ZmFzc2V0c3JjIHVyaT0iZmlsZTovL21vdmllLm1wNCIgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiAtbSBhdmZhc3NldHNyYyB1cmk9ImZpbGU6Ly9tb3ZpZS5tcDQiICEgYXV0b3ZpZGVvc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTIwOCw5ICsyMDgsNyBAQAogCiAgIHN3aXRjaCAocHJvcF9pZCkgewogICAgIGNhc2UgUFJPUF9VUkk6Ci0gICAgICBpZiAoc2VsZi0+dXJpKSB7Ci0gICAgICAgIGdfZnJlZSAoc2VsZi0+dXJpKTsKLSAgICAgIH0KKyAgICAgIGdfZnJlZSAoc2VsZi0+dXJpKTsKICAgICAgIHNlbGYtPnVyaSA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTgyMCw5ICs4MTgsNyBAQAogCiAgIGlmIChhc3NldC5wbGF5YWJsZSkgewogICAgIHJldCA9IFRSVUU7Ci0gICAgaWYgKHNlbGYtPnVyaSkgewotICAgICAgZ19mcmVlIChzZWxmLT51cmkpOwotICAgIH0KKyAgICBnX2ZyZWUgKHNlbGYtPnVyaSk7CiAgICAgc2VsZi0+dXJpID0gZ19zdHJkdXAgKHVyaSk7CiAgIH0gZWxzZSB7CiAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfVVJJX0VSUk9SLCBHU1RfVVJJX0VSUk9SX0JBRF9VUkksCkBAIC0xMDgzLDcgKzEwNzksNyBAQAogICAgIHJldHVybiBOVUxMOwogICB9CiAKLSAgYnVmID0gZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX25ldyAoY21idWYsIEZBTFNFLCBUUlVFKTsKKyAgYnVmID0gZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX25ldyAoY21idWYsIEZBTFNFKTsKICAgQ0ZSZWxlYXNlIChjbWJ1Zik7CiAgIGlmIChidWYgPT0gTlVMTCkKICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL3N5cy9hcHBsZW1lZGlhL2F2ZnZpZGVvc3JjLm0gYi9zeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tCmluZGV4IGEwMzNhYzAuLjUyOWJkODUgMTAwNjQ0Ci0tLSBhL3N5cy9hcHBsZW1lZGlhL2F2ZnZpZGVvc3JjLm0KKysrIGIvc3lzL2FwcGxlbWVkaWEvYXZmdmlkZW9zcmMubQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgT2xlIEFuZHLDqSBWYWRsYSBSYXZuw6VzIDxvbGVhdnJAc291bmRyb3AuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFsZXNzYW5kcm8gRGVjaW5hIDx0d2lAY2VudHJpY3VsYXIuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw2ICsyMyw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgImF2ZnZpZGVvc3JjLmgiCisjaW5jbHVkZSAiZ2xjb250ZXh0aGVscGVyLmgiCiAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4KICNpZiAhSEFWRV9JT1MKQEAgLTMwLDcgKzMyLDcgQEAKICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xjb250ZXh0Lmg+CiAjaW5jbHVkZSAiY29yZW1lZGlhYnVmZmVyLmgiCi0jaW5jbHVkZSAiY29yZXZpZGVvdGV4dHVyZWNhY2hlLmgiCisjaW5jbHVkZSAidmlkZW90ZXh0dXJlY2FjaGUuaCIKIAogI2RlZmluZSBERUZBVUxUX0RFVklDRV9JTkRFWCAgLTEKICNkZWZpbmUgREVGQVVMVF9ET19TVEFUUyAgICAgIEZBTFNFCkBAIC00Niw3ICs0OCwxOSBAQAogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY190ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKICAgICBHU1RfUEFEX1NSQywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdywgIgorICAgIEdTVF9TVEFUSUNfQ0FQUyAoCisjaWYgIUhBVkVfSU9TCisgICAgICAgIEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUworICAgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLAorICAgICAgICAgICAgIlVZVlkiKSAiLCAiCisgICAgICAgICJ0ZXh0dXJlLXRhcmdldCA9ICIgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFIgIjsiCisjZWxzZQorICAgICAgICBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKKyAgICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwKKyAgICAgICAgICAgICJOVjEyIikgIiwgIgorICAgICAgICAidGV4dHVyZS10YXJnZXQgPSAiIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFIgIjsgIgorI2VuZGlmCisgICAgICAgICJ2aWRlby94LXJhdywgIgogICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgeyBOVjEyLCBVWVZZLCBZVVkyIH0sICIKICAgICAgICAgImZyYW1lcmF0ZSA9ICIgR1NUX1ZJREVPX0ZQU19SQU5HRSAiLCAiCiAgICAgICAgICJ3aWR0aCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgpAQCAtNTcsMTAgKzcxLDYgQEAKICAgICAgICAgImZyYW1lcmF0ZSA9ICIgR1NUX1ZJREVPX0ZQU19SQU5HRSAiLCAiCiAgICAgICAgICJ3aWR0aCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgogICAgICAgICAiaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiOyAiCi0KLSAgICAgICAgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTCi0gICAgICAgIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksCi0gICAgICAgICAgICAiUkdCQSIpICI7ICIKICkpOwogCiB0eXBlZGVmIGVudW0gX1F1ZXVlU3RhdGUgewpAQCAtOTMsNyArMTAzLDYgQEAKICAgQk9PTCBzdG9wUmVxdWVzdDsKIAogICBHc3RDYXBzICpjYXBzOwotICBHc3RWaWRlb0Zvcm1hdCBpbnRlcm5hbEZvcm1hdDsKICAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0OwogICBnaW50IHdpZHRoLCBoZWlnaHQ7CiAgIEdzdENsb2NrVGltZSBsYXRlbmN5OwpAQCAtMTA3LDcgKzExNiw4IEBACiAgIEJPT0wgY2FwdHVyZVNjcmVlbk1vdXNlQ2xpY2tzOwogCiAgIEJPT0wgdXNlVmlkZW9NZXRhOwotICBHc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGUgKnRleHR1cmVDYWNoZTsKKyAgR3N0R0xDb250ZXh0SGVscGVyICpjdHhoOworICBHc3RWaWRlb1RleHR1cmVDYWNoZSAqdGV4dHVyZUNhY2hlOwogfQogCiAtIChpZClpbml0OwpAQCAtMTI5LDcgKzEzOSw3IEBACiAjaWYgIUhBVkVfSU9TCiAtIChDR0RpcmVjdERpc3BsYXlJRClnZXREaXNwbGF5SWRGcm9tRGV2aWNlSW5kZXg7CiAjZW5kaWYKLS0gKEJPT0wpZ2V0RGV2aWNlQ2FwczooR3N0Q2FwcyAqKXJlc3VsdDsKKy0gKEdzdENhcHMgKilnZXREZXZpY2VDYXBzOwogLSAoQk9PTClzZXREZXZpY2VDYXBzOihHc3RWaWRlb0luZm8gKilpbmZvOwogLSAoQk9PTClnZXRTZXNzaW9uUHJlc2V0Q2FwczooR3N0Q2FwcyAqKXJlc3VsdDsKIC0gKEJPT0wpc2V0U2Vzc2lvblByZXNldENhcHM6KEdzdFZpZGVvSW5mbyAqKWluZm87CkBAIC0xNDAsOCArMTUwLDExIEBACiAtIChCT09MKXVubG9jazsKIC0gKEJPT0wpdW5sb2NrU3RvcDsKIC0gKEJPT0wpcXVlcnk6KEdzdFF1ZXJ5ICopcXVlcnk7CistICh2b2lkKXNldENvbnRleHQ6KEdzdENvbnRleHQgKiljb250ZXh0OwogLSAoR3N0U3RhdGVDaGFuZ2VSZXR1cm4pY2hhbmdlU3RhdGU6KEdzdFN0YXRlQ2hhbmdlKXRyYW5zaXRpb247CiAtIChHc3RGbG93UmV0dXJuKWNyZWF0ZTooR3N0QnVmZmVyICoqKWJ1ZjsKKy0gKEdzdENhcHMgKilmaXhhdGU6KEdzdENhcHMgKiljYXBzOworLSAoQk9PTClkZWNpZGVBbGxvY2F0aW9uOihHc3RRdWVyeSAqKXF1ZXJ5OwogLSAodm9pZCl1cGRhdGVTdGF0aXN0aWNzOwogLSAodm9pZCljYXB0dXJlT3V0cHV0OihBVkNhcHR1cmVPdXRwdXQgKiljYXB0dXJlT3V0cHV0CiBkaWRPdXRwdXRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgpAQCAtMTcyLDcgKzE4NSw3IEBACiAgICAgY2FwdHVyZVNjcmVlbk1vdXNlQ2xpY2tzID0gTk87CiAgICAgdXNlVmlkZW9NZXRhID0gTk87CiAgICAgdGV4dHVyZUNhY2hlID0gTlVMTDsKLQorICAgIGN0eGggPSBnc3RfZ2xfY29udGV4dF9oZWxwZXJfbmV3IChlbGVtZW50KTsKICAgICBtYWluUXVldWUgPQogICAgICAgICBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUgKCJvcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmF2ZnZpZGVvc3JjLm1haW4iLCBOVUxMKTsKICAgICB3b3JrZXJRdWV1ZSA9CkBAIC0zNzMsOSArMzg2LDYgQEAKICAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBOiAvKiBCR1JBICovCiAgICAgZ3N0X2Zvcm1hdCA9IEdTVF9WSURFT19GT1JNQVRfQkdSQTsKICAgICBicmVhazsKLSAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJSR0JBOiAvKiBSR0JBICovCi0gICAgZ3N0X2Zvcm1hdCA9IEdTVF9WSURFT19GT1JNQVRfUkdCQTsKLSAgICBicmVhazsKICAgY2FzZSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIyWXBDYkNyOF95dXZzOiAvKiB5dXZzICovCiAgICAgZ3N0X2Zvcm1hdCA9IEdTVF9WSURFT19GT1JNQVRfWVVZMjsKICAgICBicmVhazsKQEAgLTQwOCwxMyArNDE4LDIyIEBACiB9CiAjZW5kaWYKIAotLSAoQk9PTClnZXREZXZpY2VDYXBzOihHc3RDYXBzICopcmVzdWx0CistIChHc3RDYXBzICopZ2V0RGV2aWNlQ2FwcwogewogICBOU0FycmF5ICpmb3JtYXRzID0gW2RldmljZSB2YWx1ZUZvcktleTpAImZvcm1hdHMiXTsKICAgTlNBcnJheSAqcGl4ZWxfZm9ybWF0cyA9IG91dHB1dC5hdmFpbGFibGVWaWRlb0NWUGl4ZWxGb3JtYXRUeXBlczsKKyAgR3N0Q2FwcyAqcmVzdWx0X2NhcHMsICpyZXN1bHRfZ2xfY2FwczsKKyNpZiAhSEFWRV9JT1MKKyAgR3N0VmlkZW9Gb3JtYXQgZ2xfZm9ybWF0ID0gR1NUX1ZJREVPX0ZPUk1BVF9VWVZZOworI2Vsc2UKKyAgR3N0VmlkZW9Gb3JtYXQgZ2xfZm9ybWF0ID0gR1NUX1ZJREVPX0ZPUk1BVF9OVjEyOworI2VuZGlmCiAKICAgR1NUX0RFQlVHX09CSkVDVCAoZWxlbWVudCwgIkdldHRpbmcgZGV2aWNlIGNhcHMiKTsKIAorICByZXN1bHRfY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eSAoKTsKKyAgcmVzdWx0X2dsX2NhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7CisKICAgLyogRG8gbm90IHVzZSBBVkNhcHR1cmVEZXZpY2VGb3JtYXQgb3IgQVZGcmFtZVJhdGVSYW5nZSBvbmx5CiAgICAqIGF2YWlsYWJsZSBpbiBpT1MgPj0gNy4wLiBXZSB1c2UgYSBkeW5hbWljIGFwcHJvYWNoIHdpdGgga2V5LXZhbHVlCiAgICAqIGNvZGluZyBvciBwZXJmb3JtU2VsZWN0b3IgKi8KQEAgLTQzNywyNyArNDU2LDQ4IEBACiAKICAgICAgIGZvciAoTlNOdW1iZXIgKnBpeGVsX2Zvcm1hdCBpbiBwaXhlbF9mb3JtYXRzKSB7CiAgICAgICAgIEdzdFZpZGVvRm9ybWF0IGdzdF9mb3JtYXQgPSBbc2VsZiBnZXRHc3RWaWRlb0Zvcm1hdDpwaXhlbF9mb3JtYXRdOworCiAgICAgICAgIGlmIChnc3RfZm9ybWF0ICE9IEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTikgewogICAgICAgICAgIGlmIChtaW5fZnBzICE9IG1heF9mcHMpCi0gICAgICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKHJlc3VsdCwgR1NUX0FWRl9GUFNfUkFOR0VfQ0FQU19ORVcgKGdzdF9mb3JtYXQsIGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBtaW5fZnBzX24sIG1pbl9mcHNfZCwgbWF4X2Zwc19uLCBtYXhfZnBzX2QpKTsKKyAgICAgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAocmVzdWx0X2NhcHMsIEdTVF9BVkZfRlBTX1JBTkdFX0NBUFNfTkVXIChnc3RfZm9ybWF0LCBkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmhlaWdodCwgbWluX2Zwc19uLCBtaW5fZnBzX2QsIG1heF9mcHNfbiwgbWF4X2Zwc19kKSk7CiAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChyZXN1bHQsIEdTVF9BVkZfQ0FQU19ORVcgKGdzdF9mb3JtYXQsIGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBtYXhfZnBzX24sIG1heF9mcHNfZCkpOworICAgICAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChyZXN1bHRfY2FwcywgR1NUX0FWRl9DQVBTX05FVyAoZ3N0X2Zvcm1hdCwgZGltZW5zaW9ucy53aWR0aCwgZGltZW5zaW9ucy5oZWlnaHQsIG1heF9mcHNfbiwgbWF4X2Zwc19kKSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZ3N0X2Zvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX0JHUkEpIHsKLSAgICAgICAgICBHc3RDYXBzICpyZ2JhX2NhcHM7Ci0gICAgICAgICAgaWYgKG1pbl9mcHMgIT0gbWF4X2ZwcykKLSAgICAgICAgICAgIHJnYmFfY2FwcyA9IEdTVF9BVkZfRlBTX1JBTkdFX0NBUFNfTkVXIChHU1RfVklERU9fRk9STUFUX1JHQkEsIGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBtaW5fZnBzX24sIG1pbl9mcHNfZCwgbWF4X2Zwc19uLCBtYXhfZnBzX2QpOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJnYmFfY2FwcyA9IEdTVF9BVkZfQ0FQU19ORVcgKEdTVF9WSURFT19GT1JNQVRfUkdCQSwgZGltZW5zaW9ucy53aWR0aCwgZGltZW5zaW9ucy5oZWlnaHQsIG1heF9mcHNfbiwgbWF4X2Zwc19kKTsKLSAgICAgICAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMgKHJnYmFfY2FwcywgMCwgZ3N0X2NhcHNfZmVhdHVyZXNfbmV3IChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksIE5VTEwpKTsKLSAgICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKHJlc3VsdCwgcmdiYV9jYXBzKTsKKyAgICAgICAgaWYgKGdzdF9mb3JtYXQgPT0gZ2xfZm9ybWF0KSB7CisgICAgICAgICAgR3N0Q2FwcyAqZ2xfY2FwczsKKyAgICAgICAgICBpZiAobWluX2ZwcyAhPSBtYXhfZnBzKSB7CisgICAgICAgICAgICBnbF9jYXBzID0gR1NUX0FWRl9GUFNfUkFOR0VfQ0FQU19ORVcgKGdsX2Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgZGltZW5zaW9ucy53aWR0aCwgZGltZW5zaW9ucy5oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgIG1pbl9mcHNfbiwgbWluX2Zwc19kLAorICAgICAgICAgICAgICAgICAgICBtYXhfZnBzX24sIG1heF9mcHNfZCk7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdsX2NhcHMgPSBHU1RfQVZGX0NBUFNfTkVXIChnbF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICBtYXhfZnBzX24sIG1heF9mcHNfZCk7CisgICAgICAgICAgfQorICAgICAgICAgIGdzdF9jYXBzX3NldF9mZWF0dXJlcyAoZ2xfY2FwcywgMCwKKyAgICAgICAgICAgICAgICAgIGdzdF9jYXBzX2ZlYXR1cmVzX25ldyAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKTsKKyAgICAgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChnbF9jYXBzLAorICAgICAgICAgICAgICAgICAgInRleHR1cmUtdGFyZ2V0IiwgR19UWVBFX1NUUklORywKKyNpZiAhSEFWRV9JT1MKKyAgICAgICAgICAgICAgICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEVfU1RSLAorI2Vsc2UKKyAgICAgICAgICAgICAgICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFIsCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAocmVzdWx0X2dsX2NhcHMsIGdsX2NhcHMpOwogICAgICAgICB9CiAgICAgICB9CiAgICAgfQogICB9Ci0gIEdTVF9MT0dfT0JKRUNUIChlbGVtZW50LCAiRGV2aWNlIHJldHVybmVkIHRoZSBmb2xsb3dpbmcgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgcmVzdWx0KTsKLSAgcmV0dXJuIFlFUzsKKworICByZXN1bHRfZ2xfY2FwcyA9IGdzdF9jYXBzX3NpbXBsaWZ5IChnc3RfY2Fwc19tZXJnZSAocmVzdWx0X2dsX2NhcHMsIHJlc3VsdF9jYXBzKSk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoZWxlbWVudCwgIkRldmljZSByZXR1cm5lZCB0aGUgZm9sbG93aW5nIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIHJlc3VsdF9nbF9jYXBzKTsKKworICByZXR1cm4gcmVzdWx0X2dsX2NhcHM7CiB9CiAKIC0gKEJPT0wpc2V0RGV2aWNlQ2FwczooR3N0VmlkZW9JbmZvICopaW5mbwpAQCAtNDg2LDE2ICs1MjYsMjIgQEAKICAgICAgICAgICBbW3JhdGUgdmFsdWVGb3JLZXk6QCJtYXhGcmFtZVJhdGUiXSBnZXRWYWx1ZTombWF4X2ZyYW1lX3JhdGVdOwogICAgICAgICAgIGlmICgoZnJhbWVyYXRlID49IG1pbl9mcmFtZV9yYXRlIC0gMC4wMDAwMSkgJiYKICAgICAgICAgICAgICAgKGZyYW1lcmF0ZSA8PSBtYXhfZnJhbWVfcmF0ZSArIDAuMDAwMDEpKSB7Ci0gICAgICAgICAgICBOU1ZhbHVlICptaW5fZnJhbWVfZHVyYXRpb24sICptYXhfZnJhbWVfZHVyYXRpb247Ci0KKyAgICAgICAgICAgIE5TVmFsdWUgKmZyYW1lX2R1cmF0aW9uX3ZhbHVlOwogICAgICAgICAgICAgZm91bmRfZnJhbWVyYXRlID0gVFJVRTsKLSAgICAgICAgICAgIG1pbl9mcmFtZV9kdXJhdGlvbiA9IFtyYXRlIHZhbHVlRm9yS2V5OkAibWluRnJhbWVEdXJhdGlvbiJdOwotICAgICAgICAgICAgbWF4X2ZyYW1lX2R1cmF0aW9uID0gW3JhdGUgdmFsdWVGb3JLZXk6QCJtYXhGcmFtZUR1cmF0aW9uIl07Ci0gICAgICAgICAgICBbZGV2aWNlIHNldFZhbHVlOm1pbl9mcmFtZV9kdXJhdGlvbiBmb3JLZXk6QCJhY3RpdmVWaWRlb01pbkZyYW1lRHVyYXRpb24iXTsKKyAgICAgICAgICAgIGlmIChtaW5fZnJhbWVfcmF0ZSA9PSBtYXhfZnJhbWVfcmF0ZSkgeworICAgICAgICAgICAgICAvKiBvbiBtYWMgd2UgZ2V0IHRpZ2h0IHJhbmdlcyBhbmQgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiB0aGUKKyAgICAgICAgICAgICAgICogZnJhbWUgZHVyYXRpb24gZG9lc24ndCBtYXRjaCB0aGUgb25lIHJlcG9ydGVkIGluIHRoZSByYW5nZSB0bworICAgICAgICAgICAgICAgKiB0aGUgbGFzdCBkZWNpbWFsIHBvaW50CisgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICBmcmFtZV9kdXJhdGlvbl92YWx1ZSA9IFtyYXRlIHZhbHVlRm9yS2V5OkAibWluRnJhbWVEdXJhdGlvbiJdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgLy8gSW52ZXJ0IGZwc19uIGFuZCBmcHNfZCB0byBnZXQgZnJhbWUgZHVyYXRpb24gdmFsdWUgYW5kIHRpbWVzY2FsZSAob3IgbnVtZXJhdG9yIGFuZCBkZW5vbWluYXRvcikKKyAgICAgICAgICAgICAgZnJhbWVfZHVyYXRpb25fdmFsdWUgPSBbTlNWYWx1ZSB2YWx1ZVdpdGhDTVRpbWU6Q01UaW1lTWFrZSAoaW5mby0+ZnBzX2QsIGluZm8tPmZwc19uKV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBbZGV2aWNlIHNldFZhbHVlOmZyYW1lX2R1cmF0aW9uX3ZhbHVlIGZvcktleTpAImFjdGl2ZVZpZGVvTWluRnJhbWVEdXJhdGlvbiJdOwogICAgICAgICAgICAgQHRyeSB7CiAgICAgICAgICAgICAgIC8qIE9ubHkgYXZhaWxhYmxlIG9uIE9TWCA+PSAxMC44IGFuZCBpT1MgPj0gNy4wICovCi0gICAgICAgICAgICAgIC8vIFJlc3RyaWN0IGFjdGl2ZVZpZGVvTWF4RnJhbWVEdXJhdGlvbiB0byB0aGUgbWluaW11bSB2YWx1ZSBzbyB3ZSBnZXQgYSBiZXR0ZXIgY2FwdHVyZSBmcmFtZSByYXRlCi0gICAgICAgICAgICAgIFtkZXZpY2Ugc2V0VmFsdWU6bWluX2ZyYW1lX2R1cmF0aW9uIGZvcktleTpAImFjdGl2ZVZpZGVvTWF4RnJhbWVEdXJhdGlvbiJdOworICAgICAgICAgICAgICBbZGV2aWNlIHNldFZhbHVlOmZyYW1lX2R1cmF0aW9uX3ZhbHVlIGZvcktleTpAImFjdGl2ZVZpZGVvTWF4RnJhbWVEdXJhdGlvbiJdOwogICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKICAgICAgICAgICAgICAgaWYgKCFbW2V4Y2VwdGlvbiBuYW1lXSBpc0VxdWFsVG9TdHJpbmc6TlNVbmRlZmluZWRLZXlFeGNlcHRpb25dKSB7CiAgICAgICAgICAgICAgICAgR1NUX1dBUk5JTkcgKCJBbiB1bmV4Y2VwdGVkIGVycm9yIG9jY3VyZWQ6ICVzIiwKQEAgLTYxOCwxMSArNjY0LDggQEAKICAgfQogCiAgIEB0cnkgewotCi0gICAgW3NlbGYgZ2V0RGV2aWNlQ2FwczpyZXN1bHRdOwotCisgICAgcmVzdWx0ID0gZ3N0X2NhcHNfbWVyZ2UgKHJlc3VsdCwgW3NlbGYgZ2V0RGV2aWNlQ2Fwc10pOwogICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmV4Y2VwdGlvbikgewotCiAgICAgaWYgKCFbW2V4Y2VwdGlvbiBuYW1lXSBpc0VxdWFsVG9TdHJpbmc6TlNVbmRlZmluZWRLZXlFeGNlcHRpb25dKSB7CiAgICAgICBHU1RfV0FSTklORyAoIkFuIHVuZXhjZXB0ZWQgZXJyb3Igb2NjdXJlZDogJXMiLCBbZXhjZXB0aW9uLnJlYXNvbiBVVEY4U3RyaW5nXSk7CiAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjQ2LDE0ICs2ODksMTEgQEAKICAgd2lkdGggPSBpbmZvLndpZHRoOwogICBoZWlnaHQgPSBpbmZvLmhlaWdodDsKICAgZm9ybWF0ID0gaW5mby5maW5mby0+Zm9ybWF0OwotICBpbnRlcm5hbEZvcm1hdCA9IEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTjsKICAgbGF0ZW5jeSA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoR1NUX1NFQ09ORCwgaW5mby5mcHNfZCwgaW5mby5mcHNfbik7CiAKICAgZGlzcGF0Y2hfc3luYyAobWFpblF1ZXVlLCBeewogICAgIGludCBuZXdmb3JtYXQ7CiAKLSAgICBnX2Fzc2VydCAoIVtzZXNzaW9uIGlzUnVubmluZ10pOwotCiAgICAgaWYgKGNhcHR1cmVTY3JlZW4pIHsKICNpZiAhSEFWRV9JT1MKICAgICAgIEFWQ2FwdHVyZVNjcmVlbklucHV0ICpzY3JlZW5JbnB1dCA9IChBVkNhcHR1cmVTY3JlZW5JbnB1dCAqKWlucHV0OwpAQCAtNjg2LDcgKzcyNiw2IEBACiAgICAgICB9CiAgICAgfQogCi0gICAgaW50ZXJuYWxGb3JtYXQgPSBmb3JtYXQ7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyOgogICAgICAgICBuZXdmb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZTsKQEAgLTY5NywxNSArNzM2LDYgQEAKICAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVVkyOgogICAgICAgICBuZXdmb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIyWXBDYkNyOF95dXZzOwogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBOgotI2lmICFIQVZFX0lPUwotICAgICAgICBuZXdmb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIyWXBDYkNyODsKLSAgICAgICAgaW50ZXJuYWxGb3JtYXQgPSBHU1RfVklERU9fRk9STUFUX1VZVlk7Ci0jZWxzZQotICAgICAgICBuZXdmb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBOwotICAgICAgICBpbnRlcm5hbEZvcm1hdCA9IEdTVF9WSURFT19GT1JNQVRfQkdSQTsKLSNlbmRpZgotICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1JBOgogICAgICAgICBuZXdmb3JtYXQgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfMzJCR1JBOwogICAgICAgICBicmVhazsKQEAgLTcxNiwxOSArNzQ2LDE5IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBHU1RfSU5GT19PQkpFQ1QoZWxlbWVudCwKLSAgICAgICAgIndpZHRoOiAlZCBoZWlnaHQ6ICVkIGZvcm1hdDogJXMgaW50ZXJuYWxGb3JtYXQ6ICVzIiwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAgZ3N0X3ZpZGVvX2Zvcm1hdF90b19zdHJpbmcgKGZvcm1hdCksCi0gICAgICAgIGdzdF92aWRlb19mb3JtYXRfdG9fc3RyaW5nIChpbnRlcm5hbEZvcm1hdCkpOworICAgIEdTVF9JTkZPX09CSkVDVCAoZWxlbWVudCwKKyAgICAgICAgIndpZHRoOiAlZCBoZWlnaHQ6ICVkIGZvcm1hdDogJXMiLCB3aWR0aCwgaGVpZ2h0LAorICAgICAgICBnc3RfdmlkZW9fZm9ybWF0X3RvX3N0cmluZyAoZm9ybWF0KSk7CiAKICAgICBvdXRwdXQudmlkZW9TZXR0aW5ncyA9IFtOU0RpY3Rpb25hcnkKICAgICAgICAgZGljdGlvbmFyeVdpdGhPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bmV3Zm9ybWF0XQogICAgICAgICBmb3JLZXk6KE5TU3RyaW5nKilrQ1ZQaXhlbEJ1ZmZlclBpeGVsRm9ybWF0VHlwZUtleV07CiAKLSAgICBpZiAoY2FwcykKLSAgICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLSAgICBjYXBzID0gZ3N0X2NhcHNfY29weSAobmV3X2NhcHMpOwotICAgIFtzZXNzaW9uIHN0YXJ0UnVubmluZ107CisgICAgZ3N0X2NhcHNfcmVwbGFjZSAoJmNhcHMsIG5ld19jYXBzKTsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKGVsZW1lbnQsICJjb25maWd1cmVkIGNhcHMgJSJHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CisKKyAgICBpZiAoIVtzZXNzaW9uIGlzUnVubmluZ10pCisgICAgICBbc2Vzc2lvbiBzdGFydFJ1bm5pbmddOwogCiAgICAgLyogVW5sb2NrIGRldmljZSBjb25maWd1cmF0aW9uIG9ubHkgYWZ0ZXIgc2Vzc2lvbiBpcyBzdGFydGVkIHNvIHRoZSBzZXNzaW9uCiAgICAgICogd29uJ3QgcmVzZXQgdGhlIGNhcHR1cmUgZm9ybWF0cyAqLwpAQCAtNzY1LDkgKzc5NSwxMyBAQAogICBidWZRdWV1ZSA9IG5pbDsKIAogICBpZiAodGV4dHVyZUNhY2hlKQotICAgICAgZ3N0X2NvcmVfdmlkZW9fdGV4dHVyZV9jYWNoZV9mcmVlICh0ZXh0dXJlQ2FjaGUpOworICAgIGdzdF92aWRlb190ZXh0dXJlX2NhY2hlX2ZyZWUgKHRleHR1cmVDYWNoZSk7CiAgIHRleHR1cmVDYWNoZSA9IE5VTEw7CiAKKyAgaWYgKGN0eGgpCisgICAgZ3N0X2dsX2NvbnRleHRfaGVscGVyX2ZyZWUgKGN0eGgpOworICBjdHhoID0gTlVMTDsKKwogICByZXR1cm4gWUVTOwogfQogCkBAIC03OTQsNDMgKzgyOCw2IEBACiAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS0gKEJPT0wpZGVjaWRlQWxsb2NhdGlvbjooR3N0UXVlcnkgKilxdWVyeQotewotICB1c2VWaWRlb01ldGEgPSBnc3RfcXVlcnlfZmluZF9hbGxvY2F0aW9uX21ldGEgKHF1ZXJ5LAotICAgICAgR1NUX1ZJREVPX01FVEFfQVBJX1RZUEUsIE5VTEwpOwotCi0gIC8qIGRldGVybWluZSB3aGV0aGVyIHdlIGNhbiBwYXNzIEdMIHRleHR1cmVzIHRvIGRvd25zdHJlYW0gZWxlbWVudCAqLwotICBHc3RDYXBzRmVhdHVyZXMgKmZlYXR1cmVzID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChjYXBzLCAwKTsKLSAgaWYgKGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmZWF0dXJlcywgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKSkgewotICAgIEdzdEdMQ29udGV4dCAqZ2xDb250ZXh0ID0gTlVMTDsKLQotICAgIC8qIGdldCBHTCBjb250ZXh0IGZyb20gZG93bnN0cmVhbSBlbGVtZW50ICovCi0gICAgR3N0UXVlcnkgKnF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19jb250ZXh0ICgiZ3N0LmdsLmxvY2FsX2NvbnRleHQiKTsKLSAgICBpZiAoZ3N0X3BhZF9wZWVyX3F1ZXJ5IChHU1RfQkFTRV9TUkNfUEFEIChlbGVtZW50KSwgcXVlcnkpKSB7Ci0gICAgICBHc3RDb250ZXh0ICpjb250ZXh0OwotICAgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY29udGV4dCk7Ci0gICAgICBpZiAoY29udGV4dCkgewotICAgICAgICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3RfY29udGV4dF9nZXRfc3RydWN0dXJlIChjb250ZXh0KTsKLSAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXQgKHMsICJjb250ZXh0IiwgR1NUX0dMX1RZUEVfQ09OVEVYVCwgJmdsQ29udGV4dCwKLSAgICAgICAgICAgIE5VTEwpOwotICAgICAgfQotICAgIH0KLSAgICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKLQotICAgIGlmIChnbENvbnRleHQpIHsKLSAgICAgIEdTVF9JTkZPX09CSkVDVCAoZWxlbWVudCwgInB1c2hpbmcgdGV4dHVyZXMuIEludGVybmFsIGZvcm1hdCAlcywgY29udGV4dCAlcCIsCi0gICAgICAgICAgZ3N0X3ZpZGVvX2Zvcm1hdF90b19zdHJpbmcgKGludGVybmFsRm9ybWF0KSwgZ2xDb250ZXh0KTsKLSAgICAgIHRleHR1cmVDYWNoZSA9IGdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfbmV3IChnbENvbnRleHQpOwotICAgICAgZ3N0X2NvcmVfdmlkZW9fdGV4dHVyZV9jYWNoZV9zZXRfZm9ybWF0ICh0ZXh0dXJlQ2FjaGUsIGludGVybmFsRm9ybWF0LCBjYXBzKTsKLSAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGdsQ29udGV4dCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZWxlbWVudCwgImdvdCBtZW1vcnk6R0xNZW1vcnkgY2FwcyBidXQgbm90IEdMIGNvbnRleHQgZnJvbSBkb3duc3RyZWFtIGVsZW1lbnQiKTsKLSAgICB9Ci0gIH0gCi0KLSAgcmV0dXJuIFlFUzsKLX0KLQogLSAoQk9PTCl1bmxvY2sKIHsKICAgW2J1ZlF1ZXVlTG9jayBsb2NrXTsKQEAgLTk0MSwyNSArOTM4LDE1IEBACiAgICAgfQogICB9CiAKLSAgKmJ1ZiA9IGdzdF9jb3JlX21lZGlhX2J1ZmZlcl9uZXcgKHNidWYsIHVzZVZpZGVvTWV0YSwgdGV4dHVyZUNhY2hlID09IE5VTEwpOworICAqYnVmID0gZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX25ldyAoc2J1ZiwgdXNlVmlkZW9NZXRhKTsKICAgaWYgKCpidWYgPT0gTlVMTCkgewogICAgIENGUmVsZWFzZSAoc2J1Zik7CiAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICB9Ci0KLSAgaWYgKGZvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX1JHQkEpIHsKLSAgICAvKiBTbyBub3cgYnVmIGNvbnRhaW5zIEJHUkEgZGF0YSAoISkgLiBTaW5jZSBkb3duc3RyZWFtIGlzIGFjdHVhbGx5IGdvaW5nIHRvCi0gICAgICogdXNlIHRoZSBHTCB1cGxvYWQgbWV0YSB0byBnZXQgUkdCQSB0ZXh0dXJlcyAoPz8pLCB3ZSBuZWVkIHRvIG92ZXJyaWRlIHRoZQotICAgICAqIFZpZGVvTWV0YSBmb3JtYXQgKCEhISkuIFllcyB0aGlzIGlzIGNvbmZ1c2luZywgc2VlIHNldENhcHM6ICAqLwotICAgIEdzdFZpZGVvTWV0YSAqdmlkZW9fbWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX21ldGEgKCpidWYpOwotICAgIGlmICh2aWRlb19tZXRhKSB7Ci0gICAgICB2aWRlb19tZXRhLT5mb3JtYXQgPSBmb3JtYXQ7Ci0gICAgfQotICB9CiAgIENGUmVsZWFzZSAoc2J1Zik7CiAKICAgaWYgKHRleHR1cmVDYWNoZSAhPSBOVUxMKSB7Ci0gICAgKmJ1ZiA9IGdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfZ2V0X2dsX2J1ZmZlciAodGV4dHVyZUNhY2hlLCAqYnVmKTsKKyAgICAqYnVmID0gZ3N0X3ZpZGVvX3RleHR1cmVfY2FjaGVfZ2V0X2dsX2J1ZmZlciAodGV4dHVyZUNhY2hlLCAqYnVmKTsKICAgICBpZiAoKmJ1ZiA9PSBOVUxMKQogICAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICB9CkBAIC05NzUsNiArOTYyLDU3IEBACiAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIAorLSAoR3N0Q2FwcyAqKWZpeGF0ZTooR3N0Q2FwcyAqKW5ld19jYXBzCit7CisgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOworCisgIG5ld19jYXBzID0gZ3N0X2NhcHNfbWFrZV93cml0YWJsZSAobmV3X2NhcHMpOworICBuZXdfY2FwcyA9IGdzdF9jYXBzX3RydW5jYXRlIChuZXdfY2Fwcyk7CisgIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKG5ld19jYXBzLCAwKTsKKyAgLyogY3JhbmsgdXAgdG8gMTEuIFRoaXMgaXMgd2hhdCB0aGUgcHJlc2V0cyBkbywgYnV0IHdlIGRvbid0IHVzZSB0aGUgcHJlc2V0cworICAgKiBpbiBpb3MgPj0gNy4wICovCisgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfaW50IChzdHJ1Y3R1cmUsICJoZWlnaHQiLCBHX01BWElOVCk7CisgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24gKHN0cnVjdHVyZSwgImZyYW1lcmF0ZSIsIEdfTUFYSU5ULCAxKTsKKworICByZXR1cm4gZ3N0X2NhcHNfZml4YXRlIChuZXdfY2Fwcyk7Cit9CisKKy0gKEJPT0wpZGVjaWRlQWxsb2NhdGlvbjooR3N0UXVlcnkgKilxdWVyeQoreworICBHc3RDYXBzICphbGxvY19jYXBzOworICBHc3RDYXBzRmVhdHVyZXMgKmZlYXR1cmVzOworICBnYm9vbGVhbiByZXQ7CisKKyAgcmV0ID0gR1NUX0JBU0VfU1JDX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5kZWNpZGVfYWxsb2NhdGlvbiAoYmFzZVNyYywgcXVlcnkpOworICBpZiAoIXJldCkKKyAgICByZXR1cm4gcmV0OworCisgIGdzdF9xdWVyeV9wYXJzZV9hbGxvY2F0aW9uIChxdWVyeSwgJmFsbG9jX2NhcHMsIE5VTEwpOworICBmZWF0dXJlcyA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAoYWxsb2NfY2FwcywgMCk7CisgIGlmIChnc3RfY2Fwc19mZWF0dXJlc19jb250YWlucyAoZmVhdHVyZXMsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSkpIHsKKyAgICBnc3RfZ2xfY29udGV4dF9oZWxwZXJfZW5zdXJlX2NvbnRleHQgKGN0eGgpOworICAgIEdTVF9JTkZPX09CSkVDVCAoZWxlbWVudCwgInB1c2hpbmcgdGV4dHVyZXMsIGNvbnRleHQgJXAgb2xkIGNvbnRleHQgJXAiLAorICAgICAgICBjdHhoLT5jb250ZXh0LCB0ZXh0dXJlQ2FjaGUgPyB0ZXh0dXJlQ2FjaGUtPmN0eCA6IE5VTEwpOworICAgIGlmICh0ZXh0dXJlQ2FjaGUgJiYgdGV4dHVyZUNhY2hlLT5jdHggIT0gY3R4aC0+Y29udGV4dCkgeworICAgICAgZ3N0X3ZpZGVvX3RleHR1cmVfY2FjaGVfZnJlZSAodGV4dHVyZUNhY2hlKTsKKyAgICAgIHRleHR1cmVDYWNoZSA9IE5VTEw7CisgICAgfQorICAgIHRleHR1cmVDYWNoZSA9IGdzdF92aWRlb190ZXh0dXJlX2NhY2hlX25ldyAoY3R4aC0+Y29udGV4dCk7CisgICAgZ3N0X3ZpZGVvX3RleHR1cmVfY2FjaGVfc2V0X2Zvcm1hdCAodGV4dHVyZUNhY2hlLCBmb3JtYXQsIGFsbG9jX2NhcHMpOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy0gKHZvaWQpc2V0Q29udGV4dDooR3N0Q29udGV4dCAqKWNvbnRleHQKK3sKKyAgR1NUX0lORk9fT0JKRUNUIChlbGVtZW50LCAic2V0dGluZyBjb250ZXh0ICVzIiwKKyAgICAgICAgICBnc3RfY29udGV4dF9nZXRfY29udGV4dF90eXBlIChjb250ZXh0KSk7CisgIGdzdF9nbF9oYW5kbGVfc2V0X2NvbnRleHQgKGVsZW1lbnQsIGNvbnRleHQsCisgICAgICAgICAgJmN0eGgtPmRpc3BsYXksICZjdHhoLT5vdGhlcl9jb250ZXh0KTsKKyAgR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0KTsKK30KKwogLSAodm9pZClnZXRTYW1wbGVCdWZmZXI6KENNU2FtcGxlQnVmZmVyUmVmKXNidWYKICAgICAgICAgICAgICAgdGltZXN0YW1wOihHc3RDbG9ja1RpbWUgKilvdXRUaW1lc3RhbXAKICAgICAgICAgICAgICAgIGR1cmF0aW9uOihHc3RDbG9ja1RpbWUgKilvdXREdXJhdGlvbgpAQCAtMTA5OSwxNCArMTEzNywxNiBAQAogc3RhdGljIGdib29sZWFuIGdzdF9hdmZfdmlkZW9fc3JjX3N0b3AgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfYXZmX3ZpZGVvX3NyY19xdWVyeSAoR3N0QmFzZVNyYyAqIGJhc2VzcmMsCiAgICAgR3N0UXVlcnkgKiBxdWVyeSk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2F2Zl92aWRlb19zcmNfZGVjaWRlX2FsbG9jYXRpb24gKEdzdEJhc2VTcmMgKiBiYXNlc3JjLAotICAgIEdzdFF1ZXJ5ICogcXVlcnkpOwogc3RhdGljIGdib29sZWFuIGdzdF9hdmZfdmlkZW9fc3JjX3VubG9jayAoR3N0QmFzZVNyYyAqIGJhc2VzcmMpOwogc3RhdGljIGdib29sZWFuIGdzdF9hdmZfdmlkZW9fc3JjX3VubG9ja19zdG9wIChHc3RCYXNlU3JjICogYmFzZXNyYyk7CiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfYXZmX3ZpZGVvX3NyY19jcmVhdGUgKEdzdFB1c2hTcmMgKiBwdXNoc3JjLAogICAgIEdzdEJ1ZmZlciAqKiBidWYpOwotc3RhdGljIGdib29sZWFuIGdzdF9hdmZfdmlkZW9fc3JjX25lZ290aWF0ZSAoR3N0QmFzZVNyYyAqIGJhc2VzcmMpOwotCitzdGF0aWMgR3N0Q2FwcyAqIGdzdF9hdmZfdmlkZW9fc3JjX2ZpeGF0ZSAoR3N0QmFzZVNyYyAqIGJzcmMsCisgICAgR3N0Q2FwcyAqIGNhcHMpOworc3RhdGljIGdib29sZWFuIGdzdF9hdmZfdmlkZW9fc3JjX2RlY2lkZV9hbGxvY2F0aW9uIChHc3RCYXNlU3JjICogYnNyYywKKyAgICBHc3RRdWVyeSAqIHF1ZXJ5KTsKK3N0YXRpYyB2b2lkIGdzdF9hdmZfdmlkZW9fc3JjX3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICAgICAgR3N0Q29udGV4dCAqIGNvbnRleHQpOwogCiBzdGF0aWMgdm9pZAogZ3N0X2F2Zl92aWRlb19zcmNfY2xhc3NfaW5pdCAoR3N0QVZGVmlkZW9TcmNDbGFzcyAqIGtsYXNzKQpAQCAtMTEyMSw2ICsxMTYxLDcgQEAKICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2F2Zl92aWRlb19zcmNfc2V0X3Byb3BlcnR5OwogCiAgIGdzdGVsZW1lbnRfY2xhc3MtPmNoYW5nZV9zdGF0ZSA9IGdzdF9hdmZfdmlkZW9fc3JjX2NoYW5nZV9zdGF0ZTsKKyAgZ3N0ZWxlbWVudF9jbGFzcy0+c2V0X2NvbnRleHQgPSBnc3RfYXZmX3ZpZGVvX3NyY19zZXRfY29udGV4dDsKIAogICBnc3RiYXNlc3JjX2NsYXNzLT5nZXRfY2FwcyA9IGdzdF9hdmZfdmlkZW9fc3JjX2dldF9jYXBzOwogICBnc3RiYXNlc3JjX2NsYXNzLT5zZXRfY2FwcyA9IGdzdF9hdmZfdmlkZW9fc3JjX3NldF9jYXBzOwpAQCAtMTEyOSw4ICsxMTcwLDggQEAKICAgZ3N0YmFzZXNyY19jbGFzcy0+cXVlcnkgPSBnc3RfYXZmX3ZpZGVvX3NyY19xdWVyeTsKICAgZ3N0YmFzZXNyY19jbGFzcy0+dW5sb2NrID0gZ3N0X2F2Zl92aWRlb19zcmNfdW5sb2NrOwogICBnc3RiYXNlc3JjX2NsYXNzLT51bmxvY2tfc3RvcCA9IGdzdF9hdmZfdmlkZW9fc3JjX3VubG9ja19zdG9wOworICBnc3RiYXNlc3JjX2NsYXNzLT5maXhhdGUgPSBnc3RfYXZmX3ZpZGVvX3NyY19maXhhdGU7CiAgIGdzdGJhc2VzcmNfY2xhc3MtPmRlY2lkZV9hbGxvY2F0aW9uID0gZ3N0X2F2Zl92aWRlb19zcmNfZGVjaWRlX2FsbG9jYXRpb247Ci0gIGdzdGJhc2VzcmNfY2xhc3MtPm5lZ290aWF0ZSA9IGdzdF9hdmZfdmlkZW9fc3JjX25lZ290aWF0ZTsKIAogICBnc3RwdXNoc3JjX2NsYXNzLT5jcmVhdGUgPSBnc3RfYXZmX3ZpZGVvX3NyY19jcmVhdGU7CiAKQEAgLTEzMzgsMTggKzEzNzksNiBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KLWdzdF9hdmZfdmlkZW9fc3JjX2RlY2lkZV9hbGxvY2F0aW9uIChHc3RCYXNlU3JjICogYmFzZXNyYywgR3N0UXVlcnkgKiBxdWVyeSkKLXsKLSAgZ2Jvb2xlYW4gcmV0OwotCi0gIE9CSkNfQ0FMTE9VVF9CRUdJTiAoKTsKLSAgcmV0ID0gW0dTVF9BVkZfVklERU9fU1JDX0lNUEwgKGJhc2VzcmMpIGRlY2lkZUFsbG9jYXRpb246cXVlcnldOwotICBPQkpDX0NBTExPVVRfRU5EICgpOwotCi0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgogZ3N0X2F2Zl92aWRlb19zcmNfdW5sb2NrIChHc3RCYXNlU3JjICogYmFzZXNyYykKIHsKICAgZ2Jvb2xlYW4gcmV0OwpAQCAtMTM4NSwxMyArMTQxNCwzNiBAQAogICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9hdmZfdmlkZW9fc3JjX25lZ290aWF0ZSAoR3N0QmFzZVNyYyAqIGJhc2VzcmMpCi17Ci0gIC8qIEZJWE1FOiBXZSBkb24ndCBzdXBwb3J0IHJlY29uZmlndXJhdGlvbiB5ZXQgKi8KLSAgaWYgKGdzdF9wYWRfaGFzX2N1cnJlbnRfY2FwcyAoR1NUX0JBU0VfU1JDX1BBRCAoYmFzZXNyYykpKQotICAgIHJldHVybiBUUlVFOwogCi0gIHJldHVybiBHU1RfQkFTRV9TUkNfQ0xBU1MgKHBhcmVudF9jbGFzcyktPm5lZ290aWF0ZSAoYmFzZXNyYyk7CitzdGF0aWMgR3N0Q2FwcyAqCitnc3RfYXZmX3ZpZGVvX3NyY19maXhhdGUgKEdzdEJhc2VTcmMgKiBic3JjLCBHc3RDYXBzICogY2FwcykKK3sKKyAgR3N0Q2FwcyAqcmV0OworCisgIE9CSkNfQ0FMTE9VVF9CRUdJTiAoKTsKKyAgcmV0ID0gW0dTVF9BVkZfVklERU9fU1JDX0lNUEwgKGJzcmMpIGZpeGF0ZTpjYXBzXTsKKyAgT0JKQ19DQUxMT1VUX0VORCAoKTsKKworICByZXR1cm4gcmV0OwogfQogCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9hdmZfdmlkZW9fc3JjX2RlY2lkZV9hbGxvY2F0aW9uIChHc3RCYXNlU3JjICogYnNyYywKKyAgICBHc3RRdWVyeSAqIHF1ZXJ5KQoreworICBnYm9vbGVhbiByZXQ7CisKKyAgT0JKQ19DQUxMT1VUX0JFR0lOICgpOworICByZXQgPSBbR1NUX0FWRl9WSURFT19TUkNfSU1QTCAoYnNyYykgZGVjaWRlQWxsb2NhdGlvbjpxdWVyeV07CisgIE9CSkNfQ0FMTE9VVF9FTkQgKCk7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQKK2dzdF9hdmZfdmlkZW9fc3JjX3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0Q29udGV4dCAqIGNvbnRleHQpCit7CisgIE9CSkNfQ0FMTE9VVF9CRUdJTiAoKTsKKyAgW0dTVF9BVkZfVklERU9fU1JDX0lNUEwgKGVsZW1lbnQpIHNldENvbnRleHQ6Y29udGV4dF07CisgIE9CSkNfQ0FMTE9VVF9FTkQgKCk7Cit9CmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS9jb3JlbWVkaWFidWZmZXIuYyBiL3N5cy9hcHBsZW1lZGlhL2NvcmVtZWRpYWJ1ZmZlci5jCmluZGV4IDY4MWZlMTQuLmNmMzQyMjQgMTAwNjQ0Ci0tLSBhL3N5cy9hcHBsZW1lZGlhL2NvcmVtZWRpYWJ1ZmZlci5jCisrKyBiL3N5cy9hcHBsZW1lZGlhL2NvcmVtZWRpYWJ1ZmZlci5jCkBAIC0xOSwxNSArMTksNDIgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKKyNpbmNsdWRlICJjb3JldmlkZW9idWZmZXIuaCIKICNpbmNsdWRlICJjb3JlbWVkaWFidWZmZXIuaCIKKyNpbmNsdWRlICJjb3JldmlkZW9tZW1vcnkuaCIKKworc3RhdGljIGNvbnN0IEdzdE1ldGFJbmZvICpnc3RfY29yZV9tZWRpYV9tZXRhX2dldF9pbmZvICh2b2lkKTsKKworc3RhdGljIHZvaWQKK2dzdF9jb3JlX21lZGlhX21ldGFfYWRkIChHc3RCdWZmZXIgKiBidWZmZXIsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZV9idWYsCisgICAgQ1ZJbWFnZUJ1ZmZlclJlZiBpbWFnZV9idWYsIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tfYnVmKQoreworICBHc3RDb3JlTWVkaWFNZXRhICptZXRhOworCisgIG1ldGEgPQorICAgICAgKEdzdENvcmVNZWRpYU1ldGEgKikgZ3N0X2J1ZmZlcl9hZGRfbWV0YSAoYnVmZmVyLAorICAgICAgZ3N0X2NvcmVfbWVkaWFfbWV0YV9nZXRfaW5mbyAoKSwgTlVMTCk7CisgIENGUmV0YWluIChzYW1wbGVfYnVmKTsKKyAgaWYgKGltYWdlX2J1ZikKKyAgICBDVkJ1ZmZlclJldGFpbiAoaW1hZ2VfYnVmKTsKKyAgaWYgKGJsb2NrX2J1ZikKKyAgICBDRlJldGFpbiAoYmxvY2tfYnVmKTsKKyAgbWV0YS0+c2FtcGxlX2J1ZiA9IHNhbXBsZV9idWY7CisgIG1ldGEtPmltYWdlX2J1ZiA9IGltYWdlX2J1ZjsKKyAgbWV0YS0+YmxvY2tfYnVmID0gYmxvY2tfYnVmOworICBpZiAoaW1hZ2VfYnVmICE9IE5VTEwgJiYgQ0ZHZXRUeXBlSUQgKGltYWdlX2J1ZikgPT0gQ1ZQaXhlbEJ1ZmZlckdldFR5cGVJRCAoKSkKKyAgICBtZXRhLT5waXhlbF9idWYgPSAoQ1ZQaXhlbEJ1ZmZlclJlZikgaW1hZ2VfYnVmOworICBlbHNlCisgICAgbWV0YS0+cGl4ZWxfYnVmID0gTlVMTDsKK30KIAogc3RhdGljIHZvaWQKIGdzdF9jb3JlX21lZGlhX21ldGFfZnJlZSAoR3N0Q29yZU1lZGlhTWV0YSAqIG1ldGEsIEdzdEJ1ZmZlciAqIGJ1ZikKIHsKICAgaWYgKG1ldGEtPmltYWdlX2J1ZiAhPSBOVUxMKSB7Ci0gICAgQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzIChtZXRhLT5pbWFnZV9idWYsIDApOwogICAgIENWQnVmZmVyUmVsZWFzZSAobWV0YS0+aW1hZ2VfYnVmKTsKICAgfQorCiAgIGlmIChtZXRhLT5ibG9ja19idWYgIT0gTlVMTCkgewogICAgIENGUmVsZWFzZSAobWV0YS0+YmxvY2tfYnVmKTsKICAgfQpAQCAtMzUsNiArNjIsMjIgQEAKICAgQ0ZSZWxlYXNlIChtZXRhLT5zYW1wbGVfYnVmKTsKIH0KIAorc3RhdGljIGdib29sZWFuCitnc3RfY29yZV9tZWRpYV9tZXRhX3RyYW5zZm9ybSAoR3N0QnVmZmVyICogdHJhbnNidWYsIEdzdENvcmVNZWRpYU1ldGEgKiBtZXRhLAorICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgR1F1YXJrIHR5cGUsIEdzdE1ldGFUcmFuc2Zvcm1Db3B5ICogZGF0YSkKK3sKKyAgaWYgKCFkYXRhLT5yZWdpb24pIHsKKyAgICAvKiBvbmx5IGNvcHkgaWYgdGhlIGNvbXBsZXRlIGRhdGEgaXMgY29waWVkIGFzIHdlbGwgKi8KKyAgICBnc3RfY29yZV9tZWRpYV9tZXRhX2FkZCAodHJhbnNidWYsIG1ldGEtPnNhbXBsZV9idWYsIG1ldGEtPmltYWdlX2J1ZiwKKyAgICAgICAgbWV0YS0+YmxvY2tfYnVmKTsKKyAgfSBlbHNlIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHRyYW5zYnVmLAorICAgICAgICAiZHJvcHBpbmcgQ29yZSBNZWRpYSBtZXRhZGF0YSBkdWUgdG8gcGFydGlhbCBidWZmZXIiKTsKKyAgfQorCisgIHJldHVybiBUUlVFOyAgICAgICAgICAgICAgICAgIC8qIHJldHZhbCB1bnVzZWQgKi8KK30KKwogR1R5cGUKIGdzdF9jb3JlX21lZGlhX21ldGFfYXBpX2dldF90eXBlICh2b2lkKQogewpAQCAtNTgsNyArMTAxLDcgQEAKICAgICAgICAgIkdzdENvcmVNZWRpYU1ldGEiLCBzaXplb2YgKEdzdENvcmVNZWRpYU1ldGEpLAogICAgICAgICAoR3N0TWV0YUluaXRGdW5jdGlvbikgTlVMTCwKICAgICAgICAgKEdzdE1ldGFGcmVlRnVuY3Rpb24pIGdzdF9jb3JlX21lZGlhX21ldGFfZnJlZSwKLSAgICAgICAgKEdzdE1ldGFUcmFuc2Zvcm1GdW5jdGlvbikgTlVMTCk7CisgICAgICAgIChHc3RNZXRhVHJhbnNmb3JtRnVuY3Rpb24pIGdzdF9jb3JlX21lZGlhX21ldGFfdHJhbnNmb3JtKTsKICAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJmNvcmVfbWVkaWFfbWV0YV9pbmZvLCBtZXRhKTsKICAgfQogICByZXR1cm4gY29yZV9tZWRpYV9tZXRhX2luZm87CkBAIC04NSw2OCArMTI4LDYgQEAKIH0KIAogc3RhdGljIGdib29sZWFuCi1nc3RfY29yZV9tZWRpYV9idWZmZXJfd3JhcF9waXhlbF9idWZmZXIgKEdzdEJ1ZmZlciAqIGJ1ZiwgR3N0VmlkZW9JbmZvICogaW5mbywKLSAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsX2J1ZiwgZ2Jvb2xlYW4gKiBoYXNfcGFkZGluZywgZ2Jvb2xlYW4gbWFwKQotewotICBndWludCBuX3BsYW5lczsKLSAgZ3NpemUgb2Zmc2V0W0dTVF9WSURFT19NQVhfUExBTkVTXSA9IHsgMCB9OwotICBnaW50IHN0cmlkZVtHU1RfVklERU9fTUFYX1BMQU5FU10gPSB7IDAgfTsKLSAgR3N0VmlkZW9NZXRhICp2aWRlb19tZXRhOwotICBVSW50MzIgc2l6ZTsKLQotICBpZiAobWFwICYmIENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MgKHBpeGVsX2J1ZiwgMCkgIT0ga0NWUmV0dXJuU3VjY2VzcykgewotICAgIEdTVF9FUlJPUiAoIkNvdWxkIG5vdCBsb2NrIHBpeGVsIGJ1ZmZlciBiYXNlIGFkZHJlc3MiKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICAqaGFzX3BhZGRpbmcgPSBGQUxTRTsKLQotICBpZiAoQ1ZQaXhlbEJ1ZmZlcklzUGxhbmFyIChwaXhlbF9idWYpKSB7Ci0gICAgZ2ludCBpLCBzaXplID0gMCwgcGxhbmVfb2Zmc2V0ID0gMDsKLQotICAgIG5fcGxhbmVzID0gQ1ZQaXhlbEJ1ZmZlckdldFBsYW5lQ291bnQgKHBpeGVsX2J1Zik7Ci0gICAgZm9yIChpID0gMDsgaSA8IG5fcGxhbmVzOyBpKyspIHsKLSAgICAgIHN0cmlkZVtpXSA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUgKHBpeGVsX2J1ZiwgaSk7Ci0KLSAgICAgIGlmIChzdHJpZGVbaV0gIT0gR1NUX1ZJREVPX0lORk9fUExBTkVfU1RSSURFIChpbmZvLCBpKSkgewotICAgICAgICAqaGFzX3BhZGRpbmcgPSBUUlVFOwotICAgICAgfQotCi0gICAgICBzaXplID0gc3RyaWRlW2ldICogQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUgKHBpeGVsX2J1ZiwgaSk7Ci0gICAgICBvZmZzZXRbaV0gPSBwbGFuZV9vZmZzZXQ7Ci0gICAgICBwbGFuZV9vZmZzZXQgKz0gc2l6ZTsKLQotICAgICAgaWYgKG1hcCkgewotICAgICAgICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKGJ1ZiwKLSAgICAgICAgICAgIGdzdF9tZW1vcnlfbmV3X3dyYXBwZWQgKEdTVF9NRU1PUllfRkxBR19OT19TSEFSRSwKLSAgICAgICAgICAgICAgICBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lIChwaXhlbF9idWYsIGkpLCBzaXplLCAwLAotICAgICAgICAgICAgICAgIHNpemUsIE5VTEwsIE5VTEwpKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0gZWxzZSB7Ci0KLSAgICBuX3BsYW5lcyA9IDE7Ci0gICAgc3RyaWRlWzBdID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93IChwaXhlbF9idWYpOwotICAgIG9mZnNldFswXSA9IDA7Ci0gICAgc2l6ZSA9IHN0cmlkZVswXSAqIENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQgKHBpeGVsX2J1Zik7Ci0KLSAgICBpZiAobWFwKSB7Ci0gICAgICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKGJ1ZiwKLSAgICAgICAgICBnc3RfbWVtb3J5X25ld193cmFwcGVkIChHU1RfTUVNT1JZX0ZMQUdfTk9fU0hBUkUsCi0gICAgICAgICAgICAgIENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcyAocGl4ZWxfYnVmKSwgc2l6ZSwgMCwgc2l6ZSwgTlVMTCwKLSAgICAgICAgICAgICAgTlVMTCkpOwotICAgIH0KLSAgfQotCi0gIHZpZGVvX21ldGEgPQotICAgICAgZ3N0X2J1ZmZlcl9hZGRfdmlkZW9fbWV0YV9mdWxsIChidWYsIEdTVF9WSURFT19GUkFNRV9GTEFHX05PTkUsCi0gICAgICBHU1RfVklERU9fSU5GT19GT1JNQVQgKGluZm8pLCBpbmZvLT53aWR0aCwgaW5mby0+aGVpZ2h0LCBuX3BsYW5lcywgb2Zmc2V0LAotICAgICAgc3RyaWRlKTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGdib29sZWFuCiBnc3RfY29yZV9tZWRpYV9idWZmZXJfd3JhcF9ibG9ja19idWZmZXIgKEdzdEJ1ZmZlciAqIGJ1ZiwKICAgICBDTUJsb2NrQnVmZmVyUmVmIGJsb2NrX2J1ZikKIHsKQEAgLTI0NywxMSArMjI4LDEwIEBACiAKIEdzdEJ1ZmZlciAqCiBnc3RfY29yZV9tZWRpYV9idWZmZXJfbmV3IChDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVfYnVmLAotICAgIGdib29sZWFuIHVzZV92aWRlb19tZXRhLCBnYm9vbGVhbiBtYXApCisgICAgZ2Jvb2xlYW4gdXNlX3ZpZGVvX21ldGEpCiB7CiAgIENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VfYnVmOwogICBDTUJsb2NrQnVmZmVyUmVmIGJsb2NrX2J1ZjsKLSAgR3N0Q29yZU1lZGlhTWV0YSAqbWV0YTsKICAgR3N0QnVmZmVyICpidWY7CiAKICAgaW1hZ2VfYnVmID0gQ01TYW1wbGVCdWZmZXJHZXRJbWFnZUJ1ZmZlciAoc2FtcGxlX2J1Zik7CkBAIC0yNTksMzUgKzIzOSwyMiBAQAogCiAgIGJ1ZiA9IGdzdF9idWZmZXJfbmV3ICgpOwogCi0gIG1ldGEgPSAoR3N0Q29yZU1lZGlhTWV0YSAqKSBnc3RfYnVmZmVyX2FkZF9tZXRhIChidWYsCi0gICAgICBnc3RfY29yZV9tZWRpYV9tZXRhX2dldF9pbmZvICgpLCBOVUxMKTsKLSAgQ0ZSZXRhaW4gKHNhbXBsZV9idWYpOwotICBpZiAoaW1hZ2VfYnVmKQotICAgIENWQnVmZmVyUmV0YWluIChpbWFnZV9idWYpOwotICBpZiAoYmxvY2tfYnVmKQotICAgIENGUmV0YWluIChibG9ja19idWYpOwotICBtZXRhLT5zYW1wbGVfYnVmID0gc2FtcGxlX2J1ZjsKLSAgbWV0YS0+aW1hZ2VfYnVmID0gaW1hZ2VfYnVmOwotICBtZXRhLT5waXhlbF9idWYgPSBOVUxMOwotICBtZXRhLT5ibG9ja19idWYgPSBibG9ja19idWY7CisgIGdzdF9jb3JlX21lZGlhX21ldGFfYWRkIChidWYsIHNhbXBsZV9idWYsIGltYWdlX2J1ZiwgYmxvY2tfYnVmKTsKIAogICBpZiAoaW1hZ2VfYnVmICE9IE5VTEwgJiYgQ0ZHZXRUeXBlSUQgKGltYWdlX2J1ZikgPT0gQ1ZQaXhlbEJ1ZmZlckdldFR5cGVJRCAoKSkgewogICAgIEdzdFZpZGVvSW5mbyBpbmZvOwogICAgIGdib29sZWFuIGhhc19wYWRkaW5nID0gRkFMU0U7CisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbF9idWYgPSAoQ1ZQaXhlbEJ1ZmZlclJlZikgaW1hZ2VfYnVmOwogCi0gICAgbWV0YS0+cGl4ZWxfYnVmID0gKENWUGl4ZWxCdWZmZXJSZWYpIGltYWdlX2J1ZjsKLSAgICBpZiAoIWdzdF92aWRlb19pbmZvX2luaXRfZnJvbV9waXhlbF9idWZmZXIgKCZpbmZvLCBtZXRhLT5waXhlbF9idWYpKSB7CisgICAgaWYgKCFnc3RfdmlkZW9faW5mb19pbml0X2Zyb21fcGl4ZWxfYnVmZmVyICgmaW5mbywgcGl4ZWxfYnVmKSkgewogICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBpZiAoIWdzdF9jb3JlX21lZGlhX2J1ZmZlcl93cmFwX3BpeGVsX2J1ZmZlciAoYnVmLCAmaW5mbywgbWV0YS0+cGl4ZWxfYnVmLAotICAgICAgICAgICAgJmhhc19wYWRkaW5nLCBtYXApKSB7Ci0gICAgICBnb3RvIGVycm9yOwotICAgIH0KKyAgICBnc3RfY29yZV92aWRlb193cmFwX3BpeGVsX2J1ZmZlciAoYnVmLCAmaW5mbywgcGl4ZWxfYnVmLCAmaGFzX3BhZGRpbmcpOwogCiAgICAgLyogSWYgdGhlIHZpZGVvIG1ldGEgQVBJIGlzIG5vdCBzdXBwb3J0ZWQsIHJlbW92ZSBwYWRkaW5nIGJ5CiAgICAgICogY29weWluZyB0aGUgY29yZSBtZWRpYSBidWZmZXIgdG8gYSBzeXN0ZW0gbWVtb3J5IGJ1ZmZlciAqLwotICAgIGlmIChtYXAgJiYgaGFzX3BhZGRpbmcgJiYgIXVzZV92aWRlb19tZXRhKSB7CisgICAgaWYgKGhhc19wYWRkaW5nICYmICF1c2VfdmlkZW9fbWV0YSkgewogICAgICAgR3N0QnVmZmVyICpjb3B5X2J1ZjsKICAgICAgIGNvcHlfYnVmID0gZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX25ld19mcm9tX2J1ZmZlciAoYnVmLCAmaW5mbyk7CiAgICAgICBpZiAoIWNvcHlfYnVmKSB7CkBAIC0yOTksNyArMjY2LDcgQEAKICAgICB9CiAKICAgfSBlbHNlIGlmIChibG9ja19idWYgIT0gTlVMTCkgewotICAgIGlmIChtYXAgJiYgIWdzdF9jb3JlX21lZGlhX2J1ZmZlcl93cmFwX2Jsb2NrX2J1ZmZlciAoYnVmLCBibG9ja19idWYpKSB7CisgICAgaWYgKCFnc3RfY29yZV9tZWRpYV9idWZmZXJfd3JhcF9ibG9ja19idWZmZXIgKGJ1ZiwgYmxvY2tfYnVmKSkgewogICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS9jb3JlbWVkaWFidWZmZXIuaCBiL3N5cy9hcHBsZW1lZGlhL2NvcmVtZWRpYWJ1ZmZlci5oCmluZGV4IDJiM2I3NGQuLmJjMThhY2YgMTAwNjQ0Ci0tLSBhL3N5cy9hcHBsZW1lZGlhL2NvcmVtZWRpYWJ1ZmZlci5oCisrKyBiL3N5cy9hcHBsZW1lZGlhL2NvcmVtZWRpYWJ1ZmZlci5oCkBAIC00Myw4ICs0Myw3IEBACiAKIAogR3N0QnVmZmVyICogZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX25ldyAgICAgIChDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVfYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiB1c2VfdmlkZW9fbWV0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gbWFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gdXNlX3ZpZGVvX21ldGEpOwogQ1ZQaXhlbEJ1ZmZlclJlZiBnc3RfY29yZV9tZWRpYV9idWZmZXJfZ2V0X3BpeGVsX2J1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RCdWZmZXIgKiBidWYpOwogR1R5cGUgZ3N0X2NvcmVfbWVkaWFfbWV0YV9hcGlfZ2V0X3R5cGUgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvYnVmZmVyLmMgYi9zeXMvYXBwbGVtZWRpYS9jb3JldmlkZW9idWZmZXIuYwppbmRleCAyNjllMTlkLi42N2Q4OTljIDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS9jb3JldmlkZW9idWZmZXIuYworKysgYi9zeXMvYXBwbGVtZWRpYS9jb3JldmlkZW9idWZmZXIuYwpAQCAtMTgsMTUgKzE4LDQwIEBACiAgKi8KIAogI2luY2x1ZGUgImNvcmV2aWRlb2J1ZmZlci5oIgorI2luY2x1ZGUgImNvcmV2aWRlb21lbW9yeS5oIgorCitzdGF0aWMgY29uc3QgR3N0TWV0YUluZm8gKmdzdF9jb3JlX3ZpZGVvX21ldGFfZ2V0X2luZm8gKHZvaWQpOworCitzdGF0aWMgdm9pZAorZ3N0X2NvcmVfdmlkZW9fbWV0YV9hZGQgKEdzdEJ1ZmZlciAqIGJ1ZmZlciwgQ1ZCdWZmZXJSZWYgY3ZidWYpCit7CisgIEdzdENvcmVWaWRlb01ldGEgKm1ldGE7CisKKyAgbWV0YSA9IChHc3RDb3JlVmlkZW9NZXRhICopIGdzdF9idWZmZXJfYWRkX21ldGEgKGJ1ZmZlciwKKyAgICAgIGdzdF9jb3JlX3ZpZGVvX21ldGFfZ2V0X2luZm8gKCksIE5VTEwpOworICBtZXRhLT5jdmJ1ZiA9IENWQnVmZmVyUmV0YWluIChjdmJ1Zik7CisgIG1ldGEtPnBpeGJ1ZiA9IChDVlBpeGVsQnVmZmVyUmVmKSBjdmJ1ZjsKK30KIAogc3RhdGljIHZvaWQKIGdzdF9jb3JlX3ZpZGVvX21ldGFfZnJlZSAoR3N0Q29yZVZpZGVvTWV0YSAqIG1ldGEsIEdzdEJ1ZmZlciAqIGJ1ZikKIHsKLSAgaWYgKG1ldGEtPnBpeGJ1ZiAhPSBOVUxMKSB7Ci0gICAgQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzIChtZXRhLT5waXhidWYsIDApOworICBDVkJ1ZmZlclJlbGVhc2UgKG1ldGEtPmN2YnVmKTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfY29yZV92aWRlb19tZXRhX3RyYW5zZm9ybSAoR3N0QnVmZmVyICogdHJhbnNidWYsIEdzdENvcmVWaWRlb01ldGEgKiBtZXRhLAorICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgR1F1YXJrIHR5cGUsIEdzdE1ldGFUcmFuc2Zvcm1Db3B5ICogZGF0YSkKK3sKKyAgaWYgKCFkYXRhLT5yZWdpb24pIHsKKyAgICAvKiBvbmx5IGNvcHkgaWYgdGhlIGNvbXBsZXRlIGRhdGEgaXMgY29waWVkIGFzIHdlbGwgKi8KKyAgICBnc3RfY29yZV92aWRlb19tZXRhX2FkZCAodHJhbnNidWYsIG1ldGEtPmN2YnVmKTsKKyAgfSBlbHNlIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHRyYW5zYnVmLAorICAgICAgICAiZHJvcHBpbmcgQ29yZSBWaWRlbyBtZXRhZGF0YSBkdWUgdG8gcGFydGlhbCBidWZmZXIiKTsKICAgfQogCi0gIENWQnVmZmVyUmVsZWFzZSAobWV0YS0+Y3ZidWYpOworICByZXR1cm4gVFJVRTsgICAgICAgICAgICAgICAgICAvKiByZXR2YWwgdW51c2VkICovCiB9CiAKIEdUeXBlCkBAIC01Miw4OSArNzcsODkgQEAKICAgICAgICAgIkdzdENvcmVWaWRlb01ldGEiLCBzaXplb2YgKEdzdENvcmVWaWRlb01ldGEpLAogICAgICAgICAoR3N0TWV0YUluaXRGdW5jdGlvbikgTlVMTCwKICAgICAgICAgKEdzdE1ldGFGcmVlRnVuY3Rpb24pIGdzdF9jb3JlX3ZpZGVvX21ldGFfZnJlZSwKLSAgICAgICAgKEdzdE1ldGFUcmFuc2Zvcm1GdW5jdGlvbikgTlVMTCk7CisgICAgICAgIChHc3RNZXRhVHJhbnNmb3JtRnVuY3Rpb24pIGdzdF9jb3JlX3ZpZGVvX21ldGFfdHJhbnNmb3JtKTsKICAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJmNvcmVfdmlkZW9fbWV0YV9pbmZvLCBtZXRhKTsKICAgfQogICByZXR1cm4gY29yZV92aWRlb19tZXRhX2luZm87CiB9CiAKK3ZvaWQKK2dzdF9jb3JlX3ZpZGVvX3dyYXBfcGl4ZWxfYnVmZmVyIChHc3RCdWZmZXIgKiBidWYsIEdzdFZpZGVvSW5mbyAqIGluZm8sCisgICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbF9idWYsIGdib29sZWFuICogaGFzX3BhZGRpbmcpCit7CisgIGd1aW50IG5fcGxhbmVzOworICBnc2l6ZSBvZmZzZXRbR1NUX1ZJREVPX01BWF9QTEFORVNdID0geyAwIH07CisgIGdpbnQgc3RyaWRlW0dTVF9WSURFT19NQVhfUExBTkVTXSA9IHsgMCB9OworICBVSW50MzIgc2l6ZTsKKyAgR3N0QXBwbGVDb3JlVmlkZW9QaXhlbEJ1ZmZlciAqZ3BpeGJ1ZjsKKworICBncGl4YnVmID0gZ3N0X2FwcGxlX2NvcmVfdmlkZW9fcGl4ZWxfYnVmZmVyX25ldyAocGl4ZWxfYnVmKTsKKyAgKmhhc19wYWRkaW5nID0gRkFMU0U7CisKKyAgaWYgKENWUGl4ZWxCdWZmZXJJc1BsYW5hciAocGl4ZWxfYnVmKSkgeworICAgIGdpbnQgaSwgc2l6ZSA9IDAsIHBsYW5lX29mZnNldCA9IDA7CisKKyAgICBuX3BsYW5lcyA9IENWUGl4ZWxCdWZmZXJHZXRQbGFuZUNvdW50IChwaXhlbF9idWYpOworICAgIGZvciAoaSA9IDA7IGkgPCBuX3BsYW5lczsgaSsrKSB7CisgICAgICBzdHJpZGVbaV0gPSBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3dPZlBsYW5lIChwaXhlbF9idWYsIGkpOworCisgICAgICBpZiAoc3RyaWRlW2ldICE9IEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSAoaW5mbywgaSkpIHsKKyAgICAgICAgKmhhc19wYWRkaW5nID0gVFJVRTsKKyAgICAgIH0KKworICAgICAgc2l6ZSA9IHN0cmlkZVtpXSAqIENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lIChwaXhlbF9idWYsIGkpOworICAgICAgb2Zmc2V0W2ldID0gcGxhbmVfb2Zmc2V0OworICAgICAgcGxhbmVfb2Zmc2V0ICs9IHNpemU7CisKKyAgICAgIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAoYnVmLAorICAgICAgICAgIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbW9yeV9uZXdfd3JhcHBlZCAoZ3BpeGJ1ZiwgaSwgc2l6ZSkpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBuX3BsYW5lcyA9IDE7CisgICAgc3RyaWRlWzBdID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93IChwaXhlbF9idWYpOworICAgIG9mZnNldFswXSA9IDA7CisgICAgc2l6ZSA9IHN0cmlkZVswXSAqIENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQgKHBpeGVsX2J1Zik7CisKKyAgICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKGJ1ZiwKKyAgICAgICAgZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtb3J5X25ld193cmFwcGVkIChncGl4YnVmLAorICAgICAgICAgICAgR1NUX0FQUExFX0NPUkVfVklERU9fTk9fUExBTkUsIHNpemUpKTsKKyAgfQorCisgIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX3BpeGVsX2J1ZmZlcl91bnJlZiAoZ3BpeGJ1Zik7CisKKyAgaWYgKGluZm8pIHsKKyAgICBHc3RWaWRlb01ldGEgKnZpZGVvX21ldGE7CisKKyAgICB2aWRlb19tZXRhID0KKyAgICAgICAgZ3N0X2J1ZmZlcl9hZGRfdmlkZW9fbWV0YV9mdWxsIChidWYsIEdTVF9WSURFT19GUkFNRV9GTEFHX05PTkUsCisgICAgICAgIEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoaW5mbyksIGluZm8tPndpZHRoLCBpbmZvLT5oZWlnaHQsIG5fcGxhbmVzLAorICAgICAgICBvZmZzZXQsIHN0cmlkZSk7CisgIH0KK30KKwogR3N0QnVmZmVyICoKLWdzdF9jb3JlX3ZpZGVvX2J1ZmZlcl9uZXcgKENWQnVmZmVyUmVmIGN2YnVmLCBHc3RWaWRlb0luZm8gKiB2aW5mbywKLSAgICBnYm9vbGVhbiBtYXApCitnc3RfY29yZV92aWRlb19idWZmZXJfbmV3IChDVkJ1ZmZlclJlZiBjdmJ1ZiwgR3N0VmlkZW9JbmZvICogdmluZm8pCiB7CiAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4YnVmID0gTlVMTDsKICAgR3N0QnVmZmVyICpidWY7CiAgIEdzdENvcmVWaWRlb01ldGEgKm1ldGE7Ci0gIGd1aW50IG5fcGxhbmVzOwotICBnc2l6ZSBvZmZzZXRbR1NUX1ZJREVPX01BWF9QTEFORVNdOwotICBnaW50IHN0cmlkZVtHU1RfVklERU9fTUFYX1BMQU5FU107CisgIGdib29sZWFuIGhhc19wYWRkaW5nOyAgICAgICAgIC8qIG5vdCB1c2VkIGZvciBub3cgKi8KIAogICBpZiAoQ0ZHZXRUeXBlSUQgKGN2YnVmKSAhPSBDVlBpeGVsQnVmZmVyR2V0VHlwZUlEICgpKQogICAgIC8qIFRPRE86IERvIHdlIG5lZWQgdG8gaGFuZGxlIG90aGVyIGJ1ZmZlciB0eXBlcz8gKi8KLSAgICBnb3RvIGVycm9yOworICAgIHJldHVybiBOVUxMOwogCiAgIHBpeGJ1ZiA9IChDVlBpeGVsQnVmZmVyUmVmKSBjdmJ1ZjsKIAotICBpZiAobWFwICYmIENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MgKHBpeGJ1ZiwgMCkgIT0ga0NWUmV0dXJuU3VjY2VzcykgewotICAgIGdvdG8gZXJyb3I7Ci0gIH0KLQogICBidWYgPSBnc3RfYnVmZmVyX25ldyAoKTsKIAotICAvKiBhZGQgdGhlIGNvcmV2aWRlbyBtZXRhIHRvIGZyZWUgdGhlIHVuZGVybHlpbmcgY29yZXZpZGVvIGJ1ZmZlciAqLworICAvKiBhZGQgdGhlIGNvcmV2aWRlbyBtZXRhIHRvIHBhc3MgdGhlIHVuZGVybHlpbmcgY29yZXZpZGVvIGJ1ZmZlciAqLwogICBtZXRhID0gKEdzdENvcmVWaWRlb01ldGEgKikgZ3N0X2J1ZmZlcl9hZGRfbWV0YSAoYnVmLAogICAgICAgZ3N0X2NvcmVfdmlkZW9fbWV0YV9nZXRfaW5mbyAoKSwgTlVMTCk7CiAgIG1ldGEtPmN2YnVmID0gQ1ZCdWZmZXJSZXRhaW4gKGN2YnVmKTsKICAgbWV0YS0+cGl4YnVmID0gcGl4YnVmOwogCi0gIC8qIHNldCBzdHJpZGUsIG9mZnNldCBhbmQgc2l6ZSAqLwotICBtZW1zZXQgKCZvZmZzZXQsIDAsIHNpemVvZiAob2Zmc2V0KSk7Ci0gIG1lbXNldCAoJnN0cmlkZSwgMCwgc2l6ZW9mIChzdHJpZGUpKTsKLQotICBpZiAoQ1ZQaXhlbEJ1ZmZlcklzUGxhbmFyIChwaXhidWYpKSB7Ci0gICAgaW50IGksIHNpemUsIG9mZjsKLQotICAgIG5fcGxhbmVzID0gQ1ZQaXhlbEJ1ZmZlckdldFBsYW5lQ291bnQgKHBpeGJ1Zik7Ci0gICAgb2ZmID0gMDsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbl9wbGFuZXM7ICsraSkgewotICAgICAgc3RyaWRlW2ldID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZSAocGl4YnVmLCBpKTsKLSAgICAgIHNpemUgPSBzdHJpZGVbaV0gKiBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZSAocGl4YnVmLCBpKTsKLSAgICAgIG9mZnNldFtpXSA9IG9mZjsKLSAgICAgIG9mZiArPSBzaXplOwotCi0gICAgICBpZiAobWFwKSB7Ci0gICAgICAgIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAoYnVmLAotICAgICAgICAgICAgZ3N0X21lbW9yeV9uZXdfd3JhcHBlZCAoR1NUX01FTU9SWV9GTEFHX05PX1NIQVJFLAotICAgICAgICAgICAgICAgIENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUgKHBpeGJ1ZiwgaSksIHNpemUsIDAsIHNpemUsCi0gICAgICAgICAgICAgICAgTlVMTCwgTlVMTCkpOwotICAgICAgfQotICAgIH0KLSAgfSBlbHNlIHsKLSAgICBpbnQgc2l6ZTsKLQotICAgIG5fcGxhbmVzID0gMTsKLSAgICBzdHJpZGVbMF0gPSBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3cgKHBpeGJ1Zik7Ci0gICAgb2Zmc2V0WzBdID0gMDsKLSAgICBzaXplID0gc3RyaWRlWzBdICogQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodCAocGl4YnVmKTsKLQotICAgIGlmIChtYXApIHsKLSAgICAgIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAoYnVmLAotICAgICAgICAgIGdzdF9tZW1vcnlfbmV3X3dyYXBwZWQgKEdTVF9NRU1PUllfRkxBR19OT19TSEFSRSwKLSAgICAgICAgICAgICAgQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzIChwaXhidWYpLCBzaXplLCAwLCBzaXplLCBOVUxMLCBOVUxMKSk7Ci0gICAgfQotICB9Ci0KLSAgaWYgKHZpbmZvKSB7Ci0gICAgR3N0VmlkZW9NZXRhICp2aWRlb19tZXRhOwotCi0gICAgdmlkZW9fbWV0YSA9Ci0gICAgICAgIGdzdF9idWZmZXJfYWRkX3ZpZGVvX21ldGFfZnVsbCAoYnVmLCBHU1RfVklERU9fRlJBTUVfRkxBR19OT05FLAotICAgICAgICB2aW5mby0+ZmluZm8tPmZvcm1hdCwgQ1ZQaXhlbEJ1ZmZlckdldFdpZHRoIChwaXhidWYpLAotICAgICAgICBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0IChwaXhidWYpLCBuX3BsYW5lcywgb2Zmc2V0LCBzdHJpZGUpOwotICB9CisgIGdzdF9jb3JlX3ZpZGVvX3dyYXBfcGl4ZWxfYnVmZmVyIChidWYsIHZpbmZvLCBwaXhidWYsICZoYXNfcGFkZGluZyk7CiAKICAgcmV0dXJuIGJ1ZjsKLQotZXJyb3I6Ci0gIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvYnVmZmVyLmggYi9zeXMvYXBwbGVtZWRpYS9jb3JldmlkZW9idWZmZXIuaAppbmRleCA4ZjU4YTZlLi4wZWE3ZDFlIDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS9jb3JldmlkZW9idWZmZXIuaAorKysgYi9zeXMvYXBwbGVtZWRpYS9jb3JldmlkZW9idWZmZXIuaApAQCAtNDEsOCArNDEsMTEgQEAKIH0gR3N0Q29yZVZpZGVvTWV0YTsKIAogR3N0QnVmZmVyICogZ3N0X2NvcmVfdmlkZW9fYnVmZmVyX25ldyAgICAgIChDVkJ1ZmZlclJlZiBjdmJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9JbmZvICppbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBtYXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0luZm8gKmluZm8pOwordm9pZCBnc3RfY29yZV92aWRlb193cmFwX3BpeGVsX2J1ZmZlciAgICAgIChHc3RCdWZmZXIgKiBidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvSW5mbyAqIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAqIGhhc19wYWRkaW5nKTsKIEdUeXBlIGdzdF9jb3JlX3ZpZGVvX21ldGFfYXBpX2dldF90eXBlICh2b2lkKTsKIAogR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL3N5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb21lbW9yeS5jIGIvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvbWVtb3J5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNiMDg1ZAotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb21lbW9yeS5jCkBAIC0wLDAgKzEsNDY1IEBACisvKiBHU3RyZWFtZXIgQXBwbGUgQ29yZSBWaWRlbyBtZW1vcnkKKyAqIENvcHlyaWdodCAoQykgMjAxNSBJbHlhIEtvbnN0YW50aW5vdgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJjb3JldmlkZW9tZW1vcnkuaCIKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9BUFBMRV9DT1JFX1ZJREVPX01FTU9SWSk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBHU1RfQ0FUX0FQUExFX0NPUkVfVklERU9fTUVNT1JZCisKK3N0YXRpYyBjb25zdCBjaGFyICpfbG9ja19zdGF0ZV9uYW1lc1tdID0geworICAiVW5sb2NrZWQiLCAiTG9ja2VkIFJlYWQtT25seSIsICJMb2NrZWQgUmVhZC1Xcml0ZSIKK307CisKKy8qKgorICogZ3N0X2FwcGxlX2NvcmVfdmlkZW9fcGl4ZWxfYnVmZmVyX25ldzoKKyAqIEBidWY6IGFuIHVubG9ja2VkIENWUGl4ZWxCdWZmZXIKKyAqCisgKiBJbml0aWFsaXplcyBhIHdyYXBwZXIgdG8gbWFuYWdlIGxvY2tpbmcgc3RhdGUgZm9yIGEgQ1ZQaXhlbEJ1ZmZlci4KKyAqIFRoaXMgZnVuY3Rpb24gZXhwZWN0cyB0byByZWNlaXZlIHVubG9ja2VkIENWUGl4ZWxCdWZmZXIsIGFuZCBmdXJ0aGVyIGFzc3VtZXMKKyAqIHRoYXQgbm8gb25lIGVsc2Ugd2lsbCBsb2NrIGl0IChhcyBsb25nIGFzIHRoZSB3cmFwcGVyIGV4aXN0cykuCisgKgorICogVGhpcyBmdW5jdGlvbiByZXRhaW5zIEBidWYuCisgKgorICogUmV0dXJuczogVGhlIHdyYXBwZWQgQGJ1Zi4KKyAqLworR3N0QXBwbGVDb3JlVmlkZW9QaXhlbEJ1ZmZlciAqCitnc3RfYXBwbGVfY29yZV92aWRlb19waXhlbF9idWZmZXJfbmV3IChDVlBpeGVsQnVmZmVyUmVmIGJ1ZikKK3sKKyAgR3N0QXBwbGVDb3JlVmlkZW9QaXhlbEJ1ZmZlciAqZ3BpeGJ1ZiA9CisgICAgICBnX3NsaWNlX25ldyAoR3N0QXBwbGVDb3JlVmlkZW9QaXhlbEJ1ZmZlcik7CisgIGdwaXhidWYtPnJlZmNvdW50ID0gMTsKKyAgZ19tdXRleF9pbml0ICgmZ3BpeGJ1Zi0+bXV0ZXgpOworICBncGl4YnVmLT5idWYgPSBDVlBpeGVsQnVmZmVyUmV0YWluIChidWYpOworICBncGl4YnVmLT5sb2NrX3N0YXRlID0gR1NUX0FQUExFX0NPUkVfVklERU9fTUVNT1JZX1VOTE9DS0VEOworICBncGl4YnVmLT5sb2NrX2NvdW50ID0gMDsKKyAgcmV0dXJuIGdwaXhidWY7Cit9CisKK0dzdEFwcGxlQ29yZVZpZGVvUGl4ZWxCdWZmZXIgKgorZ3N0X2FwcGxlX2NvcmVfdmlkZW9fcGl4ZWxfYnVmZmVyX3JlZiAoR3N0QXBwbGVDb3JlVmlkZW9QaXhlbEJ1ZmZlciAqIGdwaXhidWYpCit7CisgIGdfYXRvbWljX2ludF9pbmMgKCZncGl4YnVmLT5yZWZjb3VudCk7CisgIHJldHVybiBncGl4YnVmOworfQorCit2b2lkCitnc3RfYXBwbGVfY29yZV92aWRlb19waXhlbF9idWZmZXJfdW5yZWYgKEdzdEFwcGxlQ29yZVZpZGVvUGl4ZWxCdWZmZXIgKiBncGl4YnVmKQoreworICBpZiAoZ19hdG9taWNfaW50X2RlY19hbmRfdGVzdCAoJmdwaXhidWYtPnJlZmNvdW50KSkgeworICAgIGlmIChncGl4YnVmLT5sb2NrX3N0YXRlICE9IEdTVF9BUFBMRV9DT1JFX1ZJREVPX01FTU9SWV9VTkxPQ0tFRCkgeworICAgICAgR1NUX0VSUk9SCisgICAgICAgICAgKCIlcDogQ1ZQaXhlbEJ1ZmZlciBtZW1vcnkgc3RpbGwgbG9ja2VkIChsb2NrX2NvdW50ID0gJWQpLCBsaWtlbHkgZm9yZ290IHRvIHVubWFwIEdzdEFwcGxlQ29yZVZpZGVvTWVtb3J5IiwKKyAgICAgICAgICBncGl4YnVmLCBncGl4YnVmLT5sb2NrX2NvdW50KTsKKyAgICB9CisgICAgQ1ZQaXhlbEJ1ZmZlclJlbGVhc2UgKGdwaXhidWYtPmJ1Zik7CisgICAgZ19tdXRleF9jbGVhciAoJmdwaXhidWYtPm11dGV4KTsKKyAgICBnX3NsaWNlX2ZyZWUgKEdzdEFwcGxlQ29yZVZpZGVvUGl4ZWxCdWZmZXIsIGdwaXhidWYpOworICB9Cit9CisKKy8qKgorICogZ3N0X2FwcGxlX2NvcmVfdmlkZW9fcGl4ZWxfYnVmZmVyX2xvY2s6CisgKiBAZ3BpeGJ1ZjogdGhlIHdyYXBwZWQgQ1ZQaXhlbEJ1ZmZlcgorICogQGZsYWdzOiBtYXBwaW5nIGZsYWdzIGZvciBlaXRoZXIgcmVhZC1vbmx5IG9yIHJlYWQtd3JpdGUgbG9ja2luZworICoKKyAqIExvY2tzIHRoZSBwaXhlbCBidWZmZXIgaW50byBDUFUgbWVtb3J5IGZvciByZWFkaW5nIG9ubHksIG9yCisgKiByZWFkaW5nIGFuZCB3cml0aW5nLiBUaGUgZGVzaXJlZCBsb2NrIG1vZGUgaXMgZGVkdWNlZCBmcm9tIEBmbGFncy4KKyAqCisgKiBGb3IgcGxhbmFyIGJ1ZmZlcnMsIGVhY2ggcGxhbmUncyAjR3N0QXBwbGVDb3JlVmlkZW9NZW1vcnkgd2lsbCByZWZlcmVuY2UKKyAqIHRoZSBzYW1lICNHc3RBcHBsZUNvcmVWaWRlb1BpeGVsQnVmZmVyOyB0aGVyZWZvcmUgdGhpcyBmdW5jdGlvbiB3aWxsIGJlCisgKiBjYWxsZWQgbXVsdGlwbGUgdGltZXMgZm9yIHRoZSBzYW1lIEBncGl4YnVmLiBFYWNoIGNhbGwgdG8gdGhpcyBmdW5jdGlvbgorICogc2hvdWxkIGJlIG1hdGNoZWQgYnkgYSBjYWxsIHRvIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX3BpeGVsX2J1ZmZlcl91bmxvY2soKS4KKyAqCisgKiBOb3RlczoKKyAqCisgKiAtIFJlYWQtb25seSBsb2NraW5nIGltcHJvdmVzIHBlcmZvcm1hbmNlIGJ5IHByZXZlbnRpbmcgQ29yZSBWaWRlbworICogICBmcm9tIGludmFsaWRhdGluZyBleGlzdGluZyBjYWNoZXMgb2YgdGhlIGJ1ZmZlcuKAmXMgY29udGVudHMuCisgKgorICogLSBPbmx5IHRoZSBmaXJzdCBjYWxsIGFjdHVhbGx5IGxvY2tzOyBzdWJzZXF1ZW50IGNhbGxzIHN1Y2NlZWQKKyAqICAgYXMgbG9uZyBhcyB0aGVpciByZXF1ZXN0ZWQgZmxhZ3MgYXJlIGNvbXBhdGlibGUgd2l0aCBob3cgdGhlIGJ1ZmZlcgorICogICBpcyBhbHJlYWR5IGxvY2tlZC4KKyAqCisgKiAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBzdWNjZWVkOgorICogICB8WzwhLS0gbGFuZ3VhZ2U9IkMiIC0tPgorICogICBnc3RfbWVtb3J5X21hcChwbGFuZTEsIEdTVF9NQVBfUkVBRFdSSVRFKTsKKyAqICAgZ3N0X21lbW9yeV9tYXAocGxhbmUyLCBHU1RfTUFQX1JFQUQpOworICogICBdfAorICogICB3aGlsZSB0aGUgxpJvbGxvd2luZyBjb2RlIHdpbGwgZmFpbDoKKyAqICAgfFs8IS0tIGxhbmd1YWdlPSJDIiAtLT4KKyAqICAgZ3N0X21lbW9yeV9tYXAocGxhbmUxLCBHU1RfTUFQX1JFQUQpOworICogICBnc3RfbWVtb3J5X21hcChwbGFuZTIsIEdTVF9NQVBfUkVBRFdSSVRFKTsgLzwhLS0gLS0+KiBFUlJPUjogYWxyZWFkeSBsb2NrZWQgZm9yIHJlYWQtb25seSAqPCEtLSAtLT4vCisgKiAgIF18CisgKgorICogUmV0dXJuczogJVRSVUUgaWYgdGhlIGJ1ZmZlciB3YXMgbG9ja2VkIGFzIHJlcXVlc3RlZAorICovCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9hcHBsZV9jb3JlX3ZpZGVvX3BpeGVsX2J1ZmZlcl9sb2NrIChHc3RBcHBsZUNvcmVWaWRlb1BpeGVsQnVmZmVyICogZ3BpeGJ1ZiwKKyAgICBHc3RNYXBGbGFncyBmbGFncykKK3sKKyAgQ1ZSZXR1cm4gY3ZyZXQ7CisgIENWT3B0aW9uRmxhZ3MgbG9ja0ZsYWdzOworCisgIGdfbXV0ZXhfbG9jayAoJmdwaXhidWYtPm11dGV4KTsKKworICBzd2l0Y2ggKGdwaXhidWYtPmxvY2tfc3RhdGUpIHsKKyAgICBjYXNlIEdTVF9BUFBMRV9DT1JFX1ZJREVPX01FTU9SWV9VTkxPQ0tFRDoKKyAgICAgIGxvY2tGbGFncyA9IChmbGFncyAmIEdTVF9NQVBfV1JJVEUpID8gMCA6IGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seTsKKyAgICAgIGN2cmV0ID0gQ1ZQaXhlbEJ1ZmZlckxvY2tCYXNlQWRkcmVzcyAoZ3BpeGJ1Zi0+YnVmLCBsb2NrRmxhZ3MpOworICAgICAgaWYgKGN2cmV0ICE9IGtDVlJldHVyblN1Y2Nlc3MpIHsKKyAgICAgICAgZ19tdXRleF91bmxvY2sgKCZncGl4YnVmLT5tdXRleCk7CisgICAgICAgIC8qIFRPRE86IE1hcCBrQ1ZSZXR1cm5FcnJvciBldGMuIGludG8gc3RyaW5ncyAqLworICAgICAgICBHU1RfRVJST1IgKCIlcDogdW5hYmxlIHRvIGxvY2sgYmFzZSBhZGRyZXNzIGZvciBwaXhidWYgJXA6ICVkIiwgZ3BpeGJ1ZiwKKyAgICAgICAgICAgIGdwaXhidWYtPmJ1ZiwgY3ZyZXQpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICB9CisgICAgICBncGl4YnVmLT5sb2NrX3N0YXRlID0KKyAgICAgICAgICAoZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKSA/CisgICAgICAgICAgR1NUX0FQUExFX0NPUkVfVklERU9fTUVNT1JZX0xPQ0tFRF9SRUFEX1dSSVRFIDoKKyAgICAgICAgICBHU1RfQVBQTEVfQ09SRV9WSURFT19NRU1PUllfTE9DS0VEX1JFQURPTkxZOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEdTVF9BUFBMRV9DT1JFX1ZJREVPX01FTU9SWV9MT0NLRURfUkVBRE9OTFk6CisgICAgICBpZiAoZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKSB7CisgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmZ3BpeGJ1Zi0+bXV0ZXgpOworICAgICAgICBHU1RfRVJST1IgKCIlcDogcGl4ZWwgYnVmZmVyICVwIGFscmVhZHkgbG9ja2VkIGZvciByZWFkLW9ubHkgYWNjZXNzIiwKKyAgICAgICAgICAgIGdwaXhidWYsIGdwaXhidWYtPmJ1Zik7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBHU1RfQVBQTEVfQ09SRV9WSURFT19NRU1PUllfTE9DS0VEX1JFQURfV1JJVEU6CisgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgIC8qIG5vdGhpbmcgdG8gZG8sIGFscmVhZHkgbW9zdCBwZXJtaXNzaXZlIG1hcHBpbmcgKi8KKyAgfQorCisgIGdfYXRvbWljX2ludF9pbmMgKCZncGl4YnVmLT5sb2NrX2NvdW50KTsKKworICBnX211dGV4X3VubG9jayAoJmdwaXhidWYtPm11dGV4KTsKKworICBHU1RfREVCVUcgKCIlcDogcGl4YnVmICVwLCAlcyAoJWQgdGltZXMpIiwKKyAgICAgIGdwaXhidWYsCisgICAgICBncGl4YnVmLT5idWYsCisgICAgICBfbG9ja19zdGF0ZV9uYW1lc1tncGl4YnVmLT5sb2NrX3N0YXRlXSwgZ3BpeGJ1Zi0+bG9ja19jb3VudCk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qKgorICogZ3N0X2FwcGxlX2NvcmVfdmlkZW9fcGl4ZWxfYnVmZmVyX3VubG9jazoKKyAqIEBncGl4YnVmOiB0aGUgd3JhcHBlZCBDVlBpeGVsQnVmZmVyCisgKgorICogVW5sb2NrcyB0aGUgcGl4ZWwgYnVmZmVyIGZyb20gQ1BVIG1lbW9yeS4gU2hvdWxkIGJlIGNhbGxlZAorICogZm9yIGV2ZXJ5IGdzdF9hcHBsZV9jb3JlX3ZpZGVvX3BpeGVsX2J1ZmZlcl9sb2NrKCkgY2FsbC4KKyAqLworc3RhdGljIGdib29sZWFuCitnc3RfYXBwbGVfY29yZV92aWRlb19waXhlbF9idWZmZXJfdW5sb2NrIChHc3RBcHBsZUNvcmVWaWRlb1BpeGVsQnVmZmVyICoKKyAgICBncGl4YnVmKQoreworICBDVk9wdGlvbkZsYWdzIGxvY2tGbGFnczsKKyAgQ1ZSZXR1cm4gY3ZyZXQ7CisKKyAgaWYgKGdwaXhidWYtPmxvY2tfc3RhdGUgPT0gR1NUX0FQUExFX0NPUkVfVklERU9fTUVNT1JZX1VOTE9DS0VEKSB7CisgICAgR1NUX0VSUk9SICgiJXA6IHBpeGVsIGJ1ZmZlciAlcCBub3QgbG9ja2VkIiwgZ3BpeGJ1ZiwgZ3BpeGJ1Zi0+YnVmKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoIWdfYXRvbWljX2ludF9kZWNfYW5kX3Rlc3QgKCZncGl4YnVmLT5sb2NrX2NvdW50KSkgeworICAgIHJldHVybiBUUlVFOyAgICAgICAgICAgICAgICAvKiBzdGlsbCBsb2NrZWQsIGJ5IGN1cnJlbnQgYW5kL29yIG90aGVyIGNhbGxlcnMgKi8KKyAgfQorCisgIGdfbXV0ZXhfbG9jayAoJmdwaXhidWYtPm11dGV4KTsKKworICBsb2NrRmxhZ3MgPQorICAgICAgKGdwaXhidWYtPmxvY2tfc3RhdGUgPT0KKyAgICAgIEdTVF9BUFBMRV9DT1JFX1ZJREVPX01FTU9SWV9MT0NLRURfUkVBRE9OTFkpID8ga0NWUGl4ZWxCdWZmZXJMb2NrX1JlYWRPbmx5CisgICAgICA6IDA7CisgIGN2cmV0ID0gQ1ZQaXhlbEJ1ZmZlclVubG9ja0Jhc2VBZGRyZXNzIChncGl4YnVmLT5idWYsIGxvY2tGbGFncyk7CisgIGlmIChjdnJldCAhPSBrQ1ZSZXR1cm5TdWNjZXNzKSB7CisgICAgZ19tdXRleF91bmxvY2sgKCZncGl4YnVmLT5tdXRleCk7CisgICAgZ19hdG9taWNfaW50X2luYyAoJmdwaXhidWYtPmxvY2tfY291bnQpOworICAgIC8qIFRPRE86IE1hcCBrQ1ZSZXR1cm5FcnJvciBldGMuIGludG8gc3RyaW5ncyAqLworICAgIEdTVF9FUlJPUiAoIiVwOiB1bmFibGUgdG8gdW5sb2NrIGJhc2UgYWRkcmVzcyBmb3IgcGl4YnVmICVwOiAlZCIsIGdwaXhidWYsCisgICAgICAgIGdwaXhidWYtPmJ1ZiwgY3ZyZXQpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGdwaXhidWYtPmxvY2tfc3RhdGUgPSBHU1RfQVBQTEVfQ09SRV9WSURFT19NRU1PUllfVU5MT0NLRUQ7CisKKyAgZ19tdXRleF91bmxvY2sgKCZncGl4YnVmLT5tdXRleCk7CisKKyAgR1NUX0RFQlVHICgiJXA6IHBpeGJ1ZiAlcCwgJXMgKCVkIGxvY2tzIHJlbWFpbmluZykiLAorICAgICAgZ3BpeGJ1ZiwKKyAgICAgIGdwaXhidWYtPmJ1ZiwKKyAgICAgIF9sb2NrX3N0YXRlX25hbWVzW2dwaXhidWYtPmxvY2tfc3RhdGVdLCBncGl4YnVmLT5sb2NrX2NvdW50KTsKKworICByZXR1cm4gVFJVRTsKK30KKworLyoKKyAqIEdzdEFwcGxlQ29yZVZpZGVvQWxsb2NhdG9yCisgKi8KKworc3RydWN0IF9Hc3RBcHBsZUNvcmVWaWRlb0FsbG9jYXRvckNsYXNzCit7CisgIEdzdEFsbG9jYXRvckNsYXNzIHBhcmVudF9jbGFzczsKK307CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RBcHBsZUNvcmVWaWRlb0FsbG9jYXRvckNsYXNzIEdzdEFwcGxlQ29yZVZpZGVvQWxsb2NhdG9yQ2xhc3M7CisKK3N0cnVjdCBfR3N0QXBwbGVDb3JlVmlkZW9BbGxvY2F0b3IKK3sKKyAgR3N0QWxsb2NhdG9yIHBhcmVudF9pbnN0YW5jZTsKK307CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RBcHBsZUNvcmVWaWRlb0FsbG9jYXRvciBHc3RBcHBsZUNvcmVWaWRlb0FsbG9jYXRvcjsKKworLyogR1R5cGUgZm9yIEdzdEFwcGxlQ29yZVZpZGVvQWxsb2NhdG9yICovCitHVHlwZSBnc3RfYXBwbGVfY29yZV92aWRlb19hbGxvY2F0b3JfZ2V0X3R5cGUgKHZvaWQpOworI2RlZmluZSBHU1RfVFlQRV9BUFBMRV9DT1JFX1ZJREVPX0FMTE9DQVRPUiAgICAgICAgICAgICAoZ3N0X2FwcGxlX2NvcmVfdmlkZW9fYWxsb2NhdG9yX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9JU19BUFBMRV9DT1JFX1ZJREVPX0FMTE9DQVRPUihvYmopICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX0FQUExFX0NPUkVfVklERU9fQUxMT0NBVE9SKSkKKyNkZWZpbmUgR1NUX0lTX0FQUExFX0NPUkVfVklERU9fQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9BUFBMRV9DT1JFX1ZJREVPX0FMTE9DQVRPUikpCisjZGVmaW5lIEdTVF9BUFBMRV9DT1JFX1ZJREVPX0FMTE9DQVRPUl9HRVRfQ0xBU1Mob2JqKSAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgR1NUX1RZUEVfQVBQTEVfQ09SRV9WSURFT19BTExPQ0FUT1IsIEdzdEFwcGxlQ29yZVZpZGVvQWxsb2NhdG9yQ2xhc3MpKQorI2RlZmluZSBHU1RfQVBQTEVfQ09SRV9WSURFT19BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9BUFBMRV9DT1JFX1ZJREVPX0FMTE9DQVRPUiwgR3N0QXBwbGVDb3JlVmlkZW9BbGxvY2F0b3IpKQorI2RlZmluZSBHU1RfQVBQTEVfQ09SRV9WSURFT19BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX0FQUExFX0NPUkVfVklERU9fQUxMT0NBVE9SLCBHc3RBcHBsZUNvcmVWaWRlb0FsbG9jYXRvckNsYXNzKSkKKworR19ERUZJTkVfVFlQRSAoR3N0QXBwbGVDb3JlVmlkZW9BbGxvY2F0b3IsIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX2FsbG9jYXRvciwKKyAgICBHU1RfVFlQRV9BTExPQ0FUT1IpOworCisvKiBOYW1lIGZvciBhbGxvY2F0b3IgcmVnaXN0cmF0aW9uICovCisjZGVmaW5lIEdTVF9BUFBMRV9DT1JFX1ZJREVPX0FMTE9DQVRPUl9OQU1FICJBcHBsZUNvcmVWaWRlb01lbW9yeSIKKworLyogU2luZ2xldG9uIGluc3RhbmNlIG9mIEdzdEFwcGxlQ29yZVZpZGVvQWxsb2NhdG9yICovCitzdGF0aWMgR3N0QXBwbGVDb3JlVmlkZW9BbGxvY2F0b3IgKl9hcHBsZV9jb3JlX3ZpZGVvX2FsbG9jYXRvcjsKKworLyoqCisgKiBnc3RfYXBwbGVfY29yZV92aWRlb19tZW1vcnlfaW5pdDoKKyAqCisgKiBJbml0aWFsaXplcyB0aGUgQ29yZSBWaWRlbyBNZW1vcnkgYWxsb2NhdG9yLiBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkCisgKiBiZWZvcmUgI0dzdEFwcGxlQ29yZVZpZGVvTWVtb3J5IGNhbiBiZSBjcmVhdGVkLgorICoKKyAqIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIG11bHRpcGxlIHRpbWVzLgorICovCit2b2lkCitnc3RfYXBwbGVfY29yZV92aWRlb19tZW1vcnlfaW5pdCAodm9pZCkKK3sKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9BUFBMRV9DT1JFX1ZJREVPX01FTU9SWSwgImNvcmV2aWRlb21lbW9yeSIsCisgICAgICAgIDAsICJBcHBsZSBDb3JlIFZpZGVvIE1lbW9yeSIpOworCisgICAgX2FwcGxlX2NvcmVfdmlkZW9fYWxsb2NhdG9yID0KKyAgICAgICAgZ19vYmplY3RfbmV3IChHU1RfVFlQRV9BUFBMRV9DT1JFX1ZJREVPX0FMTE9DQVRPUiwgTlVMTCk7CisKKyAgICBnc3RfYWxsb2NhdG9yX3JlZ2lzdGVyIChHU1RfQVBQTEVfQ09SRV9WSURFT19BTExPQ0FUT1JfTkFNRSwKKyAgICAgICAgZ3N0X29iamVjdF9yZWYgKF9hcHBsZV9jb3JlX3ZpZGVvX2FsbG9jYXRvcikpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9Cit9CisKKy8qKgorICogZ3N0X2lzX2FwcGxlX2NvcmVfdmlkZW9fbWVtb3J5OgorICogQG1lbTogI0dzdE1lbW9yeQorICoKKyAqIENoZWNrcyB3aGV0aGVyIEBtZW0gaXMgYmFja2VkIGJ5IGEgQ1ZQaXhlbEJ1ZmZlci4KKyAqIFRoaXMgaGFzIGxpbWl0ZWQgdXNlIHNpbmNlICNHc3RBcHBsZUNvcmVWaWRlb01lbW9yeSBpcyB0cmFuc3BhcmVudGx5CisgKiBtYXBwZWQgaW50byBDUFUgbWVtb3J5IG9uIHJlcXVlc3QuCisgKgorICogUmV0dXJuczogJVRSVUUgd2hlbiBAbWVtIGlzIGJhY2tlZCBieSBhIENWUGl4ZWxCdWZmZXIKKyAqLworZ2Jvb2xlYW4KK2dzdF9pc19hcHBsZV9jb3JlX3ZpZGVvX21lbW9yeSAoR3N0TWVtb3J5ICogbWVtKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAobWVtICE9IE5VTEwsIEZBTFNFKTsKKworICByZXR1cm4gR1NUX0lTX0FQUExFX0NPUkVfVklERU9fQUxMT0NBVE9SIChtZW0tPmFsbG9jYXRvcik7Cit9CisKKy8qKgorICogZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtb3J5X25ldzoKKyAqCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbV9zaGFyZSgpLgorICogVXNlcnMgc2hvdWxkIGNhbGwgZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtb3J5X25ld193cmFwcGVkKCkgaW5zdGVhZC4KKyAqLworc3RhdGljIEdzdE1lbW9yeSAqCitnc3RfYXBwbGVfY29yZV92aWRlb19tZW1vcnlfbmV3IChHc3RNZW1vcnlGbGFncyBmbGFncywgR3N0TWVtb3J5ICogcGFyZW50LAorICAgIEdzdEFwcGxlQ29yZVZpZGVvUGl4ZWxCdWZmZXIgKiBncGl4YnVmLCBnc2l6ZSBwbGFuZSwgZ3NpemUgbWF4c2l6ZSwKKyAgICBnc2l6ZSBhbGlnbiwgZ3NpemUgb2Zmc2V0LCBnc2l6ZSBzaXplKQoreworICBHc3RBcHBsZUNvcmVWaWRlb01lbW9yeSAqbWVtOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChncGl4YnVmICE9IE5VTEwsIE5VTEwpOworCisgIG1lbSA9IGdfc2xpY2VfbmV3MCAoR3N0QXBwbGVDb3JlVmlkZW9NZW1vcnkpOworICBnc3RfbWVtb3J5X2luaXQgKEdTVF9NRU1PUllfQ0FTVCAobWVtKSwgZmxhZ3MsCisgICAgICBHU1RfQUxMT0NBVE9SX0NBU1QgKF9hcHBsZV9jb3JlX3ZpZGVvX2FsbG9jYXRvciksIHBhcmVudCwgbWF4c2l6ZSwgYWxpZ24sCisgICAgICBvZmZzZXQsIHNpemUpOworCisgIG1lbS0+Z3BpeGJ1ZiA9IGdzdF9hcHBsZV9jb3JlX3ZpZGVvX3BpeGVsX2J1ZmZlcl9yZWYgKGdwaXhidWYpOworICBtZW0tPnBsYW5lID0gcGxhbmU7CisKKyAgR1NUX0RFQlVHICgiJXA6IGdwaXhidWYgJXAsIHBsYW5lOiAlIiBHX0dTU0laRV9GT1JNQVQgIiwgc2l6ZSAlIgorICAgICAgR19HU0laRV9GT1JNQVQsIG1lbSwgbWVtLT5ncGl4YnVmLCBtZW0tPnBsYW5lLCBtZW0tPm1lbS5zaXplKTsKKworICByZXR1cm4gKEdzdE1lbW9yeSAqKSBtZW07Cit9CisKKy8qKgorICogZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtb3J5X25ld193cmFwcGVkOgorICogQGdwaXhidWY6IHRoZSBiYWNraW5nICNHc3RBcHBsZUNvcmVWaWRlb1BpeGVsQnVmZmVyCisgKiBAcGxhbmU6IHRoZSBwbGFuZSB0aGlzIG1lbW9yeSB3aWxsIHJlcHJlc2VudCwgb3IgI0dTVF9BUFBMRV9DT1JFX1ZJREVPX05PX1BMQU5FIGZvciBub24tcGxhbmFyIGJ1ZmZlcgorICogQHNpemU6IHRoZSBzaXplIG9mIHRoZSBidWZmZXIgb3Igc3BlY2lmaWMgcGxhbmUKKyAqCisgKiBSZXR1cm5zOiBhIG5ld2x5IGFsbG9jYXRlZCAjR3N0QXBwbGVDb3JlVmlkZW9NZW1vcnkKKyAqLworR3N0TWVtb3J5ICoKK2dzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbW9yeV9uZXdfd3JhcHBlZCAoR3N0QXBwbGVDb3JlVmlkZW9QaXhlbEJ1ZmZlciAqIGdwaXhidWYsCisgICAgZ3NpemUgcGxhbmUsIGdzaXplIHNpemUpCit7CisgIHJldHVybiBnc3RfYXBwbGVfY29yZV92aWRlb19tZW1vcnlfbmV3ICgwLCBOVUxMLCBncGl4YnVmLCBwbGFuZSwgc2l6ZSwgMCwgMCwKKyAgICAgIHNpemUpOworfQorCitzdGF0aWMgZ3BvaW50ZXIKK2dzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbV9tYXAgKEdzdE1lbW9yeSAqIGdtZW0sIGdzaXplIG1heHNpemUsCisgICAgR3N0TWFwRmxhZ3MgZmxhZ3MpCit7CisgIEdzdEFwcGxlQ29yZVZpZGVvTWVtb3J5ICptZW0gPSAoR3N0QXBwbGVDb3JlVmlkZW9NZW1vcnkgKikgZ21lbTsKKyAgZ3BvaW50ZXIgcmV0OworCisgIGlmICghZ3N0X2FwcGxlX2NvcmVfdmlkZW9fcGl4ZWxfYnVmZmVyX2xvY2sgKG1lbS0+Z3BpeGJ1ZiwgZmxhZ3MpKQorICAgIHJldHVybiBOVUxMOworCisgIGlmIChtZW0tPnBsYW5lICE9IEdTVF9BUFBMRV9DT1JFX1ZJREVPX05PX1BMQU5FKSB7CisgICAgcmV0ID0gQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZSAobWVtLT5ncGl4YnVmLT5idWYsIG1lbS0+cGxhbmUpOworCisgICAgaWYgKHJldCAhPSBOVUxMKQorICAgICAgR1NUX0RFQlVHICgiJXA6IHBpeGJ1ZiAlcCBwbGFuZSAlIiBHX0dTSVpFX0ZPUk1BVAorICAgICAgICAgICIgZmxhZ3MgJTA4eDogbWFwcGVkICVwIiwgbWVtLCBtZW0tPmdwaXhidWYtPmJ1ZiwgbWVtLT5wbGFuZSwgZmxhZ3MsCisgICAgICAgICAgcmV0KTsKKyAgICBlbHNlCisgICAgICBHU1RfRVJST1IgKCIlcDogaW52YWxpZCBwbGFuZSBiYXNlIGFkZHJlc3MgKE5VTEwpIGZvciBwaXhidWYgJXAgcGxhbmUgJSIKKyAgICAgICAgICBHX0dTSVpFX0ZPUk1BVCwgbWVtLCBtZW0tPmdwaXhidWYtPmJ1ZiwgbWVtLT5wbGFuZSk7CisgIH0gZWxzZSB7CisgICAgcmV0ID0gQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzIChtZW0tPmdwaXhidWYtPmJ1Zik7CisKKyAgICBpZiAocmV0ICE9IE5VTEwpCisgICAgICBHU1RfREVCVUcgKCIlcDogcGl4YnVmICVwIGZsYWdzICUwOHg6IG1hcHBlZCAlcCIsIG1lbSwgbWVtLT5ncGl4YnVmLT5idWYsCisgICAgICAgICAgZmxhZ3MsIHJldCk7CisgICAgZWxzZQorICAgICAgR1NUX0VSUk9SICgiJXA6IGludmFsaWQgYmFzZSBhZGRyZXNzIChOVUxMKSBmb3IgcGl4YnVmICVwIgorICAgICAgICAgIEdfR1NJWkVfRk9STUFULCBtZW0sIG1lbS0+Z3BpeGJ1Zi0+YnVmKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYXBwbGVfY29yZV92aWRlb19tZW1fdW5tYXAgKEdzdE1lbW9yeSAqIGdtZW0pCit7CisgIEdzdEFwcGxlQ29yZVZpZGVvTWVtb3J5ICptZW0gPSAoR3N0QXBwbGVDb3JlVmlkZW9NZW1vcnkgKikgZ21lbTsKKyAgKHZvaWQpIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX3BpeGVsX2J1ZmZlcl91bmxvY2sgKG1lbS0+Z3BpeGJ1Zik7CisgIGlmIChtZW0tPnBsYW5lICE9IEdTVF9BUFBMRV9DT1JFX1ZJREVPX05PX1BMQU5FKQorICAgIEdTVF9ERUJVRyAoIiVwOiBwaXhidWYgJXAgcGxhbmUgJSIgR19HU0laRV9GT1JNQVQsIG1lbSwKKyAgICAgICAgbWVtLT5ncGl4YnVmLT5idWYsIG1lbS0+cGxhbmUpOworICBlbHNlCisgICAgR1NUX0RFQlVHICgiJXA6IHBpeGJ1ZiAlcCIsIG1lbSwgbWVtLT5ncGl4YnVmLT5idWYpOworfQorCitzdGF0aWMgR3N0TWVtb3J5ICoKK2dzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbV9zaGFyZSAoR3N0TWVtb3J5ICogZ21lbSwgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCit7CisgIEdzdEFwcGxlQ29yZVZpZGVvTWVtb3J5ICptZW07CisgIEdzdE1lbW9yeSAqcGFyZW50LCAqc3ViOworCisgIG1lbSA9IChHc3RBcHBsZUNvcmVWaWRlb01lbW9yeSAqKSBnbWVtOworCisgIC8qIGZpbmQgdGhlIHJlYWwgcGFyZW50ICovCisgIHBhcmVudCA9IGdtZW0tPnBhcmVudDsKKyAgaWYgKHBhcmVudCA9PSBOVUxMKQorICAgIHBhcmVudCA9IGdtZW07CisKKyAgaWYgKHNpemUgPT0gLTEpCisgICAgc2l6ZSA9IGdtZW0tPnNpemUgLSBvZmZzZXQ7CisKKyAgLyogdGhlIHNoYXJlZCBtZW1vcnkgaXMgYWx3YXlzIHJlYWRvbmx5ICovCisgIHN1YiA9CisgICAgICBnc3RfYXBwbGVfY29yZV92aWRlb19tZW1vcnlfbmV3IChHU1RfTUlOSV9PQkpFQ1RfRkxBR1MgKHBhcmVudCkgfAorICAgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfTE9DS19SRUFET05MWSwgcGFyZW50LCBtZW0tPmdwaXhidWYsIG1lbS0+cGxhbmUsCisgICAgICBnbWVtLT5tYXhzaXplLCBnbWVtLT5hbGlnbiwgZ21lbS0+b2Zmc2V0ICsgb2Zmc2V0LCBzaXplKTsKKworICByZXR1cm4gc3ViOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbV9pc19zcGFuIChHc3RNZW1vcnkgKiBtZW0xLCBHc3RNZW1vcnkgKiBtZW0yLAorICAgIGdzaXplICogb2Zmc2V0KQoreworICAvKiBXZSBtYXkgb25seSByZXR1cm4gRkFMU0Ugc2luY2U6CisgICAqIDEpIENvcmUgVmlkZW8gZ2l2ZXMgbm8gZ3VhcmFudGVlcyBhYm91dCBwbGFuZXMgYmVpbmcgY29uc2VjdXRpdmUuCisgICAqICAgIFdlIG1heSBvbmx5IGtub3cgdGhpcyBhZnRlciBtYXBwaW5nLgorICAgKiAyKSBHc3RBcHBsZUNvcmVWaWRlb01lbW9yeSBpbnN0YW5jZXMgZm9yIHBsYW5lcyBkbyBub3Qgc2hhcmUgYSBjb21tb24KKyAgICogICAgcGFyZW50IC0tIGkuZS4gdGhleSdyZSBub3Qgb2Zmc2V0cyBpbnRvIHRoZSBzYW1lIHBhcmVudAorICAgKiAgICBtZW1vcnkgaW5zdGFuY2UuCisgICAqCisgICAqIEl0J3Mgbm90IHVubGlrZWx5IHRoYXQgcGxhbmVzIHdpbGwgYmUgc3RvcmVkIGluIGNvbnNlY3V0aXZlIG1lbW9yeQorICAgKiBidXQgaXQgc2hvdWxkIGJlIGNoZWNrZWQgYnkgdGhlIHVzZXIgYWZ0ZXIgbWFwcGluZy4KKyAgICovCisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbV9mcmVlIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIEdzdE1lbW9yeSAqIGdtZW0pCit7CisgIEdzdEFwcGxlQ29yZVZpZGVvTWVtb3J5ICptZW0gPSAoR3N0QXBwbGVDb3JlVmlkZW9NZW1vcnkgKikgZ21lbTsKKworICBnc3RfYXBwbGVfY29yZV92aWRlb19waXhlbF9idWZmZXJfdW5yZWYgKG1lbS0+Z3BpeGJ1Zik7CisKKyAgZ19zbGljZV9mcmVlIChHc3RBcHBsZUNvcmVWaWRlb01lbW9yeSwgbWVtKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9hcHBsZV9jb3JlX3ZpZGVvX2FsbG9jYXRvcl9jbGFzc19pbml0IChHc3RBcHBsZUNvcmVWaWRlb0FsbG9jYXRvckNsYXNzICoKKyAgICBrbGFzcykKK3sKKyAgR3N0QWxsb2NhdG9yQ2xhc3MgKmFsbG9jYXRvcl9jbGFzczsKKworICBhbGxvY2F0b3JfY2xhc3MgPSAoR3N0QWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7CisKKyAgLyogd2UgZG9uJ3QgZG8gYWxsb2NhdGlvbnMsIG9ubHkgd3JhcCBleGlzdGluZyBwaXhlbCBidWZmZXJzICovCisgIGFsbG9jYXRvcl9jbGFzcy0+YWxsb2MgPSBOVUxMOworICBhbGxvY2F0b3JfY2xhc3MtPmZyZWUgPSBnc3RfYXBwbGVfY29yZV92aWRlb19tZW1fZnJlZTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9hcHBsZV9jb3JlX3ZpZGVvX2FsbG9jYXRvcl9pbml0IChHc3RBcHBsZUNvcmVWaWRlb0FsbG9jYXRvciAqIGFsbG9jYXRvcikKK3sKKyAgR3N0QWxsb2NhdG9yICphbGxvYyA9IEdTVF9BTExPQ0FUT1JfQ0FTVCAoYWxsb2NhdG9yKTsKKworICBhbGxvYy0+bWVtX3R5cGUgPSBHU1RfQVBQTEVfQ09SRV9WSURFT19BTExPQ0FUT1JfTkFNRTsKKyAgYWxsb2MtPm1lbV9tYXAgPSBnc3RfYXBwbGVfY29yZV92aWRlb19tZW1fbWFwOworICBhbGxvYy0+bWVtX3VubWFwID0gZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtX3VubWFwOworICBhbGxvYy0+bWVtX3NoYXJlID0gZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtX3NoYXJlOworICBhbGxvYy0+bWVtX2lzX3NwYW4gPSBnc3RfYXBwbGVfY29yZV92aWRlb19tZW1faXNfc3BhbjsKKworICBHU1RfT0JKRUNUX0ZMQUdfU0VUIChhbGxvY2F0b3IsIEdTVF9BTExPQ0FUT1JfRkxBR19DVVNUT01fQUxMT0MpOworfQpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvdGV4dHVyZWNhY2hlLm0gYi9zeXMvYXBwbGVtZWRpYS9jb3JldmlkZW90ZXh0dXJlY2FjaGUubQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDViOWFlYi4uMDAwMDAwMAotLS0gYS9zeXMvYXBwbGVtZWRpYS9jb3JldmlkZW90ZXh0dXJlY2FjaGUubQorKysgL2Rldi9udWxsCkBAIC0xLDI1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIE9sZSBBbmRyw6kgVmFkbGEgUmF2bsOlcyA8b2xlYXZyQHNvdW5kcm9wLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotIyAgaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2lmICFIQVZFX0lPUwotI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgotI2luY2x1ZGUgPGdzdC9nbC9jb2NvYS9nc3RnbGNvbnRleHRfY29jb2EuaD4KLSNlbmRpZgotI2luY2x1ZGUgImNvcmV2aWRlb3RleHR1cmVjYWNoZS5oIgotI2luY2x1ZGUgImNvcmVtZWRpYWJ1ZmZlci5oIgotI2luY2x1ZGUgImNvcmV2aWRlb2J1ZmZlci5oIgotI2luY2x1ZGUgInZ0dXRpbC5oIgotCi10eXBlZGVmIHN0cnVjdCBfQ29udGV4dFRocmVhZERhdGEKLXsKLSAgR3N0Q29yZVZpZGVvVGV4dHVyZUNhY2hlICpjYWNoZTsKLSAgR3N0QnVmZmVyICppbnB1dF9idWZmZXI7Ci0gIEdzdEJ1ZmZlciAqb3V0cHV0X2J1ZmZlcjsKLX0gQ29udGV4dFRocmVhZERhdGE7Ci0KLUdzdENvcmVWaWRlb1RleHR1cmVDYWNoZSAqCi1nc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX25ldyAoR3N0R0xDb250ZXh0ICogY3R4KQotewotICBnX3JldHVybl92YWxfaWZfZmFpbCAoY3R4ICE9IE5VTEwsIE5VTEwpOwotCi0gIEdzdENvcmVWaWRlb1RleHR1cmVDYWNoZSAqY2FjaGUgPSBnX25ldzAgKEdzdENvcmVWaWRlb1RleHR1cmVDYWNoZSwgMSk7Ci0gIGNhY2hlLT5jdHggPSBnc3Rfb2JqZWN0X3JlZiAoY3R4KTsKLSAgZ3N0X3ZpZGVvX2luZm9faW5pdCAoJmNhY2hlLT5pbnB1dF9pbmZvKTsKLSAgY2FjaGUtPmNvbnZlcnQgPSBnc3RfZ2xfY29sb3JfY29udmVydF9uZXcgKGNhY2hlLT5jdHgpOwotCi0jaWYgIUhBVkVfSU9TCi0gIENHTFBpeGVsRm9ybWF0T2JqIHBpeGVsRm9ybWF0ID0KLSAgICAgIGdzdF9nbF9jb250ZXh0X2NvY29hX2dldF9waXhlbF9mb3JtYXQgKEdTVF9HTF9DT05URVhUX0NPQ09BIChjdHgpKTsKLSAgQ0dMQ29udGV4dE9iaiBwbGF0Zm9ybV9jdHggPQotICAgICAgKENHTENvbnRleHRPYmopIGdzdF9nbF9jb250ZXh0X2dldF9nbF9jb250ZXh0IChjdHgpOwotICBDVk9wZW5HTFRleHR1cmVDYWNoZUNyZWF0ZSAoa0NGQWxsb2NhdG9yRGVmYXVsdCwgTlVMTCwgcGxhdGZvcm1fY3R4LAotICAgICAgcGl4ZWxGb3JtYXQsIE5VTEwsICZjYWNoZS0+Y2FjaGUpOwotI2Vsc2UKLSAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjYWNoZV9hdHRycyA9Ci0gICAgICBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlIChOVUxMLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsCi0gICAgICAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Ci0gIGdzdF92dHV0aWxfZGljdF9zZXRfaTMyIChjYWNoZV9hdHRycywKLSAgICAgIGtDVk9wZW5HTEVTVGV4dHVyZUNhY2hlTWF4aW11bVRleHR1cmVBZ2VLZXksIDApOwotICBDVk9wZW5HTEVTVGV4dHVyZUNhY2hlQ3JlYXRlIChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ0ZEaWN0aW9uYXJ5UmVmKSBjYWNoZV9hdHRycywKLSAgICAgIChDVkVBR0xDb250ZXh0KSBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfY29udGV4dCAoY3R4KSwgTlVMTCwgJmNhY2hlLT5jYWNoZSk7Ci0jZW5kaWYKLQotICByZXR1cm4gY2FjaGU7Ci19Ci0KLXZvaWQKLWdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfZnJlZSAoR3N0Q29yZVZpZGVvVGV4dHVyZUNhY2hlICogY2FjaGUpCi17Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKGNhY2hlICE9IE5VTEwpOwotCi0jaWYgIUhBVkVfSU9TCi0gIENWT3BlbkdMVGV4dHVyZUNhY2hlUmVsZWFzZSAoY2FjaGUtPmNhY2hlKTsKLSNlbHNlCi0gIENGUmVsZWFzZSAoY2FjaGUtPmNhY2hlKTsgLyogaU9TIGhhcyBubyAiQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZVJlbGVhc2UiICovCi0jZW5kaWYKLSAgZ3N0X29iamVjdF91bnJlZiAoY2FjaGUtPmNvbnZlcnQpOwotICBnc3Rfb2JqZWN0X3VucmVmIChjYWNoZS0+Y3R4KTsKLSAgZ19mcmVlIChjYWNoZSk7Ci19Ci0KLXZvaWQKLWdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfc2V0X2Zvcm1hdCAoR3N0Q29yZVZpZGVvVGV4dHVyZUNhY2hlICogY2FjaGUsCi0gICAgR3N0VmlkZW9Gb3JtYXQgaW5fZm9ybWF0LCBHc3RDYXBzICogb3V0X2NhcHMpCi17Ci0gIEdzdENhcHMgKmluX2NhcHM7Ci0gIEdzdENhcHNGZWF0dXJlcyAqZmVhdHVyZXM7Ci0KLSAgZ19yZXR1cm5faWZfZmFpbCAoZ3N0X2NhcHNfaXNfZml4ZWQgKG91dF9jYXBzKSk7Ci0KLSAgb3V0X2NhcHMgPSBnc3RfY2Fwc19jb3B5IChvdXRfY2Fwcyk7Ci0gIGZlYXR1cmVzID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChvdXRfY2FwcywgMCk7Ci0gIGdzdF9jYXBzX2ZlYXR1cmVzX2FkZCAoZmVhdHVyZXMsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSk7Ci0gIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmNhY2hlLT5vdXRwdXRfaW5mbywgb3V0X2NhcHMpOyAKLSAgCi0gIGluX2NhcHMgPSBnc3RfY2Fwc19jb3B5IChvdXRfY2Fwcyk7Ci0gIGdzdF9jYXBzX3NldF9zaW1wbGUgKGluX2NhcHMsICJmb3JtYXQiLAotICAgICAgICAgIEdfVFlQRV9TVFJJTkcsIGdzdF92aWRlb19mb3JtYXRfdG9fc3RyaW5nIChpbl9mb3JtYXQpLCBOVUxMKTsKLSAgZmVhdHVyZXMgPSBnc3RfY2Fwc19nZXRfZmVhdHVyZXMgKGluX2NhcHMsIDApOwotICBnc3RfY2Fwc19mZWF0dXJlc19hZGQgKGZlYXR1cmVzLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpOwotICBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZjYWNoZS0+aW5wdXRfaW5mbywgaW5fY2Fwcyk7Ci0KLSAgZ3N0X2dsX2NvbG9yX2NvbnZlcnRfc2V0X2NhcHMgKGNhY2hlLT5jb252ZXJ0LCBpbl9jYXBzLCBvdXRfY2Fwcyk7Ci0KLSAgZ3N0X2NhcHNfdW5yZWYgKG91dF9jYXBzKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGluX2NhcHMpOwotfQotCi1zdGF0aWMgQ1ZQaXhlbEJ1ZmZlclJlZgotY3ZfcGl4ZWxfYnVmZmVyX2Zyb21fZ3N0X2J1ZmZlciAoR3N0QnVmZmVyICogYnVmZmVyKQotewotICBHc3RDb3JlTWVkaWFNZXRhICpjbV9tZXRhID0KLSAgICAgIChHc3RDb3JlTWVkaWFNZXRhICopIGdzdF9idWZmZXJfZ2V0X21ldGEgKGJ1ZmZlciwKLSAgICAgIGdzdF9jb3JlX21lZGlhX21ldGFfYXBpX2dldF90eXBlICgpKTsKLSAgR3N0Q29yZVZpZGVvTWV0YSAqY3ZfbWV0YSA9Ci0gICAgICAoR3N0Q29yZVZpZGVvTWV0YSAqKSBnc3RfYnVmZmVyX2dldF9tZXRhIChidWZmZXIsCi0gICAgICBnc3RfY29yZV92aWRlb19tZXRhX2FwaV9nZXRfdHlwZSAoKSk7Ci0KLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNtX21ldGEgfHwgY3ZfbWV0YSwgTlVMTCk7Ci0KLSAgcmV0dXJuIGNtX21ldGEgPyBjbV9tZXRhLT5waXhlbF9idWYgOiBjdl9tZXRhLT5waXhidWY7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ2xfbWVtX2Zyb21fYnVmZmVyIChHc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGUgKiBjYWNoZSwKLSAgICAgICAgR3N0QnVmZmVyICogYnVmZmVyLCBHc3RNZW1vcnkgKiptZW0xLCBHc3RNZW1vcnkgKiptZW0yKQotewotICBnYm9vbGVhbiByZXQgPSBUUlVFOwotI2lmICFIQVZFX0lPUwotICBDVk9wZW5HTFRleHR1cmVSZWYgdGV4dHVyZSA9IE5VTEw7Ci0jZWxzZQotICBDVk9wZW5HTEVTVGV4dHVyZVJlZiB0ZXh0dXJlID0gTlVMTDsKLSNlbmRpZgotICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsX2J1ZiA9IGN2X3BpeGVsX2J1ZmZlcl9mcm9tX2dzdF9idWZmZXIgKGJ1ZmZlcik7Ci0KLSAgKm1lbTEgPSBOVUxMOwotICAqbWVtMiA9IE5VTEw7Ci0KLSNpZiAhSEFWRV9JT1MKLSAgQ1ZPcGVuR0xUZXh0dXJlQ2FjaGVGbHVzaCAoY2FjaGUtPmNhY2hlLCAwKTsKLSNlbHNlCi0gIENWT3BlbkdMRVNUZXh0dXJlQ2FjaGVGbHVzaCAoY2FjaGUtPmNhY2hlLCAwKTsKLSNlbmRpZgotCi0gIHN3aXRjaCAoR1NUX1ZJREVPX0lORk9fRk9STUFUICgmY2FjaGUtPmlucHV0X2luZm8pKSB7Ci0jaWYgIUhBVkVfSU9TCi0gICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfVVlWWToKLSAgICAgICAgLyogYm90aCBhdmZ2aWRlb3NyYyBhbmQgdnRkZWMgb24gT1NYIHdoZW4gZG9pbmcgR0xNZW1vcnkgbmVnb3RpYXRlIFVZVlkKLSAgICAgICAgICogdW5kZXIgdGhlIGhvb2QsIHdoaWNoIG1lYW5zIGEgc2luZ2xlIG91dHB1dCB0ZXh0dXJlLiAqLwotICAgICAgICBpZiAoQ1ZPcGVuR0xUZXh0dXJlQ2FjaGVDcmVhdGVUZXh0dXJlRnJvbUltYWdlIChrQ0ZBbGxvY2F0b3JEZWZhdWx0LAotICAgICAgICAgICAgICBjYWNoZS0+Y2FjaGUsIHBpeGVsX2J1ZiwgTlVMTCwgJnRleHR1cmUpICE9IGtDVlJldHVyblN1Y2Nlc3MpCi0gICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICAqbWVtMSA9IChHc3RNZW1vcnkgKikgZ3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmUgKGNhY2hlLT5jdHgsCi0gICAgICAgICAgICBDVk9wZW5HTFRleHR1cmVHZXROYW1lICh0ZXh0dXJlKSwgQ1ZPcGVuR0xUZXh0dXJlR2V0VGFyZ2V0ICh0ZXh0dXJlKSwKLSAgICAgICAgICAgICZjYWNoZS0+aW5wdXRfaW5mbywgMCwgTlVMTCwgdGV4dHVyZSwgKEdEZXN0cm95Tm90aWZ5KSBDRlJlbGVhc2UpOwotICAgICAgICBicmVhazsKLSNlbHNlCi0gICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSQToKLSAgICAgICAgLyogYXZmdmlkZW9zcmMgZG9lcyBCR1JBIG9uIGlPUyB3aGVuIGRvaW5nIEdMTWVtb3J5ICovCi0gICAgICAgIGlmIChDVk9wZW5HTEVTVGV4dHVyZUNhY2hlQ3JlYXRlVGV4dHVyZUZyb21JbWFnZSAoa0NGQWxsb2NhdG9yRGVmYXVsdCwKLSAgICAgICAgICAgICAgY2FjaGUtPmNhY2hlLCBwaXhlbF9idWYsIE5VTEwsIEdMX1RFWFRVUkVfMkQsIEdMX1JHQkEsCi0gICAgICAgICAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIICgmY2FjaGUtPmlucHV0X2luZm8pLAotICAgICAgICAgICAgICBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZjYWNoZS0+aW5wdXRfaW5mbyksCi0gICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDAsICZ0ZXh0dXJlKSAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQotICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgKm1lbTEgPSAoR3N0TWVtb3J5ICopIGdzdF9nbF9tZW1vcnlfd3JhcHBlZF90ZXh0dXJlIChjYWNoZS0+Y3R4LAotICAgICAgICAgICAgQ1ZPcGVuR0xFU1RleHR1cmVHZXROYW1lICh0ZXh0dXJlKSwgQ1ZPcGVuR0xFU1RleHR1cmVHZXRUYXJnZXQgKHRleHR1cmUpLAotICAgICAgICAgICAgJmNhY2hlLT5pbnB1dF9pbmZvLCAwLCBOVUxMLCB0ZXh0dXJlLCAoR0Rlc3Ryb3lOb3RpZnkpIENGUmVsZWFzZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX05WMTI6IHsKLSAgICAgICAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleHR5cGU7Ci0gICAgICAgIEdMZW51bSB0ZXhmbXQ7Ci0KLSAgICAgICAgdGV4dHlwZSA9IGdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQgKGNhY2hlLT5jdHgsIEdTVF9WSURFT19GT1JNQVRfTlYxMiwgMCk7Ci0gICAgICAgIHRleGZtdCA9IGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKHRleHR5cGUpOwotCi0gICAgICAgIC8qIHZ0ZGVjIGRvZXMgTlYxMiBvbiBpT1Mgd2hlbiBkb2luZyBHTE1lbW9yeSAqLwotICAgICAgICBpZiAoQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZUNyZWF0ZVRleHR1cmVGcm9tSW1hZ2UgKGtDRkFsbG9jYXRvckRlZmF1bHQsCi0gICAgICAgICAgICAgIGNhY2hlLT5jYWNoZSwgcGl4ZWxfYnVmLCBOVUxMLCBHTF9URVhUVVJFXzJELCB0ZXhmbXQsCi0gICAgICAgICAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIICgmY2FjaGUtPmlucHV0X2luZm8pLAotICAgICAgICAgICAgICBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZjYWNoZS0+aW5wdXRfaW5mbyksCi0gICAgICAgICAgICAgIHRleGZtdCwgR0xfVU5TSUdORURfQllURSwgMCwgJnRleHR1cmUpICE9IGtDVlJldHVyblN1Y2Nlc3MpCi0gICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICAqbWVtMSA9IChHc3RNZW1vcnkgKikgZ3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmUgKGNhY2hlLT5jdHgsCi0gICAgICAgICAgICBDVk9wZW5HTEVTVGV4dHVyZUdldE5hbWUgKHRleHR1cmUpLCBDVk9wZW5HTEVTVGV4dHVyZUdldFRhcmdldCAodGV4dHVyZSksCi0gICAgICAgICAgICAmY2FjaGUtPmlucHV0X2luZm8sIDAsIE5VTEwsIHRleHR1cmUsIChHRGVzdHJveU5vdGlmeSkgQ0ZSZWxlYXNlKTsKLQotICAgICAgICB0ZXh0eXBlID0gZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdCAoY2FjaGUtPmN0eCwgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyLCAxKTsKLSAgICAgICAgdGV4Zm10ID0gZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZSAodGV4dHlwZSk7Ci0KLSAgICAgICAgaWYgKENWT3BlbkdMRVNUZXh0dXJlQ2FjaGVDcmVhdGVUZXh0dXJlRnJvbUltYWdlIChrQ0ZBbGxvY2F0b3JEZWZhdWx0LAotICAgICAgICAgICAgICBjYWNoZS0+Y2FjaGUsIHBpeGVsX2J1ZiwgTlVMTCwgR0xfVEVYVFVSRV8yRCwgdGV4Zm10LAotICAgICAgICAgICAgICBHU1RfVklERU9fSU5GT19XSURUSCAoJmNhY2hlLT5pbnB1dF9pbmZvKSAvIDIsCi0gICAgICAgICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJmNhY2hlLT5pbnB1dF9pbmZvKSAvIDIsCi0gICAgICAgICAgICAgIHRleGZtdCwgR0xfVU5TSUdORURfQllURSwgMSwgJnRleHR1cmUpICE9IGtDVlJldHVyblN1Y2Nlc3MpCi0gICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICAqbWVtMiA9IChHc3RNZW1vcnkgKikgZ3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmUgKGNhY2hlLT5jdHgsCi0gICAgICAgICAgICBDVk9wZW5HTEVTVGV4dHVyZUdldE5hbWUgKHRleHR1cmUpLCBDVk9wZW5HTEVTVGV4dHVyZUdldFRhcmdldCAodGV4dHVyZSksCi0gICAgICAgICAgICAmY2FjaGUtPmlucHV0X2luZm8sIDAsIE5VTEwsIHRleHR1cmUsIChHRGVzdHJveU5vdGlmeSkgQ0ZSZWxlYXNlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0jZW5kaWYKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGdfd2Fybl9pZl9yZWFjaGVkICgpOwotICAgICAgICByZXQgPSBGQUxTRTsKLSAgICB9Ci0KLSAgcmV0dXJuIHJldDsKLQotZXJyb3I6Ci0gIHJldCA9IEZBTFNFOwotCi0gIGlmICgqbWVtMSkKLSAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKCptZW0xKTsKLSAgaWYgKCptZW0yKQotICAgICAgZ3N0X21lbW9yeV91bnJlZiAoKm1lbTIpOwotCi0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyB2b2lkCi1fZG9fZ2V0X2dsX2J1ZmZlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgQ29udGV4dFRocmVhZERhdGEgKiBkYXRhKQotewotICBHc3RNZW1vcnkgKm1lbTEgPSBOVUxMLCAqbWVtMiA9IE5VTEw7Ci0gIEdzdENvcmVWaWRlb1RleHR1cmVDYWNoZSAqY2FjaGUgPSBkYXRhLT5jYWNoZTsKLSAgR3N0QnVmZmVyICpidWZmZXIgPSBkYXRhLT5pbnB1dF9idWZmZXI7Ci0KLSAgaWYgKCFnbF9tZW1fZnJvbV9idWZmZXIgKGNhY2hlLCBidWZmZXIsICZtZW0xLCAmbWVtMikpIHsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwotICAgIGRhdGEtPm91dHB1dF9idWZmZXIgPSBOVUxMOwotICAgIHJldHVybjsKLSAgfQotCi0gIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAoYnVmZmVyLCBtZW0xKTsKLSAgaWYgKG1lbTIpCi0gICAgZ3N0X2J1ZmZlcl9hcHBlbmRfbWVtb3J5IChidWZmZXIsIG1lbTIpOwotCi0gIGRhdGEtPm91dHB1dF9idWZmZXIgPSBnc3RfZ2xfY29sb3JfY29udmVydF9wZXJmb3JtIChjYWNoZS0+Y29udmVydCwgYnVmZmVyKTsKLSAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKLX0KLQotR3N0QnVmZmVyICoKLWdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfZ2V0X2dsX2J1ZmZlciAoR3N0Q29yZVZpZGVvVGV4dHVyZUNhY2hlICogY2FjaGUsCi0gICAgICAgIEdzdEJ1ZmZlciAqIGN2X2J1ZmZlcikKLXsKLSAgQ29udGV4dFRocmVhZERhdGEgZGF0YSA9IHtjYWNoZSwgY3ZfYnVmZmVyLCBOVUxMfTsKLSAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoY2FjaGUtPmN0eCwKLSAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfZG9fZ2V0X2dsX2J1ZmZlciwgJmRhdGEpOwotICByZXR1cm4gZGF0YS5vdXRwdXRfYnVmZmVyOwotfQpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvZ2xjb250ZXh0aGVscGVyLmMgYi9zeXMvYXBwbGVtZWRpYS9nbGNvbnRleHRoZWxwZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTZmNjE3Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzL2FwcGxlbWVkaWEvZ2xjb250ZXh0aGVscGVyLmMKQEAgLTAsMCArMSwxMzIgQEAKKy8qIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJnbGNvbnRleHRoZWxwZXIuaCIKKworc3RhdGljIEdzdEdMQ29udGV4dCAqCitfZmluZF9sb2NhbF9nbF9jb250ZXh0IChHc3RHTENvbnRleHRIZWxwZXIgKiBjdHhoKQoreworICBHc3RRdWVyeSAqcXVlcnk7CisgIEdzdENvbnRleHQgKmNvbnRleHQ7CisgIEdzdEdMQ29udGV4dCAqZ2xfY29udGV4dCA9IE5VTEw7CisgIGNvbnN0IEdzdFN0cnVjdHVyZSAqczsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoY3R4aCAhPSBOVUxMLCBGQUxTRSk7CisKKyAgcXVlcnkgPSBnc3RfcXVlcnlfbmV3X2NvbnRleHQgKCJnc3QuZ2wubG9jYWxfY29udGV4dCIpOworICBpZiAoZ3N0X2dsX3J1bl9xdWVyeSAoY3R4aC0+ZWxlbWVudCwgcXVlcnksIEdTVF9QQURfU1JDKSkgeworICAgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0IChxdWVyeSwgJmNvbnRleHQpOworICAgIGlmIChjb250ZXh0KSB7CisgICAgICBzID0gZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZSAoY29udGV4dCk7CisgICAgICBnc3Rfc3RydWN0dXJlX2dldCAocywgImNvbnRleHQiLCBHU1RfR0xfVFlQRV9DT05URVhULCAmZ2xfY29udGV4dCwgTlVMTCk7CisgICAgfQorICB9CisgIGlmICghZ2xfY29udGV4dCAmJiBnc3RfZ2xfcnVuX3F1ZXJ5IChjdHhoLT5lbGVtZW50LCBxdWVyeSwgR1NUX1BBRF9TSU5LKSkgeworICAgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0IChxdWVyeSwgJmNvbnRleHQpOworICAgIGlmIChjb250ZXh0KSB7CisgICAgICBzID0gZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZSAoY29udGV4dCk7CisgICAgICBnc3Rfc3RydWN0dXJlX2dldCAocywgImNvbnRleHQiLCBHU1RfR0xfVFlQRV9DT05URVhULCAmZ2xfY29udGV4dCwgTlVMTCk7CisgICAgfQorICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoY3R4aC0+ZWxlbWVudCwgImZvdW5kIGxvY2FsIGNvbnRleHQgJXAiLCBnbF9jb250ZXh0KTsKKworICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKKworICByZXR1cm4gZ2xfY29udGV4dDsKK30KKworR3N0R0xDb250ZXh0SGVscGVyICoKK2dzdF9nbF9jb250ZXh0X2hlbHBlcl9uZXcgKEdzdEVsZW1lbnQgKiBlbGVtZW50KQoreworICBHc3RHTENvbnRleHRIZWxwZXIgKmN0eGggPSBnX25ldzAgKEdzdEdMQ29udGV4dEhlbHBlciwgMSk7CisgIGN0eGgtPmVsZW1lbnQgPSBnc3Rfb2JqZWN0X3JlZiAoZWxlbWVudCk7CisKKyAgcmV0dXJuIGN0eGg7Cit9CisKK3ZvaWQKK2dzdF9nbF9jb250ZXh0X2hlbHBlcl9mcmVlIChHc3RHTENvbnRleHRIZWxwZXIgKiBjdHhoKQoreworICBnX3JldHVybl9pZl9mYWlsIChjdHhoICE9IE5VTEwpOworCisgIGdzdF9vYmplY3RfdW5yZWYgKGN0eGgtPmVsZW1lbnQpOworCisgIGlmIChjdHhoLT5kaXNwbGF5KQorICAgIGdzdF9vYmplY3RfdW5yZWYgKGN0eGgtPmRpc3BsYXkpOworCisgIGlmIChjdHhoLT5jb250ZXh0KQorICAgIGdzdF9vYmplY3RfdW5yZWYgKGN0eGgtPmNvbnRleHQpOworCisgIGlmIChjdHhoLT5vdGhlcl9jb250ZXh0KQorICAgIGdzdF9vYmplY3RfdW5yZWYgKGN0eGgtPm90aGVyX2NvbnRleHQpOworCisgIGdfZnJlZSAoY3R4aCk7Cit9CisKK3ZvaWQKK2dzdF9nbF9jb250ZXh0X2hlbHBlcl9lbnN1cmVfY29udGV4dCAoR3N0R0xDb250ZXh0SGVscGVyICogY3R4aCkKK3sKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgIEdzdEdMQ29udGV4dCAqY29udGV4dDsKKworICBnX3JldHVybl9pZl9mYWlsIChjdHhoICE9IE5VTEwpOworCisgIGlmICghY3R4aC0+ZGlzcGxheSkKKyAgICBnc3RfZ2xfZW5zdXJlX2VsZW1lbnRfZGF0YSAoY3R4aC0+ZWxlbWVudCwgJmN0eGgtPmRpc3BsYXksCisgICAgICAgICZjdHhoLT5vdGhlcl9jb250ZXh0KTsKKworICBjb250ZXh0ID0gX2ZpbmRfbG9jYWxfZ2xfY29udGV4dCAoY3R4aCk7CisgIGlmIChjb250ZXh0KSB7CisgICAgR1NUX0lORk9fT0JKRUNUIChjdHhoLT5lbGVtZW50LCAiZm91bmQgbG9jYWwgY29udGV4dCAlcCwgb2xkIGNvbnRleHQgJXAiLAorICAgICAgICBjb250ZXh0LCBjdHhoLT5jb250ZXh0KTsKKyAgICBpZiAoY3R4aC0+Y29udGV4dCkKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGN0eGgtPmNvbnRleHQpOworICAgIGN0eGgtPmNvbnRleHQgPSBjb250ZXh0OworICB9CisKKyAgaWYgKCFjdHhoLT5jb250ZXh0KSB7CisgICAgR1NUX09CSkVDVF9MT0NLIChjdHhoLT5kaXNwbGF5KTsKKyAgICBkbyB7CisgICAgICBpZiAoY3R4aC0+Y29udGV4dCkKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAoY3R4aC0+Y29udGV4dCk7CisgICAgICBjdHhoLT5jb250ZXh0ID0KKyAgICAgICAgICBnc3RfZ2xfZGlzcGxheV9nZXRfZ2xfY29udGV4dF9mb3JfdGhyZWFkIChjdHhoLT5kaXNwbGF5LCBOVUxMKTsKKyAgICAgIGlmICghY3R4aC0+Y29udGV4dCkgeworICAgICAgICBpZiAoIWdzdF9nbF9kaXNwbGF5X2NyZWF0ZV9jb250ZXh0IChjdHhoLT5kaXNwbGF5LAorICAgICAgICAgICAgICAgIGN0eGgtPm90aGVyX2NvbnRleHQsICZjdHhoLT5jb250ZXh0LCAmZXJyb3IpKSB7CisgICAgICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGN0eGgtPmRpc3BsYXkpOworICAgICAgICAgIGdvdG8gY29udGV4dF9lcnJvcjsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gd2hpbGUgKCFnc3RfZ2xfZGlzcGxheV9hZGRfY29udGV4dCAoY3R4aC0+ZGlzcGxheSwgY3R4aC0+Y29udGV4dCkpOworICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChjdHhoLT5kaXNwbGF5KTsKKyAgfQorCisgIHJldHVybjsKKworY29udGV4dF9lcnJvcjoKKyAgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChjdHhoLT5lbGVtZW50LCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwKKyAgICAgICAgICAgIGVycm9yLT5tZXNzYWdlKSwgKE5VTEwpKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworCisgICAgcmV0dXJuOworICB9Cit9CmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS9nbGNvbnRleHRoZWxwZXIuaCBiL3N5cy9hcHBsZW1lZGlhL2dsY29udGV4dGhlbHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlMDQzZjEKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYXBwbGVtZWRpYS9nbGNvbnRleHRoZWxwZXIuaApAQCAtMCwwICsxLDM5IEBACisvKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9HU1RfR0xfQ09OVEVYVF9IRUxQRVJfSF8KKyNkZWZpbmUgX0dTVF9HTF9DT05URVhUX0hFTFBFUl9IXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgorCit0eXBlZGVmIHN0cnVjdCBfR3N0R0xDb250ZXh0SGVscGVyCit7CisgIEdzdEVsZW1lbnQgKmVsZW1lbnQ7CisgIEdzdEdMRGlzcGxheSAqZGlzcGxheTsKKyAgR3N0R0xDb250ZXh0ICpjb250ZXh0OworICBHc3RHTENvbnRleHQgKm90aGVyX2NvbnRleHQ7Cit9IEdzdEdMQ29udGV4dEhlbHBlcjsKKworR3N0R0xDb250ZXh0SGVscGVyICogZ3N0X2dsX2NvbnRleHRfaGVscGVyX25ldyAoR3N0RWxlbWVudCAqZWxlbWVudCk7Cit2b2lkIGdzdF9nbF9jb250ZXh0X2hlbHBlcl9mcmVlIChHc3RHTENvbnRleHRIZWxwZXIgKmN0eGgpOwordm9pZCBnc3RfZ2xfY29udGV4dF9oZWxwZXJfZW5zdXJlX2NvbnRleHQgKEdzdEdMQ29udGV4dEhlbHBlciAqY3R4aCk7CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS9pb3Nhc3NldHNyYy5tIGIvc3lzL2FwcGxlbWVkaWEvaW9zYXNzZXRzcmMubQppbmRleCA5Y2Y3NDk4Li4wNTM5MzQwIDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS9pb3Nhc3NldHNyYy5tCisrKyBiL3N5cy9hcHBsZW1lZGlhL2lvc2Fzc2V0c3JjLm0KQEAgLTI5LDcgKzI5LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGlvc2Fzc2V0c3JjIHVyaT1hc3NldHMtbGlicmFyeTovL2Fzc2V0L2Fzc2V0Lk00Vj9pZD0xMSZleHQ9TTRWICEgZGVjb2RlYmluICEgYXV0b2F1ZGlvc2luaworICogZ3N0LWxhdW5jaC0xLjAgaW9zYXNzZXRzcmMgdXJpPWFzc2V0cy1saWJyYXJ5Oi8vYXNzZXQvYXNzZXQuTTRWP2lkPTExJmV4dD1NNFYgISBkZWNvZGViaW4gISBhdXRvYXVkaW9zaW5rCiAgKiBdfCBQbGF5cyBhc3NldCB3aXRoIGlkIGEgc29uZy5vZ2cgZnJvbSBsb2NhbCBkaXIuCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS9pb3N1cmZhY2VtZW1vcnkuYyBiL3N5cy9hcHBsZW1lZGlhL2lvc3VyZmFjZW1lbW9yeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NDIwMmMKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYXBwbGVtZWRpYS9pb3N1cmZhY2VtZW1vcnkuYwpAQCAtMCwwICsxLDI0MSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFsZXNzYW5kcm8gRGVjaW5hIDx0d2lAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImlvc3VyZmFjZW1lbW9yeS5oIgorCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0lPX1NVUkZBQ0VfTUVNT1JZKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIEdTVF9DQVRfSU9fU1VSRkFDRV9NRU1PUlkKKworR19ERUZJTkVfVFlQRSAoR3N0SU9TdXJmYWNlTWVtb3J5QWxsb2NhdG9yLCBnc3RfaW9fc3VyZmFjZV9tZW1vcnlfYWxsb2NhdG9yLAorICAgIEdTVF9UWVBFX0dMX01FTU9SWV9BTExPQ0FUT1IpOworCitzdGF0aWMgdm9pZCBfaW9fc3VyZmFjZV9tZW1vcnlfc2V0X3N1cmZhY2UgKEdzdElPU3VyZmFjZU1lbW9yeSAqIG1lbW9yeSwKKyAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZSk7CisKK3N0YXRpYyBHc3RBbGxvY2F0b3IgKl9pb19zdXJmYWNlX21lbW9yeV9hbGxvY2F0b3I7CisKK3N0YXRpYyBnYm9vbGVhbgorX2lvX3N1cmZhY2VfbWVtb3J5X2NyZWF0ZSAoR3N0R0xCYXNlTWVtb3J5ICogYm1lbSwgR0Vycm9yICoqIGVycm9yKQoreworICBHc3RHTE1lbW9yeSAqZ2xfbWVtID0gKEdzdEdMTWVtb3J5ICopIGJtZW07CisgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IGdsX21lbS0+bWVtLmNvbnRleHQ7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworICBHTHVpbnQgdGFyZ2V0OworCisgIHRhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoZ2xfbWVtLT50ZXhfdGFyZ2V0KTsKKyAgZ2wtPkdlblRleHR1cmVzICgxLCAmZ2xfbWVtLT50ZXhfaWQpOworICBnbC0+QmluZFRleHR1cmUgKHRhcmdldCwgZ2xfbWVtLT50ZXhfaWQpOworICBnbC0+QmluZFRleHR1cmUgKHRhcmdldCwgMCk7CisKKyAgR1NUX0xPRyAoImdlbmVyYXRlZCB0ZXh0dXJlIGlkOiVkIiwgZ2xfbWVtLT50ZXhfaWQpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorX2lvX3N1cmZhY2VfbWVtb3J5X2Rlc3Ryb3kgKEdzdEdMQmFzZU1lbW9yeSAqIGdsX21lbSkKK3sKKyAgR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUworICAgICAgKGdzdF9pb19zdXJmYWNlX21lbW9yeV9hbGxvY2F0b3JfcGFyZW50X2NsYXNzKS0+ZGVzdHJveSAoZ2xfbWVtKTsKKyAgX2lvX3N1cmZhY2VfbWVtb3J5X3NldF9zdXJmYWNlICgoR3N0SU9TdXJmYWNlTWVtb3J5ICopIGdsX21lbSwgTlVMTCk7Cit9CisKK3N0YXRpYyBncG9pbnRlcgorX2lvX3N1cmZhY2VfbWVtb3J5X2FsbG9jYXRvcl9tYXAgKEdzdEdMQmFzZU1lbW9yeSAqIGJtZW0sCisgICAgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCit7CisgIEdzdEdMTWVtb3J5ICpnbF9tZW0gPSAoR3N0R0xNZW1vcnkgKikgYm1lbTsKKyAgR3N0SU9TdXJmYWNlTWVtb3J5ICptZW0gPSAoR3N0SU9TdXJmYWNlTWVtb3J5ICopIGdsX21lbTsKKworICBHU1RfTE9HICgibWFwcGluZyBzdXJmYWNlICVwIGZsYWdzICVkIGdsPyAlZCIsCisgICAgICBtZW0tPnN1cmZhY2UsIGluZm8tPmZsYWdzLCAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgIT0gMCkpOworCisgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpIHsKKyAgICByZXR1cm4gJmdsX21lbS0+dGV4X2lkOworICB9IGVsc2UgaWYgKCEoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKSkgeworICAgIElPU3VyZmFjZUxvY2sgKG1lbS0+c3VyZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgTlVMTCk7CisgICAgcmV0dXJuIElPU3VyZmFjZUdldEJhc2VBZGRyZXNzT2ZQbGFuZSAobWVtLT5zdXJmYWNlLCBnbF9tZW0tPnBsYW5lKTsKKyAgfSBlbHNlIHsKKyAgICBHU1RfRVJST1IgKCJjb3VsZG4ndCBtYXAgSU9TdXJmYWNlICVwIGZsYWdzICVkIiwgbWVtLT5zdXJmYWNlLCBpbmZvLT5mbGFncyk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KK30KKworc3RhdGljIHZvaWQKK19pb19zdXJmYWNlX21lbW9yeV9hbGxvY2F0b3JfdW5tYXAgKEdzdEdMQmFzZU1lbW9yeSAqIGJtZW0sIEdzdE1hcEluZm8gKiBpbmZvKQoreworICBHc3RHTE1lbW9yeSAqZ2xfbWVtID0gKEdzdEdMTWVtb3J5ICopIGJtZW07CisgIEdzdElPU3VyZmFjZU1lbW9yeSAqbWVtID0gKEdzdElPU3VyZmFjZU1lbW9yeSAqKSBnbF9tZW07CisKKyAgR1NUX0xPRyAoInVubWFwcGluZyBzdXJmYWNlICVwIGZsYWdzICVkIGdsPyAlZCIsCisgICAgICBtZW0tPnN1cmZhY2UsIGluZm8tPmZsYWdzLCAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgIT0gMCkpOworCisgIGlmICghKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkpIHsKKyAgICBJT1N1cmZhY2VVbmxvY2sgKG1lbS0+c3VyZmFjZSwga0lPU3VyZmFjZUxvY2tSZWFkT25seSwgTlVMTCk7CisgIH0KK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitfbWVtX2FsbG9jIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIGdzaXplIHNpemUsIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpCit7CisgIGdfd2FybmluZyAoInVzZSBnc3RfaW9fc3VyZmFjZV9tZW1vcnlfd3JhcHBlZCAoKSB0byBhbGxvY2F0ZSBmcm9tIHRoaXMgIgorICAgICAgIklPU3VyZmFjZSBhbGxvY2F0b3IiKTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK2dzdF9pb19zdXJmYWNlX21lbW9yeV9hbGxvY2F0b3JfY2xhc3NfaW5pdCAoR3N0SU9TdXJmYWNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKgorICAgIGtsYXNzKQoreworICBHc3RBbGxvY2F0b3JDbGFzcyAqYWxsb2NhdG9yX2NsYXNzID0gKEdzdEFsbG9jYXRvckNsYXNzICopIGtsYXNzOworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyAqZ2xfYmFzZV9hbGxvY2F0b3JfY2xhc3MgPQorICAgICAgKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICopIGtsYXNzOworCisgIGFsbG9jYXRvcl9jbGFzcy0+YWxsb2MgPSBfbWVtX2FsbG9jOworCisgIGdsX2Jhc2VfYWxsb2NhdG9yX2NsYXNzLT5jcmVhdGUgPSBfaW9fc3VyZmFjZV9tZW1vcnlfY3JlYXRlOworICBnbF9iYXNlX2FsbG9jYXRvcl9jbGFzcy0+ZGVzdHJveSA9IF9pb19zdXJmYWNlX21lbW9yeV9kZXN0cm95OworICBnbF9iYXNlX2FsbG9jYXRvcl9jbGFzcy0+bWFwID0gX2lvX3N1cmZhY2VfbWVtb3J5X2FsbG9jYXRvcl9tYXA7CisgIGdsX2Jhc2VfYWxsb2NhdG9yX2NsYXNzLT51bm1hcCA9IF9pb19zdXJmYWNlX21lbW9yeV9hbGxvY2F0b3JfdW5tYXA7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfaW9fc3VyZmFjZV9tZW1vcnlfYWxsb2NhdG9yX2luaXQgKEdzdElPU3VyZmFjZU1lbW9yeUFsbG9jYXRvciAqIGFsbG9jYXRvcikKK3sKKyAgR3N0QWxsb2NhdG9yICphbGxvYyA9IEdTVF9BTExPQ0FUT1JfQ0FTVCAoYWxsb2NhdG9yKTsKKworICBhbGxvYy0+bWVtX3R5cGUgPSBHU1RfSU9fU1VSRkFDRV9NRU1PUllfQUxMT0NBVE9SX05BTUU7CisgIEdTVF9PQkpFQ1RfRkxBR19TRVQgKGFsbG9jYXRvciwgR1NUX0FMTE9DQVRPUl9GTEFHX0NVU1RPTV9BTExPQyk7Cit9CisKK3ZvaWQKK2dzdF9pb3Nfc3VyZmFjZV9tZW1vcnlfaW5pdCAodm9pZCkKK3sKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9JT19TVVJGQUNFX01FTU9SWSwgImlvc3VyZmFjZSIsIDAsCisgICAgICAgICJJT1N1cmZhY2UgQnVmZmVyIik7CisKKyAgICBfaW9fc3VyZmFjZV9tZW1vcnlfYWxsb2NhdG9yID0KKyAgICAgICAgZ19vYmplY3RfbmV3IChHU1RfVFlQRV9JT19TVVJGQUNFX01FTU9SWV9BTExPQ0FUT1IsIE5VTEwpOworCisgICAgZ3N0X2FsbG9jYXRvcl9yZWdpc3RlciAoR1NUX0lPX1NVUkZBQ0VfTUVNT1JZX0FMTE9DQVRPUl9OQU1FLAorICAgICAgICBnc3Rfb2JqZWN0X3JlZiAoX2lvX3N1cmZhY2VfbWVtb3J5X2FsbG9jYXRvcikpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9Cit9CisKK2dib29sZWFuCitnc3RfaXNfaW9fc3VyZmFjZV9tZW1vcnkgKEdzdE1lbW9yeSAqIG1lbSkKK3sKKyAgcmV0dXJuIG1lbSAhPSBOVUxMICYmIG1lbS0+YWxsb2NhdG9yICE9IE5VTEwgJiYKKyAgICAgIGdfdHlwZV9pc19hIChHX09CSkVDVF9UWVBFIChtZW0tPmFsbG9jYXRvciksCisgICAgICBHU1RfVFlQRV9JT19TVVJGQUNFX01FTU9SWV9BTExPQ0FUT1IpOworfQorCitzdGF0aWMgR3N0SU9TdXJmYWNlTWVtb3J5ICoKK19pb19zdXJmYWNlX21lbW9yeV9uZXcgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UsCisgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwKKyAgICBHc3RWaWRlb0luZm8gKiBpbmZvLAorICAgIGd1aW50IHBsYW5lLAorICAgIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLCBncG9pbnRlciB1c2VyX2RhdGEsIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgR3N0SU9TdXJmYWNlTWVtb3J5ICptZW07CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHRhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFLCBOVUxMKTsKKworICBtZW0gPSBnX25ldzAgKEdzdElPU3VyZmFjZU1lbW9yeSwgMSk7CisgIGdzdF9nbF9tZW1vcnlfaW5pdCAoJm1lbS0+Z2xfbWVtLCBfaW9fc3VyZmFjZV9tZW1vcnlfYWxsb2NhdG9yLCBOVUxMLCBjb250ZXh0LAorICAgICAgdGFyZ2V0LCBOVUxMLCBpbmZvLCBwbGFuZSwgdmFsaWduLCB1c2VyX2RhdGEsIG5vdGlmeSk7CisKKyAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9NRU1PUllfRkxBR19SRUFET05MWSk7CisKKyAgbWVtLT5zdXJmYWNlID0gTlVMTDsKKyAgX2lvX3N1cmZhY2VfbWVtb3J5X3NldF9zdXJmYWNlIChtZW0sIHN1cmZhY2UpOworCisgIHJldHVybiBtZW07Cit9CisKK0dzdElPU3VyZmFjZU1lbW9yeSAqCitnc3RfaW9fc3VyZmFjZV9tZW1vcnlfd3JhcHBlZCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZSwKKyAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0LAorICAgIEdzdFZpZGVvSW5mbyAqIGluZm8sCisgICAgZ3VpbnQgcGxhbmUsCisgICAgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sIGdwb2ludGVyIHVzZXJfZGF0YSwgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQoreworICByZXR1cm4gX2lvX3N1cmZhY2VfbWVtb3J5X25ldyAoY29udGV4dCwgc3VyZmFjZSwgdGFyZ2V0LCBpbmZvLAorICAgICAgcGxhbmUsIHZhbGlnbiwgdXNlcl9kYXRhLCBub3RpZnkpOworfQorCitzdGF0aWMgdm9pZAorX2lvX3N1cmZhY2VfbWVtb3J5X3NldF9zdXJmYWNlIChHc3RJT1N1cmZhY2VNZW1vcnkgKiBtZW1vcnksCisgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UpCit7CisgIEdzdEdMTWVtb3J5ICpnbF9tZW0gPSAoR3N0R0xNZW1vcnkgKikgbWVtb3J5OworICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSAoKEdzdEdMQmFzZU1lbW9yeSAqKSBnbF9tZW0pLT5jb250ZXh0OworICBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBpZiAobWVtb3J5LT5zdXJmYWNlKQorICAgIElPU3VyZmFjZURlY3JlbWVudFVzZUNvdW50IChtZW1vcnktPnN1cmZhY2UpOworICBtZW1vcnktPnN1cmZhY2UgPSBzdXJmYWNlOworICBpZiAoc3VyZmFjZSkgeworICAgIEdMdWludCB0ZXhfaWQsIHRleF90YXJnZXQsIHRleGlmbXQsIHRleGZtdDsKKyAgICBndWludCBwbGFuZTsKKyAgICBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4dHlwZTsKKyAgICBDR0xFcnJvciBjZ2xFcnJvcjsKKworICAgIHBsYW5lID0gZ2xfbWVtLT5wbGFuZTsKKyAgICB0ZXhfaWQgPSBnbF9tZW0tPnRleF9pZDsKKyAgICB0ZXhfdGFyZ2V0ID0gZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dsIChnbF9tZW0tPnRleF90YXJnZXQpOworICAgIHRleHR5cGUgPSBnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0IChjb250ZXh0LAorICAgICAgICBHU1RfVklERU9fSU5GT19GT1JNQVQgKCZnbF9tZW0tPmluZm8pLCBwbGFuZSk7CisgICAgdGV4aWZtdCA9IGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKHRleHR5cGUpOworICAgIHRleGZtdCA9CisgICAgICAgIGdzdF9nbF9zaXplZF9nbF9mb3JtYXRfZnJvbV9nbF9mb3JtYXRfdHlwZSAoY29udGV4dCwgdGV4aWZtdCwKKyAgICAgICAgR0xfVU5TSUdORURfQllURSk7CisgICAgZ2wtPkJpbmRUZXh0dXJlICh0ZXhfdGFyZ2V0LCB0ZXhfaWQpOworICAgIGNnbEVycm9yID0gQ0dMVGV4SW1hZ2VJT1N1cmZhY2UyRCAoKENHTENvbnRleHRPYmopCisgICAgICAgIGdzdF9nbF9jb250ZXh0X2dldF9nbF9jb250ZXh0IChjb250ZXh0KSwgdGV4X3RhcmdldCwgdGV4aWZtdCwKKyAgICAgICAgSU9TdXJmYWNlR2V0V2lkdGhPZlBsYW5lIChzdXJmYWNlLCBwbGFuZSksCisgICAgICAgIElPU3VyZmFjZUdldEhlaWdodE9mUGxhbmUgKHN1cmZhY2UsIHBsYW5lKSwgdGV4aWZtdCwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgc3VyZmFjZSwgcGxhbmUpOworICAgIGdsLT5CaW5kVGV4dHVyZSAodGV4X3RhcmdldCwgMCk7CisgICAgSU9TdXJmYWNlSW5jcmVtZW50VXNlQ291bnQgKHN1cmZhY2UpOworICAgIEdTVF9ERUJVRyAoImJvdW5kIHN1cmZhY2UgJXAgdG8gdGV4dHVyZSAldTogJWQiLCBzdXJmYWNlLCB0ZXhfaWQsIGNnbEVycm9yKTsKKyAgfQorfQorCit2b2lkCitnc3RfaW9fc3VyZmFjZV9tZW1vcnlfc2V0X3N1cmZhY2UgKEdzdElPU3VyZmFjZU1lbW9yeSAqIG1lbW9yeSwKKyAgICBJT1N1cmZhY2VSZWYgc3VyZmFjZSkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoZ3N0X2lzX2lvX3N1cmZhY2VfbWVtb3J5ICgoR3N0TWVtb3J5ICopIG1lbW9yeSkpOworICBnX3JldHVybl9pZl9mYWlsIChtZW1vcnktPnN1cmZhY2UgPT0gTlVMTCk7CisKKyAgX2lvX3N1cmZhY2VfbWVtb3J5X3NldF9zdXJmYWNlIChtZW1vcnksIHN1cmZhY2UpOworfQpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvcGx1Z2luLm0gYi9zeXMvYXBwbGVtZWRpYS9wbHVnaW4ubQppbmRleCBjMTdjMzhiLi4wZmY0ZWMxIDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS9wbHVnaW4ubQorKysgYi9zeXMvYXBwbGVtZWRpYS9wbHVnaW4ubQpAQCAtMjIsNiArMjIsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbmNsdWRlICJjb3JldmlkZW9tZW1vcnkuaCIKICNpZmRlZiBIQVZFX0lPUwogI2luY2x1ZGUgImlvc2Fzc2V0c3JjLmgiCiAjZWxzZQpAQCAtNjMsNiArNjQsOCBAQAogewogICBnYm9vbGVhbiByZXMgPSBUUlVFOwogCisgIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbW9yeV9pbml0ICgpOworCiAjaWZkZWYgSEFWRV9JT1MKICAgcmVzICY9IGdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJpb3Nhc3NldHNyYyIsIEdTVF9SQU5LX1NFQ09OREFSWSwKICAgICAgIEdTVF9UWVBFX0lPU19BU1NFVF9TUkMpOwpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvcXRraXR2aWRlb3NyYy5tIGIvc3lzL2FwcGxlbWVkaWEvcXRraXR2aWRlb3NyYy5tCmluZGV4IDJjMTViYjUuLmU2YjQyN2YgMTAwNjQ0Ci0tLSBhL3N5cy9hcHBsZW1lZGlhL3F0a2l0dmlkZW9zcmMubQorKysgYi9zeXMvYXBwbGVtZWRpYS9xdGtpdHZpZGVvc3JjLm0KQEAgLTQzNCw3ICs0MzQsNyBAQAogICBbcXVldWVMb2NrIHVubG9ja1dpdGhDb25kaXRpb246CiAgICAgICAoW3F1ZXVlIGNvdW50XSA9PSAwKSA/IE5PX0ZSQU1FUyA6IEhBU19GUkFNRV9PUl9TVE9QX1JFUVVFU1RdOwogCi0gICpidWYgPSBnc3RfY29yZV92aWRlb19idWZmZXJfbmV3ICgoQ1ZCdWZmZXJSZWYpZnJhbWUsIE5VTEwsIFRSVUUpOworICAqYnVmID0gZ3N0X2NvcmVfdmlkZW9fYnVmZmVyX25ldyAoKENWQnVmZmVyUmVmKWZyYW1lLCBOVUxMKTsKICAgQ1ZCdWZmZXJSZWxlYXNlIChmcmFtZSk7CiAKICAgW3NlbGYgdGltZXN0YW1wQnVmZmVyOipidWZdOwpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvdGV4dHVyZWNhY2hlLmggYi9zeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5oCnNpbWlsYXJpdHkgaW5kZXggNjclCnJlbmFtZSBmcm9tIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb3RleHR1cmVjYWNoZS5oCnJlbmFtZSB0byBzeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5oCmluZGV4IGQ1M2VjNDEuLjBiNDM1NjYgMTAwNjQ0Ci0tLSBhL3N5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb3RleHR1cmVjYWNoZS5oCisrKyBiL3N5cy9hcHBsZW1lZGlhL3ZpZGVvdGV4dHVyZWNhY2hlLmgKQEAgLTIyLDI5ICsyMiwzMiBAQAogCiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgogI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGNvbnRleHQuaD4KLSNpbmNsdWRlICJDb3JlVmlkZW8vQ29yZVZpZGVvLmgiCisjaW5jbHVkZSA8Q29yZVZpZGVvL0NvcmVWaWRlby5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKLXR5cGVkZWYgc3RydWN0IF9Hc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGUKK3R5cGVkZWYgc3RydWN0IF9Hc3RWaWRlb1RleHR1cmVDYWNoZQogewogICBHc3RHTENvbnRleHQgKmN0eDsKLSNpZiAhSEFWRV9JT1MKLSAgQ1ZPcGVuR0xUZXh0dXJlQ2FjaGVSZWYgY2FjaGU7Ci0jZWxzZQorI2lmIEhBVkVfSU9TCiAgIENWT3BlbkdMRVNUZXh0dXJlQ2FjaGVSZWYgY2FjaGU7CisjZWxzZQorICBHc3RCdWZmZXJQb29sICpwb29sOwogI2VuZGlmCiAgIEdzdFZpZGVvSW5mbyBpbnB1dF9pbmZvOwogICBHc3RWaWRlb0luZm8gb3V0cHV0X2luZm87Ci0gIEdzdEdMQ29sb3JDb252ZXJ0ICpjb252ZXJ0OwotfSBHc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGU7CiAKLUdzdENvcmVWaWRlb1RleHR1cmVDYWNoZSAqZ3N0X2NvcmVfdmlkZW9fdGV4dHVyZV9jYWNoZV9uZXcgKEdzdEdMQ29udGV4dCAqIGN0eCk7Ci12b2lkIGdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfZnJlZSAoR3N0Q29yZVZpZGVvVGV4dHVyZUNhY2hlICogY2FjaGUpOwotdm9pZCBnc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX3NldF9mb3JtYXQgKEdzdENvcmVWaWRlb1RleHR1cmVDYWNoZSAqIGNhY2hlLAorICBnYm9vbGVhbiBjb25maWd1cmVkOworICBHc3RDYXBzICppbl9jYXBzOworICBHc3RDYXBzICpvdXRfY2FwczsKK30gR3N0VmlkZW9UZXh0dXJlQ2FjaGU7CisKK0dzdFZpZGVvVGV4dHVyZUNhY2hlICpnc3RfdmlkZW9fdGV4dHVyZV9jYWNoZV9uZXcgKEdzdEdMQ29udGV4dCAqIGN0eCk7Cit2b2lkIGdzdF92aWRlb190ZXh0dXJlX2NhY2hlX2ZyZWUgKEdzdFZpZGVvVGV4dHVyZUNhY2hlICogY2FjaGUpOwordm9pZCBnc3RfdmlkZW9fdGV4dHVyZV9jYWNoZV9zZXRfZm9ybWF0IChHc3RWaWRlb1RleHR1cmVDYWNoZSAqIGNhY2hlLAogICAgIEdzdFZpZGVvRm9ybWF0IGluX2Zvcm1hdCwgR3N0Q2FwcyAqIG91dF9jYXBzKTsKLWdib29sZWFuIGdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfdXBsb2FkIChHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEgKiBtZXRhLCBndWludCB0ZXh0dXJlX2lkWzRdKTsKLUdzdEJ1ZmZlciAqIGdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfZ2V0X2dsX2J1ZmZlciAoR3N0Q29yZVZpZGVvVGV4dHVyZUNhY2hlICogY2FjaGUsCitnYm9vbGVhbiBnc3RfdmlkZW9fdGV4dHVyZV9jYWNoZV91cGxvYWQgKEdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSAqIG1ldGEsIGd1aW50IHRleHR1cmVfaWRbNF0pOworR3N0QnVmZmVyICogZ3N0X3ZpZGVvX3RleHR1cmVfY2FjaGVfZ2V0X2dsX2J1ZmZlciAoR3N0VmlkZW9UZXh0dXJlQ2FjaGUgKiBjYWNoZSwKICAgICAgICAgR3N0QnVmZmVyICogY3ZfYnVmZmVyKTsKIAogR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL3N5cy9hcHBsZW1lZGlhL3ZpZGVvdGV4dHVyZWNhY2hlLm0gYi9zeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxYmRiNjQKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5tCkBAIC0wLDAgKzEsMjgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIE9sZSBBbmRyw6kgVmFkbGEgUmF2bsOlcyA8b2xlYXZyQHNvdW5kcm9wLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorIyAgaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2lmICFIQVZFX0lPUworI2ltcG9ydCA8QXBwS2l0L0FwcEtpdC5oPgorI2luY2x1ZGUgPGdzdC9nbC9jb2NvYS9nc3RnbGNvbnRleHRfY29jb2EuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmg+CisjaW5jbHVkZSAiaW9zdXJmYWNlbWVtb3J5LmgiCisjZW5kaWYKKyNpbmNsdWRlICJ2aWRlb3RleHR1cmVjYWNoZS5oIgorI2luY2x1ZGUgImNvcmVtZWRpYWJ1ZmZlci5oIgorI2luY2x1ZGUgImNvcmV2aWRlb2J1ZmZlci5oIgorI2luY2x1ZGUgInZ0dXRpbC5oIgorCit0eXBlZGVmIHN0cnVjdCBfQ29udGV4dFRocmVhZERhdGEKK3sKKyAgR3N0VmlkZW9UZXh0dXJlQ2FjaGUgKmNhY2hlOworICBHc3RCdWZmZXIgKmlucHV0X2J1ZmZlcjsKKyAgR3N0QnVmZmVyICpvdXRwdXRfYnVmZmVyOworfSBDb250ZXh0VGhyZWFkRGF0YTsKKworR3N0VmlkZW9UZXh0dXJlQ2FjaGUgKgorZ3N0X3ZpZGVvX3RleHR1cmVfY2FjaGVfbmV3IChHc3RHTENvbnRleHQgKiBjdHgpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjdHggIT0gTlVMTCwgTlVMTCk7CisKKyAgR3N0VmlkZW9UZXh0dXJlQ2FjaGUgKmNhY2hlID0gZ19uZXcwIChHc3RWaWRlb1RleHR1cmVDYWNoZSwgMSk7CisKKyAgY2FjaGUtPmN0eCA9IGdzdF9vYmplY3RfcmVmIChjdHgpOworICBnc3RfdmlkZW9faW5mb19pbml0ICgmY2FjaGUtPmlucHV0X2luZm8pOworCisjaWYgSEFWRV9JT1MKKyAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBjYWNoZV9hdHRycyA9CisgICAgICBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlIChOVUxMLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsCisgICAgICAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgIENWT3BlbkdMRVNUZXh0dXJlQ2FjaGVDcmVhdGUgKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDRkRpY3Rpb25hcnlSZWYpIGNhY2hlX2F0dHJzLAorICAgICAgKENWRUFHTENvbnRleHQpIGdzdF9nbF9jb250ZXh0X2dldF9nbF9jb250ZXh0IChjdHgpLCBOVUxMLCAmY2FjaGUtPmNhY2hlKTsKKyNlbHNlCisgIGdzdF9pb3Nfc3VyZmFjZV9tZW1vcnlfaW5pdCAoKTsKKyNpZiAwCisgIGNhY2hlLT5wb29sID0gR1NUX0JVRkZFUl9QT09MIChnc3RfZ2xfYnVmZmVyX3Bvb2xfbmV3IChjdHgpKTsKKyNlbmRpZgorI2VuZGlmCisKKyAgcmV0dXJuIGNhY2hlOworfQorCit2b2lkCitnc3RfdmlkZW9fdGV4dHVyZV9jYWNoZV9mcmVlIChHc3RWaWRlb1RleHR1cmVDYWNoZSAqIGNhY2hlKQoreworICBnX3JldHVybl9pZl9mYWlsIChjYWNoZSAhPSBOVUxMKTsKKworI2lmIEhBVkVfSU9TCisgIENGUmVsZWFzZSAoY2FjaGUtPmNhY2hlKTsgLyogaU9TIGhhcyBubyAiQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZVJlbGVhc2UiICovCisjZWxzZQorI2lmIDAKKyAgZ3N0X2J1ZmZlcl9wb29sX3NldF9hY3RpdmUgKGNhY2hlLT5wb29sLCBGQUxTRSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGNhY2hlLT5wb29sKTsKKyNlbmRpZgorI2VuZGlmCisgIGdzdF9vYmplY3RfdW5yZWYgKGNhY2hlLT5jdHgpOworICBpZiAoY2FjaGUtPmluX2NhcHMpCisgICAgZ3N0X2NhcHNfdW5yZWYgKGNhY2hlLT5pbl9jYXBzKTsKKyAgaWYgKGNhY2hlLT5vdXRfY2FwcykKKyAgICBnc3RfY2Fwc191bnJlZiAoY2FjaGUtPm91dF9jYXBzKTsKKyAgZ19mcmVlIChjYWNoZSk7Cit9CisKK3ZvaWQKK2dzdF92aWRlb190ZXh0dXJlX2NhY2hlX3NldF9mb3JtYXQgKEdzdFZpZGVvVGV4dHVyZUNhY2hlICogY2FjaGUsCisgICAgR3N0VmlkZW9Gb3JtYXQgaW5fZm9ybWF0LCBHc3RDYXBzICogb3V0X2NhcHMpCit7CisgIEdzdENhcHMgKmluX2NhcHM7CisgIEdzdENhcHNGZWF0dXJlcyAqZmVhdHVyZXM7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAoZ3N0X2NhcHNfaXNfZml4ZWQgKG91dF9jYXBzKSk7CisKKyAgb3V0X2NhcHMgPSBnc3RfY2Fwc19jb3B5IChvdXRfY2Fwcyk7CisgIGZlYXR1cmVzID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChvdXRfY2FwcywgMCk7CisgIGdzdF9jYXBzX2ZlYXR1cmVzX2FkZCAoZmVhdHVyZXMsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSk7CisgIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmNhY2hlLT5vdXRwdXRfaW5mbywgb3V0X2NhcHMpOworCisgIGluX2NhcHMgPSBnc3RfY2Fwc19jb3B5IChvdXRfY2Fwcyk7CisgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGluX2NhcHMsICJmb3JtYXQiLAorICAgICAgICAgIEdfVFlQRV9TVFJJTkcsIGdzdF92aWRlb19mb3JtYXRfdG9fc3RyaW5nIChpbl9mb3JtYXQpLCBOVUxMKTsKKyAgZmVhdHVyZXMgPSBnc3RfY2Fwc19nZXRfZmVhdHVyZXMgKGluX2NhcHMsIDApOworICBnc3RfY2Fwc19mZWF0dXJlc19hZGQgKGZlYXR1cmVzLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpOworICBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZjYWNoZS0+aW5wdXRfaW5mbywgaW5fY2Fwcyk7CisKKyAgaWYgKGNhY2hlLT5pbl9jYXBzKQorICAgIGdzdF9jYXBzX3VucmVmIChjYWNoZS0+aW5fY2Fwcyk7CisgIGlmIChjYWNoZS0+b3V0X2NhcHMpCisgICAgZ3N0X2NhcHNfdW5yZWYgKGNhY2hlLT5vdXRfY2Fwcyk7CisgIGNhY2hlLT5pbl9jYXBzID0gaW5fY2FwczsKKyAgY2FjaGUtPm91dF9jYXBzID0gb3V0X2NhcHM7CisKKyNpZiAwCisgIEdzdFN0cnVjdHVyZSAqY29uZmlnID0gZ3N0X2J1ZmZlcl9wb29sX2dldF9jb25maWcgKGNhY2hlLT5wb29sKTsKKyAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfcGFyYW1zIChjb25maWcsIGNhY2hlLT5pbl9jYXBzLAorICAgICAgICAgIEdTVF9WSURFT19JTkZPX1NJWkUgKCZjYWNoZS0+aW5wdXRfaW5mbyksIDAsIDApOworICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9hbGxvY2F0b3IgKGNvbmZpZywKKyAgICAgICAgICBnc3RfYWxsb2NhdG9yX2ZpbmQgKEdTVF9JT19TVVJGQUNFX01FTU9SWV9BTExPQ0FUT1JfTkFNRSksIE5VTEwpOworICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2FkZF9vcHRpb24gKGNvbmZpZywKKyAgICAgICAgICBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSk7CisgIGdzdF9idWZmZXJfcG9vbF9zZXRfY29uZmlnIChjYWNoZS0+cG9vbCwgY29uZmlnKTsKKyAgZ3N0X2J1ZmZlcl9wb29sX3NldF9hY3RpdmUgKGNhY2hlLT5wb29sLCBUUlVFKTsKKyNlbmRpZgorfQorCitzdGF0aWMgQ1ZQaXhlbEJ1ZmZlclJlZgorY3ZfcGl4ZWxfYnVmZmVyX2Zyb21fZ3N0X2J1ZmZlciAoR3N0QnVmZmVyICogYnVmZmVyKQoreworICBHc3RDb3JlTWVkaWFNZXRhICpjbV9tZXRhID0KKyAgICAgIChHc3RDb3JlTWVkaWFNZXRhICopIGdzdF9idWZmZXJfZ2V0X21ldGEgKGJ1ZmZlciwKKyAgICAgIGdzdF9jb3JlX21lZGlhX21ldGFfYXBpX2dldF90eXBlICgpKTsKKyAgR3N0Q29yZVZpZGVvTWV0YSAqY3ZfbWV0YSA9CisgICAgICAoR3N0Q29yZVZpZGVvTWV0YSAqKSBnc3RfYnVmZmVyX2dldF9tZXRhIChidWZmZXIsCisgICAgICBnc3RfY29yZV92aWRlb19tZXRhX2FwaV9nZXRfdHlwZSAoKSk7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNtX21ldGEgfHwgY3ZfbWV0YSwgTlVMTCk7CisKKyAgcmV0dXJuIGNtX21ldGEgPyBjbV9tZXRhLT5waXhlbF9idWYgOiBjdl9tZXRhLT5waXhidWY7Cit9CisKKyNpZiBIQVZFX0lPUworc3RhdGljIHZvaWQKK19kb19nZXRfZ2xfYnVmZmVyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBDb250ZXh0VGhyZWFkRGF0YSAqIGRhdGEpCit7CisgIENWT3BlbkdMRVNUZXh0dXJlUmVmIHRleHR1cmUgPSBOVUxMOworICBHc3RWaWRlb1RleHR1cmVDYWNoZSAqY2FjaGUgPSBkYXRhLT5jYWNoZTsKKyAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbF9idWYgPSBjdl9waXhlbF9idWZmZXJfZnJvbV9nc3RfYnVmZmVyIChkYXRhLT5pbnB1dF9idWZmZXIpOworICBHc3RHTFRleHR1cmVUYXJnZXQgZ2xfdGFyZ2V0OworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKmJhc2VfbWVtX2FsbG9jOworICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOworICBHc3RCdWZmZXIgKm91dHB1dF9idWZmZXI7CisKKyAgYmFzZV9tZW1fYWxsb2MgPSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdCAoY2FjaGUtPmN0eCkpOworICBvdXRwdXRfYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXcgKCk7CisgIGdzdF9idWZmZXJfY29weV9pbnRvIChvdXRwdXRfYnVmZmVyLCBkYXRhLT5pbnB1dF9idWZmZXIsIEdTVF9CVUZGRVJfQ09QWV9BTEwsIDAsIC0xKTsKKworICBzd2l0Y2ggKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJmNhY2hlLT5pbnB1dF9pbmZvKSkgeworICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUkE6CisgICAgICAgIC8qIGF2ZnZpZGVvc3JjIGRvZXMgQkdSQSBvbiBpT1Mgd2hlbiBkb2luZyBHTE1lbW9yeSAqLworICAgICAgICBpZiAoQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZUNyZWF0ZVRleHR1cmVGcm9tSW1hZ2UgKGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgICAgICAgIGNhY2hlLT5jYWNoZSwgcGl4ZWxfYnVmLCBOVUxMLCBHTF9URVhUVVJFXzJELCBHTF9SR0JBLAorICAgICAgICAgICAgICBHU1RfVklERU9fSU5GT19XSURUSCAoJmNhY2hlLT5pbnB1dF9pbmZvKSwKKyAgICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmY2FjaGUtPmlucHV0X2luZm8pLAorICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwLCAmdGV4dHVyZSkgIT0ga0NWUmV0dXJuU3VjY2VzcykKKyAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGdsX3RhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX2dsIChDVk9wZW5HTEVTVGV4dHVyZUdldFRhcmdldCAodGV4dHVyZSkpOworICAgICAgICBwYXJhbXMgPSBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfdGV4dHVyZSAoY2FjaGUtPmN0eCwKKyAgICAgICAgICAgIE5VTEwsICZjYWNoZS0+aW5wdXRfaW5mbywgMCwgTlVMTCwgZ2xfdGFyZ2V0LAorICAgICAgICAgICAgQ1ZPcGVuR0xFU1RleHR1cmVHZXROYW1lICh0ZXh0dXJlKSwgdGV4dHVyZSwKKyAgICAgICAgICAgIChHRGVzdHJveU5vdGlmeSkgQ0ZSZWxlYXNlKTsKKworICAgICAgICBnc3RfYnVmZmVyX3JlcGxhY2VfbWVtb3J5IChvdXRwdXRfYnVmZmVyLCAwLAorICAgICAgICAgICAgICAgIChHc3RNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChiYXNlX21lbV9hbGxvYywKKyAgICAgICAgICAgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpKTsKKyAgICAgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYxMjogeworICAgICAgICBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4dHlwZTsKKyAgICAgICAgR0xlbnVtIHRleGlmbXQsIHRleGZtdDsKKworICAgICAgICB0ZXh0eXBlID0gZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdCAoY2FjaGUtPmN0eCwgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyLCAwKTsKKyAgICAgICAgdGV4aWZtdCA9IGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKHRleHR5cGUpOworICAgICAgICB0ZXhmbXQgPSBnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGUgKGNhY2hlLT5jdHgsIHRleGlmbXQsIEdMX1VOU0lHTkVEX0JZVEUpOworCisgICAgICAgIC8qIHZ0ZGVjIGRvZXMgTlYxMiBvbiBpT1Mgd2hlbiBkb2luZyBHTE1lbW9yeSAqLworICAgICAgICBpZiAoQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZUNyZWF0ZVRleHR1cmVGcm9tSW1hZ2UgKGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgICAgICAgIGNhY2hlLT5jYWNoZSwgcGl4ZWxfYnVmLCBOVUxMLCBHTF9URVhUVVJFXzJELCB0ZXhpZm10LAorICAgICAgICAgICAgICBHU1RfVklERU9fSU5GT19XSURUSCAoJmNhY2hlLT5pbnB1dF9pbmZvKSwKKyAgICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmY2FjaGUtPmlucHV0X2luZm8pLAorICAgICAgICAgICAgICB0ZXhmbXQsIEdMX1VOU0lHTkVEX0JZVEUsIDAsICZ0ZXh0dXJlKSAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQorICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgZ2xfdGFyZ2V0ID0gZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fZ2wgKENWT3BlbkdMRVNUZXh0dXJlR2V0VGFyZ2V0ICh0ZXh0dXJlKSk7CisgICAgICAgIHBhcmFtcyA9IGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF90ZXh0dXJlIChjYWNoZS0+Y3R4LAorICAgICAgICAgICAgTlVMTCwgJmNhY2hlLT5pbnB1dF9pbmZvLCAwLCBOVUxMLCBnbF90YXJnZXQsCisgICAgICAgICAgICBDVk9wZW5HTEVTVGV4dHVyZUdldE5hbWUgKHRleHR1cmUpLCB0ZXh0dXJlLAorICAgICAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBDRlJlbGVhc2UpOworCisgICAgICAgIGdzdF9idWZmZXJfcmVwbGFjZV9tZW1vcnkgKG91dHB1dF9idWZmZXIsIDAsCisgICAgICAgICAgICAgICAgKEdzdE1lbW9yeSAqKSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKGJhc2VfbWVtX2FsbG9jLAorICAgICAgICAgICAgICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcykpOworICAgICAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworCisgICAgICAgIHRleHR5cGUgPSBnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0IChjYWNoZS0+Y3R4LCBHU1RfVklERU9fRk9STUFUX05WMTIsIDEpOworICAgICAgICB0ZXhpZm10ID0gZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZSAodGV4dHlwZSk7CisgICAgICAgIHRleGZtdCA9IGdzdF9nbF9zaXplZF9nbF9mb3JtYXRfZnJvbV9nbF9mb3JtYXRfdHlwZSAoY2FjaGUtPmN0eCwgdGV4aWZtdCwgR0xfVU5TSUdORURfQllURSk7CisKKyAgICAgICAgaWYgKENWT3BlbkdMRVNUZXh0dXJlQ2FjaGVDcmVhdGVUZXh0dXJlRnJvbUltYWdlIChrQ0ZBbGxvY2F0b3JEZWZhdWx0LAorICAgICAgICAgICAgICBjYWNoZS0+Y2FjaGUsIHBpeGVsX2J1ZiwgTlVMTCwgR0xfVEVYVFVSRV8yRCwgdGV4aWZtdCwKKyAgICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZjYWNoZS0+aW5wdXRfaW5mbykgLyAyLAorICAgICAgICAgICAgICBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZjYWNoZS0+aW5wdXRfaW5mbykgLyAyLAorICAgICAgICAgICAgICB0ZXhmbXQsIEdMX1VOU0lHTkVEX0JZVEUsIDEsICZ0ZXh0dXJlKSAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQorICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgZ2xfdGFyZ2V0ID0gZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fZ2wgKENWT3BlbkdMRVNUZXh0dXJlR2V0VGFyZ2V0ICh0ZXh0dXJlKSk7CisgICAgICAgIHBhcmFtcyA9IGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF90ZXh0dXJlIChjYWNoZS0+Y3R4LAorICAgICAgICAgICAgTlVMTCwgJmNhY2hlLT5pbnB1dF9pbmZvLCAxLCBOVUxMLCBnbF90YXJnZXQsCisgICAgICAgICAgICBDVk9wZW5HTEVTVGV4dHVyZUdldE5hbWUgKHRleHR1cmUpLCB0ZXh0dXJlLAorICAgICAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBDRlJlbGVhc2UpOworCisgICAgICAgIGdzdF9idWZmZXJfcmVwbGFjZV9tZW1vcnkgKG91dHB1dF9idWZmZXIsIDEsCisgICAgICAgICAgICAgICAgKEdzdE1lbW9yeSAqKSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKGJhc2VfbWVtX2FsbG9jLAorICAgICAgICAgICAgICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcykpOworICAgICAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgZ193YXJuX2lmX3JlYWNoZWQgKCk7CisgICAgICBnb3RvIGVycm9yOworICB9CisKKyAgZ3N0X29iamVjdF91bnJlZiAoYmFzZV9tZW1fYWxsb2MpOworCisgIGRhdGEtPm91dHB1dF9idWZmZXIgPSBvdXRwdXRfYnVmZmVyOworCisgIHJldHVybjsKKworZXJyb3I6CisgIGRhdGEtPm91dHB1dF9idWZmZXIgPSBOVUxMOworfQorI2Vsc2UgLyogIUhBVkVfSU9TICovCitzdGF0aWMgdm9pZAorX2RvX2dldF9nbF9idWZmZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIENvbnRleHRUaHJlYWREYXRhICogZGF0YSkKK3sKKyAgR3N0VmlkZW9UZXh0dXJlQ2FjaGUgKmNhY2hlID0gZGF0YS0+Y2FjaGU7CisgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmID0gY3ZfcGl4ZWxfYnVmZmVyX2Zyb21fZ3N0X2J1ZmZlciAoZGF0YS0+aW5wdXRfYnVmZmVyKTsKKyAgSU9TdXJmYWNlUmVmIHN1cmZhY2UgPSBDVlBpeGVsQnVmZmVyR2V0SU9TdXJmYWNlIChwaXhlbF9idWYpOworCisgIGRhdGEtPm91dHB1dF9idWZmZXIgPSBnc3RfYnVmZmVyX25ldyAoKTsKKyAgZ3N0X2J1ZmZlcl9jb3B5X2ludG8gKGRhdGEtPm91dHB1dF9idWZmZXIsIGRhdGEtPmlucHV0X2J1ZmZlciwgR1NUX0JVRkZFUl9DT1BZX0FMTCwgMCwgLTEpOworICBmb3IgKGludCBpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTICgmY2FjaGUtPmlucHV0X2luZm8pOyBpKyspIHsKKyAgICBHc3RJT1N1cmZhY2VNZW1vcnkgKm1lbTsKKworICAgIENGUmV0YWluIChwaXhlbF9idWYpOworICAgIG1lbSA9IGdzdF9pb19zdXJmYWNlX21lbW9yeV93cmFwcGVkIChjYWNoZS0+Y3R4LAorICAgICAgICAgICAgc3VyZmFjZSwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSwgJmNhY2hlLT5pbnB1dF9pbmZvLAorICAgICAgICAgICAgaSwgTlVMTCwgcGl4ZWxfYnVmLCAoR0Rlc3Ryb3lOb3RpZnkpIENGUmVsZWFzZSk7CisKKyAgICBnc3RfYnVmZmVyX3JlcGxhY2VfbWVtb3J5IChkYXRhLT5vdXRwdXRfYnVmZmVyLCBpLCAoR3N0TWVtb3J5ICopIG1lbSk7CisgIH0KK30KKyNlbmRpZgorCitHc3RCdWZmZXIgKgorZ3N0X3ZpZGVvX3RleHR1cmVfY2FjaGVfZ2V0X2dsX2J1ZmZlciAoR3N0VmlkZW9UZXh0dXJlQ2FjaGUgKiBjYWNoZSwKKyAgICAgICAgR3N0QnVmZmVyICogY3ZfYnVmZmVyKQoreworICBDb250ZXh0VGhyZWFkRGF0YSBkYXRhID0ge2NhY2hlLCBjdl9idWZmZXIsIE5VTEx9OworCisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGNhY2hlLT5jdHgsCisgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2RvX2dldF9nbF9idWZmZXIsICZkYXRhKTsKKworICBnc3RfYnVmZmVyX3VucmVmIChjdl9idWZmZXIpOworCisgIHJldHVybiBkYXRhLm91dHB1dF9idWZmZXI7Cit9CmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS92dGRlYy5jIGIvc3lzL2FwcGxlbWVkaWEvdnRkZWMuYwppbmRleCA1YzVhOTk0Li44MmE2NTZjIDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS92dGRlYy5jCisrKyBiL3N5cy9hcHBsZW1lZGlhL3Z0ZGVjLmMKQEAgLTEsNiArMSw2IEBACiAvKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMyBPbGUgQW5kcsOpIFZhZGxhIFJhdm7DpXMgPG9sZWF2ckBzb3VuZHJvcC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNyArMjUsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgZmlsZXNyYyBsb2NhdGlvbj1maWxlLm1vdiAhIHF0ZGVtdXggISBxdWV1ZSAhIGgyNjRwYXJzZSAhIHZ0ZGVjICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj1maWxlLm1vdiAhIHF0ZGVtdXggISBxdWV1ZSAhIGgyNjRwYXJzZSAhIHZ0ZGVjICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwKICAqIERlY29kZSBoMjY0IHZpZGVvIGZyb20gYSBtb3YgZmlsZS4KICAqIDwvcmVmc2VjdDI+CkBAIC00OCwxMiArNDgsMTggQEAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF92dGRlY19kZWJ1Z19jYXRlZ29yeSk7CiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfdnRkZWNfZGVidWdfY2F0ZWdvcnkKIAorZW51bQoreworICAvKiBsZWF2ZSBzb21lIGhlYWRyb29tIGZvciBuZXcgR3N0VmlkZW9Db2RlY0ZyYW1lRmxhZ3MgZmxhZ3MgKi8KKyAgVlRERUNfRlJBTUVfRkxBR19TS0lQID0gKDEgPDwgMTApLAorICBWVERFQ19GUkFNRV9GTEFHX0RST1AgPSAoMSA8PCAxMSksCit9OworCiBzdGF0aWMgdm9pZCBnc3RfdnRkZWNfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOwogCiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Z0ZGVjX3N0YXJ0IChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfdnRkZWNfc3RvcCAoR3N0VmlkZW9EZWNvZGVyICogZGVjb2Rlcik7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Z0ZGVjX2RlY2lkZV9hbGxvY2F0aW9uIChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyLAotICAgIEdzdFF1ZXJ5ICogcXVlcnkpOworc3RhdGljIGdib29sZWFuIGdzdF92dGRlY19uZWdvdGlhdGUgKEdzdFZpZGVvRGVjb2RlciAqIGRlY29kZXIpOwogc3RhdGljIGdib29sZWFuIGdzdF92dGRlY19zZXRfZm9ybWF0IChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyLAogICAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqIHN0YXRlKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfdnRkZWNfZmx1c2ggKEdzdFZpZGVvRGVjb2RlciAqIGRlY29kZXIpOwpAQCAtODIsNiArODgsNyBAQAogc3RhdGljIGdib29sZWFuIGdzdF92dGRlY19jb21wdXRlX3Jlb3JkZXJfcXVldWVfbGVuZ3RoIChHc3RWdGRlYyAqIHZ0ZGVjLAogICAgIENNVmlkZW9Db2RlY1R5cGUgY21fZm9ybWF0LCBHc3RCdWZmZXIgKiBjb2RlY19kYXRhKTsKIHN0YXRpYyB2b2lkIGdzdF92dGRlY19zZXRfbGF0ZW5jeSAoR3N0VnRkZWMgKiB2dGRlYyk7CitzdGF0aWMgdm9pZCBnc3RfdnRkZWNfc2V0X2NvbnRleHQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RDb250ZXh0ICogY29udGV4dCk7CiAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfdnRkZWNfc2lua190ZW1wbGF0ZSA9CiAgICAgR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKQEAgLTEwMiwyMiArMTA5LDExIEBACiBDRlNUUiAoIlJlcXVpcmVIYXJkd2FyZUFjY2VsZXJhdGVkVmlkZW9EZWNvZGVyIik7CiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfSU9TCi0jZGVmaW5lIEdTVF9WVERFQ19WSURFT19GT1JNQVRfU1RSICJOVjEyIgotI2Vsc2UKLSNkZWZpbmUgR1NUX1ZUREVDX1ZJREVPX0ZPUk1BVF9TVFIgIlVZVlkiCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfSU9TCiAjZGVmaW5lIFZJREVPX1NSQ19DQVBTIFwKLSAgICBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMgXAotICAgIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksIFwKLSAgICAgICAgIlJHQkEiKSAiOyIgXAotICAgIEdTVF9WSURFT19DQVBTX01BS0UoR1NUX1ZUREVDX1ZJREVPX0ZPUk1BVF9TVFIpICI7IgotI2Vsc2UKLSNkZWZpbmUgVklERU9fU1JDX0NBUFMgXAotICAgIEdTVF9WSURFT19DQVBTX01BS0UoR1NUX1ZUREVDX1ZJREVPX0ZPUk1BVF9TVFIpICI7IgotI2VuZGlmCisgICAgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSxcCisgICAgICAgICJOVjEyIikgIiwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgInRleHR1cmUtdGFyZ2V0ID0gKHN0cmluZykgcmVjdGFuZ2xlOyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgR1NUX1ZJREVPX0NBUFNfTUFLRSgiTlYxMiIpICI7IgogCiBHX0RFRklORV9UWVBFIChHc3RWdGRlYywgZ3N0X3Z0ZGVjLCBHU1RfVFlQRV9WSURFT19ERUNPREVSKTsKIApAQCAtMTI1LDE3ICsxMjEsMTggQEAKIGdzdF92dGRlY19jbGFzc19pbml0IChHc3RWdGRlY0NsYXNzICoga2xhc3MpCiB7CiAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7CisgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CiAgIEdzdFZpZGVvRGVjb2RlckNsYXNzICp2aWRlb19kZWNvZGVyX2NsYXNzID0gR1NUX1ZJREVPX0RFQ09ERVJfQ0xBU1MgKGtsYXNzKTsKIAogICAvKiBTZXR0aW5nIHVwIHBhZHMgYW5kIHNldHRpbmcgbWV0YWRhdGEgc2hvdWxkIGJlIG1vdmVkIHRvCiAgICAgIGJhc2VfY2xhc3NfaW5pdCBpZiB5b3UgaW50ZW5kIHRvIHN1YmNsYXNzIHRoaXMgY2xhc3MuICovCi0gIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyksCisgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCiAgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfdnRkZWNfc2lua190ZW1wbGF0ZSkpOwotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpLAorICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAogICAgICAgZ3N0X3BhZF90ZW1wbGF0ZV9uZXcgKCJzcmMiLCBHU1RfUEFEX1NSQywgR1NUX1BBRF9BTFdBWVMsCiAgICAgICAgICAgZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKFZJREVPX1NSQ19DQVBTKSkpOwogCi0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyksCisgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCiAgICAgICAiQXBwbGUgVmlkZW9Ub29sYm94IGRlY29kZXIiLAogICAgICAgIkNvZGVjL0RlY29kZXIvVmlkZW8iLAogICAgICAgIkFwcGxlIFZpZGVvVG9vbGJveCBEZWNvZGVyIiwKQEAgLTE0MywxMCArMTQwLDEwIEBACiAgICAgICAiQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+Iik7CiAKICAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfdnRkZWNfZmluYWxpemU7CisgIGVsZW1lbnRfY2xhc3MtPnNldF9jb250ZXh0ID0gZ3N0X3Z0ZGVjX3NldF9jb250ZXh0OwogICB2aWRlb19kZWNvZGVyX2NsYXNzLT5zdGFydCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnRkZWNfc3RhcnQpOwogICB2aWRlb19kZWNvZGVyX2NsYXNzLT5zdG9wID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92dGRlY19zdG9wKTsKLSAgdmlkZW9fZGVjb2Rlcl9jbGFzcy0+ZGVjaWRlX2FsbG9jYXRpb24gPQotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92dGRlY19kZWNpZGVfYWxsb2NhdGlvbik7CisgIHZpZGVvX2RlY29kZXJfY2xhc3MtPm5lZ290aWF0ZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnRkZWNfbmVnb3RpYXRlKTsKICAgdmlkZW9fZGVjb2Rlcl9jbGFzcy0+c2V0X2Zvcm1hdCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnRkZWNfc2V0X2Zvcm1hdCk7CiAgIHZpZGVvX2RlY29kZXJfY2xhc3MtPmZsdXNoID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92dGRlY19mbHVzaCk7CiAgIHZpZGVvX2RlY29kZXJfY2xhc3MtPmZpbmlzaCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnRkZWNfZmluaXNoKTsKQEAgLTE1OCw2ICsxNTUsNyBAQAogZ3N0X3Z0ZGVjX2luaXQgKEdzdFZ0ZGVjICogdnRkZWMpCiB7CiAgIHZ0ZGVjLT5yZW9yZGVyX3F1ZXVlID0gZ19hc3luY19xdWV1ZV9uZXcgKCk7CisgIHZ0ZGVjLT5jdHhoID0gZ3N0X2dsX2NvbnRleHRfaGVscGVyX25ldyAoR1NUX0VMRU1FTlQgKHZ0ZGVjKSk7CiB9CiAKIHZvaWQKQEAgLTE2OCw3ICsxNjYsNyBAQAogICBHU1RfREVCVUdfT0JKRUNUICh2dGRlYywgImZpbmFsaXplIik7CiAKICAgZ19hc3luY19xdWV1ZV91bnJlZiAodnRkZWMtPnJlb3JkZXJfcXVldWUpOwotCisgIGdzdF9nbF9jb250ZXh0X2hlbHBlcl9mcmVlICh2dGRlYy0+Y3R4aCk7CiAKICAgR19PQkpFQ1RfQ0xBU1MgKGdzdF92dGRlY19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKIH0KQEAgLTE4OCwxMSArMTg2LDE1IEBACiB7CiAgIEdzdFZ0ZGVjICp2dGRlYyA9IEdTVF9WVERFQyAoZGVjb2Rlcik7CiAKKyAgaWYgKHZ0ZGVjLT5pbnB1dF9zdGF0ZSkKKyAgICBnc3RfdmlkZW9fY29kZWNfc3RhdGVfdW5yZWYgKHZ0ZGVjLT5pbnB1dF9zdGF0ZSk7CisgIHZ0ZGVjLT5pbnB1dF9zdGF0ZSA9IE5VTEw7CisKICAgaWYgKHZ0ZGVjLT5zZXNzaW9uKQogICAgIGdzdF92dGRlY19pbnZhbGlkYXRlX3Nlc3Npb24gKHZ0ZGVjKTsKIAogICBpZiAodnRkZWMtPnRleHR1cmVfY2FjaGUpCi0gICAgZ3N0X2NvcmVfdmlkZW9fdGV4dHVyZV9jYWNoZV9mcmVlICh2dGRlYy0+dGV4dHVyZV9jYWNoZSk7CisgICAgZ3N0X3ZpZGVvX3RleHR1cmVfY2FjaGVfZnJlZSAodnRkZWMtPnRleHR1cmVfY2FjaGUpOwogICB2dGRlYy0+dGV4dHVyZV9jYWNoZSA9IE5VTEw7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAodnRkZWMsICJzdG9wIik7CkBAIC0yMDAsMTEyICsyMDIsMTA4IEBACiAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF92dGRlY19kZWNpZGVfYWxsb2NhdGlvbiAoR3N0VmlkZW9EZWNvZGVyICogZGVjb2RlciwgR3N0UXVlcnkgKiBxdWVyeSkKK3N0YXRpYyB2b2lkCitzZXR1cF90ZXh0dXJlX2NhY2hlIChHc3RWdGRlYyAqIHZ0ZGVjLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KQogewotICBnYm9vbGVhbiByZXQ7Ci0gIEdzdENhcHMgKmNhcHM7Ci0gIEdzdENhcHNGZWF0dXJlcyAqZmVhdHVyZXM7Ci0gIEdzdFZ0ZGVjICp2dGRlYyA9IEdTVF9WVERFQyAoZGVjb2Rlcik7CisgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqb3V0cHV0X3N0YXRlOwogCi0gIHJldCA9Ci0gICAgICBHU1RfVklERU9fREVDT0RFUl9DTEFTUyAoZ3N0X3Z0ZGVjX3BhcmVudF9jbGFzcyktPmRlY2lkZV9hbGxvY2F0aW9uCi0gICAgICAoZGVjb2RlciwgcXVlcnkpOwotICBpZiAoIXJldCkKLSAgICBnb3RvIG91dDsKKyAgZ19yZXR1cm5faWZfZmFpbCAodnRkZWMtPnRleHR1cmVfY2FjaGUgPT0gTlVMTCk7CiAKLSAgZ3N0X3F1ZXJ5X3BhcnNlX2FsbG9jYXRpb24gKHF1ZXJ5LCAmY2FwcywgTlVMTCk7Ci0gIGlmIChjYXBzKSB7Ci0gICAgR3N0R0xDb250ZXh0ICpnbF9jb250ZXh0ID0gTlVMTDsKLSAgICBmZWF0dXJlcyA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAoY2FwcywgMCk7Ci0KLSAgICBpZiAoZ3N0X2NhcHNfZmVhdHVyZXNfY29udGFpbnMgKGZlYXR1cmVzLAotICAgICAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKSkgewotICAgICAgR3N0Q29udGV4dCAqY29udGV4dCA9IE5VTEw7Ci0gICAgICBHc3RRdWVyeSAqcXVlcnkgPSBnc3RfcXVlcnlfbmV3X2NvbnRleHQgKCJnc3QuZ2wubG9jYWxfY29udGV4dCIpOwotICAgICAgaWYgKGdzdF9wYWRfcGVlcl9xdWVyeSAoR1NUX1ZJREVPX0RFQ09ERVJfU1JDX1BBRCAoZGVjb2RlciksIHF1ZXJ5KSkgewotCi0gICAgICAgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0IChxdWVyeSwgJmNvbnRleHQpOwotICAgICAgICBpZiAoY29udGV4dCkgewotICAgICAgICAgIGNvbnN0IEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1cmUgKGNvbnRleHQpOwotICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0IChzLCAiY29udGV4dCIsIEdTVF9HTF9UWVBFX0NPTlRFWFQsICZnbF9jb250ZXh0LAotICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7Ci0KLSAgICAgIGlmIChjb250ZXh0KSB7Ci0gICAgICAgIEdzdFZpZGVvRm9ybWF0IGludGVybmFsX2Zvcm1hdDsKLSAgICAgICAgR3N0VmlkZW9Db2RlY1N0YXRlICpvdXRwdXRfc3RhdGUgPQotICAgICAgICAgICAgZ3N0X3ZpZGVvX2RlY29kZXJfZ2V0X291dHB1dF9zdGF0ZSAoZGVjb2Rlcik7Ci0KLSAgICAgICAgR1NUX0lORk9fT0JKRUNUIChkZWNvZGVyLCAicHVzaGluZyB0ZXh0dXJlcy4gR0wgY29udGV4dCAlcCIsIGNvbnRleHQpOwotICAgICAgICBpZiAodnRkZWMtPnRleHR1cmVfY2FjaGUpCi0gICAgICAgICAgZ3N0X2NvcmVfdmlkZW9fdGV4dHVyZV9jYWNoZV9mcmVlICh2dGRlYy0+dGV4dHVyZV9jYWNoZSk7Ci0KLSNpZmRlZiBIQVZFX0lPUwotICAgICAgICBpbnRlcm5hbF9mb3JtYXQgPSBHU1RfVklERU9fRk9STUFUX05WMTI7Ci0jZWxzZQotICAgICAgICBpbnRlcm5hbF9mb3JtYXQgPSBHU1RfVklERU9fRk9STUFUX1VZVlk7Ci0jZW5kaWYKLSAgICAgICAgdnRkZWMtPnRleHR1cmVfY2FjaGUgPSBnc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX25ldyAoZ2xfY29udGV4dCk7Ci0gICAgICAgIGdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfc2V0X2Zvcm1hdCAodnRkZWMtPnRleHR1cmVfY2FjaGUsCi0gICAgICAgICAgICBpbnRlcm5hbF9mb3JtYXQsIG91dHB1dF9zdGF0ZS0+Y2Fwcyk7Ci0gICAgICAgIGdzdF92aWRlb19jb2RlY19zdGF0ZV91bnJlZiAob3V0cHV0X3N0YXRlKTsKLSAgICAgICAgZ3N0X29iamVjdF91bnJlZiAoZ2xfY29udGV4dCk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlY29kZXIsCi0gICAgICAgICAgICAiZ290IG1lbW9yeTpHTE1lbW9yeSBjYXBzIGJ1dCBub3QgR0wgY29udGV4dCBmcm9tIGRvd25zdHJlYW0gZWxlbWVudCIpOwotICAgICAgfQotICAgIH0KLSAgfQotCi1vdXQ6Ci0gIHJldHVybiByZXQ7CisgIG91dHB1dF9zdGF0ZSA9IGdzdF92aWRlb19kZWNvZGVyX2dldF9vdXRwdXRfc3RhdGUgKEdTVF9WSURFT19ERUNPREVSICh2dGRlYykpOworICB2dGRlYy0+dGV4dHVyZV9jYWNoZSA9IGdzdF92aWRlb190ZXh0dXJlX2NhY2hlX25ldyAoY29udGV4dCk7CisgIGdzdF92aWRlb190ZXh0dXJlX2NhY2hlX3NldF9mb3JtYXQgKHZ0ZGVjLT50ZXh0dXJlX2NhY2hlLAorICAgICAgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyLCBvdXRwdXRfc3RhdGUtPmNhcHMpOworICBnc3RfdmlkZW9fY29kZWNfc3RhdGVfdW5yZWYgKG91dHB1dF9zdGF0ZSk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgotZ3N0X3Z0ZGVjX25lZ290aWF0ZV9vdXRwdXRfZm9ybWF0IChHc3RWdGRlYyAqIHZ0ZGVjLAotICAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqIGlucHV0X3N0YXRlKQorZ3N0X3Z0ZGVjX25lZ290aWF0ZSAoR3N0VmlkZW9EZWNvZGVyICogZGVjb2RlcikKIHsKLSAgR3N0Q2FwcyAqY2FwcyA9IE5VTEwsICpwZWVyY2FwcyA9IE5VTEwsICp0ZW1wbGNhcHM7Ci0gIEdzdFZpZGVvRm9ybWF0IG91dHB1dF9mb3JtYXQ7CiAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqb3V0cHV0X3N0YXRlID0gTlVMTDsKLSAgR3N0Q2Fwc0ZlYXR1cmVzICpmZWF0dXJlczsKKyAgR3N0Q2FwcyAqY2FwcyA9IE5VTEwsICp0ZW1wbGNhcHMgPSBOVUxMLCAqcHJldmNhcHMgPSBOVUxMOworICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CiAgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwogICBjb25zdCBnY2hhciAqczsKKyAgR3N0VnRkZWMgKnZ0ZGVjOworICBnYm9vbGVhbiByZXQgPSBUUlVFOworICBHc3RDYXBzRmVhdHVyZXMgKmZlYXR1cmVzID0gTlVMTDsKKyAgZ2Jvb2xlYW4gb3V0cHV0X3RleHR1cmVzOwogCi0gIHBlZXJjYXBzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKEdTVF9WSURFT19ERUNPREVSX1NSQ19QQUQgKHZ0ZGVjKSwgTlVMTCk7Ci0KLSAgLyogQ2hlY2sgaWYgb3V0cHV0IHN1cHBvcnRzIEdMIGNhcHMgYnkgcHJlZmVyZW5jZSAqLwotICB0ZW1wbGNhcHMgPSBnc3RfcGFkX2dldF9wYWRfdGVtcGxhdGVfY2FwcyAoR1NUX1ZJREVPX0RFQ09ERVJfU1JDX1BBRCAodnRkZWMpKTsKKyAgdnRkZWMgPSBHU1RfVlRERUMgKGRlY29kZXIpOworICB0ZW1wbGNhcHMgPQorICAgICAgZ3N0X3BhZF9nZXRfcGFkX3RlbXBsYXRlX2NhcHMgKEdTVF9WSURFT19ERUNPREVSX1NSQ19QQUQgKGRlY29kZXIpKTsKICAgY2FwcyA9Ci0gICAgICBnc3RfY2Fwc19pbnRlcnNlY3RfZnVsbCAodGVtcGxjYXBzLCBwZWVyY2FwcywgR1NUX0NBUFNfSU5URVJTRUNUX0ZJUlNUKTsKLQotICBnc3RfY2Fwc191bnJlZiAocGVlcmNhcHMpOworICAgICAgZ3N0X2NhcHNfbWFrZV93cml0YWJsZSAoZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKEdTVF9WSURFT19ERUNPREVSX1NSQ19QQUQKKyAgICAgICAgICAodnRkZWMpLCB0ZW1wbGNhcHMpKTsKICAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsY2Fwcyk7CiAKICAgY2FwcyA9IGdzdF9jYXBzX3RydW5jYXRlIChjYXBzKTsKICAgc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7CiAgIHMgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHN0cnVjdHVyZSwgImZvcm1hdCIpOwotICBvdXRwdXRfZm9ybWF0ID0gZ3N0X3ZpZGVvX2Zvcm1hdF9mcm9tX3N0cmluZyAocyk7Ci0gIGZlYXR1cmVzID0gZ3N0X2NhcHNfZmVhdHVyZXNfY29weSAoZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChjYXBzLCAwKSk7Ci0KLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotCi0gIGlmICghZ3N0X3Z0ZGVjX2NyZWF0ZV9zZXNzaW9uICh2dGRlYywgb3V0cHV0X2Zvcm1hdCkpIHsKLSAgICBnc3RfY2Fwc19mZWF0dXJlc19mcmVlIChmZWF0dXJlcyk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9CisgIGZvcm1hdCA9IGdzdF92aWRlb19mb3JtYXRfZnJvbV9zdHJpbmcgKHMpOworICBmZWF0dXJlcyA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAoY2FwcywgMCk7CisgIGlmIChmZWF0dXJlcykKKyAgICBmZWF0dXJlcyA9IGdzdF9jYXBzX2ZlYXR1cmVzX2NvcHkgKGZlYXR1cmVzKTsKIAogICBvdXRwdXRfc3RhdGUgPSBnc3RfdmlkZW9fZGVjb2Rlcl9zZXRfb3V0cHV0X3N0YXRlIChHU1RfVklERU9fREVDT0RFUiAodnRkZWMpLAotICAgICAgb3V0cHV0X2Zvcm1hdCwgdnRkZWMtPnZpZGVvX2luZm8ud2lkdGgsIHZ0ZGVjLT52aWRlb19pbmZvLmhlaWdodCwKLSAgICAgIGlucHV0X3N0YXRlKTsKLQorICAgICAgZm9ybWF0LCB2dGRlYy0+dmlkZW9faW5mby53aWR0aCwgdnRkZWMtPnZpZGVvX2luZm8uaGVpZ2h0LAorICAgICAgdnRkZWMtPmlucHV0X3N0YXRlKTsKICAgb3V0cHV0X3N0YXRlLT5jYXBzID0gZ3N0X3ZpZGVvX2luZm9fdG9fY2FwcyAoJm91dHB1dF9zdGF0ZS0+aW5mbyk7Ci0gIGdzdF9jYXBzX3NldF9mZWF0dXJlcyAob3V0cHV0X3N0YXRlLT5jYXBzLCAwLCBmZWF0dXJlcyk7CisgIGlmIChmZWF0dXJlcykgeworICAgIGdzdF9jYXBzX3NldF9mZWF0dXJlcyAob3V0cHV0X3N0YXRlLT5jYXBzLCAwLCBmZWF0dXJlcyk7CisgICAgb3V0cHV0X3RleHR1cmVzID0KKyAgICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfY29udGFpbnMgKGZlYXR1cmVzLAorICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpOworICAgIGlmIChvdXRwdXRfdGV4dHVyZXMpCisgICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChvdXRwdXRfc3RhdGUtPmNhcHMsICJ0ZXh0dXJlLXRhcmdldCIsIEdfVFlQRV9TVFJJTkcsCisjaWYgIUhBVkVfSU9TCisgICAgICAgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFIsCisjZWxzZQorICAgICAgICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFIsCisjZW5kaWYKKyAgICAgICAgICBOVUxMKTsKKyAgfQorICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CiAKLSAgcmV0dXJuIFRSVUU7CisgIHByZXZjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChkZWNvZGVyLT5zcmNwYWQpOworICBpZiAoIXByZXZjYXBzIHx8ICFnc3RfY2Fwc19pc19lcXVhbCAocHJldmNhcHMsIG91dHB1dF9zdGF0ZS0+Y2FwcykpIHsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKHZ0ZGVjLCAibmVnb3RpYXRlZCBvdXRwdXQgZm9ybWF0ICUiIEdTVF9QVFJfRk9STUFULAorICAgICAgICBvdXRwdXRfc3RhdGUtPmNhcHMpOworCisgICAgaWYgKHZ0ZGVjLT5zZXNzaW9uKSB7CisgICAgICBnc3RfdnRkZWNfcHVzaF9mcmFtZXNfaWZfbmVlZGVkICh2dGRlYywgVFJVRSwgRkFMU0UpOworICAgICAgZ3N0X3Z0ZGVjX2ludmFsaWRhdGVfc2Vzc2lvbiAodnRkZWMpOworICAgIH0KKworICAgIHJldCA9IGdzdF92dGRlY19jcmVhdGVfc2Vzc2lvbiAodnRkZWMsIGZvcm1hdCk7CisgIH0KKworICBpZiAocmV0ICYmIG91dHB1dF90ZXh0dXJlcykgeworICAgIC8qIGNhbGwgdGhpcyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgY2FwcyBoYXZlIGNoYW5nZWQgb3Igbm90IHNpbmNlIGEgbmV3CisgICAgICogbG9jYWwgY29udGV4dCBjb3VsZCBoYXZlIGJlY29tZSBhdmFpbGFibGUKKyAgICAgKi8KKyAgICBnc3RfZ2xfY29udGV4dF9oZWxwZXJfZW5zdXJlX2NvbnRleHQgKHZ0ZGVjLT5jdHhoKTsKKworICAgIEdTVF9JTkZPX09CSkVDVCAodnRkZWMsICJwdXNoaW5nIHRleHR1cmVzLCBjb250ZXh0ICVwIG9sZCBjb250ZXh0ICVwIiwKKyAgICAgICAgdnRkZWMtPmN0eGgtPmNvbnRleHQsCisgICAgICAgIHZ0ZGVjLT50ZXh0dXJlX2NhY2hlID8gdnRkZWMtPnRleHR1cmVfY2FjaGUtPmN0eCA6IE5VTEwpOworCisgICAgaWYgKHZ0ZGVjLT50ZXh0dXJlX2NhY2hlCisgICAgICAgICYmIHZ0ZGVjLT50ZXh0dXJlX2NhY2hlLT5jdHggIT0gdnRkZWMtPmN0eGgtPmNvbnRleHQpIHsKKyAgICAgIGdzdF92aWRlb190ZXh0dXJlX2NhY2hlX2ZyZWUgKHZ0ZGVjLT50ZXh0dXJlX2NhY2hlKTsKKyAgICAgIHZ0ZGVjLT50ZXh0dXJlX2NhY2hlID0gTlVMTDsKKyAgICB9CisgICAgaWYgKCF2dGRlYy0+dGV4dHVyZV9jYWNoZSkKKyAgICAgIHNldHVwX3RleHR1cmVfY2FjaGUgKHZ0ZGVjLCB2dGRlYy0+Y3R4aC0+Y29udGV4dCk7CisgIH0KKworICBpZiAocHJldmNhcHMpCisgICAgZ3N0X2NhcHNfdW5yZWYgKHByZXZjYXBzKTsKKworICBpZiAoIXJldCkKKyAgICByZXR1cm4gcmV0OworCisgIHJldHVybiBHU1RfVklERU9fREVDT0RFUl9DTEFTUyAoZ3N0X3Z0ZGVjX3BhcmVudF9jbGFzcyktPm5lZ290aWF0ZSAoZGVjb2Rlcik7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgpAQCAtMzM0LDggKzMzMiwxMCBAQAogICAgIHJldHVybiBUUlVFOwogICB9CiAKLSAgaWYgKHZ0ZGVjLT5zZXNzaW9uKQorICBpZiAodnRkZWMtPnNlc3Npb24pIHsKKyAgICBnc3RfdnRkZWNfcHVzaF9mcmFtZXNfaWZfbmVlZGVkICh2dGRlYywgVFJVRSwgRkFMU0UpOwogICAgIGdzdF92dGRlY19pbnZhbGlkYXRlX3Nlc3Npb24gKHZ0ZGVjKTsKKyAgfQogCiAgIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJnZ0ZGVjLT52aWRlb19pbmZvLCBzdGF0ZS0+Y2Fwcyk7CiAKQEAgLTM1NSwxMCArMzU1LDExIEBACiAgICAgQ0ZSZWxlYXNlICh2dGRlYy0+Zm9ybWF0X2Rlc2NyaXB0aW9uKTsKICAgdnRkZWMtPmZvcm1hdF9kZXNjcmlwdGlvbiA9IGZvcm1hdF9kZXNjcmlwdGlvbjsKIAotICBpZiAoIWdzdF92dGRlY19uZWdvdGlhdGVfb3V0cHV0X2Zvcm1hdCAodnRkZWMsIHN0YXRlKSkKLSAgICByZXR1cm4gRkFMU0U7CisgIGlmICh2dGRlYy0+aW5wdXRfc3RhdGUpCisgICAgZ3N0X3ZpZGVvX2NvZGVjX3N0YXRlX3VucmVmICh2dGRlYy0+aW5wdXRfc3RhdGUpOworICB2dGRlYy0+aW5wdXRfc3RhdGUgPSBnc3RfdmlkZW9fY29kZWNfc3RhdGVfcmVmIChzdGF0ZSk7CiAKLSAgcmV0dXJuIFRSVUU7CisgIHJldHVybiBnc3RfdmlkZW9fZGVjb2Rlcl9uZWdvdGlhdGUgKGRlY29kZXIpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KQEAgLTQzMyw2ICs0MzQsMTYgQEAKICAgZ290byBvdXQ7CiB9CiAKK3N0YXRpYyB2b2lkCitnc3RfdnRkZWNfaW52YWxpZGF0ZV9zZXNzaW9uIChHc3RWdGRlYyAqIHZ0ZGVjKQoreworICBnX3JldHVybl9pZl9mYWlsICh2dGRlYy0+c2Vzc2lvbik7CisKKyAgVlREZWNvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUgKHZ0ZGVjLT5zZXNzaW9uKTsKKyAgQ0ZSZWxlYXNlICh2dGRlYy0+c2Vzc2lvbik7CisgIHZ0ZGVjLT5zZXNzaW9uID0gTlVMTDsKK30KKwogc3RhdGljIGdib29sZWFuCiBnc3RfdnRkZWNfY3JlYXRlX3Nlc3Npb24gKEdzdFZ0ZGVjICogdnRkZWMsIEdzdFZpZGVvRm9ybWF0IGZvcm1hdCkKIHsKQEAgLTQ0MCw3ICs0NTEsOSBAQAogICBWVERlY29tcHJlc3Npb25PdXRwdXRDYWxsYmFja1JlY29yZCBjYWxsYmFjazsKICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiB2aWRlb0RlY29kZXJTcGVjaWZpY2F0aW9uOwogICBPU1N0YXR1cyBzdGF0dXM7Ci0gIGd1aW50MzIgY3ZfZm9ybWF0OworICBndWludDMyIGN2X2Zvcm1hdCA9IDA7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHZ0ZGVjLT5zZXNzaW9uID09IE5VTEwsIEZBTFNFKTsKIAogICBzd2l0Y2ggKGZvcm1hdCkgewogICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyOgpAQCAtNDUwLDExICs0NjMsNyBAQAogICAgICAgY3ZfZm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMllwQ2JDcjg7CiAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCQToKLSNpZmRlZiBIQVZFX0lPUwogICAgICAgY3ZfZm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2U7Ci0jZWxzZQotICAgICAgY3ZfZm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMllwQ2JDcjg7Ci0jZW5kaWYKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBnX3dhcm5faWZfcmVhY2hlZCAoKTsKQEAgLTUwMywxNiArNTEyLDYgQEAKICAgcmV0dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyB2b2lkCi1nc3RfdnRkZWNfaW52YWxpZGF0ZV9zZXNzaW9uIChHc3RWdGRlYyAqIHZ0ZGVjKQotewotICBnX3JldHVybl9pZl9mYWlsICh2dGRlYy0+c2Vzc2lvbik7Ci0KLSAgVlREZWNvbXByZXNzaW9uU2Vzc2lvbkludmFsaWRhdGUgKHZ0ZGVjLT5zZXNzaW9uKTsKLSAgQ0ZSZWxlYXNlICh2dGRlYy0+c2Vzc2lvbik7Ci0gIHZ0ZGVjLT5zZXNzaW9uID0gTlVMTDsKLX0KLQogc3RhdGljIENNRm9ybWF0RGVzY3JpcHRpb25SZWYKIGNyZWF0ZV9mb3JtYXRfZGVzY3JpcHRpb24gKEdzdFZ0ZGVjICogdnRkZWMsIENNVmlkZW9Db2RlY1R5cGUgY21fZm9ybWF0KQogewpAQCAtNzAyLDggKzcwMSwxMSBAQAogCiAgIGZyYW1lMSA9IChHc3RWaWRlb0NvZGVjRnJhbWUgKikgZjE7CiAgIGZyYW1lMiA9IChHc3RWaWRlb0NvZGVjRnJhbWUgKikgZjI7Ci0gIHB0czEgPSBHU1RfQlVGRkVSX1BUUyAoZnJhbWUxLT5vdXRwdXRfYnVmZmVyKTsKLSAgcHRzMiA9IEdTVF9CVUZGRVJfUFRTIChmcmFtZTItPm91dHB1dF9idWZmZXIpOworICBwdHMxID0gcHRzMiA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgIGlmIChmcmFtZTEtPm91dHB1dF9idWZmZXIpCisgICAgcHRzMSA9IEdTVF9CVUZGRVJfUFRTIChmcmFtZTEtPm91dHB1dF9idWZmZXIpOworICBpZiAoZnJhbWUyLT5vdXRwdXRfYnVmZmVyKQorICAgIHB0czIgPSBHU1RfQlVGRkVSX1BUUyAoZnJhbWUyLT5vdXRwdXRfYnVmZmVyKTsKIAogICBpZiAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChwdHMxKSB8fCAhR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHB0czIpKQogICAgIHJldHVybiAwOwpAQCAtNzIzLDU4ICs3MjUsNDUgQEAKIHsKICAgR3N0VnRkZWMgKnZ0ZGVjID0gKEdzdFZ0ZGVjICopIGRlY29tcHJlc3Npb25fb3V0cHV0X3JlZl9jb247CiAgIEdzdFZpZGVvQ29kZWNGcmFtZSAqZnJhbWUgPSAoR3N0VmlkZW9Db2RlY0ZyYW1lICopIHNvdXJjZV9mcmFtZV9yZWZfY29uOwotICBHc3RCdWZmZXIgKmJ1ZjsKICAgR3N0VmlkZW9Db2RlY1N0YXRlICpzdGF0ZTsKIAogICBHU1RfTE9HX09CSkVDVCAodnRkZWMsICJnb3Qgb3V0cHV0IGZyYW1lICVwICVkIGFuZCBWVCBidWZmZXIgJXAiLCBmcmFtZSwKICAgICAgIGZyYW1lLT5kZWNvZGVfZnJhbWVfbnVtYmVyLCBpbWFnZV9idWZmZXIpOwogCisgIGZyYW1lLT5vdXRwdXRfYnVmZmVyID0gTlVMTDsKKwogICBpZiAoc3RhdHVzICE9IG5vRXJyKSB7CiAgICAgR1NUX0VSUk9SX09CSkVDVCAodnRkZWMsICJFcnJvciBkZWNvZGluZyBmcmFtZSAlZCIsIChpbnQpIHN0YXR1cyk7Ci0gICAgZ290byBkcm9wOwogICB9CiAKLSAgaWYgKGltYWdlX2J1ZmZlciA9PSBOVUxMKSB7Ci0gICAgaWYgKGluZm9fZmxhZ3MgJiBrVlREZWNvZGVJbmZvX0ZyYW1lRHJvcHBlZCkKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHZ0ZGVjLCAiRnJhbWUgZHJvcHBlZCBieSB2aWRlbyB0b29sYm94Iik7Ci0gICAgZWxzZQorICBpZiAoaW1hZ2VfYnVmZmVyKSB7CisgICAgR3N0QnVmZmVyICpidWYgPSBOVUxMOworCisgICAgLyogRklYTUU6IHVzZSBnc3RfdmlkZW9fZGVjb2Rlcl9hbGxvY2F0ZV9vdXRwdXRfYnVmZmVyICovCisgICAgc3RhdGUgPSBnc3RfdmlkZW9fZGVjb2Rlcl9nZXRfb3V0cHV0X3N0YXRlIChHU1RfVklERU9fREVDT0RFUiAodnRkZWMpKTsKKyAgICBpZiAoc3RhdGUgPT0gTlVMTCkgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUICh2dGRlYywgIk91dHB1dCBzdGF0ZSBub3QgY29uZmlndXJlZCwgcmVsZWFzZSBidWZmZXIiKTsKKyAgICAgIGZyYW1lLT5mbGFncyAmPSBWVERFQ19GUkFNRV9GTEFHX1NLSVA7CisgICAgfSBlbHNlIHsKKyAgICAgIGJ1ZiA9IGdzdF9jb3JlX3ZpZGVvX2J1ZmZlcl9uZXcgKGltYWdlX2J1ZmZlciwgJnN0YXRlLT5pbmZvKTsKKyAgICAgIGdzdF92aWRlb19jb2RlY19zdGF0ZV91bnJlZiAoc3RhdGUpOworICAgICAgR1NUX0JVRkZFUl9QVFMgKGJ1ZikgPSBwdHMudmFsdWU7CisgICAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpID0gZHVyYXRpb24udmFsdWU7CisgICAgICBmcmFtZS0+b3V0cHV0X2J1ZmZlciA9IGJ1ZjsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKGluZm9fZmxhZ3MgJiBrVlREZWNvZGVJbmZvX0ZyYW1lRHJvcHBlZCkgeworICAgICAgR1NUX0RFQlVHX09CSkVDVCAodnRkZWMsICJGcmFtZSBkcm9wcGVkIGJ5IHZpZGVvIHRvb2xib3ggJXAgJWQiLAorICAgICAgICAgIGZyYW1lLCBmcmFtZS0+ZGVjb2RlX2ZyYW1lX251bWJlcik7CisgICAgICBmcmFtZS0+ZmxhZ3MgfD0gVlRERUNfRlJBTUVfRkxBR19EUk9QOworICAgIH0gZWxzZSB7CiAgICAgICBHU1RfREVCVUdfT0JKRUNUICh2dGRlYywgIkRlY29kZWQgZnJhbWUgaXMgTlVMTCIpOwotICAgIGdvdG8gZHJvcDsKKyAgICAgIGZyYW1lLT5mbGFncyB8PSBWVERFQ19GUkFNRV9GTEFHX1NLSVA7CisgICAgfQogICB9CiAKLSAgLyogRklYTUU6IHVzZSBnc3RfdmlkZW9fZGVjb2Rlcl9hbGxvY2F0ZV9vdXRwdXRfYnVmZmVyICovCi0gIHN0YXRlID0gZ3N0X3ZpZGVvX2RlY29kZXJfZ2V0X291dHB1dF9zdGF0ZSAoR1NUX1ZJREVPX0RFQ09ERVIgKHZ0ZGVjKSk7Ci0gIGlmIChzdGF0ZSA9PSBOVUxMKSB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUICh2dGRlYywgIk91dHB1dCBzdGF0ZSBub3QgY29uZmlndXJlZCwgcmVsZWFzZSBidWZmZXIiKTsKLSAgICAvKiByZWxlYXNlIGFzIHRoaXMgdXN1YWxseSBtZWFucyB0aGF0IHRoZSBiYXNlY2xhc3MgaXNuJ3QgcmVhZHkgdG8gZG8KLSAgICAgKiB0aGUgUW9TIHRoYXQgX2Ryb3AgcmVxdWlyZXMgYW5kIHdpbGwgbGVhZCB0byBhbiBhc3NlcnRpb24gd2l0aCB0aGUKLSAgICAgKiBzZWdtZW50LmZvcm1hdCBiZWluZyB1bmRlZmluZWQgKi8KLSAgICBnb3RvIHJlbGVhc2U7Ci0gIH0KLSAgYnVmID0KLSAgICAgIGdzdF9jb3JlX3ZpZGVvX2J1ZmZlcl9uZXcgKGltYWdlX2J1ZmZlciwgJnN0YXRlLT5pbmZvLAotICAgICAgdnRkZWMtPnRleHR1cmVfY2FjaGUgPT0gTlVMTCk7Ci0gIGdzdF92aWRlb19jb2RlY19zdGF0ZV91bnJlZiAoc3RhdGUpOwotCi0gIEdTVF9CVUZGRVJfUFRTIChidWYpID0gcHRzLnZhbHVlOwotICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpID0gZHVyYXRpb24udmFsdWU7Ci0gIGZyYW1lLT5vdXRwdXRfYnVmZmVyID0gYnVmOwogICBnX2FzeW5jX3F1ZXVlX3B1c2hfc29ydGVkICh2dGRlYy0+cmVvcmRlcl9xdWV1ZSwgZnJhbWUsCiAgICAgICBzb3J0X2ZyYW1lc19ieV9wdHMsIE5VTEwpOwotCi0gIHJldHVybjsKLQotZHJvcDoKLSAgR1NUX1dBUk5JTkdfT0JKRUNUICh2dGRlYywgIkZyYW1lIGRyb3BwZWQgJXAgJWQiLCBmcmFtZSwKLSAgICAgIGZyYW1lLT5kZWNvZGVfZnJhbWVfbnVtYmVyKTsKLSAgZ3N0X3ZpZGVvX2RlY29kZXJfZHJvcF9mcmFtZSAoR1NUX1ZJREVPX0RFQ09ERVIgKHZ0ZGVjKSwgZnJhbWUpOwotICByZXR1cm47Ci0KLXJlbGVhc2U6Ci0gIEdTVF9XQVJOSU5HX09CSkVDVCAodnRkZWMsICJGcmFtZSByZWxlYXNlZCAlcCAlZCIsIGZyYW1lLAotICAgICAgZnJhbWUtPmRlY29kZV9mcmFtZV9udW1iZXIpOwotICBnc3RfdmlkZW9fZGVjb2Rlcl9yZWxlYXNlX2ZyYW1lIChHU1RfVklERU9fREVDT0RFUiAodnRkZWMpLCBmcmFtZSk7Ci0gIHJldHVybjsKIH0KIAogc3RhdGljIEdzdEZsb3dSZXR1cm4KQEAgLTc4NSwxMyArNzc0LDExIEBACiAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7CiAgIEdzdFZpZGVvRGVjb2RlciAqZGVjb2RlciA9IEdTVF9WSURFT19ERUNPREVSICh2dGRlYyk7CiAKLSAgLyogRklYTUU6IEluc3RlYWQgb2YgdGhpcywgaW1wbGVtZW50IEdzdFZpZGVvRGVjb2Rlcjo6bmVnb3RpYXRlKCkgYW5kCi0gICAqIGp1c3QgY2FsbCBnc3RfdmlkZW9fZGVjb2Rlcl9uZWdvdGlhdGUoKQotICAgKi8KICAgLyogbmVnb3RpYXRlIG5vdyBzbyB0aGF0IHdlIGtub3cgd2hldGhlciB3ZSBuZWVkIHRvIHVzZSB0aGUgR0wgdXBsb2FkIG1ldGEgb3IKICAgICogbm90ICovCi0gIGlmIChnc3RfcGFkX2NoZWNrX3JlY29uZmlndXJlIChkZWNvZGVyLT5zcmNwYWQpKQorICBpZiAoZ3N0X3BhZF9jaGVja19yZWNvbmZpZ3VyZSAoZGVjb2Rlci0+c3JjcGFkKSkgewogICAgIGdzdF92aWRlb19kZWNvZGVyX25lZ290aWF0ZSAoZGVjb2Rlcik7CisgIH0KIAogICBpZiAoZHJhaW4pCiAgICAgVlREZWNvbXByZXNzaW9uU2Vzc2lvbldhaXRGb3JBc3luY2hyb25vdXNGcmFtZXMgKHZ0ZGVjLT5zZXNzaW9uKTsKQEAgLTgwMiw5ICs3ODksOSBAQAogICB3aGlsZSAoKGdfYXN5bmNfcXVldWVfbGVuZ3RoICh2dGRlYy0+cmVvcmRlcl9xdWV1ZSkgPj0KICAgICAgICAgICB2dGRlYy0+cmVvcmRlcl9xdWV1ZV9sZW5ndGgpIHx8IGRyYWluIHx8IGZsdXNoKSB7CiAgICAgZnJhbWUgPSAoR3N0VmlkZW9Db2RlY0ZyYW1lICopIGdfYXN5bmNfcXVldWVfdHJ5X3BvcCAodnRkZWMtPnJlb3JkZXJfcXVldWUpOwotICAgIGlmIChmcmFtZSAmJiB2dGRlYy0+dGV4dHVyZV9jYWNoZSAhPSBOVUxMKSB7CisgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5vdXRwdXRfYnVmZmVyICYmIHZ0ZGVjLT50ZXh0dXJlX2NhY2hlICE9IE5VTEwpIHsKICAgICAgIGZyYW1lLT5vdXRwdXRfYnVmZmVyID0KLSAgICAgICAgICBnc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX2dldF9nbF9idWZmZXIgKHZ0ZGVjLT50ZXh0dXJlX2NhY2hlLAorICAgICAgICAgIGdzdF92aWRlb190ZXh0dXJlX2NhY2hlX2dldF9nbF9idWZmZXIgKHZ0ZGVjLT50ZXh0dXJlX2NhY2hlLAogICAgICAgICAgIGZyYW1lLT5vdXRwdXRfYnVmZmVyKTsKICAgICAgIGlmICghZnJhbWUtPm91dHB1dF9idWZmZXIpCiAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHZ0ZGVjLCAiY291bGRuJ3QgZ2V0IHRleHR1cmVzIGZyb20gYnVmZmVyIik7CkBAIC04MTQsNyArODAxLDkgQEAKICAgICAgKiBleGFtcGxlKSBvciB3ZSdyZSBkcmFpbmluZy9mbHVzaGluZwogICAgICAqLwogICAgIGlmIChmcmFtZSkgewotICAgICAgaWYgKGZsdXNoKQorICAgICAgaWYgKGZsdXNoIHx8IGZyYW1lLT5mbGFncyAmIFZUREVDX0ZSQU1FX0ZMQUdfU0tJUCkKKyAgICAgICAgZ3N0X3ZpZGVvX2RlY29kZXJfcmVsZWFzZV9mcmFtZSAoZGVjb2RlciwgZnJhbWUpOworICAgICAgZWxzZSBpZiAoZnJhbWUtPmZsYWdzICYgVlRERUNfRlJBTUVfRkxBR19EUk9QKQogICAgICAgICBnc3RfdmlkZW9fZGVjb2Rlcl9kcm9wX2ZyYW1lIChkZWNvZGVyLCBmcmFtZSk7CiAgICAgICBlbHNlCiAgICAgICAgIHJldCA9IGdzdF92aWRlb19kZWNvZGVyX2ZpbmlzaF9mcmFtZSAoZGVjb2RlciwgZnJhbWUpOwpAQCAtOTg5LDYgKzk3OCwxOCBAQAogICBnc3RfdmlkZW9fZGVjb2Rlcl9zZXRfbGF0ZW5jeSAoR1NUX1ZJREVPX0RFQ09ERVIgKHZ0ZGVjKSwgbGF0ZW5jeSwgbGF0ZW5jeSk7CiB9CiAKK3N0YXRpYyB2b2lkCitnc3RfdnRkZWNfc2V0X2NvbnRleHQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RDb250ZXh0ICogY29udGV4dCkKK3sKKyAgR3N0VnRkZWMgKnZ0ZGVjID0gR1NUX1ZUREVDIChlbGVtZW50KTsKKworICBHU1RfSU5GT19PQkpFQ1QgKGVsZW1lbnQsICJzZXR0aW5nIGNvbnRleHQgJXMiLAorICAgICAgZ3N0X2NvbnRleHRfZ2V0X2NvbnRleHRfdHlwZSAoY29udGV4dCkpOworICBnc3RfZ2xfaGFuZGxlX3NldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0LAorICAgICAgJnZ0ZGVjLT5jdHhoLT5kaXNwbGF5LCAmdnRkZWMtPmN0eGgtPm90aGVyX2NvbnRleHQpOworICBHU1RfRUxFTUVOVF9DTEFTUyAoZ3N0X3Z0ZGVjX3BhcmVudF9jbGFzcyktPnNldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0KTsKK30KKwogI2lmbmRlZiBIQVZFX0lPUwogI2RlZmluZSBHU1RfVFlQRV9WVERFQ19IVyAgIChnc3RfdnRkZWNfaHdfZ2V0X3R5cGUoKSkKICNkZWZpbmUgR1NUX1ZUREVDX0hXKG9iaikgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfVlRERUNfSFcsR3N0VnRkZWNIdykpCmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS92dGRlYy5oIGIvc3lzL2FwcGxlbWVkaWEvdnRkZWMuaAppbmRleCA0YjljNzg4Li40NjM1NGQ4IDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS92dGRlYy5oCisrKyBiL3N5cy9hcHBsZW1lZGlhL3Z0ZGVjLmgKQEAgLTI1LDcgKzI1LDggQEAKICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9kZWNvZGVyLmg+CiAjaW5jbHVkZSA8Q29yZU1lZGlhL0NvcmVNZWRpYS5oPgogI2luY2x1ZGUgPFZpZGVvVG9vbGJveC9WaWRlb1Rvb2xib3guaD4KLSNpbmNsdWRlICJjb3JldmlkZW90ZXh0dXJlY2FjaGUuaCIKKyNpbmNsdWRlICJ2aWRlb3RleHR1cmVjYWNoZS5oIgorI2luY2x1ZGUgImdsY29udGV4dGhlbHBlci5oIgogCiBHX0JFR0lOX0RFQ0xTCiAKQEAgLTQxLDEyICs0MiwxNCBAQAogc3RydWN0IF9Hc3RWdGRlYwogewogICBHc3RWaWRlb0RlY29kZXIgYmFzZV92dGRlYzsKKyAgR3N0VmlkZW9Db2RlY1N0YXRlICppbnB1dF9zdGF0ZTsKICAgR3N0VmlkZW9JbmZvIHZpZGVvX2luZm87CiAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0X2Rlc2NyaXB0aW9uOwogICBWVERlY29tcHJlc3Npb25TZXNzaW9uUmVmIHNlc3Npb247CiAgIEdBc3luY1F1ZXVlICpyZW9yZGVyX3F1ZXVlOwogICBnaW50IHJlb3JkZXJfcXVldWVfbGVuZ3RoOwotICBHc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGUgKnRleHR1cmVfY2FjaGU7CisgIEdzdFZpZGVvVGV4dHVyZUNhY2hlICp0ZXh0dXJlX2NhY2hlOworICBHc3RHTENvbnRleHRIZWxwZXIgKmN0eGg7CiAKICAgZ2Jvb2xlYW4gcmVxdWlyZV9oYXJkd2FyZTsKIH07CmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS92dGVuYy5jIGIvc3lzL2FwcGxlbWVkaWEvdnRlbmMuYwppbmRleCBmMGFmNzUxLi5kZTYwMjcyIDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS92dGVuYy5jCisrKyBiL3N5cy9hcHBsZW1lZGlhL3Z0ZW5jLmMKQEAgLTEzNiw4ICsxMzYsMTMgQEAKICAgICBjb25zdCB2b2lkICpwbGFuZUFkZHJlc3Nlc1tdKTsKICNlbmRpZgogCisjaWZkZWYgSEFWRV9JT1MKIHN0YXRpYyBHc3RTdGF0aWNDYXBzIHNpbmtfY2FwcyA9CiBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJ7IE5WMTIsIEk0MjAgfSIpKTsKKyNlbHNlCitzdGF0aWMgR3N0U3RhdGljQ2FwcyBzaW5rX2NhcHMgPQorR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFICgieyBVWVZZLCBOVjEyLCBJNDIwIH0iKSk7CisjZW5kaWYKIAogc3RhdGljIHZvaWQKIGdzdF92dGVuY19iYXNlX2luaXQgKEdzdFZURW5jQ2xhc3MgKiBrbGFzcykKQEAgLTExMDcsOCArMTExMiw3IEBACiAgICAgICBnb3RvIGN2X2Vycm9yOwogICAgIH0KIAotICAgIG91dGJ1ZiA9Ci0gICAgICAgIGdzdF9jb3JlX3ZpZGVvX2J1ZmZlcl9uZXcgKChDVkJ1ZmZlclJlZikgcGJ1ZiwgJnNlbGYtPnZpZGVvX2luZm8sIFRSVUUpOworICAgIG91dGJ1ZiA9IGdzdF9jb3JlX3ZpZGVvX2J1ZmZlcl9uZXcgKChDVkJ1ZmZlclJlZikgcGJ1ZiwgJnNlbGYtPnZpZGVvX2luZm8pOwogICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJm91dGZyYW1lLCAmc2VsZi0+dmlkZW9faW5mbywgb3V0YnVmLAogICAgICAgICAgICAgR1NUX01BUF9XUklURSkpIHsKICAgICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJmluZnJhbWUpOwpAQCAtMTE2NCw2ICsxMTY4LDkgQEAKICAgICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX05WMTI6CiAgICAgICAgICAgcGl4ZWxfZm9ybWF0X3R5cGUgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZTsKICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1VZVlk6CisgICAgICAgICAgcGl4ZWxfZm9ybWF0X3R5cGUgPSBrQ1ZQaXhlbEZvcm1hdFR5cGVfNDIyWXBDYkNyODsKKyAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICBnc3RfdnRlbmNfZnJhbWVfZnJlZSAodmZyYW1lKTsKICAgICAgICAgICBnb3RvIGN2X2Vycm9yOwpAQCAtMTI4Nyw3ICsxMjk0LDcgQEAKIAogICAvKiBXZSBhcmUgZGVhbGluZyB3aXRoIGJsb2NrIGJ1ZmZlcnMgaGVyZSwgc28gd2UgZG9uJ3QgbmVlZAogICAgKiB0byBlbmFibGUgdGhlIHVzZSBvZiB0aGUgdmlkZW8gbWV0YSBBUEkgb24gdGhlIGNvcmUgbWVkaWEgYnVmZmVyICovCi0gIGZyYW1lLT5vdXRwdXRfYnVmZmVyID0gZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX25ldyAoc2FtcGxlQnVmZmVyLCBGQUxTRSwgVFJVRSk7CisgIGZyYW1lLT5vdXRwdXRfYnVmZmVyID0gZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX25ldyAoc2FtcGxlQnVmZmVyLCBGQUxTRSk7CiAKIGJlYWNoOgogICAvKiBuZWVkZWQgYW55d2F5IHNvIHRoZSBmcmFtZSB3aWxsIGJlIHJlbGVhc2VkICovCmRpZmYgLS1naXQgYS9zeXMvYXZjL01ha2VmaWxlLmluIGIvc3lzL2F2Yy9NYWtlZmlsZS5pbgppbmRleCA3MjJkZTVmLi4wY2RlMDEyIDEwMDY0NAotLS0gYS9zeXMvYXZjL01ha2VmaWxlLmluCisrKyBiL3N5cy9hdmMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvYmx1ZXovTWFrZWZpbGUuaW4gYi9zeXMvYmx1ZXovTWFrZWZpbGUuaW4KaW5kZXggNmRiNjY5Mi4uNjIxN2FmMyAxMDA2NDQKLS0tIGEvc3lzL2JsdWV6L01ha2VmaWxlLmluCisrKyBiL3N5cy9ibHVlei9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yODAsNiArMjc5LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTcsNiArMzE4LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjUsNyArMzI4LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ0LDggKzM0Niw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjIsMTYgKzM2NSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTcsNiArNDAxLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIyLDYgKzQyOCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMyw2ICs1MzEsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM2LDggKzU0NSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1Myw2ICs1NjAsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjEwLDE2ICs2MTksMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzEsNiArNjgyLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4MSw2ICs2OTMsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTAsNiArNzAzLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNyw3ICs3NDIsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3N5cy9ibHVlei9nc3RhMmRwc2luay5jIGIvc3lzL2JsdWV6L2dzdGEyZHBzaW5rLmMKaW5kZXggN2I5ZjkyMi4uNDI0YjU2YyAxMDA2NDQKLS0tIGEvc3lzL2JsdWV6L2dzdGEyZHBzaW5rLmMKKysrIGIvc3lzL2JsdWV6L2dzdGEyZHBzaW5rLmMKQEAgLTE1Nyw4ICsxNTcsNyBAQAogICAgICAgaWYgKHNlbGYtPnNpbmsgIT0gTlVMTCkKICAgICAgICAgZ3N0X2F2ZHRwX3Npbmtfc2V0X2RldmljZSAoc2VsZi0+c2luaywgZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSkpOwogCi0gICAgICBpZiAoc2VsZi0+ZGV2aWNlICE9IE5VTEwpCi0gICAgICAgIGdfZnJlZSAoc2VsZi0+ZGV2aWNlKTsKKyAgICAgIGdfZnJlZSAoc2VsZi0+ZGV2aWNlKTsKICAgICAgIHNlbGYtPmRldmljZSA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOwogICAgICAgYnJlYWs7CiAKQEAgLTE2Niw4ICsxNjUsNyBAQAogICAgICAgaWYgKHNlbGYtPnNpbmsgIT0gTlVMTCkKICAgICAgICAgZ3N0X2F2ZHRwX3Npbmtfc2V0X3RyYW5zcG9ydCAoc2VsZi0+c2luaywgZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSkpOwogCi0gICAgICBpZiAoc2VsZi0+dHJhbnNwb3J0ICE9IE5VTEwpCi0gICAgICAgIGdfZnJlZSAoc2VsZi0+dHJhbnNwb3J0KTsKKyAgICAgIGdfZnJlZSAoc2VsZi0+dHJhbnNwb3J0KTsKICAgICAgIHNlbGYtPnRyYW5zcG9ydCA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOwogICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL3N5cy9ibHVlei9nc3RhdmR0cHNpbmsuYyBiL3N5cy9ibHVlei9nc3RhdmR0cHNpbmsuYwppbmRleCA3MGRjNzQyLi4wZjcyYTc0IDEwMDY0NAotLS0gYS9zeXMvYmx1ZXovZ3N0YXZkdHBzaW5rLmMKKysrIGIvc3lzL2JsdWV6L2dzdGF2ZHRwc2luay5jCkBAIC00NTEsOCArNDUxLDcgQEAKIHZvaWQKIGdzdF9hdmR0cF9zaW5rX3NldF9kZXZpY2UgKEdzdEF2ZHRwU2luayAqIHNlbGYsIGNvbnN0IGdjaGFyICogZGV2KQogewotICBpZiAoc2VsZi0+Y29ubi5kZXZpY2UgIT0gTlVMTCkKLSAgICBnX2ZyZWUgKHNlbGYtPmNvbm4uZGV2aWNlKTsKKyAgZ19mcmVlIChzZWxmLT5jb25uLmRldmljZSk7CiAKICAgR1NUX0xPR19PQkpFQ1QgKHNlbGYsICJTZXR0aW5nIGRldmljZTogJXMiLCBkZXYpOwogICBzZWxmLT5jb25uLmRldmljZSA9IGdfc3RyZHVwIChkZXYpOwpAQCAtNDYxLDggKzQ2MCw3IEBACiB2b2lkCiBnc3RfYXZkdHBfc2lua19zZXRfdHJhbnNwb3J0IChHc3RBdmR0cFNpbmsgKiBzZWxmLCBjb25zdCBnY2hhciAqIHRyYW5zKQogewotICBpZiAoc2VsZi0+Y29ubi50cmFuc3BvcnQgIT0gTlVMTCkKLSAgICBnX2ZyZWUgKHNlbGYtPmNvbm4udHJhbnNwb3J0KTsKKyAgZ19mcmVlIChzZWxmLT5jb25uLnRyYW5zcG9ydCk7CiAKICAgR1NUX0xPR19PQkpFQ1QgKHNlbGYsICJTZXR0aW5nIHRyYW5zcG9ydDogJXMiLCB0cmFucyk7CiAgIHNlbGYtPmNvbm4udHJhbnNwb3J0ID0gZ19zdHJkdXAgKHRyYW5zKTsKZGlmZiAtLWdpdCBhL3N5cy9ibHVlei9nc3RhdmR0cHV0aWwuYyBiL3N5cy9ibHVlei9nc3RhdmR0cHV0aWwuYwppbmRleCBhNDM1YzZhLi5lZmM0ZjQyIDEwMDY0NAotLS0gYS9zeXMvYmx1ZXovZ3N0YXZkdHB1dGlsLmMKKysrIGIvc3lzL2JsdWV6L2dzdGF2ZHRwdXRpbC5jCkBAIC0yMTMsOCArMjEzLDcgQEAKIHZvaWQKIGdzdF9hdmR0cF9jb25uZWN0aW9uX3NldF9kZXZpY2UgKEdzdEF2ZHRwQ29ubmVjdGlvbiAqIGNvbm4sIGNvbnN0IGNoYXIgKmRldmljZSkKIHsKLSAgaWYgKGNvbm4tPmRldmljZSkKLSAgICBnX2ZyZWUgKGNvbm4tPmRldmljZSk7CisgIGdfZnJlZSAoY29ubi0+ZGV2aWNlKTsKIAogICBjb25uLT5kZXZpY2UgPSBnX3N0cmR1cCAoZGV2aWNlKTsKIH0KQEAgLTIyMyw4ICsyMjIsNyBAQAogZ3N0X2F2ZHRwX2Nvbm5lY3Rpb25fc2V0X3RyYW5zcG9ydCAoR3N0QXZkdHBDb25uZWN0aW9uICogY29ubiwKICAgICBjb25zdCBjaGFyICp0cmFuc3BvcnQpCiB7Ci0gIGlmIChjb25uLT50cmFuc3BvcnQpCi0gICAgZ19mcmVlIChjb25uLT50cmFuc3BvcnQpOworICBnX2ZyZWUgKGNvbm4tPnRyYW5zcG9ydCk7CiAKICAgY29ubi0+dHJhbnNwb3J0ID0gZ19zdHJkdXAgKHRyYW5zcG9ydCk7CiB9CmRpZmYgLS1naXQgYS9zeXMvZDNkdmlkZW9zaW5rL01ha2VmaWxlLmluIGIvc3lzL2QzZHZpZGVvc2luay9NYWtlZmlsZS5pbgppbmRleCBiMzcyODhhLi41NmZlMzk3IDEwMDY0NAotLS0gYS9zeXMvZDNkdmlkZW9zaW5rL01ha2VmaWxlLmluCisrKyBiL3N5cy9kM2R2aWRlb3NpbmsvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvZGVja2xpbmsvTWFrZWZpbGUuaW4gYi9zeXMvZGVja2xpbmsvTWFrZWZpbGUuaW4KaW5kZXggYTUyMDU0NS4uOWQzNTVmZCAxMDA2NDQKLS0tIGEvc3lzL2RlY2tsaW5rL01ha2VmaWxlLmluCisrKyBiL3N5cy9kZWNrbGluay9NYWtlZmlsZS5pbgpAQCAtMTI1LDE2ICsxMjUsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yOTYsNiArMjk1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMzMsNiArMzM0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zNDEsNyArMzQ0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzYwLDggKzM2Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNzgsMTYgKzM4MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MTMsNiArNDE3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDM4LDYgKzQ0NCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUzOSw2ICs1NDcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTUyLDggKzU2MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU2OSw2ICs1NzYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjI2LDE2ICs2MzUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02ODcsNiArNjk4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY5Nyw2ICs3MDksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MDYsNiArNzE5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc0Myw3ICs3NTgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3N5cy9kZWNrbGluay9nc3RkZWNrbGluay5jcHAgYi9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmsuY3BwCmluZGV4IGViMzliZGIuLjY0NjM3ZjEgMTAwNjQ0Ci0tLSBhL3N5cy9kZWNrbGluay9nc3RkZWNrbGluay5jcHAKKysrIGIvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rLmNwcApAQCAtMzE2LDI4ICszMTYsNTMgQEAKIH0KIAogc3RhdGljIEdzdFN0cnVjdHVyZSAqCi1nc3RfZGVja2xpbmtfbW9kZV9nZXRfc3RydWN0dXJlIChHc3REZWNrbGlua01vZGVFbnVtIGUpCitnc3RfZGVja2xpbmtfbW9kZV9nZXRfc3RydWN0dXJlIChHc3REZWNrbGlua01vZGVFbnVtIGUsIEJNRFBpeGVsRm9ybWF0IGYpCiB7CiAgIGNvbnN0IEdzdERlY2tsaW5rTW9kZSAqbW9kZSA9ICZtb2Rlc1tlXTsKLQotICByZXR1cm4gZ3N0X3N0cnVjdHVyZV9uZXcgKCJ2aWRlby94LXJhdyIsCi0gICAgICAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgIlVZVlkiLAorICBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3Rfc3RydWN0dXJlX25ldyAoInZpZGVvL3gtcmF3IiwKICAgICAgICJ3aWR0aCIsIEdfVFlQRV9JTlQsIG1vZGUtPndpZHRoLAogICAgICAgImhlaWdodCIsIEdfVFlQRV9JTlQsIG1vZGUtPmhlaWdodCwKLSAgICAgICJmcmFtZXJhdGUiLCBHU1RfVFlQRV9GUkFDVElPTiwgbW9kZS0+ZnBzX24sIG1vZGUtPmZwc19kLAotICAgICAgImludGVybGFjZS1tb2RlIiwgR19UWVBFX1NUUklORywKLSAgICAgIG1vZGUtPmludGVybGFjZWQgPyAiaW50ZXJsZWF2ZWQiIDogInByb2dyZXNzaXZlIiwgInBpeGVsLWFzcGVjdC1yYXRpbyIsCi0gICAgICBHU1RfVFlQRV9GUkFDVElPTiwgbW9kZS0+cGFyX24sIG1vZGUtPnBhcl9kLCAiY29sb3JpbWV0cnkiLCBHX1RZUEVfU1RSSU5HLAotICAgICAgbW9kZS0+Y29sb3JpbWV0cnksICJjaHJvbWEtc2l0ZSIsIEdfVFlQRV9TVFJJTkcsICJtcGVnMiIsIE5VTEwpOworICAgICAgInBpeGVsLWFzcGVjdC1yYXRpbyIsIEdTVF9UWVBFX0ZSQUNUSU9OLCBtb2RlLT5wYXJfbiwgbW9kZS0+cGFyX2QsCisgICAgICAiaW50ZXJsYWNlLW1vZGUiLCBHX1RZUEVfU1RSSU5HLCBtb2RlLT5pbnRlcmxhY2VkID8gImludGVybGVhdmVkIiA6ICJwcm9ncmVzc2l2ZSIsCisgICAgICAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT04sIG1vZGUtPmZwc19uLCBtb2RlLT5mcHNfZCwgTlVMTCk7CisKKyAgc3dpdGNoIChmKSB7CisgICAgY2FzZSBibWRGb3JtYXQ4Qml0WVVWOiAvKiAnMnZ1eScgKi8KKyAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgIlVZVlkiLAorICAgICAgICAgICJjb2xvcmltZXRyeSIsIEdfVFlQRV9TVFJJTkcsIG1vZGUtPmNvbG9yaW1ldHJ5LAorICAgICAgICAgICJjaHJvbWEtc2l0ZSIsIEdfVFlQRV9TVFJJTkcsICJtcGVnMiIsIE5VTEwpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBibWRGb3JtYXQxMEJpdFlVVjogLyogJ3YyMTAnICovCisgICAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgImZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJ2MjEwIiwgTlVMTCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIGJtZEZvcm1hdDhCaXRBUkdCOiAvKiAnQVJHQicgKi8KKyAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgIkFSR0IiLCBOVUxMKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgYm1kRm9ybWF0OEJpdEJHUkE6IC8qICdCR1JBJyAqLworICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCAiQkdSQSIsIE5VTEwpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBibWRGb3JtYXQxMEJpdFJHQjogLyogJ3IyMTAnIEJpZy1lbmRpYW4gUkdCIDEwLWJpdCBwZXIgY29tcG9uZW50IHdpdGggU01QVEUgdmlkZW8gbGV2ZWxzICg2NC05NjApLiBQYWNrZWQgYXMgMjoxMDoxMDoxMCAqLworICAgIGNhc2UgYm1kRm9ybWF0MTJCaXRSR0I6IC8qICdSMTJCJyBCaWctZW5kaWFuIFJHQiAxMi1iaXQgcGVyIGNvbXBvbmVudCB3aXRoIGZ1bGwgcmFuZ2UgKDAtNDA5NSkuIFBhY2tlZCBhcyAxMi1iaXQgcGVyIGNvbXBvbmVudCAqLworICAgIGNhc2UgYm1kRm9ybWF0MTJCaXRSR0JMRTogLyogJ1IxMkwnIExpdHRsZS1lbmRpYW4gUkdCIDEyLWJpdCBwZXIgY29tcG9uZW50IHdpdGggZnVsbCByYW5nZSAoMC00MDk1KS4gUGFja2VkIGFzIDEyLWJpdCBwZXIgY29tcG9uZW50ICovCisgICAgY2FzZSBibWRGb3JtYXQxMEJpdFJHQlhMRTogLyogJ1IxMGwnIExpdHRsZS1lbmRpYW4gMTAtYml0IFJHQiB3aXRoIFNNUFRFIHZpZGVvIGxldmVscyAoNjQtOTQwKSAqLworICAgIGNhc2UgYm1kRm9ybWF0MTBCaXRSR0JYOiAvKiAnUjEwYicgQmlnLWVuZGlhbiAxMC1iaXQgUkdCIHdpdGggU01QVEUgdmlkZW8gbGV2ZWxzICg2NC05NDApICovCisgICAgZGVmYXVsdDoKKyAgICAgIEdTVF9XQVJOSU5HICgiZm9ybWF0IG5vdCBzdXBwb3J0ZWQgJWQiLCBmKTsKKyAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZSAocyk7CisgICAgICBzID0gTlVMTDsKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmV0dXJuIHM7CiB9CiAKIEdzdENhcHMgKgotZ3N0X2RlY2tsaW5rX21vZGVfZ2V0X2NhcHMgKEdzdERlY2tsaW5rTW9kZUVudW0gZSkKK2dzdF9kZWNrbGlua19tb2RlX2dldF9jYXBzIChHc3REZWNrbGlua01vZGVFbnVtIGUsIEJNRFBpeGVsRm9ybWF0IGYpCiB7CiAgIEdzdENhcHMgKmNhcHM7CiAKICAgY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eSAoKTsKLSAgZ3N0X2NhcHNfYXBwZW5kX3N0cnVjdHVyZSAoY2FwcywgZ3N0X2RlY2tsaW5rX21vZGVfZ2V0X3N0cnVjdHVyZSAoZSkpOworICBnc3RfY2Fwc19hcHBlbmRfc3RydWN0dXJlIChjYXBzLCBnc3RfZGVja2xpbmtfbW9kZV9nZXRfc3RydWN0dXJlIChlLCBmKSk7CiAKICAgcmV0dXJuIGNhcHM7CiB9CkBAIC0zNTEsMTMgKzM3NiwzMyBAQAogCiAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7CiAgIGZvciAoaSA9IDE7IGkgPCAoaW50KSBHX05fRUxFTUVOVFMgKG1vZGVzKTsgaSsrKSB7Ci0gICAgcyA9IGdzdF9kZWNrbGlua19tb2RlX2dldF9zdHJ1Y3R1cmUgKChHc3REZWNrbGlua01vZGVFbnVtKSBpKTsKKyAgICBzID0gZ3N0X2RlY2tsaW5rX21vZGVfZ2V0X3N0cnVjdHVyZSAoKEdzdERlY2tsaW5rTW9kZUVudW0pIGksIGJtZEZvcm1hdDhCaXRZVVYpOworICAgIGdzdF9jYXBzX2FwcGVuZF9zdHJ1Y3R1cmUgKGNhcHMsIHMpOworICAgIHMgPSBnc3RfZGVja2xpbmtfbW9kZV9nZXRfc3RydWN0dXJlICgoR3N0RGVja2xpbmtNb2RlRW51bSkgaSwgYm1kRm9ybWF0OEJpdEFSR0IpOwogICAgIGdzdF9jYXBzX2FwcGVuZF9zdHJ1Y3R1cmUgKGNhcHMsIHMpOwogICB9CiAKICAgcmV0dXJuIGNhcHM7CiB9CiAKK2NvbnN0IEdzdERlY2tsaW5rTW9kZSAqCitnc3RfZGVja2xpbmtfZmluZF9tb2RlX2Zvcl9jYXBzIChHc3RDYXBzICogY2FwcykKK3sKKyAgaW50IGk7CisgIEdzdENhcHMgKm1vZGVfY2FwczsKKworICBmb3IgKGkgPSAxOyBpIDwgKGludCkgR19OX0VMRU1FTlRTIChtb2Rlcyk7IGkrKykgeworICAgIG1vZGVfY2FwcyA9IGdzdF9kZWNrbGlua19tb2RlX2dldF9jYXBzICgoR3N0RGVja2xpbmtNb2RlRW51bSkgaSwgYm1kRm9ybWF0OEJpdFlVVik7CisgICAgaWYgKGdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKGNhcHMsIG1vZGVfY2FwcykpIHsKKyAgICAgIGdzdF9jYXBzX3VucmVmIChtb2RlX2NhcHMpOworICAgICAgcmV0dXJuIGdzdF9kZWNrbGlua19nZXRfbW9kZSAoKEdzdERlY2tsaW5rTW9kZUVudW0pIGkpOworICAgIH0KKyAgICBnc3RfY2Fwc191bnJlZiAobW9kZV9jYXBzKTsKKyAgfQorCisgIHJldHVybiBOVUxMOworfQorCiAjZGVmaW5lIEdTVF9UWVBFX0RFQ0tMSU5LX0NMT0NLIFwKICAgKGdzdF9kZWNrbGlua19jbG9ja19nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfREVDS0xJTktfQ0xPQ0sob2JqKSBcCkBAIC00NTIsMTkgKzQ5NywyNSBAQAogCiAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRQogICAgICAgVmlkZW9JbnB1dEZvcm1hdENoYW5nZWQgKEJNRFZpZGVvSW5wdXRGb3JtYXRDaGFuZ2VkRXZlbnRzLAotICAgICAgSURlY2tMaW5rRGlzcGxheU1vZGUgKiBtb2RlLCBCTUREZXRlY3RlZFZpZGVvSW5wdXRGb3JtYXRGbGFncykKKyAgICAgIElEZWNrTGlua0Rpc3BsYXlNb2RlICogbW9kZSwgQk1ERGV0ZWN0ZWRWaWRlb0lucHV0Rm9ybWF0RmxhZ3MgZm9ybWF0RmxhZ3MpCiAgIHsKKyAgICBCTURQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCA9IGJtZEZvcm1hdDhCaXRZVVY7CisKICAgICBHU1RfSU5GTyAoIlZpZGVvIGlucHV0IGZvcm1hdCBjaGFuZ2VkIik7CiAKKyAgICBpZiAoZm9ybWF0RmxhZ3MgJiBibWREZXRlY3RlZFZpZGVvSW5wdXRSR0I0NDQpCisgICAgICBwaXhlbEZvcm1hdCA9IGJtZEZvcm1hdDhCaXRBUkdCOworCiAgICAgZ19tdXRleF9sb2NrICgmbV9pbnB1dC0+bG9jayk7CiAgICAgbV9pbnB1dC0+aW5wdXQtPlBhdXNlU3RyZWFtcyAoKTsKICAgICBtX2lucHV0LT5pbnB1dC0+RW5hYmxlVmlkZW9JbnB1dCAobW9kZS0+R2V0RGlzcGxheU1vZGUgKCksCi0gICAgICAgIGJtZEZvcm1hdDhCaXRZVVYsIGJtZFZpZGVvSW5wdXRFbmFibGVGb3JtYXREZXRlY3Rpb24pOworICAgICAgICBwaXhlbEZvcm1hdCwgYm1kVmlkZW9JbnB1dEVuYWJsZUZvcm1hdERldGVjdGlvbik7CiAgICAgbV9pbnB1dC0+aW5wdXQtPkZsdXNoU3RyZWFtcyAoKTsKICAgICBtX2lucHV0LT5pbnB1dC0+U3RhcnRTdHJlYW1zICgpOwogICAgIG1faW5wdXQtPm1vZGUgPQogICAgICAgICBnc3RfZGVja2xpbmtfZ2V0X21vZGUgKGdzdF9kZWNrbGlua19nZXRfbW9kZV9lbnVtX2Zyb21fYm1kCiAgICAgICAgIChtb2RlLT5HZXREaXNwbGF5TW9kZSAoKSkpOworICAgIG1faW5wdXQtPmZvcm1hdCA9IHBpeGVsRm9ybWF0OwogICAgIGdfbXV0ZXhfdW5sb2NrICgmbV9pbnB1dC0+bG9jayk7CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL3N5cy9kZWNrbGluay9nc3RkZWNrbGluay5oIGIvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rLmgKaW5kZXggMzUzNzY5Zi4uNmMzMmZlZSAxMDA2NDQKLS0tIGEvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rLmgKKysrIGIvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rLmgKQEAgLTEyNiw3ICsxMjYsNyBAQAogY29uc3QgR3N0RGVja2xpbmtNb2RlICogZ3N0X2RlY2tsaW5rX2dldF9tb2RlIChHc3REZWNrbGlua01vZGVFbnVtIGUpOwogY29uc3QgR3N0RGVja2xpbmtNb2RlRW51bSBnc3RfZGVja2xpbmtfZ2V0X21vZGVfZW51bV9mcm9tX2JtZCAoQk1ERGlzcGxheU1vZGUgbW9kZSk7CiBjb25zdCBCTURWaWRlb0Nvbm5lY3Rpb24gZ3N0X2RlY2tsaW5rX2dldF9jb25uZWN0aW9uIChHc3REZWNrbGlua0Nvbm5lY3Rpb25FbnVtIGUpOwotR3N0Q2FwcyAqIGdzdF9kZWNrbGlua19tb2RlX2dldF9jYXBzIChHc3REZWNrbGlua01vZGVFbnVtIGUpOworR3N0Q2FwcyAqIGdzdF9kZWNrbGlua19tb2RlX2dldF9jYXBzIChHc3REZWNrbGlua01vZGVFbnVtIGUsIEJNRFBpeGVsRm9ybWF0IGYpOwogR3N0Q2FwcyAqIGdzdF9kZWNrbGlua19tb2RlX2dldF90ZW1wbGF0ZV9jYXBzICh2b2lkKTsKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdERlY2tsaW5rT3V0cHV0IEdzdERlY2tsaW5rT3V0cHV0OwpAQCAtMTcyLDYgKzE3Miw3IEBACiAgIHZvaWQgKCpnb3RfdmlkZW9fZnJhbWUpIChHc3RFbGVtZW50ICp2aWRlb3NyYywgSURlY2tMaW5rVmlkZW9JbnB1dEZyYW1lICogZnJhbWUsIEdzdERlY2tsaW5rTW9kZUVudW0gbW9kZSwgR3N0Q2xvY2tUaW1lIGNhcHR1cmVfdGltZSwgR3N0Q2xvY2tUaW1lIGNhcHR1cmVfZHVyYXRpb24pOwogICAvKiBDb25maWd1cmVkIG1vZGUgb3IgTlVMTCAqLwogICBjb25zdCBHc3REZWNrbGlua01vZGUgKm1vZGU7CisgIEJNRFBpeGVsRm9ybWF0IGZvcm1hdDsKIAogICAvKiBTZXQgYnkgdGhlIGF1ZGlvIHNvdXJjZSAqLwogICB2b2lkICgqZ290X2F1ZGlvX3BhY2tldCkgKEdzdEVsZW1lbnQgKnZpZGVvc3JjLCBJRGVja0xpbmtBdWRpb0lucHV0UGFja2V0ICogcGFja2V0LCBHc3RDbG9ja1RpbWUgY2FwdHVyZV90aW1lKTsKQEAgLTE5Miw0ICsxOTMsNiBAQAogR3N0RGVja2xpbmtJbnB1dCAqICBnc3RfZGVja2xpbmtfYWNxdWlyZV9udGhfaW5wdXQgKGdpbnQgbiwgR3N0RWxlbWVudCAqIHNyYywgZ2Jvb2xlYW4gaXNfYXVkaW8pOwogdm9pZCAgICAgICAgICAgICAgICBnc3RfZGVja2xpbmtfcmVsZWFzZV9udGhfaW5wdXQgKGdpbnQgbiwgR3N0RWxlbWVudCAqIHNyYywgZ2Jvb2xlYW4gaXNfYXVkaW8pOwogCitjb25zdCBHc3REZWNrbGlua01vZGUgKiBnc3RfZGVja2xpbmtfZmluZF9tb2RlX2Zvcl9jYXBzIChHc3RDYXBzICogY2Fwcyk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rYXVkaW9zcmMuY3BwIGIvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rYXVkaW9zcmMuY3BwCmluZGV4IGE5Mjg0ZDEuLjlhNzAxZWUgMTAwNjQ0Ci0tLSBhL3N5cy9kZWNrbGluay9nc3RkZWNrbGlua2F1ZGlvc3JjLmNwcAorKysgYi9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmthdWRpb3NyYy5jcHAKQEAgLTU1Niw5ICs1NTYsMTAgQEAKICAgICAgICAgICBzZWxmLT5uZXh0X29mZnNldCwgc3RhcnRfb2Zmc2V0KTsKICAgICBHU1RfQlVGRkVSX0ZMQUdfU0VUICgqYnVmZmVyLCBHU1RfQlVGRkVSX0ZMQUdfRElTQ09OVCk7CiAgICAgc2VsZi0+bmV4dF9vZmZzZXQgPSBlbmRfb2Zmc2V0OworICAgIC8vIEdvdCBhIGRpc2NvbnQgYW5kIGFkanVzdGVkLCByZXNldCB0aGUgZGlzY29udF90aW1lIG1hcmtlci4KKyAgICBzZWxmLT5kaXNjb250X3RpbWUgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICB9IGVsc2UgewogICAgIC8vIE5vIGRpc2NvbnQsIGp1c3Qga2VlcCBjb3VudGluZwotICAgIHNlbGYtPmRpc2NvbnRfdGltZSA9IEdTVF9DTE9DS19USU1FX05PTkU7CiAgICAgdGltZXN0YW1wID0KICAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlIChzZWxmLT5uZXh0X29mZnNldCwgR1NUX1NFQ09ORCwgc2VsZi0+aW5mby5yYXRlKTsKICAgICBzZWxmLT5uZXh0X29mZnNldCArPSBzYW1wbGVfY291bnQ7CkBAIC02ODgsOCArNjg5LDcgQEAKIHsKICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlN0b3BwaW5nIik7CiAKLSAgZ19xdWV1ZV9mb3JlYWNoICgmc2VsZi0+Y3VycmVudF9wYWNrZXRzLCAoR0Z1bmMpIGNhcHR1cmVfcGFja2V0X2ZyZWUsCi0gICAgICBOVUxMKTsKKyAgZ19xdWV1ZV9mb3JlYWNoICgmc2VsZi0+Y3VycmVudF9wYWNrZXRzLCAoR0Z1bmMpIGNhcHR1cmVfcGFja2V0X2ZyZWUsIE5VTEwpOwogICBnX3F1ZXVlX2NsZWFyICgmc2VsZi0+Y3VycmVudF9wYWNrZXRzKTsKIAogICBpZiAoc2VsZi0+aW5wdXQgJiYgc2VsZi0+aW5wdXQtPmF1ZGlvX2VuYWJsZWQpIHsKZGlmZiAtLWdpdCBhL3N5cy9kZWNrbGluay9nc3RkZWNrbGlua3ZpZGVvc2luay5jcHAgYi9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmt2aWRlb3NpbmsuY3BwCmluZGV4IGM1MGQwOWIuLmVlYmVmZjMgMTAwNjQ0Ci0tLSBhL3N5cy9kZWNrbGluay9nc3RkZWNrbGlua3ZpZGVvc2luay5jcHAKKysrIGIvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rdmlkZW9zaW5rLmNwcApAQCAtMjkyLDggKzI5MiwxNyBAQAogICBzZWxmLT5vdXRwdXQtPm91dHB1dC0+U2V0U2NoZWR1bGVkRnJhbWVDb21wbGV0aW9uQ2FsbGJhY2sgKG5ldwogICAgICAgR1N0cmVhbWVyVmlkZW9PdXRwdXRDYWxsYmFjayAoc2VsZikpOwogCi0gIG1vZGUgPSBnc3RfZGVja2xpbmtfZ2V0X21vZGUgKHNlbGYtPm1vZGUpOwotICBnX2Fzc2VydCAobW9kZSAhPSBOVUxMKTsKKyAgaWYgKHNlbGYtPm1vZGUgPT0gR1NUX0RFQ0tMSU5LX01PREVfQVVUTykgeworICAgIG1vZGUgPSBnc3RfZGVja2xpbmtfZmluZF9tb2RlX2Zvcl9jYXBzIChjYXBzKTsKKyAgICBpZiAobW9kZSA9PSBOVUxMKSB7CisgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNlbGYsCisgICAgICAgICAgIkZhaWxlZCB0byBmaW5kIGNvbXBhdGlibGUgbW9kZSBmb3IgY2FwcyAgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBtb2RlID0gZ3N0X2RlY2tsaW5rX2dldF9tb2RlIChzZWxmLT5tb2RlKTsKKyAgICBnX2Fzc2VydCAobW9kZSAhPSBOVUxMKTsKKyAgfTsKIAogICByZXQgPSBzZWxmLT5vdXRwdXQtPm91dHB1dC0+RW5hYmxlVmlkZW9PdXRwdXQgKG1vZGUtPm1vZGUsCiAgICAgICBibWRWaWRlb091dHB1dEZsYWdEZWZhdWx0KTsKQEAgLTMxOCw3ICszMjcsMTAgQEAKICAgR3N0RGVja2xpbmtWaWRlb1NpbmsgKnNlbGYgPSBHU1RfREVDS0xJTktfVklERU9fU0lOS19DQVNUIChic2luayk7CiAgIEdzdENhcHMgKm1vZGVfY2FwcywgKmNhcHM7CiAKLSAgbW9kZV9jYXBzID0gZ3N0X2RlY2tsaW5rX21vZGVfZ2V0X2NhcHMgKHNlbGYtPm1vZGUpOworICBpZiAoc2VsZi0+bW9kZSA9PSBHU1RfREVDS0xJTktfTU9ERV9BVVRPKQorICAgIG1vZGVfY2FwcyA9IGdzdF9kZWNrbGlua19tb2RlX2dldF90ZW1wbGF0ZV9jYXBzICgpOworICBlbHNlCisgICAgbW9kZV9jYXBzID0gZ3N0X2RlY2tsaW5rX21vZGVfZ2V0X2NhcHMgKHNlbGYtPm1vZGUsIGJtZEZvcm1hdDhCaXRZVVYpOwogICBtb2RlX2NhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChtb2RlX2NhcHMpOwogICAvKiBGb3Igb3V0cHV0IHdlIHN1cHBvcnQgYW55IGZyYW1lcmF0ZSBhbmQgb25seSByZWFsbHkgY2FyZSBhYm91dCB0aW1lc3RhbXBzICovCiAgIGdzdF9jYXBzX21hcF9pbl9wbGFjZSAobW9kZV9jYXBzLCByZXNldF9mcmFtZXJhdGUsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rdmlkZW9zcmMuY3BwIGIvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rdmlkZW9zcmMuY3BwCmluZGV4IDkxNTM5M2UuLjJiMzA0ZjkgMTAwNjQ0Ci0tLSBhL3N5cy9kZWNrbGluay9nc3RkZWNrbGlua3ZpZGVvc3JjLmNwcAorKysgYi9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmt2aWRlb3NyYy5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICAgSURlY2tMaW5rVmlkZW9JbnB1dEZyYW1lICpmcmFtZTsKICAgR3N0Q2xvY2tUaW1lIGNhcHR1cmVfdGltZSwgY2FwdHVyZV9kdXJhdGlvbjsKICAgR3N0RGVja2xpbmtNb2RlRW51bSBtb2RlOworICBCTURQaXhlbEZvcm1hdCBmb3JtYXQ7CiB9IENhcHR1cmVGcmFtZTsKIAogc3RhdGljIHZvaWQKQEAgLTE3OCw2ICsxNzksNyBAQAogewogICBzZWxmLT5tb2RlID0gREVGQVVMVF9NT0RFOwogICBzZWxmLT5jYXBzX21vZGUgPSBHU1RfREVDS0xJTktfTU9ERV9BVVRPOworICBzZWxmLT5jYXBzX2Zvcm1hdCA9IGJtZEZvcm1hdDhCaXRZVVY7CiAgIHNlbGYtPmNvbm5lY3Rpb24gPSBERUZBVUxUX0NPTk5FQ1RJT047CiAgIHNlbGYtPmRldmljZV9udW1iZXIgPSAwOwogICBzZWxmLT5idWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CkBAIC0zNTIsOSArMzU0LDkgQEAKIAogICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKICAgaWYgKHNlbGYtPmNhcHNfbW9kZSAhPSBHU1RfREVDS0xJTktfTU9ERV9BVVRPKQotICAgIG1vZGVfY2FwcyA9IGdzdF9kZWNrbGlua19tb2RlX2dldF9jYXBzIChzZWxmLT5jYXBzX21vZGUpOworICAgIG1vZGVfY2FwcyA9IGdzdF9kZWNrbGlua19tb2RlX2dldF9jYXBzIChzZWxmLT5jYXBzX21vZGUsIHNlbGYtPmNhcHNfZm9ybWF0KTsKICAgZWxzZQotICAgIG1vZGVfY2FwcyA9IGdzdF9kZWNrbGlua19tb2RlX2dldF9jYXBzIChzZWxmLT5tb2RlKTsKKyAgICBtb2RlX2NhcHMgPSBnc3RfZGVja2xpbmtfbW9kZV9nZXRfY2FwcyAoc2VsZi0+bW9kZSwgc2VsZi0+Y2Fwc19mb3JtYXQpOwogICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOwogCiAgIGlmIChmaWx0ZXIpIHsKQEAgLTQ4MSw2ICs0ODMsNyBAQAogICAgIGYtPmNhcHR1cmVfdGltZSA9IGNhcHR1cmVfdGltZTsKICAgICBmLT5jYXB0dXJlX2R1cmF0aW9uID0gY2FwdHVyZV9kdXJhdGlvbjsKICAgICBmLT5tb2RlID0gbW9kZTsKKyAgICBmLT5mb3JtYXQgPSBmcmFtZS0+R2V0UGl4ZWxGb3JtYXQgKCk7CiAgICAgZnJhbWUtPkFkZFJlZiAoKTsKICAgICBnX3F1ZXVlX3B1c2hfdGFpbCAoJnNlbGYtPmN1cnJlbnRfZnJhbWVzLCBmKTsKICAgICBnX2NvbmRfc2lnbmFsICgmc2VsZi0+Y29uZCk7CkBAIC01MTUsMTIgKzUxOCwxNCBAQAogICB9CiAKICAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7Ci0gIGlmIChzZWxmLT5tb2RlID09IEdTVF9ERUNLTElOS19NT0RFX0FVVE8gJiYgc2VsZi0+Y2Fwc19tb2RlICE9IGYtPm1vZGUpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiTW9kZSBjaGFuZ2VkIGZyb20gJWQgdG8gJWQiLCBzZWxmLT5jYXBzX21vZGUsCi0gICAgICAgIGYtPm1vZGUpOworICBpZiAoc2VsZi0+bW9kZSA9PSBHU1RfREVDS0xJTktfTU9ERV9BVVRPICYmCisgICAgICAoc2VsZi0+Y2Fwc19tb2RlICE9IGYtPm1vZGUgfHwgc2VsZi0+Y2Fwc19mb3JtYXQgIT0gZi0+Zm9ybWF0KSkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJNb2RlL0Zvcm1hdCBjaGFuZ2VkIGZyb20gJWQvJWQgdG8gJWQvJWQiLAorICAgICAgICBzZWxmLT5jYXBzX21vZGUsIHNlbGYtPmNhcHNfZm9ybWF0LCBmLT5tb2RlLCBmLT5mb3JtYXQpOwogICAgIHNlbGYtPmNhcHNfbW9kZSA9IGYtPm1vZGU7CisgICAgc2VsZi0+Y2Fwc19mb3JtYXQgPSBmLT5mb3JtYXQ7CiAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKLSAgICBjYXBzID0gZ3N0X2RlY2tsaW5rX21vZGVfZ2V0X2NhcHMgKGYtPm1vZGUpOworICAgIGNhcHMgPSBnc3RfZGVja2xpbmtfbW9kZV9nZXRfY2FwcyAoZi0+bW9kZSwgZi0+Zm9ybWF0KTsKICAgICBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZzZWxmLT5pbmZvLCBjYXBzKTsKICAgICBnc3RfYmFzZV9zcmNfc2V0X2NhcHMgKEdTVF9CQVNFX1NSQ19DQVNUIChic3JjKSwgY2Fwcyk7CiAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVF9DQVNUIChzZWxmKSwKZGlmZiAtLWdpdCBhL3N5cy9kZWNrbGluay9nc3RkZWNrbGlua3ZpZGVvc3JjLmggYi9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmt2aWRlb3NyYy5oCmluZGV4IDZjYjViYjkuLmI4MzQ5NWYgMTAwNjQ0Ci0tLSBhL3N5cy9kZWNrbGluay9nc3RkZWNrbGlua3ZpZGVvc3JjLmgKKysrIGIvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rdmlkZW9zcmMuaApAQCAtNTIsNiArNTIsNyBAQAogCiAgIEdzdERlY2tsaW5rTW9kZUVudW0gbW9kZTsKICAgR3N0RGVja2xpbmtNb2RlRW51bSBjYXBzX21vZGU7CisgIEJNRFBpeGVsRm9ybWF0IGNhcHNfZm9ybWF0OwogICBHc3REZWNrbGlua0Nvbm5lY3Rpb25FbnVtIGNvbm5lY3Rpb247CiAgIGdpbnQgZGV2aWNlX251bWJlcjsKIApkaWZmIC0tZ2l0IGEvc3lzL2RpcmVjdHNvdW5kL01ha2VmaWxlLmluIGIvc3lzL2RpcmVjdHNvdW5kL01ha2VmaWxlLmluCmluZGV4IDQ4Y2E2MzAuLjdiZmMzMGQgMTAwNjQ0Ci0tLSBhL3N5cy9kaXJlY3Rzb3VuZC9NYWtlZmlsZS5pbgorKysgYi9zeXMvZGlyZWN0c291bmQvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc4LDYgKzI3Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE1LDYgKzMxNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIzLDcgKzMyNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Miw4ICszNDQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYwLDE2ICszNjMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk1LDYgKzM5OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMCw2ICs0MjYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjEsNiArNTI5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNCw4ICs1NDMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTEsNiArNTU4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOCwxNiArNjE3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY5LDYgKzY4MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzksNiArNjkxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg4LDYgKzcwMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjUsNyArNzQwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvZGlyZWN0c291bmQvZ3N0ZGlyZWN0c291bmRzcmMuYyBiL3N5cy9kaXJlY3Rzb3VuZC9nc3RkaXJlY3Rzb3VuZHNyYy5jCmluZGV4IDNiMDFmMDYuLmI4OGU2OGUgMTAwNjQ0Ci0tLSBhL3N5cy9kaXJlY3Rzb3VuZC9nc3RkaXJlY3Rzb3VuZHNyYy5jCisrKyBiL3N5cy9kaXJlY3Rzb3VuZC9nc3RkaXJlY3Rzb3VuZHNyYy5jCkBAIC00NSw3ICs0NSw3IEBACiAgKi8KIAogLyoKLSAgVE9ETzogYWRkIGRldmljZSBzZWxlY3Rpb24gYW5kIGNoZWNrIHJhdGUgZXRjLgorICBUT0RPOiBhZGQgbWl4ZXIgZGV2aWNlIGluaXQgZm9yIHNlbGVjdGlvbiBieSBkZXZpY2UtZ3VpZAogKi8KIAogLyoqCkBAIC01Niw3ICs1Niw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgZGlyZWN0c291bmRzcmMgISBhdWRpb2NvbnZlcnQgISB2b3JiaXNlbmMgISBvZ2dtdXggISBmaWxlc2luayBsb2NhdGlvbj1kc291bmQub2dnCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBkaXJlY3Rzb3VuZHNyYyAhIGF1ZGlvY29udmVydCAhIHZvcmJpc2VuYyAhIG9nZ211eCAhIGZpbGVzaW5rIGxvY2F0aW9uPWRzb3VuZC5vZ2cKICAqIF18IFJlY29yZCBmcm9tIERpcmVjdFNvdW5kIGFuZCBlbmNvZGUgdG8gT2dnL1ZvcmJpcy4KICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTg3LDYgKzg3LDcgQEAKIHsKICAgUFJPUF8wLAogICBQUk9QX0RFVklDRV9OQU1FLAorICBQUk9QX0RFVklDRSwKICAgUFJPUF9WT0xVTUUsCiAgIFBST1BfTVVURQogfTsKQEAgLTEzMCw2ICsxMzEsMTEgQEAKIHN0YXRpYyB2b2lkIGdzdF9kaXJlY3Rzb3VuZF9zcmNfc2V0X211dGUgKEdzdERpcmVjdFNvdW5kU3JjICogZHNvdW5kc3JjLAogICAgIGdib29sZWFuIG11dGUpOwogCitzdGF0aWMgY29uc3QgZ2NoYXIgKmdzdF9kaXJlY3Rzb3VuZF9zcmNfZ2V0X2RldmljZSAoR3N0RGlyZWN0U291bmRTcmMgKgorICAgIGRzb3VuZHNyYyk7CitzdGF0aWMgdm9pZCBnc3RfZGlyZWN0c291bmRfc3JjX3NldF9kZXZpY2UgKEdzdERpcmVjdFNvdW5kU3JjICogZHNvdW5kc3JjLAorICAgIGNvbnN0IGdjaGFyICogZGV2aWNlX2lkKTsKKwogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGRpcmVjdHNvdW5kX3NyY19zcmNfZmFjdG9yeSA9CiBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCiAgICAgR1NUX1BBRF9TUkMsCkBAIC0xNTgsNiArMTY0LDkgQEAKICAgZ19tdXRleF9jbGVhciAoJmRzb3VuZHNyYy0+ZHNvdW5kX2xvY2spOwogCiAgIGdfZnJlZSAoZHNvdW5kc3JjLT5kZXZpY2VfbmFtZSk7CisKKyAgZ19mcmVlIChkc291bmRzcmMtPmRldmljZV9pZCk7CisKICAgZ19mcmVlIChkc291bmRzcmMtPmRldmljZV9ndWlkKTsKIAogICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7CkBAIC0yMTIsNiArMjIxLDEyIEBACiAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgiZGV2aWNlLW5hbWUiLCAiRGV2aWNlIG5hbWUiLAogICAgICAgICAgICJIdW1hbi1yZWFkYWJsZSBuYW1lIG9mIHRoZSBzb3VuZCBkZXZpY2UiLCBOVUxMLCBHX1BBUkFNX1JFQURXUklURSkpOwogCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX0RFVklDRSwKKyAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJkZXZpY2UiLCAiRGV2aWNlIiwKKyAgICAgICAgICAiRGlyZWN0U291bmQgcGxheWJhY2sgZGV2aWNlIGFzIGEgR1VJRCBzdHJpbmcgKHZvbHVtZSBhbmQgbXV0ZSB3aWxsIG5vdCB3b3JrISkiLAorICAgICAgICAgIE5VTEwsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkKICAgICAgIChnb2JqZWN0X2NsYXNzLCBQUk9QX1ZPTFVNRSwKICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJ2b2x1bWUiLCAiVm9sdW1lIiwKQEAgLTI1MSw3ICsyNjYsNiBAQAogICAgICAgaWYgKGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKSB7CiAgICAgICAgIHNyYy0+ZGV2aWNlX25hbWUgPSBnX3N0cmR1cCAoZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSkpOwogICAgICAgfQotCiAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfVk9MVU1FOgogICAgICAgZ3N0X2RpcmVjdHNvdW5kX3NyY19zZXRfdm9sdW1lIChzcmMsIGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpKTsKQEAgLTI1OSw2ICsyNzMsOSBAQAogICAgIGNhc2UgUFJPUF9NVVRFOgogICAgICAgZ3N0X2RpcmVjdHNvdW5kX3NyY19zZXRfbXV0ZSAoc3JjLCBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSkpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RFVklDRToKKyAgICAgIGdzdF9kaXJlY3Rzb3VuZF9zcmNfc2V0X2RldmljZSAoc3JjLCBnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSk7CisgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgIGJyZWFrOwpAQCAtMjc3LDYgKzI5NCw5IEBACiAgICAgY2FzZSBQUk9QX0RFVklDRV9OQU1FOgogICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgc3JjLT5kZXZpY2VfbmFtZSk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfREVWSUNFOgorICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgZ3N0X2RpcmVjdHNvdW5kX3NyY19nZXRfZGV2aWNlIChzcmMpKTsKKyAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9WT0xVTUU6CiAgICAgICBnX3ZhbHVlX3NldF9kb3VibGUgKHZhbHVlLCBnc3RfZGlyZWN0c291bmRfc3JjX2dldF92b2x1bWUgKHNyYykpOwogICAgICAgYnJlYWs7CkBAIC0zMDEsNiArMzIxLDcgQEAKICAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLCAiaW5pdGlhbGl6aW5nIGRpcmVjdHNvdW5kc3JjIik7CiAgIGdfbXV0ZXhfaW5pdCAoJnNyYy0+ZHNvdW5kX2xvY2spOwogICBzcmMtPmRldmljZV9ndWlkID0gTlVMTDsKKyAgc3JjLT5kZXZpY2VfaWQgPSBOVUxMOwogICBzcmMtPmRldmljZV9uYW1lID0gTlVMTDsKICAgc3JjLT5taXhlciA9IE5VTEw7CiAgIHNyYy0+Y29udHJvbF9pZF9tdXRlID0gLTE7CkBAIC0zMzUsNiArMzU2LDI4IEBACiAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgTFBHVUlECitzdHJpbmdfdG9fZ3VpZCAoY29uc3QgZ2NoYXIgKiBzdHIpCit7CisgIEhSRVNVTFQgcmV0OworICBndW5pY2hhcjIgKndzdHI7CisgIExQR1VJRCBvdXQ7CisKKyAgd3N0ciA9IGdfdXRmOF90b191dGYxNiAoc3RyLCAtMSwgTlVMTCwgTlVMTCwgTlVMTCk7CisgIGlmICghd3N0cikKKyAgICByZXR1cm4gTlVMTDsKKworICBvdXQgPSBnX25ldyAoR1VJRCwgMSk7CisgIHJldCA9IENMU0lERnJvbVN0cmluZyAoKExQT0xFU1RSKSB3c3RyLCBvdXQpOworICBnX2ZyZWUgKHdzdHIpOworICBpZiAocmV0ICE9IE5PRVJST1IpIHsKKyAgICBnX2ZyZWUgKG91dCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICByZXR1cm4gb3V0OworfQorCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9kaXJlY3Rzb3VuZF9zcmNfb3BlbiAoR3N0QXVkaW9TcmMgKiBhc3JjKQogewpAQCAtMzYxLDE5ICs0MDQsMzcgQEAKICAgICBnb3RvIGNhcHR1cmVfZnVuY3Rpb247CiAgIH0KIAotICBoUmVzID0gRGlyZWN0U291bmRDYXB0dXJlRW51bWVyYXRlICgoTFBEU0VOVU1DQUxMQkFDSykKLSAgICAgIGdzdF9kaXJlY3Rzb3VuZF9lbnVtX2NhbGxiYWNrLCAoVk9JRCAqKSBkc291bmRzcmMpOwotICBpZiAoRkFJTEVEIChoUmVzKSkgewotICAgIGdvdG8gY2FwdHVyZV9lbnVtZXJhdGU7Ci0gIH0KKyAgaWYgKGRzb3VuZHNyYy0+ZGV2aWNlX2lkKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoYXNyYywgImRldmljZSBpZCBzZXQgdG86ICVzICIsIGRzb3VuZHNyYy0+ZGV2aWNlX2lkKTsKKyAgICBkc291bmRzcmMtPmRldmljZV9ndWlkID0gc3RyaW5nX3RvX2d1aWQgKGRzb3VuZHNyYy0+ZGV2aWNlX2lkKTsKKyAgICBpZiAoZHNvdW5kc3JjLT5kZXZpY2VfZ3VpZCA9PSBOVUxMKSB7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZHNvdW5kc3JjLCBSRVNPVVJDRSwgT1BFTl9SRUFELAorICAgICAgICAgICgiZ3N0X2RpcmVjdHNvdW5kX3NyY19vcGVuOiBkZXZpY2Ugc2V0LCBidXQgZ3VpZCBub3QgZm91bmQ6ICVzIiwKKyAgICAgICAgICAgICAgZHNvdW5kc3JjLT5kZXZpY2VfaWQpLCAoTlVMTCkpOworICAgICAgZ19mcmVlIChkc291bmRzcmMtPmRldmljZV9ndWlkKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0gZWxzZSB7CiAKKyAgICBoUmVzID0gRGlyZWN0U291bmRDYXB0dXJlRW51bWVyYXRlICgoTFBEU0VOVU1DQUxMQkFDSykKKyAgICAgICAgZ3N0X2RpcmVjdHNvdW5kX2VudW1fY2FsbGJhY2ssIChWT0lEICopIGRzb3VuZHNyYyk7CisKKyAgICBpZiAoRkFJTEVEIChoUmVzKSkgeworICAgICAgZ290byBjYXB0dXJlX2VudW1lcmF0ZTsKKyAgICB9CisgIH0KICAgLyogQ3JlYXRlIGNhcHR1cmUgb2JqZWN0ICovCiAgIGhSZXMgPSBwRFNvdW5kQ2FwdHVyZUNyZWF0ZSAoZHNvdW5kc3JjLT5kZXZpY2VfZ3VpZCwgJmRzb3VuZHNyYy0+cERTQywgTlVMTCk7CisKKwogICBpZiAoRkFJTEVEIChoUmVzKSkgewogICAgIGdvdG8gY2FwdHVyZV9vYmplY3Q7CiAgIH0KKyAgLy8gbWl4ZXIgaXMgb25seSBzdXBwb3J0ZWQgd2hlbiBkZXZpY2UtaWQgaXMgbm90IHNldAorICBpZiAoIWRzb3VuZHNyYy0+ZGV2aWNlX2lkKSB7CisgICAgZ3N0X2RpcmVjdHNvdW5kX3NyY19taXhlcl9pbml0IChkc291bmRzcmMpOworICB9CiAKLSAgZ3N0X2RpcmVjdHNvdW5kX3NyY19taXhlcl9pbml0IChkc291bmRzcmMpOwogICByZXR1cm4gVFJVRTsKIAogY2FwdHVyZV9mdW5jdGlvbjoKQEAgLTkzNiwzICs5OTcsMTcgQEAKICAgZWxzZQogICAgIGRzb3VuZHNyYy0+bXV0ZSA9IG11dGU7CiB9CisKK3N0YXRpYyBjb25zdCBnY2hhciAqCitnc3RfZGlyZWN0c291bmRfc3JjX2dldF9kZXZpY2UgKEdzdERpcmVjdFNvdW5kU3JjICogZHNvdW5kc3JjKQoreworICByZXR1cm4gZHNvdW5kc3JjLT5kZXZpY2VfaWQ7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZGlyZWN0c291bmRfc3JjX3NldF9kZXZpY2UgKEdzdERpcmVjdFNvdW5kU3JjICogZHNvdW5kc3JjLAorICAgIGNvbnN0IGdjaGFyICogZGV2aWNlX2lkKQoreworICBnX2ZyZWUgKGRzb3VuZHNyYy0+ZGV2aWNlX2lkKTsKKyAgZHNvdW5kc3JjLT5kZXZpY2VfaWQgPSBnX3N0cmR1cCAoZGV2aWNlX2lkKTsKK30KZGlmZiAtLWdpdCBhL3N5cy9kaXJlY3Rzb3VuZC9nc3RkaXJlY3Rzb3VuZHNyYy5oIGIvc3lzL2RpcmVjdHNvdW5kL2dzdGRpcmVjdHNvdW5kc3JjLmgKaW5kZXggYTJhYzZmZi4uOWFhMjI1ZiAxMDA2NDQKLS0tIGEvc3lzL2RpcmVjdHNvdW5kL2dzdGRpcmVjdHNvdW5kc3JjLmgKKysrIGIvc3lzL2RpcmVjdHNvdW5kL2dzdGRpcmVjdHNvdW5kc3JjLmgKQEAgLTEsOTcgKzEsOTcgQEAKLS8qDQotICogR1N0cmVhbWVyDQotICogQ29weXJpZ2h0IDIwMDUgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+DQotICogQ29weXJpZ2h0IDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0Pg0KLSAqIENvcHlyaWdodCAyMDA1IFPpYmFzdGllbiBNb3V0dGUgPHNlYmFzdGllbkBtb3V0dGUubmV0Pg0KLSAqIENvcHlyaWdodCAyMDA2IEpvbmkgVmFsdGFuZW4gPGpvbmkudmFsdGFuZW5AbW92aWFsLmZpPg0KLSAqIA0KLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhDQotICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwNCi0gKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uDQotICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsDQotICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlDQotICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCi0gKg0KLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluDQotICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuDQotICoNCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLA0KLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQ0KLSAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORw0KLSAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVINCi0gKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQotICoNCi0gKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQ0KLSAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDIuMSAodGhlICJMR1BMIiksIGluDQotICogd2hpY2ggY2FzZSB0aGUgZm9sbG93aW5nIHByb3Zpc2lvbnMgYXBwbHkgaW5zdGVhZCBvZiB0aGUgb25lcw0KLSAqIG1lbnRpb25lZCBhYm92ZToNCi0gKg0KLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3INCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYw0KLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCi0gKg0KLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCi0gKg0KLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljDQotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUNCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwNCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4NCi0gKi8NCi0NCi0jaWZuZGVmIF9fR1NUX0RJUkVDVFNPVU5EU1JDX0hfXw0KLSNkZWZpbmUgX19HU1RfRElSRUNUU09VTkRTUkNfSF9fDQotDQotI2luY2x1ZGUgPGdzdC9nc3QuaD4NCi0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+DQotI2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb3NyYy5oPg0KLSNpbmNsdWRlIDx3aW5kb3dzLmg+DQotI2luY2x1ZGUgPGRzb3VuZC5oPg0KKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAyMDA1IFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgorICogQ29weXJpZ2h0IDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgorICogQ29weXJpZ2h0IDIwMDUgU+liYXN0aWVuIE1vdXR0ZSA8c2ViYXN0aWVuQG1vdXR0ZS5uZXQ+CisgKiBDb3B5cmlnaHQgMjAwNiBKb25pIFZhbHRhbmVuIDxqb25pLnZhbHRhbmVuQG1vdmlhbC5maT4KKyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlCisgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjEgKHRoZSAiTEdQTCIpLCBpbgorICogd2hpY2ggY2FzZSB0aGUgZm9sbG93aW5nIHByb3Zpc2lvbnMgYXBwbHkgaW5zdGVhZCBvZiB0aGUgb25lcworICogbWVudGlvbmVkIGFib3ZlOgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfRElSRUNUU09VTkRTUkNfSF9fCisjZGVmaW5lIF9fR1NUX0RJUkVDVFNPVU5EU1JDX0hfXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgorI2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb3NyYy5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxkc291bmQuaD4KICNpbmNsdWRlIDxtbXN5c3RlbS5oPgotDQotLyogYWRkIGhlcmUgc29tZSBoZWFkZXJzIGlmIG5lZWRlZCAqLw0KLQ0KLQ0KLUdfQkVHSU5fREVDTFMNCi0NCi0vKiAjZGVmaW5lcyBkb24ndCBsaWtlIHdoaXRlc3BhY2V5IGJpdHMgKi8NCi0jZGVmaW5lIEdTVF9UWVBFX0RJUkVDVFNPVU5EX1NSQyAoZ3N0X2RpcmVjdHNvdW5kX3NyY19nZXRfdHlwZSgpKQ0KLSNkZWZpbmUgR1NUX0RJUkVDVFNPVU5EX1NSQyhvYmopIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9ESVJFQ1RTT1VORF9TUkMsR3N0RGlyZWN0U291bmRTcmMpKQ0KLSNkZWZpbmUgR1NUX0RJUkVDVFNPVU5EX1NSQ19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfRElSRUNUU09VTkRfU1JDLEdzdERpcmVjdFNvdW5kU3JjQ2xhc3MpKQ0KLSNkZWZpbmUgR1NUX0lTX0RJUkVDVFNPVU5EX1NSQyhvYmopIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9ESVJFQ1RTT1VORF9TUkMpKQ0KLSNkZWZpbmUgR1NUX0lTX0RJUkVDVFNPVU5EX1NSQ19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfRElSRUNUU09VTkRfU1JDKSkNCi0NCi10eXBlZGVmIHN0cnVjdCBfR3N0RGlyZWN0U291bmRTcmMgICAgICBHc3REaXJlY3RTb3VuZFNyYzsNCi10eXBlZGVmIHN0cnVjdCBfR3N0RGlyZWN0U291bmRTcmNDbGFzcyBHc3REaXJlY3RTb3VuZFNyY0NsYXNzOw0KLQ0KLSNkZWZpbmUgR1NUX0RTT1VORF9MT0NLKG9iaikJKGdfbXV0ZXhfbG9jayAoJm9iai0+ZHNvdW5kX2xvY2spKQ0KLSNkZWZpbmUgR1NUX0RTT1VORF9VTkxPQ0sob2JqKQkoZ19tdXRleF91bmxvY2sgKCZvYmotPmRzb3VuZF9sb2NrKSkNCi0NCi1zdHJ1Y3QgX0dzdERpcmVjdFNvdW5kU3JjDQotew0KLQ0KLSAgR3N0QXVkaW9TcmMgc3JjOw0KLQ0KLSAgSElOU1RBTkNFIERTb3VuZERMTDsgLyogRExMIGluc3RhbmNlICovDQotICBMUERJUkVDVFNPVU5EQ0FQVFVSRSBwRFNDOyAvKiBEaXJlY3RTb3VuZENhcHR1cmUqLw0KLSAgTFBESVJFQ1RTT1VORENBUFRVUkVCVUZGRVIgcERTQlNlY29uZGFyeTsgIC8qU2Vjb25kYXR5IGNhcHR1cmVidWZmZXIqLw0KLSAgRFdPUkQgY3VycmVudF9jaXJjdWxhcl9vZmZzZXQ7DQotDQotICBIQU5ETEUgcmdoRXZlbnQ7DQotICBEV09SRCBub3RpZnlzaXplOw0KLQ0KLSAgZ3VpbnQgYnVmZmVyX3NpemU7DQotICBndWludCBsYXRlbmN5X3NpemU7DQotICBndWludCBieXRlc19wZXJfc2FtcGxlOw0KLQ0KLSAgZ3VpbnQgYnVmZmVyX3RpbWU7DQotICBndWludCBsYXRlbmN5X3RpbWU7DQotDQorCisvKiBhZGQgaGVyZSBzb21lIGhlYWRlcnMgaWYgbmVlZGVkICovCisKKworR19CRUdJTl9ERUNMUworCisvKiAjZGVmaW5lcyBkb24ndCBsaWtlIHdoaXRlc3BhY2V5IGJpdHMgKi8KKyNkZWZpbmUgR1NUX1RZUEVfRElSRUNUU09VTkRfU1JDIChnc3RfZGlyZWN0c291bmRfc3JjX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9ESVJFQ1RTT1VORF9TUkMob2JqKSAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfRElSRUNUU09VTkRfU1JDLEdzdERpcmVjdFNvdW5kU3JjKSkKKyNkZWZpbmUgR1NUX0RJUkVDVFNPVU5EX1NSQ19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfRElSRUNUU09VTkRfU1JDLEdzdERpcmVjdFNvdW5kU3JjQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfRElSRUNUU09VTkRfU1JDKG9iaikgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX0RJUkVDVFNPVU5EX1NSQykpCisjZGVmaW5lIEdTVF9JU19ESVJFQ1RTT1VORF9TUkNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX0RJUkVDVFNPVU5EX1NSQykpCisKK3R5cGVkZWYgc3RydWN0IF9Hc3REaXJlY3RTb3VuZFNyYyAgICAgIEdzdERpcmVjdFNvdW5kU3JjOwordHlwZWRlZiBzdHJ1Y3QgX0dzdERpcmVjdFNvdW5kU3JjQ2xhc3MgR3N0RGlyZWN0U291bmRTcmNDbGFzczsKKworI2RlZmluZSBHU1RfRFNPVU5EX0xPQ0sob2JqKQkoZ19tdXRleF9sb2NrICgmb2JqLT5kc291bmRfbG9jaykpCisjZGVmaW5lIEdTVF9EU09VTkRfVU5MT0NLKG9iaikJKGdfbXV0ZXhfdW5sb2NrICgmb2JqLT5kc291bmRfbG9jaykpCisKK3N0cnVjdCBfR3N0RGlyZWN0U291bmRTcmMKK3sKKworICBHc3RBdWRpb1NyYyBzcmM7CisKKyAgSElOU1RBTkNFIERTb3VuZERMTDsgLyogRExMIGluc3RhbmNlICovCisgIExQRElSRUNUU09VTkRDQVBUVVJFIHBEU0M7IC8qIERpcmVjdFNvdW5kQ2FwdHVyZSovCisgIExQRElSRUNUU09VTkRDQVBUVVJFQlVGRkVSIHBEU0JTZWNvbmRhcnk7ICAvKlNlY29uZGF0eSBjYXB0dXJlYnVmZmVyKi8KKyAgRFdPUkQgY3VycmVudF9jaXJjdWxhcl9vZmZzZXQ7CisKKyAgSEFORExFIHJnaEV2ZW50OworICBEV09SRCBub3RpZnlzaXplOworCisgIGd1aW50IGJ1ZmZlcl9zaXplOworICBndWludCBsYXRlbmN5X3NpemU7CisgIGd1aW50IGJ5dGVzX3Blcl9zYW1wbGU7CisKKyAgZ3VpbnQgYnVmZmVyX3RpbWU7CisgIGd1aW50IGxhdGVuY3lfdGltZTsKKwogICBITUlYRVIgbWl4ZXI7CiAgIERXT1JEIG1peGVybGluZV9jY2hhbm5lbHM7CiAgIGdpbnQgY29udHJvbF9pZF92b2x1bWU7CkBAIC0xMDEsMjEgKzEwMSwyMyBAQAogCiAgIGdsb25nIHZvbHVtZTsKICAgZ2Jvb2xlYW4gbXV0ZTsKLQ0KLSAgR1VJRCAqZGV2aWNlX2d1aWQ7DQotICBjaGFyICpkZXZpY2VfbmFtZTsNCi0NCi0gIEdNdXRleCBkc291bmRfbG9jazsNCi0NCi19Ow0KLQ0KLXN0cnVjdCBfR3N0RGlyZWN0U291bmRTcmNDbGFzcyANCi17DQotICBHc3RBdWRpb1NyY0NsYXNzIHBhcmVudF9jbGFzczsNCi19Ow0KLQ0KLUdUeXBlIGdzdF9kaXJlY3Rzb3VuZF9zcmNfZ2V0X3R5cGUgKHZvaWQpOw0KLQ0KLUdfRU5EX0RFQ0xTDQotDQotI2VuZGlmIC8qIF9fR1NUX0RJUkVDVFNPVU5EU1JDX0hfXyAqLw0KKworICBHVUlEICpkZXZpY2VfZ3VpZDsKKworICBjaGFyICpkZXZpY2VfbmFtZTsKKyAgY2hhciAqZGV2aWNlX2lkOworCisgIEdNdXRleCBkc291bmRfbG9jazsKKworfTsKKworc3RydWN0IF9Hc3REaXJlY3RTb3VuZFNyY0NsYXNzIAoreworICBHc3RBdWRpb1NyY0NsYXNzIHBhcmVudF9jbGFzczsKK307CisKK0dUeXBlIGdzdF9kaXJlY3Rzb3VuZF9zcmNfZ2V0X3R5cGUgKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfRElSRUNUU09VTkRTUkNfSF9fICovCmRpZmYgLS1naXQgYS9zeXMvZHNob3dkZWN3cmFwcGVyL01ha2VmaWxlLmluIGIvc3lzL2RzaG93ZGVjd3JhcHBlci9NYWtlZmlsZS5pbgppbmRleCA2ZmM4YjljLi44YzkzMGViIDEwMDY0NAotLS0gYS9zeXMvZHNob3dkZWN3cmFwcGVyL01ha2VmaWxlLmluCisrKyBiL3N5cy9kc2hvd2RlY3dyYXBwZXIvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjgwLDYgKzI3OSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE3LDYgKzMxOCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI1LDcgKzMyOCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0NCw4ICszNDYsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYyLDE2ICszNjUsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk3LDYgKzQwMSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMiw2ICs0MjgsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjMsNiArNTMxLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNiw4ICs1NDUsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTMsNiArNTYwLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxMCwxNiArNjE5LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcxLDYgKzY4Miw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODEsNiArNjkzLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjkwLDYgKzcwMyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjcsNyArNzQyLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvZHNob3dkZWN3cmFwcGVyL2dzdGRzaG93YXVkaW9kZWMuY3BwIGIvc3lzL2RzaG93ZGVjd3JhcHBlci9nc3Rkc2hvd2F1ZGlvZGVjLmNwcAppbmRleCBjYWViZWM1Li45ZmI4M2U1IDEwMDY0NAotLS0gYS9zeXMvZHNob3dkZWN3cmFwcGVyL2dzdGRzaG93YXVkaW9kZWMuY3BwCisrKyBiL3N5cy9kc2hvd2RlY3dyYXBwZXIvZ3N0ZHNob3dhdWRpb2RlYy5jcHAKQEAgLTg1NCw4ICs4NTQsNyBAQAogc3RhdGljIHZvaWQKIGRzaG93YWRlY19mcmVlX21lZGlhdHlwZSAoQU1fTUVESUFfVFlQRSAqbWVkaWF0eXBlKQogewotICBpZiAobWVkaWF0eXBlLT5wYkZvcm1hdCkKLSAgICBnX2ZyZWUgKG1lZGlhdHlwZS0+cGJGb3JtYXQpOworICBnX2ZyZWUgKG1lZGlhdHlwZS0+cGJGb3JtYXQpOwogICBnX2ZyZWUgKG1lZGlhdHlwZSk7CiB9CiAKZGlmZiAtLWdpdCBhL3N5cy9kc2hvd2RlY3dyYXBwZXIvZ3N0ZHNob3d2aWRlb2RlYy5jcHAgYi9zeXMvZHNob3dkZWN3cmFwcGVyL2dzdGRzaG93dmlkZW9kZWMuY3BwCmluZGV4IGVhYzBmNzIuLjljMmY1OWMgMTAwNjQ0Ci0tLSBhL3N5cy9kc2hvd2RlY3dyYXBwZXIvZ3N0ZHNob3d2aWRlb2RlYy5jcHAKKysrIGIvc3lzL2RzaG93ZGVjd3JhcHBlci9nc3Rkc2hvd3ZpZGVvZGVjLmNwcApAQCAtODQ1LDggKzg0NSw3IEBACiAgIGlmIChjYXBzX291dCkKICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwc19vdXQpOwogICBnc3Rfb2JqZWN0X3VucmVmICh2ZGVjKTsKLSAgaWYgKGlucHV0X3ZoZWFkZXIpCi0gICAgZ19mcmVlIChpbnB1dF92aGVhZGVyKTsKKyAgZ19mcmVlIChpbnB1dF92aGVhZGVyKTsKICAgaWYgKHNyY2ZpbHRlcikKICAgICBzcmNmaWx0ZXItPlJlbGVhc2UoKTsKICAgaWYgKHNpbmtmaWx0ZXIpCmRpZmYgLS1naXQgYS9zeXMvZHNob3dzcmN3cmFwcGVyL01ha2VmaWxlLmluIGIvc3lzL2RzaG93c3Jjd3JhcHBlci9NYWtlZmlsZS5pbgppbmRleCBmYWNkYTdjLi5iYTRkZjU2IDEwMDY0NAotLS0gYS9zeXMvZHNob3dzcmN3cmFwcGVyL01ha2VmaWxlLmluCisrKyBiL3N5cy9kc2hvd3NyY3dyYXBwZXIvTWFrZWZpbGUuaW4KQEAgLTExNywxNiArMTE3LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0xOTEsNiArMTkwLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yMjgsNiArMjI5LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yMzYsNyArMjM5LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMjU1LDggKzI1Nyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0yNzMsMTYgKzI3NiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zMDgsNiArMzEyLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzMzLDYgKzMzOSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQzNCw2ICs0NDIsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNDQ3LDggKzQ1Niw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTQ2NCw2ICs0NzEsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTIxLDE2ICs1MzAsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC01ODIsNiArNTkzLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTU5Miw2ICs2MDQsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02MDEsNiArNjE0LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTYzOCw3ICs2NTMsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3N5cy9kc2hvd3NyY3dyYXBwZXIvZ3N0ZHNob3cuY3BwIGIvc3lzL2RzaG93c3Jjd3JhcHBlci9nc3Rkc2hvdy5jcHAKaW5kZXggMjkyNjZiYS4uNzA1YWRjOSAxMDA2NDQKLS0tIGEvc3lzL2RzaG93c3Jjd3JhcHBlci9nc3Rkc2hvdy5jcHAKKysrIGIvc3lzL2RzaG93c3Jjd3JhcHBlci9nc3Rkc2hvdy5jcHAKQEAgLTEyNSwxMCArMTI1LDggQEAKIHZvaWQKIGdzdF9kc2hvd19mcmVlX3BpbnNfbWVkaWF0eXBlcyAoR0xpc3QgKiBwaW5zX21lZGlhdHlwZXMpCiB7Ci0gIHdoaWxlIChwaW5zX21lZGlhdHlwZXMgIT0gTlVMTCkgewotICAgIGdzdF9kc2hvd19mcmVlX3Bpbl9tZWRpYXR5cGUgKHBpbnNfbWVkaWF0eXBlcy0+ZGF0YSk7Ci0gICAgcGluc19tZWRpYXR5cGVzID0gZ19saXN0X3JlbW92ZV9saW5rIChwaW5zX21lZGlhdHlwZXMsIHBpbnNfbWVkaWF0eXBlcyk7Ci0gIH0KKyAgZ19saXN0X2ZyZWVfZnVsbCAocGluc19tZWRpYXR5cGVzLAorICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnc3RfZHNob3dfZnJlZV9waW5fbWVkaWF0eXBlKTsKIH0KIAogZ2Jvb2xlYW4KQEAgLTI3MywxNCArMjcxLDEyIEBACiAgICAgICBmaWx0ZXJfdGVtcC0+UmVsZWFzZSAoKTsKICAgICB9CiAKLSAgICBpZiAoZnJpZW5kbHlfbmFtZSkKLSAgICAgIGdfZnJlZSAoZnJpZW5kbHlfbmFtZSk7CisgICAgZ19mcmVlIChmcmllbmRseV9uYW1lKTsKICAgICBtb25pa2VyLT5SZWxlYXNlICgpOwogICB9CiAKIGNsZWFuOgotICBpZiAocHJlZmVyZWRfZmlsdGVyX3VwcGVyKQotICAgIGdfZnJlZSAocHJlZmVyZWRfZmlsdGVyX3VwcGVyKTsKKyAgZ19mcmVlIChwcmVmZXJlZF9maWx0ZXJfdXBwZXIpOwogICBpZiAoZW51bV9tb25pa2VyKQogICAgIGVudW1fbW9uaWtlci0+UmVsZWFzZSAoKTsKICAgaWYgKG1hcHBlcikKZGlmZiAtLWdpdCBhL3N5cy9kc2hvd3NyY3dyYXBwZXIvZ3N0ZHNob3d2aWRlb3NyYy5jcHAgYi9zeXMvZHNob3dzcmN3cmFwcGVyL2dzdGRzaG93dmlkZW9zcmMuY3BwCmluZGV4IDg0NmMwNTAuLjc3MjVmY2IgMTAwNjQ0Ci0tLSBhL3N5cy9kc2hvd3NyY3dyYXBwZXIvZ3N0ZHNob3d2aWRlb3NyYy5jcHAKKysrIGIvc3lzL2RzaG93c3Jjd3JhcHBlci9nc3Rkc2hvd3ZpZGVvc3JjLmNwcApAQCAtMzk2LDkgKzM5Niw3IEBACiAgICAgfQogICB9CiAKLSAgaWYgKHVuaWRldmljZSkgewotICAgIGdfZnJlZSAodW5pZGV2aWNlKTsKLSAgfQorICBnX2ZyZWUgKHVuaWRldmljZSk7CiAKICAgaWYgKHNyYy0+Y2FwcykgewogICAgIEdzdENhcHMgKmNhcHM7CmRpZmYgLS1naXQgYS9zeXMvZHNob3d2aWRlb3NpbmsvTWFrZWZpbGUuaW4gYi9zeXMvZHNob3d2aWRlb3NpbmsvTWFrZWZpbGUuaW4KaW5kZXggNTdhYjQ4NS4uZWRlMDAyZCAxMDA2NDQKLS0tIGEvc3lzL2RzaG93dmlkZW9zaW5rL01ha2VmaWxlLmluCisrKyBiL3N5cy9kc2hvd3ZpZGVvc2luay9NYWtlZmlsZS5pbgpAQCAtMTE3LDE2ICsxMTcsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTE5MSw2ICsxOTAsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTIyOCw2ICsyMjksOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTIzNiw3ICsyMzksNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0yNTUsOCArMjU3LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTI3MywxNiArMjc2LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTMwOCw2ICszMTIsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zMzMsNiArMzM5LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDM0LDYgKzQ0Miw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC00NDcsOCArNDU2LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNDY0LDYgKzQ3MSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01MjEsMTYgKzUzMCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTU4Miw2ICs1OTMsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNTkyLDYgKzYwNCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTYwMSw2ICs2MTQsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjM4LDcgKzY1Myw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL2RzaG93dmlkZW9zaW5rL2RzaG93dmlkZW9zaW5rLmNwcCBiL3N5cy9kc2hvd3ZpZGVvc2luay9kc2hvd3ZpZGVvc2luay5jcHAKaW5kZXggY2Q3YjIxMi4uYzNkNGJjMyAxMDA2NDQKLS0tIGEvc3lzL2RzaG93dmlkZW9zaW5rL2RzaG93dmlkZW9zaW5rLmNwcAorKysgYi9zeXMvZHNob3d2aWRlb3NpbmsvZHNob3d2aWRlb3NpbmsuY3BwCkBAIC0yODUsOCArMjg1LDcgQEAKIHsKICAgR3N0RHNob3dWaWRlb1NpbmsgKnNpbmsgPSBHU1RfRFNIT1dWSURFT1NJTksgKGdvYmplY3QpOwogCi0gIGlmIChzaW5rLT5wcmVmZXJyZWRyZW5kZXJlcikKLSAgICBnX2ZyZWUgKHNpbmstPnByZWZlcnJlZHJlbmRlcmVyKTsKKyAgZ19mcmVlIChzaW5rLT5wcmVmZXJyZWRyZW5kZXJlcik7CiAKICAgLyogc2lnbmFsIHRoZSBDT00gdGhyZWFkIHRoYXQgaXQgc291bGQgdW5pbml0aWFsaXplIENPTSAqLwogICBpZiAoc2luay0+Y29tSW5pdGlhbGl6ZWQpIHsKQEAgLTMxNSw5ICszMTQsNyBAQAogCiAgIHN3aXRjaCAocHJvcF9pZCkgewogICAgIGNhc2UgUFJPUF9SRU5ERVJFUjoKLSAgICAgIGlmIChzaW5rLT5wcmVmZXJyZWRyZW5kZXJlcikKLSAgICAgICAgZ19mcmVlIChzaW5rLT5wcmVmZXJyZWRyZW5kZXJlcik7Ci0KKyAgICAgIGdfZnJlZSAoc2luay0+cHJlZmVycmVkcmVuZGVyZXIpOwogICAgICAgc2luay0+cHJlZmVycmVkcmVuZGVyZXIgPSBnX3ZhbHVlX2R1cF9zdHJpbmcgKHZhbHVlKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9LRUVQX0FTUEVDVF9SQVRJTzoKZGlmZiAtLWdpdCBhL3N5cy9kdmIvTWFrZWZpbGUuaW4gYi9zeXMvZHZiL01ha2VmaWxlLmluCmluZGV4IGFhYjM1ZDQuLjBkYzU2OTggMTAwNjQ0Ci0tLSBhL3N5cy9kdmIvTWFrZWZpbGUuaW4KKysrIGIvc3lzL2R2Yi9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yODQsNiArMjgzLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMjEsNiArMzIyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjksNyArMzMyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ4LDggKzM1MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjYsMTYgKzM2OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MDEsNiArNDA1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI2LDYgKzQzMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNyw2ICs1MzUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTQwLDggKzU0OSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1Nyw2ICs1NjQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjE0LDE2ICs2MjMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzUsNiArNjg2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4NSw2ICs2OTcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTQsNiArNzA3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTczMSw3ICs3NDYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3N5cy9kdmIvUkVBRE1FIGIvc3lzL2R2Yi9SRUFETUUKaW5kZXggMTMyOWRhOS4uNGQzYzgzYiAxMDA2NDQKLS0tIGEvc3lzL2R2Yi9SRUFETUUKKysrIGIvc3lzL2R2Yi9SRUFETUUKQEAgLTUsNyArNSw3IEBACiAKIFRyeToKIAotICAgICBnc3QtbGF1bmNoIGR2YnNyYyBmcmVxdWVuY3k9MTE5NTQgcG9sYXJpdHk9aCBzeW1ib2wtcmF0ZT0yNzUwMCBwaWRzPTIxMDoyMjAKKyAgICAgZ3N0LWxhdW5jaC0xLjAgZHZic3JjIGZyZXF1ZW5jeT0xMTk1NCBwb2xhcml0eT1oIHN5bWJvbC1yYXRlPTI3NTAwIHBpZHM9MjEwOjIyMAogICAgICAgICAgISBtcGVndHNkZW11eCBlcy1waWRzPTIxMDoyMjAgbmFtZT1kZW11eCAhIHF1ZXVlICEgbXBlZzJkZWMKICAgICAgICAgICEgeHZpbWFnZXNpbmsgZGVtdXguICEgcXVldWUgISBtYWQgISBhdWRpb2NvbnZlcnQgISBhdXRvYXVkaW9zaW5rCiAKZGlmZiAtLWdpdCBhL3N5cy9kdmIvY2Ftc3djbGllbnQuYyBiL3N5cy9kdmIvY2Ftc3djbGllbnQuYwppbmRleCBmNWQwN2NmLi42OGEzZDQzIDEwMDY0NAotLS0gYS9zeXMvZHZiL2NhbXN3Y2xpZW50LmMKKysrIGIvc3lzL2R2Yi9jYW1zd2NsaWVudC5jCkBAIC01Miw4ICs1Miw3IEBACiAgIGlmIChjbGllbnQtPnNvY2spCiAgICAgY2xvc2UgKGNsaWVudC0+c29jayk7CiAKLSAgaWYgKGNsaWVudC0+c29ja19wYXRoKQotICAgIGdfZnJlZSAoY2xpZW50LT5zb2NrX3BhdGgpOworICBnX2ZyZWUgKGNsaWVudC0+c29ja19wYXRoKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvc3lzL2R2Yi9kdmJiYXNlYmluLmMgYi9zeXMvZHZiL2R2YmJhc2ViaW4uYwppbmRleCAyZTZkY2ZkLi5mMDAzMzU1IDEwMDY0NAotLS0gYS9zeXMvZHZiL2R2YmJhc2ViaW4uYworKysgYi9zeXMvZHZiL2R2YmJhc2ViaW4uYwpAQCAtNTk3LDggKzU5Nyw3IEBACiAKICAgLyogRklYTUUgOiBEZWFjdGl2YXRlIHByb2dyYW1zIG5vIGxvbmdlciBzZWxlY3RlZCAqLwogCi0gIGlmIChkdmJiYXNlYmluLT5wcm9ncmFtX251bWJlcnMpCi0gICAgZ19mcmVlIChkdmJiYXNlYmluLT5wcm9ncmFtX251bWJlcnMpOworICBnX2ZyZWUgKGR2YmJhc2ViaW4tPnByb2dyYW1fbnVtYmVycyk7CiAgIGR2YmJhc2ViaW4tPnByb2dyYW1fbnVtYmVycyA9IGdfc3RyZHVwIChwbik7CiAKICAgaWYgKDApCmRpZmYgLS1naXQgYS9zeXMvZHZiL2dzdGR2YnNyYy5jIGIvc3lzL2R2Yi9nc3RkdmJzcmMuYwppbmRleCBhZGJjOTczLi5iOTMyNTVmIDEwMDY0NAotLS0gYS9zeXMvZHZiL2dzdGR2YnNyYy5jCisrKyBiL3N5cy9kdmIvZ3N0ZHZic3JjLmMKQEAgLTI4LDE2ICsyOCwxNiBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZHZic3JjIG1vZHVsYXRpb249IlFBTSA2NCIgdHJhbnMtbW9kZT04ayBiYW5kd2lkdGg9OCBmcmVxdWVuY3k9NTE0MDAwMDAwIGNvZGUtcmF0ZS1scD1BVVRPIGNvZGUtcmF0ZS1ocD0yLzMgZ3VhcmQ9NCAgaGllcmFyY2h5PTAgISBtcGVndHNkZW11eCBuYW1lPWRlbXV4ICEgcXVldWUgbWF4LXNpemUtYnVmZmVycz0wIG1heC1zaXplLXRpbWU9MCAhIG1wZWcyZGVjICEgeHZpbWFnZXNpbmsgZGVtdXguICEgcXVldWUgbWF4LXNpemUtYnVmZmVycz0wIG1heC1zaXplLXRpbWU9MCAhIG1hZCAhIGFsc2FzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBkdmJzcmMgbW9kdWxhdGlvbj0iUUFNIDY0IiB0cmFucy1tb2RlPThrIGJhbmR3aWR0aD04IGZyZXF1ZW5jeT01MTQwMDAwMDAgY29kZS1yYXRlLWxwPUFVVE8gY29kZS1yYXRlLWhwPTIvMyBndWFyZD00ICBoaWVyYXJjaHk9MCAhIG1wZWd0c2RlbXV4IG5hbWU9ZGVtdXggISBxdWV1ZSBtYXgtc2l6ZS1idWZmZXJzPTAgbWF4LXNpemUtdGltZT0wICEgbXBlZzJkZWMgISB4dmltYWdlc2luayBkZW11eC4gISBxdWV1ZSBtYXgtc2l6ZS1idWZmZXJzPTAgbWF4LXNpemUtdGltZT0wICEgbWFkICEgYWxzYXNpbmsKICAqIF18IENhcHR1cmVzIGEgZnVsbCB0cmFuc3BvcnQgc3RyZWFtIGZyb20gRFZCIGNhcmQgMCB0aGF0IGlzIGEgRFZCLVQgY2FyZCBhdCB0dW5lZCBmcmVxdWVuY3kgNTE0MDAwMDAwIEh6IHdpdGggb3RoZXIgcGFyYW1ldGVycyBhcyBzZWVuIGluIHRoZSBwaXBlbGluZSBhbmQgcmVuZGVycyB0aGUgZmlyc3QgVFYgcHJvZ3JhbSBvbiB0aGUgdHJhbnNwb3J0IHN0cmVhbS4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGR2YnNyYyBtb2R1bGF0aW9uPSJRQU0gNjQiIHRyYW5zLW1vZGU9OGsgYmFuZHdpZHRoPTggZnJlcXVlbmN5PTUxNDAwMDAwMCBjb2RlLXJhdGUtbHA9QVVUTyBjb2RlLXJhdGUtaHA9Mi8zIGd1YXJkPTQgIGhpZXJhcmNoeT0wIHBpZHM9MTAwOjI1NjoyNTcgISBtcGVndHNkZW11eCBuYW1lPWRlbXV4ICEgcXVldWUgbWF4LXNpemUtYnVmZmVycz0wIG1heC1zaXplLXRpbWU9MCAhIG1wZWcyZGVjICEgeHZpbWFnZXNpbmsgZGVtdXguICEgcXVldWUgbWF4LXNpemUtYnVmZmVycz0wIG1heC1zaXplLXRpbWU9MCAhIG1hZCAhIGFsc2FzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBkdmJzcmMgbW9kdWxhdGlvbj0iUUFNIDY0IiB0cmFucy1tb2RlPThrIGJhbmR3aWR0aD04IGZyZXF1ZW5jeT01MTQwMDAwMDAgY29kZS1yYXRlLWxwPUFVVE8gY29kZS1yYXRlLWhwPTIvMyBndWFyZD00ICBoaWVyYXJjaHk9MCBwaWRzPTEwMDoyNTY6MjU3ICEgbXBlZ3RzZGVtdXggbmFtZT1kZW11eCAhIHF1ZXVlIG1heC1zaXplLWJ1ZmZlcnM9MCBtYXgtc2l6ZS10aW1lPTAgISBtcGVnMmRlYyAhIHh2aW1hZ2VzaW5rIGRlbXV4LiAhIHF1ZXVlIG1heC1zaXplLWJ1ZmZlcnM9MCBtYXgtc2l6ZS10aW1lPTAgISBtYWQgISBhbHNhc2luawogICogXXwgQ2FwdHVyZXMgYW5kIHJlbmRlcnMgYSB0cmFuc3BvcnQgc3RyZWFtIGZyb20gRFZCIGNhcmQgMCB0aGF0IGlzIGEgRFZCLVQgY2FyZCBmb3IgYSBwcm9ncmFtIGF0IHR1bmVkIGZyZXF1ZW5jeSA1MTQwMDAwMDAgSHogd2l0aCBQTVQgUElEIDEwMCBhbmQgZWxlbWVudGFyeSBzdHJlYW0gUElEcyBvZiAyNTYsIDI1NyB3aXRoIG90aGVyIHBhcmFtZXRlcnMgYXMgc2VlbiBpbiB0aGUgcGlwZWxpbmUuCiAgKiB8WwotICogZ3N0LWxhdW5jaCBkdmJzcmMgcG9sYXJpdHk9ImgiIGZyZXF1ZW5jeT0xMTMwMjAwMCBzeW1ib2wtcmF0ZT0yNzUwMCBkaXNlcWMtc291cmNlPTAgcGlkcz01MDoxMDI6MTAzICEgbXBlZ3RzZGVtdXggbmFtZT1kZW11eCAhIHF1ZXVlIG1heC1zaXplLWJ1ZmZlcnM9MCBtYXgtc2l6ZS10aW1lPTAgISBtcGVnMmRlYyAhIHh2aW1hZ2VzaW5rIGRlbXV4LiAhIHF1ZXVlIG1heC1zaXplLWJ1ZmZlcnM9MCBtYXgtc2l6ZS10aW1lPTAgISBtYWQgISBhbHNhc2luaworICogZ3N0LWxhdW5jaC0xLjAgZHZic3JjIHBvbGFyaXR5PSJoIiBmcmVxdWVuY3k9MTEzMDIwMDAgc3ltYm9sLXJhdGU9Mjc1MDAgZGlzZXFjLXNvdXJjZT0wIHBpZHM9NTA6MTAyOjEwMyAhIG1wZWd0c2RlbXV4IG5hbWU9ZGVtdXggISBxdWV1ZSBtYXgtc2l6ZS1idWZmZXJzPTAgbWF4LXNpemUtdGltZT0wICEgbXBlZzJkZWMgISB4dmltYWdlc2luayBkZW11eC4gISBxdWV1ZSBtYXgtc2l6ZS1idWZmZXJzPTAgbWF4LXNpemUtdGltZT0wICEgbWFkICEgYWxzYXNpbmsKICAqIF18IENhcHR1cmVzIGFuZCByZW5kZXJzIGEgdHJhbnNwb3J0IHN0cmVhbSBmcm9tIERWQiBjYXJkIDAgdGhhdCBpcyBhIERWQi1TIGNhcmQgZm9yIGEgcHJvZ3JhbSBhdCB0dW5lZCBmcmVxdWVuY3kgMTEzMDIwMDAga0h6LCBzeW1ib2wgcmF0ZSBvZiAyNzUwMCBrQmQgKGtpbG8gYmF1ZHMpIHdpdGggUE1UIFBJRCBvZiA1MCBhbmQgZWxlbWVudGFyeSBzdHJlYW0gUElEcyBvZiAxMDIgYW5kIDEwMy4KICAqIHxbCi0gZ3N0LWxhdW5jaCBkdmJzcmMgZnJlcXVlbmN5PTUxNTE0Mjg1NyBndWFyZD0xNiB0cmFucy1tb2RlPSI4ayIgaXNkYnQtbGF5ZXItZW5hYmxlZD03IGlzZGJ0LXBhcnRpYWwtcmVjZXB0aW9uPTEgaXNkYnQtbGF5ZXJhLWZlYz0iMi8zIiBpc2RidC1sYXllcmEtbW9kdWxhdGlvbj0iUVBTSyIgaXNkYnQtbGF5ZXJhLXNlZ21lbnQtY291bnQ9MSBpc2RidC1sYXllcmEtdGltZS1pbnRlcmxlYXZpbmc9NCBpc2RidC1sYXllcmItZmVjPSIzLzQiIGlzZGJ0LWxheWVyYi1tb2R1bGF0aW9uPSJxYW0tNjQiIGlzZGJ0LWxheWVyYi1zZWdtZW50LWNvdW50PTEyIGlzZGJ0LWxheWVyYi10aW1lLWludGVybGVhdmluZz0yIGlzZGJ0LWxheWVyYy1mZWM9IjEvMiIgaXNkYnQtbGF5ZXJjLW1vZHVsYXRpb249InFhbS02NCIgaXNkYnQtbGF5ZXJjLXNlZ21lbnQtY291bnQ9MCBpc2RidC1sYXllcmMtdGltZS1pbnRlcmxlYXZpbmc9MCBkZWxzeXM9ImlzZGItdCIgISB0c2RlbXV4ICEgInZpZGVvL3gtaDI2NCIgISBoMjY0cGFyc2UgISBxdWV1ZSAhIGF2ZGVjX2gyNjQgISB2aWRlb2NvbnZlcnQgISBxdWV1ZSAhIGF1dG92aWRlb3NpbmsKKyBnc3QtbGF1bmNoLTEuMCBkdmJzcmMgZnJlcXVlbmN5PTUxNTE0Mjg1NyBndWFyZD0xNiB0cmFucy1tb2RlPSI4ayIgaXNkYnQtbGF5ZXItZW5hYmxlZD03IGlzZGJ0LXBhcnRpYWwtcmVjZXB0aW9uPTEgaXNkYnQtbGF5ZXJhLWZlYz0iMi8zIiBpc2RidC1sYXllcmEtbW9kdWxhdGlvbj0iUVBTSyIgaXNkYnQtbGF5ZXJhLXNlZ21lbnQtY291bnQ9MSBpc2RidC1sYXllcmEtdGltZS1pbnRlcmxlYXZpbmc9NCBpc2RidC1sYXllcmItZmVjPSIzLzQiIGlzZGJ0LWxheWVyYi1tb2R1bGF0aW9uPSJxYW0tNjQiIGlzZGJ0LWxheWVyYi1zZWdtZW50LWNvdW50PTEyIGlzZGJ0LWxheWVyYi10aW1lLWludGVybGVhdmluZz0yIGlzZGJ0LWxheWVyYy1mZWM9IjEvMiIgaXNkYnQtbGF5ZXJjLW1vZHVsYXRpb249InFhbS02NCIgaXNkYnQtbGF5ZXJjLXNlZ21lbnQtY291bnQ9MCBpc2RidC1sYXllcmMtdGltZS1pbnRlcmxlYXZpbmc9MCBkZWxzeXM9ImlzZGItdCIgISB0c2RlbXV4ICEgInZpZGVvL3gtaDI2NCIgISBoMjY0cGFyc2UgISBxdWV1ZSAhIGF2ZGVjX2gyNjQgISB2aWRlb2NvbnZlcnQgISBxdWV1ZSAhIGF1dG92aWRlb3NpbmsKICAqIF18IENhcHR1cmVzIGFuZCByZW5kZXJzIHRoZSB2aWRlbyB0cmFjayBvZiBUViBQYXJhw61iYSBIRCAoR2xvYm8gYWZmaWxpYXRlKSBpbiBDYW1waW5hIEdyYW5kZSwgQnJhemlsLiBUaGlzIGlzIGFuIElTREItVCAoQnJhemlsaWFuIElTREItVGIgdmFyaWFudCkgYnJvYWRjYXN0LgogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtOTksNyArOTksNiBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSAiX3N0ZGludC5oIgogCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKQEAgLTIwNTYsOCArMjA1NSw4IEBACiBnc3RfZHZic3JjX291dHB1dF9mcm9udGVuZF9zdGF0cyAoR3N0RHZiU3JjICogc3JjKQogewogICBmZV9zdGF0dXNfdCBzdGF0dXM7Ci0gIHVpbnQxNl90IHNuciwgX3NpZ25hbDsKLSAgdWludDMyX3QgYmVyLCBiYWRfYmxrczsKKyAgZ3VpbnQxNiBzbnIsIF9zaWduYWw7CisgIGd1aW50MzIgYmVyLCBiYWRfYmxrczsKICAgR3N0TWVzc2FnZSAqbWVzc2FnZTsKICAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmU7CiAgIGludCBmZV9mZCA9IHNyYy0+ZmRfZnJvbnRlbmQ7CkBAIC0yMDk5LDcgKzIwOTgsNyBAQAogc3RydWN0IGRpc2VxY19jbWQKIHsKICAgc3RydWN0IGR2Yl9kaXNlcWNfbWFzdGVyX2NtZCBjbWQ7Ci0gIHVpbnQzMl90IHdhaXQ7CisgIGd1aW50MzIgd2FpdDsKIH07CiAKIHN0YXRpYyB2b2lkCkBAIC0yMjkzLDggKzIyOTIsOCBAQAogICAgIGlmIChvYmplY3QtPnR1bmluZ190aW1lb3V0KQogICAgICAgZWxhcHNlZF90aW1lID0gR1NUX0NMT0NLX0RJRkYgKHN0YXJ0LCBnc3RfdXRpbF9nZXRfdGltZXN0YW1wICgpKTsKICAgICBHU1RfTE9HX09CSkVDVCAob2JqZWN0LAotICAgICAgICAiVHVuaW5nLiBUaW1lIGVsYXBzZWQgJSIgR19HVUlOVDY0X0ZPUk1BVCAiIExpbWl0ICUiIEdfR1VJTlQ2NF9GT1JNQVQsCi0gICAgICAgIGVsYXBzZWRfdGltZSwgb2JqZWN0LT50dW5pbmdfdGltZW91dCk7CisgICAgICAgICJUdW5pbmcuIFRpbWUgZWxhcHNlZCAlIiBHU1RfU1RJTUVfRk9STUFUICIgTGltaXQgJSIgR19HVUlOVDY0X0ZPUk1BVCwKKyAgICAgICAgR1NUX1NUSU1FX0FSR1MgKGVsYXBzZWRfdGltZSksIG9iamVjdC0+dHVuaW5nX3RpbWVvdXQpOwogICB9CiAKICAgaWYgKCEoc3RhdHVzICYgRkVfSEFTX0xPQ0spKSB7CmRpZmYgLS1naXQgYS9zeXMvZHZiL3BhcnNlY2hhbm5lbHMuYyBiL3N5cy9kdmIvcGFyc2VjaGFubmVscy5jCmluZGV4IDljNDZkZGIuLjFkMzA1ODAgMTAwNjQ0Ci0tLSBhL3N5cy9kdmIvcGFyc2VjaGFubmVscy5jCisrKyBiL3N5cy9kdmIvcGFyc2VjaGFubmVscy5jCkBAIC01NCw2ICs1NCw5IEBACiAgIGdjaGFyICoqbGluZXM7CiAgIGdjaGFyICpsaW5lOwogICBnY2hhciAqKmZpZWxkczsKKyAgaW50IGksIHBhcnNlZGNoYW5uZWxzID0gMDsKKyAgR0hhc2hUYWJsZSAqcmVzOworICBHRXJyb3IgKmVyciA9IE5VTEw7CiAgIGNvbnN0IGdjaGFyICp0ZXJyZXN0cmlhbFtdID0geyAiaW52ZXJzaW9uIiwgImJhbmR3aWR0aCIsCiAgICAgImNvZGUtcmF0ZS1ocCIsICJjb2RlLXJhdGUtbHAiLCAibW9kdWxhdGlvbiIsICJ0cmFuc21pc3Npb24tbW9kZSIsCiAgICAgImd1YXJkIiwgImhpZXJhcmNoeSIKQEAgLTY0LDkgKzY3LDYgQEAKICAgY29uc3QgZ2NoYXIgKmNhYmxlW10gPSB7ICJpbnZlcnNpb24iLCAic3ltYm9sLXJhdGUiLCAiY29kZS1yYXRlLWhwIiwKICAgICAibW9kdWxhdGlvbiIKICAgfTsKLSAgaW50IGksIHBhcnNlZGNoYW5uZWxzID0gMDsKLSAgR0hhc2hUYWJsZSAqcmVzOwotICBHRXJyb3IgKmVyciA9IE5VTEw7CiAKICAgR1NUX0lORk9fT0JKRUNUIChkdmJiYXNlYmluLCAicGFyc2luZyAnJXMnIiwgZmlsZW5hbWUpOwogCkBAIC03OSwxOCArNzksMzcgQEAKICAgaSA9IDA7CiAgIGxpbmUgPSBsaW5lc1swXTsKICAgd2hpbGUgKGxpbmUgIT0gTlVMTCkgewotICAgIGlmIChsaW5lWzBdICE9ICcjJykgewotICAgICAgaW50IG51bWZpZWxkczsKLSAgICAgIGdib29sZWFuIHBhcnNlZCA9IEZBTFNFOwotICAgICAgR0hhc2hUYWJsZSAqcGFyYW1zID0gZ19oYXNoX3RhYmxlX25ld19mdWxsIChnX3N0cl9oYXNoLCBnX3N0cl9lcXVhbCwKLSAgICAgICAgICBnX2ZyZWUsIGdfZnJlZSk7CisgICAgR0hhc2hUYWJsZSAqcGFyYW1zOworICAgIGludCBqLCBudW1maWVsZHM7CiAKLSAgICAgIGZpZWxkcyA9IGdfc3Ryc3BsaXQgKGxpbmUsICI6IiwgMCk7Ci0gICAgICBudW1maWVsZHMgPSBnX3N0cnZfbGVuZ3RoIChmaWVsZHMpOwotICAgICAgaWYgKG51bWZpZWxkcyA9PSA4KSB7Ci0gICAgICAgIC8qIHNhdGVsbGl0ZSAqLwotICAgICAgICBpbnQgajsKKyAgICBpZiAobGluZVswXSA9PSAnIycpCisgICAgICBnb3RvIG5leHRfbGluZTsKIAorICAgIHBhcmFtcyA9IGdfaGFzaF90YWJsZV9uZXdfZnVsbCAoZ19zdHJfaGFzaCwgZ19zdHJfZXF1YWwsIGdfZnJlZSwgZ19mcmVlKTsKKyAgICBmaWVsZHMgPSBnX3N0cnNwbGl0IChsaW5lLCAiOiIsIDApOworICAgIG51bWZpZWxkcyA9IGdfc3Rydl9sZW5ndGggKGZpZWxkcyk7CisKKyAgICBzd2l0Y2ggKG51bWZpZWxkcykgeworICAgICAgY2FzZSAxMzogICAgICAgICAgICAgICAgIC8qIHRlcnJlc3RyaWFsICovCisgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKCJ0eXBlIiksCisgICAgICAgICAgICBnX3N0cmR1cCAoInRlcnJlc3RyaWFsIikpOworICAgICAgICBmb3IgKGogPSAyOyBqIDw9IDk7IGorKykgeworICAgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKHRlcnJlc3RyaWFsW2ogLSAyXSksCisgICAgICAgICAgICAgIGdfc3RyZHVwIChmaWVsZHNbal0pKTsKKyAgICAgICAgfQorICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgiZnJlcXVlbmN5IiksCisgICAgICAgICAgICBnX3N0cmR1cCAoZmllbGRzWzFdKSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA5OiAgICAgICAgICAgICAgICAgIC8qIGNhYmxlICovCisgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKCJ0eXBlIiksIGdfc3RyZHVwICgiY2FibGUiKSk7CisgICAgICAgIGZvciAoaiA9IDI7IGogPD0gNTsgaisrKSB7CisgICAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAocGFyYW1zLCBnX3N0cmR1cCAoY2FibGVbaiAtIDJdKSwKKyAgICAgICAgICAgICAgZ19zdHJkdXAgKGZpZWxkc1tqXSkpOworICAgICAgICB9CisgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKCJmcmVxdWVuY3kiKSwKKyAgICAgICAgICAgIGdfc3RyZHVwIChmaWVsZHNbMV0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDg6ICAgICAgICAgICAgICAgICAgLyogc2F0ZWxsaXRlICovCiAgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKCJ0eXBlIiksIGdfc3RyZHVwICgic2F0ZWxsaXRlIikpOwogICAgICAgICBmb3IgKGogPSAyOyBqIDw9IDQ7IGorKykgewogICAgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKHNhdGVsbGl0ZVtqIC0gMl0pLApAQCAtMTA3LDUyICsxMjYsMzEgQEAKICAgICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgiZnJlcXVlbmN5IiksCiAgICAgICAgICAgICAgIGdfc3RyZHVwX3ByaW50ZiAoIiVkIiwgYXRvaSAoZmllbGRzWzFdKSkpOwogICAgICAgICB9Ci0gICAgICAgIHBhcnNlZCA9IFRSVUU7Ci0gICAgICB9IGVsc2UgaWYgKG51bWZpZWxkcyA9PSAxMykgewotICAgICAgICAvKiB0ZXJyZXN0cmlhbCAqLwotICAgICAgICBpbnQgajsKLQotICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgidHlwZSIpLAotICAgICAgICAgICAgZ19zdHJkdXAgKCJ0ZXJyZXN0cmlhbCIpKTsKLSAgICAgICAgZm9yIChqID0gMjsgaiA8PSA5OyBqKyspIHsKLSAgICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICh0ZXJyZXN0cmlhbFtqIC0gMl0pLAotICAgICAgICAgICAgICBnX3N0cmR1cCAoZmllbGRzW2pdKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAocGFyYW1zLCBnX3N0cmR1cCAoImZyZXF1ZW5jeSIpLAotICAgICAgICAgICAgZ19zdHJkdXAgKGZpZWxkc1sxXSkpOwotICAgICAgICBwYXJzZWQgPSBUUlVFOwotICAgICAgfSBlbHNlIGlmIChudW1maWVsZHMgPT0gOSkgewotICAgICAgICAvKiBjYWJsZSAqLwotICAgICAgICBpbnQgajsKLQotICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgidHlwZSIpLCBnX3N0cmR1cCAoImNhYmxlIikpOwotICAgICAgICBmb3IgKGogPSAyOyBqIDw9IDU7IGorKykgewotICAgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKGNhYmxlW2ogLSAyXSksCi0gICAgICAgICAgICAgIGdfc3RyZHVwIChmaWVsZHNbal0pKTsKLSAgICAgICAgfQotICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgiZnJlcXVlbmN5IiksCi0gICAgICAgICAgICBnX3N0cmR1cCAoZmllbGRzWzFdKSk7Ci0gICAgICAgIHBhcnNlZCA9IFRSVUU7Ci0gICAgICB9IGVsc2UgaWYgKG51bWZpZWxkcyA9PSA2KSB7Ci0gICAgICAgIC8qIGF0c2MgKHZzYi9xYW0pICovCisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA2OiAgICAgICAgICAgICAgICAgIC8qIGF0c2MgKHZzYi9xYW0pICovCiAgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKCJ0eXBlIiksIGdfc3RyZHVwICgiYXRzYyIpKTsKICAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAocGFyYW1zLCBnX3N0cmR1cCAoIm1vZHVsYXRpb24iKSwKICAgICAgICAgICAgIGdfc3RyZHVwIChmaWVsZHNbMl0pKTsKIAogICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgiZnJlcXVlbmN5IiksCiAgICAgICAgICAgICBnX3N0cmR1cCAoZmllbGRzWzFdKSk7Ci0gICAgICAgIHBhcnNlZCA9IFRSVUU7Ci0gICAgICB9Ci0gICAgICBpZiAocGFyc2VkKSB7Ci0gICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKCJzaWQiKSwKLSAgICAgICAgICAgIGdfc3RyZHVwIChmaWVsZHNbbnVtZmllbGRzIC0gMV0pKTsKLSAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAocmVzLCBnX3N0cmR1cCAoZmllbGRzWzBdKSwgcGFyYW1zKTsKLSAgICAgICAgcGFyc2VkY2hhbm5lbHMrKzsKLSAgICAgIH0KLSAgICAgIGdfc3RyZnJlZXYgKGZpZWxkcyk7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgZ290byBub3RfcGFyc2VkOwogICAgIH0KKworICAgIC8qIHBhcnNlZCAqLworICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKCJzaWQiKSwKKyAgICAgICAgZ19zdHJkdXAgKGZpZWxkc1tudW1maWVsZHMgLSAxXSkpOworICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHJlcywgZ19zdHJkdXAgKGZpZWxkc1swXSksIHBhcmFtcyk7CisgICAgcGFyc2VkY2hhbm5lbHMrKzsKKworICBub3RfcGFyc2VkOgorICAgIGdfc3RyZnJlZXYgKGZpZWxkcyk7CisgIG5leHRfbGluZToKICAgICBsaW5lID0gbGluZXNbKytpXTsKICAgfQorCiAgIGdfc3RyZnJlZXYgKGxpbmVzKTsKICAgZ19mcmVlIChjb250ZW50cyk7CiAKQEAgLTE2MiwzMiArMTYwLDI3IEBACiAgIHJldHVybiByZXM7CiAKIG9wZW5fZmFpbDoKLSAgewotICAgIGlmIChlcnItPmNvZGUgPT0gR19GSUxFX0VSUk9SX05PRU5UKSB7Ci0gICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9SRVNPVVJDRV9FUlJPUiwgR1NUX1JFU09VUkNFX0VSUk9SX05PVF9GT1VORCwKLSAgICAgICAgICBfKCJDb3VsZG4ndCBmaW5kIERWQiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gZmlsZSIpKTsKLSAgICB9IGVsc2UgewotICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfUkVTT1VSQ0VfRVJST1IsIEdTVF9SRVNPVVJDRV9FUlJPUl9SRUFELAotICAgICAgICAgIF8oIkNvdWxkbid0IGxvYWQgRFZCIGNoYW5uZWwgY29uZmlndXJhdGlvbiBmaWxlOiAlcyIpLCBlcnItPm1lc3NhZ2UpOwotICAgIH0KLSAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgaWYgKGVyci0+Y29kZSA9PSBHX0ZJTEVfRVJST1JfTk9FTlQpIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9SRVNPVVJDRV9FUlJPUiwgR1NUX1JFU09VUkNFX0VSUk9SX05PVF9GT1VORCwKKyAgICAgICAgXygiQ291bGRuJ3QgZmluZCBEVkIgY2hhbm5lbCBjb25maWd1cmF0aW9uIGZpbGUiKSk7CisgIH0gZWxzZSB7CisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfUkVTT1VSQ0VfRVJST1IsIEdTVF9SRVNPVVJDRV9FUlJPUl9SRUFELAorICAgICAgICBfKCJDb3VsZG4ndCBsb2FkIERWQiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gZmlsZTogJXMiKSwgZXJyLT5tZXNzYWdlKTsKICAgfQorICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKKyAgcmV0dXJuIE5VTEw7CiAKIG5vX2NoYW5uZWxzOgotICB7Ci0gICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfUkVTT1VSQ0VfRVJST1IsIEdTVF9SRVNPVVJDRV9FUlJPUl9GQUlMRUQsCi0gICAgICAgIF8oIkRWQiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBkb2Vzbid0IGNvbnRhaW4gYW55IGNoYW5uZWxzIikpOwotICAgIGdfaGFzaF90YWJsZV91bnJlZiAocmVzKTsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQorICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9SRVNPVVJDRV9FUlJPUiwgR1NUX1JFU09VUkNFX0VSUk9SX0ZBSUxFRCwKKyAgICAgIF8oIkRWQiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBkb2Vzbid0IGNvbnRhaW4gYW55IGNoYW5uZWxzIikpOworICBnX2hhc2hfdGFibGVfdW5yZWYgKHJlcyk7CisgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KIHJlbW92ZV9jaGFubmVsX2Zyb21faGFzaCAoZ3BvaW50ZXIga2V5LCBncG9pbnRlciB2YWx1ZSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQogewotICBpZiAoa2V5KQotICAgIGdfZnJlZSAoa2V5KTsKKyAgZ19mcmVlIChrZXkpOwogICBpZiAodmFsdWUpCiAgICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kgKChHSGFzaFRhYmxlICopIHZhbHVlKTsKICAgcmV0dXJuIFRSVUU7CmRpZmYgLS1naXQgYS9zeXMvZmJkZXYvTWFrZWZpbGUuaW4gYi9zeXMvZmJkZXYvTWFrZWZpbGUuaW4KaW5kZXggODJhMWQ3ZC4uZWQyYWFmZCAxMDA2NDQKLS0tIGEvc3lzL2ZiZGV2L01ha2VmaWxlLmluCisrKyBiL3N5cy9mYmRldi9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3N5cy9mYmRldi9nc3RmYmRldnNpbmsuYyBiL3N5cy9mYmRldi9nc3RmYmRldnNpbmsuYwppbmRleCBjYzM5MTNiLi5iNTU5YTdlIDEwMDY0NAotLS0gYS9zeXMvZmJkZXYvZ3N0ZmJkZXZzaW5rLmMKKysrIGIvc3lzL2ZiZGV2L2dzdGZiZGV2c2luay5jCkBAIC0yMjcsNyArMjI3LDcgQEAKICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJoZWlnaHQiLCAmZmJkZXZzaW5rLT5oZWlnaHQpOwogCiAgIC8qIGNhbGN1bGF0ZSBjZW50ZXJpbmcgYW5kIHNjYW5sZW5ndGhzIGZvciB0aGUgdmlkZW8gKi8KLSAgZmJkZXZzaW5rLT5ieXRlc3BwID0gZmJkZXZzaW5rLT5maXhpbmZvLmxpbmVfbGVuZ3RoIC8gZmJkZXZzaW5rLT52YXJpbmZvLnhyZXM7CisgIGZiZGV2c2luay0+Ynl0ZXNwcCA9IGZiZGV2c2luay0+Zml4aW5mby5saW5lX2xlbmd0aCAvIGZiZGV2c2luay0+dmFyaW5mby54cmVzX3ZpcnR1YWw7CiAKICAgZmJkZXZzaW5rLT5jeCA9ICgoaW50KSBmYmRldnNpbmstPnZhcmluZm8ueHJlcyAtIGZiZGV2c2luay0+d2lkdGgpIC8gMjsKICAgaWYgKGZiZGV2c2luay0+Y3ggPCAwKQpkaWZmIC0tZ2l0IGEvc3lzL2xpbnN5cy9NYWtlZmlsZS5pbiBiL3N5cy9saW5zeXMvTWFrZWZpbGUuaW4KaW5kZXggMTFjYTc2NC4uOGI2MTVkZiAxMDA2NDQKLS0tIGEvc3lzL2xpbnN5cy9NYWtlZmlsZS5pbgorKysgYi9zeXMvbGluc3lzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL252ZW5jL01ha2VmaWxlLmFtIGIvc3lzL252ZW5jL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4YzlhMmMKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvbnZlbmMvTWFrZWZpbGUuYW0KQEAgLTAsMCArMSwzMyBAQAorcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0bnZlbmMubGEKKworbGliZ3N0bnZlbmNfbGFfU09VUkNFUyA9IFwKKwlnc3RudmVuYy5jIFwKKwlnc3RudmJhc2VlbmMuYyBcCisJZ3N0bnZoMjY0ZW5jLmMKKworbm9pbnN0X0hFQURFUlMgPSBcCisJZ3N0bnZlbmMuaCBcCisJZ3N0bnZiYXNlZW5jLmggXAorCWdzdG52aDI2NGVuYy5oCisKK2xpYmdzdG52ZW5jX2xhX0NGTEFHUyA9IFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCSQoR1NUX0NGTEFHUykgXAorCSQoR1NUX1BCVVRJTFNfQ0ZMQUdTKSBcCisJJChHU1RfVklERU9fQ0ZMQUdTKSBcCisJJChDVURBX0NGTEFHUykgXAorCSQoTlZFTkNPREVfQ0ZMQUdTKQorCitsaWJnc3RudmVuY19sYV9MSUJBREQgPSBcCisJJChHU1RfTElCUykgXAorCSQoR1NUX1BCVVRJTFNfTElCUykgXAorCSQoR1NUX1ZJREVPX0xJQlMpIFwKKwkkKENVREFfTElCUykgXAorCSQoTlZFTkNPREVfTElCUykKKworaWYgVVNFX05WRU5DX0dTVF9HTAorbGliZ3N0bnZlbmNfbGFfTElCQUREICs9IFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLSQoR1NUX0FQSV9WRVJTSU9OKS5sYQorZW5kaWYKK2xpYmdzdG52ZW5jX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKK2xpYmdzdG52ZW5jX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCmRpZmYgLS1naXQgYS9nc3QvcnRwL01ha2VmaWxlLmluIGIvc3lzL252ZW5jL01ha2VmaWxlLmluCnNpbWlsYXJpdHkgaW5kZXggODQlCnJlbmFtZSBmcm9tIGdzdC9ydHAvTWFrZWZpbGUuaW4KcmVuYW1lIHRvIHN5cy9udmVuYy9NYWtlZmlsZS5pbgppbmRleCA3NmFlMWUwLi4xODY0NDdjIDEwMDY0NAotLS0gYS9nc3QvcnRwL01ha2VmaWxlLmluCisrKyBiL3N5cy9udmVuYy9NYWtlZmlsZS5pbgpAQCAtOTAsNyArOTAsMTAgQEAKIGJ1aWxkX3RyaXBsZXQgPSBAYnVpbGRACiBob3N0X3RyaXBsZXQgPSBAaG9zdEAKIHRhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKLXN1YmRpciA9IGdzdC9ydHAKK0BVU0VfTlZFTkNfR1NUX0dMX1RSVUVAYW1fX2FwcGVuZF8xID0gXAorQFVTRV9OVkVOQ19HU1RfR0xfVFJVRUAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9nbC9saWJnc3RnbC0kKEdTVF9BUElfVkVSU0lPTikubGEKKworc3ViZGlyID0gc3lzL252ZW5jCiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CiBhbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYWMtZXhwYW5kLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hdXRvLWFsdC5tNCBcCkBAIC0xMTYsMTYgKzExOSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE2NCwyMiArMTY2LDIwIEBACiBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIKIExUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQotbGliZ3N0cnRwYmFkX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvbGliZ3N0Y29kZWNwYXJzZXJzLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCitsaWJnc3RudmVuY19sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18xKQotYW1fbGliZ3N0cnRwYmFkX2xhX09CSkVDVFMgPSBsaWJnc3RydHBiYWRfbGEtZ3N0cnRwLmxvIFwKLQlsaWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NWRlcGF5LmxvIFwKLQlsaWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NXBheS5sbwotbGliZ3N0cnRwYmFkX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdHJ0cGJhZF9sYV9PQkpFQ1RTKQorCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fYXBwZW5kXzEpCithbV9saWJnc3RudmVuY19sYV9PQkpFQ1RTID0gbGliZ3N0bnZlbmNfbGEtZ3N0bnZlbmMubG8gXAorCWxpYmdzdG52ZW5jX2xhLWdzdG52YmFzZWVuYy5sbyBsaWJnc3RudmVuY19sYS1nc3RudmgyNjRlbmMubG8KK2xpYmdzdG52ZW5jX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdG52ZW5jX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CiBhbV9fdl9sdF8xID0gCi1saWJnc3RydHBiYWRfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCi0JJChsaWJnc3RydHBiYWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAotCSQoQ0NMRCkgJChsaWJnc3RydHBiYWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAotCSQobGliZ3N0cnRwYmFkX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK2xpYmdzdG52ZW5jX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAorCSQobGliZ3N0bnZlbmNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAorCSQoQ0NMRCkgJChsaWJnc3RudmVuY19sYV9DRkxBR1MpICQoQ0ZMQUdTKSBcCisJJChsaWJnc3RudmVuY19sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACiBBTV9WX1AgPSAkKGFtX192X1BfQEFNX1ZAKQogYW1fX3ZfUF8gPSAkKGFtX192X1BfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9QXzAgPSBmYWxzZQpAQCAtMjE0LDggKzIxNCw4IEBACiBhbV9fdl9DQ0xEXyA9ICQoYW1fX3ZfQ0NMRF9AQU1fREVGQVVMVF9WQCkKIGFtX192X0NDTERfMCA9IEBlY2hvICIgIENDTEQgICAgIiAkQDsKIGFtX192X0NDTERfMSA9IAotU09VUkNFUyA9ICQobGliZ3N0cnRwYmFkX2xhX1NPVVJDRVMpCi1ESVNUX1NPVVJDRVMgPSAkKGxpYmdzdHJ0cGJhZF9sYV9TT1VSQ0VTKQorU09VUkNFUyA9ICQobGliZ3N0bnZlbmNfbGFfU09VUkNFUykKK0RJU1RfU09VUkNFUyA9ICQobGliZ3N0bnZlbmNfbGFfU09VUkNFUykKIGFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0gXAogICBjYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKICAgICBufG5vfE5PKSBmYWxzZTs7IFwKQEAgLTI0MSw3ICsyNDEsOCBAQAogICBkb25lIHwgJChhbV9fdW5pcXVpZnlfaW5wdXQpYAogRVRBR1MgPSBldGFncwogQ1RBR1MgPSBjdGFncwotYW1fX0RJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX3NyY2RpcikvZGVwY29tcAorYW1fX0RJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX3NyY2RpcikvZGVwY29tcCBSRUFETUUgXAorCVRPRE8KIERJU1RGSUxFUyA9ICQoRElTVF9DT01NT04pICQoRElTVF9TT1VSQ0VTKSAkKFRFWElORk9TKSAkKEVYVFJBX0RJU1QpCiBBQ0xPQ0FMID0gQEFDTE9DQUxACiBBQ0xPQ0FMX0FNRkxBR1MgPSBAQUNMT0NBTF9BTUZMQUdTQApAQCAtMjc4LDYgKzI3OSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE1LDYgKzMxOCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIzLDcgKzMyOCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Miw4ICszNDYsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYwLDE2ICszNjUsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk1LDYgKzQwMSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMCw2ICs0MjgsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjEsNiArNTMxLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNCw4ICs1NDUsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTEsNiArNTYwLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOCwxNiArNjE5LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY5LDYgKzY4Miw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzksNiArNjkzLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg4LDYgKzcwMyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjUsNyArNzQyLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NjUsMzEgKzc4MSwzMCBAQAogdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RydHBiYWQubGEKLWxpYmdzdHJ0cGJhZF9sYV9TT1VSQ0VTID0gXAotCWdzdHJ0cC5jIFwKLQlnc3RydHBoMjY1ZGVwYXkuYyBcCi0JZ3N0cnRwaDI2NXBheS5jCitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RudmVuYy5sYQorbGliZ3N0bnZlbmNfbGFfU09VUkNFUyA9IFwKKwlnc3RudmVuYy5jIFwKKwlnc3RudmJhc2VlbmMuYyBcCisJZ3N0bnZoMjY0ZW5jLmMKIAotbGliZ3N0cnRwYmFkX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpIFwKLQkkKEdTVF9DRkxBR1MpCi0KLWxpYmdzdHJ0cGJhZF9sYV9MSUJBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAotCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2xpYmdzdGNvZGVjcGFyc2Vycy0kKEdTVF9BUElfVkVSU0lPTikubGEgXAotCS1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCS1sZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCS1sZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQktbGdzdHJ0cC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JLWxnc3RwYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpIFwKLQkkKExJQk0pCi0KLWxpYmdzdHJ0cGJhZF9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCi1saWJnc3RydHBiYWRfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKIG5vaW5zdF9IRUFERVJTID0gXAotCWdzdHJ0cGgyNjVkZXBheS5oIFwKLQlnc3RydHBoMjY1cGF5LmgKKwlnc3RudmVuYy5oIFwKKwlnc3RudmJhc2VlbmMuaCBcCisJZ3N0bnZoMjY0ZW5jLmgKIAorbGliZ3N0bnZlbmNfbGFfQ0ZMQUdTID0gXAorCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCisJJChHU1RfQ0ZMQUdTKSBcCisJJChHU1RfUEJVVElMU19DRkxBR1MpIFwKKwkkKEdTVF9WSURFT19DRkxBR1MpIFwKKwkkKENVREFfQ0ZMQUdTKSBcCisJJChOVkVOQ09ERV9DRkxBR1MpCisKK2xpYmdzdG52ZW5jX2xhX0xJQkFERCA9ICQoR1NUX0xJQlMpICQoR1NUX1BCVVRJTFNfTElCUykgXAorCSQoR1NUX1ZJREVPX0xJQlMpICQoQ1VEQV9MSUJTKSAkKE5WRU5DT0RFX0xJQlMpIFwKKwkkKGFtX19hcHBlbmRfMSkKK2xpYmdzdG52ZW5jX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKK2xpYmdzdG52ZW5jX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiBhbGw6IGFsbC1hbQogCiAuU1VGRklYRVM6CkBAIC04MDMsOSArODE4LDkgQEAKIAkgICAgICBleGl0IDE7OyBcCiAJICBlc2FjOyBcCiAJZG9uZTsgXAotCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZ251IGdzdC9ydHAvTWFrZWZpbGUnOyBcCisJZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgc3lzL252ZW5jL01ha2VmaWxlJzsgXAogCSQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpICYmIFwKLQkgICQoQVVUT01BS0UpIC0tZ251IGdzdC9ydHAvTWFrZWZpbGUKKwkgICQoQVVUT01BS0UpIC0tZ251IHN5cy9udmVuYy9NYWtlZmlsZQogTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwogCUBjYXNlICckPycgaW4gXAogCSAgKmNvbmZpZy5zdGF0dXMqKSBcCkBAIC04NTksOCArODc0LDggQEAKIAkgIHJtIC1mICQke2xvY3N9OyBcCiAJfQogCi1saWJnc3RydHBiYWQubGE6ICQobGliZ3N0cnRwYmFkX2xhX09CSkVDVFMpICQobGliZ3N0cnRwYmFkX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RydHBiYWRfbGFfREVQRU5ERU5DSUVTKSAKLQkkKEFNX1ZfQ0NMRCkkKGxpYmdzdHJ0cGJhZF9sYV9MSU5LKSAtcnBhdGggJChwbHVnaW5kaXIpICQobGliZ3N0cnRwYmFkX2xhX09CSkVDVFMpICQobGliZ3N0cnRwYmFkX2xhX0xJQkFERCkgJChMSUJTKQorbGliZ3N0bnZlbmMubGE6ICQobGliZ3N0bnZlbmNfbGFfT0JKRUNUUykgJChsaWJnc3RudmVuY19sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0bnZlbmNfbGFfREVQRU5ERU5DSUVTKSAKKwkkKEFNX1ZfQ0NMRCkkKGxpYmdzdG52ZW5jX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3RudmVuY19sYV9PQkpFQ1RTKSAkKGxpYmdzdG52ZW5jX2xhX0xJQkFERCkgJChMSUJTKQogCiBtb3N0bHljbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLiQoT0JKRVhUKQpAQCAtODY4LDkgKzg4Myw5IEBACiBkaXN0Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi50YWIuYwogCi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cC5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1ZGVwYXkuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NXBheS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG52ZW5jX2xhLWdzdG52YmFzZWVuYy5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG52ZW5jX2xhLWdzdG52ZW5jLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0bnZlbmNfbGEtZ3N0bnZoMjY0ZW5jLlBsb0BhbV9fcXVvdGVACiAKIC5jLm86CiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCkBAIC04OTYsMjYgKzkxMSwyNiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAogCi1saWJnc3RydHBiYWRfbGEtZ3N0cnRwLmxvOiBnc3RydHAuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHJ0cGJhZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RydHBiYWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHJ0cGJhZF9sYS1nc3RydHAubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHJ0cGJhZF9sYS1nc3RydHAuVHBvIC1jIC1vIGxpYmdzdHJ0cGJhZF9sYS1nc3RydHAubG8gYHRlc3QgLWYgJ2dzdHJ0cC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RydHAuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cC5UcG8gJChERVBESVIpL2xpYmdzdHJ0cGJhZF9sYS1nc3RydHAuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0cnRwLmMnIG9iamVjdD0nbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0bnZlbmNfbGEtZ3N0bnZlbmMubG86IGdzdG52ZW5jLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RudmVuY19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RudmVuY19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0bnZlbmNfbGEtZ3N0bnZlbmMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG52ZW5jX2xhLWdzdG52ZW5jLlRwbyAtYyAtbyBsaWJnc3RudmVuY19sYS1nc3RudmVuYy5sbyBgdGVzdCAtZiAnZ3N0bnZlbmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0bnZlbmMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0bnZlbmNfbGEtZ3N0bnZlbmMuVHBvICQoREVQRElSKS9saWJnc3RudmVuY19sYS1nc3RudmVuYy5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RudmVuYy5jJyBvYmplY3Q9J2xpYmdzdG52ZW5jX2xhLWdzdG52ZW5jLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0cnRwYmFkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHJ0cGJhZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RydHBiYWRfbGEtZ3N0cnRwLmxvIGB0ZXN0IC1mICdnc3RydHAuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cnRwLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RudmVuY19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RudmVuY19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RudmVuY19sYS1nc3RudmVuYy5sbyBgdGVzdCAtZiAnZ3N0bnZlbmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0bnZlbmMuYwogCi1saWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NWRlcGF5LmxvOiBnc3RydHBoMjY1ZGVwYXkuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHJ0cGJhZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RydHBiYWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1ZGVwYXkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1ZGVwYXkuVHBvIC1jIC1vIGxpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1ZGVwYXkubG8gYHRlc3QgLWYgJ2dzdHJ0cGgyNjVkZXBheS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RydHBoMjY1ZGVwYXkuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cGgyNjVkZXBheS5UcG8gJChERVBESVIpL2xpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1ZGVwYXkuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0cnRwaDI2NWRlcGF5LmMnIG9iamVjdD0nbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cGgyNjVkZXBheS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0bnZlbmNfbGEtZ3N0bnZiYXNlZW5jLmxvOiBnc3RudmJhc2VlbmMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG52ZW5jX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG52ZW5jX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RudmVuY19sYS1nc3RudmJhc2VlbmMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG52ZW5jX2xhLWdzdG52YmFzZWVuYy5UcG8gLWMgLW8gbGliZ3N0bnZlbmNfbGEtZ3N0bnZiYXNlZW5jLmxvIGB0ZXN0IC1mICdnc3RudmJhc2VlbmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0bnZiYXNlZW5jLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG52ZW5jX2xhLWdzdG52YmFzZWVuYy5UcG8gJChERVBESVIpL2xpYmdzdG52ZW5jX2xhLWdzdG52YmFzZWVuYy5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RudmJhc2VlbmMuYycgb2JqZWN0PSdsaWJnc3RudmVuY19sYS1nc3RudmJhc2VlbmMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RydHBiYWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cnRwYmFkX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1ZGVwYXkubG8gYHRlc3QgLWYgJ2dzdHJ0cGgyNjVkZXBheS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RydHBoMjY1ZGVwYXkuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG52ZW5jX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG52ZW5jX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG52ZW5jX2xhLWdzdG52YmFzZWVuYy5sbyBgdGVzdCAtZiAnZ3N0bnZiYXNlZW5jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG52YmFzZWVuYy5jCiAKLWxpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1cGF5LmxvOiBnc3RydHBoMjY1cGF5LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RydHBiYWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cnRwYmFkX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NXBheS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cGgyNjVwYXkuVHBvIC1jIC1vIGxpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1cGF5LmxvIGB0ZXN0IC1mICdnc3RydHBoMjY1cGF5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHJ0cGgyNjVwYXkuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cGgyNjVwYXkuVHBvICQoREVQRElSKS9saWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NXBheS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RydHBoMjY1cGF5LmMnIG9iamVjdD0nbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cGgyNjVwYXkubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdG52ZW5jX2xhLWdzdG52aDI2NGVuYy5sbzogZ3N0bnZoMjY0ZW5jLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RudmVuY19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RudmVuY19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0bnZlbmNfbGEtZ3N0bnZoMjY0ZW5jLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RudmVuY19sYS1nc3RudmgyNjRlbmMuVHBvIC1jIC1vIGxpYmdzdG52ZW5jX2xhLWdzdG52aDI2NGVuYy5sbyBgdGVzdCAtZiAnZ3N0bnZoMjY0ZW5jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG52aDI2NGVuYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RudmVuY19sYS1nc3RudmgyNjRlbmMuVHBvICQoREVQRElSKS9saWJnc3RudmVuY19sYS1nc3RudmgyNjRlbmMuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0bnZoMjY0ZW5jLmMnIG9iamVjdD0nbGliZ3N0bnZlbmNfbGEtZ3N0bnZoMjY0ZW5jLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0cnRwYmFkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHJ0cGJhZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NXBheS5sbyBgdGVzdCAtZiAnZ3N0cnRwaDI2NXBheS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RydHBoMjY1cGF5LmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RudmVuY19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RudmVuY19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RudmVuY19sYS1nc3RudmgyNjRlbmMubG8gYHRlc3QgLWYgJ2dzdG52aDI2NGVuYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RudmgyNjRlbmMuYwogCiBtb3N0bHljbGVhbi1saWJ0b29sOgogCS1ybSAtZiAqLmxvCmRpZmYgLS1naXQgYS9zeXMvbnZlbmMvUkVBRE1FIGIvc3lzL252ZW5jL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmE1MmQxCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL252ZW5jL1JFQURNRQpAQCAtMCwwICsxLDMwIEBACitUaGlzIHBsdWdpbiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdpdGggTlZJRElBIGhhcmR3YXJlLiAgU3BlY2lmaWNhbGx5LCB0aGUgTlZFTkMKK2Jsb2NrIGF2YWlsYWJsZSBpbiByZWNlbnQgTlZJRElBIEdQVSBoYXJkd2FyZS4gIFRoaXMgaXMgcHJvdmlkZWQgYnkgYQorbGlibnZpZGlhLWVuY29kZSBsaWJyYXJ5IHByb3ZpZGVkIGJ5IE5WSURJQSBncmFwaGljIGRyaXZlcnMuCisKK1JlcXVpcmVtZW50cworLS0tLS0tLS0tLS0tCitDdWRhID4gNi41CitOVkVOQyA1LjAKKworU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm52aWRpYS5jb20vbnZpZGlhLXZpZGVvLWNvZGVjLXNkayBmb3IgYSBsaXN0IG9mCitzdXBwb3J0ZWQgR1BVJ3MuCisKK0J1aWxkaW5nCistLS0tLS0tLQorMS4gUmV0cmlldmUgdGhlIE5WRU5DIFNESworZnJvbSBodHRwczovL2RldmVsb3Blci5udmlkaWEuY29tL252aWRpYS12aWRlby1jb2RlYy1zZGsKKy0gaHR0cDovL2RldmVsb3Blci5kb3dubG9hZC5udmlkaWEuY29tL2NvbXB1dGUvbnZlbmMvdjUuMC9udmVuY181LjAuMV9zZGsuemlwCisyLiB1bnppcCB0aGlzIHNvbWV3aGVyZSBhbmQgcmV0cmVpdmUgb3Igbm90ZSB0aGUgbG9jYXRpb24gb2YgdGhlCitudkVuY29kZUFQSS5oIHVuZGVyIG52ZW5jX2FwaS01LjAuMS9TYW1wbGVzL2NvbW1vbi9pbmMvCiszLiBSZXRyZWl2ZSBhIHZlcnNpb24gb2YgY3VkYSBmcm9tCitodHRwczovL2RldmVsb3Blci5udmlkaWEuY29tL2N1ZGEtZG93bmxvYWRzIGFuZCBpbnN0YWxsIHNvbWV3aGVyZSBub3RpbmcKK3RoZSBpbnN0YWxsYXRpb24gcHJlZml4ICh0eXBpY2FsbHkgL29wdC9jdWRhIG9yIC91c3IvbG9jYWwvY3VkYSkKKzQuIE5vdyB0aGF0IHRoZSBkZXBlbmRlbmNpZXMgYXJlIHNvcnRlZCwgdGhlcmUgYXJlIGEgY291cGxlIG9mCitlbnZpcm9ubWVudCB2YXJpYWJsZXMgYW5kL29yIG9yIGNvbmZpZ3VyZSBhcmd1bWVudHMgdGhhdCBhcmUgbmVlZGVkIHRvCitkZXRlY3QgdGhlIG5lY2Vzc2FyeSBsaWJyYXJpZXMvaGVhZGVycy4KKworTW9yZSBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nIGxvY2F0aW9ucworCitbMV0gLSBodHRwczovL2RldmVsb3Blci5udmlkaWEuY29tL2N1ZGEtZG93bmxvYWRzCitbMl0gLSBodHRwczovL2RldmVsb3Blci5udmlkaWEuY29tL252aWRpYS12aWRlby1jb2RlYy1zZGsgCmRpZmYgLS1naXQgYS9zeXMvbnZlbmMvVE9ETyBiL3N5cy9udmVuYy9UT0RPCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NDIyY2UKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvbnZlbmMvVE9ETwpAQCAtMCwwICsxLDExIEBACistIGNoZWNrIHN1cHBvcnRlZCBlbmNvZGluZyBmb3JtYXRzIChILjI2NCBldGMuKSwgZG9uJ3QgYXNzdW1lIEguMjY0CisKKy0gY2hlY2sgcGVyZm9ybWFuY2UgKHRpbWUgdGFrZW4pIG9mIGZpcnN0IGN1SW5pdCgpCisKKy0gcHJvdmlkZSBidWZmZXIgcG9vbAorCistIG1vcmUgZm9ybWF0cworCistIHJlbmVnb3RpYXRpb24KKworLSBzdXBwb3J0IG91dHB1dHRpbmcgb2YgQVZDIGFzIHdlbGwgYXMgYnl0ZS1zdHJlYW0sIG5lZ290aWF0ZSBhdXRvbWF0aWNhbGx5CmRpZmYgLS1naXQgYS9zeXMvbnZlbmMvZ3N0bnZiYXNlZW5jLmMgYi9zeXMvbnZlbmMvZ3N0bnZiYXNlZW5jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJiZGZlMwotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9udmVuYy9nc3RudmJhc2VlbmMuYwpAQCAtMCwwICsxLDE1OTQgQEAKKy8qIEdTdHJlYW1lciBOVkVOQyBwbHVnaW4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDZW50cmljdWxhciBMdGQKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3RudmJhc2VlbmMuaCIKKworI2luY2x1ZGUgPGdzdC9wYnV0aWxzL2NvZGVjLXV0aWxzLmg+CisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2lmIEhBVkVfTlZFTkNfR1NUX0dMCisjaW5jbHVkZSA8Y3VkYS5oPgorI2luY2x1ZGUgPGN1ZGFfcnVudGltZV9hcGkuaD4KKyNpbmNsdWRlIDxjdWRhX2dsX2ludGVyb3AuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKyNlbmRpZgorCisvKiBUT0RPOgorICogIC0gcmVzZXQgbGFzdF9mbG93IG9uIEZMVVNIX1NUT1AgKHNlZWtpbmcpCisgKi8KKworI2RlZmluZSBOX0JVRkZFUlNfUEVSX0ZSQU1FIDEKKyNkZWZpbmUgU1VQUE9SVEVEX0dMX0FQSVMgR1NUX0dMX0FQSV9PUEVOR0wzCisKKy8qIG1hZ2ljIHBvaW50ZXIgdmFsdWUgd2UgY2FuIHB1dCBpbiB0aGUgYXN5bmMgcXVldWUgdG8gc2lnbmFsIHNodXQgZG93biAqLworI2RlZmluZSBTSFVURE9XTl9DT09LSUUgKChncG9pbnRlcilHSU5UX1RPX1BPSU5URVIgKDEpKQorCisjZGVmaW5lIHBhcmVudF9jbGFzcyBnc3RfbnZfYmFzZV9lbmNfcGFyZW50X2NsYXNzCitHX0RFRklORV9BQlNUUkFDVF9UWVBFIChHc3ROdkJhc2VFbmMsIGdzdF9udl9iYXNlX2VuYywgR1NUX1RZUEVfVklERU9fRU5DT0RFUik7CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rX2ZhY3RvcnkgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAorICAgIEdTVF9QQURfU0lOSywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdywgIiAiZm9ybWF0ID0gKHN0cmluZykgTlYxMiwgIiAvLyBUT0RPOiBJNDIwLCBZVjEyLCBZNDQ0IHN1cHBvcnQKKyAgICAgICAgIndpZHRoID0gKGludCkgWyAxNiwgNDA5NiBdLCBoZWlnaHQgPSAoaW50KSBbIDE2LCAyMTYwIF0sICIKKyAgICAgICAgImZyYW1lcmF0ZSA9IChmcmFjdGlvbikgWzAsIE1BWF0sIgorICAgICAgICAiaW50ZXJsYWNlLW1vZGUgPSB7IHByb2dyZXNzaXZlLCBtaXhlZCwgaW50ZXJsZWF2ZWQgfSAiCisjaWYgSEFWRV9OVkVOQ19HU1RfR0wKKyAgICAgICAgIjsiCisgICAgICAgICJ2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCAiCisgICAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSB7IE5WMTIsIFk0NDQgfSwgIgorICAgICAgICAid2lkdGggPSAoaW50KSBbIDE2LCA0MDk2IF0sIGhlaWdodCA9IChpbnQpIFsgMTYsIDIxNjAgXSwgIgorICAgICAgICAiZnJhbWVyYXRlID0gKGZyYWN0aW9uKSBbMCwgTUFYXSwiCisgICAgICAgICJpbnRlcmxhY2UtbW9kZSA9IHsgcHJvZ3Jlc3NpdmUsIG1peGVkLCBpbnRlcmxlYXZlZCB9ICIKKyNlbmRpZgorICAgICkpOworCitlbnVtCit7CisgIFBST1BfMCwKKyAgUFJPUF9ERVZJQ0VfSUQsCit9OworCisvKiBUaGlzIGxvY2sgaXMgbmVlZGVkIHRvIHByZXZlbnQgdGhlIHNpdHVhdGlvbiB3aGVyZSBtdWx0aXBsZSBlbmNvZGVycyBhcmUKKyAqIGluaXRpYWxpc2VkIGF0IHRoZSBzYW1lIHRpbWUgd2hpY2ggYXBwZWFycyB0byBjYXVzZSBleGNlc3NpdmUgQ1BVIHVzYWdlIG92ZXIKKyAqIHNvbWUgcGVyaW9kIG9mIHRpbWUuICovCitHX0xPQ0tfREVGSU5FX1NUQVRJQyAoaW5pdGlhbGl6YXRpb25fbG9jayk7CisKKyNpZiBIQVZFX05WRU5DX0dTVF9HTAorc3RydWN0IGdsX2lucHV0X3Jlc291cmNlCit7CisgIEdzdEdMTWVtb3J5ICpnbF9tZW1bR1NUX1ZJREVPX01BWF9QTEFORVNdOworICBzdHJ1Y3QgY3VkYUdyYXBoaWNzUmVzb3VyY2UgKmN1ZGFfdGV4dHVyZTsKKyAgZ3BvaW50ZXIgY3VkYV9wbGFuZV9wb2ludGVyc1tHU1RfVklERU9fTUFYX1BMQU5FU107CisgIGdwb2ludGVyIGN1ZGFfcG9pbnRlcjsKKyAgZ3NpemUgY3VkYV9zdHJpZGU7CisgIGdzaXplIGN1ZGFfbnVtX2J5dGVzOworICBOVl9FTkNfUkVHSVNURVJfUkVTT1VSQ0UgbnZfcmVzb3VyY2U7CisgIE5WX0VOQ19NQVBfSU5QVVRfUkVTT1VSQ0UgbnZfbWFwcGVkX3Jlc291cmNlOworfTsKKyNlbmRpZgorCitzdHJ1Y3QgZnJhbWVfc3RhdGUKK3sKKyAgZ2ludCBuX2J1ZmZlcnM7CisgIGdwb2ludGVyIGluX2J1ZnNbTl9CVUZGRVJTX1BFUl9GUkFNRV07CisgIGdwb2ludGVyIG91dF9idWZzW05fQlVGRkVSU19QRVJfRlJBTUVdOworfTsKKworc3RhdGljIGdib29sZWFuIGdzdF9udl9iYXNlX2VuY19vcGVuIChHc3RWaWRlb0VuY29kZXIgKiBlbmMpOworc3RhdGljIGdib29sZWFuIGdzdF9udl9iYXNlX2VuY19jbG9zZSAoR3N0VmlkZW9FbmNvZGVyICogZW5jKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbnZfYmFzZV9lbmNfc3RhcnQgKEdzdFZpZGVvRW5jb2RlciAqIGVuYyk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X252X2Jhc2VfZW5jX3N0b3AgKEdzdFZpZGVvRW5jb2RlciAqIGVuYyk7CitzdGF0aWMgdm9pZCBnc3RfbnZfYmFzZV9lbmNfc2V0X2NvbnRleHQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgIEdzdENvbnRleHQgKiBjb250ZXh0KTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbnZfYmFzZV9lbmNfc2lua19xdWVyeSAoR3N0VmlkZW9FbmNvZGVyICogZW5jLAorICAgIEdzdFF1ZXJ5ICogcXVlcnkpOworc3RhdGljIGdib29sZWFuIGdzdF9udl9iYXNlX2VuY19zZXRfZm9ybWF0IChHc3RWaWRlb0VuY29kZXIgKiBlbmMsCisgICAgR3N0VmlkZW9Db2RlY1N0YXRlICogc3RhdGUpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X252X2Jhc2VfZW5jX2hhbmRsZV9mcmFtZSAoR3N0VmlkZW9FbmNvZGVyICogZW5jLAorICAgIEdzdFZpZGVvQ29kZWNGcmFtZSAqIGZyYW1lKTsKK3N0YXRpYyB2b2lkIGdzdF9udl9iYXNlX2VuY19mcmVlX2J1ZmZlcnMgKEdzdE52QmFzZUVuYyAqIG52ZW5jKTsKK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9udl9iYXNlX2VuY19maW5pc2ggKEdzdFZpZGVvRW5jb2RlciAqIGVuYyk7CitzdGF0aWMgdm9pZCBnc3RfbnZfYmFzZV9lbmNfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOworc3RhdGljIHZvaWQgZ3N0X252X2Jhc2VfZW5jX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKK3N0YXRpYyB2b2lkIGdzdF9udl9iYXNlX2VuY19maW5hbGl6ZSAoR09iamVjdCAqIG9iaik7CitzdGF0aWMgR3N0Q2FwcyAqZ3N0X252X2Jhc2VfZW5jX2dldGNhcHMgKEdzdFZpZGVvRW5jb2RlciAqIGVuYywKKyAgICBHc3RDYXBzICogZmlsdGVyKTsKKworc3RhdGljIHZvaWQKK2dzdF9udl9iYXNlX2VuY19jbGFzc19pbml0IChHc3ROdkJhc2VFbmNDbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOworICBHc3RWaWRlb0VuY29kZXJDbGFzcyAqdmlkZW9lbmNfY2xhc3MgPSBHU1RfVklERU9fRU5DT0RFUl9DTEFTUyAoa2xhc3MpOworCisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9udl9iYXNlX2VuY19zZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9udl9iYXNlX2VuY19nZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X252X2Jhc2VfZW5jX2ZpbmFsaXplOworCisgIGVsZW1lbnRfY2xhc3MtPnNldF9jb250ZXh0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9udl9iYXNlX2VuY19zZXRfY29udGV4dCk7CisKKyAgdmlkZW9lbmNfY2xhc3MtPm9wZW4gPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X252X2Jhc2VfZW5jX29wZW4pOworICB2aWRlb2VuY19jbGFzcy0+Y2xvc2UgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X252X2Jhc2VfZW5jX2Nsb3NlKTsKKworICB2aWRlb2VuY19jbGFzcy0+c3RhcnQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X252X2Jhc2VfZW5jX3N0YXJ0KTsKKyAgdmlkZW9lbmNfY2xhc3MtPnN0b3AgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X252X2Jhc2VfZW5jX3N0b3ApOworCisgIHZpZGVvZW5jX2NsYXNzLT5zZXRfZm9ybWF0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9udl9iYXNlX2VuY19zZXRfZm9ybWF0KTsKKyAgdmlkZW9lbmNfY2xhc3MtPmdldGNhcHMgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X252X2Jhc2VfZW5jX2dldGNhcHMpOworICB2aWRlb2VuY19jbGFzcy0+aGFuZGxlX2ZyYW1lID0KKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbnZfYmFzZV9lbmNfaGFuZGxlX2ZyYW1lKTsKKyAgdmlkZW9lbmNfY2xhc3MtPmZpbmlzaCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbnZfYmFzZV9lbmNfZmluaXNoKTsKKyAgdmlkZW9lbmNfY2xhc3MtPnNpbmtfcXVlcnkgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X252X2Jhc2VfZW5jX3NpbmtfcXVlcnkpOworCisgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCisgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzaW5rX2ZhY3RvcnkpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0RFVklDRV9JRCwKKyAgICAgIGdfcGFyYW1fc3BlY191aW50ICgiY3VkYS1kZXZpY2UtaWQiLAorICAgICAgICAgICJDdWRhIERldmljZSBJRCIsCisgICAgICAgICAgIlNldCB0aGUgR1BVIGRldmljZSB0byB1c2UgZm9yIG9wZXJhdGlvbnMiLAorICAgICAgICAgIDAsIEdfTUFYVUlOVCwgMCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2dldF9zdXBwb3J0ZWRfaW5wdXRfZm9ybWF0cyAoR3N0TnZCYXNlRW5jICogbnZlbmMpCit7CisgIEdzdE52QmFzZUVuY0NsYXNzICpudmVuY19jbGFzcyA9IEdTVF9OVl9CQVNFX0VOQ19HRVRfQ0xBU1MgKG52ZW5jKTsKKyAgZ3VpbnQ2NCBmb3JtYXRfbWFzayA9IDA7CisgIHVpbnQzMl90IGksIG51bSA9IDA7CisgIE5WX0VOQ19CVUZGRVJfRk9STUFUIGZvcm1hdHNbNjRdOworICBHVmFsdWUgbGlzdCA9IEdfVkFMVUVfSU5JVDsKKyAgR1ZhbHVlIHZhbCA9IEdfVkFMVUVfSU5JVDsKKworICBOdkVuY0dldElucHV0Rm9ybWF0cyAobnZlbmMtPmVuY29kZXIsIG52ZW5jX2NsYXNzLT5jb2RlY19pZCwgZm9ybWF0cywKKyAgICAgIEdfTl9FTEVNRU5UUyAoZm9ybWF0cyksICZudW0pOworCisgIGZvciAoaSA9IDA7IGkgPCBudW07ICsraSkgeworICAgIEdTVF9JTkZPX09CSkVDVCAobnZlbmMsICJpbnB1dCBmb3JtYXQ6IDB4JTA4eCIsIGZvcm1hdHNbaV0pOworICAgIC8qIEFwcGFyZW50bHkgd2UgY2FuIGp1c3QgaWdub3JlIHRoZSB0aWxlZCBmb3JtYXRzIGFuZCBjYW4gZmVlZAorICAgICAqIGl0IHRoZSByZXNwZWN0aXZlIHVudGlsZWQgcGxhbmFyIGZvcm1hdCBpbnN0ZWFkID8hICovCisgICAgc3dpdGNoIChmb3JtYXRzW2ldKSB7CisgICAgICBjYXNlIE5WX0VOQ19CVUZGRVJfRk9STUFUX05WMTJfUEw6CisgICAgICBjYXNlIE5WX0VOQ19CVUZGRVJfRk9STUFUX05WMTJfVElMRUQxNngxNjoKKyAgICAgIGNhc2UgTlZfRU5DX0JVRkZFUl9GT1JNQVRfTlYxMl9USUxFRDY0eDE2OgorICAgICAgICBmb3JtYXRfbWFzayB8PSAoMSA8PCBHU1RfVklERU9fRk9STUFUX05WMTIpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgTlZfRU5DX0JVRkZFUl9GT1JNQVRfWVYxMl9QTDoKKyAgICAgIGNhc2UgTlZfRU5DX0JVRkZFUl9GT1JNQVRfWVYxMl9USUxFRDE2eDE2OgorICAgICAgY2FzZSBOVl9FTkNfQlVGRkVSX0ZPUk1BVF9ZVjEyX1RJTEVENjR4MTY6CisgICAgICAgIGZvcm1hdF9tYXNrIHw9ICgxIDw8IEdTVF9WSURFT19GT1JNQVRfWVYxMik7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBOVl9FTkNfQlVGRkVSX0ZPUk1BVF9JWVVWX1BMOgorICAgICAgY2FzZSBOVl9FTkNfQlVGRkVSX0ZPUk1BVF9JWVVWX1RJTEVEMTZ4MTY6CisgICAgICBjYXNlIE5WX0VOQ19CVUZGRVJfRk9STUFUX0lZVVZfVElMRUQ2NHgxNjoKKyAgICAgICAgZm9ybWF0X21hc2sgfD0gKDEgPDwgR1NUX1ZJREVPX0ZPUk1BVF9JNDIwKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIE5WX0VOQ19CVUZGRVJfRk9STUFUX1lVVjQ0NF9QTDoKKyAgICAgIGNhc2UgTlZfRU5DX0JVRkZFUl9GT1JNQVRfWVVWNDQ0X1RJTEVEMTZ4MTY6CisgICAgICBjYXNlIE5WX0VOQ19CVUZGRVJfRk9STUFUX1lVVjQ0NF9USUxFRDY0eDE2OnsKKyAgICAgICAgTlZfRU5DX0NBUFNfUEFSQU0gY2Fwc19wYXJhbSA9IHsgMCwgfTsKKyAgICAgICAgaW50IHl1djQ0NF9zdXBwb3J0ZWQgPSAwOworCisgICAgICAgIGNhcHNfcGFyYW0udmVyc2lvbiA9IE5WX0VOQ19DQVBTX1BBUkFNX1ZFUjsKKyAgICAgICAgY2Fwc19wYXJhbS5jYXBzVG9RdWVyeSA9IE5WX0VOQ19DQVBTX1NVUFBPUlRfWVVWNDQ0X0VOQ09ERTsKKworICAgICAgICBpZiAoTnZFbmNHZXRFbmNvZGVDYXBzIChudmVuYy0+ZW5jb2RlciwgbnZlbmNfY2xhc3MtPmNvZGVjX2lkLAorICAgICAgICAgICAgICAgICZjYXBzX3BhcmFtLCAmeXV2NDQ0X3N1cHBvcnRlZCkgIT0gTlZfRU5DX1NVQ0NFU1MpCisgICAgICAgICAgeXV2NDQ0X3N1cHBvcnRlZCA9IDA7CisKKyAgICAgICAgaWYgKHl1djQ0NF9zdXBwb3J0ZWQpCisgICAgICAgICAgZm9ybWF0X21hc2sgfD0gKDEgPDwgR1NUX1ZJREVPX0ZPUk1BVF9ZNDQ0KTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBkZWZhdWx0OgorICAgICAgICBHU1RfRklYTUUgKCJ1bm1hcHBlZCBpbnB1dCBmb3JtYXQ6IDB4JTA4eCIsIGZvcm1hdHNbaV0pOworICAgICAgICBicmVhazsKKyAgICB9CisgIH0KKworICBpZiAoZm9ybWF0X21hc2sgPT0gMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogcHJvY2VzcyBhIHNlY29uZCB0aW1lIHNvIHdlIGNhbiBhZGQgZm9ybWF0cyBpbiB0aGUgb3JkZXIgd2Ugd2FudCAqLworICBnX3ZhbHVlX2luaXQgKCZsaXN0LCBHU1RfVFlQRV9MSVNUKTsKKyAgZ192YWx1ZV9pbml0ICgmdmFsLCBHX1RZUEVfU1RSSU5HKTsKKyAgaWYgKChmb3JtYXRfbWFzayAmICgxIDw8IEdTVF9WSURFT19GT1JNQVRfTlYxMikpKSB7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJnZhbCwgIk5WMTIiKTsKKyAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZsaXN0LCAmdmFsKTsKKyAgfQorICBpZiAoKGZvcm1hdF9tYXNrICYgKDEgPDwgR1NUX1ZJREVPX0ZPUk1BVF9ZVjEyKSkpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmdmFsLCAiWVYxMiIpOworICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmxpc3QsICZ2YWwpOworICB9CisgIGlmICgoZm9ybWF0X21hc2sgJiAoMSA8PCBHU1RfVklERU9fRk9STUFUX0k0MjApKSkgeworICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKCZ2YWwsICJJNDIwIik7CisgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJnZhbCk7CisgIH0KKyAgaWYgKChmb3JtYXRfbWFzayAmICgxIDw8IEdTVF9WSURFT19GT1JNQVRfWTQ0NCkpKSB7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJnZhbCwgIlk0NDQiKTsKKyAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZsaXN0LCAmdmFsKTsKKyAgfQorICBnX3ZhbHVlX3Vuc2V0ICgmdmFsKTsKKworICBHU1RfT0JKRUNUX0xPQ0sgKG52ZW5jKTsKKyAgZ19mcmVlIChudmVuYy0+aW5wdXRfZm9ybWF0cyk7CisgIG52ZW5jLT5pbnB1dF9mb3JtYXRzID0gZ19tZW1kdXAgKCZsaXN0LCBzaXplb2YgKEdWYWx1ZSkpOworICBHU1RfT0JKRUNUX1VOTE9DSyAobnZlbmMpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9udl9iYXNlX2VuY19vcGVuIChHc3RWaWRlb0VuY29kZXIgKiBlbmMpCit7CisgIEdzdE52QmFzZUVuYyAqbnZlbmMgPSBHU1RfTlZfQkFTRV9FTkMgKGVuYyk7CisKKyAgbnZlbmMtPmN1ZGFfY3R4ID0gZ3N0X252ZW5jX2NyZWF0ZV9jdWRhX2NvbnRleHQgKG52ZW5jLT5jdWRhX2RldmljZV9pZCk7CisgIGlmIChudmVuYy0+Y3VkYV9jdHggPT0gTlVMTCkgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChlbmMsIExJQlJBUlksIElOSVQsIChOVUxMKSwKKyAgICAgICAgKCJGYWlsZWQgdG8gY3JlYXRlIENVREEgY29udGV4dCwgcGVyaGFwcyBDVURBIGlzIG5vdCBzdXBwb3J0ZWQuIikpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHsKKyAgICBOVl9FTkNfT1BFTl9FTkNPREVfU0VTU0lPTl9FWF9QQVJBTVMgcGFyYW1zID0geyAwLCB9OworICAgIE5WRU5DU1RBVFVTIG52X3JldDsKKworICAgIHBhcmFtcy52ZXJzaW9uID0gTlZfRU5DX09QRU5fRU5DT0RFX1NFU1NJT05fRVhfUEFSQU1TX1ZFUjsKKyAgICBwYXJhbXMuYXBpVmVyc2lvbiA9IE5WRU5DQVBJX1ZFUlNJT047CisgICAgcGFyYW1zLmRldmljZSA9IG52ZW5jLT5jdWRhX2N0eDsKKyAgICBwYXJhbXMuZGV2aWNlVHlwZSA9IE5WX0VOQ19ERVZJQ0VfVFlQRV9DVURBOworICAgIG52X3JldCA9IE52RW5jT3BlbkVuY29kZVNlc3Npb25FeCAoJnBhcmFtcywgJm52ZW5jLT5lbmNvZGVyKTsKKyAgICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gY3JlYXRlIE5WRU5DIGVuY29kZXIgc2Vzc2lvbiwgcmV0PSVkIiwgbnZfcmV0KTsKKyAgICAgIGlmIChnc3RfbnZlbmNfZGVzdHJveV9jdWRhX2NvbnRleHQgKG52ZW5jLT5jdWRhX2N0eCkpCisgICAgICAgIG52ZW5jLT5jdWRhX2N0eCA9IE5VTEw7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICAgIEdTVF9JTkZPICgiY3JlYXRlZCBOVkVOQyBlbmNvZGVyICVwIiwgbnZlbmMtPmVuY29kZXIpOworICB9CisKKyAgLyogcXVlcnkgc3VwcG9ydGVkIGlucHV0IGZvcm1hdHMgKi8KKyAgaWYgKCFfZ2V0X3N1cHBvcnRlZF9pbnB1dF9mb3JtYXRzIChudmVuYykpIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKG52ZW5jLCAiTm8gc3VwcG9ydGVkIGlucHV0IGZvcm1hdHMiKTsKKyAgICBnc3RfbnZfYmFzZV9lbmNfY2xvc2UgKGVuYyk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbnZfYmFzZV9lbmNfc2V0X2NvbnRleHQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RDb250ZXh0ICogY29udGV4dCkKK3sKKyAgR3N0TnZCYXNlRW5jICpudmVuYyA9IEdTVF9OVl9CQVNFX0VOQyAoZWxlbWVudCk7CisKKyNpZiBIQVZFX05WRU5DX0dTVF9HTAorICBnc3RfZ2xfaGFuZGxlX3NldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0LAorICAgICAgKEdzdEdMRGlzcGxheSAqKikgJiBudmVuYy0+ZGlzcGxheSwKKyAgICAgIChHc3RHTENvbnRleHQgKiopICYgbnZlbmMtPm90aGVyX2NvbnRleHQpOworICBpZiAobnZlbmMtPmRpc3BsYXkpCisgICAgZ3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwaSAoR1NUX0dMX0RJU1BMQVkgKG52ZW5jLT5kaXNwbGF5KSwKKyAgICAgICAgU1VQUE9SVEVEX0dMX0FQSVMpOworI2VuZGlmCisKKyAgR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0KTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbnZfYmFzZV9lbmNfc2lua19xdWVyeSAoR3N0VmlkZW9FbmNvZGVyICogZW5jLCBHc3RRdWVyeSAqIHF1ZXJ5KQoreworICBHc3ROdkJhc2VFbmMgKm52ZW5jID0gR1NUX05WX0JBU0VfRU5DIChlbmMpOworCisgIHN3aXRjaCAoR1NUX1FVRVJZX1RZUEUgKHF1ZXJ5KSkgeworI2lmIEhBVkVfTlZFTkNfR1NUX0dMCisgICAgY2FzZSBHU1RfUVVFUllfQ09OVEVYVDp7CisgICAgICBnYm9vbGVhbiByZXQ7CisKKyAgICAgIHJldCA9IGdzdF9nbF9oYW5kbGVfY29udGV4dF9xdWVyeSAoKEdzdEVsZW1lbnQgKikgbnZlbmMsIHF1ZXJ5LAorICAgICAgICAgIChHc3RHTERpc3BsYXkgKiopICYgbnZlbmMtPmRpc3BsYXksCisgICAgICAgICAgKEdzdEdMQ29udGV4dCAqKikgJiBudmVuYy0+b3RoZXJfY29udGV4dCk7CisgICAgICBpZiAobnZlbmMtPmRpc3BsYXkpCisgICAgICAgIGdzdF9nbF9kaXNwbGF5X2ZpbHRlcl9nbF9hcGkgKEdTVF9HTF9ESVNQTEFZIChudmVuYy0+ZGlzcGxheSksCisgICAgICAgICAgICBTVVBQT1JURURfR0xfQVBJUyk7CisKKyAgICAgIGlmIChyZXQpCisgICAgICAgIHJldHVybiByZXQ7CisgICAgICBicmVhazsKKyAgICB9CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gR1NUX1ZJREVPX0VOQ09ERVJfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNpbmtfcXVlcnkgKGVuYywgcXVlcnkpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9udl9iYXNlX2VuY19zdGFydCAoR3N0VmlkZW9FbmNvZGVyICogZW5jKQoreworICBHc3ROdkJhc2VFbmMgKm52ZW5jID0gR1NUX05WX0JBU0VfRU5DIChlbmMpOworCisgIG52ZW5jLT5iaXRzdHJlYW1fcG9vbCA9IGdfYXN5bmNfcXVldWVfbmV3ICgpOworICBudmVuYy0+Yml0c3RyZWFtX3F1ZXVlID0gZ19hc3luY19xdWV1ZV9uZXcgKCk7CisgIG52ZW5jLT5pbl9idWZzX3Bvb2wgPSBnX2FzeW5jX3F1ZXVlX25ldyAoKTsKKworICBudmVuYy0+bGFzdF9mbG93ID0gR1NUX0ZMT1dfT0s7CisKKyNpZiBIQVZFX05WRU5DX0dTVF9HTAorICB7CisgICAgZ3N0X2dsX2Vuc3VyZV9lbGVtZW50X2RhdGEgKEdTVF9FTEVNRU5UIChudmVuYyksCisgICAgICAgIChHc3RHTERpc3BsYXkgKiopICYgbnZlbmMtPmRpc3BsYXksCisgICAgICAgIChHc3RHTENvbnRleHQgKiopICYgbnZlbmMtPm90aGVyX2NvbnRleHQpOworICAgIGlmIChudmVuYy0+ZGlzcGxheSkKKyAgICAgIGdzdF9nbF9kaXNwbGF5X2ZpbHRlcl9nbF9hcGkgKEdTVF9HTF9ESVNQTEFZIChudmVuYy0+ZGlzcGxheSksCisgICAgICAgICAgU1VQUE9SVEVEX0dMX0FQSVMpOworICB9CisjZW5kaWYKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbnZfYmFzZV9lbmNfc3RvcCAoR3N0VmlkZW9FbmNvZGVyICogZW5jKQoreworICBHc3ROdkJhc2VFbmMgKm52ZW5jID0gR1NUX05WX0JBU0VfRU5DIChlbmMpOworCisgIGdzdF9udl9iYXNlX2VuY19mcmVlX2J1ZmZlcnMgKG52ZW5jKTsKKworICBpZiAobnZlbmMtPmJpdHN0cmVhbV9wb29sKSB7CisgICAgZ19hc3luY19xdWV1ZV91bnJlZiAobnZlbmMtPmJpdHN0cmVhbV9wb29sKTsKKyAgICBudmVuYy0+Yml0c3RyZWFtX3Bvb2wgPSBOVUxMOworICB9CisgIGlmIChudmVuYy0+Yml0c3RyZWFtX3F1ZXVlKSB7CisgICAgZ19hc3luY19xdWV1ZV91bnJlZiAobnZlbmMtPmJpdHN0cmVhbV9xdWV1ZSk7CisgICAgbnZlbmMtPmJpdHN0cmVhbV9xdWV1ZSA9IE5VTEw7CisgIH0KKyAgaWYgKG52ZW5jLT5pbl9idWZzX3Bvb2wpIHsKKyAgICBnX2FzeW5jX3F1ZXVlX3VucmVmIChudmVuYy0+aW5fYnVmc19wb29sKTsKKyAgICBudmVuYy0+aW5fYnVmc19wb29sID0gTlVMTDsKKyAgfQorICBpZiAobnZlbmMtPmRpc3BsYXkpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChudmVuYy0+ZGlzcGxheSk7CisgICAgbnZlbmMtPmRpc3BsYXkgPSBOVUxMOworICB9CisgIGlmIChudmVuYy0+b3RoZXJfY29udGV4dCkgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKG52ZW5jLT5vdGhlcl9jb250ZXh0KTsKKyAgICBudmVuYy0+b3RoZXJfY29udGV4dCA9IE5VTEw7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEdWYWx1ZSAqCitfZ2V0X2ludGVybGFjZV9tb2RlcyAoR3N0TnZCYXNlRW5jICogbnZlbmMpCit7CisgIEdzdE52QmFzZUVuY0NsYXNzICpudmVuY19jbGFzcyA9IEdTVF9OVl9CQVNFX0VOQ19HRVRfQ0xBU1MgKG52ZW5jKTsKKyAgTlZfRU5DX0NBUFNfUEFSQU0gY2Fwc19wYXJhbSA9IHsgMCwgfTsKKyAgR1ZhbHVlICpsaXN0ID0gZ19uZXcwIChHVmFsdWUsIDEpOworICBHVmFsdWUgdmFsID0gR19WQUxVRV9JTklUOworCisgIGdfdmFsdWVfaW5pdCAobGlzdCwgR1NUX1RZUEVfTElTVCk7CisgIGdfdmFsdWVfaW5pdCAoJnZhbCwgR19UWVBFX1NUUklORyk7CisKKyAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJnZhbCwgInByb2dyZXNzaXZlIik7CisgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAobGlzdCwgJnZhbCk7CisKKyAgY2Fwc19wYXJhbS52ZXJzaW9uID0gTlZfRU5DX0NBUFNfUEFSQU1fVkVSOworICBjYXBzX3BhcmFtLmNhcHNUb1F1ZXJ5ID0gTlZfRU5DX0NBUFNfU1VQUE9SVF9GSUVMRF9FTkNPRElORzsKKworICBpZiAoTnZFbmNHZXRFbmNvZGVDYXBzIChudmVuYy0+ZW5jb2RlciwgbnZlbmNfY2xhc3MtPmNvZGVjX2lkLAorICAgICAgICAgICZjYXBzX3BhcmFtLCAmbnZlbmMtPmludGVybGFjZV9tb2RlcykgIT0gTlZfRU5DX1NVQ0NFU1MpCisgICAgbnZlbmMtPmludGVybGFjZV9tb2RlcyA9IDA7CisKKyAgaWYgKG52ZW5jLT5pbnRlcmxhY2VfbW9kZXMgPj0gMSkgeworICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKCZ2YWwsICJpbnRlcmxlYXZlZCIpOworICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAobGlzdCwgJnZhbCk7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJnZhbCwgIm1peGVkIik7CisgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlIChsaXN0LCAmdmFsKTsKKyAgfQorICAvKiBUT0RPOiBmaWd1cmUgb3V0IHdoYXQgbnZlbmMgZnJhbWUgYmFzZWQgaW50ZXJsYWNpbmcgbWVhbnMgaW4gZ3N0IHRlcm1zICovCisKKyAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBHc3RDYXBzICoKK2dzdF9udl9iYXNlX2VuY19nZXRjYXBzIChHc3RWaWRlb0VuY29kZXIgKiBlbmMsIEdzdENhcHMgKiBmaWx0ZXIpCit7CisgIEdzdE52QmFzZUVuYyAqbnZlbmMgPSBHU1RfTlZfQkFTRV9FTkMgKGVuYyk7CisgIEdzdENhcHMgKnN1cHBvcnRlZF9pbmNhcHMgPSBOVUxMOworICBHc3RDYXBzICp0ZW1wbGF0ZV9jYXBzLCAqY2FwczsKKworICBHU1RfT0JKRUNUX0xPQ0sgKG52ZW5jKTsKKworICBpZiAobnZlbmMtPmlucHV0X2Zvcm1hdHMgIT0gTlVMTCkgeworICAgIEdWYWx1ZSAqdmFsOworCisgICAgdGVtcGxhdGVfY2FwcyA9IGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChlbmMtPnNpbmtwYWQpOworICAgIHN1cHBvcnRlZF9pbmNhcHMgPSBnc3RfY2Fwc19jb3B5ICh0ZW1wbGF0ZV9jYXBzKTsKKyAgICBnc3RfY2Fwc19zZXRfdmFsdWUgKHN1cHBvcnRlZF9pbmNhcHMsICJmb3JtYXQiLCBudmVuYy0+aW5wdXRfZm9ybWF0cyk7CisKKyAgICB2YWwgPSBfZ2V0X2ludGVybGFjZV9tb2RlcyAobnZlbmMpOworICAgIGdzdF9jYXBzX3NldF92YWx1ZSAoc3VwcG9ydGVkX2luY2FwcywgImludGVybGFjZS1tb2RlIiwgdmFsKTsKKyAgICBnX2ZyZWUgKHZhbCk7CisKKyAgICBHU1RfTE9HX09CSkVDVCAoZW5jLCAiY29kZWMgaW5wdXQgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgc3VwcG9ydGVkX2luY2Fwcyk7CisgICAgR1NUX0xPR19PQkpFQ1QgKGVuYywgIiAgIHRlbXBsYXRlIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIHRlbXBsYXRlX2NhcHMpOworICAgIGNhcHMgPSBnc3RfY2Fwc19pbnRlcnNlY3QgKHRlbXBsYXRlX2NhcHMsIHN1cHBvcnRlZF9pbmNhcHMpOworICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbGF0ZV9jYXBzKTsKKyAgICBnc3RfY2Fwc191bnJlZiAoc3VwcG9ydGVkX2luY2Fwcyk7CisgICAgc3VwcG9ydGVkX2luY2FwcyA9IGNhcHM7CisgICAgR1NUX0xPR19PQkpFQ1QgKGVuYywgIiAgc3VwcG9ydGVkIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIHN1cHBvcnRlZF9pbmNhcHMpOworICB9CisKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKG52ZW5jKTsKKworICBjYXBzID0gZ3N0X3ZpZGVvX2VuY29kZXJfcHJveHlfZ2V0Y2FwcyAoZW5jLCBzdXBwb3J0ZWRfaW5jYXBzLCBmaWx0ZXIpOworCisgIGlmIChzdXBwb3J0ZWRfaW5jYXBzKQorICAgIGdzdF9jYXBzX3VucmVmIChzdXBwb3J0ZWRfaW5jYXBzKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChudmVuYywgIiAgcmV0dXJuaW5nIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworCisgIHJldHVybiBjYXBzOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9udl9iYXNlX2VuY19jbG9zZSAoR3N0VmlkZW9FbmNvZGVyICogZW5jKQoreworICBHc3ROdkJhc2VFbmMgKm52ZW5jID0gR1NUX05WX0JBU0VfRU5DIChlbmMpOworCisgIGlmIChudmVuYy0+ZW5jb2RlcikgeworICAgIGlmIChOdkVuY0Rlc3Ryb3lFbmNvZGVyIChudmVuYy0+ZW5jb2RlcikgIT0gTlZfRU5DX1NVQ0NFU1MpCisgICAgICByZXR1cm4gRkFMU0U7CisgICAgbnZlbmMtPmVuY29kZXIgPSBOVUxMOworICB9CisKKyAgaWYgKG52ZW5jLT5jdWRhX2N0eCkgeworICAgIGlmICghZ3N0X252ZW5jX2Rlc3Ryb3lfY3VkYV9jb250ZXh0IChudmVuYy0+Y3VkYV9jdHgpKQorICAgICAgcmV0dXJuIEZBTFNFOworICAgIG52ZW5jLT5jdWRhX2N0eCA9IE5VTEw7CisgIH0KKworICBHU1RfT0JKRUNUX0xPQ0sgKG52ZW5jKTsKKyAgZ19mcmVlIChudmVuYy0+aW5wdXRfZm9ybWF0cyk7CisgIG52ZW5jLT5pbnB1dF9mb3JtYXRzID0gTlVMTDsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKG52ZW5jKTsKKworICBpZiAobnZlbmMtPmlucHV0X3N0YXRlKSB7CisgICAgZ3N0X3ZpZGVvX2NvZGVjX3N0YXRlX3VucmVmIChudmVuYy0+aW5wdXRfc3RhdGUpOworICAgIG52ZW5jLT5pbnB1dF9zdGF0ZSA9IE5VTEw7CisgIH0KKworICBpZiAobnZlbmMtPmJpdHN0cmVhbV9wb29sICE9IE5VTEwpIHsKKyAgICBnX2Fzc2VydCAoZ19hc3luY19xdWV1ZV9sZW5ndGggKG52ZW5jLT5iaXRzdHJlYW1fcG9vbCkgPT0gMCk7CisgICAgZ19hc3luY19xdWV1ZV91bnJlZiAobnZlbmMtPmJpdHN0cmVhbV9wb29sKTsKKyAgICBudmVuYy0+Yml0c3RyZWFtX3Bvb2wgPSBOVUxMOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbnZfYmFzZV9lbmNfaW5pdCAoR3N0TnZCYXNlRW5jICogbnZlbmMpCit7CisgIEdzdFZpZGVvRW5jb2RlciAqZW5jb2RlciA9IEdTVF9WSURFT19FTkNPREVSIChudmVuYyk7CisKKyAgR1NUX1ZJREVPX0VOQ09ERVJfU1RSRUFNX0xPQ0sgKGVuY29kZXIpOworICBHU1RfVklERU9fRU5DT0RFUl9TVFJFQU1fVU5MT0NLIChlbmNvZGVyKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9udl9iYXNlX2VuY19maW5hbGl6ZSAoR09iamVjdCAqIG9iaikKK3sKKyAgR19PQkpFQ1RfQ0xBU1MgKGdzdF9udl9iYXNlX2VuY19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqKTsKK30KKworc3RhdGljIEdzdFZpZGVvQ29kZWNGcmFtZSAqCitfZmluZF9mcmFtZV93aXRoX291dHB1dF9idWZmZXIgKEdzdE52QmFzZUVuYyAqIG52ZW5jLCBOVl9FTkNfT1VUUFVUX1BUUiBvdXRfYnVmKQoreworICBHTGlzdCAqbCwgKndhbGsgPSBnc3RfdmlkZW9fZW5jb2Rlcl9nZXRfZnJhbWVzIChHU1RfVklERU9fRU5DT0RFUiAobnZlbmMpKTsKKyAgR3N0VmlkZW9Db2RlY0ZyYW1lICpyZXQgPSBOVUxMOworICBnaW50IGk7CisKKyAgZm9yIChsID0gd2FsazsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICBHc3RWaWRlb0NvZGVjRnJhbWUgKmZyYW1lID0gKEdzdFZpZGVvQ29kZWNGcmFtZSAqKSBsLT5kYXRhOworICAgIHN0cnVjdCBmcmFtZV9zdGF0ZSAqc3RhdGUgPSBmcmFtZS0+dXNlcl9kYXRhOworCisgICAgaWYgKCFzdGF0ZSkKKyAgICAgIGNvbnRpbnVlOworCisgICAgZm9yIChpID0gMDsgaSA8IE5fQlVGRkVSU19QRVJfRlJBTUU7IGkrKykgeworCisgICAgICBpZiAoIXN0YXRlLT5vdXRfYnVmc1tpXSkKKyAgICAgICAgYnJlYWs7CisKKyAgICAgIGlmIChzdGF0ZS0+b3V0X2J1ZnNbaV0gPT0gb3V0X2J1ZikKKyAgICAgICAgcmV0ID0gZnJhbWU7CisgICAgfQorICB9CisKKyAgaWYgKHJldCkKKyAgICBnc3RfdmlkZW9fY29kZWNfZnJhbWVfcmVmIChyZXQpOworCisgIGdfbGlzdF9mcmVlX2Z1bGwgKHdhbGssIChHRGVzdHJveU5vdGlmeSkgZ3N0X3ZpZGVvX2NvZGVjX2ZyYW1lX3VucmVmKTsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ3BvaW50ZXIKK2dzdF9udl9iYXNlX2VuY19iaXRzdHJlYW1fdGhyZWFkIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFZpZGVvRW5jb2RlciAqZW5jID0gdXNlcl9kYXRhOworICBHc3ROdkJhc2VFbmMgKm52ZW5jID0gdXNlcl9kYXRhOworCisgIC8qIG92ZXJ2aWV3IG9mIG9wZXJhdGlvbjoKKyAgICogMS4gcmV0cmVpdmUgdGhlIG5leHQgYnVmZmVyIHN1Ym1pdHRlZCB0byB0aGUgYml0c3RyZWFtIHBvb2wKKyAgICogMi4gd2FpdCBmb3IgdGhhdCBidWZmZXIgdG8gYmUgcmVhZHkgZnJvbSBudmVuYyAoTG9ja0JpdHNyZWFtKQorICAgKiAzLiByZXRyZWl2ZSB0aGUgR3N0VmlkZW9Db2RlY0ZyYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGF0IGJ1ZmZlcgorICAgKiA0LiBmb3IgZWFjaCBidWZmZXIgaW4gdGhlIGZyYW1lCisgICAqIDQuMSAoc3RlcCAyKTogd2FpdCBmb3IgdGhhdCBidWZmZXIgdG8gYmUgcmVhZHkgZnJvbSBudmVuYyAoTG9ja0JpdHNyZWFtKQorICAgKiA0LjIgY3JlYXRlIGFuIG91dHB1dCBHc3RCdWZmZXIgZnJvbSB0aGUgbnZlbmMgYnVmZmVycworICAgKiA0LjMgdW5sb2NrIHRoZSBudmVuYyBiaXRzdHJlYW0gYnVmZmVycyBVbmxvY2tCaXRzcmVhbQorICAgKiA1LiBmaW5pc2hfZnJhbWUoKQorICAgKiA2LiBjbGVhbnVwCisgICAqLworICBkbyB7CisgICAgR3N0QnVmZmVyICpidWZmZXJzW05fQlVGRkVSU19QRVJfRlJBTUVdOworICAgIHN0cnVjdCBmcmFtZV9zdGF0ZSAqc3RhdGUgPSBOVUxMOworICAgIEdzdFZpZGVvQ29kZWNGcmFtZSAqZnJhbWUgPSBOVUxMOworICAgIE5WRU5DU1RBVFVTIG52X3JldDsKKyAgICBHc3RGbG93UmV0dXJuIGZsb3cgPSBHU1RfRkxPV19PSzsKKyAgICBnaW50IGk7CisKKyAgICB7CisgICAgICBOVl9FTkNfTE9DS19CSVRTVFJFQU0gbG9ja19icyA9IHsgMCwgfTsKKyAgICAgIE5WX0VOQ19PVVRQVVRfUFRSIG91dF9idWY7CisKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBOX0JVRkZFUlNfUEVSX0ZSQU1FOyBpKyspIHsKKyAgICAgICAgLyogZ2V0IGFuZCBsb2NrIGJpdHN0cmVhbSBidWZmZXJzICovCisgICAgICAgIEdzdFZpZGVvQ29kZWNGcmFtZSAqdG1wX2ZyYW1lOworCisgICAgICAgIGlmIChzdGF0ZSAmJiBpID49IHN0YXRlLT5uX2J1ZmZlcnMpCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGVuYywgIndhaXQgZm9yIGJpdHN0cmVhbSBidWZmZXIuLiIpOworCisgICAgICAgIC8qIGFzc3VtZXMgYnVmZmVycyBhcmUgc3VibWl0dGVkIGluIG9yZGVyICovCisgICAgICAgIG91dF9idWYgPSBnX2FzeW5jX3F1ZXVlX3BvcCAobnZlbmMtPmJpdHN0cmVhbV9xdWV1ZSk7CisgICAgICAgIGlmICgoZ3BvaW50ZXIpIG91dF9idWYgPT0gU0hVVERPV05fQ09PS0lFKQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIEdTVF9MT0dfT0JKRUNUIChudmVuYywgIndhaXRpbmcgZm9yIG91dHB1dCBidWZmZXIgJXAgdG8gYmUgcmVhZHkiLAorICAgICAgICAgICAgb3V0X2J1Zik7CisKKyAgICAgICAgbG9ja19icy52ZXJzaW9uID0gTlZfRU5DX0xPQ0tfQklUU1RSRUFNX1ZFUjsKKyAgICAgICAgbG9ja19icy5vdXRwdXRCaXRzdHJlYW0gPSBvdXRfYnVmOworICAgICAgICBsb2NrX2JzLmRvTm90V2FpdCA9IDA7CisKKyAgICAgICAgLyogRklYTUU6IHRoaXMgd291bGQgbmVlZCB0byBiZSB1cGRhdGVkIGZvciBvdGhlciBzbGljZSBtb2RlcyAqLworICAgICAgICBsb2NrX2JzLnNsaWNlT2Zmc2V0cyA9IE5VTEw7CisKKyAgICAgICAgbnZfcmV0ID0gTnZFbmNMb2NrQml0c3RyZWFtIChudmVuYy0+ZW5jb2RlciwgJmxvY2tfYnMpOworICAgICAgICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgICAgICAgLyogRklYTUU6IHdoYXQgdG8gZG8gaGVyZT8gKi8KKyAgICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAobnZlbmMsIFNUUkVBTSwgRU5DT0RFLCAoTlVMTCksCisgICAgICAgICAgICAgICgiRmFpbGVkIHRvIGxvY2sgYml0c3RyZWFtIGJ1ZmZlciAlcCwgcmV0ICVkIiwKKyAgICAgICAgICAgICAgICAgIGxvY2tfYnMub3V0cHV0Qml0c3RyZWFtLCBudl9yZXQpKTsKKyAgICAgICAgICBvdXRfYnVmID0gU0hVVERPV05fQ09PS0lFOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKG52ZW5jLCAicGljdHVyZSB0eXBlICVkIiwgbG9ja19icy5waWN0dXJlVHlwZSk7CisKKyAgICAgICAgdG1wX2ZyYW1lID0gX2ZpbmRfZnJhbWVfd2l0aF9vdXRwdXRfYnVmZmVyIChudmVuYywgb3V0X2J1Zik7CisgICAgICAgIGdfYXNzZXJ0ICh0bXBfZnJhbWUgIT0gTlVMTCk7CisgICAgICAgIGlmIChmcmFtZSkKKyAgICAgICAgICBnX2Fzc2VydCAoZnJhbWUgPT0gdG1wX2ZyYW1lKTsKKyAgICAgICAgZnJhbWUgPSB0bXBfZnJhbWU7CisKKyAgICAgICAgc3RhdGUgPSBmcmFtZS0+dXNlcl9kYXRhOworICAgICAgICBnX2Fzc2VydCAoc3RhdGUtPm91dF9idWZzW2ldID09IG91dF9idWYpOworCisgICAgICAgIC8qIGNvcHkgaW50byBvdXRwdXQgYnVmZmVyICovCisgICAgICAgIGJ1ZmZlcnNbaV0gPQorICAgICAgICAgICAgZ3N0X2J1ZmZlcl9uZXdfYWxsb2NhdGUgKE5VTEwsIGxvY2tfYnMuYml0c3RyZWFtU2l6ZUluQnl0ZXMsIE5VTEwpOworICAgICAgICBnc3RfYnVmZmVyX2ZpbGwgKGJ1ZmZlcnNbaV0sIDAsIGxvY2tfYnMuYml0c3RyZWFtQnVmZmVyUHRyLAorICAgICAgICAgICAgbG9ja19icy5iaXRzdHJlYW1TaXplSW5CeXRlcyk7CisKKyAgICAgICAgaWYgKGxvY2tfYnMucGljdHVyZVR5cGUgPT0gTlZfRU5DX1BJQ19UWVBFX0lEUikgeworICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKG52ZW5jLCAiVGhpcyBpcyBhIGtleWZyYW1lIik7CisgICAgICAgICAgR1NUX1ZJREVPX0NPREVDX0ZSQU1FX1NFVF9TWU5DX1BPSU5UIChmcmFtZSk7CisgICAgICAgIH0KKworICAgICAgICAvKiBUT0RPOiB1c2UgbG9ja19icy5vdXRwdXRUaW1lU3RhbXAgYW5kIGxvY2tfYnMub3V0cHV0RHVyYXRpb24gKi8KKyAgICAgICAgLyogVE9ETzogY2hlY2sgcHRzL2R0cyBpcyBoYW5kbGVkIHByb3Blcmx5IGlmIHRoZXJlIGFyZSBCLWZyYW1lcyAqLworCisgICAgICAgIG52X3JldCA9IE52RW5jVW5sb2NrQml0c3RyZWFtIChudmVuYy0+ZW5jb2Rlciwgc3RhdGUtPm91dF9idWZzW2ldKTsKKyAgICAgICAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykgeworICAgICAgICAgIC8qIEZJWE1FOiB3aGF0IHRvIGRvIGhlcmU/ICovCisgICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKG52ZW5jLCBTVFJFQU0sIEVOQ09ERSwgKE5VTEwpLAorICAgICAgICAgICAgICAoIkZhaWxlZCB0byB1bmxvY2sgYml0c3RyZWFtIGJ1ZmZlciAlcCwgcmV0ICVkIiwKKyAgICAgICAgICAgICAgICAgIGxvY2tfYnMub3V0cHV0Qml0c3RyZWFtLCBudl9yZXQpKTsKKyAgICAgICAgICBzdGF0ZS0+b3V0X2J1ZnNbaV0gPSBTSFVURE9XTl9DT09LSUU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBHU1RfTE9HX09CSkVDVCAobnZlbmMsICJyZXR1cm5pbmcgYml0c3RyZWFtIGJ1ZmZlciAlcCB0byBwb29sIiwKKyAgICAgICAgICAgIHN0YXRlLT5vdXRfYnVmc1tpXSk7CisgICAgICAgIGdfYXN5bmNfcXVldWVfcHVzaCAobnZlbmMtPmJpdHN0cmVhbV9wb29sLCBzdGF0ZS0+b3V0X2J1ZnNbaV0pOworICAgICAgfQorCisgICAgICBpZiAob3V0X2J1ZiA9PSBTSFVURE9XTl9DT09LSUUpCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHsKKyAgICAgIEdzdEJ1ZmZlciAqb3V0cHV0X2J1ZmZlciA9IGdzdF9idWZmZXJfbmV3ICgpOworCisgICAgICBmb3IgKGkgPSAwOyBpIDwgc3RhdGUtPm5fYnVmZmVyczsgaSsrKQorICAgICAgICBvdXRwdXRfYnVmZmVyID0gZ3N0X2J1ZmZlcl9hcHBlbmQgKG91dHB1dF9idWZmZXIsIGJ1ZmZlcnNbaV0pOworCisgICAgICBmcmFtZS0+b3V0cHV0X2J1ZmZlciA9IG91dHB1dF9idWZmZXI7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHN0YXRlLT5uX2J1ZmZlcnM7IGkrKykgeworICAgICAgdm9pZCAqaW5fYnVmID0gc3RhdGUtPmluX2J1ZnNbaV07CisgICAgICBnX2Fzc2VydCAoaW5fYnVmICE9IE5VTEwpOworCisjaWYgSEFWRV9OVkVOQ19HU1RfR0wKKyAgICAgIGlmIChudmVuYy0+Z2xfaW5wdXQpIHsKKyAgICAgICAgc3RydWN0IGdsX2lucHV0X3Jlc291cmNlICppbl9nbF9yZXNvdXJjZSA9IGluX2J1ZjsKKworICAgICAgICBudl9yZXQgPQorICAgICAgICAgICAgTnZFbmNVbm1hcElucHV0UmVzb3VyY2UgKG52ZW5jLT5lbmNvZGVyLAorICAgICAgICAgICAgaW5fZ2xfcmVzb3VyY2UtPm52X21hcHBlZF9yZXNvdXJjZS5tYXBwZWRSZXNvdXJjZSk7CisgICAgICAgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpIHsKKyAgICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChudmVuYywgIkZhaWxlZCB0byB1bm1hcCBpbnB1dCByZXNvdXJjZSAlcCwgcmV0ICVkIiwKKyAgICAgICAgICAgICAgaW5fZ2xfcmVzb3VyY2UsIG52X3JldCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtZW1zZXQgKCZpbl9nbF9yZXNvdXJjZS0+bnZfbWFwcGVkX3Jlc291cmNlLCAwLAorICAgICAgICAgICAgc2l6ZW9mIChpbl9nbF9yZXNvdXJjZS0+bnZfbWFwcGVkX3Jlc291cmNlKSk7CisgICAgICB9CisjZW5kaWYKKworICAgICAgZ19hc3luY19xdWV1ZV9wdXNoIChudmVuYy0+aW5fYnVmc19wb29sLCBpbl9idWYpOworICAgIH0KKworICAgIGZsb3cgPSBnc3RfdmlkZW9fZW5jb2Rlcl9maW5pc2hfZnJhbWUgKGVuYywgZnJhbWUpOworICAgIGZyYW1lID0gTlVMTDsKKworICAgIGlmIChmbG93ICE9IEdTVF9GTE9XX09LKSB7CisgICAgICBHU1RfSU5GT19PQkpFQ1QgKGVuYywgImdvdCBmbG93ICVzIiwgZ3N0X2Zsb3dfZ2V0X25hbWUgKGZsb3cpKTsKKyAgICAgIGdfYXRvbWljX2ludF9zZXQgKCZudmVuYy0+bGFzdF9mbG93LCBmbG93KTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICB3aGlsZSAoVFJVRSk7CisKKyAgR1NUX0lORk9fT0JKRUNUIChudmVuYywgImV4aXRpbmcgdGhyZWFkIik7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X252X2Jhc2VfZW5jX3N0YXJ0X2JpdHN0cmVhbV90aHJlYWQgKEdzdE52QmFzZUVuYyAqIG52ZW5jKQoreworICBnY2hhciAqbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzLXJlYWQtYml0cyIsIEdTVF9PQkpFQ1RfTkFNRSAobnZlbmMpKTsKKworICBnX2Fzc2VydCAobnZlbmMtPmJpdHN0cmVhbV90aHJlYWQgPT0gTlVMTCk7CisKKyAgZ19hc3NlcnQgKGdfYXN5bmNfcXVldWVfbGVuZ3RoIChudmVuYy0+Yml0c3RyZWFtX3F1ZXVlKSA9PSAwKTsKKworICBudmVuYy0+Yml0c3RyZWFtX3RocmVhZCA9CisgICAgICBnX3RocmVhZF90cnlfbmV3IChuYW1lLCBnc3RfbnZfYmFzZV9lbmNfYml0c3RyZWFtX3RocmVhZCwgbnZlbmMsIE5VTEwpOworCisgIGdfZnJlZSAobmFtZSk7CisKKyAgaWYgKG52ZW5jLT5iaXRzdHJlYW1fdGhyZWFkID09IE5VTEwpCisgICAgcmV0dXJuIEZBTFNFOworCisgIEdTVF9JTkZPX09CSkVDVCAobnZlbmMsICJzdGFydGVkIHRocmVhZCB0byByZWFkIGJpdHN0cmVhbSIpOworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbnZfYmFzZV9lbmNfc3RvcF9iaXRzdHJlYW1fdGhyZWFkIChHc3ROdkJhc2VFbmMgKiBudmVuYykKK3sKKyAgZ3BvaW50ZXIgb3V0X2J1ZjsKKworICBpZiAobnZlbmMtPmJpdHN0cmVhbV90aHJlYWQgPT0gTlVMTCkKKyAgICByZXR1cm4gVFJVRTsKKworICAvKiBGSVhNRSAqLworICBHU1RfRklYTUVfT0JKRUNUIChudmVuYywgInN0b3AgYml0c3RyZWFtIHJlYWRpbmcgdGhyZWFkIHByb3Blcmx5Iik7CisgIGdfYXN5bmNfcXVldWVfbG9jayAobnZlbmMtPmJpdHN0cmVhbV9xdWV1ZSk7CisgIGdfYXN5bmNfcXVldWVfbG9jayAobnZlbmMtPmJpdHN0cmVhbV9wb29sKTsKKyAgd2hpbGUgKChvdXRfYnVmID0gZ19hc3luY19xdWV1ZV90cnlfcG9wX3VubG9ja2VkIChudmVuYy0+Yml0c3RyZWFtX3F1ZXVlKSkpIHsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKG52ZW5jLCAic3RvbGUgYml0c3RyZWFtIGJ1ZmZlciAlcCBmcm9tIHF1ZXVlIiwgb3V0X2J1Zik7CisgICAgZ19hc3luY19xdWV1ZV9wdXNoX3VubG9ja2VkIChudmVuYy0+Yml0c3RyZWFtX3Bvb2wsIG91dF9idWYpOworICB9CisgIGdfYXN5bmNfcXVldWVfcHVzaF91bmxvY2tlZCAobnZlbmMtPmJpdHN0cmVhbV9xdWV1ZSwgU0hVVERPV05fQ09PS0lFKTsKKyAgZ19hc3luY19xdWV1ZV91bmxvY2sgKG52ZW5jLT5iaXRzdHJlYW1fcG9vbCk7CisgIGdfYXN5bmNfcXVldWVfdW5sb2NrIChudmVuYy0+Yml0c3RyZWFtX3F1ZXVlKTsKKworICAvKiB0ZW1wb3JhcnkgdW5sb2NrLCBzbyBvdGhlciB0aHJlYWQgY2FuIGZpbmQgYW5kIHB1c2ggZnJhbWUgKi8KKyAgR1NUX1ZJREVPX0VOQ09ERVJfU1RSRUFNX1VOTE9DSyAobnZlbmMpOworICBnX3RocmVhZF9qb2luIChudmVuYy0+Yml0c3RyZWFtX3RocmVhZCk7CisgIEdTVF9WSURFT19FTkNPREVSX1NUUkVBTV9MT0NLIChudmVuYyk7CisKKyAgbnZlbmMtPmJpdHN0cmVhbV90aHJlYWQgPSBOVUxMOworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9udl9iYXNlX2VuY19yZXNldF9xdWV1ZXMgKEdzdE52QmFzZUVuYyAqIG52ZW5jLCBnYm9vbGVhbiByZWZpbGwpCit7CisgIGdwb2ludGVyIHB0cjsKKyAgZ2ludCBpOworCisgIEdTVF9JTkZPX09CSkVDVCAobnZlbmMsICJjbGVhcmluZyBxdWV1ZXMiKTsKKworICB3aGlsZSAoKHB0ciA9IGdfYXN5bmNfcXVldWVfdHJ5X3BvcCAobnZlbmMtPmJpdHN0cmVhbV9xdWV1ZSkpKSB7CisgICAgLyogZG8gbm90aGluZyAqLworICB9CisgIHdoaWxlICgocHRyID0gZ19hc3luY19xdWV1ZV90cnlfcG9wIChudmVuYy0+Yml0c3RyZWFtX3Bvb2wpKSkgeworICAgIC8qIGRvIG5vdGhpbmcgKi8KKyAgfQorICB3aGlsZSAoKHB0ciA9IGdfYXN5bmNfcXVldWVfdHJ5X3BvcCAobnZlbmMtPmluX2J1ZnNfcG9vbCkpKSB7CisgICAgLyogZG8gbm90aGluZyAqLworICB9CisKKyAgaWYgKHJlZmlsbCkgeworICAgIEdTVF9JTkZPX09CSkVDVCAobnZlbmMsICJyZWZpbGxpbmcgYnVmZmVyIHBvb2xzIik7CisgICAgZm9yIChpID0gMDsgaSA8IG52ZW5jLT5uX2J1ZnM7ICsraSkgeworICAgICAgZ19hc3luY19xdWV1ZV9wdXNoIChudmVuYy0+Yml0c3RyZWFtX3Bvb2wsIG52ZW5jLT5pbnB1dF9idWZzW2ldKTsKKyAgICAgIGdfYXN5bmNfcXVldWVfcHVzaCAobnZlbmMtPmluX2J1ZnNfcG9vbCwgbnZlbmMtPm91dHB1dF9idWZzW2ldKTsKKyAgICB9CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9udl9iYXNlX2VuY19mcmVlX2J1ZmZlcnMgKEdzdE52QmFzZUVuYyAqIG52ZW5jKQoreworICBOVkVOQ1NUQVRVUyBudl9yZXQ7CisgIGd1aW50IGk7CisKKyAgaWYgKG52ZW5jLT5lbmNvZGVyID09IE5VTEwpCisgICAgcmV0dXJuOworCisgIGdzdF9udl9iYXNlX2VuY19yZXNldF9xdWV1ZXMgKG52ZW5jLCBGQUxTRSk7CisKKyAgZm9yIChpID0gMDsgaSA8IG52ZW5jLT5uX2J1ZnM7ICsraSkgeworICAgIE5WX0VOQ19PVVRQVVRfUFRSIG91dF9idWYgPSBudmVuYy0+b3V0cHV0X2J1ZnNbaV07CisKKyNpZiBIQVZFX05WRU5DX0dTVF9HTAorICAgIGlmIChudmVuYy0+Z2xfaW5wdXQpIHsKKyAgICAgIHN0cnVjdCBnbF9pbnB1dF9yZXNvdXJjZSAqaW5fZ2xfcmVzb3VyY2UgPSBudmVuYy0+aW5wdXRfYnVmc1tpXTsKKworICAgICAgY3VDdHhQdXNoQ3VycmVudCAobnZlbmMtPmN1ZGFfY3R4KTsKKyAgICAgIG52X3JldCA9CisgICAgICAgICAgTnZFbmNVbnJlZ2lzdGVyUmVzb3VyY2UgKG52ZW5jLT5lbmNvZGVyLAorICAgICAgICAgIGluX2dsX3Jlc291cmNlLT5udl9yZXNvdXJjZS5yZWdpc3RlcmVkUmVzb3VyY2UpOworICAgICAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAobnZlbmMsICJGYWlsZWQgdG8gdW5yZWdpc3RlciByZXNvdXJjZSAlcCwgcmV0ICVkIiwKKyAgICAgICAgICAgIGluX2dsX3Jlc291cmNlLCBudl9yZXQpOworCisgICAgICBnX2ZyZWUgKGluX2dsX3Jlc291cmNlKTsKKyAgICAgIGN1Q3R4UG9wQ3VycmVudCAoTlVMTCk7CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICB7CisgICAgICBOVl9FTkNfSU5QVVRfUFRSIGluX2J1ZiA9IChOVl9FTkNfSU5QVVRfUFRSKSBudmVuYy0+aW5wdXRfYnVmc1tpXTsKKworICAgICAgR1NUX0RFQlVHX09CSkVDVCAobnZlbmMsICJEZXN0cm95aW5nIGlucHV0IGJ1ZmZlciAlcCIsIGluX2J1Zik7CisgICAgICBudl9yZXQgPSBOdkVuY0Rlc3Ryb3lJbnB1dEJ1ZmZlciAobnZlbmMtPmVuY29kZXIsIGluX2J1Zik7CisgICAgICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG52ZW5jLCAiRmFpbGVkIHRvIGRlc3Ryb3kgaW5wdXQgYnVmZmVyICVwLCByZXQgJWQiLAorICAgICAgICAgICAgaW5fYnVmLCBudl9yZXQpOworICAgICAgfQorICAgIH0KKworICAgIEdTVF9ERUJVR19PQkpFQ1QgKG52ZW5jLCAiRGVzdHJveWluZyBvdXRwdXQgYml0c3RyZWFtIGJ1ZmZlciAlcCIsIG91dF9idWYpOworICAgIG52X3JldCA9IE52RW5jRGVzdHJveUJpdHN0cmVhbUJ1ZmZlciAobnZlbmMtPmVuY29kZXIsIG91dF9idWYpOworICAgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG52ZW5jLCAiRmFpbGVkIHRvIGRlc3Ryb3kgb3V0cHV0IGJ1ZmZlciAlcCwgcmV0ICVkIiwKKyAgICAgICAgICBvdXRfYnVmLCBudl9yZXQpOworICAgIH0KKyAgfQorCisgIG52ZW5jLT5uX2J1ZnMgPSAwOworICBnX2ZyZWUgKG52ZW5jLT5vdXRwdXRfYnVmcyk7CisgIG52ZW5jLT5vdXRwdXRfYnVmcyA9IE5VTEw7CisgIGdfZnJlZSAobnZlbmMtPmlucHV0X2J1ZnMpOworICBudmVuYy0+aW5wdXRfYnVmcyA9IE5VTEw7Cit9CisKK3N0YXRpYyBpbmxpbmUgZ3VpbnQKK19nZXRfcGxhbmVfd2lkdGggKEdzdFZpZGVvSW5mbyAqIGluZm8sIGd1aW50IHBsYW5lKQoreworICBpZiAoR1NUX1ZJREVPX0lORk9fSVNfWVVWIChpbmZvKSkKKyAgICAvKiBGb3Igbm93IGNvbXBvbmVudCB3aWR0aCBhbmQgcGxhbmUgd2lkdGggYXJlIHRoZSBzYW1lIGFuZCB0aGUKKyAgICAgKiBwbGFuZS1jb21wb25lbnQgbWFwcGluZyBtYXRjaGVzCisgICAgICovCisgICAgcmV0dXJuIEdTVF9WSURFT19JTkZPX0NPTVBfV0lEVEggKGluZm8sIHBsYW5lKTsKKyAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkdCLCBHUkFZICovCisgICAgcmV0dXJuIEdTVF9WSURFT19JTkZPX1dJRFRIIChpbmZvKTsKK30KKworc3RhdGljIGlubGluZSBndWludAorX2dldF9wbGFuZV9oZWlnaHQgKEdzdFZpZGVvSW5mbyAqIGluZm8sIGd1aW50IHBsYW5lKQoreworICBpZiAoR1NUX1ZJREVPX0lORk9fSVNfWVVWIChpbmZvKSkKKyAgICAvKiBGb3Igbm93IGNvbXBvbmVudCB3aWR0aCBhbmQgcGxhbmUgd2lkdGggYXJlIHRoZSBzYW1lIGFuZCB0aGUKKyAgICAgKiBwbGFuZS1jb21wb25lbnQgbWFwcGluZyBtYXRjaGVzCisgICAgICovCisgICAgcmV0dXJuIEdTVF9WSURFT19JTkZPX0NPTVBfSEVJR0hUIChpbmZvLCBwbGFuZSk7CisgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJHQiwgR1JBWSAqLworICAgIHJldHVybiBHU1RfVklERU9fSU5GT19IRUlHSFQgKGluZm8pOworfQorCitzdGF0aWMgaW5saW5lIGdzaXplCitfZ2V0X2ZyYW1lX2RhdGFfaGVpZ2h0IChHc3RWaWRlb0luZm8gKiBpbmZvKQoreworICBnc2l6ZSByZXQgPSAwOworICBnaW50IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChpbmZvKTsgaSsrKSB7CisgICAgcmV0ICs9IF9nZXRfcGxhbmVfaGVpZ2h0IChpbmZvLCBpKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK2dzdF9udl9iYXNlX2VuY19zZXRfbWF4X2VuY29kZV9zaXplIChHc3ROdkJhc2VFbmMgKiBudmVuYywgZ3VpbnQgbWF4X3dpZHRoLAorICAgIGd1aW50IG1heF9oZWlnaHQpCit7CisgIG52ZW5jLT5tYXhfZW5jb2RlX3dpZHRoID0gbWF4X3dpZHRoOworICBudmVuYy0+bWF4X2VuY29kZV9oZWlnaHQgPSBtYXhfaGVpZ2h0OworfQorCit2b2lkCitnc3RfbnZfYmFzZV9lbmNfZ2V0X21heF9lbmNvZGVfc2l6ZSAoR3N0TnZCYXNlRW5jICogbnZlbmMsIGd1aW50ICogbWF4X3dpZHRoLAorICAgIGd1aW50ICogbWF4X2hlaWdodCkKK3sKKyAgKm1heF93aWR0aCA9IG52ZW5jLT5tYXhfZW5jb2RlX3dpZHRoOworICAqbWF4X2hlaWdodCA9IG52ZW5jLT5tYXhfZW5jb2RlX2hlaWdodDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbnZfYmFzZV9lbmNfc2V0X2Zvcm1hdCAoR3N0VmlkZW9FbmNvZGVyICogZW5jLCBHc3RWaWRlb0NvZGVjU3RhdGUgKiBzdGF0ZSkKK3sKKyAgR3N0TnZCYXNlRW5jQ2xhc3MgKm52ZW5jX2NsYXNzID0gR1NUX05WX0JBU0VfRU5DX0dFVF9DTEFTUyAoZW5jKTsKKyAgR3N0TnZCYXNlRW5jICpudmVuYyA9IEdTVF9OVl9CQVNFX0VOQyAoZW5jKTsKKyAgR3N0VmlkZW9JbmZvICppbmZvID0gJnN0YXRlLT5pbmZvOworICBHc3RWaWRlb0NvZGVjU3RhdGUgKm9sZF9zdGF0ZSA9IG52ZW5jLT5pbnB1dF9zdGF0ZTsKKyAgTlZFTkNTVEFUVVMgbnZfcmV0OworCisgIGdfYXNzZXJ0IChudmVuY19jbGFzcy0+aW5pdGlhbGl6ZV9lbmNvZGVyKTsKKworICBHX0xPQ0sgKGluaXRpYWxpemF0aW9uX2xvY2spOworICBpZiAoIW52ZW5jX2NsYXNzLT5pbml0aWFsaXplX2VuY29kZXIgKG52ZW5jLCBvbGRfc3RhdGUsIHN0YXRlKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGVuYywgIlN1YmNsYXNzIGZhaWxlZCB0byByZWNvbmZpZ3VyZSBlbmNvZGVyIik7CisgICAgR19VTkxPQ0sgKGluaXRpYWxpemF0aW9uX2xvY2spOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorICBHX1VOTE9DSyAoaW5pdGlhbGl6YXRpb25fbG9jayk7CisKKyAgaWYgKCFudmVuYy0+bWF4X2VuY29kZV93aWR0aCAmJiAhbnZlbmMtPm1heF9lbmNvZGVfaGVpZ2h0KSB7CisgICAgZ3N0X252X2Jhc2VfZW5jX3NldF9tYXhfZW5jb2RlX3NpemUgKG52ZW5jLCBHU1RfVklERU9fSU5GT19XSURUSCAoaW5mbyksCisgICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoaW5mbykpOworICB9CisKKyAgaWYgKCFvbGRfc3RhdGUpIHsKKyAgICBudmVuYy0+aW5wdXRfaW5mbyA9ICppbmZvOworICAgIG52ZW5jLT5nbF9pbnB1dCA9IEZBTFNFOworICB9CisKKyAgaWYgKG52ZW5jLT5pbnB1dF9zdGF0ZSkKKyAgICBnc3RfdmlkZW9fY29kZWNfc3RhdGVfdW5yZWYgKG52ZW5jLT5pbnB1dF9zdGF0ZSk7CisgIG52ZW5jLT5pbnB1dF9zdGF0ZSA9IGdzdF92aWRlb19jb2RlY19zdGF0ZV9yZWYgKHN0YXRlKTsKKyAgR1NUX0lORk9fT0JKRUNUIChudmVuYywgImNvbmZpZ3VyZWQgZW5jb2RlciIpOworCisgIC8qIG5vdyBhbGxvY2F0ZSBzb21lIGJ1ZmZlcnMgb25seSBvbiBmaXJzdCBjb25maWd1cmF0aW9uICovCisgIGlmICghb2xkX3N0YXRlKSB7CisjaWYgSEFWRV9OVkVOQ19HU1RfR0wKKyAgICBHc3RDYXBzRmVhdHVyZXMgKmZlYXR1cmVzOworI2VuZGlmCisgICAgZ3VpbnQgbnVtX21hY3JvYmxvY2tzLCBpOworICAgIGd1aW50IGlucHV0X3dpZHRoLCBpbnB1dF9oZWlnaHQ7CisKKyAgICBpbnB1dF93aWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIIChpbmZvKTsKKyAgICBpbnB1dF9oZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQgKGluZm8pOworCisgICAgbnVtX21hY3JvYmxvY2tzID0gKEdTVF9ST1VORF9VUF8xNiAoaW5wdXRfd2lkdGgpID4+IDQpCisgICAgICAgICogKEdTVF9ST1VORF9VUF8xNiAoaW5wdXRfaGVpZ2h0KSA+PiA0KTsKKyAgICBudmVuYy0+bl9idWZzID0gKG51bV9tYWNyb2Jsb2NrcyA+PSA4MTYwKSA/IDMyIDogNDg7CisKKyAgICAvKiBpbnB1dCBidWZmZXJzICovCisgICAgbnZlbmMtPmlucHV0X2J1ZnMgPSBnX25ldzAgKGdwb2ludGVyLCBudmVuYy0+bl9idWZzKTsKKworI2lmIEhBVkVfTlZFTkNfR1NUX0dMCisgICAgZmVhdHVyZXMgPSBnc3RfY2Fwc19nZXRfZmVhdHVyZXMgKHN0YXRlLT5jYXBzLCAwKTsKKyAgICBpZiAoZ3N0X2NhcHNfZmVhdHVyZXNfY29udGFpbnMgKGZlYXR1cmVzLAorICAgICAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKSkgeworICAgICAgZ3VpbnQgcGl4ZWxfZGVwdGggPSAwOworICAgICAgbnZlbmMtPmdsX2lucHV0ID0gVFJVRTsKKworICAgICAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fQ09NUE9ORU5UUyAoaW5mbyk7IGkrKykgeworICAgICAgICBwaXhlbF9kZXB0aCArPSBHU1RfVklERU9fSU5GT19DT01QX0RFUFRIIChpbmZvLCBpKTsKKyAgICAgIH0KKworICAgICAgY3VDdHhQdXNoQ3VycmVudCAobnZlbmMtPmN1ZGFfY3R4KTsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBudmVuYy0+bl9idWZzOyArK2kpIHsKKyAgICAgICAgc3RydWN0IGdsX2lucHV0X3Jlc291cmNlICppbl9nbF9yZXNvdXJjZSA9CisgICAgICAgICAgICBnX25ldzAgKHN0cnVjdCBnbF9pbnB1dF9yZXNvdXJjZSwgMSk7CisgICAgICAgIENVcmVzdWx0IGN1X3JldDsKKworICAgICAgICBtZW1zZXQgKCZpbl9nbF9yZXNvdXJjZS0+bnZfcmVzb3VyY2UsIDAsCisgICAgICAgICAgICBzaXplb2YgKGluX2dsX3Jlc291cmNlLT5udl9yZXNvdXJjZSkpOworICAgICAgICBtZW1zZXQgKCZpbl9nbF9yZXNvdXJjZS0+bnZfbWFwcGVkX3Jlc291cmNlLCAwLAorICAgICAgICAgICAgc2l6ZW9mIChpbl9nbF9yZXNvdXJjZS0+bnZfbWFwcGVkX3Jlc291cmNlKSk7CisKKyAgICAgICAgLyogc2NyYXRjaCBidWZmZXIgZm9yIG5vbi1jb250aWdpb3VzIHBsYW5lciBpbnRvIGEgY29udGlnaW91cyBidWZmZXIgKi8KKyAgICAgICAgY3VfcmV0ID0KKyAgICAgICAgICAgIGN1TWVtQWxsb2NQaXRjaCAoKENVZGV2aWNlcHRyICopICYgaW5fZ2xfcmVzb3VyY2UtPmN1ZGFfcG9pbnRlciwKKyAgICAgICAgICAgICZpbl9nbF9yZXNvdXJjZS0+Y3VkYV9zdHJpZGUsIGlucHV0X3dpZHRoLAorICAgICAgICAgICAgX2dldF9mcmFtZV9kYXRhX2hlaWdodCAoaW5mbyksIDE2KTsKKyAgICAgICAgaWYgKGN1X3JldCAhPSBDVURBX1NVQ0NFU1MpIHsKKyAgICAgICAgICBjb25zdCBnY2hhciAqZXJyOworCisgICAgICAgICAgY3VHZXRFcnJvclN0cmluZyAoY3VfcmV0LCAmZXJyKTsKKyAgICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChudmVuYywgImZhaWxlZCB0byBhbG9jYXRlIGN1ZGEgc2NyYXRjaCBidWZmZXIgIgorICAgICAgICAgICAgICAicmV0ICVkIGVycm9yIDolcyIsIGN1X3JldCwgZXJyKTsKKyAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICAgICAgfQorCisgICAgICAgIGluX2dsX3Jlc291cmNlLT5udl9yZXNvdXJjZS52ZXJzaW9uID0gTlZfRU5DX1JFR0lTVEVSX1JFU09VUkNFX1ZFUjsKKyAgICAgICAgaW5fZ2xfcmVzb3VyY2UtPm52X3Jlc291cmNlLnJlc291cmNlVHlwZSA9CisgICAgICAgICAgICBOVl9FTkNfSU5QVVRfUkVTT1VSQ0VfVFlQRV9DVURBREVWSUNFUFRSOworICAgICAgICBpbl9nbF9yZXNvdXJjZS0+bnZfcmVzb3VyY2Uud2lkdGggPSBpbnB1dF93aWR0aDsKKyAgICAgICAgaW5fZ2xfcmVzb3VyY2UtPm52X3Jlc291cmNlLmhlaWdodCA9IGlucHV0X2hlaWdodDsKKyAgICAgICAgaW5fZ2xfcmVzb3VyY2UtPm52X3Jlc291cmNlLnBpdGNoID0gaW5fZ2xfcmVzb3VyY2UtPmN1ZGFfc3RyaWRlOworICAgICAgICBpbl9nbF9yZXNvdXJjZS0+bnZfcmVzb3VyY2UuYnVmZmVyRm9ybWF0ID0KKyAgICAgICAgICAgIGdzdF9udmVuY19nZXRfbnZfYnVmZmVyX2Zvcm1hdCAoR1NUX1ZJREVPX0lORk9fRk9STUFUIChpbmZvKSk7CisgICAgICAgIGluX2dsX3Jlc291cmNlLT5udl9yZXNvdXJjZS5yZXNvdXJjZVRvUmVnaXN0ZXIgPQorICAgICAgICAgICAgaW5fZ2xfcmVzb3VyY2UtPmN1ZGFfcG9pbnRlcjsKKworICAgICAgICBudl9yZXQgPQorICAgICAgICAgICAgTnZFbmNSZWdpc3RlclJlc291cmNlIChudmVuYy0+ZW5jb2RlciwKKyAgICAgICAgICAgICZpbl9nbF9yZXNvdXJjZS0+bnZfcmVzb3VyY2UpOworICAgICAgICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKQorICAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG52ZW5jLCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHJlc291cmNlICVwLCByZXQgJWQiLAorICAgICAgICAgICAgICBpbl9nbF9yZXNvdXJjZSwgbnZfcmV0KTsKKworICAgICAgICBudmVuYy0+aW5wdXRfYnVmc1tpXSA9IGluX2dsX3Jlc291cmNlOworICAgICAgICBnX2FzeW5jX3F1ZXVlX3B1c2ggKG52ZW5jLT5pbl9idWZzX3Bvb2wsIG52ZW5jLT5pbnB1dF9idWZzW2ldKTsKKyAgICAgIH0KKworICAgICAgY3VDdHhQb3BDdXJyZW50IChOVUxMKTsKKyAgICB9IGVsc2UKKyNlbmRpZgorICAgIHsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBudmVuYy0+bl9idWZzOyArK2kpIHsKKyAgICAgICAgTlZfRU5DX0NSRUFURV9JTlBVVF9CVUZGRVIgY2luX2J1ZiA9IHsgMCwgfTsKKworICAgICAgICBjaW5fYnVmLnZlcnNpb24gPSBOVl9FTkNfQ1JFQVRFX0lOUFVUX0JVRkZFUl9WRVI7CisKKyAgICAgICAgY2luX2J1Zi53aWR0aCA9IEdTVF9ST1VORF9VUF8zMiAoaW5wdXRfd2lkdGgpOworICAgICAgICBjaW5fYnVmLmhlaWdodCA9IEdTVF9ST1VORF9VUF8zMiAoaW5wdXRfaGVpZ2h0KTsKKworICAgICAgICBjaW5fYnVmLm1lbW9yeUhlYXAgPSBOVl9FTkNfTUVNT1JZX0hFQVBfU1lTTUVNX0NBQ0hFRDsKKyAgICAgICAgY2luX2J1Zi5idWZmZXJGbXQgPQorICAgICAgICAgICAgZ3N0X252ZW5jX2dldF9udl9idWZmZXJfZm9ybWF0IChHU1RfVklERU9fSU5GT19GT1JNQVQgKGluZm8pKTsKKworICAgICAgICBudl9yZXQgPSBOdkVuY0NyZWF0ZUlucHV0QnVmZmVyIChudmVuYy0+ZW5jb2RlciwgJmNpbl9idWYpOworCisgICAgICAgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpIHsKKyAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGVuYywgIkZhaWxlZCB0byBhbGxvY2F0ZSBpbnB1dCBidWZmZXI6ICVkIiwKKyAgICAgICAgICAgICAgbnZfcmV0KTsKKyAgICAgICAgICAvKiBGSVhNRTogY2xlYW4gdXAgKi8KKyAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKworICAgICAgICBudmVuYy0+aW5wdXRfYnVmc1tpXSA9IGNpbl9idWYuaW5wdXRCdWZmZXI7CisKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChudmVuYywgImFsbG9jYXRlZCAgaW5wdXQgYnVmZmVyICUyZDogJXAiLCBpLAorICAgICAgICAgICAgbnZlbmMtPmlucHV0X2J1ZnNbaV0pOworCisgICAgICAgIGdfYXN5bmNfcXVldWVfcHVzaCAobnZlbmMtPmluX2J1ZnNfcG9vbCwgbnZlbmMtPmlucHV0X2J1ZnNbaV0pOworICAgICAgfQorICAgIH0KKworICAgIC8qIG91dHB1dCBidWZmZXJzICovCisgICAgbnZlbmMtPm91dHB1dF9idWZzID0gZ19uZXcwIChOVl9FTkNfT1VUUFVUX1BUUiwgbnZlbmMtPm5fYnVmcyk7CisgICAgZm9yIChpID0gMDsgaSA8IG52ZW5jLT5uX2J1ZnM7ICsraSkgeworICAgICAgTlZfRU5DX0NSRUFURV9CSVRTVFJFQU1fQlVGRkVSIGNvdXRfYnVmID0geyAwLCB9OworCisgICAgICBjb3V0X2J1Zi52ZXJzaW9uID0gTlZfRU5DX0NSRUFURV9CSVRTVFJFQU1fQlVGRkVSX1ZFUjsKKworICAgICAgLyogMSBNQiBzaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgbW9zdCBvdXRwdXQgZnJhbWVzLgorICAgICAgICogTlZFTkMgd2lsbCBhdXRvbWF0aWNhbGx5IGluY3JlYXNlIHRoaXMgaWYgaXQncyBub3QgZW5vdWdoLiAqLworICAgICAgY291dF9idWYuc2l6ZSA9IDEwMjQgKiAxMDI0OworICAgICAgY291dF9idWYubWVtb3J5SGVhcCA9IE5WX0VOQ19NRU1PUllfSEVBUF9TWVNNRU1fQ0FDSEVEOworCisgICAgICBHX0xPQ0sgKGluaXRpYWxpemF0aW9uX2xvY2spOworICAgICAgbnZfcmV0ID0gTnZFbmNDcmVhdGVCaXRzdHJlYW1CdWZmZXIgKG52ZW5jLT5lbmNvZGVyLCAmY291dF9idWYpOworICAgICAgR19VTkxPQ0sgKGluaXRpYWxpemF0aW9uX2xvY2spOworCisgICAgICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZW5jLCAiRmFpbGVkIHRvIGFsbG9jYXRlIGlucHV0IGJ1ZmZlcjogJWQiLCBudl9yZXQpOworICAgICAgICAvKiBGSVhNRTogY2xlYW4gdXAgKi8KKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgfQorCisgICAgICBudmVuYy0+b3V0cHV0X2J1ZnNbaV0gPSBjb3V0X2J1Zi5iaXRzdHJlYW1CdWZmZXI7CisKKyAgICAgIEdTVF9JTkZPX09CSkVDVCAobnZlbmMsICJhbGxvY2F0ZWQgb3V0cHV0IGJ1ZmZlciAlMmQ6ICVwIiwgaSwKKyAgICAgICAgICBudmVuYy0+b3V0cHV0X2J1ZnNbaV0pOworCisgICAgICBnX2FzeW5jX3F1ZXVlX3B1c2ggKG52ZW5jLT5iaXRzdHJlYW1fcG9vbCwgbnZlbmMtPm91dHB1dF9idWZzW2ldKTsKKyAgICB9CisKKyNpZiAwCisgICAgLyogR2V0IFNQUy9QUFMgKi8KKyAgICB7CisgICAgICBOVl9FTkNfU0VRVUVOQ0VfUEFSQU1fUEFZTE9BRCBzZXFfcGFyYW0gPSB7IDAgfTsKKyAgICAgIHVpbnQzMl90IHNlcV9zaXplID0gMDsKKworICAgICAgc2VxX3BhcmFtLnZlcnNpb24gPSBOVl9FTkNfU0VRVUVOQ0VfUEFSQU1fUEFZTE9BRF9WRVI7CisgICAgICBzZXFfcGFyYW0uc3BzcHBzQnVmZmVyID0gZ19hbGxvY2EgKDEwMjQpOworICAgICAgc2VxX3BhcmFtLmluQnVmZmVyU2l6ZSA9IDEwMjQ7CisgICAgICBzZXFfcGFyYW0ub3V0U1BTUFBTUGF5bG9hZFNpemUgPSAmc2VxX3NpemU7CisKKyAgICAgIG52X3JldCA9IE52RW5jR2V0U2VxdWVuY2VQYXJhbXMgKG52ZW5jLT5lbmNvZGVyLCAmc2VxX3BhcmFtKTsKKyAgICAgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpIHsKKyAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbmMsICJGYWlsZWQgdG8gcmV0cmlldmUgU1BTL1BQUzogJWQiLCBudl9yZXQpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICB9CisKKyAgICAgIC8qIEZJWE1FOiB1c2UgU1BTL1BQUyAqLworICAgICAgR1NUX01FTURVTVBfT0JKRUNUIChlbmMsICJTUFMvUFBTIiwgc2VxX3BhcmFtLnNwc3Bwc0J1ZmZlciwgc2VxX3NpemUpOworICAgIH0KKyNlbmRpZgorICB9CisKKyAgZ19hc3NlcnQgKG52ZW5jX2NsYXNzLT5zZXRfc3JjX2NhcHMpOworICBpZiAoIW52ZW5jX2NsYXNzLT5zZXRfc3JjX2NhcHMgKG52ZW5jLCBzdGF0ZSkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChudmVuYywgIlN1YmNsYXNzIGZhaWxlZCB0byBzZXQgb3V0cHV0IGNhcHMiKTsKKyAgICAvKiBGSVhNRTogY2xlYW4gdXAgKi8KKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGlubGluZSBndWludAorX3BsYW5lX2dldF9uX2NvbXBvbmVudHMgKEdzdFZpZGVvSW5mbyAqIGluZm8sIGd1aW50IHBsYW5lKQoreworICBzd2l0Y2ggKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoaW5mbykpIHsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCeDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSeDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfeFJHQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfeEJHUjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCQToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSQToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQVJHQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQUJHUjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQVlVVjoKKyAgICAgIHJldHVybiA0OworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCMTY6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUjE2OgorICAgICAgcmV0dXJuIDM7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVkxNl9CRToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfR1JBWTE2X0xFOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVVkyOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9VWVZZOgorICAgICAgcmV0dXJuIDI7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX05WMTI6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX05WMjE6CisgICAgICByZXR1cm4gcGxhbmUgPT0gMCA/IDEgOiAyOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9HUkFZODoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQ0NDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQyQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQxQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfSTQyMDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVYxMjoKKyAgICAgIHJldHVybiAxOworICAgIGRlZmF1bHQ6CisgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICAgIHJldHVybiAxOworICB9Cit9CisKKyNpZiBIQVZFX05WRU5DX0dTVF9HTAorc3RydWN0IG1hcF9nbF9pbnB1dAoreworICBHc3ROdkJhc2VFbmMgKm52ZW5jOworICBHc3RWaWRlb0NvZGVjRnJhbWUgKmZyYW1lOworICBHc3RWaWRlb0luZm8gKmluZm87CisgIHN0cnVjdCBnbF9pbnB1dF9yZXNvdXJjZSAqaW5fZ2xfcmVzb3VyY2U7Cit9OworCitzdGF0aWMgdm9pZAorX21hcF9nbF9pbnB1dF9idWZmZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIHN0cnVjdCBtYXBfZ2xfaW5wdXQgKmRhdGEpCit7CisgIGN1ZGFFcnJvcl90IGN1ZGFfcmV0OworICBndWludDggKmRhdGFfcG9pbnRlcjsKKyAgZ3VpbnQgaTsKKworICBjdUN0eFB1c2hDdXJyZW50IChkYXRhLT5udmVuYy0+Y3VkYV9jdHgpOworICBkYXRhX3BvaW50ZXIgPSBkYXRhLT5pbl9nbF9yZXNvdXJjZS0+Y3VkYV9wb2ludGVyOworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKGRhdGEtPmluZm8pOyBpKyspIHsKKyAgICBndWludCBwbGFuZV9uX2NvbXBvbmVudHM7CisgICAgR3N0R0xCdWZmZXIgKmdsX2J1Zl9vYmo7CisgICAgR3N0R0xNZW1vcnlQQk8gKmdsX21lbTsKKyAgICBndWludCBzcmNfc3RyaWRlLCBkZXN0X3N0cmlkZTsKKworICAgIGdsX21lbSA9CisgICAgICAgIChHc3RHTE1lbW9yeVBCTyAqKSBnc3RfYnVmZmVyX3BlZWtfbWVtb3J5IChkYXRhLT5mcmFtZS0+aW5wdXRfYnVmZmVyLAorICAgICAgICBpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsIChnc3RfaXNfZ2xfbWVtb3J5X3BibyAoKEdzdE1lbW9yeSAqKSBnbF9tZW0pKTsKKyAgICBkYXRhLT5pbl9nbF9yZXNvdXJjZS0+Z2xfbWVtW2ldID0gR1NUX0dMX01FTU9SWV9DQVNUIChnbF9tZW0pOworICAgIHBsYW5lX25fY29tcG9uZW50cyA9IF9wbGFuZV9nZXRfbl9jb21wb25lbnRzIChkYXRhLT5pbmZvLCBpKTsKKworICAgIGdsX2J1Zl9vYmogPSAoR3N0R0xCdWZmZXIgKikgZ2xfbWVtLT5wYm87CisgICAgZ19yZXR1cm5faWZfZmFpbCAoZ2xfYnVmX29iaiAhPSBOVUxMKTsKKworICAgIC8qIGdldCB0aGUgdGV4dHVyZSBpbnRvIHRoZSBQQk8gKi8KKyAgICBnc3RfZ2xfbWVtb3J5X3Bib191cGxvYWRfdHJhbnNmZXIgKGdsX21lbSk7CisgICAgZ3N0X2dsX21lbW9yeV9wYm9fZG93bmxvYWRfdHJhbnNmZXIgKGdsX21lbSk7CisKKyAgICBHU1RfTE9HX09CSkVDVCAoZGF0YS0+bnZlbmMsICJhdHRlbXB0aW5nIHRvIGNvcHkgdGV4dHVyZSAldSBpbnRvIGN1ZGEiLAorICAgICAgICBnbF9tZW0tPm1lbS50ZXhfaWQpOworCisgICAgY3VkYV9yZXQgPQorICAgICAgICBjdWRhR3JhcGhpY3NHTFJlZ2lzdGVyQnVmZmVyICgmZGF0YS0+aW5fZ2xfcmVzb3VyY2UtPmN1ZGFfdGV4dHVyZSwKKyAgICAgICAgZ2xfYnVmX29iai0+aWQsIGN1ZGFHcmFwaGljc1JlZ2lzdGVyRmxhZ3NSZWFkT25seSk7CisgICAgaWYgKGN1ZGFfcmV0ICE9IGN1ZGFTdWNjZXNzKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChkYXRhLT5udmVuYywgImZhaWxlZCB0byByZWdpc3RlciBHTCB0ZXh0dXJlICV1IHRvIGN1ZGEgIgorICAgICAgICAgICJyZXQgOiVkIiwgZ2xfbWVtLT5tZW0udGV4X2lkLCBjdWRhX3JldCk7CisgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICB9CisKKyAgICBjdWRhX3JldCA9CisgICAgICAgIGN1ZGFHcmFwaGljc01hcFJlc291cmNlcyAoMSwgJmRhdGEtPmluX2dsX3Jlc291cmNlLT5jdWRhX3RleHR1cmUsIDApOworICAgIGlmIChjdWRhX3JldCAhPSBjdWRhU3VjY2VzcykgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoZGF0YS0+bnZlbmMsICJmYWlsZWQgdG8gbWFwIEdMIHRleHR1cmUgJXUgaW50byBjdWRhICIKKyAgICAgICAgICAicmV0IDolZCIsIGdsX21lbS0+bWVtLnRleF9pZCwgY3VkYV9yZXQpOworICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgfQorCisgICAgY3VkYV9yZXQgPQorICAgICAgICBjdWRhR3JhcGhpY3NSZXNvdXJjZUdldE1hcHBlZFBvaW50ZXIgKCZkYXRhLT4KKyAgICAgICAgaW5fZ2xfcmVzb3VyY2UtPmN1ZGFfcGxhbmVfcG9pbnRlcnNbaV0sCisgICAgICAgICZkYXRhLT5pbl9nbF9yZXNvdXJjZS0+Y3VkYV9udW1fYnl0ZXMsCisgICAgICAgIGRhdGEtPmluX2dsX3Jlc291cmNlLT5jdWRhX3RleHR1cmUpOworICAgIGlmIChjdWRhX3JldCAhPSBjdWRhU3VjY2VzcykgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoZGF0YS0+bnZlbmMsICJmYWlsZWQgdG8gZ2V0IG1hcHBlZCBwb2ludGVyIG9mIG1hcCBHTCAiCisgICAgICAgICAgInRleHR1cmUgJXUgaW4gY3VkYSByZXQgOiVkIiwgZ2xfbWVtLT5tZW0udGV4X2lkLCBjdWRhX3JldCk7CisgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICB9CisKKyAgICBzcmNfc3RyaWRlID0gR1NUX1ZJREVPX0lORk9fUExBTkVfU1RSSURFIChkYXRhLT5pbmZvLCBpKTsKKyAgICBkZXN0X3N0cmlkZSA9IGRhdGEtPmluX2dsX3Jlc291cmNlLT5jdWRhX3N0cmlkZTsKKworICAgIC8qIGNvcHkgaW50byBzY3JhdGNoIGJ1ZmZlciAqLworICAgIGN1ZGFfcmV0ID0KKyAgICAgICAgY3VkYU1lbWNweTJEIChkYXRhX3BvaW50ZXIsIGRlc3Rfc3RyaWRlLAorICAgICAgICBkYXRhLT5pbl9nbF9yZXNvdXJjZS0+Y3VkYV9wbGFuZV9wb2ludGVyc1tpXSwgc3JjX3N0cmlkZSwKKyAgICAgICAgX2dldF9wbGFuZV93aWR0aCAoZGF0YS0+aW5mbywgaSkgKiBwbGFuZV9uX2NvbXBvbmVudHMsCisgICAgICAgIF9nZXRfcGxhbmVfaGVpZ2h0IChkYXRhLT5pbmZvLCBpKSwgY3VkYU1lbWNweURldmljZVRvRGV2aWNlKTsKKyAgICBpZiAoY3VkYV9yZXQgIT0gY3VkYVN1Y2Nlc3MpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGRhdGEtPm52ZW5jLCAiZmFpbGVkIHRvIGNvcHkgR0wgdGV4dHVyZSAldSBpbnRvIGN1ZGEgIgorICAgICAgICAgICJyZXQgOiVkIiwgZ2xfbWVtLT5tZW0udGV4X2lkLCBjdWRhX3JldCk7CisgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICB9CisKKyAgICBjdWRhX3JldCA9CisgICAgICAgIGN1ZGFHcmFwaGljc1VubWFwUmVzb3VyY2VzICgxLCAmZGF0YS0+aW5fZ2xfcmVzb3VyY2UtPmN1ZGFfdGV4dHVyZSwgMCk7CisgICAgaWYgKGN1ZGFfcmV0ICE9IGN1ZGFTdWNjZXNzKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChkYXRhLT5udmVuYywgImZhaWxlZCB0byB1bm1hcCBHTCB0ZXh0dXJlICV1IGZyb20gY3VkYSAiCisgICAgICAgICAgInJldCA6JWQiLCBnbF9tZW0tPm1lbS50ZXhfaWQsIGN1ZGFfcmV0KTsKKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgIH0KKworICAgIGN1ZGFfcmV0ID0KKyAgICAgICAgY3VkYUdyYXBoaWNzVW5yZWdpc3RlclJlc291cmNlIChkYXRhLT5pbl9nbF9yZXNvdXJjZS0+Y3VkYV90ZXh0dXJlKTsKKyAgICBpZiAoY3VkYV9yZXQgIT0gY3VkYVN1Y2Nlc3MpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGRhdGEtPm52ZW5jLCAiZmFpbGVkIHRvIHVucmVnaXN0ZXIgR0wgdGV4dHVyZSAldSBmcm9tICIKKyAgICAgICAgICAiY3VkYSByZXQgOiVkIiwgZ2xfbWVtLT5tZW0udGV4X2lkLCBjdWRhX3JldCk7CisgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICB9CisKKyAgICBkYXRhX3BvaW50ZXIgPQorICAgICAgICBkYXRhX3BvaW50ZXIgKworICAgICAgICBkYXRhLT5pbl9nbF9yZXNvdXJjZS0+Y3VkYV9zdHJpZGUgKgorICAgICAgICBfZ2V0X3BsYW5lX2hlaWdodCAoJmRhdGEtPm52ZW5jLT5pbnB1dF9pbmZvLCBpKTsKKyAgfQorICBjdUN0eFBvcEN1cnJlbnQgKE5VTEwpOworfQorI2VuZGlmCisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitfYWNxdWlyZV9pbnB1dF9idWZmZXIgKEdzdE52QmFzZUVuYyAqIG52ZW5jLCBncG9pbnRlciAqIGlucHV0KQoreworICBnX2Fzc2VydCAoaW5wdXQpOworCisgIEdTVF9MT0dfT0JKRUNUIChudmVuYywgImFjcXVpcmluZyBpbnB1dCBidWZmZXIuLiIpOworICBHU1RfVklERU9fRU5DT0RFUl9TVFJFQU1fVU5MT0NLIChudmVuYyk7CisgICppbnB1dCA9IGdfYXN5bmNfcXVldWVfcG9wIChudmVuYy0+aW5fYnVmc19wb29sKTsKKyAgR1NUX1ZJREVPX0VOQ09ERVJfU1RSRUFNX0xPQ0sgKG52ZW5jKTsKKworICByZXR1cm4gR1NUX0ZMT1dfT0s7Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitfc3VibWl0X2lucHV0X2J1ZmZlciAoR3N0TnZCYXNlRW5jICogbnZlbmMsIEdzdFZpZGVvQ29kZWNGcmFtZSAqIGZyYW1lLAorICAgIEdzdFZpZGVvRnJhbWUgKiB2ZnJhbWUsIHZvaWQgKmlucHV0QnVmZmVyLCB2b2lkICppbnB1dEJ1ZmZlclB0ciwKKyAgICBOVl9FTkNfQlVGRkVSX0ZPUk1BVCBidWZmZXJGb3JtYXQsIHZvaWQgKm91dHB1dEJ1ZmZlclB0cikKK3sKKyAgR3N0TnZCYXNlRW5jQ2xhc3MgKm52ZW5jX2NsYXNzID0gR1NUX05WX0JBU0VfRU5DX0dFVF9DTEFTUyAobnZlbmMpOworICBOVl9FTkNfUElDX1BBUkFNUyBwaWNfcGFyYW1zID0geyAwLCB9OworICBOVkVOQ1NUQVRVUyBudl9yZXQ7CisKKyAgR1NUX0xPR19PQkpFQ1QgKG52ZW5jLCAiJXU6IGlucHV0IGJ1ZmZlciAlcCwgb3V0cHV0IGJ1ZmZlciAlcCwgIgorICAgICAgInB0cyAlIiBHU1RfVElNRV9GT1JNQVQsIGZyYW1lLT5zeXN0ZW1fZnJhbWVfbnVtYmVyLCBpbnB1dEJ1ZmZlciwKKyAgICAgIG91dHB1dEJ1ZmZlclB0ciwgR1NUX1RJTUVfQVJHUyAoZnJhbWUtPnB0cykpOworCisgIHBpY19wYXJhbXMudmVyc2lvbiA9IE5WX0VOQ19QSUNfUEFSQU1TX1ZFUjsKKyAgcGljX3BhcmFtcy5pbnB1dEJ1ZmZlciA9IGlucHV0QnVmZmVyUHRyOworICBwaWNfcGFyYW1zLmJ1ZmZlckZtdCA9IGJ1ZmZlckZvcm1hdDsKKworICBwaWNfcGFyYW1zLmlucHV0V2lkdGggPSBHU1RfVklERU9fRlJBTUVfV0lEVEggKHZmcmFtZSk7CisgIHBpY19wYXJhbXMuaW5wdXRIZWlnaHQgPSBHU1RfVklERU9fRlJBTUVfSEVJR0hUICh2ZnJhbWUpOworICBwaWNfcGFyYW1zLm91dHB1dEJpdHN0cmVhbSA9IG91dHB1dEJ1ZmZlclB0cjsKKyAgcGljX3BhcmFtcy5jb21wbGV0aW9uRXZlbnQgPSBOVUxMOworICBpZiAoR1NUX1ZJREVPX0ZSQU1FX0lTX0lOVEVSTEFDRUQgKHZmcmFtZSkpIHsKKyAgICBpZiAoR1NUX1ZJREVPX0ZSQU1FX0lTX1RGRiAodmZyYW1lKSkKKyAgICAgIHBpY19wYXJhbXMucGljdHVyZVN0cnVjdCA9IE5WX0VOQ19QSUNfU1RSVUNUX0ZJRUxEX1RPUF9CT1RUT007CisgICAgZWxzZQorICAgICAgcGljX3BhcmFtcy5waWN0dXJlU3RydWN0ID0gTlZfRU5DX1BJQ19TVFJVQ1RfRklFTERfQk9UVE9NX1RPUDsKKyAgfSBlbHNlIHsKKyAgICBwaWNfcGFyYW1zLnBpY3R1cmVTdHJ1Y3QgPSBOVl9FTkNfUElDX1NUUlVDVF9GUkFNRTsKKyAgfQorICBwaWNfcGFyYW1zLmlucHV0VGltZVN0YW1wID0gZnJhbWUtPnB0czsKKyAgcGljX3BhcmFtcy5pbnB1dER1cmF0aW9uID0KKyAgICAgIEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChmcmFtZS0+ZHVyYXRpb24pID8gZnJhbWUtPmR1cmF0aW9uIDogMDsKKyAgcGljX3BhcmFtcy5mcmFtZUlkeCA9IGZyYW1lLT5zeXN0ZW1fZnJhbWVfbnVtYmVyOworCisgIGlmIChHU1RfVklERU9fQ09ERUNfRlJBTUVfSVNfRk9SQ0VfS0VZRlJBTUUgKGZyYW1lKSkKKyAgICBwaWNfcGFyYW1zLmVuY29kZVBpY0ZsYWdzID0gTlZfRU5DX1BJQ19GTEFHX0ZPUkNFSURSOworICBlbHNlCisgICAgcGljX3BhcmFtcy5lbmNvZGVQaWNGbGFncyA9IDA7CisKKyAgaWYgKG52ZW5jX2NsYXNzLT5zZXRfcGljX3BhcmFtcworICAgICAgJiYgIW52ZW5jX2NsYXNzLT5zZXRfcGljX3BhcmFtcyAobnZlbmMsIGZyYW1lLCAmcGljX3BhcmFtcykpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChudmVuYywgIlN1YmNsYXNzIGZhaWxlZCB0byBzdWJtaXQgYnVmZmVyIik7CisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICB9CisKKyAgbnZfcmV0ID0gTnZFbmNFbmNvZGVQaWN0dXJlIChudmVuYy0+ZW5jb2RlciwgJnBpY19wYXJhbXMpOworICBpZiAobnZfcmV0ID09IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgR1NUX0xPR19PQkpFQ1QgKG52ZW5jLCAiRW5jb2RlZCBwaWN0dXJlIik7CisgIH0gZWxzZSBpZiAobnZfcmV0ID09IE5WX0VOQ19FUlJfTkVFRF9NT1JFX0lOUFVUKSB7CisgICAgLyogRklYTUU6IHdlIHNob3VsZCBwcm9iYWJseSBxdWV1ZSBwZW5kaW5nIG91dHB1dCBidWZmZXJzIGhlcmUgYW5kIG9ubHkKKyAgICAgKiBzdWJtaXQgdGhlbSB0byB0aGUgYXN5bmMgcXVldWUgb25jZSB3ZSBnb3Qgc3VjZXNzIGJhY2sgKi8KKyAgICBHU1RfREVCVUdfT0JKRUNUIChudmVuYywgIkVuY29kZWQgcGljdHVyZSAoZW5jb2RlciBuZWVkcyBtb3JlIGlucHV0KSIpOworICB9IGVsc2UgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG52ZW5jLCAiRmFpbGVkIHRvIGVuY29kZSBwaWN0dXJlOiAlZCIsIG52X3JldCk7CisgICAgR1NUX0RFQlVHX09CSkVDVCAobnZlbmMsICJyZS1lbnF1ZXVlaW5nIGlucHV0IGJ1ZmZlciAlcCIsIGlucHV0QnVmZmVyKTsKKyAgICBnX2FzeW5jX3F1ZXVlX3B1c2ggKG52ZW5jLT5pbl9idWZzX3Bvb2wsIGlucHV0QnVmZmVyKTsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChudmVuYywgInJlLWVucXVldWVpbmcgb3V0cHV0IGJ1ZmZlciAlcCIsIG91dHB1dEJ1ZmZlclB0cik7CisgICAgZ19hc3luY19xdWV1ZV9wdXNoIChudmVuYy0+Yml0c3RyZWFtX3Bvb2wsIG91dHB1dEJ1ZmZlclB0cik7CisKKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgIH0KKworICBnX2FzeW5jX3F1ZXVlX3B1c2ggKG52ZW5jLT5iaXRzdHJlYW1fcXVldWUsIG91dHB1dEJ1ZmZlclB0cik7CisKKyAgcmV0dXJuIEdTVF9GTE9XX09LOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X252X2Jhc2VfZW5jX2hhbmRsZV9mcmFtZSAoR3N0VmlkZW9FbmNvZGVyICogZW5jLCBHc3RWaWRlb0NvZGVjRnJhbWUgKiBmcmFtZSkKK3sKKyAgZ3BvaW50ZXIgaW5wdXRfYnVmZmVyID0gTlVMTDsKKyAgR3N0TnZCYXNlRW5jICpudmVuYyA9IEdTVF9OVl9CQVNFX0VOQyAoZW5jKTsKKyAgTlZfRU5DX09VVFBVVF9QVFIgb3V0X2J1ZjsKKyAgTlZFTkNTVEFUVVMgbnZfcmV0OworICBHc3RWaWRlb0ZyYW1lIHZmcmFtZTsKKyAgR3N0VmlkZW9JbmZvICppbmZvID0gJm52ZW5jLT5pbnB1dF9zdGF0ZS0+aW5mbzsKKyAgR3N0Rmxvd1JldHVybiBmbG93ID0gR1NUX0ZMT1dfT0s7CisgIEdzdE1hcEZsYWdzIGluX21hcF9mbGFncyA9IEdTVF9NQVBfUkVBRDsKKyAgc3RydWN0IGZyYW1lX3N0YXRlICpzdGF0ZTsKKyAgZ3VpbnQgZnJhbWVfbiA9IDA7CisKKyAgZ19hc3NlcnQgKG52ZW5jLT5lbmNvZGVyICE9IE5VTEwpOworCisjaWYgSEFWRV9OVkVOQ19HU1RfR0wKKyAgaWYgKG52ZW5jLT5nbF9pbnB1dCkKKyAgICBpbl9tYXBfZmxhZ3MgfD0gR1NUX01BUF9HTDsKKyNlbmRpZgorCisgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJnZmcmFtZSwgaW5mbywgZnJhbWUtPmlucHV0X2J1ZmZlciwgaW5fbWFwX2ZsYWdzKSkKKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisKKyAgLyogbWFrZSBzdXJlIG91ciB0aHJlYWQgdGhhdCB3YWl0cyBmb3Igb3V0cHV0IHRvIGJlIHJlYWR5IGlzIHN0YXJ0ZWQgKi8KKyAgaWYgKG52ZW5jLT5iaXRzdHJlYW1fdGhyZWFkID09IE5VTEwpIHsKKyAgICBpZiAoIWdzdF9udl9iYXNlX2VuY19zdGFydF9iaXRzdHJlYW1fdGhyZWFkIChudmVuYykpCisgICAgICBnb3RvIGVycm9yOworICB9CisKKyAgZmxvdyA9IF9hY3F1aXJlX2lucHV0X2J1ZmZlciAobnZlbmMsICZpbnB1dF9idWZmZXIpOworICBpZiAoZmxvdyAhPSBHU1RfRkxPV19PSykKKyAgICByZXR1cm4gZmxvdzsKKyAgaWYgKGlucHV0X2J1ZmZlciA9PSBOVUxMKQorICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKworICBzdGF0ZSA9IGZyYW1lLT51c2VyX2RhdGE7CisgIGlmICghc3RhdGUpCisgICAgc3RhdGUgPSBnX25ldzAgKHN0cnVjdCBmcmFtZV9zdGF0ZSwgMSk7CisgIHN0YXRlLT5uX2J1ZmZlcnMgPSAxOworCisjaWYgSEFWRV9OVkVOQ19HU1RfR0wKKyAgaWYgKG52ZW5jLT5nbF9pbnB1dCkgeworICAgIHN0cnVjdCBnbF9pbnB1dF9yZXNvdXJjZSAqaW5fZ2xfcmVzb3VyY2UgPSBpbnB1dF9idWZmZXI7CisgICAgc3RydWN0IG1hcF9nbF9pbnB1dCBkYXRhOworCisgICAgR1NUX0xPR19PQkpFQ1QgKGVuYywgImdvdCBpbnB1dCBidWZmZXIgJXAiLCBpbl9nbF9yZXNvdXJjZSk7CisKKyAgICBpbl9nbF9yZXNvdXJjZS0+Z2xfbWVtWzBdID0KKyAgICAgICAgKEdzdEdMTWVtb3J5ICopIGdzdF9idWZmZXJfcGVla19tZW1vcnkgKGZyYW1lLT5pbnB1dF9idWZmZXIsIDApOworICAgIGdfYXNzZXJ0IChnc3RfaXNfZ2xfbWVtb3J5ICgoR3N0TWVtb3J5ICopIGluX2dsX3Jlc291cmNlLT5nbF9tZW1bMF0pKTsKKworICAgIGRhdGEubnZlbmMgPSBudmVuYzsKKyAgICBkYXRhLmZyYW1lID0gZnJhbWU7CisgICAgZGF0YS5pbmZvID0gJnZmcmFtZS5pbmZvOworICAgIGRhdGEuaW5fZ2xfcmVzb3VyY2UgPSBpbl9nbF9yZXNvdXJjZTsKKworICAgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGluX2dsX3Jlc291cmNlLT5nbF9tZW1bMF0tPm1lbS5jb250ZXh0LAorICAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX21hcF9nbF9pbnB1dF9idWZmZXIsICZkYXRhKTsKKworICAgIGluX2dsX3Jlc291cmNlLT5udl9tYXBwZWRfcmVzb3VyY2UudmVyc2lvbiA9IE5WX0VOQ19NQVBfSU5QVVRfUkVTT1VSQ0VfVkVSOworICAgIGluX2dsX3Jlc291cmNlLT5udl9tYXBwZWRfcmVzb3VyY2UucmVnaXN0ZXJlZFJlc291cmNlID0KKyAgICAgICAgaW5fZ2xfcmVzb3VyY2UtPm52X3Jlc291cmNlLnJlZ2lzdGVyZWRSZXNvdXJjZTsKKworICAgIG52X3JldCA9CisgICAgICAgIE52RW5jTWFwSW5wdXRSZXNvdXJjZSAobnZlbmMtPmVuY29kZXIsCisgICAgICAgICZpbl9nbF9yZXNvdXJjZS0+bnZfbWFwcGVkX3Jlc291cmNlKTsKKyAgICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChudmVuYywgIkZhaWxlZCB0byBtYXAgaW5wdXQgcmVzb3VyY2UgJXAsIHJldCAlZCIsCisgICAgICAgICAgaW5fZ2xfcmVzb3VyY2UsIG52X3JldCk7CisgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIG91dF9idWYgPSBnX2FzeW5jX3F1ZXVlX3RyeV9wb3AgKG52ZW5jLT5iaXRzdHJlYW1fcG9vbCk7CisgICAgaWYgKG91dF9idWYgPT0gTlVMTCkgeworICAgICAgR1NUX0RFQlVHX09CSkVDVCAobnZlbmMsICJ3YWl0IGZvciBvdXRwdXQgYnVmIHRvIGJlY29tZSBhdmFpbGFibGUgYWdhaW4iKTsKKyAgICAgIG91dF9idWYgPSBnX2FzeW5jX3F1ZXVlX3BvcCAobnZlbmMtPmJpdHN0cmVhbV9wb29sKTsKKyAgICB9CisKKyAgICBzdGF0ZS0+aW5fYnVmc1tmcmFtZV9uXSA9IGluX2dsX3Jlc291cmNlOworICAgIHN0YXRlLT5vdXRfYnVmc1tmcmFtZV9uKytdID0gb3V0X2J1ZjsKKworICAgIGZyYW1lLT51c2VyX2RhdGEgPSBzdGF0ZTsKKyAgICBmcmFtZS0+dXNlcl9kYXRhX2Rlc3Ryb3lfbm90aWZ5ID0gKEdEZXN0cm95Tm90aWZ5KSBnX2ZyZWU7CisKKyAgICBmbG93ID0KKyAgICAgICAgX3N1Ym1pdF9pbnB1dF9idWZmZXIgKG52ZW5jLCBmcmFtZSwgJnZmcmFtZSwgaW5fZ2xfcmVzb3VyY2UsCisgICAgICAgIGluX2dsX3Jlc291cmNlLT5udl9tYXBwZWRfcmVzb3VyY2UubWFwcGVkUmVzb3VyY2UsCisgICAgICAgIGluX2dsX3Jlc291cmNlLT5udl9tYXBwZWRfcmVzb3VyY2UubWFwcGVkQnVmZmVyRm10LCBvdXRfYnVmKTsKKworICAgIC8qIGVuY29kZXIgd2lsbCBrZWVwIGZyYW1lIGluIGxpc3QgaW50ZXJuYWxseSwgd2UnbGwgbG9vayBpdCB1cCBhZ2FpbiBsYXRlcgorICAgICAqIGluIHRoZSB0aHJlYWQgd2hlcmUgd2UgZ2V0IHRoZSBvdXRwdXQgYnVmZmVycyBhbmQgZmluaXNoIGl0IHRoZXJlICovCisgICAgZ3N0X3ZpZGVvX2NvZGVjX2ZyYW1lX3VucmVmIChmcmFtZSk7CisgICAgZnJhbWUgPSBOVUxMOworICB9CisjZW5kaWYKKworICBpZiAoIW52ZW5jLT5nbF9pbnB1dCkgeworICAgIE5WX0VOQ19MT0NLX0lOUFVUX0JVRkZFUiBpbl9idWZfbG9jayA9IHsgMCwgfTsKKyAgICBOVl9FTkNfSU5QVVRfUFRSIGluX2J1ZiA9IGlucHV0X2J1ZmZlcjsKKyAgICBndWludDggKnNyYywgKmRlc3Q7CisgICAgZ3VpbnQgc3JjX3N0cmlkZSwgZGVzdF9zdHJpZGU7CisgICAgZ3VpbnQgaGVpZ2h0LCB3aWR0aDsKKyAgICBndWludCB5OworCisgICAgR1NUX0xPR19PQkpFQ1QgKGVuYywgImdvdCBpbnB1dCBidWZmZXIgJXAiLCBpbl9idWYpOworCisgICAgaW5fYnVmX2xvY2sudmVyc2lvbiA9IE5WX0VOQ19MT0NLX0lOUFVUX0JVRkZFUl9WRVI7CisgICAgaW5fYnVmX2xvY2suaW5wdXRCdWZmZXIgPSBpbl9idWY7CisKKyAgICBudl9yZXQgPSBOdkVuY0xvY2tJbnB1dEJ1ZmZlciAobnZlbmMtPmVuY29kZXIsICZpbl9idWZfbG9jayk7CisgICAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAobnZlbmMsICJGYWlsZWQgdG8gbG9jayBpbnB1dCBidWZmZXI6ICVkIiwgbnZfcmV0KTsKKyAgICAgIC8qIEZJWE1FOiBwb3N0IHByb3BlciBlcnJvciBtZXNzYWdlICovCisgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBHU1RfTE9HX09CSkVDVCAobnZlbmMsICJMb2NrZWQgaW5wdXQgYnVmZmVyICVwIiwgaW5fYnVmKTsKKworICAgIHdpZHRoID0gR1NUX1ZJREVPX0ZSQU1FX1dJRFRIICgmdmZyYW1lKTsKKyAgICBoZWlnaHQgPSBHU1RfVklERU9fRlJBTUVfSEVJR0hUICgmdmZyYW1lKTsKKworICAgIC8vIEZJWE1FOiB0aGlzIG9ubHkgd29ya3MgZm9yIE5WMTIKKyAgICBnX2Fzc2VydCAoR1NUX1ZJREVPX0ZSQU1FX0ZPUk1BVCAoJnZmcmFtZSkgPT0gR1NUX1ZJREVPX0ZPUk1BVF9OVjEyKTsKKworICAgIC8qIGNvcHkgWSBwbGFuZSAqLworICAgIHNyYyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBICgmdmZyYW1lLCAwKTsKKyAgICBzcmNfc3RyaWRlID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSAoJnZmcmFtZSwgMCk7CisgICAgZGVzdCA9IGluX2J1Zl9sb2NrLmJ1ZmZlckRhdGFQdHI7CisgICAgZGVzdF9zdHJpZGUgPSBpbl9idWZfbG9jay5waXRjaDsKKyAgICBmb3IgKHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAgIG1lbWNweSAoZGVzdCwgc3JjLCB3aWR0aCk7CisgICAgICBkZXN0ICs9IGRlc3Rfc3RyaWRlOworICAgICAgc3JjICs9IHNyY19zdHJpZGU7CisgICAgfQorCisgICAgLyogY29weSBVViBwbGFuZSAqLworICAgIHNyYyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBICgmdmZyYW1lLCAxKTsKKyAgICBzcmNfc3RyaWRlID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSAoJnZmcmFtZSwgMSk7CisgICAgZGVzdCA9CisgICAgICAgIChndWludDggKikgaW5fYnVmX2xvY2suYnVmZmVyRGF0YVB0ciArCisgICAgICAgIEdTVF9ST1VORF9VUF8zMiAoR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmbnZlbmMtPmlucHV0X2luZm8pKSAqCisgICAgICAgIGluX2J1Zl9sb2NrLnBpdGNoOworICAgIGRlc3Rfc3RyaWRlID0gaW5fYnVmX2xvY2sucGl0Y2g7CisgICAgZm9yICh5ID0gMDsgeSA8IEdTVF9ST1VORF9VUF8yIChoZWlnaHQpIC8gMjsgKyt5KSB7CisgICAgICBtZW1jcHkgKGRlc3QsIHNyYywgd2lkdGgpOworICAgICAgZGVzdCArPSBkZXN0X3N0cmlkZTsKKyAgICAgIHNyYyArPSBzcmNfc3RyaWRlOworICAgIH0KKworICAgIG52X3JldCA9IE52RW5jVW5sb2NrSW5wdXRCdWZmZXIgKG52ZW5jLT5lbmNvZGVyLCBpbl9idWYpOworICAgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG52ZW5jLCAiRmFpbGVkIHRvIHVubG9jayBpbnB1dCBidWZmZXI6ICVkIiwgbnZfcmV0KTsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgb3V0X2J1ZiA9IGdfYXN5bmNfcXVldWVfdHJ5X3BvcCAobnZlbmMtPmJpdHN0cmVhbV9wb29sKTsKKyAgICBpZiAob3V0X2J1ZiA9PSBOVUxMKSB7CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChudmVuYywgIndhaXQgZm9yIG91dHB1dCBidWYgdG8gYmVjb21lIGF2YWlsYWJsZSBhZ2FpbiIpOworICAgICAgb3V0X2J1ZiA9IGdfYXN5bmNfcXVldWVfcG9wIChudmVuYy0+Yml0c3RyZWFtX3Bvb2wpOworICAgIH0KKworICAgIHN0YXRlLT5pbl9idWZzW2ZyYW1lX25dID0gaW5fYnVmOworICAgIHN0YXRlLT5vdXRfYnVmc1tmcmFtZV9uKytdID0gb3V0X2J1ZjsKKyAgICBmcmFtZS0+dXNlcl9kYXRhID0gc3RhdGU7CisgICAgZnJhbWUtPnVzZXJfZGF0YV9kZXN0cm95X25vdGlmeSA9IChHRGVzdHJveU5vdGlmeSkgZ19mcmVlOworCisgICAgZmxvdyA9CisgICAgICAgIF9zdWJtaXRfaW5wdXRfYnVmZmVyIChudmVuYywgZnJhbWUsICZ2ZnJhbWUsIGluX2J1ZiwgaW5fYnVmLAorICAgICAgICBnc3RfbnZlbmNfZ2V0X252X2J1ZmZlcl9mb3JtYXQgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoaW5mbykpLCBvdXRfYnVmKTsKKworICAgIC8qIGVuY29kZXIgd2lsbCBrZWVwIGZyYW1lIGluIGxpc3QgaW50ZXJuYWxseSwgd2UnbGwgbG9vayBpdCB1cCBhZ2FpbiBsYXRlcgorICAgICAqIGluIHRoZSB0aHJlYWQgd2hlcmUgd2UgZ2V0IHRoZSBvdXRwdXQgYnVmZmVycyBhbmQgZmluaXNoIGl0IHRoZXJlICovCisgICAgZ3N0X3ZpZGVvX2NvZGVjX2ZyYW1lX3VucmVmIChmcmFtZSk7CisgICAgZnJhbWUgPSBOVUxMOworICB9CisKKyAgaWYgKGZsb3cgIT0gR1NUX0ZMT1dfT0spCisgICAgZ290byBvdXQ7CisKKyAgZmxvdyA9IGdfYXRvbWljX2ludF9nZXQgKCZudmVuYy0+bGFzdF9mbG93KTsKKworb3V0OgorCisgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJnZmcmFtZSk7CisKKyAgcmV0dXJuIGZsb3c7CisKK2Vycm9yOgorICBmbG93ID0gR1NUX0ZMT1dfRVJST1I7CisgIGdvdG8gb3V0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9udl9iYXNlX2VuY19kcmFpbl9lbmNvZGVyIChHc3ROdkJhc2VFbmMgKiBudmVuYykKK3sKKyAgTlZfRU5DX1BJQ19QQVJBTVMgcGljX3BhcmFtcyA9IHsgMCwgfTsKKyAgTlZFTkNTVEFUVVMgbnZfcmV0OworCisgIEdTVF9JTkZPX09CSkVDVCAobnZlbmMsICJkcmFpbmluZyBlbmNvZGVyIik7CisKKyAgaWYgKG52ZW5jLT5pbnB1dF9zdGF0ZSA9PSBOVUxMKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAobnZlbmMsICJubyBpbnB1dCBzdGF0ZSwgbm90aGluZyB0byBkbyIpOworICAgIHJldHVybiBUUlVFOworICB9CisKKyAgcGljX3BhcmFtcy52ZXJzaW9uID0gTlZfRU5DX1BJQ19QQVJBTVNfVkVSOworICBwaWNfcGFyYW1zLmVuY29kZVBpY0ZsYWdzID0gTlZfRU5DX1BJQ19GTEFHX0VPUzsKKworICBudl9yZXQgPSBOdkVuY0VuY29kZVBpY3R1cmUgKG52ZW5jLT5lbmNvZGVyLCAmcGljX3BhcmFtcyk7CisgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpIHsKKyAgICBHU1RfTE9HX09CSkVDVCAobnZlbmMsICJGYWlsZWQgdG8gZHJhaW4gZW5jb2RlciwgcmV0ICVkIiwgbnZfcmV0KTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF9udl9iYXNlX2VuY19maW5pc2ggKEdzdFZpZGVvRW5jb2RlciAqIGVuYykKK3sKKyAgR3N0TnZCYXNlRW5jICpudmVuYyA9IEdTVF9OVl9CQVNFX0VOQyAoZW5jKTsKKworICBHU1RfRklYTUVfT0JKRUNUIChlbmMsICJpbXBsZW1lbnQgZmluaXNoIik7CisKKyAgZ3N0X252X2Jhc2VfZW5jX2RyYWluX2VuY29kZXIgKG52ZW5jKTsKKworICAvKiB3YWl0IGZvciBlbmNvZGVyIHRvIG91dHB1dCB0aGUgcmVtYWluaW5nIGJ1ZmZlcnMgKi8KKyAgZ3N0X252X2Jhc2VfZW5jX3N0b3BfYml0c3RyZWFtX3RocmVhZCAobnZlbmMpOworCisgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworI2lmIDAKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X252X2Jhc2VfZW5jX2ZsdXNoIChHc3RWaWRlb0VuY29kZXIgKiBlbmMpCit7CisgIEdzdE52QmFzZUVuYyAqbnZlbmMgPSBHU1RfTlZfQkFTRV9FTkMgKGVuYyk7CisgIEdTVF9JTkZPX09CSkVDVCAobnZlbmMsICJkb25lIGZsdXNoaW5nIGVuY29kZXIiKTsKKyAgcmV0dXJuIFRSVUU7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQKK2dzdF9udl9iYXNlX2VuY19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0TnZCYXNlRW5jICpudmVuYyA9IEdTVF9OVl9CQVNFX0VOQyAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfREVWSUNFX0lEOgorICAgICAgbnZlbmMtPmN1ZGFfZGV2aWNlX2lkID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X252X2Jhc2VfZW5jX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsCisgICAgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3ROdkJhc2VFbmMgKm52ZW5jID0gR1NUX05WX0JBU0VfRU5DIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9ERVZJQ0VfSUQ6CisgICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgbnZlbmMtPmN1ZGFfZGV2aWNlX2lkKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KZGlmZiAtLWdpdCBhL3N5cy9udmVuYy9nc3RudmJhc2VlbmMuaCBiL3N5cy9udmVuYy9nc3RudmJhc2VlbmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTg0M2U5Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzL252ZW5jL2dzdG52YmFzZWVuYy5oCkBAIC0wLDAgKzEsMTE0IEBACisvKiBHU3RyZWFtZXIgTlZFTkMgcGx1Z2luCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2VudHJpY3VsYXIgTHRkCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9OVl9CQVNFX0VOQ19IX0lOQ0xVREVEX18KKyNkZWZpbmUgX19HU1RfTlZfQkFTRV9FTkNfSF9JTkNMVURFRF9fCisKKyNpbmNsdWRlICJnc3RudmVuYy5oIgorCisjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvZW5jb2Rlci5oPgorCisjZGVmaW5lIEdTVF9UWVBFX05WX0JBU0VfRU5DIFwKKyAgKGdzdF9udl9iYXNlX2VuY19nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfTlZfQkFTRV9FTkMob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9OVl9CQVNFX0VOQyxHc3ROdkJhc2VFbmMpKQorI2RlZmluZSBHU1RfTlZfQkFTRV9FTkNfQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfTlZfQkFTRV9FTkMsR3N0TnZCYXNlRW5jQ2xhc3MpKQorI2RlZmluZSBHU1RfTlZfQkFTRV9FTkNfR0VUX0NMQVNTKG9iaikgXAorICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSxHU1RfVFlQRV9OVl9CQVNFX0VOQyxHc3ROdkJhc2VFbmNDbGFzcykpCisjZGVmaW5lIEdTVF9JU19OVl9CQVNFX0VOQyhvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX05WX0JBU0VfRU5DKSkKKyNkZWZpbmUgR1NUX0lTX05WX0JBU0VfRU5DX0NMQVNTKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9OVl9CQVNFX0VOQykpCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgR3N0VmlkZW9FbmNvZGVyIHZpZGVvX2VuY29kZXI7CisKKyAgLyogcHJvcGVydGllcyAqLworICBndWludCAgICAgICAgICAgY3VkYV9kZXZpY2VfaWQ7CisKKyAgQ1Vjb250ZXh0ICAgICAgIGN1ZGFfY3R4OworICB2b2lkICAgICAgICAgICogZW5jb2RlcjsKKworICAvKiB0aGUgc3VwcG9ydGVkIGlucHV0IGZvcm1hdHMgKi8KKyAgR1ZhbHVlICAgICAgICAqIGlucHV0X2Zvcm1hdHM7ICAgICAgICAgICAgICAgICAgLyogT0JKRUNUIExPQ0sgKi8KKworICBHc3RWaWRlb0NvZGVjU3RhdGUgKmlucHV0X3N0YXRlOworICBnYm9vbGVhbiAgICAgICAgICAgIGdsX2lucHV0OworCisgIC8qIGFsbG9jYXRlZCBidWZmZXJzICovCisgIGdwb2ludGVyICAgICAgICAgICppbnB1dF9idWZzOyAgIC8qIGFycmF5IG9mIG5fYWxsb2NzIGlucHV0IGJ1ZmZlcnMgICovCisgIE5WX0VOQ19PVVRQVVRfUFRSICpvdXRwdXRfYnVmczsgIC8qIGFycmF5IG9mIG5fYWxsb2NzIG91dHB1dCBidWZmZXJzICovCisgIGd1aW50ICAgICAgICAgICAgICBuX2J1ZnM7CisKKyAgLyogaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzIGN1cnJlbnRseSBhdmFpbGFibGUgKi8KKyAgR0FzeW5jUXVldWUgICAgKmluX2J1ZnNfcG9vbDsKKyAgR0FzeW5jUXVldWUgICAgKmJpdHN0cmVhbV9wb29sOworCisgIC8qIG91dHB1dCBidWZzIGluIHVzZSAoaW5wdXQgYnVmcyBpbiB1c2UgYXJlIHRyYWNrZWQgdmlhIHRoZSBjb2RlYyBmcmFtZXMpICovCisgIEdBc3luY1F1ZXVlICAgICpiaXRzdHJlYW1fcXVldWU7CisKKyAgLyogd2Ugc3Bhd24gYSB0aHJlYWQgdGhhdCBkb2VzIHRoZSAoYmxvY2tpbmcpIHdhaXRzIGZvciBvdXRwdXQgYnVmZmVycworICAgKiB0byBiZWNvbWUgYXZhaWxhYmxlLCBzbyB3ZSBjYW4gY29udGludWUgdG8gZmVlZCBkYXRhIHRvIHRoZSBlbmNvZGVyCisgICAqIHdoaWxlIHdlIHdhaXQgKi8KKyAgR1RocmVhZCAgICAgICAgKmJpdHN0cmVhbV90aHJlYWQ7CisKKyAgLyogc3VwcG9ydGVkIGludGVybGFjaW5nIGlucHV0IG1vZGVzLgorICAgKiAwID0gbm9uZSwgMSA9IGZpZWxkcywgMiA9IGludGVybGVhdmVkICovCisgIGdpbnQgICAgICAgICAgICBpbnRlcmxhY2VfbW9kZXM7CisKKyAgdm9pZCAgICAgICAgICAgKmRpc3BsYXk7ICAgICAgICAgICAgLyogR3N0R0xEaXNwbGF5ICovCisgIHZvaWQgICAgICAgICAgICpvdGhlcl9jb250ZXh0OyAgICAgIC8qIEdzdEdMQ29udGV4dCAqLworCisgIC8qIHRoZSBtYXhpbXVtIGJ1ZmZlciBzaXplIHRoZSBlbmNvZGVyIGlzIGNvbmZpZ3VyZWQgZm9yICovCisgIGd1aW50ICAgICAgICAgICAgICAgbWF4X2VuY29kZV93aWR0aDsKKyAgZ3VpbnQgICAgICAgICAgICAgICBtYXhfZW5jb2RlX2hlaWdodDsKKworICBHc3RWaWRlb0luZm8gICAgICAgIGlucHV0X2luZm87ICAgICAvKiBidWZmZXIgY29uZmlndXJhdGlvbiBmb3IgYnVmZmVycyBzZW50IHRvIE5WRU5DICovCisKKyAgR3N0Rmxvd1JldHVybiAgIGxhc3RfZmxvdzsgICAgICAgICAgLyogQVRPTUlDICovCit9IEdzdE52QmFzZUVuYzsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBHc3RWaWRlb0VuY29kZXJDbGFzcyB2aWRlb19lbmNvZGVyX2NsYXNzOworCisgIEdVSUQgY29kZWNfaWQ7CisKKyAgZ2Jvb2xlYW4gKCppbml0aWFsaXplX2VuY29kZXIpIChHc3ROdkJhc2VFbmMgKiBudmVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0NvZGVjU3RhdGUgKiBvbGRfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9Db2RlY1N0YXRlICogc3RhdGUpOworICBnYm9vbGVhbiAoKnNldF9zcmNfY2FwcykgICAgICAgKEdzdE52QmFzZUVuYyAqIG52ZW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqIHN0YXRlKTsKKyAgZ2Jvb2xlYW4gKCpzZXRfcGljX3BhcmFtcykgICAgIChHc3ROdkJhc2VFbmMgKiBudmVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0NvZGVjRnJhbWUgKiBmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVl9FTkNfUElDX1BBUkFNUyAqIHBpY19wYXJhbXMpOworfSBHc3ROdkJhc2VFbmNDbGFzczsKKworR19HTlVDX0lOVEVSTkFMCitHVHlwZSBnc3RfbnZfYmFzZV9lbmNfZ2V0X3R5cGUgKHZvaWQpOworCisKK3ZvaWQgZ3N0X252X2Jhc2VfZW5jX2dldF9tYXhfZW5jb2RlX3NpemUgICAgICAoR3N0TnZCYXNlRW5jICogbnZlbmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICogbWF4X3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAqIG1heF9oZWlnaHQpOwordm9pZCBnc3RfbnZfYmFzZV9lbmNfc2V0X21heF9lbmNvZGVfc2l6ZSAgICAgIChHc3ROdkJhc2VFbmMgKiBudmVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgbWF4X3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBtYXhfaGVpZ2h0KTsKKworI2VuZGlmIC8qIF9fR1NUX05WX0JBU0VfRU5DX0hfSU5DTFVERURfXyAqLwpkaWZmIC0tZ2l0IGEvc3lzL252ZW5jL2dzdG52ZW5jLmMgYi9zeXMvbnZlbmMvZ3N0bnZlbmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjBkNTY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzL252ZW5jL2dzdG52ZW5jLmMKQEAgLTAsMCArMSwzMjggQEAKKy8qIEdTdHJlYW1lciBOVkVOQyBwbHVnaW4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDZW50cmljdWxhciBMdGQKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3RudmVuYy5oIgorI2luY2x1ZGUgImdzdG52aDI2NGVuYy5oIgorCitHU1RfREVCVUdfQ0FURUdPUlkgKGdzdF9udmVuY19kZWJ1Zyk7CisKK3N0YXRpYyBOVl9FTkNPREVfQVBJX0ZVTkNUSU9OX0xJU1QgbnZlbmNfYXBpOworCitOVkVOQ1NUQVRVUworTnZFbmNPcGVuRW5jb2RlU2Vzc2lvbkV4IChOVl9FTkNfT1BFTl9FTkNPREVfU0VTU0lPTl9FWF9QQVJBTVMgKiBwYXJhbXMsCisgICAgdm9pZCAqKmVuY29kZXIpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNPcGVuRW5jb2RlU2Vzc2lvbkV4ICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jT3BlbkVuY29kZVNlc3Npb25FeCAocGFyYW1zLCBlbmNvZGVyKTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jRGVzdHJveUVuY29kZXIgKHZvaWQgKmVuY29kZXIpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNEZXN0cm95RW5jb2RlciAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY0Rlc3Ryb3lFbmNvZGVyIChlbmNvZGVyKTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jR2V0RW5jb2RlR1VJRHMgKHZvaWQgKmVuY29kZXIsIEdVSUQgKiBhcnJheSwgdWludDMyX3QgYXJyYXlfc2l6ZSwKKyAgICB1aW50MzJfdCAqIGNvdW50KQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jR2V0RW5jb2RlR1VJRHMgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNHZXRFbmNvZGVHVUlEcyAoZW5jb2RlciwgYXJyYXksIGFycmF5X3NpemUsIGNvdW50KTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jR2V0RW5jb2RlUHJvZmlsZUdVSURDb3VudCAodm9pZCAqZW5jb2RlciwgR1VJRCBlbmNvZGVHVUlELAorICAgIHVpbnQzMl90ICogZW5jb2RlUHJvZmlsZUdVSURDb3VudCkKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY0dldEVuY29kZVByb2ZpbGVHVUlEQ291bnQgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNHZXRFbmNvZGVQcm9maWxlR1VJRENvdW50IChlbmNvZGVyLCBlbmNvZGVHVUlELAorICAgICAgZW5jb2RlUHJvZmlsZUdVSURDb3VudCk7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0dldEVuY29kZVByb2ZpbGVHVUlEcyAodm9pZCAqZW5jb2RlciwgR1VJRCBlbmNvZGVHVUlELAorICAgIEdVSUQgKiBwcm9maWxlR1VJRHMsIHVpbnQzMl90IGd1aWRBcnJheVNpemUsIHVpbnQzMl90ICogR1VJRENvdW50KQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jR2V0RW5jb2RlUHJvZmlsZUdVSURzICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jR2V0RW5jb2RlUHJvZmlsZUdVSURzIChlbmNvZGVyLCBlbmNvZGVHVUlELAorICAgICAgcHJvZmlsZUdVSURzLCBndWlkQXJyYXlTaXplLCBHVUlEQ291bnQpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNHZXRJbnB1dEZvcm1hdHMgKHZvaWQgKmVuY29kZXIsIEdVSUQgZW5jX2d1aWQsCisgICAgTlZfRU5DX0JVRkZFUl9GT1JNQVQgKiBhcnJheSwgdWludDMyX3Qgc2l6ZSwgdWludDMyX3QgKiBudW0pCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNHZXRJbnB1dEZvcm1hdHMgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNHZXRJbnB1dEZvcm1hdHMgKGVuY29kZXIsIGVuY19ndWlkLCBhcnJheSwgc2l6ZSwgbnVtKTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jR2V0RW5jb2RlUHJlc2V0Q29uZmlnICh2b2lkICplbmNvZGVyLCBHVUlEIGVuY29kZUdVSUQsCisgICAgR1VJRCBwcmVzZXRHVUlELCBOVl9FTkNfUFJFU0VUX0NPTkZJRyAqIHByZXNldENvbmZpZykKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY0dldEVuY29kZVByZXNldENvbmZpZyAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY0dldEVuY29kZVByZXNldENvbmZpZyAoZW5jb2RlciwgZW5jb2RlR1VJRCwgcHJlc2V0R1VJRCwKKyAgICAgIHByZXNldENvbmZpZyk7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0dldEVuY29kZUNhcHMgKHZvaWQgKmVuY29kZXIsIEdVSUQgZW5jb2RlR1VJRCwKKyAgICBOVl9FTkNfQ0FQU19QQVJBTSAqIGNhcHNQYXJhbSwgaW50ICpjYXBzVmFsKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jR2V0RW5jb2RlQ2FwcyAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY0dldEVuY29kZUNhcHMgKGVuY29kZXIsIGVuY29kZUdVSUQsIGNhcHNQYXJhbSwgY2Fwc1ZhbCk7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0dldFNlcXVlbmNlUGFyYW1zICh2b2lkICplbmNvZGVyLAorICAgIE5WX0VOQ19TRVFVRU5DRV9QQVJBTV9QQVlMT0FEICogc2VxdWVuY2VQYXJhbVBheWxvYWQpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNHZXRTZXF1ZW5jZVBhcmFtcyAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY0dldFNlcXVlbmNlUGFyYW1zIChlbmNvZGVyLCBzZXF1ZW5jZVBhcmFtUGF5bG9hZCk7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0luaXRpYWxpemVFbmNvZGVyICh2b2lkICplbmNvZGVyLCBOVl9FTkNfSU5JVElBTElaRV9QQVJBTVMgKiBwYXJhbXMpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNJbml0aWFsaXplRW5jb2RlciAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY0luaXRpYWxpemVFbmNvZGVyIChlbmNvZGVyLCBwYXJhbXMpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNSZWNvbmZpZ3VyZUVuY29kZXIgKHZvaWQgKmVuY29kZXIsIE5WX0VOQ19SRUNPTkZJR1VSRV9QQVJBTVMgKiBwYXJhbXMpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNSZWNvbmZpZ3VyZUVuY29kZXIgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNSZWNvbmZpZ3VyZUVuY29kZXIgKGVuY29kZXIsIHBhcmFtcyk7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY1JlZ2lzdGVyUmVzb3VyY2UgKHZvaWQgKmVuY29kZXIsIE5WX0VOQ19SRUdJU1RFUl9SRVNPVVJDRSAqIHBhcmFtcykKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY1JlZ2lzdGVyUmVzb3VyY2UgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNSZWdpc3RlclJlc291cmNlIChlbmNvZGVyLCBwYXJhbXMpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNVbnJlZ2lzdGVyUmVzb3VyY2UgKHZvaWQgKmVuY29kZXIsIE5WX0VOQ19SRUdJU1RFUkVEX1BUUiByZXNvdXJjZSkKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY1VucmVnaXN0ZXJSZXNvdXJjZSAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY1VucmVnaXN0ZXJSZXNvdXJjZSAoZW5jb2RlciwgcmVzb3VyY2UpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNNYXBJbnB1dFJlc291cmNlICh2b2lkICplbmNvZGVyLCBOVl9FTkNfTUFQX0lOUFVUX1JFU09VUkNFICogcGFyYW1zKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jTWFwSW5wdXRSZXNvdXJjZSAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY01hcElucHV0UmVzb3VyY2UgKGVuY29kZXIsIHBhcmFtcyk7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY1VubWFwSW5wdXRSZXNvdXJjZSAodm9pZCAqZW5jb2RlciwgTlZfRU5DX0lOUFVUX1BUUiBpbnB1dF9idWZmZXIpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNVbm1hcElucHV0UmVzb3VyY2UgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNVbm1hcElucHV0UmVzb3VyY2UgKGVuY29kZXIsIGlucHV0X2J1ZmZlcik7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0NyZWF0ZUlucHV0QnVmZmVyICh2b2lkICplbmNvZGVyLCBOVl9FTkNfQ1JFQVRFX0lOUFVUX0JVRkZFUiAqIGlucHV0X2J1ZikKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY0NyZWF0ZUlucHV0QnVmZmVyICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jQ3JlYXRlSW5wdXRCdWZmZXIgKGVuY29kZXIsIGlucHV0X2J1Zik7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0xvY2tJbnB1dEJ1ZmZlciAodm9pZCAqZW5jb2RlciwgTlZfRU5DX0xPQ0tfSU5QVVRfQlVGRkVSICogaW5wdXRfYnVmKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jTG9ja0lucHV0QnVmZmVyICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jTG9ja0lucHV0QnVmZmVyIChlbmNvZGVyLCBpbnB1dF9idWYpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNVbmxvY2tJbnB1dEJ1ZmZlciAodm9pZCAqZW5jb2RlciwgTlZfRU5DX0lOUFVUX1BUUiBpbnB1dF9idWYpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNVbmxvY2tJbnB1dEJ1ZmZlciAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY1VubG9ja0lucHV0QnVmZmVyIChlbmNvZGVyLCBpbnB1dF9idWYpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNEZXN0cm95SW5wdXRCdWZmZXIgKHZvaWQgKmVuY29kZXIsIE5WX0VOQ19JTlBVVF9QVFIgaW5wdXRfYnVmKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jRGVzdHJveUlucHV0QnVmZmVyICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jRGVzdHJveUlucHV0QnVmZmVyIChlbmNvZGVyLCBpbnB1dF9idWYpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNDcmVhdGVCaXRzdHJlYW1CdWZmZXIgKHZvaWQgKmVuY29kZXIsIE5WX0VOQ19DUkVBVEVfQklUU1RSRUFNX0JVRkZFUiAqIGJiKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jQ3JlYXRlQml0c3RyZWFtQnVmZmVyICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jQ3JlYXRlQml0c3RyZWFtQnVmZmVyIChlbmNvZGVyLCBiYik7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0xvY2tCaXRzdHJlYW0gKHZvaWQgKmVuY29kZXIsIE5WX0VOQ19MT0NLX0JJVFNUUkVBTSAqIGxvY2tfYnMpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNMb2NrQml0c3RyZWFtICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jTG9ja0JpdHN0cmVhbSAoZW5jb2RlciwgbG9ja19icyk7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY1VubG9ja0JpdHN0cmVhbSAodm9pZCAqZW5jb2RlciwgTlZfRU5DX09VVFBVVF9QVFIgYmIpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNVbmxvY2tCaXRzdHJlYW0gIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNVbmxvY2tCaXRzdHJlYW0gKGVuY29kZXIsIGJiKTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jRGVzdHJveUJpdHN0cmVhbUJ1ZmZlciAodm9pZCAqZW5jb2RlciwgTlZfRU5DX09VVFBVVF9QVFIgYml0X2J1ZikKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY0Rlc3Ryb3lCaXRzdHJlYW1CdWZmZXIgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNEZXN0cm95Qml0c3RyZWFtQnVmZmVyIChlbmNvZGVyLCBiaXRfYnVmKTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jRW5jb2RlUGljdHVyZSAodm9pZCAqZW5jb2RlciwgTlZfRU5DX1BJQ19QQVJBTVMgKiBwaWNfcGFyYW1zKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jRW5jb2RlUGljdHVyZSAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY0VuY29kZVBpY3R1cmUgKGVuY29kZXIsIHBpY19wYXJhbXMpOworfQorCitnYm9vbGVhbgorZ3N0X252ZW5jX2NtcF9ndWlkIChHVUlEIGcxLCBHVUlEIGcyKQoreworICByZXR1cm4gKGcxLkRhdGExID09IGcyLkRhdGExICYmIGcxLkRhdGEyID09IGcyLkRhdGEyICYmIGcxLkRhdGEzID09IGcyLkRhdGEzCisgICAgICAmJiBnMS5EYXRhNFswXSA9PSBnMi5EYXRhNFswXSAmJiBnMS5EYXRhNFsxXSA9PSBnMi5EYXRhNFsxXQorICAgICAgJiYgZzEuRGF0YTRbMl0gPT0gZzIuRGF0YTRbMl0gJiYgZzEuRGF0YTRbM10gPT0gZzIuRGF0YTRbM10KKyAgICAgICYmIGcxLkRhdGE0WzRdID09IGcyLkRhdGE0WzRdICYmIGcxLkRhdGE0WzVdID09IGcyLkRhdGE0WzVdCisgICAgICAmJiBnMS5EYXRhNFs2XSA9PSBnMi5EYXRhNFs2XSAmJiBnMS5EYXRhNFs3XSA9PSBnMi5EYXRhNFs3XSk7Cit9CisKK05WX0VOQ19CVUZGRVJfRk9STUFUCitnc3RfbnZlbmNfZ2V0X252X2J1ZmZlcl9mb3JtYXQgKEdzdFZpZGVvRm9ybWF0IGZtdCkKK3sKKyAgc3dpdGNoIChmbXQpIHsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYxMjoKKyAgICAgIHJldHVybiBOVl9FTkNfQlVGRkVSX0ZPUk1BVF9OVjEyX1BMOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVjEyOgorICAgICAgcmV0dXJuIE5WX0VOQ19CVUZGRVJfRk9STUFUX1lWMTJfUEw7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0k0MjA6CisgICAgICByZXR1cm4gTlZfRU5DX0JVRkZFUl9GT1JNQVRfSVlVVl9QTDsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQ0NDoKKyAgICAgIHJldHVybiBOVl9FTkNfQlVGRkVSX0ZPUk1BVF9ZVVY0NDRfUEw7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisgIHJldHVybiBOVl9FTkNfQlVGRkVSX0ZPUk1BVF9VTkRFRklORUQ7Cit9CisKK0NVY29udGV4dAorZ3N0X252ZW5jX2NyZWF0ZV9jdWRhX2NvbnRleHQgKGd1aW50IGRldmljZV9pZCkKK3sKKyAgQ1Vjb250ZXh0IGN1ZGFfY3R4LCBvbGRfY3R4OworICBDVXJlc3VsdCBjcmVzID0gQ1VEQV9TVUNDRVNTOworICBDVWRldmljZSBjZGV2ID0gMCwgY3VkYV9kZXYgPSAtMTsKKyAgaW50IGRldl9jb3VudCA9IDA7CisgIGNoYXIgbmFtZVsyNTZdOworICBpbnQgbWluID0gMCwgbWFqID0gMDsKKyAgaW50IGk7CisKKyAgR1NUX0lORk8gKCJJbml0aWFsaXNpbmcgQ1VEQS4uIik7CisKKyAgY3JlcyA9IGN1SW5pdCAoMCk7CisKKyAgaWYgKGNyZXMgIT0gQ1VEQV9TVUNDRVNTKSB7CisgICAgR1NUX1dBUk5JTkcgKCJGYWlsZWQgdG8gaW5pdGlhbGlzZSBDVURBLCBlcnJvciBjb2RlOiAweCUwOHgiLCBjcmVzKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIEdTVF9JTkZPICgiSW5pdGlhbGlzZWQgQ1VEQSIpOworCisgIGNyZXMgPSBjdURldmljZUdldENvdW50ICgmZGV2X2NvdW50KTsKKyAgaWYgKGNyZXMgIT0gQ1VEQV9TVUNDRVNTIHx8IGRldl9jb3VudCA9PSAwKSB7CisgICAgR1NUX1dBUk5JTkcgKCJObyBDVURBIGRldmljZXMgZGV0ZWN0ZWQiKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIEdTVF9JTkZPICgiJWQgQ1VEQSBkZXZpY2UocykgZGV0ZWN0ZWQiLCBkZXZfY291bnQpOworICBmb3IgKGkgPSAwOyBpIDwgZGV2X2NvdW50OyArK2kpIHsKKyAgICBpZiAoY3VEZXZpY2VHZXQgKCZjZGV2LCBpKSA9PSBDVURBX1NVQ0NFU1MKKyAgICAgICAgJiYgY3VEZXZpY2VHZXROYW1lIChuYW1lLCBzaXplb2YgKG5hbWUpLCBjZGV2KSA9PSBDVURBX1NVQ0NFU1MKKyAgICAgICAgJiYgY3VEZXZpY2VDb21wdXRlQ2FwYWJpbGl0eSAoJm1haiwgJm1pbiwgY2RldikgPT0gQ1VEQV9TVUNDRVNTKSB7CisgICAgICBHU1RfSU5GTyAoIkdQVSAjJWQgc3VwcG9ydHMgTlZFTkM6ICVzICglcykgKENvbXB1dGUgU00gJWQuJWQpIiwKKyAgICAgICAgICBpLCAoKChtYWogPDwgNCkgKyBtaW4pID49IDB4MzApID8gInllcyIgOiAibm8iLCBuYW1lLCBtYWosIG1pbik7CisgICAgICBpZiAoaSA9PSBkZXZpY2VfaWQpIHsKKyAgICAgICAgY3VkYV9kZXYgPSBjZGV2OworICAgICAgfQorICAgIH0KKyAgfQorCisgIGlmIChjdWRhX2RldiA9PSAtMSkgeworICAgIEdTVF9XQVJOSU5HICgiRGV2aWNlIHdpdGggaWQgJWQgZG9lcyBub3QgZXhpc3Qgb3IgZG9lcyBub3Qgc3VwcG9ydCBOVkVOQyIsCisgICAgICAgIGRldmljZV9pZCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICBpZiAoY3VDdHhDcmVhdGUgKCZjdWRhX2N0eCwgMCwgY3VkYV9kZXYpICE9IENVREFfU1VDQ0VTUykgeworICAgIEdTVF9XQVJOSU5HICgiRmFpbGVkIHRvIGNyZWF0ZSBDVURBIGNvbnRleHQgZm9yIGN1ZGEgZGV2aWNlICVkIiwgY3VkYV9kZXYpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgaWYgKGN1Q3R4UG9wQ3VycmVudCAoJm9sZF9jdHgpICE9IENVREFfU1VDQ0VTUykgeworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgR1NUX0lORk8gKCJDcmVhdGVkIENVREEgY29udGV4dCAlcCIsIGN1ZGFfY3R4KTsKKworICByZXR1cm4gY3VkYV9jdHg7Cit9CisKK2dib29sZWFuCitnc3RfbnZlbmNfZGVzdHJveV9jdWRhX2NvbnRleHQgKENVY29udGV4dCBjdHgpCit7CisgIEdTVF9JTkZPICgiRGVzdHJveWluZyBDVURBIGNvbnRleHQgJXAiLCBjdHgpOworICByZXR1cm4gKGN1Q3R4RGVzdHJveSAoY3R4KSA9PSBDVURBX1NVQ0NFU1MpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK3BsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCit7CisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfbnZlbmNfZGVidWcsICJudmVuYyIsIDAsICJOdmlkaWEgTlZFTkMgZW5jb2RlciIpOworCisgIG52ZW5jX2FwaS52ZXJzaW9uID0gTlZfRU5DT0RFX0FQSV9GVU5DVElPTl9MSVNUX1ZFUjsKKyAgaWYgKE52RW5jb2RlQVBJQ3JlYXRlSW5zdGFuY2UgKCZudmVuY19hcGkpICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGdldCBOVkVuY29kZUFQSSBmdW5jdGlvbiB0YWJsZSEiKTsKKyAgfSBlbHNlIHsKKyAgICBHU1RfSU5GTyAoIkNyZWF0ZWQgTlZFbmNvZGVBUEkgaW5zdGFuY2UsIGdvdCBmdW5jdGlvbiB0YWJsZSIpOworCisgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgIm52aDI2NGVuYyIsIEdTVF9SQU5LX1BSSU1BUlkgKiAyLAorICAgICAgICBnc3RfbnZfaDI2NF9lbmNfZ2V0X3R5cGUgKCkpOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK0dTVF9QTFVHSU5fREVGSU5FIChHU1RfVkVSU0lPTl9NQUpPUiwKKyAgICBHU1RfVkVSU0lPTl9NSU5PUiwKKyAgICBudmVuYywKKyAgICAiR1N0cmVhbWVyIE5WRU5DIHBsdWdpbiIsCisgICAgcGx1Z2luX2luaXQsIFZFUlNJT04sICJMR1BMIiwgR1NUX1BBQ0tBR0VfTkFNRSwgR1NUX1BBQ0tBR0VfT1JJR0lOKQpkaWZmIC0tZ2l0IGEvc3lzL252ZW5jL2dzdG52ZW5jLmggYi9zeXMvbnZlbmMvZ3N0bnZlbmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGViMzRiCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL252ZW5jL2dzdG52ZW5jLmgKQEAgLTAsMCArMSw0MCBAQAorLyogR1N0cmVhbWVyIE5WRU5DIHBsdWdpbgorICogQ29weXJpZ2h0IChDKSAyMDE1IENlbnRyaWN1bGFyIEx0ZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfTlZFTkNfSF9JTkNMVURFRF9fCisjZGVmaW5lIF9fR1NUX05WRU5DX0hfSU5DTFVERURfXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgorCisjaW5jbHVkZSA8bnZFbmNvZGVBUEkuaD4KKyNpbmNsdWRlIDxjdWRhLmg+CisKK0dTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4gKGdzdF9udmVuY19kZWJ1Zyk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfbnZlbmNfZGVidWcKKworQ1Vjb250ZXh0ICAgICAgICAgICAgICAgZ3N0X252ZW5jX2NyZWF0ZV9jdWRhX2NvbnRleHQgKGd1aW50IGRldmljZV9pZCk7CisKK2dib29sZWFuICAgICAgICAgICAgICAgIGdzdF9udmVuY19kZXN0cm95X2N1ZGFfY29udGV4dCAoQ1Vjb250ZXh0IGN0eCk7CisKK2dib29sZWFuICAgICAgICAgICAgICAgIGdzdF9udmVuY19jbXBfZ3VpZCAoR1VJRCBnMSwgR1VJRCBnMik7CisKK05WX0VOQ19CVUZGRVJfRk9STUFUICAgIGdzdF9udmVuY19nZXRfbnZfYnVmZmVyX2Zvcm1hdCAoR3N0VmlkZW9Gb3JtYXQgZm10KTsKKworI2VuZGlmIC8qIF9fR1NUX05WRU5DX0hfSU5DTFVERURfXyAqLwpkaWZmIC0tZ2l0IGEvc3lzL252ZW5jL2dzdG52aDI2NGVuYy5jIGIvc3lzL252ZW5jL2dzdG52aDI2NGVuYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MGUzZjcKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvbnZlbmMvZ3N0bnZoMjY0ZW5jLmMKQEAgLTAsMCArMSw2MTAgQEAKKy8qIEdTdHJlYW1lciBOVkVOQyBwbHVnaW4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDZW50cmljdWxhciBMdGQKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3RudmgyNjRlbmMuaCIKKworI2luY2x1ZGUgPGdzdC9wYnV0aWxzL2NvZGVjLXV0aWxzLmg+CisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2lmIEhBVkVfR1NUX0dMCisjaW5jbHVkZSA8Y3VkYS5oPgorI2luY2x1ZGUgPGN1ZGFfcnVudGltZV9hcGkuaD4KKyNpbmNsdWRlIDxjdWRhX2dsX2ludGVyb3AuaD4KKyNkZWZpbmUgR1NUX1VTRV9VTlNUQUJMRV9BUEkKKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKyNlbmRpZgorCisjZGVmaW5lIHBhcmVudF9jbGFzcyBnc3RfbnZfaDI2NF9lbmNfcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFIChHc3ROdkgyNjRFbmMsIGdzdF9udl9oMjY0X2VuYywgR1NUX1RZUEVfTlZfQkFTRV9FTkMpOworCisvKiAqSU5ERU5ULU9GRiogKi8KK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNfZmFjdG9yeSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKKyAgICBHU1RfUEFEX1NSQywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LWgyNjQsICIKKyAgICAgICAgIndpZHRoID0gKGludCkgWyAxLCA0MDk2IF0sIGhlaWdodCA9IChpbnQpIFsgMSwgMjE2MCBdLCAiCisgICAgICAgICJmcmFtZXJhdGUgPSAoZnJhY3Rpb24pIFswLzEsIE1BWF0sICIKKyAgICAgICAgInN0cmVhbS1mb3JtYXQgPSAoc3RyaW5nKSBieXRlLXN0cmVhbSwgIiAvLyBUT0RPOiBhdmMgc3VwcG9ydAorICAgICAgICAiYWxpZ25tZW50ID0gKHN0cmluZykgYXUsICIKKyAgICAgICAgInByb2ZpbGUgPSAoc3RyaW5nKSB7IGhpZ2gsIG1haW4sIGJhc2VsaW5lIH0iKSAvLyBUT0RPOiBhIGNvdXBsZSBvZiBvdGhlcnMKKyAgICApOworLyogKklOREVOVC1PTiogKi8KKworc3RhdGljIGdib29sZWFuIGdzdF9udl9oMjY0X2VuY19vcGVuIChHc3RWaWRlb0VuY29kZXIgKiBlbmMpOworc3RhdGljIGdib29sZWFuIGdzdF9udl9oMjY0X2VuY19jbG9zZSAoR3N0VmlkZW9FbmNvZGVyICogZW5jKTsKK3N0YXRpYyBHc3RDYXBzICpnc3RfbnZfaDI2NF9lbmNfZ2V0Y2FwcyAoR3N0VmlkZW9FbmNvZGVyICogZW5jLAorICAgIEdzdENhcHMgKiBmaWx0ZXIpOworc3RhdGljIGdib29sZWFuIGdzdF9udl9oMjY0X2VuY19zZXRfc3JjX2NhcHMgKEdzdE52QmFzZUVuYyAqIG52ZW5jLAorICAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqIHN0YXRlKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbnZfaDI2NF9lbmNfaW5pdGlhbGl6ZV9lbmNvZGVyIChHc3ROdkJhc2VFbmMgKiBudmVuYywKKyAgICBHc3RWaWRlb0NvZGVjU3RhdGUgKiBvbGRfc3RhdGUsIEdzdFZpZGVvQ29kZWNTdGF0ZSAqIHN0YXRlKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbnZfaDI2NF9lbmNfc2V0X3BpY19wYXJhbXMgKEdzdE52QmFzZUVuYyAqIG52ZW5jLAorICAgIEdzdFZpZGVvQ29kZWNGcmFtZSAqIGZyYW1lLCBOVl9FTkNfUElDX1BBUkFNUyAqIHBpY19wYXJhbXMpOworc3RhdGljIHZvaWQgZ3N0X252X2gyNjRfZW5jX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKK3N0YXRpYyB2b2lkIGdzdF9udl9oMjY0X2VuY19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CitzdGF0aWMgdm9pZCBnc3RfbnZfaDI2NF9lbmNfZmluYWxpemUgKEdPYmplY3QgKiBvYmopOworCitzdGF0aWMgdm9pZAorZ3N0X252X2gyNjRfZW5jX2NsYXNzX2luaXQgKEdzdE52SDI2NEVuY0NsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7CisgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CisgIEdzdFZpZGVvRW5jb2RlckNsYXNzICp2aWRlb2VuY19jbGFzcyA9IEdTVF9WSURFT19FTkNPREVSX0NMQVNTIChrbGFzcyk7CisgIEdzdE52QmFzZUVuY0NsYXNzICpudmVuY19jbGFzcyA9IEdTVF9OVl9CQVNFX0VOQ19DTEFTUyAoa2xhc3MpOworCisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9udl9oMjY0X2VuY19zZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9udl9oMjY0X2VuY19nZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X252X2gyNjRfZW5jX2ZpbmFsaXplOworCisgIHZpZGVvZW5jX2NsYXNzLT5vcGVuID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9udl9oMjY0X2VuY19vcGVuKTsKKyAgdmlkZW9lbmNfY2xhc3MtPmNsb3NlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9udl9oMjY0X2VuY19jbG9zZSk7CisKKyAgdmlkZW9lbmNfY2xhc3MtPmdldGNhcHMgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X252X2gyNjRfZW5jX2dldGNhcHMpOworCisgIG52ZW5jX2NsYXNzLT5jb2RlY19pZCA9IE5WX0VOQ19DT0RFQ19IMjY0X0dVSUQ7CisgIG52ZW5jX2NsYXNzLT5pbml0aWFsaXplX2VuY29kZXIgPSBnc3RfbnZfaDI2NF9lbmNfaW5pdGlhbGl6ZV9lbmNvZGVyOworICBudmVuY19jbGFzcy0+c2V0X3NyY19jYXBzID0gZ3N0X252X2gyNjRfZW5jX3NldF9zcmNfY2FwczsKKyAgbnZlbmNfY2xhc3MtPnNldF9waWNfcGFyYW1zID0gZ3N0X252X2gyNjRfZW5jX3NldF9waWNfcGFyYW1zOworCisgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCisgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzcmNfZmFjdG9yeSkpOworCisgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCisgICAgICAiTlZFTkMgSC4yNjQgVmlkZW8gRW5jb2RlciIsCisgICAgICAiQ29kZWMvRW5jb2Rlci9WaWRlbyIsCisgICAgICAiRW5jb2RlIEguMjY0IHZpZGVvIHN0cmVhbXMgdXNpbmcgTlZJRElBJ3MgaGFyZHdhcmUtYWNjZWxlcmF0ZWQgTlZFTkMgZW5jb2RlciBBUEkiLAorICAgICAgIlRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+XG4iCisgICAgICAiTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPiIpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X252X2gyNjRfZW5jX2luaXQgKEdzdE52SDI2NEVuYyAqIG52ZW5jKQoreworfQorCitzdGF0aWMgdm9pZAorZ3N0X252X2gyNjRfZW5jX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqKQoreworICBHX09CSkVDVF9DTEFTUyAoZ3N0X252X2gyNjRfZW5jX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmopOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19nZXRfc3VwcG9ydGVkX3Byb2ZpbGVzIChHc3ROdkgyNjRFbmMgKiBudmVuYykKK3sKKyAgTlZFTkNTVEFUVVMgbnZfcmV0OworICBHVUlEIHByb2ZpbGVfZ3VpZHNbNjRdOworICBHVmFsdWUgbGlzdCA9IEdfVkFMVUVfSU5JVDsKKyAgR1ZhbHVlIHZhbCA9IEdfVkFMVUVfSU5JVDsKKyAgZ3VpbnQgaSwgbiwgbl9wcm9maWxlczsKKworICBudl9yZXQgPQorICAgICAgTnZFbmNHZXRFbmNvZGVQcm9maWxlR1VJRENvdW50IChHU1RfTlZfQkFTRV9FTkMgKG52ZW5jKS0+ZW5jb2RlciwKKyAgICAgIE5WX0VOQ19DT0RFQ19IMjY0X0dVSUQsICZuKTsKKyAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgbnZfcmV0ID0KKyAgICAgIE52RW5jR2V0RW5jb2RlUHJvZmlsZUdVSURzIChHU1RfTlZfQkFTRV9FTkMgKG52ZW5jKS0+ZW5jb2RlciwKKyAgICAgIE5WX0VOQ19DT0RFQ19IMjY0X0dVSUQsIHByb2ZpbGVfZ3VpZHMsIEdfTl9FTEVNRU5UUyAocHJvZmlsZV9ndWlkcyksICZuKTsKKyAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgbl9wcm9maWxlcyA9IDA7CisgIGdfdmFsdWVfaW5pdCAoJmxpc3QsIEdTVF9UWVBFX0xJU1QpOworICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgZ192YWx1ZV9pbml0ICgmdmFsLCBHX1RZUEVfU1RSSU5HKTsKKworICAgIGlmIChnc3RfbnZlbmNfY21wX2d1aWQgKHByb2ZpbGVfZ3VpZHNbaV0sCisgICAgICAgICAgICBOVl9FTkNfSDI2NF9QUk9GSUxFX0JBU0VMSU5FX0dVSUQpKSB7CisgICAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmdmFsLCAiYmFzZWxpbmUiKTsKKyAgICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmxpc3QsICZ2YWwpOworICAgICAgbl9wcm9maWxlcysrOworICAgIH0gZWxzZSBpZiAoZ3N0X252ZW5jX2NtcF9ndWlkIChwcm9maWxlX2d1aWRzW2ldLAorICAgICAgICAgICAgTlZfRU5DX0gyNjRfUFJPRklMRV9NQUlOX0dVSUQpKSB7CisgICAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmdmFsLCAibWFpbiIpOworICAgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJnZhbCk7CisgICAgICBuX3Byb2ZpbGVzKys7CisgICAgfSBlbHNlIGlmIChnc3RfbnZlbmNfY21wX2d1aWQgKHByb2ZpbGVfZ3VpZHNbaV0sCisgICAgICAgICAgICBOVl9FTkNfSDI2NF9QUk9GSUxFX0hJR0hfR1VJRCkpIHsKKyAgICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKCZ2YWwsICJoaWdoIik7CisgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZsaXN0LCAmdmFsKTsKKyAgICAgIG5fcHJvZmlsZXMrKzsKKyAgICB9CisgICAgLyogVE9ETzogbWFwIEhJR0hfNDQ0LCBTVEVSRU8sIENPTlNUUkFJTkVEX0hJR0gsIFNWQ19URU1QT1JBTF9TQ0FMQUJJTElUWSAqLworCisgICAgZ192YWx1ZV91bnNldCAoJnZhbCk7CisgIH0KKworICBpZiAobl9wcm9maWxlcyA9PSAwKQorICAgIHJldHVybiBGQUxTRTsKKworICBHU1RfT0JKRUNUX0xPQ0sgKG52ZW5jKTsKKyAgZ19mcmVlIChudmVuYy0+c3VwcG9ydGVkX3Byb2ZpbGVzKTsKKyAgbnZlbmMtPnN1cHBvcnRlZF9wcm9maWxlcyA9IGdfbWVtZHVwICgmbGlzdCwgc2l6ZW9mIChHVmFsdWUpKTsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKG52ZW5jKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbnZfaDI2NF9lbmNfb3BlbiAoR3N0VmlkZW9FbmNvZGVyICogZW5jKQoreworICBHc3ROdkgyNjRFbmMgKm52ZW5jID0gR1NUX05WX0gyNjRfRU5DIChlbmMpOworCisgIGlmICghR1NUX1ZJREVPX0VOQ09ERVJfQ0xBU1MgKGdzdF9udl9oMjY0X2VuY19wYXJlbnRfY2xhc3MpLT5vcGVuIChlbmMpKQorICAgIHJldHVybiBGQUxTRTsKKworICAvKiBDaGVjayBpZiBILjI2NCBpcyBzdXBwb3J0ZWQgKi8KKyAgeworICAgIHVpbnQzMl90IGksIG51bSA9IDA7CisgICAgR1VJRCBndWlkc1sxNl07CisKKyAgICBOdkVuY0dldEVuY29kZUdVSURzIChHU1RfTlZfQkFTRV9FTkMgKG52ZW5jKS0+ZW5jb2RlciwgZ3VpZHMsCisgICAgICAgIEdfTl9FTEVNRU5UUyAoZ3VpZHMpLCAmbnVtKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBudW07ICsraSkgeworICAgICAgaWYgKGdzdF9udmVuY19jbXBfZ3VpZCAoZ3VpZHNbaV0sIE5WX0VOQ19DT0RFQ19IMjY0X0dVSUQpKQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgR1NUX0lORk9fT0JKRUNUIChlbmMsICJILjI2NCBlbmNvZGluZyAlc3N1cHBvcnRlZCIsIChpID09IG51bSkgPyAidW4iIDogIiIpOworICAgIGlmIChpID09IG51bSkgeworICAgICAgZ3N0X252X2gyNjRfZW5jX2Nsb3NlIChlbmMpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfQorCisgIC8qIHF1ZXJ5IHN1cHBvcnRlZCBpbnB1dCBmb3JtYXRzICovCisgIGlmICghX2dldF9zdXBwb3J0ZWRfcHJvZmlsZXMgKG52ZW5jKSkgeworICAgIEdTVF9XQVJOSU5HX09CSkVDVCAobnZlbmMsICJObyBzdXBwb3J0ZWQgZW5jb2RpbmcgcHJvZmlsZXMiKTsKKyAgICBnc3RfbnZfaDI2NF9lbmNfY2xvc2UgKGVuYyk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X252X2gyNjRfZW5jX2Nsb3NlIChHc3RWaWRlb0VuY29kZXIgKiBlbmMpCit7CisgIEdzdE52SDI2NEVuYyAqbnZlbmMgPSBHU1RfTlZfSDI2NF9FTkMgKGVuYyk7CisKKyAgR1NUX09CSkVDVF9MT0NLIChudmVuYyk7CisgIGdfZnJlZSAobnZlbmMtPnN1cHBvcnRlZF9wcm9maWxlcyk7CisgIG52ZW5jLT5zdXBwb3J0ZWRfcHJvZmlsZXMgPSBOVUxMOworICBHU1RfT0JKRUNUX1VOTE9DSyAobnZlbmMpOworCisgIHJldHVybiBHU1RfVklERU9fRU5DT0RFUl9DTEFTUyAoZ3N0X252X2gyNjRfZW5jX3BhcmVudF9jbGFzcyktPmNsb3NlIChlbmMpOworfQorCitzdGF0aWMgR1ZhbHVlICoKK19nZXRfaW50ZXJsYWNlX21vZGVzIChHc3ROdkgyNjRFbmMgKiBudmVuYykKK3sKKyAgTlZfRU5DX0NBUFNfUEFSQU0gY2Fwc19wYXJhbSA9IHsgMCwgfTsKKyAgR1ZhbHVlICpsaXN0ID0gZ19uZXcwIChHVmFsdWUsIDEpOworICBHVmFsdWUgdmFsID0gR19WQUxVRV9JTklUOworCisgIGdfdmFsdWVfaW5pdCAobGlzdCwgR1NUX1RZUEVfTElTVCk7CisgIGdfdmFsdWVfaW5pdCAoJnZhbCwgR19UWVBFX1NUUklORyk7CisKKyAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJnZhbCwgInByb2dyZXNzaXZlIik7CisgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAobGlzdCwgJnZhbCk7CisKKyAgY2Fwc19wYXJhbS52ZXJzaW9uID0gTlZfRU5DX0NBUFNfUEFSQU1fVkVSOworICBjYXBzX3BhcmFtLmNhcHNUb1F1ZXJ5ID0gTlZfRU5DX0NBUFNfU1VQUE9SVF9GSUVMRF9FTkNPRElORzsKKworICBpZiAoTnZFbmNHZXRFbmNvZGVDYXBzIChHU1RfTlZfQkFTRV9FTkMgKG52ZW5jKS0+ZW5jb2RlciwKKyAgICAgICAgICBOVl9FTkNfQ09ERUNfSDI2NF9HVUlELCAmY2Fwc19wYXJhbSwKKyAgICAgICAgICAmbnZlbmMtPmludGVybGFjZV9tb2RlcykgIT0gTlZfRU5DX1NVQ0NFU1MpCisgICAgbnZlbmMtPmludGVybGFjZV9tb2RlcyA9IDA7CisKKyAgaWYgKG52ZW5jLT5pbnRlcmxhY2VfbW9kZXMgPj0gMSkgeworICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKCZ2YWwsICJpbnRlcmxlYXZlZCIpOworICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAobGlzdCwgJnZhbCk7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJnZhbCwgIm1peGVkIik7CisgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlIChsaXN0LCAmdmFsKTsKKyAgfQorICAvKiBUT0RPOiBmaWd1cmUgb3V0IHdoYXQgbnZlbmMgZnJhbWUgYmFzZWQgaW50ZXJsYWNpbmcgbWVhbnMgaW4gZ3N0IHRlcm1zICovCisKKyAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyBHc3RDYXBzICoKK2dzdF9udl9oMjY0X2VuY19nZXRjYXBzIChHc3RWaWRlb0VuY29kZXIgKiBlbmMsIEdzdENhcHMgKiBmaWx0ZXIpCit7CisgIEdzdE52SDI2NEVuYyAqbnZlbmMgPSBHU1RfTlZfSDI2NF9FTkMgKGVuYyk7CisgIEdzdENhcHMgKnN1cHBvcnRlZF9pbmNhcHMgPSBOVUxMOworICBHc3RDYXBzICp0ZW1wbGF0ZV9jYXBzLCAqY2FwczsKKyAgR1ZhbHVlICppbnB1dF9mb3JtYXRzID0gR1NUX05WX0JBU0VfRU5DIChlbmMpLT5pbnB1dF9mb3JtYXRzOworCisgIEdTVF9PQkpFQ1RfTE9DSyAobnZlbmMpOworCisgIGlmIChpbnB1dF9mb3JtYXRzICE9IE5VTEwpIHsKKyAgICBHVmFsdWUgKnZhbDsKKworICAgIHRlbXBsYXRlX2NhcHMgPSBnc3RfcGFkX2dldF9wYWRfdGVtcGxhdGVfY2FwcyAoZW5jLT5zaW5rcGFkKTsKKyAgICBzdXBwb3J0ZWRfaW5jYXBzID0gZ3N0X2NhcHNfY29weSAodGVtcGxhdGVfY2Fwcyk7CisgICAgZ3N0X2NhcHNfc2V0X3ZhbHVlIChzdXBwb3J0ZWRfaW5jYXBzLCAiZm9ybWF0IiwgaW5wdXRfZm9ybWF0cyk7CisKKyAgICB2YWwgPSBfZ2V0X2ludGVybGFjZV9tb2RlcyAobnZlbmMpOworICAgIGdzdF9jYXBzX3NldF92YWx1ZSAoc3VwcG9ydGVkX2luY2FwcywgImludGVybGFjZS1tb2RlIiwgdmFsKTsKKyAgICBnX2ZyZWUgKHZhbCk7CisKKyAgICBHU1RfTE9HX09CSkVDVCAoZW5jLCAiY29kZWMgaW5wdXQgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgc3VwcG9ydGVkX2luY2Fwcyk7CisgICAgR1NUX0xPR19PQkpFQ1QgKGVuYywgIiAgIHRlbXBsYXRlIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIHRlbXBsYXRlX2NhcHMpOworICAgIGNhcHMgPSBnc3RfY2Fwc19pbnRlcnNlY3QgKHRlbXBsYXRlX2NhcHMsIHN1cHBvcnRlZF9pbmNhcHMpOworICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbGF0ZV9jYXBzKTsKKyAgICBnc3RfY2Fwc191bnJlZiAoc3VwcG9ydGVkX2luY2Fwcyk7CisgICAgc3VwcG9ydGVkX2luY2FwcyA9IGNhcHM7CisgICAgR1NUX0xPR19PQkpFQ1QgKGVuYywgIiAgc3VwcG9ydGVkIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIHN1cHBvcnRlZF9pbmNhcHMpOworICB9CisKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKG52ZW5jKTsKKworICBjYXBzID0gZ3N0X3ZpZGVvX2VuY29kZXJfcHJveHlfZ2V0Y2FwcyAoZW5jLCBzdXBwb3J0ZWRfaW5jYXBzLCBmaWx0ZXIpOworCisgIGlmIChzdXBwb3J0ZWRfaW5jYXBzKQorICAgIGdzdF9jYXBzX3VucmVmIChzdXBwb3J0ZWRfaW5jYXBzKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChudmVuYywgIiAgcmV0dXJuaW5nIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworCisgIHJldHVybiBjYXBzOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9udl9oMjY0X2VuY19zZXRfcHJvZmlsZV9hbmRfbGV2ZWwgKEdzdE52SDI2NEVuYyAqIG52ZW5jLCBHc3RDYXBzICogY2FwcykKK3sKKyNkZWZpbmUgTl9CWVRFU19TUFMgMTI4CisgIGd1aW50OCBzcHNbTl9CWVRFU19TUFNdOworICBOVl9FTkNfU0VRVUVOQ0VfUEFSQU1fUEFZTE9BRCBzcHAgPSB7IDAsIH07CisgIEdzdFN0cnVjdHVyZSAqczsKKyAgY29uc3QgZ2NoYXIgKnByb2ZpbGU7CisgIEdzdENhcHMgKmFsbG93ZWRfY2FwczsKKyAgR3N0U3RydWN0dXJlICpzMjsKKyAgY29uc3QgZ2NoYXIgKmFsbG93ZWRfcHJvZmlsZTsKKyAgTlZFTkNTVEFUVVMgbnZfcmV0OworICBndWludDMyIHNlcV9zaXplOworCisgIHNwcC52ZXJzaW9uID0gTlZfRU5DX1NFUVVFTkNFX1BBUkFNX1BBWUxPQURfVkVSOworICBzcHAuaW5CdWZmZXJTaXplID0gTl9CWVRFU19TUFM7CisgIHNwcC5zcHNJZCA9IDA7CisgIHNwcC5wcHNJZCA9IDA7CisgIHNwcC5zcHNwcHNCdWZmZXIgPSAmc3BzOworICBzcHAub3V0U1BTUFBTUGF5bG9hZFNpemUgPSAmc2VxX3NpemU7CisgIG52X3JldCA9IE52RW5jR2V0U2VxdWVuY2VQYXJhbXMgKEdTVF9OVl9CQVNFX0VOQyAobnZlbmMpLT5lbmNvZGVyLCAmc3BwKTsKKyAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChudmVuYywgU1RSRUFNLCBFTkNPREUsICgiRW5jb2RlIGhlYWRlciBmYWlsZWQuIiksCisgICAgICAgICgiTnZFbmNHZXRTZXF1ZW5jZVBhcmFtcyByZXR1cm4gY29kZT0lZCIsIG52X3JldCkpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmIChzZXFfc2l6ZSA8IDgpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAobnZlbmMsIFNUUkVBTSwgRU5DT0RFLCAoIkVuY29kZSBoZWFkZXIgZmFpbGVkLiIpLAorICAgICAgICAoIk52RW5jR2V0U2VxdWVuY2VQYXJhbXMgcmV0dXJuZWQgaW5jb21wbGV0ZSBkYXRhIikpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIC8qIHNraXAgbmFsIGhlYWRlciBhbmQgaWRlbnRpZmllciAqLworICBnc3RfY29kZWNfdXRpbHNfaDI2NF9jYXBzX3NldF9sZXZlbF9hbmRfcHJvZmlsZSAoY2FwcywgJnNwc1s1XSwgMyk7CisKKyAgLyogQ29uc3RyYWluZWQgYmFzZWxpbmUgaXMgYSBzdHJpY3Qgc3Vic2V0IG9mIGJhc2VsaW5lLiBJZiBkb3duc3RyZWFtCisgICAqIHdhbnRlZCBiYXNlbGluZSBhbmQgd2UgcHJvZHVjZWQgY29uc3RyYWluZWQgYmFzZWxpbmUsIHdlIGNhbiBqdXN0CisgICAqIHNldCB0aGUgcHJvZmlsZSB0byBiYXNlbGluZSBpbiB0aGUgY2FwcyB0byBtYWtlIG5lZ290aWF0aW9uIGhhcHB5LgorICAgKiBTYW1lIGdvZXMgZm9yIGJhc2VsaW5lIGFzIHN1YnNldCBvZiBtYWluIHByb2ZpbGUgYW5kIG1haW4gYXMgYSBzdWJzZXQKKyAgICogb2YgaGlnaCBwcm9maWxlLgorICAgKi8KKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworICBwcm9maWxlID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzLCAicHJvZmlsZSIpOworCisgIGFsbG93ZWRfY2FwcyA9IGdzdF9wYWRfZ2V0X2FsbG93ZWRfY2FwcyAoR1NUX1ZJREVPX0VOQ09ERVJfU1JDX1BBRCAobnZlbmMpKTsKKworICBpZiAoYWxsb3dlZF9jYXBzID09IE5VTEwpCisgICAgZ290byBub19wZWVyOworCisgIGlmICghZ3N0X2NhcHNfY2FuX2ludGVyc2VjdCAoYWxsb3dlZF9jYXBzLCBjYXBzKSkgeworICAgIGFsbG93ZWRfY2FwcyA9IGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKGFsbG93ZWRfY2Fwcyk7CisgICAgYWxsb3dlZF9jYXBzID0gZ3N0X2NhcHNfdHJ1bmNhdGUgKGFsbG93ZWRfY2Fwcyk7CisgICAgczIgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChhbGxvd2VkX2NhcHMsIDApOworICAgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX3N0cmluZyAoczIsICJwcm9maWxlIiwgcHJvZmlsZSk7CisgICAgYWxsb3dlZF9wcm9maWxlID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzMiwgInByb2ZpbGUiKTsKKyAgICBpZiAoIXN0cmNtcCAoYWxsb3dlZF9wcm9maWxlLCAiaGlnaCIpKSB7CisgICAgICBpZiAoIXN0cmNtcCAocHJvZmlsZSwgImNvbnN0cmFpbmVkLWJhc2VsaW5lIikKKyAgICAgICAgICB8fCAhc3RyY21wIChwcm9maWxlLCAiYmFzZWxpbmUiKSB8fCAhc3RyY21wIChwcm9maWxlLCAibWFpbiIpKSB7CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAicHJvZmlsZSIsIEdfVFlQRV9TVFJJTkcsICJoaWdoIiwgTlVMTCk7CisgICAgICAgIEdTVF9JTkZPX09CSkVDVCAobnZlbmMsICJkb3duc3RyZWFtIHJlcXVlc3RlZCBoaWdoIHByb2ZpbGUsIGJ1dCAiCisgICAgICAgICAgICAiZW5jb2RlciB3aWxsIG5vdyBvdXRwdXQgJXMgcHJvZmlsZSAod2hpY2ggaXMgYSBzdWJzZXQpLCBkdWUgIgorICAgICAgICAgICAgInRvIGhvdyBpdCdzIGJlZW4gY29uZmlndXJlZCIsIHByb2ZpbGUpOworICAgICAgfQorICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAoYWxsb3dlZF9wcm9maWxlLCAibWFpbiIpKSB7CisgICAgICBpZiAoIXN0cmNtcCAocHJvZmlsZSwgImNvbnN0cmFpbmVkLWJhc2VsaW5lIikKKyAgICAgICAgICB8fCAhc3RyY21wIChwcm9maWxlLCAiYmFzZWxpbmUiKSkgeworICAgICAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgInByb2ZpbGUiLCBHX1RZUEVfU1RSSU5HLCAibWFpbiIsIE5VTEwpOworICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKG52ZW5jLCAiZG93bnN0cmVhbSByZXF1ZXN0ZWQgbWFpbiBwcm9maWxlLCBidXQgIgorICAgICAgICAgICAgImVuY29kZXIgd2lsbCBub3cgb3V0cHV0ICVzIHByb2ZpbGUgKHdoaWNoIGlzIGEgc3Vic2V0KSwgZHVlICIKKyAgICAgICAgICAgICJ0byBob3cgaXQncyBiZWVuIGNvbmZpZ3VyZWQiLCBwcm9maWxlKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGFsbG93ZWRfcHJvZmlsZSwgImJhc2VsaW5lIikpIHsKKyAgICAgIGlmICghc3RyY21wIChwcm9maWxlLCAiY29uc3RyYWluZWQtYmFzZWxpbmUiKSkKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJwcm9maWxlIiwgR19UWVBFX1NUUklORywgImJhc2VsaW5lIiwgTlVMTCk7CisgICAgfQorICB9CisgIGdzdF9jYXBzX3VucmVmIChhbGxvd2VkX2NhcHMpOworCitub19wZWVyOgorCisgIHJldHVybiBUUlVFOworCisjdW5kZWYgTl9CWVRFU19TUFMKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbnZfaDI2NF9lbmNfc2V0X3NyY19jYXBzIChHc3ROdkJhc2VFbmMgKiBudmVuYywgR3N0VmlkZW9Db2RlY1N0YXRlICogc3RhdGUpCit7CisgIEdzdE52SDI2NEVuYyAqaDI2NGVuYyA9IEdTVF9OVl9IMjY0X0VOQyAobnZlbmMpOworICBHc3RWaWRlb0NvZGVjU3RhdGUgKm91dF9zdGF0ZTsKKyAgR3N0U3RydWN0dXJlICpzOworICBHc3RDYXBzICpvdXRfY2FwczsKKworICBvdXRfY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUgKCJ2aWRlby94LWgyNjQiKTsKKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKG91dF9jYXBzLCAwKTsKKworICAvKiBUT0RPOiBhZGQgc3VwcG9ydCBmb3IgYXZjIGZvcm1hdCBhcyB3ZWxsICovCisgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAic3RyZWFtLWZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJieXRlLXN0cmVhbSIsCisgICAgICAiYWxpZ25tZW50IiwgR19UWVBFX1NUUklORywgImF1IiwgTlVMTCk7CisKKyAgaWYgKCFnc3RfbnZfaDI2NF9lbmNfc2V0X3Byb2ZpbGVfYW5kX2xldmVsIChoMjY0ZW5jLCBvdXRfY2FwcykpIHsKKyAgICBnc3RfY2Fwc191bnJlZiAob3V0X2NhcHMpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIG91dF9zdGF0ZSA9IGdzdF92aWRlb19lbmNvZGVyX3NldF9vdXRwdXRfc3RhdGUgKEdTVF9WSURFT19FTkNPREVSIChudmVuYyksCisgICAgICBvdXRfY2Fwcywgc3RhdGUpOworCisgIEdTVF9JTkZPX09CSkVDVCAobnZlbmMsICJvdXRwdXQgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsIG91dF9zdGF0ZS0+Y2Fwcyk7CisKKyAgLyogZW5jb2RlciB3aWxsIGtlZXAgaXQgYXJvdW5kIGZvciB1cyAqLworICBnc3RfdmlkZW9fY29kZWNfc3RhdGVfdW5yZWYgKG91dF9zdGF0ZSk7CisKKyAgLyogVE9ETzogd291bGQgYmUgbmljZSB0byBhbHNvIHNlbmQgc29tZSB0YWdzIHdpdGggdGhlIGNvZGVjIG5hbWUgKi8KKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X252X2gyNjRfZW5jX2luaXRpYWxpemVfZW5jb2RlciAoR3N0TnZCYXNlRW5jICogbnZlbmMsCisgICAgR3N0VmlkZW9Db2RlY1N0YXRlICogb2xkX3N0YXRlLCBHc3RWaWRlb0NvZGVjU3RhdGUgKiBzdGF0ZSkKK3sKKyAgR3N0TnZIMjY0RW5jICpoMjY0ZW5jID0gR1NUX05WX0gyNjRfRU5DIChudmVuYyk7CisgIE5WX0VOQ19SRUNPTkZJR1VSRV9QQVJBTVMgcmVjb25maWd1cmVfcGFyYW1zID0geyAwLCB9OworICBOVl9FTkNfSU5JVElBTElaRV9QQVJBTVMgaW5pdF9wYXJhbXMgPSB7IDAsIH07CisgIE5WX0VOQ19JTklUSUFMSVpFX1BBUkFNUyAqcGFyYW1zOworICBOVl9FTkNfUFJFU0VUX0NPTkZJRyBwcmVzZXRfY29uZmlnID0geyAwLCB9OworICBOVkVOQ1NUQVRVUyBudl9yZXQ7CisgIEdzdFZpZGVvSW5mbyAqaW5mbyA9ICZzdGF0ZS0+aW5mbzsKKyAgR3N0Q2FwcyAqYWxsb3dlZF9jYXBzLCAqdGVtcGxhdGVfY2FwczsKKyAgR1VJRCBzZWxlY3RlZF9wcm9maWxlID0gTlZfRU5DX0NPREVDX1BST0ZJTEVfQVVUT1NFTEVDVF9HVUlEOworICBpbnQgbGV2ZWxfaWRjID0gTlZfRU5DX0xFVkVMX0FVVE9TRUxFQ1Q7CisKKyAgLyogVE9ETzogc3VwcG9ydCByZWNvbmZpZ3VyYXRpb24gKi8KKyAgaWYgKG9sZF9zdGF0ZSkgeworICAgIHJlY29uZmlndXJlX3BhcmFtcy52ZXJzaW9uID0gTlZfRU5DX1JFQ09ORklHVVJFX1BBUkFNU19WRVI7CisgICAgcGFyYW1zID0gJnJlY29uZmlndXJlX3BhcmFtcy5yZUluaXRFbmNvZGVQYXJhbXM7CisgIH0gZWxzZSB7CisgICAgcGFyYW1zID0gJmluaXRfcGFyYW1zOworICB9CisKKyAgdGVtcGxhdGVfY2FwcyA9IGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldF9jYXBzICgmc3JjX2ZhY3RvcnkpOworICBhbGxvd2VkX2NhcHMgPSBnc3RfcGFkX2dldF9hbGxvd2VkX2NhcHMgKEdTVF9WSURFT19FTkNPREVSX1NSQ19QQUQgKGgyNjRlbmMpKTsKKworICBpZiAodGVtcGxhdGVfY2FwcyA9PSBhbGxvd2VkX2NhcHMpIHsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKGgyNjRlbmMsICJkb3duc3RyZWFtIGhhcyBBTlkgY2FwcyIpOworICB9IGVsc2UgaWYgKGFsbG93ZWRfY2FwcykgeworICAgIEdzdFN0cnVjdHVyZSAqczsKKyAgICBjb25zdCBnY2hhciAqcHJvZmlsZTsKKyAgICBjb25zdCBnY2hhciAqbGV2ZWw7CisKKyAgICBpZiAoZ3N0X2NhcHNfaXNfZW1wdHkgKGFsbG93ZWRfY2FwcykpIHsKKyAgICAgIGdzdF9jYXBzX3VucmVmIChhbGxvd2VkX2NhcHMpOworICAgICAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsYXRlX2NhcHMpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGFsbG93ZWRfY2FwcyA9IGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKGFsbG93ZWRfY2Fwcyk7CisgICAgYWxsb3dlZF9jYXBzID0gZ3N0X2NhcHNfZml4YXRlIChhbGxvd2VkX2NhcHMpOworICAgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChhbGxvd2VkX2NhcHMsIDApOworCisgICAgcHJvZmlsZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAocywgInByb2ZpbGUiKTsKKyAgICBpZiAocHJvZmlsZSkgeworICAgICAgaWYgKCFzdHJjbXAgKHByb2ZpbGUsICJiYXNlbGluZSIpKSB7CisgICAgICAgIHNlbGVjdGVkX3Byb2ZpbGUgPSBOVl9FTkNfSDI2NF9QUk9GSUxFX0JBU0VMSU5FX0dVSUQ7CisgICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXggKHByb2ZpbGUsICJoaWdoLTQ6NDo0IikpIHsKKyAgICAgICAgc2VsZWN0ZWRfcHJvZmlsZSA9IE5WX0VOQ19IMjY0X1BST0ZJTEVfSElHSF80NDRfR1VJRDsKKyAgICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeCAocHJvZmlsZSwgImhpZ2gtMTAiKSkgeworICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeCAocHJvZmlsZSwgImhpZ2gtNDoyOjIiKSkgeworICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3ByZWZpeCAocHJvZmlsZSwgImhpZ2giKSkgeworICAgICAgICBzZWxlY3RlZF9wcm9maWxlID0gTlZfRU5DX0gyNjRfUFJPRklMRV9ISUdIX0dVSUQ7CisgICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXggKHByb2ZpbGUsICJtYWluIikpIHsKKyAgICAgICAgc2VsZWN0ZWRfcHJvZmlsZSA9IE5WX0VOQ19IMjY0X1BST0ZJTEVfTUFJTl9HVUlEOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICB9CisgICAgfQorCisgICAgbGV2ZWwgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJsZXZlbCIpOworICAgIGlmIChsZXZlbCkKKyAgICAgIC8qIG1hdGNoZXMgdmFsdWVzIHN0b3JlZCBpbiBOVl9FTkNfTEVWRUwgKi8KKyAgICAgIGxldmVsX2lkYyA9IGdzdF9jb2RlY191dGlsc19oMjY0X2dldF9sZXZlbF9pZGMgKGxldmVsKTsKKworICAgIGdzdF9jYXBzX3VucmVmIChhbGxvd2VkX2NhcHMpOworICB9CisgIGdzdF9jYXBzX3VucmVmICh0ZW1wbGF0ZV9jYXBzKTsKKworICBwYXJhbXMtPnZlcnNpb24gPSBOVl9FTkNfSU5JVElBTElaRV9QQVJBTVNfVkVSOworICBwYXJhbXMtPmVuY29kZUdVSUQgPSBOVl9FTkNfQ09ERUNfSDI2NF9HVUlEOworICBwYXJhbXMtPmVuY29kZVdpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEggKGluZm8pOworICBwYXJhbXMtPmVuY29kZUhlaWdodCA9IEdTVF9WSURFT19JTkZPX0hFSUdIVCAoaW5mbyk7CisgIC8qIEZJWE1FOiBtYWtlIHRoaXMgYSBwcm9wZXJ0eSAqLworICBwYXJhbXMtPnByZXNldEdVSUQgPSBOVl9FTkNfUFJFU0VUX0hQX0dVSUQ7ICAgLy8gX0RFRkFVTFQKKyAgcGFyYW1zLT5lbmFibGVQVEQgPSAxOworICBpZiAoIW9sZF9zdGF0ZSkgeworICAgIC8qIHRoaXMgc2V0cyB0aGUgcmVxdWlyZWQgYnVmZmVyIHNpemUgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgc2l6ZSBvbgorICAgICAqIHN1YnNlcXVlbnQgcmVjb25maWd1cmVzICovCisgICAgLyogRklYTUU6IHByb3BlcnRpc2UgdGhpcyAqLworICAgIHBhcmFtcy0+bWF4RW5jb2RlV2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCAoaW5mbyk7CisgICAgcGFyYW1zLT5tYXhFbmNvZGVIZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQgKGluZm8pOworICAgIGdzdF9udl9iYXNlX2VuY19zZXRfbWF4X2VuY29kZV9zaXplIChHU1RfTlZfQkFTRV9FTkMgKGgyNjRlbmMpLAorICAgICAgICBwYXJhbXMtPm1heEVuY29kZVdpZHRoLCBwYXJhbXMtPm1heEVuY29kZUhlaWdodCk7CisgIH0gZWxzZSB7CisgICAgZ3VpbnQgbWF4X3dpZHRoLCBtYXhfaGVpZ2h0OworCisgICAgZ3N0X252X2Jhc2VfZW5jX2dldF9tYXhfZW5jb2RlX3NpemUgKEdTVF9OVl9CQVNFX0VOQyAoaDI2NGVuYyksCisgICAgICAgICZtYXhfd2lkdGgsICZtYXhfaGVpZ2h0KTsKKworICAgIGlmIChHU1RfVklERU9fSU5GT19XSURUSCAoaW5mbykgPiBtYXhfd2lkdGgKKyAgICAgICAgfHwgR1NUX1ZJREVPX0lORk9fSEVJR0hUIChpbmZvKSA+IG1heF9oZWlnaHQpIHsKKyAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChoMjY0ZW5jLCBTVFJFQU0sIEZPUk1BVCwgKCIlcyIsICJSZXF1ZXN0ZWQgc3RyZWFtICIKKyAgICAgICAgICAgICAgInNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIG1heGltdW0gY29uZmlndXJlZCBzaXplIiksIChOVUxMKSk7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICB9CisKKyAgcHJlc2V0X2NvbmZpZy52ZXJzaW9uID0gTlZfRU5DX1BSRVNFVF9DT05GSUdfVkVSOworICBwcmVzZXRfY29uZmlnLnByZXNldENmZy52ZXJzaW9uID0gTlZfRU5DX0NPTkZJR19WRVI7CisKKyAgbnZfcmV0ID0KKyAgICAgIE52RW5jR2V0RW5jb2RlUHJlc2V0Q29uZmlnIChHU1RfTlZfQkFTRV9FTkMgKGgyNjRlbmMpLT5lbmNvZGVyLAorICAgICAgcGFyYW1zLT5lbmNvZGVHVUlELCBwYXJhbXMtPnByZXNldEdVSUQsICZwcmVzZXRfY29uZmlnKTsKKyAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChoMjY0ZW5jLCBMSUJSQVJZLCBTRVRUSU5HUywgKE5VTEwpLAorICAgICAgICAoIkZhaWxlZCB0byBnZXQgZW5jb2RlIHByZXNldCBjb25maWd1cmF0aW9uOiAlZCIsIG52X3JldCkpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorICBwYXJhbXMtPmVuY29kZUNvbmZpZyA9ICZwcmVzZXRfY29uZmlnLnByZXNldENmZzsKKworICAvKiBvdmVycmlkZSBzb21lIGRlZmF1bHRzICovCisgIEdTVF9MT0dfT0JKRUNUIChoMjY0ZW5jLCAic2V0dGluZyBwYXJhbWV0ZXJzIik7CisgIHByZXNldF9jb25maWcucHJlc2V0Q2ZnLnZlcnNpb24gPSBOVl9FTkNfQ09ORklHX1ZFUjsKKyAgcHJlc2V0X2NvbmZpZy5wcmVzZXRDZmcucHJvZmlsZUdVSUQgPSBzZWxlY3RlZF9wcm9maWxlOworICBwcmVzZXRfY29uZmlnLnByZXNldENmZy5lbmNvZGVDb2RlY0NvbmZpZy5oMjY0Q29uZmlnLmxldmVsID0gbGV2ZWxfaWRjOworICBwcmVzZXRfY29uZmlnLnByZXNldENmZy5lbmNvZGVDb2RlY0NvbmZpZy5oMjY0Q29uZmlnLmNocm9tYUZvcm1hdElEQyA9IDE7CisgIGlmIChHU1RfVklERU9fSU5GT19GT1JNQVQgKGluZm8pID09IEdTVF9WSURFT19GT1JNQVRfWTQ0NCkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKGgyNjRlbmMsICJoYXZlIFk0NDQgaW5wdXQsIHNldHRpbmcgY29uZmlnIGFjY29yZGluZ2x5Iik7CisgICAgcHJlc2V0X2NvbmZpZy5wcmVzZXRDZmcuZW5jb2RlQ29kZWNDb25maWcuCisgICAgICAgIGgyNjRDb25maWcuc2VwYXJhdGVDb2xvdXJQbGFuZUZsYWcgPSAxOworICAgIHByZXNldF9jb25maWcucHJlc2V0Q2ZnLmVuY29kZUNvZGVjQ29uZmlnLmgyNjRDb25maWcuY2hyb21hRm9ybWF0SURDID0gMzsKKyAgfQorCisgIC8qIEZJWE1FOiBtYWtlIHByb3BlcnR5ICovCisgIHByZXNldF9jb25maWcucHJlc2V0Q2ZnLmVuY29kZUNvZGVjQ29uZmlnLmgyNjRDb25maWcub3V0cHV0QVVEID0gMTsKKworICBpZiAoR1NUX1ZJREVPX0lORk9fSVNfSU5URVJMQUNFRCAoaW5mbykpIHsKKyAgICBpZiAoR1NUX1ZJREVPX0lORk9fSU5URVJMQUNFX01PREUgKGluZm8pID09CisgICAgICAgIEdTVF9WSURFT19JTlRFUkxBQ0VfTU9ERV9JTlRFUkxFQVZFRAorICAgICAgICB8fCBHU1RfVklERU9fSU5GT19JTlRFUkxBQ0VfTU9ERSAoaW5mbykgPT0KKyAgICAgICAgR1NUX1ZJREVPX0lOVEVSTEFDRV9NT0RFX01JWEVEKSB7CisgICAgICBwcmVzZXRfY29uZmlnLnByZXNldENmZy5mcmFtZUZpZWxkTW9kZSA9CisgICAgICAgICAgTlZfRU5DX1BBUkFNU19GUkFNRV9GSUVMRF9NT0RFX0ZJRUxEOworICAgIH0KKyAgfQorCisgIGlmIChpbmZvLT5mcHNfZCA+IDAgJiYgaW5mby0+ZnBzX24gPiAwKSB7CisgICAgcGFyYW1zLT5mcmFtZVJhdGVOdW0gPSBpbmZvLT5mcHNfbjsKKyAgICBwYXJhbXMtPmZyYW1lUmF0ZURlbiA9IGluZm8tPmZwc19kOworICB9IGVsc2UgeworICAgIEdTVF9GSVhNRV9PQkpFQ1QgKGgyNjRlbmMsICJ2YXJpYWJsZSBmcmFtZXJhdGUiKTsKKyAgfQorCisgIGlmIChvbGRfc3RhdGUpIHsKKyAgICBudl9yZXQgPQorICAgICAgICBOdkVuY1JlY29uZmlndXJlRW5jb2RlciAoR1NUX05WX0JBU0VfRU5DIChoMjY0ZW5jKS0+ZW5jb2RlciwKKyAgICAgICAgJnJlY29uZmlndXJlX3BhcmFtcyk7CisgIH0gZWxzZSB7CisgICAgbnZfcmV0ID0KKyAgICAgICAgTnZFbmNJbml0aWFsaXplRW5jb2RlciAoR1NUX05WX0JBU0VfRU5DIChoMjY0ZW5jKS0+ZW5jb2RlciwgcGFyYW1zKTsKKyAgfQorCisgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoaDI2NGVuYywgTElCUkFSWSwgU0VUVElOR1MsIChOVUxMKSwKKyAgICAgICAgKCJGYWlsZWQgdG8gJXNpbml0IGVuY29kZXI6ICVkIiwgb2xkX3N0YXRlID8gInJlIiA6ICIiLCBudl9yZXQpKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyAgR1NUX0lORk9fT0JKRUNUIChoMjY0ZW5jLCAiY29uZmlndXJlZCBlbmNvZGVyIik7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X252X2gyNjRfZW5jX3NldF9waWNfcGFyYW1zIChHc3ROdkJhc2VFbmMgKiBlbmMsIEdzdFZpZGVvQ29kZWNGcmFtZSAqIGZyYW1lLAorICAgIE5WX0VOQ19QSUNfUEFSQU1TICogcGljX3BhcmFtcykKK3sKKyAgLyogZW5jb2RlIHdob2xlIHBpY3R1cmUgaW4gb25lIHNpbmdsZSBzbGljZSAqLworICBwaWNfcGFyYW1zLT5jb2RlY1BpY1BhcmFtcy5oMjY0UGljUGFyYW1zLnNsaWNlTW9kZSA9IDA7CisgIHBpY19wYXJhbXMtPmNvZGVjUGljUGFyYW1zLmgyNjRQaWNQYXJhbXMuc2xpY2VNb2RlRGF0YSA9IDA7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbnZfaDI2NF9lbmNfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9udl9oMjY0X2VuY19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLAorICAgIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvc3lzL252ZW5jL2dzdG52aDI2NGVuYy5oIGIvc3lzL252ZW5jL2dzdG52aDI2NGVuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZDY1NzQKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvbnZlbmMvZ3N0bnZoMjY0ZW5jLmgKQEAgLTAsMCArMSw1OSBAQAorLyogR1N0cmVhbWVyIE5WRU5DIHBsdWdpbgorICogQ29weXJpZ2h0IChDKSAyMDE1IENlbnRyaWN1bGFyIEx0ZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfTlZfSDI2NF9FTkNfSF9JTkNMVURFRF9fCisjZGVmaW5lIF9fR1NUX05WX0gyNjRfRU5DX0hfSU5DTFVERURfXworCisjaW5jbHVkZSAiZ3N0bnZiYXNlZW5jLmgiCisKKyNkZWZpbmUgR1NUX1RZUEVfTlZfSDI2NF9FTkMgXAorICAoZ3N0X252X2gyNjRfZW5jX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9OVl9IMjY0X0VOQyhvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX05WX0gyNjRfRU5DLEdzdE52SDI2NEVuYykpCisjZGVmaW5lIEdTVF9OVl9IMjY0X0VOQ19DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9OVl9IMjY0X0VOQyxHc3ROdkgyNjRFbmNDbGFzcykpCisjZGVmaW5lIEdTVF9OVl9IMjY0X0VOQ19HRVRfQ0xBU1Mob2JqKSBcCisgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLEdTVF9UWVBFX05WX0gyNjRfRU5DLEdzdE52SDI2NEVuY0NsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX05WX0gyNjRfRU5DKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfTlZfSDI2NF9FTkMpKQorI2RlZmluZSBHU1RfSVNfTlZfSDI2NF9FTkNfQ0xBU1Mob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX05WX0gyNjRfRU5DKSkKKwordHlwZWRlZiBzdHJ1Y3QgeworICBHc3ROdkJhc2VFbmMgYmFzZV9udmVuYzsKKworICAvKiB0aGUgc3VwcG9ydGVkIGlucHV0IGZvcm1hdHMgKi8KKyAgR1ZhbHVlICAgICAgICAqIHN1cHBvcnRlZF9wcm9maWxlczsgICAgICAgICAgICAgLyogT0JKRUNUIExPQ0sgKi8KKworICBHc3RWaWRlb0NvZGVjU3RhdGUgKmlucHV0X3N0YXRlOworICBnYm9vbGVhbiAgICAgICAgICAgIGdsX2lucHV0OworCisgIC8qIHN1cHBvcnRlZCBpbnRlcmxhY2luZyBpbnB1dCBtb2Rlcy4KKyAgICogMCA9IG5vbmUsIDEgPSBmaWVsZHMsIDIgPSBpbnRlcmxlYXZlZCAqLworICBnaW50ICAgICAgICAgICAgaW50ZXJsYWNlX21vZGVzOworfSBHc3ROdkgyNjRFbmM7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgR3N0TnZCYXNlRW5jQ2xhc3MgdmlkZW9fZW5jb2Rlcl9jbGFzczsKK30gR3N0TnZIMjY0RW5jQ2xhc3M7CisKK0dfR05VQ19JTlRFUk5BTAorR1R5cGUgZ3N0X252X2gyNjRfZW5jX2dldF90eXBlICh2b2lkKTsKKworI2VuZGlmIC8qIF9fR1NUX05WX0gyNjRfRU5DX0hfSU5DTFVERURfXyAqLwpkaWZmIC0tZ2l0IGEvc3lzL29wZW5zbGVzL01ha2VmaWxlLmluIGIvc3lzL29wZW5zbGVzL01ha2VmaWxlLmluCmluZGV4IDA0NTM4YjQuLjRkODZjNTkgMTAwNjQ0Ci0tLSBhL3N5cy9vcGVuc2xlcy9NYWtlZmlsZS5pbgorKysgYi9zeXMvb3BlbnNsZXMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc3LDYgKzI3Niw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE0LDYgKzMxNSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIyLDcgKzMyNSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MSw4ICszNDMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU5LDE2ICszNjIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk0LDYgKzM5OCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOSw2ICs0MjUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjAsNiArNTI4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMyw4ICs1NDIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTAsNiArNTU3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNywxNiArNjE2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY4LDYgKzY3OSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzgsNiArNjkwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg3LDYgKzcwMCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjQsNyArNzM5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvb3BlbnNsZXMvb3BlbnNsZXNzaW5rLmMgYi9zeXMvb3BlbnNsZXMvb3BlbnNsZXNzaW5rLmMKaW5kZXggY2U5M2QyNS4uYzJlYzgwNiAxMDA2NDQKLS0tIGEvc3lzL29wZW5zbGVzL29wZW5zbGVzc2luay5jCisrKyBiL3N5cy9vcGVuc2xlcy9vcGVuc2xlc3NpbmsuYwpAQCAtMjYsNyArMjYsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249bXVzaWMub2dnICEgb2dnZGVtdXggISB2b3JiaXNkZWMgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgb3Blc2xlc3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZpbGVzcmMgbG9jYXRpb249bXVzaWMub2dnICEgb2dnZGVtdXggISB2b3JiaXNkZWMgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgb3Blc2xlc3NpbmsKICAqIF18IFBsYXkgYW4gT2dnL1ZvcmJpcyBmaWxlLgogICogPC9yZWZzZWN0Mj4KICAqCmRpZmYgLS1naXQgYS9zeXMvb3BlbnNsZXMvb3BlbnNsZXNzcmMuYyBiL3N5cy9vcGVuc2xlcy9vcGVuc2xlc3NyYy5jCmluZGV4IGQwZGZhMzIuLjY1MDVhYjEgMTAwNjQ0Ci0tLSBhL3N5cy9vcGVuc2xlcy9vcGVuc2xlc3NyYy5jCisrKyBiL3N5cy9vcGVuc2xlcy9vcGVuc2xlc3NyYy5jCkBAIC0yNiw3ICsyNiw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgb3BlbnNsZXNzcmMgISBhdWRpb2NvbnZlcnQgISB2b3JiaXNlbmMgISBvZ2dtdXggISBmaWxlc2luayBsb2NhdGlvbj1yZWNvcmRlZC5vZ2cKKyAqIGdzdC1sYXVuY2gtMS4wIC12IG9wZW5zbGVzc3JjICEgYXVkaW9jb252ZXJ0ICEgdm9yYmlzZW5jICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249cmVjb3JkZWQub2dnCiAgKiBdfCBSZWNvcmQgZnJvbSBkZWZhdWx0IGF1ZGlvIGlucHV0IGFuZCBlbmNvZGUgdG8gT2dnL1ZvcmJpcy4KICAqIDwvcmVmc2VjdDI+CiAgKgpkaWZmIC0tZ2l0IGEvc3lzL3B2cjJkL01ha2VmaWxlLmluIGIvc3lzL3B2cjJkL01ha2VmaWxlLmluCmluZGV4IDRlOGFlOWYuLjFmZTMxYWUgMTAwNjQ0Ci0tLSBhL3N5cy9wdnIyZC9NYWtlZmlsZS5pbgorKysgYi9zeXMvcHZyMmQvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc4LDYgKzI3Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE1LDYgKzMxNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIzLDcgKzMyNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Miw4ICszNDQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYwLDE2ICszNjMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk1LDYgKzM5OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMCw2ICs0MjYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjEsNiArNTI5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNCw4ICs1NDMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTEsNiArNTU4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOCwxNiArNjE3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY5LDYgKzY4MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzksNiArNjkxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg4LDYgKzcwMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjUsNyArNzQwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvcHZyMmQvZ3N0cHZydmlkZW9zaW5rLmMgYi9zeXMvcHZyMmQvZ3N0cHZydmlkZW9zaW5rLmMKaW5kZXggNmQxMTdmYi4uN2MxMDI0MyAxMDA2NDQKLS0tIGEvc3lzL3B2cjJkL2dzdHB2cnZpZGVvc2luay5jCisrKyBiL3N5cy9wdnIyZC9nc3RwdnJ2aWRlb3NpbmsuYwpAQCAtMTMxNiwxMSArMTMxNiw4IEBACiB7CiAgIEdTVF9ERUJVRyAoIkZyZWVpbmcgZGNvbnRleHQgJXAiLCBkY29udGV4dCk7CiAKLSAgaWYgKGRjb250ZXh0LT5wX2JsdF9pbmZvKQotICAgIGdfZnJlZSAoZGNvbnRleHQtPnBfYmx0X2luZm8pOwotCi0gIGlmIChkY29udGV4dC0+cF9ibHQyZF9pbmZvKQotICAgIGdfZnJlZSAoZGNvbnRleHQtPnBfYmx0MmRfaW5mbyk7CisgIGdfZnJlZSAoZGNvbnRleHQtPnBfYmx0X2luZm8pOworICBnX2ZyZWUgKGRjb250ZXh0LT5wX2JsdDJkX2luZm8pOwogCiAgIGlmIChkY29udGV4dC0+eF9sb2NrKQogICAgIGdfbXV0ZXhfbG9jayAoZGNvbnRleHQtPnhfbG9jayk7CmRpZmYgLS1naXQgYS9zeXMvc2htL01ha2VmaWxlLmluIGIvc3lzL3NobS9NYWtlZmlsZS5pbgppbmRleCBlZDg2NTFkLi41MGYzNzA1IDEwMDY0NAotLS0gYS9zeXMvc2htL01ha2VmaWxlLmluCisrKyBiL3N5cy9zaG0vTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvc2htL2dzdHNobXNpbmsuYyBiL3N5cy9zaG0vZ3N0c2htc2luay5jCmluZGV4IDVhNzA0MTcuLjEzZDY3YmQgMTAwNjQ0Ci0tLSBhL3N5cy9zaG0vZ3N0c2htc2luay5jCisrKyBiL3N5cy9zaG0vZ3N0c2htc2luay5jCkBAIC0yNiw3ICsyNiw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgIHNobXNpbmsgc29ja2V0LXBhdGg9L3RtcC9ibGFoIHNobS1zaXplPTEwMDAwMDAKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhICBzaG1zaW5rIHNvY2tldC1wYXRoPS90bXAvYmxhaCBzaG0tc2l6ZT0xMDAwMDAwCiAgKiBdfCBTZW5kIHZpZGVvIHRvIHNobSBidWZmZXJzLgogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvc3lzL3NobS9nc3RzaG1zcmMuYyBiL3N5cy9zaG0vZ3N0c2htc3JjLmMKaW5kZXggMWU2OWFmNy4uM2NhZjkwYiAxMDA2NDQKLS0tIGEvc3lzL3NobS9nc3RzaG1zcmMuYworKysgYi9zeXMvc2htL2dzdHNobXNyYy5jCkBAIC0yNiw5ICsyNiw5IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggc2htc3JjIHNvY2tldC1wYXRoPS90bXAvYmxhaCAhIFwKLSAqICJ2aWRlby94LXJhdy15dXYsIGZvcm1hdD0oZm91cmNjKVlVWTIsIGNvbG9yLW1hdHJpeD0oc3RyaW5nKXNkdHYsIFwKLSAqIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzIsIHdpZHRoPShpbnQpMzIwLCBoZWlnaHQ9KGludCkyNDAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMzAvMSIgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBzaG1zcmMgc29ja2V0LXBhdGg9L3RtcC9ibGFoICEgXAorICogInZpZGVvL3gteXV2LCBmb3JtYXQ9WVVZMiwgY29sb3ItbWF0cml4PXNkdHYsIFwKKyAqIGNocm9tYS1zaXRlPW1wZWcyLCB3aWR0aD0oaW50KTMyMCwgaGVpZ2h0PShpbnQpMjQwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwLzEiICEgYXV0b3ZpZGVvc2luawogICogXXwgUmVuZGVyIHZpZGVvIGZyb20gc2htIGJ1ZmZlcnMuCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9zeXMvdGlueWFsc2EvTWFrZWZpbGUuYW0gYi9zeXMvdGlueWFsc2EvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ5MmVjOAotLS0gL2Rldi9udWxsCisrKyBiL3N5cy90aW55YWxzYS9NYWtlZmlsZS5hbQpAQCAtMCwwICsxLDE5IEBACisKK3BsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdHRpbnlhbHNhLmxhCisKK2xpYmdzdHRpbnlhbHNhX2xhX1NPVVJDRVMgPSB0aW55YWxzYXNpbmsuYyAJXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbnlhbHNhLmMKKworbGliZ3N0dGlueWFsc2FfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSBcCisgICAgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucworbGliZ3N0dGlueWFsc2FfbGFfTElCQUREID0gICAgICAgICAgICBcCisgICAgLWx0aW55YWxzYSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAtbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AICAgICAgXAorICAgICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAgICAgICAgICBcCisgICAgJChHU1RfQkFTRV9MSUJTKSAgICAgICAgICAgICAgICAgIFwKKyAgICAkKEdTVF9MSUJTKQorbGliZ3N0dGlueWFsc2FfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQorbGliZ3N0dGlueWFsc2FfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKKworbm9pbnN0X0hFQURFUlMgPSB0aW55YWxzYXNpbmsuaAorCmRpZmYgLS1naXQgYS9nc3QvbGl2ZWFkZGVyL01ha2VmaWxlLmluIGIvc3lzL3RpbnlhbHNhL01ha2VmaWxlLmluCnNpbWlsYXJpdHkgaW5kZXggODYlCmNvcHkgZnJvbSBnc3QvbGl2ZWFkZGVyL01ha2VmaWxlLmluCmNvcHkgdG8gc3lzL3RpbnlhbHNhL01ha2VmaWxlLmluCmluZGV4IGJhOWU1YTIuLmUxM2M2MDYgMTAwNjQ0Ci0tLSBhL2dzdC9saXZlYWRkZXIvTWFrZWZpbGUuaW4KKysrIGIvc3lzL3RpbnlhbHNhL01ha2VmaWxlLmluCkBAIC05MCw3ICs5MCw3IEBACiBidWlsZF90cmlwbGV0ID0gQGJ1aWxkQAogaG9zdF90cmlwbGV0ID0gQGhvc3RACiB0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACi1zdWJkaXIgPSBnc3QvbGl2ZWFkZGVyCitzdWJkaXIgPSBzeXMvdGlueWFsc2EKIEFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKIGFtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hYy1leHBhbmQubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWF1dG8tYWx0Lm00IFwKQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTY0LDE4ICsxNjMsMTkgQEAKIGFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChwbHVnaW5kaXIpIgogTFRMSUJSQVJJRVMgPSAkKHBsdWdpbl9MVExJQlJBUklFUykKIGFtX19ERVBFTkRFTkNJRVNfMSA9Ci1saWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKK2xpYmdzdHRpbnlhbHNhX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKQotYW1fbGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMgPSBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvCi1saWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpCithbV9saWJnc3R0aW55YWxzYV9sYV9PQkpFQ1RTID0gbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2FzaW5rLmxvIFwKKwlsaWJnc3R0aW55YWxzYV9sYS10aW55YWxzYS5sbworbGliZ3N0dGlueWFsc2FfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0dGlueWFsc2FfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKIGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9sdF8wID0gLS1zaWxlbnQKIGFtX192X2x0XzEgPSAKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKLQkkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayBcCi0JJChDQ0xEKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSBcCi0JJChsaWJnc3RsaXZlYWRkZXJfbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAorbGliZ3N0dGlueWFsc2FfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCisJJChsaWJnc3R0aW55YWxzYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayBcCisJJChDQ0xEKSAkKGxpYmdzdHRpbnlhbHNhX2xhX0NGTEFHUykgJChDRkxBR1MpIFwKKwkkKGxpYmdzdHRpbnlhbHNhX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKIEFNX1ZfUCA9ICQoYW1fX3ZfUF9AQU1fVkApCiBhbV9fdl9QXyA9ICQoYW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkKIGFtX192X1BfMCA9IGZhbHNlCkBAIC0yMTAsOCArMjEwLDggQEAKIGFtX192X0NDTERfID0gJChhbV9fdl9DQ0xEX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOwogYW1fX3ZfQ0NMRF8xID0gCi1TT1VSQ0VTID0gJChsaWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUykKLURJU1RfU09VUkNFUyA9ICQobGliZ3N0bGl2ZWFkZGVyX2xhX1NPVVJDRVMpCitTT1VSQ0VTID0gJChsaWJnc3R0aW55YWxzYV9sYV9TT1VSQ0VTKQorRElTVF9TT1VSQ0VTID0gJChsaWJnc3R0aW55YWxzYV9sYV9TT1VSQ0VTKQogYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCiAgIGNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAogICAgIG58bm98Tk8pIGZhbHNlOzsgXApAQCAtMjc0LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NjEsMTYgKzc3NiwyMyBAQAogdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RsaXZlYWRkZXIubGEKLWxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTID0gbGl2ZWFkZGVyLmMKLWxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSUJBREQgPSBcCi0JJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykKK3BsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdHRpbnlhbHNhLmxhCitsaWJnc3R0aW55YWxzYV9sYV9TT1VSQ0VTID0gdGlueWFsc2FzaW5rLmMgCVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW55YWxzYS5jCiAKLWxpYmdzdGxpdmVhZGRlcl9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCi1saWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKLW5vaW5zdF9IRUFERVJTID0gbGl2ZWFkZGVyLmgKK2xpYmdzdHRpbnlhbHNhX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgXAorICAgIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMKKworbGliZ3N0dGlueWFsc2FfbGFfTElCQUREID0gXAorICAgIC1sdGlueWFsc2EgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCAgICAgIFwKKyAgICAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgICAgICAgICAgXAorICAgICQoR1NUX0JBU0VfTElCUykgICAgICAgICAgICAgICAgICBcCisgICAgJChHU1RfTElCUykKKworbGliZ3N0dGlueWFsc2FfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQorbGliZ3N0dGlueWFsc2FfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKK25vaW5zdF9IRUFERVJTID0gdGlueWFsc2FzaW5rLmgKIGFsbDogYWxsLWFtCiAKIC5TVUZGSVhFUzoKQEAgLTc4NCw5ICs4MDYsOSBAQAogCSAgICAgIGV4aXQgMTs7IFwKIAkgIGVzYWM7IFwKIAlkb25lOyBcCi0JZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L2xpdmVhZGRlci9NYWtlZmlsZSc7IFwKKwllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBzeXMvdGlueWFsc2EvTWFrZWZpbGUnOyBcCiAJJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAotCSAgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L2xpdmVhZGRlci9NYWtlZmlsZQorCSAgJChBVVRPTUFLRSkgLS1nbnUgc3lzL3RpbnlhbHNhL01ha2VmaWxlCiBNYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCiAJQGNhc2UgJyQ/JyBpbiBcCiAJICAqY29uZmlnLnN0YXR1cyopIFwKQEAgLTg0MCw4ICs4NjIsOCBAQAogCSAgcm0gLWYgJCR7bG9jc307IFwKIAl9CiAKLWxpYmdzdGxpdmVhZGRlci5sYTogJChsaWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdGxpdmVhZGRlcl9sYV9ERVBFTkRFTkNJRVMpIAotCSQoQU1fVl9DQ0xEKSQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCQUREKSAkKExJQlMpCitsaWJnc3R0aW55YWxzYS5sYTogJChsaWJnc3R0aW55YWxzYV9sYV9PQkpFQ1RTKSAkKGxpYmdzdHRpbnlhbHNhX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3R0aW55YWxzYV9sYV9ERVBFTkRFTkNJRVMpIAorCSQoQU1fVl9DQ0xEKSQobGliZ3N0dGlueWFsc2FfbGFfTElOSykgLXJwYXRoICQocGx1Z2luZGlyKSAkKGxpYmdzdHRpbnlhbHNhX2xhX09CSkVDVFMpICQobGliZ3N0dGlueWFsc2FfbGFfTElCQUREKSAkKExJQlMpCiAKIG1vc3RseWNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICouJChPQkpFWFQpCkBAIC04NDksNyArODcxLDggQEAKIGRpc3RjbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLnRhYi5jCiAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2EuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R0aW55YWxzYV9sYS10aW55YWxzYXNpbmsuUGxvQGFtX19xdW90ZUAKIAogLmMubzoKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQylkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5vJCR8fCdgO1wKQEAgLTg3NSwxMiArODk4LDE5IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMVENPTVBJTEUpIC1jIC1vICRAICQ8CiAKLWxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG86IGxpdmVhZGRlci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5UcG8gLWMgLW8gbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbyBgdGVzdCAtZiAnbGl2ZWFkZGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGxpdmVhZGRlci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlRwbyAkKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdsaXZlYWRkZXIuYycgb2JqZWN0PSdsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3R0aW55YWxzYV9sYS10aW55YWxzYXNpbmsubG86IHRpbnlhbHNhc2luay5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dGlueWFsc2FfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dGlueWFsc2FfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhc2luay5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2FzaW5rLlRwbyAtYyAtbyBsaWJnc3R0aW55YWxzYV9sYS10aW55YWxzYXNpbmsubG8gYHRlc3QgLWYgJ3RpbnlhbHNhc2luay5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B0aW55YWxzYXNpbmsuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2FzaW5rLlRwbyAkKERFUERJUikvbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2FzaW5rLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3RpbnlhbHNhc2luay5jJyBvYmplY3Q9J2xpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhc2luay5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbyBgdGVzdCAtZiAnbGl2ZWFkZGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGxpdmVhZGRlci5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dGlueWFsc2FfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dGlueWFsc2FfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2FzaW5rLmxvIGB0ZXN0IC1mICd0aW55YWxzYXNpbmsuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdGlueWFsc2FzaW5rLmMKKworbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2EubG86IHRpbnlhbHNhLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R0aW55YWxzYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R0aW55YWxzYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2EubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhLlRwbyAtYyAtbyBsaWJnc3R0aW55YWxzYV9sYS10aW55YWxzYS5sbyBgdGVzdCAtZiAndGlueWFsc2EuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdGlueWFsc2EuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2EuVHBvICQoREVQRElSKS9saWJnc3R0aW55YWxzYV9sYS10aW55YWxzYS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSd0aW55YWxzYS5jJyBvYmplY3Q9J2xpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dGlueWFsc2FfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dGlueWFsc2FfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2EubG8gYHRlc3QgLWYgJ3RpbnlhbHNhLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHRpbnlhbHNhLmMKIAogbW9zdGx5Y2xlYW4tbGlidG9vbDoKIAktcm0gLWYgKi5sbwpkaWZmIC0tZ2l0IGEvZ3N0L3J0cC9nc3RydHAuYyBiL3N5cy90aW55YWxzYS90aW55YWxzYS5jCnNpbWlsYXJpdHkgaW5kZXggNjklCnJlbmFtZSBmcm9tIGdzdC9ydHAvZ3N0cnRwLmMKcmVuYW1lIHRvIHN5cy90aW55YWxzYS90aW55YWxzYS5jCmluZGV4IGZkMDc3NDguLjViNjc2YWIgMTAwNjQ0Ci0tLSBhL2dzdC9ydHAvZ3N0cnRwLmMKKysrIGIvc3lzL3RpbnlhbHNhL3RpbnlhbHNhLmMKQEAgLTEsNSArMSw2IEBACiAvKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgPDE5OTk+IEVyaWsgV2FsdGhpbnNlbiA8b21lZ2FAY3NlLm9naS5lZHU+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2VudHJpY3VsYXIgTHRkLgorICogQXV0aG9yOiBBcnVuIFJhZ2hhdmFuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDI3ICsyMiwyMyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2VuZGlmCiAKLSNpbmNsdWRlIDxnc3QvdGFnL3RhZy5oPgorI2luY2x1ZGUgPGdzdC9nc3QuaD4KIAotI2luY2x1ZGUgImdzdHJ0cGgyNjVkZXBheS5oIgotI2luY2x1ZGUgImdzdHJ0cGgyNjVwYXkuaCIKKyNpbmNsdWRlICJ0aW55YWxzYXNpbmsuaCIKIAogc3RhdGljIGdib29sZWFuCiBwbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQogewotICBnc3RfdGFnX2ltYWdlX3R5cGVfZ2V0X3R5cGUgKCk7Ci0KLSAgaWYgKCFnc3RfcnRwX2gyNjVfZGVwYXlfcGx1Z2luX2luaXQgKHBsdWdpbikpCisgIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgInRpbnlhbHNhc2luayIsIEdTVF9SQU5LX05PTkUsCisgICAgICAgICAgR1NUX1RZUEVfVElOWUFMU0FfU0lOSykpIHsKICAgICByZXR1cm4gRkFMU0U7Ci0KLSAgaWYgKCFnc3RfcnRwX2gyNjVfcGF5X3BsdWdpbl9pbml0IChwbHVnaW4pKQotICAgIHJldHVybiBGQUxTRTsKKyAgfQogCiAgIHJldHVybiBUUlVFOwogfQogCiBHU1RfUExVR0lOX0RFRklORSAoR1NUX1ZFUlNJT05fTUFKT1IsCiAgICAgR1NUX1ZFUlNJT05fTUlOT1IsCi0gICAgcnRwYmFkLAotICAgICJSZWFsLXRpbWUgcHJvdG9jb2wgcGx1Z2lucyIsCi0gICAgcGx1Z2luX2luaXQsIFZFUlNJT04sICJMR1BMIiwgR1NUX1BBQ0tBR0VfTkFNRSwgR1NUX1BBQ0tBR0VfT1JJR0lOKTsKKyAgICB0aW55YWxzYSwKKyAgICAidGlueWFsc2EgcGx1Z2luIGxpYnJhcnkiLAorICAgIHBsdWdpbl9pbml0LCBWRVJTSU9OLCBHU1RfTElDRU5TRSwgR1NUX1BBQ0tBR0VfTkFNRSwgR1NUX1BBQ0tBR0VfT1JJR0lOKQpkaWZmIC0tZ2l0IGEvc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5jIGIvc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyOTc1NWUKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvdGlueWFsc2EvdGlueWFsc2FzaW5rLmMKQEAgLTAsMCArMSw1MDIgQEAKKy8qIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE2IENlbnRyaWN1bGFyIEx0ZC4KKyAqIEF1dGhvcjogQXJ1biBSYWdoYXZhbiA8YXJ1bkBjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtdGlueWFsc2FzaW5rCisgKiBAc2VlX2Fsc286IGFsc2FzaW5rCisgKgorICogVGhpcyBlbGVtZW50IHJlbmRlcnMgcmF3IGF1ZGlvIHNhbXBsZXMgdXNpbmcgdGhlIEFMU0EgYXVkaW8gQVBJIHZpYSB0aGUKKyAqIHRpbnlhbHNhIGxpYnJhcnkuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB1cmlkZWNvZGViaW4gdXJpPWZpbGU6Ly8vcGF0aC90by9hdWRpby5vZ2cgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgdGlueWFsc2FzaW5rCisgKiBdfCBQbGF5IGFuIE9nZy9Wb3JiaXMgZmlsZSBhbmQgb3V0cHV0IGF1ZGlvIHZpYSBBTFNBIHVzaW5nIHRoZSB0aW55YWxzYQorICogbGlicmFyeS4KKyAqIDwvcmVmc2VjdDI+CisgKi8KKworI2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb2Jhc2VzaW5rLmg+CisKKyNpbmNsdWRlIDx0aW55YWxzYS9hc291bmRsaWIuaD4KKworI2luY2x1ZGUgInRpbnlhbHNhc2luay5oIgorCisvKiBIYXJkY29kaW5nIHRoZXNlIGJpdG1hc2sgdmFsdWVzIHJhdGhlciB0aGFuIGluY2x1ZGluZyBhIGtlcm5lbCBoZWFkZXIgKi8KKyNkZWZpbmUgU05EUlZfUENNX0ZPUk1BVF9TOCAwCisjZGVmaW5lIFNORFJWX1BDTV9GT1JNQVRfUzE2X0xFIDIKKyNkZWZpbmUgU05EUlZfUENNX0ZPUk1BVF9TMjRfTEUgNgorI2RlZmluZSBTTkRSVl9QQ01fRk9STUFUX1MzMl9MRSAxMAorI2RlZmluZSBTTkRSVl9QQ01fRk9STUFUX0FOWSAgICAgICAgICAgIFwKKyAgKCgxIDw8IFNORFJWX1BDTV9GT1JNQVRfUzgpICAgICB8ICAgICBcCisgICAoMSA8PCBTTkRSVl9QQ01fRk9STUFUX1MxNl9MRSkgfCAgICAgXAorICAgKDEgPDwgU05EUlZfUENNX0ZPUk1BVF9TMjRfTEUpIHwgICAgIFwKKyAgICgxIDw8IFNORFJWX1BDTV9GT1JNQVRfUzMyX0xFKSkKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAodGlueWFsc2Ffc2lua19kZWJ1Zyk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCB0aW55YWxzYV9zaW5rX2RlYnVnCisKKyNkZWZpbmUgcGFyZW50X2NsYXNzIGdzdF90aW55YWxzYV9zaW5rX3BhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRSAoR3N0VGlueWFsc2FTaW5rLCBnc3RfdGlueWFsc2Ffc2luaywgR1NUX1RZUEVfQVVESU9fU0lOSyk7CisKK2VudW0KK3sKKyAgUFJPUF8wLAorICBQUk9QX0NBUkQsCisgIFBST1BfREVWSUNFLAorICBQUk9QX0xBU1QKK307CisKKyNkZWZpbmUgREVGQVVMVF9DQVJEIDAKKyNkZWZpbmUgREVGQVVMVF9ERVZJQ0UgMAorCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua190ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCisgICAgR1NUX1BBRF9TSU5LLAorICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUyAoImF1ZGlvL3gtcmF3LCAiCisgICAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSB7IFMxNkxFLCBTMzJMRSwgUzI0XzMyTEUsIFM4IH0sICIKKyAgICAgICAgImNoYW5uZWxzID0gKGludCkgWyAxLCBNQVggXSwgIgorICAgICAgICAicmF0ZSA9IChpbnQpIFsgMSwgTUFYIF0sICIgImxheW91dCA9IChzdHJpbmcpIGludGVybGVhdmVkIikpOworCitzdGF0aWMgdm9pZAorZ3N0X3RpbnlhbHNhX3NpbmtfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdFRpbnlhbHNhU2luayAqc2luayA9IEdTVF9USU5ZQUxTQV9TSU5LIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9DQVJEOgorICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIHNpbmstPmNhcmQpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBST1BfREVWSUNFOgorICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIHNpbmstPmRldmljZSk7CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF90aW55YWxzYV9zaW5rX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3RUaW55YWxzYVNpbmsgKnNpbmsgPSBHU1RfVElOWUFMU0FfU0lOSyAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfQ0FSRDoKKyAgICAgIHNpbmstPmNhcmQgPSBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgUFJPUF9ERVZJQ0U6CisgICAgICBzaW5rLT5kZXZpY2UgPSBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSk7CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIEdzdENhcHMgKgorZ3N0X3RpbnlhbHNhX3NpbmtfZ2V0Y2FwcyAoR3N0QmFzZVNpbmsgKiBic2luaywgR3N0Q2FwcyAqIGZpbHRlcikKK3sKKyAgR3N0VGlueWFsc2FTaW5rICpzaW5rID0gR1NUX1RJTllBTFNBX1NJTksgKGJzaW5rKTsKKyAgR3N0Q2FwcyAqY2FwcyA9IE5VTEw7CisgIEdWYWx1ZSBmb3JtYXRzID0geyAwLCB9OworICBHVmFsdWUgZm9ybWF0ID0geyAwLCB9OworICBzdHJ1Y3QgcGNtX3BhcmFtcyAqcGFyYW1zID0gTlVMTDsKKyAgc3RydWN0IHBjbV9tYXNrICptYXNrOworICBpbnQgcmF0ZV9taW4sIHJhdGVfbWF4LCBjaGFubmVsc19taW4sIGNoYW5uZWxzX21heDsKKyAgZ3VpbnQxNiBtOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNpbmssICJRdWVyeWluZyBjYXBzIik7CisKKyAgR1NUX09CSkVDVF9MT0NLIChzaW5rKTsKKworICBpZiAoc2luay0+Y2FjaGVkX2NhcHMpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiUmV0dXJuaW5nIGNhY2hlZCBjYXBzIik7CisgICAgY2FwcyA9IGdzdF9jYXBzX3JlZiAoc2luay0+Y2FjaGVkX2NhcHMpOworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIGlmIChzaW5rLT5wY20pIHsKKyAgICAvKiBXZSBjYW4ndCBxdWVyeSB0aGUgZGV2aWNlIHdoaWxlIGl0J3Mgb3Blbiwgc28gcmV0dXJuIGN1cnJlbnQgY2FwcyAqLworICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9CQVNFX1NJTktfUEFEIChic2luaykpOworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIHBhcmFtcyA9IHBjbV9wYXJhbXNfZ2V0IChzaW5rLT5jYXJkLCBzaW5rLT5kZXZpY2UsIFBDTV9PVVQpOworICBpZiAoIXBhcmFtcykgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNpbmssICJDb3VsZCBub3QgZ2V0IFBDTSBwYXJhbXMiKTsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBtYXNrID0gcGNtX3BhcmFtc19nZXRfbWFzayAocGFyYW1zLCBQQ01fUEFSQU1fRk9STUFUKTsKKyAgbSA9IChtYXNrLT5iaXRzWzFdIDw8IDgpIHwgbWFzay0+Yml0c1swXTsKKworICBpZiAoIShtICYgU05EUlZfUENNX0ZPUk1BVF9BTlkpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2luaywgIkNvdWxkIG5vdCBmaW5kIGFueSBzdXBwb3J0ZWQgZm9ybWF0Iik7CisgICAgZ290byBkb25lOworICB9CisKKyAgY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUgKCJhdWRpby94LXJhdyIpOworCisgIGdfdmFsdWVfaW5pdCAoJmZvcm1hdHMsIEdTVF9UWVBFX0xJU1QpOworICBnX3ZhbHVlX2luaXQgKCZmb3JtYXQsIEdfVFlQRV9TVFJJTkcpOworCisgIGlmIChtICYgKDEgPDwgU05EUlZfUENNX0ZPUk1BVF9TOCkpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmZm9ybWF0LCAiUzgiKTsKKyAgICBnc3RfdmFsdWVfbGlzdF9wcmVwZW5kX3ZhbHVlICgmZm9ybWF0cywgJmZvcm1hdCk7CisgIH0KKyAgaWYgKG0gJiAoMSA8PCBTTkRSVl9QQ01fRk9STUFUX1MxNl9MRSkpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmZm9ybWF0LCAiUzE2TEUiKTsKKyAgICBnc3RfdmFsdWVfbGlzdF9wcmVwZW5kX3ZhbHVlICgmZm9ybWF0cywgJmZvcm1hdCk7CisgIH0KKyAgaWYgKG0gJiAoMSA8PCBTTkRSVl9QQ01fRk9STUFUX1MyNF9MRSkpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmZm9ybWF0LCAiUzI0XzMyTEUiKTsKKyAgICBnc3RfdmFsdWVfbGlzdF9wcmVwZW5kX3ZhbHVlICgmZm9ybWF0cywgJmZvcm1hdCk7CisgIH0KKyAgaWYgKG0gJiAoMSA8PCBTTkRSVl9QQ01fRk9STUFUX1MzMl9MRSkpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmZm9ybWF0LCAiUzMyTEUiKTsKKyAgICBnc3RfdmFsdWVfbGlzdF9wcmVwZW5kX3ZhbHVlICgmZm9ybWF0cywgJmZvcm1hdCk7CisgIH0KKworICBnc3RfY2Fwc19zZXRfdmFsdWUgKGNhcHMsICJmb3JtYXQiLCAmZm9ybWF0cyk7CisKKyAgZ192YWx1ZV91bnNldCAoJmZvcm1hdCk7CisgIGdfdmFsdWVfdW5zZXQgKCZmb3JtYXRzKTsKKworICAvKiBUaGlzIGlzIGEgYml0IG9mIGEgbGllLCBzaW5jZSB0aGUgZGV2aWNlIGxpa2VseSBvbmx5IHN1cHBvcnRzIHNvbWUKKyAgICogc3RhbmRhcmQgcmF0ZXMgaW4gdGhpcyByYW5nZS4gV2Ugc2hvdWxkIHByb2JhYmx5IGZpbHRlciB0aGUgcmFuZ2UgdG8KKyAgICogdGhvc2UsIHN0YW5kYXJkIGF1ZGlvIHJhdGVzIGJ1dCBldmVuIHRoYXQgaXNuJ3QgZ3VhcmFudGVlZCB0byBiZSBhY2N1cmF0ZS4KKyAgICovCisgIHJhdGVfbWluID0gcGNtX3BhcmFtc19nZXRfbWluIChwYXJhbXMsIFBDTV9QQVJBTV9SQVRFKTsKKyAgcmF0ZV9tYXggPSBwY21fcGFyYW1zX2dldF9tYXggKHBhcmFtcywgUENNX1BBUkFNX1JBVEUpOworCisgIGlmIChyYXRlX21pbiA9PSByYXRlX21heCkKKyAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAicmF0ZSIsIEdfVFlQRV9JTlQsIHJhdGVfbWluLCBOVUxMKTsKKyAgZWxzZQorICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJyYXRlIiwgR1NUX1RZUEVfSU5UX1JBTkdFLCByYXRlX21pbiwgcmF0ZV9tYXgsCisgICAgICAgIE5VTEwpOworCisgIGNoYW5uZWxzX21pbiA9IHBjbV9wYXJhbXNfZ2V0X21pbiAocGFyYW1zLCBQQ01fUEFSQU1fQ0hBTk5FTFMpOworICBjaGFubmVsc19tYXggPSBwY21fcGFyYW1zX2dldF9tYXggKHBhcmFtcywgUENNX1BBUkFNX0NIQU5ORUxTKTsKKworICBpZiAoY2hhbm5lbHNfbWluID09IGNoYW5uZWxzX21heCkKKyAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCBjaGFubmVsc19taW4sIE5VTEwpOworICBlbHNlCisgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgImNoYW5uZWxzIiwgR1NUX1RZUEVfSU5UX1JBTkdFLCBjaGFubmVsc19taW4sCisgICAgICAgIGNoYW5uZWxzX21heCwgTlVMTCk7CisKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJnNpbmstPmNhY2hlZF9jYXBzLCBjYXBzKTsKKworZG9uZToKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHNpbmspOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNpbmssICJHb3QgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CisKKyAgaWYgKGNhcHMgJiYgZmlsdGVyKSB7CisgICAgR3N0Q2FwcyAqaW50ZXJzZWN0aW9uID0KKyAgICAgICAgZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGZpbHRlciwgY2FwcywgR1NUX0NBUFNfSU5URVJTRUNUX0ZJUlNUKTsKKworICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKKyAgICBjYXBzID0gaW50ZXJzZWN0aW9uOworICB9CisKKyAgaWYgKHBhcmFtcykKKyAgICBwY21fcGFyYW1zX2ZyZWUgKHBhcmFtcyk7CisKKyAgcmV0dXJuIGNhcHM7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3RpbnlhbHNhX3Npbmtfb3BlbiAoR3N0QXVkaW9TaW5rICogYXNpbmspCit7CisgIC8qIE5vdGhpbmcgdG8gZG8gaGVyZSwgd2UgY2FuJ3QgY2FsbCBwY21fb3BlbigpIHRpbGwgd2UgaGF2ZSBzdHJlYW0KKyAgICogcGFyYW1ldGVycyBhdmFpbGFibGUgKi8KKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBlbnVtIHBjbV9mb3JtYXQKK3BjbV9mb3JtYXRfZnJvbV9nc3QgKEdzdEF1ZGlvRm9ybWF0IGZvcm1hdCkKK3sKKyAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfUzg6CisgICAgICByZXR1cm4gUENNX0ZPUk1BVF9TODsKKworICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMTZMRToKKyAgICAgIHJldHVybiBQQ01fRk9STUFUX1MxNl9MRTsKKworICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMjRfMzJMRToKKyAgICAgIHJldHVybiBQQ01fRk9STUFUX1MyNF9MRTsKKworICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMzJMRToKKyAgICAgIHJldHVybiBQQ01fRk9STUFUX1MzMl9MRTsKKworICAgIGRlZmF1bHQ6CisgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorcGNtX2NvbmZpZ19mcm9tX3NwZWMgKHN0cnVjdCBwY21fY29uZmlnICpjb25maWcsCisgICAgY29uc3QgR3N0QXVkaW9SaW5nQnVmZmVyU3BlYyAqIHNwZWMpCit7CisgIGdpbnQ2NCBmcmFtZXM7CisKKyAgY29uZmlnLT5mb3JtYXQgPSBwY21fZm9ybWF0X2Zyb21fZ3N0IChHU1RfQVVESU9fSU5GT19GT1JNQVQgKCZzcGVjLT5pbmZvKSk7CisgIGNvbmZpZy0+Y2hhbm5lbHMgPSBHU1RfQVVESU9fSU5GT19DSEFOTkVMUyAoJnNwZWMtPmluZm8pOworICBjb25maWctPnJhdGUgPSBHU1RfQVVESU9fSU5GT19SQVRFICgmc3BlYy0+aW5mbyk7CisKKyAgZ3N0X2F1ZGlvX2luZm9fY29udmVydCAoJnNwZWMtPmluZm8sCisgICAgICBHU1RfRk9STUFUX1RJTUUsIHNwZWMtPmxhdGVuY3lfdGltZSAqIEdTVF9VU0VDT05ELAorICAgICAgR1NUX0ZPUk1BVF9ERUZBVUxUIC8qIGZyYW1lcyAqLyAsICZmcmFtZXMpOworCisgIGNvbmZpZy0+cGVyaW9kX3NpemUgPSBmcmFtZXM7CisgIGNvbmZpZy0+cGVyaW9kX2NvdW50ID0gc3BlYy0+YnVmZmVyX3RpbWUgLyBzcGVjLT5sYXRlbmN5X3RpbWU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3RpbnlhbHNhX3NpbmtfcHJlcGFyZSAoR3N0QXVkaW9TaW5rICogYXNpbmssIEdzdEF1ZGlvUmluZ0J1ZmZlclNwZWMgKiBzcGVjKQoreworICBHc3RUaW55YWxzYVNpbmsgKnNpbmsgPSBHU1RfVElOWUFMU0FfU0lOSyAoYXNpbmspOworICBzdHJ1Y3QgcGNtX2NvbmZpZyBjb25maWcgPSB7IDAsIH07CisgIHN0cnVjdCBwY21fcGFyYW1zICpwYXJhbXMgPSBOVUxMOworICBpbnQgcGVyaW9kX3NpemVfbWluLCBwZXJpb2Rfc2l6ZV9tYXg7CisgIGludCBwZXJpb2RzX21pbiwgcGVyaW9kc19tYXg7CisKKyAgcGNtX2NvbmZpZ19mcm9tX3NwZWMgKCZjb25maWcsIHNwZWMpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNpbmssICJSZXF1ZXN0aW5nICV1IHBlcmlvZHMgb2YgJXUgZnJhbWVzIiwKKyAgICAgIGNvbmZpZy5wZXJpb2RfY291bnQsIGNvbmZpZy5wZXJpb2Rfc2l6ZSk7CisKKyAgcGFyYW1zID0gcGNtX3BhcmFtc19nZXQgKHNpbmstPmNhcmQsIHNpbmstPmRldmljZSwgUENNX09VVCk7CisgIGlmICghcGFyYW1zKQorICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNpbmssICJDb3VsZCBub3QgZ2V0IFBDTSBwYXJhbXMiKTsKKworICBwZXJpb2Rfc2l6ZV9taW4gPSBwY21fcGFyYW1zX2dldF9taW4gKHBhcmFtcywgUENNX1BBUkFNX1BFUklPRF9TSVpFKTsKKyAgcGVyaW9kX3NpemVfbWF4ID0gcGNtX3BhcmFtc19nZXRfbWF4IChwYXJhbXMsIFBDTV9QQVJBTV9QRVJJT0RfU0laRSk7CisgIHBlcmlvZHNfbWluID0gcGNtX3BhcmFtc19nZXRfbWluIChwYXJhbXMsIFBDTV9QQVJBTV9QRVJJT0RTKTsKKyAgcGVyaW9kc19tYXggPSBwY21fcGFyYW1zX2dldF9tYXggKHBhcmFtcywgUENNX1BBUkFNX1BFUklPRFMpOworCisgIHBjbV9wYXJhbXNfZnJlZSAocGFyYW1zKTsKKworICAvKiBTbmFwIHBlcmlvZCBzaXplL2NvdW50IHRvIHRoZSBwZXJtaXR0ZWQgcmFuZ2UgKi8KKyAgY29uZmlnLnBlcmlvZF9zaXplID0KKyAgICAgIENMQU1QIChjb25maWcucGVyaW9kX3NpemUsIHBlcmlvZF9zaXplX21pbiwgcGVyaW9kX3NpemVfbWF4KTsKKyAgY29uZmlnLnBlcmlvZF9jb3VudCA9IENMQU1QIChjb25maWcucGVyaW9kX2NvdW50LCBwZXJpb2RzX21pbiwgcGVyaW9kc19tYXgpOworCisgIC8qIG11dGV4IHdpdGggZ2V0Y2FwcyAqLworICBHU1RfT0JKRUNUX0xPQ0sgKHNpbmspOworCisgIHNpbmstPnBjbSA9IHBjbV9vcGVuIChzaW5rLT5jYXJkLCBzaW5rLT5kZXZpY2UsIFBDTV9PVVQgfCBQQ01fTk9SRVNUQVJULAorICAgICAgJmNvbmZpZyk7CisKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHNpbmspOworCisgIGlmICghc2luay0+cGNtIHx8ICFwY21faXNfcmVhZHkgKHNpbmstPnBjbSkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzaW5rLCAiQ291bGQgbm90IG9wZW4gZGV2aWNlOiAlcyIsCisgICAgICAgIHBjbV9nZXRfZXJyb3IgKHNpbmstPnBjbSkpOworICAgIGdvdG8gZmFpbDsKKyAgfQorCisgIGlmIChwY21fcHJlcGFyZSAoc2luay0+cGNtKSA8IDApIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzaW5rLCAiQ291bGQgbm90IHByZXBhcmUgZGV2aWNlOiAlcyIsCisgICAgICAgIHBjbV9nZXRfZXJyb3IgKHNpbmstPnBjbSkpOworICAgIGdvdG8gZmFpbDsKKyAgfQorCisgIHNwZWMtPnNlZ3NpemUgPSBwY21fZnJhbWVzX3RvX2J5dGVzIChzaW5rLT5wY20sIGNvbmZpZy5wZXJpb2Rfc2l6ZSk7CisgIHNwZWMtPnNlZ3RvdGFsID0gY29uZmlnLnBlcmlvZF9jb3VudDsKKworICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiQ29uZmlndXJlZCBmb3IgJXUgcGVyaW9kcyBvZiAldSBmcmFtZXMiLAorICAgICAgY29uZmlnLnBlcmlvZF9jb3VudCwgY29uZmlnLnBlcmlvZF9zaXplKTsKKworICByZXR1cm4gVFJVRTsKKworZmFpbDoKKyAgaWYgKHNpbmstPnBjbSkKKyAgICBwY21fY2xvc2UgKHNpbmstPnBjbSk7CisKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF90aW55YWxzYV9zaW5rX3VucHJlcGFyZSAoR3N0QXVkaW9TaW5rICogYXNpbmspCit7CisgIEdzdFRpbnlhbHNhU2luayAqc2luayA9IEdTVF9USU5ZQUxTQV9TSU5LIChhc2luayk7CisKKyAgaWYgKHBjbV9zdG9wIChzaW5rLT5wY20pIDwgMCkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNpbmssICJDb3VsZCBub3Qgc3RvcCBkZXZpY2U6ICVzIiwKKyAgICAgICAgcGNtX2dldF9lcnJvciAoc2luay0+cGNtKSk7CisgIH0KKworICAvKiBtdXRleCB3aXRoIGdldGNhcHMgKi8KKyAgR1NUX09CSkVDVF9MT0NLIChzaW5rKTsKKworICBpZiAocGNtX2Nsb3NlIChzaW5rLT5wY20pKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2luaywgIkNvdWxkIG5vdCBjbG9zZSBkZXZpY2U6ICVzIiwKKyAgICAgICAgcGNtX2dldF9lcnJvciAoc2luay0+cGNtKSk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgc2luay0+cGNtID0gTlVMTDsKKworICBnc3RfY2Fwc19yZXBsYWNlICgmc2luay0+Y2FjaGVkX2NhcHMsIE5VTEwpOworCisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaW5rKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiRGV2aWNlIHVucHJlcGFyZWQiKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdGlueWFsc2Ffc2lua19jbG9zZSAoR3N0QXVkaW9TaW5rICogYXNpbmspCit7CisgIC8qIE5vdGhpbmcgdG8gZG8gaGVyZSwgc2VlIGdzdF90aW55YWxzYV9zaW5rX29wZW4oKSAqLworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdpbnQKK2dzdF90aW55YWxzYV9zaW5rX3dyaXRlIChHc3RBdWRpb1NpbmsgKiBhc2luaywgZ3BvaW50ZXIgZGF0YSwgZ3VpbnQgbGVuZ3RoKQoreworICBHc3RUaW55YWxzYVNpbmsgKnNpbmsgPSBHU1RfVElOWUFMU0FfU0lOSyAoYXNpbmspOworICBpbnQgcmV0OworCithZ2FpbjoKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgIlN0YXJ0aW5nIHdyaXRlIik7CisKKyAgcmV0ID0gcGNtX3dyaXRlIChzaW5rLT5wY20sIGRhdGEsIGxlbmd0aCk7CisgIGlmIChyZXQgPT0gLUVQSVBFKSB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzaW5rLCAiR290IGFuIHVuZGVycnVuIik7CisKKyAgICBpZiAocGNtX3ByZXBhcmUgKHNpbmstPnBjbSkgPCAwKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChzaW5rLCAiQ291bGQgbm90IHByZXBhcmUgZGV2aWNlOiAlcyIsCisgICAgICAgICAgcGNtX2dldF9lcnJvciAoc2luay0+cGNtKSk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZ290byBhZ2FpbjsKKworICB9IGVsc2UgaWYgKHJldCA8IDApIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzaW5rLCAiQ291bGQgbm90IHdyaXRlIGRhdGEgdG8gZGV2aWNlOiAlcyIsCisgICAgICAgIHBjbV9nZXRfZXJyb3IgKHNpbmstPnBjbSkpOworICAgIHJldHVybiAtMTsKKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNpbmssICJXcm90ZSAldSBieXRlcyIsIGxlbmd0aCk7CisKKyAgcmV0dXJuIGxlbmd0aDsKK30KKworc3RhdGljIHZvaWQKK2dzdF90aW55YWxzYV9zaW5rX3Jlc2V0IChHc3RBdWRpb1NpbmsgKiBhc2luaykKK3sKKyAgR3N0VGlueWFsc2FTaW5rICpzaW5rID0gR1NUX1RJTllBTFNBX1NJTksgKGFzaW5rKTsKKworICBpZiAocGNtX3N0b3AgKHNpbmstPnBjbSkgPCAwKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2luaywgIkNvdWxkIG5vdCBzdG9wIGRldmljZTogJXMiLAorICAgICAgICBwY21fZ2V0X2Vycm9yIChzaW5rLT5wY20pKTsKKyAgfQorCisgIGlmIChwY21fcHJlcGFyZSAoc2luay0+cGNtKSA8IDApIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzaW5rLCAiQ291bGQgbm90IHByZXBhcmUgZGV2aWNlOiAlcyIsCisgICAgICAgIHBjbV9nZXRfZXJyb3IgKHNpbmstPnBjbSkpOworICB9Cit9CisKK3N0YXRpYyBndWludAorZ3N0X3RpbnlhbHNhX3NpbmtfZGVsYXkgKEdzdEF1ZGlvU2luayAqIGFzaW5rKQoreworICBHc3RUaW55YWxzYVNpbmsgKnNpbmsgPSBHU1RfVElOWUFMU0FfU0lOSyAoYXNpbmspOworICBpbnQgZGVsYXk7CisKKyAgZGVsYXkgPSBwY21fZ2V0X2RlbGF5IChzaW5rLT5wY20pOworCisgIGlmIChkZWxheSA8IDApIHsKKyAgICAvKiBUaGlzIG1pZ2h0IGhhcHBlbiBiZWZvcmUgdGhlIHN0cmVhbSBoYXMgc3RhcnRlZCAqLworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNpbmssICJHb3QgbmVnYXRpdmUgZGVsYXkiKTsKKyAgICBkZWxheSA9IDA7CisgIH0gZWxzZQorICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNpbmssICJHb3QgZGVsYXkgb2YgJXUiLCBkZWxheSk7CisKKyAgcmV0dXJuIGRlbGF5OworfQorCitzdGF0aWMgdm9pZAorZ3N0X3RpbnlhbHNhX3NpbmtfY2xhc3NfaW5pdCAoR3N0VGlueWFsc2FTaW5rQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKyAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKKyAgR3N0QmFzZVNpbmtDbGFzcyAqYmFzZXNpbmtfY2xhc3MgPSBHU1RfQkFTRV9TSU5LX0NMQVNTIChrbGFzcyk7CisgIEdzdEF1ZGlvU2lua0NsYXNzICphdWRpb3NpbmtfY2xhc3MgPSBHU1RfQVVESU9fU0lOS19DTEFTUyAoa2xhc3MpOworCisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9CisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RpbnlhbHNhX3NpbmtfZ2V0X3Byb3BlcnR5KTsKKyAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0KKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGlueWFsc2Ffc2lua19zZXRfcHJvcGVydHkpOworCisgIGJhc2VzaW5rX2NsYXNzLT5nZXRfY2FwcyA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGlueWFsc2Ffc2lua19nZXRjYXBzKTsKKworICBhdWRpb3NpbmtfY2xhc3MtPm9wZW4gPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RpbnlhbHNhX3Npbmtfb3Blbik7CisgIGF1ZGlvc2lua19jbGFzcy0+cHJlcGFyZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGlueWFsc2Ffc2lua19wcmVwYXJlKTsKKyAgYXVkaW9zaW5rX2NsYXNzLT51bnByZXBhcmUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RpbnlhbHNhX3NpbmtfdW5wcmVwYXJlKTsKKyAgYXVkaW9zaW5rX2NsYXNzLT5jbG9zZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGlueWFsc2Ffc2lua19jbG9zZSk7CisgIGF1ZGlvc2lua19jbGFzcy0+d3JpdGUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RpbnlhbHNhX3Npbmtfd3JpdGUpOworICBhdWRpb3NpbmtfY2xhc3MtPnJlc2V0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90aW55YWxzYV9zaW5rX3Jlc2V0KTsKKyAgYXVkaW9zaW5rX2NsYXNzLT5kZWxheSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGlueWFsc2Ffc2lua19kZWxheSk7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZWxlbWVudF9jbGFzcywKKyAgICAgICJ0aW55YWxzYSBBdWRpbyBTaW5rIiwKKyAgICAgICJTaW5rL0F1ZGlvIiwgIlBsYXlzIGF1ZGlvIHRvIGFuIEFMU0EgZGV2aWNlIiwKKyAgICAgICJBcnVuIFJhZ2hhdmFuIDxhcnVuQGNlbnRyaWN1bGFyLmNvbT4iKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc2lua190ZW1wbGF0ZSkpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX0NBUkQsCisgICAgICBnX3BhcmFtX3NwZWNfdWludCAoImNhcmQiLCAiQ2FyZCIsICJUaGUgQUxTQSBjYXJkIHRvIHVzZSIsCisgICAgICAgICAgMCwgR19NQVhVSU5ULCBERUZBVUxUX0NBUkQsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfREVWSUNFLAorICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJkZXZpY2UiLCAiRGV2aWNlIiwgIlRoZSBBTFNBIGRldmljZSB0byB1c2UiLAorICAgICAgICAgIDAsIEdfTUFYVUlOVCwgREVGQVVMVF9DQVJELAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUICh0aW55YWxzYV9zaW5rX2RlYnVnLCAidGlueWFsc2FzaW5rIiwgMCwKKyAgICAgICJ0aW55YWxzYSBTaW5rIik7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdGlueWFsc2Ffc2lua19pbml0IChHc3RUaW55YWxzYVNpbmsgKiBzaW5rKQoreworICBzaW5rLT5jYXJkID0gREVGQVVMVF9DQVJEOworICBzaW5rLT5kZXZpY2UgPSBERUZBVUxUX0RFVklDRTsKKworICBzaW5rLT5jYWNoZWRfY2FwcyA9IE5VTEw7Cit9CmRpZmYgLS1naXQgYS9zeXMvdGlueWFsc2EvdGlueWFsc2FzaW5rLmggYi9zeXMvdGlueWFsc2EvdGlueWFsc2FzaW5rLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTZhZTNiZgotLS0gL2Rldi9udWxsCisrKyBiL3N5cy90aW55YWxzYS90aW55YWxzYXNpbmsuaApAQCAtMCwwICsxLDU3IEBACisvKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDZW50cmljdWxhciBMdGQuCisgKiBBdXRob3I6IEFydW4gUmFnaGF2YW4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fVElOWUFMU0FTSU5LX0hfXworI2RlZmluZSBfX1RJTllBTFNBU0lOS19IX18KKworI2luY2x1ZGUgPHRpbnlhbHNhL2Fzb3VuZGxpYi5oPgorCisjaW5jbHVkZSA8Z3N0L2F1ZGlvL2dzdGF1ZGlvc2luay5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfVElOWUFMU0FfU0lOSyBcCisgIChnc3RfdGlueWFsc2Ffc2lua19nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfVElOWUFMU0FfU0lOSyhvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX1RJTllBTFNBX1NJTkssR3N0VGlueWFsc2FTaW5rKSkKKyNkZWZpbmUgR1NUX1RJTllBTFNBX1NJTktfQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfVElOWUFMU0FfU0lOSyxHc3RUaW55YWxzYVNpbmtDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RUaW55YWxzYVNpbmsgR3N0VGlueWFsc2FTaW5rOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFRpbnlhbHNhU2lua0NsYXNzIEdzdFRpbnlhbHNhU2lua0NsYXNzOworCitzdHJ1Y3QgX0dzdFRpbnlhbHNhU2luayB7CisgIEdzdEF1ZGlvU2luayBwYXJlbnQ7CisKKyAgaW50IGNhcmQ7CisgIGludCBkZXZpY2U7CisKKyAgc3RydWN0IHBjbSAqcGNtOworCisgIEdzdENhcHMgKmNhY2hlZF9jYXBzOyAvKiBmb3IgcXVlcmllcyBtYWRlIHdoaWxlIHRoZSBkZXZpY2UgaXMgb3BlbiAqLworfTsKKworc3RydWN0IF9Hc3RUaW55YWxzYVNpbmtDbGFzcyB7CisgIEdzdEF1ZGlvU2lua0NsYXNzIHBhcmVudF9jbGFzczsKK307CisKK0dUeXBlIGdzdF90aW55YWxzYV9zaW5rX2dldF90eXBlICh2b2lkKTsKKworI2VuZGlmIC8qIF9fVElOWUFMU0FTSU5LX0hfXyAqLwpkaWZmIC0tZ2l0IGEvc3lzL3V2Y2gyNjQvTWFrZWZpbGUuaW4gYi9zeXMvdXZjaDI2NC9NYWtlZmlsZS5pbgppbmRleCA5NzNkYTAwLi5iMjM0M2Y5IDEwMDY0NAotLS0gYS9zeXMvdXZjaDI2NC9NYWtlZmlsZS5pbgorKysgYi9zeXMvdXZjaDI2NC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzksNiArMjc4LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTYsNiArMzE3LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjQsNyArMzI3LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQzLDggKzM0NSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjEsMTYgKzM2NCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTYsNiArNDAwLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIxLDYgKzQyNyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMiw2ICs1MzAsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM1LDggKzU0NCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1Miw2ICs1NTksOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA5LDE2ICs2MTgsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzAsNiArNjgxLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4MCw2ICs2OTIsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODksNiArNzAyLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNiw3ICs3NDEsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3N5cy91dmNoMjY0L2dzdHV2Y2gyNjRfbWpwZ2RlbXV4LmMgYi9zeXMvdXZjaDI2NC9nc3R1dmNoMjY0X21qcGdkZW11eC5jCmluZGV4IDk5NzM0YWQuLjFmOWIxYzQgMTAwNjQ0Ci0tLSBhL3N5cy91dmNoMjY0L2dzdHV2Y2gyNjRfbWpwZ2RlbXV4LmMKKysrIGIvc3lzL3V2Y2gyNjQvZ3N0dXZjaDI2NF9tanBnZGVtdXguYwpAQCAtMjk2LDggKzI5Niw3IEBACiAgIGlmIChzZWxmLT5wcml2LT5udjEyX2NhcHMpCiAgICAgZ3N0X2NhcHNfdW5yZWYgKHNlbGYtPnByaXYtPm52MTJfY2Fwcyk7CiAgIHNlbGYtPnByaXYtPm52MTJfY2FwcyA9IE5VTEw7Ci0gIGlmIChzZWxmLT5wcml2LT5jbG9ja19zYW1wbGVzKQotICAgIGdfZnJlZSAoc2VsZi0+cHJpdi0+Y2xvY2tfc2FtcGxlcyk7CisgIGdfZnJlZSAoc2VsZi0+cHJpdi0+Y2xvY2tfc2FtcGxlcyk7CiAgIHNlbGYtPnByaXYtPmNsb2NrX3NhbXBsZXMgPSBOVUxMOwogCiAgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5kaXNwb3NlIChvYmplY3QpOwpkaWZmIC0tZ2l0IGEvc3lzL3V2Y2gyNjQvZ3N0dXZjaDI2NF9zcmMuYyBiL3N5cy91dmNoMjY0L2dzdHV2Y2gyNjRfc3JjLmMKaW5kZXggOTRjMDlmYS4uZWFlN2Q4MiAxMDA2NDQKLS0tIGEvc3lzL3V2Y2gyNjQvZ3N0dXZjaDI2NF9zcmMuYworKysgYi9zeXMvdXZjaDI2NC9nc3R1dmNoMjY0X3NyYy5jCkBAIC0zMDQyLDggKzMwNDIsOCBAQAogICBpZiAoc2VsZi0+djRsMl9zcmMpIHsKICAgICBHc3RDYXBzICpmaWx0ZXI7CiAgICAgR3N0UGFkICp2NGxfcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHNlbGYtPnY0bDJfc3JjLCAic3JjIik7Ci0gICAgR3N0Q2FwcyAqdjRsX2NhcHMgPSBnc3RfcGFkX3F1ZXJ5X2NhcHMgKHY0bF9wYWQsIE5VTEwpOwotICAgIEdzdENhcHMgKm5ld19jYXBzID0gZ3N0X3V2Y19oMjY0X3NyY190cmFuc2Zvcm1fY2FwcyAoc2VsZiwgdjRsX2NhcHMpOworICAgIEdzdENhcHMgKnY0bF9jYXBzID0gTlVMTDsKKyAgICBHc3RDYXBzICpuZXdfY2FwcyA9IE5VTEw7CiAKICAgICBnc3RfcXVlcnlfcGFyc2VfY2FwcyAocXVlcnksICZmaWx0ZXIpOwogICAgIHY0bF9jYXBzID0gZ3N0X3BhZF9xdWVyeV9jYXBzICh2NGxfcGFkLCBmaWx0ZXIpOwpkaWZmIC0tZ2l0IGEvc3lzL3ZjZC9NYWtlZmlsZS5pbiBiL3N5cy92Y2QvTWFrZWZpbGUuaW4KaW5kZXggZWFjZjM4Mi4uMTlkMDlkZSAxMDA2NDQKLS0tIGEvc3lzL3ZjZC9NYWtlZmlsZS5pbgorKysgYi9zeXMvdmNkL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL3ZkcGF1L01ha2VmaWxlLmluIGIvc3lzL3ZkcGF1L01ha2VmaWxlLmluCmluZGV4IDk5OWJhOWEuLjFjZTQyZTggMTAwNjQ0Ci0tLSBhL3N5cy92ZHBhdS9NYWtlZmlsZS5pbgorKysgYi9zeXMvdmRwYXUvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjgyLDYgKzI4MSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE5LDYgKzMyMCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI3LDcgKzMzMCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Niw4ICszNDgsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzY0LDE2ICszNjcsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk5LDYgKzQwMyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyNCw2ICs0MzAsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjUsNiArNTMzLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzOCw4ICs1NDcsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTUsNiArNTYyLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxMiwxNiArNjIxLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjczLDYgKzY4NCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODMsNiArNjk1LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjkyLDYgKzcwNSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjksNyArNzQ0LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvdmRwYXUvZ3N0dmRwdmlkZW9tZW1vcnkuYyBiL3N5cy92ZHBhdS9nc3R2ZHB2aWRlb21lbW9yeS5jCmluZGV4IDhkMGZhNTEuLjgyMTc2NTMgMTAwNjQ0Ci0tLSBhL3N5cy92ZHBhdS9nc3R2ZHB2aWRlb21lbW9yeS5jCisrKyBiL3N5cy92ZHBhdS9nc3R2ZHB2aWRlb21lbW9yeS5jCkBAIC0yMjIsOCArMjIyLDcgQEAKIAogICBnc3Rfb2JqZWN0X3VucmVmICh2bWVtLT5kZXZpY2UpOwogCi0gIGlmICh2bWVtLT5jYWNoZSkKLSAgICBnX2ZyZWUgKHZtZW0tPmNhY2hlKTsKKyAgZ19mcmVlICh2bWVtLT5jYWNoZSk7CiAKICAgZ19zbGljZV9mcmVlIChHc3RWZHBWaWRlb01lbW9yeSwgdm1lbSk7CiB9CmRpZmYgLS1naXQgYS9zeXMvdmRwYXUvbXBlZy9nc3R2ZHBtcGVnZGVjLmMgYi9zeXMvdmRwYXUvbXBlZy9nc3R2ZHBtcGVnZGVjLmMKaW5kZXggZWZhODM2ZC4uZTZmNmY5NSAxMDA2NDQKLS0tIGEvc3lzL3ZkcGF1L21wZWcvZ3N0dmRwbXBlZ2RlYy5jCisrKyBiL3N5cy92ZHBhdS9tcGVnL2dzdHZkcG1wZWdkZWMuYwpAQCAtMjYsNyArMjYsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgLW0gZmFrZXNyYyAhIHZkcGF1bXBlZ2RlYyAhIGZha2VzaW5rIHNpbGVudD1UUlVFCisgKiBnc3QtbGF1bmNoLTEuMCAtdiAtbSBmYWtlc3JjICEgdmRwYXVtcGVnZGVjICEgZmFrZXNpbmsgc2lsZW50PVRSVUUKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9zeXMvd2FzYXBpL01ha2VmaWxlLmluIGIvc3lzL3dhc2FwaS9NYWtlZmlsZS5pbgppbmRleCAxNjBhOTJiLi4wZmIzYWViIDEwMDY0NAotLS0gYS9zeXMvd2FzYXBpL01ha2VmaWxlLmluCisrKyBiL3N5cy93YXNhcGkvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc4LDYgKzI3Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE1LDYgKzMxNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIzLDcgKzMyNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Miw4ICszNDQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYwLDE2ICszNjMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk1LDYgKzM5OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMCw2ICs0MjYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjEsNiArNTI5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNCw4ICs1NDMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTEsNiArNTU4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOCwxNiArNjE3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY5LDYgKzY4MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzksNiArNjkxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg4LDYgKzcwMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjUsNyArNzQwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvd2luaW5ldC9NYWtlZmlsZS5pbiBiL3N5cy93aW5pbmV0L01ha2VmaWxlLmluCmluZGV4IDU0ZjQyNTMuLmI3YWZkOWQgMTAwNjQ0Ci0tLSBhL3N5cy93aW5pbmV0L01ha2VmaWxlLmluCisrKyBiL3N5cy93aW5pbmV0L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL3dpbmtzL01ha2VmaWxlLmluIGIvc3lzL3dpbmtzL01ha2VmaWxlLmluCmluZGV4IGU4N2RiNWQuLjY0ZWVjYWMgMTAwNjQ0Ci0tLSBhL3N5cy93aW5rcy9NYWtlZmlsZS5pbgorKysgYi9zeXMvd2lua3MvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc5LDYgKzI3OCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE2LDYgKzMxNyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI0LDcgKzMyNyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Myw4ICszNDUsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYxLDE2ICszNjQsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk2LDYgKzQwMCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMSw2ICs0MjcsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjIsNiArNTMwLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNSw4ICs1NDQsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTIsNiArNTU5LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOSwxNiArNjE4LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcwLDYgKzY4MSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODAsNiArNjkyLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg5LDYgKzcwMiw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjYsNyArNzQxLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvd2lua3MvZ3N0a3N2aWRlb3NyYy5jIGIvc3lzL3dpbmtzL2dzdGtzdmlkZW9zcmMuYwppbmRleCAwN2NkZjhiLi5jMmJhZDM0IDEwMDY0NAotLS0gYS9zeXMvd2lua3MvZ3N0a3N2aWRlb3NyYy5jCisrKyBiL3N5cy93aW5rcy9nc3Rrc3ZpZGVvc3JjLmMKQEAgLTI2LDExICsyNiwxMSBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGtzdmlkZW9zcmMgZG8tc3RhdHM9VFJVRSAhIGZmbXBlZ2NvbG9yc3BhY2UgISBkc2hvd3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYga3N2aWRlb3NyYyBkby1zdGF0cz1UUlVFICEgdmlkZW9jb252ZXJ0ICEgZHNob3d2aWRlb3NpbmsKICAqIF18IENhcHR1cmUgZnJvbSBhIGNhbWVyYSBhbmQgcmVuZGVyIHVzaW5nIGRzaG93dmlkZW9zaW5rLgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYga3N2aWRlb3NyYyBkby1zdGF0cz1UUlVFICEgaW1hZ2UvanBlZywgd2lkdGg9NjQwLCBoZWlnaHQ9NDgwCi0gKiAhIGpwZWdkZWMgISBmZm1wZWdjb2xvcnNwYWNlICEgZHNob3d2aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGtzdmlkZW9zcmMgZG8tc3RhdHM9VFJVRSAhIGltYWdlL2pwZWcsIHdpZHRoPTY0MCwgaGVpZ2h0PTQ4MAorICogISBqcGVnZGVjICEgdmlkZW9jb252ZXJ0ICEgZHNob3d2aWRlb3NpbmsKICAqIF18IENhcHR1cmUgZnJvbSBhbiBNSlBFRyBjYW1lcmEgYW5kIHJlbmRlciB1c2luZyBkc2hvd3ZpZGVvc2luay4KICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTk4LDggKzk4LDYgQEAKICAgR3N0S3NDbG9jayAqa3NjbG9jazsKICAgR3N0S3NWaWRlb0RldmljZSAqZGV2aWNlOwogCi0gIGd1aW50NjQgb2Zmc2V0OwotICBHc3RDbG9ja1RpbWUgcHJldl90czsKICAgZ2Jvb2xlYW4gcnVubmluZzsKIAogICAvKiBXb3JrZXIgdGhyZWFkICovCkBAIC0zNDMsMTAgKzM0MSw2IEBACiAgIHByaXYtPmNvdW50ID0gMDsKICAgcHJpdi0+ZnBzID0gLTE7CiAKLSAgLyogUmVzZXQgdGltZXN0YW1waW5nIHN0YXRlICovCi0gIHByaXYtPm9mZnNldCA9IDA7Ci0gIHByaXYtPnByZXZfdHMgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotCiAgIHByaXYtPnJ1bm5pbmcgPSBGQUxTRTsKIH0KIApAQCAtODEzLDEyICs4MDcsMTEgQEAKICAgR3N0S3NWaWRlb1NyY1ByaXZhdGUgKnByaXYgPSBHU1RfS1NfVklERU9fU1JDX0dFVF9QUklWQVRFIChzZWxmKTsKICAgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uOwogICBHc3RDbG9jayAqY2xvY2s7Ci0gIEdzdENsb2NrVGltZSB0aW1lc3RhbXA7CisgIEdzdENsb2NrVGltZSB0aW1lc3RhbXAsIGJhc2VfdGltZTsKIAogICAvKiBEb24ndCB0aW1lc3RhbXAgbXV4ZWQgc3RyZWFtcyAqLwogICBpZiAoZ3N0X2tzX3ZpZGVvX2RldmljZV9zdHJlYW1faXNfbXV4ZWQgKHByaXYtPmRldmljZSkpIHsKICAgICBkdXJhdGlvbiA9IHRpbWVzdGFtcCA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0gICAgcHJpdi0+b2Zmc2V0Kys7CiAgICAgZ290byB0aW1lc3RhbXA7CiAgIH0KIApAQCAtODI4LDg4ICs4MjEsMjUgQEAKICAgY2xvY2sgPSBHU1RfRUxFTUVOVF9DTE9DSyAoc2VsZik7CiAgIGlmIChjbG9jayAhPSBOVUxMKSB7CiAgICAgZ3N0X29iamVjdF9yZWYgKGNsb2NrKTsKLSAgICB0aW1lc3RhbXAgPSBHU1RfRUxFTUVOVCAoc2VsZiktPmJhc2VfdGltZTsKLQotICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAocHJlc2VudGF0aW9uX3RpbWUpKSB7Ci0gICAgICBpZiAocHJlc2VudGF0aW9uX3RpbWUgPiBHU1RfRUxFTUVOVCAoc2VsZiktPmJhc2VfdGltZSkKLSAgICAgICAgcHJlc2VudGF0aW9uX3RpbWUgLT0gR1NUX0VMRU1FTlQgKHNlbGYpLT5iYXNlX3RpbWU7Ci0gICAgICBlbHNlCi0gICAgICAgIHByZXNlbnRhdGlvbl90aW1lID0gMDsKLSAgICB9CisgICAgYmFzZV90aW1lID0gR1NUX0VMRU1FTlQgKHNlbGYpLT5iYXNlX3RpbWU7CiAgIH0gZWxzZSB7CiAgICAgdGltZXN0YW1wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgfQogICBHU1RfT0JKRUNUX1VOTE9DSyAoc2VsZik7CiAKICAgaWYgKGNsb2NrICE9IE5VTEwpIHsKLQogICAgIC8qIFRoZSB0aW1lIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBjbG9jayAqLwotICAgIHRpbWVzdGFtcCA9IGdzdF9jbG9ja19nZXRfdGltZSAoY2xvY2spIC0gdGltZXN0YW1wOworICAgIHRpbWVzdGFtcCA9IGdzdF9jbG9ja19nZXRfdGltZSAoY2xvY2spIC0gYmFzZV90aW1lOwogICAgIGlmICh0aW1lc3RhbXAgPiBkdXJhdGlvbikKICAgICAgIHRpbWVzdGFtcCAtPSBkdXJhdGlvbjsKICAgICBlbHNlCiAgICAgICB0aW1lc3RhbXAgPSAwOwogCi0gICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChwcmVzZW50YXRpb25fdGltZSkpIHsKLSAgICAgIC8qCi0gICAgICAgKiBXZSBkb24ndCB1c2UgdGhpcyBmb3IgYW55dGhpbmcgeWV0LCBuZWVkIHRvIHBvbmRlciBob3cgdG8gZGVhbAotICAgICAgICogd2l0aCBwaW5zIHRoYXQgdXNlIGFuIGludGVybmFsIGNsb2NrIGFuZCB0aW1lc3RhbXAgZnJvbSAwLgotICAgICAgICovCi0gICAgICBHc3RDbG9ja1RpbWVEaWZmIGRpZmYgPSBHU1RfQ0xPQ0tfRElGRiAocHJlc2VudGF0aW9uX3RpbWUsIHRpbWVzdGFtcCk7Ci0gICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiZGlmZiBiZXR3ZWVuIGdzdCBhbmQgZHJpdmVyIHRpbWVzdGFtcDogJSIKLSAgICAgICAgICBHX0dJTlQ2NF9GT1JNQVQsIGRpZmYpOwotICAgIH0KLQogICAgIGdzdF9vYmplY3RfdW5yZWYgKGNsb2NrKTsKICAgICBjbG9jayA9IE5VTEw7Ci0KLSAgICAvKiBVbmxlc3MgaXQncyB0aGUgZmlyc3QgZnJhbWUsIGFsaWduIHRoZSBjdXJyZW50IHRpbWVzdGFtcCBvbiBhIG11bHRpcGxlCi0gICAgICogb2YgZHVyYXRpb24gc2luY2UgdGhlIHByZXZpb3VzICovCi0gICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChwcml2LT5wcmV2X3RzKSkgewotICAgICAgR3N0Q2xvY2tUaW1lIGRlbHRhOwotICAgICAgZ3VpbnQgZGVsdGFfcmVtYWluZGVyLCBkZWx0YV9vZmZzZXQ7Ci0KLSAgICAgIC8qIFJFVklTSVQ6IEkndmUgc2VlbiB0aGlzIGhhcHBlbiB3aXRoIHRoZSBHc3RTeXN0ZW1DbG9jayBvbiBXaW5kb3dzLAotICAgICAgICogICAgICAgICAgc2NhcnkuLi4gKi8KLSAgICAgIGlmICh0aW1lc3RhbXAgPCBwcml2LT5wcmV2X3RzKSB7Ci0gICAgICAgIEdTVF9JTkZPX09CSkVDVCAoc2VsZiwgImNsb2NrIGlzIHRpY2tpbmcgYmFja3dhcmRzIik7Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgIH0KLQotICAgICAgLyogUm91bmQgdG8gYSBkdXJhdGlvbiBib3VuZGFyeSAqLwotICAgICAgZGVsdGEgPSB0aW1lc3RhbXAgLSBwcml2LT5wcmV2X3RzOwotICAgICAgZGVsdGFfcmVtYWluZGVyID0gZGVsdGEgJSBkdXJhdGlvbjsKLQotICAgICAgaWYgKGRlbHRhX3JlbWFpbmRlciA8IGR1cmF0aW9uIC8gMykKLSAgICAgICAgdGltZXN0YW1wIC09IGRlbHRhX3JlbWFpbmRlcjsKLSAgICAgIGVsc2UKLSAgICAgICAgdGltZXN0YW1wICs9IGR1cmF0aW9uIC0gZGVsdGFfcmVtYWluZGVyOwotCi0gICAgICAvKiBIb3cgbWFueSBmcmFtZXMgYXJlIHdlIG9mZiB0aGVuPyAqLwotICAgICAgZGVsdGEgPSB0aW1lc3RhbXAgLSBwcml2LT5wcmV2X3RzOwotICAgICAgZGVsdGFfb2Zmc2V0ID0gZGVsdGEgLyBkdXJhdGlvbjsKLQotICAgICAgaWYgKGRlbHRhX29mZnNldCA9PSAxKSAgICAvKiBwZXJmZWN0ICovCi0gICAgICAgIEdTVF9CVUZGRVJfRkxBR19VTlNFVCAoYnVmLCBHU1RfQlVGRkVSX0ZMQUdfRElTQ09OVCk7Ci0gICAgICBlbHNlIGlmIChkZWx0YV9vZmZzZXQgPiAxKSB7Ci0gICAgICAgIGd1aW50IGxvc3QgPSBkZWx0YV9vZmZzZXQgLSAxOwotICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKHNlbGYsICJsb3N0ICVkIGZyYW1lJXMsIHNldHRpbmcgZGlzY29udCBmbGFnIiwKLSAgICAgICAgICAgIGxvc3QsIChsb3N0ID4gMSkgPyAicyIgOiAiIik7Ci0gICAgICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKGJ1ZiwgR1NUX0JVRkZFUl9GTEFHX0RJU0NPTlQpOwotICAgICAgfSBlbHNlIGlmIChkZWx0YV9vZmZzZXQgPT0gMCkgeyAgIC8qIG92ZXJwcm9kdWN0aW9uLCBza2lwIHRoaXMgZnJhbWUgKi8KLSAgICAgICAgR1NUX0lORk9fT0JKRUNUIChzZWxmLCAic2tpcHBpbmcgZnJhbWUiKTsKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgfQotCi0gICAgICBwcml2LT5vZmZzZXQgKz0gZGVsdGFfb2Zmc2V0OwotICAgIH0KLQotICAgIHByaXYtPnByZXZfdHMgPSB0aW1lc3RhbXA7CiAgIH0KIAogdGltZXN0YW1wOgotICBHU1RfQlVGRkVSX09GRlNFVCAoYnVmKSA9IHByaXYtPm9mZnNldDsKLSAgR1NUX0JVRkZFUl9PRkZTRVRfRU5EIChidWYpID0gR1NUX0JVRkZFUl9PRkZTRVQgKGJ1ZikgKyAxOwogICBHU1RfQlVGRkVSX1BUUyAoYnVmKSA9IHRpbWVzdGFtcDsKICAgR1NUX0JVRkZFUl9EVFMgKGJ1ZikgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpID0gZHVyYXRpb247CmRpZmYgLS1naXQgYS9zeXMvd2luc2NyZWVuY2FwL01ha2VmaWxlLmluIGIvc3lzL3dpbnNjcmVlbmNhcC9NYWtlZmlsZS5pbgppbmRleCBkNzliZmRkLi5jZDUzOWFlIDEwMDY0NAotLS0gYS9zeXMvd2luc2NyZWVuY2FwL01ha2VmaWxlLmluCisrKyBiL3N5cy93aW5zY3JlZW5jYXAvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc4LDYgKzI3Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE1LDYgKzMxNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIzLDcgKzMyNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Miw4ICszNDQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYwLDE2ICszNjMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk1LDYgKzM5OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMCw2ICs0MjYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjEsNiArNTI5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNCw4ICs1NDMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTEsNiArNTU4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOCwxNiArNjE3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY5LDYgKzY4MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzksNiArNjkxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg4LDYgKzcwMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjUsNyArNzQwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvd2luc2NyZWVuY2FwL2dzdGR4OXNjcmVlbmNhcHNyYy5jIGIvc3lzL3dpbnNjcmVlbmNhcC9nc3RkeDlzY3JlZW5jYXBzcmMuYwppbmRleCA5YTg1NmUwLi4wZjg4OWIyIDEwMDY0NAotLS0gYS9zeXMvd2luc2NyZWVuY2FwL2dzdGR4OXNjcmVlbmNhcHNyYy5jCisrKyBiL3N5cy93aW5zY3JlZW5jYXAvZ3N0ZHg5c2NyZWVuY2Fwc3JjLmMKQEAgLTMwLDExICszMCwxMSBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGR4OXNjcmVlbmNhcHNyYyAhIGZmbXBlZ2NvbG9yc3BhY2UgISBkc2hvd3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgZHg5c2NyZWVuY2Fwc3JjICEgdmlkZW9jb252ZXJ0ICEgZHNob3d2aWRlb3NpbmsKICAqIF18IENhcHR1cmUgdGhlIGRlc2t0b3AgYW5kIGRpc3BsYXkgaXQuCiAgKiB8WwotICogZ3N0LWxhdW5jaCBkeDlzY3JlZW5jYXBzcmMgeD0xMDAgeT0xMDAgd2lkdGg9MzIwIGhlaWdodD0yNDAgIQotICogZmZtcGVnY29sb3JzcGFjZSAhIGRzaG93dmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBkeDlzY3JlZW5jYXBzcmMgeD0xMDAgeT0xMDAgd2lkdGg9MzIwIGhlaWdodD0yNDAgIQorICogdmlkZW9jb252ZXJ0ICEgZHNob3d2aWRlb3NpbmsKICAqIF18IENhcHR1cmUgYSBwb3J0aW9uIG9mIHRoZSBkZXNrdG9wIGFuZCBkaXNwbGF5IGl0LgogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvc3lzL3dpbnNjcmVlbmNhcC9nc3RnZGlzY3JlZW5jYXBzcmMuYyBiL3N5cy93aW5zY3JlZW5jYXAvZ3N0Z2Rpc2NyZWVuY2Fwc3JjLmMKaW5kZXggOTJkOWVjMi4uNTViZDRiNSAxMDA2NDQKLS0tIGEvc3lzL3dpbnNjcmVlbmNhcC9nc3RnZGlzY3JlZW5jYXBzcmMuYworKysgYi9zeXMvd2luc2NyZWVuY2FwL2dzdGdkaXNjcmVlbmNhcHNyYy5jCkBAIC0zMiwxMSArMzIsMTEgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBnZGlzY3JlZW5jYXBzcmMgISBmZm1wZWdjb2xvcnNwYWNlICEgZHNob3d2aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGdkaXNjcmVlbmNhcHNyYyAhIHZpZGVvY29udmVydCAhIGRzaG93dmlkZW9zaW5rCiAgKiBdfCBDYXB0dXJlIHRoZSBkZXNrdG9wIGFuZCBkaXNwbGF5IGl0LgogICogfFsKLSAqIGdzdC1sYXVuY2ggZ2Rpc2NyZWVuY2Fwc3JjIHg9MTAwIHk9MTAwIHdpZHRoPTMyMCBoZWlnaHQ9MjQwIGN1cnNvcj1UUlVFCi0gKiAhIGZmbXBlZ2NvbG9yc3BhY2UgISBkc2hvd3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgZ2Rpc2NyZWVuY2Fwc3JjIHg9MTAwIHk9MTAwIHdpZHRoPTMyMCBoZWlnaHQ9MjQwIGN1cnNvcj1UUlVFCisgKiAhIHZpZGVvY29udmVydCAhIGRzaG93dmlkZW9zaW5rCiAgKiBdfCBDYXB0dXJlIGEgcG9ydGlvbiBvZiB0aGUgZGVza3RvcCwgaW5jbHVkaW5nIHRoZSBtb3VzZSBjdXJzb3IsIGFuZAogICogZGlzcGxheSBpdC4KICAqIDwvcmVmc2VjdDI+CmRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5pbiBiL3Rlc3RzL01ha2VmaWxlLmluCmluZGV4IDIxMTYyNmMuLjY4NDYyNWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL01ha2VmaWxlLmluCkBAIC0xMTQsMTYgKzExNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQ3LDYgKzI0Niw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjg0LDYgKzI4NSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkyLDcgKzI5NSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxMSw4ICszMTMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzI5LDE2ICszMzIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzY0LDYgKzM2OCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4OSw2ICszOTUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTAsNiArNDk4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwMyw4ICs1MTIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjAsNiArNTI3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3NywxNiArNTg2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM4LDYgKzY0OSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDgsNiArNjYwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU3LDYgKzY3MCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTQsNyArNzA5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbSBiL3Rlc3RzL2NoZWNrL01ha2VmaWxlLmFtCmluZGV4IGZiY2U0ZDcuLjNmOWFkOWQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrL01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL2NoZWNrL01ha2VmaWxlLmFtCkBAIC05LDE1ICs5LDE1IEBACiAJR1NUX1JFR0lTVFJZXzFfMD0kKENIRUNLX1JFR0lTVFJZKQogCiAjIEdTVF9QTFVHSU5TX1hZWl9ESVIgaXMgb25seSBzZXQgaW4gYW4gdW5pbnN0YWxsZWQgc2V0dXAKLUFNX1RFU1RTX0VOVklST05NRU5UID0gXAorQU1fVEVTVFNfRU5WSVJPTk1FTlQgKz0gXAogCSQoUkVHSVNUUllfRU5WSVJPTk1FTlQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCUdTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wPQkJCQlcCiAJR1NUX1BMVUdJTl9QQVRIXzFfMD0kKHRvcF9idWlsZGRpcikvZ3N0OiQodG9wX2J1aWxkZGlyKS9zeXM6JCh0b3BfYnVpbGRkaXIpL2V4dDokKEdTVF9QTFVHSU5TX0xJQkFWX0RJUik6JChHU1RfUExVR0lOU19VR0xZX0RJUik6JChHU1RfUExVR0lOU19HT09EX0RJUik6JChHU1RfUExVR0lOU19CQVNFX0RJUik6JChHU1RfUExVR0lOU19ESVIpIFwKIAlHU1RfUExVR0lOX0xPQURJTkdfV0hJVEVMSVNUPSJnc3RyZWFtZXJAJChHU1RfUExVR0lOU19ESVIpOmdzdC1wbHVnaW5zLWJhc2VAJChHU1RQQl9QTFVHSU5TX0RJUik6Z3N0LXBsdWdpbnMtZ29vZDpnc3QtcGx1Z2lucy11Z2x5OmdzdC1saWJhdjpnc3QtcGx1Z2lucy1iYWRAJCh0b3BfYnVpbGRkaXIpIiBcCiAJR1NUX1NUQVRFX0lHTk9SRV9FTEVNRU5UUz0iYXBleHNpbmsgYXZkdHBzcmMgY2FtZXJhYmluIGRjMTM5NHNyYyBcCiAJICAgIGRjY3BjbGllbnRzcmMgZGNjcGNsaWVudHNpbmsgZGNjcHNlcnZlcnNyYyBkY2Nwc2VydmVyc2luayBkZWNrbGlua3NyYyBcCi0JICAgIGRlY2tsaW5rc2luayBkdGxzc3J0cGRlYyBkdGxzc3J0cGVuYyBkdmJzcmMgZHZiYmFzZWJpbiBkZmJ2aWRlb3NpbmsgZmVzdGl2YWwgZmx1aWRzeW50aCBnc2V0dGluZ3N2aWRlb3NyYyBcCi0JICAgIGdzZXR0aW5nc3ZpZGVvc2luayBnc2V0dGluZ3NhdWRpb3NyYyBnc2V0dGluZ3NhdWRpb3NpbmsgbGluc3lzc2Rpc3JjIGxpbnN5c3NkaXNpbmsgbmFzc2luayBcCisJICAgIGRlY2tsaW5rc2luayBkdGxzc3J0cGRlYyBkdGxzc3J0cGVuYyBkdmJzcmMgZHZiYmFzZWJpbiBkZmJ2aWRlb3NpbmsgZmVzdGl2YWwgZmx1aWRzeW50aCBcCisJICAgIGxpbnN5c3NkaXNyYyBsaW5zeXNzZGlzaW5rIG5hc3NpbmsgXAogCSAgICByc25kdmRiaW4gc2RsYXVkaW9zaW5rIHNkbHZpZGVvc2luayB2Y2RzcmMgcmZic3JjIHZkcGF1eXV2dmlkZW8gdmRwYXV2aWRlb3l1diBcCiAJICAgIHZkcGF1bXBlZ2RlYyB2ZHBhdW1wZWc0ZGVjIHZkcGF1aDI2NGRlYyB2ZHBhdXZpZGVvcG9zdHByb2Nlc3MgdmRwYXVzaW5rIG5lb25odHRwc3JjIgogCkBAIC00Miw4ICs0MiwxMCBAQAogCiBpZiBVU0VfREFTSAogY2hlY2tfZGFzaCA9IGVsZW1lbnRzL2Rhc2hfbXBkCitjaGVja19kYXNoX2RlbXV4ID0gZWxlbWVudHMvZGFzaF9kZW11eAogZWxzZQogY2hlY2tfZGFzaCA9CitjaGVja19kYXNoX2RlbXV4ID0KIGVuZGlmCiAKIGlmIFVTRV9GQUFDCkBAIC04MiwxOCArODQsMTggQEAKIGNoZWNrX21wZWcyZW5jID0KIGVuZGlmCiAKLWlmIFVTRV9NUEcxMjMKLWNoZWNrX21wZzEyMyA9IGVsZW1lbnRzL21wZzEyM2F1ZGlvZGVjCi1lbHNlCi1jaGVja19tcGcxMjMgPQotZW5kaWYKLQogaWYgVVNFX01QTEVYCiBjaGVja19tcGxleCA9IGVsZW1lbnRzL21wbGV4CiBlbHNlCiBjaGVja19tcGxleCA9CiBlbmRpZgogCitpZiBVU0VfU01PT1RIU1RSRUFNSU5HCitjaGVja19tc3NkZW11eCA9IGVsZW1lbnRzL21zc2RlbXV4CitlbHNlCitjaGVja19tc3NkZW11eCA9CitlbmRpZgorCiBpZiBVU0VfTkVPTgogY2hlY2tfbmVvbiA9IGVsZW1lbnRzL25lb25odHRwc3JjCiBlbHNlCkBAIC0xNTQsMTIgKzE1Niw2IEBACiBjaGVja19vcGVuY3YgPQogZW5kaWYKIAotaWYgVVNFX09QVVMKLWNoZWNrX29wdXMgPSBlbGVtZW50cy9vcHVzCi1lbHNlCi1jaGVja19vcHVzID0KLWVuZGlmCi0KIGlmIFVTRV9TU0gyCiBjaGVja19jdXJsX3NmdHAgPSBlbGVtZW50cy9jdXJsc2Z0cHNpbmsKIGVsc2UKQEAgLTE2NywxMSArMTYzLDE5IEBACiBlbmRpZgogCiBpZiBVU0VfSExTCi1jaGVja19obHNkZW11eCA9IGVsZW1lbnRzL2hsc2RlbXV4X20zdTgKK2NoZWNrX2hsc2RlbXV4X20zdTggPSBlbGVtZW50cy9obHNkZW11eF9tM3U4CitjaGVja19obHNkZW11eCA9IGVsZW1lbnRzL2hsc19kZW11eAogZWxzZQorY2hlY2tfaGxzZGVtdXhfbTN1OCA9CiBjaGVja19obHNkZW11eCA9CiBlbmRpZgogCitpZiBXSVRIX0dTVF9QTEFZRVJfVEVTVFMKK2NoZWNrX3BsYXllciA9IGxpYnMvcGxheWVyCitlbHNlCitjaGVja19wbGF5ZXIgPQorZW5kaWYKKwogaWYgVVNFX0NVUkwKIGNoZWNrX2N1cmwgPSBlbGVtZW50cy9jdXJsaHR0cHNpbmsgXAogCWVsZW1lbnRzL2N1cmxmaWxlc2luayBcCkBAIC0yMDUsNiArMjA5LDggQEAKICAgICBsaWJzL2dzdGdsbWVtb3J5IFwKICAgICBsaWJzL2dzdGdsdXBsb2FkIFwKICAgICBsaWJzL2dzdGdsY29sb3Jjb252ZXJ0IFwKKyAgICBsaWJzL2dzdGdscXVlcnkgXAorICAgIGxpYnMvZ3N0Z2xzbCBcCiAgICAgZWxlbWVudHMvZ2xpbWFnZXNpbmsKIGVsc2UKIGNoZWNrX2dsPQpAQCAtMjI5LDI2ICsyMzUsMjcgQEAKIAlnZW5lcmljL3N0YXRlcyBcCiAJJChjaGVja19hc3NyZW5kZXIpIFwKIAkkKGNoZWNrX2Rhc2gpIFwKKwkkKGNoZWNrX2Rhc2hfZGVtdXgpIFwKIAkkKGNoZWNrX2ZhYWMpICBcCiAJJChjaGVja19mYWFkKSAgXAogCSQoY2hlY2tfdm9hYWNlbmMpIFwKIAkkKGNoZWNrX3ZvYW1yd2JlbmMpIFwKIAkkKGNoZWNrX21wZWcyZW5jKSAgXAogCSQoY2hlY2tfbXBsZXgpICAgICBcCisJJChjaGVja19tc3NkZW11eCkgXAogCSQoY2hlY2tfb2ZhKSAgICAgICAgXAogCSQoY2hlY2tfdGltaWRpdHkpICBcCiAJJChjaGVja19rYXRlKSAgXAogCSQoY2hlY2tfb3BlbmN2KSBcCi0JJChjaGVja19vcHVzKSAgXAogCSQoY2hlY2tfY3VybCkgXAogCSQoY2hlY2tfc2htKSBcCiAJZWxlbWVudHMvYWlmZnBhcnNlIFwKKwllbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwgXAogCWVsZW1lbnRzL2F1dG9jb252ZXJ0IFwKIAllbGVtZW50cy9hdXRvdmlkZW9jb252ZXJ0IFwKIAllbGVtZW50cy9hdWRpb2ludGVybGVhdmUgXAogCWVsZW1lbnRzL2F1ZGlvbWl4ZXIgXAogCWVsZW1lbnRzL2FzZm11eCBcCi0JZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplciBcCiAJZWxlbWVudHMvY2FtZXJhYmluIFwKIAllbGVtZW50cy9kYXRhdXJpc3JjIFwKIAllbGVtZW50cy9nZHBwYXkgXApAQCAtMjYxLDExICsyNjgsMTIgQEAKIAllbGVtZW50cy9tcGVndHNtdXggXAogCWVsZW1lbnRzL21wZWd2aWRlb3BhcnNlIFwKIAllbGVtZW50cy9tcGVnNHZpZGVvcGFyc2UgXAotCSQoY2hlY2tfbXBnMTIzKSBcCiAJZWxlbWVudHMvbXhmZGVtdXggXAogCWVsZW1lbnRzL214Zm11eCBcCisJZWxlbWVudHMvbmV0c2ltIFwKIAllbGVtZW50cy9wY2FwcGFyc2UgXAotCWVsZW1lbnRzL3J0cG9udmlmIFwKKwllbGVtZW50cy9ydHBvbnZpZnBhcnNlIFwKKwllbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcCBcCiAJZWxlbWVudHMvaWQzbXV4IFwKIAlwaXBlbGluZXMvbXhmIFwKIAkkKGNoZWNrX21pbWljKSBcCkBAIC0yODMsNyArMjkxLDkgQEAKIAkkKGNoZWNrX29yYykgXAogCWxpYnMvaW5zZXJ0YmluIFwKIAkkKGNoZWNrX2dsKSBcCisJJChjaGVja19obHNkZW11eF9tM3U4KSBcCiAJJChjaGVja19obHNkZW11eCkgXAorCSQoY2hlY2tfcGxheWVyKSBcCiAJJChFWFBFUklNRU5UQUxfQ0hFQ0tTKQogCiBub2luc3RfSEVBREVSUyA9IGVsZW1lbnRzL214ZmRlbXV4LmgKQEAgLTM2OSw2ICszNzksMTMgQEAKIAkkKEdTVF9QTFVHSU5TX0JBRF9MSUJTKSAtbGdzdGNvZGVjcGFyc2Vycy1AR1NUX0FQSV9WRVJTSU9OQCBcCiAJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKExEQUREKQogCitlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfQ0ZMQUdTID0gXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKK2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9MREFERCA9IFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKExEQUREKSBcCisJLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQAorCiBlbGVtZW50c19mYWFkX0NGTEFHUyA9IFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiAJJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChBTV9DRkxBR1MpCkBAIC0zOTgsMTUgKzQxNSw2IEBACiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMREFERCkgXAogCS1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAKIAotZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9TT1VSQ0VTID0gZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jCi1lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKLQkkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ09OVFJPTExFUl9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChBTV9DRkxBR1MpCi1lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX0xEQUREID0gXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AICBcCi0JLWxnc3R2aWRlby1AR1NUX0FQSV9WRVJTSU9OQCAJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9DT05UUk9MTEVSX0xJQlMpIFwKLQkkKEdTVF9MSUJTKSAkKExEQUREKQotCiBlbGVtZW50c19jYW1lcmFiaW5fQ0ZMQUdTID0gXAogCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAogCSQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKSAtREdTVF9VU0VfVU5TVEFCTEVfQVBJCkBAIC00MzMsMTEgKzQ0MSw2IEBACiBlbGVtZW50c19tcGVndHNtdXhfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoQU1fQ0ZMQUdTKQogZWxlbWVudHNfbXBlZ3RzbXV4X0xEQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pICQoR1NUX0JBU0VfTElCUykgJChMREFERCkKIAotZWxlbWVudHNfbXBnMTIzYXVkaW9kZWNfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoQU1fQ0ZMQUdTKQotZWxlbWVudHNfbXBnMTIzYXVkaW9kZWNfTERBREQgPSBcCi0JJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMREFERCkgXAotCS1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgLWxnc3RmZnQtQEdTVF9BUElfVkVSU0lPTkAgLWxnc3RhcHAtQEdTVF9BUElfVkVSU0lPTkAKLQogZWxlbWVudHNfdXZjaDI2NGRlbXV4X0NGTEFHUyA9IC1EVVZDSDI2NERFTVVYX0RBVEFESVI9IiQoc3JjZGlyKS9lbGVtZW50cy91dmNoMjY0ZGVtdXhfZGF0YSIgXAogCQkJCSQoQU1fQ0ZMQUdTKQogCkBAIC00NDYsNiArNDQ5LDI0IEBACiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL2xpYmdzdHVyaWRvd25sb2FkZXItQEdTVF9BUElfVkVSU0lPTkAubGEKIGVsZW1lbnRzX2Rhc2hfbXBkX1NPVVJDRVMgPSBlbGVtZW50cy9kYXNoX21wZC5jCiAKK2VsZW1lbnRzX2Rhc2hfZGVtdXhfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoTElCWE1MMl9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykKK2VsZW1lbnRzX2Rhc2hfZGVtdXhfTERBREQgPSBcCisJJChMREFERCkgJChMSUJYTUwyX0xJQlMpICQoR1NUX0JBU0VfTElCUykgXAorCS1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJLWxnc3RhcHAtJChHU1RfQVBJX1ZFUlNJT04pIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvbGliZ3N0YWRhcHRpdmVkZW11eC1AR1NUX0FQSV9WRVJTSU9OQC5sYQorCitlbGVtZW50c19kYXNoX2RlbXV4X1NPVVJDRVMgPSBlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMgZWxlbWVudHMvdGVzdF9odHRwX3NyYy5oIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5oIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5oIGVsZW1lbnRzL2Rhc2hfZGVtdXguYworCitlbGVtZW50c19tc3NkZW11eF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgJChMSUJYTUwyX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKQorZWxlbWVudHNfbXNzZGVtdXhfTERBREQgPSBcCisJJChMREFERCkgJChMSUJYTUwyX0xJQlMpICQoR1NUX0JBU0VfTElCUykgXAorCS1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJLWxnc3RhcHAtJChHU1RfQVBJX1ZFUlNJT04pIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvbGliZ3N0YWRhcHRpdmVkZW11eC1AR1NUX0FQSV9WRVJTSU9OQC5sYQorCitlbGVtZW50c19tc3NkZW11eF9TT1VSQ0VTID0gZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jIGVsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuaCBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuaCBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uaCBlbGVtZW50cy9tc3NkZW11eC5jCisKIHBpcGVsaW5lc19zdHJlYW1oZWFkZXJfQ0ZMQUdTID0gJChHSU9fQ0ZMQUdTKSAkKEFNX0NGTEFHUykKIHBpcGVsaW5lc19zdHJlYW1oZWFkZXJfTERBREQgPSAkKEdJT19MSUJTKSAkKExEQUREKQogCkBAIC00NTUsOCArNDc2LDQxIEBACiBsaWJzX2luc2VydGJpbl9DRkxBR1MgPSBcCiAJJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKIAotZWxlbWVudHNfcnRwb252aWZfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoQU1fQ0ZMQUdTKQotZWxlbWVudHNfcnRwb252aWZfTERBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAtbGdzdHJ0cC0kKEdTVF9BUElfVkVSU0lPTikgJChMREFERCkKK2xpYnNfcGxheWVyX1NPVVJDRVMgPSBsaWJzL3BsYXllci5jCisKK2xpYnNfcGxheWVyX0xEQUREID0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvcGxheWVyL2xpYmdzdHBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMREFERCkKK2xpYnNfcGxheWVyX0NGTEFHUyA9IFwKKwkkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKSBcCisJLURURVNUX1BBVEg9XCIkKGJ1aWxkZGlyKS9tZWRpYVwiCisKK2lmIFdJVEhfR1NUX1BMQVlFUl9URVNUUworUExBWUVSX01FRElBX0ZJTEVTID0gXAorCW1lZGlhL2F1ZGlvLm9nZyBcCisJbWVkaWEvYXVkaW8tdmlkZW8ub2dnIFwKKwltZWRpYS9hdWRpby1zaG9ydC5vZ2cgXAorCW1lZGlhL2F1ZGlvLXZpZGVvLXNob3J0Lm9nZyBcCisJbWVkaWEvc2ludGVsLm1rdiBcCisJbWVkaWEvdGVzdF9zdWIuc3J0CisKKyQoUExBWUVSX01FRElBX0ZJTEVTKToKKwkkKE1LRElSX1ApIG1lZGlhCisJJChXR0VUKSAtYyBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL21lZGlhL3NtYWxsLyQoc3Vic3QgbWVkaWEvLCwkQCkgLU8gbWVkaWEvJChzdWJzdCBtZWRpYS8sLCRAKQorCitsaWJzL3BsYXllcl9kdW1teS5jOiAkKFBMQVlFUl9NRURJQV9GSUxFUykKKwl0b3VjaCBsaWJzL3BsYXllcl9kdW1teS5jCisKK25vZGlzdF9saWJzX3BsYXllcl9TT1VSQ0VTID0gbGlicy9wbGF5ZXJfZHVtbXkuYworCitDTEVBTkZJTEVTICs9ICQoUExBWUVSX01FRElBX0ZJTEVTKSBsaWJzL3BsYXllcl9kdW1teS5jCitlbmRpZgorCitlbGVtZW50c19ydHBvbnZpZnBhcnNlX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKK2VsZW1lbnRzX3J0cG9udmlmcGFyc2VfTERBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAtbGdzdHJ0cC0kKEdTVF9BUElfVkVSU0lPTikgJChMREFERCkKKworZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoQU1fQ0ZMQUdTKQorZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfTERBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAtbGdzdHJ0cC0kKEdTVF9BUElfVkVSU0lPTikgJChMREFERCkKIAogRVhUUkFfRElTVCA9IGdzdC1wbHVnaW5zLWJhZC5zdXBwICQodXZjaDI2NF9kaXN0X2RhdGEpCiAKQEAgLTUxNSw2ICs1NjksMjQgQEAKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgXAogCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMREFERCkKIAorbGlic19nc3RnbHF1ZXJ5X0xEQUREID0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAubGEgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTERBREQpCisKK2xpYnNfZ3N0Z2xxdWVyeV9DRkxBR1MgPSBcCisJJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCisJJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChBTV9DRkxBR1MpCisKK2xpYnNfZ3N0Z2xzbF9MREFERCA9IFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKExEQUREKQorCitsaWJzX2dzdGdsc2xfQ0ZMQUdTID0gXAorCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAorCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAorCSQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKQorCiBlbGVtZW50c19nbGltYWdlc2lua19DRkxBR1MgPSBcCiAJJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiAJLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCkBAIC01NDYsNiArNjE4LDEzIEBACiBlbGVtZW50c19obHNkZW11eF9tM3U4X0xEQUREID0gJChHU1RfQkFTRV9MSUJTKSAkKExEQUREKQogZWxlbWVudHNfaGxzZGVtdXhfbTN1OF9TT1VSQ0VTID0gZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jCiAKK2VsZW1lbnRzX2hsc19kZW11eF9DRkxBR1MgPSAkKEdTVF9CQVNFX0NGTEFHUykgJChBTV9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykKK2VsZW1lbnRzX2hsc19kZW11eF9MREFERCA9ICQoR1NUX0JBU0VfTElCUykgJChMREFERCkgXAorCS1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJLWxnc3RhcHAtJChHU1RfQVBJX1ZFUlNJT04pIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvbGliZ3N0YWRhcHRpdmVkZW11eC1AR1NUX0FQSV9WRVJTSU9OQC5sYQorZWxlbWVudHNfaGxzX2RlbXV4X1NPVVJDRVMgPSBlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMgZWxlbWVudHMvdGVzdF9odHRwX3NyYy5oIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5oIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5oIGVsZW1lbnRzL2hsc19kZW11eC5jCisKIG9yY19jb21wb3NpdG9yX0NGTEFHUyA9ICQoT1JDX0NGTEFHUykKIG9yY19jb21wb3NpdG9yX0xEQUREID0gJChPUkNfTElCUykgLWxvcmMtdGVzdC0wLjQKIG5vZGlzdF9vcmNfY29tcG9zaXRvcl9TT1VSQ0VTID0gb3JjL2NvbXBvc2l0b3IuYwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svTWFrZWZpbGUuaW4gYi90ZXN0cy9jaGVjay9NYWtlZmlsZS5pbgppbmRleCBjMjBjYmIwLi4zY2MzYWQ5IDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9jaGVjay9NYWtlZmlsZS5pbgpAQCAtOTEsMzQgKzkxLDM3IEBACiBidWlsZF90cmlwbGV0ID0gQGJ1aWxkQAogaG9zdF90cmlwbGV0ID0gQGhvc3RACiB0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACi1ub2luc3RfUFJPR1JBTVMgPSBwaXBlbGluZXMvc3RyZWFtaGVhZGVyJChFWEVFWFQpICQoYW1fX0VYRUVYVF8yNykKK25vaW5zdF9QUk9HUkFNUyA9IHBpcGVsaW5lcy9zdHJlYW1oZWFkZXIkKEVYRUVYVCkgJChhbV9fRVhFRVhUXzI5KQogY2hlY2tfUFJPR1JBTVMgPSBnZW5lcmljL3N0YXRlcyQoRVhFRVhUKSAkKGFtX19FWEVFWFRfMSkgXAogCSQoYW1fX0VYRUVYVF8yKSAkKGFtX19FWEVFWFRfMykgJChhbV9fRVhFRVhUXzQpIFwKIAkkKGFtX19FWEVFWFRfNSkgJChhbV9fRVhFRVhUXzYpICQoYW1fX0VYRUVYVF83KSBcCiAJJChhbV9fRVhFRVhUXzgpICQoYW1fX0VYRUVYVF85KSAkKGFtX19FWEVFWFRfMTApIFwKIAkkKGFtX19FWEVFWFRfMTEpICQoYW1fX0VYRUVYVF8xMikgJChhbV9fRVhFRVhUXzEzKSBcCi0JJChhbV9fRVhFRVhUXzE1KSAkKGFtX19FWEVFWFRfMTYpIGVsZW1lbnRzL2FpZmZwYXJzZSQoRVhFRVhUKSBcCisJJChhbV9fRVhFRVhUXzE0KSAkKGFtX19FWEVFWFRfMTYpICQoYW1fX0VYRUVYVF8xNykgXAorCWVsZW1lbnRzL2FpZmZwYXJzZSQoRVhFRVhUKSBcCisJZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsJChFWEVFWFQpIFwKIAllbGVtZW50cy9hdXRvY29udmVydCQoRVhFRVhUKSBcCiAJZWxlbWVudHMvYXV0b3ZpZGVvY29udmVydCQoRVhFRVhUKSBcCiAJZWxlbWVudHMvYXVkaW9pbnRlcmxlYXZlJChFWEVFWFQpIGVsZW1lbnRzL2F1ZGlvbWl4ZXIkKEVYRUVYVCkgXAotCWVsZW1lbnRzL2FzZm11eCQoRVhFRVhUKSBlbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyJChFWEVFWFQpIFwKLQllbGVtZW50cy9jYW1lcmFiaW4kKEVYRUVYVCkgZWxlbWVudHMvZGF0YXVyaXNyYyQoRVhFRVhUKSBcCi0JZWxlbWVudHMvZ2RwcGF5JChFWEVFWFQpIGVsZW1lbnRzL2dkcGRlcGF5JChFWEVFWFQpIFwKLQllbGVtZW50cy9jb21wb3NpdG9yJChFWEVFWFQpICQoYW1fX0VYRUVYVF8xNykgXAotCWVsZW1lbnRzL2pwZWdwYXJzZSQoRVhFRVhUKSBlbGVtZW50cy9oMjYzcGFyc2UkKEVYRUVYVCkgXAotCWVsZW1lbnRzL2gyNjRwYXJzZSQoRVhFRVhUKSBlbGVtZW50cy9tcGVndHNtdXgkKEVYRUVYVCkgXAotCWVsZW1lbnRzL21wZWd2aWRlb3BhcnNlJChFWEVFWFQpIFwKLQllbGVtZW50cy9tcGVnNHZpZGVvcGFyc2UkKEVYRUVYVCkgJChhbV9fRVhFRVhUXzE4KSBcCi0JZWxlbWVudHMvbXhmZGVtdXgkKEVYRUVYVCkgZWxlbWVudHMvbXhmbXV4JChFWEVFWFQpIFwKLQllbGVtZW50cy9wY2FwcGFyc2UkKEVYRUVYVCkgZWxlbWVudHMvcnRwb252aWYkKEVYRUVYVCkgXAotCWVsZW1lbnRzL2lkM211eCQoRVhFRVhUKSBwaXBlbGluZXMvbXhmJChFWEVFWFQpIFwKLQkkKGFtX19FWEVFWFRfMTkpIGxpYnMvbXBlZ3ZpZGVvcGFyc2VyJChFWEVFWFQpIFwKLQlsaWJzL21wZWd0cyQoRVhFRVhUKSBsaWJzL2gyNjRwYXJzZXIkKEVYRUVYVCkgXAotCWxpYnMvdnA4cGFyc2VyJChFWEVFWFQpIGxpYnMvYWdncmVnYXRvciQoRVhFRVhUKSBcCi0JJChhbV9fRVhFRVhUXzIwKSBsaWJzL3ZjMXBhcnNlciQoRVhFRVhUKSAkKGFtX19FWEVFWFRfMjEpIFwKLQkkKGFtX19FWEVFWFRfMjIpIGVsZW1lbnRzL3ZpZXdmaW5kZXJiaW4kKEVYRUVYVCkgXAotCSQoYW1fX0VYRUVYVF8yMykgJChhbV9fRVhFRVhUXzI0KSBsaWJzL2luc2VydGJpbiQoRVhFRVhUKSBcCi0JJChhbV9fRVhFRVhUXzI1KSAkKGFtX19FWEVFWFRfMjYpCisJZWxlbWVudHMvYXNmbXV4JChFWEVFWFQpIGVsZW1lbnRzL2NhbWVyYWJpbiQoRVhFRVhUKSBcCisJZWxlbWVudHMvZGF0YXVyaXNyYyQoRVhFRVhUKSBlbGVtZW50cy9nZHBwYXkkKEVYRUVYVCkgXAorCWVsZW1lbnRzL2dkcGRlcGF5JChFWEVFWFQpIGVsZW1lbnRzL2NvbXBvc2l0b3IkKEVYRUVYVCkgXAorCSQoYW1fX0VYRUVYVF8xOCkgZWxlbWVudHMvanBlZ3BhcnNlJChFWEVFWFQpIFwKKwllbGVtZW50cy9oMjYzcGFyc2UkKEVYRUVYVCkgZWxlbWVudHMvaDI2NHBhcnNlJChFWEVFWFQpIFwKKwllbGVtZW50cy9tcGVndHNtdXgkKEVYRUVYVCkgZWxlbWVudHMvbXBlZ3ZpZGVvcGFyc2UkKEVYRUVYVCkgXAorCWVsZW1lbnRzL21wZWc0dmlkZW9wYXJzZSQoRVhFRVhUKSBlbGVtZW50cy9teGZkZW11eCQoRVhFRVhUKSBcCisJZWxlbWVudHMvbXhmbXV4JChFWEVFWFQpIGVsZW1lbnRzL25ldHNpbSQoRVhFRVhUKSBcCisJZWxlbWVudHMvcGNhcHBhcnNlJChFWEVFWFQpIGVsZW1lbnRzL3J0cG9udmlmcGFyc2UkKEVYRUVYVCkgXAorCWVsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wJChFWEVFWFQpIGVsZW1lbnRzL2lkM211eCQoRVhFRVhUKSBcCisJcGlwZWxpbmVzL214ZiQoRVhFRVhUKSAkKGFtX19FWEVFWFRfMTkpIFwKKwlsaWJzL21wZWd2aWRlb3BhcnNlciQoRVhFRVhUKSBsaWJzL21wZWd0cyQoRVhFRVhUKSBcCisJbGlicy9oMjY0cGFyc2VyJChFWEVFWFQpIGxpYnMvdnA4cGFyc2VyJChFWEVFWFQpIFwKKwlsaWJzL2FnZ3JlZ2F0b3IkKEVYRUVYVCkgJChhbV9fRVhFRVhUXzIwKSBcCisJbGlicy92YzFwYXJzZXIkKEVYRUVYVCkgJChhbV9fRVhFRVhUXzIxKSAkKGFtX19FWEVFWFRfMjIpIFwKKwllbGVtZW50cy92aWV3ZmluZGVyYmluJChFWEVFWFQpICQoYW1fX0VYRUVYVF8yMykgXAorCSQoYW1fX0VYRUVYVF8yNCkgbGlicy9pbnNlcnRiaW4kKEVYRUVYVCkgJChhbV9fRVhFRVhUXzI1KSBcCisJJChhbV9fRVhFRVhUXzI2KSAkKGFtX19FWEVFWFRfMjcpICQoYW1fX0VYRUVYVF8yOCkKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUBhbV9fYXBwZW5kXzEgPSAkKFBMQVlFUl9NRURJQV9GSUxFUykgbGlicy9wbGF5ZXJfZHVtbXkuYwogc3ViZGlyID0gdGVzdHMvY2hlY2sKIEFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKIGFtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hYy1leHBhbmQubTQgXApAQCAtMTQ1LDE2ICsxNDgsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xNzcsMjUgKzE3OSwyNSBAQAogCSQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKIEBVU0VfQVNTUkVOREVSX1RSVUVAYW1fX0VYRUVYVF8xID0gZWxlbWVudHMvYXNzcmVuZGVyJChFWEVFWFQpCiBAVVNFX0RBU0hfVFJVRUBhbV9fRVhFRVhUXzIgPSBlbGVtZW50cy9kYXNoX21wZCQoRVhFRVhUKQotQFVTRV9GQUFDX1RSVUVAYW1fX0VYRUVYVF8zID0gZWxlbWVudHMvZmFhYyQoRVhFRVhUKQotQFVTRV9GQUFEX1RSVUVAYW1fX0VYRUVYVF80ID0gZWxlbWVudHMvZmFhZCQoRVhFRVhUKQotQFVTRV9WT0FBQ0VOQ19UUlVFQGFtX19FWEVFWFRfNSA9IGVsZW1lbnRzL3ZvYWFjZW5jJChFWEVFWFQpCi1AVVNFX1ZPQU1SV0JFTkNfVFJVRUBhbV9fRVhFRVhUXzYgPSBlbGVtZW50cy92b2FtcndiZW5jJChFWEVFWFQpCi1AVVNFX01QRUcyRU5DX1RSVUVAYW1fX0VYRUVYVF83ID0gZWxlbWVudHMvbXBlZzJlbmMkKEVYRUVYVCkKLUBVU0VfTVBMRVhfVFJVRUBhbV9fRVhFRVhUXzggPSBlbGVtZW50cy9tcGxleCQoRVhFRVhUKQotQFVTRV9PRkFfVFJVRUBhbV9fRVhFRVhUXzkgPSBlbGVtZW50cy9vZmEkKEVYRUVYVCkKLUBVU0VfVElNSURJVFlfVFJVRUBhbV9fRVhFRVhUXzEwID0gZWxlbWVudHMvdGltaWRpdHkkKEVYRUVYVCkKLUBVU0VfS0FURV9UUlVFQGFtX19FWEVFWFRfMTEgPSBlbGVtZW50cy9rYXRlJChFWEVFWFQpCi1AVVNFX09QRU5DVl9UUlVFQGFtX19FWEVFWFRfMTIgPSBlbGVtZW50cy90ZW1wbGF0ZW1hdGNoJChFWEVFWFQpCi1AVVNFX09QVVNfVFJVRUBhbV9fRVhFRVhUXzEzID0gZWxlbWVudHMvb3B1cyQoRVhFRVhUKQotQFVTRV9TU0gyX1RSVUVAYW1fX0VYRUVYVF8xNCA9IGVsZW1lbnRzL2N1cmxzZnRwc2luayQoRVhFRVhUKQotQFVTRV9DVVJMX1RSVUVAYW1fX0VYRUVYVF8xNSA9IGVsZW1lbnRzL2N1cmxodHRwc2luayQoRVhFRVhUKSBcCitAVVNFX0RBU0hfVFJVRUBhbV9fRVhFRVhUXzMgPSBlbGVtZW50cy9kYXNoX2RlbXV4JChFWEVFWFQpCitAVVNFX0ZBQUNfVFJVRUBhbV9fRVhFRVhUXzQgPSBlbGVtZW50cy9mYWFjJChFWEVFWFQpCitAVVNFX0ZBQURfVFJVRUBhbV9fRVhFRVhUXzUgPSBlbGVtZW50cy9mYWFkJChFWEVFWFQpCitAVVNFX1ZPQUFDRU5DX1RSVUVAYW1fX0VYRUVYVF82ID0gZWxlbWVudHMvdm9hYWNlbmMkKEVYRUVYVCkKK0BVU0VfVk9BTVJXQkVOQ19UUlVFQGFtX19FWEVFWFRfNyA9IGVsZW1lbnRzL3ZvYW1yd2JlbmMkKEVYRUVYVCkKK0BVU0VfTVBFRzJFTkNfVFJVRUBhbV9fRVhFRVhUXzggPSBlbGVtZW50cy9tcGVnMmVuYyQoRVhFRVhUKQorQFVTRV9NUExFWF9UUlVFQGFtX19FWEVFWFRfOSA9IGVsZW1lbnRzL21wbGV4JChFWEVFWFQpCitAVVNFX1NNT09USFNUUkVBTUlOR19UUlVFQGFtX19FWEVFWFRfMTAgPSBlbGVtZW50cy9tc3NkZW11eCQoRVhFRVhUKQorQFVTRV9PRkFfVFJVRUBhbV9fRVhFRVhUXzExID0gZWxlbWVudHMvb2ZhJChFWEVFWFQpCitAVVNFX1RJTUlESVRZX1RSVUVAYW1fX0VYRUVYVF8xMiA9IGVsZW1lbnRzL3RpbWlkaXR5JChFWEVFWFQpCitAVVNFX0tBVEVfVFJVRUBhbV9fRVhFRVhUXzEzID0gZWxlbWVudHMva2F0ZSQoRVhFRVhUKQorQFVTRV9PUEVOQ1ZfVFJVRUBhbV9fRVhFRVhUXzE0ID0gZWxlbWVudHMvdGVtcGxhdGVtYXRjaCQoRVhFRVhUKQorQFVTRV9TU0gyX1RSVUVAYW1fX0VYRUVYVF8xNSA9IGVsZW1lbnRzL2N1cmxzZnRwc2luayQoRVhFRVhUKQorQFVTRV9DVVJMX1RSVUVAYW1fX0VYRUVYVF8xNiA9IGVsZW1lbnRzL2N1cmxodHRwc2luayQoRVhFRVhUKSBcCiBAVVNFX0NVUkxfVFJVRUAJZWxlbWVudHMvY3VybGZpbGVzaW5rJChFWEVFWFQpIFwKLUBVU0VfQ1VSTF9UUlVFQAllbGVtZW50cy9jdXJsZnRwc2luayQoRVhFRVhUKSAkKGFtX19FWEVFWFRfMTQpIFwKK0BVU0VfQ1VSTF9UUlVFQAllbGVtZW50cy9jdXJsZnRwc2luayQoRVhFRVhUKSAkKGFtX19FWEVFWFRfMTUpIFwKIEBVU0VfQ1VSTF9UUlVFQAllbGVtZW50cy9jdXJsc210cHNpbmskKEVYRUVYVCkKLUBVU0VfU0hNX1RSVUVAYW1fX0VYRUVYVF8xNiA9IGVsZW1lbnRzL3NobSQoRVhFRVhUKQotQFVTRV9FWElGX1RSVUVAYW1fX0VYRUVYVF8xNyA9IGVsZW1lbnRzL2ppZm11eCQoRVhFRVhUKQotQFVTRV9NUEcxMjNfVFJVRUBhbV9fRVhFRVhUXzE4ID0gZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMkKEVYRUVYVCkKK0BVU0VfU0hNX1RSVUVAYW1fX0VYRUVYVF8xNyA9IGVsZW1lbnRzL3NobSQoRVhFRVhUKQorQFVTRV9FWElGX1RSVUVAYW1fX0VYRUVYVF8xOCA9IGVsZW1lbnRzL2ppZm11eCQoRVhFRVhUKQogQFVTRV9NSU1JQ19UUlVFQGFtX19FWEVFWFRfMTkgPSBwaXBlbGluZXMvbWltaWMkKEVYRUVYVCkKIEBVU0VfVVZDSDI2NF9UUlVFQGFtX19FWEVFWFRfMjAgPSBlbGVtZW50cy91dmNoMjY0ZGVtdXgkKEVYRUVYVCkKIEBVU0VfU0NIUk9fVFJVRUBhbV9fRVhFRVhUXzIxID0gZWxlbWVudHMvc2Nocm9lbmMkKEVYRUVYVCkKQEAgLTIwNyw5ICsyMDksMTIgQEAKIEBVU0VfR0xfVFJVRUAJbGlicy9nc3RnbG1lbW9yeSQoRVhFRVhUKSBcCiBAVVNFX0dMX1RSVUVACWxpYnMvZ3N0Z2x1cGxvYWQkKEVYRUVYVCkgXAogQFVTRV9HTF9UUlVFQAlsaWJzL2dzdGdsY29sb3Jjb252ZXJ0JChFWEVFWFQpIFwKK0BVU0VfR0xfVFJVRUAJbGlicy9nc3RnbHF1ZXJ5JChFWEVFWFQpIGxpYnMvZ3N0Z2xzbCQoRVhFRVhUKSBcCiBAVVNFX0dMX1RSVUVACWVsZW1lbnRzL2dsaW1hZ2VzaW5rJChFWEVFWFQpCiBAVVNFX0hMU19UUlVFQGFtX19FWEVFWFRfMjYgPSBlbGVtZW50cy9obHNkZW11eF9tM3U4JChFWEVFWFQpCi1AVVNFX05FT05fVFJVRUBhbV9fRVhFRVhUXzI3ID0gZWxlbWVudHMvbmVvbmh0dHBzcmMkKEVYRUVYVCkKK0BVU0VfSExTX1RSVUVAYW1fX0VYRUVYVF8yNyA9IGVsZW1lbnRzL2hsc19kZW11eCQoRVhFRVhUKQorQFdJVEhfR1NUX1BMQVlFUl9URVNUU19UUlVFQGFtX19FWEVFWFRfMjggPSBsaWJzL3BsYXllciQoRVhFRVhUKQorQFVTRV9ORU9OX1RSVUVAYW1fX0VYRUVYVF8yOSA9IGVsZW1lbnRzL25lb25odHRwc3JjJChFWEVFWFQpCiBQUk9HUkFNUyA9ICQobm9pbnN0X1BST0dSQU1TKQogZWxlbWVudHNfYWlmZnBhcnNlX1NPVVJDRVMgPSBlbGVtZW50cy9haWZmcGFyc2UuYwogZWxlbWVudHNfYWlmZnBhcnNlX09CSkVDVFMgPSBlbGVtZW50cy9haWZmcGFyc2UuJChPQkpFWFQpCkBAIC0yNTcsMTYgKzI2Miw2IEBACiAJZWxlbWVudHMvYXV0b3ZpZGVvY29udmVydC4kKE9CSkVYVCkKIGVsZW1lbnRzX2F1dG92aWRlb2NvbnZlcnRfTERBREQgPSAkKExEQUREKQogZWxlbWVudHNfYXV0b3ZpZGVvY29udmVydF9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKLWFtX2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfT0JKRUNUUyA9IGVsZW1lbnRzL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci4kKE9CSkVYVCkKLWVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfT0JKRUNUUyA9ICBcCi0JJChhbV9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX09CSkVDVFMpCi1lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18yKQotZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKLQkkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgXAotCSQoZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpIFwKLQkkKExERkxBR1MpIC1vICRACiBhbV9lbGVtZW50c19jYW1lcmFiaW5fT0JKRUNUUyA9ICBcCiAJZWxlbWVudHMvZWxlbWVudHNfY2FtZXJhYmluLWNhbWVyYWJpbi4kKE9CSkVYVCkKIGVsZW1lbnRzX2NhbWVyYWJpbl9PQkpFQ1RTID0gJChhbV9lbGVtZW50c19jYW1lcmFiaW5fT0JKRUNUUykKQEAgLTMwNyw2ICszMDIsMTkgQEAKIGVsZW1lbnRzX2N1cmxzbXRwc2lua19PQkpFQ1RTID0gZWxlbWVudHMvY3VybHNtdHBzaW5rLiQoT0JKRVhUKQogZWxlbWVudHNfY3VybHNtdHBzaW5rX0xEQUREID0gJChMREFERCkKIGVsZW1lbnRzX2N1cmxzbXRwc2lua19ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKK2FtX2VsZW1lbnRzX2Rhc2hfZGVtdXhfT0JKRUNUUyA9ICBcCisJZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLiQoT0JKRVhUKSBcCisJZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuJChPQkpFWFQpIFwKKwllbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi4kKE9CSkVYVCkgXAorCWVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC4kKE9CSkVYVCkKK2VsZW1lbnRzX2Rhc2hfZGVtdXhfT0JKRUNUUyA9ICQoYW1fZWxlbWVudHNfZGFzaF9kZW11eF9PQkpFQ1RTKQorZWxlbWVudHNfZGFzaF9kZW11eF9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMikgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9saWJnc3RhZGFwdGl2ZWRlbXV4LUBHU1RfQVBJX1ZFUlNJT05ALmxhCitlbGVtZW50c19kYXNoX2RlbXV4X0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAorCSQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSBcCisJJChlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgXAorCSQoTERGTEFHUykgLW8gJEAKIGFtX2VsZW1lbnRzX2Rhc2hfbXBkX09CSkVDVFMgPSAgXAogCWVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfbXBkLWRhc2hfbXBkLiQoT0JKRVhUKQogZWxlbWVudHNfZGFzaF9tcGRfT0JKRUNUUyA9ICQoYW1fZWxlbWVudHNfZGFzaF9tcGRfT0JKRUNUUykKQEAgLTM3MSw2ICszNzksMTkgQEAKIGVsZW1lbnRzX2gyNjRwYXJzZV9TT1VSQ0VTID0gZWxlbWVudHMvaDI2NHBhcnNlLmMKIGVsZW1lbnRzX2gyNjRwYXJzZV9PQkpFQ1RTID0gZWxlbWVudHMvaDI2NHBhcnNlLiQoT0JKRVhUKQogZWxlbWVudHNfaDI2NHBhcnNlX0RFUEVOREVOQ0lFUyA9IGxpYnBhcnNlci5sYSAkKGFtX19ERVBFTkRFTkNJRVNfMikKK2FtX2VsZW1lbnRzX2hsc19kZW11eF9PQkpFQ1RTID0gIFwKKwllbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy4kKE9CSkVYVCkgXAorCWVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuJChPQkpFWFQpIFwKKwllbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLiQoT0JKRVhUKSBcCisJZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWhsc19kZW11eC4kKE9CSkVYVCkKK2VsZW1lbnRzX2hsc19kZW11eF9PQkpFQ1RTID0gJChhbV9lbGVtZW50c19obHNfZGVtdXhfT0JKRUNUUykKK2VsZW1lbnRzX2hsc19kZW11eF9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18yKSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2xpYmdzdGFkYXB0aXZlZGVtdXgtQEdTVF9BUElfVkVSU0lPTkAubGEKK2VsZW1lbnRzX2hsc19kZW11eF9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKKwkkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgXAorCSQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgXAorCSQoTERGTEFHUykgLW8gJEAKIGFtX2VsZW1lbnRzX2hsc2RlbXV4X20zdThfT0JKRUNUUyA9ICBcCiAJZWxlbWVudHMvZWxlbWVudHNfaGxzZGVtdXhfbTN1OC1obHNkZW11eF9tM3U4LiQoT0JKRVhUKQogZWxlbWVudHNfaGxzZGVtdXhfbTN1OF9PQkpFQ1RTID0gJChhbV9lbGVtZW50c19obHNkZW11eF9tM3U4X09CSkVDVFMpCkBAIC00MjYsMjAgKzQ0NywyMyBAQAogZWxlbWVudHNfbXBlZ3ZpZGVvcGFyc2VfT0JKRUNUUyA9IGVsZW1lbnRzL21wZWd2aWRlb3BhcnNlLiQoT0JKRVhUKQogZWxlbWVudHNfbXBlZ3ZpZGVvcGFyc2VfREVQRU5ERU5DSUVTID0gbGlicGFyc2VyLmxhIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMikKLWVsZW1lbnRzX21wZzEyM2F1ZGlvZGVjX1NPVVJDRVMgPSBlbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jCi1lbGVtZW50c19tcGcxMjNhdWRpb2RlY19PQkpFQ1RTID0gIFwKLQllbGVtZW50cy9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy4kKE9CSkVYVCkKLWVsZW1lbnRzX21wZzEyM2F1ZGlvZGVjX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJChhbV9fREVQRU5ERU5DSUVTXzIpCi1lbGVtZW50c19tcGcxMjNhdWRpb2RlY19MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKLQkkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgXAotCSQoZWxlbWVudHNfbXBnMTIzYXVkaW9kZWNfQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSBcCi0JJChMREZMQUdTKSAtbyAkQAogZWxlbWVudHNfbXBsZXhfU09VUkNFUyA9IGVsZW1lbnRzL21wbGV4LmMKIGVsZW1lbnRzX21wbGV4X09CSkVDVFMgPSBlbGVtZW50cy9tcGxleC4kKE9CSkVYVCkKIGVsZW1lbnRzX21wbGV4X0xEQUREID0gJChMREFERCkKIGVsZW1lbnRzX21wbGV4X0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKQorYW1fZWxlbWVudHNfbXNzZGVtdXhfT0JKRUNUUyA9ICBcCisJZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy4kKE9CSkVYVCkgXAorCWVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS4kKE9CSkVYVCkgXAorCWVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi4kKE9CSkVYVCkgXAorCWVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LW1zc2RlbXV4LiQoT0JKRVhUKQorZWxlbWVudHNfbXNzZGVtdXhfT0JKRUNUUyA9ICQoYW1fZWxlbWVudHNfbXNzZGVtdXhfT0JKRUNUUykKK2VsZW1lbnRzX21zc2RlbXV4X0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18yKSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2xpYmdzdGFkYXB0aXZlZGVtdXgtQEdTVF9BUElfVkVSU0lPTkAubGEKK2VsZW1lbnRzX21zc2RlbXV4X0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAorCSQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSBcCisJJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykgXAorCS1vICRACiBlbGVtZW50c19teGZkZW11eF9TT1VSQ0VTID0gZWxlbWVudHMvbXhmZGVtdXguYwogZWxlbWVudHNfbXhmZGVtdXhfT0JKRUNUUyA9IGVsZW1lbnRzL214ZmRlbXV4LiQoT0JKRVhUKQogZWxlbWVudHNfbXhmZGVtdXhfTERBREQgPSAkKExEQUREKQpAQCAtNDUyLDI3ICs0NzYsMzYgQEAKIGVsZW1lbnRzX25lb25odHRwc3JjX09CSkVDVFMgPSBlbGVtZW50cy9uZW9uaHR0cHNyYy4kKE9CSkVYVCkKIGVsZW1lbnRzX25lb25odHRwc3JjX0xEQUREID0gJChMREFERCkKIGVsZW1lbnRzX25lb25odHRwc3JjX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKQorZWxlbWVudHNfbmV0c2ltX1NPVVJDRVMgPSBlbGVtZW50cy9uZXRzaW0uYworZWxlbWVudHNfbmV0c2ltX09CSkVDVFMgPSBlbGVtZW50cy9uZXRzaW0uJChPQkpFWFQpCitlbGVtZW50c19uZXRzaW1fTERBREQgPSAkKExEQUREKQorZWxlbWVudHNfbmV0c2ltX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKQogZWxlbWVudHNfb2ZhX1NPVVJDRVMgPSBlbGVtZW50cy9vZmEuYwogZWxlbWVudHNfb2ZhX09CSkVDVFMgPSBlbGVtZW50cy9vZmEuJChPQkpFWFQpCiBlbGVtZW50c19vZmFfTERBREQgPSAkKExEQUREKQogZWxlbWVudHNfb2ZhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKQotZWxlbWVudHNfb3B1c19TT1VSQ0VTID0gZWxlbWVudHMvb3B1cy5jCi1lbGVtZW50c19vcHVzX09CSkVDVFMgPSBlbGVtZW50cy9vcHVzLiQoT0JKRVhUKQotZWxlbWVudHNfb3B1c19MREFERCA9ICQoTERBREQpCi1lbGVtZW50c19vcHVzX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKQogZWxlbWVudHNfcGNhcHBhcnNlX1NPVVJDRVMgPSBlbGVtZW50cy9wY2FwcGFyc2UuYwogZWxlbWVudHNfcGNhcHBhcnNlX09CSkVDVFMgPSBlbGVtZW50cy9wY2FwcGFyc2UuJChPQkpFWFQpCiBlbGVtZW50c19wY2FwcGFyc2VfREVQRU5ERU5DSUVTID0gbGlicGFyc2VyLmxhICQoYW1fX0RFUEVOREVOQ0lFU18yKQotZWxlbWVudHNfcnRwb252aWZfU09VUkNFUyA9IGVsZW1lbnRzL3J0cG9udmlmLmMKLWVsZW1lbnRzX3J0cG9udmlmX09CSkVDVFMgPSAgXAotCWVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmLXJ0cG9udmlmLiQoT0JKRVhUKQotZWxlbWVudHNfcnRwb252aWZfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKK2VsZW1lbnRzX3J0cG9udmlmcGFyc2VfU09VUkNFUyA9IGVsZW1lbnRzL3J0cG9udmlmcGFyc2UuYworZWxlbWVudHNfcnRwb252aWZwYXJzZV9PQkpFQ1RTID0gIFwKKwllbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZnBhcnNlLXJ0cG9udmlmcGFyc2UuJChPQkpFWFQpCitlbGVtZW50c19ydHBvbnZpZnBhcnNlX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzIpCi1lbGVtZW50c19ydHBvbnZpZl9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKK2VsZW1lbnRzX3J0cG9udmlmcGFyc2VfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCiAJJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpIFwKLQkkKGVsZW1lbnRzX3J0cG9udmlmX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgJChMREZMQUdTKSBcCi0JLW8gJEAKKwkkKGVsZW1lbnRzX3J0cG9udmlmcGFyc2VfQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSBcCisJJChMREZMQUdTKSAtbyAkQAorZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfU09VUkNFUyA9IGVsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMKK2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX09CSkVDVFMgPSBlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcC1ydHBvbnZpZnRpbWVzdGFtcC4kKE9CSkVYVCkKK2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzIpCitlbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcF9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKKwkkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgXAorCSQoZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSBcCisJJChMREZMQUdTKSAtbyAkQAogZWxlbWVudHNfc2Nocm9lbmNfU09VUkNFUyA9IGVsZW1lbnRzL3NjaHJvZW5jLmMKIGVsZW1lbnRzX3NjaHJvZW5jX09CSkVDVFMgPSBlbGVtZW50cy9zY2hyb2VuYy4kKE9CSkVYVCkKIGVsZW1lbnRzX3NjaHJvZW5jX0xEQUREID0gJChMREFERCkKQEAgLTUwMyw2ICs1MzYsMTYgQEAKIAkkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgXAogCSQoZWxlbWVudHNfdXZjaDI2NGRlbXV4X0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgXAogCSQoTERGTEFHUykgLW8gJEAKK2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9TT1VSQ0VTID0gIFwKKwllbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYworZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsX09CSkVDVFMgPSBlbGVtZW50cy9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLiQoT0JKRVhUKQorZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzIpCitlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCisJJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpIFwKKwkkKGVsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9DRkxBR1MpICQoQ0ZMQUdTKSBcCisJJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACiBlbGVtZW50c192aWV3ZmluZGVyYmluX1NPVVJDRVMgPSBlbGVtZW50cy92aWV3ZmluZGVyYmluLmMKIGVsZW1lbnRzX3ZpZXdmaW5kZXJiaW5fT0JKRUNUUyA9IGVsZW1lbnRzL3ZpZXdmaW5kZXJiaW4uJChPQkpFWFQpCiBlbGVtZW50c192aWV3ZmluZGVyYmluX0xEQUREID0gJChMREFERCkKQEAgLTU3OSw2ICs2MjIsMjUgQEAKIAkkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgXAogCSQobGlic19nc3RnbG1lbW9yeV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykgXAogCS1vICRACitsaWJzX2dzdGdscXVlcnlfU09VUkNFUyA9IGxpYnMvZ3N0Z2xxdWVyeS5jCitsaWJzX2dzdGdscXVlcnlfT0JKRUNUUyA9IGxpYnMvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkuJChPQkpFWFQpCitsaWJzX2dzdGdscXVlcnlfREVQRU5ERU5DSUVTID0gIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzIpCitsaWJzX2dzdGdscXVlcnlfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCisJJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpIFwKKwkkKGxpYnNfZ3N0Z2xxdWVyeV9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykgXAorCS1vICRACitsaWJzX2dzdGdsc2xfU09VUkNFUyA9IGxpYnMvZ3N0Z2xzbC5jCitsaWJzX2dzdGdsc2xfT0JKRUNUUyA9IGxpYnMvbGlic19nc3RnbHNsLWdzdGdsc2wuJChPQkpFWFQpCitsaWJzX2dzdGdsc2xfREVQRU5ERU5DSUVTID0gIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzIpCitsaWJzX2dzdGdsc2xfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgXAorCSQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpICQobGlic19nc3RnbHNsX0NGTEFHUykgXAorCSQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKIGxpYnNfZ3N0Z2x1cGxvYWRfU09VUkNFUyA9IGxpYnMvZ3N0Z2x1cGxvYWQuYwogbGlic19nc3RnbHVwbG9hZF9PQkpFQ1RTID0gIFwKIAlsaWJzL2xpYnNfZ3N0Z2x1cGxvYWQtZ3N0Z2x1cGxvYWQuJChPQkpFWFQpCkBAIC02MjYsNiArNjg4LDE2IEBACiAJJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpIFwKIAkkKGxpYnNfbXBlZ3ZpZGVvcGFyc2VyX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgXAogCSQoTERGTEFHUykgLW8gJEAKK2FtX2xpYnNfcGxheWVyX09CSkVDVFMgPSBsaWJzL2xpYnNfcGxheWVyLXBsYXllci4kKE9CSkVYVCkKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUBub2Rpc3RfbGlic19wbGF5ZXJfT0JKRUNUUyA9IGxpYnMvbGlic19wbGF5ZXItcGxheWVyX2R1bW15LiQoT0JKRVhUKQorbGlic19wbGF5ZXJfT0JKRUNUUyA9ICQoYW1fbGlic19wbGF5ZXJfT0JKRUNUUykgXAorCSQobm9kaXN0X2xpYnNfcGxheWVyX09CSkVDVFMpCitsaWJzX3BsYXllcl9ERVBFTkRFTkNJRVMgPSAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3BsYXllci9saWJnc3RwbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAubGEgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMikKK2xpYnNfcGxheWVyX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpIFwKKwkkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSAkKGxpYnNfcGxheWVyX0NGTEFHUykgXAorCSQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKIGxpYnNfdmMxcGFyc2VyX1NPVVJDRVMgPSBsaWJzL3ZjMXBhcnNlci5jCiBsaWJzX3ZjMXBhcnNlcl9PQkpFQ1RTID0gbGlicy9saWJzX3ZjMXBhcnNlci12YzFwYXJzZXIuJChPQkpFWFQpCiBsaWJzX3ZjMXBhcnNlcl9ERVBFTkRFTkNJRVMgPSAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9saWJnc3Rjb2RlY3BhcnNlcnMtQEdTVF9BUElfVkVSU0lPTkAubGEgXApAQCAtNzIxLDYwICs3OTMsNjYgQEAKIAllbGVtZW50cy9hc2ZtdXguYyBlbGVtZW50cy9hc3NyZW5kZXIuYyBcCiAJZWxlbWVudHMvYXVkaW9pbnRlcmxlYXZlLmMgZWxlbWVudHMvYXVkaW9taXhlci5jIFwKIAllbGVtZW50cy9hdXRvY29udmVydC5jIGVsZW1lbnRzL2F1dG92aWRlb2NvbnZlcnQuYyBcCi0JJChlbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX1NPVVJDRVMpIFwKIAkkKGVsZW1lbnRzX2NhbWVyYWJpbl9TT1VSQ0VTKSBlbGVtZW50cy9jb21wb3NpdG9yLmMgXAogCWVsZW1lbnRzL2N1cmxmaWxlc2luay5jIGVsZW1lbnRzL2N1cmxmdHBzaW5rLmMgXAogCWVsZW1lbnRzL2N1cmxodHRwc2luay5jIGVsZW1lbnRzL2N1cmxzZnRwc2luay5jIFwKLQllbGVtZW50cy9jdXJsc210cHNpbmsuYyAkKGVsZW1lbnRzX2Rhc2hfbXBkX1NPVVJDRVMpIFwKLQllbGVtZW50cy9kYXRhdXJpc3JjLmMgZWxlbWVudHMvZmFhYy5jIGVsZW1lbnRzL2ZhYWQuYyBcCi0JZWxlbWVudHMvZ2RwZGVwYXkuYyBlbGVtZW50cy9nZHBwYXkuYyBlbGVtZW50cy9nbGltYWdlc2luay5jIFwKLQllbGVtZW50cy9oMjYzcGFyc2UuYyBlbGVtZW50cy9oMjY0cGFyc2UuYyBcCisJZWxlbWVudHMvY3VybHNtdHBzaW5rLmMgJChlbGVtZW50c19kYXNoX2RlbXV4X1NPVVJDRVMpIFwKKwkkKGVsZW1lbnRzX2Rhc2hfbXBkX1NPVVJDRVMpIGVsZW1lbnRzL2RhdGF1cmlzcmMuYyBcCisJZWxlbWVudHMvZmFhYy5jIGVsZW1lbnRzL2ZhYWQuYyBlbGVtZW50cy9nZHBkZXBheS5jIFwKKwllbGVtZW50cy9nZHBwYXkuYyBlbGVtZW50cy9nbGltYWdlc2luay5jIGVsZW1lbnRzL2gyNjNwYXJzZS5jIFwKKwllbGVtZW50cy9oMjY0cGFyc2UuYyAkKGVsZW1lbnRzX2hsc19kZW11eF9TT1VSQ0VTKSBcCiAJJChlbGVtZW50c19obHNkZW11eF9tM3U4X1NPVVJDRVMpIGVsZW1lbnRzL2lkM211eC5jIFwKIAkkKGVsZW1lbnRzX2ppZm11eF9TT1VSQ0VTKSBlbGVtZW50cy9qcGVncGFyc2UuYyBcCiAJZWxlbWVudHMva2F0ZS5jIGVsZW1lbnRzL21wZWcyZW5jLmMgZWxlbWVudHMvbXBlZzR2aWRlb3BhcnNlLmMgXAogCWVsZW1lbnRzL21wZWd0c211eC5jIGVsZW1lbnRzL21wZWd2aWRlb3BhcnNlLmMgXAotCWVsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMgZWxlbWVudHMvbXBsZXguYyBlbGVtZW50cy9teGZkZW11eC5jIFwKLQllbGVtZW50cy9teGZtdXguYyBlbGVtZW50cy9uZW9uaHR0cHNyYy5jIGVsZW1lbnRzL29mYS5jIFwKLQllbGVtZW50cy9vcHVzLmMgZWxlbWVudHMvcGNhcHBhcnNlLmMgZWxlbWVudHMvcnRwb252aWYuYyBcCisJZWxlbWVudHMvbXBsZXguYyAkKGVsZW1lbnRzX21zc2RlbXV4X1NPVVJDRVMpIFwKKwllbGVtZW50cy9teGZkZW11eC5jIGVsZW1lbnRzL214Zm11eC5jIGVsZW1lbnRzL25lb25odHRwc3JjLmMgXAorCWVsZW1lbnRzL25ldHNpbS5jIGVsZW1lbnRzL29mYS5jIGVsZW1lbnRzL3BjYXBwYXJzZS5jIFwKKwllbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMgZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYyBcCiAJZWxlbWVudHMvc2Nocm9lbmMuYyBlbGVtZW50cy9zaG0uYyBlbGVtZW50cy90ZW1wbGF0ZW1hdGNoLmMgXAogCWVsZW1lbnRzL3RpbWlkaXR5LmMgZWxlbWVudHMvdXZjaDI2NGRlbXV4LmMgXAotCWVsZW1lbnRzL3ZpZXdmaW5kZXJiaW4uYyBlbGVtZW50cy92b2FhY2VuYy5jIFwKLQllbGVtZW50cy92b2FtcndiZW5jLmMgZWxlbWVudHMveDI2NWVuYy5jIGVsZW1lbnRzL3piYXIuYyBcCi0JZ2VuZXJpYy9zdGF0ZXMuYyBsaWJzL2FnZ3JlZ2F0b3IuYyBsaWJzL2dzdGdsY29sb3Jjb252ZXJ0LmMgXAotCWxpYnMvZ3N0Z2xjb250ZXh0LmMgbGlicy9nc3RnbG1lbW9yeS5jIGxpYnMvZ3N0Z2x1cGxvYWQuYyBcCi0JbGlicy9oMjY0cGFyc2VyLmMgbGlicy9pbnNlcnRiaW4uYyBsaWJzL21wZWd0cy5jIFwKLQlsaWJzL21wZWd2aWRlb3BhcnNlci5jIGxpYnMvdmMxcGFyc2VyLmMgbGlicy92cDhwYXJzZXIuYyBcCi0JJChub2Rpc3Rfb3JjX2F1ZGlvbWl4ZXJfU09VUkNFUykgJChub2Rpc3Rfb3JjX2JheWVyX1NPVVJDRVMpIFwKLQkkKG5vZGlzdF9vcmNfY29tcG9zaXRvcl9TT1VSQ0VTKSBwaXBlbGluZXMvbWltaWMuYyBcCi0JcGlwZWxpbmVzL214Zi5jIHBpcGVsaW5lcy9zdHJlYW1oZWFkZXIuYworCWVsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jIGVsZW1lbnRzL3ZpZXdmaW5kZXJiaW4uYyBcCisJZWxlbWVudHMvdm9hYWNlbmMuYyBlbGVtZW50cy92b2FtcndiZW5jLmMgZWxlbWVudHMveDI2NWVuYy5jIFwKKwllbGVtZW50cy96YmFyLmMgZ2VuZXJpYy9zdGF0ZXMuYyBsaWJzL2FnZ3JlZ2F0b3IuYyBcCisJbGlicy9nc3RnbGNvbG9yY29udmVydC5jIGxpYnMvZ3N0Z2xjb250ZXh0LmMgXAorCWxpYnMvZ3N0Z2xtZW1vcnkuYyBsaWJzL2dzdGdscXVlcnkuYyBsaWJzL2dzdGdsc2wuYyBcCisJbGlicy9nc3RnbHVwbG9hZC5jIGxpYnMvaDI2NHBhcnNlci5jIGxpYnMvaW5zZXJ0YmluLmMgXAorCWxpYnMvbXBlZ3RzLmMgbGlicy9tcGVndmlkZW9wYXJzZXIuYyAkKGxpYnNfcGxheWVyX1NPVVJDRVMpIFwKKwkkKG5vZGlzdF9saWJzX3BsYXllcl9TT1VSQ0VTKSBsaWJzL3ZjMXBhcnNlci5jIFwKKwlsaWJzL3ZwOHBhcnNlci5jICQobm9kaXN0X29yY19hdWRpb21peGVyX1NPVVJDRVMpIFwKKwkkKG5vZGlzdF9vcmNfYmF5ZXJfU09VUkNFUykgJChub2Rpc3Rfb3JjX2NvbXBvc2l0b3JfU09VUkNFUykgXAorCXBpcGVsaW5lcy9taW1pYy5jIHBpcGVsaW5lcy9teGYuYyBwaXBlbGluZXMvc3RyZWFtaGVhZGVyLmMKIERJU1RfU09VUkNFUyA9ICQobGlicGFyc2VyX2xhX1NPVVJDRVMpIGVsZW1lbnRzL2FpZmZwYXJzZS5jIFwKIAllbGVtZW50cy9hc2ZtdXguYyBlbGVtZW50cy9hc3NyZW5kZXIuYyBcCiAJZWxlbWVudHMvYXVkaW9pbnRlcmxlYXZlLmMgZWxlbWVudHMvYXVkaW9taXhlci5jIFwKIAllbGVtZW50cy9hdXRvY29udmVydC5jIGVsZW1lbnRzL2F1dG92aWRlb2NvbnZlcnQuYyBcCi0JJChlbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX1NPVVJDRVMpIFwKIAkkKGVsZW1lbnRzX2NhbWVyYWJpbl9TT1VSQ0VTKSBlbGVtZW50cy9jb21wb3NpdG9yLmMgXAogCWVsZW1lbnRzL2N1cmxmaWxlc2luay5jIGVsZW1lbnRzL2N1cmxmdHBzaW5rLmMgXAogCWVsZW1lbnRzL2N1cmxodHRwc2luay5jIGVsZW1lbnRzL2N1cmxzZnRwc2luay5jIFwKLQllbGVtZW50cy9jdXJsc210cHNpbmsuYyAkKGVsZW1lbnRzX2Rhc2hfbXBkX1NPVVJDRVMpIFwKLQllbGVtZW50cy9kYXRhdXJpc3JjLmMgZWxlbWVudHMvZmFhYy5jIGVsZW1lbnRzL2ZhYWQuYyBcCi0JZWxlbWVudHMvZ2RwZGVwYXkuYyBlbGVtZW50cy9nZHBwYXkuYyBlbGVtZW50cy9nbGltYWdlc2luay5jIFwKLQllbGVtZW50cy9oMjYzcGFyc2UuYyBlbGVtZW50cy9oMjY0cGFyc2UuYyBcCisJZWxlbWVudHMvY3VybHNtdHBzaW5rLmMgJChlbGVtZW50c19kYXNoX2RlbXV4X1NPVVJDRVMpIFwKKwkkKGVsZW1lbnRzX2Rhc2hfbXBkX1NPVVJDRVMpIGVsZW1lbnRzL2RhdGF1cmlzcmMuYyBcCisJZWxlbWVudHMvZmFhYy5jIGVsZW1lbnRzL2ZhYWQuYyBlbGVtZW50cy9nZHBkZXBheS5jIFwKKwllbGVtZW50cy9nZHBwYXkuYyBlbGVtZW50cy9nbGltYWdlc2luay5jIGVsZW1lbnRzL2gyNjNwYXJzZS5jIFwKKwllbGVtZW50cy9oMjY0cGFyc2UuYyAkKGVsZW1lbnRzX2hsc19kZW11eF9TT1VSQ0VTKSBcCiAJJChlbGVtZW50c19obHNkZW11eF9tM3U4X1NPVVJDRVMpIGVsZW1lbnRzL2lkM211eC5jIFwKIAkkKGVsZW1lbnRzX2ppZm11eF9TT1VSQ0VTKSBlbGVtZW50cy9qcGVncGFyc2UuYyBcCiAJZWxlbWVudHMva2F0ZS5jIGVsZW1lbnRzL21wZWcyZW5jLmMgZWxlbWVudHMvbXBlZzR2aWRlb3BhcnNlLmMgXAogCWVsZW1lbnRzL21wZWd0c211eC5jIGVsZW1lbnRzL21wZWd2aWRlb3BhcnNlLmMgXAotCWVsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMgZWxlbWVudHMvbXBsZXguYyBlbGVtZW50cy9teGZkZW11eC5jIFwKLQllbGVtZW50cy9teGZtdXguYyBlbGVtZW50cy9uZW9uaHR0cHNyYy5jIGVsZW1lbnRzL29mYS5jIFwKLQllbGVtZW50cy9vcHVzLmMgZWxlbWVudHMvcGNhcHBhcnNlLmMgZWxlbWVudHMvcnRwb252aWYuYyBcCisJZWxlbWVudHMvbXBsZXguYyAkKGVsZW1lbnRzX21zc2RlbXV4X1NPVVJDRVMpIFwKKwllbGVtZW50cy9teGZkZW11eC5jIGVsZW1lbnRzL214Zm11eC5jIGVsZW1lbnRzL25lb25odHRwc3JjLmMgXAorCWVsZW1lbnRzL25ldHNpbS5jIGVsZW1lbnRzL29mYS5jIGVsZW1lbnRzL3BjYXBwYXJzZS5jIFwKKwllbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMgZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYyBcCiAJZWxlbWVudHMvc2Nocm9lbmMuYyBlbGVtZW50cy9zaG0uYyBlbGVtZW50cy90ZW1wbGF0ZW1hdGNoLmMgXAogCWVsZW1lbnRzL3RpbWlkaXR5LmMgZWxlbWVudHMvdXZjaDI2NGRlbXV4LmMgXAotCWVsZW1lbnRzL3ZpZXdmaW5kZXJiaW4uYyBlbGVtZW50cy92b2FhY2VuYy5jIFwKLQllbGVtZW50cy92b2FtcndiZW5jLmMgZWxlbWVudHMveDI2NWVuYy5jIGVsZW1lbnRzL3piYXIuYyBcCi0JZ2VuZXJpYy9zdGF0ZXMuYyBsaWJzL2FnZ3JlZ2F0b3IuYyBsaWJzL2dzdGdsY29sb3Jjb252ZXJ0LmMgXAotCWxpYnMvZ3N0Z2xjb250ZXh0LmMgbGlicy9nc3RnbG1lbW9yeS5jIGxpYnMvZ3N0Z2x1cGxvYWQuYyBcCi0JbGlicy9oMjY0cGFyc2VyLmMgbGlicy9pbnNlcnRiaW4uYyBsaWJzL21wZWd0cy5jIFwKLQlsaWJzL21wZWd2aWRlb3BhcnNlci5jIGxpYnMvdmMxcGFyc2VyLmMgbGlicy92cDhwYXJzZXIuYyBcCi0JcGlwZWxpbmVzL21pbWljLmMgcGlwZWxpbmVzL214Zi5jIHBpcGVsaW5lcy9zdHJlYW1oZWFkZXIuYworCWVsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jIGVsZW1lbnRzL3ZpZXdmaW5kZXJiaW4uYyBcCisJZWxlbWVudHMvdm9hYWNlbmMuYyBlbGVtZW50cy92b2FtcndiZW5jLmMgZWxlbWVudHMveDI2NWVuYy5jIFwKKwllbGVtZW50cy96YmFyLmMgZ2VuZXJpYy9zdGF0ZXMuYyBsaWJzL2FnZ3JlZ2F0b3IuYyBcCisJbGlicy9nc3RnbGNvbG9yY29udmVydC5jIGxpYnMvZ3N0Z2xjb250ZXh0LmMgXAorCWxpYnMvZ3N0Z2xtZW1vcnkuYyBsaWJzL2dzdGdscXVlcnkuYyBsaWJzL2dzdGdsc2wuYyBcCisJbGlicy9nc3RnbHVwbG9hZC5jIGxpYnMvaDI2NHBhcnNlci5jIGxpYnMvaW5zZXJ0YmluLmMgXAorCWxpYnMvbXBlZ3RzLmMgbGlicy9tcGVndmlkZW9wYXJzZXIuYyAkKGxpYnNfcGxheWVyX1NPVVJDRVMpIFwKKwlsaWJzL3ZjMXBhcnNlci5jIGxpYnMvdnA4cGFyc2VyLmMgcGlwZWxpbmVzL21pbWljLmMgXAorCXBpcGVsaW5lcy9teGYuYyBwaXBlbGluZXMvc3RyZWFtaGVhZGVyLmMKIGFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0gXAogICBjYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKICAgICBufG5vfE5PKSBmYWxzZTs7IFwKQEAgLTEwNDIsNiArMTEyMCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMTA3OSw2ICsxMTU5LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0xMDg3LDcgKzExNjksNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0xMTA2LDggKzExODcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMTEyNCwxNiArMTIwNiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0xMTU5LDYgKzEyNDIsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0xMTg0LDYgKzEyNjksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSAkKHRvcF9idWlsZGRpcikvdG9vbHMKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC0xMjg1LDYgKzEzNzIsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtMTI5OCw4ICsxMzg2LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtMTMxNSw2ICsxNDAxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTEzNzIsMTYgKzE0NjAsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC0xNDMzLDYgKzE1MjMsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtMTQ0Myw2ICsxNTM0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtMTQ1Miw2ICsxNTQ0LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTE0ODksNyArMTU4Myw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtMTUzMCw2ICsxNjIzLDIwIEBACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAogCisjIEdTVF9QTFVHSU5TX1hZWl9ESVIgaXMgb25seSBzZXQgaW4gYW4gdW5pbnN0YWxsZWQgc2V0dXAKK0FNX1RFU1RTX0VOVklST05NRU5UID0gQ0tfREVGQVVMVF9USU1FT1VUPTIwICQoUkVHSVNUUllfRU5WSVJPTk1FTlQpIFwKKwlHU1RfUExVR0lOX1NZU1RFTV9QQVRIXzFfMD0gXAorCUdTVF9QTFVHSU5fUEFUSF8xXzA9JCh0b3BfYnVpbGRkaXIpL2dzdDokKHRvcF9idWlsZGRpcikvc3lzOiQodG9wX2J1aWxkZGlyKS9leHQ6JChHU1RfUExVR0lOU19MSUJBVl9ESVIpOiQoR1NUX1BMVUdJTlNfVUdMWV9ESVIpOiQoR1NUX1BMVUdJTlNfR09PRF9ESVIpOiQoR1NUX1BMVUdJTlNfQkFTRV9ESVIpOiQoR1NUX1BMVUdJTlNfRElSKSBcCisJR1NUX1BMVUdJTl9MT0FESU5HX1dISVRFTElTVD0iZ3N0cmVhbWVyQCQoR1NUX1BMVUdJTlNfRElSKTpnc3QtcGx1Z2lucy1iYXNlQCQoR1NUUEJfUExVR0lOU19ESVIpOmdzdC1wbHVnaW5zLWdvb2Q6Z3N0LXBsdWdpbnMtdWdseTpnc3QtbGliYXY6Z3N0LXBsdWdpbnMtYmFkQCQodG9wX2J1aWxkZGlyKSIgXAorCUdTVF9TVEFURV9JR05PUkVfRUxFTUVOVFM9ImFwZXhzaW5rIGF2ZHRwc3JjIGNhbWVyYWJpbiBcCisJZGMxMzk0c3JjIGRjY3BjbGllbnRzcmMgZGNjcGNsaWVudHNpbmsgZGNjcHNlcnZlcnNyYyBcCisJZGNjcHNlcnZlcnNpbmsgZGVja2xpbmtzcmMgZGVja2xpbmtzaW5rIGR0bHNzcnRwZGVjIFwKKwlkdGxzc3J0cGVuYyBkdmJzcmMgZHZiYmFzZWJpbiBkZmJ2aWRlb3NpbmsgZmVzdGl2YWwgZmx1aWRzeW50aCBcCisJbGluc3lzc2Rpc3JjIGxpbnN5c3NkaXNpbmsgbmFzc2luayByc25kdmRiaW4gc2RsYXVkaW9zaW5rIFwKKwlzZGx2aWRlb3NpbmsgdmNkc3JjIHJmYnNyYyB2ZHBhdXl1dnZpZGVvIHZkcGF1dmlkZW95dXYgXAorCXZkcGF1bXBlZ2RlYyB2ZHBhdW1wZWc0ZGVjIHZkcGF1aDI2NGRlYyB2ZHBhdXZpZGVvcG9zdHByb2Nlc3MgXAorCXZkcGF1c2luayBuZW9uaHR0cHNyYyIKKwogIyBpbnNwZWN0IGV2ZXJ5IHBsdWdpbiBmZWF0dXJlCiBHU1RfSU5TUEVDVCA9ICQoR1NUX1RPT0xTX0RJUikvZ3N0LWluc3BlY3QtJChHU1RfQVBJX1ZFUlNJT04pCiBDSEVDS19SRUdJU1RSWSA9ICQodG9wX2J1aWxkZGlyKS90ZXN0cy9jaGVjay90ZXN0LXJlZ2lzdHJ5LnJlZwpAQCAtMTUzOCwyNyArMTY0NSwxNSBAQAogCUdTVF9SRUdJU1RSWV8xXzA9JChDSEVDS19SRUdJU1RSWSkKIAogCi0jIEdTVF9QTFVHSU5TX1hZWl9ESVIgaXMgb25seSBzZXQgaW4gYW4gdW5pbnN0YWxsZWQgc2V0dXAKLUFNX1RFU1RTX0VOVklST05NRU5UID0gXAotCSQoUkVHSVNUUllfRU5WSVJPTk1FTlQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotCUdTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wPQkJCQlcCi0JR1NUX1BMVUdJTl9QQVRIXzFfMD0kKHRvcF9idWlsZGRpcikvZ3N0OiQodG9wX2J1aWxkZGlyKS9zeXM6JCh0b3BfYnVpbGRkaXIpL2V4dDokKEdTVF9QTFVHSU5TX0xJQkFWX0RJUik6JChHU1RfUExVR0lOU19VR0xZX0RJUik6JChHU1RfUExVR0lOU19HT09EX0RJUik6JChHU1RfUExVR0lOU19CQVNFX0RJUik6JChHU1RfUExVR0lOU19ESVIpIFwKLQlHU1RfUExVR0lOX0xPQURJTkdfV0hJVEVMSVNUPSJnc3RyZWFtZXJAJChHU1RfUExVR0lOU19ESVIpOmdzdC1wbHVnaW5zLWJhc2VAJChHU1RQQl9QTFVHSU5TX0RJUik6Z3N0LXBsdWdpbnMtZ29vZDpnc3QtcGx1Z2lucy11Z2x5OmdzdC1saWJhdjpnc3QtcGx1Z2lucy1iYWRAJCh0b3BfYnVpbGRkaXIpIiBcCi0JR1NUX1NUQVRFX0lHTk9SRV9FTEVNRU5UUz0iYXBleHNpbmsgYXZkdHBzcmMgY2FtZXJhYmluIGRjMTM5NHNyYyBcCi0JICAgIGRjY3BjbGllbnRzcmMgZGNjcGNsaWVudHNpbmsgZGNjcHNlcnZlcnNyYyBkY2Nwc2VydmVyc2luayBkZWNrbGlua3NyYyBcCi0JICAgIGRlY2tsaW5rc2luayBkdGxzc3J0cGRlYyBkdGxzc3J0cGVuYyBkdmJzcmMgZHZiYmFzZWJpbiBkZmJ2aWRlb3NpbmsgZmVzdGl2YWwgZmx1aWRzeW50aCBnc2V0dGluZ3N2aWRlb3NyYyBcCi0JICAgIGdzZXR0aW5nc3ZpZGVvc2luayBnc2V0dGluZ3NhdWRpb3NyYyBnc2V0dGluZ3NhdWRpb3NpbmsgbGluc3lzc2Rpc3JjIGxpbnN5c3NkaXNpbmsgbmFzc2luayBcCi0JICAgIHJzbmR2ZGJpbiBzZGxhdWRpb3Npbmsgc2RsdmlkZW9zaW5rIHZjZHNyYyByZmJzcmMgdmRwYXV5dXZ2aWRlbyB2ZHBhdXZpZGVveXV2IFwKLQkgICAgdmRwYXVtcGVnZGVjIHZkcGF1bXBlZzRkZWMgdmRwYXVoMjY0ZGVjIHZkcGF1dmlkZW9wb3N0cHJvY2VzcyB2ZHBhdXNpbmsgbmVvbmh0dHBzcmMiCi0KLQogIyB0aGUgY29yZSBkdW1wcyBvZiBzb21lIG1hY2hpbmVzIGhhdmUgUElEcyBhcHBlbmRlZAotQ0xFQU5GSUxFUyA9IGNvcmUuKiB0ZXN0LXJlZ2lzdHJ5LioKK0NMRUFORklMRVMgPSBjb3JlLiogdGVzdC1yZWdpc3RyeS4qICQoYW1fX2FwcGVuZF8xKQogU1VQUFJFU1NJT05TID0gJCh0b3Bfc3JjZGlyKS9jb21tb24vZ3N0LnN1cHAgJChzcmNkaXIpL2dzdC1wbHVnaW5zLWJhZC5zdXBwCiBAVVNFX0FTU1JFTkRFUl9GQUxTRUBjaGVja19hc3NyZW5kZXIgPSAKIEBVU0VfQVNTUkVOREVSX1RSVUVAY2hlY2tfYXNzcmVuZGVyID0gZWxlbWVudHMvYXNzcmVuZGVyCiBAVVNFX0RBU0hfRkFMU0VAY2hlY2tfZGFzaCA9IAogQFVTRV9EQVNIX1RSVUVAY2hlY2tfZGFzaCA9IGVsZW1lbnRzL2Rhc2hfbXBkCitAVVNFX0RBU0hfRkFMU0VAY2hlY2tfZGFzaF9kZW11eCA9IAorQFVTRV9EQVNIX1RSVUVAY2hlY2tfZGFzaF9kZW11eCA9IGVsZW1lbnRzL2Rhc2hfZGVtdXgKIEBVU0VfRkFBQ19GQUxTRUBjaGVja19mYWFjID0gCiBAVVNFX0ZBQUNfVFJVRUBjaGVja19mYWFjID0gZWxlbWVudHMvZmFhYwogQFVTRV9GQUFEX0ZBTFNFQGNoZWNrX2ZhYWQgPSAKQEAgLTE1NzEsMTAgKzE2NjYsMTAgQEAKIEBVU0VfRVhJRl9UUlVFQGNoZWNrX2ppZm11eCA9IGVsZW1lbnRzL2ppZm11eAogQFVTRV9NUEVHMkVOQ19GQUxTRUBjaGVja19tcGVnMmVuYyA9IAogQFVTRV9NUEVHMkVOQ19UUlVFQGNoZWNrX21wZWcyZW5jID0gZWxlbWVudHMvbXBlZzJlbmMKLUBVU0VfTVBHMTIzX0ZBTFNFQGNoZWNrX21wZzEyMyA9IAotQFVTRV9NUEcxMjNfVFJVRUBjaGVja19tcGcxMjMgPSBlbGVtZW50cy9tcGcxMjNhdWRpb2RlYwogQFVTRV9NUExFWF9GQUxTRUBjaGVja19tcGxleCA9IAogQFVTRV9NUExFWF9UUlVFQGNoZWNrX21wbGV4ID0gZWxlbWVudHMvbXBsZXgKK0BVU0VfU01PT1RIU1RSRUFNSU5HX0ZBTFNFQGNoZWNrX21zc2RlbXV4ID0gCitAVVNFX1NNT09USFNUUkVBTUlOR19UUlVFQGNoZWNrX21zc2RlbXV4ID0gZWxlbWVudHMvbXNzZGVtdXgKIEBVU0VfTkVPTl9GQUxTRUBjaGVja19uZW9uID0gCiBAVVNFX05FT05fVFJVRUBjaGVja19uZW9uID0gZWxlbWVudHMvbmVvbmh0dHBzcmMKIEBVU0VfT0ZBX0ZBTFNFQGNoZWNrX29mYSA9IApAQCAtMTU5NSwxMiArMTY5MCwxNCBAQAogQFVTRV9aQkFSX1RSVUVAY2hlY2tfemJhciA9IGVsZW1lbnRzL3piYXIKIEBVU0VfT1BFTkNWX0ZBTFNFQGNoZWNrX29wZW5jdiA9IAogQFVTRV9PUEVOQ1ZfVFJVRUBjaGVja19vcGVuY3YgPSBlbGVtZW50cy90ZW1wbGF0ZW1hdGNoCi1AVVNFX09QVVNfRkFMU0VAY2hlY2tfb3B1cyA9IAotQFVTRV9PUFVTX1RSVUVAY2hlY2tfb3B1cyA9IGVsZW1lbnRzL29wdXMKIEBVU0VfU1NIMl9GQUxTRUBjaGVja19jdXJsX3NmdHAgPSAKIEBVU0VfU1NIMl9UUlVFQGNoZWNrX2N1cmxfc2Z0cCA9IGVsZW1lbnRzL2N1cmxzZnRwc2luaworQFVTRV9ITFNfRkFMU0VAY2hlY2tfaGxzZGVtdXhfbTN1OCA9IAorQFVTRV9ITFNfVFJVRUBjaGVja19obHNkZW11eF9tM3U4ID0gZWxlbWVudHMvaGxzZGVtdXhfbTN1OAogQFVTRV9ITFNfRkFMU0VAY2hlY2tfaGxzZGVtdXggPSAKLUBVU0VfSExTX1RSVUVAY2hlY2tfaGxzZGVtdXggPSBlbGVtZW50cy9obHNkZW11eF9tM3U4CitAVVNFX0hMU19UUlVFQGNoZWNrX2hsc2RlbXV4ID0gZWxlbWVudHMvaGxzX2RlbXV4CitAV0lUSF9HU1RfUExBWUVSX1RFU1RTX0ZBTFNFQGNoZWNrX3BsYXllciA9IAorQFdJVEhfR1NUX1BMQVlFUl9URVNUU19UUlVFQGNoZWNrX3BsYXllciA9IGxpYnMvcGxheWVyCiBAVVNFX0NVUkxfRkFMU0VAY2hlY2tfY3VybCA9IAogQFVTRV9DVVJMX1RSVUVAY2hlY2tfY3VybCA9IGVsZW1lbnRzL2N1cmxodHRwc2luayBcCiBAVVNFX0NVUkxfVFJVRUAJZWxlbWVudHMvY3VybGZpbGVzaW5rIFwKQEAgLTE2MjQsNiArMTcyMSw4IEBACiBAVVNFX0dMX1RSVUVAICAgIGxpYnMvZ3N0Z2xtZW1vcnkgXAogQFVTRV9HTF9UUlVFQCAgICBsaWJzL2dzdGdsdXBsb2FkIFwKIEBVU0VfR0xfVFJVRUAgICAgbGlicy9nc3RnbGNvbG9yY29udmVydCBcCitAVVNFX0dMX1RSVUVAICAgIGxpYnMvZ3N0Z2xxdWVyeSBcCitAVVNFX0dMX1RSVUVAICAgIGxpYnMvZ3N0Z2xzbCBcCiBAVVNFX0dMX1RSVUVAICAgIGVsZW1lbnRzL2dsaW1hZ2VzaW5rCiAKIFZBTEdSSU5EX1RPX0ZJWCA9IFwKQEAgLTE3MTAsNiArMTgwOSwxNCBAQAogCSQoR1NUX1BMVUdJTlNfQkFEX0xJQlMpIC1sZ3N0Y29kZWNwYXJzZXJzLUBHU1RfQVBJX1ZFUlNJT05AIFwKIAkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTERBREQpCiAKK2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9DRkxBR1MgPSBcCisJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAorCSQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKQorCitlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfTERBREQgPSBcCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMREFERCkgXAorCS1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAKKwogZWxlbWVudHNfZmFhZF9DRkxBR1MgPSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAogCSQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKQpAQCAtMTc0MiwxNiArMTg0OSw2IEBACiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMREFERCkgXAogCS1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAKIAotZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9TT1VSQ0VTID0gZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jCi1lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKLQkkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ09OVFJPTExFUl9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChBTV9DRkxBR1MpCi0KLWVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfTERBREQgPSBcCi0JJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgIFwKLQktbGdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIAkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0NPTlRST0xMRVJfTElCUykgXAotCSQoR1NUX0xJQlMpICQoTERBREQpCi0KIGVsZW1lbnRzX2NhbWVyYWJpbl9DRkxBR1MgPSBcCiAJJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiAJJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChBTV9DRkxBR1MpIC1ER1NUX1VTRV9VTlNUQUJMRV9BUEkKQEAgLTE3NzQsMTEgKzE4NzEsNiBAQAogZWxlbWVudHNfYXNzcmVuZGVyX0xEQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pIC1sZ3N0YXBwLSQoR1NUX0FQSV9WRVJTSU9OKSAkKEdTVF9CQVNFX0xJQlMpICQoTERBREQpCiBlbGVtZW50c19tcGVndHNtdXhfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoQU1fQ0ZMQUdTKQogZWxlbWVudHNfbXBlZ3RzbXV4X0xEQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pICQoR1NUX0JBU0VfTElCUykgJChMREFERCkKLWVsZW1lbnRzX21wZzEyM2F1ZGlvZGVjX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKLWVsZW1lbnRzX21wZzEyM2F1ZGlvZGVjX0xEQUREID0gXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTERBREQpIFwKLQktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIC1sZ3N0ZmZ0LUBHU1RfQVBJX1ZFUlNJT05AIC1sZ3N0YXBwLUBHU1RfQVBJX1ZFUlNJT05ACi0KIGVsZW1lbnRzX3V2Y2gyNjRkZW11eF9DRkxBR1MgPSAtRFVWQ0gyNjRERU1VWF9EQVRBRElSPSIkKHNyY2RpcikvZWxlbWVudHMvdXZjaDI2NGRlbXV4X2RhdGEiIFwKIAkJCQkkKEFNX0NGTEFHUykKIApAQCAtMTc4Nyw2ICsxODc5LDIyIEBACiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL2xpYmdzdHVyaWRvd25sb2FkZXItQEdTVF9BUElfVkVSU0lPTkAubGEKIAogZWxlbWVudHNfZGFzaF9tcGRfU09VUkNFUyA9IGVsZW1lbnRzL2Rhc2hfbXBkLmMKK2VsZW1lbnRzX2Rhc2hfZGVtdXhfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoTElCWE1MMl9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykKK2VsZW1lbnRzX2Rhc2hfZGVtdXhfTERBREQgPSBcCisJJChMREFERCkgJChMSUJYTUwyX0xJQlMpICQoR1NUX0JBU0VfTElCUykgXAorCS1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJLWxnc3RhcHAtJChHU1RfQVBJX1ZFUlNJT04pIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvbGliZ3N0YWRhcHRpdmVkZW11eC1AR1NUX0FQSV9WRVJTSU9OQC5sYQorCitlbGVtZW50c19kYXNoX2RlbXV4X1NPVVJDRVMgPSBlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMgZWxlbWVudHMvdGVzdF9odHRwX3NyYy5oIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5oIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5oIGVsZW1lbnRzL2Rhc2hfZGVtdXguYworZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoTElCWE1MMl9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykKK2VsZW1lbnRzX21zc2RlbXV4X0xEQUREID0gXAorCSQoTERBREQpICQoTElCWE1MMl9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpIFwKKwktbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0YXBwLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2xpYmdzdGFkYXB0aXZlZGVtdXgtQEdTVF9BUElfVkVSU0lPTkAubGEKKworZWxlbWVudHNfbXNzZGVtdXhfU09VUkNFUyA9IGVsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyBlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmggZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmggZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmggZWxlbWVudHMvbXNzZGVtdXguYwogcGlwZWxpbmVzX3N0cmVhbWhlYWRlcl9DRkxBR1MgPSAkKEdJT19DRkxBR1MpICQoQU1fQ0ZMQUdTKQogcGlwZWxpbmVzX3N0cmVhbWhlYWRlcl9MREFERCA9ICQoR0lPX0xJQlMpICQoTERBREQpCiBsaWJzX2luc2VydGJpbl9MREFERCA9IFwKQEAgLTE3OTYsOCArMTkwNCwyOCBAQAogbGlic19pbnNlcnRiaW5fQ0ZMQUdTID0gXAogCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChBTV9DRkxBR1MpCiAKLWVsZW1lbnRzX3J0cG9udmlmX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKLWVsZW1lbnRzX3J0cG9udmlmX0xEQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgLWxnc3RydHAtJChHU1RfQVBJX1ZFUlNJT04pICQoTERBREQpCitsaWJzX3BsYXllcl9TT1VSQ0VTID0gbGlicy9wbGF5ZXIuYworbGlic19wbGF5ZXJfTERBREQgPSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9wbGF5ZXIvbGliZ3N0cGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKExEQUREKQorCitsaWJzX3BsYXllcl9DRkxBR1MgPSBcCisJJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEFNX0NGTEFHUykgXAorCS1EVEVTVF9QQVRIPVwiJChidWlsZGRpcikvbWVkaWFcIgorCitAV0lUSF9HU1RfUExBWUVSX1RFU1RTX1RSVUVAUExBWUVSX01FRElBX0ZJTEVTID0gXAorQFdJVEhfR1NUX1BMQVlFUl9URVNUU19UUlVFQAltZWRpYS9hdWRpby5vZ2cgXAorQFdJVEhfR1NUX1BMQVlFUl9URVNUU19UUlVFQAltZWRpYS9hdWRpby12aWRlby5vZ2cgXAorQFdJVEhfR1NUX1BMQVlFUl9URVNUU19UUlVFQAltZWRpYS9hdWRpby1zaG9ydC5vZ2cgXAorQFdJVEhfR1NUX1BMQVlFUl9URVNUU19UUlVFQAltZWRpYS9hdWRpby12aWRlby1zaG9ydC5vZ2cgXAorQFdJVEhfR1NUX1BMQVlFUl9URVNUU19UUlVFQAltZWRpYS9zaW50ZWwubWt2IFwKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUAJbWVkaWEvdGVzdF9zdWIuc3J0CisKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUBub2Rpc3RfbGlic19wbGF5ZXJfU09VUkNFUyA9IGxpYnMvcGxheWVyX2R1bW15LmMKK2VsZW1lbnRzX3J0cG9udmlmcGFyc2VfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoQU1fQ0ZMQUdTKQorZWxlbWVudHNfcnRwb252aWZwYXJzZV9MREFERCA9ICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpIC1sZ3N0cnRwLSQoR1NUX0FQSV9WRVJTSU9OKSAkKExEQUREKQorZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoQU1fQ0ZMQUdTKQorZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfTERBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAtbGdzdHJ0cC0kKEdTVF9BUElfVkVSU0lPTikgJChMREFERCkKIEVYVFJBX0RJU1QgPSBnc3QtcGx1Z2lucy1iYWQuc3VwcCAkKHV2Y2gyNjRfZGlzdF9kYXRhKQogb3JjX2JheWVyX0NGTEFHUyA9ICQoT1JDX0NGTEFHUykKIG9yY19iYXllcl9MREFERCA9ICQoT1JDX0xJQlMpIC1sb3JjLXRlc3QtMC40CkBAIC0xODQ0LDYgKzE5NzIsMjQgQEAKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgXAogCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMREFERCkKIAorbGlic19nc3RnbHF1ZXJ5X0xEQUREID0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAubGEgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTERBREQpCisKK2xpYnNfZ3N0Z2xxdWVyeV9DRkxBR1MgPSBcCisJJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCisJJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChBTV9DRkxBR1MpCisKK2xpYnNfZ3N0Z2xzbF9MREFERCA9IFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKExEQUREKQorCitsaWJzX2dzdGdsc2xfQ0ZMQUdTID0gXAorCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAorCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAorCSQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKQorCiBlbGVtZW50c19nbGltYWdlc2lua19DRkxBR1MgPSBcCiAJJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiAJLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCkBAIC0xODc1LDYgKzIwMjEsMTMgQEAKIGVsZW1lbnRzX2hsc2RlbXV4X20zdThfQ0ZMQUdTID0gJChHU1RfQkFTRV9DRkxBR1MpICQoQU1fQ0ZMQUdTKSAtSSQodG9wX3NyY2RpcikvZXh0L2hscwogZWxlbWVudHNfaGxzZGVtdXhfbTN1OF9MREFERCA9ICQoR1NUX0JBU0VfTElCUykgJChMREFERCkKIGVsZW1lbnRzX2hsc2RlbXV4X20zdThfU09VUkNFUyA9IGVsZW1lbnRzL2hsc2RlbXV4X20zdTguYworZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUyA9ICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEFNX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKQorZWxlbWVudHNfaGxzX2RlbXV4X0xEQUREID0gJChHU1RfQkFTRV9MSUJTKSAkKExEQUREKSBcCisJLWxnc3R0YWctJChHU1RfQVBJX1ZFUlNJT04pIFwKKwktbGdzdGFwcC0kKEdTVF9BUElfVkVSU0lPTikgXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9saWJnc3RhZGFwdGl2ZWRlbXV4LUBHU1RfQVBJX1ZFUlNJT05ALmxhCisKK2VsZW1lbnRzX2hsc19kZW11eF9TT1VSQ0VTID0gZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jIGVsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuaCBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuaCBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uaCBlbGVtZW50cy9obHNfZGVtdXguYwogb3JjX2NvbXBvc2l0b3JfQ0ZMQUdTID0gJChPUkNfQ0ZMQUdTKQogb3JjX2NvbXBvc2l0b3JfTERBREQgPSAkKE9SQ19MSUJTKSAtbG9yYy10ZXN0LTAuNAogbm9kaXN0X29yY19jb21wb3NpdG9yX1NPVVJDRVMgPSBvcmMvY29tcG9zaXRvci5jCkBAIC0xOTk1LDEyICsyMTQ4LDYgQEAKIGVsZW1lbnRzL2F1dG92aWRlb2NvbnZlcnQkKEVYRUVYVCk6ICQoZWxlbWVudHNfYXV0b3ZpZGVvY29udmVydF9PQkpFQ1RTKSAkKGVsZW1lbnRzX2F1dG92aWRlb2NvbnZlcnRfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX2F1dG92aWRlb2NvbnZlcnRfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKIAlAcm0gLWYgZWxlbWVudHMvYXV0b3ZpZGVvY29udmVydCQoRVhFRVhUKQogCSQoQU1fVl9DQ0xEKSQoTElOSykgJChlbGVtZW50c19hdXRvdmlkZW9jb252ZXJ0X09CSkVDVFMpICQoZWxlbWVudHNfYXV0b3ZpZGVvY29udmVydF9MREFERCkgJChMSUJTKQotZWxlbWVudHMvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLiQoT0JKRVhUKTogIFwKLQllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQotCi1lbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyJChFWEVFWFQpOiAkKGVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfT0JKRUNUUykgJChlbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCi0JQHJtIC1mIGVsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIkKEVYRUVYVCkKLQkkKEFNX1ZfQ0NMRCkkKGVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfTElOSykgJChlbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX09CSkVDVFMpICQoZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9MREFERCkgJChMSUJTKQogZWxlbWVudHMvZWxlbWVudHNfY2FtZXJhYmluLWNhbWVyYWJpbi4kKE9CSkVYVCk6ICBcCiAJZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIApAQCAtMjA0Myw2ICsyMTkwLDE4IEBACiBlbGVtZW50cy9jdXJsc210cHNpbmskKEVYRUVYVCk6ICQoZWxlbWVudHNfY3VybHNtdHBzaW5rX09CSkVDVFMpICQoZWxlbWVudHNfY3VybHNtdHBzaW5rX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19jdXJsc210cHNpbmtfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKIAlAcm0gLWYgZWxlbWVudHMvY3VybHNtdHBzaW5rJChFWEVFWFQpCiAJJChBTV9WX0NDTEQpJChMSU5LKSAkKGVsZW1lbnRzX2N1cmxzbXRwc2lua19PQkpFQ1RTKSAkKGVsZW1lbnRzX2N1cmxzbXRwc2lua19MREFERCkgJChMSUJTKQorZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLiQoT0JKRVhUKTogIFwKKwllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuJChPQkpFWFQpOiAgXAorCWVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBlbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi4kKE9CSkVYVCk6ICBcCisJZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK2VsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC4kKE9CSkVYVCk6ICBcCisJZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKKworZWxlbWVudHMvZGFzaF9kZW11eCQoRVhFRVhUKTogJChlbGVtZW50c19kYXNoX2RlbXV4X09CSkVDVFMpICQoZWxlbWVudHNfZGFzaF9kZW11eF9ERVBFTkRFTkNJRVMpICQoRVhUUkFfZWxlbWVudHNfZGFzaF9kZW11eF9ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQorCUBybSAtZiBlbGVtZW50cy9kYXNoX2RlbXV4JChFWEVFWFQpCisJJChBTV9WX0NDTEQpJChlbGVtZW50c19kYXNoX2RlbXV4X0xJTkspICQoZWxlbWVudHNfZGFzaF9kZW11eF9PQkpFQ1RTKSAkKGVsZW1lbnRzX2Rhc2hfZGVtdXhfTERBREQpICQoTElCUykKIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfbXBkLWRhc2hfbXBkLiQoT0JKRVhUKTogIFwKIAllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCkBAIC0yMDk3LDYgKzIyNTYsMTggQEAKIGVsZW1lbnRzL2gyNjRwYXJzZSQoRVhFRVhUKTogJChlbGVtZW50c19oMjY0cGFyc2VfT0JKRUNUUykgJChlbGVtZW50c19oMjY0cGFyc2VfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX2gyNjRwYXJzZV9ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQogCUBybSAtZiBlbGVtZW50cy9oMjY0cGFyc2UkKEVYRUVYVCkKIAkkKEFNX1ZfQ0NMRCkkKExJTkspICQoZWxlbWVudHNfaDI2NHBhcnNlX09CSkVDVFMpICQoZWxlbWVudHNfaDI2NHBhcnNlX0xEQUREKSAkKExJQlMpCitlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy4kKE9CSkVYVCk6ICBcCisJZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK2VsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuJChPQkpFWFQpOiAgXAorCWVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBlbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLiQoT0JKRVhUKTogIFwKKwllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWhsc19kZW11eC4kKE9CSkVYVCk6ICBcCisJZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKKworZWxlbWVudHMvaGxzX2RlbXV4JChFWEVFWFQpOiAkKGVsZW1lbnRzX2hsc19kZW11eF9PQkpFQ1RTKSAkKGVsZW1lbnRzX2hsc19kZW11eF9ERVBFTkRFTkNJRVMpICQoRVhUUkFfZWxlbWVudHNfaGxzX2RlbXV4X0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCisJQHJtIC1mIGVsZW1lbnRzL2hsc19kZW11eCQoRVhFRVhUKQorCSQoQU1fVl9DQ0xEKSQoZWxlbWVudHNfaGxzX2RlbXV4X0xJTkspICQoZWxlbWVudHNfaGxzX2RlbXV4X09CSkVDVFMpICQoZWxlbWVudHNfaGxzX2RlbXV4X0xEQUREKSAkKExJQlMpCiBlbGVtZW50cy9lbGVtZW50c19obHNkZW11eF9tM3U4LWhsc2RlbXV4X20zdTguJChPQkpFWFQpOiAgXAogCWVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBlbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiAKQEAgLTIxNTEsMTggKzIzMjIsMjQgQEAKIGVsZW1lbnRzL21wZWd2aWRlb3BhcnNlJChFWEVFWFQpOiAkKGVsZW1lbnRzX21wZWd2aWRlb3BhcnNlX09CSkVDVFMpICQoZWxlbWVudHNfbXBlZ3ZpZGVvcGFyc2VfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX21wZWd2aWRlb3BhcnNlX0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCiAJQHJtIC1mIGVsZW1lbnRzL21wZWd2aWRlb3BhcnNlJChFWEVFWFQpCiAJJChBTV9WX0NDTEQpJChMSU5LKSAkKGVsZW1lbnRzX21wZWd2aWRlb3BhcnNlX09CSkVDVFMpICQoZWxlbWVudHNfbXBlZ3ZpZGVvcGFyc2VfTERBREQpICQoTElCUykKLWVsZW1lbnRzL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLiQoT0JKRVhUKTogIFwKLQllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQotCi1lbGVtZW50cy9tcGcxMjNhdWRpb2RlYyQoRVhFRVhUKTogJChlbGVtZW50c19tcGcxMjNhdWRpb2RlY19PQkpFQ1RTKSAkKGVsZW1lbnRzX21wZzEyM2F1ZGlvZGVjX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19tcGcxMjNhdWRpb2RlY19ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQotCUBybSAtZiBlbGVtZW50cy9tcGcxMjNhdWRpb2RlYyQoRVhFRVhUKQotCSQoQU1fVl9DQ0xEKSQoZWxlbWVudHNfbXBnMTIzYXVkaW9kZWNfTElOSykgJChlbGVtZW50c19tcGcxMjNhdWRpb2RlY19PQkpFQ1RTKSAkKGVsZW1lbnRzX21wZzEyM2F1ZGlvZGVjX0xEQUREKSAkKExJQlMpCiBlbGVtZW50cy9tcGxleC4kKE9CSkVYVCk6IGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBcCiAJZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCiBlbGVtZW50cy9tcGxleCQoRVhFRVhUKTogJChlbGVtZW50c19tcGxleF9PQkpFQ1RTKSAkKGVsZW1lbnRzX21wbGV4X0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19tcGxleF9ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQogCUBybSAtZiBlbGVtZW50cy9tcGxleCQoRVhFRVhUKQogCSQoQU1fVl9DQ0xEKSQoTElOSykgJChlbGVtZW50c19tcGxleF9PQkpFQ1RTKSAkKGVsZW1lbnRzX21wbGV4X0xEQUREKSAkKExJQlMpCitlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLiQoT0JKRVhUKTogIFwKKwllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLiQoT0JKRVhUKTogIFwKKwllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLiQoT0JKRVhUKTogIFwKKwllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXguJChPQkpFWFQpOiAgXAorCWVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBlbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCisKK2VsZW1lbnRzL21zc2RlbXV4JChFWEVFWFQpOiAkKGVsZW1lbnRzX21zc2RlbXV4X09CSkVDVFMpICQoZWxlbWVudHNfbXNzZGVtdXhfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX21zc2RlbXV4X0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCisJQHJtIC1mIGVsZW1lbnRzL21zc2RlbXV4JChFWEVFWFQpCisJJChBTV9WX0NDTEQpJChlbGVtZW50c19tc3NkZW11eF9MSU5LKSAkKGVsZW1lbnRzX21zc2RlbXV4X09CSkVDVFMpICQoZWxlbWVudHNfbXNzZGVtdXhfTERBREQpICQoTElCUykKIGVsZW1lbnRzL214ZmRlbXV4LiQoT0JKRVhUKTogZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIFwKIAllbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiAKQEAgLTIxODEsMzAgKzIzNTgsMzYgQEAKIGVsZW1lbnRzL25lb25odHRwc3JjJChFWEVFWFQpOiAkKGVsZW1lbnRzX25lb25odHRwc3JjX09CSkVDVFMpICQoZWxlbWVudHNfbmVvbmh0dHBzcmNfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX25lb25odHRwc3JjX0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCiAJQHJtIC1mIGVsZW1lbnRzL25lb25odHRwc3JjJChFWEVFWFQpCiAJJChBTV9WX0NDTEQpJChMSU5LKSAkKGVsZW1lbnRzX25lb25odHRwc3JjX09CSkVDVFMpICQoZWxlbWVudHNfbmVvbmh0dHBzcmNfTERBREQpICQoTElCUykKK2VsZW1lbnRzL25ldHNpbS4kKE9CSkVYVCk6IGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBcCisJZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorCitlbGVtZW50cy9uZXRzaW0kKEVYRUVYVCk6ICQoZWxlbWVudHNfbmV0c2ltX09CSkVDVFMpICQoZWxlbWVudHNfbmV0c2ltX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19uZXRzaW1fREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKKwlAcm0gLWYgZWxlbWVudHMvbmV0c2ltJChFWEVFWFQpCisJJChBTV9WX0NDTEQpJChMSU5LKSAkKGVsZW1lbnRzX25ldHNpbV9PQkpFQ1RTKSAkKGVsZW1lbnRzX25ldHNpbV9MREFERCkgJChMSUJTKQogZWxlbWVudHMvb2ZhLiQoT0JKRVhUKTogZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIFwKIAllbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiAKIGVsZW1lbnRzL29mYSQoRVhFRVhUKTogJChlbGVtZW50c19vZmFfT0JKRUNUUykgJChlbGVtZW50c19vZmFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX29mYV9ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQogCUBybSAtZiBlbGVtZW50cy9vZmEkKEVYRUVYVCkKIAkkKEFNX1ZfQ0NMRCkkKExJTkspICQoZWxlbWVudHNfb2ZhX09CSkVDVFMpICQoZWxlbWVudHNfb2ZhX0xEQUREKSAkKExJQlMpCi1lbGVtZW50cy9vcHVzLiQoT0JKRVhUKTogZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIFwKLQllbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCi0KLWVsZW1lbnRzL29wdXMkKEVYRUVYVCk6ICQoZWxlbWVudHNfb3B1c19PQkpFQ1RTKSAkKGVsZW1lbnRzX29wdXNfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX29wdXNfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKLQlAcm0gLWYgZWxlbWVudHMvb3B1cyQoRVhFRVhUKQotCSQoQU1fVl9DQ0xEKSQoTElOSykgJChlbGVtZW50c19vcHVzX09CSkVDVFMpICQoZWxlbWVudHNfb3B1c19MREFERCkgJChMSUJTKQogZWxlbWVudHMvcGNhcHBhcnNlLiQoT0JKRVhUKTogZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIFwKIAllbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiAKIGVsZW1lbnRzL3BjYXBwYXJzZSQoRVhFRVhUKTogJChlbGVtZW50c19wY2FwcGFyc2VfT0JKRUNUUykgJChlbGVtZW50c19wY2FwcGFyc2VfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX3BjYXBwYXJzZV9ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQogCUBybSAtZiBlbGVtZW50cy9wY2FwcGFyc2UkKEVYRUVYVCkKIAkkKEFNX1ZfQ0NMRCkkKExJTkspICQoZWxlbWVudHNfcGNhcHBhcnNlX09CSkVDVFMpICQoZWxlbWVudHNfcGNhcHBhcnNlX0xEQUREKSAkKExJQlMpCi1lbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi4kKE9CSkVYVCk6ICBcCitlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZnBhcnNlLXJ0cG9udmlmcGFyc2UuJChPQkpFWFQpOiAgXAogCWVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBlbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiAKLWVsZW1lbnRzL3J0cG9udmlmJChFWEVFWFQpOiAkKGVsZW1lbnRzX3J0cG9udmlmX09CSkVDVFMpICQoZWxlbWVudHNfcnRwb252aWZfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX3J0cG9udmlmX0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCi0JQHJtIC1mIGVsZW1lbnRzL3J0cG9udmlmJChFWEVFWFQpCi0JJChBTV9WX0NDTEQpJChlbGVtZW50c19ydHBvbnZpZl9MSU5LKSAkKGVsZW1lbnRzX3J0cG9udmlmX09CSkVDVFMpICQoZWxlbWVudHNfcnRwb252aWZfTERBREQpICQoTElCUykKK2VsZW1lbnRzL3J0cG9udmlmcGFyc2UkKEVYRUVYVCk6ICQoZWxlbWVudHNfcnRwb252aWZwYXJzZV9PQkpFQ1RTKSAkKGVsZW1lbnRzX3J0cG9udmlmcGFyc2VfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX3J0cG9udmlmcGFyc2VfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKKwlAcm0gLWYgZWxlbWVudHMvcnRwb252aWZwYXJzZSQoRVhFRVhUKQorCSQoQU1fVl9DQ0xEKSQoZWxlbWVudHNfcnRwb252aWZwYXJzZV9MSU5LKSAkKGVsZW1lbnRzX3J0cG9udmlmcGFyc2VfT0JKRUNUUykgJChlbGVtZW50c19ydHBvbnZpZnBhcnNlX0xEQUREKSAkKExJQlMpCitlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcC1ydHBvbnZpZnRpbWVzdGFtcC4kKE9CSkVYVCk6ICBcCisJZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKKworZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAkKEVYRUVYVCk6ICQoZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfT0JKRUNUUykgJChlbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcF9ERVBFTkRFTkNJRVMpICQoRVhUUkFfZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKKwlAcm0gLWYgZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAkKEVYRUVYVCkKKwkkKEFNX1ZfQ0NMRCkkKGVsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX0xJTkspICQoZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfT0JKRUNUUykgJChlbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcF9MREFERCkgJChMSUJTKQogZWxlbWVudHMvc2Nocm9lbmMuJChPQkpFWFQpOiBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgXAogCWVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIApAQCAtMjIzNSw2ICsyNDE4LDEyIEBACiBlbGVtZW50cy91dmNoMjY0ZGVtdXgkKEVYRUVYVCk6ICQoZWxlbWVudHNfdXZjaDI2NGRlbXV4X09CSkVDVFMpICQoZWxlbWVudHNfdXZjaDI2NGRlbXV4X0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c191dmNoMjY0ZGVtdXhfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKIAlAcm0gLWYgZWxlbWVudHMvdXZjaDI2NGRlbXV4JChFWEVFWFQpCiAJJChBTV9WX0NDTEQpJChlbGVtZW50c191dmNoMjY0ZGVtdXhfTElOSykgJChlbGVtZW50c191dmNoMjY0ZGVtdXhfT0JKRUNUUykgJChlbGVtZW50c191dmNoMjY0ZGVtdXhfTERBREQpICQoTElCUykKK2VsZW1lbnRzL2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC12aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuJChPQkpFWFQpOiAgXAorCWVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBlbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCisKK2VsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbCQoRVhFRVhUKTogJChlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfT0JKRUNUUykgJChlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQorCUBybSAtZiBlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwkKEVYRUVYVCkKKwkkKEFNX1ZfQ0NMRCkkKGVsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9MSU5LKSAkKGVsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9PQkpFQ1RTKSAkKGVsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9MREFERCkgJChMSUJTKQogZWxlbWVudHMvdmlld2ZpbmRlcmJpbi4kKE9CSkVYVCk6IGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBcCiAJZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCkBAIC0yMzA3LDYgKzI0OTYsMTggQEAKIGxpYnMvZ3N0Z2xtZW1vcnkkKEVYRUVYVCk6ICQobGlic19nc3RnbG1lbW9yeV9PQkpFQ1RTKSAkKGxpYnNfZ3N0Z2xtZW1vcnlfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYnNfZ3N0Z2xtZW1vcnlfREVQRU5ERU5DSUVTKSBsaWJzLyQoYW1fX2RpcnN0YW1wKQogCUBybSAtZiBsaWJzL2dzdGdsbWVtb3J5JChFWEVFWFQpCiAJJChBTV9WX0NDTEQpJChsaWJzX2dzdGdsbWVtb3J5X0xJTkspICQobGlic19nc3RnbG1lbW9yeV9PQkpFQ1RTKSAkKGxpYnNfZ3N0Z2xtZW1vcnlfTERBREQpICQoTElCUykKK2xpYnMvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkuJChPQkpFWFQpOiBsaWJzLyQoYW1fX2RpcnN0YW1wKSBcCisJbGlicy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCisKK2xpYnMvZ3N0Z2xxdWVyeSQoRVhFRVhUKTogJChsaWJzX2dzdGdscXVlcnlfT0JKRUNUUykgJChsaWJzX2dzdGdscXVlcnlfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYnNfZ3N0Z2xxdWVyeV9ERVBFTkRFTkNJRVMpIGxpYnMvJChhbV9fZGlyc3RhbXApCisJQHJtIC1mIGxpYnMvZ3N0Z2xxdWVyeSQoRVhFRVhUKQorCSQoQU1fVl9DQ0xEKSQobGlic19nc3RnbHF1ZXJ5X0xJTkspICQobGlic19nc3RnbHF1ZXJ5X09CSkVDVFMpICQobGlic19nc3RnbHF1ZXJ5X0xEQUREKSAkKExJQlMpCitsaWJzL2xpYnNfZ3N0Z2xzbC1nc3RnbHNsLiQoT0JKRVhUKTogbGlicy8kKGFtX19kaXJzdGFtcCkgXAorCWxpYnMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorCitsaWJzL2dzdGdsc2wkKEVYRUVYVCk6ICQobGlic19nc3RnbHNsX09CSkVDVFMpICQobGlic19nc3RnbHNsX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJzX2dzdGdsc2xfREVQRU5ERU5DSUVTKSBsaWJzLyQoYW1fX2RpcnN0YW1wKQorCUBybSAtZiBsaWJzL2dzdGdsc2wkKEVYRUVYVCkKKwkkKEFNX1ZfQ0NMRCkkKGxpYnNfZ3N0Z2xzbF9MSU5LKSAkKGxpYnNfZ3N0Z2xzbF9PQkpFQ1RTKSAkKGxpYnNfZ3N0Z2xzbF9MREFERCkgJChMSUJTKQogbGlicy9saWJzX2dzdGdsdXBsb2FkLWdzdGdsdXBsb2FkLiQoT0JKRVhUKTogbGlicy8kKGFtX19kaXJzdGFtcCkgXAogCWxpYnMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCkBAIC0yMzM3LDYgKzI1MzgsMTQgQEAKIGxpYnMvbXBlZ3ZpZGVvcGFyc2VyJChFWEVFWFQpOiAkKGxpYnNfbXBlZ3ZpZGVvcGFyc2VyX09CSkVDVFMpICQobGlic19tcGVndmlkZW9wYXJzZXJfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYnNfbXBlZ3ZpZGVvcGFyc2VyX0RFUEVOREVOQ0lFUykgbGlicy8kKGFtX19kaXJzdGFtcCkKIAlAcm0gLWYgbGlicy9tcGVndmlkZW9wYXJzZXIkKEVYRUVYVCkKIAkkKEFNX1ZfQ0NMRCkkKGxpYnNfbXBlZ3ZpZGVvcGFyc2VyX0xJTkspICQobGlic19tcGVndmlkZW9wYXJzZXJfT0JKRUNUUykgJChsaWJzX21wZWd2aWRlb3BhcnNlcl9MREFERCkgJChMSUJTKQorbGlicy9saWJzX3BsYXllci1wbGF5ZXIuJChPQkpFWFQpOiBsaWJzLyQoYW1fX2RpcnN0YW1wKSBcCisJbGlicy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitsaWJzL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS4kKE9CSkVYVCk6IGxpYnMvJChhbV9fZGlyc3RhbXApIFwKKwlsaWJzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKKworbGlicy9wbGF5ZXIkKEVYRUVYVCk6ICQobGlic19wbGF5ZXJfT0JKRUNUUykgJChsaWJzX3BsYXllcl9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGlic19wbGF5ZXJfREVQRU5ERU5DSUVTKSBsaWJzLyQoYW1fX2RpcnN0YW1wKQorCUBybSAtZiBsaWJzL3BsYXllciQoRVhFRVhUKQorCSQoQU1fVl9DQ0xEKSQobGlic19wbGF5ZXJfTElOSykgJChsaWJzX3BsYXllcl9PQkpFQ1RTKSAkKGxpYnNfcGxheWVyX0xEQUREKSAkKExJQlMpCiBsaWJzL2xpYnNfdmMxcGFyc2VyLXZjMXBhcnNlci4kKE9CSkVYVCk6IGxpYnMvJChhbV9fZGlyc3RhbXApIFwKIAlsaWJzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIApAQCAtMjQyMywyMyArMjYzMiwzNSBAQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19hc3NyZW5kZXItYXNzcmVuZGVyLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfYXVkaW9pbnRlcmxlYXZlLWF1ZGlvaW50ZXJsZWF2ZS5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2F1ZGlvbWl4ZXItYXVkaW9taXhlci5Qb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2NhbWVyYWJpbi1jYW1lcmFiaW4uUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19jb21wb3NpdG9yLWNvbXBvc2l0b3IuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC1kYXNoX2RlbXV4LlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9tcGQtZGFzaF9tcGQuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19mYWFjLWZhYWMuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19mYWFkLWZhYWQuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19nZHBkZXBheS1nZHBkZXBheS5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2dkcHBheS1nZHBwYXkuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19nbGltYWdlc2luay1nbGltYWdlc2luay5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWhsc19kZW11eC5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC10ZXN0X2h0dHBfc3JjLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzZGVtdXhfbTN1OC1obHNkZW11eF9tM3U4LlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfamlmbXV4LWppZm11eC5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2thdGUta2F0ZS5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21wZWd0c211eC1tcGVndHNtdXguUG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy5Qb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3J0cG9udmlmLXJ0cG9udmlmLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXguUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c190aW1pZGl0eS10aW1pZGl0eS5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3V2Y2gyNjRkZW11eC11dmNoMjY0ZGVtdXguUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfdm9hYWNlbmMtdm9hYWNlbmMuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9oMjYzcGFyc2UuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9oMjY0cGFyc2UuUG9AYW1fX3F1b3RlQApAQCAtMjQ1Myw4ICsyNjc0LDggQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvbXhmZGVtdXguUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9teGZtdXguUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9uZW9uaHR0cHNyYy5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL25ldHNpbS5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL29mYS5Qb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL29wdXMuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9wY2FwcGFyc2UuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9zY2hyb2VuYy5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL3NobS5Qb0BhbV9fcXVvdGVACkBAIC0yNDY4LDExICsyNjg5LDE1IEBACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAbGlicy8kKERFUERJUikvbGlic19nc3RnbGNvbG9yY29udmVydC1nc3RnbGNvbG9yY29udmVydC5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAbGlicy8kKERFUERJUikvbGlic19nc3RnbGNvbnRleHQtZ3N0Z2xjb250ZXh0LlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdsbWVtb3J5LWdzdGdsbWVtb3J5LlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdscXVlcnktZ3N0Z2xxdWVyeS5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAbGlicy8kKERFUERJUikvbGlic19nc3RnbHNsLWdzdGdsc2wuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2x1cGxvYWQtZ3N0Z2x1cGxvYWQuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGxpYnMvJChERVBESVIpL2xpYnNfaDI2NHBhcnNlci1oMjY0cGFyc2VyLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBsaWJzLyQoREVQRElSKS9saWJzX2luc2VydGJpbi1pbnNlcnRiaW4uUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGxpYnMvJChERVBESVIpL2xpYnNfbXBlZ3RzLW1wZWd0cy5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAbGlicy8kKERFUERJUikvbGlic19tcGVndmlkZW9wYXJzZXItbXBlZ3ZpZGVvcGFyc2VyLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBsaWJzLyQoREVQRElSKS9saWJzX3BsYXllci1wbGF5ZXIuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGxpYnMvJChERVBESVIpL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAbGlicy8kKERFUERJUikvbGlic192YzFwYXJzZXItdmMxcGFyc2VyLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBsaWJzLyQoREVQRElSKS9saWJzX3ZwOHBhcnNlci12cDhwYXJzZXIuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQG9yYy8kKERFUERJUikvb3JjX2F1ZGlvbWl4ZXItYXVkaW9taXhlci5Qb0BhbV9fcXVvdGVACkBAIC0yNTU1LDIwICsyNzgwLDYgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19hdWRpb21peGVyX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2F1ZGlvbWl4ZXItYXVkaW9taXhlci5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2F1ZGlvbWl4ZXIuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9hdWRpb21peGVyLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2F1ZGlvbWl4ZXIuYyc7IGZpYAogCi1lbGVtZW50cy9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyLWJhc2VhdWRpb3Zpc3VhbGl6ZXIubzogZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyLWJhc2VhdWRpb3Zpc3VhbGl6ZXIuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyLWJhc2VhdWRpb3Zpc3VhbGl6ZXIuUG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jCi0KLWVsZW1lbnRzL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci5vYmo6IGVsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jJzsgZmlgCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyLWJhc2VhdWRpb3Zpc3VhbGl6ZXIuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyLWJhc2VhdWRpb3Zpc3VhbGl6ZXIuUG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyLWJhc2VhdWRpb3Zpc3VhbGl6ZXIub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyLmMnOyBmaWAKLQogZWxlbWVudHMvZWxlbWVudHNfY2FtZXJhYmluLWNhbWVyYWJpbi5vOiBlbGVtZW50cy9jYW1lcmFiaW4uYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2NhbWVyYWJpbl9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfY2FtZXJhYmluLWNhbWVyYWJpbi5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19jYW1lcmFiaW4tY2FtZXJhYmluLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19jYW1lcmFiaW4tY2FtZXJhYmluLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2NhbWVyYWJpbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9jYW1lcmFiaW4uYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfY2FtZXJhYmluLWNhbWVyYWJpbi5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2NhbWVyYWJpbi1jYW1lcmFiaW4uUG8KQEAgLTI1OTcsNiArMjgwOCw2MiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2NvbXBvc2l0b3JfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfY29tcG9zaXRvci1jb21wb3NpdG9yLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvY29tcG9zaXRvci5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2NvbXBvc2l0b3IuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvY29tcG9zaXRvci5jJzsgZmlgCiAKK2VsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy5vOiBlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LXRlc3RfaHR0cF9zcmMubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LXRlc3RfaHR0cF9zcmMubyBgdGVzdCAtZiAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LXRlc3RfaHR0cF9zcmMubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LXRlc3RfaHR0cF9zcmMubyBgdGVzdCAtZiAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMKKworZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLm9iajogZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLm9iaiAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LXRlc3RfaHR0cF9zcmMub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LXRlc3RfaHR0cF9zcmMub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyc7IGZpYAorCitlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vOiBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Rhc2hfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vIGB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYworCitlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vYmo6IGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUub2JqIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vYmonIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Rhc2hfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyBmaWAKKworZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ubzogZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ubyBgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vIGB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKKworZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ub2JqOiBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Rhc2hfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm9iaiAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgZmlgCisKK2VsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC5vOiBlbGVtZW50cy9kYXNoX2RlbXV4LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXgubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC1kYXNoX2RlbXV4LlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXgubyBgdGVzdCAtZiAnZWxlbWVudHMvZGFzaF9kZW11eC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9kYXNoX2RlbXV4LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL2Rhc2hfZGVtdXguYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXgubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXgubyBgdGVzdCAtZiAnZWxlbWVudHMvZGFzaF9kZW11eC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9kYXNoX2RlbXV4LmMKKworZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1kYXNoX2RlbXV4Lm9iajogZWxlbWVudHMvZGFzaF9kZW11eC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1kYXNoX2RlbXV4Lm9iaiAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC1kYXNoX2RlbXV4LlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXgub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9kYXNoX2RlbXV4LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvZGFzaF9kZW11eC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9kYXNoX2RlbXV4LmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL2Rhc2hfZGVtdXguYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXgub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2Rhc2hfZGVtdXguYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9kYXNoX2RlbXV4LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2Rhc2hfZGVtdXguYyc7IGZpYAorCiBlbGVtZW50cy9lbGVtZW50c19kYXNoX21wZC1kYXNoX21wZC5vOiBlbGVtZW50cy9kYXNoX21wZC5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9tcGRfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfbXBkLWRhc2hfbXBkLm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfbXBkLWRhc2hfbXBkLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX21wZC1kYXNoX21wZC5vIGB0ZXN0IC1mICdlbGVtZW50cy9kYXNoX21wZC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9kYXNoX21wZC5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX21wZC1kYXNoX21wZC5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfbXBkLWRhc2hfbXBkLlBvCkBAIC0yNjgxLDYgKzI5NDgsNjIgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19nbGltYWdlc2lua19DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19nbGltYWdlc2luay1nbGltYWdlc2luay5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2dsaW1hZ2VzaW5rLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvZ2xpbWFnZXNpbmsuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvZ2xpbWFnZXNpbmsuYyc7IGZpYAogCitlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5vOiBlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19obHNfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC10ZXN0X2h0dHBfc3JjLm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC10ZXN0X2h0dHBfc3JjLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5vIGB0ZXN0IC1mICdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LXRlc3RfaHR0cF9zcmMuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19obHNfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LXRlc3RfaHR0cF9zcmMubyBgdGVzdCAtZiAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMKKworZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LXRlc3RfaHR0cF9zcmMub2JqOiBlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19obHNfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC10ZXN0X2h0dHBfc3JjLm9iaiAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LXRlc3RfaHR0cF9zcmMuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC10ZXN0X2h0dHBfc3JjLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC10ZXN0X2h0dHBfc3JjLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC10ZXN0X2h0dHBfc3JjLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC10ZXN0X2h0dHBfc3JjLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgZmlgCisKK2VsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUubzogZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19obHNfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vIGB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19obHNfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vIGB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMKKworZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vYmo6IGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm9iaiAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyBmaWAKKworZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vOiBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2hsc19kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2hsc19kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYworCitlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm9iajogZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19obHNfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ub2JqIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19obHNfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyc7IGZpYAorCitlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4Lm86IGVsZW1lbnRzL2hsc19kZW11eC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4Lm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXguVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXgubyBgdGVzdCAtZiAnZWxlbWVudHMvaGxzX2RlbXV4LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL2hsc19kZW11eC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4LlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWhsc19kZW11eC5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL2hsc19kZW11eC5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXgubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXgubyBgdGVzdCAtZiAnZWxlbWVudHMvaGxzX2RlbXV4LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL2hsc19kZW11eC5jCisKK2VsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXgub2JqOiBlbGVtZW50cy9obHNfZGVtdXguYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2hsc19kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWhsc19kZW11eC5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXguVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXgub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9obHNfZGVtdXguYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9obHNfZGVtdXguYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvaGxzX2RlbXV4LmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXguVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4LlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvaGxzX2RlbXV4LmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWhsc19kZW11eC5vYmonIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2hsc19kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4Lm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvaGxzX2RlbXV4LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvaGxzX2RlbXV4LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2hsc19kZW11eC5jJzsgZmlgCisKIGVsZW1lbnRzL2VsZW1lbnRzX2hsc2RlbXV4X20zdTgtaGxzZGVtdXhfbTN1OC5vOiBlbGVtZW50cy9obHNkZW11eF9tM3U4LmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19obHNkZW11eF9tM3U4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19obHNkZW11eF9tM3U4LWhsc2RlbXV4X20zdTgubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzZGVtdXhfbTN1OC1obHNkZW11eF9tM3U4LlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19obHNkZW11eF9tM3U4LWhsc2RlbXV4X20zdTgubyBgdGVzdCAtZiAnZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9obHNkZW11eF9tM3U4LmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc2RlbXV4X20zdTgtaGxzZGVtdXhfbTN1OC5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc2RlbXV4X20zdTgtaGxzZGVtdXhfbTN1OC5QbwpAQCAtMjczNywzMyArMzA2MCw4OSBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX21wZWd0c211eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tcGVndHNtdXgtbXBlZ3RzbXV4Lm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvbXBlZ3RzbXV4LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvbXBlZ3RzbXV4LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL21wZWd0c211eC5jJzsgZmlgCiAKLWVsZW1lbnRzL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLm86IGVsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tcGcxMjNhdWRpb2RlY19DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfbXBnMTIzYXVkaW9kZWMtbXBnMTIzYXVkaW9kZWMubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXBnMTIzYXVkaW9kZWMtbXBnMTIzYXVkaW9kZWMuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXBnMTIzYXVkaW9kZWMtbXBnMTIzYXVkaW9kZWMuUG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy5vOiBlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX21wZzEyM2F1ZGlvZGVjX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCiAKLWVsZW1lbnRzL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLm9iajogZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX21wZzEyM2F1ZGlvZGVjX0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMuYyc7IGZpYAotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXBnMTIzYXVkaW9kZWMtbXBnMTIzYXVkaW9kZWMuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy5QbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfbXBnMTIzYXVkaW9kZWMtbXBnMTIzYXVkaW9kZWMub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LXRlc3RfaHR0cF9zcmMub2JqOiBlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LXRlc3RfaHR0cF9zcmMuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LXRlc3RfaHR0cF9zcmMub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LXRlc3RfaHR0cF9zcmMuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LXRlc3RfaHR0cF9zcmMub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tcGcxMjNhdWRpb2RlY19DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX21zc2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LXRlc3RfaHR0cF9zcmMub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnOyBmaWAKIAotZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYubzogZWxlbWVudHMvcnRwb252aWYuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3J0cG9udmlmX0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYubyBgdGVzdCAtZiAnZWxlbWVudHMvcnRwb252aWYuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvcnRwb252aWYuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi5QbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL3J0cG9udmlmLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUubzogZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3J0cG9udmlmX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmLXJ0cG9udmlmLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3J0cG9udmlmLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL3J0cG9udmlmLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUubyBgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jCiAKLWVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmLXJ0cG9udmlmLm9iajogZWxlbWVudHMvcnRwb252aWYuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3J0cG9udmlmX0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3J0cG9udmlmLXJ0cG9udmlmLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL3J0cG9udmlmLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvcnRwb252aWYuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvcnRwb252aWYuYyc7IGZpYAotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi5QbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL3J0cG9udmlmLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vYmo6IGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19ydHBvbnZpZl9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL3J0cG9udmlmLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvcnRwb252aWYuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvcnRwb252aWYuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX21zc2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IGZpYAorCitlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ubzogZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX21zc2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vIGB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKKworZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm9iajogZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm9iaiAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vYmonIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX21zc2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyc7IGZpYAorCitlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5vOiBlbGVtZW50cy9tc3NkZW11eC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LW1zc2RlbXV4Lm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LW1zc2RlbXV4LlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5vIGB0ZXN0IC1mICdlbGVtZW50cy9tc3NkZW11eC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9tc3NkZW11eC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LW1zc2RlbXV4LlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvbXNzZGVtdXguYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5vIGB0ZXN0IC1mICdlbGVtZW50cy9tc3NkZW11eC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9tc3NkZW11eC5jCisKK2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LW1zc2RlbXV4Lm9iajogZWxlbWVudHMvbXNzZGVtdXguYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX21zc2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LW1zc2RlbXV4LlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL21zc2RlbXV4LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvbXNzZGVtdXguYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvbXNzZGVtdXguYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXguVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL21zc2RlbXV4LmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXgub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL21zc2RlbXV4LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvbXNzZGVtdXguYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvbXNzZGVtdXguYyc7IGZpYAorCitlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZnBhcnNlLXJ0cG9udmlmcGFyc2UubzogZWxlbWVudHMvcnRwb252aWZwYXJzZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfcnRwb252aWZwYXJzZV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3J0cG9udmlmcGFyc2UtcnRwb252aWZwYXJzZS5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3J0cG9udmlmcGFyc2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvcnRwb252aWZwYXJzZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZnBhcnNlLXJ0cG9udmlmcGFyc2UuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZnBhcnNlLXJ0cG9udmlmcGFyc2UuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3J0cG9udmlmcGFyc2VfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3J0cG9udmlmcGFyc2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvcnRwb252aWZwYXJzZS5jCisKK2VsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmcGFyc2UtcnRwb252aWZwYXJzZS5vYmo6IGVsZW1lbnRzL3J0cG9udmlmcGFyc2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3J0cG9udmlmcGFyc2VfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmcGFyc2UtcnRwb252aWZwYXJzZS5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3J0cG9udmlmcGFyc2UtcnRwb252aWZwYXJzZS5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvcnRwb252aWZwYXJzZS5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3J0cG9udmlmcGFyc2UuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvcnRwb252aWZwYXJzZS5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZnBhcnNlLXJ0cG9udmlmcGFyc2UuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZnBhcnNlLXJ0cG9udmlmcGFyc2UuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfcnRwb252aWZwYXJzZV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZnBhcnNlLXJ0cG9udmlmcGFyc2Uub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvcnRwb252aWZwYXJzZS5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMnOyBmaWAKKworZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAubzogZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcC1ydHBvbnZpZnRpbWVzdGFtcC5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcC1ydHBvbnZpZnRpbWVzdGFtcC5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAubyBgdGVzdCAtZiAnZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcC1ydHBvbnZpZnRpbWVzdGFtcC5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAubyBgdGVzdCAtZiAnZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYworCitlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcC1ydHBvbnZpZnRpbWVzdGFtcC5vYmo6IGVsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAub2JqIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcC1ydHBvbnZpZnRpbWVzdGFtcC5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wLXJ0cG9udmlmdGltZXN0YW1wLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wLXJ0cG9udmlmdGltZXN0YW1wLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMnOyBmaWAKIAogZWxlbWVudHMvZWxlbWVudHNfdGltaWRpdHktdGltaWRpdHkubzogZWxlbWVudHMvdGltaWRpdHkuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3RpbWlkaXR5X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c190aW1pZGl0eS10aW1pZGl0eS5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c190aW1pZGl0eS10aW1pZGl0eS5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfdGltaWRpdHktdGltaWRpdHkubyBgdGVzdCAtZiAnZWxlbWVudHMvdGltaWRpdHkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvdGltaWRpdHkuYwpAQCAtMjc5Myw2ICszMTcyLDIwIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfdXZjaDI2NGRlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX3V2Y2gyNjRkZW11eC11dmNoMjY0ZGVtdXgub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy91dmNoMjY0ZGVtdXguYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy91dmNoMjY0ZGVtdXguYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvdXZjaDI2NGRlbXV4LmMnOyBmaWAKIAorZWxlbWVudHMvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5vOiBlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC12aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYworCitlbGVtZW50cy9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLm9iajogZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC12aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwub2JqIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC12aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYyc7IGZpYAorCiBlbGVtZW50cy9lbGVtZW50c192b2FhY2VuYy12b2FhY2VuYy5vOiBlbGVtZW50cy92b2FhY2VuYy5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfdm9hYWNlbmNfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX3ZvYWFjZW5jLXZvYWFjZW5jLm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3ZvYWFjZW5jLXZvYWFjZW5jLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c192b2FhY2VuYy12b2FhY2VuYy5vIGB0ZXN0IC1mICdlbGVtZW50cy92b2FhY2VuYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy92b2FhY2VuYy5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c192b2FhY2VuYy12b2FhY2VuYy5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3ZvYWFjZW5jLXZvYWFjZW5jLlBvCkBAIC0yODc3LDYgKzMyNzAsMzQgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX2dzdGdsbWVtb3J5X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYnMvbGlic19nc3RnbG1lbW9yeS1nc3RnbG1lbW9yeS5vYmogYGlmIHRlc3QgLWYgJ2xpYnMvZ3N0Z2xtZW1vcnkuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdsaWJzL2dzdGdsbWVtb3J5LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2xpYnMvZ3N0Z2xtZW1vcnkuYyc7IGZpYAogCitsaWJzL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5Lm86IGxpYnMvZ3N0Z2xxdWVyeS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19nc3RnbHF1ZXJ5X0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJzL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5Lm8gLU1EIC1NUCAtTUYgbGlicy8kKERFUERJUikvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkuVHBvIC1jIC1vIGxpYnMvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkubyBgdGVzdCAtZiAnbGlicy9nc3RnbHF1ZXJ5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGxpYnMvZ3N0Z2xxdWVyeS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5LlRwbyBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdscXVlcnktZ3N0Z2xxdWVyeS5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2xpYnMvZ3N0Z2xxdWVyeS5jJyBvYmplY3Q9J2xpYnMvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19nc3RnbHF1ZXJ5X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYnMvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkubyBgdGVzdCAtZiAnbGlicy9nc3RnbHF1ZXJ5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGxpYnMvZ3N0Z2xxdWVyeS5jCisKK2xpYnMvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkub2JqOiBsaWJzL2dzdGdscXVlcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnNfZ3N0Z2xxdWVyeV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGlicy9saWJzX2dzdGdscXVlcnktZ3N0Z2xxdWVyeS5vYmogLU1EIC1NUCAtTUYgbGlicy8kKERFUERJUikvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkuVHBvIC1jIC1vIGxpYnMvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkub2JqIGBpZiB0ZXN0IC1mICdsaWJzL2dzdGdscXVlcnkuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdsaWJzL2dzdGdscXVlcnkuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvbGlicy9nc3RnbHF1ZXJ5LmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgbGlicy8kKERFUERJUikvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkuVHBvIGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5LlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbGlicy9nc3RnbHF1ZXJ5LmMnIG9iamVjdD0nbGlicy9saWJzX2dzdGdscXVlcnktZ3N0Z2xxdWVyeS5vYmonIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnNfZ3N0Z2xxdWVyeV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJzL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5Lm9iaiBgaWYgdGVzdCAtZiAnbGlicy9nc3RnbHF1ZXJ5LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbGlicy9nc3RnbHF1ZXJ5LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2xpYnMvZ3N0Z2xxdWVyeS5jJzsgZmlgCisKK2xpYnMvbGlic19nc3RnbHNsLWdzdGdsc2wubzogbGlicy9nc3RnbHNsLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX2dzdGdsc2xfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYnMvbGlic19nc3RnbHNsLWdzdGdsc2wubyAtTUQgLU1QIC1NRiBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdsc2wtZ3N0Z2xzbC5UcG8gLWMgLW8gbGlicy9saWJzX2dzdGdsc2wtZ3N0Z2xzbC5vIGB0ZXN0IC1mICdsaWJzL2dzdGdsc2wuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGlicy9nc3RnbHNsLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgbGlicy8kKERFUERJUikvbGlic19nc3RnbHNsLWdzdGdsc2wuVHBvIGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2xzbC1nc3RnbHNsLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbGlicy9nc3RnbHNsLmMnIG9iamVjdD0nbGlicy9saWJzX2dzdGdsc2wtZ3N0Z2xzbC5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX2dzdGdsc2xfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGlicy9saWJzX2dzdGdsc2wtZ3N0Z2xzbC5vIGB0ZXN0IC1mICdsaWJzL2dzdGdsc2wuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGlicy9nc3RnbHNsLmMKKworbGlicy9saWJzX2dzdGdsc2wtZ3N0Z2xzbC5vYmo6IGxpYnMvZ3N0Z2xzbC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19nc3RnbHNsX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJzL2xpYnNfZ3N0Z2xzbC1nc3RnbHNsLm9iaiAtTUQgLU1QIC1NRiBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdsc2wtZ3N0Z2xzbC5UcG8gLWMgLW8gbGlicy9saWJzX2dzdGdsc2wtZ3N0Z2xzbC5vYmogYGlmIHRlc3QgLWYgJ2xpYnMvZ3N0Z2xzbC5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2xpYnMvZ3N0Z2xzbC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9saWJzL2dzdGdsc2wuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdsc2wtZ3N0Z2xzbC5UcG8gbGlicy8kKERFUERJUikvbGlic19nc3RnbHNsLWdzdGdsc2wuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdsaWJzL2dzdGdsc2wuYycgb2JqZWN0PSdsaWJzL2xpYnNfZ3N0Z2xzbC1nc3RnbHNsLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19nc3RnbHNsX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYnMvbGlic19nc3RnbHNsLWdzdGdsc2wub2JqIGBpZiB0ZXN0IC1mICdsaWJzL2dzdGdsc2wuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdsaWJzL2dzdGdsc2wuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvbGlicy9nc3RnbHNsLmMnOyBmaWAKKwogbGlicy9saWJzX2dzdGdsdXBsb2FkLWdzdGdsdXBsb2FkLm86IGxpYnMvZ3N0Z2x1cGxvYWQuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnNfZ3N0Z2x1cGxvYWRfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYnMvbGlic19nc3RnbHVwbG9hZC1nc3RnbHVwbG9hZC5vIC1NRCAtTVAgLU1GIGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2x1cGxvYWQtZ3N0Z2x1cGxvYWQuVHBvIC1jIC1vIGxpYnMvbGlic19nc3RnbHVwbG9hZC1nc3RnbHVwbG9hZC5vIGB0ZXN0IC1mICdsaWJzL2dzdGdsdXBsb2FkLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGxpYnMvZ3N0Z2x1cGxvYWQuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdsdXBsb2FkLWdzdGdsdXBsb2FkLlRwbyBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdsdXBsb2FkLWdzdGdsdXBsb2FkLlBvCkBAIC0yOTQ3LDYgKzMzNjgsMzQgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX21wZWd2aWRlb3BhcnNlcl9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJzL2xpYnNfbXBlZ3ZpZGVvcGFyc2VyLW1wZWd2aWRlb3BhcnNlci5vYmogYGlmIHRlc3QgLWYgJ2xpYnMvbXBlZ3ZpZGVvcGFyc2VyLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbGlicy9tcGVndmlkZW9wYXJzZXIuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvbGlicy9tcGVndmlkZW9wYXJzZXIuYyc7IGZpYAogCitsaWJzL2xpYnNfcGxheWVyLXBsYXllci5vOiBsaWJzL3BsYXllci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19wbGF5ZXJfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYnMvbGlic19wbGF5ZXItcGxheWVyLm8gLU1EIC1NUCAtTUYgbGlicy8kKERFUERJUikvbGlic19wbGF5ZXItcGxheWVyLlRwbyAtYyAtbyBsaWJzL2xpYnNfcGxheWVyLXBsYXllci5vIGB0ZXN0IC1mICdsaWJzL3BsYXllci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaWJzL3BsYXllci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGxpYnMvJChERVBESVIpL2xpYnNfcGxheWVyLXBsYXllci5UcG8gbGlicy8kKERFUERJUikvbGlic19wbGF5ZXItcGxheWVyLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbGlicy9wbGF5ZXIuYycgb2JqZWN0PSdsaWJzL2xpYnNfcGxheWVyLXBsYXllci5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX3BsYXllcl9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJzL2xpYnNfcGxheWVyLXBsYXllci5vIGB0ZXN0IC1mICdsaWJzL3BsYXllci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaWJzL3BsYXllci5jCisKK2xpYnMvbGlic19wbGF5ZXItcGxheWVyLm9iajogbGlicy9wbGF5ZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnNfcGxheWVyX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJzL2xpYnNfcGxheWVyLXBsYXllci5vYmogLU1EIC1NUCAtTUYgbGlicy8kKERFUERJUikvbGlic19wbGF5ZXItcGxheWVyLlRwbyAtYyAtbyBsaWJzL2xpYnNfcGxheWVyLXBsYXllci5vYmogYGlmIHRlc3QgLWYgJ2xpYnMvcGxheWVyLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbGlicy9wbGF5ZXIuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvbGlicy9wbGF5ZXIuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBsaWJzLyQoREVQRElSKS9saWJzX3BsYXllci1wbGF5ZXIuVHBvIGxpYnMvJChERVBESVIpL2xpYnNfcGxheWVyLXBsYXllci5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2xpYnMvcGxheWVyLmMnIG9iamVjdD0nbGlicy9saWJzX3BsYXllci1wbGF5ZXIub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX3BsYXllcl9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJzL2xpYnNfcGxheWVyLXBsYXllci5vYmogYGlmIHRlc3QgLWYgJ2xpYnMvcGxheWVyLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbGlicy9wbGF5ZXIuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvbGlicy9wbGF5ZXIuYyc7IGZpYAorCitsaWJzL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5vOiBsaWJzL3BsYXllcl9kdW1teS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19wbGF5ZXJfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYnMvbGlic19wbGF5ZXItcGxheWVyX2R1bW15Lm8gLU1EIC1NUCAtTUYgbGlicy8kKERFUERJUikvbGlic19wbGF5ZXItcGxheWVyX2R1bW15LlRwbyAtYyAtbyBsaWJzL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5vIGB0ZXN0IC1mICdsaWJzL3BsYXllcl9kdW1teS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaWJzL3BsYXllcl9kdW1teS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGxpYnMvJChERVBESVIpL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5UcG8gbGlicy8kKERFUERJUikvbGlic19wbGF5ZXItcGxheWVyX2R1bW15LlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbGlicy9wbGF5ZXJfZHVtbXkuYycgb2JqZWN0PSdsaWJzL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX3BsYXllcl9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJzL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5vIGB0ZXN0IC1mICdsaWJzL3BsYXllcl9kdW1teS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaWJzL3BsYXllcl9kdW1teS5jCisKK2xpYnMvbGlic19wbGF5ZXItcGxheWVyX2R1bW15Lm9iajogbGlicy9wbGF5ZXJfZHVtbXkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnNfcGxheWVyX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJzL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5vYmogLU1EIC1NUCAtTUYgbGlicy8kKERFUERJUikvbGlic19wbGF5ZXItcGxheWVyX2R1bW15LlRwbyAtYyAtbyBsaWJzL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5vYmogYGlmIHRlc3QgLWYgJ2xpYnMvcGxheWVyX2R1bW15LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbGlicy9wbGF5ZXJfZHVtbXkuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvbGlicy9wbGF5ZXJfZHVtbXkuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBsaWJzLyQoREVQRElSKS9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkuVHBvIGxpYnMvJChERVBESVIpL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2xpYnMvcGxheWVyX2R1bW15LmMnIG9iamVjdD0nbGlicy9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX3BsYXllcl9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJzL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5vYmogYGlmIHRlc3QgLWYgJ2xpYnMvcGxheWVyX2R1bW15LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbGlicy9wbGF5ZXJfZHVtbXkuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvbGlicy9wbGF5ZXJfZHVtbXkuYyc7IGZpYAorCiBsaWJzL2xpYnNfdmMxcGFyc2VyLXZjMXBhcnNlci5vOiBsaWJzL3ZjMXBhcnNlci5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic192YzFwYXJzZXJfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYnMvbGlic192YzFwYXJzZXItdmMxcGFyc2VyLm8gLU1EIC1NUCAtTUYgbGlicy8kKERFUERJUikvbGlic192YzFwYXJzZXItdmMxcGFyc2VyLlRwbyAtYyAtbyBsaWJzL2xpYnNfdmMxcGFyc2VyLXZjMXBhcnNlci5vIGB0ZXN0IC1mICdsaWJzL3ZjMXBhcnNlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaWJzL3ZjMXBhcnNlci5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGxpYnMvJChERVBESVIpL2xpYnNfdmMxcGFyc2VyLXZjMXBhcnNlci5UcG8gbGlicy8kKERFUERJUikvbGlic192YzFwYXJzZXItdmMxcGFyc2VyLlBvCkBAIC0zMjU2LDYgKzM3MDUsMTMgQEAKIAktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKIAkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAogCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKK2VsZW1lbnRzL2Rhc2hfZGVtdXgubG9nOiBlbGVtZW50cy9kYXNoX2RlbXV4JChFWEVFWFQpCisJQHA9J2VsZW1lbnRzL2Rhc2hfZGVtdXgkKEVYRUVYVCknOyBcCisJYj0nZWxlbWVudHMvZGFzaF9kZW11eCc7IFwKKwkkKGFtX19jaGVja19wcmUpICQoTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAorCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAorCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCisJIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQogZWxlbWVudHMvZmFhYy5sb2c6IGVsZW1lbnRzL2ZhYWMkKEVYRUVYVCkKIAlAcD0nZWxlbWVudHMvZmFhYyQoRVhFRVhUKSc7IFwKIAliPSdlbGVtZW50cy9mYWFjJzsgXApAQCAtMzI5OCw2ICszNzU0LDEzIEBACiAJLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCiAJJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKIAkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCitlbGVtZW50cy9tc3NkZW11eC5sb2c6IGVsZW1lbnRzL21zc2RlbXV4JChFWEVFWFQpCisJQHA9J2VsZW1lbnRzL21zc2RlbXV4JChFWEVFWFQpJzsgXAorCWI9J2VsZW1lbnRzL21zc2RlbXV4JzsgXAorCSQoYW1fX2NoZWNrX3ByZSkgJChMT0dfRFJJVkVSKSAtLXRlc3QtbmFtZSAiJCRmIiBcCisJLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCisJJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKKwkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCiBlbGVtZW50cy9vZmEubG9nOiBlbGVtZW50cy9vZmEkKEVYRUVYVCkKIAlAcD0nZWxlbWVudHMvb2ZhJChFWEVFWFQpJzsgXAogCWI9J2VsZW1lbnRzL29mYSc7IFwKQEAgLTMzMjYsMTMgKzM3ODksNiBAQAogCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAogCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCiAJIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQotZWxlbWVudHMvb3B1cy5sb2c6IGVsZW1lbnRzL29wdXMkKEVYRUVYVCkKLQlAcD0nZWxlbWVudHMvb3B1cyQoRVhFRVhUKSc7IFwKLQliPSdlbGVtZW50cy9vcHVzJzsgXAotCSQoYW1fX2NoZWNrX3ByZSkgJChMT0dfRFJJVkVSKSAtLXRlc3QtbmFtZSAiJCRmIiBcCi0JLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCi0JJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKLQkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCiBlbGVtZW50cy9jdXJsaHR0cHNpbmsubG9nOiBlbGVtZW50cy9jdXJsaHR0cHNpbmskKEVYRUVYVCkKIAlAcD0nZWxlbWVudHMvY3VybGh0dHBzaW5rJChFWEVFWFQpJzsgXAogCWI9J2VsZW1lbnRzL2N1cmxodHRwc2luayc7IFwKQEAgLTMzODIsNiArMzgzOCwxMyBAQAogCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAogCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCiAJIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQorZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsLmxvZzogZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsJChFWEVFWFQpCisJQHA9J2VsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbCQoRVhFRVhUKSc7IFwKKwliPSdlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwnOyBcCisJJChhbV9fY2hlY2tfcHJlKSAkKExPR19EUklWRVIpIC0tdGVzdC1uYW1lICIkJGYiIFwKKwktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKKwkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAorCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKIGVsZW1lbnRzL2F1dG9jb252ZXJ0LmxvZzogZWxlbWVudHMvYXV0b2NvbnZlcnQkKEVYRUVYVCkKIAlAcD0nZWxlbWVudHMvYXV0b2NvbnZlcnQkKEVYRUVYVCknOyBcCiAJYj0nZWxlbWVudHMvYXV0b2NvbnZlcnQnOyBcCkBAIC0zNDE3LDEzICszODgwLDYgQEAKIAktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKIAkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAogCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKLWVsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIubG9nOiBlbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyJChFWEVFWFQpCi0JQHA9J2VsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIkKEVYRUVYVCknOyBcCi0JYj0nZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplcic7IFwKLQkkKGFtX19jaGVja19wcmUpICQoTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAotCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAotCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCi0JIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQogZWxlbWVudHMvY2FtZXJhYmluLmxvZzogZWxlbWVudHMvY2FtZXJhYmluJChFWEVFWFQpCiAJQHA9J2VsZW1lbnRzL2NhbWVyYWJpbiQoRVhFRVhUKSc7IFwKIAliPSdlbGVtZW50cy9jYW1lcmFiaW4nOyBcCkBAIC0zNTA4LDEzICszOTY0LDYgQEAKIAktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKIAkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAogCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKLWVsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmxvZzogZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMkKEVYRUVYVCkKLQlAcD0nZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMkKEVYRUVYVCknOyBcCi0JYj0nZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMnOyBcCi0JJChhbV9fY2hlY2tfcHJlKSAkKExPR19EUklWRVIpIC0tdGVzdC1uYW1lICIkJGYiIFwKLQktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKLQkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAotCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKIGVsZW1lbnRzL214ZmRlbXV4LmxvZzogZWxlbWVudHMvbXhmZGVtdXgkKEVYRUVYVCkKIAlAcD0nZWxlbWVudHMvbXhmZGVtdXgkKEVYRUVYVCknOyBcCiAJYj0nZWxlbWVudHMvbXhmZGVtdXgnOyBcCkBAIC0zNTI5LDYgKzM5NzgsMTMgQEAKIAktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKIAkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAogCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKK2VsZW1lbnRzL25ldHNpbS5sb2c6IGVsZW1lbnRzL25ldHNpbSQoRVhFRVhUKQorCUBwPSdlbGVtZW50cy9uZXRzaW0kKEVYRUVYVCknOyBcCisJYj0nZWxlbWVudHMvbmV0c2ltJzsgXAorCSQoYW1fX2NoZWNrX3ByZSkgJChMT0dfRFJJVkVSKSAtLXRlc3QtbmFtZSAiJCRmIiBcCisJLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCisJJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKKwkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCiBlbGVtZW50cy9wY2FwcGFyc2UubG9nOiBlbGVtZW50cy9wY2FwcGFyc2UkKEVYRUVYVCkKIAlAcD0nZWxlbWVudHMvcGNhcHBhcnNlJChFWEVFWFQpJzsgXAogCWI9J2VsZW1lbnRzL3BjYXBwYXJzZSc7IFwKQEAgLTM1MzYsOSArMzk5MiwxNiBAQAogCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAogCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCiAJIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQotZWxlbWVudHMvcnRwb252aWYubG9nOiBlbGVtZW50cy9ydHBvbnZpZiQoRVhFRVhUKQotCUBwPSdlbGVtZW50cy9ydHBvbnZpZiQoRVhFRVhUKSc7IFwKLQliPSdlbGVtZW50cy9ydHBvbnZpZic7IFwKK2VsZW1lbnRzL3J0cG9udmlmcGFyc2UubG9nOiBlbGVtZW50cy9ydHBvbnZpZnBhcnNlJChFWEVFWFQpCisJQHA9J2VsZW1lbnRzL3J0cG9udmlmcGFyc2UkKEVYRUVYVCknOyBcCisJYj0nZWxlbWVudHMvcnRwb252aWZwYXJzZSc7IFwKKwkkKGFtX19jaGVja19wcmUpICQoTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAorCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAorCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCisJIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQorZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAubG9nOiBlbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcCQoRVhFRVhUKQorCUBwPSdlbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcCQoRVhFRVhUKSc7IFwKKwliPSdlbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcCc7IFwKIAkkKGFtX19jaGVja19wcmUpICQoTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAogCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAogCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCkBAIC0zNjk3LDYgKzQxNjAsMjAgQEAKIAktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKIAkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAogCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKK2xpYnMvZ3N0Z2xxdWVyeS5sb2c6IGxpYnMvZ3N0Z2xxdWVyeSQoRVhFRVhUKQorCUBwPSdsaWJzL2dzdGdscXVlcnkkKEVYRUVYVCknOyBcCisJYj0nbGlicy9nc3RnbHF1ZXJ5JzsgXAorCSQoYW1fX2NoZWNrX3ByZSkgJChMT0dfRFJJVkVSKSAtLXRlc3QtbmFtZSAiJCRmIiBcCisJLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCisJJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKKwkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCitsaWJzL2dzdGdsc2wubG9nOiBsaWJzL2dzdGdsc2wkKEVYRUVYVCkKKwlAcD0nbGlicy9nc3RnbHNsJChFWEVFWFQpJzsgXAorCWI9J2xpYnMvZ3N0Z2xzbCc7IFwKKwkkKGFtX19jaGVja19wcmUpICQoTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAorCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAorCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCisJIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQogZWxlbWVudHMvZ2xpbWFnZXNpbmsubG9nOiBlbGVtZW50cy9nbGltYWdlc2luayQoRVhFRVhUKQogCUBwPSdlbGVtZW50cy9nbGltYWdlc2luayQoRVhFRVhUKSc7IFwKIAliPSdlbGVtZW50cy9nbGltYWdlc2luayc7IFwKQEAgLTM3MTEsNiArNDE4OCwyMCBAQAogCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAogCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCiAJIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQorZWxlbWVudHMvaGxzX2RlbXV4LmxvZzogZWxlbWVudHMvaGxzX2RlbXV4JChFWEVFWFQpCisJQHA9J2VsZW1lbnRzL2hsc19kZW11eCQoRVhFRVhUKSc7IFwKKwliPSdlbGVtZW50cy9obHNfZGVtdXgnOyBcCisJJChhbV9fY2hlY2tfcHJlKSAkKExPR19EUklWRVIpIC0tdGVzdC1uYW1lICIkJGYiIFwKKwktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKKwkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAorCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKK2xpYnMvcGxheWVyLmxvZzogbGlicy9wbGF5ZXIkKEVYRUVYVCkKKwlAcD0nbGlicy9wbGF5ZXIkKEVYRUVYVCknOyBcCisJYj0nbGlicy9wbGF5ZXInOyBcCisJJChhbV9fY2hlY2tfcHJlKSAkKExPR19EUklWRVIpIC0tdGVzdC1uYW1lICIkJGYiIFwKKwktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKKwkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAorCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKIC50ZXN0LmxvZzoKIAlAcD0nJDwnOyBcCiAJJChhbV9fc2V0X2IpOyBcCkBAIC0zOTEzLDMxICs0NDA0LDI2IEBACiAjIGlmIHRoZSB0ZXN0IGZhaWxzLCBydW4gaXQgYWdhaW4gYXQgYXQgbGVhc3QgZGVidWcgbGV2ZWwgMgogJS5jaGVjazogJQogCUAkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqIHx8CQkJCQkJCVwKIAkkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAogCUdTVF9ERUJVRz0kJEdTVF9ERUJVRywqOjIJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqCiAKICMganVzdCBsaWtlICdjaGVjaycsIGJ1dCBkb24ndCBydW4gaXQgYWdhaW4gaWYgaXQgZmFpbHMgKHVzZWZ1bCBmb3IgZGVidWdnaW5nKQogJS5jaGVjay1ub3JlcGVhdDogJQogCUAkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqCiAKICMgcnVuIGFueSBnaXZlbiB0ZXN0IGluIGEgbG9vcAogJS50b3J0dXJlOiAlCiAJQGZvciBpIGluIGBzZXEgMSAkKExPT1BTKWA7IGRvCQkJCVwKIAkkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqOyBkb25lCiAKICMgcnVuIGFueSBnaXZlbiB0ZXN0IGluIGFuIGluZmluaXRlIGxvb3AKICUuZm9yZXZlcjogJQogCUB3aGlsZSB0cnVlOyBkbwkJCQkJCVwKIAkkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqIHx8IGJyZWFrOyBkb25lCiAKICMgdmFsZ3JpbmQgYW55IGdpdmVuIHRlc3QgYnkgcnVubmluZyBtYWtlIHRlc3QudmFsZ3JpbmQKQEAgLTM5NTMsNyArNDQzOSw3IEBACiAJLS1zaG93LXBvc3NpYmx5LWxvc3Q9bm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJLS1sZWFrLXJlc29sdXRpb249aGlnaCAtLW51bS1jYWxsZXJzPTIwCQkJXAogCS4vJCogMj4mMSB8IHRlZSAkJHZhbGdyaW5kX2xvZyA7CQkJXAotCWlmIGdyZXAgIj09IiAkJHZhbGdyaW5kX2xvZyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCVwKKwlpZiBncmVwICJePT0iICQkdmFsZ3JpbmRfbG9nID4gL2Rldi9udWxsIDI+JjE7IHRoZW4JXAogCSAgICBybSAkJHZhbGdyaW5kX2xvZzsJCQkJCVwKIAkgICAgZXhpdCAxOwkJCQkJCVwKIAlmaSA7CQkJCQkJCVwKQEAgLTQxNDUsNiArNDYzMSwxMyBAQAogY2xlYW4tbG9jYWw6IGNsZWFuLWxvY2FsLWNoZWNrCiBkaXN0Y2xlYW4tbG9jYWw6IGRpc3RjbGVhbi1sb2NhbC1vcmMKIAorQFdJVEhfR1NUX1BMQVlFUl9URVNUU19UUlVFQCQoUExBWUVSX01FRElBX0ZJTEVTKToKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUAJJChNS0RJUl9QKSBtZWRpYQorQFdJVEhfR1NUX1BMQVlFUl9URVNUU19UUlVFQAkkKFdHRVQpIC1jIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvbWVkaWEvc21hbGwvJChzdWJzdCBtZWRpYS8sLCRAKSAtTyBtZWRpYS8kKHN1YnN0IG1lZGlhLywsJEApCisKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUBsaWJzL3BsYXllcl9kdW1teS5jOiAkKFBMQVlFUl9NRURJQV9GSUxFUykKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUAJdG91Y2ggbGlicy9wbGF5ZXJfZHVtbXkuYworCiBvcmMvYmF5ZXIuYzogJCh0b3Bfc3JjZGlyKS9nc3QvYmF5ZXIvZ3N0YmF5ZXJvcmMub3JjCiAJJChNS0RJUl9QKSBvcmMKIAkkKE9SQ0MpIC0tdGVzdCAtbyAkQCAkPApkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGZkMDUwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKQEAgLTAsMCArMSw1MTEgQEAKKy8qIEEgc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIHRoYXQgYXJlIGNvbW1vbiBiZXR3ZWVuIGVsZW1lbnRzCisgKiBiYXNlZCB1cG9uIEdzdEFkYXB0aXZlRGVtdXgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDwyMDE1PiBZb3VWaWV3IFRWIEx0ZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KKyNpbmNsdWRlICJhZGFwdGl2ZV9kZW11eF9lbmdpbmUuaCIKKyNpbmNsdWRlICJhZGFwdGl2ZV9kZW11eF9jb21tb24uaCIKKworI2RlZmluZSBHU1RfVEVTVF9IVFRQX1NSQ19OQU1FICAgICAgICAgICAgInRlc3RodHRwc3JjIgorCitzdHJ1Y3QgX0dzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZUNsYXNzCit7CisgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCisjZGVmaW5lIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworCitzdGF0aWMgdm9pZCBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmplY3QpOworc3RhdGljIHZvaWQgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CitzdGF0aWMgdm9pZCBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX2NsZWFyIChHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKgorICAgIHRlc3REYXRhKTsKKworR19ERUZJTkVfVFlQRSAoR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlLCBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlLAorICAgIEdfVFlQRV9PQkpFQ1QpOworCitzdGF0aWMgdm9pZAorZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9jbGFzc19pbml0IChHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2VDbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKm9iamVjdCA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7CisKKyAgb2JqZWN0LT5kaXNwb3NlID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9kaXNwb3NlOworICBvYmplY3QtPmZpbmFsaXplID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9maW5hbGl6ZTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfaW5pdCAoR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICogdGVzdERhdGEpCit7CisgIHRlc3REYXRhLT5vdXRwdXRfc3RyZWFtcyA9IE5VTEw7CisgIHRlc3REYXRhLT50ZXN0X3Rhc2sgPSBOVUxMOworICBnX3JlY19tdXRleF9pbml0ICgmdGVzdERhdGEtPnRlc3RfdGFza19sb2NrKTsKKyAgZ19tdXRleF9pbml0ICgmdGVzdERhdGEtPnRlc3RfdGFza19zdGF0ZV9sb2NrKTsKKyAgZ19jb25kX2luaXQgKCZ0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlX2NvbmQpOworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX2NsZWFyICh0ZXN0RGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX2NsZWFyIChHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKiB0ZXN0RGF0YSkKK3sKKyAgaWYgKHRlc3REYXRhLT5vdXRwdXRfc3RyZWFtcykgeworICAgIGdfbGlzdF9mcmVlICh0ZXN0RGF0YS0+b3V0cHV0X3N0cmVhbXMpOworICAgIHRlc3REYXRhLT5vdXRwdXRfc3RyZWFtcyA9IE5VTEw7CisgIH0KKyAgdGVzdERhdGEtPmNvdW50X29mX2ZpbmlzaGVkX3N0cmVhbXMgPSAwOworICBpZiAodGVzdERhdGEtPnRlc3RfdGFzaykgeworICAgIGdzdF90YXNrX3N0b3AgKHRlc3REYXRhLT50ZXN0X3Rhc2spOworICAgIGdzdF90YXNrX2pvaW4gKHRlc3REYXRhLT50ZXN0X3Rhc2spOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHRlc3REYXRhLT50ZXN0X3Rhc2spOworICAgIHRlc3REYXRhLT50ZXN0X3Rhc2sgPSBOVUxMOworICB9CisgIHRlc3REYXRhLT5zaWduYWxfY29udGV4dCA9IE5VTEw7CisgIHRlc3REYXRhLT50ZXN0X3Rhc2tfc3RhdGUgPSBURVNUX1RBU0tfU1RBVEVfTk9UX1NUQVJURUQ7CisgIHRlc3REYXRhLT50aHJlc2hvbGRfZm9yX3NlZWsgPSAwOworICBnc3RfZXZlbnRfcmVwbGFjZSAoJnRlc3REYXRhLT5zZWVrX2V2ZW50LCBOVUxMKTsKKyAgdGVzdERhdGEtPnNpZ25hbF9jb250ZXh0ID0gTlVMTDsKK30KKworCitzdGF0aWMgdm9pZAorZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhID0gR1NUX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRSAob2JqZWN0KTsKKworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX2NsZWFyICh0ZXN0RGF0YSk7CisKKyAgR1NUX0NBTExfUEFSRU5UIChHX09CSkVDVF9DTEFTUywgZGlzcG9zZSwgKG9iamVjdCkpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YSA9IEdTVF9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UgKG9iamVjdCk7CisKKyAgZ19jb25kX2NsZWFyICgmdGVzdERhdGEtPnRlc3RfdGFza19zdGF0ZV9jb25kKTsKKyAgZ19tdXRleF9jbGVhciAoJnRlc3REYXRhLT50ZXN0X3Rhc2tfc3RhdGVfbG9jayk7CisgIGdfcmVjX211dGV4X2NsZWFyICgmdGVzdERhdGEtPnRlc3RfdGFza19sb2NrKTsKKyAgaWYgKHRlc3REYXRhLT50ZXN0X3Rhc2spIHsKKyAgICBnc3RfdGFza19zdG9wICh0ZXN0RGF0YS0+dGVzdF90YXNrKTsKKyAgICBnc3RfdGFza19qb2luICh0ZXN0RGF0YS0+dGVzdF90YXNrKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmICh0ZXN0RGF0YS0+dGVzdF90YXNrKTsKKyAgICB0ZXN0RGF0YS0+dGVzdF90YXNrID0gTlVMTDsKKyAgfQorICBpZiAodGVzdERhdGEtPm91dHB1dF9zdHJlYW1zKSB7CisgICAgZ19saXN0X2ZyZWUgKHRlc3REYXRhLT5vdXRwdXRfc3RyZWFtcyk7CisgICAgdGVzdERhdGEtPm91dHB1dF9zdHJlYW1zID0gTlVMTDsKKyAgfQorCisgIEdTVF9DQUxMX1BBUkVOVCAoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAob2JqZWN0KSk7Cit9CisKKy8qKgorICogZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXc6CisgKgorICogQ3JlYXRlcyBhIG5ldyAjR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlLiBGcmVlIHdpdGggZ19vYmplY3RfdW5yZWYoKS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3ICNHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UKKyAqLworR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICoKK2dzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICh2b2lkKQoreworICByZXR1cm4gZ19vYmplY3RfbmV3diAoR1NUX1RZUEVfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFLCAwLCBOVUxMKTsKK30KKworCitHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0ICoKK2dzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2ZpbmRfdGVzdF9kYXRhX2J5X3N0cmVhbSAoR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICoKKyAgICB0ZXN0RGF0YSwgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sIGd1aW50ICogaW5kZXgpCit7CisgIGdjaGFyICpwYWRfbmFtZTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCAqcmV0ID0gTlVMTDsKKyAgZ3VpbnQgY291bnQgPSAwOworCisgIHBhZF9uYW1lID0gZ3N0X3BhZF9nZXRfbmFtZSAoc3RyZWFtLT5wYWQpOworICBmYWlsX3VubGVzcyAocGFkX25hbWUgIT0gTlVMTCk7CisgIGZvciAoR0xpc3QgKiB3YWxrID0gdGVzdERhdGEtPm91dHB1dF9zdHJlYW1zOyB3YWxrOyB3YWxrID0gZ19saXN0X25leHQgKHdhbGspKSB7CisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCAqdGQgPSB3YWxrLT5kYXRhOworICAgIGlmIChzdHJjbXAgKHRkLT5uYW1lLCBwYWRfbmFtZSkgPT0gMCkgeworICAgICAgcmV0ID0gdGQ7CisgICAgICBpZiAoaW5kZXgpCisgICAgICAgICppbmRleCA9IGNvdW50OworICAgIH0KKyAgICArK2NvdW50OworICB9CisgIGdfZnJlZSAocGFkX25hbWUpOworICByZXR1cm4gcmV0OworfQorCisvKiBmdW5jdGlvbiB0byB2YWxpZGF0ZSBkYXRhIHJlY2VpdmVkIGJ5IEFwcFNpbmsgKi8KK2dib29sZWFuCitnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19yZWNlaXZlZF9kYXRhIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqCisgICAgZW5naW5lLCBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqIHN0cmVhbSwgR3N0QnVmZmVyICogYnVmZmVyLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0TWFwSW5mbyBpbmZvOworICBndWludCBwYXR0ZXJuOworICBndWludDY0IHN0cmVhbU9mZnNldDsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YSA9IEdTVF9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UgKHVzZXJfZGF0YSk7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgKnRlc3RPdXRwdXRTdHJlYW1EYXRhOworCisgIGZhaWxfdW5sZXNzIChzdHJlYW0gIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzIChlbmdpbmUtPnBpcGVsaW5lICE9IE5VTEwpOworICB0ZXN0T3V0cHV0U3RyZWFtRGF0YSA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9maW5kX3Rlc3RfZGF0YV9ieV9zdHJlYW0gKHRlc3REYXRhLCBzdHJlYW0sIE5VTEwpOworICBmYWlsX3VubGVzcyAodGVzdE91dHB1dFN0cmVhbURhdGEgIT0gTlVMTCk7CisgIHN0cmVhbU9mZnNldCA9IHN0cmVhbS0+c2VnbWVudF9zdGFydCArIHN0cmVhbS0+c2VnbWVudF9yZWNlaXZlZF9zaXplOworICBpZiAodGVzdE91dHB1dFN0cmVhbURhdGEtPmV4cGVjdGVkX2RhdGEpIHsKKyAgICBnc2l6ZSBzaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKTsKKyAgICBpZiAoZ3N0X2J1ZmZlcl9tZW1jbXAgKGJ1ZmZlciwgMCwKKyAgICAgICAgICAgICZ0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfZGF0YVtzdHJlYW1PZmZzZXRdLCBzaXplKSA9PSAwKSB7CisgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisgICAgLyogSWYgYnVmZmVycyBkbyBub3QgbWF0Y2gsIGZhbGwgYmFjayB0byBhIHNsb3dlciBieXRlLWJhc2VkIGNoZWNrCisgICAgICAgc28gdGhhdCB0aGUgdGVzdCBjYW4gb3V0cHV0IHRoZSBwb3NpdGlvbiB3aGVyZSB0aGUgcmVjZWl2ZWQgZGF0YQorICAgICAgIGRpdmVyZ2VzIGZyb20gZXhwZWN0ZWRfZGF0YQorICAgICAqLworICB9CisKKyAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZmZlciwgJmluZm8sIEdTVF9NQVBfUkVBRCk7CisKKyAgR1NUX0RFQlVHCisgICAgICAoInNlZ21lbnRfc3RhcnQgPSAlIiBHX0dVSU5UNjRfRk9STUFUICIgc2VnbWVudF9yZWNlaXZlZF9zaXplID0gJSIKKyAgICAgIEdfR1VJTlQ2NF9GT1JNQVQgIiBidWZmZXJTaXplPSVkIiwKKyAgICAgIHN0cmVhbS0+c2VnbWVudF9zdGFydCwgc3RyZWFtLT5zZWdtZW50X3JlY2VpdmVkX3NpemUsIChnaW50KSBpbmZvLnNpemUpOworCisgIHBhdHRlcm4gPSBzdHJlYW1PZmZzZXQgLSBzdHJlYW1PZmZzZXQgJSBzaXplb2YgKHBhdHRlcm4pOworICBmb3IgKGd1aW50NjQgaSA9IDA7IGkgIT0gaW5mby5zaXplOyArK2kpIHsKKyAgICBndWludCByZWNlaXZlZCA9IGluZm8uZGF0YVtpXTsKKyAgICBndWludCBleHBlY3RlZDsKKworICAgIGlmICh0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfZGF0YSkgeworICAgICAgZmFpbF91bmxlc3MgKHN0cmVhbU9mZnNldCArIGkgPCB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfc2l6ZSk7CisgICAgICBleHBlY3RlZCA9IHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5leHBlY3RlZF9kYXRhW3N0cmVhbU9mZnNldCArIGldOworICAgIH0gZWxzZSB7CisgICAgICBnY2hhciBwYXR0ZXJuX2J5dGVfdG9fcmVhZDsKKworICAgICAgcGF0dGVybl9ieXRlX3RvX3JlYWQgPSAoc3RyZWFtT2Zmc2V0ICsgaSkgJSBzaXplb2YgKHBhdHRlcm4pOworICAgICAgaWYgKHBhdHRlcm5fYnl0ZV90b19yZWFkID09IDApIHsKKyAgICAgICAgcGF0dGVybiA9IHN0cmVhbU9mZnNldCArIGk7CisgICAgICB9CisKKyAgICAgIGV4cGVjdGVkID0gKHBhdHRlcm4gPj4gKHBhdHRlcm5fYnl0ZV90b19yZWFkICogOCkpICYgMHhGRjsKKyNpZiAwCisgICAgICBHU1RfREVCVUcKKyAgICAgICAgICAoInJlY2VpdmVkICcweCUwMngnIGV4cGVjdGVkICcweCUwMngnIG9mZnNldCAlIiBHX0dVSU5UNjRfRk9STUFUCisgICAgICAgICAgIiBwYXR0ZXJuPSUwOHggYnl0ZV90b19yZWFkPSVkIiwKKyAgICAgICAgICByZWNlaXZlZCwgZXhwZWN0ZWQsIGksIHBhdHRlcm4sIHBhdHRlcm5fYnl0ZV90b19yZWFkKTsKKyNlbmRpZgorICAgIH0KKworICAgIGZhaWxfdW5sZXNzIChyZWNlaXZlZCA9PSBleHBlY3RlZCwKKyAgICAgICAgIm91dHB1dCB2YWxpZGF0aW9uIGZhaWxlZDogcmVjZWl2ZWQgJzB4JTAyeCcgZXhwZWN0ZWQgJzB4JTAyeCcgYnl0ZSAlIgorICAgICAgICBHX0dVSU5UNjRfRk9STUFUICIgb2Zmc2V0PSUiIEdfR1VJTlQ2NF9GT1JNQVQgIlxuIiwgcmVjZWl2ZWQsIGV4cGVjdGVkLAorICAgICAgICBpLCBzdHJlYW1PZmZzZXQpOworICB9CisKKyAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmZmVyLCAmaW5mbyk7CisgIHJldHVybiBUUlVFOworfQorCisvKiBmdW5jdGlvbiB0byBjaGVjayB0b3RhbCBzaXplIG9mIGRhdGEgcmVjZWl2ZWQgYnkgQXBwU2luaworICogd2lsbCBiZSBjYWxsZWQgd2hlbiBBcHBTaW5rIHJlY2VpdmVzIGVvcy4KKyAqLwordm9pZAorZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZQorICAgICogZW5naW5lLCBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqIHN0cmVhbSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhID0gR1NUX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRSAodXNlcl9kYXRhKTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCAqdGVzdE91dHB1dFN0cmVhbURhdGE7CisKKyAgdGVzdE91dHB1dFN0cmVhbURhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfZmluZF90ZXN0X2RhdGFfYnlfc3RyZWFtICh0ZXN0RGF0YSwgc3RyZWFtLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHRlc3RPdXRwdXRTdHJlYW1EYXRhICE9IE5VTEwpOworCisgIGZhaWxfdW5sZXNzIChzdHJlYW0tPnRvdGFsX3JlY2VpdmVkX3NpemUgPT0KKyAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5leHBlY3RlZF9zaXplLAorICAgICAgInNpemUgdmFsaWRhdGlvbiBmYWlsZWQsIGV4cGVjdGVkICVkIHJlY2VpdmVkICVkIiwKKyAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5leHBlY3RlZF9zaXplLCBzdHJlYW0tPnRvdGFsX3JlY2VpdmVkX3NpemUpOworICB0ZXN0RGF0YS0+Y291bnRfb2ZfZmluaXNoZWRfc3RyZWFtcysrOworICBpZiAodGVzdERhdGEtPmNvdW50X29mX2ZpbmlzaGVkX3N0cmVhbXMgPT0KKyAgICAgIGdfbGlzdF9sZW5ndGggKHRlc3REYXRhLT5vdXRwdXRfc3RyZWFtcykpIHsKKyAgICBnX21haW5fbG9vcF9xdWl0IChlbmdpbmUtPmxvb3ApOworICB9Cit9CisKK3R5cGVkZWYgc3RydWN0IF9TZWVrVGFza0NvbnRleHQKK3sKKyAgR3N0RWxlbWVudCAqcGlwZWxpbmU7CisgIEdzdFRhc2sgKnRhc2s7CisgIEdzdEV2ZW50ICpzZWVrX2V2ZW50OworfSBTZWVrVGFza0NvbnRleHQ7CisKKy8qIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgc2VlayBldmVudC4gV2lsbCBiZSBydW4gaW4gYSBzZXBhcmF0ZSB0aHJlYWQgKi8KK3N0YXRpYyB2b2lkCit0ZXN0U2Vla1Rhc2tEb1NlZWsgKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgU2Vla1Rhc2tDb250ZXh0ICpjb250ZXh0ID0gKFNlZWtUYXNrQ29udGV4dCAqKSB1c2VyX2RhdGE7CisgIEdzdFRhc2sgKnRhc2s7CisKKyAgR1NUX0RFQlVHICgidGVzdFNlZWtUYXNrRG9TZWVrIGNhbGxpbmcgc2VlayIpOworCisgIGZhaWxfdW5sZXNzIChHU1RfSVNfRVZFTlQgKGNvbnRleHQtPnNlZWtfZXZlbnQpKTsKKyAgZmFpbF91bmxlc3MgKEdTVF9FVkVOVF9UWVBFIChjb250ZXh0LT5zZWVrX2V2ZW50KSA9PSBHU1RfRVZFTlRfU0VFSyk7CisKKyAgaWYgKCFnc3RfZWxlbWVudF9zZW5kX2V2ZW50IChHU1RfRUxFTUVOVCAoY29udGV4dC0+cGlwZWxpbmUpLAorICAgICAgICAgIGNvbnRleHQtPnNlZWtfZXZlbnQpKQorICAgIGZhaWwgKCJTZWVrIGZhaWxlZCFcbiIpOworICBHU1RfREVCVUcgKCJzZWVrIG9rIik7CisgIHRhc2sgPSBjb250ZXh0LT50YXNrOworICBnX3NsaWNlX2ZyZWUgKFNlZWtUYXNrQ29udGV4dCwgY29udGV4dCk7CisgIGdzdF90YXNrX3N0b3AgKHRhc2spOworfQorCisvKiBmdW5jdGlvbiB0byBiZSBjYWxsZWQgZHVyaW5nIHNlZWsgdGVzdCB3aGVuIGRlbXV4IHNlbmRzIGRhdGEgdG8gQXBwU2luaworICogSXQgbW9uaXRvcnMgdGhlIGRhdGEgc2VudCBhbmQgYWZ0ZXIgYSB3aGlsZSB3aWxsIGdlbmVyYXRlIGEgc2VlayByZXF1ZXN0LgorICovCitzdGF0aWMgZ2Jvb2xlYW4KK3Rlc3RTZWVrQWRhcHRpdmVEZW11eFNlbmRzRGF0YSAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKiBlbmdpbmUsCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sCisgICAgR3N0QnVmZmVyICogYnVmZmVyLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGEgPSBHU1RfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFICh1c2VyX2RhdGEpOworICBTZWVrVGFza0NvbnRleHQgKnNlZWtDb250ZXh0OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0ICp0ZXN0T3V0cHV0U3RyZWFtRGF0YTsKKyAgZ3VpbnQgaW5kZXggPSAwOworCisgIHRlc3RPdXRwdXRTdHJlYW1EYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2ZpbmRfdGVzdF9kYXRhX2J5X3N0cmVhbSAodGVzdERhdGEsIHN0cmVhbSwKKyAgICAgICZpbmRleCk7CisgIGZhaWxfdW5sZXNzICh0ZXN0T3V0cHV0U3RyZWFtRGF0YSAhPSBOVUxMKTsKKyAgLyogZmlyc3QgZW50cnkgaW4gdGVzdERhdGEtPm91dHB1dF9zdHJlYW1zIGlzIHRoZQorICAgICBQQUQgb24gd2hpY2ggdG8gcGVyZm9ybSB0aGUgc2VlayAqLworICBpZiAoaW5kZXggPT0gMCAmJgorICAgICAgdGVzdERhdGEtPnRlc3RfdGFzayA9PSBOVUxMICYmCisgICAgICAoc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplICsgc3RyZWFtLT5zZWdtZW50X3JlY2VpdmVkX3NpemUpID49CisgICAgICB0ZXN0RGF0YS0+dGhyZXNob2xkX2Zvcl9zZWVrKSB7CisgICAgR3N0U2Vla0ZsYWdzIHNlZWtfZmxhZ3M7CisKKyAgICB0ZXN0RGF0YS0+dGhyZXNob2xkX2Zvcl9zZWVrID0KKyAgICAgICAgc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplICsgc3RyZWFtLT5zZWdtZW50X3JlY2VpdmVkX3NpemU7CisKKyAgICBnc3RfZXZlbnRfcGFyc2Vfc2VlayAodGVzdERhdGEtPnNlZWtfZXZlbnQsIE5VTEwsIE5VTEwsICZzZWVrX2ZsYWdzLCBOVUxMLAorICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAoc2Vla19mbGFncyAmIEdTVF9TRUVLX0ZMQUdfRkxVU0gpCisgICAgICB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfc2l6ZSArPSB0ZXN0RGF0YS0+dGhyZXNob2xkX2Zvcl9zZWVrOworCisgICAgR1NUX0RFQlVHICgic3RhcnRpbmcgc2VlayB0YXNrIik7CisKKyAgICBnX211dGV4X2xvY2sgKCZ0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlX2xvY2spOworICAgIHRlc3REYXRhLT50ZXN0X3Rhc2tfc3RhdGUgPQorICAgICAgICBURVNUX1RBU0tfU1RBVEVfV0FJVElOR19GT1JfVEVTVFNSQ19TVEFURV9DSEFOR0U7CisgICAgZ19tdXRleF91bmxvY2sgKCZ0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlX2xvY2spOworCisgICAgc2Vla0NvbnRleHQgPSBnX3NsaWNlX25ldyAoU2Vla1Rhc2tDb250ZXh0KTsKKyAgICBzZWVrQ29udGV4dC0+cGlwZWxpbmUgPSBlbmdpbmUtPnBpcGVsaW5lOworICAgIHNlZWtDb250ZXh0LT5zZWVrX2V2ZW50ID0gZ3N0X2V2ZW50X3JlZiAodGVzdERhdGEtPnNlZWtfZXZlbnQpOworICAgIHRlc3REYXRhLT50ZXN0X3Rhc2sgPSBzZWVrQ29udGV4dC0+dGFzayA9CisgICAgICAgIGdzdF90YXNrX25ldyAoKEdzdFRhc2tGdW5jdGlvbikgdGVzdFNlZWtUYXNrRG9TZWVrLCBzZWVrQ29udGV4dCwgTlVMTCk7CisgICAgZ3N0X3Rhc2tfc2V0X2xvY2sgKHRlc3REYXRhLT50ZXN0X3Rhc2ssICZ0ZXN0RGF0YS0+dGVzdF90YXNrX2xvY2spOworICAgIGdzdF90YXNrX3N0YXJ0ICh0ZXN0RGF0YS0+dGVzdF90YXNrKTsKKworICAgIEdTVF9ERUJVRyAoInNlZWsgdGFzayBzdGFydGVkIik7CisKKyAgICBpZiAoc2Vla19mbGFncyAmIEdTVF9TRUVLX0ZMQUdfRkxVU0gpIHsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnRlc3REYXRhLT50ZXN0X3Rhc2tfc3RhdGVfbG9jayk7CisKKyAgICAgIEdTVF9ERUJVRyAoIndhaXRpbmcgZm9yIHNlZWsgdGFzayB0byBjaGFuZ2Ugc3RhdGUgb24gdGVzdHNyYyIpOworCisgICAgICAvKiB3YWl0IGZvciB0ZXN0X3Rhc2sgdG8gcnVuLCBzZW5kIGEgZmx1c2ggc3RhcnQgZXZlbnQgdG8gQXBwU2luaworICAgICAgICogYW5kIGNoYW5nZSB0aGUgdGVzdGh0dHBzcmMgZWxlbWVudCBzdGF0ZSBmcm9tIFBMQVlJTkcgdG8gUEFVU0VECisgICAgICAgKi8KKyAgICAgIHdoaWxlICh0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlID09CisgICAgICAgICAgVEVTVF9UQVNLX1NUQVRFX1dBSVRJTkdfRk9SX1RFU1RTUkNfU1RBVEVfQ0hBTkdFKSB7CisgICAgICAgIGdfY29uZF93YWl0ICgmdGVzdERhdGEtPnRlc3RfdGFza19zdGF0ZV9jb25kLAorICAgICAgICAgICAgJnRlc3REYXRhLT50ZXN0X3Rhc2tfc3RhdGVfbG9jayk7CisgICAgICB9CisgICAgICBnX211dGV4X3VubG9jayAoJnRlc3REYXRhLT50ZXN0X3Rhc2tfc3RhdGVfbG9jayk7CisgICAgICAvKiB3ZSBjYW4gY29udGludWUgbm93LCBidXQgdGhpcyBidWZmZXIgd2lsbCBiZSByZWplY3RlZCBieSBBcHBTaW5rCisgICAgICAgKiBiZWNhdXNlIGl0IGlzIGluIGZsdXNoaW5nIG1vZGUKKyAgICAgICAqLworICAgICAgR1NUX0RFQlVHICgic2VlayB0YXNrIGNoYW5nZWQgc3RhdGUgb24gdGVzdHNyYywgcmVzdW1pbmciKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RTZWVrQWRhcHRpdmVBcHBTaW5rRXZlbnQgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICogZW5naW5lLAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLAorICAgIEdzdEV2ZW50ICogZXZlbnQsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YSA9IEdTVF9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UgKHVzZXJfZGF0YSk7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgKnRlc3RPdXRwdXRTdHJlYW1EYXRhOworICBndWludCBpbmRleCA9IDA7CisKKyAgdGVzdE91dHB1dFN0cmVhbURhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfZmluZF90ZXN0X2RhdGFfYnlfc3RyZWFtICh0ZXN0RGF0YSwgc3RyZWFtLAorICAgICAgJmluZGV4KTsKKyAgZmFpbF91bmxlc3MgKHRlc3RPdXRwdXRTdHJlYW1EYXRhICE9IE5VTEwpOworCisgIGlmICh0ZXN0RGF0YS0+c2Vla19ldmVudCAmJiBHU1RfRVZFTlRfVFlQRSAoZXZlbnQpID09IEdTVF9FVkVOVF9TRUdNRU5UCisgICAgICAmJiB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+cG9zdF9zZWVrX3NlZ21lbnQuZm9ybWF0ICE9IEdTVF9GT1JNQVRfVU5ERUZJTkVECisgICAgICAmJiBnc3RfZXZlbnRfZ2V0X3NlcW51bSAoZXZlbnQpID09CisgICAgICBnc3RfZXZlbnRfZ2V0X3NlcW51bSAodGVzdERhdGEtPnNlZWtfZXZlbnQpKSB7CisgICAgY29uc3QgR3N0U2VnbWVudCAqc2Vla19zZWdtZW50OworCisKKyAgICBnc3RfZXZlbnRfcGFyc2Vfc2VnbWVudCAoZXZlbnQsICZzZWVrX3NlZ21lbnQpOworICAgIGZhaWxfdW5sZXNzIChzZWVrX3NlZ21lbnQtPmZvcm1hdCA9PQorICAgICAgICB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+cG9zdF9zZWVrX3NlZ21lbnQuZm9ybWF0KTsKKyAgICBmYWlsX3VubGVzcyAoc2Vla19zZWdtZW50LT5yYXRlID09CisgICAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5wb3N0X3NlZWtfc2VnbWVudC5yYXRlKTsKKyAgICBmYWlsX3VubGVzcyAoc2Vla19zZWdtZW50LT5zdGFydCA9PQorICAgICAgICB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+cG9zdF9zZWVrX3NlZ21lbnQuc3RhcnQpOworICAgIGZhaWxfdW5sZXNzIChzZWVrX3NlZ21lbnQtPnN0b3AgPT0KKyAgICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPnBvc3Rfc2Vla19zZWdtZW50LnN0b3ApOworICAgIGZhaWxfdW5sZXNzIChzZWVrX3NlZ21lbnQtPmJhc2UgPT0KKyAgICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPnBvc3Rfc2Vla19zZWdtZW50LmJhc2UpOworICAgIGZhaWxfdW5sZXNzIChzZWVrX3NlZ21lbnQtPnRpbWUgPT0KKyAgICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPnBvc3Rfc2Vla19zZWdtZW50LnRpbWUpOworCisgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPnNlZ21lbnRfdmVyaWZpY2F0aW9uX25lZWRlZCA9IEZBTFNFOworICB9Cit9CisKKy8qIGNhbGxiYWNrIGNhbGxlZCB3aGVuIG1haW5fbG9vcCBkZXRlY3RzIGEgc3RhdGUgY2hhbmdlZCBldmVudCAqLworc3RhdGljIHZvaWQKK3Rlc3RTZWVrT25TdGF0ZUNoYW5nZWQgKEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhID0gR1NUX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRSAodXNlcl9kYXRhKTsKKyAgR3N0U3RhdGUgb2xkX3N0YXRlLCBuZXdfc3RhdGU7CisgIGNvbnN0IGNoYXIgKnNyY05hbWUgPSBHU1RfT0JKRUNUX05BTUUgKG1zZy0+c3JjKTsKKworICBnc3RfbWVzc2FnZV9wYXJzZV9zdGF0ZV9jaGFuZ2VkIChtc2csICZvbGRfc3RhdGUsICZuZXdfc3RhdGUsIE5VTEwpOworICBHU1RfREVCVUcgKCJFbGVtZW50ICVzIGNoYW5nZWQgc3RhdGUgZnJvbSAlcyB0byAlcyIsCisgICAgICBHU1RfT0JKRUNUX05BTUUgKG1zZy0+c3JjKSwKKyAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lIChvbGRfc3RhdGUpLAorICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUgKG5ld19zdGF0ZSkpOworCisgIGlmIChzdHJzdHIgKHNyY05hbWUsICJzcmNiaW4iKSA9PSBzcmNOYW1lICYmCisgICAgICBvbGRfc3RhdGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcgJiYgbmV3X3N0YXRlID09IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICBnX211dGV4X2xvY2sgKCZ0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlX2xvY2spOworICAgIGlmICh0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlID09CisgICAgICAgIFRFU1RfVEFTS19TVEFURV9XQUlUSU5HX0ZPUl9URVNUU1JDX1NUQVRFX0NIQU5HRSkgeworICAgICAgR1NUX0RFQlVHICgiY2hhbmdpbmcgdGVzdF90YXNrX3N0YXRlIik7CisgICAgICB0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlID0gVEVTVF9UQVNLX1NUQVRFX0VYSVRJTkc7CisgICAgICBnX2NvbmRfc2lnbmFsICgmdGVzdERhdGEtPnRlc3RfdGFza19zdGF0ZV9jb25kKTsKKyAgICB9CisgICAgZ19tdXRleF91bmxvY2sgKCZ0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlX2xvY2spOworICB9Cit9CisKKy8qCisgKiBJc3N1ZSBhIHNlZWsgcmVxdWVzdCBhZnRlciBtZWRpYSBzZWdtZW50IGhhcyBzdGFydGVkIHRvIGJlIGRvd25sb2FkZWQKKyAqIG9uIHRoZSBmaXJzdCBwYWQgbGlzdGVkIGluIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtRGF0YSBhbmQgdGhlCisgKiBmaXJzdCBjaHVuayBvZiBhdCBsZWFzdCBvbmUgYnl0ZSBoYXMgYWxyZWFkeSBhcnJpdmVkIGluIEFwcFNpbmsKKyAqLworc3RhdGljIHZvaWQKK3Rlc3RTZWVrUHJlVGVzdENhbGxiYWNrIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqIGVuZ2luZSwKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGEgPSBHU1RfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFICh1c2VyX2RhdGEpOworICBHc3RCdXMgKmJ1czsKKworICAvKiByZWdpc3RlciBhIGNhbGxiYWNrIHRvIGxpc3RlbiBmb3Igc3RhdGUgY2hhbmdlIGV2ZW50cyAqLworICBidXMgPSBnc3RfcGlwZWxpbmVfZ2V0X2J1cyAoR1NUX1BJUEVMSU5FIChlbmdpbmUtPnBpcGVsaW5lKSk7CisgIGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaCAoYnVzKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoYnVzLCAibWVzc2FnZTo6c3RhdGUtY2hhbmdlZCIsCisgICAgICBHX0NBTExCQUNLICh0ZXN0U2Vla09uU3RhdGVDaGFuZ2VkKSwgdGVzdERhdGEpOworfQorCitzdGF0aWMgdm9pZAordGVzdFNlZWtQb3N0VGVzdENhbGxiYWNrIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqIGVuZ2luZSwKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGEgPSBHU1RfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFICh1c2VyX2RhdGEpOworICBmb3IgKEdMaXN0ICogd2FsayA9IHRlc3REYXRhLT5vdXRwdXRfc3RyZWFtczsgd2Fsazsgd2FsayA9IGdfbGlzdF9uZXh0ICh3YWxrKSkgeworICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgKnRkID0gd2Fsay0+ZGF0YTsKKworICAgIGZhaWxfaWYgKHRkLT5zZWdtZW50X3ZlcmlmaWNhdGlvbl9uZWVkZWQpOworICB9Cit9CisKKy8qIGZ1bmN0aW9uIHRvIGNoZWNrIHRvdGFsIHNpemUgb2YgZGF0YSByZWNlaXZlZCBieSBBcHBTaW5rCisgKiB3aWxsIGJlIGNhbGxlZCB3aGVuIEFwcFNpbmsgcmVjZWl2ZXMgZW9zLgorICovCit2b2lkIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Rvd25sb2FkX2Vycm9yX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YQorICAgIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqIGVuZ2luZSwKKyAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqIHN0cmVhbSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhID0gR1NUX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRSAodXNlcl9kYXRhKTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCAqdGVzdE91dHB1dFN0cmVhbURhdGE7CisKKyAgdGVzdE91dHB1dFN0cmVhbURhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfZmluZF90ZXN0X2RhdGFfYnlfc3RyZWFtICh0ZXN0RGF0YSwgc3RyZWFtLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHRlc3RPdXRwdXRTdHJlYW1EYXRhICE9IE5VTEwpOworICAvKiBleHBlY3QgdG8gcmVjZWl2ZSBtb3JlIHRoYW4gMCAqLworICBmYWlsX3VubGVzcyAoc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplID4gMCwKKyAgICAgICJzaXplIHZhbGlkYXRpb24gZmFpbGVkIGZvciAlcywgZXhwZWN0ZWQgPiAwLCByZWNlaXZlZCAlZCIsCisgICAgICB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+bmFtZSwgc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplKTsKKworICAvKiBleHBlY3QgdG8gcmVjZWl2ZSBsZXNzIHRoYW4gZmlsZSBzaXplICovCisgIGZhaWxfdW5sZXNzIChzdHJlYW0tPnRvdGFsX3JlY2VpdmVkX3NpemUgPAorICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPmV4cGVjdGVkX3NpemUsCisgICAgICAic2l6ZSB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgJXMsIGV4cGVjdGVkIDwgJWQgcmVjZWl2ZWQgJWQiLAorICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPm5hbWUsIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5leHBlY3RlZF9zaXplLAorICAgICAgc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplKTsKKyAgaWYgKHRlc3REYXRhLT5jb3VudF9vZl9maW5pc2hlZF9zdHJlYW1zID09CisgICAgICBnX2xpc3RfbGVuZ3RoICh0ZXN0RGF0YS0+b3V0cHV0X3N0cmVhbXMpKSB7CisgICAgZ19tYWluX2xvb3BfcXVpdCAoZW5naW5lLT5sb29wKTsKKyAgfQorfQorCit2b2lkCitnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9zZWVrIChjb25zdCBnY2hhciAqIGVsZW1lbnRfbmFtZSwKKyAgICBjb25zdCBnY2hhciAqIG1hbmlmZXN0X3VyaSwgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICogdGVzdERhdGEpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzIGNiID0geyAwIH07CisgIGNiLmFwcHNpbmtfcmVjZWl2ZWRfZGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGE7CisgIGNiLmFwcHNpbmtfZW9zID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhOworICBjYi5hcHBzaW5rX2V2ZW50ID0gdGVzdFNlZWtBZGFwdGl2ZUFwcFNpbmtFdmVudDsKKyAgY2IucHJlX3Rlc3QgPSB0ZXN0U2Vla1ByZVRlc3RDYWxsYmFjazsKKyAgY2IucG9zdF90ZXN0ID0gdGVzdFNlZWtQb3N0VGVzdENhbGxiYWNrOworICBjYi5kZW11eF9zZW50X2RhdGEgPSB0ZXN0U2Vla0FkYXB0aXZlRGVtdXhTZW5kc0RhdGE7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoZWxlbWVudF9uYW1lLCBtYW5pZmVzdF91cmksICZjYiwgdGVzdERhdGEpOworICAvKiB0aGUgY2FsbCB0byBnX29iamVjdF91bnJlZiBvZiB0ZXN0RGF0YSB3aWxsIGNsZWFuIHVwIHRoZSBzZWVrIHRhc2sgKi8KK30KKwordm9pZAorZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3Rfc2V0dXAgKHZvaWQpCit7CisgIEdzdFJlZ2lzdHJ5ICpyZWdpc3RyeTsKKyAgZ2Jvb2xlYW4gcmV0OworCisgIHJlZ2lzdHJ5ID0gZ3N0X3JlZ2lzdHJ5X2dldCAoKTsKKyAgcmV0ID0gZ3N0X3Rlc3RfaHR0cF9zcmNfcmVnaXN0ZXJfcGx1Z2luIChyZWdpc3RyeSwgR1NUX1RFU1RfSFRUUF9TUkNfTkFNRSk7CisgIGZhaWxfdW5sZXNzIChyZXQpOworfQorCit2b2lkCitnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF90ZWFyZG93biAodm9pZCkKK3sKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKE5VTEwsIE5VTEwpOworICBnc3RfdGVzdF9odHRwX3NyY19zZXRfZGVmYXVsdF9ibG9ja3NpemUgKDApOworfQpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmggYi90ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYThiZGUwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmgKQEAgLTAsMCArMSwyMTIgQEAKKy8qIEEgc2V0IG9mIHV0aWxpdHkgZnVuY3Rpb25zIHRoYXQgYXJlIGNvbW1vbiBiZXR3ZWVuIGVsZW1lbnRzCisgKiBiYXNlZCB1cG9uIEdzdEFkYXB0aXZlRGVtdXgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDwyMDE1PiBZb3VWaWV3IFRWIEx0ZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfQURBUFRJVkVfREVNVVhfQ09NTU9OX1RFU1RfSF9fCisjZGVmaW5lIF9fR1NUX0FEQVBUSVZFX0RFTVVYX0NPTU1PTl9URVNUX0hfXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgImFkYXB0aXZlX2RlbXV4X2VuZ2luZS5oIgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFIFwKKyAgKGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRShvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBHU1RfVFlQRV9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UsIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSkpCisjZGVmaW5lIEdTVF9BREFQVElWRV9ERU1VWF9URVNUX0NBU0VfQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIEdTVF9UWVBFX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRSwgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlQ2xhc3MpKQorI2RlZmluZSBHU1RfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFX0dFVF9DTEFTUyhvYmopIFwKKyAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UsIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZUNsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRShvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBHU1RfVFlQRV9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UpKQorI2RlZmluZSBHU1RfSVNfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCBHU1RfVFlQRV9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UpKQorCisvKioKKyAqIFRlc3RUYXNrU3RhdGU6CisgKiBUaGUgc2VlayB0ZXN0IHVzZXMgYSBzZXBhcmF0ZSB0YXNrIHRvIHBlcmZvcm0gdGhlIHNlZWsgb3BlcmF0aW9uLgorICogQWZ0ZXIgc3RhcnRpbmcgdGhlIHRhc2ssIHRoZSBjYWxsZXIgYmxvY2tzIHVudGlsIHRoZSBzZWVrIHRhc2sKKyAqIGZsdXNoZXMgdGhlIEFwcFNpbmsgYW5kIGNoYW5nZXMgdGhlIEdzdEZha2VTb3VwSFRUUFNyYyBlbGVtZW50IHN0YXRlIGZyb20KKyAqIFBMQVlJTkcgdG8gUEFVU0VELgorICogV2hlbiB0aGF0IGV2ZW50IGlzIGRldGVjdGVkLCB0aGUgY2FsbGVyIGlzIGFsbG93ZWQgdG8gcmVzdW1lLgorICogQW55IGRhdGEgdGhhdCB3aWxsIGJlIHNlbnQgdG8gQXBwU2luayBhZnRlciByZXN1bWUgd2lsbCBiZSByZWplY3RlZCBiZWNhdXNlCisgKiBBcHBTaW5rIGlzIGluIGZsdXNoaW5nIG1vZGUuCisgKi8KK3R5cGVkZWYgZW51bQoreworICBURVNUX1RBU0tfU1RBVEVfTk9UX1NUQVJURUQsCisgIFRFU1RfVEFTS19TVEFURV9XQUlUSU5HX0ZPUl9URVNUU1JDX1NUQVRFX0NIQU5HRSwKKyAgVEVTVF9UQVNLX1NUQVRFX0VYSVRJTkcsCit9IFRlc3RUYXNrU3RhdGU7CisKKy8qKgorICogR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dDoKKyAqIFN0cnVjdHVyZSB1c2VkIHRvIHN0b3JlIG91dHB1dCBzdHJlYW0gcmVsYXRlZCBkYXRhLgorICogSXQgaXMgdXNlZCBieSB0aGUgdGVzdCBkdXJpbmcgb3V0cHV0IHZhbGlkYXRpb24uCisgKiBUaGUgZmllbGRzIGFyZSBzZXQgYnkgdGhlIHRlc3RjYXNlIGZ1bmN0aW9uIHByaW9yCisgKiB0byBzdGFydGluZyB0aGUgdGVzdC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQKK3sKKyAgLyogdGhlIG5hbWUgb2YgdGhlIGRlbXV4IHNyYyBwYWQgZ2VuZXJhdGluZyB0aGlzIHN0cmVhbSAqLworICBjb25zdCBjaGFyICpuYW1lOworICAvKiB0aGUgZXhwZWN0ZWQgc2l6ZSBvbiB0aGlzIHN0cmVhbSAqLworICBndWludDY0IGV4cGVjdGVkX3NpemU7CisgIC8qIHRoZSBleHBlY3RlZCBkYXRhIG9uIHRoaXMgc3RyZWFtIChvcHRpb25hbCkgKi8KKyAgY29uc3QgZ3VpbnQ4KiBleHBlY3RlZF9kYXRhOworCisgIEdzdFNlZ21lbnQgcG9zdF9zZWVrX3NlZ21lbnQ7CisgIGdib29sZWFuIHNlZ21lbnRfdmVyaWZpY2F0aW9uX25lZWRlZDsKK30gR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dDsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZUNsYXNzIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZQoreworICBHT2JqZWN0IHBhcmVudDsKKworICAvKiBvdXRwdXQgZGF0YSB1c2VkIHRvIHZhbGlkYXRlIHRoZSB0ZXN0CisgICAqIGxpc3Qgb2YgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCwgb25lIGVudHJ5IHBlciBzdHJlYW0KKyAgICovCisgIEdMaXN0ICpvdXRwdXRfc3RyZWFtczsgLypHTGlzdDxHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0PiovCisKKyAgLyogdGhlIG51bWJlciBvZiBzdHJlYW1zIHRoYXQgZmluaXNoZWQuCisgICAqIE1haW4gdGhyZWFkIHdpbGwgc3RvcCB0aGUgcGlwZWxpbmUgd2hlbiBhbGwgc3RyZWFtcyBhcmUgZmluaXNoZWQKKyAgICogKGkuZS4gY291bnRfb2ZfZmluaXNoZWRfc3RyZWFtcyA9PSBnX2xpc3RfbGVuZ3RoKG91dHB1dF9zdHJlYW1zKSApCisgICAqLworICBndWludCBjb3VudF9vZl9maW5pc2hlZF9zdHJlYW1zOworCisgIC8qIHRhc2tUZXNrLi4uIGlzIGEgc2V0IG9mIHZhcmlhYmxlcyB0aGF0IGNhbiBiZSB1c2VkIGJ5IGEgdGVzdAorICAgKiB0aGF0IG5lZWRzIHRvIHBlcmZvcm0gb3BlcmF0aW9ucyBmcm9tIGFub3RoZXIgdGhyZWFkCisgICAqIEZvciBleGFtcGxlLCBpdCBpcyB1c2VkIGJ5IHRoZSBzZWVrIHRlc3QgdG8gcGVyZm9ybSB0aGUgc2VlaworICAgKiBvcGVyYXRpb24KKyAgICovCisgIEdzdFRhc2sgKnRlc3RfdGFzazsKKyAgR1JlY011dGV4IHRlc3RfdGFza19sb2NrOworICBUZXN0VGFza1N0YXRlIHRlc3RfdGFza19zdGF0ZTsKKyAgR011dGV4IHRlc3RfdGFza19zdGF0ZV9sb2NrOworICBHQ29uZCB0ZXN0X3Rhc2tfc3RhdGVfY29uZDsKKworICAvKiBzZWVrIHRlc3Qgd2lsbCB3YWl0IGZvciB0aGlzIGFtb3VudCBvZiBieXRlcyB0byBiZSBzZW50IGJ5IAorICAgKiBkZW11eCB0byBBcHBTaW5rIGJlZm9yZSB0cmlnZ2VyaW5nIGEgc2VlayByZXF1ZXN0CisgICAqLworICBndWludDY0IHRocmVzaG9sZF9mb3Jfc2VlazsKKyAgR3N0RXZlbnQgKnNlZWtfZXZlbnQ7CisKKyAgZ3BvaW50ZXIgc2lnbmFsX2NvbnRleHQ7Cit9IEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZTsKKworLyogaGlnaC1sZXZlbCB1bml0IHRlc3QgZnVuY3Rpb25zICovCisKKy8qKgorICogZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3Rfc2V0dXA6CisgKiBDYXVzZXMgdGhlIHRlc3QgSFRUUCBzcmMgZWxlbWVudCB0byBiZSByZWdpc3RlcmVkCisgKi8KK3ZvaWQgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3Rfc2V0dXAgKHZvaWQpOworCit2b2lkIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3RlYXJkb3duICh2b2lkKTsKKworR1R5cGUgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9nZXRfdHlwZSAodm9pZCk7CisKKy8qKgorICogZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXc6IGNyZWF0ZXMgbmV3ICNHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UKKyAqIG9iamVjdC4gVXNlICNnX29iamVjdF91bnJlZiB0byBmcmVlLgorICovCitHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKiBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAodm9pZCkgR19HTlVDX01BTExPQzsKKworLyoqCisgKiBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9zZWVrOiB0ZXN0IHRoYXQgZWxlbWVudCBzdXBwb3J0cyBzZWVraW5nCisgKiBAZWxlbWVudF9uYW1lOiBUaGUgbmFtZSBvZiB0aGUgZGVtdXggZWxlbWVudCAoZS5nLiAiZGFzaGRlbXV4IikKKyAqIEBtYW5pZmVzdF91cmk6IFRoZSBVUkkgb2YgdGhlIG1hbmlmZXN0IHRvIGxvYWQKKyAqIEB0ZXN0RGF0YTogVGhlICNHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgdGhhdCB0aGUgdGVzdCBleHBlY3RzIHRoZQorICogZGVtdXggZWxlbWVudCB0byBwcm9kdWNlLgorICogCisgKiBDcmVhdGVzIGEgcGlwZWxpbmUgYW5kIHN0YXJ0cyBpdC4gT25jZSBkYXRhIGlzIGZsb3dpbmcsIHJlcXVlc3QgYQorICogc2VlayB0byBhbG1vc3QgdGhlIHN0YXJ0IG9mIHRoZSBzdHJlYW0uCisgKi8KK3ZvaWQgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3Rfc2VlayAoY29uc3QgZ2NoYXIgKiBlbGVtZW50X25hbWUsCisgICAgY29uc3QgZ2NoYXIgKiBtYW5pZmVzdF91cmksCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YSk7CisKKy8qIFV0aWxpdHkgZnVuY3Rpb25zIGZvciB1c2Ugd2l0aGluIGEgdW5pdCB0ZXN0ICovCisKKy8qKgorICogZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhOgorICogQGVuZ2luZTogVGhlICNHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSB0aGF0IGNhdXNlZCB0aGlzIGNhbGxiYWNrCisgKiBAc3RyZWFtOiBUaGUgI0dzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtIHRoYXQgY2F1c2VkIHRoaXMgY2FsbGJhY2sKKyAqIEB1c2VyX2RhdGE6IEEgcG9pbnRlciB0byBhICNHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2Ugb2JqZWN0CisgKgorICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBhcyBhbiBFT1MgY2FsbGJhY2sgdG8gY2hlY2sgdGhhdCB0aGUKKyAqIHNpemUgb2YgcmVjZWl2ZWQgZGF0YSBlcXVhbHMgZXhwZWN0ZWRfc2l6ZS4gSXQgc2hvdWxkIGJlIHVzZWQgd2l0aAorICogYSB0ZXN0IHRoYXQgZXhwZWN0cyB0aGUgZW50aXJlIGZpbGUgdG8gYmUgZG93bmxvYWRlZC4KKyAqLwordm9pZCBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19zaXplX29mX3JlY2VpdmVkX2RhdGEoCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKmVuZ2luZSwKKyAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqIHN0cmVhbSwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworLyoqCisgKiBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9kb3dubG9hZF9lcnJvcl9zaXplX29mX3JlY2VpdmVkX2RhdGE6CisgKiBAZW5naW5lOiBUaGUgI0dzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lIHRoYXQgY2F1c2VkIHRoaXMgY2FsbGJhY2sKKyAqIEBzdHJlYW06IFRoZSAjR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gdGhhdCBjYXVzZWQgdGhpcyBjYWxsYmFjaworICogQHVzZXJfZGF0YTogQSBwb2ludGVyIHRvIGEgI0dzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSBvYmplY3QKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGFzIGFuIEVPUyBjYWxsYmFjayB0byBjaGVjayB0aGF0IHRoZQorICogc2l6ZSBvZiByZWNlaXZlZCBkYXRhIGlzID4wICYmIDxleHBlY3RlZF9zaXplLiBJdCBzaG91bGQgYmUgdXNlZCB3aXRoCisgKiBhIHRlc3QgdGhhdCBkb2VzIG5vdCBleHBlY3QgdGhlIGVudGlyZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQuCisgKi8KK3ZvaWQgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfZG93bmxvYWRfZXJyb3Jfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhICgKKyAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqZW5naW5lLAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLCBncG9pbnRlciB1c2VyX2RhdGEpOworCisvKioKKyAqIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGE6CisgKiBAZW5naW5lOiBUaGUgI0dzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lIHRoYXQgY2F1c2VkIHRoaXMgY2FsbGJhY2sKKyAqIEBzdHJlYW06IFRoZSAjR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gdGhhdCBjYXVzZWQgdGhpcyBjYWxsYmFjaworICogQGJ1ZmZlcjogVGhlICNHc3RCdWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0byBjaGVjaworICogQHVzZXJfZGF0YTogQSBwb2ludGVyIHRvIGEgI0dzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSBvYmplY3QKKyAqIFJldHVybnM6IFRSVUUgaWYgYnVmZmVyIGNvbnRhaW5zIHRoZSBleHBlY3RlZCBkYXRhLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgYXMgYW4gYXBwU2lua0dvdERhdGEgY2FsbGJhY2ssIHRvIGNoZWNrCisgKiB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgcmVjZWl2ZWQgZGF0YSBtYXRjaGVzIHRoZSBleHBlY3RlZCBkYXRhCisgKi8KK2dib29sZWFuIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGEgKAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICplbmdpbmUsCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sCisgICAgR3N0QnVmZmVyICogYnVmZmVyLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKy8qKgorICogZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfZmluZF90ZXN0X2RhdGFfYnlfc3RyZWFtOgorICogQHRlc3REYXRhOiBUaGUgI0dzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSBvYmplY3QgdGhhdCBjb250YWlucyB0aGUKKyAqIG91dHB1dF9zdHJlYW1zIGxpc3QgdG8gc2VhcmNoCisgKiBAc3RyZWFtOiB0aGUgI0dzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtIHRvIHNlYXJjaCBmb3IKKyAqIEBpbmRleDogKG91dCkgKGFsbG93IG5vbmUpIHRoZSBpbmRleCBvZiB0aGUgZW50cnkgaW4gb3V0cHV0X3N0cmVhbXMKKyAqIFJldHVybnM6IFRoZSAjR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCB0aGF0IG1hdGNoZXMgQHN0cmVhbSwgb3IKKyAqICVOVUxMIGlmIG5vdCBmb3VuZAorICoKKyAqIFNlYXJjaCB0aGUgbGlzdCBvZiBvdXRwdXQgdGVzdCBkYXRhIGZvciB0aGUgZW50cnkgdGhhdCBtYXRjaGVzIHN0cmVhbS4KKyAqLworR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCAqIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2ZpbmRfdGVzdF9kYXRhX2J5X3N0cmVhbSAoCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICogdGVzdERhdGEsCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sCisgICAgZ3VpbnQgKiBpbmRleCk7CisKK0dfRU5EX0RFQ0xTCisjZW5kaWYgLyogX19HU1RfQURBUFRJVkVfREVNVVhfQ09NTU9OX1RFU1RfSF9fICovCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NzFmZTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYwpAQCAtMCwwICsxLDUyNSBAQAorLyogQSBnZW5lcmljIHRlc3QgZW5naW5lIGZvciBlbGVtZW50cyBiYXNlZCB1cG9uIEdzdEFkYXB0aXZlRGVtdXgKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDwyMDE1PiBZb3VWaWV3IFRWIEx0ZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KKyNpbmNsdWRlICJhZGFwdGl2ZV9kZW11eF9lbmdpbmUuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSBlbmdpbmU7CisgIGNvbnN0IEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzICpjYWxsYmFja3M7CisgIGdwb2ludGVyIHVzZXJfZGF0YTsKK30gR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlOworCisKKyNkZWZpbmUgR1NUX1RFU1RfR0VUX0xPQ0soZCkgICgmKCgoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlKikoZCkpLT5lbmdpbmUubG9jaykpCisjZGVmaW5lIEdTVF9URVNUX0xPQ0soZCkgICAgICBnX211dGV4X2xvY2sgKEdTVF9URVNUX0dFVF9MT0NLIChkKSkKKyNkZWZpbmUgR1NUX1RFU1RfVU5MT0NLKGQpICAgIGdfbXV0ZXhfdW5sb2NrIChHU1RfVEVTVF9HRVRfTE9DSyAoZCkpCisKK3N0YXRpYyB2b2lkCithZGFwdGl2ZV9kZW11eF9lbmdpbmVfc3RyZWFtX3N0YXRlX2ZpbmFsaXplIChncG9pbnRlciBkYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqc3RyZWFtID0KKyAgICAgIChHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqKSBkYXRhOworICBpZiAoc3RyZWFtLT5hcHBzaW5rKQorICAgIGdzdF9vYmplY3RfdW5yZWYgKHN0cmVhbS0+YXBwc2luayk7CisgIGlmIChzdHJlYW0tPnBhZCkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzdHJlYW0tPnBhZCk7CisgIGlmIChzdHJlYW0tPmludGVybmFsX3BhZCkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzdHJlYW0tPmludGVybmFsX3BhZCk7CisgIGdfc2xpY2VfZnJlZSAoR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0sIHN0cmVhbSk7Cit9CisKKy8qIGdldCB0aGUgdGVzdE91dHB1dCBlbnRyeSBpbiB0ZXN0RGF0YSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBBcHBTaW5rICovCitzdGF0aWMgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKgorZ2V0VGVzdE91dHB1dERhdGFCeUFwcHNpbmsgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqIHByaXYsCisgICAgR3N0QXBwU2luayAqIGFwcHNpbmspCit7CisgIGZvciAoZ3VpbnQgaSA9IDA7IGkgPCBwcml2LT5lbmdpbmUub3V0cHV0X3N0cmVhbXMtPmxlbjsgKytpKSB7CisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKnN0YXRlOworICAgIHN0YXRlID0gZ19wdHJfYXJyYXlfaW5kZXggKHByaXYtPmVuZ2luZS5vdXRwdXRfc3RyZWFtcywgaSk7CisgICAgaWYgKHN0YXRlLT5hcHBzaW5rID09IGFwcHNpbmspIHsKKyAgICAgIHJldHVybiBzdGF0ZTsKKyAgICB9CisgIH0KKyAgY2tfYWJvcnRfbXNnICgiY2Fubm90IGZpbmQgYXBwc2luayAlcCBpbiB0aGUgb3V0cHV0IGRhdGEiLCBhcHBzaW5rKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIGdldCB0aGUgb3V0cHV0IHN0cmVhbSBlbnRyeSBpbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBQYWQgKi8KK3N0YXRpYyBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqCitnZXRUZXN0T3V0cHV0RGF0YUJ5UGFkIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKiBwcml2LAorICAgIEdzdFBhZCAqIHBhZCwgZ2Jvb2xlYW4gYWJvcnRfaWZfbm90X2ZvdW5kKQoreworICBmb3IgKGd1aW50IGkgPSAwOyBpIDwgcHJpdi0+ZW5naW5lLm91dHB1dF9zdHJlYW1zLT5sZW47ICsraSkgeworICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICpzdHJlYW07CisgICAgc3RyZWFtID0gZ19wdHJfYXJyYXlfaW5kZXggKHByaXYtPmVuZ2luZS5vdXRwdXRfc3RyZWFtcywgaSk7CisgICAgaWYgKHN0cmVhbS0+aW50ZXJuYWxfcGFkID09IHBhZCB8fCBzdHJlYW0tPnBhZCA9PSBwYWQpIHsKKyAgICAgIHJldHVybiBzdHJlYW07CisgICAgfQorICB9CisgIGlmIChhYm9ydF9pZl9ub3RfZm91bmQpCisgICAgY2tfYWJvcnRfbXNnICgiY2Fubm90IGZpbmQgcGFkICVwIGluIHRoZSBvdXRwdXQgZGF0YSIsIHBhZCk7CisgIHJldHVybiBOVUxMOworfQorCisvKiBjYWxsYmFjayBjYWxsZWQgd2hlbiBBcHBTaW5rIHJlY2VpdmVzIGRhdGEgKi8KK3N0YXRpYyBHc3RGbG93UmV0dXJuCitvbl9hcHBTaW5rTmV3U2FtcGxlIChHc3RBcHBTaW5rICogYXBwc2luaywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKnByaXYgPQorICAgICAgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqKSB1c2VyX2RhdGE7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICplbmdpbmU7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICp0ZXN0T3V0cHV0U3RyZWFtID0gTlVMTDsKKyAgR3N0U2FtcGxlICpzYW1wbGU7CisgIEdzdEJ1ZmZlciAqYnVmZmVyOworICBnYm9vbGVhbiByZXQgPSBUUlVFOworCisgIGZhaWxfdW5sZXNzIChwcml2ICE9IE5VTEwpOworICBHU1RfVEVTVF9MT0NLIChwcml2KTsKKyAgZW5naW5lID0gJnByaXYtPmVuZ2luZTsKKyAgdGVzdE91dHB1dFN0cmVhbSA9IGdldFRlc3RPdXRwdXREYXRhQnlBcHBzaW5rIChwcml2LCBhcHBzaW5rKTsKKworICBzYW1wbGUgPSBnc3RfYXBwX3NpbmtfcHVsbF9zYW1wbGUgKGFwcHNpbmspOworICBmYWlsX3VubGVzcyAoc2FtcGxlICE9IE5VTEwpOworICBidWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIgKHNhbXBsZSk7CisgIGZhaWxfdW5sZXNzIChidWZmZXIgIT0gTlVMTCk7CisKKyAgLyogY2FsbCB0aGUgdGVzdCBjYWxsYmFjaywgaWYgcmVnaXN0ZXJlZCAqLworICBpZiAocHJpdi0+Y2FsbGJhY2tzLT5hcHBzaW5rX3JlY2VpdmVkX2RhdGEpCisgICAgcmV0ID0gcHJpdi0+Y2FsbGJhY2tzLT5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgKGVuZ2luZSwKKyAgICAgICAgdGVzdE91dHB1dFN0cmVhbSwgYnVmZmVyLCBwcml2LT51c2VyX2RhdGEpOworCisgIHRlc3RPdXRwdXRTdHJlYW0tPnNlZ21lbnRfcmVjZWl2ZWRfc2l6ZSArPSBnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpOworCisgIGdzdF9zYW1wbGVfdW5yZWYgKHNhbXBsZSk7CisKKyAgR1NUX1RFU1RfVU5MT0NLIChwcml2KTsKKworICBpZiAoIXJldCkKKyAgICByZXR1cm4gR1NUX0ZMT1dfRU9TOworCisgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworLyogY2FsbGJhY2sgY2FsbGVkIHdoZW4gQXBwU2luayByZWNlaXZlcyBlb3MgKi8KK3N0YXRpYyB2b2lkCitvbl9hcHBTaW5rRU9TIChHc3RBcHBTaW5rICogYXBwc2luaywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKnByaXYgPQorICAgICAgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqKSB1c2VyX2RhdGE7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICp0ZXN0T3V0cHV0U3RyZWFtID0gTlVMTDsKKworICBmYWlsX3VubGVzcyAocHJpdiAhPSBOVUxMKTsKKyAgR1NUX1RFU1RfTE9DSyAocHJpdik7CisgIHRlc3RPdXRwdXRTdHJlYW0gPSBnZXRUZXN0T3V0cHV0RGF0YUJ5QXBwc2luayAocHJpdiwgYXBwc2luayk7CisKKyAgdGVzdE91dHB1dFN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSArPQorICAgICAgdGVzdE91dHB1dFN0cmVhbS0+c2VnbWVudF9yZWNlaXZlZF9zaXplOworICB0ZXN0T3V0cHV0U3RyZWFtLT5zZWdtZW50X3JlY2VpdmVkX3NpemUgPSAwOworCisgIGlmIChwcml2LT5jYWxsYmFja3MtPmFwcHNpbmtfZW9zKQorICAgIHByaXYtPmNhbGxiYWNrcy0+YXBwc2lua19lb3MgKCZwcml2LT5lbmdpbmUsCisgICAgICAgIHRlc3RPdXRwdXRTdHJlYW0sIHByaXYtPnVzZXJfZGF0YSk7CisKKyAgR1NUX1RFU1RfVU5MT0NLIChwcml2KTsKK30KKworc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuCitvbl9hcHBzaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdFBhZFByb2JlSW5mbyAqIGluZm8sIGdwb2ludGVyIGRhdGEpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqcHJpdiA9CisgICAgICAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICopIGRhdGE7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICpzdHJlYW0gPSBOVUxMOworICBHc3RFdmVudCAqZXZlbnQ7CisKKyAgZXZlbnQgPSBHU1RfUEFEX1BST0JFX0lORk9fRVZFTlQgKGluZm8pOworICBHU1RfREVCVUcgKCJSZWNlaXZlZCBldmVudCAlIiBHU1RfUFRSX0ZPUk1BVCAiIG9uIHBhZCAlIiBHU1RfUFRSX0ZPUk1BVCwKKyAgICAgIGV2ZW50LCBwYWQpOworCisgIGlmIChwcml2LT5jYWxsYmFja3MtPmFwcHNpbmtfZXZlbnQpIHsKKyAgICBHc3RQYWQgKnN0cmVhbV9wYWQgPSBnc3RfcGFkX2dldF9wZWVyIChwYWQpOworICAgIGZhaWxfdW5sZXNzIChzdHJlYW1fcGFkICE9IE5VTEwpOworCisgICAgR1NUX1RFU1RfTE9DSyAocHJpdik7CisgICAgc3RyZWFtID0gZ2V0VGVzdE91dHB1dERhdGFCeVBhZCAocHJpdiwgc3RyZWFtX3BhZCwgVFJVRSk7CisgICAgR1NUX1RFU1RfVU5MT0NLIChwcml2KTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzdHJlYW1fcGFkKTsKKyAgICBwcml2LT5jYWxsYmFja3MtPmFwcHNpbmtfZXZlbnQgKCZwcml2LT5lbmdpbmUsIHN0cmVhbSwgZXZlbnQsCisgICAgICAgIHByaXYtPnVzZXJfZGF0YSk7CisgIH0KKworICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKK30KKworCisvKiBjYWxsYmFjayBjYWxsZWQgd2hlbiBkZW11eCBzZW5kcyBkYXRhIHRvIEFwcFNpbmsgKi8KK3N0YXRpYyBHc3RQYWRQcm9iZVJldHVybgorb25fZGVtdXhfc2VudF9kYXRhIChHc3RQYWQgKiBwYWQsIEdzdFBhZFByb2JlSW5mbyAqIGluZm8sIGdwb2ludGVyIGRhdGEpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqcHJpdiA9CisgICAgICAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICopIGRhdGE7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICpzdHJlYW0gPSBOVUxMOworICBHc3RCdWZmZXIgKmJ1ZmZlcjsKKworICBidWZmZXIgPSBHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSIChpbmZvKTsKKworICBHU1RfVEVTVF9MT0NLIChwcml2KTsKKyAgc3RyZWFtID0gZ2V0VGVzdE91dHB1dERhdGFCeVBhZCAocHJpdiwgcGFkLCBUUlVFKTsKKyAgR1NUX1RFU1RfVU5MT0NLIChwcml2KTsKKworICBpZiAocHJpdi0+Y2FsbGJhY2tzLT5kZW11eF9zZW50X2RhdGEpIHsKKyAgICAoKnByaXYtPmNhbGxiYWNrcy0+ZGVtdXhfc2VudF9kYXRhKSAoJnByaXYtPmVuZ2luZSwKKyAgICAgICAgc3RyZWFtLCBidWZmZXIsIHByaXYtPnVzZXJfZGF0YSk7CisgIH0KKworICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKK30KKworLyogY2FsbGJhY2sgY2FsbGVkIHdoZW4gZGVtdXggcmVjZWl2ZXMgZXZlbnRzIGZyb20gR3N0RmFrZVNvdXBIVFRQU3JjICovCitzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4KK29uX2RlbXV4UmVjZWl2ZXNFdmVudCAoR3N0UGFkICogcGFkLCBHc3RQYWRQcm9iZUluZm8gKiBpbmZvLCBncG9pbnRlciBkYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKnByaXYgPQorICAgICAgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqKSBkYXRhOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqc3RyZWFtID0gTlVMTDsKKyAgR3N0RXZlbnQgKmV2ZW50OworICBjb25zdCBHc3RTZWdtZW50ICpzZWdtZW50OworCisgIGV2ZW50ID0gR1NUX1BBRF9QUk9CRV9JTkZPX0VWRU5UIChpbmZvKTsKKyAgR1NUX0RFQlVHICgiUmVjZWl2ZWQgZXZlbnQgJSIgR1NUX1BUUl9GT1JNQVQgIiBvbiBwYWQgJSIgR1NUX1BUUl9GT1JNQVQsCisgICAgICBldmVudCwgcGFkKTsKKworICBpZiAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSA9PSBHU1RfRVZFTlRfU0VHTUVOVCkgeworICAgIC8qIGEgbmV3IHNlZ21lbnQgd2lsbCBzdGFydCBhcnJpdmluZworICAgICAqIHVwZGF0ZSBzZWdtZW50X3N0YXJ0IHVzZWQgYnkgcGF0dGVybiB2YWxpZGF0aW9uCisgICAgICovCisgICAgZ3N0X2V2ZW50X3BhcnNlX3NlZ21lbnQgKGV2ZW50LCAmc2VnbWVudCk7CisKKyAgICBHU1RfVEVTVF9MT0NLIChwcml2KTsKKyAgICBzdHJlYW0gPSBnZXRUZXN0T3V0cHV0RGF0YUJ5UGFkIChwcml2LCBwYWQsIFRSVUUpOworICAgIHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSArPSBzdHJlYW0tPnNlZ21lbnRfcmVjZWl2ZWRfc2l6ZTsKKyAgICBzdHJlYW0tPnNlZ21lbnRfcmVjZWl2ZWRfc2l6ZSA9IDA7CisgICAgc3RyZWFtLT5zZWdtZW50X3N0YXJ0ID0gc2VnbWVudC0+c3RhcnQ7CisgICAgR1NUX1RFU1RfVU5MT0NLIChwcml2KTsKKyAgfQorCisgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOworfQorCisKK3N0YXRpYyB2b2lkCitvbl9kZW11eEVsZW1lbnRBZGRlZCAoR3N0QmluICogZGVtdXgsIEdzdEVsZW1lbnQgKiBlbGVtZW50LCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqcHJpdiA9CisgICAgICAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICopIHVzZXJfZGF0YTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKnN0cmVhbSA9IE5VTEw7CisgIEdzdFBhZCAqaW50ZXJuYWxfcGFkOworICBnY2hhciAqc3JjYmluX25hbWU7CisgIGdpbnQgaTsKKworICBzcmNiaW5fbmFtZSA9IEdTVF9FTEVNRU5UX05BTUUgKGVsZW1lbnQpOworICBHU1RfVEVTVF9MT0NLIChwcml2KTsKKyAgZm9yIChpID0gMDsgaSA8IHByaXYtPmVuZ2luZS5vdXRwdXRfc3RyZWFtcy0+bGVuOyBpKyspIHsKKyAgICBzdHJlYW0gPSBnX3B0cl9hcnJheV9pbmRleCAocHJpdi0+ZW5naW5lLm91dHB1dF9zdHJlYW1zLCBpKTsKKyAgICBpZiAoc3Ryc3RyIChzcmNiaW5fbmFtZSwgR1NUX1BBRF9OQU1FIChzdHJlYW0tPnBhZCkpICE9IE5VTEwpCisgICAgICBicmVhazsKKyAgfQorICBmYWlsX3VubGVzcyAoc3RyZWFtICE9IE5VTEwpOworCisgIC8qIGtlZXAgdGhlIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWxfcGFkLgorICAgKiBXZSB3aWxsIG5lZWQgaXQgdG8gaWRlbnRpZnkgdGhlIHN0cmVhbSBpbiB0aGUgb25fZGVtdXhSZWNlaXZlc0V2ZW50IGNhbGxiYWNrCisgICAqLworICBpZiAoc3RyZWFtLT5pbnRlcm5hbF9wYWQpIHsKKyAgICBnc3RfcGFkX3JlbW92ZV9wcm9iZSAoc3RyZWFtLT5pbnRlcm5hbF9wYWQsIHN0cmVhbS0+aW50ZXJuYWxfcGFkX3Byb2JlKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzdHJlYW0tPmludGVybmFsX3BhZCk7CisgIH0KKyAgaW50ZXJuYWxfcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKGVsZW1lbnQsICJzcmMiKTsKKyAgc3RyZWFtLT5pbnRlcm5hbF9wYWRfcHJvYmUgPQorICAgICAgZ3N0X3BhZF9hZGRfcHJvYmUgKGludGVybmFsX3BhZCwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0sCisgICAgICAoR3N0UGFkUHJvYmVDYWxsYmFjaykgb25fZGVtdXhSZWNlaXZlc0V2ZW50LCBwcml2LCBOVUxMKTsKKyAgc3RyZWFtLT5pbnRlcm5hbF9wYWQgPSBpbnRlcm5hbF9wYWQ7CisgIEdTVF9URVNUX1VOTE9DSyAocHJpdik7CisKK30KKworCisvKiBjYWxsYmFjayBjYWxsZWQgd2hlbiBkZW11eCBjcmVhdGVzIGEgc3JjIHBhZC4KKyAqIFdlIHdpbGwgY3JlYXRlIGFuIEFwcFNpbmsgdG8gZ2V0IHRoZSBkYXRhCisgKi8KK3N0YXRpYyB2b2lkCitvbl9kZW11eE5ld1BhZCAoR3N0RWxlbWVudCAqIGRlbXV4LCBHc3RQYWQgKiBwYWQsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICpwcml2ID0KKyAgICAgIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKikgdXNlcl9kYXRhOworICBHc3RFbGVtZW50ICpwaXBlbGluZTsKKyAgR3N0RWxlbWVudCAqc2luazsKKyAgZ2Jvb2xlYW4gcmV0OworICBnY2hhciAqbmFtZTsKKyAgR3N0UGFkICphcHBzaW5rX3BhZDsKKyAgR3N0QXBwU2lua0NhbGxiYWNrcyBhcHBTaW5rQ2FsbGJhY2tzOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqc3RyZWFtOworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CisKKyAgZmFpbF91bmxlc3MgKHByaXYgIT0gTlVMTCk7CisgIG5hbWUgPSBnc3RfcGFkX2dldF9uYW1lIChwYWQpOworCisgIHN0cmVhbSA9IGdfc2xpY2VfbmV3MCAoR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0pOworICBHU1RfREVCVUcgKCJjcmVhdGVkIHBhZCAlcCIsIHBhZCk7CisKKyAgc2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImFwcHNpbmsiLCBuYW1lKTsKKyAgZ19mcmVlIChuYW1lKTsKKyAgZmFpbF91bmxlc3MgKHNpbmsgIT0gTlVMTCk7CisKKyAgR1NUX1RFU1RfTE9DSyAocHJpdik7CisKKyAgLyogcmVnaXN0ZXIgdGhlIEFwcFNpbmsgcG9pbnRlciBpbiB0aGUgdGVzdCBvdXRwdXQgZGF0YSAqLworICBnc3Rfb2JqZWN0X3JlZiAoc2luayk7CisgIHN0cmVhbS0+YXBwc2luayA9IEdTVF9BUFBfU0lOSyAoc2luayk7CisKKyAgYXBwU2lua0NhbGxiYWNrcy5lb3MgPSBvbl9hcHBTaW5rRU9TOworICBhcHBTaW5rQ2FsbGJhY2tzLm5ld19wcmVyb2xsID0gTlVMTDsKKyAgYXBwU2lua0NhbGxiYWNrcy5uZXdfc2FtcGxlID0gb25fYXBwU2lua05ld1NhbXBsZTsKKworICBnc3RfYXBwX3Npbmtfc2V0X2NhbGxiYWNrcyAoR1NUX0FQUF9TSU5LIChzaW5rKSwgJmFwcFNpbmtDYWxsYmFja3MsIHByaXYsCisgICAgICBOVUxMKTsKKyAgYXBwc2lua19wYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoc2luaywgInNpbmsiKTsKKyAgZ3N0X3BhZF9hZGRfcHJvYmUgKGFwcHNpbmtfcGFkLAorICAgICAgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0gfCBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRkxVU0gsCisgICAgICAoR3N0UGFkUHJvYmVDYWxsYmFjaykgb25fYXBwc2lua19ldmVudCwgcHJpdiwgTlVMTCk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGFwcHNpbmtfcGFkKTsKKworICBnc3RfcGFkX2FkZF9wcm9iZSAocGFkLCBHU1RfUEFEX1BST0JFX1RZUEVfQlVGRkVSLAorICAgICAgKEdzdFBhZFByb2JlQ2FsbGJhY2spIG9uX2RlbXV4X3NlbnRfZGF0YSwgcHJpdiwgTlVMTCk7CisgIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9HRVRfQ0xBU1MgKHNpbmspOworICBpZiAoZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgInN5bmMiKSkgeworICAgIEdTVF9ERUJVRyAoIlNldHRpbmcgc3luYz1GQUxTRSBvbiBBcHBTaW5rIik7CisgICAgZ19vYmplY3Rfc2V0IChHX09CSkVDVCAoc2luayksICJzeW5jIiwgRkFMU0UsIE5VTEwpOworICB9CisgIHN0cmVhbS0+cGFkID0gZ3N0X29iamVjdF9yZWYgKHBhZCk7CisKKworICBnX3B0cl9hcnJheV9hZGQgKHByaXYtPmVuZ2luZS5vdXRwdXRfc3RyZWFtcywgc3RyZWFtKTsKKyAgR1NUX1RFU1RfVU5MT0NLIChwcml2KTsKKworICBwaXBlbGluZSA9IEdTVF9FTEVNRU5UIChnc3RfZWxlbWVudF9nZXRfcGFyZW50IChkZW11eCkpOworICBmYWlsX3VubGVzcyAocGlwZWxpbmUgIT0gTlVMTCk7CisgIHJldCA9IGdzdF9iaW5fYWRkIChHU1RfQklOIChwaXBlbGluZSksIHNpbmspOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChyZXQsIFRSVUUpOworICBnc3Rfb2JqZWN0X3VucmVmIChwaXBlbGluZSk7CisgIHJldCA9IGdzdF9lbGVtZW50X2xpbmsgKGRlbXV4LCBzaW5rKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKyAgcmV0ID0gZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudCAoc2luayk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisgIEdTVF9URVNUX0xPQ0sgKHByaXYpOworICBpZiAocHJpdi0+Y2FsbGJhY2tzLT5kZW11eF9wYWRfYWRkZWQpIHsKKyAgICBwcml2LT5jYWxsYmFja3MtPmRlbXV4X3BhZF9hZGRlZCAoJnByaXYtPmVuZ2luZSwgc3RyZWFtLCBwcml2LT51c2VyX2RhdGEpOworICB9CisgIEdTVF9URVNUX1VOTE9DSyAocHJpdik7Cit9CisKKy8qIGNhbGxiYWNrIGNhbGxlZCB3aGVuIGRlbXV4IHJlbW92ZXMgYSBzcmMgcGFkLgorICogV2UgcmVtb3ZlIHRoZSBBcHBTaW5rIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhZAorICovCitzdGF0aWMgdm9pZAorb25fZGVtdXhQYWRSZW1vdmVkIChHc3RFbGVtZW50ICogZGVtdXgsIEdzdFBhZCAqIHBhZCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKnByaXYgPQorICAgICAgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqKSB1c2VyX2RhdGE7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICpzdHJlYW0gPSBOVUxMOworICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQ7CisgIEdzdFN0YXRlIGN1cnJlbnRTdGF0ZSwgcGVuZGluZzsKKyAgR3N0RWxlbWVudCAqYXBwU2luazsKKworICBmYWlsX3VubGVzcyAocHJpdiAhPSBOVUxMKTsKKworICBHU1RfREVCVUcgKCJQYWQgcmVtb3ZlZDogJSIgR1NUX1BUUl9GT1JNQVQsIHBhZCk7CisKKyAgR1NUX1RFU1RfTE9DSyAocHJpdik7CisgIHN0cmVhbSA9IGdldFRlc3RPdXRwdXREYXRhQnlQYWQgKHByaXYsIHBhZCwgVFJVRSk7CisgIGlmIChwcml2LT5jYWxsYmFja3MtPmRlbXV4X3BhZF9yZW1vdmVkKSB7CisgICAgcHJpdi0+Y2FsbGJhY2tzLT5kZW11eF9wYWRfcmVtb3ZlZCAoJnByaXYtPmVuZ2luZSwgc3RyZWFtLCBwcml2LT51c2VyX2RhdGEpOworICB9CisgIGZhaWxfdW5sZXNzIChzdHJlYW0tPmFwcHNpbmsgIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzIChzdHJlYW0tPmludGVybmFsX3BhZCAhPSBOVUxMKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoc3RyZWFtLT5pbnRlcm5hbF9wYWQpOworICBzdHJlYW0tPmludGVybmFsX3BhZCA9IE5VTEw7CisgIGFwcFNpbmsgPSBHU1RfRUxFTUVOVCAoc3RyZWFtLT5hcHBzaW5rKTsKKyAgcmV0ID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlIChhcHBTaW5rLCAmY3VycmVudFN0YXRlLCAmcGVuZGluZywgMCk7CisgIGlmICgocmV0ID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyAmJiBjdXJyZW50U3RhdGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcpCisgICAgICB8fCAocmV0ID09IEdTVF9TVEFURV9DSEFOR0VfQVNZTkMgJiYgcGVuZGluZyA9PSBHU1RfU1RBVEVfUExBWUlORykpIHsKKyAgICBHU1RfREVCVUcgKCJDaGFuZ2luZyBBcHBTaW5rIGVsZW1lbnQgdG8gUEFVU0VEIik7CisgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChhcHBTaW5rLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgfQorICBHU1RfVEVTVF9VTkxPQ0sgKHByaXYpOworfQorCisvKiBjYWxsYmFjayBjYWxsZWQgd2hlbiBtYWluX2xvb3AgZGV0ZWN0cyBhbiBlcnJvciBtZXNzYWdlCisgKiBXZSB3aWxsIHNpZ25hbCBtYWluIGxvb3AgdG8gcXVpdAorICovCitzdGF0aWMgdm9pZAorb25fRXJyb3JNZXNzYWdlT25CdXMgKEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKnByaXYgPQorICAgICAgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqKSB1c2VyX2RhdGE7CisgIEdFcnJvciAqZXJyID0gTlVMTDsKKyAgZ2NoYXIgKmRiZ19pbmZvID0gTlVMTDsKKworICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvciAobXNnLCAmZXJyLCAmZGJnX2luZm8pOworICBHU1RfREVCVUcgKCJFUlJPUiBmcm9tIGVsZW1lbnQgJXM6ICclcycuIERlYnVnZ2luZyBpbmZvOiAlcyIsCisgICAgICBHU1RfT0JKRUNUX05BTUUgKG1zZy0+c3JjKSwgZXJyLT5tZXNzYWdlLCAoZGJnX2luZm8pID8gZGJnX2luZm8gOiAibm9uZSIpOworICBnX2Vycm9yX2ZyZWUgKGVycik7CisgIGdfZnJlZSAoZGJnX2luZm8pOworCisgIEdTVF9URVNUX0xPQ0sgKHByaXYpOworCisgIGZhaWxfdW5sZXNzIChwcml2LT5jYWxsYmFja3MtPmJ1c19lcnJvcl9tZXNzYWdlLAorICAgICAgInVuZXhwZWN0ZWQgZXJyb3IgZGV0ZWN0ZWQgb24gYnVzIik7CisKKyAgcHJpdi0+Y2FsbGJhY2tzLT5idXNfZXJyb3JfbWVzc2FnZSAoJnByaXYtPmVuZ2luZSwgbXNnLCBwcml2LT51c2VyX2RhdGEpOworCisgIEdTVF9URVNUX1VOTE9DSyAocHJpdik7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorc3RhcnRfcGlwZWxpbmVfcGxheWluZyAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKnByaXYgPQorICAgICAgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqKSB1c2VyX2RhdGE7CisgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlQ2hhbmdlOworCisgIEdTVF9ERUJVRyAoIk1vdmluZyBwaXBlbGluZSB0byBQTEFZSU5HIHN0YXRlIik7CisgIHN0YXRlQ2hhbmdlID0KKyAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAocHJpdi0+ZW5naW5lLnBpcGVsaW5lLCBHU1RfU1RBVEVfUExBWUlORyk7CisgIGZhaWxfdW5sZXNzIChzdGF0ZUNoYW5nZSAhPSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpOworICBHU1RfREVCVUcgKCJQTEFZSU5HIHN0YXRlQ2hhbmdlID0gJWQiLCBzdGF0ZUNoYW5nZSk7CisgIHJldHVybiBGQUxTRTsKK30KKworLyoKKyAqIENyZWF0ZSBhIGRlbXV4IGVsZW1lbnQsIHJ1biBhIHRlc3QgdXNpbmcgdGhlIGlucHV0IGRhdGEgYW5kIGNoZWNrCisgKiB0aGUgb3V0cHV0IGRhdGEKKyAqLwordm9pZAorZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuIChjb25zdCBnY2hhciAqIGVsZW1lbnRfbmFtZSwKKyAgICBjb25zdCBnY2hhciAqIG1hbmlmZXN0X3VyaSwKKyAgICBjb25zdCBHc3RBZGFwdGl2ZURlbXV4VGVzdENhbGxiYWNrcyAqIGNhbGxiYWNrcywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RCdXMgKmJ1czsKKyAgR3N0RWxlbWVudCAqZGVtdXg7CisgIEdzdEVsZW1lbnQgKm1hbmlmZXN0X3NvdXJjZTsKKyAgZ2Jvb2xlYW4gcmV0OworICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzdGF0ZUNoYW5nZTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICpwcml2OworCisgIHByaXYgPSBnX3NsaWNlX25ldzAgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSk7CisgIHByaXYtPmVuZ2luZS5vdXRwdXRfc3RyZWFtcyA9CisgICAgICBnX3B0cl9hcnJheV9uZXdfd2l0aF9mcmVlX2Z1bmMKKyAgICAgIChhZGFwdGl2ZV9kZW11eF9lbmdpbmVfc3RyZWFtX3N0YXRlX2ZpbmFsaXplKTsKKyAgZ19tdXRleF9pbml0ICgmcHJpdi0+ZW5naW5lLmxvY2spOworICBwcml2LT5jYWxsYmFja3MgPSBjYWxsYmFja3M7CisgIHByaXYtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKKyAgcHJpdi0+ZW5naW5lLmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIFRSVUUpOworICBmYWlsX3VubGVzcyAocHJpdi0+ZW5naW5lLmxvb3AgIT0gTlVMTCk7CisgIEdTVF9URVNUX0xPQ0sgKHByaXYpOworICBwcml2LT5lbmdpbmUucGlwZWxpbmUgPSBnc3RfcGlwZWxpbmVfbmV3ICgicGlwZWxpbmUiKTsKKyAgZmFpbF91bmxlc3MgKHByaXYtPmVuZ2luZS5waXBlbGluZSAhPSBOVUxMKTsKKyAgR1NUX0RFQlVHICgiY3JlYXRlZCBwaXBlbGluZSAlIiBHU1RfUFRSX0ZPUk1BVCwgcHJpdi0+ZW5naW5lLnBpcGVsaW5lKTsKKworICAvKiByZWdpc3RlciBhIGNhbGxiYWNrIHRvIGxpc3RlbiBmb3IgZXJyb3IgbWVzc2FnZXMgKi8KKyAgYnVzID0gZ3N0X3BpcGVsaW5lX2dldF9idXMgKEdTVF9QSVBFTElORSAocHJpdi0+ZW5naW5lLnBpcGVsaW5lKSk7CisgIGdzdF9idXNfYWRkX3NpZ25hbF93YXRjaF9mdWxsIChidXMsIEdfUFJJT1JJVFlfSElHSCk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKGJ1cywgIm1lc3NhZ2U6OmVycm9yIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKG9uX0Vycm9yTWVzc2FnZU9uQnVzKSwgcHJpdik7CisKKyAgbWFuaWZlc3Rfc291cmNlID0KKyAgICAgIGdzdF9lbGVtZW50X21ha2VfZnJvbV91cmkgKEdTVF9VUklfU1JDLCBtYW5pZmVzdF91cmksIE5VTEwsIE5VTEwpOworICBmYWlsX3VubGVzcyAobWFuaWZlc3Rfc291cmNlICE9IE5VTEwpOworICBwcml2LT5lbmdpbmUubWFuaWZlc3Rfc291cmNlID0gbWFuaWZlc3Rfc291cmNlOworCisgIGRlbXV4ID0gZ3N0X2NoZWNrX3NldHVwX2VsZW1lbnQgKGVsZW1lbnRfbmFtZSk7CisgIGZhaWxfdW5sZXNzIChkZW11eCAhPSBOVUxMKTsKKyAgcHJpdi0+ZW5naW5lLmRlbXV4ID0gZGVtdXg7CisgIEdTVF9ERUJVRyAoImNyZWF0ZWQgZGVtdXggJSIgR1NUX1BUUl9GT1JNQVQsIGRlbXV4KTsKKworICBnX3NpZ25hbF9jb25uZWN0IChkZW11eCwgImVsZW1lbnQtYWRkZWQiLCBHX0NBTExCQUNLIChvbl9kZW11eEVsZW1lbnRBZGRlZCksCisgICAgICBwcml2KTsKKyAgZ19zaWduYWxfY29ubmVjdCAoZGVtdXgsICJwYWQtYWRkZWQiLCBHX0NBTExCQUNLIChvbl9kZW11eE5ld1BhZCksIHByaXYpOworICBnX3NpZ25hbF9jb25uZWN0IChkZW11eCwgInBhZC1yZW1vdmVkIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKG9uX2RlbXV4UGFkUmVtb3ZlZCksIHByaXYpOworCisgIGdzdF9iaW5fYWRkX21hbnkgKEdTVF9CSU4gKHByaXYtPmVuZ2luZS5waXBlbGluZSksIG1hbmlmZXN0X3NvdXJjZSwgZGVtdXgsCisgICAgICBOVUxMKTsKKyAgQVNTRVJUX09CSkVDVF9SRUZDT1VOVCAobWFuaWZlc3Rfc291cmNlLCBlbGVtZW50X25hbWUsIDEpOworICBBU1NFUlRfT0JKRUNUX1JFRkNPVU5UIChkZW11eCwgZWxlbWVudF9uYW1lLCAxKTsKKworICByZXQgPSBnc3RfZWxlbWVudF9saW5rIChtYW5pZmVzdF9zb3VyY2UsIGRlbXV4KTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKworICAvKiBjYWxsIGEgdGVzdCBjYWxsYmFjayBiZWZvcmUgd2Ugc3RhcnQgdGhlIHBpcGVsaW5lICovCisgIGlmIChjYWxsYmFja3MtPnByZV90ZXN0KQorICAgICgqY2FsbGJhY2tzLT5wcmVfdGVzdCkgKCZwcml2LT5lbmdpbmUsIHByaXYtPnVzZXJfZGF0YSk7CisKKyAgR1NUX1RFU1RfVU5MT0NLIChwcml2KTsKKworICBHU1RfREVCVUcgKCJTdGFydGluZyBwaXBlbGluZSIpOworICBzdGF0ZUNoYW5nZSA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZSAocHJpdi0+ZW5naW5lLnBpcGVsaW5lLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgZmFpbF91bmxlc3MgKHN0YXRlQ2hhbmdlICE9IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSk7CisgIC8qIHdhaXQgZm9yIGNvbXBsZXRpb24gb2YgdGhlIG1vdmUgdG8gUEFVU0VEICovCisgIHN0YXRlQ2hhbmdlID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlIChwcml2LT5lbmdpbmUucGlwZWxpbmUsIE5VTEwsIE5VTEwsCisgICAgICBHU1RfQ0xPQ0tfVElNRV9OT05FKTsKKyAgZmFpbF91bmxlc3MgKHN0YXRlQ2hhbmdlICE9IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSk7CisKKyAgZ19pZGxlX2FkZCAoKEdTb3VyY2VGdW5jKSBzdGFydF9waXBlbGluZV9wbGF5aW5nLCBwcml2KTsKKworICAvKiBibG9jayB1bnRpbCBhIGNhbGxiYWNrIGNhbGxzIGdfbWFpbl9sb29wX3F1aXQgKGVuZ2luZS5sb29wKSAqLworICBHU1RfREVCVUcgKCJtYWluIHRocmVhZCB3YWl0aW5nIGZvciBzdHJlYW1zIHRvIGZpbmlzaCIpOworICBnX21haW5fbG9vcF9ydW4gKHByaXYtPmVuZ2luZS5sb29wKTsKKyAgR1NUX0RFQlVHICgibWFpbiB0aHJlYWQgZmluaXNoZWQuIFN0b3BwaW5nIHBpcGVsaW5lIik7CisKKyAgLyogbm8gbmVlZCB0byB1c2UgZ3N0X2VsZW1lbnRfZ2V0X3N0YXRlIGFzIHRoZSBtb3ZlIHRoZSBHU1RfU1RBVEVfTlVMTAorICAgICBpcyBhbHdheXMgc3luY2hyb25vdXMgKi8KKyAgc3RhdGVDaGFuZ2UgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHByaXYtPmVuZ2luZS5waXBlbGluZSwgR1NUX1NUQVRFX05VTEwpOworICBmYWlsX3VubGVzcyAoc3RhdGVDaGFuZ2UgIT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKTsKKworICBHU1RfVEVTVF9MT0NLIChwcml2KTsKKworICAvKiBjYWxsIGEgdGVzdCBjYWxsYmFjayBhZnRlciB0aGUgc3RvcCBvZiB0aGUgcGlwZWxpbmUgKi8KKyAgaWYgKGNhbGxiYWNrcy0+cG9zdF90ZXN0KQorICAgICgqY2FsbGJhY2tzLT5wb3N0X3Rlc3QpICgmcHJpdi0+ZW5naW5lLCBwcml2LT51c2VyX2RhdGEpOworCisgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyAoYnVzLAorICAgICAgR19DQUxMQkFDSyAob25fRXJyb3JNZXNzYWdlT25CdXMpLCBwcml2KTsKKyAgZ3N0X2J1c19yZW1vdmVfc2lnbmFsX3dhdGNoIChidXMpOworICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMgKGRlbXV4LCBHX0NBTExCQUNLIChvbl9kZW11eE5ld1BhZCksCisgICAgICBwcml2KTsKKyAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jIChkZW11eCwgR19DQUxMQkFDSyAob25fZGVtdXhQYWRSZW1vdmVkKSwKKyAgICAgIHByaXYpOworCisgIEdTVF9ERUJVRyAoIm1haW4gdGhyZWFkIHBpcGVsaW5lIHN0b3BwZWQiKTsKKyAgZ3N0X29iamVjdF91bnJlZiAocHJpdi0+ZW5naW5lLnBpcGVsaW5lKTsKKyAgcHJpdi0+ZW5naW5lLnBpcGVsaW5lID0gTlVMTDsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHByaXYtPmVuZ2luZS5sb29wKTsKKyAgZ19wdHJfYXJyYXlfdW5yZWYgKHByaXYtPmVuZ2luZS5vdXRwdXRfc3RyZWFtcyk7CisKKyAgR1NUX1RFU1RfVU5MT0NLIChwcml2KTsKKyAgZ19tdXRleF9jbGVhciAoJnByaXYtPmVuZ2luZS5sb2NrKTsKKyAgZ19zbGljZV9mcmVlIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUsIHByaXYpOworfQpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmggYi90ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzE1ZWNiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmgKQEAgLTAsMCArMSwxODggQEAKKy8qIEEgZ2VuZXJpYyB0ZXN0IGVuZ2luZSBmb3IgZWxlbWVudHMgYmFzZWQgdXBvbiBHc3RBZGFwdGl2ZURlbXV4IAorICoKKyAqIENvcHlyaWdodCAoYykgPDIwMTU+IFlvdVZpZXcgVFYgTHRkCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9BREFQVElWRV9ERU1VWF9URVNUX0VOR0lORV9IX18KKyNkZWZpbmUgX19HU1RfQURBUFRJVkVfREVNVVhfVEVTVF9FTkdJTkVfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2FwcC9nc3RhcHBzaW5rLmg+CisjaW5jbHVkZSAidGVzdF9odHRwX3NyYy5oIgorCitHX0JFR0lOX0RFQ0xTCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZTsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtIHsKKyAgLyogdGhlIEdzdEFwcFNpbmsgZWxlbWVudCBnZXR0aW5nIHRoZSBkYXRhIGZvciB0aGlzIHN0cmVhbSAqLworICBHc3RBcHBTaW5rICphcHBzaW5rOworICBHc3RQYWQgKnBhZDsKKyAgLyogdGhlIGludGVybmFsIHBhZCBvZiBhZGFwdGl2ZWRlbXV4IGVsZW1lbnQgdXNlZCB0byBzZW5kIGRhdGEgdG8gdGhlIEdzdEFwcFNpbmsgZWxlbWVudCAqLworICBHc3RQYWQgKmludGVybmFsX3BhZDsKKyAgZ3Vsb25nIGludGVybmFsX3BhZF9wcm9iZTsKKyAgLyogY3VycmVudCBzZWdtZW50IHN0YXJ0IG9mZnNldCAqLworICBndWludDY0IHNlZ21lbnRfc3RhcnQ7CisgIC8qIHRoZSBzaXplIHJlY2VpdmVkIHNvIGZhciBvbiB0aGlzIHNlZ21lbnQgKi8KKyAgZ3VpbnQ2NCBzZWdtZW50X3JlY2VpdmVkX3NpemU7CisgIC8qIHRoZSB0b3RhbCBzaXplIHJlY2VpdmVkIHNvIGZhciBvbiB0aGlzIHN0cmVhbSwgZXhjbHVkaW5nIGN1cnJlbnQgc2VnbWVudCAqLworICBndWludDY0IHRvdGFsX3JlY2VpdmVkX3NpemU7Cit9IEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtOworCisvKiBHc3RBZGFwdGl2ZURlbXV4VGVzdENhbGxiYWNrczogY29udGFpbnMgdmFyaW91cyBjYWxsYmFja3MgdGhhdCBjYW4KKyAqIGJlIHJlZ2lzdGVyZWQgYnkgYSB0ZXN0LiBOb3QgYWxsIGNhbGxiYWNrcyBuZWVkcyB0byBiZSBjb25maWd1cmVkCisgKiBieSBhIHRlc3QuIEEgY2FsbGJhY2sgdGhhdCBpcyBub3QgcmVxdWlyZWQgYnkgYSB0ZXN0IG11c3QgYmUgc2V0CisgKiB0byBOVUxMLgorICovCit0eXBlZGVmIHN0cnVjdCBfR3N0QWRhcHRpdmVEZW11eFRlc3RDYWxsYmFja3MKK3sKKyAgLyoqCisgICAqIHByZV90ZXN0OiBjYWxsZWQgYmVmb3JlIHN0YXJ0aW5nIHRoZSBwaXBlbGluZQorICAgKiBAZW5naW5lOiAjR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUKKyAgICogQHVzZXJfZGF0YTogdGhlIHVzZXJfZGF0YSBwYXNzZWQgdG8gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuKCkKKyAgICovCisgIHZvaWQgKCpwcmVfdGVzdCkgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICplbmdpbmUsIGdwb2ludGVyIHVzZXJfZGF0YSk7CisgIAorICAvKioKKyAgICogcG9zdF90ZXN0OiBjYWxsZWQgYWZ0ZXIgc3RvcHBpbmcgdGhlIHBpcGVsaW5lLgorICAgKiBAZW5naW5lOiAjR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUKKyAgICogQHVzZXJfZGF0YTogdGhlIHVzZXJfZGF0YSBwYXNzZWQgdG8gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuKCkKKyAgICovCisgIHZvaWQgKCpwb3N0X3Rlc3QpIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqZW5naW5lLCBncG9pbnRlciB1c2VyX2RhdGEpOworCisgIC8qKgorICAgKiBhcHBzaW5rX3JlY2VpdmVkX2RhdGE6IGNhbGxlZCBlYWNoIHRpbWUgQXBwU2luayByZWNlaXZlcyBkYXRhCisgICAqIEBlbmdpbmU6ICNHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZQorICAgKiBAc3RyZWFtOiAjR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0KKyAgICogQGJ1ZmZlcjogdGhlICNHc3RCdWZmZXIgdGhhdCB3YXMgcmVjZXZpZWQgYnkgI0dzdEFwcFNpbmsKKyAgICogQHVzZXJfZGF0YTogdGhlIHVzZXJfZGF0YSBwYXNzZWQgdG8gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuKCkKKyAgICogUmV0dXJuczogI1RSVUUgdG8gY29udGludWUgcHJvY2Vzc2luZywgI0ZBTFNFIHRvIGNhdXNlIEVPUworICAgKgorICAgKiBDYW4gYmUgdXNlZCBieSBhIHRlc3QgdG8gcGVyZm9ybSBhZGRpdGlvbmFsIG9wZXJhdGlvbnMgKGVnIHZhbGlkYXRlCisgICAqIG91dHB1dCBkYXRhKQorICAgKi8KKyAgZ2Jvb2xlYW4gKCphcHBzaW5rX3JlY2VpdmVkX2RhdGEpIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqZW5naW5lLAorICAgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sCisgICAgICBHc3RCdWZmZXIgKiBidWZmZXIsIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKyAgLyoqCisgICAqIGFwcHNpbmtfZW9zOiBjYWxsZWQgZWFjaCB0aW1lIEFwcFNpbmsgcmVjZWl2ZXMgZW9zCisgICAqIEBlbmdpbmU6ICNHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZQorICAgKiBAc3RyZWFtOiAjR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0KKyAgICogQHVzZXJfZGF0YTogdGhlIHVzZXJfZGF0YSBwYXNzZWQgdG8gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuKCkKKyAgICoKKyAgICogQ2FuIGJlIHVzZWQgYnkgYSB0ZXN0IHRvIHBlcmZvcm0gYWRkaXRpb25hbCBvcGVyYXRpb25zIChlZyB2YWxpZGF0ZQorICAgKiBvdXRwdXQgZGF0YSkKKyAgICovCisgIHZvaWQgKCphcHBzaW5rX2VvcykgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICplbmdpbmUsCisgICAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqIHN0cmVhbSwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworICAvKioKKyAgICogYXBwc2lua19ldmVudDogY2FsbGVkIHdoZW4gYW4gZXZlbnQgaXMgcmVjZWl2ZWQgYnkgYXBwc2luaworICAgKiBAZW5naW5lOiAjR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUKKyAgICogQHN0cmVhbTogI0dzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtCisgICAqIEBldmVudDogdGhlICNHc3RFdmVudCB0aGF0IHdhcyBwdXNoZWQgaW4gdGhlIGRlbXV4ZXIgcGFkCisgICAqIEB1c2VyX2RhdGE6IHRoZSB1c2VyX2RhdGEgcGFzc2VkIHRvIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1bigpCisgICAqCisgICAqIENhbiBiZSB1c2VkIGJ5IGEgdGVzdCB0byBkbyBzb21lIGNoZWNrcyBvbiB0aGUgZXZlbnRzCisgICAqLworICB2b2lkICgqYXBwc2lua19ldmVudCkgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICplbmdpbmUsCisgICAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqIHN0cmVhbSwKKyAgICAgIEdzdEV2ZW50ICogZXZlbnQsIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKyAgLyoqCisgICAqIGRlbXV4X3BhZF9hZGRlZDogY2FsbGVkIGVhY2ggdGltZSB0aGUgZGVtdXggY3JlYXRlcyBhIG5ldyBwYWQKKyAgICogQGVuZ2luZTogI0dzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lCisgICAqIEBzdHJlYW06IHRoZSAjR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gdGhhdCBoYXMgYmVlbiBjcmVhdGVkCisgICAqIEB1c2VyX2RhdGE6IHRoZSB1c2VyX2RhdGEgcGFzc2VkIHRvIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1bigpCisgICAqLworICB2b2lkICgqZGVtdXhfcGFkX2FkZGVkKSAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKiBlbmdpbmUsCisgICAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqIHN0cmVhbSwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworICAvKioKKyAgICogZGVtdXhfcGFkX3JlbW92ZWQ6IGNhbGxlZCBlYWNoIHRpbWUgdGhlIGRlbXV4IHJlbW92ZXMgYSBwYWQKKyAgICogQGVuZ2luZTogI0dzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lCisgICAqIEBzdHJlYW06IHRoZSAjR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gdGhhdCB3aWxsIG5vIGxvbmdlcgorICAgKiBiZSB1c2VkCisgICAqIEB1c2VyX2RhdGE6IHRoZSB1c2VyX2RhdGEgcGFzc2VkIHRvIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1bigpCisgICAqLworICB2b2lkICgqZGVtdXhfcGFkX3JlbW92ZWQpIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqIGVuZ2luZSwKKyAgICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLCBncG9pbnRlciB1c2VyX2RhdGEpOworCisgIC8qKgorICAgKiBkZW11eF9zZW50X2RhdGE6IGNhbGxlZCBlYWNoIHRpbWUgdGhlIGRlbXV4IHNlbmRzIGRhdGEgdG8gQXBwU2luaworICAgKiBAZW5naW5lOiAjR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUKKyAgICogQHN0cmVhbTogI0dzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtCisgICAqIEBidWZmZXI6IHRoZSAjR3N0QnVmZmVyIHRoYXQgd2FzIHNlbnQgYnkgZGVtdXgKKyAgICogQHVzZXJfZGF0YTogdGhlIHVzZXJfZGF0YSBwYXNzZWQgdG8gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuKCkKKyAgICovCisgIGdib29sZWFuICgqZGVtdXhfc2VudF9kYXRhKSAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKmVuZ2luZSwKKyAgICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLAorICAgICAgR3N0QnVmZmVyICogYnVmZmVyLCBncG9pbnRlciB1c2VyX2RhdGEpOworCisgIC8qKgorICAgKiBidXNfZXJyb3JfbWVzc2FnZTogY2FsbGVkIGlmIGFuIGVycm9yIGlzIHBvc3RlZCB0byB0aGUgYnVzCisgICAqIEBlbmdpbmU6ICNHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZQorICAgKiBAbXNnOiB0aGUgI0dzdE1lc3NhZ2UgdGhhdCBjb250YWlucyB0aGUgZXJyb3IKKyAgICogQHVzZXJfZGF0YTogdGhlIHVzZXJfZGF0YSBwYXNzZWQgdG8gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuKCkKKyAgICoKKyAgICogVGhlIGNhbGxiYWNrIGNhbiBkZWNpZGUgaWYgdGhpcyBlcnJvciBpcyBleHBlY3RlZCwgb3IgdG8gZmFpbAorICAgKiB0aGUgdGVzdAorICAgKi8KKyAgdm9pZCAoKmJ1c19lcnJvcl9tZXNzYWdlKShHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqZW5naW5lLAorICAgICAgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKK30gR3N0QWRhcHRpdmVEZW11eFRlc3RDYWxsYmFja3M7CisKKy8qIHN0cnVjdHVyZSBjb250YWluaW5nIGFsbCBkYXRhIHVzZWQgYnkgYSB0ZXN0CisgKiBBbnkgY2FsbGJhY2sgZGVmaW5lZCBieSBhIHRlc3Qgd2lsbCByZWNlaXZlIHRoaXMgYXMgZmlyc3QgcGFyYW1ldGVyCisgKi8KK3N0cnVjdCBfR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUKK3sKKyAgR3N0RWxlbWVudCAqcGlwZWxpbmU7CisgIEdzdEVsZW1lbnQgKmRlbXV4OworICBHc3RFbGVtZW50ICptYW5pZmVzdF9zb3VyY2U7CisgIEdNYWluTG9vcCAqbG9vcDsKKyAgR1B0ckFycmF5ICpvdXRwdXRfc3RyZWFtczsgLyogR1B0ckFycmF5PEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtPiAqLworICAvKiBtdXRleCB0byBsb2NrIGFjY2Vzc2VzIHRvIHRoaXMgc3RydWN0dXJlIHdoZW4gZGF0YSBpcyBzaGFyZWQgCisgICAqIGJldHdlZW4gdGhyZWFkcyAqLworICBHTXV0ZXggbG9jazsKK307CisKKy8qKgorICogZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuOgorICogQGVsZW1lbnRfbmFtZTogVGhlIG5hbWUgb2YgdGhlIGRlbXV4IGVsZW1lbnQgKGUuZy4gImRhc2hkZW11eCIpCisgKiBAbWFuaWZlc3RfdXJpOiBUaGUgVVJJIG9mIHRoZSBtYW5pZmVzdCB0byBsb2FkCisgKiBAY2FsbGJhY2tzOiBUaGUgY2FsbGJhY2tzIHRvIHVzZSB3aGlsZSB0aGUgdGVzdCBpcyBpbiBvcGVyYXRpbmcKKyAqIEB1c2VyX2RhdGE6IE9wYXF1ZSBwb2ludGVyIHRoYXQgaXMgcGFzc2VkIHRvIGV2ZXJ5IGNhbGxiYWNrCisgKgorICogQ3JlYXRlcyBhIHBpcGVsaW5lIHdpdGggdGhlIHNwZWNpZmllZCBkZW11eCBlbGVtZW50IGluIGl0LAorICogY29ubmVjdCBhIHRlc3RodHRwc3JjIGVsZW1lbnQgdG8gdGhpcyBkZW11eCBlbGVtZW50IGFuZAorICogcmVxdWVzdCBtYW5pZmVzdF91cmkuIFdoZW4gdGhlIGRlbXV4IGVsZW1lbnQgYWRkcyBhIG5ldworICogcGFkLCB0aGUgZW5naW5lIHdpbGwgY3JlYXRlIGFuIEFwcFNpbmsgZWxlbWVudCBhbmQgYXR0YWNoCisgKiBpdCB0byB0aGlzIHBhZC4gCisgKgorICogSW5mb3JtYXRpb24gYWJvdXQgdGhlc2UgcGFkcyBpcyBjb2xsZWN0ZWQgaW4gCisgKiBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZTo6b3V0cHV0X3N0cmVhbXMKKyAqLwordm9pZCBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4gKGNvbnN0IGdjaGFyICogZWxlbWVudF9uYW1lLAorICAgIGNvbnN0IGdjaGFyICogbWFuaWZlc3RfdXJpLAorICAgIGNvbnN0IEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzICogY2FsbGJhY2tzLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKK0dfRU5EX0RFQ0xTCisjZW5kaWYgLyogX19HU1RfQURBUFRJVkVfREVNVVhfVEVTVF9FTkdJTkVfSF9fICovCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyLmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZmQ5M2EuLjAwMDAwMDAKLS0tIGEvdGVzdHMvY2hlY2svZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSA8MjAxMT4gU3RlZmFuIEtvc3QgPGVuc29uaWNAdXNlcnMuc2YubmV0PgotICoKLSAqIHVuaXQgdGVzdCBmb3IgdGhlIGJhc2VhdWRpb3Zpc3VhbGl6ZXIgY2xhc3MKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiLi4vLi4vZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0YXVkaW92aXN1YWxpemVyLmMiCi0jdW5kZWYgR1NUX0NBVF9ERUZBVUxUCi0KLSNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotLyogZHVtbXkgc3ViY2xhc3MgZm9yIHRlc3RpbmcgKi8KLQotI2RlZmluZSBHU1RfVFlQRV9URVNUX1NDT1BFICAgICAgICAgICAgKGdzdF90ZXN0X3Njb3BlX2dldF90eXBlKCkpCi0jZGVmaW5lIEdTVF9URVNUX1NDT1BFKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfVEVTVF9TQ09QRSxHc3RUZXN0U2NvcGUpKQotI2RlZmluZSBHU1RfVEVTVF9TQ09QRV9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfVEVTVF9TQ09QRSxHc3RUZXN0U2NvcGVDbGFzcykpCi10eXBlZGVmIHN0cnVjdCBfR3N0VGVzdFNjb3BlIEdzdFRlc3RTY29wZTsKLXR5cGVkZWYgc3RydWN0IF9Hc3RUZXN0U2NvcGVDbGFzcyBHc3RUZXN0U2NvcGVDbGFzczsKLQotc3RydWN0IF9Hc3RUZXN0U2NvcGUKLXsKLSAgR3N0QXVkaW9WaXN1YWxpemVyIHBhcmVudDsKLX07Ci0KLXN0cnVjdCBfR3N0VGVzdFNjb3BlQ2xhc3MKLXsKLSAgR3N0QXVkaW9WaXN1YWxpemVyQ2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF90ZXN0X3Njb3BlX3NyY190ZW1wbGF0ZSA9Ci1HU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCi0gICAgR1NUX1BBRF9TUkMsCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFICgieFJHQiIpKQotICAgICk7Ci0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfdGVzdF9zY29wZV9zaW5rX3RlbXBsYXRlID0KLUdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImF1ZGlvL3gtcmF3LCAiCi0gICAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSAiIEdTVF9BVURJT19ORSAoUzE2KSAiLCAiCi0gICAgICAgICJsYXlvdXQgPSAoc3RyaW5nKSBpbnRlcmxlYXZlZCwgIgotICAgICAgICAiY2hhbm5lbHMgPSAoaW50KSAyLCAiCi0gICAgICAgICJjaGFubmVsLW1hc2sgPSAoYml0bWFzaykgMywgIiAicmF0ZSA9IChpbnQpIDQ0MTAwIikKLSAgICApOwotCi1zdGF0aWMgR1R5cGUgZ3N0X3Rlc3Rfc2NvcGVfZ2V0X3R5cGUgKHZvaWQpOwotCi1HX0RFRklORV9UWVBFIChHc3RUZXN0U2NvcGUsIGdzdF90ZXN0X3Njb3BlLCBHU1RfVFlQRV9BVURJT19WSVNVQUxJWkVSKTsKLQotc3RhdGljIHZvaWQKLWdzdF90ZXN0X3Njb3BlX2NsYXNzX2luaXQgKEdzdFRlc3RTY29wZUNsYXNzICogZ19jbGFzcykKLXsKLSAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGdfY2xhc3MpOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsICJ0ZXN0IHNjb3BlIiwKLSAgICAgICJWaXN1YWxpemF0aW9uIiwKLSAgICAgICJEdW1teSB0ZXN0IHNjb3BlIiwgIlN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4iKTsKLQotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X3Rlc3Rfc2NvcGVfc3JjX3RlbXBsYXRlKSk7Ci0gIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCi0gICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfdGVzdF9zY29wZV9zaW5rX3RlbXBsYXRlKSk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfdGVzdF9zY29wZV9pbml0IChHc3RUZXN0U2NvcGUgKiBzY29wZSkKLXsKLSAgLyogZG8gbm90aGluZyAqLwotfQotCi0vKiB0ZXN0cyAqLwotI2RlZmluZSBDQVBTICJhdWRpby94LXJhdywgIiAgXAotICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgIiBHU1RfQVVESU9fTkUgKFMxNikgIiwgIiBcCi0gICAgICAgICJsYXlvdXQgPSAoc3RyaW5nKSBpbnRlcmxlYXZlZCwgIiBcCi0gICAgICAgICJyYXRlID0gKGludCkgNDQxMDAsICIgXAotICAgICAgICAiY2hhbm5lbHMgPSAoaW50KSAyLCAiIFwKLSAgICAgICAgImNoYW5uZWwtbWFzayA9IChiaXRtYXNrKSAzIgotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKLSAgICBHU1RfUEFEX1NJTkssCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcsICIKLSAgICAgICAgImZvcm1hdCA9IChzdHJpbmcpIHhSR0IsICIKLSAgICAgICAgIndpZHRoID0gKGludCkgMzIwLCAiCi0gICAgICAgICJoZWlnaHQgPSAoaW50KSAyNDAsICIgImZyYW1lcmF0ZSA9IChmcmFjdGlvbikgMzAvMSIpCi0gICAgKTsKLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmN0ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKLSAgICBHU1RfUEFEX1NSQywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKENBUFMpCi0gICAgKTsKLQotR1NUX1NUQVJUX1RFU1QgKGNvdW50X2luX291dCkKLXsKLSAgR3N0RWxlbWVudCAqZWxlbTsKLSAgR3N0UGFkICpzcmNwYWQsICpzaW5rcGFkOwotICBHc3RCdWZmZXIgKmJ1ZmZlcjsKLSAgR3N0Q2FwcyAqY2FwczsKLQotICAvKiBzZXR1cCB1cCAqLwotICBlbGVtID0gZ3N0X2NoZWNrX3NldHVwX2VsZW1lbnQgKCJ0ZXN0c2NvcGUiKTsKLSAgc3JjcGFkID0gZ3N0X2NoZWNrX3NldHVwX3NyY19wYWQgKGVsZW0sICZzcmN0ZW1wbGF0ZSk7Ci0gIHNpbmtwYWQgPSBnc3RfY2hlY2tfc2V0dXBfc2lua19wYWQgKGVsZW0sICZzaW5rdGVtcGxhdGUpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKHNyY3BhZCwgVFJVRSk7Ci0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAoc2lua3BhZCwgVFJVRSk7Ci0KLSAgZmFpbF91bmxlc3MgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoZWxlbSwKLSAgICAgICAgICBHU1RfU1RBVEVfUExBWUlORykgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTLAotICAgICAgImNvdWxkIG5vdCBzZXQgdG8gcGxheWluZyIpOwotCi0gIGNhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoQ0FQUyk7Ci0gIGdzdF9jaGVja19zZXR1cF9ldmVudHMgKHNyY3BhZCwgZWxlbSwgY2FwcywgR1NUX0ZPUk1BVF9USU1FKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotCi0gIC8qIHB1c2ggMXMgYXVkaW8gdG8gZ2V0IDMwIHZpZGVvLWZyYW1lcyAqLwotICBidWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKDQ0MTAwICogMiAqIHNpemVvZiAoZ2ludDE2KSk7Ci0gIEFTU0VSVF9CVUZGRVJfUkVGQ09VTlQgKGJ1ZmZlciwgImJ1ZmZlciIsIDEpOwotCi0gIC8qIHB1c2hpbmcgZ2l2ZXMgYXdheSBteSByZWZlcmVuY2UgLi4uICovCi0gIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2ggKHNyY3BhZCwgYnVmZmVyKSA9PSBHU1RfRkxPV19PSyk7Ci0gIC8qIC4uLiBidXQgaXQgZW5kcyB1cCBiZWluZyBjb2xsZWN0ZWQgb24gdGhlIGdsb2JhbCBidWZmZXIgbGlzdCAqLwotICBBU1NFUlRfQlVGRkVSX1JFRkNPVU5UIChidWZmZXIsICJidWZmZXIiLCAxKTsKLSAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksIDMwKTsKLQotICAvKiBjbGVhbiB1cCAqLwotICBnX2xpc3RfZm9yZWFjaCAoYnVmZmVycywgKEdGdW5jKSBnc3RfbWluaV9vYmplY3RfdW5yZWYsIE5VTEwpOwotICBnX2xpc3RfZnJlZSAoYnVmZmVycyk7Ci0gIGJ1ZmZlcnMgPSBOVUxMOwotCi0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAoc3JjcGFkLCBGQUxTRSk7Ci0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAoc2lua3BhZCwgRkFMU0UpOwotICBnc3RfY2hlY2tfdGVhcmRvd25fc3JjX3BhZCAoZWxlbSk7Ci0gIGdzdF9jaGVja190ZWFyZG93bl9zaW5rX3BhZCAoZWxlbSk7Ci0gIGdzdF9jaGVja190ZWFyZG93bl9lbGVtZW50IChlbGVtKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1zdGF0aWMgdm9pZAotYmFzZWF1ZGlvdmlzdWFsaXplcl9pbml0ICh2b2lkKQotewotICBnc3RfZWxlbWVudF9yZWdpc3RlciAoTlVMTCwgInRlc3RzY29wZSIsIEdTVF9SQU5LX05PTkUsIEdTVF9UWVBFX1RFU1RfU0NPUEUpOwotfQotCi1zdGF0aWMgU3VpdGUgKgotYmFzZWF1ZGlvdmlzdWFsaXplcl9zdWl0ZSAodm9pZCkKLXsKLSAgU3VpdGUgKnMgPSBzdWl0ZV9jcmVhdGUgKCJiYXNlYXVkaW92aXN1YWxpemVyIik7Ci0gIFRDYXNlICp0Y19jaGFpbiA9IHRjYXNlX2NyZWF0ZSAoImdlbmVyYWwiKTsKLQotICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2NoYWluKTsKLSAgdGNhc2VfYWRkX2NoZWNrZWRfZml4dHVyZSAodGNfY2hhaW4sIGJhc2VhdWRpb3Zpc3VhbGl6ZXJfaW5pdCwgTlVMTCk7Ci0KLSAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCBjb3VudF9pbl9vdXQpOwotCi0gIHJldHVybiBzOwotfQotCi0KLUdTVF9DSEVDS19NQUlOIChiYXNlYXVkaW92aXN1YWxpemVyKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2NvbXBvc2l0b3IuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2NvbXBvc2l0b3IuYwppbmRleCBjY2Q2OGExLi44YjVmZDViIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9lbGVtZW50cy9jb21wb3NpdG9yLmMKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvY29tcG9zaXRvci5jCkBAIC00NSw2ICs0NSwyNCBAQAogCiBzdGF0aWMgR01haW5Mb29wICptYWluX2xvb3A7CiAKK3N0YXRpYyBHc3RDYXBzICoKK19jb21wb3NpdG9yX2dldF9hbGxfc3VwcG9ydGVkX2NhcHMgKHZvaWQpCit7CisgIHJldHVybiBnc3RfY2Fwc19mcm9tX3N0cmluZyAoR1NUX1ZJREVPX0NBUFNfTUFLRQorICAgICAgKCIgeyBBWVVWLCBCR1JBLCBBUkdCLCBSR0JBLCBBQkdSLCBZNDQ0LCBZNDJCLCBZVVkyLCBVWVZZLCAiCisgICAgICAgICAgIiAgIFlWWVUsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFk0MUIsIFJHQiwgQkdSLCB4UkdCLCB4QkdSLCAiCisgICAgICAgICAgIiAgIFJHQngsIEJHUnggfSAiKSk7Cit9CisKK3N0YXRpYyBHc3RDYXBzICoKK19jb21wb3NpdG9yX2dldF9ub25fYWxwaGFfc3VwcG9ydGVkX2NhcHMgKHZvaWQpCit7CisgIHJldHVybiBnc3RfY2Fwc19mcm9tX3N0cmluZyAoR1NUX1ZJREVPX0NBUFNfTUFLRQorICAgICAgKCIgeyBZNDQ0LCBZNDJCLCBZVVkyLCBVWVZZLCAiCisgICAgICAgICAgIiAgIFlWWVUsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFk0MUIsIFJHQiwgQkdSLCB4UkdCLCB4QkdSLCAiCisgICAgICAgICAgIiAgIFJHQngsIEJHUnggfSAiKSk7Cit9CisKIC8qIG1ha2Ugc3VyZSBkb3duc3RyZWFtIGdldHMgYSBDQVBTIGV2ZW50IGJlZm9yZSBidWZmZXJzIGFyZSBzZW50ICovCiBHU1RfU1RBUlRfVEVTVCAodGVzdF9jYXBzKQogewpAQCAtMjQ1LDYgKzI2MywyMDggQEAKIAogR1NUX0VORF9URVNUOwogCitzdGF0aWMgR3N0QnVmZmVyICoKK2NyZWF0ZV92aWRlb19idWZmZXIgKEdzdENhcHMgKiBjYXBzLCBnaW50IHRzX2luX3NlY29uZHMpCit7CisgIEdzdFZpZGVvSW5mbyBpbmZvOworICBndWludCBzaXplOworICBHc3RCdWZmZXIgKmJ1ZjsKKyAgR3N0TWFwSW5mbyBtYXBpbmZvOworCisgIGZhaWxfdW5sZXNzIChnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZpbmZvLCBjYXBzKSk7CisKKyAgc2l6ZSA9IEdTVF9WSURFT19JTkZPX1dJRFRIICgmaW5mbykgKiBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZpbmZvKTsKKworICBzd2l0Y2ggKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJmluZm8pKSB7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQjoKKyAgICAgIHNpemUgKj0gMzsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BUkdCOgorICAgICAgc2l6ZSAqPSA0OworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0k0MjA6CisgICAgICBzaXplICo9IDI7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgZmFpbCAoIlVuc3VwcG9ydGVkIHRlc3QgZm9ybWF0Iik7CisgIH0KKworICBidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKHNpemUpOworICAvKiB3cml0ZSBzb21ldGhpbmcgdG8gYXZvaWQgdW5pbml0aWFsaXplZCBlcnJvciBpc3N1ZXMgKHZhbGdyaW5kKSAqLworICBnc3RfYnVmZmVyX21hcCAoYnVmLCAmbWFwaW5mbywgR1NUX01BUF9XUklURSk7CisgIG1lbXNldCAobWFwaW5mby5kYXRhLCAwLCBtYXBpbmZvLnNpemUpOworICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZtYXBpbmZvKTsKKworICBHU1RfQlVGRkVSX1BUUyAoYnVmKSA9IHRzX2luX3NlY29uZHMgKiBHU1RfU0VDT05EOworICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpID0gR1NUX1NFQ09ORDsKKyAgcmV0dXJuIGJ1ZjsKK30KKworCitHU1RfU1RBUlRfVEVTVCAodGVzdF9jYXBzX3F1ZXJ5KQoreworICBHc3RFbGVtZW50ICpjb21wb3NpdG9yLCAqY2Fwc2ZpbHRlciwgKnNpbms7CisgIEdzdEVsZW1lbnQgKnBpcGVsaW5lOworICBnYm9vbGVhbiByZXM7CisgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlX3JlczsKKyAgR3N0UGFkICpzaW5rcGFkOworICBHc3RDYXBzICpjYXBzLCAqcmVzdHJpY3Rpb25fY2FwczsKKyAgR3N0Q2FwcyAqYWxsX2NhcHMsICpub25fYWxwaGFfY2FwczsKKworICAvKiBpbml0aWFsIHNldHVwICovCisgIGFsbF9jYXBzID0gX2NvbXBvc2l0b3JfZ2V0X2FsbF9zdXBwb3J0ZWRfY2FwcyAoKTsKKyAgbm9uX2FscGhhX2NhcHMgPSBfY29tcG9zaXRvcl9nZXRfbm9uX2FscGhhX3N1cHBvcnRlZF9jYXBzICgpOworCisgIGNvbXBvc2l0b3IgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJjb21wb3NpdG9yIiwgImNvbXBvc2l0b3IiKTsKKyAgY2Fwc2ZpbHRlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImNhcHNmaWx0ZXIiLCAib3V0LWNmIik7CisgIHNpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJmYWtlc2luayIsICJzaW5rIik7CisgIHBpcGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldyAoInRlc3QtcGlwZWxpbmUiKTsKKworICBnc3RfYmluX2FkZF9tYW55IChHU1RfQklOIChwaXBlbGluZSksIGNvbXBvc2l0b3IsIGNhcHNmaWx0ZXIsIHNpbmssIE5VTEwpOworICByZXMgPSBnc3RfZWxlbWVudF9saW5rIChjb21wb3NpdG9yLCBjYXBzZmlsdGVyKTsKKyAgZmFpbF91bmxlc3MgKHJlcyA9PSBUUlVFLCBOVUxMKTsKKyAgcmVzID0gZ3N0X2VsZW1lbnRfbGluayAoY2Fwc2ZpbHRlciwgc2luayk7CisgIGZhaWxfdW5sZXNzIChyZXMgPT0gVFJVRSwgTlVMTCk7CisKKyAgc2lua3BhZCA9IGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZCAoY29tcG9zaXRvciwgInNpbmtfJXUiKTsKKworICBzdGF0ZV9yZXMgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHBpcGVsaW5lLCBHU1RfU1RBVEVfUExBWUlORyk7CisgIGZhaWxfaWYgKHN0YXRlX3JlcyA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpOworCisgIC8qIHRyeSBhbiB1bnJlc3RyaWN0ZWQgY2FwcyBxdWVyeSwgc2hvdWxkIHJldHVybiBhbGwgZm9ybWF0cyAqLworICBjYXBzID0gZ3N0X3BhZF9xdWVyeV9jYXBzIChzaW5rcGFkLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9jYXBzX2lzX2VxdWFsIChjYXBzLCBhbGxfY2FwcykpOworICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CisKKyAgLyogbm93IHJlc3RyaWN0IGRvd25zdHJlYW0gdG8gYSBzaW5nbGUgYWxwaGEgZm9ybWF0LCBpdCBzaG91bGQgc3RpbGwKKyAgICogYmUgYWJsZSB0byBjb252ZXJ0IGFueXRoaW5nIGVsc2UgdG8gaXQgKi8KKyAgcmVzdHJpY3Rpb25fY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKUFZVVYiKTsKKyAgZ19vYmplY3Rfc2V0IChjYXBzZmlsdGVyLCAiY2FwcyIsIHJlc3RyaWN0aW9uX2NhcHMsIE5VTEwpOworICBjYXBzID0gZ3N0X3BhZF9xdWVyeV9jYXBzIChzaW5rcGFkLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9jYXBzX2lzX2VxdWFsIChjYXBzLCBhbGxfY2FwcykpOworICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CisgIGdzdF9jYXBzX3VucmVmIChyZXN0cmljdGlvbl9jYXBzKTsKKworICAvKiBub3cgcmVzdHJpY3QgZG93bnN0cmVhbSB0byBhIG5vbi1hbHBoYSBmb3JtYXQsIGl0IHNob3VsZAorICAgKiBiZSBhYmxlIHRvIGFjY2VwdCBub24tYWxwaGEgZm9ybWF0cyAqLworICByZXN0cmljdGlvbl9jYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJ2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpSTQyMCIpOworICBnX29iamVjdF9zZXQgKGNhcHNmaWx0ZXIsICJjYXBzIiwgcmVzdHJpY3Rpb25fY2FwcywgTlVMTCk7CisgIGNhcHMgPSBnc3RfcGFkX3F1ZXJ5X2NhcHMgKHNpbmtwYWQsIE5VTEwpOworICBmYWlsX3VubGVzcyAoZ3N0X2NhcHNfaXNfZXF1YWwgKGNhcHMsIG5vbl9hbHBoYV9jYXBzKSk7CisgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKKyAgZ3N0X2NhcHNfdW5yZWYgKHJlc3RyaWN0aW9uX2NhcHMpOworCisgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAocGlwZWxpbmUsIEdTVF9TVEFURV9OVUxMKTsKKyAgZ3N0X2VsZW1lbnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCAoY29tcG9zaXRvciwgc2lua3BhZCk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHNpbmtwYWQpOworICBnc3Rfb2JqZWN0X3VucmVmIChwaXBlbGluZSk7CisgIGdzdF9jYXBzX3VucmVmIChhbGxfY2Fwcyk7CisgIGdzdF9jYXBzX3VucmVmIChub25fYWxwaGFfY2Fwcyk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworI2RlZmluZSBNT0RFX0FMTCAxCisjZGVmaW5lIE1PREVfTk9OX0FMUEhBIDIKKworc3RhdGljIHZvaWQKK3J1bl9sYXRlX2NhcHNfcXVlcnlfdGVzdCAoR3N0Q2FwcyAqIGlucHV0X2NhcHMsIEdzdENhcHMgKiBvdXRwdXRfYWxsb3dlZF9jYXBzLAorICAgIGdpbnQgZXhwZWN0ZWRfY2Fwc19tb2RlKQoreworICBHc3RFbGVtZW50ICpjb21wb3NpdG9yLCAqY2Fwc2ZpbHRlciwgKnNpbms7CisgIEdzdEVsZW1lbnQgKnBpcGVsaW5lOworICBnYm9vbGVhbiByZXM7CisgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlX3JlczsKKyAgR3N0UGFkICpzcmNwYWQxLCAqc3JjcGFkMjsKKyAgR3N0UGFkICpzaW5rcGFkMSwgKnNpbmtwYWQyOworICBHc3RTZWdtZW50IHNlZ21lbnQ7CisgIEdzdENhcHMgKmNhcHMsICphbGxfY2FwcywgKm5vbl9hbHBoYV9jYXBzOworCisgIGFsbF9jYXBzID0gX2NvbXBvc2l0b3JfZ2V0X2FsbF9zdXBwb3J0ZWRfY2FwcyAoKTsKKyAgbm9uX2FscGhhX2NhcHMgPSBfY29tcG9zaXRvcl9nZXRfbm9uX2FscGhhX3N1cHBvcnRlZF9jYXBzICgpOworCisgIGNvbXBvc2l0b3IgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJjb21wb3NpdG9yIiwgImNvbXBvc2l0b3IiKTsKKyAgY2Fwc2ZpbHRlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImNhcHNmaWx0ZXIiLCAib3V0LWNmIik7CisgIHNpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJmYWtlc2luayIsICJzaW5rIik7CisgIHBpcGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldyAoInRlc3QtcGlwZWxpbmUiKTsKKworICBnc3RfYmluX2FkZF9tYW55IChHU1RfQklOIChwaXBlbGluZSksIGNvbXBvc2l0b3IsIGNhcHNmaWx0ZXIsIHNpbmssIE5VTEwpOworICByZXMgPSBnc3RfZWxlbWVudF9saW5rIChjb21wb3NpdG9yLCBjYXBzZmlsdGVyKTsKKyAgZmFpbF91bmxlc3MgKHJlcyA9PSBUUlVFLCBOVUxMKTsKKyAgcmVzID0gZ3N0X2VsZW1lbnRfbGluayAoY2Fwc2ZpbHRlciwgc2luayk7CisgIGZhaWxfdW5sZXNzIChyZXMgPT0gVFJVRSwgTlVMTCk7CisKKyAgc2lua3BhZDEgPSBnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQgKGNvbXBvc2l0b3IsICJzaW5rXyV1Iik7CisgIHNyY3BhZDEgPSBnc3RfcGFkX25ldyAoInNyYzEiLCBHU1RfUEFEX1NSQyk7CisgIGZhaWxfdW5sZXNzIChnc3RfcGFkX2xpbmsgKHNyY3BhZDEsIHNpbmtwYWQxKSA9PSBHU1RfUEFEX0xJTktfT0spOworICBnc3RfcGFkX3NldF9hY3RpdmUgKHNyY3BhZDEsIFRSVUUpOworCisgIHN0YXRlX3JlcyA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZSAocGlwZWxpbmUsIEdTVF9TVEFURV9QTEFZSU5HKTsKKyAgZmFpbF9pZiAoc3RhdGVfcmVzID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSk7CisKKyAgaWYgKG91dHB1dF9hbGxvd2VkX2NhcHMpCisgICAgZ19vYmplY3Rfc2V0IChjYXBzZmlsdGVyLCAiY2FwcyIsIG91dHB1dF9hbGxvd2VkX2NhcHMsIE5VTEwpOworCisgIGdzdF9zZWdtZW50X2luaXQgKCZzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChzcmNwYWQxLAorICAgICAgICAgIGdzdF9ldmVudF9uZXdfc3RyZWFtX3N0YXJ0ICgidGVzdC0xIikpKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAoc3JjcGFkMSwgZ3N0X2V2ZW50X25ld19jYXBzIChpbnB1dF9jYXBzKSkpOworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChzcmNwYWQxLCBnc3RfZXZlbnRfbmV3X3NlZ21lbnQgKCZzZWdtZW50KSkpOworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoIChzcmNwYWQxLAorICAgICAgICAgIGNyZWF0ZV92aWRlb19idWZmZXIgKGlucHV0X2NhcHMsIDApKSA9PSBHU1RfRkxPV19PSyk7CisgIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2ggKHNyY3BhZDEsCisgICAgICAgICAgY3JlYXRlX3ZpZGVvX2J1ZmZlciAoaW5wdXRfY2FwcywgMSkpID09IEdTVF9GTE9XX09LKTsKKworICAvKiBub3cgY29tZXMgdGhlIHNlY29uZCBwYWQgKi8KKyAgc2lua3BhZDIgPSBnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQgKGNvbXBvc2l0b3IsICJzaW5rXyV1Iik7CisgIHNyY3BhZDIgPSBnc3RfcGFkX25ldyAoInNyYzIiLCBHU1RfUEFEX1NSQyk7CisgIGZhaWxfdW5sZXNzIChnc3RfcGFkX2xpbmsgKHNyY3BhZDIsIHNpbmtwYWQyKSA9PSBHU1RfUEFEX0xJTktfT0spOworICBnc3RfcGFkX3NldF9hY3RpdmUgKHNyY3BhZDIsIFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChzcmNwYWQyLAorICAgICAgICAgIGdzdF9ldmVudF9uZXdfc3RyZWFtX3N0YXJ0ICgidGVzdC0yIikpKTsKKworICBjYXBzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKHNyY3BhZDIsIE5VTEwpOworICBmYWlsX3VubGVzcyAoZ3N0X2NhcHNfaXNfZXF1YWwgKGNhcHMsCisgICAgICAgICAgZXhwZWN0ZWRfY2Fwc19tb2RlID09IE1PREVfQUxMID8gYWxsX2NhcHMgOiBub25fYWxwaGFfY2FwcykpOworICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CisKKyAgZ3N0X3BhZF9zZXRfYWN0aXZlIChzcmNwYWQxLCBGQUxTRSk7CisgIGdzdF9wYWRfc2V0X2FjdGl2ZSAoc3JjcGFkMiwgRkFMU0UpOworICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHBpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7CisgIGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVzdF9wYWQgKGNvbXBvc2l0b3IsIHNpbmtwYWQxKTsKKyAgZ3N0X2VsZW1lbnRfcmVsZWFzZV9yZXF1ZXN0X3BhZCAoY29tcG9zaXRvciwgc2lua3BhZDIpOworICBnc3Rfb2JqZWN0X3VucmVmIChzaW5rcGFkMSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHNpbmtwYWQyKTsKKyAgZ3N0X29iamVjdF91bnJlZiAocGlwZWxpbmUpOworICBnc3Rfb2JqZWN0X3VucmVmIChzcmNwYWQxKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoc3JjcGFkMik7CisgIGdzdF9jYXBzX3VucmVmIChhbGxfY2Fwcyk7CisgIGdzdF9jYXBzX3VucmVmIChub25fYWxwaGFfY2Fwcyk7Cit9CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X2xhdGVfY2Fwc19xdWVyeSkKK3sKKyAgR3N0Q2FwcyAqcmdiX2NhcHM7CisgIEdzdENhcHMgKm5vbl9hbHBoYV9jYXBzOworCisgIHJnYl9jYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJ2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpUkdCLCAiCisgICAgICAid2lkdGg9KGludCkxMDAsIGhlaWdodD0oaW50KTEwMCwgZnJhbWVyYXRlPShmcmFjdGlvbikxLzEiKTsKKworICBub25fYWxwaGFfY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVJHQiIpOworCisgIC8qIGNoZWNrIHRoYXQgYSAybmQgcGFkIHRoYXQgaXMgYWRkZWQgbGF0ZSB0byBjb21wb3NpdG9yIHdpbGwgYmUgYWJsZSB0bworICAgKiBuZWdvdGlhdGUgdG8gZm9ybWF0cyB0aGF0IGRlcGVuZCBvbmx5IG9uIGRvd25zdHJlYW0gY2FwcyBhbmQgbm90IG9uIHdoYXQKKyAgICogdGhlIG90aGVyIHBhZHMgaGF2ZSBhbHJlYWR5IG5lZ290aWF0ZWQgKi8KKyAgcnVuX2xhdGVfY2Fwc19xdWVyeV90ZXN0IChyZ2JfY2FwcywgTlVMTCwgTU9ERV9BTEwpOworICBydW5fbGF0ZV9jYXBzX3F1ZXJ5X3Rlc3QgKHJnYl9jYXBzLCBub25fYWxwaGFfY2FwcywgTU9ERV9OT05fQUxQSEEpOworCisgIGdzdF9jYXBzX3VucmVmIChub25fYWxwaGFfY2Fwcyk7CisgIGdzdF9jYXBzX3VucmVmIChyZ2JfY2Fwcyk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKwogc3RhdGljIGd1aW50IHBsYXlfY291bnQgPSAwOwogc3RhdGljIEdzdEV2ZW50ICpwbGF5X3NlZWtfZXZlbnQgPSBOVUxMOwogCkBAIC0xNDQ0LDYgKzE2NjQsNTAgQEAKIAogR1NUX0VORF9URVNUOwogCisvKiBUZXN0IHRoYXQgdGhlIEdTVF9FTEVNRU5UKHZhZ2cpLT5zaW5rcGFkcyBHTGlzdCBpcyBhbHdheXMgc29ydGVkIGJ5IHpvcmRlciAqLworR1NUX1NUQVJUX1RFU1QgKHRlc3RfcGFkX3pfb3JkZXIpCit7CisgIEdzdEVsZW1lbnQgKmNvbXBvc2l0b3I7CisgIEdzdFBhZCAqc2lua3BhZDEsICpzaW5rcGFkMiwgKnNpbmtwYWQzOworICBndWludCB6b3JkZXIxLCB6b3JkZXIyOworICBHTGlzdCAqc2lua3BhZHM7CisKKyAgR1NUX0lORk8gKCJwcmVwYXJpbmcgdGVzdCIpOworCisgIGNvbXBvc2l0b3IgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJjb21wb3NpdG9yIiwgTlVMTCk7CisgIHNpbmtwYWQxID0gZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkIChjb21wb3NpdG9yLCAic2lua18ldSIpOworICBzaW5rcGFkMiA9IGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZCAoY29tcG9zaXRvciwgInNpbmtfJXUiKTsKKworICAvKiBQYWRzIHJlcXVlc3RlZCBsYXRlciBoYXZlIGEgaGlnaGVyIHotb3JkZXIgdGhhbiBlYXJsaWVyIG9uZXMgYnkgZGVmYXVsdCAqLworICBnX29iamVjdF9nZXQgKHNpbmtwYWQxLCAiem9yZGVyIiwgJnpvcmRlcjEsIE5VTEwpOworICBnX29iamVjdF9nZXQgKHNpbmtwYWQyLCAiem9yZGVyIiwgJnpvcmRlcjIsIE5VTEwpOworICBja19hc3NlcnRfaW50X2d0ICh6b3JkZXIyLCB6b3JkZXIxKTsKKyAgc2lua3BhZHMgPSBHU1RfRUxFTUVOVCAoY29tcG9zaXRvciktPnNpbmtwYWRzOworICBja19hc3NlcnRfcHRyX2VxIChzaW5rcGFkcy0+ZGF0YSwgc2lua3BhZDEpOworICBja19hc3NlcnRfcHRyX2VxIChzaW5rcGFkcy0+bmV4dC0+ZGF0YSwgc2lua3BhZDIpOworCisgIC8qIE1ha2Ugc2lua3BhZDEncyB6b3JkZXIgdGhlIGxhcmdlc3QsIHdoaWNoIHNob3VsZCByZS1zb3J0IHRoZSBzaW5rcGFkcyAqLworICBnX29iamVjdF9zZXQgKHNpbmtwYWQxLCAiem9yZGVyIiwgem9yZGVyMiArIDEsIE5VTEwpOworICBzaW5rcGFkcyA9IEdTVF9FTEVNRU5UIChjb21wb3NpdG9yKS0+c2lua3BhZHM7CisgIGNrX2Fzc2VydF9wdHJfZXEgKHNpbmtwYWRzLT5kYXRhLCBzaW5rcGFkMik7CisgIGNrX2Fzc2VydF9wdHJfZXEgKHNpbmtwYWRzLT5uZXh0LT5kYXRhLCBzaW5rcGFkMSk7CisKKyAgLyogR2V0IGEgbmV3IHBhZCwgd2hpY2ggc2hvdWxkIGJlIHRoZSBoaWdoZXN0IHBhZCBub3cgKi8KKyAgc2lua3BhZDMgPSBnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQgKGNvbXBvc2l0b3IsICJzaW5rXyV1Iik7CisgIHNpbmtwYWRzID0gR1NUX0VMRU1FTlQgKGNvbXBvc2l0b3IpLT5zaW5rcGFkczsKKyAgY2tfYXNzZXJ0X3B0cl9lcSAoc2lua3BhZHMtPmRhdGEsIHNpbmtwYWQyKTsKKyAgY2tfYXNzZXJ0X3B0cl9lcSAoc2lua3BhZHMtPm5leHQtPmRhdGEsIHNpbmtwYWQxKTsKKyAgY2tfYXNzZXJ0X3B0cl9lcSAoc2lua3BhZHMtPm5leHQtPm5leHQtPmRhdGEsIHNpbmtwYWQzKTsKKworICAvKiBjbGVhbnVwICovCisgIGdzdF9vYmplY3RfdW5yZWYgKGNvbXBvc2l0b3IpOworICBnc3Rfb2JqZWN0X3VucmVmIChzaW5rcGFkMSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHNpbmtwYWQyKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoc2lua3BhZDMpOworfQorCitHU1RfRU5EX1RFU1Q7CisKIHR5cGVkZWYgc3RydWN0CiB7CiAgIGdpbnQgYnVmZmVyc19zZW50OwpAQCAtMTYxNiw2ICsxODgwLDggQEAKICAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19jaGFpbik7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9jYXBzKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2V2ZW50KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2NhcHNfcXVlcnkpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfbGF0ZV9jYXBzX3F1ZXJ5KTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3BsYXlfdHdpY2UpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfcGxheV90d2ljZV90aGVuX2FkZF9hbmRfcGxheV9hZ2Fpbik7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9hZGRfcGFkKTsKQEAgLTE2MjgsNiArMTg5NCw3IEBACiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9zZWdtZW50X2Jhc2VfaGFuZGxpbmcpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3Rfb2JzY3VyZWRfc2tpcHBlZCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9pZ25vcmVfZW9zKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3BhZF96X29yZGVyKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3N0YXJ0X3RpbWVfemVyb19saXZlX2Ryb3BfMCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9zdGFydF90aW1lX3plcm9fbGl2ZV9kcm9wXzMpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3Rfc3RhcnRfdGltZV96ZXJvX2xpdmVfZHJvcF8zX3VubGlua2VkXzEpOwpAQCAtMTYzNSwxNyArMTkwMiw2IEBACiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9zdGFydF90aW1lX2ZpcnN0X2xpdmVfZHJvcF8zKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3N0YXJ0X3RpbWVfZmlyc3RfbGl2ZV9kcm9wXzNfdW5saW5rZWRfMSk7CiAKLSAgLyogVXNlIGEgbG9uZ2VyIHRpbWVvdXQgKi8KLSNpZmRlZiBIQVZFX1ZBTEdSSU5ECi0gIGlmIChSVU5OSU5HX09OX1ZBTEdSSU5EKSB7Ci0gICAgdGNhc2Vfc2V0X3RpbWVvdXQgKHRjX2NoYWluLCA1ICogNjApOwotICB9IGVsc2UKLSNlbmRpZgotICB7Ci0gICAgLyogdGhpcyBpcyBzaG9ydGVyIHRoYW4gdGhlIGRlZmF1bHQgNjAgc2Vjb25kcz8hICh0cG0pICovCi0gICAgLyogdGNhc2Vfc2V0X3RpbWVvdXQgKHRjX2NoYWluLCA2KTsgKi8KLSAgfQotCiAgIHJldHVybiBzOwogfQogCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9jdXJsZnRwc2luay5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvY3VybGZ0cHNpbmsuYwppbmRleCBmODcwNmY3Li4xODVhMTUyIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9lbGVtZW50cy9jdXJsZnRwc2luay5jCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2N1cmxmdHBzaW5rLmMKQEAgLTYzLDggKzYzLDcgQEAKICAgICAgICJlcHN2LW1vZGUiLCAmcmVzX2Vwc3ZfbW9kZSwKICAgICAgICJjcmVhdGUtZGlycyIsICZyZXNfY3JlYXRlX2RpcnMsCiAgICAgICAiY3JlYXRlLXRtcC1maWxlIiwgJnJlc19jcmVhdGVfdG1wZmlsZSwKLSAgICAgICJ0ZW1wLWZpbGUtbmFtZSIsICZyZXNfdG1wX2ZpbGVfbmFtZSwKLSAgICAgIE5VTEwpOworICAgICAgInRlbXAtZmlsZS1uYW1lIiwgJnJlc190bXBfZmlsZV9uYW1lLCBOVUxMKTsKIAogICBmYWlsX3VubGVzcyAoc3RybmNtcCAocmVzX2xvY2F0aW9uLCAibXlsb2NhdGlvbiIsIHN0cmxlbiAoIm15bG9jYXRpb24iKSkKICAgICAgID09IDApOwpAQCAtNzIsMTIgKzcxLDEzIEBACiAgICAgICA9PSAwKTsKICAgZmFpbF91bmxlc3MgKHN0cm5jbXAgKHJlc19mdHBfcG9ydCwgIjEuMi4zLjQ6MCIsIHN0cmxlbiAoIjEuMi4zLjQ6MCIpKQogICAgICAgPT0gMCk7Ci0gIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfdG1wX2ZpbGVfbmFtZSwgInRlc3RfdG1wX2ZpbGVfIiwgc3RybGVuICgidGVzdF90bXBfZmlsZV8iKSkKKyAgZmFpbF91bmxlc3MgKHN0cm5jbXAgKHJlc190bXBfZmlsZV9uYW1lLCAidGVzdF90bXBfZmlsZV8iLAorICAgICAgICAgIHN0cmxlbiAoInRlc3RfdG1wX2ZpbGVfIikpCiAgICAgICA9PSAwKTsKICAgZmFpbF91bmxlc3MgKHJlc19lcHN2X21vZGUgPT0gRkFMU0UpOwogICBmYWlsX3VubGVzcyAocmVzX2NyZWF0ZV9kaXJzID09IEZBTFNFKTsKICAgZmFpbF91bmxlc3MgKHJlc19jcmVhdGVfdG1wZmlsZSA9PSBGQUxTRSk7Ci0gIAorCiAgIGdfZnJlZSAocmVzX2xvY2F0aW9uKTsKICAgZ19mcmVlIChyZXNfZmlsZV9uYW1lKTsKICAgZ19mcmVlIChyZXNfZnRwX3BvcnQpOwpAQCAtOTksOCArOTksNyBAQAogICAgICAgImVwc3YtbW9kZSIsICZyZXNfZXBzdl9tb2RlLAogICAgICAgImNyZWF0ZS1kaXJzIiwgJnJlc19jcmVhdGVfZGlycywKICAgICAgICJjcmVhdGUtdG1wLWZpbGUiLCAmcmVzX2NyZWF0ZV90bXBmaWxlLAotICAgICAgInRlbXAtZmlsZS1uYW1lIiwgJnJlc190bXBfZmlsZV9uYW1lLAotICAgICAgTlVMTCk7CisgICAgICAidGVtcC1maWxlLW5hbWUiLCAmcmVzX3RtcF9maWxlX25hbWUsIE5VTEwpOwogCiAgIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfbG9jYXRpb24sICJuZXdsb2NhdGlvbiIsIHN0cmxlbiAoIm5ld2xvY2F0aW9uIikpCiAgICAgICA9PSAwKTsKQEAgLTEwOCwxMyArMTA3LDE0IEBACiAgICAgICA9PSAwKTsKICAgZmFpbF91bmxlc3MgKHN0cm5jbXAgKHJlc19mdHBfcG9ydCwgIiIsIHN0cmxlbiAoIiIpKQogICAgICAgPT0gMCk7Ci0gIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfdG1wX2ZpbGVfbmFtZSwgInRlc3RfdG1wX2ZpbGVfIiwgc3RybGVuICgidGVzdF90bXBfZmlsZV8iKSkKKyAgZmFpbF91bmxlc3MgKHN0cm5jbXAgKHJlc190bXBfZmlsZV9uYW1lLCAidGVzdF90bXBfZmlsZV8iLAorICAgICAgICAgIHN0cmxlbiAoInRlc3RfdG1wX2ZpbGVfIikpCiAgICAgICA9PSAwKTsKICAgZmFpbF91bmxlc3MgKHJlc19lcHN2X21vZGUgPT0gVFJVRSk7CiAgIGZhaWxfdW5sZXNzIChyZXNfY3JlYXRlX2RpcnMgPT0gVFJVRSk7CiAgIGZhaWxfdW5sZXNzIChyZXNfY3JlYXRlX2RpcnMgPT0gVFJVRSk7CiAgIGZhaWxfdW5sZXNzIChyZXNfY3JlYXRlX3RtcGZpbGUgPT0gVFJVRSk7Ci0gIAorCiAgIGdfZnJlZSAocmVzX2xvY2F0aW9uKTsKICAgZ19mcmVlIChyZXNfZmlsZV9uYW1lKTsKICAgZ19mcmVlIChyZXNfZnRwX3BvcnQpOwpAQCAtMTIyLDYgKzEyMiw3IEBACiAKICAgY2xlYW51cF9jdXJsZnRwc2luayAoc2luayk7CiB9CisKIEdTVF9FTkRfVEVTVDsKIAogc3RhdGljIFN1aXRlICoKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2N1cmxodHRwc2luay5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvY3VybGh0dHBzaW5rLmMKaW5kZXggZmNkYjZlMS4uNjgzNzBmYiAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svZWxlbWVudHMvY3VybGh0dHBzaW5rLmMKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvY3VybGh0dHBzaW5rLmMKQEAgLTU0LDE2ICs1NCwxNCBAQAogCiAgIGdfb2JqZWN0X3NldCAoR19PQkpFQ1QgKHNpbmspLAogICAgICAgImxvY2F0aW9uIiwgIm15bG9jYXRpb24iLAotICAgICAgImZpbGUtbmFtZSIsIm15ZmlsZSIsCisgICAgICAiZmlsZS1uYW1lIiwgIm15ZmlsZSIsCiAgICAgICAidXNlciIsICJ1c2VyIiwKICAgICAgICJwYXNzd2QiLCAicGFzc3dkIiwKICAgICAgICJwcm94eSIsICJteXByb3h5IiwKICAgICAgICJwcm94eS1wb3J0IiwgNzc3NywKICAgICAgICJwcm94eS11c2VyIiwgInByb3h5X3VzZXIiLAogICAgICAgInByb3h5LXBhc3N3ZCIsICJwcm94eV9wYXNzd2QiLAotICAgICAgImNvbnRlbnQtdHlwZSIsICJpbWFnZS9qcGVnIiwKLSAgICAgICJ1c2UtY29udGVudC1sZW5ndGgiLCBUUlVFLAotICAgICAgTlVMTCk7CisgICAgICAiY29udGVudC10eXBlIiwgImltYWdlL2pwZWciLCAidXNlLWNvbnRlbnQtbGVuZ3RoIiwgVFJVRSwgTlVMTCk7CiAKICAgZ19vYmplY3RfZ2V0IChzaW5rLAogICAgICAgImxvY2F0aW9uIiwgJnJlc19sb2NhdGlvbiwKQEAgLTc1LDggKzczLDcgQEAKICAgICAgICJwcm94eS11c2VyIiwgJnJlc19wcm94eV91c2VyLAogICAgICAgInByb3h5LXBhc3N3ZCIsICZyZXNfcHJveHlfcGFzc3dkLAogICAgICAgImNvbnRlbnQtdHlwZSIsICZyZXNfY29udGVudF90eXBlLAotICAgICAgInVzZS1jb250ZW50LWxlbmd0aCIsICZyZXNfdXNlX2NvbnRlbnRfbGVuZ3RoLAotICAgICAgTlVMTCk7CisgICAgICAidXNlLWNvbnRlbnQtbGVuZ3RoIiwgJnJlc191c2VfY29udGVudF9sZW5ndGgsIE5VTEwpOwogCiAgIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfbG9jYXRpb24sICJteWxvY2F0aW9uIiwgc3RybGVuICgibXlsb2NhdGlvbiIpKQogICAgICAgPT0gMCk7CkBAIC04OSw3ICs4Niw3IEBACiAgIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfcHJveHlfdXNlciwgInByb3h5X3VzZXIiLCBzdHJsZW4gKCJwcm94eV91c2VyIikpCiAgICAgICA9PSAwKTsKICAgZmFpbF91bmxlc3MgKHN0cm5jbXAgKHJlc19wcm94eV9wYXNzd2QsICJwcm94eV9wYXNzd2QiLAotICAgICAgICBzdHJsZW4gKCJwcm94eV9wYXNzd2QiKSkgPT0gMCk7CisgICAgICAgICAgc3RybGVuICgicHJveHlfcGFzc3dkIikpID09IDApOwogICBmYWlsX3VubGVzcyAoc3RybmNtcCAocmVzX2NvbnRlbnRfdHlwZSwgImltYWdlL2pwZWciLCBzdHJsZW4gKCJpbWFnZS9qcGVnIikpCiAgICAgICA9PSAwKTsKICAgZmFpbF91bmxlc3MgKHJlc191c2VfY29udGVudF9sZW5ndGggPT0gVFJVRSk7CkBAIC0xMTgsNiArMTE1LDcgQEAKIAogICBjbGVhbnVwX2N1cmxodHRwc2luayAoc2luayk7CiB9CisKIEdTVF9FTkRfVEVTVDsKIAogc3RhdGljIFN1aXRlICoKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2N1cmxzbXRwc2luay5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvY3VybHNtdHBzaW5rLmMKaW5kZXggZTUyNjMyNy4uNDUwYjcyMSAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svZWxlbWVudHMvY3VybHNtdHBzaW5rLmMKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvY3VybHNtdHBzaW5rLmMKQEAgLTgwLDkgKzgwLDcgQEAKICAgICAgICJuYnItYXR0YWNobWVudHMiLCAmcmVzX25icl9hdHRhY2gsCiAgICAgICAidXNlLXNzbCIsICZyZXNfdXNlX3NzbCwKICAgICAgICJwb3AtbG9jYXRpb24iLCAmcmVzX3BvcF9sb2NhdGlvbiwKLSAgICAgICJwb3BfdXNlciIsICZyZXNfcG9wX3VzciwKLSAgICAgICJwb3AtcGFzc3dkIiwgJnJlc19wb3BfcGFzc3dkLAotICAgICAgTlVMTCk7CisgICAgICAicG9wX3VzZXIiLCAmcmVzX3BvcF91c3IsICJwb3AtcGFzc3dkIiwgJnJlc19wb3BfcGFzc3dkLCBOVUxMKTsKIAogICBmYWlsX3VubGVzcyAoc3RybmNtcCAocmVzX2xvY2F0aW9uLCAibXlsb2NhdGlvbiIsIHN0cmxlbiAoIm15bG9jYXRpb24iKSkKICAgICAgID09IDApOwpAQCAtMTQ3LDkgKzE0NSw3IEBACiAgICAgICAic3ViamVjdCIsICZyZXNfc3ViaiwKICAgICAgICJ1c2Utc3NsIiwgJnJlc191c2Vfc3NsLAogICAgICAgIm1lc3NhZ2UtYm9keSIsICZyZXNfbXNnLAotICAgICAgIm1haWwtZnJvbSIsICZyZXNfbWFpbF9mcm9tLAotICAgICAgIm1haWwtcmNwdCIsICZyZXNfbWFpbF9yY3B0LAotICAgICAgTlVMTCk7CisgICAgICAibWFpbC1mcm9tIiwgJnJlc19tYWlsX2Zyb20sICJtYWlsLXJjcHQiLCAmcmVzX21haWxfcmNwdCwgTlVMTCk7CiAKICAgZmFpbF91bmxlc3MgKHN0cm5jbXAgKHJlc19sb2NhdGlvbiwgIm5ld2xvY2F0aW9uIiwgc3RybGVuICgibmV3bG9jYXRpb24iKSkKICAgICAgID09IDApOwpAQCAtMTYwLDcgKzE1Niw3IEBACiAgIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfcGFzc3dkLCAibmV3cGFzc3dkIiwgc3RybGVuICgibmV3cGFzc3dkIikpCiAgICAgICA9PSAwKTsKICAgZmFpbF91bmxlc3MgKHN0cm5jbXAgKHJlc19tYWlsX3JjcHQsICJyY3B0MSxyY3B0MixyY3B0MyIsCi0gICAgICBzdHJsZW4gKCJyY3B0MSxyY3B0MixyY3B0MyIpKSA9PSAwKTsKKyAgICAgICAgICBzdHJsZW4gKCJyY3B0MSxyY3B0MixyY3B0MyIpKSA9PSAwKTsKICAgZmFpbF91bmxlc3MgKHN0cm5jbXAgKHJlc19tYWlsX2Zyb20sICJuZXdzZW5kZXIiLCBzdHJsZW4gKCJuZXdzZW5kZXIiKSkKICAgICAgID09IDApOwogICBmYWlsX3VubGVzcyAoc3RybmNtcCAocmVzX3N1YmosICJuZXdzdWJqZWN0Iiwgc3RybGVuICgibmV3c3ViamVjdCIpKQpAQCAtMTkwLDYgKzE4Niw3IEBACiAKICAgY2xlYW51cF9jdXJsc210cHNpbmsgKHNpbmspOwogfQorCiBHU1RfRU5EX1RFU1Q7CiAKIHN0YXRpYyBTdWl0ZSAqCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYxZTEyZQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfZGVtdXguYwpAQCAtMCwwICsxLDEwMjggQEAKKy8qIEdTdHJlYW1lciB1bml0IHRlc3QgZm9yIE1QRUctREFTSAorICoKKyAqIENvcHlyaWdodCAoYykgPDIwMTU+IFlvdVZpZXcgVFYgTHRkCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RjaGVjay5oPgorI2luY2x1ZGUgImFkYXB0aXZlX2RlbXV4X2NvbW1vbi5oIgorCisjZGVmaW5lIERFTVVYX0VMRU1FTlRfTkFNRSAiZGFzaGRlbXV4IgorCisjZGVmaW5lIENPUFlfT1VUUFVUX1RFU1RfREFUQShvdXRwdXRUZXN0RGF0YSx0ZXN0RGF0YSkgZG8geyBcCisgICAgZ3VpbnQgb3RkUG9zLCBvdGRMZW4gPSBzaXplb2YoKG91dHB1dFRlc3REYXRhKSkgLyBzaXplb2YoKG91dHB1dFRlc3REYXRhKVswXSk7IFwKKyAgICBmb3Iob3RkUG9zPTA7IG90ZFBvczxvdGRMZW47ICsrb3RkUG9zKXsgXAorICAodGVzdERhdGEpLT5vdXRwdXRfc3RyZWFtcyA9IGdfbGlzdF9hcHBlbmQgKCh0ZXN0RGF0YSktPm91dHB1dF9zdHJlYW1zLCAmKG91dHB1dFRlc3REYXRhKVtvdGRQb3NdKTsgXAorICAgIH0gXAorICB9IHdoaWxlKDApCisKK3R5cGVkZWYgc3RydWN0IF9Hc3REYXNoRGVtdXhUZXN0SW5wdXREYXRhCit7CisgIGNvbnN0IGdjaGFyICp1cmk7CisgIGNvbnN0IGd1aW50OCAqcGF5bG9hZDsKKyAgZ3VpbnQ2NCBzaXplOworfSBHc3REYXNoRGVtdXhUZXN0SW5wdXREYXRhOworCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9kYXNoZGVtdXhfaHR0cF9zcmNfc3RhcnQgKEdzdFRlc3RIVFRQU3JjICogc3JjLAorICAgIGNvbnN0IGdjaGFyICogdXJpLCBHc3RUZXN0SFRUUFNyY0lucHV0ICogaW5wdXRfZGF0YSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBjb25zdCBHc3REYXNoRGVtdXhUZXN0SW5wdXREYXRhICppbnB1dCA9CisgICAgICAoY29uc3QgR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YSAqKSB1c2VyX2RhdGE7CisgIGZvciAoZ3VpbnQgaSA9IDA7IGlucHV0W2ldLnVyaTsgKytpKSB7CisgICAgaWYgKHN0cmNtcCAoaW5wdXRbaV0udXJpLCB1cmkpID09IDApIHsKKyAgICAgIGlucHV0X2RhdGEtPmNvbnRleHQgPSAoZ3BvaW50ZXIpICYgaW5wdXRbaV07CisgICAgICBpbnB1dF9kYXRhLT5zaXplID0gaW5wdXRbaV0uc2l6ZTsKKyAgICAgIGlmIChpbnB1dFtpXS5zaXplID09IDApCisgICAgICAgIGlucHV0X2RhdGEtPnNpemUgPSBzdHJsZW4gKChnY2hhciAqKSBpbnB1dFtpXS5wYXlsb2FkKTsKKyAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyAgfQorICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX2NyZWF0ZSAoR3N0VGVzdEhUVFBTcmMgKiBzcmMsCisgICAgZ3VpbnQ2NCBvZmZzZXQsCisgICAgZ3VpbnQgbGVuZ3RoLCBHc3RCdWZmZXIgKiogcmV0YnVmLCBncG9pbnRlciBjb250ZXh0LCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIC8qICBjb25zdCBHc3REYXNoRGVtdXhUZXN0SW5wdXREYXRhICppbnB1dCA9CisgICAgIChjb25zdCBHc3REYXNoRGVtdXhUZXN0SW5wdXREYXRhICopIHVzZXJfZGF0YTsgKi8KKyAgY29uc3QgR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YSAqaW5wdXQgPQorICAgICAgKGNvbnN0IEdzdERhc2hEZW11eFRlc3RJbnB1dERhdGEgKikgY29udGV4dDsKKyAgR3N0QnVmZmVyICpidWY7CisKKyAgYnVmID0gZ3N0X2J1ZmZlcl9uZXdfYWxsb2NhdGUgKE5VTEwsIGxlbmd0aCwgTlVMTCk7CisgIGZhaWxfaWYgKGJ1ZiA9PSBOVUxMLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgYnVmZmVyIik7CisKKyAgaWYgKGlucHV0LT5wYXlsb2FkKSB7CisgICAgZ3N0X2J1ZmZlcl9maWxsIChidWYsIDAsIGlucHV0LT5wYXlsb2FkICsgb2Zmc2V0LCBsZW5ndGgpOworICB9IGVsc2UgeworICAgIEdzdE1hcEluZm8gaW5mbzsKKyAgICBndWludCBwYXR0ZXJuOworCisgICAgcGF0dGVybiA9IG9mZnNldCAtIG9mZnNldCAlIHNpemVvZiAocGF0dGVybik7CisKKyAgICBnc3RfYnVmZmVyX21hcCAoYnVmLCAmaW5mbywgR1NUX01BUF9XUklURSk7CisgICAgZm9yIChndWludDY0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgIGdjaGFyIHBhdHRlcm5fYnl0ZV90b193cml0ZSA9IChvZmZzZXQgKyBpKSAlIHNpemVvZiAocGF0dGVybik7CisgICAgICBpZiAocGF0dGVybl9ieXRlX3RvX3dyaXRlID09IDApIHsKKyAgICAgICAgcGF0dGVybiA9IG9mZnNldCArIGk7CisgICAgICB9CisgICAgICBpbmZvLmRhdGFbaV0gPSAocGF0dGVybiA+PiAocGF0dGVybl9ieXRlX3RvX3dyaXRlICogOCkpICYgMHhGRjsKKyAgICB9CisgICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmaW5mbyk7CisgIH0KKyAgKnJldGJ1ZiA9IGJ1ZjsKKyAgcmV0dXJuIEdTVF9GTE9XX09LOworfQorCisvKioqKioqKioqKioqKioqKioqKiogVGVzdCBzcGVjaWZpYyBjb2RlIHN0YXJ0cyBoZXJlICoqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogVGVzdCBhbiBtcGQgd2l0aCBhbiBhdWRpbyBhbmQgYSB2aWRlbyBzdHJlYW0KKyAqCisgKi8KK0dTVF9TVEFSVF9URVNUIChzaW1wbGVUZXN0KQoreworICBjb25zdCBnY2hhciAqbXBkID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz4iCisgICAgICAiPE1QRCB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiIgorICAgICAgIiAgICAgeG1sbnM9XCJ1cm46bXBlZzpEQVNIOnNjaGVtYTpNUEQ6MjAxMVwiIgorICAgICAgIiAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPVwidXJuOm1wZWc6REFTSDpzY2hlbWE6TVBEOjIwMTEgREFTSC1NUEQueHNkXCIiCisgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1vbi1kZW1hbmQ6MjAxMVwiIgorICAgICAgIiAgICAgdHlwZT1cInN0YXRpY1wiIgorICAgICAgIiAgICAgbWluQnVmZmVyVGltZT1cIlBUMS41MDBTXCIiCisgICAgICAiICAgICBtZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uPVwiUFQxMzUuNzQzU1wiPiIKKyAgICAgICIgIDxQZXJpb2Q+IgorICAgICAgIiAgICA8QWRhcHRhdGlvblNldCBtaW1lVHlwZT1cImF1ZGlvL3dlYm1cIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgc3Vic2VnbWVudEFsaWdubWVudD1cInRydWVcIj4iCisgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uIGlkPVwiMTcxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcz1cInZvcmJpc1wiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBhdWRpb1NhbXBsaW5nUmF0ZT1cIjQ0MTAwXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aFNBUD1cIjFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoPVwiMTI5NTUzXCI+IgorICAgICAgIiAgICAgICAgPEF1ZGlvQ2hhbm5lbENvbmZpZ3VyYXRpb24iCisgICAgICAiICAgICAgICAgICBzY2hlbWVJZFVyaT1cInVybjptcGVnOmRhc2g6MjMwMDM6MzphdWRpb19jaGFubmVsX2NvbmZpZ3VyYXRpb246MjAxMVwiIgorICAgICAgIiAgICAgICAgICAgdmFsdWU9XCIyXCIgLz4iCisgICAgICAiICAgICAgICA8QmFzZVVSTD5hdWRpby53ZWJtPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICAgIDxTZWdtZW50QmFzZSBpbmRleFJhbmdlPVwiNDQ1Mi00Njg2XCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZUV4YWN0PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICAgICAgPEluaXRpYWxpemF0aW9uIHJhbmdlPVwiMC00NDUxXCIgLz4iCisgICAgICAiICAgICAgICA8L1NlZ21lbnRCYXNlPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPiIKKyAgICAgICIgICAgPC9BZGFwdGF0aW9uU2V0PiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgbWltZVR5cGU9XCJ2aWRlby93ZWJtXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgIHN1YnNlZ21lbnRBbGlnbm1lbnQ9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbiBpZD1cIjI0MlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBjb2RlY3M9XCJ2cDlcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI0MjZcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjQwXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aFNBUD1cIjFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoPVwiNDkwMjA4XCI+IgorICAgICAgIiAgICAgICAgPEJhc2VVUkw+dmlkZW8ud2VibTwvQmFzZVVSTD4iCisgICAgICAiICAgICAgICA8U2VnbWVudEJhc2UgaW5kZXhSYW5nZT1cIjIzNC02ODJcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICBpbmRleFJhbmdlRXhhY3Q9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgICAgICA8SW5pdGlhbGl6YXRpb24gcmFuZ2U9XCIwLTIzM1wiIC8+IgorICAgICAgIiAgICAgICAgPC9TZWdtZW50QmFzZT4iCisgICAgICAiICAgICAgPC9SZXByZXNlbnRhdGlvbj48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKKyAgR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIiwgKGd1aW50OCAqKSBtcGQsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9hdWRpby53ZWJtIiwgTlVMTCwgNTAwMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L3ZpZGVvLndlYm0iLCBOVUxMLCA5MDAwfSwKKyAgICB7TlVMTCwgTlVMTCwgMH0sCisgIH07CisgIEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzIGh0dHBfc3JjX2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJhdWRpb18wMCIsIDUwMDAsIE5VTEx9LAorICAgIHsidmlkZW9fMDAiLCA5MDAwLCBOVUxMfQorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhbGxiYWNrcyB0ZXN0X2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhOworCisgIHRlc3REYXRhID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXcgKCk7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9kYXNoZGVtdXhfaHR0cF9zcmNfY3JlYXRlOworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgaW5wdXRUZXN0RGF0YSk7CisKKyAgQ09QWV9PVVRQVVRfVEVTVF9EQVRBIChvdXRwdXRUZXN0RGF0YSwgdGVzdERhdGEpOworICB0ZXN0X2NhbGxiYWNrcy5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19lb3MgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhOworCisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoREVNVVhfRUxFTUVOVF9OQU1FLCAiaHR0cDovL3VuaXQudGVzdC90ZXN0Lm1wZCIsCisgICAgICAmdGVzdF9jYWxsYmFja3MsIHRlc3REYXRhKTsKKyAgZ19vYmplY3RfdW5yZWYgKHRlc3REYXRhKTsKK30KKworR1NUX0VORF9URVNUOworCisvKgorICogVGVzdCBhbiBtcGQgd2l0aCAyIHBlcmlvZHMKKyAqCisgKi8KK0dTVF9TVEFSVF9URVNUICh0ZXN0VHdvUGVyaW9kcykKK3sKKyAgY29uc3QgZ2NoYXIgKm1wZCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+IgorICAgICAgIjxNUEQgeG1sbnM6eHNpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIiIKKyAgICAgICIgICAgIHhtbG5zPVwidXJuOm1wZWc6REFTSDpzY2hlbWE6TVBEOjIwMTFcIiIKKyAgICAgICIgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExIERBU0gtTVBELnhzZFwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtb24tZGVtYW5kOjIwMTFcIiIKKyAgICAgICIgICAgIHR5cGU9XCJzdGF0aWNcIiIKKyAgICAgICIgICAgIG1pbkJ1ZmZlclRpbWU9XCJQVDEuNTAwU1wiIgorICAgICAgIiAgICAgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIlBUMzAwU1wiPiIKKyAgICAgICIgIDxQZXJpb2QgaWQ9XCJQZXJpb2QwXCIgZHVyYXRpb249XCJQVDAuMVNcIj4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IG1pbWVUeXBlPVwiYXVkaW8vd2VibVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICBzdWJzZWdtZW50QWxpZ25tZW50PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24gaWQ9XCIxNzFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgY29kZWNzPVwidm9yYmlzXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvU2FtcGxpbmdSYXRlPVwiNDQxMDBcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoU0FQPVwiMVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBiYW5kd2lkdGg9XCIxMjk1NTNcIj4iCisgICAgICAiICAgICAgICA8QXVkaW9DaGFubmVsQ29uZmlndXJhdGlvbiIKKyAgICAgICIgICAgICAgICAgIHNjaGVtZUlkVXJpPVwidXJuOm1wZWc6ZGFzaDoyMzAwMzozOmF1ZGlvX2NoYW5uZWxfY29uZmlndXJhdGlvbjoyMDExXCIiCisgICAgICAiICAgICAgICAgICB2YWx1ZT1cIjJcIiAvPiIKKyAgICAgICIgICAgICAgIDxCYXNlVVJMPmF1ZGlvMS53ZWJtPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICAgIDxTZWdtZW50QmFzZSBpbmRleFJhbmdlPVwiNDQ1Mi00Njg2XCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZUV4YWN0PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICAgICAgPEluaXRpYWxpemF0aW9uIHJhbmdlPVwiMC00NDUxXCIgLz4iCisgICAgICAiICAgICAgICA8L1NlZ21lbnRCYXNlPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPiIKKyAgICAgICIgICAgPC9BZGFwdGF0aW9uU2V0PiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgbWltZVR5cGU9XCJ2aWRlby93ZWJtXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgIHN1YnNlZ21lbnRBbGlnbm1lbnQ9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbiBpZD1cIjI0MlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBjb2RlY3M9XCJ2cDlcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI0MjZcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjQwXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aFNBUD1cIjFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoPVwiNDkwMjA4XCI+IgorICAgICAgIiAgICAgICAgPEJhc2VVUkw+dmlkZW8xLndlYm08L0Jhc2VVUkw+IgorICAgICAgIiAgICAgICAgPFNlZ21lbnRCYXNlIGluZGV4UmFuZ2U9XCIyMzQtNjgyXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZUV4YWN0PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICAgICAgPEluaXRpYWxpemF0aW9uIHJhbmdlPVwiMC0yMzNcIiAvPiIKKyAgICAgICIgICAgICAgIDwvU2VnbWVudEJhc2U+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+IgorICAgICAgIiAgICA8L0FkYXB0YXRpb25TZXQ+IgorICAgICAgIiAgPC9QZXJpb2Q+IgorICAgICAgIiAgPFBlcmlvZD4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IG1pbWVUeXBlPVwiYXVkaW8vd2VibVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICBzdWJzZWdtZW50QWxpZ25tZW50PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24gaWQ9XCIxNzFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgY29kZWNzPVwidm9yYmlzXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvU2FtcGxpbmdSYXRlPVwiNDQxMDBcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoU0FQPVwiMVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBiYW5kd2lkdGg9XCIxMjk1NTNcIj4iCisgICAgICAiICAgICAgICA8QXVkaW9DaGFubmVsQ29uZmlndXJhdGlvbiIKKyAgICAgICIgICAgICAgICAgIHNjaGVtZUlkVXJpPVwidXJuOm1wZWc6ZGFzaDoyMzAwMzozOmF1ZGlvX2NoYW5uZWxfY29uZmlndXJhdGlvbjoyMDExXCIiCisgICAgICAiICAgICAgICAgICB2YWx1ZT1cIjJcIiAvPiIKKyAgICAgICIgICAgICAgIDxCYXNlVVJMPmF1ZGlvMi53ZWJtPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICAgIDxTZWdtZW50QmFzZSBpbmRleFJhbmdlPVwiNDQ1Mi00Njg2XCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZUV4YWN0PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICAgICAgPEluaXRpYWxpemF0aW9uIHJhbmdlPVwiMC00NDUxXCIgLz4iCisgICAgICAiICAgICAgICA8L1NlZ21lbnRCYXNlPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPiIKKyAgICAgICIgICAgPC9BZGFwdGF0aW9uU2V0PiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgbWltZVR5cGU9XCJ2aWRlby93ZWJtXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgIHN1YnNlZ21lbnRBbGlnbm1lbnQ9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbiBpZD1cIjI0MlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBjb2RlY3M9XCJ2cDlcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI0MjZcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjQwXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aFNBUD1cIjFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoPVwiNDkwMjA4XCI+IgorICAgICAgIiAgICAgICAgPEJhc2VVUkw+dmlkZW8yLndlYm08L0Jhc2VVUkw+IgorICAgICAgIiAgICAgICAgPFNlZ21lbnRCYXNlIGluZGV4UmFuZ2U9XCIyMzQtNjgyXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZUV4YWN0PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICAgICAgPEluaXRpYWxpemF0aW9uIHJhbmdlPVwiMC0yMzNcIiAvPiIKKyAgICAgICIgICAgICAgIDwvU2VnbWVudEJhc2U+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIiwgKGd1aW50OCAqKSBtcGQsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9hdWRpbzEud2VibSIsIE5VTEwsIDUwMDF9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC92aWRlbzEud2VibSIsIE5VTEwsIDkwMDF9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9hdWRpbzIud2VibSIsIE5VTEwsIDUwMDJ9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC92aWRlbzIud2VibSIsIE5VTEwsIDkwMDJ9LAorICAgIHtOVUxMLCBOVUxMLCAwfSwKKyAgfTsKKyAgR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgaHR0cF9zcmNfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgb3V0cHV0VGVzdERhdGFbXSA9IHsKKyAgICB7ImF1ZGlvXzAwIiwgNTAwMSwgTlVMTH0sCisgICAgeyJ2aWRlb18wMCIsIDkwMDEsIE5VTEx9LAorICAgIHsiYXVkaW9fMDEiLCA1MDAyLCBOVUxMfSwKKyAgICB7InZpZGVvXzAxIiwgOTAwMiwgTlVMTH0sCisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzIHRlc3RfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGE7CisKKyAgdGVzdERhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAoKTsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9kYXNoZGVtdXhfaHR0cF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X2Rhc2hkZW11eF9odHRwX3NyY19jcmVhdGU7CisgIENPUFlfT1VUUFVUX1RFU1RfREFUQSAob3V0cHV0VGVzdERhdGEsIHRlc3REYXRhKTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19yZWNlaXZlZF9kYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGE7CisgIHRlc3RfY2FsbGJhY2tzLmFwcHNpbmtfZW9zID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YTsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgaW5wdXRUZXN0RGF0YSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoREVNVVhfRUxFTUVOVF9OQU1FLAorICAgICAgImh0dHA6Ly91bml0LnRlc3QvdGVzdC5tcGQiLCAmdGVzdF9jYWxsYmFja3MsIHRlc3REYXRhKTsKKyAgZ3N0X29iamVjdF91bnJlZiAodGVzdERhdGEpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKy8qIHRlc3Qgc2V0dGluZyBhIHByb3BlcnR5IG9uIGFuIG9iamVjdCAqLworI2RlZmluZSB0ZXN0X2ludF9wcm9wKG9iamVjdCwgbmFtZSwgdmFsdWUpIFwKK2RvIFwKK3sgXAorICBpbnQgdmFsID0gdmFsdWU7IFwKKyAgaW50IHZhbF9hZnRlcjsgXAorICBnX29iamVjdF9zZXQgKG9iamVjdCwgbmFtZSwgdmFsLCBOVUxMKTsgXAorICBnX29iamVjdF9nZXQgKG9iamVjdCwgbmFtZSwgJnZhbF9hZnRlciwgTlVMTCk7IFwKKyAgZmFpbF91bmxlc3MgKHZhbF9hZnRlciA9PSB2YWwsICJwcm9wZXJ0eSBjaGVjayBmYWlsZWQgZm9yICVzOiBzZXQgdG8gJWQsIGJ1dCBnb3QgJWQiLCBcCisgICAgICBuYW1lLCB2YWwsIHZhbF9hZnRlcik7IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgdGVzdF9mbG9hdF9wcm9wKG9iamVjdCwgbmFtZSwgdmFsdWUpIFwKK2RvIFwKK3sgXAorICBmbG9hdCB2YWwgPSB2YWx1ZTsgXAorICBmbG9hdCB2YWxfYWZ0ZXI7IFwKKyAgZ19vYmplY3Rfc2V0IChvYmplY3QsIG5hbWUsIHZhbCwgTlVMTCk7IFwKKyAgZ19vYmplY3RfZ2V0IChvYmplY3QsIG5hbWUsICZ2YWxfYWZ0ZXIsIE5VTEwpOyBcCisgIGZhaWxfdW5sZXNzICh2YWxfYWZ0ZXIgPT0gdmFsLCAicHJvcGVydHkgY2hlY2sgZmFpbGVkIGZvciAlczogc2V0IHRvICVmLCBidXQgZ290ICVmIiwgXAorICAgICAgbmFtZSwgdmFsLCB2YWxfYWZ0ZXIpOyBcCit9IHdoaWxlICgwKQorCisvKiB0ZXN0IHNldHRpbmcgYW4gaW52YWxpZCB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBhbiBvYmplY3QuCisgKiBFeHBlY3QgYW4gYXNzZXJ0IGFuZCB0aGUgcHJvcGVydHkgdG8gcmVtYWluIHVuY2hhbmdlZAorICovCisjZGVmaW5lIHRlc3RfaW52YWxpZF9pbnRfcHJvcChvYmplY3QsIG5hbWUsIHZhbHVlKSBcCitkbyBcCit7IFwKKyAgaW50IHZhbF9iZWZvcmU7IFwKKyAgaW50IHZhbF9hZnRlcjsgXAorICBpbnQgdmFsID0gdmFsdWU7IFwKKyAgZ19vYmplY3RfZ2V0IChvYmplY3QsIG5hbWUsICZ2YWxfYmVmb3JlLCBOVUxMKTsgXAorICBBU1NFUlRfV0FSTklORyAoZ19vYmplY3Rfc2V0IChvYmplY3QsIG5hbWUsIHZhbCwgTlVMTCkpOyBcCisgIGdfb2JqZWN0X2dldCAob2JqZWN0LCBuYW1lLCAmdmFsX2FmdGVyLCBOVUxMKTsgXAorICBmYWlsX3VubGVzcyAodmFsX2FmdGVyID09IHZhbF9iZWZvcmUsICJwcm9wZXJ0eSBjaGVjayBmYWlsZWQgZm9yICVzOiBiZWZvcmUgJWQsIGFmdGVyICVkIiwgXAorICAgICAgbmFtZSwgdmFsX2JlZm9yZSwgdmFsX2FmdGVyKTsgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSB0ZXN0X2ludmFsaWRfZmxvYXRfcHJvcChvYmplY3QsIG5hbWUsIHZhbHVlKSBcCitkbyBcCit7IFwKKyAgZmxvYXQgdmFsX2JlZm9yZTsgXAorICBmbG9hdCB2YWxfYWZ0ZXI7IFwKKyAgZmxvYXQgdmFsID0gdmFsdWU7IFwKKyAgZ19vYmplY3RfZ2V0IChvYmplY3QsIG5hbWUsICZ2YWxfYmVmb3JlLCBOVUxMKTsgXAorICBBU1NFUlRfV0FSTklORyAoZ19vYmplY3Rfc2V0IChvYmplY3QsIG5hbWUsIHZhbCwgTlVMTCkpOyBcCisgIGdfb2JqZWN0X2dldCAob2JqZWN0LCBuYW1lLCAmdmFsX2FmdGVyLCBOVUxMKTsgXAorICBmYWlsX3VubGVzcyAodmFsX2FmdGVyID09IHZhbF9iZWZvcmUsICJwcm9wZXJ0eSBjaGVjayBmYWlsZWQgZm9yICVzOiBiZWZvcmUgJWYsIGFmdGVyICVmIiwgXAorICAgICAgbmFtZSwgdmFsX2JlZm9yZSwgdmFsX2FmdGVyKTsgXAorfSB3aGlsZSAoMCkKKworc3RhdGljIHZvaWQKK3NldEFuZFRlc3REYXNoUGFyYW1zIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqIGVuZ2luZSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICAvKiAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICogdGVzdERhdGEgPSAoR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlKil1c2VyX2RhdGE7ICovCisgIEdPYmplY3QgKmRhc2hkZW11eCA9IEdfT0JKRUNUIChlbmdpbmUtPmRlbXV4KTsKKworICB0ZXN0X2ludF9wcm9wIChkYXNoZGVtdXgsICJjb25uZWN0aW9uLXNwZWVkIiwgMTAwMCk7CisgIHRlc3RfaW52YWxpZF9pbnRfcHJvcCAoZGFzaGRlbXV4LCAiY29ubmVjdGlvbi1zcGVlZCIsIDQyOTQ5NjcgKyAxKTsKKworICB0ZXN0X2Zsb2F0X3Byb3AgKGRhc2hkZW11eCwgImJpdHJhdGUtbGltaXQiLCAxKTsKKyAgdGVzdF9pbnZhbGlkX2Zsb2F0X3Byb3AgKGRhc2hkZW11eCwgImJpdHJhdGUtbGltaXQiLCAyLjEpOworCisgIHRlc3RfaW50X3Byb3AgKGRhc2hkZW11eCwgIm1heC1idWZmZXJpbmctdGltZSIsIDE1KTsKKyAgdGVzdF9pbnZhbGlkX2ludF9wcm9wIChkYXNoZGVtdXgsICJtYXgtYnVmZmVyaW5nLXRpbWUiLCAxKTsKKworICB0ZXN0X2Zsb2F0X3Byb3AgKGRhc2hkZW11eCwgImJhbmR3aWR0aC11c2FnZSIsIDAuNSk7CisgIHRlc3RfaW52YWxpZF9mbG9hdF9wcm9wIChkYXNoZGVtdXgsICJiYW5kd2lkdGgtdXNhZ2UiLCAyKTsKKworICB0ZXN0X2ludF9wcm9wIChkYXNoZGVtdXgsICJtYXgtYml0cmF0ZSIsIDEwMDApOworICB0ZXN0X2ludmFsaWRfaW50X3Byb3AgKGRhc2hkZW11eCwgIm1heC1iaXRyYXRlIiwgMTApOworfQorCisvKgorICogVGVzdCBzZXR0aW5nIHBhcmFtZXRlcnMKKyAqCisgKi8KK0dTVF9TVEFSVF9URVNUICh0ZXN0UGFyYW1ldGVycykKK3sKKyAgY29uc3QgZ2NoYXIgKm1wZCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+IgorICAgICAgIjxNUEQgeG1sbnM6eHNpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIiIKKyAgICAgICIgICAgIHhtbG5zPVwidXJuOm1wZWc6REFTSDpzY2hlbWE6TVBEOjIwMTFcIiIKKyAgICAgICIgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExIERBU0gtTVBELnhzZFwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtb24tZGVtYW5kOjIwMTFcIiIKKyAgICAgICIgICAgIHR5cGU9XCJzdGF0aWNcIiIKKyAgICAgICIgICAgIG1pbkJ1ZmZlclRpbWU9XCJQVDEuNTAwU1wiIgorICAgICAgIiAgICAgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIlBUMTM1Ljc0M1NcIj4iCisgICAgICAiICA8UGVyaW9kPiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgbWltZVR5cGU9XCJhdWRpby93ZWJtXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgIHN1YnNlZ21lbnRBbGlnbm1lbnQ9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbiBpZD1cIjE3MVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBjb2RlY3M9XCJ2b3JiaXNcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYXVkaW9TYW1wbGluZ1JhdGU9XCI0NDEwMFwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGhTQVA9XCIxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGJhbmR3aWR0aD1cIjEyOTU1M1wiPiIKKyAgICAgICIgICAgICAgIDxBdWRpb0NoYW5uZWxDb25maWd1cmF0aW9uIgorICAgICAgIiAgICAgICAgICAgc2NoZW1lSWRVcmk9XCJ1cm46bXBlZzpkYXNoOjIzMDAzOjM6YXVkaW9fY2hhbm5lbF9jb25maWd1cmF0aW9uOjIwMTFcIiIKKyAgICAgICIgICAgICAgICAgIHZhbHVlPVwiMlwiIC8+IgorICAgICAgIiAgICAgICAgPEJhc2VVUkw+YXVkaW8ud2VibTwvQmFzZVVSTD4iCisgICAgICAiICAgICAgICA8U2VnbWVudEJhc2UgaW5kZXhSYW5nZT1cIjQ0NTItNDY4NlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2VFeGFjdD1cInRydWVcIj4iCisgICAgICAiICAgICAgICAgIDxJbml0aWFsaXphdGlvbiByYW5nZT1cIjAtNDQ1MVwiIC8+IgorICAgICAgIiAgICAgICAgPC9TZWdtZW50QmFzZT4iCisgICAgICAiICAgICAgPC9SZXByZXNlbnRhdGlvbj48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKKworICBHc3REYXNoRGVtdXhUZXN0SW5wdXREYXRhIGlucHV0VGVzdERhdGFbXSA9IHsKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvdGVzdC5tcGQiLCAoZ3VpbnQ4ICopIG1wZCwgMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L2F1ZGlvLndlYm0iLCBOVUxMLCA1MDAwfSwKKyAgICB7TlVMTCwgTlVMTCwgMH0sCisgIH07CisgIEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzIGh0dHBfc3JjX2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJhdWRpb18wMCIsIDUwMDAsIE5VTEx9LAorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhbGxiYWNrcyB0ZXN0X2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhOworCisgIHRlc3REYXRhID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXcgKCk7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9kYXNoZGVtdXhfaHR0cF9zcmNfY3JlYXRlOworICBDT1BZX09VVFBVVF9URVNUX0RBVEEgKG91dHB1dFRlc3REYXRhLCB0ZXN0RGF0YSk7CisgIHRlc3RfY2FsbGJhY2tzLnByZV90ZXN0ID0gc2V0QW5kVGVzdERhc2hQYXJhbXM7CisgIHRlc3RfY2FsbGJhY2tzLmFwcHNpbmtfcmVjZWl2ZWRfZGF0YSA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19yZWNlaXZlZF9kYXRhOworICB0ZXN0X2NhbGxiYWNrcy5hcHBzaW5rX2VvcyA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19zaXplX29mX3JlY2VpdmVkX2RhdGE7CisKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsIGlucHV0VGVzdERhdGEpOworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4gKERFTVVYX0VMRU1FTlRfTkFNRSwgImh0dHA6Ly91bml0LnRlc3QvdGVzdC5tcGQiLAorICAgICAgJnRlc3RfY2FsbGJhY2tzLCB0ZXN0RGF0YSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHRlc3REYXRhKTsKK30KKworR1NUX0VORF9URVNUOworCisvKgorICogVGVzdCBzZWVraW5nCisgKgorICovCitHU1RfU1RBUlRfVEVTVCAodGVzdFNlZWspCit7CisgIGNvbnN0IGdjaGFyICptcGQgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PiIKKyAgICAgICI8TVBEIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIiCisgICAgICAiICAgICB4bWxucz1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExXCIiCisgICAgICAiICAgICB4c2k6c2NoZW1hTG9jYXRpb249XCJ1cm46bXBlZzpEQVNIOnNjaGVtYTpNUEQ6MjAxMSBEQVNILU1QRC54c2RcIiIKKyAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW9uLWRlbWFuZDoyMDExXCIiCisgICAgICAiICAgICB0eXBlPVwic3RhdGljXCIiCisgICAgICAiICAgICBtaW5CdWZmZXJUaW1lPVwiUFQxLjUwMFNcIiIKKyAgICAgICIgICAgIG1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb249XCJQVDEzNS43NDNTXCI+IgorICAgICAgIiAgPFBlcmlvZD4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IG1pbWVUeXBlPVwiYXVkaW8vd2VibVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICBzdWJzZWdtZW50QWxpZ25tZW50PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24gaWQ9XCIxNzFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgY29kZWNzPVwidm9yYmlzXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvU2FtcGxpbmdSYXRlPVwiNDQxMDBcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoU0FQPVwiMVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBiYW5kd2lkdGg9XCIxMjk1NTNcIj4iCisgICAgICAiICAgICAgICA8QXVkaW9DaGFubmVsQ29uZmlndXJhdGlvbiIKKyAgICAgICIgICAgICAgICAgIHNjaGVtZUlkVXJpPVwidXJuOm1wZWc6ZGFzaDoyMzAwMzozOmF1ZGlvX2NoYW5uZWxfY29uZmlndXJhdGlvbjoyMDExXCIiCisgICAgICAiICAgICAgICAgICB2YWx1ZT1cIjJcIiAvPiIKKyAgICAgICIgICAgICAgIDxCYXNlVVJMPmF1ZGlvLndlYm08L0Jhc2VVUkw+IgorICAgICAgIiAgICAgICAgPFNlZ21lbnRCYXNlIGluZGV4UmFuZ2U9XCI0NDUyLTQ2ODZcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICBpbmRleFJhbmdlRXhhY3Q9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgICAgICA8SW5pdGlhbGl6YXRpb24gcmFuZ2U9XCIwLTQ0NTFcIiAvPiIKKyAgICAgICIgICAgICAgIDwvU2VnbWVudEJhc2U+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisgIEdzdERhc2hEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC90ZXN0Lm1wZCIsIChndWludDggKikgbXBkLCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvYXVkaW8ud2VibSIsIE5VTEwsIDEwMDAwfSwKKyAgICB7TlVMTCwgTlVMTCwgMH0sCisgIH07CisgIEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzIGh0dHBfc3JjX2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJhdWRpb18wMCIsIDEwMDAwLCBOVUxMfSwKKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YTsKKworICB0ZXN0RGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICgpOworCisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9kYXNoZGVtdXhfaHR0cF9zcmNfY3JlYXRlOworICBDT1BZX09VVFBVVF9URVNUX0RBVEEgKG91dHB1dFRlc3REYXRhLCB0ZXN0RGF0YSk7CisKKyAgLyogbWVkaWEgc2VnbWVudCBzdGFydHMgYXQgNDY4NworICAgKiBJc3N1ZSBhIHNlZWsgcmVxdWVzdCBhZnRlciBtZWRpYSBzZWdtZW50IGhhcyBzdGFydGVkIHRvIGJlIGRvd25sb2FkZWQKKyAgICogb24gdGhlIGZpcnN0IHBhZCBsaXN0ZWQgaW4gR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW1EYXRhIGFuZCB0aGUKKyAgICogZmlyc3QgY2h1bmsgb2YgYXQgbGVhc3Qgb25lIGJ5dGUgaGFzIGFscmVhZHkgYXJyaXZlZCBpbiBBcHBTaW5rCisgICAqLworICB0ZXN0RGF0YS0+dGhyZXNob2xkX2Zvcl9zZWVrID0gNDY4NyArIDE7CisKKyAgLyogc2VlayB0byA1bXMuCisgICAqIEJlY2F1c2UgdGhlcmUgaXMgb25seSBvbmUgZnJhZ21lbnQsIHdlIGV4cGVjdCB0aGUgd2hvbGUgZmlsZSB0byBiZQorICAgKiBkb3dubG9hZGVkIGFnYWluCisgICAqLworICB0ZXN0RGF0YS0+c2Vla19ldmVudCA9CisgICAgICBnc3RfZXZlbnRfbmV3X3NlZWsgKDEuMCwgR1NUX0ZPUk1BVF9USU1FLAorICAgICAgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfS0VZX1VOSVQsIEdTVF9TRUVLX1RZUEVfU0VULAorICAgICAgNSAqIEdTVF9NU0VDT05ELCBHU1RfU0VFS19UWVBFX05PTkUsIDApOworCisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzICgmaHR0cF9zcmNfY2FsbGJhY2tzLCBpbnB1dFRlc3REYXRhKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3Rfc2VlayAoREVNVVhfRUxFTUVOVF9OQU1FLAorICAgICAgImh0dHA6Ly91bml0LnRlc3QvdGVzdC5tcGQiLCB0ZXN0RGF0YSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHRlc3REYXRhKTsKK30KKworR1NUX0VORF9URVNUOworCisKKyNkZWZpbmUgU0VHTUVOVF9TSVpFIDEwMDAwCitzdGF0aWMgdm9pZAorcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoZ2RvdWJsZSByYXRlLCBHc3RTZWVrVHlwZSBzdGFydF90eXBlLAorICAgIGd1aW50NjQgc2Vla19zdGFydCwgR3N0U2Vla1R5cGUgc3RvcF90eXBlLCBndWludDY0IHNlZWtfc3RvcCwKKyAgICBHc3RTZWVrRmxhZ3MgZmxhZ3MsIGd1aW50NjQgc2VnbWVudF9zdGFydCwgZ3VpbnQ2NCBzZWdtZW50X3N0b3AsCisgICAgZ2ludCBzZWdtZW50cywgZ2ludCBzZWVrX3RocmVzaG9sZF9ieXRlcykKK3sKKyAgY29uc3QgZ2NoYXIgKm1wZCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+IgorICAgICAgIjxNUEQgeG1sbnM6eHNpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIiIKKyAgICAgICIgICAgIHhtbG5zPVwidXJuOm1wZWc6REFTSDpzY2hlbWE6TVBEOjIwMTFcIiIKKyAgICAgICIgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExIERBU0gtTVBELnhzZFwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtb24tZGVtYW5kOjIwMTFcIiIKKyAgICAgICIgICAgIHR5cGU9XCJzdGF0aWNcIiIKKyAgICAgICIgICAgIG1pbkJ1ZmZlclRpbWU9XCJQVDEuNTAwU1wiIgorICAgICAgIiAgICAgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIlBUMTM1Ljc0M1NcIj4iCisgICAgICAiICA8UGVyaW9kPiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgIgorICAgICAgIiAgICAgICAgbWltZVR5cGU9XCJhdWRpby9tcDRcIiBtaW5CYW5kd2lkdGg9XCIxMjgwMDBcIiAiCisgICAgICAiICAgICAgICBtYXhCYW5kd2lkdGg9XCIxMjgwMDBcIiBzZWdtZW50QWxpZ25tZW50PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICA8U2VnbWVudFRlbXBsYXRlIHRpbWVzY2FsZT1cIjQ4MDAwXCIgIgorICAgICAgIiAgICAgICAgICBpbml0aWFsaXphdGlvbj1cImluaXQtJFJlcHJlc2VudGF0aW9uSUQkLm1wNFwiICIKKyAgICAgICIgICAgICAgICAgbWVkaWE9XCIkUmVwcmVzZW50YXRpb25JRCQtJE51bWJlciQubXA0XCIgIgorICAgICAgIiAgICAgICAgICBzdGFydE51bWJlcj1cIjFcIj4iCisgICAgICAiICAgICAgICA8U2VnbWVudFRpbWVsaW5lPiIKKyAgICAgICIgICAgICAgICAgPFMgdD1cIjBcIiBkPVwiNDgwMDBcIiAvPiAiCisgICAgICAiICAgICAgICAgIDxTIGQ9XCI0ODAwMFwiIC8+ICIKKyAgICAgICIgICAgICAgICAgPFMgZD1cIjQ4MDAwXCIgLz4gIgorICAgICAgIiAgICAgICAgICA8UyBkPVwiNDgwMDBcIiAvPiAiCisgICAgICAiICAgICAgICA8L1NlZ21lbnRUaW1lbGluZT4iCisgICAgICAiICAgICAgPC9TZWdtZW50VGVtcGxhdGU+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbiBpZD1cImF1ZGlvXCIgYmFuZHdpZHRoPVwiMTI4MDAwXCIgIgorICAgICAgIiAgICAgICAgICBjb2RlY3M9XCJtcDRhLjQwLjJcIiBhdWRpb1NhbXBsaW5nUmF0ZT1cIjQ4MDAwXCI+ICIKKyAgICAgICIgICAgICAgIDxBdWRpb0NoYW5uZWxDb25maWd1cmF0aW9uICIKKyAgICAgICIgICAgICAgICAgICBzY2hlbWVJZFVyaT1cInVybjptcGVnOmRhc2g6MjMwMDM6MzphdWRpb19jaGFubmVsX2NvbmZpZ3VyYXRpb246MjAxMVwiIgorICAgICAgIiAgICAgICAgICAgIHZhbHVlPVwiMlwiPiAiCisgICAgICAiICAgICAgICA8L0F1ZGlvQ2hhbm5lbENvbmZpZ3VyYXRpb24+ICIKKyAgICAgICIgICAgPC9SZXByZXNlbnRhdGlvbj48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKKyAgR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIiwgKGd1aW50OCAqKSBtcGQsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9pbml0LWF1ZGlvLm1wNCIsIE5VTEwsIDEwMDAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvYXVkaW8tMS5tcDQiLCBOVUxMLCAxMDAwMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L2F1ZGlvLTIubXA0IiwgTlVMTCwgMTAwMDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9hdWRpby0zLm1wNCIsIE5VTEwsIDEwMDAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvYXVkaW8tNC5tcDQiLCBOVUxMLCAxMDAwMH0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIC8qIDEgZnJvbSB0aGUgaW5pdCBzZWdtZW50ICovCisgICAgeyJhdWRpb18wMCIsIChzZWdtZW50cyA/IDEgKyBzZWdtZW50cyA6IDApICogMTAwMDAsIE5VTEx9LAorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhOworCisgIHRlc3REYXRhID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXcgKCk7CisKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9kYXNoZGVtdXhfaHR0cF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X2Rhc2hkZW11eF9odHRwX3NyY19jcmVhdGU7CisgIENPUFlfT1VUUFVUX1RFU1RfREFUQSAob3V0cHV0VGVzdERhdGEsIHRlc3REYXRhKTsKKworICAvKiBtZWRpYSBzZWdtZW50IHN0YXJ0cyBhdCA0Njg3CisgICAqIElzc3VlIGEgc2VlayByZXF1ZXN0IGFmdGVyIG1lZGlhIHNlZ21lbnQgaGFzIHN0YXJ0ZWQgdG8gYmUgZG93bmxvYWRlZAorICAgKiBvbiB0aGUgZmlyc3QgcGFkIGxpc3RlZCBpbiBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbURhdGEgYW5kIHRoZQorICAgKiBmaXJzdCBjaHVuayBvZiBhdCBsZWFzdCBvbmUgYnl0ZSBoYXMgYWxyZWFkeSBhcnJpdmVkIGluIEFwcFNpbmsKKyAgICovCisgIGlmIChzZWVrX3RocmVzaG9sZF9ieXRlcykKKyAgICB0ZXN0RGF0YS0+dGhyZXNob2xkX2Zvcl9zZWVrID0gc2Vla190aHJlc2hvbGRfYnl0ZXM7CisgIGVsc2UKKyAgICB0ZXN0RGF0YS0+dGhyZXNob2xkX2Zvcl9zZWVrID0gNDY4NyArIDE7CisKKyAgLyogRklYTUUgaGFjayB0byBhdm9pZCBoYXZpbmcgYSAwIHNlcW51bSAqLworICBnc3RfdXRpbF9zZXFudW1fbmV4dCAoKTsKKworICAvKiBzZWVrIHRvIDVtcy4KKyAgICogQmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9uZSBmcmFnbWVudCwgd2UgZXhwZWN0IHRoZSB3aG9sZSBmaWxlIHRvIGJlCisgICAqIGRvd25sb2FkZWQgYWdhaW4KKyAgICovCisgIHRlc3REYXRhLT5zZWVrX2V2ZW50ID0KKyAgICAgIGdzdF9ldmVudF9uZXdfc2VlayAocmF0ZSwgR1NUX0ZPUk1BVF9USU1FLCBmbGFncywgc3RhcnRfdHlwZSwKKyAgICAgIHNlZWtfc3RhcnQsIHN0b3BfdHlwZSwgc2Vla19zdG9wKTsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgaW5wdXRUZXN0RGF0YSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3NlZWsgKERFTVVYX0VMRU1FTlRfTkFNRSwKKyAgICAgICJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIiwgdGVzdERhdGEpOworICBnc3Rfb2JqZWN0X3VucmVmICh0ZXN0RGF0YSk7Cit9CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla0tleVVuaXRQb3NpdGlvbikKK3sKKyAgLyogU2VlayB0byAxLjVzIHdpdGgga2V5IHVuaXQsIGl0IHNob3VsZCBnbyBiYWNrIHRvIDEuMHMuIDMgc2VnbWVudHMgd2lsbCBiZQorICAgKiBwdXNoZWQgKi8KKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoMS4wLCBHU1RfU0VFS19UWVBFX1NFVCwgMTUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9OT05FLCAwLCBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19LRVlfVU5JVCwKKyAgICAgIDEwMDAgKiBHU1RfTVNFQ09ORCwgLTEsIDMsIDApOworfQorCitHU1RfRU5EX1RFU1Q7CisKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrVXBkYXRlU3RvcFBvc2l0aW9uKQoreworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgxLjAsIEdTVF9TRUVLX1RZUEVfTk9ORSwgMTUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9TRVQsIDMwMDAgKiBHU1RfTVNFQ09ORCwgMCwgMCwgMzAwMCAqIEdTVF9NU0VDT05ELCAzLCAwKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdFNlZWtQb3NpdGlvbikKK3sKKyAgLyogU2VlayB0byAxLjVzIHdpdGhvdXQga2V5IHVuaXQsIGl0IHNob3VsZCBrZWVwIHRoZSAxLjVzLCBidXQgc3RpbGwgcHVzaAorICAgKiBmcm9tIHRoZSAxc3Qgc2VnbWVudCwgc28gMyBzZWdtZW50cyB3aWxsIGJlCisgICAqIHB1c2hlZCAqLworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgxLjAsIEdTVF9TRUVLX1RZUEVfU0VULCAxNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX05PTkUsIDAsIEdTVF9TRUVLX0ZMQUdfRkxVU0gsIDE1MDAgKiBHU1RfTVNFQ09ORCwgLTEsIDMsIDApOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla1NuYXBCZWZvcmVQb3NpdGlvbikKK3sKKyAgLyogU2VlayB0byAxLjVzLCBzbmFwIGJlZm9yZSwgaXQgZ28gdG8gMXMgKi8KKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoMS4wLCBHU1RfU0VFS19UWVBFX1NFVCwgMTUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9OT05FLCAwLCBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19TTkFQX0JFRk9SRSwKKyAgICAgIDEwMDAgKiBHU1RfTVNFQ09ORCwgLTEsIDMsIDApOworfQorCitHU1RfRU5EX1RFU1Q7CisKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrU25hcEFmdGVyUG9zaXRpb24pCit7CisgIC8qIFNlZWsgdG8gMS41cyB3aXRoIHNuYXAgYWZ0ZXIsIGl0IHNob3VsZCBtb3ZlIHRvIDJzICovCisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKDEuMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDE1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfTk9ORSwgMCwgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfU05BUF9BRlRFUiwKKyAgICAgIDIwMDAgKiBHU1RfTVNFQ09ORCwgLTEsIDIsIDApOworfQorCitHU1RfRU5EX1RFU1Q7CisKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrU25hcEJlZm9yZVNhbWVQb3NpdGlvbikKK3sKKyAgLyogU25hcCBzZWVrIHdpdGhvdXQgcG9zaXRpb24gKi8KKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoMS4wLCBHU1RfU0VFS19UWVBFX05PTkUsIEdTVF9DTE9DS19USU1FX05PTkUsCisgICAgICBHU1RfU0VFS19UWVBFX05PTkUsIDAsIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX1NOQVBfQkVGT1JFLAorICAgICAgMiAqIEdTVF9NU0VDT05ELCAtMSwgMiwgU0VHTUVOVF9TSVpFICogMyArIDEpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrU25hcEFmdGVyU2FtZVBvc2l0aW9uKQoreworICAvKiBTbmFwIHNlZWsgd2l0aG91dCBwb3NpdGlvbiAqLworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgxLjAsIEdTVF9TRUVLX1RZUEVfTk9ORSwgR1NUX0NMT0NLX1RJTUVfTk9ORSwKKyAgICAgIEdTVF9TRUVLX1RZUEVfTk9ORSwgMCwgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfU05BUF9BRlRFUiwKKyAgICAgIDMgKiBHU1RfTVNFQ09ORCwgLTEsIDEsIFNFR01FTlRfU0laRSAqIDMgKyAxKTsKK30KKworR1NUX0VORF9URVNUOworCisKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RSZXZlcnNlU2Vla1NuYXBCZWZvcmVQb3NpdGlvbikKK3sKKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoLTEuMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDEwMDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCAyNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19TTkFQX0JFRk9SRSwgMTAwMCAqIEdTVF9NU0VDT05ELAorICAgICAgMzAwMCAqIEdTVF9NU0VDT05ELCAyLCAwKTsKK30KKworR1NUX0VORF9URVNUOworCisKK0dTVF9TVEFSVF9URVNUICh0ZXN0UmV2ZXJzZVNlZWtTbmFwQWZ0ZXJQb3NpdGlvbikKK3sKKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoLTEuMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDEwMDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCAyNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19TTkFQX0FGVEVSLCAxMDAwICogR1NUX01TRUNPTkQsCisgICAgICAyMDAwICogR1NUX01TRUNPTkQsIDEsIDApOworfQorCitHU1RfRU5EX1RFU1Q7CisKK3N0YXRpYyB2b2lkCit0ZXN0RG93bmxvYWRFcnJvck1lc3NhZ2VDYWxsYmFjayAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKiBlbmdpbmUsCisgICAgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHRXJyb3IgKmVyciA9IE5VTEw7CisgIGdjaGFyICpkYmdfaW5mbyA9IE5VTEw7CisKKyAgZmFpbF91bmxlc3MgKEdTVF9NRVNTQUdFX1RZUEUgKG1zZykgPT0gR1NUX01FU1NBR0VfRVJST1IpOworICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvciAobXNnLCAmZXJyLCAmZGJnX2luZm8pOworICBHU1RfREVCVUcgKCJFcnJvciBmcm9tIGVsZW1lbnQgJXMgOiAlc1xuIiwKKyAgICAgIEdTVF9PQkpFQ1RfTkFNRSAobXNnLT5zcmMpLCBlcnItPm1lc3NhZ2UpOworICBmYWlsX3VubGVzc19lcXVhbHNfc3RyaW5nIChHU1RfT0JKRUNUX05BTUUgKG1zZy0+c3JjKSwgREVNVVhfRUxFTUVOVF9OQU1FKTsKKyAgLypHU1RfREVCVUcgKCJkYmdfaW5mbz0lc1xuIiwgZGJnX2luZm8pOyAqLworICBnX2Vycm9yX2ZyZWUgKGVycik7CisgIGdfZnJlZSAoZGJnX2luZm8pOworICBnX21haW5fbG9vcF9xdWl0IChlbmdpbmUtPmxvb3ApOworfQorCisvKgorICogVGVzdCBlcnJvciBjYXNlIG9mIGZhaWxpbmcgdG8gZG93bmxvYWQgYSBzZWdtZW50CisgKi8KK0dTVF9TVEFSVF9URVNUICh0ZXN0RG93bmxvYWRFcnJvcikKK3sKKyAgY29uc3QgZ2NoYXIgKm1wZCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+IgorICAgICAgIjxNUEQgeG1sbnM6eHNpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIiIKKyAgICAgICIgICAgIHhtbG5zPVwidXJuOm1wZWc6REFTSDpzY2hlbWE6TVBEOjIwMTFcIiIKKyAgICAgICIgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExIERBU0gtTVBELnhzZFwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtb24tZGVtYW5kOjIwMTFcIiIKKyAgICAgICIgICAgIHR5cGU9XCJzdGF0aWNcIiIKKyAgICAgICIgICAgIG1pbkJ1ZmZlclRpbWU9XCJQVDEuNTAwU1wiIgorICAgICAgIiAgICAgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIlBUMC41U1wiPiIKKyAgICAgICIgIDxQZXJpb2Q+IgorICAgICAgIiAgICA8QWRhcHRhdGlvblNldCBtaW1lVHlwZT1cImF1ZGlvL3dlYm1cIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgc3Vic2VnbWVudEFsaWdubWVudD1cInRydWVcIj4iCisgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uIGlkPVwiMTcxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcz1cInZvcmJpc1wiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBhdWRpb1NhbXBsaW5nUmF0ZT1cIjQ0MTAwXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aFNBUD1cIjFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoPVwiMTI5NTUzXCI+IgorICAgICAgIiAgICAgICAgPEF1ZGlvQ2hhbm5lbENvbmZpZ3VyYXRpb24iCisgICAgICAiICAgICAgICAgICBzY2hlbWVJZFVyaT1cInVybjptcGVnOmRhc2g6MjMwMDM6MzphdWRpb19jaGFubmVsX2NvbmZpZ3VyYXRpb246MjAxMVwiIgorICAgICAgIiAgICAgICAgICAgdmFsdWU9XCIyXCIgLz4iCisgICAgICAiICAgICAgICA8QmFzZVVSTD5hdWRpb19maWxlX25vdF9hdmFpbGFibGUud2VibTwvQmFzZVVSTD4iCisgICAgICAiICAgICAgICA8U2VnbWVudEJhc2UgaW5kZXhSYW5nZT1cIjQ0NTItNDY4NlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2VFeGFjdD1cInRydWVcIj4iCisgICAgICAiICAgICAgICAgIDxJbml0aWFsaXphdGlvbiByYW5nZT1cIjAtNDQ1MVwiIC8+IgorICAgICAgIiAgICAgICAgPC9TZWdtZW50QmFzZT4iCisgICAgICAiICAgICAgPC9SZXByZXNlbnRhdGlvbj48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKKworICBHc3REYXNoRGVtdXhUZXN0SW5wdXREYXRhIGlucHV0VGVzdERhdGFbXSA9IHsKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvdGVzdC5tcGQiLCAoZ3VpbnQ4ICopIG1wZCwgMH0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsiYXVkaW9fMDAiLCAwLCBOVUxMfSwKKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYWxsYmFja3MgdGVzdF9jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YTsKKworICB0ZXN0RGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICgpOworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X2Rhc2hkZW11eF9odHRwX3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSBnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX2NyZWF0ZTsKKyAgQ09QWV9PVVRQVVRfVEVTVF9EQVRBIChvdXRwdXRUZXN0RGF0YSwgdGVzdERhdGEpOworICB0ZXN0X2NhbGxiYWNrcy5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YTsKKyAgdGVzdF9jYWxsYmFja3MuYnVzX2Vycm9yX21lc3NhZ2UgPSB0ZXN0RG93bmxvYWRFcnJvck1lc3NhZ2VDYWxsYmFjazsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19lb3MgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhOworCisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzICgmaHR0cF9zcmNfY2FsbGJhY2tzLCBpbnB1dFRlc3REYXRhKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuIChERU1VWF9FTEVNRU5UX05BTUUsICJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIiwKKyAgICAgICZ0ZXN0X2NhbGxiYWNrcywgdGVzdERhdGEpOworICBnc3Rfb2JqZWN0X3VucmVmICh0ZXN0RGF0YSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyogZ2VuZXJhdGUgcXVlcmllcyB0byBhZGFwdGl2ZSBkZW11eCAqLworc3RhdGljIGdib29sZWFuCit0ZXN0UXVlcnlDaGVja0RhdGFSZWNlaXZlZCAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKiBlbmdpbmUsCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sCisgICAgR3N0QnVmZmVyICogYnVmZmVyLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdMaXN0ICpwYWRzOworICBHc3RQYWQgKnBhZDsKKyAgR3N0UXVlcnkgKnF1ZXJ5OworICBnYm9vbGVhbiByZXQ7CisgIGdpbnQ2NCBkdXJhdGlvbjsKKyAgZ2Jvb2xlYW4gc2Vla2FibGU7CisgIGdpbnQ2NCBzZWdtZW50X3N0YXJ0OworICBnaW50NjQgc2VnbWVudF9lbmQ7CisgIGdjaGFyICp1cmk7CisgIGdjaGFyICpyZWRpcmVjdF91cmk7CisgIGdib29sZWFuIHJlZGlyZWN0X3Blcm1hbmVudDsKKworICBwYWRzID0gR1NUX0VMRU1FTlRfUEFEUyAoc3RyZWFtLT5hcHBzaW5rKTsKKworICAvKiBBcHBTaW5rIHNob3VsZCBoYXZlIG9ubHkgMSBwYWQgKi8KKyAgZmFpbF91bmxlc3MgKHBhZHMgIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzIChnX2xpc3RfbGVuZ3RoIChwYWRzKSA9PSAxKTsKKyAgcGFkID0gR1NUX1BBRCAocGFkcy0+ZGF0YSk7CisKKyAgcXVlcnkgPSBnc3RfcXVlcnlfbmV3X2R1cmF0aW9uIChHU1RfRk9STUFUX1RJTUUpOworICByZXQgPSBnc3RfcGFkX3BlZXJfcXVlcnkgKHBhZCwgcXVlcnkpOworICBmYWlsX3VubGVzcyAocmV0ID09IFRSVUUpOworICBnc3RfcXVlcnlfcGFyc2VfZHVyYXRpb24gKHF1ZXJ5LCBOVUxMLCAmZHVyYXRpb24pOworICBmYWlsX3VubGVzcyAoZHVyYXRpb24gPT0gMTM1NzQzICogR1NUX01TRUNPTkQpOworICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKKworICBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfc2Vla2luZyAoR1NUX0ZPUk1BVF9USU1FKTsKKyAgcmV0ID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5IChwYWQsIHF1ZXJ5KTsKKyAgZmFpbF91bmxlc3MgKHJldCA9PSBUUlVFKTsKKyAgZ3N0X3F1ZXJ5X3BhcnNlX3NlZWtpbmcgKHF1ZXJ5LCBOVUxMLCAmc2Vla2FibGUsICZzZWdtZW50X3N0YXJ0LAorICAgICAgJnNlZ21lbnRfZW5kKTsKKyAgZmFpbF91bmxlc3MgKHNlZWthYmxlID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoc2VnbWVudF9zdGFydCA9PSAwKTsKKyAgZmFpbF91bmxlc3MgKHNlZ21lbnRfZW5kID09IGR1cmF0aW9uKTsKKyAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7CisKKyAgcXVlcnkgPSBnc3RfcXVlcnlfbmV3X3VyaSAoKTsKKyAgcmV0ID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5IChwYWQsIHF1ZXJ5KTsKKyAgZmFpbF91bmxlc3MgKHJldCA9PSBUUlVFKTsKKyAgZ3N0X3F1ZXJ5X3BhcnNlX3VyaSAocXVlcnksICZ1cmkpOworICBnc3RfcXVlcnlfcGFyc2VfdXJpX3JlZGlyZWN0aW9uIChxdWVyeSwgJnJlZGlyZWN0X3VyaSk7CisgIGdzdF9xdWVyeV9wYXJzZV91cmlfcmVkaXJlY3Rpb25fcGVybWFuZW50IChxdWVyeSwgJnJlZGlyZWN0X3Blcm1hbmVudCk7CisgIGZhaWxfdW5sZXNzIChzdHJjbXAgKHVyaSwgImh0dHA6Ly91bml0LnRlc3QvdGVzdC5tcGQiKSA9PSAwKTsKKyAgLyogYWRhcHRpdmUgZGVtdXggZG9lcyBub3QgcmVwbHkgd2l0aCByZWRpcmVjdCBpbmZvcm1hdGlvbiAqLworICBmYWlsX3VubGVzcyAocmVkaXJlY3RfdXJpID09IE5VTEwpOworICBmYWlsX3VubGVzcyAocmVkaXJlY3RfcGVybWFuZW50ID09IEZBTFNFKTsKKyAgZ19mcmVlICh1cmkpOworICBnX2ZyZWUgKHJlZGlyZWN0X3VyaSk7CisgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworCisgIHJldHVybiBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19yZWNlaXZlZF9kYXRhIChlbmdpbmUsCisgICAgICBzdHJlYW0sIGJ1ZmZlciwgdXNlcl9kYXRhKTsKK30KKworLyoKKyAqIFRlc3QgcXVlcmllcworICoKKyAqLworR1NUX1NUQVJUX1RFU1QgKHRlc3RRdWVyeSkKK3sKKyAgY29uc3QgZ2NoYXIgKm1wZCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+IgorICAgICAgIjxNUEQgeG1sbnM6eHNpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIiIKKyAgICAgICIgICAgIHhtbG5zPVwidXJuOm1wZWc6REFTSDpzY2hlbWE6TVBEOjIwMTFcIiIKKyAgICAgICIgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExIERBU0gtTVBELnhzZFwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtb24tZGVtYW5kOjIwMTFcIiIKKyAgICAgICIgICAgIHR5cGU9XCJzdGF0aWNcIiIKKyAgICAgICIgICAgIG1pbkJ1ZmZlclRpbWU9XCJQVDEuNTAwU1wiIgorICAgICAgIiAgICAgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIlBUMTM1Ljc0M1NcIj4iCisgICAgICAiICA8UGVyaW9kPiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgbWltZVR5cGU9XCJhdWRpby93ZWJtXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgIHN1YnNlZ21lbnRBbGlnbm1lbnQ9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbiBpZD1cIjE3MVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBjb2RlY3M9XCJ2b3JiaXNcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYXVkaW9TYW1wbGluZ1JhdGU9XCI0NDEwMFwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGhTQVA9XCIxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGJhbmR3aWR0aD1cIjEyOTU1M1wiPiIKKyAgICAgICIgICAgICAgIDxBdWRpb0NoYW5uZWxDb25maWd1cmF0aW9uIgorICAgICAgIiAgICAgICAgICAgc2NoZW1lSWRVcmk9XCJ1cm46bXBlZzpkYXNoOjIzMDAzOjM6YXVkaW9fY2hhbm5lbF9jb25maWd1cmF0aW9uOjIwMTFcIiIKKyAgICAgICIgICAgICAgICAgIHZhbHVlPVwiMlwiIC8+IgorICAgICAgIiAgICAgICAgPEJhc2VVUkw+YXVkaW8ud2VibTwvQmFzZVVSTD4iCisgICAgICAiICAgICAgICA8U2VnbWVudEJhc2UgaW5kZXhSYW5nZT1cIjQ0NTItNDY4NlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2VFeGFjdD1cInRydWVcIj4iCisgICAgICAiICAgICAgICAgIDxJbml0aWFsaXphdGlvbiByYW5nZT1cIjAtNDQ1MVwiIC8+IgorICAgICAgIiAgICAgICAgPC9TZWdtZW50QmFzZT4iCisgICAgICAiICAgICAgPC9SZXByZXNlbnRhdGlvbj48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKKyAgR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIiwgKGd1aW50OCAqKSBtcGQsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9hdWRpby53ZWJtIiwgTlVMTCwgNTAwMH0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsiYXVkaW9fMDAiLCA1MDAwLCBOVUxMfSwKKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYWxsYmFja3MgdGVzdF9jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YTsKKworICB0ZXN0RGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICgpOworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X2Rhc2hkZW11eF9odHRwX3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSBnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX2NyZWF0ZTsKKyAgQ09QWV9PVVRQVVRfVEVTVF9EQVRBIChvdXRwdXRUZXN0RGF0YSwgdGVzdERhdGEpOworICB0ZXN0X2NhbGxiYWNrcy5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPSB0ZXN0UXVlcnlDaGVja0RhdGFSZWNlaXZlZDsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19lb3MgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhOworCisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzICgmaHR0cF9zcmNfY2FsbGJhY2tzLCBpbnB1dFRlc3REYXRhKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuIChERU1VWF9FTEVNRU5UX05BTUUsCisgICAgICAiaHR0cDovL3VuaXQudGVzdC90ZXN0Lm1wZCIsICZ0ZXN0X2NhbGxiYWNrcywgdGVzdERhdGEpOworICBnc3Rfb2JqZWN0X3VucmVmICh0ZXN0RGF0YSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK3Rlc3RfZnJhZ21lbnRfZG93bmxvYWRfZXJyb3Jfc3JjX2NyZWF0ZSAoR3N0VGVzdEhUVFBTcmMgKiBzcmMsCisgICAgZ3VpbnQ2NCBvZmZzZXQsCisgICAgZ3VpbnQgbGVuZ3RoLCBHc3RCdWZmZXIgKiogcmV0YnVmLCBncG9pbnRlciBjb250ZXh0LCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIGNvbnN0IEdzdERhc2hEZW11eFRlc3RJbnB1dERhdGEgKmlucHV0ID0KKyAgICAgIChjb25zdCBHc3REYXNoRGVtdXhUZXN0SW5wdXREYXRhICopIGNvbnRleHQ7CisgIGZhaWxfdW5sZXNzIChpbnB1dCAhPSBOVUxMKTsKKyAgaWYgKCFnX3N0cl9oYXNfc3VmZml4IChpbnB1dC0+dXJpLCAiLm1wZCIpICYmIG9mZnNldCA+IDIwMDApIHsKKyAgICBHU1RfREVCVUcgKCJuZXR3b3JrX2Vycm9yICVzICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBAICVkIiwKKyAgICAgICAgaW5wdXQtPnVyaSwgb2Zmc2V0LCAyMDAwKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBSRVNPVVJDRSwgUkVBRCwKKyAgICAgICAgKCgiQSBuZXR3b3JrIGVycm9yIG9jY3VycmVkLCBvciB0aGUgc2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVjdGVkbHkuIikpLCAoIkEgbmV0d29yayBlcnJvciBvY2N1cnJlZCwgb3IgdGhlIHNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5leHBlY3RlZGx5LiIpKTsKKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgIH0KKyAgcmV0dXJuIGdzdF9kYXNoZGVtdXhfaHR0cF9zcmNfY3JlYXRlIChzcmMsIG9mZnNldCwgbGVuZ3RoLCByZXRidWYsIGNvbnRleHQsCisgICAgICB1c2VyX2RhdGEpOworfQorCisvKiBmdW5jdGlvbiB0byBjaGVjayB0b3RhbCBzaXplIG9mIGRhdGEgcmVjZWl2ZWQgYnkgQXBwU2luaworICogd2lsbCBiZSBjYWxsZWQgd2hlbiBBcHBTaW5rIHJlY2VpdmVzIGVvcy4KKyAqLworc3RhdGljIHZvaWQKK3Rlc3RGcmFnbWVudERvd25sb2FkRXJyb3JDaGVja1NpemVPZkRhdGFSZWNlaXZlZCAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKgorICAgIGVuZ2luZSwgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YSA9IEdTVF9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UgKHVzZXJfZGF0YSk7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgKnRlc3RPdXRwdXRTdHJlYW1EYXRhOworCisgIHRlc3RPdXRwdXRTdHJlYW1EYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2ZpbmRfdGVzdF9kYXRhX2J5X3N0cmVhbSAodGVzdERhdGEsIHN0cmVhbSwgTlVMTCk7CisgIGZhaWxfdW5sZXNzICh0ZXN0T3V0cHV0U3RyZWFtRGF0YSAhPSBOVUxMKTsKKworICAvKiBleHBlY3QgdG8gcmVjZWl2ZSBtb3JlIHRoYW4gMCAqLworICBmYWlsX3VubGVzcyAoc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplID4gMCwKKyAgICAgICJzaXplIHZhbGlkYXRpb24gZmFpbGVkIGZvciAlcywgZXhwZWN0ZWQgPiAwLCByZWNlaXZlZCAlZCIsCisgICAgICB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+bmFtZSwgc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplKTsKKworICAvKiBleHBlY3QgdG8gcmVjZWl2ZSBsZXNzIHRoYW4gZmlsZSBzaXplICovCisgIGZhaWxfdW5sZXNzIChzdHJlYW0tPnRvdGFsX3JlY2VpdmVkX3NpemUgPAorICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPmV4cGVjdGVkX3NpemUsCisgICAgICAic2l6ZSB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgJXMsIGV4cGVjdGVkIDwgJWQgcmVjZWl2ZWQgJWQiLAorICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPm5hbWUsIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5leHBlY3RlZF9zaXplLAorICAgICAgc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplKTsKK30KKworLyoKKyAqIFRlc3QgZnJhZ21lbnQgZG93bmxvYWQgZXJyb3IKKyAqIExldCB0aGUgYWRhcHRpdmUgZGVtdXggZG93bmxvYWQgYSBmZXcgYnl0ZXMsIHRoZW4gaW5zdHJ1Y3QgdGhlCisgKiBHc3RUZXN0SFRUUFNyYyBlbGVtZW50IHRvIGdlbmVyYXRlIGFuIGVycm9yLgorICovCitHU1RfU1RBUlRfVEVTVCAodGVzdEZyYWdtZW50RG93bmxvYWRFcnJvcikKK3sKKyAgY29uc3QgZ2NoYXIgKm1wZCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+IgorICAgICAgIjxNUEQgeG1sbnM6eHNpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIiIKKyAgICAgICIgICAgIHhtbG5zPVwidXJuOm1wZWc6REFTSDpzY2hlbWE6TVBEOjIwMTFcIiIKKyAgICAgICIgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExIERBU0gtTVBELnhzZFwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtb24tZGVtYW5kOjIwMTFcIiIKKyAgICAgICIgICAgIHR5cGU9XCJzdGF0aWNcIiIKKyAgICAgICIgICAgIG1pbkJ1ZmZlclRpbWU9XCJQVDEuNTAwU1wiIgorICAgICAgIiAgICAgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIlBUMC41U1wiPiIKKyAgICAgICIgIDxQZXJpb2Q+IgorICAgICAgIiAgICA8QWRhcHRhdGlvblNldCBtaW1lVHlwZT1cImF1ZGlvL3dlYm1cIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgc3Vic2VnbWVudEFsaWdubWVudD1cInRydWVcIj4iCisgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uIGlkPVwiMTcxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcz1cInZvcmJpc1wiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBhdWRpb1NhbXBsaW5nUmF0ZT1cIjQ0MTAwXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aFNBUD1cIjFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoPVwiMTI5NTUzXCI+IgorICAgICAgIiAgICAgICAgPEF1ZGlvQ2hhbm5lbENvbmZpZ3VyYXRpb24iCisgICAgICAiICAgICAgICAgICBzY2hlbWVJZFVyaT1cInVybjptcGVnOmRhc2g6MjMwMDM6MzphdWRpb19jaGFubmVsX2NvbmZpZ3VyYXRpb246MjAxMVwiIgorICAgICAgIiAgICAgICAgICAgdmFsdWU9XCIyXCIgLz4iCisgICAgICAiICAgICAgICA8QmFzZVVSTD5hdWRpby53ZWJtPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICAgIDxTZWdtZW50QmFzZSBpbmRleFJhbmdlPVwiNDQ1Mi00Njg2XCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZUV4YWN0PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICAgICAgPEluaXRpYWxpemF0aW9uIHJhbmdlPVwiMC00NDUxXCIgLz4iCisgICAgICAiICAgICAgICA8L1NlZ21lbnRCYXNlPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOworCisgIEdzdERhc2hEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC90ZXN0Lm1wZCIsIChndWludDggKikgbXBkLCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvYXVkaW8ud2VibSIsIE5VTEwsIDUwMDB9LAorICAgIHtOVUxMLCBOVUxMLCAwfSwKKyAgfTsKKyAgR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgaHR0cF9zcmNfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgb3V0cHV0VGVzdERhdGFbXSA9IHsKKyAgICB7ImF1ZGlvXzAwIiwgNTAwMCwgTlVMTH0sCisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzIHRlc3RfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGE7CisKKyAgdGVzdERhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAoKTsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9kYXNoZGVtdXhfaHR0cF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gdGVzdF9mcmFnbWVudF9kb3dubG9hZF9lcnJvcl9zcmNfY3JlYXRlOworICBDT1BZX09VVFBVVF9URVNUX0RBVEEgKG91dHB1dFRlc3REYXRhLCB0ZXN0RGF0YSk7CisgIHRlc3RfY2FsbGJhY2tzLmFwcHNpbmtfcmVjZWl2ZWRfZGF0YSA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19yZWNlaXZlZF9kYXRhOworICB0ZXN0X2NhbGxiYWNrcy5hcHBzaW5rX2VvcyA9IHRlc3RGcmFnbWVudERvd25sb2FkRXJyb3JDaGVja1NpemVPZkRhdGFSZWNlaXZlZDsKKyAgLyogIHRlc3RfY2FsbGJhY2tzLmRlbXV4X3NlbnRfZW9zID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhOyAqLworCisgIHRlc3RfY2FsbGJhY2tzLmJ1c19lcnJvcl9tZXNzYWdlID0gdGVzdERvd25sb2FkRXJyb3JNZXNzYWdlQ2FsbGJhY2s7CisKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsIGlucHV0VGVzdERhdGEpOworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4gKERFTVVYX0VMRU1FTlRfTkFNRSwKKyAgICAgICJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIiwgJnRlc3RfY2FsbGJhY2tzLCB0ZXN0RGF0YSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHRlc3REYXRhKTsKK30KKworR1NUX0VORF9URVNUOworCitzdGF0aWMgU3VpdGUgKgorZGFzaF9kZW11eF9zdWl0ZSAodm9pZCkKK3sKKyAgU3VpdGUgKnMgPSBzdWl0ZV9jcmVhdGUgKCJkYXNoX2RlbXV4Iik7CisgIFRDYXNlICp0Y19iYXNpY1Rlc3QgPSB0Y2FzZV9jcmVhdGUgKCJiYXNpY1Rlc3QiKTsKKworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCBzaW1wbGVUZXN0KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFR3b1BlcmlvZHMpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0UGFyYW1ldGVycyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RTZWVrKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWtLZXlVbml0UG9zaXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vla1Bvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWtVcGRhdGVTdG9wUG9zaXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vla1NuYXBCZWZvcmVQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RTZWVrU25hcEFmdGVyUG9zaXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vla1NuYXBCZWZvcmVTYW1lUG9zaXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vla1NuYXBBZnRlclNhbWVQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RSZXZlcnNlU2Vla1NuYXBCZWZvcmVQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RSZXZlcnNlU2Vla1NuYXBBZnRlclBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdERvd25sb2FkRXJyb3IpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0RnJhZ21lbnREb3dubG9hZEVycm9yKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFF1ZXJ5KTsKKworICB0Y2FzZV9hZGRfdW5jaGVja2VkX2ZpeHR1cmUgKHRjX2Jhc2ljVGVzdCwgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3Rfc2V0dXAsCisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF90ZWFyZG93bik7CisKKyAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19iYXNpY1Rlc3QpOworCisgIHJldHVybiBzOworfQorCitHU1RfQ0hFQ0tfTUFJTiAoZGFzaF9kZW11eCk7CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYwppbmRleCAwNWQ5NzExLi4zNDhiNjVjIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmMKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICIgICAgIGlkPVwidGVzdElkXCIiCiAgICAgICAiICAgICB0eXBlPVwic3RhdGljXCIiCiAgICAgICAiICAgICBhdmFpbGFiaWxpdHlTdGFydFRpbWU9XCIyMDE1LTAzLTI0VDE6MTA6NTBcIiIKLSAgICAgICIgICAgIGF2YWlsYWJpbGl0eUVuZFRpbWU9XCIyMDE1LTAzLTI0VDE6MTA6NTBcIiIKKyAgICAgICIgICAgIGF2YWlsYWJpbGl0eUVuZFRpbWU9XCIyMDE1LTAzLTI0VDE6MTA6NTAuMTIzNDU2XCIiCiAgICAgICAiICAgICBtZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uPVwiUDBZMU0yRFQxMkgxME0yMC41U1wiIgogICAgICAgIiAgICAgbWluaW11bVVwZGF0ZVBlcmlvZD1cIlAwWTFNMkRUMTJIMTBNMjAuNVNcIiIKICAgICAgICIgICAgIG1pbkJ1ZmZlclRpbWU9XCJQMFkxTTJEVDEySDEwTTIwLjVTXCIiCkBAIC0xMTksNiArMTE5LDcgQEAKICAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X2hvdXIgKGF2YWlsYWJpbGl0eVN0YXJ0VGltZSksIDEpOwogICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfbWludXRlIChhdmFpbGFiaWxpdHlTdGFydFRpbWUpLCAxMCk7CiAgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9zZWNvbmQgKGF2YWlsYWJpbGl0eVN0YXJ0VGltZSksIDUwKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X21pY3Jvc2Vjb25kIChhdmFpbGFiaWxpdHlTdGFydFRpbWUpLCAwKTsKIAogICBhdmFpbGFiaWxpdHlFbmRUaW1lID0gbXBkY2xpZW50LT5tcGRfbm9kZS0+YXZhaWxhYmlsaXR5RW5kVGltZTsKICAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X3llYXIgKGF2YWlsYWJpbGl0eUVuZFRpbWUpLCAyMDE1KTsKQEAgLTEyNywyNyArMTI4LDI5IEBACiAgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9ob3VyIChhdmFpbGFiaWxpdHlFbmRUaW1lKSwgMSk7CiAgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9taW51dGUgKGF2YWlsYWJpbGl0eUVuZFRpbWUpLCAxMCk7CiAgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9zZWNvbmQgKGF2YWlsYWJpbGl0eUVuZFRpbWUpLCA1MCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9taWNyb3NlY29uZCAoYXZhaWxhYmlsaXR5RW5kVGltZSksCisgICAgICAxMjM0NTYpOwogCi0gIGFzc2VydF9lcXVhbHNfaW50NjQgKG1wZGNsaWVudC0+bXBkX25vZGUtPm1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb24sCi0gICAgICAoZ2ludDY0KSBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgNTAwKSk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChtcGRjbGllbnQtPm1wZF9ub2RlLT5tZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uLAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOwogCi0gIGFzc2VydF9lcXVhbHNfaW50NjQgKG1wZGNsaWVudC0+bXBkX25vZGUtPm1pbmltdW1VcGRhdGVQZXJpb2QsCi0gICAgICAoZ2ludDY0KSBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgNTAwKSk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChtcGRjbGllbnQtPm1wZF9ub2RlLT5taW5pbXVtVXBkYXRlUGVyaW9kLAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOwogCi0gIGFzc2VydF9lcXVhbHNfaW50NjQgKG1wZGNsaWVudC0+bXBkX25vZGUtPm1pbkJ1ZmZlclRpbWUsCi0gICAgICAoZ2ludDY0KSBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgNTAwKSk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChtcGRjbGllbnQtPm1wZF9ub2RlLT5taW5CdWZmZXJUaW1lLAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOwogCi0gIGFzc2VydF9lcXVhbHNfaW50NjQgKG1wZGNsaWVudC0+bXBkX25vZGUtPnRpbWVTaGlmdEJ1ZmZlckRlcHRoLAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAobXBkY2xpZW50LT5tcGRfbm9kZS0+dGltZVNoaWZ0QnVmZmVyRGVwdGgsCisgICAgICBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgNTAwKSk7CiAKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAobXBkY2xpZW50LT5tcGRfbm9kZS0+c3VnZ2VzdGVkUHJlc2VudGF0aW9uRGVsYXksCi0gICAgICAoZ2ludDY0KSBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgNTAwKSk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChtcGRjbGllbnQtPm1wZF9ub2RlLT5zdWdnZXN0ZWRQcmVzZW50YXRpb25EZWxheSwKKyAgICAgIGR1cmF0aW9uX3RvX21zICgwLCAxLCAyLCAxMiwgMTAsIDIwLCA1MDApKTsKIAotICBhc3NlcnRfZXF1YWxzX2ludDY0IChtcGRjbGllbnQtPm1wZF9ub2RlLT5tYXhTZWdtZW50RHVyYXRpb24sCi0gICAgICAoZ2ludDY0KSBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgNTAwKSk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChtcGRjbGllbnQtPm1wZF9ub2RlLT5tYXhTZWdtZW50RHVyYXRpb24sCisgICAgICBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgNTAwKSk7CiAKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAobXBkY2xpZW50LT5tcGRfbm9kZS0+bWF4U3Vic2VnbWVudER1cmF0aW9uLAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAobXBkY2xpZW50LT5tcGRfbm9kZS0+bWF4U3Vic2VnbWVudER1cmF0aW9uLAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOwogCiAgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7CiB9CkBAIC0zMDEsMTAgKzMwNCwxMCBAQAogICBtZXRyaWNzTm9kZSA9IChHc3RNZXRyaWNzTm9kZSAqKSBtcGRjbGllbnQtPm1wZF9ub2RlLT5NZXRyaWNzLT5kYXRhOwogICBhc3NlcnRfZXF1YWxzX3BvaW50ZXIgKG1ldHJpY3NOb2RlLT5tZXRyaWNzLCBOVUxMKTsKICAgbWV0cmljc1JhbmdlTm9kZSA9IChHc3RNZXRyaWNzUmFuZ2VOb2RlICopIG1ldHJpY3NOb2RlLT5NZXRyaWNzUmFuZ2VzLT5kYXRhOwotICBhc3NlcnRfZXF1YWxzX2ludDY0IChtZXRyaWNzUmFuZ2VOb2RlLT5zdGFydHRpbWUsCi0gICAgICAoZ2ludDY0KSBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgNTAwKSk7Ci0gIGFzc2VydF9lcXVhbHNfaW50NjQgKG1ldHJpY3NSYW5nZU5vZGUtPmR1cmF0aW9uLAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDEyMykpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAobWV0cmljc1JhbmdlTm9kZS0+c3RhcnR0aW1lLAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAobWV0cmljc1JhbmdlTm9kZS0+ZHVyYXRpb24sCisgICAgICBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgMTIzKSk7CiAKICAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKIH0KQEAgLTM2MiwxMCArMzY1LDEwIEBACiAKICAgcGVyaW9kTm9kZSA9IChHc3RQZXJpb2ROb2RlICopIG1wZGNsaWVudC0+bXBkX25vZGUtPlBlcmlvZHMtPmRhdGE7CiAgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChwZXJpb2ROb2RlLT5pZCwgIlRlc3RJZCIpOwotICBhc3NlcnRfZXF1YWxzX2ludDY0IChwZXJpb2ROb2RlLT5zdGFydCwKLSAgICAgIChnaW50NjQpIGR1cmF0aW9uX3RvX21zICgwLCAxLCAyLCAxMiwgMTAsIDIwLCAxMjMpKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAocGVyaW9kTm9kZS0+ZHVyYXRpb24sCi0gICAgICAoZ2ludDY0KSBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgNzY1KSk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChwZXJpb2ROb2RlLT5zdGFydCwKKyAgICAgIGR1cmF0aW9uX3RvX21zICgwLCAxLCAyLCAxMiwgMTAsIDIwLCAxMjMpKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHBlcmlvZE5vZGUtPmR1cmF0aW9uLAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDc2NSkpOwogICBhc3NlcnRfZXF1YWxzX2ludCAocGVyaW9kTm9kZS0+Yml0c3RyZWFtU3dpdGNoaW5nLCAxKTsKIAogICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOwpAQCAtNTMxLDcgKzUzNCw3IEBACiAgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCiAgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCiAgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCi0gICAgICAiICA8UGVyaW9kPjxTZWdtZW50TGlzdD48L1NlZ21lbnRMaXN0PjwvUGVyaW9kPjwvTVBEPiI7CisgICAgICAiICA8UGVyaW9kPjxTZWdtZW50TGlzdCBkdXJhdGlvbj1cIjFcIj48L1NlZ21lbnRMaXN0PjwvUGVyaW9kPjwvTVBEPiI7CiAKICAgZ2Jvb2xlYW4gcmV0OwogICBHc3RNcGRDbGllbnQgKm1wZGNsaWVudCA9IGdzdF9tcGRfY2xpZW50X25ldyAoKTsKQEAgLTYwMCw2ICs2MDMsNyBAQAogICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCI+IgogICAgICAgIiAgPFBlcmlvZD4iCiAgICAgICAiICAgIDxTZWdtZW50TGlzdCB0aW1lc2NhbGU9XCIxMFwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgZHVyYXRpb249XCIxXCIiCiAgICAgICAiICAgICAgICAgICAgICAgICBwcmVzZW50YXRpb25UaW1lT2Zmc2V0PVwiMTFcIiIKICAgICAgICIgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2U9XCIyMC0yMVwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZUV4YWN0PVwiZmFsc2VcIj4iCkBAIC03MjEsNyArNzI1LDcgQEAKICAgICAgICI8TVBEIHhtbG5zPVwidXJuOm1wZWc6ZGFzaDpzY2hlbWE6bXBkOjIwMTFcIiIKICAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiPiIKICAgICAgICIgIDxQZXJpb2Q+IgotICAgICAgIiAgICA8U2VnbWVudExpc3Q+IgorICAgICAgIiAgICA8U2VnbWVudExpc3QgZHVyYXRpb249XCIwXCI+IgogICAgICAgIiAgICAgIDxCaXRzdHJlYW1Td2l0Y2hpbmcgc291cmNlVVJMPVwiVGVzdFNvdXJjZVVSTFwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2U9XCIxMDAtMjAwXCI+IgogICAgICAgIiAgICAgIDwvQml0c3RyZWFtU3dpdGNoaW5nPjwvU2VnbWVudExpc3Q+PC9QZXJpb2Q+PC9NUEQ+IjsKQEAgLTc1OSw3ICs3NjMsNyBAQAogICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiIgogICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCI+IgogICAgICAgIiAgPFBlcmlvZD4iCi0gICAgICAiICAgIDxTZWdtZW50TGlzdD4iCisgICAgICAiICAgIDxTZWdtZW50TGlzdCBkdXJhdGlvbj1cIjFcIj4iCiAgICAgICAiICAgICAgPFNlZ21lbnRVUkwgbWVkaWE9XCJUZXN0TWVkaWFcIiIKICAgICAgICIgICAgICAgICAgICAgICAgICBtZWRpYVJhbmdlPVwiMTAwLTIwMFwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgIGluZGV4PVwiVGVzdEluZGV4XCIiCkBAIC04MDEsNiArODA1LDcgQEAKICAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiPiIKICAgICAgICIgIDxQZXJpb2Q+IgogICAgICAgIiAgICA8U2VnbWVudFRlbXBsYXRlIG1lZGlhPVwiVGVzdE1lZGlhXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb249XCIwXCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgaW5kZXg9XCJUZXN0SW5kZXhcIiIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbj1cIlRlc3RJbml0aWFsaXphdGlvblwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGJpdHN0cmVhbVN3aXRjaGluZz1cIlRlc3RCaXRzdHJlYW1Td2l0Y2hpbmdcIj4iCkBAIC04NzcsNiArODgyLDcgQEAKICAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiPiIKICAgICAgICIgIDxQZXJpb2Q+IgogICAgICAgIiAgICA8U2VnbWVudFRlbXBsYXRlIHRpbWVzY2FsZT1cIjEyMzQ1NlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uPVwiMVwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgIHByZXNlbnRhdGlvblRpbWVPZmZzZXQ9XCIxMjM0NTY3ODlcIiIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICBpbmRleFJhbmdlPVwiMTAwLTIwMFwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2VFeGFjdD1cInRydWVcIj4iCkBAIC05OTgsNyArMTAwNCw3IEBACiAgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCiAgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCiAgICAgICAiICA8UGVyaW9kPiIKLSAgICAgICIgICAgPFNlZ21lbnRUZW1wbGF0ZT4iCisgICAgICAiICAgIDxTZWdtZW50VGVtcGxhdGUgZHVyYXRpb249XCIxXCI+IgogICAgICAgIiAgICAgIDxCaXRzdHJlYW1Td2l0Y2hpbmcgc291cmNlVVJMPVwiVGVzdFNvdXJjZVVSTFwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2U9XCIxMDAtMjAwXCI+IgogICAgICAgIiAgICAgIDwvQml0c3RyZWFtU3dpdGNoaW5nPjwvU2VnbWVudFRlbXBsYXRlPjwvUGVyaW9kPjwvTVBEPiI7CkBAIC0xMDc0LDEwICsxMDgwLDE0IEBACiAgIGFzc2VydF9lcXVhbHNfdWludDY0IChhZGFwdGF0aW9uU2V0LT5tYXhXaWR0aCwgMjAwMCk7CiAgIGFzc2VydF9lcXVhbHNfdWludDY0IChhZGFwdGF0aW9uU2V0LT5taW5IZWlnaHQsIDExMDApOwogICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoYWRhcHRhdGlvblNldC0+bWF4SGVpZ2h0LCAyMTAwKTsKLSAgYXNzZXJ0X2VxdWFsc191aW50NjQgKGFkYXB0YXRpb25TZXQtPm1pbkZyYW1lUmF0ZS0+bnVtLCAyNSk7Ci0gIGFzc2VydF9lcXVhbHNfdWludDY0IChhZGFwdGF0aW9uU2V0LT5taW5GcmFtZVJhdGUtPmRlbiwgMTIzKTsKLSAgYXNzZXJ0X2VxdWFsc191aW50NjQgKGFkYXB0YXRpb25TZXQtPm1heEZyYW1lUmF0ZS0+bnVtLCAyNik7Ci0gIGFzc2VydF9lcXVhbHNfdWludDY0IChhZGFwdGF0aW9uU2V0LT5tYXhGcmFtZVJhdGUtPmRlbiwgMSk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChhZGFwdGF0aW9uU2V0LT5SZXByZXNlbnRhdGlvbkJhc2UtPm1pbkZyYW1lUmF0ZS0+bnVtLAorICAgICAgMjUpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoYWRhcHRhdGlvblNldC0+UmVwcmVzZW50YXRpb25CYXNlLT5taW5GcmFtZVJhdGUtPmRlbiwKKyAgICAgIDEyMyk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChhZGFwdGF0aW9uU2V0LT5SZXByZXNlbnRhdGlvbkJhc2UtPm1heEZyYW1lUmF0ZS0+bnVtLAorICAgICAgMjYpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoYWRhcHRhdGlvblNldC0+UmVwcmVzZW50YXRpb25CYXNlLT5tYXhGcmFtZVJhdGUtPmRlbiwKKyAgICAgIDEpOwogICBhc3NlcnRfZXF1YWxzX2ludCAoYWRhcHRhdGlvblNldC0+c2VnbWVudEFsaWdubWVudC0+ZmxhZywgMSk7CiAgIGFzc2VydF9lcXVhbHNfdWludDY0IChhZGFwdGF0aW9uU2V0LT5zZWdtZW50QWxpZ25tZW50LT52YWx1ZSwgMik7CiAgIGFzc2VydF9lcXVhbHNfaW50IChhZGFwdGF0aW9uU2V0LT5zdWJzZWdtZW50QWxpZ25tZW50LT5mbGFnLCAwKTsKQEAgLTE4OTcsNyArMTkwNyw3IEBACiAgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCiAgICAgICAiICA8UGVyaW9kPiIKICAgICAgICIgICAgPEFkYXB0YXRpb25TZXQ+IgotICAgICAgIiAgICAgIDxTZWdtZW50TGlzdD48L1NlZ21lbnRMaXN0PjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOworICAgICAgIiAgICAgIDxTZWdtZW50TGlzdCBkdXJhdGlvbj1cIjFcIj48L1NlZ21lbnRMaXN0PjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOwogCiAgIGdib29sZWFuIHJldDsKICAgR3N0TXBkQ2xpZW50ICptcGRjbGllbnQgPSBnc3RfbXBkX2NsaWVudF9uZXcgKCk7CkBAIC0xOTMxLDYgKzE5NDEsNyBAQAogICAgICAgIiAgPFBlcmlvZD4iCiAgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0PiIKICAgICAgICIgICAgICA8U2VnbWVudFRlbXBsYXRlIG1lZGlhPVwiVGVzdE1lZGlhXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbj1cIjFcIiIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PVwiVGVzdEluZGV4XCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbj1cIlRlc3RJbml0aWFsaXphdGlvblwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgYml0c3RyZWFtU3dpdGNoaW5nPVwiVGVzdEJpdHN0cmVhbVN3aXRjaGluZ1wiPiIKQEAgLTE5NzEsMTEgKzE5ODIsMTIgQEAKICAgICAgICI8TVBEIHhtbG5zPVwidXJuOm1wZWc6ZGFzaDpzY2hlbWE6bXBkOjIwMTFcIiIKICAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiPiIKICAgICAgICIgIDxQZXJpb2Q+IgotICAgICAgIiAgICA8U2VnbWVudFRlbXBsYXRlIG1lZGlhPVwiUGFyZW50TWVkaWFcIiAiCisgICAgICAiICAgIDxTZWdtZW50VGVtcGxhdGUgbWVkaWE9XCJQYXJlbnRNZWRpYVwiIGR1cmF0aW9uPVwiMVwiICIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICBpbml0aWFsaXphdGlvbj1cIlBhcmVudEluaXRpYWxpemF0aW9uXCI+IgogICAgICAgIiAgICA8L1NlZ21lbnRUZW1wbGF0ZT4iCiAgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0PiIKICAgICAgICIgICAgICA8U2VnbWVudFRlbXBsYXRlIG1lZGlhPVwiVGVzdE1lZGlhXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbj1cIjFcIiIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PVwiVGVzdEluZGV4XCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICBiaXRzdHJlYW1Td2l0Y2hpbmc9XCJUZXN0Qml0c3RyZWFtU3dpdGNoaW5nXCI+IgogICAgICAgIiAgICAgIDwvU2VnbWVudFRlbXBsYXRlPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOwpAQCAtMjAxNiw3ICsyMDI4LDcgQEAKICAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiPiIKICAgICAgICIgIDxQZXJpb2Q+IgogICAgICAgIiAgICA8QWRhcHRhdGlvblNldD4iCi0gICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uIGlkPVwiVGVzdCBJZFwiIgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbiBpZD1cIlRlc3RfSWRcIiIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoPVwiMTAwXCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHF1YWxpdHlSYW5raW5nPVwiMjAwXCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY3lJZD1cIm9uZSB0d28gdGhyZWVcIiIKQEAgLTIwMzMsNyArMjA0NSw3IEBACiAgIGFkYXB0YXRpb25TZXQgPSAoR3N0QWRhcHRhdGlvblNldE5vZGUgKikgcGVyaW9kTm9kZS0+QWRhcHRhdGlvblNldHMtPmRhdGE7CiAgIHJlcHJlc2VudGF0aW9uID0gKEdzdFJlcHJlc2VudGF0aW9uTm9kZSAqKQogICAgICAgYWRhcHRhdGlvblNldC0+UmVwcmVzZW50YXRpb25zLT5kYXRhOwotICBhc3NlcnRfZXF1YWxzX3N0cmluZyAocmVwcmVzZW50YXRpb24tPmlkLCAiVGVzdCBJZCIpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAocmVwcmVzZW50YXRpb24tPmlkLCAiVGVzdF9JZCIpOwogICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAocmVwcmVzZW50YXRpb24tPmJhbmR3aWR0aCwgMTAwKTsKICAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHJlcHJlc2VudGF0aW9uLT5xdWFsaXR5UmFua2luZywgMjAwKTsKICAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHJlcHJlc2VudGF0aW9uLT5kZXBlbmRlbmN5SWRbMF0sICJvbmUiKTsKQEAgLTIyNzcsNyArMjI4OSw3IEBACiAgICAgICAiICA8UGVyaW9kPiIKICAgICAgICIgICAgPEFkYXB0YXRpb25TZXQ+IgogICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbj4iCi0gICAgICAiICAgICAgICA8U2VnbWVudExpc3Q+IgorICAgICAgIiAgICAgICAgPFNlZ21lbnRMaXN0IGR1cmF0aW9uPVwiMVwiPiIKICAgICAgICIgICAgICAgIDwvU2VnbWVudExpc3Q+IgogICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CiAKQEAgLTIzMTYsNyArMjMyOCw3IEBACiAgICAgICAiICA8UGVyaW9kPiIKICAgICAgICIgICAgPEFkYXB0YXRpb25TZXQ+IgogICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbj4iCi0gICAgICAiICAgICAgICA8U2VnbWVudFRlbXBsYXRlPiIKKyAgICAgICIgICAgICAgIDxTZWdtZW50VGVtcGxhdGUgZHVyYXRpb249XCIxXCI+IgogICAgICAgIiAgICAgICAgPC9TZWdtZW50VGVtcGxhdGU+IgogICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CiAKQEAgLTI0MjEsNiArMjQzMyw0OCBAQAogICAgICAgJnNlbGVjdGVkX21ldGhvZCk7CiAgIGZhaWxfaWYgKHVybHMgPT0gTlVMTCk7CiAgIGFzc2VydF9lcXVhbHNfaW50IChzZWxlY3RlZF9tZXRob2QsIEdTVF9NUERfVVRDVElNSU5HX1RZUEVfSFRUUF9YU0RBVEUpOworICB1cmxzID0KKyAgICAgIGdzdF9tcGRfY2xpZW50X2dldF91dGNfdGltaW5nX3NvdXJjZXMgKG1wZGNsaWVudCwKKyAgICAgIEdTVF9NUERfVVRDVElNSU5HX1RZUEVfTlRQLCAmc2VsZWN0ZWRfbWV0aG9kKTsKKyAgZmFpbF9pZiAodXJscyA9PSBOVUxMKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHNlbGVjdGVkX21ldGhvZCwgR1NUX01QRF9VVENUSU1JTkdfVFlQRV9OVFApOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ19zdHJ2X2xlbmd0aCAodXJscyksIDQpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAodXJsc1swXSwgIjAuZXVyb3BlLnBvb2wubnRwLm9yZyIpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAodXJsc1sxXSwgIjEuZXVyb3BlLnBvb2wubnRwLm9yZyIpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAodXJsc1syXSwgIjIuZXVyb3BlLnBvb2wubnRwLm9yZyIpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAodXJsc1szXSwgIjMuZXVyb3BlLnBvb2wubnRwLm9yZyIpOworICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKy8qCisgKiBUZXN0IHBhcnNpbmcgaW52YWxpZCBVVENUaW1pbmcgdmFsdWVzOgorICogLSBlbGVtZW50cyB3aXRoIG5vIHNjaGVtZUlkVXJpIHByb3BlcnR5IHNob3VsZCBiZSByZWplY3RlZAorICogLSBlbGVtZW50cyB3aXRoIG5vIHZhbHVlIHByb3BlcnR5IHNob3VsZCBiZSByZWplY3RlZAorICogLSBlbGVtZW50cyB3aXRoIHVucmVjb2duaXNlZCBVVENUaW1pbmcgc2NoZW1lIHNob3VsZCBiZSByZWplY3RlZAorICogLSBlbGVtZW50cyB3aXRoIGVtcHR5IHZhbHVlcyBzaG91bGQgYmUgcmVqZWN0ZWQKKyAqCisgKi8KK0dTVF9TVEFSVF9URVNUIChkYXNoX21wZHBhcnNlcl91dGN0aW1pbmdfaW52YWxpZF92YWx1ZSkKK3sKKyAgY29uc3QgZ2NoYXIgKnhtbCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCisgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCisgICAgICAiIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiPiIKKyAgICAgICI8VVRDVGltaW5nIGludmFsaWRfc2NoZW1lSWRVcmk9XCJkdW1teS51cmkuc2NoZW1lXCIgdmFsdWU9XCJkdW1teSB2YWx1ZVwiLz4iCisgICAgICAiPFVUQ1RpbWluZyBzY2hlbWVJZFVyaT1cInVybjptcGVnOmRhc2g6dXRjOm50cDoyMDE0XCIgaW52YWxpZF92YWx1ZT1cImR1bW15IHZhbHVlXCIvPiIKKyAgICAgICI8VVRDVGltaW5nIHNjaGVtZUlkVXJpPVwiZHVtbXkudXJpLnNjaGVtZVwiIHZhbHVlPVwiZHVtbXkgdmFsdWVcIi8+IgorICAgICAgIjxVVENUaW1pbmcgc2NoZW1lSWRVcmk9XCJ1cm46bXBlZzpkYXNoOnV0YzpudHA6MjAxNFwiIHZhbHVlPVwiXCIvPiIKKyAgICAgICI8L01QRD4iOworICBnYm9vbGVhbiByZXQ7CisgIEdzdE1wZENsaWVudCAqbXBkY2xpZW50ID0gZ3N0X21wZF9jbGllbnRfbmV3ICgpOworCisgIHJldCA9IGdzdF9tcGRfcGFyc2UgKG1wZGNsaWVudCwgeG1sLCAoZ2ludCkgc3RybGVuICh4bWwpKTsKKworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKyAgZmFpbF9pZiAobXBkY2xpZW50LT5tcGRfbm9kZSA9PSBOVUxMKTsKKyAgZmFpbF9pZiAobXBkY2xpZW50LT5tcGRfbm9kZS0+VVRDVGltaW5nICE9IE5VTEwpOwogICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOwogfQogCkBAIC0yNDU5LDIwICsyNTEzLDYwIEBACiAgKi8KIEdTVF9TVEFSVF9URVNUIChkYXNoX21wZHBhcnNlcl90ZW1wbGF0ZV9wYXJzaW5nKQogewotICBjb25zdCBnY2hhciAqdXJsX3RlbXBsYXRlOwogICBjb25zdCBnY2hhciAqaWQgPSAiVGVzdElkIjsKICAgZ3VpbnQgbnVtYmVyID0gNzsKICAgZ3VpbnQgYmFuZHdpZHRoID0gMjUwMDsKICAgZ3VpbnQ2NCB0aW1lID0gMTAwOwogICBnY2hhciAqcmVzdWx0OwogCi0gIHVybF90ZW1wbGF0ZSA9ICJUZXN0TWVkaWEkQmFuZHdpZHRoJCQkdGVzdCI7Ci0gIHJlc3VsdCA9Ci0gICAgICBnc3RfbXBkcGFyc2VyX2J1aWxkX1VSTF9mcm9tX3RlbXBsYXRlICh1cmxfdGVtcGxhdGUsIGlkLCBudW1iZXIsCi0gICAgICBiYW5kd2lkdGgsIHRpbWUpOwotICBhc3NlcnRfZXF1YWxzX3N0cmluZyAocmVzdWx0LCAiVGVzdE1lZGlhMjUwMCR0ZXN0Iik7Ci0gIGdfZnJlZSAocmVzdWx0KTsKKyAgc3RydWN0IFRlc3RVcmwKKyAgeworICAgIGNvbnN0IGdjaGFyICp1cmxUZW1wbGF0ZTsKKyAgICBjb25zdCBnY2hhciAqZXhwZWN0ZWRSZXNwb25zZTsKKyAgfTsKIAorICAvKiB2YXJpb3VzIHRlc3Qgc2NlbmFyaW9zIHRvIGF0dGVtcHQgKi8KKyAgc3RydWN0IFRlc3RVcmwgdGVzdFVybFtdID0geworICAgIHsiIiwgTlVMTH0sICAgICAgICAgICAgICAgICAvKiBlbXB0eSBzdHJpbmcgZm9yIHRlbXBsYXRlICovCisgICAgeyIkJCIsICIkIn0sICAgICAgICAgICAgICAgIC8qIGVzY2FwZWQgJCAqLworICAgIHsiTnVtYmVyIiwgIk51bWJlciJ9LCAgICAgICAvKiBzdHJpbmcgc2ltaWxhciB3aXRoIGFuIGlkZW50aWZpZXIsIGJ1dCB3aXRob3V0ICQgKi8KKyAgICB7Ik51bWJlciROdW1iZXIkIiwgIk51bWJlcjcifSwgICAgICAvKiBOdW1iZXIgaWRlbnRpZmllciAqLworICAgIHsiTnVtYmVyJE51bWJlciQkJCIsICJOdW1iZXI3JCJ9LCAgIC8qIE51bWJlciBpZGVudGlmaWVyIGZvbGxvd2VkIGJ5ICQkICovCisgICAgeyJOdW1iZXIkTnVtYmVyJE51bWJlciROdW1iZXIkIiwgIk51bWJlcjdOdW1iZXI3In0sIC8qIHNlcmllcyBvZiAiTnVtYmVyIiBzdHJpbmcgYW5kIE51bWJlciBpZGVudGlmaWVyICovCisgICAgeyJSZXByZXNlbnRhdGlvbiRSZXByZXNlbnRhdGlvbklEJCIsICJSZXByZXNlbnRhdGlvblRlc3RJZCJ9LCAgICAgICAvKiBSZXByZXNlbnRhdGlvbklEIGlkZW50aWZpZXIgKi8KKyAgICB7IlRlc3RNZWRpYSRCYW5kd2lkdGgkJCR0ZXN0IiwgIlRlc3RNZWRpYTI1MDAkdGVzdCJ9LCAgICAgICAvKiBCYW5kd2lkdGggaWRlbnRpZmllciAqLworICAgIHsiVGVzdE1lZGlhJFRpbWUkIiwgIlRlc3RNZWRpYTEwMCJ9LCAgICAgICAgLyogVGltZSBpZGVudGlmaWVyICovCisgICAgeyJUZXN0TWVkaWEkVGltZSIsIE5VTEx9LCAgIC8qIElkZW50aWZpZXIgbm90IGZpbmlzaGVkIHdpdGggJCAqLworICAgIHsiVGltZSRUaW1lJWQkIiwgTlVMTH0sICAgICAvKiB1c2FnZSBvZiAlZCAobm8gd2lkdGgpICovCisgICAgeyJUaW1lJFRpbWUlMGQkIiwgIlRpbWUxMDAifSwgICAgICAgLyogdXNhZ2Ugb2YgZm9ybWF0IHNtYWxsZXIgdGhhbiBudW1iZXIgb2YgZGlnaXRzICovCisgICAgeyJUaW1lJFRpbWUlMDFkJCIsICJUaW1lMTAwIn0sICAgICAgLyogdXNhZ2Ugb2YgZm9ybWF0IHNtYWxsZXIgdGhhbiBudW1iZXIgb2YgZGlnaXRzICovCisgICAgeyJUaW1lJFRpbWUlMDVkJCIsICJUaW1lMDAxMDAifSwgICAgLyogdXNhZ2Ugb2YgZm9ybWF0IGJpZ2dlciB0aGFuIG51bWJlciBvZiBkaWdpdHMgKi8KKyAgICB7IlRpbWUkVGltZSUwNWR0ZXN0JCIsICJUaW1lMDAxMDB0ZXN0In0sICAgIC8qIHVzYWdlIGV4dHJhIHRleHQgaW4gZm9ybWF0ICovCisgICAgeyJUaW1lJFRpbWUlM2QkIiwgTlVMTH0sICAgIC8qIGluY29ycmVjdCBmb3JtYXQ6IHdpZHRoIGRvZXMgbm90IHN0YXJ0IHdpdGggMCAqLworICAgIHsiVGltZSRUaW1lJTAtNGQkIiwgTlVMTH0sICAvKiBpbmNvcnJlY3QgZm9ybWF0OiB3aWR0aCBpcyBub3QgYSBudW1iZXIgKi8KKyAgICB7IlRpbWUkVGltZSUwJCIsIE5VTEx9LCAgICAgLyogaW5jb3JyZWN0IGZvcm1hdDogbm8gZCwgeCBvciB1ICovCisgICAgeyJUaW1lJFRpbWUxJTAxZCQiLCBOVUxMfSwgIC8qIGluY29ycmVjdCBmb3JtYXQ6IGRvZXMgbm90IHN0YXJ0IHdpdGggJSBhZnRlciBpZGVudGlmaWVyICovCisgICAgeyIkQmFuZHdpZHRoJS9pbml0Lm1wNHYiLCBOVUxMfSwgICAgLyogaW5jb3JyZWN0IGlkZW50aWZpZXI6IG5vdCBmaW5pc2hlZCB3aXRoICQgKi8KKyAgICB7IiROdW1iZXIlLyRUaW1lJC5tcDR2IiwgTlVMTH0sICAgICAvKiBpbmNvcnJlY3QgbnVtYmVyIG9mICQgc2VwYXJhdG9ycyAqLworICAgIHsiJFJlcHJlc2VudGF0aW9uSUQxJCIsIE5VTEx9LCAgICAgIC8qIGluY29ycmVjdCBpZGVudGlmaWVyICovCisgICAgeyIkQmFuZHdpZHRoMSQiLCBOVUxMfSwgICAgIC8qIGluY29ycmVjdCBpZGVudGlmaWVyICovCisgICAgeyIkTnVtYmVyMSQiLCBOVUxMfSwgICAgICAgIC8qIGluY29ycmVjdCBpZGVudGlmaWVyICovCisgICAgeyIkUmVwcmVzZW50YXRpb25JRCUwMWQkIiwgTlVMTH0sICAgLyogaW5jb3JyZWN0IGZvcm1hdDogUmVwcmVzZW50YXRpb25JRCBkb2VzIG5vdCBzdXBwb3J0IGZvcm1hdHRpbmcgKi8KKyAgICB7IlRpbWUkVGltZSUwNXUkIiwgTlVMTH0sICAgLyogJXUgZm9ybWF0ICovCisgICAgeyJUaW1lJFRpbWUlMDV4JCIsIE5VTEx9LCAgIC8qICV4IGZvcm1hdCAqLworICAgIHsiVGltZSRUaW1lJTA1dXRlc3QkIiwgTlVMTH0sICAgICAgIC8qICV1IGZvcm1hdCBmb2xsb3dlZCBieSB0ZXh0ICovCisgICAgeyJUaW1lJFRpbWUlMDV4dGVzdCQiLCBOVUxMfSwgICAgICAgLyogJXggZm9ybWF0IGZvbGxvd2VkIGJ5IHRleHQgKi8KKyAgICB7IlRpbWUkVGltZSUwNXh0ZXN0JSQiLCBOVUxMfSwgICAgICAvKiBzZWNvbmQgJSBjaGFyYWN0ZXIgaW4gZm9ybWF0ICovCisgIH07CisKKyAgZ3VpbnQgY291bnQgPSBzaXplb2YgKHRlc3RVcmwpIC8gc2l6ZW9mICh0ZXN0VXJsWzBdKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgcmVzdWx0ID0KKyAgICAgICAgZ3N0X21wZHBhcnNlcl9idWlsZF9VUkxfZnJvbV90ZW1wbGF0ZSAodGVzdFVybFtpXS51cmxUZW1wbGF0ZSwgaWQsCisgICAgICAgIG51bWJlciwgYmFuZHdpZHRoLCB0aW1lKTsKKyAgICBhc3NlcnRfZXF1YWxzX3N0cmluZyAocmVzdWx0LCB0ZXN0VXJsW2ldLmV4cGVjdGVkUmVzcG9uc2UpOworICAgIGdfZnJlZSAocmVzdWx0KTsKKyAgfQogfQogCiBHU1RfRU5EX1RFU1Q7CkBAIC0yNTQxLDYgKzI2MzUsMTE0IEBACiBHU1RfRU5EX1RFU1Q7CiAKIC8qCisgKiBUZXN0IGJpdHN0cmVhbVN3aXRjaGluZyBpbmhlcml0YW5jZSBmcm9tIFBlcmlvZCB0byBBZGFwdGF0aW9uU2V0CisgKgorICogRGVzY3JpcHRpb24gb2YgYmlzdHJlYW1Td2l0Y2hpbmcgYXR0cmlidXRlIGluIFBlcmlvZDoKKyAqICJXaGVuIHNldCB0byDigJh0cnVl4oCZLCB0aGlzIGlzIGVxdWl2YWxlbnQgYXMgaWYgdGhlCisgKiBBZGFwdGF0aW9uU2V0QGJpdHN0cmVhbVN3aXRjaGluZyBmb3IgZWFjaCBBZGFwdGF0aW9uIFNldCBjb250YWluZWQgaW4gdGhpcworICogUGVyaW9kIGlzIHNldCB0byAndHJ1ZScuIEluIHRoaXMgY2FzZSwgdGhlIEFkYXB0YXRpb25TZXRAYml0c3RyZWFtU3dpdGNoaW5nCisgKiBhdHRyaWJ1dGUgc2hhbGwgbm90IGJlIHNldCB0byAnZmFsc2UnIGZvciBhbnkgQWRhcHRhdGlvbiBTZXQgaW4gdGhpcyBQZXJpb2QiCisgKgorICovCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfYml0c3RyZWFtU3dpdGNoaW5nX2luaGVyaXRhbmNlKQoreworICBHTGlzdCAqYWRhcHRhdGlvblNldHM7CisgIEdzdEFkYXB0YXRpb25TZXROb2RlICphZGFwdF9zZXQ7CisgIGd1aW50IGFjdGl2ZVN0cmVhbXM7CisgIEdzdEFjdGl2ZVN0cmVhbSAqYWN0aXZlU3RyZWFtOworICBHc3RDYXBzICpjYXBzOworICBHc3RTdHJ1Y3R1cmUgKnM7CisgIGdib29sZWFuIGJpdHN0cmVhbVN3aXRjaGluZ0ZsYWc7CisKKyAgY29uc3QgZ2NoYXIgKnhtbCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCisgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCisgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCisgICAgICAiICA8UGVyaW9kIGlkPVwiUGVyaW9kMFwiIgorICAgICAgIiAgICAgICAgICBkdXJhdGlvbj1cIlAwWTBNMURUMUgxTTFTXCIiCisgICAgICAiICAgICAgICAgIGJpdHN0cmVhbVN3aXRjaGluZz1cInRydWVcIj4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IGlkPVwiMVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICBtaW1lVHlwZT1cInZpZGVvL21wNFwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+IgorICAgICAgIiAgICA8L0FkYXB0YXRpb25TZXQ+IgorICAgICAgIiAgICA8QWRhcHRhdGlvblNldCBpZD1cIjJcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgbWltZVR5cGU9XCJhdWRpb1wiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICBiaXRzdHJlYW1Td2l0Y2hpbmc9XCJmYWxzZVwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgZ2Jvb2xlYW4gcmV0OworICBHc3RNcGRDbGllbnQgKm1wZGNsaWVudCA9IGdzdF9tcGRfY2xpZW50X25ldyAoKTsKKworICByZXQgPSBnc3RfbXBkX3BhcnNlIChtcGRjbGllbnQsIHhtbCwgKGdpbnQpIHN0cmxlbiAoeG1sKSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIFRSVUUpOworCisgIC8qIHByb2Nlc3MgdGhlIHhtbCBkYXRhICovCisgIHJldCA9IGdzdF9tcGRfY2xpZW50X3NldHVwX21lZGlhX3ByZXNlbnRhdGlvbiAobXBkY2xpZW50LCBHU1RfQ0xPQ0tfVElNRV9OT05FLAorICAgICAgLTEsIE5VTEwpOworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKworICAvKiBnZXQgdGhlIGxpc3Qgb2YgYWRhcHRhdGlvbiBzZXRzIG9mIHRoZSBmaXJzdCBwZXJpb2QgKi8KKyAgYWRhcHRhdGlvblNldHMgPSBnc3RfbXBkX2NsaWVudF9nZXRfYWRhcHRhdGlvbl9zZXRzIChtcGRjbGllbnQpOworICBmYWlsX2lmIChhZGFwdGF0aW9uU2V0cyA9PSBOVUxMKTsKKworICAvKiBzZXR1cCBzdHJlYW1pbmcgZnJvbSB0aGUgZmlyc3QgYWRhcHRhdGlvbiBzZXQgKi8KKyAgYWRhcHRfc2V0ID0gKEdzdEFkYXB0YXRpb25TZXROb2RlICopIGdfbGlzdF9udGhfZGF0YSAoYWRhcHRhdGlvblNldHMsIDApOworICBmYWlsX2lmIChhZGFwdF9zZXQgPT0gTlVMTCk7CisgIHJldCA9IGdzdF9tcGRfY2xpZW50X3NldHVwX3N0cmVhbWluZyAobXBkY2xpZW50LCBhZGFwdF9zZXQpOworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKworICAvKiBzZXR1cCBzdHJlYW1pbmcgZnJvbSB0aGUgc2Vjb25kIGFkYXB0YXRpb24gc2V0ICovCisgIGFkYXB0X3NldCA9IChHc3RBZGFwdGF0aW9uU2V0Tm9kZSAqKSBnX2xpc3RfbnRoX2RhdGEgKGFkYXB0YXRpb25TZXRzLCAxKTsKKyAgZmFpbF9pZiAoYWRhcHRfc2V0ID09IE5VTEwpOworICByZXQgPSBnc3RfbXBkX2NsaWVudF9zZXR1cF9zdHJlYW1pbmcgKG1wZGNsaWVudCwgYWRhcHRfc2V0KTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisKKyAgLyogMiBhY3RpdmUgc3RyZWFtcyAqLworICBhY3RpdmVTdHJlYW1zID0gZ3N0X21wZHBhcnNlcl9nZXRfbmJfYWN0aXZlX3N0cmVhbSAobXBkY2xpZW50KTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGFjdGl2ZVN0cmVhbXMsIDIpOworCisgIC8qIGdldCBkZXRhaWxzIG9mIHRoZSBmaXJzdCBhY3RpdmUgc3RyZWFtICovCisgIGFjdGl2ZVN0cmVhbSA9IGdzdF9tcGRwYXJzZXJfZ2V0X2FjdGl2ZV9zdHJlYW1fYnlfaW5kZXggKG1wZGNsaWVudCwgMCk7CisgIGZhaWxfaWYgKGFjdGl2ZVN0cmVhbSA9PSBOVUxMKTsKKworICBhc3NlcnRfZXF1YWxzX2ludCAoYWN0aXZlU3RyZWFtLT5taW1lVHlwZSwgR1NUX1NUUkVBTV9WSURFTyk7CisgIGNhcHMgPSBnc3RfbXBkX2NsaWVudF9nZXRfc3RyZWFtX2NhcHMgKGFjdGl2ZVN0cmVhbSk7CisgIGZhaWxfdW5sZXNzIChjYXBzICE9IE5VTEwpOworICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzKSwgInZpZGVvL3F1aWNrdGltZSIpOworICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CisKKyAgLyogaW5oZXJpdGVkIGZyb20gUGVyaW9kJ3MgYml0c3RyZWFtU3dpdGNoaW5nICovCisgIGJpdHN0cmVhbVN3aXRjaGluZ0ZsYWcgPQorICAgICAgZ3N0X21wZF9jbGllbnRfZ2V0X2JpdHN0cmVhbV9zd2l0Y2hpbmdfZmxhZyAoYWN0aXZlU3RyZWFtKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGJpdHN0cmVhbVN3aXRjaGluZ0ZsYWcsIFRSVUUpOworCisgIC8qIGdldCBkZXRhaWxzIG9mIHRoZSBzZWNvbmQgYWN0aXZlIHN0cmVhbSAqLworICBhY3RpdmVTdHJlYW0gPSBnc3RfbXBkcGFyc2VyX2dldF9hY3RpdmVfc3RyZWFtX2J5X2luZGV4IChtcGRjbGllbnQsIDEpOworICBmYWlsX2lmIChhY3RpdmVTdHJlYW0gPT0gTlVMTCk7CisKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGFjdGl2ZVN0cmVhbS0+bWltZVR5cGUsIEdTVF9TVFJFQU1fQVVESU8pOworICBjYXBzID0gZ3N0X21wZF9jbGllbnRfZ2V0X3N0cmVhbV9jYXBzIChhY3RpdmVTdHJlYW0pOworICBmYWlsX3VubGVzcyAoY2FwcyAhPSBOVUxMKTsKKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAocyksICJhdWRpbyIpOworICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CisKKyAgLyogc2V0IHRvIEZBTFNFIGluIG91ciBleGFtcGxlLCBidXQgb3ZlcndyaXR0ZW4gdG8gVFJVRSBieSBQZXJpb2QncworICAgKiBiaXRzdHJlYW1Td2l0Y2hpbmcKKyAgICovCisgIGJpdHN0cmVhbVN3aXRjaGluZ0ZsYWcgPQorICAgICAgZ3N0X21wZF9jbGllbnRfZ2V0X2JpdHN0cmVhbV9zd2l0Y2hpbmdfZmxhZyAoYWN0aXZlU3RyZWFtKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGJpdHN0cmVhbVN3aXRjaGluZ0ZsYWcsIFRSVUUpOworCisgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyoKICAqIFRlc3QgdmFyaW91cyBkdXJhdGlvbiBmb3JtYXRzCiAgKi8KIEdTVF9TVEFSVF9URVNUIChkYXNoX21wZHBhcnNlcl92YXJpb3VzX2R1cmF0aW9uX2Zvcm1hdHMpCkBAIC0yNTc1LDUwICsyNzc3LDUwIEBACiAgIHBlcmlvZE5vZGUgPQogICAgICAgKEdzdFBlcmlvZE5vZGUgKikgZ19saXN0X250aF9kYXRhIChtcGRjbGllbnQtPm1wZF9ub2RlLT5QZXJpb2RzLCAwKTsKICAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHBlcmlvZE5vZGUtPmlkLCAiUGVyaW9kMCIpOwotICBhc3NlcnRfZXF1YWxzX2ludDY0IChwZXJpb2ROb2RlLT5zdGFydCwKLSAgICAgIChnaW50NjQpIGR1cmF0aW9uX3RvX21zICgwLCAwLCAwLCAwLCAwLCAxLCAwKSk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChwZXJpb2ROb2RlLT5zdGFydCwKKyAgICAgIGR1cmF0aW9uX3RvX21zICgwLCAwLCAwLCAwLCAwLCAxLCAwKSk7CiAKICAgcGVyaW9kTm9kZSA9CiAgICAgICAoR3N0UGVyaW9kTm9kZSAqKSBnX2xpc3RfbnRoX2RhdGEgKG1wZGNsaWVudC0+bXBkX25vZGUtPlBlcmlvZHMsIDEpOwogICBhc3NlcnRfZXF1YWxzX3N0cmluZyAocGVyaW9kTm9kZS0+aWQsICJQZXJpb2QxIik7Ci0gIGFzc2VydF9lcXVhbHNfaW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDAsIDAsIDAsIDAsIDEsIDUwMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAocGVyaW9kTm9kZS0+c3RhcnQsCisgICAgICBkdXJhdGlvbl90b19tcyAoMCwgMCwgMCwgMCwgMCwgMSwgNTAwKSk7CiAKICAgcGVyaW9kTm9kZSA9CiAgICAgICAoR3N0UGVyaW9kTm9kZSAqKSBnX2xpc3RfbnRoX2RhdGEgKG1wZGNsaWVudC0+bXBkX25vZGUtPlBlcmlvZHMsIDIpOwogICBhc3NlcnRfZXF1YWxzX3N0cmluZyAocGVyaW9kTm9kZS0+aWQsICJQZXJpb2QyIik7Ci0gIGFzc2VydF9lcXVhbHNfaW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDAsIDAsIDAsIDAsIDEsIDcwMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAocGVyaW9kTm9kZS0+c3RhcnQsCisgICAgICBkdXJhdGlvbl90b19tcyAoMCwgMCwgMCwgMCwgMCwgMSwgNzAwKSk7CiAKICAgcGVyaW9kTm9kZSA9CiAgICAgICAoR3N0UGVyaW9kTm9kZSAqKSBnX2xpc3RfbnRoX2RhdGEgKG1wZGNsaWVudC0+bXBkX25vZGUtPlBlcmlvZHMsIDMpOwogICBhc3NlcnRfZXF1YWxzX3N0cmluZyAocGVyaW9kTm9kZS0+aWQsICJQZXJpb2QzIik7Ci0gIGFzc2VydF9lcXVhbHNfaW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDAsIDAsIDAsIDEsIDAsIDApKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDAsIDAsIDAsIDEsIDAsIDApKTsKIAogICBwZXJpb2ROb2RlID0KICAgICAgIChHc3RQZXJpb2ROb2RlICopIGdfbGlzdF9udGhfZGF0YSAobXBkY2xpZW50LT5tcGRfbm9kZS0+UGVyaW9kcywgNCk7CiAgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChwZXJpb2ROb2RlLT5pZCwgIlBlcmlvZDQiKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAocGVyaW9kTm9kZS0+c3RhcnQsCi0gICAgICAoZ2ludDY0KSBkdXJhdGlvbl90b19tcyAoMCwgMCwgMCwgMSwgMCwgMCwgMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAocGVyaW9kTm9kZS0+c3RhcnQsCisgICAgICBkdXJhdGlvbl90b19tcyAoMCwgMCwgMCwgMSwgMCwgMCwgMCkpOwogCiAgIHBlcmlvZE5vZGUgPQogICAgICAgKEdzdFBlcmlvZE5vZGUgKikgZ19saXN0X250aF9kYXRhIChtcGRjbGllbnQtPm1wZF9ub2RlLT5QZXJpb2RzLCA1KTsKICAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHBlcmlvZE5vZGUtPmlkLCAiUGVyaW9kNSIpOwotICBhc3NlcnRfZXF1YWxzX2ludDY0IChwZXJpb2ROb2RlLT5zdGFydCwKLSAgICAgIChnaW50NjQpIGR1cmF0aW9uX3RvX21zICgwLCAwLCAxLCAwLCAwLCAwLCAwKSk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChwZXJpb2ROb2RlLT5zdGFydCwKKyAgICAgIGR1cmF0aW9uX3RvX21zICgwLCAwLCAxLCAwLCAwLCAwLCAwKSk7CiAKICAgcGVyaW9kTm9kZSA9CiAgICAgICAoR3N0UGVyaW9kTm9kZSAqKSBnX2xpc3RfbnRoX2RhdGEgKG1wZGNsaWVudC0+bXBkX25vZGUtPlBlcmlvZHMsIDYpOwogICBhc3NlcnRfZXF1YWxzX3N0cmluZyAocGVyaW9kTm9kZS0+aWQsICJQZXJpb2Q2Iik7Ci0gIGFzc2VydF9lcXVhbHNfaW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDAsIDAsIDAsIDAsIDApKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDAsIDAsIDAsIDAsIDApKTsKIAogICBwZXJpb2ROb2RlID0KICAgICAgIChHc3RQZXJpb2ROb2RlICopIGdfbGlzdF9udGhfZGF0YSAobXBkY2xpZW50LT5tcGRfbm9kZS0+UGVyaW9kcywgNyk7CiAgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChwZXJpb2ROb2RlLT5pZCwgIlBlcmlvZDciKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAocGVyaW9kTm9kZS0+c3RhcnQsCi0gICAgICAoZ2ludDY0KSBkdXJhdGlvbl90b19tcyAoMSwgMCwgMCwgMCwgMCwgMCwgMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAocGVyaW9kTm9kZS0+c3RhcnQsCisgICAgICBkdXJhdGlvbl90b19tcyAoMSwgMCwgMCwgMCwgMCwgMCwgMCkpOwogCiAgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7CiB9CkBAIC0zMDgwLDcgKzMyODIsOCBAQAogICBHc3RBZGFwdGF0aW9uU2V0Tm9kZSAqYWRhcHRfc2V0OwogICBndWludCBhY3RpdmVTdHJlYW1zOwogICBHc3RBY3RpdmVTdHJlYW0gKmFjdGl2ZVN0cmVhbTsKLSAgY29uc3QgZ2NoYXIgKm1pbWVUeXBlOworICBHc3RDYXBzICpjYXBzOworICBHc3RTdHJ1Y3R1cmUgKnM7CiAgIGdib29sZWFuIGJpdHN0cmVhbVN3aXRjaGluZ0ZsYWc7CiAgIGd1aW50IHZpZGVvU3RyZWFtV2lkdGg7CiAgIGd1aW50IHZpZGVvU3RyZWFtSGVpZ2h0OwpAQCAtMzEzMyw4ICszMzM2LDExIEBACiAgIGZhaWxfaWYgKGFjdGl2ZVN0cmVhbSA9PSBOVUxMKTsKIAogICBhc3NlcnRfZXF1YWxzX2ludCAoYWN0aXZlU3RyZWFtLT5taW1lVHlwZSwgR1NUX1NUUkVBTV9WSURFTyk7Ci0gIG1pbWVUeXBlID0gZ3N0X21wZF9jbGllbnRfZ2V0X3N0cmVhbV9taW1lVHlwZSAoYWN0aXZlU3RyZWFtKTsKLSAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKG1pbWVUeXBlLCAidmlkZW8vcXVpY2t0aW1lIik7CisgIGNhcHMgPSBnc3RfbXBkX2NsaWVudF9nZXRfc3RyZWFtX2NhcHMgKGFjdGl2ZVN0cmVhbSk7CisgIGZhaWxfdW5sZXNzIChjYXBzICE9IE5VTEwpOworICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzKSwgInZpZGVvL3F1aWNrdGltZSIpOworICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CiAKICAgYml0c3RyZWFtU3dpdGNoaW5nRmxhZyA9CiAgICAgICBnc3RfbXBkX2NsaWVudF9nZXRfYml0c3RyZWFtX3N3aXRjaGluZ19mbGFnIChhY3RpdmVTdHJlYW0pOwpAQCAtMzQxNiw2ICszNjIyLDE3OSBAQAogCiBHU1RfRU5EX1RFU1Q7CiAKKy8qIHRlc3QgbXVsdGlwbGUgQmFzZVVybCBlbnRyaWVzIHBlciBzZWN0aW9uICovCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfZ2V0X2Jhc2VVUkw1KQoreworICBHc3RQZXJpb2ROb2RlICpwZXJpb2ROb2RlOworICBHc3RBZGFwdGF0aW9uU2V0Tm9kZSAqYWRhcHRhdGlvblNldDsKKyAgR3N0UmVwcmVzZW50YXRpb25Ob2RlICpyZXByZXNlbnRhdGlvbjsKKyAgY29uc3QgZ2NoYXIgKmJhc2VVUkw7CisgIEdzdEJhc2VVUkwgKmdzdEJhc2VVUkw7CisKKyAgY29uc3QgZ2NoYXIgKnhtbCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCisgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCisgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCisgICAgICAiICA8QmFzZVVSTD4vbXBkX2Jhc2VfdXJsMS88L0Jhc2VVUkw+IgorICAgICAgIiAgPEJhc2VVUkw+L21wZF9iYXNlX3VybDIvPC9CYXNlVVJMPiIKKyAgICAgICIgIDxQZXJpb2QgaWQ9XCJQZXJpb2QwXCIgZHVyYXRpb249XCJQMFkwTTFEVDFIMU0xU1wiPiIKKyAgICAgICIgICAgPEJhc2VVUkw+IHBlcmlvZF9iYXNlX3VybDEvPC9CYXNlVVJMPiIKKyAgICAgICIgICAgPEJhc2VVUkw+IHBlcmlvZF9iYXNlX3VybDIvPC9CYXNlVVJMPiIKKyAgICAgICIgICAgPEJhc2VVUkw+IHBlcmlvZF9iYXNlX3VybDMvPC9CYXNlVVJMPiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgaWQ9XCIxXCIgbWltZVR5cGU9XCJhdWRpb1wiIGxhbmc9XCJlblwiPiIKKyAgICAgICIgICAgICA8QmFzZVVSTD5hZGFwdGF0aW9uX2Jhc2VfdXJsMS88L0Jhc2VVUkw+IgorICAgICAgIiAgICAgIDxCYXNlVVJMPmFkYXB0YXRpb25fYmFzZV91cmwyLzwvQmFzZVVSTD4iCisgICAgICAiICAgICAgPEJhc2VVUkw+YWRhcHRhdGlvbl9iYXNlX3VybDMvPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICA8QmFzZVVSTD5hZGFwdGF0aW9uX2Jhc2VfdXJsNC88L0Jhc2VVUkw+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbj4iCisgICAgICAiICAgICAgICA8QmFzZVVSTD5yZXByZXNlbnRhdGlvbl9iYXNlX3VybDEvPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICAgIDxCYXNlVVJMPnJlcHJlc2VudGF0aW9uX2Jhc2VfdXJsMi88L0Jhc2VVUkw+IgorICAgICAgIiAgICAgICAgPEJhc2VVUkw+cmVwcmVzZW50YXRpb25fYmFzZV91cmwzLzwvQmFzZVVSTD4iCisgICAgICAiICAgICAgICA8QmFzZVVSTD5yZXByZXNlbnRhdGlvbl9iYXNlX3VybDQvPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICAgIDxCYXNlVVJMPnJlcHJlc2VudGF0aW9uX2Jhc2VfdXJsNS88L0Jhc2VVUkw+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgR3N0TXBkQ2xpZW50ICptcGRjbGllbnQgPSBzZXR1cF9tcGRfY2xpZW50ICh4bWwpOworCisgIGFzc2VydF9lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChtcGRjbGllbnQtPm1wZF9ub2RlLT5CYXNlVVJMcyksIDIpOworICBnc3RCYXNlVVJMID0gZ19saXN0X250aF9kYXRhIChtcGRjbGllbnQtPm1wZF9ub2RlLT5CYXNlVVJMcywgMCk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChnc3RCYXNlVVJMLT5iYXNlVVJMLCAiL21wZF9iYXNlX3VybDEvIik7CisgIGdzdEJhc2VVUkwgPSBnX2xpc3RfbnRoX2RhdGEgKG1wZGNsaWVudC0+bXBkX25vZGUtPkJhc2VVUkxzLCAxKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGdzdEJhc2VVUkwtPmJhc2VVUkwsICIvbXBkX2Jhc2VfdXJsMi8iKTsKKworICBwZXJpb2ROb2RlID0gKEdzdFBlcmlvZE5vZGUgKikgbXBkY2xpZW50LT5tcGRfbm9kZS0+UGVyaW9kcy0+ZGF0YTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKHBlcmlvZE5vZGUtPkJhc2VVUkxzKSwgMyk7CisgIGdzdEJhc2VVUkwgPSBnX2xpc3RfbnRoX2RhdGEgKHBlcmlvZE5vZGUtPkJhc2VVUkxzLCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGdzdEJhc2VVUkwtPmJhc2VVUkwsICIgcGVyaW9kX2Jhc2VfdXJsMS8iKTsKKyAgZ3N0QmFzZVVSTCA9IGdfbGlzdF9udGhfZGF0YSAocGVyaW9kTm9kZS0+QmFzZVVSTHMsIDEpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZ3N0QmFzZVVSTC0+YmFzZVVSTCwgIiBwZXJpb2RfYmFzZV91cmwyLyIpOworICBnc3RCYXNlVVJMID0gZ19saXN0X250aF9kYXRhIChwZXJpb2ROb2RlLT5CYXNlVVJMcywgMik7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChnc3RCYXNlVVJMLT5iYXNlVVJMLCAiIHBlcmlvZF9iYXNlX3VybDMvIik7CisKKyAgYWRhcHRhdGlvblNldCA9IChHc3RBZGFwdGF0aW9uU2V0Tm9kZSAqKSBwZXJpb2ROb2RlLT5BZGFwdGF0aW9uU2V0cy0+ZGF0YTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGFkYXB0YXRpb25TZXQtPkJhc2VVUkxzKSwgNCk7CisgIGdzdEJhc2VVUkwgPSBnX2xpc3RfbnRoX2RhdGEgKGFkYXB0YXRpb25TZXQtPkJhc2VVUkxzLCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGdzdEJhc2VVUkwtPmJhc2VVUkwsICJhZGFwdGF0aW9uX2Jhc2VfdXJsMS8iKTsKKyAgZ3N0QmFzZVVSTCA9IGdfbGlzdF9udGhfZGF0YSAoYWRhcHRhdGlvblNldC0+QmFzZVVSTHMsIDEpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZ3N0QmFzZVVSTC0+YmFzZVVSTCwgImFkYXB0YXRpb25fYmFzZV91cmwyLyIpOworICBnc3RCYXNlVVJMID0gZ19saXN0X250aF9kYXRhIChhZGFwdGF0aW9uU2V0LT5CYXNlVVJMcywgMik7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChnc3RCYXNlVVJMLT5iYXNlVVJMLCAiYWRhcHRhdGlvbl9iYXNlX3VybDMvIik7CisgIGdzdEJhc2VVUkwgPSBnX2xpc3RfbnRoX2RhdGEgKGFkYXB0YXRpb25TZXQtPkJhc2VVUkxzLCAzKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGdzdEJhc2VVUkwtPmJhc2VVUkwsICJhZGFwdGF0aW9uX2Jhc2VfdXJsNC8iKTsKKworICByZXByZXNlbnRhdGlvbiA9IChHc3RSZXByZXNlbnRhdGlvbk5vZGUgKikKKyAgICAgIGFkYXB0YXRpb25TZXQtPlJlcHJlc2VudGF0aW9ucy0+ZGF0YTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKHJlcHJlc2VudGF0aW9uLT5CYXNlVVJMcyksIDUpOworICBnc3RCYXNlVVJMID0gZ19saXN0X250aF9kYXRhIChyZXByZXNlbnRhdGlvbi0+QmFzZVVSTHMsIDApOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZ3N0QmFzZVVSTC0+YmFzZVVSTCwgInJlcHJlc2VudGF0aW9uX2Jhc2VfdXJsMS8iKTsKKyAgZ3N0QmFzZVVSTCA9IGdfbGlzdF9udGhfZGF0YSAocmVwcmVzZW50YXRpb24tPkJhc2VVUkxzLCAxKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGdzdEJhc2VVUkwtPmJhc2VVUkwsICJyZXByZXNlbnRhdGlvbl9iYXNlX3VybDIvIik7CisgIGdzdEJhc2VVUkwgPSBnX2xpc3RfbnRoX2RhdGEgKHJlcHJlc2VudGF0aW9uLT5CYXNlVVJMcywgMik7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChnc3RCYXNlVVJMLT5iYXNlVVJMLCAicmVwcmVzZW50YXRpb25fYmFzZV91cmwzLyIpOworICBnc3RCYXNlVVJMID0gZ19saXN0X250aF9kYXRhIChyZXByZXNlbnRhdGlvbi0+QmFzZVVSTHMsIDMpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZ3N0QmFzZVVSTC0+YmFzZVVSTCwgInJlcHJlc2VudGF0aW9uX2Jhc2VfdXJsNC8iKTsKKyAgZ3N0QmFzZVVSTCA9IGdfbGlzdF9udGhfZGF0YSAocmVwcmVzZW50YXRpb24tPkJhc2VVUkxzLCA0KTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGdzdEJhc2VVUkwtPmJhc2VVUkwsICJyZXByZXNlbnRhdGlvbl9iYXNlX3VybDUvIik7CisKKyAgLyogdGVzdCBiYXNlVVJMLiBJdHMgdmFsdWUgc2hvdWxkIGJlIGNvbXB1dGVkIGxpa2UgdGhpczoKKyAgICogIC0gc3RhcnQgd2l0aCB4bWwgdXJsIChudWxsKQorICAgKiAgLSBzZXQgaXQgdG8gdGhlIHZhbHVlIGZyb20gTVBEJ3MgQmFzZVVSTCBlbGVtZW50OiAiL21wZF9iYXNlX3VybDEvIgorICAgKiAgLSB1cGRhdGUgdGhlIHZhbHVlIHdpdGggQmFzZVVSTCBlbGVtZW50IGZyb20gUGVyaW9kLiBCZWNhdXNlIHRoaXMKKyAgICogaXMgYSByZWxhdGl2ZSB1cmwsIGl0IHdpbGwgdXBkYXRlIHRoZSBjdXJyZW50IHZhbHVlLiBiYXNlVVJMIGJlY29tZXMKKyAgICogIi9tcGRfYmFzZV91cmwxL3BlcmlvZF9iYXNlX3VybDEvIgorICAgKiAgLSB1cGRhdGUgdGhlIHZhbHVlIHdpdGggQmFzZVVSTCBlbGVtZW50IGZyb20gQWRhcHRhdGlvblNldC4gQmVjYXVzZSB0aGlzCisgICAqIGlzIGEgcmVsYXRpdmUgdXJsLCBpdCB3aWxsIHVwZGF0ZSB0aGUgY3VycmVudCB2YWx1ZS4gYmFzZVVSTCBiZWNvbWVzCisgICAqICIvbXBkX2Jhc2VfdXJsMS9wZXJpb2RfYmFzZV91cmwxL2FkYXB0YXRpb25fYmFzZV91cmwxLyIKKyAgICogIC0gdXBkYXRlIHRoZSB2YWx1ZSB3aXRoIEJhc2VVUkwgZWxlbWVudCBmcm9tIFJlcHJlc2VudGF0aW9uLiBCZWNhdXNlIHRoaXMKKyAgICogaXMgYW4gcmVsYXRpdmUgdXJsLCBpdCB3aWxsIHVwZGF0ZSB0aGUgY3VycmVudCB2YWx1ZS4iCisgICAqLworICBiYXNlVVJMID0gZ3N0X21wZHBhcnNlcl9nZXRfYmFzZVVSTCAobXBkY2xpZW50LCAwKTsKKyAgZmFpbF9pZiAoYmFzZVVSTCA9PSBOVUxMKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGJhc2VVUkwsCisgICAgICAiL21wZF9iYXNlX3VybDEvcGVyaW9kX2Jhc2VfdXJsMS9hZGFwdGF0aW9uX2Jhc2VfdXJsMS9yZXByZXNlbnRhdGlvbl9iYXNlX3VybDEvIik7CisKKyAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKK30KKworR1NUX0VORF9URVNUOworCisvKiB0ZXN0IG5vIEJhc2VVUkwgKi8KK0dTVF9TVEFSVF9URVNUIChkYXNoX21wZHBhcnNlcl9nZXRfYmFzZVVSTDYpCit7CisgIGNvbnN0IGdjaGFyICpiYXNlVVJMOworICBjb25zdCBnY2hhciAqeG1sID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PiIKKyAgICAgICI8TVBEIHhtbG5zPVwidXJuOm1wZWc6ZGFzaDpzY2hlbWE6bXBkOjIwMTFcIiIKKyAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiPiIKKyAgICAgICIgIDxQZXJpb2QgaWQ9XCJQZXJpb2QwXCIgZHVyYXRpb249XCJQMFkwTTFEVDFIMU0xU1wiPiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgaWQ9XCIxXCIgbWltZVR5cGU9XCJhdWRpb1wiIGxhbmc9XCJlblwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgR3N0TXBkQ2xpZW50ICptcGRjbGllbnQgPSBzZXR1cF9tcGRfY2xpZW50ICh4bWwpOworCisgIGJhc2VVUkwgPSBnc3RfbXBkcGFyc2VyX2dldF9iYXNlVVJMIChtcGRjbGllbnQsIDApOworICBmYWlsX2lmIChiYXNlVVJMID09IE5VTEwpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoYmFzZVVSTCwgIiIpOworCisgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyogQmFzZVVSTDogdGVzdCB0aGF0IHRoZSBwYXRoIGlzIG1hZGUgYWJzb2x1dGUgKGEgLyBpcyBwcmVwZW5kZWQgaWYgbmVlZGVkICovCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfZ2V0X2Jhc2VVUkw3KQoreworICBjb25zdCBnY2hhciAqYmFzZVVSTDsKKyAgY29uc3QgZ2NoYXIgKnhtbCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCisgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCisgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCisgICAgICAiICA8QmFzZVVSTD54L2V4YW1wbGUuY29tLzwvQmFzZVVSTD4iCisgICAgICAiICA8UGVyaW9kIGlkPVwiUGVyaW9kMFwiIGR1cmF0aW9uPVwiUDBZME0xRFQxSDFNMVNcIj4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IGlkPVwiMVwiIG1pbWVUeXBlPVwiYXVkaW9cIiBsYW5nPVwiZW5cIj4iCisgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOworCisgIEdzdE1wZENsaWVudCAqbXBkY2xpZW50OworCisgIG1wZGNsaWVudCA9IHNldHVwX21wZF9jbGllbnQgKHhtbCk7CisKKyAgYmFzZVVSTCA9IGdzdF9tcGRwYXJzZXJfZ2V0X2Jhc2VVUkwgKG1wZGNsaWVudCwgMCk7CisgIGZhaWxfaWYgKGJhc2VVUkwgPT0gTlVMTCk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChiYXNlVVJMLCAiL3gvZXhhbXBsZS5jb20vIik7CisKKyAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKK30KKworR1NUX0VORF9URVNUOworCisvKiBCYXNlVVJMOiB0ZXN0IHRoYXQgYSAvIGlzIG5vdCBwcmVwZW5kZWQgaWYgdGhlIHN0cmluZyBjb250YWlucyAnOicKKyAqIFRoaXMgdGVzdHMgdXJpcyB3aXRoIHNjaGVtYSBwcmVzZW50ICovCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfZ2V0X2Jhc2VVUkw4KQoreworICBjb25zdCBnY2hhciAqYmFzZVVSTDsKKyAgY29uc3QgZ2NoYXIgKnhtbCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCisgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCisgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCisgICAgICAiICA8QmFzZVVSTD54OnkvZXhhbXBsZS5jb20vPC9CYXNlVVJMPiIKKyAgICAgICIgIDxQZXJpb2QgaWQ9XCJQZXJpb2QwXCIgZHVyYXRpb249XCJQMFkwTTFEVDFIMU0xU1wiPiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgaWQ9XCIxXCIgbWltZVR5cGU9XCJhdWRpb1wiIGxhbmc9XCJlblwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgR3N0TXBkQ2xpZW50ICptcGRjbGllbnQgPSBzZXR1cF9tcGRfY2xpZW50ICh4bWwpOworCisgIGJhc2VVUkwgPSBnc3RfbXBkcGFyc2VyX2dldF9iYXNlVVJMIChtcGRjbGllbnQsIDApOworICBmYWlsX2lmIChiYXNlVVJMID09IE5VTEwpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoYmFzZVVSTCwgIng6eS9leGFtcGxlLmNvbS8iKTsKKworICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOworfQorCitHU1RfRU5EX1RFU1Q7CisKIC8qCiAgKiBUZXN0IGdldHRpbmcgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbgogICoKQEAgLTM1MDksMTIgKzM4ODgsOSBAQAogICBnYm9vbGVhbiBoYXNOZXh0U2VnbWVudDsKICAgR3N0QWN0aXZlU3RyZWFtICphY3RpdmVTdHJlYW07CiAgIEdzdEZsb3dSZXR1cm4gZmxvdzsKLSAgR3N0TWVkaWFTZWdtZW50IHNlZ21lbnQ7Ci0gIEdzdERhdGVUaW1lICpzZWdtZW50RW5kVGltZTsKKyAgR3N0RGF0ZVRpbWUgKnNlZ21lbnRBdmFpbGFiaWxpdHk7CiAgIEdzdERhdGVUaW1lICpnc3RfdGltZTsKICAgR0RhdGVUaW1lICpnX3RpbWU7Ci0gIEdzdENsb2NrVGltZSB0czsKLSAgZ2ludDY0IGRpZmY7CiAKICAgY29uc3QgZ2NoYXIgKnhtbCA9CiAgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCkBAIC0zNTIzLDcgKzM4OTksNyBAQAogICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCIiCiAgICAgICAiICAgICBhdmFpbGFiaWxpdHlTdGFydFRpbWU9XCIyMDE1LTAzLTI0VDA6MDowXCIiCiAgICAgICAiICAgICBtZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uPVwiUDBZME0wRFQzSDNNMzBTXCI+IgotICAgICAgIiAgPFBlcmlvZCBpZD1cIlBlcmlvZDBcIj4iCisgICAgICAiICA8UGVyaW9kIGlkPVwiUGVyaW9kMFwiIHN0YXJ0PVwiUDBZME0wRFQwSDBNMTBTXCI+IgogICAgICAgIiAgICA8QWRhcHRhdGlvblNldCBtaW1lVHlwZT1cInZpZGVvL21wNFwiPiIKICAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24+IgogICAgICAgIiAgICAgICAgPFNlZ21lbnRMaXN0IGR1cmF0aW9uPVwiNDVcIj4iCkBAIC0zNjAyLDExICszOTc4LDYgQEAKICAgICAgIGdzdF9tcGRfY2xpZW50X2hhc19uZXh0X3NlZ21lbnQgKG1wZGNsaWVudCwgYWN0aXZlU3RyZWFtLCBUUlVFKTsKICAgYXNzZXJ0X2VxdWFsc19pbnQgKGhhc05leHRTZWdtZW50LCAwKTsKIAotICAvKiBnZXQgY2h1bmsgMC4gc2VnbWVudF9pbmRleCB3aWxsIG5vdCBjaGFuZ2UgKi8KLSAgcmV0ID0gZ3N0X21wZHBhcnNlcl9nZXRfY2h1bmtfYnlfaW5kZXggKG1wZGNsaWVudCwgMCwgMCwgJnNlZ21lbnQpOwotICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCAxKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQgKHNlZ21lbnQubnVtYmVyLCAxKTsKLQogICAvKiBzZWdtZW50IGluZGV4IGlzIHN0aWxsIDEgKi8KICAgaGFzTmV4dFNlZ21lbnQgPQogICAgICAgZ3N0X21wZF9jbGllbnRfaGFzX25leHRfc2VnbWVudCAobXBkY2xpZW50LCBhY3RpdmVTdHJlYW0sIFRSVUUpOwpAQCAtMzYxNCwxOCArMzk4NSwyMiBAQAogCiAgIC8qIGVhY2ggc2VnbWVudCBoYXMgYSBkdXJhdGlvbiBvZiAwIGhvdXJzLCAwIG1pbiA0NSBzZWNvbmRzCiAgICAqIHNlZ21lbnQgaW5kZXggaXMgMS4KLSAgICogRW5kIHRpbWUgaXMgYXQgdGhlIGVuZCBvZiBzZWdtZW50IDEsIHNvIDIgKiBzZWdtZW50X2R1cmF0aW9uID0gMiAqIDQ1cworICAgKiBTdGFydCB0aW1lIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc2VnbWVudCAxLCBzbyAxICogc2VnbWVudF9kdXJhdGlvbiA9IDEgKiA0NXMKKyAgICogQXZhaWxhYmlsaXR5IHN0YXJ0IHRpbWUgaXMgYXQgdGhlIGVuZCBvZiB0aGUgc2VnbWVudCwgc28gd2UgYWRkIGR1cmF0aW9uICg0NXMpCisgICAqIFdlIGFsc28gYWRkIHBlcmlvZCBzdGFydCB0aW1lICgxMHMpCisgICAqIFNvLCBhdmFpbGFiaWxpdHkgc3RhcnQgdGltZSBmb3Igc2VnbWVudCAxIGlzOiAxMCAocGVyaW9kIHN0YXJ0KSArCisgICAqIDQ1IChzZWdtZW50IHN0YXJ0KSArIDQ1IChkdXJhdGlvbikgPSAxJzQwcwogICAgKi8KLSAgc2VnbWVudEVuZFRpbWUgPQotICAgICAgZ3N0X21wZF9jbGllbnRfZ2V0X25leHRfc2VnbWVudF9hdmFpbGFiaWxpdHlfZW5kX3RpbWUgKG1wZGNsaWVudCwKKyAgc2VnbWVudEF2YWlsYWJpbGl0eSA9CisgICAgICBnc3RfbXBkX2NsaWVudF9nZXRfbmV4dF9zZWdtZW50X2F2YWlsYWJpbGl0eV9zdGFydF90aW1lIChtcGRjbGllbnQsCiAgICAgICBhY3RpdmVTdHJlYW0pOwotICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfeWVhciAoc2VnbWVudEVuZFRpbWUpLCAyMDE1KTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X21vbnRoIChzZWdtZW50RW5kVGltZSksIDMpOwotICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfZGF5IChzZWdtZW50RW5kVGltZSksIDI0KTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X2hvdXIgKHNlZ21lbnRFbmRUaW1lKSwgMCk7Ci0gIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9taW51dGUgKHNlZ21lbnRFbmRUaW1lKSwgMSk7Ci0gIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9zZWNvbmQgKHNlZ21lbnRFbmRUaW1lKSwgMzApOwotICBnc3RfZGF0ZV90aW1lX3VucmVmIChzZWdtZW50RW5kVGltZSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF95ZWFyIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMjAxNSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9tb250aCAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDMpOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfZGF5IChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMjQpOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfaG91ciAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDApOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfbWludXRlIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9zZWNvbmQgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCA0MCk7CisgIGdzdF9kYXRlX3RpbWVfdW5yZWYgKHNlZ21lbnRBdmFpbGFiaWxpdHkpOwogCiAgIC8qIHNlZWsgdG8gdGltZSAqLwogICBnc3RfdGltZSA9IGdzdF9kYXRlX3RpbWVfbmV3X2Zyb21faXNvODYwMV9zdHJpbmcgKCIyMDE1LTAzLTI0VDA6MDoyMFoiKTsKQEAgLTM2NDAsMTUgKzQwMTUsNiBAQAogICAgICAgZ3N0X21wZF9jbGllbnRfaGFzX25leHRfc2VnbWVudCAobXBkY2xpZW50LCBhY3RpdmVTdHJlYW0sIFRSVUUpOwogICBhc3NlcnRfZXF1YWxzX2ludCAoaGFzTmV4dFNlZ21lbnQsIDEpOwogCi0gIC8qIGNoZWNrIGlmIHN0cmVhbSBhdCBtb21lbnQgdHMgaXMgYXZhaWxhYmxlLgotICAgKiB0aW1lU2hpZnRCdWZmZXJEZXB0aCB3YXMgbm90IHNldCwgc28gaXQgaXMgY29uc2lkZXJlZCBpbmZpbml0ZS4KLSAgICogQWxsIHNlZ21lbnRzIGZyb20gdGhlIHBhc3QgbXVzdCBiZSBhdmFpbGFibGUKLSAgICovCi0gIHRzID0gMzAgKiBHU1RfU0VDT05EOwotICByZXQgPSBnc3RfbXBkX2NsaWVudF9jaGVja190aW1lX3Bvc2l0aW9uIChtcGRjbGllbnQsIGFjdGl2ZVN0cmVhbSwgdHMsICZkaWZmKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgMCk7Ci0gIGFzc2VydF9lcXVhbHNfaW50NjQgKGRpZmYsIDApOwotCiAgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7CiB9CiAKQEAgLTM2ODAsNiArNDA0Niw4IEBACiAgICAgICAiICAgICAgICAgIDxJbml0aWFsaXphdGlvbiBzb3VyY2VVUkw9XCJUZXN0U291cmNlVXJsXCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZT1cIjEwMC0yMDBcIj4iCiAgICAgICAiICAgICAgICAgIDwvSW5pdGlhbGl6YXRpb24+IgorICAgICAgIiAgICAgICAgICA8UmVwcmVzZW50YXRpb25JbmRleCBzb3VyY2VVUkw9XCJUZXN0U291cmNlSW5kZXhcIj4iCisgICAgICAiICAgICAgICAgIDwvUmVwcmVzZW50YXRpb25JbmRleD4iCiAgICAgICAiICAgICAgICA8L1NlZ21lbnRCYXNlPiIKICAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOwogCkBAIC0zNzIwLDcgKzQwODgsNyBAQAogICAgICAgZ3N0X21wZF9jbGllbnRfZ2V0X25leHRfaGVhZGVyX2luZGV4IChtcGRjbGllbnQsICZ1cmksIDAsICZyYW5nZV9zdGFydCwKICAgICAgICZyYW5nZV9lbmQpOwogICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKLSAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHVyaSwgIlRlc3RTb3VyY2VVcmwiKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHVyaSwgIlRlc3RTb3VyY2VJbmRleCIpOwogICBhc3NlcnRfZXF1YWxzX2ludDY0IChyYW5nZV9zdGFydCwgMTApOwogICBhc3NlcnRfZXF1YWxzX2ludDY0IChyYW5nZV9lbmQsIDIwKTsKICAgZ19mcmVlICh1cmkpOwpAQCAtMzk0MCwzNiArNDMwOCwxMSBAQAogICBleHBlY3RlZER1cmF0aW9uID0gZHVyYXRpb25fdG9fbXMgKDAsIDAsIDAsIDAsIDAsIDExMCwgMCk7CiAgIGV4cGVjdGVkVGltZXN0YW1wID0gZHVyYXRpb25fdG9fbXMgKDAsIDAsIDAsIDAsIDAsIDAsIDApOwogCi0gIC8qIHRoZSByZXByZXNlbnRhdGlvbiBjb250YWlucyAyIHNlZ21lbnRzCi0gICAqICAtIG9uZSBpbmhlcml0ZWQgZnJvbSBBZGFwdGF0aW9uU2V0IChkdXJhdGlvbiAxMDApCi0gICAqICAtIHRoZSBzZWNvbmQgZGVmaW5lZCBpbiB0aGUgUmVwcmVzZW50YXRpb24gKGR1cmF0aW9uIDExMCkKLSAgICoKLSAgICogQm90aCB3aWxsIGhhdmUgdGhlIGR1cmF0aW9uIHNwZWNpZmllZCBpbiB0aGUgUmVwcmVzZW50YXRpb24gKDExMCkKLSAgICovCisgIC8qIHRoZSByZXByZXNlbnRhdGlvbiBjb250YWlucyAxIHNlZ21lbnQgKHRoZSBvbmUgZnJvbSBSZXByZXNlbnRhdGlvbikgKi8KIAogICAvKiBjaGVjayBmaXJzdCBzZWdtZW50ICovCiAgIHJldCA9IGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X2ZyYWdtZW50IChtcGRjbGllbnQsIDAsICZmcmFnbWVudCk7CiAgIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIFRSVUUpOwotICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZnJhZ21lbnQudXJpLCAiL1Rlc3RNZWRpYUFkYXB0YXRpb24iKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAoZnJhZ21lbnQucmFuZ2Vfc3RhcnQsIDEwKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAoZnJhZ21lbnQucmFuZ2VfZW5kLCAyMCk7Ci0gIGFzc2VydF9lcXVhbHNfc3RyaW5nIChmcmFnbWVudC5pbmRleF91cmksICIvVGVzdEluZGV4QWRhcHRhdGlvbiIpOwotICBhc3NlcnRfZXF1YWxzX2ludDY0IChmcmFnbWVudC5pbmRleF9yYW5nZV9zdGFydCwgMzApOwotICBhc3NlcnRfZXF1YWxzX2ludDY0IChmcmFnbWVudC5pbmRleF9yYW5nZV9lbmQsIDQwKTsKLSAgYXNzZXJ0X2VxdWFsc191aW50NjQgKGZyYWdtZW50LmR1cmF0aW9uLCBleHBlY3RlZER1cmF0aW9uICogR1NUX01TRUNPTkQpOwotICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoZnJhZ21lbnQudGltZXN0YW1wLCBleHBlY3RlZFRpbWVzdGFtcCAqIEdTVF9NU0VDT05EKTsKLSAgZ3N0X21lZGlhX2ZyYWdtZW50X2luZm9fY2xlYXIgKCZmcmFnbWVudCk7Ci0KLSAgLyogYWR2YW5jZSB0byBuZXh0IHNlZ21lbnQgKi8KLSAgZmxvdyA9IGdzdF9tcGRfY2xpZW50X2FkdmFuY2Vfc2VnbWVudCAobXBkY2xpZW50LCBhY3RpdmVTdHJlYW0sIFRSVUUpOwotICBhc3NlcnRfZXF1YWxzX2ludCAoZmxvdywgR1NUX0ZMT1dfT0spOwotCi0gIC8qIHNlY29uZCBzZWdtZW50IHN0YXJ0cyBhZnRlciBmaXJzdCBlbmRzICovCi0gIGV4cGVjdGVkVGltZXN0YW1wID0gZXhwZWN0ZWRUaW1lc3RhbXAgKyBleHBlY3RlZER1cmF0aW9uOwotCi0gIC8qIGNoZWNrIHNlY29uZCBzZWdtZW50ICovCi0gIHJldCA9IGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X2ZyYWdtZW50IChtcGRjbGllbnQsIDAsICZmcmFnbWVudCk7Ci0gIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIFRSVUUpOwogICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZnJhZ21lbnQudXJpLCAiL1Rlc3RNZWRpYVJlcCIpOwogICBhc3NlcnRfZXF1YWxzX2ludDY0IChmcmFnbWVudC5yYW5nZV9zdGFydCwgMTAwKTsKICAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAoZnJhZ21lbnQucmFuZ2VfZW5kLCAyMDApOwpAQCAtMzk4MCw2ICs0MzIzLDEwIEBACiAgIGFzc2VydF9lcXVhbHNfdWludDY0IChmcmFnbWVudC50aW1lc3RhbXAsIGV4cGVjdGVkVGltZXN0YW1wICogR1NUX01TRUNPTkQpOwogICBnc3RfbWVkaWFfZnJhZ21lbnRfaW5mb19jbGVhciAoJmZyYWdtZW50KTsKIAorICAvKiB0cnkgdG8gYWR2YW5jZSB0byBuZXh0IHNlZ21lbnQuIFNob3VsZCBmYWlsICovCisgIGZsb3cgPSBnc3RfbXBkX2NsaWVudF9hZHZhbmNlX3NlZ21lbnQgKG1wZGNsaWVudCwgYWN0aXZlU3RyZWFtLCBUUlVFKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGZsb3csIEdTVF9GTE9XX0VPUyk7CisKICAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKIH0KIApAQCAtNDA3OCw2ICs0NDI1LDggQEAKICAgR3N0Q2xvY2tUaW1lIGV4cGVjdGVkRHVyYXRpb247CiAgIEdzdENsb2NrVGltZSBleHBlY3RlZFRpbWVzdGFtcDsKICAgR3N0Q2xvY2tUaW1lIHBlcmlvZFN0YXJ0VGltZTsKKyAgR3N0Q2xvY2tUaW1lIG9mZnNldDsKKyAgR3N0Q2xvY2tUaW1lIGxhc3RGcmFnbWVudFRpbWVzdGFtcEVuZDsKICAgY29uc3QgZ2NoYXIgKnhtbCA9CiAgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCiAgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCkBAIC00MDg4LDYgKzQ0MzcsNyBAQAogICAgICAgIiAgICA8QWRhcHRhdGlvblNldCBtaW1lVHlwZT1cInZpZGVvL21wNFwiPiIKICAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24gaWQ9XCJyZXBJZFwiIGJhbmR3aWR0aD1cIjI1MDAwMFwiPiIKICAgICAgICIgICAgICAgIDxTZWdtZW50VGVtcGxhdGUgZHVyYXRpb249XCIxMjAwMFwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50YXRpb25UaW1lT2Zmc2V0PVwiMTVcIiIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWE9XCJUZXN0TWVkaWFfcmVwPSRSZXByZXNlbnRhdGlvbklEJG51bWJlcj0kTnVtYmVyJGJhbmR3aWR0aD0kQmFuZHdpZHRoJHRpbWU9JFRpbWUkXCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PVwiVGVzdEluZGV4XCI+IgogICAgICAgIiAgICAgICAgPC9TZWdtZW50VGVtcGxhdGU+IgpAQCAtNDE0Nyw4ICs0NDk3LDIyIEBACiAgIHBlcmlvZFN0YXJ0VGltZSA9IGdzdF9tcGRfcGFyc2VyX2dldF9wZXJpb2Rfc3RhcnRfdGltZSAobXBkY2xpZW50KTsKICAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHBlcmlvZFN0YXJ0VGltZSwgMTAgKiBHU1RfU0VDT05EKTsKIAorICBvZmZzZXQgPSBnc3RfbXBkX3BhcnNlcl9nZXRfc3RyZWFtX3ByZXNlbnRhdGlvbl9vZmZzZXQgKG1wZGNsaWVudCwgMCk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChvZmZzZXQsIDE1ICogR1NUX1NFQ09ORCk7CisKICAgZ3N0X21lZGlhX2ZyYWdtZW50X2luZm9fY2xlYXIgKCZmcmFnbWVudCk7CiAKKyAgLyoKKyAgICogUGVyaW9kIHN0YXJ0cyBhdCAxMHMuCisgICAqIE1QRCBoYXMgYSBkdXJhdGlvbiBvZiAzaDNtMzBzLCBzbyBwZXJpb2QgZHVyYXRpb24gaXMgM2gzbTIwcy4KKyAgICogV2UgZXhwZWN0IHRoZSBsYXN0IGZyYWdtZW50IHRvIGVuZCBhdCBwZXJpb2Qgc3RhcnQgKyBwZXJpb2QgZHVyYXRpb246IDNoM20zMHMKKyAgICovCisgIGV4cGVjdGVkVGltZXN0YW1wID0gZHVyYXRpb25fdG9fbXMgKDAsIDAsIDAsIDMsIDMsIDMwLCAwKTsKKyAgZ3N0X21wZF9jbGllbnRfZ2V0X2xhc3RfZnJhZ21lbnRfdGltZXN0YW1wX2VuZCAobXBkY2xpZW50LCAwLAorICAgICAgJmxhc3RGcmFnbWVudFRpbWVzdGFtcEVuZCk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChsYXN0RnJhZ21lbnRUaW1lc3RhbXBFbmQsCisgICAgICBleHBlY3RlZFRpbWVzdGFtcCAqIEdTVF9NU0VDT05EKTsKKwogICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOwogfQogCkBAIC00MTY3LDYgKzQ1MzEsNyBAQAogICBHc3RDbG9ja1RpbWUgZXhwZWN0ZWREdXJhdGlvbjsKICAgR3N0Q2xvY2tUaW1lIGV4cGVjdGVkVGltZXN0YW1wOwogICBHc3RGbG93UmV0dXJuIGZsb3c7CisgIEdzdERhdGVUaW1lICpzZWdtZW50QXZhaWxhYmlsaXR5OwogCiAgIGNvbnN0IGdjaGFyICp4bWwgPQogICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgpAQCAtNDIzMyw2ICs0NTk4LDIyIEBACiAgIGFzc2VydF9lcXVhbHNfdWludDY0IChmcmFnbWVudC50aW1lc3RhbXAsIGV4cGVjdGVkVGltZXN0YW1wICogR1NUX01TRUNPTkQpOwogICBnc3RfbWVkaWFfZnJhZ21lbnRfaW5mb19jbGVhciAoJmZyYWdtZW50KTsKIAorICAvKiBmaXJzdCBzZWdtZW50IHN0YXJ0cyBhdCAzcyBhbmQgaGFzIGEgZHVyYXRpb24gb2YgMnMuCisgICAqIFdlIGFsc28gYWRkIHBlcmlvZCBzdGFydCB0aW1lICgxMHMpIHNvIHdlIGV4cGVjdCBhIHNlZ21lbnQgYXZhaWxhYmlsaXR5CisgICAqIHN0YXJ0IHRpbWUgb2YgMTVzCisgICAqLworICBzZWdtZW50QXZhaWxhYmlsaXR5ID0KKyAgICAgIGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X3NlZ21lbnRfYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUgKG1wZGNsaWVudCwKKyAgICAgIGFjdGl2ZVN0cmVhbSk7CisgIGZhaWxfdW5sZXNzIChzZWdtZW50QXZhaWxhYmlsaXR5ICE9IE5VTEwpOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfeWVhciAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDIwMTUpOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfbW9udGggKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAzKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X2RheSAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDI0KTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X2hvdXIgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X21pbnV0ZSAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDApOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfc2Vjb25kIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMTUpOworICBnc3RfZGF0ZV90aW1lX3VucmVmIChzZWdtZW50QXZhaWxhYmlsaXR5KTsKKwogICAvKiBhZHZhbmNlIHRvIG5leHQgc2VnbWVudCAqLwogICBmbG93ID0gZ3N0X21wZF9jbGllbnRfYWR2YW5jZV9zZWdtZW50IChtcGRjbGllbnQsIGFjdGl2ZVN0cmVhbSwgVFJVRSk7CiAgIGFzc2VydF9lcXVhbHNfaW50IChmbG93LCBHU1RfRkxPV19PSyk7CkBAIC00MjUxLDYgKzQ2MzIsMjQgQEAKICAgYXNzZXJ0X2VxdWFsc191aW50NjQgKGZyYWdtZW50LnRpbWVzdGFtcCwgZXhwZWN0ZWRUaW1lc3RhbXAgKiBHU1RfTVNFQ09ORCk7CiAgIGdzdF9tZWRpYV9mcmFnbWVudF9pbmZvX2NsZWFyICgmZnJhZ21lbnQpOwogCisgIC8qIGZpcnN0IHNlZ21lbnQgc3RhcnRzIGF0IDNzIGFuZCBoYXMgYSBkdXJhdGlvbiBvZiAycy4KKyAgICogU2Vjb25kIHNlZ21lbnQgc3RhcnRzIHdoZW4gdGhlIGZpcnN0IGVuZHMgKDVzKSBhbmQgaGFzIGEgZHVyYXRpb24gb2YgMnMsCisgICAqIHNvIGl0IGVuZHMgYXQgN3MuCisgICAqIFdlIGFsc28gYWRkIHBlcmlvZCBzdGFydCB0aW1lICgxMHMpIHNvIHdlIGV4cGVjdCBhIHNlZ21lbnQgYXZhaWxhYmlsaXR5CisgICAqIHN0YXJ0IHRpbWUgb2YgMTdzCisgICAqLworICBzZWdtZW50QXZhaWxhYmlsaXR5ID0KKyAgICAgIGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X3NlZ21lbnRfYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUgKG1wZGNsaWVudCwKKyAgICAgIGFjdGl2ZVN0cmVhbSk7CisgIGZhaWxfdW5sZXNzIChzZWdtZW50QXZhaWxhYmlsaXR5ICE9IE5VTEwpOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfeWVhciAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDIwMTUpOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfbW9udGggKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAzKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X2RheSAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDI0KTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X2hvdXIgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X21pbnV0ZSAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDApOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfc2Vjb25kIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMTcpOworICBnc3RfZGF0ZV90aW1lX3VucmVmIChzZWdtZW50QXZhaWxhYmlsaXR5KTsKKwogICAvKiBhZHZhbmNlIHRvIG5leHQgc2VnbWVudCAqLwogICBmbG93ID0gZ3N0X21wZF9jbGllbnRfYWR2YW5jZV9zZWdtZW50IChtcGRjbGllbnQsIGFjdGl2ZVN0cmVhbSwgVFJVRSk7CiAgIGFzc2VydF9lcXVhbHNfaW50IChmbG93LCBHU1RfRkxPV19PSyk7CkBAIC00MjY4LDYgKzQ2NjcsMTU0IEBACiAgIGFzc2VydF9lcXVhbHNfdWludDY0IChmcmFnbWVudC50aW1lc3RhbXAsIGV4cGVjdGVkVGltZXN0YW1wICogR1NUX01TRUNPTkQpOwogICBnc3RfbWVkaWFfZnJhZ21lbnRfaW5mb19jbGVhciAoJmZyYWdtZW50KTsKIAorICAvKiBUaGlyZCBzZWdtZW50IHN0YXJ0cyBhdCAxMHMgYW5kIGhhcyBhIGR1cmF0aW9uIG9mIDNzIHNvIGl0IGVuZHMgYXQgMTNzLgorICAgKiBXZSBhbHNvIGFkZCBwZXJpb2Qgc3RhcnQgdGltZSAoMTBzKSBzbyB3ZSBleHBlY3QgYSBzZWdtZW50IGF2YWlsYWJpbGl0eQorICAgKiBzdGFydCB0aW1lIG9mIDIzcworICAgKi8KKyAgc2VnbWVudEF2YWlsYWJpbGl0eSA9CisgICAgICBnc3RfbXBkX2NsaWVudF9nZXRfbmV4dF9zZWdtZW50X2F2YWlsYWJpbGl0eV9zdGFydF90aW1lIChtcGRjbGllbnQsCisgICAgICBhY3RpdmVTdHJlYW0pOworICBmYWlsX3VubGVzcyAoc2VnbWVudEF2YWlsYWJpbGl0eSAhPSBOVUxMKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X3llYXIgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAyMDE1KTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X21vbnRoIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMyk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9kYXkgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAyNCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9ob3VyIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9taW51dGUgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X3NlY29uZCAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDIzKTsKKyAgZ3N0X2RhdGVfdGltZV91bnJlZiAoc2VnbWVudEF2YWlsYWJpbGl0eSk7CisKKyAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKK30KKworR1NUX0VORF9URVNUOworCisvKgorICogVGVzdCBTZWdtZW50TGlzdCB3aXRoIG11bHRpcGxlIGluaGVyaXRlZCBzZWdtZW50VVJMcworICoKKyAqLworR1NUX1NUQVJUX1RFU1QgKGRhc2hfbXBkcGFyc2VyX211bHRpcGxlX2luaGVyaXRlZF9zZWdtZW50VVJMKQoreworICBHTGlzdCAqYWRhcHRhdGlvblNldHM7CisgIEdzdEFkYXB0YXRpb25TZXROb2RlICphZGFwdF9zZXQ7CisgIEdzdEFjdGl2ZVN0cmVhbSAqYWN0aXZlU3RyZWFtOworICBHc3RNZWRpYUZyYWdtZW50SW5mbyBmcmFnbWVudDsKKyAgR3N0Q2xvY2tUaW1lIGV4cGVjdGVkRHVyYXRpb247CisgIEdzdENsb2NrVGltZSBleHBlY3RlZFRpbWVzdGFtcDsKKyAgR3N0Rmxvd1JldHVybiBmbG93OworCisgIC8qCisgICAqIFBlcmlvZCBkdXJhdGlvbiBpcyAzMCBzZWNvbmRzCisgICAqIFBlcmlvZCBzdGFydCBpcyAxMCBzZWNvbmRzLiBUaHVzLCBwZXJpb2QgZHVyYXRpb24gaXMgMjAgc2Vjb25kcy4KKyAgICoKKyAgICogVGhlcmUgYXJlIDIgc2VnbWVudHMgaW4gdGhlIEFkYXB0YXRpb25TZXQgc2VnbWVudCBsaXN0IGFuZCAyIGluIHRoZQorICAgKiBSZXByZXNlbnRhdGlvbidzIHNlZ21lbnQgbGlzdC4KKyAgICogU2VnbWVudCBkdXJhdGlvbiBpcyA1cyBmb3IgdGhlIEFkYXB0YXRpb24gc2VnbWVudHMgYW5kIDhzIGZvcgorICAgKiBSZXByZXNlbnRhdGlvbiBzZWdtZW50cy4KKyAgICogU2VwYXJhdGVseSwgZWFjaCBzZWdtZW50IGxpc3QgKGR1cmF0aW9uIDIqNT0xMCBvciAyKjg9MTYpIGZpdHMgY29tZm9ydGFibHkKKyAgICogaW4gdGhlIFBlcmlvZCdzIDIwcyBkdXJhdGlvbi4KKyAgICoKKyAgICogV2UgZXhwZWN0IHRoZSBSZXByZXNlbnRhdGlvbiBzZWdtZW50cyB0byBvdmVyd3JpdGUgdGhlIEFkYXB0YXRpb25TZXQgc2VnbWVudHMuCisgICAqLworICBjb25zdCBnY2hhciAqeG1sID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PiIKKyAgICAgICI8TVBEIHhtbG5zPVwidXJuOm1wZWc6ZGFzaDpzY2hlbWE6bXBkOjIwMTFcIiIKKyAgICAgICIgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCIiCisgICAgICAiIGF2YWlsYWJpbGl0eVN0YXJ0VGltZT1cIjIwMTUtMDMtMjRUMDowOjBcIiIKKyAgICAgICIgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIlAwWTBNMERUMEgwTTMwU1wiPiIKKyAgICAgICI8UGVyaW9kIHN0YXJ0PVwiUDBZME0wRFQwSDBNMTBTXCI+IgorICAgICAgIiAgPEFkYXB0YXRpb25TZXQgbWltZVR5cGU9XCJ2aWRlby9tcDRcIj4iCisgICAgICAiICAgIDxTZWdtZW50TGlzdCBkdXJhdGlvbj1cIjVcIj4iCisgICAgICAiICAgICAgPFNlZ21lbnRVUkwiCisgICAgICAiICAgICAgICAgbWVkaWE9XCJUZXN0TWVkaWEwXCIgbWVkaWFSYW5nZT1cIjEwLTIwXCIiCisgICAgICAiICAgICAgICAgaW5kZXg9XCJUZXN0SW5kZXgwXCIgaW5kZXhSYW5nZT1cIjEwMC0yMDBcIiIKKyAgICAgICIgICAgICA+PC9TZWdtZW50VVJMPiIKKyAgICAgICIgICAgICA8U2VnbWVudFVSTCIKKyAgICAgICIgICAgICAgICBtZWRpYT1cIlRlc3RNZWRpYTFcIiBtZWRpYVJhbmdlPVwiMjAtMzBcIiIKKyAgICAgICIgICAgICAgICBpbmRleD1cIlRlc3RJbmRleDFcIiBpbmRleFJhbmdlPVwiMjAwLTMwMFwiIgorICAgICAgIiAgICAgID48L1NlZ21lbnRVUkw+IgorICAgICAgIiAgICA8L1NlZ21lbnRMaXN0PiIKKyAgICAgICIgICAgPFJlcHJlc2VudGF0aW9uPiIKKyAgICAgICIgICAgICA8U2VnbWVudExpc3QgZHVyYXRpb249XCI4XCI+IgorICAgICAgIiAgICAgICAgPFNlZ21lbnRVUkwiCisgICAgICAiICAgICAgICAgICBtZWRpYT1cIlRlc3RNZWRpYTJcIiBtZWRpYVJhbmdlPVwiMzAtNDBcIiIKKyAgICAgICIgICAgICAgICAgIGluZGV4PVwiVGVzdEluZGV4MlwiIGluZGV4UmFuZ2U9XCIzMDAtNDAwXCIiCisgICAgICAiICAgICAgICA+PC9TZWdtZW50VVJMPiIKKyAgICAgICIgICAgICAgIDxTZWdtZW50VVJMIgorICAgICAgIiAgICAgICAgICAgbWVkaWE9XCJUZXN0TWVkaWEzXCIgbWVkaWFSYW5nZT1cIjQwLTUwXCIiCisgICAgICAiICAgICAgICAgICBpbmRleD1cIlRlc3RJbmRleDNcIiBpbmRleFJhbmdlPVwiNDAwLTUwMFwiIgorICAgICAgIiAgICAgICAgPjwvU2VnbWVudFVSTD4iCisgICAgICAiICAgICAgPC9TZWdtZW50TGlzdD4iCisgICAgICAiICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgZ2Jvb2xlYW4gcmV0OworICBHc3RNcGRDbGllbnQgKm1wZGNsaWVudCA9IGdzdF9tcGRfY2xpZW50X25ldyAoKTsKKworICByZXQgPSBnc3RfbXBkX3BhcnNlIChtcGRjbGllbnQsIHhtbCwgKGdpbnQpIHN0cmxlbiAoeG1sKSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIFRSVUUpOworCisgIC8qIHByb2Nlc3MgdGhlIHhtbCBkYXRhICovCisgIHJldCA9IGdzdF9tcGRfY2xpZW50X3NldHVwX21lZGlhX3ByZXNlbnRhdGlvbiAobXBkY2xpZW50LCBHU1RfQ0xPQ0tfVElNRV9OT05FLAorICAgICAgLTEsIE5VTEwpOworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKworICAvKiBnZXQgdGhlIGxpc3Qgb2YgYWRhcHRhdGlvbiBzZXRzIG9mIHRoZSBmaXJzdCBwZXJpb2QgKi8KKyAgYWRhcHRhdGlvblNldHMgPSBnc3RfbXBkX2NsaWVudF9nZXRfYWRhcHRhdGlvbl9zZXRzIChtcGRjbGllbnQpOworICBmYWlsX2lmIChhZGFwdGF0aW9uU2V0cyA9PSBOVUxMKTsKKworICAvKiBzZXR1cCBzdHJlYW1pbmcgZnJvbSB0aGUgZmlyc3QgYWRhcHRhdGlvbiBzZXQgKi8KKyAgYWRhcHRfc2V0ID0gKEdzdEFkYXB0YXRpb25TZXROb2RlICopIGdfbGlzdF9udGhfZGF0YSAoYWRhcHRhdGlvblNldHMsIDApOworICBmYWlsX2lmIChhZGFwdF9zZXQgPT0gTlVMTCk7CisgIHJldCA9IGdzdF9tcGRfY2xpZW50X3NldHVwX3N0cmVhbWluZyAobXBkY2xpZW50LCBhZGFwdF9zZXQpOworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKworICBhY3RpdmVTdHJlYW0gPSBnc3RfbXBkcGFyc2VyX2dldF9hY3RpdmVfc3RyZWFtX2J5X2luZGV4IChtcGRjbGllbnQsIDApOworICBmYWlsX2lmIChhY3RpdmVTdHJlYW0gPT0gTlVMTCk7CisKKyAgZXhwZWN0ZWREdXJhdGlvbiA9IGR1cmF0aW9uX3RvX21zICgwLCAwLCAwLCAwLCAwLCA4LCAwKTsKKyAgZXhwZWN0ZWRUaW1lc3RhbXAgPSBkdXJhdGlvbl90b19tcyAoMCwgMCwgMCwgMCwgMCwgMCwgMCk7CisKKyAgLyogdGhlIHJlcHJlc2VudGF0aW9uIGNvbnRhaW5zIDIgc2VnbWVudHMgZGVmaW5lZCBpbiB0aGUgUmVwcmVzZW50YXRpb24KKyAgICoKKyAgICogQm90aCB3aWxsIGhhdmUgdGhlIGR1cmF0aW9uIHNwZWNpZmllZCBpbiB0aGUgUmVwcmVzZW50YXRpb24gKDgpCisgICAqLworCisgIC8qIGNoZWNrIGZpcnN0IHNlZ21lbnQgKi8KKyAgcmV0ID0gZ3N0X21wZF9jbGllbnRfZ2V0X25leHRfZnJhZ21lbnQgKG1wZGNsaWVudCwgMCwgJmZyYWdtZW50KTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChmcmFnbWVudC51cmksICIvVGVzdE1lZGlhMiIpOworICBhc3NlcnRfZXF1YWxzX2ludDY0IChmcmFnbWVudC5yYW5nZV9zdGFydCwgMzApOworICBhc3NlcnRfZXF1YWxzX2ludDY0IChmcmFnbWVudC5yYW5nZV9lbmQsIDQwKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGZyYWdtZW50LmluZGV4X3VyaSwgIi9UZXN0SW5kZXgyIik7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKGZyYWdtZW50LmluZGV4X3JhbmdlX3N0YXJ0LCAzMDApOworICBhc3NlcnRfZXF1YWxzX2ludDY0IChmcmFnbWVudC5pbmRleF9yYW5nZV9lbmQsIDQwMCk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChmcmFnbWVudC5kdXJhdGlvbiwgZXhwZWN0ZWREdXJhdGlvbiAqIEdTVF9NU0VDT05EKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKGZyYWdtZW50LnRpbWVzdGFtcCwgZXhwZWN0ZWRUaW1lc3RhbXAgKiBHU1RfTVNFQ09ORCk7CisgIGdzdF9tZWRpYV9mcmFnbWVudF9pbmZvX2NsZWFyICgmZnJhZ21lbnQpOworCisgIC8qIGFkdmFuY2UgdG8gbmV4dCBzZWdtZW50ICovCisgIGZsb3cgPSBnc3RfbXBkX2NsaWVudF9hZHZhbmNlX3NlZ21lbnQgKG1wZGNsaWVudCwgYWN0aXZlU3RyZWFtLCBUUlVFKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGZsb3csIEdTVF9GTE9XX09LKTsKKworICAvKiBzZWNvbmQgc2VnbWVudCBzdGFydHMgYWZ0ZXIgcHJldmlvdXMgZW5kcyAqLworICBleHBlY3RlZFRpbWVzdGFtcCA9IGV4cGVjdGVkVGltZXN0YW1wICsgZXhwZWN0ZWREdXJhdGlvbjsKKworICAvKiBjaGVjayBzZWNvbmQgc2VnbWVudCAqLworICByZXQgPSBnc3RfbXBkX2NsaWVudF9nZXRfbmV4dF9mcmFnbWVudCAobXBkY2xpZW50LCAwLCAmZnJhZ21lbnQpOworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGZyYWdtZW50LnVyaSwgIi9UZXN0TWVkaWEzIik7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKGZyYWdtZW50LnJhbmdlX3N0YXJ0LCA0MCk7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKGZyYWdtZW50LnJhbmdlX2VuZCwgNTApOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZnJhZ21lbnQuaW5kZXhfdXJpLCAiL1Rlc3RJbmRleDMiKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAoZnJhZ21lbnQuaW5kZXhfcmFuZ2Vfc3RhcnQsIDQwMCk7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKGZyYWdtZW50LmluZGV4X3JhbmdlX2VuZCwgNTAwKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKGZyYWdtZW50LmR1cmF0aW9uLCBleHBlY3RlZER1cmF0aW9uICogR1NUX01TRUNPTkQpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoZnJhZ21lbnQudGltZXN0YW1wLCBleHBlY3RlZFRpbWVzdGFtcCAqIEdTVF9NU0VDT05EKTsKKyAgZ3N0X21lZGlhX2ZyYWdtZW50X2luZm9fY2xlYXIgKCZmcmFnbWVudCk7CisKKyAgLyogdHJ5IHRvIGFkdmFuY2UgdG8gdGhlIG5leHQgc2VnbWVudC4gVGhlcmUgaXNuJ3QgYW55LCBzbyBpdCBzaG91bGQgZmFpbCAqLworICBmbG93ID0gZ3N0X21wZF9jbGllbnRfYWR2YW5jZV9zZWdtZW50IChtcGRjbGllbnQsIGFjdGl2ZVN0cmVhbSwgVFJVRSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChmbG93LCBHU1RfRkxPV19FT1MpOworCiAgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7CiB9CiAKQEAgLTQ0MzgsNiArNDk4NSwzNjggQEAKIAogR1NUX0VORF9URVNUOwogCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfd2hpdGVzcGFjZV9zdHJpbmdzKQoreworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9ub193aGl0ZXNwYWNlICgiIikgPT0gVFJVRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX25vX3doaXRlc3BhY2UgKCIvIikgPT0gVFJVRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX25vX3doaXRlc3BhY2UgKCIgIikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9ub193aGl0ZXNwYWNlICgiYWFhYWFhYWEgIikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9ub193aGl0ZXNwYWNlICgiYVx0YSIpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfbm9fd2hpdGVzcGFjZSAoImFccmEiKSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX25vX3doaXRlc3BhY2UgKCJhXG5hIikgPT0gRkFMU0UpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUIChkYXNoX21wZHBhcnNlcl9yZmMxNzM4X3N0cmluZ3MpCit7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX3JmYzE3MzhfdXJsICgiLyIpID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybCAoIiAiKSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX3JmYzE3MzhfdXJsICgiYWFhYWFhYWEgIikgPT0gRkFMU0UpOworCisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX3JmYzE3MzhfdXJsICgiIikgPT0gVFJVRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX3JmYzE3MzhfdXJsICgiYSIpID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybAorICAgICAgKCI7OkAmPWFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelowMTIzNDU2Nzg5JC1fLishKicoKSwlQUEiKQorICAgICAgPT0gVFJVRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX3JmYzE3MzhfdXJsCisgICAgICAoIjs6QCY9YUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WjAxMjM0NTY3ODkkLV8uKyEqJygpLC8lQUEiKQorICAgICAgPT0gVFJVRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX3JmYzE3MzhfdXJsCisgICAgICAoIjs6QCY9YUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WjAxMjM0NTY3ODkkLV8uKyEqJygpLCUgIikKKyAgICAgID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfcmZjMTczOF91cmwgKCIlQUEiKSA9PSBUUlVFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfcmZjMTczOF91cmwgKCIlQSIpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfcmZjMTczOF91cmwgKCIlIikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybCAoIiVYQSIpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfcmZjMTczOF91cmwgKCIlQVgiKSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX3JmYzE3MzhfdXJsICgiJVhYIikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybCAoIlwwMDEiKSA9PSBGQUxTRSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyoKKyAqIFRlc3QgbmVnYXRpdmUgcGVyaW9kIGR1cmF0aW9uCisgKi8KK0dTVF9TVEFSVF9URVNUIChkYXNoX21wZHBhcnNlcl9uZWdhdGl2ZV9wZXJpb2RfZHVyYXRpb24pCit7CisgIGNvbnN0IGdjaGFyICp4bWwgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgorICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCIiCisgICAgICAiICAgICBhdmFpbGFiaWxpdHlTdGFydFRpbWU9XCIyMDE1LTAzLTI0VDA6MDowXCIiCisgICAgICAiICAgICBtZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uPVwiUDBZME0wRFQzSDNNMzBTXCI+IgorICAgICAgIiAgPFBlcmlvZCBpZD1cIlBlcmlvZDBcIiIKKyAgICAgICIgICAgICAgICAgc3RhcnQ9XCJQMFkwTTBEVDFIME0wU1wiIgorICAgICAgIiAgICAgICAgICBkdXJhdGlvbj1cIi1QVDEwU1wiPiIKKyAgICAgICIgIDwvUGVyaW9kPjxQZXJpb2QgaWQ9XCJQZXJpb2QxXCI+PC9QZXJpb2Q+PC9NUEQ+IjsKKworICBnYm9vbGVhbiByZXQ7CisgIEdzdE1wZENsaWVudCAqbXBkY2xpZW50ID0gZ3N0X21wZF9jbGllbnRfbmV3ICgpOworCisgIHJldCA9IGdzdF9tcGRfcGFyc2UgKG1wZGNsaWVudCwgeG1sLCAoZ2ludCkgc3RybGVuICh4bWwpKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisKKyAgLyogcHJvY2VzcyB0aGUgeG1sIGRhdGEKKyAgICogc2hvdWxkIGZhaWwgZHVlIHRvIG5lZ2F0aXZlIGR1cmF0aW9uIG9mIFBlcmlvZDAKKyAgICovCisgIHJldCA9IGdzdF9tcGRfY2xpZW50X3NldHVwX21lZGlhX3ByZXNlbnRhdGlvbiAobXBkY2xpZW50LCBHU1RfQ0xPQ0tfVElNRV9OT05FLAorICAgICAgLTEsIE5VTEwpOworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBGQUxTRSk7CisKKyAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKK30KKworR1NUX0VORF9URVNUOworCisvKgorICogVGVzdCBwYXJzaW5nIG5lZ2F0aXZlIHZhbHVlcyBmcm9tIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgYmUgdW5zaWduZWQKKyAqCisgKi8KK0dTVF9TVEFSVF9URVNUIChkYXNoX21wZHBhcnNlcl9yZWFkX3Vuc2lnbmVkX2Zyb21fbmVnYXRpdmVfdmFsdWVzKQoreworICBHc3RQZXJpb2ROb2RlICpwZXJpb2ROb2RlOworICBHc3RTZWdtZW50QmFzZVR5cGUgKnNlZ21lbnRCYXNlOworICBHc3RBZGFwdGF0aW9uU2V0Tm9kZSAqYWRhcHRhdGlvblNldDsKKyAgR3N0UmVwcmVzZW50YXRpb25Ob2RlICpyZXByZXNlbnRhdGlvbjsKKyAgR3N0U3ViUmVwcmVzZW50YXRpb25Ob2RlICpzdWJSZXByZXNlbnRhdGlvbjsKKworICBjb25zdCBnY2hhciAqeG1sID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PiIKKyAgICAgICI8TVBEIHhtbG5zPVwidXJuOm1wZWc6ZGFzaDpzY2hlbWE6bXBkOjIwMTFcIiIKKyAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiIgorICAgICAgIiAgICAgYXZhaWxhYmlsaXR5U3RhcnRUaW1lPVwiMjAxNS0tMS0xM1QxMjoyNTozN1wiPiIKKyAgICAgICIgIDxQZXJpb2Qgc3RhcnQ9XCItUC0yMDE1WVwiIGR1cmF0aW9uPVwiLVAtNU1cIj4iCisgICAgICAiICAgIDxTZWdtZW50QmFzZSBwcmVzZW50YXRpb25UaW1lT2Zmc2V0PVwiLTEwXCIiCisgICAgICAiICAgICAgICAgICAgICAgICB0aW1lc2NhbGU9XCItNVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZT1cIjEtLTEwXCI+IgorICAgICAgIiAgICA8L1NlZ21lbnRCYXNlPiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgcGFyPVwiLTE6N1wiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICBtaW5GcmFtZVJhdGU9XCIgLTFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgc2VnbWVudEFsaWdubWVudD1cIi00XCI+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbj4iCisgICAgICAiICAgICAgICA8U3ViUmVwcmVzZW50YXRpb24gZGVwZW5kZW5jeUxldmVsPVwiMSAtMiAzXCI+IgorICAgICAgIiAgICAgICAgPC9TdWJSZXByZXNlbnRhdGlvbj4iCisgICAgICAiICAgICAgPC9SZXByZXNlbnRhdGlvbj48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKKworICBnYm9vbGVhbiByZXQ7CisgIEdzdE1wZENsaWVudCAqbXBkY2xpZW50ID0gZ3N0X21wZF9jbGllbnRfbmV3ICgpOworCisgIHJldCA9IGdzdF9tcGRfcGFyc2UgKG1wZGNsaWVudCwgeG1sLCAoZ2ludCkgc3RybGVuICh4bWwpKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisKKyAgcGVyaW9kTm9kZSA9IChHc3RQZXJpb2ROb2RlICopIG1wZGNsaWVudC0+bXBkX25vZGUtPlBlcmlvZHMtPmRhdGE7CisgIHNlZ21lbnRCYXNlID0gcGVyaW9kTm9kZS0+U2VnbWVudEJhc2U7CisgIGFkYXB0YXRpb25TZXQgPSAoR3N0QWRhcHRhdGlvblNldE5vZGUgKikgcGVyaW9kTm9kZS0+QWRhcHRhdGlvblNldHMtPmRhdGE7CisgIHJlcHJlc2VudGF0aW9uID0gKEdzdFJlcHJlc2VudGF0aW9uTm9kZSAqKQorICAgICAgYWRhcHRhdGlvblNldC0+UmVwcmVzZW50YXRpb25zLT5kYXRhOworICBzdWJSZXByZXNlbnRhdGlvbiA9IChHc3RTdWJSZXByZXNlbnRhdGlvbk5vZGUgKikKKyAgICAgIHJlcHJlc2VudGF0aW9uLT5TdWJSZXByZXNlbnRhdGlvbnMtPmRhdGE7CisKKyAgLyogYXZhaWxhYmlsaXR5U3RhcnRUaW1lIHBhcnNpbmcgc2hvdWxkIGZhaWwgKi8KKyAgZmFpbF9pZiAobXBkY2xpZW50LT5tcGRfbm9kZS0+YXZhaWxhYmlsaXR5U3RhcnRUaW1lICE9IE5VTEwpOworCisgIC8qIFBlcmlvZCBzdGFydCBwYXJzaW5nIHNob3VsZCBmYWlsICovCisgIGFzc2VydF9lcXVhbHNfaW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LCAtMSk7CisKKyAgLyogUGVyaW9kIGR1cmF0aW9uIHBhcnNpbmcgc2hvdWxkIGZhaWwgKi8KKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAocGVyaW9kTm9kZS0+ZHVyYXRpb24sIC0xKTsKKworICAvKiBleHBlY3QgbmVnYXRpdmUgdmFsdWUgdG8gYmUgcmVqZWN0ZWQgYW5kIHByZXNlbnRhdGlvblRpbWVPZmZzZXQgdG8gYmUgMCAqLworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoc2VnbWVudEJhc2UtPnByZXNlbnRhdGlvblRpbWVPZmZzZXQsIDApOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoc2VnbWVudEJhc2UtPnRpbWVzY2FsZSwgMSk7CisgIGZhaWxfaWYgKHNlZ21lbnRCYXNlLT5pbmRleFJhbmdlICE9IE5VTEwpOworCisgIC8qIHBhciByYXRpbyBwYXJzaW5nIHNob3VsZCBmYWlsICovCisgIGZhaWxfaWYgKGFkYXB0YXRpb25TZXQtPnBhciAhPSBOVUxMKTsKKworICAvKiBtaW5GcmFtZVJhdGUgcGFyc2luZyBzaG91bGQgZmFpbCAqLworICBmYWlsX2lmIChhZGFwdGF0aW9uU2V0LT5SZXByZXNlbnRhdGlvbkJhc2UtPm1pbkZyYW1lUmF0ZSAhPSBOVUxMKTsKKworICAvKiBzZWdtZW50QWxpZ25tZW50IHBhcnNpbmcgc2hvdWxkIGZhaWwgKi8KKyAgZmFpbF9pZiAoYWRhcHRhdGlvblNldC0+c2VnbWVudEFsaWdubWVudCAhPSBOVUxMKTsKKworICAvKiBkZXBlbmRlbmN5IGxldmVsIHBhcnNpbmcgc2hvdWxkIGZhaWwgKi8KKyAgZmFpbF9pZiAoc3ViUmVwcmVzZW50YXRpb24tPmRlcGVuZGVuY3lMZXZlbCAhPSBOVUxMKTsKKworICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKy8qCisgKiBUZXN0IG5lZ2F0aXZlIG1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb24gZHVyYXRpb24KKyAqLworR1NUX1NUQVJUX1RFU1QgKGRhc2hfbXBkcGFyc2VyX25lZ2F0aXZlX21lZGlhUHJlc2VudGF0aW9uRHVyYXRpb24pCit7CisgIGNvbnN0IGdjaGFyICp4bWwgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgorICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCIiCisgICAgICAiICAgICBhdmFpbGFiaWxpdHlTdGFydFRpbWU9XCIyMDE1LTAzLTI0VDA6MDowXCIiCisgICAgICAiICAgICBtZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uPVwiLVAwWTBNMERUM0gzTTMwU1wiPiIKKyAgICAgICIgIDxQZXJpb2QgaWQ9XCJQZXJpb2QwXCIgc3RhcnQ9XCJQMFkwTTBEVDFIME0wU1wiPjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgZ2Jvb2xlYW4gcmV0OworICBHc3RNcGRDbGllbnQgKm1wZGNsaWVudCA9IGdzdF9tcGRfY2xpZW50X25ldyAoKTsKKworICByZXQgPSBnc3RfbXBkX3BhcnNlIChtcGRjbGllbnQsIHhtbCwgKGdpbnQpIHN0cmxlbiAoeG1sKSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIFRSVUUpOworCisgIC8qIHByb2Nlc3MgdGhlIHhtbCBkYXRhCisgICAqIHNob3VsZCBmYWlsIGR1ZSB0byBuZWdhdGl2ZSBkdXJhdGlvbiBvZiBtZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uCisgICAqLworICByZXQgPSBnc3RfbXBkX2NsaWVudF9zZXR1cF9tZWRpYV9wcmVzZW50YXRpb24gKG1wZGNsaWVudCwgR1NUX0NMT0NLX1RJTUVfTk9ORSwKKyAgICAgIC0xLCBOVUxMKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgRkFMU0UpOworCisgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyoKKyAqIFRlc3QgcGFyc2luZyBhbiBNUEQgd2l0aCBubyBwcm9maWxlcworICovCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfbm9fcHJvZmlsZXMpCit7CisgIGNvbnN0IGdjaGFyICp4bWwgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgorICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiPjwvTVBEPiI7CisKKyAgZ2Jvb2xlYW4gcmV0OworICBHc3RNcGRDbGllbnQgKm1wZGNsaWVudCA9IGdzdF9tcGRfY2xpZW50X25ldyAoKTsKKworICByZXQgPSBnc3RfbXBkX3BhcnNlIChtcGRjbGllbnQsIHhtbCwgc3RybGVuICh4bWwpKTsKKworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKworICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKy8qCisgKiBUZXN0IFMgbm9kZSBsaXN0IGdyZWF0ZXIgdGhhbiBTZWdtZW50VVJMIGxpc3QKKyAqCisgKi8KK0dTVF9TVEFSVF9URVNUIChkYXNoX21wZHBhcnNlcl91bm1hdGNoZWRfc2VnbWVudFRpbWVsaW5lX3NlZ21lbnRVUkwpCit7CisgIEdMaXN0ICphZGFwdGF0aW9uU2V0czsKKyAgR3N0QWRhcHRhdGlvblNldE5vZGUgKmFkYXB0X3NldDsKKworICBjb25zdCBnY2hhciAqeG1sID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PiIKKyAgICAgICI8TVBEIHhtbG5zPVwidXJuOm1wZWc6ZGFzaDpzY2hlbWE6bXBkOjIwMTFcIiIKKyAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiIgorICAgICAgIiAgICAgYXZhaWxhYmlsaXR5U3RhcnRUaW1lPVwiMjAxNS0wMy0yNFQwOjA6MFwiIgorICAgICAgIiAgICAgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIlAwWTBNMERUM0gzTTMwU1wiPiIKKyAgICAgICIgIDxQZXJpb2Qgc3RhcnQ9XCJQMFkwTTBEVDBIME0xMFNcIj4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IG1pbWVUeXBlPVwidmlkZW8vbXA0XCI+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbj4iCisgICAgICAiICAgICAgICA8U2VnbWVudExpc3Q+IgorICAgICAgIiAgICAgICAgICA8U2VnbWVudFRpbWVsaW5lPiIKKyAgICAgICIgICAgICAgICAgICA8UyB0PVwiM1wiICBkPVwiMlwiIHI9XCIxXCI+PC9TPiIKKyAgICAgICIgICAgICAgICAgICA8UyB0PVwiMTBcIiBkPVwiM1wiIHI9XCIwXCI+PC9TPiIKKyAgICAgICIgICAgICAgICAgPC9TZWdtZW50VGltZWxpbmU+IgorICAgICAgIiAgICAgICAgICA8U2VnbWVudFVSTCBtZWRpYT1cIlRlc3RNZWRpYTBcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgaW5kZXg9XCJUZXN0SW5kZXgwXCI+IgorICAgICAgIiAgICAgICAgICA8L1NlZ21lbnRVUkw+IgorICAgICAgIiAgICAgICAgPC9TZWdtZW50TGlzdD4iCisgICAgICAiICAgICAgPC9SZXByZXNlbnRhdGlvbj48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKKworICBnYm9vbGVhbiByZXQ7CisgIEdzdE1wZENsaWVudCAqbXBkY2xpZW50ID0gZ3N0X21wZF9jbGllbnRfbmV3ICgpOworCisgIHJldCA9IGdzdF9tcGRfcGFyc2UgKG1wZGNsaWVudCwgeG1sLCAoZ2ludCkgc3RybGVuICh4bWwpKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisKKyAgLyogcHJvY2VzcyB0aGUgeG1sIGRhdGEgKi8KKyAgcmV0ID0gZ3N0X21wZF9jbGllbnRfc2V0dXBfbWVkaWFfcHJlc2VudGF0aW9uIChtcGRjbGllbnQsIEdTVF9DTE9DS19USU1FX05PTkUsCisgICAgICAtMSwgTlVMTCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIFRSVUUpOworCisgIC8qIGdldCB0aGUgbGlzdCBvZiBhZGFwdGF0aW9uIHNldHMgb2YgdGhlIGZpcnN0IHBlcmlvZCAqLworICBhZGFwdGF0aW9uU2V0cyA9IGdzdF9tcGRfY2xpZW50X2dldF9hZGFwdGF0aW9uX3NldHMgKG1wZGNsaWVudCk7CisgIGZhaWxfaWYgKGFkYXB0YXRpb25TZXRzID09IE5VTEwpOworCisgIGFkYXB0X3NldCA9IChHc3RBZGFwdGF0aW9uU2V0Tm9kZSAqKSBnX2xpc3RfbnRoX2RhdGEgKGFkYXB0YXRpb25TZXRzLCAwKTsKKyAgZmFpbF9pZiAoYWRhcHRfc2V0ID09IE5VTEwpOworCisgIC8qIHNldHVwIHN0cmVhbWluZyBmcm9tIHRoZSBmaXJzdCBhZGFwdGF0aW9uIHNldC4KKyAgICogU2hvdWxkIGZhaWwgYmVjYXVzZSB0aGUgc2Vjb25kIFMgbm9kZSBkb2VzIG5vdCBoYXZlIGEgIG1hdGNoaW5nCisgICAqIFNlZ21lbnRVUkwgbm9kZQorICAgKi8KKyAgcmV0ID0gZ3N0X21wZF9jbGllbnRfc2V0dXBfc3RyZWFtaW5nIChtcGRjbGllbnQsIGFkYXB0X3NldCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIEZBTFNFKTsKKworICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKy8qCisgKiBUZXN0IHBhcnNpbmcgb2YgdGhlIGRlZmF1bHQgcHJlc2VudGF0aW9uIGRlbGF5IHByb3BlcnR5CisgKi8KK0dTVF9TVEFSVF9URVNUIChkYXNoX21wZHBhcnNlcl9kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSkKK3sKKyAgY29uc3QgZ2NoYXIgKnhtbCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCisgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCisgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIiIKKyAgICAgICIgICAgIG1heFNlZ21lbnREdXJhdGlvbj1cIlBUMlNcIj4iCisgICAgICAiICA8UGVyaW9kIGlkPVwiUGVyaW9kMFwiIHN0YXJ0PVwiUDBTXCI+PC9QZXJpb2Q+PC9NUEQ+IjsKKworICBnYm9vbGVhbiByZXQ7CisgIEdzdE1wZENsaWVudCAqbXBkY2xpZW50ID0gZ3N0X21wZF9jbGllbnRfbmV3ICgpOworICBnaW50NjQgdmFsdWU7CisKKyAgcmV0ID0gZ3N0X21wZF9wYXJzZSAobXBkY2xpZW50LCB4bWwsIChnaW50KSBzdHJsZW4gKHhtbCkpOworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKyAgdmFsdWUgPSBnc3RfbXBkX2NsaWVudF9wYXJzZV9kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSAobXBkY2xpZW50LCAiNXMiKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAodmFsdWUsIDUwMDApOworICB2YWx1ZSA9IGdzdF9tcGRfY2xpZW50X3BhcnNlX2RlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5IChtcGRjbGllbnQsICI1UyIpOworICBhc3NlcnRfZXF1YWxzX2ludDY0ICh2YWx1ZSwgNTAwMCk7CisgIHZhbHVlID0KKyAgICAgIGdzdF9tcGRfY2xpZW50X3BhcnNlX2RlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5IChtcGRjbGllbnQsICI1IHNlY29uZHMiKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAodmFsdWUsIDUwMDApOworICB2YWx1ZSA9IGdzdF9tcGRfY2xpZW50X3BhcnNlX2RlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5IChtcGRjbGllbnQsICIyNTAwbXMiKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAodmFsdWUsIDI1MDApOworICB2YWx1ZSA9IGdzdF9tcGRfY2xpZW50X3BhcnNlX2RlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5IChtcGRjbGllbnQsICIzZiIpOworICBhc3NlcnRfZXF1YWxzX2ludDY0ICh2YWx1ZSwgNjAwMCk7CisgIHZhbHVlID0gZ3N0X21wZF9jbGllbnRfcGFyc2VfZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkgKG1wZGNsaWVudCwgIjNGIik7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKHZhbHVlLCA2MDAwKTsKKyAgdmFsdWUgPSBnc3RfbXBkX2NsaWVudF9wYXJzZV9kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSAobXBkY2xpZW50LCAiIik7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKHZhbHVlLCAwKTsKKyAgdmFsdWUgPSBnc3RfbXBkX2NsaWVudF9wYXJzZV9kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSAobXBkY2xpZW50LCAiMTAiKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAodmFsdWUsIDApOworICB2YWx1ZSA9CisgICAgICBnc3RfbXBkX2NsaWVudF9wYXJzZV9kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSAobXBkY2xpZW50LAorICAgICAgIm5vdCBhIG51bWJlciIpOworICBhc3NlcnRfZXF1YWxzX2ludDY0ICh2YWx1ZSwgMCk7CisKKyAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfZHVyYXRpb24pCit7CisgIGd1aW50NjQgdjsKKworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIiIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiICIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiMCIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiRC0xIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJUIiwgJnYpID09IEZBTFNFKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAiLCAmdikgPT0gVFJVRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUFQiLCAmdikgPT0gVFJVRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUFgiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBQVCIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUFRUIiwgJnYpID09IEZBTFNFKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAxRCIsICZ2KSA9PSBUUlVFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQMUQxRCIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUDFEMU0iLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAxTTFEIiwgJnYpID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAxTTFEMU0iLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAxTTFEMUQiLCAmdikgPT0gRkFMU0UpOworCisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUDBNMEQiLCAmdikgPT0gVFJVRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUC0xTSIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUDE1TSIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUC0xRCIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUDM1RCIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUC0xWSIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUFQtMUgiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBUMjVIIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQVC0xTSIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUFQ2NU0iLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBULTFTIiwgJnYpID09IEZBTFNFKTsKKyAgLyogc2Vjb25kcyBhcmUgYWxsb3dlZCB0byBiZSBsYXJnZXIgdGhhbiA2MCAqLworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBUNjVTIiwgJnYpID09IFRSVUUpOworCisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUFQxLjFIIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQVDEtMUgiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBUMS1IIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQVC1IIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQVEgiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBUMCIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUFQxLjFTIiwgJnYpID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBUMS4xLjFTIiwgJnYpID09IEZBTFNFKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlA1ODVZIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQNTg0WSIsICZ2KSA9PSBUUlVFKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIiBQMTBEVDhIIiwgJnYpID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAxMEQgVDhIIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQMTBEVDhIICIsICZ2KSA9PSBUUlVFKTsKK30KKworR1NUX0VORF9URVNUOworCiAvKgogICogY3JlYXRlIGEgdGVzdCBzdWl0ZSBjb250YWluaW5nIGFsbCBkYXNoIHRlc3RjYXNlcwogICovCkBAIC00NDQ4LDYgKzUzNTcsOCBAQAogICBUQ2FzZSAqdGNfc2ltcGxlTVBEID0gdGNhc2VfY3JlYXRlICgic2ltcGxlTVBEIik7CiAgIFRDYXNlICp0Y19jb21wbGV4TVBEID0gdGNhc2VfY3JlYXRlICgiY29tcGxleE1QRCIpOwogICBUQ2FzZSAqdGNfbmVnYXRpdmVUZXN0cyA9IHRjYXNlX2NyZWF0ZSAoIm5lZ2F0aXZlVGVzdHMiKTsKKyAgVENhc2UgKnRjX3N0cmluZ1Rlc3RzID0gdGNhc2VfY3JlYXRlICgic3RyaW5nVGVzdHMiKTsKKyAgVENhc2UgKnRjX2R1cmF0aW9uID0gdGNhc2VfY3JlYXRlICgiZHVyYXRpb24iKTsKIAogICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X2Rhc2hfZGVtdXhfZGVidWcsICJnc3RfZGFzaF9kZW11eF9kZWJ1ZyIsIDAsCiAgICAgICAibXBlZyBkYXNoIHRlc3RzIik7CkBAIC00NTUxLDEzICs1NDYyLDE2IEBACiAgICAgICBkYXNoX21wZHBhcnNlcl9wZXJpb2RfYWRhcHRhdGlvblNldF9yZXByZXNlbnRhdGlvbl9zZWdtZW50VGVtcGxhdGUpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfc2ltcGxlTVBELCBkYXNoX21wZHBhcnNlcl9wZXJpb2Rfc3Vic2V0KTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX3NpbXBsZU1QRCwgZGFzaF9tcGRwYXJzZXJfdXRjdGltaW5nKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX3NpbXBsZU1QRCwgZGFzaF9tcGRwYXJzZXJfdXRjdGltaW5nX2ludmFsaWRfdmFsdWUpOwogCiAgIC8qIHRlc3RzIGNoZWNraW5nIG90aGVyIHBvc3NpYmxlIHZhbHVlcyBmb3IgYXR0cmlidXRlcyAqLwogICB0Y2FzZV9hZGRfdGVzdCAodGNfc2ltcGxlTVBELCBkYXNoX21wZHBhcnNlcl90eXBlX2R5bmFtaWMpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfc2ltcGxlTVBELCBkYXNoX21wZHBhcnNlcl90ZW1wbGF0ZV9wYXJzaW5nKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX3NpbXBsZU1QRCwgZGFzaF9tcGRwYXJzZXJfaXNvZmZfb25kZW1hbmRfcHJvZmlsZSk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19zaW1wbGVNUEQsIGRhc2hfbXBkcGFyc2VyX0dzdERhdGVUaW1lKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX3NpbXBsZU1QRCwgZGFzaF9tcGRwYXJzZXJfYml0c3RyZWFtU3dpdGNoaW5nX2luaGVyaXRhbmNlKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX3NpbXBsZU1QRCwgZGFzaF9tcGRwYXJzZXJfdmFyaW91c19kdXJhdGlvbl9mb3JtYXRzKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX3NpbXBsZU1QRCwgZGFzaF9tcGRwYXJzZXJfZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkpOwogCiAgIC8qIHRlc3RzIGNoZWNraW5nIHRoZSBNUEQgbWFuYWdlbWVudAogICAgKiAoZWcuIHNldHRpbmcgYWN0aXZlIHN0cmVhbXMsIG9idGFpbmluZyBhdHRyaWJ1dGVzIHZhbHVlcykKQEAgLTQ1NzUsNiArNTQ4OSwxMCBAQAogICB0Y2FzZV9hZGRfdGVzdCAodGNfY29tcGxleE1QRCwgZGFzaF9tcGRwYXJzZXJfZ2V0X2Jhc2VVUkwyKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NvbXBsZXhNUEQsIGRhc2hfbXBkcGFyc2VyX2dldF9iYXNlVVJMMyk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jb21wbGV4TVBELCBkYXNoX21wZHBhcnNlcl9nZXRfYmFzZVVSTDQpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY29tcGxleE1QRCwgZGFzaF9tcGRwYXJzZXJfZ2V0X2Jhc2VVUkw1KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NvbXBsZXhNUEQsIGRhc2hfbXBkcGFyc2VyX2dldF9iYXNlVVJMNik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jb21wbGV4TVBELCBkYXNoX21wZHBhcnNlcl9nZXRfYmFzZVVSTDcpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY29tcGxleE1QRCwgZGFzaF9tcGRwYXJzZXJfZ2V0X2Jhc2VVUkw4KTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NvbXBsZXhNUEQsIGRhc2hfbXBkcGFyc2VyX2dldF9tZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NvbXBsZXhNUEQsIGRhc2hfbXBkcGFyc2VyX2dldF9zdHJlYW1QcmVzZW50YXRpb25PZmZzZXQpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY29tcGxleE1QRCwgZGFzaF9tcGRwYXJzZXJfc2VnbWVudHMpOwpAQCAtNDU4NSwyMCArNTUwMywzNiBAQAogICB0Y2FzZV9hZGRfdGVzdCAodGNfY29tcGxleE1QRCwgZGFzaF9tcGRwYXJzZXJfc2VnbWVudF9saXN0KTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NvbXBsZXhNUEQsIGRhc2hfbXBkcGFyc2VyX3NlZ21lbnRfdGVtcGxhdGUpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY29tcGxleE1QRCwgZGFzaF9tcGRwYXJzZXJfc2VnbWVudF90aW1lbGluZSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jb21wbGV4TVBELCBkYXNoX21wZHBhcnNlcl9tdWx0aXBsZV9pbmhlcml0ZWRfc2VnbWVudFVSTCk7CiAKICAgLyogdGVzdHMgY2hlY2tpbmcgdGhlIHBhcnNpbmcgb2YgbWlzc2luZy9pbmNvbXBsZXRlIGF0dHJpYnV0ZXMgb2YgeG1sICovCiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19uZWdhdGl2ZVRlc3RzLCBkYXNoX21wZHBhcnNlcl9taXNzaW5nX3htbCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19uZWdhdGl2ZVRlc3RzLCBkYXNoX21wZHBhcnNlcl9taXNzaW5nX21wZCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19uZWdhdGl2ZVRlc3RzLCBkYXNoX21wZHBhcnNlcl9ub19lbmRfdGFnKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX25lZ2F0aXZlVGVzdHMsIGRhc2hfbXBkcGFyc2VyX25vX3Byb2ZpbGVzKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX25lZ2F0aXZlVGVzdHMsIGRhc2hfbXBkcGFyc2VyX25vX2RlZmF1bHRfbmFtZXNwYWNlKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX25lZ2F0aXZlVGVzdHMsCiAgICAgICBkYXNoX21wZHBhcnNlcl93cm9uZ19wZXJpb2RfZHVyYXRpb25faW5mZXJyZWRfZnJvbV9uZXh0X3BlcmlvZCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19uZWdhdGl2ZVRlc3RzLAogICAgICAgZGFzaF9tcGRwYXJzZXJfd3JvbmdfcGVyaW9kX2R1cmF0aW9uX2luZmVycmVkX2Zyb21fbmV4dF9tZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX25lZ2F0aXZlVGVzdHMsIGRhc2hfbXBkcGFyc2VyX25lZ2F0aXZlX3BlcmlvZF9kdXJhdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19uZWdhdGl2ZVRlc3RzLAorICAgICAgZGFzaF9tcGRwYXJzZXJfcmVhZF91bnNpZ25lZF9mcm9tX25lZ2F0aXZlX3ZhbHVlcyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19uZWdhdGl2ZVRlc3RzLAorICAgICAgZGFzaF9tcGRwYXJzZXJfbmVnYXRpdmVfbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19uZWdhdGl2ZVRlc3RzLAorICAgICAgZGFzaF9tcGRwYXJzZXJfdW5tYXRjaGVkX3NlZ21lbnRUaW1lbGluZV9zZWdtZW50VVJMKTsKKworICB0Y2FzZV9hZGRfdGVzdCAodGNfc3RyaW5nVGVzdHMsIGRhc2hfbXBkcGFyc2VyX3doaXRlc3BhY2Vfc3RyaW5ncyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19zdHJpbmdUZXN0cywgZGFzaF9tcGRwYXJzZXJfcmZjMTczOF9zdHJpbmdzKTsKKworICB0Y2FzZV9hZGRfdGVzdCAodGNfZHVyYXRpb24sIGRhc2hfbXBkcGFyc2VyX2R1cmF0aW9uKTsKIAogICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX3NpbXBsZU1QRCk7CiAgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfY29tcGxleE1QRCk7CiAgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfbmVnYXRpdmVUZXN0cyk7CisgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfc3RyaW5nVGVzdHMpOworICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2R1cmF0aW9uKTsKIAogICByZXR1cm4gczsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2RhdGF1cmlzcmMuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2RhdGF1cmlzcmMuYwppbmRleCA4ZGVlY2NmLi5iMDM0YjJlIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9lbGVtZW50cy9kYXRhdXJpc3JjLmMKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvZGF0YXVyaXNyYy5jCkBAIC0yMyw3ICsyMyw3IEBACiAjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+CiAKIC8qIHNpbmUgd2F2ZSBlbmNvZGVkIGluIG9nZy92b3JiaXMsIGNyZWF0ZWQgd2l0aDoKLSAqICAgZ3N0LWxhdW5jaC0wLjEwIGF1ZGlvdGVzdHNyYyBudW0tYnVmZmVycz0xMTAgISBhdWRpb2NvbnZlcnQgISBcCisgKiAgIGdzdC1sYXVuY2gtMS4wIGF1ZGlvdGVzdHNyYyBudW0tYnVmZmVycz0xMTAgISBhdWRpb2NvbnZlcnQgISBcCiAgKiAgICAgICAgICAgICAgICAgICBhdWRpby94LXJhdyxjaGFubmVscz0xICEgdm9yYmlzZW5jICEgb2dnbXV4ICEgXAogICogICAgICAgICAgICAgICAgICAgZmlsZXNpbmsgbG9jYXRpb249c2luZS5vZ2cKICAqIGFuZCB0aGVuIGVuY29kZWQgdG8gYmFzZTY0ICovCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9obHNfZGVtdXguYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2hsc19kZW11eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMDdlYTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9obHNfZGVtdXguYwpAQCAtMCwwICsxLDc0NCBAQAorLyogR1N0cmVhbWVyIHVuaXQgdGVzdCBmb3IgSExTIGRlbXV4CisgKgorICogQ29weXJpZ2h0IChjKSA8MjAxNT4gWW91VmlldyBUViBMdGQKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+CisjaW5jbHVkZSAiYWRhcHRpdmVfZGVtdXhfY29tbW9uLmgiCisKKyNkZWZpbmUgREVNVVhfRUxFTUVOVF9OQU1FICJobHNkZW11eCIKKworI2RlZmluZSBUU19QQUNLRVRfTEVOIDE4OAorCit0eXBlZGVmIHN0cnVjdCBfR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhCit7CisgIGNvbnN0IGdjaGFyICp1cmk7CisgIGNvbnN0IGd1aW50OCAqcGF5bG9hZDsKKyAgZ3VpbnQ2NCBzaXplOworfSBHc3RIbHNEZW11eFRlc3RJbnB1dERhdGE7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RIbHNEZW11eFRlc3RDYXNlCit7CisgIGNvbnN0IEdzdEhsc0RlbXV4VGVzdElucHV0RGF0YSAqaW5wdXQ7CisgIEdzdFN0cnVjdHVyZSAqc3RhdGU7Cit9IEdzdEhsc0RlbXV4VGVzdENhc2U7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RIbHNEZW11eFRlc3RBcHBlbmRVcmlDb250ZXh0Cit7CisgIEdRdWFyayBmaWVsZF9pZDsKKyAgY29uc3QgZ2NoYXIgKnVyaTsKK30gR3N0SGxzRGVtdXhUZXN0QXBwZW5kVXJpQ29udGV4dDsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEhsc0RlbXV4VGVzdFNlbGVjdEJpdHJhdGVDb250ZXh0Cit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICplbmdpbmU7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGE7CisgIGd1aW50IHNlbGVjdF9jb3VudDsKKyAgZ3Vsb25nIHNpZ25hbF9oYW5kbGU7Cit9IEdzdEhsc0RlbXV4VGVzdFNlbGVjdEJpdHJhdGVDb250ZXh0OworCitzdGF0aWMgR0J5dGVBcnJheSAqCitnZW5lcmF0ZV90cmFuc3BvcnRfc3RyZWFtIChndWludCBsZW5ndGgpCit7CisgIGd1aW50IHBvczsKKyAgZ3VpbnQgY2MgPSAwOworICBHQnl0ZUFycmF5ICptcGVnX3RzOworCisgIGZhaWxfdW5sZXNzICgobGVuZ3RoICUgVFNfUEFDS0VUX0xFTikgPT0gMCk7CisgIG1wZWdfdHMgPSBnX2J5dGVfYXJyYXlfc2l6ZWRfbmV3IChsZW5ndGgpOworICBpZiAoIW1wZWdfdHMpIHsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorICBtZW1zZXQgKG1wZWdfdHMtPmRhdGEsIDB4RkYsIGxlbmd0aCk7CisgIGZvciAocG9zID0gMDsgcG9zIDwgbGVuZ3RoOyBwb3MgKz0gVFNfUEFDS0VUX0xFTikgeworICAgIG1wZWdfdHMtPmRhdGFbcG9zXSA9IDB4NDc7CisgICAgbXBlZ190cy0+ZGF0YVtwb3MgKyAxXSA9IDB4MUY7CisgICAgbXBlZ190cy0+ZGF0YVtwb3MgKyAyXSA9IDB4RkY7CisgICAgbXBlZ190cy0+ZGF0YVtwb3MgKyAzXSA9IGNjOworICAgIGNjID0gKGNjICsgMSkgJiAweDBGOworICB9CisgIHJldHVybiBtcGVnX3RzOworfQorCitzdGF0aWMgR0J5dGVBcnJheSAqCitzZXR1cF90ZXN0X3ZhcmlhYmxlcyAoY29uc3QgZ2NoYXIgKiBmdW5jbmFtZSwKKyAgICBHc3RIbHNEZW11eFRlc3RJbnB1dERhdGEgKiBpbnB1dFRlc3REYXRhLAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgKiBvdXRwdXRUZXN0RGF0YSwKKyAgICBHc3RIbHNEZW11eFRlc3RDYXNlICogaGxzVGVzdENhc2UsCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICogZW5naW5lVGVzdERhdGEsIGd1aW50IHNlZ21lbnRfc2l6ZSkKK3sKKyAgR0J5dGVBcnJheSAqbXBlZ190cyA9IE5VTEw7CisKKyAgaWYgKHNlZ21lbnRfc2l6ZSkgeworICAgIG1wZWdfdHMgPSBnZW5lcmF0ZV90cmFuc3BvcnRfc3RyZWFtICgoc2VnbWVudF9zaXplKSk7CisgICAgZmFpbF91bmxlc3MgKG1wZWdfdHMgIT0gTlVMTCk7CisgICAgZm9yIChndWludCBpdGQgPSAwOyBpbnB1dFRlc3REYXRhW2l0ZF0udXJpOyArK2l0ZCkgeworICAgICAgaWYgKGdfc3RyX2hhc19zdWZmaXggKGlucHV0VGVzdERhdGFbaXRkXS51cmksICIudHMiKSkgeworICAgICAgICBpbnB1dFRlc3REYXRhW2l0ZF0ucGF5bG9hZCA9IG1wZWdfdHMtPmRhdGE7CisgICAgICB9CisgICAgfQorICAgIGZvciAoZ3VpbnQgb3RkID0gMDsgb3V0cHV0VGVzdERhdGFbb3RkXS5uYW1lOyArK290ZCkgeworICAgICAgb3V0cHV0VGVzdERhdGFbb3RkXS5leHBlY3RlZF9kYXRhID0gbXBlZ190cy0+ZGF0YTsKKyAgICAgIGVuZ2luZVRlc3REYXRhLT5vdXRwdXRfc3RyZWFtcyA9CisgICAgICAgICAgZ19saXN0X2FwcGVuZCAoZW5naW5lVGVzdERhdGEtPm91dHB1dF9zdHJlYW1zLCAmb3V0cHV0VGVzdERhdGFbb3RkXSk7CisgICAgfQorICB9CisgIGhsc1Rlc3RDYXNlLT5pbnB1dCA9IGlucHV0VGVzdERhdGE7CisgIGhsc1Rlc3RDYXNlLT5zdGF0ZSA9IGdzdF9zdHJ1Y3R1cmVfbmV3X2VtcHR5IChmdW5jbmFtZSk7CisgIHJldHVybiBtcGVnX3RzOworfQorCisjZGVmaW5lIFRFU1RDQVNFX0lOSVRfQk9JTEVSUExBVEUoc2VnbWVudF9zaXplKSBcCisgIEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzIGh0dHBfc3JjX2NhbGxiYWNrcyA9IHsgMCB9OyBcCisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzIGVuZ2luZV9jYWxsYmFja3MgPSB7IDAgfTsgXAorICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKmVuZ2luZVRlc3REYXRhOyBcCisgIEdzdEhsc0RlbXV4VGVzdENhc2UgaGxzVGVzdENhc2UgPSB7IDAgfTsgXAorICBHQnl0ZUFycmF5ICptcGVnX3RzPU5VTEw7IFwKKyAgZW5naW5lVGVzdERhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldygpOyBcCisgIGZhaWxfdW5sZXNzIChlbmdpbmVUZXN0RGF0YSE9TlVMTCk7IFwKKyAgbXBlZ190cyA9IHNldHVwX3Rlc3RfdmFyaWFibGVzKF9fRlVOQ1RJT05fXywgaW5wdXRUZXN0RGF0YSwgb3V0cHV0VGVzdERhdGEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZobHNUZXN0Q2FzZSwgZW5naW5lVGVzdERhdGEsIHNlZ21lbnRfc2l6ZSk7IFwKKworI2RlZmluZSBURVNUQ0FTRV9VTlJFRl9CT0lMRVJQTEFURSBkb3sgXAorICBpZihlbmdpbmVUZXN0RGF0YS0+c2lnbmFsX2NvbnRleHQpeyBcCisgICAgZ19zbGljZV9mcmVlIChHc3RIbHNEZW11eFRlc3RTZWxlY3RCaXRyYXRlQ29udGV4dCwgZW5naW5lVGVzdERhdGEtPnNpZ25hbF9jb250ZXh0KTsgICAgICAgIFwKKyAgfSBcCisgIGlmKG1wZWdfdHMpIHsgZ19ieXRlX2FycmF5X2ZyZWUgKG1wZWdfdHMsIFRSVUUpOyB9ICAgICAgICAgXAorICBnc3Rfc3RydWN0dXJlX2ZyZWUgKGhsc1Rlc3RDYXNlLnN0YXRlKTsgXAorICBnX29iamVjdF91bnJlZiAoZW5naW5lVGVzdERhdGEpOyBcCit9IHdoaWxlKDApCisKK3N0YXRpYyBnYm9vbGVhbgorYXBwZW5kX3JlcXVlc3RfdXJpIChHUXVhcmsgZmllbGRfaWQsIEdWYWx1ZSAqIHZhbHVlLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEhsc0RlbXV4VGVzdEFwcGVuZFVyaUNvbnRleHQgKmNvbnRleHQgPQorICAgICAgKEdzdEhsc0RlbXV4VGVzdEFwcGVuZFVyaUNvbnRleHQgKikgdXNlcl9kYXRhOworICBHVmFsdWUgdXJpX3ZhbCA9IEdfVkFMVUVfSU5JVDsKKworICBpZiAoY29udGV4dC0+ZmllbGRfaWQgPT0gZmllbGRfaWQpIHsKKyAgICBnX3ZhbHVlX2luaXQgKCZ1cmlfdmFsLCBHX1RZUEVfU1RSSU5HKTsKKyAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKCZ1cmlfdmFsLCBjb250ZXh0LT51cmkpOworICAgIGdzdF92YWx1ZV9hcnJheV9hcHBlbmRfdmFsdWUgKHZhbHVlLCAmdXJpX3ZhbCk7CisgICAgZ192YWx1ZV91bnNldCAoJnVyaV92YWwpOworICB9CisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2hsc2RlbXV4X3Rlc3Rfc2V0X2lucHV0X2RhdGEgKGNvbnN0IEdzdEhsc0RlbXV4VGVzdENhc2UgKiB0ZXN0X2Nhc2UsCisgICAgY29uc3QgR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhICogaW5wdXQsIEdzdFRlc3RIVFRQU3JjSW5wdXQgKiBvdXRwdXQpCit7CisgIG91dHB1dC0+c2l6ZSA9IGlucHV0LT5zaXplOworICBvdXRwdXQtPmNvbnRleHQgPSAoZ3BvaW50ZXIpIGlucHV0OworICBpZiAob3V0cHV0LT5zaXplID09IDApIHsKKyAgICBvdXRwdXQtPnNpemUgPSBzdHJsZW4gKChnY2hhciAqKSBpbnB1dC0+cGF5bG9hZCk7CisgIH0KKyAgZmFpbF91bmxlc3MgKGlucHV0LT51cmkgIT0gTlVMTCk7CisgIGlmIChnX3N0cl9oYXNfc3VmZml4IChpbnB1dC0+dXJpLCAiLm0zdTgiKSkgeworICAgIG91dHB1dC0+cmVzcG9uc2VfaGVhZGVycyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgicmVzcG9uc2UtaGVhZGVycyIsCisgICAgICAgICJDb250ZW50LVR5cGUiLCBHX1RZUEVfU1RSSU5HLCAiYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwiLCBOVUxMKTsKKyAgfSBlbHNlIGlmIChnX3N0cl9oYXNfc3VmZml4IChpbnB1dC0+dXJpLCAiLnRzIikpIHsKKyAgICBvdXRwdXQtPnJlc3BvbnNlX2hlYWRlcnMgPSBnc3Rfc3RydWN0dXJlX25ldyAoInJlc3BvbnNlLWhlYWRlcnMiLAorICAgICAgICAiQ29udGVudC1UeXBlIiwgR19UWVBFX1NUUklORywgInZpZGVvL21wMnQiLCBOVUxMKTsKKyAgfQorICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGQgKHRlc3RfY2FzZS0+c3RhdGUsICJyZXF1ZXN0cyIpKSB7CisgICAgR3N0SGxzRGVtdXhUZXN0QXBwZW5kVXJpQ29udGV4dCBjb250ZXh0ID0KKyAgICAgICAgeyBnX3F1YXJrX2Zyb21fc3RyaW5nICgicmVxdWVzdHMiKSwgaW5wdXQtPnVyaSB9OworICAgIGdzdF9zdHJ1Y3R1cmVfbWFwX2luX3BsYWNlICh0ZXN0X2Nhc2UtPnN0YXRlLCBhcHBlbmRfcmVxdWVzdF91cmksICZjb250ZXh0KTsKKyAgfSBlbHNlIHsKKyAgICBHVmFsdWUgcmVxdWVzdHMgPSBHX1ZBTFVFX0lOSVQ7CisgICAgR1ZhbHVlIHVyaV92YWwgPSBHX1ZBTFVFX0lOSVQ7CisKKyAgICBnX3ZhbHVlX2luaXQgKCZyZXF1ZXN0cywgR1NUX1RZUEVfQVJSQVkpOworICAgIGdfdmFsdWVfaW5pdCAoJnVyaV92YWwsIEdfVFlQRV9TVFJJTkcpOworICAgIGdfdmFsdWVfc2V0X3N0cmluZyAoJnVyaV92YWwsIGlucHV0LT51cmkpOworICAgIGdzdF92YWx1ZV9hcnJheV9hcHBlbmRfdmFsdWUgKCZyZXF1ZXN0cywgJnVyaV92YWwpOworICAgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlICh0ZXN0X2Nhc2UtPnN0YXRlLCAicmVxdWVzdHMiLCAmcmVxdWVzdHMpOworICAgIGdfdmFsdWVfdW5zZXQgKCZ1cmlfdmFsKTsKKyAgICBnX3ZhbHVlX3Vuc2V0ICgmcmVxdWVzdHMpOworICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2hsc2RlbXV4X3Rlc3Rfc3JjX3N0YXJ0IChHc3RUZXN0SFRUUFNyYyAqIHNyYywKKyAgICBjb25zdCBnY2hhciAqIHVyaSwgR3N0VGVzdEhUVFBTcmNJbnB1dCAqIGlucHV0X2RhdGEsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgY29uc3QgR3N0SGxzRGVtdXhUZXN0Q2FzZSAqdGVzdF9jYXNlID0KKyAgICAgIChjb25zdCBHc3RIbHNEZW11eFRlc3RDYXNlICopIHVzZXJfZGF0YTsKKyAgZ3VpbnQgZmFpbF9jb3VudCA9IDA7CisKKyAgR1NUX0RFQlVHICgic3JjX3N0YXJ0ICVzIiwgdXJpKTsKKyAgZm9yIChndWludCBpID0gMDsgdGVzdF9jYXNlLT5pbnB1dFtpXS51cmk7ICsraSkgeworICAgIGlmIChzdHJjbXAgKHRlc3RfY2FzZS0+aW5wdXRbaV0udXJpLCB1cmkpID09IDApIHsKKyAgICAgIGdzdF9obHNkZW11eF90ZXN0X3NldF9pbnB1dF9kYXRhICh0ZXN0X2Nhc2UsICZ0ZXN0X2Nhc2UtPmlucHV0W2ldLAorICAgICAgICAgIGlucHV0X2RhdGEpOworICAgICAgR1NUX0RFQlVHICgib3BlbiBVUkkgJXMiLCB1cmkpOworICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorICB9CisgIGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQgKHRlc3RfY2FzZS0+c3RhdGUsICJmYWlsdXJlLWNvdW50IiwgJmZhaWxfY291bnQpOworICBmYWlsX2NvdW50Kys7CisgIGdzdF9zdHJ1Y3R1cmVfc2V0ICh0ZXN0X2Nhc2UtPnN0YXRlLCAiZmFpbHVyZS1jb3VudCIsIEdfVFlQRV9VSU5ULAorICAgICAgZmFpbF9jb3VudCwgTlVMTCk7CisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF9obHNkZW11eF90ZXN0X3NyY19jcmVhdGUgKEdzdFRlc3RIVFRQU3JjICogc3JjLAorICAgIGd1aW50NjQgb2Zmc2V0LAorICAgIGd1aW50IGxlbmd0aCwgR3N0QnVmZmVyICoqIHJldGJ1ZiwgZ3BvaW50ZXIgY29udGV4dCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RCdWZmZXIgKmJ1ZjsKKyAgLyogIGNvbnN0IEdzdEhsc0RlbXV4VGVzdENhc2UgKnRlc3RfY2FzZSA9IChjb25zdCBHc3RIbHNEZW11eFRlc3RDYXNlICopIHVzZXJfZGF0YTsgKi8KKyAgR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhICppbnB1dCA9IChHc3RIbHNEZW11eFRlc3RJbnB1dERhdGEgKikgY29udGV4dDsKKworICBidWYgPSBnc3RfYnVmZmVyX25ld19hbGxvY2F0ZSAoTlVMTCwgbGVuZ3RoLCBOVUxMKTsKKyAgZmFpbF9pZiAoYnVmID09IE5VTEwsICJOb3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBidWZmZXIiKTsKKyAgZmFpbF9pZiAoaW5wdXQtPnBheWxvYWQgPT0gTlVMTCk7CisgIGdzdF9idWZmZXJfZmlsbCAoYnVmLCAwLCBpbnB1dC0+cGF5bG9hZCArIG9mZnNldCwgbGVuZ3RoKTsKKyAgKnJldGJ1ZiA9IGJ1ZjsKKyAgcmV0dXJuIEdTVF9GTE9XX09LOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X2hsc2RlbXV4X3Rlc3RfbmV0d29ya19lcnJvcl9zcmNfY3JlYXRlIChHc3RUZXN0SFRUUFNyYyAqIHNyYywKKyAgICBndWludDY0IG9mZnNldCwKKyAgICBndWludCBsZW5ndGgsIEdzdEJ1ZmZlciAqKiByZXRidWYsIGdwb2ludGVyIGNvbnRleHQsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgY29uc3QgR3N0SGxzRGVtdXhUZXN0Q2FzZSAqdGVzdF9jYXNlID0KKyAgICAgIChjb25zdCBHc3RIbHNEZW11eFRlc3RDYXNlICopIHVzZXJfZGF0YTsKKyAgR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhICppbnB1dCA9IChHc3RIbHNEZW11eFRlc3RJbnB1dERhdGEgKikgY29udGV4dDsKKyAgY29uc3QgZ2NoYXIgKmZhaWx1cmVfc3VmZml4OworICBndWludDY0IGZhaWx1cmVfcG9zaXRpb24gPSAwOworCisgIGZhaWxfdW5sZXNzICh0ZXN0X2Nhc2UgIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzIChpbnB1dCAhPSBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKGlucHV0LT51cmkgIT0gTlVMTCk7CisgIGZhaWx1cmVfc3VmZml4ID0KKyAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAodGVzdF9jYXNlLT5zdGF0ZSwgImZhaWx1cmUtc3VmZml4Iik7CisgIGlmICghZmFpbHVyZV9zdWZmaXgpIHsKKyAgICBmYWlsdXJlX3N1ZmZpeCA9ICIudHMiOworICB9CisgIGlmICghZ3N0X3N0cnVjdHVyZV9nZXRfdWludDY0ICh0ZXN0X2Nhc2UtPnN0YXRlLCAiZmFpbHVyZS1wb3NpdGlvbiIsCisgICAgICAgICAgJmZhaWx1cmVfcG9zaXRpb24pKSB7CisgICAgZmFpbHVyZV9wb3NpdGlvbiA9IDEwICogVFNfUEFDS0VUX0xFTjsKKyAgfQorICBHU1RfREVCVUcgKCJuZXR3b3JrX2Vycm9yICVzICVzICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBAICUiIEdfR1VJTlQ2NF9GT1JNQVQsCisgICAgICBpbnB1dC0+dXJpLCBmYWlsdXJlX3N1ZmZpeCwgb2Zmc2V0LCBmYWlsdXJlX3Bvc2l0aW9uKTsKKyAgaWYgKGdfc3RyX2hhc19zdWZmaXggKGlucHV0LT51cmksIGZhaWx1cmVfc3VmZml4KQorICAgICAgJiYgb2Zmc2V0ID49IGZhaWx1cmVfcG9zaXRpb24pIHsKKyAgICBHU1RfREVCVUcgKCJyZXR1cm4gZXJyb3IiKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBSRVNPVVJDRSwgUkVBRCwKKyAgICAgICAgKCgiQSBuZXR3b3JrIGVycm9yIG9jY3VycmVkLCBvciB0aGUgc2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVjdGVkbHkuIikpLCAoIkEgbmV0d29yayBlcnJvciBvY2N1cnJlZCwgb3IgdGhlIHNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5leHBlY3RlZGx5LiIpKTsKKyAgICAqcmV0YnVmID0gTlVMTDsKKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgIH0KKyAgcmV0dXJuIGdzdF9obHNkZW11eF90ZXN0X3NyY19jcmVhdGUgKHNyYywgb2Zmc2V0LCBsZW5ndGgsIHJldGJ1ZiwgY29udGV4dCwKKyAgICAgIHVzZXJfZGF0YSk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKiBUZXN0IHNwZWNpZmljIGNvZGUgc3RhcnRzIGhlcmUgKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBUZXN0IGEgbWVkaWEgbWFuaWZlc3Qgd2l0aCBhIHNpbmdsZSBzZWdtZW50CisgKgorICovCitHU1RfU1RBUlRfVEVTVCAoc2ltcGxlVGVzdCkKK3sKKyAgLyogc2VnbWVudF9zaXplIG5lZWRzIHRvIGxhcmdlciB0aGFuIDJLLCBvdGhlcndpc2UgZ3N0aGxzZGVtdXggd2lsbAorICAgICBub3QgcGVyZm9ybSBhIHR5cGVmaW5kIG9uIHRoZSBidWZmZXIgKi8KKyAgY29uc3QgZ3VpbnQgc2VnbWVudF9zaXplID0gMzAgKiBUU19QQUNLRVRfTEVOOworICBjb25zdCBnY2hhciAqbWFuaWZlc3QgPQorICAgICAgIiNFWFRNM1UgXG4iCisgICAgICAiI0VYVC1YLVRBUkdFVERVUkFUSU9OOjFcbiIKKyAgICAgICIjRVhUSU5GOjEsVGVzdFxuIiAiMDAxLnRzXG4iICIjRVhULVgtRU5ETElTVFxuIjsKKyAgR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhIGlucHV0VGVzdERhdGFbXSA9IHsKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvbWVkaWEubTN1OCIsIChndWludDggKikgbWFuaWZlc3QsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC8wMDEudHMiLCBOVUxMLCBzZWdtZW50X3NpemV9LAorICAgIHtOVUxMLCBOVUxMLCAwfSwKKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsic3JjXzAiLCBzZWdtZW50X3NpemUsIE5VTEx9LAorICAgIHtOVUxMLCAwLCBOVUxMfQorICB9OworICBURVNUQ0FTRV9JTklUX0JPSUxFUlBMQVRFIChzZWdtZW50X3NpemUpOworCisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfaGxzZGVtdXhfdGVzdF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X2hsc2RlbXV4X3Rlc3Rfc3JjX2NyZWF0ZTsKKyAgZW5naW5lX2NhbGxiYWNrcy5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YTsKKyAgZW5naW5lX2NhbGxiYWNrcy5hcHBzaW5rX2VvcyA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19zaXplX29mX3JlY2VpdmVkX2RhdGE7CisKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsICZobHNUZXN0Q2FzZSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoREVNVVhfRUxFTUVOVF9OQU1FLAorICAgICAgaW5wdXRUZXN0RGF0YVswXS51cmksICZlbmdpbmVfY2FsbGJhY2tzLCBlbmdpbmVUZXN0RGF0YSk7CisgIFRFU1RDQVNFX1VOUkVGX0JPSUxFUlBMQVRFOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0TWFzdGVyUGxheWxpc3QpCit7CisgIGNvbnN0IGd1aW50IHNlZ21lbnRfc2l6ZSA9IDMwICogVFNfUEFDS0VUX0xFTjsKKyAgY29uc3QgZ2NoYXIgKm1hc3Rlcl9wbGF5bGlzdCA9CisgICAgICAiI0VYVE0zVVxuIgorICAgICAgIiNFWFQtWC1WRVJTSU9OOjRcbiIKKyAgICAgICIjRVhULVgtU1RSRUFNLUlORjpQUk9HUkFNLUlEPTEsIEJBTkRXSURUSD0xMjUxMTM1LCBDT0RFQ1M9XCJhdmMxLjQyMDAxZiBtcDRhLjQwLjJcIiwgUkVTT0xVVElPTj02NDB4MzUyXG4iCisgICAgICAiMTIwMC5tM3U4XG4iOworICBjb25zdCBnY2hhciAqbWVkaWFfcGxheWxpc3QgPQorICAgICAgIiNFWFRNM1UgXG4iCisgICAgICAiI0VYVC1YLVRBUkdFVERVUkFUSU9OOjFcbiIKKyAgICAgICIjRVhUSU5GOjEsVGVzdFxuIiAiMDAxLnRzXG4iICIjRVhULVgtRU5ETElTVFxuIjsKKyAgR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhIGlucHV0VGVzdERhdGFbXSA9IHsKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvbWFzdGVyLm0zdTgiLCAoZ3VpbnQ4ICopIG1hc3Rlcl9wbGF5bGlzdCwgMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0LzEyMDAubTN1OCIsIChndWludDggKikgbWVkaWFfcGxheWxpc3QsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC8wMDEudHMiLCBOVUxMLCBzZWdtZW50X3NpemV9LAorICAgIHtOVUxMLCBOVUxMLCAwfQorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJzcmNfMCIsIHNlZ21lbnRfc2l6ZSwgTlVMTH0sCisgICAge05VTEwsIDAsIE5VTEx9CisgIH07CisgIGNvbnN0IEdWYWx1ZSAqcmVxdWVzdHM7CisgIFRFU1RDQVNFX0lOSVRfQk9JTEVSUExBVEUgKHNlZ21lbnRfc2l6ZSk7CisKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9obHNkZW11eF90ZXN0X3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSBnc3RfaGxzZGVtdXhfdGVzdF9zcmNfY3JlYXRlOworICBlbmdpbmVfY2FsbGJhY2tzLmFwcHNpbmtfcmVjZWl2ZWRfZGF0YSA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19yZWNlaXZlZF9kYXRhOworICBlbmdpbmVfY2FsbGJhY2tzLmFwcHNpbmtfZW9zID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YTsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgJmhsc1Rlc3RDYXNlKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuIChERU1VWF9FTEVNRU5UX05BTUUsCisgICAgICAiaHR0cDovL3VuaXQudGVzdC9tYXN0ZXIubTN1OCIsICZlbmdpbmVfY2FsbGJhY2tzLCBlbmdpbmVUZXN0RGF0YSk7CisKKyAgcmVxdWVzdHMgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoaGxzVGVzdENhc2Uuc3RhdGUsICJyZXF1ZXN0cyIpOworICBmYWlsX3VubGVzcyAocmVxdWVzdHMgIT0gTlVMTCk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChnc3RfdmFsdWVfYXJyYXlfZ2V0X3NpemUgKHJlcXVlc3RzKSwKKyAgICAgIHNpemVvZiAoaW5wdXRUZXN0RGF0YSkgLyBzaXplb2YgKGlucHV0VGVzdERhdGFbMF0pIC0gMSk7CisgIGZvciAoZ3VpbnQgaSA9IDA7IGlucHV0VGVzdERhdGFbaV0udXJpOyArK2kpIHsKKyAgICBjb25zdCBHVmFsdWUgKnVyaTsKKyAgICB1cmkgPSBnc3RfdmFsdWVfYXJyYXlfZ2V0X3ZhbHVlIChyZXF1ZXN0cywgaSk7CisgICAgZmFpbF91bmxlc3MgKHVyaSAhPSBOVUxMKTsKKyAgICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoaW5wdXRUZXN0RGF0YVtpXS51cmksIGdfdmFsdWVfZ2V0X3N0cmluZyAodXJpKSk7CisgIH0KKyAgVEVTVENBU0VfVU5SRUZfQk9JTEVSUExBVEU7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyoKKyAqIFRlc3Qgc2Vla2luZworICoKKyAqLworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrKQoreworICBjb25zdCBndWludCBzZWdtZW50X3NpemUgPSA2MCAqIFRTX1BBQ0tFVF9MRU47CisgIGNvbnN0IGdjaGFyICptYW5pZmVzdCA9CisgICAgICAiI0VYVE0zVSBcbiIKKyAgICAgICIjRVhULVgtVEFSR0VURFVSQVRJT046MVxuIgorICAgICAgIiNFWFRJTkY6MSxUZXN0XG4iICIwMDEudHNcbiIgIiNFWFQtWC1FTkRMSVNUXG4iOworICBHc3RIbHNEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC9tZWRpYS5tM3U4IiwgKGd1aW50OCAqKSBtYW5pZmVzdCwgMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0LzAwMS50cyIsIE5VTEwsIHNlZ21lbnRfc2l6ZX0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJzcmNfMCIsIHNlZ21lbnRfc2l6ZSwgTlVMTH0sCisgICAge05VTEwsIDAsIE5VTEx9CisgIH07CisgIEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzIGh0dHBfc3JjX2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKmVuZ2luZVRlc3REYXRhOworICBHc3RIbHNEZW11eFRlc3RDYXNlIGhsc1Rlc3RDYXNlID0geyAwIH07CisgIEdCeXRlQXJyYXkgKm1wZWdfdHMgPSBOVUxMOworCisgIGVuZ2luZVRlc3REYXRhID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXcgKCk7CisgIG1wZWdfdHMgPSBzZXR1cF90ZXN0X3ZhcmlhYmxlcyAoX19GVU5DVElPTl9fLCBpbnB1dFRlc3REYXRhLCBvdXRwdXRUZXN0RGF0YSwKKyAgICAgICZobHNUZXN0Q2FzZSwgZW5naW5lVGVzdERhdGEsIHNlZ21lbnRfc2l6ZSk7CisKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9obHNkZW11eF90ZXN0X3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSBnc3RfaGxzZGVtdXhfdGVzdF9zcmNfY3JlYXRlOworICAvKiBzZWVrIHRvIDVtcy4KKyAgICogQmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9uZSBmcmFnbWVudCwgd2UgZXhwZWN0IHRoZSB3aG9sZSBmaWxlIHRvIGJlCisgICAqIGRvd25sb2FkZWQgYWdhaW4KKyAgICovCisgIGVuZ2luZVRlc3REYXRhLT50aHJlc2hvbGRfZm9yX3NlZWsgPSAyMCAqIFRTX1BBQ0tFVF9MRU47CisgIGVuZ2luZVRlc3REYXRhLT5zZWVrX2V2ZW50ID0KKyAgICAgIGdzdF9ldmVudF9uZXdfc2VlayAoMS4wLCBHU1RfRk9STUFUX1RJTUUsCisgICAgICBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19LRVlfVU5JVCwgR1NUX1NFRUtfVFlQRV9TRVQsCisgICAgICA1ICogR1NUX01TRUNPTkQsIEdTVF9TRUVLX1RZUEVfTk9ORSwgMCk7CisKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsICZobHNUZXN0Q2FzZSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3NlZWsgKERFTVVYX0VMRU1FTlRfTkFNRSwKKyAgICAgIGlucHV0VGVzdERhdGFbMF0udXJpLCBlbmdpbmVUZXN0RGF0YSk7CisKKyAgVEVTVENBU0VfVU5SRUZfQk9JTEVSUExBVEU7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK3J1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKGdkb3VibGUgcmF0ZSwgR3N0U2Vla1R5cGUgc3RhcnRfdHlwZSwKKyAgICBndWludDY0IHNlZWtfc3RhcnQsIEdzdFNlZWtUeXBlIHN0b3BfdHlwZSwKKyAgICBndWludDY0IHNlZWtfc3RvcCwgR3N0U2Vla0ZsYWdzIGZsYWdzLCBndWludDY0IHNlZ21lbnRfc3RhcnQsCisgICAgZ3VpbnQ2NCBzZWdtZW50X3N0b3AsIGdpbnQgc2VnbWVudHMpCit7CisgIGNvbnN0IGd1aW50IHNlZ21lbnRfc2l6ZSA9IDYwICogVFNfUEFDS0VUX0xFTjsKKyAgY29uc3QgZ2NoYXIgKm1hbmlmZXN0ID0KKyAgICAgICIjRVhUTTNVIFxuIgorICAgICAgIiNFWFQtWC1UQVJHRVREVVJBVElPTjoxXG4iCisgICAgICAiI0VYVElORjoxLFRlc3RcbiIgIjAwMS50c1xuIgorICAgICAgIiNFWFRJTkY6MSxUZXN0XG4iICIwMDIudHNcbiIKKyAgICAgICIjRVhUSU5GOjEsVGVzdFxuIiAiMDAzLnRzXG4iCisgICAgICAiI0VYVElORjoxLFRlc3RcbiIgIjAwNC50c1xuIiAiI0VYVC1YLUVORExJU1RcbiI7CisgIEdzdEhsc0RlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L21lZGlhLm0zdTgiLCAoZ3VpbnQ4ICopIG1hbmlmZXN0LCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvMDAxLnRzIiwgTlVMTCwgc2VnbWVudF9zaXplfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvMDAyLnRzIiwgTlVMTCwgc2VnbWVudF9zaXplfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvMDAzLnRzIiwgTlVMTCwgc2VnbWVudF9zaXplfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvMDA0LnRzIiwgTlVMTCwgc2VnbWVudF9zaXplfSwKKyAgICB7TlVMTCwgTlVMTCwgMH0sCisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgb3V0cHV0VGVzdERhdGFbXSA9IHsKKyAgICB7InNyY18wIiwgc2VnbWVudF9zaXplICogc2VnbWVudHMsIE5VTEx9LAorICAgIHtOVUxMLCAwLCBOVUxMfQorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICplbmdpbmVUZXN0RGF0YTsKKyAgR3N0SGxzRGVtdXhUZXN0Q2FzZSBobHNUZXN0Q2FzZSA9IHsgMCB9OworICBHQnl0ZUFycmF5ICptcGVnX3RzID0gTlVMTDsKKworICBlbmdpbmVUZXN0RGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICgpOworICBtcGVnX3RzID0gc2V0dXBfdGVzdF92YXJpYWJsZXMgKF9fRlVOQ1RJT05fXywgaW5wdXRUZXN0RGF0YSwgb3V0cHV0VGVzdERhdGEsCisgICAgICAmaGxzVGVzdENhc2UsIGVuZ2luZVRlc3REYXRhLCBzZWdtZW50X3NpemUpOworCisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfaGxzZGVtdXhfdGVzdF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X2hsc2RlbXV4X3Rlc3Rfc3JjX2NyZWF0ZTsKKworICAvKiBGSVhNRSBoYWNrIHRvIGF2b2lkIGhhdmluZyBhIDAgc2VxbnVtICovCisgIGdzdF91dGlsX3NlcW51bV9uZXh0ICgpOworCisgIC8qIFNlZWsgdG8gMS41cywgZXhwZWN0IGl0IHRvIHN0YXJ0IGZyb20gMXMgKi8KKyAgZW5naW5lVGVzdERhdGEtPnRocmVzaG9sZF9mb3Jfc2VlayA9IDIwICogVFNfUEFDS0VUX0xFTjsKKyAgZW5naW5lVGVzdERhdGEtPnNlZWtfZXZlbnQgPQorICAgICAgZ3N0X2V2ZW50X25ld19zZWVrIChyYXRlLCBHU1RfRk9STUFUX1RJTUUsIGZsYWdzLCBzdGFydF90eXBlLAorICAgICAgc2Vla19zdGFydCwgc3RvcF90eXBlLCBzZWVrX3N0b3ApOworICBnc3Rfc2VnbWVudF9pbml0ICgmb3V0cHV0VGVzdERhdGFbMF0ucG9zdF9zZWVrX3NlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSk7CisgIG91dHB1dFRlc3REYXRhWzBdLnBvc3Rfc2Vla19zZWdtZW50LnJhdGUgPSByYXRlOworICBvdXRwdXRUZXN0RGF0YVswXS5wb3N0X3NlZWtfc2VnbWVudC5zdGFydCA9IHNlZ21lbnRfc3RhcnQ7CisgIG91dHB1dFRlc3REYXRhWzBdLnBvc3Rfc2Vla19zZWdtZW50LnRpbWUgPSBzZWdtZW50X3N0YXJ0OworICBvdXRwdXRUZXN0RGF0YVswXS5wb3N0X3NlZWtfc2VnbWVudC5zdG9wID0gc2VnbWVudF9zdG9wOworICBvdXRwdXRUZXN0RGF0YVswXS5zZWdtZW50X3ZlcmlmaWNhdGlvbl9uZWVkZWQgPSBUUlVFOworCisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzICgmaHR0cF9zcmNfY2FsbGJhY2tzLCAmaGxzVGVzdENhc2UpOworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9zZWVrIChERU1VWF9FTEVNRU5UX05BTUUsCisgICAgICBpbnB1dFRlc3REYXRhWzBdLnVyaSwgZW5naW5lVGVzdERhdGEpOworCisgIFRFU1RDQVNFX1VOUkVGX0JPSUxFUlBMQVRFOworfQorCisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla0tleVVuaXRQb3NpdGlvbikKK3sKKyAgLyogU2VlayB0byAxLjVzIHdpdGgga2V5IHVuaXQsIGl0IHNob3VsZCBnbyBiYWNrIHRvIDEuMHMuIDMgc2VnbWVudHMgd2lsbCBiZQorICAgKiBwdXNoZWQgKi8KKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoMS4wLCBHU1RfU0VFS19UWVBFX1NFVCwgMTUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9OT05FLCAwLCBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19LRVlfVU5JVCwKKyAgICAgIDEwMDAgKiBHU1RfTVNFQ09ORCwgLTEsIDMpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla1Bvc2l0aW9uKQoreworICAvKiBTZWVrIHRvIDEuNXMgd2l0aG91dCBrZXkgdW5pdCwgaXQgc2hvdWxkIGtlZXAgdGhlIDEuNXMsIGJ1dCBzdGlsbCBwdXNoCisgICAqIGZyb20gdGhlIDFzdCBzZWdtZW50LCBzbyAzIHNlZ21lbnRzIHdpbGwgYmUKKyAgICogcHVzaGVkICovCisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKDEuMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDE1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfTk9ORSwgMCwgR1NUX1NFRUtfRkxBR19GTFVTSCwgMTUwMCAqIEdTVF9NU0VDT05ELCAtMSwgMyk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrVXBkYXRlU3RvcFBvc2l0aW9uKQoreworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgxLjAsIEdTVF9TRUVLX1RZUEVfTk9ORSwgMTUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9TRVQsIDMwMDAgKiBHU1RfTVNFQ09ORCwgMCwgMCwgMzAwMCAqIEdTVF9NU0VDT05ELCAzKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdFNlZWtTbmFwQmVmb3JlUG9zaXRpb24pCit7CisgIC8qIFNlZWsgdG8gMS41cywgc25hcCBiZWZvcmUsIGl0IGdvIHRvIDFzICovCisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKDEuMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDE1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfTk9ORSwgMCwgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfU05BUF9CRUZPUkUsCisgICAgICAxMDAwICogR1NUX01TRUNPTkQsIC0xLCAzKTsKK30KKworR1NUX0VORF9URVNUOworCisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla1NuYXBBZnRlclBvc2l0aW9uKQoreworICAvKiBTZWVrIHRvIDEuNXMgd2l0aCBzbmFwIGFmdGVyLCBpdCBzaG91bGQgbW92ZSB0byAycyAqLworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgxLjAsIEdTVF9TRUVLX1RZUEVfU0VULCAxNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX05PTkUsIDAsIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX1NOQVBfQUZURVIsCisgICAgICAyMDAwICogR1NUX01TRUNPTkQsIC0xLCAyKTsKK30KKworR1NUX0VORF9URVNUOworCisKK0dTVF9TVEFSVF9URVNUICh0ZXN0UmV2ZXJzZVNlZWtTbmFwQmVmb3JlUG9zaXRpb24pCit7CisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKC0xLjAsIEdTVF9TRUVLX1RZUEVfU0VULCAxMDAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgMjUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfU05BUF9CRUZPUkUsIDEwMDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIDMwMDAgKiBHU1RfTVNFQ09ORCwgMik7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworCitHU1RfU1RBUlRfVEVTVCAodGVzdFJldmVyc2VTZWVrU25hcEFmdGVyUG9zaXRpb24pCit7CisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKC0xLjAsIEdTVF9TRUVLX1RZUEVfU0VULCAxMDAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgMjUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfU05BUF9BRlRFUiwgMTAwMCAqIEdTVF9NU0VDT05ELAorICAgICAgMjAwMCAqIEdTVF9NU0VDT05ELCAxKTsKK30KKworR1NUX0VORF9URVNUOworCitzdGF0aWMgdm9pZAordGVzdERvd25sb2FkRXJyb3JNZXNzYWdlQ2FsbGJhY2sgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICogZW5naW5lLAorICAgIEdzdE1lc3NhZ2UgKiBtc2csIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR0Vycm9yICplcnIgPSBOVUxMOworICBnY2hhciAqZGJnX2luZm8gPSBOVUxMOworCisgIGZhaWxfdW5sZXNzIChHU1RfTUVTU0FHRV9UWVBFIChtc2cpID09IEdTVF9NRVNTQUdFX0VSUk9SKTsKKyAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IgKG1zZywgJmVyciwgJmRiZ19pbmZvKTsKKyAgR1NUX0RFQlVHICgiRXJyb3IgZnJvbSBlbGVtZW50ICVzIDogJXNcbiIsCisgICAgICBHU1RfT0JKRUNUX05BTUUgKG1zZy0+c3JjKSwgZXJyLT5tZXNzYWdlKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX3N0cmluZyAoR1NUX09CSkVDVF9OQU1FIChtc2ctPnNyYyksIERFTVVYX0VMRU1FTlRfTkFNRSk7CisgIGdfZXJyb3JfZnJlZSAoZXJyKTsKKyAgZ19mcmVlIChkYmdfaW5mbyk7CisgIGdfbWFpbl9sb29wX3F1aXQgKGVuZ2luZS0+bG9vcCk7Cit9CisKKy8qIHRlc3QgZmFpbGluZyB0byBkb3dubG9hZCB0aGUgbWVkaWEgcGxheWxpc3QgKi8KK0dTVF9TVEFSVF9URVNUICh0ZXN0TWVkaWFQbGF5bGlzdE5vdEZvdW5kKQoreworICBjb25zdCBnY2hhciAqbWFzdGVyX3BsYXlsaXN0ID0KKyAgICAgICIjRVhUTTNVXG4iCisgICAgICAiI0VYVC1YLVZFUlNJT046NFxuIgorICAgICAgIiNFWFQtWC1TVFJFQU0tSU5GOlBST0dSQU0tSUQ9MSwgQkFORFdJRFRIPTEyNTExMzUsIENPREVDUz1cImF2YzEuNDIwMDFmIG1wNGEuNDAuMlwiLCBSRVNPTFVUSU9OPTY0MHgzNTJcbiIKKyAgICAgICIxMjAwLm0zdThcbiI7CisgIEdzdEhsc0RlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L21hc3Rlci5tM3U4IiwgKGd1aW50OCAqKSBtYXN0ZXJfcGxheWxpc3QsIDB9LAorICAgIHtOVUxMLCBOVUxMLCAwfQorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJzcmNfMCIsIDAsIE5VTEx9LAorICAgIHtOVUxMLCAwLCBOVUxMfQorICB9OworICBURVNUQ0FTRV9JTklUX0JPSUxFUlBMQVRFICgwKTsKKworICBnc3Rfc3RydWN0dXJlX3NldCAoaGxzVGVzdENhc2Uuc3RhdGUsCisgICAgICAiZmFpbHVyZS1jb3VudCIsIEdfVFlQRV9VSU5ULCAwLAorICAgICAgImZhaWx1cmUtc3VmZml4IiwgR19UWVBFX1NUUklORywgIjEyMDAubTN1OCIsIE5VTEwpOworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X2hsc2RlbXV4X3Rlc3Rfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9obHNkZW11eF90ZXN0X3NyY19jcmVhdGU7CisgIGVuZ2luZV9jYWxsYmFja3MuYXBwc2lua19yZWNlaXZlZF9kYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGE7CisgIGVuZ2luZV9jYWxsYmFja3MuYnVzX2Vycm9yX21lc3NhZ2UgPSB0ZXN0RG93bmxvYWRFcnJvck1lc3NhZ2VDYWxsYmFjazsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgJmhsc1Rlc3RDYXNlKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuIChERU1VWF9FTEVNRU5UX05BTUUsCisgICAgICAiaHR0cDovL3VuaXQudGVzdC9tYXN0ZXIubTN1OCIsICZlbmdpbmVfY2FsbGJhY2tzLCBlbmdpbmVUZXN0RGF0YSk7CisKKyAgVEVTVENBU0VfVU5SRUZfQk9JTEVSUExBVEU7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK2hsc2RlbXV4X3Rlc3RfY2hlY2tfbm9fZGF0YV9yZWNlaXZlZCAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUKKyAgICAqIGVuZ2luZSwgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSwgMCk7CisgIGdfbWFpbl9sb29wX3F1aXQgKGVuZ2luZS0+bG9vcCk7Cit9CisKKy8qIHRlc3QgZmFpbGluZyB0byBkb3dubG9hZCBhIG1lZGlhIHNlZ21lbnQgKGEgNDA0IGVycm9yKSAqLworR1NUX1NUQVJUX1RFU1QgKHRlc3RGcmFnbWVudE5vdEZvdW5kKQoreworICBjb25zdCBnY2hhciAqbWFzdGVyX3BsYXlsaXN0ID0KKyAgICAgICIjRVhUTTNVXG4iCisgICAgICAiI0VYVC1YLVZFUlNJT046NFxuIgorICAgICAgIiNFWFQtWC1TVFJFQU0tSU5GOlBST0dSQU0tSUQ9MSwgQkFORFdJRFRIPTEyNTExMzUsIENPREVDUz1cImF2YzEuNDIwMDFmIG1wNGEuNDAuMlwiLCBSRVNPTFVUSU9OPTY0MHgzNTJcbiIKKyAgICAgICIxMjAwLm0zdThcbiI7CisgIGNvbnN0IGdjaGFyICptZWRpYV9wbGF5bGlzdCA9CisgICAgICAiI0VYVE0zVSBcbiIKKyAgICAgICIjRVhULVgtVEFSR0VURFVSQVRJT046MVxuIgorICAgICAgIiNFWFRJTkY6MSxUZXN0XG4iICIwMDEudHNcbiIgIiNFWFQtWC1FTkRMSVNUXG4iOworICBHc3RIbHNEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC9tYXN0ZXIubTN1OCIsIChndWludDggKikgbWFzdGVyX3BsYXlsaXN0LCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvMTIwMC5tM3U4IiwgKGd1aW50OCAqKSBtZWRpYV9wbGF5bGlzdCwgMH0sCisgICAge05VTEwsIE5VTEwsIDB9CisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgb3V0cHV0VGVzdERhdGFbXSA9IHsKKyAgICB7InNyY18wIiwgMCwgTlVMTH0sCisgICAge05VTEwsIDAsIE5VTEx9CisgIH07CisgIFRFU1RDQVNFX0lOSVRfQk9JTEVSUExBVEUgKDApOworCisgIGdzdF9zdHJ1Y3R1cmVfc2V0IChobHNUZXN0Q2FzZS5zdGF0ZSwKKyAgICAgICJmYWlsdXJlLWNvdW50IiwgR19UWVBFX1VJTlQsIDAsCisgICAgICAiZmFpbHVyZS1zdWZmaXgiLCBHX1RZUEVfU1RSSU5HLCAiMDAxLnRzIiwgTlVMTCk7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfaGxzZGVtdXhfdGVzdF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X2hsc2RlbXV4X3Rlc3Rfc3JjX2NyZWF0ZTsKKyAgZW5naW5lX2NhbGxiYWNrcy5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YTsKKyAgZW5naW5lX2NhbGxiYWNrcy5hcHBzaW5rX2VvcyA9IGhsc2RlbXV4X3Rlc3RfY2hlY2tfbm9fZGF0YV9yZWNlaXZlZDsKKyAgZW5naW5lX2NhbGxiYWNrcy5idXNfZXJyb3JfbWVzc2FnZSA9IHRlc3REb3dubG9hZEVycm9yTWVzc2FnZUNhbGxiYWNrOworCisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzICgmaHR0cF9zcmNfY2FsbGJhY2tzLCAmaGxzVGVzdENhc2UpOworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4gKERFTVVYX0VMRU1FTlRfTkFNRSwKKyAgICAgICJodHRwOi8vdW5pdC50ZXN0L21hc3Rlci5tM3U4IiwgJmVuZ2luZV9jYWxsYmFja3MsIGVuZ2luZVRlc3REYXRhKTsKKworICBURVNUQ0FTRV9VTlJFRl9CT0lMRVJQTEFURTsKK30KKworR1NUX0VORF9URVNUOworCisvKiB3b3JrLWFyb3VuZCB0aGF0IGFkYXB0aXZlZGVtdXggaXMgbm90IHBvc3RpbmcgYW4gZXJyb3IgbWVzc2FnZQorICAgYWJvdXQgZmFpbHVyZSB0byBkb3dubG9hZCBhIGZyYWdtZW50ICovCitzdGF0aWMgdm9pZAorbWlzc2luZ19tZXNzYWdlX2Vvc19jYWxsYmFjayAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKiBlbmdpbmUsCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YSA9IEdTVF9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UgKHVzZXJfZGF0YSk7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgKnRlc3RPdXRwdXRTdHJlYW1EYXRhOworCisgIGZhaWxfdW5sZXNzIChzdHJlYW0gIT0gTlVMTCk7CisgIHRlc3RPdXRwdXRTdHJlYW1EYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2ZpbmRfdGVzdF9kYXRhX2J5X3N0cmVhbSAodGVzdERhdGEsIHN0cmVhbSwgTlVMTCk7CisgIGZhaWxfdW5sZXNzICh0ZXN0T3V0cHV0U3RyZWFtRGF0YSAhPSBOVUxMKTsKKyAgLyogZXhwZWN0IHRvIHJlY2VpdmUgbGVzcyB0aGFuIGZpbGUgc2l6ZSAqLworICBmYWlsX3VubGVzcyAoc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplIDwKKyAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5leHBlY3RlZF9zaXplLAorICAgICAgInNpemUgdmFsaWRhdGlvbiBmYWlsZWQgZm9yICVzLCBleHBlY3RlZCA8ICVkIHJlY2VpdmVkICVkIiwKKyAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5uYW1lLCB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfc2l6ZSwKKyAgICAgIHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSk7CisgIHRlc3REYXRhLT5jb3VudF9vZl9maW5pc2hlZF9zdHJlYW1zKys7CisgIEdTVF9ERUJVRyAoIkVPUyBjYWxsYmFjayAlZCAlZCIsCisgICAgICB0ZXN0RGF0YS0+Y291bnRfb2ZfZmluaXNoZWRfc3RyZWFtcywKKyAgICAgIGdfbGlzdF9sZW5ndGggKHRlc3REYXRhLT5vdXRwdXRfc3RyZWFtcykpOworICBpZiAodGVzdERhdGEtPmNvdW50X29mX2ZpbmlzaGVkX3N0cmVhbXMgPT0KKyAgICAgIGdfbGlzdF9sZW5ndGggKHRlc3REYXRhLT5vdXRwdXRfc3RyZWFtcykpIHsKKyAgICBnX21haW5fbG9vcF9xdWl0IChlbmdpbmUtPmxvb3ApOworICB9Cit9CisKKworLyoKKyAqIFRlc3QgZnJhZ21lbnQgZG93bmxvYWQgZXJyb3IKKyAqIExldCB0aGUgYWRhcHRpdmUgZGVtdXggZG93bmxvYWQgYSBmZXcgYnl0ZXMsIHRoZW4gaW5zdHJ1Y3QgdGhlCisgKiB0ZXN0IHNvdXAgaHR0cCBzcmMgZWxlbWVudCB0byBnZW5lcmF0ZSBhbiBlcnJvci4KKyAqLworR1NUX1NUQVJUX1RFU1QgKHRlc3RGcmFnbWVudERvd25sb2FkRXJyb3IpCit7CisgIGNvbnN0IGd1aW50IHNlZ21lbnRfc2l6ZSA9IDMwICogVFNfUEFDS0VUX0xFTjsKKyAgY29uc3QgZ2NoYXIgKm1hc3Rlcl9wbGF5bGlzdCA9CisgICAgICAiI0VYVE0zVVxuIgorICAgICAgIiNFWFQtWC1WRVJTSU9OOjRcbiIKKyAgICAgICIjRVhULVgtU1RSRUFNLUlORjpQUk9HUkFNLUlEPTEsIEJBTkRXSURUSD0xMjUxMTM1LCBDT0RFQ1M9XCJhdmMxLjQyMDAxZiBtcDRhLjQwLjJcIiwgUkVTT0xVVElPTj02NDB4MzUyXG4iCisgICAgICAiMTIwMC5tM3U4XG4iOworICBjb25zdCBnY2hhciAqbWVkaWFfcGxheWxpc3QgPQorICAgICAgIiNFWFRNM1UgXG4iCisgICAgICAiI0VYVC1YLVZFUlNJT046NFxuIgorICAgICAgIiNFWFQtWC1UQVJHRVREVVJBVElPTjoxXG4iCisgICAgICAiI0VYVElORjoxLFRlc3RcbiIgIjAwMS50c1xuIgorICAgICAgIiNFWFRJTkY6MSxUZXN0XG4iICIwMDIudHNcbiIgIiNFWFQtWC1FTkRMSVNUXG4iOworICBHc3RIbHNEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC9tYXN0ZXIubTN1OCIsIChndWludDggKikgbWFzdGVyX3BsYXlsaXN0LCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvMTIwMC5tM3U4IiwgKGd1aW50OCAqKSBtZWRpYV9wbGF5bGlzdCwgMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0LzAwMS50cyIsIE5VTEwsIHNlZ21lbnRfc2l6ZX0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0LzAwMi50cyIsIE5VTEwsIHNlZ21lbnRfc2l6ZX0sCisgICAge05VTEwsIE5VTEwsIDB9CisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgb3V0cHV0VGVzdERhdGFbXSA9IHsKKyAgICB7InNyY18wIiwgMiAqIHNlZ21lbnRfc2l6ZSwgTlVMTH0sCisgICAge05VTEwsIDAsIE5VTEx9CisgIH07CisgIGNvbnN0IGd1aW50NjQgZmFpbHVyZV9wb3NpdGlvbiA9IDIwNDg7CisgIFRFU1RDQVNFX0lOSVRfQk9JTEVSUExBVEUgKHNlZ21lbnRfc2l6ZSk7CisKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9obHNkZW11eF90ZXN0X3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSBnc3RfaGxzZGVtdXhfdGVzdF9uZXR3b3JrX2Vycm9yX3NyY19jcmVhdGU7CisgIGdzdF9zdHJ1Y3R1cmVfc2V0IChobHNUZXN0Q2FzZS5zdGF0ZSwKKyAgICAgICJmYWlsdXJlLXN1ZmZpeCIsIEdfVFlQRV9TVFJJTkcsICIwMDEudHMiLAorICAgICAgImZhaWx1cmUtcG9zaXRpb24iLCBHX1RZUEVfVUlOVDY0LCBmYWlsdXJlX3Bvc2l0aW9uLCBOVUxMKTsKKyAgZW5naW5lX2NhbGxiYWNrcy5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YTsKKyAgZW5naW5lX2NhbGxiYWNrcy5hcHBzaW5rX2VvcyA9IG1pc3NpbmdfbWVzc2FnZV9lb3NfY2FsbGJhY2s7CisgIGVuZ2luZV9jYWxsYmFja3MuYnVzX2Vycm9yX21lc3NhZ2UgPSB0ZXN0RG93bmxvYWRFcnJvck1lc3NhZ2VDYWxsYmFjazsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgJmhsc1Rlc3RDYXNlKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuIChERU1VWF9FTEVNRU5UX05BTUUsCisgICAgICBpbnB1dFRlc3REYXRhWzBdLnVyaSwgJmVuZ2luZV9jYWxsYmFja3MsIGVuZ2luZVRlc3REYXRhKTsKKworICBURVNUQ0FTRV9VTlJFRl9CT0lMRVJQTEFURTsKK30KKworR1NUX0VORF9URVNUOworCitzdGF0aWMgU3VpdGUgKgoraGxzX2RlbXV4X3N1aXRlICh2b2lkKQoreworICBTdWl0ZSAqcyA9IHN1aXRlX2NyZWF0ZSAoImhsc19kZW11eCIpOworICBUQ2FzZSAqdGNfYmFzaWNUZXN0ID0gdGNhc2VfY3JlYXRlICgiYmFzaWNUZXN0Iik7CisKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgc2ltcGxlVGVzdCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RNYXN0ZXJQbGF5bGlzdCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RNZWRpYVBsYXlsaXN0Tm90Rm91bmQpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0RnJhZ21lbnROb3RGb3VuZCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RGcmFnbWVudERvd25sb2FkRXJyb3IpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vlayk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RTZWVrS2V5VW5pdFBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWtQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RTZWVrVXBkYXRlU3RvcFBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWtTbmFwQmVmb3JlUG9zaXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vla1NuYXBBZnRlclBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFJldmVyc2VTZWVrU25hcEJlZm9yZVBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFJldmVyc2VTZWVrU25hcEFmdGVyUG9zaXRpb24pOworCisgIHRjYXNlX2FkZF91bmNoZWNrZWRfZml4dHVyZSAodGNfYmFzaWNUZXN0LCBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9zZXR1cCwKKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3RlYXJkb3duKTsKKworICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2Jhc2ljVGVzdCk7CisKKyAgcmV0dXJuIHM7Cit9CisKK0dTVF9DSEVDS19NQUlOIChobHNfZGVtdXgpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jCmluZGV4IDQwNjEyM2UuLmY0OWU5MDEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2hsc2RlbXV4X20zdTguYworKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9obHNkZW11eF9tM3U4LmMKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJtM3U4LmgiCiAjaW5jbHVkZSAibTN1OC5jIgogCi1HU1RfREVCVUdfQ0FURUdPUlkgKGZyYWdtZW50ZWRfZGVidWcpOworR1NUX0RFQlVHX0NBVEVHT1JZIChobHNfZGVidWcpOwogCiBzdGF0aWMgY29uc3QgZ2NoYXIgKklOVkFMSURfUExBWUxJU1QgPSAiI0VYVE0zIFVJTlZBTElEIjsKIApAQCAtOTQsNiArOTQsMTYgQEAKICNFWFQtWC1TVFJFQU0tSU5GOlBST0dSQU0tSUQ9MSxCQU5EV0lEVEg9NjUwMDAsQ09ERUNTPVwibXA0YS40MC41XCJcblwKIGh0dHA6Ly9leGFtcGxlLmNvbS9hdWRpby1vbmx5Lm0zdTgiOwogCitzdGF0aWMgY29uc3QgZ2NoYXIgKlZBUklBTlRfUExBWUxJU1RfV0lUSF9VUklfTUlTU0lORyA9ICIjRVhUTTNVIFxuXAorI0VYVC1YLVNUUkVBTS1JTkY6UFJPR1JBTS1JRD0xLEJBTkRXSURUSD0xMjgwMDBcblwKK2h0dHA6Ly9leGFtcGxlLmNvbS9sb3cubTN1OFxuXAorI0VYVC1YLVNUUkVBTS1JTkY6UFJPR1JBTS1JRD0xLEJBTkRXSURUSD0yNTYwMDBcblwKK1xuXAorI0VYVC1YLVNUUkVBTS1JTkY6UFJPR1JBTS1JRD0xLEJBTkRXSURUSD03NjgwMDBcblwKK2h0dHA6Ly9leGFtcGxlLmNvbS9oaS5tM3U4XG5cCisjRVhULVgtU1RSRUFNLUlORjpQUk9HUkFNLUlEPTEsQkFORFdJRFRIPTY1MDAwLENPREVDUz1cIm1wNGEuNDAuNVwiXG5cCitodHRwOi8vZXhhbXBsZS5jb20vYXVkaW8tb25seS5tM3U4IjsKKwogc3RhdGljIGNvbnN0IGdjaGFyICpFTVBUWV9MSU5FU19WQVJJQU5UX1BMQVlMSVNUID0gIiNFWFRNM1UgXG5cCiAjRVhULVgtU1RSRUFNLUlORjpQUk9HUkFNLUlEPTEsQkFORFdJRFRIPTEyODAwMFxuXG5cCiBodHRwOi8vZXhhbXBsZS5jb20vbG93Lm0zdThcblxuXApAQCAtMzcxLDcgKzM4MSw3IEBACiAgIGFzc2VydF9lcXVhbHNfaW50IChzdHJlYW0tPmJhbmR3aWR0aCwgNjUwMDApOwogICBhc3NlcnRfZXF1YWxzX2ludCAoc3RyZWFtLT5wcm9ncmFtX2lkLCAxKTsKICAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHN0cmVhbS0+dXJpLCAiaHR0cDovL2V4YW1wbGUuY29tL2F1ZGlvLW9ubHkubTN1OCIpOwotICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoc3RyZWFtLT5jb2RlY3MsICJcIm1wNGEuNDAuNVwiIik7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChzdHJlYW0tPmNvZGVjcywgIm1wNGEuNDAuNSIpOwogCiAgIC8qIExvdyAqLwogICB0bXAgPSBnX2xpc3RfbmV4dCAodG1wKTsKQEAgLTQwOCw2ICs0MTgsMTcgQEAKIAogR1NUX0VORF9URVNUOwogCitHU1RfU1RBUlRfVEVTVCAodGVzdF9sb2FkX21haW5fcGxheWxpc3RfdmFyaWFudF93aXRoX21pc3NpbmdfdXJpKQoreworICBHc3RNM1U4Q2xpZW50ICpjbGllbnQ7CisKKyAgY2xpZW50ID0gbG9hZF9wbGF5bGlzdCAoVkFSSUFOVF9QTEFZTElTVF9XSVRIX1VSSV9NSVNTSU5HKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGNsaWVudC0+bWFpbi0+bGlzdHMpLCAzKTsKKyAgZ3N0X20zdThfY2xpZW50X2ZyZWUgKGNsaWVudCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKwogR1NUX1NUQVJUX1RFU1QgKHRlc3RfbG9hZF93aW5kb3dzX2xpbmVfZW5kaW5nc192YXJpYW50X3BsYXlsaXN0KQogewogICBkb190ZXN0X2xvYWRfbWFpbl9wbGF5bGlzdF92YXJpYW50IChXSU5ET1dTX0xJTkVfRU5ESU5HU19WQVJJQU5UX1BMQVlMSVNUKTsKQEAgLTQ5MCw2ICs1MTEsOCBAQAogICBHc3RNM1U4Q2xpZW50ICpjbGllbnQ7CiAgIEdzdE0zVTggKnBsOwogICBHc3RNM1U4TWVkaWFGaWxlICpmaWxlOworICBnaW50NjQgc3RhcnQgPSAtMTsKKyAgZ2ludDY0IHN0b3AgPSAtMTsKIAogICBjbGllbnQgPSBsb2FkX3BsYXlsaXN0IChMSVZFX1BMQVlMSVNUKTsKIApAQCAtNTA5LDYgKzUzMiw5IEBACiAgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChmaWxlLT51cmksCiAgICAgICAiaHR0cHM6Ly9wcml2LmV4YW1wbGUuY29tL2ZpbGVTZXF1ZW5jZTI2ODMudHMiKTsKICAgYXNzZXJ0X2VxdWFsc19pbnQgKGZpbGUtPnNlcXVlbmNlLCAyNjgzKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tM3U4X2NsaWVudF9nZXRfc2Vla19yYW5nZSAoY2xpZW50LCAmc3RhcnQsICZzdG9wKSk7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKHN0YXJ0LCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19mbG9hdCAoc3RvcCAvIChkb3VibGUpIEdTVF9TRUNPTkQsIDE2LjApOwogCiAgIGdzdF9tM3U4X2NsaWVudF9mcmVlIChjbGllbnQpOwogfQpAQCAtNTUyLDYgKzU3OCw4IEBACiAgIEdzdE0zVThDbGllbnQgKmNsaWVudDsKICAgR3N0TTNVOCAqcGw7CiAgIEdzdE0zVThNZWRpYUZpbGUgKmZpbGU7CisgIGdpbnQ2NCBzdGFydCA9IC0xOworICBnaW50NjQgc3RvcCA9IC0xOwogCiAgIGNsaWVudCA9IGxvYWRfcGxheWxpc3QgKERPVUJMRVNfUExBWUxJU1QpOwogCkBAIC01NjUsNiArNTkzLDEwIEBACiAgIGFzc2VydF9lcXVhbHNfZmxvYXQgKGZpbGUtPmR1cmF0aW9uIC8gKGRvdWJsZSkgR1NUX1NFQ09ORCwgMTAuMjM0NCk7CiAgIGZpbGUgPSBHU1RfTTNVOF9NRURJQV9GSUxFIChnX2xpc3RfbnRoX2RhdGEgKHBsLT5maWxlcywgMykpOwogICBhc3NlcnRfZXF1YWxzX2Zsb2F0IChmaWxlLT5kdXJhdGlvbiAvIChkb3VibGUpIEdTVF9TRUNPTkQsIDkuOTIpOworICBmYWlsX3VubGVzcyAoZ3N0X20zdThfY2xpZW50X2dldF9zZWVrX3JhbmdlIChjbGllbnQsICZzdGFydCwgJnN0b3ApKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAoc3RhcnQsIDApOworICBhc3NlcnRfZXF1YWxzX2Zsb2F0IChzdG9wIC8gKGRvdWJsZSkgR1NUX1NFQ09ORCwKKyAgICAgIDEwLjMyMSArIDkuNjc4OSArIDEwLjIzNDQgKyA5LjkyKTsKICAgZ3N0X20zdThfY2xpZW50X2ZyZWUgKGNsaWVudCk7CiB9CiAKQEAgLTEzMDEsMTkgKzEzMzMsNjIgQEAKIEdTVF9FTkRfVEVTVDsKICNlbmRpZgogCitHU1RfU1RBUlRfVEVTVCAodGVzdF91cmxfd2l0aF9zbGFzaF9xdWVyeV9wYXJhbSkKK3sKKyAgc3RhdGljIGNvbnN0IGdjaGFyICpNQVNURVJfUExBWUxJU1QgPSAiI0VYVE0zVSBcbiIKKyAgICAgICIjRVhULVgtVkVSU0lPTjo0XG4iCisgICAgICAiI0VYVC1YLVNUUkVBTS1JTkY6UFJPR1JBTS1JRD0xLCBCQU5EV0lEVEg9MTI1MTEzNSwgQ09ERUNTPVwiYXZjMS40MjAwMWYsIG1wNGEuNDAuMlwiLCBSRVNPTFVUSU9OPTY0MHgzNTJcbiIKKyAgICAgICIxMjUxL21lZGlhLm0zdTg/YWNsPS8qMTA1NDU1OV9oMjY0XzE1MDBrLm1wNFxuIjsKKyAgR3N0TTNVOENsaWVudCAqY2xpZW50OworICBHc3RNM1U4ICptZWRpYTsKKworICBjbGllbnQgPSBsb2FkX3BsYXlsaXN0IChNQVNURVJfUExBWUxJU1QpOworCisgIGFzc2VydF9lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChjbGllbnQtPm1haW4tPmxpc3RzKSwgMSk7CisgIG1lZGlhID0gZ19saXN0X250aF9kYXRhIChjbGllbnQtPm1haW4tPmxpc3RzLCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKG1lZGlhLT51cmksCisgICAgICAiaHR0cDovL2xvY2FsaG9zdC8xMjUxL21lZGlhLm0zdTg/YWNsPS8qMTA1NDU1OV9oMjY0XzE1MDBrLm1wNCIpOworICBnc3RfbTN1OF9jbGllbnRfZnJlZSAoY2xpZW50KTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF9zdHJlYW1faW5mX3RhZykKK3sKKyAgc3RhdGljIGNvbnN0IGdjaGFyICpNQVNURVJfUExBWUxJU1QgPSAiI0VYVE0zVSBcbiIKKyAgICAgICIjRVhULVgtVkVSU0lPTjo0XG4iCisgICAgICAiI0VYVC1YLVNUUkVBTS1JTkY6UFJPR1JBTS1JRD0xLCBCQU5EV0lEVEg9MTI1MTEzNSwgQ09ERUNTPVwiYXZjMS40MjAwMWYsIG1wNGEuNDAuMlwiLCBSRVNPTFVUSU9OPTY0MHgzNTJcbiIKKyAgICAgICJtZWRpYS5tM3U4XG4iOworICBHc3RNM1U4Q2xpZW50ICpjbGllbnQ7CisgIEdzdE0zVTggKm1lZGlhOworCisgIGNsaWVudCA9IGxvYWRfcGxheWxpc3QgKE1BU1RFUl9QTEFZTElTVCk7CisKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGNsaWVudC0+bWFpbi0+bGlzdHMpLCAxKTsKKyAgbWVkaWEgPSBnX2xpc3RfbnRoX2RhdGEgKGNsaWVudC0+bWFpbi0+bGlzdHMsIDApOworICBhc3NlcnRfZXF1YWxzX2ludDY0IChtZWRpYS0+cHJvZ3JhbV9pZCwgMSk7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKG1lZGlhLT53aWR0aCwgNjQwKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAobWVkaWEtPmhlaWdodCwgMzUyKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAobWVkaWEtPmJhbmR3aWR0aCwgMTI1MTEzNSk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChtZWRpYS0+Y29kZWNzLCAiYXZjMS40MjAwMWYsIG1wNGEuNDAuMiIpOworICBnc3RfbTN1OF9jbGllbnRfZnJlZSAoY2xpZW50KTsKK30KKworR1NUX0VORF9URVNUOworCiBzdGF0aWMgU3VpdGUgKgogaGxzZGVtdXhfc3VpdGUgKHZvaWQpCiB7CiAgIFN1aXRlICpzID0gc3VpdGVfY3JlYXRlICgiaGxzZGVtdXhfbTN1OCIpOwogICBUQ2FzZSAqdGNfbTN1OCA9IHRjYXNlX2NyZWF0ZSAoIm0zdThjbGllbnQiKTsKIAotICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZnJhZ21lbnRlZF9kZWJ1ZywgImhsc2RlbXV4X20zdSIsIDAsCi0gICAgICAiaGxzZGVtdXggbTN1IHRlc3QiKTsKKyAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGhsc19kZWJ1ZywgImhsc2RlbXV4X20zdSIsIDAsICJobHNkZW11eCBtM3UgdGVzdCIpOwogCiAgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfbTN1OCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19tM3U4LCB0ZXN0X2xvYWRfbWFpbl9wbGF5bGlzdF9pbnZhbGlkKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX20zdTgsIHRlc3RfbG9hZF9tYWluX3BsYXlsaXN0X3JlbmRpdGlvbik7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19tM3U4LCB0ZXN0X2xvYWRfbWFpbl9wbGF5bGlzdF92YXJpYW50KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX20zdTgsIHRlc3RfbG9hZF9tYWluX3BsYXlsaXN0X3ZhcmlhbnRfd2l0aF9taXNzaW5nX3VyaSk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19tM3U4LCB0ZXN0X2xvYWRfd2luZG93c19saW5lX2VuZGluZ3NfdmFyaWFudF9wbGF5bGlzdCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19tM3U4LCB0ZXN0X2xvYWRfbWFpbl9wbGF5bGlzdF93aXRoX2VtcHR5X2xpbmVzKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX20zdTgsIHRlc3RfbG9hZF93aW5kb3dzX21haW5fcGxheWxpc3Rfd2l0aF9lbXB0eV9saW5lcyk7CkBAIC0xMzQxLDcgKzE0MTYsOCBAQAogI2VuZGlmCiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19tM3U4LCB0ZXN0X3BsYXlsaXN0X3dpdGhfZG91Ymxlc19kdXJhdGlvbik7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19tM3U4LCB0ZXN0X3BsYXlsaXN0X3dpdGhfZW5jcnlwdGlvbik7Ci0KKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX20zdTgsIHRlc3RfdXJsX3dpdGhfc2xhc2hfcXVlcnlfcGFyYW0pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfbTN1OCwgdGVzdF9zdHJlYW1faW5mX3RhZyk7CiAgIHJldHVybiBzOwogfQogCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9pZDNtdXguYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2lkM211eC5jCmluZGV4IDEzNTZlYzIuLjE5MGFmZjQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2lkM211eC5jCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2lkM211eC5jCkBAIC00NSw2ICs0NSw4IEBACiAgIDB4MDgsIDB4MDAsIDB4NGIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MjAsIDB4MDAsIDB4MDAKIH07CiAKK3N0YXRpYyBjb25zdCBndWludDggcHJpdmF0ZWRhdGFbXSA9IHsgMHg5OSwgMHg2NiwgMHgzMywgMHgxMSwgMHgyMiwgMHg0NCB9OworCiAjZGVmaW5lIE1QM19GUkFNRV9TSVpFIDYyNgogCiAvKiB0aGUgcGVhayBhbmQgZ2FpbiB2YWx1ZXMgYXJlIHN0b3JlZCBwcmV0dHkgcm91Z2hseSwgc28gY2hlY2sgdGhhdCB0aGV5J3JlCkBAIC0xMjIsNiArMTI0LDIwIEBACiAgICAgICAgIEdTVF9UQUdfQkVBVFNfUEVSX01JTlVURSwgVEVTVF9CUE0sIE5VTEwpOwogICB9CiAgIGlmIChtYXNrICYgKDEgPDwgMTMpKSB7CisgICAgR3N0U2FtcGxlICpzYW1wbGU7CisgICAgR3N0QnVmZmVyICpidWY7CisKKyAgICBidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKHNpemVvZiAocHJpdmF0ZWRhdGEpKTsKKyAgICBnc3RfYnVmZmVyX2ZpbGwgKGJ1ZiwgMCwgcHJpdmF0ZWRhdGEsIHNpemVvZiAocHJpdmF0ZWRhdGEpKTsKKyAgICBzYW1wbGUgPSBnc3Rfc2FtcGxlX25ldyAoYnVmLCBOVUxMLCBOVUxMLAorICAgICAgICBnc3Rfc3RydWN0dXJlX25ldyAoIklEM1ByaXZhdGVGcmFtZSIsCisgICAgICAgICAgICAib3duZXIiLCBHX1RZUEVfU1RSSU5HLCAibWUiLCBOVUxMKSk7CisgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKyAgICBnc3RfdGFnX2xpc3RfYWRkICh0YWdzLCBHU1RfVEFHX01FUkdFX0tFRVAsCisgICAgICAgIEdTVF9UQUdfUFJJVkFURV9EQVRBLCBzYW1wbGUsIE5VTEwpOworICAgIGdzdF9zYW1wbGVfdW5yZWYgKHNhbXBsZSk7CisgIH0KKyAgaWYgKG1hc2sgJiAoMSA8PCAxNCkpIHsKICAgfQogICByZXR1cm4gdGFnczsKIH0KQEAgLTI3MCw2ICsyODYsMjAgQEAKICAgICBmYWlsX3VubGVzc19zb3J0YV9lcXVhbHNfZmxvYXQgKGJwbSwgVEVTVF9CUE0pOwogICB9CiAgIGlmIChtYXNrICYgKDEgPDwgMTMpKSB7CisgICAgR3N0U2FtcGxlICpzYW1wbGUgPSBOVUxMOworICAgIGNvbnN0IEdzdFN0cnVjdHVyZSAqaW5mbzsKKyAgICBHc3RCdWZmZXIgKmJ1ZjsKKworICAgIGZhaWxfdW5sZXNzIChnc3RfdGFnX2xpc3RfZ2V0X3NhbXBsZSAodGFncywgR1NUX1RBR19QUklWQVRFX0RBVEEsICZzYW1wbGUpKTsKKyAgICBmYWlsX3VubGVzcyAoc2FtcGxlICE9IE5VTEwpOworICAgIGJ1ZiA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlciAoc2FtcGxlKTsKKyAgICBmYWlsX2lmIChnc3RfYnVmZmVyX21lbWNtcCAoYnVmLCAwLCBwcml2YXRlZGF0YSwgc2l6ZW9mIChwcml2YXRlZGF0YSkpKTsKKyAgICBpbmZvID0gZ3N0X3NhbXBsZV9nZXRfaW5mbyAoc2FtcGxlKTsKKyAgICBmYWlsX3VubGVzcyAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZSAoaW5mbywgIklEM1ByaXZhdGVGcmFtZSIpKTsKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfc3RyaW5nIChnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKGluZm8sICJvd25lciIpLCAibWUiKTsKKyAgICBnc3Rfc2FtcGxlX3VucmVmIChzYW1wbGUpOworICB9CisgIGlmIChtYXNrICYgKDEgPDwgMTQpKSB7CiAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZDZlNzcuLjAwMDAwMDAKLS0tIGEvdGVzdHMvY2hlY2svZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMuYworKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqCi0gKiB1bml0IHRlc3QgZm9yIG1wZzEyM2F1ZGlvZGVjCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDEyIENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0KLSNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KLSNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KLQotI2luY2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2ZmdC9nc3RmZnRzMTYuaD4KLSNpbmNsdWRlIDxnc3QvZmZ0L2dzdGZmdHMzMi5oPgotI2luY2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0ZjMyLmg+Ci0jaW5jbHVkZSA8Z3N0L2ZmdC9nc3RmZnRmNjQuaD4KLQotI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5oPgotCi0vKiBGb3IgZWFzZSBvZiBwcm9ncmFtbWluZyB3ZSB1c2UgZ2xvYmFscyB0byBrZWVwIHJlZnMgZm9yIG91ciBmbG9hdGluZwotICogc3JjIGFuZCBzaW5rIHBhZHMgd2UgY3JlYXRlOyBvdGhlcndpc2Ugd2UgYWx3YXlzIGhhdmUgdG8gZG8gZ2V0X3BhZCwKLSAqIGdldF9wZWVyLCBhbmQgdGhlbiByZW1vdmUgcmVmZXJlbmNlcyBpbiBldmVyeSB0ZXN0IGZ1bmN0aW9uICovCi1zdGF0aWMgR3N0UGFkICpteXNyY3BhZCwgKm15c2lua3BhZDsKLQotCi0jZGVmaW5lIE1QMl9TVFJFQU1fRklMRU5BTUUgInN0cmVhbS5tcDIiCi0jZGVmaW5lIE1QM19DQlJfU1RSRUFNX0ZJTEVOQU1FICJjYnJfc3RyZWFtLm1wMyIKLSNkZWZpbmUgTVAzX1ZCUl9TVFJFQU1fRklMRU5BTUUgInZicl9zdHJlYW0ubXAzIgotCi0KLS8qIG1wZWcgMSBsYXllciAyIHN0cmVhbSBjcmVhdGVkIHdpdGg6Ci0gKiBnc3QtbGF1bmNoLTEuMCAtdiBhdWRpb3Rlc3RzcmMgd2F2ZT1zaW5lIGZyZXE9NDQwIHZvbHVtZT0xIG51bS1idWZmZXJzPTMyICEgXAotICogICAiYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KTQ0MTAwLCBjaGFubmVscz0oaW50KTEiICEgXAotICogICBhdmVuY19tcDIgYml0cmF0ZT0zMjAwMCAhIHRlZSBuYW1lPXQgXAotICogICB0LiAhIHF1ZXVlICEgZmFrZXNpbmsgc2lsZW50PWZhbHNlIFwKLSAqICAgdC4gISBxdWV1ZSAhIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3QubXAyCi0gKgotICogbXBlZyAxIGxheWVyIDMgQ0JSIHN0cmVhbSBjcmVhdGVkIHdpdGg6Ci0gKiBnc3QtbGF1bmNoLTEuMCAtdiBhdWRpb3Rlc3RzcmMgd2F2ZT1zaW5lIGZyZXE9NDQwIHZvbHVtZT0xIG51bS1idWZmZXJzPTMyICEgXAotICogICAiYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KTQ0MTAwLCBjaGFubmVscz0oaW50KTEiICEgXAotICogICBsYW1lbXAzZW5jIGVuY29kaW5nLWVuZ2luZS1xdWFsaXR5PWhpZ2ggY2JyPXRydWUgdGFyZ2V0PWJpdHJhdGUgYml0cmF0ZT0zMiAhIFwKLSAqICAgImF1ZGlvL21wZWcsIHJhdGU9KGludCk0NDEwMCwgY2hhbm5lbHM9KGludCkxIiAhIHRlZSBuYW1lPXQgXAotICogICB0LiAhIHF1ZXVlICEgZmFrZXNpbmsgc2lsZW50PWZhbHNlIFwKLSAqICAgdC4gISBxdWV1ZSAhIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3QubXAzCi0gKgotICogbXBlZyAxIGxheWVyIDMgVkJSIHN0cmVhbSBjcmVhdGVkIHdpdGg6Ci0gKiBnc3QtbGF1bmNoLTEuMCAtdiBhdWRpb3Rlc3RzcmMgd2F2ZT1zaW5lIGZyZXE9NDQwIHZvbHVtZT0xIG51bS1idWZmZXJzPTMyICEgXAotICogICAiYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KTQ0MTAwLCBjaGFubmVscz0oaW50KTEiICEgXAotICogICBsYW1lbXAzZW5jIGVuY29kaW5nLWVuZ2luZS1xdWFsaXR5PWhpZ2ggY2JyPWZhbHNlIHRhcmdldD1xdWFsaXR5IHF1YWxpdHk9NyAhIFwKLSAqICAgImF1ZGlvL21wZWcsIHJhdGU9KGludCk0NDEwMCwgY2hhbm5lbHM9KGludCkxIiAhIHRlZSBuYW1lPXQgXAotICogICB0LiAhIHF1ZXVlICEgZmFrZXNpbmsgc2lsZW50PWZhbHNlIFwKLSAqICAgdC4gISBxdWV1ZSAhIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3QubXAzCi0gKi8KLQotCi0vKiBGRlQgdGVzdCBoZWxwZXJzIHRha2VuIGZyb20gZ3N0LXBsdWdpbnMtYmFzZSB0ZXN0cy9jaGVjay9hdWRpb3Jlc2FtcGxlLmMgKi8KLQotI2RlZmluZSBGRlRfSEVMUEVSUyh0eXBlLGZmdHRhZyxmZnR0YWcyLHNjYWxlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RhdGljIGdkb3VibGUgbWFnbml0dWRlIyNmZnR0YWcgKGNvbnN0IEdzdEZGVCMjZmZ0dGFnIyNDb21wbGV4ICpjKSAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBnZG91YmxlIG1hZyA9IChnZG91YmxlKSBjLT5yICogKGdkb3VibGUpIGMtPnI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBtYWcgKz0gKGdkb3VibGUpIGMtPmkgKiAoZ2RvdWJsZSkgYy0+aTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBtYWcgLz0gc2NhbGUgKiBzY2FsZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBtYWcgPSAxMC4wICogbG9nMTAgKG1hZyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICByZXR1cm4gbWFnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RhdGljIGdkb3VibGUgZmluZF9tYWluX2ZyZXF1ZW5jeV9zcG90XyMjZmZ0dGFnICggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNvbnN0IEdzdEZGVCMjZmZ0dGFnIyNDb21wbGV4ICp2LCBpbnQgZWxlbWVudHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbnQgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBnZG91YmxlIG1heG1hZyA9IC05OTk5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbnQgbWF4aWR4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmb3IgKGk9MDsgaTxlbGVtZW50czsgKytpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdkb3VibGUgbWFnID0gbWFnbml0dWRlIyNmZnR0YWcgKHYraSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChtYWcgPiBtYXhtYWcpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgbWF4bWFnID0gbWFnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgbWF4aWR4ID0gaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICByZXR1cm4gbWF4aWR4IC8gKGdkb3VibGUpIGVsZW1lbnRzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RhdGljIGdib29sZWFuIGlzX3plcm9fZXhjZXB0XyMjZmZ0dGFnIChjb25zdCBHc3RGRlQjI2ZmdHRhZyMjQ29tcGxleCAqdiwgICAgXAotICAgIGludCBlbGVtZW50cywgZ2RvdWJsZSBzcG90KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbnQgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmb3IgKGk9MDsgaTxlbGVtZW50czsgKytpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdkb3VibGUgcG9zID0gaSAvIChnZG91YmxlKSBlbGVtZW50czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGdkb3VibGUgbWFnID0gbWFnbml0dWRlIyNmZnR0YWcgKHYraSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChmYWJzIChwb3MgLSBzcG90KSA+IDAuMDEpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgaWYgKG1hZyA+IC0zNS4wKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBHU1RfTE9HKCJGb3VuZCBtYWduaXR1ZGUgYXQgJWYgOiAlZiAocGVhayBhdCAlZilcbiIsIHBvcywgbWFnLCBzcG90KTsgXAotICAgICAgICByZXR1cm4gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICByZXR1cm4gVFJVRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RhdGljIHZvaWQgY2hlY2tfbWFpbl9mcmVxdWVuY3lfc3BvdF8jI2ZmdHRhZyAoR3N0QnVmZmVyICpidWZmZXIsIGdkb3VibGUgICAgXAotICAgIGV4cGVjdGVkX3Nwb3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBHc3RNYXBJbmZvIG1hcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbnQgbnVtX3NhbXBsZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBnZG91YmxlIGFjdHVhbF9zcG90OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBHc3RGRlQjI2ZmdHRhZyAqY3R4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBHc3RGRlQjI2ZmdHRhZyMjQ29tcGxleCAqZmZ0ZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBnc3RfYnVmZmVyX21hcCAoYnVmZmVyLCAmbWFwLCBHU1RfTUFQX1JFQUQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBudW1fc2FtcGxlcyA9IG1hcC5zaXplIC8gc2l6ZW9mKHR5cGUpICYgfjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBjdHggPSBnc3RfZmZ0XyMjZmZ0dGFnMiMjX25ldyAobnVtX3NhbXBsZXMsIEZBTFNFKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmZnRkYXRhID0gZ19uZXcgKEdzdEZGVCMjZmZ0dGFnIyNDb21wbGV4LCBudW1fc2FtcGxlcyAvIDIgKyAxKTsgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBnc3RfZmZ0XyMjZmZ0dGFnMiMjX3dpbmRvdyAoY3R4LCAodHlwZSopbWFwLmRhdGEsICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEdTVF9GRlRfV0lORE9XX0hBTU1JTkcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBnc3RfZmZ0XyMjZmZ0dGFnMiMjX2ZmdCAoY3R4LCAodHlwZSopbWFwLmRhdGEsIGZmdGRhdGEpOyAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBhY3R1YWxfc3BvdCA9IGZpbmRfbWFpbl9mcmVxdWVuY3lfc3BvdF8jI2ZmdHRhZyAoZmZ0ZGF0YSwgICAgICAgICAgICAgICAgICAgXAotICAgIG51bV9zYW1wbGVzIC8gMiArIDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBHU1RfTE9HICgiRXhwZWN0ZWQgc3BvdDogJS4zZiBhY3R1YWw6ICUuM2YgJWYiLCBleHBlY3RlZF9zcG90LCBhY3R1YWxfc3BvdCwgXAotICAgIGZhYnMgKGV4cGVjdGVkX3Nwb3QgLSBhY3R1YWxfc3BvdCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmYWlsX3VubGVzcyAoZmFicyAoZXhwZWN0ZWRfc3BvdCAtIGFjdHVhbF9zcG90KSA8IDAuMDUsICAgICAgICAgICAgICAgICAgICAgXAotICAgICJBY3R1YWwgbWFpbiBmcmVxdWVuY3kgc3BvdCBpcyB0b28gZmFyIGF3YXkgZnJvbSBleHBlY3RlZCBvbmUiKTsgICAgICAgICAgXAotICBmYWlsX3VubGVzcyAoaXNfemVyb19leGNlcHRfIyNmZnR0YWcgKGZmdGRhdGEsIG51bV9zYW1wbGVzIC8gMiArIDEsICAgICAgICAgXAotICAgIGFjdHVhbF9zcG90KSwgIk9uZSBzZWNvbmRhcnkgcGVhayBpbiBzcGVjdHJ1bSBleGNlZWRzIHRocmVzaG9sZCIpOyAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZtYXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBnc3RfZmZ0XyMjZmZ0dGFnMiMjX2ZyZWUgKGN0eCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBnX2ZyZWUgKGZmdGRhdGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfQotRkZUX0hFTFBFUlMgKGdpbnQzMiwgUzMyLCBzMzIsIDIxNDc0ODM2NDcuMCk7Ci0KLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmt0ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImF1ZGlvL3gtcmF3LCBmb3JtYXQgPSAoc3RyaW5nKSAiIEdTVF9BVURJT19ORSAoUzMyKSkKLSAgICApOwotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGxheWVyMl9zcmN0ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKLSAgICBHU1RfUEFEX1NSQywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFNfQU5ZKTsKLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBsYXllcjNfc3JjdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCi0gICAgR1NUX1BBRF9TUkMsCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTX0FOWSk7Ci0KLQotc3RhdGljIHZvaWQKLXNldHVwX2lucHV0X3BpcGVsaW5lIChnY2hhciBjb25zdCAqc3RyZWFtX2ZpbGVuYW1lLCBHc3RFbGVtZW50ICoqIHBpcGVsaW5lLAotICAgIEdzdEVsZW1lbnQgKiogYXBwc2luaykKLXsKLSAgR3N0RWxlbWVudCAqc291cmNlLCAqcGFyc2VyOwotCi0gICpwaXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcgKE5VTEwpOwotICBzb3VyY2UgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJmaWxlc3JjIiwgTlVMTCk7Ci0gIHBhcnNlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoIm1wZWdhdWRpb3BhcnNlIiwgTlVMTCk7Ci0gICphcHBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiYXBwc2luayIsIE5VTEwpOwotCi0gIGdzdF9iaW5fYWRkX21hbnkgKEdTVF9CSU4gKCpwaXBlbGluZSksIHNvdXJjZSwgcGFyc2VyLCAqYXBwc2luaywgTlVMTCk7Ci0gIGdzdF9lbGVtZW50X2xpbmtfbWFueSAoc291cmNlLCBwYXJzZXIsICphcHBzaW5rLCBOVUxMKTsKLQotICB7Ci0gICAgY2hhciAqZnVsbF9maWxlbmFtZSA9Ci0gICAgICAgIGdfYnVpbGRfZmlsZW5hbWUgKEdTVF9URVNUX0ZJTEVTX1BBVEgsIHN0cmVhbV9maWxlbmFtZSwgTlVMTCk7Ci0gICAgZ19vYmplY3Rfc2V0IChHX09CSkVDVCAoc291cmNlKSwgImxvY2F0aW9uIiwgZnVsbF9maWxlbmFtZSwgTlVMTCk7Ci0gICAgZ19mcmVlIChmdWxsX2ZpbGVuYW1lKTsKLSAgfQotCi0gIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoKnBpcGVsaW5lLCBHU1RfU1RBVEVfUExBWUlORyk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jbGVhbnVwX2lucHV0X3BpcGVsaW5lIChHc3RFbGVtZW50ICogcGlwZWxpbmUpCi17Ci0gIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAocGlwZWxpbmUsIEdTVF9TVEFURV9OVUxMKTsKLSAgZ3N0X29iamVjdF91bnJlZiAocGlwZWxpbmUpOwotfQotCi1zdGF0aWMgR3N0RWxlbWVudCAqCi1zZXR1cF9tcGVnMWxheWVyMmRlYyAodm9pZCkKLXsKLSAgR3N0RWxlbWVudCAqbXBnMTIzYXVkaW9kZWM7Ci0gIEdzdENhcHMgKmNhcHM7Ci0KLSAgR1NUX0RFQlVHICgic2V0dXBfbXBlZzFsYXllcjJkZWMiKTsKLSAgbXBnMTIzYXVkaW9kZWMgPSBnc3RfY2hlY2tfc2V0dXBfZWxlbWVudCAoIm1wZzEyM2F1ZGlvZGVjIik7Ci0gIG15c3JjcGFkID0gZ3N0X2NoZWNrX3NldHVwX3NyY19wYWQgKG1wZzEyM2F1ZGlvZGVjLCAmbGF5ZXIyX3NyY3RlbXBsYXRlKTsKLSAgbXlzaW5rcGFkID0gZ3N0X2NoZWNrX3NldHVwX3NpbmtfcGFkIChtcGcxMjNhdWRpb2RlYywgJnNpbmt0ZW1wbGF0ZSk7Ci0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlzcmNwYWQsIFRSVUUpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKG15c2lua3BhZCwgVFJVRSk7Ci0KLSAgLyogVGhpcyBpcyBuZWNlc3NhcnkgdG8gdHJpZ2dlciBhIHNldF9mb3JtYXQgY2FsbCBpbiB0aGUgZGVjb2RlcjsKLSAgICogZml4ZWQgY2FwcyBkb24ndCB0cmlnZ2VyIGl0ICovCi0gIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXVkaW8vbXBlZyIsCi0gICAgICAibXBlZ3ZlcnNpb24iLCBHX1RZUEVfSU5ULCAxLAotICAgICAgImxheWVyIiwgR19UWVBFX0lOVCwgMiwKLSAgICAgICJyYXRlIiwgR19UWVBFX0lOVCwgNDQxMDAsCi0gICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAxLCAicGFyc2VkIiwgR19UWVBFX0JPT0xFQU4sIFRSVUUsIE5VTEwpOwotICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteXNyY3BhZCwgbXBnMTIzYXVkaW9kZWMsIGNhcHMsIEdTVF9GT1JNQVRfVElNRSk7Ci0gIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLQotICByZXR1cm4gbXBnMTIzYXVkaW9kZWM7Ci19Ci0KLXN0YXRpYyBHc3RFbGVtZW50ICoKLXNldHVwX21wZWcxbGF5ZXIzZGVjICh2b2lkKQotewotICBHc3RFbGVtZW50ICptcGcxMjNhdWRpb2RlYzsKLSAgR3N0Q2FwcyAqY2FwczsKLQotICBHU1RfREVCVUcgKCJzZXR1cF9tcGVnMWxheWVyM2RlYyIpOwotICBtcGcxMjNhdWRpb2RlYyA9IGdzdF9jaGVja19zZXR1cF9lbGVtZW50ICgibXBnMTIzYXVkaW9kZWMiKTsKLSAgbXlzcmNwYWQgPSBnc3RfY2hlY2tfc2V0dXBfc3JjX3BhZCAobXBnMTIzYXVkaW9kZWMsICZsYXllcjNfc3JjdGVtcGxhdGUpOwotICBteXNpbmtwYWQgPSBnc3RfY2hlY2tfc2V0dXBfc2lua19wYWQgKG1wZzEyM2F1ZGlvZGVjLCAmc2lua3RlbXBsYXRlKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNyY3BhZCwgVFJVRSk7Ci0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlzaW5rcGFkLCBUUlVFKTsKLQotICAvKiBUaGlzIGlzIG5lY2Vzc2FyeSB0byB0cmlnZ2VyIGEgc2V0X2Zvcm1hdCBjYWxsIGluIHRoZSBkZWNvZGVyOwotICAgKiBmaXhlZCBjYXBzIGRvbid0IHRyaWdnZXIgaXQgKi8KLSAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJhdWRpby9tcGVnIiwKLSAgICAgICJtcGVndmVyc2lvbiIsIEdfVFlQRV9JTlQsIDEsCi0gICAgICAibGF5ZXIiLCBHX1RZUEVfSU5ULCAzLAotICAgICAgInJhdGUiLCBHX1RZUEVfSU5ULCA0NDEwMCwKLSAgICAgICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsICJwYXJzZWQiLCBHX1RZUEVfQk9PTEVBTiwgVFJVRSwgTlVMTCk7Ci0gIGdzdF9jaGVja19zZXR1cF9ldmVudHMgKG15c3JjcGFkLCBtcGcxMjNhdWRpb2RlYywgY2FwcywgR1NUX0ZPUk1BVF9USU1FKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotCi0gIHJldHVybiBtcGcxMjNhdWRpb2RlYzsKLX0KLQotc3RhdGljIHZvaWQKLWNsZWFudXBfbXBnMTIzYXVkaW9kZWMgKEdzdEVsZW1lbnQgKiBtcGcxMjNhdWRpb2RlYykKLXsKLSAgR1NUX0RFQlVHICgiY2xlYW51cF9tcGVnMWxheWVyMmRlYyIpOwotICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKG1wZzEyM2F1ZGlvZGVjLCBHU1RfU1RBVEVfTlVMTCk7Ci0KLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNyY3BhZCwgRkFMU0UpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKG15c2lua3BhZCwgRkFMU0UpOwotICBnc3RfY2hlY2tfdGVhcmRvd25fc3JjX3BhZCAobXBnMTIzYXVkaW9kZWMpOwotICBnc3RfY2hlY2tfdGVhcmRvd25fc2lua19wYWQgKG1wZzEyM2F1ZGlvZGVjKTsKLSAgZ3N0X2NoZWNrX3RlYXJkb3duX2VsZW1lbnQgKG1wZzEyM2F1ZGlvZGVjKTsKLX0KLQotc3RhdGljIHZvaWQKLXJ1bl9kZWNvZGluZ190ZXN0IChHc3RFbGVtZW50ICogbXBnMTIzYXVkaW9kZWMsIGdjaGFyIGNvbnN0ICpmaWxlbmFtZSkKLXsKLSAgR3N0QnVzICpidXM7Ci0gIHVuc2lnbmVkIGludCBudW1faW5wdXRfYnVmZmVycywgbnVtX2RlY29kZWRfYnVmZmVyczsKLSAgZ2ludCBleHBlY3RlZF9zaXplOwotICBHc3RDYXBzICpvdXRfY2FwcywgKmNhcHM7Ci0gIEdzdEF1ZGlvSW5mbyBhdWRpb2luZm87Ci0gIEdzdEVsZW1lbnQgKmlucHV0X3BpcGVsaW5lLCAqaW5wdXRfYXBwc2luazsKLSAgaW50IGk7Ci0gIEdzdEJ1ZmZlciAqb3V0YnVmZmVyOwotCi0gIC8qIDQ0MCBIeiA9IGZyZXF1ZW5jeSBvZiBzaW5lIHdhdmUgaW4gYXVkaW8gZGF0YQotICAgKiA0NDEwMCBIeiA9IHNhbXBsZSByYXRlCi0gICAqICg0NDEwMCAvIDIpIEh6ID0gTnlxdWlzdCBmcmVxdWVuY3kgKi8KLSAgc3RhdGljIGRvdWJsZSBjb25zdCBleHBlY3RlZF9mcmVxdWVuY3lfc3BvdCA9IDQ0MC4wIC8gKDQ0MTAwLjAgLyAyLjApOwotCi0gIGZhaWxfdW5sZXNzIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKG1wZzEyM2F1ZGlvZGVjLAotICAgICAgICAgIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MsCi0gICAgICAiY291bGQgbm90IHNldCB0byBwbGF5aW5nIik7Ci0gIGJ1cyA9IGdzdF9idXNfbmV3ICgpOwotCi0gIGdzdF9lbGVtZW50X3NldF9idXMgKG1wZzEyM2F1ZGlvZGVjLCBidXMpOwotCi0gIHNldHVwX2lucHV0X3BpcGVsaW5lIChmaWxlbmFtZSwgJmlucHV0X3BpcGVsaW5lLCAmaW5wdXRfYXBwc2luayk7Ci0KLSAgbnVtX2lucHV0X2J1ZmZlcnMgPSAwOwotICB3aGlsZSAoVFJVRSkgewotICAgIEdzdFNhbXBsZSAqc2FtcGxlOwotICAgIEdzdEJ1ZmZlciAqaW5wdXRfYnVmZmVyOwotCi0gICAgc2FtcGxlID0gZ3N0X2FwcF9zaW5rX3B1bGxfc2FtcGxlIChHU1RfQVBQX1NJTksgKGlucHV0X2FwcHNpbmspKTsKLSAgICBpZiAoc2FtcGxlID09IE5VTEwpCi0gICAgICBicmVhazsKLQotICAgIGZhaWxfdW5sZXNzIChHU1RfSVNfU0FNUExFIChzYW1wbGUpKTsKLQotICAgIGlucHV0X2J1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlciAoc2FtcGxlKTsKLSAgICBmYWlsX2lmIChpbnB1dF9idWZmZXIgPT0gTlVMTCk7Ci0KLSAgICAvKiBUaGlzIGlzIGRvbmUgdG8gYmUgb24gdGhlIHNhZmUgc2lkZSAtIGRvY3Mgc2F5IGxpZmV0aW1lIG9mIHRoZSBpbnB1dCBidWZmZXIKLSAgICAgKiBkZXBlbmRzICpzb2xlbHkqIG9uIHRoZSBzYW1wbGUgKi8KLSAgICBpbnB1dF9idWZmZXIgPSBnc3RfYnVmZmVyX2NvcHkgKGlucHV0X2J1ZmZlcik7Ci0KLSAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBpbnB1dF9idWZmZXIpLCBHU1RfRkxPV19PSyk7Ci0KLSAgICArK251bV9pbnB1dF9idWZmZXJzOwotCi0gICAgZ3N0X3NhbXBsZV91bnJlZiAoc2FtcGxlKTsKLSAgfQotCi0gIG51bV9kZWNvZGVkX2J1ZmZlcnMgPSBnX2xpc3RfbGVuZ3RoIChidWZmZXJzKTsKLQotICAvKiBjaGVjayBudW1iZXIgb2YgZGVjb2RlZCBidWZmZXJzICovCi0gIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG51bV9kZWNvZGVkX2J1ZmZlcnMsIG51bV9pbnB1dF9idWZmZXJzIC0gMik7Ci0KLSAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAobXlzaW5rcGFkKTsKLSAgR1NUX0xPRyAoIm91dHB1dCBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKLSAgZmFpbF91bmxlc3MgKGdzdF9hdWRpb19pbmZvX2Zyb21fY2FwcyAoJmF1ZGlvaW5mbywgY2FwcyksCi0gICAgICAiR2V0dGluZyBhdWRpbyBpbmZvIGZyb20gY2FwcyBmYWlsZWQiKTsKLQotICAvKiBjaGVjayBjYXBzICovCi0gIG91dF9jYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImF1ZGlvL3gtcmF3IiwKLSAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCBHU1RfQVVESU9fTkUgKFMzMiksCi0gICAgICAibGF5b3V0IiwgR19UWVBFX1NUUklORywgImludGVybGVhdmVkIiwKLSAgICAgICJyYXRlIiwgR19UWVBFX0lOVCwgNDQxMDAsICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsIE5VTEwpOwotCi0gIGZhaWxfdW5sZXNzIChnc3RfY2Fwc19pc19lcXVhbF9maXhlZCAoY2Fwcywgb3V0X2NhcHMpLCAiSW5jb3JyZWN0IG91dCBjYXBzIik7Ci0KLSAgZ3N0X2NhcHNfdW5yZWYgKG91dF9jYXBzKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotCi0gIC8qIGhlcmUsIHRlc3QgaWYgZGVjb2RlZCBkYXRhIGlzIGEgc2luZSB0b25lLCBhbmQgaWYgdGhlIHNpbmUgZnJlcXVlbmN5IGlzIGF0IHRoZQotICAgKiByaWdodCBzcG90IGluIHRoZSBzcGVjdHJ1bSAqLwotICBmb3IgKGkgPSAwOyBpIDwgbnVtX2RlY29kZWRfYnVmZmVyczsgKytpKSB7Ci0gICAgb3V0YnVmZmVyID0gR1NUX0JVRkZFUiAoYnVmZmVycy0+ZGF0YSk7Ci0gICAgZmFpbF9pZiAob3V0YnVmZmVyID09IE5VTEwsICJJbnZhbGlkIGJ1ZmZlciByZXRyaWV2ZWQiKTsKLQotICAgIC8qIE1QRUcgMSBsYXllciAyIHVzZXMgMTE1MiBzYW1wbGVzIHBlciBmcmFtZSAqLwotICAgIGV4cGVjdGVkX3NpemUgPSAxMTUyICogR1NUX0FVRElPX0lORk9fQlBGICgmYXVkaW9pbmZvKTsKLSAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfYnVmZmVyX2dldF9zaXplIChvdXRidWZmZXIpLCBleHBlY3RlZF9zaXplKTsKLQotICAgIGNoZWNrX21haW5fZnJlcXVlbmN5X3Nwb3RfUzMyIChvdXRidWZmZXIsIGV4cGVjdGVkX2ZyZXF1ZW5jeV9zcG90KTsKLQotICAgIGJ1ZmZlcnMgPSBnX2xpc3RfcmVtb3ZlIChidWZmZXJzLCBvdXRidWZmZXIpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKG91dGJ1ZmZlcik7Ci0gICAgb3V0YnVmZmVyID0gTlVMTDsKLSAgfQotCi0gIGdfbGlzdF9mcmVlIChidWZmZXJzKTsKLSAgYnVmZmVycyA9IE5VTEw7Ci0KLSAgY2xlYW51cF9pbnB1dF9waXBlbGluZSAoaW5wdXRfcGlwZWxpbmUpOwotICBnc3RfYnVzX3NldF9mbHVzaGluZyAoYnVzLCBUUlVFKTsKLSAgZ3N0X2VsZW1lbnRfc2V0X2J1cyAobXBnMTIzYXVkaW9kZWMsIE5VTEwpOwotICBnc3Rfb2JqZWN0X3VucmVmIChHU1RfT0JKRUNUIChidXMpKTsKLX0KLQotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9kZWNvZGVfbXBlZzFsYXllcjIpCi17Ci0gIEdzdEVsZW1lbnQgKm1wZzEyM2F1ZGlvZGVjOwotICBtcGcxMjNhdWRpb2RlYyA9IHNldHVwX21wZWcxbGF5ZXIyZGVjICgpOwotICBydW5fZGVjb2RpbmdfdGVzdCAobXBnMTIzYXVkaW9kZWMsIE1QMl9TVFJFQU1fRklMRU5BTUUpOwotICBjbGVhbnVwX21wZzEyM2F1ZGlvZGVjIChtcGcxMjNhdWRpb2RlYyk7Ci0gIG1wZzEyM2F1ZGlvZGVjID0gTlVMTDsKLX0KLQotR1NUX0VORF9URVNUOwotCi0KLUdTVF9TVEFSVF9URVNUICh0ZXN0X2RlY29kZV9tcGVnMWxheWVyM19jYnIpCi17Ci0gIEdzdEVsZW1lbnQgKm1wZzEyM2F1ZGlvZGVjOwotICBtcGcxMjNhdWRpb2RlYyA9IHNldHVwX21wZWcxbGF5ZXIzZGVjICgpOwotICBydW5fZGVjb2RpbmdfdGVzdCAobXBnMTIzYXVkaW9kZWMsIE1QM19DQlJfU1RSRUFNX0ZJTEVOQU1FKTsKLSAgY2xlYW51cF9tcGcxMjNhdWRpb2RlYyAobXBnMTIzYXVkaW9kZWMpOwotfQotCi1HU1RfRU5EX1RFU1Q7Ci0KLQotR1NUX1NUQVJUX1RFU1QgKHRlc3RfZGVjb2RlX21wZWcxbGF5ZXIzX3ZicikKLXsKLSAgR3N0RWxlbWVudCAqbXBnMTIzYXVkaW9kZWM7Ci0gIG1wZzEyM2F1ZGlvZGVjID0gc2V0dXBfbXBlZzFsYXllcjNkZWMgKCk7Ci0gIHJ1bl9kZWNvZGluZ190ZXN0IChtcGcxMjNhdWRpb2RlYywgTVAzX1ZCUl9TVFJFQU1fRklMRU5BTUUpOwotICBjbGVhbnVwX21wZzEyM2F1ZGlvZGVjIChtcGcxMjNhdWRpb2RlYyk7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9kZWNvZGVfZ2FyYmFnZV9tcGVnMWxheWVyMikKLXsKLSAgR3N0RWxlbWVudCAqbXBnMTIzYXVkaW9kZWM7Ci0gIEdzdEJ1ZmZlciAqaW5idWZmZXI7Ci0gIEdzdEJ1cyAqYnVzOwotICBpbnQgaSwgbnVtX2J1ZmZlcnM7Ci0gIGd1aW50MzIgKnRtcGJ1ZjsKLQotICBtcGcxMjNhdWRpb2RlYyA9IHNldHVwX21wZWcxbGF5ZXIyZGVjICgpOwotCi0gIGZhaWxfdW5sZXNzIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKG1wZzEyM2F1ZGlvZGVjLAotICAgICAgICAgIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MsCi0gICAgICAiY291bGQgbm90IHNldCB0byBwbGF5aW5nIik7Ci0gIGJ1cyA9IGdzdF9idXNfbmV3ICgpOwotCi0gIC8qIGluaXRpYWxpemUgdGhlIGJ1ZmZlciB3aXRoIHNvbWV0aGluZyB0aGF0IGlzIG5vIG1wZWcyICovCi0gIHRtcGJ1ZiA9IGdfbmV3IChndWludDMyLCA0MDk2KTsKLSAgZm9yIChpID0gMDsgaSA8IDQwOTY7IGkrKykgewotICAgIHRtcGJ1ZltpXSA9IGk7Ci0gIH0KLSAgaW5idWZmZXIgPSBnc3RfYnVmZmVyX25ld193cmFwcGVkICh0bXBidWYsIDQwOTYgKiBzaXplb2YgKGd1aW50MzIpKTsKLQotICBBU1NFUlRfQlVGRkVSX1JFRkNPVU5UIChpbmJ1ZmZlciwgImluYnVmZmVyIiwgMSk7Ci0KLSAgZ3N0X2VsZW1lbnRfc2V0X2J1cyAobXBnMTIzYXVkaW9kZWMsIGJ1cyk7Ci0KLSAgLyogc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHB1c2ggd2l0aG91dCBwcm9ibGVtcyBidXQgbm90aGluZyBnZXRzIGRlY29kZWQgKi8KLSAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgaW5idWZmZXIpLCBHU1RfRkxPV19PSyk7Ci0KLSAgbnVtX2J1ZmZlcnMgPSBnX2xpc3RfbGVuZ3RoIChidWZmZXJzKTsKLQotICAvKiBzaG91bGQgYmUgMCBidWZmZXJzIGFzIGRlY29kaW5nIHNob3VsZCd2ZSBiZWVuIGltcG9zc2libGUgKi8KLSAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAobnVtX2J1ZmZlcnMsIDApOwotCi0gIGdfbGlzdF9mcmVlIChidWZmZXJzKTsKLSAgYnVmZmVycyA9IE5VTEw7Ci0KLSAgZ3N0X2J1c19zZXRfZmx1c2hpbmcgKGJ1cywgVFJVRSk7Ci0gIGdzdF9lbGVtZW50X3NldF9idXMgKG1wZzEyM2F1ZGlvZGVjLCBOVUxMKTsKLSAgZ3N0X29iamVjdF91bnJlZiAoR1NUX09CSkVDVCAoYnVzKSk7Ci0gIGNsZWFudXBfbXBnMTIzYXVkaW9kZWMgKG1wZzEyM2F1ZGlvZGVjKTsKLSAgbXBnMTIzYXVkaW9kZWMgPSBOVUxMOwotfQotCi1HU1RfRU5EX1RFU1Q7Ci0KLQotR1NUX1NUQVJUX1RFU1QgKHRlc3RfZGVjb2RlX2dhcmJhZ2VfbXBlZzFsYXllcjMpCi17Ci0gIEdzdEVsZW1lbnQgKm1wZzEyM2F1ZGlvZGVjOwotICBHc3RCdWZmZXIgKmluYnVmZmVyOwotICBHc3RCdXMgKmJ1czsKLSAgaW50IGksIG51bV9idWZmZXJzOwotICBndWludDMyICp0bXBidWY7Ci0KLSAgbXBnMTIzYXVkaW9kZWMgPSBzZXR1cF9tcGVnMWxheWVyM2RlYyAoKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChtcGcxMjNhdWRpb2RlYywKLSAgICAgICAgICBHU1RfU1RBVEVfUExBWUlORykgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTLAotICAgICAgImNvdWxkIG5vdCBzZXQgdG8gcGxheWluZyIpOwotICBidXMgPSBnc3RfYnVzX25ldyAoKTsKLQotICAvKiBpbml0aWFsaXplIHRoZSBidWZmZXIgd2l0aCBzb21ldGhpbmcgdGhhdCBpcyBubyBtcGVnMiAqLwotICB0bXBidWYgPSBnX25ldyAoZ3VpbnQzMiwgNDA5Nik7Ci0gIGZvciAoaSA9IDA7IGkgPCA0MDk2OyBpKyspIHsKLSAgICB0bXBidWZbaV0gPSBpOwotICB9Ci0gIGluYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfd3JhcHBlZCAodG1wYnVmLCA0MDk2ICogc2l6ZW9mIChndWludDMyKSk7Ci0KLSAgQVNTRVJUX0JVRkZFUl9SRUZDT1VOVCAoaW5idWZmZXIsICJpbmJ1ZmZlciIsIDEpOwotCi0gIGdzdF9lbGVtZW50X3NldF9idXMgKG1wZzEyM2F1ZGlvZGVjLCBidXMpOwotCi0gIC8qIHNob3VsZCBiZSBwb3NzaWJsZSB0byBwdXNoIHdpdGhvdXQgcHJvYmxlbXMgYnV0IG5vdGhpbmcgZ2V0cyBkZWNvZGVkICovCi0gIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGluYnVmZmVyKSwgR1NUX0ZMT1dfT0spOwotCi0gIG51bV9idWZmZXJzID0gZ19saXN0X2xlbmd0aCAoYnVmZmVycyk7Ci0KLSAgLyogc2hvdWxkIGJlIDAgYnVmZmVycyBhcyBkZWNvZGluZyBzaG91bGQndmUgYmVlbiBpbXBvc3NpYmxlICovCi0gIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG51bV9idWZmZXJzLCAwKTsKLQotICBnX2xpc3RfZnJlZSAoYnVmZmVycyk7Ci0gIGJ1ZmZlcnMgPSBOVUxMOwotCi0gIGdzdF9idXNfc2V0X2ZsdXNoaW5nIChidXMsIFRSVUUpOwotICBnc3RfZWxlbWVudF9zZXRfYnVzIChtcGcxMjNhdWRpb2RlYywgTlVMTCk7Ci0gIGdzdF9vYmplY3RfdW5yZWYgKEdTVF9PQkpFQ1QgKGJ1cykpOwotICBjbGVhbnVwX21wZzEyM2F1ZGlvZGVjIChtcGcxMjNhdWRpb2RlYyk7Ci0gIG1wZzEyM2F1ZGlvZGVjID0gTlVMTDsKLX0KLQotR1NUX0VORF9URVNUOwotCi0KLXN0YXRpYyBnYm9vbGVhbgotaXNfdGVzdF9maWxlX2F2YWlsYWJsZSAoZ2NoYXIgY29uc3QgKmZpbGVuYW1lKQotewotICBnYm9vbGVhbiByZXQ7Ci0gIGdjaGFyICpmdWxsX2ZpbGVuYW1lOwotICBnY2hhciAqY3dkOwotCi0gIGN3ZCA9IGdfZ2V0X2N1cnJlbnRfZGlyICgpOwotICBmdWxsX2ZpbGVuYW1lID0gZ19idWlsZF9maWxlbmFtZSAoY3dkLCBHU1RfVEVTVF9GSUxFU19QQVRILCBmaWxlbmFtZSwgTlVMTCk7Ci0gIHJldCA9Ci0gICAgICBnX2ZpbGVfdGVzdCAoZnVsbF9maWxlbmFtZSwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUiB8IEdfRklMRV9URVNUX0VYSVNUUyk7Ci0gIGdfZnJlZSAoZnVsbF9maWxlbmFtZSk7Ci0gIGdfZnJlZSAoY3dkKTsKLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFN1aXRlICoKLW1wZzEyM2F1ZGlvZGVjX3N1aXRlICh2b2lkKQotewotICBHc3RSZWdpc3RyeSAqcmVnaXN0cnk7Ci0gIFN1aXRlICpzID0gc3VpdGVfY3JlYXRlICgibXBnMTIzYXVkaW9kZWMiKTsKLSAgVENhc2UgKnRjX2NoYWluID0gdGNhc2VfY3JlYXRlICgiZ2VuZXJhbCIpOwotCi0gIHJlZ2lzdHJ5ID0gZ3N0X3JlZ2lzdHJ5X2dldCAoKTsKLQotICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2NoYWluKTsKLSAgaWYgKGdzdF9yZWdpc3RyeV9jaGVja19mZWF0dXJlX3ZlcnNpb24gKHJlZ2lzdHJ5LCAiZmlsZXNyYyIsCi0gICAgICAgICAgR1NUX1ZFUlNJT05fTUFKT1IsIEdTVF9WRVJTSU9OX01JTk9SLCAwKSAmJgotICAgICAgZ3N0X3JlZ2lzdHJ5X2NoZWNrX2ZlYXR1cmVfdmVyc2lvbiAocmVnaXN0cnksICJtcGVnYXVkaW9wYXJzZSIsCi0gICAgICAgICAgR1NUX1ZFUlNJT05fTUFKT1IsIEdTVF9WRVJTSU9OX01JTk9SLCAwKSAmJgotICAgICAgZ3N0X3JlZ2lzdHJ5X2NoZWNrX2ZlYXR1cmVfdmVyc2lvbiAocmVnaXN0cnksICJhcHBzcmMiLAotICAgICAgICAgIEdTVF9WRVJTSU9OX01BSk9SLCBHU1RfVkVSU0lPTl9NSU5PUiwgMCkpIHsKLSAgICBpZiAoaXNfdGVzdF9maWxlX2F2YWlsYWJsZSAoTVAyX1NUUkVBTV9GSUxFTkFNRSkpCi0gICAgICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfZGVjb2RlX21wZWcxbGF5ZXIyKTsKLSAgICBpZiAoaXNfdGVzdF9maWxlX2F2YWlsYWJsZSAoTVAzX0NCUl9TVFJFQU1fRklMRU5BTUUpKQotICAgICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2RlY29kZV9tcGVnMWxheWVyM19jYnIpOwotICAgIGlmIChpc190ZXN0X2ZpbGVfYXZhaWxhYmxlIChNUDNfVkJSX1NUUkVBTV9GSUxFTkFNRSkpCi0gICAgICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfZGVjb2RlX21wZWcxbGF5ZXIzX3Zicik7Ci0gIH0KLSAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2RlY29kZV9nYXJiYWdlX21wZWcxbGF5ZXIyKTsKLSAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2RlY29kZV9nYXJiYWdlX21wZWcxbGF5ZXIzKTsKLQotICByZXR1cm4gczsKLX0KLQotCi1HU1RfQ0hFQ0tfTUFJTiAobXBnMTIzYXVkaW9kZWMpCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9tc3NkZW11eC5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvbXNzZGVtdXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGExODYzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvbXNzZGVtdXguYwpAQCAtMCwwICsxLDYzMiBAQAorLyogR1N0cmVhbWVyIHVuaXQgdGVzdCBmb3IgTVNTCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgIEF1dGhvcjogVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KKyNpbmNsdWRlICJhZGFwdGl2ZV9kZW11eF9jb21tb24uaCIKKworI2RlZmluZSBERU1VWF9FTEVNRU5UX05BTUUgIm1zc2RlbXV4IgorCisjZGVmaW5lIENPUFlfT1VUUFVUX1RFU1RfREFUQShvdXRwdXRUZXN0RGF0YSx0ZXN0RGF0YSkgZG8geyBcCisgICAgZ3VpbnQgb3RkUG9zLCBvdGRMZW4gPSBzaXplb2YoKG91dHB1dFRlc3REYXRhKSkgLyBzaXplb2YoKG91dHB1dFRlc3REYXRhKVswXSk7IFwKKyAgICBmb3Iob3RkUG9zPTA7IG90ZFBvczxvdGRMZW47ICsrb3RkUG9zKXsgXAorICAodGVzdERhdGEpLT5vdXRwdXRfc3RyZWFtcyA9IGdfbGlzdF9hcHBlbmQgKCh0ZXN0RGF0YSktPm91dHB1dF9zdHJlYW1zLCAmKG91dHB1dFRlc3REYXRhKVtvdGRQb3NdKTsgXAorICAgIH0gXAorICB9IHdoaWxlKDApCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RNc3NEZW11eFRlc3RJbnB1dERhdGEKK3sKKyAgY29uc3QgZ2NoYXIgKnVyaTsKKyAgY29uc3QgZ3VpbnQ4ICpwYXlsb2FkOworICBndWludDY0IHNpemU7Cit9IEdzdE1zc0RlbXV4VGVzdElucHV0RGF0YTsKKworc3RhdGljIGdib29sZWFuCitnc3RfbXNzZGVtdXhfaHR0cF9zcmNfc3RhcnQgKEdzdFRlc3RIVFRQU3JjICogc3JjLAorICAgIGNvbnN0IGdjaGFyICogdXJpLCBHc3RUZXN0SFRUUFNyY0lucHV0ICogaW5wdXRfZGF0YSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBjb25zdCBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGEgKmlucHV0ID0KKyAgICAgIChjb25zdCBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGEgKikgdXNlcl9kYXRhOworCisKKyAgZm9yIChndWludCBpID0gMDsgaW5wdXRbaV0udXJpOyArK2kpIHsKKyAgICBpZiAoc3RyY21wIChpbnB1dFtpXS51cmksIHVyaSkgPT0gMCkgeworICAgICAgaW5wdXRfZGF0YS0+Y29udGV4dCA9IChncG9pbnRlcikgJiBpbnB1dFtpXTsKKyAgICAgIGlucHV0X2RhdGEtPnNpemUgPSBpbnB1dFtpXS5zaXplOworICAgICAgaWYgKGlucHV0W2ldLnNpemUgPT0gMCkKKyAgICAgICAgaW5wdXRfZGF0YS0+c2l6ZSA9IHN0cmxlbiAoKGdjaGFyICopIGlucHV0W2ldLnBheWxvYWQpOworICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorICB9CisKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X21zc2RlbXV4X2h0dHBfc3JjX2NyZWF0ZSAoR3N0VGVzdEhUVFBTcmMgKiBzcmMsCisgICAgZ3VpbnQ2NCBvZmZzZXQsCisgICAgZ3VpbnQgbGVuZ3RoLCBHc3RCdWZmZXIgKiogcmV0YnVmLCBncG9pbnRlciBjb250ZXh0LCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIC8qICBjb25zdCBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGEgKmlucHV0ID0KKyAgICAgKGNvbnN0IEdzdE1zc0RlbXV4VGVzdElucHV0RGF0YSAqKSB1c2VyX2RhdGE7ICovCisgIGNvbnN0IEdzdE1zc0RlbXV4VGVzdElucHV0RGF0YSAqaW5wdXQgPQorICAgICAgKGNvbnN0IEdzdE1zc0RlbXV4VGVzdElucHV0RGF0YSAqKSBjb250ZXh0OworICBHc3RCdWZmZXIgKmJ1ZjsKKworICBidWYgPSBnc3RfYnVmZmVyX25ld19hbGxvY2F0ZSAoTlVMTCwgbGVuZ3RoLCBOVUxMKTsKKyAgZmFpbF9pZiAoYnVmID09IE5VTEwsICJOb3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBidWZmZXIiKTsKKworICBpZiAoaW5wdXQtPnBheWxvYWQpIHsKKyAgICBnc3RfYnVmZmVyX2ZpbGwgKGJ1ZiwgMCwgaW5wdXQtPnBheWxvYWQgKyBvZmZzZXQsIGxlbmd0aCk7CisgIH0gZWxzZSB7CisgICAgR3N0TWFwSW5mbyBpbmZvOworICAgIGd1aW50IHBhdHRlcm47CisKKyAgICBwYXR0ZXJuID0gb2Zmc2V0IC0gb2Zmc2V0ICUgc2l6ZW9mIChwYXR0ZXJuKTsKKworICAgIGdzdF9idWZmZXJfbWFwIChidWYsICZpbmZvLCBHU1RfTUFQX1dSSVRFKTsKKyAgICBmb3IgKGd1aW50NjQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgZ2NoYXIgcGF0dGVybl9ieXRlX3RvX3dyaXRlID0gKG9mZnNldCArIGkpICUgc2l6ZW9mIChwYXR0ZXJuKTsKKyAgICAgIGlmIChwYXR0ZXJuX2J5dGVfdG9fd3JpdGUgPT0gMCkgeworICAgICAgICBwYXR0ZXJuID0gb2Zmc2V0ICsgaTsKKyAgICAgIH0KKyAgICAgIGluZm8uZGF0YVtpXSA9IChwYXR0ZXJuID4+IChwYXR0ZXJuX2J5dGVfdG9fd3JpdGUgKiA4KSkgJiAweEZGOworICAgIH0KKyAgICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZpbmZvKTsKKyAgfQorICAqcmV0YnVmID0gYnVmOworICByZXR1cm4gR1NUX0ZMT1dfT0s7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKiBUZXN0IHNwZWNpZmljIGNvZGUgc3RhcnRzIGhlcmUgKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBUZXN0IGFuIG1wZCB3aXRoIGFuIGF1ZGlvIGFuZCBhIHZpZGVvIHN0cmVhbQorICoKKyAqLworR1NUX1NUQVJUX1RFU1QgKHNpbXBsZVRlc3QpCit7CisgIGNvbnN0IGdjaGFyICptcGQgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PiIKKyAgICAgICI8U21vb3RoU3RyZWFtaW5nTWVkaWEgTWFqb3JWZXJzaW9uPVwiMlwiIE1pbm9yVmVyc2lvbj1cIjBcIiBEdXJhdGlvbj1cIjQwMDAwMDAwXCI+IgorICAgICAgIjxTdHJlYW1JbmRleCBUeXBlPVwidmlkZW9cIiBRdWFsaXR5TGV2ZWxzPVwiMVwiIENodW5rcz1cIjFcIiBVcmw9XCJRdWFsaXR5TGV2ZWxzKHtiaXRyYXRlfSkvRnJhZ21lbnRzKHZpZGVvPXtzdGFydCB0aW1lfSlcIj4iCisgICAgICAiPFF1YWxpdHlMZXZlbCBJbmRleD1cIjBcIiBCaXRyYXRlPVwiNDgwMTExXCIgRm91ckNDPVwiSDI2NFwiIE1heFdpZHRoPVwiMTAyNFwiIE1heEhlaWdodD1cIjQzNlwiIENvZGVjUHJpdmF0ZURhdGE9XCIwMDBcIiAvPiIKKyAgICAgICI8YyBuPVwiMFwiIGQ9XCIxMDAwMDAwMFwiIC8+IgorICAgICAgIjxjIG49XCIxXCIgZD1cIjEwMDAwMDAwXCIgLz4iCisgICAgICAiPGMgbj1cIjJcIiBkPVwiMTAwMDAwMDBcIiAvPiIKKyAgICAgICI8YyBuPVwiM1wiIGQ9XCIxMDAwMDAwMFwiIC8+IgorICAgICAgIjwvU3RyZWFtSW5kZXg+IgorICAgICAgIjxTdHJlYW1JbmRleCBUeXBlPVwiYXVkaW9cIiBMYW5ndWFnZT1cImVuZ1wiIFF1YWxpdHlMZXZlbHM9XCIxXCIgQ2h1bmtzPVwiMVwiIFVybD1cIlF1YWxpdHlMZXZlbHMoe2JpdHJhdGV9KS9GcmFnbWVudHMoYXVkaW9fZW5nPXtzdGFydCB0aW1lfSlcIj4iCisgICAgICAiPFF1YWxpdHlMZXZlbCBJbmRleD1cIjBcIiBCaXRyYXRlPVwiMjAwMDI5XCIgRm91ckNDPVwiQUFDTFwiIFNhbXBsaW5nUmF0ZT1cIjQ4MDAwXCIgQ2hhbm5lbHM9XCIyXCIgQml0c1BlclNhbXBsZT1cIjE2XCIgUGFja2V0U2l6ZT1cIjRcIiBBdWRpb1RhZz1cIjI1NVwiIENvZGVjUHJpdmF0ZURhdGE9XCIxMTkwXCIgLz4iCisgICAgICAiPGMgbj1cIjBcIiBkPVwiNDAwMDAwMDBcIiAvPiIgIjwvU3RyZWFtSW5kZXg+IiAiPC9TbW9vdGhTdHJlYW1pbmdNZWRpYT4iOworCisgIEdzdE1zc0RlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L01hbmlmZXN0IiwgKGd1aW50OCAqKSBtcGQsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9RdWFsaXR5TGV2ZWxzKDQ4MDExMSkvRnJhZ21lbnRzKHZpZGVvPTApIiwgTlVMTCwgOTAwMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L1F1YWxpdHlMZXZlbHMoNDgwMTExKS9GcmFnbWVudHModmlkZW89MTAwMDAwMDApIiwgTlVMTCwKKyAgICAgICAgOTAwMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L1F1YWxpdHlMZXZlbHMoNDgwMTExKS9GcmFnbWVudHModmlkZW89MjAwMDAwMDApIiwgTlVMTCwKKyAgICAgICAgOTAwMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L1F1YWxpdHlMZXZlbHMoNDgwMTExKS9GcmFnbWVudHModmlkZW89MzAwMDAwMDApIiwgTlVMTCwKKyAgICAgICAgOTAwMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L1F1YWxpdHlMZXZlbHMoMjAwMDI5KS9GcmFnbWVudHMoYXVkaW9fZW5nPTApIiwgTlVMTCwKKyAgICAgICAgNTAwMH0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsiYXVkaW9fMDAiLCA1MDAwLCBOVUxMfSwKKyAgICB7InZpZGVvXzAwIiwgNCAqIDkwMDAsIE5VTEx9CisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzIHRlc3RfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGE7CisKKyAgdGVzdERhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAoKTsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9tc3NkZW11eF9odHRwX3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSBnc3RfbXNzZGVtdXhfaHR0cF9zcmNfY3JlYXRlOworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgaW5wdXRUZXN0RGF0YSk7CisKKyAgQ09QWV9PVVRQVVRfVEVTVF9EQVRBIChvdXRwdXRUZXN0RGF0YSwgdGVzdERhdGEpOworICB0ZXN0X2NhbGxiYWNrcy5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19lb3MgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhOworCisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoREVNVVhfRUxFTUVOVF9OQU1FLCAiaHR0cDovL3VuaXQudGVzdC9NYW5pZmVzdCIsCisgICAgICAmdGVzdF9jYWxsYmFja3MsIHRlc3REYXRhKTsKKyAgZ19vYmplY3RfdW5yZWYgKHRlc3REYXRhKTsKK30KKworR1NUX0VORF9URVNUOworCisvKgorICogVGVzdCBzZWVraW5nCisgKgorICovCitHU1RfU1RBUlRfVEVTVCAodGVzdFNlZWspCit7CisgIGNvbnN0IGdjaGFyICptcGQgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PiIKKyAgICAgICI8U21vb3RoU3RyZWFtaW5nTWVkaWEgTWFqb3JWZXJzaW9uPVwiMlwiIE1pbm9yVmVyc2lvbj1cIjBcIiBEdXJhdGlvbj1cIjQwMDAwMDAwXCI+IgorICAgICAgIjxTdHJlYW1JbmRleCBUeXBlPVwiYXVkaW9cIiBMYW5ndWFnZT1cImVuZ1wiIFF1YWxpdHlMZXZlbHM9XCIxXCIgQ2h1bmtzPVwiMVwiIFVybD1cIlF1YWxpdHlMZXZlbHMoe2JpdHJhdGV9KS9GcmFnbWVudHMoYXVkaW9fZW5nPXtzdGFydCB0aW1lfSlcIj4iCisgICAgICAiPFF1YWxpdHlMZXZlbCBJbmRleD1cIjBcIiBCaXRyYXRlPVwiMjAwMDI5XCIgRm91ckNDPVwiQUFDTFwiIFNhbXBsaW5nUmF0ZT1cIjQ4MDAwXCIgQ2hhbm5lbHM9XCIyXCIgQml0c1BlclNhbXBsZT1cIjE2XCIgUGFja2V0U2l6ZT1cIjRcIiBBdWRpb1RhZz1cIjI1NVwiIENvZGVjUHJpdmF0ZURhdGE9XCIxMTkwXCIgLz4iCisgICAgICAiPGMgbj1cIjBcIiBkPVwiNDUwMzQ2NjY2XCIgLz4iCisgICAgICAiPC9TdHJlYW1JbmRleD4iICI8L1Ntb290aFN0cmVhbWluZ01lZGlhPiI7CisgIEdzdE1zc0RlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L01hbmlmZXN0IiwgKGd1aW50OCAqKSBtcGQsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9RdWFsaXR5TGV2ZWxzKDIwMDAyOSkvRnJhZ21lbnRzKGF1ZGlvX2VuZz0wKSIsIE5VTEwsCisgICAgICAgIDEwMDAwfSwKKyAgICB7TlVMTCwgTlVMTCwgMH0sCisgIH07CisgIEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzIGh0dHBfc3JjX2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJhdWRpb18wMCIsIDEwMDAwLCBOVUxMfSwKKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YTsKKworICB0ZXN0RGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICgpOworCisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfbXNzZGVtdXhfaHR0cF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X21zc2RlbXV4X2h0dHBfc3JjX2NyZWF0ZTsKKyAgQ09QWV9PVVRQVVRfVEVTVF9EQVRBIChvdXRwdXRUZXN0RGF0YSwgdGVzdERhdGEpOworCisgIC8qIG1lZGlhIHNlZ21lbnQgc3RhcnRzIGF0IDQ2ODcKKyAgICogSXNzdWUgYSBzZWVrIHJlcXVlc3QgYWZ0ZXIgbWVkaWEgc2VnbWVudCBoYXMgc3RhcnRlZCB0byBiZSBkb3dubG9hZGVkCisgICAqIG9uIHRoZSBmaXJzdCBwYWQgbGlzdGVkIGluIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtRGF0YSBhbmQgdGhlCisgICAqIGZpcnN0IGNodW5rIG9mIGF0IGxlYXN0IG9uZSBieXRlIGhhcyBhbHJlYWR5IGFycml2ZWQgaW4gQXBwU2luaworICAgKi8KKyAgdGVzdERhdGEtPnRocmVzaG9sZF9mb3Jfc2VlayA9IDQ2ODcgKyAxOworCisgIC8qIHNlZWsgdG8gNW1zLgorICAgKiBCZWNhdXNlIHRoZXJlIGlzIG9ubHkgb25lIGZyYWdtZW50LCB3ZSBleHBlY3QgdGhlIHdob2xlIGZpbGUgdG8gYmUKKyAgICogZG93bmxvYWRlZCBhZ2FpbgorICAgKi8KKyAgdGVzdERhdGEtPnNlZWtfZXZlbnQgPQorICAgICAgZ3N0X2V2ZW50X25ld19zZWVrICgxLjAsIEdTVF9GT1JNQVRfVElNRSwKKyAgICAgIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX0tFWV9VTklULCBHU1RfU0VFS19UWVBFX1NFVCwKKyAgICAgIDUgKiBHU1RfTVNFQ09ORCwgR1NUX1NFRUtfVFlQRV9OT05FLCAwKTsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgaW5wdXRUZXN0RGF0YSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3NlZWsgKERFTVVYX0VMRU1FTlRfTkFNRSwKKyAgICAgICJodHRwOi8vdW5pdC50ZXN0L01hbmlmZXN0IiwgdGVzdERhdGEpOworICBnc3Rfb2JqZWN0X3VucmVmICh0ZXN0RGF0YSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworCitzdGF0aWMgdm9pZAorcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoZ2RvdWJsZSByYXRlLCBHc3RTZWVrVHlwZSBzdGFydF90eXBlLAorICAgIGd1aW50NjQgc2Vla19zdGFydCwgR3N0U2Vla1R5cGUgc3RvcF90eXBlLCBndWludDY0IHNlZWtfc3RvcCwKKyAgICBHc3RTZWVrRmxhZ3MgZmxhZ3MsIGd1aW50NjQgc2VnbWVudF9zdGFydCwgZ3VpbnQ2NCBzZWdtZW50X3N0b3AsCisgICAgZ2ludCBzZWdtZW50cykKK3sKKyAgY29uc3QgZ2NoYXIgKm1wZCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+IgorICAgICAgIjxTbW9vdGhTdHJlYW1pbmdNZWRpYSBNYWpvclZlcnNpb249XCIyXCIgTWlub3JWZXJzaW9uPVwiMFwiIER1cmF0aW9uPVwiNDAwMDAwMDBcIj4iCisgICAgICAiPFN0cmVhbUluZGV4IFR5cGU9XCJhdWRpb1wiIExhbmd1YWdlPVwiZW5nXCIgUXVhbGl0eUxldmVscz1cIjFcIiBDaHVua3M9XCIxXCIgVXJsPVwiUXVhbGl0eUxldmVscyh7Yml0cmF0ZX0pL0ZyYWdtZW50cyhhdWRpb19lbmc9e3N0YXJ0IHRpbWV9KVwiPiIKKyAgICAgICI8UXVhbGl0eUxldmVsIEluZGV4PVwiMFwiIEJpdHJhdGU9XCIyMDAwMjlcIiBGb3VyQ0M9XCJBQUNMXCIgU2FtcGxpbmdSYXRlPVwiNDgwMDBcIiBDaGFubmVscz1cIjJcIiBCaXRzUGVyU2FtcGxlPVwiMTZcIiBQYWNrZXRTaXplPVwiNFwiIEF1ZGlvVGFnPVwiMjU1XCIgQ29kZWNQcml2YXRlRGF0YT1cIjExOTBcIiAvPiIKKyAgICAgICI8YyBuPVwiMFwiIGQ9XCIxMDAwMDAwMFwiIC8+IgorICAgICAgIjxjIG49XCIxXCIgZD1cIjEwMDAwMDAwXCIgLz4iCisgICAgICAiPGMgbj1cIjJcIiBkPVwiMTAwMDAwMDBcIiAvPiIKKyAgICAgICI8YyBuPVwiM1wiIGQ9XCIxMDAwMDAwMFwiIC8+IiAiPC9TdHJlYW1JbmRleD4iICI8L1Ntb290aFN0cmVhbWluZ01lZGlhPiI7CisgIEdzdE1zc0RlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L01hbmlmZXN0IiwgKGd1aW50OCAqKSBtcGQsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9RdWFsaXR5TGV2ZWxzKDIwMDAyOSkvRnJhZ21lbnRzKGF1ZGlvX2VuZz0wKSIsIE5VTEwsCisgICAgICAgIDEwMDAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvUXVhbGl0eUxldmVscygyMDAwMjkpL0ZyYWdtZW50cyhhdWRpb19lbmc9MTAwMDAwMDApIiwKKyAgICAgICAgTlVMTCwgMTAwMDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9RdWFsaXR5TGV2ZWxzKDIwMDAyOSkvRnJhZ21lbnRzKGF1ZGlvX2VuZz0yMDAwMDAwMCkiLAorICAgICAgICBOVUxMLCAxMDAwMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L1F1YWxpdHlMZXZlbHMoMjAwMDI5KS9GcmFnbWVudHMoYXVkaW9fZW5nPTMwMDAwMDAwKSIsCisgICAgICAgIE5VTEwsIDEwMDAwfSwKKyAgICB7TlVMTCwgTlVMTCwgMH0sCisgIH07CisgIEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzIGh0dHBfc3JjX2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgLyogMSBmcm9tIHRoZSBpbml0IHNlZ21lbnQgKi8KKyAgICB7ImF1ZGlvXzAwIiwgc2VnbWVudHMgKiAxMDAwMCwgTlVMTH0sCisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGE7CisKKyAgdGVzdERhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAoKTsKKworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X21zc2RlbXV4X2h0dHBfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9tc3NkZW11eF9odHRwX3NyY19jcmVhdGU7CisgIENPUFlfT1VUUFVUX1RFU1RfREFUQSAob3V0cHV0VGVzdERhdGEsIHRlc3REYXRhKTsKKworICAvKiBtZWRpYSBzZWdtZW50IHN0YXJ0cyBhdCA0Njg3CisgICAqIElzc3VlIGEgc2VlayByZXF1ZXN0IGFmdGVyIG1lZGlhIHNlZ21lbnQgaGFzIHN0YXJ0ZWQgdG8gYmUgZG93bmxvYWRlZAorICAgKiBvbiB0aGUgZmlyc3QgcGFkIGxpc3RlZCBpbiBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbURhdGEgYW5kIHRoZQorICAgKiBmaXJzdCBjaHVuayBvZiBhdCBsZWFzdCBvbmUgYnl0ZSBoYXMgYWxyZWFkeSBhcnJpdmVkIGluIEFwcFNpbmsKKyAgICovCisgIHRlc3REYXRhLT50aHJlc2hvbGRfZm9yX3NlZWsgPSA0Njg3ICsgMTsKKworICAvKiBGSVhNRSBoYWNrIHRvIGF2b2lkIGhhdmluZyBhIDAgc2VxbnVtICovCisgIGdzdF91dGlsX3NlcW51bV9uZXh0ICgpOworCisgIC8qIHNlZWsgdG8gNW1zLgorICAgKiBCZWNhdXNlIHRoZXJlIGlzIG9ubHkgb25lIGZyYWdtZW50LCB3ZSBleHBlY3QgdGhlIHdob2xlIGZpbGUgdG8gYmUKKyAgICogZG93bmxvYWRlZCBhZ2FpbgorICAgKi8KKyAgdGVzdERhdGEtPnNlZWtfZXZlbnQgPQorICAgICAgZ3N0X2V2ZW50X25ld19zZWVrIChyYXRlLCBHU1RfRk9STUFUX1RJTUUsIGZsYWdzLCBzdGFydF90eXBlLAorICAgICAgc2Vla19zdGFydCwgc3RvcF90eXBlLCBzZWVrX3N0b3ApOworCisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzICgmaHR0cF9zcmNfY2FsbGJhY2tzLCBpbnB1dFRlc3REYXRhKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3Rfc2VlayAoREVNVVhfRUxFTUVOVF9OQU1FLAorICAgICAgImh0dHA6Ly91bml0LnRlc3QvTWFuaWZlc3QiLCB0ZXN0RGF0YSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHRlc3REYXRhKTsKK30KKworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrS2V5VW5pdFBvc2l0aW9uKQoreworICAvKiBTZWVrIHRvIDEuNXMgd2l0aCBrZXkgdW5pdCwgaXQgc2hvdWxkIGdvIGJhY2sgdG8gMS4wcy4gMyBzZWdtZW50cyB3aWxsIGJlCisgICAqIHB1c2hlZCAqLworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgxLjAsIEdTVF9TRUVLX1RZUEVfU0VULCAxNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX05PTkUsIDAsIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX0tFWV9VTklULAorICAgICAgMTAwMCAqIEdTVF9NU0VDT05ELCAtMSwgMyk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworCitHU1RfU1RBUlRfVEVTVCAodGVzdFNlZWtVcGRhdGVTdG9wUG9zaXRpb24pCit7CisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKDEuMCwgR1NUX1NFRUtfVFlQRV9OT05FLCAxNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgMzAwMCAqIEdTVF9NU0VDT05ELCAwLCAwLCAzMDAwICogR1NUX01TRUNPTkQsIDMpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla1Bvc2l0aW9uKQoreworICAvKiBTZWVrIHRvIDEuNXMgd2l0aG91dCBrZXkgdW5pdCwgaXQgc2hvdWxkIGtlZXAgdGhlIDEuNXMsIGJ1dCBzdGlsbCBwdXNoCisgICAqIGZyb20gdGhlIDFzdCBzZWdtZW50LCBzbyAzIHNlZ21lbnRzIHdpbGwgYmUKKyAgICogcHVzaGVkICovCisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKDEuMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDE1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfTk9ORSwgMCwgR1NUX1NFRUtfRkxBR19GTFVTSCwgMTUwMCAqIEdTVF9NU0VDT05ELCAtMSwgMyk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrU25hcEJlZm9yZVBvc2l0aW9uKQoreworICAvKiBTZWVrIHRvIDEuNXMsIHNuYXAgYmVmb3JlLCBpdCBnbyB0byAxcyAqLworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgxLjAsIEdTVF9TRUVLX1RZUEVfU0VULCAxNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX05PTkUsIDAsIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX1NOQVBfQkVGT1JFLAorICAgICAgMTAwMCAqIEdTVF9NU0VDT05ELCAtMSwgMyk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworCitHU1RfU1RBUlRfVEVTVCAodGVzdFNlZWtTbmFwQWZ0ZXJQb3NpdGlvbikKK3sKKyAgLyogU2VlayB0byAxLjVzIHdpdGggc25hcCBhZnRlciwgaXQgc2hvdWxkIG1vdmUgdG8gMnMgKi8KKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoMS4wLCBHU1RfU0VFS19UWVBFX1NFVCwgMTUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9OT05FLCAwLCBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19TTkFQX0FGVEVSLAorICAgICAgMjAwMCAqIEdTVF9NU0VDT05ELCAtMSwgMik7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworCitHU1RfU1RBUlRfVEVTVCAodGVzdFJldmVyc2VTZWVrU25hcEJlZm9yZVBvc2l0aW9uKQoreworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgtMS4wLCBHU1RfU0VFS19UWVBFX1NFVCwgMTAwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9TRVQsIDI1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX1NOQVBfQkVGT1JFLCAxMDAwICogR1NUX01TRUNPTkQsCisgICAgICAzMDAwICogR1NUX01TRUNPTkQsIDIpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RSZXZlcnNlU2Vla1NuYXBBZnRlclBvc2l0aW9uKQoreworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgtMS4wLCBHU1RfU0VFS19UWVBFX1NFVCwgMTAwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9TRVQsIDI1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX1NOQVBfQUZURVIsIDEwMDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIDIwMDAgKiBHU1RfTVNFQ09ORCwgMSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK3Rlc3REb3dubG9hZEVycm9yTWVzc2FnZUNhbGxiYWNrIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqIGVuZ2luZSwKKyAgICBHc3RNZXNzYWdlICogbXNnLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdFcnJvciAqZXJyID0gTlVMTDsKKyAgZ2NoYXIgKmRiZ19pbmZvID0gTlVMTDsKKworICBmYWlsX3VubGVzcyAoR1NUX01FU1NBR0VfVFlQRSAobXNnKSA9PSBHU1RfTUVTU0FHRV9FUlJPUik7CisgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yIChtc2csICZlcnIsICZkYmdfaW5mbyk7CisgIEdTVF9ERUJVRyAoIkVycm9yIGZyb20gZWxlbWVudCAlcyA6ICVzXG4iLAorICAgICAgR1NUX09CSkVDVF9OQU1FIChtc2ctPnNyYyksIGVyci0+bWVzc2FnZSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19zdHJpbmcgKEdTVF9PQkpFQ1RfTkFNRSAobXNnLT5zcmMpLCBERU1VWF9FTEVNRU5UX05BTUUpOworICAvKkdTVF9ERUJVRyAoImRiZ19pbmZvPSVzXG4iLCBkYmdfaW5mbyk7ICovCisgIGdfZXJyb3JfZnJlZSAoZXJyKTsKKyAgZ19mcmVlIChkYmdfaW5mbyk7CisgIGdfbWFpbl9sb29wX3F1aXQgKGVuZ2luZS0+bG9vcCk7Cit9CisKKy8qCisgKiBUZXN0IGVycm9yIGNhc2Ugb2YgZmFpbGluZyB0byBkb3dubG9hZCBhIHNlZ21lbnQKKyAqLworR1NUX1NUQVJUX1RFU1QgKHRlc3REb3dubG9hZEVycm9yKQoreworICBjb25zdCBnY2hhciAqbXBkID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz4iCisgICAgICAiPFNtb290aFN0cmVhbWluZ01lZGlhIE1ham9yVmVyc2lvbj1cIjJcIiBNaW5vclZlcnNpb249XCIwXCIgRHVyYXRpb249XCI0MDAwMDAwMFwiPiIKKyAgICAgICI8U3RyZWFtSW5kZXggVHlwZT1cImF1ZGlvXCIgTGFuZ3VhZ2U9XCJlbmdcIiBRdWFsaXR5TGV2ZWxzPVwiMVwiIENodW5rcz1cIjFcIiBVcmw9XCJRdWFsaXR5TGV2ZWxzKHtiaXRyYXRlfSkvRnJhZ21lbnRzKGF1ZGlvX2VuZz17c3RhcnQgdGltZX0pXCI+IgorICAgICAgIjxRdWFsaXR5TGV2ZWwgSW5kZXg9XCIwXCIgQml0cmF0ZT1cIjIwMDAyOVwiIEZvdXJDQz1cIkFBQ0xcIiBTYW1wbGluZ1JhdGU9XCI0ODAwMFwiIENoYW5uZWxzPVwiMlwiIEJpdHNQZXJTYW1wbGU9XCIxNlwiIFBhY2tldFNpemU9XCI0XCIgQXVkaW9UYWc9XCIyNTVcIiBDb2RlY1ByaXZhdGVEYXRhPVwiMTE5MFwiIC8+IgorICAgICAgIjxjIG49XCIwXCIgZD1cIjQwMDAwMDAwXCIgLz4iICI8L1N0cmVhbUluZGV4PiIgIjwvU21vb3RoU3RyZWFtaW5nTWVkaWE+IjsKKworICBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC9NYW5pZmVzdCIsIChndWludDggKikgbXBkLCAwfSwKKyAgICB7TlVMTCwgTlVMTCwgMH0sCisgIH07CisgIEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzIGh0dHBfc3JjX2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJhdWRpb18wMCIsIDAsIE5VTEx9LAorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhbGxiYWNrcyB0ZXN0X2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhOworCisgIHRlc3REYXRhID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXcgKCk7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfbXNzZGVtdXhfaHR0cF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X21zc2RlbXV4X2h0dHBfc3JjX2NyZWF0ZTsKKyAgQ09QWV9PVVRQVVRfVEVTVF9EQVRBIChvdXRwdXRUZXN0RGF0YSwgdGVzdERhdGEpOworICB0ZXN0X2NhbGxiYWNrcy5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YTsKKyAgdGVzdF9jYWxsYmFja3MuYnVzX2Vycm9yX21lc3NhZ2UgPSB0ZXN0RG93bmxvYWRFcnJvck1lc3NhZ2VDYWxsYmFjazsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19lb3MgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhOworCisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzICgmaHR0cF9zcmNfY2FsbGJhY2tzLCBpbnB1dFRlc3REYXRhKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuIChERU1VWF9FTEVNRU5UX05BTUUsICJodHRwOi8vdW5pdC50ZXN0L01hbmlmZXN0IiwKKyAgICAgICZ0ZXN0X2NhbGxiYWNrcywgdGVzdERhdGEpOworICBnc3Rfb2JqZWN0X3VucmVmICh0ZXN0RGF0YSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyogZ2VuZXJhdGUgcXVlcmllcyB0byBhZGFwdGl2ZSBkZW11eCAqLworc3RhdGljIGdib29sZWFuCit0ZXN0UXVlcnlDaGVja0RhdGFSZWNlaXZlZCAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKiBlbmdpbmUsCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sCisgICAgR3N0QnVmZmVyICogYnVmZmVyLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdMaXN0ICpwYWRzOworICBHc3RQYWQgKnBhZDsKKyAgR3N0UXVlcnkgKnF1ZXJ5OworICBnYm9vbGVhbiByZXQ7CisgIGdpbnQ2NCBkdXJhdGlvbjsKKyAgZ2Jvb2xlYW4gc2Vla2FibGU7CisgIGdpbnQ2NCBzZWdtZW50X3N0YXJ0OworICBnaW50NjQgc2VnbWVudF9lbmQ7CisgIGdjaGFyICp1cmk7CisgIGdjaGFyICpyZWRpcmVjdF91cmk7CisgIGdib29sZWFuIHJlZGlyZWN0X3Blcm1hbmVudDsKKworICBwYWRzID0gR1NUX0VMRU1FTlRfUEFEUyAoc3RyZWFtLT5hcHBzaW5rKTsKKworICAvKiBBcHBTaW5rIHNob3VsZCBoYXZlIG9ubHkgMSBwYWQgKi8KKyAgZmFpbF91bmxlc3MgKHBhZHMgIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzIChnX2xpc3RfbGVuZ3RoIChwYWRzKSA9PSAxKTsKKyAgcGFkID0gR1NUX1BBRCAocGFkcy0+ZGF0YSk7CisKKyAgcXVlcnkgPSBnc3RfcXVlcnlfbmV3X2R1cmF0aW9uIChHU1RfRk9STUFUX1RJTUUpOworICByZXQgPSBnc3RfcGFkX3BlZXJfcXVlcnkgKHBhZCwgcXVlcnkpOworICBmYWlsX3VubGVzcyAocmV0ID09IFRSVUUpOworICBnc3RfcXVlcnlfcGFyc2VfZHVyYXRpb24gKHF1ZXJ5LCBOVUxMLCAmZHVyYXRpb24pOworICBmYWlsX3VubGVzcyAoZHVyYXRpb24gPT0gR1NUX1NFQ09ORCk7CisgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworCisgIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19zZWVraW5nIChHU1RfRk9STUFUX1RJTUUpOworICByZXQgPSBnc3RfcGFkX3BlZXJfcXVlcnkgKHBhZCwgcXVlcnkpOworICBmYWlsX3VubGVzcyAocmV0ID09IFRSVUUpOworICBnc3RfcXVlcnlfcGFyc2Vfc2Vla2luZyAocXVlcnksIE5VTEwsICZzZWVrYWJsZSwgJnNlZ21lbnRfc3RhcnQsCisgICAgICAmc2VnbWVudF9lbmQpOworICBmYWlsX3VubGVzcyAoc2Vla2FibGUgPT0gVFJVRSk7CisgIGZhaWxfdW5sZXNzIChzZWdtZW50X3N0YXJ0ID09IDApOworICBmYWlsX3VubGVzcyAoc2VnbWVudF9lbmQgPT0gZHVyYXRpb24pOworICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKKworICBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfdXJpICgpOworICByZXQgPSBnc3RfcGFkX3BlZXJfcXVlcnkgKHBhZCwgcXVlcnkpOworICBmYWlsX3VubGVzcyAocmV0ID09IFRSVUUpOworICBnc3RfcXVlcnlfcGFyc2VfdXJpIChxdWVyeSwgJnVyaSk7CisgIGdzdF9xdWVyeV9wYXJzZV91cmlfcmVkaXJlY3Rpb24gKHF1ZXJ5LCAmcmVkaXJlY3RfdXJpKTsKKyAgZ3N0X3F1ZXJ5X3BhcnNlX3VyaV9yZWRpcmVjdGlvbl9wZXJtYW5lbnQgKHF1ZXJ5LCAmcmVkaXJlY3RfcGVybWFuZW50KTsKKyAgZmFpbF91bmxlc3MgKHN0cmNtcCAodXJpLCAiaHR0cDovL3VuaXQudGVzdC9NYW5pZmVzdCIpID09IDApOworICAvKiBhZGFwdGl2ZSBkZW11eCBkb2VzIG5vdCByZXBseSB3aXRoIHJlZGlyZWN0IGluZm9ybWF0aW9uICovCisgIGZhaWxfdW5sZXNzIChyZWRpcmVjdF91cmkgPT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzIChyZWRpcmVjdF9wZXJtYW5lbnQgPT0gRkFMU0UpOworICBnX2ZyZWUgKHVyaSk7CisgIGdfZnJlZSAocmVkaXJlY3RfdXJpKTsKKyAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7CisKKyAgcmV0dXJuIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGEgKGVuZ2luZSwKKyAgICAgIHN0cmVhbSwgYnVmZmVyLCB1c2VyX2RhdGEpOworfQorCisvKgorICogVGVzdCBxdWVyaWVzCisgKgorICovCitHU1RfU1RBUlRfVEVTVCAodGVzdFF1ZXJ5KQoreworICBjb25zdCBnY2hhciAqbXBkID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz4iCisgICAgICAiPFNtb290aFN0cmVhbWluZ01lZGlhIE1ham9yVmVyc2lvbj1cIjJcIiBNaW5vclZlcnNpb249XCIwXCIgRHVyYXRpb249XCIxMDAwMDAwMFwiPiIKKyAgICAgICI8U3RyZWFtSW5kZXggVHlwZT1cImF1ZGlvXCIgTGFuZ3VhZ2U9XCJlbmdcIiBRdWFsaXR5TGV2ZWxzPVwiMVwiIENodW5rcz1cIjFcIiBVcmw9XCJRdWFsaXR5TGV2ZWxzKHtiaXRyYXRlfSkvRnJhZ21lbnRzKGF1ZGlvX2VuZz17c3RhcnQgdGltZX0pXCI+IgorICAgICAgIjxRdWFsaXR5TGV2ZWwgSW5kZXg9XCIwXCIgQml0cmF0ZT1cIjIwMDAyOVwiIEZvdXJDQz1cIkFBQ0xcIiBTYW1wbGluZ1JhdGU9XCI0ODAwMFwiIENoYW5uZWxzPVwiMlwiIEJpdHNQZXJTYW1wbGU9XCIxNlwiIFBhY2tldFNpemU9XCI0XCIgQXVkaW9UYWc9XCIyNTVcIiBDb2RlY1ByaXZhdGVEYXRhPVwiMTE5MFwiIC8+IgorICAgICAgIjxjIG49XCIwXCIgZD1cIjEwMDAwMDAwXCIgLz4iICI8L1N0cmVhbUluZGV4PiIgIjwvU21vb3RoU3RyZWFtaW5nTWVkaWE+IjsKKyAgR3N0TXNzRGVtdXhUZXN0SW5wdXREYXRhIGlucHV0VGVzdERhdGFbXSA9IHsKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvTWFuaWZlc3QiLCAoZ3VpbnQ4ICopIG1wZCwgMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L1F1YWxpdHlMZXZlbHMoMjAwMDI5KS9GcmFnbWVudHMoYXVkaW9fZW5nPTApIiwgTlVMTCwKKyAgICAgICAgNTAwMH0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsiYXVkaW9fMDAiLCA1MDAwLCBOVUxMfSwKKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYWxsYmFja3MgdGVzdF9jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YTsKKworICB0ZXN0RGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICgpOworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X21zc2RlbXV4X2h0dHBfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9tc3NkZW11eF9odHRwX3NyY19jcmVhdGU7CisgIENPUFlfT1VUUFVUX1RFU1RfREFUQSAob3V0cHV0VGVzdERhdGEsIHRlc3REYXRhKTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19yZWNlaXZlZF9kYXRhID0gdGVzdFF1ZXJ5Q2hlY2tEYXRhUmVjZWl2ZWQ7CisgIHRlc3RfY2FsbGJhY2tzLmFwcHNpbmtfZW9zID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YTsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgaW5wdXRUZXN0RGF0YSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoREVNVVhfRUxFTUVOVF9OQU1FLAorICAgICAgImh0dHA6Ly91bml0LnRlc3QvTWFuaWZlc3QiLCAmdGVzdF9jYWxsYmFja3MsIHRlc3REYXRhKTsKKyAgZ3N0X29iamVjdF91bnJlZiAodGVzdERhdGEpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCit0ZXN0X2ZyYWdtZW50X2Rvd25sb2FkX2Vycm9yX3NyY19jcmVhdGUgKEdzdFRlc3RIVFRQU3JjICogc3JjLAorICAgIGd1aW50NjQgb2Zmc2V0LAorICAgIGd1aW50IGxlbmd0aCwgR3N0QnVmZmVyICoqIHJldGJ1ZiwgZ3BvaW50ZXIgY29udGV4dCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBjb25zdCBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGEgKmlucHV0ID0KKyAgICAgIChjb25zdCBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGEgKikgY29udGV4dDsKKyAgZmFpbF91bmxlc3MgKGlucHV0ICE9IE5VTEwpOworICBpZiAoIWdfc3RyX2hhc19zdWZmaXggKGlucHV0LT51cmksICIubXBkIikgJiYgb2Zmc2V0ID4gMjAwMCkgeworICAgIEdTVF9ERUJVRyAoIm5ldHdvcmtfZXJyb3IgJXMgJSIgR19HVUlOVDY0X0ZPUk1BVCAiIEAgJWQiLAorICAgICAgICBpbnB1dC0+dXJpLCBvZmZzZXQsIDIwMDApOworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIFJFU09VUkNFLCBSRUFELAorICAgICAgICAoKCJBIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQsIG9yIHRoZSBzZXJ2ZXIgY2xvc2VkIHRoZSBjb25uZWN0aW9uIHVuZXhwZWN0ZWRseS4iKSksICgiQSBuZXR3b3JrIGVycm9yIG9jY3VycmVkLCBvciB0aGUgc2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVjdGVkbHkuIikpOworICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgfQorICByZXR1cm4gZ3N0X21zc2RlbXV4X2h0dHBfc3JjX2NyZWF0ZSAoc3JjLCBvZmZzZXQsIGxlbmd0aCwgcmV0YnVmLCBjb250ZXh0LAorICAgICAgdXNlcl9kYXRhKTsKK30KKworLyogZnVuY3Rpb24gdG8gY2hlY2sgdG90YWwgc2l6ZSBvZiBkYXRhIHJlY2VpdmVkIGJ5IEFwcFNpbmsKKyAqIHdpbGwgYmUgY2FsbGVkIHdoZW4gQXBwU2luayByZWNlaXZlcyBlb3MuCisgKi8KK3N0YXRpYyB2b2lkCit0ZXN0RnJhZ21lbnREb3dubG9hZEVycm9yQ2hlY2tTaXplT2ZEYXRhUmVjZWl2ZWQgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICoKKyAgICBlbmdpbmUsIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGEgPSBHU1RfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFICh1c2VyX2RhdGEpOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0ICp0ZXN0T3V0cHV0U3RyZWFtRGF0YTsKKworICB0ZXN0T3V0cHV0U3RyZWFtRGF0YSA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9maW5kX3Rlc3RfZGF0YV9ieV9zdHJlYW0gKHRlc3REYXRhLCBzdHJlYW0sIE5VTEwpOworICBmYWlsX3VubGVzcyAodGVzdE91dHB1dFN0cmVhbURhdGEgIT0gTlVMTCk7CisKKyAgLyogZXhwZWN0IHRvIHJlY2VpdmUgbW9yZSB0aGFuIDAgKi8KKyAgZmFpbF91bmxlc3MgKHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSA+IDAsCisgICAgICAic2l6ZSB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgJXMsIGV4cGVjdGVkID4gMCwgcmVjZWl2ZWQgJWQiLAorICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPm5hbWUsIHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSk7CisKKyAgLyogZXhwZWN0IHRvIHJlY2VpdmUgbGVzcyB0aGFuIGZpbGUgc2l6ZSAqLworICBmYWlsX3VubGVzcyAoc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplIDwKKyAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5leHBlY3RlZF9zaXplLAorICAgICAgInNpemUgdmFsaWRhdGlvbiBmYWlsZWQgZm9yICVzLCBleHBlY3RlZCA8ICVkIHJlY2VpdmVkICVkIiwKKyAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5uYW1lLCB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfc2l6ZSwKKyAgICAgIHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSk7Cit9CisKKy8qCisgKiBUZXN0IGZyYWdtZW50IGRvd25sb2FkIGVycm9yCisgKiBMZXQgdGhlIGFkYXB0aXZlIGRlbXV4IGRvd25sb2FkIGEgZmV3IGJ5dGVzLCB0aGVuIGluc3RydWN0IHRoZQorICogR3N0VGVzdEhUVFBTcmMgZWxlbWVudCB0byBnZW5lcmF0ZSBhbiBlcnJvci4KKyAqLworR1NUX1NUQVJUX1RFU1QgKHRlc3RGcmFnbWVudERvd25sb2FkRXJyb3IpCit7CisgIGNvbnN0IGdjaGFyICptcGQgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PiIKKyAgICAgICI8U21vb3RoU3RyZWFtaW5nTWVkaWEgTWFqb3JWZXJzaW9uPVwiMlwiIE1pbm9yVmVyc2lvbj1cIjBcIiBEdXJhdGlvbj1cIjQwMDAwMDBcIj4iCisgICAgICAiPFN0cmVhbUluZGV4IFR5cGU9XCJhdWRpb1wiIExhbmd1YWdlPVwiZW5nXCIgUXVhbGl0eUxldmVscz1cIjFcIiBDaHVua3M9XCIxXCIgVXJsPVwiUXVhbGl0eUxldmVscyh7Yml0cmF0ZX0pL0ZyYWdtZW50cyhhdWRpb19lbmc9e3N0YXJ0IHRpbWV9KVwiPiIKKyAgICAgICI8UXVhbGl0eUxldmVsIEluZGV4PVwiMFwiIEJpdHJhdGU9XCIyMDAwMjlcIiBGb3VyQ0M9XCJBQUNMXCIgU2FtcGxpbmdSYXRlPVwiNDgwMDBcIiBDaGFubmVscz1cIjJcIiBCaXRzUGVyU2FtcGxlPVwiMTZcIiBQYWNrZXRTaXplPVwiNFwiIEF1ZGlvVGFnPVwiMjU1XCIgQ29kZWNQcml2YXRlRGF0YT1cIjExOTBcIiAvPiIKKyAgICAgICI8YyBuPVwiMFwiIGQ9XCIxMDAwMDAwMFwiIC8+IiAiPC9TdHJlYW1JbmRleD4iICI8L1Ntb290aFN0cmVhbWluZ01lZGlhPiI7CisKKyAgR3N0TXNzRGVtdXhUZXN0SW5wdXREYXRhIGlucHV0VGVzdERhdGFbXSA9IHsKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvTWFuaWZlc3QiLCAoZ3VpbnQ4ICopIG1wZCwgMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L1F1YWxpdHlMZXZlbHMoMjAwMDI5KS9GcmFnbWVudHMoYXVkaW9fZW5nPTApIiwgTlVMTCwKKyAgICAgICAgNTAwMH0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsiYXVkaW9fMDAiLCA1MDAwLCBOVUxMfSwKKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYWxsYmFja3MgdGVzdF9jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YTsKKworICB0ZXN0RGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICgpOworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X21zc2RlbXV4X2h0dHBfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IHRlc3RfZnJhZ21lbnRfZG93bmxvYWRfZXJyb3Jfc3JjX2NyZWF0ZTsKKyAgQ09QWV9PVVRQVVRfVEVTVF9EQVRBIChvdXRwdXRUZXN0RGF0YSwgdGVzdERhdGEpOworICB0ZXN0X2NhbGxiYWNrcy5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19lb3MgPSB0ZXN0RnJhZ21lbnREb3dubG9hZEVycm9yQ2hlY2tTaXplT2ZEYXRhUmVjZWl2ZWQ7CisgIC8qICB0ZXN0X2NhbGxiYWNrcy5kZW11eF9zZW50X2VvcyA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YTsgKi8KKworICB0ZXN0X2NhbGxiYWNrcy5idXNfZXJyb3JfbWVzc2FnZSA9IHRlc3REb3dubG9hZEVycm9yTWVzc2FnZUNhbGxiYWNrOworCisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzICgmaHR0cF9zcmNfY2FsbGJhY2tzLCBpbnB1dFRlc3REYXRhKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuIChERU1VWF9FTEVNRU5UX05BTUUsCisgICAgICAiaHR0cDovL3VuaXQudGVzdC9NYW5pZmVzdCIsICZ0ZXN0X2NhbGxiYWNrcywgdGVzdERhdGEpOworICBnc3Rfb2JqZWN0X3VucmVmICh0ZXN0RGF0YSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIFN1aXRlICoKK21zc19kZW11eF9zdWl0ZSAodm9pZCkKK3sKKyAgU3VpdGUgKnMgPSBzdWl0ZV9jcmVhdGUgKCJtc3NfZGVtdXgiKTsKKyAgVENhc2UgKnRjX2Jhc2ljVGVzdCA9IHRjYXNlX2NyZWF0ZSAoImJhc2ljVGVzdCIpOworCisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHNpbXBsZVRlc3QpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vlayk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RTZWVrS2V5VW5pdFBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWtQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RTZWVrVXBkYXRlU3RvcFBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWtTbmFwQmVmb3JlUG9zaXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vla1NuYXBBZnRlclBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFJldmVyc2VTZWVrU25hcEJlZm9yZVBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFJldmVyc2VTZWVrU25hcEFmdGVyUG9zaXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0RG93bmxvYWRFcnJvcik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RGcmFnbWVudERvd25sb2FkRXJyb3IpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0UXVlcnkpOworCisgIHRjYXNlX2FkZF91bmNoZWNrZWRfZml4dHVyZSAodGNfYmFzaWNUZXN0LCBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9zZXR1cCwKKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3RlYXJkb3duKTsKKworICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2Jhc2ljVGVzdCk7CisKKyAgcmV0dXJuIHM7Cit9CisKK0dTVF9DSEVDS19NQUlOIChtc3NfZGVtdXgpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvbXhmbXV4LmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9teGZtdXguYwppbmRleCBiMTJkZDkxLi43NDhlYmMwIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9lbGVtZW50cy9teGZtdXguYworKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9teGZtdXguYwpAQCAtMjM5LDYgKzIzOSwzMiBAQAogCiBHU1RfRU5EX1RFU1Q7CiAKK0dTVF9TVEFSVF9URVNUICh0ZXN0X2gyNjRfcmF3X2F1ZGlvKQoreworICBnY2hhciAqcGlwZWxpbmU7CisgIEdzdEVsZW1lbnRGYWN0b3J5ICpmYWN0b3J5ID0gTlVMTDsKKworICBpZiAoKGZhY3RvcnkgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQgKCJ4MjY0ZW5jIikpID09IE5VTEwpCisgICAgcmV0dXJuOworICBnc3Rfb2JqZWN0X3VucmVmIChmYWN0b3J5KTsKKyAgaWYgKChmYWN0b3J5ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9maW5kICgiaDI2NHBhcnNlIikpID09IE5VTEwpCisgICAgcmV0dXJuOworICBnc3Rfb2JqZWN0X3VucmVmIChmYWN0b3J5KTsKKworICBwaXBlbGluZSA9IGdfc3RyZHVwX3ByaW50ZiAoInZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0yNTAgISAiCisgICAgICAidmlkZW8veC1yYXcsZnJhbWVyYXRlPTI1LzEgISAiCisgICAgICAieDI2NGVuYyAhIGgyNjRwYXJzZSAhICIKKyAgICAgICJteGZtdXggbmFtZT1tdXggISAiCisgICAgICAiZmFrZXNpbmsgICIKKyAgICAgICJhdWRpb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MjUwICEgIgorICAgICAgImF1ZGlvY29udmVydCAhICIgImF1ZGlvL3gtcmF3LGZvcm1hdD1TMjRMRSxjaGFubmVscz0yICEgbXV4LiAiKTsKKworICBydW5fdGVzdCAocGlwZWxpbmUpOworICBnX2ZyZWUgKHBpcGVsaW5lKTsKK30KKworR1NUX0VORF9URVNUOworCiBzdGF0aWMgU3VpdGUgKgogbXhmbXV4X3N1aXRlICh2b2lkKQogewpAQCAtMjQ4LDE2ICsyNzQsMTIgQEAKICAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19jaGFpbik7CiAgIHRjYXNlX3NldF90aW1lb3V0ICh0Y19jaGFpbiwgMTgwKTsKIAotICAvKiBGSVhNRTogcmVtb3ZlIGFnYWluIG9uY2UgcG9ydGVkICovCi0gIGlmICghZ3N0X3JlZ2lzdHJ5X2NoZWNrX2ZlYXR1cmVfdmVyc2lvbiAoZ3N0X3JlZ2lzdHJ5X2dldCAoKSwgIm14Zm11eCIsIDEsIDAsCi0gICAgICAgICAgMCkpCi0gICAgcmV0dXJuIHM7Ci0KICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X21wZWcyKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3Jhd192aWRlb19yYXdfYXVkaW8pOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfcmF3X3ZpZGVvX3N0cmlkZV90cmFuc2Zvcm0pOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfanBlZzIwMDBfYWxhdyk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9kbnhoZF9tcDMpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfaDI2NF9yYXdfYXVkaW8pOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfbXVsdGlwbGVfYXZfc3RyZWFtcyk7CiAKICAgcmV0dXJuIHM7CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9uZXRzaW0uYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL25ldHNpbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkZTAyNmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9uZXRzaW0uYwpAQCAtMCwwICsxLDY1IEBACisjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGhhcm5lc3MuaD4KKyNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KKworR1NUX1NUQVJUX1RFU1QgKG5ldHNpbV9zdHJlc3MpCit7CisgIEdzdEhhcm5lc3MgKmggPSBnc3RfaGFybmVzc19uZXcgKCJuZXRzaW0iKTsKKyAgR3N0Q2FwcyAqY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgibXljYXBzIik7CisgIEdzdEJ1ZmZlciAqYnVmID0gZ3N0X2hhcm5lc3NfY3JlYXRlX2J1ZmZlciAoaCwgMTAwKTsKKyAgR3N0SGFybmVzc1RocmVhZCAqc3RhdGUsICpwdXNoOworICBHc3RTZWdtZW50IHNlZ21lbnQ7CisKKyAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSk7CisgIHN0YXRlID0gZ3N0X2hhcm5lc3Nfc3RyZXNzX3N0YXRlY2hhbmdlX3N0YXJ0IChoKTsKKyAgcHVzaCA9IGdzdF9oYXJuZXNzX3N0cmVzc19wdXNoX2J1ZmZlcl9zdGFydCAoaCwgY2FwcywgJnNlZ21lbnQsIGJ1Zik7CisKKyAgZ191c2xlZXAgKEdfVVNFQ19QRVJfU0VDICogMSk7CisKKyAgZ3N0X2hhcm5lc3Nfc3RyZXNzX3RocmVhZF9zdG9wIChzdGF0ZSk7CisgIGdzdF9oYXJuZXNzX3N0cmVzc190aHJlYWRfc3RvcCAocHVzaCk7CisKKyAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworICBnc3RfYnVmZmVyX3VucmVmIChidWYpOworICBnc3RfaGFybmVzc190ZWFyZG93biAoaCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKG5ldHNpbV9zdHJlc3NfZGVsYXllZCkKK3sKKyAgR3N0SGFybmVzcyAqaCA9IGdzdF9oYXJuZXNzX25ld19wYXJzZSAoIm5ldHNpbSBkZWxheS1wcm9iYWJpbGl0eT0wLjUiKTsKKyAgR3N0Q2FwcyAqY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgibXljYXBzIik7CisgIEdzdEJ1ZmZlciAqYnVmID0gZ3N0X2hhcm5lc3NfY3JlYXRlX2J1ZmZlciAoaCwgMTAwKTsKKyAgR3N0SGFybmVzc1RocmVhZCAqc3RhdGUsICpwdXNoOworICBHc3RTZWdtZW50IHNlZ21lbnQ7CisKKyAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSk7CisgIHN0YXRlID0gZ3N0X2hhcm5lc3Nfc3RyZXNzX3N0YXRlY2hhbmdlX3N0YXJ0IChoKTsKKyAgcHVzaCA9IGdzdF9oYXJuZXNzX3N0cmVzc19wdXNoX2J1ZmZlcl9zdGFydCAoaCwgY2FwcywgJnNlZ21lbnQsIGJ1Zik7CisKKyAgZ191c2xlZXAgKEdfVVNFQ19QRVJfU0VDICogMSk7CisKKyAgZ3N0X2hhcm5lc3Nfc3RyZXNzX3RocmVhZF9zdG9wIChzdGF0ZSk7CisgIGdzdF9oYXJuZXNzX3N0cmVzc190aHJlYWRfc3RvcCAocHVzaCk7CisKKyAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworICBnc3RfYnVmZmVyX3VucmVmIChidWYpOworICBnc3RfaGFybmVzc190ZWFyZG93biAoaCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIFN1aXRlICoKK25ldHNpbV9zdWl0ZSAodm9pZCkKK3sKKyAgU3VpdGUgKnMgPSBzdWl0ZV9jcmVhdGUgKCJuZXRzaW0iKTsKKyAgVENhc2UgKnRjX2NoYWluOworCisgIHN1aXRlX2FkZF90Y2FzZSAocywgKHRjX2NoYWluID0gdGNhc2VfY3JlYXRlICgiZ2VuZXJhbCIpKSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgbmV0c2ltX3N0cmVzcyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgbmV0c2ltX3N0cmVzc19kZWxheWVkKTsKKworICByZXR1cm4gczsKK30KKworR1NUX0NIRUNLX01BSU4gKG5ldHNpbSkKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL29wdXMuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL29wdXMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FmZWI0ZS4uMDAwMDAwMAotLS0gYS90ZXN0cy9jaGVjay9lbGVtZW50cy9vcHVzLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNzggKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKgotICogdW5pdCB0ZXN0IGZvciBvcHVzCi0gKgotICogQ29weXJpZ2h0IChDKSA8MjAxMT4gVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYmFvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0jaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+Ci0KLSNpZiBHX0JZVEVfT1JERVIgPT0gR19CSUdfRU5ESUFOCi0jZGVmaW5lIEFGT1JNQVQgIlMxNkJFIgotI2Vsc2UKLSNkZWZpbmUgQUZPUk1BVCAiUzE2TEUiCi0jZW5kaWYKLQotI2RlZmluZSBBVURJT19DQVBTX1NUUklORyAiYXVkaW8veC1yYXcsICIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCA9IChzdHJpbmcpICIgQUZPUk1BVCAiLCAiXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgImxheW91dCA9IChzdHJpbmcpIGludGVybGVhdmVkLCAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJyYXRlID0gKGludCkgNDgwMDAsICIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5uZWxzID0gKGludCkgMSAiCi0KLXN0YXRpYyBjb25zdCBndWludDggb3B1c19vZ2dfaWRfaGVhZGVyWzE5XSA9IHsKLSAgMHg0ZiwgMHg3MCwgMHg3NSwgMHg3MywgMHg0OCwgMHg2NSwgMHg2MSwgMHg2NCwgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwKLSAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMAotfTsKLQotLyogQSBsb3Qgb2YgdGhlc2UgdGFrZW4gZnJvbSB0aGUgdm9yYmlzZGVjIHRlc3QgKi8KLQotLyogRm9yIGVhc2Ugb2YgcHJvZ3JhbW1pbmcgd2UgdXNlIGdsb2JhbHMgdG8ga2VlcCByZWZzIGZvciBvdXIgZmxvYXRpbmcKLSAqIHNyYyBhbmQgc2luayBwYWRzIHdlIGNyZWF0ZTsgb3RoZXJ3aXNlIHdlIGFsd2F5cyBoYXZlIHRvIGRvIGdldF9wYWQsCi0gKiBnZXRfcGVlciwgYW5kIHRoZW4gcmVtb3ZlIHJlZmVyZW5jZXMgaW4gZXZlcnkgdGVzdCBmdW5jdGlvbiAqLwotc3RhdGljIEdzdFBhZCAqbXlkZWNzcmNwYWQsICpteWRlY3NpbmtwYWQ7Ci1zdGF0aWMgR3N0UGFkICpteWVuY3NyY3BhZCwgKm15ZW5jc2lua3BhZDsKLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmt0ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQU19BTlkpOwotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAotICAgIEdTVF9QQURfU1JDLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQU19BTlkpOwotCi1zdGF0aWMgR3N0RWxlbWVudCAqCi1zZXR1cF9vcHVzZGVjICh2b2lkKQotewotICBHc3RFbGVtZW50ICpvcHVzZGVjOwotCi0gIEdTVF9ERUJVRyAoInNldHVwX29wdXNkZWMiKTsKLSAgb3B1c2RlYyA9IGdzdF9jaGVja19zZXR1cF9lbGVtZW50ICgib3B1c2RlYyIpOwotICBteWRlY3NyY3BhZCA9IGdzdF9jaGVja19zZXR1cF9zcmNfcGFkIChvcHVzZGVjLCAmc3JjdGVtcGxhdGUpOwotICBteWRlY3NpbmtwYWQgPSBnc3RfY2hlY2tfc2V0dXBfc2lua19wYWQgKG9wdXNkZWMsICZzaW5rdGVtcGxhdGUpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKG15ZGVjc3JjcGFkLCBUUlVFKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteWRlY3NpbmtwYWQsIFRSVUUpOwotCi0gIHJldHVybiBvcHVzZGVjOwotfQotCi1zdGF0aWMgdm9pZAotY2xlYW51cF9vcHVzZGVjIChHc3RFbGVtZW50ICogb3B1c2RlYykKLXsKLSAgR1NUX0RFQlVHICgiY2xlYW51cF9vcHVzZGVjIik7Ci0gIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAob3B1c2RlYywgR1NUX1NUQVRFX05VTEwpOwotCi0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlkZWNzcmNwYWQsIEZBTFNFKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteWRlY3NpbmtwYWQsIEZBTFNFKTsKLSAgZ3N0X2NoZWNrX3RlYXJkb3duX3NyY19wYWQgKG9wdXNkZWMpOwotICBnc3RfY2hlY2tfdGVhcmRvd25fc2lua19wYWQgKG9wdXNkZWMpOwotICBnc3RfY2hlY2tfdGVhcmRvd25fZWxlbWVudCAob3B1c2RlYyk7Ci19Ci0KLXN0YXRpYyBHc3RFbGVtZW50ICoKLXNldHVwX29wdXNlbmMgKHZvaWQpCi17Ci0gIEdzdEVsZW1lbnQgKm9wdXNlbmM7Ci0KLSAgR1NUX0RFQlVHICgic2V0dXBfb3B1c2VuYyIpOwotICBvcHVzZW5jID0gZ3N0X2NoZWNrX3NldHVwX2VsZW1lbnQgKCJvcHVzZW5jIik7Ci0gIG15ZW5jc3JjcGFkID0gZ3N0X2NoZWNrX3NldHVwX3NyY19wYWQgKG9wdXNlbmMsICZzcmN0ZW1wbGF0ZSk7Ci0gIG15ZW5jc2lua3BhZCA9IGdzdF9jaGVja19zZXR1cF9zaW5rX3BhZCAob3B1c2VuYywgJnNpbmt0ZW1wbGF0ZSk7Ci0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXllbmNzcmNwYWQsIFRSVUUpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKG15ZW5jc2lua3BhZCwgVFJVRSk7Ci0KLSAgcmV0dXJuIG9wdXNlbmM7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jbGVhbnVwX29wdXNlbmMgKEdzdEVsZW1lbnQgKiBvcHVzZW5jKQotewotICBHU1RfREVCVUcgKCJjbGVhbnVwX29wdXNlbmMiKTsKLSAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChvcHVzZW5jLCBHU1RfU1RBVEVfTlVMTCk7Ci0KLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteWVuY3NyY3BhZCwgRkFMU0UpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKG15ZW5jc2lua3BhZCwgRkFMU0UpOwotICBnc3RfY2hlY2tfdGVhcmRvd25fc3JjX3BhZCAob3B1c2VuYyk7Ci0gIGdzdF9jaGVja190ZWFyZG93bl9zaW5rX3BhZCAob3B1c2VuYyk7Ci0gIGdzdF9jaGVja190ZWFyZG93bl9lbGVtZW50IChvcHVzZW5jKTsKLX0KLQotc3RhdGljIHZvaWQKLWNoZWNrX2J1ZmZlcnMgKGd1aW50IGV4cGVjdGVkKQotewotICBHc3RCdWZmZXIgKm91dGJ1ZmZlcjsKLSAgZ3VpbnQgaSwgbnVtX2J1ZmZlcnM7Ci0KLSAgLyogY2hlY2sgYnVmZmVycyBhcmUgdGhlIHR5cGUgd2UgZXhwZWN0ICovCi0gIG51bV9idWZmZXJzID0gZ19saXN0X2xlbmd0aCAoYnVmZmVycyk7Ci0gIGZhaWxfdW5sZXNzIChudW1fYnVmZmVycyA+PSBleHBlY3RlZCk7Ci0gIGZvciAoaSA9IDA7IGkgPCBudW1fYnVmZmVyczsgKytpKSB7Ci0gICAgb3V0YnVmZmVyID0gR1NUX0JVRkZFUiAoYnVmZmVycy0+ZGF0YSk7Ci0gICAgZmFpbF9pZiAob3V0YnVmZmVyID09IE5VTEwpOwotICAgIGZhaWxfaWYgKGdzdF9idWZmZXJfZ2V0X3NpemUgKG91dGJ1ZmZlcikgPT0gMCk7Ci0KLSAgICBidWZmZXJzID0gZ19saXN0X3JlbW92ZSAoYnVmZmVycywgb3V0YnVmZmVyKTsKLQotICAgIEFTU0VSVF9CVUZGRVJfUkVGQ09VTlQgKG91dGJ1ZmZlciwgIm91dGJ1ZmZlciIsIDEpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKG91dGJ1ZmZlcik7Ci0gICAgb3V0YnVmZmVyID0gTlVMTDsKLSAgfQotfQotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9vcHVzX2lkX2hlYWRlcikKLXsKLSAgR3N0RWxlbWVudCAqb3B1c2RlYzsKLSAgR3N0QnVmZmVyICppbmJ1ZmZlcjsKLSAgR3N0Q2FwcyAqY2FwczsKLQotICBvcHVzZGVjID0gc2V0dXBfb3B1c2RlYyAoKTsKLSAgZmFpbF91bmxlc3MgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSAob3B1c2RlYywKLSAgICAgICAgICBHU1RfU1RBVEVfUExBWUlORykgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTLAotICAgICAgImNvdWxkIG5vdCBzZXQgdG8gcGxheWluZyIpOwotCi0gIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlICgiYXVkaW8veC1vcHVzIik7Ci0gIGdzdF9jaGVja19zZXR1cF9ldmVudHMgKG15ZGVjc3JjcGFkLCBvcHVzZGVjLCBjYXBzLCBHU1RfRk9STUFUX1RJTUUpOwotICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0KLSAgaW5idWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKHNpemVvZiAob3B1c19vZ2dfaWRfaGVhZGVyKSk7Ci0gIGdzdF9idWZmZXJfZmlsbCAoaW5idWZmZXIsIDAsIG9wdXNfb2dnX2lkX2hlYWRlciwKLSAgICAgIHNpemVvZiAob3B1c19vZ2dfaWRfaGVhZGVyKSk7Ci0gIEFTU0VSVF9CVUZGRVJfUkVGQ09VTlQgKGluYnVmZmVyLCAiaW5idWZmZXIiLCAxKTsKLSAgZ3N0X2J1ZmZlcl9yZWYgKGluYnVmZmVyKTsKLQotICAvKiBwdXNoaW5nIGdpdmVzIGF3YXkgbXkgcmVmZXJlbmNlIC4uLiAqLwotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoIChteWRlY3NyY3BhZCwgaW5idWZmZXIpID09IEdTVF9GTE9XX09LKTsKLSAgLyogLi4uIGFuZCBub3RoaW5nIGVuZHMgdXAgb24gdGhlIGdsb2JhbCBidWZmZXIgbGlzdCAqLwotICBBU1NFUlRfQlVGRkVSX1JFRkNPVU5UIChpbmJ1ZmZlciwgImluYnVmZmVyIiwgMSk7Ci0gIGdzdF9idWZmZXJfdW5yZWYgKGluYnVmZmVyKTsKLSAgY2hlY2tfYnVmZmVycyAoMCk7Ci0KLSAgLyogY2xlYW51cCAqLwotICBjbGVhbnVwX29wdXNkZWMgKG9wdXNkZWMpOwotfQotCi1HU1RfRU5EX1RFU1Q7Ci0KLUdTVF9TVEFSVF9URVNUICh0ZXN0X29wdXNfZW5jb2RlX25vdGhpbmcpCi17Ci0gIEdzdEVsZW1lbnQgKm9wdXNlbmM7Ci0KLSAgb3B1c2VuYyA9IHNldHVwX29wdXNlbmMgKCk7Ci0gIGZhaWxfdW5sZXNzIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKG9wdXNlbmMsCi0gICAgICAgICAgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUywKLSAgICAgICJjb3VsZCBub3Qgc2V0IHRvIHBsYXlpbmciKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteWVuY3NyY3BhZCwgZ3N0X2V2ZW50X25ld19lb3MgKCkpID09IFRSVUUpOwotCi0gIGZhaWxfdW5sZXNzIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKG9wdXNlbmMsCi0gICAgICAgICAgR1NUX1NUQVRFX1JFQURZKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MsCi0gICAgICAiY291bGQgbm90IHNldCB0byByZWFkeSIpOwotCi0gIC8qIGNsZWFudXAgKi8KLSAgY2xlYW51cF9vcHVzZW5jIChvcHVzZW5jKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9vcHVzX2RlY29kZV9ub3RoaW5nKQotewotICBHc3RFbGVtZW50ICpvcHVzZGVjOwotCi0gIG9wdXNkZWMgPSBzZXR1cF9vcHVzZGVjICgpOwotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChvcHVzZGVjLAotICAgICAgICAgIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MsCi0gICAgICAiY291bGQgbm90IHNldCB0byBwbGF5aW5nIik7Ci0KLSAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlkZWNzcmNwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKSA9PSBUUlVFKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChvcHVzZGVjLAotICAgICAgICAgIEdTVF9TVEFURV9SRUFEWSkgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTLAotICAgICAgImNvdWxkIG5vdCBzZXQgdG8gcmVhZHkiKTsKLQotICAvKiBjbGVhbnVwICovCi0gIGNsZWFudXBfb3B1c2RlYyAob3B1c2RlYyk7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotR1NUX1NUQVJUX1RFU1QgKHRlc3Rfb3B1c19lbmNvZGVfc2FtcGxlcykKLXsKLSAgY29uc3QgdW5zaWduZWQgaW50IG5zYW1wbGVzID0gNDA5NjsKLSAgR3N0RWxlbWVudCAqb3B1c2VuYzsKLSAgR3N0QnVmZmVyICppbmJ1ZmZlcjsKLSAgR3N0Q2FwcyAqY2FwczsKLQotICBvcHVzZW5jID0gc2V0dXBfb3B1c2VuYyAoKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChvcHVzZW5jLAotICAgICAgICAgIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MsCi0gICAgICAiY291bGQgbm90IHNldCB0byBwbGF5aW5nIik7Ci0KLSAgaW5idWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKG5zYW1wbGVzICogMik7Ci0gIGdzdF9idWZmZXJfbWVtc2V0IChpbmJ1ZmZlciwgMCwgMCwgbnNhbXBsZXMgKiAyKTsKLQotICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoaW5idWZmZXIpID0gR1NUX0JVRkZFUl9PRkZTRVQgKGluYnVmZmVyKSA9IDA7Ci0gIEdTVF9CVUZGRVJfRFVSQVRJT04gKGluYnVmZmVyKSA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0gIEFTU0VSVF9CVUZGRVJfUkVGQ09VTlQgKGluYnVmZmVyLCAiaW5idWZmZXIiLCAxKTsKLQotICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKEFVRElPX0NBUFNfU1RSSU5HKTsKLSAgZmFpbF91bmxlc3MgKGNhcHMgIT0gTlVMTCk7Ci0gIGdzdF9jaGVja19zZXR1cF9ldmVudHMgKG15ZW5jc3JjcGFkLCBvcHVzZW5jLCBjYXBzLCBHU1RfRk9STUFUX1RJTUUpOwotICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gIGdzdF9idWZmZXJfcmVmIChpbmJ1ZmZlcik7Ci0KLSAgLyogcHVzaGluZyBnaXZlcyBhd2F5IG15IHJlZmVyZW5jZSAuLi4gKi8KLSAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaCAobXllbmNzcmNwYWQsIGluYnVmZmVyKSA9PSBHU1RfRkxPV19PSyk7Ci0gIC8qIC4uLiBhbmQgbm90aGluZyBlbmRzIHVwIG9uIHRoZSBnbG9iYWwgYnVmZmVyIGxpc3QgKi8KLSAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXllbmNzcmNwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKSA9PSBUUlVFKTsKLQotICBBU1NFUlRfQlVGRkVSX1JFRkNPVU5UIChpbmJ1ZmZlciwgImluYnVmZmVyIiwgMSk7Ci0gIGdzdF9idWZmZXJfdW5yZWYgKGluYnVmZmVyKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChvcHVzZW5jLAotICAgICAgICAgIEdTVF9TVEFURV9SRUFEWSkgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTLAotICAgICAgImNvdWxkIG5vdCBzZXQgdG8gcmVhZHkiKTsKLQotICAvKiBkZWZhdWx0IGZyYW1lIHNpemUgaXMgMjAgbXMsIGF0IDQ4MDAwIEh6IHRoYXQncyA5NjAgc2FtcGxlcyAqLwotICBjaGVja19idWZmZXJzICgobnNhbXBsZXMgKyA5NTkpIC8gOTYwKTsKLQotICAvKiBjbGVhbnVwICovCi0gIGNsZWFudXBfb3B1c2VuYyAob3B1c2VuYyk7Ci0gIGdfbGlzdF9mcmVlIChidWZmZXJzKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9vcHVzX2VuY29kZV9wcm9wZXJ0aWVzKQotewotICBjb25zdCB1bnNpZ25lZCBpbnQgbnNhbXBsZXMgPSA0MDk2OwotICBlbnVtCi0gIHsgc3RlcHMgPSAyMCB9OwotICBHc3RFbGVtZW50ICpvcHVzZW5jOwotICBHc3RCdWZmZXIgKmluYnVmZmVyOwotICBHc3RDYXBzICpjYXBzOwotICB1bnNpZ25lZCBpbnQgc3RlcDsKLSAgc3RhdGljIGNvbnN0IHN0cnVjdAotICB7Ci0gICAgY29uc3QgY2hhciAqcGFyYW07Ci0gICAgaW50IHZhbHVlOwotICB9IHBhcmFtX2NoYW5nZXNbc3RlcHNdID0gewotICAgIHsKLSAgICAiZnJhbWUtc2l6ZSIsIDQwfSwgewotICAgICJpbmJhbmQtZmVjIiwgMX0sIHsKLSAgICAiY29tcGxleGl0eSIsIDV9LCB7Ci0gICAgImJhbmR3aWR0aCIsIDExMDR9LCB7Ci0gICAgImZyYW1lLXNpemUiLCAyfSwgewotICAgICJtYXgtcGF5bG9hZC1zaXplIiwgODB9LCB7Ci0gICAgImZyYW1lLXNpemUiLCA2MH0sIHsKLSAgICAibWF4LXBheWxvYWQtc2l6ZSIsIDkwMH0sIHsKLSAgICAiY29tcGxleGl0eSIsIDF9LCB7Ci0gICAgImJpdHJhdGUiLCAzMDAwMH0sIHsKLSAgICAiZnJhbWUtc2l6ZSIsIDEwfSwgewotICAgICJiaXRyYXRlIiwgMzAwMDAwfSwgewotICAgICJpbmJhbmQtZmVjIiwgMH0sIHsKLSAgICAiZnJhbWUtc2l6ZSIsIDV9LCB7Ci0gICAgImJhbmR3aWR0aCIsIDExMDF9LCB7Ci0gICAgImZyYW1lLXNpemUiLCAxMH0sIHsKLSAgICAiYml0cmF0ZSIsIDUwMDAwMH0sIHsKLSAgICAiZnJhbWUtc2l6ZSIsIDV9LCB7Ci0gICAgImJpdHJhdGUiLCA4MDAwMH0sIHsKLSAgImNvbXBsZXhpdHkiLCA4fSx9OwotCi0gIG9wdXNlbmMgPSBzZXR1cF9vcHVzZW5jICgpOwotCi0gIGZhaWxfdW5sZXNzIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKG9wdXNlbmMsCi0gICAgICAgICAgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUywKLSAgICAgICJjb3VsZCBub3Qgc2V0IHRvIHBsYXlpbmciKTsKLQotICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKEFVRElPX0NBUFNfU1RSSU5HKTsKLSAgZmFpbF91bmxlc3MgKGNhcHMgIT0gTlVMTCk7Ci0KLSAgZ3N0X2NoZWNrX3NldHVwX2V2ZW50cyAobXllbmNzcmNwYWQsIG9wdXNlbmMsIGNhcHMsIEdTVF9GT1JNQVRfVElNRSk7Ci0KLSAgZm9yIChzdGVwID0gMDsgc3RlcCA8IHN0ZXBzOyArK3N0ZXApIHsKLSAgICBHc3RTZWdtZW50IHNlZ21lbnQ7Ci0KLSAgICBnc3Rfc2VnbWVudF9pbml0ICgmc2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FKTsKLSAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKG15ZW5jc3JjcGFkLCBnc3RfZXZlbnRfbmV3X3NlZ21lbnQgKCZzZWdtZW50KSk7Ci0KLSAgICBpbmJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAobnNhbXBsZXMgKiAyKTsKLSAgICBnc3RfYnVmZmVyX21lbXNldCAoaW5idWZmZXIsIDAsIDAsIG5zYW1wbGVzICogMik7Ci0KLSAgICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoaW5idWZmZXIpID0gR1NUX0JVRkZFUl9PRkZTRVQgKGluYnVmZmVyKSA9IDA7Ci0gICAgR1NUX0JVRkZFUl9EVVJBVElPTiAoaW5idWZmZXIpID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSAgICBBU1NFUlRfQlVGRkVSX1JFRkNPVU5UIChpbmJ1ZmZlciwgImluYnVmZmVyIiwgMSk7Ci0KLSAgICBnc3RfYnVmZmVyX3JlZiAoaW5idWZmZXIpOwotCi0gICAgLyogcHVzaGluZyBnaXZlcyBhd2F5IG15IHJlZmVyZW5jZSAuLi4gKi8KLSAgICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoIChteWVuY3NyY3BhZCwgaW5idWZmZXIpID09IEdTVF9GTE9XX09LKTsKLSAgICAvKiAuLi4gYW5kIG5vdGhpbmcgZW5kcyB1cCBvbiB0aGUgZ2xvYmFsIGJ1ZmZlciBsaXN0ICovCi0gICAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXllbmNzcmNwYWQsCi0gICAgICAgICAgICBnc3RfZXZlbnRfbmV3X2VvcyAoKSkgPT0gVFJVRSk7Ci0KLSAgICBBU1NFUlRfQlVGRkVSX1JFRkNPVU5UIChpbmJ1ZmZlciwgImluYnVmZmVyIiwgMSk7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoaW5idWZmZXIpOwotCi0gICAgLyogY2hhbmdlIHJhbmRvbSBwYXJhbWV0ZXJzICovCi0gICAgZ19vYmplY3Rfc2V0IChvcHVzZW5jLCBwYXJhbV9jaGFuZ2VzW3N0ZXBdLnBhcmFtLCBwYXJhbV9jaGFuZ2VzW3N0ZXBdLnZhbHVlLAotICAgICAgICBOVUxMKTsKLQotICAgIGNoZWNrX2J1ZmZlcnMgKDEpOwotCi0gICAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXllbmNzcmNwYWQsCi0gICAgICAgICAgICBnc3RfZXZlbnRfbmV3X2ZsdXNoX3N0YXJ0ICgpKSA9PSBUUlVFKTsKLSAgICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteWVuY3NyY3BhZCwKLSAgICAgICAgICAgIGdzdF9ldmVudF9uZXdfZmx1c2hfc3RvcCAoVFJVRSkpID09IFRSVUUpOwotICB9Ci0KLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotCi0gIGZhaWxfdW5sZXNzIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKG9wdXNlbmMsCi0gICAgICAgICAgR1NUX1NUQVRFX1JFQURZKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MsCi0gICAgICAiY291bGQgbm90IHNldCB0byByZWFkeSIpOwotCi0gIC8qIGNsZWFudXAgKi8KLSAgY2xlYW51cF9vcHVzZW5jIChvcHVzZW5jKTsKLSAgZ19saXN0X2ZyZWUgKGJ1ZmZlcnMpOwotfQotCi1HU1RfRU5EX1RFU1Q7Ci0KLXN0YXRpYyBTdWl0ZSAqCi1vcHVzX3N1aXRlICh2b2lkKQotewotICBTdWl0ZSAqcyA9IHN1aXRlX2NyZWF0ZSAoIm9wdXMiKTsKLSAgVENhc2UgKnRjX2NoYWluID0gdGNhc2VfY3JlYXRlICgiZ2VuZXJhbCIpOwotCi0gIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfY2hhaW4pOwotCi0jZGVmaW5lIFggaWYgKDApCi0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9vcHVzX2lkX2hlYWRlcik7Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9vcHVzX2VuY29kZV9ub3RoaW5nKTsKLSAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X29wdXNfZGVjb2RlX25vdGhpbmcpOwotICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3Rfb3B1c19lbmNvZGVfc2FtcGxlcyk7Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9vcHVzX2VuY29kZV9wcm9wZXJ0aWVzKTsKLSN1bmRlZiBYCi0KLSAgcmV0dXJuIHM7Ci19Ci0KLUdTVF9DSEVDS19NQUlOIChvcHVzKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3BjYXBwYXJzZS5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvcGNhcHBhcnNlLmMKaW5kZXggOGEyYTA1NC4uMTVkMzU1NSAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svZWxlbWVudHMvcGNhcHBhcnNlLmMKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvcGNhcHBhcnNlLmMKQEAgLTEsNSArMSw2IEBACiAjaW5jbHVkZSAicGFyc2VyLmgiCiAjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+CisjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGhhcm5lc3MuaD4KIAogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAogICAgIEdTVF9QQURfU1JDLApAQCAtMzYsNyArMzcsNyBAQAogICBpZiAodmRhdGEtPmRhdGFfdG9fdmVyaWZ5ID09IHBjYXBfZnJhbWVfd2l0aF9ldGhfcGFkZGluZykgewogICAgIG9mZnNldCA9IHBjYXBfZnJhbWVfd2l0aF9ldGhfcGFkZGluZ19vZmZzZXQ7CiAgICAgc2l6ZSA9IHNpemVvZiAocGNhcF9mcmFtZV93aXRoX2V0aF9wYWRkaW5nKSAtCi0gICAgICBwY2FwX2ZyYW1lX3dpdGhfZXRoX3BhZGRpbmdfb2Zmc2V0IC0gMjsKKyAgICAgICAgcGNhcF9mcmFtZV93aXRoX2V0aF9wYWRkaW5nX29mZnNldCAtIDI7CiAgIH0KIAogICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpLCBzaXplKTsKQEAgLTUwLDcgKzUxLDcgQEAKIHNldHVwX2VsZW1lbnQgKGNvbnN0IGdjaGFyICogZGVzYykKIHsKICAgR3N0RWxlbWVudCAqZWxlbWVudDsKLSAgR3N0Q2FwcyAqIGNhcHM7CisgIEdzdENhcHMgKmNhcHM7CiAKICAgKHZvaWQpIGRlc2M7CiAKQEAgLTY3LDYgKzY4LDUxIEBACiAgIGdzdF9wYXJzZXJfdGVzdF9zcGxpdCAocGNhcF9mcmFtZV93aXRoX2V0aF9wYWRkaW5nLAogICAgICAgc2l6ZW9mIChwY2FwX2ZyYW1lX3dpdGhfZXRoX3BhZGRpbmcpKTsKIH0KKworR1NUX0VORF9URVNUOworCitzdGF0aWMgY29uc3QgZ3VpbnQ4IHplcm9zaXplX2RhdGFbXSA9IHsKKyAgMHhkNCwgMHhjMywgMHhiMiwgMHhhMSwgMHgwMiwgMHgwMCwgMHgwNCwgMHgwMCwKKyAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgMHhkMywgMHhmZiwgMHg3YSwgMHg1NiwgMHhiYiwgMHhkOCwgMHgwZSwgMHgwMCwKKyAgMHgyYSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyYSwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwOCwgMHgwMCwgMHg0NSwgMHgwMCwKKyAgMHgwMCwgMHgxYywgMHgwNiwgMHhlNywgMHg0MCwgMHgwMCwgMHg0MCwgMHgxMSwKKyAgMHgzNSwgMHhlOCwgMHg3ZiwgMHgwMCwgMHgwMCwgMHgwMSwgMHg3ZiwgMHgwMCwKKyAgMHgwMCwgMHgwMSwgMHhkMiwgMHhhMywgMHgxMywgMHg4YywgMHgwMCwgMHgwOCwKKyAgMHhmZSwgMHgxYgorfTsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfcGFyc2VfemVyb3NpemVfZnJhbWVzKQoreworICBHc3RCdWZmZXIgKmluX2J1ZiwgKm91dF9idWY7CisgIEdzdEhhcm5lc3MgKmg7CisgIGdzaXplIGRhdGFfc2l6ZTsKKworICBoID0gZ3N0X2hhcm5lc3NfbmV3ICgicGNhcHBhcnNlIik7CisKKyAgZ3N0X2hhcm5lc3Nfc2V0X3NyY19jYXBzX3N0ciAoaCwgInJhdy94LXBjYXAiKTsKKworICBkYXRhX3NpemUgPSBzaXplb2YgKHplcm9zaXplX2RhdGEpOworCisgIGluX2J1ZiA9IGdzdF9idWZmZXJfbmV3X3dyYXBwZWQgKGdfbWVtZHVwICh6ZXJvc2l6ZV9kYXRhLCBkYXRhX3NpemUpLAorICAgICAgZGF0YV9zaXplKTsKKworICBnc3RfaGFybmVzc19wdXNoIChoLCBpbl9idWYpOworICBnc3RfaGFybmVzc19wbGF5IChoKTsKKyAgZ3N0X2hhcm5lc3NfcHVzaF9ldmVudCAoaCwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOworCisgIC8qIGNoZWNrIHRoYXQgYSBidWZmZXIgY29tZXMgb3V0IGFuZCB0aGF0IGl0IGlzIDAgYnl0ZXMgaW4gc2l6ZSAqLworICBvdXRfYnVmID0gZ3N0X2hhcm5lc3NfcHVsbCAoaCk7CisKKyAgZmFpbF91bmxlc3MgKGdzdF9idWZmZXJfZ2V0X3NpemUgKG91dF9idWYpID09IDApOworCisgIGdzdF9idWZmZXJfdW5yZWYgKG91dF9idWYpOworICBnc3RfaGFybmVzc190ZWFyZG93biAoaCk7Cit9CisKIEdTVF9FTkRfVEVTVDsKIAogc3RhdGljIFN1aXRlICoKQEAgLTg2LDYgKzEzMiw3IEBACiAKICAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19jaGFpbik7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9wYXJzZV9mcmFtZXNfd2l0aF9ldGhfcGFkZGluZyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9wYXJzZV96ZXJvc2l6ZV9mcmFtZXMpOwogCiAgIHJldHVybiBzOwogfQpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwb252aWYuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3J0cG9udmlmLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjZTgwOGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwb252aWYuYworKysgL2Rldi9udWxsCkBAIC0xLDQzOSArMCwwIEBACi0vKgotICogb252aWZ0aW1lc3RhbXAuYwotICoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBeGlzIENvbW11bmljYXRpb25zIEFCCi0gKiAgQXV0aG9yOiBHdWlsbGF1bWUgRGVzbW90dGVzIDxndWlsbGF1bWUuZGVzbW90dGVzQGNvbGxhYm9yYS5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKi8KLQotI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RjaGVjay5oPgotI2luY2x1ZGUgPGdzdC9ydHAvZ3N0cnRwYnVmZmVyLmg+Ci0KLS8qIEZvciBlYXNlIG9mIHByb2dyYW1taW5nIHdlIHVzZSBnbG9iYWxzIHRvIGtlZXAgcmVmcyBmb3Igb3VyIGZsb2F0aW5nCi0gKiBzcmMgYW5kIHNpbmsgcGFkcyB3ZSBjcmVhdGU7IG90aGVyd2lzZSB3ZSBhbHdheXMgaGF2ZSB0byBkbyBnZXRfcGFkLAotICogZ2V0X3BlZXIsIGFuZCB0aGVuIHJlbW92ZSByZWZlcmVuY2VzIGluIGV2ZXJ5IHRlc3QgZnVuY3Rpb24gKi8KLXN0YXRpYyBHc3RQYWQgKm15c3JjcGFkLCAqbXlzaW5rcGFkOwotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKLSAgICBHU1RfUEFEX1NJTkssCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTICgiYXBwbGljYXRpb24veC1ydHAiKQotICAgICk7Ci1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc3JjdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCi0gICAgR1NUX1BBRF9TUkMsCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTICgiYXBwbGljYXRpb24veC1ydHAiKQotICAgICk7Ci0KLSNkZWZpbmUgTlRQX09GRlNFVCAoZ3VpbnQ2NCkgMTI0NQotI2RlZmluZSBUSU1FU1RBTVAgNDIKLQotc3RhdGljIHZvaWQKLXNldHVwX2VsZW1lbnQgKEdzdEVsZW1lbnQgKiBlbGVtZW50KQotewotICBteXNyY3BhZCA9IGdzdF9jaGVja19zZXR1cF9zcmNfcGFkIChlbGVtZW50LCAmc3JjdGVtcGxhdGUpOwotICBteXNpbmtwYWQgPSBnc3RfY2hlY2tfc2V0dXBfc2lua19wYWQgKGVsZW1lbnQsICZzaW5rdGVtcGxhdGUpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKG15c3JjcGFkLCBUUlVFKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNpbmtwYWQsIFRSVUUpOwotCi0gIGZhaWxfdW5sZXNzIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKGVsZW1lbnQsCi0gICAgICAgICAgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUywKLSAgICAgICJjb3VsZCBub3Qgc2V0IHRvIHBsYXlpbmciKTsKLX0KLQotc3RhdGljIEdzdEVsZW1lbnQgKgotc2V0dXBfcnRwb252aWZ0aW1lc3RhbXAgKGdib29sZWFuIHNldF9lX2JpdCkKLXsKLSAgR3N0RWxlbWVudCAqdGltZXN0YW1wOwotCi0gIEdTVF9ERUJVRyAoInNldHVwX3J0cG9udmlmdGltZXN0YW1wIik7Ci0gIHRpbWVzdGFtcCA9IGdzdF9jaGVja19zZXR1cF9lbGVtZW50ICgicnRwb252aWZ0aW1lc3RhbXAiKTsKLQotICBnX29iamVjdF9zZXQgKHRpbWVzdGFtcCwgIm50cC1vZmZzZXQiLCBOVFBfT0ZGU0VULCAiY3NlcSIsIDB4MTIzNDU2NzgsCi0gICAgICAic2V0LWUtYml0Iiwgc2V0X2VfYml0LCBOVUxMKTsKLQotICBzZXR1cF9lbGVtZW50ICh0aW1lc3RhbXApOwotCi0gIHJldHVybiB0aW1lc3RhbXA7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jbGVhbnVwX2VsZW1lbnQgKEdzdEVsZW1lbnQgKiBlbGVtZW50KQotewotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChlbGVtZW50LAotICAgICAgICAgIEdTVF9TVEFURV9OVUxMKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MsICJjb3VsZCBub3Qgc2V0IHRvIG51bGwiKTsKLQotICBnc3RfcGFkX3NldF9hY3RpdmUgKG15c3JjcGFkLCBGQUxTRSk7Ci0gIGlmIChteXNpbmtwYWQpCi0gICAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNpbmtwYWQsIEZBTFNFKTsKLSAgZ3N0X2NoZWNrX3RlYXJkb3duX3NyY19wYWQgKGVsZW1lbnQpOwotICBnc3RfY2hlY2tfdGVhcmRvd25fc2lua19wYWQgKGVsZW1lbnQpOwotICBnc3RfY2hlY2tfdGVhcmRvd25fZWxlbWVudCAoZWxlbWVudCk7Ci0gIG15c3JjcGFkID0gTlVMTDsKLSAgbXlzaW5rcGFkID0gTlVMTDsKLX0KLQotc3RhdGljIHZvaWQKLWNsZWFudXBfcnRwb252aWZ0aW1lc3RhbXAgKEdzdEVsZW1lbnQgKiB0aW1lc3RhbXApCi17Ci0gIEdTVF9ERUJVRyAoImNsZWFudXBfcnRwb252aWZ0aW1lc3RhbXAiKTsKLQotICBjbGVhbnVwX2VsZW1lbnQgKHRpbWVzdGFtcCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jaGVja19idWZmZXJfZXF1YWwgKEdzdEJ1ZmZlciAqIGJ1ZiwgR3N0QnVmZmVyICogZXhwZWN0ZWQpCi17Ci0gIEdzdE1hcEluZm8gaW5mb19idWYsIGluZm9fZXhwZWN0ZWQ7Ci0KLSAgZmFpbF9pZiAoYnVmID09IE5VTEwpOwotICBmYWlsX2lmIChleHBlY3RlZCA9PSBOVUxMKTsKLQotICBnc3RfYnVmZmVyX21hcCAoYnVmLCAmaW5mb19idWYsIEdTVF9NQVBfUkVBRCk7Ci0gIGdzdF9idWZmZXJfbWFwIChleHBlY3RlZCwgJmluZm9fZXhwZWN0ZWQsIEdTVF9NQVBfUkVBRCk7Ci0KLSAgR1NUX0xPRyAoImJ1ZmZlcjogc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCwgaW5mb19idWYuc2l6ZSk7Ci0gIEdTVF9MT0cgKCJleHBlY3RlZDogc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCwgaW5mb19leHBlY3RlZC5zaXplKTsKLSAgR1NUX01FTURVTVAgKCJidWZmZXIiLCBpbmZvX2J1Zi5kYXRhLCBpbmZvX2J1Zi5zaXplKTsKLSAgR1NUX01FTURVTVAgKCJleHBlY3RlZCIsIGluZm9fZXhwZWN0ZWQuZGF0YSwgaW5mb19leHBlY3RlZC5zaXplKTsKLQotICBmYWlsX3VubGVzcyAoaW5mb19idWYuc2l6ZSA9PSBpbmZvX2V4cGVjdGVkLnNpemUsCi0gICAgICAic2l6ZSBvZiB0aGUgYnVmZmVycyBhcmUgbm90IHRoZSBzYW1lIik7Ci0gIGZhaWxfdW5sZXNzIChtZW1jbXAgKGluZm9fYnVmLmRhdGEsIGluZm9fZXhwZWN0ZWQuZGF0YSwgaW5mb19idWYuc2l6ZSkgPT0gMCwKLSAgICAgICJkYXRhIGlzIG5vdCB0aGUgc2FtZSIpOwotCi0gIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZiwgJmluZm9fYnVmKTsKLSAgZ3N0X2J1ZmZlcl91bm1hcCAoZXhwZWN0ZWQsICZpbmZvX2V4cGVjdGVkKTsKLX0KLQotLyogQ3JlYXRlIGEgUlRQIGJ1ZmZlciB3aXRob3V0IHRoZSBleHRlbnNpb24gKi8KLXN0YXRpYyBHc3RCdWZmZXIgKgotY3JlYXRlX3J0cF9idWZmZXIgKGd1aW50NjQgdGltZXN0YW1wLCBnYm9vbGVhbiBjbGVhbl9wb2ludCwgZ2Jvb2xlYW4gZGlzY29udCkKLXsKLSAgR3N0QnVmZmVyICpidWZmZXJfaW47Ci0gIEdzdFJUUEJ1ZmZlciBydHBidWZmZXJfaW4gPSBHU1RfUlRQX0JVRkZFUl9JTklUOwotCi0gIGJ1ZmZlcl9pbiA9IGdzdF9ydHBfYnVmZmVyX25ld19hbGxvY2F0ZSAoNCwgMCwgMCk7Ci0gIGJ1ZmZlcl9pbi0+cHRzID0gdGltZXN0YW1wOwotCi0gIGlmICghY2xlYW5fcG9pbnQpCi0gICAgR1NUX0JVRkZFUl9GTEFHX1NFVCAoYnVmZmVyX2luLCBHU1RfQlVGRkVSX0ZMQUdfREVMVEFfVU5JVCk7Ci0gIGlmIChkaXNjb250KQotICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKGJ1ZmZlcl9pbiwgR1NUX0JVRkZFUl9GTEFHX0RJU0NPTlQpOwotCi0gIGZhaWxfdW5sZXNzIChnc3RfcnRwX2J1ZmZlcl9tYXAgKGJ1ZmZlcl9pbiwgR1NUX01BUF9SRUFELCAmcnRwYnVmZmVyX2luKSk7Ci0gIGZhaWxfaWYgKGdzdF9ydHBfYnVmZmVyX2dldF9leHRlbnNpb24gKCZydHBidWZmZXJfaW4pKTsKLSAgZ3N0X3J0cF9idWZmZXJfdW5tYXAgKCZydHBidWZmZXJfaW4pOwotCi0gIHJldHVybiBidWZmZXJfaW47Ci19Ci0KLXN0YXRpYyBndWludDY0Ci1jb252ZXJ0X3RvX250cCAoZ3VpbnQ2NCB0KQotewotICBndWludDY0IG50cHRpbWU7Ci0KLSAgLyogY29udmVydCB0byBOVFAgdGltZS4gdXBwZXIgMzIgYml0cyBzaG91bGQgY29udGFpbiB0aGUgc2Vjb25kcwotICAgKiBhbmQgdGhlIGxvd2VyIDMyIGJpdHMsIHRoZSBmcmFjdGlvbnMgb2YgYSBzZWNvbmQuICovCi0gIG50cHRpbWUgPSBnc3RfdXRpbF91aW50NjRfc2NhbGUgKHQsIChHX0dJTlQ2NF9DT05TVEFOVCAoMSkgPDwgMzIpLAotICAgICAgR1NUX1NFQ09ORCk7Ci0KLSAgcmV0dXJuIG50cHRpbWU7Ci19Ci0KLS8qIENyZWF0ZSBhIGNvcHkgb2YgQGJ1ZmZlcl9pbiBoYXZpbmcgdGhlIFJUUCBleHRlbnNpb24gKi8KLXN0YXRpYyBHc3RCdWZmZXIgKgotY3JlYXRlX2V4dGVuc2lvbl9idWZmZXIgKEdzdEJ1ZmZlciAqIGJ1ZmZlcl9pbiwgZ2Jvb2xlYW4gY2xlYW5fcG9pbnQsCi0gICAgZ2Jvb2xlYW4gZW5kX2NvbnRpZ3VvdXMsIGdib29sZWFuIGRpc2NvbnQpCi17Ci0gIEdzdEJ1ZmZlciAqYnVmZmVyX291dDsKLSAgR3N0UlRQQnVmZmVyIHJ0cGJ1ZmZlcl9vdXQgPSBHU1RfUlRQX0JVRkZFUl9JTklUOwotICBndWludDggKmRhdGE7Ci0gIGd1aW50OCBmbGFncyA9IDA7Ci0KLSAgYnVmZmVyX291dCA9IGdzdF9idWZmZXJfY29weSAoYnVmZmVyX2luKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X3J0cF9idWZmZXJfbWFwIChidWZmZXJfb3V0LCBHU1RfTUFQX1JFQURXUklURSwKLSAgICAgICAgICAmcnRwYnVmZmVyX291dCkpOwotCi0gIC8qIGV4dGVuc2lvbiAqLwotICBnc3RfcnRwX2J1ZmZlcl9zZXRfZXh0ZW5zaW9uX2RhdGEgKCZydHBidWZmZXJfb3V0LCAweEFCQUMsIDMpOwotICBmYWlsX3VubGVzcyAoZ3N0X3J0cF9idWZmZXJfZ2V0X2V4dGVuc2lvbiAoJnJ0cGJ1ZmZlcl9vdXQpKTsKLSAgZ3N0X3J0cF9idWZmZXJfZ2V0X2V4dGVuc2lvbl9kYXRhICgmcnRwYnVmZmVyX291dCwgTlVMTCwgKGdwb2ludGVyKSAmIGRhdGEsCi0gICAgICBOVUxMKTsKLQotICAvKiBOVFAgdGltZXN0YW1wICovCi0gIEdTVF9XUklURV9VSU5UNjRfQkUgKGRhdGEsIGNvbnZlcnRfdG9fbnRwIChidWZmZXJfaW4tPnB0cyArIE5UUF9PRkZTRVQpKTsKLQotICAvKiBDIEUgRCBtYnogKi8KLSAgaWYgKGNsZWFuX3BvaW50KQotICAgIGZsYWdzIHw9ICgxIDw8IDcpOwotICBpZiAoZW5kX2NvbnRpZ3VvdXMpCi0gICAgZmxhZ3MgfD0gKDEgPDwgNik7Ci0gIGlmIChkaXNjb250KQotICAgIGZsYWdzIHw9ICgxIDw8IDUpOwotCi0gIEdTVF9XUklURV9VSU5UOCAoZGF0YSArIDgsIGZsYWdzKTsKLQotICAvKiBDU2VxICovCi0gIEdTVF9XUklURV9VSU5UOCAoZGF0YSArIDksIDB4NzgpOwotCi0gIG1lbXNldCAoZGF0YSArIDEwLCAwLCA0KTsKLQotICBnc3RfcnRwX2J1ZmZlcl91bm1hcCAoJnJ0cGJ1ZmZlcl9vdXQpOwotCi0gIHJldHVybiBidWZmZXJfb3V0OwotfQotCi1zdGF0aWMgdm9pZAotZG9fb25lX2J1ZmZlcl90ZXN0X2FwcGx5IChnYm9vbGVhbiBjbGVhbl9wb2ludCwgZ2Jvb2xlYW4gZGlzY29udCkKLXsKLSAgR3N0RWxlbWVudCAqYXBwbHk7Ci0gIEdzdEJ1ZmZlciAqYnVmZmVyX2luLCAqYnVmZmVyX291dDsKLSAgR3N0U2VnbWVudCBzZWdtZW50OwotCi0gIGFwcGx5ID0gc2V0dXBfcnRwb252aWZ0aW1lc3RhbXAgKEZBTFNFKTsKLQotICBidWZmZXJfaW4gPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QLCBjbGVhbl9wb2ludCwgZGlzY29udCk7Ci0gIGJ1ZmZlcl9vdXQgPSBjcmVhdGVfZXh0ZW5zaW9uX2J1ZmZlciAoYnVmZmVyX2luLCBjbGVhbl9wb2ludCwgRkFMU0UsIGRpc2NvbnQpOwotCi0gIC8qIHN0cmVhbSBzdGFydCAqLwotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwKLSAgICAgICAgICBnc3RfZXZlbnRfbmV3X3N0cmVhbV9zdGFydCAoInRlc3QiKSkpOwotCi0gIC8qIFB1c2ggYSBzZWdtZW50ICovCi0gIGdzdF9zZWdtZW50X2luaXQgKCZzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOwotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwgZ3N0X2V2ZW50X25ld19zZWdtZW50ICgmc2VnbWVudCkpKTsKLQotICAvKiBQdXNoIGJ1ZmZlciAqLwotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyX2luKSA9PSBHU1RfRkxPV19PSywKLSAgICAgICJmYWlsZWQgcHVzaGluZyBidWZmZXIiKTsKLQotICBjaGVja19idWZmZXJfZXF1YWwgKGJ1ZmZlcnMtPmRhdGEsIGJ1ZmZlcl9vdXQpOwotCi0gIGdfbGlzdF9mb3JlYWNoIChidWZmZXJzLCAoR0Z1bmMpIGdzdF9taW5pX29iamVjdF91bnJlZiwgTlVMTCk7Ci0gIGdfbGlzdF9mcmVlIChidWZmZXJzKTsKLSAgYnVmZmVycyA9IE5VTEw7Ci0KLSAgQVNTRVJUX09CSkVDVF9SRUZDT1VOVCAoYXBwbHksICJydHBvbnZpZnRpbWVzdGFtcCIsIDEpOwotICBjbGVhbnVwX3J0cG9udmlmdGltZXN0YW1wIChhcHBseSk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1kb190d29fYnVmZmVyc190ZXN0X2FwcGx5IChnYm9vbGVhbiBlbmRfY29udGlndW91cykKLXsKLSAgR3N0RWxlbWVudCAqYXBwbHk7Ci0gIEdzdEJ1ZmZlciAqYnVmZmVyX2luLCAqYnVmZmVyX291dDsKLSAgR3N0U2VnbWVudCBzZWdtZW50OwotCi0gIGFwcGx5ID0gc2V0dXBfcnRwb252aWZ0aW1lc3RhbXAgKFRSVUUpOwotCi0gIGJ1ZmZlcl9pbiA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAsIEZBTFNFLCBGQUxTRSk7Ci0gIGJ1ZmZlcl9vdXQgPSBjcmVhdGVfZXh0ZW5zaW9uX2J1ZmZlciAoYnVmZmVyX2luLCBGQUxTRSwgZW5kX2NvbnRpZ3VvdXMsCi0gICAgICBGQUxTRSk7Ci0KLSAgLyogc3RyZWFtIHN0YXJ0ICovCi0gIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15c3JjcGFkLAotICAgICAgICAgIGdzdF9ldmVudF9uZXdfc3RyZWFtX3N0YXJ0ICgidGVzdCIpKSk7Ci0KLSAgLyogUHVzaCBhIHNlZ21lbnQgKi8KLSAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSk7Ci0gIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15c3JjcGFkLCBnc3RfZXZlbnRfbmV3X3NlZ21lbnQgKCZzZWdtZW50KSkpOwotCi0gIC8qIFB1c2ggYnVmZmVyICovCi0gIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXJfaW4pID09IEdTVF9GTE9XX09LLAotICAgICAgImZhaWxlZCBwdXNoaW5nIGJ1ZmZlciIpOwotCi0gIC8qIFRoZSBidWZmZXIgaGFzbid0IGJlZW4gcHVzaGVkIGl0IGFzIHRoZSBlbGVtZW50IGlzIHdhaXRpbmcgZm9yIHRoZSBuZXh0Ci0gICAqIGJ1ZmZlci4gKi8KLSAgZ19hc3NlcnRfY21wdWludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksID09LCAwKTsKLQotICAvKiBBIHNlY29uZCBidWZmZXIgaXMgcHVzaGVkLCBpdCBoYXMgdGhlIERJU0NPTlQgZmxhZyBpZiB3ZSB3YW50IHRoYXQgdGhlCi0gICAqIGZpcnN0IG9uZSBoYXMgdGhlICdFJyBiaXQgc2V0LiAqLwotICBidWZmZXJfaW4gPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QICsgMSwgRkFMU0UsIGVuZF9jb250aWd1b3VzKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyX2luKSA9PSBHU1RfRkxPV19PSywKLSAgICAgICJmYWlsZWQgcHVzaGluZyBidWZmZXIiKTsKLQotICAvKiBUaGUgZmlyc3QgYnVmZmVyIGhhcyBub3cgYmVlbiBwdXNoZWQgb3V0ICovCi0gIGdfYXNzZXJ0X2NtcHVpbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCA9PSwgMSk7Ci0KLSAgY2hlY2tfYnVmZmVyX2VxdWFsIChidWZmZXJzLT5kYXRhLCBidWZmZXJfb3V0KTsKLQotICBnX2xpc3RfZm9yZWFjaCAoYnVmZmVycywgKEdGdW5jKSBnc3RfbWluaV9vYmplY3RfdW5yZWYsIE5VTEwpOwotICBnX2xpc3RfZnJlZSAoYnVmZmVycyk7Ci0gIGJ1ZmZlcnMgPSBOVUxMOwotCi0gIC8qIFB1c2ggRU9TICovCi0gIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15c3JjcGFkLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSkpOwotCi0gIC8qIFRoZSBzZWNvbmQgYnVmZmVyIGhhcyBiZWVuIHB1c2hlZCBvdXQgKi8KLSAgZ19hc3NlcnRfY21wdWludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksID09LCAxKTsKLQotICAvKiBMYXRlc3QgYnVmZmVyIGFsd2F5cyBoYXMgdGhlICdFJyBmbGFnICovCi0gIGJ1ZmZlcl9vdXQgPSBjcmVhdGVfZXh0ZW5zaW9uX2J1ZmZlciAoYnVmZmVyX2luLCBGQUxTRSwgVFJVRSwgZW5kX2NvbnRpZ3VvdXMpOwotICBjaGVja19idWZmZXJfZXF1YWwgKGJ1ZmZlcnMtPmRhdGEsIGJ1ZmZlcl9vdXQpOwotCi0gIEFTU0VSVF9PQkpFQ1RfUkVGQ09VTlQgKGFwcGx5LCAicnRwb252aWZ0aW1lc3RhbXAiLCAxKTsKLSAgY2xlYW51cF9ydHBvbnZpZnRpbWVzdGFtcCAoYXBwbHkpOwotfQotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9hcHBseV9kaXNjb250KQotewotICBkb19vbmVfYnVmZmVyX3Rlc3RfYXBwbHkgKEZBTFNFLCBUUlVFKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9hcHBseV9ub3RfZGlzY29udCkKLXsKLSAgZG9fb25lX2J1ZmZlcl90ZXN0X2FwcGx5IChGQUxTRSwgRkFMU0UpOwotfQotCi1HU1RfRU5EX1RFU1Q7Ci0KLUdTVF9TVEFSVF9URVNUICh0ZXN0X2FwcGx5X2NsZWFuX3BvaW50KQotewotICBkb19vbmVfYnVmZmVyX3Rlc3RfYXBwbHkgKFRSVUUsIEZBTFNFKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9hcHBseV9ub19lX2JpdCkKLXsKLSAgZG9fdHdvX2J1ZmZlcnNfdGVzdF9hcHBseSAoRkFMU0UpOwotfQotCi1HU1RfRU5EX1RFU1Q7Ci0KLUdTVF9TVEFSVF9URVNUICh0ZXN0X2FwcGx5X2VfYml0KQotewotICBkb190d29fYnVmZmVyc190ZXN0X2FwcGx5IChUUlVFKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1zdGF0aWMgR3N0RWxlbWVudCAqCi1zZXR1cF9ydHBvbnZpZnBhcnNlIChnYm9vbGVhbiBzZXRfZV9iaXQpCi17Ci0gIEdzdEVsZW1lbnQgKnBhcnNlOwotCi0gIEdTVF9ERUJVRyAoInNldHVwX3J0cG9udmlmcGFyc2UiKTsKLSAgcGFyc2UgPSBnc3RfY2hlY2tfc2V0dXBfZWxlbWVudCAoInJ0cG9udmlmcGFyc2UiKTsKLQotICBzZXR1cF9lbGVtZW50IChwYXJzZSk7Ci0KLSAgcmV0dXJuIHBhcnNlOwotfQotCi1zdGF0aWMgdm9pZAotY2xlYW51cF9ydHBvbnZpZnBhcnNlIChHc3RFbGVtZW50ICogcGFyc2UpCi17Ci0gIEdTVF9ERUJVRyAoImNsZWFudXBfcnRwb252aWZwYXJzZSIpOwotCi0gIGNsZWFudXBfZWxlbWVudCAocGFyc2UpOwotfQotCi1zdGF0aWMgdm9pZAotdGVzdF9wYXJzZSAoZ2Jvb2xlYW4gY2xlYW5fcG9pbnQsIGdib29sZWFuIGRpc2NvbnQpCi17Ci0gIEdzdEVsZW1lbnQgKnBhcnNlOwotICBHc3RCdWZmZXIgKnJ0cCwgKmJ1ZjsKLSAgR3N0U2VnbWVudCBzZWdtZW50OwotCi0gIHBhcnNlID0gc2V0dXBfcnRwb252aWZwYXJzZSAoRkFMU0UpOwotCi0gIHJ0cCA9IGdzdF9ydHBfYnVmZmVyX25ld19hbGxvY2F0ZSAoNCwgMCwgMCk7Ci0gIGJ1ZiA9IGNyZWF0ZV9leHRlbnNpb25fYnVmZmVyIChydHAsIGNsZWFuX3BvaW50LCBGQUxTRSwgZGlzY29udCk7Ci0gIGdzdF9idWZmZXJfdW5yZWYgKHJ0cCk7Ci0KLSAgLyogc3RyZWFtIHN0YXJ0ICovCi0gIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15c3JjcGFkLAotICAgICAgICAgIGdzdF9ldmVudF9uZXdfc3RyZWFtX3N0YXJ0ICgidGVzdCIpKSk7Ci0KLSAgLyogUHVzaCBhIHNlZ21lbnQgKi8KLSAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSk7Ci0gIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15c3JjcGFkLCBnc3RfZXZlbnRfbmV3X3NlZ21lbnQgKCZzZWdtZW50KSkpOwotCi0gIC8qIFB1c2ggYnVmZmVyICovCi0gIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWYpID09IEdTVF9GTE9XX09LLAotICAgICAgImZhaWxlZCBwdXNoaW5nIGJ1ZmZlciIpOwotCi0gIGdfYXNzZXJ0X2NtcHVpbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCA9PSwgMSk7Ci0gIGJ1ZiA9IGJ1ZmZlcnMtPmRhdGE7Ci0KLSAgaWYgKGNsZWFuX3BvaW50KQotICAgIGdfYXNzZXJ0ICghR1NUX0JVRkZFUl9GTEFHX0lTX1NFVCAoYnVmLCBHU1RfQlVGRkVSX0ZMQUdfREVMVEFfVU5JVCkpOwotICBlbHNlCi0gICAgZ19hc3NlcnQgKEdTVF9CVUZGRVJfRkxBR19JU19TRVQgKGJ1ZiwgR1NUX0JVRkZFUl9GTEFHX0RFTFRBX1VOSVQpKTsKLQotICBpZiAoZGlzY29udCkKLSAgICBnX2Fzc2VydCAoR1NUX0JVRkZFUl9JU19ESVNDT05UIChidWYpKTsKLSAgZWxzZQotICAgIGdfYXNzZXJ0ICghR1NUX0JVRkZFUl9JU19ESVNDT05UIChidWYpKTsKLQotICBnX2xpc3RfZm9yZWFjaCAoYnVmZmVycywgKEdGdW5jKSBnc3RfbWluaV9vYmplY3RfdW5yZWYsIE5VTEwpOwotICBnX2xpc3RfZnJlZSAoYnVmZmVycyk7Ci0gIGJ1ZmZlcnMgPSBOVUxMOwotCi0gIEFTU0VSVF9PQkpFQ1RfUkVGQ09VTlQgKHBhcnNlLCAicnRwb252aWZwYXJzZSIsIDEpOwotICBjbGVhbnVwX3J0cG9udmlmcGFyc2UgKHBhcnNlKTsKLX0KLQotR1NUX1NUQVJUX1RFU1QgKHRlc3RfcGFyc2Vfbm9fZmxhZykKLXsKLSAgdGVzdF9wYXJzZSAoRkFMU0UsIEZBTFNFKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9wYXJzZV9jbGVhbl9wb2ludCkKLXsKLSAgdGVzdF9wYXJzZSAoVFJVRSwgRkFMU0UpOwotfQotCi1HU1RfRU5EX1RFU1Q7Ci0KLUdTVF9TVEFSVF9URVNUICh0ZXN0X3BhcnNlX2Rpc2NvbnQpCi17Ci0gIHRlc3RfcGFyc2UgKEZBTFNFLCBUUlVFKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1zdGF0aWMgU3VpdGUgKgotb252aWZ0aW1lc3RhbXBfc3VpdGUgKHZvaWQpCi17Ci0gIFN1aXRlICpzID0gc3VpdGVfY3JlYXRlICgib252aWZ0aW1lc3RhbXAiKTsKLSAgVENhc2UgKnRjX2NoYWluOwotCi0gIHRjX2NoYWluID0gdGNhc2VfY3JlYXRlICgiYXBwbHkiKTsKLSAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19jaGFpbik7Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9hcHBseV9kaXNjb250KTsKLSAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2FwcGx5X25vdF9kaXNjb250KTsKLSAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2FwcGx5X2NsZWFuX3BvaW50KTsKLSAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2FwcGx5X25vX2VfYml0KTsKLSAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2FwcGx5X2VfYml0KTsKLQotICB0Y19jaGFpbiA9IHRjYXNlX2NyZWF0ZSAoInBhcnNlIik7Ci0gIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfY2hhaW4pOwotICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfcGFyc2Vfbm9fZmxhZyk7Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9wYXJzZV9jbGVhbl9wb2ludCk7Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9wYXJzZV9kaXNjb250KTsKLQotICByZXR1cm4gczsKLX0KLQotR1NUX0NIRUNLX01BSU4gKG9udmlmdGltZXN0YW1wKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3J0cG9udmlmcGFyc2UuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3J0cG9udmlmcGFyc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjUxYWM4Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwb252aWZwYXJzZS5jCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogb252aWZ0aW1lc3RhbXAuYworICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBeGlzIENvbW11bmljYXRpb25zIEFCCisgKiAgQXV0aG9yOiBHdWlsbGF1bWUgRGVzbW90dGVzIDxndWlsbGF1bWUuZGVzbW90dGVzQGNvbGxhYm9yYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RjaGVjay5oPgorI2luY2x1ZGUgPGdzdC9ydHAvZ3N0cnRwYnVmZmVyLmg+CisKKy8qIEZvciBlYXNlIG9mIHByb2dyYW1taW5nIHdlIHVzZSBnbG9iYWxzIHRvIGtlZXAgcmVmcyBmb3Igb3VyIGZsb2F0aW5nCisgKiBzcmMgYW5kIHNpbmsgcGFkcyB3ZSBjcmVhdGU7IG90aGVyd2lzZSB3ZSBhbHdheXMgaGF2ZSB0byBkbyBnZXRfcGFkLAorICogZ2V0X3BlZXIsIGFuZCB0aGVuIHJlbW92ZSByZWZlcmVuY2VzIGluIGV2ZXJ5IHRlc3QgZnVuY3Rpb24gKi8KK3N0YXRpYyBHc3RQYWQgKm15c3JjcGFkLCAqbXlzaW5rcGFkOworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKKyAgICBHU1RfUEFEX1NJTkssCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTICgiYXBwbGljYXRpb24veC1ydHAiKQorICAgICk7CitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc3JjdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCisgICAgR1NUX1BBRF9TUkMsCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTICgiYXBwbGljYXRpb24veC1ydHAiKQorICAgICk7CisKKyNkZWZpbmUgTlRQX09GRlNFVCAoZ3VpbnQ2NCkgMTI0NQorI2RlZmluZSBUSU1FU1RBTVAgNDIKKworc3RhdGljIHZvaWQKK3NldHVwX2VsZW1lbnQgKEdzdEVsZW1lbnQgKiBlbGVtZW50KQoreworICBteXNyY3BhZCA9IGdzdF9jaGVja19zZXR1cF9zcmNfcGFkIChlbGVtZW50LCAmc3JjdGVtcGxhdGUpOworICBteXNpbmtwYWQgPSBnc3RfY2hlY2tfc2V0dXBfc2lua19wYWQgKGVsZW1lbnQsICZzaW5rdGVtcGxhdGUpOworICBnc3RfcGFkX3NldF9hY3RpdmUgKG15c3JjcGFkLCBUUlVFKTsKKyAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNpbmtwYWQsIFRSVUUpOworCisgIGZhaWxfdW5sZXNzIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKGVsZW1lbnQsCisgICAgICAgICAgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUywKKyAgICAgICJjb3VsZCBub3Qgc2V0IHRvIHBsYXlpbmciKTsKK30KKworc3RhdGljIHZvaWQKK2NsZWFudXBfZWxlbWVudCAoR3N0RWxlbWVudCAqIGVsZW1lbnQpCit7CisgIGZhaWxfdW5sZXNzIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKGVsZW1lbnQsCisgICAgICAgICAgR1NUX1NUQVRFX05VTEwpID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUywgImNvdWxkIG5vdCBzZXQgdG8gbnVsbCIpOworCisgIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlzcmNwYWQsIEZBTFNFKTsKKyAgaWYgKG15c2lua3BhZCkKKyAgICBnc3RfcGFkX3NldF9hY3RpdmUgKG15c2lua3BhZCwgRkFMU0UpOworICBnc3RfY2hlY2tfdGVhcmRvd25fc3JjX3BhZCAoZWxlbWVudCk7CisgIGdzdF9jaGVja190ZWFyZG93bl9zaW5rX3BhZCAoZWxlbWVudCk7CisgIGdzdF9jaGVja190ZWFyZG93bl9lbGVtZW50IChlbGVtZW50KTsKKyAgbXlzcmNwYWQgPSBOVUxMOworICBteXNpbmtwYWQgPSBOVUxMOworfQorCitzdGF0aWMgZ3VpbnQ2NAorY29udmVydF90b19udHAgKGd1aW50NjQgdCkKK3sKKyAgZ3VpbnQ2NCBudHB0aW1lOworCisgIC8qIGNvbnZlcnQgdG8gTlRQIHRpbWUuIHVwcGVyIDMyIGJpdHMgc2hvdWxkIGNvbnRhaW4gdGhlIHNlY29uZHMKKyAgICogYW5kIHRoZSBsb3dlciAzMiBiaXRzLCB0aGUgZnJhY3Rpb25zIG9mIGEgc2Vjb25kLiAqLworICBudHB0aW1lID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlICh0LCAoR19HSU5UNjRfQ09OU1RBTlQgKDEpIDw8IDMyKSwKKyAgICAgIEdTVF9TRUNPTkQpOworCisgIHJldHVybiBudHB0aW1lOworfQorCisvKiBDcmVhdGUgYSBjb3B5IG9mIEBidWZmZXJfaW4gaGF2aW5nIHRoZSBSVFAgZXh0ZW5zaW9uICovCitzdGF0aWMgR3N0QnVmZmVyICoKK2NyZWF0ZV9leHRlbnNpb25fYnVmZmVyIChHc3RCdWZmZXIgKiBidWZmZXJfaW4sIGdib29sZWFuIGNsZWFuX3BvaW50LAorICAgIGdib29sZWFuIGVuZF9jb250aWd1b3VzLCBnYm9vbGVhbiBkaXNjb250KQoreworICBHc3RCdWZmZXIgKmJ1ZmZlcl9vdXQ7CisgIEdzdFJUUEJ1ZmZlciBydHBidWZmZXJfb3V0ID0gR1NUX1JUUF9CVUZGRVJfSU5JVDsKKyAgZ3VpbnQ4ICpkYXRhOworICBndWludDggZmxhZ3MgPSAwOworCisgIGJ1ZmZlcl9vdXQgPSBnc3RfYnVmZmVyX2NvcHkgKGJ1ZmZlcl9pbik7CisKKyAgZmFpbF91bmxlc3MgKGdzdF9ydHBfYnVmZmVyX21hcCAoYnVmZmVyX291dCwgR1NUX01BUF9SRUFEV1JJVEUsCisgICAgICAgICAgJnJ0cGJ1ZmZlcl9vdXQpKTsKKworICAvKiBleHRlbnNpb24gKi8KKyAgZ3N0X3J0cF9idWZmZXJfc2V0X2V4dGVuc2lvbl9kYXRhICgmcnRwYnVmZmVyX291dCwgMHhBQkFDLCAzKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9ydHBfYnVmZmVyX2dldF9leHRlbnNpb24gKCZydHBidWZmZXJfb3V0KSk7CisgIGdzdF9ydHBfYnVmZmVyX2dldF9leHRlbnNpb25fZGF0YSAoJnJ0cGJ1ZmZlcl9vdXQsIE5VTEwsIChncG9pbnRlcikgJiBkYXRhLAorICAgICAgTlVMTCk7CisKKyAgLyogTlRQIHRpbWVzdGFtcCAqLworICBHU1RfV1JJVEVfVUlOVDY0X0JFIChkYXRhLCBjb252ZXJ0X3RvX250cCAoYnVmZmVyX2luLT5wdHMgKyBOVFBfT0ZGU0VUKSk7CisKKyAgLyogQyBFIEQgbWJ6ICovCisgIGlmIChjbGVhbl9wb2ludCkKKyAgICBmbGFncyB8PSAoMSA8PCA3KTsKKyAgaWYgKGVuZF9jb250aWd1b3VzKQorICAgIGZsYWdzIHw9ICgxIDw8IDYpOworICBpZiAoZGlzY29udCkKKyAgICBmbGFncyB8PSAoMSA8PCA1KTsKKworICBHU1RfV1JJVEVfVUlOVDggKGRhdGEgKyA4LCBmbGFncyk7CisKKyAgLyogQ1NlcSAqLworICBHU1RfV1JJVEVfVUlOVDggKGRhdGEgKyA5LCAweDc4KTsKKworICBtZW1zZXQgKGRhdGEgKyAxMCwgMCwgNCk7CisKKyAgZ3N0X3J0cF9idWZmZXJfdW5tYXAgKCZydHBidWZmZXJfb3V0KTsKKworICByZXR1cm4gYnVmZmVyX291dDsKK30KKworc3RhdGljIEdzdEVsZW1lbnQgKgorc2V0dXBfcnRwb252aWZwYXJzZSAoZ2Jvb2xlYW4gc2V0X2VfYml0KQoreworICBHc3RFbGVtZW50ICpwYXJzZTsKKworICBHU1RfREVCVUcgKCJzZXR1cF9ydHBvbnZpZnBhcnNlIik7CisgIHBhcnNlID0gZ3N0X2NoZWNrX3NldHVwX2VsZW1lbnQgKCJydHBvbnZpZnBhcnNlIik7CisKKyAgc2V0dXBfZWxlbWVudCAocGFyc2UpOworCisgIHJldHVybiBwYXJzZTsKK30KKworc3RhdGljIHZvaWQKK2NsZWFudXBfcnRwb252aWZwYXJzZSAoR3N0RWxlbWVudCAqIHBhcnNlKQoreworICBHU1RfREVCVUcgKCJjbGVhbnVwX3J0cG9udmlmcGFyc2UiKTsKKworICBjbGVhbnVwX2VsZW1lbnQgKHBhcnNlKTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RfcGFyc2UgKGdib29sZWFuIGNsZWFuX3BvaW50LCBnYm9vbGVhbiBkaXNjb250KQoreworICBHc3RFbGVtZW50ICpwYXJzZTsKKyAgR3N0QnVmZmVyICpydHAsICpidWY7CisgIEdzdFNlZ21lbnQgc2VnbWVudDsKKworICBwYXJzZSA9IHNldHVwX3J0cG9udmlmcGFyc2UgKEZBTFNFKTsKKworICBydHAgPSBnc3RfcnRwX2J1ZmZlcl9uZXdfYWxsb2NhdGUgKDQsIDAsIDApOworICBidWYgPSBjcmVhdGVfZXh0ZW5zaW9uX2J1ZmZlciAocnRwLCBjbGVhbl9wb2ludCwgRkFMU0UsIGRpc2NvbnQpOworICBnc3RfYnVmZmVyX3VucmVmIChydHApOworCisgIC8qIHN0cmVhbSBzdGFydCAqLworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwKKyAgICAgICAgICBnc3RfZXZlbnRfbmV3X3N0cmVhbV9zdGFydCAoInRlc3QiKSkpOworCisgIC8qIFB1c2ggYSBzZWdtZW50ICovCisgIGdzdF9zZWdtZW50X2luaXQgKCZzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwgZ3N0X2V2ZW50X25ld19zZWdtZW50ICgmc2VnbWVudCkpKTsKKworICAvKiBQdXNoIGJ1ZmZlciAqLworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmKSA9PSBHU1RfRkxPV19PSywKKyAgICAgICJmYWlsZWQgcHVzaGluZyBidWZmZXIiKTsKKworICBnX2Fzc2VydF9jbXB1aW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgPT0sIDEpOworICBidWYgPSBidWZmZXJzLT5kYXRhOworCisgIGlmIChjbGVhbl9wb2ludCkKKyAgICBnX2Fzc2VydCAoIUdTVF9CVUZGRVJfRkxBR19JU19TRVQgKGJ1ZiwgR1NUX0JVRkZFUl9GTEFHX0RFTFRBX1VOSVQpKTsKKyAgZWxzZQorICAgIGdfYXNzZXJ0IChHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUIChidWYsIEdTVF9CVUZGRVJfRkxBR19ERUxUQV9VTklUKSk7CisKKyAgaWYgKGRpc2NvbnQpCisgICAgZ19hc3NlcnQgKEdTVF9CVUZGRVJfSVNfRElTQ09OVCAoYnVmKSk7CisgIGVsc2UKKyAgICBnX2Fzc2VydCAoIUdTVF9CVUZGRVJfSVNfRElTQ09OVCAoYnVmKSk7CisKKyAgZ19saXN0X2ZvcmVhY2ggKGJ1ZmZlcnMsIChHRnVuYykgZ3N0X21pbmlfb2JqZWN0X3VucmVmLCBOVUxMKTsKKyAgZ19saXN0X2ZyZWUgKGJ1ZmZlcnMpOworICBidWZmZXJzID0gTlVMTDsKKworICBBU1NFUlRfT0JKRUNUX1JFRkNPVU5UIChwYXJzZSwgInJ0cG9udmlmcGFyc2UiLCAxKTsKKyAgY2xlYW51cF9ydHBvbnZpZnBhcnNlIChwYXJzZSk7Cit9CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3BhcnNlX25vX2ZsYWcpCit7CisgIHRlc3RfcGFyc2UgKEZBTFNFLCBGQUxTRSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfcGFyc2VfY2xlYW5fcG9pbnQpCit7CisgIHRlc3RfcGFyc2UgKFRSVUUsIEZBTFNFKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF9wYXJzZV9kaXNjb250KQoreworICB0ZXN0X3BhcnNlIChGQUxTRSwgVFJVRSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIFN1aXRlICoKK29udmlmdGltZXN0YW1wX3N1aXRlICh2b2lkKQoreworICBTdWl0ZSAqcyA9IHN1aXRlX2NyZWF0ZSAoIm9udmlmdGltZXN0YW1wIik7CisgIFRDYXNlICp0Y19jaGFpbjsKKworICB0Y19jaGFpbiA9IHRjYXNlX2NyZWF0ZSAoInBhcnNlIik7CisgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfY2hhaW4pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfcGFyc2Vfbm9fZmxhZyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9wYXJzZV9jbGVhbl9wb2ludCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9wYXJzZV9kaXNjb250KTsKKworICByZXR1cm4gczsKK30KKworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgIGludCBuZjsKKyAgU3VpdGUgKnMgPSBvbnZpZnRpbWVzdGFtcF9zdWl0ZSAoKTsKKyAgU1J1bm5lciAqc3IgPSBzcnVubmVyX2NyZWF0ZSAocyk7CisKKyAgZ3N0X2NoZWNrX2luaXQgKCZhcmdjLCAmYXJndik7CisKKyAgc3J1bm5lcl9ydW5fYWxsIChzciwgQ0tfTk9STUFMKTsKKyAgbmYgPSBzcnVubmVyX250ZXN0c19mYWlsZWQgKHNyKTsKKyAgc3J1bm5lcl9mcmVlIChzcik7CisKKyAgcmV0dXJuIG5mOworfQpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk0MTNhOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMKQEAgLTAsMCArMSw3ODYgQEAKKy8qCisgKiBvbnZpZnRpbWVzdGFtcC5jCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEF4aXMgQ29tbXVuaWNhdGlvbnMgQUIKKyAqICBBdXRob3I6IEd1aWxsYXVtZSBEZXNtb3R0ZXMgPGd1aWxsYXVtZS5kZXNtb3R0ZXNAY29sbGFib3JhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+CisjaW5jbHVkZSA8Z3N0L3J0cC9nc3RydHBidWZmZXIuaD4KKworLyogRm9yIGVhc2Ugb2YgcHJvZ3JhbW1pbmcgd2UgdXNlIGdsb2JhbHMgdG8ga2VlcCByZWZzIGZvciBvdXIgZmxvYXRpbmcKKyAqIHNyYyBhbmQgc2luayBwYWRzIHdlIGNyZWF0ZTsgb3RoZXJ3aXNlIHdlIGFsd2F5cyBoYXZlIHRvIGRvIGdldF9wYWQsCisgKiBnZXRfcGVlciwgYW5kIHRoZW4gcmVtb3ZlIHJlZmVyZW5jZXMgaW4gZXZlcnkgdGVzdCBmdW5jdGlvbiAqLworc3RhdGljIEdzdEVsZW1lbnQgKmVsZW1lbnQ7CitzdGF0aWMgR3N0UGFkICpteXNyY3BhZDsKK3N0YXRpYyBHc3RQYWQgKm15c2lua3BhZDsKKy8qIFRoZXNlIGFyZSBnbG9iYWwgbWFpbmx5IGJlY2F1c2UgdGhleSBhcmUgdXNlZCBmcm9tIHRoZSBzZXR1cC9jbGVhbnVwCisgKiBmaXh0dXJlIGZ1bmN0aW9ucyAqLworc3RhdGljIGd1bG9uZyBteXByb2JlOworc3RhdGljIEdMaXN0ICpteXB1c2hlZGV2ZW50czsKK3N0YXRpYyBHTGlzdCAqbXlyZWNlaXZlZGV2ZW50czsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmt0ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCisgICAgR1NUX1BBRF9TSU5LLAorICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUyAoImFwcGxpY2F0aW9uL3gtcnRwIikKKyAgICApOworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAorICAgIEdTVF9QQURfU1JDLAorICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUyAoImFwcGxpY2F0aW9uL3gtcnRwIikKKyAgICApOworCisjZGVmaW5lIE5UUF9PRkZTRVQgICgoZ3VpbnQ2NCkgMTI0NSkKKyNkZWZpbmUgVElNRVNUQU1QICAgKChHc3RDbG9ja1RpbWUpNDIpCisjZGVmaW5lIENTRVEgICAgICAgIDB4NzgKKyNkZWZpbmUgQ09NUEFSRSAgICAgVFJVRQorI2RlZmluZSBOT19DT01QQVJFICBGQUxTRQorCitzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4KK2V2ZW50X3Byb2JlIChHc3RQYWQgKiBwYWQsIEdzdFBhZFByb2JlSW5mbyAqIGluZm8sIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0RXZlbnQgKmV2ZW50ID0gR1NUX1BBRF9QUk9CRV9JTkZPX0VWRU5UIChpbmZvKTsKKworICBHU1RfSU5GTyAoImdvdCAlIiBHU1RfUFRSX0ZPUk1BVCwgZXZlbnQpOworICBteXJlY2VpdmVkZXZlbnRzID0gZ19saXN0X2FwcGVuZCAobXlyZWNlaXZlZGV2ZW50cywgZ3N0X2V2ZW50X3JlZiAoZXZlbnQpKTsKKworICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKK30KKworc3RhdGljIEdzdEV2ZW50ICoKK2NyZWF0ZV9udHBfb2Zmc2V0X2V2ZW50IChHc3RDbG9ja1RpbWUgbnRwX29mZnNldCwgZ2Jvb2xlYW4gZGlzY29udCkKK3sKKyAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmU7CisKKyAgc3RydWN0dXJlID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJHc3ROdHBPZmZzZXQiLCAibnRwLW9mZnNldCIsIEdfVFlQRV9VSU5UNjQsCisgICAgICBudHBfb2Zmc2V0LCAiZGlzY29udCIsIEdfVFlQRV9CT09MRUFOLCBkaXNjb250LCBOVUxMKTsKKworICByZXR1cm4gZ3N0X2V2ZW50X25ld19jdXN0b20gKEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTSwgc3RydWN0dXJlKTsKK30KKworc3RhdGljIEdzdEV2ZW50ICoKK2NyZWF0ZV9ldmVudCAoR3N0RXZlbnRUeXBlIHR5cGUpCit7CisgIEdzdEV2ZW50ICpldmVudCA9IE5VTEw7CisKKyAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU06CisgICAgICBldmVudCA9IGdzdF9ldmVudF9uZXdfY3VzdG9tIChHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU0sCisgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcgKCJ4LWFwcC90ZXN0IiwgInRlc3QtZmllbGQiLCBHX1RZUEVfU1RSSU5HLAorICAgICAgICAgICAgICAidGVzdC12YWx1ZSIsIE5VTEwpKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQjoKKyAgICAgIGV2ZW50ID0gZ3N0X2V2ZW50X25ld19jdXN0b20gKEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTV9PT0IsCisgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcgKCJ4LWFwcC90ZXN0IiwgInRlc3QtZmllbGQiLCBHX1RZUEVfU1RSSU5HLAorICAgICAgICAgICAgICAidGVzdC12YWx1ZSIsIE5VTEwpKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0VWRU5UX0VPUzoKKyAgICAgIGV2ZW50ID0gZ3N0X2V2ZW50X25ld19lb3MgKCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiBldmVudDsKK30KKworc3RhdGljIHZvaWQKK2NyZWF0ZV9hbmRfcHVzaF9ldmVudCAoR3N0RXZlbnRUeXBlIHR5cGUpCit7CisgIEdzdEV2ZW50ICpldmVudCA9IGNyZWF0ZV9ldmVudCAodHlwZSk7CisKKyAgbXlwdXNoZWRldmVudHMgPSBnX2xpc3RfYXBwZW5kIChteXB1c2hlZGV2ZW50cywgZXZlbnQpOworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwgZXZlbnQpKTsKK30KKworc3RhdGljIHZvaWQKK2NoZWNrX2FuZF9jbGVhcl9ldmVudHMgKGdpbnQgZXhwZWN0ZWQsIGdib29sZWFuIGNvbXBhcmUpCit7CisgIEdMaXN0ICpwOworICBHTGlzdCAqcjsKKworICAvKiB2ZXJpZnkgdGhhdCB0aGVyZSdzIGFzIG1hbnkgcXVldWVkIGV2ZW50cyBhcyBleHBlY3RlZCAqLworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChteXJlY2VpdmVkZXZlbnRzKSwgZXhwZWN0ZWQpOworCisgIGlmIChjb21wYXJlKSB7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZXhwZWN0ZWQsIGdfbGlzdF9sZW5ndGggKG15cHVzaGVkZXZlbnRzKSk7CisKKyAgICAvKiB2ZXJpZnkgdGhhdCB0aGUgZXZlbnRzIGFyZSBxdWV1ZWQgaW4gdGhlIGV4cGVjdGVkIG9yZGVyICovCisgICAgciA9IG15cmVjZWl2ZWRldmVudHM7CisgICAgcCA9IG15cHVzaGVkZXZlbnRzOworCisgICAgd2hpbGUgKHAgIT0gTlVMTCkgeworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX3BvaW50ZXIgKHAtPmRhdGEsIHItPmRhdGEpOworICAgICAgcCA9IGdfbGlzdF9uZXh0IChwKTsKKyAgICAgIHIgPSBnX2xpc3RfbmV4dCAocik7CisgICAgfQorICB9CisKKyAgZ19saXN0X2ZyZWVfZnVsbCAobXlyZWNlaXZlZGV2ZW50cywgKEdEZXN0cm95Tm90aWZ5KSBnc3RfZXZlbnRfdW5yZWYpOworICBteXJlY2VpdmVkZXZlbnRzID0gTlVMTDsKKyAgZ19saXN0X2ZyZWUgKG15cHVzaGVkZXZlbnRzKTsKKyAgbXlwdXNoZWRldmVudHMgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZAorc2V0dXAgKHZvaWQpCit7CisgIGVsZW1lbnQgPSBnc3RfY2hlY2tfc2V0dXBfZWxlbWVudCAoInJ0cG9udmlmdGltZXN0YW1wIik7CisKKyAgbXlzaW5rcGFkID0gZ3N0X2NoZWNrX3NldHVwX3NpbmtfcGFkIChlbGVtZW50LCAmc2lua3RlbXBsYXRlKTsKKyAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNpbmtwYWQsIFRSVUUpOworCisgIG15c3JjcGFkID0gZ3N0X2NoZWNrX3NldHVwX3NyY19wYWQgKGVsZW1lbnQsICZzcmN0ZW1wbGF0ZSk7CisgIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlzcmNwYWQsIFRSVUUpOworfQorCitzdGF0aWMgdm9pZAorY2xlYW51cCAodm9pZCkKK3sKKyAgZ3N0X2NoZWNrX2Ryb3BfYnVmZmVycyAoKTsKKworICBnc3RfcGFkX3NldF9hY3RpdmUgKG15c3JjcGFkLCBGQUxTRSk7CisgIGdzdF9jaGVja190ZWFyZG93bl9zcmNfcGFkIChlbGVtZW50KTsKKyAgbXlzcmNwYWQgPSBOVUxMOworCisgIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlzaW5rcGFkLCBGQUxTRSk7CisgIGdzdF9jaGVja190ZWFyZG93bl9zaW5rX3BhZCAoZWxlbWVudCk7CisgIG15c2lua3BhZCA9IE5VTEw7CisKKyAgZ3N0X2NoZWNrX3RlYXJkb3duX2VsZW1lbnQgKGVsZW1lbnQpOworICBlbGVtZW50ID0gTlVMTDsKKworICBnc3RfY2hlY2tfZHJvcF9idWZmZXJzICgpOworfQorCitzdGF0aWMgdm9pZAorc2V0dXBfd2l0aF9ldmVudCAodm9pZCkKK3sKKyAgc2V0dXAgKCk7CisKKyAgbXlwcm9iZSA9IGdzdF9wYWRfYWRkX3Byb2JlIChteXNpbmtwYWQsCisgICAgICBHU1RfUEFEX1BST0JFX1RZUEVfRVZFTlRfRE9XTlNUUkVBTSwgZXZlbnRfcHJvYmUsIE5VTEwsIE5VTEwpOworICBteXJlY2VpdmVkZXZlbnRzID0gTlVMTDsKKyAgbXlwdXNoZWRldmVudHMgPSBOVUxMOworfQorCitzdGF0aWMgdm9pZAorY2xlYW51cF93aXRoX2V2ZW50ICh2b2lkKQoreworICBnc3RfcGFkX3JlbW92ZV9wcm9iZSAobXlzaW5rcGFkLCBteXByb2JlKTsKKyAgbXlwcm9iZSA9IDA7CisgIG15cmVjZWl2ZWRldmVudHMgPSBOVUxMOworICBteXB1c2hlZGV2ZW50cyA9IE5VTEw7CisKKyAgY2xlYW51cCAoKTsKK30KKworc3RhdGljIHZvaWQKK2NoZWNrX2J1ZmZlcl9lcXVhbCAoR3N0QnVmZmVyICogYnVmLCBHc3RCdWZmZXIgKiBleHBlY3RlZCkKK3sKKyAgR3N0TWFwSW5mbyBpbmZvX2J1ZiwgaW5mb19leHBlY3RlZDsKKworICBmYWlsX2lmIChidWYgPT0gTlVMTCk7CisgIGZhaWxfaWYgKGV4cGVjdGVkID09IE5VTEwpOworCisgIGZhaWxfdW5sZXNzIChnc3RfYnVmZmVyX21hcCAoYnVmLCAmaW5mb19idWYsIEdTVF9NQVBfUkVBRCkpOworICBmYWlsX3VubGVzcyAoZ3N0X2J1ZmZlcl9tYXAgKGV4cGVjdGVkLCAmaW5mb19leHBlY3RlZCwgR1NUX01BUF9SRUFEKSk7CisKKyAgR1NUX0xPRyAoImJ1ZmZlcjogc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCwgaW5mb19idWYuc2l6ZSk7CisgIEdTVF9MT0cgKCJleHBlY3RlZDogc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCwgaW5mb19leHBlY3RlZC5zaXplKTsKKyAgR1NUX01FTURVTVAgKCJidWZmZXIiLCBpbmZvX2J1Zi5kYXRhLCBpbmZvX2J1Zi5zaXplKTsKKyAgR1NUX01FTURVTVAgKCJleHBlY3RlZCIsIGluZm9fZXhwZWN0ZWQuZGF0YSwgaW5mb19leHBlY3RlZC5zaXplKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfdWludDY0IChpbmZvX2J1Zi5zaXplLCBpbmZvX2V4cGVjdGVkLnNpemUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChtZW1jbXAgKGluZm9fYnVmLmRhdGEsIGluZm9fZXhwZWN0ZWQuZGF0YSwKKyAgICAgICAgICBpbmZvX2J1Zi5zaXplKSwgMCk7CisKKyAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmaW5mb19idWYpOworICBnc3RfYnVmZmVyX3VubWFwIChleHBlY3RlZCwgJmluZm9fZXhwZWN0ZWQpOworfQorCisvKiBDcmVhdGUgYSBSVFAgYnVmZmVyIHdpdGhvdXQgdGhlIGV4dGVuc2lvbiAqLworc3RhdGljIEdzdEJ1ZmZlciAqCitjcmVhdGVfcnRwX2J1ZmZlciAoR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCwgZ2Jvb2xlYW4gY2xlYW5fcG9pbnQpCit7CisgIEdzdEJ1ZmZlciAqYnVmZmVyX2luOworICBHc3RSVFBCdWZmZXIgcnRwYnVmZmVyX2luID0gR1NUX1JUUF9CVUZGRVJfSU5JVDsKKworICBidWZmZXJfaW4gPSBnc3RfcnRwX2J1ZmZlcl9uZXdfYWxsb2NhdGUgKDAsIDAsIDApOworICBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyX2luKSA9IHRpbWVzdGFtcDsKKworICBpZiAoIWNsZWFuX3BvaW50KQorICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKGJ1ZmZlcl9pbiwgR1NUX0JVRkZFUl9GTEFHX0RFTFRBX1VOSVQpOworCisgIGZhaWxfdW5sZXNzIChnc3RfcnRwX2J1ZmZlcl9tYXAgKGJ1ZmZlcl9pbiwgR1NUX01BUF9SRUFELCAmcnRwYnVmZmVyX2luKSk7CisgIGZhaWxfaWYgKGdzdF9ydHBfYnVmZmVyX2dldF9leHRlbnNpb24gKCZydHBidWZmZXJfaW4pKTsKKyAgZ3N0X3J0cF9idWZmZXJfdW5tYXAgKCZydHBidWZmZXJfaW4pOworCisgIHJldHVybiBidWZmZXJfaW47Cit9CisKK3N0YXRpYyBndWludDY0Citjb252ZXJ0X3RvX250cCAoR3N0Q2xvY2tUaW1lIHQpCit7CisgIGd1aW50NjQgbnRwdGltZTsKKworICAvKiBjb252ZXJ0IHRvIE5UUCB0aW1lLiB1cHBlciAzMiBiaXRzIHNob3VsZCBjb250YWluIHRoZSBzZWNvbmRzCisgICAqIGFuZCB0aGUgbG93ZXIgMzIgYml0cywgdGhlIGZyYWN0aW9ucyBvZiBhIHNlY29uZC4gKi8KKyAgbnRwdGltZSA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAodCwgKEdfR0lOVDY0X0NPTlNUQU5UICgxKSA8PCAzMiksCisgICAgICBHU1RfU0VDT05EKTsKKworICByZXR1cm4gbnRwdGltZTsKK30KKworLyogQ3JlYXRlIGEgY29weSBvZiBAYnVmZmVyX2luIGhhdmluZyB0aGUgUlRQIGV4dGVuc2lvbiAqLworc3RhdGljIEdzdEJ1ZmZlciAqCitjcmVhdGVfZXh0ZW5zaW9uX2J1ZmZlciAoR3N0QnVmZmVyICogYnVmZmVyX2luLCBnYm9vbGVhbiBjbGVhbl9wb2ludCwKKyAgICBnYm9vbGVhbiBlbmRfY29udGlndW91cywgZ2Jvb2xlYW4gZGlzY29udCwgZ3VpbnQ2NCBudHBfb2Zmc2V0LCBndWludDggY3NlcSkKK3sKKyAgR3N0QnVmZmVyICpidWZmZXJfb3V0OworICBHc3RSVFBCdWZmZXIgcnRwYnVmZmVyX291dCA9IEdTVF9SVFBfQlVGRkVSX0lOSVQ7CisgIGd1aW50OCAqZGF0YTsKKyAgZ3VpbnQ4IGZsYWdzID0gMDsKKworICBidWZmZXJfb3V0ID0gZ3N0X2J1ZmZlcl9jb3B5IChidWZmZXJfaW4pOworCisgIGZhaWxfdW5sZXNzIChnc3RfcnRwX2J1ZmZlcl9tYXAgKGJ1ZmZlcl9vdXQsIEdTVF9NQVBfUkVBRFdSSVRFLAorICAgICAgICAgICZydHBidWZmZXJfb3V0KSk7CisKKyAgLyogZXh0ZW5zaW9uICovCisgIGZhaWxfdW5sZXNzIChnc3RfcnRwX2J1ZmZlcl9zZXRfZXh0ZW5zaW9uX2RhdGEgKCZydHBidWZmZXJfb3V0LCAweEFCQUMsIDMpKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9ydHBfYnVmZmVyX2dldF9leHRlbnNpb24gKCZydHBidWZmZXJfb3V0KSk7CisgIGZhaWxfdW5sZXNzIChnc3RfcnRwX2J1ZmZlcl9nZXRfZXh0ZW5zaW9uX2RhdGEgKCZydHBidWZmZXJfb3V0LCBOVUxMLAorICAgICAgICAgIChncG9pbnRlcikgJiBkYXRhLCBOVUxMKSk7CisKKyAgLyogTlRQIHRpbWVzdGFtcCAqLworICBHU1RfV1JJVEVfVUlOVDY0X0JFIChkYXRhLCBjb252ZXJ0X3RvX250cCAoR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcl9pbikgKworICAgICAgICAgIG50cF9vZmZzZXQpKTsKKworICAvKiBDIEUgRCBtYnogKi8KKyAgaWYgKGNsZWFuX3BvaW50KQorICAgIGZsYWdzIHw9ICgxIDw8IDcpOworICBpZiAoZW5kX2NvbnRpZ3VvdXMpCisgICAgZmxhZ3MgfD0gKDEgPDwgNik7CisgIGlmIChkaXNjb250KQorICAgIGZsYWdzIHw9ICgxIDw8IDUpOworCisgIEdTVF9XUklURV9VSU5UOCAoZGF0YSArIDgsIGZsYWdzKTsKKworICAvKiBDU2VxICovCisgIEdTVF9XUklURV9VSU5UOCAoZGF0YSArIDksIGNzZXEpOworCisgIG1lbXNldCAoZGF0YSArIDEwLCAwLCA0KTsKKworICBnc3RfcnRwX2J1ZmZlcl91bm1hcCAoJnJ0cGJ1ZmZlcl9vdXQpOworCisgIHJldHVybiBidWZmZXJfb3V0OworfQorCitzdGF0aWMgdm9pZAorZG9fb25lX2J1ZmZlcl90ZXN0X2FwcGx5IChnYm9vbGVhbiBjbGVhbl9wb2ludCkKK3sKKyAgR3N0QnVmZmVyICpidWZmZXJfaW4sICpidWZmZXJfb3V0OworCisgIGdfb2JqZWN0X3NldCAoZWxlbWVudCwgIm50cC1vZmZzZXQiLCBOVFBfT0ZGU0VULCAiY3NlcSIsIDB4MTIzNDU2NzgsCisgICAgICAic2V0LWUtYml0IiwgRkFMU0UsIE5VTEwpOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9QTEFZSU5HLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworCisgIGJ1ZmZlcl9pbiA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAsIGNsZWFuX3BvaW50KTsKKyAgYnVmZmVyX291dCA9IGNyZWF0ZV9leHRlbnNpb25fYnVmZmVyIChidWZmZXJfaW4sIGNsZWFuX3BvaW50LCBGQUxTRSwgRkFMU0UsCisgICAgICBOVFBfT0ZGU0VULCBDU0VRKTsKKworICAvKiBwdXNoIGluaXRpYWwgZXZlbnRzICovCisgIGdzdF9jaGVja19zZXR1cF9ldmVudHMgKG15c3JjcGFkLCBlbGVtZW50LCBOVUxMLCBHU1RfRk9STUFUX1RJTUUpOworCisgIC8qIFB1c2ggYnVmZmVyICovCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlcl9pbiksIEdTVF9GTE9XX09LKTsKKworICBjaGVja19idWZmZXJfZXF1YWwgKChHc3RCdWZmZXIgKikgYnVmZmVycy0+ZGF0YSwgYnVmZmVyX291dCk7CisgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcl9vdXQpOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9OVUxMLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworfQorCitzdGF0aWMgdm9pZAorZG9fdHdvX2J1ZmZlcnNfdGVzdF9hcHBseSAoZ2Jvb2xlYW4gZW5kX2NvbnRpZ3VvdXMpCit7CisgIEdzdEJ1ZmZlciAqYnVmZmVyX2luLCAqYnVmZmVyX291dDsKKyAgR0xpc3QgKm5vZGU7CisKKyAgZ19vYmplY3Rfc2V0IChlbGVtZW50LCAibnRwLW9mZnNldCIsIE5UUF9PRkZTRVQsICJjc2VxIiwgMHgxMjM0NTY3OCwKKyAgICAgICJzZXQtZS1iaXQiLCBUUlVFLCBOVUxMKTsKKworICBBU1NFUlRfU0VUX1NUQVRFIChlbGVtZW50LCBHU1RfU1RBVEVfUExBWUlORywgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKKworICBidWZmZXJfaW4gPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QLCBGQUxTRSk7CisgIGJ1ZmZlcl9vdXQgPSBjcmVhdGVfZXh0ZW5zaW9uX2J1ZmZlciAoYnVmZmVyX2luLCBGQUxTRSwgZW5kX2NvbnRpZ3VvdXMsCisgICAgICBGQUxTRSwgTlRQX09GRlNFVCwgQ1NFUSk7CisKKyAgLyogcHVzaCBpbml0aWFsIGV2ZW50cyAqLworICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteXNyY3BhZCwgZWxlbWVudCwgTlVMTCwgR1NUX0ZPUk1BVF9USU1FKTsKKworICAvKiBQdXNoIGJ1ZmZlciAqLworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXJfaW4pLCBHU1RfRkxPV19PSyk7CisKKyAgLyogVGhlIGJ1ZmZlciBoYXNuJ3QgYmVlbiBwdXNoZWQgaXQgYXMgdGhlIGVsZW1lbnQgaXMgd2FpdGluZyBmb3IgdGhlIG5leHQKKyAgICogYnVmZmVyLiAqLworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgMCk7CisKKyAgLyogcHVzaCBhbiBudHAtb2Zmc2V0IGV2ZW50IHRvIHRyaWdnZXIgYSBkaXNjb250aW51dHkgKi8KKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsCisgICAgICAgICAgY3JlYXRlX250cF9vZmZzZXRfZXZlbnQgKE5UUF9PRkZTRVQsIGVuZF9jb250aWd1b3VzKSkpOworCisgIC8qIEEgc2Vjb25kIGJ1ZmZlciBpcyBwdXNoZWQgKi8KKyAgYnVmZmVyX2luID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCArIDEsIEZBTFNFKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXJfaW4pLCBHU1RfRkxPV19PSyk7CisKKyAgLyogVGhlIGZpcnN0IGJ1ZmZlciBoYXMgbm93IGJlZW4gcHVzaGVkIG91dCAqLworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgMSk7CisKKyAgbm9kZSA9IGdfbGlzdF9sYXN0IChidWZmZXJzKTsKKyAgY2hlY2tfYnVmZmVyX2VxdWFsICgoR3N0QnVmZmVyICopIG5vZGUtPmRhdGEsIGJ1ZmZlcl9vdXQpOworICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXJfb3V0KTsKKworICAvKiBQdXNoIEVPUyAqLworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwgZ3N0X2V2ZW50X25ld19lb3MgKCkpKTsKKworICAvKiBUaGUgc2Vjb25kIGJ1ZmZlciBoYXMgYmVlbiBwdXNoZWQgb3V0ICovCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCAyKTsKKworICAvKiBMYXN0IGJ1ZmZlciBhbHdheXMgaGFzIHRoZSAnRScgZmxhZyAqLworICBidWZmZXJfb3V0ID0gY3JlYXRlX2V4dGVuc2lvbl9idWZmZXIgKGJ1ZmZlcl9pbiwgRkFMU0UsIFRSVUUsIGVuZF9jb250aWd1b3VzLAorICAgICAgTlRQX09GRlNFVCwgQ1NFUSk7CisgIG5vZGUgPSBnX2xpc3RfbGFzdCAoYnVmZmVycyk7CisgIGNoZWNrX2J1ZmZlcl9lcXVhbCAoKEdzdEJ1ZmZlciAqKSBub2RlLT5kYXRhLCBidWZmZXJfb3V0KTsKKyAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyX291dCk7CisKKyAgQVNTRVJUX1NFVF9TVEFURSAoZWxlbWVudCwgR1NUX1NUQVRFX05VTEwsIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7Cit9CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X2FwcGx5X2NsZWFuX3BvaW50KQoreworICBkb19vbmVfYnVmZmVyX3Rlc3RfYXBwbHkgKFRSVUUpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X2FwcGx5X25vX2VfYml0KQoreworICBkb190d29fYnVmZmVyc190ZXN0X2FwcGx5IChGQUxTRSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfYXBwbHlfZV9iaXQpCit7CisgIGRvX3R3b19idWZmZXJzX3Rlc3RfYXBwbHkgKFRSVUUpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X2ZsdXNoaW5nKQoreworICBHc3RCdWZmZXIgKmJ1ZmZlcjsKKworICAvKiBzZXQgdGhlIGUtYml0LCBzbyB0aGUgZWxlbWVudCB1c2UgY2FjaGluZyAqLworICBnX29iamVjdF9zZXQgKGVsZW1lbnQsICJzZXQtZS1iaXQiLCBUUlVFLCBOVUxMKTsKKyAgLyogc2V0IHRoZSBudHAtb2Zmc2V0LCBzaW5jZSBubyBvbmUgd2lsbCBwcm92aWRlIGEgY2xvY2sgKi8KKyAgZ19vYmplY3Rfc2V0IChlbGVtZW50LCAibnRwLW9mZnNldCIsIE5UUF9PRkZTRVQsIE5VTEwpOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9QTEFZSU5HLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteXNyY3BhZCwgZWxlbWVudCwgTlVMTCwgR1NUX0ZPUk1BVF9USU1FKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggdGhlIGZpcnN0IGJ1ZmZlciAqLworICBidWZmZXIgPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworCisgIC8qIG5vIGJ1ZmZlcnMgc2hvdWxkIGhhdmUgbWFkZSBpdCB0aHJvdWdoICovCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCAwKTsKKworICAvKiBmbHVzaCB0aGUgZWxlbWVudCAqLworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwgZ3N0X2V2ZW50X25ld19mbHVzaF9zdGFydCAoKSkpOworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwgZ3N0X2V2ZW50X25ld19mbHVzaF9zdG9wIChGQUxTRSkpKTsKKworICAvKiByZXNlbmQgZXZlbnRzICovCisgIGdzdF9jaGVja19zZXR1cF9ldmVudHMgKG15c3JjcGFkLCBlbGVtZW50LCBOVUxMLCBHU1RfRk9STUFUX1RJTUUpOworCisgIC8qIGNyZWF0ZSBhbmQgcHVzaCBhIHNlY29uZCBidWZmZXIgKi8KKyAgYnVmZmVyID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCArIDEsIFRSVUUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisKKyAgLyogc3RpbGwgbm8gYnVmZmVycyBzaG91bGQgaGF2ZSBtYWRlIGl0IHRocm91Z2ggKHRoZSBmaXJzdCBvbmUgc2hvdWxkIGhhdmUKKyAgICogYmVlbiBkcm9wcGVkIGR1cmluZyBmbHVzaGluZykgKi8KKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksIDApOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9OVUxMLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3JldXNhYmxlX2VsZW1lbnRfbm9fZV9iaXQpCit7CisgIEdzdEJ1ZmZlciAqYnVmZmVyOworCisgIC8qIHNldCB0aGUgbnRwLW9mZnNldCwgc2luY2Ugbm8gb25lIHdpbGwgcHJvdmlkZSBhIGNsb2NrICovCisgIGdfb2JqZWN0X3NldCAoZWxlbWVudCwgIm50cC1vZmZzZXQiLCBOVFBfT0ZGU0VULCBOVUxMKTsKKworICBBU1NFUlRfU0VUX1NUQVRFIChlbGVtZW50LCBHU1RfU1RBVEVfUExBWUlORywgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKKyAgZ3N0X2NoZWNrX3NldHVwX2V2ZW50cyAobXlzcmNwYWQsIGVsZW1lbnQsIE5VTEwsIEdTVF9GT1JNQVRfVElNRSk7CisKKyAgLyogY3JlYXRlIGFuZCBwdXNoIHRoZSBmaXJzdCBidWZmZXIgKi8KKyAgYnVmZmVyID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCwgVFJVRSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlciksIEdTVF9GTE9XX09LKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggYSBzZWNvbmQgYnVmZmVyICovCisgIGJ1ZmZlciA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAgKyAxLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworCisgIC8qIGNyZWF0ZSBhbmQgcHVzaCBhIHRoaXJkIGJ1ZmZlciAqLworICBidWZmZXIgPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QICsgMiwgVFJVRSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlciksIEdTVF9GTE9XX09LKTsKKworICBBU1NFUlRfU0VUX1NUQVRFIChlbGVtZW50LCBHU1RfU1RBVEVfTlVMTCwgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgMyk7CisKKyAgQVNTRVJUX1NFVF9TVEFURSAoZWxlbWVudCwgR1NUX1NUQVRFX1BMQVlJTkcsIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7CisgIGdzdF9jaGVja19zZXR1cF9ldmVudHMgKG15c3JjcGFkLCBlbGVtZW50LCBOVUxMLCBHU1RfRk9STUFUX1RJTUUpOworCisgIC8qIGNyZWF0ZSBhbmQgcHVzaCB0aGUgZmlyc3QgYnVmZmVyICovCisgIGJ1ZmZlciA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAsIFRSVUUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisKKyAgLyogY3JlYXRlIGFuZCBwdXNoIGEgc2Vjb25kIGJ1ZmZlciAqLworICBidWZmZXIgPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QICsgMSwgVFJVRSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlciksIEdTVF9GTE9XX09LKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggYSB0aGlyZCBidWZmZXIgKi8KKyAgYnVmZmVyID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCArIDIsIFRSVUUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisKKyAgQVNTRVJUX1NFVF9TVEFURSAoZWxlbWVudCwgR1NUX1NUQVRFX05VTEwsIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksIDYpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3JldXNhYmxlX2VsZW1lbnRfZV9iaXQpCit7CisgIEdzdEJ1ZmZlciAqYnVmZmVyOworCisgIC8qIHNldCB0aGUgZS1iaXQsIHNvIHRoZSBlbGVtZW50IHVzZSBjYWNoaW5nICovCisgIGdfb2JqZWN0X3NldCAoZWxlbWVudCwgInNldC1lLWJpdCIsIFRSVUUsIE5VTEwpOworICAvKiBzZXQgdGhlIG50cC1vZmZzZXQsIHNpbmNlIG5vIG9uZSB3aWxsIHByb3ZpZGUgYSBjbG9jayAqLworICBnX29iamVjdF9zZXQgKGVsZW1lbnQsICJudHAtb2Zmc2V0IiwgTlRQX09GRlNFVCwgTlVMTCk7CisKKyAgQVNTRVJUX1NFVF9TVEFURSAoZWxlbWVudCwgR1NUX1NUQVRFX1BMQVlJTkcsIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7CisgIGdzdF9jaGVja19zZXR1cF9ldmVudHMgKG15c3JjcGFkLCBlbGVtZW50LCBOVUxMLCBHU1RfRk9STUFUX1RJTUUpOworCisgIC8qIGNyZWF0ZSBhbmQgcHVzaCB0aGUgZmlyc3QgYnVmZmVyICovCisgIGJ1ZmZlciA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAsIFRSVUUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisKKyAgLyogY3JlYXRlIGFuZCBwdXNoIGEgc2Vjb25kIGJ1ZmZlciAqLworICBidWZmZXIgPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QICsgMSwgVFJVRSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlciksIEdTVF9GTE9XX09LKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggYSB0aGlyZCBidWZmZXIgKi8KKyAgYnVmZmVyID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCArIDIsIFRSVUUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisKKyAgQVNTRVJUX1NFVF9TVEFURSAoZWxlbWVudCwgR1NUX1NUQVRFX05VTEwsIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksIDIpOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9QTEFZSU5HLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteXNyY3BhZCwgZWxlbWVudCwgTlVMTCwgR1NUX0ZPUk1BVF9USU1FKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggdGhlIGZpcnN0IGJ1ZmZlciAqLworICBidWZmZXIgPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworCisgIC8qIGNyZWF0ZSBhbmQgcHVzaCBhIHNlY29uZCBidWZmZXIgKi8KKyAgYnVmZmVyID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCArIDEsIFRSVUUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisKKyAgLyogY3JlYXRlIGFuZCBwdXNoIGEgdGhpcmQgYnVmZmVyICovCisgIGJ1ZmZlciA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAgKyAyLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9OVUxMLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCA0KTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF9udHBfb2Zmc2V0X2V2ZW50KQoreworICBHc3RCdWZmZXIgKmJ1ZmZlcl9pbiwgKmJ1ZmZlcjFfb3V0LCAqYnVmZmVyMl9vdXQ7CisgIEdMaXN0ICpub2RlOworCisgIC8qIHNldCB0aGUgZS1iaXQsIHNvIHRoZSBlbGVtZW50IHVzZSBjYWNoaW5nICovCisgIGdfb2JqZWN0X3NldCAoZWxlbWVudCwgInNldC1lLWJpdCIsIFRSVUUsIE5VTEwpOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9QTEFZSU5HLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteXNyY3BhZCwgZWxlbWVudCwgTlVMTCwgR1NUX0ZPUk1BVF9USU1FKTsKKworICAvKiBwdXNoIGFuIG50cC1vZmZzZXQgZXZlbnQgKi8KKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsCisgICAgICAgICAgY3JlYXRlX250cF9vZmZzZXRfZXZlbnQgKE5UUF9PRkZTRVQsIEZBTFNFKSkpOworCisgIC8qIGNyZWF0ZSBhbmQgcHVzaCB0aGUgZmlyc3QgYnVmZmVyICovCisgIGJ1ZmZlcl9pbiA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAsIFRSVUUpOworICBidWZmZXIxX291dCA9IGNyZWF0ZV9leHRlbnNpb25fYnVmZmVyIChidWZmZXJfaW4sIFRSVUUsIFRSVUUsIEZBTFNFLAorICAgICAgTlRQX09GRlNFVCwgMCk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlcl9pbiksIEdTVF9GTE9XX09LKTsKKworICAvKiBwdXNoIGEgbmV3IG50cCBvZmZzZXQgKi8KKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsCisgICAgICAgICAgY3JlYXRlX250cF9vZmZzZXRfZXZlbnQgKDIgKiBOVFBfT0ZGU0VULCBUUlVFKSkpOworCisgIC8qIGNyZWF0ZSBhbmQgcHVzaCBhIHNlY29uZCBidWZmZXIgKGxhc3QpICovCisgIGJ1ZmZlcl9pbiA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAgKyAxLCBUUlVFKTsKKyAgYnVmZmVyMl9vdXQgPSBjcmVhdGVfZXh0ZW5zaW9uX2J1ZmZlciAoYnVmZmVyX2luLCBUUlVFLCBUUlVFLCBUUlVFLAorICAgICAgMiAqIE5UUF9PRkZTRVQsIDApOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXJfaW4pLCBHU1RfRkxPV19PSyk7CisKKyAgLyogdGhlIGZpcnN0IGJ1ZmZlciBzaG91bGQgaGF2ZSBiZWVuIHB1c2hlZCBub3cgKi8KKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksIDEpOworICBub2RlID0gZ19saXN0X2xhc3QgKGJ1ZmZlcnMpOworICBjaGVja19idWZmZXJfZXF1YWwgKChHc3RCdWZmZXIgKikgbm9kZS0+ZGF0YSwgYnVmZmVyMV9vdXQpOworICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIxX291dCk7CisKKyAgLyogcHVzaCBFT1MgKi8KKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKSk7CisKKyAgLyogdGhlIHNlY29uZCBidWZmZXIgaGFzIG5vdyBiZWVuIHB1c2hlZCAqLworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgMik7CisgIG5vZGUgPSBnX2xpc3RfbGFzdCAoYnVmZmVycyk7CisgIGNoZWNrX2J1ZmZlcl9lcXVhbCAoKEdzdEJ1ZmZlciAqKSBub2RlLT5kYXRhLCBidWZmZXIyX291dCk7CisgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcjJfb3V0KTsKKworICBBU1NFUlRfU0VUX1NUQVRFIChlbGVtZW50LCBHU1RfU1RBVEVfTlVMTCwgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF9zZXJpYWxpemVkX2V2ZW50cykKK3sKKyAgR3N0QnVmZmVyICpidWZmZXI7CisKKyAgLyogd2Ugd2FudCB0aGUgZS1iaXQgc2V0IHNvIHRoYXQgYnVmZmVycyBhcmUgY2FjaGVkICovCisgIGdfb2JqZWN0X3NldCAoZWxlbWVudCwgInNldC1lLWJpdCIsIFRSVUUsIE5VTEwpOworICBnX29iamVjdF9zZXQgKGVsZW1lbnQsICJudHAtb2Zmc2V0IiwgTlRQX09GRlNFVCwgTlVMTCk7CisKKyAgQVNTRVJUX1NFVF9TVEFURSAoZWxlbWVudCwgR1NUX1NUQVRFX1BMQVlJTkcsIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7CisKKyAgLyogc2VuZCBpbnRpdGlhbCBldmVudHMgKHN0cmVhbS1zdGFydCBhbmQgc2VnbWVudCkgKi8KKyAgZ3N0X2NoZWNrX3NldHVwX2V2ZW50cyAobXlzcmNwYWQsIGVsZW1lbnQsIE5VTEwsIEdTVF9GT1JNQVRfVElNRSk7CisgIGNoZWNrX2FuZF9jbGVhcl9ldmVudHMgKDIsIE5PX0NPTVBBUkUpOworCisgIC8qIGV2ZW50cyByZWNlaXZlZCB3aGlsZSBubyBidWZmZXIgaXMgY2FjaGVkIHNob3VsZCBiZSBmb3J3YXJkZWQgKi8KKyAgY3JlYXRlX2FuZF9wdXNoX2V2ZW50IChHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU0pOworICBjaGVja19hbmRfY2xlYXJfZXZlbnRzICgxLCBOT19DT01QQVJFKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggdGhlIGZpcnN0IGJ1ZmZlciwgd2hpY2ggc2hvdWxkIGJlIGNhY2hlZCAqLworICBidWZmZXIgPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgMCk7CisgIC8qIHNlcmlhbGl6ZWQgZXZlbnRzIHNob3VsZCBiZSBxdWV1ZWQgd2hlbiB0aGVyZSdzIGEgYnVmZmVyIGNhY2hlZCAqLworICBjcmVhdGVfYW5kX3B1c2hfZXZlbnQgKEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKG15cmVjZWl2ZWRldmVudHMpLCAwKTsKKyAgLyogdGhlcmUncyBzdGlsbCBhIGJ1ZmZlciBjYWNoZWQuLi4gKi8KKyAgY3JlYXRlX2FuZF9wdXNoX2V2ZW50IChHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU0pOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChteXJlY2VpdmVkZXZlbnRzKSwgMCk7CisKKyAgLyogcmVjZWl2aW5nIGEgbmV3IGJ1ZmZlciBzaG91bGQgbGV0IHRoZSBmaXJzdCB0aHJvdWdoLCBhbG9uZyB3aXRoIHRoZQorICAgKiBxdWV1ZWQgc2VyaWFsaXplZCBldmVudHMgICovCisgIGJ1ZmZlciA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAsIFRSVUUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCAxKTsKKyAgY2hlY2tfYW5kX2NsZWFyX2V2ZW50cyAoMiwgQ09NUEFSRSk7CisKKyAgLyogdGhlcmUncyBzdGlsbCBhIGJ1ZmZlciBjYWNoZWQsIGEgbmV3IHNlcmlhbGl6ZWQgZXZlbnQgc2hvdWxkIGJlIHF1dWV1ZCAqLworICBjcmVhdGVfYW5kX3B1c2hfZXZlbnQgKEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKG15cmVjZWl2ZWRldmVudHMpLCAwKTsKKworICAvKiB3aGVuIHJlY2VpdmluZyBhbiBFT1MgY2FjaGVkIGJ1ZmZlciBhbmQgcXVldWVkIGV2ZW50cyBzaG91bGQgYmUgZm9yd2FyZGVkICovCisgIGNyZWF0ZV9hbmRfcHVzaF9ldmVudCAoR1NUX0VWRU5UX0VPUyk7CisgIGNoZWNrX2FuZF9jbGVhcl9ldmVudHMgKDIsIENPTVBBUkUpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X25vbl9zZXJpYWxpemVkX2V2ZW50cykKK3sKKyAgR3N0RXZlbnQgKmV2ZW50OworICBHc3RCdWZmZXIgKmJ1ZmZlcjsKKworICAvKiB3ZSB3YW50IHRoZSBlLWJpdCBzZXQgc28gdGhhdCBidWZmZXJzIGFyZSBjYWNoZWQgKi8KKyAgZ19vYmplY3Rfc2V0IChlbGVtZW50LCAic2V0LWUtYml0IiwgVFJVRSwgTlVMTCk7CisgIGdfb2JqZWN0X3NldCAoZWxlbWVudCwgIm50cC1vZmZzZXQiLCBOVFBfT0ZGU0VULCBOVUxMKTsKKworICBBU1NFUlRfU0VUX1NUQVRFIChlbGVtZW50LCBHU1RfU1RBVEVfUExBWUlORywgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKKworICAvKiBzZW5kIGludGl0aWFsIGV2ZW50cyAoc3RyZWFtLXN0YXJ0IGFuZCBzZWdtZW50KSAqLworICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteXNyY3BhZCwgZWxlbWVudCwgTlVMTCwgR1NUX0ZPUk1BVF9USU1FKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAobXlyZWNlaXZlZGV2ZW50cyksIDIpOworICBjaGVja19hbmRfY2xlYXJfZXZlbnRzICgyLCBOT19DT01QQVJFKTsKKworICAvKiBldmVudHMgcmVjZWl2ZWQgd2hpbGUgbm8gYnVmZmVyIGlzIGNhY2hlZCBzaG91bGQgYmUgZm9yd2FyZGVkICovCisgIGNyZWF0ZV9hbmRfcHVzaF9ldmVudCAoR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQik7CisgIGNoZWNrX2FuZF9jbGVhcl9ldmVudHMgKDEsIENPTVBBUkUpOworCisgIC8qIGNyZWF0ZSBhbmQgcHVzaCB0aGUgZmlyc3QgYnVmZmVyLCB3aGljaCBzaG91bGQgYmUgY2FjaGVkICovCisgIGJ1ZmZlciA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAsIFRSVUUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCAwKTsKKyAgLyogbm9uLXNlcmlhbGl6ZWQgZXZlbnRzIHNob3VsZCBiZSBmb3J3YXJkZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCisgICAqIHRoZXJlIGlzIGEgY2FjaGVkIGJ1ZmZlciAqLworICBjcmVhdGVfYW5kX3B1c2hfZXZlbnQgKEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTV9PT0IpOworICBjaGVja19hbmRfY2xlYXJfZXZlbnRzICgxLCBDT01QQVJFKTsKKworICAvKiB0aGVyZSdzIHN0aWxsIGEgYnVmZmVyIGNhY2hlZCwgcHVzaCBhIHNlcmlhbGl6ZWQgZXZlbnQgYW5kIG1ha2Ugc3VyZQorICAgKiBpdCdzIHF1ZXVlZCAqLworICBjcmVhdGVfYW5kX3B1c2hfZXZlbnQgKEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKG15cmVjZWl2ZWRldmVudHMpLCAwKTsKKyAgLyogbm9uLXNlcmlhbGl6ZWQgZXZlbnRzIHNob3VsZCBiZSBmb3J3YXJkZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZXJlCisgICAqIGFyZSBzZXJpYWxpemVkIGV2ZW50cyBxdWV1ZWQsIHRodXMgdGhlIGdfbGlzdF9wcmVwZW5kIGJlbG93ICovCisgIGV2ZW50ID0gY3JlYXRlX2V2ZW50IChHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU1fT09CKTsKKyAgbXlwdXNoZWRldmVudHMgPSBnX2xpc3RfcHJlcGVuZCAobXlwdXNoZWRldmVudHMsIGV2ZW50KTsKKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsIGV2ZW50KSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKG15cmVjZWl2ZWRldmVudHMpLCAxKTsKKworICAvKiB3aGVuIHJlY2VpdmluZyBhbiBFT1MgY2FjaGVkIGJ1ZmZlciBhbmQgcXVldWVkIGV2ZW50cyBzaG91bGQgYmUgZm9yd2FyZGVkICovCisgIGNyZWF0ZV9hbmRfcHVzaF9ldmVudCAoR1NUX0VWRU5UX0VPUyk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCAxKTsKKyAgY2hlY2tfYW5kX2NsZWFyX2V2ZW50cyAoMywgQ09NUEFSRSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK2RvX250cF90aW1lIChHc3RDbG9ja1RpbWUgYnVmZmVyX3RpbWUsIGdpbnQgc2VnbWVudF9zdGFydCwgZ2ludCBzZWdtZW50X2Jhc2UpCit7CisgIEdzdFNlZ21lbnQgc2VnbWVudDsKKyAgR3N0QnVmZmVyICpidWZmZXI7CisgIEdzdFJUUEJ1ZmZlciBydHBidWZmZXIgPSBHU1RfUlRQX0JVRkZFUl9JTklUOworICBndWludDggKmRhdGE7CisgIGd1aW50NjQgZXhwZWN0ZWRfbnRwX3RpbWU7CisgIGd1aW50NjQgdGltZXN0YW1wOworCisgIC8qIGNyZWF0ZSBhIHNlZ21lbnQgdGhhdCBjb250cm9scyB0aGUgYmVoYXZpb3IKKyAgICogYnkgY2hhbmdpbmcgc2VnbWVudC5zdGFydCBhbmQgc2VnbWVudC5iYXNlIHdlIGFmZmVjdCB0aGUgc3RyZWFtIHRpbWUgYW5kCisgICAqIHJ1bm5pbmcgdGltZSByZXNwZWN0aXZlbHkgKi8KKyAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSk7CisgIHNlZ21lbnQuc3RhcnQgPSBzZWdtZW50X3N0YXJ0OworICBzZWdtZW50LmJhc2UgPSBzZWdtZW50X2Jhc2U7CisgIGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsIGdzdF9ldmVudF9uZXdfc2VnbWVudCAoJnNlZ21lbnQpKTsKKworICBleHBlY3RlZF9udHBfdGltZSA9IGdzdF9zZWdtZW50X3RvX3N0cmVhbV90aW1lICgmc2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLAorICAgICAgYnVmZmVyX3RpbWUpOworICBleHBlY3RlZF9udHBfdGltZSArPSBOVFBfT0ZGU0VUOworICBleHBlY3RlZF9udHBfdGltZSA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoZXhwZWN0ZWRfbnRwX3RpbWUsCisgICAgICAoR19HSU5UNjRfQ09OU1RBTlQgKDEpIDw8IDMyKSwgR1NUX1NFQ09ORCk7CisKKyAgYnVmZmVyID0gY3JlYXRlX3J0cF9idWZmZXIgKGJ1ZmZlcl90aW1lLCBGQUxTRSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlciksIEdTVF9GTE9XX09LKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksIDEpOworCisgIGJ1ZmZlciA9IGdfbGlzdF9sYXN0IChidWZmZXJzKS0+ZGF0YTsKKworICAvKiBnZXQgdGhlIGV4dGVuc2lvbiBoZWFkZXIgKi8KKyAgZmFpbF91bmxlc3MgKGdzdF9ydHBfYnVmZmVyX21hcCAoYnVmZmVyLCBHU1RfTUFQX1JFQURXUklURSwgJnJ0cGJ1ZmZlcikpOworICBmYWlsX3VubGVzcyAoZ3N0X3J0cF9idWZmZXJfZ2V0X2V4dGVuc2lvbl9kYXRhICgmcnRwYnVmZmVyLCBOVUxMLAorICAgICAgICAgIChncG9pbnRlcikgJiBkYXRhLCBOVUxMKSk7CisKKyAgLyogLi4uYW5kIHJlYWQgdGhlIE5UUCB0aW1lc3RhbXAgYW5kIHZlcmlmeSB0aGF0IGl0J3MgdGhlIGV4cGVjdGVkIG9uZSAqLworICB0aW1lc3RhbXAgPSBHU1RfUkVBRF9VSU5UNjRfQkUgKGRhdGEpOworICBmYWlsX3VubGVzc19lcXVhbHNfdWludDY0ICh0aW1lc3RhbXAsIGV4cGVjdGVkX250cF90aW1lKTsKKworICBnc3RfcnRwX2J1ZmZlcl91bm1hcCAoJnJ0cGJ1ZmZlcik7CisgIGdzdF9jaGVja19kcm9wX2J1ZmZlcnMgKCk7Cit9CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X250cF90aW1lKQoreworICAvKiB3ZSBkbyBub3QgbmVlZCBidWZmZXIgY2FjaGluZywgc28gZG8gbm90IHNldCB0aGUgZS1iaXQgKi8KKyAgZ19vYmplY3Rfc2V0IChlbGVtZW50LCAic2V0LWUtYml0IiwgRkFMU0UsIE5VTEwpOworICAvKiBzZXQgYW4gbnRwIG9mZnNldCBzdWl0YWJsZSBmb3IgdGVzdGluZyAqLworICBnX29iamVjdF9zZXQgKGVsZW1lbnQsICJudHAtb2Zmc2V0IiwgTlRQX09GRlNFVCwgTlVMTCk7CisKKyAgQVNTRVJUX1NFVF9TVEFURSAoZWxlbWVudCwgR1NUX1NUQVRFX1BMQVlJTkcsIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7CisKKyAgLyogcHVzaCBpbml0aWFsIGV2ZW50cyAqLworICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteXNyY3BhZCwgZWxlbWVudCwgTlVMTCwgR1NUX0ZPUk1BVF9USU1FKTsKKworICAvKiBmaXJzdCB0ZXN0IHdpdGggYSAiY2xlYW4iIHNlZ21lbnQgKi8KKyAgZG9fbnRwX3RpbWUgKEdTVF9NU0VDT05ELCAwLCAwKTsKKyAgZG9fbnRwX3RpbWUgKEdTVF9TRUNPTkQgKyBHU1RfTVNFQ09ORCwgMCwgMCk7CisKKyAgLyogdmVyaWZ5IHRoYXQgY2hhbmdpbmcgdGhlIHJ1bm5pbmcgdGltZSBkb2VzIG5vdCBhZmZlY3QgdGhlIG50cCB0aW1lIHN0YW1wcyAgKi8KKyAgZG9fbnRwX3RpbWUgKEdTVF9NU0VDT05ELCAwLCBHU1RfU0VDT05EKTsKKyAgZG9fbnRwX3RpbWUgKEdTVF9TRUNPTkQgKyBHU1RfTVNFQ09ORCwgMCwgR1NUX1NFQ09ORCk7CisKKyAgLyogY2hhbmdpbmcgdGhlIHNlZ21lbnQuc3RhcnQgYWZmZWN0cyB0aGUgc3RyZWFtIHRpbWUsIHZlcmlmeSB0aGF0IHRoZSBlbGVtZW50CisgICAqIGhhbmRsZXMgaXQgY29ycmVjdGx5ICovCisgIGRvX250cF90aW1lIChHU1RfTVNFQ09ORCwgR1NUX01TRUNPTkQgLyAyLCAwKTsKKyAgZG9fbnRwX3RpbWUgKEdTVF9TRUNPTkQgKyBHU1RfTVNFQ09ORCwgR1NUX01TRUNPTkQgLyAyLCAwKTsKKworICAvKiBhbmQgZmluYWxseSBjaGFuZ2UgYm90aCBvZiB0aGVtIGFuZCB2ZXJpZnkgdGhhdCBhbGwncyBmaW5lICovCisgIGRvX250cF90aW1lIChHU1RfTVNFQ09ORCwgR1NUX01TRUNPTkQgLyAyLCBHU1RfU0VDT05EKTsKKyAgZG9fbnRwX3RpbWUgKEdTVF9TRUNPTkQgKyBHU1RfTVNFQ09ORCwgR1NUX01TRUNPTkQgLyAyLCBHU1RfU0VDT05EKTsKK30KKworR1NUX0VORF9URVNUOworCitzdGF0aWMgU3VpdGUgKgorb252aWZ0aW1lc3RhbXBfc3VpdGUgKHZvaWQpCit7CisgIFN1aXRlICpzID0gc3VpdGVfY3JlYXRlICgib252aWZ0aW1lc3RhbXAiKTsKKyAgVENhc2UgKnRjX2dlbmVyYWwsICp0Y19ldmVudHM7CisKKyAgdGNfZ2VuZXJhbCA9IHRjYXNlX2NyZWF0ZSAoImdlbmVyYWwiKTsKKyAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19nZW5lcmFsKTsKKyAgdGNhc2VfYWRkX2NoZWNrZWRfZml4dHVyZSAodGNfZ2VuZXJhbCwgc2V0dXAsIGNsZWFudXApOworCisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X2FwcGx5X2NsZWFuX3BvaW50KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfYXBwbHlfbm9fZV9iaXQpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9hcHBseV9lX2JpdCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X2ZsdXNoaW5nKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfcmV1c2FibGVfZWxlbWVudF9ub19lX2JpdCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X3JldXNhYmxlX2VsZW1lbnRfZV9iaXQpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9udHBfb2Zmc2V0X2V2ZW50KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfbnRwX3RpbWUpOworCisgIHRjX2V2ZW50cyA9IHRjYXNlX2NyZWF0ZSAoImV2ZW50cyIpOworICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2V2ZW50cyk7CisgIHRjYXNlX2FkZF9jaGVja2VkX2ZpeHR1cmUgKHRjX2V2ZW50cywgc2V0dXBfd2l0aF9ldmVudCwgY2xlYW51cF93aXRoX2V2ZW50KTsKKworICB0Y2FzZV9hZGRfdGVzdCAodGNfZXZlbnRzLCB0ZXN0X3NlcmlhbGl6ZWRfZXZlbnRzKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2V2ZW50cywgdGVzdF9ub25fc2VyaWFsaXplZF9ldmVudHMpOworCisgIHJldHVybiBzOworfQorCitHU1RfQ0hFQ0tfTUFJTiAob252aWZ0aW1lc3RhbXApOwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvdGVtcGxhdGVtYXRjaC5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvdGVtcGxhdGVtYXRjaC5jCmluZGV4IDViNTY3MTguLjk5ZmM3OTQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3RlbXBsYXRlbWF0Y2guYworKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy90ZW1wbGF0ZW1hdGNoLmMKQEAgLTkyLDcgKzkyLDggQEAKICAgR3N0RWxlbWVudCAqZWxlbWVudDsKICAgR3N0UGFkICpzaW5rcGFkLCAqc3JjcGFkOwogICBHc3RDYXBzICpjYXBzID0KLSAgICAgIGdzdF9jYXBzX2Zyb21fc3RyaW5nIChDQVBTX1RNUEwgIiwgd2lkdGg9KGludCkxNiwgaGVpZ2h0PShpbnQpMTYiKTsKKyAgICAgIGdzdF9jYXBzX2Zyb21fc3RyaW5nIChDQVBTX1RNUEwKKyAgICAgICIsIHdpZHRoPShpbnQpMTYsIGhlaWdodD0oaW50KTE2LCBmcmFtZXJhdGU9MS8xIik7CiAgIEdzdEJ1cyAqYnVzOwogICBHc3RNZXNzYWdlICptc2c7CiAgIGNvbnN0IEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNWJiNTEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMKQEAgLTAsMCArMSw3MjAgQEAKKy8qIEhUVFAgc291cmNlIGVsZW1lbnQgZm9yIHVzZSBpbiB0ZXN0cworICoKKyAqIENvcHlyaWdodCAoYykgPDIwMTU+IFlvdVZpZXcgVFYgTHRkCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RjaGVjay5oPgorI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGJhc2VzcmMuaD4KKworI2luY2x1ZGUgInRlc3RfaHR0cF9zcmMuaCIKKworI2lmbmRlZiBHU1RfUEFDS0FHRV9OQU1FCisjZGVmaW5lIEdTVF9QQUNLQUdFX05BTUUgImdzdC1wbHVnaW5zLWJhZCIKKyNlbmRpZgorCisjaWZuZGVmIEdTVF9QQUNLQUdFX09SSUdJTgorI2RlZmluZSBHU1RfUEFDS0FHRV9PUklHSU4gImh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nc3RyZWFtZXIvIgorI2VuZGlmCisKKyNkZWZpbmUgR1NUX1RFU1RfSFRUUF9TUkMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX1RFU1RfSFRUUF9TUkMsIEdzdFRlc3RIVFRQU3JjKSkKKyNkZWZpbmUgR1NUX1RFU1RfSFRUUF9TUkNfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfVEVTVF9IVFRQX1NSQywgR3N0VGVzdEhUVFBTcmNDbGFzcykpCisjZGVmaW5lIEdTVF9JU19URVNUX0hUVFBfU1JDKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9URVNUX0hUVFBfU1JDKSkKKyNkZWZpbmUgR1NUX0lTX1RFU1RfSFRUUF9TUkNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfVEVTVF9IVFRQX1NSQykpCisjZGVmaW5lIEdTVF9URVNUX0hUVFBfU1JDX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEdTVF9UWVBFX1RFU1RfSFRUUF9TUkMsIEdzdFRlc3RIVFRQU3JjQ2xhc3MpKQorCisjZGVmaW5lIERFRkFVTFRfVVNFUl9BR0VOVCAgIkdTdHJlYW1lciB0ZXN0aHR0cHNyYyAiCisjZGVmaW5lIERFRkFVTFRfQ09NUFJFU1MgICAgRkFMU0UKKyNkZWZpbmUgREVGQVVMVF9IVFRQX01FVEhPRCBOVUxMCisjZGVmaW5lIERFRkFVTFRfS0VFUF9BTElWRSAgRkFMU0UKKworZW51bQoreworICBQUk9QXzAsCisgIFBST1BfVVNFUl9BR0VOVCwKKyAgUFJPUF9FWFRSQV9IRUFERVJTLAorICBQUk9QX0NPTVBSRVNTLAorICBQUk9QX0tFRVBfQUxJVkUsCisgIFBST1BfTUVUSE9ELAorICBQUk9QX0xBU1QKK307CisKK3R5cGVkZWYgZW51bQoreworICBNRVRIT0RfSU5WQUxJRCwKKyAgTUVUSE9EX0dFVCwKKyAgTUVUSE9EX1BPU1QsCisgIE1FVEhPRF9IRUFELAorICBNRVRIT0RfT1BUSU9OUworfSBIdHRwTWV0aG9kOworCit0eXBlZGVmIHN0cnVjdCBfR3N0VGVzdEhUVFBTcmNNZXRob2ROYW1lCit7CisgIGNvbnN0IGdjaGFyICpuYW1lOworICBIdHRwTWV0aG9kIG1ldGhvZDsKK30gR3N0VGVzdEhUVFBTcmNNZXRob2ROYW1lOworCitzdGF0aWMgY29uc3QgR3N0VGVzdEhUVFBTcmNNZXRob2ROYW1lIGdzdF90ZXN0X2h0dHBfc3JjX21ldGhvZHNbXSA9IHsKKyAgeyJHRVQiLCBNRVRIT0RfR0VUfSwKKyAgeyJQT1NUIiwgTUVUSE9EX1BPU1R9LAorICB7IkhFQUQiLCBNRVRIT0RfSEVBRH0sCisgIHsiT1BUSU9OUyIsIE1FVEhPRF9PUFRJT05TfSwKKyAge05VTEwsIE1FVEhPRF9JTlZBTElEfQorfTsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFRlc3RIVFRQU3JjCit7CisgIEdzdEJhc2VTcmMgcGFyZW50OworCisgIEdNdXRleCBtdXRleDsKKworICBHc3RUZXN0SFRUUFNyY0lucHV0IGlucHV0OworCisgIGdjaGFyICp1cmk7ICAgICAgICAgICAgICAgICAgIC8qIHRoZSB1cmkgZm9yIHdoaWNoIGRhdGEgaXMgYmVpbmcgcmVxdWVzdGVkICovCisgIGdib29sZWFuIGNvbXByZXNzOworICBnYm9vbGVhbiBrZWVwX2FsaXZlOworICBnY2hhciAqaHR0cF9tZXRob2RfbmFtZTsKKyAgSHR0cE1ldGhvZCBodHRwX21ldGhvZDsKKyAgR3N0U3RydWN0dXJlICpleHRyYV9oZWFkZXJzOworICBnY2hhciAqdXNlcl9hZ2VudDsKKworICBndWludDY0IHBvc2l0aW9uOworICAvKiBpbmRleCBpbW1lZGlhdGVseSBhZnRlciB0aGUgbGFzdCBieXRlIGZyb20gdGhlIHNlZ21lbnQgdG8gYmUgcmV0cmlldmVkICovCisgIGd1aW50NjQgc2VnbWVudF9lbmQ7CisKKyAgR3N0RXZlbnQgKmh0dHBfaGVhZGVyc19ldmVudDsKKyAgZ2Jvb2xlYW4gZHVyYXRpb25fY2hhbmdlZDsKK30gR3N0VGVzdEhUVFBTcmM7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RUZXN0SFRUUFNyY0NsYXNzCit7CisgIEdzdEJhc2VTcmNDbGFzcyBwYXJlbnRfY2xhc3M7Cit9IEdzdFRlc3RIVFRQU3JjQ2xhc3M7CisKK3R5cGVkZWYgc3RydWN0IF9QbHVnaW5Jbml0Q29udGV4dAoreworICBjb25zdCBnY2hhciAqbmFtZTsKKyAgZ3VpbnQgcmFuazsKKyAgR1R5cGUgdHlwZTsKK30gUGx1Z2luSW5pdENvbnRleHQ7CisKK3N0YXRpYyBjb25zdCBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyAqZ3N0X3Rlc3RfaHR0cF9zcmNfY2FsbGJhY2tzID0gTlVMTDsKK3N0YXRpYyBncG9pbnRlciBnc3RfdGVzdF9odHRwX3NyY19jYWxsYmFja191c2VyX2RhdGEgPSBOVUxMOworc3RhdGljIGd1aW50IGdzdF90ZXN0X2h0dHBfc3JjX2Jsb2Nrc2l6ZSA9IDA7CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfZGFzaGRlbXV4X3Rlc3Rfc291cmNlX3RlbXBsYXRlID0KK0dTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKKyAgICBHU1RfUEFEX1NSQywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFNfQU5ZKTsKKworc3RhdGljIHZvaWQgZ3N0X3Rlc3RfaHR0cF9zcmNfdXJpX2hhbmRsZXJfaW5pdCAoZ3BvaW50ZXIgZ19pZmFjZSwKKyAgICBncG9pbnRlciBpZmFjZV9kYXRhKTsKK3N0YXRpYyB2b2lkIGdzdF90ZXN0X2h0dHBfc3JjX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdGVzdF9odHRwX3NyY19pc19zZWVrYWJsZSAoR3N0QmFzZVNyYyAqIGJhc2VzcmMpOworc3RhdGljIGdib29sZWFuIGdzdF90ZXN0X2h0dHBfc3JjX2RvX3NlZWsgKEdzdEJhc2VTcmMgKiBiYXNlc3JjLAorICAgIEdzdFNlZ21lbnQgKiBzZWdtZW50KTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdGVzdF9odHRwX3NyY19zdGFydCAoR3N0QmFzZVNyYyAqIGJhc2VzcmMpOworc3RhdGljIGdib29sZWFuIGdzdF90ZXN0X2h0dHBfc3JjX3N0b3AgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdGVzdF9odHRwX3NyY19nZXRfc2l6ZSAoR3N0QmFzZVNyYyAqIGJhc2VzcmMsCisgICAgZ3VpbnQ2NCAqIHNpemUpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3Rlc3RfaHR0cF9zcmNfY3JlYXRlIChHc3RCYXNlU3JjICogYmFzZXNyYywKKyAgICBndWludDY0IG9mZnNldCwgZ3VpbnQgbGVuZ3RoLCBHc3RCdWZmZXIgKiogcmV0KTsKK3N0YXRpYyB2b2lkIGdzdF90ZXN0X2h0dHBfc3JjX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKK3N0YXRpYyB2b2lkIGdzdF90ZXN0X2h0dHBfc3JjX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKKworCisjZGVmaW5lIF9kb19pbml0IFwKKyAgR19JTVBMRU1FTlRfSU5URVJGQUNFIChHU1RfVFlQRV9VUklfSEFORExFUiwgZ3N0X3Rlc3RfaHR0cF9zcmNfdXJpX2hhbmRsZXJfaW5pdCk7CisKKyNkZWZpbmUgZ3N0X3Rlc3RfaHR0cF9zcmNfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdFRlc3RIVFRQU3JjLCBnc3RfdGVzdF9odHRwX3NyYywKKyAgICBHU1RfVFlQRV9CQVNFX1NSQywgX2RvX2luaXQpOworCitzdGF0aWMgdm9pZAorZ3N0X3Rlc3RfaHR0cF9zcmNfY2xhc3NfaW5pdCAoR3N0VGVzdEhUVFBTcmNDbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CisgIEdzdEVsZW1lbnRDbGFzcyAqZ3N0ZWxlbWVudF9jbGFzczsKKyAgR3N0QmFzZVNyY0NsYXNzICpnc3RiYXNlc3JjX2NsYXNzOworCisgIGdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworICBnc3RlbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKKyAgZ3N0YmFzZXNyY19jbGFzcyA9IEdTVF9CQVNFX1NSQ19DTEFTUyAoa2xhc3MpOworCisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF90ZXN0X2h0dHBfc3JjX3NldF9wcm9wZXJ0eTsKKyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X3Rlc3RfaHR0cF9zcmNfZ2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF90ZXN0X2h0dHBfc3JjX2ZpbmFsaXplOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQ09NUFJFU1MsCisgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImNvbXByZXNzIiwgIkNvbXByZXNzIiwKKyAgICAgICAgICAiQWxsb3cgY29tcHJlc3NlZCBjb250ZW50IGVuY29kaW5ncyIsCisgICAgICAgICAgREVGQVVMVF9DT01QUkVTUywgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9FWFRSQV9IRUFERVJTLAorICAgICAgZ19wYXJhbV9zcGVjX2JveGVkICgiZXh0cmEtaGVhZGVycyIsICJFeHRyYSBIZWFkZXJzIiwKKyAgICAgICAgICAiRXh0cmEgaGVhZGVycyB0byBhcHBlbmQgdG8gdGhlIEhUVFAgcmVxdWVzdCIsCisgICAgICAgICAgR1NUX1RZUEVfU1RSVUNUVVJFLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0tFRVBfQUxJVkUsCisgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImtlZXAtYWxpdmUiLCAia2VlcC1hbGl2ZSIsCisgICAgICAgICAgIlVzZSBIVFRQIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMiLCBERUZBVUxUX0tFRVBfQUxJVkUsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NRVRIT0QsCisgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgibWV0aG9kIiwgIkhUVFAgbWV0aG9kIiwKKyAgICAgICAgICAiVGhlIEhUVFAgbWV0aG9kIHRvIHVzZSAoR0VULCBIRUFELCBPUFRJT05TLCBldGMpIiwKKyAgICAgICAgICBERUZBVUxUX0hUVFBfTUVUSE9ELCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9VU0VSX0FHRU5ULAorICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoInVzZXItYWdlbnQiLCAiVXNlci1BZ2VudCIsCisgICAgICAgICAgIlZhbHVlIG9mIHRoZSBVc2VyLUFnZW50IEhUVFAgcmVxdWVzdCBoZWFkZXIgZmllbGQiLAorICAgICAgICAgIERFRkFVTFRfVVNFUl9BR0VOVCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgIlRlc3QgSFRUUCBzb3VyY2UgZWxlbWVudCBmb3IgdW5pdCB0ZXN0cyIsCisgICAgICAiU291cmNlL05ldHdvcmsiLAorICAgICAgIlVzZSBpbiB1bml0IHRlc3RzIiwgIkFsZXggQXNobGV5IDxhbGV4LmFzaGxleUB5b3V2aWV3LmNvbT4iKTsKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9kYXNoZGVtdXhfdGVzdF9zb3VyY2VfdGVtcGxhdGUpKTsKKworICBnc3RiYXNlc3JjX2NsYXNzLT5zdGFydCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGVzdF9odHRwX3NyY19zdGFydCk7CisgIGdzdGJhc2VzcmNfY2xhc3MtPnN0b3AgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Rlc3RfaHR0cF9zcmNfc3RvcCk7CisgIGdzdGJhc2VzcmNfY2xhc3MtPmlzX3NlZWthYmxlID0KKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGVzdF9odHRwX3NyY19pc19zZWVrYWJsZSk7CisgIGdzdGJhc2VzcmNfY2xhc3MtPmRvX3NlZWsgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Rlc3RfaHR0cF9zcmNfZG9fc2Vlayk7CisgIGdzdGJhc2VzcmNfY2xhc3MtPmdldF9zaXplID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90ZXN0X2h0dHBfc3JjX2dldF9zaXplKTsKKyAgZ3N0YmFzZXNyY19jbGFzcy0+Y3JlYXRlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90ZXN0X2h0dHBfc3JjX2NyZWF0ZSk7CisKK30KKworc3RhdGljIHZvaWQKK2dzdF90ZXN0X2h0dHBfc3JjX2luaXQgKEdzdFRlc3RIVFRQU3JjICogc3JjKQoreworICBnX211dGV4X2luaXQgKCZzcmMtPm11dGV4KTsKKyAgc3JjLT51cmkgPSBOVUxMOworICBtZW1zZXQgKCZzcmMtPmlucHV0LCAwLCBzaXplb2YgKHNyYy0+aW5wdXQpKTsKKyAgc3JjLT5jb21wcmVzcyA9IEZBTFNFOworICBzcmMtPmtlZXBfYWxpdmUgPSBGQUxTRTsKKyAgc3JjLT5odHRwX21ldGhvZF9uYW1lID0gTlVMTDsKKyAgc3JjLT5odHRwX21ldGhvZCA9IE1FVEhPRF9HRVQ7CisgIHNyYy0+dXNlcl9hZ2VudCA9IE5VTEw7CisgIHNyYy0+cG9zaXRpb24gPSAwOworICBzcmMtPnNlZ21lbnRfZW5kID0gMDsKKyAgc3JjLT5odHRwX2hlYWRlcnNfZXZlbnQgPSBOVUxMOworICBzcmMtPmR1cmF0aW9uX2NoYW5nZWQgPSBGQUxTRTsKKyAgaWYgKGdzdF90ZXN0X2h0dHBfc3JjX2Jsb2Nrc2l6ZSkKKyAgICBnc3RfYmFzZV9zcmNfc2V0X2Jsb2Nrc2l6ZSAoR1NUX0JBU0VfU1JDIChzcmMpLAorICAgICAgICBnc3RfdGVzdF9odHRwX3NyY19ibG9ja3NpemUpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Rlc3RfaHR0cF9zcmNfcmVzZXRfaW5wdXQgKEdzdFRlc3RIVFRQU3JjICogc3JjKQoreworICBzcmMtPmlucHV0LmNvbnRleHQgPSBOVUxMOworICBzcmMtPmlucHV0LnNpemUgPSAwOworICBzcmMtPmlucHV0LnN0YXR1c19jb2RlID0gMDsKKyAgaWYgKHNyYy0+aW5wdXQucmVxdWVzdF9oZWFkZXJzKSB7CisgICAgZ3N0X3N0cnVjdHVyZV9mcmVlIChzcmMtPmlucHV0LnJlcXVlc3RfaGVhZGVycyk7CisgICAgc3JjLT5pbnB1dC5yZXF1ZXN0X2hlYWRlcnMgPSBOVUxMOworICB9CisgIGlmIChzcmMtPmlucHV0LnJlc3BvbnNlX2hlYWRlcnMpIHsKKyAgICBnc3Rfc3RydWN0dXJlX2ZyZWUgKHNyYy0+aW5wdXQucmVzcG9uc2VfaGVhZGVycyk7CisgICAgc3JjLT5pbnB1dC5yZXNwb25zZV9oZWFkZXJzID0gTlVMTDsKKyAgfQorICBpZiAoc3JjLT5odHRwX2hlYWRlcnNfZXZlbnQpIHsKKyAgICBnc3RfZXZlbnRfdW5yZWYgKHNyYy0+aHR0cF9oZWFkZXJzX2V2ZW50KTsKKyAgICBzcmMtPmh0dHBfaGVhZGVyc19ldmVudCA9IE5VTEw7CisgIH0KKyAgaWYgKHNyYy0+ZXh0cmFfaGVhZGVycykgeworICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZSAoc3JjLT5leHRyYV9oZWFkZXJzKTsKKyAgICBzcmMtPmV4dHJhX2hlYWRlcnMgPSBOVUxMOworICB9CisgIGdfZnJlZSAoc3JjLT5odHRwX21ldGhvZF9uYW1lKTsKKyAgc3JjLT5odHRwX21ldGhvZF9uYW1lID0gTlVMTDsKKyAgZ19mcmVlIChzcmMtPnVzZXJfYWdlbnQpOworICBzcmMtPnVzZXJfYWdlbnQgPSBOVUxMOworICBzcmMtPmR1cmF0aW9uX2NoYW5nZWQgPSBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKK2dzdF90ZXN0X2h0dHBfc3JjX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RUZXN0SFRUUFNyYyAqc3JjOworCisgIHNyYyA9IEdTVF9URVNUX0hUVFBfU1JDIChvYmplY3QpOworCisgIGdfZnJlZSAoc3JjLT51cmkpOworICBnc3RfdGVzdF9odHRwX3NyY19yZXNldF9pbnB1dCAoc3JjKTsKKyAgZ19tdXRleF9jbGVhciAoJnNyYy0+bXV0ZXgpOworCisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdGVzdF9odHRwX3NyY19zdGFydCAoR3N0QmFzZVNyYyAqIGJhc2VzcmMpCit7CisgIEdzdFRlc3RIVFRQU3JjICpzcmM7CisgIEdzdFN0cnVjdHVyZSAqaHR0cF9oZWFkZXJzOworCisgIHNyYyA9IEdTVF9URVNUX0hUVFBfU1JDIChiYXNlc3JjKTsKKyAgZ19tdXRleF9sb2NrICgmc3JjLT5tdXRleCk7CisgIGdzdF90ZXN0X2h0dHBfc3JjX3Jlc2V0X2lucHV0IChzcmMpOworICBpZiAoIXNyYy0+dXJpKSB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNyYywgUkVTT1VSQ0UsIE9QRU5fUkVBRCwgKCgiTm8gVVJMIHNldC4iKSksCisgICAgICAgICgiTWlzc2luZyBsb2NhdGlvbiBwcm9wZXJ0eSIpKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorICBpZiAoIWdzdF90ZXN0X2h0dHBfc3JjX2NhbGxiYWNrcykgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIFJFU09VUkNFLCBPUEVOX1JFQUQsCisgICAgICAgICgoIkNhbGxiYWNrcyBub3QgcmVnaXN0ZXJlZC4iKSksICgiQ2FsbGJhY2tzIG5vdCByZWdpc3RlcmVkIikpOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5tdXRleCk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisgIGlmICghZ3N0X3Rlc3RfaHR0cF9zcmNfY2FsbGJhY2tzLT5zcmNfc3RhcnQpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBSRVNPVVJDRSwgT1BFTl9SRUFELAorICAgICAgICAoKCJzcmNfc3RhcnQgY2FsbGJhY2sgbm90IGRlZmluZWQuIikpLAorICAgICAgICAoInNyY19zdGFydCBjYWxsYmFjayBub3QgcmVnaXN0ZXJlZCIpKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorICBpZiAoIWdzdF90ZXN0X2h0dHBfc3JjX2NhbGxiYWNrcy0+c3JjX3N0YXJ0IChzcmMsIHNyYy0+dXJpLCAmc3JjLT5pbnB1dCwKKyAgICAgICAgICBnc3RfdGVzdF9odHRwX3NyY19jYWxsYmFja191c2VyX2RhdGEpKSB7CisgICAgaWYgKHNyYy0+aW5wdXQuc3RhdHVzX2NvZGUgPT0gMCkgeworICAgICAgc3JjLT5pbnB1dC5zdGF0dXNfY29kZSA9IDQwNDsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKHNyYy0+aW5wdXQuc3RhdHVzX2NvZGUgPT0gMCkgeworICAgICAgc3JjLT5pbnB1dC5zdGF0dXNfY29kZSA9IDIwMDsKKyAgICB9CisgICAgc3JjLT5wb3NpdGlvbiA9IDA7CisgICAgc3JjLT5zZWdtZW50X2VuZCA9IHNyYy0+aW5wdXQuc2l6ZTsKKyAgICBnc3RfYmFzZV9zcmNfc2V0X2R5bmFtaWNfc2l6ZSAoYmFzZXNyYywgRkFMU0UpOworICAgIGJhc2VzcmMtPnNlZ21lbnQuZHVyYXRpb24gPSBzcmMtPmlucHV0LnNpemU7CisgICAgc3JjLT5kdXJhdGlvbl9jaGFuZ2VkID0gVFJVRTsKKyAgfQorICBodHRwX2hlYWRlcnMgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0eSAoImh0dHAtaGVhZGVycyIpOworICBnc3Rfc3RydWN0dXJlX3NldCAoaHR0cF9oZWFkZXJzLCAidXJpIiwgR19UWVBFX1NUUklORywgc3JjLT51cmksIE5VTEwpOworICBpZiAoIXNyYy0+aW5wdXQucmVxdWVzdF9oZWFkZXJzKSB7CisgICAgc3JjLT5pbnB1dC5yZXF1ZXN0X2hlYWRlcnMgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0eSAoInJlcXVlc3QtaGVhZGVycyIpOworICB9CisgIGlmICghZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGRfdHlwZWQgKHNyYy0+aW5wdXQucmVxdWVzdF9oZWFkZXJzLAorICAgICAgICAgICJVc2VyLUFnZW50IiwgR19UWVBFX1NUUklORykpIHsKKyAgICBnc3Rfc3RydWN0dXJlX3NldCAoc3JjLT5pbnB1dC5yZXF1ZXN0X2hlYWRlcnMsCisgICAgICAgICJVc2VyLUFnZW50IiwgR19UWVBFX1NUUklORywKKyAgICAgICAgc3JjLT51c2VyX2FnZW50ID8gc3JjLT51c2VyX2FnZW50IDogREVGQVVMVF9VU0VSX0FHRU5ULCBOVUxMKTsKKyAgfQorICBpZiAoIWdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkX3R5cGVkIChzcmMtPmlucHV0LnJlcXVlc3RfaGVhZGVycywKKyAgICAgICAgICAiQ29ubmVjdGlvbiIsIEdfVFlQRV9TVFJJTkcpKSB7CisgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHNyYy0+aW5wdXQucmVxdWVzdF9oZWFkZXJzLAorICAgICAgICAiQ29ubmVjdGlvbiIsIEdfVFlQRV9TVFJJTkcsCisgICAgICAgIHNyYy0+a2VlcF9hbGl2ZSA/ICJLZWVwLUFsaXZlIiA6ICJDbG9zZSIsIE5VTEwpOworICB9CisgIGlmIChzcmMtPmNvbXByZXNzCisgICAgICAmJiAhZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGRfdHlwZWQgKHNyYy0+aW5wdXQucmVxdWVzdF9oZWFkZXJzLAorICAgICAgICAgICJBY2NlcHQtRW5jb2RpbmciLCBHX1RZUEVfU1RSSU5HKSkgeworICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzcmMtPmlucHV0LnJlcXVlc3RfaGVhZGVycywgIkFjY2VwdC1FbmNvZGluZyIsCisgICAgICAgIEdfVFlQRV9TVFJJTkcsICJjb21wcmVzcywgZ3ppcCIsIE5VTEwpOworICB9CisgIGdzdF9zdHJ1Y3R1cmVfc2V0IChodHRwX2hlYWRlcnMsICJyZXF1ZXN0LWhlYWRlcnMiLCBHU1RfVFlQRV9TVFJVQ1RVUkUsCisgICAgICBzcmMtPmlucHV0LnJlcXVlc3RfaGVhZGVycywgTlVMTCk7CisgIGlmICghc3JjLT5pbnB1dC5yZXNwb25zZV9oZWFkZXJzKSB7CisgICAgc3JjLT5pbnB1dC5yZXNwb25zZV9oZWFkZXJzID0gZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkgKCJyZXNwb25zZS1oZWFkZXJzIik7CisgIH0KKyAgaWYgKCFnc3Rfc3RydWN0dXJlX2hhc19maWVsZF90eXBlZCAoc3JjLT5pbnB1dC5yZXNwb25zZV9oZWFkZXJzLAorICAgICAgICAgICJDb25uZWN0aW9uIiwgR19UWVBFX1NUUklORykpIHsKKyAgICBnc3Rfc3RydWN0dXJlX3NldCAoc3JjLT5pbnB1dC5yZXNwb25zZV9oZWFkZXJzLAorICAgICAgICAiQ29ubmVjdGlvbiIsIEdfVFlQRV9TVFJJTkcsCisgICAgICAgIHNyYy0+a2VlcF9hbGl2ZSA/ICJrZWVwLWFsaXZlIiA6ICJjbG9zZSIsIE5VTEwpOworICB9CisgIGlmICghZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGRfdHlwZWQgKHNyYy0+aW5wdXQucmVzcG9uc2VfaGVhZGVycywKKyAgICAgICAgICAiRGF0ZSIsIEdfVFlQRV9TVFJJTkcpKSB7CisgICAgR0RhdGVUaW1lICpub3c7CisgICAgZ2NoYXIgKmRhdGVfc3RyOworCisgICAgbm93ID0gZ19kYXRlX3RpbWVfbmV3X25vd19sb2NhbCAoKTsKKyAgICBmYWlsX3VubGVzcyAobm93ICE9IE5VTEwpOworICAgIGRhdGVfc3RyID0gZ19kYXRlX3RpbWVfZm9ybWF0IChub3csICIlYSwgJWUgJWIgJVkgJVQgJVoiKTsKKyAgICBmYWlsX3VubGVzcyAoZGF0ZV9zdHIgIT0gTlVMTCk7CisgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHNyYy0+aW5wdXQucmVzcG9uc2VfaGVhZGVycywKKyAgICAgICAgIkRhdGUiLCBHX1RZUEVfU1RSSU5HLCBkYXRlX3N0ciwgTlVMTCk7CisgICAgZ19mcmVlIChkYXRlX3N0cik7CisgICAgZ19kYXRlX3RpbWVfdW5yZWYgKG5vdyk7CisgIH0KKyAgZ3N0X3N0cnVjdHVyZV9zZXQgKGh0dHBfaGVhZGVycywgInJlc3BvbnNlLWhlYWRlcnMiLCBHU1RfVFlQRV9TVFJVQ1RVUkUsCisgICAgICBzcmMtPmlucHV0LnJlc3BvbnNlX2hlYWRlcnMsIE5VTEwpOworICBpZiAoc3JjLT5odHRwX2hlYWRlcnNfZXZlbnQpIHsKKyAgICBnc3RfZXZlbnRfdW5yZWYgKHNyYy0+aHR0cF9oZWFkZXJzX2V2ZW50KTsKKyAgfQorICBzcmMtPmh0dHBfaGVhZGVyc19ldmVudCA9CisgICAgICBnc3RfZXZlbnRfbmV3X2N1c3RvbSAoR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX1NUSUNLWSwgaHR0cF9oZWFkZXJzKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPm11dGV4KTsKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Rlc3RfaHR0cF9zcmNfc3RvcCAoR3N0QmFzZVNyYyAqIGJhc2VzcmMpCit7CisgIEdzdFRlc3RIVFRQU3JjICpzcmM7CisKKyAgc3JjID0gR1NUX1RFU1RfSFRUUF9TUkMgKGJhc2VzcmMpOworICBnX211dGV4X2xvY2sgKCZzcmMtPm11dGV4KTsKKyAgc3JjLT5wb3NpdGlvbiA9IDA7CisgIGdzdF90ZXN0X2h0dHBfc3JjX3Jlc2V0X2lucHV0IChzcmMpOworICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdGVzdF9odHRwX3NyY19pc19zZWVrYWJsZSAoR3N0QmFzZVNyYyAqIGJhc2VzcmMpCit7CisgIEdzdFRlc3RIVFRQU3JjICpzcmM7CisgIGdib29sZWFuIHJldDsKKworICBzcmMgPSBHU1RfVEVTVF9IVFRQX1NSQyAoYmFzZXNyYyk7CisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+bXV0ZXgpOworICAvKiBpZiBzaXplIGlzIHNldCwgd2UgY2FuIHNlZWsgKi8KKyAgcmV0ID0gc3JjLT5pbnB1dC5zaXplID4gMDsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPm11dGV4KTsKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdGVzdF9odHRwX3NyY19kb19zZWVrIChHc3RCYXNlU3JjICogYmFzZXNyYywgR3N0U2VnbWVudCAqIHNlZ21lbnQpCit7CisgIEdzdFRlc3RIVFRQU3JjICpzcmMgPSBHU1RfVEVTVF9IVFRQX1NSQyAoYmFzZXNyYyk7CisKKyAgR1NUX0RFQlVHICgiZ3N0X3Rlc3RfaHR0cF9zcmNfZG9fc2VlayBzdGFydCA9ICUiIEdfR1VJTlQ2NF9GT1JNQVQsCisgICAgICBzZWdtZW50LT5zdGFydCk7CisKKyAgLyoKKyAgICAgQWNjb3JkaW5nIHRvIFJGQzcyMzMsIHRoZSByYW5nZSBpcyBpbmNsdXNpdmU6CisgICAgIFRoZSBmaXJzdC1ieXRlLXBvcyB2YWx1ZSBpbiBhIGJ5dGUtcmFuZ2Utc3BlYyBnaXZlcyB0aGUgYnl0ZS1vZmZzZXQKKyAgICAgb2YgdGhlIGZpcnN0IGJ5dGUgaW4gYSByYW5nZS4gIFRoZSBsYXN0LWJ5dGUtcG9zIHZhbHVlIGdpdmVzIHRoZQorICAgICBieXRlLW9mZnNldCBvZiB0aGUgbGFzdCBieXRlIGluIHRoZSByYW5nZTsgdGhhdCBpcywgdGhlIGJ5dGUKKyAgICAgcG9zaXRpb25zIHNwZWNpZmllZCBhcmUgaW5jbHVzaXZlLiAgQnl0ZSBvZmZzZXRzIHN0YXJ0IGF0IHplcm8uCisgICAqLworCisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+bXV0ZXgpOworICBpZiAoIXNyYy0+dXJpKSB7CisgICAgR1NUX0RFQlVHICgiYXR0ZW1wdCB0byBzZWVrIGJlZm9yZSBVUkkgc2V0Iik7CisgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPm11dGV4KTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyAgaWYgKHNyYy0+aW5wdXQuc3RhdHVzX2NvZGUgPj0gMjAwICYmIHNyYy0+aW5wdXQuc3RhdHVzX2NvZGUgPCAzMDApIHsKKyAgICBpZiAoc2VnbWVudC0+c3RhcnQgPj0gc3JjLT5pbnB1dC5zaXplKSB7CisgICAgICBHU1RfREVCVUcgKCJhdHRlbXB0IHRvIHNlZWsgdG8gJSIgR19HVUlOVDY0X0ZPUk1BVCAiIGJ1dCBzaXplIGlzICUiCisgICAgICAgICAgR19HVUlOVDY0X0ZPUk1BVCwgc2VnbWVudC0+c3RhcnQsIHNyYy0+aW5wdXQuc2l6ZSk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBpZiAoc2VnbWVudC0+c3RvcCAhPSAtMSAmJiBzZWdtZW50LT5zdG9wID4gc3JjLT5pbnB1dC5zaXplKSB7CisgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBHU1RfREVCVUcgKCJBdHRlbXB0IHRvIHNlZWsgb24gYSBVUkwgdGhhdCB3aWxsIGdlbmVyYXRlIEhUVFAgZXJyb3IgJXUiLAorICAgICAgICBzcmMtPmlucHV0LnN0YXR1c19jb2RlKTsKKyAgfQorICBzcmMtPnBvc2l0aW9uID0gc2VnbWVudC0+c3RhcnQ7CisKKyAgaWYgKHNlZ21lbnQtPnN0b3AgIT0gLTEpIHsKKyAgICBzcmMtPnNlZ21lbnRfZW5kID0gc2VnbWVudC0+c3RvcDsKKyAgfSBlbHNlIHsKKyAgICBzcmMtPnNlZ21lbnRfZW5kID0gc3JjLT5pbnB1dC5zaXplOworICB9CisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5tdXRleCk7CisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF90ZXN0X2h0dHBfc3JjX2dldF9zaXplIChHc3RCYXNlU3JjICogYmFzZXNyYywgZ3VpbnQ2NCAqIHNpemUpCit7CisgIEdzdFRlc3RIVFRQU3JjICpzcmM7CisKKyAgc3JjID0gR1NUX1RFU1RfSFRUUF9TUkMgKGJhc2VzcmMpOworCisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+bXV0ZXgpOworICAvKiBpZiBpdCB3YXMgc3RhcnRlZCwgc2l6ZSBpcyBzZXQgKi8KKyAgaWYgKHNyYy0+dXJpICYmIHNyYy0+aW5wdXQuc3RhdHVzX2NvZGUgPj0gMjAwICYmIHNyYy0+aW5wdXQuc3RhdHVzX2NvZGUgPCAzMDApIHsKKyAgICAqc2l6ZSA9IHNyYy0+aW5wdXQuc2l6ZTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICAgIHJldHVybiBUUlVFOworICB9CisgIC8qIGNhbm5vdCBnZXQgdGhlIHNpemUgaWYgaXQgd2Fzbid0IHN0YXJ0ZWQgKi8KKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPm11dGV4KTsKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X3Rlc3RfaHR0cF9zcmNfY3JlYXRlIChHc3RCYXNlU3JjICogYmFzZXNyYywgZ3VpbnQ2NCBvZmZzZXQsCisgICAgZ3VpbnQgbGVuZ3RoLCBHc3RCdWZmZXIgKiogcmV0YnVmKQoreworICBHc3RUZXN0SFRUUFNyYyAqc3JjID0gR1NUX1RFU1RfSFRUUF9TUkMgKGJhc2VzcmMpOworICBndWludCBieXRlc19yZWFkOworICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOworICBndWludCBibG9ja3NpemU7CisKKyAgZmFpbF91bmxlc3MgKGdzdF90ZXN0X2h0dHBfc3JjX2NhbGxiYWNrcyAhPSBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKGdzdF90ZXN0X2h0dHBfc3JjX2NhbGxiYWNrcy0+c3JjX2NyZWF0ZSAhPSBOVUxMKTsKKworICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7CisgIGJsb2Nrc2l6ZSA9IGJhc2VzcmMtPmJsb2Nrc2l6ZTsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7CisKKyAgZ19tdXRleF9sb2NrICgmc3JjLT5tdXRleCk7CisgIEdTVF9ERUJVRyAoImdzdF90ZXN0X2h0dHBfc3JjX2NyZWF0ZSBmZWVkaW5nIGZyb20gJSIgR19HVUlOVDY0X0ZPUk1BVCwKKyAgICAgIHNyYy0+cG9zaXRpb24pOworICBpZiAoc3JjLT51cmkgPT0gTlVMTCkgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIFJFU09VUkNFLCBSRUFELCAoTlVMTCksIEdTVF9FUlJPUl9TWVNURU0pOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5tdXRleCk7CisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICB9CisgIGlmIChzcmMtPmlucHV0LnN0YXR1c19jb2RlIDwgMjAwIHx8IHNyYy0+aW5wdXQuc3RhdHVzX2NvZGUgPj0gMzAwKSB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNyYywgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsCisgICAgICAgICAgICAiR2VuZXJhdGVkIHJlcXVlc3RlZCBlcnJvciIpLCAoIiVzICglZCksIFVSTDogJXMsIFJlZGlyZWN0IHRvOiAlcyIsCisgICAgICAgICAgICAiR2VuZXJhdGVkIHJlcXVlc3RlZCBlcnJvciIsIHNyYy0+aW5wdXQuc3RhdHVzX2NvZGUsIHNyYy0+dXJpLAorICAgICAgICAgICAgR1NUX1NUUl9OVUxMIChOVUxMKSkpOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5tdXRleCk7CisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICB9CisgIGlmIChzcmMtPmh0dHBfbWV0aG9kID09IE1FVEhPRF9JTlZBTElEKSB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNyYywgUkVTT1VSQ0UsIFJFQUQsICgiJXMiLAorICAgICAgICAgICAgIkludmFsaWQgSFRUUCBtZXRob2QiKSwgKCIlcyAoJXMpLCBVUkw6ICVzIiwKKyAgICAgICAgICAgICJJbnZhbGlkIEhUVFAgbWV0aG9kIiwgc3JjLT5odHRwX21ldGhvZF9uYW1lLCBzcmMtPnVyaSkpOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5tdXRleCk7CisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICB9IGVsc2UgaWYgKHNyYy0+aHR0cF9tZXRob2QgPT0gTUVUSE9EX0hFQUQpIHsKKyAgICByZXQgPSBHU1RfRkxPV19FT1M7CisgICAgZ290byBodHRwX2V2ZW50czsKKyAgfQorICBmYWlsX3VubGVzc19lcXVhbHNfdWludDY0IChvZmZzZXQsIHNyYy0+cG9zaXRpb24pOworICBieXRlc19yZWFkID0gTUlOICgoc3JjLT5zZWdtZW50X2VuZCAtIHNyYy0+cG9zaXRpb24pLCBibG9ja3NpemUpOworICBpZiAoYnl0ZXNfcmVhZCA9PSAwKSB7CisgICAgcmV0ID0gR1NUX0ZMT1dfRU9TOworICAgIGdvdG8gaHR0cF9ldmVudHM7CisgIH0KKyAgcmV0ID0gZ3N0X3Rlc3RfaHR0cF9zcmNfY2FsbGJhY2tzLT5zcmNfY3JlYXRlIChzcmMsCisgICAgICBvZmZzZXQsIGJ5dGVzX3JlYWQsIHJldGJ1ZiwKKyAgICAgIHNyYy0+aW5wdXQuY29udGV4dCwgZ3N0X3Rlc3RfaHR0cF9zcmNfY2FsbGJhY2tfdXNlcl9kYXRhKTsKKyAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgeworICAgIGdvdG8gaHR0cF9ldmVudHM7CisgIH0KKworICBHU1RfQlVGRkVSX09GRlNFVCAoKnJldGJ1ZikgPSBzcmMtPnBvc2l0aW9uOworICBHU1RfQlVGRkVSX09GRlNFVF9FTkQgKCpyZXRidWYpID0gc3JjLT5wb3NpdGlvbiArIGJ5dGVzX3JlYWQ7CisKKyAgc3JjLT5wb3NpdGlvbiArPSBieXRlc19yZWFkOworaHR0cF9ldmVudHM6CisgIGlmIChzcmMtPmh0dHBfaGVhZGVyc19ldmVudCkgeworICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoR1NUX0JBU0VfU1JDX1BBRCAoc3JjKSwgc3JjLT5odHRwX2hlYWRlcnNfZXZlbnQpOworICAgIHNyYy0+aHR0cF9oZWFkZXJzX2V2ZW50ID0gTlVMTDsKKyAgfQorICBpZiAoc3JjLT5kdXJhdGlvbl9jaGFuZ2VkKSB7CisgICAgc3JjLT5kdXJhdGlvbl9jaGFuZ2VkID0gRkFMU0U7CisgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoc3JjKSwKKyAgICAgICAgZ3N0X21lc3NhZ2VfbmV3X2R1cmF0aW9uX2NoYW5nZWQgKEdTVF9PQkpFQ1QgKHNyYykpKTsKKyAgfQorCisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5tdXRleCk7CisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdGVzdF9odHRwX3NyY19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0VGVzdEhUVFBTcmMgKnNyYyA9IEdTVF9URVNUX0hUVFBfU1JDIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9VU0VSX0FHRU5UOgorICAgICAgZ19mcmVlIChzcmMtPnVzZXJfYWdlbnQpOworICAgICAgc3JjLT51c2VyX2FnZW50ID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRVhUUkFfSEVBREVSUzp7CisgICAgICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3RfdmFsdWVfZ2V0X3N0cnVjdHVyZSAodmFsdWUpOworICAgICAgaWYgKHNyYy0+ZXh0cmFfaGVhZGVycykKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9mcmVlIChzcmMtPmV4dHJhX2hlYWRlcnMpOworICAgICAgc3JjLT5leHRyYV9oZWFkZXJzID0gcyA/IGdzdF9zdHJ1Y3R1cmVfY29weSAocykgOiBOVUxMOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9DT01QUkVTUzoKKyAgICAgIHNyYy0+Y29tcHJlc3MgPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7CisgICAgICBHU1RfREVCVUcgKCJTZXQgY29tcHJlc3M9JXMiLCBzcmMtPmNvbXByZXNzID8gIlRSVUUiIDogIkZBTFNFIik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfS0VFUF9BTElWRToKKyAgICAgIHNyYy0+a2VlcF9hbGl2ZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NRVRIT0Q6CisgICAgICBnX2ZyZWUgKHNyYy0+aHR0cF9tZXRob2RfbmFtZSk7CisgICAgICBzcmMtPmh0dHBfbWV0aG9kX25hbWUgPSBnX3ZhbHVlX2R1cF9zdHJpbmcgKHZhbHVlKTsKKyAgICAgIHNyYy0+aHR0cF9tZXRob2QgPSBNRVRIT0RfSU5WQUxJRDsKKyAgICAgIGZvciAoZ3VpbnQgaSA9IDA7IGdzdF90ZXN0X2h0dHBfc3JjX21ldGhvZHNbaV0ubmFtZTsgKytpKSB7CisgICAgICAgIGlmIChzdHJjbXAgKGdzdF90ZXN0X2h0dHBfc3JjX21ldGhvZHNbaV0ubmFtZSwKKyAgICAgICAgICAgICAgICBzcmMtPmh0dHBfbWV0aG9kX25hbWUpID09IDApIHsKKyAgICAgICAgICBzcmMtPmh0dHBfbWV0aG9kID0gZ3N0X3Rlc3RfaHR0cF9zcmNfbWV0aG9kc1tpXS5tZXRob2Q7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIC8qIHdlIGRvbid0IGNhdXNlIGFuIGVycm9yIGZvciBhbiBpbnZhbGlkIG1ldGhvZCBhdCB0aGlzIHBvaW50LAorICAgICAgICAgYXMgR3N0U291cEhUVFBTcmMgZG9lcyBub3QgdXNlIHRoZSBodHRwX21ldGhvZF9uYW1lIHN0cmluZyB1bnRpbAorICAgICAgICAgdHJ5aW5nIHRvIG9wZW4gYSBjb25uZWN0aW9uLgorICAgICAgICovCisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdGVzdF9odHRwX3NyY19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0VGVzdEhUVFBTcmMgKnNyYyA9IEdTVF9URVNUX0hUVFBfU1JDIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9VU0VSX0FHRU5UOgorICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgc3JjLT51c2VyX2FnZW50KTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FWFRSQV9IRUFERVJTOgorICAgICAgZ3N0X3ZhbHVlX3NldF9zdHJ1Y3R1cmUgKHZhbHVlLCBzcmMtPmV4dHJhX2hlYWRlcnMpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NPTVBSRVNTOgorICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIHNyYy0+Y29tcHJlc3MpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0tFRVBfQUxJVkU6CisgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgc3JjLT5rZWVwX2FsaXZlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NRVRIT0Q6CisgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBzcmMtPmh0dHBfbWV0aG9kX25hbWUpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF90ZXN0X2h0dHBfc3JjX3NldF9sb2NhdGlvbiAoR3N0VGVzdEhUVFBTcmMgKiBzcmMsCisgICAgY29uc3QgZ2NoYXIgKiB1cmksIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgZ19tdXRleF9sb2NrICgmc3JjLT5tdXRleCk7CisgIGdfZnJlZSAoc3JjLT51cmkpOworICBzcmMtPnVyaSA9IGdfc3RyZHVwICh1cmkpOworICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEdzdFVSSVR5cGUKK2dzdF90ZXN0X2h0dHBfc3JjX3VyaV9nZXRfdHlwZSAoR1R5cGUgdHlwZSkKK3sKKyAgcmV0dXJuIEdTVF9VUklfU1JDOworfQorCitzdGF0aWMgY29uc3QgZ2NoYXIgKmNvbnN0ICoKK2dzdF90ZXN0X2h0dHBfc3JjX3VyaV9nZXRfcHJvdG9jb2xzIChHVHlwZSB0eXBlKQoreworICBzdGF0aWMgY29uc3QgZ2NoYXIgKnByb3RvY29sc1tdID0geyAiaHR0cCIsIE5VTEwgfTsKKworICByZXR1cm4gcHJvdG9jb2xzOworfQorCitzdGF0aWMgZ2NoYXIgKgorZ3N0X3Rlc3RfaHR0cF9zcmNfdXJpX2dldF91cmkgKEdzdFVSSUhhbmRsZXIgKiBoYW5kbGVyKQoreworICBHc3RUZXN0SFRUUFNyYyAqc3JjID0gR1NUX1RFU1RfSFRUUF9TUkMgKGhhbmRsZXIpOworICBnY2hhciAqcmV0OworICBnX211dGV4X2xvY2sgKCZzcmMtPm11dGV4KTsKKyAgcmV0ID0gZ19zdHJkdXAgKHNyYy0+dXJpKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPm11dGV4KTsKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdGVzdF9odHRwX3NyY191cmlfc2V0X3VyaSAoR3N0VVJJSGFuZGxlciAqIGhhbmRsZXIsIGNvbnN0IGdjaGFyICogdXJpLAorICAgIEdFcnJvciAqKiBlcnIpCit7CisgIEdzdFRlc3RIVFRQU3JjICpzcmMgPSBHU1RfVEVTVF9IVFRQX1NSQyAoaGFuZGxlcik7CisKKyAgcmV0dXJuIGdzdF90ZXN0X2h0dHBfc3JjX3NldF9sb2NhdGlvbiAoc3JjLCB1cmksIGVycik7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdGVzdF9odHRwX3NyY191cmlfaGFuZGxlcl9pbml0IChncG9pbnRlciBnX2lmYWNlLCBncG9pbnRlciBpZmFjZV9kYXRhKQoreworICBHc3RVUklIYW5kbGVySW50ZXJmYWNlICppZmFjZSA9IChHc3RVUklIYW5kbGVySW50ZXJmYWNlICopIGdfaWZhY2U7CisKKyAgaWZhY2UtPmdldF90eXBlID0gZ3N0X3Rlc3RfaHR0cF9zcmNfdXJpX2dldF90eXBlOworICBpZmFjZS0+Z2V0X3Byb3RvY29scyA9IGdzdF90ZXN0X2h0dHBfc3JjX3VyaV9nZXRfcHJvdG9jb2xzOworICBpZmFjZS0+Z2V0X3VyaSA9IGdzdF90ZXN0X2h0dHBfc3JjX3VyaV9nZXRfdXJpOworICBpZmFjZS0+c2V0X3VyaSA9IGdzdF90ZXN0X2h0dHBfc3JjX3VyaV9zZXRfdXJpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF90ZXN0X2h0dHBfc3JjX3BsdWdpbl9pbml0X2Z1bmMgKEdzdFBsdWdpbiAqIHBsdWdpbiwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBQbHVnaW5Jbml0Q29udGV4dCAqY29udGV4dCA9IChQbHVnaW5Jbml0Q29udGV4dCAqKSB1c2VyX2RhdGE7CisgIGdib29sZWFuIHJldDsKKworICByZXQgPQorICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgY29udGV4dC0+bmFtZSwgY29udGV4dC0+cmFuaywKKyAgICAgIGNvbnRleHQtPnR5cGUpOworICByZXR1cm4gcmV0OworfQorCitnYm9vbGVhbgorZ3N0X3Rlc3RfaHR0cF9zcmNfcmVnaXN0ZXJfcGx1Z2luIChHc3RSZWdpc3RyeSAqIHJlZ2lzdHJ5LCBjb25zdCBnY2hhciAqIG5hbWUpCit7CisgIGdib29sZWFuIHJldDsKKyAgUGx1Z2luSW5pdENvbnRleHQgY29udGV4dDsKKworICBjb250ZXh0Lm5hbWUgPSBuYW1lOworICBjb250ZXh0LnJhbmsgPSBHU1RfUkFOS19QUklNQVJZICsgMTsKKyAgY29udGV4dC50eXBlID0gR1NUX1RZUEVfVEVTVF9IVFRQX1NSQzsKKyAgcmV0ID0gZ3N0X3BsdWdpbl9yZWdpc3Rlcl9zdGF0aWNfZnVsbCAoR1NUX1ZFUlNJT05fTUFKT1IsICAgICAvKiB2ZXJzaW9uICovCisgICAgICBHU1RfVkVSU0lPTl9NSU5PUiwgICAgICAgIC8qIHZlcnNpb24gKi8KKyAgICAgIG5hbWUsICAgICAgICAgICAgICAgICAgICAgLyogbmFtZSAqLworICAgICAgIlJlcGxhY2VzIGEgc291cGh0dHBzcmMgcGx1Z2luIGFuZCByZXR1cm5zIHByZWRlZmluZWQgZGF0YS4iLCAgICAgLyogZGVzY3JpcHRpb24gKi8KKyAgICAgIGdzdF90ZXN0X2h0dHBfc3JjX3BsdWdpbl9pbml0X2Z1bmMsICAgICAgIC8qIGluaXQgZnVuY3Rpb24gKi8KKyAgICAgICIwLjAuMCIsICAgICAgICAgICAgICAgICAgLyogdmVyc2lvbiBzdHJpbmcgKi8KKyAgICAgIEdTVF9MSUNFTlNFX1VOS05PV04sICAgICAgLyogbGljZW5zZSAqLworICAgICAgX19GSUxFX18sICAgICAgICAgICAgICAgICAvKiBzb3VyY2UgKi8KKyAgICAgIEdTVF9QQUNLQUdFX05BTUUsICAgICAgICAgLyogcGFja2FnZSAqLworICAgICAgR1NUX1BBQ0tBR0VfT1JJR0lOLCAgICAgICAvKiBvcmlnaW4gKi8KKyAgICAgICZjb250ZXh0ICAgICAgICAgICAgICAgICAgLyogdXNlcl9kYXRhICovCisgICAgICApOworICByZXR1cm4gcmV0OworfQorCit2b2lkCitnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoY29uc3QgR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgKgorICAgIGNhbGxiYWNrcywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBnc3RfdGVzdF9odHRwX3NyY19jYWxsYmFja3MgPSBjYWxsYmFja3M7CisgIGdzdF90ZXN0X2h0dHBfc3JjX2NhbGxiYWNrX3VzZXJfZGF0YSA9IHVzZXJfZGF0YTsKK30KKwordm9pZAorZ3N0X3Rlc3RfaHR0cF9zcmNfc2V0X2RlZmF1bHRfYmxvY2tzaXplIChndWludCBibG9ja3NpemUpCit7CisgIGdzdF90ZXN0X2h0dHBfc3JjX2Jsb2Nrc2l6ZSA9IGJsb2Nrc2l6ZTsKK30KZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuaCBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTE2MWFmCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvdGVzdF9odHRwX3NyYy5oCkBAIC0wLDAgKzEsMTMyIEBACisvKiBIVFRQIHNvdXJjZSBlbGVtZW50IGZvciB1c2UgaW4gdGVzdHMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDwyMDE1PiBZb3VWaWV3IFRWIEx0ZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfVEVTVF9IVFRQX1NSQ19IX18KKyNkZWZpbmUgX19HU1RfVEVTVF9IVFRQX1NSQ19IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX1RFU1RfSFRUUF9TUkMgICAgICAgICAgICAoZ3N0X3Rlc3RfaHR0cF9zcmNfZ2V0X3R5cGUgKCkpCisKKy8qIHN0cnVjdHVyZSB1c2VkIGJ5IHNyY19zdGFydCBmdW5jdGlvbiB0byBjb25maWd1cmUgdGhlCisgKiBHc3RUZXN0SFRUUFNyYyBwbHVnaW4uCisgKiBJdCBzcGVjaWZpZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBnaXZlbiBVUkkuCisgKi8KK3R5cGVkZWYgc3RydWN0IF9Hc3RUZXN0SFRUUFNyY0lucHV0Cit7CisgIGdwb2ludGVyIGNvbnRleHQ7IC8qIG9wYXF1ZSBwb2ludGVyIHRoYXQgY2FuIGJlIHVzZWQgaW4gY2FsbGJhY2tzICovCisgIGd1aW50NjQgc2l6ZTsgLyogc2l6ZSBvZiByZXNvdXJjZSwgaW4gYnl0ZXMgKi8KKyAgR3N0U3RydWN0dXJlICpyZXF1ZXN0X2hlYWRlcnM7CisgIEdzdFN0cnVjdHVyZSAqcmVzcG9uc2VfaGVhZGVyczsKKyAgZ3VpbnQgc3RhdHVzX2NvZGU7IC8qIEhUVFAgc3RhdHVzIGNvZGUgKi8KK30gR3N0VGVzdEhUVFBTcmNJbnB1dDsKKworLyogT3BhcXVlIHN0cnVjdHVyZSB1c2VkIGJ5IEdzdFRlc3RIVFRQU3JjICovCit0eXBlZGVmIHN0cnVjdCBfR3N0VGVzdEhUVFBTcmMgR3N0VGVzdEhUVFBTcmM7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyB7CisgIC8qKgorICAgKiBzcmNfc3RhcnQ6CisgICAqIEBzcmM6IFRoZSAjR3N0VGVzdEhUVFBTcmMgY2FsbGluZyB0aGlzIGNhbGxiYWNrCisgICAqIEB1cmk6IFRoZSBVUkkgdGhhdCBpcyBiZWluZyByZXF1ZXN0ZWQKKyAgICogQGlucHV0X2RhdGE6IChvdXQpIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNhbGxiYWNrIGlzCisgICAqIHJlc3BvbnNpYmxlIGZvciBmaWxsaW5nIGluIHRoaXMgI0dzdFRlc3RIVFRQU3JjSW5wdXQKKyAgICogd2l0aCB0aGUgYXBwcm9wcmlhdGUgaW5mb3JtYXRpb24sIHJldHVybiByZXR1cm5pbmcgJVRSVUUuCisgICAqIElmIHJldHVybmluZyAlRkFMU0UsIG9ubHkgR3N0VGVzdEhUVFBTcmNJbnB1dDo6c3RhdHVzX2NvZGUKKyAgICogc2hvdWxkIGJlIHVwZGF0ZWQuCisgICAqIFJldHVybnM6ICVUUlVFIGlmIEdzdFRlc3RIVFRQU3JjIHNob3VsZCByZXNwb25kIHRvIHRoaXMgVVJJLAorICAgKiB1c2luZyB0aGUgc3VwcGxpZWQgaW5wdXRfZGF0YS4KKyAgICoKKyAgICogc3JjX3N0YXJ0IGlzIHVzZWQgdG8gIm9wZW4iIHRoZSBnaXZlbiBVUkkuIFRoZSBjYWxsYmFjayBtdXN0IHJldHVybgorICAgKiAlVFJVRSB0byBzaW11bGF0ZSBhIHN1Y2Nlc3MsIGFuZCBzZXQgYXBwcm9wcmlhdGUgZmllbGRzIGluIGlucHV0X2RhdGEuCisgICAqIFJldHVybmluZyAlRkFMU0UgaW5kaWNhdGVzIHRoYXQgdGhlIHJlcXVlc3QgVVJJIGlzIG5vdCBmb3VuZC4KKyAgICogSW4gdGhpcyBzaXR1YXRpb24gR3N0VGVzdEhUVFBTcmMgd2lsbCBjYXVzZSB0aGUgYXBwcm9wcmlhdGUKKyAgICogNDA0IGVycm9yIHRvIGJlIHBvc3RlZCB0byB0aGUgYnVzIAorICAgKi8KKyAgZ2Jvb2xlYW4gKCpzcmNfc3RhcnQpKEdzdFRlc3RIVFRQU3JjICpzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgR3N0VGVzdEhUVFBTcmNJbnB1dCAqaW5wdXRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7CisgIC8qKgorICAgKiBzcmNfY3JlYXRlOgorICAgKiBAc3JjOiB0aGUgI0dzdFRlc3RIVFRQU3JjIGNhbGxpbmcgdGhpcyBjYWxsYmFjaworICAgKiBAb2Zmc2V0OiB0aGUgb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSByZXNvdXJjZQorICAgKiBAbGVuZ3RoOiByZXF1ZXN0ZWQgbnVtYmVyIG9mIGJ5dGVzCisgICAqIEByZXRidWY6IChvdXQpIHVzZWQgdG8gcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkICNHc3RCdWZmZXIKKyAgICogQGNvbnRleHQ6IChhbGxvdyBub25lKSB0aGUgdmFsdWUgb2YgdGhlIGNvbnRleHQgZmllbGQKKyAgICogaW4gI0dzdFRlc3RIVFRQU3JjSW5wdXQuCisgICAqIEB1c2VyX2RhdGE6IHRoZSB2YWx1ZSBvZiB1c2VyX2RhdGEgcHJvdmlkZWQgdG8gCisgICAqICNnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcworICAgKiBSZXR1cm5zOiAlR1NUX0ZMT1dfT0sgdG8gaW5kaWNhdGUgc3VjY2Vzcywgb3Igc29tZSBvdGhlciB2YWx1ZSBvZgorICAgKiAjR3N0Rmxvd1JldHVybiB0byBpbmRpY2F0ZSBFT1Mgb3IgZXJyb3IuCisgICAqCisgICAqIFRoZSBzcmNfY3JlYXRlIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIGEgI0dzdEJ1ZmZlciBmb3IKKyAgICogc2ltdWxhdGluZyB0aGUgZGF0YSB0aGF0IGlzIHJldHVybmVkIHdoZW4gYWNjZXNzaW5nIHRoaXMKKyAgICogIm9wZW4iIHN0cmVhbS4gSXQgY2FuIGFsc28gYmUgdXNlZCB0byBzaW11bGF0ZSB2YXJpb3VzIGVycm9yCisgICAqIGNvbmRpdGlvbnMgYnkgcmV0dXJuaW5nIHNvbWV0aGluZyBvdGhlciB0aGFuICVHU1RfRkxPV19PSworICAgKi8KKyAgR3N0Rmxvd1JldHVybiAoKnNyY19jcmVhdGUpKEdzdFRlc3RIVFRQU3JjICpzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDY0IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEJ1ZmZlciAqKiByZXRidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKK30gR3N0VGVzdEhUVFBTcmNDYWxsYmFja3M7CisKK0dUeXBlIGdzdF90ZXN0X2h0dHBfc3JjX2dldF90eXBlICh2b2lkKTsKKworLyoqCisgKiBnc3RfdGVzdF9odHRwX3NyY19yZWdpc3Rlcl9wbHVnaW46CisgKiBAcmVnaXN0cnk6IHRoZSAjR3N0UmVnaXN0cnkgdG8gdXNlIGZvciByZWdpc3RlcmluZyB0aGlzIHBsdWdpbgorICogQG5hbWU6IHRoZSBuYW1lIHRvIHVzZSBmb3IgdGhpcyBwbHVnaW4KKyAqIFJldHVybnM6IHRydWUgaWYgc3VjY2Vzc2Z1bAorICoKKyAqIFJlZ2lzdGVycyB0aGlzIHBsdWdpbiB3aXRoIHRoZSBHc3RSZWdpdHJ5IHVzaW5nIHRoZSBnaXZlbiBuYW1lLiBJdCB3aWxsCisgKiBiZSBnaXZlbiBhIGhpZ2ggcmFuaywgc28gdGhhdCBpdCB3aWxsIGJlIHBpY2tlZCBpbiBwcmVmZXJlbmNlIHRvIGFueQorICogb3RoZXIgZWxlbWVudCB0aGF0IGltcGxlbWVudHMgI0dzdFVSSUhhbmRsZXIuCisgKi8KK2dib29sZWFuIGdzdF90ZXN0X2h0dHBfc3JjX3JlZ2lzdGVyX3BsdWdpbiAoR3N0UmVnaXN0cnkgKiByZWdpc3RyeSwgY29uc3QgZ2NoYXIgKiBuYW1lKTsKKworLyoqCisgKiBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrczoKKyAqIEBjYWxsYmFja3M6IHRoZSAjR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgY2FsbGJhY2sgZnVuY3Rpb25zIHRoYXQgd2lsbAorICogYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhpcyBlbGVtZW50IGlzIGFza2VkIHRvIG9wZW4gYSBVUkkgb3IgcHJvdmlkZSBkYXRhCisgKiBmb3IgYW4gb3BlbiBVUkkuCisgKiBAdXNlcl9kYXRhOiBhIHBvaW50ZXIgdGhhdCBpcyBwYXNzZWQgdG8gZXZlcnkgY2FsbGJhY2sKKyAqLwordm9pZCBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoY29uc3QgR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgKmNhbGxiYWNrcywgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworLyoqCisgKiBnc3RfdGVzdF9odHRwX3NyY19zZXRfZGVmYXVsdF9ibG9ja3NpemU6CisgKiBAYmxvY2tzaXplOiB0aGUgZGVmYXVsdCBibG9jayBzaXplIHRvIHVzZSAoMD11c2UgI0dzdEJhc2VTcmMgZGVmYXVsdCkKKyAqCisgKiBTZXQgdGhlIGRlZmF1bHQgYmxvY2tzaXplIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IGluc3RhbmNlcyBvZgorICogI0dzdFRlc3RIVFRQU3JjLiBJdCBzcGVjaWZpZXMgdGhlIHNpemUgKGluIGJ5dGVzKSB0aGF0IHdpbGwgYmUKKyAqIHJldHVybmVkIGluIGVhY2ggI0dzdEJ1ZmZlci4gVGhpcyBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuCisgKiBieSBhbiBpbnN0YW5jZSBvZiAjR3N0VGVzdEhUVFBTcmMgdXNpbmcgdGhlICJibG9ja3NpemUiIHByb3BlcnR5CisgKiBvZiAjR3N0QmFzZVNyYworICovCit2b2lkIGdzdF90ZXN0X2h0dHBfc3JjX3NldF9kZWZhdWx0X2Jsb2Nrc2l6ZSAoZ3VpbnQgYmxvY2tzaXplKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX1RFU1RfSFRUUF9TUkNfSF9fICovCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNTczOTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYwpAQCAtMCwwICsxLDYzNiBAQAorLyogR1N0cmVhbWVyIHVuaXQgdGVzdCBmb3IgdmlkZW9mcmFtZS1hdWRpb2xldmVsCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1IFZpdmlhIE5pa29sYWlkb3UgPHZpdmlhQHRvb2xzb25haXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjIGluY2x1ZGUgPGNvbmZpZy5oPgorI2VuZGlmCisKKy8qIHN1cHByZXNzIHdhcm5pbmdzIGZvciBkZXByZWNhdGVkIEFQSSBzdWNoIGFzIEdWYWx1ZUFycmF5CisgKiB3aXRoIG5ld2VyIEdMaWIgdmVyc2lvbnMgKD49IDIuMzEuMCkgKi8KKyNkZWZpbmUgR0xJQl9ESVNBQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTCisKKyNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KKyNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KKworc3RhdGljIGdib29sZWFuIGdvdF9lb3M7CitzdGF0aWMgZ3VpbnQgYXVkaW9fYnVmZmVyX2NvdW50LCB2aWRlb19idWZmZXJfY291bnQ7CitzdGF0aWMgR3N0U2VnbWVudCBjdXJyZW50X2F1ZGlvX3NlZ21lbnQsIGN1cnJlbnRfdmlkZW9fc2VnbWVudDsKK3N0YXRpYyBndWludCBudW1fbXNnczsKK3N0YXRpYyBHUXVldWUgdl90aW1lc3RhbXBfcSwgbXNnX3RpbWVzdGFtcF9xOworCitzdGF0aWMgZ3VpbnQgbl9hYnVmZmVycywgbl92YnVmZmVyczsKK3N0YXRpYyBndWludCBjaGFubmVscywgZmlsbF92YWx1ZTsKK3N0YXRpYyBnZG91YmxlIGV4cGVjdGVkX3JtczsKK3N0YXRpYyBnYm9vbGVhbiBhdWRpb2RlbGF5LCB2aWRlb2RlbGF5LCBwZXJfY2hhbm5lbCwgbG9uZ192aWRlbzsKK3N0YXRpYyBnYm9vbGVhbiBlYXJseV92aWRlbywgbGF0ZV92aWRlbzsKK3N0YXRpYyBnYm9vbGVhbiB2aWRlb19nYXBzLCB2aWRlb19vdmVybGFwczsKK3N0YXRpYyBnYm9vbGVhbiBhdWRpb19ub25kaXNjb250LCBhdWRpb19kcmlmdDsKKworc3RhdGljIGd1aW50IGZpbGxfdmFsdWVfcGVyX2NoYW5uZWxbXSA9IHsgMCwgMSB9Oworc3RhdGljIGdkb3VibGUgZXhwZWN0ZWRfcm1zX3Blcl9jaGFubmVsW10gPSB7IDAsIDAuMDA3ODEyNSB9OworCitzdGF0aWMgdm9pZAorc2V0X2RlZmF1bHRfcGFyYW1zICh2b2lkKQoreworICBuX2FidWZmZXJzID0gNDA7CisgIG5fdmJ1ZmZlcnMgPSAxNTsKKyAgY2hhbm5lbHMgPSAyOworICBleHBlY3RlZF9ybXMgPSAwLjAwNzgxMjU7CisgIGZpbGxfdmFsdWUgPSAxOworICBhdWRpb2RlbGF5ID0gRkFMU0U7CisgIHZpZGVvZGVsYXkgPSBGQUxTRTsKKyAgcGVyX2NoYW5uZWwgPSBGQUxTRTsKKyAgbG9uZ192aWRlbyA9IEZBTFNFOworICB2aWRlb19nYXBzID0gRkFMU0U7CisgIHZpZGVvX292ZXJsYXBzID0gRkFMU0U7CisgIGF1ZGlvX25vbmRpc2NvbnQgPSBGQUxTRTsKKyAgYXVkaW9fZHJpZnQgPSBGQUxTRTsKKyAgZWFybHlfdmlkZW8gPSBGQUxTRTsKKyAgbGF0ZV92aWRlbyA9IEZBTFNFOworfTsKKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK291dHB1dF9hY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBidWZmZXIpCit7CisgIEdzdENsb2NrVGltZSB0aW1lc3RhbXA7CisgIGd1aW50OCBiOworICBnYm9vbGVhbiBhdWRpb19qaXR0ZXIgPSBhdWRpb19ub25kaXNjb250IHx8IGF1ZGlvX2RyaWZ0IHx8IGVhcmx5X3ZpZGVvOworCisgIHRpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpOworICBpZiAoIWF1ZGlvX2ppdHRlcikKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50NjQgKHRpbWVzdGFtcCwKKyAgICAgICAgKGF1ZGlvX2J1ZmZlcl9jb3VudCAlIG5fYWJ1ZmZlcnMpICogMSAqIEdTVF9TRUNPTkQpOworICB0aW1lc3RhbXAgPQorICAgICAgZ3N0X3NlZ21lbnRfdG9fc3RyZWFtX3RpbWUgKCZjdXJyZW50X2F1ZGlvX3NlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwKKyAgICAgIHRpbWVzdGFtcCk7CisgIGlmICghYXVkaW9faml0dGVyKQorICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQ2NCAodGltZXN0YW1wLAorICAgICAgICAoYXVkaW9fYnVmZmVyX2NvdW50ICUgbl9hYnVmZmVycykgKiAxICogR1NUX1NFQ09ORCk7CisKKyAgdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcik7CisgIHRpbWVzdGFtcCA9CisgICAgICBnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUgKCZjdXJyZW50X2F1ZGlvX3NlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwKKyAgICAgIHRpbWVzdGFtcCk7CisgIGlmICghYXVkaW9faml0dGVyKQorICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQ2NCAodGltZXN0YW1wLCBhdWRpb19idWZmZXJfY291bnQgKiAxICogR1NUX1NFQ09ORCk7CisKKyAgZ3N0X2J1ZmZlcl9leHRyYWN0IChidWZmZXIsIDAsICZiLCAxKTsKKworICBpZiAocGVyX2NoYW5uZWwpIHsKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChiLCBmaWxsX3ZhbHVlX3Blcl9jaGFubmVsWzBdKTsKKyAgfSBlbHNlIHsKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChiLCBmaWxsX3ZhbHVlKTsKKyAgfQorCisgIGF1ZGlvX2J1ZmZlcl9jb3VudCsrOworICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOworICByZXR1cm4gR1NUX0ZMT1dfT0s7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorb3V0cHV0X2FldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpCit7CisgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgeworICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUT1A6CisgICAgICBnc3Rfc2VnbWVudF9pbml0ICgmY3VycmVudF9hdWRpb19zZWdtZW50LCBHU1RfRk9STUFUX1VOREVGSU5FRCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9FVkVOVF9TRUdNRU5UOgorICAgICAgZ3N0X2V2ZW50X2NvcHlfc2VnbWVudCAoZXZlbnQsICZjdXJyZW50X2F1ZGlvX3NlZ21lbnQpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfRVZFTlRfRU9TOgorICAgICAgZ290X2VvcyA9IFRSVUU7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitvdXRwdXRfdmNoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmZmVyKQoreworICBHc3RDbG9ja1RpbWUgdGltZXN0YW1wOworICBndWludDggYjsKKyAgZ2Jvb2xlYW4gaml0dGVyID0gdmlkZW9fZ2FwcyB8fCB2aWRlb19vdmVybGFwcyB8fCBsYXRlX3ZpZGVvOworCisgIHRpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpOworICBpZiAoIWppdHRlcikKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50NjQgKHRpbWVzdGFtcCwKKyAgICAgICAgKHZpZGVvX2J1ZmZlcl9jb3VudCAlIG5fdmJ1ZmZlcnMpICogMjUgKiBHU1RfTVNFQ09ORCk7CisgIHRpbWVzdGFtcCA9CisgICAgICBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSAoJmN1cnJlbnRfdmlkZW9fc2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLAorICAgICAgdGltZXN0YW1wKTsKKyAgaWYgKCFqaXR0ZXIpCisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludDY0ICh0aW1lc3RhbXAsCisgICAgICAgICh2aWRlb19idWZmZXJfY291bnQgJSBuX3ZidWZmZXJzKSAqIDI1ICogR1NUX01TRUNPTkQpOworCisgIHRpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpOworICB0aW1lc3RhbXAgPQorICAgICAgZ3N0X3NlZ21lbnRfdG9fcnVubmluZ190aW1lICgmY3VycmVudF92aWRlb19zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCisgICAgICB0aW1lc3RhbXApOworICBpZiAoIWppdHRlcikKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50NjQgKHRpbWVzdGFtcCwgdmlkZW9fYnVmZmVyX2NvdW50ICogMjUgKiBHU1RfTVNFQ09ORCk7CisKKyAgZ3N0X2J1ZmZlcl9leHRyYWN0IChidWZmZXIsIDAsICZiLCAxKTsKKyAgaWYgKCFqaXR0ZXIpCisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoYiwgdmlkZW9fYnVmZmVyX2NvdW50ICUgbl92YnVmZmVycyk7CisKKyAgdmlkZW9fYnVmZmVyX2NvdW50Kys7CisgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CisgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworc3RhdGljIGdib29sZWFuCitvdXRwdXRfdmV2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCkKK3sKKyAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7CisgICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RPUDoKKyAgICAgIGdzdF9zZWdtZW50X2luaXQgKCZjdXJyZW50X3ZpZGVvX3NlZ21lbnQsIEdTVF9GT1JNQVRfVU5ERUZJTkVEKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0VWRU5UX1NFR01FTlQ6CisgICAgICBnc3RfZXZlbnRfY29weV9zZWdtZW50IChldmVudCwgJmN1cnJlbnRfdmlkZW9fc2VnbWVudCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9FVkVOVF9FT1M6CisgICAgICBnb3RfZW9zID0gVFJVRTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdwb2ludGVyCitwdXNoX2FidWZmZXJzIChncG9pbnRlciBkYXRhKQoreworICBHc3RTZWdtZW50IHNlZ21lbnQ7CisgIEdzdFBhZCAqcGFkID0gZGF0YTsKKyAgZ2ludCBpLCBqLCBrOworICBHc3RDbG9ja1RpbWUgdGltZXN0YW1wID0gMDsKKyAgR3N0QXVkaW9JbmZvIGluZm87CisgIEdzdENhcHMgKmNhcHM7CisgIGd1aW50IGJ1Zl9zaXplID0gMTAwMDsKKworICBpZiAoYXVkaW9kZWxheSkKKyAgICBnX3VzbGVlcCAoMjAwMCk7CisKKyAgaWYgKGVhcmx5X3ZpZGVvKQorICAgIHRpbWVzdGFtcCA9IDUwICogR1NUX01TRUNPTkQ7CisKKyAgZ3N0X3BhZF9zZW5kX2V2ZW50IChwYWQsIGdzdF9ldmVudF9uZXdfc3RyZWFtX3N0YXJ0ICgidGVzdCIpKTsKKworICBnc3RfYXVkaW9faW5mb19zZXRfZm9ybWF0ICgmaW5mbywgR1NUX0FVRElPX0ZPUk1BVF9TOCwgYnVmX3NpemUsIGNoYW5uZWxzLAorICAgICAgTlVMTCk7CisgIGNhcHMgPSBnc3RfYXVkaW9faW5mb190b19jYXBzICgmaW5mbyk7CisgIGdzdF9wYWRfc2VuZF9ldmVudCAocGFkLCBnc3RfZXZlbnRfbmV3X2NhcHMgKGNhcHMpKTsKKyAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworCisgIGdzdF9zZWdtZW50X2luaXQgKCZzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOworICBnc3RfcGFkX3NlbmRfZXZlbnQgKHBhZCwgZ3N0X2V2ZW50X25ld19zZWdtZW50ICgmc2VnbWVudCkpOworCisgIGZvciAoaSA9IDA7IGkgPCBuX2FidWZmZXJzOyBpKyspIHsKKyAgICBHc3RCdWZmZXIgKmJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAoY2hhbm5lbHMgKiBidWZfc2l6ZSk7CisKKyAgICBpZiAocGVyX2NoYW5uZWwpIHsKKyAgICAgIEdzdE1hcEluZm8gbWFwOworICAgICAgZ3VpbnQ4ICppbl9kYXRhOworCisgICAgICBnc3RfYnVmZmVyX21hcCAoYnVmLCAmbWFwLCBHU1RfTUFQX1dSSVRFKTsKKyAgICAgIGluX2RhdGEgPSBtYXAuZGF0YTsKKworICAgICAgZm9yIChqID0gMDsgaiA8IGJ1Zl9zaXplOyBqKyspIHsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IGNoYW5uZWxzOyBrKyspIHsKKyAgICAgICAgICBpbl9kYXRhW2ogKiBjaGFubmVscyArIGtdID0gZmlsbF92YWx1ZV9wZXJfY2hhbm5lbFtrXTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZtYXApOworICAgIH0gZWxzZSB7CisgICAgICBnc3RfYnVmZmVyX21lbXNldCAoYnVmLCAwLCBmaWxsX3ZhbHVlLCBjaGFubmVscyAqIGJ1Zl9zaXplKTsKKyAgICB9CisKKyAgICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSA9IHRpbWVzdGFtcDsKKyAgICB0aW1lc3RhbXAgKz0gMSAqIEdTVF9TRUNPTkQ7CisgICAgaWYgKGF1ZGlvX2RyaWZ0KQorICAgICAgdGltZXN0YW1wICs9IDUwICogR1NUX01TRUNPTkQ7CisgICAgZWxzZSBpZiAoaSA9PSA0ICYmIGF1ZGlvX25vbmRpc2NvbnQpCisgICAgICB0aW1lc3RhbXAgKz0gMzAgKiBHU1RfTVNFQ09ORDsKKyAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpID0gdGltZXN0YW1wIC0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1Zik7CisKKyAgICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9jaGFpbiAocGFkLCBidWYpID09IEdTVF9GTE9XX09LKTsKKyAgfQorICBnc3RfcGFkX3NlbmRfZXZlbnQgKHBhZCwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgZ3BvaW50ZXIKK3B1c2hfdmJ1ZmZlcnMgKGdwb2ludGVyIGRhdGEpCit7CisgIEdzdFNlZ21lbnQgc2VnbWVudDsKKyAgR3N0UGFkICpwYWQgPSBkYXRhOworICBnaW50IGk7CisgIEdzdENsb2NrVGltZSB0aW1lc3RhbXAgPSAwOworCisgIGlmICh2aWRlb2RlbGF5KQorICAgIGdfdXNsZWVwICgyMDAwKTsKKworICBpZiAobGF0ZV92aWRlbykKKyAgICB0aW1lc3RhbXAgPSA1MCAqIEdTVF9NU0VDT05EOworCisgIGdzdF9wYWRfc2VuZF9ldmVudCAocGFkLCBnc3RfZXZlbnRfbmV3X3N0cmVhbV9zdGFydCAoInRlc3QiKSk7CisgIGdzdF9zZWdtZW50X2luaXQgKCZzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOworICBnc3RfcGFkX3NlbmRfZXZlbnQgKHBhZCwgZ3N0X2V2ZW50X25ld19zZWdtZW50ICgmc2VnbWVudCkpOworCisgIGZvciAoaSA9IDA7IGkgPCBuX3ZidWZmZXJzOyBpKyspIHsKKyAgICBHc3RCdWZmZXIgKmJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAoMTAwMCk7CisgICAgR3N0Q2xvY2tUaW1lICpydGltZSA9IGdfbmV3IChHc3RDbG9ja1RpbWUsIDEpOworCisgICAgZ3N0X2J1ZmZlcl9tZW1zZXQgKGJ1ZiwgMCwgaSwgMSk7CisKKyAgICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSA9IHRpbWVzdGFtcDsKKyAgICB0aW1lc3RhbXAgKz0gMjUgKiBHU1RfTVNFQ09ORDsKKyAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpID0gdGltZXN0YW1wIC0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1Zik7CisgICAgKnJ0aW1lID0gZ3N0X3NlZ21lbnRfdG9fcnVubmluZ190aW1lICgmc2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLCB0aW1lc3RhbXApOworICAgIGdfcXVldWVfcHVzaF90YWlsICgmdl90aW1lc3RhbXBfcSwgcnRpbWUpOworCisgICAgaWYgKGkgPT0gNCkgeworICAgICAgaWYgKHZpZGVvX2dhcHMpCisgICAgICAgIHRpbWVzdGFtcCArPSAxMCAqIEdTVF9NU0VDT05EOworICAgICAgZWxzZSBpZiAodmlkZW9fb3ZlcmxhcHMpCisgICAgICAgIHRpbWVzdGFtcCAtPSAxMCAqIEdTVF9NU0VDT05EOworICAgIH0KKworICAgIGZhaWxfdW5sZXNzIChnc3RfcGFkX2NoYWluIChwYWQsIGJ1ZikgPT0gR1NUX0ZMT1dfT0spOworICB9CisgIGdzdF9wYWRfc2VuZF9ldmVudCAocGFkLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSk7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBHc3RCdXNTeW5jUmVwbHkKK29uX21lc3NhZ2UgKEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1lc3NhZ2UsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgY29uc3QgR3N0U3RydWN0dXJlICpzID0gZ3N0X21lc3NhZ2VfZ2V0X3N0cnVjdHVyZSAobWVzc2FnZSk7CisgIGNvbnN0IGdjaGFyICpuYW1lID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAocyk7CisgIEdWYWx1ZUFycmF5ICpybXNfYXJyOworICBjb25zdCBHVmFsdWUgKmFycmF5X3ZhbDsKKyAgY29uc3QgR1ZhbHVlICp2YWx1ZTsKKyAgZ2RvdWJsZSBybXM7CisgIGdpbnQgY2hhbm5lbHMyOworICBndWludCBpOworICBHc3RDbG9ja1RpbWUgKnJ0aW1lID0gZ19uZXcgKEdzdENsb2NrVGltZSwgMSk7CisKKyAgaWYgKG1lc3NhZ2UtPnR5cGUgIT0gR1NUX01FU1NBR0VfRUxFTUVOVAorICAgICAgfHwgc3RyY21wIChuYW1lLCAidmlkZW9mcmFtZS1hdWRpb2xldmVsIikgIT0gMCkKKyAgICBnb3RvIGRvbmU7CisKKyAgbnVtX21zZ3MrKzsKKyAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9jbG9ja190aW1lIChzLCAicnVubmluZy10aW1lIiwgcnRpbWUpKQorICAgIGdfd2FybmluZyAoIkNvdWxkIG5vdCBwYXJzZSBydW5uaW5nIHRpbWUiKTsKKyAgZWxzZQorICAgIGdfcXVldWVfcHVzaF90YWlsICgmbXNnX3RpbWVzdGFtcF9xLCBydGltZSk7CisKKyAgLyogdGhlIHZhbHVlcyBhcmUgcGFja2VkIGludG8gR1ZhbHVlQXJyYXlzIHdpdGggdGhlIHZhbHVlIHBlciBjaGFubmVsICovCisgIGFycmF5X3ZhbCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChzLCAicm1zIik7CisgIHJtc19hcnIgPSAoR1ZhbHVlQXJyYXkgKikgZ192YWx1ZV9nZXRfYm94ZWQgKGFycmF5X3ZhbCk7CisgIGNoYW5uZWxzMiA9IHJtc19hcnItPm5fdmFsdWVzOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFubmVsczIsIGNoYW5uZWxzKTsKKworICBmb3IgKGkgPSAwOyBpIDwgY2hhbm5lbHM7ICsraSkgeworICAgIHZhbHVlID0gZ192YWx1ZV9hcnJheV9nZXRfbnRoIChybXNfYXJyLCBpKTsKKyAgICBybXMgPSBnX3ZhbHVlX2dldF9kb3VibGUgKHZhbHVlKTsKKyAgICBpZiAocGVyX2NoYW5uZWwpIHsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19mbG9hdCAocm1zLCBleHBlY3RlZF9ybXNfcGVyX2NoYW5uZWxbaV0pOworICAgIH0gZWxzZSBpZiAoZWFybHlfdmlkZW8gJiYgKnJ0aW1lIDw9IDUwICogR1NUX01TRUNPTkQpIHsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19mbG9hdCAocm1zLCAwKTsKKyAgICB9IGVsc2UgeworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2Zsb2F0IChybXMsIGV4cGVjdGVkX3Jtcyk7CisgICAgfQorICB9CisKK2RvbmU6CisgIHJldHVybiBHU1RfQlVTX1BBU1M7Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZW5lcmljICh2b2lkKQoreworICBHc3RFbGVtZW50ICphbGV2ZWw7CisgIEdzdFBhZCAqYXNpbmssICp2c2luaywgKmFzcmMsICp2c3JjLCAqYW91dHB1dF9zaW5rLCAqdm91dHB1dF9zaW5rOworICBHVGhyZWFkICphdGhyZWFkLCAqdnRocmVhZDsKKyAgR3N0QnVzICpidXM7CisgIGd1aW50IGk7CisKKyAgZ290X2VvcyA9IEZBTFNFOworICBhdWRpb19idWZmZXJfY291bnQgPSAwOworICB2aWRlb19idWZmZXJfY291bnQgPSAwOworICBudW1fbXNncyA9IDA7CisKKyAgZ19xdWV1ZV9pbml0ICgmdl90aW1lc3RhbXBfcSk7CisgIGdfcXVldWVfaW5pdCAoJm1zZ190aW1lc3RhbXBfcSk7CisKKyAgYWxldmVsID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgidmlkZW9mcmFtZS1hdWRpb2xldmVsIiwgTlVMTCk7CisgIGZhaWxfdW5sZXNzIChhbGV2ZWwgIT0gTlVMTCk7CisKKyAgYnVzID0gZ3N0X2J1c19uZXcgKCk7CisgIGdzdF9lbGVtZW50X3NldF9idXMgKGFsZXZlbCwgYnVzKTsKKyAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyIChidXMsIG9uX21lc3NhZ2UsIE5VTEwsIE5VTEwpOworCisgIGFzaW5rID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKGFsZXZlbCwgImFzaW5rIik7CisgIGZhaWxfdW5sZXNzIChhc2luayAhPSBOVUxMKTsKKworICB2c2luayA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChhbGV2ZWwsICJ2c2luayIpOworICBmYWlsX3VubGVzcyAodnNpbmsgIT0gTlVMTCk7CisKKyAgYXNyYyA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChhbGV2ZWwsICJhc3JjIik7CisgIGFvdXRwdXRfc2luayA9IGdzdF9wYWRfbmV3ICgic2luayIsIEdTVF9QQURfU0lOSyk7CisgIGZhaWxfdW5sZXNzIChhb3V0cHV0X3NpbmsgIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzIChnc3RfcGFkX2xpbmsgKGFzcmMsIGFvdXRwdXRfc2luaykgPT0gR1NUX1BBRF9MSU5LX09LKTsKKworICB2c3JjID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKGFsZXZlbCwgInZzcmMiKTsKKyAgdm91dHB1dF9zaW5rID0gZ3N0X3BhZF9uZXcgKCJzaW5rIiwgR1NUX1BBRF9TSU5LKTsKKyAgZmFpbF91bmxlc3MgKHZvdXRwdXRfc2luayAhPSBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfbGluayAodnNyYywgdm91dHB1dF9zaW5rKSA9PSBHU1RfUEFEX0xJTktfT0spOworCisgIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uIChhb3V0cHV0X3NpbmssIG91dHB1dF9hY2hhaW4pOworICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoYW91dHB1dF9zaW5rLCBvdXRwdXRfYWV2ZW50KTsKKworICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAodm91dHB1dF9zaW5rLCBvdXRwdXRfdmNoYWluKTsKKyAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKHZvdXRwdXRfc2luaywgb3V0cHV0X3ZldmVudCk7CisKKyAgZ3N0X3BhZF9zZXRfYWN0aXZlIChhb3V0cHV0X3NpbmssIFRSVUUpOworICBnc3RfcGFkX3NldF9hY3RpdmUgKHZvdXRwdXRfc2luaywgVFJVRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKGFsZXZlbCwKKyAgICAgICAgICBHU1RfU1RBVEVfUExBWUlORykgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKKworICBhdGhyZWFkID0gZ190aHJlYWRfbmV3ICgiYXRocmVhZCIsIChHVGhyZWFkRnVuYykgcHVzaF9hYnVmZmVycywgYXNpbmspOworICB2dGhyZWFkID0gZ190aHJlYWRfbmV3ICgidnRocmVhZCIsIChHVGhyZWFkRnVuYykgcHVzaF92YnVmZmVycywgdnNpbmspOworCisgIGdfdGhyZWFkX2pvaW4gKHZ0aHJlYWQpOworICBnX3RocmVhZF9qb2luIChhdGhyZWFkKTsKKworICBmYWlsX3VubGVzcyAoZ290X2Vvcyk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGF1ZGlvX2J1ZmZlcl9jb3VudCwgbl9hYnVmZmVycyk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKHZpZGVvX2J1ZmZlcl9jb3VudCwgbl92YnVmZmVycyk7CisgIGlmICghbG9uZ192aWRlbykKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChudW1fbXNncywgbl92YnVmZmVycyk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19xdWV1ZV9nZXRfbGVuZ3RoICgmdl90aW1lc3RhbXBfcSksIG5fdmJ1ZmZlcnMpOworICAvKiBudW1fbXNncyBpcyBlcXVhbCB0byBuX3ZidWZmZXJzIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBsb25nX3ZpZGVvICovCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfcXVldWVfZ2V0X2xlbmd0aCAoJm1zZ190aW1lc3RhbXBfcSksIG51bV9tc2dzKTsKKworICBmb3IgKGkgPSAwOyBpIDwgZ19xdWV1ZV9nZXRfbGVuZ3RoICgmbXNnX3RpbWVzdGFtcF9xKTsgaSsrKSB7CisgICAgR3N0Q2xvY2tUaW1lICp2dCA9IGdfcXVldWVfcG9wX2hlYWQgKCZ2X3RpbWVzdGFtcF9xKTsKKyAgICBHc3RDbG9ja1RpbWUgKm10ID0gZ19xdWV1ZV9wb3BfaGVhZCAoJm1zZ190aW1lc3RhbXBfcSk7CisgICAgZmFpbF91bmxlc3MgKHZ0ICE9IE5VTEwpOworICAgIGZhaWxfdW5sZXNzIChtdCAhPSBOVUxMKTsKKyAgICBpZiAoIXZpZGVvX2dhcHMgJiYgIXZpZGVvX292ZXJsYXBzICYmICFlYXJseV92aWRlbykKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc191aW50NjQgKCp2dCwgKm10KTsKKyAgICBnX2ZyZWUgKHZ0KTsKKyAgICBnX2ZyZWUgKG10KTsKKyAgfQorCisgIC8qIHRlYXJkb3duICovCisgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoYWxldmVsLCBHU1RfU1RBVEVfTlVMTCk7CisgIGdzdF9idXNfc2V0X2ZsdXNoaW5nIChidXMsIFRSVUUpOworICBnc3Rfb2JqZWN0X3VucmVmIChidXMpOworICBnX3F1ZXVlX2ZvcmVhY2ggKCZ2X3RpbWVzdGFtcF9xLCAoR0Z1bmMpIGdfZnJlZSwgTlVMTCk7CisgIGdfcXVldWVfZm9yZWFjaCAoJm1zZ190aW1lc3RhbXBfcSwgKEdGdW5jKSBnX2ZyZWUsIE5VTEwpOworICBnX3F1ZXVlX2NsZWFyICgmdl90aW1lc3RhbXBfcSk7CisgIGdfcXVldWVfY2xlYXIgKCZtc2dfdGltZXN0YW1wX3EpOworICBnc3RfcGFkX3VubGluayAoYXNyYywgYW91dHB1dF9zaW5rKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoYXNyYyk7CisgIGdzdF9wYWRfdW5saW5rICh2c3JjLCB2b3V0cHV0X3NpbmspOworICBnc3Rfb2JqZWN0X3VucmVmICh2c3JjKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoYXNpbmspOworICBnc3Rfb2JqZWN0X3VucmVmICh2c2luayk7CisgIGdzdF9wYWRfc2V0X2FjdGl2ZSAoYW91dHB1dF9zaW5rLCBGQUxTRSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGFvdXRwdXRfc2luayk7CisgIGdzdF9wYWRfc2V0X2FjdGl2ZSAodm91dHB1dF9zaW5rLCBGQUxTRSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHZvdXRwdXRfc2luayk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGFsZXZlbCk7Cit9CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF8xNmNoYW5fMSkKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICBjaGFubmVscyA9IDE2OworICB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZW5lcmljICgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF84Y2hhbl8xKQoreworICBzZXRfZGVmYXVsdF9wYXJhbXMgKCk7CisgIGNoYW5uZWxzID0gODsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfMmNoYW5fMSkKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZW5lcmljICgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF8xY2hhbl8xKQoreworICBzZXRfZGVmYXVsdF9wYXJhbXMgKCk7CisgIGNoYW5uZWxzID0gMTsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfMTZjaGFuXzApCit7CisgIHNldF9kZWZhdWx0X3BhcmFtcyAoKTsKKyAgY2hhbm5lbHMgPSAxNjsKKyAgZXhwZWN0ZWRfcm1zID0gMDsKKyAgZmlsbF92YWx1ZSA9IDA7CisgIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dlbmVyaWMgKCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsXzhjaGFuXzApCit7CisgIHNldF9kZWZhdWx0X3BhcmFtcyAoKTsKKyAgY2hhbm5lbHMgPSA4OworICBleHBlY3RlZF9ybXMgPSAwOworICBmaWxsX3ZhbHVlID0gMDsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfMmNoYW5fMCkKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICBjaGFubmVscyA9IDI7CisgIGV4cGVjdGVkX3JtcyA9IDA7CisgIGZpbGxfdmFsdWUgPSAwOworICB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZW5lcmljICgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF8xY2hhbl8wKQoreworICBzZXRfZGVmYXVsdF9wYXJhbXMgKCk7CisgIGNoYW5uZWxzID0gMTsKKyAgZXhwZWN0ZWRfcm1zID0gMDsKKyAgZmlsbF92YWx1ZSA9IDA7CisgIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dlbmVyaWMgKCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2FkZWxheSkKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICBhdWRpb2RlbGF5ID0gVFJVRTsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfdmRlbGF5KQoreworICBzZXRfZGVmYXVsdF9wYXJhbXMgKCk7CisgIHZpZGVvZGVsYXkgPSBUUlVFOworICB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZW5lcmljICgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9wZXJfY2hhbm5lbCkKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICBwZXJfY2hhbm5lbCA9IFRSVUU7CisgIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dlbmVyaWMgKCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2xvbmdfdmlkZW8pCit7CisgIHNldF9kZWZhdWx0X3BhcmFtcyAoKTsKKyAgbl9hYnVmZmVycyA9IDY7CisgIG5fdmJ1ZmZlcnMgPSAyNTU7CisgIGxvbmdfdmlkZW8gPSBUUlVFOworICB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZW5lcmljICgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF92aWRlb19nYXBzKQoreworICBzZXRfZGVmYXVsdF9wYXJhbXMgKCk7CisgIHZpZGVvX2dhcHMgPSBUUlVFOworICB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZW5lcmljICgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF92aWRlb19vdmVybGFwcykKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICB2aWRlb19vdmVybGFwcyA9IFRSVUU7CisgIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dlbmVyaWMgKCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2F1ZGlvX25vbmRpc2NvbnQpCit7CisgIHNldF9kZWZhdWx0X3BhcmFtcyAoKTsKKyAgYXVkaW9fbm9uZGlzY29udCA9IFRSVUU7CisgIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dlbmVyaWMgKCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2F1ZGlvX2RyaWZ0KQoreworICBzZXRfZGVmYXVsdF9wYXJhbXMgKCk7CisgIGF1ZGlvX2RyaWZ0ID0gVFJVRTsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworR1NUX1NUQVJUX1RFU1QgKHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2Vhcmx5X3ZpZGVvKQoreworICBzZXRfZGVmYXVsdF9wYXJhbXMgKCk7CisgIGVhcmx5X3ZpZGVvID0gVFJVRTsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGF0ZV92aWRlbykKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICBsYXRlX3ZpZGVvID0gVFJVRTsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworCisKK3N0YXRpYyBTdWl0ZSAqCit2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfc3VpdGUgKHZvaWQpCit7CisgIFN1aXRlICpzID0gc3VpdGVfY3JlYXRlICgidmlkZW9mcmFtZS1hdWRpb2xldmVsIik7CisgIFRDYXNlICp0Y19jaGFpbjsKKworICB0Y19jaGFpbiA9IHRjYXNlX2NyZWF0ZSAoInZpZGVvZnJhbWUtYXVkaW9sZXZlbCIpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsXzE2Y2hhbl8xKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF84Y2hhbl8xKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF8yY2hhbl8xKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF8xY2hhbl8xKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF8xNmNoYW5fMCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfOGNoYW5fMCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfMmNoYW5fMCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfMWNoYW5fMCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfYWRlbGF5KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF92ZGVsYXkpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX3Blcl9jaGFubmVsKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sb25nX3ZpZGVvKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF92aWRlb19nYXBzKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF92aWRlb19vdmVybGFwcyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfYXVkaW9fbm9uZGlzY29udCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfYXVkaW9fZHJpZnQpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2Vhcmx5X3ZpZGVvKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYXRlX3ZpZGVvKTsKKyAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19jaGFpbik7CisKKyAgcmV0dXJuIHM7Cit9CisKK0dTVF9DSEVDS19NQUlOICh2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svbGlicy9hZ2dyZWdhdG9yLmMgYi90ZXN0cy9jaGVjay9saWJzL2FnZ3JlZ2F0b3IuYwppbmRleCBiMjFjN2NkLi4xNjM1NWI5IDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9saWJzL2FnZ3JlZ2F0b3IuYworKysgYi90ZXN0cy9jaGVjay9saWJzL2FnZ3JlZ2F0b3IuYwpAQCAtMzQ0LDcgKzM0NCw3IEBACiAgICAgICBnX2F0b21pY19pbnRfaW5jICgmdGVzdC0+Zmx1c2hfc3RvcF9ldmVudHMpOwogICB9CiAKLSAgcmV0dXJuIEdTVF9QQURfUFJPQkVfRFJPUDsKKyAgcmV0dXJuIEdTVF9QQURfUFJPQkVfSEFORExFRDsKIH0KIAogLyoKQEAgLTcyMyw2ICs3MjMsNyBAQAogCiAgIGdzdF9zZWdtZW50X2luaXQgKCZHU1RfQUdHUkVHQVRPUiAodGVzdC5hZ2dyZWdhdG9yKS0+c2VnbWVudCwKICAgICAgIEdTVF9GT1JNQVRfVElNRSk7CisKICAgLyogbm93IGRvIGEgc3VjY2Vzc2Z1bCBmbHVzaGluZyBzZWVrICovCiAgIGV2ZW50ID0gZ3N0X2V2ZW50X25ld19zZWVrICgxLCBHU1RfRk9STUFUX1RJTUUsIEdTVF9TRUVLX0ZMQUdfRkxVU0gsCiAgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDEwICogR1NUX1NFQ09ORCk7CkBAIC03NjUsNyArNzY2LDcgQEAKICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChkYXRhMi5zcmNwYWQsIGdzdF9ldmVudF9uZXdfZmx1c2hfc3RvcCAoVFJVRSkpOwogCiAgIC8qIGFuZCB0aGUgbGFzdCBGTFVTSF9TVE9QIGlzIGZvcndhcmRlZCBkb3duc3RyZWFtICovCi0gIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKHRlc3QuZmx1c2hfc3RhcnRfZXZlbnRzLCAxKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAodGVzdC5mbHVzaF9zdG9wX2V2ZW50cywgMSk7CiAKICAgLyogIENoZWNrIGNvbGxlY3RlZCAqLwogICBnc3RfcGFkX2FkZF9wcm9iZSAodGVzdC5zcmNwYWQsIEdTVF9QQURfUFJPQkVfVFlQRV9CVUZGRVIsCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9saWJzL2dzdGdsY29sb3Jjb252ZXJ0LmMgYi90ZXN0cy9jaGVjay9saWJzL2dzdGdsY29sb3Jjb252ZXJ0LmMKaW5kZXggMmEwMTI2My4uZjJiZTUxNCAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svbGlicy9nc3RnbGNvbG9yY29udmVydC5jCisrKyBiL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb2xvcmNvbnZlcnQuYwpAQCAtMTE2LDE3ICsxMTYsMjAgQEAKIHN0YXRpYyB2b2lkCiBjaGVja19jb252ZXJzaW9uIChUZXN0RnJhbWUgKiBmcmFtZXMsIGd1aW50IHNpemUpCiB7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqYmFzZV9tZW1fYWxsb2M7CiAgIGdpbnQgaSwgaiwgaywgbDsKICAgZ2ludCByZWZfY291bnQgPSAwOwogCisgIGJhc2VfbWVtX2FsbG9jID0KKyAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IgKGdzdF9hbGxvY2F0b3JfZmluZAorICAgICAgKEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUUpKTsKKwogICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgR3N0QnVmZmVyICppbmJ1ZjsKICAgICBHc3RWaWRlb0luZm8gaW5faW5mbzsKICAgICBnaW50IGluX3dpZHRoID0gZnJhbWVzW2ldLndpZHRoOwogICAgIGdpbnQgaW5faGVpZ2h0ID0gZnJhbWVzW2ldLmhlaWdodDsKICAgICBHc3RWaWRlb0Zvcm1hdCBpbl92X2Zvcm1hdCA9IGZyYW1lc1tpXS52X2Zvcm1hdDsKLSAgICBnY2hhciAqaW5fZGF0YVtHU1RfVklERU9fTUFYX1BMQU5FU10gPSB7IDAgfTsKLSAgICBHc3RHTE1lbW9yeSAqaW5fbWVtW0dTVF9WSURFT19NQVhfUExBTkVTXSA9IHsgMCB9OwogICAgIEdzdFZpZGVvRnJhbWUgaW5fZnJhbWU7CiAgICAgR3N0Q2FwcyAqaW5fY2FwczsKIApAQCAtMTM1LDE4ICsxMzgsMjIgQEAKICAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMgKGluX2NhcHMsIDAsCiAgICAgICAgIGdzdF9jYXBzX2ZlYXR1cmVzX2Zyb21fc3RyaW5nIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpKTsKIAotICAgIGZvciAoaiA9IDA7IGogPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJmluX2luZm8pOyBqKyspIHsKLSAgICAgIGluX2RhdGFbal0gPSBmcmFtZXNbaV0uZGF0YVtqXTsKLSAgICB9Ci0KICAgICAvKiBjcmVhdGUgR0wgYnVmZmVyICovCi0gICAgcmVmX2NvdW50ICs9IEdTVF9WSURFT19JTkZPX05fUExBTkVTICgmaW5faW5mbyk7CiAgICAgaW5idWYgPSBnc3RfYnVmZmVyX25ldyAoKTsKLSAgICBmYWlsX3VubGVzcyAoZ3N0X2dsX21lbW9yeV9zZXR1cF93cmFwcGVkIChjb250ZXh0LCAmaW5faW5mbywgTlVMTCwKLSAgICAgICAgICAgIChncG9pbnRlciAqKSBpbl9kYXRhLCBpbl9tZW0sICZyZWZfY291bnQsIF9mcmFtZV91bnJlZikpOwotCiAgICAgZm9yIChqID0gMDsgaiA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTICgmaW5faW5mbyk7IGorKykgewotICAgICAgZ3N0X2J1ZmZlcl9hcHBlbmRfbWVtb3J5IChpbmJ1ZiwgKEdzdE1lbW9yeSAqKSBpbl9tZW1bal0pOworICAgICAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKKyAgICAgIEdzdEdMQmFzZU1lbW9yeSAqbWVtOworCisgICAgICByZWZfY291bnQrKzsKKyAgICAgIHBhcmFtcyA9IGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhIChjb250ZXh0LCBOVUxMLAorICAgICAgICAgICZpbl9pbmZvLCBqLCBOVUxMLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQsIGZyYW1lc1tpXS5kYXRhW2pdLAorICAgICAgICAgICZyZWZfY291bnQsIF9mcmFtZV91bnJlZik7CisKKyAgICAgIG1lbSA9IGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoYmFzZV9tZW1fYWxsb2MsCisgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICAgICAgZ3N0X2J1ZmZlcl9hcHBlbmRfbWVtb3J5IChpbmJ1ZiwgR1NUX01FTU9SWV9DQVNUIChtZW0pKTsKKworICAgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKICAgICB9CiAKICAgICBmYWlsX3VubGVzcyAoZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJmluX2ZyYW1lLCAmaW5faW5mbywgaW5idWYsCkBAIC0xNTUsOCArMTYyLDggQEAKICAgICAvKiBzYW5pdHkgY2hlY2sgdGhhdCB0aGUgY29ycmVjdCB2YWx1ZXMgd2VyZSB3cmFwcGVkICovCiAgICAgZm9yIChqID0gMDsgaiA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTICgmaW5faW5mbyk7IGorKykgewogICAgICAgZm9yIChrID0gMDsgayA8IF92aWRlb19pbmZvX3BsYW5lX3NpemUgKCZpbl9pbmZvLCBqKTsgaysrKSB7Ci0gICAgICAgIGlmIChpbl9kYXRhW2pdW2tdICE9IElHTk9SRV9NQUdJQykKLSAgICAgICAgICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBpbl9mcmFtZS5kYXRhW2pdKVtrXSA9PSBpbl9kYXRhW2pdW2tdKTsKKyAgICAgICAgaWYgKGZyYW1lc1tpXS5kYXRhW2pdW2tdICE9IElHTk9SRV9NQUdJQykKKyAgICAgICAgICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBpbl9mcmFtZS5kYXRhW2pdKVtrXSA9PSBmcmFtZXNbaV0uZGF0YVtqXVtrXSk7CiAgICAgICB9CiAgICAgfQogCkBAIC0yMTQsNiArMjIxLDggQEAKIAogICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKHJlZl9jb3VudCwgMCk7CiAgIH0KKworICBnc3Rfb2JqZWN0X3VucmVmIChiYXNlX21lbV9hbGxvYyk7CiB9CiAKIEdTVF9TVEFSVF9URVNUICh0ZXN0X3Jlb3JkZXJfYnVmZmVyKQpAQCAtMjMyLDcgKzI0MSw3IEBACiBzdGF0aWMgU3VpdGUgKgogZ3N0X2dsX2NvbG9yX2NvbnZlcnRfc3VpdGUgKHZvaWQpCiB7Ci0gIFN1aXRlICpzID0gc3VpdGVfY3JlYXRlICgiR3N0R0xVcGxvYWQiKTsKKyAgU3VpdGUgKnMgPSBzdWl0ZV9jcmVhdGUgKCJHc3RHTENvbG9yQ29udmVydCIpOwogICBUQ2FzZSAqdGNfY2hhaW4gPSB0Y2FzZV9jcmVhdGUgKCJ1cGxvYWQiKTsKIAogICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2NoYWluKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb250ZXh0LmMgYi90ZXN0cy9jaGVjay9saWJzL2dzdGdsY29udGV4dC5jCmluZGV4IDhiYjVmOTkuLmYyZjI3ZjggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb250ZXh0LmMKKysrIGIvdGVzdHMvY2hlY2svbGlicy9nc3RnbGNvbnRleHQuYwpAQCAtMjgsMjkgKzI4LDYgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLSNpZiBHU1RfR0xfSEFWRV9HTEVTMgotLyogKklOREVOVC1PRkYqICovCi1zdGF0aWMgY29uc3QgZ2NoYXIgKnZlcnRleF9zaGFkZXJfc3RyX2dsZXMyID0KLSAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOyAgIFxuIgotICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7ICAgXG4iCi0gICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICBcbiIKLSAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAiICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyBcbiIKLSAgICAgICIgICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsgIFxuIgotICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotCi1zdGF0aWMgY29uc3QgZ2NoYXIgKmZyYWdtZW50X3NoYWRlcl9zdHJfZ2xlczIgPQotICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAiICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoIHNfdGV4dHVyZSwgdl90ZXhDb29yZCApO1xuIgotICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0vKiAqSU5ERU5ULU9OKiAqLwotI2VuZGlmCi0KIHN0YXRpYyBHc3RHTERpc3BsYXkgKmRpc3BsYXk7CiAKIHN0YXRpYyB2b2lkCkBAIC02NSwxOSArNDIsMjcgQEAKICAgZ3N0X29iamVjdF91bnJlZiAoZGlzcGxheSk7CiB9CiAKLXN0YXRpYyBHTHVpbnQgZmJvX2lkLCByYm8sIHRleDsKK3N0YXRpYyBHTHVpbnQgdmJvLCB2Ym9faW5kaWNlcywgdmFvLCBmYm9faWQsIHJibywgdGV4Owogc3RhdGljIEdzdEdMRnJhbWVidWZmZXIgKmZibzsKLSNpZiBHU1RfR0xfSEFWRV9HTEVTMgotc3RhdGljIEdFcnJvciAqZXJyb3I7CiBzdGF0aWMgR3N0R0xTaGFkZXIgKnNoYWRlcjsKIHN0YXRpYyBHTGludCBzaGFkZXJfYXR0cl9wb3NpdGlvbl9sb2M7CiBzdGF0aWMgR0xpbnQgc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2M7Ci0jZW5kaWYKKworc3RhdGljIGNvbnN0IEdMZmxvYXQgdmVydGljZXNbXSA9IHsKKyAgLyogeCwgeSwgeiwgcywgdCAqLworICAxLjBmLCAxLjBmLCAwLjBmLCAxLjBmLCAwLjBmLAorICAtMS4wZiwgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwKKyAgLTEuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLCAxLjBmLAorICAxLjBmLCAtMS4wZiwgMC4wZiwgMS4wZiwgMS4wZgorfTsKKworc3RhdGljIGNvbnN0IEdMdXNob3J0IGluZGljZXNbXSA9IHsgMCwgMSwgMiwgMCwgMiwgMyB9OwogCiBzdGF0aWMgdm9pZAogaW5pdCAoZ3BvaW50ZXIgZGF0YSkKIHsKICAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gZGF0YTsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CiAKICAgLyogaGFzIHRvIGJlIGNhbGxlZCBpbiB0aGUgdGhyZWFkIHRoYXQgaXMgZ29pbmcgdG8gdXNlIHRoZSBmcmFtZWJ1ZmZlciAqLwogICBmYm8gPSBnc3RfZ2xfZnJhbWVidWZmZXJfbmV3IChjb250ZXh0KTsKQEAgLTg4LDI1ICs3MywxNCBAQAogICBnc3RfZ2xfY29udGV4dF9nZW5fdGV4dHVyZSAoY29udGV4dCwgJnRleCwgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBLCAzMjAsIDI0MCk7CiAgIGZhaWxfaWYgKHRleCA9PSAwLCAiZmFpbGVkIHRvIGNyZWF0ZSB0ZXh0dXJlIik7CiAKLSNpZiBHU1RfR0xfSEFWRV9HTEVTMgotICBpZiAoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoY29udGV4dCkgJiBHU1RfR0xfQVBJX0dMRVMyKSB7Ci0gICAgc2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXcgKGNvbnRleHQpOwotICAgIGZhaWxfaWYgKHNoYWRlciA9PSBOVUxMLCAiZmFpbGVkIHRvIGNyZWF0ZSBzaGFkZXIgb2JqZWN0Iik7CisgIHNoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3X2RlZmF1bHQgKGNvbnRleHQsICZlcnJvcik7CisgIGZhaWxfaWYgKHNoYWRlciA9PSBOVUxMLCAiZmFpbGVkIHRvIGNyZWF0ZSBzaGFkZXIgb2JqZWN0OiAlcyIsCisgICAgICBlcnJvci0+bWVzc2FnZSk7CiAKLSAgICBnc3RfZ2xfc2hhZGVyX3NldF92ZXJ0ZXhfc291cmNlIChzaGFkZXIsIHZlcnRleF9zaGFkZXJfc3RyX2dsZXMyKTsKLSAgICBnc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2UgKHNoYWRlciwgZnJhZ21lbnRfc2hhZGVyX3N0cl9nbGVzMik7Ci0KLSAgICBlcnJvciA9IE5VTEw7Ci0gICAgZ3N0X2dsX3NoYWRlcl9jb21waWxlIChzaGFkZXIsICZlcnJvcik7Ci0gICAgZmFpbF9pZiAoZXJyb3IgIT0gTlVMTCwgIkVycm9yIGNvbXBpbGluZyBzaGFkZXIgJXNcbiIsCi0gICAgICAgIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAiVW5rbm93biBFcnJvciIpOwotCi0gICAgc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jID0KLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsICJhX3Bvc2l0aW9uIik7Ci0gICAgc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MgPQotICAgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfdGV4Q29vcmQiKTsKLSAgfQotI2VuZGlmCisgIHNoYWRlcl9hdHRyX3Bvc2l0aW9uX2xvYyA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfcG9zaXRpb24iKTsKKyAgc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsICJhX3RleGNvb3JkIik7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMTUsMTEgKzg5LDEwIEBACiAgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IGRhdGE7CiAgIEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOwogICBnbC0+RGVsZXRlVGV4dHVyZXMgKDEsICZ0ZXgpOworICBpZiAodmFvKQorICAgIGdsLT5EZWxldGVWZXJ0ZXhBcnJheXMgKDEsICZ2YW8pOwogICBnc3Rfb2JqZWN0X3VucmVmIChmYm8pOwotI2lmIEdTVF9HTF9IQVZFX0dMRVMyCi0gIGlmIChnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChjb250ZXh0KSAmIEdTVF9HTF9BUElfR0xFUzIpCi0gICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKLSNlbmRpZgorICBnc3Rfb2JqZWN0X3VucmVmIChzaGFkZXIpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTQ1LDg2ICsxMTgsMTEyIEBACiB9CiAKIHN0YXRpYyB2b2lkCitfYmluZF9idWZmZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworCisgIGdsLT5CaW5kQnVmZmVyIChHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgdmJvX2luZGljZXMpOworICBnbC0+QmluZEJ1ZmZlciAoR0xfQVJSQVlfQlVGRkVSLCB2Ym8pOworCisgIC8qIExvYWQgdGhlIHZlcnRleCBwb3NpdGlvbiAqLworICBnbC0+VmVydGV4QXR0cmliUG9pbnRlciAoc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsCisgICAgICA1ICogc2l6ZW9mIChHTGZsb2F0KSwgKHZvaWQgKikgMCk7CisKKyAgLyogTG9hZCB0aGUgdGV4dHVyZSBjb29yZGluYXRlICovCisgIGdsLT5WZXJ0ZXhBdHRyaWJQb2ludGVyIChzaGFkZXJfYXR0cl90ZXh0dXJlX2xvYywgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLAorICAgICAgNSAqIHNpemVvZiAoR0xmbG9hdCksICh2b2lkICopICgzICogc2l6ZW9mIChHTGZsb2F0KSkpOworCisgIGdsLT5FbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSAoc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jKTsKKyAgZ2wtPkVuYWJsZVZlcnRleEF0dHJpYkFycmF5IChzaGFkZXJfYXR0cl90ZXh0dXJlX2xvYyk7Cit9CisKK3N0YXRpYyB2b2lkCitfdW5iaW5kX2J1ZmZlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisKKyAgZ2wtPkJpbmRCdWZmZXIgKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCAwKTsKKyAgZ2wtPkJpbmRCdWZmZXIgKEdMX0FSUkFZX0JVRkZFUiwgMCk7CisKKyAgZ2wtPkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSAoc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jKTsKKyAgZ2wtPkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSAoc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MpOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9ibGl0IChncG9pbnRlciBkYXRhKQoreworICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBkYXRhOworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBpZiAoIXZibykgeworICAgIGlmIChnbC0+R2VuVmVydGV4QXJyYXlzKSB7CisgICAgICBnbC0+R2VuVmVydGV4QXJyYXlzICgxLCAmdmFvKTsKKyAgICAgIGdsLT5CaW5kVmVydGV4QXJyYXkgKHZhbyk7CisgICAgfQorCisgICAgZ2wtPkdlbkJ1ZmZlcnMgKDEsICZ2Ym8pOworICAgIGdsLT5CaW5kQnVmZmVyIChHTF9BUlJBWV9CVUZGRVIsIHZibyk7CisgICAgZ2wtPkJ1ZmZlckRhdGEgKEdMX0FSUkFZX0JVRkZFUiwgNCAqIDUgKiBzaXplb2YgKEdMZmxvYXQpLCB2ZXJ0aWNlcywKKyAgICAgICAgR0xfU1RBVElDX0RSQVcpOworCisgICAgZ2wtPkdlbkJ1ZmZlcnMgKDEsICZ2Ym9faW5kaWNlcyk7CisgICAgZ2wtPkJpbmRCdWZmZXIgKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCB2Ym9faW5kaWNlcyk7CisgICAgZ2wtPkJ1ZmZlckRhdGEgKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBzaXplb2YgKGluZGljZXMpLCBpbmRpY2VzLAorICAgICAgICBHTF9TVEFUSUNfRFJBVyk7CisKKyAgICBpZiAoZ2wtPkdlblZlcnRleEFycmF5cykgeworICAgICAgX2JpbmRfYnVmZmVyIChjb250ZXh0KTsKKyAgICAgIGdsLT5CaW5kVmVydGV4QXJyYXkgKDApOworICAgIH0KKworICAgIGdsLT5CaW5kQnVmZmVyIChHTF9BUlJBWV9CVUZGRVIsIDApOworICAgIGdsLT5CaW5kQnVmZmVyIChHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMCk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2RlaW5pdF9ibGl0IChncG9pbnRlciBkYXRhKQoreworICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBkYXRhOworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBpZiAodmJvKQorICAgIGdsLT5EZWxldGVCdWZmZXJzICgxLCAmdmJvKTsKKyAgdmJvID0gMDsKKyAgaWYgKHZib19pbmRpY2VzKQorICAgIGdsLT5EZWxldGVCdWZmZXJzICgxLCAmdmJvX2luZGljZXMpOworICB2Ym9faW5kaWNlcyA9IDA7CisgIGlmICh2YW8pCisgICAgZ2wtPkRlbGV0ZVZlcnRleEFycmF5cyAoMSwgJnZhbyk7CisgIHZhbyA9IDA7Cit9CisKK3N0YXRpYyB2b2lkCiBkcmF3X3JlbmRlciAoZ3BvaW50ZXIgZGF0YSkKIHsKICAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gZGF0YTsKICAgR3N0R0xDb250ZXh0Q2xhc3MgKmNvbnRleHRfY2xhc3MgPSBHU1RfR0xfQ09OVEVYVF9HRVRfQ0xBU1MgKGNvbnRleHQpOwogICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICAvKiByZWRyYXcgdGhlIHRleHR1cmUgaW50byB0aGUgc3lzdGVtIHByb3ZpZGVkIGZyYW1lYnVmZmVyICovCisgIGdsLT5DbGVhciAoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CiAKLSNpZiBHU1RfR0xfSEFWRV9PUEVOR0wKLSAgaWYgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKGNvbnRleHQpICYgR1NUX0dMX0FQSV9PUEVOR0wpIHsKLSAgICBHTGZsb2F0IHZlcnRzWzhdID0geyAxLjBmLCAxLjBmLAotICAgICAgLTEuMGYsIDEuMGYsCi0gICAgICAtMS4wZiwgLTEuMGYsCi0gICAgICAxLjBmLCAtMS4wZgotICAgIH07Ci0gICAgR0xmbG9hdCB0ZXhjb29yZHNbOF0gPSB7IDEuMGYsIDAuMGYsCi0gICAgICAwLjBmLCAwLjBmLAotICAgICAgMC4wZiwgMS4wZiwKLSAgICAgIDEuMGYsIDEuMGYKLSAgICB9OworICBnc3RfZ2xfc2hhZGVyX3VzZSAoc2hhZGVyKTsKIAotICAgIGdsLT5WaWV3cG9ydCAoMCwgMCwgMzIwLCAyNDApOworICBnbC0+QWN0aXZlVGV4dHVyZSAoR0xfVEVYVFVSRTApOworICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIHRleCk7CisgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKHNoYWRlciwgInNfdGV4dHVyZSIsIDApOwogCi0gICAgZ2wtPkNsZWFyIChHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCk7CisgIGlmIChnbC0+R2VuVmVydGV4QXJyYXlzKQorICAgIGdsLT5CaW5kVmVydGV4QXJyYXkgKHZhbyk7CisgIGVsc2UKKyAgICBfYmluZF9idWZmZXIgKGNvbnRleHQpOwogCi0gICAgZ2wtPk1hdHJpeE1vZGUgKEdMX1BST0pFQ1RJT04pOwotICAgIGdsLT5Mb2FkSWRlbnRpdHkgKCk7CisgIGdsLT5EcmF3RWxlbWVudHMgKEdMX1RSSUFOR0xFUywgNiwgR0xfVU5TSUdORURfU0hPUlQsIDApOwogCi0gICAgZ2wtPkFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwKTsKLSAgICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIHRleCk7Ci0KLSAgICBnbC0+RW5hYmxlQ2xpZW50U3RhdGUgKEdMX1ZFUlRFWF9BUlJBWSk7Ci0gICAgZ2wtPlZlcnRleFBvaW50ZXIgKDIsIEdMX0ZMT0FULCAwLCAmdmVydHMpOwotCi0gICAgZ2wtPkNsaWVudEFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwKTsKLSAgICBnbC0+RW5hYmxlQ2xpZW50U3RhdGUgKEdMX1RFWFRVUkVfQ09PUkRfQVJSQVkpOwotICAgIGdsLT5UZXhDb29yZFBvaW50ZXIgKDIsIEdMX0ZMT0FULCAwLCAmdGV4Y29vcmRzKTsKLQotICAgIGdsLT5EcmF3QXJyYXlzIChHTF9UUklBTkdMRV9GQU4sIDAsIDQpOwotCi0gICAgZ2wtPkRpc2FibGVDbGllbnRTdGF0ZSAoR0xfVkVSVEVYX0FSUkFZKTsKLSAgICBnbC0+RGlzYWJsZUNsaWVudFN0YXRlIChHTF9URVhUVVJFX0NPT1JEX0FSUkFZKTsKLSAgfQotI2VuZGlmCi0jaWYgR1NUX0dMX0hBVkVfR0xFUzIKLSAgaWYgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKGNvbnRleHQpICYgR1NUX0dMX0FQSV9HTEVTMikgewotICAgIGNvbnN0IEdMZmxvYXQgdlZlcnRpY2VzW10gPSB7IDEuMGYsIDEuMGYsIDAuMGYsCi0gICAgICAxLjBmLCAwLjBmLAotICAgICAgLTEuMGYsIDEuMGYsIDAuMGYsCi0gICAgICAwLjBmLCAwLjBmLAotICAgICAgLTEuMGYsIC0xLjBmLCAwLjBmLAotICAgICAgMC4wZiwgMS4wZiwKLSAgICAgIDEuMGYsIC0xLjBmLCAwLjBmLAotICAgICAgMS4wZiwgMS4wZgotICAgIH07Ci0KLSAgICBHTHVzaG9ydCBpbmRpY2VzW10gPSB7IDAsIDEsIDIsIDAsIDIsIDMgfTsKLQotICAgIGdsLT5DbGVhciAoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICBnc3RfZ2xfc2hhZGVyX3VzZSAoc2hhZGVyKTsKLQotICAgIC8qIExvYWQgdGhlIHZlcnRleCBwb3NpdGlvbiAqLwotICAgIGdsLT5WZXJ0ZXhBdHRyaWJQb2ludGVyIChzaGFkZXJfYXR0cl9wb3NpdGlvbl9sb2MsIDMsCi0gICAgICAgIEdMX0ZMT0FULCBHTF9GQUxTRSwgNSAqIHNpemVvZiAoR0xmbG9hdCksIHZWZXJ0aWNlcyk7Ci0KLSAgICAvKiBMb2FkIHRoZSB0ZXh0dXJlIGNvb3JkaW5hdGUgKi8KLSAgICBnbC0+VmVydGV4QXR0cmliUG9pbnRlciAoc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MsIDIsCi0gICAgICAgIEdMX0ZMT0FULCBHTF9GQUxTRSwgNSAqIHNpemVvZiAoR0xmbG9hdCksICZ2VmVydGljZXNbM10pOwotCi0gICAgZ2wtPkVuYWJsZVZlcnRleEF0dHJpYkFycmF5IChzaGFkZXJfYXR0cl9wb3NpdGlvbl9sb2MpOwotICAgIGdsLT5FbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSAoc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MpOwotCi0gICAgZ2wtPkFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwKTsKLSAgICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIHRleCk7Ci0gICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaSAoc2hhZGVyLCAic190ZXh0dXJlIiwgMCk7Ci0KLSAgICBnbC0+RHJhd0VsZW1lbnRzIChHTF9UUklBTkdMRVMsIDYsIEdMX1VOU0lHTkVEX1NIT1JULCBpbmRpY2VzKTsKLSAgfQotI2VuZGlmCisgIGlmIChnbC0+R2VuVmVydGV4QXJyYXlzKQorICAgIGdsLT5CaW5kVmVydGV4QXJyYXkgKDApOworICBlbHNlCisgICAgX3VuYmluZF9idWZmZXIgKGNvbnRleHQpOwogCiAgIGNvbnRleHRfY2xhc3MtPnN3YXBfYnVmZmVycyAoY29udGV4dCk7CiB9CkBAIC0yNjMsNiArMjYyLDcgQEAKICAgZ3N0X2dsX3dpbmRvd19kcmF3ICh3aW5kb3cpOwogCiAgIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlIChvdGhlcl93aW5kb3csIEdTVF9HTF9XSU5ET1dfQ0IgKGluaXQpLCBjb250ZXh0KTsKKyAgZ3N0X2dsX3dpbmRvd19zZW5kX21lc3NhZ2UgKHdpbmRvdywgR1NUX0dMX1dJTkRPV19DQiAoaW5pdF9ibGl0KSwgY29udGV4dCk7CiAKICAgd2hpbGUgKGkgPCAxMCkgewogICAgIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlIChvdGhlcl93aW5kb3csIEdTVF9HTF9XSU5ET1dfQ0IgKGRyYXdfdGV4KSwKQEAgLTI3Myw2ICsyNzMsNyBAQAogICB9CiAKICAgZ3N0X2dsX3dpbmRvd19zZW5kX21lc3NhZ2UgKG90aGVyX3dpbmRvdywgR1NUX0dMX1dJTkRPV19DQiAoZGVpbml0KSwgY29udGV4dCk7CisgIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlICh3aW5kb3csIEdTVF9HTF9XSU5ET1dfQ0IgKGRlaW5pdF9ibGl0KSwgY29udGV4dCk7CiAKICAgZ3N0X29iamVjdF91bnJlZiAod2luZG93KTsKICAgZ3N0X29iamVjdF91bnJlZiAob3RoZXJfd2luZG93KTsKQEAgLTMxNCw2ICszMTUsNyBAQAogICBmYWlsX2lmICghcmV0LCAiZXJyb3IgcmVjZWl2ZWQgJXNcbiIsCiAgICAgICBlcnJvciA/IGVycm9yLT5tZXNzYWdlIDogIlVua25vd24gZXJyb3IiKTsKICAgZmFpbF9pZiAod3JhcHBlZF9jb250ZXh0LT5nbF92dGFibGUtPlRleEltYWdlMkQgPT0gTlVMTCk7CisgIGdzdF9nbF9jb250ZXh0X2FjdGl2YXRlICh3cmFwcGVkX2NvbnRleHQsIEZBTFNFKTsKIH0KIAogR1NUX1NUQVJUX1RFU1QgKHRlc3Rfd3JhcHBlZF9jb250ZXh0KQpAQCAtMzY1LDYgKzM2Nyw3IEBACiAgIGdzdF9nbF93aW5kb3dfZHJhdyAod2luZG93KTsKIAogICBnc3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZSAob3RoZXJfd2luZG93LCBHU1RfR0xfV0lORE9XX0NCIChpbml0KSwgY29udGV4dCk7CisgIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlICh3aW5kb3csIEdTVF9HTF9XSU5ET1dfQ0IgKGluaXRfYmxpdCksIGNvbnRleHQpOwogCiAgIHdoaWxlIChpIDwgMTApIHsKICAgICBnc3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZSAob3RoZXJfd2luZG93LCBHU1RfR0xfV0lORE9XX0NCIChkcmF3X3RleCksCkBAIC0zNzgsNiArMzgxLDcgQEAKICAgICAgIHdyYXBwZWRfY29udGV4dCk7CiAKICAgZ3N0X2dsX3dpbmRvd19zZW5kX21lc3NhZ2UgKG90aGVyX3dpbmRvdywgR1NUX0dMX1dJTkRPV19DQiAoZGVpbml0KSwgY29udGV4dCk7CisgIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlICh3aW5kb3csIEdTVF9HTF9XSU5ET1dfQ0IgKGRlaW5pdF9ibGl0KSwgY29udGV4dCk7CiAKICAgZ3N0X29iamVjdF91bnJlZiAob3RoZXJfY29udGV4dCk7CiAgIGdzdF9vYmplY3RfdW5yZWYgKG90aGVyX3dpbmRvdyk7CkBAIC00ODUsNiArNDg5LDEyNSBAQAogCiBHU1RfRU5EX1RFU1Q7CiAKK0dTVF9TVEFSVF9URVNUICh0ZXN0X2lzX3NoYXJlZCkKK3sKKyAgR3N0R0xDb250ZXh0ICpjMSwgKmMyOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBjMSA9IGdzdF9nbF9jb250ZXh0X25ldyAoZGlzcGxheSk7CisgIGdzdF9nbF9jb250ZXh0X2NyZWF0ZSAoYzEsIE5VTEwsICZlcnJvcik7CisgIGZhaWxfaWYgKGVycm9yICE9IE5VTEwsICJFcnJvciBjcmVhdGluZyBjb250ZXh0ICVzXG4iLAorICAgICAgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJVbmtub3duIEVycm9yIik7CisKKyAgYzIgPSBnc3RfZ2xfY29udGV4dF9uZXcgKGRpc3BsYXkpOworICBnc3RfZ2xfY29udGV4dF9jcmVhdGUgKGMyLCBjMSwgJmVycm9yKTsKKyAgZmFpbF9pZiAoZXJyb3IgIT0gTlVMTCwgIkVycm9yIGNyZWF0aW5nIGNvbnRleHQgJXNcbiIsCisgICAgICBlcnJvciA/IGVycm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X2dsX2NvbnRleHRfaXNfc2hhcmVkIChjMSkpOworICBmYWlsX3VubGVzcyAoZ3N0X2dsX2NvbnRleHRfaXNfc2hhcmVkIChjMikpOworCisgIGdzdF9vYmplY3RfdW5yZWYgKGMyKTsKKyAgYzIgPSBOVUxMOworCisgIGZhaWxfdW5sZXNzICghZ3N0X2dsX2NvbnRleHRfaXNfc2hhcmVkIChjMSkpOworCisgIGdzdF9vYmplY3RfdW5yZWYgKGMxKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF9kaXNwbGF5X2xpc3QpCit7CisgIEdzdEdMQ29udGV4dCAqYzEsICpjMjsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisKKyAgYzEgPSBnc3RfZ2xfY29udGV4dF9uZXcgKGRpc3BsYXkpOworICBnc3RfZ2xfY29udGV4dF9jcmVhdGUgKGMxLCBOVUxMLCAmZXJyb3IpOworICBmYWlsX2lmIChlcnJvciAhPSBOVUxMLCAiRXJyb3IgY3JlYXRpbmcgY29udGV4dCAlc1xuIiwKKyAgICAgIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAiVW5rbm93biBFcnJvciIpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoZGlzcGxheSk7CisgIHsKKyAgICAvKiBubyBjb250ZXh0IGFkZGVkIHNvIGdldCBzaG91bGQgcmV0dXJuIE5VTEwgKi8KKyAgICBHc3RHTENvbnRleHQgKnRtcCA9CisgICAgICAgIGdzdF9nbF9kaXNwbGF5X2dldF9nbF9jb250ZXh0X2Zvcl90aHJlYWQgKGRpc3BsYXksIE5VTEwpOworICAgIGZhaWxfdW5sZXNzICh0bXAgPT0gTlVMTCk7CisgIH0KKworICBmYWlsX3VubGVzcyAoZ3N0X2dsX2Rpc3BsYXlfYWRkX2NvbnRleHQgKGRpc3BsYXksIGMxKSk7CisgIC8qIHJlLWFkZGluZyB0aGUgc2FtZSBjb250ZXh0IGlzIGEgbm8tb3AgKi8KKyAgZmFpbF91bmxlc3MgKGdzdF9nbF9kaXNwbGF5X2FkZF9jb250ZXh0IChkaXNwbGF5LCBjMSkpOworCisgIHsKKyAgICBHVGhyZWFkICp0aHJlYWQ7CisgICAgR3N0R0xDb250ZXh0ICp0bXA7CisKKyAgICB0aHJlYWQgPSBnc3RfZ2xfY29udGV4dF9nZXRfdGhyZWFkIChjMSk7CisgICAgZmFpbF91bmxlc3MgKHRocmVhZCAhPSBOVUxMKTsKKworICAgIHRtcCA9IGdzdF9nbF9kaXNwbGF5X2dldF9nbF9jb250ZXh0X2Zvcl90aHJlYWQgKGRpc3BsYXksIHRocmVhZCk7CisgICAgZmFpbF91bmxlc3MgKHRtcCA9PSBjMSk7CisgICAgZ190aHJlYWRfdW5yZWYgKHRocmVhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZiAodG1wKTsKKworICAgIHRtcCA9IGdzdF9nbF9kaXNwbGF5X2dldF9nbF9jb250ZXh0X2Zvcl90aHJlYWQgKGRpc3BsYXksIE5VTEwpOworICAgIGZhaWxfdW5sZXNzICh0bXAgPT0gYzEpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHRtcCk7CisgIH0KKworICBjMiA9IGdzdF9nbF9jb250ZXh0X25ldyAoZGlzcGxheSk7CisgIGdzdF9nbF9jb250ZXh0X2NyZWF0ZSAoYzIsIGMxLCAmZXJyb3IpOworICBmYWlsX2lmIChlcnJvciAhPSBOVUxMLCAiRXJyb3IgY3JlYXRpbmcgY29udGV4dCAlc1xuIiwKKyAgICAgIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAiVW5rbm93biBFcnJvciIpOworCisgIGZhaWxfdW5sZXNzIChnc3RfZ2xfZGlzcGxheV9hZGRfY29udGV4dCAoZGlzcGxheSwgYzIpKTsKKyAgLyogcmUtYWRkaW5nIHRoZSBzYW1lIGNvbnRleHQgaXMgYSBuby1vcCAqLworICBmYWlsX3VubGVzcyAoZ3N0X2dsX2Rpc3BsYXlfYWRkX2NvbnRleHQgKGRpc3BsYXksIGMyKSk7CisKKyAgeworICAgIEdUaHJlYWQgKnRocmVhZDsKKyAgICBHc3RHTENvbnRleHQgKnRtcDsKKworICAgIHRocmVhZCA9IGdzdF9nbF9jb250ZXh0X2dldF90aHJlYWQgKGMyKTsKKyAgICBmYWlsX3VubGVzcyAodGhyZWFkICE9IE5VTEwpOworCisgICAgdG1wID0gZ3N0X2dsX2Rpc3BsYXlfZ2V0X2dsX2NvbnRleHRfZm9yX3RocmVhZCAoZGlzcGxheSwgdGhyZWFkKTsKKyAgICBmYWlsX3VubGVzcyAodG1wID09IGMyKTsKKyAgICBnX3RocmVhZF91bnJlZiAodGhyZWFkKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmICh0bXApOworCisgICAgLyogdW5kZWZpbmVkIHdoaWNoIGNvbnRleHQgd2lsbCBiZSByZXR1cm5lZCBmb3IgdGhlIE5VTEwgdGhyZWFkICovCisgICAgdG1wID0gZ3N0X2dsX2Rpc3BsYXlfZ2V0X2dsX2NvbnRleHRfZm9yX3RocmVhZCAoZGlzcGxheSwgTlVMTCk7CisgICAgZmFpbF91bmxlc3MgKHRtcCAhPSBOVUxMKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmICh0bXApOworICB9CisKKyAgZ3N0X29iamVjdF91bnJlZiAoYzEpOworICAvKiBjMSBpcyBub3cgZGVhZCAqLworCisgIHsKKyAgICBHc3RHTENvbnRleHQgKnRtcDsKKworICAgIHRtcCA9IGdzdF9nbF9kaXNwbGF5X2dldF9nbF9jb250ZXh0X2Zvcl90aHJlYWQgKGRpc3BsYXksIE5VTEwpOworICAgIGZhaWxfdW5sZXNzICh0bXAgPT0gYzIpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHRtcCk7CisgIH0KKyAgR1NUX09CSkVDVF9VTkxPQ0sgKGRpc3BsYXkpOworCisgIGdzdF9vYmplY3RfdW5yZWYgKGMyKTsKKyAgLyogYzIgaXMgbm93IGRlYWQgKi8KKworICB7CisgICAgLyogbm8gbW9yZSBjb250ZXh0cyBhbGl2ZSAqLworICAgIEdzdEdMQ29udGV4dCAqdG1wID0KKyAgICAgICAgZ3N0X2dsX2Rpc3BsYXlfZ2V0X2dsX2NvbnRleHRfZm9yX3RocmVhZCAoZGlzcGxheSwgTlVMTCk7CisgICAgZmFpbF91bmxlc3MgKHRtcCA9PSBOVUxMKTsKKyAgfQorfQorCitHU1RfRU5EX1RFU1Q7CisKIHN0YXRpYyBTdWl0ZSAqCiBnc3RfZ2xfY29udGV4dF9zdWl0ZSAodm9pZCkKIHsKQEAgLTQ5Nyw2ICs2MjAsOCBAQAogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3Rfd3JhcHBlZF9jb250ZXh0KTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2N1cnJlbnRfY29udGV4dCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9jb250ZXh0X2Nhbl9zaGFyZSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9pc19zaGFyZWQpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfZGlzcGxheV9saXN0KTsKIAogICByZXR1cm4gczsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xtZW1vcnkuYyBiL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xtZW1vcnkuYwppbmRleCAyMzhlMmJiLi40MTMwZTNiIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9saWJzL2dzdGdsbWVtb3J5LmMKKysrIGIvdGVzdHMvY2hlY2svbGlicy9nc3RnbG1lbW9yeS5jCkBAIC0yNiw3ICsyNiw3IEBACiAKICNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KIAotI2luY2x1ZGUgPGdzdC9nbC9nc3RnbG1lbW9yeS5oPgorI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KIApAQCAtMzksNyArMzksNyBAQAogICBkaXNwbGF5ID0gZ3N0X2dsX2Rpc3BsYXlfbmV3ICgpOwogICBjb250ZXh0ID0gZ3N0X2dsX2NvbnRleHRfbmV3IChkaXNwbGF5KTsKICAgZ3N0X2dsX2NvbnRleHRfY3JlYXRlIChjb250ZXh0LCAwLCBOVUxMKTsKLSAgZ3N0X2dsX21lbW9yeV9pbml0ICgpOworICBnc3RfZ2xfbWVtb3J5X2luaXRfb25jZSAoKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTU0LDE0ICs1NCwxNiBAQAogICBHc3RNZW1vcnkgKm1lbSwgKm1lbTI7CiAgIEdzdEdMTWVtb3J5ICpnbF9tZW0sICpnbF9tZW0yOwogICBHc3RBbGxvY2F0b3IgKmdsX2FsbG9jYXRvcjsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICpiYXNlX21lbV9hbGxvYzsKICAgZ2ludCBpLCBqOwogICBzdGF0aWMgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0c1tdID0gewogICAgIEdTVF9WSURFT19GT1JNQVRfUkdCQSwgR1NUX1ZJREVPX0ZPUk1BVF9SR0IsCiAgICAgR1NUX1ZJREVPX0ZPUk1BVF9ZVVkyLCBHU1RfVklERU9fRk9STUFUX0k0MjAKICAgfTsKIAotICBnbF9hbGxvY2F0b3IgPSBnc3RfYWxsb2NhdG9yX2ZpbmQgKEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SKTsKKyAgZ2xfYWxsb2NhdG9yID0gZ3N0X2FsbG9jYXRvcl9maW5kIChHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9OQU1FKTsKICAgZmFpbF9pZiAoZ2xfYWxsb2NhdG9yID09IE5VTEwpOworICBiYXNlX21lbV9hbGxvYyA9IEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IgKGdsX2FsbG9jYXRvcik7CiAKICAgLyogdGVzdCBhbGxvY2F0b3IgY3JlYXRpb24gKi8KICAgQVNTRVJUX1dBUk5JTkcgKG1lbSA9IGdzdF9hbGxvY2F0b3JfYWxsb2MgKGdsX2FsbG9jYXRvciwgMCwgTlVMTCkpOwpAQCAtNzMsNyArNzUsMTMgQEAKICAgICBnc3RfdmlkZW9faW5mb19zZXRfZm9ybWF0ICgmdl9pbmZvLCBmb3JtYXRzW2ldLCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIGZvciAoaiA9IDA7IGogPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJnZfaW5mbyk7IGorKykgewotICAgICAgbWVtID0gZ3N0X2dsX21lbW9yeV9hbGxvYyAoY29udGV4dCwgTlVMTCwgJnZfaW5mbywgaiwgTlVMTCk7CisgICAgICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOworCisgICAgICBwYXJhbXMgPSBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3IChjb250ZXh0LCBOVUxMLCAmdl9pbmZvLCBqLAorICAgICAgICAgIE5VTEwsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCk7CisKKyAgICAgIG1lbSA9IChHc3RNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChiYXNlX21lbV9hbGxvYywKKyAgICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CiAgICAgICBmYWlsX2lmIChtZW0gPT0gTlVMTCk7CiAgICAgICBnbF9tZW0gPSAoR3N0R0xNZW1vcnkgKikgbWVtOwogCkBAIC05Niw2ICsxMDQsNyBAQAogICAgICAgICBwcmludGYgKCIlc1xuIiwgZ3N0X2dsX2NvbnRleHRfZ2V0X2Vycm9yICgpKTsKICAgICAgIGZhaWxfaWYgKGdzdF9nbF9jb250ZXh0X2dldF9lcnJvciAoKSAhPSBOVUxMKTsKIAorICAgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKICAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKG1lbSk7CiAgICAgICBnc3RfbWVtb3J5X3VucmVmIChtZW0yKTsKICAgICB9CkBAIC0xMTEsOTcgKzEyMCwxMTYgQEAKICAgMHhmZiwgMHgwMCwgMHgwMCwgMHhmZiwKIH07CiAKLUdTVF9TVEFSVF9URVNUICh0ZXN0X3RyYW5zZmVyKQorc3RhdGljIHZvaWQKK3Rlc3RfdHJhbnNmZXJfYWxsb2NhdG9yIChjb25zdCBnY2hhciAqIGFsbG9jYXRvcl9uYW1lKQogewogICBHc3RBbGxvY2F0b3IgKmdsX2FsbG9jYXRvcjsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICpiYXNlX21lbV9hbGxvYzsKICAgR3N0VmlkZW9JbmZvIHZfaW5mbzsKICAgR3N0TWVtb3J5ICptZW0sICptZW0yLCAqbWVtMzsKICAgR3N0TWFwSW5mbyBtYXBfaW5mbzsKKyAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKIAotICBnbF9hbGxvY2F0b3IgPSBnc3RfYWxsb2NhdG9yX2ZpbmQgKEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SKTsKKyAgZ2xfYWxsb2NhdG9yID0gZ3N0X2FsbG9jYXRvcl9maW5kIChhbGxvY2F0b3JfbmFtZSk7CiAgIGZhaWxfaWYgKGdsX2FsbG9jYXRvciA9PSBOVUxMKTsKKyAgYmFzZV9tZW1fYWxsb2MgPSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChnbF9hbGxvY2F0b3IpOwogCiAgIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZ2X2luZm8sIEdTVF9WSURFT19GT1JNQVRfUkdCQSwgMSwgMSk7CiAKKyAgcGFyYW1zID0gZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoY29udGV4dCwgTlVMTCwgJnZfaW5mbywgMCwKKyAgICAgIE5VTEwsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCk7CisKICAgLyogdGV4dHVyZSBjcmVhdGlvbiAqLwotICBtZW0gPSAoR3N0TWVtb3J5ICopIGdzdF9nbF9tZW1vcnlfYWxsb2MgKGNvbnRleHQsIE5VTEwsICZ2X2luZm8sIDAsIE5VTEwpOworICBtZW0gPSAoR3N0TWVtb3J5ICopIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoYmFzZV9tZW1fYWxsb2MsCisgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CiAgIGZhaWxfdW5sZXNzICghR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKSk7CiAgIGZhaWxfdW5sZXNzICghR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCkpOwogCiAgIC8qIHRlc3Qgd3JhcHBpbmcgcmF3IGRhdGEgKi8KKyAgcGFyYW1zID0gZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX2RhdGEgKGNvbnRleHQsIE5VTEwsCisgICAgICAmdl9pbmZvLCAwLCBOVUxMLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQsIHJnYmFfcGl4ZWwsIE5VTEwsIE5VTEwpOwogICBtZW0yID0KLSAgICAgIChHc3RNZW1vcnkgKikgZ3N0X2dsX21lbW9yeV93cmFwcGVkIChjb250ZXh0LCAmdl9pbmZvLCAwLCBOVUxMLAotICAgICAgcmdiYV9waXhlbCwgTlVMTCwgTlVMTCk7CisgICAgICAoR3N0TWVtb3J5ICopIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoYmFzZV9tZW1fYWxsb2MsCisgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CiAgIGZhaWxfaWYgKG1lbSA9PSBOVUxMKTsKIAogICBmYWlsX3VubGVzcyAoR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtMiwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCkpOwogICBmYWlsX3VubGVzcyAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbTIsCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKSk7CiAKICAgLyogd3JhcHBlZCB0ZXh0dXJlIGNyZWF0aW9uICovCi0gIG1lbTMgPSAoR3N0TWVtb3J5ICopIGdzdF9nbF9tZW1vcnlfd3JhcHBlZF90ZXh0dXJlIChjb250ZXh0LAotICAgICAgKChHc3RHTE1lbW9yeSAqKSBtZW0pLT50ZXhfaWQsIEdMX1RFWFRVUkVfMkQsICZ2X2luZm8sIDAsIE5VTEwsIE5VTEwsCi0gICAgICBOVUxMKTsKKyAgcGFyYW1zID0gZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX3RleHR1cmUgKGNvbnRleHQsIE5VTEwsCisgICAgICAmdl9pbmZvLCAwLCBOVUxMLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQsICgoR3N0R0xNZW1vcnkgKikgbWVtKS0+dGV4X2lkLAorICAgICAgTlVMTCwgTlVMTCk7CisgIG1lbTMgPQorICAgICAgKEdzdE1lbW9yeSAqKSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKGJhc2VfbWVtX2FsbG9jLAorICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOwogICBmYWlsX3VubGVzcyAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbTMsCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpKTsKICAgZmFpbF91bmxlc3MgKEdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbTMsCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKSk7CiAKICAgLyogY2hlY2sgZGF0YS9mbGFncyBhcmUgY29ycmVjdCAqLwogICBmYWlsX3VubGVzcyAoZ3N0X21lbW9yeV9tYXAgKG1lbTIsICZtYXBfaW5mbywgR1NUX01BUF9SRUFEKSk7CiAKICAgZmFpbF91bmxlc3MgKEdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbTIsCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpKTsKICAgZmFpbF91bmxlc3MgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0yLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCkpOwogCi0gIGZhaWxfdW5sZXNzICgoKGdjaGFyICopIG1hcF9pbmZvLmRhdGEpWzBdID09IHJnYmFfcGl4ZWxbMF0pOwotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBtYXBfaW5mby5kYXRhKVsxXSA9PSByZ2JhX3BpeGVsWzFdKTsKLSAgZmFpbF91bmxlc3MgKCgoZ2NoYXIgKikgbWFwX2luZm8uZGF0YSlbMl0gPT0gcmdiYV9waXhlbFsyXSk7Ci0gIGZhaWxfdW5sZXNzICgoKGdjaGFyICopIG1hcF9pbmZvLmRhdGEpWzNdID09IHJnYmFfcGl4ZWxbM10pOworICBmYWlsX3VubGVzcyAobWVtY21wIChtYXBfaW5mby5kYXRhLCByZ2JhX3BpeGVsLAorICAgICAgICAgIEdfTl9FTEVNRU5UUyAocmdiYV9waXhlbCkpID09IDAsCisgICAgICAiMHglMDJ4JTAyeCUwMnglMDJ4ICE9IDB4JTAyeCUwMnglMDJ4JTAyeCIsIG1hcF9pbmZvLmRhdGFbMF0sCisgICAgICBtYXBfaW5mby5kYXRhWzFdLCBtYXBfaW5mby5kYXRhWzJdLCBtYXBfaW5mby5kYXRhWzNdLAorICAgICAgKGd1aW50OCkgcmdiYV9waXhlbFswXSwgKGd1aW50OCkgcmdiYV9waXhlbFsxXSwgKGd1aW50OCkgcmdiYV9waXhlbFsyXSwKKyAgICAgIChndWludDgpIHJnYmFfcGl4ZWxbM10pOwogCiAgIGdzdF9tZW1vcnlfdW5tYXAgKG1lbTIsICZtYXBfaW5mbyk7CiAKICAgZmFpbF91bmxlc3MgKEdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbTIsCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpKTsKICAgZmFpbF91bmxlc3MgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0yLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCkpOwogCiAgIGZhaWxfdW5sZXNzIChnc3RfbWVtb3J5X21hcCAobWVtMiwgJm1hcF9pbmZvLCBHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSk7CiAKICAgZmFpbF91bmxlc3MgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0yLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKSk7CiAgIGZhaWxfdW5sZXNzICghR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtMiwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKTsKIAogICAvKiB0ZXN0IHRleHR1cmUgY29weSAqLwotICBmYWlsX3VubGVzcyAoZ3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZSAoKEdzdEdMTWVtb3J5ICopIG1lbTIsCi0gICAgICAgICAgKChHc3RHTE1lbW9yeSAqKSBtZW0pLT50ZXhfaWQsIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCQSwgMSwgMSwKLSAgICAgICAgICA0LCBGQUxTRSkpOwotICBHU1RfTUlOSV9PQkpFQ1RfRkxBR19TRVQgKG1lbSwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCk7Ci0gIEdTVF9HTF9NRU1PUllfQUREX1RSQU5TRkVSIChtZW0sIEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCk7CisgIGZhaWxfdW5sZXNzIChnc3RfZ2xfbWVtb3J5X2NvcHlfaW50byAoKEdzdEdMTWVtb3J5ICopIG1lbTIsCisgICAgICAgICAgKChHc3RHTE1lbW9yeSAqKSBtZW0pLT50ZXhfaWQsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCwKKyAgICAgICAgICBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQkEsIDEsIDEpKTsKKyAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKTsKIAogICBmYWlsX3VubGVzcyAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbTIsCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpKTsKICAgZmFpbF91bmxlc3MgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0yLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCkpOwogICBmYWlsX3VubGVzcyAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbSwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCkpOwogICBmYWlsX3VubGVzcyAoR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCkpOwogCiAgIGdzdF9tZW1vcnlfdW5tYXAgKG1lbTIsICZtYXBfaW5mbyk7CiAKICAgLyogdGVzdCBkb3dubG9hZCBvZiBjb3BpZWQgdGV4dHVyZSAqLwogICBmYWlsX3VubGVzcyAoZ3N0X21lbW9yeV9tYXAgKG1lbSwgJm1hcF9pbmZvLCBHU1RfTUFQX1JFQUQpKTsKIAotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBtYXBfaW5mby5kYXRhKVswXSA9PSByZ2JhX3BpeGVsWzBdKTsKLSAgZmFpbF91bmxlc3MgKCgoZ2NoYXIgKikgbWFwX2luZm8uZGF0YSlbMV0gPT0gcmdiYV9waXhlbFsxXSk7Ci0gIGZhaWxfdW5sZXNzICgoKGdjaGFyICopIG1hcF9pbmZvLmRhdGEpWzJdID09IHJnYmFfcGl4ZWxbMl0pOwotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBtYXBfaW5mby5kYXRhKVszXSA9PSByZ2JhX3BpeGVsWzNdKTsKKyAgZmFpbF91bmxlc3MgKG1lbWNtcCAobWFwX2luZm8uZGF0YSwgcmdiYV9waXhlbCwKKyAgICAgICAgICBHX05fRUxFTUVOVFMgKHJnYmFfcGl4ZWwpKSA9PSAwLAorICAgICAgIjB4JTAyeCUwMnglMDJ4JTAyeCAhPSAweCUwMnglMDJ4JTAyeCUwMngiLCAoZ3VpbnQ4KSBtYXBfaW5mby5kYXRhWzBdLAorICAgICAgKGd1aW50OCkgbWFwX2luZm8uZGF0YVsxXSwgKGd1aW50OCkgbWFwX2luZm8uZGF0YVsyXSwKKyAgICAgIChndWludDgpIG1hcF9pbmZvLmRhdGFbM10sIChndWludDgpIHJnYmFfcGl4ZWxbMF0sIChndWludDgpIHJnYmFfcGl4ZWxbMV0sCisgICAgICAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzJdLCAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzNdKTsKIAogICBnc3RfbWVtb3J5X3VubWFwIChtZW0sICZtYXBfaW5mbyk7CiAKQEAgLTIwOSwxNCArMjM3LDE2IEBACiAgIGZhaWxfdW5sZXNzIChnc3RfbWVtb3J5X21hcCAobWVtMywgJm1hcF9pbmZvLCBHU1RfTUFQX1JFQUQpKTsKIAogICBmYWlsX3VubGVzcyAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbSwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCkpOwogICBmYWlsX3VubGVzcyAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbSwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKTsKIAotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBtYXBfaW5mby5kYXRhKVswXSA9PSByZ2JhX3BpeGVsWzBdKTsKLSAgZmFpbF91bmxlc3MgKCgoZ2NoYXIgKikgbWFwX2luZm8uZGF0YSlbMV0gPT0gcmdiYV9waXhlbFsxXSk7Ci0gIGZhaWxfdW5sZXNzICgoKGdjaGFyICopIG1hcF9pbmZvLmRhdGEpWzJdID09IHJnYmFfcGl4ZWxbMl0pOwotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBtYXBfaW5mby5kYXRhKVszXSA9PSByZ2JhX3BpeGVsWzNdKTsKKyAgZmFpbF91bmxlc3MgKG1lbWNtcCAobWFwX2luZm8uZGF0YSwgcmdiYV9waXhlbCwKKyAgICAgICAgICBHX05fRUxFTUVOVFMgKHJnYmFfcGl4ZWwpKSA9PSAwLAorICAgICAgIjB4JTAyeCUwMnglMDJ4JTAyeCAhPSAweCUwMnglMDJ4JTAyeCUwMngiLCAoZ3VpbnQ4KSBtYXBfaW5mby5kYXRhWzBdLAorICAgICAgKGd1aW50OCkgbWFwX2luZm8uZGF0YVsxXSwgKGd1aW50OCkgbWFwX2luZm8uZGF0YVsyXSwKKyAgICAgIChndWludDgpIG1hcF9pbmZvLmRhdGFbM10sIChndWludDgpIHJnYmFfcGl4ZWxbMF0sIChndWludDgpIHJnYmFfcGl4ZWxbMV0sCisgICAgICAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzJdLCAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzNdKTsKIAogICBnc3RfbWVtb3J5X3VubWFwIChtZW0zLCAmbWFwX2luZm8pOwogCkBAIC0yMjUsMTggKzI1NSwxOCBAQAogICBnc3RfbWVtb3J5X3VubWFwIChtZW0zLCAmbWFwX2luZm8pOwogCiAgIGZhaWxfdW5sZXNzIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0zLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKSk7CiAgIGZhaWxfdW5sZXNzICghR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtMywKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKTsKIAogICAvKiB0ZXN0IGRvd25sb2FkIGZsYWcgKi8KICAgZmFpbF91bmxlc3MgKGdzdF9tZW1vcnlfbWFwIChtZW0zLCAmbWFwX2luZm8sIEdTVF9NQVBfV1JJVEUgfCBHU1RfTUFQX0dMKSk7CiAgIGdzdF9tZW1vcnlfdW5tYXAgKG1lbTMsICZtYXBfaW5mbyk7CiAKICAgZmFpbF91bmxlc3MgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0zLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKSk7CiAgIGZhaWxfdW5sZXNzIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0zLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCkpOwogCiAgIGlmIChnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3IgKCkpCiAgICAgcHJpbnRmICgiJXNcbiIsIGdzdF9nbF9jb250ZXh0X2dldF9lcnJvciAoKSk7CkBAIC0yNDgsMzggKzI3OCw1MiBAQAogICBnc3Rfb2JqZWN0X3VucmVmIChnbF9hbGxvY2F0b3IpOwogfQogCisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3RyYW5zZmVyKQoreworICB0ZXN0X3RyYW5zZmVyX2FsbG9jYXRvciAoR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRSk7CisgIHRlc3RfdHJhbnNmZXJfYWxsb2NhdG9yIChHU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfTkFNRSk7Cit9CisKIEdTVF9FTkRfVEVTVDsKIAogR1NUX1NUQVJUX1RFU1QgKHRlc3Rfc2VwYXJhdGVfdHJhbnNmZXIpCiB7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqYmFzZV9tZW1fYWxsb2M7CisgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7CiAgIEdzdEFsbG9jYXRvciAqZ2xfYWxsb2NhdG9yOwogICBHc3RWaWRlb0luZm8gdl9pbmZvOwogICBHc3RNZW1vcnkgKm1lbTsKICAgR3N0TWFwSW5mbyBpbmZvOwogCi0gIGdsX2FsbG9jYXRvciA9IGdzdF9hbGxvY2F0b3JfZmluZCAoR1NUX0dMX01FTU9SWV9BTExPQ0FUT1IpOworICBnbF9hbGxvY2F0b3IgPSBnc3RfYWxsb2NhdG9yX2ZpbmQgKEdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FKTsKICAgZmFpbF9pZiAoZ2xfYWxsb2NhdG9yID09IE5VTEwpOworICBiYXNlX21lbV9hbGxvYyA9IEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IgKGdsX2FsbG9jYXRvcik7CiAKICAgZ3N0X3ZpZGVvX2luZm9fc2V0X2Zvcm1hdCAoJnZfaW5mbywgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBLCAxLCAxKTsKIAorICBwYXJhbXMgPSBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfZGF0YSAoY29udGV4dCwgTlVMTCwKKyAgICAgICZ2X2luZm8sIDAsIE5VTEwsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCwgcmdiYV9waXhlbCwgTlVMTCwgTlVMTCk7CiAgIG1lbSA9Ci0gICAgICAoR3N0TWVtb3J5ICopIGdzdF9nbF9tZW1vcnlfd3JhcHBlZCAoY29udGV4dCwgJnZfaW5mbywgMCwgTlVMTCwKLSAgICAgIHJnYmFfcGl4ZWwsIE5VTEwsIE5VTEwpOworICAgICAgKEdzdE1lbW9yeSAqKSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKGJhc2VfbWVtX2FsbG9jLAorICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOwogICBmYWlsX2lmIChtZW0gPT0gTlVMTCk7CiAgIGZhaWxfdW5sZXNzICghR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCkpOwogCi0gIGdzdF9nbF9tZW1vcnlfdXBsb2FkX3RyYW5zZmVyICgoR3N0R0xNZW1vcnkgKikgbWVtKTsKKyAgZ3N0X2dsX21lbW9yeV9wYm9fdXBsb2FkX3RyYW5zZmVyICgoR3N0R0xNZW1vcnlQQk8gKikgbWVtKTsKIAogICBmYWlsX3VubGVzcyAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbSwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKTsKIAogICBmYWlsX3VubGVzcyAoZ3N0X21lbW9yeV9tYXAgKG1lbSwgJmluZm8sIEdTVF9NQVBfUkVBRCkpOwogCi0gIGZhaWxfdW5sZXNzICgoKGdjaGFyICopIGluZm8uZGF0YSlbMF0gPT0gcmdiYV9waXhlbFswXSk7Ci0gIGZhaWxfdW5sZXNzICgoKGdjaGFyICopIGluZm8uZGF0YSlbMV0gPT0gcmdiYV9waXhlbFsxXSk7Ci0gIGZhaWxfdW5sZXNzICgoKGdjaGFyICopIGluZm8uZGF0YSlbMl0gPT0gcmdiYV9waXhlbFsyXSk7Ci0gIGZhaWxfdW5sZXNzICgoKGdjaGFyICopIGluZm8uZGF0YSlbM10gPT0gcmdiYV9waXhlbFszXSk7CisgIGZhaWxfdW5sZXNzIChtZW1jbXAgKGluZm8uZGF0YSwgcmdiYV9waXhlbCwgR19OX0VMRU1FTlRTIChyZ2JhX3BpeGVsKSkgPT0gMCwKKyAgICAgICIweCUwMnglMDJ4JTAyeCUwMnggIT0gMHglMDJ4JTAyeCUwMnglMDJ4IiwgKGd1aW50OCkgaW5mby5kYXRhWzBdLAorICAgICAgKGd1aW50OCkgaW5mby5kYXRhWzFdLCAoZ3VpbnQ4KSBpbmZvLmRhdGFbMl0sCisgICAgICAoZ3VpbnQ4KSBpbmZvLmRhdGFbM10sIChndWludDgpIHJnYmFfcGl4ZWxbMF0sIChndWludDgpIHJnYmFfcGl4ZWxbMV0sCisgICAgICAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzJdLCAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzNdKTsKIAogICBnc3RfbWVtb3J5X3VubWFwIChtZW0sICZpbmZvKTsKIApkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svbGlicy9nc3RnbHF1ZXJ5LmMgYi90ZXN0cy9jaGVjay9saWJzL2dzdGdscXVlcnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGZhMjQwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svbGlicy9nc3RnbHF1ZXJ5LmMKQEAgLTAsMCArMSwxNTAgQEAKKy8qIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE2IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorIyAgaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RjaGVjay5oPgorCisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorCitzdGF0aWMgR3N0R0xEaXNwbGF5ICpkaXNwbGF5Oworc3RhdGljIEdzdEdMQ29udGV4dCAqY29udGV4dDsKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X3Rlc3RfZGVidWdfY2F0KTsKKworc3RhdGljIHZvaWQKK3NldHVwICh2b2lkKQoreworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBkaXNwbGF5ID0gZ3N0X2dsX2Rpc3BsYXlfbmV3ICgpOworICBjb250ZXh0ID0gZ3N0X2dsX2NvbnRleHRfbmV3IChkaXNwbGF5KTsKKworICBnc3RfZ2xfY29udGV4dF9jcmVhdGUgKGNvbnRleHQsIE5VTEwsICZlcnJvcik7CisKKyAgZmFpbF9pZiAoZXJyb3IgIT0gTlVMTCwgIkVycm9yIGNyZWF0aW5nIGNvbnRleHQ6ICVzXG4iLAorICAgICAgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJVbmtub3duIEVycm9yIik7Cit9CisKK3N0YXRpYyB2b2lkCit0ZWFyZG93biAodm9pZCkKK3sKKyAgZ3N0X29iamVjdF91bnJlZiAoZGlzcGxheSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGNvbnRleHQpOworfQorCitzdGF0aWMgdm9pZAorX3Rlc3RfcXVlcnlfZ2wgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGdwb2ludGVyIGRhdGEpCit7CisgIEdzdEdMUXVlcnkgKnExLCBxMjsKKworICBxMSA9IGdzdF9nbF9xdWVyeV9uZXcgKGNvbnRleHQsIEdTVF9HTF9RVUVSWV9USU1FX0VMQVBTRUQpOworICBmYWlsX2lmIChxMSA9PSBOVUxMKTsKKworICBnc3RfZ2xfcXVlcnlfc3RhcnRfbG9nIChxMSwgTlVMTCwgR1NUX0xFVkVMX0VSUk9SLCBOVUxMLCAiJXMiLAorICAgICAgIjEuIHRlc3RpbmcgcXVlcnkgcHJveHktbG9nZ2luZyIpOworICBnc3RfZ2xfcXVlcnlfZW5kIChxMSk7CisgIC8qIEdTVF9HTF9RVUVSWV9USU1FX0VMQVBTRUQgZG9lc24ndCBzdXBwb3J0ZWQgY291bnRlcigpICovCisgIEFTU0VSVF9DUklUSUNBTCAoZ3N0X2dsX3F1ZXJ5X2NvdW50ZXIgKHExKSk7CisgIGdzdF9nbF9xdWVyeV9yZXN1bHQgKHExKTsKKworICBnc3RfZ2xfcXVlcnlfZnJlZSAocTEpOworCisgIGdzdF9nbF9xdWVyeV9pbml0ICgmcTIsIGNvbnRleHQsIEdTVF9HTF9RVUVSWV9USU1FU1RBTVApOworCisgIC8qIEdTVF9HTF9RVUVSWV9USU1FU1RBTVAgZG9lc24ndCBzdXBwb3J0ZWQgc3RhcnQoKS9lbmQoKSAqLworICBBU1NFUlRfQ1JJVElDQUwgKGdzdF9nbF9xdWVyeV9zdGFydCAoJnEyKSk7CisgIEFTU0VSVF9DUklUSUNBTCAoZ3N0X2dsX3F1ZXJ5X2VuZCAoJnEyKSk7CisKKyAgZ3N0X2dsX3F1ZXJ5X2NvdW50ZXJfbG9nICgmcTIsIGdzdF90ZXN0X2RlYnVnX2NhdCwgR1NUX0xFVkVMX0VSUk9SLCBOVUxMLAorICAgICAgIiVzIiwgIjIuIHRlc3RpbmcgcXVlcnkgcHJveHktbG9nZ2luZyB3b3JrcyBmcm9tIF91bnNldCgpIik7CisgIGdzdF9nbF9xdWVyeV9yZXN1bHQgKCZxMik7CisKKyAgZ3N0X2dsX3F1ZXJ5X3Vuc2V0ICgmcTIpOworCisgIC8qIG5vIHVzYWdlICovCisgIGdzdF9nbF9xdWVyeV9pbml0ICgmcTIsIGNvbnRleHQsIEdTVF9HTF9RVUVSWV9USU1FU1RBTVApOworICBnc3RfZ2xfcXVlcnlfdW5zZXQgKCZxMik7CisKKyAgLyogdGVzdCBtaXNtYXRjaGVkIHN0YXJ0KCkvZnJlZSgpICovCisgIHExID0gZ3N0X2dsX3F1ZXJ5X25ldyAoY29udGV4dCwgR1NUX0dMX1FVRVJZX1RJTUVfRUxBUFNFRCk7CisgIGZhaWxfaWYgKHExID09IE5VTEwpOworCisgIGdzdF9nbF9xdWVyeV9zdGFydCAocTEpOworCisgIEFTU0VSVF9DUklUSUNBTCAoZ3N0X2dsX3F1ZXJ5X2ZyZWUgKHExKSk7CisKKyAgLyogdGVzdCBtaXNtYXRjaGVkIHN0YXJ0KCkvcmVzdWx0KCkgKi8KKyAgcTEgPSBnc3RfZ2xfcXVlcnlfbmV3IChjb250ZXh0LCBHU1RfR0xfUVVFUllfVElNRV9FTEFQU0VEKTsKKyAgZmFpbF9pZiAocTEgPT0gTlVMTCk7CisKKyAgZ3N0X2dsX3F1ZXJ5X3N0YXJ0IChxMSk7CisgIEFTU0VSVF9DUklUSUNBTCAoZ3N0X2dsX3F1ZXJ5X3Jlc3VsdCAocTEpKTsKKyAgZ3N0X2dsX3F1ZXJ5X2VuZCAocTEpOworCisgIGdzdF9nbF9xdWVyeV9mcmVlIChxMSk7CisKKyAgLyogdGVzdCBtaXNtYXRjaGVkIGVuZCgpICovCisgIHExID0gZ3N0X2dsX3F1ZXJ5X25ldyAoY29udGV4dCwgR1NUX0dMX1FVRVJZX1RJTUVfRUxBUFNFRCk7CisgIGZhaWxfaWYgKHExID09IE5VTEwpOworICBBU1NFUlRfQ1JJVElDQUwgKGdzdF9nbF9xdWVyeV9lbmQgKHExKSk7CisgIGdzdF9nbF9xdWVyeV9mcmVlIChxMSk7CisKKyAgLyogdGVzdCBkb3VibGUgZW5kKCkgKi8KKyAgcTEgPSBnc3RfZ2xfcXVlcnlfbmV3IChjb250ZXh0LCBHU1RfR0xfUVVFUllfVElNRV9FTEFQU0VEKTsKKyAgZmFpbF9pZiAocTEgPT0gTlVMTCk7CisKKyAgZ3N0X2dsX3F1ZXJ5X3N0YXJ0IChxMSk7CisgIGdzdF9nbF9xdWVyeV9lbmQgKHExKTsKKyAgQVNTRVJUX0NSSVRJQ0FMIChnc3RfZ2xfcXVlcnlfZW5kIChxMSkpOworCisgIGdzdF9nbF9xdWVyeV9mcmVlIChxMSk7CisKKyAgLyogZG91YmxlIHN0YXJ0IGlzIGFsbG93ZWQgKi8KK30KKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfcXVlcnkpCit7CisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGNvbnRleHQsIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfdGVzdF9xdWVyeV9nbCwKKyAgICAgIE5VTEwpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK3N0YXRpYyBTdWl0ZSAqCitnc3RfZ2xfdXBsb2FkX3N1aXRlICh2b2lkKQoreworICBTdWl0ZSAqcyA9IHN1aXRlX2NyZWF0ZSAoIkdzdEdMUXVlcnkiKTsKKyAgVENhc2UgKnRjX2NoYWluID0gdGNhc2VfY3JlYXRlICgiZ2xxdWVyeSIpOworCisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfdGVzdF9kZWJ1Z19jYXQsICJ0ZXN0LWRlYnVnIiwgMCwKKyAgICAgICJwcm94eS1sb2dnaW5nIHRlc3QgZGVidWciKTsKKworICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2NoYWluKTsKKyAgdGNhc2VfYWRkX2NoZWNrZWRfZml4dHVyZSAodGNfY2hhaW4sIHNldHVwLCB0ZWFyZG93bik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9xdWVyeSk7CisKKyAgcmV0dXJuIHM7Cit9CisKK0dTVF9DSEVDS19NQUlOIChnc3RfZ2xfdXBsb2FkKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xzbC5jIGIvdGVzdHMvY2hlY2svbGlicy9nc3RnbHNsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdhN2MwYwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xzbC5jCkBAIC0wLDAgKzEsMzA4IEBACisvKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgIGluY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KKworI2luY2x1ZGUgPGdzdC9nbC9nc3RnbHNsLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorCitzdGF0aWMgdm9pZAorc2V0dXAgKHZvaWQpCit7Cit9CisKK3N0YXRpYyB2b2lkCit0ZWFyZG93biAodm9pZCkKK3sKK30KKworLyogKklOREVOVC1PRkYqICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHtHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uOyBjb25zdCBnY2hhciAqIG5hbWU7fSBnbHNsX3ZlcnNpb25zW10gPSB7CisgIHtHU1RfR0xTTF9WRVJTSU9OXzEwMCwgIjEwMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xMTAsICIxMTAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTIwLCAiMTIwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzEzMCwgIjEzMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xNDAsICIxNDAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTUwLCAiMTUwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMwMCwgIjMwMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMTAsICIzMTAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzIwLCAiMzIwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMzMCwgIjMzMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80MDAsICI0MDAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDEwLCAiNDEwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQyMCwgIjQyMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80MzAsICI0MzAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDQwLCAiNDQwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQ1MCwgIjQ1MCJ9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB7R3N0R0xTTFByb2ZpbGUgcHJvZmlsZTsgY29uc3QgZ2NoYXIgKiBuYW1lO30gZ2xzbF9wcm9maWxlc1tdID0geworICB7R1NUX0dMU0xfUFJPRklMRV9FUywgImVzIn0sCisgIHtHU1RfR0xTTF9QUk9GSUxFX0NPUkUsICJjb3JlIn0sCisgIHtHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFksICJjb21wYXRpYmlsaXR5In0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHtHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uOyBHc3RHTFNMUHJvZmlsZSBwcm9maWxlOyBjb25zdCBnY2hhciAqIG5hbWU7fSBnbHNsX3ZlcnNpb25fcHJvZmlsZXNbXSA9IHsKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTAwLCBHU1RfR0xTTF9QUk9GSUxFX0VTLCAiMTAwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzExMCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLCAiMTEwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzEyMCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLCAiMTIwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzEzMCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLCAiMTMwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzE0MCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLCAiMTQwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzE1MCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLCAiMTUwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMwMCwgR1NUX0dMU0xfUFJPRklMRV9FUywgIjMwMCBlcyJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMTAsIEdTVF9HTFNMX1BST0ZJTEVfRVMsICIzMTAgZXMifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzIwLCBHU1RfR0xTTF9QUk9GSUxFX0VTLCAiMzIwIGVzIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMzMCwgR1NUX0dMU0xfUFJPRklMRV9DT1JFLCAiMzMwIGNvcmUifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzMwLCBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFksICIzMzAgY29tcGF0aWJpbGl0eSJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80MDAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRSwgIjQwMCBjb3JlIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQwMCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLCAiNDAwIGNvbXBhdGliaWxpdHkifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDEwLCBHU1RfR0xTTF9QUk9GSUxFX0NPUkUsICI0MTAgY29yZSJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80MTAsIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwgIjQxMCBjb21wYXRpYmlsaXR5In0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQyMCwgR1NUX0dMU0xfUFJPRklMRV9DT1JFLCAiNDIwIGNvcmUifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDIwLCBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFksICI0MjAgY29tcGF0aWJpbGl0eSJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80MzAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRSwgIjQzMCBjb3JlIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQzMCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLCAiNDMwIGNvbXBhdGliaWxpdHkifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDQwLCBHU1RfR0xTTF9QUk9GSUxFX0NPUkUsICI0NDAgY29yZSJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80NDAsIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwgIjQ0MCBjb21wYXRpYmlsaXR5In0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQ1MCwgR1NUX0dMU0xfUFJPRklMRV9DT1JFLCAiNDUwIGNvcmUifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDUwLCBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFksICI0NTAgY29tcGF0aWJpbGl0eSJ9LAorfTsKKworc3RhdGljIGNvbnN0IGdjaGFyICogaW52YWxpZF9kZXNlcmlhbGl6ZV9nbHNsW10gPSB7CisgICIiLAorICAiIFx0XHJcbiIsCisgICJhZWwgZGphIiwKKyAgImVzIiwKKyAgImNvcmUiLAorICAiY29tcGF0aWJpbGl0eSIsCisgICIxMDAwIiwKKyAgIjEwMCBlcyIsCisgICIxMDAgY29yZSIsCisgICIxMDAgY29tcGF0aWJpbGl0eSIsCisgICIxNTAgZXMiLAorICAiMTUwIGNvcmUiLAorICAiMTUwIGNvbXBhdGliaWxpdHkiLAorICAiMzAwIGNvcmUiLAorICAiMzAwIGNvbXBhdGliaWxpdHkiLAorICAiMzEwIGNvcmUiLAorICAiMzEwIGNvbXBhdGliaWxpdHkiLAorICAiMzIwIGNvcmUiLAorICAiMzIwIGNvbXBhdGliaWxpdHkiLAorICAiMzMwIGVzIiwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qge0dzdEdMU0xWZXJzaW9uIHZlcnNpb247IEdzdEdMU0xQcm9maWxlIHByb2ZpbGU7fSBpbnZhbGlkX3NlcmlhbGl6ZV9nbHNsW10gPSB7CisgIHtHU1RfR0xTTF9WRVJTSU9OXzEwMCwgR1NUX0dMU0xfUFJPRklMRV9DT1JFfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTAwLCBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFl9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xMTAsIEdTVF9HTFNMX1BST0ZJTEVfRVN9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xMTAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRX0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzEyMCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzEyMCwgR1NUX0dMU0xfUFJPRklMRV9DT1JFfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTMwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTMwLCBHU1RfR0xTTF9QUk9GSUxFX0NPUkV9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xNDAsIEdTVF9HTFNMX1BST0ZJTEVfRVN9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xNDAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRX0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzE1MCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzE1MCwgR1NUX0dMU0xfUFJPRklMRV9DT1JFfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzAwLCBHU1RfR0xTTF9QUk9GSUxFX05PTkV9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMDAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRX0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMwMCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzEwLCBHU1RfR0xTTF9QUk9GSUxFX05PTkV9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMTAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRX0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMxMCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzIwLCBHU1RfR0xTTF9QUk9GSUxFX05PTkV9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMjAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRX0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMyMCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzMwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDAwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDEwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDIwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDMwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDQwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDUwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qge2NvbnN0IGdjaGFyICpuYW1lOyBnYm9vbGVhbiBzdWNjZWVkOyBHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uOyBHc3RHTFNMUHJvZmlsZSBwcm9maWxlO30gZ2xzbF9zdHJfbWFwW10gPSB7CisgIHsiLy8jdmVyc2lvbiAxMDBcbiIsIEZBTFNFLCBHU1RfR0xTTF9WRVJTSU9OX05PTkUsIEdTVF9HTFNMX1BST0ZJTEVfTk9ORX0sCisgIHsiLypcbiN2ZXJzaW9uIDEwMCovXG4iLCBGQUxTRSwgR1NUX0dMU0xfVkVSU0lPTl9OT05FLCBHU1RfR0xTTF9QUk9GSUxFX05PTkV9LAorICB7Ii8qXHIjdmVyc2lvbiAxMDAqLyIsIEZBTFNFLCBHU1RfR0xTTF9WRVJTSU9OX05PTkUsIEdTVF9HTFNMX1BST0ZJTEVfTk9ORX0sCisgIHsiI1xydmVyc2lvbiAxMDAiLCBGQUxTRSwgR1NUX0dMU0xfVkVSU0lPTl9OT05FLCBHU1RfR0xTTF9QUk9GSUxFX05PTkV9LAorICB7IiNcbnZlcnNpb24gMTAwIiwgRkFMU0UsIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwgR1NUX0dMU0xfUFJPRklMRV9OT05FfSwKKyAgeyJcdCN2ZXJzaW9uIDEwMCIsIEZBTFNFLCBHU1RfR0xTTF9WRVJTSU9OX05PTkUsIEdTVF9HTFNMX1BST0ZJTEVfTk9ORX0sCisgIHsiLy9cciN2ZXJzaW9uIDEwMCIsIFRSVUUsIEdTVF9HTFNMX1ZFUlNJT05fMTAwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAgeyIvL1xuI3ZlcnNpb24gMTAwIiwgVFJVRSwgR1NUX0dMU0xfVkVSU0lPTl8xMDAsIEdTVF9HTFNMX1BST0ZJTEVfRVN9LAorICB7IiMgXHR2ZXJzaW9uIDEwMCIsIFRSVUUsIEdTVF9HTFNMX1ZFUlNJT05fMTAwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAgeyJcbiN2ZXJzaW9uIDEwMCIsIFRSVUUsIEdTVF9HTFNMX1ZFUlNJT05fMTAwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAgeyJcciN2ZXJzaW9uIDEwMCIsIFRSVUUsIEdTVF9HTFNMX1ZFUlNJT05fMTAwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKK307CisvKiAqSU5ERU5ULU9OKiAqLworCitHU1RfU1RBUlRfVEVTVCAodGVzdF9zZXJpYWxpemF0aW9uKQoreworICBnaW50IGk7CisKKyAgLyogdmVyc2lvbnMgKi8KKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoZ2xzbF92ZXJzaW9ucyk7IGkrKykgeworICAgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb247CisgICAgY29uc3QgZ2NoYXIgKnZlcnNpb25fczsKKworICAgIHZlcnNpb25fcyA9IGdzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nIChnbHNsX3ZlcnNpb25zW2ldLnZlcnNpb24pOworICAgIGZhaWxfdW5sZXNzIChnX3N0cmNtcDAgKHZlcnNpb25fcywgZ2xzbF92ZXJzaW9uc1tpXS5uYW1lKSA9PSAwLCAiJXMgIT0gJXMiLAorICAgICAgICB2ZXJzaW9uX3MsIGdsc2xfdmVyc2lvbnNbaV0ubmFtZSk7CisgICAgdmVyc2lvbiA9IGdzdF9nbHNsX3ZlcnNpb25fZnJvbV9zdHJpbmcgKGdsc2xfdmVyc2lvbnNbaV0ubmFtZSk7CisgICAgZmFpbF91bmxlc3MgKHZlcnNpb24gPT0gZ2xzbF92ZXJzaW9uc1tpXS52ZXJzaW9uLCAiJXMgIT0gJXMiLAorICAgICAgICBnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZyAoZ2xzbF92ZXJzaW9uc1tpXS52ZXJzaW9uKSwKKyAgICAgICAgZ3N0X2dsc2xfdmVyc2lvbl90b19zdHJpbmcgKHZlcnNpb24pKTsKKyAgfQorCisgIC8qIHByb2ZpbGVzICovCisgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKGdsc2xfcHJvZmlsZXMpOyBpKyspIHsKKyAgICBHc3RHTFNMUHJvZmlsZSBwcm9maWxlOworICAgIGNvbnN0IGdjaGFyICpwcm9maWxlX3M7CisKKyAgICBwcm9maWxlX3MgPSBnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZyAoZ2xzbF9wcm9maWxlc1tpXS5wcm9maWxlKTsKKyAgICBmYWlsX3VubGVzcyAoZ19zdHJjbXAwIChwcm9maWxlX3MsIGdsc2xfcHJvZmlsZXNbaV0ubmFtZSkgPT0gMCwgIiVzICE9ICVzIiwKKyAgICAgICAgcHJvZmlsZV9zLCBnbHNsX3Byb2ZpbGVzW2ldLm5hbWUpOworICAgIHByb2ZpbGUgPSBnc3RfZ2xzbF9wcm9maWxlX2Zyb21fc3RyaW5nIChnbHNsX3Byb2ZpbGVzW2ldLm5hbWUpOworICAgIGZhaWxfdW5sZXNzIChwcm9maWxlID09IGdsc2xfcHJvZmlsZXNbaV0ucHJvZmlsZSwgIiVzICE9ICVzIiwKKyAgICAgICAgZ3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmcgKGdsc2xfcHJvZmlsZXNbaV0ucHJvZmlsZSksCisgICAgICAgIGdzdF9nbHNsX3Byb2ZpbGVfdG9fc3RyaW5nIChwcm9maWxlKSk7CisgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChnbHNsX3ZlcnNpb25fcHJvZmlsZXMpOyBpKyspIHsKKyAgICBnY2hhciAqdmVyc2lvbl9wcm9maWxlX3M7CisgICAgR3N0R0xTTFZlcnNpb24gdmVyc2lvbjsKKyAgICBHc3RHTFNMUHJvZmlsZSBwcm9maWxlOworCisgICAgdmVyc2lvbl9wcm9maWxlX3MgPQorICAgICAgICBnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfdG9fc3RyaW5nIChnbHNsX3ZlcnNpb25fcHJvZmlsZXNbaV0udmVyc2lvbiwKKyAgICAgICAgZ2xzbF92ZXJzaW9uX3Byb2ZpbGVzW2ldLnByb2ZpbGUpOworICAgIGZhaWxfdW5sZXNzIChnX3N0cmNtcDAgKHZlcnNpb25fcHJvZmlsZV9zLAorICAgICAgICAgICAgZ2xzbF92ZXJzaW9uX3Byb2ZpbGVzW2ldLm5hbWUpID09IDAsICIlcyAhPSAlcyIsIHZlcnNpb25fcHJvZmlsZV9zLAorICAgICAgICBnbHNsX3ZlcnNpb25fcHJvZmlsZXNbaV0ubmFtZSk7CisgICAgZmFpbF91bmxlc3MgKGdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV9mcm9tX3N0cmluZyAoZ2xzbF92ZXJzaW9uX3Byb2ZpbGVzCisgICAgICAgICAgICBbaV0ubmFtZSwgJnZlcnNpb24sICZwcm9maWxlKSwgIkZhaWxlZCB0byBwYXJzZSAlcyIsCisgICAgICAgIGdsc2xfdmVyc2lvbl9wcm9maWxlc1tpXS5uYW1lKTsKKyAgICBmYWlsX3VubGVzcyAocHJvZmlsZSA9PSBnbHNsX3ZlcnNpb25fcHJvZmlsZXNbaV0ucHJvZmlsZQorICAgICAgICAmJiB2ZXJzaW9uID09IGdsc2xfdmVyc2lvbl9wcm9maWxlc1tpXS52ZXJzaW9uLCAiJXMgIT0gJXMgJXMiLAorICAgICAgICBnbHNsX3ZlcnNpb25fcHJvZmlsZXNbaV0ubmFtZSwgZ3N0X2dsc2xfdmVyc2lvbl90b19zdHJpbmcgKHZlcnNpb24pLAorICAgICAgICBnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZyAocHJvZmlsZSkpOworICAgIGdfZnJlZSAodmVyc2lvbl9wcm9maWxlX3MpOworICB9CisKKyAgLyogZmFpbHVyZXMgKi8KKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoaW52YWxpZF9kZXNlcmlhbGl6ZV9nbHNsKTsgaSsrKSB7CisgICAgR3N0R0xTTFZlcnNpb24gdmVyc2lvbjsKKyAgICBHc3RHTFNMUHJvZmlsZSBwcm9maWxlOworCisgICAgZmFpbF9pZiAoZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX2Zyb21fc3RyaW5nIChpbnZhbGlkX2Rlc2VyaWFsaXplX2dsc2xbaV0sCisgICAgICAgICAgICAmdmVyc2lvbiwgJnByb2ZpbGUpLAorICAgICAgICAic3VjY2Vzc2Z1bGx5IGRlc2VyaWFsaXplZCAlcyBpbnRvICVzICVzIChzaG91bGQgaGF2ZSBmYWlsZWQpIiwKKyAgICAgICAgaW52YWxpZF9kZXNlcmlhbGl6ZV9nbHNsW2ldLCBnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZyAodmVyc2lvbiksCisgICAgICAgIGdzdF9nbHNsX3Byb2ZpbGVfdG9fc3RyaW5nIChwcm9maWxlKSk7CisgIH0KKworICAvKiBmYWlsdXJlcyAqLworICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChpbnZhbGlkX3NlcmlhbGl6ZV9nbHNsKTsgaSsrKSB7CisgICAgZ2NoYXIgKnZlcnNpb25fcHJvZmlsZV9zOworCisgICAgdmVyc2lvbl9wcm9maWxlX3MgPQorICAgICAgICBnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfdG9fc3RyaW5nIChpbnZhbGlkX3NlcmlhbGl6ZV9nbHNsW2ldLnZlcnNpb24sCisgICAgICAgIGludmFsaWRfc2VyaWFsaXplX2dsc2xbaV0ucHJvZmlsZSk7CisKKyAgICBmYWlsX2lmICh2ZXJzaW9uX3Byb2ZpbGVfcyAhPSBOVUxMLAorICAgICAgICAic3VjY2Vzc2Z1bGx5IHNlcmlhbGl6ZWQgJXMgZnJvbSAlcyAlcyAoc2hvdWxkIGhhdmUgZmFpbGVkKSIsCisgICAgICAgIHZlcnNpb25fcHJvZmlsZV9zLAorICAgICAgICBnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZyAoaW52YWxpZF9zZXJpYWxpemVfZ2xzbFtpXS52ZXJzaW9uKSwKKyAgICAgICAgZ3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmcgKGludmFsaWRfc2VyaWFsaXplX2dsc2xbaV0ucHJvZmlsZSkpOworCisgICAgZ19mcmVlICh2ZXJzaW9uX3Byb2ZpbGVfcyk7CisgIH0KKworICAvKiBtYXAgc3RyaW5ncyB0byB2ZXJzaW9uL3Byb2ZpbGUgKi8KKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoZ2xzbF9zdHJfbWFwKTsgaSsrKSB7CisgICAgR3N0R0xTTFZlcnNpb24gdmVyc2lvbjsKKyAgICBHc3RHTFNMUHJvZmlsZSBwcm9maWxlOworCisgICAgZmFpbF91bmxlc3MgKGdsc2xfc3RyX21hcFtpXS5zdWNjZWVkID09CisgICAgICAgIGdzdF9nbHNsX3N0cmluZ19nZXRfdmVyc2lvbl9wcm9maWxlIChnbHNsX3N0cl9tYXBbaV0ubmFtZSwgJnZlcnNpb24sCisgICAgICAgICAgICAmcHJvZmlsZSksICJJbmNvcnJlY3QgcmVzdWx0IGZvciBwYXJzaW5nIFwnJXNcJzogJXMiLAorICAgICAgICBnbHNsX3N0cl9tYXBbaV0ubmFtZSwgZ2xzbF9zdHJfbWFwW2ldLnN1Y2NlZWQgPyAiZmFsc2UiIDogInRydWUiKTsKKyAgICBpZiAoZ2xzbF9zdHJfbWFwW2ldLnN1Y2NlZWQpIHsKKyAgICAgIGZhaWxfdW5sZXNzICh2ZXJzaW9uID09IGdsc2xfc3RyX21hcFtpXS52ZXJzaW9uLCAiV2l0aCAlczogJXMgIT0gJXMiLAorICAgICAgICAgIGdsc2xfc3RyX21hcFtpXS5uYW1lLAorICAgICAgICAgIGdzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nIChnbHNsX3N0cl9tYXBbaV0udmVyc2lvbiksCisgICAgICAgICAgZ3N0X2dsc2xfdmVyc2lvbl90b19zdHJpbmcgKHZlcnNpb24pKTsKKyAgICAgIGZhaWxfdW5sZXNzIChwcm9maWxlID09IGdsc2xfc3RyX21hcFtpXS5wcm9maWxlLCAiV2l0aCAlczogJXMgIT0gJXMiLAorICAgICAgICAgIGdsc2xfc3RyX21hcFtpXS5uYW1lLAorICAgICAgICAgIGdzdF9nbHNsX3Byb2ZpbGVfdG9fc3RyaW5nIChnbHNsX3N0cl9tYXBbaV0ucHJvZmlsZSksCisgICAgICAgICAgZ3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmcgKHByb2ZpbGUpKTsKKyAgICB9CisgIH0KKworICAvKiBzcGVjaWFsIG9uZXMgKi8KKyAgeworICAgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb247CisgICAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZTsKKyAgICBnY2hhciAqdmVyc2lvbl9wcm9maWxlX3M7CisKKyAgICB2ZXJzaW9uX3Byb2ZpbGVfcyA9CisgICAgICAgIGdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV90b19zdHJpbmcgKEdTVF9HTFNMX1ZFUlNJT05fMTAwLAorICAgICAgICBHU1RfR0xTTF9QUk9GSUxFX0VTKTsKKyAgICBmYWlsX3VubGVzcyAoZ19zdHJjbXAwICh2ZXJzaW9uX3Byb2ZpbGVfcywgIjEwMCIpID09IDAsICIlcyAhPSAxMDAiLAorICAgICAgICB2ZXJzaW9uX3Byb2ZpbGVfcyk7CisgICAgZ19mcmVlICh2ZXJzaW9uX3Byb2ZpbGVfcyk7CisKKyAgICB2ZXJzaW9uX3Byb2ZpbGVfcyA9CisgICAgICAgIGdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV90b19zdHJpbmcgKEdTVF9HTFNMX1ZFUlNJT05fMTAwLAorICAgICAgICBHU1RfR0xTTF9QUk9GSUxFX05PTkUpOworICAgIGZhaWxfdW5sZXNzIChnX3N0cmNtcDAgKHZlcnNpb25fcHJvZmlsZV9zLCAiMTAwIikgPT0gMCwgIiVzICE9IDEwMCIsCisgICAgICAgIHZlcnNpb25fcHJvZmlsZV9zKTsKKyAgICBnX2ZyZWUgKHZlcnNpb25fcHJvZmlsZV9zKTsKKworICAgIGZhaWxfdW5sZXNzIChnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmcgKCIxMDAiLCAmdmVyc2lvbiwKKyAgICAgICAgICAgICZwcm9maWxlKSk7CisgICAgZmFpbF91bmxlc3MgKHZlcnNpb24gPT0gR1NUX0dMU0xfVkVSU0lPTl8xMDAKKyAgICAgICAgJiYgcHJvZmlsZSA9PSBHU1RfR0xTTF9QUk9GSUxFX0VTLCAiMTAwICE9ICVzICVzIiwKKyAgICAgICAgZ3N0X2dsc2xfdmVyc2lvbl90b19zdHJpbmcgKHZlcnNpb24pLAorICAgICAgICBnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZyAocHJvZmlsZSkpOworICB9Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIFN1aXRlICoKK2dzdF9nbF91cGxvYWRfc3VpdGUgKHZvaWQpCit7CisgIFN1aXRlICpzID0gc3VpdGVfY3JlYXRlICgiR3N0R0xTTCIpOworICBUQ2FzZSAqdGNfY2hhaW4gPSB0Y2FzZV9jcmVhdGUgKCJnbHNsIik7CisKKyAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19jaGFpbik7CisgIHRjYXNlX2FkZF9jaGVja2VkX2ZpeHR1cmUgKHRjX2NoYWluLCBzZXR1cCwgdGVhcmRvd24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3Rfc2VyaWFsaXphdGlvbik7CisKKyAgcmV0dXJuIHM7Cit9CisKK0dTVF9DSEVDS19NQUlOIChnc3RfZ2xfdXBsb2FkKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2x1cGxvYWQuYyBiL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2x1cGxvYWQuYwppbmRleCAxMWUyZmUwLi42NGQ3YTMzIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9saWJzL2dzdGdsdXBsb2FkLmMKKysrIGIvdGVzdHMvY2hlY2svbGlicy9nc3RnbHVwbG9hZC5jCkBAIC0yOSw0MSArMjksMTQgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLSNpZiBHU1RfR0xfSEFWRV9HTEVTMgotLyogKklOREVOVC1PRkYqICovCi1zdGF0aWMgY29uc3QgZ2NoYXIgKnZlcnRleF9zaGFkZXJfc3RyX2dsZXMyID0KLSAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOyAgIFxuIgotICAgICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7ICAgXG4iCi0gICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICBcbiIKLSAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAiICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyBcbiIKLSAgICAgICIgICB2X3RleENvb3JkID0gYV90ZXhDb29yZDsgIFxuIgotICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotCi1zdGF0aWMgY29uc3QgZ2NoYXIgKmZyYWdtZW50X3NoYWRlcl9zdHJfZ2xlczIgPQotICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAidW5pZm9ybSBzYW1wbGVyMkQgc190ZXh0dXJlOyAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgInZvaWQgbWFpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAiICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQoIHNfdGV4dHVyZSwgdl90ZXhDb29yZCApO1xuIgotICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7Ci0vKiAqSU5ERU5ULU9OKiAqLwotI2VuZGlmCi0KIHN0YXRpYyBHc3RHTERpc3BsYXkgKmRpc3BsYXk7CiBzdGF0aWMgR3N0R0xDb250ZXh0ICpjb250ZXh0Owogc3RhdGljIEdzdEdMV2luZG93ICp3aW5kb3c7CiBzdGF0aWMgR3N0R0xVcGxvYWQgKnVwbG9hZDsKIHN0YXRpYyBndWludCB0ZXhfaWQ7Ci0jaWYgR1NUX0dMX0hBVkVfR0xFUzIKLXN0YXRpYyBHRXJyb3IgKmVycm9yOwogc3RhdGljIEdzdEdMU2hhZGVyICpzaGFkZXI7CiBzdGF0aWMgR0xpbnQgc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jOwogc3RhdGljIEdMaW50IHNoYWRlcl9hdHRyX3RleHR1cmVfbG9jOwotI2VuZGlmCi0KIAogI2RlZmluZSBGT1JNQVQgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0JBCiAjZGVmaW5lIFdJRFRIIDEwCkBAIC0xMTgsMjUgKzkxLDE1IEBACiBzdGF0aWMgdm9pZAogaW5pdCAoZ3BvaW50ZXIgZGF0YSkKIHsKLSNpZiBHU1RfR0xfSEFWRV9HTEVTMgotICBpZiAoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoY29udGV4dCkgJiBHU1RfR0xfQVBJX0dMRVMyKSB7Ci0gICAgc2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXcgKGNvbnRleHQpOwotICAgIGZhaWxfaWYgKHNoYWRlciA9PSBOVUxMLCAiZmFpbGVkIHRvIGNyZWF0ZSBzaGFkZXIgb2JqZWN0Iik7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwogCi0gICAgZ3N0X2dsX3NoYWRlcl9zZXRfdmVydGV4X3NvdXJjZSAoc2hhZGVyLCB2ZXJ0ZXhfc2hhZGVyX3N0cl9nbGVzMik7Ci0gICAgZ3N0X2dsX3NoYWRlcl9zZXRfZnJhZ21lbnRfc291cmNlIChzaGFkZXIsIGZyYWdtZW50X3NoYWRlcl9zdHJfZ2xlczIpOworICBzaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0IChjb250ZXh0LCAmZXJyb3IpOworICBmYWlsX2lmIChzaGFkZXIgPT0gTlVMTCwgImZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIG9iamVjdCAlcyIsIGVycm9yLT5tZXNzYWdlKTsKIAotICAgIGVycm9yID0gTlVMTDsKLSAgICBnc3RfZ2xfc2hhZGVyX2NvbXBpbGUgKHNoYWRlciwgJmVycm9yKTsKLSAgICBmYWlsX2lmIChlcnJvciAhPSBOVUxMLCAiRXJyb3IgY29tcGlsaW5nIHNoYWRlciAlc1xuIiwKLSAgICAgICAgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJVbmtub3duIEVycm9yIik7Ci0KLSAgICBzaGFkZXJfYXR0cl9wb3NpdGlvbl9sb2MgPQotICAgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfcG9zaXRpb24iKTsKLSAgICBzaGFkZXJfYXR0cl90ZXh0dXJlX2xvYyA9Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoc2hhZGVyLCAiYV90ZXhDb29yZCIpOwotICB9Ci0jZW5kaWYKKyAgc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jID0KKyAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoc2hhZGVyLCAiYV9wb3NpdGlvbiIpOworICBzaGFkZXJfYXR0cl90ZXh0dXJlX2xvYyA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfdGV4Q29vcmQiKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE0NSw4MSArMTA4LDM4IEBACiAgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IGRhdGE7CiAgIEdzdEdMQ29udGV4dENsYXNzICpjb250ZXh0X2NsYXNzID0gR1NUX0dMX0NPTlRFWFRfR0VUX0NMQVNTIChjb250ZXh0KTsKICAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisgIGNvbnN0IEdMZmxvYXQgdlZlcnRpY2VzW10gPSB7IDEuMGYsIDEuMGYsIDAuMGYsCisgICAgMS4wZiwgMC4wZiwKKyAgICAtMS4wZiwgMS4wZiwgMC4wZiwKKyAgICAwLjBmLCAwLjBmLAorICAgIC0xLjBmLCAtMS4wZiwgMC4wZiwKKyAgICAwLjBmLCAxLjBmLAorICAgIDEuMGYsIC0xLjBmLCAwLjBmLAorICAgIDEuMGYsIDEuMGYKKyAgfTsKIAotICAvKiByZWRyYXcgdGhlIHRleHR1cmUgaW50byB0aGUgc3lzdGVtIHByb3ZpZGVkIGZyYW1lYnVmZmVyICovCisgIEdMdXNob3J0IGluZGljZXNbXSA9IHsgMCwgMSwgMiwgMCwgMiwgMyB9OwogCi0jaWYgR1NUX0dMX0hBVkVfT1BFTkdMCi0gIGlmIChnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChjb250ZXh0KSAmIEdTVF9HTF9BUElfT1BFTkdMKSB7Ci0gICAgR0xmbG9hdCB2ZXJ0c1s4XSA9IHsgMS4wZiwgMS4wZiwKLSAgICAgIC0xLjBmLCAxLjBmLAotICAgICAgLTEuMGYsIC0xLjBmLAotICAgICAgMS4wZiwgLTEuMGYKLSAgICB9OwotICAgIEdMZmxvYXQgdGV4Y29vcmRzWzhdID0geyAxLjBmLCAwLjBmLAotICAgICAgMC4wZiwgMC4wZiwKLSAgICAgIDAuMGYsIDEuMGYsCi0gICAgICAxLjBmLCAxLjBmCi0gICAgfTsKKyAgZ2wtPkNsZWFyIChHTF9DT0xPUl9CVUZGRVJfQklUKTsKIAotICAgIGdsLT5WaWV3cG9ydCAoMCwgMCwgMTAsIDEwKTsKKyAgZ3N0X2dsX3NoYWRlcl91c2UgKHNoYWRlcik7CiAKLSAgICBnbC0+Q2xlYXIgKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKTsKKyAgLyogTG9hZCB0aGUgdmVydGV4IHBvc2l0aW9uICovCisgIGdsLT5WZXJ0ZXhBdHRyaWJQb2ludGVyIChzaGFkZXJfYXR0cl9wb3NpdGlvbl9sb2MsIDMsCisgICAgICBHTF9GTE9BVCwgR0xfRkFMU0UsIDUgKiBzaXplb2YgKEdMZmxvYXQpLCB2VmVydGljZXMpOwogCi0gICAgZ2wtPk1hdHJpeE1vZGUgKEdMX1BST0pFQ1RJT04pOwotICAgIGdsLT5Mb2FkSWRlbnRpdHkgKCk7CisgIC8qIExvYWQgdGhlIHRleHR1cmUgY29vcmRpbmF0ZSAqLworICBnbC0+VmVydGV4QXR0cmliUG9pbnRlciAoc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MsIDIsCisgICAgICBHTF9GTE9BVCwgR0xfRkFMU0UsIDUgKiBzaXplb2YgKEdMZmxvYXQpLCAmdlZlcnRpY2VzWzNdKTsKIAotICAgIGdsLT5BY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFXzJEKTsKLSAgICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIHRleF9pZCk7CisgIGdsLT5FbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSAoc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jKTsKKyAgZ2wtPkVuYWJsZVZlcnRleEF0dHJpYkFycmF5IChzaGFkZXJfYXR0cl90ZXh0dXJlX2xvYyk7CiAKLSAgICBnbC0+RW5hYmxlQ2xpZW50U3RhdGUgKEdMX1ZFUlRFWF9BUlJBWSk7Ci0gICAgZ2wtPlZlcnRleFBvaW50ZXIgKDIsIEdMX0ZMT0FULCAwLCAmdmVydHMpOworICBnbC0+QWN0aXZlVGV4dHVyZSAoR0xfVEVYVFVSRTApOworICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIHRleF9pZCk7CisgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKHNoYWRlciwgInNfdGV4dHVyZSIsIDApOwogCi0gICAgZ2wtPkNsaWVudEFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwKTsKLSAgICBnbC0+RW5hYmxlQ2xpZW50U3RhdGUgKEdMX1RFWFRVUkVfQ09PUkRfQVJSQVkpOwotICAgIGdsLT5UZXhDb29yZFBvaW50ZXIgKDIsIEdMX0ZMT0FULCAwLCAmdGV4Y29vcmRzKTsKLQotICAgIGdsLT5EcmF3QXJyYXlzIChHTF9UUklBTkdMRV9GQU4sIDAsIDQpOwotCi0gICAgZ2wtPkRpc2FibGVDbGllbnRTdGF0ZSAoR0xfVkVSVEVYX0FSUkFZKTsKLSAgICBnbC0+RGlzYWJsZUNsaWVudFN0YXRlIChHTF9URVhUVVJFX0NPT1JEX0FSUkFZKTsKLSAgfQotI2VuZGlmCi0jaWYgR1NUX0dMX0hBVkVfR0xFUzIKLSAgaWYgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKGNvbnRleHQpICYgR1NUX0dMX0FQSV9HTEVTMikgewotICAgIGNvbnN0IEdMZmxvYXQgdlZlcnRpY2VzW10gPSB7IDEuMGYsIDEuMGYsIDAuMGYsCi0gICAgICAxLjBmLCAwLjBmLAotICAgICAgLTEuMGYsIDEuMGYsIDAuMGYsCi0gICAgICAwLjBmLCAwLjBmLAotICAgICAgLTEuMGYsIC0xLjBmLCAwLjBmLAotICAgICAgMC4wZiwgMS4wZiwKLSAgICAgIDEuMGYsIC0xLjBmLCAwLjBmLAotICAgICAgMS4wZiwgMS4wZgotICAgIH07Ci0KLSAgICBHTHVzaG9ydCBpbmRpY2VzW10gPSB7IDAsIDEsIDIsIDAsIDIsIDMgfTsKLQotICAgIGdsLT5DbGVhciAoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICBnc3RfZ2xfc2hhZGVyX3VzZSAoc2hhZGVyKTsKLQotICAgIC8qIExvYWQgdGhlIHZlcnRleCBwb3NpdGlvbiAqLwotICAgIGdsLT5WZXJ0ZXhBdHRyaWJQb2ludGVyIChzaGFkZXJfYXR0cl9wb3NpdGlvbl9sb2MsIDMsCi0gICAgICAgIEdMX0ZMT0FULCBHTF9GQUxTRSwgNSAqIHNpemVvZiAoR0xmbG9hdCksIHZWZXJ0aWNlcyk7Ci0KLSAgICAvKiBMb2FkIHRoZSB0ZXh0dXJlIGNvb3JkaW5hdGUgKi8KLSAgICBnbC0+VmVydGV4QXR0cmliUG9pbnRlciAoc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MsIDIsCi0gICAgICAgIEdMX0ZMT0FULCBHTF9GQUxTRSwgNSAqIHNpemVvZiAoR0xmbG9hdCksICZ2VmVydGljZXNbM10pOwotCi0gICAgZ2wtPkVuYWJsZVZlcnRleEF0dHJpYkFycmF5IChzaGFkZXJfYXR0cl9wb3NpdGlvbl9sb2MpOwotICAgIGdsLT5FbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSAoc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MpOwotCi0gICAgZ2wtPkFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwKTsKLSAgICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIHRleF9pZCk7Ci0gICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaSAoc2hhZGVyLCAic190ZXh0dXJlIiwgMCk7Ci0KLSAgICBnbC0+RHJhd0VsZW1lbnRzIChHTF9UUklBTkdMRVMsIDYsIEdMX1VOU0lHTkVEX1NIT1JULCBpbmRpY2VzKTsKLSAgfQotI2VuZGlmCisgIGdsLT5EcmF3RWxlbWVudHMgKEdMX1RSSUFOR0xFUywgNiwgR0xfVU5TSUdORURfU0hPUlQsIGluZGljZXMpOwogCiAgIGNvbnRleHRfY2xhc3MtPnN3YXBfYnVmZmVycyAoY29udGV4dCk7CiB9CkBAIC0yNjUsNiArMTg1LDggQEAKICAgICBpKys7CiAgIH0KIAorICBnc3RfY2Fwc191bnJlZiAoaW5fY2Fwcyk7CisgIGdzdF9jYXBzX3VucmVmIChvdXRfY2Fwcyk7CiAgIGdzdF9idWZmZXJfdW5yZWYgKGluYnVmKTsKICAgZ3N0X2J1ZmZlcl91bnJlZiAob3V0YnVmKTsKIH0KQEAgLTI3Myw2ICsxOTUsOCBAQAogCiBHU1RfU1RBUlRfVEVTVCAodGVzdF91cGxvYWRfYnVmZmVyKQogeworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKmJhc2VfbWVtX2FsbG9jOworICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOwogICBHc3RCdWZmZXIgKmJ1ZmZlciwgKm91dGJ1ZjsKICAgR3N0R0xNZW1vcnkgKmdsX21lbTsKICAgR3N0Q2FwcyAqaW5fY2FwcywgKm91dF9jYXBzOwpAQCAtMjgxLDEzICsyMDUsMjAgQEAKICAgZ2ludCBpID0gMDsKICAgZ2Jvb2xlYW4gcmVzOwogCisgIGJhc2VfbWVtX2FsbG9jID0KKyAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IgKGdzdF9hbGxvY2F0b3JfZmluZAorICAgICAgKEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUUpKTsKKwogICBpbl9jYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKCJ2aWRlby94LXJhdyxmb3JtYXQ9UkdCQSx3aWR0aD0xMCxoZWlnaHQ9MTAiKTsKICAgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmaW5faW5mbywgaW5fY2Fwcyk7CiAKICAgLyogY3JlYXRlIEdMIGJ1ZmZlciAqLwogICBidWZmZXIgPSBnc3RfYnVmZmVyX25ldyAoKTsKLSAgZ2xfbWVtID0KLSAgICAgIGdzdF9nbF9tZW1vcnlfd3JhcHBlZCAoY29udGV4dCwgJmluX2luZm8sIDAsIE5VTEwsIHJnYmFfZGF0YSwgTlVMTCwgTlVMTCk7CisgIHBhcmFtcyA9IGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhIChjb250ZXh0LCBOVUxMLAorICAgICAgJmluX2luZm8sIDAsIE5VTEwsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCwgcmdiYV9kYXRhLCBOVUxMLCBOVUxMKTsKKyAgZ2xfbWVtID0gKEdzdEdMTWVtb3J5ICopIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoYmFzZV9tZW1fYWxsb2MsCisgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CiAKICAgcmVzID0KICAgICAgIGdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIGdsX21lbSwgJm1hcF9pbmZvLApAQCAtMzE4LDY0ICsyNDksMTEgQEAKICAgICBpKys7CiAgIH0KIAotICBnc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyICh1cGxvYWQpOworICBnc3RfY2Fwc191bnJlZiAoaW5fY2Fwcyk7CisgIGdzdF9jYXBzX3VucmVmIChvdXRfY2Fwcyk7CiAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CiAgIGdzdF9idWZmZXJfdW5yZWYgKG91dGJ1Zik7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotR1NUX1NUQVJUX1RFU1QgKHRlc3RfdXBsb2FkX21ldGFfcHJvZHVjZXIpCi17Ci0gIEdzdEJ1ZmZlciAqYnVmZmVyOwotICBHc3RHTE1lbW9yeSAqZ2xfbWVtOwotICBHc3RWaWRlb0luZm8gaW5faW5mbzsKLSAgR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhICpnbF91cGxvYWRfbWV0YTsKLSAgZ3VpbnQgdGV4X2lkc1tdID0geyAwLCAwLCAwLCAwIH07Ci0gIEdzdEdMVXBsb2FkTWV0YSAqdXBsb2FkX21ldGE7Ci0gIGdib29sZWFuIHJlczsKLSAgZ2ludCBpID0gMDsKLQotICBnc3RfdmlkZW9faW5mb19zZXRfZm9ybWF0ICgmaW5faW5mbywgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBLCBXSURUSCwgSEVJR0hUKTsKLQotICAvKiBjcmVhdGUgR0wgYnVmZmVyICovCi0gIGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3ICgpOwotICBnbF9tZW0gPQotICAgICAgZ3N0X2dsX21lbW9yeV93cmFwcGVkIChjb250ZXh0LCAmaW5faW5mbywgMCwgTlVMTCwgcmdiYV9kYXRhLCBOVUxMLCBOVUxMKTsKLSAgZ3N0X2J1ZmZlcl9hcHBlbmRfbWVtb3J5IChidWZmZXIsIChHc3RNZW1vcnkgKikgZ2xfbWVtKTsKLQotICBnc3RfZ2xfY29udGV4dF9nZW5fdGV4dHVyZSAoY29udGV4dCwgJnRleF9pZHNbMF0sIEdTVF9WSURFT19GT1JNQVRfUkdCQSwKLSAgICAgIFdJRFRILCBIRUlHSFQpOwotCi0gIHVwbG9hZF9tZXRhID0gZ3N0X2dsX3VwbG9hZF9tZXRhX25ldyAoY29udGV4dCk7Ci0gIGdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0ICh1cGxvYWRfbWV0YSwgJmluX2luZm8pOwotCi0gIGdzdF9idWZmZXJfYWRkX3ZpZGVvX21ldGFfZnVsbCAoYnVmZmVyLCAwLCBHU1RfVklERU9fRk9STUFUX1JHQkEsIFdJRFRILAotICAgICAgSEVJR0hULCAxLCBpbl9pbmZvLm9mZnNldCwgaW5faW5mby5zdHJpZGUpOwotICBnc3RfZ2xfdXBsb2FkX21ldGFfYWRkX3RvX2J1ZmZlciAodXBsb2FkX21ldGEsIGJ1ZmZlcik7Ci0KLSAgZ2xfdXBsb2FkX21ldGEgPSBnc3RfYnVmZmVyX2dldF92aWRlb19nbF90ZXh0dXJlX3VwbG9hZF9tZXRhIChidWZmZXIpOwotICBmYWlsX2lmIChnbF91cGxvYWRfbWV0YSA9PSBOVUxMLCAiRmFpbGVkIHRvIGFkZCBHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEiCi0gICAgICAiIHRvIGJ1ZmZlclxuIik7Ci0KLSAgcmVzID0gZ3N0X3ZpZGVvX2dsX3RleHR1cmVfdXBsb2FkX21ldGFfdXBsb2FkIChnbF91cGxvYWRfbWV0YSwgdGV4X2lkcyk7Ci0gIGZhaWxfaWYgKHJlcyA9PSBGQUxTRSwgIkZhaWxlZCB0byB1cGxvYWQgR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhXG4iKTsKLQotICB0ZXhfaWQgPSB0ZXhfaWRzWzBdOwotCi0gIGdzdF9nbF93aW5kb3dfc2V0X3ByZWZlcnJlZF9zaXplICh3aW5kb3csIFdJRFRILCBIRUlHSFQpOwotICBnc3RfZ2xfd2luZG93X2RyYXcgKHdpbmRvdyk7Ci0gIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlICh3aW5kb3csIEdTVF9HTF9XSU5ET1dfQ0IgKGluaXQpLCBjb250ZXh0KTsKLQotICB3aGlsZSAoaSA8IDIpIHsKLSAgICBnc3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZSAod2luZG93LCBHU1RfR0xfV0lORE9XX0NCIChkcmF3X3JlbmRlciksCi0gICAgICAgIGNvbnRleHQpOwotICAgIGkrKzsKLSAgfQotCi0gIGdzdF9vYmplY3RfdW5yZWYgKHVwbG9hZF9tZXRhKTsKLSAgZ3N0X2dsX2NvbnRleHRfZGVsX3RleHR1cmUgKGNvbnRleHQsICZ0ZXhfaWRzWzBdKTsKLSAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoYmFzZV9tZW1fYWxsb2MpOwogfQogCiBHU1RfRU5EX1RFU1Q7CkBAIC0zOTEsNyArMjY5LDYgQEAKICAgdGNhc2VfYWRkX2NoZWNrZWRfZml4dHVyZSAodGNfY2hhaW4sIHNldHVwLCB0ZWFyZG93bik7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF91cGxvYWRfZGF0YSk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF91cGxvYWRfYnVmZmVyKTsKLSAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3VwbG9hZF9tZXRhX3Byb2R1Y2VyKTsKIAogICByZXR1cm4gczsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2xpYnMvcGxheWVyLmMgYi90ZXN0cy9jaGVjay9saWJzL3BsYXllci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ODZlNjMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9jaGVjay9saWJzL3BsYXllci5jCkBAIC0wLDAgKzEsMTQ5OSBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBCcmlqZXNoIFNpbmdoIDxicmlqZXNoLmtzaW5naEBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworLyogVE9ETzoKKyAqIC0gc3RhcnQgd2l0aCBwYXVzZSwgZ28gdG8gcGxheWluZworICogLSBwbGF5LCBwYXVzZSwgcGxheQorICogLSBzZXQgdXJpIGluIHBsYXkvcGF1c2UKKyAqIC0gcGxheS9wYXVzZSBhZnRlciBlb3MKKyAqIC0gc2VlayBpbiBwbGF5L3BhdXNlL3N0b3BwZWQsIGFmdGVyIGVvcywgYmFjayB0byAwLCBhZnRlciBkdXJhdGlvbgorICogLSBodHRwIGJ1ZmZlcmluZworICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2lmZGVmIEhBVkVfVkFMR1JJTkQKKyMgaW5jbHVkZSA8dmFsZ3JpbmQvdmFsZ3JpbmQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+CisKKyNkZWZpbmUgZmFpbF91bmxlc3NfZXF1YWxzX2ludChhLCBiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0dfU1RNVF9TVEFSVCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgaW50IGZpcnN0ID0gYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgaW50IHNlY29uZCA9IGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZmFpbF91bmxlc3MoZmlyc3QgPT0gc2Vjb25kLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiJyIgI2EgIicgKCVkKSBpcyBub3QgZXF1YWwgdG8gJyIgI2IiJyAoJWQpIiwgZmlyc3QsIHNlY29uZCk7ICAgICAgIFwKK30gR19TVE1UX0VORDsKKworI2RlZmluZSBmYWlsX3VubGVzc19lcXVhbHNfdWludDY0KGEsIGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorR19TVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBndWludDY0IGZpcnN0ID0gYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBndWludDY0IHNlY29uZCA9IGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBmYWlsX3VubGVzcyhmaXJzdCA9PSBzZWNvbmQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICInIiAjYSAiJyAoJSIgR19HVUlOVDY0X0ZPUk1BVCAiKSBpcyBub3QgZXF1YWwgdG8gJyIgI2IiJyAoJSIgICAgICAgXAorICAgIEdfR1VJTlQ2NF9GT1JNQVQgIikiLCBmaXJzdCwgc2Vjb25kKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfSBHX1NUTVRfRU5EOworCisjZGVmaW5lIGZhaWxfdW5sZXNzX2VxdWFsc19kb3VibGUoYSwgYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitHX1NUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvdWJsZSBmaXJzdCA9IGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvdWJsZSBzZWNvbmQgPSBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGZhaWxfdW5sZXNzKGZpcnN0ID09IHNlY29uZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIiciICNhICInICglbGYpIGlzIG5vdCBlcXVhbCB0byAnIiAjYiInICglbGYpIiwgZmlyc3QsIHNlY29uZCk7ICAgICBcCit9IEdfU1RNVF9FTkQ7CisKKyNpbmNsdWRlIDxnc3QvcGxheWVyL3BsYXllci5oPgorCitTVEFSVF9URVNUICh0ZXN0X2NyZWF0ZV9hbmRfZnJlZSkKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisKKyAgcGxheWVyID0gZ3N0X3BsYXllcl9uZXcgKE5VTEwsIE5VTEwpOworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKK30KKworRU5EX1RFU1Q7CisKK1NUQVJUX1RFU1QgKHRlc3Rfc2V0X2FuZF9nZXRfdXJpKQoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgZ2NoYXIgKnVyaTsKKworICBwbGF5ZXIgPSBnc3RfcGxheWVyX25ldyAoTlVMTCwgTlVMTCk7CisKKyAgZmFpbF91bmxlc3MgKHBsYXllciAhPSBOVUxMKTsKKworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgImZpbGU6Ly8vcGF0aC90by9hL2ZpbGUiKTsKKyAgdXJpID0gZ3N0X3BsYXllcl9nZXRfdXJpIChwbGF5ZXIpOworCisgIGZhaWxfdW5sZXNzIChnX3N0cmNtcDAgKHVyaSwgImZpbGU6Ly8vcGF0aC90by9hL2ZpbGUiKSA9PSAwKTsKKworICBnX2ZyZWUgKHVyaSk7CisgIGdfb2JqZWN0X3VucmVmIChwbGF5ZXIpOworfQorCitFTkRfVEVTVDsKKworU1RBUlRfVEVTVCAodGVzdF9zZXRfYW5kX2dldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWwpCit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBndWludCBpbnRlcnZhbCA9IDA7CisKKyAgcGxheWVyID0gZ3N0X3BsYXllcl9uZXcgKE5VTEwsIE5VTEwpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgZ3N0X3BsYXllcl9zZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsIChwbGF5ZXIsIDUwMCk7CisgIGludGVydmFsID0gZ3N0X3BsYXllcl9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsIChwbGF5ZXIpOworCisgIGZhaWxfdW5sZXNzIChpbnRlcnZhbCA9PSA1MDApOworCisgIGdfb2JqZWN0X3NldCAocGxheWVyLCAicG9zaXRpb24tdXBkYXRlLWludGVydmFsIiwgMTAwMCwgTlVMTCk7CisgIGdfb2JqZWN0X2dldCAocGxheWVyLCAicG9zaXRpb24tdXBkYXRlLWludGVydmFsIiwgJmludGVydmFsLCBOVUxMKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChpbnRlcnZhbCwgMTAwMCk7CisKKyAgZ19vYmplY3RfdW5yZWYgKHBsYXllcik7Cit9CisKK0VORF9URVNUOworCit0eXBlZGVmIGVudW0KK3sKKyAgU1RBVEVfQ0hBTkdFX0JVRkZFUklORywKKyAgU1RBVEVfQ0hBTkdFX0RVUkFUSU9OX0NIQU5HRUQsCisgIFNUQVRFX0NIQU5HRV9FTkRfT0ZfU1RSRUFNLAorICBTVEFURV9DSEFOR0VfRVJST1IsCisgIFNUQVRFX0NIQU5HRV9XQVJOSU5HLAorICBTVEFURV9DSEFOR0VfUE9TSVRJT05fVVBEQVRFRCwKKyAgU1RBVEVfQ0hBTkdFX1NUQVRFX0NIQU5HRUQsCisgIFNUQVRFX0NIQU5HRV9WSURFT19ESU1FTlNJT05TX0NIQU5HRUQsCisgIFNUQVRFX0NIQU5HRV9NRURJQV9JTkZPX1VQREFURUQsCisgIFNUQVRFX0NIQU5HRV9TRUVLX0RPTkUsCit9IFRlc3RQbGF5ZXJTdGF0ZUNoYW5nZTsKKworc3RhdGljIGNvbnN0IGdjaGFyICoKK3Rlc3RfcGxheWVyX3N0YXRlX2NoYW5nZV9nZXRfbmFtZSAoVGVzdFBsYXllclN0YXRlQ2hhbmdlIGNoYW5nZSkKK3sKKyAgc3dpdGNoIChjaGFuZ2UpIHsKKyAgICBjYXNlIFNUQVRFX0NIQU5HRV9CVUZGRVJJTkc6CisgICAgICByZXR1cm4gImJ1ZmZlcmluZyI7CisgICAgY2FzZSBTVEFURV9DSEFOR0VfRFVSQVRJT05fQ0hBTkdFRDoKKyAgICAgIHJldHVybiAiZHVyYXRpb24tY2hhbmdlZCI7CisgICAgY2FzZSBTVEFURV9DSEFOR0VfRU5EX09GX1NUUkVBTToKKyAgICAgIHJldHVybiAiZW5kLW9mLXN0cmVhbSI7CisgICAgY2FzZSBTVEFURV9DSEFOR0VfV0FSTklORzoKKyAgICAgIHJldHVybiAid2FybmluZyI7CisgICAgY2FzZSBTVEFURV9DSEFOR0VfRVJST1I6CisgICAgICByZXR1cm4gImVycm9yIjsKKyAgICBjYXNlIFNUQVRFX0NIQU5HRV9QT1NJVElPTl9VUERBVEVEOgorICAgICAgcmV0dXJuICJwb3NpdGlvbi11cGRhdGVkIjsKKyAgICBjYXNlIFNUQVRFX0NIQU5HRV9TVEFURV9DSEFOR0VEOgorICAgICAgcmV0dXJuICJzdGF0ZS1jaGFuZ2VkIjsKKyAgICBjYXNlIFNUQVRFX0NIQU5HRV9WSURFT19ESU1FTlNJT05TX0NIQU5HRUQ6CisgICAgICByZXR1cm4gInZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZCI7CisgICAgY2FzZSBTVEFURV9DSEFOR0VfTUVESUFfSU5GT19VUERBVEVEOgorICAgICAgcmV0dXJuICJtZWRpYS1pbmZvLXVwZGF0ZWQiOworICAgIGNhc2UgU1RBVEVfQ0hBTkdFX1NFRUtfRE9ORToKKyAgICAgIHJldHVybiAic2Vlay1kb25lIjsKKyAgICBkZWZhdWx0OgorICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICBicmVhazsKKyAgfQorfQorCit0eXBlZGVmIHN0cnVjdCBfVGVzdFBsYXllclN0YXRlIFRlc3RQbGF5ZXJTdGF0ZTsKK3N0cnVjdCBfVGVzdFBsYXllclN0YXRlCit7CisgIEdNYWluTG9vcCAqbG9vcDsKKworICBnaW50IGJ1ZmZlcmluZ19wZXJjZW50OworICBndWludDY0IHBvc2l0aW9uLCBkdXJhdGlvbiwgc2Vla19kb25lX3Bvc2l0aW9uOworICBnYm9vbGVhbiBlbmRfb2Zfc3RyZWFtLCBlcnJvciwgd2FybmluZywgc2Vla19kb25lOworICBHc3RQbGF5ZXJTdGF0ZSBzdGF0ZTsKKyAgZ2ludCB3aWR0aCwgaGVpZ2h0OworICBHc3RQbGF5ZXJNZWRpYUluZm8gKm1lZGlhX2luZm87CisKKyAgdm9pZCAoKnRlc3RfY2FsbGJhY2spIChHc3RQbGF5ZXIgKiBwbGF5ZXIsIFRlc3RQbGF5ZXJTdGF0ZUNoYW5nZSBjaGFuZ2UsCisgICAgICBUZXN0UGxheWVyU3RhdGUgKiBvbGRfc3RhdGUsIFRlc3RQbGF5ZXJTdGF0ZSAqIG5ld19zdGF0ZSk7CisgIGdwb2ludGVyIHRlc3RfZGF0YTsKK307CisKK3N0YXRpYyB2b2lkCit0ZXN0X3BsYXllcl9zdGF0ZV9jaGFuZ2VfZGVidWcgKEdzdFBsYXllciAqIHBsYXllciwKKyAgICBUZXN0UGxheWVyU3RhdGVDaGFuZ2UgY2hhbmdlLCBUZXN0UGxheWVyU3RhdGUgKiBvbGRfc3RhdGUsCisgICAgVGVzdFBsYXllclN0YXRlICogbmV3X3N0YXRlKQoreworICBHU1RfREVCVUdfT0JKRUNUIChwbGF5ZXIsICJDaGFuZ2VkICVzOlxuIgorICAgICAgIlx0YnVmZmVyaW5nICVkJSUgLT4gJWQlJVxuIgorICAgICAgIlx0cG9zaXRpb24gJSIgR1NUX1RJTUVfRk9STUFUICIgLT4gJSIgR1NUX1RJTUVfRk9STUFUICJcbiIKKyAgICAgICJcdGR1cmF0aW9uICUiIEdTVF9USU1FX0ZPUk1BVCAiIC0+ICUiIEdTVF9USU1FX0ZPUk1BVCAiXG4iCisgICAgICAiXHRzZWVrIHBvc2l0aW9uICUiIEdTVF9USU1FX0ZPUk1BVCAiIC0+ICUiIEdTVF9USU1FX0ZPUk1BVCAiXG4iCisgICAgICAiXHRlbmQtb2Ytc3RyZWFtICVkIC0+ICVkXG4iCisgICAgICAiXHRlcnJvciAlZCAtPiAlZFxuIgorICAgICAgIlx0c2Vla19kb25lICVkIC0+ICVkXG4iCisgICAgICAiXHRzdGF0ZSAlcyAtPiAlc1xuIgorICAgICAgIlx0d2lkdGgvaGVpZ2h0ICVkLyVkIC0+ICVkLyVkXG4iCisgICAgICAiXHRtZWRpYV9pbmZvICVwIC0+ICVwIiwKKyAgICAgIHRlc3RfcGxheWVyX3N0YXRlX2NoYW5nZV9nZXRfbmFtZSAoY2hhbmdlKSwKKyAgICAgIG9sZF9zdGF0ZS0+YnVmZmVyaW5nX3BlcmNlbnQsIG5ld19zdGF0ZS0+YnVmZmVyaW5nX3BlcmNlbnQsCisgICAgICBHU1RfVElNRV9BUkdTIChvbGRfc3RhdGUtPnBvc2l0aW9uKSwgR1NUX1RJTUVfQVJHUyAobmV3X3N0YXRlLT5wb3NpdGlvbiksCisgICAgICBHU1RfVElNRV9BUkdTIChvbGRfc3RhdGUtPmR1cmF0aW9uKSwgR1NUX1RJTUVfQVJHUyAobmV3X3N0YXRlLT5kdXJhdGlvbiksCisgICAgICBHU1RfVElNRV9BUkdTIChvbGRfc3RhdGUtPnNlZWtfZG9uZV9wb3NpdGlvbiksCisgICAgICBHU1RfVElNRV9BUkdTIChuZXdfc3RhdGUtPnNlZWtfZG9uZV9wb3NpdGlvbiksIG9sZF9zdGF0ZS0+ZW5kX29mX3N0cmVhbSwKKyAgICAgIG5ld19zdGF0ZS0+ZW5kX29mX3N0cmVhbSwgb2xkX3N0YXRlLT5lcnJvciwgbmV3X3N0YXRlLT5lcnJvciwKKyAgICAgIG9sZF9zdGF0ZS0+c2Vla19kb25lLCBuZXdfc3RhdGUtPnNlZWtfZG9uZSwKKyAgICAgIGdzdF9wbGF5ZXJfc3RhdGVfZ2V0X25hbWUgKG9sZF9zdGF0ZS0+c3RhdGUpLAorICAgICAgZ3N0X3BsYXllcl9zdGF0ZV9nZXRfbmFtZSAobmV3X3N0YXRlLT5zdGF0ZSksIG9sZF9zdGF0ZS0+d2lkdGgsCisgICAgICBvbGRfc3RhdGUtPmhlaWdodCwgbmV3X3N0YXRlLT53aWR0aCwgbmV3X3N0YXRlLT5oZWlnaHQsCisgICAgICBvbGRfc3RhdGUtPm1lZGlhX2luZm8sIG5ld19zdGF0ZS0+bWVkaWFfaW5mbyk7Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3BsYXllcl9zdGF0ZV9yZXNldCAoVGVzdFBsYXllclN0YXRlICogc3RhdGUpCit7CisgIHN0YXRlLT5idWZmZXJpbmdfcGVyY2VudCA9IDEwMDsKKyAgc3RhdGUtPnBvc2l0aW9uID0gc3RhdGUtPmR1cmF0aW9uID0gc3RhdGUtPnNlZWtfZG9uZV9wb3NpdGlvbiA9IC0xOworICBzdGF0ZS0+ZW5kX29mX3N0cmVhbSA9IHN0YXRlLT5lcnJvciA9IHN0YXRlLT5zZWVrX2RvbmUgPSBGQUxTRTsKKyAgc3RhdGUtPnN0YXRlID0gR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEOworICBzdGF0ZS0+d2lkdGggPSBzdGF0ZS0+aGVpZ2h0ID0gMDsKKyAgc3RhdGUtPm1lZGlhX2luZm8gPSBOVUxMOworfQorCitzdGF0aWMgdm9pZAorYnVmZmVyaW5nX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsIGdpbnQgcGVyY2VudCwgVGVzdFBsYXllclN0YXRlICogc3RhdGUpCit7CisgIFRlc3RQbGF5ZXJTdGF0ZSBvbGRfc3RhdGUgPSAqc3RhdGU7CisKKyAgc3RhdGUtPmJ1ZmZlcmluZ19wZXJjZW50ID0gcGVyY2VudDsKKyAgdGVzdF9wbGF5ZXJfc3RhdGVfY2hhbmdlX2RlYnVnIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9CVUZGRVJJTkcsICZvbGRfc3RhdGUsCisgICAgICBzdGF0ZSk7CisgIHN0YXRlLT50ZXN0X2NhbGxiYWNrIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9CVUZGRVJJTkcsICZvbGRfc3RhdGUsIHN0YXRlKTsKK30KKworc3RhdGljIHZvaWQKK2R1cmF0aW9uX2NoYW5nZWRfY2IgKEdzdFBsYXllciAqIHBsYXllciwgZ3VpbnQ2NCBkdXJhdGlvbiwKKyAgICBUZXN0UGxheWVyU3RhdGUgKiBzdGF0ZSkKK3sKKyAgVGVzdFBsYXllclN0YXRlIG9sZF9zdGF0ZSA9ICpzdGF0ZTsKKworICBzdGF0ZS0+ZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgdGVzdF9wbGF5ZXJfc3RhdGVfY2hhbmdlX2RlYnVnIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9EVVJBVElPTl9DSEFOR0VELAorICAgICAgJm9sZF9zdGF0ZSwgc3RhdGUpOworICBzdGF0ZS0+dGVzdF9jYWxsYmFjayAocGxheWVyLCBTVEFURV9DSEFOR0VfRFVSQVRJT05fQ0hBTkdFRCwgJm9sZF9zdGF0ZSwKKyAgICAgIHN0YXRlKTsKK30KKworc3RhdGljIHZvaWQKK2VuZF9vZl9zdHJlYW1fY2IgKEdzdFBsYXllciAqIHBsYXllciwgVGVzdFBsYXllclN0YXRlICogc3RhdGUpCit7CisgIFRlc3RQbGF5ZXJTdGF0ZSBvbGRfc3RhdGUgPSAqc3RhdGU7CisKKyAgc3RhdGUtPmVuZF9vZl9zdHJlYW0gPSBUUlVFOworICB0ZXN0X3BsYXllcl9zdGF0ZV9jaGFuZ2VfZGVidWcgKHBsYXllciwgU1RBVEVfQ0hBTkdFX0VORF9PRl9TVFJFQU0sCisgICAgICAmb2xkX3N0YXRlLCBzdGF0ZSk7CisgIHN0YXRlLT50ZXN0X2NhbGxiYWNrIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9FTkRfT0ZfU1RSRUFNLCAmb2xkX3N0YXRlLCBzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitlcnJvcl9jYiAoR3N0UGxheWVyICogcGxheWVyLCBHRXJyb3IgKiBlcnJvciwgVGVzdFBsYXllclN0YXRlICogc3RhdGUpCit7CisgIFRlc3RQbGF5ZXJTdGF0ZSBvbGRfc3RhdGUgPSAqc3RhdGU7CisKKyAgc3RhdGUtPmVycm9yID0gVFJVRTsKKyAgdGVzdF9wbGF5ZXJfc3RhdGVfY2hhbmdlX2RlYnVnIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9FUlJPUiwgJm9sZF9zdGF0ZSwKKyAgICAgIHN0YXRlKTsKKyAgc3RhdGUtPnRlc3RfY2FsbGJhY2sgKHBsYXllciwgU1RBVEVfQ0hBTkdFX0VSUk9SLCAmb2xkX3N0YXRlLCBzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCit3YXJuaW5nX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsIEdFcnJvciAqIGVycm9yLCBUZXN0UGxheWVyU3RhdGUgKiBzdGF0ZSkKK3sKKyAgVGVzdFBsYXllclN0YXRlIG9sZF9zdGF0ZSA9ICpzdGF0ZTsKKworICBzdGF0ZS0+d2FybmluZyA9IFRSVUU7CisgIHRlc3RfcGxheWVyX3N0YXRlX2NoYW5nZV9kZWJ1ZyAocGxheWVyLCBTVEFURV9DSEFOR0VfV0FSTklORywgJm9sZF9zdGF0ZSwKKyAgICAgIHN0YXRlKTsKKyAgc3RhdGUtPnRlc3RfY2FsbGJhY2sgKHBsYXllciwgU1RBVEVfQ0hBTkdFX1dBUk5JTkcsICZvbGRfc3RhdGUsIHN0YXRlKTsKK30KKworc3RhdGljIHZvaWQKK3Bvc2l0aW9uX3VwZGF0ZWRfY2IgKEdzdFBsYXllciAqIHBsYXllciwgZ3VpbnQ2NCBwb3NpdGlvbiwKKyAgICBUZXN0UGxheWVyU3RhdGUgKiBzdGF0ZSkKK3sKKyAgVGVzdFBsYXllclN0YXRlIG9sZF9zdGF0ZSA9ICpzdGF0ZTsKKworICBzdGF0ZS0+cG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgdGVzdF9wbGF5ZXJfc3RhdGVfY2hhbmdlX2RlYnVnIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9QT1NJVElPTl9VUERBVEVELAorICAgICAgJm9sZF9zdGF0ZSwgc3RhdGUpOworICBzdGF0ZS0+dGVzdF9jYWxsYmFjayAocGxheWVyLCBTVEFURV9DSEFOR0VfUE9TSVRJT05fVVBEQVRFRCwgJm9sZF9zdGF0ZSwKKyAgICAgIHN0YXRlKTsKK30KKworc3RhdGljIHZvaWQKK21lZGlhX2luZm9fdXBkYXRlZF9jYiAoR3N0UGxheWVyICogcGxheWVyLCBHc3RQbGF5ZXJNZWRpYUluZm8gKiBtZWRpYV9pbmZvLAorICAgIFRlc3RQbGF5ZXJTdGF0ZSAqIHN0YXRlKQoreworICBUZXN0UGxheWVyU3RhdGUgb2xkX3N0YXRlID0gKnN0YXRlOworCisgIHN0YXRlLT5tZWRpYV9pbmZvID0gbWVkaWFfaW5mbzsKKworICB0ZXN0X3BsYXllcl9zdGF0ZV9jaGFuZ2VfZGVidWcgKHBsYXllciwgU1RBVEVfQ0hBTkdFX01FRElBX0lORk9fVVBEQVRFRCwKKyAgICAgICZvbGRfc3RhdGUsIHN0YXRlKTsKKyAgc3RhdGUtPnRlc3RfY2FsbGJhY2sgKHBsYXllciwgU1RBVEVfQ0hBTkdFX01FRElBX0lORk9fVVBEQVRFRCwgJm9sZF9zdGF0ZSwKKyAgICAgIHN0YXRlKTsKK30KKworc3RhdGljIHZvaWQKK3N0YXRlX2NoYW5nZWRfY2IgKEdzdFBsYXllciAqIHBsYXllciwgR3N0UGxheWVyU3RhdGUgcGxheWVyX3N0YXRlLAorICAgIFRlc3RQbGF5ZXJTdGF0ZSAqIHN0YXRlKQoreworICBUZXN0UGxheWVyU3RhdGUgb2xkX3N0YXRlID0gKnN0YXRlOworCisgIHN0YXRlLT5zdGF0ZSA9IHBsYXllcl9zdGF0ZTsKKworICBpZiAocGxheWVyX3N0YXRlID09IEdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRCkKKyAgICB0ZXN0X3BsYXllcl9zdGF0ZV9yZXNldCAoc3RhdGUpOworCisgIHRlc3RfcGxheWVyX3N0YXRlX2NoYW5nZV9kZWJ1ZyAocGxheWVyLCBTVEFURV9DSEFOR0VfU1RBVEVfQ0hBTkdFRCwKKyAgICAgICZvbGRfc3RhdGUsIHN0YXRlKTsKKyAgc3RhdGUtPnRlc3RfY2FsbGJhY2sgKHBsYXllciwgU1RBVEVfQ0hBTkdFX1NUQVRFX0NIQU5HRUQsICZvbGRfc3RhdGUsIHN0YXRlKTsKK30KKworc3RhdGljIHZvaWQKK3ZpZGVvX2RpbWVuc2lvbnNfY2hhbmdlZF9jYiAoR3N0UGxheWVyICogcGxheWVyLCBnaW50IHdpZHRoLCBnaW50IGhlaWdodCwKKyAgICBUZXN0UGxheWVyU3RhdGUgKiBzdGF0ZSkKK3sKKyAgVGVzdFBsYXllclN0YXRlIG9sZF9zdGF0ZSA9ICpzdGF0ZTsKKworICBzdGF0ZS0+d2lkdGggPSB3aWR0aDsKKyAgc3RhdGUtPmhlaWdodCA9IGhlaWdodDsKKyAgdGVzdF9wbGF5ZXJfc3RhdGVfY2hhbmdlX2RlYnVnIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9WSURFT19ESU1FTlNJT05TX0NIQU5HRUQsCisgICAgICAmb2xkX3N0YXRlLCBzdGF0ZSk7CisgIHN0YXRlLT50ZXN0X2NhbGxiYWNrIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9WSURFT19ESU1FTlNJT05TX0NIQU5HRUQsCisgICAgICAmb2xkX3N0YXRlLCBzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitzZWVrX2RvbmVfY2IgKEdzdFBsYXllciAqIHBsYXllciwgZ3VpbnQ2NCBwb3NpdGlvbiwgVGVzdFBsYXllclN0YXRlICogc3RhdGUpCit7CisgIFRlc3RQbGF5ZXJTdGF0ZSBvbGRfc3RhdGUgPSAqc3RhdGU7CisKKyAgc3RhdGUtPnNlZWtfZG9uZSA9IFRSVUU7CisgIHN0YXRlLT5zZWVrX2RvbmVfcG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgdGVzdF9wbGF5ZXJfc3RhdGVfY2hhbmdlX2RlYnVnIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9TRUVLX0RPTkUsCisgICAgICAmb2xkX3N0YXRlLCBzdGF0ZSk7CisgIHN0YXRlLT50ZXN0X2NhbGxiYWNrIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9TRUVLX0RPTkUsICZvbGRfc3RhdGUsIHN0YXRlKTsKK30KKworc3RhdGljIEdzdFBsYXllciAqCit0ZXN0X3BsYXllcl9uZXcgKFRlc3RQbGF5ZXJTdGF0ZSAqIHN0YXRlKQoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgR3N0RWxlbWVudCAqcGxheWJpbiwgKmZha2VzaW5rOworCisgIHBsYXllciA9CisgICAgICBnc3RfcGxheWVyX25ldyAoTlVMTCwKKyAgICAgIGdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfbmV3IChOVUxMKSk7CisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgdGVzdF9wbGF5ZXJfc3RhdGVfcmVzZXQgKHN0YXRlKTsKKworICBwbGF5YmluID0gZ3N0X3BsYXllcl9nZXRfcGlwZWxpbmUgKHBsYXllcik7CisgIGZha2VzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZmFrZXNpbmsiLCAiYXVkaW8tc2luayIpOworICBnX29iamVjdF9zZXQgKGZha2VzaW5rLCAic3luYyIsIFRSVUUsIE5VTEwpOworICBnX29iamVjdF9zZXQgKHBsYXliaW4sICJhdWRpby1zaW5rIiwgZmFrZXNpbmssIE5VTEwpOworICBmYWtlc2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImZha2VzaW5rIiwgInZpZGVvLXNpbmsiKTsKKyAgZ19vYmplY3Rfc2V0IChmYWtlc2luaywgInN5bmMiLCBUUlVFLCBOVUxMKTsKKyAgZ19vYmplY3Rfc2V0IChwbGF5YmluLCAidmlkZW8tc2luayIsIGZha2VzaW5rLCBOVUxMKTsKKyAgZ3N0X29iamVjdF91bnJlZiAocGxheWJpbik7CisKKyAgZ19zaWduYWxfY29ubmVjdCAocGxheWVyLCAiYnVmZmVyaW5nIiwgR19DQUxMQkFDSyAoYnVmZmVyaW5nX2NiKSwgc3RhdGUpOworICBnX3NpZ25hbF9jb25uZWN0IChwbGF5ZXIsICJkdXJhdGlvbi1jaGFuZ2VkIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKGR1cmF0aW9uX2NoYW5nZWRfY2IpLCBzdGF0ZSk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXllciwgImVuZC1vZi1zdHJlYW0iLCBHX0NBTExCQUNLIChlbmRfb2Zfc3RyZWFtX2NiKSwKKyAgICAgIHN0YXRlKTsKKyAgZ19zaWduYWxfY29ubmVjdCAocGxheWVyLCAiZXJyb3IiLCBHX0NBTExCQUNLIChlcnJvcl9jYiksIHN0YXRlKTsKKyAgZ19zaWduYWxfY29ubmVjdCAocGxheWVyLCAid2FybmluZyIsIEdfQ0FMTEJBQ0sgKHdhcm5pbmdfY2IpLCBzdGF0ZSk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXllciwgInBvc2l0aW9uLXVwZGF0ZWQiLAorICAgICAgR19DQUxMQkFDSyAocG9zaXRpb25fdXBkYXRlZF9jYiksIHN0YXRlKTsKKyAgZ19zaWduYWxfY29ubmVjdCAocGxheWVyLCAic3RhdGUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sgKHN0YXRlX2NoYW5nZWRfY2IpLAorICAgICAgc3RhdGUpOworICBnX3NpZ25hbF9jb25uZWN0IChwbGF5ZXIsICJtZWRpYS1pbmZvLXVwZGF0ZWQiLAorICAgICAgR19DQUxMQkFDSyAobWVkaWFfaW5mb191cGRhdGVkX2NiKSwgc3RhdGUpOworICBnX3NpZ25hbF9jb25uZWN0IChwbGF5ZXIsICJ2aWRlby1kaW1lbnNpb25zLWNoYW5nZWQiLAorICAgICAgR19DQUxMQkFDSyAodmlkZW9fZGltZW5zaW9uc19jaGFuZ2VkX2NiKSwgc3RhdGUpOworICBnX3NpZ25hbF9jb25uZWN0IChwbGF5ZXIsICJzZWVrLWRvbmUiLCBHX0NBTExCQUNLIChzZWVrX2RvbmVfY2IpLCBzdGF0ZSk7CisKKyAgcmV0dXJuIHBsYXllcjsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RfcGxheV9hdWRpb192aWRlb19lb3NfY2IgKEdzdFBsYXllciAqIHBsYXllciwgVGVzdFBsYXllclN0YXRlQ2hhbmdlIGNoYW5nZSwKKyAgICBUZXN0UGxheWVyU3RhdGUgKiBvbGRfc3RhdGUsIFRlc3RQbGF5ZXJTdGF0ZSAqIG5ld19zdGF0ZSkKK3sKKyAgZ2ludCBzdGVwID0gR1BPSU5URVJfVE9fSU5UIChuZXdfc3RhdGUtPnRlc3RfZGF0YSk7CisgIGdib29sZWFuIHZpZGVvOworCisgIHZpZGVvID0gISAhKHN0ZXAgJiAweDEwKTsKKyAgc3RlcCA9IChzdGVwICYgKH4weDEwKSk7CisKKyAgc3dpdGNoIChzdGVwKSB7CisgICAgY2FzZSAwOgorICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbmdlLCBTVEFURV9DSEFOR0VfU1RBVEVfQ0hBTkdFRCk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChvbGRfc3RhdGUtPnN0YXRlLCBHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAobmV3X3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkcpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPQorICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAoKHZpZGVvID8gMHgxMCA6IDB4MDApIHwgKHN0ZXAgKyAxKSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9NRURJQV9JTkZPX1VQREFURUQpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPQorICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAoKHZpZGVvID8gMHgxMCA6IDB4MDApIHwgKHN0ZXAgKyAxKSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9WSURFT19ESU1FTlNJT05TX0NIQU5HRUQpOworICAgICAgaWYgKHZpZGVvKSB7CisgICAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+d2lkdGgsIDMyMCk7CisgICAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+aGVpZ2h0LCAyNDApOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAobmV3X3N0YXRlLT53aWR0aCwgMCk7CisgICAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+aGVpZ2h0LCAwKTsKKyAgICAgIH0KKyAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0KKyAgICAgICAgICBHSU5UX1RPX1BPSU5URVIgKCh2aWRlbyA/IDB4MTAgOiAweDAwKSB8IChzdGVwICsgMSkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbmdlLCBTVEFURV9DSEFOR0VfRFVSQVRJT05fQ0hBTkdFRCk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfdWludDY0IChuZXdfc3RhdGUtPmR1cmF0aW9uLAorICAgICAgICAgIEdfR1VJTlQ2NF9DT05TVEFOVCAoNDY0Mzk5MDkyKSk7CisgICAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9CisgICAgICAgICAgR0lOVF9UT19QT0lOVEVSICgodmlkZW8gPyAweDEwIDogMHgwMCkgfCAoc3RlcCArIDEpKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX1BPU0lUSU9OX1VQREFURUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX3VpbnQ2NCAobmV3X3N0YXRlLT5wb3NpdGlvbiwgR19HVUlOVDY0X0NPTlNUQU5UICgwKSk7CisgICAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9CisgICAgICAgICAgR0lOVF9UT19QT0lOVEVSICgodmlkZW8gPyAweDEwIDogMHgwMCkgfCAoc3RlcCArIDEpKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgNToKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX1NUQVRFX0NIQU5HRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAob2xkX3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkcpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAobmV3X3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HKTsKKyAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0KKyAgICAgICAgICBHSU5UX1RPX1BPSU5URVIgKCh2aWRlbyA/IDB4MTAgOiAweDAwKSB8IChzdGVwICsgMSkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSA2OgorICAgICAgaWYgKGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfUE9TSVRJT05fVVBEQVRFRCkgeworICAgICAgICBmYWlsX3VubGVzcyAob2xkX3N0YXRlLT5wb3NpdGlvbiA8PSBuZXdfc3RhdGUtPnBvc2l0aW9uKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc191aW50NjQgKG9sZF9zdGF0ZS0+cG9zaXRpb24sIG9sZF9zdGF0ZS0+ZHVyYXRpb24pOworICAgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9FTkRfT0ZfU1RSRUFNKTsKKyAgICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPQorICAgICAgICAgICAgR0lOVF9UT19QT0lOVEVSICgodmlkZW8gPyAweDEwIDogMHgwMCkgfCAoc3RlcCArIDEpKTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgNzoKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX1NUQVRFX0NIQU5HRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAob2xkX3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+c3RhdGUsIEdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRCk7CisgICAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9CisgICAgICAgICAgR0lOVF9UT19QT0lOVEVSICgodmlkZW8gPyAweDEwIDogMHgwMCkgfCAoc3RlcCArIDEpKTsKKyAgICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgZmFpbCAoKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK1NUQVJUX1RFU1QgKHRlc3RfcGxheV9hdWRpb19lb3MpCit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBUZXN0UGxheWVyU3RhdGUgc3RhdGU7CisgIGdjaGFyICp1cmk7CisKKyAgbWVtc2V0ICgmc3RhdGUsIDAsIHNpemVvZiAoc3RhdGUpKTsKKyAgc3RhdGUubG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOworICBzdGF0ZS50ZXN0X2NhbGxiYWNrID0gdGVzdF9wbGF5X2F1ZGlvX3ZpZGVvX2Vvc19jYjsKKyAgc3RhdGUudGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSICgwKTsKKworICBwbGF5ZXIgPSB0ZXN0X3BsYXllcl9uZXcgKCZzdGF0ZSk7CisKKyAgZmFpbF91bmxlc3MgKHBsYXllciAhPSBOVUxMKTsKKworICB1cmkgPSBnc3RfZmlsZW5hbWVfdG9fdXJpIChURVNUX1BBVEggIi9hdWRpby1zaG9ydC5vZ2ciLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHVyaSAhPSBOVUxMKTsKKyAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5ZXIsIHVyaSk7CisgIGdfZnJlZSAodXJpKTsKKworICBnc3RfcGxheWVyX3BsYXkgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3J1biAoc3RhdGUubG9vcCk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoR1BPSU5URVJfVE9fSU5UIChzdGF0ZS50ZXN0X2RhdGEpLCA4KTsKKworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHN0YXRlLmxvb3ApOworfQorCitFTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK3Rlc3RfYXVkaW9faW5mbyAoR3N0UGxheWVyTWVkaWFJbmZvICogbWVkaWFfaW5mbykKK3sKKyAgZ2ludCBpID0gMDsKKyAgR0xpc3QgKmxpc3Q7CisKKyAgZm9yIChsaXN0ID0gZ3N0X3BsYXllcl9nZXRfYXVkaW9fc3RyZWFtcyAobWVkaWFfaW5mbyk7CisgICAgICBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KSB7CisgICAgR3N0UGxheWVyU3RyZWFtSW5mbyAqc3RyZWFtID0gKEdzdFBsYXllclN0cmVhbUluZm8gKikgbGlzdC0+ZGF0YTsKKyAgICBHc3RQbGF5ZXJBdWRpb0luZm8gKmF1ZGlvX2luZm8gPSAoR3N0UGxheWVyQXVkaW9JbmZvICopIHN0cmVhbTsKKworICAgIGZhaWxfdW5sZXNzIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF90YWdzIChzdHJlYW0pICE9IE5VTEwpOworICAgIGZhaWxfdW5sZXNzIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jYXBzIChzdHJlYW0pICE9IE5VTEwpOworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19zdHJpbmcgKGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3N0cmVhbV90eXBlIChzdHJlYW0pLAorICAgICAgICAiYXVkaW8iKTsKKworICAgIGlmIChpID09IDApIHsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19zdHJpbmcgKGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NvZGVjIChzdHJlYW0pLAorICAgICAgICAgICJNUEVHLTEgTGF5ZXIgMyAoTVAzKSIpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9zYW1wbGVfcmF0ZQorICAgICAgICAgIChhdWRpb19pbmZvKSwgNDgwMDApOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9jaGFubmVscyAoYXVkaW9faW5mbyksCisgICAgICAgICAgMik7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X21heF9iaXRyYXRlCisgICAgICAgICAgKGF1ZGlvX2luZm8pLCAxOTIwMDApOworICAgICAgZmFpbF91bmxlc3MgKGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbGFuZ3VhZ2UgKGF1ZGlvX2luZm8pICE9IE5VTEwpOworICAgIH0gZWxzZSB7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfc3RyaW5nIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jb2RlYyAoc3RyZWFtKSwKKyAgICAgICAgICAiTVBFRy00IEFBQyIpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9zYW1wbGVfcmF0ZQorICAgICAgICAgIChhdWRpb19pbmZvKSwgNDgwMDApOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9jaGFubmVscyAoYXVkaW9faW5mbyksCisgICAgICAgICAgNik7CisgICAgICBmYWlsX3VubGVzcyAoZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9sYW5ndWFnZSAoYXVkaW9faW5mbykgIT0gTlVMTCk7CisgICAgfQorCisgICAgaSsrOworICB9Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3ZpZGVvX2luZm8gKEdzdFBsYXllck1lZGlhSW5mbyAqIG1lZGlhX2luZm8pCit7CisgIEdMaXN0ICpsaXN0OworCisgIGZvciAobGlzdCA9IGdzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXMgKG1lZGlhX2luZm8pOworICAgICAgbGlzdCAhPSBOVUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkgeworICAgIGdpbnQgZnBzX2QsIGZwc19uOworICAgIGd1aW50IHBhcl9kLCBwYXJfbjsKKyAgICBHc3RQbGF5ZXJTdHJlYW1JbmZvICpzdHJlYW0gPSAoR3N0UGxheWVyU3RyZWFtSW5mbyAqKSBsaXN0LT5kYXRhOworICAgIEdzdFBsYXllclZpZGVvSW5mbyAqdmlkZW9faW5mbyA9IChHc3RQbGF5ZXJWaWRlb0luZm8gKikgc3RyZWFtOworCisgICAgZmFpbF91bmxlc3MgKGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3RhZ3MgKHN0cmVhbSkgIT0gTlVMTCk7CisgICAgZmFpbF91bmxlc3MgKGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NhcHMgKHN0cmVhbSkgIT0gTlVMTCk7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfaW5kZXggKHN0cmVhbSksIDApOworICAgIGZhaWxfdW5sZXNzIChzdHJzdHIgKGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NvZGVjIChzdHJlYW0pLAorICAgICAgICAgICAgIkguMjY0IikgIT0gTlVMTAorICAgICAgICB8fCBzdHJzdHIgKGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NvZGVjIChzdHJlYW0pLCAiSDI2NCIpICE9IE5VTEwpOworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfd2lkdGggKHZpZGVvX2luZm8pLCAzMjApOworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfaGVpZ2h0ICh2aWRlb19pbmZvKSwgMjQwKTsKKyAgICBnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2ZyYW1lcmF0ZSAodmlkZW9faW5mbywgJmZwc19uLCAmZnBzX2QpOworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGZwc19uLCAyNCk7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZnBzX2QsIDEpOworICAgIGdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfcGl4ZWxfYXNwZWN0X3JhdGlvICh2aWRlb19pbmZvLCAmcGFyX24sICZwYXJfZCk7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAocGFyX24sIDMzKTsKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChwYXJfZCwgMjApOworICB9Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3N1YnRpdGxlX2luZm8gKEdzdFBsYXllck1lZGlhSW5mbyAqIG1lZGlhX2luZm8pCit7CisgIEdMaXN0ICpsaXN0OworCisgIGZvciAobGlzdCA9IGdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3N0cmVhbXMgKG1lZGlhX2luZm8pOworICAgICAgbGlzdCAhPSBOVUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkgeworICAgIEdzdFBsYXllclN0cmVhbUluZm8gKnN0cmVhbSA9IChHc3RQbGF5ZXJTdHJlYW1JbmZvICopIGxpc3QtPmRhdGE7CisgICAgR3N0UGxheWVyU3VidGl0bGVJbmZvICpzdWIgPSAoR3N0UGxheWVyU3VidGl0bGVJbmZvICopIHN0cmVhbTsKKworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19zdHJpbmcgKGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3N0cmVhbV90eXBlIChzdHJlYW0pLAorICAgICAgICAic3VidGl0bGUiKTsKKyAgICBmYWlsX3VubGVzcyAoZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFncyAoc3RyZWFtKSAhPSBOVUxMKTsKKyAgICBmYWlsX3VubGVzcyAoZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY2FwcyAoc3RyZWFtKSAhPSBOVUxMKTsKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfc3RyaW5nIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jb2RlYyAoc3RyZWFtKSwKKyAgICAgICAgIlRpbWVkIFRleHQiKTsKKyAgICBmYWlsX3VubGVzcyAoZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX2dldF9sYW5ndWFnZSAoc3ViKSAhPSBOVUxMKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAordGVzdF9tZWRpYV9pbmZvX29iamVjdCAoR3N0UGxheWVyICogcGxheWVyLCBHc3RQbGF5ZXJNZWRpYUluZm8gKiBtZWRpYV9pbmZvKQoreworICBHTGlzdCAqbGlzdDsKKworICAvKiBnbG9hYmwgdGFnICovCisgIGZhaWxfdW5sZXNzIChnc3RfcGxheWVyX21lZGlhX2luZm9faXNfc2Vla2FibGUgKG1lZGlhX2luZm8pID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90YWdzIChtZWRpYV9pbmZvKSAhPSBOVUxMKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX3N0cmluZyAoZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90aXRsZSAobWVkaWFfaW5mbyksCisgICAgICAiU2ludGVsIik7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19zdHJpbmcgKGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfY29udGFpbmVyX2Zvcm1hdAorICAgICAgKG1lZGlhX2luZm8pLCAiTWF0cm9za2EiKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfaW1hZ2Vfc2FtcGxlIChtZWRpYV9pbmZvKSA9PSBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHN0cnN0ciAoZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF91cmkgKG1lZGlhX2luZm8pLAorICAgICAgICAgICJzaW50ZWwubWt2IikgIT0gTlVMTCk7CisKKyAgLyogbnVtYmVyIG9mIHN0cmVhbXMgKi8KKyAgbGlzdCA9IGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfc3RyZWFtX2xpc3QgKG1lZGlhX2luZm8pOworICBmYWlsX3VubGVzcyAobGlzdCAhPSBOVUxMKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAobGlzdCksIDEwKTsKKworICBsaXN0ID0gZ3N0X3BsYXllcl9nZXRfdmlkZW9fc3RyZWFtcyAobWVkaWFfaW5mbyk7CisgIGZhaWxfdW5sZXNzIChsaXN0ICE9IE5VTEwpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChsaXN0KSwgMSk7CisKKyAgbGlzdCA9IGdzdF9wbGF5ZXJfZ2V0X2F1ZGlvX3N0cmVhbXMgKG1lZGlhX2luZm8pOworICBmYWlsX3VubGVzcyAobGlzdCAhPSBOVUxMKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAobGlzdCksIDIpOworCisgIGxpc3QgPSBnc3RfcGxheWVyX2dldF9zdWJ0aXRsZV9zdHJlYW1zIChtZWRpYV9pbmZvKTsKKyAgZmFpbF91bmxlc3MgKGxpc3QgIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGxpc3QpLCA3KTsKKworICAvKiB0ZXN0IHN1YnRpdGxlICovCisgIHRlc3Rfc3VidGl0bGVfaW5mbyAobWVkaWFfaW5mbyk7CisKKyAgLyogdGVzdCBhdWRpbyAqLworICB0ZXN0X2F1ZGlvX2luZm8gKG1lZGlhX2luZm8pOworCisgIC8qIHRlc3QgdmlkZW8gKi8KKyAgdGVzdF92aWRlb19pbmZvIChtZWRpYV9pbmZvKTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RfcGxheV9tZWRpYV9pbmZvX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsIFRlc3RQbGF5ZXJTdGF0ZUNoYW5nZSBjaGFuZ2UsCisgICAgVGVzdFBsYXllclN0YXRlICogb2xkX3N0YXRlLCBUZXN0UGxheWVyU3RhdGUgKiBuZXdfc3RhdGUpCit7CisgIGdpbnQgY29tcGxldGVkID0gR1BPSU5URVJfVE9fSU5UIChuZXdfc3RhdGUtPnRlc3RfZGF0YSk7CisKKyAgaWYgKGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfTUVESUFfSU5GT19VUERBVEVEKSB7CisgICAgdGVzdF9tZWRpYV9pbmZvX29iamVjdCAocGxheWVyLCBuZXdfc3RhdGUtPm1lZGlhX2luZm8pOworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChjb21wbGV0ZWQgKyAxKTsKKyAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworICB9IGVsc2UgaWYgKGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRU5EX09GX1NUUkVBTSB8fAorICAgICAgY2hhbmdlID09IFNUQVRFX0NIQU5HRV9FUlJPUikgeworICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisgIH0KK30KKworU1RBUlRfVEVTVCAodGVzdF9wbGF5X21lZGlhX2luZm8pCit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBUZXN0UGxheWVyU3RhdGUgc3RhdGU7CisgIGdjaGFyICp1cmk7CisKKyAgbWVtc2V0ICgmc3RhdGUsIDAsIHNpemVvZiAoc3RhdGUpKTsKKyAgc3RhdGUubG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOworICBzdGF0ZS50ZXN0X2NhbGxiYWNrID0gdGVzdF9wbGF5X21lZGlhX2luZm9fY2I7CisgIHN0YXRlLnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMCk7CisKKyAgcGxheWVyID0gdGVzdF9wbGF5ZXJfbmV3ICgmc3RhdGUpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgdXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvc2ludGVsLm1rdiIsIE5VTEwpOworICBmYWlsX3VubGVzcyAodXJpICE9IE5VTEwpOworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgdXJpKTsKKyAgZ19mcmVlICh1cmkpOworCisgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSksIDEpOworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHN0YXRlLmxvb3ApOworfQorCitFTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK3Rlc3RfcGxheV9lcnJvcl9pbnZhbGlkX2V4dGVybmFsX3N1YnVyaV9jYiAoR3N0UGxheWVyICogcGxheWVyLAorICAgIFRlc3RQbGF5ZXJTdGF0ZUNoYW5nZSBjaGFuZ2UsIFRlc3RQbGF5ZXJTdGF0ZSAqIG9sZF9zdGF0ZSwKKyAgICBUZXN0UGxheWVyU3RhdGUgKiBuZXdfc3RhdGUpCit7CisgIGdpbnQgc3RlcHMgPSBHUE9JTlRFUl9UT19JTlQgKG5ld19zdGF0ZS0+dGVzdF9kYXRhKTsKKworICBpZiAobmV3X3N0YXRlLT5zdGF0ZSA9PSBHU1RfUExBWUVSX1NUQVRFX1BMQVlJTkcgJiYgIXN0ZXBzKSB7CisgICAgZ2NoYXIgKnN1YnVyaTsKKworICAgIHN1YnVyaSA9IGdzdF9maWxlbmFtZV90b191cmkgKFRFU1RfUEFUSCAiL2Zvby5zcnQiLCBOVUxMKTsKKyAgICBmYWlsX3VubGVzcyAoc3VidXJpICE9IE5VTEwpOworCisgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXBzICsgMSk7CisgICAgLyogbG9hZCBpbnZhbGlkIHN1YnVyaSAqLworICAgIGZhaWxfdW5sZXNzIChnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV91cmkgKHBsYXllciwgc3VidXJpKSAhPSBGQUxTRSk7CisgICAgZ19mcmVlIChzdWJ1cmkpOworCisgIH0gZWxzZSBpZiAoc3RlcHMgJiYgY2hhbmdlID09IFNUQVRFX0NIQU5HRV9XQVJOSU5HKSB7CisgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXBzICsgMSk7CisgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKKworICB9IGVsc2UgaWYgKGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRU5EX09GX1NUUkVBTSB8fAorICAgICAgY2hhbmdlID09IFNUQVRFX0NIQU5HRV9FUlJPUikKKyAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworfQorCitzdGF0aWMgdm9pZAordGVzdF9wbGF5X3N0cmVhbV9kaXNhYmxlX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsCisgICAgVGVzdFBsYXllclN0YXRlQ2hhbmdlIGNoYW5nZSwgVGVzdFBsYXllclN0YXRlICogb2xkX3N0YXRlLAorICAgIFRlc3RQbGF5ZXJTdGF0ZSAqIG5ld19zdGF0ZSkKK3sKKyAgZ2ludCBzdGVwcyA9IEdQT0lOVEVSX1RPX0lOVCAobmV3X3N0YXRlLT50ZXN0X2RhdGEpICYgMHhmOworICBnaW50IG1hc2sgPSBHUE9JTlRFUl9UT19JTlQgKG5ld19zdGF0ZS0+dGVzdF9kYXRhKSAmIDB4ZjA7CisKKyAgaWYgKG5ld19zdGF0ZS0+c3RhdGUgPT0gR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HICYmICFzdGVwcykgeworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSICgweDEwICsgc3RlcHMgKyAxKTsKKyAgICBnc3RfcGxheWVyX3NldF9hdWRpb190cmFja19lbmFibGVkIChwbGF5ZXIsIEZBTFNFKTsKKworICB9IGVsc2UgaWYgKG1hc2sgPT0gMHgxMCAmJiBjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX1BPU0lUSU9OX1VQREFURUQpIHsKKyAgICBHc3RQbGF5ZXJBdWRpb0luZm8gKmF1ZGlvOworCisgICAgYXVkaW8gPSBnc3RfcGxheWVyX2dldF9jdXJyZW50X2F1ZGlvX3RyYWNrIChwbGF5ZXIpOworICAgIGZhaWxfdW5sZXNzIChhdWRpbyA9PSBOVUxMKTsKKyAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMHgyMCArIHN0ZXBzICsgMSk7CisgICAgZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2tfZW5hYmxlZCAocGxheWVyLCBGQUxTRSk7CisKKyAgfSBlbHNlIGlmIChtYXNrID09IDB4MjAgJiYgY2hhbmdlID09IFNUQVRFX0NIQU5HRV9QT1NJVElPTl9VUERBVEVEKSB7CisgICAgR3N0UGxheWVyU3VidGl0bGVJbmZvICpzdWI7CisKKyAgICBzdWIgPSBnc3RfcGxheWVyX2dldF9jdXJyZW50X3N1YnRpdGxlX3RyYWNrIChwbGF5ZXIpOworICAgIGZhaWxfdW5sZXNzIChzdWIgPT0gTlVMTCk7CisgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDB4MzAgKyBzdGVwcyArIDEpOworICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisKKyAgfSBlbHNlIGlmIChjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX0VORF9PRl9TVFJFQU0gfHwKKyAgICAgIGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRVJST1IpIHsKKyAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworICB9Cit9CisKK1NUQVJUX1RFU1QgKHRlc3RfcGxheV9zdHJlYW1fZGlzYWJsZSkKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIFRlc3RQbGF5ZXJTdGF0ZSBzdGF0ZTsKKyAgZ2NoYXIgKnVyaTsKKworICBtZW1zZXQgKCZzdGF0ZSwgMCwgc2l6ZW9mIChzdGF0ZSkpOworICBzdGF0ZS5sb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7CisgIHN0YXRlLnRlc3RfY2FsbGJhY2sgPSB0ZXN0X3BsYXlfc3RyZWFtX2Rpc2FibGVfY2I7CisgIHN0YXRlLnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMCk7CisKKyAgcGxheWVyID0gdGVzdF9wbGF5ZXJfbmV3ICgmc3RhdGUpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgdXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvc2ludGVsLm1rdiIsIE5VTEwpOworICBmYWlsX3VubGVzcyAodXJpICE9IE5VTEwpOworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgdXJpKTsKKyAgZ19mcmVlICh1cmkpOworCisgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSksIDB4MzMpOworCisgIGdfb2JqZWN0X3VucmVmIChwbGF5ZXIpOworICBnX21haW5fbG9vcF91bnJlZiAoc3RhdGUubG9vcCk7Cit9CisKK0VORF9URVNUOworCitzdGF0aWMgdm9pZAordGVzdF9wbGF5X3N0cmVhbV9zd2l0Y2hfYXVkaW9fY2IgKEdzdFBsYXllciAqIHBsYXllciwKKyAgICBUZXN0UGxheWVyU3RhdGVDaGFuZ2UgY2hhbmdlLCBUZXN0UGxheWVyU3RhdGUgKiBvbGRfc3RhdGUsCisgICAgVGVzdFBsYXllclN0YXRlICogbmV3X3N0YXRlKQoreworICBnaW50IHN0ZXBzID0gR1BPSU5URVJfVE9fSU5UIChuZXdfc3RhdGUtPnRlc3RfZGF0YSk7CisKKyAgaWYgKG5ld19zdGF0ZS0+c3RhdGUgPT0gR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HICYmICFzdGVwcykgeworICAgIGdpbnQgcmV0OworCisgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXBzICsgMSk7CisgICAgcmV0ID0gZ3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2sgKHBsYXllciwgMSk7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAocmV0LCAxKTsKKworICB9IGVsc2UgaWYgKHN0ZXBzICYmIGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfUE9TSVRJT05fVVBEQVRFRCkgeworICAgIGdpbnQgaW5kZXg7CisgICAgR3N0UGxheWVyQXVkaW9JbmZvICphdWRpbzsKKworICAgIGF1ZGlvID0gZ3N0X3BsYXllcl9nZXRfY3VycmVudF9hdWRpb190cmFjayAocGxheWVyKTsKKyAgICBmYWlsX3VubGVzcyAoYXVkaW8gIT0gTlVMTCk7CisgICAgaW5kZXggPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9pbmRleCAoKEdzdFBsYXllclN0cmVhbUluZm8gKikgYXVkaW8pOworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGluZGV4LCAxKTsKKyAgICBnX29iamVjdF91bnJlZiAoYXVkaW8pOworCisgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXBzICsgMSk7CisgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKKworICB9IGVsc2UgaWYgKGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRU5EX09GX1NUUkVBTSB8fAorICAgICAgY2hhbmdlID09IFNUQVRFX0NIQU5HRV9FUlJPUikgeworICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisgIH0KK30KKworU1RBUlRfVEVTVCAodGVzdF9wbGF5X3N0cmVhbV9zd2l0Y2hfYXVkaW8pCit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBUZXN0UGxheWVyU3RhdGUgc3RhdGU7CisgIGdjaGFyICp1cmk7CisKKyAgbWVtc2V0ICgmc3RhdGUsIDAsIHNpemVvZiAoc3RhdGUpKTsKKyAgc3RhdGUubG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOworICBzdGF0ZS50ZXN0X2NhbGxiYWNrID0gdGVzdF9wbGF5X3N0cmVhbV9zd2l0Y2hfYXVkaW9fY2I7CisgIHN0YXRlLnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMCk7CisKKyAgcGxheWVyID0gdGVzdF9wbGF5ZXJfbmV3ICgmc3RhdGUpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgdXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvc2ludGVsLm1rdiIsIE5VTEwpOworICBmYWlsX3VubGVzcyAodXJpICE9IE5VTEwpOworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgdXJpKTsKKyAgZ19mcmVlICh1cmkpOworCisgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSksIDIpOworCisgIGdfb2JqZWN0X3VucmVmIChwbGF5ZXIpOworICBnX21haW5fbG9vcF91bnJlZiAoc3RhdGUubG9vcCk7Cit9CisKK0VORF9URVNUOworCitzdGF0aWMgdm9pZAordGVzdF9wbGF5X3N0cmVhbV9zd2l0Y2hfc3VidGl0bGVfY2IgKEdzdFBsYXllciAqIHBsYXllciwKKyAgICBUZXN0UGxheWVyU3RhdGVDaGFuZ2UgY2hhbmdlLCBUZXN0UGxheWVyU3RhdGUgKiBvbGRfc3RhdGUsCisgICAgVGVzdFBsYXllclN0YXRlICogbmV3X3N0YXRlKQoreworICBnaW50IHN0ZXBzID0gR1BPSU5URVJfVE9fSU5UIChuZXdfc3RhdGUtPnRlc3RfZGF0YSk7CisKKyAgaWYgKG5ld19zdGF0ZS0+c3RhdGUgPT0gR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HICYmICFzdGVwcykgeworICAgIGdpbnQgcmV0OworCisgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXBzICsgMSk7CisgICAgcmV0ID0gZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2sgKHBsYXllciwgNSk7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAocmV0LCAxKTsKKworICB9IGVsc2UgaWYgKHN0ZXBzICYmIGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfUE9TSVRJT05fVVBEQVRFRCkgeworICAgIGdpbnQgaW5kZXg7CisgICAgR3N0UGxheWVyU3VidGl0bGVJbmZvICpzdWI7CisKKyAgICBzdWIgPSBnc3RfcGxheWVyX2dldF9jdXJyZW50X3N1YnRpdGxlX3RyYWNrIChwbGF5ZXIpOworICAgIGZhaWxfdW5sZXNzIChzdWIgIT0gTlVMTCk7CisgICAgaW5kZXggPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9pbmRleCAoKEdzdFBsYXllclN0cmVhbUluZm8gKikgc3ViKTsKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChpbmRleCwgNSk7CisgICAgZ19vYmplY3RfdW5yZWYgKHN1Yik7CisKKyAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcHMgKyAxKTsKKyAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworCisgIH0gZWxzZSBpZiAoY2hhbmdlID09IFNUQVRFX0NIQU5HRV9FTkRfT0ZfU1RSRUFNIHx8CisgICAgICBjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX0VSUk9SKSB7CisgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKKyAgfQorfQorCitTVEFSVF9URVNUICh0ZXN0X3BsYXlfc3RyZWFtX3N3aXRjaF9zdWJ0aXRsZSkKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIFRlc3RQbGF5ZXJTdGF0ZSBzdGF0ZTsKKyAgZ2NoYXIgKnVyaTsKKworICBtZW1zZXQgKCZzdGF0ZSwgMCwgc2l6ZW9mIChzdGF0ZSkpOworICBzdGF0ZS5sb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7CisgIHN0YXRlLnRlc3RfY2FsbGJhY2sgPSB0ZXN0X3BsYXlfc3RyZWFtX3N3aXRjaF9zdWJ0aXRsZV9jYjsKKyAgc3RhdGUudGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSICgwKTsKKworICBwbGF5ZXIgPSB0ZXN0X3BsYXllcl9uZXcgKCZzdGF0ZSk7CisKKyAgZmFpbF91bmxlc3MgKHBsYXllciAhPSBOVUxMKTsKKworICB1cmkgPSBnc3RfZmlsZW5hbWVfdG9fdXJpIChURVNUX1BBVEggIi9zaW50ZWwubWt2IiwgTlVMTCk7CisgIGZhaWxfdW5sZXNzICh1cmkgIT0gTlVMTCk7CisgIGdzdF9wbGF5ZXJfc2V0X3VyaSAocGxheWVyLCB1cmkpOworICBnX2ZyZWUgKHVyaSk7CisKKyAgZ3N0X3BsYXllcl9wbGF5IChwbGF5ZXIpOworICBnX21haW5fbG9vcF9ydW4gKHN0YXRlLmxvb3ApOworCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKEdQT0lOVEVSX1RPX0lOVCAoc3RhdGUudGVzdF9kYXRhKSwgMik7CisKKyAgZ19vYmplY3RfdW5yZWYgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3VucmVmIChzdGF0ZS5sb29wKTsKK30KKworRU5EX1RFU1Q7CisKK1NUQVJUX1RFU1QgKHRlc3RfcGxheV9lcnJvcl9pbnZhbGlkX2V4dGVybmFsX3N1YnVyaSkKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIFRlc3RQbGF5ZXJTdGF0ZSBzdGF0ZTsKKyAgZ2NoYXIgKnVyaTsKKworICBtZW1zZXQgKCZzdGF0ZSwgMCwgc2l6ZW9mIChzdGF0ZSkpOworICBzdGF0ZS5sb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7CisgIHN0YXRlLnRlc3RfY2FsbGJhY2sgPSB0ZXN0X3BsYXlfZXJyb3JfaW52YWxpZF9leHRlcm5hbF9zdWJ1cmlfY2I7CisgIHN0YXRlLnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMCk7CisKKyAgcGxheWVyID0gdGVzdF9wbGF5ZXJfbmV3ICgmc3RhdGUpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgdXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvYXVkaW8tdmlkZW8ub2dnIiwgTlVMTCk7CisgIGZhaWxfdW5sZXNzICh1cmkgIT0gTlVMTCk7CisgIGdzdF9wbGF5ZXJfc2V0X3VyaSAocGxheWVyLCB1cmkpOworICBnX2ZyZWUgKHVyaSk7CisKKyAgZ3N0X3BsYXllcl9wbGF5IChwbGF5ZXIpOworICBnX21haW5fbG9vcF9ydW4gKHN0YXRlLmxvb3ApOworCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKEdQT0lOVEVSX1RPX0lOVCAoc3RhdGUudGVzdF9kYXRhKSwgMik7CisKKyAgZ19vYmplY3RfdW5yZWYgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3VucmVmIChzdGF0ZS5sb29wKTsKK30KKworRU5EX1RFU1Q7CisKK3N0YXRpYyBnYm9vbGVhbgoraGFzX3N1YnRpdGxlX3N0cmVhbSAoVGVzdFBsYXllclN0YXRlICogbmV3X3N0YXRlKQoreworICBpZiAoZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfc3RyZWFtcyAobmV3X3N0YXRlLT5tZWRpYV9pbmZvKSkKKyAgICByZXR1cm4gVFJVRTsKKworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3BsYXlfZXh0ZXJuYWxfc3VidXJpX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsCisgICAgVGVzdFBsYXllclN0YXRlQ2hhbmdlIGNoYW5nZSwgVGVzdFBsYXllclN0YXRlICogb2xkX3N0YXRlLAorICAgIFRlc3RQbGF5ZXJTdGF0ZSAqIG5ld19zdGF0ZSkKK3sKKyAgZ2ludCBzdGVwcyA9IEdQT0lOVEVSX1RPX0lOVCAobmV3X3N0YXRlLT50ZXN0X2RhdGEpOworCisgIGlmIChuZXdfc3RhdGUtPnN0YXRlID09IEdTVF9QTEFZRVJfU1RBVEVfUExBWUlORyAmJiAhc3RlcHMpIHsKKyAgICBnY2hhciAqc3VidXJpOworCisgICAgc3VidXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvdGVzdF9zdWIuc3J0IiwgTlVMTCk7CisgICAgZmFpbF91bmxlc3MgKHN1YnVyaSAhPSBOVUxMKTsKKworICAgIGZhaWxfdW5sZXNzIChnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV91cmkgKHBsYXllciwgc3VidXJpKSAhPSBGQUxTRSk7CisgICAgZ19mcmVlIChzdWJ1cmkpOworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwcyArIDEpOworCisgIH0gZWxzZSBpZiAoY2hhbmdlID09IFNUQVRFX0NIQU5HRV9NRURJQV9JTkZPX1VQREFURUQgJiYKKyAgICAgIGhhc19zdWJ0aXRsZV9zdHJlYW0gKG5ld19zdGF0ZSkpIHsKKyAgICBnY2hhciAqY3VycmVudF9zdWJ1cmksICpzdWJ1cmk7CisKKyAgICBjdXJyZW50X3N1YnVyaSA9IGdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3VyaSAocGxheWVyKTsKKyAgICBmYWlsX3VubGVzcyAoY3VycmVudF9zdWJ1cmkgIT0gTlVMTCk7CisgICAgc3VidXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvdGVzdF9zdWIuc3J0IiwgTlVMTCk7CisgICAgZmFpbF91bmxlc3MgKHN1YnVyaSAhPSBOVUxMKTsKKworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfc3RyY21wMCAoY3VycmVudF9zdWJ1cmksIHN1YnVyaSksIDApOworCisgICAgZ19mcmVlIChjdXJyZW50X3N1YnVyaSk7CisgICAgZ19mcmVlIChzdWJ1cmkpOworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwcyArIDEpOworICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisKKyAgfSBlbHNlIGlmIChjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX0VORF9PRl9TVFJFQU0gfHwKKyAgICAgIGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRVJST1IpCisgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKK30KKworU1RBUlRfVEVTVCAodGVzdF9wbGF5X2V4dGVybmFsX3N1YnVyaSkKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIFRlc3RQbGF5ZXJTdGF0ZSBzdGF0ZTsKKyAgZ2NoYXIgKnVyaTsKKworICBtZW1zZXQgKCZzdGF0ZSwgMCwgc2l6ZW9mIChzdGF0ZSkpOworICBzdGF0ZS5sb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7CisgIHN0YXRlLnRlc3RfY2FsbGJhY2sgPSB0ZXN0X3BsYXlfZXh0ZXJuYWxfc3VidXJpX2NiOworICBzdGF0ZS50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDApOworCisgIHBsYXllciA9IHRlc3RfcGxheWVyX25ldyAoJnN0YXRlKTsKKworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworCisgIHVyaSA9IGdzdF9maWxlbmFtZV90b191cmkgKFRFU1RfUEFUSCAiL2F1ZGlvLXZpZGVvLm9nZyIsIE5VTEwpOworICBmYWlsX3VubGVzcyAodXJpICE9IE5VTEwpOworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgdXJpKTsKKyAgZ19mcmVlICh1cmkpOworCisgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSksIDIpOworCisgIGdfb2JqZWN0X3VucmVmIChwbGF5ZXIpOworICBnX21haW5fbG9vcF91bnJlZiAoc3RhdGUubG9vcCk7Cit9CisKK0VORF9URVNUOworCitzdGF0aWMgdm9pZAordGVzdF9wbGF5X3JhdGVfY2IgKEdzdFBsYXllciAqIHBsYXllciwKKyAgICBUZXN0UGxheWVyU3RhdGVDaGFuZ2UgY2hhbmdlLCBUZXN0UGxheWVyU3RhdGUgKiBvbGRfc3RhdGUsCisgICAgVGVzdFBsYXllclN0YXRlICogbmV3X3N0YXRlKQoreworICBnaW50IHN0ZXBzID0gR1BPSU5URVJfVE9fSU5UIChuZXdfc3RhdGUtPnRlc3RfZGF0YSkgJiAweGY7CisgIGdpbnQgbWFzayA9IEdQT0lOVEVSX1RPX0lOVCAobmV3X3N0YXRlLT50ZXN0X2RhdGEpICYgMHhmMDsKKworICBpZiAobmV3X3N0YXRlLT5zdGF0ZSA9PSBHU1RfUExBWUVSX1NUQVRFX1BMQVlJTkcgJiYgIXN0ZXBzKSB7CisgICAgZ3VpbnQ2NCBkdXIgPSAtMSwgcG9zID0gLTE7CisKKyAgICBnX29iamVjdF9nZXQgKHBsYXllciwgInBvc2l0aW9uIiwgJnBvcywgImR1cmF0aW9uIiwgJmR1ciwgTlVMTCk7CisgICAgcG9zID0gcG9zICsgZHVyICogMC4yOyAgICAgIC8qIHNlZWsgMjAlICovCisgICAgZ3N0X3BsYXllcl9zZWVrIChwbGF5ZXIsIHBvcyk7CisKKyAgICAvKiBkZWZhdWx0IHJhdGUgc2hvdWxkIGJlIDEuMCAqLworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19kb3VibGUgKGdzdF9wbGF5ZXJfZ2V0X3JhdGUgKHBsYXllciksIDEuMCk7CisgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKG1hc2sgKyBzdGVwcyArIDEpOworICB9IGVsc2UgaWYgKGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRU5EX09GX1NUUkVBTSB8fAorICAgICAgY2hhbmdlID09IFNUQVRFX0NIQU5HRV9FUlJPUikgeworICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisgIH0gZWxzZSBpZiAoc3RlcHMgPT0gMSAmJiBjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX1NFRUtfRE9ORSkgeworICAgIGlmIChtYXNrID09IDB4MTApCisgICAgICBnc3RfcGxheWVyX3NldF9yYXRlIChwbGF5ZXIsIDEuNSk7CisgICAgZWxzZSBpZiAobWFzayA9PSAweDIwKQorICAgICAgZ3N0X3BsYXllcl9zZXRfcmF0ZSAocGxheWVyLCAtMS4wKTsKKworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChtYXNrICsgc3RlcHMgKyAxKTsKKyAgfSBlbHNlIGlmIChzdGVwcyAmJiAoY2hhbmdlID09IFNUQVRFX0NIQU5HRV9QT1NJVElPTl9VUERBVEVEKSkgeworICAgIGlmIChzdGVwcyA9PSAxMCkgeworICAgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKG1hc2sgPT0gMHgxMCAmJiAobmV3X3N0YXRlLT5wb3NpdGlvbiA+IG9sZF9zdGF0ZS0+cG9zaXRpb24pKQorICAgICAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAobWFzayArIHN0ZXBzICsgMSk7CisgICAgICBlbHNlIGlmIChtYXNrID09IDB4MjAgJiYgKG5ld19zdGF0ZS0+cG9zaXRpb24gPCBvbGRfc3RhdGUtPnBvc2l0aW9uKSkKKyAgICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKG1hc2sgKyBzdGVwcyArIDEpOworICAgIH0KKyAgfQorfQorCitTVEFSVF9URVNUICh0ZXN0X3BsYXlfZm9yd2FyZF9yYXRlKQoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgVGVzdFBsYXllclN0YXRlIHN0YXRlOworICBnY2hhciAqdXJpOworCisgIG1lbXNldCAoJnN0YXRlLCAwLCBzaXplb2YgKHN0YXRlKSk7CisgIHN0YXRlLmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIEZBTFNFKTsKKyAgc3RhdGUudGVzdF9jYWxsYmFjayA9IHRlc3RfcGxheV9yYXRlX2NiOworICBzdGF0ZS50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDB4MTApOworCisgIHBsYXllciA9IHRlc3RfcGxheWVyX25ldyAoJnN0YXRlKTsKKworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworCisgIHVyaSA9IGdzdF9maWxlbmFtZV90b191cmkgKFRFU1RfUEFUSCAiL2F1ZGlvLm9nZyIsIE5VTEwpOworICBmYWlsX3VubGVzcyAodXJpICE9IE5VTEwpOworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgdXJpKTsKKyAgZ19mcmVlICh1cmkpOworCisgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSkgJiAweGYsIDEwKTsKKworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHN0YXRlLmxvb3ApOworfQorCitFTkRfVEVTVDsKKworU1RBUlRfVEVTVCAodGVzdF9wbGF5X2JhY2t3YXJkX3JhdGUpCit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBUZXN0UGxheWVyU3RhdGUgc3RhdGU7CisgIGdjaGFyICp1cmk7CisKKyAgbWVtc2V0ICgmc3RhdGUsIDAsIHNpemVvZiAoc3RhdGUpKTsKKyAgc3RhdGUubG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOworICBzdGF0ZS50ZXN0X2NhbGxiYWNrID0gdGVzdF9wbGF5X3JhdGVfY2I7CisgIHN0YXRlLnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMHgyMCk7CisKKyAgcGxheWVyID0gdGVzdF9wbGF5ZXJfbmV3ICgmc3RhdGUpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgdXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvYXVkaW8ub2dnIiwgTlVMTCk7CisgIGZhaWxfdW5sZXNzICh1cmkgIT0gTlVMTCk7CisgIGdzdF9wbGF5ZXJfc2V0X3VyaSAocGxheWVyLCB1cmkpOworICBnX2ZyZWUgKHVyaSk7CisKKyAgZ3N0X3BsYXllcl9wbGF5IChwbGF5ZXIpOworICBnX21haW5fbG9vcF9ydW4gKHN0YXRlLmxvb3ApOworCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKEdQT0lOVEVSX1RPX0lOVCAoc3RhdGUudGVzdF9kYXRhKSAmIDB4ZiwgMTApOworCisgIGdfb2JqZWN0X3VucmVmIChwbGF5ZXIpOworICBnX21haW5fbG9vcF91bnJlZiAoc3RhdGUubG9vcCk7Cit9CisKK0VORF9URVNUOworCitTVEFSVF9URVNUICh0ZXN0X3BsYXlfYXVkaW9fdmlkZW9fZW9zKQoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgVGVzdFBsYXllclN0YXRlIHN0YXRlOworICBnY2hhciAqdXJpOworCisgIG1lbXNldCAoJnN0YXRlLCAwLCBzaXplb2YgKHN0YXRlKSk7CisgIHN0YXRlLmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIEZBTFNFKTsKKyAgc3RhdGUudGVzdF9jYWxsYmFjayA9IHRlc3RfcGxheV9hdWRpb192aWRlb19lb3NfY2I7CisgIHN0YXRlLnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMHgxMCk7CisKKyAgcGxheWVyID0gdGVzdF9wbGF5ZXJfbmV3ICgmc3RhdGUpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgdXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvYXVkaW8tdmlkZW8tc2hvcnQub2dnIiwgTlVMTCk7CisgIGZhaWxfdW5sZXNzICh1cmkgIT0gTlVMTCk7CisgIGdzdF9wbGF5ZXJfc2V0X3VyaSAocGxheWVyLCB1cmkpOworICBnX2ZyZWUgKHVyaSk7CisKKyAgZ3N0X3BsYXllcl9wbGF5IChwbGF5ZXIpOworICBnX21haW5fbG9vcF9ydW4gKHN0YXRlLmxvb3ApOworCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKEdQT0lOVEVSX1RPX0lOVCAoc3RhdGUudGVzdF9kYXRhKSAmICh+MHgxMCksIDgpOworCisgIGdfb2JqZWN0X3VucmVmIChwbGF5ZXIpOworICBnX21haW5fbG9vcF91bnJlZiAoc3RhdGUubG9vcCk7Cit9CisKK0VORF9URVNUOworCitzdGF0aWMgdm9pZAordGVzdF9wbGF5X2Vycm9yX2ludmFsaWRfdXJpX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsCisgICAgVGVzdFBsYXllclN0YXRlQ2hhbmdlIGNoYW5nZSwgVGVzdFBsYXllclN0YXRlICogb2xkX3N0YXRlLAorICAgIFRlc3RQbGF5ZXJTdGF0ZSAqIG5ld19zdGF0ZSkKK3sKKyAgZ2ludCBzdGVwID0gR1BPSU5URVJfVE9fSU5UIChuZXdfc3RhdGUtPnRlc3RfZGF0YSk7CisKKyAgc3dpdGNoIChzdGVwKSB7CisgICAgY2FzZSAwOgorICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbmdlLCBTVEFURV9DSEFOR0VfU1RBVEVfQ0hBTkdFRCk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChvbGRfc3RhdGUtPnN0YXRlLCBHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAobmV3X3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkcpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXAgKyAxKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX0VSUk9SKTsKKyAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwICsgMSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9TVEFURV9DSEFOR0VEKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG9sZF9zdGF0ZS0+c3RhdGUsIEdTVF9QTEFZRVJfU1RBVEVfQlVGRkVSSU5HKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+c3RhdGUsIEdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRCk7CisgICAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcCArIDEpOworICAgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBmYWlsICgpOworICAgICAgYnJlYWs7CisgIH0KK30KKworU1RBUlRfVEVTVCAodGVzdF9wbGF5X2Vycm9yX2ludmFsaWRfdXJpKQoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgVGVzdFBsYXllclN0YXRlIHN0YXRlOworCisgIG1lbXNldCAoJnN0YXRlLCAwLCBzaXplb2YgKHN0YXRlKSk7CisgIHN0YXRlLmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIEZBTFNFKTsKKyAgc3RhdGUudGVzdF9jYWxsYmFjayA9IHRlc3RfcGxheV9lcnJvcl9pbnZhbGlkX3VyaV9jYjsKKyAgc3RhdGUudGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSICgwKTsKKworICBwbGF5ZXIgPSB0ZXN0X3BsYXllcl9uZXcgKCZzdGF0ZSk7CisKKyAgZmFpbF91bmxlc3MgKHBsYXllciAhPSBOVUxMKTsKKworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgImZvbzovL2JhciIpOworCisgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSksIDMpOworCisgIGdfb2JqZWN0X3VucmVmIChwbGF5ZXIpOworICBnX21haW5fbG9vcF91bnJlZiAoc3RhdGUubG9vcCk7Cit9CisKK0VORF9URVNUOworCitzdGF0aWMgdm9pZAordGVzdF9wbGF5X2Vycm9yX2ludmFsaWRfdXJpX2FuZF9wbGF5X2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsCisgICAgVGVzdFBsYXllclN0YXRlQ2hhbmdlIGNoYW5nZSwgVGVzdFBsYXllclN0YXRlICogb2xkX3N0YXRlLAorICAgIFRlc3RQbGF5ZXJTdGF0ZSAqIG5ld19zdGF0ZSkKK3sKKyAgZ2ludCBzdGVwID0gR1BPSU5URVJfVE9fSU5UIChuZXdfc3RhdGUtPnRlc3RfZGF0YSk7CisgIGdjaGFyICp1cmk7CisKKyAgc3dpdGNoIChzdGVwKSB7CisgICAgY2FzZSAwOgorICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbmdlLCBTVEFURV9DSEFOR0VfU1RBVEVfQ0hBTkdFRCk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChvbGRfc3RhdGUtPnN0YXRlLCBHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAobmV3X3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkcpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXAgKyAxKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX0VSUk9SKTsKKyAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwICsgMSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9TVEFURV9DSEFOR0VEKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG9sZF9zdGF0ZS0+c3RhdGUsIEdTVF9QTEFZRVJfU1RBVEVfQlVGRkVSSU5HKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+c3RhdGUsIEdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRCk7CisgICAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcCArIDEpOworCisgICAgICB1cmkgPSBnc3RfZmlsZW5hbWVfdG9fdXJpIChURVNUX1BBVEggIi9hdWRpby1zaG9ydC5vZ2ciLCBOVUxMKTsKKyAgICAgIGZhaWxfdW5sZXNzICh1cmkgIT0gTlVMTCk7CisgICAgICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgdXJpKTsKKyAgICAgIGdfZnJlZSAodXJpKTsKKworICAgICAgZ3N0X3BsYXllcl9wbGF5IChwbGF5ZXIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbmdlLCBTVEFURV9DSEFOR0VfU1RBVEVfQ0hBTkdFRCk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChvbGRfc3RhdGUtPnN0YXRlLCBHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAobmV3X3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkcpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXAgKyAxKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX01FRElBX0lORk9fVVBEQVRFRCk7CisgICAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcCArIDEpOworICAgICAgYnJlYWs7CisgICAgY2FzZSA1OgorICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbmdlLCBTVEFURV9DSEFOR0VfVklERU9fRElNRU5TSU9OU19DSEFOR0VEKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+d2lkdGgsIDApOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAobmV3X3N0YXRlLT5oZWlnaHQsIDApOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXAgKyAxKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgNjoKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX0RVUkFUSU9OX0NIQU5HRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX3VpbnQ2NCAobmV3X3N0YXRlLT5kdXJhdGlvbiwKKyAgICAgICAgICBHX0dVSU5UNjRfQ09OU1RBTlQgKDQ2NDM5OTA5MikpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXAgKyAxKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgNzoKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX1BPU0lUSU9OX1VQREFURUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX3VpbnQ2NCAobmV3X3N0YXRlLT5wb3NpdGlvbiwgR19HVUlOVDY0X0NPTlNUQU5UICgwKSk7CisgICAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcCArIDEpOworICAgICAgYnJlYWs7CisgICAgY2FzZSA4OgorICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbmdlLCBTVEFURV9DSEFOR0VfU1RBVEVfQ0hBTkdFRCk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChvbGRfc3RhdGUtPnN0YXRlLCBHU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORyk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChuZXdfc3RhdGUtPnN0YXRlLCBHU1RfUExBWUVSX1NUQVRFX1BMQVlJTkcpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXAgKyAxKTsKKyAgICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgZmFpbCAoKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK1NUQVJUX1RFU1QgKHRlc3RfcGxheV9lcnJvcl9pbnZhbGlkX3VyaV9hbmRfcGxheSkKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIFRlc3RQbGF5ZXJTdGF0ZSBzdGF0ZTsKKworICBtZW1zZXQgKCZzdGF0ZSwgMCwgc2l6ZW9mIChzdGF0ZSkpOworICBzdGF0ZS5sb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7CisgIHN0YXRlLnRlc3RfY2FsbGJhY2sgPSB0ZXN0X3BsYXlfZXJyb3JfaW52YWxpZF91cmlfYW5kX3BsYXlfY2I7CisgIHN0YXRlLnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMCk7CisKKyAgcGxheWVyID0gdGVzdF9wbGF5ZXJfbmV3ICgmc3RhdGUpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5ZXIsICJmb286Ly9iYXIiKTsKKworICBnc3RfcGxheWVyX3BsYXkgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3J1biAoc3RhdGUubG9vcCk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoR1BPSU5URVJfVE9fSU5UIChzdGF0ZS50ZXN0X2RhdGEpLCA5KTsKKworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHN0YXRlLmxvb3ApOworfQorCitFTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK3Rlc3RfcGxheV9zZWVrX2RvbmVfY2IgKEdzdFBsYXllciAqIHBsYXllciwKKyAgICBUZXN0UGxheWVyU3RhdGVDaGFuZ2UgY2hhbmdlLCBUZXN0UGxheWVyU3RhdGUgKiBvbGRfc3RhdGUsCisgICAgVGVzdFBsYXllclN0YXRlICogbmV3X3N0YXRlKQoreworICBnaW50IHN0ZXAgPSBHUE9JTlRFUl9UT19JTlQgKG5ld19zdGF0ZS0+dGVzdF9kYXRhKSAmICh+MHgxMCk7CisKKyAgaWYgKG5ld19zdGF0ZS0+c3RhdGUgPT0gR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HICYmICFzdGVwKSB7CisgICAgZ3N0X3BsYXllcl9zZWVrIChwbGF5ZXIsIDApOworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwICsgMSk7CisgIH0gZWxzZSBpZiAoY2hhbmdlID09IFNUQVRFX0NIQU5HRV9TRUVLX0RPTkUgfHwgY2hhbmdlID09IFNUQVRFX0NIQU5HRV9FUlJPUikgeworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX1NFRUtfRE9ORSk7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX3VpbnQ2NCAobmV3X3N0YXRlLT5zZWVrX2RvbmVfcG9zaXRpb24sCisgICAgICAgIEdfR1VJTlQ2NF9DT05TVEFOVCAoMCkpOworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwICsgMSk7CisgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKKyAgfQorfQorCitTVEFSVF9URVNUICh0ZXN0X3BsYXlfYXVkaW9fdmlkZW9fc2Vla19kb25lKQoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgVGVzdFBsYXllclN0YXRlIHN0YXRlOworICBnY2hhciAqdXJpOworCisgIG1lbXNldCAoJnN0YXRlLCAwLCBzaXplb2YgKHN0YXRlKSk7CisgIHN0YXRlLmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIEZBTFNFKTsKKyAgc3RhdGUudGVzdF9jYWxsYmFjayA9IHRlc3RfcGxheV9zZWVrX2RvbmVfY2I7CisgIHN0YXRlLnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMCk7CisKKyAgcGxheWVyID0gdGVzdF9wbGF5ZXJfbmV3ICgmc3RhdGUpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgdXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvYXVkaW8tdmlkZW8ub2dnIiwgTlVMTCk7CisgIGZhaWxfdW5sZXNzICh1cmkgIT0gTlVMTCk7CisgIGdzdF9wbGF5ZXJfc2V0X3VyaSAocGxheWVyLCB1cmkpOworICBnX2ZyZWUgKHVyaSk7CisKKyAgZ3N0X3BsYXllcl9wbGF5IChwbGF5ZXIpOworICBnX21haW5fbG9vcF9ydW4gKHN0YXRlLmxvb3ApOworCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKEdQT0lOVEVSX1RPX0lOVCAoc3RhdGUudGVzdF9kYXRhKSAmICh+MHgxMCksIDIpOworCisgIGdfb2JqZWN0X3VucmVmIChwbGF5ZXIpOworICBnX21haW5fbG9vcF91bnJlZiAoc3RhdGUubG9vcCk7Cit9CisKK0VORF9URVNUOworCitzdGF0aWMgdm9pZAordGVzdF9wbGF5X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbF9jYiAoR3N0UGxheWVyICogcGxheWVyLAorICAgIFRlc3RQbGF5ZXJTdGF0ZUNoYW5nZSBjaGFuZ2UsIFRlc3RQbGF5ZXJTdGF0ZSAqIG9sZF9zdGF0ZSwKKyAgICBUZXN0UGxheWVyU3RhdGUgKiBuZXdfc3RhdGUpCit7CisgIHN0YXRpYyBnYm9vbGVhbiBkb19xdWl0ID0gVFJVRTsKKyAgc3RhdGljIEdzdENsb2NrVGltZSBsYXN0X3Bvc2l0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKworICBnaW50IHN0ZXBzID0gR1BPSU5URVJfVE9fSU5UIChuZXdfc3RhdGUtPnRlc3RfZGF0YSk7CisKKyAgaWYgKG5ld19zdGF0ZS0+c3RhdGUgPT0gR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HICYmICFzdGVwcykgeworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwcyArIDEpOworICB9IGVsc2UgaWYgKHN0ZXBzICYmIGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfUE9TSVRJT05fVVBEQVRFRCkgeworICAgIEdzdENsb2NrVGltZSBwb3NpdGlvbiA9IGdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uIChwbGF5ZXIpOworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwcyArIDEpOworCisgICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChsYXN0X3Bvc2l0aW9uKSkgeworICAgICAgR3N0Q2xvY2tUaW1lIGludGVydmFsID0gR1NUX0NMT0NLX0RJRkYgKGxhc3RfcG9zaXRpb24sIHBvc2l0aW9uKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBsYXllciwKKyAgICAgICAgICAicG9zaXRpb24gdXBkYXRlIGludGVydmFsOiAlIiBHU1RfVElNRV9GT1JNQVQgIlxuIiwKKyAgICAgICAgICBHU1RfVElNRV9BUkdTIChpbnRlcnZhbCkpOworICAgICAgZmFpbF91bmxlc3MgKGludGVydmFsID4gKDU5MCAqIEdTVF9NU0VDT05EKQorICAgICAgICAgICYmIGludGVydmFsIDwgKDYxMCAqIEdTVF9NU0VDT05EKSk7CisgICAgfQorCisgICAgbGFzdF9wb3NpdGlvbiA9IHBvc2l0aW9uOworCisgICAgaWYgKGRvX3F1aXQgJiYgcG9zaXRpb24gPj0gMjAwMCAqIEdTVF9NU0VDT05EKSB7CisgICAgICBkb19xdWl0ID0gRkFMU0U7CisgICAgICBnc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWwgKHBsYXllciwgMCk7CisgICAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworICAgIH0KKyAgfSBlbHNlIGlmIChjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX0VORF9PRl9TVFJFQU0gfHwKKyAgICAgIGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRVJST1IpIHsKKyAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorcXVpdF9sb29wX2NiIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdNYWluTG9vcCAqbG9vcCA9IHVzZXJfZGF0YTsKKyAgZ19tYWluX2xvb3BfcXVpdCAobG9vcCk7CisKKyAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKK30KKworU1RBUlRfVEVTVCAodGVzdF9wbGF5X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbCkKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIFRlc3RQbGF5ZXJTdGF0ZSBzdGF0ZTsKKyAgZ2NoYXIgKnVyaTsKKworICBtZW1zZXQgKCZzdGF0ZSwgMCwgc2l6ZW9mIChzdGF0ZSkpOworICBzdGF0ZS5sb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7CisgIHN0YXRlLnRlc3RfY2FsbGJhY2sgPSB0ZXN0X3BsYXlfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsX2NiOworICBzdGF0ZS50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDApOworCisgIHBsYXllciA9IHRlc3RfcGxheWVyX25ldyAoJnN0YXRlKTsKKyAgZ3N0X3BsYXllcl9zZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsIChwbGF5ZXIsIDYwMCk7CisKKyAgZmFpbF91bmxlc3MgKHBsYXllciAhPSBOVUxMKTsKKworICB1cmkgPSBnc3RfZmlsZW5hbWVfdG9fdXJpIChURVNUX1BBVEggIi9zaW50ZWwubWt2IiwgTlVMTCk7CisgIGZhaWxfdW5sZXNzICh1cmkgIT0gTlVMTCk7CisgIGdzdF9wbGF5ZXJfc2V0X3VyaSAocGxheWVyLCB1cmkpOworICBnX2ZyZWUgKHVyaSk7CisKKyAgZ3N0X3BsYXllcl9wbGF5IChwbGF5ZXIpOworICBnX21haW5fbG9vcF9ydW4gKHN0YXRlLmxvb3ApOworCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKEdQT0lOVEVSX1RPX0lOVCAoc3RhdGUudGVzdF9kYXRhKSwgNSk7CisKKyAgZ190aW1lb3V0X2FkZCAoMjAwMCwgcXVpdF9sb29wX2NiLCBzdGF0ZS5sb29wKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSksIDUpOworCisgIGdfb2JqZWN0X3VucmVmIChwbGF5ZXIpOworICBnX21haW5fbG9vcF91bnJlZiAoc3RhdGUubG9vcCk7Cit9CisKK0VORF9URVNUOworCitzdGF0aWMgU3VpdGUgKgorcGxheWVyX3N1aXRlICh2b2lkKQoreworICBTdWl0ZSAqcyA9IHN1aXRlX2NyZWF0ZSAoIkdzdFBsYXllciIpOworCisgIFRDYXNlICp0Y19nZW5lcmFsID0gdGNhc2VfY3JlYXRlICgiZ2VuZXJhbCIpOworCisgIC8qIFVzZSBhIGxvbmdlciB0aW1lb3V0ICovCisjaWZkZWYgSEFWRV9WQUxHUklORAorICBpZiAoUlVOTklOR19PTl9WQUxHUklORCkgeworICAgIHRjYXNlX3NldF90aW1lb3V0ICh0Y19nZW5lcmFsLCA1ICogNjApOworICB9IGVsc2UKKyNlbmRpZgorICB7CisgICAgdGNhc2Vfc2V0X3RpbWVvdXQgKHRjX2dlbmVyYWwsIDIgKiA2MCk7CisgIH0KKworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9jcmVhdGVfYW5kX2ZyZWUpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9zZXRfYW5kX2dldF91cmkpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9zZXRfYW5kX2dldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWwpOworCisjaWZkZWYgSEFWRV9WQUxHUklORAorICBpZiAoUlVOTklOR19PTl9WQUxHUklORCkgeworICB9IGVsc2UKKyNlbmRpZgorICB7CisgICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfcGxheV9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWwpOworICB9CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X3BsYXlfYXVkaW9fZW9zKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfcGxheV9hdWRpb192aWRlb19lb3MpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9wbGF5X2Vycm9yX2ludmFsaWRfdXJpKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfcGxheV9lcnJvcl9pbnZhbGlkX3VyaV9hbmRfcGxheSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X3BsYXlfbWVkaWFfaW5mbyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X3BsYXlfc3RyZWFtX2Rpc2FibGUpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9wbGF5X3N0cmVhbV9zd2l0Y2hfYXVkaW8pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9wbGF5X3N0cmVhbV9zd2l0Y2hfc3VidGl0bGUpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9wbGF5X2Vycm9yX2ludmFsaWRfZXh0ZXJuYWxfc3VidXJpKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfcGxheV9leHRlcm5hbF9zdWJ1cmkpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9wbGF5X2ZvcndhcmRfcmF0ZSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X3BsYXlfYmFja3dhcmRfcmF0ZSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X3BsYXlfYXVkaW9fdmlkZW9fc2Vla19kb25lKTsKKworICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2dlbmVyYWwpOworCisgIHJldHVybiBzOworfQorCitpbnQKK21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgaW50IG51bWJlcl9mYWlsZWQ7CisgIFN1aXRlICpzOworICBTUnVubmVyICpzcjsKKworICBnc3RfaW5pdCAoTlVMTCwgTlVMTCk7CisKKyAgcyA9IHBsYXllcl9zdWl0ZSAoKTsKKyAgc3IgPSBzcnVubmVyX2NyZWF0ZSAocyk7CisKKyAgc3J1bm5lcl9ydW5fYWxsIChzciwgQ0tfTk9STUFMKTsKKworICBudW1iZXJfZmFpbGVkID0gc3J1bm5lcl9udGVzdHNfZmFpbGVkIChzcik7CisKKyAgc3J1bm5lcl9mcmVlIChzcik7CisgIHJldHVybiAobnVtYmVyX2ZhaWxlZCA9PSAwKSA/IDAgOiAtMTsKK30KZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL3BpcGVsaW5lcy9teGYuYyBiL3Rlc3RzL2NoZWNrL3BpcGVsaW5lcy9teGYuYwppbmRleCA1YWIzYTUwLi40YjU5ZTNkIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9waXBlbGluZXMvbXhmLmMKKysrIGIvdGVzdHMvY2hlY2svcGlwZWxpbmVzL214Zi5jCkBAIC0yNjAsNiArMjYwLDMzIEBACiAKIEdTVF9FTkRfVEVTVDsKIAorR1NUX1NUQVJUX1RFU1QgKHRlc3RfaDI2NF9yYXdfYXVkaW8pCit7CisgIGdjaGFyICpwaXBlbGluZTsKKyAgR3N0RWxlbWVudEZhY3RvcnkgKmZhY3RvcnkgPSBOVUxMOworCisgIGlmICgoZmFjdG9yeSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfZmluZCAoIngyNjRlbmMiKSkgPT0gTlVMTCkKKyAgICByZXR1cm47CisgIGdzdF9vYmplY3RfdW5yZWYgKGZhY3RvcnkpOworICBpZiAoKGZhY3RvcnkgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQgKCJoMjY0cGFyc2UiKSkgPT0gTlVMTCkKKyAgICByZXR1cm47CisgIGdzdF9vYmplY3RfdW5yZWYgKGZhY3RvcnkpOworCisgIHBpcGVsaW5lID0gZ19zdHJkdXBfcHJpbnRmICgidmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTI1MCAhICIKKyAgICAgICJ2aWRlby94LXJhdyxmcmFtZXJhdGU9MjUvMSAhICIKKyAgICAgICJ4MjY0ZW5jICEgaDI2NHBhcnNlICEgIgorICAgICAgIm14Zm11eCBuYW1lPW11eCAhICIKKyAgICAgICJteGZkZW11eCBuYW1lPWRlbXV4ICEgIgorICAgICAgImZha2VzaW5rICAiCisgICAgICAiYXVkaW90ZXN0c3JjIG51bS1idWZmZXJzPTI1MCAhICIKKyAgICAgICJhdWRpb2NvbnZlcnQgISAiICJhdWRpby94LXJhdyxmb3JtYXQ9UzI0TEUsY2hhbm5lbHM9MiAhIG11eC4gIik7CisKKyAgcnVuX3Rlc3QgKHBpcGVsaW5lLCAyKTsKKyAgZ19mcmVlIChwaXBlbGluZSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKwogc3RhdGljIFN1aXRlICoKIG14Zl9zdWl0ZSAodm9pZCkKIHsKQEAgLTI2OSwxNiArMjk2LDEyIEBACiAgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfY2hhaW4pOwogICB0Y2FzZV9zZXRfdGltZW91dCAodGNfY2hhaW4sIDE4MCk7CiAKLSAgLyogRklYTUU6IHJlbW92ZSBhZ2FpbiBvbmNlIHBvcnRlZCAqLwotICBpZiAoIWdzdF9yZWdpc3RyeV9jaGVja19mZWF0dXJlX3ZlcnNpb24gKGdzdF9yZWdpc3RyeV9nZXQgKCksICJteGZtdXgiLCAxLAotICAgICAgICAgIDAsIDApKQotICAgIHJldHVybiBzOwotCiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9tcGVnMik7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9yYXdfdmlkZW9fcmF3X2F1ZGlvKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3Jhd192aWRlb19zdHJpZGVfdHJhbnNmb3JtKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2pwZWcyMDAwX2FsYXcpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfZG54aGRfbXAzKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2gyNjRfcmF3X2F1ZGlvKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X211bHRpcGxlX2F2X3N0cmVhbXMpOwogCiAgIHJldHVybiBzOwpkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUuYW0gYi90ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5hbQppbmRleCBjMjZkM2Q5Li41N2VkNmRkIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5hbQorKysgYi90ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5hbQpAQCAtNDAsNiArNDAsMTYgQEAKIEdUSzNfRElSPQogZW5kaWYKIAoraWYgVVNFX1dBWUxBTkQKK2lmIEhBVkVfR1RLMworV0FZTEFORF9ESVI9d2F5bGFuZHNpbmsKK2Vsc2UKK1dBWUxBTkRfRElSPQorZW5kaWYKK2Vsc2UKK1dBWUxBTkRfRElSPQorZW5kaWYKKwogbm9pbnN0X1BST0dSQU1TID0gcGxheW91dAogCiBwbGF5b3V0X1NPVVJDRVMgPSBwbGF5b3V0LmMKQEAgLTQ3LDcgKzU3LDggQEAKIHBsYXlvdXRfTERBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgJChHU1RfTElCUykKIAogU1VCRElSUz0gY29kZWNwYXJzZXJzIG1wZWd0cyAkKERJUkVDVEZCX0RJUikgJChHVEtfRVhBTVBMRVMpICQoT1BFTkNWX0VYQU1QTEVTKSBcCi0gICAgICAgICQoR0xfRElSKSAkKEdUSzNfRElSKSAkKEFWU0FNUExFX0RJUikKLURJU1RfU1VCRElSUz0gY29kZWNwYXJzZXJzIG1wZWd0cyBjYW1lcmFiaW4yIGRpcmVjdGZiIG14ZiBvcGVuY3YgdXZjaDI2NCBnbCBndGsgYXZzYW1wbGVzaW5rCisgICAgICAgICQoR0xfRElSKSAkKEdUSzNfRElSKSAkKEFWU0FNUExFX0RJUikgJChXQVlMQU5EX0RJUikKK0RJU1RfU1VCRElSUz0gY29kZWNwYXJzZXJzIG1wZWd0cyBjYW1lcmFiaW4yIGRpcmVjdGZiIG14ZiBvcGVuY3YgdXZjaDI2NCBnbCBndGsgXAorICAgICAgICBhdnNhbXBsZXNpbmsgd2F5bGFuZHNpbmsKIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9wYXJhbGxlbC1zdWJkaXJzLm1hawpkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5pbgppbmRleCAxYTdkZmIxLi5kMGJlMjk1IDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5pbgpAQCAtMTIxLDE2ICsxMjEsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI5MCw2ICsyODksOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMyNyw2ICszMjgsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMzNSw3ICszMzgsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNTQsOCArMzU2LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM3MiwxNiArMzc1LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQwNyw2ICs0MTEsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MzIsNiArNDM4LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTMzLDYgKzU0MSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NDYsOCArNTU1LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTYzLDYgKzU3MCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MjAsMTYgKzYyOSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY4MSw2ICs2OTIsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjkxLDYgKzcwMyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcwMCw2ICs3MTMsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzM3LDcgKzc1Miw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzkxLDEzICs4MDUsMTggQEAKIEBIQVZFX0FWRk9VTkRBVElPTl9UUlVFQEBIQVZFX0lPU19UUlVFQEFWU0FNUExFX0RJUiA9IAogQFVTRV9HVEszX0ZBTFNFQEdUSzNfRElSID0gCiBAVVNFX0dUSzNfVFJVRUBHVEszX0RJUiA9IGd0aworQEhBVkVfR1RLM19GQUxTRUBAVVNFX1dBWUxBTkRfVFJVRUBXQVlMQU5EX0RJUiA9IAorQEhBVkVfR1RLM19UUlVFQEBVU0VfV0FZTEFORF9UUlVFQFdBWUxBTkRfRElSID0gd2F5bGFuZHNpbmsKK0BVU0VfV0FZTEFORF9GQUxTRUBXQVlMQU5EX0RJUiA9IAogcGxheW91dF9TT1VSQ0VTID0gcGxheW91dC5jCiBwbGF5b3V0X0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykKIHBsYXlvdXRfTERBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgJChHU1RfTElCUykKIFNVQkRJUlMgPSBjb2RlY3BhcnNlcnMgbXBlZ3RzICQoRElSRUNURkJfRElSKSAkKEdUS19FWEFNUExFUykgJChPUEVOQ1ZfRVhBTVBMRVMpIFwKLSAgICAgICAgJChHTF9ESVIpICQoR1RLM19ESVIpICQoQVZTQU1QTEVfRElSKQorICAgICAgICAkKEdMX0RJUikgJChHVEszX0RJUikgJChBVlNBTVBMRV9ESVIpICQoV0FZTEFORF9ESVIpCiAKLURJU1RfU1VCRElSUyA9IGNvZGVjcGFyc2VycyBtcGVndHMgY2FtZXJhYmluMiBkaXJlY3RmYiBteGYgb3BlbmN2IHV2Y2gyNjQgZ2wgZ3RrIGF2c2FtcGxlc2luaworRElTVF9TVUJESVJTID0gY29kZWNwYXJzZXJzIG1wZWd0cyBjYW1lcmFiaW4yIGRpcmVjdGZiIG14ZiBvcGVuY3YgdXZjaDI2NCBnbCBndGsgXAorICAgICAgICBhdnNhbXBsZXNpbmsgd2F5bGFuZHNpbmsKKwogYWxsOiBhbGwtcmVjdXJzaXZlCiAKIC5TVUZGSVhFUzoKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2F2c2FtcGxlc2luay9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2F2c2FtcGxlc2luay9NYWtlZmlsZS5pbgppbmRleCA3OGVkN2M2Li4xYTNmNDdiIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9hdnNhbXBsZXNpbmsvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvYXZzYW1wbGVzaW5rL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQ0LDYgKzI0Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjgxLDYgKzI4Miw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjg5LDcgKzI5Miw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMwOCw4ICszMTAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzI2LDE2ICszMjksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzYxLDYgKzM2NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4Niw2ICszOTIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00ODcsNiArNDk1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwMCw4ICs1MDksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MTcsNiArNTI0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3NCwxNiArNTgzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM1LDYgKzY0Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDUsNiArNjU3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU0LDYgKzY2Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTEsNyArNzA2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9jYW1lcmFiaW4yL01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvY2FtZXJhYmluMi9NYWtlZmlsZS5pbgppbmRleCAxZWJjYzVkLi4yYmM2MzgyIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9jYW1lcmFiaW4yL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2NhbWVyYWJpbjIvTWFrZWZpbGUuaW4KQEAgLTExNywxNiArMTE3LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNjIsNiArMjYxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yOTksNiArMzAwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMDcsNyArMzEwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzI2LDggKzMyOCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNDQsMTYgKzM0NywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNzksNiArMzgzLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDA0LDYgKzQxMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUwNSw2ICs1MTMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTE4LDggKzUyNyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUzNSw2ICs1NDIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTkyLDE2ICs2MDEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NTMsNiArNjY0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY2Myw2ICs2NzUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NzIsNiArNjg1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcwOSw3ICs3MjQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2NhbWVyYWJpbjIvZ3N0LWNhbWVyYWJpbjItdGVzdC5jIGIvdGVzdHMvZXhhbXBsZXMvY2FtZXJhYmluMi9nc3QtY2FtZXJhYmluMi10ZXN0LmMKaW5kZXggOTBlMDEwYS4uMWM2MTk1NyAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvY2FtZXJhYmluMi9nc3QtY2FtZXJhYmluMi10ZXN0LmMKKysrIGIvdGVzdHMvZXhhbXBsZXMvY2FtZXJhYmluMi9nc3QtY2FtZXJhYmluMi10ZXN0LmMKQEAgLTQyOCw3ICs0MjgsNyBAQAogCiAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvciAobWVzc2FnZSwgJmVyciwgJmRlYnVnKTsKICAgICAgIGdfcHJpbnQgKCJFcnJvcjogJXNcbiIsIGVyci0+bWVzc2FnZSk7Ci0gICAgICBnX2Vycm9yX2ZyZWUgKGVycik7CisgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKICAgICAgIGdfZnJlZSAoZGVidWcpOwogCiAgICAgICAvKiBXcml0ZSBkZWJ1ZyBncmFwaCB0byBmaWxlICovCkBAIC01NTYsOCArNTU2LDcgQEAKICAgICAgICAgICBnZXBfZmlsZW5hbWUpOwogICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HICgiRXJyb3IgZnJvbSBmaWxlIGxvYWRpbmc6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLSAgICAgICAgZXJyb3IgPSBOVUxMOworICAgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOwogICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICBwcm9mID0gZ3N0X2VuY29kaW5nX3RhcmdldF9nZXRfcHJvZmlsZSAodGFyZ2V0LCBnZXBfcHJvZmlsZW5hbWUpOwpAQCAtNjAxLDcgKzYwMCw3IEBACiAgICAgICAgICAgcHJvcGVydHlfbmFtZSk7CiAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgR1NUX0VSUk9SICgiJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOworICAgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOwogICAgICAgfQogICAgICAgcmVzID0gRkFMU0U7CiAgICAgfQpAQCAtMTI1Myw2ICsxMjUyLDggQEAKICAgZ19vcHRpb25fY29udGV4dF9hZGRfZ3JvdXAgKGN0eCwgZ3N0X2luaXRfZ2V0X29wdGlvbl9ncm91cCAoKSk7CiAgIGlmICghZ19vcHRpb25fY29udGV4dF9wYXJzZSAoY3R4LCAmYXJnYywgJmFyZ3YsICZlcnIpKSB7CiAgICAgZ19wcmludCAoIkVycm9yIGluaXRpYWxpemluZzogJXNcbiIsIGVyci0+bWVzc2FnZSk7CisgICAgZ19vcHRpb25fY29udGV4dF9mcmVlIChjdHgpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOwogICAgIGV4aXQgKDEpOwogICB9CiAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY3R4KTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2NvZGVjcGFyc2Vycy9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2NvZGVjcGFyc2Vycy9NYWtlZmlsZS5pbgppbmRleCAwMTliZDUwLi45NDZkYzAyIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvY29kZWNwYXJzZXJzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQ3LDYgKzI0Niw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjg0LDYgKzI4NSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkyLDcgKzI5NSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxMSw4ICszMTMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzI5LDE2ICszMzIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzY0LDYgKzM2OCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4OSw2ICszOTUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTAsNiArNDk4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwMyw4ICs1MTIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjAsNiArNTI3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3NywxNiArNTg2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM4LDYgKzY0OSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDgsNiArNjYwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU3LDYgKzY3MCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTQsNyArNzA5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9jb2RlY3BhcnNlcnMvcGFyc2UtanBlZy5jIGIvdGVzdHMvZXhhbXBsZXMvY29kZWNwYXJzZXJzL3BhcnNlLWpwZWcuYwppbmRleCBmZTQyOTk5Li5jYTljZjFiIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9jb2RlY3BhcnNlcnMvcGFyc2UtanBlZy5jCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2NvZGVjcGFyc2Vycy9wYXJzZS1qcGVnLmMKQEAgLTIzOSw3ICsyMzksNyBAQAogCiAgIGlmICghZ19maWxlX2dldF9jb250ZW50cyAoZm4sICZkYXRhLCAmc2l6ZSwgJmVycikpIHsKICAgICBnX2Vycm9yICgiJXMiLCBlcnItPm1lc3NhZ2UpOwotICAgIGdfZXJyb3JfZnJlZSAoZXJyKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKICAgICByZXR1cm47CiAgIH0KIApAQCAtMjg2LDYgKzI4Niw4IEBACiAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX2dyb3VwIChjdHgsIGdzdF9pbml0X2dldF9vcHRpb25fZ3JvdXAgKCkpOwogICBpZiAoIWdfb3B0aW9uX2NvbnRleHRfcGFyc2UgKGN0eCwgJmFyZ2MsICZhcmd2LCAmZXJyKSkgewogICAgIGdfcHJpbnQgKCJFcnJvciBpbml0aWFsaXppbmc6ICVzXG4iLCBHU1RfU1RSX05VTEwgKGVyci0+bWVzc2FnZSkpOworICAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY3R4KTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKICAgICBleGl0ICgxKTsKICAgfQogICBnX29wdGlvbl9jb250ZXh0X2ZyZWUgKGN0eCk7CmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9kaXJlY3RmYi9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2RpcmVjdGZiL01ha2VmaWxlLmluCmluZGV4IDRhNTdmOTYuLjFkNmM0ZTUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2RpcmVjdGZiL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2RpcmVjdGZiL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQxLDYgKzI0MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjc4LDYgKzI3OSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjg2LDcgKzI4OSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMwNSw4ICszMDcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzIzLDE2ICszMjYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzU4LDYgKzM2Miw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4Myw2ICszODksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00ODQsNiArNDkyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTQ5Nyw4ICs1MDYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MTQsNiArNTIxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3MSwxNiArNTgwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjMyLDYgKzY0Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDIsNiArNjU0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjUxLDYgKzY2NCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02ODgsNyArNzAzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2dsL01ha2VmaWxlLmluCmluZGV4IGFmMzRiNWUuLjllNDA5NTggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL01ha2VmaWxlLmluCkBAIC0xMTksMTYgKzExOSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjUyLDYgKzI1MSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjg5LDYgKzI5MCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjk3LDcgKzMwMCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxNiw4ICszMTgsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzM0LDE2ICszMzcsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzY5LDYgKzM3Myw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM5NCw2ICs0MDAsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTUsNiArNTAzLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwOCw4ICs1MTcsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjUsNiArNTMyLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU4MiwxNiArNTkxLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjQzLDYgKzY1NCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NTMsNiArNjY1LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjYyLDYgKzY3NSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTksNyArNzE0LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9jbHV0dGVyL01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvZ2wvY2x1dHRlci9NYWtlZmlsZS5pbgppbmRleCAxNjBkMTA5Li44NTRlNzVhIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9jbHV0dGVyL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2NsdXR0ZXIvTWFrZWZpbGUuaW4KQEAgLTEyMCwxNiArMTIwLDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yODQsNiArMjgzLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMjEsNiArMzIyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjksNyArMzMyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ4LDggKzM1MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjYsMTYgKzM2OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MDEsNiArNDA1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI2LDYgKzQzMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNyw2ICs1MzUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTQwLDggKzU0OSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1Nyw2ICs1NjQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjE0LDE2ICs2MjMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzUsNiArNjg2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4NSw2ICs2OTcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTQsNiArNzA3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTczMSw3ICs3NDYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL2NsdXR0ZXIvY2x1dHRlcnNoYXJlLmMgYi90ZXN0cy9leGFtcGxlcy9nbC9jbHV0dGVyL2NsdXR0ZXJzaGFyZS5jCmluZGV4IGRlN2NkNjYuLmVlNGViN2QgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL2NsdXR0ZXIvY2x1dHRlcnNoYXJlLmMKKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvY2x1dHRlci9jbHV0dGVyc2hhcmUuYwpAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9tZXRhLmg+Ci0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsbWVtb3J5Lmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CiAKIC8qIFRoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8gdXNlIHRleHR1cmVzIHRoYXQgY29tZSBmcm9tIGEKICAqIGdzdC1wbHVnaW5zLWdsIHBpcGVsaW5lLCBpbnRvIHRoZSBjbHV0dGVyIGZyYW1ld29yawpkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvY29jb2EvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9jb2NvYS9NYWtlZmlsZS5pbgppbmRleCAyZTYwNTRhLi5mNWY0NjA2IDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9jb2NvYS9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9jb2NvYS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0Nyw2ICsyNDYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4NCw2ICsyODUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5Miw3ICsyOTUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTEsOCArMzEzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyOSwxNiArMzMyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2NCw2ICszNjgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODksNiArMzk1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDkwLDYgKzQ5OCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDMsOCArNTEyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTIwLDYgKzUyNyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzcsMTYgKzU4NiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzOCw2ICs2NDksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ4LDYgKzY2MCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1Nyw2ICs2NzAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjk0LDcgKzcwOSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvTWFrZWZpbGUuaW4KaW5kZXggMTQwMzk1YS4uYTRmYjA0YyAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL01ha2VmaWxlLmluCkBAIC0xMTQsMTYgKzExNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQ4LDYgKzI0Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjg1LDYgKzI4Niw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkzLDcgKzI5Niw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxMiw4ICszMTQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzMwLDE2ICszMzMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzY1LDYgKzM2OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM5MCw2ICszOTYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTEsNiArNDk5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwNCw4ICs1MTMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjEsNiArNTI4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3OCwxNiArNTg3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM5LDYgKzY1MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDksNiArNjYxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU4LDYgKzY3MSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTUsNyArNzEwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmUvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmUvTWFrZWZpbGUuaW4KaW5kZXggYzg1NjFhMC4uNDA1MzI3NiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJlL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvY3ViZS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0Myw2ICsyNDIsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4MCw2ICsyODEsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI4OCw3ICsyOTEsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDcsOCArMzA5LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyNSwxNiArMzI4LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2MCw2ICszNjQsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODUsNiArMzkxLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg2LDYgKzQ5NCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC00OTksOCArNTA4LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE2LDYgKzUyMyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzMsMTYgKzU4MiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzNCw2ICs2NDUsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ0LDYgKzY1Niw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1Myw2ICs2NjYsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjkwLDcgKzcwNSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJlL21haW4uY3BwIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJlL21haW4uY3BwCmluZGV4IDNhNTRmZTYuLmRhNGFhMTcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvY3ViZS9tYWluLmNwcAorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmUvbWFpbi5jcHAKQEAgLTEyMCw3ICsxMjAsOCBAQAogICAgIGdsTWF0cml4TW9kZShHTF9NT0RFTFZJRVcpOwogICAgIGdsTG9hZElkZW50aXR5KCk7CiAKLSAgICBnbFNjYWxlZigwLjVmLDAuNWYsMC41Zik7CisgICAgLyogaW52ZXJ0IHRoZSB5LWF4aXMgdG8gZ2V0IHRoZSBmcm9udCBmYWNlIHRoZSBjb3JyZWN0IHdheSB1cCAqLworICAgIGdsU2NhbGVmICgwLjVmLCAtMC41ZiwgMC41Zik7CiAKICAgICBnbFJvdGF0ZWYoeHJvdCwxLjBmLDAuMGYsMC4wZik7CiAgICAgZ2xSb3RhdGVmKHlyb3QsMC4wZiwxLjBmLDAuMGYpOwpAQCAtMTgyLDYgKzE4Myw5IEBACiAgICAgR01haW5Mb29wICpsb29wOwogICAgIEdzdEJ1cyAqYnVzOwogCisgICAgLyogRklYTUU6IHJlbW92ZSBvbmNlIHRoZSBleGFtcGxlIHN1cHBvcnRzIGdsMyBhbmQvb3IgZ2xlczIgKi8KKyAgICBnX3NldGVudiAoIkdTVF9HTF9BUEkiLCAib3BlbmdsIiwgRkFMU0UpOworCiAgICAgLyogaW5pdGlhbGl6YXRpb24gKi8KICAgICBnc3RfaW5pdCAoJmFyZ2MsICZhcmd2KTsKICAgICBsb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7CmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmV5dXYvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmV5dXYvTWFrZWZpbGUuaW4KaW5kZXggNThiNTM5Yy4uOGM0MjY3MiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJleXV2L01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvY3ViZXl1di9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0Myw2ICsyNDIsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4MCw2ICsyODEsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI4OCw3ICsyOTEsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDcsOCArMzA5LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyNSwxNiArMzI4LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2MCw2ICszNjQsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODUsNiArMzkxLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg2LDYgKzQ5NCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC00OTksOCArNTA4LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE2LDYgKzUyMyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzMsMTYgKzU4MiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzNCw2ICs2NDUsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ0LDYgKzY1Niw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1Myw2ICs2NjYsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjkwLDcgKzcwNSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJleXV2L21haW4uY3BwIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJleXV2L21haW4uY3BwCmluZGV4IDljNGIyY2MuLmNkYTk5MGYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvY3ViZXl1di9tYWluLmNwcAorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmV5dXYvbWFpbi5jcHAKQEAgLTE0MywxMiArMTQzLDEzIEBACiAgICAgZ2xNYXRyaXhNb2RlKEdMX01PREVMVklFVyk7CiAgICAgZ2xMb2FkSWRlbnRpdHkoKTsKIAotICAgIGdsVHJhbnNsYXRlZigwLjBmLDAuMGYsLTUuMGYpOwotCiAgICAgZ2xSb3RhdGVmKHhyb3QsMS4wZiwwLjBmLDAuMGYpOwogICAgIGdsUm90YXRlZih5cm90LDAuMGYsMS4wZiwwLjBmKTsKICAgICBnbFJvdGF0ZWYoenJvdCwwLjBmLDAuMGYsMS4wZik7CiAKKyAgICAvKiBpbnZlcnQgdGhlIHktYXhpcyB0byBnZXQgdGhlIGZyb250IGZhY2UgdGhlIGNvcnJlY3Qgd2F5IHVwICovCisgICAgZ2xTY2FsZWYgKDAuNWYsIC0wLjVmLCAwLjVmKTsKKwogICAgIGdsQmVnaW4oR0xfUVVBRFMpOwogCSAgICAgIC8vIEZyb250IEZhY2UKIAkgICAgICBnbFRleENvb3JkMmYoMS4wZiwgMC4wZik7IGdsVmVydGV4M2YoLTEuMGYsIC0xLjBmLCAgMS4wZik7CkBAIC0xODIsNiArMTgzLDggQEAKIAkgICAgICBnbFRleENvb3JkMmYoMS4wZiwgMS4wZik7IGdsVmVydGV4M2YoLTEuMGYsICAxLjBmLCAtMS4wZik7CiAgICAgZ2xFbmQoKTsKIAorICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsKKwogICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJnZfZnJhbWUpOwogCiAJeHJvdCs9MC4wM2Y7CkBAIC0yMjcsNiArMjMwLDkgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAorICAgIC8qIEZJWE1FOiByZW1vdmUgb25jZSB0aGUgZXhhbXBsZSBzdXBwb3J0cyBnbDMgYW5kL29yIGdsZXMyICovCisgICAgZ19zZXRlbnYgKCJHU1RfR0xfQVBJIiwgIm9wZW5nbCIsIEZBTFNFKTsKKwogICAgIHN0ZDo6c3RyaW5nIHZpZGVvX2xvY2F0aW9uKGFyZ3ZbMV0pOwogCiAgICAgLyogaW5pdGlhbGl6YXRpb24gKi8KQEAgLTI0NywyMiArMjUzLDE1IEBACiAgICAgR3N0RWxlbWVudCogZGVjb2RlYmluID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZGVjb2RlYmluIiwgImRlY29kZWJpbiIpOwogICAgIEdzdEVsZW1lbnQqIGlkZW50aXR5ICA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImlkZW50aXR5IiwgImlkZW50aXR5MCIpOwogICAgIEdzdEVsZW1lbnQqIHRleHRvdmVybGF5ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgidGV4dG92ZXJsYXkiLCAidGV4dG92ZXJsYXkwIik7Ci0gICAgR3N0RWxlbWVudCogZ2xjb2xvcnNjYWxlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZ2xjb2xvcnNjYWxlIiwgImdsY29sb3JzY2FsZTAiKTsKICAgICBHc3RFbGVtZW50KiBnbGltYWdlc2luayAgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJnbGltYWdlc2luayIsICJnbGltYWdlc2luazAiKTsKIAogCi0gICAgaWYgKCF2aWRlb3NyYyB8fCAhZGVjb2RlYmluIHx8ICFpZGVudGl0eSB8fCAhdGV4dG92ZXJsYXkgfHwKLSAgICAgICAgIWdsY29sb3JzY2FsZSB8fCAhZ2xpbWFnZXNpbmspCisgICAgaWYgKCF2aWRlb3NyYyB8fCAhZGVjb2RlYmluIHx8ICFpZGVudGl0eSB8fCAhdGV4dG92ZXJsYXkgfHwgIWdsaW1hZ2VzaW5rKQogICAgIHsKICAgICAgICAgZ19wcmludCAoIm9uZSBlbGVtZW50IGNvdWxkIG5vdCBiZSBmb3VuZCBcbiIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgR3N0Q2FwcyAqb3V0Y2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUoInZpZGVvL3gtcmF3IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCA2NDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhlaWdodCIsIEdfVFlQRV9JTlQsIDQ4MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLQogICAgIC8qIGNvbmZpZ3VyZSBlbGVtZW50cyAqLwogICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh2aWRlb3NyYyksICJudW0tYnVmZmVycyIsIDgwMCwgTlVMTCk7CiAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHZpZGVvc3JjKSwgImxvY2F0aW9uIiwgdmlkZW9fbG9jYXRpb24uY19zdHIoKSwgTlVMTCk7CkBAIC0yNzMsNyArMjcyLDcgQEAKIAogICAgIC8qIGFkZCBlbGVtZW50cyAqLwogICAgIGdzdF9iaW5fYWRkX21hbnkgKEdTVF9CSU4gKHBpcGVsaW5lKSwgdmlkZW9zcmMsIGRlY29kZWJpbiwgaWRlbnRpdHksCi0gICAgICAgIHRleHRvdmVybGF5LCBnbGNvbG9yc2NhbGUsIGdsaW1hZ2VzaW5rLCBOVUxMKTsKKyAgICAgICAgdGV4dG92ZXJsYXksIGdsaW1hZ2VzaW5rLCBOVUxMKTsKIAogICAgIC8qIGxpbmsgZWxlbWVudHMgKi8KIAlnc3RfZWxlbWVudF9saW5rX3BhZHMgKHZpZGVvc3JjLCAic3JjIiwgZGVjb2RlYmluLCAic2luayIpOwpAQCAtMjg2LDEwICsyODUsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0JZ3N0X2VsZW1lbnRfbGluayAodGV4dG92ZXJsYXksIGdsY29sb3JzY2FsZSk7Ci0KLSAgICBnYm9vbGVhbiBsaW5rX29rID0gZ3N0X2VsZW1lbnRfbGlua19maWx0ZXJlZChnbGNvbG9yc2NhbGUsIGdsaW1hZ2VzaW5rLCBvdXRjYXBzKSA7Ci0gICAgZ3N0X2NhcHNfdW5yZWYob3V0Y2FwcykgOworICAgIGdib29sZWFuIGxpbmtfb2sgPSBnc3RfZWxlbWVudF9saW5rICh0ZXh0b3ZlcmxheSwgZ2xpbWFnZXNpbmspOwogICAgIGlmKCFsaW5rX29rKQogICAgIHsKICAgICAgICAgZ193YXJuaW5nKCJGYWlsZWQgdG8gbGluayB0ZXh0b3ZlcmxheSB0byBnbGltYWdlc2luayFcbiIpIDsKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvZG91YmxlY3ViZS9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvZG91YmxlY3ViZS9NYWtlZmlsZS5pbgppbmRleCAxNGNlNTIyLi5jMzY3M2M5IDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2RvdWJsZWN1YmUvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9kb3VibGVjdWJlL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQzLDYgKzI0Miw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjgwLDYgKzI4MSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjg4LDcgKzI5MSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMwNyw4ICszMDksOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzI1LDE2ICszMjgsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzYwLDYgKzM2NCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4NSw2ICszOTEsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00ODYsNiArNDk0LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTQ5OSw4ICs1MDgsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MTYsNiArNTIzLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3MywxNiArNTgyLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM0LDYgKzY0NSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDQsNiArNjU2LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjUzLDYgKzY2Niw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTAsNyArNzA1LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL3JlY29yZGdyYXBoaWMvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL3JlY29yZGdyYXBoaWMvTWFrZWZpbGUuaW4KaW5kZXggZWJlM2E2ZC4uY2UzNmVkNSAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9yZWNvcmRncmFwaGljL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvcmVjb3JkZ3JhcGhpYy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0NCw2ICsyNDMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4MSw2ICsyODIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI4OSw3ICsyOTIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDgsOCArMzEwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyNiwxNiArMzI5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2MSw2ICszNjUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODYsNiArMzkyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg3LDYgKzQ5NSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDAsOCArNTA5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE3LDYgKzUyNCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzQsMTYgKzU4MywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzNSw2ICs2NDYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ1LDYgKzY1Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1NCw2ICs2NjcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjkxLDcgKzcwNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrLzNkdmlkZW8vTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9ndGsvM2R2aWRlby9NYWtlZmlsZS5pbgppbmRleCBhZTBmZGRjLi4xYTQ4MWQxIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9ndGsvM2R2aWRlby9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9ndGsvM2R2aWRlby9NYWtlZmlsZS5pbgpAQCAtMTE3LDE2ICsxMTcsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNjcsNiArMjY2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMDQsNiArMzA1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTIsNyArMzE1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzMxLDggKzMzMyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNDksMTYgKzM1MiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zODQsNiArMzg4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDA5LDYgKzQxNSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxMCw2ICs1MTgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTIzLDggKzUzMiw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0MCw2ICs1NDcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTk3LDE2ICs2MDYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NTgsNiArNjY5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY2OCw2ICs2ODAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NzcsNiArNjkwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcxNCw3ICs3MjksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9NYWtlZmlsZS5pbgppbmRleCA1MDMzZjkwLi4xMmY3YTRiIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9ndGsvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjg0LDYgKzI4Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzIxLDYgKzMyMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI5LDcgKzMzMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0OCw4ICszNTAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzY2LDE2ICszNjksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDAxLDYgKzQwNSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyNiw2ICs0MzIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjcsNiArNTM1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU0MCw4ICs1NDksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTcsNiArNTY0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxNCwxNiArNjIzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODUsNiArNjk3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjk0LDYgKzcwNyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MzEsNyArNzQ2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZmlsdGVybm92aWRlb292ZXJsYXkvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZmlsdGVybm92aWRlb292ZXJsYXkvTWFrZWZpbGUuaW4KaW5kZXggNWEzYzI5My4uMjk0OTYwNCAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2ZpbHRlcm5vdmlkZW9vdmVybGF5L01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9maWx0ZXJub3ZpZGVvb3ZlcmxheS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0NSw2ICsyNDQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4Miw2ICsyODMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5MCw3ICsyOTMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDksOCArMzExLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyNywxNiArMzMwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2Miw2ICszNjYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODcsNiArMzkzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg4LDYgKzQ5Niw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDEsOCArNTEwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE4LDYgKzUyNSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzUsMTYgKzU4NCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzNiw2ICs2NDcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ2LDYgKzY1OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1NSw2ICs2NjgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjkyLDcgKzcwNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2ZpbHRlcnZpZGVvb3ZlcmxheS9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9maWx0ZXJ2aWRlb292ZXJsYXkvTWFrZWZpbGUuaW4KaW5kZXggNGM3Njk3ZS4uNTBhYWQ3MSAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2ZpbHRlcnZpZGVvb3ZlcmxheS9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZmlsdGVydmlkZW9vdmVybGF5L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQ1LDYgKzI0NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjgyLDYgKzI4Myw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkwLDcgKzI5Myw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMwOSw4ICszMTEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzI3LDE2ICszMzAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzYyLDYgKzM2Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4Nyw2ICszOTMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00ODgsNiArNDk2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwMSw4ICs1MTAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MTgsNiArNTI1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3NSwxNiArNTg0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM2LDYgKzY0Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDYsNiArNjU4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU1LDYgKzY2OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTIsNyArNzA3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZnh0ZXN0L01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2Z4dGVzdC9NYWtlZmlsZS5pbgppbmRleCA2OTJlNmE0Li5mOTZjMmQ2IDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZnh0ZXN0L01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNTIsNiArMjUxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODksNiArMjkwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTcsNyArMzAwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzE2LDggKzMxOCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMzQsMTYgKzMzNywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjksNiArMzczLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzk0LDYgKzQwMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ5NSw2ICs1MDMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTA4LDggKzUxNyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUyNSw2ICs1MzIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTgyLDE2ICs1OTEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NDMsNiArNjU0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY1Myw2ICs2NjUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NjIsNiArNjc1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5OSw3ICs3MTQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvZnh0ZXN0LmMgYi90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZnh0ZXN0L2Z4dGVzdC5jCmluZGV4IGY4M2YxODkuLmMxY2RkZWEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvZnh0ZXN0LmMKKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2Z4dGVzdC9meHRlc3QuYwpAQCAtNzYsNyArNzYsNyBAQAogICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IgKG1lc3NhZ2UsICZlcnIsICZkZWJ1Zyk7CiAKICAgICAgIGdfcHJpbnQgKCJFcnJvcjogJXNcbiIsIGVyci0+bWVzc2FnZSk7Ci0gICAgICBnX2Vycm9yX2ZyZWUgKGVycik7CisgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKIAogICAgICAgaWYgKGRlYnVnKSB7CiAgICAgICAgIGdfcHJpbnQgKCJEZWJ1ZyBkZXRhaWxzOiAlc1xuIiwgZGVidWcpOwpAQCAtMTc0LDcgKzE3NCw3IEBACiB7CiAgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJldDsKICAgR3N0RWxlbWVudCAqcGlwZWxpbmU7Ci0gIEdzdEVsZW1lbnQgKmZpbHRlciwgKnNpbms7CisgIEdzdEVsZW1lbnQgKnVwbG9hZCwgKmZpbHRlciwgKnNpbms7CiAgIEdzdEVsZW1lbnQgKnNvdXJjZWJpbjsKICAgR3N0QnVzICpidXM7CiAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwpAQCAtMjAyLDYgKzIwMiw4IEBACiAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX2dyb3VwIChjb250ZXh0LCBndGtfZ2V0X29wdGlvbl9ncm91cCAoVFJVRSkpOwogICBpZiAoIWdfb3B0aW9uX2NvbnRleHRfcGFyc2UgKGNvbnRleHQsICZhcmdjLCAmYXJndiwgJmVycm9yKSkgewogICAgIGdfcHJpbnQgKCJJbml6aWFsaXphdGlvbiBlcnJvcjogJXNcbiIsIEdTVF9TVFJfTlVMTCAoZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICBnX29wdGlvbl9jb250ZXh0X2ZyZWUgKGNvbnRleHQpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CiAgICAgcmV0dXJuIC0xOwogICB9CiAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY29udGV4dCk7CkBAIC0yMzIsMTIgKzIzNCwxMyBAQAogCiAgIHBpcGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldyAoInBpcGVsaW5lIik7CiAKKyAgdXBsb2FkID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZ2x1cGxvYWQiLCBOVUxMKTsKICAgZmlsdGVyID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZ2xlZmZlY3RzIiwgImZsdCIpOwogICBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZ2xpbWFnZXNpbmsiLCAiZ2xzaW5rIik7CiAKLSAgZ3N0X2Jpbl9hZGRfbWFueSAoR1NUX0JJTiAocGlwZWxpbmUpLCBzb3VyY2ViaW4sIGZpbHRlciwgc2luaywgTlVMTCk7CisgIGdzdF9iaW5fYWRkX21hbnkgKEdTVF9CSU4gKHBpcGVsaW5lKSwgc291cmNlYmluLCB1cGxvYWQsIGZpbHRlciwgc2luaywgTlVMTCk7CiAKLSAgaWYgKCFnc3RfZWxlbWVudF9saW5rX21hbnkgKHNvdXJjZWJpbiwgZmlsdGVyLCBzaW5rLCBOVUxMKSkgeworICBpZiAoIWdzdF9lbGVtZW50X2xpbmtfbWFueSAoc291cmNlYmluLCB1cGxvYWQsIGZpbHRlciwgc2luaywgTlVMTCkpIHsKICAgICBnX3ByaW50ICgiRmFpbGVkIHRvIGxpbmsgb25lIG9yIG1vcmUgZWxlbWVudHMhXG4iKTsKICAgICByZXR1cm4gLTE7CiAgIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvcGl4YnVmZHJvcC5jIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2Z4dGVzdC9waXhidWZkcm9wLmMKaW5kZXggNDYzYWRkMy4uNjliZjNhZiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2Z4dGVzdC9waXhidWZkcm9wLmMKKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2Z4dGVzdC9waXhidWZkcm9wLmMKQEAgLTIwNiw2ICsyMDYsOCBAQAogICBnX29wdGlvbl9jb250ZXh0X2FkZF9ncm91cCAoY29udGV4dCwgZ3RrX2dldF9vcHRpb25fZ3JvdXAgKFRSVUUpKTsKICAgaWYgKCFnX29wdGlvbl9jb250ZXh0X3BhcnNlIChjb250ZXh0LCAmYXJnYywgJmFyZ3YsICZlcnJvcikpIHsKICAgICBnX3ByaW50ICgiSW5pemlhbGl6YXRpb24gZXJyb3I6ICVzXG4iLCBHU1RfU1RSX05VTEwgKGVycm9yLT5tZXNzYWdlKSk7CisgICAgZ19vcHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOwogICAgIHJldHVybiAtMTsKICAgfQogICBnX29wdGlvbl9jb250ZXh0X2ZyZWUgKGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2d0a3ZpZGVvb3ZlcmxheS9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9ndGt2aWRlb292ZXJsYXkvTWFrZWZpbGUuaW4KaW5kZXggMTg3MzEzOS4uMmM2OGEzYyAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2d0a3ZpZGVvb3ZlcmxheS9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZ3RrdmlkZW9vdmVybGF5L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQ1LDYgKzI0NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjgyLDYgKzI4Myw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkwLDcgKzI5Myw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMwOSw4ICszMTEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzI3LDE2ICszMzAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzYyLDYgKzM2Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4Nyw2ICszOTMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00ODgsNiArNDk2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwMSw4ICs1MTAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MTgsNiArNTI1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3NSwxNiArNTg0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM2LDYgKzY0Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDYsNiArNjU4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU1LDYgKzY2OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTIsNyArNzA3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9ndGsvc3dpdGNodmlkZW9vdmVybGF5L01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL3N3aXRjaHZpZGVvb3ZlcmxheS9NYWtlZmlsZS5pbgppbmRleCAxZWFkNjBkLi5jN2JmZTMxIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9ndGsvc3dpdGNodmlkZW9vdmVybGF5L01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9zd2l0Y2h2aWRlb292ZXJsYXkvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNDUsNiArMjQ0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODIsNiArMjgzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTAsNyArMjkzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzA5LDggKzMxMSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMjcsMTYgKzMzMCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjIsNiArMzY2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzg3LDYgKzM5Myw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ4OCw2ICs0OTYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTAxLDggKzUxMCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUxOCw2ICs1MjUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTc1LDE2ICs1ODQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzYsNiArNjQ3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0Niw2ICs2NTgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTUsNiArNjY4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5Miw3ICs3MDcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL3F0L01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvZ2wvcXQvTWFrZWZpbGUuaW4KaW5kZXggNGIxOTVlMS4uMWRkOTdjNyAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvcXQvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvcXQvTWFrZWZpbGUuaW4KQEAgLTExNCwxNiArMTE0LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0xODgsNiArMTg3LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yMjUsNiArMjI2LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yMzMsNyArMjM2LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMjUyLDggKzI1NCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0yNzAsMTYgKzI3MywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zMDUsNiArMzA5LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzMwLDYgKzMzNiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQzMSw2ICs0MzksNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNDQ0LDggKzQ1Myw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTQ2MSw2ICs0NjgsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTE4LDE2ICs1MjcsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC01NzksNiArNTkwLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTU4OSw2ICs2MDEsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC01OTgsNiArNjExLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTYzNSw3ICs2NTAsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL3NkbC9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2dsL3NkbC9NYWtlZmlsZS5pbgppbmRleCA5NzRjODg0Li40ZDUxYTJkIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9zZGwvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvc2RsL01ha2VmaWxlLmluCkBAIC0xMTksMTYgKzExOSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjU5LDYgKzI1OCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjk2LDYgKzI5Nyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzA0LDcgKzMwNyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMyMyw4ICszMjUsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzQxLDE2ICszNDQsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzc2LDYgKzM4MCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQwMSw2ICs0MDcsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MDIsNiArNTEwLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUxNSw4ICs1MjQsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MzIsNiArNTM5LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU4OSwxNiArNTk4LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjUwLDYgKzY2MSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NjAsNiArNjcyLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjY5LDYgKzY4Miw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MDYsNyArNzIxLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9ndGsvTWFrZWZpbGUuYW0gYi90ZXN0cy9leGFtcGxlcy9ndGsvTWFrZWZpbGUuYW0KaW5kZXggOTQ1MzMxZC4uYWRmNWUzMSAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ3RrL01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2d0ay9NYWtlZmlsZS5hbQpAQCAtOSwxNiArOSwzMyBAQAogCiBpZiBVU0VfR1RLM19HTAogaWYgVVNFX0dMCi1ub2luc3RfUFJPR1JBTVMgKz0gZ3RrZ2xzaW5rCitub2luc3RfUFJPR1JBTVMgKz0gZ3RrZ2xzaW5rIGdsbGl2ZXNoYWRlcgogCiBndGtnbHNpbmtfU09VUkNFUyA9IGd0a2dsc2luay5jCiBndGtnbHNpbmtfQ0ZMQUdTID0gJChHVEszX0NGTEFHUykgXAogCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKIAkkKEdTVF9DRkxBR1MpIFwKLQkkKEdMX0NGTEFHUykKKwkkKEdMX0NGTEFHUykgXAorCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkKIGd0a2dsc2lua19MREFERCA9ICQoR1RLM19MSUJTKSBcCiAJJChHU1RfTElCUykgXAotCSQoR0xfTElCUykKKwkkKEdMX0xJQlMpIFwKKwkkKFgxMV9MSUJTKQorCitnbGxpdmVzaGFkZXJfU09VUkNFUyA9IGdsbGl2ZXNoYWRlci5jCitnbGxpdmVzaGFkZXJfQ0ZMQUdTID0gJChHVEszX0NGTEFHUykgXAorCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCisJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAorCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9DRkxBR1MpIFwKKwkkKEdMX0NGTEFHUykgXAorCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkKK2dsbGl2ZXNoYWRlcl9MREFERCA9ICQoR1RLM19MSUJTKSBcCisJJChHU1RfTElCUykgXAorCSQoR0xfTElCUykgXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKKwkkKFgxMV9MSUJTKQogZW5kaWYKIGVuZGlmCmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9ndGsvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9ndGsvTWFrZWZpbGUuaW4KaW5kZXggZjkyOWU3Zi4uMDRiY2I0YiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ3RrL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2d0ay9NYWtlZmlsZS5pbgpAQCAtOTAsNyArOTAsNyBAQAogaG9zdF90cmlwbGV0ID0gQGhvc3RACiB0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACiBub2luc3RfUFJPR1JBTVMgPSBndGtzaW5rJChFWEVFWFQpICQoYW1fX0VYRUVYVF8xKQotQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQGFtX19hcHBlbmRfMSA9IGd0a2dsc2luaworQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQGFtX19hcHBlbmRfMSA9IGd0a2dsc2luayBnbGxpdmVzaGFkZXIKIHN1YmRpciA9IHRlc3RzL2V4YW1wbGVzL2d0awogQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAogYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWFjLWV4cGFuZC5tNCBcCkBAIC0xMTcsMTYgKzExNywxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMTM0LDIxICsxMzMsMzUgQEAKIENPTkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmgKIENPTkZJR19DTEVBTl9GSUxFUyA9CiBDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPQotQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQGFtX19FWEVFWFRfMSA9IGd0a2dsc2luayQoRVhFRVhUKQorQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQGFtX19FWEVFWFRfMSA9IGd0a2dsc2luayQoRVhFRVhUKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACWdsbGl2ZXNoYWRlciQoRVhFRVhUKQogUFJPR1JBTVMgPSAkKG5vaW5zdF9QUk9HUkFNUykKLWFtX19ndGtnbHNpbmtfU09VUkNFU19ESVNUID0gZ3RrZ2xzaW5rLmMKLUBVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUBhbV9ndGtnbHNpbmtfT0JKRUNUUyA9ICBcCi1AVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACWd0a2dsc2luay1ndGtnbHNpbmsuJChPQkpFWFQpCi1ndGtnbHNpbmtfT0JKRUNUUyA9ICQoYW1fZ3RrZ2xzaW5rX09CSkVDVFMpCithbV9fZ2xsaXZlc2hhZGVyX1NPVVJDRVNfRElTVCA9IGdsbGl2ZXNoYWRlci5jCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVAYW1fZ2xsaXZlc2hhZGVyX09CSkVDVFMgPSBnbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLiQoT0JKRVhUKQorZ2xsaXZlc2hhZGVyX09CSkVDVFMgPSAkKGFtX2dsbGl2ZXNoYWRlcl9PQkpFQ1RTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KLUBVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUBndGtnbHNpbmtfREVQRU5ERU5DSUVTID0gIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUBnbGxpdmVzaGFkZXJfREVQRU5ERU5DSUVTID0gIFwKIEBVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKIEBVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9nbC9saWJnc3RnbC0kKEdTVF9BUElfVkVSU0lPTikubGEgXAogQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAkkKGFtX19ERVBFTkRFTkNJRVNfMSkKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKIGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9sdF8wID0gLS1zaWxlbnQKIGFtX192X2x0XzEgPSAKK2dsbGl2ZXNoYWRlcl9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSBcCisJJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgJChnbGxpdmVzaGFkZXJfQ0ZMQUdTKSBcCisJJChDRkxBR1MpICQoQU1fTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAorYW1fX2d0a2dsc2lua19TT1VSQ0VTX0RJU1QgPSBndGtnbHNpbmsuYworQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQGFtX2d0a2dsc2lua19PQkpFQ1RTID0gIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJZ3RrZ2xzaW5rLWd0a2dsc2luay4kKE9CSkVYVCkKK2d0a2dsc2lua19PQkpFQ1RTID0gJChhbV9ndGtnbHNpbmtfT0JKRUNUUykKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUBndGtnbHNpbmtfREVQRU5ERU5DSUVTID0gIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChhbV9fREVQRU5ERU5DSUVTXzEpCiBndGtnbHNpbmtfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgXAogCSQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpICQoZ3RrZ2xzaW5rX0NGTEFHUykgXAogCSQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKQEAgLTE5Miw4ICsyMDUsMTAgQEAKIGFtX192X0NDTERfID0gJChhbV9fdl9DQ0xEX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOwogYW1fX3ZfQ0NMRF8xID0gCi1TT1VSQ0VTID0gJChndGtnbHNpbmtfU09VUkNFUykgJChndGtzaW5rX1NPVVJDRVMpCi1ESVNUX1NPVVJDRVMgPSAkKGFtX19ndGtnbHNpbmtfU09VUkNFU19ESVNUKSAkKGd0a3NpbmtfU09VUkNFUykKK1NPVVJDRVMgPSAkKGdsbGl2ZXNoYWRlcl9TT1VSQ0VTKSAkKGd0a2dsc2lua19TT1VSQ0VTKSBcCisJJChndGtzaW5rX1NPVVJDRVMpCitESVNUX1NPVVJDRVMgPSAkKGFtX19nbGxpdmVzaGFkZXJfU09VUkNFU19ESVNUKSBcCisJJChhbV9fZ3RrZ2xzaW5rX1NPVVJDRVNfRElTVCkgJChndGtzaW5rX1NPVVJDRVMpCiBhbV9fY2FuX3J1bl9pbnN0YWxsaW5mbyA9IFwKICAgY2FzZSAkJEFNX1VQREFURV9JTkZPX0RJUiBpbiBcCiAgICAgbnxub3xOTykgZmFsc2U7OyBcCkBAIC0yNTUsNiArMjcwLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yOTIsNiArMzA5LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMDAsNyArMzE5LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzE5LDggKzMzNyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMzcsMTYgKzM1NiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNzIsNiArMzkyLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzk3LDYgKzQxOSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ5OCw2ICs1MjIsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTExLDggKzUzNiw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUyOCw2ICs1NTEsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTg1LDE2ICs2MTAsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NDYsNiArNjczLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY1Niw2ICs2ODQsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NjUsNiArNjk0LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcwMiw3ICs3MzMsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc1NCwxMSArNzg0LDI5IEBACiBAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgXAogQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiBAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoR1NUX0NGTEFHUykgXAotQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAkkKEdMX0NGTEFHUykKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChHTF9DRkxBR1MpIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJLURHU1RfVVNFX1VOU1RBQkxFX0FQSQogCiBAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVAZ3RrZ2xzaW5rX0xEQUREID0gJChHVEszX0xJQlMpIFwKIEBVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChHU1RfTElCUykgXAotQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAkkKEdMX0xJQlMpCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoR0xfTElCUykgXAorQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAkkKFgxMV9MSUJTKQorCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVAZ2xsaXZlc2hhZGVyX1NPVVJDRVMgPSBnbGxpdmVzaGFkZXIuYworQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQGdsbGl2ZXNoYWRlcl9DRkxBR1MgPSAkKEdUSzNfQ0ZMQUdTKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChHU1RfQ0ZMQUdTKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoR0xfQ0ZMQUdTKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkKKworQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQGdsbGl2ZXNoYWRlcl9MREFERCA9ICQoR1RLM19MSUJTKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoR1NUX0xJQlMpIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChHTF9MSUJTKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChYMTFfTElCUykKIAogYWxsOiBhbGwtYW0KIApAQCAtODAzLDYgKzg1MSwxMCBAQAogCWVjaG8gIiBybSAtZiIgJCRsaXN0OyBcCiAJcm0gLWYgJCRsaXN0CiAKK2dsbGl2ZXNoYWRlciQoRVhFRVhUKTogJChnbGxpdmVzaGFkZXJfT0JKRUNUUykgJChnbGxpdmVzaGFkZXJfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2dsbGl2ZXNoYWRlcl9ERVBFTkRFTkNJRVMpIAorCUBybSAtZiBnbGxpdmVzaGFkZXIkKEVYRUVYVCkKKwkkKEFNX1ZfQ0NMRCkkKGdsbGl2ZXNoYWRlcl9MSU5LKSAkKGdsbGl2ZXNoYWRlcl9PQkpFQ1RTKSAkKGdsbGl2ZXNoYWRlcl9MREFERCkgJChMSUJTKQorCiBndGtnbHNpbmskKEVYRUVYVCk6ICQoZ3RrZ2xzaW5rX09CSkVDVFMpICQoZ3RrZ2xzaW5rX0RFUEVOREVOQ0lFUykgJChFWFRSQV9ndGtnbHNpbmtfREVQRU5ERU5DSUVTKSAKIAlAcm0gLWYgZ3RrZ2xzaW5rJChFWEVFWFQpCiAJJChBTV9WX0NDTEQpJChndGtnbHNpbmtfTElOSykgJChndGtnbHNpbmtfT0JKRUNUUykgJChndGtnbHNpbmtfTERBREQpICQoTElCUykKQEAgLTgxNyw2ICs4NjksNyBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2dsbGl2ZXNoYWRlci1nbGxpdmVzaGFkZXIuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2d0a2dsc2luay1ndGtnbHNpbmsuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2d0a3NpbmstZ3Rrc2luay5Qb0BhbV9fcXVvdGVACiAKQEAgLTg0NCw2ICs4OTcsMjAgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExUQ09NUElMRSkgLWMgLW8gJEAgJDwKIAorZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5vOiBnbGxpdmVzaGFkZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGdsbGl2ZXNoYWRlcl9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5vIC1NRCAtTVAgLU1GICQoREVQRElSKS9nbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLlRwbyAtYyAtbyBnbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLm8gYHRlc3QgLWYgJ2dsbGl2ZXNoYWRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BnbGxpdmVzaGFkZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5UcG8gJChERVBESVIpL2dsbGl2ZXNoYWRlci1nbGxpdmVzaGFkZXIuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnbGxpdmVzaGFkZXIuYycgb2JqZWN0PSdnbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGdsbGl2ZXNoYWRlcl9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBnbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLm8gYHRlc3QgLWYgJ2dsbGl2ZXNoYWRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BnbGxpdmVzaGFkZXIuYworCitnbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLm9iajogZ2xsaXZlc2hhZGVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChnbGxpdmVzaGFkZXJfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGdsbGl2ZXNoYWRlci1nbGxpdmVzaGFkZXIub2JqIC1NRCAtTVAgLU1GICQoREVQRElSKS9nbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLlRwbyAtYyAtbyBnbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLm9iaiBgaWYgdGVzdCAtZiAnZ2xsaXZlc2hhZGVyLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZ2xsaXZlc2hhZGVyLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2dsbGl2ZXNoYWRlci5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9nbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLlRwbyAkKERFUERJUikvZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dsbGl2ZXNoYWRlci5jJyBvYmplY3Q9J2dsbGl2ZXNoYWRlci1nbGxpdmVzaGFkZXIub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChnbGxpdmVzaGFkZXJfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5vYmogYGlmIHRlc3QgLWYgJ2dsbGl2ZXNoYWRlci5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2dsbGl2ZXNoYWRlci5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9nbGxpdmVzaGFkZXIuYyc7IGZpYAorCiBndGtnbHNpbmstZ3RrZ2xzaW5rLm86IGd0a2dsc2luay5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZ3RrZ2xzaW5rX0NGTEFHUykgJChDRkxBR1MpIC1NVCBndGtnbHNpbmstZ3RrZ2xzaW5rLm8gLU1EIC1NUCAtTUYgJChERVBESVIpL2d0a2dsc2luay1ndGtnbHNpbmsuVHBvIC1jIC1vIGd0a2dsc2luay1ndGtnbHNpbmsubyBgdGVzdCAtZiAnZ3RrZ2xzaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGd0a2dsc2luay5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9ndGtnbHNpbmstZ3RrZ2xzaW5rLlRwbyAkKERFUERJUikvZ3RrZ2xzaW5rLWd0a2dsc2luay5QbwpkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ3RrL2dsbGl2ZXNoYWRlci5jIGIvdGVzdHMvZXhhbXBsZXMvZ3RrL2dsbGl2ZXNoYWRlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YzhkMzUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9leGFtcGxlcy9ndGsvZ2xsaXZlc2hhZGVyLmMKQEAgLTAsMCArMSwzNDUgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaWYgR1NUX0dMX0hBVkVfV0lORE9XX1gxMQorI2luY2x1ZGUgPFgxMS9YbGliLmg+CisjZW5kaWYKKworc3RhdGljIEdNYWluTG9vcCAqbG9vcDsKKworc3RhdGljIGNvbnN0IGdjaGFyICp2ZXJ0ID0gIiN2ZXJzaW9uIDMzMFxuXAoraW4gdmVjNCBhX3Bvc2l0aW9uO1xuXAoraW4gdmVjMiBhX3RleGNvb3JkO1xuXAorb3V0IHZlYzIgdl90ZXhjb29yZDtcblwKK3VuaWZvcm0gZmxvYXQgdGltZTtcblwKK3VuaWZvcm0gZmxvYXQgd2lkdGg7XG5cCit1bmlmb3JtIGZsb2F0IGhlaWdodDtcblwKK3ZvaWQgbWFpbigpXG5cCit7XG5cCisgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcblwKKyAgdl90ZXhjb29yZCA9IGFfdGV4Y29vcmQ7XG5cCit9XG4iOworCitzdGF0aWMgY29uc3QgZ2NoYXIgKmdlb20gPSAiI3ZlcnNpb24gMzMwXG5cCitcblwKK2xheW91dCh0cmlhbmdsZXMpIGluO1xuXAorbGF5b3V0KHRyaWFuZ2xlX3N0cmlwLCBtYXhfdmVydGljZXMgPSAzKSBvdXQ7XG5cCitpbiB2ZWMyIHZfdGV4Y29vcmRbXTtcblwKK291dCB2ZWMyIGdfdGV4Y29vcmQ7XG5cCitcblwKK3ZvaWQgbWFpbigpIHtcblwKKyAgZm9yKGludCBpID0gMDsgaSA8IDM7IGkrKykge1xuXAorICAgIGdsX1Bvc2l0aW9uID0gZ2xfaW5baV0uZ2xfUG9zaXRpb247XG5cCisgICAgZ190ZXhjb29yZCA9IHZfdGV4Y29vcmRbaV07XG5cCisgICAgRW1pdFZlcnRleCgpO1xuXAorICB9XG5cCisgIEVuZFByaW1pdGl2ZSgpO1xuXAorfVxuIjsKKworc3RhdGljIGNvbnN0IGdjaGFyICpmcmFnID0gIiN2ZXJzaW9uIDMzMFxuXAoraW4gdmVjMiBnX3RleGNvb3JkO1xuXAordW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuXAordW5pZm9ybSBmbG9hdCB0aW1lO1xuXAordW5pZm9ybSBmbG9hdCB3aWR0aDtcblwKK3VuaWZvcm0gZmxvYXQgaGVpZ2h0O1xuXAordm9pZCBtYWluKClcblwKK3tcblwKKyAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgZ190ZXhjb29yZCk7XG5cCit9XG4iOworCisjZGVmaW5lIE1BWF9TSEFERVJfU1RBR0VTIDgKK3N0cnVjdCBzaGFkZXJfc3RhdGU7CisKK3N0cnVjdCB0ZXh0X3ZpZXdfc3RhdGUKK3sKKyAgc3RydWN0IHNoYWRlcl9zdGF0ZSAqc3RhdGU7CisKKyAgR0xlbnVtIHR5cGU7CisgIGdjaGFyICpzdHI7Cit9OworCitzdHJ1Y3Qgc2hhZGVyX3N0YXRlCit7CisgIEdzdEdMQ29udGV4dCAqY29udGV4dDsKKyAgR3N0RWxlbWVudCAqc2hhZGVyOworICBnYm9vbGVhbiBzaGFkZXJfbGlua2VkOworICBHdGtXaWRnZXQgKmxhYmVsOworICBzdHJ1Y3QgdGV4dF92aWV3X3N0YXRlIHRleHRfc3RhdGVzW01BWF9TSEFERVJfU1RBR0VTXTsKKyAgZ2ludCBuX3N0YWdlczsKK307CisKK3N0YXRpYyBnYm9vbGVhbgorYnVzX2NhbGwgKEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgc3dpdGNoIChHU1RfTUVTU0FHRV9UWVBFIChtc2cpKSB7CisgICAgY2FzZSBHU1RfTUVTU0FHRV9FT1M6CisgICAgICBnX3ByaW50ICgiRW5kIG9mIHN0cmVhbVxuIik7CisgICAgICBnX21haW5fbG9vcF9xdWl0IChsb29wKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX01FU1NBR0VfRVJST1I6eworICAgICAgZ2NoYXIgKmRlYnVnOworICAgICAgR0Vycm9yICplcnJvcjsKKworICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IgKG1zZywgJmVycm9yLCAmZGVidWcpOworICAgICAgZ19mcmVlIChkZWJ1Zyk7CisKKyAgICAgIGdfcHJpbnRlcnIgKCJFcnJvcjogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOworCisgICAgICBnX21haW5fbG9vcF9xdWl0IChsb29wKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdjaGFyICoKK19maW5kX3NvdXJjZV9mb3Jfc2hhZGVyX3R5cGUgKHN0cnVjdCBzaGFkZXJfc3RhdGUgKnN0YXRlLCBHTGVudW0gdHlwZSkKK3sKKyAgaW50IGkgPSAwOworCisgIGZvciAoaSA9IDA7IGkgPCBzdGF0ZS0+bl9zdGFnZXM7IGkrKykgeworICAgIGlmIChzdGF0ZS0+dGV4dF9zdGF0ZXNbaV0udHlwZSA9PSB0eXBlKQorICAgICAgcmV0dXJuIHN0YXRlLT50ZXh0X3N0YXRlc1tpXS5zdHI7CisgIH0KKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGdib29sZWFuCitfYWRkX3N0YWdlX3RvX3NoYWRlciAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIHN0cnVjdCBzaGFkZXJfc3RhdGUgKnN0YXRlLAorICAgIEdMZW51bSB0eXBlLCBjb25zdCBnY2hhciAqIGRlZmF1bHRfc3JjKQoreworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgR3N0R0xTTFZlcnNpb24gdmVyc2lvbjsKKyAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZTsKKyAgR3N0R0xTTFN0YWdlICpzdGFnZTsKKyAgY29uc3QgZ2NoYXIgKnNyYzsKKworICBzcmMgPSBfZmluZF9zb3VyY2VfZm9yX3NoYWRlcl90eXBlIChzdGF0ZSwgdHlwZSk7CisgIGlmICghc3JjKQorICAgIHNyYyA9IGRlZmF1bHRfc3JjOworICBpZiAoIXNyYykKKyAgICAvKiBGSVhNRTogYXNzdW1lIHRoaXMgc3RhZ2UgaXMgbm90IG5lZWRlZCAqLworICAgIHJldHVybiBUUlVFOworCisgIGlmICghZ3N0X2dsc2xfc3RyaW5nX2dldF92ZXJzaW9uX3Byb2ZpbGUgKHNyYywgJnZlcnNpb24sICZwcm9maWxlKSkgeworICAgIGdfcHJpbnQgKCJXYXJuaW5nOiBmYWlsZWQgdG8gcmV0cmVpdmUgR0xTTCB2ZXJzaW9uIGFuZCBwcm9maWxlIGZvciAiCisgICAgICAgICJzaGFkZXIgdHlwZSAweCV4XG5zcmM6XG4lc1xuIiwgdHlwZSwgc3JjKTsKKyAgfQorCisgIGlmICghKHN0YWdlID0gZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChzaGFkZXItPmNvbnRleHQsIHR5cGUsCisgICAgICAgICAgICAgIHZlcnNpb24sIHByb2ZpbGUsIHNyYykpKSB7CisgICAgZ19wcmludCAoIkVycm9yOiBGYWlsZWQgdG8gY3JlYXRlIEdMU0wgU3RhZ2UgZnJvbSBzcmM6XG4lc1xuIiwgc3JjKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoIWdzdF9nbF9zaGFkZXJfY29tcGlsZV9hdHRhY2hfc3RhZ2UgKHNoYWRlciwgc3RhZ2UsICZlcnJvcikpIHsKKyAgICAvKiBpZ25vcmUgZmFpbGVkIHNoYWRlciBjb21waWxhdGlvbnMgKi8KKyAgICBnX3ByaW50ICgiJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBHc3RHTFNoYWRlciAqCitfbmV3X3NoYWRlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgc3RydWN0IHNoYWRlcl9zdGF0ZSAqc3RhdGUpCit7CisgIEdzdEdMU2hhZGVyICpzaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ldyAoY29udGV4dCk7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworCisgIGlmICghX2FkZF9zdGFnZV90b19zaGFkZXIgKHNoYWRlciwgc3RhdGUsIEdMX1ZFUlRFWF9TSEFERVIsIHZlcnQpKSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorICBpZiAoIV9hZGRfc3RhZ2VfdG9fc2hhZGVyIChzaGFkZXIsIHN0YXRlLCBHTF9HRU9NRVRSWV9TSEFERVIsIGdlb20pKSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorICBpZiAoIV9hZGRfc3RhZ2VfdG9fc2hhZGVyIChzaGFkZXIsIHN0YXRlLCBHTF9GUkFHTUVOVF9TSEFERVIsIGZyYWcpKSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIGlmICghZ3N0X2dsX3NoYWRlcl9saW5rIChzaGFkZXIsICZlcnJvcikpIHsKKyAgICAvKiBpZ25vcmUgZmFpbGVkIHNoYWRlciBjb21waWxhdGlvbnMgKi8KKyAgICBnX3ByaW50ICgiJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHJldHVybiBzaGFkZXI7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3NldF9jb21waWxhdGlvbl9zdGF0ZSAoc3RydWN0IHNoYWRlcl9zdGF0ZSAqc3RhdGUpCit7CisgIGd0a19sYWJlbF9zZXRfdGV4dCAoR1RLX0xBQkVMIChzdGF0ZS0+bGFiZWwpLAorICAgICAgc3RhdGUtPnNoYWRlcl9saW5rZWQgPyAiU3VjY2VzcyIgOiAiRmFpbHVyZSIpOworCisgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cit9CisKK3N0YXRpYyBHc3RHTFNoYWRlciAqCitfY3JlYXRlX3NoYWRlciAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIHN0cnVjdCBzaGFkZXJfc3RhdGUgKnN0YXRlKQoreworICBHc3RHTENvbnRleHQgKmNvbnRleHQ7CisgIEdzdEdMU2hhZGVyICpzaGFkZXIsICpuZXdfc2hhZGVyOworCisgIGdfb2JqZWN0X2dldCAoR19PQkpFQ1QgKGVsZW1lbnQpLCAiY29udGV4dCIsICZjb250ZXh0LCAic2hhZGVyIiwgJnNoYWRlciwKKyAgICAgIE5VTEwpOworCisgIG5ld19zaGFkZXIgPSBfbmV3X3NoYWRlciAoY29udGV4dCwgc3RhdGUpOworICBpZiAoIXNoYWRlciAmJiAhbmV3X3NoYWRlcikKKyAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gY3JlYXRlIGEgc2hhZGVyISIpOworICBzdGF0ZS0+c2hhZGVyX2xpbmtlZCA9IG5ld19zaGFkZXIgIT0gTlVMTDsKKworICBpZiAoc2hhZGVyKQorICAgIGdzdF9vYmplY3RfdW5yZWYgKHNoYWRlcik7CisgIGdzdF9vYmplY3RfdW5yZWYgKGNvbnRleHQpOworCisgIGdfbWFpbl9jb250ZXh0X2ludm9rZSAoTlVMTCwgKEdTb3VyY2VGdW5jKSBfc2V0X2NvbXBpbGF0aW9uX3N0YXRlLCBzdGF0ZSk7CisKKyAgcmV0dXJuIG5ld19zaGFkZXI7Cit9CisKK3N0YXRpYyB2b2lkCitfb25fdGV4dF9jaGFuZ2VkIChHdGtUZXh0QnVmZmVyICogdGV4dCwgc3RydWN0IHRleHRfdmlld19zdGF0ZSAqc3RhdGUpCit7CisgIEd0a1RleHRJdGVyIHN0YXJ0LCBlbmQ7CisKKyAgZ3RrX3RleHRfYnVmZmVyX2dldF9ib3VuZHMgKHRleHQsICZzdGFydCwgJmVuZCk7CisgIGdfZnJlZSAoc3RhdGUtPnN0cik7CisgIHN0YXRlLT5zdHIgPSBndGtfdGV4dF9idWZmZXJfZ2V0X3RleHQgKHRleHQsICZzdGFydCwgJmVuZCwgRkFMU0UpOworICBnX29iamVjdF9zZXQgKHN0YXRlLT5zdGF0ZS0+c2hhZGVyLCAidXBkYXRlLXNoYWRlciIsIFRSVUUsIE5VTEwpOworfQorCitzdGF0aWMgR3RrV2lkZ2V0ICoKK19uZXdfc291cmNlX3ZpZXcgKHN0cnVjdCBzaGFkZXJfc3RhdGUgKnN0YXRlLCBHTGVudW0gdHlwZSwgY29uc3QgZ2NoYXIgKiB0ZW1wbCkKK3sKKyAgc3RhdGljIGludCBpID0gMDsKKyAgR3RrV2lkZ2V0ICpzY3JvbGwsICp0ZXh0X3ZpZXc7CisgIEd0a1RleHRCdWZmZXIgKnRleHQ7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGkgPCBNQVhfU0hBREVSX1NUQUdFUywgTlVMTCk7CisKKyAgc3RhdGUtPnRleHRfc3RhdGVzW2ldLnN0YXRlID0gc3RhdGU7CisgIHN0YXRlLT50ZXh0X3N0YXRlc1tpXS50eXBlID0gdHlwZTsKKyAgc3RhdGUtPnRleHRfc3RhdGVzW2ldLnN0ciA9IGdfc3RyZHVwICh0ZW1wbCk7CisKKyAgc2Nyb2xsID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcgKE5VTEwsIE5VTEwpOworICBndGtfd2lkZ2V0X3NldF9zaXplX3JlcXVlc3QgKHNjcm9sbCwgMjAsIDIwKTsKKyAgdGV4dF92aWV3ID0gZ3RrX3RleHRfdmlld19uZXcgKCk7CisgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChzY3JvbGwpLCB0ZXh0X3ZpZXcpOworICB0ZXh0ID0gZ3RrX3RleHRfdmlld19nZXRfYnVmZmVyIChHVEtfVEVYVF9WSUVXICh0ZXh0X3ZpZXcpKTsKKyAgaWYgKHN0YXRlLT50ZXh0X3N0YXRlc1tpXS5zdHIpCisgICAgZ3RrX3RleHRfYnVmZmVyX3NldF90ZXh0ICh0ZXh0LCBzdGF0ZS0+dGV4dF9zdGF0ZXNbaV0uc3RyLCAtMSk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKHRleHQsICJjaGFuZ2VkIiwgR19DQUxMQkFDSyAoX29uX3RleHRfY2hhbmdlZCksCisgICAgICAmc3RhdGUtPnRleHRfc3RhdGVzW2ldKTsKKyAgc3RhdGUtPm5fc3RhZ2VzKys7CisgIGkrKzsKKworICByZXR1cm4gc2Nyb2xsOworfQorCitpbnQKK21haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgIEdzdEVsZW1lbnQgKnBpcGVsaW5lLCAqc3JjLCAqdXBsb2FkLCAqc2hhZGVyLCAqc2luazsKKyAgR3RrV2lkZ2V0ICp3aW5kb3csICpwYW5lZCwgKnZpZGVvLCAqcmlnaHRfYm94LCAqYm9vazsKKyAgc3RydWN0IHNoYWRlcl9zdGF0ZSBzdGF0ZSA9IHsgMCwgfTsKKyAgR3N0QnVzICpidXM7CisKKyNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfWDExCisgIFhJbml0VGhyZWFkcyAoKTsKKyNlbmRpZgorCisgIGdzdF9pbml0ICgmYXJnYywgJmFyZ3YpOworICBndGtfaW5pdCAoJmFyZ2MsICZhcmd2KTsKKworICBsb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7CisKKyAgcGlwZWxpbmUgPSBnc3RfcGlwZWxpbmVfbmV3IChOVUxMKTsKKyAgc3JjID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgidmlkZW90ZXN0c3JjIiwgTlVMTCk7CisgIHVwbG9hZCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImdsdXBsb2FkIiwgTlVMTCk7CisgIHNoYWRlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImdsc2hhZGVyIiwgTlVMTCk7CisgIHNpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJndGtnbHNpbmsiLCBOVUxMKTsKKyAgZ19vYmplY3RfZ2V0IChzaW5rLCAid2lkZ2V0IiwgJnZpZGVvLCBOVUxMKTsKKworICBnX2Fzc2VydCAoc3JjICYmIHNoYWRlciAmJiBzaW5rKTsKKyAgZ3N0X2Jpbl9hZGRfbWFueSAoR1NUX0JJTiAocGlwZWxpbmUpLCBzcmMsIHVwbG9hZCwgc2hhZGVyLCBzaW5rLCBOVUxMKTsKKyAgZ19hc3NlcnQgKGdzdF9lbGVtZW50X2xpbmtfbWFueSAoc3JjLCB1cGxvYWQsIHNoYWRlciwgc2luaywgTlVMTCkpOworCisgIGJ1cyA9IGdzdF9waXBlbGluZV9nZXRfYnVzIChHU1RfUElQRUxJTkUgKHBpcGVsaW5lKSk7CisgIGdzdF9idXNfYWRkX3dhdGNoIChidXMsIGJ1c19jYWxsLCBsb29wKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoYnVzKTsKKworICBzdGF0ZS5zaGFkZXIgPSBnc3Rfb2JqZWN0X3JlZiAoc2hhZGVyKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoc2hhZGVyLCAiY3JlYXRlLXNoYWRlciIsIEdfQ0FMTEJBQ0sgKF9jcmVhdGVfc2hhZGVyKSwKKyAgICAgICZzdGF0ZSk7CisKKyAgYm9vayA9IGd0a19ub3RlYm9va19uZXcgKCk7CisgIC8qIHRleHQgdmlldyBpbnNpZGUgYSBzY3JvbGwgdmlldyAqLworICBndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2UgKEdUS19OT1RFQk9PSyAoYm9vayksIF9uZXdfc291cmNlX3ZpZXcgKCZzdGF0ZSwKKyAgICAgICAgICBHTF9WRVJURVhfU0hBREVSLCB2ZXJ0KSwgZ3RrX2xhYmVsX25ldyAoIlZlcnRleCIpKTsKKyAgZ3RrX25vdGVib29rX2FwcGVuZF9wYWdlIChHVEtfTk9URUJPT0sgKGJvb2spLCBfbmV3X3NvdXJjZV92aWV3ICgmc3RhdGUsCisgICAgICAgICAgR0xfR0VPTUVUUllfU0hBREVSLCBnZW9tKSwgZ3RrX2xhYmVsX25ldyAoIkdlb21ldHJ5IikpOworICBndGtfbm90ZWJvb2tfYXBwZW5kX3BhZ2UgKEdUS19OT1RFQk9PSyAoYm9vayksIF9uZXdfc291cmNlX3ZpZXcgKCZzdGF0ZSwKKyAgICAgICAgICBHTF9GUkFHTUVOVF9TSEFERVIsIGZyYWcpLCBndGtfbGFiZWxfbmV3ICgiRnJhZ21lbnQiKSk7CisgIC8qIHN0YXR1cyBsYWJlbCAqLworICBzdGF0ZS5sYWJlbCA9IGd0a19sYWJlbF9uZXcgKCJTdWNjZXNzIik7CisKKyAgLyogcmlnaHQgc2lkZSBzb3VyY2UgY29kZSBlZGl0b3IgKi8KKyAgcmlnaHRfYm94ID0gZ3RrX2JveF9uZXcgKEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7CisgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAocmlnaHRfYm94KSwgYm9vaywgVFJVRSwgVFJVRSwgMCk7CisgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAocmlnaHRfYm94KSwgc3RhdGUubGFiZWwsIEZBTFNFLCBUUlVFLCAwKTsKKworICBwYW5lZCA9IGd0a19wYW5lZF9uZXcgKEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMKTsKKyAgZ3RrX3BhbmVkX3BhY2sxIChHVEtfUEFORUQgKHBhbmVkKSwgdmlkZW8sIFRSVUUsIEZBTFNFKTsKKyAgZ3RrX3dpZGdldF9zZXRfc2l6ZV9yZXF1ZXN0ICh2aWRlbywgMjAsIDIwKTsKKyAgZ3RrX3BhbmVkX3BhY2syIChHVEtfUEFORUQgKHBhbmVkKSwgcmlnaHRfYm94LCBUUlVFLCBGQUxTRSk7CisKKyAgd2luZG93ID0gZ3RrX3dpbmRvd19uZXcgKEdUS19XSU5ET1dfVE9QTEVWRUwpOworICBndGtfd2luZG93X3NldF9kZWZhdWx0X3NpemUgKEdUS19XSU5ET1cgKHdpbmRvdyksIDY0MCwgNDgwKTsKKyAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIgKHdpbmRvdyksIHBhbmVkKTsKKworICBndGtfd2lkZ2V0X3Nob3dfYWxsICh3aW5kb3cpOworCisgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAocGlwZWxpbmUsIEdTVF9TVEFURV9QTEFZSU5HKTsKKworICBnX21haW5fbG9vcF9ydW4gKGxvb3ApOworCisgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAocGlwZWxpbmUsIEdTVF9TVEFURV9OVUxMKTsKKworICAvKnNoYWRlciBzdHJpbmdzIGxlYWtlZCBoZXJlICovCisgIC8qZ19mcmVlIChzdGF0ZS5zdHIpOyAqLworICBnc3Rfb2JqZWN0X3VucmVmIChzdGF0ZS5zaGFkZXIpOworCisgIGdzdF9vYmplY3RfdW5yZWYgKHBpcGVsaW5lKTsKKworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL21wZWd0cy9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL21wZWd0cy9NYWtlZmlsZS5pbgppbmRleCBhZWQzZTM1Li4wZDNmNzU5IDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9tcGVndHMvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvbXBlZ3RzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQxLDYgKzI0MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjc4LDYgKzI3OSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjg2LDcgKzI4OSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMwNSw4ICszMDcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzIzLDE2ICszMjYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzU4LDYgKzM2Miw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4Myw2ICszODksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00ODQsNiArNDkyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTQ5Nyw4ICs1MDYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MTQsNiArNTIxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3MSwxNiArNTgwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjMyLDYgKzY0Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDIsNiArNjU0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjUxLDYgKzY2NCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02ODgsNyArNzAzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9teGYvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9teGYvTWFrZWZpbGUuaW4KaW5kZXggOTIwZWUzNC4uMmU5Mzc0NiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvbXhmL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL214Zi9NYWtlZmlsZS5pbgpAQCAtMTE3LDE2ICsxMTcsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNDYsNiArMjQ1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODMsNiArMjg0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTEsNyArMjk0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzEwLDggKzMxMiw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMjgsMTYgKzMzMSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjMsNiArMzY3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzg4LDYgKzM5NCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ4OSw2ICs0OTcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTAyLDggKzUxMSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUxOSw2ICs1MjYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTc2LDE2ICs1ODUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzcsNiArNjQ4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0Nyw2ICs2NTksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTYsNiArNjY5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5Myw3ICs3MDgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL214Zi9teGZkZW11eC1zdHJ1Y3R1cmUuYyBiL3Rlc3RzL2V4YW1wbGVzL214Zi9teGZkZW11eC1zdHJ1Y3R1cmUuYwppbmRleCAxYTgwMmE3Li5hMjRhMzEwIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9teGYvbXhmZGVtdXgtc3RydWN0dXJlLmMKKysrIGIvdGVzdHMvZXhhbXBsZXMvbXhmL214ZmRlbXV4LXN0cnVjdHVyZS5jCkBAIC0xODIsNiArMTgyLDcgQEAKICAgR3N0RWxlbWVudCAqYmluID0gKEdzdEVsZW1lbnQgKikgZ3N0X2VsZW1lbnRfZ2V0X3BhcmVudCAoc3JjKTsKIAogICBnc3RfYmluX2FkZCAoR1NUX0JJTiAoYmluKSwgZmFrZXNpbmspOworICBnc3RfZWxlbWVudF9zeW5jX3N0YXRlX3dpdGhfcGFyZW50IChmYWtlc2luayk7CiAKICAgZ3N0X3BhZF9saW5rIChwYWQsIHNpbmtwYWQpOwogCkBAIC0yNDQsNyArMjQ1LDEwIEBACiAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSICh3aW5kb3cpLCBzY3JvbGxlZF93aW5kb3cpOwogICBndGtfd2lkZ2V0X3Nob3dfYWxsICh3aW5kb3cpOwogCi0gIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAocGlwZWxpbmUsIEdTVF9TVEFURV9QTEFZSU5HKTsKKyAgaWYgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSAocGlwZWxpbmUsCisgICAgICAgICAgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgeworICAgIGdfZXJyb3IgKCJGYWlsZWQgdG8gY2hhbmdlIHN0YXRlIHRvIFBMQVlJTkciKTsKKyAgfQogCiAgIGd0a19tYWluICgpOwogCmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9vcGVuY3YvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9vcGVuY3YvTWFrZWZpbGUuaW4KaW5kZXggMWRhMjFhNy4uNmExMmJhNiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvb3BlbmN2L01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL29wZW5jdi9NYWtlZmlsZS5pbgpAQCAtMTE3LDE2ICsxMTcsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI2Myw2ICsyNjIsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMwMCw2ICszMDEsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMwOCw3ICszMTEsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMjcsOCArMzI5LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM0NSwxNiArMzQ4LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM4MCw2ICszODQsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MDUsNiArNDExLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTA2LDYgKzUxNCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MTksOCArNTI4LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTM2LDYgKzU0Myw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01OTMsMTYgKzYwMiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY1NCw2ICs2NjUsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjY0LDYgKzY3Niw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY3Myw2ICs2ODYsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzEwLDcgKzcyNSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvb3BlbmN2L2dzdGZhY2VkZXRlY3RfdGVzdC5jIGIvdGVzdHMvZXhhbXBsZXMvb3BlbmN2L2dzdGZhY2VkZXRlY3RfdGVzdC5jCmluZGV4IDhjY2JkYTAuLjllY2YzZDAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL29wZW5jdi9nc3RmYWNlZGV0ZWN0X3Rlc3QuYworKysgYi90ZXN0cy9leGFtcGxlcy9vcGVuY3YvZ3N0ZmFjZWRldGVjdF90ZXN0LmMKQEAgLTE1NCw2ICsxNTQsOCBAQAogICBnX29wdGlvbl9jb250ZXh0X2FkZF9ncm91cCAoY3R4LCBnc3RfaW5pdF9nZXRfb3B0aW9uX2dyb3VwICgpKTsKICAgaWYgKCFnX29wdGlvbl9jb250ZXh0X3BhcnNlIChjdHgsICZhcmdjLCAmYXJndiwgJmVycikpIHsKICAgICBnX3ByaW50ICgiRXJyb3IgaW5pdGlhbGl6aW5nOiAlc1xuIiwgZXJyLT5tZXNzYWdlKTsKKyAgICBnX29wdGlvbl9jb250ZXh0X2ZyZWUgKGN0eCk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CiAgICAgZXhpdCAoMSk7CiAgIH0KICAgZ19vcHRpb25fY29udGV4dF9mcmVlIChjdHgpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvcGxheW91dC5jIGIvdGVzdHMvZXhhbXBsZXMvcGxheW91dC5jCmluZGV4IGM4NTUwOWEuLjA3MDQ4ZDggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL3BsYXlvdXQuYworKysgYi90ZXN0cy9leGFtcGxlcy9wbGF5b3V0LmMKQEAgLTY4MCw3ICs2ODAsNyBAQAogICB1cmkgPSBnc3RfZmlsZW5hbWVfdG9fdXJpIChpdGVtLT5mbiwgJmVycik7CiAgIGlmIChlcnIgIT0gTlVMTCkgewogICAgIEdTVF9XQVJOSU5HICgiQ291bGQgbm90IGNvbnZlcnQgJyVzJyB0byB1cmk6ICVzIiwgaXRlbS0+Zm4sIGVyci0+bWVzc2FnZSk7Ci0gICAgZ19lcnJvcl9mcmVlIChlcnIpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOwogICAgIHJldHVybiBOVUxMOwogICB9CiAKQEAgLTEwNjQsNiArMTA2NCw4IEBACiAgICAgICBnX3ByaW50ZXJyICgiRXJyb3IgaW5pdGlhbGl6aW5nOiAlc1xuIiwgZXJyLT5tZXNzYWdlKTsKICAgICBlbHNlCiAgICAgICBnX3ByaW50ZXJyICgiRXJyb3IgaW5pdGlhbGl6aW5nOiBVbmtub3duIGVycm9yIVxuIik7CisgICAgZ19vcHRpb25fY29udGV4dF9mcmVlIChjdHgpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOwogICAgIHJldHVybiAxOwogICB9CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL3V2Y2gyNjQvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy91dmNoMjY0L01ha2VmaWxlLmluCmluZGV4IDFiZjNhMWEuLjBkNjFiY2MgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL3V2Y2gyNjQvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvdXZjaDI2NC9NYWtlZmlsZS5pbgpAQCAtMTE3LDE2ICsxMTcsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0OSw2ICsyNDgsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4Niw2ICsyODcsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5NCw3ICsyOTcsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTMsOCArMzE1LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMzMSwxNiArMzM0LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2Niw2ICszNzAsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zOTEsNiArMzk3LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDkyLDYgKzUwMCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDUsOCArNTE0LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTIyLDYgKzUyOSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzksMTYgKzU4OCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY0MCw2ICs2NTEsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjUwLDYgKzY2Miw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1OSw2ICs2NzIsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjk2LDcgKzcxMSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvTWFrZWZpbGUuYW0gYi90ZXN0cy9leGFtcGxlcy93YXlsYW5kc2luay9NYWtlZmlsZS5hbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWJhOTIxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvTWFrZWZpbGUuYW0KQEAgLTAsMCArMSwxMSBAQAorbm9pbnN0X1BST0dSQU1TID0gZ3Rrd2F5bGFuZHNpbmsKKworZ3Rrd2F5bGFuZHNpbmtfU09VUkNFUyA9IG1haW4uYworCitndGt3YXlsYW5kc2lua19DRkxBR1M9LUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIC1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoR1RLM19DRkxBR1MpCitndGt3YXlsYW5kc2lua19MREFERD0kKEdUSzNfTElCUykgJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0xJQlMpIFwKKwktbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC93YXlsYW5kL2xpYmdzdHdheWxhbmQtJChHU1RfQVBJX1ZFUlNJT04pLmxhCisKK0VYVFJBX0RJU1QgPSB3aW5kb3cudWkKZGlmZiAtLWdpdCBhL2dzdC9saXZlYWRkZXIvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy93YXlsYW5kc2luay9NYWtlZmlsZS5pbgpzaW1pbGFyaXR5IGluZGV4IDgwJQpjb3B5IGZyb20gZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbgpjb3B5IHRvIHRlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL01ha2VmaWxlLmluCmluZGV4IGJhOWU1YTIuLmU5MDExYzYgMTAwNjQ0Ci0tLSBhL2dzdC9saXZlYWRkZXIvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvTWFrZWZpbGUuaW4KQEAgLTE0LDcgKzE0LDYgQEAKIAogQFNFVF9NQUtFQAogCi0KIFZQQVRIID0gQHNyY2RpckAKIGFtX19pc19nbnVfbWFrZSA9IHsgXAogICBpZiB0ZXN0IC16ICckKE1BS0VMRVZFTCknOyB0aGVuIFwKQEAgLTkwLDcgKzg5LDggQEAKIGJ1aWxkX3RyaXBsZXQgPSBAYnVpbGRACiBob3N0X3RyaXBsZXQgPSBAaG9zdEAKIHRhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKLXN1YmRpciA9IGdzdC9saXZlYWRkZXIKK25vaW5zdF9QUk9HUkFNUyA9IGd0a3dheWxhbmRzaW5rJChFWEVFWFQpCitzdWJkaXIgPSB0ZXN0cy9leGFtcGxlcy93YXlsYW5kc2luawogQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAogYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWFjLWV4cGFuZC5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYXV0by1hbHQubTQgXApAQCAtMTE2LDY2ICsxMTYsMzcgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCi1ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCi0JJChhbV9fRElTVF9DT01NT04pCitESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKIG1raW5zdGFsbGRpcnMgPSAkKGluc3RhbGxfc2gpIC1kCiBDT05GSUdfSEVBREVSID0gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5oCiBDT05GSUdfQ0xFQU5fRklMRVMgPQogQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KLWFtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOwotYW1fX3ZwYXRoX2FkaiA9IGNhc2UgJCRwIGluIFwKLSAgICAkKHNyY2RpcikvKikgZj1gZWNobyAiJCRwIiB8IHNlZCAic3xeJCRzcmNkaXJzdHJpcC98fCJgOzsgXAotICAgICopIGY9JCRwOzsgXAotICBlc2FjOwotYW1fX3N0cmlwX2RpciA9IGY9YGVjaG8gJCRwIHwgc2VkIC1lICdzfF4uKi98fCdgOwotYW1fX2luc3RhbGxfbWF4ID0gNDAKLWFtX19ub2Jhc2Vfc3RyaXBfc2V0dXAgPSBcCi0gIHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCp8XS9cXFxcJi9nJ2AKLWFtX19ub2Jhc2Vfc3RyaXAgPSBcCi0gIGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAiJCRwIjsgZG9uZSB8IHNlZCAtZSAic3wkJHNyY2RpcnN0cmlwL3x8IgotYW1fX25vYmFzZV9saXN0ID0gJChhbV9fbm9iYXNlX3N0cmlwX3NldHVwKTsgXAotICBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkcCAkJHAiOyBkb25lIHwgXAotICBzZWQgInN8ICQkc3JjZGlyc3RyaXAvfCB8OyInIC8gLipcLy8hcy8gLiovIC4vOyBzLFwoIC4qXCkvW14vXSokJCxcMSwnIHwgXAotICAkKEFXSykgJ0JFR0lOIHsgZmlsZXNbIi4iXSA9ICIiIH0geyBmaWxlc1skJDJdID0gZmlsZXNbJCQyXSAiICIgJCQxOyBcCi0gICAgaWYgKCsrblskJDJdID09ICQoYW1fX2luc3RhbGxfbWF4KSkgXAotICAgICAgeyBwcmludCAkJDIsIGZpbGVzWyQkMl07IG5bJCQyXSA9IDA7IGZpbGVzWyQkMl0gPSAiIiB9IH0gXAotICAgIEVORCB7IGZvciAoZGlyIGluIGZpbGVzKSBwcmludCBkaXIsIGZpbGVzW2Rpcl0gfScKLWFtX19iYXNlX2xpc3QgPSBcCi0gIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycgfCBcCi0gIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycKLWFtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIgPSB7IFwKLSAgdGVzdCAteiAiJCRmaWxlcyIgXAotICAgIHx8IHsgdGVzdCAhIC1kICIkJGRpciIgJiYgdGVzdCAhIC1mICIkJGRpciIgJiYgdGVzdCAhIC1yICIkJGRpciI7IH0gXAotICAgIHx8IHsgZWNobyAiICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKLSAgICAgICAgICQoYW1fX2NkKSAiJCRkaXIiICYmIHJtIC1mICQkZmlsZXM7IH07IFwKLSAgfQotYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHBsdWdpbmRpcikiCi1MVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQorUFJPR1JBTVMgPSAkKG5vaW5zdF9QUk9HUkFNUykKK2FtX2d0a3dheWxhbmRzaW5rX09CSkVDVFMgPSBndGt3YXlsYW5kc2luay1tYWluLiQoT0JKRVhUKQorZ3Rrd2F5bGFuZHNpbmtfT0JKRUNUUyA9ICQoYW1fZ3Rrd2F5bGFuZHNpbmtfT0JKRUNUUykKIGFtX19ERVBFTkRFTkNJRVNfMSA9Ci1saWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKLQkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpCi1hbV9saWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUyA9IGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8KLWxpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUykKK2d0a3dheWxhbmRzaW5rX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC93YXlsYW5kL2xpYmdzdHdheWxhbmQtJChHU1RfQVBJX1ZFUlNJT04pLmxhCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CiBhbV9fdl9sdF8xID0gCi1saWJnc3RsaXZlYWRkZXJfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCi0JJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAotCSQoQ0NMRCkgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAotCSQobGliZ3N0bGl2ZWFkZGVyX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK2d0a3dheWxhbmRzaW5rX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAorCSQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSBcCisJJChndGt3YXlsYW5kc2lua19DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykgLW8gXAorCSRACiBBTV9WX1AgPSAkKGFtX192X1BfQEFNX1ZAKQogYW1fX3ZfUF8gPSAkKGFtX192X1BfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9QXzAgPSBmYWxzZQpAQCAtMjEwLDE0ICsxODEsMTMgQEAKIGFtX192X0NDTERfID0gJChhbV9fdl9DQ0xEX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOwogYW1fX3ZfQ0NMRF8xID0gCi1TT1VSQ0VTID0gJChsaWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUykKLURJU1RfU09VUkNFUyA9ICQobGliZ3N0bGl2ZWFkZGVyX2xhX1NPVVJDRVMpCitTT1VSQ0VTID0gJChndGt3YXlsYW5kc2lua19TT1VSQ0VTKQorRElTVF9TT1VSQ0VTID0gJChndGt3YXlsYW5kc2lua19TT1VSQ0VTKQogYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCiAgIGNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAogICAgIG58bm98Tk8pIGZhbHNlOzsgXAogICAgICopIChpbnN0YWxsLWluZm8gLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjE7OyBcCiAgIGVzYWMKLUhFQURFUlMgPSAkKG5vaW5zdF9IRUFERVJTKQogYW1fX3RhZ2dlZF9maWxlcyA9ICQoSEVBREVSUykgJChTT1VSQ0VTKSAkKFRBR1NfRklMRVMpICQoTElTUCkKICMgUmVhZCBhIGxpc3Qgb2YgbmV3bGluZS1zZXBhcmF0ZWQgc3RyaW5ncyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCwKICMgYW5kIHByaW50IGVhY2ggb2YgdGhlbSBvbmNlLCB3aXRob3V0IGR1cGxpY2F0ZXMuICBJbnB1dCBvcmRlciBpcwpAQCAtMjc0LDYgKzI0NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzI4Myw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzI5Myw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszMTEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszMzAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM2Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICszOTMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNDk2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MTAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTI1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNTg0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY0Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjU4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY2OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzA3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NjEsMTYgKzc0NiwxNSBAQAogdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RsaXZlYWRkZXIubGEKLWxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTID0gbGl2ZWFkZGVyLmMKLWxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSUJBREQgPSBcCi0JJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykKK2d0a3dheWxhbmRzaW5rX1NPVVJDRVMgPSBtYWluLmMKK2d0a3dheWxhbmRzaW5rX0NGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyAtSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEdUSzNfQ0ZMQUdTKQogCi1saWJnc3RsaXZlYWRkZXJfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQotbGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCi1ub2luc3RfSEVBREVSUyA9IGxpdmVhZGRlci5oCitndGt3YXlsYW5kc2lua19MREFERCA9ICQoR1RLM19MSUJTKSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfTElCUykgXAorCS1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3dheWxhbmQvbGliZ3N0d2F5bGFuZC0kKEdTVF9BUElfVkVSU0lPTikubGEKKworRVhUUkFfRElTVCA9IHdpbmRvdy51aQogYWxsOiBhbGwtYW0KIAogLlNVRkZJWEVTOgpAQCAtNzg0LDkgKzc2OCw5IEBACiAJICAgICAgZXhpdCAxOzsgXAogCSAgZXNhYzsgXAogCWRvbmU7IFwKLQllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBnc3QvbGl2ZWFkZGVyL01ha2VmaWxlJzsgXAorCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZ251IHRlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL01ha2VmaWxlJzsgXAogCSQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpICYmIFwKLQkgICQoQVVUT01BS0UpIC0tZ251IGdzdC9saXZlYWRkZXIvTWFrZWZpbGUKKwkgICQoQVVUT01BS0UpIC0tZ251IHRlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL01ha2VmaWxlCiBNYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCiAJQGNhc2UgJyQ/JyBpbiBcCiAJICAqY29uZmlnLnN0YXR1cyopIFwKQEAgLTgwNSw0MyArNzg5LDE4IEBACiAJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCiAkKGFtX19hY2xvY2FsX200X2RlcHMpOgogCi1pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTOiAkKHBsdWdpbl9MVExJQlJBUklFUykKLQlAJChOT1JNQUxfSU5TVEFMTCkKLQlAbGlzdD0nJChwbHVnaW5fTFRMSUJSQVJJRVMpJzsgdGVzdCAtbiAiJChwbHVnaW5kaXIpIiB8fCBsaXN0PTsgXAotCWxpc3QyPTsgZm9yIHAgaW4gJCRsaXN0OyBkbyBcCi0JICBpZiB0ZXN0IC1mICQkcDsgdGhlbiBcCi0JICAgIGxpc3QyPSIkJGxpc3QyICQkcCI7IFwKLQkgIGVsc2UgOjsgZmk7IFwKLQlkb25lOyBcCi0JdGVzdCAteiAiJCRsaXN0MiIgfHwgeyBcCi0JICBlY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQocGx1Z2luZGlyKSciOyBcCi0JICAkKE1LRElSX1ApICIkKERFU1RESVIpJChwbHVnaW5kaXIpIiB8fCBleGl0IDE7IFwKLQkgIGVjaG8gIiAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAnJChERVNURElSKSQocGx1Z2luZGlyKSciOyBcCi0JICAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAiJChERVNURElSKSQocGx1Z2luZGlyKSI7IFwKLQl9CitjbGVhbi1ub2luc3RQUk9HUkFNUzoKKwlAbGlzdD0nJChub2luc3RfUFJPR1JBTVMpJzsgdGVzdCAtbiAiJCRsaXN0IiB8fCBleGl0IDA7IFwKKwllY2hvICIgcm0gLWYiICQkbGlzdDsgXAorCXJtIC1mICQkbGlzdCB8fCBleGl0ICQkPzsgXAorCXRlc3QgLW4gIiQoRVhFRVhUKSIgfHwgZXhpdCAwOyBcCisJbGlzdD1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICIkJHAiOyBkb25lIHwgc2VkICdzLyQoRVhFRVhUKSQkLy8nYDsgXAorCWVjaG8gIiBybSAtZiIgJCRsaXN0OyBcCisJcm0gLWYgJCRsaXN0CiAKLXVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUzoKLQlAJChOT1JNQUxfVU5JTlNUQUxMKQotCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyB0ZXN0IC1uICIkKHBsdWdpbmRpcikiIHx8IGxpc3Q9OyBcCi0JZm9yIHAgaW4gJCRsaXN0OyBkbyBcCi0JICAkKGFtX19zdHJpcF9kaXIpIFwKLQkgIGVjaG8gIiAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPXVuaW5zdGFsbCBybSAtZiAnJChERVNURElSKSQocGx1Z2luZGlyKS8kJGYnIjsgXAotCSAgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgIiQoREVTVERJUikkKHBsdWdpbmRpcikvJCRmIjsgXAotCWRvbmUKLQotY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVM6Ci0JLXRlc3QgLXogIiQocGx1Z2luX0xUTElCUkFSSUVTKSIgfHwgcm0gLWYgJChwbHVnaW5fTFRMSUJSQVJJRVMpCi0JQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IFwKLQlsb2NzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRwOyBkb25lIHwgXAotCSAgICAgIHNlZCAnc3xeW14vXSokJHwufDsgc3wvW14vXSokJHx8OyBzfCQkfC9zb19sb2NhdGlvbnN8JyB8IFwKLQkgICAgICBzb3J0IC11YDsgXAotCXRlc3QgLXogIiQkbG9jcyIgfHwgeyBcCi0JICBlY2hvIHJtIC1mICQke2xvY3N9OyBcCi0JICBybSAtZiAkJHtsb2NzfTsgXAotCX0KLQotbGliZ3N0bGl2ZWFkZGVyLmxhOiAkKGxpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0bGl2ZWFkZGVyX2xhX0RFUEVOREVOQ0lFUykgCi0JJChBTV9WX0NDTEQpJChsaWJnc3RsaXZlYWRkZXJfbGFfTElOSykgLXJwYXRoICQocGx1Z2luZGlyKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJBREQpICQoTElCUykKK2d0a3dheWxhbmRzaW5rJChFWEVFWFQpOiAkKGd0a3dheWxhbmRzaW5rX09CSkVDVFMpICQoZ3Rrd2F5bGFuZHNpbmtfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2d0a3dheWxhbmRzaW5rX0RFUEVOREVOQ0lFUykgCisJQHJtIC1mIGd0a3dheWxhbmRzaW5rJChFWEVFWFQpCisJJChBTV9WX0NDTEQpJChndGt3YXlsYW5kc2lua19MSU5LKSAkKGd0a3dheWxhbmRzaW5rX09CSkVDVFMpICQoZ3Rrd2F5bGFuZHNpbmtfTERBREQpICQoTElCUykKIAogbW9zdGx5Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi4kKE9CSkVYVCkKQEAgLTg0OSw3ICs4MDgsNyBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9ndGt3YXlsYW5kc2luay1tYWluLlBvQGFtX19xdW90ZUAKIAogLmMubzoKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQylkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5vJCR8fCdgO1wKQEAgLTg3NSwxMiArODM0LDE5IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMVENPTVBJTEUpIC1jIC1vICRAICQ8CiAKLWxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG86IGxpdmVhZGRlci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5UcG8gLWMgLW8gbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbyBgdGVzdCAtZiAnbGl2ZWFkZGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGxpdmVhZGRlci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlRwbyAkKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdsaXZlYWRkZXIuYycgb2JqZWN0PSdsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitndGt3YXlsYW5kc2luay1tYWluLm86IG1haW4uYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGd0a3dheWxhbmRzaW5rX0NGTEFHUykgJChDRkxBR1MpIC1NVCBndGt3YXlsYW5kc2luay1tYWluLm8gLU1EIC1NUCAtTUYgJChERVBESVIpL2d0a3dheWxhbmRzaW5rLW1haW4uVHBvIC1jIC1vIGd0a3dheWxhbmRzaW5rLW1haW4ubyBgdGVzdCAtZiAnbWFpbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BtYWluLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2d0a3dheWxhbmRzaW5rLW1haW4uVHBvICQoREVQRElSKS9ndGt3YXlsYW5kc2luay1tYWluLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbWFpbi5jJyBvYmplY3Q9J2d0a3dheWxhbmRzaW5rLW1haW4ubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIGB0ZXN0IC1mICdsaXZlYWRkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGl2ZWFkZGVyLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChndGt3YXlsYW5kc2lua19DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBndGt3YXlsYW5kc2luay1tYWluLm8gYHRlc3QgLWYgJ21haW4uYycgfHwgZWNobyAnJChzcmNkaXIpLydgbWFpbi5jCisKK2d0a3dheWxhbmRzaW5rLW1haW4ub2JqOiBtYWluLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChndGt3YXlsYW5kc2lua19DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZ3Rrd2F5bGFuZHNpbmstbWFpbi5vYmogLU1EIC1NUCAtTUYgJChERVBESVIpL2d0a3dheWxhbmRzaW5rLW1haW4uVHBvIC1jIC1vIGd0a3dheWxhbmRzaW5rLW1haW4ub2JqIGBpZiB0ZXN0IC1mICdtYWluLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbWFpbi5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9tYWluLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2d0a3dheWxhbmRzaW5rLW1haW4uVHBvICQoREVQRElSKS9ndGt3YXlsYW5kc2luay1tYWluLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbWFpbi5jJyBvYmplY3Q9J2d0a3dheWxhbmRzaW5rLW1haW4ub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChndGt3YXlsYW5kc2lua19DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBndGt3YXlsYW5kc2luay1tYWluLm9iaiBgaWYgdGVzdCAtZiAnbWFpbi5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ21haW4uYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvbWFpbi5jJzsgZmlgCiAKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KQEAgLTk3MiwxMSArOTM4LDggQEAKIAlkb25lCiBjaGVjay1hbTogYWxsLWFtCiBjaGVjazogY2hlY2stYW0KLWFsbC1hbTogTWFrZWZpbGUgJChMVExJQlJBUklFUykgJChIRUFERVJTKQorYWxsLWFtOiBNYWtlZmlsZSAkKFBST0dSQU1TKQogaW5zdGFsbGRpcnM6Ci0JZm9yIGRpciBpbiAiJChERVNURElSKSQocGx1Z2luZGlyKSI7IGRvIFwKLQkgIHRlc3QgLXogIiQkZGlyIiB8fCAkKE1LRElSX1ApICIkJGRpciI7IFwKLQlkb25lCiBpbnN0YWxsOiBpbnN0YWxsLWFtCiBpbnN0YWxsLWV4ZWM6IGluc3RhbGwtZXhlYy1hbQogaW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtYW0KQEAgLTEwMDksNyArOTcyLDcgQEAKIAlAZWNobyAiaXQgZGVsZXRlcyBmaWxlcyB0aGF0IG1heSByZXF1aXJlIHNwZWNpYWwgdG9vbHMgdG8gcmVidWlsZC4iCiBjbGVhbjogY2xlYW4tYW0KIAotY2xlYW4tYW06IGNsZWFuLWdlbmVyaWMgY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBcCitjbGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBjbGVhbi1saWJ0b29sIGNsZWFuLW5vaW5zdFBST0dSQU1TIFwKIAltb3N0bHljbGVhbi1hbQogCiBkaXN0Y2xlYW46IGRpc3RjbGVhbi1hbQpAQCAtMTAzMCw3ICs5OTMsNyBAQAogCiBpbmZvLWFtOgogCi1pbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKK2luc3RhbGwtZGF0YS1hbToKIAogaW5zdGFsbC1kdmk6IGluc3RhbGwtZHZpLWFtCiAKQEAgLTEwNzYsMjQgKzEwMzksMjMgQEAKIAogcHMtYW06CiAKLXVuaW5zdGFsbC1hbTogdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCit1bmluc3RhbGwtYW06CiAKIC5NQUtFOiBpbnN0YWxsLWFtIGluc3RhbGwtc3RyaXAKIAogLlBIT05ZOiBDVEFHUyBHVEFHUyBUQUdTIGFsbCBhbGwtYW0gY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBcCi0JY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBjc2NvcGVsaXN0LWFtIGN0YWdzIFwKKwljbGVhbi1saWJ0b29sIGNsZWFuLW5vaW5zdFBST0dSQU1TIGNzY29wZWxpc3QtYW0gY3RhZ3MgXAogCWN0YWdzLWFtIGRpc3RjbGVhbiBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcCiAJZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGNsZWFuLXRhZ3MgZGlzdGRpciBkdmkgZHZpLWFtIGh0bWwgXAogCWh0bWwtYW0gaW5mbyBpbmZvLWFtIGluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgXAogCWluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBpbnN0YWxsLWR2aS1hbSBpbnN0YWxsLWV4ZWMgXAogCWluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgaW5zdGFsbC1odG1sLWFtIGluc3RhbGwtaW5mbyBcCiAJaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbWFuIGluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIFwKLQlpbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTIGluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBcCi0JaW5zdGFsbC1zdHJpcCBpbnN0YWxsY2hlY2sgaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIFwKLQltYWludGFpbmVyLWNsZWFuIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbiBcCi0JbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWxpYnRvb2wgXAotCXBkZiBwZGYtYW0gcHMgcHMtYW0gdGFncyB0YWdzLWFtIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0gXAotCXVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUworCWluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBcCisJaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIG1haW50YWluZXItY2xlYW4gXAorCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbiBtb3N0bHljbGVhbi1jb21waWxlIFwKKwltb3N0bHljbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWxpYnRvb2wgcGRmIHBkZi1hbSBwcyBwcy1hbSBcCisJdGFncyB0YWdzLWFtIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0KIAogLlBSRUNJT1VTOiBNYWtlZmlsZQogCmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy93YXlsYW5kc2luay9tYWluLmMgYi90ZXN0cy9leGFtcGxlcy93YXlsYW5kc2luay9tYWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY5YmY4OQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL21haW4uYwpAQCAtMCwwICsxLDI3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IENvbGxhYm9yYSBMdGQuCisgKiAgIEBhdXRob3IgR2VvcmdlIEtpYWdpYWRha2lzIDxnZW9yZ2Uua2lhZ2lhZGFraXNAY29sbGFib3JhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDxnZGsvZ2RrLmg+CisKKyNpZmRlZiBHREtfV0lORE9XSU5HX1dBWUxBTkQKKyNpbmNsdWRlIDxnZGsvZ2Rrd2F5bGFuZC5oPgorI2Vsc2UKKyNlcnJvciAiV2F5bGFuZCBpcyBub3Qgc3VwcG9ydGVkIGluIEdUSysiCisjZW5kaWYKKworI2luY2x1ZGUgPGdzdC92aWRlby92aWRlb292ZXJsYXkuaD4KKyNpbmNsdWRlIDxnc3Qvd2F5bGFuZC93YXlsYW5kLmg+CisKKworc3RhdGljIGdib29sZWFuIGxpdmUgPSBGQUxTRTsKKworc3RhdGljIEdPcHRpb25FbnRyeSBlbnRyaWVzW10gPSB7CisgIHsibGl2ZSIsICdsJywgMCwgR19PUFRJT05fQVJHX05PTkUsICZsaXZlLCAiVXNlIGEgbGl2ZSBzb3VyY2UiLCBOVUxMfSwKKyAge05VTEx9Cit9OworCit0eXBlZGVmIHN0cnVjdAoreworICBHdGtXaWRnZXQgKmFwcF93aWRnZXQ7CisgIEd0a1dpZGdldCAqdmlkZW9fd2lkZ2V0OworCisgIEdzdEVsZW1lbnQgKnBpcGVsaW5lOworICBHc3RWaWRlb092ZXJsYXkgKm92ZXJsYXk7CisKKyAgZ2NoYXIgKiphcmd2OworICBnaW50IGN1cnJlbnRfdXJpOyAgICAgICAgICAgICAvKiBpbmRleCBmb3IgYXJndiAqLworfSBEZW1vQXBwOworCitzdGF0aWMgdm9pZAorb25fYWJvdXRfdG9fZmluaXNoIChHc3RFbGVtZW50ICogcGxheWJpbiwgRGVtb0FwcCAqIGQpCit7CisgIGlmIChkLT5hcmd2WysrZC0+Y3VycmVudF91cmldID09IE5VTEwpCisgICAgZC0+Y3VycmVudF91cmkgPSAxOworCisgIGdfcHJpbnQgKCJOb3cgcGxheWluZyAlc1xuIiwgZC0+YXJndltkLT5jdXJyZW50X3VyaV0pOworICBnX29iamVjdF9zZXQgKHBsYXliaW4sICJ1cmkiLCBkLT5hcmd2W2QtPmN1cnJlbnRfdXJpXSwgTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkCitlcnJvcl9jYiAoR3N0QnVzICogYnVzLCBHc3RNZXNzYWdlICogbXNnLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIERlbW9BcHAgKmQgPSB1c2VyX2RhdGE7CisgIGdjaGFyICpkZWJ1ZyA9IE5VTEw7CisgIEdFcnJvciAqZXJyID0gTlVMTDsKKworICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvciAobXNnLCAmZXJyLCAmZGVidWcpOworCisgIGdfcHJpbnQgKCJFcnJvcjogJXNcbiIsIGVyci0+bWVzc2FnZSk7CisgIGdfZXJyb3JfZnJlZSAoZXJyKTsKKworICBpZiAoZGVidWcpIHsKKyAgICBnX3ByaW50ICgiRGVidWcgZGV0YWlsczogJXNcbiIsIGRlYnVnKTsKKyAgICBnX2ZyZWUgKGRlYnVnKTsKKyAgfQorCisgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoZC0+cGlwZWxpbmUsIEdTVF9TVEFURV9OVUxMKTsKK30KKworc3RhdGljIEdzdEJ1c1N5bmNSZXBseQorYnVzX3N5bmNfaGFuZGxlciAoR3N0QnVzICogYnVzLCBHc3RNZXNzYWdlICogbWVzc2FnZSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBEZW1vQXBwICpkID0gdXNlcl9kYXRhOworCisgIGlmIChnc3RfaXNfd2F5bGFuZF9kaXNwbGF5X2hhbmRsZV9uZWVkX2NvbnRleHRfbWVzc2FnZSAobWVzc2FnZSkpIHsKKyAgICBHc3RDb250ZXh0ICpjb250ZXh0OworICAgIEdka0Rpc3BsYXkgKmRpc3BsYXk7CisgICAgc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXlfaGFuZGxlOworCisgICAgZGlzcGxheSA9IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkgKGQtPnZpZGVvX3dpZGdldCk7CisgICAgZGlzcGxheV9oYW5kbGUgPSBnZGtfd2F5bGFuZF9kaXNwbGF5X2dldF93bF9kaXNwbGF5IChkaXNwbGF5KTsKKyAgICBjb250ZXh0ID0gZ3N0X3dheWxhbmRfZGlzcGxheV9oYW5kbGVfY29udGV4dF9uZXcgKGRpc3BsYXlfaGFuZGxlKTsKKyAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dCAoR1NUX0VMRU1FTlQgKEdTVF9NRVNTQUdFX1NSQyAobWVzc2FnZSkpLCBjb250ZXh0KTsKKworICAgIGdvdG8gZHJvcDsKKyAgfSBlbHNlIGlmIChnc3RfaXNfdmlkZW9fb3ZlcmxheV9wcmVwYXJlX3dpbmRvd19oYW5kbGVfbWVzc2FnZSAobWVzc2FnZSkpIHsKKyAgICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247CisgICAgR2RrV2luZG93ICp3aW5kb3c7CisgICAgc3RydWN0IHdsX3N1cmZhY2UgKndpbmRvd19oYW5kbGU7CisKKyAgICAvKiBHU1RfTUVTU0FHRV9TUkMgKG1lc3NhZ2UpIHdpbGwgYmUgdGhlIG92ZXJsYXkgb2JqZWN0IHRoYXQgd2UgaGF2ZSB0bworICAgICAqIHVzZS4gVGhpcyBtYXkgYmUgd2F5bGFuZHNpbmssIGJ1dCBpdCBtYXkgYWxzbyBiZSBwbGF5YmluLiBJbiB0aGUgbGF0dGVyCisgICAgICogY2FzZSwgd2UgbXVzdCBtYWtlIHN1cmUgdG8gdXNlIHBsYXliaW4gaW5zdGVhZCBvZiB3YXlsYW5kc2luaywgYmVjYXVzZQorICAgICAqIHBsYXliaW4gcmVzZXRzIHRoZSB3aW5kb3cgaGFuZGxlIGFuZCByZW5kZXJfcmVjdGFuZ2xlIGFmdGVyIHJlc3RhcnRpbmcKKyAgICAgKiBwbGF5YmFjayBhbmQgdGhlIGFjdHVhbCB3aW5kb3cgc2l6ZSBpcyBsb3N0ICovCisgICAgZC0+b3ZlcmxheSA9IEdTVF9WSURFT19PVkVSTEFZIChHU1RfTUVTU0FHRV9TUkMgKG1lc3NhZ2UpKTsKKworICAgIGd0a193aWRnZXRfZ2V0X2FsbG9jYXRpb24gKGQtPnZpZGVvX3dpZGdldCwgJmFsbG9jYXRpb24pOworICAgIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyAoZC0+dmlkZW9fd2lkZ2V0KTsKKyAgICB3aW5kb3dfaGFuZGxlID0gZ2RrX3dheWxhbmRfd2luZG93X2dldF93bF9zdXJmYWNlICh3aW5kb3cpOworCisgICAgZ19wcmludCAoInNldHRpbmcgd2luZG93IGhhbmRsZSBhbmQgc2l6ZSAoJWQgeCAlZClcbiIsCisgICAgICAgIGFsbG9jYXRpb24ud2lkdGgsIGFsbG9jYXRpb24uaGVpZ2h0KTsKKworICAgIGdzdF92aWRlb19vdmVybGF5X3NldF93aW5kb3dfaGFuZGxlIChkLT5vdmVybGF5LCAoZ3VpbnRwdHIpIHdpbmRvd19oYW5kbGUpOworICAgIGdzdF92aWRlb19vdmVybGF5X3NldF9yZW5kZXJfcmVjdGFuZ2xlIChkLT5vdmVybGF5LCBhbGxvY2F0aW9uLngsCisgICAgICAgIGFsbG9jYXRpb24ueSwgYWxsb2NhdGlvbi53aWR0aCwgYWxsb2NhdGlvbi5oZWlnaHQpOworCisgICAgZ290byBkcm9wOworICB9CisKKyAgcmV0dXJuIEdTVF9CVVNfUEFTUzsKKworZHJvcDoKKyAgZ3N0X21lc3NhZ2VfdW5yZWYgKG1lc3NhZ2UpOworICByZXR1cm4gR1NUX0JVU19EUk9QOworfQorCisvKiBXZSB1c2UgdGhlICJkcmF3IiBjYWxsYmFjayB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIHNpbmsKKyAqIGJlY2F1c2UgdGhlICJjb25maWd1cmUtZXZlbnQiIGlzIG9ubHkgc2VudCB0byB0b3AtbGV2ZWwgd2lkZ2V0cy4gKi8KK3N0YXRpYyBnYm9vbGVhbgordmlkZW9fd2lkZ2V0X2RyYXdfY2IgKEd0a1dpZGdldCAqIHdpZGdldCwgY2Fpcm9fdCAqIGNyLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIERlbW9BcHAgKmQgPSB1c2VyX2RhdGE7CisgIEd0a0FsbG9jYXRpb24gYWxsb2NhdGlvbjsKKworICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9uICh3aWRnZXQsICZhbGxvY2F0aW9uKTsKKworICBnX3ByaW50ICgiZHJhd19jYiB4ICVkLCB5ICVkLCB3ICVkLCBoICVkXG4iLAorICAgICAgYWxsb2NhdGlvbi54LCBhbGxvY2F0aW9uLnksIGFsbG9jYXRpb24ud2lkdGgsIGFsbG9jYXRpb24uaGVpZ2h0KTsKKworICBpZiAoZC0+b3ZlcmxheSkgeworICAgIGdzdF92aWRlb19vdmVybGF5X3NldF9yZW5kZXJfcmVjdGFuZ2xlIChkLT5vdmVybGF5LCBhbGxvY2F0aW9uLngsCisgICAgICAgIGFsbG9jYXRpb24ueSwgYWxsb2NhdGlvbi53aWR0aCwgYWxsb2NhdGlvbi5oZWlnaHQpOworICB9CisKKyAgLyogVGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIGdzdF92aWRlb19vdmVybGF5X2V4cG9zZSgpLgorICAgKiBUaGUgd2F5bGFuZCBjb21wb3NpdG9yIGNhbiBhbHdheXMgcmUtZHJhdyB0aGUgd2luZG93CisgICAqIGJhc2VkIG9uIGl0cyBsYXN0IGNvbnRlbnRzIGlmIG5lY2Vzc2FyeSAqLworCisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKK3BsYXlpbmdfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBEZW1vQXBwICogZCkKK3sKKyAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChkLT5waXBlbGluZSwgR1NUX1NUQVRFX1BMQVlJTkcpOworfQorCitzdGF0aWMgdm9pZAorcGF1c2VkX2NsaWNrZWRfY2IgKEd0a0J1dHRvbiAqIGJ1dHRvbiwgRGVtb0FwcCAqIGQpCit7CisgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoZC0+cGlwZWxpbmUsIEdTVF9TVEFURV9QQVVTRUQpOworfQorCitzdGF0aWMgdm9pZAorcmVhZHlfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBEZW1vQXBwICogZCkKK3sKKyAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChkLT5waXBlbGluZSwgR1NUX1NUQVRFX1JFQURZKTsKK30KKworc3RhdGljIHZvaWQKK251bGxfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBEZW1vQXBwICogZCkKK3sKKyAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChkLT5waXBlbGluZSwgR1NUX1NUQVRFX05VTEwpOworfQorCitzdGF0aWMgdm9pZAorYnVpbGRfd2luZG93IChEZW1vQXBwICogZCkKK3sKKyAgR3RrQnVpbGRlciAqYnVpbGRlcjsKKyAgR3RrV2lkZ2V0ICpidXR0b247CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworCisgIGJ1aWxkZXIgPSBndGtfYnVpbGRlcl9uZXcgKCk7CisgIGlmICghZ3RrX2J1aWxkZXJfYWRkX2Zyb21fZmlsZSAoYnVpbGRlciwgIndpbmRvdy51aSIsICZlcnJvcikpIHsKKyAgICBnX2Vycm9yICgiRmFpbGVkIHRvIGxvYWQgd2luZG93LnVpOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKKyAgICBnb3RvIGV4aXQ7CisgIH0KKworICBkLT5hcHBfd2lkZ2V0ID0gR1RLX1dJREdFVCAoZ3RrX2J1aWxkZXJfZ2V0X29iamVjdCAoYnVpbGRlciwgIndpbmRvdyIpKTsKKyAgZ19vYmplY3RfcmVmIChkLT5hcHBfd2lkZ2V0KTsKKyAgZ19zaWduYWxfY29ubmVjdCAoZC0+YXBwX3dpZGdldCwgImRlc3Ryb3kiLCBHX0NBTExCQUNLIChndGtfbWFpbl9xdWl0KSwgTlVMTCk7CisKKyAgZC0+dmlkZW9fd2lkZ2V0ID0gR1RLX1dJREdFVCAoZ3RrX2J1aWxkZXJfZ2V0X29iamVjdCAoYnVpbGRlciwgInZpZGVvYXJlYSIpKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoZC0+dmlkZW9fd2lkZ2V0LCAiZHJhdyIsCisgICAgICBHX0NBTExCQUNLICh2aWRlb193aWRnZXRfZHJhd19jYiksIGQpOworCisgIGJ1dHRvbiA9IEdUS19XSURHRVQgKGd0a19idWlsZGVyX2dldF9vYmplY3QgKGJ1aWxkZXIsICJidXR0b25fcGxheWluZyIpKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoYnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0sgKHBsYXlpbmdfY2xpY2tlZF9jYiksIGQpOworCisgIGJ1dHRvbiA9IEdUS19XSURHRVQgKGd0a19idWlsZGVyX2dldF9vYmplY3QgKGJ1aWxkZXIsICJidXR0b25fcGF1c2VkIikpOworICBnX3NpZ25hbF9jb25uZWN0IChidXR0b24sICJjbGlja2VkIiwgR19DQUxMQkFDSyAocGF1c2VkX2NsaWNrZWRfY2IpLCBkKTsKKworICBidXR0b24gPSBHVEtfV0lER0VUIChndGtfYnVpbGRlcl9nZXRfb2JqZWN0IChidWlsZGVyLCAiYnV0dG9uX3JlYWR5IikpOworICBnX3NpZ25hbF9jb25uZWN0IChidXR0b24sICJjbGlja2VkIiwgR19DQUxMQkFDSyAocmVhZHlfY2xpY2tlZF9jYiksIGQpOworCisgIGJ1dHRvbiA9IEdUS19XSURHRVQgKGd0a19idWlsZGVyX2dldF9vYmplY3QgKGJ1aWxkZXIsICJidXR0b25fbnVsbCIpKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoYnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0sgKG51bGxfY2xpY2tlZF9jYiksIGQpOworCisgIGd0a193aWRnZXRfc2hvd19hbGwgKGQtPmFwcF93aWRnZXQpOworCitleGl0OgorICBnX29iamVjdF91bnJlZiAoYnVpbGRlcik7Cit9CisKK2ludAorbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICBEZW1vQXBwICpkOworICBHT3B0aW9uQ29udGV4dCAqY29udGV4dDsKKyAgR3N0QnVzICpidXM7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworCisgIGd0a19pbml0ICgmYXJnYywgJmFyZ3YpOworICBnc3RfaW5pdCAoJmFyZ2MsICZhcmd2KTsKKworICBjb250ZXh0ID0gZ19vcHRpb25fY29udGV4dF9uZXcgKCItIHdheWxhbmRzaW5rIGd0ayBkZW1vIik7CisgIGdfb3B0aW9uX2NvbnRleHRfYWRkX21haW5fZW50cmllcyAoY29udGV4dCwgZW50cmllcywgTlVMTCk7CisgIGlmICghZ19vcHRpb25fY29udGV4dF9wYXJzZSAoY29udGV4dCwgJmFyZ2MsICZhcmd2LCAmZXJyb3IpKSB7CisgICAgZ19wcmludGVyciAoIm9wdGlvbiBwYXJzaW5nIGZhaWxlZDogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIGQgPSBnX3NsaWNlX25ldzAgKERlbW9BcHApOworICBidWlsZF93aW5kb3cgKGQpOworCisgIGlmIChhcmdjID4gMSkgeworICAgIGQtPmFyZ3YgPSBhcmd2OworICAgIGQtPmN1cnJlbnRfdXJpID0gMTsKKworICAgIGQtPnBpcGVsaW5lID0gZ3N0X3BhcnNlX2xhdW5jaCAoInBsYXliaW4gdmlkZW8tc2luaz13YXlsYW5kc2luayIsIE5VTEwpOworICAgIGdfb2JqZWN0X3NldCAoZC0+cGlwZWxpbmUsICJ1cmkiLCBhcmd2W2QtPmN1cnJlbnRfdXJpXSwgTlVMTCk7CisKKyAgICAvKiBlbmFibGUgbG9vcGluZyAqLworICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGQtPnBpcGVsaW5lLCAiYWJvdXQtdG8tZmluaXNoIiwKKyAgICAgICAgR19DQUxMQkFDSyAob25fYWJvdXRfdG9fZmluaXNoKSwgZCk7CisgIH0gZWxzZSB7CisgICAgaWYgKGxpdmUpIHsKKyAgICAgIGQtPnBpcGVsaW5lID0gZ3N0X3BhcnNlX2xhdW5jaCAoInZpZGVvdGVzdHNyYyBwYXR0ZXJuPTE4ICIKKyAgICAgICAgICAiYmFja2dyb3VuZC1jb2xvcj0weDAwMDA2MkZGIGlzLWxpdmU9dHJ1ZSAhIHdheWxhbmRzaW5rIiwgTlVMTCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGQtPnBpcGVsaW5lID0gZ3N0X3BhcnNlX2xhdW5jaCAoInZpZGVvdGVzdHNyYyBwYXR0ZXJuPTE4ICIKKyAgICAgICAgICAiYmFja2dyb3VuZC1jb2xvcj0weDAwMDA2MkZGICEgd2F5bGFuZHNpbmsiLCBOVUxMKTsKKyAgICB9CisgIH0KKworICBidXMgPSBnc3RfcGlwZWxpbmVfZ2V0X2J1cyAoR1NUX1BJUEVMSU5FIChkLT5waXBlbGluZSkpOworICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2ggKGJ1cyk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKGJ1cywgIm1lc3NhZ2U6OmVycm9yIiwgR19DQUxMQkFDSyAoZXJyb3JfY2IpLCBkKTsKKyAgZ3N0X2J1c19zZXRfc3luY19oYW5kbGVyIChidXMsIGJ1c19zeW5jX2hhbmRsZXIsIGQsIE5VTEwpOworICBnc3Rfb2JqZWN0X3VucmVmIChidXMpOworCisgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoZC0+cGlwZWxpbmUsIEdTVF9TVEFURV9QTEFZSU5HKTsKKworICBndGtfbWFpbiAoKTsKKworICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKGQtPnBpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGQtPnBpcGVsaW5lKTsKKyAgZ19vYmplY3RfdW5yZWYgKGQtPmFwcF93aWRnZXQpOworICBnX3NsaWNlX2ZyZWUgKERlbW9BcHAsIGQpOworCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvd2luZG93LnVpIGIvdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvd2luZG93LnVpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNmNmODIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9leGFtcGxlcy93YXlsYW5kc2luay93aW5kb3cudWkKQEAgLTAsMCArMSw5OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gR2VuZXJhdGVkIHdpdGggZ2xhZGUgMy4xOC4yIC0tPgorPGludGVyZmFjZT4KKyAgPHJlcXVpcmVzIGxpYj0iZ3RrKyIgdmVyc2lvbj0iMy4wIi8+CisgIDxvYmplY3QgY2xhc3M9Ikd0a1dpbmRvdyIgaWQ9IndpbmRvdyI+CisgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgIDxwcm9wZXJ0eSBuYW1lPSJ0aXRsZSIgdHJhbnNsYXRhYmxlPSJ5ZXMiPkdTdHJlYW1lciBXYXlsYW5kIEdUSyBEZW1vPC9wcm9wZXJ0eT4KKyAgICA8Y2hpbGQ+CisgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtCb3giIGlkPSJib3giPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im9yaWVudGF0aW9uIj52ZXJ0aWNhbDwvcHJvcGVydHk+CisgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtFdmVudEJveCIgaWQ9InZpZGVvYXJlYSI+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0id2lkdGhfcmVxdWVzdCI+NDAwPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoZWlnaHRfcmVxdWVzdCI+MzAwPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhcHBfcGFpbnRhYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJkb3VibGVfYnVmZmVyZWQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2ZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPHBsYWNlaG9sZGVyLz4KKyAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjA8L3Byb3BlcnR5PgorICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgPGNoaWxkPgorICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0J1dHRvbkJveCIgaWQ9ImJ1dHRvbmJveCI+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGF5b3V0X3N0eWxlIj5jZW50ZXI8L3Byb3BlcnR5PgorICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtCdXR0b24iIGlkPSJidXR0b25fcGxheWluZyI+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+UExBWUlORzwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZWNlaXZlc19kZWZhdWx0Ij5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQnV0dG9uIiBpZD0iYnV0dG9uX3BhdXNlZCI+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+UEFVU0VEPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlY2VpdmVzX2RlZmF1bHQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjE8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtCdXR0b24iIGlkPSJidXR0b25fcmVhZHkiPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlJFQURZPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlY2VpdmVzX2RlZmF1bHQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjI8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtCdXR0b24iIGlkPSJidXR0b25fbnVsbCI+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+TlVMTDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZWNlaXZlc19kZWZhdWx0Ij5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4zPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MTwvcHJvcGVydHk+CisgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICA8L2NoaWxkPgorICAgICAgPC9vYmplY3Q+CisgICAgPC9jaGlsZD4KKyAgPC9vYmplY3Q+Cis8L2ludGVyZmFjZT4KZGlmZiAtLWdpdCBhL3Rlc3RzL2ZpbGVzL01ha2VmaWxlLmFtIGIvdGVzdHMvZmlsZXMvTWFrZWZpbGUuYW0KaW5kZXggMjgwNzYxMi4uMzU5ZDYwMSAxMDA2NDQKLS0tIGEvdGVzdHMvZmlsZXMvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvZmlsZXMvTWFrZWZpbGUuYW0KQEAgLTEsNyArMSw0IEBACiBFWFRSQV9ESVNUID0gXAogCWJhcmNvZGUucG5nIFwKIAlibHVlLXNxdWFyZS5wbmcgXAotCWNicl9zdHJlYW0ubXAzIFwKLQlzMTZiZS1pZDN2Mi5haWZmIFwKLQlzdHJlYW0ubXAyIFwKLQl2YnJfc3RyZWFtLm1wMworCXMxNmJlLWlkM3YyLmFpZmYKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZpbGVzL01ha2VmaWxlLmluIGIvdGVzdHMvZmlsZXMvTWFrZWZpbGUuaW4KaW5kZXggNzU1MDQ4NS4uZjBiYTY0YiAxMDA2NDQKLS0tIGEvdGVzdHMvZmlsZXMvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZmlsZXMvTWFrZWZpbGUuaW4KQEAgLTExNCwxNiArMTE0LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0xODgsNiArMTg3LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yMjUsNiArMjI2LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yMzMsNyArMjM2LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMjUyLDggKzI1NCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0yNzAsMTYgKzI3MywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zMDUsNiArMzA5LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzMwLDYgKzMzNiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQzMSw2ICs0MzksNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNDQ0LDggKzQ1Myw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTQ2MSw2ICs0NjgsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTE4LDE2ICs1MjcsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC01NzksNiArNTkwLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTU4OSw2ICs2MDEsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC01OTgsNiArNjExLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTYzNSw3ICs2NTAsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTY3OCwxMCArNjkyLDcgQEAKIEVYVFJBX0RJU1QgPSBcCiAJYmFyY29kZS5wbmcgXAogCWJsdWUtc3F1YXJlLnBuZyBcCi0JY2JyX3N0cmVhbS5tcDMgXAotCXMxNmJlLWlkM3YyLmFpZmYgXAotCXN0cmVhbS5tcDIgXAotCXZicl9zdHJlYW0ubXAzCisJczE2YmUtaWQzdjIuYWlmZgogCiBhbGw6IGFsbC1hbQogCmRpZmYgLS1naXQgYS90ZXN0cy9maWxlcy9jYnJfc3RyZWFtLm1wMyBiL3Rlc3RzL2ZpbGVzL2Nicl9zdHJlYW0ubXAzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWE1YzQzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL2ZpbGVzL2Nicl9zdHJlYW0ubXAzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdHMvZmlsZXMvc3RyZWFtLm1wMiBiL3Rlc3RzL2ZpbGVzL3N0cmVhbS5tcDIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNmU5MDAuLjAwMDAwMDAKLS0tIGEvdGVzdHMvZmlsZXMvc3RyZWFtLm1wMgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZpbGVzL3Zicl9zdHJlYW0ubXAzIGIvdGVzdHMvZmlsZXMvdmJyX3N0cmVhbS5tcDMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZmMzOGIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvZmlsZXMvdmJyX3N0cmVhbS5tcDMKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9pY2xlcy9NYWtlZmlsZS5pbiBiL3Rlc3RzL2ljbGVzL01ha2VmaWxlLmluCmluZGV4IGJjODRhNjAuLmQwNTUyYTQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ljbGVzL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2ljbGVzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQ2LDYgKzI0NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjgzLDYgKzI4NCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkxLDcgKzI5NCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxMCw4ICszMTIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzI4LDE2ICszMzEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzYzLDYgKzM2Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4OCw2ICszOTQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00ODksNiArNDk3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwMiw4ICs1MTEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MTksNiArNTI2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3NiwxNiArNTg1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM3LDYgKzY0OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDcsNiArNjU5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU2LDYgKzY2OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTMsNyArNzA4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZS5pbiBiL3Rvb2xzL01ha2VmaWxlLmluCmluZGV4IDEyZGJhZGUuLjY1YWM2ZTAgMTAwNjQ0Ci0tLSBhL3Rvb2xzL01ha2VmaWxlLmluCisrKyBiL3Rvb2xzL01ha2VmaWxlLmluCkBAIC0xMTQsMTYgKzExNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMTg4LDYgKzE4Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjI1LDYgKzIyNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjMzLDcgKzIzNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTI1Miw4ICsyNTQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMjcwLDE2ICsyNzMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzA1LDYgKzMwOSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTMzMCw2ICszMzYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00MzEsNiArNDM5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTQ0NCw4ICs0NTMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC00NjEsNiArNDY4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTUxOCwxNiArNTI3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNTc5LDYgKzU5MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC01ODksNiArNjAxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNTk4LDYgKzYxMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02MzUsNyArNjUwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90b29scy9nc3QtYXBwLW1ha2VyIGIvdG9vbHMvZ3N0LWFwcC1tYWtlcgppbmRleCA3ODZjZDY0Li5mM2MzZDFmIDEwMDc1NQotLS0gYS90b29scy9nc3QtYXBwLW1ha2VyCisrKyBiL3Rvb2xzL2dzdC1hcHAtbWFrZXIKQEAgLTE1MSw2ICsxNTEsOCBAQAogICBnX29wdGlvbl9jb250ZXh0X2FkZF9ncm91cCAoY29udGV4dCwgZ3N0X2luaXRfZ2V0X29wdGlvbl9ncm91cCAoKSk7CiAgIGlmICghZ19vcHRpb25fY29udGV4dF9wYXJzZSAoY29udGV4dCwgJmFyZ2MsICZhcmd2LCAmZXJyb3IpKSB7CiAgICAgZ19wcmludCAoIm9wdGlvbiBwYXJzaW5nIGZhaWxlZDogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworICAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY29udGV4dCk7CiAgICAgZXhpdCAoMSk7CiAgIH0KICAgZ19vcHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKQEAgLTIyMyw2ICsyMjUsNyBAQAogCiAgIGlmIChlcnJvcikgewogICAgIGdfcHJpbnQoInBpcGVsaW5lIHBhcnNpbmcgZXJyb3I6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKICAgICBnc3Rfb2JqZWN0X3VucmVmIChwaXBlbGluZSk7CiAgICAgcmV0dXJuOwogICB9CkBAIC0yNjIsNiArMjY1LDcgQEAKIAogICBpZiAoZXJyb3IpIHsKICAgICBnX3ByaW50KCJwaXBlbGluZSBwYXJzaW5nIGVycm9yOiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CiAgICAgZ3N0X29iamVjdF91bnJlZiAocGlwZWxpbmUpOwogICAgIHJldHVybjsKICAgfQpAQCAtMzc4LDYgKzM4Miw3IEBACiAKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IgKG1lc3NhZ2UsICZlcnJvciwgJmRlYnVnKTsKICAgICAgICAgZ3N0X3JlcGxhY2VfaGFuZGxlX2Vycm9yIChyZXBsYWNlLCBlcnJvciwgZGVidWcpOworICAgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9XQVJOSU5HOgpAQCAtMzg3LDYgKzM5Miw3IEBACiAKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2Vfd2FybmluZyAobWVzc2FnZSwgJmVycm9yLCAmZGVidWcpOwogICAgICAgICBnc3RfcmVwbGFjZV9oYW5kbGVfd2FybmluZyAocmVwbGFjZSwgZXJyb3IsIGRlYnVnKTsKKyAgICAgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX01FU1NBR0VfSU5GTzoKQEAgLTM5Niw2ICs0MDIsNyBAQAogCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2luZm8gKG1lc3NhZ2UsICZlcnJvciwgJmRlYnVnKTsKICAgICAgICAgZ3N0X3JlcGxhY2VfaGFuZGxlX2luZm8gKHJlcGxhY2UsIGVycm9yLCBkZWJ1Zyk7CisgICAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9NRVNTQUdFX1RBRzoKZGlmZiAtLWdpdCBhL3Rvb2xzL2dzdC1lbGVtZW50LW1ha2VyIGIvdG9vbHMvZ3N0LWVsZW1lbnQtbWFrZXIKaW5kZXggZmFjYjI0Mi4uY2VmZDY0YSAxMDA3NTUKLS0tIGEvdG9vbHMvZ3N0LWVsZW1lbnQtbWFrZXIKKysrIGIvdG9vbHMvZ3N0LWVsZW1lbnQtbWFrZXIKQEAgLTExNiw3ICsxMTYsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgZmFrZXNyYyAhICRyZXBsYWNlICEgRklYTUUgISBmYWtlc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmFrZXNyYyAhICRyZXBsYWNlICEgRklYTUUgISBmYWtlc2luawogICogXXwKICAqIEZJWE1FIERlc2NyaWJlIHdoYXQgdGhlIHBpcGVsaW5lIGRvZXMuCiAgKiA8L3JlZnNlY3QyPgpkaWZmIC0tZ2l0IGEvd2luMzIvTUFOSUZFU1QgYi93aW4zMi9NQU5JRkVTVAppbmRleCBjZmJhM2IzLi4zNWM2NDQzIDEwMDY0NAotLS0gYS93aW4zMi9NQU5JRkVTVAorKysgYi93aW4zMi9NQU5JRkVTVApAQCAtMSw5ICsxLDIgQEAKIHdpbjMyL01BTklGRVNUCiB3aW4zMi9jb21tb24vY29uZmlnLmgKLXdpbjMyL3ZzNi9nc3RfcGx1Z2luc19iYWQuZHN3Ci13aW4zMi92czYvbGliZ3N0ZHNob3cuZHNwCi13aW4zMi92czYvbGliZ3N0ZHNob3dkZWN3cmFwcGVyLmRzcAotd2luMzIvdnM2L2xpYmdzdGZsdi5kc3AKLXdpbjMyL3ZzNi9saWJnc3RtcGVndmlkZW9wYXJzZS5kc3AKLXdpbjMyL3ZzNi9saWJnc3RuZW9uLmRzcAotd2luMzIvdnM4L2dzdC1wbHVnaW5zLWJhZC5zbG4KZGlmZiAtLWdpdCBhL3dpbjMyL2NvbW1vbi9jb25maWcuaCBiL3dpbjMyL2NvbW1vbi9jb25maWcuaAppbmRleCA5ZWE1MmQ0Li5jZTcyM2M3IDEwMDY0NAotLS0gYS93aW4zMi9jb21tb24vY29uZmlnLmgKKysrIGIvd2luMzIvY29tbW9uL2NvbmZpZy5oCkBAIC0zMSwxMiArMzEsNiBAQAogICAgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkLiAqLwogI3VuZGVmIEVOQUJMRV9OTFMKIAotLyogVGhlIHggaW4gMi54ICovCi0jdW5kZWYgRkFBRDJfTUlOT1JfVkVSU0lPTgotCi0vKiBEZWZpbmUgaWYgQUFDIGlzIHVzaW5nIG5ldyBhcGkgcHJlZml4ICovCi0jdW5kZWYgRkFBRF9JU19ORUFBQwotCiAvKiBnZXR0ZXh0IHBhY2thZ2UgbmFtZSAqLwogI2RlZmluZSBHRVRURVhUX1BBQ0tBR0UgImdzdC1wbHVnaW5zLWJhZC0xLjAiCiAKQEAgLTU1LDEyICs0OSwxOCBAQAogLyogR1N0cmVhbWVyIEFQSSBWZXJzaW9uICovCiAjZGVmaW5lIEdTVF9BUElfVkVSU0lPTiAiMS4wIgogCisvKiBEZWZpbmUgaWYgZXh0cmEgcnVudGltZSBjaGVja3Mgc2hvdWxkIGJlIGVuYWJsZWQgKi8KKyN1bmRlZiBHU1RfRU5BQkxFX0VYVFJBX0NIRUNLUworCiAvKiBFeHRyYSBwbGF0Zm9ybSBzcGVjaWZpYyBwbHVnaW4gc3VmZml4ICovCiAjdW5kZWYgR1NUX0VYVFJBX01PRFVMRV9TVUZGSVgKIAogLyogRGVmaW5lZCBpZiBnY292IGlzIGVuYWJsZWQgdG8gZm9yY2UgYSByZWJ1aWxkIGR1ZSB0byBjb25maWcuaCBjaGFuZ2luZyAqLwogI3VuZGVmIEdTVF9HQ09WX0VOQUJMRUQKIAorLyogRE1BQlVGIGF2YWlsYWJsZSBmb3IgZ2wgcGx1Z2lucyAqLworI3VuZGVmIEdTVF9HTF9IQVZFX0RNQUJVRgorCiAvKiBFR0wgbW9kdWxlIG5hbWUgKi8KICN1bmRlZiBHU1RfR0xfTElCRUdMX01PRFVMRV9OQU1FCiAKQEAgLTg5LDcgKzg5LDcgQEAKICNkZWZpbmUgR1NUX1BBQ0tBR0VfT1JJR0lOICJVbmtub3duIHBhY2thZ2Ugb3JpZ2luIgogCiAvKiBHU3RyZWFtZXIgcGFja2FnZSByZWxlYXNlIGRhdGUvdGltZSBmb3IgcGx1Z2lucyBhcyBZWVlZLU1NLUREICovCi0jZGVmaW5lIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUUgIjIwMTYtMDEtMjAiCisjZGVmaW5lIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUUgIjIwMTYtMDMtMTUiCiAKIC8qIERlZmluZSBpZiBzdGF0aWMgcGx1Z2lucyBzaG91bGQgYmUgYnVpbHQgKi8KICN1bmRlZiBHU1RfUExVR0lOX0JVSUxEX1NUQVRJQwpAQCAtMjM4LDcgKzIzOCw3IEBACiAvKiBEZWZpbmUgdG8gZW5hYmxlIEFBQyBlbmNvZGVyIHBsdWctaW4gKHVzZWQgYnkgZmFhYykuICovCiAjdW5kZWYgSEFWRV9GQUFDCiAKLS8qIERlZmluZSB0byBlbmFibGUgQUFDIGRlY29kZXIgcGx1Zy1pbiAodXNlZCBieSBmYWFkKS4gKi8KKy8qIERlZmluZSB0byBlbmFibGUgRkFBRDIgQUFDIGRlY29kZXIgcGx1Zy1pbiAodXNlZCBieSBmYWFkKS4gKi8KICN1bmRlZiBIQVZFX0ZBQUQKIAogLyogRGVmaW5lIHRvIGVuYWJsZSBsaW51eCBmcmFtZWJ1ZmZlciAodXNlZCBieSBmYmRldnNpbmspLiAqLwpAQCAtMjc0LDYgKzI3NCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgR0xlZ2xJbWFnZU9FUycuICovCiAjdW5kZWYgSEFWRV9HTEVHTElNQUdFT0VTCiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBHTGludDY0Jy4gKi8KKyN1bmRlZiBIQVZFX0dMSU5UNjQKKwogLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYEdMaW50cHRyJy4gKi8KICN1bmRlZiBIQVZFX0dMSU5UUFRSCiAKQEAgLTI5NSw5ICsyOTgsNiBAQAogLyogVXNlIGdyYXBoZW5lICovCiAjdW5kZWYgSEFWRV9HUkFQSEVORQogCi0vKiBEZWZpbmUgdG8gZW5hYmxlIEdTZXR0aW5ncyBwbHVnaW4gKHVzZWQgYnkgZ3NldHRpbmdzKS4gKi8KLSN1bmRlZiBIQVZFX0dTRVRUSU5HUwotCiAvKiBEZWZpbmUgdG8gZW5hYmxlIEdTTSBsaWJyYXJ5ICh1c2VkIGJ5IGdzbWVuYyBnc21kZWMpLiAqLwogI3VuZGVmIEhBVkVfR1NNCiAKQEAgLTM3OSw5ICszNzksNiBAQAogLyogRGVmaW5lIHRvIGVuYWJsZSBtcGVnMmVuYyAodXNlZCBieSBtcGVnMmVuYykuICovCiAjdW5kZWYgSEFWRV9NUEVHMkVOQwogCi0vKiBEZWZpbmUgdG8gZW5hYmxlIG1wZzEyMyBhdWRpbyBkZWNvZGVyICh1c2VkIGJ5IG1wZzEyMykuICovCi0jdW5kZWYgSEFWRV9NUEcxMjMKLQogLyogRGVmaW5lIHRvIGVuYWJsZSBtcGxleCAodXNlZCBieSBtcGxleCkuICovCiAjdW5kZWYgSEFWRV9NUExFWAogCkBAIC00MDksNiArNDA2LDEyIEBACiAvKiBEZWZpbmUgaWYgbmV0dGxlIGlzIGF2YWlsYWJsZSAqLwogI3VuZGVmIEhBVkVfTkVUVExFCiAKKy8qIERlZmluZSB0byBlbmFibGUgTlZJRElBIEVuY29kZSBBUEkgKHVzZWQgYnkgbnZlbmMpLiAqLworI3VuZGVmIEhBVkVfTlZFTkMKKworLyogTlZFTkMgR1N0cmVhbWVyIE9wZW5HTCBzdXBwb3J0IGF2YWlsYWJsZSAqLworI3VuZGVmIEhBVkVfTlZFTkNfR1NUX0dMCisKIC8qIERlZmluZSB0byBlbmFibGUgb2ZhIHBsdWdpbnMgKHVzZWQgYnkgb2ZhKS4gKi8KICN1bmRlZiBIQVZFX09GQQogCkBAIC01MDEsNiArNTA0LDE1IEBACiAvKiBEZWZpbmUgdG8gZW5hYmxlIFF0IGVsZW1lbnRzICh1c2VkIGJ5IHF0KS4gKi8KICN1bmRlZiBIQVZFX1FUCiAKKy8qIERlZmluZSBpZiBRdCBBbmRyb2lkIGludGVncmF0aW9uIGlzIGluc3RhbGxlZCAqLworI3VuZGVmIEhBVkVfUVRfQU5EUk9JRAorCisvKiBEZWZpbmUgaWYgUXQgaU9TIGludGVncmF0aW9uIGlzIGluc3RhbGxlZCAqLworI3VuZGVmIEhBVkVfUVRfSU9TCisKKy8qIERlZmluZSBpZiBRdCBNYWMgaW50ZWdyYXRpb24gaXMgaW5zdGFsbGVkICovCisjdW5kZWYgSEFWRV9RVF9NQUMKKwogLyogRGVmaW5lIGlmIFF0IFdheWxhbmQgaW50ZWdyYXRpb24gaXMgaW5zdGFsbGVkICovCiAjdW5kZWYgSEFWRV9RVF9XQVlMQU5ECiAKQEAgLTUxNiw5ICs1MjgsNiBAQAogLyogRGVmaW5lIHRvIGVuYWJsZSByc3ZnIGRlY29kZXIgKHVzZWQgYnkgcnN2ZykuICovCiAjdW5kZWYgSEFWRV9SU1ZHCiAKLS8qIEhhdmUgUlNWRyAyLjM2LjIgb3IgbmV3ZXIgKi8KLSN1bmRlZiBIQVZFX1JTVkdfMl8zNl8yCi0KIC8qIERlZmluZSB0byBlbmFibGUgcnRtcCBsaWJyYXJ5ICh1c2VkIGJ5IHJ0bXApLiAqLwogI3VuZGVmIEhBVkVfUlRNUAogCkBAIC02MDAsNiArNjA5LDkgQEAKIC8qIERlZmluZSB0byBlbmFibGUgdGltaWRpdHkgbWlkaSBzb2Z0IHN5bnRoIHBsdWdpbiAodXNlZCBieSB0aW1pZGl0eSkuICovCiAjdW5kZWYgSEFWRV9USU1JRElUWQogCisvKiBEZWZpbmUgdG8gZW5hYmxlIHRpbnlhbHNhICh1c2VkIGJ5IHRpbnlhbHNhKS4gKi8KKyN1bmRlZiBIQVZFX1RJTllBTFNBCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVU5JU1REX0gKIApAQCAtNjI3LDYgKzYzOSw5IEBACiAvKiBEZWZpbmUgdG8gZW5hYmxlIHZvLWFtcndiZW5jIGxpYnJhcnkgKHVzZWQgYnkgdm8tYW1yd2JlbmMpLiAqLwogI3VuZGVmIEhBVkVfVk9BTVJXQkVOQwogCisvKiBEZWZpbmUgdG8gZW5hYmxlIFZ1bGthbiBlbGVtZW50cyAodXNlZCBieSB2dWxrYW4pLiAqLworI3VuZGVmIEhBVkVfVlVMS0FOCisKIC8qIERlZmluZSB0byBlbmFibGUgV0FTQVBJIHBsdWctaW4gKHVzZWQgYnkgd2FzYXBpKS4gKi8KICN1bmRlZiBIQVZFX1dBU0FQSQogCkBAIC02OTQsOCArNzA5LDcgQEAKIC8qIGdldHRleHQgbG9jYWxlIGRpciAqLwogI2RlZmluZSBMT0NBTEVESVIgUFJFRklYICJcXHNoYXJlXFxsb2NhbGUiCiAKLS8qIERlZmluZSB0byB0aGUgc3ViLWRpcmVjdG9yeSBpbiB3aGljaCBsaWJ0b29sIHN0b3JlcyB1bmluc3RhbGxlZCBsaWJyYXJpZXMuCi0gICAqLworLyogRGVmaW5lIHRvIHRoZSBzdWItZGlyZWN0b3J5IHdoZXJlIGxpYnRvb2wgc3RvcmVzIHVuaW5zdGFsbGVkIGxpYnJhcmllcy4gKi8KICN1bmRlZiBMVF9PQkpESVIKIAogLyogRGVmaW5lIGlmIHRoZSBvbGQgTXVzZVBhY2sgQVBJIGlzIHVzZWQgKi8KQEAgLTcxNyw3ICs3MzEsNyBAQAogI2RlZmluZSBQQUNLQUdFX05BTUUgIkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMiCiAKIC8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgIkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgMS42LjMiCisjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJHU3RyZWFtZXIgQmFkIFBsdWctaW5zIDEuNy45MSIKIAogLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwogI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgImdzdC1wbHVnaW5zLWJhZCIKQEAgLTcyNiw3ICs3NDAsNyBAQAogI3VuZGVmIFBBQ0tBR0VfVVJMCiAKIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCi0jZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMS42LjMiCisjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMS43LjkxIgogCiAvKiBkaXJlY3Rvcnkgd2hlcmUgcGx1Z2lucyBhcmUgbG9jYXRlZCAqLwogI2lmZGVmIF9ERUJVRwpAQCAtNzcwLDcgKzc4NCw3IEBACiAjdW5kZWYgVVNFX0VHTF9SUEkKIAogLyogVmVyc2lvbiBudW1iZXIgb2YgcGFja2FnZSAqLwotI2RlZmluZSBWRVJTSU9OICIxLjYuMyIKKyNkZWZpbmUgVkVSU0lPTiAiMS43LjkxIgogCiAvKiBEZWZpbmUgV09SRFNfQklHRU5ESUFOIHRvIDEgaWYgeW91ciBwcm9jZXNzb3Igc3RvcmVzIHdvcmRzIHdpdGggdGhlIG1vc3QKICAgIHNpZ25pZmljYW50IGJ5dGUgZmlyc3QgKGxpa2UgTW90b3JvbGEgYW5kIFNQQVJDLCB1bmxpa2UgSW50ZWwpLiAqLwpkaWZmIC0tZ2l0IGEvd2luMzIvdnM2L2dzdF9wbHVnaW5zX2JhZC5kc3cgYi93aW4zMi92czYvZ3N0X3BsdWdpbnNfYmFkLmRzdwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmQwYzliNS4uMDAwMDAwMAotLS0gYS93aW4zMi92czYvZ3N0X3BsdWdpbnNfYmFkLmRzdworKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLU1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFdvcmtzcGFjZSBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyBXQVJOSU5HOiBETyBOT1QgRURJVCBPUiBERUxFVEUgVEhJUyBXT1JLU1BBQ0UgRklMRSENCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogImxpYmdzdGNkeGFwYXJzZSI9Ii5cbGliZ3N0Y2R4YXBhcnNlLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogImxpYmdzdGZsdiI9Ii5cbGliZ3N0Zmx2LmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogImxpYmdzdG1wZWd2aWRlb3BhcnNlIj0iLlxsaWJnc3RtcGVndmlkZW9wYXJzZS5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJsaWJnc3RuZW9uIj0iLlxsaWJnc3RuZW9uLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotR2xvYmFsOg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08Mz4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQpkaWZmIC0tZ2l0IGEvd2luMzIvdnM2L2xpYmdzdGRzaG93LmRzcCBiL3dpbjMyL3ZzNi9saWJnc3Rkc2hvdy5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5OTE3NDkuLjAwMDAwMDAKLS0tIGEvd2luMzIvdnM2L2xpYmdzdGRzaG93LmRzcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NSArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9ImxpYmdzdGRzaG93IiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHgwMTAyDQotDQotQ0ZHPWxpYmdzdGRzaG93IC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgImxpYmdzdGRzaG93Lm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJsaWJnc3Rkc2hvdy5tYWsiIENGRz0ibGliZ3N0ZHNob3cgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAibGliZ3N0ZHNob3cgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSAibGliZ3N0ZHNob3cgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgDQotDQotIyBCZWdpbiBQcm9qZWN0DQotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCi0jIFBST1AgU2NjX1Byb2pOYW1lICIiDQotIyBQUk9QIFNjY19Mb2NhbFBhdGggIiINCi1DUFA9Y2wuZXhlDQotTVRMPW1pZGwuZXhlDQotUlNDPXJjLmV4ZQ0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdGRzaG93IC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NURFNIT1dfRVhQT1JUUyIgL1l1InN0ZGFmeC5oIiAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTVQgL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMSUJEU0hPV19FWFBPUlRTIiAvWXUic3RkYWZ4LmgiIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwYyAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwYyAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIGxpYmdzdHJlYW1lci0wLjEwLmxpYiBnbGliLTIuMC5saWIgQzpcRFg5MFNES1xTYW1wbGVzXEMrK1xEaXJlY3RTaG93XEJhc2VDbGFzc2VzXFJlbGVhc2Vcc3RybWJhc2UubGliIHF1YXJ0ei5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIGNvbWRsZzMyLmxpYiBvbGUzMi5saWIgd2lubW0ubGliIG1zYWNtMzIubGliIG9sZXBybzMyLmxpYiB1dWlkLmxpYiBzdHJtaWlkcy5saWIgYWR2YXBpMzIubGliIG9sZXBybzMyLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4NiAvb3V0OiJSZWxlYXNlL2xpYmdzdGRzaG93LTAuMTAuZGxsIg0KLSMgU1VCVFJBQ1QgTElOSzMyIC9ub2RlZmF1bHRsaWINCi0jIEJlZ2luIFNwZWNpYWwgQnVpbGQgVG9vbA0KLVRhcmdldFBhdGg9LlxSZWxlYXNlXGxpYmdzdGRzaG93LTAuMTAuZGxsDQotU09VUkNFPSIkKElucHV0UGF0aCkiDQotUG9zdEJ1aWxkX0NtZHM9Y29weSAvWSAkKFRhcmdldFBhdGgpIGM6XGdzdHJlYW1lclxiaW4NCi0jIEVuZCBTcGVjaWFsIEJ1aWxkIFRvb2wNCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibGliZ3N0ZHNob3cgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxJQkdTVERTSE9XX0VYUE9SVFMiIC9ZdSJzdGRhZnguaCIgL0ZEIC9HWiAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NVGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxJQkRTSE9XX0VYUE9SVFMiIC9ZdSJzdGRhZnguaCIgL0ZEIC9HWiAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwYyAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwYyAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIGxpYmdzdHJlYW1lci0wLjEwLmxpYiBnbGliLTIuMEQubGliIHN0cm1iYXNkLmxpYiBxdWFydHoubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiBjb21kbGczMi5saWIgb2xlMzIubGliIHdpbm1tLmxpYiBtc2FjbTMyLmxpYiBvbGVwcm8zMi5saWIgb2xlYXV0MzIubGliIGFkdmFwaTMyLmxpYiB1dWlkLmxpYiBzdHJtaWlkcy5saWIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6IkRlYnVnL2xpYmdzdGRzaG93LTAuMTAuZGxsIiAvcGRidHlwZTpzZXB0DQotIyBTVUJUUkFDVCBMSU5LMzIgL25vZGVmYXVsdGxpYg0KLSMgQmVnaW4gU3BlY2lhbCBCdWlsZCBUb29sDQotVGFyZ2V0UGF0aD0uXERlYnVnXGxpYmdzdGRzaG93LTAuMTAuZGxsDQotU09VUkNFPSIkKElucHV0UGF0aCkiDQotUG9zdEJ1aWxkX0NtZHM9Y29weSAvWSAkKFRhcmdldFBhdGgpIGM6XGdzdHJlYW1lclxkZWJ1Z1xiaW4NCi0jIEVuZCBTcGVjaWFsIEJ1aWxkIFRvb2wNCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBUYXJnZXQNCi0NCi0jIE5hbWUgImxpYmdzdGRzaG93IC0gV2luMzIgUmVsZWFzZSINCi0jIE5hbWUgImxpYmdzdGRzaG93IC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxnc3QtbGlic1xnc3RcZHNob3dcZ3N0ZHNob3cuY3BwIg0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWCAvWWMgL1l1DQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxnc3QtbGlic1xnc3RcZHNob3dcZ3N0ZHNob3dmYWtlc2luay5jcHAiDQotIyBTVUJUUkFDVCBDUFAgL1lYIC9ZYyAvWXUNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Ii4uXC4uXGdzdC1saWJzXGdzdFxkc2hvd1xnc3Rkc2hvd2Zha2VzcmMuY3BwIg0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWCAvWWMgL1l1DQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxnc3QtbGlic1xnc3RcZHNob3dcZ3N0ZHNob3dpbnRlcmZhY2UuY3BwIg0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWCAvWWMgL1l1DQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXGNvbW1vblxsaWJnc3Rkc2hvdy5kZWYNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaDtocHA7aHh4O2htO2lubCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxnc3QtbGlic1xnc3RcZHNob3dcZ3N0ZHNob3cuaCINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Ii4uXC4uXGdzdC1saWJzXGdzdFxkc2hvd1xnc3Rkc2hvd2Zha2VzaW5rLmgiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxnc3QtbGlic1xnc3RcZHNob3dcZ3N0ZHNob3dmYWtlc3JjLmgiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxnc3QtbGlic1xnc3RcZHNob3dcZ3N0ZHNob3dpbnRlcmZhY2UuaCINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQotIyBFbmQgR3JvdXANCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvd2luMzIvdnM2L2xpYmdzdGRzaG93ZGVjd3JhcHBlci5kc3AgYi93aW4zMi92czYvbGliZ3N0ZHNob3dkZWN3cmFwcGVyLmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY2MzVkNi4uMDAwMDAwMAotLS0gYS93aW4zMi92czYvbGliZ3N0ZHNob3dkZWN3cmFwcGVyLmRzcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9ImxpYmdzdGRzaG93ZGVjd3JhcHBlciIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4MDEwMg0KLQ0KLUNGRz1saWJnc3Rkc2hvd2RlY3dyYXBwZXIgLSBXaW4zMiBEZWJ1Zw0KLSFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAibGliZ3N0ZHNob3dkZWN3cmFwcGVyLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJsaWJnc3Rkc2hvd2RlY3dyYXBwZXIubWFrIiBDRkc9ImxpYmdzdGRzaG93ZGVjd3JhcHBlciAtIFdpbjMyIERlYnVnIg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFICJsaWJnc3Rkc2hvd2RlY3dyYXBwZXIgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSAibGliZ3N0ZHNob3dkZWN3cmFwcGVyIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KLSMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJsaWJnc3Rkc2hvd2RlY3dyYXBwZXIgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVQgL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMSUJHU1REU0hPV0RFQ1dSQVBQRVJfRVhQT1JUUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9PMiAvSSAiLi4vLi4vLi4vZ3N0LXBsdWdpbnMtYmFzZS9nc3QtbGlicyIgL0kgIi4uLy4uLy4uL2dzdHJlYW1lci9saWJzIiAvSSAiLi4vY29tbW9uIiAvSSAiLi4vLi4vZ3N0LWxpYnMvZ3N0IiAvRCAiTkRFQlVHIiAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkhBVkVfQ09ORklHX0giIC9EICJDT0JKTUFDUk9TIiAvRCAiX1dJTjMyX0RDT00iIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MGMgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MGMgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBsaWJnc3Rkc2hvdy0wLjEwLmxpYiBsaWJnc3RyZWFtZXItMC4xMC5saWIgbGliZ3N0YmFzZS0wLjEwLmxpYiBsaWJnc3RhdWRpby0wLjEwLmxpYiBsaWJnc3RpbnRlcmZhY2VzLTAuMTAubGliIGdsaWItMi4wLmxpYiBnb2JqZWN0LTIuMC5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiBScGNydDQubGliIFN0cm1paWRzLmxpYiBTdHJtYmFzZC5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4NiAvbGlicGF0aDoiLi9yZWxlYXNlLyIgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdHJlYW1lci93aW4zMi92czYvcmVsZWFzZSIgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2Uvd2luMzIvdnM2L3JlbGVhc2UiDQotIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wNCi1UYXJnZXRQYXRoPS5cUmVsZWFzZVxsaWJnc3Rkc2hvd2RlY3dyYXBwZXIuZGxsDQotU09VUkNFPSIkKElucHV0UGF0aCkiDQotUG9zdEJ1aWxkX0NtZHM9Y29weSAvWSAkKFRhcmdldFBhdGgpIGM6XGdzdHJlYW1lclxsaWJcZ3N0cmVhbWVyLTAuMTANCi0jIEVuZCBTcGVjaWFsIEJ1aWxkIFRvb2wNCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibGliZ3N0ZHNob3dkZWN3cmFwcGVyIC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVRkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMSUJHU1REU0hPV0RFQ1dSQVBQRVJfRVhQT1JUUyIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0kgIi4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LWxpYnMiIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIvbGlicyIgL0kgIi4uL2NvbW1vbiIgL0kgIi4uLy4uL2dzdC1saWJzL2dzdCIgL0QgIl9ERUJVRyIgL0QgIldJTjMyIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJIQVZFX0NPTkZJR19IIiAvRCAiQ09CSk1BQ1JPUyIgL0QgIl9XSU4zMl9EQ09NIiAvWVggL0ZEIC9HWiAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwYyAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwYyAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIGxpYmdzdGRzaG93LTAuMTAubGliIGxpYmdzdHJlYW1lci0wLjEwLmxpYiBsaWJnc3RiYXNlLTAuMTAubGliIGxpYmdzdGF1ZGlvLTAuMTAubGliIGxpYmdzdGludGVyZmFjZXMtMC4xMC5saWIgZ2xpYi0yLjBELmxpYiBnb2JqZWN0LTIuMEQubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgUnBjcnQ0LmxpYiBTdHJtaWlkcy5saWIgU3RybWJhc2QubGliIHVzZXIzMi5saWIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4vZGVidWciIC9saWJwYXRoOiIuLi8uLi8uLi9nc3RyZWFtZXIvd2luMzIvdnM2L2RlYnVnIiAvbGlicGF0aDoiLi4vLi4vLi4vZ3N0LXBsdWdpbnMtYmFzZS93aW4zMi92czYvZGVidWciDQotIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wNCi1UYXJnZXRQYXRoPS5cRGVidWdcbGliZ3N0ZHNob3dkZWN3cmFwcGVyLmRsbA0KLVNPVVJDRT0iJChJbnB1dFBhdGgpIg0KLVBvc3RCdWlsZF9DbWRzPWNvcHkgL1kgJChUYXJnZXRQYXRoKSBjOlxnc3RyZWFtZXJcZGVidWdcbGliXGdzdHJlYW1lci0wLjEwDQotIyBFbmQgU3BlY2lhbCBCdWlsZCBUb29sDQotDQotIUVORElGIA0KLQ0KLSMgQmVnaW4gVGFyZ2V0DQotDQotIyBOYW1lICJsaWJnc3Rkc2hvd2RlY3dyYXBwZXIgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAibGliZ3N0ZHNob3dkZWN3cmFwcGVyIC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXHN5c1xkc2hvd2RlY3dyYXBwZXJcZ3N0ZHNob3dhdWRpb2RlYy5jDQotDQotIUlGICAiJChDRkcpIiA9PSAibGliZ3N0ZHNob3dkZWN3cmFwcGVyIC0gV2luMzIgUmVsZWFzZSINCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibGliZ3N0ZHNob3dkZWN3cmFwcGVyIC0gV2luMzIgRGVidWciDQotDQotIyBTVUJUUkFDVCBDUFAgL1lYDQotDQotIUVORElGIA0KLQ0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxzeXNcZHNob3dkZWN3cmFwcGVyXGdzdGRzaG93ZGVjd3JhcHBlci5jDQotDQotIUlGICAiJChDRkcpIiA9PSAibGliZ3N0ZHNob3dkZWN3cmFwcGVyIC0gV2luMzIgUmVsZWFzZSINCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibGliZ3N0ZHNob3dkZWN3cmFwcGVyIC0gV2luMzIgRGVidWciDQotDQotIyBTVUJUUkFDVCBDUFAgL1lYDQotDQotIUVORElGIA0KLQ0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxzeXNcZHNob3dkZWN3cmFwcGVyXGdzdGRzaG93dmlkZW9kZWMuYw0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdGRzaG93ZGVjd3JhcHBlciAtIFdpbjMyIFJlbGVhc2UiDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdGRzaG93ZGVjd3JhcHBlciAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWA0KLQ0KLSFFTkRJRiANCi0NCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaDtocHA7aHh4O2htO2lubCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXHN5c1xkc2hvd2RlY3dyYXBwZXJcZ3N0ZHNob3dhdWRpb2RlYy5oDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXHN5c1xkc2hvd2RlY3dyYXBwZXJcZ3N0ZHNob3dkZWN3cmFwcGVyLmgNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cc3lzXGRzaG93ZGVjd3JhcHBlclxnc3Rkc2hvd3ZpZGVvZGVjLmgNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQotIyBFbmQgR3JvdXANCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvd2luMzIvdnM2L2xpYmdzdGZsdi5kc3AgYi93aW4zMi92czYvbGliZ3N0Zmx2LmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMyMDdhYi4uMDAwMDAwMAotLS0gYS93aW4zMi92czYvbGliZ3N0Zmx2LmRzcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOSArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9ImxpYmdzdGZsdiIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4MDEwMg0KLQ0KLUNGRz1saWJnc3RmbHYgLSBXaW4zMiBEZWJ1Zw0KLSFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAibGliZ3N0Zmx2Lm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJsaWJnc3RmbHYubWFrIiBDRkc9ImxpYmdzdGZsdiAtIFdpbjMyIERlYnVnIg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFICJsaWJnc3RmbHYgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSAibGliZ3N0Zmx2IC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KLSMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJsaWJnc3RmbHYgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVQgL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMSUJHU1RGTFZfRVhQT1JUUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9PMiAvSSAiLi4vLi4vZ3N0LWxpYnMiIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIiIC9JICIuLi9jb21tb24iIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIvbGlicyIgL0kgIi4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LWxpYnMiIC9EICJOREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NURkxWX0VYUE9SVFMiIC9EICJIQVZFX0NPTkZJR19IIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDBjIC9kICJOREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDBjIC9kICJOREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbGliZ3N0cmVhbWVyLTAuMTAubGliIGxpYmdzdGJhc2UtMC4xMC5saWIgZ2xpYi0yLjAubGliIGdvYmplY3QtMi4wLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4NiAvbGlicGF0aDoiLi4vLi4vLi4vZ3N0cmVhbWVyL3dpbjMyL3ZzNi9yZWxlYXNlIiAvbGlicGF0aDoiLi4vLi4vLi4vZ3N0LXBsdWdpbnMtYmFzZS93aW4zMi92czYvcmVsZWFzZSIgL2xpYnBhdGg6Ii4vcmVsZWFzZSINCi0jIEJlZ2luIFNwZWNpYWwgQnVpbGQgVG9vbA0KLVRhcmdldFBhdGg9LlxSZWxlYXNlXGxpYmdzdGZsdi5kbGwNCi1TT1VSQ0U9IiQoSW5wdXRQYXRoKSINCi1Qb3N0QnVpbGRfQ21kcz1jb3B5IC9ZICQoVGFyZ2V0UGF0aCkgYzpcZ3N0cmVhbWVyXGxpYlxnc3RyZWFtZXItMC4xMA0KLSMgRW5kIFNwZWNpYWwgQnVpbGQgVG9vbA0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJsaWJnc3RmbHYgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxJQkdTVEZMVl9FWFBPUlRTIiAvWVggL0ZEIC9HWiAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vZ3N0LWxpYnMiIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIiIC9JICIuLi9jb21tb24iIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIvbGlicyIgL0kgIi4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LWxpYnMiIC9EICJfREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NURkxWX0VYUE9SVFMiIC9EICJIQVZFX0NPTkZJR19IIiAvWVggL0ZEIC9HWiAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwYyAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwYyAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIGxpYmdzdHJlYW1lci0wLjEwLmxpYiBsaWJnc3RiYXNlLTAuMTAubGliIGdsaWItMi4wRC5saWIgZ29iamVjdC0yLjBELmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vLi4vLi4vZ3N0cmVhbWVyL3dpbjMyL3ZzNi9kZWJ1ZyIgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2Uvd2luMzIvdnM2L2RlYnVnIiAvbGlicGF0aDoiLi9kZWJ1ZyINCi0jIEJlZ2luIFNwZWNpYWwgQnVpbGQgVG9vbA0KLVRhcmdldFBhdGg9LlxEZWJ1Z1xsaWJnc3RmbHYuZGxsDQotU09VUkNFPSIkKElucHV0UGF0aCkiDQotUG9zdEJ1aWxkX0NtZHM9Y29weSAvWSAkKFRhcmdldFBhdGgpIGM6XGdzdHJlYW1lclxkZWJ1Z1xsaWJcZ3N0cmVhbWVyLTAuMTANCi0jIEVuZCBTcGVjaWFsIEJ1aWxkIFRvb2wNCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBUYXJnZXQNCi0NCi0jIE5hbWUgImxpYmdzdGZsdiAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJsaWJnc3RmbHYgLSBXaW4zMiBEZWJ1ZyINCi0jIEJlZ2luIEdyb3VwICJTb3VyY2UgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ig0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cZ3N0XGZsdlxnc3RmbHZkZW11eC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGdzdFxmbHZcZ3N0Zmx2cGFyc2UuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cZ3N0XGZsdlxnc3RmbHZkZW11eC5oDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGdzdFxmbHZcZ3N0Zmx2cGFyc2UuaA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJSZXNvdXJjZSBGaWxlcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCi0jIEVuZCBHcm91cA0KLSMgRW5kIFRhcmdldA0KLSMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS93aW4zMi92czYvbGliZ3N0bXBlZ3ZpZGVvcGFyc2UuZHNwIGIvd2luMzIvdnM2L2xpYmdzdG1wZWd2aWRlb3BhcnNlLmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYzN2U0MC4uMDAwMDAwMAotLS0gYS93aW4zMi92czYvbGliZ3N0bXBlZ3ZpZGVvcGFyc2UuZHNwCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gUHJvamVjdCBGaWxlIC0gTmFtZT0ibGliZ3N0bXBlZ3ZpZGVvcGFyc2UiIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDAxMDINCi0NCi1DRkc9bGliZ3N0bXBlZ3ZpZGVvcGFyc2UgLSBXaW4zMiBEZWJ1Zw0KLSFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAibGliZ3N0bXBlZ3ZpZGVvcGFyc2UubWFrIi4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgImxpYmdzdG1wZWd2aWRlb3BhcnNlLm1hayIgQ0ZHPSJsaWJnc3RtcGVndmlkZW9wYXJzZSAtIFdpbjMyIERlYnVnIg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFICJsaWJnc3RtcGVndmlkZW9wYXJzZSAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFICJsaWJnc3RtcGVndmlkZW9wYXJzZSAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgIiINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiIg0KLUNQUD1jbC5leGUNCi1NVEw9bWlkbC5leGUNCi1SU0M9cmMuZXhlDQotDQotIUlGICAiJChDRkcpIiA9PSAibGliZ3N0bXBlZ3ZpZGVvcGFyc2UgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVQgL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMSUJHU1RNUEVHVklERU9QQVJTRV9FWFBPUlRTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvTzIgL0kgIi4vIiAvSSAiLi4vLi4vZ3N0LWxpYnMiIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIiIC9JICIuLi9jb21tb24iIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIvbGlicyIgL0kgIi4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LWxpYnMiIC9EICJOREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NUTVBFR1ZJREVPUEFSU0VfRVhQT1JUUyIgL0QgIkhBVkVfQ09ORklHX0giIC9GRCAvYw0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWA0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwYyAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwYyAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIGxpYmdzdHJpZmYtMC4xMC5saWIgbGliZ3N0cmVhbWVyLTAuMTAubGliIGxpYmdzdGJhc2UtMC4xMC5saWIgZ2xpYi0yLjAubGliIGdvYmplY3QtMi4wLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4NiAvbGlicGF0aDoiLi4vLi4vLi4vZ3N0cmVhbWVyL3dpbjMyL3ZzNi9yZWxlYXNlIiAvbGlicGF0aDoiLi9yZWxlYXNlIiAvbGlicGF0aDoiLi4vLi4vLi4vZ3N0LXBsdWdpbnMtYmFzZS93aW4zMi92czYvcmVsZWFzZSINCi0jIEJlZ2luIFNwZWNpYWwgQnVpbGQgVG9vbA0KLVRhcmdldFBhdGg9LlxSZWxlYXNlXGxpYmdzdG1wZWd2aWRlb3BhcnNlLmRsbA0KLVNPVVJDRT0iJChJbnB1dFBhdGgpIg0KLVBvc3RCdWlsZF9DbWRzPWNvcHkgL1kgJChUYXJnZXRQYXRoKSBjOlxnc3RyZWFtZXJcbGliXGdzdHJlYW1lci0wLjEwDQotIyBFbmQgU3BlY2lhbCBCdWlsZCBUb29sDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdG1wZWd2aWRlb3BhcnNlIC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVRkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMSUJHU1RNUEVHVklERU9QQVJTRV9FWFBPUlRTIiAvWVggL0ZEIC9HWiAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvWkkgL09kIC9JICIuLi8uLi9nc3QtbGlicyIgL0kgIi4uLy4uLy4uL2dzdHJlYW1lciIgL0kgIi4uL2NvbW1vbiIgL0kgIi4uLy4uLy4uL2dzdHJlYW1lci9saWJzIiAvSSAiLi4vLi4vLi4vZ3N0LXBsdWdpbnMtYmFzZS9nc3QtbGlicyIgL0QgIl9ERUJVRyIgL0QgIldJTjMyIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMSUJHU1RNUEVHVklERU9QQVJTRV9FWFBPUlRTIiAvRCAiSEFWRV9DT05GSUdfSCIgL0ZEIC9HWiAvYw0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWA0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwYyAvZCAiX0RFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwYyAvZCAiX0RFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIGxpYmdzdHJpZmYtMC4xMC5saWIgbGliZ3N0cmVhbWVyLTAuMTAubGliIGxpYmdzdGJhc2UtMC4xMC5saWIgZ2xpYi0yLjBELmxpYiBnb2JqZWN0LTIuMEQubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi8uLi8uLi9nc3RyZWFtZXIvd2luMzIvdnM2L2RlYnVnIiAvbGlicGF0aDoiLi9kZWJ1ZyIgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2Uvd2luMzIvdnM2L2RlYnVnIg0KLSMgQmVnaW4gU3BlY2lhbCBCdWlsZCBUb29sDQotVGFyZ2V0UGF0aD0uXERlYnVnXGxpYmdzdG1wZWd2aWRlb3BhcnNlLmRsbA0KLVNPVVJDRT0iJChJbnB1dFBhdGgpIg0KLVBvc3RCdWlsZF9DbWRzPWNvcHkgL1kgJChUYXJnZXRQYXRoKSBjOlxnc3RyZWFtZXJcZGVidWdcbGliXGdzdHJlYW1lci0wLjEwDQotIyBFbmQgU3BlY2lhbCBCdWlsZCBUb29sDQotDQotIUVORElGIA0KLQ0KLSMgQmVnaW4gVGFyZ2V0DQotDQotIyBOYW1lICJsaWJnc3RtcGVndmlkZW9wYXJzZSAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJsaWJnc3RtcGVndmlkZW9wYXJzZSAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxnc3RcbXBlZ3ZpZGVvcGFyc2VcbXBlZ3BhY2tldGlzZXIuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxnc3RcbXBlZ3ZpZGVvcGFyc2VcbXBlZ3ZpZGVvcGFyc2UuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJIZWFkZXIgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJoO2hwcDtoeHg7aG07aW5sIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cZ3N0XG1wZWd2aWRlb3BhcnNlXG1wZWdwYWNrZXRpc2VyLmgNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cZ3N0XG1wZWd2aWRlb3BhcnNlXG1wZWd2aWRlb3BhcnNlLmgNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQotIyBFbmQgR3JvdXANCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvd2luMzIvdnM2L2xpYmdzdG5lb24uZHNwIGIvd2luMzIvdnM2L2xpYmdzdG5lb24uZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzk2MmI5Li4wMDAwMDAwCi0tLSBhL3dpbjMyL3ZzNi9saWJnc3RuZW9uLmRzcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9ImxpYmdzdG5lb24iIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDAxMDINCi0NCi1DRkc9bGliZ3N0bmVvbiAtIFdpbjMyIERlYnVnDQotIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KLSFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJsaWJnc3RuZW9uLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJsaWJnc3RuZW9uLm1hayIgQ0ZHPSJsaWJnc3RuZW9uIC0gV2luMzIgRGVidWciDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgImxpYmdzdG5lb24gLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSAibGliZ3N0bmVvbiAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgIiINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiIg0KLUNQUD1jbC5leGUNCi1NVEw9bWlkbC5leGUNCi1SU0M9cmMuZXhlDQotDQotIUlGICAiJChDRkcpIiA9PSAibGliZ3N0bmVvbiAtIFdpbjMyIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVCAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxJQkdTVE5FT05fRVhQT1JUUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL0dYIC9PMiAvSSAiLi4vLi4vZ3N0LWxpYnMiIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIiIC9JICIuLi9jb21tb24iIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIvbGlicyIgL0kgIi4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LWxpYnMiIC9EICJOREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NUTkVPTl9FWFBPUlRTIiAvRCAiSEFWRV9DT05GSUdfSCIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwYyAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwYyAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIHdzMl8zMi5saWIgbGlibmVvbi5saWIgbGliZ3N0cmVhbWVyLTAuMTAubGliIGxpYmdzdGJhc2UtMC4xMC5saWIgZ2xpYi0yLjAubGliIGdvYmplY3QtMi4wLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4NiAvbGlicGF0aDoiLi4vLi4vLi4vZ3N0cmVhbWVyL3dpbjMyL3ZzNi9yZWxlYXNlIiAvbGlicGF0aDoiLi4vLi4vLi4vZ3N0LXBsdWdpbnMtYmFzZS93aW4zMi92czYvcmVsZWFzZSIgL2xpYnBhdGg6Ii4vcmVsZWFzZSINCi0jIEJlZ2luIFNwZWNpYWwgQnVpbGQgVG9vbA0KLVRhcmdldFBhdGg9LlxSZWxlYXNlXGxpYmdzdG5lb24uZGxsDQotU09VUkNFPSIkKElucHV0UGF0aCkiDQotUG9zdEJ1aWxkX0NtZHM9Y29weSAvWSAkKFRhcmdldFBhdGgpIGM6XGdzdHJlYW1lclxsaWJcZ3N0cmVhbWVyLTAuMTANCi0jIEVuZCBTcGVjaWFsIEJ1aWxkIFRvb2wNCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibGliZ3N0bmVvbiAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NUTkVPTl9FWFBPUlRTIiAvWVggL0ZEIC9HWiAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvSSAiLi4vLi4vZ3N0LWxpYnMiIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIiIC9JICIuLi9jb21tb24iIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIvbGlicyIgL0kgIi4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LWxpYnMiIC9EICJfREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NUTkVPTl9FWFBPUlRTIiAvRCAiSEFWRV9DT05GSUdfSCIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MGMgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MGMgL2QgIl9ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiB3czJfMzIubGliIGxpYm5lb25ELmxpYiBsaWJnc3RyZWFtZXItMC4xMC5saWIgbGliZ3N0YmFzZS0wLjEwLmxpYiBnbGliLTIuMEQubGliIGdvYmplY3QtMi4wRC5saWIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdHJlYW1lci93aW4zMi92czYvZGVidWciIC9saWJwYXRoOiIuLi8uLi8uLi9nc3QtcGx1Z2lucy1iYXNlL3dpbjMyL3ZzNi9kZWJ1ZyIgL2xpYnBhdGg6Ii4vZGVidWciDQotIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wNCi1UYXJnZXRQYXRoPS5cRGVidWdcbGliZ3N0bmVvbi5kbGwNCi1TT1VSQ0U9IiQoSW5wdXRQYXRoKSINCi1Qb3N0QnVpbGRfQ21kcz1jb3B5IC9ZICQoVGFyZ2V0UGF0aCkgYzpcZ3N0cmVhbWVyXGRlYnVnXGxpYlxnc3RyZWFtZXItMC4xMA0KLSMgRW5kIFNwZWNpYWwgQnVpbGQgVG9vbA0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAibGliZ3N0bmVvbiAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJsaWJnc3RuZW9uIC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGV4dFxuZW9uXGdzdG5lb25odHRwc3JjLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaDtocHA7aHh4O2htO2lubCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGV4dFxuZW9uXGdzdG5lb25odHRwc3JjLmgNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQotIyBFbmQgR3JvdXANCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvd2luMzIvdnM4L2dzdC1wbHVnaW5zLWJhZC5zbG4gYi93aW4zMi92czgvZ3N0LXBsdWdpbnMtYmFkLnNsbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA3ZWRmMi4uMDAwMDAwMAotLS0gYS93aW4zMi92czgvZ3N0LXBsdWdpbnMtYmFkLnNsbgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLU1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDkuMDANCi0jIFZpc3VhbCBTdHVkaW8gMjAwNQ0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibGliZ3N0ZGlyZWN0ZHJhdyIsICJsaWJnc3RkaXJlY3RkcmF3LnZjcHJvaiIsICJ7MTU5NEE2MjMtNTUyOS00Qjg2LUJENEEtNjk0Q0YwQkRCNUM0fSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJsaWJnc3RkaXJlY3Rzb3VuZCIsICJsaWJnc3RkaXJlY3Rzb3VuZC52Y3Byb2oiLCAiezY2N0IwNDM3LUY2NjgtNDQzQi1BRkYwLTg5OTFERTc1REJFRH0iDQotRW5kUHJvamVjdA0KLUdsb2JhbA0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KLQkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KLQkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzINCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbg0KLQkJezE1OTRBNjIzLTU1MjktNEI4Ni1CRDRBLTY5NENGMEJEQjVDNH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxNTk0QTYyMy01NTI5LTRCODYtQkQ0QS02OTRDRjBCREI1QzR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezE1OTRBNjIzLTU1MjktNEI4Ni1CRDRBLTY5NENGMEJEQjVDNH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTU5NEE2MjMtNTUyOS00Qjg2LUJENEEtNjk0Q0YwQkRCNUM0fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NjY3QjA0MzctRjY2OC00NDNCLUFGRjAtODk5MURFNzVEQkVEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezY2N0IwNDM3LUY2NjgtNDQzQi1BRkYwLTg5OTFERTc1REJFRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NjY3QjA0MzctRjY2OC00NDNCLUFGRjAtODk5MURFNzVEQkVEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2NjdCMDQzNy1GNjY4LTQ0M0ItQUZGMC04OTkxREU3NURCRUR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KLQkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQotCUVuZEdsb2JhbFNlY3Rpb24NCi1FbmRHbG9iYWwNCg==